commit 4d7084a6ded6427211ef46972e3962b4283fb272 Author: Hoguchi-live Date: Sat Jan 7 12:49:22 2023 +0100 First commit diff --git a/.cache/clangd/index/affine-mat.h.801E3D35CA46BBBF.idx b/.cache/clangd/index/affine-mat.h.801E3D35CA46BBBF.idx new file mode 100644 index 0000000..f7807e5 Binary files /dev/null and b/.cache/clangd/index/affine-mat.h.801E3D35CA46BBBF.idx differ diff --git a/.cache/clangd/index/affine-post.h.08888BC2A67FF356.idx b/.cache/clangd/index/affine-post.h.08888BC2A67FF356.idx new file mode 100644 index 0000000..0583524 Binary files /dev/null and b/.cache/clangd/index/affine-post.h.08888BC2A67FF356.idx differ diff --git a/.cache/clangd/index/affine-post.h.F251B0C3CD95F7FC.idx b/.cache/clangd/index/affine-post.h.F251B0C3CD95F7FC.idx new file mode 100644 index 0000000..4a6bff1 Binary files /dev/null and b/.cache/clangd/index/affine-post.h.F251B0C3CD95F7FC.idx differ diff --git a/.cache/clangd/index/affine-pre.h.96B1C872618C1E0E.idx b/.cache/clangd/index/affine-pre.h.96B1C872618C1E0E.idx new file mode 100644 index 0000000..29489b8 Binary files /dev/null and b/.cache/clangd/index/affine-pre.h.96B1C872618C1E0E.idx differ diff --git a/.cache/clangd/index/affine-pre.h.D2A7FE13BD494B75.idx b/.cache/clangd/index/affine-pre.h.D2A7FE13BD494B75.idx new file mode 100644 index 0000000..11f5269 Binary files /dev/null and b/.cache/clangd/index/affine-pre.h.D2A7FE13BD494B75.idx differ diff --git a/.cache/clangd/index/affine.h.232C8C4D0B89D82E.idx b/.cache/clangd/index/affine.h.232C8C4D0B89D82E.idx new file mode 100644 index 0000000..f9f49b2 Binary files /dev/null and b/.cache/clangd/index/affine.h.232C8C4D0B89D82E.idx differ diff --git a/.cache/clangd/index/affine.h.C5981434FA2D6146.idx b/.cache/clangd/index/affine.h.C5981434FA2D6146.idx new file mode 100644 index 0000000..77d3dbf Binary files /dev/null and b/.cache/clangd/index/affine.h.C5981434FA2D6146.idx differ diff --git a/.cache/clangd/index/affine.h.E6E6D6EC6CEA28D6.idx b/.cache/clangd/index/affine.h.E6E6D6EC6CEA28D6.idx new file mode 100644 index 0000000..84a6377 Binary files /dev/null and b/.cache/clangd/index/affine.h.E6E6D6EC6CEA28D6.idx differ diff --git a/.cache/clangd/index/affine2d.h.198CA3EE22F49A97.idx b/.cache/clangd/index/affine2d.h.198CA3EE22F49A97.idx new file mode 100644 index 0000000..2766875 Binary files /dev/null and b/.cache/clangd/index/affine2d.h.198CA3EE22F49A97.idx differ diff --git a/.cache/clangd/index/affine2d.h.E4B637995F20EBAB.idx b/.cache/clangd/index/affine2d.h.E4B637995F20EBAB.idx new file mode 100644 index 0000000..566f29d Binary files /dev/null and b/.cache/clangd/index/affine2d.h.E4B637995F20EBAB.idx differ diff --git a/.cache/clangd/index/bezier.h.77D9586CE31EE074.idx b/.cache/clangd/index/bezier.h.77D9586CE31EE074.idx new file mode 100644 index 0000000..e108d67 Binary files /dev/null and b/.cache/clangd/index/bezier.h.77D9586CE31EE074.idx differ diff --git a/.cache/clangd/index/bitmap.h.AD4FEEC482722464.idx b/.cache/clangd/index/bitmap.h.AD4FEEC482722464.idx new file mode 100644 index 0000000..b61cd95 Binary files /dev/null and b/.cache/clangd/index/bitmap.h.AD4FEEC482722464.idx differ diff --git a/.cache/clangd/index/box.h.116F022CEFEA1A85.idx b/.cache/clangd/index/box.h.116F022CEFEA1A85.idx new file mode 100644 index 0000000..c2ff98a Binary files /dev/null and b/.cache/clangd/index/box.h.116F022CEFEA1A85.idx differ diff --git a/.cache/clangd/index/box.h.3C205620278D6594.idx b/.cache/clangd/index/box.h.3C205620278D6594.idx new file mode 100644 index 0000000..9cfdd45 Binary files /dev/null and b/.cache/clangd/index/box.h.3C205620278D6594.idx differ diff --git a/.cache/clangd/index/cam.h.200991FEE772B7B2.idx b/.cache/clangd/index/cam.h.200991FEE772B7B2.idx new file mode 100644 index 0000000..15f9eeb Binary files /dev/null and b/.cache/clangd/index/cam.h.200991FEE772B7B2.idx differ diff --git a/.cache/clangd/index/cam.h.6EC8ACBD088D3D6D.idx b/.cache/clangd/index/cam.h.6EC8ACBD088D3D6D.idx new file mode 100644 index 0000000..feb15b7 Binary files /dev/null and b/.cache/clangd/index/cam.h.6EC8ACBD088D3D6D.idx differ diff --git a/.cache/clangd/index/cglm.h.9016EBB36FED6D66.idx b/.cache/clangd/index/cglm.h.9016EBB36FED6D66.idx new file mode 100644 index 0000000..d614699 Binary files /dev/null and b/.cache/clangd/index/cglm.h.9016EBB36FED6D66.idx differ diff --git a/.cache/clangd/index/color.h.F2F52BE05879E44F.idx b/.cache/clangd/index/color.h.F2F52BE05879E44F.idx new file mode 100644 index 0000000..b32ec2b Binary files /dev/null and b/.cache/clangd/index/color.h.F2F52BE05879E44F.idx differ diff --git a/.cache/clangd/index/color.h.FE35235D7039D8C9.idx b/.cache/clangd/index/color.h.FE35235D7039D8C9.idx new file mode 100644 index 0000000..9e65e55 Binary files /dev/null and b/.cache/clangd/index/color.h.FE35235D7039D8C9.idx differ diff --git a/.cache/clangd/index/common.h.60AD3D2A306D8A51.idx b/.cache/clangd/index/common.h.60AD3D2A306D8A51.idx new file mode 100644 index 0000000..e06441f Binary files /dev/null and b/.cache/clangd/index/common.h.60AD3D2A306D8A51.idx differ diff --git a/.cache/clangd/index/curve.h.AAF8B5C752035DDC.idx b/.cache/clangd/index/curve.h.AAF8B5C752035DDC.idx new file mode 100644 index 0000000..a65794f Binary files /dev/null and b/.cache/clangd/index/curve.h.AAF8B5C752035DDC.idx differ diff --git a/.cache/clangd/index/curve.h.EF5E40098283BEF9.idx b/.cache/clangd/index/curve.h.EF5E40098283BEF9.idx new file mode 100644 index 0000000..1717070 Binary files /dev/null and b/.cache/clangd/index/curve.h.EF5E40098283BEF9.idx differ diff --git a/.cache/clangd/index/ease.h.F667846574C20DDA.idx b/.cache/clangd/index/ease.h.F667846574C20DDA.idx new file mode 100644 index 0000000..c432052 Binary files /dev/null and b/.cache/clangd/index/ease.h.F667846574C20DDA.idx differ diff --git a/.cache/clangd/index/euler.h.D9CCF43A68DB32ED.idx b/.cache/clangd/index/euler.h.D9CCF43A68DB32ED.idx new file mode 100644 index 0000000..6573d6b Binary files /dev/null and b/.cache/clangd/index/euler.h.D9CCF43A68DB32ED.idx differ diff --git a/.cache/clangd/index/euler.h.F05C4A505221B361.idx b/.cache/clangd/index/euler.h.F05C4A505221B361.idx new file mode 100644 index 0000000..fb6556e Binary files /dev/null and b/.cache/clangd/index/euler.h.F05C4A505221B361.idx differ diff --git a/.cache/clangd/index/fmath.h.973CC0D6222296DF.idx b/.cache/clangd/index/fmath.h.973CC0D6222296DF.idx new file mode 100644 index 0000000..01abeac Binary files /dev/null and b/.cache/clangd/index/fmath.h.973CC0D6222296DF.idx differ diff --git a/.cache/clangd/index/frustum.h.1E82E39EE4180E26.idx b/.cache/clangd/index/frustum.h.1E82E39EE4180E26.idx new file mode 100644 index 0000000..d916cac Binary files /dev/null and b/.cache/clangd/index/frustum.h.1E82E39EE4180E26.idx differ diff --git a/.cache/clangd/index/frustum.h.6D82D1CE62AF8FF9.idx b/.cache/clangd/index/frustum.h.6D82D1CE62AF8FF9.idx new file mode 100644 index 0000000..27fae73 Binary files /dev/null and b/.cache/clangd/index/frustum.h.6D82D1CE62AF8FF9.idx differ diff --git a/.cache/clangd/index/gfx.h.DFE065BB35C54DB0.idx b/.cache/clangd/index/gfx.h.DFE065BB35C54DB0.idx new file mode 100644 index 0000000..42c147c Binary files /dev/null and b/.cache/clangd/index/gfx.h.DFE065BB35C54DB0.idx differ diff --git a/.cache/clangd/index/glad.h.CFB97092C7C292B2.idx b/.cache/clangd/index/glad.h.CFB97092C7C292B2.idx new file mode 100644 index 0000000..13653c7 Binary files /dev/null and b/.cache/clangd/index/glad.h.CFB97092C7C292B2.idx differ diff --git a/.cache/clangd/index/glfw3.h.E6FEB5EB08F97FF4.idx b/.cache/clangd/index/glfw3.h.E6FEB5EB08F97FF4.idx new file mode 100644 index 0000000..8596258 Binary files /dev/null and b/.cache/clangd/index/glfw3.h.E6FEB5EB08F97FF4.idx differ diff --git a/.cache/clangd/index/intrin.h.B071B3FF5462BDE1.idx b/.cache/clangd/index/intrin.h.B071B3FF5462BDE1.idx new file mode 100644 index 0000000..bc10f0b Binary files /dev/null and b/.cache/clangd/index/intrin.h.B071B3FF5462BDE1.idx differ diff --git a/.cache/clangd/index/io.h.48B25F60F100B5B6.idx b/.cache/clangd/index/io.h.48B25F60F100B5B6.idx new file mode 100644 index 0000000..f07747f Binary files /dev/null and b/.cache/clangd/index/io.h.48B25F60F100B5B6.idx differ diff --git a/.cache/clangd/index/io.h.647E8F0D564DCAAF.idx b/.cache/clangd/index/io.h.647E8F0D564DCAAF.idx new file mode 100644 index 0000000..8a618ad Binary files /dev/null and b/.cache/clangd/index/io.h.647E8F0D564DCAAF.idx differ diff --git a/.cache/clangd/index/ivec2.h.BB0419D5A2CFEE1B.idx b/.cache/clangd/index/ivec2.h.BB0419D5A2CFEE1B.idx new file mode 100644 index 0000000..f203ef7 Binary files /dev/null and b/.cache/clangd/index/ivec2.h.BB0419D5A2CFEE1B.idx differ diff --git a/.cache/clangd/index/ivec2.h.C7B06C7AE355CF57.idx b/.cache/clangd/index/ivec2.h.C7B06C7AE355CF57.idx new file mode 100644 index 0000000..2ca486a Binary files /dev/null and b/.cache/clangd/index/ivec2.h.C7B06C7AE355CF57.idx differ diff --git a/.cache/clangd/index/ivec3.h.1EEF3EEA60C12386.idx b/.cache/clangd/index/ivec3.h.1EEF3EEA60C12386.idx new file mode 100644 index 0000000..54e8e7b Binary files /dev/null and b/.cache/clangd/index/ivec3.h.1EEF3EEA60C12386.idx differ diff --git a/.cache/clangd/index/ivec4.h.8B62D46829F719A1.idx b/.cache/clangd/index/ivec4.h.8B62D46829F719A1.idx new file mode 100644 index 0000000..65ed36b Binary files /dev/null and b/.cache/clangd/index/ivec4.h.8B62D46829F719A1.idx differ diff --git a/.cache/clangd/index/khrplatform.h.7FB474C9EB85D3C1.idx b/.cache/clangd/index/khrplatform.h.7FB474C9EB85D3C1.idx new file mode 100644 index 0000000..b0f7bf3 Binary files /dev/null and b/.cache/clangd/index/khrplatform.h.7FB474C9EB85D3C1.idx differ diff --git a/.cache/clangd/index/main.c.4CB5CE34A69A03F5.idx b/.cache/clangd/index/main.c.4CB5CE34A69A03F5.idx new file mode 100644 index 0000000..dd35fda Binary files /dev/null and b/.cache/clangd/index/main.c.4CB5CE34A69A03F5.idx differ diff --git a/.cache/clangd/index/main.h.5E55335D654F222C.idx b/.cache/clangd/index/main.h.5E55335D654F222C.idx new file mode 100644 index 0000000..7bc6843 Binary files /dev/null and b/.cache/clangd/index/main.h.5E55335D654F222C.idx differ diff --git a/.cache/clangd/index/mat2.h.5F322A864550270B.idx b/.cache/clangd/index/mat2.h.5F322A864550270B.idx new file mode 100644 index 0000000..984bc21 Binary files /dev/null and b/.cache/clangd/index/mat2.h.5F322A864550270B.idx differ diff --git a/.cache/clangd/index/mat2.h.C34024B62509D2AA.idx b/.cache/clangd/index/mat2.h.C34024B62509D2AA.idx new file mode 100644 index 0000000..01fefc5 Binary files /dev/null and b/.cache/clangd/index/mat2.h.C34024B62509D2AA.idx differ diff --git a/.cache/clangd/index/mat2.h.E9DAF5C7B045103D.idx b/.cache/clangd/index/mat2.h.E9DAF5C7B045103D.idx new file mode 100644 index 0000000..42385a8 Binary files /dev/null and b/.cache/clangd/index/mat2.h.E9DAF5C7B045103D.idx differ diff --git a/.cache/clangd/index/mat3.h.3356226B7ECC7153.idx b/.cache/clangd/index/mat3.h.3356226B7ECC7153.idx new file mode 100644 index 0000000..597179c Binary files /dev/null and b/.cache/clangd/index/mat3.h.3356226B7ECC7153.idx differ diff --git a/.cache/clangd/index/mat3.h.B7529B4A51AACD00.idx b/.cache/clangd/index/mat3.h.B7529B4A51AACD00.idx new file mode 100644 index 0000000..b931723 Binary files /dev/null and b/.cache/clangd/index/mat3.h.B7529B4A51AACD00.idx differ diff --git a/.cache/clangd/index/mat3.h.E33C1AF92792A524.idx b/.cache/clangd/index/mat3.h.E33C1AF92792A524.idx new file mode 100644 index 0000000..741aaf0 Binary files /dev/null and b/.cache/clangd/index/mat3.h.E33C1AF92792A524.idx differ diff --git a/.cache/clangd/index/mat4.h.225EA351D88F499E.idx b/.cache/clangd/index/mat4.h.225EA351D88F499E.idx new file mode 100644 index 0000000..e2e8de0 Binary files /dev/null and b/.cache/clangd/index/mat4.h.225EA351D88F499E.idx differ diff --git a/.cache/clangd/index/mat4.h.53882B0BA86EBB0A.idx b/.cache/clangd/index/mat4.h.53882B0BA86EBB0A.idx new file mode 100644 index 0000000..3f80272 Binary files /dev/null and b/.cache/clangd/index/mat4.h.53882B0BA86EBB0A.idx differ diff --git a/.cache/clangd/index/mat4.h.B4FEFDBD9483F03D.idx b/.cache/clangd/index/mat4.h.B4FEFDBD9483F03D.idx new file mode 100644 index 0000000..35df1ef Binary files /dev/null and b/.cache/clangd/index/mat4.h.B4FEFDBD9483F03D.idx differ diff --git a/.cache/clangd/index/ortho_rh_no.h.20506918FE9786DA.idx b/.cache/clangd/index/ortho_rh_no.h.20506918FE9786DA.idx new file mode 100644 index 0000000..d053b9b Binary files /dev/null and b/.cache/clangd/index/ortho_rh_no.h.20506918FE9786DA.idx differ diff --git a/.cache/clangd/index/ortho_rh_no.h.21904B02ED686188.idx b/.cache/clangd/index/ortho_rh_no.h.21904B02ED686188.idx new file mode 100644 index 0000000..26c9497 Binary files /dev/null and b/.cache/clangd/index/ortho_rh_no.h.21904B02ED686188.idx differ diff --git a/.cache/clangd/index/persp.h.DB598CA9569AC22D.idx b/.cache/clangd/index/persp.h.DB598CA9569AC22D.idx new file mode 100644 index 0000000..acb4849 Binary files /dev/null and b/.cache/clangd/index/persp.h.DB598CA9569AC22D.idx differ diff --git a/.cache/clangd/index/persp_rh_no.h.454FCC46FF1802E5.idx b/.cache/clangd/index/persp_rh_no.h.454FCC46FF1802E5.idx new file mode 100644 index 0000000..a749239 Binary files /dev/null and b/.cache/clangd/index/persp_rh_no.h.454FCC46FF1802E5.idx differ diff --git a/.cache/clangd/index/persp_rh_no.h.DFEC91520841B79F.idx b/.cache/clangd/index/persp_rh_no.h.DFEC91520841B79F.idx new file mode 100644 index 0000000..426bc2b Binary files /dev/null and b/.cache/clangd/index/persp_rh_no.h.DFEC91520841B79F.idx differ diff --git a/.cache/clangd/index/plane.h.937321CC56E5EE4C.idx b/.cache/clangd/index/plane.h.937321CC56E5EE4C.idx new file mode 100644 index 0000000..8b7899b Binary files /dev/null and b/.cache/clangd/index/plane.h.937321CC56E5EE4C.idx differ diff --git a/.cache/clangd/index/plane.h.F2CAC1143D9FE1BD.idx b/.cache/clangd/index/plane.h.F2CAC1143D9FE1BD.idx new file mode 100644 index 0000000..785e3be Binary files /dev/null and b/.cache/clangd/index/plane.h.F2CAC1143D9FE1BD.idx differ diff --git a/.cache/clangd/index/project.h.3A3A98769B7427C4.idx b/.cache/clangd/index/project.h.3A3A98769B7427C4.idx new file mode 100644 index 0000000..5083964 Binary files /dev/null and b/.cache/clangd/index/project.h.3A3A98769B7427C4.idx differ diff --git a/.cache/clangd/index/project.h.EEC1A7C360465DBC.idx b/.cache/clangd/index/project.h.EEC1A7C360465DBC.idx new file mode 100644 index 0000000..883c88c Binary files /dev/null and b/.cache/clangd/index/project.h.EEC1A7C360465DBC.idx differ diff --git a/.cache/clangd/index/project_no.h.B137C8DF16B555D0.idx b/.cache/clangd/index/project_no.h.B137C8DF16B555D0.idx new file mode 100644 index 0000000..929856a Binary files /dev/null and b/.cache/clangd/index/project_no.h.B137C8DF16B555D0.idx differ diff --git a/.cache/clangd/index/quat.h.7FAEB278BFD11160.idx b/.cache/clangd/index/quat.h.7FAEB278BFD11160.idx new file mode 100644 index 0000000..4cd19e4 Binary files /dev/null and b/.cache/clangd/index/quat.h.7FAEB278BFD11160.idx differ diff --git a/.cache/clangd/index/quat.h.CC621C34BAB2C897.idx b/.cache/clangd/index/quat.h.CC621C34BAB2C897.idx new file mode 100644 index 0000000..4ad736e Binary files /dev/null and b/.cache/clangd/index/quat.h.CC621C34BAB2C897.idx differ diff --git a/.cache/clangd/index/quat.h.D92829502E501BD6.idx b/.cache/clangd/index/quat.h.D92829502E501BD6.idx new file mode 100644 index 0000000..5030c90 Binary files /dev/null and b/.cache/clangd/index/quat.h.D92829502E501BD6.idx differ diff --git a/.cache/clangd/index/ray.h.9D699231F4F9CD25.idx b/.cache/clangd/index/ray.h.9D699231F4F9CD25.idx new file mode 100644 index 0000000..1f5bec5 Binary files /dev/null and b/.cache/clangd/index/ray.h.9D699231F4F9CD25.idx differ diff --git a/.cache/clangd/index/shader.h.AD1F8F68CCAA2480.idx b/.cache/clangd/index/shader.h.AD1F8F68CCAA2480.idx new file mode 100644 index 0000000..2f2f5e0 Binary files /dev/null and b/.cache/clangd/index/shader.h.AD1F8F68CCAA2480.idx differ diff --git a/.cache/clangd/index/sphere.h.149FCD031BB1F006.idx b/.cache/clangd/index/sphere.h.149FCD031BB1F006.idx new file mode 100644 index 0000000..ef8d52b Binary files /dev/null and b/.cache/clangd/index/sphere.h.149FCD031BB1F006.idx differ diff --git a/.cache/clangd/index/sphere.h.A01D9762F64642B6.idx b/.cache/clangd/index/sphere.h.A01D9762F64642B6.idx new file mode 100644 index 0000000..365ebcc Binary files /dev/null and b/.cache/clangd/index/sphere.h.A01D9762F64642B6.idx differ diff --git a/.cache/clangd/index/struct.h.753EF1A6E5F9E9FB.idx b/.cache/clangd/index/struct.h.753EF1A6E5F9E9FB.idx new file mode 100644 index 0000000..86915f7 Binary files /dev/null and b/.cache/clangd/index/struct.h.753EF1A6E5F9E9FB.idx differ diff --git a/.cache/clangd/index/texture.h.9BC82A360885A118.idx b/.cache/clangd/index/texture.h.9BC82A360885A118.idx new file mode 100644 index 0000000..83b5613 Binary files /dev/null and b/.cache/clangd/index/texture.h.9BC82A360885A118.idx differ diff --git a/.cache/clangd/index/time.h.D3782EDF7DA4ED35.idx b/.cache/clangd/index/time.h.D3782EDF7DA4ED35.idx new file mode 100644 index 0000000..8eb65ee Binary files /dev/null and b/.cache/clangd/index/time.h.D3782EDF7DA4ED35.idx differ diff --git a/.cache/clangd/index/types-struct.h.73CA098B24D60257.idx b/.cache/clangd/index/types-struct.h.73CA098B24D60257.idx new file mode 100644 index 0000000..1bbee81 Binary files /dev/null and b/.cache/clangd/index/types-struct.h.73CA098B24D60257.idx differ diff --git a/.cache/clangd/index/types.h.EC5A3D85181FBA3A.idx b/.cache/clangd/index/types.h.EC5A3D85181FBA3A.idx new file mode 100644 index 0000000..66aa208 Binary files /dev/null and b/.cache/clangd/index/types.h.EC5A3D85181FBA3A.idx differ diff --git a/.cache/clangd/index/types.h.FB67F70379A1E8B5.idx b/.cache/clangd/index/types.h.FB67F70379A1E8B5.idx new file mode 100644 index 0000000..b25dd6c Binary files /dev/null and b/.cache/clangd/index/types.h.FB67F70379A1E8B5.idx differ diff --git a/.cache/clangd/index/util.h.A8A30F472ED6E14E.idx b/.cache/clangd/index/util.h.A8A30F472ED6E14E.idx new file mode 100644 index 0000000..4779631 Binary files /dev/null and b/.cache/clangd/index/util.h.A8A30F472ED6E14E.idx differ diff --git a/.cache/clangd/index/util.h.F782C1C23E1D198B.idx b/.cache/clangd/index/util.h.F782C1C23E1D198B.idx new file mode 100644 index 0000000..2dfcd0d Binary files /dev/null and b/.cache/clangd/index/util.h.F782C1C23E1D198B.idx differ diff --git a/.cache/clangd/index/vao.h.AB33A8EE0B061B29.idx b/.cache/clangd/index/vao.h.AB33A8EE0B061B29.idx new file mode 100644 index 0000000..542d42f Binary files /dev/null and b/.cache/clangd/index/vao.h.AB33A8EE0B061B29.idx differ diff --git a/.cache/clangd/index/vbo.h.F623E912505BB73A.idx b/.cache/clangd/index/vbo.h.F623E912505BB73A.idx new file mode 100644 index 0000000..ecb6a3f Binary files /dev/null and b/.cache/clangd/index/vbo.h.F623E912505BB73A.idx differ diff --git a/.cache/clangd/index/vec2-ext.h.1C9F137F4F5091AF.idx b/.cache/clangd/index/vec2-ext.h.1C9F137F4F5091AF.idx new file mode 100644 index 0000000..901f8f7 Binary files /dev/null and b/.cache/clangd/index/vec2-ext.h.1C9F137F4F5091AF.idx differ diff --git a/.cache/clangd/index/vec2-ext.h.AAF681163EAB9594.idx b/.cache/clangd/index/vec2-ext.h.AAF681163EAB9594.idx new file mode 100644 index 0000000..0cb1069 Binary files /dev/null and b/.cache/clangd/index/vec2-ext.h.AAF681163EAB9594.idx differ diff --git a/.cache/clangd/index/vec2.h.004BBD2F34E63ED2.idx b/.cache/clangd/index/vec2.h.004BBD2F34E63ED2.idx new file mode 100644 index 0000000..70da3f6 Binary files /dev/null and b/.cache/clangd/index/vec2.h.004BBD2F34E63ED2.idx differ diff --git a/.cache/clangd/index/vec2.h.50C40861EBC745E8.idx b/.cache/clangd/index/vec2.h.50C40861EBC745E8.idx new file mode 100644 index 0000000..bf37449 Binary files /dev/null and b/.cache/clangd/index/vec2.h.50C40861EBC745E8.idx differ diff --git a/.cache/clangd/index/vec3-ext.h.3FECCB0CC4E4E4BC.idx b/.cache/clangd/index/vec3-ext.h.3FECCB0CC4E4E4BC.idx new file mode 100644 index 0000000..41e53bc Binary files /dev/null and b/.cache/clangd/index/vec3-ext.h.3FECCB0CC4E4E4BC.idx differ diff --git a/.cache/clangd/index/vec3-ext.h.5729D08CE1F51D49.idx b/.cache/clangd/index/vec3-ext.h.5729D08CE1F51D49.idx new file mode 100644 index 0000000..af8f2a7 Binary files /dev/null and b/.cache/clangd/index/vec3-ext.h.5729D08CE1F51D49.idx differ diff --git a/.cache/clangd/index/vec3.h.32D4D3E01C8C4ED6.idx b/.cache/clangd/index/vec3.h.32D4D3E01C8C4ED6.idx new file mode 100644 index 0000000..cb29883 Binary files /dev/null and b/.cache/clangd/index/vec3.h.32D4D3E01C8C4ED6.idx differ diff --git a/.cache/clangd/index/vec3.h.A75EBB512284C81D.idx b/.cache/clangd/index/vec3.h.A75EBB512284C81D.idx new file mode 100644 index 0000000..2f83e1c Binary files /dev/null and b/.cache/clangd/index/vec3.h.A75EBB512284C81D.idx differ diff --git a/.cache/clangd/index/vec4-ext.h.28C22448E7C4B3BA.idx b/.cache/clangd/index/vec4-ext.h.28C22448E7C4B3BA.idx new file mode 100644 index 0000000..c0859c7 Binary files /dev/null and b/.cache/clangd/index/vec4-ext.h.28C22448E7C4B3BA.idx differ diff --git a/.cache/clangd/index/vec4-ext.h.F25F29AE7EF2FF8F.idx b/.cache/clangd/index/vec4-ext.h.F25F29AE7EF2FF8F.idx new file mode 100644 index 0000000..caf286d Binary files /dev/null and b/.cache/clangd/index/vec4-ext.h.F25F29AE7EF2FF8F.idx differ diff --git a/.cache/clangd/index/vec4.h.01D8F30509948C0D.idx b/.cache/clangd/index/vec4.h.01D8F30509948C0D.idx new file mode 100644 index 0000000..04c77d0 Binary files /dev/null and b/.cache/clangd/index/vec4.h.01D8F30509948C0D.idx differ diff --git a/.cache/clangd/index/vec4.h.7D3E0BC7E78819AB.idx b/.cache/clangd/index/vec4.h.7D3E0BC7E78819AB.idx new file mode 100644 index 0000000..198051c Binary files /dev/null and b/.cache/clangd/index/vec4.h.7D3E0BC7E78819AB.idx differ diff --git a/.cache/clangd/index/view_rh.h.C77EEB532C8EE184.idx b/.cache/clangd/index/view_rh.h.C77EEB532C8EE184.idx new file mode 100644 index 0000000..7362818 Binary files /dev/null and b/.cache/clangd/index/view_rh.h.C77EEB532C8EE184.idx differ diff --git a/.cache/clangd/index/view_rh_no.h.CF04BCC85176AADD.idx b/.cache/clangd/index/view_rh_no.h.CF04BCC85176AADD.idx new file mode 100644 index 0000000..fecdd0a Binary files /dev/null and b/.cache/clangd/index/view_rh_no.h.CF04BCC85176AADD.idx differ diff --git a/.cache/clangd/index/view_rh_no.h.E41827615ED6D265.idx b/.cache/clangd/index/view_rh_no.h.E41827615ED6D265.idx new file mode 100644 index 0000000..c9114b6 Binary files /dev/null and b/.cache/clangd/index/view_rh_no.h.E41827615ED6D265.idx differ diff --git a/.cache/clangd/index/x86.h.ED05D3B94AE4F41F.idx b/.cache/clangd/index/x86.h.ED05D3B94AE4F41F.idx new file mode 100644 index 0000000..966e2d5 Binary files /dev/null and b/.cache/clangd/index/x86.h.ED05D3B94AE4F41F.idx differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5f8f79c --- /dev/null +++ b/.gitignore @@ -0,0 +1,57 @@ +# Other +build/* +assets/* +bin/* + +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9ab9c6b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 v0idv0id - Martin Willner - lvslinux@gmail.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..886235d --- /dev/null +++ b/Makefile @@ -0,0 +1,82 @@ +#Compiler and Linker +CC := clang + +#The Target Binary Program +TARGET := wotos + +#The Directories, Source, Includes, Objects, Binary and Resources +SRCDIR := src +INCDIR := lib +BUILDDIR := build +TARGETDIR := bin +RESDIR := res +SRCEXT := c +DEPEXT := d +OBJEXT := o + +#Flags, Libraries and Includes +CFLAGS := -Wall -pedantic +CFLAGS += -Ilib/cglm/include -Ilib/glad/include -Ilib/glfw/include -Ilib/stb +CFLAGS += -Iinclude/ -I/usr/include/freetype2 -I/usr/include/stb +LDFLAGS := -lglfw -ldl -lmpv -lfreetype -lm +INC := -I$(INCDIR) -I/usr/local/include +INCDEP := -I$(INCDIR) + +#--------------------------------------------------------------------------------- +#DO NOT EDIT BELOW THIS LINE +#--------------------------------------------------------------------------------- +SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) +OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT))) + +#Defauilt Make +all: resources $(TARGET) + +#Custom install +libs: + cd lib/cglm && cmake . -DCGLM_STATIC=ON && make + cd lib/glad && $(CC) -o src/glad.o -Iinclude -c src/glad.c + cd lib/glfw && cmake . && make + +#Remake +remake: cleaner all + +#Copy Resources from Resources Directory to Target Directory +resources: directories + @cp -r $(RESDIR)/* $(TARGETDIR)/ + +#Make the Directories +directories: + @mkdir -p $(TARGETDIR) + @mkdir -p $(BUILDDIR) + +#Clean only Objecst +clean: + @$(RM) -rf $(BUILDDIR) + +#Full Clean, Objects and Binaries +cleaner: clean + @$(RM) -rf $(TARGETDIR) + +#Pull in dependency info for *existing* .o files +-include $(OBJECTS:.$(OBJEXT)=.$(DEPEXT)) + +#Link +$(TARGET): $(OBJECTS) + $(CC) -o $(TARGETDIR)/$(TARGET) $^ $(LDFLAGS) + +#Compile +$(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SRCEXT) + @mkdir -p $(dir $@) + $(CC) $(CFLAGS) $(INC) -c -o $@ $< + @$(CC) $(CFLAGS) $(INCDEP) -MM $(SRCDIR)/$*.$(SRCEXT) > $(BUILDDIR)/$*.$(DEPEXT) + @cp -f $(BUILDDIR)/$*.$(DEPEXT) $(BUILDDIR)/$*.$(DEPEXT).tmp + @sed -e 's|.*:|$(BUILDDIR)/$*.$(OBJEXT):|' < $(BUILDDIR)/$*.$(DEPEXT).tmp > $(BUILDDIR)/$*.$(DEPEXT) + @sed -e 's/.*://' -e 's/\\$$//' < $(BUILDDIR)/$*.$(DEPEXT).tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $(BUILDDIR)/$*.$(DEPEXT) + @rm -f $(BUILDDIR)/$*.$(DEPEXT).tmp + +#Run +run: all + @$(TARGETDIR)/$(TARGET) $(ARGS) + +#Non-File Targets +.PHONY: all remake clean cleaner resources diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/compile_commands.json b/compile_commands.json new file mode 100644 index 0000000..8fd5947 --- /dev/null +++ b/compile_commands.json @@ -0,0 +1,25 @@ +[ + { + "arguments": [ + "/usr/bin/clang", + "-Wall", + "-pedantic", + "-Ilib/cglm/include", + "-Ilib/glad/include", + "-Ilib/glfw/include", + "-Ilib/stb", + "-Iinclude/", + "-I/usr/include/freetype2", + "-I/usr/include/stb", + "-Ilib", + "-I/usr/local/include", + "-c", + "-o", + "build/main.o", + "src/main.c" + ], + "directory": "/home/steaky/git/wotos-mpv", + "file": "/home/steaky/git/wotos-mpv/src/main.c", + "output": "/home/steaky/git/wotos-mpv/build/main.o" + } +] diff --git a/lib/cglm/.gitattributes b/lib/cglm/.gitattributes new file mode 100644 index 0000000..15a5c58 --- /dev/null +++ b/lib/cglm/.gitattributes @@ -0,0 +1 @@ +*.h linguist-language=C diff --git a/lib/cglm/.github/FUNDING.yml b/lib/cglm/.github/FUNDING.yml new file mode 100644 index 0000000..2138628 --- /dev/null +++ b/lib/cglm/.github/FUNDING.yml @@ -0,0 +1,8 @@ +# These are supported funding model platforms + +github: [recp] +patreon: recp +open_collective: cglm +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +custom: # Replace with a single custom sponsorship URL diff --git a/lib/cglm/.gitignore b/lib/cglm/.gitignore new file mode 100644 index 0000000..8063137 --- /dev/null +++ b/lib/cglm/.gitignore @@ -0,0 +1,82 @@ +*.xcodeproj +*.xcworkspace +*.sln +*.vcxproj +*.vcxproj.* +*.suo +*.sdf +*.opensdf +ipch/ +Debug/ +Release/ +.DS_Store +.vs +*.nupkg +*.opendb +packages.config +/aclocal.m4 +/ar-lib +/autom4te.cache/ +/compile +/config.guess +/config.log +/config.status +/config.sub +/configure +/depcomp +/install-sh +/ltmain.sh +/missing +/libtool +/.libs/ +.deps/ +*.[oa] +*.l[oa] +Makefile +Makefile.in +m4/*.m4 +.buildstamp +.dirstamp +packages/ +.anjuta/* +*.anjuta* +config.h.* +/config.h +stamp* +COPYING +.idea/* +*.VC.db +cscope.* +*-git-ignored-file.* +test/*.trs +test/test_* +*.log +test/.libs/* +test/tests +cglm_arm/* +cglm_test_ios/* +cglm_test_iosTests/* +docs/build/* +win/cglm_test_* +* copy.* +*.o +*.obj +*codeanalysis.*.xml +*codeanalysis.xml +*.lib +*.tlog +win/x64 +win/x85 +win/Debug +cglm-test-ios* +/cglm.pc +test-driver +Default-568h@2x.png +build/ +conftest.dir/* +confdefs.h +*.xcuserdatad +.idea +cmake-build-debug +*.o.tmp +xcode/* diff --git a/lib/cglm/.gitmodules b/lib/cglm/.gitmodules new file mode 100644 index 0000000..e69de29 diff --git a/lib/cglm/.travis.yml b/lib/cglm/.travis.yml new file mode 100644 index 0000000..7d3d6e0 --- /dev/null +++ b/lib/cglm/.travis.yml @@ -0,0 +1,68 @@ +language: c + +os: + - linux + - osx + +arch: + - amd64 + - ppc64le + - s390x + - arm64 + +sudo: required +dist: trusty + +compiler: + - clang + - gcc + +matrix: + fast_finish: true + exclude: + # Skip GCC builds on macOS. + - os: osx + compiler: gcc + include: + # Additional GCC builds for code coverage. + - os: linux + compiler: gcc + env: CODE_COVERAGE=ON + +cache: + apt: true + +addons: + apt: + packages: + - clang-3.6 + - lcov + +branches: + only: + - master + +script: + - sh ./autogen.sh + - if [[ "$CC" == "gcc" && "$CODE_COVERAGE" == "ON" ]]; then + ./configure CFLAGS="-ftest-coverage -fprofile-arcs -coverage"; + else + ./configure; + fi + - make + - make check + +after_success: + - if [[ "$CC" == "gcc" && "$CODE_COVERAGE" == "ON" ]]; then + pip install --user cpp-coveralls && + coveralls + --build-root . + --exclude lib + --exclude test + --gcov-options '\-lp' + --verbose && + bash <(curl -s https://codecov.io/bash); + fi + +# after_failure: +# - cat ./test-suite.log diff --git a/lib/cglm/.vscode/settings.json b/lib/cglm/.vscode/settings.json new file mode 100644 index 0000000..5b62438 --- /dev/null +++ b/lib/cglm/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "C_Cpp.default.configurationProvider": "vector-of-bool.cmake-tools", + "restructuredtext.confPath": "${workspaceFolder}/docs/source" +} \ No newline at end of file diff --git a/lib/cglm/CMakeCache.txt b/lib/cglm/CMakeCache.txt new file mode 100644 index 0000000..39ccb74 --- /dev/null +++ b/lib/cglm/CMakeCache.txt @@ -0,0 +1,523 @@ +# This is the CMakeCache file. +# For build in directory: /home/assam/git/junko-mpv/lib/cglm +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Shared build +CGLM_SHARED:BOOL=ON + +//Static build +CGLM_STATIC:BOOL=ON + +CGLM_USE_C99:BOOL=OFF + +//Enable Tests +CGLM_USE_TEST:BOOL=OFF + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build. +CMAKE_BUILD_TYPE:STRING=Release + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/pkgRedirects + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC=OpenGL Mathematics (glm) for C + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC=https://github.com/recp/cglm + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=cglm + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=0.8.7 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=8 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC=7 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Enable to build Debian packages +CPACK_BINARY_DEB:BOOL=OFF + +//Enable to build FreeBSD packages +CPACK_BINARY_FREEBSD:BOOL=OFF + +//Enable to build IFW packages +CPACK_BINARY_IFW:BOOL=OFF + +//Enable to build NSIS packages +CPACK_BINARY_NSIS:BOOL=OFF + +//Enable to build RPM packages +CPACK_BINARY_RPM:BOOL=OFF + +//Enable to build STGZ packages +CPACK_BINARY_STGZ:BOOL=ON + +//Enable to build TBZ2 packages +CPACK_BINARY_TBZ2:BOOL=OFF + +//Enable to build TGZ packages +CPACK_BINARY_TGZ:BOOL=ON + +//Enable to build TXZ packages +CPACK_BINARY_TXZ:BOOL=OFF + +//Enable to build TZ packages +CPACK_BINARY_TZ:BOOL=ON + +//Enable to build RPM source packages +CPACK_SOURCE_RPM:BOOL=OFF + +//Enable to build TBZ2 source packages +CPACK_SOURCE_TBZ2:BOOL=ON + +//Enable to build TGZ source packages +CPACK_SOURCE_TGZ:BOOL=ON + +//Enable to build TXZ source packages +CPACK_SOURCE_TXZ:BOOL=ON + +//Enable to build TZ source packages +CPACK_SOURCE_TZ:BOOL=ON + +//Enable to build ZIP source packages +CPACK_SOURCE_ZIP:BOOL=OFF + +//Value Computed by CMake +cglm_BINARY_DIR:STATIC=/home/assam/git/junko-mpv/lib/cglm + +//Value Computed by CMake +cglm_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +cglm_SOURCE_DIR:STATIC=/home/assam/git/junko-mpv/lib/cglm + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//STRINGS property for variable: CMAKE_BUILD_TYPE +CMAKE_BUILD_TYPE-STRINGS:INTERNAL=Debug;Release;MinSizeRel;RelWithDebInfo +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/assam/git/junko-mpv/lib/cglm +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=24 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/assam/git/junko-mpv/lib/cglm +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_DEB +CPACK_BINARY_DEB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_FREEBSD +CPACK_BINARY_FREEBSD-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_IFW +CPACK_BINARY_IFW-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_NSIS +CPACK_BINARY_NSIS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_RPM +CPACK_BINARY_RPM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_STGZ +CPACK_BINARY_STGZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_TBZ2 +CPACK_BINARY_TBZ2-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_TGZ +CPACK_BINARY_TGZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_TXZ +CPACK_BINARY_TXZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_TZ +CPACK_BINARY_TZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_RPM +CPACK_SOURCE_RPM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_TBZ2 +CPACK_SOURCE_TBZ2-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_TGZ +CPACK_SOURCE_TGZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_TXZ +CPACK_SOURCE_TXZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_TZ +CPACK_SOURCE_TZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_ZIP +CPACK_SOURCE_ZIP-ADVANCED:INTERNAL=1 +//linker supports push/pop state +_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local + diff --git a/lib/cglm/CMakeFiles/3.24.2/CMakeCCompiler.cmake b/lib/cglm/CMakeFiles/3.24.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..28961f2 --- /dev/null +++ b/lib/cglm/CMakeFiles/3.24.2/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "12.2.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0;/usr/lib;/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/lib/cglm/CMakeFiles/3.24.2/CMakeDetermineCompilerABI_C.bin b/lib/cglm/CMakeFiles/3.24.2/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000..a231850 Binary files /dev/null and b/lib/cglm/CMakeFiles/3.24.2/CMakeDetermineCompilerABI_C.bin differ diff --git a/lib/cglm/CMakeFiles/3.24.2/CMakeSystem.cmake b/lib/cglm/CMakeFiles/3.24.2/CMakeSystem.cmake new file mode 100644 index 0000000..b1a5cf8 --- /dev/null +++ b/lib/cglm/CMakeFiles/3.24.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.19.13-arch1-1") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.19.13-arch1-1") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.19.13-arch1-1") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.19.13-arch1-1") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/lib/cglm/CMakeFiles/3.24.2/CompilerIdC/CMakeCCompilerId.c b/lib/cglm/CMakeFiles/3.24.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..2b43aa6 --- /dev/null +++ b/lib/cglm/CMakeFiles/3.24.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,838 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(1) +# if defined(__LCC__) +# define COMPILER_VERSION_MINOR DEC(__LCC__- 100) +# endif +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/lib/cglm/CMakeFiles/CMakeDirectoryInformation.cmake b/lib/cglm/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..5db24d4 --- /dev/null +++ b/lib/cglm/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.24 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/assam/git/junko-mpv/lib/cglm") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/assam/git/junko-mpv/lib/cglm") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig-release.cmake b/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig-release.cmake new file mode 100644 index 0000000..0b5da49 --- /dev/null +++ b/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig-release.cmake @@ -0,0 +1,19 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "Release". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "cglm::cglm" for configuration "Release" +set_property(TARGET cglm::cglm APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(cglm::cglm PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libcglm.a" + ) + +list(APPEND _cmake_import_check_targets cglm::cglm ) +list(APPEND _cmake_import_check_files_for_cglm::cglm "${_IMPORT_PREFIX}/lib/libcglm.a" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig.cmake b/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig.cmake new file mode 100644 index 0000000..9e54efc --- /dev/null +++ b/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig.cmake @@ -0,0 +1,102 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) + message(FATAL_ERROR "CMake >= 2.8.0 required") +endif() +if(CMAKE_VERSION VERSION_LESS "2.8.3") + message(FATAL_ERROR "CMake >= 2.8.3 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.8.3...3.22) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_cmake_targets_defined "") +set(_cmake_targets_not_defined "") +set(_cmake_expected_targets "") +foreach(_cmake_expected_target IN ITEMS cglm::cglm) + list(APPEND _cmake_expected_targets "${_cmake_expected_target}") + if(TARGET "${_cmake_expected_target}") + list(APPEND _cmake_targets_defined "${_cmake_expected_target}") + else() + list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") + endif() +endforeach() +unset(_cmake_expected_target) +if(_cmake_targets_defined STREQUAL _cmake_expected_targets) + unset(_cmake_targets_defined) + unset(_cmake_targets_not_defined) + unset(_cmake_expected_targets) + unset(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT _cmake_targets_defined STREQUAL "") + string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") + string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") +endif() +unset(_cmake_targets_defined) +unset(_cmake_targets_not_defined) +unset(_cmake_expected_targets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target cglm::cglm +add_library(cglm::cglm STATIC IMPORTED) + +set_target_properties(cglm::cglm PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" +) + +# Load information for each installed configuration. +file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/cglmConfig-*.cmake") +foreach(_cmake_config_file IN LISTS _cmake_config_files) + include("${_cmake_config_file}") +endforeach() +unset(_cmake_config_file) +unset(_cmake_config_files) + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(_cmake_target IN LISTS _cmake_import_check_targets) + foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}") + if(NOT EXISTS "${_cmake_file}") + message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file + \"${_cmake_file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_cmake_file) + unset("_cmake_import_check_files_for_${_cmake_target}") +endforeach() +unset(_cmake_target) +unset(_cmake_import_check_targets) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/lib/cglm/CMakeFiles/Makefile.cmake b/lib/cglm/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..ddf0ae6 --- /dev/null +++ b/lib/cglm/CMakeFiles/Makefile.cmake @@ -0,0 +1,51 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.24 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "CMakeFiles/3.24.2/CMakeCCompiler.cmake" + "CMakeFiles/3.24.2/CMakeSystem.cmake" + "CMakeLists.txt" + "cglm.pc.in" + "/usr/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake/Modules/CPack.cmake" + "/usr/share/cmake/Modules/CPackComponent.cmake" + "/usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/share/cmake/Modules/GNUInstallDirs.cmake" + "/usr/share/cmake/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake/Modules/Platform/Linux.cmake" + "/usr/share/cmake/Modules/Platform/UnixPaths.cmake" + "/usr/share/cmake/Templates/CPackConfig.cmake.in" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CPackConfig.cmake" + "CPackSourceConfig.cmake" + "cglm.pc" + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/cglm.dir/DependInfo.cmake" + ) diff --git a/lib/cglm/CMakeFiles/Makefile2 b/lib/cglm/CMakeFiles/Makefile2 new file mode 100644 index 0000000..d2a9e25 --- /dev/null +++ b/lib/cglm/CMakeFiles/Makefile2 @@ -0,0 +1,112 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.24 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/assam/git/junko-mpv/lib/cglm + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/assam/git/junko-mpv/lib/cglm + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/cglm.dir/all +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/cglm.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/cglm.dir + +# All Build rule for target. +CMakeFiles/cglm.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/cglm.dir/build.make CMakeFiles/cglm.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/cglm.dir/build.make CMakeFiles/cglm.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 "Built target cglm" +.PHONY : CMakeFiles/cglm.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/cglm.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/assam/git/junko-mpv/lib/cglm/CMakeFiles 39 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/cglm.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/assam/git/junko-mpv/lib/cglm/CMakeFiles 0 +.PHONY : CMakeFiles/cglm.dir/rule + +# Convenience name for target. +cglm: CMakeFiles/cglm.dir/rule +.PHONY : cglm + +# clean rule for target. +CMakeFiles/cglm.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/cglm.dir/build.make CMakeFiles/cglm.dir/clean +.PHONY : CMakeFiles/cglm.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/lib/cglm/CMakeFiles/TargetDirectories.txt b/lib/cglm/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..783c212 --- /dev/null +++ b/lib/cglm/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,9 @@ +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/cglm.dir +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/package.dir +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/package_source.dir +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/edit_cache.dir +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/rebuild_cache.dir +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/list_install_components.dir +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/install.dir +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/install/local.dir +/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/install/strip.dir diff --git a/lib/cglm/CMakeFiles/cglm.dir/DependInfo.cmake b/lib/cglm/CMakeFiles/cglm.dir/DependInfo.cmake new file mode 100644 index 0000000..2877492 --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/DependInfo.cmake @@ -0,0 +1,56 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/assam/git/junko-mpv/lib/cglm/src/affine.c" "CMakeFiles/cglm.dir/src/affine.c.o" "gcc" "CMakeFiles/cglm.dir/src/affine.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/affine2d.c" "CMakeFiles/cglm.dir/src/affine2d.c.o" "gcc" "CMakeFiles/cglm.dir/src/affine2d.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/bezier.c" "CMakeFiles/cglm.dir/src/bezier.c.o" "gcc" "CMakeFiles/cglm.dir/src/bezier.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/box.c" "CMakeFiles/cglm.dir/src/box.c.o" "gcc" "CMakeFiles/cglm.dir/src/box.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/cam.c" "CMakeFiles/cglm.dir/src/cam.c.o" "gcc" "CMakeFiles/cglm.dir/src/cam.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_no.c" "CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_zo.c" "CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_no.c" "CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_zo.c" "CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_no.c" "CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_zo.c" "CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_no.c" "CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_zo.c" "CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_no.c" "CMakeFiles/cglm.dir/src/clipspace/project_no.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/project_no.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_zo.c" "CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_no.c" "CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_zo.c" "CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_no.c" "CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_zo.c" "CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o" "gcc" "CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/curve.c" "CMakeFiles/cglm.dir/src/curve.c.o" "gcc" "CMakeFiles/cglm.dir/src/curve.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/ease.c" "CMakeFiles/cglm.dir/src/ease.c.o" "gcc" "CMakeFiles/cglm.dir/src/ease.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/euler.c" "CMakeFiles/cglm.dir/src/euler.c.o" "gcc" "CMakeFiles/cglm.dir/src/euler.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/frustum.c" "CMakeFiles/cglm.dir/src/frustum.c.o" "gcc" "CMakeFiles/cglm.dir/src/frustum.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/io.c" "CMakeFiles/cglm.dir/src/io.c.o" "gcc" "CMakeFiles/cglm.dir/src/io.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/ivec2.c" "CMakeFiles/cglm.dir/src/ivec2.c.o" "gcc" "CMakeFiles/cglm.dir/src/ivec2.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/ivec3.c" "CMakeFiles/cglm.dir/src/ivec3.c.o" "gcc" "CMakeFiles/cglm.dir/src/ivec3.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/ivec4.c" "CMakeFiles/cglm.dir/src/ivec4.c.o" "gcc" "CMakeFiles/cglm.dir/src/ivec4.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/mat2.c" "CMakeFiles/cglm.dir/src/mat2.c.o" "gcc" "CMakeFiles/cglm.dir/src/mat2.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/mat3.c" "CMakeFiles/cglm.dir/src/mat3.c.o" "gcc" "CMakeFiles/cglm.dir/src/mat3.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/mat4.c" "CMakeFiles/cglm.dir/src/mat4.c.o" "gcc" "CMakeFiles/cglm.dir/src/mat4.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/plane.c" "CMakeFiles/cglm.dir/src/plane.c.o" "gcc" "CMakeFiles/cglm.dir/src/plane.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/project.c" "CMakeFiles/cglm.dir/src/project.c.o" "gcc" "CMakeFiles/cglm.dir/src/project.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/quat.c" "CMakeFiles/cglm.dir/src/quat.c.o" "gcc" "CMakeFiles/cglm.dir/src/quat.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/ray.c" "CMakeFiles/cglm.dir/src/ray.c.o" "gcc" "CMakeFiles/cglm.dir/src/ray.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/sphere.c" "CMakeFiles/cglm.dir/src/sphere.c.o" "gcc" "CMakeFiles/cglm.dir/src/sphere.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/vec2.c" "CMakeFiles/cglm.dir/src/vec2.c.o" "gcc" "CMakeFiles/cglm.dir/src/vec2.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/vec3.c" "CMakeFiles/cglm.dir/src/vec3.c.o" "gcc" "CMakeFiles/cglm.dir/src/vec3.c.o.d" + "/home/assam/git/junko-mpv/lib/cglm/src/vec4.c" "CMakeFiles/cglm.dir/src/vec4.c.o" "gcc" "CMakeFiles/cglm.dir/src/vec4.c.o.d" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/lib/cglm/CMakeFiles/cglm.dir/build.make b/lib/cglm/CMakeFiles/cglm.dir/build.make new file mode 100644 index 0000000..3fde04f --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/build.make @@ -0,0 +1,703 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.24 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/assam/git/junko-mpv/lib/cglm + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/assam/git/junko-mpv/lib/cglm + +# Include any dependencies generated for this target. +include CMakeFiles/cglm.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/cglm.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/cglm.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/cglm.dir/flags.make + +CMakeFiles/cglm.dir/src/euler.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/euler.c.o: src/euler.c +CMakeFiles/cglm.dir/src/euler.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/cglm.dir/src/euler.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/euler.c.o -MF CMakeFiles/cglm.dir/src/euler.c.o.d -o CMakeFiles/cglm.dir/src/euler.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/euler.c + +CMakeFiles/cglm.dir/src/euler.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/euler.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/euler.c > CMakeFiles/cglm.dir/src/euler.c.i + +CMakeFiles/cglm.dir/src/euler.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/euler.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/euler.c -o CMakeFiles/cglm.dir/src/euler.c.s + +CMakeFiles/cglm.dir/src/affine.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/affine.c.o: src/affine.c +CMakeFiles/cglm.dir/src/affine.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/cglm.dir/src/affine.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/affine.c.o -MF CMakeFiles/cglm.dir/src/affine.c.o.d -o CMakeFiles/cglm.dir/src/affine.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/affine.c + +CMakeFiles/cglm.dir/src/affine.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/affine.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/affine.c > CMakeFiles/cglm.dir/src/affine.c.i + +CMakeFiles/cglm.dir/src/affine.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/affine.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/affine.c -o CMakeFiles/cglm.dir/src/affine.c.s + +CMakeFiles/cglm.dir/src/io.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/io.c.o: src/io.c +CMakeFiles/cglm.dir/src/io.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/cglm.dir/src/io.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/io.c.o -MF CMakeFiles/cglm.dir/src/io.c.o.d -o CMakeFiles/cglm.dir/src/io.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/io.c + +CMakeFiles/cglm.dir/src/io.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/io.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/io.c > CMakeFiles/cglm.dir/src/io.c.i + +CMakeFiles/cglm.dir/src/io.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/io.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/io.c -o CMakeFiles/cglm.dir/src/io.c.s + +CMakeFiles/cglm.dir/src/quat.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/quat.c.o: src/quat.c +CMakeFiles/cglm.dir/src/quat.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object CMakeFiles/cglm.dir/src/quat.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/quat.c.o -MF CMakeFiles/cglm.dir/src/quat.c.o.d -o CMakeFiles/cglm.dir/src/quat.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/quat.c + +CMakeFiles/cglm.dir/src/quat.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/quat.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/quat.c > CMakeFiles/cglm.dir/src/quat.c.i + +CMakeFiles/cglm.dir/src/quat.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/quat.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/quat.c -o CMakeFiles/cglm.dir/src/quat.c.s + +CMakeFiles/cglm.dir/src/cam.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/cam.c.o: src/cam.c +CMakeFiles/cglm.dir/src/cam.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object CMakeFiles/cglm.dir/src/cam.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/cam.c.o -MF CMakeFiles/cglm.dir/src/cam.c.o.d -o CMakeFiles/cglm.dir/src/cam.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/cam.c + +CMakeFiles/cglm.dir/src/cam.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/cam.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/cam.c > CMakeFiles/cglm.dir/src/cam.c.i + +CMakeFiles/cglm.dir/src/cam.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/cam.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/cam.c -o CMakeFiles/cglm.dir/src/cam.c.s + +CMakeFiles/cglm.dir/src/vec2.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/vec2.c.o: src/vec2.c +CMakeFiles/cglm.dir/src/vec2.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object CMakeFiles/cglm.dir/src/vec2.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/vec2.c.o -MF CMakeFiles/cglm.dir/src/vec2.c.o.d -o CMakeFiles/cglm.dir/src/vec2.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/vec2.c + +CMakeFiles/cglm.dir/src/vec2.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/vec2.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/vec2.c > CMakeFiles/cglm.dir/src/vec2.c.i + +CMakeFiles/cglm.dir/src/vec2.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/vec2.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/vec2.c -o CMakeFiles/cglm.dir/src/vec2.c.s + +CMakeFiles/cglm.dir/src/ivec2.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/ivec2.c.o: src/ivec2.c +CMakeFiles/cglm.dir/src/ivec2.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object CMakeFiles/cglm.dir/src/ivec2.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/ivec2.c.o -MF CMakeFiles/cglm.dir/src/ivec2.c.o.d -o CMakeFiles/cglm.dir/src/ivec2.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/ivec2.c + +CMakeFiles/cglm.dir/src/ivec2.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/ivec2.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/ivec2.c > CMakeFiles/cglm.dir/src/ivec2.c.i + +CMakeFiles/cglm.dir/src/ivec2.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/ivec2.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/ivec2.c -o CMakeFiles/cglm.dir/src/ivec2.c.s + +CMakeFiles/cglm.dir/src/vec3.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/vec3.c.o: src/vec3.c +CMakeFiles/cglm.dir/src/vec3.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object CMakeFiles/cglm.dir/src/vec3.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/vec3.c.o -MF CMakeFiles/cglm.dir/src/vec3.c.o.d -o CMakeFiles/cglm.dir/src/vec3.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/vec3.c + +CMakeFiles/cglm.dir/src/vec3.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/vec3.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/vec3.c > CMakeFiles/cglm.dir/src/vec3.c.i + +CMakeFiles/cglm.dir/src/vec3.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/vec3.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/vec3.c -o CMakeFiles/cglm.dir/src/vec3.c.s + +CMakeFiles/cglm.dir/src/ivec3.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/ivec3.c.o: src/ivec3.c +CMakeFiles/cglm.dir/src/ivec3.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object CMakeFiles/cglm.dir/src/ivec3.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/ivec3.c.o -MF CMakeFiles/cglm.dir/src/ivec3.c.o.d -o CMakeFiles/cglm.dir/src/ivec3.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/ivec3.c + +CMakeFiles/cglm.dir/src/ivec3.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/ivec3.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/ivec3.c > CMakeFiles/cglm.dir/src/ivec3.c.i + +CMakeFiles/cglm.dir/src/ivec3.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/ivec3.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/ivec3.c -o CMakeFiles/cglm.dir/src/ivec3.c.s + +CMakeFiles/cglm.dir/src/vec4.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/vec4.c.o: src/vec4.c +CMakeFiles/cglm.dir/src/vec4.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building C object CMakeFiles/cglm.dir/src/vec4.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/vec4.c.o -MF CMakeFiles/cglm.dir/src/vec4.c.o.d -o CMakeFiles/cglm.dir/src/vec4.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/vec4.c + +CMakeFiles/cglm.dir/src/vec4.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/vec4.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/vec4.c > CMakeFiles/cglm.dir/src/vec4.c.i + +CMakeFiles/cglm.dir/src/vec4.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/vec4.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/vec4.c -o CMakeFiles/cglm.dir/src/vec4.c.s + +CMakeFiles/cglm.dir/src/ivec4.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/ivec4.c.o: src/ivec4.c +CMakeFiles/cglm.dir/src/ivec4.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building C object CMakeFiles/cglm.dir/src/ivec4.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/ivec4.c.o -MF CMakeFiles/cglm.dir/src/ivec4.c.o.d -o CMakeFiles/cglm.dir/src/ivec4.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/ivec4.c + +CMakeFiles/cglm.dir/src/ivec4.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/ivec4.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/ivec4.c > CMakeFiles/cglm.dir/src/ivec4.c.i + +CMakeFiles/cglm.dir/src/ivec4.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/ivec4.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/ivec4.c -o CMakeFiles/cglm.dir/src/ivec4.c.s + +CMakeFiles/cglm.dir/src/mat2.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/mat2.c.o: src/mat2.c +CMakeFiles/cglm.dir/src/mat2.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building C object CMakeFiles/cglm.dir/src/mat2.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/mat2.c.o -MF CMakeFiles/cglm.dir/src/mat2.c.o.d -o CMakeFiles/cglm.dir/src/mat2.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/mat2.c + +CMakeFiles/cglm.dir/src/mat2.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/mat2.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/mat2.c > CMakeFiles/cglm.dir/src/mat2.c.i + +CMakeFiles/cglm.dir/src/mat2.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/mat2.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/mat2.c -o CMakeFiles/cglm.dir/src/mat2.c.s + +CMakeFiles/cglm.dir/src/mat3.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/mat3.c.o: src/mat3.c +CMakeFiles/cglm.dir/src/mat3.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building C object CMakeFiles/cglm.dir/src/mat3.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/mat3.c.o -MF CMakeFiles/cglm.dir/src/mat3.c.o.d -o CMakeFiles/cglm.dir/src/mat3.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/mat3.c + +CMakeFiles/cglm.dir/src/mat3.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/mat3.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/mat3.c > CMakeFiles/cglm.dir/src/mat3.c.i + +CMakeFiles/cglm.dir/src/mat3.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/mat3.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/mat3.c -o CMakeFiles/cglm.dir/src/mat3.c.s + +CMakeFiles/cglm.dir/src/mat4.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/mat4.c.o: src/mat4.c +CMakeFiles/cglm.dir/src/mat4.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building C object CMakeFiles/cglm.dir/src/mat4.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/mat4.c.o -MF CMakeFiles/cglm.dir/src/mat4.c.o.d -o CMakeFiles/cglm.dir/src/mat4.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/mat4.c + +CMakeFiles/cglm.dir/src/mat4.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/mat4.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/mat4.c > CMakeFiles/cglm.dir/src/mat4.c.i + +CMakeFiles/cglm.dir/src/mat4.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/mat4.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/mat4.c -o CMakeFiles/cglm.dir/src/mat4.c.s + +CMakeFiles/cglm.dir/src/plane.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/plane.c.o: src/plane.c +CMakeFiles/cglm.dir/src/plane.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Building C object CMakeFiles/cglm.dir/src/plane.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/plane.c.o -MF CMakeFiles/cglm.dir/src/plane.c.o.d -o CMakeFiles/cglm.dir/src/plane.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/plane.c + +CMakeFiles/cglm.dir/src/plane.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/plane.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/plane.c > CMakeFiles/cglm.dir/src/plane.c.i + +CMakeFiles/cglm.dir/src/plane.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/plane.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/plane.c -o CMakeFiles/cglm.dir/src/plane.c.s + +CMakeFiles/cglm.dir/src/frustum.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/frustum.c.o: src/frustum.c +CMakeFiles/cglm.dir/src/frustum.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_16) "Building C object CMakeFiles/cglm.dir/src/frustum.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/frustum.c.o -MF CMakeFiles/cglm.dir/src/frustum.c.o.d -o CMakeFiles/cglm.dir/src/frustum.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/frustum.c + +CMakeFiles/cglm.dir/src/frustum.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/frustum.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/frustum.c > CMakeFiles/cglm.dir/src/frustum.c.i + +CMakeFiles/cglm.dir/src/frustum.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/frustum.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/frustum.c -o CMakeFiles/cglm.dir/src/frustum.c.s + +CMakeFiles/cglm.dir/src/box.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/box.c.o: src/box.c +CMakeFiles/cglm.dir/src/box.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_17) "Building C object CMakeFiles/cglm.dir/src/box.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/box.c.o -MF CMakeFiles/cglm.dir/src/box.c.o.d -o CMakeFiles/cglm.dir/src/box.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/box.c + +CMakeFiles/cglm.dir/src/box.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/box.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/box.c > CMakeFiles/cglm.dir/src/box.c.i + +CMakeFiles/cglm.dir/src/box.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/box.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/box.c -o CMakeFiles/cglm.dir/src/box.c.s + +CMakeFiles/cglm.dir/src/project.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/project.c.o: src/project.c +CMakeFiles/cglm.dir/src/project.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_18) "Building C object CMakeFiles/cglm.dir/src/project.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/project.c.o -MF CMakeFiles/cglm.dir/src/project.c.o.d -o CMakeFiles/cglm.dir/src/project.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/project.c + +CMakeFiles/cglm.dir/src/project.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/project.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/project.c > CMakeFiles/cglm.dir/src/project.c.i + +CMakeFiles/cglm.dir/src/project.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/project.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/project.c -o CMakeFiles/cglm.dir/src/project.c.s + +CMakeFiles/cglm.dir/src/sphere.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/sphere.c.o: src/sphere.c +CMakeFiles/cglm.dir/src/sphere.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_19) "Building C object CMakeFiles/cglm.dir/src/sphere.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/sphere.c.o -MF CMakeFiles/cglm.dir/src/sphere.c.o.d -o CMakeFiles/cglm.dir/src/sphere.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/sphere.c + +CMakeFiles/cglm.dir/src/sphere.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/sphere.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/sphere.c > CMakeFiles/cglm.dir/src/sphere.c.i + +CMakeFiles/cglm.dir/src/sphere.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/sphere.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/sphere.c -o CMakeFiles/cglm.dir/src/sphere.c.s + +CMakeFiles/cglm.dir/src/ease.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/ease.c.o: src/ease.c +CMakeFiles/cglm.dir/src/ease.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_20) "Building C object CMakeFiles/cglm.dir/src/ease.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/ease.c.o -MF CMakeFiles/cglm.dir/src/ease.c.o.d -o CMakeFiles/cglm.dir/src/ease.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/ease.c + +CMakeFiles/cglm.dir/src/ease.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/ease.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/ease.c > CMakeFiles/cglm.dir/src/ease.c.i + +CMakeFiles/cglm.dir/src/ease.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/ease.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/ease.c -o CMakeFiles/cglm.dir/src/ease.c.s + +CMakeFiles/cglm.dir/src/curve.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/curve.c.o: src/curve.c +CMakeFiles/cglm.dir/src/curve.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_21) "Building C object CMakeFiles/cglm.dir/src/curve.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/curve.c.o -MF CMakeFiles/cglm.dir/src/curve.c.o.d -o CMakeFiles/cglm.dir/src/curve.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/curve.c + +CMakeFiles/cglm.dir/src/curve.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/curve.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/curve.c > CMakeFiles/cglm.dir/src/curve.c.i + +CMakeFiles/cglm.dir/src/curve.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/curve.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/curve.c -o CMakeFiles/cglm.dir/src/curve.c.s + +CMakeFiles/cglm.dir/src/bezier.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/bezier.c.o: src/bezier.c +CMakeFiles/cglm.dir/src/bezier.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_22) "Building C object CMakeFiles/cglm.dir/src/bezier.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/bezier.c.o -MF CMakeFiles/cglm.dir/src/bezier.c.o.d -o CMakeFiles/cglm.dir/src/bezier.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/bezier.c + +CMakeFiles/cglm.dir/src/bezier.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/bezier.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/bezier.c > CMakeFiles/cglm.dir/src/bezier.c.i + +CMakeFiles/cglm.dir/src/bezier.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/bezier.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/bezier.c -o CMakeFiles/cglm.dir/src/bezier.c.s + +CMakeFiles/cglm.dir/src/ray.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/ray.c.o: src/ray.c +CMakeFiles/cglm.dir/src/ray.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_23) "Building C object CMakeFiles/cglm.dir/src/ray.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/ray.c.o -MF CMakeFiles/cglm.dir/src/ray.c.o.d -o CMakeFiles/cglm.dir/src/ray.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/ray.c + +CMakeFiles/cglm.dir/src/ray.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/ray.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/ray.c > CMakeFiles/cglm.dir/src/ray.c.i + +CMakeFiles/cglm.dir/src/ray.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/ray.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/ray.c -o CMakeFiles/cglm.dir/src/ray.c.s + +CMakeFiles/cglm.dir/src/affine2d.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/affine2d.c.o: src/affine2d.c +CMakeFiles/cglm.dir/src/affine2d.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_24) "Building C object CMakeFiles/cglm.dir/src/affine2d.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/affine2d.c.o -MF CMakeFiles/cglm.dir/src/affine2d.c.o.d -o CMakeFiles/cglm.dir/src/affine2d.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/affine2d.c + +CMakeFiles/cglm.dir/src/affine2d.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/affine2d.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/affine2d.c > CMakeFiles/cglm.dir/src/affine2d.c.i + +CMakeFiles/cglm.dir/src/affine2d.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/affine2d.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/affine2d.c -o CMakeFiles/cglm.dir/src/affine2d.c.s + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o: src/clipspace/ortho_lh_no.c +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_25) "Building C object CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o -MF CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_no.c + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_no.c > CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.i + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_no.c -o CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.s + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o: src/clipspace/ortho_lh_zo.c +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_26) "Building C object CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o -MF CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_zo.c + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_zo.c > CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.i + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_zo.c -o CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.s + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o: src/clipspace/ortho_rh_no.c +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_27) "Building C object CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o -MF CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_no.c + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_no.c > CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.i + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_no.c -o CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.s + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o: src/clipspace/ortho_rh_zo.c +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_28) "Building C object CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o -MF CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_zo.c + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_zo.c > CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.i + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_zo.c -o CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.s + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o: src/clipspace/persp_lh_no.c +CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_29) "Building C object CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o -MF CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_no.c + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_no.c > CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.i + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_no.c -o CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.s + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o: src/clipspace/persp_lh_zo.c +CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_30) "Building C object CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o -MF CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_zo.c + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_zo.c > CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.i + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_zo.c -o CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.s + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o: src/clipspace/persp_rh_no.c +CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_31) "Building C object CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o -MF CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_no.c + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_no.c > CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.i + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_no.c -o CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.s + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o: src/clipspace/persp_rh_zo.c +CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_32) "Building C object CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o -MF CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_zo.c + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_zo.c > CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.i + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_zo.c -o CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.s + +CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o: src/clipspace/view_lh_no.c +CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_33) "Building C object CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o -MF CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_no.c + +CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_no.c > CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.i + +CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_no.c -o CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.s + +CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o: src/clipspace/view_lh_zo.c +CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_34) "Building C object CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o -MF CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_zo.c + +CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_zo.c > CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.i + +CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_zo.c -o CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.s + +CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o: src/clipspace/view_rh_no.c +CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_35) "Building C object CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o -MF CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_no.c + +CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_no.c > CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.i + +CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_no.c -o CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.s + +CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o: src/clipspace/view_rh_zo.c +CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_36) "Building C object CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o -MF CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_zo.c + +CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_zo.c > CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.i + +CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_zo.c -o CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.s + +CMakeFiles/cglm.dir/src/clipspace/project_no.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/project_no.c.o: src/clipspace/project_no.c +CMakeFiles/cglm.dir/src/clipspace/project_no.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_37) "Building C object CMakeFiles/cglm.dir/src/clipspace/project_no.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/project_no.c.o -MF CMakeFiles/cglm.dir/src/clipspace/project_no.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/project_no.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_no.c + +CMakeFiles/cglm.dir/src/clipspace/project_no.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/project_no.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_no.c > CMakeFiles/cglm.dir/src/clipspace/project_no.c.i + +CMakeFiles/cglm.dir/src/clipspace/project_no.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/project_no.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_no.c -o CMakeFiles/cglm.dir/src/clipspace/project_no.c.s + +CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o: CMakeFiles/cglm.dir/flags.make +CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o: src/clipspace/project_zo.c +CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o: CMakeFiles/cglm.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_38) "Building C object CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o -MF CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o.d -o CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o -c /home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_zo.c + +CMakeFiles/cglm.dir/src/clipspace/project_zo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/cglm.dir/src/clipspace/project_zo.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_zo.c > CMakeFiles/cglm.dir/src/clipspace/project_zo.c.i + +CMakeFiles/cglm.dir/src/clipspace/project_zo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/cglm.dir/src/clipspace/project_zo.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_zo.c -o CMakeFiles/cglm.dir/src/clipspace/project_zo.c.s + +# Object files for target cglm +cglm_OBJECTS = \ +"CMakeFiles/cglm.dir/src/euler.c.o" \ +"CMakeFiles/cglm.dir/src/affine.c.o" \ +"CMakeFiles/cglm.dir/src/io.c.o" \ +"CMakeFiles/cglm.dir/src/quat.c.o" \ +"CMakeFiles/cglm.dir/src/cam.c.o" \ +"CMakeFiles/cglm.dir/src/vec2.c.o" \ +"CMakeFiles/cglm.dir/src/ivec2.c.o" \ +"CMakeFiles/cglm.dir/src/vec3.c.o" \ +"CMakeFiles/cglm.dir/src/ivec3.c.o" \ +"CMakeFiles/cglm.dir/src/vec4.c.o" \ +"CMakeFiles/cglm.dir/src/ivec4.c.o" \ +"CMakeFiles/cglm.dir/src/mat2.c.o" \ +"CMakeFiles/cglm.dir/src/mat3.c.o" \ +"CMakeFiles/cglm.dir/src/mat4.c.o" \ +"CMakeFiles/cglm.dir/src/plane.c.o" \ +"CMakeFiles/cglm.dir/src/frustum.c.o" \ +"CMakeFiles/cglm.dir/src/box.c.o" \ +"CMakeFiles/cglm.dir/src/project.c.o" \ +"CMakeFiles/cglm.dir/src/sphere.c.o" \ +"CMakeFiles/cglm.dir/src/ease.c.o" \ +"CMakeFiles/cglm.dir/src/curve.c.o" \ +"CMakeFiles/cglm.dir/src/bezier.c.o" \ +"CMakeFiles/cglm.dir/src/ray.c.o" \ +"CMakeFiles/cglm.dir/src/affine2d.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/project_no.c.o" \ +"CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o" + +# External object files for target cglm +cglm_EXTERNAL_OBJECTS = + +libcglm.a: CMakeFiles/cglm.dir/src/euler.c.o +libcglm.a: CMakeFiles/cglm.dir/src/affine.c.o +libcglm.a: CMakeFiles/cglm.dir/src/io.c.o +libcglm.a: CMakeFiles/cglm.dir/src/quat.c.o +libcglm.a: CMakeFiles/cglm.dir/src/cam.c.o +libcglm.a: CMakeFiles/cglm.dir/src/vec2.c.o +libcglm.a: CMakeFiles/cglm.dir/src/ivec2.c.o +libcglm.a: CMakeFiles/cglm.dir/src/vec3.c.o +libcglm.a: CMakeFiles/cglm.dir/src/ivec3.c.o +libcglm.a: CMakeFiles/cglm.dir/src/vec4.c.o +libcglm.a: CMakeFiles/cglm.dir/src/ivec4.c.o +libcglm.a: CMakeFiles/cglm.dir/src/mat2.c.o +libcglm.a: CMakeFiles/cglm.dir/src/mat3.c.o +libcglm.a: CMakeFiles/cglm.dir/src/mat4.c.o +libcglm.a: CMakeFiles/cglm.dir/src/plane.c.o +libcglm.a: CMakeFiles/cglm.dir/src/frustum.c.o +libcglm.a: CMakeFiles/cglm.dir/src/box.c.o +libcglm.a: CMakeFiles/cglm.dir/src/project.c.o +libcglm.a: CMakeFiles/cglm.dir/src/sphere.c.o +libcglm.a: CMakeFiles/cglm.dir/src/ease.c.o +libcglm.a: CMakeFiles/cglm.dir/src/curve.c.o +libcglm.a: CMakeFiles/cglm.dir/src/bezier.c.o +libcglm.a: CMakeFiles/cglm.dir/src/ray.c.o +libcglm.a: CMakeFiles/cglm.dir/src/affine2d.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/project_no.c.o +libcglm.a: CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o +libcglm.a: CMakeFiles/cglm.dir/build.make +libcglm.a: CMakeFiles/cglm.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/assam/git/junko-mpv/lib/cglm/CMakeFiles --progress-num=$(CMAKE_PROGRESS_39) "Linking C static library libcglm.a" + $(CMAKE_COMMAND) -P CMakeFiles/cglm.dir/cmake_clean_target.cmake + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/cglm.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/cglm.dir/build: libcglm.a +.PHONY : CMakeFiles/cglm.dir/build + +CMakeFiles/cglm.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/cglm.dir/cmake_clean.cmake +.PHONY : CMakeFiles/cglm.dir/clean + +CMakeFiles/cglm.dir/depend: + cd /home/assam/git/junko-mpv/lib/cglm && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/assam/git/junko-mpv/lib/cglm /home/assam/git/junko-mpv/lib/cglm /home/assam/git/junko-mpv/lib/cglm /home/assam/git/junko-mpv/lib/cglm /home/assam/git/junko-mpv/lib/cglm/CMakeFiles/cglm.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/cglm.dir/depend + diff --git a/lib/cglm/CMakeFiles/cglm.dir/cmake_clean.cmake b/lib/cglm/CMakeFiles/cglm.dir/cmake_clean.cmake new file mode 100644 index 0000000..62475d8 --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/cmake_clean.cmake @@ -0,0 +1,85 @@ +file(REMOVE_RECURSE + "CMakeFiles/cglm.dir/src/affine.c.o" + "CMakeFiles/cglm.dir/src/affine.c.o.d" + "CMakeFiles/cglm.dir/src/affine2d.c.o" + "CMakeFiles/cglm.dir/src/affine2d.c.o.d" + "CMakeFiles/cglm.dir/src/bezier.c.o" + "CMakeFiles/cglm.dir/src/bezier.c.o.d" + "CMakeFiles/cglm.dir/src/box.c.o" + "CMakeFiles/cglm.dir/src/box.c.o.d" + "CMakeFiles/cglm.dir/src/cam.c.o" + "CMakeFiles/cglm.dir/src/cam.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o" + "CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o" + "CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o" + "CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o" + "CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o" + "CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o" + "CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o" + "CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o" + "CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/project_no.c.o" + "CMakeFiles/cglm.dir/src/clipspace/project_no.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o" + "CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o" + "CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o" + "CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o" + "CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o.d" + "CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o" + "CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o.d" + "CMakeFiles/cglm.dir/src/curve.c.o" + "CMakeFiles/cglm.dir/src/curve.c.o.d" + "CMakeFiles/cglm.dir/src/ease.c.o" + "CMakeFiles/cglm.dir/src/ease.c.o.d" + "CMakeFiles/cglm.dir/src/euler.c.o" + "CMakeFiles/cglm.dir/src/euler.c.o.d" + "CMakeFiles/cglm.dir/src/frustum.c.o" + "CMakeFiles/cglm.dir/src/frustum.c.o.d" + "CMakeFiles/cglm.dir/src/io.c.o" + "CMakeFiles/cglm.dir/src/io.c.o.d" + "CMakeFiles/cglm.dir/src/ivec2.c.o" + "CMakeFiles/cglm.dir/src/ivec2.c.o.d" + "CMakeFiles/cglm.dir/src/ivec3.c.o" + "CMakeFiles/cglm.dir/src/ivec3.c.o.d" + "CMakeFiles/cglm.dir/src/ivec4.c.o" + "CMakeFiles/cglm.dir/src/ivec4.c.o.d" + "CMakeFiles/cglm.dir/src/mat2.c.o" + "CMakeFiles/cglm.dir/src/mat2.c.o.d" + "CMakeFiles/cglm.dir/src/mat3.c.o" + "CMakeFiles/cglm.dir/src/mat3.c.o.d" + "CMakeFiles/cglm.dir/src/mat4.c.o" + "CMakeFiles/cglm.dir/src/mat4.c.o.d" + "CMakeFiles/cglm.dir/src/plane.c.o" + "CMakeFiles/cglm.dir/src/plane.c.o.d" + "CMakeFiles/cglm.dir/src/project.c.o" + "CMakeFiles/cglm.dir/src/project.c.o.d" + "CMakeFiles/cglm.dir/src/quat.c.o" + "CMakeFiles/cglm.dir/src/quat.c.o.d" + "CMakeFiles/cglm.dir/src/ray.c.o" + "CMakeFiles/cglm.dir/src/ray.c.o.d" + "CMakeFiles/cglm.dir/src/sphere.c.o" + "CMakeFiles/cglm.dir/src/sphere.c.o.d" + "CMakeFiles/cglm.dir/src/vec2.c.o" + "CMakeFiles/cglm.dir/src/vec2.c.o.d" + "CMakeFiles/cglm.dir/src/vec3.c.o" + "CMakeFiles/cglm.dir/src/vec3.c.o.d" + "CMakeFiles/cglm.dir/src/vec4.c.o" + "CMakeFiles/cglm.dir/src/vec4.c.o.d" + "libcglm.a" + "libcglm.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/cglm.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/lib/cglm/CMakeFiles/cglm.dir/cmake_clean_target.cmake b/lib/cglm/CMakeFiles/cglm.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..7144c8d --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libcglm.a" +) diff --git a/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.internal b/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.internal new file mode 100644 index 0000000..a0e5e25 --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.internal @@ -0,0 +1,5853 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.24 + +CMakeFiles/cglm.dir/src/affine.c.o + /home/assam/git/junko-mpv/lib/cglm/src/affine.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/affine2d.c.o + /home/assam/git/junko-mpv/lib/cglm/src/affine2d.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/bezier.c.o + /home/assam/git/junko-mpv/lib/cglm/src/bezier.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/box.c.o + /home/assam/git/junko-mpv/lib/cglm/src/box.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/cam.c.o + /home/assam/git/junko-mpv/lib/cglm/src/cam.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_no.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_lh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/ortho_lh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_lh_zo.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_lh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/ortho_lh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_no.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/ortho_rh_zo.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/ortho_rh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_no.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_lh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/persp_lh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_lh_zo.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_lh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/persp_lh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_no.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/persp_rh_zo.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/persp_rh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/project_no.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_no.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/project_zo.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/project_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_no.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_lh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_lh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/view_lh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_lh_zo.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_lh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_lh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/view_lh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_no.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o + /home/assam/git/junko-mpv/lib/cglm/src/clipspace/view_rh_zo.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/clipspace/view_rh_zo.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/curve.c.o + /home/assam/git/junko-mpv/lib/cglm/src/curve.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ease.c.o + /home/assam/git/junko-mpv/lib/cglm/src/ease.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/euler.c.o + /home/assam/git/junko-mpv/lib/cglm/src/euler.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/frustum.c.o + /home/assam/git/junko-mpv/lib/cglm/src/frustum.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/io.c.o + /home/assam/git/junko-mpv/lib/cglm/src/io.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ivec2.c.o + /home/assam/git/junko-mpv/lib/cglm/src/ivec2.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ivec3.c.o + /home/assam/git/junko-mpv/lib/cglm/src/ivec3.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ivec4.c.o + /home/assam/git/junko-mpv/lib/cglm/src/ivec4.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/mat2.c.o + /home/assam/git/junko-mpv/lib/cglm/src/mat2.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/mat3.c.o + /home/assam/git/junko-mpv/lib/cglm/src/mat3.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/mat4.c.o + /home/assam/git/junko-mpv/lib/cglm/src/mat4.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/plane.c.o + /home/assam/git/junko-mpv/lib/cglm/src/plane.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/project.c.o + /home/assam/git/junko-mpv/lib/cglm/src/project.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/quat.c.o + /home/assam/git/junko-mpv/lib/cglm/src/quat.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ray.c.o + /home/assam/git/junko-mpv/lib/cglm/src/ray.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/sphere.c.o + /home/assam/git/junko-mpv/lib/cglm/src/sphere.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/vec2.c.o + /home/assam/git/junko-mpv/lib/cglm/src/vec2.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/vec3.c.o + /home/assam/git/junko-mpv/lib/cglm/src/vec3.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/vec4.c.o + /home/assam/git/junko-mpv/lib/cglm/src/vec4.c + /usr/include/stdc-predef.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h + /usr/include/stdint.h + /usr/include/bits/libc-header-start.h + /usr/include/features.h + /usr/include/features-time64.h + /usr/include/bits/wordsize.h + /usr/include/bits/timesize.h + /usr/include/sys/cdefs.h + /usr/include/bits/long-double.h + /usr/include/gnu/stubs.h + /usr/include/gnu/stubs-64.h + /usr/include/bits/types.h + /usr/include/bits/typesizes.h + /usr/include/bits/time64.h + /usr/include/bits/wchar.h + /usr/include/bits/stdint-intn.h + /usr/include/bits/stdint-uintn.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h + /usr/include/math.h + /usr/include/bits/math-vector.h + /usr/include/bits/libm-simd-decl-stubs.h + /usr/include/bits/floatn.h + /usr/include/bits/floatn-common.h + /usr/include/bits/flt-eval-method.h + /usr/include/bits/fp-logb.h + /usr/include/bits/fp-fast.h + /usr/include/bits/mathcalls-helper-functions.h + /usr/include/bits/mathcalls.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/types.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h + /usr/include/stdlib.h + /usr/include/bits/waitflags.h + /usr/include/bits/waitstatus.h + /usr/include/sys/types.h + /usr/include/bits/types/clock_t.h + /usr/include/bits/types/clockid_t.h + /usr/include/bits/types/time_t.h + /usr/include/bits/types/timer_t.h + /usr/include/endian.h + /usr/include/bits/endian.h + /usr/include/bits/endianness.h + /usr/include/bits/byteswap.h + /usr/include/bits/uintn-identity.h + /usr/include/sys/select.h + /usr/include/bits/select.h + /usr/include/bits/types/sigset_t.h + /usr/include/bits/types/__sigset_t.h + /usr/include/bits/types/struct_timeval.h + /usr/include/bits/types/struct_timespec.h + /usr/include/bits/pthreadtypes.h + /usr/include/bits/thread-shared-types.h + /usr/include/bits/pthreadtypes-arch.h + /usr/include/bits/atomic_wide_counter.h + /usr/include/bits/struct_mutex.h + /usr/include/bits/struct_rwlock.h + /usr/include/alloca.h + /usr/include/bits/stdlib-bsearch.h + /usr/include/bits/stdlib-float.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/x86.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/util.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec2-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3-ext.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/intrin.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-mat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-pre.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine-post.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/common.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/ortho_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/persp.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/view_rh.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/simd/sse2/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/color.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/io.h + /usr/include/stdio.h + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h + /usr/include/bits/types/__fpos_t.h + /usr/include/bits/types/__mbstate_t.h + /usr/include/bits/types/__fpos64_t.h + /usr/include/bits/types/__FILE.h + /usr/include/bits/types/FILE.h + /usr/include/bits/types/struct_FILE.h + /usr/include/bits/stdio_lim.h + /usr/include/bits/stdio.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/clipspace/project_no.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/affine2d.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/cglm.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/vec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ivec4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat2.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat3.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/mat4.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/cam.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/quat.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/euler.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/plane.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/frustum.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/box.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/io.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/project.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/sphere.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ease.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/curve.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/bezier.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/ray.h + /home/assam/git/junko-mpv/lib/cglm/include/cglm/call/affine2d.h + diff --git a/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.make b/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.make new file mode 100644 index 0000000..327b58b --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.make @@ -0,0 +1,6233 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.24 + +CMakeFiles/cglm.dir/src/affine.c.o: src/affine.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/affine2d.c.o: src/affine2d.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/bezier.c.o: src/bezier.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/box.c.o: src/box.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/cam.c.o: src/cam.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o: src/clipspace/ortho_lh_no.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/ortho_lh_no.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/ortho_lh_no.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o: src/clipspace/ortho_lh_zo.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/ortho_lh_zo.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/ortho_lh_zo.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o: src/clipspace/ortho_rh_no.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/ortho_rh_no.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o: src/clipspace/ortho_rh_zo.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/ortho_rh_zo.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/ortho_rh_zo.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o: src/clipspace/persp_lh_no.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/persp_lh_no.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/clipspace/persp.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/persp_lh_no.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o: src/clipspace/persp_lh_zo.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/persp_lh_zo.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/clipspace/persp.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/persp_lh_zo.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o: src/clipspace/persp_rh_no.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/clipspace/persp.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/persp_rh_no.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o: src/clipspace/persp_rh_zo.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/persp_rh_zo.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/clipspace/persp.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/persp_rh_zo.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/project_no.c.o: src/clipspace/project_no.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec3.h \ + include/cglm/common.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/vec4.h \ + include/cglm/mat4.h \ + include/cglm/vec3.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/project_no.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o: src/clipspace/project_zo.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/project_zo.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec3.h \ + include/cglm/common.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/vec4.h \ + include/cglm/mat4.h \ + include/cglm/vec3.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/call/clipspace/project_zo.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o: src/clipspace/view_lh_no.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/view_lh_no.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/clipspace/view_lh.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/call/clipspace/view_lh_no.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o: src/clipspace/view_lh_zo.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/view_lh_zo.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/clipspace/view_lh.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/call/clipspace/view_lh_zo.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o: src/clipspace/view_rh_no.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/call/clipspace/view_rh_no.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o: src/clipspace/view_rh_zo.c \ + /usr/include/stdc-predef.h \ + include/cglm/clipspace/view_rh_zo.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/plane.h \ + include/cglm/common.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/util.h \ + include/cglm/call/clipspace/view_rh_zo.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +CMakeFiles/cglm.dir/src/curve.c.o: src/curve.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ease.c.o: src/ease.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/euler.c.o: src/euler.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/frustum.c.o: src/frustum.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/io.c.o: src/io.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ivec2.c.o: src/ivec2.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ivec3.c.o: src/ivec3.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ivec4.c.o: src/ivec4.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/mat2.c.o: src/mat2.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/mat3.c.o: src/mat3.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/mat4.c.o: src/mat4.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/plane.c.o: src/plane.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/project.c.o: src/project.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/quat.c.o: src/quat.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/ray.c.o: src/ray.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/sphere.c.o: src/sphere.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/vec2.c.o: src/vec2.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/vec3.c.o: src/vec3.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + +CMakeFiles/cglm.dir/src/vec4.c.o: src/vec4.c \ + /usr/include/stdc-predef.h \ + include/cglm/cglm.h \ + include/cglm/common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \ + /usr/include/stdint.h \ + /usr/include/bits/libc-header-start.h \ + /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/bits/wordsize.h \ + /usr/include/bits/timesize.h \ + /usr/include/sys/cdefs.h \ + /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h \ + /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h \ + /usr/include/bits/stdint-uintn.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \ + /usr/include/math.h \ + /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/include/bits/flt-eval-method.h \ + /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h \ + include/cglm/types.h \ + include/cglm/simd/intrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h \ + /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h \ + /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/endian.h \ + /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h \ + /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h \ + /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h \ + /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h \ + /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h \ + /usr/include/bits/stdlib-float.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/intrin.h \ + include/cglm/vec2.h \ + include/cglm/util.h \ + include/cglm/vec2-ext.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec2.h \ + include/cglm/ivec3.h \ + include/cglm/ivec4.h \ + include/cglm/mat4.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/common.h \ + include/cglm/simd/intrin.h \ + include/cglm/mat3.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/mat2.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/simd/sse2/affine.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/cam.h \ + include/cglm/plane.h \ + include/cglm/clipspace/persp.h \ + include/cglm/common.h \ + include/cglm/plane.h \ + include/cglm/mat4.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/frustum.h \ + include/cglm/quat.h \ + include/cglm/simd/sse2/quat.h \ + include/cglm/euler.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/io.h \ + /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h \ + /usr/include/bits/stdio.h \ + include/cglm/project.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/vec3.h \ + include/cglm/vec4.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h \ + include/cglm/call.h \ + include/cglm/cglm.h \ + include/cglm/call/vec2.h \ + include/cglm/cglm.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/mat2.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat4.h \ + include/cglm/call/affine.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/io.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine2d.h + + +src/vec4.c: + +src/ray.c: + +src/project.c: + +src/plane.c: + +src/mat4.c: + +src/mat3.c: + +src/mat2.c: + +src/ivec4.c: + +src/io.c: + +src/ease.c: + +include/cglm/clipspace/view_rh_zo.h: + +src/ivec3.c: + +include/cglm/call/clipspace/view_rh_no.h: + +include/cglm/call/clipspace/view_lh_zo.h: + +src/clipspace/view_lh_zo.c: + +include/cglm/clipspace/view_lh.h: + +include/cglm/clipspace/view_lh_no.h: + +src/clipspace/view_lh_no.c: + +src/euler.c: + +include/cglm/clipspace/project_zo.h: + +src/clipspace/project_no.c: + +include/cglm/clipspace/persp_rh_zo.h: + +include/cglm/call/clipspace/persp_rh_no.h: + +include/cglm/call/clipspace/persp_lh_zo.h: + +include/cglm/clipspace/persp_lh_zo.h: + +src/clipspace/persp_lh_zo.c: + +include/cglm/clipspace/persp_lh_no.h: + +src/frustum.c: + +src/clipspace/ortho_rh_zo.c: + +include/cglm/call/clipspace/ortho_rh_no.h: + +src/clipspace/ortho_lh_zo.c: + +src/clipspace/view_rh_no.c: + +include/cglm/call/clipspace/ortho_lh_no.h: + +src/cam.c: + +src/box.c: + +src/bezier.c: + +include/cglm/call/curve.h: + +include/cglm/call/sphere.h: + +include/cglm/call/io.h: + +include/cglm/call/box.h: + +include/cglm/call/plane.h: + +include/cglm/call/euler.h: + +include/cglm/call/cam.h: + +include/cglm/call/affine.h: + +src/vec3.c: + +include/cglm/call/mat4.h: + +include/cglm/call/clipspace/ortho_lh_zo.h: + +include/cglm/call/ivec4.h: + +include/cglm/call/bezier.h: + +include/cglm/call/ivec3.h: + +include/cglm/call/clipspace/project_zo.h: + +/usr/include/bits/types/struct_timespec.h: + +/usr/include/bits/types/struct_timeval.h: + +include/cglm/call/clipspace/view_lh_no.h: + +include/cglm/clipspace/ortho_rh_zo.h: + +/usr/include/bits/atomic_wide_counter.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types/__sigset_t.h: + +include/cglm/io.h: + +src/clipspace/persp_lh_no.c: + +/usr/include/bits/endian.h: + +include/cglm/clipspace/ortho_lh_no.h: + +/usr/include/bits/waitflags.h: + +include/cglm/simd/sse2/mat4.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mmintrin.h: + +include/cglm/simd/sse2/mat3.h: + +src/affine2d.c: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/xmmintrin.h: + +src/clipspace/project_zo.c: + +/usr/include/sys/select.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/float.h: + +src/clipspace/persp_rh_no.c: + +include/cglm/vec3-ext.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/bits/timesize.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/bits/types/sigset_t.h: + +include/cglm/cglm.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/uintn-identity.h: + +src/clipspace/view_rh_zo.c: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/wordsize.h: + +/usr/include/stdint.h: + +include/cglm/vec2-ext.h: + +include/cglm/simd/intrin.h: + +include/cglm/simd/sse2/affine.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h: + +src/quat.c: + +/usr/include/bits/select.h: + +include/cglm/common.h: + +include/cglm/types.h: + +include/cglm/call.h: + +/usr/include/stdc-predef.h: + +include/cglm/call/ray.h: + +include/cglm/cam.h: + +include/cglm/call/mat3.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/pthreadtypes-arch.h: + +/usr/include/gnu/stubs.h: + +/usr/include/math.h: + +/usr/include/bits/floatn.h: + +src/vec2.c: + +include/cglm/call/affine2d.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdbool.h: + +include/cglm/euler.h: + +src/affine.c: + +/usr/include/bits/types.h: + +/usr/include/bits/byteswap.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/mm_malloc.h: + +include/cglm/affine.h: + +include/cglm/call/quat.h: + +/usr/include/bits/wchar.h: + +include/cglm/bezier.h: + +/usr/include/bits/stdint-intn.h: + +src/ivec2.c: + +/usr/include/bits/stdint-uintn.h: + +src/clipspace/persp_rh_zo.c: + +/usr/include/endian.h: + +include/cglm/ivec3.h: + +include/cglm/mat4.h: + +include/cglm/clipspace/view_rh_no.h: + +include/cglm/plane.h: + +include/cglm/clipspace/view_lh_zo.h: + +/usr/include/stdio.h: + +include/cglm/clipspace/project_no.h: + +/usr/include/bits/math-vector.h: + +include/cglm/call/clipspace/persp_rh_zo.h: + +include/cglm/frustum.h: + +include/cglm/call/project.h: + +/usr/include/bits/types/clock_t.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/types/__fpos_t.h: + +/usr/include/bits/libm-simd-decl-stubs.h: + +include/cglm/affine-pre.h: + +/usr/include/bits/long-double.h: + +include/cglm/simd/sse2/quat.h: + +src/clipspace/ortho_lh_no.c: + +/usr/include/bits/types/clockid_t.h: + +include/cglm/curve.h: + +include/cglm/simd/x86.h: + +/usr/include/bits/fp-logb.h: + +/usr/include/bits/thread-shared-types.h: + +/usr/include/bits/struct_mutex.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/time64.h: + +/usr/include/bits/stdlib-float.h: + +include/cglm/ivec4.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/libc-header-start.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/emmintrin.h: + +include/cglm/clipspace/ortho_lh_zo.h: + +include/cglm/vec2.h: + +/usr/include/features-time64.h: + +include/cglm/util.h: + +include/cglm/vec3.h: + +/usr/include/features.h: + +/usr/include/bits/endianness.h: + +include/cglm/vec4.h: + +include/cglm/call/ease.h: + +include/cglm/call/mat2.h: + +include/cglm/affine-post.h: + +include/cglm/vec4-ext.h: + +/usr/include/bits/pthreadtypes.h: + +include/cglm/ivec2.h: + +include/cglm/call/frustum.h: + +include/cglm/mat3.h: + +/usr/include/bits/floatn-common.h: + +include/cglm/mat2.h: + +include/cglm/simd/sse2/mat2.h: + +/usr/include/bits/types/__fpos64_t.h: + +include/cglm/affine-mat.h: + +/usr/include/stdlib.h: + +include/cglm/call/vec2.h: + +src/curve.c: + +include/cglm/clipspace/persp.h: + +include/cglm/clipspace/ortho_rh_no.h: + +/usr/include/bits/types/struct_FILE.h: + +include/cglm/clipspace/persp_rh_no.h: + +include/cglm/call/clipspace/ortho_rh_zo.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/types/time_t.h: + +include/cglm/clipspace/view_rh.h: + +src/sphere.c: + +include/cglm/quat.h: + +include/cglm/call/clipspace/project_no.h: + +/usr/include/bits/fp-fast.h: + +include/cglm/box.h: + +src/clipspace/ortho_rh_no.c: + +include/cglm/color.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/types/__mbstate_t.h: + +/usr/include/bits/flt-eval-method.h: + +include/cglm/call/ivec2.h: + +/usr/include/bits/types/FILE.h: + +include/cglm/call/clipspace/persp_lh_no.h: + +/usr/include/bits/types/timer_t.h: + +include/cglm/sphere.h: + +include/cglm/project.h: + +include/cglm/call/clipspace/view_rh_zo.h: + +/usr/include/bits/mathcalls-helper-functions.h: + +include/cglm/ease.h: + +include/cglm/ray.h: + +include/cglm/affine2d.h: + +include/cglm/call/vec3.h: + +include/cglm/call/vec4.h: diff --git a/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.ts b/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.ts new file mode 100644 index 0000000..918805c --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for cglm. diff --git a/lib/cglm/CMakeFiles/cglm.dir/depend.make b/lib/cglm/CMakeFiles/cglm.dir/depend.make new file mode 100644 index 0000000..374cbb7 --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for cglm. +# This may be replaced when dependencies are built. diff --git a/lib/cglm/CMakeFiles/cglm.dir/flags.make b/lib/cglm/CMakeFiles/cglm.dir/flags.make new file mode 100644 index 0000000..7b72512 --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.24 + +# compile C with /usr/bin/cc +C_DEFINES = -DCGLM_EXPORTS + +C_INCLUDES = -I/home/assam/git/junko-mpv/lib/cglm/include -I/home/assam/git/junko-mpv/lib/cglm/src + +C_FLAGS = -O3 -DNDEBUG -Wall -Werror -O3 -std=gnu11 + diff --git a/lib/cglm/CMakeFiles/cglm.dir/link.txt b/lib/cglm/CMakeFiles/cglm.dir/link.txt new file mode 100644 index 0000000..258b450 --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libcglm.a CMakeFiles/cglm.dir/src/euler.c.o CMakeFiles/cglm.dir/src/affine.c.o CMakeFiles/cglm.dir/src/io.c.o CMakeFiles/cglm.dir/src/quat.c.o CMakeFiles/cglm.dir/src/cam.c.o CMakeFiles/cglm.dir/src/vec2.c.o CMakeFiles/cglm.dir/src/ivec2.c.o CMakeFiles/cglm.dir/src/vec3.c.o CMakeFiles/cglm.dir/src/ivec3.c.o CMakeFiles/cglm.dir/src/vec4.c.o CMakeFiles/cglm.dir/src/ivec4.c.o CMakeFiles/cglm.dir/src/mat2.c.o CMakeFiles/cglm.dir/src/mat3.c.o CMakeFiles/cglm.dir/src/mat4.c.o CMakeFiles/cglm.dir/src/plane.c.o CMakeFiles/cglm.dir/src/frustum.c.o CMakeFiles/cglm.dir/src/box.c.o CMakeFiles/cglm.dir/src/project.c.o CMakeFiles/cglm.dir/src/sphere.c.o CMakeFiles/cglm.dir/src/ease.c.o CMakeFiles/cglm.dir/src/curve.c.o CMakeFiles/cglm.dir/src/bezier.c.o CMakeFiles/cglm.dir/src/ray.c.o CMakeFiles/cglm.dir/src/affine2d.c.o CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.o CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.o CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.o CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.o CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.o CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.o CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.o CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.o CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.o CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.o CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.o CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.o CMakeFiles/cglm.dir/src/clipspace/project_no.c.o CMakeFiles/cglm.dir/src/clipspace/project_zo.c.o +/usr/bin/ranlib libcglm.a diff --git a/lib/cglm/CMakeFiles/cglm.dir/progress.make b/lib/cglm/CMakeFiles/cglm.dir/progress.make new file mode 100644 index 0000000..e577891 --- /dev/null +++ b/lib/cglm/CMakeFiles/cglm.dir/progress.make @@ -0,0 +1,40 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 +CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 +CMAKE_PROGRESS_5 = 5 +CMAKE_PROGRESS_6 = 6 +CMAKE_PROGRESS_7 = 7 +CMAKE_PROGRESS_8 = 8 +CMAKE_PROGRESS_9 = 9 +CMAKE_PROGRESS_10 = 10 +CMAKE_PROGRESS_11 = 11 +CMAKE_PROGRESS_12 = 12 +CMAKE_PROGRESS_13 = 13 +CMAKE_PROGRESS_14 = 14 +CMAKE_PROGRESS_15 = 15 +CMAKE_PROGRESS_16 = 16 +CMAKE_PROGRESS_17 = 17 +CMAKE_PROGRESS_18 = 18 +CMAKE_PROGRESS_19 = 19 +CMAKE_PROGRESS_20 = 20 +CMAKE_PROGRESS_21 = 21 +CMAKE_PROGRESS_22 = 22 +CMAKE_PROGRESS_23 = 23 +CMAKE_PROGRESS_24 = 24 +CMAKE_PROGRESS_25 = 25 +CMAKE_PROGRESS_26 = 26 +CMAKE_PROGRESS_27 = 27 +CMAKE_PROGRESS_28 = 28 +CMAKE_PROGRESS_29 = 29 +CMAKE_PROGRESS_30 = 30 +CMAKE_PROGRESS_31 = 31 +CMAKE_PROGRESS_32 = 32 +CMAKE_PROGRESS_33 = 33 +CMAKE_PROGRESS_34 = 34 +CMAKE_PROGRESS_35 = 35 +CMAKE_PROGRESS_36 = 36 +CMAKE_PROGRESS_37 = 37 +CMAKE_PROGRESS_38 = 38 +CMAKE_PROGRESS_39 = 39 + diff --git a/lib/cglm/CMakeFiles/cmake.check_cache b/lib/cglm/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/lib/cglm/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/lib/cglm/CMakeFiles/progress.marks b/lib/cglm/CMakeFiles/progress.marks new file mode 100644 index 0000000..a272009 --- /dev/null +++ b/lib/cglm/CMakeFiles/progress.marks @@ -0,0 +1 @@ +39 diff --git a/lib/cglm/CMakeLists.txt b/lib/cglm/CMakeLists.txt new file mode 100644 index 0000000..f8fcba1 --- /dev/null +++ b/lib/cglm/CMakeLists.txt @@ -0,0 +1,163 @@ +cmake_minimum_required(VERSION 3.8.2) +project(cglm + VERSION 0.8.7 + HOMEPAGE_URL https://github.com/recp/cglm + DESCRIPTION "OpenGL Mathematics (glm) for C" + LANGUAGES C +) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED YES) +set(DEFAULT_BUILD_TYPE "Release") + +set(CGLM_BUILD) +option(CGLM_SHARED "Shared build" ON) +option(CGLM_STATIC "Static build" OFF) +option(CGLM_USE_C99 "" OFF) +option(CGLM_USE_TEST "Enable Tests" OFF) + +if(NOT CGLM_STATIC AND CGLM_SHARED) + set(CGLM_BUILD SHARED) +else(CGLM_STATIC) + set(CGLM_BUILD STATIC) +endif() + +if(CGLM_USE_C99) + set(CMAKE_C_STANDARD 99) +endif() + +if(MSVC) + add_definitions(-DNDEBUG -D_WINDOWS -D_USRDLL) + add_compile_options(/W3 /Ox /Gy /Oi /TC) + + # Ref: https://skia.googlesource.com/third_party/sdl/+/refs/heads/master/CMakeLists.txt#225 + # Make sure /RTC1 is disabled, otherwise it will use functions from the CRT + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) + string(REGEX REPLACE "/RTC(su|[1su])" "" ${flag_var} "${${flag_var}}") + endforeach(flag_var) +else() + add_compile_options(-Wall -Werror -O3) +endif() + +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.") + set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING "Choose the type of build." FORCE) + # Set the possible values of build type for cmake-gui + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") +endif() + +include(GNUInstallDirs) + +set(CPACK_PROJECT_NAME ${PROJECT_NAME}) +set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) + +if(NOT CPack_CMake_INCLUDED) + include(CPack) +endif() + +# Target Start +add_library(${PROJECT_NAME} + ${CGLM_BUILD} + src/euler.c + src/affine.c + src/io.c + src/quat.c + src/cam.c + src/vec2.c + src/ivec2.c + src/vec3.c + src/ivec3.c + src/vec4.c + src/ivec4.c + src/mat2.c + src/mat3.c + src/mat4.c + src/plane.c + src/frustum.c + src/box.c + src/project.c + src/sphere.c + src/ease.c + src/curve.c + src/bezier.c + src/ray.c + src/affine2d.c + src/clipspace/ortho_lh_no.c + src/clipspace/ortho_lh_zo.c + src/clipspace/ortho_rh_no.c + src/clipspace/ortho_rh_zo.c + src/clipspace/persp_lh_no.c + src/clipspace/persp_lh_zo.c + src/clipspace/persp_rh_no.c + src/clipspace/persp_rh_zo.c + src/clipspace/view_lh_no.c + src/clipspace/view_lh_zo.c + src/clipspace/view_rh_no.c + src/clipspace/view_rh_zo.c + src/clipspace/project_no.c + src/clipspace/project_zo.c + ) + +if(CGLM_SHARED) + add_definitions(-DCGLM_EXPORTS) +else() + target_compile_definitions(${PROJECT_NAME} PUBLIC -DCGLM_STATIC) +endif() + +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR}) + +if(WIN32) + # Because SOVERSION has no effect to file naming on Windows + set_target_properties(${PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_NAME ${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}) +endif() + +target_include_directories(${PROJECT_NAME} + PUBLIC + $ + $ + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src +) + +# Target for header-only usage +add_library(${PROJECT_NAME}_headers INTERFACE) +target_include_directories(${PROJECT_NAME}_headers INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/include) + +# Test Configuration +if(CGLM_USE_TEST) + include(CTest) + enable_testing() + add_subdirectory(test) +endif() + +# Install +install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +install(DIRECTORY include/${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PATTERN ".*" EXCLUDE) + +# Config +export(TARGETS ${PROJECT_NAME} + NAMESPACE ${PROJECT_NAME}:: + FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" +) + +install(EXPORT ${PROJECT_NAME} + FILE "${PROJECT_NAME}Config.cmake" + NAMESPACE ${PROJECT_NAME}:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + +configure_file(cglm.pc.in cglm.pc @ONLY) + +install(FILES ${CMAKE_BINARY_DIR}/cglm.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) diff --git a/lib/cglm/CONTRIBUTING.md b/lib/cglm/CONTRIBUTING.md new file mode 100644 index 0000000..f25a6ab --- /dev/null +++ b/lib/cglm/CONTRIBUTING.md @@ -0,0 +1,53 @@ +# CONTRIBUTING + +Any contributions (code, documentation, ...) are welcome. + +# New Features +- This library may not accept all new features, it is better to create an issue and get approval before coding +- You must add test for every new feature +- The feature must be compiled on both UNIX/POSIX systems (e.g. macos, linux...) and Windows + +# Code Style +This library is written with C99, don't try to add C++ files (yes it can compiled into lib), +if you have enough reason to add C++ files than create an issue and get approval before coding, + +- All functions must have `glm` prefix +- Lines should be wrapped at 80 characters. +- Don't invent new style for existing ones +- Use C89 style comments (`/* comments */`) not C++ style comments (`// comments`) +- Don't use TABs instead use 2 spaces for TABs +- All indents must be 2 spaces, not 1 nor 4 space +- All functions in `include` folder must be exported by `CGLM_EXPORT` and wrapped by `extern "C" {` for C++ +- Crate new line for return type, attribs: + +```C +CGLM_INLINE +void +glm_mul(mat4 m1, mat4 m2, mat4 dest) +``` + +not acceptable: + +```C +CGLM_INLINE void glm_mul(mat4 m1, mat4 m2, mat4 dest) +``` +- Variables must be declared at the top of a scope before usage: +```C +int x; +int y; + +x = y = 0; +``` + +not acceptable: + +```C +int x; + +x = 0; +int y = 0; +``` + +- All files must retain same LICENSE statement +- Code with warnings will not be accepted, please suppress them (not by disabling them) +- Run code anaylysis before submitting pull requests, if you use Xcode you can enable Sanitizer in scheme, you can use valgrind in linux diff --git a/lib/cglm/CPackConfig.cmake b/lib/cglm/CPackConfig.cmake new file mode 100644 index 0000000..c8c6e6c --- /dev/null +++ b/lib/cglm/CPackConfig.cmake @@ -0,0 +1,80 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_DEB "OFF") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BUILD_SOURCE_DIRS "/home/assam/git/junko-mpv/lib/cglm;/home/assam/git/junko-mpv/lib/cglm") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENTS_ALL "") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/share/cmake/Templates/CPack.GenericDescription.txt") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "cglm built using CMake") +set(CPACK_GENERATOR "STGZ;TGZ;TZ") +set(CPACK_INSTALL_CMAKE_PROJECTS "/home/assam/git/junko-mpv/lib/cglm;cglm;ALL;/") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "") +set(CPACK_NSIS_DISPLAY_NAME "cglm 0.8.7") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "cglm 0.8.7") +set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") +set(CPACK_OUTPUT_CONFIG_FILE "/home/assam/git/junko-mpv/lib/cglm/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/usr/share/cmake/Templates/CPack.GenericDescription.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenGL Mathematics (glm) for C") +set(CPACK_PACKAGE_FILE_NAME "cglm-0.8.7-Linux") +set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/recp/cglm") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "cglm 0.8.7") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "cglm 0.8.7") +set(CPACK_PACKAGE_NAME "cglm") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_PACKAGE_VERSION "0.8.7") +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "8") +set(CPACK_PACKAGE_VERSION_PATCH "7") +set(CPACK_PROJECT_NAME "cglm") +set(CPACK_PROJECT_VERSION "0.8.7") +set(CPACK_RESOURCE_FILE_LICENSE "/usr/share/cmake/Templates/CPack.GenericLicense.txt") +set(CPACK_RESOURCE_FILE_README "/usr/share/cmake/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/share/cmake/Templates/CPack.GenericWelcome.txt") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/assam/git/junko-mpv/lib/cglm/CPackSourceConfig.cmake") +set(CPACK_SOURCE_RPM "OFF") +set(CPACK_SOURCE_TBZ2 "ON") +set(CPACK_SOURCE_TGZ "ON") +set(CPACK_SOURCE_TXZ "ON") +set(CPACK_SOURCE_TZ "ON") +set(CPACK_SOURCE_ZIP "OFF") +set(CPACK_SYSTEM_NAME "Linux") +set(CPACK_THREADS "1") +set(CPACK_TOPLEVEL_TAG "Linux") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/home/assam/git/junko-mpv/lib/cglm/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/lib/cglm/CPackSourceConfig.cmake b/lib/cglm/CPackSourceConfig.cmake new file mode 100644 index 0000000..1bfc203 --- /dev/null +++ b/lib/cglm/CPackSourceConfig.cmake @@ -0,0 +1,88 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_DEB "OFF") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BUILD_SOURCE_DIRS "/home/assam/git/junko-mpv/lib/cglm;/home/assam/git/junko-mpv/lib/cglm") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENTS_ALL "") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/share/cmake/Templates/CPack.GenericDescription.txt") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "cglm built using CMake") +set(CPACK_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_IGNORE_FILES "/CVS/;/\\.svn/;/\\.bzr/;/\\.hg/;/\\.git/;\\.swp\$;\\.#;/#") +set(CPACK_INSTALLED_DIRECTORIES "/home/assam/git/junko-mpv/lib/cglm;/") +set(CPACK_INSTALL_CMAKE_PROJECTS "") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "") +set(CPACK_NSIS_DISPLAY_NAME "cglm 0.8.7") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "cglm 0.8.7") +set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") +set(CPACK_OUTPUT_CONFIG_FILE "/home/assam/git/junko-mpv/lib/cglm/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/usr/share/cmake/Templates/CPack.GenericDescription.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenGL Mathematics (glm) for C") +set(CPACK_PACKAGE_FILE_NAME "cglm-0.8.7-Source") +set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/recp/cglm") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "cglm 0.8.7") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "cglm 0.8.7") +set(CPACK_PACKAGE_NAME "cglm") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_PACKAGE_VERSION "0.8.7") +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "8") +set(CPACK_PACKAGE_VERSION_PATCH "7") +set(CPACK_PROJECT_NAME "cglm") +set(CPACK_PROJECT_VERSION "0.8.7") +set(CPACK_RESOURCE_FILE_LICENSE "/usr/share/cmake/Templates/CPack.GenericLicense.txt") +set(CPACK_RESOURCE_FILE_README "/usr/share/cmake/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/share/cmake/Templates/CPack.GenericWelcome.txt") +set(CPACK_RPM_PACKAGE_SOURCES "ON") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_SOURCE_IGNORE_FILES "/CVS/;/\\.svn/;/\\.bzr/;/\\.hg/;/\\.git/;\\.swp\$;\\.#;/#") +set(CPACK_SOURCE_INSTALLED_DIRECTORIES "/home/assam/git/junko-mpv/lib/cglm;/") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/assam/git/junko-mpv/lib/cglm/CPackSourceConfig.cmake") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "cglm-0.8.7-Source") +set(CPACK_SOURCE_RPM "OFF") +set(CPACK_SOURCE_TBZ2 "ON") +set(CPACK_SOURCE_TGZ "ON") +set(CPACK_SOURCE_TOPLEVEL_TAG "Linux-Source") +set(CPACK_SOURCE_TXZ "ON") +set(CPACK_SOURCE_TZ "ON") +set(CPACK_SOURCE_ZIP "OFF") +set(CPACK_STRIP_FILES "") +set(CPACK_SYSTEM_NAME "Linux") +set(CPACK_THREADS "1") +set(CPACK_TOPLEVEL_TAG "Linux-Source") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/home/assam/git/junko-mpv/lib/cglm/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/lib/cglm/CREDITS b/lib/cglm/CREDITS new file mode 100644 index 0000000..00cc832 --- /dev/null +++ b/lib/cglm/CREDITS @@ -0,0 +1,84 @@ +This library [initially] used some [piece of] implementations +(may include codes) from these open source projects/resources: + +1. Initial Affine Transforms +The original glm repo (g-truc), url: https://github.com/g-truc/glm + +LICENSE[S]: + The Happy Bunny License (Modified MIT License) + The MIT License + Copyright (c) 2005 - 2016 G-Truc Creation + +FULL LICENSE: https://github.com/g-truc/glm/blob/master/copying.txt + +2. Initial Quaternions +Anton's OpenGL 4 Tutorials book source code: + +LICENSE: + OpenGL 4 Example Code. + Accompanies written series "Anton's OpenGL 4 Tutorials" + Email: anton at antongerdelan dot net + First version 27 Jan 2014 + Copyright Dr Anton Gerdelan, Trinity College Dublin, Ireland. + +3. Euler Angles + David Eberly + Geometric Tools, LLC http://www.geometrictools.com/ + Copyright (c) 1998-2016. All Rights Reserved. + + Computing Euler angles from a rotation matrix (euler.pdf) + Gregory G. Slabaugh + +4. Extracting Planes +Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix +Authors: + Gil Gribb (ggribb@ravensoft.com) + Klaus Hartmann (k_hartmann@osnabrueck.netsurf.de) + +5. Transform AABB +Transform Axis Aligned Bounding Boxes: +http://dev.theomader.com/transform-bounding-boxes/ +https://github.com/erich666/GraphicsGems/blob/master/gems/TransBox.c + +6. Cull frustum +http://www.txutxi.com/?p=584 +http://old.cescg.org/CESCG-2002/DSykoraJJelinek/ + +7. Quaternions +Initial mat4_quat is borrowed from Apple's simd library + +8. Vector Rotation using Quaternion +https://gamedev.stackexchange.com/questions/28395/rotating-vector3-by-a-quaternion + +9. Sphere AABB intersect +https://github.com/erich666/GraphicsGems/blob/master/gems/BoxSphere.c + +10. Horizontal add +https://stackoverflow.com/questions/6996764/fastest-way-to-do-horizontal-float-vector-sum-on-x86 + +11. de casteljau implementation and comments +https://forums.khronos.org/showthread.php/10264-Animations-in-1-4-1-release-notes-revision-A/page2?highlight=bezier +https://forums.khronos.org/showthread.php/10644-Animation-Bezier-interpolation +https://forums.khronos.org/showthread.php/10387-2D-Tangents-in-Bezier-Splines?p=34164&viewfull=1#post34164 +https://forums.khronos.org/showthread.php/10651-Animation-TCB-Spline-Interpolation-in-COLLADA?highlight=bezier + +12. vec2 cross product +http://allenchou.net/2013/07/cross-product-of-2d-vectors/ + +13. Ray triangle intersect +Möller–Trumbore ray-triangle intersection algorithm, from "Fast, Minimum Storage Ray/Triangle Intersection" +Authors: + Thomas Möller (tompa@clarus.se) + Ben Trumbore (wbt@graphics.cornell.edu) +Link to paper: http://webserver2.tecgraf.puc-rio.br/~mgattass/cg/trbRR/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf + +14. ARM NEON: Matrix Vector Multiplication +https://stackoverflow.com/a/57793352/2676533 + +16. ARM NEON Div + +http://github.com/microsoft/DirectXMath + +17. Pick Matrix + +glu project -> project.c diff --git a/lib/cglm/LICENSE b/lib/cglm/LICENSE new file mode 100644 index 0000000..c92e559 --- /dev/null +++ b/lib/cglm/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Recep Aslantas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/lib/cglm/Makefile.am b/lib/cglm/Makefile.am new file mode 100644 index 0000000..7776cb9 --- /dev/null +++ b/lib/cglm/Makefile.am @@ -0,0 +1,265 @@ +#****************************************************************************** +# Copyright (c), Recep Aslantas. * +# * +# MIT License (MIT), http://opensource.org/licenses/MIT * +# Full license can be found in the LICENSE file * +# * +#****************************************************************************** + +ACLOCAL_AMFLAGS = -I m4 +AM_CFLAGS = -Wall \ + -std=gnu11 \ + -O3 \ + -Wstrict-aliasing=2 \ + -fstrict-aliasing \ + -Werror=strict-prototypes + +lib_LTLIBRARIES = libcglm.la +libcglm_la_LDFLAGS = -no-undefined -version-info 0:1:0 + +checkLDFLAGS = -L./.libs \ + -lm \ + -lcglm +checkCFLAGS = $(AM_CFLAGS) \ + -std=gnu11 \ + -O3 \ + -DCGLM_DEFINE_PRINTS \ + -I./include + +check_PROGRAMS = test/tests +TESTS = $(check_PROGRAMS) + +test_tests_LDFLAGS = $(checkLDFLAGS) +test_tests_CFLAGS = $(checkCFLAGS) + +cglmdir=$(includedir)/cglm +cglm_HEADERS = include/cglm/version.h \ + include/cglm/common.h \ + include/cglm/types.h \ + include/cglm/types-struct.h \ + include/cglm/cglm.h \ + include/cglm/call.h \ + include/cglm/struct.h \ + include/cglm/cam.h \ + include/cglm/io.h \ + include/cglm/mat4.h \ + include/cglm/mat3.h \ + include/cglm/mat2.h \ + include/cglm/affine-pre.h \ + include/cglm/affine-post.h \ + include/cglm/affine.h \ + include/cglm/affine-mat.h \ + include/cglm/vec2.h \ + include/cglm/vec2-ext.h \ + include/cglm/ivec2.h \ + include/cglm/vec3.h \ + include/cglm/vec3-ext.h \ + include/cglm/ivec3.h \ + include/cglm/vec4.h \ + include/cglm/vec4-ext.h \ + include/cglm/ivec4.h \ + include/cglm/euler.h \ + include/cglm/util.h \ + include/cglm/quat.h \ + include/cglm/plane.h \ + include/cglm/frustum.h \ + include/cglm/box.h \ + include/cglm/color.h \ + include/cglm/project.h \ + include/cglm/sphere.h \ + include/cglm/ease.h \ + include/cglm/curve.h \ + include/cglm/bezier.h \ + include/cglm/applesimd.h \ + include/cglm/ray.h \ + include/cglm/affine2d.h + +cglm_clipspacedir=$(includedir)/cglm/clipspace +cglm_clipspace_HEADERS = include/cglm/clipspace/persp.h \ + include/cglm/clipspace/persp_lh_no.h \ + include/cglm/clipspace/persp_lh_zo.h \ + include/cglm/clipspace/persp_rh_no.h \ + include/cglm/clipspace/persp_rh_zo.h \ + include/cglm/clipspace/ortho_lh_no.h \ + include/cglm/clipspace/ortho_lh_zo.h \ + include/cglm/clipspace/ortho_rh_no.h \ + include/cglm/clipspace/ortho_rh_zo.h \ + include/cglm/clipspace/view_lh.h \ + include/cglm/clipspace/view_rh.h \ + include/cglm/clipspace/view_lh_no.h \ + include/cglm/clipspace/view_lh_zo.h \ + include/cglm/clipspace/view_rh_no.h \ + include/cglm/clipspace/view_rh_zo.h \ + include/cglm/clipspace/project_no.h \ + include/cglm/clipspace/project_zo.h + +cglm_calldir=$(includedir)/cglm/call +cglm_call_HEADERS = include/cglm/call/mat4.h \ + include/cglm/call/mat3.h \ + include/cglm/call/mat2.h \ + include/cglm/call/vec2.h \ + include/cglm/call/vec3.h \ + include/cglm/call/vec4.h \ + include/cglm/call/ivec2.h \ + include/cglm/call/ivec3.h \ + include/cglm/call/ivec4.h \ + include/cglm/call/io.h \ + include/cglm/call/cam.h \ + include/cglm/call/quat.h \ + include/cglm/call/euler.h \ + include/cglm/call/plane.h \ + include/cglm/call/frustum.h \ + include/cglm/call/box.h \ + include/cglm/call/project.h \ + include/cglm/call/sphere.h \ + include/cglm/call/ease.h \ + include/cglm/call/curve.h \ + include/cglm/call/bezier.h \ + include/cglm/call/ray.h \ + include/cglm/call/affine.h \ + include/cglm/call/affine2d.h + +cglm_call_clipspacedir=$(includedir)/cglm/call/clipspace +cglm_call_clipspace_HEADERS = include/cglm/call/clipspace/persp_lh_no.h \ + include/cglm/call/clipspace/persp_lh_zo.h \ + include/cglm/call/clipspace/persp_rh_no.h \ + include/cglm/call/clipspace/persp_rh_zo.h \ + include/cglm/call/clipspace/ortho_lh_no.h \ + include/cglm/call/clipspace/ortho_lh_zo.h \ + include/cglm/call/clipspace/ortho_rh_no.h \ + include/cglm/call/clipspace/ortho_rh_zo.h \ + include/cglm/call/clipspace/view_lh_no.h \ + include/cglm/call/clipspace/view_lh_zo.h \ + include/cglm/call/clipspace/view_rh_no.h \ + include/cglm/call/clipspace/view_rh_zo.h \ + include/cglm/call/clipspace/project_no.h \ + include/cglm/call/clipspace/project_zo.h + +cglm_simddir=$(includedir)/cglm/simd +cglm_simd_HEADERS = include/cglm/simd/intrin.h \ + include/cglm/simd/x86.h \ + include/cglm/simd/arm.h + +cglm_simd_sse2dir=$(includedir)/cglm/simd/sse2 +cglm_simd_sse2_HEADERS = include/cglm/simd/sse2/affine.h \ + include/cglm/simd/sse2/mat4.h \ + include/cglm/simd/sse2/mat3.h \ + include/cglm/simd/sse2/mat2.h \ + include/cglm/simd/sse2/quat.h + +cglm_simd_avxdir=$(includedir)/cglm/simd/avx +cglm_simd_avx_HEADERS = include/cglm/simd/avx/mat4.h \ + include/cglm/simd/avx/affine.h + +cglm_simd_neondir=$(includedir)/cglm/simd/neon +cglm_simd_neon_HEADERS = include/cglm/simd/neon/affine.h \ + include/cglm/simd/neon/mat2.h \ + include/cglm/simd/neon/mat4.h \ + include/cglm/simd/neon/quat.h + +cglm_structdir=$(includedir)/cglm/struct +cglm_struct_HEADERS = include/cglm/struct/mat4.h \ + include/cglm/struct/mat3.h \ + include/cglm/struct/mat2.h \ + include/cglm/struct/affine-pre.h \ + include/cglm/struct/affine-post.h \ + include/cglm/struct/affine.h \ + include/cglm/struct/affine2d.h \ + include/cglm/struct/vec2.h \ + include/cglm/struct/vec2-ext.h \ + include/cglm/struct/vec3.h \ + include/cglm/struct/vec3-ext.h \ + include/cglm/struct/vec4.h \ + include/cglm/struct/vec4-ext.h \ + include/cglm/struct/io.h \ + include/cglm/struct/cam.h \ + include/cglm/struct/quat.h \ + include/cglm/struct/euler.h \ + include/cglm/struct/plane.h \ + include/cglm/struct/frustum.h \ + include/cglm/struct/box.h \ + include/cglm/struct/project.h \ + include/cglm/struct/sphere.h \ + include/cglm/struct/color.h \ + include/cglm/struct/curve.h + +cglm_struct_clipspacedir=$(includedir)/cglm/struct/clipspace +cglm_struct_clipspace_HEADERS = include/cglm/struct/clipspace/persp_lh_no.h \ + include/cglm/struct/clipspace/persp_lh_zo.h \ + include/cglm/struct/clipspace/persp_rh_no.h \ + include/cglm/struct/clipspace/persp_rh_zo.h \ + include/cglm/struct/clipspace/ortho_lh_no.h \ + include/cglm/struct/clipspace/ortho_lh_zo.h \ + include/cglm/struct/clipspace/ortho_rh_no.h \ + include/cglm/struct/clipspace/ortho_rh_zo.h \ + include/cglm/struct/clipspace/view_lh_no.h \ + include/cglm/struct/clipspace/view_lh_zo.h \ + include/cglm/struct/clipspace/view_rh_no.h \ + include/cglm/struct/clipspace/view_rh_zo.h \ + include/cglm/struct/clipspace/project_no.h \ + include/cglm/struct/clipspace/project_zo.h + +libcglm_la_SOURCES=\ + src/euler.c \ + src/affine.c \ + src/io.c \ + src/quat.c \ + src/cam.c \ + src/vec2.c \ + src/ivec2.c \ + src/vec3.c \ + src/ivec3.c \ + src/vec4.c \ + src/ivec4.c \ + src/mat2.c \ + src/mat3.c \ + src/mat4.c \ + src/plane.c \ + src/frustum.c \ + src/box.c \ + src/project.c \ + src/sphere.c \ + src/ease.c \ + src/curve.c \ + src/bezier.c \ + src/ray.c \ + src/affine2d.c \ + src/clipspace/ortho_lh_no.c \ + src/clipspace/ortho_lh_zo.c \ + src/clipspace/ortho_rh_no.c \ + src/clipspace/ortho_rh_zo.c \ + src/clipspace/persp_lh_no.c \ + src/clipspace/persp_lh_zo.c \ + src/clipspace/persp_rh_no.c \ + src/clipspace/persp_rh_zo.c \ + src/clipspace/view_lh_no.c \ + src/clipspace/view_lh_zo.c \ + src/clipspace/view_rh_no.c \ + src/clipspace/view_rh_zo.c \ + src/clipspace/project_no.c \ + src/clipspace/project_zo.c + +test_tests_SOURCES=\ + test/runner.c \ + test/src/test_common.c \ + test/src/tests.c \ + test/src/test_cam.c \ + test/src/test_cam_lh_zo.c \ + test/src/test_cam_rh_zo.c \ + test/src/test_cam_lh_no.c \ + test/src/test_cam_rh_no.c \ + test/src/test_clamp.c \ + test/src/test_euler.c \ + test/src/test_bezier.c \ + test/src/test_struct.c + +pkgconfig_DATA=cglm.pc + +# When running configure with --prefix, $VPATH references +# the source directory that post-build.sh is in. When not +# using a prefix, $VPATH will be unset, so we need to fall +# back to using . to run the script. +#export VPATH + +# all-local: +# sh $${VPATH:-.}/post-build.sh diff --git a/lib/cglm/Package.swift b/lib/cglm/Package.swift new file mode 100644 index 0000000..ac0f7e4 --- /dev/null +++ b/lib/cglm/Package.swift @@ -0,0 +1,44 @@ +// swift-tools-version:5.2 + +import PackageDescription + +let package = Package( + name: "cglm", + products: [ + .library(name: "cglm", type: .static, targets: ["cglmHeader"]), + .library(name: "cglmc", targets: ["cglmCompiled"]), + ], + dependencies: [], + targets: [ + .target( + name: "cglmCompiled", + path: "./", + exclude: [ + "./docs", + "./src/swift", + "./include", + "./test", + "./win", + ], + sources: [ + "./src", + ], + publicHeadersPath: "./include" + ), + .target( + name: "cglmHeader", + path: "./", + exclude: [ + "./docs", + "./include", + "./test", + "./win", + ], + sources: [ + "./src/swift", + ], + publicHeadersPath: "./include" + ), + ], + cLanguageStandard: .c11 +) diff --git a/lib/cglm/README.md b/lib/cglm/README.md new file mode 100644 index 0000000..385c9a3 --- /dev/null +++ b/lib/cglm/README.md @@ -0,0 +1,475 @@ +# 🎥 OpenGL Mathematics (glm) for `C` + +

+ +

+
+

+ + Build Status + + + Windows Build Status + + + Documentation Status + + + Codacy Badge + + + Coverage Status + + + Coverage Status + +

+ + Sponsors on Open Collective + + + Backers on Open Collective + +

+ +
+ +

+Highly optimized 2D|3D math library, also known as OpenGL Mathematics (glm) for `C`. cglm provides lot of utils to help math operations to be fast and quick to write. It is community friendly, feel free to bring any issues, bugs you faced. +

+ +--- + +#### 📚 Documentation + +Almost all functions (inline versions) and parameters are documented inside the corresponding headers.
+Complete documentation: http://cglm.readthedocs.io + +#### 📌 Note for previous versions: + +- _dup (duplicate) is changed to _copy. For instance `glm_vec_dup -> glm_vec3_copy` +- OpenGL related functions are dropped to make this lib platform/third-party independent +- make sure you have latest version and feel free to report bugs, troubles +- **[bugfix]** euler angles was implemented in reverse order (extrinsic) it was fixed, now they are intrinsic. Make sure that +you have the latest version +- **[major change]** by starting v0.4.0, quaternions are stored as [x, y, z, w], it was [w, x, y, z] in v0.3.5 and earlier versions +- **[api rename]** by starting v0.4.5, **glm_simd** functions are renamed to **glmm_** +- **[new option]** by starting v0.4.5, you can disable alignment requirement, check options in docs. +- **[major change]** by starting v0.5.0, vec3 functions use **glm_vec3_** namespace, it was **glm_vec_** until v0.5.0 +- **[major change]** by starting v0.5.1, built-in alignment is removed from **vec3** and **mat3** types +- **[major change]** by starting v0.7.3, inline print functions are disabled in release/production mode to eliminate print costs (see options in documentation). Print output also improved. You can disable colors if you need (see documentation) +- **[major change]** by starting v0.8.3, **cglm** supports alternative clipspace configuations e.g. Left Handed, Zero-to-One (_zo)... `CGLM_FORCE_DEPTH_ZERO_TO_ONE` and `CGLM_FORCE_LEFT_HANDED` is provided to control clipspace. You should be able to use **cglm** with Vulkan, DirectX and Metal now... see https://cglm.readthedocs.io/en/latest/opt.html#clipspace-option-s + +#### 📌 Note for C++ developers: +If you are not aware of the original GLM library yet, you may also want to look at: +https://github.com/g-truc/glm + +#### 📌 Note for new comers (Important): +- `vec4` and `mat4` variables must be aligned. (There will be unaligned versions later) +- **in** and **[in, out]** parameters must be initialized (please). But **[out]** parameters not, initializing out param is also redundant +- All functions are inline if you don't want to use pre-compiled versions with glmc_ prefix, you can ignore build process. Just include headers. +- if your debugger takes you to cglm headers then make sure you are not trying to copy vec4 to vec3 or alig issues... +- Welcome! + +#### 📌 Note for experienced developers: +- Since I'm testing this library in my projects, sometimes bugs occurs; finding that bug[s] and making improvements would be more easy with multiple developer/contributor and their projects or knowledge. Consider to make some tests if you suspect something is wrong and any feedbacks, contributions and bug reports are always welcome. + +#### 📌 Allocations? +`cglm` doesn't alloc any memory on heap. So it doesn't provide any allocator. You should alloc memory for **out** parameters too if you pass pointer of memory location. Don't forget that **vec4** (also quat/**versor**) and **mat4** must be aligned (16-bytes), because *cglm* uses SIMD instructions to optimize most operations if available. + +#### 📌 Returning vector or matrix... ? + +**cglm** supports both *ARRAY API* and *STRUCT API*, so you can return structs if you utilize struct api (`glms_`). + +
+ + + + + + + + +
+
Like some other graphics libraries (especially OpenGL) this library use Column-Major layout to keep matrices in the memory.
+
 
+
In the future the library may support an option to use row-major layout, CURRENTLY if you need to row-major layout you will need to transpose it.
+
+ +
+ +## 🚀 Features +- **scalar** and **simd** (sse, avx, neon...) optimizations +- option to use different clipspaces e.g. Left Handed, Zero-to-One... (currrently right handed negative-one is default) +- array api and struct api, you can use arrays or structs. +- general purpose matrix operations (mat4, mat3) +- chain matrix multiplication (square only) +- general purpose vector operations (cross, dot, rotate, proj, angle...) +- affine transformations +- matrix decomposition (extract rotation, scaling factor) +- optimized affine transform matrices (mul, rigid-body inverse) +- camera (lookat) +- projections (ortho, perspective) +- quaternions +- euler angles / yaw-pitch-roll to matrix +- extract euler angles +- inline or pre-compiled function call +- frustum (extract view frustum planes, corners...) +- bounding box (AABB in Frustum (culling), crop, merge...) +- bounding sphere +- project, unproject +- easing functions +- curves +- curve interpolation helpers (S*M*C, deCasteljau...) +- helpers to convert cglm types to Apple's simd library to pass cglm types to Metal GL without packing them on both sides +- ray intersection helpers +- and others... + +
+ +You have two options to call a function/operation: inline or library call (link) +Almost all functions are marked inline (always_inline) so compiler will probably inline. +To call pre-compiled versions, just use `glmc_` (c stands for 'call') instead of `glm_`. + +```C + #include /* for inline */ + #include /* for library call (this also includes cglm.h) */ + + mat4 rot, trans, rt; + /* ... */ + glm_mul(trans, rot, rt); /* inline */ + glmc_mul(trans, rot, rt); /* call from library */ +``` +Most of math functions are optimized manualy with SSE2 if available, if not? Dont worry there are non-sse versions of all operations + +You can pass matrices and vectors as array to functions rather than get address. + +```C + mat4 m = { + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + }; + + glm_translate(m, (vec3){1.0f, 0.0f, 0.0f}); +``` + +Library contains general purpose mat4 mul and inverse functions, and also contains some special forms (optimized) of these functions for affine transformations' matrices. If you want to multiply two affine transformation matrices you can use glm_mul instead of glm_mat4_mul and glm_inv_tr (ROT + TR) instead glm_mat4_inv +```C +/* multiplication */ +mat4 modelMat; +glm_mul(T, R, modelMat); + +/* othonormal rot + tr matrix inverse (rigid-body) */ +glm_inv_tr(modelMat); +``` + +### Struct API + +The struct API works as follows, note the `s` suffix on types, the `glms_` prefix on functions and the `GLMS_` prefix on constants: + +```C +#include + +mat4s mat = GLMS_MAT4_IDENTITY_INIT; +mat4s inv = glms_mat4_inv(mat); +``` + +Struct functions generally take their parameters as *values* and *return* their results, rather than taking pointers and writing to out parameters. That means your parameters can usually be `const`, if you're into that. + +The types used are actually unions that allow access to the same data multiple ways. One of those ways involves anonymous structures, available since C11. MSVC also supports it for earlier C versions out of the box and GCC/Clang do if you enable `-fms-extensions`. To explicitly enable these anonymous structures, `#define CGLM_USE_ANONYMOUS_STRUCT` to `1`, to disable them, to `0`. For backward compatibility, you can also `#define CGLM_NO_ANONYMOUS_STRUCT` (value is irrelevant) to disable them. If you don't specify explicitly, cglm will do a best guess based on your compiler and the C version you're using. + +## 🔨 Build + +### CMake (All platforms) +```bash +$ mkdir build +$ cd build +$ cmake .. # [Optional] -DCGLM_SHARED=ON +$ make +$ sudo make install # [Optional] +``` + +##### Cmake options with Defaults: + +```CMake +option(CGLM_SHARED "Shared build" ON) +option(CGLM_STATIC "Static build" OFF) +option(CGLM_USE_C99 "" OFF) # C11 +option(CGLM_USE_TEST "Enable Tests" OFF) # for make check - make test +``` + +#### Use as header-only library with your CMake project + +This requires no building or installation of cglm. + +* Example: + +``` cmake +cmake_minimum_required(VERSION 3.8.2) + +project() + +add_executable(${PROJECT_NAME} src/main.c) +target_link_libraries(${LIBRARY_NAME} PRIVATE + cglm_headers) + +add_subdirectory(external/cglm/ EXCLUDE_FROM_ALL) +``` + +#### Use with your CMake project +* Example: +```cmake +cmake_minimum_required(VERSION 3.8.2) + +project() + +add_executable(${PROJECT_NAME} src/main.c) +target_link_libraries(${LIBRARY_NAME} PRIVATE + cglm) + +add_subdirectory(external/cglm/) + +# or you can use find_package to configure cglm +``` + +### Meson (All platforms) + +```bash +$ meson build # [Optional] --default-library=static +$ cd build +$ ninja +$ sudo ninja install # [Optional] +``` + +##### Meson options with Defaults: + +```meson +c_std=c11 +buildtype=release +default_library=shared +enable_tests=false # to run tests: ninja test +``` +#### Use with your Meson project +* Example: +```meson +# Clone cglm or create a cglm.wrap under /subprojects +project('name', 'c') + +cglm_dep = dependency('cglm', fallback : 'cglm', 'cglm_dep') + +executable('exe', 'src/main.c', dependencies : cglm_dep) +``` + +### Swift (Swift Package Manager) + +Currently only default build options are supported. Add **cglm** dependency to your project: + +```swift +... +Package( + ... + dependencies: [ + ... + .package(url: "https://github.com/recp/cglm", .branch("master")), + ] + ... +) +``` + +Now add **cgml** as a dependency to your target. Product choices are: +- **cglm** for inlined version of the library which can be linked only statically +- **cglmc** for a compiled version of the library with no linking limitation + +```swift +... +.target( + ... + dependencies: [ + ... + .product(name: "cglm", package: "cglm"), + ] + ... +) +... +``` + +### Unix (Autotools) + +```bash +$ sh autogen.sh +$ ./configure +$ make +$ make check # [Optional] +$ [sudo] make install # [Optional] +``` + +This will also install pkg-config files so you can use +`pkg-config --cflags cglm` and `pkg-config --libs cglm` to retrieve compiler +and linker flags. + +The files will be installed into the given prefix (usually `/usr/local` by +default on Linux), but your pkg-config may not be configured to actually check +there. You can figure out where it's looking by running `pkg-config --variable +pc_path pkg-config` and change the path the files are installed to via +`./configure --with-pkgconfigdir=/your/path`. Alternatively, you can add the +prefix path to your `PKG_CONFIG_PATH` environment variable. + +### Windows (MSBuild) +Windows related build file and project files are located in `win` folder, +make sure you are inside `cglm/win` folder. +Code Analysis is enabled, so it may take awhile to build. + +```Powershell +$ cd win +$ .\build.bat +``` +if `msbuild` won't work (because of multi version VS) then try to build with `devenv`: +```Powershell +$ devenv cglm.sln /Build Release +``` + +#### Running Tests on Windows + +You can see test project in same visual studio solution file. It is enough to run that project to run tests. + +### Building Docs +First you need install Sphinx: http://www.sphinx-doc.org/en/master/usage/installation.html +then: +```bash +$ cd docs +$ sphinx-build source build +``` +it will compile docs into build folder, you can run index.html inside that function. + +## How to use +If you want to use the inline versions of functions, then include the main header +```C +#include +``` +the header will include all headers. Then call the func you want e.g. rotate vector by axis: +```C +glm_vec3_rotate(v1, glm_rad(45), (vec3){1.0f, 0.0f, 0.0f}); +``` +some functions are overloaded :) e.g you can normalize vector: +```C +glm_vec3_normalize(vec); +``` +this will normalize vec and store normalized vector into `vec` but if you will store normalized vector into another vector do this: +```C +glm_vec3_normalize_to(vec, result); +``` +like this function you may see `_to` postfix, this functions store results to another variables and save temp memory + + +to call pre-compiled versions include header with `c` postfix, c means call. Pre-compiled versions are just wrappers. +```C +#include +``` +this header will include all headers with c postfix. You need to call functions with c posfix: +```C +glmc_vec3_normalize(vec); +``` + +Function usage and parameters are documented inside related headers. You may see same parameter passed twice in some examples like this: +```C +glm_mat4_mul(m1, m2, m1); + +/* or */ +glm_mat4_mul(m1, m1, m1); +``` +the first two parameter are **[in]** and the last one is **[out]** parameter. After multiplying *m1* and *m2*, the result is stored in *m1*. This is why we send *m1* twice. You may store the result in a different matrix, this is just an example. + +### Example: Computing MVP matrix + +#### Option 1 +```C +mat4 proj, view, model, mvp; + +/* init proj, view and model ... */ + +glm_mat4_mul(proj, view, viewProj); +glm_mat4_mul(viewProj, model, mvp); +``` + +#### Option 2 +```C +mat4 proj, view, model, mvp; + +/* init proj, view and model ... */ + +glm_mat4_mulN((mat4 *[]){&proj, &view, &model}, 3, mvp); +``` + +## How to send matrix to OpenGL + +mat4 is array of vec4 and vec4 is array of floats. `glUniformMatrix4fv` functions accecpts `float*` as `value` (last param), so you can cast mat4 to float* or you can pass first column of matrix as beginning of memory of matrix: + +Option 1: Send first column +```C +glUniformMatrix4fv(location, 1, GL_FALSE, matrix[0]); + +/* array of matrices */ +glUniformMatrix4fv(location, 1, GL_FALSE, matrix[0][0]); +``` + +Option 2: Cast matrix to pointer type (also valid for multiple dimensional arrays) +```C +glUniformMatrix4fv(location, 1, GL_FALSE, (float *)matrix); +``` + +You can pass matrices the same way to other APIs e.g. Vulkan, DX... + +## Notes + +- This library does not support double type... yet +- If headers are not working properly with your compiler, IDE please open an issue, because I'm using GCC and clang to test it maybe sometimes MSVC + +**TODO:** +- [ ] Unit tests (In Progress) +- [ ] Unit tests for comparing cglm with glm results +- [x] Add version info +- [ ] Unaligned operations (e.g. `glm_umat4_mul`) +- [x] Extra documentation +- [x] ARM Neon Arch + + +## Contributors + +This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. + + + +## Backers + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/cglm#backer)] + + + + +## Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/cglm#sponsor)] + + + + + + + + + + + + +## License +MIT. check the LICENSE file diff --git a/lib/cglm/_config.yml b/lib/cglm/_config.yml new file mode 100644 index 0000000..2f7efbe --- /dev/null +++ b/lib/cglm/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-minimal \ No newline at end of file diff --git a/lib/cglm/appveyor.yml b/lib/cglm/appveyor.yml new file mode 100644 index 0000000..f4c54ef --- /dev/null +++ b/lib/cglm/appveyor.yml @@ -0,0 +1,7 @@ +image: Visual Studio 2017 + +build_script: +- ps: >- + cd win + + .\build.bat diff --git a/lib/cglm/autogen.sh b/lib/cglm/autogen.sh new file mode 100644 index 0000000..b3b8d82 --- /dev/null +++ b/lib/cglm/autogen.sh @@ -0,0 +1,21 @@ +#! /bin/sh +# +# Copyright (c), Recep Aslantas. +# +# MIT License (MIT), http://opensource.org/licenses/MIT +# Full license can be found in the LICENSE file +# + +cd $(dirname "$0") + +autoheader + +if [ "$(uname)" = "Darwin" ]; then + glibtoolize +else + libtoolize +fi + +aclocal -I m4 +autoconf +automake --add-missing --copy diff --git a/lib/cglm/cglm.pc.in b/lib/cglm/cglm.pc.in new file mode 100644 index 0000000..139767f --- /dev/null +++ b/lib/cglm/cglm.pc.in @@ -0,0 +1,11 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix="${prefix}" +libdir="${exec_prefix}/lib" +includedir="${prefix}/include" + +Name: @PROJECT_NAME@ +Description: @CMAKE_PROJECT_DESCRIPTION@ +URL: @CMAKE_PROJECT_HOMEPAGE_URL@ +Version: @PROJECT_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lcglm @LIBS@ diff --git a/lib/cglm/cglm.png b/lib/cglm/cglm.png new file mode 100644 index 0000000..b450f6a Binary files /dev/null and b/lib/cglm/cglm.png differ diff --git a/lib/cglm/cglm.podspec b/lib/cglm/cglm.podspec new file mode 100644 index 0000000..a8609e8 --- /dev/null +++ b/lib/cglm/cglm.podspec @@ -0,0 +1,37 @@ +Pod::Spec.new do |s| + + # Description + s.name = "cglm" + s.version = "0.8.4" + s.summary = "📽 Highly Optimized Graphics Math (glm) for C" + s.description = <<-DESC +cglm is math library for graphics programming for C. See the documentation or README for all features. + DESC + + s.documentation_url = "http://cglm.readthedocs.io" + + # Home + s.homepage = "https://github.com/recp/cglm" + s.license = { :type => "MIT", :file => "LICENSE" } + s.author = { "Recep Aslantas" => "recp@acm.org" } + + # Sources + s.source = { :git => "https://github.com/recp/cglm.git", :tag => "v#{s.version}" } + s.source_files = "src", "include/cglm/**/*.h" + s.public_header_files = "include", "include/cglm/**/*.h" + s.exclude_files = "src/win/*", "src/dllmain.c", "src/**/*.h" + s.preserve_paths = "include", "src" + s.header_mappings_dir = "include" + + # Linking + s.library = "m" + + # Configuration + s.pod_target_xcconfig = { + 'CLANG_ENABLE_MODULES' => 'NO', + 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES', + 'CLANG_WARN_DOCUMENTATION_COMMENTS' => 'NO', + 'GCC_C_LANGUAGE_STANDARD' => 'gnu11', + 'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) GLM_TESTS_NO_COLORFUL_OUTPUT' + } +end diff --git a/lib/cglm/cglmConfig.cmake b/lib/cglm/cglmConfig.cmake new file mode 100644 index 0000000..39bcf71 --- /dev/null +++ b/lib/cglm/cglmConfig.cmake @@ -0,0 +1,68 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) + message(FATAL_ERROR "CMake >= 2.8.0 required") +endif() +if(CMAKE_VERSION VERSION_LESS "2.8.3") + message(FATAL_ERROR "CMake >= 2.8.3 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.8.3...3.22) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_cmake_targets_defined "") +set(_cmake_targets_not_defined "") +set(_cmake_expected_targets "") +foreach(_cmake_expected_target IN ITEMS cglm::cglm) + list(APPEND _cmake_expected_targets "${_cmake_expected_target}") + if(TARGET "${_cmake_expected_target}") + list(APPEND _cmake_targets_defined "${_cmake_expected_target}") + else() + list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") + endif() +endforeach() +unset(_cmake_expected_target) +if(_cmake_targets_defined STREQUAL _cmake_expected_targets) + unset(_cmake_targets_defined) + unset(_cmake_targets_not_defined) + unset(_cmake_expected_targets) + unset(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT _cmake_targets_defined STREQUAL "") + string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") + string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") +endif() +unset(_cmake_targets_defined) +unset(_cmake_targets_not_defined) +unset(_cmake_expected_targets) + + +# Create imported target cglm::cglm +add_library(cglm::cglm STATIC IMPORTED) + +set_target_properties(cglm::cglm PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "/home/assam/git/junko-mpv/lib/cglm/include" +) + +# Import target "cglm::cglm" for configuration "Release" +set_property(TARGET cglm::cglm APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(cglm::cglm PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" + IMPORTED_LOCATION_RELEASE "/home/assam/git/junko-mpv/lib/cglm/libcglm.a" + ) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/lib/cglm/cmake_install.cmake b/lib/cglm/cmake_install.cmake new file mode 100644 index 0000000..fb95946 --- /dev/null +++ b/lib/cglm/cmake_install.cmake @@ -0,0 +1,89 @@ +# Install script for directory: /home/assam/git/junko-mpv/lib/cglm + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/home/assam/git/junko-mpv/lib/cglm/libcglm.a") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include" TYPE DIRECTORY FILES "/home/assam/git/junko-mpv/lib/cglm/include/cglm" REGEX "/\\.[^/]*$" EXCLUDE) +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/cglm/cglmConfig.cmake") + file(DIFFERENT _cmake_export_file_changed FILES + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/cglm/cglmConfig.cmake" + "/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig.cmake") + if(_cmake_export_file_changed) + file(GLOB _cmake_old_config_files "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/cglm/cglmConfig-*.cmake") + if(_cmake_old_config_files) + string(REPLACE ";" ", " _cmake_old_config_files_text "${_cmake_old_config_files}") + message(STATUS "Old export file \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/cglm/cglmConfig.cmake\" will be replaced. Removing files [${_cmake_old_config_files_text}].") + unset(_cmake_old_config_files_text) + file(REMOVE ${_cmake_old_config_files}) + endif() + unset(_cmake_old_config_files) + endif() + unset(_cmake_export_file_changed) + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/cglm" TYPE FILE FILES "/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig.cmake") + if(CMAKE_INSTALL_CONFIG_NAME MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$") + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/cglm" TYPE FILE FILES "/home/assam/git/junko-mpv/lib/cglm/CMakeFiles/Export/c1d47c5456110782bdc417ad7bdf8965/cglmConfig-release.cmake") + endif() +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" TYPE FILE FILES "/home/assam/git/junko-mpv/lib/cglm/cglm.pc") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/assam/git/junko-mpv/lib/cglm/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/lib/cglm/configure.ac b/lib/cglm/configure.ac new file mode 100644 index 0000000..bff2653 --- /dev/null +++ b/lib/cglm/configure.ac @@ -0,0 +1,75 @@ +#***************************************************************************** +# Copyright (c), Recep Aslantas. * +# * +# MIT License (MIT), http://opensource.org/licenses/MIT * +# Full license can be found in the LICENSE file * +# * +#***************************************************************************** + +AC_PREREQ([2.69]) +AC_INIT([cglm], [0.8.7], [info@recp.me]) +AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects serial-tests]) + +# Don't use the default cflags (-O2 -g), we set ours manually in Makefile.am. +: ${CFLAGS=""} + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/]) +AC_CONFIG_HEADERS([config.h]) + +# Dependencies for pkg-config. +PKG_PROG_PKG_CONFIG +# Ancient versions of pkg-config (such as the one used in Travis CI) +# don't have this macro, so we need to do it manually. +m4_ifdef([PKG_INSTALLDIR], [ + PKG_INSTALLDIR +], [ + AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], + [pkg-config installation directory ['${libdir}/pkgconfig']])],, + [with_pkgconfigdir=]'${libdir}/pkgconfig') + AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +]) + +# Checks for programs. +AC_PROG_CC +AM_PROG_CC_C_O + +AC_PROG_INSTALL +AM_PROG_AR + +AC_ENABLE_SHARED +AC_ENABLE_STATIC + +LT_INIT + +# Checks for libraries. +AC_CHECK_LIB([m], [floor]) + +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +AC_SYS_LARGEFILE + +# Checks for header files. +AC_CHECK_HEADERS([limits.h \ + stddef.h \ + stdint.h \ + stdlib.h \ + string.h ]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_CHECK_HEADER_STDBOOL +AC_C_INLINE +AC_TYPE_INT32_T +AC_TYPE_INT64_T +AC_TYPE_SIZE_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_TYPE_UINT8_T + +# Checks for library functions. +AC_FUNC_ERROR_AT_LINE + +AC_CONFIG_FILES([Makefile cglm.pc]) + +AC_OUTPUT diff --git a/lib/cglm/docs/make.bat b/lib/cglm/docs/make.bat new file mode 100644 index 0000000..f0aed6a --- /dev/null +++ b/lib/cglm/docs/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=python -msphinx +) +set SOURCEDIR=source +set BUILDDIR=build +set SPHINXPROJ=cglm + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The Sphinx module was not found. Make sure you have Sphinx installed, + echo.then set the SPHINXBUILD environment variable to point to the full + echo.path of the 'sphinx-build' executable. Alternatively you may add the + echo.Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/lib/cglm/docs/source/affine-common.rst b/lib/cglm/docs/source/affine-common.rst new file mode 100644 index 0000000..b66352c --- /dev/null +++ b/lib/cglm/docs/source/affine-common.rst @@ -0,0 +1,129 @@ +.. default-domain:: C + +3D Affine Transforms (common) +================================================================================ + +Common transfrom functions. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_translate_make` +#. :c:func:`glm_scale_to` +#. :c:func:`glm_scale_make` +#. :c:func:`glm_scale` +#. :c:func:`glm_scale_uni` +#. :c:func:`glm_rotate_make` +#. :c:func:`glm_rotate_atm` +#. :c:func:`glm_decompose_scalev` +#. :c:func:`glm_uniscaled` +#. :c:func:`glm_decompose_rs` +#. :c:func:`glm_decompose` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_translate_make(mat4 m, vec3 v) + + creates NEW translate transform matrix by *v* vector. + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** translate vector [x, y, z] + +.. c:function:: void glm_scale_to(mat4 m, vec3 v, mat4 dest) + + scale existing transform matrix by *v* vector and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **v** scale vector [x, y, z] + | *[out]* **dest** scaled matrix + +.. c:function:: void glm_scale_make(mat4 m, vec3 v) + + creates NEW scale matrix by v vector + + Parameters: + | *[out]* **m** affine transfrom + | *[in]* **v** scale vector [x, y, z] + +.. c:function:: void glm_scale(mat4 m, vec3 v) + + scales existing transform matrix by v vector + and stores result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** scale vector [x, y, z] + +.. c:function:: void glm_scale_uni(mat4 m, float s) + + applies uniform scale to existing transform matrix v = [s, s, s] + and stores result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** scale factor + +.. c:function:: void glm_rotate_make(mat4 m, float angle, vec3 axis) + + creates NEW rotation matrix by angle and axis, + axis will be normalized so you don't need to normalize it + + Parameters: + | *[out]* **m** affine transfrom + | *[in]* **axis** angle (radians) + | *[in]* **axis** axis + +.. c:function:: void glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis) + + | creates NEW rotation matrix by angle and axis at given point + | this creates rotation matrix, it assumes you don't have a matrix + + | this should work faster than glm_rotate_at because it reduces one glm_translate. + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **pivot** pivot, anchor point, rotation center + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis + +.. c:function:: void glm_decompose_scalev(mat4 m, vec3 s) + + decompose scale vector + + Parameters: + | *[in]* **m** affine transform + | *[out]* **s** scale vector (Sx, Sy, Sz) + +.. c:function:: bool glm_uniscaled(mat4 m) + + returns true if matrix is uniform scaled. + This is helpful for creating normal matrix. + + Parameters: + | *[in]* **m** matrix + +.. c:function:: void glm_decompose_rs(mat4 m, mat4 r, vec3 s) + + decompose rotation matrix (mat4) and scale vector [Sx, Sy, Sz] + DON'T pass projected matrix here + + Parameters: + | *[in]* **m** affine transform + | *[out]* **r** rotation matrix + | *[out]* **s** scale matrix + +.. c:function:: void glm_decompose(mat4 m, vec4 t, mat4 r, vec3 s) + + decompose affine transform, TODO: extract shear factors. + DON'T pass projected matrix here + + Parameters: + | *[in]* **m** affine transfrom + | *[out]* **t** translation vector + | *[out]* **r** rotation matrix (mat4) + | *[out]* **s** scaling vector [X, Y, Z] diff --git a/lib/cglm/docs/source/affine-mat.rst b/lib/cglm/docs/source/affine-mat.rst new file mode 100644 index 0000000..d0065e9 --- /dev/null +++ b/lib/cglm/docs/source/affine-mat.rst @@ -0,0 +1,99 @@ +.. default-domain:: C + +3D Affine Transform Matrix (specialized functions) +================================================================================ + +Header: cglm/affine-mat.h + +We mostly use glm_mat4_* for 4x4 general and transform matrices. **cglm** +provides optimized version of some functions. Because affine transform matrix is +a known format, for instance all last item of first three columns is zero. + +You should be careful when using these functions. For instance :c:func:`glm_mul` +assumes matrix will be this format: + +.. code-block:: text + + R R R X + R R R Y + R R R Z + 0 0 0 W + +if you override zero values here then use :c:func:`glm_mat4_mul` version. +You cannot use :c:func:`glm_mul` anymore. + +Same is also true for :c:func:`glm_inv_tr` if you only have rotation and +translation then it will work as expected, otherwise you cannot use that. + +In the future it may accept scale factors too but currectly it does not. + +Table of contents (click func go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_mul` +#. :c:func:`glm_mul_rot` +#. :c:func:`glm_inv_tr` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_mul(mat4 m1, mat4 m2, mat4 dest) + + | this is similar to glm_mat4_mul but specialized to affine transform + + Matrix format should be: + + .. code-block:: text + + R R R X + R R R Y + R R R Z + 0 0 0 W + + this reduces some multiplications. It should be faster than mat4_mul. + if you are not sure about matrix format then DON'T use this! use mat4_mul + + Parameters: + | *[in]* **m1** affine matrix 1 + | *[in]* **m2** affine matrix 2 + | *[out]* **dest** result matrix + +.. c:function:: void glm_mul_rot(mat4 m1, mat4 m2, mat4 dest) + + | this is similar to glm_mat4_mul but specialized to rotation matrix + + Right Matrix format should be (left is free): + + .. code-block:: text + + R R R 0 + R R R 0 + R R R 0 + 0 0 0 1 + + this reduces some multiplications. It should be faster than mat4_mul. + if you are not sure about matrix format then DON'T use this! use mat4_mul + + Parameters: + | *[in]* **m1** affine matrix 1 + | *[in]* **m2** affine matrix 2 + | *[out]* **dest** result matrix + +.. c:function:: void glm_inv_tr(mat4 mat) + + | inverse orthonormal rotation + translation matrix (ridig-body) + + .. code-block:: text + + X = | R T | X' = | R' -R'T | + | 0 1 | | 0 1 | + + use this if you only have rotation + translation, this should work faster + than :c:func:`glm_mat4_inv` + + Don't use this if your matrix includes other things e.g. scale, shear... + + Parameters: + | *[in,out]* **mat** affine matrix diff --git a/lib/cglm/docs/source/affine-post.rst b/lib/cglm/docs/source/affine-post.rst new file mode 100644 index 0000000..b1d268d --- /dev/null +++ b/lib/cglm/docs/source/affine-post.rst @@ -0,0 +1,129 @@ +.. default-domain:: C + +3D Affine Transforms (post) +================================================================================ + +Post transfrom functions are similar to pre transform functions except order of application is reversed. +Post transform functions are applied after the object is transformed with given (model matrix) transfrom. + +Ther are named af + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_translated_to` +#. :c:func:`glm_translated` +#. :c:func:`glm_translated_x` +#. :c:func:`glm_translated_y` +#. :c:func:`glm_translated_z` +#. :c:func:`glm_rotated_x` +#. :c:func:`glm_rotated_y` +#. :c:func:`glm_rotated_z` +#. :c:func:`glm_rotated` +#. :c:func:`glm_rotated_at` +#. :c:func:`glm_spinned` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_translated_to(mat4 m, vec3 v, mat4 dest) + + translate existing transform matrix by *v* vector and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **v** translate vector [x, y, z] + | *[out]* **dest** translated matrix + +.. c:function:: void glm_translated(mat4 m, vec3 v) + + translate existing transform matrix by *v* vector + and stores result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** translate vector [x, y, z] + +.. c:function:: void glm_translated_x(mat4 m, float x) + + translate existing transform matrix by x factor + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** x factor + +.. c:function:: void glm_translated_y(mat4 m, float y) + + translate existing transform matrix by *y* factor + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** y factor + +.. c:function:: void glm_translated_z(mat4 m, float z) + + translate existing transform matrix by *z* factor + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** z factor + +.. c:function:: void glm_rotated_x(mat4 m, float angle, mat4 dest) + + rotate existing transform matrix around X axis by angle + and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[out]* **dest** rotated matrix + +.. c:function:: void glm_rotated_y(mat4 m, float angle, mat4 dest) + + rotate existing transform matrix around Y axis by angle + and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[out]* **dest** rotated matrix + +.. c:function:: void glm_rotated_z(mat4 m, float angle, mat4 dest) + + rotate existing transform matrix around Z axis by angle + and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[out]* **dest** rotated matrix + +.. c:function:: void glm_rotated(mat4 m, float angle, vec3 axis) + + rotate existing transform matrix around Z axis by angle and axis + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis + +.. c:function:: void glm_rotated_at(mat4 m, vec3 pivot, float angle, vec3 axis) + + rotate existing transform around given axis by angle at given pivot point (rotation center) + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **pivot** pivot, anchor point, rotation center + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis + +.. c:function:: void glm_spinned(mat4 m, float angle, vec3 axis) + + | rotate existing transform matrix around given axis by angle around self (doesn't affected by position) + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis diff --git a/lib/cglm/docs/source/affine-pre.rst b/lib/cglm/docs/source/affine-pre.rst new file mode 100644 index 0000000..fe10205 --- /dev/null +++ b/lib/cglm/docs/source/affine-pre.rst @@ -0,0 +1,240 @@ +.. default-domain:: C + +3D Affine Transforms (pre) +================================================================================ + +Pre transfrom functions which are regular transfrom functions. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_translate_to` +#. :c:func:`glm_translate` +#. :c:func:`glm_translate_x` +#. :c:func:`glm_translate_y` +#. :c:func:`glm_translate_z` +#. :c:func:`glm_translate_make` +#. :c:func:`glm_scale_to` +#. :c:func:`glm_scale_make` +#. :c:func:`glm_scale` +#. :c:func:`glm_scale_uni` +#. :c:func:`glm_rotate_x` +#. :c:func:`glm_rotate_y` +#. :c:func:`glm_rotate_z` +#. :c:func:`glm_rotate_make` +#. :c:func:`glm_rotate` +#. :c:func:`glm_rotate_at` +#. :c:func:`glm_rotate_atm` +#. :c:func:`glm_decompose_scalev` +#. :c:func:`glm_uniscaled` +#. :c:func:`glm_decompose_rs` +#. :c:func:`glm_decompose` +#. :c:func:`glm_spin` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_translate_to(mat4 m, vec3 v, mat4 dest) + + translate existing transform matrix by *v* vector and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **v** translate vector [x, y, z] + | *[out]* **dest** translated matrix + +.. c:function:: void glm_translate(mat4 m, vec3 v) + + translate existing transform matrix by *v* vector + and stores result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** translate vector [x, y, z] + +.. c:function:: void glm_translate_x(mat4 m, float x) + + translate existing transform matrix by x factor + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** x factor + +.. c:function:: void glm_translate_y(mat4 m, float y) + + translate existing transform matrix by *y* factor + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** y factor + +.. c:function:: void glm_translate_z(mat4 m, float z) + + translate existing transform matrix by *z* factor + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** z factor + +.. c:function:: void glm_translate_make(mat4 m, vec3 v) + + creates NEW translate transform matrix by *v* vector. + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** translate vector [x, y, z] + +.. c:function:: void glm_scale_to(mat4 m, vec3 v, mat4 dest) + + scale existing transform matrix by *v* vector and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **v** scale vector [x, y, z] + | *[out]* **dest** scaled matrix + +.. c:function:: void glm_scale_make(mat4 m, vec3 v) + + creates NEW scale matrix by v vector + + Parameters: + | *[out]* **m** affine transfrom + | *[in]* **v** scale vector [x, y, z] + +.. c:function:: void glm_scale(mat4 m, vec3 v) + + scales existing transform matrix by v vector + and stores result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** scale vector [x, y, z] + +.. c:function:: void glm_scale_uni(mat4 m, float s) + + applies uniform scale to existing transform matrix v = [s, s, s] + and stores result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** scale factor + +.. c:function:: void glm_rotate_x(mat4 m, float angle, mat4 dest) + + rotate existing transform matrix around X axis by angle + and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[out]* **dest** rotated matrix + +.. c:function:: void glm_rotate_y(mat4 m, float angle, mat4 dest) + + rotate existing transform matrix around Y axis by angle + and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[out]* **dest** rotated matrix + +.. c:function:: void glm_rotate_z(mat4 m, float angle, mat4 dest) + + rotate existing transform matrix around Z axis by angle + and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[out]* **dest** rotated matrix + +.. c:function:: void glm_rotate_make(mat4 m, float angle, vec3 axis) + + creates NEW rotation matrix by angle and axis, + axis will be normalized so you don't need to normalize it + + Parameters: + | *[out]* **m** affine transfrom + | *[in]* **axis** angle (radians) + | *[in]* **axis** axis + +.. c:function:: void glm_rotate(mat4 m, float angle, vec3 axis) + + rotate existing transform matrix around Z axis by angle and axis + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis + +.. c:function:: void glm_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis) + + rotate existing transform around given axis by angle at given pivot point (rotation center) + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **pivot** pivot, anchor point, rotation center + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis + +.. c:function:: void glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis) + + | creates NEW rotation matrix by angle and axis at given point + | this creates rotation matrix, it assumes you don't have a matrix + + | this should work faster than glm_rotate_at because it reduces one glm_translate. + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **pivot** pivot, anchor point, rotation center + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis + +.. c:function:: void glm_decompose_scalev(mat4 m, vec3 s) + + decompose scale vector + + Parameters: + | *[in]* **m** affine transform + | *[out]* **s** scale vector (Sx, Sy, Sz) + +.. c:function:: bool glm_uniscaled(mat4 m) + + returns true if matrix is uniform scaled. + This is helpful for creating normal matrix. + + Parameters: + | *[in]* **m** matrix + +.. c:function:: void glm_decompose_rs(mat4 m, mat4 r, vec3 s) + + decompose rotation matrix (mat4) and scale vector [Sx, Sy, Sz] + DON'T pass projected matrix here + + Parameters: + | *[in]* **m** affine transform + | *[out]* **r** rotation matrix + | *[out]* **s** scale matrix + +.. c:function:: void glm_decompose(mat4 m, vec4 t, mat4 r, vec3 s) + + decompose affine transform, TODO: extract shear factors. + DON'T pass projected matrix here + + Parameters: + | *[in]* **m** affine transfrom + | *[out]* **t** translation vector + | *[out]* **r** rotation matrix (mat4) + | *[out]* **s** scaling vector [X, Y, Z] + +.. c:function:: void glm_spin(mat4 m, float angle, vec3 axis) + + | rotate existing transform matrix around given axis by angle around self (doesn't affected by position) + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis diff --git a/lib/cglm/docs/source/affine.rst b/lib/cglm/docs/source/affine.rst new file mode 100644 index 0000000..722373c --- /dev/null +++ b/lib/cglm/docs/source/affine.rst @@ -0,0 +1,196 @@ +.. default-domain:: C + +3D Affine Transforms +================================================================================ + +Header: cglm/affine.h + +Before starting, **cglm** provides two kind of transform functions; pre and post. + +Pre functions (`T' = Tnew * T`) are like `glm_translate`, `glm_rotate` which means it will translate the vector first and then apply the model transformation. +Post functions (`T' = T * Tnew`) are like `glm_translated`, `glm_rotated` which means it will apply the model transformation first and then translate the vector. + +`glm_translate`, `glm_rotate` are pre functions and are similar to C++ **glm** which you are familiar with. + +In new versions of **cglm** we added `glm_translated`, `glm_rotated`... which are post functions, +they are useful in some cases, e.g. append transform to existing transform (apply/append transform as last transfrom T' = T * Tnew). + +Post functions are named after pre functions with `ed` suffix, e.g. `glm_translate` -> `glm_translated`. So don't mix them up. + +Initialize Transform Matrices +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Functions with **_make** prefix expect you don't have a matrix and they create +a matrix for you. You don't need to pass identity matrix. + +But other functions expect you have a matrix and you want to transform them. If +you didn't have any existing matrix you have to initialize matrix to identity +before sending to transfrom functions. + +There are also functions to decompose transform matrix. These functions can't +decompose matrix after projected. + +Rotation Center +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Rotating functions uses origin as rotation center (pivot/anchor point), +since scale factors are stored in rotation matrix, same may also true for scalling. +cglm provides some functions for rotating around at given point e.g. +**glm_rotate_at**, **glm_quat_rotate_at**. Use them or follow next section for algorihm ("Rotate or Scale around specific Point (Pivot Point / Anchor Point)"). + +Also **cglm** provides :c:func:`glm_spin` and :c:func:`glm_spinned` functions to rotate around itself. No need to give pivot. +These functions are useful for rotating around center of object. + +Rotate or Scale around specific Point (Anchor Point) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you want to rotate model around arbibtrary point follow these steps: + +1. Move model from pivot point to origin: **translate(-pivot.x, -pivot.y, -pivot.z)** +2. Apply rotation (or scaling maybe) +3. Move model back from origin to pivot (reverse of step-1): **translate(pivot.x, pivot.y, pivot.z)** + +**glm_rotate_at**, **glm_quat_rotate_at** and their helper functions works that way. +So if you use them you don't need to do these steps manually which are done by **cglm**. + +The implementation would be: + +.. code-block:: c + :linenos: + + glm_translate(m, pivot); + glm_rotate(m, angle, axis); + glm_translate(m, pivotInv); /* pivotInv = -pivot */ + +or just: + +.. code-block:: c + :linenos: + + glm_rotate_at(m, pivot, angle, axis); + +.. _TransformsOrder: + +Transforms Order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It is important to understand this part especially if you call transform +functions multiple times + +`glm_translate`, `glm_rotate`, `glm_scale` and `glm_quat_rotate` and their +helpers functions works like this (cglm provides reverse order as `ed` suffix e.g `glm_translated`, `glm_rotated` see post transforms): + +.. code-block:: c + :linenos: + + TransformMatrix = TransformMatrix * TraslateMatrix; // glm_translate() + TransformMatrix = TransformMatrix * RotateMatrix; // glm_rotate(), glm_quat_rotate() + TransformMatrix = TransformMatrix * ScaleMatrix; // glm_scale() + +As you can see it is multipled as right matrix. For instance what will happen if you call `glm_translate` twice? + +.. code-block:: c + :linenos: + + glm_translate(transform, translate1); /* transform = transform * translate1 */ + glm_translate(transform, translate2); /* transform = transform * translate2 */ + glm_rotate(transform, angle, axis) /* transform = transform * rotation */ + +Now lets try to understand this: + +1. You call translate using `translate1` and you expect it will be first transform +because you call it first, do you? + +Result will be **`transform = transform * translate1`** + +2. Then you call translate using `translate2` and you expect it will be second transform? + +Result will be **`transform = transform * translate2`**. Now lets expand transform, +it was `transform * translate1` before second call. + +Now it is **`transform = transform * translate1 * translate2`**, now do you understand what I say? + +3. After last call transform will be: + +**`transform = transform * translate1 * translate2 * rotation`** + +The order will be; **rotation will be applied first**, then **translate2** then **translate1** + +It is all about matrix multiplication order. It is similar to MVP matrix: +`MVP = Projection * View * Model`, model will be applied first, then view then projection. + +**Confused?** + +In the end the last function call applied first in shaders. + +As alternative way, you can create transform matrices individually then combine manually, +but don't forget that `glm_translate`, `glm_rotate`, `glm_scale`... are optimized and should be faster (an smaller assembly output) than manual multiplication + +.. code-block:: c + :linenos: + + mat4 transform1, transform2, transform3, finalTransform; + + glm_translate_make(transform1, translate1); + glm_translate_make(transform2, translate2); + glm_rotate_make(transform3, angle, axis); + + /* first apply transform1, then transform2, thentransform3 */ + glm_mat4_mulN((mat4 *[]){&transform3, &transform2, &transform1}, 3, finalTransform); + + /* if you don't want to use mulN, same as above */ + glm_mat4_mul(transform3, transform2, finalTransform); + glm_mat4_mul(finalTransform, transform1, finalTransform); + +Now transform1 will be applied first, then transform2 then transform3 + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_translate_to` +#. :c:func:`glm_translate` +#. :c:func:`glm_translate_x` +#. :c:func:`glm_translate_y` +#. :c:func:`glm_translate_z` +#. :c:func:`glm_translate_make` +#. :c:func:`glm_scale_to` +#. :c:func:`glm_scale_make` +#. :c:func:`glm_scale` +#. :c:func:`glm_scale_uni` +#. :c:func:`glm_rotate_x` +#. :c:func:`glm_rotate_y` +#. :c:func:`glm_rotate_z` +#. :c:func:`glm_rotate_make` +#. :c:func:`glm_rotate` +#. :c:func:`glm_rotate_at` +#. :c:func:`glm_rotate_atm` +#. :c:func:`glm_decompose_scalev` +#. :c:func:`glm_uniscaled` +#. :c:func:`glm_decompose_rs` +#. :c:func:`glm_decompose` + +Post functions (**NEW**): + +1. :c:func:`glm_translated_to` +#. :c:func:`glm_translated` +#. :c:func:`glm_translated_x` +#. :c:func:`glm_translated_y` +#. :c:func:`glm_translated_z` +#. :c:func:`glm_rotated_x` +#. :c:func:`glm_rotated_y` +#. :c:func:`glm_rotated_z` +#. :c:func:`glm_rotated` +#. :c:func:`glm_rotated_at` +#. :c:func:`glm_spinned` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + :maxdepth: 1 + :caption: Affine categories: + + affine-common + affine-pre + affine-post diff --git a/lib/cglm/docs/source/affine2d.rst b/lib/cglm/docs/source/affine2d.rst new file mode 100644 index 0000000..f12cd59 --- /dev/null +++ b/lib/cglm/docs/source/affine2d.rst @@ -0,0 +1,140 @@ +.. default-domain:: C + +2D Affine Transforms +================================================================================ + +Header: cglm/affine2d.h + +2D Transforms uses `2d` suffix for naming. If there is no 2D suffix it is 3D function. + +Initialize Transform Matrices +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Functions with **_make** prefix expect you don't have a matrix and they create +a matrix for you. You don't need to pass identity matrix. + +But other functions expect you have a matrix and you want to transform them. If +you didn't have any existing matrix you have to initialize matrix to identity +before sending to transfrom functions. + +Transforms Order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +See :ref:`TransformsOrder` to read similar section. + + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_translate2d` +#. :c:func:`glm_translate2d_to` +#. :c:func:`glm_translate2d_x` +#. :c:func:`glm_translate2d_y` +#. :c:func:`glm_translate2d_make` +#. :c:func:`glm_scale2d_to` +#. :c:func:`glm_scale2d_make` +#. :c:func:`glm_scale2d` +#. :c:func:`glm_scale2d_uni` +#. :c:func:`glm_rotate2d_make` +#. :c:func:`glm_rotate2d` +#. :c:func:`glm_rotate2d_to` + +.. c:function:: void glm_translate2d(mat3 m, vec2 v) + + translate existing 2d transform matrix by *v* vector and stores result in same matrix + + Parameters: + | *[in, out]* **m** 2d affine transfrom + | *[in]* **v** translate vector [x, y] + +.. c:function:: void glm_translate2d_to(mat3 m, vec2 v, mat3 dest) + + translate existing 2d transform matrix by *v* vector and store result in dest + + Parameters: + | *[in]* **m** 2d affine transfrom + | *[in]* **v** translate vector [x, y] + | *[out]* **dest** translated matrix + +.. c:function:: void glm_translate2d_x(mat3 m, float x) + + translate existing 2d transform matrix by x factor + + Parameters: + | *[in, out]* **m** 2d affine transfrom + | *[in]* **x** x factor + +.. c:function:: void glm_translate2d_y(mat3 m, float y) + + translate existing 2d transform matrix by y factor + + Parameters: + | *[in, out]* **m** 2d affine transfrom + | *[in]* **y** y factor + +.. c:function:: void glm_translate2d_make(mat3 m, vec2 v) + + creates NEW translate 2d transform matrix by *v* vector + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** translate vector [x, y] + +.. c:function:: void glm_scale2d_to(mat3 m, vec2 v, mat3 dest) + + scale existing 2d transform matrix by *v* vector and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **v** scale vector [x, y] + | *[out]* **dest** scaled matrix + +.. c:function:: void glm_scale2d_make(mat3 m, vec2 v) + + creates NEW 2d scale matrix by *v* vector + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** scale vector [x, y] + +.. c:function:: void glm_scale2d(mat3 m, vec2 v) + + scales existing 2d transform matrix by *v* vector and stores result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **v** translate vector [x, y] + +.. c:function:: void glm_scale2d_uni(mat3 m, float s) + + applies uniform scale to existing 2d transform matrix v = [s, s] and stores result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **s** scale factor + +.. c:function:: void glm_rotate2d_make(mat3 m, float angle) + + creates NEW rotation matrix by angle around *Z* axis + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **angle** angle (radians) + +.. c:function:: void glm_rotate2d(mat3 m, float angle) + + rotate existing 2d transform matrix around *Z* axis by angle and store result in same matrix + + Parameters: + | *[in, out]* **m** affine transfrom + | *[in]* **angle** angle (radians) + +.. c:function:: void glm_rotate2d_to(mat3 m, float angle, mat3 dest) + + rotate existing 2d transform matrix around *Z* axis by angle and store result in dest + + Parameters: + | *[in]* **m** affine transfrom + | *[in]* **angle** angle (radians) + | *[out]* **dest** rotated matrix \ No newline at end of file diff --git a/lib/cglm/docs/source/api.rst b/lib/cglm/docs/source/api.rst new file mode 100644 index 0000000..7ffb823 --- /dev/null +++ b/lib/cglm/docs/source/api.rst @@ -0,0 +1,59 @@ +API documentation +================================ + +Some functions may exist twice, +once for their namespace and once for global namespace +to make easier to write very common functions + +For instance, in general we use :code:`glm_vec3_dot` to get dot product +of two **vec3**. Now we can also do this with :code:`glm_dot`, +same for *_cross* and so on... + +The original function stays where it is, the function in global namespace +of same name is just an alias, so there is no call version of those functions. +e.g there is no func like :code:`glmc_dot` because *glm_dot* is just alias for +:code:`glm_vec3_dot` + +By including **cglm/cglm.h** header you will include all inline version +of functions. Since functions in this header[s] are inline you don't need to +build or link *cglm* against your project. + +But by including **cglm/call.h** header you will include all *non-inline* +version of functions. You need to build *cglm* and link it. +Follow the :doc:`build` documentation for this + +.. toctree:: + :maxdepth: 1 + :caption: API categories: + + affine + affine-mat + affine2d + cam + frustum + box + quat + euler + mat2 + mat3 + mat4 + vec2 + vec2-ext + vec3 + vec3-ext + vec4 + vec4-ext + ivec2 + ivec3 + ivec4 + color + plane + project + util + io + call + sphere + curve + bezier + version + ray diff --git a/lib/cglm/docs/source/bezier.rst b/lib/cglm/docs/source/bezier.rst new file mode 100644 index 0000000..8b29751 --- /dev/null +++ b/lib/cglm/docs/source/bezier.rst @@ -0,0 +1,89 @@ +.. default-domain:: C + +Bezier +================================================================================ + +Header: cglm/bezier.h + +Common helpers for cubic bezier and similar curves. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_bezier` +2. :c:func:`glm_hermite` +3. :c:func:`glm_decasteljau` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: float glm_bezier(float s, float p0, float c0, float c1, float p1) + + | cubic bezier interpolation + | formula: + + .. code-block:: text + + B(s) = P0*(1-s)^3 + 3*C0*s*(1-s)^2 + 3*C1*s^2*(1-s) + P1*s^3 + + | similar result using matrix: + + .. code-block:: text + + B(s) = glm_smc(t, GLM_BEZIER_MAT, (vec4){p0, c0, c1, p1}) + + | glm_eq(glm_smc(...), glm_bezier(...)) should return TRUE + + Parameters: + | *[in]* **s** parameter between 0 and 1 + | *[in]* **p0** begin point + | *[in]* **c0** control point 1 + | *[in]* **c1** control point 2 + | *[in]* **p1** end point + + Returns: + B(s) + +.. c:function:: float glm_hermite(float s, float p0, float t0, float t1, float p1) + + | cubic hermite interpolation + | formula: + + .. code-block:: text + + H(s) = P0*(2*s^3 - 3*s^2 + 1) + T0*(s^3 - 2*s^2 + s) + P1*(-2*s^3 + 3*s^2) + T1*(s^3 - s^2) + + | similar result using matrix: + + .. code-block:: text + + H(s) = glm_smc(t, GLM_HERMITE_MAT, (vec4){p0, p1, c0, c1}) + + | glm_eq(glm_smc(...), glm_hermite(...)) should return TRUE + + + Parameters: + | *[in]* **s** parameter between 0 and 1 + | *[in]* **p0** begin point + | *[in]* **t0** tangent 1 + | *[in]* **t1** tangent 2 + | *[in]* **p1** end point + + Returns: + B(s) + +.. c:function:: float glm_decasteljau(float prm, float p0, float c0, float c1, float p1) + + | iterative way to solve cubic equation + + Parameters: + | *[in]* **prm** parameter between 0 and 1 + | *[in]* **p0** begin point + | *[in]* **c0** control point 1 + | *[in]* **c1** control point 2 + | *[in]* **p1** end point + + Returns: + parameter to use in cubic equation diff --git a/lib/cglm/docs/source/box.rst b/lib/cglm/docs/source/box.rst new file mode 100644 index 0000000..7a388e2 --- /dev/null +++ b/lib/cglm/docs/source/box.rst @@ -0,0 +1,181 @@ +.. default-domain:: C + +axis aligned bounding box (AABB) +================================================================================ + +Header: cglm/box.h + +Some convenient functions provided for AABB. + +**Definition of box:** + +cglm defines box as two dimensional array of vec3. +The first element is **min** point and the second one is **max** point. +If you have another type e.g. struct or even another representation then you must +convert it before and after call cglm box function. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_aabb_transform` +#. :c:func:`glm_aabb_merge` +#. :c:func:`glm_aabb_crop` +#. :c:func:`glm_aabb_crop_until` +#. :c:func:`glm_aabb_frustum` +#. :c:func:`glm_aabb_invalidate` +#. :c:func:`glm_aabb_isvalid` +#. :c:func:`glm_aabb_size` +#. :c:func:`glm_aabb_radius` +#. :c:func:`glm_aabb_center` +#. :c:func:`glm_aabb_aabb` +#. :c:func:`glm_aabb_sphere` +#. :c:func:`glm_aabb_point` +#. :c:func:`glm_aabb_contains` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_aabb_transform(vec3 box[2], mat4 m, vec3 dest[2]) + + | apply transform to Axis-Aligned Bounding Box + + Parameters: + | *[in]* **box** bounding box + | *[in]* **m** transform matrix + | *[out]* **dest** transformed bounding box + +.. c:function:: void glm_aabb_merge(vec3 box1[2], vec3 box2[2], vec3 dest[2]) + + | merges two AABB bounding box and creates new one + + two box must be in same space, if one of box is in different space then + you should consider to convert it's space by glm_box_space + + Parameters: + | *[in]* **box1** bounding box 1 + | *[in]* **box2** bounding box 2 + | *[out]* **dest** merged bounding box + +.. c:function:: void glm_aabb_crop(vec3 box[2], vec3 cropBox[2], vec3 dest[2]) + + | crops a bounding box with another one. + + this could be useful for gettng a bbox which fits with view frustum and + object bounding boxes. In this case you crop view frustum box with objects + box + + Parameters: + | *[in]* **box** bounding box 1 + | *[in]* **cropBox** crop box + | *[out]* **dest** cropped bounding box + +.. c:function:: void glm_aabb_crop_until(vec3 box[2], vec3 cropBox[2], vec3 clampBox[2], vec3 dest[2]) + + | crops a bounding box with another one. + + this could be useful for gettng a bbox which fits with view frustum and + object bounding boxes. In this case you crop view frustum box with objects + box + + Parameters: + | *[in]* **box** bounding box + | *[in]* **cropBox** crop box + | *[in]* **clampBox** miniumum box + | *[out]* **dest** cropped bounding box + +.. c:function:: bool glm_aabb_frustum(vec3 box[2], vec4 planes[6]) + + | check if AABB intersects with frustum planes + + this could be useful for frustum culling using AABB. + + OPTIMIZATION HINT: + if planes order is similar to LEFT, RIGHT, BOTTOM, TOP, NEAR, FAR + then this method should run even faster because it would only use two + planes if object is not inside the two planes + fortunately cglm extracts planes as this order! just pass what you got! + + Parameters: + | *[in]* **box** bounding box + | *[out]* **planes** frustum planes + +.. c:function:: void glm_aabb_invalidate(vec3 box[2]) + + | invalidate AABB min and max values + + | It fills *max* values with -FLT_MAX and *min* values with +FLT_MAX + + Parameters: + | *[in, out]* **box** bounding box + +.. c:function:: bool glm_aabb_isvalid(vec3 box[2]) + + | check if AABB is valid or not + + Parameters: + | *[in]* **box** bounding box + + Returns: + returns true if aabb is valid otherwise false + +.. c:function:: float glm_aabb_size(vec3 box[2]) + + | distance between of min and max + + Parameters: + | *[in]* **box** bounding box + + Returns: + distance between min - max + +.. c:function:: float glm_aabb_radius(vec3 box[2]) + + | radius of sphere which surrounds AABB + + Parameters: + | *[in]* **box** bounding box + +.. c:function:: void glm_aabb_center(vec3 box[2], vec3 dest) + + | computes center point of AABB + + Parameters: + | *[in]* **box** bounding box + | *[out]* **dest** center of bounding box + +.. c:function:: bool glm_aabb_aabb(vec3 box[2], vec3 other[2]) + + | check if two AABB intersects + + Parameters: + | *[in]* **box** bounding box + | *[out]* **other** other bounding box + +.. c:function:: bool glm_aabb_sphere(vec3 box[2], vec4 s) + + | check if AABB intersects with sphere + + | https://github.com/erich666/GraphicsGems/blob/master/gems/BoxSphere.c + | Solid Box - Solid Sphere test. + + Parameters: + | *[in]* **box** solid bounding box + | *[out]* **s** solid sphere + +.. c:function:: bool glm_aabb_point(vec3 box[2], vec3 point) + + | check if point is inside of AABB + + Parameters: + | *[in]* **box** bounding box + | *[out]* **point** point + +.. c:function:: bool glm_aabb_contains(vec3 box[2], vec3 other[2]) + + | check if AABB contains other AABB + + Parameters: + | *[in]* **box** bounding box + | *[out]* **other** other bounding box diff --git a/lib/cglm/docs/source/build.rst b/lib/cglm/docs/source/build.rst new file mode 100644 index 0000000..e2eb23d --- /dev/null +++ b/lib/cglm/docs/source/build.rst @@ -0,0 +1,153 @@ +Build cglm +================================ + +| **cglm** does not have any external dependencies. + +**NOTE:** +If you only need to inline versions, you don't need to build **cglm**, you don't need to link it to your program. +Just import cglm to your project as dependency / external lib by copy-paste then use it as usual + +CMake (All platforms): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + :linenos: + + $ mkdir build + $ cd build + $ cmake .. # [Optional] -DCGLM_SHARED=ON + $ make + $ sudo make install # [Optional] + +**make** will build cglm to **build** folder. +If you don't want to install **cglm** to your system's folder you can get static and dynamic libs in this folder. + +**CMake Options:** + +.. code-block:: CMake + :linenos: + + option(CGLM_SHARED "Shared build" ON) + option(CGLM_STATIC "Static build" OFF) + option(CGLM_USE_C99 "" OFF) # C11 + option(CGLM_USE_TEST "Enable Tests" OFF) # for make check - make test + +**Use as header-only library with your CMake project example** +This requires no building or installation of cglm. + +.. code-block:: CMake + :linenos: + + cmake_minimum_required(VERSION 3.8.2) + + project() + + add_executable(${PROJECT_NAME} src/main.c) + target_link_libraries(${LIBRARY_NAME} PRIVATE + cglm_headers) + + add_subdirectory(external/cglm/ EXCLUDE_FROM_ALL) + +**Use with your CMake project example** + +.. code-block:: CMake + :linenos: + + cmake_minimum_required(VERSION 3.8.2) + + project() + + add_executable(${PROJECT_NAME} src/main.c) + target_link_libraries(${LIBRARY_NAME} PRIVATE + cglm) + + add_subdirectory(external/cglm/) + +Meson (All platforms): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: + :linenos: + + $ meson build # [Optional] --default-library=static + $ cd build + $ ninja + $ sudo ninja install # [Optional] + +**Meson Options:** + +.. code-block:: + :linenos: + + c_std=c11 + buildtype=release + default_library=shared + enable_tests=false # to run tests: ninja test + + +**Use with your Meson project** + +.. code-block:: + :linenos: + + # Clone cglm or create a cglm.wrap under /subprojects + project('name', 'c') + + cglm_dep = dependency('cglm', fallback : 'cglm', 'cglm_dep') + + executable('exe', 'src/main.c', dependencies : cglm_dep) + + +Unix (Autotools): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + :linenos: + + $ sh autogen.sh + $ ./configure + $ make + $ make check # run tests (optional) + $ [sudo] make install # install to system (optional) + +**make** will build cglm to **.libs** sub folder in project folder. +If you don't want to install **cglm** to your system's folder you can get static and dynamic libs in this folder. + +Windows (MSBuild): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Windows related build files, project files are located in `win` folder, +make sure you are inside in cglm/win folder. + +Code Analysis are enabled, it may take awhile to build. + +.. code-block:: bash + :linenos: + + $ cd win + $ .\build.bat + +if *msbuild* is not worked (because of multi versions of Visual Studio) +then try to build with *devenv*: + +.. code-block:: bash + :linenos: + + $ devenv cglm.sln /Build Release + +Currently tests are not available on Windows. + +Documentation (Sphinx): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**cglm** uses sphinx framework for documentation, it allows lot of formats for documentation. To see all options see sphinx build page: + +https://www.sphinx-doc.org/en/master/man/sphinx-build.html + +Example build: + +.. code-block:: bash + :linenos: + + $ cd cglm/docs + $ sphinx-build source build diff --git a/lib/cglm/docs/source/call.rst b/lib/cglm/docs/source/call.rst new file mode 100644 index 0000000..f7765a7 --- /dev/null +++ b/lib/cglm/docs/source/call.rst @@ -0,0 +1,19 @@ +.. default-domain:: C + +precompiled functions (call) +================================================================================ + +All funcitons in **glm_** namespace are forced to **inline**. +Most functions also have pre-compiled version. + +Precompiled versions are in **glmc_** namespace. *c* in the namespace stands for +"call". + +Since precompiled functions are just wrapper for inline verisons, +these functions are not documented individually. +It would be duplicate documentation also it +would be hard to sync documentation between inline and call verison for me. + +By including **clgm/cglm.h** you include all inline verisons. To get precompiled +versions you need to include **cglm/call.h** header it also includes all +call versions plus *clgm/cglm.h* (inline verisons) diff --git a/lib/cglm/docs/source/cam.rst b/lib/cglm/docs/source/cam.rst new file mode 100644 index 0000000..7afc5db --- /dev/null +++ b/lib/cglm/docs/source/cam.rst @@ -0,0 +1,313 @@ +.. default-domain:: C + +camera +====== + +Header: cglm/cam.h + +There are many convenient functions for camera. For instance :c:func:`glm_look` +is just wrapper for :c:func:`glm_lookat`. Sometimes you only have direction +instead of target, so that makes easy to build view matrix using direction. +There is also :c:func:`glm_look_anyup` function which can help build view matrix +without providing UP axis. It uses :c:func:`glm_vec3_ortho` to get a UP axis and +builds view matrix. + +You can also *_default* versions of ortho and perspective to build projection +fast if you don't care specific projection values. + +*_decomp* means decompose; these function can help to decompose projection +matrices. + + **NOTE**: Be careful when working with high range (very small near, very large + far) projection matrices. You may not get exact value you gave. + **float** type cannot store very high precision so you will lose precision. + Also your projection matrix will be inaccurate due to losing precision + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_frustum` +#. :c:func:`glm_ortho` +#. :c:func:`glm_ortho_aabb` +#. :c:func:`glm_ortho_aabb_p` +#. :c:func:`glm_ortho_aabb_pz` +#. :c:func:`glm_ortho_default` +#. :c:func:`glm_ortho_default_s` +#. :c:func:`glm_perspective` +#. :c:func:`glm_persp_move_far` +#. :c:func:`glm_perspective_default` +#. :c:func:`glm_perspective_resize` +#. :c:func:`glm_lookat` +#. :c:func:`glm_look` +#. :c:func:`glm_look_anyup` +#. :c:func:`glm_persp_decomp` +#. :c:func:`glm_persp_decompv` +#. :c:func:`glm_persp_decomp_x` +#. :c:func:`glm_persp_decomp_y` +#. :c:func:`glm_persp_decomp_z` +#. :c:func:`glm_persp_decomp_far` +#. :c:func:`glm_persp_decomp_near` +#. :c:func:`glm_persp_fovy` +#. :c:func:`glm_persp_aspect` +#. :c:func:`glm_persp_sizes` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_frustum(float left, float right, float bottom, float top, float nearVal, float farVal, mat4 dest) + + | set up perspective peprojection matrix + + Parameters: + | *[in]* **left** viewport.left + | *[in]* **right** viewport.right + | *[in]* **bottom** viewport.bottom + | *[in]* **top** viewport.top + | *[in]* **nearVal** near clipping plane + | *[in]* **farVal** far clipping plane + | *[out]* **dest** result matrix + +.. c:function:: void glm_ortho(float left, float right, float bottom, float top, float nearVal, float farVal, mat4 dest) + + | set up orthographic projection matrix + + Parameters: + | *[in]* **left** viewport.left + | *[in]* **right** viewport.right + | *[in]* **bottom** viewport.bottom + | *[in]* **top** viewport.top + | *[in]* **nearVal** near clipping plane + | *[in]* **farVal** far clipping plane + | *[out]* **dest** result matrix + +.. c:function:: void glm_ortho_aabb(vec3 box[2], mat4 dest) + + | set up orthographic projection matrix using bounding box + | bounding box (AABB) must be in view space + + Parameters: + | *[in]* **box** AABB + | *[in]* **dest** result matrix + +.. c:function:: void glm_ortho_aabb_p(vec3 box[2], float padding, mat4 dest) + + | set up orthographic projection matrix using bounding box + | bounding box (AABB) must be in view space + + this version adds padding to box + + Parameters: + | *[in]* **box** AABB + | *[in]* **padding** padding + | *[out]* **d** result matrix + +.. c:function:: void glm_ortho_aabb_pz(vec3 box[2], float padding, mat4 dest) + + | set up orthographic projection matrix using bounding box + | bounding box (AABB) must be in view space + + this version adds Z padding to box + + Parameters: + | *[in]* **box** AABB + | *[in]* **padding** padding for near and far + | *[out]* **d** result matrix + + Returns: + square of norm / magnitude + +.. c:function:: void glm_ortho_default(float aspect, mat4 dest) + + | set up unit orthographic projection matrix + + Parameters: + | *[in]* **aspect** aspect ration ( width / height ) + | *[out]* **dest** result matrix + +.. c:function:: void glm_ortho_default_s(float aspect, float size, mat4 dest) + + | set up orthographic projection matrix with given CUBE size + + Parameters: + | *[in]* **aspect** aspect ration ( width / height ) + | *[in]* **size** cube size + | *[out]* **dest** result matrix + +.. c:function:: void glm_perspective(float fovy, float aspect, float nearVal, float farVal, mat4 dest) + + | set up perspective projection matrix + + Parameters: + | *[in]* **fovy** field of view angle (in radians) + | *[in]* **aspect** aspect ratio ( width / height ) + | *[in]* **nearVal** near clipping plane + | *[in]* **farVal** far clipping planes + | *[out]* **dest** result matrix + +.. c:function:: void glm_persp_move_far(mat4 proj, float deltaFar) + + | extend perspective projection matrix's far distance + + | this function does not guarantee far >= near, be aware of that! + + Parameters: + | *[in, out]* **proj** projection matrix to extend + | *[in]* **deltaFar** distance from existing far (negative to shink) + +.. c:function:: void glm_perspective_default(float aspect, mat4 dest) + + | set up perspective projection matrix with default near/far + and angle values + + Parameters: + | *[in]* **aspect** aspect aspect ratio ( width / height ) + | *[out]* **dest** result matrix + +.. c:function:: void glm_perspective_resize(float aspect, mat4 proj) + + | resize perspective matrix by aspect ratio ( width / height ) + this makes very easy to resize proj matrix when window / viewport reized + + Parameters: + | *[in]* **aspect** aspect ratio ( width / height ) + | *[in, out]* **proj** perspective projection matrix + +.. c:function:: void glm_lookat(vec3 eye, vec3 center, vec3 up, mat4 dest) + + | set up view matrix + + **NOTE:** The UP vector must not be parallel to the line of sight from the eye point to the reference point. + + Parameters: + | *[in]* **eye** eye vector + | *[in]* **center** center vector + | *[in]* **up** up vector + | *[out]* **dest** result matrix + +.. c:function:: void glm_look(vec3 eye, vec3 dir, vec3 up, mat4 dest) + + | set up view matrix + + convenient wrapper for :c:func:`glm_lookat`: if you only have direction not + target self then this might be useful. Because you need to get target + from direction. + + **NOTE:** The UP vector must not be parallel to the line of sight from the eye point to the reference point. + + Parameters: + | *[in]* **eye** eye vector + | *[in]* **dir** direction vector + | *[in]* **up** up vector + | *[out]* **dest** result matrix + +.. c:function:: void glm_look_anyup(vec3 eye, vec3 dir, mat4 dest) + + | set up view matrix + + convenient wrapper for :c:func:`glm_look` if you only have direction + and if you don't care what UP vector is then this might be useful + to create view matrix + + Parameters: + | *[in]* **eye** eye vector + | *[in]* **dir** direction vector + | *[out]* **dest** result matrix + +.. c:function:: void glm_persp_decomp(mat4 proj, float *nearVal, float *farVal, float *top, float *bottom, float *left, float *right) + + | decomposes frustum values of perspective projection. + + Parameters: + | *[in]* **eye** perspective projection matrix + | *[out]* **nearVal** near + | *[out]* **farVal** far + | *[out]* **top** top + | *[out]* **bottom** bottom + | *[out]* **left** left + | *[out]* **right** right + +.. c:function:: void glm_persp_decompv(mat4 proj, float dest[6]) + + | decomposes frustum values of perspective projection. + | this makes easy to get all values at once + + Parameters: + | *[in]* **proj** perspective projection matrix + | *[out]* **dest** array + +.. c:function:: void glm_persp_decomp_x(mat4 proj, float *left, float *right) + + | decomposes left and right values of perspective projection. + | x stands for x axis (left / right axis) + + Parameters: + | *[in]* **proj** perspective projection matrix + | *[out]* **left** left + | *[out]* **right** right + +.. c:function:: void glm_persp_decomp_y(mat4 proj, float *top, float *bottom) + + | decomposes top and bottom values of perspective projection. + | y stands for y axis (top / botom axis) + + Parameters: + | *[in]* **proj** perspective projection matrix + | *[out]* **top** top + | *[out]* **bottom** bottom + +.. c:function:: void glm_persp_decomp_z(mat4 proj, float *nearVal, float *farVal) + + | decomposes near and far values of perspective projection. + | z stands for z axis (near / far axis) + + Parameters: + | *[in]* **proj** perspective projection matrix + | *[out]* **nearVal** near + | *[out]* **farVal** far + +.. c:function:: void glm_persp_decomp_far(mat4 proj, float * __restrict farVal) + + | decomposes far value of perspective projection. + + Parameters: + | *[in]* **proj** perspective projection matrix + | *[out]* **farVal** far + +.. c:function:: void glm_persp_decomp_near(mat4 proj, float * __restrict nearVal) + + | decomposes near value of perspective projection. + + Parameters: + | *[in]* **proj** perspective projection matrix + | *[out]* **nearVal** near + +.. c:function:: float glm_persp_fovy(mat4 proj) + + | returns field of view angle along the Y-axis (in radians) + + if you need to degrees, use glm_deg to convert it or use this: + fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + + Parameters: + | *[in]* **proj** perspective projection matrix + + Returns: + | fovy in radians + +.. c:function:: float glm_persp_aspect(mat4 proj) + + | returns aspect ratio of perspective projection + + Parameters: + | *[in]* **proj** perspective projection matrix + +.. c:function:: void glm_persp_sizes(mat4 proj, float fovy, vec4 dest) + + | returns sizes of near and far planes of perspective projection + + Parameters: + | *[in]* **proj** perspective projection matrix + | *[in]* **fovy** fovy (see brief) + | *[out]* **dest** sizes order: [Wnear, Hnear, Wfar, Hfar] diff --git a/lib/cglm/docs/source/cglm-intro.png b/lib/cglm/docs/source/cglm-intro.png new file mode 100644 index 0000000..74ac74e Binary files /dev/null and b/lib/cglm/docs/source/cglm-intro.png differ diff --git a/lib/cglm/docs/source/color.rst b/lib/cglm/docs/source/color.rst new file mode 100644 index 0000000..62a4dc1 --- /dev/null +++ b/lib/cglm/docs/source/color.rst @@ -0,0 +1,34 @@ +.. default-domain:: C + +color +================================================================================ + +Header: cglm/color.h + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_luminance` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: float glm_luminance(vec3 rgb) + + | averages the color channels into one value + + This function uses formula in COLLADA 1.5 spec which is + + .. code-block:: text + + luminance = (color.r * 0.212671) + + (color.g * 0.715160) + + (color.b * 0.072169) + + It is based on the ISO/CIE color standards (see ITU-R Recommendation BT.709-4), + that averages the color channels into one value + + Parameters: + | *[in]* **rgb** RGB color diff --git a/lib/cglm/docs/source/conf.py b/lib/cglm/docs/source/conf.py new file mode 100644 index 0000000..4eaa120 --- /dev/null +++ b/lib/cglm/docs/source/conf.py @@ -0,0 +1,203 @@ +# -*- coding: utf-8 -*- +# +# cglm documentation build configuration file, created by +# sphinx-quickstart on Tue Jun 6 20:31:05 2017. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '3.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.doctest', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages' +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'cglm' +copyright = u'2017, Recep Aslantas' +author = u'Recep Aslantas' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'0.8.7' +# The full version, including alpha/beta/rc tags. +release = u'0.8.7' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +html_theme_options = { + # 'github_banner': 'true', + # 'github_button': 'true', + # 'github_user': 'recp', + # 'github_repo': 'cglm', + # 'travis_button': 'true', + # 'show_related': 'true', + # 'fixed_sidebar': 'true' +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'cglmdoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'cglm.tex', u'cglm Documentation', + u'Recep Aslantas', 'manual'), +] + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'cglm', u'cglm Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'cglm', u'cglm Documentation', + author, 'cglm', 'One line description of project.', + 'Miscellaneous'), +] + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + +# -- Options for the C domain ------------------------------------------------ + +c_id_attributes = ['__restrict'] diff --git a/lib/cglm/docs/source/curve.rst b/lib/cglm/docs/source/curve.rst new file mode 100644 index 0000000..26c9b75 --- /dev/null +++ b/lib/cglm/docs/source/curve.rst @@ -0,0 +1,41 @@ +.. default-domain:: C + +Curve +================================================================================ + +Header: cglm/curve.h + +Common helpers for common curves. For specific curve see its header/doc +e.g bezier + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_smc` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: float glm_smc(float s, mat4 m, vec4 c) + + | helper function to calculate **S** * **M** * **C** multiplication for curves + + | this function does not encourage you to use SMC, instead it is a helper if you use SMC. + + | if you want to specify S as vector then use more generic glm_mat4_rmc() func. + + | Example usage: + + .. code-block:: c + + Bs = glm_smc(s, GLM_BEZIER_MAT, (vec4){p0, c0, c1, p1}) + + Parameters: + | *[in]* **s** parameter between 0 and 1 (this will be [s3, s2, s, 1]) + | *[in]* **m** basis matrix + | *[out]* **c** position/control vector + + Returns: + scalar value e.g. Bs diff --git a/lib/cglm/docs/source/euler.rst b/lib/cglm/docs/source/euler.rst new file mode 100644 index 0000000..74ba4c2 --- /dev/null +++ b/lib/cglm/docs/source/euler.rst @@ -0,0 +1,182 @@ +.. default-domain:: C + +euler angles +============ + +Header: cglm/euler.h + +You may wonder what **glm_euler_sq** type ( **_sq** stands for sequence ) and +:c:func:`glm_euler_by_order` do. +I used them to convert euler angles in one coordinate system to another. For +instance if you have **Z_UP** euler angles and if you want to convert it +to **Y_UP** axis then :c:func:`glm_euler_by_order` is your friend. For more +information check :c:func:`glm_euler_order` documentation + +You must pass arrays as array, if you use C compiler then you can use something +like this: + +.. code-block:: c + + float pitch, yaw, roll; + mat4 rot; + + /* pitch = ...; yaw = ...; roll = ... */ + glm_euler((vec3){pitch, yaw, roll}, rot); + +Rotation Conveniention +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Current *cglm*'s euler functions uses these convention: + +* Tait–Bryan angles (x-y-z convention) +* Intrinsic rotations (pitch, yaw and roll). + This is reserve order of extrinsic (elevation, heading and bank) rotation +* Right hand rule (actually all rotations in *cglm* use **RH**) +* All angles used in *cglm* are **RADIANS** not degrees + + +**NOTE**: The default :c:func:`glm_euler` function is the short name of +:c:func:`glm_euler_xyz` this is why you can't see :c:func:`glm_euler_xyz`. +When you see an euler function which doesn't have any X, Y, Z suffix then +assume that uses **_xyz** (or instead it accept order as parameter). + +If rotation doesn't work properly, your options: + +1. If you use (or paste) degrees convert it to radians before calling an euler function + +.. code-block:: c + + float pitch, yaw, roll; + mat4 rot; + + /* pitch = degrees; yaw = degrees; roll = degrees */ + glm_euler((vec3){glm_rad(pitch), glm_rad(yaw), glm_rad(roll)}, rot); + +2. Convention mismatch. You may have extrinsic angles, + if you do (if you must) then consider to use reverse order e.g if you have + **xyz** extrinsic then use **zyx** + +3. *cglm* may implemented it wrong, consider to create an issue to report it + or pull request to fix it + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Types: + +1. glm_euler_sq + +Functions: + +1. :c:func:`glm_euler_order` +#. :c:func:`glm_euler_angles` +#. :c:func:`glm_euler` +#. :c:func:`glm_euler_xyz` +#. :c:func:`glm_euler_zyx` +#. :c:func:`glm_euler_zxy` +#. :c:func:`glm_euler_xzy` +#. :c:func:`glm_euler_yzx` +#. :c:func:`glm_euler_yxz` +#. :c:func:`glm_euler_by_order` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: glm_euler_sq glm_euler_order(int ord[3]) + + | packs euler angles order to glm_euler_sq enum. + + To use :c:func:`glm_euler_by_order` function you need *glm_euler_sq*. You + can get it with this function. + + You can build param like this: + + | X = 0, Y = 1, Z = 2 + + if you have ZYX order then you pass this: [2, 1, 0] = ZYX. + if you have YXZ order then you pass this: [1, 0, 2] = YXZ + + As you can see first item specifies which axis will be first then the + second one specifies which one will be next an so on. + + Parameters: + | *[in]* **ord** euler angles order [Angle1, Angle2, Angle2] + + Returns: + packed euler order + +.. c:function:: void glm_euler_angles(mat4 m, vec3 dest) + + | extract euler angles (in radians) using xyz order + + Parameters: + | *[in]* **m** affine transform + | *[out]* **dest** angles vector [x, y, z] + +.. c:function:: void glm_euler(vec3 angles, mat4 dest) + + | build rotation matrix from euler angles + + this is alias of glm_euler_xyz function + + Parameters: + | *[in]* **angles** angles as vector [Xangle, Yangle, Zangle] + | *[in]* **dest** rotation matrix + +.. c:function:: void glm_euler_xyz(vec3 angles, mat4 dest) + + | build rotation matrix from euler angles + + Parameters: + | *[in]* **angles** angles as vector [Xangle, Yangle, Zangle] + | *[in]* **dest** rotation matrix + +.. c:function:: void glm_euler_zyx(vec3 angles, mat4 dest) + + | build rotation matrix from euler angles + + Parameters: + | *[in]* **angles** angles as vector [Xangle, Yangle, Zangle] + | *[in]* **dest** rotation matrix + +.. c:function:: void glm_euler_zxy(vec3 angles, mat4 dest) + + | build rotation matrix from euler angles + + Parameters: + | *[in]* **angles** angles as vector [Xangle, Yangle, Zangle] + | *[in]* **dest** rotation matrix + +.. c:function:: void glm_euler_xzy(vec3 angles, mat4 dest) + + | build rotation matrix from euler angles + + Parameters: + | *[in]* **angles** angles as vector [Xangle, Yangle, Zangle] + | *[in]* **dest** rotation matrix + +.. c:function:: void glm_euler_yzx(vec3 angles, mat4 dest) + + build rotation matrix from euler angles + + Parameters: + | *[in]* **angles** angles as vector [Xangle, Yangle, Zangle] + | *[in]* **dest** rotation matrix + +.. c:function:: void glm_euler_yxz(vec3 angles, mat4 dest) + + | build rotation matrix from euler angles + + Parameters: + | *[in]* **angles** angles as vector [Xangle, Yangle, Zangle] + | *[in]* **dest** rotation matrix + +.. c:function:: void glm_euler_by_order(vec3 angles, glm_euler_sq ord, mat4 dest) + + | build rotation matrix from euler angles with given euler order. + + Use :c:func:`glm_euler_order` function to build *ord* parameter + + Parameters: + | *[in]* **angles** angles as vector [Xangle, Yangle, Zangle] + | *[in]* **ord** euler order + | *[in]* **dest** rotation matrix diff --git a/lib/cglm/docs/source/features.rst b/lib/cglm/docs/source/features.rst new file mode 100644 index 0000000..8113f63 --- /dev/null +++ b/lib/cglm/docs/source/features.rst @@ -0,0 +1,28 @@ +Features +================================================================================ + +* **scalar** and **simd** (sse, avx, neon...) optimizations +* option to use different clipspaces e.g. Left Handed, Zero-to-One... (currrently right handed negative-one is default) +* array api and struct api, you can use arrays or structs. +* general purpose matrix operations (mat4, mat3) +* chain matrix multiplication (square only) +* general purpose vector operations (cross, dot, rotate, proj, angle...) +* affine transformations +* matrix decomposition (extract rotation, scaling factor) +* optimized affine transform matrices (mul, rigid-body inverse) +* camera (lookat) +* projections (ortho, perspective) +* quaternions +* euler angles / yaw-pitch-roll to matrix +* extract euler angles +* inline or pre-compiled function call +* frustum (extract view frustum planes, corners...) +* bounding box (AABB in Frustum (culling), crop, merge...) +* bounding sphere +* project, unproject +* easing functions +* curves +* curve interpolation helpers (SMC, deCasteljau...) +* helpers to convert cglm types to Apple's simd library to pass cglm types to Metal GL without packing them on both sides +* ray intersection helpers +* and others... diff --git a/lib/cglm/docs/source/frustum.rst b/lib/cglm/docs/source/frustum.rst new file mode 100644 index 0000000..b58913c --- /dev/null +++ b/lib/cglm/docs/source/frustum.rst @@ -0,0 +1,168 @@ +.. default-domain:: C + +frustum +============= + +Header: cglm/frustum.h + +cglm provides convenient functions to extract frustum planes, corners... +All extracted corners are **vec4** so you must create array of **vec4** +not **vec3**. If you want to store them to save space you msut convert them +yourself. + +**vec4** is used to speed up functions need to corners. This is why frustum +fucntions use *vec4* instead of *vec3* + +Currenty related-functions use [-1, 1] clip space configuration to extract +corners but you can override it by prodiving **GLM_CUSTOM_CLIPSPACE** macro. +If you provide it then you have to all bottom macros as *vec4* + +Current configuration: + +.. code-block:: c + + /* near */ + GLM_CSCOORD_LBN {-1.0f, -1.0f, -1.0f, 1.0f} + GLM_CSCOORD_LTN {-1.0f, 1.0f, -1.0f, 1.0f} + GLM_CSCOORD_RTN { 1.0f, 1.0f, -1.0f, 1.0f} + GLM_CSCOORD_RBN { 1.0f, -1.0f, -1.0f, 1.0f} + + /* far */ + GLM_CSCOORD_LBF {-1.0f, -1.0f, 1.0f, 1.0f} + GLM_CSCOORD_LTF {-1.0f, 1.0f, 1.0f, 1.0f} + GLM_CSCOORD_RTF { 1.0f, 1.0f, 1.0f, 1.0f} + GLM_CSCOORD_RBF { 1.0f, -1.0f, 1.0f, 1.0f} + + +Explain of short names: + * **LBN**: left bottom near + * **LTN**: left top near + * **RTN**: right top near + * **RBN**: right bottom near + * **LBF**: left bottom far + * **LTF**: left top far + * **RTF**: right top far + * **RBF**: right bottom far + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Macros: + +.. code-block:: c + + GLM_LBN 0 /* left bottom near */ + GLM_LTN 1 /* left top near */ + GLM_RTN 2 /* right top near */ + GLM_RBN 3 /* right bottom near */ + + GLM_LBF 4 /* left bottom far */ + GLM_LTF 5 /* left top far */ + GLM_RTF 6 /* right top far */ + GLM_RBF 7 /* right bottom far */ + + GLM_LEFT 0 + GLM_RIGHT 1 + GLM_BOTTOM 2 + GLM_TOP 3 + GLM_NEAR 4 + GLM_FAR 5 + +Functions: + +1. :c:func:`glm_frustum_planes` +#. :c:func:`glm_frustum_corners` +#. :c:func:`glm_frustum_center` +#. :c:func:`glm_frustum_box` +#. :c:func:`glm_frustum_corners_at` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_frustum_planes(mat4 m, vec4 dest[6]) + + | extracts view frustum planes + + planes' space: + - if m = proj: View Space + - if m = viewProj: World Space + - if m = MVP: Object Space + + You probably want to extract planes in world space so use viewProj as m + Computing viewProj: + + .. code-block:: c + + glm_mat4_mul(proj, view, viewProj); + + Exracted planes order: [left, right, bottom, top, near, far] + + Parameters: + | *[in]* **m** matrix + | *[out]* **dest** exracted view frustum planes + +.. c:function:: void glm_frustum_corners(mat4 invMat, vec4 dest[8]) + + | extracts view frustum corners using clip-space coordinates + + corners' space: + - if m = invViewProj: World Space + - if m = invMVP: Object Space + + You probably want to extract corners in world space so use **invViewProj** + Computing invViewProj: + + .. code-block:: c + + glm_mat4_mul(proj, view, viewProj); + ... + glm_mat4_inv(viewProj, invViewProj); + + if you have a near coord at **i** index, + you can get it's far coord by i + 4; + follow example below to understand that + + For instance to find center coordinates between a near and its far coord: + + .. code-block:: c + + for (j = 0; j < 4; j++) { + glm_vec3_center(corners[i], corners[i + 4], centerCorners[i]); + } + + corners[i + 4] is far of corners[i] point. + + Parameters: + | *[in]* **invMat** matrix + | *[out]* **dest** exracted view frustum corners + +.. c:function:: void glm_frustum_center(vec4 corners[8], vec4 dest) + + | finds center of view frustum + + Parameters: + | *[in]* **corners** view frustum corners + | *[out]* **dest** view frustum center + +.. c:function:: void glm_frustum_box(vec4 corners[8], mat4 m, vec3 box[2]) + + | finds bounding box of frustum relative to given matrix e.g. view mat + + Parameters: + | *[in]* **corners** view frustum corners + | *[in]* **m** matrix to convert existing conners + | *[out]* **box** bounding box as array [min, max] + +.. c:function:: void glm_frustum_corners_at(vec4 corners[8], float splitDist, float farDist, vec4 planeCorners[4]) + + | finds planes corners which is between near and far planes (parallel) + + this will be helpful if you want to split a frustum e.g. CSM/PSSM. This will + find planes' corners but you will need to one more plane. + Actually you have it, it is near, far or created previously with this func ;) + + Parameters: + | *[in]* **corners** frustum corners + | *[in]* **splitDist** split distance + | *[in]* **farDist** far distance (zFar) + | *[out]* **planeCorners** plane corners [LB, LT, RT, RB] diff --git a/lib/cglm/docs/source/getting_started.rst b/lib/cglm/docs/source/getting_started.rst new file mode 100644 index 0000000..bf2b8f3 --- /dev/null +++ b/lib/cglm/docs/source/getting_started.rst @@ -0,0 +1,105 @@ +Getting Started +================================ + +Types: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**cglm** uses **glm** prefix for all functions e.g. glm_lookat. You can see supported types in common header file: + +.. code-block:: c + :linenos: + + typedef float vec2[2]; + typedef float vec3[3]; + typedef int ivec3[3]; + typedef CGLM_ALIGN_IF(16) float vec4[4]; + typedef vec4 versor; + typedef vec3 mat3[3]; + + #ifdef __AVX__ + typedef CGLM_ALIGN_IF(32) vec4 mat4[4]; + #else + typedef CGLM_ALIGN_IF(16) vec4 mat4[4]; + #endif + +As you can see types don't store extra informations in favor of space. +You can send these values e.g. matrix to OpenGL directly without casting or calling a function like *value_ptr* + +Alignment Is Required: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**vec4** and **mat4** requires 16 (32 for **mat4** if AVX is enabled) byte alignment because **vec4** and **mat4** operations are vectorized by SIMD instructions (SSE/AVX/NEON). + +**UPDATE:** + By starting v0.4.5 cglm provides an option to disable alignment requirement, it is enabled as default + + | Check :doc:`opt` page for more details + + Also alignment is disabled for older msvc verisons as default. Now alignment is only required in Visual Studio 2017 version 15.6+ if CGLM_ALL_UNALIGNED macro is not defined. + +Allocations: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*cglm* doesn't alloc any memory on heap. So it doesn't provide any allocator. +You must allocate memory yourself. You should alloc memory for out parameters too if you pass pointer of memory location. When allocating memory, don't forget that **vec4** and **mat4** require alignment. + +**NOTE:** Unaligned **vec4** and unaligned **mat4** operations will be supported in the future. Check todo list. +Because you may want to multiply a CGLM matrix with external matrix. +There is no guarantee that non-CGLM matrix is aligned. Unaligned types will have *u* prefix e.g. **umat4** + +Array vs Struct: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*cglm* uses arrays for vector and matrix types. So you can't access individual +elements like vec.x, vec.y, vec.z... You must use subscript to access vector elements +e.g. vec[0], vec[1], vec[2]. + +Also I think it is more meaningful to access matrix elements with subscript +e.g **matrix[2][3]** instead of **matrix._23**. Since matrix is array of vectors, +vectors are also defined as array. This makes types homogeneous. + +**Return arrays?** + +Since C doesn't support return arrays, cglm also doesn't support this feature. + +Function design: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. image:: cglm-intro.png + :width: 492px  + :height: 297px + :align: center + +cglm provides a few way to call a function to do same operation. + +* Inline - *glm_, glm_u* +* Pre-compiled - *glmc_, glmc_u* + +For instance **glm_mat4_mul** is inline (all *glm_* functions are inline), to make it non-inline (pre-compiled), +call it as **glmc_mat4_mul** from library, to use unaligned version use **glm_umat4_mul** (todo). + +Most functions have **dest** parameter for output. For instance mat4_mul func looks like this: + +.. code-block:: c + + CGLM_INLINE + void + glm_mat4_mul(mat4 m1, mat4 m2, mat4 dest) + +The dest parameter is out parameter. Result will be stored in **dest**. +Also in this case matrix multiplication order is dest = m1 * m2. + +* Changing parameter order will change the multiplication order. +* You can pass all parameter same (this is similar to m1 `*=` m1), you can pass **dest** as m1 or m2 (this is similar to m1 `*=` m2) + +**v** postfix in function names +------------------------------- + +You may see **v** postfix in some function names, v stands for vector. +For instance consider a function that accepts three parameters x, y, z. +This function may be overloaded by **v** postfix to accept vector (vec3) instead of separate parameters. +In some places the v means that it will be apply to a vector. + +**_to** postfix in function names +--------------------------------- + +*_to* version of function will store the result in specified parameter instead of in-out parameter. +Some functions don't have _to prefix but they still behave like this e.g. glm_mat4_mul. diff --git a/lib/cglm/docs/source/index.rst b/lib/cglm/docs/source/index.rst new file mode 100644 index 0000000..34a71c4 --- /dev/null +++ b/lib/cglm/docs/source/index.rst @@ -0,0 +1,53 @@ +.. cglm documentation master file, created by + sphinx-quickstart on Tue Jun 6 20:31:05 2017. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +cglm Documentation +================================ + +**cglm** is an optimized 3D math library written in C99 (compatible with C89). +It is similar to the original **glm** library, except **cglm** is mainly for +**C**. + +**cglm** stores matrices as column-major order but in the future row-major is +considered to be supported as optional. + +.. toctree:: + :maxdepth: 2 + :caption: Getting Started: + + features + build + getting_started + +.. toctree:: + :maxdepth: 2 + :caption: How To: + + opengl + +.. toctree:: + :maxdepth: 2 + :caption: API: + + api + +.. toctree:: + :maxdepth: 2 + :caption: Options: + + opt + +.. toctree:: + :maxdepth: 2 + :caption: Troubleshooting: + + troubleshooting + +Indices and Tables: +=================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/lib/cglm/docs/source/io.rst b/lib/cglm/docs/source/io.rst new file mode 100644 index 0000000..cead0be --- /dev/null +++ b/lib/cglm/docs/source/io.rst @@ -0,0 +1,119 @@ +.. default-domain:: C + +io (input / output e.g. print) +================================================================================ + +Header: cglm/io.h + +There are some built-in print functions which may save your time, +especially for debugging. + +All functions accept **FILE** parameter which makes very flexible. +You can even print it to file on disk. + +In general you will want to print them to console to see results. +You can use **stdout** and **stderr** to write results to console. +Some programs may occupy **stdout** but you can still use **stderr**. +Using **stderr** is suggested. + +Example to print mat4 matrix: + +.. code-block:: c + + mat4 transform; + /* ... */ + glm_mat4_print(transform, stderr); + +**NOTE:** print functions use **%0.4f** precision if you need more +(you probably will in some cases), you can change it temporary. +cglm may provide precision parameter in the future + +Changes since **v0.7.3**: +* Now mis-alignment of columns are fixed: larger numbers are printed via %g and others are printed via %f. Column withs are calculated before print. +* Now values are colorful ;) +* Some print improvements +* New options with default values: + +.. code-block:: c + + #define CGLM_PRINT_PRECISION 5 + #define CGLM_PRINT_MAX_TO_SHORT 1e5 + #define CGLM_PRINT_COLOR "\033[36m" + #define CGLM_PRINT_COLOR_RESET "\033[0m" + +* Inline prints are only enabled in DEBUG mode and if **CGLM_DEFINE_PRINTS** is defined. + +Check options page. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_mat4_print` +#. :c:func:`glm_mat3_print` +#. :c:func:`glm_vec4_print` +#. :c:func:`glm_vec3_print` +#. :c:func:`glm_ivec3_print` +#. :c:func:`glm_versor_print` +#. :c:func:`glm_aabb_print` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_mat4_print(mat4 matrix, FILE * __restrict ostream) + + | print mat4 to given stream + + Parameters: + | *[in]* **matrix** matrix + | *[in]* **ostream** FILE to write + +.. c:function:: void glm_mat3_print(mat3 matrix, FILE * __restrict ostream) + + | print mat3 to given stream + + Parameters: + | *[in]* **matrix** matrix + | *[in]* **ostream** FILE to write + +.. c:function:: void glm_vec4_print(vec4 vec, FILE * __restrict ostream) + + | print vec4 to given stream + + Parameters: + | *[in]* **vec** vector + | *[in]* **ostream** FILE to write + +.. c:function:: void glm_vec3_print(vec3 vec, FILE * __restrict ostream) + + | print vec3 to given stream + + Parameters: + | *[in]* **vec** vector + | *[in]* **ostream** FILE to write + +.. c:function:: void glm_ivec3_print(ivec3 vec, FILE * __restrict ostream) + + | print ivec3 to given stream + + Parameters: + | *[in]* **vec** vector + | *[in]* **ostream** FILE to write + +.. c:function:: void glm_versor_print(versor vec, FILE * __restrict ostream) + + | print quaternion to given stream + + Parameters: + | *[in]* **vec** quaternion + | *[in]* **ostream** FILE to write + +.. c:function:: void glm_aabb_print(versor vec, const char * __restrict tag, FILE * __restrict ostream) + + | print aabb to given stream + + Parameters: + | *[in]* **vec** aabb (axis-aligned bounding box) + | *[in]* **tag** tag to find it more easly in logs + | *[in]* **ostream** FILE to write diff --git a/lib/cglm/docs/source/ivec2.rst b/lib/cglm/docs/source/ivec2.rst new file mode 100644 index 0000000..c10bc4c --- /dev/null +++ b/lib/cglm/docs/source/ivec2.rst @@ -0,0 +1,163 @@ +.. default-domain:: C + +ivec2 +===== + +Header: cglm/ivec2.h + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_ivec2` +#. :c:func:`glm_ivec2_copy` +#. :c:func:`glm_ivec2_zero` +#. :c:func:`glm_ivec2_one` +#. :c:func:`glm_ivec2_add` +#. :c:func:`glm_ivec2_adds` +#. :c:func:`glm_ivec2_sub` +#. :c:func:`glm_ivec2_subs` +#. :c:func:`glm_ivec2_mul` +#. :c:func:`glm_ivec2_scale` +#. :c:func:`glm_ivec2_distance2` +#. :c:func:`glm_ivec2_distance` +#. :c:func:`glm_ivec2_maxv` +#. :c:func:`glm_ivec2_minv` +#. :c:func:`glm_ivec2_clamp` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_ivec2(int * v, ivec2 dest) + + init ivec2 using vec3 or vec4 + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_copy(ivec2 a, ivec2 dest) + + copy all members of [a] to [dest] + + Parameters: + | *[in]* **a** source vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_zero(ivec2 v) + + set all members of [v] to zero + + Parameters: + | *[out]* **v** vector + +.. c:function:: void glm_ivec2_one(ivec2 v) + + set all members of [v] to one + + Parameters: + | *[out]* **v** vector + +.. c:function:: void glm_ivec2_add(ivec2 a, ivec2 b, ivec2 dest) + + add vector [a] to vector [b] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_adds(ivec2 v, int s, ivec2 dest) + + add scalar s to vector [v] and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_sub(ivec2 a, ivec2 b, ivec2 dest) + + subtract vector [b] from vector [a] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_subs(ivec2 v, int s, ivec2 dest) + + subtract scalar s from vector [v] and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_mul(ivec2 a, ivec2 b, ivec2 dest) + + multiply vector [a] with vector [b] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_scale(ivec2 v, int s, ivec2 dest) + + multiply vector [a] with scalar s and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: int glm_ivec2_distance2(ivec2 a, ivec2 b) + + squared distance between two vectors + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + + Returns: + squared distance (distance * distance) + +.. c:function:: float glm_ivec2_distance(ivec2 a, ivec2 b) + + distance between two vectors + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + + Returns: + distance + +.. c:function:: void glm_ivec2_maxv(ivec2 a, ivec2 b, ivec2 dest) + + set each member of dest to greater of vector a and b + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_minv(ivec2 a, ivec2 b, ivec2 dest) + + set each member of dest to lesser of vector a and b + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec2_clamp(ivec2 v, int minVal, int maxVal) + + clamp each member of [v] between minVal and maxVal (inclusive) + + Parameters: + | *[in, out]* **v** vector + | *[in]* **minVal** minimum value + | *[in]* **maxVal** maximum value diff --git a/lib/cglm/docs/source/ivec3.rst b/lib/cglm/docs/source/ivec3.rst new file mode 100644 index 0000000..312078a --- /dev/null +++ b/lib/cglm/docs/source/ivec3.rst @@ -0,0 +1,163 @@ +.. default-domain:: C + +ivec3 +===== + +Header: cglm/ivec3.h + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_ivec3` +#. :c:func:`glm_ivec3_copy` +#. :c:func:`glm_ivec3_zero` +#. :c:func:`glm_ivec3_one` +#. :c:func:`glm_ivec3_add` +#. :c:func:`glm_ivec3_adds` +#. :c:func:`glm_ivec3_sub` +#. :c:func:`glm_ivec3_subs` +#. :c:func:`glm_ivec3_mul` +#. :c:func:`glm_ivec3_scale` +#. :c:func:`glm_ivec3_distance2` +#. :c:func:`glm_ivec3_distance` +#. :c:func:`glm_ivec3_maxv` +#. :c:func:`glm_ivec3_minv` +#. :c:func:`glm_ivec3_clamp` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_ivec3(ivec4 v4, ivec3 dest) + + init ivec3 using ivec4 + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_copy(ivec3 a, ivec3 dest) + + copy all members of [a] to [dest] + + Parameters: + | *[in]* **a** source vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_zero(ivec3 v) + + set all members of [v] to zero + + Parameters: + | *[out]* **v** vector + +.. c:function:: void glm_ivec3_one(ivec3 v) + + set all members of [v] to one + + Parameters: + | *[out]* **v** vector + +.. c:function:: void glm_ivec3_add(ivec3 a, ivec3 b, ivec3 dest) + + add vector [a] to vector [b] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_adds(ivec3 v, int s, ivec3 dest) + + add scalar s to vector [v] and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_sub(ivec3 a, ivec3 b, ivec3 dest) + + subtract vector [b] from vector [a] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_subs(ivec3 v, int s, ivec3 dest) + + subtract scalar s from vector [v] and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_mul(ivec3 a, ivec3 b, ivec3 dest) + + multiply vector [a] with vector [b] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_scale(ivec3 v, int s, ivec3 dest) + + multiply vector [a] with scalar s and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: int glm_ivec3_distance2(ivec3 a, ivec3 b) + + squared distance between two vectors + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + + Returns: + squared distance (distance * distance) + +.. c:function:: float glm_ivec3_distance(ivec3 a, ivec3 b) + + distance between two vectors + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + + Returns: + distance + +.. c:function:: void glm_ivec3_maxv(ivec3 a, ivec3 b, ivec3 dest) + + set each member of dest to greater of vector a and b + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_minv(ivec3 a, ivec3 b, ivec3 dest) + + set each member of dest to lesser of vector a and b + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec3_clamp(ivec3 v, int minVal, int maxVal) + + clamp each member of [v] between minVal and maxVal (inclusive) + + Parameters: + | *[in, out]* **v** vector + | *[in]* **minVal** minimum value + | *[in]* **maxVal** maximum value diff --git a/lib/cglm/docs/source/ivec4.rst b/lib/cglm/docs/source/ivec4.rst new file mode 100644 index 0000000..a175631 --- /dev/null +++ b/lib/cglm/docs/source/ivec4.rst @@ -0,0 +1,163 @@ +.. default-domain:: C + +ivec4 +===== + +Header: cglm/ivec4.h + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_ivec4` +#. :c:func:`glm_ivec4_copy` +#. :c:func:`glm_ivec4_zero` +#. :c:func:`glm_ivec4_one` +#. :c:func:`glm_ivec4_add` +#. :c:func:`glm_ivec4_adds` +#. :c:func:`glm_ivec4_sub` +#. :c:func:`glm_ivec4_subs` +#. :c:func:`glm_ivec4_mul` +#. :c:func:`glm_ivec4_scale` +#. :c:func:`glm_ivec4_distance2` +#. :c:func:`glm_ivec4_distance` +#. :c:func:`glm_ivec4_maxv` +#. :c:func:`glm_ivec4_minv` +#. :c:func:`glm_ivec4_clamp` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_ivec4(ivec3 v3, int last, ivec4 dest) + + init ivec4 using ivec3 + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_copy(ivec4 a, ivec4 dest) + + copy all members of [a] to [dest] + + Parameters: + | *[in]* **a** source vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_zero(ivec4 v) + + set all members of [v] to zero + + Parameters: + | *[out]* **v** vector + +.. c:function:: void glm_ivec4_one(ivec4 v) + + set all members of [v] to one + + Parameters: + | *[out]* **v** vector + +.. c:function:: void glm_ivec4_add(ivec4 a, ivec4 b, ivec4 dest) + + add vector [a] to vector [b] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_adds(ivec4 v, int s, ivec4 dest) + + add scalar s to vector [v] and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_sub(ivec4 a, ivec4 b, ivec4 dest) + + subtract vector [b] from vector [a] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_subs(ivec4 v, int s, ivec4 dest) + + subtract scalar s from vector [v] and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_mul(ivec4 a, ivec4 b, ivec4 dest) + + multiply vector [a] with vector [b] and store result in [dest] + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_scale(ivec4 v, int s, ivec4 dest) + + multiply vector [a] with scalar s and store result in [dest] + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination + +.. c:function:: int glm_ivec4_distance2(ivec4 a, ivec4 b) + + squared distance between two vectors + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + + Returns: + squared distance (distance * distance) + +.. c:function:: float glm_ivec4_distance(ivec4 a, ivec4 b) + + distance between two vectors + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + + Returns: + distance + +.. c:function:: void glm_ivec4_maxv(ivec4 a, ivec4 b, ivec4 dest) + + set each member of dest to greater of vector a and b + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_minv(ivec4 a, ivec4 b, ivec4 dest) + + set each member of dest to lesser of vector a and b + + Parameters: + | *[in]* **a** first vector + | *[in]* **b** second vector + | *[out]* **dest** destination + +.. c:function:: void glm_ivec4_clamp(ivec4 v, int minVal, int maxVal) + + clamp each member of [v] between minVal and maxVal (inclusive) + + Parameters: + | *[in, out]* **v** vector + | *[in]* **minVal** minimum value + | *[in]* **maxVal** maximum value diff --git a/lib/cglm/docs/source/mat2.rst b/lib/cglm/docs/source/mat2.rst new file mode 100644 index 0000000..6e55c83 --- /dev/null +++ b/lib/cglm/docs/source/mat2.rst @@ -0,0 +1,179 @@ +.. default-domain:: C + +mat2 +==== + +Header: cglm/mat2.h + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Macros: + +1. GLM_mat2_IDENTITY_INIT +#. GLM_mat2_ZERO_INIT +#. GLM_mat2_IDENTITY +#. GLM_mat2_ZERO + +Functions: + +1. :c:func:`glm_mat2_copy` +#. :c:func:`glm_mat2_identity` +#. :c:func:`glm_mat2_identity_array` +#. :c:func:`glm_mat2_zero` +#. :c:func:`glm_mat2_mul` +#. :c:func:`glm_mat2_transpose_to` +#. :c:func:`glm_mat2_transpose` +#. :c:func:`glm_mat2_mulv` +#. :c:func:`glm_mat2_scale` +#. :c:func:`glm_mat2_det` +#. :c:func:`glm_mat2_inv` +#. :c:func:`glm_mat2_trace` +#. :c:func:`glm_mat2_swap_col` +#. :c:func:`glm_mat2_swap_row` +#. :c:func:`glm_mat2_rmc` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_mat2_copy(mat2 mat, mat2 dest) + + copy mat2 to another one (dest). + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat2_identity(mat2 mat) + + copy identity mat2 to mat, or makes mat to identiy + + Parameters: + | *[out]* **mat** matrix + +.. c:function:: void glm_mat2_identity_array(mat2 * __restrict mat, size_t count) + + make given matrix array's each element identity matrix + + Parameters: + | *[in,out]* **mat** matrix array (must be aligned (16/32) if alignment is not disabled) + | *[in]* **count** count of matrices + +.. c:function:: void glm_mat2_zero(mat2 mat) + + make given matrix zero + + Parameters: + | *[in,out]* **mat** matrix to + +.. c:function:: void glm_mat2_mul(mat2 m1, mat2 m2, mat2 dest) + + multiply m1 and m2 to dest + m1, m2 and dest matrices can be same matrix, it is possible to write this: + + .. code-block:: c + + mat2 m = GLM_mat2_IDENTITY_INIT; + glm_mat2_mul(m, m, m); + + Parameters: + | *[in]* **m1** left matrix + | *[in]* **m2** right matrix + | *[out]* **dest** destination matrix + +.. c:function:: void glm_mat2_transpose_to(mat2 m, mat2 dest) + + transpose mat4 and store in dest + source matrix will not be transposed unless dest is m + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat2_transpose(mat2 m) + + tranpose mat2 and store result in same matrix + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat2_mulv(mat2 m, vec2 v, vec2 dest) + + multiply mat4 with vec4 (column vector) and store in dest vector + + Parameters: + | *[in]* **mat** mat2 (left) + | *[in]* **v** vec2 (right, column vector) + | *[out]* **dest** destination (result, column vector) + +.. c:function:: void glm_mat2_scale(mat2 m, float s) + + multiply matrix with scalar + + Parameters: + | *[in, out]* **mat** matrix + | *[in]* **dest** scalar + +.. c:function:: float glm_mat2_det(mat2 mat) + + returns mat2 determinant + + Parameters: + | *[in]* **mat** matrix + + Returns: + mat2 determinant + +.. c:function:: void glm_mat2_inv(mat2 mat, mat2 dest) + + inverse mat2 and store in dest + + Parameters: + | *[in]* **mat** matrix + | *[out]* **dest** destination (inverse matrix) + +.. c:function:: void glm_mat2_trace(mat2 m) + + | sum of the elements on the main diagonal from upper left to the lower right + + Parameters: + | *[in]* **m** matrix + + Returns: + trace of matrix + +.. c:function:: void glm_mat2_swap_col(mat2 mat, int col1, int col2) + + swap two matrix columns + + Parameters: + | *[in, out]* **mat** matrix + | *[in]* **col1** col1 + | *[in]* **col2** col2 + +.. c:function:: void glm_mat2_swap_row(mat2 mat, int row1, int row2) + + swap two matrix rows + + Parameters: + | *[in, out]* **mat** matrix + | *[in]* **row1** row1 + | *[in]* **row2** row2 + +.. c:function:: float glm_mat2_rmc(vec2 r, mat2 m, vec2 c) + + | **rmc** stands for **Row** * **Matrix** * **Column** + + | helper for R (row vector) * M (matrix) * C (column vector) + + | the result is scalar because R * M = Matrix1x2 (row vector), + | then Matrix1x2 * Vec2 (column vector) = Matrix1x1 (Scalar) + + Parameters: + | *[in]* **r** row vector or matrix1x2 + | *[in]* **m** matrix2x2 + | *[in]* **c** column vector or matrix2x1 + + Returns: + scalar value e.g. Matrix1x1 diff --git a/lib/cglm/docs/source/mat3.rst b/lib/cglm/docs/source/mat3.rst new file mode 100644 index 0000000..e577ce4 --- /dev/null +++ b/lib/cglm/docs/source/mat3.rst @@ -0,0 +1,189 @@ +.. default-domain:: C + +mat3 +==== + +Header: cglm/mat3.h + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Macros: + +1. GLM_MAT3_IDENTITY_INIT +#. GLM_MAT3_ZERO_INIT +#. GLM_MAT3_IDENTITY +#. GLM_MAT3_ZERO +#. glm_mat3_dup(mat, dest) + +Functions: + +1. :c:func:`glm_mat3_copy` +#. :c:func:`glm_mat3_identity` +#. :c:func:`glm_mat3_identity_array` +#. :c:func:`glm_mat3_zero` +#. :c:func:`glm_mat3_mul` +#. :c:func:`glm_mat3_transpose_to` +#. :c:func:`glm_mat3_transpose` +#. :c:func:`glm_mat3_mulv` +#. :c:func:`glm_mat3_quat` +#. :c:func:`glm_mat3_scale` +#. :c:func:`glm_mat3_det` +#. :c:func:`glm_mat3_inv` +#. :c:func:`glm_mat3_trace` +#. :c:func:`glm_mat3_swap_col` +#. :c:func:`glm_mat3_swap_row` +#. :c:func:`glm_mat3_rmc` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_mat3_copy(mat3 mat, mat3 dest) + + copy mat3 to another one (dest). + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat3_identity(mat3 mat) + + copy identity mat3 to mat, or makes mat to identiy + + Parameters: + | *[out]* **mat** matrix + +.. c:function:: void glm_mat3_identity_array(mat3 * __restrict mat, size_t count) + + make given matrix array's each element identity matrix + + Parameters: + | *[in,out]* **mat** matrix array (must be aligned (16/32) if alignment is not disabled) + | *[in]* **count** count of matrices + +.. c:function:: void glm_mat3_zero(mat3 mat) + + make given matrix zero + + Parameters: + | *[in,out]* **mat** matrix to + +.. c:function:: void glm_mat3_mul(mat3 m1, mat3 m2, mat3 dest) + + multiply m1 and m2 to dest + m1, m2 and dest matrices can be same matrix, it is possible to write this: + + .. code-block:: c + + mat3 m = GLM_MAT3_IDENTITY_INIT; + glm_mat3_mul(m, m, m); + + Parameters: + | *[in]* **m1** left matrix + | *[in]* **m2** right matrix + | *[out]* **dest** destination matrix + +.. c:function:: void glm_mat3_transpose_to(mat3 m, mat3 dest) + + transpose mat4 and store in dest + source matrix will not be transposed unless dest is m + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat3_transpose(mat3 m) + + tranpose mat3 and store result in same matrix + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat3_mulv(mat3 m, vec3 v, vec3 dest) + + multiply mat4 with vec4 (column vector) and store in dest vector + + Parameters: + | *[in]* **mat** mat3 (left) + | *[in]* **v** vec3 (right, column vector) + | *[out]* **dest** destination (result, column vector) + +.. c:function:: void glm_mat3_quat(mat3 m, versor dest) + + convert mat3 to quaternion + + Parameters: + | *[in]* **m** rotation matrix + | *[out]* **dest** destination quaternion + +.. c:function:: void glm_mat3_scale(mat3 m, float s) + + multiply matrix with scalar + + Parameters: + | *[in, out]* **mat** matrix + | *[in]* **dest** scalar + +.. c:function:: float glm_mat3_det(mat3 mat) + + returns mat3 determinant + + Parameters: + | *[in]* **mat** matrix + + Returns: + mat3 determinant + +.. c:function:: void glm_mat3_inv(mat3 mat, mat3 dest) + + inverse mat3 and store in dest + + Parameters: + | *[in]* **mat** matrix + | *[out]* **dest** destination (inverse matrix) + +.. c:function:: void glm_mat3_trace(mat3 m) + + | sum of the elements on the main diagonal from upper left to the lower right + + Parameters: + | *[in]* **m** matrix + + Returns: + trace of matrix + +.. c:function:: void glm_mat3_swap_col(mat3 mat, int col1, int col2) + + swap two matrix columns + + Parameters: + | *[in, out]* **mat** matrix + | *[in]* **col1** col1 + | *[in]* **col2** col2 + +.. c:function:: void glm_mat3_swap_row(mat3 mat, int row1, int row2) + + swap two matrix rows + + Parameters: + | *[in, out]* **mat** matrix + | *[in]* **row1** row1 + | *[in]* **row2** row2 + +.. c:function:: float glm_mat3_rmc(vec3 r, mat3 m, vec3 c) + + | **rmc** stands for **Row** * **Matrix** * **Column** + + | helper for R (row vector) * M (matrix) * C (column vector) + + | the result is scalar because R * M = Matrix1x3 (row vector), + | then Matrix1x3 * Vec3 (column vector) = Matrix1x1 (Scalar) + + Parameters: + | *[in]* **r** row vector or matrix1x3 + | *[in]* **m** matrix3x3 + | *[in]* **c** column vector or matrix3x1 + + Returns: + scalar value e.g. Matrix1x1 diff --git a/lib/cglm/docs/source/mat4.rst b/lib/cglm/docs/source/mat4.rst new file mode 100644 index 0000000..33251b9 --- /dev/null +++ b/lib/cglm/docs/source/mat4.rst @@ -0,0 +1,304 @@ +.. default-domain:: C + +mat4 +==== + +Header: cglm/mat4.h + +Important: :c:func:`glm_mat4_scale` multiplies mat4 with scalar, if you need to +apply scale transform use :c:func:`glm_scale` functions. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Macros: + +1. GLM_MAT4_IDENTITY_INIT +#. GLM_MAT4_ZERO_INIT +#. GLM_MAT4_IDENTITY +#. GLM_MAT4_ZERO +#. glm_mat4_udup(mat, dest) +#. glm_mat4_dup(mat, dest) + +Functions: + +1. :c:func:`glm_mat4_ucopy` +#. :c:func:`glm_mat4_copy` +#. :c:func:`glm_mat4_identity` +#. :c:func:`glm_mat4_identity_array` +#. :c:func:`glm_mat4_zero` +#. :c:func:`glm_mat4_pick3` +#. :c:func:`glm_mat4_pick3t` +#. :c:func:`glm_mat4_ins3` +#. :c:func:`glm_mat4_mul` +#. :c:func:`glm_mat4_mulN` +#. :c:func:`glm_mat4_mulv` +#. :c:func:`glm_mat4_mulv3` +#. :c:func:`glm_mat3_trace` +#. :c:func:`glm_mat3_trace3` +#. :c:func:`glm_mat4_quat` +#. :c:func:`glm_mat4_transpose_to` +#. :c:func:`glm_mat4_transpose` +#. :c:func:`glm_mat4_scale_p` +#. :c:func:`glm_mat4_scale` +#. :c:func:`glm_mat4_det` +#. :c:func:`glm_mat4_inv` +#. :c:func:`glm_mat4_inv_fast` +#. :c:func:`glm_mat4_swap_col` +#. :c:func:`glm_mat4_swap_row` +#. :c:func:`glm_mat4_rmc` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_mat4_ucopy(mat4 mat, mat4 dest) + + copy mat4 to another one (dest). u means align is not required for dest + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat4_copy(mat4 mat, mat4 dest) + + copy mat4 to another one (dest). + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat4_identity(mat4 mat) + + copy identity mat4 to mat, or makes mat to identiy + + Parameters: + | *[out]* **mat** matrix + +.. c:function:: void glm_mat4_identity_array(mat4 * __restrict mat, size_t count) + + make given matrix array's each element identity matrix + + Parameters: + | *[in,out]* **mat** matrix array (must be aligned (16/32) if alignment is not disabled) + | *[in]* **count** count of matrices + +.. c:function:: void glm_mat4_zero(mat4 mat) + + make given matrix zero + + Parameters: + | *[in,out]* **mat** matrix to + +.. c:function:: void glm_mat4_pick3(mat4 mat, mat3 dest) + + copy upper-left of mat4 to mat3 + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat4_pick3t(mat4 mat, mat4 dest) + + copy upper-left of mat4 to mat3 (transposed) + the postfix t stands for transpose + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat4_ins3(mat3 mat, mat4 dest) + + copy mat3 to mat4's upper-left. this function does not fill mat4's other + elements. To do that use glm_mat4. + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat4_mul(mat4 m1, mat4 m2, mat4 dest) + + multiply m1 and m2 to dest + m1, m2 and dest matrices can be same matrix, it is possible to write this: + + .. code-block:: c + + mat4 m = GLM_MAT4_IDENTITY_INIT; + glm_mat4_mul(m, m, m); + + Parameters: + | *[in]* **m1** left matrix + | *[in]* **m2** right matrix + | *[out]* **dest** destination matrix + +.. c:function:: void glm_mat4_mulN(mat4 * __restrict matrices[], int len, mat4 dest) + + mupliply N mat4 matrices and store result in dest + | this function lets you multiply multiple (more than two or more...) + | matrices + + | multiplication will be done in loop, this may reduce instructions + | size but if **len** is too small then compiler may unroll whole loop + + .. code-block:: c + + mat m1, m2, m3, m4, res; + glm_mat4_mulN((mat4 *[]){&m1, &m2, &m3, &m4}, 4, res); + + Parameters: + | *[in]* **matrices** array of mat4 + | *[in]* **len** matrices count + | *[out]* **dest** destination matrix + +.. c:function:: void glm_mat4_mulv(mat4 m, vec4 v, vec4 dest) + + multiply mat4 with vec4 (column vector) and store in dest vector + + Parameters: + | *[in]* **m** mat4 (left) + | *[in]* **v** vec4 (right, column vector) + | *[in]* **last** 4th item to make it vec4 + | *[out]* **dest** vec4 (result, column vector) + +.. c:function:: void glm_mat4_mulv3(mat4 m, vec3 v, float last, vec3 dest) + + | multiply **vec3** with **mat4** and get **vec3** as result + | + | actually the result is **vec4**, after multiplication, + the last component is trimmed, if you need the result's last component + then don't use this function and consider to use **glm_mat4_mulv()** + + Parameters: + | *[in]* **m** mat4(affine transform) + | *[in]* **v** vec3 + | *[in]* **last** 4th item to make it vec4 + | *[out]* **dest** result vector (vec3) + +.. c:function:: void glm_mat4_trace(mat4 m) + + | sum of the elements on the main diagonal from upper left to the lower right + + Parameters: + | *[in]* **m** matrix + + Returns: + trace of matrix + +.. c:function:: void glm_mat4_trace3(mat4 m) + + | trace of matrix (rotation part) + | sum of the elements on the main diagonal from upper left to the lower right + + Parameters: + | *[in]* **m** matrix + + Returns: + trace of matrix + +.. c:function:: void glm_mat4_quat(mat4 m, versor dest) + + convert mat4's rotation part to quaternion + + Parameters: + | *[in]* **m** affine matrix + | *[out]* **dest** destination quaternion + +.. c:function:: void glm_mat4_transpose_to(mat4 m, mat4 dest) + + transpose mat4 and store in dest + source matrix will not be transposed unless dest is m + + Parameters: + | *[in]* **m** matrix + | *[out]* **dest** destination matrix + +.. c:function:: void glm_mat4_transpose(mat4 m) + + tranpose mat4 and store result in same matrix + + Parameters: + | *[in]* **m** source + | *[out]* **dest** destination matrix + +.. c:function:: void glm_mat4_scale_p(mat4 m, float s) + + scale (multiply with scalar) matrix without simd optimization + + Parameters: + | *[in, out]* **m** matrix + | *[in]* **s** scalar + +.. c:function:: void glm_mat4_scale(mat4 m, float s) + + scale (multiply with scalar) matrix + THIS IS NOT SCALE TRANSFORM, use glm_scale for that. + + Parameters: + | *[in, out]* **m** matrix + | *[in]* **s** scalar + +.. c:function:: float glm_mat4_det(mat4 mat) + + mat4 determinant + + Parameters: + | *[in]* **mat** matrix + + Return: + | determinant + +.. c:function:: void glm_mat4_inv(mat4 mat, mat4 dest) + + inverse mat4 and store in dest + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination matrix (inverse matrix) + +.. c:function:: void glm_mat4_inv_fast(mat4 mat, mat4 dest) + + inverse mat4 and store in dest + + | this func uses reciprocal approximation without extra corrections + | e.g Newton-Raphson. this should work faster than normal, + | to get more precise use glm_mat4_inv version. + + | NOTE: You will lose precision, glm_mat4_inv is more accurate + + Parameters: + | *[in]* **mat** source + | *[out]* **dest** destination + +.. c:function:: void glm_mat4_swap_col(mat4 mat, int col1, int col2) + + swap two matrix columns + + Parameters: + | *[in, out]* **mat** matrix + | *[in]* **col1** col1 + | *[in]* **col2** col2 + +.. c:function:: void glm_mat4_swap_row(mat4 mat, int row1, int row2) + + swap two matrix rows + + Parameters: + | *[in, out]* **mat** matrix + | *[in]* **row1** row1 + | *[in]* **row2** row2 + +.. c:function:: float glm_mat4_rmc(vec4 r, mat4 m, vec4 c) + + | **rmc** stands for **Row** * **Matrix** * **Column** + + | helper for R (row vector) * M (matrix) * C (column vector) + + | the result is scalar because R * M = Matrix1x4 (row vector), + | then Matrix1x4 * Vec4 (column vector) = Matrix1x1 (Scalar) + + Parameters: + | *[in]* **r** row vector or matrix1x4 + | *[in]* **m** matrix4x4 + | *[in]* **c** column vector or matrix4x1 + + Returns: + scalar value e.g. Matrix1x1 diff --git a/lib/cglm/docs/source/opengl.rst b/lib/cglm/docs/source/opengl.rst new file mode 100644 index 0000000..2cebae0 --- /dev/null +++ b/lib/cglm/docs/source/opengl.rst @@ -0,0 +1,61 @@ +How to send vector or matrix to OpenGL like API +================================================== + +*cglm*'s vector and matrix types are arrays. So you can send them directly to a +function which accepts pointer. But you may got warnings for matrix because it is +two dimensional array. + +Passing / Uniforming Matrix to OpenGL: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**glUniformMatrix4fv** accepts float pointer, you can pass matrix to that parameter +and it should work but with warnings. "You can pass" doesn't mean that you must pass like that. + +**Correct options:** + +Correct doesn't mean correct way to use OpenGL it is just shows correct way to pass cglm type to it. + +1. Pass first column +--------------------- + +The goal is that pass address of matrix, first element of matrix is also address of matrix, +because it is array of vectors and vector is array of floats. + +.. code-block:: c + + mat4 matrix; + /* ... */ + glUniformMatrix4fv(location, 1, GL_FALSE, matrix[0]); + +array of matrices: + +.. code-block:: c + + mat4 matrix; + /* ... */ + glUniformMatrix4fv(location, count, GL_FALSE, matrix[0][0]); + +1. Cast matrix to pointer +-------------------------- + +.. code-block:: c + + mat4 matrix; + /* ... */ + glUniformMatrix4fv(location, count, GL_FALSE, (float *)matrix); + +in this way, passing aray of matrices is same + +Passing / Uniforming Vectors to OpenGL: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You don't need to do extra thing when passing cglm vectors to OpengL or other APIs. +Because a function like **glUniform4fv** accepts vector as pointer. cglm's vectors +are array of floats. So you can pass it directly ot those functions: + +.. code-block:: c + + vec4 vec; + /* ... */ + glUniform4fv(location, 1, vec); + +this show how to pass **vec4** others are same. diff --git a/lib/cglm/docs/source/opt.rst b/lib/cglm/docs/source/opt.rst new file mode 100644 index 0000000..9b28054 --- /dev/null +++ b/lib/cglm/docs/source/opt.rst @@ -0,0 +1,124 @@ +.. default-domain:: C + +Options +=============================================================================== + +A few options are provided via macros. + +Alignment Option +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +As default, cglm requires types to be aligned. Alignment requirements: + +vec3: 8 byte +vec4: 16 byte +mat4: 16 byte +versor: 16 byte + +By starting **v0.4.5** cglm provides an option to disable alignment requirement. +To enable this option define **CGLM_ALL_UNALIGNED** macro before all headers. +You can define it in Xcode, Visual Studio (or other IDEs) or you can also prefer +to define it in build system. If you use pre-compiled versions then you +have to compile cglm with **CGLM_ALL_UNALIGNED** macro. + +**VERY VERY IMPORTANT:** If you use cglm in multiple projects and + those projects are depends on each other, then + + | *ALWAYS* or *NEVER USE* **CGLM_ALL_UNALIGNED** macro in linked projects + + if you do not know what you are doing. Because a cglm header included + via 'project A' may force types to be aligned and another cglm header + included via 'project B' may not require alignment. In this case + cglm functions will read from and write to **INVALID MEMORY LOCATIONs**. + + ALWAYS USE SAME CONFIGURATION / OPTION for **cglm** if you have multiple projects. + + For instance if you set CGLM_ALL_UNALIGNED in a project then set it in other projects too + +Clipspace Option[s] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +By starting **v0.8.3** cglm provides options to switch between clipspace configurations. + +Clipspace related files are located at `include/cglm/[struct]/clipspace.h` but +these are included in related files like `cam.h`. If you don't want to change your existing +clipspace configuration and want to use different clipspace function like `glm_lookat_zo` or `glm_lookat_lh_zo`... +then you can include individual headers or just define `CGLM_CLIPSPACE_INCLUDE_ALL` which will iclude all headers for you. + +1. **CGLM_CLIPSPACE_INCLUDE_ALL** +2. **CGLM_FORCE_DEPTH_ZERO_TO_ONE** +3. **CGLM_FORCE_LEFT_HANDED** + + +1. **CGLM_CLIPSPACE_INCLUDE_ALL**: + +By defining this macro, **cglm** will include all clipspace functions for you by just using +`#include cglm/cglm.h` or `#include cglm/struct.h` or `#include cglm/call.h` + +Otherwise you need to include header you want manually e.g. `#include cglm/clipspace/view_rh_zo.h` + +2. **CGLM_FORCE_DEPTH_ZERO_TO_ONE** + +This is similar to **GLM**'s **GLM_FORCE_DEPTH_ZERO_TO_ONE** option. +This will set clip space between 0 to 1 which makes **cglm** Vulkan, Metal friendly. + +You can use functions like `glm_lookat_lh_zo()` individually. By setting **CGLM_FORCE_DEPTH_ZERO_TO_ONE** +functions in cam.h for instance will use `_zo` versions. + +3. **CGLM_FORCE_LEFT_HANDED** + +Force **cglm** to use the left handed coordinate system by default, currently **cglm** uses right handed coordinate system as default, +you can change this behavior with this option. + +**VERY VERY IMPORTANT:** + +Be careful if you include **cglm** in multiple projects. + +SSE and SSE2 Shuffle Option +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**_mm_shuffle_ps** generates **shufps** instruction even if registers are same. +You can force it to generate **pshufd** instruction by defining +**CGLM_USE_INT_DOMAIN** macro. As default it is not defined. + +SSE3 and SSE4 Dot Product Options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You have to extra options for dot product: **CGLM_SSE4_DOT** and **CGLM_SSE3_DOT**. + +- If **SSE4** is enabled then you can define **CGLM_SSE4_DOT** to force cglm to use **_mm_dp_ps** instruction. +- If **SSE3** is enabled then you can define **CGLM_SSE3_DOT** to force cglm to use **_mm_hadd_ps** instructions. + +otherwise cglm will use custom cglm's hadd functions which are optimized too. + +Print Options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1. **CGLM_DEFINE_PRINTS** +2. **CGLM_NO_PRINTS_NOOP** (use CGLM_DEFINE_PRINTS) + +Inline prints are only enabled in **DEBUG** mode or if **CGLM_DEFINE_PRINTS** is defined. +**glmc_** versions will always print too. + +Because **cglm** tried to enable print functions in debug mode and disable them in +release/production mode to eliminate printing costs when we do not need them. + +**cglm** checks **DEBUG** or **_DEBUG** macros to test debug mode, if these are not working for you then you can use +**CGLM_DEFINE_PRINTS** to force enable, or create a PR to introduce new macro to test against debugging mode. + +If DEBUG mode is not enabled then print functions will be emptied to eliminate print function calls. +You can disable this feature too by defining **CGLM_DEFINE_PRINTS** macro top of cglm header +or in project/build settings... + +3. **CGLM_PRINT_PRECISION** 5 + +precision. + +4. **CGLM_PRINT_MAX_TO_SHORT** 1e5 + +if a number is greater than this value then %g will be used, since this is shorten print you won't be able to see high precision. + +5. **CGLM_PRINT_COLOR** "\033[36m" +6. **CGLM_PRINT_COLOR_RESET** "\033[0m" + +You can disable colorful print output by defining **CGLM_PRINT_COLOR** and **CGLM_PRINT_COLOR_RESET** as empty macro. +Because some terminals may not support colors. diff --git a/lib/cglm/docs/source/plane.rst b/lib/cglm/docs/source/plane.rst new file mode 100644 index 0000000..b9afbed --- /dev/null +++ b/lib/cglm/docs/source/plane.rst @@ -0,0 +1,33 @@ +.. default-domain:: C + +plane +================================================================================ + +Header: cglm/plane.h + +Plane extract functions are in frustum header and documented +in :doc:`frustum` page. + +**Definition of plane:** + +Plane equation: **Ax + By + Cz + D = 0** + +Plan is stored in **vec4** as **[A, B, C, D]**. (A, B, C) is normal and D is distance + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_plane_normalize` + + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_plane_normalize(vec4 plane) + + | normalizes a plane + + Parameters: + | *[in, out]* **plane** pnale to normalize diff --git a/lib/cglm/docs/source/project.rst b/lib/cglm/docs/source/project.rst new file mode 100644 index 0000000..161a2a7 --- /dev/null +++ b/lib/cglm/docs/source/project.rst @@ -0,0 +1,119 @@ +.. default-domain:: C + +Project / UnProject +================================================================================ + +Header: cglm/project.h + +Viewport is required as *vec4* **[X, Y, Width, Height]** but this doesn't mean +that you should store it as **vec4**. You can convert your data representation +to vec4 before passing it to related functions. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_unprojecti` +#. :c:func:`glm_unproject` +#. :c:func:`glm_project` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_unprojecti(vec3 pos, mat4 invMat, vec4 vp, vec3 dest) + + | maps the specified viewport coordinates into specified space [1] + the matrix should contain projection matrix. + + if you don't have ( and don't want to have ) an inverse matrix then use + :c:func:`glm_unproject` version. You may use existing inverse of matrix in somewhere + else, this is why **glm_unprojecti** exists to save inversion cost + + [1] space: + - if m = invProj: View Space + - if m = invViewProj: World Space + - if m = invMVP: Object Space + + You probably want to map the coordinates into object space + so use invMVP as m + + Computing viewProj: + + .. code-block:: c + + glm_mat4_mul(proj, view, viewProj); + glm_mat4_mul(viewProj, model, MVP); + glm_mat4_inv(viewProj, invMVP); + + Parameters: + | *[in]* **pos** point/position in viewport coordinates + | *[in]* **invMat** matrix (see brief) + | *[in]* **vp** viewport as [x, y, width, height] + | *[out]* **dest** unprojected coordinates + +.. c:function:: void glm_unproject(vec3 pos, mat4 m, vec4 vp, vec3 dest) + + | maps the specified viewport coordinates into specified space [1] + the matrix should contain projection matrix. + + this is same as :c:func:`glm_unprojecti` except this function get inverse matrix for + you. + + [1] space: + - if m = proj: View Space + - if m = viewProj: World Space + - if m = MVP: Object Space + + You probably want to map the coordinates into object space so use MVP as m + + Computing viewProj and MVP: + + .. code-block:: c + + glm_mat4_mul(proj, view, viewProj); + glm_mat4_mul(viewProj, model, MVP); + + Parameters: + | *[in]* **pos** point/position in viewport coordinates + | *[in]* **m** matrix (see brief) + | *[in]* **vp** viewport as [x, y, width, height] + | *[out]* **dest** unprojected coordinates + +.. c:function:: void glm_project(vec3 pos, mat4 m, vec4 vp, vec3 dest) + + | map object coordinates to window coordinates + + Computing MVP: + + .. code-block:: c + + glm_mat4_mul(proj, view, viewProj); + glm_mat4_mul(viewProj, model, MVP); + + Parameters: + | *[in]* **pos** object coordinates + | *[in]* **m** MVP matrix + | *[in]* **vp** viewport as [x, y, width, height] + | *[out]* **dest** projected coordinates + +.. c:function:: float glm_project_z(vec3 pos, mat4 m) + + | map object's z coordinate to window coordinates + + this is same as :c:func:`glm_project` except this function projects only Z coordinate + which reduces a few calculations and parameters. + + Computing MVP: + + .. code-block:: c + + glm_mat4_mul(proj, view, viewProj); + glm_mat4_mul(viewProj, model, MVP); + + Parameters: + | *[in]* **pos** object coordinates + | *[in]* **m** MVP matrix + + Returns: + projected z coordinate \ No newline at end of file diff --git a/lib/cglm/docs/source/quat.rst b/lib/cglm/docs/source/quat.rst new file mode 100644 index 0000000..a44c918 --- /dev/null +++ b/lib/cglm/docs/source/quat.rst @@ -0,0 +1,422 @@ +.. default-domain:: C + +quaternions +=========== + +Header: cglm/quat.h + + **Important:** *cglm* stores quaternion as **[x, y, z, w]** in memory + since **v0.4.0** it was **[w, x, y, z]** + before v0.4.0 ( **v0.3.5 and earlier** ). w is real part. + +What you can do with quaternions with existing functions is (Some of them): + +- You can rotate transform matrix using quaterion +- You can rotate vector using quaterion +- You can create view matrix using quaterion +- You can create a lookrotation (from source point to dest) + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Macros: + +1. GLM_QUAT_IDENTITY_INIT +#. GLM_QUAT_IDENTITY + +Functions: + +1. :c:func:`glm_quat_identity` +#. :c:func:`glm_quat_identity_array` +#. :c:func:`glm_quat_init` +#. :c:func:`glm_quat` +#. :c:func:`glm_quatv` +#. :c:func:`glm_quat_copy` +#. :c:func:`glm_quat_from_vecs` +#. :c:func:`glm_quat_norm` +#. :c:func:`glm_quat_normalize` +#. :c:func:`glm_quat_normalize_to` +#. :c:func:`glm_quat_dot` +#. :c:func:`glm_quat_conjugate` +#. :c:func:`glm_quat_inv` +#. :c:func:`glm_quat_add` +#. :c:func:`glm_quat_sub` +#. :c:func:`glm_quat_real` +#. :c:func:`glm_quat_imag` +#. :c:func:`glm_quat_imagn` +#. :c:func:`glm_quat_imaglen` +#. :c:func:`glm_quat_angle` +#. :c:func:`glm_quat_axis` +#. :c:func:`glm_quat_mul` +#. :c:func:`glm_quat_mat4` +#. :c:func:`glm_quat_mat4t` +#. :c:func:`glm_quat_mat3` +#. :c:func:`glm_quat_mat3t` +#. :c:func:`glm_quat_lerp` +#. :c:func:`glm_quat_nlerp` +#. :c:func:`glm_quat_slerp` +#. :c:func:`glm_quat_look` +#. :c:func:`glm_quat_for` +#. :c:func:`glm_quat_forp` +#. :c:func:`glm_quat_rotatev` +#. :c:func:`glm_quat_rotate` +#. :c:func:`glm_quat_rotate_at` +#. :c:func:`glm_quat_rotate_atm` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_quat_identity(versor q) + + | makes given quat to identity + + Parameters: + | *[in, out]* **q** quaternion + +.. c:function:: void glm_quat_identity_array(versor * __restrict q, size_t count) + + | make given quaternion array's each element identity quaternion + + Parameters: + | *[in, out]* **q** quat array (must be aligned (16) if alignment is not disabled) + | *[in]* **count** count of quaternions + +.. c:function:: void glm_quat_init(versor q, float x, float y, float z, float w) + + | inits quaternion with given values + + Parameters: + | *[out]* **q** quaternion + | *[in]* **x** imag.x + | *[in]* **y** imag.y + | *[in]* **z** imag.z + | *[in]* **w** w (real part) + +.. c:function:: void glm_quat(versor q, float angle, float x, float y, float z) + + | creates NEW quaternion with individual axis components + + | given axis will be normalized + + Parameters: + | *[out]* **q** quaternion + | *[in]* **angle** angle (radians) + | *[in]* **x** axis.x + | *[in]* **y** axis.y + | *[in]* **z** axis.z + +.. c:function:: void glm_quatv(versor q, float angle, vec3 axis) + + | creates NEW quaternion with axis vector + + | given axis will be normalized + + Parameters: + | *[out]* **q** quaternion + | *[in]* **angle** angle (radians) + | *[in]* **axis** axis (will be normalized) + +.. c:function:: void glm_quat_copy(versor q, versor dest) + + | copy quaternion to another one + + Parameters: + | *[in]* **q** source quaternion + | *[out]* **dest** destination quaternion + +.. c:function:: void glm_quat_from_vecs(vec3 a, vec3 b, versor dest) + + | compute unit quaternion needed to rotate a into b + + References: + * `Finding quaternion representing the rotation from one vector to another `_ + * `Quaternion from two vectors `_ + * `Angle between vectors `_ + + Parameters: + | *[in]* **a** unit vector + | *[in]* **b** unit vector + | *[in]* **dest** unit quaternion + +.. c:function:: float glm_quat_norm(versor q) + + | returns norm (magnitude) of quaternion + + Parameters: + | *[in]* **a** quaternion + + Returns: + norm (magnitude) + +.. c:function:: void glm_quat_normalize_to(versor q, versor dest) + + | normalize quaternion and store result in dest, original one will not be normalized + + Parameters: + | *[in]* **q** quaternion to normalize into + | *[out]* **dest** destination quaternion + +.. c:function:: void glm_quat_normalize(versor q) + + | normalize quaternion + + Parameters: + | *[in, out]* **q** quaternion + +.. c:function:: float glm_quat_dot(versor p, versor q) + + dot product of two quaternion + + Parameters: + | *[in]* **p** quaternion 1 + | *[in]* **q** quaternion 2 + + Returns: + dot product + +.. c:function:: void glm_quat_conjugate(versor q, versor dest) + + conjugate of quaternion + + Parameters: + | *[in]* **q** quaternion + | *[in]* **dest** conjugate + +.. c:function:: void glm_quat_inv(versor q, versor dest) + + inverse of non-zero quaternion + + Parameters: + | *[in]* **q** quaternion + | *[in]* **dest** inverse quaternion + +.. c:function:: void glm_quat_add(versor p, versor q, versor dest) + + add (componentwise) two quaternions and store result in dest + + Parameters: + | *[in]* **p** quaternion 1 + | *[in]* **q** quaternion 2 + | *[in]* **dest** result quaternion + +.. c:function:: void glm_quat_sub(versor p, versor q, versor dest) + + subtract (componentwise) two quaternions and store result in dest + + Parameters: + | *[in]* **p** quaternion 1 + | *[in]* **q** quaternion 2 + | *[in]* **dest** result quaternion + +.. c:function:: float glm_quat_real(versor q) + + returns real part of quaternion + + Parameters: + | *[in]* **q** quaternion + + Returns: + real part (quat.w) + +.. c:function:: void glm_quat_imag(versor q, vec3 dest) + + returns imaginary part of quaternion + + Parameters: + | *[in]* **q** quaternion + | *[out]* **dest** imag + +.. c:function:: void glm_quat_imagn(versor q, vec3 dest) + + returns normalized imaginary part of quaternion + + Parameters: + | *[in]* **q** quaternion + | *[out]* **dest** imag + +.. c:function:: float glm_quat_imaglen(versor q) + + returns length of imaginary part of quaternion + + Parameters: + | *[in]* **q** quaternion + + Returns: + norm of imaginary part + +.. c:function:: float glm_quat_angle(versor q) + + returns angle of quaternion + + Parameters: + | *[in]* **q** quaternion + + Returns: + angles of quat (radians) + +.. c:function:: void glm_quat_axis(versor q, versor dest) + + axis of quaternion + + Parameters: + | *[in]* **p** quaternion + | *[out]* **dest** axis of quaternion + +.. c:function:: void glm_quat_mul(versor p, versor q, versor dest) + + | multiplies two quaternion and stores result in dest + + | this is also called Hamilton Product + + | According to WikiPedia: + | The product of two rotation quaternions [clarification needed] will be + equivalent to the rotation q followed by the rotation p + + Parameters: + | *[in]* **p** quaternion 1 (first rotation) + | *[in]* **q** quaternion 2 (second rotation) + | *[out]* **dest** result quaternion + +.. c:function:: void glm_quat_mat4(versor q, mat4 dest) + + | convert quaternion to mat4 + + Parameters: + | *[in]* **q** quaternion + | *[out]* **dest** result matrix + +.. c:function:: void glm_quat_mat4t(versor q, mat4 dest) + + | convert quaternion to mat4 (transposed). This is transposed version of glm_quat_mat4 + + Parameters: + | *[in]* **q** quaternion + | *[out]* **dest** result matrix + +.. c:function:: void glm_quat_mat3(versor q, mat3 dest) + + | convert quaternion to mat3 + + Parameters: + | *[in]* **q** quaternion + | *[out]* **dest** result matrix + +.. c:function:: void glm_quat_mat3t(versor q, mat3 dest) + + | convert quaternion to mat3 (transposed). This is transposed version of glm_quat_mat3 + + Parameters: + | *[in]* **q** quaternion + | *[out]* **dest** result matrix + +.. c:function:: void glm_quat_lerp(versor from, versor to, float t, versor dest) + + | interpolates between two quaternions + | using spherical linear interpolation (LERP) + + Parameters: + | *[in]* **from** from + | *[in]* **to** to + | *[in]* **t** interpolant (amount) clamped between 0 and 1 + | *[out]* **dest** result quaternion + +.. c:function:: void glm_quat_nlerp(versor q, versor r, float t, versor dest) + + | interpolates between two quaternions + | taking the shortest rotation path using + | normalized linear interpolation (NLERP) + + | This is a cheaper alternative to slerp; most games use nlerp + | for animations as it visually makes little difference. + + References: + * `Understanding Slerp, Then Not Using it `_ + * `Lerp, Slerp and Nlerp `_ + + Parameters: + | *[in]* **from** from + | *[in]* **to** to + | *[in]* **t** interpolant (amount) clamped between 0 and 1 + | *[out]* **dest** result quaternion + +.. c:function:: void glm_quat_slerp(versor q, versor r, float t, versor dest) + + | interpolates between two quaternions + | using spherical linear interpolation (SLERP) + + Parameters: + | *[in]* **from** from + | *[in]* **to** to + | *[in]* **t** interpolant (amount) clamped between 0 and 1 + | *[out]* **dest** result quaternion + +.. c:function:: void glm_quat_look(vec3 eye, versor ori, mat4 dest) + + | creates view matrix using quaternion as camera orientation + + Parameters: + | *[in]* **eye** eye + | *[in]* **ori** orientation in world space as quaternion + | *[out]* **dest** result matrix + +.. c:function:: void glm_quat_for(vec3 dir, vec3 up, versor dest) + + | creates look rotation quaternion + + Parameters: + | *[in]* **dir** direction to look + | *[in]* **up** up vector + | *[out]* **dest** result matrix + +.. c:function:: void glm_quat_forp(vec3 from, vec3 to, vec3 up, versor dest) + + | creates look rotation quaternion using source and destination positions p suffix stands for position + + | this is similar to glm_quat_for except this computes direction for glm_quat_for for you. + + Parameters: + | *[in]* **from** source point + | *[in]* **to** destination point + | *[in]* **up** up vector + | *[out]* **dest** result matrix + +.. c:function:: void glm_quat_rotatev(versor q, vec3 v, vec3 dest) + + | crotate vector using using quaternion + + Parameters: + | *[in]* **q** quaternion + | *[in]* **v** vector to rotate + | *[out]* **dest** rotated vector + +.. c:function:: void glm_quat_rotate(mat4 m, versor q, mat4 dest) + + | rotate existing transform matrix using quaternion + + instead of passing identity matrix, consider to use quat_mat4 functions + + Parameters: + | *[in]* **m** existing transform matrix to rotate + | *[in]* **q** quaternion + | *[out]* **dest** rotated matrix/transform + +.. c:function:: void glm_quat_rotate_at(mat4 m, versor q, vec3 pivot) + + | rotate existing transform matrix using quaternion at pivot point + + Parameters: + | *[in, out]* **m** existing transform matrix to rotate + | *[in]* **q** quaternion + | *[in]* **pivot** pivot + +.. c:function:: void glm_quat_rotate_atm(mat4 m, versor q, vec3 pivot) + + | rotate NEW transform matrix using quaternion at pivot point + | this creates rotation matrix, it assumes you don't have a matrix + + | this should work faster than glm_quat_rotate_at because it reduces one glm_translate. + + Parameters: + | *[in, out]* **m** existing transform matrix to rotate + | *[in]* **q** quaternion + | *[in]* **pivot** pivot diff --git a/lib/cglm/docs/source/ray.rst b/lib/cglm/docs/source/ray.rst new file mode 100644 index 0000000..c5faf33 --- /dev/null +++ b/lib/cglm/docs/source/ray.rst @@ -0,0 +1,31 @@ +.. default-domain:: C + +ray +==== + +Header: cglm/ray.h + +This is for collision-checks used by ray-tracers and the like. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_ray_triangle` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: bool glm_ray_triangle(vec3 origin, vec3 direction, vec3 v0, vec3 v1, vec3 v2, float *d) + + Möller–Trumbore ray-triangle intersection algorithm + + Parameters: + | *[in]* **origin** origin of ray + | *[in]* **direction** direction of ray + | *[in]* **v0** first vertex of triangle + | *[in]* **v1** second vertex of triangle + | *[in]* **v2** third vertex of triangle + | *[in, out]* **d** float pointer to save distance to intersection + | *[out]* **intersection** whether there is intersection diff --git a/lib/cglm/docs/source/sphere.rst b/lib/cglm/docs/source/sphere.rst new file mode 100644 index 0000000..db238f4 --- /dev/null +++ b/lib/cglm/docs/source/sphere.rst @@ -0,0 +1,74 @@ +.. default-domain:: C + +Sphere +================================================================================ + +Header: cglm/sphere.h + +**Definition of sphere:** + +Sphere Representation in cglm is *vec4*: **[center.x, center.y, center.z, radii]** + +You can call any vec3 function by pasing sphere. Because first three elements +defines center of sphere. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_sphere_radii` +#. :c:func:`glm_sphere_transform` +#. :c:func:`glm_sphere_merge` +#. :c:func:`glm_sphere_sphere` +#. :c:func:`glm_sphere_point` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: float glm_sphere_radii(vec4 s) + + | helper for getting sphere radius + + Parameters: + | *[in]* **s** sphere + + Returns: + returns radii + +.. c:function:: void glm_sphere_transform(vec4 s, mat4 m, vec4 dest) + + | apply transform to sphere, it is just wrapper for glm_mat4_mulv3 + + Parameters: + | *[in]* **s** sphere + | *[in]* **m** transform matrix + | *[out]* **dest** transformed sphere + +.. c:function:: void glm_sphere_merge(vec4 s1, vec4 s2, vec4 dest) + + | merges two spheres and creates a new one + + two sphere must be in same space, for instance if one in world space then + the other must be in world space too, not in local space. + + Parameters: + | *[in]* **s1** sphere 1 + | *[in]* **s2** sphere 2 + | *[out]* **dest** merged/extended sphere + +.. c:function:: bool glm_sphere_sphere(vec4 s1, vec4 s2) + + | check if two sphere intersects + + Parameters: + | *[in]* **s1** sphere + | *[in]* **s2** other sphere + +.. c:function:: bool glm_sphere_point(vec4 s, vec3 point) + + | check if sphere intersects with point + + Parameters: + | *[in]* **s** sphere + | *[in]* **point** point diff --git a/lib/cglm/docs/source/troubleshooting.rst b/lib/cglm/docs/source/troubleshooting.rst new file mode 100644 index 0000000..fb1433f --- /dev/null +++ b/lib/cglm/docs/source/troubleshooting.rst @@ -0,0 +1,99 @@ +.. default-domain:: C + +Troubleshooting +================================================================================ + +It is possible that sometimes you may get crashes or wrong results. +Follow these topics + +Memory Allocation: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Again, **cglm** doesn't alloc any memory on heap. +cglm functions works like memcpy; it copies data from src, +makes calculations then copy the result to dest. + +You are responsible for allocation of **src** and **dest** parameters. + +Alignment: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**vec4** and **mat4** types requires 16 byte alignment. +These types are marked with align attribute to let compiler know about this +requirement. + +But since MSVC (Windows) throws the error: + +**"formal parameter with requested alignment of 16 won't be aligned"** + +The alignment attribute has been commented for MSVC + +.. code-block:: c + + #if defined(_MSC_VER) + # define CGLM_ALIGN(X) /* __declspec(align(X)) */ + #else + # define CGLM_ALIGN(X) __attribute((aligned(X))) + #endif. + +So MSVC may not know about alignment requirements when creating variables. +The interesting thing is that, if I remember correctly Visual Studio 2017 +doesn't throw the above error. So we may uncomment that line for Visual Studio 2017, +you may do it yourself. + +**This MSVC issue is still in TODOs.** + +**UPDATE:** By starting v0.4.5 cglm provides an option to disable alignment requirement. +Also alignment is disabled for older msvc verisons as default. Now alignment is only required in Visual Studio 2017 version 15.6+ if CGLM_ALL_UNALIGNED macro is not defined. + +Crashes, Invalid Memory Access: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Probably you are trying to write to invalid memory location. + +You may used wrong function for what you want to do. + +For instance you may called **glm_vec4_** functions for **vec3** data type. +It will try to write 32 byte but since **vec3** is 24 byte it should throw +memory access error or exit the app without saying anything. + +**UPDATE - IMPORTANT:** + + | On MSVC or some other compilers, if alignment is enabled (default) then double check alignment requirements if you got a crash. + + | If you send GLM_VEC4_ONE or similar macros directly to a function, it may be crashed. + | Because compiler may not apply alignment as defined on **typedef** to that macro while passing it (on stack) to a function. + +Wrong Results: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Again, you may used wrong function. + +For instance if you use **glm_normalize()** or **glm_vec3_normalize()** for **vec4**, +it will assume that passed param is **vec3** and will normalize it for **vec3**. +Since you need to **vec4** to be normalized in your case, you will get wrong results. + +Accessing vec4 type with vec3 functions is valid, you will not get any error, exception or crash. +You only get wrong results if you don't know what you are doing! + +So be carefull, when your IDE (Xcode, Visual Studio ...) tried to autocomplete function names, READ IT :) + +**Also implementation may be wrong please let us know by creating an issue on Github.** + +BAD_ACCESS : Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT) or Similar Errors/Crashes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This is similar issue with alignment. For instance if you compiled **cglm** with +AVX (**-mavx**, intentionally or not) and if you use **cglm** in an environment that doesn't +support AVX (or if AVX is disabled intentionally) e.g. environment that max support SSE2/3/4, +then you probably get **BAD ACCESS** or similar... + +Because if you compile **cglm** with AVX it aligns **mat4** with 32 byte boundary, +and your project aligns that as 16 byte boundary... + +Check alignment, supported vector extension or simd in **cglm** and linked projects... + +Other Issues? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Please let us know by creating an issue on Github.** diff --git a/lib/cglm/docs/source/util.rst b/lib/cglm/docs/source/util.rst new file mode 100644 index 0000000..02495f4 --- /dev/null +++ b/lib/cglm/docs/source/util.rst @@ -0,0 +1,182 @@ +.. default-domain:: C + +utils / helpers +================================================================================ + +Header: cglm/util.h + + + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_sign` +#. :c:func:`glm_signf` +#. :c:func:`glm_rad` +#. :c:func:`glm_deg` +#. :c:func:`glm_make_rad` +#. :c:func:`glm_make_deg` +#. :c:func:`glm_pow2` +#. :c:func:`glm_min` +#. :c:func:`glm_max` +#. :c:func:`glm_clamp` +#. :c:func:`glm_lerp` +#. :c:func:`glm_swapf` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: int glm_sign(int val) + + | returns sign of 32 bit integer as +1, -1, 0 + + | **Important**: It returns 0 for zero input + + Parameters: + | *[in]* **val** an integer + + Returns: + sign of given number + +.. c:function:: float glm_signf(float val) + + | returns sign of 32 bit integer as +1.0, -1.0, 0.0 + + | **Important**: It returns 0.0f for zero input + + Parameters: + | *[in]* **val** a float + + Returns: + sign of given number + +.. c:function:: float glm_rad(float deg) + + | convert degree to radians + + Parameters: + | *[in]* **deg** angle in degrees + +.. c:function:: float glm_deg(float rad) + + | convert radians to degree + + Parameters: + | *[in]* **rad** angle in radians + +.. c:function:: void glm_make_rad(float *degm) + + | convert exsisting degree to radians. this will override degrees value + + Parameters: + | *[in, out]* **deg** pointer to angle in degrees + +.. c:function:: void glm_make_deg(float *rad) + + | convert exsisting radians to degree. this will override radians value + + Parameters: + | *[in, out]* **rad** pointer to angle in radians + +.. c:function:: float glm_pow2(float x) + + | multiplies given parameter with itself = x * x or powf(x, 2) + + Parameters: + | *[in]* **x** value + + Returns: + square of a given number + +.. c:function:: float glm_min(float a, float b) + + | returns minimum of given two values + + Parameters: + | *[in]* **a** number 1 + | *[in]* **b** number 2 + + Returns: + minimum value + +.. c:function:: float glm_max(float a, float b) + + | returns maximum of given two values + + Parameters: + | *[in]* **a** number 1 + | *[in]* **b** number 2 + + Returns: + maximum value + +.. c:function:: void glm_clamp(float val, float minVal, float maxVal) + + constrain a value to lie between two further values + + Parameters: + | *[in]* **val** input value + | *[in]* **minVal** minimum value + | *[in]* **maxVal** maximum value + + Returns: + clamped value + +.. c:function:: float glm_lerp(float from, float to, float t) + + linear interpolation between two number + + | formula: from + s * (to - from) + + Parameters: + | *[in]* **from** from value + | *[in]* **to** to value + | *[in]* **t** interpolant (amount) clamped between 0 and 1 + + Returns: + interpolated value + +.. c:function:: bool glm_eq(float a, float b) + + check if two float equal with using EPSILON + + Parameters: + | *[in]* **a** a + | *[in]* **b** b + + Returns: + true if a and b are equal + +.. c:function:: float glm_percent(float from, float to, float current) + + percentage of current value between start and end value + + Parameters: + | *[in]* **from** from value + | *[in]* **to** to value + | *[in]* **current** value between from and to values + + Returns: + percentage of current value + +.. c:function:: float glm_percentc(float from, float to, float current) + + clamped percentage of current value between start and end value + + Parameters: + | *[in]* **from** from value + | *[in]* **to** to value + | *[in]* **current** value between from and to values + + Returns: + clamped normalized percent (0-100 in 0-1) + +.. c:function:: void glm_swapf(float *a, float *b) + + swap two float values + + Parameters: + | *[in]* **a** float 1 + | *[in]* **b** float 2 diff --git a/lib/cglm/docs/source/vec2-ext.rst b/lib/cglm/docs/source/vec2-ext.rst new file mode 100644 index 0000000..619d48f --- /dev/null +++ b/lib/cglm/docs/source/vec2-ext.rst @@ -0,0 +1,134 @@ +.. default-domain:: C + +vec2 extra +========== + +Header: cglm/vec2-ext.h + +There are some functions are in called in extra header. These are called extra +because they are not used like other functions in vec2.h in the future some of +these functions ma be moved to vec2 header. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_vec2_fill` +#. :c:func:`glm_vec2_eq` +#. :c:func:`glm_vec2_eq_eps` +#. :c:func:`glm_vec2_eq_all` +#. :c:func:`glm_vec2_eqv` +#. :c:func:`glm_vec2_eqv_eps` +#. :c:func:`glm_vec2_max` +#. :c:func:`glm_vec2_min` +#. :c:func:`glm_vec2_isnan` +#. :c:func:`glm_vec2_isinf` +#. :c:func:`glm_vec2_isvalid` +#. :c:func:`glm_vec2_sign` +#. :c:func:`glm_vec2_sqrt` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_vec2_fill(vec2 v, float val) + + fill a vector with specified value + + Parameters: + | *[in,out]* **dest** destination + | *[in]* **val** value + + +.. c:function:: bool glm_vec2_eq(vec2 v, float val) + + check if vector is equal to value (without epsilon) + + Parameters: + | *[in]* **v** vector + | *[in]* **val** value + +.. c:function:: bool glm_vec2_eq_eps(vec2 v, float val) + + check if vector is equal to value (with epsilon) + + Parameters: + | *[in]* **v** vector + | *[in]* **val** value + +.. c:function:: bool glm_vec2_eq_all(vec2 v) + + check if vectors members are equal (without epsilon) + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec2_eqv(vec2 v1, vec2 v2) + + check if vector is equal to another (without epsilon) vector + + Parameters: + | *[in]* **vec** vector 1 + | *[in]* **vec** vector 2 + +.. c:function:: bool glm_vec2_eqv_eps(vec2 v1, vec2 v2) + + check if vector is equal to another (with epsilon) + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + +.. c:function:: float glm_vec2_max(vec2 v) + + max value of vector + + Parameters: + | *[in]* **v** vector + +.. c:function:: float glm_vec2_min(vec2 v) + + min value of vector + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec2_isnan(vec2 v) + + | check if one of items is NaN (not a number) + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec2_isinf(vec2 v) + + | check if one of items is INFINITY + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec2_isvalid(vec2 v) + + | check if all items are valid number + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: void glm_vec2_sign(vec2 v, vec2 dest) + + get sign of 32 bit float as +1, -1, 0 + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** sign vector (only keeps signs as -1, 0, -1) + +.. c:function:: void glm_vec2_sqrt(vec2 v, vec2 dest) + + square root of each vector item + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** destination vector (sqrt(v)) diff --git a/lib/cglm/docs/source/vec2.rst b/lib/cglm/docs/source/vec2.rst new file mode 100644 index 0000000..93d8663 --- /dev/null +++ b/lib/cglm/docs/source/vec2.rst @@ -0,0 +1,375 @@ +.. default-domain:: C + +vec2 +==== + +Header: cglm/vec2.h + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Macros: + +1. GLM_vec2_ONE_INIT +#. GLM_vec2_ZERO_INIT +#. GLM_vec2_ONE +#. GLM_vec2_ZERO + +Functions: + +1. :c:func:`glm_vec2` +#. :c:func:`glm_vec2_copy` +#. :c:func:`glm_vec2_zero` +#. :c:func:`glm_vec2_one` +#. :c:func:`glm_vec2_dot` +#. :c:func:`glm_vec2_cross` +#. :c:func:`glm_vec2_norm2` +#. :c:func:`glm_vec2_norm` +#. :c:func:`glm_vec2_add` +#. :c:func:`glm_vec2_adds` +#. :c:func:`glm_vec2_sub` +#. :c:func:`glm_vec2_subs` +#. :c:func:`glm_vec2_mul` +#. :c:func:`glm_vec2_scale` +#. :c:func:`glm_vec2_scale_as` +#. :c:func:`glm_vec2_div` +#. :c:func:`glm_vec2_divs` +#. :c:func:`glm_vec2_addadd` +#. :c:func:`glm_vec2_subadd` +#. :c:func:`glm_vec2_muladd` +#. :c:func:`glm_vec2_muladds` +#. :c:func:`glm_vec2_maxadd` +#. :c:func:`glm_vec2_minadd` +#. :c:func:`glm_vec2_negate` +#. :c:func:`glm_vec2_negate_to` +#. :c:func:`glm_vec2_normalize` +#. :c:func:`glm_vec2_normalize_to` +#. :c:func:`glm_vec2_rotate` +#. :c:func:`glm_vec2_distance2` +#. :c:func:`glm_vec2_distance` +#. :c:func:`glm_vec2_maxv` +#. :c:func:`glm_vec2_minv` +#. :c:func:`glm_vec2_clamp` +#. :c:func:`glm_vec2_lerp` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_vec2(float * v, vec2 dest) + + init vec2 using vec3 or vec4 + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** destination + +.. c:function:: void glm_vec2_copy(vec2 a, vec2 dest) + + copy all members of [a] to [dest] + + Parameters: + | *[in]* **a** source + | *[out]* **dest** destination + +.. c:function:: void glm_vec2_zero(vec2 v) + + makes all members 0.0f (zero) + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec2_one(vec2 v) + + makes all members 1.0f (one) + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: float glm_vec2_dot(vec2 a, vec2 b) + + dot product of vec2 + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + + Returns: + dot product + +.. c:function:: void glm_vec2_cross(vec2 a, vec2 b, vec2 d) + + cross product of two vector (RH) + + | ref: http://allenchou.net/2013/07/cross-product-of-2d-vectors/ + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** destination + + Returns: + Z component of cross product + +.. c:function:: float glm_vec2_norm2(vec2 v) + + norm * norm (magnitude) of vector + + we can use this func instead of calling norm * norm, because it would call + sqrtf fuction twice but with this func we can avoid func call, maybe this is + not good name for this func + + Parameters: + | *[in]* **v** vector + + Returns: + square of norm / magnitude + +.. c:function:: float glm_vec2_norm(vec2 vec) + + | euclidean norm (magnitude), also called L2 norm + | this will give magnitude of vector in euclidean space + + Parameters: + | *[in]* **vec** vector + +.. c:function:: void glm_vec2_add(vec2 a, vec2 b, vec2 dest) + + add a vector to b vector store result in dest + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec2_adds(vec2 a, float s, vec2 dest) + + add scalar to v vector store result in dest (d = v + vec(s)) + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec2_sub(vec2 v1, vec2 v2, vec2 dest) + + subtract b vector from a vector store result in dest (d = v1 - v2) + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec2_subs(vec2 v, float s, vec2 dest) + + subtract scalar from v vector store result in dest (d = v - vec(s)) + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec2_mul(vec2 a, vec2 b, vec2 d) + + multiply two vector (component-wise multiplication) + + Parameters: + | *[in]* **a** vector + | *[in]* **b** scalar + | *[out]* **d** result = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + +.. c:function:: void glm_vec2_scale(vec2 v, float s, vec2 dest) + + multiply/scale vec2 vector with scalar: result = v * s + + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec2_scale_as(vec2 v, float s, vec2 dest) + + make vec2 vector scale as specified: result = unit(v) * s + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec2_div(vec2 a, vec2 b, vec2 dest) + + div vector with another component-wise division: d = a / b + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** result = (a[0] / b[0], a[1] / b[1], a[2] / b[2]) + +.. c:function:: void glm_vec2_divs(vec2 v, float s, vec2 dest) + + div vector with scalar: d = v / s + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** result = (a[0] / s, a[1] / s, a[2] / s]) + +.. c:function:: void glm_vec2_addadd(vec2 a, vec2 b, vec2 dest) + + | add two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a + b) + +.. c:function:: void glm_vec2_subadd(vec2 a, vec2 b, vec2 dest) + + | sub two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a - b) + +.. c:function:: void glm_vec2_muladd(vec2 a, vec2 b, vec2 dest) + + | mul two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec2_muladds(vec2 a, float s, vec2 dest) + + | mul vector with scalar and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector + | *[in]* **s** scalar + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec2_maxadd(vec2 a, vec2 b, vec2 dest) + + | add max of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec2_minadd(vec2 a, vec2 b, vec2 dest) + + | add min of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec2_negate(vec2 v) + + negate vector components + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec2_negate_to(vec2 v, vec2 dest) + + negate vector components and store result in dest + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** negated vector + +.. c:function:: void glm_vec2_normalize(vec2 v) + + normalize vec2 and store result in same vec + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec2_normalize_to(vec2 vec, vec2 dest) + + normalize vec2 to dest + + Parameters: + | *[in]* **vec** source + | *[out]* **dest** destination + +.. c:function:: void glm_vec2_rotate(vec2 v, float angle, vec2 dest) + + rotate vec2 around axis by angle using Rodrigues' rotation formula + + Parameters: + | *[in]* **v** vector + | *[in]* **axis** axis vector + | *[out]* **dest** destination + +.. c:function:: float glm_vec2_distance2(vec2 v1, vec2 v2) + + squared distance between two vectors + + Parameters: + | *[in]* **mat** vector1 + | *[in]* **row1** vector2 + + Returns: + | squared distance (distance * distance) + +.. c:function:: float glm_vec2_distance(vec2 v1, vec2 v2) + + distance between two vectors + + Parameters: + | *[in]* **mat** vector1 + | *[in]* **row1** vector2 + + Returns: + | distance + +.. c:function:: void glm_vec2_maxv(vec2 v1, vec2 v2, vec2 dest) + + max values of vectors + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + | *[out]* **dest** destination + +.. c:function:: void glm_vec2_minv(vec2 v1, vec2 v2, vec2 dest) + + min values of vectors + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + | *[out]* **dest** destination + +.. c:function:: void glm_vec2_clamp(vec2 v, float minVal, float maxVal) + + constrain a value to lie between two further values + + Parameters: + | *[in, out]* **v** vector + | *[in]* **minVal** minimum value + | *[in]* **maxVal** maximum value + +.. c:function:: void glm_vec2_lerp(vec2 from, vec2 to, float t, vec2 dest) + + linear interpolation between two vector + + | formula: from + s * (to - from) + + Parameters: + | *[in]* **from** from value + | *[in]* **to** to value + | *[in]* **t** interpolant (amount) clamped between 0 and 1 + | *[out]* **dest** destination diff --git a/lib/cglm/docs/source/vec3-ext.rst b/lib/cglm/docs/source/vec3-ext.rst new file mode 100644 index 0000000..88f3699 --- /dev/null +++ b/lib/cglm/docs/source/vec3-ext.rst @@ -0,0 +1,143 @@ +.. default-domain:: C + +vec3 extra +========== + +Header: cglm/vec3-ext.h + +There are some functions are in called in extra header. These are called extra +because they are not used like other functions in vec3.h in the future some of +these functions ma be moved to vec3 header. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_vec3_mulv` +#. :c:func:`glm_vec3_broadcast` +#. :c:func:`glm_vec3_eq` +#. :c:func:`glm_vec3_eq_eps` +#. :c:func:`glm_vec3_eq_all` +#. :c:func:`glm_vec3_eqv` +#. :c:func:`glm_vec3_eqv_eps` +#. :c:func:`glm_vec3_max` +#. :c:func:`glm_vec3_min` +#. :c:func:`glm_vec3_isnan` +#. :c:func:`glm_vec3_isinf` +#. :c:func:`glm_vec3_isvalid` +#. :c:func:`glm_vec3_sign` +#. :c:func:`glm_vec3_sqrt` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_vec3_mulv(vec3 a, vec3 b, vec3 d) + + multiplies individual items + + Parameters: + | *[in]* **a** vec1 + | *[in]* **b** vec2 + | *[out]* **d** destination (v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]) + +.. c:function:: void glm_vec3_broadcast(float val, vec3 d) + + fill a vector with specified value + + Parameters: + | *[in]* **val** value + | *[out]* **dest** destination + +.. c:function:: bool glm_vec3_eq(vec3 v, float val) + + check if vector is equal to value (without epsilon) + + Parameters: + | *[in]* **v** vector + | *[in]* **val** value + +.. c:function:: bool glm_vec3_eq_eps(vec3 v, float val) + + check if vector is equal to value (with epsilon) + + Parameters: + | *[in]* **v** vector + | *[in]* **val** value + +.. c:function:: bool glm_vec3_eq_all(vec3 v) + + check if vectors members are equal (without epsilon) + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec3_eqv(vec3 v1, vec3 v2) + + check if vector is equal to another (without epsilon) vector + + Parameters: + | *[in]* **vec** vector 1 + | *[in]* **vec** vector 2 + +.. c:function:: bool glm_vec3_eqv_eps(vec3 v1, vec3 v2) + + check if vector is equal to another (with epsilon) + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + +.. c:function:: float glm_vec3_max(vec3 v) + + max value of vector + + Parameters: + | *[in]* **v** vector + +.. c:function:: float glm_vec3_min(vec3 v) + + min value of vector + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec3_isnan(vec3 v) + + | check if one of items is NaN (not a number) + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec3_isinf(vec3 v) + + | check if one of items is INFINITY + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec3_isvalid(vec3 v) + + | check if all items are valid number + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: void glm_vec3_sign(vec3 v, vec3 dest) + + get sign of 32 bit float as +1, -1, 0 + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** sign vector (only keeps signs as -1, 0, -1) + +.. c:function:: void glm_vec3_sqrt(vec3 v, vec3 dest) + + square root of each vector item + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** destination vector (sqrt(v)) diff --git a/lib/cglm/docs/source/vec3.rst b/lib/cglm/docs/source/vec3.rst new file mode 100644 index 0000000..17e4824 --- /dev/null +++ b/lib/cglm/docs/source/vec3.rst @@ -0,0 +1,503 @@ +.. default-domain:: C + +vec3 +==== + +Header: cglm/vec3.h + + **Important:** *cglm* was used **glm_vec_** namespace for vec3 functions until + **v0.5.0**, since **v0.5.0** cglm uses **glm_vec3_** namespace for vec3. + + Also `glm_vec3_flipsign` has been renamed to `glm_vec3_negate` + +We mostly use vectors in graphics math, to make writing code faster +and easy to read, some *vec3* functions are aliased in global namespace. +For instance :c:func:`glm_dot` is alias of :c:func:`glm_vec3_dot`, +alias means inline wrapper here. There is no call verison of alias functions + +There are also functions for rotating *vec3* vector. **_m4**, **_m3** prefixes +rotate *vec3* with matrix. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Macros: + +1. glm_vec3_dup(v, dest) +#. GLM_VEC3_ONE_INIT +#. GLM_VEC3_ZERO_INIT +#. GLM_VEC3_ONE +#. GLM_VEC3_ZERO +#. GLM_YUP +#. GLM_ZUP +#. GLM_XUP + +Functions: + +1. :c:func:`glm_vec3` +#. :c:func:`glm_vec3_copy` +#. :c:func:`glm_vec3_zero` +#. :c:func:`glm_vec3_one` +#. :c:func:`glm_vec3_dot` +#. :c:func:`glm_vec3_norm2` +#. :c:func:`glm_vec3_norm` +#. :c:func:`glm_vec3_add` +#. :c:func:`glm_vec3_adds` +#. :c:func:`glm_vec3_sub` +#. :c:func:`glm_vec3_subs` +#. :c:func:`glm_vec3_mul` +#. :c:func:`glm_vec3_scale` +#. :c:func:`glm_vec3_scale_as` +#. :c:func:`glm_vec3_div` +#. :c:func:`glm_vec3_divs` +#. :c:func:`glm_vec3_addadd` +#. :c:func:`glm_vec3_subadd` +#. :c:func:`glm_vec3_muladd` +#. :c:func:`glm_vec3_muladds` +#. :c:func:`glm_vec3_maxadd` +#. :c:func:`glm_vec3_minadd` +#. :c:func:`glm_vec3_flipsign` +#. :c:func:`glm_vec3_flipsign_to` +#. :c:func:`glm_vec3_inv` +#. :c:func:`glm_vec3_inv_to` +#. :c:func:`glm_vec3_negate` +#. :c:func:`glm_vec3_negate_to` +#. :c:func:`glm_vec3_normalize` +#. :c:func:`glm_vec3_normalize_to` +#. :c:func:`glm_vec3_cross` +#. :c:func:`glm_vec3_crossn` +#. :c:func:`glm_vec3_distance2` +#. :c:func:`glm_vec3_distance` +#. :c:func:`glm_vec3_angle` +#. :c:func:`glm_vec3_rotate` +#. :c:func:`glm_vec3_rotate_m4` +#. :c:func:`glm_vec3_rotate_m3` +#. :c:func:`glm_vec3_proj` +#. :c:func:`glm_vec3_center` +#. :c:func:`glm_vec3_maxv` +#. :c:func:`glm_vec3_minv` +#. :c:func:`glm_vec3_ortho` +#. :c:func:`glm_vec3_clamp` +#. :c:func:`glm_vec3_lerp` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_vec3(vec4 v4, vec3 dest) + + init vec3 using vec4 + + Parameters: + | *[in]* **v4** vector4 + | *[out]* **dest** destination + +.. c:function:: void glm_vec3_copy(vec3 a, vec3 dest) + + copy all members of [a] to [dest] + + Parameters: + | *[in]* **a** source + | *[out]* **dest** destination + +.. c:function:: void glm_vec3_zero(vec3 v) + + makes all members 0.0f (zero) + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec3_one(vec3 v) + + makes all members 1.0f (one) + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: float glm_vec3_dot(vec3 a, vec3 b) + + dot product of vec3 + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + + Returns: + dot product + +.. c:function:: void glm_vec3_cross(vec3 a, vec3 b, vec3 d) + + cross product of two vector (RH) + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** destination + +.. c:function:: void glm_vec3_crossn(vec3 a, vec3 b, vec3 dest) + + cross product of two vector (RH) and normalize the result + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** destination + +.. c:function:: float glm_vec3_norm2(vec3 v) + + norm * norm (magnitude) of vector + + we can use this func instead of calling norm * norm, because it would call + sqrtf fuction twice but with this func we can avoid func call, maybe this is + not good name for this func + + Parameters: + | *[in]* **v** vector + + Returns: + square of norm / magnitude + +.. c:function:: float glm_vec3_norm(vec3 vec) + + | euclidean norm (magnitude), also called L2 norm + | this will give magnitude of vector in euclidean space + + Parameters: + | *[in]* **vec** vector + +.. c:function:: void glm_vec3_add(vec3 a, vec3 b, vec3 dest) + + add a vector to b vector store result in dest + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec3_adds(vec3 a, float s, vec3 dest) + + add scalar to v vector store result in dest (d = v + vec(s)) + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec3_sub(vec3 v1, vec3 v2, vec3 dest) + + subtract b vector from a vector store result in dest (d = v1 - v2) + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec3_subs(vec3 v, float s, vec3 dest) + + subtract scalar from v vector store result in dest (d = v - vec(s)) + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec3_mul(vec3 a, vec3 b, vec3 d) + + multiply two vector (component-wise multiplication) + + Parameters: + | *[in]* **a** vector + | *[in]* **b** scalar + | *[out]* **d** result = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + +.. c:function:: void glm_vec3_scale(vec3 v, float s, vec3 dest) + + multiply/scale vec3 vector with scalar: result = v * s + + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec3_scale_as(vec3 v, float s, vec3 dest) + + make vec3 vector scale as specified: result = unit(v) * s + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec3_div(vec3 a, vec3 b, vec3 dest) + + div vector with another component-wise division: d = a / b + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** result = (a[0] / b[0], a[1] / b[1], a[2] / b[2]) + +.. c:function:: void glm_vec3_divs(vec3 v, float s, vec3 dest) + + div vector with scalar: d = v / s + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** result = (a[0] / s, a[1] / s, a[2] / s]) + +.. c:function:: void glm_vec3_addadd(vec3 a, vec3 b, vec3 dest) + + | add two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a + b) + +.. c:function:: void glm_vec3_subadd(vec3 a, vec3 b, vec3 dest) + + | sub two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a - b) + +.. c:function:: void glm_vec3_muladd(vec3 a, vec3 b, vec3 dest) + + | mul two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec3_muladds(vec3 a, float s, vec3 dest) + + | mul vector with scalar and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector + | *[in]* **s** scalar + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec3_maxadd(vec3 a, vec3 b, vec3 dest) + + | add max of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec3_minadd(vec3 a, vec3 b, vec3 dest) + + | add min of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec3_flipsign(vec3 v) + + **DEPRACATED!** + + use :c:func:`glm_vec3_negate` + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec3_flipsign_to(vec3 v, vec3 dest) + + **DEPRACATED!** + + use :c:func:`glm_vec3_negate_to` + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** negated vector + +.. c:function:: void glm_vec3_inv(vec3 v) + + **DEPRACATED!** + + use :c:func:`glm_vec3_negate` + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec3_inv_to(vec3 v, vec3 dest) + + **DEPRACATED!** + + use :c:func:`glm_vec3_negate_to` + + Parameters: + | *[in]* **v** source + | *[out]* **dest** destination + +.. c:function:: void glm_vec3_negate(vec3 v) + + negate vector components + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec3_negate_to(vec3 v, vec3 dest) + + negate vector components and store result in dest + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** negated vector + +.. c:function:: void glm_vec3_normalize(vec3 v) + + normalize vec3 and store result in same vec + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec3_normalize_to(vec3 vec, vec3 dest) + + normalize vec3 to dest + + Parameters: + | *[in]* **vec** source + | *[out]* **dest** destination + +.. c:function:: float glm_vec3_angle(vec3 v1, vec3 v2) + + angle betwen two vector + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + + Return: + | angle as radians + +.. c:function:: void glm_vec3_rotate(vec3 v, float angle, vec3 axis) + + rotate vec3 around axis by angle using Rodrigues' rotation formula + + Parameters: + | *[in, out]* **v** vector + | *[in]* **axis** axis vector (will be normalized) + | *[in]* **angle** angle (radians) + +.. c:function:: void glm_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest) + + apply rotation matrix to vector + + Parameters: + | *[in]* **m** affine matrix or rot matrix + | *[in]* **v** vector + | *[out]* **dest** rotated vector + +.. c:function:: void glm_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest) + + apply rotation matrix to vector + + Parameters: + | *[in]* **m** affine matrix or rot matrix + | *[in]* **v** vector + | *[out]* **dest** rotated vector + +.. c:function:: void glm_vec3_proj(vec3 a, vec3 b, vec3 dest) + + project a vector onto b vector + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** projected vector + +.. c:function:: void glm_vec3_center(vec3 v1, vec3 v2, vec3 dest) + + find center point of two vector + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + | *[out]* **dest** center point + +.. c:function:: float glm_vec3_distance2(vec3 v1, vec3 v2) + + squared distance between two vectors + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + + Returns: + | squared distance (distance * distance) + +.. c:function:: float glm_vec3_distance(vec3 v1, vec3 v2) + + distance between two vectors + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + + Returns: + | distance + +.. c:function:: void glm_vec3_maxv(vec3 v1, vec3 v2, vec3 dest) + + max values of vectors + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + | *[out]* **dest** destination + +.. c:function:: void glm_vec3_minv(vec3 v1, vec3 v2, vec3 dest) + + min values of vectors + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + | *[out]* **dest** destination + +.. c:function:: void glm_vec3_ortho(vec3 v, vec3 dest) + + possible orthogonal/perpendicular vector + + References: + * `On picking an orthogonal vector (and combing coconuts) `_ + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** orthogonal/perpendicular vector + +.. c:function:: void glm_vec3_clamp(vec3 v, float minVal, float maxVal) + + constrain a value to lie between two further values + + Parameters: + | *[in, out]* **v** vector + | *[in]* **minVal** minimum value + | *[in]* **maxVal** maximum value + +.. c:function:: void glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest) + + linear interpolation between two vector + + | formula: from + s * (to - from) + + Parameters: + | *[in]* **from** from value + | *[in]* **to** to value + | *[in]* **t** interpolant (amount) clamped between 0 and 1 + | *[out]* **dest** destination diff --git a/lib/cglm/docs/source/vec4-ext.rst b/lib/cglm/docs/source/vec4-ext.rst new file mode 100644 index 0000000..722424e --- /dev/null +++ b/lib/cglm/docs/source/vec4-ext.rst @@ -0,0 +1,138 @@ +.. default-domain:: C + +vec4 extra +========== + +Header: cglm/vec4-ext.h + +There are some functions are in called in extra header. These are called extra +because they are not used like other functions in vec4.h in the future some of +these functions ma be moved to vec4 header. + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Functions: + +1. :c:func:`glm_vec4_mulv` +#. :c:func:`glm_vec4_broadcast` +#. :c:func:`glm_vec4_eq` +#. :c:func:`glm_vec4_eq_eps` +#. :c:func:`glm_vec4_eq_all` +#. :c:func:`glm_vec4_eqv` +#. :c:func:`glm_vec4_eqv_eps` +#. :c:func:`glm_vec4_max` +#. :c:func:`glm_vec4_min` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_vec4_mulv(vec4 a, vec4 b, vec4 d) + + multiplies individual items + + Parameters: + | *[in]* **a** vec1 + | *[in]* **b** vec2 + | *[out]* **d** destination + +.. c:function:: void glm_vec4_broadcast(float val, vec4 d) + + fill a vector with specified value + + Parameters: + | *[in]* **val** value + | *[out]* **dest** destination + +.. c:function:: bool glm_vec4_eq(vec4 v, float val) + + check if vector is equal to value (without epsilon) + + Parameters: + | *[in]* **v** vector + | *[in]* **val** value + +.. c:function:: bool glm_vec4_eq_eps(vec4 v, float val) + + check if vector is equal to value (with epsilon) + + Parameters: + | *[in]* **v** vector + | *[in]* **val** value + +.. c:function:: bool glm_vec4_eq_all(vec4 v) + + check if vectors members are equal (without epsilon) + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec4_eqv(vec4 v1, vec4 v2) + + check if vector is equal to another (without epsilon) vector + + Parameters: + | *[in]* **vec** vector 1 + | *[in]* **vec** vector 2 + +.. c:function:: bool glm_vec4_eqv_eps(vec4 v1, vec4 v2) + + check if vector is equal to another (with epsilon) + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + +.. c:function:: float glm_vec4_max(vec4 v) + + max value of vector + + Parameters: + | *[in]* **v** vector + +.. c:function:: float glm_vec4_min(vec4 v) + + min value of vector + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec4_isnan(vec4 v) + + | check if one of items is NaN (not a number) + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec4_isinf(vec4 v) + + | check if one of items is INFINITY + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: bool glm_vec4_isvalid(vec4 v) + + | check if all items are valid number + | you should only use this in DEBUG mode or very critical asserts + + Parameters: + | *[in]* **v** vector + +.. c:function:: void glm_vec4_sign(vec4 v, vec4 dest) + + get sign of 32 bit float as +1, -1, 0 + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** sign vector (only keeps signs as -1, 0, -1) + +.. c:function:: void glm_vec4_sqrt(vec4 v, vec4 dest) + + square root of each vector item + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** destination vector (sqrt(v)) diff --git a/lib/cglm/docs/source/vec4.rst b/lib/cglm/docs/source/vec4.rst new file mode 100644 index 0000000..58c861e --- /dev/null +++ b/lib/cglm/docs/source/vec4.rst @@ -0,0 +1,408 @@ +.. default-domain:: C + +vec4 +==== + +Header: cglm/vec4.h + +Table of contents (click to go): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Macros: + +1. glm_vec4_dup3(v, dest) +#. glm_vec4_dup(v, dest) +#. GLM_VEC4_ONE_INIT +#. GLM_VEC4_BLACK_INIT +#. GLM_VEC4_ZERO_INIT +#. GLM_VEC4_ONE +#. GLM_VEC4_BLACK +#. GLM_VEC4_ZERO + +Functions: + +1. :c:func:`glm_vec4` +#. :c:func:`glm_vec4_copy3` +#. :c:func:`glm_vec4_copy` +#. :c:func:`glm_vec4_ucopy` +#. :c:func:`glm_vec4_zero` +#. :c:func:`glm_vec4_one` +#. :c:func:`glm_vec4_dot` +#. :c:func:`glm_vec4_norm2` +#. :c:func:`glm_vec4_norm` +#. :c:func:`glm_vec4_add` +#. :c:func:`glm_vec4_adds` +#. :c:func:`glm_vec4_sub` +#. :c:func:`glm_vec4_subs` +#. :c:func:`glm_vec4_mul` +#. :c:func:`glm_vec4_scale` +#. :c:func:`glm_vec4_scale_as` +#. :c:func:`glm_vec4_div` +#. :c:func:`glm_vec4_divs` +#. :c:func:`glm_vec4_addadd` +#. :c:func:`glm_vec4_subadd` +#. :c:func:`glm_vec4_muladd` +#. :c:func:`glm_vec4_muladds` +#. :c:func:`glm_vec4_maxadd` +#. :c:func:`glm_vec4_minadd` +#. :c:func:`glm_vec4_flipsign` +#. :c:func:`glm_vec4_flipsign_to` +#. :c:func:`glm_vec4_inv` +#. :c:func:`glm_vec4_inv_to` +#. :c:func:`glm_vec4_negate` +#. :c:func:`glm_vec4_negate_to` +#. :c:func:`glm_vec4_normalize` +#. :c:func:`glm_vec4_normalize_to` +#. :c:func:`glm_vec4_distance` +#. :c:func:`glm_vec4_maxv` +#. :c:func:`glm_vec4_minv` +#. :c:func:`glm_vec4_clamp` +#. :c:func:`glm_vec4_lerp` +#. :c:func:`glm_vec4_cubic` + +Functions documentation +~~~~~~~~~~~~~~~~~~~~~~~ + +.. c:function:: void glm_vec4(vec3 v3, float last, vec4 dest) + + init vec4 using vec3, since you are initializing vec4 with vec3 + you need to set last item. cglm could set it zero but making it parameter + gives more control + + Parameters: + | *[in]* **v3** vector4 + | *[in]* **last** last item of vec4 + | *[out]* **dest** destination + +.. c:function:: void glm_vec4_copy3(vec4 a, vec3 dest) + + copy first 3 members of [a] to [dest] + + Parameters: + | *[in]* **a** source + | *[out]* **dest** destination + +.. c:function:: void glm_vec4_copy(vec4 v, vec4 dest) + + copy all members of [a] to [dest] + + Parameters: + | *[in]* **v** source + | *[in]* **dest** destination + +.. c:function:: void glm_vec4_ucopy(vec4 v, vec4 dest) + + copy all members of [a] to [dest] + + | alignment is not required + + Parameters: + | *[in]* **v** source + | *[in]* **dest** destination + +.. c:function:: void glm_vec4_zero(vec4 v) + + makes all members zero + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: float glm_vec4_dot(vec4 a, vec4 b) + + dot product of vec4 + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + + Returns: + dot product + +.. c:function:: float glm_vec4_norm2(vec4 v) + + norm * norm (magnitude) of vector + + we can use this func instead of calling norm * norm, because it would call + sqrtf fuction twice but with this func we can avoid func call, maybe this is + not good name for this func + + Parameters: + | *[in]* **v** vector + + Returns: + square of norm / magnitude + +.. c:function:: float glm_vec4_norm(vec4 vec) + + | euclidean norm (magnitude), also called L2 norm + | this will give magnitude of vector in euclidean space + + Parameters: + | *[in]* **vec** vector + +.. c:function:: void glm_vec4_add(vec4 a, vec4 b, vec4 dest) + + add a vector to b vector store result in dest + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec4_adds(vec4 v, float s, vec4 dest) + + add scalar to v vector store result in dest (d = v + vec(s)) + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec4_sub(vec4 a, vec4 b, vec4 dest) + + subtract b vector from a vector store result in dest (d = v1 - v2) + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec4_subs(vec4 v, float s, vec4 dest) + + subtract scalar from v vector store result in dest (d = v - vec(s)) + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec4_mul(vec4 a, vec4 b, vec4 d) + + multiply two vector (component-wise multiplication) + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** result = (a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]) + +.. c:function:: void glm_vec4_scale(vec4 v, float s, vec4 dest) + + multiply/scale vec4 vector with scalar: result = v * s + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec4_scale_as(vec4 v, float s, vec4 dest) + + make vec4 vector scale as specified: result = unit(v) * s + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** destination vector + +.. c:function:: void glm_vec4_div(vec4 a, vec4 b, vec4 dest) + + div vector with another component-wise division: d = v1 / v2 + + Parameters: + | *[in]* **a** vector1 + | *[in]* **b** vector2 + | *[out]* **dest** result = (a[0] / b[0], a[1] / b[1], a[2] / b[2], a[3] / b[3]) + +.. c:function:: void glm_vec4_divs(vec4 v, float s, vec4 dest) + + div vector with scalar: d = v / s + + Parameters: + | *[in]* **v** vector + | *[in]* **s** scalar + | *[out]* **dest** result = (a[0] / s, a[1] / s, a[2] / s, a[3] / s) + +.. c:function:: void glm_vec4_addadd(vec4 a, vec4 b, vec4 dest) + + | add two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a + b) + +.. c:function:: void glm_vec4_subadd(vec4 a, vec4 b, vec4 dest) + + | sub two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a - b) + +.. c:function:: void glm_vec4_muladd(vec4 a, vec4 b, vec4 dest) + + | mul two vectors and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec4_muladds(vec4 a, float s, vec4 dest) + + | mul vector with scalar and add result to sum + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector + | *[in]* **s** scalar + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec4_maxadd(vec4 a, vec4 b, vec4 dest) + + | add max of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec4_minadd(vec4 a, vec4 b, vec4 dest) + + | add min of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec4_flipsign(vec4 v) + + **DEPRACATED!** + + use :c:func:`glm_vec4_negate` + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec4_flipsign_to(vec4 v, vec4 dest) + + **DEPRACATED!** + + use :c:func:`glm_vec4_negate_to` + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** negated vector + +.. c:function:: void glm_vec4_inv(vec4 v) + + **DEPRACATED!** + + use :c:func:`glm_vec4_negate` + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec4_inv_to(vec4 v, vec4 dest) + + **DEPRACATED!** + + use :c:func:`glm_vec4_negate_to` + + Parameters: + | *[in]* **v** source + | *[out]* **dest** destination + +.. c:function:: void glm_vec4_negate(vec4 v) + + negate vector components + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec4_negate_to(vec4 v, vec4 dest) + + negate vector components and store result in dest + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** negated vector + +.. c:function:: void glm_vec4_normalize(vec4 v) + + normalize vec4 and store result in same vec + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec4_normalize_to(vec4 vec, vec4 dest) + + normalize vec4 to dest + + Parameters: + | *[in]* **vec** source + | *[out]* **dest** destination + +.. c:function:: float glm_vec4_distance(vec4 v1, vec4 v2) + + distance between two vectors + + Parameters: + | *[in]* **mat** vector1 + | *[in]* **row1** vector2 + + Returns: + | distance + +.. c:function:: void glm_vec4_maxv(vec4 v1, vec4 v2, vec4 dest) + + max values of vectors + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + | *[out]* **dest** destination + +.. c:function:: void glm_vec4_minv(vec4 v1, vec4 v2, vec4 dest) + + min values of vectors + + Parameters: + | *[in]* **v1** vector1 + | *[in]* **v2** vector2 + | *[out]* **dest** destination + +.. c:function:: void glm_vec4_clamp(vec4 v, float minVal, float maxVal) + + constrain a value to lie between two further values + + Parameters: + | *[in, out]* **v** vector + | *[in]* **minVal** minimum value + | *[in]* **maxVal** maximum value + +.. c:function:: void glm_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest) + + linear interpolation between two vector + + | formula: from + s * (to - from) + + Parameters: + | *[in]* **from** from value + | *[in]* **to** to value + | *[in]* **t** interpolant (amount) clamped between 0 and 1 + | *[out]* **dest** destination + +.. c:function:: void glm_vec4_cubic(float s, vec4 dest) + + helper to fill vec4 as [S^3, S^2, S, 1] + + Parameters: + | *[in]* **s** parameter + | *[out]* **dest** destination diff --git a/lib/cglm/docs/source/version.rst b/lib/cglm/docs/source/version.rst new file mode 100644 index 0000000..7e662f9 --- /dev/null +++ b/lib/cglm/docs/source/version.rst @@ -0,0 +1,15 @@ +.. default-domain:: C + +version +================================================================================ + +Header: cglm/version.h + +**cglm** uses semantic versioning (http://semver.org) which is MAJOR.MINOR.PATCH + +| **CGLM_VERSION_MAJOR** is major number of the version. +| **CGLM_VERSION_MINOR** is minor number of the version. +| **CGLM_VERSION_PATCH** is patch number of the version. + +every release increases these numbers. You can check existing version by +including `cglm/version.h` diff --git a/lib/cglm/include/cglm/affine-mat.h b/lib/cglm/include/cglm/affine-mat.h new file mode 100644 index 0000000..75607e7 --- /dev/null +++ b/lib/cglm/include/cglm/affine-mat.h @@ -0,0 +1,178 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_mul(mat4 m1, mat4 m2, mat4 dest); + CGLM_INLINE void glm_inv_tr(mat4 mat); + */ + +#ifndef cglm_affine_mat_h +#define cglm_affine_mat_h + +#include "common.h" +#include "mat4.h" +#include "mat3.h" + +#ifdef CGLM_SSE_FP +# include "simd/sse2/affine.h" +#endif + +#ifdef CGLM_AVX_FP +# include "simd/avx/affine.h" +#endif + +#ifdef CGLM_NEON_FP +# include "simd/neon/affine.h" +#endif + +/*! + * @brief this is similar to glm_mat4_mul but specialized to affine transform + * + * Matrix format should be: + * R R R X + * R R R Y + * R R R Z + * 0 0 0 W + * + * this reduces some multiplications. It should be faster than mat4_mul. + * if you are not sure about matrix format then DON'T use this! use mat4_mul + * + * @param[in] m1 affine matrix 1 + * @param[in] m2 affine matrix 2 + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_mul(mat4 m1, mat4 m2, mat4 dest) { +#ifdef __AVX__ + glm_mul_avx(m1, m2, dest); +#elif defined( __SSE__ ) || defined( __SSE2__ ) + glm_mul_sse2(m1, m2, dest); +#elif defined(CGLM_NEON_FP) + glm_mul_neon(m1, m2, dest); +#else + float a00 = m1[0][0], a01 = m1[0][1], a02 = m1[0][2], a03 = m1[0][3], + a10 = m1[1][0], a11 = m1[1][1], a12 = m1[1][2], a13 = m1[1][3], + a20 = m1[2][0], a21 = m1[2][1], a22 = m1[2][2], a23 = m1[2][3], + a30 = m1[3][0], a31 = m1[3][1], a32 = m1[3][2], a33 = m1[3][3], + + b00 = m2[0][0], b01 = m2[0][1], b02 = m2[0][2], + b10 = m2[1][0], b11 = m2[1][1], b12 = m2[1][2], + b20 = m2[2][0], b21 = m2[2][1], b22 = m2[2][2], + b30 = m2[3][0], b31 = m2[3][1], b32 = m2[3][2], b33 = m2[3][3]; + + dest[0][0] = a00 * b00 + a10 * b01 + a20 * b02; + dest[0][1] = a01 * b00 + a11 * b01 + a21 * b02; + dest[0][2] = a02 * b00 + a12 * b01 + a22 * b02; + dest[0][3] = a03 * b00 + a13 * b01 + a23 * b02; + + dest[1][0] = a00 * b10 + a10 * b11 + a20 * b12; + dest[1][1] = a01 * b10 + a11 * b11 + a21 * b12; + dest[1][2] = a02 * b10 + a12 * b11 + a22 * b12; + dest[1][3] = a03 * b10 + a13 * b11 + a23 * b12; + + dest[2][0] = a00 * b20 + a10 * b21 + a20 * b22; + dest[2][1] = a01 * b20 + a11 * b21 + a21 * b22; + dest[2][2] = a02 * b20 + a12 * b21 + a22 * b22; + dest[2][3] = a03 * b20 + a13 * b21 + a23 * b22; + + dest[3][0] = a00 * b30 + a10 * b31 + a20 * b32 + a30 * b33; + dest[3][1] = a01 * b30 + a11 * b31 + a21 * b32 + a31 * b33; + dest[3][2] = a02 * b30 + a12 * b31 + a22 * b32 + a32 * b33; + dest[3][3] = a03 * b30 + a13 * b31 + a23 * b32 + a33 * b33; +#endif +} + +/*! + * @brief this is similar to glm_mat4_mul but specialized to affine transform + * + * Right Matrix format should be: + * R R R 0 + * R R R 0 + * R R R 0 + * 0 0 0 1 + * + * this reduces some multiplications. It should be faster than mat4_mul. + * if you are not sure about matrix format then DON'T use this! use mat4_mul + * + * @param[in] m1 affine matrix 1 + * @param[in] m2 affine matrix 2 + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_mul_rot(mat4 m1, mat4 m2, mat4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mul_rot_sse2(m1, m2, dest); +#elif defined(CGLM_NEON_FP) + glm_mul_rot_neon(m1, m2, dest); +#else + float a00 = m1[0][0], a01 = m1[0][1], a02 = m1[0][2], a03 = m1[0][3], + a10 = m1[1][0], a11 = m1[1][1], a12 = m1[1][2], a13 = m1[1][3], + a20 = m1[2][0], a21 = m1[2][1], a22 = m1[2][2], a23 = m1[2][3], + a30 = m1[3][0], a31 = m1[3][1], a32 = m1[3][2], a33 = m1[3][3], + + b00 = m2[0][0], b01 = m2[0][1], b02 = m2[0][2], + b10 = m2[1][0], b11 = m2[1][1], b12 = m2[1][2], + b20 = m2[2][0], b21 = m2[2][1], b22 = m2[2][2]; + + dest[0][0] = a00 * b00 + a10 * b01 + a20 * b02; + dest[0][1] = a01 * b00 + a11 * b01 + a21 * b02; + dest[0][2] = a02 * b00 + a12 * b01 + a22 * b02; + dest[0][3] = a03 * b00 + a13 * b01 + a23 * b02; + + dest[1][0] = a00 * b10 + a10 * b11 + a20 * b12; + dest[1][1] = a01 * b10 + a11 * b11 + a21 * b12; + dest[1][2] = a02 * b10 + a12 * b11 + a22 * b12; + dest[1][3] = a03 * b10 + a13 * b11 + a23 * b12; + + dest[2][0] = a00 * b20 + a10 * b21 + a20 * b22; + dest[2][1] = a01 * b20 + a11 * b21 + a21 * b22; + dest[2][2] = a02 * b20 + a12 * b21 + a22 * b22; + dest[2][3] = a03 * b20 + a13 * b21 + a23 * b22; + + dest[3][0] = a30; + dest[3][1] = a31; + dest[3][2] = a32; + dest[3][3] = a33; +#endif +} + +/*! + * @brief inverse orthonormal rotation + translation matrix (ridig-body) + * + * @code + * X = | R T | X' = | R' -R'T | + * | 0 1 | | 0 1 | + * @endcode + * + * @param[in,out] mat matrix + */ +CGLM_INLINE +void +glm_inv_tr(mat4 mat) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_inv_tr_sse2(mat); +#elif defined(CGLM_NEON_FP) + glm_inv_tr_neon(mat); +#else + CGLM_ALIGN_MAT mat3 r; + CGLM_ALIGN(8) vec3 t; + + /* rotate */ + glm_mat4_pick3t(mat, r); + glm_mat4_ins3(r, mat); + + /* translate */ + glm_mat3_mulv(r, mat[3], t); + glm_vec3_negate(t); + glm_vec3_copy(t, mat[3]); +#endif +} + +#endif /* cglm_affine_mat_h */ diff --git a/lib/cglm/include/cglm/affine-post.h b/lib/cglm/include/cglm/affine-post.h new file mode 100644 index 0000000..d32cd1a --- /dev/null +++ b/lib/cglm/include/cglm/affine-post.h @@ -0,0 +1,247 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_affine_post_h +#define cglm_affine_post_h + +/* + Functions: + CGLM_INLINE void glm_translated_to(mat4 m, vec3 v, mat4 dest); + CGLM_INLINE void glm_translated(mat4 m, vec3 v); + CGLM_INLINE void glm_translated_x(mat4 m, float to); + CGLM_INLINE void glm_translated_y(mat4 m, float to); + CGLM_INLINE void glm_translated_z(mat4 m, float to); + CGLM_INLINE void glm_rotated_x(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotated_y(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotated_z(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotated(mat4 m, float angle, vec3 axis); + CGLM_INLINE void glm_rotated_at(mat4 m, vec3 pivot, float angle, vec3 axis); + CGLM_INLINE void glm_spinned(mat4 m, float angle, vec3 axis); + */ + +#include "common.h" +#include "util.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" +#include "affine-mat.h" + +/*! + * @brief translate existing transform matrix by v vector + * and stores result in same matrix + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in, out] m affine transfrom + * @param[in] v translate vector [x, y, z] + */ +CGLM_INLINE +void +glm_translated(mat4 m, vec3 v) { + glm_vec3_add(m[3], v, m[3]); +} + +/*! + * @brief translate existing transform matrix by v vector + * and store result in dest + * + * source matrix will remain same + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in] m affine transfrom + * @param[in] v translate vector [x, y, z] + * @param[out] dest translated matrix + */ +CGLM_INLINE +void +glm_translated_to(mat4 m, vec3 v, mat4 dest) { + glm_mat4_copy(m, dest); + glm_translated(dest, v); +} + +/*! + * @brief translate existing transform matrix by x factor + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in, out] m affine transfrom + * @param[in] x x factor + */ +CGLM_INLINE +void +glm_translated_x(mat4 m, float x) { + m[3][0] += x; +} + +/*! + * @brief translate existing transform matrix by y factor + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in, out] m affine transfrom + * @param[in] y y factor + */ +CGLM_INLINE +void +glm_translated_y(mat4 m, float y) { + m[3][1] += y; +} + +/*! + * @brief translate existing transform matrix by z factor + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in, out] m affine transfrom + * @param[in] z z factor + */ +CGLM_INLINE +void +glm_translated_z(mat4 m, float z) { + m[3][2] += z; +} + +/*! + * @brief rotate existing transform matrix around X axis by angle + * and store result in dest + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[out] dest rotated matrix + */ +CGLM_INLINE +void +glm_rotated_x(mat4 m, float angle, mat4 dest) { + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_IDENTITY_INIT; + float c, s; + + c = cosf(angle); + s = sinf(angle); + + t[1][1] = c; + t[1][2] = s; + t[2][1] = -s; + t[2][2] = c; + + glm_mul_rot(t, m, dest); +} + +/*! + * @brief rotate existing transform matrix around Y axis by angle + * and store result in dest + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[out] dest rotated matrix + */ +CGLM_INLINE +void +glm_rotated_y(mat4 m, float angle, mat4 dest) { + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_IDENTITY_INIT; + float c, s; + + c = cosf(angle); + s = sinf(angle); + + t[0][0] = c; + t[0][2] = -s; + t[2][0] = s; + t[2][2] = c; + + glm_mul_rot(t, m, dest); +} + +/*! + * @brief rotate existing transform matrix around Z axis by angle + * and store result in dest + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[out] dest rotated matrix + */ +CGLM_INLINE +void +glm_rotated_z(mat4 m, float angle, mat4 dest) { + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_IDENTITY_INIT; + float c, s; + + c = cosf(angle); + s = sinf(angle); + + t[0][0] = c; + t[0][1] = s; + t[1][0] = -s; + t[1][1] = c; + + glm_mul_rot(t, m, dest); +} + +/*! + * @brief rotate existing transform matrix around given axis by angle + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in, out] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_rotated(mat4 m, float angle, vec3 axis) { + CGLM_ALIGN_MAT mat4 rot; + glm_rotate_make(rot, angle, axis); + glm_mul_rot(rot, m, m); +} + +/*! + * @brief rotate existing transform + * around given axis by angle at given pivot point (rotation center) + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in, out] m affine transfrom + * @param[in] pivot rotation center + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_rotated_at(mat4 m, vec3 pivot, float angle, vec3 axis) { + CGLM_ALIGN(8) vec3 pivotInv; + + glm_vec3_negate_to(pivot, pivotInv); + + glm_translated(m, pivot); + glm_rotated(m, angle, axis); + glm_translated(m, pivotInv); +} + +/*! + * @brief rotate existing transform matrix around given axis by angle around self (doesn't affected by position) + * + * this is POST transform, applies to existing transform as last transfrom + * + * @param[in, out] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_spinned(mat4 m, float angle, vec3 axis) { + CGLM_ALIGN_MAT mat4 rot; + glm_rotate_atm(rot, m[3], angle, axis); + glm_mat4_mul(rot, m, m); +} + +#endif /* cglm_affine_post_h */ diff --git a/lib/cglm/include/cglm/affine-pre.h b/lib/cglm/include/cglm/affine-pre.h new file mode 100644 index 0000000..43652ff --- /dev/null +++ b/lib/cglm/include/cglm/affine-pre.h @@ -0,0 +1,285 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_affine_pre_h +#define cglm_affine_pre_h + +/* + Functions: + CGLM_INLINE void glm_translate_to(mat4 m, vec3 v, mat4 dest); + CGLM_INLINE void glm_translate(mat4 m, vec3 v); + CGLM_INLINE void glm_translate_x(mat4 m, float to); + CGLM_INLINE void glm_translate_y(mat4 m, float to); + CGLM_INLINE void glm_translate_z(mat4 m, float to); + CGLM_INLINE void glm_rotate_x(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotate_y(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotate_z(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotate(mat4 m, float angle, vec3 axis); + CGLM_INLINE void glm_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis); + CGLM_INLINE void glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis); + CGLM_INLINE void glm_spin(mat4 m, float angle, vec3 axis); + */ + +#include "common.h" +#include "util.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" +#include "affine-mat.h" + +/*! + * @brief translate existing transform matrix by v vector + * and stores result in same matrix + * + * @param[in, out] m affine transfrom + * @param[in] v translate vector [x, y, z] + */ +CGLM_INLINE +void +glm_translate(mat4 m, vec3 v) { +#if defined(CGLM_SIMD) + glmm_128 m0, m1, m2, m3; + + m0 = glmm_load(m[0]); + m1 = glmm_load(m[1]); + m2 = glmm_load(m[2]); + m3 = glmm_load(m[3]); + + glmm_store(m[3], + glmm_fmadd(m0, glmm_set1(v[0]), + glmm_fmadd(m1, glmm_set1(v[1]), + glmm_fmadd(m2, glmm_set1(v[2]), m3)))); +#else + glm_vec4_muladds(m[0], v[0], m[3]); + glm_vec4_muladds(m[1], v[1], m[3]); + glm_vec4_muladds(m[2], v[2], m[3]); +#endif +} + +/*! + * @brief translate existing transform matrix by v vector + * and store result in dest + * + * source matrix will remain same + * + * @param[in] m affine transfrom + * @param[in] v translate vector [x, y, z] + * @param[out] dest translated matrix + */ +CGLM_INLINE +void +glm_translate_to(mat4 m, vec3 v, mat4 dest) { + glm_mat4_copy(m, dest); + glm_translate(dest, v); +} + +/*! + * @brief translate existing transform matrix by x factor + * + * @param[in, out] m affine transfrom + * @param[in] x x factor + */ +CGLM_INLINE +void +glm_translate_x(mat4 m, float x) { +#if defined(CGLM_SIMD) + glmm_store(m[3], glmm_fmadd(glmm_load(m[0]), glmm_set1(x), glmm_load(m[3]))); +#else + vec4 v1; + glm_vec4_scale(m[0], x, v1); + glm_vec4_add(v1, m[3], m[3]); +#endif +} + +/*! + * @brief translate existing transform matrix by y factor + * + * @param[in, out] m affine transfrom + * @param[in] y y factor + */ +CGLM_INLINE +void +glm_translate_y(mat4 m, float y) { +#if defined(CGLM_SIMD) + glmm_store(m[3], glmm_fmadd(glmm_load(m[1]), glmm_set1(y), glmm_load(m[3]))); +#else + vec4 v1; + glm_vec4_scale(m[1], y, v1); + glm_vec4_add(v1, m[3], m[3]); +#endif +} + +/*! + * @brief translate existing transform matrix by z factor + * + * @param[in, out] m affine transfrom + * @param[in] z z factor + */ +CGLM_INLINE +void +glm_translate_z(mat4 m, float z) { +#if defined(CGLM_SIMD) + glmm_store(m[3], glmm_fmadd(glmm_load(m[2]), glmm_set1(z), glmm_load(m[3]))); +#else + vec4 v1; + glm_vec4_scale(m[2], z, v1); + glm_vec4_add(v1, m[3], m[3]); +#endif +} + +/*! + * @brief rotate existing transform matrix around X axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[out] dest rotated matrix + */ +CGLM_INLINE +void +glm_rotate_x(mat4 m, float angle, mat4 dest) { + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_IDENTITY_INIT; + float c, s; + + c = cosf(angle); + s = sinf(angle); + + t[1][1] = c; + t[1][2] = s; + t[2][1] = -s; + t[2][2] = c; + + glm_mul_rot(m, t, dest); +} + +/*! + * @brief rotate existing transform matrix around Y axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[out] dest rotated matrix + */ +CGLM_INLINE +void +glm_rotate_y(mat4 m, float angle, mat4 dest) { + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_IDENTITY_INIT; + float c, s; + + c = cosf(angle); + s = sinf(angle); + + t[0][0] = c; + t[0][2] = -s; + t[2][0] = s; + t[2][2] = c; + + glm_mul_rot(m, t, dest); +} + +/*! + * @brief rotate existing transform matrix around Z axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[out] dest rotated matrix + */ +CGLM_INLINE +void +glm_rotate_z(mat4 m, float angle, mat4 dest) { + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_IDENTITY_INIT; + float c, s; + + c = cosf(angle); + s = sinf(angle); + + t[0][0] = c; + t[0][1] = s; + t[1][0] = -s; + t[1][1] = c; + + glm_mul_rot(m, t, dest); +} + +/*! + * @brief rotate existing transform matrix around given axis by angle + * + * @param[in, out] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_rotate(mat4 m, float angle, vec3 axis) { + CGLM_ALIGN_MAT mat4 rot; + glm_rotate_make(rot, angle, axis); + glm_mul_rot(m, rot, m); +} + +/*! + * @brief rotate existing transform + * around given axis by angle at given pivot point (rotation center) + * + * @param[in, out] m affine transfrom + * @param[in] pivot rotation center + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis) { + CGLM_ALIGN(8) vec3 pivotInv; + + glm_vec3_negate_to(pivot, pivotInv); + + glm_translate(m, pivot); + glm_rotate(m, angle, axis); + glm_translate(m, pivotInv); +} + +/*! + * @brief creates NEW rotation matrix by angle and axis at given point + * + * this creates rotation matrix, it assumes you don't have a matrix + * + * this should work faster than glm_rotate_at because it reduces + * one glm_translate. + * + * @param[out] m affine transfrom + * @param[in] pivot rotation center + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis) { + CGLM_ALIGN(8) vec3 pivotInv; + + glm_vec3_negate_to(pivot, pivotInv); + + glm_translate_make(m, pivot); + glm_rotate(m, angle, axis); + glm_translate(m, pivotInv); +} + +/*! + * @brief rotate existing transform matrix around given axis by angle around self (doesn't affected by position) + * + * @param[in, out] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_spin(mat4 m, float angle, vec3 axis) { + CGLM_ALIGN_MAT mat4 rot; + glm_rotate_atm(rot, m[3], angle, axis); + glm_mat4_mul(m, rot, m); +} + +#endif /* cglm_affine_pre_h */ diff --git a/lib/cglm/include/cglm/affine.h b/lib/cglm/include/cglm/affine.h new file mode 100644 index 0000000..78d7dbf --- /dev/null +++ b/lib/cglm/include/cglm/affine.h @@ -0,0 +1,238 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_translate_to(mat4 m, vec3 v, mat4 dest); + CGLM_INLINE void glm_translate(mat4 m, vec3 v); + CGLM_INLINE void glm_translate_x(mat4 m, float to); + CGLM_INLINE void glm_translate_y(mat4 m, float to); + CGLM_INLINE void glm_translate_z(mat4 m, float to); + CGLM_INLINE void glm_translate_make(mat4 m, vec3 v); + CGLM_INLINE void glm_scale_to(mat4 m, vec3 v, mat4 dest); + CGLM_INLINE void glm_scale_make(mat4 m, vec3 v); + CGLM_INLINE void glm_scale(mat4 m, vec3 v); + CGLM_INLINE void glm_scale_uni(mat4 m, float s); + CGLM_INLINE void glm_rotate_x(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotate_y(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotate_z(mat4 m, float angle, mat4 dest); + CGLM_INLINE void glm_rotate_make(mat4 m, float angle, vec3 axis); + CGLM_INLINE void glm_rotate(mat4 m, float angle, vec3 axis); + CGLM_INLINE void glm_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis); + CGLM_INLINE void glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis); + CGLM_INLINE void glm_spin(mat4 m, float angle, vec3 axis); + CGLM_INLINE void glm_decompose_scalev(mat4 m, vec3 s); + CGLM_INLINE bool glm_uniscaled(mat4 m); + CGLM_INLINE void glm_decompose_rs(mat4 m, mat4 r, vec3 s); + CGLM_INLINE void glm_decompose(mat4 m, vec4 t, mat4 r, vec3 s); + */ + +#ifndef cglm_affine_h +#define cglm_affine_h + +#include "common.h" +#include "util.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" +#include "affine-mat.h" + +/*! + * @brief creates NEW translate transform matrix by v vector + * + * @param[out] m affine transfrom + * @param[in] v translate vector [x, y, z] + */ +CGLM_INLINE +void +glm_translate_make(mat4 m, vec3 v) { + glm_mat4_identity(m); + glm_vec3_copy(v, m[3]); +} + +/*! + * @brief scale existing transform matrix by v vector + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] v scale vector [x, y, z] + * @param[out] dest scaled matrix + */ +CGLM_INLINE +void +glm_scale_to(mat4 m, vec3 v, mat4 dest) { + glm_vec4_scale(m[0], v[0], dest[0]); + glm_vec4_scale(m[1], v[1], dest[1]); + glm_vec4_scale(m[2], v[2], dest[2]); + + glm_vec4_copy(m[3], dest[3]); +} + +/*! + * @brief creates NEW scale matrix by v vector + * + * @param[out] m affine transfrom + * @param[in] v scale vector [x, y, z] + */ +CGLM_INLINE +void +glm_scale_make(mat4 m, vec3 v) { + glm_mat4_identity(m); + m[0][0] = v[0]; + m[1][1] = v[1]; + m[2][2] = v[2]; +} + +/*! + * @brief scales existing transform matrix by v vector + * and stores result in same matrix + * + * @param[in, out] m affine transfrom + * @param[in] v scale vector [x, y, z] + */ +CGLM_INLINE +void +glm_scale(mat4 m, vec3 v) { + glm_scale_to(m, v, m); +} + +/*! + * @brief applies uniform scale to existing transform matrix v = [s, s, s] + * and stores result in same matrix + * + * @param[in, out] m affine transfrom + * @param[in] s scale factor + */ +CGLM_INLINE +void +glm_scale_uni(mat4 m, float s) { + CGLM_ALIGN(8) vec3 v = { s, s, s }; + glm_scale_to(m, v, m); +} + +/*! + * @brief creates NEW rotation matrix by angle and axis + * + * axis will be normalized so you don't need to normalize it + * + * @param[out] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_rotate_make(mat4 m, float angle, vec3 axis) { + CGLM_ALIGN(8) vec3 axisn, v, vs; + float c; + + c = cosf(angle); + + glm_vec3_normalize_to(axis, axisn); + glm_vec3_scale(axisn, 1.0f - c, v); + glm_vec3_scale(axisn, sinf(angle), vs); + + glm_vec3_scale(axisn, v[0], m[0]); + glm_vec3_scale(axisn, v[1], m[1]); + glm_vec3_scale(axisn, v[2], m[2]); + + m[0][0] += c; m[1][0] -= vs[2]; m[2][0] += vs[1]; + m[0][1] += vs[2]; m[1][1] += c; m[2][1] -= vs[0]; + m[0][2] -= vs[1]; m[1][2] += vs[0]; m[2][2] += c; + + m[0][3] = m[1][3] = m[2][3] = m[3][0] = m[3][1] = m[3][2] = 0.0f; + m[3][3] = 1.0f; +} + +/*! + * @brief decompose scale vector + * + * @param[in] m affine transform + * @param[out] s scale vector (Sx, Sy, Sz) + */ +CGLM_INLINE +void +glm_decompose_scalev(mat4 m, vec3 s) { + s[0] = glm_vec3_norm(m[0]); + s[1] = glm_vec3_norm(m[1]); + s[2] = glm_vec3_norm(m[2]); +} + +/*! + * @brief returns true if matrix is uniform scaled. This is helpful for + * creating normal matrix. + * + * @param[in] m m + * + * @return boolean + */ +CGLM_INLINE +bool +glm_uniscaled(mat4 m) { + CGLM_ALIGN(8) vec3 s; + glm_decompose_scalev(m, s); + return glm_vec3_eq_all(s); +} + +/*! + * @brief decompose rotation matrix (mat4) and scale vector [Sx, Sy, Sz] + * DON'T pass projected matrix here + * + * @param[in] m affine transform + * @param[out] r rotation matrix + * @param[out] s scale matrix + */ +CGLM_INLINE +void +glm_decompose_rs(mat4 m, mat4 r, vec3 s) { + CGLM_ALIGN(16) vec4 t = {0.0f, 0.0f, 0.0f, 1.0f}; + CGLM_ALIGN(8) vec3 v; + + glm_vec4_copy(m[0], r[0]); + glm_vec4_copy(m[1], r[1]); + glm_vec4_copy(m[2], r[2]); + glm_vec4_copy(t, r[3]); + + s[0] = glm_vec3_norm(m[0]); + s[1] = glm_vec3_norm(m[1]); + s[2] = glm_vec3_norm(m[2]); + + glm_vec4_scale(r[0], 1.0f/s[0], r[0]); + glm_vec4_scale(r[1], 1.0f/s[1], r[1]); + glm_vec4_scale(r[2], 1.0f/s[2], r[2]); + + /* Note from Apple Open Source (assume that the matrix is orthonormal): + check for a coordinate system flip. If the determinant + is -1, then negate the matrix and the scaling factors. */ + glm_vec3_cross(m[0], m[1], v); + if (glm_vec3_dot(v, m[2]) < 0.0f) { + glm_vec4_negate(r[0]); + glm_vec4_negate(r[1]); + glm_vec4_negate(r[2]); + glm_vec3_negate(s); + } +} + +/*! + * @brief decompose affine transform, TODO: extract shear factors. + * DON'T pass projected matrix here + * + * @param[in] m affine transfrom + * @param[out] t translation vector + * @param[out] r rotation matrix (mat4) + * @param[out] s scaling vector [X, Y, Z] + */ +CGLM_INLINE +void +glm_decompose(mat4 m, vec4 t, mat4 r, vec3 s) { + glm_vec4_copy(m[3], t); + glm_decompose_rs(m, r, s); +} + +#include "affine-pre.h" +#include "affine-post.h" + +#endif /* cglm_affine_h */ diff --git a/lib/cglm/include/cglm/affine2d.h b/lib/cglm/include/cglm/affine2d.h new file mode 100644 index 0000000..bb66289 --- /dev/null +++ b/lib/cglm/include/cglm/affine2d.h @@ -0,0 +1,268 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_translate2d(mat3 m, vec2 v) + CGLM_INLINE void glm_translate2d_to(mat3 m, vec2 v, mat3 dest) + CGLM_INLINE void glm_translate2d_x(mat3 m, float x) + CGLM_INLINE void glm_translate2d_y(mat3 m, float y) + CGLM_INLINE void glm_translate2d_make(mat3 m, vec2 v) + CGLM_INLINE void glm_scale2d_to(mat3 m, vec2 v, mat3 dest) + CGLM_INLINE void glm_scale2d_make(mat3 m, vec2 v) + CGLM_INLINE void glm_scale2d(mat3 m, vec2 v) + CGLM_INLINE void glm_scale2d_uni(mat3 m, float s) + CGLM_INLINE void glm_rotate2d_make(mat3 m, float angle) + CGLM_INLINE void glm_rotate2d(mat3 m, float angle) + CGLM_INLINE void glm_rotate2d_to(mat3 m, float angle, mat3 dest) + */ + +#ifndef cglm_affine2d_h +#define cglm_affine2d_h + +#include "common.h" +#include "util.h" +#include "vec2.h" +#include "mat3.h" + +/*! + * @brief translate existing 2d transform matrix by v vector + * and stores result in same matrix + * + * @param[in, out] m affine transfrom + * @param[in] v translate vector [x, y] + */ +CGLM_INLINE +void +glm_translate2d(mat3 m, vec2 v) { + m[2][0] = m[0][0] * v[0] + m[1][0] * v[1] + m[2][0]; + m[2][1] = m[0][1] * v[0] + m[1][1] * v[1] + m[2][1]; + m[2][2] = m[0][2] * v[0] + m[1][2] * v[1] + m[2][2]; +} + +/*! + * @brief translate existing 2d transform matrix by v vector + * and store result in dest + * + * source matrix will remain same + * + * @param[in] m affine transfrom + * @param[in] v translate vector [x, y] + * @param[out] dest translated matrix + */ +CGLM_INLINE +void +glm_translate2d_to(mat3 m, vec2 v, mat3 dest) { + glm_mat3_copy(m, dest); + glm_translate2d(dest, v); +} + +/*! + * @brief translate existing 2d transform matrix by x factor + * + * @param[in, out] m affine transfrom + * @param[in] x x factor + */ +CGLM_INLINE +void +glm_translate2d_x(mat3 m, float x) { + m[2][0] = m[0][0] * x + m[2][0]; + m[2][1] = m[0][1] * x + m[2][1]; + m[2][2] = m[0][2] * x + m[2][2]; +} + +/*! + * @brief translate existing 2d transform matrix by y factor + * + * @param[in, out] m affine transfrom + * @param[in] y y factor + */ +CGLM_INLINE +void +glm_translate2d_y(mat3 m, float y) { + m[2][0] = m[1][0] * y + m[2][0]; + m[2][1] = m[1][1] * y + m[2][1]; + m[2][2] = m[1][2] * y + m[2][2]; +} + +/*! + * @brief creates NEW translate 2d transform matrix by v vector + * + * @param[out] m affine transfrom + * @param[in] v translate vector [x, y] + */ +CGLM_INLINE +void +glm_translate2d_make(mat3 m, vec2 v) { + glm_mat3_identity(m); + m[2][0] = v[0]; + m[2][1] = v[1]; +} + +/*! + * @brief scale existing 2d transform matrix by v vector + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] v scale vector [x, y] + * @param[out] dest scaled matrix + */ +CGLM_INLINE +void +glm_scale2d_to(mat3 m, vec2 v, mat3 dest) { + dest[0][0] = m[0][0] * v[0]; + dest[0][1] = m[0][1] * v[0]; + dest[0][2] = m[0][2] * v[0]; + + dest[1][0] = m[1][0] * v[1]; + dest[1][1] = m[1][1] * v[1]; + dest[1][2] = m[1][2] * v[1]; + + dest[2][0] = m[2][0]; + dest[2][1] = m[2][1]; + dest[2][2] = m[2][2]; +} + +/*! + * @brief creates NEW 2d scale matrix by v vector + * + * @param[out] m affine transfrom + * @param[in] v scale vector [x, y] + */ +CGLM_INLINE +void +glm_scale2d_make(mat3 m, vec2 v) { + glm_mat3_identity(m); + m[0][0] = v[0]; + m[1][1] = v[1]; +} + +/*! + * @brief scales existing 2d transform matrix by v vector + * and stores result in same matrix + * + * @param[in, out] m affine transfrom + * @param[in] v scale vector [x, y] + */ +CGLM_INLINE +void +glm_scale2d(mat3 m, vec2 v) { + m[0][0] = m[0][0] * v[0]; + m[0][1] = m[0][1] * v[0]; + m[0][2] = m[0][2] * v[0]; + + m[1][0] = m[1][0] * v[1]; + m[1][1] = m[1][1] * v[1]; + m[1][2] = m[1][2] * v[1]; +} + +/*! + * @brief applies uniform scale to existing 2d transform matrix v = [s, s] + * and stores result in same matrix + * + * @param[in, out] m affine transfrom + * @param[in] s scale factor + */ +CGLM_INLINE +void +glm_scale2d_uni(mat3 m, float s) { + m[0][0] = m[0][0] * s; + m[0][1] = m[0][1] * s; + m[0][2] = m[0][2] * s; + + m[1][0] = m[1][0] * s; + m[1][1] = m[1][1] * s; + m[1][2] = m[1][2] * s; +} + +/*! + * @brief creates NEW rotation matrix by angle around Z axis + * + * @param[out] m affine transfrom + * @param[in] angle angle (radians) + */ +CGLM_INLINE +void +glm_rotate2d_make(mat3 m, float angle) { + float c, s; + + s = sinf(angle); + c = cosf(angle); + + m[0][0] = c; + m[0][1] = s; + m[0][2] = 0; + + m[1][0] = -s; + m[1][1] = c; + m[1][2] = 0; + + m[2][0] = 0.0f; + m[2][1] = 0.0f; + m[2][2] = 1.0f; +} + +/*! + * @brief rotate existing 2d transform matrix around Z axis by angle + * and store result in same matrix + * + * @param[in, out] m affine transfrom + * @param[in] angle angle (radians) + */ +CGLM_INLINE +void +glm_rotate2d(mat3 m, float angle) { + float m00 = m[0][0], m10 = m[1][0], + m01 = m[0][1], m11 = m[1][1], + m02 = m[0][2], m12 = m[1][2]; + float c, s; + + s = sinf(angle); + c = cosf(angle); + + m[0][0] = m00 * c + m10 * s; + m[0][1] = m01 * c + m11 * s; + m[0][2] = m02 * c + m12 * s; + + m[1][0] = m00 * -s + m10 * c; + m[1][1] = m01 * -s + m11 * c; + m[1][2] = m02 * -s + m12 * c; +} + +/*! + * @brief rotate existing 2d transform matrix around Z axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_rotate2d_to(mat3 m, float angle, mat3 dest) { + float m00 = m[0][0], m10 = m[1][0], + m01 = m[0][1], m11 = m[1][1], + m02 = m[0][2], m12 = m[1][2]; + float c, s; + + s = sinf(angle); + c = cosf(angle); + + dest[0][0] = m00 * c + m10 * s; + dest[0][1] = m01 * c + m11 * s; + dest[0][2] = m02 * c + m12 * s; + + dest[1][0] = m00 * -s + m10 * c; + dest[1][1] = m01 * -s + m11 * c; + dest[1][2] = m02 * -s + m12 * c; + + dest[2][0] = m[2][0]; + dest[2][1] = m[2][1]; + dest[2][2] = m[2][2]; +} + +#endif /* cglm_affine2d_h */ diff --git a/lib/cglm/include/cglm/applesimd.h b/lib/cglm/include/cglm/applesimd.h new file mode 100644 index 0000000..3608bb3 --- /dev/null +++ b/lib/cglm/include/cglm/applesimd.h @@ -0,0 +1,95 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_applesimd_h +#define cglm_applesimd_h +#if defined(__APPLE__) \ + && defined(SIMD_COMPILER_HAS_REQUIRED_FEATURES) \ + && defined(SIMD_BASE) \ + && defined(SIMD_TYPES) \ + && defined(SIMD_VECTOR_TYPES) + +#include "common.h" + +/*! +* @brief converts mat4 to Apple's simd type simd_float4x4 +* @return simd_float4x4 +*/ +CGLM_INLINE +simd_float4x4 +glm_mat4_applesimd(mat4 m) { + simd_float4x4 t; + + t.columns[0][0] = m[0][0]; + t.columns[0][1] = m[0][1]; + t.columns[0][2] = m[0][2]; + t.columns[0][3] = m[0][3]; + + t.columns[1][0] = m[1][0]; + t.columns[1][1] = m[1][1]; + t.columns[1][2] = m[1][2]; + t.columns[1][3] = m[1][3]; + + t.columns[2][0] = m[2][0]; + t.columns[2][1] = m[2][1]; + t.columns[2][2] = m[2][2]; + t.columns[2][3] = m[2][3]; + + t.columns[3][0] = m[3][0]; + t.columns[3][1] = m[3][1]; + t.columns[3][2] = m[3][2]; + t.columns[3][3] = m[3][3]; + + return t; +} + +/*! +* @brief converts mat3 to Apple's simd type simd_float3x3 +* @return simd_float3x3 +*/ +CGLM_INLINE +simd_float3x3 +glm_mat3_applesimd(mat3 m) { + simd_float3x3 t; + + t.columns[0][0] = m[0][0]; + t.columns[0][1] = m[0][1]; + t.columns[0][2] = m[0][2]; + + t.columns[1][0] = m[1][0]; + t.columns[1][1] = m[1][1]; + t.columns[1][2] = m[1][2]; + + t.columns[2][0] = m[2][0]; + t.columns[2][1] = m[2][1]; + t.columns[2][2] = m[2][2]; + + return t; +} + +/*! +* @brief converts vec4 to Apple's simd type simd_float4 +* @return simd_float4 +*/ +CGLM_INLINE +simd_float4 +glm_vec4_applesimd(vec4 v) { + return (simd_float4){v[0], v[1], v[2], v[3]}; +} + +/*! +* @brief converts vec3 to Apple's simd type simd_float3 +* @return v +*/ +CGLM_INLINE +simd_float3 +glm_vec3_applesimd(vec3 v) { + return (simd_float3){v[0], v[1], v[2]}; +} + +#endif +#endif /* cglm_applesimd_h */ diff --git a/lib/cglm/include/cglm/bezier.h b/lib/cglm/include/cglm/bezier.h new file mode 100644 index 0000000..2bbe09f --- /dev/null +++ b/lib/cglm/include/cglm/bezier.h @@ -0,0 +1,154 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_bezier_h +#define cglm_bezier_h + +#include "common.h" + +#define GLM_BEZIER_MAT_INIT {{-1.0f, 3.0f, -3.0f, 1.0f}, \ + { 3.0f, -6.0f, 3.0f, 0.0f}, \ + {-3.0f, 3.0f, 0.0f, 0.0f}, \ + { 1.0f, 0.0f, 0.0f, 0.0f}} +#define GLM_HERMITE_MAT_INIT {{ 2.0f, -3.0f, 0.0f, 1.0f}, \ + {-2.0f, 3.0f, 0.0f, 0.0f}, \ + { 1.0f, -2.0f, 1.0f, 0.0f}, \ + { 1.0f, -1.0f, 0.0f, 0.0f}} +/* for C only */ +#define GLM_BEZIER_MAT ((mat4)GLM_BEZIER_MAT_INIT) +#define GLM_HERMITE_MAT ((mat4)GLM_HERMITE_MAT_INIT) + +#define CGLM_DECASTEL_EPS 1e-9f +#define CGLM_DECASTEL_MAX 1000.0f +#define CGLM_DECASTEL_SMALL 1e-20f + +/*! + * @brief cubic bezier interpolation + * + * Formula: + * B(s) = P0*(1-s)^3 + 3*C0*s*(1-s)^2 + 3*C1*s^2*(1-s) + P1*s^3 + * + * similar result using matrix: + * B(s) = glm_smc(t, GLM_BEZIER_MAT, (vec4){p0, c0, c1, p1}) + * + * glm_eq(glm_smc(...), glm_bezier(...)) should return TRUE + * + * @param[in] s parameter between 0 and 1 + * @param[in] p0 begin point + * @param[in] c0 control point 1 + * @param[in] c1 control point 2 + * @param[in] p1 end point + * + * @return B(s) + */ +CGLM_INLINE +float +glm_bezier(float s, float p0, float c0, float c1, float p1) { + float x, xx, ss, xs3, a; + + x = 1.0f - s; + xx = x * x; + ss = s * s; + xs3 = (s - ss) * 3.0f; + a = p0 * xx + c0 * xs3; + + return a + s * (c1 * xs3 + p1 * ss - a); +} + +/*! + * @brief cubic hermite interpolation + * + * Formula: + * H(s) = P0*(2*s^3 - 3*s^2 + 1) + T0*(s^3 - 2*s^2 + s) + * + P1*(-2*s^3 + 3*s^2) + T1*(s^3 - s^2) + * + * similar result using matrix: + * H(s) = glm_smc(t, GLM_HERMITE_MAT, (vec4){p0, p1, c0, c1}) + * + * glm_eq(glm_smc(...), glm_hermite(...)) should return TRUE + * + * @param[in] s parameter between 0 and 1 + * @param[in] p0 begin point + * @param[in] t0 tangent 1 + * @param[in] t1 tangent 2 + * @param[in] p1 end point + * + * @return H(s) + */ +CGLM_INLINE +float +glm_hermite(float s, float p0, float t0, float t1, float p1) { + float ss, d, a, b, c, e, f; + + ss = s * s; + a = ss + ss; + c = a + ss; + b = a * s; + d = s * ss; + f = d - ss; + e = b - c; + + return p0 * (e + 1.0f) + t0 * (f - ss + s) + t1 * f - p1 * e; +} + +/*! + * @brief iterative way to solve cubic equation + * + * @param[in] prm parameter between 0 and 1 + * @param[in] p0 begin point + * @param[in] c0 control point 1 + * @param[in] c1 control point 2 + * @param[in] p1 end point + * + * @return parameter to use in cubic equation + */ +CGLM_INLINE +float +glm_decasteljau(float prm, float p0, float c0, float c1, float p1) { + float u, v, a, b, c, d, e, f; + int i; + + if (prm - p0 < CGLM_DECASTEL_SMALL) + return 0.0f; + + if (p1 - prm < CGLM_DECASTEL_SMALL) + return 1.0f; + + u = 0.0f; + v = 1.0f; + + for (i = 0; i < CGLM_DECASTEL_MAX; i++) { + /* de Casteljau Subdivision */ + a = (p0 + c0) * 0.5f; + b = (c0 + c1) * 0.5f; + c = (c1 + p1) * 0.5f; + d = (a + b) * 0.5f; + e = (b + c) * 0.5f; + f = (d + e) * 0.5f; /* this one is on the curve! */ + + /* The curve point is close enough to our wanted t */ + if (fabsf(f - prm) < CGLM_DECASTEL_EPS) + return glm_clamp_zo((u + v) * 0.5f); + + /* dichotomy */ + if (f < prm) { + p0 = f; + c0 = e; + c1 = c; + u = (u + v) * 0.5f; + } else { + c0 = a; + c1 = d; + p1 = f; + v = (u + v) * 0.5f; + } + } + + return glm_clamp_zo((u + v) * 0.5f); +} + +#endif /* cglm_bezier_h */ diff --git a/lib/cglm/include/cglm/box.h b/lib/cglm/include/cglm/box.h new file mode 100644 index 0000000..4400797 --- /dev/null +++ b/lib/cglm/include/cglm/box.h @@ -0,0 +1,281 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_box_h +#define cglm_box_h + +#include "common.h" +#include "vec3.h" +#include "vec4.h" +#include "util.h" + +/*! + * @brief apply transform to Axis-Aligned Bounding Box + * + * @param[in] box bounding box + * @param[in] m transform matrix + * @param[out] dest transformed bounding box + */ +CGLM_INLINE +void +glm_aabb_transform(vec3 box[2], mat4 m, vec3 dest[2]) { + vec3 v[2], xa, xb, ya, yb, za, zb; + + glm_vec3_scale(m[0], box[0][0], xa); + glm_vec3_scale(m[0], box[1][0], xb); + + glm_vec3_scale(m[1], box[0][1], ya); + glm_vec3_scale(m[1], box[1][1], yb); + + glm_vec3_scale(m[2], box[0][2], za); + glm_vec3_scale(m[2], box[1][2], zb); + + /* translation + min(xa, xb) + min(ya, yb) + min(za, zb) */ + glm_vec3(m[3], v[0]); + glm_vec3_minadd(xa, xb, v[0]); + glm_vec3_minadd(ya, yb, v[0]); + glm_vec3_minadd(za, zb, v[0]); + + /* translation + max(xa, xb) + max(ya, yb) + max(za, zb) */ + glm_vec3(m[3], v[1]); + glm_vec3_maxadd(xa, xb, v[1]); + glm_vec3_maxadd(ya, yb, v[1]); + glm_vec3_maxadd(za, zb, v[1]); + + glm_vec3_copy(v[0], dest[0]); + glm_vec3_copy(v[1], dest[1]); +} + +/*! + * @brief merges two AABB bounding box and creates new one + * + * two box must be in same space, if one of box is in different space then + * you should consider to convert it's space by glm_box_space + * + * @param[in] box1 bounding box 1 + * @param[in] box2 bounding box 2 + * @param[out] dest merged bounding box + */ +CGLM_INLINE +void +glm_aabb_merge(vec3 box1[2], vec3 box2[2], vec3 dest[2]) { + dest[0][0] = glm_min(box1[0][0], box2[0][0]); + dest[0][1] = glm_min(box1[0][1], box2[0][1]); + dest[0][2] = glm_min(box1[0][2], box2[0][2]); + + dest[1][0] = glm_max(box1[1][0], box2[1][0]); + dest[1][1] = glm_max(box1[1][1], box2[1][1]); + dest[1][2] = glm_max(box1[1][2], box2[1][2]); +} + +/*! + * @brief crops a bounding box with another one. + * + * this could be useful for gettng a bbox which fits with view frustum and + * object bounding boxes. In this case you crop view frustum box with objects + * box + * + * @param[in] box bounding box 1 + * @param[in] cropBox crop box + * @param[out] dest cropped bounding box + */ +CGLM_INLINE +void +glm_aabb_crop(vec3 box[2], vec3 cropBox[2], vec3 dest[2]) { + dest[0][0] = glm_max(box[0][0], cropBox[0][0]); + dest[0][1] = glm_max(box[0][1], cropBox[0][1]); + dest[0][2] = glm_max(box[0][2], cropBox[0][2]); + + dest[1][0] = glm_min(box[1][0], cropBox[1][0]); + dest[1][1] = glm_min(box[1][1], cropBox[1][1]); + dest[1][2] = glm_min(box[1][2], cropBox[1][2]); +} + +/*! + * @brief crops a bounding box with another one. + * + * this could be useful for gettng a bbox which fits with view frustum and + * object bounding boxes. In this case you crop view frustum box with objects + * box + * + * @param[in] box bounding box + * @param[in] cropBox crop box + * @param[in] clampBox miniumum box + * @param[out] dest cropped bounding box + */ +CGLM_INLINE +void +glm_aabb_crop_until(vec3 box[2], + vec3 cropBox[2], + vec3 clampBox[2], + vec3 dest[2]) { + glm_aabb_crop(box, cropBox, dest); + glm_aabb_merge(clampBox, dest, dest); +} + +/*! + * @brief check if AABB intersects with frustum planes + * + * this could be useful for frustum culling using AABB. + * + * OPTIMIZATION HINT: + * if planes order is similar to LEFT, RIGHT, BOTTOM, TOP, NEAR, FAR + * then this method should run even faster because it would only use two + * planes if object is not inside the two planes + * fortunately cglm extracts planes as this order! just pass what you got! + * + * @param[in] box bounding box + * @param[in] planes frustum planes + */ +CGLM_INLINE +bool +glm_aabb_frustum(vec3 box[2], vec4 planes[6]) { + float *p, dp; + int i; + + for (i = 0; i < 6; i++) { + p = planes[i]; + dp = p[0] * box[p[0] > 0.0f][0] + + p[1] * box[p[1] > 0.0f][1] + + p[2] * box[p[2] > 0.0f][2]; + + if (dp < -p[3]) + return false; + } + + return true; +} + +/*! + * @brief invalidate AABB min and max values + * + * @param[in, out] box bounding box + */ +CGLM_INLINE +void +glm_aabb_invalidate(vec3 box[2]) { + glm_vec3_broadcast(FLT_MAX, box[0]); + glm_vec3_broadcast(-FLT_MAX, box[1]); +} + +/*! + * @brief check if AABB is valid or not + * + * @param[in] box bounding box + */ +CGLM_INLINE +bool +glm_aabb_isvalid(vec3 box[2]) { + return glm_vec3_max(box[0]) != FLT_MAX + && glm_vec3_min(box[1]) != -FLT_MAX; +} + +/*! + * @brief distance between of min and max + * + * @param[in] box bounding box + */ +CGLM_INLINE +float +glm_aabb_size(vec3 box[2]) { + return glm_vec3_distance(box[0], box[1]); +} + +/*! + * @brief radius of sphere which surrounds AABB + * + * @param[in] box bounding box + */ +CGLM_INLINE +float +glm_aabb_radius(vec3 box[2]) { + return glm_aabb_size(box) * 0.5f; +} + +/*! + * @brief computes center point of AABB + * + * @param[in] box bounding box + * @param[out] dest center of bounding box + */ +CGLM_INLINE +void +glm_aabb_center(vec3 box[2], vec3 dest) { + glm_vec3_center(box[0], box[1], dest); +} + +/*! + * @brief check if two AABB intersects + * + * @param[in] box bounding box + * @param[in] other other bounding box + */ +CGLM_INLINE +bool +glm_aabb_aabb(vec3 box[2], vec3 other[2]) { + return (box[0][0] <= other[1][0] && box[1][0] >= other[0][0]) + && (box[0][1] <= other[1][1] && box[1][1] >= other[0][1]) + && (box[0][2] <= other[1][2] && box[1][2] >= other[0][2]); +} + +/*! + * @brief check if AABB intersects with sphere + * + * https://github.com/erich666/GraphicsGems/blob/master/gems/BoxSphere.c + * Solid Box - Solid Sphere test. + * + * Sphere Representation in cglm: [center.x, center.y, center.z, radii] + * + * @param[in] box solid bounding box + * @param[in] s solid sphere + */ +CGLM_INLINE +bool +glm_aabb_sphere(vec3 box[2], vec4 s) { + float dmin; + int a, b, c; + + a = (s[0] < box[0][0]) + (s[0] > box[1][0]); + b = (s[1] < box[0][1]) + (s[1] > box[1][1]); + c = (s[2] < box[0][2]) + (s[2] > box[1][2]); + + dmin = glm_pow2((s[0] - box[!(a - 1)][0]) * (a != 0)) + + glm_pow2((s[1] - box[!(b - 1)][1]) * (b != 0)) + + glm_pow2((s[2] - box[!(c - 1)][2]) * (c != 0)); + + return dmin <= glm_pow2(s[3]); +} + +/*! + * @brief check if point is inside of AABB + * + * @param[in] box bounding box + * @param[in] point point + */ +CGLM_INLINE +bool +glm_aabb_point(vec3 box[2], vec3 point) { + return (point[0] >= box[0][0] && point[0] <= box[1][0]) + && (point[1] >= box[0][1] && point[1] <= box[1][1]) + && (point[2] >= box[0][2] && point[2] <= box[1][2]); +} + +/*! + * @brief check if AABB contains other AABB + * + * @param[in] box bounding box + * @param[in] other other bounding box + */ +CGLM_INLINE +bool +glm_aabb_contains(vec3 box[2], vec3 other[2]) { + return (box[0][0] <= other[0][0] && box[1][0] >= other[1][0]) + && (box[0][1] <= other[0][1] && box[1][1] >= other[1][1]) + && (box[0][2] <= other[0][2] && box[1][2] >= other[1][2]); +} + +#endif /* cglm_box_h */ diff --git a/lib/cglm/include/cglm/call.h b/lib/cglm/include/cglm/call.h new file mode 100644 index 0000000..734bd46 --- /dev/null +++ b/lib/cglm/include/cglm/call.h @@ -0,0 +1,43 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_call_h +#define cglm_call_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "cglm.h" +#include "call/vec2.h" +#include "call/vec3.h" +#include "call/vec4.h" +#include "call/ivec2.h" +#include "call/ivec3.h" +#include "call/ivec4.h" +#include "call/mat2.h" +#include "call/mat3.h" +#include "call/mat4.h" +#include "call/affine.h" +#include "call/cam.h" +#include "call/quat.h" +#include "call/euler.h" +#include "call/plane.h" +#include "call/frustum.h" +#include "call/box.h" +#include "call/io.h" +#include "call/project.h" +#include "call/sphere.h" +#include "call/ease.h" +#include "call/curve.h" +#include "call/bezier.h" +#include "call/ray.h" +#include "call/affine2d.h" + +#ifdef __cplusplus +} +#endif +#endif /* cglm_call_h */ diff --git a/lib/cglm/include/cglm/call/affine.h b/lib/cglm/include/cglm/call/affine.h new file mode 100644 index 0000000..52b8501 --- /dev/null +++ b/lib/cglm/include/cglm/call/affine.h @@ -0,0 +1,167 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_affine_h +#define cglmc_affine_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_translate_make(mat4 m, vec3 v); + +CGLM_EXPORT +void +glmc_translate_to(mat4 m, vec3 v, mat4 dest); + +CGLM_EXPORT +void +glmc_translate(mat4 m, vec3 v); + +CGLM_EXPORT +void +glmc_translate_x(mat4 m, float to); + +CGLM_EXPORT +void +glmc_translate_y(mat4 m, float to); + +CGLM_EXPORT +void +glmc_translate_z(mat4 m, float to); + +CGLM_EXPORT +void +glmc_scale_make(mat4 m, vec3 v); + +CGLM_EXPORT +void +glmc_scale_to(mat4 m, vec3 v, mat4 dest); + +CGLM_EXPORT +void +glmc_scale(mat4 m, vec3 v); + +CGLM_EXPORT +void +glmc_scale_uni(mat4 m, float s); + +CGLM_EXPORT +void +glmc_rotate_x(mat4 m, float rad, mat4 dest); + +CGLM_EXPORT +void +glmc_rotate_y(mat4 m, float rad, mat4 dest); + +CGLM_EXPORT +void +glmc_rotate_z(mat4 m, float rad, mat4 dest); + +CGLM_EXPORT +void +glmc_rotate_make(mat4 m, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_rotate(mat4 m, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_spin(mat4 m, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_decompose_scalev(mat4 m, vec3 s); + +CGLM_EXPORT +bool +glmc_uniscaled(mat4 m); + +CGLM_EXPORT +void +glmc_decompose_rs(mat4 m, mat4 r, vec3 s); + +CGLM_EXPORT +void +glmc_decompose(mat4 m, vec4 t, mat4 r, vec3 s); + +/* affine-post */ + +CGLM_EXPORT +void +glmc_translated(mat4 m, vec3 v); + +CGLM_EXPORT +void +glmc_translated_to(mat4 m, vec3 v, mat4 dest); + +CGLM_EXPORT +void +glmc_translated_x(mat4 m, float x); + +CGLM_EXPORT +void +glmc_translated_y(mat4 m, float y); + +CGLM_EXPORT +void +glmc_translated_z(mat4 m, float z); + +CGLM_EXPORT +void +glmc_rotated_x(mat4 m, float angle, mat4 dest); + +CGLM_EXPORT +void +glmc_rotated_y(mat4 m, float angle, mat4 dest); + +CGLM_EXPORT +void +glmc_rotated_z(mat4 m, float angle, mat4 dest); + +CGLM_EXPORT +void +glmc_rotated(mat4 m, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_rotated_at(mat4 m, vec3 pivot, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_spinned(mat4 m, float angle, vec3 axis); + +/* affine-mat */ + +CGLM_EXPORT +void +glmc_mul(mat4 m1, mat4 m2, mat4 dest); + +CGLM_EXPORT +void +glmc_mul_rot(mat4 m1, mat4 m2, mat4 dest); + +CGLM_EXPORT +void +glmc_inv_tr(mat4 mat); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_affine_h */ diff --git a/lib/cglm/include/cglm/call/affine2d.h b/lib/cglm/include/cglm/call/affine2d.h new file mode 100644 index 0000000..e1b9462 --- /dev/null +++ b/lib/cglm/include/cglm/call/affine2d.h @@ -0,0 +1,67 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_affine2d_h +#define cglmc_affine2d_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_translate2d_make(mat3 m, vec2 v); + +CGLM_EXPORT +void +glmc_translate2d_to(mat3 m, vec2 v, mat3 dest); + +CGLM_EXPORT +void +glmc_translate2d(mat3 m, vec2 v); + +CGLM_EXPORT +void +glmc_translate2d_x(mat3 m, float to); + +CGLM_EXPORT +void +glmc_translate2d_y(mat3 m, float to); + +CGLM_EXPORT +void +glmc_scale2d_to(mat3 m, vec2 v, mat3 dest); + +CGLM_EXPORT +void +glmc_scale2d_make(mat3 m, vec2 v); + +CGLM_EXPORT +void +glmc_scale2d(mat3 m, vec2 v); + +CGLM_EXPORT +void +glmc_scale2d_uni(mat3 m, float s); + +CGLM_EXPORT +void +glmc_rotate2d_make(mat3 m, float angle); + +CGLM_EXPORT +void +glmc_rotate2d(mat3 m, float angle); + +CGLM_EXPORT +void +glmc_rotate2d_to(mat3 m, float angle, mat3 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_affine2d_h */ diff --git a/lib/cglm/include/cglm/call/bezier.h b/lib/cglm/include/cglm/call/bezier.h new file mode 100644 index 0000000..a6a0eb4 --- /dev/null +++ b/lib/cglm/include/cglm/call/bezier.h @@ -0,0 +1,31 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_bezier_h +#define cglmc_bezier_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +float +glmc_bezier(float s, float p0, float c0, float c1, float p1); + +CGLM_EXPORT +float +glmc_hermite(float s, float p0, float t0, float t1, float p1); + +CGLM_EXPORT +float +glmc_decasteljau(float prm, float p0, float c0, float c1, float p1); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_bezier_h */ diff --git a/lib/cglm/include/cglm/call/box.h b/lib/cglm/include/cglm/call/box.h new file mode 100644 index 0000000..afb7558 --- /dev/null +++ b/lib/cglm/include/cglm/call/box.h @@ -0,0 +1,79 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_box_h +#define cglmc_box_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_aabb_transform(vec3 box[2], mat4 m, vec3 dest[2]); + +CGLM_EXPORT +void +glmc_aabb_merge(vec3 box1[2], vec3 box2[2], vec3 dest[2]); + +CGLM_EXPORT +void +glmc_aabb_crop(vec3 box[2], vec3 cropBox[2], vec3 dest[2]); + +CGLM_EXPORT +void +glmc_aabb_crop_until(vec3 box[2], + vec3 cropBox[2], + vec3 clampBox[2], + vec3 dest[2]); + +CGLM_EXPORT +bool +glmc_aabb_frustum(vec3 box[2], vec4 planes[6]); + +CGLM_EXPORT +void +glmc_aabb_invalidate(vec3 box[2]); + +CGLM_EXPORT +bool +glmc_aabb_isvalid(vec3 box[2]); + +CGLM_EXPORT +float +glmc_aabb_size(vec3 box[2]); + +CGLM_EXPORT +float +glmc_aabb_radius(vec3 box[2]); + +CGLM_EXPORT +void +glmc_aabb_center(vec3 box[2], vec3 dest); + +CGLM_EXPORT +bool +glmc_aabb_aabb(vec3 box[2], vec3 other[2]); + +CGLM_EXPORT +bool +glmc_aabb_point(vec3 box[2], vec3 point); + +CGLM_EXPORT +bool +glmc_aabb_contains(vec3 box[2], vec3 other[2]); + +CGLM_EXPORT +bool +glmc_aabb_sphere(vec3 box[2], vec4 s); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_box_h */ + diff --git a/lib/cglm/include/cglm/call/cam.h b/lib/cglm/include/cglm/call/cam.h new file mode 100644 index 0000000..d9567ec --- /dev/null +++ b/lib/cglm/include/cglm/call/cam.h @@ -0,0 +1,133 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_cam_h +#define cglmc_cam_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_frustum(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_ortho(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb(vec3 box[2], mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_p(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_pz(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default(float aspect, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_s(float aspect, float size, mat4 dest); + +CGLM_EXPORT +void +glmc_perspective(float fovy, float aspect, float nearZ, float farZ, mat4 dest); + +CGLM_EXPORT +void +glmc_persp_move_far(mat4 proj, float deltaFar); + +CGLM_EXPORT +void +glmc_perspective_default(float aspect, mat4 dest); + +CGLM_EXPORT +void +glmc_perspective_resize(float aspect, mat4 proj); + +CGLM_EXPORT +void +glmc_lookat(vec3 eye, vec3 center, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look(vec3 eye, vec3 dir, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_anyup(vec3 eye, vec3 dir, mat4 dest); + +CGLM_EXPORT +void +glmc_persp_decomp(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ, + float * __restrict top, + float * __restrict bottom, + float * __restrict left, + float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decompv(mat4 proj, float dest[6]); + +CGLM_EXPORT +void +glmc_persp_decomp_x(mat4 proj, + float * __restrict left, + float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decomp_y(mat4 proj, + float * __restrict top, + float * __restrict bottom); + +CGLM_EXPORT +void +glmc_persp_decomp_z(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_far(mat4 proj, float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_near(mat4 proj, float * __restrict nearZ); + +CGLM_EXPORT +float +glmc_persp_fovy(mat4 proj); + +CGLM_EXPORT +float +glmc_persp_aspect(mat4 proj); + +CGLM_EXPORT +void +glmc_persp_sizes(mat4 proj, float fovy, vec4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_cam_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/ortho_lh_no.h b/lib/cglm/include/cglm/call/clipspace/ortho_lh_no.h new file mode 100644 index 0000000..3e26fa9 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/ortho_lh_no.h @@ -0,0 +1,46 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ortho_lh_no_h +#define cglmc_ortho_lh_no_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_ortho_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_lh_no(vec3 box[2], mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_p_lh_no(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_pz_lh_no(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_lh_no(float aspect, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_s_lh_no(float aspect, float size, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ortho_lh_no_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/ortho_lh_zo.h b/lib/cglm/include/cglm/call/clipspace/ortho_lh_zo.h new file mode 100644 index 0000000..dc4c610 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/ortho_lh_zo.h @@ -0,0 +1,46 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ortho_lh_zo_h +#define cglmc_ortho_lh_zo_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_ortho_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_lh_zo(vec3 box[2], mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_p_lh_zo(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_pz_lh_zo(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_lh_zo(float aspect, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_s_lh_zo(float aspect, float size, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ortho_lh_zo_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/ortho_rh_no.h b/lib/cglm/include/cglm/call/clipspace/ortho_rh_no.h new file mode 100644 index 0000000..dbba497 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/ortho_rh_no.h @@ -0,0 +1,46 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ortho_rh_no_h +#define cglmc_ortho_rh_no_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_ortho_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_rh_no(vec3 box[2], mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_p_rh_no(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_pz_rh_no(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_rh_no(float aspect, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_s_rh_no(float aspect, float size, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ortho_rh_no_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/ortho_rh_zo.h b/lib/cglm/include/cglm/call/clipspace/ortho_rh_zo.h new file mode 100644 index 0000000..e79ae83 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/ortho_rh_zo.h @@ -0,0 +1,46 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ortho_rh_zo_h +#define cglmc_ortho_rh_zo_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_ortho_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_rh_zo(vec3 box[2], mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_p_rh_zo(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_aabb_pz_rh_zo(vec3 box[2], float padding, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_rh_zo(float aspect, mat4 dest); + +CGLM_EXPORT +void +glmc_ortho_default_s_rh_zo(float aspect, float size, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ortho_rh_zo_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/persp_lh_no.h b/lib/cglm/include/cglm/call/clipspace/persp_lh_no.h new file mode 100644 index 0000000..4bdbcfe --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/persp_lh_no.h @@ -0,0 +1,87 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_persp_lh_no_h +#define cglmc_persp_lh_no_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_frustum_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_perspective_lh_no(float fovy, + float aspect, + float nearVal, + float farVal, + mat4 dest); + +CGLM_EXPORT +void +glmc_persp_move_far_lh_no(mat4 proj, float deltaFar); + +CGLM_EXPORT +void +glmc_persp_decomp_lh_no(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decompv_lh_no(mat4 proj, float dest[6]); + +CGLM_EXPORT +void +glmc_persp_decomp_x_lh_no(mat4 proj, + float * __restrict left, + float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decomp_y_lh_no(mat4 proj, + float * __restrict top, + float * __restrict bottom); + +CGLM_EXPORT +void +glmc_persp_decomp_z_lh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_far_lh_no(mat4 proj, float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_near_lh_no(mat4 proj, float * __restrict nearZ); + +CGLM_EXPORT +void +glmc_persp_sizes_lh_no(mat4 proj, float fovy, vec4 dest); + +CGLM_EXPORT +float +glmc_persp_fovy_lh_no(mat4 proj); + +CGLM_EXPORT +float +glmc_persp_aspect_lh_no(mat4 proj); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_persp_lh_no_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/persp_lh_zo.h b/lib/cglm/include/cglm/call/clipspace/persp_lh_zo.h new file mode 100644 index 0000000..53c2c1c --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/persp_lh_zo.h @@ -0,0 +1,87 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_persp_lh_zo_h +#define cglmc_persp_lh_zo_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_frustum_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_perspective_lh_zo(float fovy, + float aspect, + float nearVal, + float farVal, + mat4 dest); + +CGLM_EXPORT +void +glmc_persp_move_far_lh_zo(mat4 proj, float deltaFar); + +CGLM_EXPORT +void +glmc_persp_decomp_lh_zo(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decompv_lh_zo(mat4 proj, float dest[6]); + +CGLM_EXPORT +void +glmc_persp_decomp_x_lh_zo(mat4 proj, + float * __restrict left, + float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decomp_y_lh_zo(mat4 proj, + float * __restrict top, + float * __restrict bottom); + +CGLM_EXPORT +void +glmc_persp_decomp_z_lh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_far_lh_zo(mat4 proj, float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_near_lh_zo(mat4 proj, float * __restrict nearZ); + +CGLM_EXPORT +void +glmc_persp_sizes_lh_zo(mat4 proj, float fovy, vec4 dest); + +CGLM_EXPORT +float +glmc_persp_fovy_lh_zo(mat4 proj); + +CGLM_EXPORT +float +glmc_persp_aspect_lh_zo(mat4 proj); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_persp_lh_zo_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/persp_rh_no.h b/lib/cglm/include/cglm/call/clipspace/persp_rh_no.h new file mode 100644 index 0000000..9c0d65d --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/persp_rh_no.h @@ -0,0 +1,87 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_persp_rh_no_h +#define cglmc_persp_rh_no_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_frustum_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_perspective_rh_no(float fovy, + float aspect, + float nearVal, + float farVal, + mat4 dest); + +CGLM_EXPORT +void +glmc_persp_move_far_rh_no(mat4 proj, float deltaFar); + +CGLM_EXPORT +void +glmc_persp_decomp_rh_no(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decompv_rh_no(mat4 proj, float dest[6]); + +CGLM_EXPORT +void +glmc_persp_decomp_x_rh_no(mat4 proj, + float * __restrict left, + float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decomp_y_rh_no(mat4 proj, + float * __restrict top, + float * __restrict bottom); + +CGLM_EXPORT +void +glmc_persp_decomp_z_rh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_far_rh_no(mat4 proj, float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_near_rh_no(mat4 proj, float * __restrict nearZ); + +CGLM_EXPORT +void +glmc_persp_sizes_rh_no(mat4 proj, float fovy, vec4 dest); + +CGLM_EXPORT +float +glmc_persp_fovy_rh_no(mat4 proj); + +CGLM_EXPORT +float +glmc_persp_aspect_rh_no(mat4 proj); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_persp_rh_no_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/persp_rh_zo.h b/lib/cglm/include/cglm/call/clipspace/persp_rh_zo.h new file mode 100644 index 0000000..718d4ad --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/persp_rh_zo.h @@ -0,0 +1,87 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_persp_rh_zo_h +#define cglmc_persp_rh_zo_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_frustum_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest); + +CGLM_EXPORT +void +glmc_perspective_rh_zo(float fovy, + float aspect, + float nearVal, + float farVal, + mat4 dest); + +CGLM_EXPORT +void +glmc_persp_move_far_rh_zo(mat4 proj, float deltaFar); + +CGLM_EXPORT +void +glmc_persp_decomp_rh_zo(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decompv_rh_zo(mat4 proj, float dest[6]); + +CGLM_EXPORT +void +glmc_persp_decomp_x_rh_zo(mat4 proj, + float * __restrict left, + float * __restrict right); + +CGLM_EXPORT +void +glmc_persp_decomp_y_rh_zo(mat4 proj, + float * __restrict top, + float * __restrict bottom); + +CGLM_EXPORT +void +glmc_persp_decomp_z_rh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_far_rh_zo(mat4 proj, float * __restrict farZ); + +CGLM_EXPORT +void +glmc_persp_decomp_near_rh_zo(mat4 proj, float * __restrict nearZ); + +CGLM_EXPORT +void +glmc_persp_sizes_rh_zo(mat4 proj, float fovy, vec4 dest); + +CGLM_EXPORT +float +glmc_persp_fovy_rh_zo(mat4 proj); + +CGLM_EXPORT +float +glmc_persp_aspect_rh_zo(mat4 proj); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_persp_rh_zo_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/project_no.h b/lib/cglm/include/cglm/call/clipspace/project_no.h new file mode 100644 index 0000000..3cba860 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/project_no.h @@ -0,0 +1,31 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_project_no_h +#define cglmc_project_no_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_unprojecti_no(vec3 pos, mat4 invMat, vec4 vp, vec3 dest); + +CGLM_EXPORT +void +glmc_project_no(vec3 pos, mat4 m, vec4 vp, vec3 dest); + +CGLM_EXPORT +float +glmc_project_z_no(vec3 pos, mat4 m); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_project_no_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/project_zo.h b/lib/cglm/include/cglm/call/clipspace/project_zo.h new file mode 100644 index 0000000..d2a6c62 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/project_zo.h @@ -0,0 +1,31 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_project_zo_h +#define cglmc_project_zo_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_unprojecti_zo(vec3 pos, mat4 invMat, vec4 vp, vec3 dest); + +CGLM_EXPORT +void +glmc_project_zo(vec3 pos, mat4 m, vec4 vp, vec3 dest); + +CGLM_EXPORT +float +glmc_project_z_zo(vec3 pos, mat4 m); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_project_zo_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/view_lh_no.h b/lib/cglm/include/cglm/call/clipspace/view_lh_no.h new file mode 100644 index 0000000..3b58c84 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/view_lh_no.h @@ -0,0 +1,31 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_view_lh_no_h +#define cglmc_view_lh_no_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_lookat_lh_no(vec3 eye, vec3 center, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_lh_no(vec3 eye, vec3 dir, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_anyup_lh_no(vec3 eye, vec3 dir, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_view_lh_no_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/view_lh_zo.h b/lib/cglm/include/cglm/call/clipspace/view_lh_zo.h new file mode 100644 index 0000000..c877367 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/view_lh_zo.h @@ -0,0 +1,31 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_view_lh_zo_h +#define cglmc_view_lh_zo_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_lookat_lh_zo(vec3 eye, vec3 center, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_lh_zo(vec3 eye, vec3 dir, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_anyup_lh_zo(vec3 eye, vec3 dir, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_view_lh_zo_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/view_rh_no.h b/lib/cglm/include/cglm/call/clipspace/view_rh_no.h new file mode 100644 index 0000000..6303dbf --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/view_rh_no.h @@ -0,0 +1,31 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_view_rh_no_h +#define cglmc_view_rh_no_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_lookat_rh_no(vec3 eye, vec3 center, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_rh_no(vec3 eye, vec3 dir, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_anyup_rh_no(vec3 eye, vec3 dir, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_view_rh_no_h */ diff --git a/lib/cglm/include/cglm/call/clipspace/view_rh_zo.h b/lib/cglm/include/cglm/call/clipspace/view_rh_zo.h new file mode 100644 index 0000000..00b8707 --- /dev/null +++ b/lib/cglm/include/cglm/call/clipspace/view_rh_zo.h @@ -0,0 +1,31 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_view_rh_zo_h +#define cglmc_view_rh_zo_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../../cglm.h" + +CGLM_EXPORT +void +glmc_lookat_rh_zo(vec3 eye, vec3 center, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_rh_zo(vec3 eye, vec3 dir, vec3 up, mat4 dest); + +CGLM_EXPORT +void +glmc_look_anyup_rh_zo(vec3 eye, vec3 dir, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_view_rh_zo_h */ diff --git a/lib/cglm/include/cglm/call/curve.h b/lib/cglm/include/cglm/call/curve.h new file mode 100644 index 0000000..061fdb9 --- /dev/null +++ b/lib/cglm/include/cglm/call/curve.h @@ -0,0 +1,23 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_curve_h +#define cglmc_curve_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +float +glmc_smc(float s, mat4 m, vec4 c); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_curve_h */ diff --git a/lib/cglm/include/cglm/call/ease.h b/lib/cglm/include/cglm/call/ease.h new file mode 100644 index 0000000..87e39ca --- /dev/null +++ b/lib/cglm/include/cglm/call/ease.h @@ -0,0 +1,143 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ease_h +#define cglmc_ease_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +float +glmc_ease_linear(float t); + +CGLM_EXPORT +float +glmc_ease_sine_in(float t); + +CGLM_EXPORT +float +glmc_ease_sine_out(float t); + +CGLM_EXPORT +float +glmc_ease_sine_inout(float t); + +CGLM_EXPORT +float +glmc_ease_quad_in(float t); + +CGLM_EXPORT +float +glmc_ease_quad_out(float t); + +CGLM_EXPORT +float +glmc_ease_quad_inout(float t); + +CGLM_EXPORT +float +glmc_ease_cubic_in(float t); + +CGLM_EXPORT +float +glmc_ease_cubic_out(float t); + +CGLM_EXPORT +float +glmc_ease_cubic_inout(float t); + +CGLM_EXPORT +float +glmc_ease_quart_in(float t); + +CGLM_EXPORT +float +glmc_ease_quart_out(float t); + +CGLM_EXPORT +float +glmc_ease_quart_inout(float t); + +CGLM_EXPORT +float +glmc_ease_quint_in(float t); + +CGLM_EXPORT +float +glmc_ease_quint_out(float t); + +CGLM_EXPORT +float +glmc_ease_quint_inout(float t); + +CGLM_EXPORT +float +glmc_ease_exp_in(float t); + +CGLM_EXPORT +float +glmc_ease_exp_out(float t); + +CGLM_EXPORT +float +glmc_ease_exp_inout(float t); + +CGLM_EXPORT +float +glmc_ease_circ_in(float t); + +CGLM_EXPORT +float +glmc_ease_circ_out(float t); + +CGLM_EXPORT +float +glmc_ease_circ_inout(float t); + +CGLM_EXPORT +float +glmc_ease_back_in(float t); + +CGLM_EXPORT +float +glmc_ease_back_out(float t); + +CGLM_EXPORT +float +glmc_ease_back_inout(float t); + +CGLM_EXPORT +float +glmc_ease_elast_in(float t); + +CGLM_EXPORT +float +glmc_ease_elast_out(float t); + +CGLM_EXPORT +float +glmc_ease_elast_inout(float t); + +CGLM_EXPORT +float +glmc_ease_bounce_out(float t); + +CGLM_EXPORT +float +glmc_ease_bounce_in(float t); + +CGLM_EXPORT +float +glmc_ease_bounce_inout(float t); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ease_h */ diff --git a/lib/cglm/include/cglm/call/euler.h b/lib/cglm/include/cglm/call/euler.h new file mode 100644 index 0000000..2de68fb --- /dev/null +++ b/lib/cglm/include/cglm/call/euler.h @@ -0,0 +1,55 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_euler_h +#define cglmc_euler_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_euler_angles(mat4 m, vec3 dest); + +CGLM_EXPORT +void +glmc_euler(vec3 angles, mat4 dest); + +CGLM_EXPORT +void +glmc_euler_xyz(vec3 angles, mat4 dest); + +CGLM_EXPORT +void +glmc_euler_zyx(vec3 angles, mat4 dest); + +CGLM_EXPORT +void +glmc_euler_zxy(vec3 angles, mat4 dest); + +CGLM_EXPORT +void +glmc_euler_xzy(vec3 angles, mat4 dest); + +CGLM_EXPORT +void +glmc_euler_yzx(vec3 angles, mat4 dest); + +CGLM_EXPORT +void +glmc_euler_yxz(vec3 angles, mat4 dest); + +CGLM_EXPORT +void +glmc_euler_by_order(vec3 angles, glm_euler_seq axis, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_euler_h */ diff --git a/lib/cglm/include/cglm/call/frustum.h b/lib/cglm/include/cglm/call/frustum.h new file mode 100644 index 0000000..6b4facb --- /dev/null +++ b/lib/cglm/include/cglm/call/frustum.h @@ -0,0 +1,41 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_frustum_h +#define cglmc_frustum_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_frustum_planes(mat4 m, vec4 dest[6]); + +CGLM_EXPORT +void +glmc_frustum_corners(mat4 invMat, vec4 dest[8]); + +CGLM_EXPORT +void +glmc_frustum_center(vec4 corners[8], vec4 dest); + +CGLM_EXPORT +void +glmc_frustum_box(vec4 corners[8], mat4 m, vec3 box[2]); + +CGLM_EXPORT +void +glmc_frustum_corners_at(vec4 corners[8], + float splitDist, + float farDist, + vec4 planeCorners[4]); +#ifdef __cplusplus +} +#endif +#endif /* cglmc_frustum_h */ diff --git a/lib/cglm/include/cglm/call/io.h b/lib/cglm/include/cglm/call/io.h new file mode 100644 index 0000000..19ea06f --- /dev/null +++ b/lib/cglm/include/cglm/call/io.h @@ -0,0 +1,45 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_io_h +#define cglmc_io_h + +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_mat4_print(mat4 matrix, + FILE * __restrict ostream); + +CGLM_EXPORT +void +glmc_mat3_print(mat3 matrix, + FILE * __restrict ostream); + +CGLM_EXPORT +void +glmc_vec4_print(vec4 vec, + FILE * __restrict ostream); + +CGLM_EXPORT +void +glmc_vec3_print(vec3 vec, + FILE * __restrict ostream); + +CGLM_EXPORT +void +glmc_versor_print(versor vec, + FILE * __restrict ostream); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_io_h */ diff --git a/lib/cglm/include/cglm/call/ivec2.h b/lib/cglm/include/cglm/call/ivec2.h new file mode 100644 index 0000000..d3b8fd2 --- /dev/null +++ b/lib/cglm/include/cglm/call/ivec2.h @@ -0,0 +1,79 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ivec2_h +#define cglmc_ivec2_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_ivec2(int * __restrict v, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_copy(ivec2 a, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_zero(ivec2 v); + +CGLM_EXPORT +void +glmc_ivec2_one(ivec2 v); + +CGLM_EXPORT +void +glmc_ivec2_add(ivec2 a, ivec2 b, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_adds(ivec2 v, int s, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_sub(ivec2 a, ivec2 b, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_subs(ivec2 v, int s, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_mul(ivec2 a, ivec2 b, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_scale(ivec2 v, int s, ivec2 dest); + +CGLM_EXPORT +int +glmc_ivec2_distance2(ivec2 a, ivec2 b); + +CGLM_EXPORT +float +glmc_ivec2_distance(ivec2 a, ivec2 b); + +CGLM_EXPORT +void +glmc_ivec2_maxv(ivec2 a, ivec2 b, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_minv(ivec2 a, ivec2 b, ivec2 dest); + +CGLM_EXPORT +void +glmc_ivec2_clamp(ivec2 v, int minVal, int maxVal); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ivec2_h */ diff --git a/lib/cglm/include/cglm/call/ivec3.h b/lib/cglm/include/cglm/call/ivec3.h new file mode 100644 index 0000000..3c28811 --- /dev/null +++ b/lib/cglm/include/cglm/call/ivec3.h @@ -0,0 +1,79 @@ +/* + * Copyright (c);, Recep Aslantas. + * + * MIT License (MIT);, http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ivec3_h +#define cglmc_ivec3_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_ivec3(ivec4 v4, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_copy(ivec3 a, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_zero(ivec3 v); + +CGLM_EXPORT +void +glmc_ivec3_one(ivec3 v); + +CGLM_EXPORT +void +glmc_ivec3_add(ivec3 a, ivec3 b, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_adds(ivec3 v, int s, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_sub(ivec3 a, ivec3 b, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_subs(ivec3 v, int s, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_mul(ivec3 a, ivec3 b, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_scale(ivec3 v, int s, ivec3 dest); + +CGLM_EXPORT +int +glmc_ivec3_distance2(ivec3 a, ivec3 b); + +CGLM_EXPORT +float +glmc_ivec3_distance(ivec3 a, ivec3 b); + +CGLM_EXPORT +void +glmc_ivec3_maxv(ivec3 a, ivec3 b, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_minv(ivec3 a, ivec3 b, ivec3 dest); + +CGLM_EXPORT +void +glmc_ivec3_clamp(ivec3 v, int minVal, int maxVal); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ivec3_h */ diff --git a/lib/cglm/include/cglm/call/ivec4.h b/lib/cglm/include/cglm/call/ivec4.h new file mode 100644 index 0000000..79e11b1 --- /dev/null +++ b/lib/cglm/include/cglm/call/ivec4.h @@ -0,0 +1,79 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ivec4_h +#define cglmc_ivec4_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_ivec4(ivec3 v3, int last, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_copy(ivec4 a, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_zero(ivec4 v); + +CGLM_EXPORT +void +glmc_ivec4_one(ivec4 v); + +CGLM_EXPORT +void +glmc_ivec4_add(ivec4 a, ivec4 b, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_adds(ivec4 v, int s, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_sub(ivec4 a, ivec4 b, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_subs(ivec4 v, int s, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_mul(ivec4 a, ivec4 b, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_scale(ivec4 v, int s, ivec4 dest); + +CGLM_EXPORT +int +glmc_ivec4_distance2(ivec4 a, ivec4 b); + +CGLM_EXPORT +float +glmc_ivec4_distance(ivec4 a, ivec4 b); + +CGLM_EXPORT +void +glmc_ivec4_maxv(ivec4 a, ivec4 b, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_minv(ivec4 a, ivec4 b, ivec4 dest); + +CGLM_EXPORT +void +glmc_ivec4_clamp(ivec4 v, int minVal, int maxVal); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ivec4_h */ diff --git a/lib/cglm/include/cglm/call/mat2.h b/lib/cglm/include/cglm/call/mat2.h new file mode 100644 index 0000000..91234a3 --- /dev/null +++ b/lib/cglm/include/cglm/call/mat2.h @@ -0,0 +1,79 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_mat2_h +#define cglmc_mat2_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_mat2_copy(mat2 mat, mat2 dest); + +CGLM_EXPORT +void +glmc_mat2_identity(mat2 mat); + +CGLM_EXPORT +void +glmc_mat2_identity_array(mat2 * __restrict mat, size_t count); + +CGLM_EXPORT +void +glmc_mat2_zero(mat2 mat); + +CGLM_EXPORT +void +glmc_mat2_mul(mat2 m1, mat2 m2, mat2 dest); + +CGLM_EXPORT +void +glmc_mat2_transpose_to(mat2 m, mat2 dest); + +CGLM_EXPORT +void +glmc_mat2_transpose(mat2 m); + +CGLM_EXPORT +void +glmc_mat2_mulv(mat2 m, vec2 v, vec2 dest); + +CGLM_EXPORT +float +glmc_mat2_trace(mat2 m); + +CGLM_EXPORT +void +glmc_mat2_scale(mat2 m, float s); + +CGLM_EXPORT +float +glmc_mat2_det(mat2 mat); + +CGLM_EXPORT +void +glmc_mat2_inv(mat2 mat, mat2 dest); + +CGLM_EXPORT +void +glmc_mat2_swap_col(mat2 mat, int col1, int col2); + +CGLM_EXPORT +void +glmc_mat2_swap_row(mat2 mat, int row1, int row2); + +CGLM_EXPORT +float +glmc_mat2_rmc(vec2 r, mat2 m, vec2 c); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_mat2_h */ diff --git a/lib/cglm/include/cglm/call/mat3.h b/lib/cglm/include/cglm/call/mat3.h new file mode 100644 index 0000000..36dcb27 --- /dev/null +++ b/lib/cglm/include/cglm/call/mat3.h @@ -0,0 +1,86 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_mat3_h +#define cglmc_mat3_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +/* DEPRECATED! use _copy, _ucopy versions */ +#define glmc_mat3_dup(mat, dest) glmc_mat3_copy(mat, dest) + +CGLM_EXPORT +void +glmc_mat3_copy(mat3 mat, mat3 dest); + +CGLM_EXPORT +void +glmc_mat3_identity(mat3 mat); + +CGLM_EXPORT +void +glmc_mat3_zero(mat3 mat); + +CGLM_EXPORT +void +glmc_mat3_identity_array(mat3 * __restrict mat, size_t count); + +CGLM_EXPORT +void +glmc_mat3_mul(mat3 m1, mat3 m2, mat3 dest); + +CGLM_EXPORT +void +glmc_mat3_transpose_to(mat3 m, mat3 dest); + +CGLM_EXPORT +void +glmc_mat3_transpose(mat3 m); + +CGLM_EXPORT +void +glmc_mat3_mulv(mat3 m, vec3 v, vec3 dest); + +CGLM_EXPORT +float +glmc_mat3_trace(mat3 m); + +CGLM_EXPORT +void +glmc_mat3_quat(mat3 m, versor dest); + +CGLM_EXPORT +void +glmc_mat3_scale(mat3 m, float s); + +CGLM_EXPORT +float +glmc_mat3_det(mat3 mat); + +CGLM_EXPORT +void +glmc_mat3_inv(mat3 mat, mat3 dest); + +CGLM_EXPORT +void +glmc_mat3_swap_col(mat3 mat, int col1, int col2); + +CGLM_EXPORT +void +glmc_mat3_swap_row(mat3 mat, int row1, int row2); + +CGLM_EXPORT +float +glmc_mat3_rmc(vec3 r, mat3 m, vec3 c); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_mat3_h */ diff --git a/lib/cglm/include/cglm/call/mat4.h b/lib/cglm/include/cglm/call/mat4.h new file mode 100644 index 0000000..1c71da1 --- /dev/null +++ b/lib/cglm/include/cglm/call/mat4.h @@ -0,0 +1,127 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_mat_h +#define cglmc_mat_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +/* DEPRECATED! use _copy, _ucopy versions */ +#define glmc_mat4_udup(mat, dest) glmc_mat4_ucopy(mat, dest) +#define glmc_mat4_dup(mat, dest) glmc_mat4_copy(mat, dest) + +CGLM_EXPORT +void +glmc_mat4_ucopy(mat4 mat, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_copy(mat4 mat, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_identity(mat4 mat); + +CGLM_EXPORT +void +glmc_mat4_identity_array(mat4 * __restrict mat, size_t count); + +CGLM_EXPORT +void +glmc_mat4_zero(mat4 mat); + +CGLM_EXPORT +void +glmc_mat4_pick3(mat4 mat, mat3 dest); + +CGLM_EXPORT +void +glmc_mat4_pick3t(mat4 mat, mat3 dest); + +CGLM_EXPORT +void +glmc_mat4_ins3(mat3 mat, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_mul(mat4 m1, mat4 m2, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_mulN(mat4 * __restrict matrices[], uint32_t len, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_mulv(mat4 m, vec4 v, vec4 dest); + +CGLM_EXPORT +void +glmc_mat4_mulv3(mat4 m, vec3 v, float last, vec3 dest); + +CGLM_EXPORT +float +glmc_mat4_trace(mat4 m); + +CGLM_EXPORT +float +glmc_mat4_trace3(mat4 m); + +CGLM_EXPORT +void +glmc_mat4_quat(mat4 m, versor dest); + +CGLM_EXPORT +void +glmc_mat4_transpose_to(mat4 m, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_transpose(mat4 m); + +CGLM_EXPORT +void +glmc_mat4_scale_p(mat4 m, float s); + +CGLM_EXPORT +void +glmc_mat4_scale(mat4 m, float s); + +CGLM_EXPORT +float +glmc_mat4_det(mat4 mat); + +CGLM_EXPORT +void +glmc_mat4_inv(mat4 mat, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_inv_precise(mat4 mat, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_inv_fast(mat4 mat, mat4 dest); + +CGLM_EXPORT +void +glmc_mat4_swap_col(mat4 mat, int col1, int col2); + +CGLM_EXPORT +void +glmc_mat4_swap_row(mat4 mat, int row1, int row2); + +CGLM_EXPORT +float +glmc_mat4_rmc(vec4 r, mat4 m, vec4 c); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_mat_h */ diff --git a/lib/cglm/include/cglm/call/plane.h b/lib/cglm/include/cglm/call/plane.h new file mode 100644 index 0000000..f991121 --- /dev/null +++ b/lib/cglm/include/cglm/call/plane.h @@ -0,0 +1,23 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_plane_h +#define cglmc_plane_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_plane_normalize(vec4 plane); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_plane_h */ diff --git a/lib/cglm/include/cglm/call/project.h b/lib/cglm/include/cglm/call/project.h new file mode 100644 index 0000000..fcfcf2b --- /dev/null +++ b/lib/cglm/include/cglm/call/project.h @@ -0,0 +1,41 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_project_h +#define cglmc_project_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_unprojecti(vec3 pos, mat4 invMat, vec4 vp, vec3 dest); + +CGLM_EXPORT +void +glmc_unproject(vec3 pos, mat4 m, vec4 vp, vec3 dest); + +CGLM_EXPORT +void +glmc_project(vec3 pos, mat4 m, vec4 vp, vec3 dest); + +CGLM_EXPORT +float +glmc_project_z(vec3 pos, mat4 m); + +CGLM_EXPORT +void +glmc_pickmatrix(vec2 center, vec2 size, vec4 vp, mat4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_project_h */ + + diff --git a/lib/cglm/include/cglm/call/quat.h b/lib/cglm/include/cglm/call/quat.h new file mode 100644 index 0000000..1a2766d --- /dev/null +++ b/lib/cglm/include/cglm/call/quat.h @@ -0,0 +1,167 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_quat_h +#define cglmc_quat_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_quat_identity(versor q); + +CGLM_EXPORT +void +glmc_quat_identity_array(versor * __restrict q, size_t count); + +CGLM_EXPORT +void +glmc_quat_init(versor q, float x, float y, float z, float w); + +CGLM_EXPORT +void +glmc_quat(versor q, float angle, float x, float y, float z); + +CGLM_EXPORT +void +glmc_quatv(versor q, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_quat_copy(versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_from_vecs(vec3 a, vec3 b, versor dest); + +CGLM_EXPORT +float +glmc_quat_norm(versor q); + +CGLM_EXPORT +void +glmc_quat_normalize_to(versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_normalize(versor q); + +CGLM_EXPORT +float +glmc_quat_dot(versor p, versor q); + +CGLM_EXPORT +void +glmc_quat_conjugate(versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_inv(versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_add(versor p, versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_sub(versor p, versor q, versor dest); + +CGLM_EXPORT +float +glmc_quat_real(versor q); + +CGLM_EXPORT +void +glmc_quat_imag(versor q, vec3 dest); + +CGLM_EXPORT +void +glmc_quat_imagn(versor q, vec3 dest); + +CGLM_EXPORT +float +glmc_quat_imaglen(versor q); + +CGLM_EXPORT +float +glmc_quat_angle(versor q); + +CGLM_EXPORT +void +glmc_quat_axis(versor q, vec3 dest); + +CGLM_EXPORT +void +glmc_quat_mul(versor p, versor q, versor dest); + +CGLM_EXPORT +void +glmc_quat_mat4(versor q, mat4 dest); + +CGLM_EXPORT +void +glmc_quat_mat4t(versor q, mat4 dest); + +CGLM_EXPORT +void +glmc_quat_mat3(versor q, mat3 dest); + +CGLM_EXPORT +void +glmc_quat_mat3t(versor q, mat3 dest); + +CGLM_EXPORT +void +glmc_quat_lerp(versor from, versor to, float t, versor dest); + +CGLM_EXPORT +void +glmc_quat_lerpc(versor from, versor to, float t, versor dest); + +CGLM_EXPORT +void +glmc_quat_nlerp(versor q, versor r, float t, versor dest); + +CGLM_EXPORT +void +glmc_quat_slerp(versor q, versor r, float t, versor dest); + +CGLM_EXPORT +void +glmc_quat_look(vec3 eye, versor ori, mat4 dest); + +CGLM_EXPORT +void +glmc_quat_for(vec3 dir, vec3 up, versor dest); + +CGLM_EXPORT +void +glmc_quat_forp(vec3 from, vec3 to, vec3 up, versor dest); + +CGLM_EXPORT +void +glmc_quat_rotatev(versor from, vec3 to, vec3 dest); + +CGLM_EXPORT +void +glmc_quat_rotate(mat4 m, versor q, mat4 dest); + +CGLM_EXPORT +void +glmc_quat_rotate_at(mat4 model, versor q, vec3 pivot); + +CGLM_EXPORT +void +glmc_quat_rotate_atm(mat4 m, versor q, vec3 pivot); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_quat_h */ diff --git a/lib/cglm/include/cglm/call/ray.h b/lib/cglm/include/cglm/call/ray.h new file mode 100644 index 0000000..1fff055 --- /dev/null +++ b/lib/cglm/include/cglm/call/ray.h @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_ray_h +#define cglmc_ray_h +#ifdef __cplusplus +extern "C" { +#endif +#include "../cglm.h" + +CGLM_EXPORT +bool +glmc_ray_triangle(vec3 origin, + vec3 direction, + vec3 v0, + vec3 v1, + vec3 v2, + float *d); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_ray_h */ diff --git a/lib/cglm/include/cglm/call/sphere.h b/lib/cglm/include/cglm/call/sphere.h new file mode 100644 index 0000000..9b96546 --- /dev/null +++ b/lib/cglm/include/cglm/call/sphere.h @@ -0,0 +1,39 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_sphere_h +#define cglmc_sphere_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +float +glmc_sphere_radii(vec4 s); + +CGLM_EXPORT +void +glmc_sphere_transform(vec4 s, mat4 m, vec4 dest); + +CGLM_EXPORT +void +glmc_sphere_merge(vec4 s1, vec4 s2, vec4 dest); + +CGLM_EXPORT +bool +glmc_sphere_sphere(vec4 s1, vec4 s2); + +CGLM_EXPORT +bool +glmc_sphere_point(vec4 s, vec3 point); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_sphere_h */ diff --git a/lib/cglm/include/cglm/call/vec2.h b/lib/cglm/include/cglm/call/vec2.h new file mode 100644 index 0000000..6e8101e --- /dev/null +++ b/lib/cglm/include/cglm/call/vec2.h @@ -0,0 +1,167 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_vec2_h +#define cglmc_vec2_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +CGLM_EXPORT +void +glmc_vec2(float * __restrict v, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_copy(vec2 a, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_zero(vec2 v); + +CGLM_EXPORT +void +glmc_vec2_one(vec2 v); + +CGLM_EXPORT +float +glmc_vec2_dot(vec2 a, vec2 b); + +CGLM_EXPORT +float +glmc_vec2_cross(vec2 a, vec2 b); + +CGLM_EXPORT +float +glmc_vec2_norm2(vec2 v); + +CGLM_EXPORT +float +glmc_vec2_norm(vec2 v); + +CGLM_EXPORT +void +glmc_vec2_add(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_adds(vec2 v, float s, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_sub(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_subs(vec2 v, float s, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_mul(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_scale(vec2 v, float s, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_scale_as(vec2 v, float s, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_div(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_divs(vec2 v, float s, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_addadd(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_subadd(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_muladd(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_muladds(vec2 a, float s, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_maxadd(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_minadd(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_negate_to(vec2 v, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_negate(vec2 v); + +CGLM_EXPORT +void +glmc_vec2_normalize(vec2 v); + +CGLM_EXPORT +void +glmc_vec2_normalize_to(vec2 v, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_rotate(vec2 v, float angle, vec2 dest); + +CGLM_EXPORT +float +glmc_vec2_distance2(vec2 a, vec2 b); + +CGLM_EXPORT +float +glmc_vec2_distance(vec2 a, vec2 b); + +CGLM_EXPORT +void +glmc_vec2_maxv(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_minv(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_clamp(vec2 v, float minval, float maxval); + +CGLM_EXPORT +void +glmc_vec2_lerp(vec2 from, vec2 to, float t, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_complex_mul(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_complex_div(vec2 a, vec2 b, vec2 dest); + +CGLM_EXPORT +void +glmc_vec2_complex_conjugate(vec2 a, vec2 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_vec2_h */ diff --git a/lib/cglm/include/cglm/call/vec3.h b/lib/cglm/include/cglm/call/vec3.h new file mode 100644 index 0000000..69fc0e2 --- /dev/null +++ b/lib/cglm/include/cglm/call/vec3.h @@ -0,0 +1,312 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_vec3_h +#define cglmc_vec3_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +/* DEPRECATED! use _copy, _ucopy versions */ +#define glmc_vec_dup(v, dest) glmc_vec3_copy(v, dest) +#define glmc_vec3_flipsign(v) glmc_vec3_negate(v) +#define glmc_vec3_flipsign_to(v, dest) glmc_vec3_negate_to(v, dest) +#define glmc_vec3_inv(v) glmc_vec3_negate(v) +#define glmc_vec3_inv_to(v, dest) glmc_vec3_negate_to(v, dest) + +CGLM_EXPORT +void +glmc_vec3(vec4 v4, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_copy(vec3 a, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_zero(vec3 v); + +CGLM_EXPORT +void +glmc_vec3_one(vec3 v); + +CGLM_EXPORT +float +glmc_vec3_dot(vec3 a, vec3 b); + +CGLM_EXPORT +void +glmc_vec3_cross(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_crossn(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +float +glmc_vec3_norm(vec3 v); + +CGLM_EXPORT +float +glmc_vec3_norm2(vec3 v); + +CGLM_EXPORT +float +glmc_vec3_norm_one(vec3 v); + +CGLM_EXPORT +float +glmc_vec3_norm_inf(vec3 v); + +CGLM_EXPORT +void +glmc_vec3_normalize_to(vec3 v, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_normalize(vec3 v); + +CGLM_EXPORT +void +glmc_vec3_add(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_adds(vec3 v, float s, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_sub(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_subs(vec3 v, float s, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_mul(vec3 a, vec3 b, vec3 d); + +CGLM_EXPORT +void +glmc_vec3_scale(vec3 v, float s, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_scale_as(vec3 v, float s, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_div(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_divs(vec3 a, float s, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_addadd(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_subadd(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_muladd(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_muladds(vec3 a, float s, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_maxadd(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_minadd(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_negate(vec3 v); + +CGLM_EXPORT +void +glmc_vec3_negate_to(vec3 v, vec3 dest); + +CGLM_EXPORT +float +glmc_vec3_angle(vec3 a, vec3 b); + +CGLM_EXPORT +void +glmc_vec3_rotate(vec3 v, float angle, vec3 axis); + +CGLM_EXPORT +void +glmc_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_proj(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_center(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +float +glmc_vec3_distance2(vec3 a, vec3 b); + +CGLM_EXPORT +float +glmc_vec3_distance(vec3 a, vec3 b); + +CGLM_EXPORT +void +glmc_vec3_maxv(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_minv(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_clamp(vec3 v, float minVal, float maxVal); + +CGLM_EXPORT +void +glmc_vec3_ortho(vec3 v, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_lerpc(vec3 from, vec3 to, float t, vec3 dest); + +CGLM_INLINE +void +glmc_vec3_mix(vec3 from, vec3 to, float t, vec3 dest) { + glmc_vec3_lerp(from, to, t, dest); +} + +CGLM_INLINE +void +glmc_vec3_mixc(vec3 from, vec3 to, float t, vec3 dest) { + glmc_vec3_lerpc(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec3_step_uni(float edge, vec3 x, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_step(vec3 edge, vec3 x, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_smoothstep_uni(float edge0, float edge1, vec3 x, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_smoothstep(vec3 edge0, vec3 edge1, vec3 x, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_smoothinterp(vec3 from, vec3 to, float t, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_smoothinterpc(vec3 from, vec3 to, float t, vec3 dest); + +/* ext */ + +CGLM_EXPORT +void +glmc_vec3_mulv(vec3 a, vec3 b, vec3 d); + +CGLM_EXPORT +void +glmc_vec3_broadcast(float val, vec3 d); + +CGLM_EXPORT +void +glmc_vec3_fill(vec3 v, float val); + +CGLM_EXPORT +bool +glmc_vec3_eq(vec3 v, float val); + +CGLM_EXPORT +bool +glmc_vec3_eq_eps(vec3 v, float val); + +CGLM_EXPORT +bool +glmc_vec3_eq_all(vec3 v); + +CGLM_EXPORT +bool +glmc_vec3_eqv(vec3 a, vec3 b); + +CGLM_EXPORT +bool +glmc_vec3_eqv_eps(vec3 a, vec3 b); + +CGLM_EXPORT +float +glmc_vec3_max(vec3 v); + +CGLM_EXPORT +float +glmc_vec3_min(vec3 v); + +CGLM_EXPORT +bool +glmc_vec3_isnan(vec3 v); + +CGLM_EXPORT +bool +glmc_vec3_isinf(vec3 v); + +CGLM_EXPORT +bool +glmc_vec3_isvalid(vec3 v); + +CGLM_EXPORT +void +glmc_vec3_sign(vec3 v, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_abs(vec3 v, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_fract(vec3 v, vec3 dest); + +CGLM_EXPORT +float +glmc_vec3_hadd(vec3 v); + +CGLM_EXPORT +void +glmc_vec3_sqrt(vec3 v, vec3 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_vec3_h */ diff --git a/lib/cglm/include/cglm/call/vec4.h b/lib/cglm/include/cglm/call/vec4.h new file mode 100644 index 0000000..f56f599 --- /dev/null +++ b/lib/cglm/include/cglm/call/vec4.h @@ -0,0 +1,290 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglmc_vec4_h +#define cglmc_vec4_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" + +/* DEPRECATED! use _copy, _ucopy versions */ +#define glmc_vec4_dup3(v, dest) glmc_vec4_copy3(v, dest) +#define glmc_vec4_dup(v, dest) glmc_vec4_copy(v, dest) +#define glmc_vec4_flipsign(v) glmc_vec4_negate(v) +#define glmc_vec4_flipsign_to(v, dest) glmc_vec4_negate_to(v, dest) +#define glmc_vec4_inv(v) glmc_vec4_negate(v) +#define glmc_vec4_inv_to(v, dest) glmc_vec4_negate_to(v, dest) + +CGLM_EXPORT +void +glmc_vec4(vec3 v3, float last, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_zero(vec4 v); + +CGLM_EXPORT +void +glmc_vec4_one(vec4 v); + +CGLM_EXPORT +void +glmc_vec4_copy3(vec4 v, vec3 dest); + +CGLM_EXPORT +void +glmc_vec4_copy(vec4 v, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_ucopy(vec4 v, vec4 dest); + +CGLM_EXPORT +float +glmc_vec4_dot(vec4 a, vec4 b); + +CGLM_EXPORT +float +glmc_vec4_norm(vec4 v); + +CGLM_EXPORT +float +glmc_vec4_norm2(vec4 v); + +CGLM_EXPORT +float +glmc_vec4_norm_one(vec4 v); + +CGLM_EXPORT +float +glmc_vec4_norm_inf(vec4 v); + +CGLM_EXPORT +void +glmc_vec4_normalize_to(vec4 v, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_normalize(vec4 v); + +CGLM_EXPORT +void +glmc_vec4_add(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_adds(vec4 v, float s, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_sub(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_subs(vec4 v, float s, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_mul(vec4 a, vec4 b, vec4 d); + +CGLM_EXPORT +void +glmc_vec4_scale(vec4 v, float s, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_scale_as(vec4 v, float s, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_div(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_divs(vec4 v, float s, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_addadd(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_subadd(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_muladd(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_muladds(vec4 a, float s, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_maxadd(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_minadd(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_negate(vec4 v); + +CGLM_EXPORT +void +glmc_vec4_negate_to(vec4 v, vec4 dest); + +CGLM_EXPORT +float +glmc_vec4_distance(vec4 a, vec4 b); + +CGLM_EXPORT +float +glmc_vec4_distance2(vec4 a, vec4 b); + +CGLM_EXPORT +void +glmc_vec4_maxv(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_minv(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_clamp(vec4 v, float minVal, float maxVal); + +CGLM_EXPORT +void +glmc_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_lerpc(vec4 from, vec4 to, float t, vec4 dest); + +CGLM_INLINE +void +glmc_vec4_mix(vec4 from, vec4 to, float t, vec4 dest) { + glmc_vec4_lerp(from, to, t, dest); +} + +CGLM_INLINE +void +glmc_vec4_mixc(vec4 from, vec4 to, float t, vec4 dest) { + glmc_vec4_lerpc(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec4_step_uni(float edge, vec4 x, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_step(vec4 edge, vec4 x, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_smoothstep_uni(float edge0, float edge1, vec4 x, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_smoothstep(vec4 edge0, vec4 edge1, vec4 x, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_smoothinterp(vec4 from, vec4 to, float t, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_smoothinterpc(vec4 from, vec4 to, float t, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_cubic(float s, vec4 dest); + +/* ext */ + +CGLM_EXPORT +void +glmc_vec4_mulv(vec4 a, vec4 b, vec4 d); + +CGLM_EXPORT +void +glmc_vec4_broadcast(float val, vec4 d); + +CGLM_EXPORT +void +glmc_vec4_fill(vec4 v, float val); + +CGLM_EXPORT +bool +glmc_vec4_eq(vec4 v, float val); + +CGLM_EXPORT +bool +glmc_vec4_eq_eps(vec4 v, float val); + +CGLM_EXPORT +bool +glmc_vec4_eq_all(vec4 v); + +CGLM_EXPORT +bool +glmc_vec4_eqv(vec4 a, vec4 b); + +CGLM_EXPORT +bool +glmc_vec4_eqv_eps(vec4 a, vec4 b); + +CGLM_EXPORT +float +glmc_vec4_max(vec4 v); + +CGLM_EXPORT +float +glmc_vec4_min(vec4 v); + +CGLM_EXPORT +bool +glmc_vec4_isnan(vec4 v); + +CGLM_EXPORT +bool +glmc_vec4_isinf(vec4 v); + +CGLM_EXPORT +bool +glmc_vec4_isvalid(vec4 v); + +CGLM_EXPORT +void +glmc_vec4_sign(vec4 v, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_abs(vec4 v, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_fract(vec4 v, vec4 dest); + +CGLM_EXPORT +float +glmc_vec4_hadd(vec4 v); + +CGLM_EXPORT +void +glmc_vec4_sqrt(vec4 v, vec4 dest); + +#ifdef __cplusplus +} +#endif +#endif /* cglmc_vec4_h */ + diff --git a/lib/cglm/include/cglm/cam.h b/lib/cglm/include/cglm/cam.h new file mode 100644 index 0000000..c8cfd42 --- /dev/null +++ b/lib/cglm/include/cglm/cam.h @@ -0,0 +1,582 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_frustum(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_ortho(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb(vec3 box[2], mat4 dest) + CGLM_INLINE void glm_ortho_aabb_p(vec3 box[2], float padding, mat4 dest) + CGLM_INLINE void glm_ortho_aabb_pz(vec3 box[2], float padding, mat4 dest) + CGLM_INLINE void glm_ortho_default(float aspect, mat4 dest) + CGLM_INLINE void glm_ortho_default_s(float aspect, float size, mat4 dest) + CGLM_INLINE void glm_perspective(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_default(float aspect, mat4 dest) + CGLM_INLINE void glm_perspective_resize(float aspect, mat4 proj) + CGLM_INLINE void glm_lookat(vec3 eye, vec3 center, vec3 up, mat4 dest) + CGLM_INLINE void glm_look(vec3 eye, vec3 dir, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_anyup(vec3 eye, vec3 dir, mat4 dest) + CGLM_INLINE void glm_persp_decomp(mat4 proj, + float *nearZ, float *farZ, + float *top, float *bottom, + float *left, float *right) + CGLM_INLINE void glm_persp_decompv(mat4 proj, float dest[6]) + CGLM_INLINE void glm_persp_decomp_x(mat4 proj, float *left, float *right) + CGLM_INLINE void glm_persp_decomp_y(mat4 proj, float *top, float *bottom) + CGLM_INLINE void glm_persp_decomp_z(mat4 proj, float *nearv, float *farv) + CGLM_INLINE void glm_persp_decomp_far(mat4 proj, float *farZ) + CGLM_INLINE void glm_persp_decomp_near(mat4 proj, float *nearZ) + CGLM_INLINE float glm_persp_fovy(mat4 proj) + CGLM_INLINE float glm_persp_aspect(mat4 proj) + CGLM_INLINE void glm_persp_sizes(mat4 proj, float fovy, vec4 dest) + */ + +#ifndef cglm_cam_h +#define cglm_cam_h + +#include "common.h" +#include "plane.h" + +#include "clipspace/persp.h" + +#ifndef CGLM_CLIPSPACE_INCLUDE_ALL +# if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO +# include "clipspace/ortho_lh_zo.h" +# include "clipspace/persp_lh_zo.h" +# include "clipspace/view_lh_zo.h" +# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO +# include "clipspace/ortho_lh_no.h" +# include "clipspace/persp_lh_no.h" +# include "clipspace/view_lh_no.h" +# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO +# include "clipspace/ortho_rh_zo.h" +# include "clipspace/persp_rh_zo.h" +# include "clipspace/view_rh_zo.h" +# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO +# include "clipspace/ortho_rh_no.h" +# include "clipspace/persp_rh_no.h" +# include "clipspace/view_rh_no.h" +# endif +#else +# include "clipspace/ortho_lh_zo.h" +# include "clipspace/persp_lh_zo.h" +# include "clipspace/ortho_lh_no.h" +# include "clipspace/persp_lh_no.h" +# include "clipspace/ortho_rh_zo.h" +# include "clipspace/persp_rh_zo.h" +# include "clipspace/ortho_rh_no.h" +# include "clipspace/persp_rh_no.h" +# include "clipspace/view_lh_zo.h" +# include "clipspace/view_lh_no.h" +# include "clipspace/view_rh_zo.h" +# include "clipspace/view_rh_no.h" +#endif + +/*! + * @brief set up perspective peprojection matrix + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_frustum(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_frustum_lh_zo(left, right, bottom, top, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_frustum_lh_no(left, right, bottom, top, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_frustum_rh_zo(left, right, bottom, top, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_frustum_rh_no(left, right, bottom, top, nearZ, farZ, dest); +#endif +} + +/*! + * @brief set up orthographic projection matrix + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_ortho_lh_zo(left, right, bottom, top, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_ortho_lh_no(left, right, bottom, top, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_ortho_rh_zo(left, right, bottom, top, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_ortho_rh_no(left, right, bottom, top, nearZ, farZ, dest); +#endif +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb(vec3 box[2], mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_ortho_aabb_lh_zo(box, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_ortho_aabb_lh_no(box, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_ortho_aabb_rh_zo(box, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_ortho_aabb_rh_no(box, dest); +#endif +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_p(vec3 box[2], float padding, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_ortho_aabb_p_lh_zo(box, padding, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_ortho_aabb_p_lh_no(box, padding, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_ortho_aabb_p_rh_zo(box, padding, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_ortho_aabb_p_rh_no(box, padding, dest); +#endif +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_pz(vec3 box[2], float padding, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_ortho_aabb_pz_lh_zo(box, padding, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_ortho_aabb_pz_lh_no(box, padding, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_ortho_aabb_pz_rh_zo(box, padding, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_ortho_aabb_pz_rh_no(box, padding, dest); +#endif +} + +/*! + * @brief set up unit orthographic projection matrix + * + * @param[in] aspect aspect ration ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default(float aspect, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_ortho_default_lh_zo(aspect, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_ortho_default_lh_no(aspect, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_ortho_default_rh_zo(aspect, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_ortho_default_rh_no(aspect, dest); +#endif +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_s(float aspect, float size, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_ortho_default_s_lh_zo(aspect, size, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_ortho_default_s_lh_no(aspect, size, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_ortho_default_s_rh_zo(aspect, size, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_ortho_default_s_rh_no(aspect, size, dest); +#endif +} + +/*! + * @brief set up perspective projection matrix + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective(float fovy, float aspect, float nearZ, float farZ, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_perspective_lh_zo(fovy, aspect, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_perspective_lh_no(fovy, aspect, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_perspective_rh_zo(fovy, aspect, nearZ, farZ, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_perspective_rh_no(fovy, aspect, nearZ, farZ, dest); +#endif +} + +/*! + * @brief extend perspective projection matrix's far distance + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +void +glm_persp_move_far(mat4 proj, float deltaFar) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_move_far_lh_zo(proj, deltaFar); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_move_far_lh_no(proj, deltaFar); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_move_far_rh_zo(proj, deltaFar); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_move_far_rh_no(proj, deltaFar); +#endif +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_default(float aspect, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_perspective_default_lh_zo(aspect, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_perspective_default_lh_no(aspect, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_perspective_default_rh_zo(aspect, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_perspective_default_rh_no(aspect, dest); +#endif +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * reized + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in, out] proj perspective projection matrix + */ +CGLM_INLINE +void +glm_perspective_resize(float aspect, mat4 proj) { + if (proj[0][0] == 0.0f) + return; + + proj[0][0] = proj[1][1] / aspect; +} + +/*! + * @brief set up view matrix + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_lookat(vec3 eye, vec3 center, vec3 up, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_LH_BIT + glm_lookat_lh(eye, center, up, dest); +#elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_RH_BIT + glm_lookat_rh(eye, center, up, dest); +#endif +} + +/*! + * @brief set up view matrix + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look(vec3 eye, vec3 dir, vec3 up, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_LH_BIT + glm_look_lh(eye, dir, up, dest); +#elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_RH_BIT + glm_look_rh(eye, dir, up, dest); +#endif +} + +/*! + * @brief set up view matrix + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_anyup(vec3 eye, vec3 dir, mat4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_LH_BIT + glm_look_anyup_lh(eye, dir, dest); +#elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_RH_BIT + glm_look_anyup_rh(eye, dir, dest); +#endif +} + +/*! + * @brief decomposes frustum values of perspective projection. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_decomp_lh_zo(proj, nearZ, farZ, top, bottom, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_decomp_lh_no(proj, nearZ, farZ, top, bottom, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_decomp_rh_zo(proj, nearZ, farZ, top, bottom, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_decomp_rh_no(proj, nearZ, farZ, top, bottom, left, right); +#endif +} + +/*! + * @brief decomposes frustum values of perspective projection. + * this makes easy to get all values at once + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glm_persp_decompv(mat4 proj, float dest[6]) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_decompv_lh_zo(proj, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_decompv_lh_no(proj, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_decompv_rh_zo(proj, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_decompv_rh_no(proj, dest); +#endif +} + +/*! + * @brief decomposes left and right values of perspective projection. + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_x(mat4 proj, + float * __restrict left, + float * __restrict right) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_decomp_x_lh_zo(proj, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_decomp_x_lh_no(proj, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_decomp_x_rh_zo(proj, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_decomp_x_rh_no(proj, left, right); +#endif +} + +/*! + * @brief decomposes top and bottom values of perspective projection. + * y stands for y axis (top / botom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glm_persp_decomp_y(mat4 proj, + float * __restrict top, + float * __restrict bottom) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_decomp_y_lh_zo(proj, top, bottom); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_decomp_y_lh_no(proj, top, bottom); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_decomp_y_rh_zo(proj, top, bottom); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_decomp_y_rh_no(proj, top, bottom); +#endif +} + +/*! + * @brief decomposes near and far values of perspective projection. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_z(mat4 proj, float * __restrict nearZ, float * __restrict farZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_decomp_z_lh_zo(proj, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_decomp_z_lh_no(proj, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_decomp_z_rh_zo(proj, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_decomp_z_rh_no(proj, nearZ, farZ); +#endif +} + +/*! + * @brief decomposes far value of perspective projection. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_far(mat4 proj, float * __restrict farZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_decomp_far_lh_zo(proj, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_decomp_far_lh_no(proj, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_decomp_far_rh_zo(proj, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_decomp_far_rh_no(proj, farZ); +#endif +} + +/*! + * @brief decomposes near value of perspective projection. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glm_persp_decomp_near(mat4 proj, float * __restrict nearZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_decomp_near_lh_zo(proj, nearZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_decomp_near_lh_no(proj, nearZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_decomp_near_rh_zo(proj, nearZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_decomp_near_rh_no(proj, nearZ); +#endif +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @param[out] dest sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +void +glm_persp_sizes(mat4 proj, float fovy, vec4 dest) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glm_persp_sizes_lh_zo(proj, fovy, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glm_persp_sizes_lh_no(proj, fovy, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glm_persp_sizes_rh_zo(proj, fovy, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glm_persp_sizes_rh_no(proj, fovy, dest); +#endif +} + +#endif /* cglm_cam_h */ diff --git a/lib/cglm/include/cglm/cglm.h b/lib/cglm/include/cglm/cglm.h new file mode 100644 index 0000000..1828cb4 --- /dev/null +++ b/lib/cglm/include/cglm/cglm.h @@ -0,0 +1,39 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_h +#define cglm_h + +#include "common.h" +#include "vec2.h" +#include "vec3.h" +#include "vec4.h" +#include "ivec2.h" +#include "ivec3.h" +#include "ivec4.h" +#include "mat4.h" +#include "mat3.h" +#include "mat2.h" +#include "affine.h" +#include "cam.h" +#include "frustum.h" +#include "quat.h" +#include "euler.h" +#include "plane.h" +#include "box.h" +#include "color.h" +#include "util.h" +#include "io.h" +#include "project.h" +#include "sphere.h" +#include "ease.h" +#include "curve.h" +#include "bezier.h" +#include "ray.h" +#include "affine2d.h" + +#endif /* cglm_h */ diff --git a/lib/cglm/include/cglm/clipspace/ortho_lh_no.h b/lib/cglm/include/cglm/clipspace/ortho_lh_no.h new file mode 100644 index 0000000..76c7a94 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/ortho_lh_no.h @@ -0,0 +1,183 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_ortho_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb_lh_no(vec3 box[2], mat4 dest) + CGLM_INLINE void glm_ortho_aabb_p_lh_no(vec3 box[2], + float padding, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb_pz_lh_no(vec3 box[2], + float padding, + mat4 dest) + CGLM_INLINE void glm_ortho_default_lh_no(float aspect, + mat4 dest) + CGLM_INLINE void glm_ortho_default_s_lh_no(float aspect, + float size, + mat4 dest) + */ + +#ifndef cglm_ortho_lh_no_h +#define cglm_ortho_lh_no_h + +#include "../common.h" +#include "../plane.h" +#include "../mat4.h" + +/*! + * @brief set up orthographic projection matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + float rl, tb, fn; + + glm_mat4_zero(dest); + + rl = 1.0f / (right - left); + tb = 1.0f / (top - bottom); + fn =-1.0f / (farZ - nearZ); + + dest[0][0] = 2.0f * rl; + dest[1][1] = 2.0f * tb; + dest[2][2] =-2.0f * fn; + dest[3][0] =-(right + left) * rl; + dest[3][1] =-(top + bottom) * tb; + dest[3][2] = (farZ + nearZ) * fn; + dest[3][3] = 1.0f; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_lh_no(vec3 box[2], mat4 dest) { + glm_ortho_lh_no(box[0][0], box[1][0], + box[0][1], box[1][1], + -box[1][2], -box[0][2], + dest); +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_p_lh_no(vec3 box[2], float padding, mat4 dest) { + glm_ortho_lh_no(box[0][0] - padding, box[1][0] + padding, + box[0][1] - padding, box[1][1] + padding, + -(box[1][2] + padding), -(box[0][2] - padding), + dest); +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_pz_lh_no(vec3 box[2], float padding, mat4 dest) { + glm_ortho_lh_no(box[0][0], box[1][0], + box[0][1], box[1][1], + -(box[1][2] + padding), -(box[0][2] - padding), + dest); +} + +/*! + * @brief set up unit orthographic projection matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ration ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_lh_no(float aspect, mat4 dest) { + if (aspect >= 1.0f) { + glm_ortho_lh_no(-aspect, aspect, -1.0f, 1.0f, -100.0f, 100.0f, dest); + return; + } + + aspect = 1.0f / aspect; + + glm_ortho_lh_no(-1.0f, 1.0f, -aspect, aspect, -100.0f, 100.0f, dest); +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_s_lh_no(float aspect, float size, mat4 dest) { + if (aspect >= 1.0f) { + glm_ortho_lh_no(-size * aspect, + size * aspect, + -size, + size, + -size - 100.0f, + size + 100.0f, + dest); + return; + } + + glm_ortho_lh_no(-size, + size, + -size / aspect, + size / aspect, + -size - 100.0f, + size + 100.0f, + dest); +} + +#endif /*cglm_ortho_lh_no_h*/ diff --git a/lib/cglm/include/cglm/clipspace/ortho_lh_zo.h b/lib/cglm/include/cglm/clipspace/ortho_lh_zo.h new file mode 100644 index 0000000..e45530d --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/ortho_lh_zo.h @@ -0,0 +1,177 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_ortho_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb_lh_zo(vec3 box[2], mat4 dest) + CGLM_INLINE void glm_ortho_aabb_p_lh_zo(vec3 box[2], + float padding, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb_pz_lh_zo(vec3 box[2], + float padding, + mat4 dest) + CGLM_INLINE void glm_ortho_default_lh_zo(float aspect, + mat4 dest) + CGLM_INLINE void glm_ortho_default_s_lh_zo(float aspect, + float size, + mat4 dest) + */ + +#ifndef cglm_ortho_lh_zo_h +#define cglm_ortho_lh_zo_h + +#include "../common.h" +#include "../plane.h" +#include "../mat4.h" + +/*! + * @brief set up orthographic projection matrix with a left-hand coordinate + * system and a clip-space of [0, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + float rl, tb, fn; + + glm_mat4_zero(dest); + + rl = 1.0f / (right - left); + tb = 1.0f / (top - bottom); + fn =-1.0f / (farZ - nearZ); + + dest[0][0] = 2.0f * rl; + dest[1][1] = 2.0f * tb; + dest[2][2] =-fn; + dest[3][0] =-(right + left) * rl; + dest[3][1] =-(top + bottom) * tb; + dest[3][2] = nearZ * fn; + dest[3][3] = 1.0f; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_lh_zo(vec3 box[2], mat4 dest) { + glm_ortho_lh_zo(box[0][0], box[1][0], + box[0][1], box[1][1], + -box[1][2], -box[0][2], + dest); +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_p_lh_zo(vec3 box[2], float padding, mat4 dest) { + glm_ortho_lh_zo(box[0][0] - padding, box[1][0] + padding, + box[0][1] - padding, box[1][1] + padding, + -(box[1][2] + padding), -(box[0][2] - padding), + dest); +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_pz_lh_zo(vec3 box[2], float padding, mat4 dest) { + glm_ortho_lh_zo(box[0][0], box[1][0], + box[0][1], box[1][1], + -(box[1][2] + padding), -(box[0][2] - padding), + dest); +} + +/*! + * @brief set up unit orthographic projection matrix + * with a left-hand coordinate system and a clip-space of [0, 1]. + * + * @param[in] aspect aspect ration ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_lh_zo(float aspect, mat4 dest) { + if (aspect >= 1.0f) { + glm_ortho_lh_zo(-aspect, aspect, -1.0f, 1.0f, -100.0f, 100.0f, dest); + return; + } + + aspect = 1.0f / aspect; + + glm_ortho_lh_zo(-1.0f, 1.0f, -aspect, aspect, -100.0f, 100.0f, dest); +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * with a left-hand coordinate system and a clip-space of [0, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_s_lh_zo(float aspect, float size, mat4 dest) { + if (aspect >= 1.0f) { + glm_ortho_lh_zo(-size * aspect, + size * aspect, + -size, + size, + -size - 100.0f, + size + 100.0f, + dest); + return; + } + + glm_ortho_lh_zo(-size, + size, + -size / aspect, + size / aspect, + -size - 100.0f, + size + 100.0f, + dest); +} + +#endif /*cglm_ortho_lh_zo_h*/ diff --git a/lib/cglm/include/cglm/clipspace/ortho_rh_no.h b/lib/cglm/include/cglm/clipspace/ortho_rh_no.h new file mode 100644 index 0000000..aa7a906 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/ortho_rh_no.h @@ -0,0 +1,183 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_ortho_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb_rh_no(vec3 box[2], mat4 dest) + CGLM_INLINE void glm_ortho_aabb_p_rh_no(vec3 box[2], + float padding, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb_pz_rh_no(vec3 box[2], + float padding, + mat4 dest) + CGLM_INLINE void glm_ortho_default_rh_no(float aspect, + mat4 dest) + CGLM_INLINE void glm_ortho_default_s_rh_no(float aspect, + float size, + mat4 dest) + */ + +#ifndef cglm_ortho_rh_no_h +#define cglm_ortho_rh_no_h + +#include "../common.h" +#include "../plane.h" +#include "../mat4.h" + +/*! + * @brief set up orthographic projection matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + float rl, tb, fn; + + glm_mat4_zero(dest); + + rl = 1.0f / (right - left); + tb = 1.0f / (top - bottom); + fn =-1.0f / (farZ - nearZ); + + dest[0][0] = 2.0f * rl; + dest[1][1] = 2.0f * tb; + dest[2][2] = 2.0f * fn; + dest[3][0] =-(right + left) * rl; + dest[3][1] =-(top + bottom) * tb; + dest[3][2] = (farZ + nearZ) * fn; + dest[3][3] = 1.0f; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_rh_no(vec3 box[2], mat4 dest) { + glm_ortho_rh_no(box[0][0], box[1][0], + box[0][1], box[1][1], + -box[1][2], -box[0][2], + dest); +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_p_rh_no(vec3 box[2], float padding, mat4 dest) { + glm_ortho_rh_no(box[0][0] - padding, box[1][0] + padding, + box[0][1] - padding, box[1][1] + padding, + -(box[1][2] + padding), -(box[0][2] - padding), + dest); +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_pz_rh_no(vec3 box[2], float padding, mat4 dest) { + glm_ortho_rh_no(box[0][0], box[1][0], + box[0][1], box[1][1], + -(box[1][2] + padding), -(box[0][2] - padding), + dest); +} + +/*! + * @brief set up unit orthographic projection matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ration ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_rh_no(float aspect, mat4 dest) { + if (aspect >= 1.0f) { + glm_ortho_rh_no(-aspect, aspect, -1.0f, 1.0f, -100.0f, 100.0f, dest); + return; + } + + aspect = 1.0f / aspect; + + glm_ortho_rh_no(-1.0f, 1.0f, -aspect, aspect, -100.0f, 100.0f, dest); +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_s_rh_no(float aspect, float size, mat4 dest) { + if (aspect >= 1.0f) { + glm_ortho_rh_no(-size * aspect, + size * aspect, + -size, + size, + -size - 100.0f, + size + 100.0f, + dest); + return; + } + + glm_ortho_rh_no(-size, + size, + -size / aspect, + size / aspect, + -size - 100.0f, + size + 100.0f, + dest); +} + +#endif /*cglm_ortho_rh_no_h*/ diff --git a/lib/cglm/include/cglm/clipspace/ortho_rh_zo.h b/lib/cglm/include/cglm/clipspace/ortho_rh_zo.h new file mode 100644 index 0000000..7a0876c --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/ortho_rh_zo.h @@ -0,0 +1,181 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_ortho_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb_rh_zo(vec3 box[2], mat4 dest) + CGLM_INLINE void glm_ortho_aabb_p_rh_zo(vec3 box[2], + float padding, + mat4 dest) + CGLM_INLINE void glm_ortho_aabb_pz_rh_zo(vec3 box[2], + float padding, + mat4 dest) + CGLM_INLINE void glm_ortho_default_rh_zo(float aspect, + mat4 dest) + CGLM_INLINE void glm_ortho_default_s_rh_zo(float aspect, + float size, + mat4 dest) + */ + +#ifndef cglm_ortho_rh_zo_h +#define cglm_ortho_rh_zo_h + +#include "../common.h" +#include "../plane.h" +#include "../mat4.h" + +/*! + * @brief set up orthographic projection matrix with a right-hand coordinate + * system and a clip-space of [0, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + float rl, tb, fn; + + glm_mat4_zero(dest); + + rl = 1.0f / (right - left); + tb = 1.0f / (top - bottom); + fn =-1.0f / (farZ - nearZ); + + dest[0][0] = 2.0f * rl; + dest[1][1] = 2.0f * tb; + dest[2][2] = fn; + dest[3][0] =-(right + left) * rl; + dest[3][1] =-(top + bottom) * tb; + dest[3][2] = nearZ * fn; + dest[3][3] = 1.0f; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a clip-space with depth + * values from zero to one. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_rh_zo(vec3 box[2], mat4 dest) { + glm_ortho_rh_zo(box[0][0], box[1][0], + box[0][1], box[1][1], + -box[1][2], -box[0][2], + dest); +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a clip-space with depth + * values from zero to one. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_p_rh_zo(vec3 box[2], float padding, mat4 dest) { + glm_ortho_rh_zo(box[0][0] - padding, box[1][0] + padding, + box[0][1] - padding, box[1][1] + padding, + -(box[1][2] + padding), -(box[0][2] - padding), + dest); +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a clip-space with depth + * values from zero to one. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_aabb_pz_rh_zo(vec3 box[2], float padding, mat4 dest) { + glm_ortho_rh_zo(box[0][0], box[1][0], + box[0][1], box[1][1], + -(box[1][2] + padding), -(box[0][2] - padding), + dest); +} + +/*! + * @brief set up unit orthographic projection matrix with a right-hand + * coordinate system and a clip-space of [0, 1]. + * + * @param[in] aspect aspect ration ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_rh_zo(float aspect, mat4 dest) { + if (aspect >= 1.0f) { + glm_ortho_rh_zo(-aspect, aspect, -1.0f, 1.0f, -100.0f, 100.0f, dest); + return; + } + + aspect = 1.0f / aspect; + + glm_ortho_rh_zo(-1.0f, 1.0f, -aspect, aspect, -100.0f, 100.0f, dest); +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * with a right-hand coordinate system and a clip-space with depth + * values from zero to one. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_ortho_default_s_rh_zo(float aspect, float size, mat4 dest) { + if (aspect >= 1.0f) { + glm_ortho_rh_zo(-size * aspect, + size * aspect, + -size, + size, + -size - 100.0f, + size + 100.0f, + dest); + return; + } + + glm_ortho_rh_zo(-size, + size, + -size / aspect, + size / aspect, + -size - 100.0f, + size + 100.0f, + dest); +} + +#endif /*cglm_ortho_rh_zo_h*/ diff --git a/lib/cglm/include/cglm/clipspace/persp.h b/lib/cglm/include/cglm/clipspace/persp.h new file mode 100644 index 0000000..15aa715 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/persp.h @@ -0,0 +1,48 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_persp_decomp_far(mat4 proj, float *farZ) + CGLM_INLINE float glm_persp_fovy(mat4 proj) + CGLM_INLINE float glm_persp_aspect(mat4 proj) + CGLM_INLINE void glm_persp_sizes(mat4 proj, float fovy, vec4 dest) + */ + +#ifndef cglm_persp_h +#define cglm_persp_h + +#include "../common.h" +#include "../plane.h" +#include "../mat4.h" + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_fovy(mat4 proj) { + return 2.0f * atanf(1.0f / proj[1][1]); +} + +/*! + * @brief returns aspect ratio of perspective projection + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_aspect(mat4 proj) { + return proj[1][1] / proj[0][0]; +} + +#endif /* cglm_persp_h */ diff --git a/lib/cglm/include/cglm/clipspace/persp_lh_no.h b/lib/cglm/include/cglm/clipspace/persp_lh_no.h new file mode 100644 index 0000000..703530e --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/persp_lh_no.h @@ -0,0 +1,395 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_frustum_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_lh_no(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_default_lh_no(float aspect, mat4 dest) + CGLM_INLINE void glm_perspective_resize_lh_no(float aspect, mat4 proj) + CGLM_INLINE void glm_persp_move_far_lh_no(mat4 proj, + float deltaFar) + CGLM_INLINE void glm_persp_decomp_lh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ, + float * __restrict top, + float * __restrict bottom, + float * __restrict left, + float * __restrict right) + CGLM_INLINE void glm_persp_decompv_lh_no(mat4 proj, + float dest[6]) + CGLM_INLINE void glm_persp_decomp_x_lh_no(mat4 proj, + float * __restrict left, + float * __restrict right) + CGLM_INLINE void glm_persp_decomp_y_lh_no(mat4 proj, + float * __restrict top, + float * __restrict bottom) + CGLM_INLINE void glm_persp_decomp_z_lh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) + CGLM_INLINE void glm_persp_decomp_far_lh_no(mat4 proj, float * __restrict farZ) + CGLM_INLINE void glm_persp_decomp_near_lh_no(mat4 proj, float * __restrict nearZ) + CGLM_INLINE void glm_persp_sizes_lh_no(mat4 proj, float fovy, vec4 dest) + */ + +#ifndef cglm_persp_lh_no_h +#define cglm_persp_lh_no_h + +#include "../common.h" +#include "persp.h" + +/*! + * @brief set up perspective peprojection matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_frustum_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + float rl, tb, fn, nv; + + glm_mat4_zero(dest); + + rl = 1.0f / (right - left); + tb = 1.0f / (top - bottom); + fn =-1.0f / (farZ - nearZ); + nv = 2.0f * nearZ; + + dest[0][0] = nv * rl; + dest[1][1] = nv * tb; + dest[2][0] = (right + left) * rl; + dest[2][1] = (top + bottom) * tb; + dest[2][2] =-(farZ + nearZ) * fn; + dest[2][3] = 1.0f; + dest[3][2] = farZ * nv * fn; +} + +/*! + * @brief set up perspective projection matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_lh_no(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) { + float f, fn; + + glm_mat4_zero(dest); + + f = 1.0f / tanf(fovy * 0.5f); + fn = 1.0f / (nearZ - farZ); + + dest[0][0] = f / aspect; + dest[1][1] = f; + dest[2][2] =-(nearZ + farZ) * fn; + dest[2][3] = 1.0f; + dest[3][2] = 2.0f * nearZ * farZ * fn; + +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_default_lh_no(float aspect, mat4 dest) { + glm_perspective_lh_no(GLM_PI_4f, aspect, 0.01f, 100.0f, dest); +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * resized with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in, out] proj perspective projection matrix + */ +CGLM_INLINE +void +glm_perspective_resize_lh_no(float aspect, mat4 proj) { + if (proj[0][0] == 0.0f) + return; + + proj[0][0] = proj[1][1] / aspect; +} + +/*! + * @brief extend perspective projection matrix's far distance + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +void +glm_persp_move_far_lh_no(mat4 proj, float deltaFar) { + float fn, farZ, nearZ, p22, p32; + + p22 = -proj[2][2]; + p32 = proj[3][2]; + + nearZ = p32 / (p22 - 1.0f); + farZ = p32 / (p22 + 1.0f) + deltaFar; + fn = 1.0f / (nearZ - farZ); + + proj[2][2] = -(farZ + nearZ) * fn; + proj[3][2] = 2.0f * nearZ * farZ * fn; +} + +/*! + * @brief decomposes frustum values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_lh_no(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + float m00, m11, m20, m21, m22, m32, n, f; + float n_m11, n_m00; + + m00 = proj[0][0]; + m11 = proj[1][1]; + m20 = proj[2][0]; + m21 = proj[2][1]; + m22 =-proj[2][2]; + m32 = proj[3][2]; + + n = m32 / (m22 - 1.0f); + f = m32 / (m22 + 1.0f); + + n_m11 = n / m11; + n_m00 = n / m00; + + *nearZ = n; + *farZ = f; + *bottom = n_m11 * (m21 - 1.0f); + *top = n_m11 * (m21 + 1.0f); + *left = n_m00 * (m20 - 1.0f); + *right = n_m00 * (m20 + 1.0f); +} + +/*! + * @brief decomposes frustum values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * this makes easy to get all values at once + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glm_persp_decompv_lh_no(mat4 proj, float dest[6]) { + glm_persp_decomp_lh_no(proj, &dest[0], &dest[1], &dest[2], + &dest[3], &dest[4], &dest[5]); +} + +/*! + * @brief decomposes left and right values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_x_lh_no(mat4 proj, + float * __restrict left, + float * __restrict right) { + float nearZ, m20, m00, m22; + + m00 = proj[0][0]; + m20 = proj[2][0]; + m22 =-proj[2][2]; + + nearZ = proj[3][2] / (m22 - 1.0f); + *left = nearZ * (m20 - 1.0f) / m00; + *right = nearZ * (m20 + 1.0f) / m00; +} + +/*! + * @brief decomposes top and bottom values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * y stands for y axis (top / botom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glm_persp_decomp_y_lh_no(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + float nearZ, m21, m11, m22; + + m21 = proj[2][1]; + m11 = proj[1][1]; + m22 =-proj[2][2]; + + nearZ = proj[3][2] / (m22 - 1.0f); + *bottom = nearZ * (m21 - 1.0f) / m11; + *top = nearZ * (m21 + 1.0f) / m11; +} + +/*! + * @brief decomposes near and far values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_z_lh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + float m32, m22; + + m32 = proj[3][2]; + m22 =-proj[2][2]; + + *nearZ = m32 / (m22 - 1.0f); + *farZ = m32 / (m22 + 1.0f); +} + +/*! + * @brief decomposes far value of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_far_lh_no(mat4 proj, float * __restrict farZ) { + *farZ = proj[3][2] / (-proj[2][2] + 1.0f); +} + +/*! + * @brief decomposes near value of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glm_persp_decomp_near_lh_no(mat4 proj, float * __restrict nearZ) { + *nearZ = proj[3][2] / (-proj[2][2] - 1.0f); +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @param[out] dest sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +void +glm_persp_sizes_lh_no(mat4 proj, float fovy, vec4 dest) { + float t, a, nearZ, farZ; + + t = 2.0f * tanf(fovy * 0.5f); + a = glm_persp_aspect(proj); + + glm_persp_decomp_z_lh_no(proj, &nearZ, &farZ); + + dest[1] = t * nearZ; + dest[3] = t * farZ; + dest[0] = a * dest[1]; + dest[2] = a * dest[3]; +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * with a left-hand coordinate system and a clip-space of [-1, 1]. + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_fovy_lh_no(mat4 proj) { + return glm_persp_fovy(proj); +} + +/*! + * @brief returns aspect ratio of perspective projection + * with a left-hand coordinate system and a clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_aspect_lh_no(mat4 proj) { + return glm_persp_aspect(proj); +} + +#endif /*cglm_cam_lh_no_h*/ diff --git a/lib/cglm/include/cglm/clipspace/persp_lh_zo.h b/lib/cglm/include/cglm/clipspace/persp_lh_zo.h new file mode 100644 index 0000000..de89643 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/persp_lh_zo.h @@ -0,0 +1,387 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_frustum_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_lh_zo(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_default_lh_zo(float aspect, mat4 dest) + CGLM_INLINE void glm_perspective_resize_lh_zo(float aspect, mat4 proj) + CGLM_INLINE void glm_persp_move_far_lh_zo(mat4 proj, + float deltaFar) + CGLM_INLINE void glm_persp_decomp_lh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ, + float * __restrict top, + float * __restrict bottom, + float * __restrict left, + float * __restrict right) + CGLM_INLINE void glm_persp_decompv_lh_zo(mat4 proj, + float dest[6]) + CGLM_INLINE void glm_persp_decomp_x_lh_zo(mat4 proj, + float * __restrict left, + float * __restrict right) + CGLM_INLINE void glm_persp_decomp_y_lh_zo(mat4 proj, + float * __restrict top, + float * __restrict bottom) + CGLM_INLINE void glm_persp_decomp_z_lh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) + CGLM_INLINE void glm_persp_decomp_far_lh_zo(mat4 proj, float * __restrict farZ) + CGLM_INLINE void glm_persp_decomp_near_lh_zo(mat4 proj, float * __restrict nearZ) + CGLM_INLINE void glm_persp_sizes_lh_zo(mat4 proj, float fovy, vec4 dest) + */ + +#ifndef cglm_persp_lh_zo_h +#define cglm_persp_lh_zo_h + +#include "../common.h" +#include "persp.h" + +/*! + * @brief set up perspective peprojection matrix with a left-hand coordinate + * system and a clip-space of [0, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_frustum_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + float rl, tb, fn, nv; + + glm_mat4_zero(dest); + + rl = 1.0f / (right - left); + tb = 1.0f / (top - bottom); + fn =-1.0f / (farZ - nearZ); + nv = 2.0f * nearZ; + + dest[0][0] = nv * rl; + dest[1][1] = nv * tb; + dest[2][0] = (right + left) * rl; + dest[2][1] = (top + bottom) * tb; + dest[2][2] =-farZ * fn; + dest[2][3] = 1.0f; + dest[3][2] = farZ * nearZ * fn; +} + +/*! + * @brief set up perspective projection matrix with a left-hand coordinate + * system and a clip-space of [0, 1]. + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_lh_zo(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) { + float f, fn; + + glm_mat4_zero(dest); + + f = 1.0f / tanf(fovy * 0.5f); + fn = 1.0f / (nearZ - farZ); + + dest[0][0] = f / aspect; + dest[1][1] = f; + dest[2][2] =-farZ * fn; + dest[2][3] = 1.0f; + dest[3][2] = nearZ * farZ * fn; +} + +/*! + * @brief extend perspective projection matrix's far distance with a + * left-hand coordinate system and a clip-space with depth values + * from zero to one. + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +void +glm_persp_move_far_lh_zo(mat4 proj, float deltaFar) { + float fn, farZ, nearZ, p22, p32; + + p22 = -proj[2][2]; + p32 = proj[3][2]; + + nearZ = p32 / p22; + farZ = p32 / (p22 + 1.0f) + deltaFar; + fn = 1.0f / (nearZ - farZ); + + proj[2][2] = -farZ * fn; + proj[3][2] = nearZ * farZ * fn; +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_default_lh_zo(float aspect, mat4 dest) { + glm_perspective_lh_zo(GLM_PI_4f, aspect, 0.01f, 100.0f, dest); +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * reized + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in, out] proj perspective projection matrix + */ +CGLM_INLINE +void +glm_perspective_resize_lh_zo(float aspect, mat4 proj) { + if (proj[0][0] == 0.0f) + return; + + proj[0][0] = proj[1][1] / aspect; +} + +/*! + * @brief decomposes frustum values of perspective projection + * with angle values with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_lh_zo(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + float m00, m11, m20, m21, m22, m32, n, f; + float n_m11, n_m00; + + m00 = proj[0][0]; + m11 = proj[1][1]; + m20 = proj[2][0]; + m21 = proj[2][1]; + m22 =-proj[2][2]; + m32 = proj[3][2]; + + n = m32 / m22; + f = m32 / (m22 + 1.0f); + + n_m11 = n / m11; + n_m00 = n / m00; + + *nearZ = n; + *farZ = f; + *bottom = n_m11 * (m21 - 1.0f); + *top = n_m11 * (m21 + 1.0f); + *left = n_m00 * (m20 - 1.0f); + *right = n_m00 * (m20 + 1.0f); +} + +/*! + * @brief decomposes frustum values of perspective projection + * with angle values with a left-hand coordinate system and a + * clip-space of [0, 1]. + * this makes easy to get all values at once + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glm_persp_decompv_lh_zo(mat4 proj, float dest[6]) { + glm_persp_decomp_lh_zo(proj, &dest[0], &dest[1], &dest[2], + &dest[3], &dest[4], &dest[5]); +} + +/*! + * @brief decomposes left and right values of perspective projection (ZO). + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_x_lh_zo(mat4 proj, + float * __restrict left, + float * __restrict right) { + float nearZ, m20, m00; + + m00 = proj[0][0]; + m20 = proj[2][0]; + + nearZ = proj[3][2] / (proj[3][3]); + *left = nearZ * (m20 - 1.0f) / m00; + *right = nearZ * (m20 + 1.0f) / m00; +} + +/*! + * @brief decomposes top and bottom values of perspective projection + * with angle values with a left-hand coordinate system and a + * clip-space of [0, 1]. + * y stands for y axis (top / bottom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glm_persp_decomp_y_lh_zo(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + float nearZ, m21, m11; + + m21 = proj[2][1]; + m11 = proj[1][1]; + + nearZ = proj[3][2] / (proj[3][3]); + *bottom = nearZ * (m21 - 1) / m11; + *top = nearZ * (m21 + 1) / m11; +} + +/*! + * @brief decomposes near and far values of perspective projection + * with angle values with a left-hand coordinate system and a + * clip-space of [0, 1]. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_z_lh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + float m32, m22; + + m32 = proj[3][2]; + m22 = -proj[2][2]; + + *nearZ = m32 / m22; + *farZ = m32 / (m22 + 1.0f); +} + +/*! + * @brief decomposes far value of perspective projection + * with angle values with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_far_lh_zo(mat4 proj, float * __restrict farZ) { + *farZ = proj[3][2] / (-proj[2][2] + 1.0f); +} + +/*! + * @brief decomposes near value of perspective projection + * with angle values with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glm_persp_decomp_near_lh_zo(mat4 proj, float * __restrict nearZ) { + *nearZ = proj[3][2] / -proj[2][2]; +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @param[out] dest sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +void +glm_persp_sizes_lh_zo(mat4 proj, float fovy, vec4 dest) { + float t, a, nearZ, farZ; + + t = 2.0f * tanf(fovy * 0.5f); + a = glm_persp_aspect(proj); + + glm_persp_decomp_z_lh_zo(proj, &nearZ, &farZ); + + dest[1] = t * nearZ; + dest[3] = t * farZ; + dest[0] = a * dest[1]; + dest[2] = a * dest[3]; +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * with a left-hand coordinate system and a clip-space of [0, 1]. + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_fovy_lh_zo(mat4 proj) { + return glm_persp_fovy(proj); +} + +/*! + * @brief returns aspect ratio of perspective projection + * with a left-hand coordinate system and a clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_aspect_lh_zo(mat4 proj) { + return glm_persp_aspect(proj); +} + +#endif /*cglm_persp_lh_zo_h*/ diff --git a/lib/cglm/include/cglm/clipspace/persp_rh_no.h b/lib/cglm/include/cglm/clipspace/persp_rh_no.h new file mode 100644 index 0000000..021b7d8 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/persp_rh_no.h @@ -0,0 +1,395 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_frustum_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_rh_no(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_default_rh_no(float aspect, mat4 dest) + CGLM_INLINE void glm_perspective_resize_rh_no(float aspect, mat4 proj) + CGLM_INLINE void glm_persp_move_far_rh_no(mat4 proj, + float deltaFar) + CGLM_INLINE void glm_persp_decomp_rh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ, + float * __restrict top, + float * __restrict bottom, + float * __restrict left, + float * __restrict right) + CGLM_INLINE void glm_persp_decompv_rh_no(mat4 proj, + float dest[6]) + CGLM_INLINE void glm_persp_decomp_x_rh_no(mat4 proj, + float * __restrict left, + float * __restrict right) + CGLM_INLINE void glm_persp_decomp_y_rh_no(mat4 proj, + float * __restrict top, + float * __restrict bottom) + CGLM_INLINE void glm_persp_decomp_z_rh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) + CGLM_INLINE void glm_persp_decomp_far_rh_no(mat4 proj, float * __restrict farZ) + CGLM_INLINE void glm_persp_decomp_near_rh_no(mat4 proj, float * __restrict nearZ) + CGLM_INLINE void glm_persp_sizes_rh_no(mat4 proj, float fovy, vec4 dest) + */ + +#ifndef cglm_persp_rh_no_h +#define cglm_persp_rh_no_h + +#include "../common.h" +#include "persp.h" + +/*! + * @brief set up perspective peprojection matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_frustum_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + float rl, tb, fn, nv; + + glm_mat4_zero(dest); + + rl = 1.0f / (right - left); + tb = 1.0f / (top - bottom); + fn =-1.0f / (farZ - nearZ); + nv = 2.0f * nearZ; + + dest[0][0] = nv * rl; + dest[1][1] = nv * tb; + dest[2][0] = (right + left) * rl; + dest[2][1] = (top + bottom) * tb; + dest[2][2] = (farZ + nearZ) * fn; + dest[2][3] =-1.0f; + dest[3][2] = farZ * nv * fn; +} + +/*! + * @brief set up perspective projection matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_rh_no(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) { + float f, fn; + + glm_mat4_zero(dest); + + f = 1.0f / tanf(fovy * 0.5f); + fn = 1.0f / (nearZ - farZ); + + dest[0][0] = f / aspect; + dest[1][1] = f; + dest[2][2] = (nearZ + farZ) * fn; + dest[2][3] =-1.0f; + dest[3][2] = 2.0f * nearZ * farZ * fn; + +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_default_rh_no(float aspect, mat4 dest) { + glm_perspective_rh_no(GLM_PI_4f, aspect, 0.01f, 100.0f, dest); +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * resized with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in, out] proj perspective projection matrix + */ +CGLM_INLINE +void +glm_perspective_resize_rh_no(float aspect, mat4 proj) { + if (proj[0][0] == 0.0f) + return; + + proj[0][0] = proj[1][1] / aspect; +} + +/*! + * @brief extend perspective projection matrix's far distance + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +void +glm_persp_move_far_rh_no(mat4 proj, float deltaFar) { + float fn, farZ, nearZ, p22, p32; + + p22 = proj[2][2]; + p32 = proj[3][2]; + + nearZ = p32 / (p22 - 1.0f); + farZ = p32 / (p22 + 1.0f) + deltaFar; + fn = 1.0f / (nearZ - farZ); + + proj[2][2] = (farZ + nearZ) * fn; + proj[3][2] = 2.0f * nearZ * farZ * fn; +} + +/*! + * @brief decomposes frustum values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_rh_no(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + float m00, m11, m20, m21, m22, m32, n, f; + float n_m11, n_m00; + + m00 = proj[0][0]; + m11 = proj[1][1]; + m20 = proj[2][0]; + m21 = proj[2][1]; + m22 = proj[2][2]; + m32 = proj[3][2]; + + n = m32 / (m22 - 1.0f); + f = m32 / (m22 + 1.0f); + + n_m11 = n / m11; + n_m00 = n / m00; + + *nearZ = n; + *farZ = f; + *bottom = n_m11 * (m21 - 1.0f); + *top = n_m11 * (m21 + 1.0f); + *left = n_m00 * (m20 - 1.0f); + *right = n_m00 * (m20 + 1.0f); +} + +/*! + * @brief decomposes frustum values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * this makes easy to get all values at once + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glm_persp_decompv_rh_no(mat4 proj, float dest[6]) { + glm_persp_decomp_rh_no(proj, &dest[0], &dest[1], &dest[2], + &dest[3], &dest[4], &dest[5]); +} + +/*! + * @brief decomposes left and right values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_x_rh_no(mat4 proj, + float * __restrict left, + float * __restrict right) { + float nearZ, m20, m00, m22; + + m00 = proj[0][0]; + m20 = proj[2][0]; + m22 = proj[2][2]; + + nearZ = proj[3][2] / (m22 - 1.0f); + *left = nearZ * (m20 - 1.0f) / m00; + *right = nearZ * (m20 + 1.0f) / m00; +} + +/*! + * @brief decomposes top and bottom values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * y stands for y axis (top / botom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glm_persp_decomp_y_rh_no(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + float nearZ, m21, m11, m22; + + m21 = proj[2][1]; + m11 = proj[1][1]; + m22 = proj[2][2]; + + nearZ = proj[3][2] / (m22 - 1.0f); + *bottom = nearZ * (m21 - 1.0f) / m11; + *top = nearZ * (m21 + 1.0f) / m11; +} + +/*! + * @brief decomposes near and far values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_z_rh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + float m32, m22; + + m32 = proj[3][2]; + m22 = proj[2][2]; + + *nearZ = m32 / (m22 - 1.0f); + *farZ = m32 / (m22 + 1.0f); +} + +/*! + * @brief decomposes far value of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_far_rh_no(mat4 proj, float * __restrict farZ) { + *farZ = proj[3][2] / (proj[2][2] + 1.0f); +} + +/*! + * @brief decomposes near value of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glm_persp_decomp_near_rh_no(mat4 proj, float * __restrict nearZ) { + *nearZ = proj[3][2] / (proj[2][2] - 1.0f); +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @param[out] dest sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +void +glm_persp_sizes_rh_no(mat4 proj, float fovy, vec4 dest) { + float t, a, nearZ, farZ; + + t = 2.0f * tanf(fovy * 0.5f); + a = glm_persp_aspect(proj); + + glm_persp_decomp_z_rh_no(proj, &nearZ, &farZ); + + dest[1] = t * nearZ; + dest[3] = t * farZ; + dest[0] = a * dest[1]; + dest[2] = a * dest[3]; +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * with a right-hand coordinate system and a clip-space of [-1, 1]. + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_fovy_rh_no(mat4 proj) { + return glm_persp_fovy(proj); +} + +/*! + * @brief returns aspect ratio of perspective projection + * with a right-hand coordinate system and a clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_aspect_rh_no(mat4 proj) { + return glm_persp_aspect(proj); +} + +#endif /*cglm_cam_rh_no_h*/ diff --git a/lib/cglm/include/cglm/clipspace/persp_rh_zo.h b/lib/cglm/include/cglm/clipspace/persp_rh_zo.h new file mode 100644 index 0000000..ce632b3 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/persp_rh_zo.h @@ -0,0 +1,389 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_frustum_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_rh_zo(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) + CGLM_INLINE void glm_perspective_default_rh_zo(float aspect, mat4 dest) + CGLM_INLINE void glm_perspective_resize_rh_zo(float aspect, mat4 proj) + CGLM_INLINE void glm_persp_move_far_rh_zo(mat4 proj, + float deltaFar) + CGLM_INLINE void glm_persp_decomp_rh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ, + float * __restrict top, + float * __restrict bottom, + float * __restrict left, + float * __restrict right) + CGLM_INLINE void glm_persp_decompv_rh_zo(mat4 proj, + float dest[6]) + CGLM_INLINE void glm_persp_decomp_x_rh_zo(mat4 proj, + float * __restrict left, + float * __restrict right) + CGLM_INLINE void glm_persp_decomp_y_rh_zo(mat4 proj, + float * __restrict top, + float * __restrict bottom) + CGLM_INLINE void glm_persp_decomp_z_rh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) + CGLM_INLINE void glm_persp_decomp_far_rh_zo(mat4 proj, float * __restrict farZ) + CGLM_INLINE void glm_persp_decomp_near_rh_zo(mat4 proj, float * __restrict nearZ) + CGLM_INLINE void glm_persp_sizes_rh_zo(mat4 proj, float fovy, vec4 dest) + */ + +#ifndef cglm_persp_rh_zo_h +#define cglm_persp_rh_zo_h + +#include "../common.h" +#include "persp.h" + +/*! + * @brief set up perspective peprojection matrix with a right-hand coordinate + * system and a clip-space of [0, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_frustum_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + float rl, tb, fn, nv; + + glm_mat4_zero(dest); + + rl = 1.0f / (right - left); + tb = 1.0f / (top - bottom); + fn =-1.0f / (farZ - nearZ); + nv = 2.0f * nearZ; + + dest[0][0] = nv * rl; + dest[1][1] = nv * tb; + dest[2][0] = (right + left) * rl; + dest[2][1] = (top + bottom) * tb; + dest[2][2] = farZ * fn; + dest[2][3] =-1.0f; + dest[3][2] = farZ * nearZ * fn; +} + +/*! + * @brief set up perspective projection matrix with a right-hand coordinate + * system and a clip-space of [0, 1]. + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_rh_zo(float fovy, + float aspect, + float nearZ, + float farZ, + mat4 dest) { + float f, fn; + + glm_mat4_zero(dest); + + f = 1.0f / tanf(fovy * 0.5f); + fn = 1.0f / (nearZ - farZ); + + dest[0][0] = f / aspect; + dest[1][1] = f; + dest[2][2] = farZ * fn; + dest[2][3] =-1.0f; + dest[3][2] = nearZ * farZ * fn; +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_perspective_default_rh_zo(float aspect, mat4 dest) { + glm_perspective_rh_zo(GLM_PI_4f, aspect, 0.01f, 100.0f, dest); +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * resized with a right-hand coordinate system and a clip-space of + * [0, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in, out] proj perspective projection matrix + */ +CGLM_INLINE +void +glm_perspective_resize_rh_zo(float aspect, mat4 proj) { + if (proj[0][0] == 0.0f) + return; + + proj[0][0] = proj[1][1] / aspect; +} + +/*! + * @brief extend perspective projection matrix's far distance with a + * right-hand coordinate system and a clip-space of [0, 1]. + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +void +glm_persp_move_far_rh_zo(mat4 proj, float deltaFar) { + float fn, farZ, nearZ, p22, p32; + + p22 = proj[2][2]; + p32 = proj[3][2]; + + nearZ = p32 / p22; + farZ = p32 / (p22 + 1.0f) + deltaFar; + fn = 1.0f / (nearZ - farZ); + + proj[2][2] = farZ * fn; + proj[3][2] = nearZ * farZ * fn; +} + +/*! + * @brief decomposes frustum values of perspective projection + * with angle values with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_rh_zo(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + float m00, m11, m20, m21, m22, m32, n, f; + float n_m11, n_m00; + + m00 = proj[0][0]; + m11 = proj[1][1]; + m20 = proj[2][0]; + m21 = proj[2][1]; + m22 = proj[2][2]; + m32 = proj[3][2]; + + n = m32 / m22; + f = m32 / (m22 + 1.0f); + + n_m11 = n / m11; + n_m00 = n / m00; + + *nearZ = n; + *farZ = f; + *bottom = n_m11 * (m21 - 1.0f); + *top = n_m11 * (m21 + 1.0f); + *left = n_m00 * (m20 - 1.0f); + *right = n_m00 * (m20 + 1.0f); +} + +/*! + * @brief decomposes frustum values of perspective projection + * with angle values with a right-hand coordinate system and a + * clip-space of [0, 1]. + * this makes easy to get all values at once + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glm_persp_decompv_rh_zo(mat4 proj, float dest[6]) { + glm_persp_decomp_rh_zo(proj, &dest[0], &dest[1], &dest[2], + &dest[3], &dest[4], &dest[5]); +} + +/*! + * @brief decomposes left and right values of perspective projection (ZO). + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glm_persp_decomp_x_rh_zo(mat4 proj, + float * __restrict left, + float * __restrict right) { + float nearZ, m20, m00, m22; + + m00 = proj[0][0]; + m20 = proj[2][0]; + m22 = proj[2][2]; + + nearZ = proj[3][2] / m22; + *left = nearZ * (m20 - 1.0f) / m00; + *right = nearZ * (m20 + 1.0f) / m00; +} + +/*! + * @brief decomposes top and bottom values of perspective projection + * with angle values with a right-hand coordinate system and a + * clip-space of [0, 1]. + * y stands for y axis (top / bottom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glm_persp_decomp_y_rh_zo(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + float nearZ, m21, m11, m22; + + m21 = proj[2][1]; + m11 = proj[1][1]; + m22 = proj[2][2]; + + nearZ = proj[3][2] / m22; + *bottom = nearZ * (m21 - 1) / m11; + *top = nearZ * (m21 + 1) / m11; +} + +/*! + * @brief decomposes near and far values of perspective projection + * with angle values with a right-hand coordinate system and a + * clip-space of [0, 1]. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_z_rh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + float m32, m22; + + m32 = proj[3][2]; + m22 = proj[2][2]; + + *nearZ = m32 / m22; + *farZ = m32 / (m22 + 1.0f); +} + +/*! + * @brief decomposes far value of perspective projection + * with angle values with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glm_persp_decomp_far_rh_zo(mat4 proj, float * __restrict farZ) { + *farZ = proj[3][2] / (proj[2][2] + 1.0f); +} + +/*! + * @brief decomposes near value of perspective projection + * with angle values with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glm_persp_decomp_near_rh_zo(mat4 proj, float * __restrict nearZ) { + *nearZ = proj[3][2] / proj[2][2]; +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @param[out] dest sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +void +glm_persp_sizes_rh_zo(mat4 proj, float fovy, vec4 dest) { + float t, a, nearZ, farZ; + + t = 2.0f * tanf(fovy * 0.5f); + a = glm_persp_aspect(proj); + + glm_persp_decomp_z_rh_zo(proj, &nearZ, &farZ); + + dest[1] = t * nearZ; + dest[3] = t * farZ; + dest[0] = a * dest[1]; + dest[2] = a * dest[3]; +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * with a right-hand coordinate system and a clip-space of [0, 1]. + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_fovy_rh_zo(mat4 proj) { + return glm_persp_fovy(proj); +} + +/*! + * @brief returns aspect ratio of perspective projection + * with a right-hand coordinate system and a clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glm_persp_aspect_rh_zo(mat4 proj) { + return glm_persp_aspect(proj); +} + +#endif /*cglm_persp_rh_zo_h*/ diff --git a/lib/cglm/include/cglm/clipspace/project_no.h b/lib/cglm/include/cglm/clipspace/project_no.h new file mode 100644 index 0000000..71fbc52 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/project_no.h @@ -0,0 +1,109 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_project_no_h +#define cglm_project_no_h + +#include "../common.h" +#include "../vec3.h" +#include "../vec4.h" +#include "../mat4.h" + +/*! + * @brief maps the specified viewport coordinates into specified space [1] + * the matrix should contain projection matrix. + * + * if you don't have ( and don't want to have ) an inverse matrix then use + * glm_unproject version. You may use existing inverse of matrix in somewhere + * else, this is why glm_unprojecti exists to save save inversion cost + * + * [1] space: + * 1- if m = invProj: View Space + * 2- if m = invViewProj: World Space + * 3- if m = invMVP: Object Space + * + * You probably want to map the coordinates into object space + * so use invMVP as m + * + * Computing viewProj: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * glm_mat4_inv(viewProj, invMVP); + * + * @param[in] pos point/position in viewport coordinates + * @param[in] invMat matrix (see brief) + * @param[in] vp viewport as [x, y, width, height] + * @param[out] dest unprojected coordinates + */ +CGLM_INLINE +void +glm_unprojecti_no(vec3 pos, mat4 invMat, vec4 vp, vec3 dest) { + vec4 v; + + v[0] = 2.0f * (pos[0] - vp[0]) / vp[2] - 1.0f; + v[1] = 2.0f * (pos[1] - vp[1]) / vp[3] - 1.0f; + v[2] = 2.0f * pos[2] - 1.0f; + v[3] = 1.0f; + + glm_mat4_mulv(invMat, v, v); + glm_vec4_scale(v, 1.0f / v[3], v); + glm_vec3(v, dest); +} + +/*! + * @brief map object coordinates to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] pos object coordinates + * @param[in] m MVP matrix + * @param[in] vp viewport as [x, y, width, height] + * @param[out] dest projected coordinates + */ +CGLM_INLINE +void +glm_project_no(vec3 pos, mat4 m, vec4 vp, vec3 dest) { + CGLM_ALIGN(16) vec4 pos4; + + glm_vec4(pos, 1.0f, pos4); + + glm_mat4_mulv(m, pos4, pos4); + glm_vec4_scale(pos4, 1.0f / pos4[3], pos4); /* pos = pos / pos.w */ + glm_vec4_scale(pos4, 0.5f, pos4); + glm_vec4_adds(pos4, 0.5f, pos4); + + dest[0] = pos4[0] * vp[2] + vp[0]; + dest[1] = pos4[1] * vp[3] + vp[1]; + dest[2] = pos4[2]; +} + +/*! + * @brief map object's z coordinate to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] v object coordinates + * @param[in] m MVP matrix + * + * @returns projected z coordinate + */ +CGLM_INLINE +float +glm_project_z_no(vec3 v, mat4 m) { + float z, w; + + z = m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2] + m[3][2]; + w = m[0][3] * v[0] + m[1][3] * v[1] + m[2][3] * v[2] + m[3][3]; + + return 0.5f * (z / w) + 0.5f; +} + +#endif /* cglm_project_no_h */ diff --git a/lib/cglm/include/cglm/clipspace/project_zo.h b/lib/cglm/include/cglm/clipspace/project_zo.h new file mode 100644 index 0000000..dc32078 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/project_zo.h @@ -0,0 +1,111 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_project_zo_h +#define cglm_project_zo_h + +#include "../common.h" +#include "../vec3.h" +#include "../vec4.h" +#include "../mat4.h" + +/*! + * @brief maps the specified viewport coordinates into specified space [1] + * the matrix should contain projection matrix. + * + * if you don't have ( and don't want to have ) an inverse matrix then use + * glm_unproject version. You may use existing inverse of matrix in somewhere + * else, this is why glm_unprojecti exists to save save inversion cost + * + * [1] space: + * 1- if m = invProj: View Space + * 2- if m = invViewProj: World Space + * 3- if m = invMVP: Object Space + * + * You probably want to map the coordinates into object space + * so use invMVP as m + * + * Computing viewProj: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * glm_mat4_inv(viewProj, invMVP); + * + * @param[in] pos point/position in viewport coordinates + * @param[in] invMat matrix (see brief) + * @param[in] vp viewport as [x, y, width, height] + * @param[out] dest unprojected coordinates + */ +CGLM_INLINE +void +glm_unprojecti_zo(vec3 pos, mat4 invMat, vec4 vp, vec3 dest) { + vec4 v; + + v[0] = 2.0f * (pos[0] - vp[0]) / vp[2] - 1.0f; + v[1] = 2.0f * (pos[1] - vp[1]) / vp[3] - 1.0f; + v[2] = pos[2]; + v[3] = 1.0f; + + glm_mat4_mulv(invMat, v, v); + glm_vec4_scale(v, 1.0f / v[3], v); + glm_vec3(v, dest); +} + +/*! + * @brief map object coordinates to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] pos object coordinates + * @param[in] m MVP matrix + * @param[in] vp viewport as [x, y, width, height] + * @param[out] dest projected coordinates + */ +CGLM_INLINE +void +glm_project_zo(vec3 pos, mat4 m, vec4 vp, vec3 dest) { + CGLM_ALIGN(16) vec4 pos4; + + glm_vec4(pos, 1.0f, pos4); + + glm_mat4_mulv(m, pos4, pos4); + glm_vec4_scale(pos4, 1.0f / pos4[3], pos4); /* pos = pos / pos.w */ + + dest[2] = pos4[2]; + + glm_vec4_scale(pos4, 0.5f, pos4); + glm_vec4_adds(pos4, 0.5f, pos4); + + dest[0] = pos4[0] * vp[2] + vp[0]; + dest[1] = pos4[1] * vp[3] + vp[1]; +} + +/*! + * @brief map object's z coordinate to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] v object coordinates + * @param[in] m MVP matrix + * + * @returns projected z coordinate + */ +CGLM_INLINE +float +glm_project_z_zo(vec3 v, mat4 m) { + float z, w; + + z = m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2] + m[3][2]; + w = m[0][3] * v[0] + m[1][3] * v[1] + m[2][3] * v[2] + m[3][3]; + + return z / w; +} + +#endif /* cglm_project_zo_h */ diff --git a/lib/cglm/include/cglm/clipspace/view_lh.h b/lib/cglm/include/cglm/clipspace/view_lh.h new file mode 100644 index 0000000..5667694 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/view_lh.h @@ -0,0 +1,99 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_lookat_lh(vec3 eye, vec3 center, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_lh(vec3 eye, vec3 dir, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_anyup_lh(vec3 eye, vec3 dir, mat4 dest) + */ + +#ifndef cglm_view_lh_h +#define cglm_view_lh_h + +#include "../common.h" +#include "../plane.h" + +/*! + * @brief set up view matrix (LH) + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_lookat_lh(vec3 eye, vec3 center, vec3 up, mat4 dest) { + CGLM_ALIGN(8) vec3 f, u, s; + + glm_vec3_sub(center, eye, f); + glm_vec3_normalize(f); + + glm_vec3_crossn(up, f, s); + glm_vec3_cross(f, s, u); + + dest[0][0] = s[0]; + dest[0][1] = u[0]; + dest[0][2] = f[0]; + dest[1][0] = s[1]; + dest[1][1] = u[1]; + dest[1][2] = f[1]; + dest[2][0] = s[2]; + dest[2][1] = u[2]; + dest[2][2] = f[2]; + dest[3][0] =-glm_vec3_dot(s, eye); + dest[3][1] =-glm_vec3_dot(u, eye); + dest[3][2] =-glm_vec3_dot(f, eye); + dest[0][3] = dest[1][3] = dest[2][3] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief set up view matrix with left handed coordinate system + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_lh(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + CGLM_ALIGN(8) vec3 target; + glm_vec3_add(eye, dir, target); + glm_lookat_lh(eye, target, up, dest); +} + +/*! + * @brief set up view matrix with left handed coordinate system + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_anyup_lh(vec3 eye, vec3 dir, mat4 dest) { + CGLM_ALIGN(8) vec3 up; + glm_vec3_ortho(dir, up); + glm_look_lh(eye, dir, up, dest); +} + +#endif /*cglm_view_lh_h*/ diff --git a/lib/cglm/include/cglm/clipspace/view_lh_no.h b/lib/cglm/include/cglm/clipspace/view_lh_no.h new file mode 100644 index 0000000..454d903 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/view_lh_no.h @@ -0,0 +1,74 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_lookat_lh_no(vec3 eye, vec3 center, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_lh_no(vec3 eye, vec3 dir, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_anyup_lh_no(vec3 eye, vec3 dir, mat4 dest) + */ + +#ifndef cglm_view_lh_no_h +#define cglm_view_lh_no_h + +#include "../common.h" +#include "view_lh.h" + +/*! + * @brief set up view matrix with left handed coordinate system. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_lookat_lh_no(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat_lh(eye, center, up, dest); +} + +/*! + * @brief set up view matrix with left handed coordinate system. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_lh_no(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look_lh(eye, dir, up, dest); +} + +/*! + * @brief set up view matrix with left handed coordinate system. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_anyup_lh_no(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup_lh(eye, dir, dest); +} + +#endif /*cglm_view_lh_no_h*/ diff --git a/lib/cglm/include/cglm/clipspace/view_lh_zo.h b/lib/cglm/include/cglm/clipspace/view_lh_zo.h new file mode 100644 index 0000000..6b0c4d1 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/view_lh_zo.h @@ -0,0 +1,74 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_lookat_lh_zo(vec3 eye, vec3 center, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_lh_zo(vec3 eye, vec3 dir, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_anyup_lh_zo(vec3 eye, vec3 dir, mat4 dest) + */ + +#ifndef cglm_view_lh_zo_h +#define cglm_view_lh_zo_h + +#include "../common.h" +#include "view_lh.h" + +/*! + * @brief set up view matrix with left handed coordinate system. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_lookat_lh_zo(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat_lh(eye, center, up, dest); +} + +/*! + * @brief set up view matrix with left handed coordinate system. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_lh_zo(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look_lh(eye, dir, up, dest); +} + +/*! + * @brief set up view matrix with left handed coordinate system. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_anyup_lh_zo(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup_lh(eye, dir, dest); +} + +#endif /*cglm_view_lh_zo_h*/ diff --git a/lib/cglm/include/cglm/clipspace/view_rh.h b/lib/cglm/include/cglm/clipspace/view_rh.h new file mode 100644 index 0000000..51ec916 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/view_rh.h @@ -0,0 +1,99 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_lookat_rh(vec3 eye, vec3 center, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_rh(vec3 eye, vec3 dir, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_anyup_rh(vec3 eye, vec3 dir, mat4 dest) + */ + +#ifndef cglm_view_rh_h +#define cglm_view_rh_h + +#include "../common.h" +#include "../plane.h" + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_lookat_rh(vec3 eye, vec3 center, vec3 up, mat4 dest) { + CGLM_ALIGN(8) vec3 f, u, s; + + glm_vec3_sub(center, eye, f); + glm_vec3_normalize(f); + + glm_vec3_crossn(f, up, s); + glm_vec3_cross(s, f, u); + + dest[0][0] = s[0]; + dest[0][1] = u[0]; + dest[0][2] =-f[0]; + dest[1][0] = s[1]; + dest[1][1] = u[1]; + dest[1][2] =-f[1]; + dest[2][0] = s[2]; + dest[2][1] = u[2]; + dest[2][2] =-f[2]; + dest[3][0] =-glm_vec3_dot(s, eye); + dest[3][1] =-glm_vec3_dot(u, eye); + dest[3][2] = glm_vec3_dot(f, eye); + dest[0][3] = dest[1][3] = dest[2][3] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_rh(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + CGLM_ALIGN(8) vec3 target; + glm_vec3_add(eye, dir, target); + glm_lookat_rh(eye, target, up, dest); +} + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_anyup_rh(vec3 eye, vec3 dir, mat4 dest) { + CGLM_ALIGN(8) vec3 up; + glm_vec3_ortho(dir, up); + glm_look_rh(eye, dir, up, dest); +} + +#endif /*cglm_view_rh_h*/ diff --git a/lib/cglm/include/cglm/clipspace/view_rh_no.h b/lib/cglm/include/cglm/clipspace/view_rh_no.h new file mode 100644 index 0000000..ca36d30 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/view_rh_no.h @@ -0,0 +1,74 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_lookat_rh_no(vec3 eye, vec3 center, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_rh_no(vec3 eye, vec3 dir, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_anyup_rh_no(vec3 eye, vec3 dir, mat4 dest) + */ + +#ifndef cglm_view_rh_no_h +#define cglm_view_rh_no_h + +#include "../common.h" +#include "view_rh.h" + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_lookat_rh_no(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat_rh(eye, center, up, dest); +} + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_rh_no(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look_rh(eye, dir, up, dest); +} + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_anyup_rh_no(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup_rh(eye, dir, dest); +} + +#endif /*cglm_view_rh_no_h*/ diff --git a/lib/cglm/include/cglm/clipspace/view_rh_zo.h b/lib/cglm/include/cglm/clipspace/view_rh_zo.h new file mode 100644 index 0000000..1ad5c91 --- /dev/null +++ b/lib/cglm/include/cglm/clipspace/view_rh_zo.h @@ -0,0 +1,74 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_lookat_rh_zo(vec3 eye, vec3 center, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_rh_zo(vec3 eye, vec3 dir, vec3 up, mat4 dest) + CGLM_INLINE void glm_look_anyup_rh_zo(vec3 eye, vec3 dir, mat4 dest) + */ + +#ifndef cglm_view_rh_zo_h +#define cglm_view_rh_zo_h + +#include "../common.h" +#include "view_rh.h" + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_lookat_rh_zo(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat_rh(eye, center, up, dest); +} + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_rh_zo(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look_rh(eye, dir, up, dest); +} + +/*! + * @brief set up view matrix with right handed coordinate system. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_look_anyup_rh_zo(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup_rh(eye, dir, dest); +} + +#endif /*cglm_view_rh_zo_h*/ diff --git a/lib/cglm/include/cglm/color.h b/lib/cglm/include/cglm/color.h new file mode 100644 index 0000000..69566ad --- /dev/null +++ b/lib/cglm/include/cglm/color.h @@ -0,0 +1,26 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_color_h +#define cglm_color_h + +#include "common.h" +#include "vec3.h" + +/*! + * @brief averages the color channels into one value + * + * @param[in] rgb RGB color + */ +CGLM_INLINE +float +glm_luminance(vec3 rgb) { + vec3 l = {0.212671f, 0.715160f, 0.072169f}; + return glm_dot(rgb, l); +} + +#endif /* cglm_color_h */ diff --git a/lib/cglm/include/cglm/common.h b/lib/cglm/include/cglm/common.h new file mode 100644 index 0000000..4d2e199 --- /dev/null +++ b/lib/cglm/include/cglm/common.h @@ -0,0 +1,84 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_common_h +#define cglm_common_h + +#ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES /* for windows */ +#endif + +#ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS /* for windows */ +#endif + +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +# ifdef CGLM_STATIC +# define CGLM_EXPORT +# elif defined(CGLM_EXPORTS) +# define CGLM_EXPORT __declspec(dllexport) +# else +# define CGLM_EXPORT __declspec(dllimport) +# endif +# define CGLM_INLINE __forceinline +#else +# define CGLM_EXPORT __attribute__((visibility("default"))) +# define CGLM_INLINE static inline __attribute((always_inline)) +#endif + +#define GLM_SHUFFLE4(z, y, x, w) (((z) << 6) | ((y) << 4) | ((x) << 2) | (w)) +#define GLM_SHUFFLE3(z, y, x) (((z) << 4) | ((y) << 2) | (x)) + +#include "types.h" +#include "simd/intrin.h" + +#ifndef CGLM_USE_DEFAULT_EPSILON +# ifndef GLM_FLT_EPSILON +# define GLM_FLT_EPSILON 1e-5 +# endif +#else +# define GLM_FLT_EPSILON FLT_EPSILON +#endif + +/* + * Clip control: define CGLM_FORCE_DEPTH_ZERO_TO_ONE before including + * CGLM to use a clip space between 0 to 1. + * Coordinate system: define CGLM_FORCE_LEFT_HANDED before including + * CGLM to use the left handed coordinate system by default. + */ + +#define CGLM_CLIP_CONTROL_ZO_BIT (1 << 0) /* ZERO_TO_ONE */ +#define CGLM_CLIP_CONTROL_NO_BIT (1 << 1) /* NEGATIVE_ONE_TO_ONE */ +#define CGLM_CLIP_CONTROL_LH_BIT (1 << 2) /* LEFT_HANDED, For DirectX, Metal, Vulkan */ +#define CGLM_CLIP_CONTROL_RH_BIT (1 << 3) /* RIGHT_HANDED, For OpenGL, default in GLM */ + +#define CGLM_CLIP_CONTROL_LH_ZO (CGLM_CLIP_CONTROL_LH_BIT | CGLM_CLIP_CONTROL_ZO_BIT) +#define CGLM_CLIP_CONTROL_LH_NO (CGLM_CLIP_CONTROL_LH_BIT | CGLM_CLIP_CONTROL_NO_BIT) +#define CGLM_CLIP_CONTROL_RH_ZO (CGLM_CLIP_CONTROL_RH_BIT | CGLM_CLIP_CONTROL_ZO_BIT) +#define CGLM_CLIP_CONTROL_RH_NO (CGLM_CLIP_CONTROL_RH_BIT | CGLM_CLIP_CONTROL_NO_BIT) + +#ifdef CGLM_FORCE_DEPTH_ZERO_TO_ONE +# ifdef CGLM_FORCE_LEFT_HANDED +# define CGLM_CONFIG_CLIP_CONTROL CGLM_CLIP_CONTROL_LH_ZO +# else +# define CGLM_CONFIG_CLIP_CONTROL CGLM_CLIP_CONTROL_RH_ZO +# endif +#else +# ifdef CGLM_FORCE_LEFT_HANDED +# define CGLM_CONFIG_CLIP_CONTROL CGLM_CLIP_CONTROL_LH_NO +# else +# define CGLM_CONFIG_CLIP_CONTROL CGLM_CLIP_CONTROL_RH_NO +# endif +#endif + +#endif /* cglm_common_h */ diff --git a/lib/cglm/include/cglm/curve.h b/lib/cglm/include/cglm/curve.h new file mode 100644 index 0000000..5033be5 --- /dev/null +++ b/lib/cglm/include/cglm/curve.h @@ -0,0 +1,40 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_curve_h +#define cglm_curve_h + +#include "common.h" +#include "vec4.h" +#include "mat4.h" + +/*! + * @brief helper function to calculate S*M*C multiplication for curves + * + * This function does not encourage you to use SMC, + * instead it is a helper if you use SMC. + * + * if you want to specify S as vector then use more generic glm_mat4_rmc() func. + * + * Example usage: + * B(s) = glm_smc(s, GLM_BEZIER_MAT, (vec4){p0, c0, c1, p1}) + * + * @param[in] s parameter between 0 and 1 (this will be [s3, s2, s, 1]) + * @param[in] m basis matrix + * @param[in] c position/control vector + * + * @return B(s) + */ +CGLM_INLINE +float +glm_smc(float s, mat4 m, vec4 c) { + vec4 vs; + glm_vec4_cubic(s, vs); + return glm_mat4_rmc(vs, m, c); +} + +#endif /* cglm_curve_h */ diff --git a/lib/cglm/include/cglm/ease.h b/lib/cglm/include/cglm/ease.h new file mode 100644 index 0000000..b40b75e --- /dev/null +++ b/lib/cglm/include/cglm/ease.h @@ -0,0 +1,317 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_ease_h +#define cglm_ease_h + +#include "common.h" + +CGLM_INLINE +float +glm_ease_linear(float t) { + return t; +} + +CGLM_INLINE +float +glm_ease_sine_in(float t) { + return sinf((t - 1.0f) * GLM_PI_2f) + 1.0f; +} + +CGLM_INLINE +float +glm_ease_sine_out(float t) { + return sinf(t * GLM_PI_2f); +} + +CGLM_INLINE +float +glm_ease_sine_inout(float t) { + return 0.5f * (1.0f - cosf(t * GLM_PIf)); +} + +CGLM_INLINE +float +glm_ease_quad_in(float t) { + return t * t; +} + +CGLM_INLINE +float +glm_ease_quad_out(float t) { + return -(t * (t - 2.0f)); +} + +CGLM_INLINE +float +glm_ease_quad_inout(float t) { + float tt; + + tt = t * t; + if (t < 0.5f) + return 2.0f * tt; + + return (-2.0f * tt) + (4.0f * t) - 1.0f; +} + +CGLM_INLINE +float +glm_ease_cubic_in(float t) { + return t * t * t; +} + +CGLM_INLINE +float +glm_ease_cubic_out(float t) { + float f; + f = t - 1.0f; + return f * f * f + 1.0f; +} + +CGLM_INLINE +float +glm_ease_cubic_inout(float t) { + float f; + + if (t < 0.5f) + return 4.0f * t * t * t; + + f = 2.0f * t - 2.0f; + + return 0.5f * f * f * f + 1.0f; +} + +CGLM_INLINE +float +glm_ease_quart_in(float t) { + float f; + f = t * t; + return f * f; +} + +CGLM_INLINE +float +glm_ease_quart_out(float t) { + float f; + + f = t - 1.0f; + + return f * f * f * (1.0f - t) + 1.0f; +} + +CGLM_INLINE +float +glm_ease_quart_inout(float t) { + float f, g; + + if (t < 0.5f) { + f = t * t; + return 8.0f * f * f; + } + + f = t - 1.0f; + g = f * f; + + return -8.0f * g * g + 1.0f; +} + +CGLM_INLINE +float +glm_ease_quint_in(float t) { + float f; + f = t * t; + return f * f * t; +} + +CGLM_INLINE +float +glm_ease_quint_out(float t) { + float f, g; + + f = t - 1.0f; + g = f * f; + + return g * g * f + 1.0f; +} + +CGLM_INLINE +float +glm_ease_quint_inout(float t) { + float f, g; + + if (t < 0.5f) { + f = t * t; + return 16.0f * f * f * t; + } + + f = 2.0f * t - 2.0f; + g = f * f; + + return 0.5f * g * g * f + 1.0f; +} + +CGLM_INLINE +float +glm_ease_exp_in(float t) { + if (t == 0.0f) + return t; + + return powf(2.0f, 10.0f * (t - 1.0f)); +} + +CGLM_INLINE +float +glm_ease_exp_out(float t) { + if (t == 1.0f) + return t; + + return 1.0f - powf(2.0f, -10.0f * t); +} + +CGLM_INLINE +float +glm_ease_exp_inout(float t) { + if (t == 0.0f || t == 1.0f) + return t; + + if (t < 0.5f) + return 0.5f * powf(2.0f, (20.0f * t) - 10.0f); + + return -0.5f * powf(2.0f, (-20.0f * t) + 10.0f) + 1.0f; +} + +CGLM_INLINE +float +glm_ease_circ_in(float t) { + return 1.0f - sqrtf(1.0f - (t * t)); +} + +CGLM_INLINE +float +glm_ease_circ_out(float t) { + return sqrtf((2.0f - t) * t); +} + +CGLM_INLINE +float +glm_ease_circ_inout(float t) { + if (t < 0.5f) + return 0.5f * (1.0f - sqrtf(1.0f - 4.0f * (t * t))); + + return 0.5f * (sqrtf(-((2.0f * t) - 3.0f) * ((2.0f * t) - 1.0f)) + 1.0f); +} + +CGLM_INLINE +float +glm_ease_back_in(float t) { + float o, z; + + o = 1.70158f; + z = ((o + 1.0f) * t) - o; + + return t * t * z; +} + +CGLM_INLINE +float +glm_ease_back_out(float t) { + float o, z, n; + + o = 1.70158f; + n = t - 1.0f; + z = (o + 1.0f) * n + o; + + return n * n * z + 1.0f; +} + +CGLM_INLINE +float +glm_ease_back_inout(float t) { + float o, z, n, m, s, x; + + o = 1.70158f; + s = o * 1.525f; + x = 0.5; + n = t / 0.5f; + + if (n < 1.0f) { + z = (s + 1) * n - s; + m = n * n * z; + return x * m; + } + + n -= 2.0f; + z = (s + 1.0f) * n + s; + m = (n * n * z) + 2; + + return x * m; +} + +CGLM_INLINE +float +glm_ease_elast_in(float t) { + return sinf(13.0f * GLM_PI_2f * t) * powf(2.0f, 10.0f * (t - 1.0f)); +} + +CGLM_INLINE +float +glm_ease_elast_out(float t) { + return sinf(-13.0f * GLM_PI_2f * (t + 1.0f)) * powf(2.0f, -10.0f * t) + 1.0f; +} + +CGLM_INLINE +float +glm_ease_elast_inout(float t) { + float a; + + a = 2.0f * t; + + if (t < 0.5f) + return 0.5f * sinf(13.0f * GLM_PI_2f * a) + * powf(2.0f, 10.0f * (a - 1.0f)); + + return 0.5f * (sinf(-13.0f * GLM_PI_2f * a) + * powf(2.0f, -10.0f * (a - 1.0f)) + 2.0f); +} + +CGLM_INLINE +float +glm_ease_bounce_out(float t) { + float tt; + + tt = t * t; + + if (t < (4.0f / 11.0f)) + return (121.0f * tt) / 16.0f; + + if (t < 8.0f / 11.0f) + return ((363.0f / 40.0f) * tt) - ((99.0f / 10.0f) * t) + (17.0f / 5.0f); + + if (t < (9.0f / 10.0f)) + return (4356.0f / 361.0f) * tt + - (35442.0f / 1805.0f) * t + + (16061.0f / 1805.0f); + + return ((54.0f / 5.0f) * tt) - ((513.0f / 25.0f) * t) + (268.0f / 25.0f); +} + +CGLM_INLINE +float +glm_ease_bounce_in(float t) { + return 1.0f - glm_ease_bounce_out(1.0f - t); +} + +CGLM_INLINE +float +glm_ease_bounce_inout(float t) { + if (t < 0.5f) + return 0.5f * (1.0f - glm_ease_bounce_out(t * 2.0f)); + + return 0.5f * glm_ease_bounce_out(t * 2.0f - 1.0f) + 0.5f; +} + +#endif /* cglm_ease_h */ diff --git a/lib/cglm/include/cglm/euler.h b/lib/cglm/include/cglm/euler.h new file mode 100644 index 0000000..725a205 --- /dev/null +++ b/lib/cglm/include/cglm/euler.h @@ -0,0 +1,451 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + NOTE: + angles must be passed as [X-Angle, Y-Angle, Z-angle] order + For instance you don't pass angles as [Z-Angle, X-Angle, Y-angle] to + glm_euler_zxy funciton, All RELATED functions accept angles same order + which is [X, Y, Z]. + */ + +/* + Types: + enum glm_euler_seq + + Functions: + CGLM_INLINE glm_euler_seq glm_euler_order(int newOrder[3]); + CGLM_INLINE void glm_euler_angles(mat4 m, vec3 dest); + CGLM_INLINE void glm_euler(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_xyz(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_zyx(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_zxy(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_xzy(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_yzx(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_yxz(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_by_order(vec3 angles, + glm_euler_seq ord, + mat4 dest); + */ + +#ifndef cglm_euler_h +#define cglm_euler_h + +#include "common.h" + +/*! + * if you have axis order like vec3 orderVec = [0, 1, 2] or [0, 2, 1]... + * vector then you can convert it to this enum by doing this: + * @code + * glm_euler_seq order; + * order = orderVec[0] | orderVec[1] << 2 | orderVec[2] << 4; + * @endcode + * you may need to explicit cast if required + */ +typedef enum glm_euler_seq { + GLM_EULER_XYZ = 0 << 0 | 1 << 2 | 2 << 4, + GLM_EULER_XZY = 0 << 0 | 2 << 2 | 1 << 4, + GLM_EULER_YZX = 1 << 0 | 2 << 2 | 0 << 4, + GLM_EULER_YXZ = 1 << 0 | 0 << 2 | 2 << 4, + GLM_EULER_ZXY = 2 << 0 | 0 << 2 | 1 << 4, + GLM_EULER_ZYX = 2 << 0 | 1 << 2 | 0 << 4 +} glm_euler_seq; + +CGLM_INLINE +glm_euler_seq +glm_euler_order(int ord[3]) { + return (glm_euler_seq)(ord[0] << 0 | ord[1] << 2 | ord[2] << 4); +} + +/*! + * @brief extract euler angles (in radians) using xyz order + * + * @param[in] m affine transform + * @param[out] dest angles vector [x, y, z] + */ +CGLM_INLINE +void +glm_euler_angles(mat4 m, vec3 dest) { + float m00, m01, m10, m11, m20, m21, m22; + float thetaX, thetaY, thetaZ; + + m00 = m[0][0]; m10 = m[1][0]; m20 = m[2][0]; + m01 = m[0][1]; m11 = m[1][1]; m21 = m[2][1]; + m22 = m[2][2]; + + if (m20 < 1.0f) { + if (m20 > -1.0f) { + thetaY = asinf(m20); + thetaX = atan2f(-m21, m22); + thetaZ = atan2f(-m10, m00); + } else { /* m20 == -1 */ + /* Not a unique solution */ + thetaY = -GLM_PI_2f; + thetaX = -atan2f(m01, m11); + thetaZ = 0.0f; + } + } else { /* m20 == +1 */ + thetaY = GLM_PI_2f; + thetaX = atan2f(m01, m11); + thetaZ = 0.0f; + } + + dest[0] = thetaX; + dest[1] = thetaY; + dest[2] = thetaZ; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[out] dest rotation matrix + */ +CGLM_INLINE +void +glm_euler_xyz(vec3 angles, mat4 dest) { + float cx, cy, cz, + sx, sy, sz, czsx, cxcz, sysz; + + sx = sinf(angles[0]); cx = cosf(angles[0]); + sy = sinf(angles[1]); cy = cosf(angles[1]); + sz = sinf(angles[2]); cz = cosf(angles[2]); + + czsx = cz * sx; + cxcz = cx * cz; + sysz = sy * sz; + + dest[0][0] = cy * cz; + dest[0][1] = czsx * sy + cx * sz; + dest[0][2] = -cxcz * sy + sx * sz; + dest[1][0] = -cy * sz; + dest[1][1] = cxcz - sx * sysz; + dest[1][2] = czsx + cx * sysz; + dest[2][0] = sy; + dest[2][1] = -cy * sx; + dest[2][2] = cx * cy; + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[out] dest rotation matrix + */ +CGLM_INLINE +void +glm_euler(vec3 angles, mat4 dest) { + glm_euler_xyz(angles, dest); +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[out] dest rotation matrix + */ +CGLM_INLINE +void +glm_euler_xzy(vec3 angles, mat4 dest) { + float cx, cy, cz, + sx, sy, sz, sxsy, cysx, cxsy, cxcy; + + sx = sinf(angles[0]); cx = cosf(angles[0]); + sy = sinf(angles[1]); cy = cosf(angles[1]); + sz = sinf(angles[2]); cz = cosf(angles[2]); + + sxsy = sx * sy; + cysx = cy * sx; + cxsy = cx * sy; + cxcy = cx * cy; + + dest[0][0] = cy * cz; + dest[0][1] = sxsy + cxcy * sz; + dest[0][2] = -cxsy + cysx * sz; + dest[1][0] = -sz; + dest[1][1] = cx * cz; + dest[1][2] = cz * sx; + dest[2][0] = cz * sy; + dest[2][1] = -cysx + cxsy * sz; + dest[2][2] = cxcy + sxsy * sz; + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[out] dest rotation matrix + */ +CGLM_INLINE +void +glm_euler_yxz(vec3 angles, mat4 dest) { + float cx, cy, cz, + sx, sy, sz, cycz, sysz, czsy, cysz; + + sx = sinf(angles[0]); cx = cosf(angles[0]); + sy = sinf(angles[1]); cy = cosf(angles[1]); + sz = sinf(angles[2]); cz = cosf(angles[2]); + + cycz = cy * cz; + sysz = sy * sz; + czsy = cz * sy; + cysz = cy * sz; + + dest[0][0] = cycz + sx * sysz; + dest[0][1] = cx * sz; + dest[0][2] = -czsy + cysz * sx; + dest[1][0] = -cysz + czsy * sx; + dest[1][1] = cx * cz; + dest[1][2] = cycz * sx + sysz; + dest[2][0] = cx * sy; + dest[2][1] = -sx; + dest[2][2] = cx * cy; + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[out] dest rotation matrix + */ +CGLM_INLINE +void +glm_euler_yzx(vec3 angles, mat4 dest) { + float cx, cy, cz, + sx, sy, sz, sxsy, cxcy, cysx, cxsy; + + sx = sinf(angles[0]); cx = cosf(angles[0]); + sy = sinf(angles[1]); cy = cosf(angles[1]); + sz = sinf(angles[2]); cz = cosf(angles[2]); + + sxsy = sx * sy; + cxcy = cx * cy; + cysx = cy * sx; + cxsy = cx * sy; + + dest[0][0] = cy * cz; + dest[0][1] = sz; + dest[0][2] = -cz * sy; + dest[1][0] = sxsy - cxcy * sz; + dest[1][1] = cx * cz; + dest[1][2] = cysx + cxsy * sz; + dest[2][0] = cxsy + cysx * sz; + dest[2][1] = -cz * sx; + dest[2][2] = cxcy - sxsy * sz; + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[out] dest rotation matrix + */ +CGLM_INLINE +void +glm_euler_zxy(vec3 angles, mat4 dest) { + float cx, cy, cz, + sx, sy, sz, cycz, sxsy, cysz; + + sx = sinf(angles[0]); cx = cosf(angles[0]); + sy = sinf(angles[1]); cy = cosf(angles[1]); + sz = sinf(angles[2]); cz = cosf(angles[2]); + + cycz = cy * cz; + sxsy = sx * sy; + cysz = cy * sz; + + dest[0][0] = cycz - sxsy * sz; + dest[0][1] = cz * sxsy + cysz; + dest[0][2] = -cx * sy; + dest[1][0] = -cx * sz; + dest[1][1] = cx * cz; + dest[1][2] = sx; + dest[2][0] = cz * sy + cysz * sx; + dest[2][1] = -cycz * sx + sy * sz; + dest[2][2] = cx * cy; + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[out] dest rotation matrix + */ +CGLM_INLINE +void +glm_euler_zyx(vec3 angles, mat4 dest) { + float cx, cy, cz, + sx, sy, sz, czsx, cxcz, sysz; + + sx = sinf(angles[0]); cx = cosf(angles[0]); + sy = sinf(angles[1]); cy = cosf(angles[1]); + sz = sinf(angles[2]); cz = cosf(angles[2]); + + czsx = cz * sx; + cxcz = cx * cz; + sysz = sy * sz; + + dest[0][0] = cy * cz; + dest[0][1] = cy * sz; + dest[0][2] = -sy; + dest[1][0] = czsx * sy - cx * sz; + dest[1][1] = cxcz + sx * sysz; + dest[1][2] = cy * sx; + dest[2][0] = cxcz * sy + sx * sz; + dest[2][1] = -czsx + cx * sysz; + dest[2][2] = cx * cy; + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[in] ord euler order + * @param[out] dest rotation matrix + */ +CGLM_INLINE +void +glm_euler_by_order(vec3 angles, glm_euler_seq ord, mat4 dest) { + float cx, cy, cz, + sx, sy, sz; + + float cycz, cysz, cysx, cxcy, + czsy, cxcz, czsx, cxsz, + sysz; + + sx = sinf(angles[0]); cx = cosf(angles[0]); + sy = sinf(angles[1]); cy = cosf(angles[1]); + sz = sinf(angles[2]); cz = cosf(angles[2]); + + cycz = cy * cz; cysz = cy * sz; + cysx = cy * sx; cxcy = cx * cy; + czsy = cz * sy; cxcz = cx * cz; + czsx = cz * sx; cxsz = cx * sz; + sysz = sy * sz; + + switch (ord) { + case GLM_EULER_XZY: + dest[0][0] = cycz; + dest[0][1] = sx * sy + cx * cysz; + dest[0][2] = -cx * sy + cysx * sz; + dest[1][0] = -sz; + dest[1][1] = cxcz; + dest[1][2] = czsx; + dest[2][0] = czsy; + dest[2][1] = -cysx + cx * sysz; + dest[2][2] = cxcy + sx * sysz; + break; + case GLM_EULER_XYZ: + dest[0][0] = cycz; + dest[0][1] = czsx * sy + cxsz; + dest[0][2] = -cx * czsy + sx * sz; + dest[1][0] = -cysz; + dest[1][1] = cxcz - sx * sysz; + dest[1][2] = czsx + cx * sysz; + dest[2][0] = sy; + dest[2][1] = -cysx; + dest[2][2] = cxcy; + break; + case GLM_EULER_YXZ: + dest[0][0] = cycz + sx * sysz; + dest[0][1] = cxsz; + dest[0][2] = -czsy + cysx * sz; + dest[1][0] = czsx * sy - cysz; + dest[1][1] = cxcz; + dest[1][2] = cycz * sx + sysz; + dest[2][0] = cx * sy; + dest[2][1] = -sx; + dest[2][2] = cxcy; + break; + case GLM_EULER_YZX: + dest[0][0] = cycz; + dest[0][1] = sz; + dest[0][2] = -czsy; + dest[1][0] = sx * sy - cx * cysz; + dest[1][1] = cxcz; + dest[1][2] = cysx + cx * sysz; + dest[2][0] = cx * sy + cysx * sz; + dest[2][1] = -czsx; + dest[2][2] = cxcy - sx * sysz; + break; + case GLM_EULER_ZXY: + dest[0][0] = cycz - sx * sysz; + dest[0][1] = czsx * sy + cysz; + dest[0][2] = -cx * sy; + dest[1][0] = -cxsz; + dest[1][1] = cxcz; + dest[1][2] = sx; + dest[2][0] = czsy + cysx * sz; + dest[2][1] = -cycz * sx + sysz; + dest[2][2] = cxcy; + break; + case GLM_EULER_ZYX: + dest[0][0] = cycz; + dest[0][1] = cysz; + dest[0][2] = -sy; + dest[1][0] = czsx * sy - cxsz; + dest[1][1] = cxcz + sx * sysz; + dest[1][2] = cysx; + dest[2][0] = cx * czsy + sx * sz; + dest[2][1] = -czsx + cx * sysz; + dest[2][2] = cxcy; + break; + } + + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + +#endif /* cglm_euler_h */ diff --git a/lib/cglm/include/cglm/frustum.h b/lib/cglm/include/cglm/frustum.h new file mode 100644 index 0000000..5aa3c17 --- /dev/null +++ b/lib/cglm/include/cglm/frustum.h @@ -0,0 +1,255 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_frustum_h +#define cglm_frustum_h + +#include "common.h" +#include "plane.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" + +#define GLM_LBN 0 /* left bottom near */ +#define GLM_LTN 1 /* left top near */ +#define GLM_RTN 2 /* right top near */ +#define GLM_RBN 3 /* right bottom near */ + +#define GLM_LBF 4 /* left bottom far */ +#define GLM_LTF 5 /* left top far */ +#define GLM_RTF 6 /* right top far */ +#define GLM_RBF 7 /* right bottom far */ + +#define GLM_LEFT 0 +#define GLM_RIGHT 1 +#define GLM_BOTTOM 2 +#define GLM_TOP 3 +#define GLM_NEAR 4 +#define GLM_FAR 5 + +/* you can override clip space coords + but you have to provide all with same name + e.g.: define GLM_CSCOORD_LBN {0.0f, 0.0f, 1.0f, 1.0f} */ +#ifndef GLM_CUSTOM_CLIPSPACE + +/* near */ +#define GLM_CSCOORD_LBN {-1.0f, -1.0f, -1.0f, 1.0f} +#define GLM_CSCOORD_LTN {-1.0f, 1.0f, -1.0f, 1.0f} +#define GLM_CSCOORD_RTN { 1.0f, 1.0f, -1.0f, 1.0f} +#define GLM_CSCOORD_RBN { 1.0f, -1.0f, -1.0f, 1.0f} + +/* far */ +#define GLM_CSCOORD_LBF {-1.0f, -1.0f, 1.0f, 1.0f} +#define GLM_CSCOORD_LTF {-1.0f, 1.0f, 1.0f, 1.0f} +#define GLM_CSCOORD_RTF { 1.0f, 1.0f, 1.0f, 1.0f} +#define GLM_CSCOORD_RBF { 1.0f, -1.0f, 1.0f, 1.0f} + +#endif + +/*! + * @brief extracts view frustum planes + * + * planes' space: + * 1- if m = proj: View Space + * 2- if m = viewProj: World Space + * 3- if m = MVP: Object Space + * + * You probably want to extract planes in world space so use viewProj as m + * Computing viewProj: + * glm_mat4_mul(proj, view, viewProj); + * + * Exracted planes order: [left, right, bottom, top, near, far] + * + * @param[in] m matrix (see brief) + * @param[out] dest extracted view frustum planes (see brief) + */ +CGLM_INLINE +void +glm_frustum_planes(mat4 m, vec4 dest[6]) { + mat4 t; + + glm_mat4_transpose_to(m, t); + + glm_vec4_add(t[3], t[0], dest[0]); /* left */ + glm_vec4_sub(t[3], t[0], dest[1]); /* right */ + glm_vec4_add(t[3], t[1], dest[2]); /* bottom */ + glm_vec4_sub(t[3], t[1], dest[3]); /* top */ + glm_vec4_add(t[3], t[2], dest[4]); /* near */ + glm_vec4_sub(t[3], t[2], dest[5]); /* far */ + + glm_plane_normalize(dest[0]); + glm_plane_normalize(dest[1]); + glm_plane_normalize(dest[2]); + glm_plane_normalize(dest[3]); + glm_plane_normalize(dest[4]); + glm_plane_normalize(dest[5]); +} + +/*! + * @brief extracts view frustum corners using clip-space coordinates + * + * corners' space: + * 1- if m = invViewProj: World Space + * 2- if m = invMVP: Object Space + * + * You probably want to extract corners in world space so use invViewProj + * Computing invViewProj: + * glm_mat4_mul(proj, view, viewProj); + * ... + * glm_mat4_inv(viewProj, invViewProj); + * + * if you have a near coord at i index, you can get it's far coord by i + 4 + * + * Find center coordinates: + * for (j = 0; j < 4; j++) { + * glm_vec3_center(corners[i], corners[i + 4], centerCorners[i]); + * } + * + * @param[in] invMat matrix (see brief) + * @param[out] dest exracted view frustum corners (see brief) + */ +CGLM_INLINE +void +glm_frustum_corners(mat4 invMat, vec4 dest[8]) { + vec4 c[8]; + + /* indexOf(nearCoord) = indexOf(farCoord) + 4 */ + vec4 csCoords[8] = { + GLM_CSCOORD_LBN, + GLM_CSCOORD_LTN, + GLM_CSCOORD_RTN, + GLM_CSCOORD_RBN, + + GLM_CSCOORD_LBF, + GLM_CSCOORD_LTF, + GLM_CSCOORD_RTF, + GLM_CSCOORD_RBF + }; + + glm_mat4_mulv(invMat, csCoords[0], c[0]); + glm_mat4_mulv(invMat, csCoords[1], c[1]); + glm_mat4_mulv(invMat, csCoords[2], c[2]); + glm_mat4_mulv(invMat, csCoords[3], c[3]); + glm_mat4_mulv(invMat, csCoords[4], c[4]); + glm_mat4_mulv(invMat, csCoords[5], c[5]); + glm_mat4_mulv(invMat, csCoords[6], c[6]); + glm_mat4_mulv(invMat, csCoords[7], c[7]); + + glm_vec4_scale(c[0], 1.0f / c[0][3], dest[0]); + glm_vec4_scale(c[1], 1.0f / c[1][3], dest[1]); + glm_vec4_scale(c[2], 1.0f / c[2][3], dest[2]); + glm_vec4_scale(c[3], 1.0f / c[3][3], dest[3]); + glm_vec4_scale(c[4], 1.0f / c[4][3], dest[4]); + glm_vec4_scale(c[5], 1.0f / c[5][3], dest[5]); + glm_vec4_scale(c[6], 1.0f / c[6][3], dest[6]); + glm_vec4_scale(c[7], 1.0f / c[7][3], dest[7]); +} + +/*! + * @brief finds center of view frustum + * + * @param[in] corners view frustum corners + * @param[out] dest view frustum center + */ +CGLM_INLINE +void +glm_frustum_center(vec4 corners[8], vec4 dest) { + vec4 center; + + glm_vec4_copy(corners[0], center); + + glm_vec4_add(corners[1], center, center); + glm_vec4_add(corners[2], center, center); + glm_vec4_add(corners[3], center, center); + glm_vec4_add(corners[4], center, center); + glm_vec4_add(corners[5], center, center); + glm_vec4_add(corners[6], center, center); + glm_vec4_add(corners[7], center, center); + + glm_vec4_scale(center, 0.125f, dest); +} + +/*! + * @brief finds bounding box of frustum relative to given matrix e.g. view mat + * + * @param[in] corners view frustum corners + * @param[in] m matrix to convert existing conners + * @param[out] box bounding box as array [min, max] + */ +CGLM_INLINE +void +glm_frustum_box(vec4 corners[8], mat4 m, vec3 box[2]) { + vec4 v; + vec3 min, max; + int i; + + glm_vec3_broadcast(FLT_MAX, min); + glm_vec3_broadcast(-FLT_MAX, max); + + for (i = 0; i < 8; i++) { + glm_mat4_mulv(m, corners[i], v); + + min[0] = glm_min(min[0], v[0]); + min[1] = glm_min(min[1], v[1]); + min[2] = glm_min(min[2], v[2]); + + max[0] = glm_max(max[0], v[0]); + max[1] = glm_max(max[1], v[1]); + max[2] = glm_max(max[2], v[2]); + } + + glm_vec3_copy(min, box[0]); + glm_vec3_copy(max, box[1]); +} + +/*! + * @brief finds planes corners which is between near and far planes (parallel) + * + * this will be helpful if you want to split a frustum e.g. CSM/PSSM. This will + * find planes' corners but you will need to one more plane. + * Actually you have it, it is near, far or created previously with this func ;) + * + * @param[in] corners view frustum corners + * @param[in] splitDist split distance + * @param[in] farDist far distance (zFar) + * @param[out] planeCorners plane corners [LB, LT, RT, RB] + */ +CGLM_INLINE +void +glm_frustum_corners_at(vec4 corners[8], + float splitDist, + float farDist, + vec4 planeCorners[4]) { + vec4 corner; + float dist, sc; + + /* because distance and scale is same for all */ + dist = glm_vec3_distance(corners[GLM_RTF], corners[GLM_RTN]); + sc = dist * (splitDist / farDist); + + /* left bottom */ + glm_vec4_sub(corners[GLM_LBF], corners[GLM_LBN], corner); + glm_vec4_scale_as(corner, sc, corner); + glm_vec4_add(corners[GLM_LBN], corner, planeCorners[0]); + + /* left top */ + glm_vec4_sub(corners[GLM_LTF], corners[GLM_LTN], corner); + glm_vec4_scale_as(corner, sc, corner); + glm_vec4_add(corners[GLM_LTN], corner, planeCorners[1]); + + /* right top */ + glm_vec4_sub(corners[GLM_RTF], corners[GLM_RTN], corner); + glm_vec4_scale_as(corner, sc, corner); + glm_vec4_add(corners[GLM_RTN], corner, planeCorners[2]); + + /* right bottom */ + glm_vec4_sub(corners[GLM_RBF], corners[GLM_RBN], corner); + glm_vec4_scale_as(corner, sc, corner); + glm_vec4_add(corners[GLM_RBN], corner, planeCorners[3]); +} + +#endif /* cglm_frustum_h */ diff --git a/lib/cglm/include/cglm/io.h b/lib/cglm/include/cglm/io.h new file mode 100644 index 0000000..41eeae9 --- /dev/null +++ b/lib/cglm/include/cglm/io.h @@ -0,0 +1,345 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_mat4_print(mat4 matrix, FILE *ostream); + CGLM_INLINE void glm_mat3_print(mat3 matrix, FILE *ostream); + CGLM_INLINE void glm_vec4_print(vec4 vec, FILE *ostream); + CGLM_INLINE void glm_vec3_print(vec3 vec, FILE *ostream); + CGLM_INLINE void glm_ivec3_print(ivec3 vec, FILE *ostream); + CGLM_INLINE void glm_versor_print(versor vec, FILE *ostream); + */ + +/* + cglm tried to enable print functions in debug mode and disable them in + release/production mode to eliminate printing costs. + + if you need to force enable then define CGLM_DEFINE_PRINTS macro not DEBUG one + + Print functions are enabled if: + + - DEBUG or _DEBUG macro is defined (mostly defined automatically in debugging) + - CGLM_DEFINE_PRINTS macro is defined including release/production + which makes enabled printing always + - glmc_ calls for io are always prints + + */ + +/* DEPRECATED: CGLM_NO_PRINTS_NOOP (use CGLM_DEFINE_PRINTS) */ + +#ifndef cglm_io_h +#define cglm_io_h +#if defined(DEBUG) || defined(_DEBUG) \ + || defined(CGLM_DEFINE_PRINTS) || defined(CGLM_LIB_SRC) \ + || defined(CGLM_NO_PRINTS_NOOP) + +#include "common.h" +#include "util.h" + +#include +#include + +#ifndef CGLM_PRINT_PRECISION +# define CGLM_PRINT_PRECISION 5 +#endif + +#ifndef CGLM_PRINT_MAX_TO_SHORT +# define CGLM_PRINT_MAX_TO_SHORT 1e5 +#endif + +#ifndef CGLM_PRINT_COLOR +# define CGLM_PRINT_COLOR "\033[36m" +#endif + +#ifndef CGLM_PRINT_COLOR_RESET +# define CGLM_PRINT_COLOR_RESET "\033[0m" +#endif + +CGLM_INLINE +void +glm_mat4_print(mat4 matrix, + FILE * __restrict ostream) { + char buff[16]; + int i, j, cw[4], cwi; + +#define m 4 +#define n 4 + + fprintf(ostream, "Matrix (float%dx%d): " CGLM_PRINT_COLOR "\n" , m, n); + + cw[0] = cw[1] = cw[2] = cw[3] = 0; + + for (i = 0; i < m; i++) { + for (j = 0; j < n; j++) { + if (matrix[i][j] < CGLM_PRINT_MAX_TO_SHORT) + cwi = sprintf(buff, "% .*f", CGLM_PRINT_PRECISION, matrix[i][j]); + else + cwi = sprintf(buff, "% g", matrix[i][j]); + cw[i] = GLM_MAX(cw[i], cwi); + } + } + + for (i = 0; i < m; i++) { + fprintf(ostream, " |"); + + for (j = 0; j < n; j++) + if (matrix[i][j] < CGLM_PRINT_MAX_TO_SHORT) + fprintf(ostream, " % *.*f", cw[j], CGLM_PRINT_PRECISION, matrix[j][i]); + else + fprintf(ostream, " % *g", cw[j], matrix[j][i]); + + fprintf(ostream, " |\n"); + } + + fprintf(ostream, CGLM_PRINT_COLOR_RESET "\n"); + +#undef m +#undef n +} + + +CGLM_INLINE +void +glm_mat3_print(mat3 matrix, + FILE * __restrict ostream) { + char buff[16]; + int i, j, cw[4], cwi; + +#define m 3 +#define n 3 + + fprintf(ostream, "Matrix (float%dx%d): " CGLM_PRINT_COLOR "\n", m, n); + + cw[0] = cw[1] = cw[2] = 0; + + for (i = 0; i < m; i++) { + for (j = 0; j < n; j++) { + if (matrix[i][j] < CGLM_PRINT_MAX_TO_SHORT) + cwi = sprintf(buff, "% .*f", CGLM_PRINT_PRECISION, matrix[i][j]); + else + cwi = sprintf(buff, "% g", matrix[i][j]); + cw[i] = GLM_MAX(cw[i], cwi); + } + } + + for (i = 0; i < m; i++) { + fprintf(ostream, " |"); + + for (j = 0; j < n; j++) + if (matrix[i][j] < CGLM_PRINT_MAX_TO_SHORT) + fprintf(ostream, " % *.*f", cw[j], CGLM_PRINT_PRECISION, matrix[j][i]); + else + fprintf(ostream, " % *g", cw[j], matrix[j][i]); + + fprintf(ostream, " |\n"); + } + + fprintf(ostream, CGLM_PRINT_COLOR_RESET "\n"); + +#undef m +#undef n +} + +CGLM_INLINE +void +glm_mat2_print(mat2 matrix, + FILE * __restrict ostream) { + char buff[16]; + int i, j, cw[4], cwi; + +#define m 2 +#define n 2 + + fprintf(ostream, "Matrix (float%dx%d): " CGLM_PRINT_COLOR "\n", m, n); + + cw[0] = cw[1] = 0; + + for (i = 0; i < m; i++) { + for (j = 0; j < n; j++) { + if (matrix[i][j] < CGLM_PRINT_MAX_TO_SHORT) + cwi = sprintf(buff, "% .*f", CGLM_PRINT_PRECISION, matrix[i][j]); + else + cwi = sprintf(buff, "% g", matrix[i][j]); + cw[i] = GLM_MAX(cw[i], cwi); + } + } + + for (i = 0; i < m; i++) { + fprintf(ostream, " |"); + + for (j = 0; j < n; j++) + if (matrix[i][j] < CGLM_PRINT_MAX_TO_SHORT) + fprintf(ostream, " % *.*f", cw[j], CGLM_PRINT_PRECISION, matrix[j][i]); + else + fprintf(ostream, " % *g", cw[j], matrix[j][i]); + + fprintf(ostream, " |\n"); + } + + fprintf(ostream, CGLM_PRINT_COLOR_RESET "\n"); + +#undef m +#undef n +} + +CGLM_INLINE +void +glm_vec4_print(vec4 vec, + FILE * __restrict ostream) { + int i; + +#define m 4 + + fprintf(ostream, "Vector (float%d): " CGLM_PRINT_COLOR "\n (", m); + + for (i = 0; i < m; i++) { + if (vec[i] < CGLM_PRINT_MAX_TO_SHORT) + fprintf(ostream, " % .*f", CGLM_PRINT_PRECISION, vec[i]); + else + fprintf(ostream, " % g", vec[i]); + } + + fprintf(ostream, " )" CGLM_PRINT_COLOR_RESET "\n\n"); + +#undef m +} + +CGLM_INLINE +void +glm_vec3_print(vec3 vec, + FILE * __restrict ostream) { + int i; + +#define m 3 + + fprintf(ostream, "Vector (float%d): " CGLM_PRINT_COLOR "\n (", m); + + for (i = 0; i < m; i++) { + if (vec[i] < CGLM_PRINT_MAX_TO_SHORT) + fprintf(ostream, " % .*f", CGLM_PRINT_PRECISION, vec[i]); + else + fprintf(ostream, " % g", vec[i]); + } + + fprintf(ostream, " )" CGLM_PRINT_COLOR_RESET "\n\n"); + +#undef m +} + +CGLM_INLINE +void +glm_ivec3_print(ivec3 vec, + FILE * __restrict ostream) { + int i; + +#define m 3 + + fprintf(ostream, "Vector (int%d): " CGLM_PRINT_COLOR "\n (", m); + + for (i = 0; i < m; i++) + fprintf(ostream, " % d", vec[i]); + + fprintf(ostream, " )" CGLM_PRINT_COLOR_RESET "\n\n"); + +#undef m +} + +CGLM_INLINE +void +glm_vec2_print(vec2 vec, + FILE * __restrict ostream) { + int i; + +#define m 2 + + fprintf(ostream, "Vector (float%d): " CGLM_PRINT_COLOR "\n (", m); + + for (i = 0; i < m; i++) { + if (vec[i] < CGLM_PRINT_MAX_TO_SHORT) + fprintf(ostream, " % .*f", CGLM_PRINT_PRECISION, vec[i]); + else + fprintf(ostream, " % g", vec[i]); + } + + fprintf(ostream, " )" CGLM_PRINT_COLOR_RESET "\n\n"); + +#undef m +} + +CGLM_INLINE +void +glm_versor_print(versor vec, + FILE * __restrict ostream) { + int i; + +#define m 4 + + fprintf(ostream, "Quaternion (float%d): " CGLM_PRINT_COLOR "\n (", m); + + for (i = 0; i < m; i++) { + if (vec[i] < CGLM_PRINT_MAX_TO_SHORT) + fprintf(ostream, " % .*f", CGLM_PRINT_PRECISION, vec[i]); + else + fprintf(ostream, " % g", vec[i]); + } + + + fprintf(ostream, " )" CGLM_PRINT_COLOR_RESET "\n\n"); + +#undef m +} + +CGLM_INLINE +void +glm_aabb_print(vec3 bbox[2], + const char * __restrict tag, + FILE * __restrict ostream) { + int i, j; + +#define m 3 + + fprintf(ostream, "AABB (%s): " CGLM_PRINT_COLOR "\n", tag ? tag: "float"); + + for (i = 0; i < 2; i++) { + fprintf(ostream, " ("); + + for (j = 0; j < m; j++) { + if (bbox[i][j] < CGLM_PRINT_MAX_TO_SHORT) + fprintf(ostream, " % .*f", CGLM_PRINT_PRECISION, bbox[i][j]); + else + fprintf(ostream, " % g", bbox[i][j]); + } + + fprintf(ostream, " )\n"); + } + + fprintf(ostream, CGLM_PRINT_COLOR_RESET "\n"); + +#undef m +} + +#else + +#include "common.h" + +#include +#include + +/* NOOP: Remove print from DEBUG */ +#define glm_mat4_print(v, s) (void)v; (void)s; +#define glm_mat3_print(v, s) (void)v; (void)s; +#define glm_mat2_print(v, s) (void)v; (void)s; +#define glm_vec4_print(v, s) (void)v; (void)s; +#define glm_vec3_print(v, s) (void)v; (void)s; +#define glm_ivec3_print(v, s) (void)v; (void)s; +#define glm_vec2_print(v, s) (void)v; (void)s; +#define glm_versor_print(v, s) (void)v; (void)s; +#define glm_aabb_print(v, t, s) (void)v; (void)t; (void)s; + +#endif +#endif /* cglm_io_h */ diff --git a/lib/cglm/include/cglm/ivec2.h b/lib/cglm/include/cglm/ivec2.h new file mode 100644 index 0000000..c1209a9 --- /dev/null +++ b/lib/cglm/include/cglm/ivec2.h @@ -0,0 +1,242 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* +FUNCTIONS: + CGLM_INLINE void glm_ivec2(int * __restrict v, ivec2 dest) + CGLM_INLINE void glm_ivec2_copy(ivec2 a, ivec2 dest) + CGLM_INLINE void glm_ivec2_zero(ivec2 v) + CGLM_INLINE void glm_ivec2_one(ivec2 v) + CGLM_INLINE void glm_ivec2_add(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_adds(ivec2 v, int s, ivec2 dest) + CGLM_INLINE void glm_ivec2_sub(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_subs(ivec2 v, int s, ivec2 dest) + CGLM_INLINE void glm_ivec2_mul(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_scale(ivec2 v, int s, ivec2 dest) + CGLM_INLINE int glm_ivec2_distance2(ivec2 a, ivec2 b) + CGLM_INLINE float glm_ivec2_distance(ivec2 a, ivec2 b) + CGLM_INLINE void glm_ivec2_maxv(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_minv(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_clamp(ivec2 v, int minVal, int maxVal) + */ + +#ifndef cglm_ivec2_h +#define cglm_ivec2_h + +#include "common.h" + +/*! + * @brief init ivec2 using vec3 or vec4 + * + * @param[in] v vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2(int * __restrict v, ivec2 dest) { + dest[0] = v[0]; + dest[1] = v[1]; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] a source vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_copy(ivec2 a, ivec2 dest) { + dest[0] = a[0]; + dest[1] = a[1]; +} + +/*! + * @brief set all members of [v] to zero + * + * @param[out] v vector + */ +CGLM_INLINE +void +glm_ivec2_zero(ivec2 v) { + v[0] = v[1] = 0; +} + +/*! + * @brief set all members of [v] to one + * + * @param[out] v vector + */ +CGLM_INLINE +void +glm_ivec2_one(ivec2 v) { + v[0] = v[1] = 1; +} + +/*! + * @brief add vector [a] to vector [b] and store result in [dest] + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_add(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] + b[0]; + dest[1] = a[1] + b[1]; +} + +/*! + * @brief add scalar s to vector [v] and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_adds(ivec2 v, int s, ivec2 dest) { + dest[0] = v[0] + s; + dest[1] = v[1] + s; +} + +/*! + * @brief subtract vector [b] from vector [a] and store result in [dest] + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_sub(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] - b[0]; + dest[1] = a[1] - b[1]; +} + +/*! + * @brief subtract scalar s from vector [v] and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_subs(ivec2 v, int s, ivec2 dest) { + dest[0] = v[0] - s; + dest[1] = v[1] - s; +} + +/*! + * @brief multiply vector [a] with vector [b] and store result in [dest] + * + * @param[in] a frist vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_mul(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; +} + +/*! + * @brief multiply vector [a] with scalar s and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_scale(ivec2 v, int s, ivec2 dest) { + dest[0] = v[0] * s; + dest[1] = v[1] * s; +} + +/*! + * @brief squared distance between two vectors + * + * @param[in] a first vector + * @param[in] b second vector + * @return returns squared distance (distance * distance) + */ +CGLM_INLINE +int +glm_ivec2_distance2(ivec2 a, ivec2 b) { + int xd, yd; + xd = a[0] - b[0]; + yd = a[1] - b[1]; + return xd * xd + yd * yd; +} + +/*! + * @brief distance between two vectors + * + * @param[in] a first vector + * @param[in] b second vector + * @return returns distance + */ +CGLM_INLINE +float +glm_ivec2_distance(ivec2 a, ivec2 b) { + return sqrtf((float)glm_ivec2_distance2(a, b)); +} + +/*! + * @brief set each member of dest to greater of vector a and b + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_maxv(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] > b[0] ? a[0] : b[0]; + dest[1] = a[1] > b[1] ? a[1] : b[1]; +} + +/*! + * @brief set each member of dest to lesser of vector a and b + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_minv(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] < b[0] ? a[0] : b[0]; + dest[1] = a[1] < b[1] ? a[1] : b[1]; +} + +/*! + * @brief clamp each member of [v] between minVal and maxVal (inclusive) + * + * @param[in, out] v vector + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + */ +CGLM_INLINE +void +glm_ivec2_clamp(ivec2 v, int minVal, int maxVal) { + if (v[0] < minVal) + v[0] = minVal; + else if(v[0] > maxVal) + v[0] = maxVal; + + if (v[1] < minVal) + v[1] = minVal; + else if(v[1] > maxVal) + v[1] = maxVal; +} + +#endif /* cglm_ivec2_h */ diff --git a/lib/cglm/include/cglm/ivec3.h b/lib/cglm/include/cglm/ivec3.h new file mode 100644 index 0000000..69f27f3 --- /dev/null +++ b/lib/cglm/include/cglm/ivec3.h @@ -0,0 +1,258 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* +FUNCTIONS: + CGLM_INLINE void glm_ivec3(ivec4 v4, ivec3 dest) + CGLM_INLINE void glm_ivec3_copy(ivec3 a, ivec3 dest) + CGLM_INLINE void glm_ivec3_zero(ivec3 v) + CGLM_INLINE void glm_ivec3_one(ivec3 v) + CGLM_INLINE void glm_ivec3_add(ivec3 a, ivec3 b, ivec3 dest) + CGLM_INLINE void glm_ivec3_adds(ivec3 v, int s, ivec3 dest) + CGLM_INLINE void glm_ivec3_sub(ivec3 a, ivec3 b, ivec3 dest) + CGLM_INLINE void glm_ivec3_subs(ivec3 v, int s, ivec3 dest) + CGLM_INLINE void glm_ivec3_mul(ivec3 a, ivec3 b, ivec3 dest) + CGLM_INLINE void glm_ivec3_scale(ivec3 v, int s, ivec3 dest) + CGLM_INLINE int glm_ivec3_distance2(ivec3 a, ivec3 b) + CGLM_INLINE float glm_ivec3_distance(ivec3 a, ivec3 b) + CGLM_INLINE void glm_ivec3_maxv(ivec3 a, ivec3 b, ivec3 dest) + CGLM_INLINE void glm_ivec3_minv(ivec3 a, ivec3 b, ivec3 dest) + CGLM_INLINE void glm_ivec3_clamp(ivec3 v, int minVal, int maxVal) + */ + +#ifndef cglm_ivec3_h +#define cglm_ivec3_h + +#include "common.h" + +/*! + * @brief init ivec3 using ivec4 + * + * @param[in] v4 vector4 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3(ivec4 v4, ivec3 dest) { + dest[0] = v4[0]; + dest[1] = v4[1]; + dest[2] = v4[2]; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] a source vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_copy(ivec3 a, ivec3 dest) { + dest[0] = a[0]; + dest[1] = a[1]; + dest[2] = a[2]; +} + +/*! + * @brief set all members of [v] to zero + * + * @param[out] v vector + */ +CGLM_INLINE +void +glm_ivec3_zero(ivec3 v) { + v[0] = v[1] = v[2] = 0; +} + +/*! + * @brief set all members of [v] to one + * + * @param[out] v vector + */ +CGLM_INLINE +void +glm_ivec3_one(ivec3 v) { + v[0] = v[1] = v[2] = 1; +} + +/*! + * @brief add vector [a] to vector [b] and store result in [dest] + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_add(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] + b[0]; + dest[1] = a[1] + b[1]; + dest[2] = a[2] + b[2]; +} + +/*! + * @brief add scalar s to vector [v] and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_adds(ivec3 v, int s, ivec3 dest) { + dest[0] = v[0] + s; + dest[1] = v[1] + s; + dest[2] = v[2] + s; +} + +/*! + * @brief subtract vector [b] from vector [a] and store result in [dest] + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_sub(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] - b[0]; + dest[1] = a[1] - b[1]; + dest[2] = a[2] - b[2]; +} + +/*! + * @brief subtract scalar s from vector [v] and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_subs(ivec3 v, int s, ivec3 dest) { + dest[0] = v[0] - s; + dest[1] = v[1] - s; + dest[2] = v[2] - s; +} + +/*! + * @brief multiply vector [a] with vector [b] and store result in [dest] + * + * @param[in] a frist vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_mul(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; + dest[2] = a[2] * b[2]; +} + +/*! + * @brief multiply vector [a] with scalar s and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_scale(ivec3 v, int s, ivec3 dest) { + dest[0] = v[0] * s; + dest[1] = v[1] * s; + dest[2] = v[2] * s; +} + +/*! + * @brief squared distance between two vectors + * + * @param[in] a first vector + * @param[in] b second vector + * @return returns squared distance (distance * distance) + */ +CGLM_INLINE +int +glm_ivec3_distance2(ivec3 a, ivec3 b) { + int xd, yd, zd; + xd = a[0] - b[0]; + yd = a[1] - b[1]; + zd = a[2] - b[2]; + return xd * xd + yd * yd + zd * zd; +} + +/*! + * @brief distance between two vectors + * + * @param[in] a first vector + * @param[in] b second vector + * @return returns distance + */ +CGLM_INLINE +float +glm_ivec3_distance(ivec3 a, ivec3 b) { + return sqrtf((float)glm_ivec3_distance2(a, b)); +} + +/*! + * @brief set each member of dest to greater of vector a and b + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_maxv(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] > b[0] ? a[0] : b[0]; + dest[1] = a[1] > b[1] ? a[1] : b[1]; + dest[2] = a[2] > b[2] ? a[2] : b[2]; +} + +/*! + * @brief set each member of dest to lesser of vector a and b + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_minv(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] < b[0] ? a[0] : b[0]; + dest[1] = a[1] < b[1] ? a[1] : b[1]; + dest[2] = a[2] < b[2] ? a[2] : b[2]; +} + +/*! + * @brief clamp each member of [v] between minVal and maxVal (inclusive) + * + * @param[in, out] v vector + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + */ +CGLM_INLINE +void +glm_ivec3_clamp(ivec3 v, int minVal, int maxVal) { + if (v[0] < minVal) + v[0] = minVal; + else if(v[0] > maxVal) + v[0] = maxVal; + + if (v[1] < minVal) + v[1] = minVal; + else if(v[1] > maxVal) + v[1] = maxVal; + + if (v[2] < minVal) + v[2] = minVal; + else if(v[2] > maxVal) + v[2] = maxVal; +} + +#endif /* cglm_ivec3_h */ diff --git a/lib/cglm/include/cglm/ivec4.h b/lib/cglm/include/cglm/ivec4.h new file mode 100644 index 0000000..363ee58 --- /dev/null +++ b/lib/cglm/include/cglm/ivec4.h @@ -0,0 +1,275 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* +FUNCTIONS: + CGLM_INLINE void glm_ivec4(ivec3 v3, int last, ivec4 dest) + CGLM_INLINE void glm_ivec4_copy(ivec4 a, ivec4 dest) + CGLM_INLINE void glm_ivec4_zero(ivec4 v) + CGLM_INLINE void glm_ivec4_one(ivec4 v) + CGLM_INLINE void glm_ivec4_add(ivec4 a, ivec4 b, ivec4 dest) + CGLM_INLINE void glm_ivec4_adds(ivec4 v, int s, ivec4 dest) + CGLM_INLINE void glm_ivec4_sub(ivec4 a, ivec4 b, ivec4 dest) + CGLM_INLINE void glm_ivec4_subs(ivec4 v, int s, ivec4 dest) + CGLM_INLINE void glm_ivec4_mul(ivec4 a, ivec4 b, ivec4 dest) + CGLM_INLINE void glm_ivec4_scale(ivec4 v, int s, ivec4 dest) + CGLM_INLINE int glm_ivec4_distance2(ivec4 a, ivec4 b) + CGLM_INLINE float glm_ivec4_distance(ivec4 a, ivec4 b) + CGLM_INLINE void glm_ivec4_maxv(ivec4 a, ivec4 b, ivec4 dest) + CGLM_INLINE void glm_ivec4_minv(ivec4 a, ivec4 b, ivec4 dest) + CGLM_INLINE void glm_ivec4_clamp(ivec4 v, int minVal, int maxVal) + */ + +#ifndef cglm_ivec4_h +#define cglm_ivec4_h + +#include "common.h" + +/*! + * @brief init ivec4 using ivec3 + * + * @param[in] v3 vector3 + * @param[in] last last item + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4(ivec3 v3, int last, ivec4 dest) { + dest[0] = v3[0]; + dest[1] = v3[1]; + dest[2] = v3[2]; + dest[3] = last; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] a source vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_copy(ivec4 a, ivec4 dest) { + dest[0] = a[0]; + dest[1] = a[1]; + dest[2] = a[2]; + dest[3] = a[3]; +} + +/*! + * @brief set all members of [v] to zero + * + * @param[out] v vector + */ +CGLM_INLINE +void +glm_ivec4_zero(ivec4 v) { + v[0] = v[1] = v[2] = v[3] = 0; +} + +/*! + * @brief set all members of [v] to one + * + * @param[out] v vector + */ +CGLM_INLINE +void +glm_ivec4_one(ivec4 v) { + v[0] = v[1] = v[2] = v[3] = 1; +} + +/*! + * @brief add vector [a] to vector [b] and store result in [dest] + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_add(ivec4 a, ivec4 b, ivec4 dest) { + dest[0] = a[0] + b[0]; + dest[1] = a[1] + b[1]; + dest[2] = a[2] + b[2]; + dest[3] = a[3] + b[3]; +} + +/*! + * @brief add scalar s to vector [v] and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_adds(ivec4 v, int s, ivec4 dest) { + dest[0] = v[0] + s; + dest[1] = v[1] + s; + dest[2] = v[2] + s; + dest[3] = v[3] + s; +} + +/*! + * @brief subtract vector [b] from vector [a] and store result in [dest] + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_sub(ivec4 a, ivec4 b, ivec4 dest) { + dest[0] = a[0] - b[0]; + dest[1] = a[1] - b[1]; + dest[2] = a[2] - b[2]; + dest[3] = a[3] - b[3]; +} + +/*! + * @brief subtract scalar s from vector [v] and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_subs(ivec4 v, int s, ivec4 dest) { + dest[0] = v[0] - s; + dest[1] = v[1] - s; + dest[2] = v[2] - s; + dest[3] = v[3] - s; +} + +/*! + * @brief multiply vector [a] with vector [b] and store result in [dest] + * + * @param[in] a frist vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_mul(ivec4 a, ivec4 b, ivec4 dest) { + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; + dest[2] = a[2] * b[2]; + dest[3] = a[3] * b[3]; +} + +/*! + * @brief multiply vector [a] with scalar s and store result in [dest] + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_scale(ivec4 v, int s, ivec4 dest) { + dest[0] = v[0] * s; + dest[1] = v[1] * s; + dest[2] = v[2] * s; + dest[3] = v[3] * s; +} + +/*! + * @brief squared distance between two vectors + * + * @param[in] a first vector + * @param[in] b second vector + * @return returns squared distance (distance * distance) + */ +CGLM_INLINE +int +glm_ivec4_distance2(ivec4 a, ivec4 b) { + int xd, yd, zd, wd; + xd = a[0] - b[0]; + yd = a[1] - b[1]; + zd = a[2] - b[2]; + wd = a[3] - b[3]; + return xd * xd + yd * yd + zd * zd + wd * wd; +} + +/*! + * @brief distance between two vectors + * + * @param[in] a first vector + * @param[in] b second vector + * @return returns distance + */ +CGLM_INLINE +float +glm_ivec4_distance(ivec4 a, ivec4 b) { + return sqrtf((float)glm_ivec4_distance2(a, b)); +} + +/*! + * @brief set each member of dest to greater of vector a and b + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_maxv(ivec4 a, ivec4 b, ivec4 dest) { + dest[0] = a[0] > b[0] ? a[0] : b[0]; + dest[1] = a[1] > b[1] ? a[1] : b[1]; + dest[2] = a[2] > b[2] ? a[2] : b[2]; + dest[3] = a[3] > b[3] ? a[3] : b[3]; +} + +/*! + * @brief set each member of dest to lesser of vector a and b + * + * @param[in] a first vector + * @param[in] b second vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec4_minv(ivec4 a, ivec4 b, ivec4 dest) { + dest[0] = a[0] < b[0] ? a[0] : b[0]; + dest[1] = a[1] < b[1] ? a[1] : b[1]; + dest[2] = a[2] < b[2] ? a[2] : b[2]; + dest[3] = a[3] < b[3] ? a[3] : b[3]; +} + +/*! + * @brief clamp each member of [v] between minVal and maxVal (inclusive) + * + * @param[in, out] v vector + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + */ +CGLM_INLINE +void +glm_ivec4_clamp(ivec4 v, int minVal, int maxVal) { + if (v[0] < minVal) + v[0] = minVal; + else if(v[0] > maxVal) + v[0] = maxVal; + + if (v[1] < minVal) + v[1] = minVal; + else if(v[1] > maxVal) + v[1] = maxVal; + + if (v[2] < minVal) + v[2] = minVal; + else if(v[2] > maxVal) + v[2] = maxVal; + + if (v[3] < minVal) + v[3] = minVal; + else if(v[3] > maxVal) + v[3] = maxVal; +} + +#endif /* cglm_ivec4_h */ diff --git a/lib/cglm/include/cglm/mat2.h b/lib/cglm/include/cglm/mat2.h new file mode 100644 index 0000000..871d6bd --- /dev/null +++ b/lib/cglm/include/cglm/mat2.h @@ -0,0 +1,337 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_MAT2_IDENTITY_INIT + GLM_MAT2_ZERO_INIT + GLM_MAT2_IDENTITY + GLM_MAT2_ZERO + + Functions: + CGLM_INLINE void glm_mat2_copy(mat2 mat, mat2 dest) + CGLM_INLINE void glm_mat2_identity(mat2 mat) + CGLM_INLINE void glm_mat2_identity_array(mat2 * restrict mat, size_t count) + CGLM_INLINE void glm_mat2_zero(mat2 mat) + CGLM_INLINE void glm_mat2_mul(mat2 m1, mat2 m2, mat2 dest) + CGLM_INLINE void glm_mat2_transpose_to(mat2 m, mat2 dest) + CGLM_INLINE void glm_mat2_transpose(mat2 m) + CGLM_INLINE void glm_mat2_mulv(mat2 m, vec2 v, vec2 dest) + CGLM_INLINE float glm_mat2_trace(mat2 m) + CGLM_INLINE void glm_mat2_scale(mat2 m, float s) + CGLM_INLINE float glm_mat2_det(mat2 mat) + CGLM_INLINE void glm_mat2_inv(mat2 mat, mat2 dest) + CGLM_INLINE void glm_mat2_swap_col(mat2 mat, int col1, int col2) + CGLM_INLINE void glm_mat2_swap_row(mat2 mat, int row1, int row2) + CGLM_INLINE float glm_mat2_rmc(vec2 r, mat2 m, vec2 c) + */ + +#ifndef cglm_mat2_h +#define cglm_mat2_h + +#include "common.h" +#include "vec2.h" + +#ifdef CGLM_SSE_FP +# include "simd/sse2/mat2.h" +#endif + +#ifdef CGLM_NEON_FP +# include "simd/neon/mat2.h" +#endif + +#define GLM_MAT2_IDENTITY_INIT {{1.0f, 0.0f}, {0.0f, 1.0f}} +#define GLM_MAT2_ZERO_INIT {{0.0f, 0.0f}, {0.0f, 0.0f}} + +/* for C only */ +#define GLM_MAT2_IDENTITY ((mat2)GLM_MAT2_IDENTITY_INIT) +#define GLM_MAT2_ZERO ((mat2)GLM_MAT2_ZERO_INIT) + +/*! + * @brief copy all members of [mat] to [dest] + * + * @param[in] mat source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_mat2_copy(mat2 mat, mat2 dest) { + glm_vec4_ucopy(mat[0], dest[0]); +} + +/*! + * @brief make given matrix identity. It is identical with below, + * but it is more easy to do that with this func especially for members + * e.g. glm_mat2_identity(aStruct->aMatrix); + * + * @code + * glm_mat2_copy(GLM_MAT2_IDENTITY, mat); // C only + * + * // or + * mat2 mat = GLM_MAT2_IDENTITY_INIT; + * @endcode + * + * @param[in, out] mat destination + */ +CGLM_INLINE +void +glm_mat2_identity(mat2 mat) { + CGLM_ALIGN_MAT mat2 t = GLM_MAT2_IDENTITY_INIT; + glm_mat2_copy(t, mat); +} + +/*! + * @brief make given matrix array's each element identity matrix + * + * @param[in, out] mat matrix array (must be aligned (16) + * if alignment is not disabled) + * + * @param[in] count count of matrices + */ +CGLM_INLINE +void +glm_mat2_identity_array(mat2 * __restrict mat, size_t count) { + CGLM_ALIGN_MAT mat2 t = GLM_MAT2_IDENTITY_INIT; + size_t i; + + for (i = 0; i < count; i++) { + glm_mat2_copy(t, mat[i]); + } +} + +/*! + * @brief make given matrix zero. + * + * @param[in, out] mat matrix + */ +CGLM_INLINE +void +glm_mat2_zero(mat2 mat) { + CGLM_ALIGN_MAT mat2 t = GLM_MAT2_ZERO_INIT; + glm_mat2_copy(t, mat); +} + +/*! + * @brief multiply m1 and m2 to dest + * + * m1, m2 and dest matrices can be same matrix, it is possible to write this: + * + * @code + * mat2 m = GLM_MAT2_IDENTITY_INIT; + * glm_mat2_mul(m, m, m); + * @endcode + * + * @param[in] m1 left matrix + * @param[in] m2 right matrix + * @param[out] dest destination matrix + */ +CGLM_INLINE +void +glm_mat2_mul(mat2 m1, mat2 m2, mat2 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat2_mul_sse2(m1, m2, dest); +#elif defined(CGLM_NEON_FP) + glm_mat2_mul_neon(m1, m2, dest); +#else + float a00 = m1[0][0], a01 = m1[0][1], + a10 = m1[1][0], a11 = m1[1][1], + b00 = m2[0][0], b01 = m2[0][1], + b10 = m2[1][0], b11 = m2[1][1]; + + dest[0][0] = a00 * b00 + a10 * b01; + dest[0][1] = a01 * b00 + a11 * b01; + dest[1][0] = a00 * b10 + a10 * b11; + dest[1][1] = a01 * b10 + a11 * b11; +#endif +} + +/*! + * @brief transpose mat2 and store in dest + * + * source matrix will not be transposed unless dest is m + * + * @param[in] m matrix + * @param[out] dest result + */ +CGLM_INLINE +void +glm_mat2_transpose_to(mat2 m, mat2 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat2_transp_sse2(m, dest); +#else + dest[0][0] = m[0][0]; + dest[0][1] = m[1][0]; + dest[1][0] = m[0][1]; + dest[1][1] = m[1][1]; +#endif +} + +/*! + * @brief tranpose mat2 and store result in same matrix + * + * @param[in, out] m source and dest + */ +CGLM_INLINE +void +glm_mat2_transpose(mat2 m) { + float tmp; + tmp = m[0][1]; + m[0][1] = m[1][0]; + m[1][0] = tmp; +} + +/*! + * @brief multiply mat2 with vec2 (column vector) and store in dest vector + * + * @param[in] m mat2 (left) + * @param[in] v vec2 (right, column vector) + * @param[out] dest vec2 (result, column vector) + */ +CGLM_INLINE +void +glm_mat2_mulv(mat2 m, vec2 v, vec2 dest) { + dest[0] = m[0][0] * v[0] + m[1][0] * v[1]; + dest[1] = m[0][1] * v[0] + m[1][1] * v[1]; +} + +/*! + * @brief trace of matrix + * + * sum of the elements on the main diagonal from upper left to the lower right + * + * @param[in] m matrix + */ +CGLM_INLINE +float +glm_mat2_trace(mat2 m) { + return m[0][0] + m[1][1]; +} + +/*! + * @brief scale (multiply with scalar) matrix + * + * multiply matrix with scalar + * + * @param[in, out] m matrix + * @param[in] s scalar + */ +CGLM_INLINE +void +glm_mat2_scale(mat2 m, float s) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(m[0], _mm_mul_ps(_mm_loadu_ps(m[0]), _mm_set1_ps(s))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(m[0], vmulq_f32(vld1q_f32(m[0]), vdupq_n_f32(s))); +#else + m[0][0] = m[0][0] * s; + m[0][1] = m[0][1] * s; + m[1][0] = m[1][0] * s; + m[1][1] = m[1][1] * s; +#endif +} + +/*! + * @brief mat2 determinant + * + * @param[in] mat matrix + * + * @return determinant + */ +CGLM_INLINE +float +glm_mat2_det(mat2 mat) { + return mat[0][0] * mat[1][1] - mat[1][0] * mat[0][1]; +} + +/*! + * @brief inverse mat2 and store in dest + * + * @param[in] mat matrix + * @param[out] dest inverse matrix + */ +CGLM_INLINE +void +glm_mat2_inv(mat2 mat, mat2 dest) { + float det; + float a = mat[0][0], b = mat[0][1], + c = mat[1][0], d = mat[1][1]; + + det = 1.0f / (a * d - b * c); + + dest[0][0] = d * det; + dest[0][1] = -b * det; + dest[1][0] = -c * det; + dest[1][1] = a * det; +} + +/*! + * @brief swap two matrix columns + * + * @param[in,out] mat matrix + * @param[in] col1 col1 + * @param[in] col2 col2 + */ +CGLM_INLINE +void +glm_mat2_swap_col(mat2 mat, int col1, int col2) { + float a, b; + + a = mat[col1][0]; + b = mat[col1][1]; + + mat[col1][0] = mat[col2][0]; + mat[col1][1] = mat[col2][1]; + + mat[col2][0] = a; + mat[col2][1] = b; +} + +/*! + * @brief swap two matrix rows + * + * @param[in,out] mat matrix + * @param[in] row1 row1 + * @param[in] row2 row2 + */ +CGLM_INLINE +void +glm_mat2_swap_row(mat2 mat, int row1, int row2) { + float a, b; + + a = mat[0][row1]; + b = mat[1][row1]; + + mat[0][row1] = mat[0][row2]; + mat[1][row1] = mat[1][row2]; + + mat[0][row2] = a; + mat[1][row2] = b; +} + +/*! + * @brief helper for R (row vector) * M (matrix) * C (column vector) + * + * rmc stands for Row * Matrix * Column + * + * the result is scalar because R * M = Matrix1x2 (row vector), + * then Matrix1x2 * Vec2 (column vector) = Matrix1x1 (Scalar) + * + * @param[in] r row vector or matrix1x2 + * @param[in] m matrix2x2 + * @param[in] c column vector or matrix2x1 + * + * @return scalar value e.g. Matrix1x1 + */ +CGLM_INLINE +float +glm_mat2_rmc(vec2 r, mat2 m, vec2 c) { + vec2 tmp; + glm_mat2_mulv(m, c, tmp); + return glm_vec2_dot(r, tmp); +} + +#endif /* cglm_mat2_h */ diff --git a/lib/cglm/include/cglm/mat3.h b/lib/cglm/include/cglm/mat3.h new file mode 100644 index 0000000..0b29f97 --- /dev/null +++ b/lib/cglm/include/cglm/mat3.h @@ -0,0 +1,424 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_MAT3_IDENTITY_INIT + GLM_MAT3_ZERO_INIT + GLM_MAT3_IDENTITY + GLM_MAT3_ZERO + glm_mat3_dup(mat, dest) + + Functions: + CGLM_INLINE void glm_mat3_copy(mat3 mat, mat3 dest); + CGLM_INLINE void glm_mat3_identity(mat3 mat); + CGLM_INLINE void glm_mat3_identity_array(mat3 * restrict mat, size_t count); + CGLM_INLINE void glm_mat3_zero(mat3 mat); + CGLM_INLINE void glm_mat3_mul(mat3 m1, mat3 m2, mat3 dest); + CGLM_INLINE void glm_mat3_transpose_to(mat3 m, mat3 dest); + CGLM_INLINE void glm_mat3_transpose(mat3 m); + CGLM_INLINE void glm_mat3_mulv(mat3 m, vec3 v, vec3 dest); + CGLM_INLINE float glm_mat3_trace(mat3 m); + CGLM_INLINE void glm_mat3_quat(mat3 m, versor dest); + CGLM_INLINE void glm_mat3_scale(mat3 m, float s); + CGLM_INLINE float glm_mat3_det(mat3 mat); + CGLM_INLINE void glm_mat3_inv(mat3 mat, mat3 dest); + CGLM_INLINE void glm_mat3_swap_col(mat3 mat, int col1, int col2); + CGLM_INLINE void glm_mat3_swap_row(mat3 mat, int row1, int row2); + CGLM_INLINE float glm_mat3_rmc(vec3 r, mat3 m, vec3 c); + */ + +#ifndef cglm_mat3_h +#define cglm_mat3_h + +#include "common.h" +#include "vec3.h" + +#ifdef CGLM_SSE_FP +# include "simd/sse2/mat3.h" +#endif + +#define GLM_MAT3_IDENTITY_INIT {{1.0f, 0.0f, 0.0f}, \ + {0.0f, 1.0f, 0.0f}, \ + {0.0f, 0.0f, 1.0f}} +#define GLM_MAT3_ZERO_INIT {{0.0f, 0.0f, 0.0f}, \ + {0.0f, 0.0f, 0.0f}, \ + {0.0f, 0.0f, 0.0f}} + + +/* for C only */ +#define GLM_MAT3_IDENTITY ((mat3)GLM_MAT3_IDENTITY_INIT) +#define GLM_MAT3_ZERO ((mat3)GLM_MAT3_ZERO_INIT) + +/* DEPRECATED! use _copy, _ucopy versions */ +#define glm_mat3_dup(mat, dest) glm_mat3_copy(mat, dest) + +/*! + * @brief copy all members of [mat] to [dest] + * + * @param[in] mat source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_mat3_copy(mat3 mat, mat3 dest) { + dest[0][0] = mat[0][0]; + dest[0][1] = mat[0][1]; + dest[0][2] = mat[0][2]; + + dest[1][0] = mat[1][0]; + dest[1][1] = mat[1][1]; + dest[1][2] = mat[1][2]; + + dest[2][0] = mat[2][0]; + dest[2][1] = mat[2][1]; + dest[2][2] = mat[2][2]; +} + +/*! + * @brief make given matrix identity. It is identical with below, + * but it is more easy to do that with this func especially for members + * e.g. glm_mat3_identity(aStruct->aMatrix); + * + * @code + * glm_mat3_copy(GLM_MAT3_IDENTITY, mat); // C only + * + * // or + * mat3 mat = GLM_MAT3_IDENTITY_INIT; + * @endcode + * + * @param[in, out] mat destination + */ +CGLM_INLINE +void +glm_mat3_identity(mat3 mat) { + CGLM_ALIGN_MAT mat3 t = GLM_MAT3_IDENTITY_INIT; + glm_mat3_copy(t, mat); +} + +/*! + * @brief make given matrix array's each element identity matrix + * + * @param[in, out] mat matrix array (must be aligned (16/32) + * if alignment is not disabled) + * + * @param[in] count count of matrices + */ +CGLM_INLINE +void +glm_mat3_identity_array(mat3 * __restrict mat, size_t count) { + CGLM_ALIGN_MAT mat3 t = GLM_MAT3_IDENTITY_INIT; + size_t i; + + for (i = 0; i < count; i++) { + glm_mat3_copy(t, mat[i]); + } +} + +/*! + * @brief make given matrix zero. + * + * @param[in, out] mat matrix + */ +CGLM_INLINE +void +glm_mat3_zero(mat3 mat) { + CGLM_ALIGN_MAT mat3 t = GLM_MAT3_ZERO_INIT; + glm_mat3_copy(t, mat); +} + +/*! + * @brief multiply m1 and m2 to dest + * + * m1, m2 and dest matrices can be same matrix, it is possible to write this: + * + * @code + * mat3 m = GLM_MAT3_IDENTITY_INIT; + * glm_mat3_mul(m, m, m); + * @endcode + * + * @param[in] m1 left matrix + * @param[in] m2 right matrix + * @param[out] dest destination matrix + */ +CGLM_INLINE +void +glm_mat3_mul(mat3 m1, mat3 m2, mat3 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat3_mul_sse2(m1, m2, dest); +#else + float a00 = m1[0][0], a01 = m1[0][1], a02 = m1[0][2], + a10 = m1[1][0], a11 = m1[1][1], a12 = m1[1][2], + a20 = m1[2][0], a21 = m1[2][1], a22 = m1[2][2], + + b00 = m2[0][0], b01 = m2[0][1], b02 = m2[0][2], + b10 = m2[1][0], b11 = m2[1][1], b12 = m2[1][2], + b20 = m2[2][0], b21 = m2[2][1], b22 = m2[2][2]; + + dest[0][0] = a00 * b00 + a10 * b01 + a20 * b02; + dest[0][1] = a01 * b00 + a11 * b01 + a21 * b02; + dest[0][2] = a02 * b00 + a12 * b01 + a22 * b02; + dest[1][0] = a00 * b10 + a10 * b11 + a20 * b12; + dest[1][1] = a01 * b10 + a11 * b11 + a21 * b12; + dest[1][2] = a02 * b10 + a12 * b11 + a22 * b12; + dest[2][0] = a00 * b20 + a10 * b21 + a20 * b22; + dest[2][1] = a01 * b20 + a11 * b21 + a21 * b22; + dest[2][2] = a02 * b20 + a12 * b21 + a22 * b22; +#endif +} + +/*! + * @brief transpose mat3 and store in dest + * + * source matrix will not be transposed unless dest is m + * + * @param[in] m matrix + * @param[out] dest result + */ +CGLM_INLINE +void +glm_mat3_transpose_to(mat3 m, mat3 dest) { + dest[0][0] = m[0][0]; + dest[0][1] = m[1][0]; + dest[0][2] = m[2][0]; + dest[1][0] = m[0][1]; + dest[1][1] = m[1][1]; + dest[1][2] = m[2][1]; + dest[2][0] = m[0][2]; + dest[2][1] = m[1][2]; + dest[2][2] = m[2][2]; +} + +/*! + * @brief tranpose mat3 and store result in same matrix + * + * @param[in, out] m source and dest + */ +CGLM_INLINE +void +glm_mat3_transpose(mat3 m) { + CGLM_ALIGN_MAT mat3 tmp; + + tmp[0][1] = m[1][0]; + tmp[0][2] = m[2][0]; + tmp[1][0] = m[0][1]; + tmp[1][2] = m[2][1]; + tmp[2][0] = m[0][2]; + tmp[2][1] = m[1][2]; + + m[0][1] = tmp[0][1]; + m[0][2] = tmp[0][2]; + m[1][0] = tmp[1][0]; + m[1][2] = tmp[1][2]; + m[2][0] = tmp[2][0]; + m[2][1] = tmp[2][1]; +} + +/*! + * @brief multiply mat3 with vec3 (column vector) and store in dest vector + * + * @param[in] m mat3 (left) + * @param[in] v vec3 (right, column vector) + * @param[out] dest vec3 (result, column vector) + */ +CGLM_INLINE +void +glm_mat3_mulv(mat3 m, vec3 v, vec3 dest) { + vec3 res; + res[0] = m[0][0] * v[0] + m[1][0] * v[1] + m[2][0] * v[2]; + res[1] = m[0][1] * v[0] + m[1][1] * v[1] + m[2][1] * v[2]; + res[2] = m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2]; + glm_vec3_copy(res, dest); +} + +/*! + * @brief trace of matrix + * + * sum of the elements on the main diagonal from upper left to the lower right + * + * @param[in] m matrix + */ +CGLM_INLINE +float +glm_mat3_trace(mat3 m) { + return m[0][0] + m[1][1] + m[2][2]; +} + +/*! + * @brief convert mat3 to quaternion + * + * @param[in] m rotation matrix + * @param[out] dest destination quaternion + */ +CGLM_INLINE +void +glm_mat3_quat(mat3 m, versor dest) { + float trace, r, rinv; + + /* it seems using like m12 instead of m[1][2] causes extra instructions */ + + trace = m[0][0] + m[1][1] + m[2][2]; + if (trace >= 0.0f) { + r = sqrtf(1.0f + trace); + rinv = 0.5f / r; + + dest[0] = rinv * (m[1][2] - m[2][1]); + dest[1] = rinv * (m[2][0] - m[0][2]); + dest[2] = rinv * (m[0][1] - m[1][0]); + dest[3] = r * 0.5f; + } else if (m[0][0] >= m[1][1] && m[0][0] >= m[2][2]) { + r = sqrtf(1.0f - m[1][1] - m[2][2] + m[0][0]); + rinv = 0.5f / r; + + dest[0] = r * 0.5f; + dest[1] = rinv * (m[0][1] + m[1][0]); + dest[2] = rinv * (m[0][2] + m[2][0]); + dest[3] = rinv * (m[1][2] - m[2][1]); + } else if (m[1][1] >= m[2][2]) { + r = sqrtf(1.0f - m[0][0] - m[2][2] + m[1][1]); + rinv = 0.5f / r; + + dest[0] = rinv * (m[0][1] + m[1][0]); + dest[1] = r * 0.5f; + dest[2] = rinv * (m[1][2] + m[2][1]); + dest[3] = rinv * (m[2][0] - m[0][2]); + } else { + r = sqrtf(1.0f - m[0][0] - m[1][1] + m[2][2]); + rinv = 0.5f / r; + + dest[0] = rinv * (m[0][2] + m[2][0]); + dest[1] = rinv * (m[1][2] + m[2][1]); + dest[2] = r * 0.5f; + dest[3] = rinv * (m[0][1] - m[1][0]); + } +} + +/*! + * @brief scale (multiply with scalar) matrix + * + * multiply matrix with scalar + * + * @param[in, out] m matrix + * @param[in] s scalar + */ +CGLM_INLINE +void +glm_mat3_scale(mat3 m, float s) { + m[0][0] *= s; m[0][1] *= s; m[0][2] *= s; + m[1][0] *= s; m[1][1] *= s; m[1][2] *= s; + m[2][0] *= s; m[2][1] *= s; m[2][2] *= s; +} + +/*! + * @brief mat3 determinant + * + * @param[in] mat matrix + * + * @return determinant + */ +CGLM_INLINE +float +glm_mat3_det(mat3 mat) { + float a = mat[0][0], b = mat[0][1], c = mat[0][2], + d = mat[1][0], e = mat[1][1], f = mat[1][2], + g = mat[2][0], h = mat[2][1], i = mat[2][2]; + + return a * (e * i - h * f) - d * (b * i - c * h) + g * (b * f - c * e); +} + +/*! + * @brief inverse mat3 and store in dest + * + * @param[in] mat matrix + * @param[out] dest inverse matrix + */ +CGLM_INLINE +void +glm_mat3_inv(mat3 mat, mat3 dest) { + float det; + float a = mat[0][0], b = mat[0][1], c = mat[0][2], + d = mat[1][0], e = mat[1][1], f = mat[1][2], + g = mat[2][0], h = mat[2][1], i = mat[2][2]; + + dest[0][0] = e * i - f * h; + dest[0][1] = -(b * i - h * c); + dest[0][2] = b * f - e * c; + dest[1][0] = -(d * i - g * f); + dest[1][1] = a * i - c * g; + dest[1][2] = -(a * f - d * c); + dest[2][0] = d * h - g * e; + dest[2][1] = -(a * h - g * b); + dest[2][2] = a * e - b * d; + + det = 1.0f / (a * dest[0][0] + b * dest[1][0] + c * dest[2][0]); + + glm_mat3_scale(dest, det); +} + +/*! + * @brief swap two matrix columns + * + * @param[in,out] mat matrix + * @param[in] col1 col1 + * @param[in] col2 col2 + */ +CGLM_INLINE +void +glm_mat3_swap_col(mat3 mat, int col1, int col2) { + vec3 tmp; + glm_vec3_copy(mat[col1], tmp); + glm_vec3_copy(mat[col2], mat[col1]); + glm_vec3_copy(tmp, mat[col2]); +} + +/*! + * @brief swap two matrix rows + * + * @param[in,out] mat matrix + * @param[in] row1 row1 + * @param[in] row2 row2 + */ +CGLM_INLINE +void +glm_mat3_swap_row(mat3 mat, int row1, int row2) { + vec3 tmp; + tmp[0] = mat[0][row1]; + tmp[1] = mat[1][row1]; + tmp[2] = mat[2][row1]; + + mat[0][row1] = mat[0][row2]; + mat[1][row1] = mat[1][row2]; + mat[2][row1] = mat[2][row2]; + + mat[0][row2] = tmp[0]; + mat[1][row2] = tmp[1]; + mat[2][row2] = tmp[2]; +} + +/*! + * @brief helper for R (row vector) * M (matrix) * C (column vector) + * + * rmc stands for Row * Matrix * Column + * + * the result is scalar because R * M = Matrix1x3 (row vector), + * then Matrix1x3 * Vec3 (column vector) = Matrix1x1 (Scalar) + * + * @param[in] r row vector or matrix1x3 + * @param[in] m matrix3x3 + * @param[in] c column vector or matrix3x1 + * + * @return scalar value e.g. Matrix1x1 + */ +CGLM_INLINE +float +glm_mat3_rmc(vec3 r, mat3 m, vec3 c) { + vec3 tmp; + glm_mat3_mulv(m, c, tmp); + return glm_vec3_dot(r, tmp); +} + +#endif /* cglm_mat3_h */ diff --git a/lib/cglm/include/cglm/mat4.h b/lib/cglm/include/cglm/mat4.h new file mode 100644 index 0000000..04cfece --- /dev/null +++ b/lib/cglm/include/cglm/mat4.h @@ -0,0 +1,754 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/*! + * Most of functions in this header are optimized manually with SIMD + * if available. You dont need to call/incude SIMD headers manually + */ + +/* + Macros: + GLM_MAT4_IDENTITY_INIT + GLM_MAT4_ZERO_INIT + GLM_MAT4_IDENTITY + GLM_MAT4_ZERO + + Functions: + CGLM_INLINE void glm_mat4_ucopy(mat4 mat, mat4 dest); + CGLM_INLINE void glm_mat4_copy(mat4 mat, mat4 dest); + CGLM_INLINE void glm_mat4_identity(mat4 mat); + CGLM_INLINE void glm_mat4_identity_array(mat4 * restrict mat, size_t count); + CGLM_INLINE void glm_mat4_zero(mat4 mat); + CGLM_INLINE void glm_mat4_pick3(mat4 mat, mat3 dest); + CGLM_INLINE void glm_mat4_pick3t(mat4 mat, mat3 dest); + CGLM_INLINE void glm_mat4_ins3(mat3 mat, mat4 dest); + CGLM_INLINE void glm_mat4_mul(mat4 m1, mat4 m2, mat4 dest); + CGLM_INLINE void glm_mat4_mulN(mat4 *matrices[], int len, mat4 dest); + CGLM_INLINE void glm_mat4_mulv(mat4 m, vec4 v, vec4 dest); + CGLM_INLINE void glm_mat4_mulv3(mat4 m, vec3 v, vec3 dest); + CGLM_INLINE float glm_mat4_trace(mat4 m); + CGLM_INLINE float glm_mat4_trace3(mat4 m); + CGLM_INLINE void glm_mat4_quat(mat4 m, versor dest) ; + CGLM_INLINE void glm_mat4_transpose_to(mat4 m, mat4 dest); + CGLM_INLINE void glm_mat4_transpose(mat4 m); + CGLM_INLINE void glm_mat4_scale_p(mat4 m, float s); + CGLM_INLINE void glm_mat4_scale(mat4 m, float s); + CGLM_INLINE float glm_mat4_det(mat4 mat); + CGLM_INLINE void glm_mat4_inv(mat4 mat, mat4 dest); + CGLM_INLINE void glm_mat4_inv_fast(mat4 mat, mat4 dest); + CGLM_INLINE void glm_mat4_swap_col(mat4 mat, int col1, int col2); + CGLM_INLINE void glm_mat4_swap_row(mat4 mat, int row1, int row2); + CGLM_INLINE float glm_mat4_rmc(vec4 r, mat4 m, vec4 c); + */ + +#ifndef cglm_mat_h +#define cglm_mat_h + +#include "common.h" +#include "vec4.h" +#include "vec3.h" + +#ifdef CGLM_SSE_FP +# include "simd/sse2/mat4.h" +#endif + +#ifdef CGLM_AVX_FP +# include "simd/avx/mat4.h" +#endif + +#ifdef CGLM_NEON_FP +# include "simd/neon/mat4.h" +#endif + +#ifdef DEBUG +# include +#endif + +#define GLM_MAT4_IDENTITY_INIT {{1.0f, 0.0f, 0.0f, 0.0f}, \ + {0.0f, 1.0f, 0.0f, 0.0f}, \ + {0.0f, 0.0f, 1.0f, 0.0f}, \ + {0.0f, 0.0f, 0.0f, 1.0f}} + +#define GLM_MAT4_ZERO_INIT {{0.0f, 0.0f, 0.0f, 0.0f}, \ + {0.0f, 0.0f, 0.0f, 0.0f}, \ + {0.0f, 0.0f, 0.0f, 0.0f}, \ + {0.0f, 0.0f, 0.0f, 0.0f}} + +/* for C only */ +#define GLM_MAT4_IDENTITY ((mat4)GLM_MAT4_IDENTITY_INIT) +#define GLM_MAT4_ZERO ((mat4)GLM_MAT4_ZERO_INIT) + +/* DEPRECATED! use _copy, _ucopy versions */ +#define glm_mat4_udup(mat, dest) glm_mat4_ucopy(mat, dest) +#define glm_mat4_dup(mat, dest) glm_mat4_copy(mat, dest) + +/* DEPRECATED! default is precise now. */ +#define glm_mat4_inv_precise(mat, dest) glm_mat4_inv(mat, dest) + +/*! + * @brief copy all members of [mat] to [dest] + * + * matrix may not be aligned, u stands for unaligned, this may be useful when + * copying a matrix from external source e.g. asset importer... + * + * @param[in] mat source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_mat4_ucopy(mat4 mat, mat4 dest) { + dest[0][0] = mat[0][0]; dest[1][0] = mat[1][0]; + dest[0][1] = mat[0][1]; dest[1][1] = mat[1][1]; + dest[0][2] = mat[0][2]; dest[1][2] = mat[1][2]; + dest[0][3] = mat[0][3]; dest[1][3] = mat[1][3]; + + dest[2][0] = mat[2][0]; dest[3][0] = mat[3][0]; + dest[2][1] = mat[2][1]; dest[3][1] = mat[3][1]; + dest[2][2] = mat[2][2]; dest[3][2] = mat[3][2]; + dest[2][3] = mat[2][3]; dest[3][3] = mat[3][3]; +} + +/*! + * @brief copy all members of [mat] to [dest] + * + * @param[in] mat source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_mat4_copy(mat4 mat, mat4 dest) { +#ifdef __AVX__ + glmm_store256(dest[0], glmm_load256(mat[0])); + glmm_store256(dest[2], glmm_load256(mat[2])); +#elif defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest[0], glmm_load(mat[0])); + glmm_store(dest[1], glmm_load(mat[1])); + glmm_store(dest[2], glmm_load(mat[2])); + glmm_store(dest[3], glmm_load(mat[3])); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest[0], vld1q_f32(mat[0])); + vst1q_f32(dest[1], vld1q_f32(mat[1])); + vst1q_f32(dest[2], vld1q_f32(mat[2])); + vst1q_f32(dest[3], vld1q_f32(mat[3])); +#else + glm_mat4_ucopy(mat, dest); +#endif +} + +/*! + * @brief make given matrix identity. It is identical with below, + * but it is more easy to do that with this func especially for members + * e.g. glm_mat4_identity(aStruct->aMatrix); + * + * @code + * glm_mat4_copy(GLM_MAT4_IDENTITY, mat); // C only + * + * // or + * mat4 mat = GLM_MAT4_IDENTITY_INIT; + * @endcode + * + * @param[in, out] mat destination + */ +CGLM_INLINE +void +glm_mat4_identity(mat4 mat) { + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_IDENTITY_INIT; + glm_mat4_copy(t, mat); +} + +/*! + * @brief make given matrix array's each element identity matrix + * + * @param[in, out] mat matrix array (must be aligned (16/32) + * if alignment is not disabled) + * + * @param[in] count count of matrices + */ +CGLM_INLINE +void +glm_mat4_identity_array(mat4 * __restrict mat, size_t count) { + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_IDENTITY_INIT; + size_t i; + + for (i = 0; i < count; i++) { + glm_mat4_copy(t, mat[i]); + } +} + +/*! + * @brief make given matrix zero. + * + * @param[in, out] mat matrix + */ +CGLM_INLINE +void +glm_mat4_zero(mat4 mat) { +#ifdef __AVX__ + __m256 y0; + y0 = _mm256_setzero_ps(); + glmm_store256(mat[0], y0); + glmm_store256(mat[2], y0); +#elif defined( __SSE__ ) || defined( __SSE2__ ) + glmm_128 x0; + x0 = _mm_setzero_ps(); + glmm_store(mat[0], x0); + glmm_store(mat[1], x0); + glmm_store(mat[2], x0); + glmm_store(mat[3], x0); +#elif defined(CGLM_NEON_FP) + glmm_128 x0; + x0 = vdupq_n_f32(0.0f); + vst1q_f32(mat[0], x0); + vst1q_f32(mat[1], x0); + vst1q_f32(mat[2], x0); + vst1q_f32(mat[3], x0); +#else + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_ZERO_INIT; + glm_mat4_copy(t, mat); +#endif +} + +/*! + * @brief copy upper-left of mat4 to mat3 + * + * @param[in] mat source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_mat4_pick3(mat4 mat, mat3 dest) { + dest[0][0] = mat[0][0]; + dest[0][1] = mat[0][1]; + dest[0][2] = mat[0][2]; + + dest[1][0] = mat[1][0]; + dest[1][1] = mat[1][1]; + dest[1][2] = mat[1][2]; + + dest[2][0] = mat[2][0]; + dest[2][1] = mat[2][1]; + dest[2][2] = mat[2][2]; +} + +/*! + * @brief copy upper-left of mat4 to mat3 (transposed) + * + * the postfix t stands for transpose + * + * @param[in] mat source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_mat4_pick3t(mat4 mat, mat3 dest) { + dest[0][0] = mat[0][0]; + dest[0][1] = mat[1][0]; + dest[0][2] = mat[2][0]; + + dest[1][0] = mat[0][1]; + dest[1][1] = mat[1][1]; + dest[1][2] = mat[2][1]; + + dest[2][0] = mat[0][2]; + dest[2][1] = mat[1][2]; + dest[2][2] = mat[2][2]; +} + +/*! + * @brief copy mat3 to mat4's upper-left + * + * @param[in] mat source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_mat4_ins3(mat3 mat, mat4 dest) { + dest[0][0] = mat[0][0]; + dest[0][1] = mat[0][1]; + dest[0][2] = mat[0][2]; + + dest[1][0] = mat[1][0]; + dest[1][1] = mat[1][1]; + dest[1][2] = mat[1][2]; + + dest[2][0] = mat[2][0]; + dest[2][1] = mat[2][1]; + dest[2][2] = mat[2][2]; +} + +/*! + * @brief multiply m1 and m2 to dest + * + * m1, m2 and dest matrices can be same matrix, it is possible to write this: + * + * @code + * mat4 m = GLM_MAT4_IDENTITY_INIT; + * glm_mat4_mul(m, m, m); + * @endcode + * + * @param[in] m1 left matrix + * @param[in] m2 right matrix + * @param[out] dest destination matrix + */ +CGLM_INLINE +void +glm_mat4_mul(mat4 m1, mat4 m2, mat4 dest) { +#ifdef __AVX__ + glm_mat4_mul_avx(m1, m2, dest); +#elif defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat4_mul_sse2(m1, m2, dest); +#elif defined(CGLM_NEON_FP) + glm_mat4_mul_neon(m1, m2, dest); +#else + float a00 = m1[0][0], a01 = m1[0][1], a02 = m1[0][2], a03 = m1[0][3], + a10 = m1[1][0], a11 = m1[1][1], a12 = m1[1][2], a13 = m1[1][3], + a20 = m1[2][0], a21 = m1[2][1], a22 = m1[2][2], a23 = m1[2][3], + a30 = m1[3][0], a31 = m1[3][1], a32 = m1[3][2], a33 = m1[3][3], + + b00 = m2[0][0], b01 = m2[0][1], b02 = m2[0][2], b03 = m2[0][3], + b10 = m2[1][0], b11 = m2[1][1], b12 = m2[1][2], b13 = m2[1][3], + b20 = m2[2][0], b21 = m2[2][1], b22 = m2[2][2], b23 = m2[2][3], + b30 = m2[3][0], b31 = m2[3][1], b32 = m2[3][2], b33 = m2[3][3]; + + dest[0][0] = a00 * b00 + a10 * b01 + a20 * b02 + a30 * b03; + dest[0][1] = a01 * b00 + a11 * b01 + a21 * b02 + a31 * b03; + dest[0][2] = a02 * b00 + a12 * b01 + a22 * b02 + a32 * b03; + dest[0][3] = a03 * b00 + a13 * b01 + a23 * b02 + a33 * b03; + dest[1][0] = a00 * b10 + a10 * b11 + a20 * b12 + a30 * b13; + dest[1][1] = a01 * b10 + a11 * b11 + a21 * b12 + a31 * b13; + dest[1][2] = a02 * b10 + a12 * b11 + a22 * b12 + a32 * b13; + dest[1][3] = a03 * b10 + a13 * b11 + a23 * b12 + a33 * b13; + dest[2][0] = a00 * b20 + a10 * b21 + a20 * b22 + a30 * b23; + dest[2][1] = a01 * b20 + a11 * b21 + a21 * b22 + a31 * b23; + dest[2][2] = a02 * b20 + a12 * b21 + a22 * b22 + a32 * b23; + dest[2][3] = a03 * b20 + a13 * b21 + a23 * b22 + a33 * b23; + dest[3][0] = a00 * b30 + a10 * b31 + a20 * b32 + a30 * b33; + dest[3][1] = a01 * b30 + a11 * b31 + a21 * b32 + a31 * b33; + dest[3][2] = a02 * b30 + a12 * b31 + a22 * b32 + a32 * b33; + dest[3][3] = a03 * b30 + a13 * b31 + a23 * b32 + a33 * b33; +#endif +} + +/*! + * @brief mupliply N mat4 matrices and store result in dest + * + * this function lets you multiply multiple (more than two or more...) matrices + *

multiplication will be done in loop, this may reduce instructions + * size but if len is too small then compiler may unroll whole loop, + * usage: + * @code + * mat m1, m2, m3, m4, res; + * + * glm_mat4_mulN((mat4 *[]){&m1, &m2, &m3, &m4}, 4, res); + * @endcode + * + * @warning matrices parameter is pointer array not mat4 array! + * + * @param[in] matrices mat4 * array + * @param[in] len matrices count + * @param[out] dest result + */ +CGLM_INLINE +void +glm_mat4_mulN(mat4 * __restrict matrices[], uint32_t len, mat4 dest) { + uint32_t i; + +#ifdef DEBUG + assert(len > 1 && "there must be least 2 matrices to go!"); +#endif + + glm_mat4_mul(*matrices[0], *matrices[1], dest); + + for (i = 2; i < len; i++) + glm_mat4_mul(dest, *matrices[i], dest); +} + +/*! + * @brief multiply mat4 with vec4 (column vector) and store in dest vector + * + * @param[in] m mat4 (left) + * @param[in] v vec4 (right, column vector) + * @param[out] dest vec4 (result, column vector) + */ +CGLM_INLINE +void +glm_mat4_mulv(mat4 m, vec4 v, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat4_mulv_sse2(m, v, dest); +#elif defined(CGLM_NEON_FP) + glm_mat4_mulv_neon(m, v, dest); +#else + vec4 res; + res[0] = m[0][0] * v[0] + m[1][0] * v[1] + m[2][0] * v[2] + m[3][0] * v[3]; + res[1] = m[0][1] * v[0] + m[1][1] * v[1] + m[2][1] * v[2] + m[3][1] * v[3]; + res[2] = m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2] + m[3][2] * v[3]; + res[3] = m[0][3] * v[0] + m[1][3] * v[1] + m[2][3] * v[2] + m[3][3] * v[3]; + glm_vec4_copy(res, dest); +#endif +} + +/*! + * @brief trace of matrix + * + * sum of the elements on the main diagonal from upper left to the lower right + * + * @param[in] m matrix + */ +CGLM_INLINE +float +glm_mat4_trace(mat4 m) { + return m[0][0] + m[1][1] + m[2][2] + m[3][3]; +} + +/*! + * @brief trace of matrix (rotation part) + * + * sum of the elements on the main diagonal from upper left to the lower right + * + * @param[in] m matrix + */ +CGLM_INLINE +float +glm_mat4_trace3(mat4 m) { + return m[0][0] + m[1][1] + m[2][2]; +} + +/*! + * @brief convert mat4's rotation part to quaternion + * + * @param[in] m affine matrix + * @param[out] dest destination quaternion + */ +CGLM_INLINE +void +glm_mat4_quat(mat4 m, versor dest) { + float trace, r, rinv; + + /* it seems using like m12 instead of m[1][2] causes extra instructions */ + + trace = m[0][0] + m[1][1] + m[2][2]; + if (trace >= 0.0f) { + r = sqrtf(1.0f + trace); + rinv = 0.5f / r; + + dest[0] = rinv * (m[1][2] - m[2][1]); + dest[1] = rinv * (m[2][0] - m[0][2]); + dest[2] = rinv * (m[0][1] - m[1][0]); + dest[3] = r * 0.5f; + } else if (m[0][0] >= m[1][1] && m[0][0] >= m[2][2]) { + r = sqrtf(1.0f - m[1][1] - m[2][2] + m[0][0]); + rinv = 0.5f / r; + + dest[0] = r * 0.5f; + dest[1] = rinv * (m[0][1] + m[1][0]); + dest[2] = rinv * (m[0][2] + m[2][0]); + dest[3] = rinv * (m[1][2] - m[2][1]); + } else if (m[1][1] >= m[2][2]) { + r = sqrtf(1.0f - m[0][0] - m[2][2] + m[1][1]); + rinv = 0.5f / r; + + dest[0] = rinv * (m[0][1] + m[1][0]); + dest[1] = r * 0.5f; + dest[2] = rinv * (m[1][2] + m[2][1]); + dest[3] = rinv * (m[2][0] - m[0][2]); + } else { + r = sqrtf(1.0f - m[0][0] - m[1][1] + m[2][2]); + rinv = 0.5f / r; + + dest[0] = rinv * (m[0][2] + m[2][0]); + dest[1] = rinv * (m[1][2] + m[2][1]); + dest[2] = r * 0.5f; + dest[3] = rinv * (m[0][1] - m[1][0]); + } +} + +/*! + * @brief multiply vector with mat4 + * + * actually the result is vec4, after multiplication the last component + * is trimmed. if you need it don't use this func. + * + * @param[in] m mat4(affine transform) + * @param[in] v vec3 + * @param[in] last 4th item to make it vec4 + * @param[out] dest result vector (vec3) + */ +CGLM_INLINE +void +glm_mat4_mulv3(mat4 m, vec3 v, float last, vec3 dest) { + vec4 res; + glm_vec4(v, last, res); + glm_mat4_mulv(m, res, res); + glm_vec3(res, dest); +} + +/*! + * @brief transpose mat4 and store in dest + * + * source matrix will not be transposed unless dest is m + * + * @param[in] m matrix + * @param[out] dest result + */ +CGLM_INLINE +void +glm_mat4_transpose_to(mat4 m, mat4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat4_transp_sse2(m, dest); +#elif defined(CGLM_NEON_FP) + glm_mat4_transp_neon(m, dest); +#else + dest[0][0] = m[0][0]; dest[1][0] = m[0][1]; + dest[0][1] = m[1][0]; dest[1][1] = m[1][1]; + dest[0][2] = m[2][0]; dest[1][2] = m[2][1]; + dest[0][3] = m[3][0]; dest[1][3] = m[3][1]; + dest[2][0] = m[0][2]; dest[3][0] = m[0][3]; + dest[2][1] = m[1][2]; dest[3][1] = m[1][3]; + dest[2][2] = m[2][2]; dest[3][2] = m[2][3]; + dest[2][3] = m[3][2]; dest[3][3] = m[3][3]; +#endif +} + +/*! + * @brief tranpose mat4 and store result in same matrix + * + * @param[in, out] m source and dest + */ +CGLM_INLINE +void +glm_mat4_transpose(mat4 m) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat4_transp_sse2(m, m); +#elif defined(CGLM_NEON_FP) + glm_mat4_transp_neon(m, m); +#else + mat4 d; + glm_mat4_transpose_to(m, d); + glm_mat4_ucopy(d, m); +#endif +} + +/*! + * @brief scale (multiply with scalar) matrix without simd optimization + * + * multiply matrix with scalar + * + * @param[in, out] m matrix + * @param[in] s scalar + */ +CGLM_INLINE +void +glm_mat4_scale_p(mat4 m, float s) { + m[0][0] *= s; m[0][1] *= s; m[0][2] *= s; m[0][3] *= s; + m[1][0] *= s; m[1][1] *= s; m[1][2] *= s; m[1][3] *= s; + m[2][0] *= s; m[2][1] *= s; m[2][2] *= s; m[2][3] *= s; + m[3][0] *= s; m[3][1] *= s; m[3][2] *= s; m[3][3] *= s; +} + +/*! + * @brief scale (multiply with scalar) matrix + * + * multiply matrix with scalar + * + * @param[in, out] m matrix + * @param[in] s scalar + */ +CGLM_INLINE +void +glm_mat4_scale(mat4 m, float s) { +#ifdef __AVX__ + glm_mat4_scale_avx(m, s); +#elif defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat4_scale_sse2(m, s); +#elif defined(CGLM_NEON_FP) + glm_mat4_scale_neon(m, s); +#else + glm_mat4_scale_p(m, s); +#endif +} + +/*! + * @brief mat4 determinant + * + * @param[in] mat matrix + * + * @return determinant + */ +CGLM_INLINE +float +glm_mat4_det(mat4 mat) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + return glm_mat4_det_sse2(mat); +#elif defined(CGLM_NEON_FP) + return glm_mat4_det_neon(mat); +#else + /* [square] det(A) = det(At) */ + float t[6]; + float a = mat[0][0], b = mat[0][1], c = mat[0][2], d = mat[0][3], + e = mat[1][0], f = mat[1][1], g = mat[1][2], h = mat[1][3], + i = mat[2][0], j = mat[2][1], k = mat[2][2], l = mat[2][3], + m = mat[3][0], n = mat[3][1], o = mat[3][2], p = mat[3][3]; + + t[0] = k * p - o * l; + t[1] = j * p - n * l; + t[2] = j * o - n * k; + t[3] = i * p - m * l; + t[4] = i * o - m * k; + t[5] = i * n - m * j; + + return a * (f * t[0] - g * t[1] + h * t[2]) + - b * (e * t[0] - g * t[3] + h * t[4]) + + c * (e * t[1] - f * t[3] + h * t[5]) + - d * (e * t[2] - f * t[4] + g * t[5]); +#endif +} + +/*! + * @brief inverse mat4 and store in dest + * + * @param[in] mat matrix + * @param[out] dest inverse matrix + */ +CGLM_INLINE +void +glm_mat4_inv(mat4 mat, mat4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat4_inv_sse2(mat, dest); +#elif defined(CGLM_NEON_FP) + glm_mat4_inv_neon(mat, dest); +#else + float t[6]; + float det; + float a = mat[0][0], b = mat[0][1], c = mat[0][2], d = mat[0][3], + e = mat[1][0], f = mat[1][1], g = mat[1][2], h = mat[1][3], + i = mat[2][0], j = mat[2][1], k = mat[2][2], l = mat[2][3], + m = mat[3][0], n = mat[3][1], o = mat[3][2], p = mat[3][3]; + + t[0] = k * p - o * l; t[1] = j * p - n * l; t[2] = j * o - n * k; + t[3] = i * p - m * l; t[4] = i * o - m * k; t[5] = i * n - m * j; + + dest[0][0] = f * t[0] - g * t[1] + h * t[2]; + dest[1][0] =-(e * t[0] - g * t[3] + h * t[4]); + dest[2][0] = e * t[1] - f * t[3] + h * t[5]; + dest[3][0] =-(e * t[2] - f * t[4] + g * t[5]); + + dest[0][1] =-(b * t[0] - c * t[1] + d * t[2]); + dest[1][1] = a * t[0] - c * t[3] + d * t[4]; + dest[2][1] =-(a * t[1] - b * t[3] + d * t[5]); + dest[3][1] = a * t[2] - b * t[4] + c * t[5]; + + t[0] = g * p - o * h; t[1] = f * p - n * h; t[2] = f * o - n * g; + t[3] = e * p - m * h; t[4] = e * o - m * g; t[5] = e * n - m * f; + + dest[0][2] = b * t[0] - c * t[1] + d * t[2]; + dest[1][2] =-(a * t[0] - c * t[3] + d * t[4]); + dest[2][2] = a * t[1] - b * t[3] + d * t[5]; + dest[3][2] =-(a * t[2] - b * t[4] + c * t[5]); + + t[0] = g * l - k * h; t[1] = f * l - j * h; t[2] = f * k - j * g; + t[3] = e * l - i * h; t[4] = e * k - i * g; t[5] = e * j - i * f; + + dest[0][3] =-(b * t[0] - c * t[1] + d * t[2]); + dest[1][3] = a * t[0] - c * t[3] + d * t[4]; + dest[2][3] =-(a * t[1] - b * t[3] + d * t[5]); + dest[3][3] = a * t[2] - b * t[4] + c * t[5]; + + det = 1.0f / (a * dest[0][0] + b * dest[1][0] + + c * dest[2][0] + d * dest[3][0]); + + glm_mat4_scale_p(dest, det); +#endif +} + +/*! + * @brief inverse mat4 and store in dest + * + * this func uses reciprocal approximation without extra corrections + * e.g Newton-Raphson. this should work faster than normal, + * to get more precise use glm_mat4_inv version. + * + * NOTE: You will lose precision, glm_mat4_inv is more accurate + * + * @param[in] mat matrix + * @param[out] dest inverse matrix + */ +CGLM_INLINE +void +glm_mat4_inv_fast(mat4 mat, mat4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_mat4_inv_fast_sse2(mat, dest); +#else + glm_mat4_inv(mat, dest); +#endif +} + +/*! + * @brief swap two matrix columns + * + * @param[in,out] mat matrix + * @param[in] col1 col1 + * @param[in] col2 col2 + */ +CGLM_INLINE +void +glm_mat4_swap_col(mat4 mat, int col1, int col2) { + CGLM_ALIGN(16) vec4 tmp; + glm_vec4_copy(mat[col1], tmp); + glm_vec4_copy(mat[col2], mat[col1]); + glm_vec4_copy(tmp, mat[col2]); +} + +/*! + * @brief swap two matrix rows + * + * @param[in,out] mat matrix + * @param[in] row1 row1 + * @param[in] row2 row2 + */ +CGLM_INLINE +void +glm_mat4_swap_row(mat4 mat, int row1, int row2) { + CGLM_ALIGN(16) vec4 tmp; + tmp[0] = mat[0][row1]; + tmp[1] = mat[1][row1]; + tmp[2] = mat[2][row1]; + tmp[3] = mat[3][row1]; + + mat[0][row1] = mat[0][row2]; + mat[1][row1] = mat[1][row2]; + mat[2][row1] = mat[2][row2]; + mat[3][row1] = mat[3][row2]; + + mat[0][row2] = tmp[0]; + mat[1][row2] = tmp[1]; + mat[2][row2] = tmp[2]; + mat[3][row2] = tmp[3]; +} + +/*! + * @brief helper for R (row vector) * M (matrix) * C (column vector) + * + * rmc stands for Row * Matrix * Column + * + * the result is scalar because R * M = Matrix1x4 (row vector), + * then Matrix1x4 * Vec4 (column vector) = Matrix1x1 (Scalar) + * + * @param[in] r row vector or matrix1x4 + * @param[in] m matrix4x4 + * @param[in] c column vector or matrix4x1 + * + * @return scalar value e.g. B(s) + */ +CGLM_INLINE +float +glm_mat4_rmc(vec4 r, mat4 m, vec4 c) { + vec4 tmp; + glm_mat4_mulv(m, c, tmp); + return glm_vec4_dot(r, tmp); +} + +#endif /* cglm_mat_h */ diff --git a/lib/cglm/include/cglm/plane.h b/lib/cglm/include/cglm/plane.h new file mode 100644 index 0000000..0504373 --- /dev/null +++ b/lib/cglm/include/cglm/plane.h @@ -0,0 +1,44 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_plane_h +#define cglm_plane_h + +#include "common.h" +#include "vec3.h" +#include "vec4.h" + +/* + Plane equation: Ax + By + Cz + D = 0; + + It stored in vec4 as [A, B, C, D]. (A, B, C) is normal and D is distance +*/ + +/* + Functions: + CGLM_INLINE void glm_plane_normalize(vec4 plane); + */ + +/*! + * @brief normalizes a plane + * + * @param[in, out] plane plane to normalize + */ +CGLM_INLINE +void +glm_plane_normalize(vec4 plane) { + float norm; + + if ((norm = glm_vec3_norm(plane)) == 0.0f) { + glm_vec4_zero(plane); + return; + } + + glm_vec4_scale(plane, 1.0f / norm, plane); +} + +#endif /* cglm_plane_h */ diff --git a/lib/cglm/include/cglm/project.h b/lib/cglm/include/cglm/project.h new file mode 100644 index 0000000..1d0a4e5 --- /dev/null +++ b/lib/cglm/include/cglm/project.h @@ -0,0 +1,172 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_project_h +#define cglm_project_h + +#include "common.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" + +#ifndef CGLM_CLIPSPACE_INCLUDE_ALL +# if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_ZO_BIT +# include "clipspace/project_zo.h" +# elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_NO_BIT +# include "clipspace/project_no.h" +# endif +#else +# include "clipspace/project_zo.h" +# include "clipspace/project_no.h" +#endif + +/*! + * @brief maps the specified viewport coordinates into specified space [1] + * the matrix should contain projection matrix. + * + * if you don't have ( and don't want to have ) an inverse matrix then use + * glm_unproject version. You may use existing inverse of matrix in somewhere + * else, this is why glm_unprojecti exists to save save inversion cost + * + * [1] space: + * 1- if m = invProj: View Space + * 2- if m = invViewProj: World Space + * 3- if m = invMVP: Object Space + * + * You probably want to map the coordinates into object space + * so use invMVP as m + * + * Computing viewProj: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * glm_mat4_inv(viewProj, invMVP); + * + * @param[in] pos point/position in viewport coordinates + * @param[in] invMat matrix (see brief) + * @param[in] vp viewport as [x, y, width, height] + * @param[out] dest unprojected coordinates + */ +CGLM_INLINE +void +glm_unprojecti(vec3 pos, mat4 invMat, vec4 vp, vec3 dest) { +#if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_ZO_BIT + glm_unprojecti_zo(pos, invMat, vp, dest); +#elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_NO_BIT + glm_unprojecti_no(pos, invMat, vp, dest); +#endif +} + +/*! + * @brief maps the specified viewport coordinates into specified space [1] + * the matrix should contain projection matrix. + * + * this is same as glm_unprojecti except this function get inverse matrix for + * you. + * + * [1] space: + * 1- if m = proj: View Space + * 2- if m = viewProj: World Space + * 3- if m = MVP: Object Space + * + * You probably want to map the coordinates into object space + * so use MVP as m + * + * Computing viewProj and MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] pos point/position in viewport coordinates + * @param[in] m matrix (see brief) + * @param[in] vp viewport as [x, y, width, height] + * @param[out] dest unprojected coordinates + */ +CGLM_INLINE +void +glm_unproject(vec3 pos, mat4 m, vec4 vp, vec3 dest) { + mat4 inv; + glm_mat4_inv(m, inv); + glm_unprojecti(pos, inv, vp, dest); +} + +/*! + * @brief map object coordinates to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] pos object coordinates + * @param[in] m MVP matrix + * @param[in] vp viewport as [x, y, width, height] + * @param[out] dest projected coordinates + */ +CGLM_INLINE +void +glm_project(vec3 pos, mat4 m, vec4 vp, vec3 dest) { +#if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_ZO_BIT + glm_project_zo(pos, m, vp, dest); +#elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_NO_BIT + glm_project_no(pos, m, vp, dest); +#endif +} + +/*! + * @brief map object's z coordinate to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] v object coordinates + * @param[in] m MVP matrix + * + * @returns projected z coordinate + */ +CGLM_INLINE +float +glm_project_z(vec3 v, mat4 m) { +#if CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_ZO_BIT + return glm_project_z_zo(v, m); +#elif CGLM_CONFIG_CLIP_CONTROL & CGLM_CLIP_CONTROL_NO_BIT + return glm_project_z_no(v, m); +#endif +} + +/*! + * @brief define a picking region + * + * @param[in] center center [x, y] of a picking region in window coordinates + * @param[in] size size [width, height] of the picking region in window coordinates + * @param[in] vp viewport as [x, y, width, height] + * @param[out] dest projected coordinates + */ +CGLM_INLINE +void +glm_pickmatrix(vec2 center, vec2 size, vec4 vp, mat4 dest) { + mat4 res; + vec3 v; + + if (size[0] <= 0.0f || size[1] <= 0.0f) + return; + + /* Translate and scale the picked region to the entire window */ + v[0] = (vp[2] - 2.0f * (center[0] - vp[0])) / size[0]; + v[1] = (vp[3] - 2.0f * (center[1] - vp[1])) / size[1]; + v[2] = 0.0f; + + glm_translate_make(res, v); + + v[0] = vp[2] / size[0]; + v[1] = vp[3] / size[1]; + v[2] = 1.0f; + + glm_scale(res, v); + + glm_mat4_copy(res, dest); +} + +#endif /* cglm_project_h */ diff --git a/lib/cglm/include/cglm/quat.h b/lib/cglm/include/cglm/quat.h new file mode 100644 index 0000000..c76fa03 --- /dev/null +++ b/lib/cglm/include/cglm/quat.h @@ -0,0 +1,867 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_QUAT_IDENTITY_INIT + GLM_QUAT_IDENTITY + + Functions: + CGLM_INLINE void glm_quat_identity(versor q); + CGLM_INLINE void glm_quat_init(versor q, float x, float y, float z, float w); + CGLM_INLINE void glm_quat(versor q, float angle, float x, float y, float z); + CGLM_INLINE void glm_quatv(versor q, float angle, vec3 axis); + CGLM_INLINE void glm_quat_copy(versor q, versor dest); + CGLM_INLINE void glm_quat_from_vecs(vec3 a, vec3 b, versor dest); + CGLM_INLINE float glm_quat_norm(versor q); + CGLM_INLINE void glm_quat_normalize(versor q); + CGLM_INLINE void glm_quat_normalize_to(versor q, versor dest); + CGLM_INLINE float glm_quat_dot(versor p, versor q); + CGLM_INLINE void glm_quat_conjugate(versor q, versor dest); + CGLM_INLINE void glm_quat_inv(versor q, versor dest); + CGLM_INLINE void glm_quat_add(versor p, versor q, versor dest); + CGLM_INLINE void glm_quat_sub(versor p, versor q, versor dest); + CGLM_INLINE float glm_quat_real(versor q); + CGLM_INLINE void glm_quat_imag(versor q, vec3 dest); + CGLM_INLINE void glm_quat_imagn(versor q, vec3 dest); + CGLM_INLINE float glm_quat_imaglen(versor q); + CGLM_INLINE float glm_quat_angle(versor q); + CGLM_INLINE void glm_quat_axis(versor q, vec3 dest); + CGLM_INLINE void glm_quat_mul(versor p, versor q, versor dest); + CGLM_INLINE void glm_quat_mat4(versor q, mat4 dest); + CGLM_INLINE void glm_quat_mat4t(versor q, mat4 dest); + CGLM_INLINE void glm_quat_mat3(versor q, mat3 dest); + CGLM_INLINE void glm_quat_mat3t(versor q, mat3 dest); + CGLM_INLINE void glm_quat_lerp(versor from, versor to, float t, versor dest); + CGLM_INLINE void glm_quat_lerpc(versor from, versor to, float t, versor dest); + CGLM_INLINE void glm_quat_slerp(versor q, versor r, float t, versor dest); + CGLM_INLINE void glm_quat_nlerp(versor q, versor r, float t, versor dest); + CGLM_INLINE void glm_quat_look(vec3 eye, versor ori, mat4 dest); + CGLM_INLINE void glm_quat_for(vec3 dir, vec3 fwd, vec3 up, versor dest); + CGLM_INLINE void glm_quat_forp(vec3 from, + vec3 to, + vec3 fwd, + vec3 up, + versor dest); + CGLM_INLINE void glm_quat_rotatev(versor q, vec3 v, vec3 dest); + CGLM_INLINE void glm_quat_rotate(mat4 m, versor q, mat4 dest); + */ + +#ifndef cglm_quat_h +#define cglm_quat_h + +#include "common.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" +#include "mat3.h" +#include "affine-mat.h" +#include "affine.h" + +#ifdef CGLM_SSE_FP +# include "simd/sse2/quat.h" +#endif + +#ifdef CGLM_NEON_FP +# include "simd/neon/quat.h" +#endif + +CGLM_INLINE void glm_quat_normalize(versor q); + +/* + * IMPORTANT: + * ---------------------------------------------------------------------------- + * cglm stores quat as [x, y, z, w] since v0.3.6 + * + * it was [w, x, y, z] before v0.3.6 it has been changed to [x, y, z, w] + * with v0.3.6 version. + * ---------------------------------------------------------------------------- + */ + +#define GLM_QUAT_IDENTITY_INIT {0.0f, 0.0f, 0.0f, 1.0f} +#define GLM_QUAT_IDENTITY ((versor)GLM_QUAT_IDENTITY_INIT) + +/*! + * @brief makes given quat to identity + * + * @param[in, out] q quaternion + */ +CGLM_INLINE +void +glm_quat_identity(versor q) { + CGLM_ALIGN(16) versor v = GLM_QUAT_IDENTITY_INIT; + glm_vec4_copy(v, q); +} + +/*! + * @brief make given quaternion array's each element identity quaternion + * + * @param[in, out] q quat array (must be aligned (16) + * if alignment is not disabled) + * + * @param[in] count count of quaternions + */ +CGLM_INLINE +void +glm_quat_identity_array(versor * __restrict q, size_t count) { + CGLM_ALIGN(16) versor v = GLM_QUAT_IDENTITY_INIT; + size_t i; + + for (i = 0; i < count; i++) { + glm_vec4_copy(v, q[i]); + } +} + +/*! + * @brief inits quaterion with raw values + * + * @param[out] q quaternion + * @param[in] x x + * @param[in] y y + * @param[in] z z + * @param[in] w w (real part) + */ +CGLM_INLINE +void +glm_quat_init(versor q, float x, float y, float z, float w) { + q[0] = x; + q[1] = y; + q[2] = z; + q[3] = w; +} + +/*! + * @brief creates NEW quaternion with axis vector + * + * @param[out] q quaternion + * @param[in] angle angle (radians) + * @param[in] axis axis + */ +CGLM_INLINE +void +glm_quatv(versor q, float angle, vec3 axis) { + CGLM_ALIGN(8) vec3 k; + float a, c, s; + + a = angle * 0.5f; + c = cosf(a); + s = sinf(a); + + glm_normalize_to(axis, k); + + q[0] = s * k[0]; + q[1] = s * k[1]; + q[2] = s * k[2]; + q[3] = c; +} + +/*! + * @brief creates NEW quaternion with individual axis components + * + * @param[out] q quaternion + * @param[in] angle angle (radians) + * @param[in] x axis.x + * @param[in] y axis.y + * @param[in] z axis.z + */ +CGLM_INLINE +void +glm_quat(versor q, float angle, float x, float y, float z) { + CGLM_ALIGN(8) vec3 axis = {x, y, z}; + glm_quatv(q, angle, axis); +} + +/*! + * @brief copy quaternion to another one + * + * @param[in] q quaternion + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_quat_copy(versor q, versor dest) { + glm_vec4_copy(q, dest); +} + +/*! + * @brief compute quaternion rotating vector A to vector B + * + * @param[in] a vec3 (must have unit length) + * @param[in] b vec3 (must have unit length) + * @param[out] dest quaternion (of unit length) + */ +CGLM_INLINE +void +glm_quat_from_vecs(vec3 a, vec3 b, versor dest) { + CGLM_ALIGN(8) vec3 axis; + float cos_theta; + float cos_half_theta; + + cos_theta = glm_vec3_dot(a, b); + if (cos_theta >= 1.f - GLM_FLT_EPSILON) { /* a ∥ b */ + glm_quat_identity(dest); + return; + } + if (cos_theta < -1.f + GLM_FLT_EPSILON) { /* angle(a, b) = π */ + glm_vec3_ortho(a, axis); + cos_half_theta = 0.f; /* cos π/2 */ + } else { + glm_vec3_cross(a, b, axis); + cos_half_theta = 1.0f + cos_theta; /* cos 0 + cos θ */ + } + + glm_quat_init(dest, axis[0], axis[1], axis[2], cos_half_theta); + glm_quat_normalize(dest); +} + +/*! + * @brief returns norm (magnitude) of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +float +glm_quat_norm(versor q) { + return glm_vec4_norm(q); +} + +/*! + * @brief normalize quaternion and store result in dest + * + * @param[in] q quaternion to normalze + * @param[out] dest destination quaternion + */ +CGLM_INLINE +void +glm_quat_normalize_to(versor q, versor dest) { +#if defined( __SSE2__ ) || defined( __SSE2__ ) + __m128 xdot, x0; + float dot; + + x0 = glmm_load(q); + xdot = glmm_vdot(x0, x0); + dot = _mm_cvtss_f32(xdot); + + if (dot <= 0.0f) { + glm_quat_identity(dest); + return; + } + + glmm_store(dest, _mm_div_ps(x0, _mm_sqrt_ps(xdot))); +#else + float dot; + + dot = glm_vec4_norm2(q); + + if (dot <= 0.0f) { + glm_quat_identity(dest); + return; + } + + glm_vec4_scale(q, 1.0f / sqrtf(dot), dest); +#endif +} + +/*! + * @brief normalize quaternion + * + * @param[in, out] q quaternion + */ +CGLM_INLINE +void +glm_quat_normalize(versor q) { + glm_quat_normalize_to(q, q); +} + +/*! + * @brief dot product of two quaternion + * + * @param[in] p quaternion 1 + * @param[in] q quaternion 2 + */ +CGLM_INLINE +float +glm_quat_dot(versor p, versor q) { + return glm_vec4_dot(p, q); +} + +/*! + * @brief conjugate of quaternion + * + * @param[in] q quaternion + * @param[out] dest conjugate + */ +CGLM_INLINE +void +glm_quat_conjugate(versor q, versor dest) { + glm_vec4_negate_to(q, dest); + dest[3] = -dest[3]; +} + +/*! + * @brief inverse of non-zero quaternion + * + * @param[in] q quaternion + * @param[out] dest inverse quaternion + */ +CGLM_INLINE +void +glm_quat_inv(versor q, versor dest) { + CGLM_ALIGN(16) versor conj; + glm_quat_conjugate(q, conj); + glm_vec4_scale(conj, 1.0f / glm_vec4_norm2(q), dest); +} + +/*! + * @brief add (componentwise) two quaternions and store result in dest + * + * @param[in] p quaternion 1 + * @param[in] q quaternion 2 + * @param[out] dest result quaternion + */ +CGLM_INLINE +void +glm_quat_add(versor p, versor q, versor dest) { + glm_vec4_add(p, q, dest); +} + +/*! + * @brief subtract (componentwise) two quaternions and store result in dest + * + * @param[in] p quaternion 1 + * @param[in] q quaternion 2 + * @param[out] dest result quaternion + */ +CGLM_INLINE +void +glm_quat_sub(versor p, versor q, versor dest) { + glm_vec4_sub(p, q, dest); +} + +/*! + * @brief returns real part of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +float +glm_quat_real(versor q) { + return q[3]; +} + +/*! + * @brief returns imaginary part of quaternion + * + * @param[in] q quaternion + * @param[out] dest imag + */ +CGLM_INLINE +void +glm_quat_imag(versor q, vec3 dest) { + dest[0] = q[0]; + dest[1] = q[1]; + dest[2] = q[2]; +} + +/*! + * @brief returns normalized imaginary part of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +void +glm_quat_imagn(versor q, vec3 dest) { + glm_normalize_to(q, dest); +} + +/*! + * @brief returns length of imaginary part of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +float +glm_quat_imaglen(versor q) { + return glm_vec3_norm(q); +} + +/*! + * @brief returns angle of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +float +glm_quat_angle(versor q) { + /* + sin(theta / 2) = length(x*x + y*y + z*z) + cos(theta / 2) = w + theta = 2 * atan(sin(theta / 2) / cos(theta / 2)) + */ + return 2.0f * atan2f(glm_quat_imaglen(q), glm_quat_real(q)); +} + +/*! + * @brief axis of quaternion + * + * @param[in] q quaternion + * @param[out] dest axis of quaternion + */ +CGLM_INLINE +void +glm_quat_axis(versor q, vec3 dest) { + glm_quat_imagn(q, dest); +} + +/*! + * @brief multiplies two quaternion and stores result in dest + * this is also called Hamilton Product + * + * According to WikiPedia: + * The product of two rotation quaternions [clarification needed] will be + * equivalent to the rotation q followed by the rotation p + * + * @param[in] p quaternion 1 + * @param[in] q quaternion 2 + * @param[out] dest result quaternion + */ +CGLM_INLINE +void +glm_quat_mul(versor p, versor q, versor dest) { + /* + + (a1 b2 + b1 a2 + c1 d2 − d1 c2)i + + (a1 c2 − b1 d2 + c1 a2 + d1 b2)j + + (a1 d2 + b1 c2 − c1 b2 + d1 a2)k + a1 a2 − b1 b2 − c1 c2 − d1 d2 + */ +#if defined( __SSE__ ) || defined( __SSE2__ ) + glm_quat_mul_sse2(p, q, dest); +#elif defined(CGLM_NEON_FP) + glm_quat_mul_neon(p, q, dest); +#else + dest[0] = p[3] * q[0] + p[0] * q[3] + p[1] * q[2] - p[2] * q[1]; + dest[1] = p[3] * q[1] - p[0] * q[2] + p[1] * q[3] + p[2] * q[0]; + dest[2] = p[3] * q[2] + p[0] * q[1] - p[1] * q[0] + p[2] * q[3]; + dest[3] = p[3] * q[3] - p[0] * q[0] - p[1] * q[1] - p[2] * q[2]; +#endif +} + +/*! + * @brief convert quaternion to mat4 + * + * @param[in] q quaternion + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_quat_mat4(versor q, mat4 dest) { + float w, x, y, z, + xx, yy, zz, + xy, yz, xz, + wx, wy, wz, norm, s; + + norm = glm_quat_norm(q); + s = norm > 0.0f ? 2.0f / norm : 0.0f; + + x = q[0]; + y = q[1]; + z = q[2]; + w = q[3]; + + xx = s * x * x; xy = s * x * y; wx = s * w * x; + yy = s * y * y; yz = s * y * z; wy = s * w * y; + zz = s * z * z; xz = s * x * z; wz = s * w * z; + + dest[0][0] = 1.0f - yy - zz; + dest[1][1] = 1.0f - xx - zz; + dest[2][2] = 1.0f - xx - yy; + + dest[0][1] = xy + wz; + dest[1][2] = yz + wx; + dest[2][0] = xz + wy; + + dest[1][0] = xy - wz; + dest[2][1] = yz - wx; + dest[0][2] = xz - wy; + + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief convert quaternion to mat4 (transposed) + * + * @param[in] q quaternion + * @param[out] dest result matrix as transposed + */ +CGLM_INLINE +void +glm_quat_mat4t(versor q, mat4 dest) { + float w, x, y, z, + xx, yy, zz, + xy, yz, xz, + wx, wy, wz, norm, s; + + norm = glm_quat_norm(q); + s = norm > 0.0f ? 2.0f / norm : 0.0f; + + x = q[0]; + y = q[1]; + z = q[2]; + w = q[3]; + + xx = s * x * x; xy = s * x * y; wx = s * w * x; + yy = s * y * y; yz = s * y * z; wy = s * w * y; + zz = s * z * z; xz = s * x * z; wz = s * w * z; + + dest[0][0] = 1.0f - yy - zz; + dest[1][1] = 1.0f - xx - zz; + dest[2][2] = 1.0f - xx - yy; + + dest[1][0] = xy + wz; + dest[2][1] = yz + wx; + dest[0][2] = xz + wy; + + dest[0][1] = xy - wz; + dest[1][2] = yz - wx; + dest[2][0] = xz - wy; + + dest[0][3] = 0.0f; + dest[1][3] = 0.0f; + dest[2][3] = 0.0f; + dest[3][0] = 0.0f; + dest[3][1] = 0.0f; + dest[3][2] = 0.0f; + dest[3][3] = 1.0f; +} + +/*! + * @brief convert quaternion to mat3 + * + * @param[in] q quaternion + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_quat_mat3(versor q, mat3 dest) { + float w, x, y, z, + xx, yy, zz, + xy, yz, xz, + wx, wy, wz, norm, s; + + norm = glm_quat_norm(q); + s = norm > 0.0f ? 2.0f / norm : 0.0f; + + x = q[0]; + y = q[1]; + z = q[2]; + w = q[3]; + + xx = s * x * x; xy = s * x * y; wx = s * w * x; + yy = s * y * y; yz = s * y * z; wy = s * w * y; + zz = s * z * z; xz = s * x * z; wz = s * w * z; + + dest[0][0] = 1.0f - yy - zz; + dest[1][1] = 1.0f - xx - zz; + dest[2][2] = 1.0f - xx - yy; + + dest[0][1] = xy + wz; + dest[1][2] = yz + wx; + dest[2][0] = xz + wy; + + dest[1][0] = xy - wz; + dest[2][1] = yz - wx; + dest[0][2] = xz - wy; +} + +/*! + * @brief convert quaternion to mat3 (transposed) + * + * @param[in] q quaternion + * @param[out] dest result matrix + */ +CGLM_INLINE +void +glm_quat_mat3t(versor q, mat3 dest) { + float w, x, y, z, + xx, yy, zz, + xy, yz, xz, + wx, wy, wz, norm, s; + + norm = glm_quat_norm(q); + s = norm > 0.0f ? 2.0f / norm : 0.0f; + + x = q[0]; + y = q[1]; + z = q[2]; + w = q[3]; + + xx = s * x * x; xy = s * x * y; wx = s * w * x; + yy = s * y * y; yz = s * y * z; wy = s * w * y; + zz = s * z * z; xz = s * x * z; wz = s * w * z; + + dest[0][0] = 1.0f - yy - zz; + dest[1][1] = 1.0f - xx - zz; + dest[2][2] = 1.0f - xx - yy; + + dest[1][0] = xy + wz; + dest[2][1] = yz + wx; + dest[0][2] = xz + wy; + + dest[0][1] = xy - wz; + dest[1][2] = yz - wx; + dest[2][0] = xz - wy; +} + +/*! + * @brief interpolates between two quaternions + * using linear interpolation (LERP) + * + * @param[in] from from + * @param[in] to to + * @param[in] t interpolant (amount) + * @param[out] dest result quaternion + */ +CGLM_INLINE +void +glm_quat_lerp(versor from, versor to, float t, versor dest) { + glm_vec4_lerp(from, to, t, dest); +} + +/*! + * @brief interpolates between two quaternions + * using linear interpolation (LERP) + * + * @param[in] from from + * @param[in] to to + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @param[out] dest result quaternion + */ +CGLM_INLINE +void +glm_quat_lerpc(versor from, versor to, float t, versor dest) { + glm_vec4_lerpc(from, to, t, dest); +} + +/*! + * @brief interpolates between two quaternions + * taking the shortest rotation path using + * normalized linear interpolation (NLERP) + * + * @param[in] from from + * @param[in] to to + * @param[in] t interpolant (amount) + * @param[out] dest result quaternion + */ +CGLM_INLINE +void +glm_quat_nlerp(versor from, versor to, float t, versor dest) { + versor target; + float dot; + + dot = glm_vec4_dot(from, to); + + glm_vec4_scale(to, (dot >= 0) ? 1.0f : -1.0f, target); + glm_quat_lerp(from, target, t, dest); + glm_quat_normalize(dest); +} + +/*! + * @brief interpolates between two quaternions + * using spherical linear interpolation (SLERP) + * + * @param[in] from from + * @param[in] to to + * @param[in] t amout + * @param[out] dest result quaternion + */ +CGLM_INLINE +void +glm_quat_slerp(versor from, versor to, float t, versor dest) { + CGLM_ALIGN(16) vec4 q1, q2; + float cosTheta, sinTheta, angle; + + cosTheta = glm_quat_dot(from, to); + glm_quat_copy(from, q1); + + if (fabsf(cosTheta) >= 1.0f) { + glm_quat_copy(q1, dest); + return; + } + + if (cosTheta < 0.0f) { + glm_vec4_negate(q1); + cosTheta = -cosTheta; + } + + sinTheta = sqrtf(1.0f - cosTheta * cosTheta); + + /* LERP to avoid zero division */ + if (fabsf(sinTheta) < 0.001f) { + glm_quat_lerp(from, to, t, dest); + return; + } + + /* SLERP */ + angle = acosf(cosTheta); + glm_vec4_scale(q1, sinf((1.0f - t) * angle), q1); + glm_vec4_scale(to, sinf(t * angle), q2); + + glm_vec4_add(q1, q2, q1); + glm_vec4_scale(q1, 1.0f / sinTheta, dest); +} + +/*! + * @brief creates view matrix using quaternion as camera orientation + * + * @param[in] eye eye + * @param[in] ori orientation in world space as quaternion + * @param[out] dest view matrix + */ +CGLM_INLINE +void +glm_quat_look(vec3 eye, versor ori, mat4 dest) { + /* orientation */ + glm_quat_mat4t(ori, dest); + + /* translate */ + glm_mat4_mulv3(dest, eye, 1.0f, dest[3]); + glm_vec3_negate(dest[3]); +} + +/*! + * @brief creates look rotation quaternion + * + * @param[in] dir direction to look + * @param[in] up up vector + * @param[out] dest destination quaternion + */ +CGLM_INLINE +void +glm_quat_for(vec3 dir, vec3 up, versor dest) { + CGLM_ALIGN_MAT mat3 m; + + glm_vec3_normalize_to(dir, m[2]); + + /* No need to negate in LH, but we use RH here */ + glm_vec3_negate(m[2]); + + glm_vec3_crossn(up, m[2], m[0]); + glm_vec3_cross(m[2], m[0], m[1]); + + glm_mat3_quat(m, dest); +} + +/*! + * @brief creates look rotation quaternion using source and + * destination positions p suffix stands for position + * + * @param[in] from source point + * @param[in] to destination point + * @param[in] up up vector + * @param[out] dest destination quaternion + */ +CGLM_INLINE +void +glm_quat_forp(vec3 from, vec3 to, vec3 up, versor dest) { + CGLM_ALIGN(8) vec3 dir; + glm_vec3_sub(to, from, dir); + glm_quat_for(dir, up, dest); +} + +/*! + * @brief rotate vector using using quaternion + * + * @param[in] q quaternion + * @param[in] v vector to rotate + * @param[out] dest rotated vector + */ +CGLM_INLINE +void +glm_quat_rotatev(versor q, vec3 v, vec3 dest) { + CGLM_ALIGN(16) versor p; + CGLM_ALIGN(8) vec3 u, v1, v2; + float s; + + glm_quat_normalize_to(q, p); + glm_quat_imag(p, u); + s = glm_quat_real(p); + + glm_vec3_scale(u, 2.0f * glm_vec3_dot(u, v), v1); + glm_vec3_scale(v, s * s - glm_vec3_dot(u, u), v2); + glm_vec3_add(v1, v2, v1); + + glm_vec3_cross(u, v, v2); + glm_vec3_scale(v2, 2.0f * s, v2); + + glm_vec3_add(v1, v2, dest); +} + +/*! + * @brief rotate existing transform matrix using quaternion + * + * @param[in] m existing transform matrix + * @param[in] q quaternion + * @param[out] dest rotated matrix/transform + */ +CGLM_INLINE +void +glm_quat_rotate(mat4 m, versor q, mat4 dest) { + CGLM_ALIGN_MAT mat4 rot; + glm_quat_mat4(q, rot); + glm_mul_rot(m, rot, dest); +} + +/*! + * @brief rotate existing transform matrix using quaternion at pivot point + * + * @param[in, out] m existing transform matrix + * @param[in] q quaternion + * @param[out] pivot pivot + */ +CGLM_INLINE +void +glm_quat_rotate_at(mat4 m, versor q, vec3 pivot) { + CGLM_ALIGN(8) vec3 pivotInv; + + glm_vec3_negate_to(pivot, pivotInv); + + glm_translate(m, pivot); + glm_quat_rotate(m, q, m); + glm_translate(m, pivotInv); +} + +/*! + * @brief rotate NEW transform matrix using quaternion at pivot point + * + * this creates rotation matrix, it assumes you don't have a matrix + * + * this should work faster than glm_quat_rotate_at because it reduces + * one glm_translate. + * + * @param[out] m existing transform matrix + * @param[in] q quaternion + * @param[in] pivot pivot + */ +CGLM_INLINE +void +glm_quat_rotate_atm(mat4 m, versor q, vec3 pivot) { + CGLM_ALIGN(8) vec3 pivotInv; + + glm_vec3_negate_to(pivot, pivotInv); + + glm_translate_make(m, pivot); + glm_quat_rotate(m, q, m); + glm_translate(m, pivotInv); +} + +#endif /* cglm_quat_h */ diff --git a/lib/cglm/include/cglm/ray.h b/lib/cglm/include/cglm/ray.h new file mode 100644 index 0000000..ced1ad6 --- /dev/null +++ b/lib/cglm/include/cglm/ray.h @@ -0,0 +1,77 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE bool glm_line_triangle_intersect(vec3 origin, + vec3 direction, + vec3 v0, + vec3 v1, + vec3 v2, + float *d); +*/ + +#ifndef cglm_ray_h +#define cglm_ray_h + +#include "vec3.h" + +/*! + * @brief Möller–Trumbore ray-triangle intersection algorithm + * + * @param[in] origin origin of ray + * @param[in] direction direction of ray + * @param[in] v0 first vertex of triangle + * @param[in] v1 second vertex of triangle + * @param[in] v2 third vertex of triangle + * @param[in, out] d distance to intersection + * @return whether there is intersection + */ + +CGLM_INLINE +bool +glm_ray_triangle(vec3 origin, + vec3 direction, + vec3 v0, + vec3 v1, + vec3 v2, + float *d) { + vec3 edge1, edge2, p, t, q; + float det, inv_det, u, v, dist; + const float epsilon = 0.000001f; + + glm_vec3_sub(v1, v0, edge1); + glm_vec3_sub(v2, v0, edge2); + glm_vec3_cross(direction, edge2, p); + + det = glm_vec3_dot(edge1, p); + if (det > -epsilon && det < epsilon) + return false; + + inv_det = 1.0f / det; + + glm_vec3_sub(origin, v0, t); + + u = inv_det * glm_vec3_dot(t, p); + if (u < 0.0f || u > 1.0f) + return false; + + glm_vec3_cross(t, edge1, q); + + v = inv_det * glm_vec3_dot(direction, q); + if (v < 0.0f || u + v > 1.0f) + return false; + + dist = inv_det * glm_vec3_dot(edge2, q); + + if (d) + *d = dist; + + return dist > epsilon; +} + +#endif diff --git a/lib/cglm/include/cglm/simd/arm.h b/lib/cglm/include/cglm/simd/arm.h new file mode 100644 index 0000000..50cec46 --- /dev/null +++ b/lib/cglm/include/cglm/simd/arm.h @@ -0,0 +1,173 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_simd_arm_h +#define cglm_simd_arm_h +#include "intrin.h" +#ifdef CGLM_SIMD_ARM + +#if defined(_M_ARM64) || defined(_M_HYBRID_X86_ARM64) || defined(_M_ARM64EC) || defined(__aarch64__) +# define CGLM_ARM64 1 +#endif + +#define glmm_load(p) vld1q_f32(p) +#define glmm_store(p, a) vst1q_f32(p, a) + +#define glmm_set1(x) vdupq_n_f32(x) +#define glmm_128 float32x4_t + +#define glmm_splat_x(x) vdupq_lane_f32(vget_low_f32(x), 0) +#define glmm_splat_y(x) vdupq_lane_f32(vget_low_f32(x), 1) +#define glmm_splat_z(x) vdupq_lane_f32(vget_high_f32(x), 0) +#define glmm_splat_w(x) vdupq_lane_f32(vget_high_f32(x), 1) + +#define glmm_xor(a, b) \ + vreinterpretq_f32_s32(veorq_s32(vreinterpretq_s32_f32(a), \ + vreinterpretq_s32_f32(b))) + +#define glmm_swplane(v) vextq_f32(v, v, 2) +#define glmm_low(x) vget_low_f32(x) +#define glmm_high(x) vget_high_f32(x) + +#define glmm_combine_ll(x, y) vcombine_f32(vget_low_f32(x), vget_low_f32(y)) +#define glmm_combine_hl(x, y) vcombine_f32(vget_high_f32(x), vget_low_f32(y)) +#define glmm_combine_lh(x, y) vcombine_f32(vget_low_f32(x), vget_high_f32(y)) +#define glmm_combine_hh(x, y) vcombine_f32(vget_high_f32(x), vget_high_f32(y)) + +static inline +float32x4_t +glmm_abs(float32x4_t v) { + return vabsq_f32(v); +} + +static inline +float32x4_t +glmm_vhadd(float32x4_t v) { + return vaddq_f32(vaddq_f32(glmm_splat_x(v), glmm_splat_y(v)), + vaddq_f32(glmm_splat_z(v), glmm_splat_w(v))); + /* + this seems slower: + v = vaddq_f32(v, vrev64q_f32(v)); + return vaddq_f32(v, vcombine_f32(vget_high_f32(v), vget_low_f32(v))); + */ +} + +static inline +float +glmm_hadd(float32x4_t v) { +#if CGLM_ARM64 + return vaddvq_f32(v); +#else + v = vaddq_f32(v, vrev64q_f32(v)); + v = vaddq_f32(v, vcombine_f32(vget_high_f32(v), vget_low_f32(v))); + return vgetq_lane_f32(v, 0); +#endif +} + +static inline +float +glmm_hmin(float32x4_t v) { + float32x2_t t; + t = vpmin_f32(vget_low_f32(v), vget_high_f32(v)); + t = vpmin_f32(t, t); + return vget_lane_f32(t, 0); +} + +static inline +float +glmm_hmax(float32x4_t v) { + float32x2_t t; + t = vpmax_f32(vget_low_f32(v), vget_high_f32(v)); + t = vpmax_f32(t, t); + return vget_lane_f32(t, 0); +} + +static inline +float +glmm_dot(float32x4_t a, float32x4_t b) { + return glmm_hadd(vmulq_f32(a, b)); +} + +static inline +float +glmm_norm(float32x4_t a) { + return sqrtf(glmm_dot(a, a)); +} + +static inline +float +glmm_norm2(float32x4_t a) { + return glmm_dot(a, a); +} + +static inline +float +glmm_norm_one(float32x4_t a) { + return glmm_hadd(glmm_abs(a)); +} + +static inline +float +glmm_norm_inf(float32x4_t a) { + return glmm_hmax(glmm_abs(a)); +} + +static inline +float32x4_t +glmm_div(float32x4_t a, float32x4_t b) { +#if CGLM_ARM64 + return vdivq_f32(a, b); +#else + /* 2 iterations of Newton-Raphson refinement of reciprocal */ + float32x4_t r0, r1; + r0 = vrecpeq_f32(b); + r1 = vrecpsq_f32(r0, b); + r0 = vmulq_f32(r1, r0); + r1 = vrecpsq_f32(r0, b); + r0 = vmulq_f32(r1, r0); + return vmulq_f32(a, r0); +#endif +} + +static inline +float32x4_t +glmm_fmadd(float32x4_t a, float32x4_t b, float32x4_t c) { +#if CGLM_ARM64 + return vfmaq_f32(c, a, b); /* why vfmaq_f32 is slower than vmlaq_f32 ??? */ +#else + return vmlaq_f32(c, a, b); +#endif +} + +static inline +float32x4_t +glmm_fnmadd(float32x4_t a, float32x4_t b, float32x4_t c) { +#if CGLM_ARM64 + return vfmsq_f32(c, a, b); +#else + return vmlsq_f32(c, a, b); +#endif +} + +static inline +float32x4_t +glmm_fmsub(float32x4_t a, float32x4_t b, float32x4_t c) { +#if CGLM_ARM64 + return vfmsq_f32(c, a, b); +#else + return vmlsq_f32(c, a, b); +#endif +} + +static inline +float32x4_t +glmm_fnmsub(float32x4_t a, float32x4_t b, float32x4_t c) { + return vsubq_f32(vdupq_n_f32(0.0f), glmm_fmadd(a, b, c)); +} + +#endif +#endif /* cglm_simd_arm_h */ diff --git a/lib/cglm/include/cglm/simd/avx/affine.h b/lib/cglm/include/cglm/simd/avx/affine.h new file mode 100644 index 0000000..b02ff0c --- /dev/null +++ b/lib/cglm/include/cglm/simd/avx/affine.h @@ -0,0 +1,66 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_affine_mat_avx_h +#define cglm_affine_mat_avx_h +#ifdef __AVX__ + +#include "../../common.h" +#include "../intrin.h" + +#include + +CGLM_INLINE +void +glm_mul_avx(mat4 m1, mat4 m2, mat4 dest) { + /* D = R * L (Column-Major) */ + + __m256 y0, y1, y2, y3, y4, y5, y6, y7, y8, y9; + + y0 = glmm_load256(m2[0]); /* h g f e d c b a */ + y1 = glmm_load256(m2[2]); /* p o n m l k j i */ + + y2 = glmm_load256(m1[0]); /* h g f e d c b a */ + y3 = glmm_load256(m1[2]); /* p o n m l k j i */ + + /* 0x03: 0b00000011 */ + y4 = _mm256_permute2f128_ps(y2, y2, 0x03); /* d c b a h g f e */ + y5 = _mm256_permute2f128_ps(y3, y3, 0x03); /* l k j i p o n m */ + + /* f f f f a a a a */ + /* h h h h c c c c */ + /* e e e e b b b b */ + /* g g g g d d d d */ + y6 = _mm256_permutevar_ps(y0, _mm256_set_epi32(1, 1, 1, 1, 0, 0, 0, 0)); + y7 = _mm256_permutevar_ps(y0, _mm256_set_epi32(3, 3, 3, 3, 2, 2, 2, 2)); + y8 = _mm256_permutevar_ps(y0, _mm256_set_epi32(0, 0, 0, 0, 1, 1, 1, 1)); + y9 = _mm256_permutevar_ps(y0, _mm256_set_epi32(2, 2, 2, 2, 3, 3, 3, 3)); + + glmm_store256(dest[0], + _mm256_add_ps(_mm256_add_ps(_mm256_mul_ps(y2, y6), + _mm256_mul_ps(y3, y7)), + _mm256_add_ps(_mm256_mul_ps(y4, y8), + _mm256_mul_ps(y5, y9)))); + + /* n n n n i i i i */ + /* p p p p k k k k */ + /* m m m m j j j j */ + /* o o o o l l l l */ + y6 = _mm256_permutevar_ps(y1, _mm256_set_epi32(1, 1, 1, 1, 0, 0, 0, 0)); + y7 = _mm256_permutevar_ps(y1, _mm256_set_epi32(3, 3, 3, 3, 2, 2, 2, 2)); + y8 = _mm256_permutevar_ps(y1, _mm256_set_epi32(0, 0, 0, 0, 1, 1, 1, 1)); + y9 = _mm256_permutevar_ps(y1, _mm256_set_epi32(2, 2, 2, 2, 3, 3, 3, 3)); + + glmm_store256(dest[2], + _mm256_add_ps(_mm256_add_ps(_mm256_mul_ps(y2, y6), + _mm256_mul_ps(y3, y7)), + _mm256_add_ps(_mm256_mul_ps(y4, y8), + _mm256_mul_ps(y5, y9)))); +} + +#endif +#endif /* cglm_affine_mat_avx_h */ diff --git a/lib/cglm/include/cglm/simd/avx/mat4.h b/lib/cglm/include/cglm/simd/avx/mat4.h new file mode 100644 index 0000000..e8c36c8 --- /dev/null +++ b/lib/cglm/include/cglm/simd/avx/mat4.h @@ -0,0 +1,76 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_mat_simd_avx_h +#define cglm_mat_simd_avx_h +#ifdef __AVX__ + +#include "../../common.h" +#include "../intrin.h" + +#include + +CGLM_INLINE +void +glm_mat4_scale_avx(mat4 m, float s) { + __m256 y0; + y0 = _mm256_set1_ps(s); + + glmm_store256(m[0], _mm256_mul_ps(y0, glmm_load256(m[0]))); + glmm_store256(m[2], _mm256_mul_ps(y0, glmm_load256(m[2]))); +} + +CGLM_INLINE +void +glm_mat4_mul_avx(mat4 m1, mat4 m2, mat4 dest) { + /* D = R * L (Column-Major) */ + + __m256 y0, y1, y2, y3, y4, y5, y6, y7, y8, y9; + + y0 = glmm_load256(m2[0]); /* h g f e d c b a */ + y1 = glmm_load256(m2[2]); /* p o n m l k j i */ + + y2 = glmm_load256(m1[0]); /* h g f e d c b a */ + y3 = glmm_load256(m1[2]); /* p o n m l k j i */ + + /* 0x03: 0b00000011 */ + y4 = _mm256_permute2f128_ps(y2, y2, 0x03); /* d c b a h g f e */ + y5 = _mm256_permute2f128_ps(y3, y3, 0x03); /* l k j i p o n m */ + + /* f f f f a a a a */ + /* h h h h c c c c */ + /* e e e e b b b b */ + /* g g g g d d d d */ + y6 = _mm256_permutevar_ps(y0, _mm256_set_epi32(1, 1, 1, 1, 0, 0, 0, 0)); + y7 = _mm256_permutevar_ps(y0, _mm256_set_epi32(3, 3, 3, 3, 2, 2, 2, 2)); + y8 = _mm256_permutevar_ps(y0, _mm256_set_epi32(0, 0, 0, 0, 1, 1, 1, 1)); + y9 = _mm256_permutevar_ps(y0, _mm256_set_epi32(2, 2, 2, 2, 3, 3, 3, 3)); + + glmm_store256(dest[0], + _mm256_add_ps(_mm256_add_ps(_mm256_mul_ps(y2, y6), + _mm256_mul_ps(y3, y7)), + _mm256_add_ps(_mm256_mul_ps(y4, y8), + _mm256_mul_ps(y5, y9)))); + + /* n n n n i i i i */ + /* p p p p k k k k */ + /* m m m m j j j j */ + /* o o o o l l l l */ + y6 = _mm256_permutevar_ps(y1, _mm256_set_epi32(1, 1, 1, 1, 0, 0, 0, 0)); + y7 = _mm256_permutevar_ps(y1, _mm256_set_epi32(3, 3, 3, 3, 2, 2, 2, 2)); + y8 = _mm256_permutevar_ps(y1, _mm256_set_epi32(0, 0, 0, 0, 1, 1, 1, 1)); + y9 = _mm256_permutevar_ps(y1, _mm256_set_epi32(2, 2, 2, 2, 3, 3, 3, 3)); + + glmm_store256(dest[2], + _mm256_add_ps(_mm256_add_ps(_mm256_mul_ps(y2, y6), + _mm256_mul_ps(y3, y7)), + _mm256_add_ps(_mm256_mul_ps(y4, y8), + _mm256_mul_ps(y5, y9)))); +} + +#endif +#endif /* cglm_mat_simd_avx_h */ diff --git a/lib/cglm/include/cglm/simd/intrin.h b/lib/cglm/include/cglm/simd/intrin.h new file mode 100644 index 0000000..a6ca5b0 --- /dev/null +++ b/lib/cglm/include/cglm/simd/intrin.h @@ -0,0 +1,90 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_intrin_h +#define cglm_intrin_h + +#if defined( _MSC_VER ) +# if (defined(_M_AMD64) || defined(_M_X64)) || _M_IX86_FP == 2 +# ifndef __SSE2__ +# define __SSE2__ +# endif +# elif _M_IX86_FP == 1 +# ifndef __SSE__ +# define __SSE__ +# endif +# endif +/* do not use alignment for older visual studio versions */ +# if _MSC_VER < 1913 /* Visual Studio 2017 version 15.6 */ +# define CGLM_ALL_UNALIGNED +# endif +#endif + +#if defined( __SSE__ ) || defined( __SSE2__ ) +# include +# include +# define CGLM_SSE_FP 1 +# ifndef CGLM_SIMD_x86 +# define CGLM_SIMD_x86 +# endif +#endif + +#if defined(__SSE3__) +# include +# ifndef CGLM_SIMD_x86 +# define CGLM_SIMD_x86 +# endif +#endif + +#if defined(__SSE4_1__) +# include +# ifndef CGLM_SIMD_x86 +# define CGLM_SIMD_x86 +# endif +#endif + +#if defined(__SSE4_2__) +# include +# ifndef CGLM_SIMD_x86 +# define CGLM_SIMD_x86 +# endif +#endif + +#ifdef __AVX__ +# include +# define CGLM_AVX_FP 1 +# ifndef CGLM_SIMD_x86 +# define CGLM_SIMD_x86 +# endif +#endif + +/* ARM Neon */ +#if defined(__ARM_NEON) +# include +# if defined(__ARM_NEON_FP) +# define CGLM_NEON_FP 1 +# ifndef CGLM_SIMD_ARM +# define CGLM_SIMD_ARM +# endif +# endif +#endif + +#if defined(CGLM_SIMD_x86) || defined(CGLM_NEON_FP) +# ifndef CGLM_SIMD +# define CGLM_SIMD +# endif +#endif + +#if defined(CGLM_SIMD_x86) +# include "x86.h" +#endif + +#if defined(CGLM_SIMD_ARM) +# include "arm.h" +#endif + +#endif /* cglm_intrin_h */ diff --git a/lib/cglm/include/cglm/simd/neon/affine.h b/lib/cglm/include/cglm/simd/neon/affine.h new file mode 100644 index 0000000..da0a350 --- /dev/null +++ b/lib/cglm/include/cglm/simd/neon/affine.h @@ -0,0 +1,121 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_affine_neon_h +#define cglm_affine_neon_h +#if defined(__ARM_NEON_FP) + +#include "../../common.h" +#include "../intrin.h" + +CGLM_INLINE +void +glm_mul_neon(mat4 m1, mat4 m2, mat4 dest) { + /* D = R * L (Column-Major) */ + + glmm_128 l, r0, r1, r2, r3, v0, v1, v2, v3; + + l = glmm_load(m1[0]); + r0 = glmm_load(m2[0]); + r1 = glmm_load(m2[1]); + r2 = glmm_load(m2[2]); + r3 = glmm_load(m2[3]); + + v0 = vmulq_f32(glmm_splat_x(r0), l); + v1 = vmulq_f32(glmm_splat_x(r1), l); + v2 = vmulq_f32(glmm_splat_x(r2), l); + v3 = vmulq_f32(glmm_splat_x(r3), l); + + l = glmm_load(m1[1]); + v0 = glmm_fmadd(glmm_splat_y(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_y(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_y(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_y(r3), l, v3); + + l = glmm_load(m1[2]); + v0 = glmm_fmadd(glmm_splat_z(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_z(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_z(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_z(r3), l, v3); + + v3 = glmm_fmadd(glmm_splat_w(r3), glmm_load(m1[3]), v3); + + glmm_store(dest[0], v0); + glmm_store(dest[1], v1); + glmm_store(dest[2], v2); + glmm_store(dest[3], v3); +} + +CGLM_INLINE +void +glm_mul_rot_neon(mat4 m1, mat4 m2, mat4 dest) { + /* D = R * L (Column-Major) */ + + glmm_128 l, r0, r1, r2, v0, v1, v2; + + l = glmm_load(m1[0]); + r0 = glmm_load(m2[0]); + r1 = glmm_load(m2[1]); + r2 = glmm_load(m2[2]); + + v0 = vmulq_f32(glmm_splat_x(r0), l); + v1 = vmulq_f32(glmm_splat_x(r1), l); + v2 = vmulq_f32(glmm_splat_x(r2), l); + + l = glmm_load(m1[1]); + v0 = glmm_fmadd(glmm_splat_y(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_y(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_y(r2), l, v2); + + l = glmm_load(m1[2]); + v0 = glmm_fmadd(glmm_splat_z(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_z(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_z(r2), l, v2); + + glmm_store(dest[0], v0); + glmm_store(dest[1], v1); + glmm_store(dest[2], v2); + glmm_store(dest[3], glmm_load(m1[3])); +} + +CGLM_INLINE +void +glm_inv_tr_neon(mat4 mat) { + float32x4x4_t vmat; + glmm_128 r0, r1, r2, x0; + + vmat = vld4q_f32(mat[0]); + r0 = vmat.val[0]; + r1 = vmat.val[1]; + r2 = vmat.val[2]; + + x0 = glmm_fmadd(r0, glmm_splat_w(r0), + glmm_fmadd(r1, glmm_splat_w(r1), + vmulq_f32(r2, glmm_splat_w(r2)))); + x0 = vnegq_f32(x0); + + glmm_store(mat[0], r0); + glmm_store(mat[1], r1); + glmm_store(mat[2], r2); + glmm_store(mat[3], x0); + + mat[0][3] = 0.0f; + mat[1][3] = 0.0f; + mat[2][3] = 0.0f; + mat[3][3] = 1.0f; + + /* TODO: ? + zo = vget_high_f32(r3); + vst1_lane_f32(&mat[0][3], zo, 0); + vst1_lane_f32(&mat[1][3], zo, 0); + vst1_lane_f32(&mat[2][3], zo, 0); + vst1_lane_f32(&mat[3][3], zo, 1); + */ +} + +#endif +#endif /* cglm_affine_neon_h */ diff --git a/lib/cglm/include/cglm/simd/neon/mat2.h b/lib/cglm/include/cglm/simd/neon/mat2.h new file mode 100644 index 0000000..471ebea --- /dev/null +++ b/lib/cglm/include/cglm/simd/neon/mat2.h @@ -0,0 +1,44 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_mat2_neon_h +#define cglm_mat2_neon_h +#if defined(__ARM_NEON_FP) + +#include "../../common.h" +#include "../intrin.h" + +CGLM_INLINE +void +glm_mat2_mul_neon(mat2 m1, mat2 m2, mat2 dest) { + float32x4x2_t a1; + glmm_128 x0, x1, x2; + float32x2_t dc, ba; + + x1 = glmm_load(m1[0]); /* d c b a */ + x2 = glmm_load(m2[0]); /* h g f e */ + + dc = vget_high_f32(x1); + ba = vget_low_f32(x1); + + /* g g e e, h h f f */ + a1 = vtrnq_f32(x2, x2); + + /* + dest[0][0] = a * e + c * f; + dest[0][1] = b * e + d * f; + dest[1][0] = a * g + c * h; + dest[1][1] = b * g + d * h; + */ + x0 = glmm_fmadd(vcombine_f32(ba, ba), a1.val[0], + vmulq_f32(vcombine_f32(dc, dc), a1.val[1])); + + glmm_store(dest[0], x0); +} + +#endif +#endif /* cglm_mat2_neon_h */ diff --git a/lib/cglm/include/cglm/simd/neon/mat4.h b/lib/cglm/include/cglm/simd/neon/mat4.h new file mode 100644 index 0000000..5b9f014 --- /dev/null +++ b/lib/cglm/include/cglm/simd/neon/mat4.h @@ -0,0 +1,317 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_mat4_neon_h +#define cglm_mat4_neon_h +#if defined(__ARM_NEON_FP) + +#include "../../common.h" +#include "../intrin.h" + +CGLM_INLINE +void +glm_mat4_scale_neon(mat4 m, float s) { + float32x4_t v0; + + v0 = vdupq_n_f32(s); + + vst1q_f32(m[0], vmulq_f32(vld1q_f32(m[0]), v0)); + vst1q_f32(m[1], vmulq_f32(vld1q_f32(m[1]), v0)); + vst1q_f32(m[2], vmulq_f32(vld1q_f32(m[2]), v0)); + vst1q_f32(m[3], vmulq_f32(vld1q_f32(m[3]), v0)); +} + +CGLM_INLINE +void +glm_mat4_transp_neon(mat4 m, mat4 dest) { + float32x4x4_t vmat; + + vmat = vld4q_f32(m[0]); + + vst1q_f32(dest[0], vmat.val[0]); + vst1q_f32(dest[1], vmat.val[1]); + vst1q_f32(dest[2], vmat.val[2]); + vst1q_f32(dest[3], vmat.val[3]); +} + +CGLM_INLINE +void +glm_mat4_mul_neon(mat4 m1, mat4 m2, mat4 dest) { + /* D = R * L (Column-Major) */ + + glmm_128 l, r0, r1, r2, r3, v0, v1, v2, v3; + + l = glmm_load(m1[0]); + r0 = glmm_load(m2[0]); + r1 = glmm_load(m2[1]); + r2 = glmm_load(m2[2]); + r3 = glmm_load(m2[3]); + + v0 = vmulq_f32(glmm_splat_x(r0), l); + v1 = vmulq_f32(glmm_splat_x(r1), l); + v2 = vmulq_f32(glmm_splat_x(r2), l); + v3 = vmulq_f32(glmm_splat_x(r3), l); + + l = glmm_load(m1[1]); + v0 = glmm_fmadd(glmm_splat_y(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_y(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_y(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_y(r3), l, v3); + + l = glmm_load(m1[2]); + v0 = glmm_fmadd(glmm_splat_z(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_z(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_z(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_z(r3), l, v3); + + l = glmm_load(m1[3]); + v0 = glmm_fmadd(glmm_splat_w(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_w(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_w(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_w(r3), l, v3); + + glmm_store(dest[0], v0); + glmm_store(dest[1], v1); + glmm_store(dest[2], v2); + glmm_store(dest[3], v3); +} + +CGLM_INLINE +void +glm_mat4_mulv_neon(mat4 m, vec4 v, vec4 dest) { + float32x4_t l0, l1, l2, l3; + float32x2_t vlo, vhi; + + l0 = vld1q_f32(m[0]); + l1 = vld1q_f32(m[1]); + l2 = vld1q_f32(m[2]); + l3 = vld1q_f32(m[3]); + + vlo = vld1_f32(&v[0]); + vhi = vld1_f32(&v[2]); + + l0 = vmulq_lane_f32(l0, vlo, 0); + l0 = vmlaq_lane_f32(l0, l1, vlo, 1); + l0 = vmlaq_lane_f32(l0, l2, vhi, 0); + l0 = vmlaq_lane_f32(l0, l3, vhi, 1); + + vst1q_f32(dest, l0); +} + +CGLM_INLINE +float +glm_mat4_det_neon(mat4 mat) { + float32x4_t r0, r1, r2, r3, x0, x1, x2; + float32x2_t ij, op, mn, kl, nn, mm, jj, ii, gh, ef, t12, t34; + float32x4x2_t a1; + float32x4_t x3 = { 0.f, -0.f, 0.f, -0.f }; + + /* 127 <- 0, [square] det(A) = det(At) */ + r0 = glmm_load(mat[0]); /* d c b a */ + r1 = vrev64q_f32(glmm_load(mat[1])); /* g h e f */ + r2 = vrev64q_f32(glmm_load(mat[2])); /* l k i j */ + r3 = vrev64q_f32(glmm_load(mat[3])); /* o p m n */ + + gh = vget_high_f32(r1); + ef = vget_low_f32(r1); + kl = vget_high_f32(r2); + ij = vget_low_f32(r2); + op = vget_high_f32(r3); + mn = vget_low_f32(r3); + mm = vdup_lane_f32(mn, 1); + nn = vdup_lane_f32(mn, 0); + ii = vdup_lane_f32(ij, 1); + jj = vdup_lane_f32(ij, 0); + + /* + t[1] = j * p - n * l; + t[2] = j * o - n * k; + t[3] = i * p - m * l; + t[4] = i * o - m * k; + */ + x0 = glmm_fnmadd(vcombine_f32(kl, kl), vcombine_f32(nn, mm), + vmulq_f32(vcombine_f32(op, op), vcombine_f32(jj, ii))); + + t12 = vget_low_f32(x0); + t34 = vget_high_f32(x0); + + /* 1 3 1 3 2 4 2 4 */ + a1 = vuzpq_f32(x0, x0); + + /* + t[0] = k * p - o * l; + t[0] = k * p - o * l; + t[5] = i * n - m * j; + t[5] = i * n - m * j; + */ + x1 = glmm_fnmadd(vcombine_f32(vdup_lane_f32(kl, 0), jj), + vcombine_f32(vdup_lane_f32(op, 1), mm), + vmulq_f32(vcombine_f32(vdup_lane_f32(op, 0), nn), + vcombine_f32(vdup_lane_f32(kl, 1), ii))); + + /* + a * (f * t[0] - g * t[1] + h * t[2]) + - b * (e * t[0] - g * t[3] + h * t[4]) + + c * (e * t[1] - f * t[3] + h * t[5]) + - d * (e * t[2] - f * t[4] + g * t[5]) + */ + x2 = glmm_fnmadd(vcombine_f32(vdup_lane_f32(gh, 1), vdup_lane_f32(ef, 0)), + vcombine_f32(vget_low_f32(a1.val[0]), t34), + vmulq_f32(vcombine_f32(ef, vdup_lane_f32(ef, 1)), + vcombine_f32(vget_low_f32(x1), t12))); + + x2 = glmm_fmadd(vcombine_f32(vdup_lane_f32(gh, 0), gh), + vcombine_f32(vget_low_f32(a1.val[1]), vget_high_f32(x1)), x2); + + x2 = glmm_xor(x2, x3); + + return glmm_hadd(vmulq_f32(x2, r0)); +} + +CGLM_INLINE +void +glm_mat4_inv_neon(mat4 mat, mat4 dest) { + float32x4_t r0, r1, r2, r3, + v0, v1, v2, v3, + t0, t1, t2, t3, t4, t5, + x0, x1, x2, x3, x4, x5, x6, x7, x8; + float32x4x2_t a1; + float32x2_t lp, ko, hg, jn, im, fe, ae, bf, cg, dh; + float32x4_t x9 = { -0.f, 0.f, -0.f, 0.f }; + + x8 = vrev64q_f32(x9); + + /* 127 <- 0 */ + r0 = glmm_load(mat[0]); /* d c b a */ + r1 = glmm_load(mat[1]); /* h g f e */ + r2 = glmm_load(mat[2]); /* l k j i */ + r3 = glmm_load(mat[3]); /* p o n m */ + + /* l p k o, j n i m */ + a1 = vzipq_f32(r3, r2); + + jn = vget_high_f32(a1.val[0]); + im = vget_low_f32(a1.val[0]); + lp = vget_high_f32(a1.val[1]); + ko = vget_low_f32(a1.val[1]); + hg = vget_high_f32(r1); + + x1 = vcombine_f32(vdup_lane_f32(lp, 0), lp); /* l p p p */ + x2 = vcombine_f32(vdup_lane_f32(ko, 0), ko); /* k o o o */ + x0 = vcombine_f32(vdup_lane_f32(lp, 1), vdup_lane_f32(hg, 1)); /* h h l l */ + x3 = vcombine_f32(vdup_lane_f32(ko, 1), vdup_lane_f32(hg, 0)); /* g g k k */ + + /* t1[0] = k * p - o * l; + t1[0] = k * p - o * l; + t2[0] = g * p - o * h; + t3[0] = g * l - k * h; */ + t0 = glmm_fnmadd(x2, x0, vmulq_f32(x3, x1)); + + fe = vget_low_f32(r1); + x4 = vcombine_f32(vdup_lane_f32(jn, 0), jn); /* j n n n */ + x5 = vcombine_f32(vdup_lane_f32(jn, 1), vdup_lane_f32(fe, 1)); /* f f j j */ + + /* t1[1] = j * p - n * l; + t1[1] = j * p - n * l; + t2[1] = f * p - n * h; + t3[1] = f * l - j * h; */ + t1 = glmm_fnmadd(x4, x0, vmulq_f32(x5, x1)); + + /* t1[2] = j * o - n * k + t1[2] = j * o - n * k; + t2[2] = f * o - n * g; + t3[2] = f * k - j * g; */ + t2 = glmm_fnmadd(x4, x3, vmulq_f32(x5, x2)); + + x6 = vcombine_f32(vdup_lane_f32(im, 1), vdup_lane_f32(fe, 0)); /* e e i i */ + x7 = vcombine_f32(vdup_lane_f32(im, 0), im); /* i m m m */ + + /* t1[3] = i * p - m * l; + t1[3] = i * p - m * l; + t2[3] = e * p - m * h; + t3[3] = e * l - i * h; */ + t3 = glmm_fnmadd(x7, x0, vmulq_f32(x6, x1)); + + /* t1[4] = i * o - m * k; + t1[4] = i * o - m * k; + t2[4] = e * o - m * g; + t3[4] = e * k - i * g; */ + t4 = glmm_fnmadd(x7, x3, vmulq_f32(x6, x2)); + + /* t1[5] = i * n - m * j; + t1[5] = i * n - m * j; + t2[5] = e * n - m * f; + t3[5] = e * j - i * f; */ + t5 = glmm_fnmadd(x7, x5, vmulq_f32(x6, x4)); + + /* h d f b, g c e a */ + a1 = vtrnq_f32(r0, r1); + + x4 = vrev64q_f32(a1.val[0]); /* c g a e */ + x5 = vrev64q_f32(a1.val[1]); /* d h b f */ + + ae = vget_low_f32(x4); + cg = vget_high_f32(x4); + bf = vget_low_f32(x5); + dh = vget_high_f32(x5); + + x0 = vcombine_f32(ae, vdup_lane_f32(ae, 1)); /* a a a e */ + x1 = vcombine_f32(bf, vdup_lane_f32(bf, 1)); /* b b b f */ + x2 = vcombine_f32(cg, vdup_lane_f32(cg, 1)); /* c c c g */ + x3 = vcombine_f32(dh, vdup_lane_f32(dh, 1)); /* d d d h */ + + /* + dest[0][0] = f * t1[0] - g * t1[1] + h * t1[2]; + dest[0][1] =-(b * t1[0] - c * t1[1] + d * t1[2]); + dest[0][2] = b * t2[0] - c * t2[1] + d * t2[2]; + dest[0][3] =-(b * t3[0] - c * t3[1] + d * t3[2]); */ + v0 = glmm_xor(glmm_fmadd(x3, t2, glmm_fnmadd(x2, t1, vmulq_f32(x1, t0))), x8); + + /* + dest[2][0] = e * t1[1] - f * t1[3] + h * t1[5]; + dest[2][1] =-(a * t1[1] - b * t1[3] + d * t1[5]); + dest[2][2] = a * t2[1] - b * t2[3] + d * t2[5]; + dest[2][3] =-(a * t3[1] - b * t3[3] + d * t3[5]);*/ + v2 = glmm_xor(glmm_fmadd(x3, t5, glmm_fnmadd(x1, t3, vmulq_f32(x0, t1))), x8); + + /* + dest[1][0] =-(e * t1[0] - g * t1[3] + h * t1[4]); + dest[1][1] = a * t1[0] - c * t1[3] + d * t1[4]; + dest[1][2] =-(a * t2[0] - c * t2[3] + d * t2[4]); + dest[1][3] = a * t3[0] - c * t3[3] + d * t3[4]; */ + v1 = glmm_xor(glmm_fmadd(x3, t4, glmm_fnmadd(x2, t3, vmulq_f32(x0, t0))), x9); + + /* + dest[3][0] =-(e * t1[2] - f * t1[4] + g * t1[5]); + dest[3][1] = a * t1[2] - b * t1[4] + c * t1[5]; + dest[3][2] =-(a * t2[2] - b * t2[4] + c * t2[5]); + dest[3][3] = a * t3[2] - b * t3[4] + c * t3[5]; */ + v3 = glmm_xor(glmm_fmadd(x2, t5, glmm_fnmadd(x1, t4, vmulq_f32(x0, t2))), x9); + + /* determinant */ + x0 = vcombine_f32(vget_low_f32(vzipq_f32(v0, v1).val[0]), + vget_low_f32(vzipq_f32(v2, v3).val[0])); + + /* + x0 = glmm_div(glmm_set1(1.0f), glmm_vhadd(vmulq_f32(x0, r0))); + + glmm_store(dest[0], vmulq_f32(v0, x0)); + glmm_store(dest[1], vmulq_f32(v1, x0)); + glmm_store(dest[2], vmulq_f32(v2, x0)); + glmm_store(dest[3], vmulq_f32(v3, x0)); + */ + + x0 = glmm_vhadd(vmulq_f32(x0, r0)); + + glmm_store(dest[0], glmm_div(v0, x0)); + glmm_store(dest[1], glmm_div(v1, x0)); + glmm_store(dest[2], glmm_div(v2, x0)); + glmm_store(dest[3], glmm_div(v3, x0)); +} + +#endif +#endif /* cglm_mat4_neon_h */ diff --git a/lib/cglm/include/cglm/simd/neon/quat.h b/lib/cglm/include/cglm/simd/neon/quat.h new file mode 100644 index 0000000..f6b9e99 --- /dev/null +++ b/lib/cglm/include/cglm/simd/neon/quat.h @@ -0,0 +1,56 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_quat_neon_h +#define cglm_quat_neon_h +#if defined(__ARM_NEON_FP) + +#include "../../common.h" +#include "../intrin.h" + +CGLM_INLINE +void +glm_quat_mul_neon(versor p, versor q, versor dest) { + /* + + (a1 b2 + b1 a2 + c1 d2 − d1 c2)i + + (a1 c2 − b1 d2 + c1 a2 + d1 b2)j + + (a1 d2 + b1 c2 − c1 b2 + d1 a2)k + a1 a2 − b1 b2 − c1 c2 − d1 d2 + */ + + glmm_128 xp, xq, xqr, r, x, y, z, s2, s3; + glmm_128 s1 = {-0.f, 0.f, 0.f, -0.f}; + float32x2_t qh, ql; + + xp = glmm_load(p); /* 3 2 1 0 */ + xq = glmm_load(q); + + r = vmulq_f32(glmm_splat_w(xp), xq); + x = glmm_splat_x(xp); + y = glmm_splat_y(xp); + z = glmm_splat_z(xp); + + ql = vget_high_f32(s1); + s3 = vcombine_f32(ql, ql); + s2 = vzipq_f32(s3, s3).val[0]; + + xqr = vrev64q_f32(xq); + qh = vget_high_f32(xqr); + ql = vget_low_f32(xqr); + + r = glmm_fmadd(glmm_xor(x, s3), vcombine_f32(qh, ql), r); + + r = glmm_fmadd(glmm_xor(y, s2), vcombine_f32(vget_high_f32(xq), + vget_low_f32(xq)), r); + + r = glmm_fmadd(glmm_xor(z, s1), vcombine_f32(ql, qh), r); + + glmm_store(dest, r); +} + +#endif +#endif /* cglm_quat_neon_h */ diff --git a/lib/cglm/include/cglm/simd/sse2/affine.h b/lib/cglm/include/cglm/simd/sse2/affine.h new file mode 100644 index 0000000..99edaa0 --- /dev/null +++ b/lib/cglm/include/cglm/simd/sse2/affine.h @@ -0,0 +1,115 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_affine_mat_sse2_h +#define cglm_affine_mat_sse2_h +#if defined( __SSE__ ) || defined( __SSE2__ ) + +#include "../../common.h" +#include "../intrin.h" + +CGLM_INLINE +void +glm_mul_sse2(mat4 m1, mat4 m2, mat4 dest) { + /* D = R * L (Column-Major) */ + glmm_128 l, r0, r1, r2, r3, v0, v1, v2, v3; + + l = glmm_load(m1[0]); + r0 = glmm_load(m2[0]); + r1 = glmm_load(m2[1]); + r2 = glmm_load(m2[2]); + r3 = glmm_load(m2[3]); + + v0 = _mm_mul_ps(glmm_splat_x(r0), l); + v1 = _mm_mul_ps(glmm_splat_x(r1), l); + v2 = _mm_mul_ps(glmm_splat_x(r2), l); + v3 = _mm_mul_ps(glmm_splat_x(r3), l); + + l = glmm_load(m1[1]); + v0 = glmm_fmadd(glmm_splat_y(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_y(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_y(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_y(r3), l, v3); + + l = glmm_load(m1[2]); + v0 = glmm_fmadd(glmm_splat_z(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_z(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_z(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_z(r3), l, v3); + + l = glmm_load(m1[3]); + v3 = glmm_fmadd(glmm_splat_w(r3), l, v3); + + glmm_store(dest[0], v0); + glmm_store(dest[1], v1); + glmm_store(dest[2], v2); + glmm_store(dest[3], v3); +} + +CGLM_INLINE +void +glm_mul_rot_sse2(mat4 m1, mat4 m2, mat4 dest) { + /* D = R * L (Column-Major) */ + + glmm_128 l, r0, r1, r2, v0, v1, v2; + + l = glmm_load(m1[0]); + r0 = glmm_load(m2[0]); + r1 = glmm_load(m2[1]); + r2 = glmm_load(m2[2]); + + v0 = _mm_mul_ps(glmm_splat_x(r0), l); + v1 = _mm_mul_ps(glmm_splat_x(r1), l); + v2 = _mm_mul_ps(glmm_splat_x(r2), l); + + l = glmm_load(m1[1]); + v0 = glmm_fmadd(glmm_splat_y(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_y(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_y(r2), l, v2); + + l = glmm_load(m1[2]); + v0 = glmm_fmadd(glmm_splat_z(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_z(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_z(r2), l, v2); + + glmm_store(dest[0], v0); + glmm_store(dest[1], v1); + glmm_store(dest[2], v2); + glmm_store(dest[3], glmm_load(m1[3])); +} + +CGLM_INLINE +void +glm_inv_tr_sse2(mat4 mat) { + __m128 r0, r1, r2, r3, x0, x1, x2, x3, x4, x5; + + r0 = glmm_load(mat[0]); + r1 = glmm_load(mat[1]); + r2 = glmm_load(mat[2]); + r3 = glmm_load(mat[3]); + x1 = _mm_set_ps(1.0f, 0.0f, 0.0f, 0.0f); + + _MM_TRANSPOSE4_PS(r0, r1, r2, x1); + + x2 = glmm_shuff1(r3, 0, 0, 0, 0); + x3 = glmm_shuff1(r3, 1, 1, 1, 1); + x4 = glmm_shuff1(r3, 2, 2, 2, 2); + x5 = _mm_set1_ps(-0.f); + + x0 = glmm_fmadd(r0, x2, glmm_fmadd(r1, x3, _mm_mul_ps(r2, x4))); + x0 = _mm_xor_ps(x0, x5); + + x0 = _mm_add_ps(x0, x1); + + glmm_store(mat[0], r0); + glmm_store(mat[1], r1); + glmm_store(mat[2], r2); + glmm_store(mat[3], x0); +} + +#endif +#endif /* cglm_affine_mat_sse2_h */ diff --git a/lib/cglm/include/cglm/simd/sse2/mat2.h b/lib/cglm/include/cglm/simd/sse2/mat2.h new file mode 100644 index 0000000..31b3a29 --- /dev/null +++ b/lib/cglm/include/cglm/simd/sse2/mat2.h @@ -0,0 +1,48 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_mat2_sse_h +#define cglm_mat2_sse_h +#if defined( __SSE__ ) || defined( __SSE2__ ) + +#include "../../common.h" +#include "../intrin.h" + +CGLM_INLINE +void +glm_mat2_mul_sse2(mat2 m1, mat2 m2, mat2 dest) { + __m128 x0, x1, x2, x3, x4; + + x1 = glmm_load(m1[0]); /* d c b a */ + x2 = glmm_load(m2[0]); /* h g f e */ + + x3 = glmm_shuff1(x2, 2, 2, 0, 0); + x4 = glmm_shuff1(x2, 3, 3, 1, 1); + x0 = _mm_movelh_ps(x1, x1); + x2 = _mm_movehl_ps(x1, x1); + + /* + dest[0][0] = a * e + c * f; + dest[0][1] = b * e + d * f; + dest[1][0] = a * g + c * h; + dest[1][1] = b * g + d * h; + */ + x0 = glmm_fmadd(x0, x3, _mm_mul_ps(x2, x4)); + + glmm_store(dest[0], x0); +} + +CGLM_INLINE +void +glm_mat2_transp_sse2(mat2 m, mat2 dest) { + /* d c b a */ + /* d b c a */ + glmm_store(dest[0], glmm_shuff1(glmm_load(m[0]), 3, 1, 2, 0)); +} + +#endif +#endif /* cglm_mat2_sse_h */ diff --git a/lib/cglm/include/cglm/simd/sse2/mat3.h b/lib/cglm/include/cglm/simd/sse2/mat3.h new file mode 100644 index 0000000..f07320c --- /dev/null +++ b/lib/cglm/include/cglm/simd/sse2/mat3.h @@ -0,0 +1,76 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_mat3_sse_h +#define cglm_mat3_sse_h +#if defined( __SSE__ ) || defined( __SSE2__ ) + +#include "../../common.h" +#include "../intrin.h" + +CGLM_INLINE +void +glm_mat3_mul_sse2(mat3 m1, mat3 m2, mat3 dest) { + __m128 l0, l1, l2, r0, r1, r2, x0, x1, x2, x3, x4, x5, x6, x7, x8, x9; + + l0 = _mm_loadu_ps(m1[0]); + l1 = _mm_loadu_ps(&m1[1][1]); + + r0 = _mm_loadu_ps(m2[0]); + r1 = _mm_loadu_ps(&m2[1][1]); + + x8 = glmm_shuff1(l0, 0, 2, 1, 0); /* a00 a02 a01 a00 */ + x1 = glmm_shuff1(r0, 3, 0, 0, 0); /* b10 b00 b00 b00 */ + x2 = _mm_shuffle_ps(l0, l1, _MM_SHUFFLE(1, 0, 3, 3)); /* a12 a11 a10 a10 */ + x3 = _mm_shuffle_ps(r0, r1, _MM_SHUFFLE(2, 0, 3, 1)); /* b20 b11 b10 b01 */ + x0 = _mm_mul_ps(x8, x1); + + x6 = glmm_shuff1(l0, 1, 0, 2, 1); /* a01 a00 a02 a01 */ + x7 = glmm_shuff1(x3, 3, 3, 1, 1); /* b20 b20 b10 b10 */ + l2 = _mm_load_ss(&m1[2][2]); + r2 = _mm_load_ss(&m2[2][2]); + x1 = _mm_mul_ps(x6, x7); + l2 = glmm_shuff1(l2, 0, 0, 1, 0); /* a22 a22 0.f a22 */ + r2 = glmm_shuff1(r2, 0, 0, 1, 0); /* b22 b22 0.f b22 */ + + x4 = glmm_shuff1(x2, 0, 3, 2, 0); /* a10 a12 a11 a10 */ + x5 = glmm_shuff1(x2, 2, 0, 3, 2); /* a11 a10 a12 a11 */ + x6 = glmm_shuff1(x3, 2, 0, 0, 0); /* b11 b01 b01 b01 */ + x2 = glmm_shuff1(r1, 3, 3, 0, 0); /* b21 b21 b11 b11 */ + + x8 = _mm_unpackhi_ps(x8, x4); /* a10 a00 a12 a02 */ + x9 = _mm_unpackhi_ps(x7, x2); /* b21 b20 b21 b20 */ + + x0 = glmm_fmadd(x4, x6, x0); + x1 = glmm_fmadd(x5, x2, x1); + + x2 = _mm_movehl_ps(l2, l1); /* a22 a22 a21 a20 */ + x3 = glmm_shuff1(x2, 0, 2, 1, 0); /* a20 a22 a21 a20 */ + x2 = glmm_shuff1(x2, 1, 0, 2, 1); /* a21 a20 a22 a21 */ + x4 = _mm_shuffle_ps(r0, r1, _MM_SHUFFLE(1, 1, 2, 2)); /* b12 b12 b02 b02 */ + + x5 = glmm_shuff1(x4, 3, 0, 0, 0); /* b12 b02 b02 b02 */ + x4 = _mm_movehl_ps(r2, x4); /* b22 b22 b12 b12 */ + x0 = glmm_fmadd(x3, x5, x0); + x1 = glmm_fmadd(x2, x4, x1); + + /* + Dot Product : dest[2][2] = a02 * b20 + + a12 * b21 + + a22 * b22 + + 0 * 00 */ + x2 = _mm_movelh_ps(x8, l2); /* 0.f a22 a12 a02 */ + x3 = _mm_movelh_ps(x9, r2); /* 0.f b22 b21 b20 */ + x2 = glmm_vdots(x2, x3); + + _mm_storeu_ps(&dest[0][0], x0); + _mm_storeu_ps(&dest[1][1], x1); + _mm_store_ss (&dest[2][2], x2); +} + +#endif +#endif /* cglm_mat3_sse_h */ diff --git a/lib/cglm/include/cglm/simd/sse2/mat4.h b/lib/cglm/include/cglm/simd/sse2/mat4.h new file mode 100644 index 0000000..5c78499 --- /dev/null +++ b/lib/cglm/include/cglm/simd/sse2/mat4.h @@ -0,0 +1,434 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_mat_sse_h +#define cglm_mat_sse_h +#if defined( __SSE__ ) || defined( __SSE2__ ) + +#include "../../common.h" +#include "../intrin.h" + +#define glm_mat4_inv_precise_sse2(mat, dest) glm_mat4_inv_sse2(mat, dest) + +CGLM_INLINE +void +glm_mat4_scale_sse2(mat4 m, float s) { + __m128 x0; + x0 = _mm_set1_ps(s); + + glmm_store(m[0], _mm_mul_ps(glmm_load(m[0]), x0)); + glmm_store(m[1], _mm_mul_ps(glmm_load(m[1]), x0)); + glmm_store(m[2], _mm_mul_ps(glmm_load(m[2]), x0)); + glmm_store(m[3], _mm_mul_ps(glmm_load(m[3]), x0)); +} + +CGLM_INLINE +void +glm_mat4_transp_sse2(mat4 m, mat4 dest) { + __m128 r0, r1, r2, r3; + + r0 = glmm_load(m[0]); + r1 = glmm_load(m[1]); + r2 = glmm_load(m[2]); + r3 = glmm_load(m[3]); + + _MM_TRANSPOSE4_PS(r0, r1, r2, r3); + + glmm_store(dest[0], r0); + glmm_store(dest[1], r1); + glmm_store(dest[2], r2); + glmm_store(dest[3], r3); +} + +CGLM_INLINE +void +glm_mat4_mul_sse2(mat4 m1, mat4 m2, mat4 dest) { + /* D = R * L (Column-Major) */ + + glmm_128 l, r0, r1, r2, r3, v0, v1, v2, v3; + + l = glmm_load(m1[0]); + r0 = glmm_load(m2[0]); + r1 = glmm_load(m2[1]); + r2 = glmm_load(m2[2]); + r3 = glmm_load(m2[3]); + + v0 = _mm_mul_ps(glmm_splat_x(r0), l); + v1 = _mm_mul_ps(glmm_splat_x(r1), l); + v2 = _mm_mul_ps(glmm_splat_x(r2), l); + v3 = _mm_mul_ps(glmm_splat_x(r3), l); + + l = glmm_load(m1[1]); + v0 = glmm_fmadd(glmm_splat_y(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_y(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_y(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_y(r3), l, v3); + + l = glmm_load(m1[2]); + v0 = glmm_fmadd(glmm_splat_z(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_z(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_z(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_z(r3), l, v3); + + l = glmm_load(m1[3]); + v0 = glmm_fmadd(glmm_splat_w(r0), l, v0); + v1 = glmm_fmadd(glmm_splat_w(r1), l, v1); + v2 = glmm_fmadd(glmm_splat_w(r2), l, v2); + v3 = glmm_fmadd(glmm_splat_w(r3), l, v3); + + glmm_store(dest[0], v0); + glmm_store(dest[1], v1); + glmm_store(dest[2], v2); + glmm_store(dest[3], v3); +} + +CGLM_INLINE +void +glm_mat4_mulv_sse2(mat4 m, vec4 v, vec4 dest) { + __m128 x0, x1, m0, m1, m2, m3, v0, v1, v2, v3; + + m0 = glmm_load(m[0]); + m1 = glmm_load(m[1]); + m2 = glmm_load(m[2]); + m3 = glmm_load(m[3]); + + x0 = glmm_load(v); + v0 = glmm_splat_x(x0); + v1 = glmm_splat_y(x0); + v2 = glmm_splat_z(x0); + v3 = glmm_splat_w(x0); + + x1 = _mm_mul_ps(m3, v3); + x1 = glmm_fmadd(m2, v2, x1); + x1 = glmm_fmadd(m1, v1, x1); + x1 = glmm_fmadd(m0, v0, x1); + + glmm_store(dest, x1); +} + +CGLM_INLINE +float +glm_mat4_det_sse2(mat4 mat) { + __m128 r0, r1, r2, r3, x0, x1, x2; + + /* 127 <- 0, [square] det(A) = det(At) */ + r0 = glmm_load(mat[0]); /* d c b a */ + r1 = glmm_load(mat[1]); /* h g f e */ + r2 = glmm_load(mat[2]); /* l k j i */ + r3 = glmm_load(mat[3]); /* p o n m */ + + /* + t[1] = j * p - n * l; + t[2] = j * o - n * k; + t[3] = i * p - m * l; + t[4] = i * o - m * k; + */ + x0 = glmm_fnmadd(glmm_shuff1(r3, 0, 0, 1, 1), glmm_shuff1(r2, 2, 3, 2, 3), + _mm_mul_ps(glmm_shuff1(r2, 0, 0, 1, 1), + glmm_shuff1(r3, 2, 3, 2, 3))); + /* + t[0] = k * p - o * l; + t[0] = k * p - o * l; + t[5] = i * n - m * j; + t[5] = i * n - m * j; + */ + x1 = glmm_fnmadd(glmm_shuff1(r3, 0, 0, 2, 2), glmm_shuff1(r2, 1, 1, 3, 3), + _mm_mul_ps(glmm_shuff1(r2, 0, 0, 2, 2), + glmm_shuff1(r3, 1, 1, 3, 3))); + + /* + a * (f * t[0] - g * t[1] + h * t[2]) + - b * (e * t[0] - g * t[3] + h * t[4]) + + c * (e * t[1] - f * t[3] + h * t[5]) + - d * (e * t[2] - f * t[4] + g * t[5]) + */ + x2 = glmm_fnmadd(glmm_shuff1(r1, 1, 1, 2, 2), glmm_shuff1(x0, 3, 2, 2, 0), + _mm_mul_ps(glmm_shuff1(r1, 0, 0, 0, 1), + _mm_shuffle_ps(x1, x0, _MM_SHUFFLE(1, 0, 0, 0)))); + x2 = glmm_fmadd(glmm_shuff1(r1, 2, 3, 3, 3), + _mm_shuffle_ps(x0, x1, _MM_SHUFFLE(2, 2, 3, 1)), + x2); + + x2 = _mm_xor_ps(x2, _mm_set_ps(-0.f, 0.f, -0.f, 0.f)); + + return glmm_hadd(_mm_mul_ps(x2, r0)); +} + +CGLM_INLINE +void +glm_mat4_inv_fast_sse2(mat4 mat, mat4 dest) { + __m128 r0, r1, r2, r3, + v0, v1, v2, v3, + t0, t1, t2, t3, t4, t5, + x0, x1, x2, x3, x4, x5, x6, x7, x8, x9; + + x8 = _mm_set_ps(-0.f, 0.f, -0.f, 0.f); + x9 = glmm_shuff1(x8, 2, 1, 2, 1); + + /* 127 <- 0 */ + r0 = glmm_load(mat[0]); /* d c b a */ + r1 = glmm_load(mat[1]); /* h g f e */ + r2 = glmm_load(mat[2]); /* l k j i */ + r3 = glmm_load(mat[3]); /* p o n m */ + + x0 = _mm_movehl_ps(r3, r2); /* p o l k */ + x3 = _mm_movelh_ps(r2, r3); /* n m j i */ + x1 = glmm_shuff1(x0, 1, 3, 3 ,3); /* l p p p */ + x2 = glmm_shuff1(x0, 0, 2, 2, 2); /* k o o o */ + x4 = glmm_shuff1(x3, 1, 3, 3, 3); /* j n n n */ + x7 = glmm_shuff1(x3, 0, 2, 2, 2); /* i m m m */ + + x6 = _mm_shuffle_ps(r2, r1, _MM_SHUFFLE(0, 0, 0, 0)); /* e e i i */ + x5 = _mm_shuffle_ps(r2, r1, _MM_SHUFFLE(1, 1, 1, 1)); /* f f j j */ + x3 = _mm_shuffle_ps(r2, r1, _MM_SHUFFLE(2, 2, 2, 2)); /* g g k k */ + x0 = _mm_shuffle_ps(r2, r1, _MM_SHUFFLE(3, 3, 3, 3)); /* h h l l */ + + t0 = _mm_mul_ps(x3, x1); + t1 = _mm_mul_ps(x5, x1); + t2 = _mm_mul_ps(x5, x2); + t3 = _mm_mul_ps(x6, x1); + t4 = _mm_mul_ps(x6, x2); + t5 = _mm_mul_ps(x6, x4); + + /* t1[0] = k * p - o * l; + t1[0] = k * p - o * l; + t2[0] = g * p - o * h; + t3[0] = g * l - k * h; */ + t0 = glmm_fnmadd(x2, x0, t0); + + /* t1[1] = j * p - n * l; + t1[1] = j * p - n * l; + t2[1] = f * p - n * h; + t3[1] = f * l - j * h; */ + t1 = glmm_fnmadd(x4, x0, t1); + + /* t1[2] = j * o - n * k + t1[2] = j * o - n * k; + t2[2] = f * o - n * g; + t3[2] = f * k - j * g; */ + t2 = glmm_fnmadd(x4, x3, t2); + + /* t1[3] = i * p - m * l; + t1[3] = i * p - m * l; + t2[3] = e * p - m * h; + t3[3] = e * l - i * h; */ + t3 = glmm_fnmadd(x7, x0, t3); + + /* t1[4] = i * o - m * k; + t1[4] = i * o - m * k; + t2[4] = e * o - m * g; + t3[4] = e * k - i * g; */ + t4 = glmm_fnmadd(x7, x3, t4); + + /* t1[5] = i * n - m * j; + t1[5] = i * n - m * j; + t2[5] = e * n - m * f; + t3[5] = e * j - i * f; */ + t5 = glmm_fnmadd(x7, x5, t5); + + x4 = _mm_movelh_ps(r0, r1); /* f e b a */ + x5 = _mm_movehl_ps(r1, r0); /* h g d c */ + + x0 = glmm_shuff1(x4, 0, 0, 0, 2); /* a a a e */ + x1 = glmm_shuff1(x4, 1, 1, 1, 3); /* b b b f */ + x2 = glmm_shuff1(x5, 0, 0, 0, 2); /* c c c g */ + x3 = glmm_shuff1(x5, 1, 1, 1, 3); /* d d d h */ + + v2 = _mm_mul_ps(x0, t1); + v1 = _mm_mul_ps(x0, t0); + v3 = _mm_mul_ps(x0, t2); + v0 = _mm_mul_ps(x1, t0); + + v2 = glmm_fnmadd(x1, t3, v2); + v3 = glmm_fnmadd(x1, t4, v3); + v0 = glmm_fnmadd(x2, t1, v0); + v1 = glmm_fnmadd(x2, t3, v1); + + v3 = glmm_fmadd(x2, t5, v3); + v0 = glmm_fmadd(x3, t2, v0); + v2 = glmm_fmadd(x3, t5, v2); + v1 = glmm_fmadd(x3, t4, v1); + + /* + dest[0][0] = f * t1[0] - g * t1[1] + h * t1[2]; + dest[0][1] =-(b * t1[0] - c * t1[1] + d * t1[2]); + dest[0][2] = b * t2[0] - c * t2[1] + d * t2[2]; + dest[0][3] =-(b * t3[0] - c * t3[1] + d * t3[2]); */ + v0 = _mm_xor_ps(v0, x8); + + /* + dest[2][0] = e * t1[1] - f * t1[3] + h * t1[5]; + dest[2][1] =-(a * t1[1] - b * t1[3] + d * t1[5]); + dest[2][2] = a * t2[1] - b * t2[3] + d * t2[5]; + dest[2][3] =-(a * t3[1] - b * t3[3] + d * t3[5]);*/ + v2 = _mm_xor_ps(v2, x8); + + /* + dest[1][0] =-(e * t1[0] - g * t1[3] + h * t1[4]); + dest[1][1] = a * t1[0] - c * t1[3] + d * t1[4]; + dest[1][2] =-(a * t2[0] - c * t2[3] + d * t2[4]); + dest[1][3] = a * t3[0] - c * t3[3] + d * t3[4]; */ + v1 = _mm_xor_ps(v1, x9); + + /* + dest[3][0] =-(e * t1[2] - f * t1[4] + g * t1[5]); + dest[3][1] = a * t1[2] - b * t1[4] + c * t1[5]; + dest[3][2] =-(a * t2[2] - b * t2[4] + c * t2[5]); + dest[3][3] = a * t3[2] - b * t3[4] + c * t3[5]; */ + v3 = _mm_xor_ps(v3, x9); + + /* determinant */ + x0 = _mm_shuffle_ps(v0, v1, _MM_SHUFFLE(0, 0, 0, 0)); + x1 = _mm_shuffle_ps(v2, v3, _MM_SHUFFLE(0, 0, 0, 0)); + x0 = _mm_shuffle_ps(x0, x1, _MM_SHUFFLE(2, 0, 2, 0)); + + x0 = _mm_rcp_ps(glmm_vhadd(_mm_mul_ps(x0, r0))); + + glmm_store(dest[0], _mm_mul_ps(v0, x0)); + glmm_store(dest[1], _mm_mul_ps(v1, x0)); + glmm_store(dest[2], _mm_mul_ps(v2, x0)); + glmm_store(dest[3], _mm_mul_ps(v3, x0)); +} + +CGLM_INLINE +void +glm_mat4_inv_sse2(mat4 mat, mat4 dest) { + __m128 r0, r1, r2, r3, + v0, v1, v2, v3, + t0, t1, t2, t3, t4, t5, + x0, x1, x2, x3, x4, x5, x6, x7, x8, x9; + + x8 = _mm_set_ps(-0.f, 0.f, -0.f, 0.f); + x9 = glmm_shuff1(x8, 2, 1, 2, 1); + + /* 127 <- 0 */ + r0 = glmm_load(mat[0]); /* d c b a */ + r1 = glmm_load(mat[1]); /* h g f e */ + r2 = glmm_load(mat[2]); /* l k j i */ + r3 = glmm_load(mat[3]); /* p o n m */ + + x0 = _mm_movehl_ps(r3, r2); /* p o l k */ + x3 = _mm_movelh_ps(r2, r3); /* n m j i */ + x1 = glmm_shuff1(x0, 1, 3, 3 ,3); /* l p p p */ + x2 = glmm_shuff1(x0, 0, 2, 2, 2); /* k o o o */ + x4 = glmm_shuff1(x3, 1, 3, 3, 3); /* j n n n */ + x7 = glmm_shuff1(x3, 0, 2, 2, 2); /* i m m m */ + + x6 = _mm_shuffle_ps(r2, r1, _MM_SHUFFLE(0, 0, 0, 0)); /* e e i i */ + x5 = _mm_shuffle_ps(r2, r1, _MM_SHUFFLE(1, 1, 1, 1)); /* f f j j */ + x3 = _mm_shuffle_ps(r2, r1, _MM_SHUFFLE(2, 2, 2, 2)); /* g g k k */ + x0 = _mm_shuffle_ps(r2, r1, _MM_SHUFFLE(3, 3, 3, 3)); /* h h l l */ + + t0 = _mm_mul_ps(x3, x1); + t1 = _mm_mul_ps(x5, x1); + t2 = _mm_mul_ps(x5, x2); + t3 = _mm_mul_ps(x6, x1); + t4 = _mm_mul_ps(x6, x2); + t5 = _mm_mul_ps(x6, x4); + + /* t1[0] = k * p - o * l; + t1[0] = k * p - o * l; + t2[0] = g * p - o * h; + t3[0] = g * l - k * h; */ + t0 = glmm_fnmadd(x2, x0, t0); + + /* t1[1] = j * p - n * l; + t1[1] = j * p - n * l; + t2[1] = f * p - n * h; + t3[1] = f * l - j * h; */ + t1 = glmm_fnmadd(x4, x0, t1); + + /* t1[2] = j * o - n * k + t1[2] = j * o - n * k; + t2[2] = f * o - n * g; + t3[2] = f * k - j * g; */ + t2 = glmm_fnmadd(x4, x3, t2); + + /* t1[3] = i * p - m * l; + t1[3] = i * p - m * l; + t2[3] = e * p - m * h; + t3[3] = e * l - i * h; */ + t3 = glmm_fnmadd(x7, x0, t3); + + /* t1[4] = i * o - m * k; + t1[4] = i * o - m * k; + t2[4] = e * o - m * g; + t3[4] = e * k - i * g; */ + t4 = glmm_fnmadd(x7, x3, t4); + + /* t1[5] = i * n - m * j; + t1[5] = i * n - m * j; + t2[5] = e * n - m * f; + t3[5] = e * j - i * f; */ + t5 = glmm_fnmadd(x7, x5, t5); + + x4 = _mm_movelh_ps(r0, r1); /* f e b a */ + x5 = _mm_movehl_ps(r1, r0); /* h g d c */ + + x0 = glmm_shuff1(x4, 0, 0, 0, 2); /* a a a e */ + x1 = glmm_shuff1(x4, 1, 1, 1, 3); /* b b b f */ + x2 = glmm_shuff1(x5, 0, 0, 0, 2); /* c c c g */ + x3 = glmm_shuff1(x5, 1, 1, 1, 3); /* d d d h */ + + v2 = _mm_mul_ps(x0, t1); + v1 = _mm_mul_ps(x0, t0); + v3 = _mm_mul_ps(x0, t2); + v0 = _mm_mul_ps(x1, t0); + + v2 = glmm_fnmadd(x1, t3, v2); + v3 = glmm_fnmadd(x1, t4, v3); + v0 = glmm_fnmadd(x2, t1, v0); + v1 = glmm_fnmadd(x2, t3, v1); + + v3 = glmm_fmadd(x2, t5, v3); + v0 = glmm_fmadd(x3, t2, v0); + v2 = glmm_fmadd(x3, t5, v2); + v1 = glmm_fmadd(x3, t4, v1); + + /* + dest[0][0] = f * t1[0] - g * t1[1] + h * t1[2]; + dest[0][1] =-(b * t1[0] - c * t1[1] + d * t1[2]); + dest[0][2] = b * t2[0] - c * t2[1] + d * t2[2]; + dest[0][3] =-(b * t3[0] - c * t3[1] + d * t3[2]); */ + v0 = _mm_xor_ps(v0, x8); + + /* + dest[2][0] = e * t1[1] - f * t1[3] + h * t1[5]; + dest[2][1] =-(a * t1[1] - b * t1[3] + d * t1[5]); + dest[2][2] = a * t2[1] - b * t2[3] + d * t2[5]; + dest[2][3] =-(a * t3[1] - b * t3[3] + d * t3[5]);*/ + v2 = _mm_xor_ps(v2, x8); + + /* + dest[1][0] =-(e * t1[0] - g * t1[3] + h * t1[4]); + dest[1][1] = a * t1[0] - c * t1[3] + d * t1[4]; + dest[1][2] =-(a * t2[0] - c * t2[3] + d * t2[4]); + dest[1][3] = a * t3[0] - c * t3[3] + d * t3[4]; */ + v1 = _mm_xor_ps(v1, x9); + + /* + dest[3][0] =-(e * t1[2] - f * t1[4] + g * t1[5]); + dest[3][1] = a * t1[2] - b * t1[4] + c * t1[5]; + dest[3][2] =-(a * t2[2] - b * t2[4] + c * t2[5]); + dest[3][3] = a * t3[2] - b * t3[4] + c * t3[5]; */ + v3 = _mm_xor_ps(v3, x9); + + /* determinant */ + x0 = _mm_shuffle_ps(v0, v1, _MM_SHUFFLE(0, 0, 0, 0)); + x1 = _mm_shuffle_ps(v2, v3, _MM_SHUFFLE(0, 0, 0, 0)); + x0 = _mm_shuffle_ps(x0, x1, _MM_SHUFFLE(2, 0, 2, 0)); + + x0 = _mm_div_ps(_mm_set1_ps(1.0f), glmm_vhadd(_mm_mul_ps(x0, r0))); + + glmm_store(dest[0], _mm_mul_ps(v0, x0)); + glmm_store(dest[1], _mm_mul_ps(v1, x0)); + glmm_store(dest[2], _mm_mul_ps(v2, x0)); + glmm_store(dest[3], _mm_mul_ps(v3, x0)); +} + +#endif +#endif /* cglm_mat_sse_h */ diff --git a/lib/cglm/include/cglm/simd/sse2/quat.h b/lib/cglm/include/cglm/simd/sse2/quat.h new file mode 100644 index 0000000..94850cc --- /dev/null +++ b/lib/cglm/include/cglm/simd/sse2/quat.h @@ -0,0 +1,54 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_quat_simd_h +#define cglm_quat_simd_h +#if defined( __SSE__ ) || defined( __SSE2__ ) + +#include "../../common.h" +#include "../intrin.h" + +CGLM_INLINE +void +glm_quat_mul_sse2(versor p, versor q, versor dest) { + /* + + (a1 b2 + b1 a2 + c1 d2 − d1 c2)i + + (a1 c2 − b1 d2 + c1 a2 + d1 b2)j + + (a1 d2 + b1 c2 − c1 b2 + d1 a2)k + a1 a2 − b1 b2 − c1 c2 − d1 d2 + */ + + __m128 xp, xq, x1, x2, x3, r, x, y, z; + + xp = glmm_load(p); /* 3 2 1 0 */ + xq = glmm_load(q); + x1 = _mm_set_ps(-0.f, 0.f, -0.f, 0.f); /* TODO: _mm_set1_ss() + shuff ? */ + r = _mm_mul_ps(glmm_splat_w(xp), xq); + + x2 = _mm_unpackhi_ps(x1, x1); + x3 = glmm_shuff1(x1, 3, 2, 0, 1); + x = glmm_splat_x(xp); + y = glmm_splat_y(xp); + z = glmm_splat_z(xp); + + x = _mm_xor_ps(x, x1); + y = _mm_xor_ps(y, x2); + z = _mm_xor_ps(z, x3); + + x1 = glmm_shuff1(xq, 0, 1, 2, 3); + x2 = glmm_shuff1(xq, 1, 0, 3, 2); + x3 = glmm_shuff1(xq, 2, 3, 0, 1); + + r = glmm_fmadd(x, x1, r); + r = glmm_fmadd(y, x2, r); + r = glmm_fmadd(z, x3, r); + + glmm_store(dest, r); +} + +#endif +#endif /* cglm_quat_simd_h */ diff --git a/lib/cglm/include/cglm/simd/x86.h b/lib/cglm/include/cglm/simd/x86.h new file mode 100644 index 0000000..dbbd0f8 --- /dev/null +++ b/lib/cglm/include/cglm/simd/x86.h @@ -0,0 +1,307 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_simd_x86_h +#define cglm_simd_x86_h +#include "intrin.h" +#ifdef CGLM_SIMD_x86 + +#ifdef CGLM_ALL_UNALIGNED +# define glmm_load(p) _mm_loadu_ps(p) +# define glmm_store(p, a) _mm_storeu_ps(p, a) +#else +# define glmm_load(p) _mm_load_ps(p) +# define glmm_store(p, a) _mm_store_ps(p, a) +#endif + +#define glmm_set1(x) _mm_set1_ps(x) +#define glmm_128 __m128 + +#ifdef CGLM_USE_INT_DOMAIN +# define glmm_shuff1(xmm, z, y, x, w) \ + _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(xmm), \ + _MM_SHUFFLE(z, y, x, w))) +#else +# define glmm_shuff1(xmm, z, y, x, w) \ + _mm_shuffle_ps(xmm, xmm, _MM_SHUFFLE(z, y, x, w)) +#endif + +#define glmm_splat(x, lane) glmm_shuff1(x, lane, lane, lane, lane) + +#define glmm_splat_x(x) glmm_splat(x, 0) +#define glmm_splat_y(x) glmm_splat(x, 1) +#define glmm_splat_z(x) glmm_splat(x, 2) +#define glmm_splat_w(x) glmm_splat(x, 3) + +/* glmm_shuff1x() is DEPRECATED!, use glmm_splat() */ +#define glmm_shuff1x(xmm, x) glmm_shuff1(xmm, x, x, x, x) + +#define glmm_shuff2(a, b, z0, y0, x0, w0, z1, y1, x1, w1) \ + glmm_shuff1(_mm_shuffle_ps(a, b, _MM_SHUFFLE(z0, y0, x0, w0)), \ + z1, y1, x1, w1) + +#ifdef __AVX__ +# ifdef CGLM_ALL_UNALIGNED +# define glmm_load256(p) _mm256_loadu_ps(p) +# define glmm_store256(p, a) _mm256_storeu_ps(p, a) +# else +# define glmm_load256(p) _mm256_load_ps(p) +# define glmm_store256(p, a) _mm256_store_ps(p, a) +# endif +#endif + +static inline +__m128 +glmm_abs(__m128 x) { + return _mm_andnot_ps(_mm_set1_ps(-0.0f), x); +} + +static inline +__m128 +glmm_vhadd(__m128 v) { + __m128 x0; + x0 = _mm_add_ps(v, glmm_shuff1(v, 0, 1, 2, 3)); + x0 = _mm_add_ps(x0, glmm_shuff1(x0, 1, 0, 0, 1)); + return x0; +} + +static inline +__m128 +glmm_vhadds(__m128 v) { +#if defined(__SSE3__) + __m128 shuf, sums; + shuf = _mm_movehdup_ps(v); + sums = _mm_add_ps(v, shuf); + shuf = _mm_movehl_ps(shuf, sums); + sums = _mm_add_ss(sums, shuf); + return sums; +#else + __m128 shuf, sums; + shuf = glmm_shuff1(v, 2, 3, 0, 1); + sums = _mm_add_ps(v, shuf); + shuf = _mm_movehl_ps(shuf, sums); + sums = _mm_add_ss(sums, shuf); + return sums; +#endif +} + +static inline +float +glmm_hadd(__m128 v) { + return _mm_cvtss_f32(glmm_vhadds(v)); +} + +static inline +__m128 +glmm_vhmin(__m128 v) { + __m128 x0, x1, x2; + x0 = _mm_movehl_ps(v, v); /* [2, 3, 2, 3] */ + x1 = _mm_min_ps(x0, v); /* [0|2, 1|3, 2|2, 3|3] */ + x2 = glmm_splat(x1, 1); /* [1|3, 1|3, 1|3, 1|3] */ + return _mm_min_ss(x1, x2); +} + +static inline +float +glmm_hmin(__m128 v) { + return _mm_cvtss_f32(glmm_vhmin(v)); +} + +static inline +__m128 +glmm_vhmax(__m128 v) { + __m128 x0, x1, x2; + x0 = _mm_movehl_ps(v, v); /* [2, 3, 2, 3] */ + x1 = _mm_max_ps(x0, v); /* [0|2, 1|3, 2|2, 3|3] */ + x2 = glmm_splat(x1, 1); /* [1|3, 1|3, 1|3, 1|3] */ + return _mm_max_ss(x1, x2); +} + +static inline +float +glmm_hmax(__m128 v) { + return _mm_cvtss_f32(glmm_vhmax(v)); +} + +static inline +__m128 +glmm_vdots(__m128 a, __m128 b) { +#if (defined(__SSE4_1__) || defined(__SSE4_2__)) && defined(CGLM_SSE4_DOT) + return _mm_dp_ps(a, b, 0xFF); +#elif defined(__SSE3__) && defined(CGLM_SSE3_DOT) + __m128 x0, x1; + x0 = _mm_mul_ps(a, b); + x1 = _mm_hadd_ps(x0, x0); + return _mm_hadd_ps(x1, x1); +#else + return glmm_vhadds(_mm_mul_ps(a, b)); +#endif +} + +static inline +__m128 +glmm_vdot(__m128 a, __m128 b) { +#if (defined(__SSE4_1__) || defined(__SSE4_2__)) && defined(CGLM_SSE4_DOT) + return _mm_dp_ps(a, b, 0xFF); +#elif defined(__SSE3__) && defined(CGLM_SSE3_DOT) + __m128 x0, x1; + x0 = _mm_mul_ps(a, b); + x1 = _mm_hadd_ps(x0, x0); + return _mm_hadd_ps(x1, x1); +#else + __m128 x0; + x0 = _mm_mul_ps(a, b); + x0 = _mm_add_ps(x0, glmm_shuff1(x0, 1, 0, 3, 2)); + return _mm_add_ps(x0, glmm_shuff1(x0, 0, 1, 0, 1)); +#endif +} + +static inline +float +glmm_dot(__m128 a, __m128 b) { + return _mm_cvtss_f32(glmm_vdots(a, b)); +} + +static inline +float +glmm_norm(__m128 a) { + return _mm_cvtss_f32(_mm_sqrt_ss(glmm_vhadds(_mm_mul_ps(a, a)))); +} + +static inline +float +glmm_norm2(__m128 a) { + return _mm_cvtss_f32(glmm_vhadds(_mm_mul_ps(a, a))); +} + +static inline +float +glmm_norm_one(__m128 a) { + return _mm_cvtss_f32(glmm_vhadds(glmm_abs(a))); +} + +static inline +float +glmm_norm_inf(__m128 a) { + return _mm_cvtss_f32(glmm_vhmax(glmm_abs(a))); +} + +static inline +__m128 +glmm_load3(float v[3]) { + __m128i xy; + __m128 z; + + xy = _mm_loadl_epi64(CGLM_CASTPTR_ASSUME_ALIGNED(v, const __m128i)); + z = _mm_load_ss(&v[2]); + + return _mm_movelh_ps(_mm_castsi128_ps(xy), z); +} + +static inline +void +glmm_store3(float v[3], __m128 vx) { + _mm_storel_pi(CGLM_CASTPTR_ASSUME_ALIGNED(v, __m64), vx); + _mm_store_ss(&v[2], glmm_shuff1(vx, 2, 2, 2, 2)); +} + +static inline +__m128 +glmm_div(__m128 a, __m128 b) { + return _mm_div_ps(a, b); +} + +/* enable FMA macro for MSVC? */ +#if defined(_MSC_VER) && !defined(__FMA__) && defined(__AVX2__) +# define __FMA__ 1 +#endif + +static inline +__m128 +glmm_fmadd(__m128 a, __m128 b, __m128 c) { +#ifdef __FMA__ + return _mm_fmadd_ps(a, b, c); +#else + return _mm_add_ps(c, _mm_mul_ps(a, b)); +#endif +} + +static inline +__m128 +glmm_fnmadd(__m128 a, __m128 b, __m128 c) { +#ifdef __FMA__ + return _mm_fnmadd_ps(a, b, c); +#else + return _mm_sub_ps(c, _mm_mul_ps(a, b)); +#endif +} + +static inline +__m128 +glmm_fmsub(__m128 a, __m128 b, __m128 c) { +#ifdef __FMA__ + return _mm_fmsub_ps(a, b, c); +#else + return _mm_sub_ps(_mm_mul_ps(a, b), c); +#endif +} + +static inline +__m128 +glmm_fnmsub(__m128 a, __m128 b, __m128 c) { +#ifdef __FMA__ + return _mm_fnmsub_ps(a, b, c); +#else + return _mm_xor_ps(_mm_add_ps(_mm_mul_ps(a, b), c), _mm_set1_ps(-0.0f)); +#endif +} + +#if defined(__AVX__) +static inline +__m256 +glmm256_fmadd(__m256 a, __m256 b, __m256 c) { +#ifdef __FMA__ + return _mm256_fmadd_ps(a, b, c); +#else + return _mm256_add_ps(c, _mm256_mul_ps(a, b)); +#endif +} + +static inline +__m256 +glmm256_fnmadd(__m256 a, __m256 b, __m256 c) { +#ifdef __FMA__ + return _mm256_fnmadd_ps(a, b, c); +#else + return _mm256_sub_ps(c, _mm256_mul_ps(a, b)); +#endif +} + +static inline +__m256 +glmm256_fmsub(__m256 a, __m256 b, __m256 c) { +#ifdef __FMA__ + return _mm256_fmsub_ps(a, b, c); +#else + return _mm256_sub_ps(_mm256_mul_ps(a, b), c); +#endif +} + +static inline +__m256 +glmm256_fnmsub(__m256 a, __m256 b, __m256 c) { +#ifdef __FMA__ + return _mm256_fmsub_ps(a, b, c); +#else + return _mm256_xor_ps(_mm256_sub_ps(_mm256_mul_ps(a, b), c), + _mm256_set1_ps(-0.0f)); +#endif +} +#endif + +#endif +#endif /* cglm_simd_x86_h */ diff --git a/lib/cglm/include/cglm/sphere.h b/lib/cglm/include/cglm/sphere.h new file mode 100644 index 0000000..334b83a --- /dev/null +++ b/lib/cglm/include/cglm/sphere.h @@ -0,0 +1,99 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_sphere_h +#define cglm_sphere_h + +#include "common.h" +#include "mat4.h" + +/* + Sphere Representation in cglm: [center.x, center.y, center.z, radii] + + You could use this representation or you can convert it to vec4 before call + any function + */ + +/*! + * @brief helper for getting sphere radius + * + * @param[in] s sphere + * + * @return returns radii + */ +CGLM_INLINE +float +glm_sphere_radii(vec4 s) { + return s[3]; +} + +/*! + * @brief apply transform to sphere, it is just wrapper for glm_mat4_mulv3 + * + * @param[in] s sphere + * @param[in] m transform matrix + * @param[out] dest transformed sphere + */ +CGLM_INLINE +void +glm_sphere_transform(vec4 s, mat4 m, vec4 dest) { + glm_mat4_mulv3(m, s, 1.0f, dest); + dest[3] = s[3]; +} + +/*! + * @brief merges two spheres and creates a new one + * + * two sphere must be in same space, for instance if one in world space then + * the other must be in world space too, not in local space. + * + * @param[in] s1 sphere 1 + * @param[in] s2 sphere 2 + * @param[out] dest merged/extended sphere + */ +CGLM_INLINE +void +glm_sphere_merge(vec4 s1, vec4 s2, vec4 dest) { + float dist, radii; + + dist = glm_vec3_distance(s1, s2); + radii = dist + s1[3] + s2[3]; + + radii = glm_max(radii, s1[3]); + radii = glm_max(radii, s2[3]); + + glm_vec3_center(s1, s2, dest); + dest[3] = radii; +} + +/*! + * @brief check if two sphere intersects + * + * @param[in] s1 sphere + * @param[in] s2 other sphere + */ +CGLM_INLINE +bool +glm_sphere_sphere(vec4 s1, vec4 s2) { + return glm_vec3_distance2(s1, s2) <= glm_pow2(s1[3] + s2[3]); +} + +/*! + * @brief check if sphere intersects with point + * + * @param[in] s sphere + * @param[in] point point + */ +CGLM_INLINE +bool +glm_sphere_point(vec4 s, vec3 point) { + float rr; + rr = s[3] * s[3]; + return glm_vec3_distance2(point, s) <= rr; +} + +#endif /* cglm_sphere_h */ diff --git a/lib/cglm/include/cglm/struct.h b/lib/cglm/include/cglm/struct.h new file mode 100644 index 0000000..871525a --- /dev/null +++ b/lib/cglm/include/cglm/struct.h @@ -0,0 +1,39 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_structs_h +#define cglm_structs_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "cglm.h" +#include "types-struct.h" +#include "struct/vec2.h" +#include "struct/vec3.h" +#include "struct/vec4.h" +#include "struct/mat2.h" +#include "struct/mat3.h" +#include "struct/mat4.h" +#include "struct/affine.h" +#include "struct/frustum.h" +#include "struct/plane.h" +#include "struct/box.h" +#include "struct/color.h" +#include "struct/io.h" +#include "struct/cam.h" +#include "struct/quat.h" +#include "struct/euler.h" +#include "struct/project.h" +#include "struct/sphere.h" +#include "struct/curve.h" +#include "struct/affine2d.h" + +#ifdef __cplusplus +} +#endif +#endif /* cglm_structs_h */ diff --git a/lib/cglm/include/cglm/struct/affine-post.h b/lib/cglm/include/cglm/struct/affine-post.h new file mode 100644 index 0000000..5b6a93a --- /dev/null +++ b/lib/cglm/include/cglm/struct/affine-post.h @@ -0,0 +1,184 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_translated(mat4s m, vec3s v); + CGLM_INLINE mat4s glms_translated_x(mat4s m, float x); + CGLM_INLINE mat4s glms_translated_y(mat4s m, float y); + CGLM_INLINE mat4s glms_translated_z(mat4s m, float z); + CGLM_INLINE mat4s glms_rotated_x(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotated_y(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotated_z(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotated(mat4s m, float angle, vec3s axis); + CGLM_INLINE mat4s glms_rotated_at(mat4s m, vec3s pivot, float angle, vec3s axis); + CGLM_INLINE mat4s glms_spinned(mat4s m, float angle, vec3s axis); + */ + +#ifndef cglms_affines_post_h +#define cglms_affines_post_h + +#include "../common.h" +#include "../types-struct.h" +#include "../affine.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" + +/*! + * @brief translate existing transform matrix by v vector + * and stores result in same matrix + * + * @param[in] m affine transfrom + * @param[in] v translate vector [x, y, z] + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translated(mat4s m, vec3s v) { + glm_translated(m.raw, v.raw); + return m; +} + +/*! + * @brief translate existing transform matrix by x factor + * + * @param[in] m affine transfrom + * @param[in] x x factor + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translated_x(mat4s m, float x) { + glm_translated_x(m.raw, x); + return m; +} + +/*! + * @brief translate existing transform matrix by y factor + * + * @param[in] m affine transfrom + * @param[in] y y factor + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translated_y(mat4s m, float y) { + glm_translated_y(m.raw, y); + return m; +} + +/*! + * @brief translate existing transform matrix by z factor + * + * @param[in] m affine transfrom + * @param[in] z z factor + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translated_z(mat4s m, float z) { + glm_translated_z(m.raw, z); + return m; +} + +/*! + * @brief rotate existing transform matrix around X axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @returns rotated matrix + */ +CGLM_INLINE +mat4s +glms_rotated_x(mat4s m, float angle) { + mat4s r; + glm_rotated_x(m.raw, angle, r.raw); + return r; +} + +/*! + * @brief rotate existing transform matrix around Y axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @returns rotated matrix + */ +CGLM_INLINE +mat4s +glms_rotated_y(mat4s m, float angle) { + mat4s r; + glm_rotated_y(m.raw, angle, r.raw); + return r; +} + +/*! + * @brief rotate existing transform matrix around Z axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @returns rotated matrix + */ +CGLM_INLINE +mat4s +glms_rotated_z(mat4s m, float angle) { + mat4s r; + glm_rotated_z(m.raw, angle, r.raw); + return r; +} + +/*! + * @brief rotate existing transform matrix around given axis by angle + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_rotated(mat4s m, float angle, vec3s axis) { + glm_rotated(m.raw, angle, axis.raw); + return m; +} + +/*! + * @brief rotate existing transform + * around given axis by angle at given pivot point (rotation center) + * + * @param[in] m affine transfrom + * @param[in] pivot rotation center + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_rotated_at(mat4s m, vec3s pivot, float angle, vec3s axis) { + glm_rotated_at(m.raw, pivot.raw, angle, axis.raw); + return m; +} + +/*! + * @brief rotate existing transform matrix around given axis by angle around self (doesn't affected by position) + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_spinned(mat4s m, float angle, vec3s axis) { + glm_spinned(m.raw, angle, axis.raw); + return m; +} + +#endif /* cglms_affines_post_h */ diff --git a/lib/cglm/include/cglm/struct/affine-pre.h b/lib/cglm/include/cglm/struct/affine-pre.h new file mode 100644 index 0000000..f55dc29 --- /dev/null +++ b/lib/cglm/include/cglm/struct/affine-pre.h @@ -0,0 +1,184 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_translate(mat4s m, vec3s v); + CGLM_INLINE mat4s glms_translate_x(mat4s m, float x); + CGLM_INLINE mat4s glms_translate_y(mat4s m, float y); + CGLM_INLINE mat4s glms_translate_z(mat4s m, float z); + CGLM_INLINE mat4s glms_rotate_x(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotate_y(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotate_z(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotate(mat4s m, float angle, vec3s axis); + CGLM_INLINE mat4s glms_rotate_at(mat4s m, vec3s pivot, float angle, vec3s axis); + CGLM_INLINE mat4s glms_spin(mat4s m, float angle, vec3s axis); + */ + +#ifndef cglms_affines_pre_h +#define cglms_affines_pre_h + +#include "../common.h" +#include "../types-struct.h" +#include "../affine.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" + +/*! + * @brief translate existing transform matrix by v vector + * and stores result in same matrix + * + * @param[in] m affine transfrom + * @param[in] v translate vector [x, y, z] + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translate(mat4s m, vec3s v) { + glm_translate(m.raw, v.raw); + return m; +} + +/*! + * @brief translate existing transform matrix by x factor + * + * @param[in] m affine transfrom + * @param[in] x x factor + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translate_x(mat4s m, float x) { + glm_translate_x(m.raw, x); + return m; +} + +/*! + * @brief translate existing transform matrix by y factor + * + * @param[in] m affine transfrom + * @param[in] y y factor + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translate_y(mat4s m, float y) { + glm_translate_y(m.raw, y); + return m; +} + +/*! + * @brief translate existing transform matrix by z factor + * + * @param[in] m affine transfrom + * @param[in] z z factor + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translate_z(mat4s m, float z) { + glm_translate_z(m.raw, z); + return m; +} + +/*! + * @brief rotate existing transform matrix around X axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @returns rotated matrix + */ +CGLM_INLINE +mat4s +glms_rotate_x(mat4s m, float angle) { + mat4s r; + glm_rotate_x(m.raw, angle, r.raw); + return r; +} + +/*! + * @brief rotate existing transform matrix around Y axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @returns rotated matrix + */ +CGLM_INLINE +mat4s +glms_rotate_y(mat4s m, float angle) { + mat4s r; + glm_rotate_y(m.raw, angle, r.raw); + return r; +} + +/*! + * @brief rotate existing transform matrix around Z axis by angle + * and store result in dest + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @returns rotated matrix + */ +CGLM_INLINE +mat4s +glms_rotate_z(mat4s m, float angle) { + mat4s r; + glm_rotate_z(m.raw, angle, r.raw); + return r; +} + +/*! + * @brief rotate existing transform matrix around given axis by angle + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_rotate(mat4s m, float angle, vec3s axis) { + glm_rotate(m.raw, angle, axis.raw); + return m; +} + +/*! + * @brief rotate existing transform + * around given axis by angle at given pivot point (rotation center) + * + * @param[in] m affine transfrom + * @param[in] pivot rotation center + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_rotate_at(mat4s m, vec3s pivot, float angle, vec3s axis) { + glm_rotate_at(m.raw, pivot.raw, angle, axis.raw); + return m; +} + +/*! + * @brief rotate existing transform matrix around given axis by angle around self (doesn't affected by position) + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_spin(mat4s m, float angle, vec3s axis) { + glm_spin(m.raw, angle, axis.raw); + return m; +} + +#endif /* cglms_affines_pre_h */ diff --git a/lib/cglm/include/cglm/struct/affine.h b/lib/cglm/include/cglm/struct/affine.h new file mode 100644 index 0000000..64e56d0 --- /dev/null +++ b/lib/cglm/include/cglm/struct/affine.h @@ -0,0 +1,200 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_translate(mat4s m, vec3s v); + CGLM_INLINE mat4s glms_translate_x(mat4s m, float x); + CGLM_INLINE mat4s glms_translate_y(mat4s m, float y); + CGLM_INLINE mat4s glms_translate_z(mat4s m, float z); + CGLM_INLINE mat4s glms_translate_make(vec3s v); + CGLM_INLINE mat4s glms_scale_to(mat4s m, vec3s v); + CGLM_INLINE mat4s glms_scale_make(vec3s v); + CGLM_INLINE mat4s glms_scale(mat4s m, vec3s v); + CGLM_INLINE mat4s glms_scale_uni(mat4s m, float s); + CGLM_INLINE mat4s glms_rotate_x(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotate_y(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotate_z(mat4s m, float angle); + CGLM_INLINE mat4s glms_rotate_make(float angle, vec3s axis); + CGLM_INLINE mat4s glms_rotate(mat4s m, float angle, vec3s axis); + CGLM_INLINE mat4s glms_rotate_at(mat4s m, vec3s pivot, float angle, vec3s axis); + CGLM_INLINE mat4s glms_rotate_atm(mat4s m, vec3s pivot, float angle, vec3s axis); + CGLM_INLINE mat4s glms_spin(mat4s m, float angle, vec3s axis); + CGLM_INLINE vec3s glms_decompose_scalev(mat4s m); + CGLM_INLINE bool glms_uniscaled(mat4s m); + CGLM_INLINE void glms_decompose_rs(mat4s m, mat4s * r, vec3s * s); + CGLM_INLINE void glms_decompose(mat4s m, vec4s t, mat4s * r, vec3s * s); + */ + +#ifndef cglms_affines_h +#define cglms_affines_h + +#include "../common.h" +#include "../types-struct.h" +#include "../affine.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" + +/*! + * @brief creates NEW translate transform matrix by v vector + * + * @param[in] v translate vector [x, y, z] + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_translate_make(vec3s v) { + mat4s m; + glm_translate_make(m.raw, v.raw); + return m; +} + +/*! + * @brief creates NEW scale matrix by v vector + * + * @param[in] v scale vector [x, y, z] + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_scale_make(vec3s v) { + mat4s m; + glm_scale_make(m.raw, v.raw); + return m; +} + +/*! + * @brief scales existing transform matrix by v vector + * and stores result in same matrix + * + * @param[in] m affine transfrom + * @param[in] v scale vector [x, y, z] + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_scale(mat4s m, vec3s v) { + mat4s r; + glm_scale_to(m.raw, v.raw, r.raw); + return r; +} + +/*! + * @brief applies uniform scale to existing transform matrix v = [s, s, s] + * and stores result in same matrix + * + * @param[in] m affine transfrom + * @param[in] s scale factor + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_scale_uni(mat4s m, float s) { + glm_scale_uni(m.raw, s); + return m; +} + +/*! + * @brief creates NEW rotation matrix by angle and axis + * + * axis will be normalized so you don't need to normalize it + * + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_rotate_make(float angle, vec3s axis) { + mat4s m; + glm_rotate_make(m.raw, angle, axis.raw); + return m; +} + +/*! + * @brief creates NEW rotation matrix by angle and axis at given point + * + * this creates rotation matrix, it assumes you don't have a matrix + * + * this should work faster than glm_rotate_at because it reduces + * one glm_translate. + * + * @param[in] m affine transfrom + * @param[in] pivot rotation center + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns affine transfrom + */ +CGLM_INLINE +mat4s +glms_rotate_atm(mat4s m, vec3s pivot, float angle, vec3s axis) { + glm_rotate_atm(m.raw, pivot.raw, angle, axis.raw); + return m; +} + +/*! + * @brief decompose scale vector + * + * @param[in] m affine transform + * @returns scale vector (Sx, Sy, Sz) + */ +CGLM_INLINE +vec3s +glms_decompose_scalev(mat4s m) { + vec3s r; + glm_decompose_scalev(m.raw, r.raw); + return r; +} + +/*! + * @brief returns true if matrix is uniform scaled. This is helpful for + * creating normal matrix. + * + * @param[in] m m + * + * @return boolean + */ +CGLM_INLINE +bool +glms_uniscaled(mat4s m) { + return glm_uniscaled(m.raw); +} + +/*! + * @brief decompose rotation matrix (mat4) and scale vector [Sx, Sy, Sz] + * DON'T pass projected matrix here + * + * @param[in] m affine transform + * @param[out] r rotation matrix + * @param[out] s scale matrix + */ +CGLM_INLINE +void +glms_decompose_rs(mat4s m, mat4s * __restrict r, vec3s * __restrict s) { + glm_decompose_rs(m.raw, r->raw, s->raw); +} + +/*! + * @brief decompose affine transform, TODO: extract shear factors. + * DON'T pass projected matrix here + * + * @param[in] m affine transfrom + * @param[out] t translation vector + * @param[out] r rotation matrix (mat4) + * @param[out] s scaling vector [X, Y, Z] + */ +CGLM_INLINE +void +glms_decompose(mat4s m, vec4s * __restrict t, mat4s * __restrict r, vec3s * __restrict s) { + glm_decompose(m.raw, t->raw, r->raw, s->raw); +} + +#include "affine-pre.h" +#include "affine-post.h" + +#endif /* cglms_affines_h */ diff --git a/lib/cglm/include/cglm/struct/affine2d.h b/lib/cglm/include/cglm/struct/affine2d.h new file mode 100644 index 0000000..412bd47 --- /dev/null +++ b/lib/cglm/include/cglm/struct/affine2d.h @@ -0,0 +1,177 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat3s glms_translate2d(mat3 m, vec2 v) + CGLM_INLINE mat3s glms_translate2d_x(mat3s m, float x) + CGLM_INLINE mat3s glms_translate2d_y(mat3s m, float y) + CGLM_INLINE mat3s glms_translate2d_make(vec2s v) + CGLM_INLINE mat3s glms_scale2d_make(vec2s v) + CGLM_INLINE mat3s glms_scale2d(mat3s m, vec2s v) + CGLM_INLINE mat3s glms_scale2d_uni(mat3s m, float s) + CGLM_INLINE mat3s glms_rotate2d_make(float angle) + CGLM_INLINE mat3s glms_rotate2d(mat3s m, float angle) + CGLM_INLINE mat3s glms_rotate2d_to(mat3s m, float angle) + */ + +#ifndef cglms_affine2ds_h +#define cglms_affine2ds_h + +#include "../common.h" +#include "../types-struct.h" +#include "../affine2d.h" +#include "vec3.h" +#include "mat3.h" + +/*! + * @brief translate existing 2d transform matrix by v vector + * and stores result in same matrix + * + * @param[in] m affine transfrom + * @param[in] v translate vector [x, y] + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_translate2d(mat3s m, vec2s v) { + glm_translate2d(m.raw, v.raw); + return m; +} + +/*! + * @brief translate existing 2d transform matrix by x factor + * + * @param[in] m affine transfrom + * @param[in] x x factor + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_translate2d_x(mat3s m, float x) { + glm_translate2d_x(m.raw, x); + return m; +} + +/*! + * @brief translate existing 2d transform matrix by y factor + * + * @param[in] m affine transfrom + * @param[in] y y factor + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_translate2d_y(mat3s m, float y) { + glm_translate2d_y(m.raw, y); + return m; +} + +/*! + * @brief creates NEW translate 2d transform matrix by v vector + * + * @param[in] v translate vector [x, y] + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_translate2d_make(vec2s v) { + mat3s m; + glm_translate2d_make(m.raw, v.raw); + return m; +} + +/*! + * @brief creates NEW 2d scale matrix by v vector + * + * @param[in] v scale vector [x, y] + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_scale2d_make(vec2s v) { + mat3s m; + glm_scale2d_make(m.raw, v.raw); + return m; +} + +/*! + * @brief scales existing 2d transform matrix by v vector + * and stores result in same matrix + * + * @param[in] m affine transfrom + * @param[in] v scale vector [x, y, z] + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_scale2d(mat3s m, vec2s v) { + mat3s r; + glm_scale2d_to(m.raw, v.raw, r.raw); + return r; +} + +/*! + * @brief applies uniform scale to existing 2d transform matrix v = [s, s, s] + * and stores result in same matrix + * + * @param[in] m affine transfrom + * @param[in] s scale factor + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_scale2d_uni(mat3s m, float s) { + glm_scale2d_uni(m.raw, s); + return m; +} + +/*! + * @brief creates NEW 2d rotation matrix by angle and axis + * + * axis will be normalized so you don't need to normalize it + * + * @param[in] angle angle (radians) + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_rotate2d_make(float angle) { + mat3s m; + glm_rotate2d_make(m.raw, angle); + return m; +} + +/*! + * @brief rotate existing 2d transform matrix around given axis by angle + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_rotate2d(mat3s m, float angle) { + glm_rotate2d(m.raw, angle); + return m; +} + +/*! + * @brief rotate existing 2d transform matrix around given axis by angle + * + * @param[in] m affine transfrom + * @param[in] angle angle (radians) + * @returns affine transfrom + */ +CGLM_INLINE +mat3s +glms_rotate2d_to(mat3s m, float angle) { + glm_rotate2d(m.raw, angle); + return m; +} + +#endif /* cglms_affine2ds_h */ diff --git a/lib/cglm/include/cglm/struct/box.h b/lib/cglm/include/cglm/struct/box.h new file mode 100644 index 0000000..a55884f --- /dev/null +++ b/lib/cglm/include/cglm/struct/box.h @@ -0,0 +1,256 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglms_boxs_h +#define cglms_boxs_h + +#include "../common.h" +#include "../types-struct.h" +#include "../box.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" + +/*! + * @brief apply transform to Axis-Aligned Bounding Box + * + * @param[in] box bounding box + * @param[in] m transform matrix + * @param[out] dest transformed bounding box + */ +CGLM_INLINE +void +glms_aabb_transform(vec3s box[2], mat4s m, vec3s dest[2]) { + vec3 rawBox[2]; + vec3 rawDest[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_aabb_transform(rawBox, m.raw, rawDest); + glms_vec3_pack(dest, rawDest, 2); +} + +/*! + * @brief merges two AABB bounding box and creates new one + * + * two box must be in same space, if one of box is in different space then + * you should consider to convert it's space by glm_box_space + * + * @param[in] box1 bounding box 1 + * @param[in] box2 bounding box 2 + * @param[out] dest merged bounding box + */ +CGLM_INLINE +void +glms_aabb_merge(vec3s box1[2], vec3s box2[2], vec3s dest[2]) { + vec3 rawBox1[2]; + vec3 rawBox2[2]; + vec3 rawDest[2]; + + glms_vec3_unpack(rawBox1, box1, 2); + glms_vec3_unpack(rawBox2, box2, 2); + glm_aabb_merge(rawBox1, rawBox2, rawDest); + glms_vec3_pack(dest, rawDest, 2); +} + +/*! + * @brief crops a bounding box with another one. + * + * this could be useful for gettng a bbox which fits with view frustum and + * object bounding boxes. In this case you crop view frustum box with objects + * box + * + * @param[in] box bounding box 1 + * @param[in] cropBox crop box + * @param[out] dest cropped bounding box + */ +CGLM_INLINE +void +glms_aabb_crop(vec3s box[2], vec3s cropBox[2], vec3s dest[2]) { + vec3 rawBox[2]; + vec3 rawCropBox[2]; + vec3 rawDest[2]; + + glms_vec3_unpack(rawBox, box, 2); + glms_vec3_unpack(rawCropBox, cropBox, 2); + glm_aabb_crop(rawBox, rawCropBox, rawDest); + glms_vec3_pack(dest, rawDest, 2); +} + +/*! + * @brief crops a bounding box with another one. + * + * this could be useful for gettng a bbox which fits with view frustum and + * object bounding boxes. In this case you crop view frustum box with objects + * box + * + * @param[in] box bounding box + * @param[in] cropBox crop box + * @param[in] clampBox miniumum box + * @param[out] dest cropped bounding box + */ +CGLM_INLINE +void +glms_aabb_crop_until(vec3s box[2], + vec3s cropBox[2], + vec3s clampBox[2], + vec3s dest[2]) { + glms_aabb_crop(box, cropBox, dest); + glms_aabb_merge(clampBox, dest, dest); +} + +/*! + * @brief check if AABB intersects with frustum planes + * + * this could be useful for frustum culling using AABB. + * + * OPTIMIZATION HINT: + * if planes order is similar to LEFT, RIGHT, BOTTOM, TOP, NEAR, FAR + * then this method should run even faster because it would only use two + * planes if object is not inside the two planes + * fortunately cglm extracts planes as this order! just pass what you got! + * + * @param[in] box bounding box + * @param[in] planes frustum planes + */ +CGLM_INLINE +bool +glms_aabb_frustum(vec3s box[2], vec4s planes[6]) { + vec3 rawBox[2]; + vec4 rawPlanes[6]; + + glms_vec3_unpack(rawBox, box, 2); + glms_vec4_unpack(rawPlanes, planes, 6); + return glm_aabb_frustum(rawBox, rawPlanes); +} + +/*! + * @brief invalidate AABB min and max values + * + * @param[in, out] box bounding box + */ +CGLM_INLINE +void +glms_aabb_invalidate(vec3s box[2]) { + box[0] = glms_vec3_broadcast(FLT_MAX); + box[1] = glms_vec3_broadcast(-FLT_MAX); +} + +/*! + * @brief check if AABB is valid or not + * + * @param[in] box bounding box + */ +CGLM_INLINE +bool +glms_aabb_isvalid(vec3s box[2]) { + vec3 rawBox[2]; + glms_vec3_unpack(rawBox, box, 2); + return glm_aabb_isvalid(rawBox); +} + +/*! + * @brief distance between of min and max + * + * @param[in] box bounding box + */ +CGLM_INLINE +float +glms_aabb_size(vec3s box[2]) { + return glm_vec3_distance(box[0].raw, box[1].raw); +} + +/*! + * @brief radius of sphere which surrounds AABB + * + * @param[in] box bounding box + */ +CGLM_INLINE +float +glms_aabb_radius(vec3s box[2]) { + return glms_aabb_size(box) * 0.5f; +} + +/*! + * @brief computes center point of AABB + * + * @param[in] box bounding box + * @returns center of bounding box + */ +CGLM_INLINE +vec3s +glms_aabb_center(vec3s box[2]) { + return glms_vec3_center(box[0], box[1]); +} + +/*! + * @brief check if two AABB intersects + * + * @param[in] box bounding box + * @param[in] other other bounding box + */ +CGLM_INLINE +bool +glms_aabb_aabb(vec3s box[2], vec3s other[2]) { + vec3 rawBox[2]; + vec3 rawOther[2]; + + glms_vec3_unpack(rawBox, box, 2); + glms_vec3_unpack(rawOther, other, 2); + return glm_aabb_aabb(rawBox, rawOther); +} + +/*! + * @brief check if AABB intersects with sphere + * + * https://github.com/erich666/GraphicsGems/blob/master/gems/BoxSphere.c + * Solid Box - Solid Sphere test. + * + * @param[in] box solid bounding box + * @param[in] s solid sphere + */ +CGLM_INLINE +bool +glms_aabb_sphere(vec3s box[2], vec4s s) { + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + return glm_aabb_sphere(rawBox, s.raw); +} + +/*! + * @brief check if point is inside of AABB + * + * @param[in] box bounding box + * @param[in] point point + */ +CGLM_INLINE +bool +glms_aabb_point(vec3s box[2], vec3s point) { + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + return glm_aabb_point(rawBox, point.raw); +} + +/*! + * @brief check if AABB contains other AABB + * + * @param[in] box bounding box + * @param[in] other other bounding box + */ +CGLM_INLINE +bool +glms_aabb_contains(vec3s box[2], vec3s other[2]) { + vec3 rawBox[2]; + vec3 rawOther[2]; + + glms_vec3_unpack(rawBox, box, 2); + glms_vec3_unpack(rawOther, other, 2); + return glm_aabb_contains(rawBox, rawOther); +} + +#endif /* cglms_boxs_h */ diff --git a/lib/cglm/include/cglm/struct/cam.h b/lib/cglm/include/cglm/struct/cam.h new file mode 100644 index 0000000..2a92af7 --- /dev/null +++ b/lib/cglm/include/cglm/struct/cam.h @@ -0,0 +1,646 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_frustum(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_ortho(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_ortho_aabb(vec3s box[2]); + CGLM_INLINE mat4s glms_ortho_aabb_p(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_aabb_pz(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_default(float aspect) + CGLM_INLINE mat4s glms_ortho_default_s(float aspect, float size) + CGLM_INLINE mat4s glms_perspective(float fovy, + float aspect, + float nearZ, + float farZ) + CGLM_INLINE void glms_persp_move_far(mat4s proj, float deltaFar) + CGLM_INLINE mat4s glms_perspective_default(float aspect) + CGLM_INLINE void glms_perspective_resize(mat4s proj, float aspect) + CGLM_INLINE mat4s glms_lookat(vec3s eye, vec3s center, vec3s up) + CGLM_INLINE mat4s glms_look(vec3s eye, vec3s dir, vec3s up) + CGLM_INLINE mat4s glms_look_anyup(vec3s eye, vec3s dir) + CGLM_INLINE void glms_persp_decomp(mat4s proj, + float *nearv, float *farv, + float *top, float *bottom, + float *left, float *right) + CGLM_INLINE void glms_persp_decompv(mat4s proj, float dest[6]) + CGLM_INLINE void glms_persp_decomp_x(mat4s proj, float *left, float *right) + CGLM_INLINE void glms_persp_decomp_y(mat4s proj, float *top, float *bottom) + CGLM_INLINE void glms_persp_decomp_z(mat4s proj, float *nearv, float *farv) + CGLM_INLINE void glms_persp_decomp_far(mat4s proj, float *farZ) + CGLM_INLINE void glms_persp_decomp_near(mat4s proj, float *nearZ) + CGLM_INLINE float glms_persp_fovy(mat4s proj) + CGLM_INLINE float glms_persp_aspect(mat4s proj) + CGLM_INLINE vec4s glms_persp_sizes(mat4s proj, float fovy) + */ + +#ifndef cglms_cam_h +#define cglms_cam_h + +#include "../common.h" +#include "../types-struct.h" +#include "../plane.h" +#include "../cam.h" + +#ifndef CGLM_CLIPSPACE_INCLUDE_ALL +# if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO +# include "clipspace/ortho_lh_zo.h" +# include "clipspace/persp_lh_zo.h" +# include "clipspace/view_lh_zo.h" +# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO +# include "clipspace/ortho_lh_no.h" +# include "clipspace/persp_lh_no.h" +# include "clipspace/view_lh_no.h" +# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO +# include "clipspace/ortho_rh_zo.h" +# include "clipspace/persp_rh_zo.h" +# include "clipspace/view_rh_zo.h" +# elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO +# include "clipspace/ortho_rh_no.h" +# include "clipspace/persp_rh_no.h" +# include "clipspace/view_rh_no.h" +# endif +#else +# include "clipspace/ortho_lh_zo.h" +# include "clipspace/persp_lh_zo.h" +# include "clipspace/ortho_lh_no.h" +# include "clipspace/persp_lh_no.h" +# include "clipspace/ortho_rh_zo.h" +# include "clipspace/persp_rh_zo.h" +# include "clipspace/ortho_rh_no.h" +# include "clipspace/persp_rh_no.h" +# include "clipspace/view_lh_zo.h" +# include "clipspace/view_lh_no.h" +# include "clipspace/view_rh_zo.h" +# include "clipspace/view_rh_no.h" +#endif + +/*! + * @brief set up perspective peprojection matrix + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_frustum(float left, float right, + float bottom, float top, + float nearZ, float farZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_frustum_lh_zo(left, right, bottom, top, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_frustum_lh_no(left, right, bottom, top, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_frustum_rh_zo(left, right, bottom, top, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_frustum_rh_no(left, right, bottom, top, nearZ, farZ); +#endif +} + +/*! + * @brief set up orthographic projection matrix + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho(float left, float right, + float bottom, float top, + float nearZ, float farZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_ortho_lh_zo(left, right, bottom, top, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_ortho_lh_no(left, right, bottom, top, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_ortho_rh_zo(left, right, bottom, top, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_ortho_rh_no(left, right, bottom, top, nearZ, farZ); +#endif +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb(vec3s box[2]) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_ortho_aabb_lh_zo(box); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_ortho_aabb_lh_no(box); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_ortho_aabb_rh_zo(box); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_ortho_aabb_rh_no(box); +#endif +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_p(vec3s box[2], float padding) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_ortho_aabb_p_lh_zo(box, padding); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_ortho_aabb_p_lh_no(box, padding); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_ortho_aabb_p_rh_zo(box, padding); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_ortho_aabb_p_rh_no(box, padding); +#endif +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_pz(vec3s box[2], float padding) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_ortho_aabb_pz_lh_zo(box, padding); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_ortho_aabb_pz_lh_no(box, padding); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_ortho_aabb_pz_rh_zo(box, padding); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_ortho_aabb_pz_rh_no(box, padding); +#endif +} + +/*! + * @brief set up unit orthographic projection matrix + * + * @param[in] aspect aspect ration ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default(float aspect) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_ortho_default_lh_zo(aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_ortho_default_lh_no(aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_ortho_default_rh_zo(aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_ortho_default_rh_no(aspect); +#endif +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_s(float aspect, float size) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_ortho_default_s_lh_zo(aspect, size); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_ortho_default_s_lh_no(aspect, size); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_ortho_default_s_rh_zo(aspect, size); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_ortho_default_s_rh_no(aspect, size); +#endif +} + +/*! + * @brief set up perspective projection matrix + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective(float fovy, float aspect, float nearZ, float farZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_perspective_lh_zo(fovy, aspect, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_perspective_lh_no(fovy, aspect, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_perspective_rh_zo(fovy, aspect, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_perspective_rh_no(fovy, aspect, nearZ, farZ); +#endif +} + +/*! + * @brief extend perspective projection matrix's far distance + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glm_persp_move_far(prooj.raw, deltaFar) to avoid create new mat4 + * each time + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +mat4s +glms_persp_move_far(mat4s proj, float deltaFar) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_persp_move_far_lh_zo(proj, deltaFar); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_persp_move_far_lh_no(proj, deltaFar); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_persp_move_far_rh_zo(proj, deltaFar); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_persp_move_far_rh_no(proj, deltaFar); +#endif +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values + * + * @param[in] aspect aspect ratio ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_default(float aspect) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_perspective_default_lh_zo(aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_perspective_default_lh_no(aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_perspective_default_rh_zo(aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_perspective_default_rh_no(aspect); +#endif +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * reized + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glms_perspective_resize(proj.raw, aspect) to avoid create new mat4 + * each time + * + * @param[in, out] proj perspective projection matrix + * @param[in] aspect aspect ratio ( width / height ) + */ +CGLM_INLINE +mat4s +glms_perspective_resize(mat4s proj, float aspect) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_perspective_resize_lh_zo(proj, aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_perspective_resize_lh_no(proj, aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_perspective_resize_rh_zo(proj, aspect); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_perspective_resize_rh_no(proj, aspect); +#endif +} + +/*! + * @brief set up view matrix + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_lookat(vec3s eye, vec3s center, vec3s up) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_lookat_lh_zo(eye, center, up); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_lookat_lh_no(eye, center, up); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_lookat_rh_zo(eye, center, up); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_lookat_rh_no(eye, center, up); +#endif +} + +/*! + * @brief set up view matrix + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look(vec3s eye, vec3s dir, vec3s up) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_look_lh_zo(eye, dir, up); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_look_lh_no(eye, dir, up); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_look_rh_zo(eye, dir, up); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_look_rh_no(eye, dir, up); +#endif +} + +/*! + * @brief set up view matrix + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_anyup(vec3s eye, vec3s dir) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_look_anyup_lh_zo(eye, dir); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_look_anyup_lh_no(eye, dir); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_look_anyup_rh_zo(eye, dir); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_look_anyup_rh_no(eye, dir); +#endif +} + +/*! + * @brief decomposes frustum values of perspective projection. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp(mat4s proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glms_persp_decomp_lh_zo(proj, nearZ, farZ, top, bottom, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glms_persp_decomp_lh_no(proj, nearZ, farZ, top, bottom, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glms_persp_decomp_rh_zo(proj, nearZ, farZ, top, bottom, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glms_persp_decomp_rh_no(proj, nearZ, farZ, top, bottom, left, right); +#endif +} + +/*! + * @brief decomposes frustum values of perspective projection. + * this makes easy to get all values at once + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glms_persp_decompv(mat4s proj, float dest[6]) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glms_persp_decompv_lh_zo(proj, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glms_persp_decompv_lh_no(proj, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glms_persp_decompv_rh_zo(proj, dest); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glms_persp_decompv_rh_no(proj, dest); +#endif +} + +/*! + * @brief decomposes left and right values of perspective projection. + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_x(mat4s proj, + float * __restrict left, + float * __restrict right) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glms_persp_decomp_x_lh_zo(proj, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glms_persp_decomp_x_lh_no(proj, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glms_persp_decomp_x_rh_zo(proj, left, right); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glms_persp_decomp_x_rh_no(proj, left, right); +#endif +} + +/*! + * @brief decomposes top and bottom values of perspective projection. + * y stands for y axis (top / botom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glms_persp_decomp_y(mat4s proj, + float * __restrict top, + float * __restrict bottom) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glms_persp_decomp_y_lh_zo(proj, top, bottom); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glms_persp_decomp_y_lh_no(proj, top, bottom); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glms_persp_decomp_y_rh_zo(proj, top, bottom); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glms_persp_decomp_y_rh_no(proj, top, bottom); +#endif +} + +/*! + * @brief decomposes near and far values of perspective projection. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_z(mat4s proj, + float * __restrict nearZ, + float * __restrict farZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glms_persp_decomp_z_lh_zo(proj, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glms_persp_decomp_z_lh_no(proj, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glms_persp_decomp_z_rh_zo(proj, nearZ, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glms_persp_decomp_z_rh_no(proj, nearZ, farZ); +#endif +} + +/*! + * @brief decomposes far value of perspective projection. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_far(mat4s proj, float * __restrict farZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glms_persp_decomp_far_lh_zo(proj, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glms_persp_decomp_far_lh_no(proj, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glms_persp_decomp_far_rh_zo(proj, farZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glms_persp_decomp_far_rh_no(proj, farZ); +#endif +} + +/*! + * @brief decomposes near value of perspective projection. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glms_persp_decomp_near(mat4s proj, float * __restrict nearZ) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + glms_persp_decomp_near_lh_zo(proj, nearZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + glms_persp_decomp_near_lh_no(proj, nearZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + glms_persp_decomp_near_rh_zo(proj, nearZ); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + glms_persp_decomp_near_rh_no(proj, nearZ); +#endif +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_fovy(mat4s proj) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_persp_fovy_lh_zo(proj); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_persp_fovy_lh_no(proj); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_persp_fovy_rh_zo(proj); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_persp_fovy_rh_no(proj); +#endif +} + +/*! + * @brief returns aspect ratio of perspective projection + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_aspect(mat4s proj) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_persp_aspect_lh_zo(proj); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_persp_aspect_lh_no(proj); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_persp_aspect_rh_zo(proj); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_persp_aspect_rh_no(proj); +#endif +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @returns sizes as vector, sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +vec4s +glms_persp_sizes(mat4s proj, float fovy) { +#if CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_ZO + return glms_persp_sizes_lh_zo(proj, fovy); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_LH_NO + return glms_persp_sizes_lh_no(proj, fovy); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_ZO + return glms_persp_sizes_rh_zo(proj, fovy); +#elif CGLM_CONFIG_CLIP_CONTROL == CGLM_CLIP_CONTROL_RH_NO + return glms_persp_sizes_rh_no(proj, fovy); +#endif +} + +#endif /* cglms_cam_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/ortho_lh_no.h b/lib/cglm/include/cglm/struct/clipspace/ortho_lh_no.h new file mode 100644 index 0000000..5fcda54 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/ortho_lh_no.h @@ -0,0 +1,152 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_ortho_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_ortho_aabb_lh_no(vec3s box[2]); + CGLM_INLINE mat4s glms_ortho_aabb_p_lh_no(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_aabb_pz_lh_no(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_default_lh_no(float aspect) + CGLM_INLINE mat4s glms_ortho_default_s_lh_no(float aspect, float size) + */ + +#ifndef cglms_ortho_lh_no_h +#define cglms_ortho_lh_no_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up orthographic projection matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ) { + mat4s dest; + glm_ortho_lh_no(left, right, bottom, top, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_lh_no(vec3s box[2]) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_lh_no(rawBox, dest.raw); + + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_p_lh_no(vec3s box[2], float padding) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_p_lh_no(rawBox, padding, dest.raw); + + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_pz_lh_no(vec3s box[2], float padding) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_pz_lh_no(rawBox, padding, dest.raw); + + return dest; +} + +/*! + * @brief set up unit orthographic projection matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ration ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_lh_no(float aspect) { + mat4s dest; + glm_ortho_default_lh_no(aspect, dest.raw); + return dest; +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_s_lh_no(float aspect, float size) { + mat4s dest; + glm_ortho_default_s_lh_no(aspect, size, dest.raw); + return dest; +} + +#endif /* cglms_ortho_lh_no_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/ortho_lh_zo.h b/lib/cglm/include/cglm/struct/clipspace/ortho_lh_zo.h new file mode 100644 index 0000000..fe49247 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/ortho_lh_zo.h @@ -0,0 +1,152 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_ortho_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_ortho_aabb_lh_zo(vec3s box[2]); + CGLM_INLINE mat4s glms_ortho_aabb_p_lh_zo(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_aabb_pz_lh_zo(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_default_lh_zo(float aspect) + CGLM_INLINE mat4s glms_ortho_default_s_lh_zo(float aspect, float size) + */ + +#ifndef cglms_ortho_lh_zo_h +#define cglms_ortho_lh_zo_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up orthographic projection matrix + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ) { + mat4s dest; + glm_ortho_lh_zo(left, right, bottom, top, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_lh_zo(vec3s box[2]) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_lh_zo(rawBox, dest.raw); + + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_p_lh_zo(vec3s box[2], float padding) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_p_lh_zo(rawBox, padding, dest.raw); + + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_pz_lh_zo(vec3s box[2], float padding) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_pz_lh_zo(rawBox, padding, dest.raw); + + return dest; +} + +/*! + * @brief set up unit orthographic projection matrix + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] aspect aspect ration ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_lh_zo(float aspect) { + mat4s dest; + glm_ortho_default_lh_zo(aspect, dest.raw); + return dest; +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_s_lh_zo(float aspect, float size) { + mat4s dest; + glm_ortho_default_s_lh_zo(aspect, size, dest.raw); + return dest; +} + +#endif /* cglms_ortho_lh_zo_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/ortho_rh_no.h b/lib/cglm/include/cglm/struct/clipspace/ortho_rh_no.h new file mode 100644 index 0000000..e88713f --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/ortho_rh_no.h @@ -0,0 +1,152 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_ortho_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_ortho_aabb_rh_no(vec3s box[2]); + CGLM_INLINE mat4s glms_ortho_aabb_p_rh_no(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_aabb_pz_rh_no(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_default_rh_no(float aspect) + CGLM_INLINE mat4s glms_ortho_default_s_rh_no(float aspect, float size) + */ + +#ifndef cglms_ortho_rh_no_h +#define cglms_ortho_rh_no_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up orthographic projection matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ) { + mat4s dest; + glm_ortho_rh_no(left, right, bottom, top, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_rh_no(vec3s box[2]) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_rh_no(rawBox, dest.raw); + + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_p_rh_no(vec3s box[2], float padding) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_p_rh_no(rawBox, padding, dest.raw); + + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_pz_rh_no(vec3s box[2], float padding) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_pz_rh_no(rawBox, padding, dest.raw); + + return dest; +} + +/*! + * @brief set up unit orthographic projection matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ration ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_rh_no(float aspect) { + mat4s dest; + glm_ortho_default_rh_no(aspect, dest.raw); + return dest; +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_s_rh_no(float aspect, float size) { + mat4s dest; + glm_ortho_default_s_rh_no(aspect, size, dest.raw); + return dest; +} + +#endif /* cglms_ortho_rh_no_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/ortho_rh_zo.h b/lib/cglm/include/cglm/struct/clipspace/ortho_rh_zo.h new file mode 100644 index 0000000..8550b40 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/ortho_rh_zo.h @@ -0,0 +1,152 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_ortho_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_ortho_aabb_rh_zo(vec3s box[2]); + CGLM_INLINE mat4s glms_ortho_aabb_p_rh_zo(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_aabb_pz_rh_zo(vec3s box[2], float padding); + CGLM_INLINE mat4s glms_ortho_default_rh_zo(float aspect) + CGLM_INLINE mat4s glms_ortho_default_s_rh_zo(float aspect, float size) + */ + +#ifndef cglms_ortho_rh_zo_h +#define cglms_ortho_rh_zo_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up orthographic projection matrix + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ) { + mat4s dest; + glm_ortho_rh_zo(left, right, bottom, top, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_rh_zo(vec3s box[2]) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_rh_zo(rawBox, dest.raw); + + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_p_rh_zo(vec3s box[2], float padding) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_p_rh_zo(rawBox, padding, dest.raw); + + return dest; +} + +/*! + * @brief set up orthographic projection matrix using bounding box + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * bounding box (AABB) must be in view space + * + * @param[in] box AABB + * @param[in] padding padding for near and far + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_aabb_pz_rh_zo(vec3s box[2], float padding) { + mat4s dest; + vec3 rawBox[2]; + + glms_vec3_unpack(rawBox, box, 2); + glm_ortho_aabb_pz_rh_zo(rawBox, padding, dest.raw); + + return dest; +} + +/*! + * @brief set up unit orthographic projection matrix + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] aspect aspect ration ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_rh_zo(float aspect) { + mat4s dest; + glm_ortho_default_rh_zo(aspect, dest.raw); + return dest; +} + +/*! + * @brief set up orthographic projection matrix with given CUBE size + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] size cube size + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_ortho_default_s_rh_zo(float aspect, float size) { + mat4s dest; + glm_ortho_default_s_rh_zo(aspect, size, dest.raw); + return dest; +} + +#endif /* cglms_ortho_rh_zo_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/persp_lh_no.h b/lib/cglm/include/cglm/struct/clipspace/persp_lh_no.h new file mode 100644 index 0000000..f31c4b2 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/persp_lh_no.h @@ -0,0 +1,311 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_frustum_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_perspective_lh_no(float fovy, + float aspect, + float nearZ, + float farZ) + CGLM_INLINE void glms_persp_move_far_lh_no(mat4s proj, float deltaFar) + CGLM_INLINE mat4s glms_perspective_default_lh_no(float aspect) + CGLM_INLINE void glms_perspective_resize_lh_no(mat4s proj, float aspect) + CGLM_INLINE void glms_persp_decomp_lh_no(mat4s proj, + float *nearv, float *farv, + float *top, float *bottom, + float *left, float *right) + CGLM_INLINE void glms_persp_decompv_lh_no(mat4s proj, float dest[6]) + CGLM_INLINE void glms_persp_decomp_x_lh_no(mat4s proj, float *left, float *right) + CGLM_INLINE void glms_persp_decomp_y_lh_no(mat4s proj, float *top, float *bottom) + CGLM_INLINE void glms_persp_decomp_z_lh_no(mat4s proj, float *nearv, float *farv) + CGLM_INLINE void glms_persp_decomp_far_lh_no(mat4s proj, float *farZ) + CGLM_INLINE void glms_persp_decomp_near_lh_no(mat4s proj, float *nearZ) + CGLM_INLINE float glms_persp_fovy_lh_no(mat4s proj) + CGLM_INLINE float glms_persp_aspect_lh_no(mat4s proj) + CGLM_INLINE vec4s glms_persp_sizes_lh_no(mat4s proj, float fovy) + */ + +#ifndef cglms_persp_lh_no_h +#define cglms_persp_lh_no_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up perspective peprojection matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_frustum_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ) { + mat4s dest; + glm_frustum_lh_no(left, right, bottom, top, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief set up perspective projection matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_lh_no(float fovy, float aspect, float nearZ, float farZ) { + mat4s dest; + glm_perspective_lh_no(fovy, aspect, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief extend perspective projection matrix's far distance + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glms_persp_move_far_lh_no(prooj.raw, deltaFar) to avoid create new mat4 + * each time + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +mat4s +glms_persp_move_far_lh_no(mat4s proj, float deltaFar) { + mat4s dest; + dest = proj; + glm_persp_move_far_lh_no(dest.raw, deltaFar); + return dest; +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_default_lh_no(float aspect) { + mat4s dest; + glm_perspective_default_lh_no(aspect, dest.raw); + return dest; +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * reized with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glm_perspective_resize_lh_no(proj.raw, aspect) to avoid create new mat4 + * each time + * + * @param[in, out] proj perspective projection matrix + * @param[in] aspect aspect ratio ( width / height ) + */ +CGLM_INLINE +mat4s +glms_perspective_resize_lh_no(mat4s proj, float aspect) { + mat4s dest; + dest = proj; + glm_perspective_resize_lh_no(aspect, dest.raw); + return dest; +} + +/*! + * @brief decomposes frustum values of perspective projection. + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_lh_no(mat4s proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + glm_persp_decomp_lh_no(proj.raw, nearZ, farZ, top, bottom, left, right); +} + +/*! + * @brief decomposes frustum values of perspective projection. + * this makes easy to get all values at once + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glms_persp_decompv_lh_no(mat4s proj, float dest[6]) { + glm_persp_decompv_lh_no(proj.raw, dest); +} + +/*! + * @brief decomposes left and right values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_x_lh_no(mat4s proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x_lh_no(proj.raw, left, right); +} + +/*! + * @brief decomposes top and bottom values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * y stands for y axis (top / botom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glms_persp_decomp_y_lh_no(mat4s proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y_lh_no(proj.raw, top, bottom); +} + +/*! + * @brief decomposes near and far values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_z_lh_no(mat4s proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z_lh_no(proj.raw, nearZ, farZ); +} + +/*! + * @brief decomposes far value of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_far_lh_no(mat4s proj, float * __restrict farZ) { + glm_persp_decomp_far_lh_no(proj.raw, farZ); +} + +/*! + * @brief decomposes near value of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glms_persp_decomp_near_lh_no(mat4s proj, float * __restrict nearZ) { + glm_persp_decomp_near_lh_no(proj.raw, nearZ); +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_fovy_lh_no(mat4s proj) { + return glm_persp_fovy_lh_no(proj.raw); +} + +/*! + * @brief returns aspect ratio of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_aspect_lh_no(mat4s proj) { + return glm_persp_aspect_lh_no(proj.raw); +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @returns sizes as vector, sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +vec4s +glms_persp_sizes_lh_no(mat4s proj, float fovy) { + vec4s dest; + glm_persp_sizes_lh_no(proj.raw, fovy, dest.raw); + return dest; +} + +#endif /* cglms_persp_lh_no_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/persp_lh_zo.h b/lib/cglm/include/cglm/struct/clipspace/persp_lh_zo.h new file mode 100644 index 0000000..52f1cc7 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/persp_lh_zo.h @@ -0,0 +1,311 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_frustum_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_perspective_lh_zo(float fovy, + float aspect, + float nearZ, + float farZ) + CGLM_INLINE void glms_persp_move_far_lh_zo(mat4s proj, float deltaFar) + CGLM_INLINE mat4s glms_perspective_default_lh_zo(float aspect) + CGLM_INLINE void glms_perspective_resize_lh_zo(mat4s proj, float aspect) + CGLM_INLINE void glms_persp_decomp_lh_zo(mat4s proj, + float *nearv, float *farv, + float *top, float *bottom, + float *left, float *right) + CGLM_INLINE void glms_persp_decompv_lh_zo(mat4s proj, float dest[6]) + CGLM_INLINE void glms_persp_decomp_x_lh_zo(mat4s proj, float *left, float *right) + CGLM_INLINE void glms_persp_decomp_y_lh_zo(mat4s proj, float *top, float *bottom) + CGLM_INLINE void glms_persp_decomp_z_lh_zo(mat4s proj, float *nearv, float *farv) + CGLM_INLINE void glms_persp_decomp_far_lh_zo(mat4s proj, float *farZ) + CGLM_INLINE void glms_persp_decomp_near_lh_zo(mat4s proj, float *nearZ) + CGLM_INLINE float glms_persp_fovy_lh_zo(mat4s proj) + CGLM_INLINE float glms_persp_aspect_lh_zo(mat4s proj) + CGLM_INLINE vec4s glms_persp_sizes_lh_zo(mat4s proj, float fovy) + */ + +#ifndef cglms_persp_lh_zo_h +#define cglms_persp_lh_zo_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up perspective peprojection matrix + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_frustum_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ) { + mat4s dest; + glm_frustum_lh_zo(left, right, bottom, top, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief set up perspective projection matrix + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_lh_zo(float fovy, float aspect, float nearZ, float farZ) { + mat4s dest; + glm_perspective_lh_zo(fovy, aspect, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief extend perspective projection matrix's far distance + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glms_persp_move_far_lh_zo(prooj.raw, deltaFar) to avoid create new mat4 + * each time + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +mat4s +glms_persp_move_far_lh_zo(mat4s proj, float deltaFar) { + mat4s dest; + dest = proj; + glm_persp_move_far_lh_zo(dest.raw, deltaFar); + return dest; +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_default_lh_zo(float aspect) { + mat4s dest; + glm_perspective_default_lh_zo(aspect, dest.raw); + return dest; +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * reized with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glms_perspective_resize_lh_zo(proj.raw, aspect) to avoid create new mat4 + * each time + * + * @param[in, out] proj perspective projection matrix + * @param[in] aspect aspect ratio ( width / height ) + */ +CGLM_INLINE +mat4s +glms_perspective_resize_lh_zo(mat4s proj, float aspect) { + mat4s dest; + dest = proj; + glm_perspective_resize_lh_zo(aspect, dest.raw); + return dest; +} + +/*! + * @brief decomposes frustum values of perspective projection. + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_lh_zo(mat4s proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + glm_persp_decomp_lh_zo(proj.raw, nearZ, farZ, top, bottom, left, right); +} + +/*! + * @brief decomposes frustum values of perspective projection. + * this makes easy to get all values at once + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glms_persp_decompv_lh_zo(mat4s proj, float dest[6]) { + glm_persp_decompv_lh_zo(proj.raw, dest); +} + +/*! + * @brief decomposes left and right values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_x_lh_zo(mat4s proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x_lh_zo(proj.raw, left, right); +} + +/*! + * @brief decomposes top and bottom values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * y stands for y axis (top / botom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glms_persp_decomp_y_lh_zo(mat4s proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y_lh_zo(proj.raw, top, bottom); +} + +/*! + * @brief decomposes near and far values of perspective projection + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_z_lh_zo(mat4s proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z_lh_zo(proj.raw, nearZ, farZ); +} + +/*! + * @brief decomposes far value of perspective projection + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_far_lh_zo(mat4s proj, float * __restrict farZ) { + glm_persp_decomp_far_lh_zo(proj.raw, farZ); +} + +/*! + * @brief decomposes near value of perspective projection + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glms_persp_decomp_near_lh_zo(mat4s proj, float * __restrict nearZ) { + glm_persp_decomp_near_lh_zo(proj.raw, nearZ); +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_fovy_lh_zo(mat4s proj) { + return glm_persp_fovy_lh_zo(proj.raw); +} + +/*! + * @brief returns aspect ratio of perspective projection + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_aspect_lh_zo(mat4s proj) { + return glm_persp_aspect_lh_zo(proj.raw); +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @returns sizes as vector, sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +vec4s +glms_persp_sizes_lh_zo(mat4s proj, float fovy) { + vec4s dest; + glm_persp_sizes_lh_zo(proj.raw, fovy, dest.raw); + return dest; +} + +#endif /* cglms_persp_lh_zo_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/persp_rh_no.h b/lib/cglm/include/cglm/struct/clipspace/persp_rh_no.h new file mode 100644 index 0000000..d382bcf --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/persp_rh_no.h @@ -0,0 +1,311 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_frustum_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_perspective_rh_no(float fovy, + float aspect, + float nearZ, + float farZ) + CGLM_INLINE void glms_persp_move_far_rh_no(mat4s proj, float deltaFar) + CGLM_INLINE mat4s glms_perspective_default_rh_no(float aspect) + CGLM_INLINE void glms_perspective_resize_rh_no(mat4s proj, float aspect) + CGLM_INLINE void glms_persp_decomp_rh_no(mat4s proj, + float *nearv, float *farv, + float *top, float *bottom, + float *left, float *right) + CGLM_INLINE void glms_persp_decompv_rh_no(mat4s proj, float dest[6]) + CGLM_INLINE void glms_persp_decomp_x_rh_no(mat4s proj, float *left, float *right) + CGLM_INLINE void glms_persp_decomp_y_rh_no(mat4s proj, float *top, float *bottom) + CGLM_INLINE void glms_persp_decomp_z_rh_no(mat4s proj, float *nearv, float *farv) + CGLM_INLINE void glms_persp_decomp_far_rh_no(mat4s proj, float *farZ) + CGLM_INLINE void glms_persp_decomp_near_rh_no(mat4s proj, float *nearZ) + CGLM_INLINE float glms_persp_fovy_rh_no(mat4s proj) + CGLM_INLINE float glms_persp_aspect_rh_no(mat4s proj) + CGLM_INLINE vec4s glms_persp_sizes_rh_no(mat4s proj, float fovy) + */ + +#ifndef cglms_persp_rh_no_h +#define cglms_persp_rh_no_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up perspective peprojection matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_frustum_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ) { + mat4s dest; + glm_frustum_rh_no(left, right, bottom, top, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief set up perspective projection matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_rh_no(float fovy, float aspect, float nearZ, float farZ) { + mat4s dest; + glm_perspective_rh_no(fovy, aspect, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief extend perspective projection matrix's far distance + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glms_persp_move_far_rh_no(prooj.raw, deltaFar) to avoid create new mat4 + * each time + * s + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +mat4s +glms_persp_move_far_rh_no(mat4s proj, float deltaFar) { + mat4s dest; + dest = proj; + glm_persp_move_far_rh_no(dest.raw, deltaFar); + return dest; +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_default_rh_no(float aspect) { + mat4s dest; + glm_perspective_default_rh_no(aspect, dest.raw); + return dest; +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * reized with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glm_perspective_resize_rh_no(proj.raw, aspect) to avoid create new mat4 + * each time + * + * @param[in, out] proj perspective projection matrix + * @param[in] aspect aspect ratio ( width / height ) + */ +CGLM_INLINE +mat4s +glms_perspective_resize_rh_no(mat4s proj, float aspect) { + mat4s dest; + dest = proj; + glm_perspective_resize_rh_no(aspect, dest.raw); + return dest; +} + +/*! + * @brief decomposes frustum values of perspective projection. + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_rh_no(mat4s proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + glm_persp_decomp_rh_no(proj.raw, nearZ, farZ, top, bottom, left, right); +} + +/*! + * @brief decomposes frustum values of perspective projection. + * this makes easy to get all values at once + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glms_persp_decompv_rh_no(mat4s proj, float dest[6]) { + glm_persp_decompv_rh_no(proj.raw, dest); +} + +/*! + * @brief decomposes left and right values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_x_rh_no(mat4s proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x_rh_no(proj.raw, left, right); +} + +/*! + * @brief decomposes top and bottom values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * y stands for y axis (top / botom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glms_persp_decomp_y_rh_no(mat4s proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y_rh_no(proj.raw, top, bottom); +} + +/*! + * @brief decomposes near and far values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_z_rh_no(mat4s proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z_rh_no(proj.raw, nearZ, farZ); +} + +/*! + * @brief decomposes far value of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_far_rh_no(mat4s proj, float * __restrict farZ) { + glm_persp_decomp_far_rh_no(proj.raw, farZ); +} + +/*! + * @brief decomposes near value of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glms_persp_decomp_near_rh_no(mat4s proj, float * __restrict nearZ) { + glm_persp_decomp_near_rh_no(proj.raw, nearZ); +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_fovy_rh_no(mat4s proj) { + return glm_persp_fovy_rh_no(proj.raw); +} + +/*! + * @brief returns aspect ratio of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_aspect_rh_no(mat4s proj) { + return glm_persp_aspect_rh_no(proj.raw); +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @returns sizes as vector, sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +vec4s +glms_persp_sizes_rh_no(mat4s proj, float fovy) { + vec4s dest; + glm_persp_sizes_rh_no(proj.raw, fovy, dest.raw); + return dest; +} + +#endif /* cglms_persp_rh_no_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/persp_rh_zo.h b/lib/cglm/include/cglm/struct/clipspace/persp_rh_zo.h new file mode 100644 index 0000000..ca14402 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/persp_rh_zo.h @@ -0,0 +1,311 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_frustum_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ) + CGLM_INLINE mat4s glms_perspective_rh_zo(float fovy, + float aspect, + float nearZ, + float farZ) + CGLM_INLINE void glms_persp_move_far_rh_zo(mat4s proj, float deltaFar) + CGLM_INLINE mat4s glms_perspective_default_rh_zo(float aspect) + CGLM_INLINE void glms_perspective_resize_rh_zo(mat4s proj, float aspect) + CGLM_INLINE void glms_persp_decomp_rh_zo(mat4s proj, + float *nearv, float *farv, + float *top, float *bottom, + float *left, float *right) + CGLM_INLINE void glms_persp_decompv_rh_zo(mat4s proj, float dest[6]) + CGLM_INLINE void glms_persp_decomp_x_rh_zo(mat4s proj, float *left, float *right) + CGLM_INLINE void glms_persp_decomp_y_rh_zo(mat4s proj, float *top, float *bottom) + CGLM_INLINE void glms_persp_decomp_z_rh_zo(mat4s proj, float *nearv, float *farv) + CGLM_INLINE void glms_persp_decomp_far_rh_zo(mat4s proj, float *farZ) + CGLM_INLINE void glms_persp_decomp_near_rh_zo(mat4s proj, float *nearZ) + CGLM_INLINE float glms_persp_fovy_rh_zo(mat4s proj) + CGLM_INLINE float glms_persp_aspect_rh_zo(mat4s proj) + CGLM_INLINE vec4s glms_persp_sizes_rh_zo(mat4s proj, float fovy) + */ + +#ifndef cglms_persp_rh_zo_h +#define cglms_persp_rh_zo_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up perspective peprojection matrix + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] left viewport.left + * @param[in] right viewport.right + * @param[in] bottom viewport.bottom + * @param[in] top viewport.top + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping plane + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_frustum_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ) { + mat4s dest; + glm_frustum_rh_zo(left, right, bottom, top, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief set up perspective projection matrix + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] fovy field of view angle + * @param[in] aspect aspect ratio ( width / height ) + * @param[in] nearZ near clipping plane + * @param[in] farZ far clipping planes + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_rh_zo(float fovy, float aspect, float nearZ, float farZ) { + mat4s dest; + glm_perspective_rh_zo(fovy, aspect, nearZ, farZ, dest.raw); + return dest; +} + +/*! + * @brief extend perspective projection matrix's far distance + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glms_persp_move_far_rh_zo(prooj.raw, deltaFar) to avoid create new mat4 + * each time + * + * this function does not guarantee far >= near, be aware of that! + * + * @param[in, out] proj projection matrix to extend + * @param[in] deltaFar distance from existing far (negative to shink) + */ +CGLM_INLINE +mat4s +glms_persp_move_far_rh_zo(mat4s proj, float deltaFar) { + mat4s dest; + dest = proj; + glm_persp_move_far_rh_zo(dest.raw, deltaFar); + return dest; +} + +/*! + * @brief set up perspective projection matrix with default near/far + * and angle values with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] aspect aspect ratio ( width / height ) + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_perspective_default_rh_zo(float aspect) { + mat4s dest; + glm_perspective_default_rh_zo(aspect, dest.raw); + return dest; +} + +/*! + * @brief resize perspective matrix by aspect ratio ( width / height ) + * this makes very easy to resize proj matrix when window /viewport + * reized with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * NOTE: if you dodn't want to create new matrix then use array api on struct.raw + * like glm_perspective_resize_rh_zo(proj.raw, aspect) to avoid create new mat4 + * each time + * + * @param[in, out] proj perspective projection matrix + * @param[in] aspect aspect ratio ( width / height ) + */ +CGLM_INLINE +mat4s +glms_perspective_resize_rh_zo(mat4s proj, float aspect) { + mat4s dest; + dest = proj; + glm_perspective_resize_rh_zo(aspect, dest.raw); + return dest; +} + +/*! + * @brief decomposes frustum values of perspective projection. + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + * @param[out] top top + * @param[out] bottom bottom + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_rh_zo(mat4s proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + glm_persp_decomp_rh_zo(proj.raw, nearZ, farZ, top, bottom, left, right); +} + +/*! + * @brief decomposes frustum values of perspective projection. + * this makes easy to get all values at once + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] dest array + */ +CGLM_INLINE +void +glms_persp_decompv_rh_zo(mat4s proj, float dest[6]) { + glm_persp_decompv_rh_zo(proj.raw, dest); +} + +/*! + * @brief decomposes left and right values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * x stands for x axis (left / right axis) + * + * @param[in] proj perspective projection matrix + * @param[out] left left + * @param[out] right right + */ +CGLM_INLINE +void +glms_persp_decomp_x_rh_zo(mat4s proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x_rh_zo(proj.raw, left, right); +} + +/*! + * @brief decomposes top and bottom values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * y stands for y axis (top / botom axis) + * + * @param[in] proj perspective projection matrix + * @param[out] top top + * @param[out] bottom bottom + */ +CGLM_INLINE +void +glms_persp_decomp_y_rh_zo(mat4s proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y_rh_zo(proj.raw, top, bottom); +} + +/*! + * @brief decomposes near and far values of perspective projection + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * z stands for z axis (near / far axis) + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_z_rh_zo(mat4s proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z_rh_zo(proj.raw, nearZ, farZ); +} + +/*! + * @brief decomposes far value of perspective projection + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] farZ far + */ +CGLM_INLINE +void +glms_persp_decomp_far_rh_zo(mat4s proj, float * __restrict farZ) { + glm_persp_decomp_far_rh_zo(proj.raw, farZ); +} + +/*! + * @brief decomposes near value of perspective projection + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[out] nearZ near + */ +CGLM_INLINE +void +glms_persp_decomp_near_rh_zo(mat4s proj, float * __restrict nearZ) { + glm_persp_decomp_near_rh_zo(proj.raw, nearZ); +} + +/*! + * @brief returns field of view angle along the Y-axis (in radians) + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * if you need to degrees, use glm_deg to convert it or use this: + * fovy_deg = glm_deg(glm_persp_fovy(projMatrix)) + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_fovy_rh_zo(mat4s proj) { + return glm_persp_fovy_rh_zo(proj.raw); +} + +/*! + * @brief returns aspect ratio of perspective projection + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + */ +CGLM_INLINE +float +glms_persp_aspect_rh_zo(mat4s proj) { + return glm_persp_aspect_rh_zo(proj.raw); +} + +/*! + * @brief returns sizes of near and far planes of perspective projection + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * @param[in] proj perspective projection matrix + * @param[in] fovy fovy (see brief) + * @returns sizes as vector, sizes order: [Wnear, Hnear, Wfar, Hfar] + */ +CGLM_INLINE +vec4s +glms_persp_sizes_rh_zo(mat4s proj, float fovy) { + vec4s dest; + glm_persp_sizes_rh_zo(proj.raw, fovy, dest.raw); + return dest; +} + +#endif /* cglms_persp_rh_zo_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/project_no.h b/lib/cglm/include/cglm/struct/clipspace/project_no.h new file mode 100644 index 0000000..a12fb61 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/project_no.h @@ -0,0 +1,96 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE vec3s glms_unprojecti_no(vec3s pos, mat4s invMat, vec4s vp, vec3 dest) + CGLM_INLINE vec3s glms_project_no(vec3s pos, mat4s m, vec4s vp, vec3s dest) + */ + +#ifndef cglms_project_no_h +#define cglms_project_no_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief maps the specified viewport coordinates into specified space [1] + * the matrix should contain projection matrix. + * + * if you don't have ( and don't want to have ) an inverse matrix then use + * glm_unproject version. You may use existing inverse of matrix in somewhere + * else, this is why glm_unprojecti exists to save save inversion cost + * + * [1] space: + * 1- if m = invProj: View Space + * 2- if m = invViewProj: World Space + * 3- if m = invMVP: Object Space + * + * You probably want to map the coordinates into object space + * so use invMVP as m + * + * Computing viewProj: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * glm_mat4_inv(viewProj, invMVP); + * + * @param[in] pos point/position in viewport coordinates + * @param[in] invMat matrix (see brief) + * @param[in] vp viewport as [x, y, width, height] + * + * @returns unprojected coordinates + */ +CGLM_INLINE +vec3s +glms_unprojecti_no(vec3s pos, mat4s invMat, vec4s vp, vec3 dest) { + vec3s dest; + glm_unprojecti_no(pos.raw, invMat.raw, vp.raw, dest.raw); + return dest; +} + +/*! + * @brief map object coordinates to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] pos object coordinates + * @param[in] m MVP matrix + * @param[in] vp viewport as [x, y, width, height] + * + * @returns projected coordinates + */ +CGLM_INLINE +vec3s +glms_project_no(vec3s pos, mat4s m, vec4s vp, vec3s dest) { + vec3s dest; + glm_project_no(pos.raw, m.raw, vp.raw, dest.raw); + return dest; +} + +/*! + * @brief map object's z coordinate to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] v object coordinates + * @param[in] m MVP matrix + * + * @returns projected z coordinate + */ +CGLM_INLINE +vec3s +glms_project_z_no(vec3s v, mat4s m) { + return glm_project_z_no(v.raw, m.raw); +} + +#endif /* cglms_project_rh_no_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/project_zo.h b/lib/cglm/include/cglm/struct/clipspace/project_zo.h new file mode 100644 index 0000000..c510396 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/project_zo.h @@ -0,0 +1,96 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE vec3s glms_unprojecti_no(vec3s pos, mat4s invMat, vec4s vp, vec3 dest) + CGLM_INLINE vec3s glms_project_no(vec3s pos, mat4s m, vec4s vp, vec3s dest) + */ + +#ifndef cglms_project_zo_h +#define cglms_project_zo_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief maps the specified viewport coordinates into specified space [1] + * the matrix should contain projection matrix. + * + * if you don't have ( and don't want to have ) an inverse matrix then use + * glm_unproject version. You may use existing inverse of matrix in somewhere + * else, this is why glm_unprojecti exists to save save inversion cost + * + * [1] space: + * 1- if m = invProj: View Space + * 2- if m = invViewProj: World Space + * 3- if m = invMVP: Object Space + * + * You probably want to map the coordinates into object space + * so use invMVP as m + * + * Computing viewProj: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * glm_mat4_inv(viewProj, invMVP); + * + * @param[in] pos point/position in viewport coordinates + * @param[in] invMat matrix (see brief) + * @param[in] vp viewport as [x, y, width, height] + * + * @returns unprojected coordinates + */ +CGLM_INLINE +vec3s +glms_unprojecti_zo(vec3s pos, mat4s invMat, vec4s vp, vec3 dest) { + vec3s dest; + glm_unprojecti_zo(pos.raw, invMat.raw, vp.raw, dest.raw); + return dest; +} + +/*! + * @brief map object coordinates to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] pos object coordinates + * @param[in] m MVP matrix + * @param[in] vp viewport as [x, y, width, height] + * + * @returns projected coordinates + */ +CGLM_INLINE +vec3s +glms_project_zo(vec3s pos, mat4s m, vec4s vp, vec3 dest) { + vec3s dest; + glm_project_zo(pos.raw, m.raw, vp.raw, dest.raw); + return dest; +} + +/*! + * @brief map object's z coordinate to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] v object coordinates + * @param[in] m MVP matrix + * + * @returns projected z coordinate + */ +CGLM_INLINE +vec3s +glms_project_z_zo(vec3s v, mat4s m) { + return glm_project_z_zo(v.raw, m.raw); +} + +#endif /* cglm_project_zo_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/view_lh_no.h b/lib/cglm/include/cglm/struct/clipspace/view_lh_no.h new file mode 100644 index 0000000..cd8b5d9 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/view_lh_no.h @@ -0,0 +1,88 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_lookat_lh_no(vec3s eye, vec3s center, vec3s up) + CGLM_INLINE mat4s glms_look_lh_no(vec3s eye, vec3s dir, vec3s up) + CGLM_INLINE mat4s glms_look_anyup_lh_no(vec3s eye, vec3s dir) + */ + +#ifndef cglms_view_lh_no_h +#define cglms_view_lh_no_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up view matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_lookat_lh_no(vec3s eye, vec3s center, vec3s up) { + mat4s dest; + glm_lookat_lh_no(eye.raw, center.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief set up view matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_lh_no(vec3s eye, vec3s dir, vec3s up) { + mat4s dest; + glm_look_lh_no(eye.raw, dir.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief set up view matrix + * with a left-hand coordinate system and a + * clip-space of [-1, 1]. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_anyup_lh_no(vec3s eye, vec3s dir) { + mat4s dest; + glm_look_anyup_lh_no(eye.raw, dir.raw, dest.raw); + return dest; +} + +#endif /* cglms_view_lh_no_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/view_lh_zo.h b/lib/cglm/include/cglm/struct/clipspace/view_lh_zo.h new file mode 100644 index 0000000..e2f5f5c --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/view_lh_zo.h @@ -0,0 +1,88 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_lookat_lh_zo(vec3s eye, vec3s center, vec3s up) + CGLM_INLINE mat4s glms_look_lh_zo(vec3s eye, vec3s dir, vec3s up) + CGLM_INLINE mat4s glms_look_anyup_lh_zo(vec3s eye, vec3s dir) + */ + +#ifndef cglms_view_lh_zo_h +#define cglms_view_lh_zo_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up view matrix + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_lookat_lh_zo(vec3s eye, vec3s center, vec3s up) { + mat4s dest; + glm_lookat_lh_zo(eye.raw, center.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief set up view matrix + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_lh_zo(vec3s eye, vec3s dir, vec3s up) { + mat4s dest; + glm_look_lh_zo(eye.raw, dir.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief set up view matrix + * with a left-hand coordinate system and a + * clip-space of [0, 1]. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_anyup_lh_zo(vec3s eye, vec3s dir) { + mat4s dest; + glm_look_anyup_lh_zo(eye.raw, dir.raw, dest.raw); + return dest; +} + +#endif /* cglms_view_lh_zo_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/view_rh_no.h b/lib/cglm/include/cglm/struct/clipspace/view_rh_no.h new file mode 100644 index 0000000..e49e735 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/view_rh_no.h @@ -0,0 +1,88 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_lookat_rh_no(vec3s eye, vec3s center, vec3s up) + CGLM_INLINE mat4s glms_look_rh_no(vec3s eye, vec3s dir, vec3s up) + CGLM_INLINE mat4s glms_look_anyup_rh_no(vec3s eye, vec3s dir) + */ + +#ifndef cglms_view_rh_no_h +#define cglms_view_rh_no_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up view matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_lookat_rh_no(vec3s eye, vec3s center, vec3s up) { + mat4s dest; + glm_lookat_rh_no(eye.raw, center.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief set up view matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_rh_no(vec3s eye, vec3s dir, vec3s up) { + mat4s dest; + glm_look_rh_no(eye.raw, dir.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief set up view matrix + * with a right-hand coordinate system and a + * clip-space of [-1, 1]. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_anyup_rh_no(vec3s eye, vec3s dir) { + mat4s dest; + glm_look_anyup_rh_no(eye.raw, dir.raw, dest.raw); + return dest; +} + +#endif /* cglms_view_rh_no_h */ diff --git a/lib/cglm/include/cglm/struct/clipspace/view_rh_zo.h b/lib/cglm/include/cglm/struct/clipspace/view_rh_zo.h new file mode 100644 index 0000000..1347522 --- /dev/null +++ b/lib/cglm/include/cglm/struct/clipspace/view_rh_zo.h @@ -0,0 +1,88 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE mat4s glms_lookat_rh_zo(vec3s eye, vec3s center, vec3s up) + CGLM_INLINE mat4s glms_look_rh_zo(vec3s eye, vec3s dir, vec3s up) + CGLM_INLINE mat4s glms_look_anyup_rh_zo(vec3s eye, vec3s dir) + */ + +#ifndef cglms_view_rh_zo_h +#define cglms_view_rh_zo_h + +#include "../../common.h" +#include "../../types-struct.h" +#include "../../plane.h" +#include "../../cam.h" + +/*! + * @brief set up view matrix + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] center center vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_lookat_rh_zo(vec3s eye, vec3s center, vec3s up) { + mat4s dest; + glm_lookat_rh_zo(eye.raw, center.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief set up view matrix + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * convenient wrapper for lookat: if you only have direction not target self + * then this might be useful. Because you need to get target from direction. + * + * NOTE: The UP vector must not be parallel to the line of sight from + * the eye point to the reference point + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @param[in] up up vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_rh_zo(vec3s eye, vec3s dir, vec3s up) { + mat4s dest; + glm_look_rh_zo(eye.raw, dir.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief set up view matrix + * with a right-hand coordinate system and a + * clip-space of [0, 1]. + * + * convenient wrapper for look: if you only have direction and if you don't + * care what UP vector is then this might be useful to create view matrix + * + * @param[in] eye eye vector + * @param[in] dir direction vector + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_look_anyup_rh_zo(vec3s eye, vec3s dir) { + mat4s dest; + glm_look_anyup_rh_zo(eye.raw, dir.raw, dest.raw); + return dest; +} + +#endif /* cglms_view_rh_zo_h */ diff --git a/lib/cglm/include/cglm/struct/color.h b/lib/cglm/include/cglm/struct/color.h new file mode 100644 index 0000000..3ce78da --- /dev/null +++ b/lib/cglm/include/cglm/struct/color.h @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglms_colors_h +#define cglms_colors_h + +#include "../common.h" +#include "../types-struct.h" +#include "../color.h" +#include "vec3.h" + +/*! + * @brief averages the color channels into one value + * + * @param[in] rgb RGB color + */ +CGLM_INLINE +float +glms_luminance(vec3s rgb) { + return glm_luminance(rgb.raw); +} + +#endif /* cglms_colors_h */ diff --git a/lib/cglm/include/cglm/struct/curve.h b/lib/cglm/include/cglm/struct/curve.h new file mode 100644 index 0000000..53ea359 --- /dev/null +++ b/lib/cglm/include/cglm/struct/curve.h @@ -0,0 +1,40 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglms_curves_h +#define cglms_curves_h + +#include "../common.h" +#include "../types-struct.h" +#include "../curve.h" +#include "vec4.h" +#include "mat4.h" + +/*! + * @brief helper function to calculate S*M*C multiplication for curves + * + * This function does not encourage you to use SMC, + * instead it is a helper if you use SMC. + * + * if you want to specify S as vector then use more generic glm_mat4_rmc() func. + * + * Example usage: + * B(s) = glm_smc(s, GLM_BEZIER_MAT, (vec4){p0, c0, c1, p1}) + * + * @param[in] s parameter between 0 and 1 (this will be [s3, s2, s, 1]) + * @param[in] m basis matrix + * @param[in] c position/control vector + * + * @return B(s) + */ +CGLM_INLINE +float +glms_smc(float s, mat4s m, vec4s c) { + return glm_smc(s, m.raw, c.raw); +} + +#endif /* cglms_curves_h */ diff --git a/lib/cglm/include/cglm/struct/euler.h b/lib/cglm/include/cglm/struct/euler.h new file mode 100644 index 0000000..6575930 --- /dev/null +++ b/lib/cglm/include/cglm/struct/euler.h @@ -0,0 +1,152 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + NOTE: + angles must be passed as [X-Angle, Y-Angle, Z-angle] order + For instance you don't pass angles as [Z-Angle, X-Angle, Y-angle] to + glm_euler_zxy funciton, All RELATED functions accept angles same order + which is [X, Y, Z]. + */ + +/* + Types: + enum glm_euler_seq + + Functions: + CGLM_INLINE vec3s glms_euler_angles(mat4s m) + CGLM_INLINE mat4s glms_euler_xyz(vec3s angles) + CGLM_INLINE mat4s glms_euler_xzy(vec3s angles) + CGLM_INLINE mat4s glms_euler_yxz(vec3s angles) + CGLM_INLINE mat4s glms_euler_yzx(vec3s angles) + CGLM_INLINE mat4s glms_euler_zxy(vec3s angles) + CGLM_INLINE mat4s glms_euler_zyx(vec3s angles) + CGLM_INLINE mat4s glms_euler_by_order(vec3s angles, glm_euler_seq ord) + */ + +#ifndef cglms_euler_h +#define cglms_euler_h + +#include "../common.h" +#include "../types-struct.h" +#include "../euler.h" + +/*! + * @brief extract euler angles (in radians) using xyz order + * + * @param[in] m affine transform + * @returns angles vector [x, y, z] + */ +CGLM_INLINE +vec3s +glms_euler_angles(mat4s m) { + vec3s dest; + glm_euler_angles(m.raw, dest.raw); + return dest; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @returns rotation matrix + */ +CGLM_INLINE +mat4s +glms_euler_xyz(vec3s angles) { + mat4s dest; + glm_euler_xyz(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @returns rotation matrix + */ +CGLM_INLINE +mat4s +glms_euler_xzy(vec3s angles) { + mat4s dest; + glm_euler_xzy(angles.raw, dest.raw); + return dest; +} + + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @returns rotation matrix + */ +CGLM_INLINE +mat4s +glms_euler_yxz(vec3s angles) { + mat4s dest; + glm_euler_yxz(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @returns rotation matrix + */ +CGLM_INLINE +mat4s +glms_euler_yzx(vec3s angles) { + mat4s dest; + glm_euler_yzx(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @returns rotation matrix + */ +CGLM_INLINE +mat4s +glms_euler_zxy(vec3s angles) { + mat4s dest; + glm_euler_zxy(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @returns rotation matrix + */ +CGLM_INLINE +mat4s +glms_euler_zyx(vec3s angles) { + mat4s dest; + glm_euler_zyx(angles.raw, dest.raw); + return dest; +} + +/*! + * @brief build rotation matrix from euler angles + * + * @param[in] angles angles as vector [Xangle, Yangle, Zangle] + * @param[in] ord euler order + * @returns rotation matrix + */ +CGLM_INLINE +mat4s +glms_euler_by_order(vec3s angles, glm_euler_seq ord) { + mat4s dest; + glm_euler_by_order(angles.raw, ord, dest.raw); + return dest; +} + +#endif /* cglms_euler_h */ diff --git a/lib/cglm/include/cglm/struct/frustum.h b/lib/cglm/include/cglm/struct/frustum.h new file mode 100644 index 0000000..2c51d6d --- /dev/null +++ b/lib/cglm/include/cglm/struct/frustum.h @@ -0,0 +1,155 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglms_frustums_h +#define cglms_frustums_h + +#include "../common.h" +#include "../types-struct.h" +#include "../frustum.h" +#include "plane.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" + +/* you can override clip space coords + but you have to provide all with same name + e.g.: define GLM_CSCOORD_LBN {0.0f, 0.0f, 1.0f, 1.0f} */ +#ifndef GLM_CUSTOM_CLIPSPACE + +/* near */ +#define GLMS_CSCOORD_LBN {-1.0f, -1.0f, -1.0f, 1.0f} +#define GLMS_CSCOORD_LTN {-1.0f, 1.0f, -1.0f, 1.0f} +#define GLMS_CSCOORD_RTN { 1.0f, 1.0f, -1.0f, 1.0f} +#define GLMS_CSCOORD_RBN { 1.0f, -1.0f, -1.0f, 1.0f} + +/* far */ +#define GLMS_CSCOORD_LBF {-1.0f, -1.0f, 1.0f, 1.0f} +#define GLMS_CSCOORD_LTF {-1.0f, 1.0f, 1.0f, 1.0f} +#define GLMS_CSCOORD_RTF { 1.0f, 1.0f, 1.0f, 1.0f} +#define GLMS_CSCOORD_RBF { 1.0f, -1.0f, 1.0f, 1.0f} + +#endif + +/*! + * @brief extracts view frustum planes + * + * planes' space: + * 1- if m = proj: View Space + * 2- if m = viewProj: World Space + * 3- if m = MVP: Object Space + * + * You probably want to extract planes in world space so use viewProj as m + * Computing viewProj: + * glm_mat4_mul(proj, view, viewProj); + * + * Exracted planes order: [left, right, bottom, top, near, far] + * + * @param[in] m matrix (see brief) + * @param[out] dest extracted view frustum planes (see brief) + */ +CGLM_INLINE +void +glms_frustum_planes(mat4s m, vec4s dest[6]) { + vec4 rawDest[6]; + glm_frustum_planes(m.raw, rawDest); + glms_vec4_pack(dest, rawDest, 6); +} + +/*! + * @brief extracts view frustum corners using clip-space coordinates + * + * corners' space: + * 1- if m = invViewProj: World Space + * 2- if m = invMVP: Object Space + * + * You probably want to extract corners in world space so use invViewProj + * Computing invViewProj: + * glm_mat4_mul(proj, view, viewProj); + * ... + * glm_mat4_inv(viewProj, invViewProj); + * + * if you have a near coord at i index, you can get it's far coord by i + 4 + * + * Find center coordinates: + * for (j = 0; j < 4; j++) { + * glm_vec3_center(corners[i], corners[i + 4], centerCorners[i]); + * } + * + * @param[in] invMat matrix (see brief) + * @param[out] dest exracted view frustum corners (see brief) + */ +CGLM_INLINE +void +glms_frustum_corners(mat4s invMat, vec4s dest[8]) { + vec4 rawDest[8]; + glm_frustum_corners(invMat.raw, rawDest); + glms_vec4_pack(dest, rawDest, 8); +} + +/*! + * @brief finds center of view frustum + * + * @param[in] corners view frustum corners + * @returns view frustum center + */ +CGLM_INLINE +vec4s +glms_frustum_center(vec4s corners[8]) { + vec4 rawCorners[8]; + vec4s r; + + glms_vec4_unpack(rawCorners, corners, 8); + glm_frustum_center(rawCorners, r.raw); + return r; +} + +/*! + * @brief finds bounding box of frustum relative to given matrix e.g. view mat + * + * @param[in] corners view frustum corners + * @param[in] m matrix to convert existing conners + * @param[out] box bounding box as array [min, max] + */ +CGLM_INLINE +void +glms_frustum_box(vec4s corners[8], mat4s m, vec3s box[2]) { + vec4 rawCorners[8]; + vec3 rawBox[2]; + + glms_vec4_unpack(rawCorners, corners, 8); + glm_frustum_box(rawCorners, m.raw, rawBox); + glms_vec3_pack(box, rawBox, 2); +} + +/*! + * @brief finds planes corners which is between near and far planes (parallel) + * + * this will be helpful if you want to split a frustum e.g. CSM/PSSM. This will + * find planes' corners but you will need to one more plane. + * Actually you have it, it is near, far or created previously with this func ;) + * + * @param[in] corners view frustum corners + * @param[in] splitDist split distance + * @param[in] farDist far distance (zFar) + * @param[out] planeCorners plane corners [LB, LT, RT, RB] + */ +CGLM_INLINE +void +glms_frustum_corners_at(vec4s corners[8], + float splitDist, + float farDist, + vec4s planeCorners[4]) { + vec4 rawCorners[8]; + vec4 rawPlaneCorners[4]; + + glms_vec4_unpack(rawCorners, corners, 8); + glm_frustum_corners_at(rawCorners, splitDist, farDist, rawPlaneCorners); + glms_vec4_pack(planeCorners, rawPlaneCorners, 8); +} + +#endif /* cglms_frustums_h */ diff --git a/lib/cglm/include/cglm/struct/io.h b/lib/cglm/include/cglm/struct/io.h new file mode 100644 index 0000000..ec28129 --- /dev/null +++ b/lib/cglm/include/cglm/struct/io.h @@ -0,0 +1,82 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_mat4_print(mat4 matrix, FILE *ostream); + CGLM_INLINE void glm_mat3_print(mat3 matrix, FILE *ostream); + CGLM_INLINE void glm_vec4_print(vec4 vec, FILE *ostream); + CGLM_INLINE void glm_vec3_print(vec3 vec, FILE *ostream); + CGLM_INLINE void glm_ivec3_print(ivec3 vec, FILE *ostream); + CGLM_INLINE void glm_versor_print(versor vec, FILE *ostream); + */ + +#ifndef cglms_ios_h +#define cglms_ios_h + +#include "../common.h" +#include "../io.h" +#include "mat4.h" + +#include +#include + +CGLM_INLINE +void +glms_mat4_print(mat4s matrix, + FILE * __restrict ostream) { + + glm_mat4_print(matrix.raw, ostream); +} + +CGLM_INLINE +void +glms_mat3_print(mat3s matrix, + FILE * __restrict ostream) { + glm_mat3_print(matrix.raw, ostream); +} + +CGLM_INLINE +void +glms_vec4_print(vec4s vec, + FILE * __restrict ostream) { + glm_vec4_print(vec.raw, ostream); +} + +CGLM_INLINE +void +glms_vec3_print(vec3s vec, + FILE * __restrict ostream) { + glm_vec3_print(vec.raw, ostream); +} + +CGLM_INLINE +void +glms_ivec3_print(ivec3s vec, + FILE * __restrict ostream) { + glm_ivec3_print(vec.raw, ostream); +} + +CGLM_INLINE +void +glms_versor_print(versors vec, + FILE * __restrict ostream) { + glm_versor_print(vec.raw, ostream); +} + +CGLM_INLINE +void +glms_aabb_print(vec3s bbox[2], + const char * __restrict tag, + FILE * __restrict ostream) { + vec3 rawBbox[2]; + + glms_vec3_unpack(rawBbox, bbox, 2); + glm_aabb_print(rawBbox, tag, ostream); +} + +#endif /* cglms_ios_h */ diff --git a/lib/cglm/include/cglm/struct/mat2.h b/lib/cglm/include/cglm/struct/mat2.h new file mode 100644 index 0000000..a8ee27f --- /dev/null +++ b/lib/cglm/include/cglm/struct/mat2.h @@ -0,0 +1,258 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_MAT2_IDENTITY_INIT + GLM_MAT2_ZERO_INIT + GLM_MAT2_IDENTITY + GLM_MAT2_ZERO + + Functions: + CGLM_INLINE void glms_mat2_identity(mat2 mat) + CGLM_INLINE void glms_mat2_identity_array(mat2 * restrict mat, size_t count) + CGLM_INLINE void glms_mat2_zero(mat2 mat) + CGLM_INLINE void glms_mat2_mul(mat2 m1, mat2 m2, mat2 dest) + CGLM_INLINE void glms_mat2_transpose_to(mat2 m, mat2 dest) + CGLM_INLINE void glms_mat2_transpose(mat2 m) + CGLM_INLINE void glms_mat2_mulv(mat2 m, vec2 v, vec2 dest) + CGLM_INLINE float glms_mat2_trace(mat2 m) + CGLM_INLINE void glms_mat2_scale(mat2 m, float s) + CGLM_INLINE float glms_mat2_det(mat2 mat) + CGLM_INLINE void glms_mat2_inv(mat2 mat, mat2 dest) + CGLM_INLINE void glms_mat2_swap_col(mat2 mat, int col1, int col2) + CGLM_INLINE void glms_mat2_swap_row(mat2 mat, int row1, int row2) + CGLM_INLINE float glms_mat2_rmc(vec2 r, mat2 m, vec2 c) + */ + +#ifndef cglms_mat2_h +#define cglms_mat2_h + +#include "../common.h" +#include "../types-struct.h" +#include "../mat2.h" + +#define GLMS_MAT2_IDENTITY_INIT {GLM_MAT2_IDENTITY_INIT} +#define GLMS_MAT2_ZERO_INIT {GLM_MAT2_ZERO_INIT} + +/* for C only */ +#define GLMS_MAT2_IDENTITY ((mat3s)GLMS_MAT2_IDENTITY_INIT) +#define GLMS_MAT2_ZERO ((mat3s)GLMS_MAT2_ZERO_INIT) + +/*! + * @brief make given matrix identity. It is identical with below, + * but it is more easy to do that with this func especially for members + * e.g. glm_mat2_identity(aStruct->aMatrix); + * + * @code + * glm_mat2_copy(GLM_MAT2_IDENTITY, mat); // C only + * + * // or + * mat2 mat = GLM_MAT2_IDENTITY_INIT; + * @endcode + * + * @returns identity matrix + */ +CGLM_INLINE +mat2s +glms_mat2_identity(void) { + mat2s r; + glm_mat2_identity(r.raw); + return r; +} + +/*! + * @brief make given matrix array's each element identity matrix + * + * @param[in, out] mat matrix array (must be aligned (16) + * if alignment is not disabled) + * + * @param[in] count count of matrices + */ +CGLM_INLINE +void +glms_mat2_identity_array(mat2s * __restrict mat, size_t count) { + CGLM_ALIGN_MAT mat2s t = GLMS_MAT2_IDENTITY_INIT; + size_t i; + + for (i = 0; i < count; i++) { + glm_mat2_copy(t.raw, mat[i].raw); + } +} + +/*! + * @brief make given matrix zero. + * + * @returns matrix + */ +CGLM_INLINE +mat2s +glms_mat2_zero(void) { + mat2s r; + glm_mat2_zero(r.raw); + return r; +} + +/*! + * @brief multiply m1 and m2 to dest + * + * m1, m2 and dest matrices can be same matrix, it is possible to write this: + * + * @code + * mat2 m = GLM_MAT2_IDENTITY_INIT; + * glm_mat2_mul(m, m, m); + * @endcode + * + * @param[in] m1 left matrix + * @param[in] m2 right matrix + * + * @returns matrix + */ +CGLM_INLINE +mat2s +glms_mat2_mul(mat2s m1, mat2s m2) { + mat2s r; + glm_mat2_mul(m1.raw, m2.raw, r.raw); + return r; +} + +/*! + * @brief transpose mat2 + * + * @param[in] m matrix to transpose + * + * @returns transposed matrix + */ +CGLM_INLINE +mat2s +glms_mat2_transpose(mat2s m) { + glm_mat2_transpose(m.raw); + return m; +} + +/*! + * @brief multiply mat2 with vec2 (column vector) and store in dest vector + * + * @param[in] m mat2 (left) + * @param[in] v vec2 (right, column vector) + * @returns vec2 (result, column vector) + */ +CGLM_INLINE +vec2s +glms_mat2_mulv(mat2s m, vec2s v) { + vec2s r; + glm_mat2_mulv(m.raw, v.raw, r.raw); + return r; +} + +/*! + * @brief trace of matrix + * + * sum of the elements on the main diagonal from upper left to the lower right + * + * @param[in] m matrix + */ +CGLM_INLINE +float +glms_mat2_trace(mat2s m) { + return glm_mat2_trace(m.raw); +} + +/*! + * @brief scale (multiply with scalar) matrix + * + * multiply matrix with scalar + * + * @param[in, out] m matrix + * @param[in] s scalar + * @returns matrix + */ +CGLM_INLINE +mat2s +glms_mat2_scale(mat2s m, float s) { + glm_mat2_scale(m.raw, s); + return m; +} + +/*! + * @brief mat2 determinant + * + * @param[in] mat matrix + * + * @return determinant + */ +CGLM_INLINE +float +glms_mat2_det(mat2s mat) { + return glm_mat2_det(mat.raw); +} + +/*! + * @brief inverse mat2 and store in dest + * + * @param[in] mat matrix + * @returns matrix + */ +CGLM_INLINE +mat2s +glms_mat2_inv(mat2s mat) { + mat2s r; + glm_mat2_inv(mat.raw, r.raw); + return r; +} + +/*! + * @brief swap two matrix columns + * + * @param[in] mat matrix + * @param[in] col1 col1 + * @param[in] col2 col2 + * @returns matrix + */ +CGLM_INLINE +mat2s +glms_mat2_swap_col(mat2s mat, int col1, int col2) { + glm_mat2_swap_col(mat.raw, col1, col2); + return mat; +} + +/*! + * @brief swap two matrix rows + * + * @param[in] mat matrix + * @param[in] row1 row1 + * @param[in] row2 row2 + * @returns matrix + */ +CGLM_INLINE +mat2s +glms_mat2_swap_row(mat2s mat, int row1, int row2) { + glm_mat2_swap_row(mat.raw, row1, row2); + return mat; +} + +/*! + * @brief helper for R (row vector) * M (matrix) * C (column vector) + * + * rmc stands for Row * Matrix * Column + * + * the result is scalar because R * M = Matrix1x2 (row vector), + * then Matrix1x2 * Vec2 (column vector) = Matrix1x1 (Scalar) + * + * @param[in] r row vector or matrix1x2 + * @param[in] m matrix2x2 + * @param[in] c column vector or matrix2x1 + * + * @return scalar value e.g. Matrix1x1 + */ +CGLM_INLINE +float +glms_mat2_rmc(vec2s r, mat2s m, vec2s c) { + return glm_mat2_rmc(r.raw, m.raw, c.raw); +} + +#endif /* cglms_mat2_h */ diff --git a/lib/cglm/include/cglm/struct/mat3.h b/lib/cglm/include/cglm/struct/mat3.h new file mode 100644 index 0000000..53a7273 --- /dev/null +++ b/lib/cglm/include/cglm/struct/mat3.h @@ -0,0 +1,285 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLMS_MAT3_IDENTITY_INIT + GLMS_MAT3_ZERO_INIT + GLMS_MAT3_IDENTITY + GLMS_MAT3_ZERO + + Functions: + CGLM_INLINE mat3s glms_mat3_copy(mat3s mat); + CGLM_INLINE mat3s glms_mat3_identity(void); + CGLM_INLINE void glms_mat3_identity_array(mat3s * __restrict mat, size_t count); + CGLM_INLINE mat3s glms_mat3_zero(void); + CGLM_INLINE mat3s glms_mat3_mul(mat3s m1, mat3s m2); + CGLM_INLINE ma3s glms_mat3_transpose(mat3s m); + CGLM_INLINE vec3s glms_mat3_mulv(mat3s m, vec3s v); + CGLM_INLINE float glms_mat3_trace(mat3s m); + CGLM_INLINE versor glms_mat3_quat(mat3s m); + CGLM_INLINE mat3s glms_mat3_scale(mat3s m, float s); + CGLM_INLINE float glms_mat3_det(mat3s mat); + CGLM_INLINE mat3s glms_mat3_inv(mat3s mat); + CGLM_INLINE mat3s glms_mat3_swap_col(mat3s mat, int col1, int col2); + CGLM_INLINE mat3s glms_mat3_swap_row(mat3s mat, int row1, int row2); + CGLM_INLINE float glms_mat3_rmc(vec3s r, mat3s m, vec3s c); + */ + +#ifndef cglms_mat3s_h +#define cglms_mat3s_h + +#include "../common.h" +#include "../types-struct.h" +#include "../mat3.h" +#include "vec3.h" + +#define GLMS_MAT3_IDENTITY_INIT {GLM_MAT3_IDENTITY_INIT} +#define GLMS_MAT3_ZERO_INIT {GLM_MAT3_ZERO_INIT} + +/* for C only */ +#define GLMS_MAT3_IDENTITY ((mat3s)GLMS_MAT3_IDENTITY_INIT) +#define GLMS_MAT3_ZERO ((mat3s)GLMS_MAT3_ZERO_INIT) + +/*! + * @brief copy all members of [mat] to [dest] + * + * @param[in] mat source + * @returns destination + */ +CGLM_INLINE +mat3s +glms_mat3_copy(mat3s mat) { + mat3s r; + glm_mat3_copy(mat.raw, r.raw); + return r; +} + +/*! + * @brief make given matrix identity. It is identical with below, + * but it is more easy to do that with this func especially for members + * e.g. glm_mat3_identity(aStruct->aMatrix); + * + * @code + * glm_mat3_copy(GLM_MAT3_IDENTITY, mat); // C only + * + * // or + * mat3 mat = GLM_MAT3_IDENTITY_INIT; + * @endcode + * + * @returns destination + */ +CGLM_INLINE +mat3s +glms_mat3_identity(void) { + mat3s r; + glm_mat3_identity(r.raw); + return r; +} + +/*! + * @brief make given matrix array's each element identity matrix + * + * @param[in, out] mat matrix array (must be aligned (16/32) + * if alignment is not disabled) + * + * @param[in] count count of matrices + */ +CGLM_INLINE +void +glms_mat3_identity_array(mat3s * __restrict mat, size_t count) { + CGLM_ALIGN_MAT mat3s t = GLMS_MAT3_IDENTITY_INIT; + size_t i; + + for (i = 0; i < count; i++) { + glm_mat3_copy(t.raw, mat[i].raw); + } +} + +/*! + * @brief make given matrix zero. + * + * @returns matrix + */ +CGLM_INLINE +mat3s +glms_mat3_zero(void) { + mat3s r; + glm_mat3_zero(r.raw); + return r; +} + +/*! + * @brief multiply m1 and m2 to dest + * + * m1, m2 and dest matrices can be same matrix, it is possible to write this: + * + * @code + * mat3 m = GLM_MAT3_IDENTITY_INIT; + * glm_mat3_mul(m, m, m); + * @endcode + * + * @param[in] m1 left matrix + * @param[in] m2 right matrix + * @returns destination matrix + */ +CGLM_INLINE +mat3s +glms_mat3_mul(mat3s m1, mat3s m2) { + mat3s r; + glm_mat3_mul(m1.raw, m2.raw, r.raw); + return r; +} + +/*! + * @brief tranpose mat3 and store result in same matrix + * + * @param[in, out] m source and dest + */ +CGLM_INLINE +mat3s +glms_mat3_transpose(mat3s m) { + glm_mat3_transpose(m.raw); + return m; +} + +/*! + * @brief multiply mat3 with vec3 (column vector) and store in dest vector + * + * @param[in] m mat3 (left) + * @param[in] v vec3 (right, column vector) + * @returns vec3 (result, column vector) + */ +CGLM_INLINE +vec3s +glms_mat3_mulv(mat3s m, vec3s v) { + vec3s r; + glm_mat3_mulv(m.raw, v.raw, r.raw); + return r; +} + +/*! + * @brief trace of matrix + * + * sum of the elements on the main diagonal from upper left to the lower right + * + * @param[in] m matrix + */ +CGLM_INLINE +float +glms_mat3_trace(mat3s m) { + return glm_mat3_trace(m.raw); +} + +/*! + * @brief convert mat3 to quaternion + * + * @param[in] m rotation matrix + * @returns destination quaternion + */ +CGLM_INLINE +versors +glms_mat3_quat(mat3s m) { + versors r; + glm_mat3_quat(m.raw, r.raw); + return r; +} + +/*! + * @brief scale (multiply with scalar) matrix + * + * multiply matrix with scalar + * + * @param[in] m matrix + * @param[in] s scalar + * @returns scaled matrix + */ +CGLM_INLINE +mat3s +glms_mat3_scale(mat3s m, float s) { + glm_mat3_scale(m.raw, s); + return m; +} + +/*! + * @brief mat3 determinant + * + * @param[in] mat matrix + * + * @return determinant + */ +CGLM_INLINE +float +glms_mat3_det(mat3s mat) { + return glm_mat3_det(mat.raw); +} + +/*! + * @brief inverse mat3 and store in dest + * + * @param[in] mat matrix + * @returns inverse matrix + */ +CGLM_INLINE +mat3s +glms_mat3_inv(mat3s mat) { + mat3s r; + glm_mat3_inv(mat.raw, r.raw); + return r; +} + +/*! + * @brief swap two matrix columns + * + * @param[in] mat matrix + * @param[in] col1 col1 + * @param[in] col2 col2 + * @returns matrix + */ +CGLM_INLINE +mat3s +glms_mat3_swap_col(mat3s mat, int col1, int col2) { + glm_mat3_swap_col(mat.raw, col1, col2); + return mat; +} + +/*! + * @brief swap two matrix rows + * + * @param[in] mat matrix + * @param[in] row1 row1 + * @param[in] row2 row2 + * @returns matrix + */ +CGLM_INLINE +mat3s +glms_mat3_swap_row(mat3s mat, int row1, int row2) { + glm_mat3_swap_row(mat.raw, row1, row2); + return mat; +} + +/*! + * @brief helper for R (row vector) * M (matrix) * C (column vector) + * + * rmc stands for Row * Matrix * Column + * + * the result is scalar because R * M = Matrix1x3 (row vector), + * then Matrix1x3 * Vec3 (column vector) = Matrix1x1 (Scalar) + * + * @param[in] r row vector or matrix1x3 + * @param[in] m matrix3x3 + * @param[in] c column vector or matrix3x1 + * + * @return scalar value e.g. Matrix1x1 + */ +CGLM_INLINE +float +glms_mat3_rmc(vec3s r, mat3s m, vec3s c) { + return glm_mat3_rmc(r.raw, m.raw, c.raw); +} + +#endif /* cglms_mat3s_h */ diff --git a/lib/cglm/include/cglm/struct/mat4.h b/lib/cglm/include/cglm/struct/mat4.h new file mode 100644 index 0000000..28f80a3 --- /dev/null +++ b/lib/cglm/include/cglm/struct/mat4.h @@ -0,0 +1,459 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/*! + * Most of functions in this header are optimized manually with SIMD + * if available. You dont need to call/incude SIMD headers manually + */ + +/* + Macros: + GLMS_MAT4_IDENTITY_INIT + GLMS_MAT4_ZERO_INIT + GLMS_MAT4_IDENTITY + GLMS_MAT4_ZERO + + Functions: + CGLM_INLINE mat4s glms_mat4_ucopy(mat4s mat); + CGLM_INLINE mat4s glms_mat4_copy(mat4s mat); + CGLM_INLINE mat4s glms_mat4_identity(void); + CGLM_INLINE void glms_mat4_identity_array(mat4s * __restrict mat, size_t count); + CGLM_INLINE mat4s glms_mat4_zero(void); + CGLM_INLINE mat3s glms_mat4_pick3(mat4s mat); + CGLM_INLINE mat3s glms_mat4_pick3t(mat4s mat); + CGLM_INLINE mat4s glms_mat4_ins3(mat3s mat); + CGLM_INLINE mat4s glms_mat4_mul(mat4s m1, mat4s m2); + CGLM_INLINE mat4s glms_mat4_mulN(mat4s * __restrict matrices[], uint32_t len); + CGLM_INLINE vec4s glms_mat4_mulv(mat4s m, vec4s v); + CGLM_INLINE float glms_mat4_trace(mat4s m); + CGLM_INLINE float glms_mat4_trace3(mat4s m); + CGLM_INLINE versors glms_mat4_quat(mat4s m); + CGLM_INLINE vec3s glms_mat4_mulv3(mat4s m, vec3s v, float last); + CGLM_INLINE mat4s glms_mat4_transpose(mat4s m); + CGLM_INLINE mat4s glms_mat4_scale_p(mat4s m, float s); + CGLM_INLINE mat4s glms_mat4_scale(mat4s m, float s); + CGLM_INLINE float glms_mat4_det(mat4s mat); + CGLM_INLINE mat4s glms_mat4_inv(mat4s mat); + CGLM_INLINE mat4s glms_mat4_inv_fast(mat4s mat); + CGLM_INLINE mat4s glms_mat4_swap_col(mat4s mat, int col1, int col2); + CGLM_INLINE mat4s glms_mat4_swap_row(mat4s mat, int row1, int row2); + CGLM_INLINE float glms_mat4_rmc(vec4s r, mat4s m, vec4s c); + */ + +#ifndef cglms_mat4s_h +#define cglms_mat4s_h + +#include "../common.h" +#include "../types-struct.h" +#include "../mat4.h" +#include "vec4.h" +#include "vec3.h" + +#define GLMS_MAT4_IDENTITY_INIT {GLM_MAT4_IDENTITY_INIT} +#define GLMS_MAT4_ZERO_INIT {GLM_MAT4_ZERO_INIT} + +/* for C only */ +#define GLMS_MAT4_IDENTITY ((mat4s)GLMS_MAT4_IDENTITY_INIT) +#define GLMS_MAT4_ZERO ((mat4s)GLMS_MAT4_ZERO_INIT) + +/*! + * @brief copy all members of [mat] to [dest] + * + * matrix may not be aligned, u stands for unaligned, this may be useful when + * copying a matrix from external source e.g. asset importer... + * + * @param[in] mat source + * @returns destination + */ +CGLM_INLINE +mat4s +glms_mat4_ucopy(mat4s mat) { + mat4s r; + glm_mat4_ucopy(mat.raw, r.raw); + return r; +} + +/*! + * @brief copy all members of [mat] to [dest] + * + * @param[in] mat source + * @returns destination + */ +CGLM_INLINE +mat4s +glms_mat4_copy(mat4s mat) { + mat4s r; + glm_mat4_copy(mat.raw, r.raw); + return r; +} + +/*! + * @brief make given matrix identity. It is identical with below, + * but it is more easy to do that with this func especially for members + * e.g. glm_mat4_identity(aStruct->aMatrix); + * + * @code + * glm_mat4_copy(GLM_MAT4_IDENTITY, mat); // C only + * + * // or + * mat4 mat = GLM_MAT4_IDENTITY_INIT; + * @endcode + * + * @retuns destination + */ +CGLM_INLINE +mat4s +glms_mat4_identity(void) { + mat4s r; + glm_mat4_identity(r.raw); + return r; +} + +/*! + * @brief make given matrix array's each element identity matrix + * + * @param[in, out] mat matrix array (must be aligned (16/32) + * if alignment is not disabled) + * + * @param[in] count count of matrices + */ +CGLM_INLINE +void +glms_mat4_identity_array(mat4s * __restrict mat, size_t count) { + CGLM_ALIGN_MAT mat4s t = GLMS_MAT4_IDENTITY_INIT; + size_t i; + + for (i = 0; i < count; i++) { + glm_mat4_copy(t.raw, mat[i].raw); + } +} + +/*! + * @brief make given matrix zero. + * + * @returns matrix + */ +CGLM_INLINE +mat4s +glms_mat4_zero(void) { + mat4s r; + glm_mat4_zero(r.raw); + return r; +} + +/*! + * @brief copy upper-left of mat4 to mat3 + * + * @param[in] mat source + * @returns destination + */ +CGLM_INLINE +mat3s +glms_mat4_pick3(mat4s mat) { + mat3s r; + glm_mat4_pick3(mat.raw, r.raw); + return r; +} + +/*! + * @brief copy upper-left of mat4 to mat3 (transposed) + * + * the postfix t stands for transpose + * + * @param[in] mat source + * @returns destination + */ +CGLM_INLINE +mat3s +glms_mat4_pick3t(mat4s mat) { + mat3s r; + glm_mat4_pick3t(mat.raw, r.raw); + return r; +} + +/*! + * @brief copy mat3 to mat4's upper-left + * + * @param[in] mat source + * @returns destination + */ +CGLM_INLINE +mat4s +glms_mat4_ins3(mat3s mat) { + mat4s r; + glm_mat4_ins3(mat.raw, r.raw); + return r; +} + +/*! + * @brief multiply m1 and m2 to dest + * + * m1, m2 and dest matrices can be same matrix, it is possible to write this: + * + * @code + * mat4 m = GLM_MAT4_IDENTITY_INIT; + * glm_mat4_mul(m, m, m); + * @endcode + * + * @param[in] m1 left matrix + * @param[in] m2 right matrix + * @returns destination matrix + */ +CGLM_INLINE +mat4s +glms_mat4_mul(mat4s m1, mat4s m2) { + mat4s r; + glm_mat4_mul(m1.raw, m2.raw, r.raw); + return r; +} + +/*! + * @brief mupliply N mat4 matrices and store result in dest + * + * this function lets you multiply multiple (more than two or more...) matrices + *

multiplication will be done in loop, this may reduce instructions + * size but if len is too small then compiler may unroll whole loop, + * usage: + * @code + * mat m1, m2, m3, m4, res; + * + * res = glm_mat4_mulN((mat4 *[]){&m1, &m2, &m3, &m4}, 4); + * @endcode + * + * @warning matrices parameter is pointer array not mat4 array! + * + * @param[in] matrices mat4 * array + * @param[in] len matrices count + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_mat4_mulN(mat4s * __restrict matrices[], uint32_t len) { + CGLM_ALIGN_MAT mat4s r = GLMS_MAT4_IDENTITY_INIT; + size_t i; + + for (i = 0; i < len; i++) { + r = glms_mat4_mul(r, *matrices[i]); + } + + return r; +} + +/*! + * @brief multiply mat4 with vec4 (column vector) and store in dest vector + * + * @param[in] m mat4 (left) + * @param[in] v vec4 (right, column vector) + * @returns vec4 (result, column vector) + */ +CGLM_INLINE +vec4s +glms_mat4_mulv(mat4s m, vec4s v) { + vec4s r; + glm_mat4_mulv(m.raw, v.raw, r.raw); + return r; +} + +/*! + * @brief trace of matrix + * + * sum of the elements on the main diagonal from upper left to the lower right + * + * @param[in] m matrix + */ +CGLM_INLINE +float +glms_mat4_trace(mat4s m) { + return glm_mat4_trace(m.raw); +} + +/*! + * @brief trace of matrix (rotation part) + * + * sum of the elements on the main diagonal from upper left to the lower right + * + * @param[in] m matrix + */ +CGLM_INLINE +float +glms_mat4_trace3(mat4s m) { + return glm_mat4_trace3(m.raw); +} + +/*! + * @brief convert mat4's rotation part to quaternion + * + * @param[in] m affine matrix + * @returns destination quaternion + */ +CGLM_INLINE +versors +glms_mat4_quat(mat4s m) { + versors r; + glm_mat4_quat(m.raw, r.raw); + return r; +} + +/*! + * @brief multiply vector with mat4 + * + * @param[in] m mat4(affine transform) + * @param[in] v vec3 + * @param[in] last 4th item to make it vec4 + * @returns result vector (vec3) + */ +CGLM_INLINE +vec3s +glms_mat4_mulv3(mat4s m, vec3s v, float last) { + vec3s r; + glm_mat4_mulv3(m.raw, v.raw, last, r.raw); + return r; +} + +/*! + * @brief tranpose mat4 and store result in same matrix + * + * @param[in] m source + * @returns result + */ +CGLM_INLINE +mat4s +glms_mat4_transpose(mat4s m) { + glm_mat4_transpose(m.raw); + return m; +} + +/*! + * @brief scale (multiply with scalar) matrix without simd optimization + * + * multiply matrix with scalar + * + * @param[in] m matrix + * @param[in] s scalar + * @returns matrix + */ +CGLM_INLINE +mat4s +glms_mat4_scale_p(mat4s m, float s) { + glm_mat4_scale_p(m.raw, s); + return m; +} + +/*! + * @brief scale (multiply with scalar) matrix + * + * multiply matrix with scalar + * + * @param[in] m matrix + * @param[in] s scalar + * @returns matrix + */ +CGLM_INLINE +mat4s +glms_mat4_scale(mat4s m, float s) { + glm_mat4_scale(m.raw, s); + return m; +} + +/*! + * @brief mat4 determinant + * + * @param[in] mat matrix + * + * @return determinant + */ +CGLM_INLINE +float +glms_mat4_det(mat4s mat) { + return glm_mat4_det(mat.raw); +} + +/*! + * @brief inverse mat4 and store in dest + * + * @param[in] mat matrix + * @returns inverse matrix + */ +CGLM_INLINE +mat4s +glms_mat4_inv(mat4s mat) { + mat4s r; + glm_mat4_inv(mat.raw, r.raw); + return r; +} + +/*! + * @brief inverse mat4 and store in dest + * + * this func uses reciprocal approximation without extra corrections + * e.g Newton-Raphson. this should work faster than normal, + * to get more precise use glm_mat4_inv version. + * + * NOTE: You will lose precision, glm_mat4_inv is more accurate + * + * @param[in] mat matrix + * @returns inverse matrix + */ +CGLM_INLINE +mat4s +glms_mat4_inv_fast(mat4s mat) { + mat4s r; + glm_mat4_inv_fast(mat.raw, r.raw); + return r; +} + +/*! + * @brief swap two matrix columns + * + * @param[in] mat matrix + * @param[in] col1 col1 + * @param[in] col2 col2 + * @returns matrix + */ +CGLM_INLINE +mat4s +glms_mat4_swap_col(mat4s mat, int col1, int col2) { + glm_mat4_swap_col(mat.raw, col1, col2); + return mat; +} + +/*! + * @brief swap two matrix rows + * + * @param[in] mat matrix + * @param[in] row1 row1 + * @param[in] row2 row2 + * @returns matrix + */ +CGLM_INLINE +mat4s +glms_mat4_swap_row(mat4s mat, int row1, int row2) { + glm_mat4_swap_row(mat.raw, row1, row2); + return mat; +} + +/*! + * @brief helper for R (row vector) * M (matrix) * C (column vector) + * + * rmc stands for Row * Matrix * Column + * + * the result is scalar because R * M = Matrix1x4 (row vector), + * then Matrix1x4 * Vec4 (column vector) = Matrix1x1 (Scalar) + * + * @param[in] r row vector or matrix1x4 + * @param[in] m matrix4x4 + * @param[in] c column vector or matrix4x1 + * + * @return scalar value e.g. B(s) + */ +CGLM_INLINE +float +glms_mat4_rmc(vec4s r, mat4s m, vec4s c) { + return glm_mat4_rmc(r.raw, m.raw, c.raw); +} + +#endif /* cglms_mat4s_h */ diff --git a/lib/cglm/include/cglm/struct/plane.h b/lib/cglm/include/cglm/struct/plane.h new file mode 100644 index 0000000..6a84ac7 --- /dev/null +++ b/lib/cglm/include/cglm/struct/plane.h @@ -0,0 +1,40 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglms_planes_h +#define cglms_planes_h + +#include "../common.h" +#include "../types-struct.h" +#include "../plane.h" +#include "vec4.h" + +/* + Plane equation: Ax + By + Cz + D = 0; + + It stored in vec4 as [A, B, C, D]. (A, B, C) is normal and D is distance +*/ + +/* + Functions: + CGLM_INLINE vec4s glms_plane_normalize(vec4s plane); + */ + +/*! + * @brief normalizes a plane + * + * @param[in] plane plane to normalize + * @returns normalized plane + */ +CGLM_INLINE +vec4s +glms_plane_normalize(vec4s plane) { + glm_plane_normalize(plane.raw); + return plane; +} + +#endif /* cglms_planes_h */ diff --git a/lib/cglm/include/cglm/struct/project.h b/lib/cglm/include/cglm/struct/project.h new file mode 100644 index 0000000..00f76ff --- /dev/null +++ b/lib/cglm/include/cglm/struct/project.h @@ -0,0 +1,120 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglms_projects_h +#define cglms_projects_h + +#include "../common.h" +#include "../types-struct.h" +#include "../project.h" +#include "vec3.h" +#include "vec4.h" +#include "mat4.h" + +/*! + * @brief maps the specified viewport coordinates into specified space [1] + * the matrix should contain projection matrix. + * + * if you don't have ( and don't want to have ) an inverse matrix then use + * glm_unproject version. You may use existing inverse of matrix in somewhere + * else, this is why glm_unprojecti exists to save save inversion cost + * + * [1] space: + * 1- if m = invProj: View Space + * 2- if m = invViewProj: World Space + * 3- if m = invMVP: Object Space + * + * You probably want to map the coordinates into object space + * so use invMVP as m + * + * Computing viewProj: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * glm_mat4_inv(viewProj, invMVP); + * + * @param[in] pos point/position in viewport coordinates + * @param[in] invMat matrix (see brief) + * @param[in] vp viewport as [x, y, width, height] + * @returns unprojected coordinates + */ +CGLM_INLINE +vec3s +glms_unprojecti(vec3s pos, mat4s invMat, vec4s vp) { + vec3s r; + glm_unprojecti(pos.raw, invMat.raw, vp.raw, r.raw); + return r; +} + +/*! + * @brief maps the specified viewport coordinates into specified space [1] + * the matrix should contain projection matrix. + * + * this is same as glm_unprojecti except this function get inverse matrix for + * you. + * + * [1] space: + * 1- if m = proj: View Space + * 2- if m = viewProj: World Space + * 3- if m = MVP: Object Space + * + * You probably want to map the coordinates into object space + * so use MVP as m + * + * Computing viewProj and MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] pos point/position in viewport coordinates + * @param[in] m matrix (see brief) + * @param[in] vp viewport as [x, y, width, height] + * @returns unprojected coordinates + */ +CGLM_INLINE +vec3s +glms_unproject(vec3s pos, mat4s m, vec4s vp) { + vec3s r; + glm_unproject(pos.raw, m.raw, vp.raw, r.raw); + return r; +} + +/*! + * @brief map object coordinates to window coordinates + * + * Computing MVP: + * glm_mat4_mul(proj, view, viewProj); + * glm_mat4_mul(viewProj, model, MVP); + * + * @param[in] pos object coordinates + * @param[in] m MVP matrix + * @param[in] vp viewport as [x, y, width, height] + * @returns projected coordinates + */ +CGLM_INLINE +vec3s +glms_project(vec3s pos, mat4s m, vec4s vp) { + vec3s r; + glm_project(pos.raw, m.raw, vp.raw, r.raw); + return r; +} + +/*! + * @brief define a picking region + * + * @param[in] center center [x, y] of a picking region in window coordinates + * @param[in] size size [width, height] of the picking region in window coordinates + * @param[in] vp viewport as [x, y, width, height] + * @returns projected coordinates + */ +CGLM_INLINE +mat4s +glms_pickmatrix(vec2s center, vec2s size, vec4s vp) { + mat4s res; + glm_pickmatrix(center.raw, size.raw, vp.raw, res.raw); + return res; +} + +#endif /* cglms_projects_h */ diff --git a/lib/cglm/include/cglm/struct/quat.h b/lib/cglm/include/cglm/struct/quat.h new file mode 100644 index 0000000..d69675b --- /dev/null +++ b/lib/cglm/include/cglm/struct/quat.h @@ -0,0 +1,565 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLMS_QUAT_IDENTITY_INIT + GLMS_QUAT_IDENTITY + + Functions: + CGLM_INLINE versors glms_quat_identity(void) + CGLM_INLINE void glms_quat_identity_array(versor *q, size_t count) + CGLM_INLINE versors glms_quat_init(float x, float y, float z, float w) + CGLM_INLINE versors glms_quatv(float angle, vec3s axis) + CGLM_INLINE versors glms_quat(float angle, float x, float y, float z) + CGLM_INLINE versors glms_quat_from_vecs(vec3s a, vec3s b) + CGLM_INLINE float glms_quat_norm(versors q) + CGLM_INLINE versors glms_quat_normalize(versors q) + CGLM_INLINE float glms_quat_dot(versors p, versors q) + CGLM_INLINE versors glms_quat_conjugate(versors q) + CGLM_INLINE versors glms_quat_inv(versors q) + CGLM_INLINE versors glms_quat_add(versors p, versors q) + CGLM_INLINE versors glms_quat_sub(versors p, versors q) + CGLM_INLINE vec3s glms_quat_imagn(versors q) + CGLM_INLINE float glms_quat_imaglen(versors q) + CGLM_INLINE float glms_quat_angle(versors q) + CGLM_INLINE vec3s glms_quat_axis(versors q) + CGLM_INLINE versors glms_quat_mul(versors p, versors q) + CGLM_INLINE mat4s glms_quat_mat4(versors q) + CGLM_INLINE mat4s glms_quat_mat4t(versors q) + CGLM_INLINE mat3s glms_quat_mat3(versors q) + CGLM_INLINE mat3s glms_quat_mat3t(versors q) + CGLM_INLINE versors glms_quat_lerp(versors from, versors to, float t) + CGLM_INLINE versors glms_quat_lerpc(versors from, versors to, float t) + CGLM_INLINE versors glms_quat_nlerp(versors from, versors to, float t) + CGLM_INLINE versors glms_quat_slerp(versors from, versors to, float t) + CGLM_INLINE mat4s. glms_quat_look(vec3s eye, versors ori) + CGLM_INLINE versors glms_quat_for(vec3s dir, vec3s fwd, vec3s up) + CGLM_INLINE versors glms_quat_forp(vec3s from, vec3s to, vec3s fwd, vec3s up) + CGLM_INLINE vec3s glms_quat_rotatev(versors q, vec3s v) + CGLM_INLINE mat4s glms_quat_rotate(mat4s m, versors q) + CGLM_INLINE mat4s glms_quat_rotate_at(mat4s m, versors q, vec3s pivot) + CGLM_INLINE mat4s glms_quat_rotate_atm(versors q, vec3s pivot) + */ + +#ifndef cglms_quat_h +#define cglms_quat_h + +#include "../common.h" +#include "../types-struct.h" +#include "../plane.h" +#include "../quat.h" + +/* + * IMPORTANT: + * ---------------------------------------------------------------------------- + * cglm stores quat as [x, y, z, w] since v0.3.6 + * + * it was [w, x, y, z] before v0.3.6 it has been changed to [x, y, z, w] + * with v0.3.6 version. + * ---------------------------------------------------------------------------- + */ + +#define GLMS_QUAT_IDENTITY_INIT {GLM_QUAT_IDENTITY_INIT} +#define GLMS_QUAT_IDENTITY ((versors)GLMS_QUAT_IDENTITY_INIT) + +/*! + * @brief makes given quat to identity + * + * @returns identity quaternion + */ +CGLM_INLINE +versors +glms_quat_identity(void) { + versors dest; + glm_quat_identity(dest.raw); + return dest; +} + +/*! + * @brief make given quaternion array's each element identity quaternion + * + * @param[in, out] q quat array (must be aligned (16) + * if alignment is not disabled) + * + * @param[in] count count of quaternions + */ +CGLM_INLINE +void +glms_quat_identity_array(versors * __restrict q, size_t count) { + CGLM_ALIGN(16) versor v = GLM_QUAT_IDENTITY_INIT; + size_t i; + + for (i = 0; i < count; i++) { + glm_vec4_copy(v, q[i].raw); + } +} + +/*! + * @brief inits quaterion with raw values + * + * @param[in] x x + * @param[in] y y + * @param[in] z z + * @param[in] w w (real part) + * @returns quaternion + */ +CGLM_INLINE +versors +glms_quat_init(float x, float y, float z, float w) { + versors dest; + glm_quat_init(dest.raw, x, y, z, w); + return dest; +} + +/*! + * @brief creates NEW quaternion with axis vector + * + * @param[in] angle angle (radians) + * @param[in] axis axis + * @returns quaternion + */ +CGLM_INLINE +versors +glms_quatv(float angle, vec3s axis) { + versors dest; + glm_quatv(dest.raw, angle, axis.raw); + return dest; +} + +/*! + * @brief creates NEW quaternion with individual axis components + * + * @param[in] angle angle (radians) + * @param[in] x axis.x + * @param[in] y axis.y + * @param[in] z axis.z + * @returns quaternion + */ +CGLM_INLINE +versors +glms_quat(float angle, float x, float y, float z) { + versors dest; + glm_quat(dest.raw, angle, x, y, z); + return dest; +} + +/*! + * @brief compute quaternion rotating vector A to vector B + * + * @param[in] a vec3 (must have unit length) + * @param[in] b vec3 (must have unit length) + * @returns quaternion (of unit length) + */ +CGLM_INLINE +versors +glms_quat_from_vecs(vec3s a, vec3s b) { + versors dest; + glm_quat_from_vecs(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief returns norm (magnitude) of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +float +glms_quat_norm(versors q) { + return glm_quat_norm(q.raw); +} + +/*! + * @brief normalize quaternion + * + * @param[in] q quaternion + * @returns quaternion + */ +CGLM_INLINE +versors +glms_quat_normalize(versors q) { + versors dest; + glm_quat_normalize_to(q.raw, dest.raw); + return dest; +} + +/*! + * @brief dot product of two quaternion + * + * @param[in] p quaternion 1 + * @param[in] q quaternion 2 + * @returns dot product + */ +CGLM_INLINE +float +glms_quat_dot(versors p, versors q) { + return glm_quat_dot(p.raw, q.raw); +} + +/*! + * @brief conjugate of quaternion + * + * @param[in] q quaternion + * @returns conjugate + */ +CGLM_INLINE +versors +glms_quat_conjugate(versors q) { + versors dest; + glm_quat_conjugate(q.raw, dest.raw); + return dest; +} + +/*! + * @brief inverse of non-zero quaternion + * + * @param[in] q quaternion + * @returns inverse quaternion + */ +CGLM_INLINE +versors +glms_quat_inv(versors q) { + versors dest; + glm_quat_inv(q.raw, dest.raw); + return dest; +} + +/*! + * @brief add (componentwise) two quaternions and store result in dest + * + * @param[in] p quaternion 1 + * @param[in] q quaternion 2 + * @returns result quaternion + */ +CGLM_INLINE +versors +glms_quat_add(versors p, versors q) { + versors dest; + glm_quat_add(p.raw, q.raw, dest.raw); + return dest; +} + +/*! + * @brief subtract (componentwise) two quaternions and store result in dest + * + * @param[in] p quaternion 1 + * @param[in] q quaternion 2 + * @returns result quaternion + */ +CGLM_INLINE +versors +glms_quat_sub(versors p, versors q) { + versors dest; + glm_quat_sub(p.raw, q.raw, dest.raw); + return dest; +} + +/*! + * @brief returns normalized imaginary part of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +vec3s +glms_quat_imagn(versors q) { + vec3s dest; + glm_normalize_to(q.raw, dest.raw); + return dest; +} + +/*! + * @brief returns length of imaginary part of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +float +glms_quat_imaglen(versors q) { + return glm_quat_imaglen(q.raw); +} + +/*! + * @brief returns angle of quaternion + * + * @param[in] q quaternion + */ +CGLM_INLINE +float +glms_quat_angle(versors q) { + return glm_quat_angle(q.raw); +} + +/*! + * @brief axis of quaternion + * + * @param[in] q quaternion + * @returns axis of quaternion + */ +CGLM_INLINE +vec3s +glms_quat_axis(versors q) { + vec3s dest; + glm_quat_axis(q.raw, dest.raw); + return dest; +} + +/*! + * @brief multiplies two quaternion and stores result in dest + * this is also called Hamilton Product + * + * According to WikiPedia: + * The product of two rotation quaternions [clarification needed] will be + * equivalent to the rotation q followed by the rotation p + * + * @param[in] p quaternion 1 + * @param[in] q quaternion 2 + * @returns result quaternion + */ +CGLM_INLINE +versors +glms_quat_mul(versors p, versors q) { + versors dest; + glm_quat_mul(p.raw, q.raw, dest.raw); + return dest; +} + +/*! + * @brief convert quaternion to mat4 + * + * @param[in] q quaternion + * @returns result matrix + */ +CGLM_INLINE +mat4s +glms_quat_mat4(versors q) { + mat4s dest; + glm_quat_mat4(q.raw, dest.raw); + return dest; +} + +/*! + * @brief convert quaternion to mat4 (transposed) + * + * @param[in] q quaternion + * @returns result matrix as transposed + */ +CGLM_INLINE +mat4s +glms_quat_mat4t(versors q) { + mat4s dest; + glm_quat_mat4t(q.raw, dest.raw); + return dest; +} + +/*! + * @brief convert quaternion to mat3 + * + * @param[in] q quaternion + * @returns result matrix + */ +CGLM_INLINE +mat3s +glms_quat_mat3(versors q) { + mat3s dest; + glm_quat_mat3(q.raw, dest.raw); + return dest; +} + +/*! + * @brief convert quaternion to mat3 (transposed) + * + * @param[in] q quaternion + * @returns result matrix + */ +CGLM_INLINE +mat3s +glms_quat_mat3t(versors q) { + mat3s dest; + glm_quat_mat3t(q.raw, dest.raw); + return dest; +} + +/*! + * @brief interpolates between two quaternions + * using linear interpolation (LERP) + * + * @param[in] from from + * @param[in] to to + * @param[in] t interpolant (amount) + * @returns result quaternion + */ +CGLM_INLINE +versors +glms_quat_lerp(versors from, versors to, float t) { + versors dest; + glm_quat_lerp(from.raw, to.raw, t, dest.raw); + return dest; +} + +/*! + * @brief interpolates between two quaternions + * using linear interpolation (LERP) + * + * @param[in] from from + * @param[in] to to + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @returns result quaternion + */ +CGLM_INLINE +versors +glms_quat_lerpc(versors from, versors to, float t) { + versors dest; + glm_quat_lerpc(from.raw, to.raw, t, dest.raw); + return dest; +} + +/*! + * @brief interpolates between two quaternions + * taking the shortest rotation path using + * normalized linear interpolation (NLERP) + * + * @param[in] from from + * @param[in] to to + * @param[in] t interpolant (amount) + * @returns result quaternion + */ +CGLM_INLINE +versors +glms_quat_nlerp(versors from, versors to, float t) { + versors dest; + glm_quat_nlerp(from.raw, to.raw, t, dest.raw); + return dest; +} + +/*! + * @brief interpolates between two quaternions + * using spherical linear interpolation (SLERP) + * + * @param[in] from from + * @param[in] to to + * @param[in] t amout + * @returns result quaternion + */ +CGLM_INLINE +versors +glms_quat_slerp(versors from, versors to, float t) { + versors dest; + glm_quat_slerp(from.raw, to.raw, t, dest.raw); + return dest; +} + +/*! + * @brief creates view matrix using quaternion as camera orientation + * + * @param[in] eye eye + * @param[in] ori orientation in world space as quaternion + * @returns view matrix + */ +CGLM_INLINE +mat4s +glms_quat_look(vec3s eye, versors ori) { + mat4s dest; + glm_quat_look(eye.raw, ori.raw, dest.raw); + return dest; +} + +/*! + * @brief creates look rotation quaternion + * + * @param[in] dir direction to look + * @param[in] up up vector + * @returns destination quaternion + */ +CGLM_INLINE +versors +glms_quat_for(vec3s dir, vec3s up) { + versors dest; + glm_quat_for(dir.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief creates look rotation quaternion using source and + * destination positions p suffix stands for position + * + * @param[in] from source point + * @param[in] to destination point + * @param[in] up up vector + * @returns destination quaternion + */ +CGLM_INLINE +versors +glms_quat_forp(vec3s from, vec3s to, vec3s up) { + versors dest; + glm_quat_forp(from.raw, to.raw, up.raw, dest.raw); + return dest; +} + +/*! + * @brief rotate vector using using quaternion + * + * @param[in] q quaternion + * @param[in] v vector to rotate + * @returns rotated vector + */ +CGLM_INLINE +vec3s +glms_quat_rotatev(versors q, vec3s v) { + vec3s dest; + glm_quat_rotatev(q.raw, v.raw, dest.raw); + return dest; +} + +/*! + * @brief rotate existing transform matrix using quaternion + * + * @param[in] m existing transform matrix + * @param[in] q quaternion + * @returns rotated matrix/transform + */ +CGLM_INLINE +mat4s +glms_quat_rotate(mat4s m, versors q) { + glm_quat_rotate(m.raw, q.raw, m.raw); + return m; +} + +/*! + * @brief rotate existing transform matrix using quaternion at pivot point + * + * @param[in, out] m existing transform matrix + * @param[in] q quaternion + * @returns pivot + */ +CGLM_INLINE +mat4s +glms_quat_rotate_at(mat4s m, versors q, vec3s pivot) { + glm_quat_rotate_at(m.raw, q.raw, pivot.raw); + return m; +} + +/*! + * @brief rotate NEW transform matrix using quaternion at pivot point + * + * this creates rotation matrix, it assumes you don't have a matrix + * + * this should work faster than glm_quat_rotate_at because it reduces + * one glm_translate. + * + * @param[in] q quaternion + * @returns pivot + */ +CGLM_INLINE +mat4s +glms_quat_rotate_atm(versors q, vec3s pivot) { + mat4s dest; + glm_quat_rotate_atm(dest.raw, q.raw, pivot.raw); + return dest; +} + +#endif /* cglms_quat_h */ diff --git a/lib/cglm/include/cglm/struct/sphere.h b/lib/cglm/include/cglm/struct/sphere.h new file mode 100644 index 0000000..9859c72 --- /dev/null +++ b/lib/cglm/include/cglm/struct/sphere.h @@ -0,0 +1,93 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglms_spheres_h +#define cglms_spheres_h + +#include "../common.h" +#include "../types-struct.h" +#include "../sphere.h" +#include "mat4.h" + +/* + Sphere Representation in cglm: [center.x, center.y, center.z, radii] + + You could use this representation or you can convert it to vec4 before call + any function + */ + +/*! + * @brief helper for getting sphere radius + * + * @param[in] s sphere + * + * @return returns radii + */ +CGLM_INLINE +float +glms_sphere_radii(vec4s s) { + return glm_sphere_radii(s.raw); +} + +/*! + * @brief apply transform to sphere, it is just wrapper for glm_mat4_mulv3 + * + * @param[in] s sphere + * @param[in] m transform matrix + * @returns transformed sphere + */ +CGLM_INLINE +vec4s +glms_sphere_transform(vec4s s, mat4s m) { + vec4s r; + glm_sphere_transform(s.raw, m.raw, r.raw); + return r; +} + +/*! + * @brief merges two spheres and creates a new one + * + * two sphere must be in same space, for instance if one in world space then + * the other must be in world space too, not in local space. + * + * @param[in] s1 sphere 1 + * @param[in] s2 sphere 2 + * returns merged/extended sphere + */ +CGLM_INLINE +vec4s +glms_sphere_merge(vec4s s1, vec4s s2) { + vec4s r; + glm_sphere_merge(s1.raw, s2.raw, r.raw); + return r; +} + +/*! + * @brief check if two sphere intersects + * + * @param[in] s1 sphere + * @param[in] s2 other sphere + */ +CGLM_INLINE +bool +glms_sphere_sphere(vec4s s1, vec4s s2) { + return glm_sphere_sphere(s1.raw, s2.raw); +} + +/*! + * @brief check if sphere intersects with point + * + * @param[in] s sphere + * @param[in] point point + */ +CGLM_INLINE +bool +glms_sphere_point(vec4s s, vec3s point) { + return glm_sphere_point(s.raw, point.raw); +} + +#endif /* cglms_spheres_h */ diff --git a/lib/cglm/include/cglm/struct/vec2-ext.h b/lib/cglm/include/cglm/struct/vec2-ext.h new file mode 100644 index 0000000..5d6682d --- /dev/null +++ b/lib/cglm/include/cglm/struct/vec2-ext.h @@ -0,0 +1,239 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/*! + * @brief SIMD like functions + */ + +/* + Functions: + CGLM_INLINE vec2s glms_vec2_fill(float val) + CGLM_INLINE bool glms_vec2_eq(vec2s v, float val) + CGLM_INLINE bool glms_vec2_eq_eps(vec2s v, float val) + CGLM_INLINE bool glms_vec2_eq_all(vec2s v) + CGLM_INLINE bool glms_vec2_eqv(vec2s a, vec2s b) + CGLM_INLINE bool glms_vec2_eqv_eps(vec2s a, vec2s b) + CGLM_INLINE float glms_vec2_max(vec2s v) + CGLM_INLINE float glms_vec2_min(vec2s v) + CGLM_INLINE bool glms_vec2_isnan(vec2s v) + CGLM_INLINE bool glms_vec2_isinf(vec2s v) + CGLM_INLINE bool glms_vec2_isvalid(vec2s v) + CGLM_INLINE vec2s glms_vec2_sign(vec2s v) + CGLM_INLINE vec2s glms_vec2_sqrt(vec2s v) + */ + +#ifndef cglms_vec2s_ext_h +#define cglms_vec2s_ext_h + +#include "../common.h" +#include "../types-struct.h" +#include "../util.h" +#include "../vec2-ext.h" + +/*! + * @brief fill a vector with specified value + * + * @param[in] val value + * @returns dest + */ +CGLM_INLINE +vec2s +glms_vec2_fill(float val) { + vec2s r; + glm_vec2_fill(r.raw, val); + return r; +} + +/*! + * @brief check if vector is equal to value (without epsilon) + * + * @param[in] v vector + * @param[in] val value + */ +CGLM_INLINE +bool +glms_vec2_eq(vec2s v, float val) { + return glm_vec2_eq(v.raw, val); +} + +/*! + * @brief check if vector is equal to value (with epsilon) + * + * @param[in] v vector + * @param[in] val value + */ +CGLM_INLINE +bool +glms_vec2_eq_eps(vec2s v, float val) { + return glm_vec2_eq_eps(v.raw, val); +} + +/*! + * @brief check if vectors members are equal (without epsilon) + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec2_eq_all(vec2s v) { + return glm_vec2_eq_all(v.raw); +} + +/*! + * @brief check if vector is equal to another (without epsilon) + * + * @param[in] a vector + * @param[in] b vector + */ +CGLM_INLINE +bool +glms_vec2_eqv(vec2s a, vec2s b) { + return glm_vec2_eqv(a.raw, b.raw); +} + +/*! + * @brief check if vector is equal to another (with epsilon) + * + * @param[in] a vector + * @param[in] b vector + */ +CGLM_INLINE +bool +glms_vec2_eqv_eps(vec2s a, vec2s b) { + return glm_vec2_eqv_eps(a.raw, b.raw); +} + +/*! + * @brief max value of vector + * + * @param[in] v vector + */ +CGLM_INLINE +float +glms_vec2_max(vec2s v) { + return glm_vec2_max(v.raw); +} + +/*! + * @brief min value of vector + * + * @param[in] v vector + */ +CGLM_INLINE +float +glms_vec2_min(vec2s v) { + return glm_vec2_min(v.raw); +} + +/*! + * @brief check if all items are NaN (not a number) + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec2_isnan(vec2s v) { + return glm_vec2_isnan(v.raw); +} + +/*! + * @brief check if all items are INFINITY + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec2_isinf(vec2s v) { + return glm_vec2_isinf(v.raw); +} + +/*! + * @brief check if all items are valid number + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec2_isvalid(vec2s v) { + return glm_vec2_isvalid(v.raw); +} + +/*! + * @brief get sign of 32 bit float as +1, -1, 0 + * + * Important: It returns 0 for zero/NaN input + * + * @param v vector + * @returns sign vector + */ +CGLM_INLINE +vec2s +glms_vec2_sign(vec2s v) { + vec2s r; + glm_vec2_sign(v.raw, r.raw); + return r; +} + +/*! + * @brief square root of each vector item + * + * @param[in] v vector + * @returns destination vector + */ +CGLM_INLINE +vec2s +glms_vec2_sqrt(vec2s v) { + vec2s r; + glm_vec2_sqrt(v.raw, r.raw); + return r; +} + +/*! + * @brief treat vectors as complex numbers and multiply them as such. + * + * @param[in] a left number + * @param[in] b right number + * @param[out] dest destination number + */ +CGLM_INLINE +vec2s +glms_vec2_complex_mul(vec2s a, vec2s b, vec2s dest) { + glm_vec2_complex_mul(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief treat vectors as complex numbers and divide them as such. + * + * @param[in] a left number (numerator) + * @param[in] b right number (denominator) + * @param[out] dest destination number + */ +CGLM_INLINE +vec2s +glms_vec2_complex_div(vec2s a, vec2s b, vec2s dest) { + glm_vec2_complex_div(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief treat the vector as a complex number and conjugate it as such. + * + * @param[in] a the number + * @param[out] dest destination number + */ +CGLM_INLINE +vec2s +glms_vec2_complex_conjugate(vec2s a, vec2s dest) { + glm_vec2_complex_conjugate(a.raw, dest.raw); + return dest; +} + +#endif /* cglms_vec2s_ext_h */ diff --git a/lib/cglm/include/cglm/struct/vec2.h b/lib/cglm/include/cglm/struct/vec2.h new file mode 100644 index 0000000..60f66d3 --- /dev/null +++ b/lib/cglm/include/cglm/struct/vec2.h @@ -0,0 +1,561 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLMS_VEC2_ONE_INIT + GLMS_VEC2_ZERO_INIT + GLMS_VEC2_ONE + GLMS_VEC2_ZERO + + Functions: + CGLM_INLINE vec2s glms_vec2(vec3s v3) + CGLM_INLINE void glms_vec2_pack(vec2s dst[], vec2 src[], size_t len) + CGLM_INLINE void glms_vec2_unpack(vec2 dst[], vec2s src[], size_t len) + CGLM_INLINE vec2s glms_vec2_zero(void) + CGLM_INLINE vec2s glms_vec2_one(void) + CGLM_INLINE float glms_vec2_dot(vec2s a, vec2s b) + CGLM_INLINE float glms_vec2_cross(vec2s a, vec2s b) + CGLM_INLINE float glms_vec2_norm2(vec2s v) + CGLM_INLINE float glms_vec2_norm(vec2s v) + CGLM_INLINE vec2s glms_vec2_add(vec2s a, vec2s b) + CGLM_INLINE vec2s glms_vec2_adds(vec2s a, float s) + CGLM_INLINE vec2s glms_vec2_sub(vec2s a, vec2s b) + CGLM_INLINE vec2s glms_vec2_subs(vec2s a, float s) + CGLM_INLINE vec2s glms_vec2_mul(vec2s a, vec2s b) + CGLM_INLINE vec2s glms_vec2_scale(vec2s v, float s) + CGLM_INLINE vec2s glms_vec2_scale_as(vec2s v, float s) + CGLM_INLINE vec2s glms_vec2_div(vec2s a, vec2s b) + CGLM_INLINE vec2s glms_vec2_divs(vec2s a, float s) + CGLM_INLINE vec2s glms_vec2_addadd(vec2s a, vec2s b, vec2s dest) + CGLM_INLINE vec2s glms_vec2_subadd(vec2s a, vec2s b, vec2s dest) + CGLM_INLINE vec2s glms_vec2_muladd(vec2s a, vec2s b, vec2s dest) + CGLM_INLINE vec2s glms_vec2_muladds(vec2s a, float s, vec2s dest) + CGLM_INLINE vec2s glms_vec2_maxadd(vec2s a, vec2s b, vec2s dest) + CGLM_INLINE vec2s glms_vec2_minadd(vec2s a, vec2s b, vec2s dest) + CGLM_INLINE vec2s glms_vec2_negate(vec2s v) + CGLM_INLINE vec2s glms_vec2_normalize(vec2s v) + CGLM_INLINE vec2s glms_vec2_rotate(vec2s v, float angle, vec2s axis) + CGLM_INLINE float glms_vec2_distance(vec2s a, vec2s b) + CGLM_INLINE float glms_vec2_distance2(vec2s a, vec2s b) + CGLM_INLINE vec2s glms_vec2_maxv(vec2s a, vec2s b) + CGLM_INLINE vec2s glms_vec2_minv(vec2s a, vec2s b) + CGLM_INLINE vec2s glms_vec2_clamp(vec2s v, float minVal, float maxVal) + CGLM_INLINE vec2s glms_vec2_lerp(vec2s from, vec2s to, float t) + */ + +#ifndef cglms_vec2s_h +#define cglms_vec2s_h + +#include "../common.h" +#include "../types-struct.h" +#include "../util.h" +#include "../vec2.h" +#include "vec2-ext.h" + +#define GLMS_VEC2_ONE_INIT {GLM_VEC2_ONE_INIT} +#define GLMS_VEC2_ZERO_INIT {GLM_VEC2_ZERO_INIT} + +#define GLMS_VEC2_ONE ((vec2s)GLMS_VEC2_ONE_INIT) +#define GLMS_VEC2_ZERO ((vec2s)GLMS_VEC2_ZERO_INIT) + +/*! + * @brief init vec2 using vec2 + * + * @param[in] v3 vector3 + * @returns destination + */ +CGLM_INLINE +vec2s +glms_vec2(vec3s v3) { + vec2s r; + glm_vec2(v3.raw, r.raw); + return r; +} + +/*! + * @brief pack an array of vec2 into an array of vec2s + * + * @param[out] dst array of vec2 + * @param[in] src array of vec2s + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_vec2_pack(vec2s dst[], vec2 src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_vec2_copy(src[i], dst[i].raw); + } +} + +/*! + * @brief unpack an array of vec2s into an array of vec2 + * + * @param[out] dst array of vec2s + * @param[in] src array of vec2 + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_vec2_unpack(vec2 dst[], vec2s src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_vec2_copy(src[i].raw, dst[i]); + } +} + +/*! + * @brief make vector zero + * + * @returns zero vector + */ +CGLM_INLINE +vec2s +glms_vec2_zero(void) { + vec2s r; + glm_vec2_zero(r.raw); + return r; +} + +/*! + * @brief make vector one + * + * @returns one vector + */ +CGLM_INLINE +vec2s +glms_vec2_one(void) { + vec2s r; + glm_vec2_one(r.raw); + return r; +} + +/*! + * @brief vec2 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +float +glms_vec2_dot(vec2s a, vec2s b) { + return glm_vec2_dot(a.raw, b.raw); +} + +/*! + * @brief vec2 cross product + * + * REF: http://allenchou.net/2013/07/cross-product-of-2d-vectors/ + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return Z component of cross product + */ +CGLM_INLINE +float +glms_vec2_cross(vec2s a, vec2s b) { + return glm_vec2_cross(a.raw, b.raw); +} + +/*! + * @brief norm * norm (magnitude) of vec + * + * we can use this func instead of calling norm * norm, because it would call + * sqrtf fuction twice but with this func we can avoid func call, maybe this is + * not good name for this func + * + * @param[in] v vector + * + * @return norm * norm + */ +CGLM_INLINE +float +glms_vec2_norm2(vec2s v) { + return glm_vec2_norm2(v.raw); +} + +/*! + * @brief norm (magnitude) of vec2 + * + * @param[in] v vector + * + * @return norm + */ +CGLM_INLINE +float +glms_vec2_norm(vec2s v) { + return glm_vec2_norm(v.raw); +} + +/*! + * @brief add a vector to b vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +vec2s +glms_vec2_add(vec2s a, vec2s b) { + vec2s r; + glm_vec2_add(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + s) + * + * @param[in] a vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec2s +glms_vec2_adds(vec2s a, float s) { + vec2s r; + glm_vec2_adds(a.raw, s, r.raw); + return r; +} + +/*! + * @brief subtract b vector from a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +vec2s +glms_vec2_sub(vec2s a, vec2s b) { + vec2s r; + glm_vec2_sub(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - s) + * + * @param[in] a vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec2s +glms_vec2_subs(vec2s a, float s) { + vec2s r; + glm_vec2_subs(a.raw, s, r.raw); + return r; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a vector1 + * @param b vector2 + * @returns v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + */ +CGLM_INLINE +vec2s +glms_vec2_mul(vec2s a, vec2s b) { + vec2s r; + glm_vec2_mul(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief multiply/scale vec2 vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec2s +glms_vec2_scale(vec2s v, float s) { + vec2s r; + glm_vec2_scale(v.raw, s, r.raw); + return r; +} + +/*! + * @brief make vec2 vector scale as specified: result = unit(v) * s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec2s +glms_vec2_scale_as(vec2s v, float s) { + vec2s r; + glm_vec2_scale_as(v.raw, s, r.raw); + return r; +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns result = (a[0]/b[0], a[1]/b[1], a[2]/b[2]) + */ +CGLM_INLINE +vec2s +glms_vec2_div(vec2s a, vec2s b) { + vec2s r; + glm_vec2_div(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief div vector with scalar: d = v / s + * + * @param[in] a vector + * @param[in] s scalar + * @returns result = (a[0]/s, a[1]/s, a[2]/s) + */ +CGLM_INLINE +vec2s +glms_vec2_divs(vec2s a, float s) { + vec2s r; + glm_vec2_divs(a.raw, s, r.raw); + return r; +} + +/*! + * @brief add two vectors and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a + b) + */ +CGLM_INLINE +vec2s +glms_vec2_addadd(vec2s a, vec2s b, vec2s dest) { + glm_vec2_addadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief sub two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a + b) + */ +CGLM_INLINE +vec2s +glms_vec2_subadd(vec2s a, vec2s b, vec2s dest) { + glm_vec2_subadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief mul two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a * b) + */ +CGLM_INLINE +vec2s +glms_vec2_muladd(vec2s a, vec2s b, vec2s dest) { + glm_vec2_muladd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief mul vector with scalar and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector + * @param[in] s scalar + * @returns dest += (a * b) + */ +CGLM_INLINE +vec2s +glms_vec2_muladds(vec2s a, float s, vec2s dest) { + glm_vec2_muladds(a.raw, s, dest.raw); + return dest; +} + +/*! + * @brief add max of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += max(a, b) + */ +CGLM_INLINE +vec2s +glms_vec2_maxadd(vec2s a, vec2s b, vec2s dest) { + glm_vec2_maxadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief add min of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += min(a, b) + */ +CGLM_INLINE +vec2s +glms_vec2_minadd(vec2s a, vec2s b, vec2s dest) { + glm_vec2_minadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief negate vector components + * + * @param[in] v vector + * @returns negated vector + */ +CGLM_INLINE +vec2s +glms_vec2_negate(vec2s v) { + glm_vec2_negate(v.raw); + return v; +} + +/*! + * @brief normalize vec2 and store result in same vec + * + * @param[in] v vector + * @returns normalized vector + */ +CGLM_INLINE +vec2s +glms_vec2_normalize(vec2s v) { + glm_vec2_normalize(v.raw); + return v; +} + +/*! + * @brief rotate vec2 by angle using Rodrigues' rotation formula + * + * @param[in] v vector + * @param[in] angle angle by radians + * @returns rotated vector + */ +CGLM_INLINE +vec2s +glms_vec2_rotate(vec2s v, float angle) { + vec2s r; + glm_vec2_rotate(v.raw, angle, r.raw); + return r; +} + +/** + * @brief distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return distance + */ +CGLM_INLINE +float +glms_vec2_distance(vec2s a, vec2s b) { + return glm_vec2_distance(a.raw, b.raw); +} + +/** + * @brief squared distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return squared distance (distance * distance) + */ +CGLM_INLINE +float +glms_vec2_distance2(vec2s a, vec2s b) { + return glm_vec2_distance2(a.raw, b.raw); +} + +/*! + * @brief max values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination + */ +CGLM_INLINE +vec2s +glms_vec2_maxv(vec2s a, vec2s b) { + vec2s r; + glm_vec2_maxv(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief min values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination + */ +CGLM_INLINE +vec2s +glms_vec2_minv(vec2s a, vec2s b) { + vec2s r; + glm_vec2_minv(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief clamp vector's individual members between min and max values + * + * @param[in] v vector + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + * @returns clamped vector + */ +CGLM_INLINE +vec2s +glms_vec2_clamp(vec2s v, float minVal, float maxVal) { + glm_vec2_clamp(v.raw, minVal, maxVal); + return v; +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @returns destination + */ +CGLM_INLINE +vec2s +glms_vec2_lerp(vec2s from, vec2s to, float t) { + vec2s r; + glm_vec2_lerp(from.raw, to.raw, t, r.raw); + return r; +} + +#endif /* cglms_vec2s_h */ diff --git a/lib/cglm/include/cglm/struct/vec3-ext.h b/lib/cglm/include/cglm/struct/vec3-ext.h new file mode 100644 index 0000000..8e5ca70 --- /dev/null +++ b/lib/cglm/include/cglm/struct/vec3-ext.h @@ -0,0 +1,257 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/*! + * @brief SIMD like functions + */ + +/* + Functions: + CGLM_INLINE vec3s glms_vec3_broadcast(float val); + CGLM_INLINE vec3s glms_vec3_fill(float val); + CGLM_INLINE bool glms_vec3_eq(vec3s v, float val); + CGLM_INLINE bool glms_vec3_eq_eps(vec3s v, float val); + CGLM_INLINE bool glms_vec3_eq_all(vec3s v); + CGLM_INLINE bool glms_vec3_eqv(vec3s a, vec3s b); + CGLM_INLINE bool glms_vec3_eqv_eps(vec3s a, vec3s b); + CGLM_INLINE float glms_vec3_max(vec3s v); + CGLM_INLINE float glms_vec3_min(vec3s v); + CGLM_INLINE bool glms_vec3_isnan(vec3s v); + CGLM_INLINE bool glms_vec3_isinf(vec3s v); + CGLM_INLINE bool glms_vec3_isvalid(vec3s v); + CGLM_INLINE vec3s glms_vec3_sign(vec3s v); + CGLM_INLINE vec3s glms_vec3_abs(vec3s v); + CGLM_INLINE vec3s glms_vec3_fract(vec3s v); + CGLM_INLINE float glms_vec3_hadd(vec3s v); + CGLM_INLINE vec3s glms_vec3_sqrt(vec3s v); + */ + +#ifndef cglms_vec3s_ext_h +#define cglms_vec3s_ext_h + +#include "../common.h" +#include "../types-struct.h" +#include "../util.h" +#include "../vec3-ext.h" + +/*! + * @brief fill a vector with specified value + * + * @param[in] val value + * @returns dest + */ +CGLM_INLINE +vec3s +glms_vec3_broadcast(float val) { + vec3s r; + glm_vec3_broadcast(val, r.raw); + return r; +} + +/*! + * @brief fill a vector with specified value + * + * @param[in] val value + * @returns dest + */ +CGLM_INLINE +vec3s +glms_vec3_fill(float val) { + vec3s r; + glm_vec3_fill(r.raw, val); + return r; +} + +/*! + * @brief check if vector is equal to value (without epsilon) + * + * @param[in] v vector + * @param[in] val value + */ +CGLM_INLINE +bool +glms_vec3_eq(vec3s v, float val) { + return glm_vec3_eq(v.raw, val); +} + +/*! + * @brief check if vector is equal to value (with epsilon) + * + * @param[in] v vector + * @param[in] val value + */ +CGLM_INLINE +bool +glms_vec3_eq_eps(vec3s v, float val) { + return glm_vec3_eq_eps(v.raw, val); +} + +/*! + * @brief check if vectors members are equal (without epsilon) + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec3_eq_all(vec3s v) { + return glm_vec3_eq_all(v.raw); +} + +/*! + * @brief check if vector is equal to another (without epsilon) + * + * @param[in] a vector + * @param[in] b vector + */ +CGLM_INLINE +bool +glms_vec3_eqv(vec3s a, vec3s b) { + return glm_vec3_eqv(a.raw, b.raw); +} + +/*! + * @brief check if vector is equal to another (with epsilon) + * + * @param[in] a vector + * @param[in] b vector + */ +CGLM_INLINE +bool +glms_vec3_eqv_eps(vec3s a, vec3s b) { + return glm_vec3_eqv_eps(a.raw, b.raw); +} + +/*! + * @brief max value of vector + * + * @param[in] v vector + */ +CGLM_INLINE +float +glms_vec3_max(vec3s v) { + return glm_vec3_max(v.raw); +} + +/*! + * @brief min value of vector + * + * @param[in] v vector + */ +CGLM_INLINE +float +glms_vec3_min(vec3s v) { + return glm_vec3_min(v.raw); +} + +/*! + * @brief check if all items are NaN (not a number) + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec3_isnan(vec3s v) { + return glm_vec3_isnan(v.raw); +} + +/*! + * @brief check if all items are INFINITY + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec3_isinf(vec3s v) { + return glm_vec3_isinf(v.raw); +} + +/*! + * @brief check if all items are valid number + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec3_isvalid(vec3s v) { + return glm_vec3_isvalid(v.raw); +} + +/*! + * @brief get sign of 32 bit float as +1, -1, 0 + * + * Important: It returns 0 for zero/NaN input + * + * @param v vector + * @returns sign vector + */ +CGLM_INLINE +vec3s +glms_vec3_sign(vec3s v) { + vec3s r; + glm_vec3_sign(v.raw, r.raw); + return r; +} + +/*! + * @brief absolute value of each vector item + * + * @param[in] v vector + * @return destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_abs(vec3s v) { + vec3s r; + glm_vec3_abs(v.raw, r.raw); + return r; +} + +/*! + * @brief fractional part of each vector item + * + * @param[in] v vector + * @return dest destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_fract(vec3s v) { + vec3s r; + glm_vec3_fract(v.raw, r.raw); + return r; +} + +/*! + * @brief vector reduction by summation + * @warning could overflow + * + * @param[in] v vector + * @return sum of all vector's elements + */ +CGLM_INLINE +float +glms_vec3_hadd(vec3s v) { + return glm_vec3_hadd(v.raw); +} + +/*! + * @brief square root of each vector item + * + * @param[in] v vector + * @returns destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_sqrt(vec3s v) { + vec3s r; + glm_vec3_sqrt(v.raw, r.raw); + return r; +} + +#endif /* cglms_vec3s_ext_h */ diff --git a/lib/cglm/include/cglm/struct/vec3.h b/lib/cglm/include/cglm/struct/vec3.h new file mode 100644 index 0000000..7fa5b06 --- /dev/null +++ b/lib/cglm/include/cglm/struct/vec3.h @@ -0,0 +1,970 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLMS_VEC3_ONE_INIT + GLMS_VEC3_ZERO_INIT + GLMS_VEC3_ONE + GLMS_VEC3_ZERO + GLMS_YUP + GLMS_ZUP + GLMS_XUP + + Functions: + CGLM_INLINE vec3s glms_vec3(vec4s v4); + CGLM_INLINE void glms_vec3_pack(vec3s dst[], vec3 src[], size_t len); + CGLM_INLINE void glms_vec3_unpack(vec3 dst[], vec3s src[], size_t len); + CGLM_INLINE vec3s glms_vec3_zero(void); + CGLM_INLINE vec3s glms_vec3_one(void); + CGLM_INLINE float glms_vec3_dot(vec3s a, vec3s b); + CGLM_INLINE float glms_vec3_norm2(vec3s v); + CGLM_INLINE float glms_vec3_norm(vec3s v); + CGLM_INLINE float glms_vec3_norm_one(vec3s v); + CGLM_INLINE float glms_vec3_norm_inf(vec3s v); + CGLM_INLINE vec3s glms_vec3_add(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_adds(vec3s a, float s); + CGLM_INLINE vec3s glms_vec3_sub(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_subs(vec3s a, float s); + CGLM_INLINE vec3s glms_vec3_mul(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_scale(vec3s v, float s); + CGLM_INLINE vec3s glms_vec3_scale_as(vec3s v, float s); + CGLM_INLINE vec3s glms_vec3_div(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_divs(vec3s a, float s); + CGLM_INLINE vec3s glms_vec3_addadd(vec3s a, vec3s b, vec3s dest); + CGLM_INLINE vec3s glms_vec3_subadd(vec3s a, vec3s b, vec3s dest); + CGLM_INLINE vec3s glms_vec3_muladd(vec3s a, vec3s b, vec3s dest); + CGLM_INLINE vec3s glms_vec3_muladds(vec3s a, float s, vec3s dest); + CGLM_INLINE vec3s glms_vec3_maxadd(vec3s a, vec3s b, vec3s dest); + CGLM_INLINE vec3s glms_vec3_minadd(vec3s a, vec3s b, vec3s dest); + CGLM_INLINE vec3s glms_vec3_flipsign(vec3s v); + CGLM_INLINE vec3s glms_vec3_negate(vec3s v); + CGLM_INLINE vec3s glms_vec3_inv(vec3s v); + CGLM_INLINE vec3s glms_vec3_normalize(vec3s v); + CGLM_INLINE vec3s glms_vec3_cross(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_crossn(vec3s a, vec3s b); + CGLM_INLINE float glms_vec3_angle(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_rotate(vec3s v, float angle, vec3s axis); + CGLM_INLINE vec3s glms_vec3_rotate_m4(mat4s m, vec3s v); + CGLM_INLINE vec3s glms_vec3_rotate_m3(mat3s m, vec3s v); + CGLM_INLINE vec3s glms_vec3_proj(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_center(vec3s a, vec3s b); + CGLM_INLINE float glms_vec3_distance(vec3s a, vec3s b); + CGLM_INLINE float glms_vec3_distance2(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_maxv(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_minv(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_vec3_ortho(vec3s v); + CGLM_INLINE vec3s glms_vec3_clamp(vec3s v, float minVal, float maxVal); + CGLM_INLINE vec3s glms_vec3_lerp(vec3s from, vec3s to, float t); + CGLM_INLINE vec3s glms_vec3_lerpc(vec3s from, vec3s to, float t); + CGLM_INLINE vec3s glms_vec3_mix(vec3s from, vec3s to, float t); + CGLM_INLINE vec3s glms_vec3_mixc(vec3s from, vec3s to, float t); + CGLM_INLINE vec3s glms_vec3_step_uni(float edge, vec3s x); + CGLM_INLINE vec3s glms_vec3_step(vec3s edge, vec3s x); + CGLM_INLINE vec3s glms_vec3_smoothstep_uni(float edge0, float edge1, vec3s x); + CGLM_INLINE vec3s glms_vec3_smoothstep(vec3s edge0, vec3s edge1, vec3s x); + CGLM_INLINE vec3s glms_vec3_smoothinterp(vec3s from, vec3s to, float t); + CGLM_INLINE vec3s glms_vec3_smoothinterpc(vec3s from, vec3s to, float t); + CGLM_INLINE vec3s glms_vec3_swizzle(vec3s v, int mask); + + Convenient: + CGLM_INLINE vec3s glms_cross(vec3s a, vec3s b); + CGLM_INLINE float glms_dot(vec3s a, vec3s b); + CGLM_INLINE vec3s glms_normalize(vec3s v); + */ + +#ifndef cglms_vec3s_h +#define cglms_vec3s_h + +#include "../common.h" +#include "../types-struct.h" +#include "../util.h" +#include "../vec3.h" +#include "vec3-ext.h" + +#define GLMS_VEC3_ONE_INIT {GLM_VEC3_ONE_INIT} +#define GLMS_VEC3_ZERO_INIT {GLM_VEC3_ZERO_INIT} + +#define GLMS_VEC3_ONE ((vec3s)GLMS_VEC3_ONE_INIT) +#define GLMS_VEC3_ZERO ((vec3s)GLMS_VEC3_ZERO_INIT) + +#define GLMS_YUP ((vec3s){{0.0f, 1.0f, 0.0f}}) +#define GLMS_ZUP ((vec3s){{0.0f, 0.0f, 1.0f}}) +#define GLMS_XUP ((vec3s){{1.0f, 0.0f, 0.0f}}) + +/*! + * @brief init vec3 using vec4 + * + * @param[in] v4 vector4 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3(vec4s v4) { + vec3s r; + glm_vec3(v4.raw, r.raw); + return r; +} + +/*! + * @brief pack an array of vec3 into an array of vec3s + * + * @param[out] dst array of vec3 + * @param[in] src array of vec3s + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_vec3_pack(vec3s dst[], vec3 src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_vec3_copy(src[i], dst[i].raw); + } +} + +/*! + * @brief unpack an array of vec3s into an array of vec3 + * + * @param[out] dst array of vec3s + * @param[in] src array of vec3 + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_vec3_unpack(vec3 dst[], vec3s src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_vec3_copy(src[i].raw, dst[i]); + } +} + +/*! + * @brief make vector zero + * + * @returns zero vector + */ +CGLM_INLINE +vec3s +glms_vec3_zero(void) { + vec3s r; + glm_vec3_zero(r.raw); + return r; +} + +/*! + * @brief make vector one + * + * @returns one vector + */ +CGLM_INLINE +vec3s +glms_vec3_one(void) { + vec3s r; + glm_vec3_one(r.raw); + return r; +} + +/*! + * @brief vec3 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +float +glms_vec3_dot(vec3s a, vec3s b) { + return glm_vec3_dot(a.raw, b.raw); +} + +/*! + * @brief norm * norm (magnitude) of vec + * + * we can use this func instead of calling norm * norm, because it would call + * sqrtf fuction twice but with this func we can avoid func call, maybe this is + * not good name for this func + * + * @param[in] v vector + * + * @return norm * norm + */ +CGLM_INLINE +float +glms_vec3_norm2(vec3s v) { + return glm_vec3_norm2(v.raw); +} + +/*! + * @brief norm (magnitude) of vec3 + * + * @param[in] v vector + * + * @return norm + */ +CGLM_INLINE +float +glms_vec3_norm(vec3s v) { + return glm_vec3_norm(v.raw); +} + +/*! + * @brief L1 norm of vec3 + * Also known as Manhattan Distance or Taxicab norm. + * L1 Norm is the sum of the magnitudes of the vectors in a space. + * It is calculated as the sum of the absolute values of the vector components. + * In this norm, all the components of the vector are weighted equally. + * + * This computes: + * R = |v[0]| + |v[1]| + |v[2]| + * + * @param[in] v vector + * + * @return L1 norm + */ +CGLM_INLINE +float +glms_vec3_norm_one(vec3s v) { + return glm_vec3_norm_one(v.raw); +} + +/*! + * @brief Infinity norm of vec3 + * Also known as Maximum norm. + * Infinity Norm is the largest magnitude among each element of a vector. + * It is calculated as the maximum of the absolute values of the vector components. + * + * This computes: + * inf norm = max(|v[0]|, |v[1]|, |v[2]|) + * + * @param[in] v vector + * + * @return Infinity norm + */ +CGLM_INLINE +float +glms_vec3_norm_inf(vec3s v) { + return glm_vec3_norm_inf(v.raw); +} + +/*! + * @brief add a vector to b vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_add(vec3s a, vec3s b) { + vec3s r; + glm_vec3_add(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + s) + * + * @param[in] a vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_adds(vec3s a, float s) { + vec3s r; + glm_vec3_adds(a.raw, s, r.raw); + return r; +} + +/*! + * @brief subtract b vector from a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_sub(vec3s a, vec3s b) { + vec3s r; + glm_vec3_sub(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - s) + * + * @param[in] a vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_subs(vec3s a, float s) { + vec3s r; + glm_vec3_subs(a.raw, s, r.raw); + return r; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a vector1 + * @param b vector2 + * @returns v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + */ +CGLM_INLINE +vec3s +glms_vec3_mul(vec3s a, vec3s b) { + vec3s r; + glm_vec3_mul(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief multiply/scale vec3 vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_scale(vec3s v, float s) { + vec3s r; + glm_vec3_scale(v.raw, s, r.raw); + return r; +} + +/*! + * @brief make vec3 vector scale as specified: result = unit(v) * s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_scale_as(vec3s v, float s) { + vec3s r; + glm_vec3_scale_as(v.raw, s, r.raw); + return r; +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns result = (a[0]/b[0], a[1]/b[1], a[2]/b[2]) + */ +CGLM_INLINE +vec3s +glms_vec3_div(vec3s a, vec3s b) { + vec3s r; + glm_vec3_div(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief div vector with scalar: d = v / s + * + * @param[in] a vector + * @param[in] s scalar + * @returns result = (a[0]/s, a[1]/s, a[2]/s) + */ +CGLM_INLINE +vec3s +glms_vec3_divs(vec3s a, float s) { + vec3s r; + glm_vec3_divs(a.raw, s, r.raw); + return r; +} + +/*! + * @brief add two vectors and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a + b) + */ +CGLM_INLINE +vec3s +glms_vec3_addadd(vec3s a, vec3s b, vec3s dest) { + glm_vec3_addadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief sub two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a + b) + */ +CGLM_INLINE +vec3s +glms_vec3_subadd(vec3s a, vec3s b, vec3s dest) { + glm_vec3_subadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief mul two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a * b) + */ +CGLM_INLINE +vec3s +glms_vec3_muladd(vec3s a, vec3s b, vec3s dest) { + glm_vec3_muladd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief mul vector with scalar and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector + * @param[in] s scalar + * @returns dest += (a * b) + */ +CGLM_INLINE +vec3s +glms_vec3_muladds(vec3s a, float s, vec3s dest) { + glm_vec3_muladds(a.raw, s, dest.raw); + return dest; +} + +/*! + * @brief add max of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += max(a, b) + */ +CGLM_INLINE +vec3s +glms_vec3_maxadd(vec3s a, vec3s b, vec3s dest) { + glm_vec3_maxadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief add min of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += min(a, b) + */ +CGLM_INLINE +vec3s +glms_vec3_minadd(vec3s a, vec3s b, vec3s dest) { + glm_vec3_minadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief negate vector components and store result in dest + * + * @param[in] v vector + * @returns result vector + */ +CGLM_INLINE +vec3s +glms_vec3_flipsign(vec3s v) { + glm_vec3_flipsign(v.raw); + return v; +} + +/*! + * @brief negate vector components + * + * @param[in] v vector + * @returns negated vector + */ +CGLM_INLINE +vec3s +glms_vec3_negate(vec3s v) { + glm_vec3_negate(v.raw); + return v; +} + +/*! + * @brief normalize vec3 and store result in same vec + * + * @param[in] v vector + * @returns normalized vector + */ +CGLM_INLINE +vec3s +glms_vec3_normalize(vec3s v) { + glm_vec3_normalize(v.raw); + return v; +} + +/*! + * @brief cross product of two vector (RH) + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_cross(vec3s a, vec3s b) { + vec3s r; + glm_vec3_cross(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief cross product of two vector (RH) and normalize the result + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_crossn(vec3s a, vec3s b) { + vec3s r; + glm_vec3_crossn(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief angle betwen two vector + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return angle as radians + */ +CGLM_INLINE +float +glms_vec3_angle(vec3s a, vec3s b) { + return glm_vec3_angle(a.raw, b.raw); +} + +/*! + * @brief rotate vec3 around axis by angle using Rodrigues' rotation formula + * + * @param[in] v vector + * @param[in] axis axis vector (must be unit vector) + * @param[in] angle angle by radians + * @returns rotated vector + */ +CGLM_INLINE +vec3s +glms_vec3_rotate(vec3s v, float angle, vec3s axis) { + glm_vec3_rotate(v.raw, angle, axis.raw); + return v; +} + +/*! + * @brief apply rotation matrix to vector + * + * matrix format should be (no perspective): + * a b c x + * e f g y + * i j k z + * 0 0 0 w + * + * @param[in] m affine matrix or rot matrix + * @param[in] v vector + * @returns rotated vector + */ +CGLM_INLINE +vec3s +glms_vec3_rotate_m4(mat4s m, vec3s v) { + vec3s r; + glm_vec3_rotate_m4(m.raw, v.raw, r.raw); + return r; +} + +/*! + * @brief apply rotation matrix to vector + * + * @param[in] m affine matrix or rot matrix + * @param[in] v vector + * @returns rotated vector + */ +CGLM_INLINE +vec3s +glms_vec3_rotate_m3(mat3s m, vec3s v) { + vec3s r; + glm_vec3_rotate_m3(m.raw, v.raw, r.raw); + return r; +} + +/*! + * @brief project a vector onto b vector + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns projected vector + */ +CGLM_INLINE +vec3s +glms_vec3_proj(vec3s a, vec3s b) { + vec3s r; + glm_vec3_proj(a.raw, b.raw, r.raw); + return r; +} + +/** + * @brief find center point of two vector + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns center point + */ +CGLM_INLINE +vec3s +glms_vec3_center(vec3s a, vec3s b) { + vec3s r; + glm_vec3_center(a.raw, b.raw, r.raw); + return r; +} + +/** + * @brief distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return distance + */ +CGLM_INLINE +float +glms_vec3_distance(vec3s a, vec3s b) { + return glm_vec3_distance(a.raw, b.raw); +} + +/** + * @brief squared distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return squared distance (distance * distance) + */ +CGLM_INLINE +float +glms_vec3_distance2(vec3s a, vec3s b) { + return glm_vec3_distance2(a.raw, b.raw); +} + +/*! + * @brief max values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_maxv(vec3s a, vec3s b) { + vec3s r; + glm_vec3_maxv(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief min values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_minv(vec3s a, vec3s b) { + vec3s r; + glm_vec3_minv(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief possible orthogonal/perpendicular vector + * + * @param[in] v vector + * @returns orthogonal/perpendicular vector + */ +CGLM_INLINE +vec3s +glms_vec3_ortho(vec3s v) { + vec3s r; + glm_vec3_ortho(v.raw, r.raw); + return r; +} + +/*! + * @brief clamp vector's individual members between min and max values + * + * @param[in] v vector + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + * @returns clamped vector + */ +CGLM_INLINE +vec3s +glms_vec3_clamp(vec3s v, float minVal, float maxVal) { + glm_vec3_clamp(v.raw, minVal, maxVal); + return v; +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_lerp(vec3s from, vec3s to, float t) { + vec3s r; + glm_vec3_lerp(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief linear interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_lerpc(vec3s from, vec3s to, float t) { + vec3s r; + glm_vec3_lerpc(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_mix(vec3s from, vec3s to, float t) { + vec3s r; + glm_vec3_mix(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief linear interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_mixc(vec3s from, vec3s to, float t) { + vec3s r; + glm_vec3_mixc(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief threshold function (unidimensional) + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @returns 0.0 if x < edge, else 1.0 + */ +CGLM_INLINE +vec3s +glms_vec3_step_uni(float edge, vec3s x) { + vec3s r; + glm_vec3_step_uni(edge, x.raw, r.raw); + return r; +} + +/*! + * @brief threshold function + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @returns 0.0 if x < edge, else 1.0 + */ +CGLM_INLINE +vec3s +glms_vec3_step(vec3s edge, vec3s x) { + vec3s r; + glm_vec3_step(edge.raw, x.raw, r.raw); + return r; +} + +/*! + * @brief threshold function with a smooth transition (unidimensional) + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x value to test against threshold + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_smoothstep_uni(float edge0, float edge1, vec3s x) { + vec3s r; + glm_vec3_smoothstep_uni(edge0, edge1, x.raw, r.raw); + return r; +} + +/*! + * @brief threshold function with a smooth transition + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x value to test against threshold + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_smoothstep(vec3s edge0, vec3s edge1, vec3s x) { + vec3s r; + glm_vec3_smoothstep(edge0.raw, edge1.raw, x.raw, r.raw); + return r; +} + +/*! + * @brief smooth Hermite interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_smoothinterp(vec3s from, vec3s to, float t) { + vec3s r; + glm_vec3_smoothinterp(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief smooth Hermite interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_vec3_smoothinterpc(vec3s from, vec3s to, float t) { + vec3s r; + glm_vec3_smoothinterpc(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief vec3 cross product + * + * this is just convenient wrapper + * + * @param[in] a source 1 + * @param[in] b source 2 + * @returns destination + */ +CGLM_INLINE +vec3s +glms_cross(vec3s a, vec3s b) { + vec3s r; + glm_cross(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief vec3 dot product + * + * this is just convenient wrapper + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return dot product + */ +CGLM_INLINE +float +glms_dot(vec3s a, vec3s b) { + return glm_dot(a.raw, b.raw); +} + +/*! + * @brief normalize vec3 and store result in same vec + * + * this is just convenient wrapper + * + * @param[in] v vector + * @returns normalized vector + */ +CGLM_INLINE +vec3s +glms_normalize(vec3s v) { + glm_normalize(v.raw); + return v; +} + +/*! + * @brief swizzle vector components + * + * you can use existin masks e.g. GLM_XXX, GLM_ZYX + * + * @param[in] v source + * @param[in] mask mask + * @returns swizzled vector + */ +CGLM_INLINE +vec3s +glms_vec3_swizzle(vec3s v, int mask) { + vec3s dest; + glm_vec3_swizzle(v.raw, mask, dest.raw); + return dest; +} + +#endif /* cglms_vec3s_h */ diff --git a/lib/cglm/include/cglm/struct/vec4-ext.h b/lib/cglm/include/cglm/struct/vec4-ext.h new file mode 100644 index 0000000..d5cddec --- /dev/null +++ b/lib/cglm/include/cglm/struct/vec4-ext.h @@ -0,0 +1,257 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/*! + * @brief SIMD like functions + */ + +/* + Functions: + CGLM_INLINE vec4s glms_vec4_broadcast(float val); + CGLM_INLINE vec4s glms_vec4_fill(float val); + CGLM_INLINE bool glms_vec4_eq(vec4s v, float val); + CGLM_INLINE bool glms_vec4_eq_eps(vec4s v, float val); + CGLM_INLINE bool glms_vec4_eq_all(vec4s v); + CGLM_INLINE bool glms_vec4_eqv(vec4s a, vec4s b); + CGLM_INLINE bool glms_vec4_eqv_eps(vec4s a, vec4s b); + CGLM_INLINE float glms_vec4_max(vec4s v); + CGLM_INLINE float glms_vec4_min(vec4s v); + CGLM_INLINE bool glms_vec4_isnan(vec4s v); + CGLM_INLINE bool glms_vec4_isinf(vec4s v); + CGLM_INLINE bool glms_vec4_isvalid(vec4s v); + CGLM_INLINE vec4s glms_vec4_sign(vec4s v); + CGLM_INLINE vec4s glms_vec4_abs(vec4s v); + CGLM_INLINE vec4s glms_vec4_fract(vec4s v); + CGLM_INLINE float glms_vec4_hadd(vec4s v); + CGLM_INLINE vec4s glms_vec4_sqrt(vec4s v); + */ + +#ifndef cglms_vec4s_ext_h +#define cglms_vec4s_ext_h + +#include "../common.h" +#include "../types-struct.h" +#include "../util.h" +#include "../vec4-ext.h" + +/*! + * @brief fill a vector with specified value + * + * @param val value + * @returns dest + */ +CGLM_INLINE +vec4s +glms_vec4_broadcast(float val) { + vec4s r; + glm_vec4_broadcast(val, r.raw); + return r; +} + +/*! + * @brief fill a vector with specified value + * + * @param val value + * @returns dest + */ +CGLM_INLINE +vec4s +glms_vec4_fill(float val) { + vec4s r; + glm_vec4_fill(r.raw, val); + return r; +} + +/*! + * @brief check if vector is equal to value (without epsilon) + * + * @param v vector + * @param val value + */ +CGLM_INLINE +bool +glms_vec4_eq(vec4s v, float val) { + return glm_vec4_eq(v.raw, val); +} + +/*! + * @brief check if vector is equal to value (with epsilon) + * + * @param v vector + * @param val value + */ +CGLM_INLINE +bool +glms_vec4_eq_eps(vec4s v, float val) { + return glm_vec4_eq_eps(v.raw, val); +} + +/*! + * @brief check if vectors members are equal (without epsilon) + * + * @param v vector + */ +CGLM_INLINE +bool +glms_vec4_eq_all(vec4s v) { + return glm_vec4_eq_all(v.raw); +} + +/*! + * @brief check if vector is equal to another (without epsilon) + * + * @param a vector + * @param b vector + */ +CGLM_INLINE +bool +glms_vec4_eqv(vec4s a, vec4s b) { + return glm_vec4_eqv(a.raw, b.raw); +} + +/*! + * @brief check if vector is equal to another (with epsilon) + * + * @param a vector + * @param b vector + */ +CGLM_INLINE +bool +glms_vec4_eqv_eps(vec4s a, vec4s b) { + return glm_vec4_eqv_eps(a.raw, b.raw); +} + +/*! + * @brief max value of vector + * + * @param v vector + */ +CGLM_INLINE +float +glms_vec4_max(vec4s v) { + return glm_vec4_max(v.raw); +} + +/*! + * @brief min value of vector + * + * @param v vector + */ +CGLM_INLINE +float +glms_vec4_min(vec4s v) { + return glm_vec4_min(v.raw); +} + +/*! + * @brief check if one of items is NaN (not a number) + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec4_isnan(vec4s v) { + return glm_vec4_isnan(v.raw); +} + +/*! + * @brief check if one of items is INFINITY + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec4_isinf(vec4s v) { + return glm_vec4_isinf(v.raw); +} + +/*! + * @brief check if all items are valid number + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glms_vec4_isvalid(vec4s v) { + return glm_vec4_isvalid(v.raw); +} + +/*! + * @brief get sign of 32 bit float as +1, -1, 0 + * + * Important: It returns 0 for zero/NaN input + * + * @param v vector + * @returns sign vector + */ +CGLM_INLINE +vec4s +glms_vec4_sign(vec4s v) { + vec4s r; + glm_vec4_sign(v.raw, r.raw); + return r; +} + +/*! + * @brief absolute value of each vector item + * + * @param[in] v vector + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_abs(vec4s v) { + vec4s r; + glm_vec4_abs(v.raw, r.raw); + return r; +} + +/*! + * @brief fractional part of each vector item + * + * @param[in] v vector + * @returns dest destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_fract(vec4s v) { + vec4s r; + glm_vec4_fract(v.raw, r.raw); + return r; +} + +/*! + * @brief vector reduction by summation + * @warning could overflow + * + * @param[in] v vector + * @return sum of all vector's elements + */ +CGLM_INLINE +float +glms_vec4_hadd(vec4s v) { + return glm_vec4_hadd(v.raw); +} + +/*! + * @brief square root of each vector item + * + * @param[in] v vector + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_sqrt(vec4s v) { + vec4s r; + glm_vec4_sqrt(v.raw, r.raw); + return r; +} + +#endif /* cglms_vec4s_ext_h */ diff --git a/lib/cglm/include/cglm/struct/vec4.h b/lib/cglm/include/cglm/struct/vec4.h new file mode 100644 index 0000000..4469cb2 --- /dev/null +++ b/lib/cglm/include/cglm/struct/vec4.h @@ -0,0 +1,814 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLMS_VEC4_ONE_INIT + GLMS_VEC4_BLACK_INIT + GLMS_VEC4_ZERO_INIT + GLMS_VEC4_ONE + GLMS_VEC4_BLACK + GLMS_VEC4_ZERO + + Functions: + CGLM_INLINE vec4s glms_vec4(vec3s v3, float last); + CGLM_INLINE vec3s glms_vec4_copy3(vec4s v); + CGLM_INLINE vec4s glms_vec4_copy(vec4s v); + CGLM_INLINE vec4s glms_vec4_ucopy(vec4s v); + CGLM_INLINE void glms_vec4_pack(vec4s dst[], vec4 src[], size_t len); + CGLM_INLINE void glms_vec4_unpack(vec4 dst[], vec4s src[], size_t len); + CGLM_INLINE float glms_vec4_dot(vec4s a, vec4s b); + CGLM_INLINE float glms_vec4_norm2(vec4s v); + CGLM_INLINE float glms_vec4_norm(vec4s v); + CGLM_INLINE float glms_vec4_norm_one(vec4s v); + CGLM_INLINE float glms_vec4_norm_inf(vec4s v); + CGLM_INLINE vec4s glms_vec4_add(vec4s a, vec4s b); + CGLM_INLINE vec4s glms_vec4_adds(vec4s v, float s); + CGLM_INLINE vec4s glms_vec4_sub(vec4s a, vec4s b); + CGLM_INLINE vec4s glms_vec4_subs(vec4s v, float s); + CGLM_INLINE vec4s glms_vec4_mul(vec4s a, vec4s b); + CGLM_INLINE vec4s glms_vec4_scale(vec4s v, float s); + CGLM_INLINE vec4s glms_vec4_scale_as(vec4s v, float s); + CGLM_INLINE vec4s glms_vec4_div(vec4s a, vec4s b); + CGLM_INLINE vec4s glms_vec4_divs(vec4s v, float s); + CGLM_INLINE vec4s glms_vec4_addadd(vec4s a, vec4s b, vec4s dest); + CGLM_INLINE vec4s glms_vec4_subadd(vec4s a, vec4s b, vec4s dest); + CGLM_INLINE vec4s glms_vec4_muladd(vec4s a, vec4s b, vec4s dest); + CGLM_INLINE vec4s glms_vec4_muladds(vec4s a, float s, vec4s dest); + CGLM_INLINE vec4s glms_vec4_maxadd(vec4s a, vec4s b, vec4s dest); + CGLM_INLINE vec4s glms_vec4_minadd(vec4s a, vec4s b, vec4s dest); + CGLM_INLINE vec4s glms_vec4_negate(vec4s v); + CGLM_INLINE vec4s glms_vec4_inv(vec4s v); + CGLM_INLINE vec4s glms_vec4_normalize(vec4s v); + CGLM_INLINE float glms_vec4_distance(vec4s a, vec4s b); + CGLM_INLINE float glms_vec4_distance2(vec4s a, vec4s b); + CGLM_INLINE vec4s glms_vec4_maxv(vec4s a, vec4s b); + CGLM_INLINE vec4s glms_vec4_minv(vec4s a, vec4s b); + CGLM_INLINE vec4s glms_vec4_clamp(vec4s v, float minVal, float maxVal); + CGLM_INLINE vec4s glms_vec4_lerp(vec4s from, vec4s to, float t); + CGLM_INLINE vec4s glms_vec4_lerpc(vec4s from, vec4s to, float t); + CGLM_INLINE vec4s glms_vec4_mix(vec4s from, vec4s to, float t); + CGLM_INLINE vec4s glms_vec4_mixc(vec4s from, vec4s to, float t); + CGLM_INLINE vec4s glms_vec4_step_uni(float edge, vec4s x); + CGLM_INLINE vec4s glms_vec4_step(vec4s edge, vec4s x); + CGLM_INLINE vec4s glms_vec4_smoothstep_uni(float edge0, float edge1, vec4s x); + CGLM_INLINE vec4s glms_vec4_smoothstep(vec4s edge0, vec4s edge1, vec4s x); + CGLM_INLINE vec4s glms_vec4_smoothinterp(vec4s from, vec4s to, float t); + CGLM_INLINE vec4s glms_vec4_smoothinterpc(vec4s from, vec4s to, float t); + CGLM_INLINE vec4s glms_vec4_cubic(float s); + CGLM_INLINE vec4s glms_vec4_swizzle(vec4s v, int mask); + */ + +#ifndef cglms_vec4s_h +#define cglms_vec4s_h + +#include "../common.h" +#include "../types-struct.h" +#include "../util.h" +#include "../vec4.h" +#include "vec4-ext.h" + +#define GLMS_VEC4_ONE_INIT {GLM_VEC4_ONE_INIT} +#define GLMS_VEC4_BLACK_INIT {GLM_VEC4_BLACK_INIT} +#define GLMS_VEC4_ZERO_INIT {GLM_VEC4_ZERO_INIT} + +#define GLMS_VEC4_ONE ((vec4s)GLM_VEC4_ONE_INIT) +#define GLMS_VEC4_BLACK ((vec4s)GLM_VEC4_BLACK_INIT) +#define GLMS_VEC4_ZERO ((vec4s)GLM_VEC4_ZERO_INIT) + +/*! + * @brief init vec4 using vec3 + * + * @param[in] v3 vector3 + * @param[in] last last item + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4(vec3s v3, float last) { + vec4s r; + glm_vec4(v3.raw, last, r.raw); + return r; +} + +/*! + * @brief copy first 3 members of [a] to [dest] + * + * @param[in] v source + * @returns vec3 + */ +CGLM_INLINE +vec3s +glms_vec4_copy3(vec4s v) { + vec3s r; + glm_vec4_copy3(v.raw, r.raw); + return r; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] v source + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_copy(vec4s v) { + vec4s r; + glm_vec4_copy(v.raw, r.raw); + return r; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * alignment is not required + * + * @param[in] v source + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_ucopy(vec4s v) { + vec4s r; + glm_vec4_ucopy(v.raw, r.raw); + return r; +} + +/*! + * @brief pack an array of vec4 into an array of vec4s + * + * @param[out] dst array of vec4 + * @param[in] src array of vec4s + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_vec4_pack(vec4s dst[], vec4 src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_vec4_copy(src[i], dst[i].raw); + } +} + +/*! + * @brief unpack an array of vec4s into an array of vec4 + * + * @param[out] dst array of vec4s + * @param[in] src array of vec4 + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_vec4_unpack(vec4 dst[], vec4s src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_vec4_copy(src[i].raw, dst[i]); + } +} + +/*! + * @brief make vector zero + * + * @returns zero vector + */ +CGLM_INLINE +vec4s +glms_vec4_zero(void) { + vec4s r; + glm_vec4_zero(r.raw); + return r; +} + +/*! + * @brief make vector one + * + * @returns one vector + */ +CGLM_INLINE +vec4s +glms_vec4_one(void) { + vec4s r; + glm_vec4_one(r.raw); + return r; +} + +/*! + * @brief vec4 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +float +glms_vec4_dot(vec4s a, vec4s b) { + return glm_vec4_dot(a.raw, b.raw); +} + +/*! + * @brief norm * norm (magnitude) of vec + * + * we can use this func instead of calling norm * norm, because it would call + * sqrtf fuction twice but with this func we can avoid func call, maybe this is + * not good name for this func + * + * @param[in] v vec4 + * + * @return norm * norm + */ +CGLM_INLINE +float +glms_vec4_norm2(vec4s v) { + return glm_vec4_norm2(v.raw); +} + +/*! + * @brief norm (magnitude) of vec4 + * + * @param[in] v vector + * + * @return norm + */ +CGLM_INLINE +float +glms_vec4_norm(vec4s v) { + return glm_vec4_norm(v.raw); +} + +/*! + * @brief L1 norm of vec4 + * Also known as Manhattan Distance or Taxicab norm. + * L1 Norm is the sum of the magnitudes of the vectors in a space. + * It is calculated as the sum of the absolute values of the vector components. + * In this norm, all the components of the vector are weighted equally. + * + * This computes: + * R = |v[0]| + |v[1]| + |v[2]| + |v[3]| + * + * @param[in] v vector + * + * @return L1 norm + */ +CGLM_INLINE +float +glms_vec4_norm_one(vec4s v) { + return glm_vec4_norm_one(v.raw); +} + +/*! + * @brief Infinity norm of vec4 + * Also known as Maximum norm. + * Infinity Norm is the largest magnitude among each element of a vector. + * It is calculated as the maximum of the absolute values of the vector components. + * + * This computes: + * inf norm = max(|v[0]|, |v[1]|, |v[2]|, |v[3]|) + * + * @param[in] v vector + * + * @return Infinity norm + */ +CGLM_INLINE +float +glms_vec4_norm_inf(vec4s v) { + return glm_vec4_norm_inf(v.raw); +} + +/*! + * @brief add b vector to a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_add(vec4s a, vec4s b) { + vec4s r; + glm_vec4_add(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + vec(s)) + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_adds(vec4s v, float s) { + vec4s r; + glm_vec4_adds(v.raw, s, r.raw); + return r; +} + +/*! + * @brief subtract b vector from a vector store result in dest (d = a - b) + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_sub(vec4s a, vec4s b) { + vec4s r; + glm_vec4_sub(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - vec(s)) + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_subs(vec4s v, float s) { + vec4s r; + glm_vec4_subs(v.raw, s, r.raw); + return r; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a vector1 + * @param b vector2 + * @returns dest = (a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]) + */ +CGLM_INLINE +vec4s +glms_vec4_mul(vec4s a, vec4s b) { + vec4s r; + glm_vec4_mul(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief multiply/scale vec4 vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_scale(vec4s v, float s) { + vec4s r; + glm_vec4_scale(v.raw, s, r.raw); + return r; +} + +/*! + * @brief make vec4 vector scale as specified: result = unit(v) * s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_scale_as(vec4s v, float s) { + vec4s r; + glm_vec4_scale_as(v.raw, s, r.raw); + return r; +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns result = (a[0]/b[0], a[1]/b[1], a[2]/b[2], a[3]/b[3]) + */ +CGLM_INLINE +vec4s +glms_vec4_div(vec4s a, vec4s b) { + vec4s r; + glm_vec4_div(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief div vec4 vector with scalar: d = v / s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +vec4s +glms_vec4_divs(vec4s v, float s) { + vec4s r; + glm_vec4_divs(v.raw, s, r.raw); + return r; +} + +/*! + * @brief add two vectors and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a + b) + */ +CGLM_INLINE +vec4s +glms_vec4_addadd(vec4s a, vec4s b, vec4s dest) { + glm_vec4_addadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief sub two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a - b) + */ +CGLM_INLINE +vec4s +glms_vec4_subadd(vec4s a, vec4s b, vec4s dest) { + glm_vec4_subadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief mul two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += (a * b) + */ +CGLM_INLINE +vec4s +glms_vec4_muladd(vec4s a, vec4s b, vec4s dest) { + glm_vec4_muladd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief mul vector with scalar and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector + * @param[in] s scalar + * @returns dest += (a * b) + */ +CGLM_INLINE +vec4s +glms_vec4_muladds(vec4s a, float s, vec4s dest) { + glm_vec4_muladds(a.raw, s, dest.raw); + return dest; +} + +/*! + * @brief add max of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += max(a, b) + */ +CGLM_INLINE +vec4s +glms_vec4_maxadd(vec4s a, vec4s b, vec4s dest) { + glm_vec4_maxadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief add min of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns dest += min(a, b) + */ +CGLM_INLINE +vec4s +glms_vec4_minadd(vec4s a, vec4s b, vec4s dest) { + glm_vec4_minadd(a.raw, b.raw, dest.raw); + return dest; +} + +/*! + * @brief negate vector components and store result in dest + * + * @param[in] v vector + * @returns result vector + */ +CGLM_INLINE +vec4s +glms_vec4_negate(vec4s v) { + glm_vec4_negate(v.raw); + return v; +} + +/*! + * @brief normalize vec4 and store result in same vec + * + * @param[in] v vector + * @returns normalized vector + */ +CGLM_INLINE +vec4s +glms_vec4_normalize(vec4s v) { + glm_vec4_normalize(v.raw); + return v; +} + +/** + * @brief distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns distance + */ +CGLM_INLINE +float +glms_vec4_distance(vec4s a, vec4s b) { + return glm_vec4_distance(a.raw, b.raw); +} + +/** + * @brief squared distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns squared distance + */ +CGLM_INLINE +float +glms_vec4_distance2(vec4s a, vec4s b) { + return glm_vec4_distance2(a.raw, b.raw); +} + +/*! + * @brief max values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_maxv(vec4s a, vec4s b) { + vec4s r; + glm_vec4_maxv(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief min values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_minv(vec4s a, vec4s b) { + vec4s r; + glm_vec4_minv(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief clamp vector's individual members between min and max values + * + * @param[in] v vector + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + * @returns clamped vector + */ +CGLM_INLINE +vec4s +glms_vec4_clamp(vec4s v, float minVal, float maxVal) { + glm_vec4_clamp(v.raw, minVal, maxVal); + return v; +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_lerp(vec4s from, vec4s to, float t) { + vec4s r; + glm_vec4_lerp(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief linear interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_lerpc(vec4s from, vec4s to, float t) { + vec4s r; + glm_vec4_lerpc(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_mix(vec4s from, vec4s to, float t) { + vec4s r; + glm_vec4_mix(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief linear interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_mixc(vec4s from, vec4s to, float t) { + vec4s r; + glm_vec4_mixc(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief threshold function (unidimensional) + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @returns 0.0 if x < edge, else 1.0 + */ +CGLM_INLINE +vec4s +glms_vec4_step_uni(float edge, vec4s x) { + vec4s r; + glm_vec4_step_uni(edge, x.raw, r.raw); + return r; +} + +/*! + * @brief threshold function + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @returns 0.0 if x < edge, else 1.0 + */ +CGLM_INLINE +vec4s +glms_vec4_step(vec4s edge, vec4s x) { + vec4s r; + glm_vec4_step(edge.raw, x.raw, r.raw); + return r; +} + +/*! + * @brief threshold function with a smooth transition (unidimensional) + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x value to test against threshold + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_smoothstep_uni(float edge0, float edge1, vec4s x) { + vec4s r; + glm_vec4_smoothstep_uni(edge0, edge1, x.raw, r.raw); + return r; +} + +/*! + * @brief threshold function with a smooth transition + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x value to test against threshold + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_smoothstep(vec4s edge0, vec4s edge1, vec4s x) { + vec4s r; + glm_vec4_smoothstep(edge0.raw, edge1.raw, x.raw, r.raw); + return r; +} + +/*! + * @brief smooth Hermite interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_smoothinterp(vec4s from, vec4s to, float t) { + vec4s r; + glm_vec4_smoothinterp(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief smooth Hermite interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_smoothinterpc(vec4s from, vec4s to, float t) { + vec4s r; + glm_vec4_smoothinterpc(from.raw, to.raw, t, r.raw); + return r; +} + +/*! + * @brief helper to fill vec4 as [S^3, S^2, S, 1] + * + * @param[in] s parameter + * @returns destination + */ +CGLM_INLINE +vec4s +glms_vec4_cubic(float s) { + vec4s r; + glm_vec4_cubic(s, r.raw); + return r; +} + +/*! + * @brief swizzle vector components + * + * you can use existin masks e.g. GLM_XXXX, GLM_WZYX + * + * @param[in] v source + * @param[in] mask mask + * @returns swizzled vector + */ +CGLM_INLINE +vec4s +glms_vec4_swizzle(vec4s v, int mask) { + vec4s dest; + glm_vec4_swizzle(v.raw, mask, dest.raw); + return dest; +} + +#endif /* cglms_vec4s_h */ diff --git a/lib/cglm/include/cglm/types-struct.h b/lib/cglm/include/cglm/types-struct.h new file mode 100644 index 0000000..1d91097 --- /dev/null +++ b/lib/cglm/include/cglm/types-struct.h @@ -0,0 +1,218 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_types_struct_h +#define cglm_types_struct_h + +#include "types.h" + +/* + * Anonymous structs are available since C11, but we'd like to be compatible + * with C99 and C89 too. So let's figure out if we should be using them or not. + * It's simply a convenience feature, you can e.g. build the library with + * anonymous structs and your application without them and they'll still be + * compatible, cglm doesn't use the anonymous structs internally. + */ +#ifndef CGLM_USE_ANONYMOUS_STRUCT + /* If the user doesn't explicitly specify if they want anonymous structs or + * not, then we'll try to intuit an appropriate choice. */ +# if defined(CGLM_NO_ANONYMOUS_STRUCT) + /* The user has defined CGLM_NO_ANONYMOUS_STRUCT. This used to be the + * only #define governing the use of anonymous structs, so for backward + * compatibility, we still honor that choice and disable them. */ +# define CGLM_USE_ANONYMOUS_STRUCT 0 +# elif __STDC_VERSION__ >= 20112L || defined(_MSVC_VER) + /* We're compiling for C11 or this is the MSVC compiler. In either + * case, anonymous structs are available, so use them. */ +# define CGLM_USE_ANONYMOUS_STRUCT 1 +# elif defined(_MSC_VER) && (_MSC_VER >= 1900) /* Visual Studio 2015 */ + /* We can support anonymous structs + * since Visual Studio 2015 or 2017 (1910) maybe? */ +# define CGLM_USE_ANONYMOUS_STRUCT 1 +# else + /* Otherwise, we're presumably building for C99 or C89 and can't rely + * on anonymous structs being available. Turn them off. */ +# define CGLM_USE_ANONYMOUS_STRUCT 0 +# endif +#endif + +typedef union vec2s { + vec2 raw; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + float x; + float y; + }; + + struct { + float r; + float i; + }; + + struct { + float u; + float v; + }; + + struct { + float s; + float t; + }; +#endif +} vec2s; + +typedef union vec3s { + vec3 raw; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + float x; + float y; + float z; + }; + + struct { + float r; + float g; + float b; + }; +#endif +} vec3s; + +typedef union ivec2s { + ivec2 raw; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + int x; + int y; + }; + + struct { + int r; + int i; + }; + + struct { + int u; + int v; + }; + + struct { + int s; + int t; + }; +#endif +} ivec2s; + +typedef union ivec3s { + ivec3 raw; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + int x; + int y; + int z; + }; + + struct { + int r; + int g; + int b; + }; +#endif +} ivec3s; + +typedef union ivec4s { + ivec4 raw; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + int x; + int y; + int z; + int w; + }; + + struct { + int r; + int g; + int b; + int a; + }; +#endif +} ivec4s; + +typedef union CGLM_ALIGN_IF(16) vec4s { + vec4 raw; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + float x; + float y; + float z; + float w; + }; + + struct { + float r; + float g; + float b; + float a; + }; +#endif +} vec4s; + +typedef union CGLM_ALIGN_IF(16) versors { + vec4 raw; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + float x; + float y; + float z; + float w; + }; + + struct { + vec3s imag; + float real; + }; +#endif +} versors; + +typedef union mat2s { + mat2 raw; + vec2s col[2]; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + float m00, m01; + float m10, m11; + }; +#endif +} mat2s; + +typedef union mat3s { + mat3 raw; + vec3s col[3]; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + float m00, m01, m02; + float m10, m11, m12; + float m20, m21, m22; + }; +#endif +} mat3s; + +typedef union CGLM_ALIGN_MAT mat4s { + mat4 raw; + vec4s col[4]; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + float m00, m01, m02, m03; + float m10, m11, m12, m13; + float m20, m21, m22, m23; + float m30, m31, m32, m33; + }; +#endif +} mat4s; + +#endif /* cglm_types_struct_h */ diff --git a/lib/cglm/include/cglm/types.h b/lib/cglm/include/cglm/types.h new file mode 100644 index 0000000..a671c5a --- /dev/null +++ b/lib/cglm/include/cglm/types.h @@ -0,0 +1,95 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_types_h +#define cglm_types_h + +#if defined(_MSC_VER) +/* do not use alignment for older visual studio versions */ +# if _MSC_VER < 1913 /* Visual Studio 2017 version 15.6 */ +# define CGLM_ALL_UNALIGNED +# define CGLM_ALIGN(X) /* no alignment */ +# else +# define CGLM_ALIGN(X) __declspec(align(X)) +# endif +#else +# define CGLM_ALIGN(X) __attribute((aligned(X))) +#endif + +#ifndef CGLM_ALL_UNALIGNED +# define CGLM_ALIGN_IF(X) CGLM_ALIGN(X) +#else +# define CGLM_ALIGN_IF(X) /* no alignment */ +#endif + +#ifdef __AVX__ +# define CGLM_ALIGN_MAT CGLM_ALIGN(32) +#else +# define CGLM_ALIGN_MAT CGLM_ALIGN(16) +#endif + +#ifdef __GNUC__ +# define CGLM_ASSUME_ALIGNED(expr, alignment) \ + __builtin_assume_aligned((expr), (alignment)) +#else +# define CGLM_ASSUME_ALIGNED(expr, alignment) (expr) +#endif + +#define CGLM_CASTPTR_ASSUME_ALIGNED(expr, type) \ + ((type*)CGLM_ASSUME_ALIGNED((expr), __alignof__(type))) + +typedef int ivec2[2]; +typedef int ivec3[3]; +typedef int ivec4[4]; + +typedef float vec2[2]; +typedef float vec3[3]; +typedef CGLM_ALIGN_IF(16) float vec4[4]; +typedef vec4 versor; /* |x, y, z, w| -> w is the last */ +typedef vec3 mat3[3]; +typedef CGLM_ALIGN_IF(16) vec2 mat2[2]; +typedef CGLM_ALIGN_MAT vec4 mat4[4]; + +/* + Important: cglm stores quaternion as [x, y, z, w] in memory since v0.4.0 + it was [w, x, y, z] before v0.4.0 ( v0.3.5 and earlier ). w is real part. +*/ + +#define GLM_E 2.71828182845904523536028747135266250 /* e */ +#define GLM_LOG2E 1.44269504088896340735992468100189214 /* log2(e) */ +#define GLM_LOG10E 0.434294481903251827651128918916605082 /* log10(e) */ +#define GLM_LN2 0.693147180559945309417232121458176568 /* loge(2) */ +#define GLM_LN10 2.30258509299404568401799145468436421 /* loge(10) */ +#define GLM_PI 3.14159265358979323846264338327950288 /* pi */ +#define GLM_PI_2 1.57079632679489661923132169163975144 /* pi/2 */ +#define GLM_PI_4 0.785398163397448309615660845819875721 /* pi/4 */ +#define GLM_1_PI 0.318309886183790671537767526745028724 /* 1/pi */ +#define GLM_2_PI 0.636619772367581343075535053490057448 /* 2/pi */ +#define GLM_2_SQRTPI 1.12837916709551257389615890312154517 /* 2/sqrt(pi) */ +#define GLM_SQRT2 1.41421356237309504880168872420969808 /* sqrt(2) */ +#define GLM_SQRT1_2 0.707106781186547524400844362104849039 /* 1/sqrt(2) */ + +#define GLM_Ef ((float)GLM_E) +#define GLM_LOG2Ef ((float)GLM_LOG2E) +#define GLM_LOG10Ef ((float)GLM_LOG10E) +#define GLM_LN2f ((float)GLM_LN2) +#define GLM_LN10f ((float)GLM_LN10) +#define GLM_PIf ((float)GLM_PI) +#define GLM_PI_2f ((float)GLM_PI_2) +#define GLM_PI_4f ((float)GLM_PI_4) +#define GLM_1_PIf ((float)GLM_1_PI) +#define GLM_2_PIf ((float)GLM_2_PI) +#define GLM_2_SQRTPIf ((float)GLM_2_SQRTPI) +#define GLM_SQRT2f ((float)GLM_SQRT2) +#define GLM_SQRT1_2f ((float)GLM_SQRT1_2) + +/* DEPRECATED! use GLM_PI and friends */ +#define CGLM_PI GLM_PIf +#define CGLM_PI_2 GLM_PI_2f +#define CGLM_PI_4 GLM_PI_4f + +#endif /* cglm_types_h */ diff --git a/lib/cglm/include/cglm/util.h b/lib/cglm/include/cglm/util.h new file mode 100644 index 0000000..53b1ed5 --- /dev/null +++ b/lib/cglm/include/cglm/util.h @@ -0,0 +1,343 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE int glm_sign(int val); + CGLM_INLINE float glm_signf(float val); + CGLM_INLINE float glm_rad(float deg); + CGLM_INLINE float glm_deg(float rad); + CGLM_INLINE void glm_make_rad(float *deg); + CGLM_INLINE void glm_make_deg(float *rad); + CGLM_INLINE float glm_pow2(float x); + CGLM_INLINE float glm_min(float a, float b); + CGLM_INLINE float glm_max(float a, float b); + CGLM_INLINE float glm_clamp(float val, float minVal, float maxVal); + CGLM_INLINE float glm_clamp_zo(float val, float minVal, float maxVal); + CGLM_INLINE float glm_lerp(float from, float to, float t); + CGLM_INLINE float glm_lerpc(float from, float to, float t); + CGLM_INLINE float glm_step(float edge, float x); + CGLM_INLINE float glm_smooth(float t); + CGLM_INLINE float glm_smoothstep(float edge0, float edge1, float x); + CGLM_INLINE float glm_smoothinterp(float from, float to, float t); + CGLM_INLINE float glm_smoothinterpc(float from, float to, float t); + CGLM_INLINE bool glm_eq(float a, float b); + CGLM_INLINE float glm_percent(float from, float to, float current); + CGLM_INLINE float glm_percentc(float from, float to, float current); + */ + +#ifndef cglm_util_h +#define cglm_util_h + +#include "common.h" + +#define GLM_MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) +#define GLM_MAX(X, Y) (((X) > (Y)) ? (X) : (Y)) + +/*! + * @brief get sign of 32 bit integer as +1, -1, 0 + * + * Important: It returns 0 for zero input + * + * @param val integer value + */ +CGLM_INLINE +int +glm_sign(int val) { + return ((val >> 31) - (-val >> 31)); +} + +/*! + * @brief get sign of 32 bit float as +1, -1, 0 + * + * Important: It returns 0 for zero/NaN input + * + * @param val float value + */ +CGLM_INLINE +float +glm_signf(float val) { + return (float)((val > 0.0f) - (val < 0.0f)); +} + +/*! + * @brief convert degree to radians + * + * @param[in] deg angle in degrees + */ +CGLM_INLINE +float +glm_rad(float deg) { + return deg * GLM_PIf / 180.0f; +} + +/*! + * @brief convert radians to degree + * + * @param[in] rad angle in radians + */ +CGLM_INLINE +float +glm_deg(float rad) { + return rad * 180.0f / GLM_PIf; +} + +/*! + * @brief convert exsisting degree to radians. this will override degrees value + * + * @param[in, out] deg pointer to angle in degrees + */ +CGLM_INLINE +void +glm_make_rad(float *deg) { + *deg = *deg * GLM_PIf / 180.0f; +} + +/*! + * @brief convert exsisting radians to degree. this will override radians value + * + * @param[in, out] rad pointer to angle in radians + */ +CGLM_INLINE +void +glm_make_deg(float *rad) { + *rad = *rad * 180.0f / GLM_PIf; +} + +/*! + * @brief multiplies given parameter with itself = x * x or powf(x, 2) + * + * @param[in] x x + */ +CGLM_INLINE +float +glm_pow2(float x) { + return x * x; +} + +/*! + * @brief find minimum of given two values + * + * @param[in] a number 1 + * @param[in] b number 2 + */ +CGLM_INLINE +float +glm_min(float a, float b) { + if (a < b) + return a; + return b; +} + +/*! + * @brief find maximum of given two values + * + * @param[in] a number 1 + * @param[in] b number 2 + */ +CGLM_INLINE +float +glm_max(float a, float b) { + if (a > b) + return a; + return b; +} + +/*! + * @brief clamp a number between min and max + * + * @param[in] val value to clamp + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + */ +CGLM_INLINE +float +glm_clamp(float val, float minVal, float maxVal) { + return glm_min(glm_max(val, minVal), maxVal); +} + +/*! + * @brief clamp a number to zero and one + * + * @param[in] val value to clamp + */ +CGLM_INLINE +float +glm_clamp_zo(float val) { + return glm_clamp(val, 0.0f, 1.0f); +} + +/*! + * @brief linear interpolation between two numbers + * + * formula: from + t * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + */ +CGLM_INLINE +float +glm_lerp(float from, float to, float t) { + return from + t * (to - from); +} + +/*! + * @brief clamped linear interpolation between two numbers + * + * formula: from + t * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + */ +CGLM_INLINE +float +glm_lerpc(float from, float to, float t) { + return glm_lerp(from, to, glm_clamp_zo(t)); +} + +/*! + * @brief threshold function + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @return returns 0.0 if x < edge, else 1.0 + */ +CGLM_INLINE +float +glm_step(float edge, float x) { + /* branching - no type conversion */ + return (x < edge) ? 0.0f : 1.0f; + /* + * An alternative implementation without branching + * but with type conversion could be: + * return !(x < edge); + */ +} + +/*! + * @brief smooth Hermite interpolation + * + * formula: t^2 * (3-2t) + * + * @param[in] t interpolant (amount) + */ +CGLM_INLINE +float +glm_smooth(float t) { + return t * t * (3.0f - 2.0f * t); +} + +/*! + * @brief threshold function with a smooth transition (according to OpenCL specs) + * + * formula: t^2 * (3-2t) + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x interpolant (amount) + */ +CGLM_INLINE +float +glm_smoothstep(float edge0, float edge1, float x) { + float t; + t = glm_clamp_zo((x - edge0) / (edge1 - edge0)); + return glm_smooth(t); +} + +/*! + * @brief smoothstep interpolation between two numbers + * + * formula: from + smoothstep(t) * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + */ +CGLM_INLINE +float +glm_smoothinterp(float from, float to, float t) { + return from + glm_smooth(t) * (to - from); +} + +/*! + * @brief clamped smoothstep interpolation between two numbers + * + * formula: from + smoothstep(t) * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + */ +CGLM_INLINE +float +glm_smoothinterpc(float from, float to, float t) { + return glm_smoothinterp(from, to, glm_clamp_zo(t)); +} + +/*! + * @brief check if two float equal with using EPSILON + * + * @param[in] a a + * @param[in] b b + */ +CGLM_INLINE +bool +glm_eq(float a, float b) { + return fabsf(a - b) <= GLM_FLT_EPSILON; +} + +/*! + * @brief percentage of current value between start and end value + * + * maybe fraction could be alternative name. + * + * @param[in] from from value + * @param[in] to to value + * @param[in] current current value + */ +CGLM_INLINE +float +glm_percent(float from, float to, float current) { + float t; + + if ((t = to - from) == 0.0f) + return 1.0f; + + return (current - from) / t; +} + +/*! + * @brief clamped percentage of current value between start and end value + * + * @param[in] from from value + * @param[in] to to value + * @param[in] current current value + */ +CGLM_INLINE +float +glm_percentc(float from, float to, float current) { + return glm_clamp_zo(glm_percent(from, to, current)); +} + +/*! +* @brief swap two float values +* +* @param[in] a float value 1 (pointer) +* @param[in] b float value 2 (pointer) +*/ +CGLM_INLINE +void +glm_swapf(float * __restrict a, float * __restrict b) { + float t; + t = *a; + *a = *b; + *b = t; +} + +#endif /* cglm_util_h */ diff --git a/lib/cglm/include/cglm/vec2-ext.h b/lib/cglm/include/cglm/vec2-ext.h new file mode 100644 index 0000000..388c5e2 --- /dev/null +++ b/lib/cglm/include/cglm/vec2-ext.h @@ -0,0 +1,241 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Functions: + CGLM_INLINE void glm_vec2_fill(vec2 v, float val) + CGLM_INLINE bool glm_vec2_eq(vec2 v, float val); + CGLM_INLINE bool glm_vec2_eq_eps(vec2 v, float val); + CGLM_INLINE bool glm_vec2_eq_all(vec2 v); + CGLM_INLINE bool glm_vec2_eqv(vec2 a, vec2 b); + CGLM_INLINE bool glm_vec2_eqv_eps(vec2 a, vec2 b); + CGLM_INLINE float glm_vec2_max(vec2 v); + CGLM_INLINE float glm_vec2_min(vec2 v); + CGLM_INLINE bool glm_vec2_isnan(vec2 v); + CGLM_INLINE bool glm_vec2_isinf(vec2 v); + CGLM_INLINE bool glm_vec2_isvalid(vec2 v); + CGLM_INLINE void glm_vec2_sign(vec2 v, vec2 dest); + CGLM_INLINE void glm_vec2_sqrt(vec2 v, vec2 dest); + CGLM_INLINE void glm_vec2_complex_mul(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_complex_div(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_complex_conjugate(vec2 a, vec2 dest) + */ + +#ifndef cglm_vec2_ext_h +#define cglm_vec2_ext_h + +#include "common.h" +#include "util.h" + +/*! + * @brief fill a vector with specified value + * + * @param[out] v dest + * @param[in] val value + */ +CGLM_INLINE +void +glm_vec2_fill(vec2 v, float val) { + v[0] = v[1] = val; +} + +/*! + * @brief check if vector is equal to value (without epsilon) + * + * @param[in] v vector + * @param[in] val value + */ +CGLM_INLINE +bool +glm_vec2_eq(vec2 v, float val) { + return v[0] == val && v[0] == v[1]; +} + +/*! + * @brief check if vector is equal to value (with epsilon) + * + * @param[in] v vector + * @param[in] val value + */ +CGLM_INLINE +bool +glm_vec2_eq_eps(vec2 v, float val) { + return fabsf(v[0] - val) <= GLM_FLT_EPSILON + && fabsf(v[1] - val) <= GLM_FLT_EPSILON; +} + +/*! + * @brief check if vectors members are equal (without epsilon) + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec2_eq_all(vec2 v) { + return glm_vec2_eq_eps(v, v[0]); +} + +/*! + * @brief check if vector is equal to another (without epsilon) + * + * @param[in] a vector + * @param[in] b vector + */ +CGLM_INLINE +bool +glm_vec2_eqv(vec2 a, vec2 b) { + return a[0] == b[0] && a[1] == b[1]; +} + +/*! + * @brief check if vector is equal to another (with epsilon) + * + * @param[in] a vector + * @param[in] b vector + */ +CGLM_INLINE +bool +glm_vec2_eqv_eps(vec2 a, vec2 b) { + return fabsf(a[0] - b[0]) <= GLM_FLT_EPSILON + && fabsf(a[1] - b[1]) <= GLM_FLT_EPSILON; +} + +/*! + * @brief max value of vector + * + * @param[in] v vector + */ +CGLM_INLINE +float +glm_vec2_max(vec2 v) { + return glm_max(v[0], v[1]); +} + +/*! + * @brief min value of vector + * + * @param[in] v vector + */ +CGLM_INLINE +float +glm_vec2_min(vec2 v) { + return glm_min(v[0], v[1]); +} + +/*! + * @brief check if all items are NaN (not a number) + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec2_isnan(vec2 v) { + return isnan(v[0]) || isnan(v[1]); +} + +/*! + * @brief check if all items are INFINITY + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec2_isinf(vec2 v) { + return isinf(v[0]) || isinf(v[1]); +} + +/*! + * @brief check if all items are valid number + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec2_isvalid(vec2 v) { + return !glm_vec2_isnan(v) && !glm_vec2_isinf(v); +} + +/*! + * @brief get sign of 32 bit float as +1, -1, 0 + * + * Important: It returns 0 for zero/NaN input + * + * @param v vector + */ +CGLM_INLINE +void +glm_vec2_sign(vec2 v, vec2 dest) { + dest[0] = glm_signf(v[0]); + dest[1] = glm_signf(v[1]); +} + +/*! + * @brief square root of each vector item + * + * @param[in] v vector + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec2_sqrt(vec2 v, vec2 dest) { + dest[0] = sqrtf(v[0]); + dest[1] = sqrtf(v[1]); +} + +/*! + * @brief treat vectors as complex numbers and multiply them as such. + * + * @param[in] a left number + * @param[in] b right number + * @param[out] dest destination number + */ +CGLM_INLINE +void +glm_vec2_complex_mul(vec2 a, vec2 b, vec2 dest) { + float tr, ti; + tr = a[0] * b[0] - a[1] * b[1]; + ti = a[0] * b[1] + a[1] * b[0]; + dest[0] = tr; + dest[1] = ti; +} + +/*! + * @brief treat vectors as complex numbers and divide them as such. + * + * @param[in] a left number (numerator) + * @param[in] b right number (denominator) + * @param[out] dest destination number + */ +CGLM_INLINE +void +glm_vec2_complex_div(vec2 a, vec2 b, vec2 dest) { + float tr, ti; + float const ibnorm2 = 1.0f / (b[0] * b[0] + b[1] * b[1]); + tr = ibnorm2 * (a[0] * b[0] + a[1] * b[1]); + ti = ibnorm2 * (a[1] * b[0] - a[0] * b[1]); + dest[0] = tr; + dest[1] = ti; +} + +/*! + * @brief treat the vector as a complex number and conjugate it as such. + * + * @param[in] a the number + * @param[out] dest destination number + */ +CGLM_INLINE +void +glm_vec2_complex_conjugate(vec2 a, vec2 dest) { + dest[0] = a[0]; + dest[1] = -a[1]; +} + + +#endif /* cglm_vec2_ext_h */ diff --git a/lib/cglm/include/cglm/vec2.h b/lib/cglm/include/cglm/vec2.h new file mode 100644 index 0000000..73ecea9 --- /dev/null +++ b/lib/cglm/include/cglm/vec2.h @@ -0,0 +1,585 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_VEC2_ONE_INIT + GLM_VEC2_ZERO_INIT + GLM_VEC2_ONE + GLM_VEC2_ZERO + + Functions: + CGLM_INLINE void glm_vec2(float * __restrict v, vec2 dest) + CGLM_INLINE void glm_vec2_copy(vec2 a, vec2 dest) + CGLM_INLINE void glm_vec2_zero(vec2 v) + CGLM_INLINE void glm_vec2_one(vec2 v) + CGLM_INLINE float glm_vec2_dot(vec2 a, vec2 b) + CGLM_INLINE float glm_vec2_cross(vec2 a, vec2 b) + CGLM_INLINE float glm_vec2_norm2(vec2 v) + CGLM_INLINE float glm_vec2_norm(vec2 vec) + CGLM_INLINE void glm_vec2_add(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_adds(vec2 v, float s, vec2 dest) + CGLM_INLINE void glm_vec2_sub(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_subs(vec2 v, float s, vec2 dest) + CGLM_INLINE void glm_vec2_mul(vec2 a, vec2 b, vec2 d) + CGLM_INLINE void glm_vec2_scale(vec2 v, float s, vec2 dest) + CGLM_INLINE void glm_vec2_scale_as(vec2 v, float s, vec2 dest) + CGLM_INLINE void glm_vec2_div(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_divs(vec2 v, float s, vec2 dest) + CGLM_INLINE void glm_vec2_addadd(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_subadd(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_muladd(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_muladds(vec2 a, float s, vec2 dest) + CGLM_INLINE void glm_vec2_maxadd(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_minadd(vec2 a, vec2 b, vec2 dest) + CGLM_INLINE void glm_vec2_negate_to(vec2 v, vec2 dest) + CGLM_INLINE void glm_vec2_negate(vec2 v) + CGLM_INLINE void glm_vec2_normalize(vec2 v) + CGLM_INLINE void glm_vec2_normalize_to(vec2 vec, vec2 dest) + CGLM_INLINE void glm_vec2_rotate(vec2 v, float angle, vec2 dest) + CGLM_INLINE float glm_vec2_distance2(vec2 a, vec2 b) + CGLM_INLINE float glm_vec2_distance(vec2 a, vec2 b) + CGLM_INLINE void glm_vec2_maxv(vec2 v1, vec2 v2, vec2 dest) + CGLM_INLINE void glm_vec2_minv(vec2 v1, vec2 v2, vec2 dest) + CGLM_INLINE void glm_vec2_clamp(vec2 v, float minVal, float maxVal) + CGLM_INLINE void glm_vec2_lerp(vec2 from, vec2 to, float t, vec2 dest) + + */ + +#ifndef cglm_vec2_h +#define cglm_vec2_h + +#include "common.h" +#include "util.h" +#include "vec2-ext.h" + +#define GLM_VEC2_ONE_INIT {1.0f, 1.0f} +#define GLM_VEC2_ZERO_INIT {0.0f, 0.0f} + +#define GLM_VEC2_ONE ((vec2)GLM_VEC2_ONE_INIT) +#define GLM_VEC2_ZERO ((vec2)GLM_VEC2_ZERO_INIT) + +/*! + * @brief init vec2 using another vector + * + * @param[in] v a vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec2(float * __restrict v, vec2 dest) { + dest[0] = v[0]; + dest[1] = v[1]; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] a source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec2_copy(vec2 a, vec2 dest) { + dest[0] = a[0]; + dest[1] = a[1]; +} + +/*! + * @brief make vector zero + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec2_zero(vec2 v) { + v[0] = v[1] = 0.0f; +} + +/*! + * @brief make vector one + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec2_one(vec2 v) { + v[0] = v[1] = 1.0f; +} + +/*! + * @brief vec2 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +float +glm_vec2_dot(vec2 a, vec2 b) { + return a[0] * b[0] + a[1] * b[1]; +} + +/*! + * @brief vec2 cross product + * + * REF: http://allenchou.net/2013/07/cross-product-of-2d-vectors/ + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return Z component of cross product + */ +CGLM_INLINE +float +glm_vec2_cross(vec2 a, vec2 b) { + /* just calculate the z-component */ + return a[0] * b[1] - a[1] * b[0]; +} + +/*! + * @brief norm * norm (magnitude) of vec + * + * we can use this func instead of calling norm * norm, because it would call + * sqrtf fuction twice but with this func we can avoid func call, maybe this is + * not good name for this func + * + * @param[in] v vector + * + * @return norm * norm + */ +CGLM_INLINE +float +glm_vec2_norm2(vec2 v) { + return glm_vec2_dot(v, v); +} + +/*! + * @brief norm (magnitude) of vec2 + * + * @param[in] vec vector + * + * @return norm + */ +CGLM_INLINE +float +glm_vec2_norm(vec2 vec) { + return sqrtf(glm_vec2_norm2(vec)); +} + +/*! + * @brief add a vector to b vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec2_add(vec2 a, vec2 b, vec2 dest) { + dest[0] = a[0] + b[0]; + dest[1] = a[1] + b[1]; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + s) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec2_adds(vec2 v, float s, vec2 dest) { + dest[0] = v[0] + s; + dest[1] = v[1] + s; +} + +/*! + * @brief subtract b vector from a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec2_sub(vec2 a, vec2 b, vec2 dest) { + dest[0] = a[0] - b[0]; + dest[1] = a[1] - b[1]; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - s) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec2_subs(vec2 v, float s, vec2 dest) { + dest[0] = v[0] - s; + dest[1] = v[1] - s; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a v1 + * @param b v2 + * @param dest v3 = (a[0] * b[0], a[1] * b[1]) + */ +CGLM_INLINE +void +glm_vec2_mul(vec2 a, vec2 b, vec2 dest) { + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; +} + +/*! + * @brief multiply/scale vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec2_scale(vec2 v, float s, vec2 dest) { + dest[0] = v[0] * s; + dest[1] = v[1] * s; +} + +/*! + * @brief scale as vector specified: result = unit(v) * s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec2_scale_as(vec2 v, float s, vec2 dest) { + float norm; + norm = glm_vec2_norm(v); + + if (norm == 0.0f) { + glm_vec2_zero(dest); + return; + } + + glm_vec2_scale(v, s / norm, dest); +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest result = (a[0]/b[0], a[1]/b[1]) + */ +CGLM_INLINE +void +glm_vec2_div(vec2 a, vec2 b, vec2 dest) { + dest[0] = a[0] / b[0]; + dest[1] = a[1] / b[1]; +} + +/*! + * @brief div vector with scalar: d = v / s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest result = (a[0]/s, a[1]/s) + */ +CGLM_INLINE +void +glm_vec2_divs(vec2 v, float s, vec2 dest) { + dest[0] = v[0] / s; + dest[1] = v[1] / s; +} + +/*! + * @brief add two vectors and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a + b) + */ +CGLM_INLINE +void +glm_vec2_addadd(vec2 a, vec2 b, vec2 dest) { + dest[0] += a[0] + b[0]; + dest[1] += a[1] + b[1]; +} + +/*! + * @brief sub two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a + b) + */ +CGLM_INLINE +void +glm_vec2_subadd(vec2 a, vec2 b, vec2 dest) { + dest[0] += a[0] - b[0]; + dest[1] += a[1] - b[1]; +} + +/*! + * @brief mul two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a * b) + */ +CGLM_INLINE +void +glm_vec2_muladd(vec2 a, vec2 b, vec2 dest) { + dest[0] += a[0] * b[0]; + dest[1] += a[1] * b[1]; +} + +/*! + * @brief mul vector with scalar and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector + * @param[in] s scalar + * @param[out] dest dest += (a * b) + */ +CGLM_INLINE +void +glm_vec2_muladds(vec2 a, float s, vec2 dest) { + dest[0] += a[0] * s; + dest[1] += a[1] * s; +} + +/*! + * @brief add max of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += max(a, b) + */ +CGLM_INLINE +void +glm_vec2_maxadd(vec2 a, vec2 b, vec2 dest) { + dest[0] += glm_max(a[0], b[0]); + dest[1] += glm_max(a[1], b[1]); +} + +/*! + * @brief add min of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += min(a, b) + */ +CGLM_INLINE +void +glm_vec2_minadd(vec2 a, vec2 b, vec2 dest) { + dest[0] += glm_min(a[0], b[0]); + dest[1] += glm_min(a[1], b[1]); +} + +/*! + * @brief negate vector components and store result in dest + * + * @param[in] v vector + * @param[out] dest result vector + */ +CGLM_INLINE +void +glm_vec2_negate_to(vec2 v, vec2 dest) { + dest[0] = -v[0]; + dest[1] = -v[1]; +} + +/*! + * @brief negate vector components + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec2_negate(vec2 v) { + glm_vec2_negate_to(v, v); +} + +/*! + * @brief normalize vector and store result in same vec + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec2_normalize(vec2 v) { + float norm; + + norm = glm_vec2_norm(v); + + if (norm == 0.0f) { + v[0] = v[1] = 0.0f; + return; + } + + glm_vec2_scale(v, 1.0f / norm, v); +} + +/*! + * @brief normalize vector to dest + * + * @param[in] v source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec2_normalize_to(vec2 v, vec2 dest) { + float norm; + + norm = glm_vec2_norm(v); + + if (norm == 0.0f) { + glm_vec2_zero(dest); + return; + } + + glm_vec2_scale(v, 1.0f / norm, dest); +} + +/*! + * @brief rotate vec2 around origin by angle (CCW: counterclockwise) + * + * Formula: + * 𝑥2 = cos(a)𝑥1 − sin(a)𝑦1 + * 𝑦2 = sin(a)𝑥1 + cos(a)𝑦1 + * + * @param[in] v vector to rotate + * @param[in] angle angle by radians + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec2_rotate(vec2 v, float angle, vec2 dest) { + float c, s, x1, y1; + + c = cosf(angle); + s = sinf(angle); + + x1 = v[0]; + y1 = v[1]; + + dest[0] = c * x1 - s * y1; + dest[1] = s * x1 + c * y1; +} + +/** + * @brief squared distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns squared distance (distance * distance) + */ +CGLM_INLINE +float +glm_vec2_distance2(vec2 a, vec2 b) { + return glm_pow2(b[0] - a[0]) + glm_pow2(b[1] - a[1]); +} + +/** + * @brief distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns distance + */ +CGLM_INLINE +float +glm_vec2_distance(vec2 a, vec2 b) { + return sqrtf(glm_vec2_distance2(a, b)); +} + +/*! + * @brief max values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec2_maxv(vec2 a, vec2 b, vec2 dest) { + dest[0] = glm_max(a[0], b[0]); + dest[1] = glm_max(a[1], b[1]); +} + +/*! + * @brief min values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec2_minv(vec2 a, vec2 b, vec2 dest) { + dest[0] = glm_min(a[0], b[0]); + dest[1] = glm_min(a[1], b[1]); +} + +/*! + * @brief clamp vector's individual members between min and max values + * + * @param[in, out] v vector + * @param[in] minval minimum value + * @param[in] maxval maximum value + */ +CGLM_INLINE +void +glm_vec2_clamp(vec2 v, float minval, float maxval) { + v[0] = glm_clamp(v[0], minval, maxval); + v[1] = glm_clamp(v[1], minval, maxval); +} + +/*! + * @brief linear interpolation between two vector + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec2_lerp(vec2 from, vec2 to, float t, vec2 dest) { + vec2 s, v; + + /* from + s * (to - from) */ + glm_vec2_fill(s, glm_clamp_zo(t)); + glm_vec2_sub(to, from, v); + glm_vec2_mul(s, v, v); + glm_vec2_add(from, v, dest); +} + +#endif /* cglm_vec2_h */ diff --git a/lib/cglm/include/cglm/vec3-ext.h b/lib/cglm/include/cglm/vec3-ext.h new file mode 100644 index 0000000..802f4cb --- /dev/null +++ b/lib/cglm/include/cglm/vec3-ext.h @@ -0,0 +1,272 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/*! + * @brief SIMD like functions + */ + +/* + Functions: + CGLM_INLINE void glm_vec3_broadcast(float val, vec3 d); + CGLM_INLINE void glm_vec3_fill(vec3 v, float val); + CGLM_INLINE bool glm_vec3_eq(vec3 v, float val); + CGLM_INLINE bool glm_vec3_eq_eps(vec3 v, float val); + CGLM_INLINE bool glm_vec3_eq_all(vec3 v); + CGLM_INLINE bool glm_vec3_eqv(vec3 a, vec3 b); + CGLM_INLINE bool glm_vec3_eqv_eps(vec3 a, vec3 b); + CGLM_INLINE float glm_vec3_max(vec3 v); + CGLM_INLINE float glm_vec3_min(vec3 v); + CGLM_INLINE bool glm_vec3_isnan(vec3 v); + CGLM_INLINE bool glm_vec3_isinf(vec3 v); + CGLM_INLINE bool glm_vec3_isvalid(vec3 v); + CGLM_INLINE void glm_vec3_sign(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_abs(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_fract(vec3 v, vec3 dest); + CGLM_INLINE float glm_vec3_hadd(vec3 v); + CGLM_INLINE void glm_vec3_sqrt(vec3 v, vec3 dest); + */ + +#ifndef cglm_vec3_ext_h +#define cglm_vec3_ext_h + +#include "common.h" +#include "util.h" + +/*! + * @brief fill a vector with specified value + * + * @param[in] val value + * @param[out] d dest + */ +CGLM_INLINE +void +glm_vec3_broadcast(float val, vec3 d) { + d[0] = d[1] = d[2] = val; +} + +/*! + * @brief fill a vector with specified value + * + * @param[out] v dest + * @param[in] val value + */ +CGLM_INLINE +void +glm_vec3_fill(vec3 v, float val) { + v[0] = v[1] = v[2] = val; +} + +/*! + * @brief check if vector is equal to value (without epsilon) + * + * @param[in] v vector + * @param[in] val value + */ +CGLM_INLINE +bool +glm_vec3_eq(vec3 v, float val) { + return v[0] == val && v[0] == v[1] && v[0] == v[2]; +} + +/*! + * @brief check if vector is equal to value (with epsilon) + * + * @param[in] v vector + * @param[in] val value + */ +CGLM_INLINE +bool +glm_vec3_eq_eps(vec3 v, float val) { + return fabsf(v[0] - val) <= GLM_FLT_EPSILON + && fabsf(v[1] - val) <= GLM_FLT_EPSILON + && fabsf(v[2] - val) <= GLM_FLT_EPSILON; +} + +/*! + * @brief check if vectors members are equal (without epsilon) + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec3_eq_all(vec3 v) { + return glm_vec3_eq_eps(v, v[0]); +} + +/*! + * @brief check if vector is equal to another (without epsilon) + * + * @param[in] a vector + * @param[in] b vector + */ +CGLM_INLINE +bool +glm_vec3_eqv(vec3 a, vec3 b) { + return a[0] == b[0] + && a[1] == b[1] + && a[2] == b[2]; +} + +/*! + * @brief check if vector is equal to another (with epsilon) + * + * @param[in] a vector + * @param[in] b vector + */ +CGLM_INLINE +bool +glm_vec3_eqv_eps(vec3 a, vec3 b) { + return fabsf(a[0] - b[0]) <= GLM_FLT_EPSILON + && fabsf(a[1] - b[1]) <= GLM_FLT_EPSILON + && fabsf(a[2] - b[2]) <= GLM_FLT_EPSILON; +} + +/*! + * @brief max value of vector + * + * @param[in] v vector + */ +CGLM_INLINE +float +glm_vec3_max(vec3 v) { + float max; + + max = v[0]; + if (v[1] > max) + max = v[1]; + if (v[2] > max) + max = v[2]; + + return max; +} + +/*! + * @brief min value of vector + * + * @param[in] v vector + */ +CGLM_INLINE +float +glm_vec3_min(vec3 v) { + float min; + + min = v[0]; + if (v[1] < min) + min = v[1]; + if (v[2] < min) + min = v[2]; + + return min; +} + +/*! + * @brief check if all items are NaN (not a number) + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec3_isnan(vec3 v) { + return isnan(v[0]) || isnan(v[1]) || isnan(v[2]); +} + +/*! + * @brief check if all items are INFINITY + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec3_isinf(vec3 v) { + return isinf(v[0]) || isinf(v[1]) || isinf(v[2]); +} + +/*! + * @brief check if all items are valid number + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec3_isvalid(vec3 v) { + return !glm_vec3_isnan(v) && !glm_vec3_isinf(v); +} + +/*! + * @brief get sign of 32 bit float as +1, -1, 0 + * + * Important: It returns 0 for zero/NaN input + * + * @param v vector + */ +CGLM_INLINE +void +glm_vec3_sign(vec3 v, vec3 dest) { + dest[0] = glm_signf(v[0]); + dest[1] = glm_signf(v[1]); + dest[2] = glm_signf(v[2]); +} + +/*! + * @brief absolute value of each vector item + * + * @param[in] v vector + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_abs(vec3 v, vec3 dest) { + dest[0] = fabsf(v[0]); + dest[1] = fabsf(v[1]); + dest[2] = fabsf(v[2]); +} + +/*! + * @brief fractional part of each vector item + * + * @param[in] v vector + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_fract(vec3 v, vec3 dest) { + dest[0] = fminf(v[0] - floorf(v[0]), 0.999999940395355224609375f); + dest[1] = fminf(v[1] - floorf(v[1]), 0.999999940395355224609375f); + dest[2] = fminf(v[2] - floorf(v[2]), 0.999999940395355224609375f); +} + +/*! + * @brief vector reduction by summation + * @warning could overflow + * + * @param[in] v vector + * @return sum of all vector's elements + */ +CGLM_INLINE +float +glm_vec3_hadd(vec3 v) { + return v[0] + v[1] + v[2]; +} + +/*! + * @brief square root of each vector item + * + * @param[in] v vector + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_sqrt(vec3 v, vec3 dest) { + dest[0] = sqrtf(v[0]); + dest[1] = sqrtf(v[1]); + dest[2] = sqrtf(v[2]); +} + +#endif /* cglm_vec3_ext_h */ diff --git a/lib/cglm/include/cglm/vec3.h b/lib/cglm/include/cglm/vec3.h new file mode 100644 index 0000000..b9fff9c --- /dev/null +++ b/lib/cglm/include/cglm/vec3.h @@ -0,0 +1,1082 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_VEC3_ONE_INIT + GLM_VEC3_ZERO_INIT + GLM_VEC3_ONE + GLM_VEC3_ZERO + GLM_YUP + GLM_ZUP + GLM_XUP + + Functions: + CGLM_INLINE void glm_vec3(vec4 v4, vec3 dest); + CGLM_INLINE void glm_vec3_copy(vec3 a, vec3 dest); + CGLM_INLINE void glm_vec3_zero(vec3 v); + CGLM_INLINE void glm_vec3_one(vec3 v); + CGLM_INLINE float glm_vec3_dot(vec3 a, vec3 b); + CGLM_INLINE float glm_vec3_norm2(vec3 v); + CGLM_INLINE float glm_vec3_norm(vec3 v); + CGLM_INLINE float glm_vec3_norm_one(vec3 v); + CGLM_INLINE float glm_vec3_norm_inf(vec3 v); + CGLM_INLINE void glm_vec3_add(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_adds(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_sub(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_subs(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_mul(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_scale(vec3 v, float s, vec3 dest); + CGLM_INLINE void glm_vec3_scale_as(vec3 v, float s, vec3 dest); + CGLM_INLINE void glm_vec3_div(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_divs(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_addadd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_subadd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_muladd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_muladds(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_maxadd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_minadd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_flipsign(vec3 v); + CGLM_INLINE void glm_vec3_flipsign_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_negate_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_negate(vec3 v); + CGLM_INLINE void glm_vec3_inv(vec3 v); + CGLM_INLINE void glm_vec3_inv_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_normalize(vec3 v); + CGLM_INLINE void glm_vec3_normalize_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_cross(vec3 a, vec3 b, vec3 d); + CGLM_INLINE void glm_vec3_crossn(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE float glm_vec3_angle(vec3 a, vec3 b); + CGLM_INLINE void glm_vec3_rotate(vec3 v, float angle, vec3 axis); + CGLM_INLINE void glm_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_proj(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_center(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE float glm_vec3_distance(vec3 a, vec3 b); + CGLM_INLINE float glm_vec3_distance2(vec3 a, vec3 b); + CGLM_INLINE void glm_vec3_maxv(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_minv(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_ortho(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_clamp(vec3 v, float minVal, float maxVal); + CGLM_INLINE void glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest); + CGLM_INLINE void glm_vec3_lerpc(vec3 from, vec3 to, float t, vec3 dest); + CGLM_INLINE void glm_vec3_mix(vec3 from, vec3 to, float t, vec3 dest); + CGLM_INLINE void glm_vec3_mixc(vec3 from, vec3 to, float t, vec3 dest); + CGLM_INLINE void glm_vec3_step_uni(float edge, vec3 x, vec3 dest); + CGLM_INLINE void glm_vec3_step(vec3 edge, vec3 x, vec3 dest); + CGLM_INLINE void glm_vec3_smoothstep_uni(float edge0, float edge1, vec3 x, vec3 dest); + CGLM_INLINE void glm_vec3_smoothstep(vec3 edge0, vec3 edge1, vec3 x, vec3 dest); + CGLM_INLINE void glm_vec3_smoothinterp(vec3 from, vec3 to, float t, vec3 dest); + CGLM_INLINE void glm_vec3_smoothinterpc(vec3 from, vec3 to, float t, vec3 dest); + CGLM_INLINE void glm_vec3_swizzle(vec3 v, int mask, vec3 dest); + + Convenient: + CGLM_INLINE void glm_cross(vec3 a, vec3 b, vec3 d); + CGLM_INLINE float glm_dot(vec3 a, vec3 b); + CGLM_INLINE void glm_normalize(vec3 v); + CGLM_INLINE void glm_normalize_to(vec3 v, vec3 dest); + + DEPRECATED: + glm_vec3_dup + glm_vec3_flipsign + glm_vec3_flipsign_to + glm_vec3_inv + glm_vec3_inv_to + glm_vec3_mulv + */ + +#ifndef cglm_vec3_h +#define cglm_vec3_h + +#include "common.h" +#include "vec4.h" +#include "vec3-ext.h" +#include "util.h" + +/* DEPRECATED! use _copy, _ucopy versions */ +#define glm_vec3_dup(v, dest) glm_vec3_copy(v, dest) +#define glm_vec3_flipsign(v) glm_vec3_negate(v) +#define glm_vec3_flipsign_to(v, dest) glm_vec3_negate_to(v, dest) +#define glm_vec3_inv(v) glm_vec3_negate(v) +#define glm_vec3_inv_to(v, dest) glm_vec3_negate_to(v, dest) +#define glm_vec3_mulv(a, b, d) glm_vec3_mul(a, b, d) + +#define GLM_VEC3_ONE_INIT {1.0f, 1.0f, 1.0f} +#define GLM_VEC3_ZERO_INIT {0.0f, 0.0f, 0.0f} + +#define GLM_VEC3_ONE ((vec3)GLM_VEC3_ONE_INIT) +#define GLM_VEC3_ZERO ((vec3)GLM_VEC3_ZERO_INIT) + +#define GLM_YUP ((vec3){0.0f, 1.0f, 0.0f}) +#define GLM_ZUP ((vec3){0.0f, 0.0f, 1.0f}) +#define GLM_XUP ((vec3){1.0f, 0.0f, 0.0f}) +#define GLM_FORWARD ((vec3){0.0f, 0.0f, -1.0f}) + +#define GLM_XXX GLM_SHUFFLE3(0, 0, 0) +#define GLM_YYY GLM_SHUFFLE3(1, 1, 1) +#define GLM_ZZZ GLM_SHUFFLE3(2, 2, 2) +#define GLM_ZYX GLM_SHUFFLE3(0, 1, 2) + +/*! + * @brief init vec3 using vec4 + * + * @param[in] v4 vector4 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3(vec4 v4, vec3 dest) { + dest[0] = v4[0]; + dest[1] = v4[1]; + dest[2] = v4[2]; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] a source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_copy(vec3 a, vec3 dest) { + dest[0] = a[0]; + dest[1] = a[1]; + dest[2] = a[2]; +} + +/*! + * @brief make vector zero + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec3_zero(vec3 v) { + v[0] = v[1] = v[2] = 0.0f; +} + +/*! + * @brief make vector one + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec3_one(vec3 v) { + v[0] = v[1] = v[2] = 1.0f; +} + +/*! + * @brief vec3 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +float +glm_vec3_dot(vec3 a, vec3 b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} + +/*! + * @brief norm * norm (magnitude) of vec + * + * we can use this func instead of calling norm * norm, because it would call + * sqrtf fuction twice but with this func we can avoid func call, maybe this is + * not good name for this func + * + * @param[in] v vector + * + * @return norm * norm + */ +CGLM_INLINE +float +glm_vec3_norm2(vec3 v) { + return glm_vec3_dot(v, v); +} + +/*! + * @brief euclidean norm (magnitude), also called L2 norm + * this will give magnitude of vector in euclidean space + * + * @param[in] v vector + * + * @return norm + */ +CGLM_INLINE +float +glm_vec3_norm(vec3 v) { + return sqrtf(glm_vec3_norm2(v)); +} + +/*! + * @brief L1 norm of vec3 + * Also known as Manhattan Distance or Taxicab norm. + * L1 Norm is the sum of the magnitudes of the vectors in a space. + * It is calculated as the sum of the absolute values of the vector components. + * In this norm, all the components of the vector are weighted equally. + * + * This computes: + * R = |v[0]| + |v[1]| + |v[2]| + * + * @param[in] v vector + * + * @return L1 norm + */ +CGLM_INLINE +float +glm_vec3_norm_one(vec3 v) { + vec3 t; + glm_vec3_abs(v, t); + return glm_vec3_hadd(t); +} + +/*! + * @brief infinity norm of vec3 + * Also known as Maximum norm. + * Infinity Norm is the largest magnitude among each element of a vector. + * It is calculated as the maximum of the absolute values of the vector components. + * + * This computes: + * inf norm = max(|v[0]|, |v[1]|, |v[2]|) + * + * @param[in] v vector + * + * @return infinity norm + */ +CGLM_INLINE +float +glm_vec3_norm_inf(vec3 v) { + vec3 t; + glm_vec3_abs(v, t); + return glm_vec3_max(t); +} + +/*! + * @brief add a vector to b vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_add(vec3 a, vec3 b, vec3 dest) { + dest[0] = a[0] + b[0]; + dest[1] = a[1] + b[1]; + dest[2] = a[2] + b[2]; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + s) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_adds(vec3 v, float s, vec3 dest) { + dest[0] = v[0] + s; + dest[1] = v[1] + s; + dest[2] = v[2] + s; +} + +/*! + * @brief subtract b vector from a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_sub(vec3 a, vec3 b, vec3 dest) { + dest[0] = a[0] - b[0]; + dest[1] = a[1] - b[1]; + dest[2] = a[2] - b[2]; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - s) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_subs(vec3 v, float s, vec3 dest) { + dest[0] = v[0] - s; + dest[1] = v[1] - s; + dest[2] = v[2] - s; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a vector1 + * @param b vector2 + * @param dest v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + */ +CGLM_INLINE +void +glm_vec3_mul(vec3 a, vec3 b, vec3 dest) { + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; + dest[2] = a[2] * b[2]; +} + +/*! + * @brief multiply/scale vec3 vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_scale(vec3 v, float s, vec3 dest) { + dest[0] = v[0] * s; + dest[1] = v[1] * s; + dest[2] = v[2] * s; +} + +/*! + * @brief make vec3 vector scale as specified: result = unit(v) * s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec3_scale_as(vec3 v, float s, vec3 dest) { + float norm; + norm = glm_vec3_norm(v); + + if (norm == 0.0f) { + glm_vec3_zero(dest); + return; + } + + glm_vec3_scale(v, s / norm, dest); +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest result = (a[0]/b[0], a[1]/b[1], a[2]/b[2]) + */ +CGLM_INLINE +void +glm_vec3_div(vec3 a, vec3 b, vec3 dest) { + dest[0] = a[0] / b[0]; + dest[1] = a[1] / b[1]; + dest[2] = a[2] / b[2]; +} + +/*! + * @brief div vector with scalar: d = v / s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest result = (a[0]/s, a[1]/s, a[2]/s) + */ +CGLM_INLINE +void +glm_vec3_divs(vec3 v, float s, vec3 dest) { + dest[0] = v[0] / s; + dest[1] = v[1] / s; + dest[2] = v[2] / s; +} + +/*! + * @brief add two vectors and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a + b) + */ +CGLM_INLINE +void +glm_vec3_addadd(vec3 a, vec3 b, vec3 dest) { + dest[0] += a[0] + b[0]; + dest[1] += a[1] + b[1]; + dest[2] += a[2] + b[2]; +} + +/*! + * @brief sub two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a + b) + */ +CGLM_INLINE +void +glm_vec3_subadd(vec3 a, vec3 b, vec3 dest) { + dest[0] += a[0] - b[0]; + dest[1] += a[1] - b[1]; + dest[2] += a[2] - b[2]; +} + +/*! + * @brief mul two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a * b) + */ +CGLM_INLINE +void +glm_vec3_muladd(vec3 a, vec3 b, vec3 dest) { + dest[0] += a[0] * b[0]; + dest[1] += a[1] * b[1]; + dest[2] += a[2] * b[2]; +} + +/*! + * @brief mul vector with scalar and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector + * @param[in] s scalar + * @param[out] dest dest += (a * b) + */ +CGLM_INLINE +void +glm_vec3_muladds(vec3 a, float s, vec3 dest) { + dest[0] += a[0] * s; + dest[1] += a[1] * s; + dest[2] += a[2] * s; +} + +/*! + * @brief add max of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += max(a, b) + */ +CGLM_INLINE +void +glm_vec3_maxadd(vec3 a, vec3 b, vec3 dest) { + dest[0] += glm_max(a[0], b[0]); + dest[1] += glm_max(a[1], b[1]); + dest[2] += glm_max(a[2], b[2]); +} + +/*! + * @brief add min of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += min(a, b) + */ +CGLM_INLINE +void +glm_vec3_minadd(vec3 a, vec3 b, vec3 dest) { + dest[0] += glm_min(a[0], b[0]); + dest[1] += glm_min(a[1], b[1]); + dest[2] += glm_min(a[2], b[2]); +} + +/*! + * @brief negate vector components and store result in dest + * + * @param[in] v vector + * @param[out] dest result vector + */ +CGLM_INLINE +void +glm_vec3_negate_to(vec3 v, vec3 dest) { + dest[0] = -v[0]; + dest[1] = -v[1]; + dest[2] = -v[2]; +} + +/*! + * @brief negate vector components + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec3_negate(vec3 v) { + glm_vec3_negate_to(v, v); +} + +/*! + * @brief normalize vec3 and store result in same vec + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec3_normalize(vec3 v) { + float norm; + + norm = glm_vec3_norm(v); + + if (norm == 0.0f) { + v[0] = v[1] = v[2] = 0.0f; + return; + } + + glm_vec3_scale(v, 1.0f / norm, v); +} + +/*! + * @brief normalize vec3 to dest + * + * @param[in] v source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_normalize_to(vec3 v, vec3 dest) { + float norm; + + norm = glm_vec3_norm(v); + + if (norm == 0.0f) { + glm_vec3_zero(dest); + return; + } + + glm_vec3_scale(v, 1.0f / norm, dest); +} + +/*! + * @brief cross product of two vector (RH) + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_cross(vec3 a, vec3 b, vec3 dest) { + vec3 c; + /* (u2.v3 - u3.v2, u3.v1 - u1.v3, u1.v2 - u2.v1) */ + c[0] = a[1] * b[2] - a[2] * b[1]; + c[1] = a[2] * b[0] - a[0] * b[2]; + c[2] = a[0] * b[1] - a[1] * b[0]; + glm_vec3_copy(c, dest); +} + +/*! + * @brief cross product of two vector (RH) and normalize the result + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_crossn(vec3 a, vec3 b, vec3 dest) { + glm_vec3_cross(a, b, dest); + glm_vec3_normalize(dest); +} + +/*! + * @brief angle betwen two vector + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return angle as radians + */ +CGLM_INLINE +float +glm_vec3_angle(vec3 a, vec3 b) { + float norm, dot; + + /* maybe compiler generate approximation instruction (rcp) */ + norm = 1.0f / (glm_vec3_norm(a) * glm_vec3_norm(b)); + dot = glm_vec3_dot(a, b) * norm; + + if (dot > 1.0f) + return 0.0f; + else if (dot < -1.0f) + return CGLM_PI; + + return acosf(dot); +} + +/*! + * @brief rotate vec3 around axis by angle using Rodrigues' rotation formula + * + * @param[in, out] v vector + * @param[in] axis axis vector (must be unit vector) + * @param[in] angle angle by radians + */ +CGLM_INLINE +void +glm_vec3_rotate(vec3 v, float angle, vec3 axis) { + vec3 v1, v2, k; + float c, s; + + c = cosf(angle); + s = sinf(angle); + + glm_vec3_normalize_to(axis, k); + + /* Right Hand, Rodrigues' rotation formula: + v = v*cos(t) + (kxv)sin(t) + k*(k.v)(1 - cos(t)) + */ + glm_vec3_scale(v, c, v1); + + glm_vec3_cross(k, v, v2); + glm_vec3_scale(v2, s, v2); + + glm_vec3_add(v1, v2, v1); + + glm_vec3_scale(k, glm_vec3_dot(k, v) * (1.0f - c), v2); + glm_vec3_add(v1, v2, v); +} + +/*! + * @brief apply rotation matrix to vector + * + * matrix format should be (no perspective): + * a b c x + * e f g y + * i j k z + * 0 0 0 w + * + * @param[in] m affine matrix or rot matrix + * @param[in] v vector + * @param[out] dest rotated vector + */ +CGLM_INLINE +void +glm_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest) { + vec4 x, y, z, res; + + glm_vec4_normalize_to(m[0], x); + glm_vec4_normalize_to(m[1], y); + glm_vec4_normalize_to(m[2], z); + + glm_vec4_scale(x, v[0], res); + glm_vec4_muladds(y, v[1], res); + glm_vec4_muladds(z, v[2], res); + + glm_vec3(res, dest); +} + +/*! + * @brief apply rotation matrix to vector + * + * @param[in] m affine matrix or rot matrix + * @param[in] v vector + * @param[out] dest rotated vector + */ +CGLM_INLINE +void +glm_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest) { + vec4 res, x, y, z; + + glm_vec4(m[0], 0.0f, x); + glm_vec4(m[1], 0.0f, y); + glm_vec4(m[2], 0.0f, z); + + glm_vec4_normalize(x); + glm_vec4_normalize(y); + glm_vec4_normalize(z); + + glm_vec4_scale(x, v[0], res); + glm_vec4_muladds(y, v[1], res); + glm_vec4_muladds(z, v[2], res); + + glm_vec3(res, dest); +} + +/*! + * @brief project a vector onto b vector + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest projected vector + */ +CGLM_INLINE +void +glm_vec3_proj(vec3 a, vec3 b, vec3 dest) { + glm_vec3_scale(b, + glm_vec3_dot(a, b) / glm_vec3_norm2(b), + dest); +} + +/** + * @brief find center point of two vector + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest center point + */ +CGLM_INLINE +void +glm_vec3_center(vec3 a, vec3 b, vec3 dest) { + glm_vec3_add(a, b, dest); + glm_vec3_scale(dest, 0.5f, dest); +} + +/** + * @brief squared distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns squared distance (distance * distance) + */ +CGLM_INLINE +float +glm_vec3_distance2(vec3 a, vec3 b) { + return glm_pow2(a[0] - b[0]) + + glm_pow2(a[1] - b[1]) + + glm_pow2(a[2] - b[2]); +} + +/** + * @brief distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns distance + */ +CGLM_INLINE +float +glm_vec3_distance(vec3 a, vec3 b) { + return sqrtf(glm_vec3_distance2(a, b)); +} + +/*! + * @brief max values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_maxv(vec3 a, vec3 b, vec3 dest) { + dest[0] = glm_max(a[0], b[0]); + dest[1] = glm_max(a[1], b[1]); + dest[2] = glm_max(a[2], b[2]); +} + +/*! + * @brief min values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_minv(vec3 a, vec3 b, vec3 dest) { + dest[0] = glm_min(a[0], b[0]); + dest[1] = glm_min(a[1], b[1]); + dest[2] = glm_min(a[2], b[2]); +} + +/*! + * @brief possible orthogonal/perpendicular vector + * + * @param[in] v vector + * @param[out] dest orthogonal/perpendicular vector + */ +CGLM_INLINE +void +glm_vec3_ortho(vec3 v, vec3 dest) { + float ignore; + float f = modff(fabsf(v[0]) + 0.5f, &ignore); + vec3 result = {-v[1], v[0] - f * v[2], f * v[1]}; + glm_vec3_copy(result, dest); +} + +/*! + * @brief clamp vector's individual members between min and max values + * + * @param[in, out] v vector + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + */ +CGLM_INLINE +void +glm_vec3_clamp(vec3 v, float minVal, float maxVal) { + v[0] = glm_clamp(v[0], minVal, maxVal); + v[1] = glm_clamp(v[1], minVal, maxVal); + v[2] = glm_clamp(v[2], minVal, maxVal); +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest) { + vec3 s, v; + + /* from + s * (to - from) */ + glm_vec3_broadcast(t, s); + glm_vec3_sub(to, from, v); + glm_vec3_mul(s, v, v); + glm_vec3_add(from, v, dest); +} + +/*! + * @brief linear interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_lerpc(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_lerp(from, to, glm_clamp_zo(t), dest); +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_mix(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_lerp(from, to, t, dest); +} + +/*! + * @brief linear interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_mixc(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_lerpc(from, to, t, dest); +} + +/*! + * @brief threshold function (unidimensional) + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_step_uni(float edge, vec3 x, vec3 dest) { + dest[0] = glm_step(edge, x[0]); + dest[1] = glm_step(edge, x[1]); + dest[2] = glm_step(edge, x[2]); +} + +/*! + * @brief threshold function + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_step(vec3 edge, vec3 x, vec3 dest) { + dest[0] = glm_step(edge[0], x[0]); + dest[1] = glm_step(edge[1], x[1]); + dest[2] = glm_step(edge[2], x[2]); +} + +/*! + * @brief threshold function with a smooth transition (unidimensional) + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x value to test against threshold + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_smoothstep_uni(float edge0, float edge1, vec3 x, vec3 dest) { + dest[0] = glm_smoothstep(edge0, edge1, x[0]); + dest[1] = glm_smoothstep(edge0, edge1, x[1]); + dest[2] = glm_smoothstep(edge0, edge1, x[2]); +} + +/*! + * @brief threshold function with a smooth transition + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x value to test against threshold + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_smoothstep(vec3 edge0, vec3 edge1, vec3 x, vec3 dest) { + dest[0] = glm_smoothstep(edge0[0], edge1[0], x[0]); + dest[1] = glm_smoothstep(edge0[1], edge1[1], x[1]); + dest[2] = glm_smoothstep(edge0[2], edge1[2], x[2]); +} + +/*! + * @brief smooth Hermite interpolation between two vectors + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_smoothinterp(vec3 from, vec3 to, float t, vec3 dest) { + vec3 s, v; + + /* from + s * (to - from) */ + glm_vec3_broadcast(glm_smooth(t), s); + glm_vec3_sub(to, from, v); + glm_vec3_mul(s, v, v); + glm_vec3_add(from, v, dest); +} + +/*! + * @brief smooth Hermite interpolation between two vectors (clamped) + * + * formula: from + s * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_smoothinterpc(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_smoothinterp(from, to, glm_clamp_zo(t), dest); +} + +/*! + * @brief swizzle vector components + * + * you can use existin masks e.g. GLM_XXX, GLM_ZYX + * + * @param[in] v source + * @param[in] mask mask + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec3_swizzle(vec3 v, int mask, vec3 dest) { + vec3 t; + + t[0] = v[(mask & (3 << 0))]; + t[1] = v[(mask & (3 << 2)) >> 2]; + t[2] = v[(mask & (3 << 4)) >> 4]; + + glm_vec3_copy(t, dest); +} + +/*! + * @brief vec3 cross product + * + * this is just convenient wrapper + * + * @param[in] a source 1 + * @param[in] b source 2 + * @param[out] d destination + */ +CGLM_INLINE +void +glm_cross(vec3 a, vec3 b, vec3 d) { + glm_vec3_cross(a, b, d); +} + +/*! + * @brief vec3 dot product + * + * this is just convenient wrapper + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +float +glm_dot(vec3 a, vec3 b) { + return glm_vec3_dot(a, b); +} + +/*! + * @brief normalize vec3 and store result in same vec + * + * this is just convenient wrapper + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_normalize(vec3 v) { + glm_vec3_normalize(v); +} + +/*! + * @brief normalize vec3 to dest + * + * this is just convenient wrapper + * + * @param[in] v source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_normalize_to(vec3 v, vec3 dest) { + glm_vec3_normalize_to(v, dest); +} + +#endif /* cglm_vec3_h */ diff --git a/lib/cglm/include/cglm/vec4-ext.h b/lib/cglm/include/cglm/vec4-ext.h new file mode 100644 index 0000000..e4e20cb --- /dev/null +++ b/lib/cglm/include/cglm/vec4-ext.h @@ -0,0 +1,313 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/*! + * @brief SIMD like functions + */ + +/* + Functions: + CGLM_INLINE void glm_vec4_broadcast(float val, vec4 d); + CGLM_INLINE void glm_vec4_fill(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq_eps(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq_all(vec4 v); + CGLM_INLINE bool glm_vec4_eqv(vec4 a, vec4 b); + CGLM_INLINE bool glm_vec4_eqv_eps(vec4 a, vec4 b); + CGLM_INLINE float glm_vec4_max(vec4 v); + CGLM_INLINE float glm_vec4_min(vec4 v); + CGLM_INLINE bool glm_vec4_isnan(vec4 v); + CGLM_INLINE bool glm_vec4_isinf(vec4 v); + CGLM_INLINE bool glm_vec4_isvalid(vec4 v); + CGLM_INLINE void glm_vec4_sign(vec4 v, vec4 dest); + CGLM_INLINE void glm_vec4_abs(vec4 v, vec4 dest); + CGLM_INLINE void glm_vec4_fract(vec4 v, vec4 dest); + CGLM_INLINE float glm_vec4_hadd(vec4 v); + CGLM_INLINE void glm_vec4_sqrt(vec4 v, vec4 dest); + */ + +#ifndef cglm_vec4_ext_h +#define cglm_vec4_ext_h + +#include "common.h" +#include "vec3-ext.h" + +/*! + * @brief fill a vector with specified value + * + * @param val value + * @param d dest + */ +CGLM_INLINE +void +glm_vec4_broadcast(float val, vec4 d) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(d, _mm_set1_ps(val)); +#else + d[0] = d[1] = d[2] = d[3] = val; +#endif +} + +/*! + * @brief fill a vector with specified value + * + * @param v dest + * @param val value + */ +CGLM_INLINE +void +glm_vec4_fill(vec4 v, float val) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(v, _mm_set1_ps(val)); +#else + v[0] = v[1] = v[2] = v[3] = val; +#endif +} + +/*! + * @brief check if vector is equal to value (without epsilon) + * + * @param v vector + * @param val value + */ +CGLM_INLINE +bool +glm_vec4_eq(vec4 v, float val) { + return v[0] == val + && v[0] == v[1] + && v[0] == v[2] + && v[0] == v[3]; +} + +/*! + * @brief check if vector is equal to value (with epsilon) + * + * @param v vector + * @param val value + */ +CGLM_INLINE +bool +glm_vec4_eq_eps(vec4 v, float val) { + return fabsf(v[0] - val) <= GLM_FLT_EPSILON + && fabsf(v[1] - val) <= GLM_FLT_EPSILON + && fabsf(v[2] - val) <= GLM_FLT_EPSILON + && fabsf(v[3] - val) <= GLM_FLT_EPSILON; +} + +/*! + * @brief check if vectors members are equal (without epsilon) + * + * @param v vector + */ +CGLM_INLINE +bool +glm_vec4_eq_all(vec4 v) { + return glm_vec4_eq_eps(v, v[0]); +} + +/*! + * @brief check if vector is equal to another (without epsilon) + * + * @param a vector + * @param b vector + */ +CGLM_INLINE +bool +glm_vec4_eqv(vec4 a, vec4 b) { + return a[0] == b[0] + && a[1] == b[1] + && a[2] == b[2] + && a[3] == b[3]; +} + +/*! + * @brief check if vector is equal to another (with epsilon) + * + * @param a vector + * @param b vector + */ +CGLM_INLINE +bool +glm_vec4_eqv_eps(vec4 a, vec4 b) { + return fabsf(a[0] - b[0]) <= GLM_FLT_EPSILON + && fabsf(a[1] - b[1]) <= GLM_FLT_EPSILON + && fabsf(a[2] - b[2]) <= GLM_FLT_EPSILON + && fabsf(a[3] - b[3]) <= GLM_FLT_EPSILON; +} + +/*! + * @brief max value of vector + * + * @param v vector + */ +CGLM_INLINE +float +glm_vec4_max(vec4 v) { + float max; + + max = glm_vec3_max(v); + if (v[3] > max) + max = v[3]; + + return max; +} + +/*! + * @brief min value of vector + * + * @param v vector + */ +CGLM_INLINE +float +glm_vec4_min(vec4 v) { + float min; + + min = glm_vec3_min(v); + if (v[3] < min) + min = v[3]; + + return min; +} + +/*! + * @brief check if one of items is NaN (not a number) + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec4_isnan(vec4 v) { + return isnan(v[0]) || isnan(v[1]) || isnan(v[2]) || isnan(v[3]); +} + +/*! + * @brief check if one of items is INFINITY + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec4_isinf(vec4 v) { + return isinf(v[0]) || isinf(v[1]) || isinf(v[2]) || isinf(v[3]); +} + +/*! + * @brief check if all items are valid number + * you should only use this in DEBUG mode or very critical asserts + * + * @param[in] v vector + */ +CGLM_INLINE +bool +glm_vec4_isvalid(vec4 v) { + return !glm_vec4_isnan(v) && !glm_vec4_isinf(v); +} + +/*! + * @brief get sign of 32 bit float as +1, -1, 0 + * + * Important: It returns 0 for zero/NaN input + * + * @param v vector + */ +CGLM_INLINE +void +glm_vec4_sign(vec4 v, vec4 dest) { +#if defined( __SSE2__ ) || defined( __SSE2__ ) + __m128 x0, x1, x2, x3, x4; + + x0 = glmm_load(v); + x1 = _mm_set_ps(0.0f, 0.0f, 1.0f, -1.0f); + x2 = glmm_splat(x1, 2); + + x3 = _mm_and_ps(_mm_cmpgt_ps(x0, x2), glmm_splat(x1, 1)); + x4 = _mm_and_ps(_mm_cmplt_ps(x0, x2), glmm_splat(x1, 0)); + + glmm_store(dest, _mm_or_ps(x3, x4)); +#else + dest[0] = glm_signf(v[0]); + dest[1] = glm_signf(v[1]); + dest[2] = glm_signf(v[2]); + dest[3] = glm_signf(v[3]); +#endif +} + +/*! + * @brief absolute value of each vector item + * + * @param[in] v vector + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_abs(vec4 v, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, glmm_abs(glmm_load(v))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vabsq_f32(vld1q_f32(v))); +#else + dest[0] = fabsf(v[0]); + dest[1] = fabsf(v[1]); + dest[2] = fabsf(v[2]); + dest[3] = fabsf(v[3]); +#endif +} + +/*! + * @brief fractional part of each vector item + * + * @param[in] v vector + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_fract(vec4 v, vec4 dest) { + dest[0] = fminf(v[0] - floorf(v[0]), 0.999999940395355224609375f); + dest[1] = fminf(v[1] - floorf(v[1]), 0.999999940395355224609375f); + dest[2] = fminf(v[2] - floorf(v[2]), 0.999999940395355224609375f); + dest[3] = fminf(v[3] - floorf(v[3]), 0.999999940395355224609375f); +} + +/*! + * @brief vector reduction by summation + * @warning could overflow + * + * @param[in] v vector + * @return sum of all vector's elements + */ +CGLM_INLINE +float +glm_vec4_hadd(vec4 v) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + return glmm_hadd(glmm_load(v)); +#else + return v[0] + v[1] + v[2] + v[3]; +#endif +} + +/*! + * @brief square root of each vector item + * + * @param[in] v vector + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_sqrt(vec4 v, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_sqrt_ps(glmm_load(v))); +#else + dest[0] = sqrtf(v[0]); + dest[1] = sqrtf(v[1]); + dest[2] = sqrtf(v[2]); + dest[3] = sqrtf(v[3]); +#endif +} + +#endif /* cglm_vec4_ext_h */ diff --git a/lib/cglm/include/cglm/vec4.h b/lib/cglm/include/cglm/vec4.h new file mode 100644 index 0000000..8e95ec5 --- /dev/null +++ b/lib/cglm/include/cglm/vec4.h @@ -0,0 +1,1066 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_VEC4_ONE_INIT + GLM_VEC4_BLACK_INIT + GLM_VEC4_ZERO_INIT + GLM_VEC4_ONE + GLM_VEC4_BLACK + GLM_VEC4_ZERO + + Functions: + CGLM_INLINE void glm_vec4(vec3 v3, float last, vec4 dest); + CGLM_INLINE void glm_vec4_copy3(vec4 a, vec3 dest); + CGLM_INLINE void glm_vec4_copy(vec4 v, vec4 dest); + CGLM_INLINE void glm_vec4_ucopy(vec4 v, vec4 dest); + CGLM_INLINE float glm_vec4_dot(vec4 a, vec4 b); + CGLM_INLINE float glm_vec4_norm2(vec4 v); + CGLM_INLINE float glm_vec4_norm(vec4 v); + CGLM_INLINE float glm_vec4_norm_one(vec4 v); + CGLM_INLINE float glm_vec4_norm_inf(vec4 v); + CGLM_INLINE void glm_vec4_add(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_adds(vec4 v, float s, vec4 dest); + CGLM_INLINE void glm_vec4_sub(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_subs(vec4 v, float s, vec4 dest); + CGLM_INLINE void glm_vec4_mul(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_scale(vec4 v, float s, vec4 dest); + CGLM_INLINE void glm_vec4_scale_as(vec4 v, float s, vec4 dest); + CGLM_INLINE void glm_vec4_div(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_divs(vec4 v, float s, vec4 dest); + CGLM_INLINE void glm_vec4_addadd(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_subadd(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_muladd(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_muladds(vec4 a, float s, vec4 dest); + CGLM_INLINE void glm_vec4_maxadd(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_minadd(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_negate(vec4 v); + CGLM_INLINE void glm_vec4_inv(vec4 v); + CGLM_INLINE void glm_vec4_inv_to(vec4 v, vec4 dest); + CGLM_INLINE void glm_vec4_normalize(vec4 v); + CGLM_INLINE void glm_vec4_normalize_to(vec4 vec, vec4 dest); + CGLM_INLINE float glm_vec4_distance(vec4 a, vec4 b); + CGLM_INLINE float glm_vec4_distance2(vec4 a, vec4 b); + CGLM_INLINE void glm_vec4_maxv(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_minv(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_clamp(vec4 v, float minVal, float maxVal); + CGLM_INLINE void glm_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest); + CGLM_INLINE void glm_vec4_lerpc(vec4 from, vec4 to, float t, vec4 dest); + CGLM_INLINE void glm_vec4_step_uni(float edge, vec4 x, vec4 dest); + CGLM_INLINE void glm_vec4_step(vec4 edge, vec4 x, vec4 dest); + CGLM_INLINE void glm_vec4_smoothstep_uni(float edge0, float edge1, vec4 x, vec4 dest); + CGLM_INLINE void glm_vec4_smoothstep(vec4 edge0, vec4 edge1, vec4 x, vec4 dest); + CGLM_INLINE void glm_vec4_smoothinterp(vec4 from, vec4 to, float t, vec4 dest); + CGLM_INLINE void glm_vec4_smoothinterpc(vec4 from, vec4 to, float t, vec4 dest); + CGLM_INLINE void glm_vec4_swizzle(vec4 v, int mask, vec4 dest); + + DEPRECATED: + glm_vec4_dup + glm_vec4_flipsign + glm_vec4_flipsign_to + glm_vec4_inv + glm_vec4_inv_to + glm_vec4_mulv + */ + +#ifndef cglm_vec4_h +#define cglm_vec4_h + +#include "common.h" +#include "vec4-ext.h" +#include "util.h" + +/* DEPRECATED! functions */ +#define glm_vec4_dup3(v, dest) glm_vec4_copy3(v, dest) +#define glm_vec4_dup(v, dest) glm_vec4_copy(v, dest) +#define glm_vec4_flipsign(v) glm_vec4_negate(v) +#define glm_vec4_flipsign_to(v, dest) glm_vec4_negate_to(v, dest) +#define glm_vec4_inv(v) glm_vec4_negate(v) +#define glm_vec4_inv_to(v, dest) glm_vec4_negate_to(v, dest) +#define glm_vec4_mulv(a, b, d) glm_vec4_mul(a, b, d) + +#define GLM_VEC4_ONE_INIT {1.0f, 1.0f, 1.0f, 1.0f} +#define GLM_VEC4_BLACK_INIT {0.0f, 0.0f, 0.0f, 1.0f} +#define GLM_VEC4_ZERO_INIT {0.0f, 0.0f, 0.0f, 0.0f} + +#define GLM_VEC4_ONE ((vec4)GLM_VEC4_ONE_INIT) +#define GLM_VEC4_BLACK ((vec4)GLM_VEC4_BLACK_INIT) +#define GLM_VEC4_ZERO ((vec4)GLM_VEC4_ZERO_INIT) + +#define GLM_XXXX GLM_SHUFFLE4(0, 0, 0, 0) +#define GLM_YYYY GLM_SHUFFLE4(1, 1, 1, 1) +#define GLM_ZZZZ GLM_SHUFFLE4(2, 2, 2, 2) +#define GLM_WWWW GLM_SHUFFLE4(3, 3, 3, 3) +#define GLM_WZYX GLM_SHUFFLE4(0, 1, 2, 3) + +/*! + * @brief init vec4 using vec3 + * + * @param[in] v3 vector3 + * @param[in] last last item + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4(vec3 v3, float last, vec4 dest) { + dest[0] = v3[0]; + dest[1] = v3[1]; + dest[2] = v3[2]; + dest[3] = last; +} + +/*! + * @brief copy first 3 members of [a] to [dest] + * + * @param[in] a source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_copy3(vec4 a, vec3 dest) { + dest[0] = a[0]; + dest[1] = a[1]; + dest[2] = a[2]; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] v source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_copy(vec4 v, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, glmm_load(v)); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vld1q_f32(v)); +#else + dest[0] = v[0]; + dest[1] = v[1]; + dest[2] = v[2]; + dest[3] = v[3]; +#endif +} + +/*! + * @brief copy all members of [a] to [dest] + * + * alignment is not required + * + * @param[in] v source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_ucopy(vec4 v, vec4 dest) { + dest[0] = v[0]; + dest[1] = v[1]; + dest[2] = v[2]; + dest[3] = v[3]; +} + +/*! + * @brief make vector zero + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec4_zero(vec4 v) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(v, _mm_setzero_ps()); +#elif defined(CGLM_NEON_FP) + vst1q_f32(v, vdupq_n_f32(0.0f)); +#else + v[0] = 0.0f; + v[1] = 0.0f; + v[2] = 0.0f; + v[3] = 0.0f; +#endif +} + +/*! + * @brief make vector one + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec4_one(vec4 v) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(v, _mm_set1_ps(1.0f)); +#elif defined(CGLM_NEON_FP) + vst1q_f32(v, vdupq_n_f32(1.0f)); +#else + v[0] = 1.0f; + v[1] = 1.0f; + v[2] = 1.0f; + v[3] = 1.0f; +#endif +} + +/*! + * @brief vec4 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +float +glm_vec4_dot(vec4 a, vec4 b) { +#if defined(CGLM_SIMD) + return glmm_dot(glmm_load(a), glmm_load(b)); +#else + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; +#endif +} + +/*! + * @brief norm * norm (magnitude) of vec + * + * we can use this func instead of calling norm * norm, because it would call + * sqrtf fuction twice but with this func we can avoid func call, maybe this is + * not good name for this func + * + * @param[in] v vec4 + * + * @return norm * norm + */ +CGLM_INLINE +float +glm_vec4_norm2(vec4 v) { + return glm_vec4_dot(v, v); +} + +/*! + * @brief euclidean norm (magnitude), also called L2 norm + * this will give magnitude of vector in euclidean space + * + * @param[in] v vector + * + * @return norm + */ +CGLM_INLINE +float +glm_vec4_norm(vec4 v) { +#if defined(CGLM_SIMD) + return glmm_norm(glmm_load(v)); +#else + return sqrtf(glm_vec4_dot(v, v)); +#endif +} + +/*! + * @brief L1 norm of vec4 + * Also known as Manhattan Distance or Taxicab norm. + * L1 Norm is the sum of the magnitudes of the vectors in a space. + * It is calculated as the sum of the absolute values of the vector components. + * In this norm, all the components of the vector are weighted equally. + * + * This computes: + * L1 norm = |v[0]| + |v[1]| + |v[2]| + |v[3]| + * + * @param[in] v vector + * + * @return L1 norm + */ +CGLM_INLINE +float +glm_vec4_norm_one(vec4 v) { +#if defined(CGLM_SIMD) + return glmm_norm_one(glmm_load(v)); +#else + vec4 t; + glm_vec4_abs(v, t); + return glm_vec4_hadd(t); +#endif +} + +/*! + * @brief infinity norm of vec4 + * Also known as Maximum norm. + * Infinity Norm is the largest magnitude among each element of a vector. + * It is calculated as the maximum of the absolute values of the vector components. + * + * This computes: + * inf norm = max(|v[0]|, |v[1]|, |v[2]|, |v[3]|) + * + * @param[in] v vector + * + * @return infinity norm + */ +CGLM_INLINE +float +glm_vec4_norm_inf(vec4 v) { +#if defined(CGLM_SIMD) + return glmm_norm_inf(glmm_load(v)); +#else + vec4 t; + glm_vec4_abs(v, t); + return glm_vec4_max(t); +#endif +} + +/*! + * @brief add b vector to a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_add(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_add_ps(glmm_load(a), glmm_load(b))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vaddq_f32(vld1q_f32(a), vld1q_f32(b))); +#else + dest[0] = a[0] + b[0]; + dest[1] = a[1] + b[1]; + dest[2] = a[2] + b[2]; + dest[3] = a[3] + b[3]; +#endif +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + vec(s)) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_adds(vec4 v, float s, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_add_ps(glmm_load(v), _mm_set1_ps(s))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vaddq_f32(vld1q_f32(v), vdupq_n_f32(s))); +#else + dest[0] = v[0] + s; + dest[1] = v[1] + s; + dest[2] = v[2] + s; + dest[3] = v[3] + s; +#endif +} + +/*! + * @brief subtract b vector from a vector store result in dest (d = a - b) + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_sub(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_sub_ps(glmm_load(a), glmm_load(b))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vsubq_f32(vld1q_f32(a), vld1q_f32(b))); +#else + dest[0] = a[0] - b[0]; + dest[1] = a[1] - b[1]; + dest[2] = a[2] - b[2]; + dest[3] = a[3] - b[3]; +#endif +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - vec(s)) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_subs(vec4 v, float s, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_sub_ps(glmm_load(v), _mm_set1_ps(s))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vsubq_f32(vld1q_f32(v), vdupq_n_f32(s))); +#else + dest[0] = v[0] - s; + dest[1] = v[1] - s; + dest[2] = v[2] - s; + dest[3] = v[3] - s; +#endif +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a vector1 + * @param b vector2 + * @param dest dest = (a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]) + */ +CGLM_INLINE +void +glm_vec4_mul(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_mul_ps(glmm_load(a), glmm_load(b))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vmulq_f32(vld1q_f32(a), vld1q_f32(b))); +#else + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; + dest[2] = a[2] * b[2]; + dest[3] = a[3] * b[3]; +#endif +} + +/*! + * @brief multiply/scale vec4 vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_scale(vec4 v, float s, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_mul_ps(glmm_load(v), _mm_set1_ps(s))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vmulq_f32(vld1q_f32(v), vdupq_n_f32(s))); +#else + dest[0] = v[0] * s; + dest[1] = v[1] * s; + dest[2] = v[2] * s; + dest[3] = v[3] * s; +#endif +} + +/*! + * @brief make vec4 vector scale as specified: result = unit(v) * s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_scale_as(vec4 v, float s, vec4 dest) { + float norm; + norm = glm_vec4_norm(v); + + if (norm == 0.0f) { + glm_vec4_zero(dest); + return; + } + + glm_vec4_scale(v, s / norm, dest); +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest result = (a[0]/b[0], a[1]/b[1], a[2]/b[2], a[3]/b[3]) + */ +CGLM_INLINE +void +glm_vec4_div(vec4 a, vec4 b, vec4 dest) { +#if defined(CGLM_SIMD) + glmm_store(dest, glmm_div(glmm_load(a), glmm_load(b))); +#else + dest[0] = a[0] / b[0]; + dest[1] = a[1] / b[1]; + dest[2] = a[2] / b[2]; + dest[3] = a[3] / b[3]; +#endif +} + +/*! + * @brief div vec4 vector with scalar: d = v / s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_vec4_divs(vec4 v, float s, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_div_ps(glmm_load(v), _mm_set1_ps(s))); +#else + glm_vec4_scale(v, 1.0f / s, dest); +#endif +} + +/*! + * @brief add two vectors and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a + b) + */ +CGLM_INLINE +void +glm_vec4_addadd(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_add_ps(glmm_load(dest), + _mm_add_ps(glmm_load(a), + glmm_load(b)))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vaddq_f32(vld1q_f32(dest), + vaddq_f32(vld1q_f32(a), + vld1q_f32(b)))); +#else + dest[0] += a[0] + b[0]; + dest[1] += a[1] + b[1]; + dest[2] += a[2] + b[2]; + dest[3] += a[3] + b[3]; +#endif +} + +/*! + * @brief sub two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a - b) + */ +CGLM_INLINE +void +glm_vec4_subadd(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_add_ps(glmm_load(dest), + _mm_sub_ps(glmm_load(a), + glmm_load(b)))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vaddq_f32(vld1q_f32(dest), + vsubq_f32(vld1q_f32(a), + vld1q_f32(b)))); +#else + dest[0] += a[0] - b[0]; + dest[1] += a[1] - b[1]; + dest[2] += a[2] - b[2]; + dest[3] += a[3] - b[3]; +#endif +} + +/*! + * @brief mul two vectors and add result to dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += (a * b) + */ +CGLM_INLINE +void +glm_vec4_muladd(vec4 a, vec4 b, vec4 dest) { +#if defined(CGLM_SIMD) + glmm_store(dest, glmm_fmadd(glmm_load(a), glmm_load(b), glmm_load(dest))); +#else + dest[0] += a[0] * b[0]; + dest[1] += a[1] * b[1]; + dest[2] += a[2] * b[2]; + dest[3] += a[3] * b[3]; +#endif +} + +/*! + * @brief mul vector with scalar and add result to sum + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector + * @param[in] s scalar + * @param[out] dest dest += (a * b) + */ +CGLM_INLINE +void +glm_vec4_muladds(vec4 a, float s, vec4 dest) { +#if defined(CGLM_SIMD) + glmm_store(dest, glmm_fmadd(glmm_load(a), glmm_set1(s), glmm_load(dest))); +#else + dest[0] += a[0] * s; + dest[1] += a[1] * s; + dest[2] += a[2] * s; + dest[3] += a[3] * s; +#endif +} + +/*! + * @brief add max of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += max(a, b) + */ +CGLM_INLINE +void +glm_vec4_maxadd(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_add_ps(glmm_load(dest), + _mm_max_ps(glmm_load(a), + glmm_load(b)))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vaddq_f32(vld1q_f32(dest), + vmaxq_f32(vld1q_f32(a), + vld1q_f32(b)))); +#else + dest[0] += glm_max(a[0], b[0]); + dest[1] += glm_max(a[1], b[1]); + dest[2] += glm_max(a[2], b[2]); + dest[3] += glm_max(a[3], b[3]); +#endif +} + +/*! + * @brief add min of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += min(a, b) + */ +CGLM_INLINE +void +glm_vec4_minadd(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_add_ps(glmm_load(dest), + _mm_min_ps(glmm_load(a), + glmm_load(b)))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vaddq_f32(vld1q_f32(dest), + vminq_f32(vld1q_f32(a), + vld1q_f32(b)))); +#else + dest[0] += glm_min(a[0], b[0]); + dest[1] += glm_min(a[1], b[1]); + dest[2] += glm_min(a[2], b[2]); + dest[3] += glm_min(a[3], b[3]); +#endif +} + +/*! + * @brief negate vector components and store result in dest + * + * @param[in] v vector + * @param[out] dest result vector + */ +CGLM_INLINE +void +glm_vec4_negate_to(vec4 v, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_xor_ps(glmm_load(v), _mm_set1_ps(-0.0f))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vnegq_f32(vld1q_f32(v))); +#else + dest[0] = -v[0]; + dest[1] = -v[1]; + dest[2] = -v[2]; + dest[3] = -v[3]; +#endif +} + +/*! + * @brief flip sign of all vec4 members + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec4_negate(vec4 v) { + glm_vec4_negate_to(v, v); +} + +/*! + * @brief normalize vec4 to dest + * + * @param[in] v source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_normalize_to(vec4 v, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + __m128 xdot, x0; + float dot; + + x0 = glmm_load(v); + xdot = glmm_vdot(x0, x0); + dot = _mm_cvtss_f32(xdot); + + if (dot == 0.0f) { + glmm_store(dest, _mm_setzero_ps()); + return; + } + + glmm_store(dest, _mm_div_ps(x0, _mm_sqrt_ps(xdot))); +#else + float norm; + + norm = glm_vec4_norm(v); + + if (norm == 0.0f) { + glm_vec4_zero(dest); + return; + } + + glm_vec4_scale(v, 1.0f / norm, dest); +#endif +} + +/*! + * @brief normalize vec4 and store result in same vec + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec4_normalize(vec4 v) { + glm_vec4_normalize_to(v, v); +} + +/** + * @brief distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns distance + */ +CGLM_INLINE +float +glm_vec4_distance(vec4 a, vec4 b) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + return glmm_norm(_mm_sub_ps(glmm_load(a), glmm_load(b))); +#elif defined(CGLM_NEON_FP) + return glmm_norm(vsubq_f32(glmm_load(a), glmm_load(b))); +#else + return sqrtf(glm_pow2(a[0] - b[0]) + + glm_pow2(a[1] - b[1]) + + glm_pow2(a[2] - b[2]) + + glm_pow2(a[3] - b[3])); +#endif +} + +/** + * @brief squared distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns squared distance + */ +CGLM_INLINE +float +glm_vec4_distance2(vec4 a, vec4 b) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + return glmm_norm2(_mm_sub_ps(glmm_load(a), glmm_load(b))); +#elif defined(CGLM_NEON_FP) + return glmm_norm2(vsubq_f32(glmm_load(a), glmm_load(b))); +#else + return glm_pow2(a[0] - b[0]) + + glm_pow2(a[1] - b[1]) + + glm_pow2(a[2] - b[2]) + + glm_pow2(a[3] - b[3]); +#endif +} + +/*! + * @brief max values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_maxv(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_max_ps(glmm_load(a), glmm_load(b))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vmaxq_f32(vld1q_f32(a), vld1q_f32(b))); +#else + dest[0] = glm_max(a[0], b[0]); + dest[1] = glm_max(a[1], b[1]); + dest[2] = glm_max(a[2], b[2]); + dest[3] = glm_max(a[3], b[3]); +#endif +} + +/*! + * @brief min values of vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_minv(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_min_ps(glmm_load(a), glmm_load(b))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(dest, vminq_f32(vld1q_f32(a), vld1q_f32(b))); +#else + dest[0] = glm_min(a[0], b[0]); + dest[1] = glm_min(a[1], b[1]); + dest[2] = glm_min(a[2], b[2]); + dest[3] = glm_min(a[3], b[3]); +#endif +} + +/*! + * @brief clamp vector's individual members between min and max values + * + * @param[in, out] v vector + * @param[in] minVal minimum value + * @param[in] maxVal maximum value + */ +CGLM_INLINE +void +glm_vec4_clamp(vec4 v, float minVal, float maxVal) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(v, _mm_min_ps(_mm_max_ps(glmm_load(v), _mm_set1_ps(minVal)), + _mm_set1_ps(maxVal))); +#elif defined(CGLM_NEON_FP) + vst1q_f32(v, vminq_f32(vmaxq_f32(vld1q_f32(v), vdupq_n_f32(minVal)), + vdupq_n_f32(maxVal))); +#else + v[0] = glm_clamp(v[0], minVal, maxVal); + v[1] = glm_clamp(v[1], minVal, maxVal); + v[2] = glm_clamp(v[2], minVal, maxVal); + v[3] = glm_clamp(v[3], minVal, maxVal); +#endif +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + t * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest) { + vec4 s, v; + + /* from + s * (to - from) */ + glm_vec4_broadcast(t, s); + glm_vec4_sub(to, from, v); + glm_vec4_mul(s, v, v); + glm_vec4_add(from, v, dest); +} + +/*! + * @brief linear interpolation between two vectors (clamped) + * + * formula: from + t * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_lerpc(vec4 from, vec4 to, float t, vec4 dest) { + glm_vec4_lerp(from, to, glm_clamp_zo(t), dest); +} + +/*! + * @brief linear interpolation between two vectors + * + * formula: from + t * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_mix(vec4 from, vec4 to, float t, vec4 dest) { + glm_vec4_lerp(from, to, t, dest); +} + +/*! + * @brief linear interpolation between two vectors (clamped) + * + * formula: from + t * (to - from) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_mixc(vec4 from, vec4 to, float t, vec4 dest) { + glm_vec4_lerpc(from, to, t, dest); +} + +/*! + * @brief threshold function (unidimensional) + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_step_uni(float edge, vec4 x, vec4 dest) { + dest[0] = glm_step(edge, x[0]); + dest[1] = glm_step(edge, x[1]); + dest[2] = glm_step(edge, x[2]); + dest[3] = glm_step(edge, x[3]); +} + +/*! + * @brief threshold function + * + * @param[in] edge threshold + * @param[in] x value to test against threshold + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_step(vec4 edge, vec4 x, vec4 dest) { + dest[0] = glm_step(edge[0], x[0]); + dest[1] = glm_step(edge[1], x[1]); + dest[2] = glm_step(edge[2], x[2]); + dest[3] = glm_step(edge[3], x[3]); +} + +/*! + * @brief threshold function with a smooth transition (unidimensional) + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x value to test against threshold + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_smoothstep_uni(float edge0, float edge1, vec4 x, vec4 dest) { + dest[0] = glm_smoothstep(edge0, edge1, x[0]); + dest[1] = glm_smoothstep(edge0, edge1, x[1]); + dest[2] = glm_smoothstep(edge0, edge1, x[2]); + dest[3] = glm_smoothstep(edge0, edge1, x[3]); +} + +/*! + * @brief threshold function with a smooth transition + * + * @param[in] edge0 low threshold + * @param[in] edge1 high threshold + * @param[in] x value to test against threshold + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_smoothstep(vec4 edge0, vec4 edge1, vec4 x, vec4 dest) { + dest[0] = glm_smoothstep(edge0[0], edge1[0], x[0]); + dest[1] = glm_smoothstep(edge0[1], edge1[1], x[1]); + dest[2] = glm_smoothstep(edge0[2], edge1[2], x[2]); + dest[3] = glm_smoothstep(edge0[3], edge1[3], x[3]); +} + +/*! + * @brief smooth Hermite interpolation between two vectors + * + * formula: t^2 * (3 - 2*t) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_smoothinterp(vec4 from, vec4 to, float t, vec4 dest) { + vec4 s, v; + + /* from + smoothstep * (to - from) */ + glm_vec4_broadcast(glm_smooth(t), s); + glm_vec4_sub(to, from, v); + glm_vec4_mul(s, v, v); + glm_vec4_add(from, v, dest); +} + +/*! + * @brief smooth Hermite interpolation between two vectors (clamped) + * + * formula: t^2 * (3 - 2*t) + * + * @param[in] from from value + * @param[in] to to value + * @param[in] t interpolant (amount) clamped between 0 and 1 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_smoothinterpc(vec4 from, vec4 to, float t, vec4 dest) { + glm_vec4_smoothinterp(from, to, glm_clamp_zo(t), dest); +} + +/*! + * @brief helper to fill vec4 as [S^3, S^2, S, 1] + * + * @param[in] s parameter + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_cubic(float s, vec4 dest) { + float ss; + + ss = s * s; + + dest[0] = ss * s; + dest[1] = ss; + dest[2] = s; + dest[3] = 1.0f; +} + +/*! + * @brief swizzle vector components + * + * you can use existin masks e.g. GLM_XXXX, GLM_WZYX + * + * @param[in] v source + * @param[in] mask mask + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_vec4_swizzle(vec4 v, int mask, vec4 dest) { + vec4 t; + + t[0] = v[(mask & (3 << 0))]; + t[1] = v[(mask & (3 << 2)) >> 2]; + t[2] = v[(mask & (3 << 4)) >> 4]; + t[3] = v[(mask & (3 << 6)) >> 6]; + + glm_vec4_copy(t, dest); +} + +#endif /* cglm_vec4_h */ diff --git a/lib/cglm/include/cglm/version.h b/lib/cglm/include/cglm/version.h new file mode 100644 index 0000000..0ed253e --- /dev/null +++ b/lib/cglm/include/cglm/version.h @@ -0,0 +1,15 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm_version_h +#define cglm_version_h + +#define CGLM_VERSION_MAJOR 0 +#define CGLM_VERSION_MINOR 8 +#define CGLM_VERSION_PATCH 7 + +#endif /* cglm_version_h */ diff --git a/lib/cglm/meson.build b/lib/cglm/meson.build new file mode 100644 index 0000000..ca15216 --- /dev/null +++ b/lib/cglm/meson.build @@ -0,0 +1,131 @@ +project('cglm', 'c', + version : '0.8.7', + license : 'mit', + default_options : [ + 'c_std=c11', + 'werror=true', + 'warning_level=2', + 'buildtype=release' + ] +) + +cc = meson.get_compiler('c') + +cglm_install = get_option('install') +cglm_deps = cc.find_library('m', required : false) + +cglm_args = [] +build_args = [] + +if get_option('default_library') == 'static' + cglm_args = '-DCGLM_STATIC' +endif + +if host_machine.system() == 'windows' + build_args = '-DCGLM_EXPORTS' +endif + +cglm_inc = include_directories('include') + +cglm_src = files( + 'src/euler.c', + 'src/affine.c', + 'src/io.c', + 'src/quat.c', + 'src/cam.c', + 'src/vec2.c', + 'src/ivec2.c', + 'src/vec3.c', + 'src/ivec3.c', + 'src/vec4.c', + 'src/ivec4.c', + 'src/mat2.c', + 'src/mat3.c', + 'src/mat4.c', + 'src/plane.c', + 'src/frustum.c', + 'src/box.c', + 'src/project.c', + 'src/sphere.c', + 'src/ease.c', + 'src/curve.c', + 'src/bezier.c', + 'src/ray.c', + 'src/affine2d.c', + 'src/clipspace/ortho_lh_no.c', + 'src/clipspace/ortho_lh_zo.c', + 'src/clipspace/ortho_rh_no.c', + 'src/clipspace/ortho_rh_zo.c', + 'src/clipspace/persp_lh_no.c', + 'src/clipspace/persp_lh_zo.c', + 'src/clipspace/persp_rh_no.c', + 'src/clipspace/persp_rh_zo.c', + 'src/clipspace/view_lh_no.c', + 'src/clipspace/view_lh_zo.c', + 'src/clipspace/view_rh_no.c', + 'src/clipspace/view_rh_zo.c', + 'src/clipspace/project_no.c', + 'src/clipspace/project_zo.c' +) + +cglm_lib = library('cglm', + cglm_src, + install : cglm_install, + dependencies : cglm_deps, + c_args : [ build_args, cglm_args ], + version : meson.project_version(), + soversion : '0' +) + +cglm_dep = declare_dependency( + link_with : cglm_lib, + dependencies : cglm_deps, + compile_args : cglm_args, + include_directories : cglm_inc, + version : meson.project_version() +) + +if meson.version().version_compare('>= 0.54.0') + meson.override_dependency('cglm', cglm_dep) +endif + +if cglm_install + install_subdir('include/cglm', install_dir : get_option('includedir')) + + pkg = import('pkgconfig') + pkg.generate( + name : 'cglm', + libraries : cglm_lib, + extra_cflags : cglm_args, + version : meson.project_version(), + url : 'https://github.com/recp/cglm', + description : 'OpenGL Mathematics (glm) for C' + ) +endif + +if get_option('build_tests') == true + +test_src = files( + 'test/runner.c', + 'test/src/test_bezier.c', + 'test/src/test_cam.c', + 'test/src/test_cam_lh_no.c', + 'test/src/test_cam_lh_zo.c', + 'test/src/test_cam_rh_no.c', + 'test/src/test_cam_rh_zo.c', + 'test/src/test_clamp.c', + 'test/src/test_common.c', + 'test/src/test_euler.c', + 'test/src/tests.c', + 'test/src/test_struct.c', +) + +test_exe = executable('tests', + test_src, + dependencies : cglm_dep, + c_args : '-DGLM_TESTS_NO_COLORFUL_OUTPUT' +) + +test('cglm.tests', test_exe) + +endif diff --git a/lib/cglm/meson_options.txt b/lib/cglm/meson_options.txt new file mode 100644 index 0000000..fb3ced8 --- /dev/null +++ b/lib/cglm/meson_options.txt @@ -0,0 +1,2 @@ +option('build_tests', type : 'boolean', value : false, description : 'Build tests') +option('install', type : 'boolean', value : true, description : 'Include the library, headers, and pkg-config file in the install target') diff --git a/lib/cglm/src/affine.c b/lib/cglm/src/affine.c new file mode 100644 index 0000000..6bba523 --- /dev/null +++ b/lib/cglm/src/affine.c @@ -0,0 +1,225 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_translate_make(mat4 m, vec3 v) { + glm_translate_make(m, v); +} + +CGLM_EXPORT +void +glmc_translate_to(mat4 m, vec3 v, mat4 dest) { + glm_translate_to(m, v, dest); +} + +CGLM_EXPORT +void +glmc_translate(mat4 m, vec3 v) { + glm_translate(m, v); +} + +CGLM_EXPORT +void +glmc_translate_x(mat4 m, float to) { + glm_translate_x(m, to); +} + +CGLM_EXPORT +void +glmc_translate_y(mat4 m, float to) { + glm_translate_y(m, to); +} + +CGLM_EXPORT +void +glmc_translate_z(mat4 m, float to) { + glm_translate_z(m, to); +} + +CGLM_EXPORT +void +glmc_scale_make(mat4 m, vec3 v) { + glm_scale_make(m, v); +} + +CGLM_EXPORT +void +glmc_scale_to(mat4 m, vec3 v, mat4 dest) { + glm_scale_to(m, v, dest); +} + +CGLM_EXPORT +void +glmc_scale(mat4 m, vec3 v) { + glm_scale(m, v); +} + +CGLM_EXPORT +void +glmc_scale_uni(mat4 m, float s) { + glm_scale_uni(m, s); +} + +CGLM_EXPORT +void +glmc_rotate_x(mat4 m, float rad, mat4 dest) { + glm_rotate_x(m, rad, dest); +} + +CGLM_EXPORT +void +glmc_rotate_y(mat4 m, float rad, mat4 dest) { + glm_rotate_y(m, rad, dest); +} + +CGLM_EXPORT +void +glmc_rotate_z(mat4 m, float rad, mat4 dest) { + glm_rotate_z(m, rad, dest); +} + +CGLM_EXPORT +void +glmc_rotate_make(mat4 m, float angle, vec3 axis) { + glm_rotate_make(m, angle, axis); +} + +CGLM_EXPORT +void +glmc_rotate(mat4 m, float angle, vec3 axis) { + glm_rotate(m, angle, axis); +} + +CGLM_EXPORT +void +glmc_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis) { + glm_rotate_at(m, pivot, angle, axis); +} + +CGLM_EXPORT +void +glmc_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis) { + glm_rotate_atm(m, pivot, angle, axis); +} + +CGLM_EXPORT +void +glmc_spin(mat4 m, float angle, vec3 axis) { + glm_spin(m, angle, axis); +} + +CGLM_EXPORT +void +glmc_decompose_scalev(mat4 m, vec3 s) { + glm_decompose_scalev(m, s); +} + +CGLM_EXPORT +bool +glmc_uniscaled(mat4 m) { + return glm_uniscaled(m); +} + +CGLM_EXPORT +void +glmc_decompose_rs(mat4 m, mat4 r, vec3 s) { + glm_decompose_rs(m, r, s); +} + +CGLM_EXPORT +void +glmc_translated(mat4 m, vec3 v) { + glm_translated(m, v); +} + +CGLM_EXPORT +void +glmc_translated_to(mat4 m, vec3 v, mat4 dest) { + glm_translated_to(m, v, dest); +} + +CGLM_EXPORT +void +glmc_translated_x(mat4 m, float x) { + glm_translated_x(m, x); +} + +CGLM_EXPORT +void +glmc_translated_y(mat4 m, float y) { + glm_translated_y(m, y); +} + +CGLM_EXPORT +void +glmc_translated_z(mat4 m, float z) { + glm_translated_z(m, z); +} + +CGLM_EXPORT +void +glmc_rotated_x(mat4 m, float angle, mat4 dest) { + glm_rotated_x(m, angle, dest); +} + +CGLM_EXPORT +void +glmc_rotated_y(mat4 m, float angle, mat4 dest) { + glm_rotated_y(m, angle, dest); +} + +CGLM_EXPORT +void +glmc_rotated_z(mat4 m, float angle, mat4 dest) { + glm_rotated_z(m, angle, dest); +} + +CGLM_EXPORT +void +glmc_rotated(mat4 m, float angle, vec3 axis) { + glm_rotated(m, angle, axis); +} + +CGLM_EXPORT +void +glmc_rotated_at(mat4 m, vec3 pivot, float angle, vec3 axis) { + glm_rotated_at(m, pivot, angle, axis); +} + +CGLM_EXPORT +void +glmc_spinned(mat4 m, float angle, vec3 axis) { + glm_spinned(m, angle, axis); +} + +CGLM_EXPORT +void +glmc_decompose(mat4 m, vec4 t, mat4 r, vec3 s) { + glm_decompose(m, t, r, s); +} + +CGLM_EXPORT +void +glmc_mul(mat4 m1, mat4 m2, mat4 dest) { + glm_mul(m1, m2, dest); +} + +CGLM_EXPORT +void +glmc_mul_rot(mat4 m1, mat4 m2, mat4 dest) { + glm_mul_rot(m1, m2, dest); +} + +CGLM_EXPORT +void +glmc_inv_tr(mat4 mat) { + glm_inv_tr(mat); +} diff --git a/lib/cglm/src/affine2d.c b/lib/cglm/src/affine2d.c new file mode 100644 index 0000000..6e5913e --- /dev/null +++ b/lib/cglm/src/affine2d.c @@ -0,0 +1,81 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_translate2d_make(mat3 m, vec2 v) { + glm_translate2d_make(m, v); +} + +CGLM_EXPORT +void +glmc_translate2d_to(mat3 m, vec2 v, mat3 dest) { + glm_translate2d_to(m, v, dest); +} + +CGLM_EXPORT +void +glmc_translate2d(mat3 m, vec2 v) { + glm_translate2d(m, v); +} + +CGLM_EXPORT +void +glmc_translate2d_x(mat3 m, float to) { + glm_translate2d_x(m, to); +} + +CGLM_EXPORT +void +glmc_translate2d_y(mat3 m, float to) { + glm_translate2d_y(m, to); +} + +CGLM_EXPORT +void +glmc_scale2d_to(mat3 m, vec2 v, mat3 dest) { + glm_scale2d_to(m, v, dest); +} + +CGLM_EXPORT +void +glmc_scale2d_make(mat3 m, vec2 v) { + glm_scale2d_make(m, v); +} + +CGLM_EXPORT +void +glmc_scale2d(mat3 m, vec2 v) { + glm_scale2d(m, v); +} + +CGLM_EXPORT +void +glmc_scale2d_uni(mat3 m, float s) { + glm_scale2d_uni(m, s); +} + +CGLM_EXPORT +void +glmc_rotate2d_make(mat3 m, float angle) { + glm_rotate2d_make(m, angle); +} + +CGLM_EXPORT +void +glmc_rotate2d(mat3 m, float angle) { + glm_rotate2d(m, angle); +} + +CGLM_EXPORT +void +glmc_rotate2d_to(mat3 m, float angle, mat3 dest) { + glm_rotate2d_to(m, angle, dest); +} diff --git a/lib/cglm/src/bezier.c b/lib/cglm/src/bezier.c new file mode 100644 index 0000000..21e6495 --- /dev/null +++ b/lib/cglm/src/bezier.c @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +float +glmc_bezier(float s, float p0, float c0, float c1, float p1) { + return glm_bezier(s, p0, c0, c1, p1); +} + +CGLM_EXPORT +float +glmc_hermite(float s, float p0, float t0, float t1, float p1) { + return glm_hermite(s, p0, t0, t1, p1); +} + +CGLM_EXPORT +float +glmc_decasteljau(float prm, float p0, float c0, float c1, float p1) { + return glm_decasteljau(prm, p0, c0, c1, p1); +} diff --git a/lib/cglm/src/box.c b/lib/cglm/src/box.c new file mode 100644 index 0000000..fd639ea --- /dev/null +++ b/lib/cglm/src/box.c @@ -0,0 +1,96 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_aabb_transform(vec3 box[2], mat4 m, vec3 dest[2]) { + glm_aabb_transform(box, m, dest); +} + +CGLM_EXPORT +void +glmc_aabb_merge(vec3 box1[2], vec3 box2[2], vec3 dest[2]) { + glm_aabb_merge(box1, box2, dest); +} + +CGLM_EXPORT +void +glmc_aabb_crop(vec3 box[2], vec3 cropBox[2], vec3 dest[2]) { + glm_aabb_crop(box, cropBox, dest); +} + +CGLM_EXPORT +void +glmc_aabb_crop_until(vec3 box[2], + vec3 cropBox[2], + vec3 clampBox[2], + vec3 dest[2]) { + glm_aabb_crop_until(box, cropBox, clampBox, dest); +} + +CGLM_EXPORT +bool +glmc_aabb_frustum(vec3 box[2], vec4 planes[6]) { + return glm_aabb_frustum(box, planes); +} + +CGLM_EXPORT +void +glmc_aabb_invalidate(vec3 box[2]) { + glm_aabb_invalidate(box); +} + +CGLM_EXPORT +bool +glmc_aabb_isvalid(vec3 box[2]) { + return glm_aabb_isvalid(box); +} + +CGLM_EXPORT +float +glmc_aabb_size(vec3 box[2]) { + return glm_aabb_size(box); +} + +CGLM_EXPORT +float +glmc_aabb_radius(vec3 box[2]) { + return glm_aabb_radius(box); +} + +CGLM_EXPORT +void +glmc_aabb_center(vec3 box[2], vec3 dest) { + glm_aabb_center(box, dest); +} + +CGLM_EXPORT +bool +glmc_aabb_aabb(vec3 box[2], vec3 other[2]) { + return glm_aabb_aabb(box, other); +} + +CGLM_EXPORT +bool +glmc_aabb_point(vec3 box[2], vec3 point) { + return glm_aabb_point(box, point); +} + +CGLM_EXPORT +bool +glmc_aabb_contains(vec3 box[2], vec3 other[2]) { + return glm_aabb_contains(box, other); +} + +CGLM_EXPORT +bool +glmc_aabb_sphere(vec3 box[2], vec4 s) { + return glm_aabb_sphere(box, s); +} diff --git a/lib/cglm/src/cam.c b/lib/cglm/src/cam.c new file mode 100644 index 0000000..40db351 --- /dev/null +++ b/lib/cglm/src/cam.c @@ -0,0 +1,171 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_frustum(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_frustum(left, right, bottom, top, nearZ, farZ, dest); +} + +CGLM_EXPORT +void +glmc_ortho(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_ortho(left, right, bottom, top, nearZ, farZ, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb(vec3 box[2], mat4 dest) { + glm_ortho_aabb(box, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_p(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_p(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_pz(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_pz(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default(float aspect, mat4 dest) { + glm_ortho_default(aspect, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_s(float aspect, float size, mat4 dest) { + glm_ortho_default_s(aspect, size, dest); +} + +CGLM_EXPORT +void +glmc_perspective(float fovy, float aspect, float nearZ, float farZ, mat4 dest) { + glm_perspective(fovy, aspect, nearZ, farZ, dest); +} + +CGLM_EXPORT +void +glmc_persp_move_far(mat4 proj, float deltaFar) { + glm_persp_move_far(proj, deltaFar); +} + +CGLM_EXPORT +void +glmc_perspective_default(float aspect, mat4 dest) { + glm_perspective_default(aspect, dest); +} + +CGLM_EXPORT +void +glmc_perspective_resize(float aspect, mat4 proj) { + glm_perspective_resize(aspect, proj); +} + +CGLM_EXPORT +void +glmc_lookat(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat(eye, center, up, dest); +} + +CGLM_EXPORT +void +glmc_look(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look(eye, dir, up, dest); +} + +CGLM_EXPORT +void +glmc_look_anyup(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup(eye, dir, dest); +} + +CGLM_EXPORT +void +glmc_persp_decomp(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ, + float * __restrict top, + float * __restrict bottom, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp(proj, nearZ, farZ, top, bottom, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decompv(mat4 proj, float dest[6]) { + glm_persp_decompv(proj, dest); +} + +CGLM_EXPORT +void +glmc_persp_decomp_x(mat4 proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x(proj, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decomp_y(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y(proj, top, bottom); +} + +CGLM_EXPORT +void +glmc_persp_decomp_z(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z(proj, nearZ, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_far(mat4 proj, float * __restrict farZ) { + glm_persp_decomp_far(proj, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_near(mat4 proj, float * __restrict nearZ) { + glm_persp_decomp_near(proj, nearZ); +} + +CGLM_EXPORT +float +glmc_persp_fovy(mat4 proj) { + return glm_persp_fovy(proj); +} + +CGLM_EXPORT +float +glmc_persp_aspect(mat4 proj) { + return glm_persp_aspect(proj); +} + +CGLM_EXPORT +void +glmc_persp_sizes(mat4 proj, float fovy, vec4 dest) { + glm_persp_sizes(proj, fovy, dest); +} diff --git a/lib/cglm/src/clipspace/ortho_lh_no.c b/lib/cglm/src/clipspace/ortho_lh_no.c new file mode 100644 index 0000000..839926a --- /dev/null +++ b/lib/cglm/src/clipspace/ortho_lh_no.c @@ -0,0 +1,51 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/ortho_lh_no.h" +#include "../../include/cglm/call/clipspace/ortho_lh_no.h" + +CGLM_EXPORT +void +glmc_ortho_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_ortho_lh_no(left, right, + bottom, top, + nearZ, farZ, + dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_lh_no(vec3 box[2], mat4 dest) { + glm_ortho_aabb_lh_no(box, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_p_lh_no(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_p_lh_no(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_pz_lh_no(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_pz_lh_no(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_lh_no(float aspect, mat4 dest) { + glm_ortho_default_lh_no(aspect, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_s_lh_no(float aspect, float size, mat4 dest) { + glm_ortho_default_s_lh_no(aspect, size, dest); +} diff --git a/lib/cglm/src/clipspace/ortho_lh_zo.c b/lib/cglm/src/clipspace/ortho_lh_zo.c new file mode 100644 index 0000000..88291ac --- /dev/null +++ b/lib/cglm/src/clipspace/ortho_lh_zo.c @@ -0,0 +1,51 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/ortho_lh_zo.h" +#include "../../include/cglm/call/clipspace/ortho_lh_zo.h" + +CGLM_EXPORT +void +glmc_ortho_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_ortho_lh_zo(left, right, + bottom, top, + nearZ, farZ, + dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_lh_zo(vec3 box[2], mat4 dest) { + glm_ortho_aabb_lh_zo(box, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_p_lh_zo(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_p_lh_zo(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_pz_lh_zo(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_pz_lh_zo(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_lh_zo(float aspect, mat4 dest) { + glm_ortho_default_lh_zo(aspect, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_s_lh_zo(float aspect, float size, mat4 dest) { + glm_ortho_default_s_lh_zo(aspect, size, dest); +} diff --git a/lib/cglm/src/clipspace/ortho_rh_no.c b/lib/cglm/src/clipspace/ortho_rh_no.c new file mode 100644 index 0000000..ca30e82 --- /dev/null +++ b/lib/cglm/src/clipspace/ortho_rh_no.c @@ -0,0 +1,51 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/ortho_rh_no.h" +#include "../../include/cglm/call/clipspace/ortho_rh_no.h" + +CGLM_EXPORT +void +glmc_ortho_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_ortho_rh_no(left, right, + bottom, top, + nearZ, farZ, + dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_rh_no(vec3 box[2], mat4 dest) { + glm_ortho_aabb_rh_no(box, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_p_rh_no(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_p_rh_no(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_pz_rh_no(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_pz_rh_no(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_rh_no(float aspect, mat4 dest) { + glm_ortho_default_rh_no(aspect, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_s_rh_no(float aspect, float size, mat4 dest) { + glm_ortho_default_s_rh_no(aspect, size, dest); +} diff --git a/lib/cglm/src/clipspace/ortho_rh_zo.c b/lib/cglm/src/clipspace/ortho_rh_zo.c new file mode 100644 index 0000000..06d119b --- /dev/null +++ b/lib/cglm/src/clipspace/ortho_rh_zo.c @@ -0,0 +1,51 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/ortho_rh_zo.h" +#include "../../include/cglm/call/clipspace/ortho_rh_zo.h" + +CGLM_EXPORT +void +glmc_ortho_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_ortho_rh_zo(left, right, + bottom, top, + nearZ, farZ, + dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_rh_zo(vec3 box[2], mat4 dest) { + glm_ortho_aabb_rh_zo(box, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_p_rh_zo(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_p_rh_zo(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_aabb_pz_rh_zo(vec3 box[2], float padding, mat4 dest) { + glm_ortho_aabb_pz_rh_zo(box, padding, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_rh_zo(float aspect, mat4 dest) { + glm_ortho_default_rh_zo(aspect, dest); +} + +CGLM_EXPORT +void +glmc_ortho_default_s_rh_zo(float aspect, float size, mat4 dest) { + glm_ortho_default_s_rh_zo(aspect, size, dest); +} diff --git a/lib/cglm/src/clipspace/persp_lh_no.c b/lib/cglm/src/clipspace/persp_lh_no.c new file mode 100644 index 0000000..8d6db76 --- /dev/null +++ b/lib/cglm/src/clipspace/persp_lh_no.c @@ -0,0 +1,110 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/persp_lh_no.h" +#include "../../include/cglm/call/clipspace/persp_lh_no.h" + +CGLM_EXPORT +void +glmc_frustum_lh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_frustum_lh_no(left, right, + bottom, top, + nearZ, farZ, + dest); +} + +CGLM_EXPORT +void +glmc_perspective_lh_no(float fovy, + float aspect, + float nearVal, + float farVal, + mat4 dest) { + glm_perspective_lh_no(fovy, + aspect, + nearVal, + farVal, + dest); +} + +CGLM_EXPORT +void +glmc_persp_move_far_lh_no(mat4 proj, float deltaFar) { + glm_persp_move_far_lh_no(proj, deltaFar); +} + +CGLM_EXPORT +void +glmc_persp_decomp_lh_no(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + glm_persp_decomp_lh_no(proj, nearZ, farZ, top, bottom, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decompv_lh_no(mat4 proj, float dest[6]) { + glm_persp_decompv_lh_no(proj, dest); +} + +CGLM_EXPORT +void +glmc_persp_decomp_x_lh_no(mat4 proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x_lh_no(proj, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decomp_y_lh_no(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y_lh_no(proj, top, bottom); +} + +CGLM_EXPORT +void +glmc_persp_decomp_z_lh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z_lh_no(proj, nearZ, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_far_lh_no(mat4 proj, float * __restrict farZ) { + glm_persp_decomp_far_lh_no(proj, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_near_lh_no(mat4 proj, float * __restrict nearZ) { + glm_persp_decomp_near_lh_no(proj, nearZ); +} + +CGLM_EXPORT +void +glmc_persp_sizes_lh_no(mat4 proj, float fovy, vec4 dest) { + glm_persp_sizes_lh_no(proj, fovy, dest); +} + +CGLM_EXPORT +float +glmc_persp_fovy_lh_no(mat4 proj) { + return glm_persp_fovy_lh_no(proj); +} + +CGLM_EXPORT +float +glmc_persp_aspect_lh_no(mat4 proj) { + return glm_persp_aspect_lh_no(proj); +} diff --git a/lib/cglm/src/clipspace/persp_lh_zo.c b/lib/cglm/src/clipspace/persp_lh_zo.c new file mode 100644 index 0000000..d9fec0c --- /dev/null +++ b/lib/cglm/src/clipspace/persp_lh_zo.c @@ -0,0 +1,110 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/persp_lh_zo.h" +#include "../../include/cglm/call/clipspace/persp_lh_zo.h" + +CGLM_EXPORT +void +glmc_frustum_lh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_frustum_lh_zo(left, right, + bottom, top, + nearZ, farZ, + dest); +} + +CGLM_EXPORT +void +glmc_perspective_lh_zo(float fovy, + float aspect, + float nearVal, + float farVal, + mat4 dest) { + glm_perspective_lh_zo(fovy, + aspect, + nearVal, + farVal, + dest); +} + +CGLM_EXPORT +void +glmc_persp_move_far_lh_zo(mat4 proj, float deltaFar) { + glm_persp_move_far_lh_zo(proj, deltaFar); +} + +CGLM_EXPORT +void +glmc_persp_decomp_lh_zo(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + glm_persp_decomp_lh_zo(proj, nearZ, farZ, top, bottom, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decompv_lh_zo(mat4 proj, float dest[6]) { + glm_persp_decompv_lh_zo(proj, dest); +} + +CGLM_EXPORT +void +glmc_persp_decomp_x_lh_zo(mat4 proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x_lh_zo(proj, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decomp_y_lh_zo(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y_lh_zo(proj, top, bottom); +} + +CGLM_EXPORT +void +glmc_persp_decomp_z_lh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z_lh_zo(proj, nearZ, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_far_lh_zo(mat4 proj, float * __restrict farZ) { + glm_persp_decomp_far_lh_zo(proj, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_near_lh_zo(mat4 proj, float * __restrict nearZ) { + glm_persp_decomp_near_lh_zo(proj, nearZ); +} + +CGLM_EXPORT +void +glmc_persp_sizes_lh_zo(mat4 proj, float fovy, vec4 dest) { + glm_persp_sizes_lh_zo(proj, fovy, dest); +} + +CGLM_EXPORT +float +glmc_persp_fovy_lh_zo(mat4 proj) { + return glm_persp_fovy_lh_zo(proj); +} + +CGLM_EXPORT +float +glmc_persp_aspect_lh_zo(mat4 proj) { + return glm_persp_aspect_lh_zo(proj); +} diff --git a/lib/cglm/src/clipspace/persp_rh_no.c b/lib/cglm/src/clipspace/persp_rh_no.c new file mode 100644 index 0000000..8fc7735 --- /dev/null +++ b/lib/cglm/src/clipspace/persp_rh_no.c @@ -0,0 +1,110 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/persp_rh_no.h" +#include "../../include/cglm/call/clipspace/persp_rh_no.h" + +CGLM_EXPORT +void +glmc_frustum_rh_no(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_frustum_rh_no(left, right, + bottom, top, + nearZ, farZ, + dest); +} + +CGLM_EXPORT +void +glmc_perspective_rh_no(float fovy, + float aspect, + float nearVal, + float farVal, + mat4 dest) { + glm_perspective_rh_no(fovy, + aspect, + nearVal, + farVal, + dest); +} + +CGLM_EXPORT +void +glmc_persp_move_far_rh_no(mat4 proj, float deltaFar) { + glm_persp_move_far_rh_no(proj, deltaFar); +} + +CGLM_EXPORT +void +glmc_persp_decomp_rh_no(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + glm_persp_decomp_rh_no(proj, nearZ, farZ, top, bottom, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decompv_rh_no(mat4 proj, float dest[6]) { + glm_persp_decompv_rh_no(proj, dest); +} + +CGLM_EXPORT +void +glmc_persp_decomp_x_rh_no(mat4 proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x_rh_no(proj, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decomp_y_rh_no(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y_rh_no(proj, top, bottom); +} + +CGLM_EXPORT +void +glmc_persp_decomp_z_rh_no(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z_rh_no(proj, nearZ, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_far_rh_no(mat4 proj, float * __restrict farZ) { + glm_persp_decomp_far_rh_no(proj, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_near_rh_no(mat4 proj, float * __restrict nearZ) { + glm_persp_decomp_near_rh_no(proj, nearZ); +} + +CGLM_EXPORT +void +glmc_persp_sizes_rh_no(mat4 proj, float fovy, vec4 dest) { + glm_persp_sizes_rh_no(proj, fovy, dest); +} + +CGLM_EXPORT +float +glmc_persp_fovy_rh_no(mat4 proj) { + return glm_persp_fovy_rh_no(proj); +} + +CGLM_EXPORT +float +glmc_persp_aspect_rh_no(mat4 proj) { + return glm_persp_aspect_rh_no(proj); +} diff --git a/lib/cglm/src/clipspace/persp_rh_zo.c b/lib/cglm/src/clipspace/persp_rh_zo.c new file mode 100644 index 0000000..50190f2 --- /dev/null +++ b/lib/cglm/src/clipspace/persp_rh_zo.c @@ -0,0 +1,110 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/persp_rh_zo.h" +#include "../../include/cglm/call/clipspace/persp_rh_zo.h" + +CGLM_EXPORT +void +glmc_frustum_rh_zo(float left, float right, + float bottom, float top, + float nearZ, float farZ, + mat4 dest) { + glm_frustum_rh_zo(left, right, + bottom, top, + nearZ, farZ, + dest); +} + +CGLM_EXPORT +void +glmc_perspective_rh_zo(float fovy, + float aspect, + float nearVal, + float farVal, + mat4 dest) { + glm_perspective_rh_zo(fovy, + aspect, + nearVal, + farVal, + dest); +} + +CGLM_EXPORT +void +glmc_persp_move_far_rh_zo(mat4 proj, float deltaFar) { + glm_persp_move_far_rh_zo(proj, deltaFar); +} + +CGLM_EXPORT +void +glmc_persp_decomp_rh_zo(mat4 proj, + float * __restrict nearZ, float * __restrict farZ, + float * __restrict top, float * __restrict bottom, + float * __restrict left, float * __restrict right) { + glm_persp_decomp_rh_zo(proj, nearZ, farZ, top, bottom, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decompv_rh_zo(mat4 proj, float dest[6]) { + glm_persp_decompv_rh_zo(proj, dest); +} + +CGLM_EXPORT +void +glmc_persp_decomp_x_rh_zo(mat4 proj, + float * __restrict left, + float * __restrict right) { + glm_persp_decomp_x_rh_zo(proj, left, right); +} + +CGLM_EXPORT +void +glmc_persp_decomp_y_rh_zo(mat4 proj, + float * __restrict top, + float * __restrict bottom) { + glm_persp_decomp_y_rh_zo(proj, top, bottom); +} + +CGLM_EXPORT +void +glmc_persp_decomp_z_rh_zo(mat4 proj, + float * __restrict nearZ, + float * __restrict farZ) { + glm_persp_decomp_z_rh_zo(proj, nearZ, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_far_rh_zo(mat4 proj, float * __restrict farZ) { + glm_persp_decomp_far_rh_zo(proj, farZ); +} + +CGLM_EXPORT +void +glmc_persp_decomp_near_rh_zo(mat4 proj, float * __restrict nearZ) { + glm_persp_decomp_near_rh_zo(proj, nearZ); +} + +CGLM_EXPORT +void +glmc_persp_sizes_rh_zo(mat4 proj, float fovy, vec4 dest) { + glm_persp_sizes_rh_zo(proj, fovy, dest); +} + +CGLM_EXPORT +float +glmc_persp_fovy_rh_zo(mat4 proj) { + return glm_persp_fovy_rh_zo(proj); +} + +CGLM_EXPORT +float +glmc_persp_aspect_rh_zo(mat4 proj) { + return glm_persp_aspect_rh_zo(proj); +} diff --git a/lib/cglm/src/clipspace/project_no.c b/lib/cglm/src/clipspace/project_no.c new file mode 100644 index 0000000..93b1453 --- /dev/null +++ b/lib/cglm/src/clipspace/project_no.c @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/project_no.h" +#include "../../include/cglm/call/clipspace/project_no.h" + +CGLM_EXPORT +void +glmc_unprojecti_no(vec3 pos, mat4 invMat, vec4 vp, vec3 dest) { + glm_unprojecti_no(pos, invMat, vp, dest); +} + +CGLM_EXPORT +void +glmc_project_no(vec3 pos, mat4 m, vec4 vp, vec3 dest) { + glm_project_no(pos, m, vp, dest); +} + +CGLM_EXPORT +float +glmc_project_z_no(vec3 pos, mat4 m) { + return glm_project_z_no(pos, m); +} diff --git a/lib/cglm/src/clipspace/project_zo.c b/lib/cglm/src/clipspace/project_zo.c new file mode 100644 index 0000000..6699be9 --- /dev/null +++ b/lib/cglm/src/clipspace/project_zo.c @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/project_zo.h" +#include "../../include/cglm/call/clipspace/project_zo.h" + +CGLM_EXPORT +void +glmc_unprojecti_zo(vec3 pos, mat4 invMat, vec4 vp, vec3 dest) { + glm_unprojecti_zo(pos, invMat, vp, dest); +} + +CGLM_EXPORT +void +glmc_project_zo(vec3 pos, mat4 m, vec4 vp, vec3 dest) { + glm_project_zo(pos, m, vp, dest); +} + +CGLM_EXPORT +float +glmc_project_z_zo(vec3 pos, mat4 m) { + return glm_project_z_zo(pos, m); +} diff --git a/lib/cglm/src/clipspace/view_lh_no.c b/lib/cglm/src/clipspace/view_lh_no.c new file mode 100644 index 0000000..39f2a9d --- /dev/null +++ b/lib/cglm/src/clipspace/view_lh_no.c @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/view_lh_no.h" +#include "../../include/cglm/call/clipspace/view_lh_no.h" + +CGLM_EXPORT +void +glmc_lookat_lh_no(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat_lh_no(eye, center, up, dest); +} + +CGLM_EXPORT +void +glmc_look_lh_no(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look_lh_no(eye, dir, up, dest); +} + +CGLM_EXPORT +void +glmc_look_anyup_lh_no(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup_lh_no(eye, dir, dest); +} diff --git a/lib/cglm/src/clipspace/view_lh_zo.c b/lib/cglm/src/clipspace/view_lh_zo.c new file mode 100644 index 0000000..a8680d9 --- /dev/null +++ b/lib/cglm/src/clipspace/view_lh_zo.c @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/view_lh_zo.h" +#include "../../include/cglm/call/clipspace/view_lh_zo.h" + +CGLM_EXPORT +void +glmc_lookat_lh_zo(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat_lh_zo(eye, center, up, dest); +} + +CGLM_EXPORT +void +glmc_look_lh_zo(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look_lh_zo(eye, dir, up, dest); +} + +CGLM_EXPORT +void +glmc_look_anyup_lh_zo(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup_lh_zo(eye, dir, dest); +} diff --git a/lib/cglm/src/clipspace/view_rh_no.c b/lib/cglm/src/clipspace/view_rh_no.c new file mode 100644 index 0000000..6d60c08 --- /dev/null +++ b/lib/cglm/src/clipspace/view_rh_no.c @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/view_rh_no.h" +#include "../../include/cglm/call/clipspace/view_rh_no.h" + +CGLM_EXPORT +void +glmc_lookat_rh_no(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat_rh_no(eye, center, up, dest); +} + +CGLM_EXPORT +void +glmc_look_rh_no(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look_rh_no(eye, dir, up, dest); +} + +CGLM_EXPORT +void +glmc_look_anyup_rh_no(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup_rh_no(eye, dir, dest); +} diff --git a/lib/cglm/src/clipspace/view_rh_zo.c b/lib/cglm/src/clipspace/view_rh_zo.c new file mode 100644 index 0000000..5133fda --- /dev/null +++ b/lib/cglm/src/clipspace/view_rh_zo.c @@ -0,0 +1,27 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../../include/cglm/clipspace/view_rh_zo.h" +#include "../../include/cglm/call/clipspace/view_rh_zo.h" + +CGLM_EXPORT +void +glmc_lookat_rh_zo(vec3 eye, vec3 center, vec3 up, mat4 dest) { + glm_lookat_rh_zo(eye, center, up, dest); +} + +CGLM_EXPORT +void +glmc_look_rh_zo(vec3 eye, vec3 dir, vec3 up, mat4 dest) { + glm_look_rh_zo(eye, dir, up, dest); +} + +CGLM_EXPORT +void +glmc_look_anyup_rh_zo(vec3 eye, vec3 dir, mat4 dest) { + glm_look_anyup_rh_zo(eye, dir, dest); +} diff --git a/lib/cglm/src/config.h b/lib/cglm/src/config.h new file mode 100644 index 0000000..ddec761 --- /dev/null +++ b/lib/cglm/src/config.h @@ -0,0 +1,22 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef cglm__config__h_ +#define cglm__config__h_ + +#if defined(_WIN32) || defined(WIN32) + +/* Exclude rarely-used stuff from Windows headers */ +# define WIN32_LEAN_AND_MEAN +# include + +/* Windows Header Files: */ +# include + +#endif + +#endif /* cglm__config__h_ */ diff --git a/lib/cglm/src/curve.c b/lib/cglm/src/curve.c new file mode 100644 index 0000000..74d4702 --- /dev/null +++ b/lib/cglm/src/curve.c @@ -0,0 +1,15 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +float +glmc_smc(float s, mat4 m, vec4 c) { + return glm_smc(s, m, c); +} diff --git a/lib/cglm/src/ease.c b/lib/cglm/src/ease.c new file mode 100644 index 0000000..702dfce --- /dev/null +++ b/lib/cglm/src/ease.c @@ -0,0 +1,195 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +float +glmc_ease_linear(float t) { + return glm_ease_linear(t); +} + +CGLM_EXPORT +float +glmc_ease_sine_in(float t) { + return glm_ease_sine_in(t); +} + +CGLM_EXPORT +float +glmc_ease_sine_out(float t) { + return glm_ease_sine_out(t); +} + +CGLM_EXPORT +float +glmc_ease_sine_inout(float t) { + return glm_ease_sine_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_quad_in(float t) { + return glm_ease_quad_in(t); +} + +CGLM_EXPORT +float +glmc_ease_quad_out(float t) { + return glm_ease_quad_out(t); +} + +CGLM_EXPORT +float +glmc_ease_quad_inout(float t) { + return glm_ease_quad_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_cubic_in(float t) { + return glm_ease_cubic_in(t); +} + +CGLM_EXPORT +float +glmc_ease_cubic_out(float t) { + return glm_ease_cubic_out(t); +} + +CGLM_EXPORT +float +glmc_ease_cubic_inout(float t) { + return glm_ease_cubic_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_quart_in(float t) { + return glm_ease_quart_in(t); +} + +CGLM_EXPORT +float +glmc_ease_quart_out(float t) { + return glm_ease_quart_out(t); +} + +CGLM_EXPORT +float +glmc_ease_quart_inout(float t) { + return glm_ease_quart_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_quint_in(float t) { + return glm_ease_quint_in(t); +} + +CGLM_EXPORT +float +glmc_ease_quint_out(float t) { + return glm_ease_quint_out(t); +} + +CGLM_EXPORT +float +glmc_ease_quint_inout(float t) { + return glm_ease_quint_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_exp_in(float t) { + return glm_ease_exp_in(t); +} + +CGLM_EXPORT +float +glmc_ease_exp_out(float t) { + return glm_ease_exp_out(t); +} + +CGLM_EXPORT +float +glmc_ease_exp_inout(float t) { + return glm_ease_exp_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_circ_in(float t) { + return glm_ease_circ_in(t); +} + +CGLM_EXPORT +float +glmc_ease_circ_out(float t) { + return glm_ease_circ_out(t); +} + +CGLM_EXPORT +float +glmc_ease_circ_inout(float t) { + return glm_ease_circ_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_back_in(float t) { + return glm_ease_back_in(t); +} + +CGLM_EXPORT +float +glmc_ease_back_out(float t) { + return glm_ease_back_out(t); +} + +CGLM_EXPORT +float +glmc_ease_back_inout(float t) { + return glm_ease_back_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_elast_in(float t) { + return glm_ease_elast_in(t); +} + +CGLM_EXPORT +float +glmc_ease_elast_out(float t) { + return glm_ease_elast_out(t); +} + +CGLM_EXPORT +float +glmc_ease_elast_inout(float t) { + return glm_ease_elast_inout(t); +} + +CGLM_EXPORT +float +glmc_ease_bounce_out(float t) { + return glm_ease_bounce_out(t); +} + +CGLM_EXPORT +float +glmc_ease_bounce_in(float t) { + return glm_ease_bounce_in(t); +} + +CGLM_EXPORT +float +glmc_ease_bounce_inout(float t) { + return glm_ease_bounce_inout(t); +} diff --git a/lib/cglm/src/euler.c b/lib/cglm/src/euler.c new file mode 100644 index 0000000..a59b1df --- /dev/null +++ b/lib/cglm/src/euler.c @@ -0,0 +1,63 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_euler_angles(mat4 m, vec3 dest) { + glm_euler_angles(m, dest); +} + +CGLM_EXPORT +void +glmc_euler(vec3 angles, mat4 dest) { + glm_euler(angles, dest); +} + +CGLM_EXPORT +void +glmc_euler_xyz(vec3 angles, mat4 dest) { + glm_euler_xyz(angles, dest); +} + +CGLM_EXPORT +void +glmc_euler_zyx(vec3 angles, mat4 dest) { + glm_euler_zyx(angles, dest); +} + +CGLM_EXPORT +void +glmc_euler_zxy(vec3 angles, mat4 dest) { + glm_euler_zxy(angles, dest); +} + +CGLM_EXPORT +void +glmc_euler_xzy(vec3 angles, mat4 dest) { + glm_euler_xzy(angles, dest); +} + +CGLM_EXPORT +void +glmc_euler_yzx(vec3 angles, mat4 dest) { + glm_euler_yzx(angles, dest); +} + +CGLM_EXPORT +void +glmc_euler_yxz(vec3 angles, mat4 dest) { + glm_euler_yxz(angles, dest); +} + +CGLM_EXPORT +void +glmc_euler_by_order(vec3 angles, glm_euler_seq axis, mat4 dest) { + glm_euler_by_order(angles, axis, dest); +} diff --git a/lib/cglm/src/frustum.c b/lib/cglm/src/frustum.c new file mode 100644 index 0000000..312c3d3 --- /dev/null +++ b/lib/cglm/src/frustum.c @@ -0,0 +1,42 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_frustum_planes(mat4 m, vec4 dest[6]) { + glm_frustum_planes(m, dest); +} + +CGLM_EXPORT +void +glmc_frustum_corners(mat4 invMat, vec4 dest[8]) { + glm_frustum_corners(invMat, dest); +} + +CGLM_EXPORT +void +glmc_frustum_center(vec4 corners[8], vec4 dest) { + glm_frustum_center(corners, dest); +} + +CGLM_EXPORT +void +glmc_frustum_box(vec4 corners[8], mat4 m, vec3 box[2]) { + glm_frustum_box(corners, m, box); +} + +CGLM_EXPORT +void +glmc_frustum_corners_at(vec4 corners[8], + float splitDist, + float farDist, + vec4 planeCorners[4]) { + glm_frustum_corners_at(corners, splitDist, farDist, planeCorners); +} diff --git a/lib/cglm/src/io.c b/lib/cglm/src/io.c new file mode 100644 index 0000000..fd81dac --- /dev/null +++ b/lib/cglm/src/io.c @@ -0,0 +1,46 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#define CGLM_LIB_SRC + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_mat4_print(mat4 matrix, + FILE * __restrict ostream) { + glm_mat4_print(matrix, ostream); +} + +CGLM_EXPORT +void +glmc_mat3_print(mat3 matrix, + FILE * __restrict ostream) { + glm_mat3_print(matrix, ostream); +} + +CGLM_EXPORT +void +glmc_vec4_print(vec4 vec, + FILE * __restrict ostream) { + glm_vec4_print(vec, ostream); +} + +CGLM_EXPORT +void +glmc_vec3_print(vec3 vec, + FILE * __restrict ostream) { + glm_vec3_print(vec, ostream); +} + +CGLM_EXPORT +void +glmc_versor_print(versor vec, + FILE * __restrict ostream) { + glm_versor_print(vec, ostream); +} diff --git a/lib/cglm/src/ivec2.c b/lib/cglm/src/ivec2.c new file mode 100644 index 0000000..1162c22 --- /dev/null +++ b/lib/cglm/src/ivec2.c @@ -0,0 +1,99 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_ivec2(int * __restrict v, ivec2 dest) { + glm_ivec2(v, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_copy(ivec2 a, ivec2 dest) { + glm_ivec2_copy(a, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_zero(ivec2 v) { + glm_ivec2_zero(v); +} + +CGLM_EXPORT +void +glmc_ivec2_one(ivec2 v) { + glm_ivec2_one(v); +} + +CGLM_EXPORT +void +glmc_ivec2_add(ivec2 a, ivec2 b, ivec2 dest) { + glm_ivec2_add(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_adds(ivec2 v, int s, ivec2 dest) { + glm_ivec2_adds(v, s, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_sub(ivec2 a, ivec2 b, ivec2 dest) { + glm_ivec2_sub(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_subs(ivec2 v, int s, ivec2 dest) { + glm_ivec2_subs(v, s, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_mul(ivec2 a, ivec2 b, ivec2 dest) { + glm_ivec2_mul(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_scale(ivec2 v, int s, ivec2 dest) { + glm_ivec2_scale(v, s, dest); +} + +CGLM_EXPORT +int +glmc_ivec2_distance2(ivec2 a, ivec2 b) { + return glm_ivec2_distance2(a, b); +} + +CGLM_EXPORT +float +glmc_ivec2_distance(ivec2 a, ivec2 b) { + return glm_ivec2_distance(a, b); +} + +CGLM_EXPORT +void +glmc_ivec2_maxv(ivec2 a, ivec2 b, ivec2 dest) { + glm_ivec2_maxv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_minv(ivec2 a, ivec2 b, ivec2 dest) { + glm_ivec2_minv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec2_clamp(ivec2 v, int minVal, int maxVal) { + glm_ivec2_clamp(v, minVal, maxVal); +} diff --git a/lib/cglm/src/ivec3.c b/lib/cglm/src/ivec3.c new file mode 100644 index 0000000..1e14dd3 --- /dev/null +++ b/lib/cglm/src/ivec3.c @@ -0,0 +1,99 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_ivec3(ivec4 v4, ivec3 dest) { + glm_ivec3(v4, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_copy(ivec3 a, ivec3 dest) { + glm_ivec3_copy(a, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_zero(ivec3 v) { + glm_ivec3_zero(v); +} + +CGLM_EXPORT +void +glmc_ivec3_one(ivec3 v) { + glm_ivec3_one(v); +} + +CGLM_EXPORT +void +glmc_ivec3_add(ivec3 a, ivec3 b, ivec3 dest) { + glm_ivec3_add(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_adds(ivec3 v, int s, ivec3 dest) { + glm_ivec3_adds(v, s, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_sub(ivec3 a, ivec3 b, ivec3 dest) { + glm_ivec3_sub(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_subs(ivec3 v, int s, ivec3 dest) { + glm_ivec3_subs(v, s, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_mul(ivec3 a, ivec3 b, ivec3 dest) { + glm_ivec3_mul(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_scale(ivec3 v, int s, ivec3 dest) { + glm_ivec3_scale(v, s, dest); +} + +CGLM_EXPORT +int +glmc_ivec3_distance2(ivec3 a, ivec3 b) { + return glm_ivec3_distance2(a, b); +} + +CGLM_EXPORT +float +glmc_ivec3_distance(ivec3 a, ivec3 b) { + return glm_ivec3_distance(a, b); +} + +CGLM_EXPORT +void +glmc_ivec3_maxv(ivec3 a, ivec3 b, ivec3 dest) { + glm_ivec3_maxv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_minv(ivec3 a, ivec3 b, ivec3 dest) { + glm_ivec3_minv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec3_clamp(ivec3 v, int minVal, int maxVal) { + glm_ivec3_clamp(v, minVal, maxVal); +} diff --git a/lib/cglm/src/ivec4.c b/lib/cglm/src/ivec4.c new file mode 100644 index 0000000..ea69042 --- /dev/null +++ b/lib/cglm/src/ivec4.c @@ -0,0 +1,99 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_ivec4(ivec3 v3, int last, ivec4 dest) { + glm_ivec4(v3, last, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_copy(ivec4 a, ivec4 dest) { + glm_ivec4_copy(a, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_zero(ivec4 v) { + glm_ivec4_zero(v); +} + +CGLM_EXPORT +void +glmc_ivec4_one(ivec4 v) { + glm_ivec4_one(v); +} + +CGLM_EXPORT +void +glmc_ivec4_add(ivec4 a, ivec4 b, ivec4 dest) { + glm_ivec4_add(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_adds(ivec4 v, int s, ivec4 dest) { + glm_ivec4_adds(v, s, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_sub(ivec4 a, ivec4 b, ivec4 dest) { + glm_ivec4_sub(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_subs(ivec4 v, int s, ivec4 dest) { + glm_ivec4_subs(v, s, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_mul(ivec4 a, ivec4 b, ivec4 dest) { + glm_ivec4_mul(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_scale(ivec4 v, int s, ivec4 dest) { + glm_ivec4_scale(v, s, dest); +} + +CGLM_EXPORT +int +glmc_ivec4_distance2(ivec4 a, ivec4 b) { + return glm_ivec4_distance2(a, b); +} + +CGLM_EXPORT +float +glmc_ivec4_distance(ivec4 a, ivec4 b) { + return glm_ivec4_distance(a, b); +} + +CGLM_EXPORT +void +glmc_ivec4_maxv(ivec4 a, ivec4 b, ivec4 dest) { + glm_ivec4_maxv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_minv(ivec4 a, ivec4 b, ivec4 dest) { + glm_ivec4_minv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_ivec4_clamp(ivec4 v, int minVal, int maxVal) { + glm_ivec4_clamp(v, minVal, maxVal); +} diff --git a/lib/cglm/src/mat2.c b/lib/cglm/src/mat2.c new file mode 100644 index 0000000..99a282d --- /dev/null +++ b/lib/cglm/src/mat2.c @@ -0,0 +1,99 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_mat2_copy(mat2 mat, mat2 dest) { + glm_mat2_copy(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat2_identity(mat2 mat) { + glm_mat2_identity(mat); +} + +CGLM_EXPORT +void +glmc_mat2_identity_array(mat2 * __restrict mat, size_t count) { + glm_mat2_identity_array(mat, count); +} + +CGLM_EXPORT +void +glmc_mat2_zero(mat2 mat) { + glm_mat2_zero(mat); +} + +CGLM_EXPORT +void +glmc_mat2_mul(mat2 m1, mat2 m2, mat2 dest) { + glm_mat2_mul(m1, m2, dest); +} + +CGLM_EXPORT +void +glmc_mat2_transpose_to(mat2 m, mat2 dest) { + glm_mat2_transpose_to(m, dest); +} + +CGLM_EXPORT +void +glmc_mat2_transpose(mat2 m) { + glm_mat2_transpose(m); +} + +CGLM_EXPORT +void +glmc_mat2_mulv(mat2 m, vec2 v, vec2 dest) { + glm_mat2_mulv(m, v, dest); +} + +CGLM_EXPORT +float +glmc_mat2_trace(mat2 m) { + return glm_mat2_trace(m); +} + +CGLM_EXPORT +void +glmc_mat2_scale(mat2 m, float s) { + glm_mat2_scale(m, s); +} + +CGLM_EXPORT +float +glmc_mat2_det(mat2 mat) { + return glm_mat2_det(mat); +} + +CGLM_EXPORT +void +glmc_mat2_inv(mat2 mat, mat2 dest) { + glm_mat2_inv(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat2_swap_col(mat2 mat, int col1, int col2) { + glm_mat2_swap_col(mat, col1, col2); +} + +CGLM_EXPORT +void +glmc_mat2_swap_row(mat2 mat, int row1, int row2) { + glm_mat2_swap_row(mat, row1, row2); +} + +CGLM_EXPORT +float +glmc_mat2_rmc(vec2 r, mat2 m, vec2 c) { + return glm_mat2_rmc(r, m, c); +} diff --git a/lib/cglm/src/mat3.c b/lib/cglm/src/mat3.c new file mode 100644 index 0000000..1286bd9 --- /dev/null +++ b/lib/cglm/src/mat3.c @@ -0,0 +1,105 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_mat3_copy(mat3 mat, mat3 dest) { + glm_mat3_copy(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat3_identity(mat3 mat) { + glm_mat3_identity(mat); +} + +CGLM_EXPORT +void +glmc_mat3_zero(mat3 mat) { + glm_mat3_zero(mat); +} + +CGLM_EXPORT +void +glmc_mat3_identity_array(mat3 * __restrict mat, size_t count) { + glm_mat3_identity_array(mat, count); +} + +CGLM_EXPORT +void +glmc_mat3_mul(mat3 m1, mat3 m2, mat3 dest) { + glm_mat3_mul(m1, m2, dest); +} + +CGLM_EXPORT +void +glmc_mat3_transpose_to(mat3 m, mat3 dest) { + glm_mat3_transpose_to(m, dest); +} + +CGLM_EXPORT +void +glmc_mat3_transpose(mat3 m) { + glm_mat3_transpose(m); +} + +CGLM_EXPORT +void +glmc_mat3_mulv(mat3 m, vec3 v, vec3 dest) { + glm_mat3_mulv(m, v, dest); +} + +CGLM_EXPORT +float +glmc_mat3_trace(mat3 m) { + return glm_mat3_trace(m); +} + +CGLM_EXPORT +void +glmc_mat3_quat(mat3 m, versor dest) { + glm_mat3_quat(m, dest); +} + +CGLM_EXPORT +void +glmc_mat3_scale(mat3 m, float s) { + glm_mat3_scale(m, s); +} + +CGLM_EXPORT +float +glmc_mat3_det(mat3 mat) { + return glm_mat3_det(mat); +} + +CGLM_EXPORT +void +glmc_mat3_inv(mat3 mat, mat3 dest) { + glm_mat3_inv(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat3_swap_col(mat3 mat, int col1, int col2) { + glm_mat3_swap_col(mat, col1, col2); +} + +CGLM_EXPORT +void +glmc_mat3_swap_row(mat3 mat, int row1, int row2) { + glm_mat3_swap_row(mat, row1, row2); +} + +CGLM_EXPORT +float +glmc_mat3_rmc(vec3 r, mat3 m, vec3 c) { + return glm_mat3_rmc(r, m, c); +} diff --git a/lib/cglm/src/mat4.c b/lib/cglm/src/mat4.c new file mode 100644 index 0000000..a9f39c6 --- /dev/null +++ b/lib/cglm/src/mat4.c @@ -0,0 +1,165 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_mat4_ucopy(mat4 mat, mat4 dest) { + glm_mat4_copy(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat4_copy(mat4 mat, mat4 dest) { + glm_mat4_copy(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat4_identity(mat4 mat) { + glm_mat4_identity(mat); +} + +CGLM_EXPORT +void +glmc_mat4_identity_array(mat4 * __restrict mat, size_t count) { + glm_mat4_identity_array(mat, count); +} + +CGLM_EXPORT +void +glmc_mat4_zero(mat4 mat) { + glm_mat4_zero(mat); +} + +CGLM_EXPORT +void +glmc_mat4_pick3(mat4 mat, mat3 dest) { + glm_mat4_pick3(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat4_pick3t(mat4 mat, mat3 dest) { + glm_mat4_pick3t(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat4_ins3(mat3 mat, mat4 dest) { + glm_mat4_ins3(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat4_mul(mat4 m1, mat4 m2, mat4 dest) { + glm_mat4_mul(m1, m2, dest); +} + +CGLM_EXPORT +void +glmc_mat4_mulN(mat4 * __restrict matrices[], uint32_t len, mat4 dest) { + glm_mat4_mulN(matrices, len, dest); +} + +CGLM_EXPORT +void +glmc_mat4_mulv(mat4 m, vec4 v, vec4 dest) { + glm_mat4_mulv(m, v, dest); +} + +CGLM_EXPORT +void +glmc_mat4_mulv3(mat4 m, vec3 v, float last, vec3 dest) { + glm_mat4_mulv3(m, v, last, dest); +} + +CGLM_EXPORT +float +glmc_mat4_trace(mat4 m) { + return glm_mat4_trace(m); +} + +CGLM_EXPORT +float +glmc_mat4_trace3(mat4 m) { + return glm_mat4_trace3(m); +} + +CGLM_EXPORT +void +glmc_mat4_quat(mat4 m, versor dest) { + glm_mat4_quat(m, dest); +} + +CGLM_EXPORT +void +glmc_mat4_transpose_to(mat4 m, mat4 dest) { + glm_mat4_transpose_to(m, dest); +} + +CGLM_EXPORT +void +glmc_mat4_transpose(mat4 m) { + glm_mat4_transpose(m); +} + +CGLM_EXPORT +void +glmc_mat4_scale_p(mat4 m, float s) { + glm_mat4_scale_p(m, s); +} + +CGLM_EXPORT +void +glmc_mat4_scale(mat4 m, float s) { + glm_mat4_scale(m, s); +} + +CGLM_EXPORT +float +glmc_mat4_det(mat4 mat) { + return glm_mat4_det(mat); +} + +CGLM_EXPORT +void +glmc_mat4_inv(mat4 mat, mat4 dest) { + glm_mat4_inv(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat4_inv_precise(mat4 mat, mat4 dest) { + glm_mat4_inv_precise(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat4_inv_fast(mat4 mat, mat4 dest) { + glm_mat4_inv_fast(mat, dest); +} + +CGLM_EXPORT +void +glmc_mat4_swap_col(mat4 mat, int col1, int col2) { + glm_mat4_swap_col(mat, col1, col2); +} + +CGLM_EXPORT +void +glmc_mat4_swap_row(mat4 mat, int row1, int row2) { + glm_mat4_swap_row(mat, row1, row2); +} + +CGLM_EXPORT +float +glmc_mat4_rmc(vec4 r, mat4 m, vec4 c) { + return glm_mat4_rmc(r, m, c); +} diff --git a/lib/cglm/src/plane.c b/lib/cglm/src/plane.c new file mode 100644 index 0000000..7ee0c0f --- /dev/null +++ b/lib/cglm/src/plane.c @@ -0,0 +1,15 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_plane_normalize(vec4 plane) { + glm_plane_normalize(plane); +} diff --git a/lib/cglm/src/project.c b/lib/cglm/src/project.c new file mode 100644 index 0000000..4d22337 --- /dev/null +++ b/lib/cglm/src/project.c @@ -0,0 +1,39 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_unprojecti(vec3 pos, mat4 invMat, vec4 vp, vec3 dest) { + glm_unprojecti(pos, invMat, vp, dest); +} + +CGLM_EXPORT +void +glmc_unproject(vec3 pos, mat4 m, vec4 vp, vec3 dest) { + glm_unproject(pos, m, vp, dest); +} + +CGLM_EXPORT +void +glmc_project(vec3 pos, mat4 m, vec4 vp, vec3 dest) { + glm_project(pos, m, vp, dest); +} + +CGLM_EXPORT +float +glmc_project_z(vec3 pos, mat4 m) { + return glm_project_z(pos, m); +} + +CGLM_EXPORT +void +glmc_pickmatrix(vec2 center, vec2 size, vec4 vp, mat4 dest) { + glm_pickmatrix(center, size, vp, dest); +} diff --git a/lib/cglm/src/quat.c b/lib/cglm/src/quat.c new file mode 100644 index 0000000..415269a --- /dev/null +++ b/lib/cglm/src/quat.c @@ -0,0 +1,231 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_quat_identity(versor q) { + glm_quat_identity(q); +} + +CGLM_EXPORT +void +glmc_quat_identity_array(versor * __restrict q, size_t count) { + glm_quat_identity_array(q, count); +} + +CGLM_EXPORT +void +glmc_quat_init(versor q, float x, float y, float z, float w) { + glm_quat_init(q, x, y, z, w); +} + +CGLM_EXPORT +void +glmc_quat(versor q, float angle, float x, float y, float z) { + glm_quat(q, angle, x, y, z); +} + +CGLM_EXPORT +void +glmc_quatv(versor q, float angle, vec3 axis) { + glm_quatv(q, angle, axis); +} + +CGLM_EXPORT +void +glmc_quat_copy(versor q, versor dest) { + glm_quat_copy(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_from_vecs(vec3 a, vec3 b, versor dest) { + glm_quat_from_vecs(a, b, dest); +} + +CGLM_EXPORT +float +glmc_quat_norm(versor q) { + return glm_quat_norm(q); +} + +CGLM_EXPORT +void +glmc_quat_normalize_to(versor q, versor dest) { + glm_quat_normalize_to(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_normalize(versor q) { + glm_quat_normalize(q); +} + +CGLM_EXPORT +float +glmc_quat_dot(versor p, versor q) { + return glm_quat_dot(p, q); +} + +CGLM_EXPORT +void +glmc_quat_conjugate(versor q, versor dest) { + glm_quat_conjugate(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_inv(versor q, versor dest) { + glm_quat_inv(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_add(versor p, versor q, versor dest) { + glm_quat_add(p, q, dest); +} + +CGLM_EXPORT +void +glmc_quat_sub(versor p, versor q, versor dest) { + glm_quat_sub(p, q, dest); +} + +CGLM_EXPORT +float +glmc_quat_real(versor q) { + return glm_quat_real(q); +} + +CGLM_EXPORT +void +glmc_quat_imag(versor q, vec3 dest) { + glm_quat_imag(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_imagn(versor q, vec3 dest) { + glm_quat_imagn(q, dest); +} + +CGLM_EXPORT +float +glmc_quat_imaglen(versor q) { + return glm_quat_imaglen(q); +} + +CGLM_EXPORT +float +glmc_quat_angle(versor q) { + return glm_quat_angle(q); +} + +CGLM_EXPORT +void +glmc_quat_axis(versor q, vec3 dest) { + glm_quat_axis(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_mul(versor p, versor q, versor dest) { + glm_quat_mul(p, q, dest); +} + +CGLM_EXPORT +void +glmc_quat_mat4(versor q, mat4 dest) { + glm_quat_mat4(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_mat4t(versor q, mat4 dest) { + glm_quat_mat4t(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_mat3(versor q, mat3 dest) { + glm_quat_mat3(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_mat3t(versor q, mat3 dest) { + glm_quat_mat3t(q, dest); +} + +CGLM_EXPORT +void +glmc_quat_lerp(versor from, versor to, float t, versor dest) { + glm_quat_lerp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_quat_lerpc(versor from, versor to, float t, versor dest) { + glm_quat_lerpc(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_quat_nlerp(versor from, versor to, float t, versor dest) { + glm_quat_nlerp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_quat_slerp(versor from, versor to, float t, versor dest) { + glm_quat_slerp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_quat_look(vec3 eye, versor ori, mat4 dest) { + glm_quat_look(eye, ori, dest); +} + +CGLM_EXPORT +void +glmc_quat_for(vec3 dir, vec3 up, versor dest) { + glm_quat_for(dir, up, dest); +} + +CGLM_EXPORT +void +glmc_quat_forp(vec3 from, vec3 to, vec3 up, versor dest) { + glm_quat_forp(from, to, up, dest); +} + +CGLM_EXPORT +void +glmc_quat_rotatev(versor q, vec3 v, vec3 dest) { + glm_quat_rotatev(q, v, dest); +} + +CGLM_EXPORT +void +glmc_quat_rotate(mat4 m, versor q, mat4 dest) { + glm_quat_rotate(m, q, dest); +} + +CGLM_EXPORT +void +glmc_quat_rotate_at(mat4 model, versor q, vec3 pivot) { + glm_quat_rotate_at(model, q, pivot); +} + +CGLM_EXPORT +void +glmc_quat_rotate_atm(mat4 m, versor q, vec3 pivot) { + glm_quat_rotate_atm(m, q, pivot); +} diff --git a/lib/cglm/src/ray.c b/lib/cglm/src/ray.c new file mode 100644 index 0000000..973c059 --- /dev/null +++ b/lib/cglm/src/ray.c @@ -0,0 +1,13 @@ +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +bool +glmc_ray_triangle(vec3 origin, + vec3 direction, + vec3 v0, + vec3 v1, + vec3 v2, + float *d) { + return glm_ray_triangle(origin, direction, v0, v1, v2, d); +} diff --git a/lib/cglm/src/sphere.c b/lib/cglm/src/sphere.c new file mode 100644 index 0000000..003ef87 --- /dev/null +++ b/lib/cglm/src/sphere.c @@ -0,0 +1,39 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +float +glmc_sphere_radii(vec4 s) { + return glm_sphere_radii(s); +} + +CGLM_EXPORT +void +glmc_sphere_transform(vec4 s, mat4 m, vec4 dest) { + glm_sphere_transform(s, m, dest); +} + +CGLM_EXPORT +void +glmc_sphere_merge(vec4 s1, vec4 s2, vec4 dest) { + glm_sphere_merge(s1, s2, dest); +} + +CGLM_EXPORT +bool +glmc_sphere_sphere(vec4 s1, vec4 s2) { + return glm_sphere_sphere(s1, s2); +} + +CGLM_EXPORT +bool +glmc_sphere_point(vec4 s, vec3 point) { + return glm_sphere_point(s, point); +} diff --git a/lib/cglm/src/swift/empty.c b/lib/cglm/src/swift/empty.c new file mode 100644 index 0000000..7c27d40 --- /dev/null +++ b/lib/cglm/src/swift/empty.c @@ -0,0 +1 @@ +// This empty file is needed to trick swiftpm to build the header-only version of cglm as swiftpm itself does not support C targets that have no source code files \ No newline at end of file diff --git a/lib/cglm/src/vec2.c b/lib/cglm/src/vec2.c new file mode 100644 index 0000000..a75f3f0 --- /dev/null +++ b/lib/cglm/src/vec2.c @@ -0,0 +1,231 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_vec2(float * __restrict v, vec2 dest) { + glm_vec2(v, dest); +} + +CGLM_EXPORT +void +glmc_vec2_copy(vec2 a, vec2 dest) { + glm_vec2_copy(a, dest); +} + +CGLM_EXPORT +void +glmc_vec2_zero(vec2 v) { + glm_vec2_zero(v); +} + +CGLM_EXPORT +void +glmc_vec2_one(vec2 v) { + glm_vec2_one(v); +} + +CGLM_EXPORT +float +glmc_vec2_dot(vec2 a, vec2 b) { + return glm_vec2_dot(a, b); +} + +CGLM_EXPORT +float +glmc_vec2_cross(vec2 a, vec2 b) { + return glm_vec2_cross(a, b); +} + +CGLM_EXPORT +float +glmc_vec2_norm2(vec2 v) { + return glm_vec2_norm2(v); +} + +CGLM_EXPORT +float +glmc_vec2_norm(vec2 v) { + return glm_vec2_norm(v); +} + +CGLM_EXPORT +void +glmc_vec2_add(vec2 a, vec2 b, vec2 dest) { + glm_vec2_add(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_adds(vec2 v, float s, vec2 dest) { + glm_vec2_adds(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec2_sub(vec2 a, vec2 b, vec2 dest) { + glm_vec2_sub(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_subs(vec2 v, float s, vec2 dest) { + glm_vec2_subs(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec2_mul(vec2 a, vec2 b, vec2 dest) { + glm_vec2_mul(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_scale(vec2 v, float s, vec2 dest) { + glm_vec2_scale(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec2_scale_as(vec2 v, float s, vec2 dest) { + glm_vec2_scale_as(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec2_div(vec2 a, vec2 b, vec2 dest) { + glm_vec2_div(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_divs(vec2 v, float s, vec2 dest) { + glm_vec2_divs(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec2_addadd(vec2 a, vec2 b, vec2 dest) { + glm_vec2_addadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_subadd(vec2 a, vec2 b, vec2 dest) { + glm_vec2_subadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_muladd(vec2 a, vec2 b, vec2 dest) { + glm_vec2_muladd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_muladds(vec2 a, float s, vec2 dest) { + glm_vec2_muladds(a, s, dest); +} + +CGLM_EXPORT +void +glmc_vec2_maxadd(vec2 a, vec2 b, vec2 dest) { + glm_vec2_maxadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_minadd(vec2 a, vec2 b, vec2 dest) { + glm_vec2_minadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_negate_to(vec2 v, vec2 dest) { + glm_vec2_negate_to(v, dest); +} + +CGLM_EXPORT +void +glmc_vec2_negate(vec2 v) { + glm_vec2_negate(v); +} + +CGLM_EXPORT +void +glmc_vec2_normalize(vec2 v) { + glm_vec2_normalize(v); +} + +CGLM_EXPORT +void +glmc_vec2_normalize_to(vec2 v, vec2 dest) { + glm_vec2_normalize_to(v, dest); +} + +CGLM_EXPORT +void +glmc_vec2_rotate(vec2 v, float angle, vec2 dest) { + glm_vec2_rotate(v, angle, dest); +} + +CGLM_EXPORT +float +glmc_vec2_distance2(vec2 a, vec2 b) { + return glm_vec2_distance2(a, b); +} + +CGLM_EXPORT +float +glmc_vec2_distance(vec2 a, vec2 b) { + return glm_vec2_distance(a, b); +} + +CGLM_EXPORT +void +glmc_vec2_maxv(vec2 a, vec2 b, vec2 dest) { + glm_vec2_maxv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_minv(vec2 a, vec2 b, vec2 dest) { + glm_vec2_minv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_clamp(vec2 v, float minval, float maxval) { + glm_vec2_clamp(v, minval, maxval); +} + +CGLM_EXPORT +void +glmc_vec2_lerp(vec2 from, vec2 to, float t, vec2 dest) { + glm_vec2_lerp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec2_complex_mul(vec2 a, vec2 b, vec2 dest) { + glm_vec2_complex_mul(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_complex_div(vec2 a, vec2 b, vec2 dest) { + glm_vec2_complex_div(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec2_complex_conjugate(vec2 a, vec2 dest) { + glm_vec2_complex_conjugate(a, dest); +} diff --git a/lib/cglm/src/vec3.c b/lib/cglm/src/vec3.c new file mode 100644 index 0000000..a09a2ef --- /dev/null +++ b/lib/cglm/src/vec3.c @@ -0,0 +1,419 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_vec3(vec4 v4, vec3 dest) { + glm_vec3(v4, dest); +} + +CGLM_EXPORT +void +glmc_vec3_copy(vec3 a, vec3 dest) { + glm_vec3_copy(a, dest); +} + +CGLM_EXPORT +void +glmc_vec3_zero(vec3 v) { + glm_vec3_zero(v); +} + +CGLM_EXPORT +void +glmc_vec3_one(vec3 v) { + glm_vec3_one(v); +} + +CGLM_EXPORT +float +glmc_vec3_dot(vec3 a, vec3 b) { + return glm_vec3_dot(a, b); +} + +CGLM_EXPORT +void +glmc_vec3_cross(vec3 a, vec3 b, vec3 dest) { + glm_vec3_cross(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_crossn(vec3 a, vec3 b, vec3 dest) { + glm_vec3_crossn(a, b, dest); +} + +CGLM_EXPORT +float +glmc_vec3_norm(vec3 v) { + return glm_vec3_norm(v); +} + +CGLM_EXPORT +void +glmc_vec3_normalize_to(vec3 v, vec3 dest) { + glm_vec3_normalize_to(v, dest); +} + +CGLM_EXPORT +void +glmc_vec3_normalize(vec3 v) { + glm_vec3_normalize(v); +} + +CGLM_EXPORT +float +glmc_vec3_norm2(vec3 v) { + return glm_vec3_norm2(v); +} + +CGLM_EXPORT +float +glmc_vec3_norm_one(vec3 v) { + return glm_vec3_norm_one(v); +} + +CGLM_EXPORT +float +glmc_vec3_norm_inf(vec3 v) { + return glm_vec3_norm_inf(v); +} + +CGLM_EXPORT +void +glmc_vec3_add(vec3 a, vec3 b, vec3 dest) { + glm_vec3_add(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_adds(vec3 v, float s, vec3 dest) { + glm_vec3_adds(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec3_sub(vec3 a, vec3 b, vec3 dest) { + glm_vec3_sub(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_subs(vec3 v, float s, vec3 dest) { + glm_vec3_subs(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec3_mul(vec3 a, vec3 b, vec3 d) { + glm_vec3_mul(a, b, d); +} + +CGLM_EXPORT +void +glmc_vec3_scale(vec3 v, float s, vec3 dest) { + glm_vec3_scale(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec3_scale_as(vec3 v, float s, vec3 dest) { + glm_vec3_scale_as(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec3_div(vec3 a, vec3 b, vec3 dest) { + glm_vec3_div(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_divs(vec3 a, float s, vec3 dest) { + glm_vec3_divs(a, s, dest); +} + +CGLM_EXPORT +void +glmc_vec3_addadd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_addadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_subadd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_subadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_muladd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_muladd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_muladds(vec3 a, float s, vec3 dest) { + glm_vec3_muladds(a, s, dest); +} + +CGLM_EXPORT +void +glmc_vec3_maxadd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_maxadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_minadd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_minadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_negate(vec3 v) { + glm_vec3_negate(v); +} + +CGLM_EXPORT +void +glmc_vec3_negate_to(vec3 v, vec3 dest) { + glm_vec3_negate_to(v, dest); +} + +CGLM_EXPORT +float +glmc_vec3_angle(vec3 a, vec3 b) { + return glm_vec3_angle(a, b); +} + +CGLM_EXPORT +void +glmc_vec3_rotate(vec3 v, float angle, vec3 axis) { + glm_vec3_rotate(v, angle, axis); +} + +CGLM_EXPORT +void +glmc_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest) { + glm_vec3_rotate_m4(m, v, dest); +} + +CGLM_EXPORT +void +glmc_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest) { + glm_vec3_rotate_m3(m, v, dest); +} + +CGLM_EXPORT +void +glmc_vec3_proj(vec3 a, vec3 b, vec3 dest) { + glm_vec3_proj(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_center(vec3 a, vec3 b, vec3 dest) { + glm_vec3_center(a, b, dest); +} + +CGLM_EXPORT +float +glmc_vec3_distance(vec3 a, vec3 b) { + return glm_vec3_distance(a, b); +} + +CGLM_EXPORT +float +glmc_vec3_distance2(vec3 a, vec3 b) { + return glm_vec3_distance2(a, b); +} + +CGLM_EXPORT +void +glmc_vec3_maxv(vec3 a, vec3 b, vec3 dest) { + glm_vec3_maxv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_minv(vec3 a, vec3 b, vec3 dest) { + glm_vec3_minv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_clamp(vec3 v, float minVal, float maxVal) { + glm_vec3_clamp(v, minVal, maxVal); +} + +CGLM_EXPORT +void +glmc_vec3_ortho(vec3 v, vec3 dest) { + glm_vec3_ortho(v, dest); +} + +CGLM_EXPORT +void +glmc_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_lerp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec3_lerpc(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_lerpc(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec3_step_uni(float edge, vec3 x, vec3 dest) { + glm_vec3_step_uni(edge, x, dest); +} + +CGLM_EXPORT +void +glmc_vec3_step(vec3 edge, vec3 x, vec3 dest) { + glm_vec3_step(edge, x, dest); +} + +CGLM_EXPORT +void +glmc_vec3_smoothstep_uni(float edge0, float edge1, vec3 x, vec3 dest) { + glm_vec3_smoothstep_uni(edge0, edge1, x, dest); +} + +CGLM_EXPORT +void +glmc_vec3_smoothstep(vec3 edge0, vec3 edge1, vec3 x, vec3 dest) { + glm_vec3_smoothstep(edge0, edge1, x, dest); +} + +CGLM_EXPORT +void +glmc_vec3_smoothinterp(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_smoothinterp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec3_smoothinterpc(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_smoothinterpc(from, to, t, dest); +} + +/* ext */ + +CGLM_EXPORT +void +glmc_vec3_mulv(vec3 a, vec3 b, vec3 d) { + glm_vec3_mulv(a, b, d); +} + +CGLM_EXPORT +void +glmc_vec3_broadcast(float val, vec3 d) { + glm_vec3_broadcast(val, d); +} + +CGLM_EXPORT +void +glmc_vec3_fill(vec3 v, float val) { + glm_vec3_fill(v, val); +} + +CGLM_EXPORT +bool +glmc_vec3_eq(vec3 v, float val) { + return glm_vec3_eq(v, val); +} + +CGLM_EXPORT +bool +glmc_vec3_eq_eps(vec3 v, float val) { + return glm_vec3_eq_eps(v, val); +} + +CGLM_EXPORT +bool +glmc_vec3_eq_all(vec3 v) { + return glm_vec3_eq_all(v); +} + +CGLM_EXPORT +bool +glmc_vec3_eqv(vec3 a, vec3 b) { + return glm_vec3_eqv(a, b); +} + +CGLM_EXPORT +bool +glmc_vec3_eqv_eps(vec3 a, vec3 b) { + return glm_vec3_eqv_eps(a, b); +} + +CGLM_EXPORT +float +glmc_vec3_max(vec3 v) { + return glm_vec3_max(v); +} + +CGLM_EXPORT +float +glmc_vec3_min(vec3 v) { + return glm_vec3_min(v); +} + +CGLM_EXPORT +bool +glmc_vec3_isnan(vec3 v) { + return glm_vec3_isnan(v); +} + +CGLM_EXPORT +bool +glmc_vec3_isinf(vec3 v) { + return glm_vec3_isinf(v); +} + +CGLM_EXPORT +bool +glmc_vec3_isvalid(vec3 v) { + return glm_vec3_isvalid(v); +} + +CGLM_EXPORT +void +glmc_vec3_sign(vec3 v, vec3 dest) { + glm_vec3_sign(v, dest); +} + +CGLM_EXPORT +void +glmc_vec3_abs(vec3 v, vec3 dest) { + glm_vec3_abs(v, dest); +} + +CGLM_EXPORT +void +glmc_vec3_fract(vec3 v, vec3 dest) { + glm_vec3_fract(v, dest); +} + +CGLM_EXPORT +float +glmc_vec3_hadd(vec3 v) { + return glm_vec3_hadd(v); +} + +CGLM_EXPORT +void +glmc_vec3_sqrt(vec3 v, vec3 dest) { + glm_vec3_sqrt(v, dest); +} diff --git a/lib/cglm/src/vec4.c b/lib/cglm/src/vec4.c new file mode 100644 index 0000000..60c3a25 --- /dev/null +++ b/lib/cglm/src/vec4.c @@ -0,0 +1,383 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "../include/cglm/cglm.h" +#include "../include/cglm/call.h" + +CGLM_EXPORT +void +glmc_vec4(vec3 v3, float last, vec4 dest) { + glm_vec4(v3, last, dest); +} + +CGLM_EXPORT +void +glmc_vec4_zero(vec4 v) { + glm_vec4_zero(v); +} + +CGLM_EXPORT +void +glmc_vec4_one(vec4 v) { + glm_vec4_one(v); +} + +CGLM_EXPORT +void +glmc_vec4_copy3(vec4 v, vec3 dest) { + glm_vec4_copy3(v, dest); +} + +CGLM_EXPORT +void +glmc_vec4_copy(vec4 v, vec4 dest) { + glm_vec4_copy(v, dest); +} + +CGLM_EXPORT +void +glmc_vec4_ucopy(vec4 v, vec4 dest) { + glm_vec4_ucopy(v, dest); +} + +CGLM_EXPORT +float +glmc_vec4_dot(vec4 a, vec4 b) { + return glm_vec4_dot(a, b); +} + +CGLM_EXPORT +float +glmc_vec4_norm(vec4 v) { + return glm_vec4_norm(v); +} + +CGLM_EXPORT +void +glmc_vec4_normalize_to(vec4 v, vec4 dest) { + glm_vec4_normalize_to(v, dest); +} + +CGLM_EXPORT +void +glmc_vec4_normalize(vec4 v) { + glm_vec4_normalize(v); +} + +CGLM_EXPORT +float +glmc_vec4_norm2(vec4 v) { + return glm_vec4_norm2(v); +} + +CGLM_EXPORT +float +glmc_vec4_norm_one(vec4 v) { + return glm_vec4_norm_one(v); +} + +CGLM_EXPORT +float +glmc_vec4_norm_inf(vec4 v) { + return glm_vec4_norm_inf(v); +} + +CGLM_EXPORT +void +glmc_vec4_add(vec4 a, vec4 b, vec4 dest) { + glm_vec4_add(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_adds(vec4 v, float s, vec4 dest) { + glm_vec4_adds(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec4_sub(vec4 a, vec4 b, vec4 dest) { + glm_vec4_sub(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_subs(vec4 v, float s, vec4 dest) { + glm_vec4_subs(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec4_mul(vec4 a, vec4 b, vec4 d) { + glm_vec4_mul(a, b, d); +} + +CGLM_EXPORT +void +glmc_vec4_scale(vec4 v, float s, vec4 dest) { + glm_vec4_scale(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec4_scale_as(vec4 v, float s, vec4 dest) { + glm_vec4_scale_as(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec4_div(vec4 a, vec4 b, vec4 dest) { + glm_vec4_div(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_divs(vec4 v, float s, vec4 dest) { + glm_vec4_divs(v, s, dest); +} + +CGLM_EXPORT +void +glmc_vec4_addadd(vec4 a, vec4 b, vec4 dest) { + glm_vec4_addadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_subadd(vec4 a, vec4 b, vec4 dest) { + glm_vec4_subadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_muladd(vec4 a, vec4 b, vec4 dest) { + glm_vec4_muladd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_muladds(vec4 a, float s, vec4 dest) { + glm_vec4_muladds(a, s, dest); +} + +CGLM_EXPORT +void +glmc_vec4_maxadd(vec4 a, vec4 b, vec4 dest) { + glm_vec4_maxadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_minadd(vec4 a, vec4 b, vec4 dest) { + glm_vec4_minadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_negate(vec4 v) { + glm_vec4_negate(v); +} + +CGLM_EXPORT +void +glmc_vec4_negate_to(vec4 v, vec4 dest) { + glm_vec4_negate_to(v, dest); +} + +CGLM_EXPORT +float +glmc_vec4_distance(vec4 a, vec4 b) { + return glm_vec4_distance(a, b); +} + +CGLM_EXPORT +float +glmc_vec4_distance2(vec4 a, vec4 b) { + return glm_vec4_distance2(a, b); +} + +CGLM_EXPORT +void +glmc_vec4_maxv(vec4 a, vec4 b, vec4 dest) { + glm_vec4_maxv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_minv(vec4 a, vec4 b, vec4 dest) { + glm_vec4_minv(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_clamp(vec4 v, float minVal, float maxVal) { + glm_vec4_clamp(v, minVal, maxVal); +} + +CGLM_EXPORT +void +glmc_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest) { + glm_vec4_lerp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec4_lerpc(vec4 from, vec4 to, float t, vec4 dest) { + glm_vec4_lerpc(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec4_step_uni(float edge, vec4 x, vec4 dest) { + glm_vec4_step_uni(edge, x, dest); +} + +CGLM_EXPORT +void +glmc_vec4_step(vec4 edge, vec4 x, vec4 dest) { + glm_vec4_step(edge, x, dest); +} + +CGLM_EXPORT +void +glmc_vec4_smoothstep_uni(float edge0, float edge1, vec4 x, vec4 dest) { + glm_vec4_smoothstep_uni(edge0, edge1, x, dest); +} + +CGLM_EXPORT +void +glmc_vec4_smoothstep(vec4 edge0, vec4 edge1, vec4 x, vec4 dest) { + glm_vec4_smoothstep(edge0, edge1, x, dest); +} + +CGLM_EXPORT +void +glmc_vec4_smoothinterp(vec4 from, vec4 to, float t, vec4 dest) { + glm_vec4_smoothinterp(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec4_smoothinterpc(vec4 from, vec4 to, float t, vec4 dest) { + glm_vec4_smoothinterpc(from, to, t, dest); +} + +CGLM_EXPORT +void +glmc_vec4_cubic(float s, vec4 dest) { + glm_vec4_cubic(s, dest); +} + +/* ext */ + +CGLM_EXPORT +void +glmc_vec4_mulv(vec4 a, vec4 b, vec4 d) { + glm_vec4_mulv(a, b, d); +} + +CGLM_EXPORT +void +glmc_vec4_broadcast(float val, vec4 d) { + glm_vec4_broadcast(val, d); +} + +CGLM_EXPORT +void +glmc_vec4_fill(vec4 v, float val) { + glm_vec4_fill(v, val); +} + +CGLM_EXPORT +bool +glmc_vec4_eq(vec4 v, float val) { + return glm_vec4_eq(v, val); +} + +CGLM_EXPORT +bool +glmc_vec4_eq_eps(vec4 v, float val) { + return glm_vec4_eq_eps(v, val); +} + +CGLM_EXPORT +bool +glmc_vec4_eq_all(vec4 v) { + return glm_vec4_eq_all(v); +} + +CGLM_EXPORT +bool +glmc_vec4_eqv(vec4 a, vec4 b) { + return glm_vec4_eqv(a, b); +} + +CGLM_EXPORT +bool +glmc_vec4_eqv_eps(vec4 a, vec4 b) { + return glm_vec4_eqv_eps(a, b); +} + +CGLM_EXPORT +float +glmc_vec4_max(vec4 v) { + return glm_vec4_max(v); +} + +CGLM_EXPORT +float +glmc_vec4_min(vec4 v) { + return glm_vec4_min(v); +} + +CGLM_EXPORT +bool +glmc_vec4_isnan(vec4 v) { + return glm_vec4_isnan(v); +} + +CGLM_EXPORT +bool +glmc_vec4_isinf(vec4 v) { + return glm_vec4_isinf(v); +} + +CGLM_EXPORT +bool +glmc_vec4_isvalid(vec4 v) { + return glm_vec4_isvalid(v); +} + +CGLM_EXPORT +void +glmc_vec4_sign(vec4 v, vec4 dest) { + glm_vec4_sign(v, dest); +} + +CGLM_EXPORT +void +glmc_vec4_abs(vec4 v, vec4 dest) { + glm_vec4_abs(v, dest); +} + +CGLM_EXPORT +void +glmc_vec4_fract(vec4 v, vec4 dest) { + glm_vec4_fract(v, dest); +} + +CGLM_EXPORT +float +glmc_vec4_hadd(vec4 v) { + return glm_vec4_hadd(v); +} + +CGLM_EXPORT +void +glmc_vec4_sqrt(vec4 v, vec4 dest) { + glm_vec4_sqrt(v, dest); +} diff --git a/lib/cglm/test/CMakeLists.txt b/lib/cglm/test/CMakeLists.txt new file mode 100644 index 0000000..26fef9c --- /dev/null +++ b/lib/cglm/test/CMakeLists.txt @@ -0,0 +1,48 @@ +cmake_minimum_required(VERSION 3.8.2) + +# List all files containing tests. (Change as needed) +set(TESTFILES + runner.c + src/test_euler.c + src/test_bezier.c + src/test_cam.c + src/test_cam_lh_zo.c + src/test_cam_rh_zo.c + src/test_cam_lh_no.c + src/test_cam_rh_no.c + src/test_struct.c + src/test_clamp.c + src/test_common.c + src/tests.c + ) + +set(TEST_MAIN tests) +set(TEST_RUNNER_PARAMS "") + +add_executable(${TEST_MAIN} ${TESTFILES}) +target_compile_definitions(${TEST_MAIN} PRIVATE CGLM_DEFINE_PRINTS=1) + +if(NOT MSVC) + target_link_libraries(${TEST_MAIN} PRIVATE m) +endif() + +target_link_libraries(${TEST_MAIN} PRIVATE cglm) +target_include_directories(${TEST_MAIN} PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/include + ${CMAKE_CURRENT_LIST_DIR}/src + ) + +set_target_properties(${TEST_MAIN} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + +if(LDFLAGS) + target_compile_options(${TEST_MAIN} PRIVATE ${LDFLAGS}) +endif() + +add_test( + NAME cglm.${TEST_MAIN} + COMMAND ${TEST_MAIN} ${TEST_RUNNER_PARAMS}) + +add_custom_target(check + make + COMMAND ${CMAKE_CTEST_COMMAND} -V + DEPENDS cglm) diff --git a/lib/cglm/test/include/common.h b/lib/cglm/test/include/common.h new file mode 100644 index 0000000..2eb2e83 --- /dev/null +++ b/lib/cglm/test/include/common.h @@ -0,0 +1,159 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef tests_common_h +#define tests_common_h + +#ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES /* for windows */ +#endif + +#ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS /* for windows */ +#endif + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE /* for drand48() */ +#endif + +#ifndef CGLM_CLIPSPACE_INCLUDE_ALL +# define CGLM_CLIPSPACE_INCLUDE_ALL +#endif + +#include +#include +#include + +#include +#include +#include + +typedef struct test_status_t { + const char *msg; + int status; +} test_status_t; + +typedef test_status_t (*fntest)(void); + +typedef struct test_entry_t { + char *name; + fntest entry; + int ret; + int show_output; +} test_entry_t; + +#ifndef GLM_TESTS_NO_COLORFUL_OUTPUT + +#define RESET "\033[0m" +#define BLACK "\033[30m" /* Black */ +#define RED "\033[31m" /* Red */ +#define GREEN "\033[32m" /* Green */ +#define YELLOW "\033[33m" /* Yellow */ +#define BLUE "\033[34m" /* Blue */ +#define MAGENTA "\033[35m" /* Magenta */ +#define CYAN "\033[36m" /* Cyan */ +#define WHITE "\033[37m" /* White */ +#define BOLDBLACK "\033[1m\033[30m" /* Bold Black */ +#define BOLDRED "\033[1m\033[31m" /* Bold Red */ +#define BOLDGREEN "\033[1m\033[32m" /* Bold Green */ +#define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */ +#define BOLDBLUE "\033[1m\033[34m" /* Bold Blue */ +#define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */ +#define BOLDCYAN "\033[1m\033[36m" /* Bold Cyan */ +#define BOLDWHITE "\033[1m\033[37m" /* Bold White */ + +#else + +#define RESET +#define BLACK +#define RED +#define GREEN +#define YELLOW +#define BLUE +#define MAGENTA +#define CYAN +#define WHITE +#define BOLDBLACK +#define BOLDRED +#define BOLDGREEN +#define BOLDYELLOW +#define BOLDBLUE +#define BOLDMAGENTA +#define BOLDCYAN +#define BOLDWHITE + +#endif + +#define TEST_DECLARE(FUN) test_status_t test_ ## FUN(void); +#define TEST_ENTRY(FUN) { #FUN, test_ ## FUN, 0, 0 }, +#define TEST_LIST static test_entry_t tests[] = + +/* __VA_ARGS__ workaround for MSVC: https://stackoverflow.com/a/5134656 */ +#define EXPAND(x) x + +#define TEST_OK 1 +#define TEST_SUCCESS return (test_status_t){NULL, TEST_OK}; + +#define TEST_IMPL_ARG1(FUN) \ + test_status_t test_ ## FUN (void); \ + test_status_t test_ ## FUN() + +#define TEST_IMPL_ARG2(PREFIX, FUN) TEST_IMPL_ARG1(PREFIX ## FUN) +#define TEST_IMPL_ARG3(arg1, arg2, arg3, ...) arg3 + +#define TEST_IMPL_CHOOSER(...) \ + EXPAND(TEST_IMPL_ARG3(__VA_ARGS__, TEST_IMPL_ARG2, TEST_IMPL_ARG1)) + +#define TEST_IMPL(...) EXPAND(TEST_IMPL_CHOOSER(__VA_ARGS__)(__VA_ARGS__)) + +#define ASSERT_EXT(expr, msg) \ + if (!(expr)) { \ + fprintf(stderr, \ + RED " assert fail" RESET \ + " in " BOLDCYAN "%s " RESET \ + "on " BOLDMAGENTA "line %d" RESET \ + " : " BOLDWHITE " ASSERT(%s)\n" RESET, \ + __FILE__, \ + __LINE__, \ + #expr); \ + return (test_status_t){msg, 0}; \ + } + +#define ASSERT_ARG1(expr) ASSERT_EXT(expr, NULL) +#define ASSERT_ARG2(expr, msg) ASSERT_EXT(expr, msg) +#define ASSERT_ARG3(arg1, arg2, arg3, ...) arg3 + +#define ASSERT_CHOOSER(...) ASSERT_ARG3(__VA_ARGS__, ASSERT_ARG2, ASSERT_ARG1) +#define ASSERT(...) do { ASSERT_CHOOSER(__VA_ARGS__)(__VA_ARGS__) } while(0); +#define ASSERTIFY(expr) do { \ + test_status_t ts; \ + ts = expr; \ + if (ts.status != TEST_OK) { \ + fprintf(stderr, \ + RED " assert fail" RESET \ + " in " BOLDCYAN "%s " RESET \ + "on " BOLDMAGENTA "line %d" RESET \ + " : " BOLDWHITE " ASSERTIFY(%s)\n" RESET, \ + __FILE__, \ + __LINE__, \ + #expr); \ + return (test_status_t){ts.msg, 0}; \ + } \ + } while(0); + +#if defined(_WIN32) +# define drand48() ((float)(rand() / (RAND_MAX + 1.0))) +# define OK_TEXT "ok:" +# define FAIL_TEXT "fail:" +# define FINAL_TEXT "^_^" +#else +# define OK_TEXT "✔︎" +# define FAIL_TEXT "𐄂" +# define FINAL_TEXT "🎉" +#endif + +#endif /* common_h */ diff --git a/lib/cglm/test/runner.c b/lib/cglm/test/runner.c new file mode 100644 index 0000000..e74d5e7 --- /dev/null +++ b/lib/cglm/test/runner.c @@ -0,0 +1,98 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "include/common.h" +#include "tests.h" + +#include +#include +#include + +int +main(int argc, const char * argv[]) { + test_entry_t *entry; + test_status_t st; + int32_t i, count, passed, failed, maxlen; + double start, end, elapsed, total; + (void)argc; + (void)argv; + + passed = failed = maxlen = 0; + total = 0.0; + count = sizeof(tests) / sizeof(tests[0]); + + fprintf(stderr, CYAN "\nWelcome to cglm tests\n\n" RESET); + + srand((unsigned int)time(NULL)); + + for (i = 0; i < count; i++) { + int32_t len; + + entry = tests + i; + len = (int32_t)strlen(entry->name); + + maxlen = GLM_MAX(maxlen, len); + } + + maxlen += 5; + + fprintf(stderr, + BOLDWHITE " %-*s %-*s\n", + maxlen, "Test Name", maxlen, "Elapsed Time"); + + for (i = 0; i < count; i++) { + entry = tests + i; + start = clock(); + st = entry->entry(); + end = clock(); + elapsed = (end - start) / CLOCKS_PER_SEC; + total += elapsed; + + if (!st.status) { + fprintf(stderr, + BOLDRED " " FAIL_TEXT BOLDWHITE " %s " RESET, entry->name); + if (st.msg) { + fprintf(stderr, + YELLOW "- %s" RESET, + st.msg); + } + + fprintf(stderr, "\n"); + + failed++; + } else { + fprintf(stderr, GREEN " " OK_TEXT RESET " %-*s ", maxlen, entry->name); + + if (elapsed > 0.01) + fprintf(stderr, YELLOW "%.2fs", elapsed); + else + fprintf(stderr, "0"); + + fprintf(stderr, "\n" RESET); + passed++; + } + } + + if (failed == 0) { + fprintf(stderr, + BOLDGREEN "\n All tests passed " FINAL_TEXT "\n" RESET); + } + + fprintf(stderr, + CYAN "\ncglm test results (%0.2fs):\n" RESET + "--------------------------\n" + + MAGENTA "%d" RESET " tests ran, " + GREEN "%d" RESET " passed, " + RED "%d" RESET " failed\n\n" RESET, + total, + count, + passed, + failed); + + return failed; +} diff --git a/lib/cglm/test/src/test_affine.h b/lib/cglm/test/src/test_affine.h new file mode 100644 index 0000000..2199a43 --- /dev/null +++ b/lib/cglm/test/src/test_affine.h @@ -0,0 +1,634 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, translate) { + mat4 m1; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(translate)(m1, (vec3){13.0f, 11.0f, 7.0f}); + glm_mat4_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 14.0f)) + ASSERT(test_eq(v2[1], 13.0f)) + ASSERT(test_eq(v2[2], 10.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(translate)(m1, (vec3){1.0f, -1.0f, -5.0f}); + glm_mat4_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 15.0f)) + ASSERT(test_eq(v2[1], 12.0f)) + ASSERT(test_eq(v2[2], 5.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate_to) { + mat4 m1, m2; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(translate_to)(m1, (vec3){13.0f, 11.0f, 7.0f}, m2); + glm_mat4_mulv(m2, v1, v2); + + ASSERT(test_eq(v2[0], 14.0f)) + ASSERT(test_eq(v2[1], 13.0f)) + ASSERT(test_eq(v2[2], 10.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(translate_to)(m1, (vec3){1.0f, -1.0f, -5.0f}, m2); + glm_mat4_mulv(m2, v2, v2); + + ASSERT(test_eq(v2[0], 15.0f)) + ASSERT(test_eq(v2[1], 12.0f)) + ASSERT(test_eq(v2[2], 5.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate_x) { + mat4 m1; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(translate_x)(m1, 13.0f); + glm_mat4_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 14.0f)) + ASSERT(test_eq(v2[1], 2.0f)) + ASSERT(test_eq(v2[2], 3.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(translate_x)(m1, -1.0f); + glm_mat4_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 13.0f)) + ASSERT(test_eq(v2[1], 2.0f)) + ASSERT(test_eq(v2[2], 3.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate_y) { + mat4 m1; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(translate_y)(m1, 11.0f); + glm_mat4_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 13.0f)) + ASSERT(test_eq(v2[2], 3.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(translate_y)(m1, -1.0f); + glm_mat4_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 12.0f)) + ASSERT(test_eq(v2[2], 3.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate_z) { + mat4 m1; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(translate_z)(m1, 7.0f); + glm_mat4_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 2.0f)) + ASSERT(test_eq(v2[2], 10.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(translate_z)(m1, -5.0f); + glm_mat4_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 2.0f)) + ASSERT(test_eq(v2[2], 5.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate_make) { + mat4 m1; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(translate_make)(m1, (vec3){13.0f, 11.0f, 7.0f}); + glm_mat4_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 14.0f)) + ASSERT(test_eq(v2[1], 13.0f)) + ASSERT(test_eq(v2[2], 10.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(translate_make)(m1, (vec3){1.0f, -1.0f, -5.0f}); + glm_mat4_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 15.0f)) + ASSERT(test_eq(v2[1], 12.0f)) + ASSERT(test_eq(v2[2], 5.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, scale_to) { + mat4 m1, m2; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(scale_to)(m1, (vec3){13.0f, 11.0f, 7.0f}, m2); + glm_mat4_mulv(m2, v1, v2); + + ASSERT(test_eq(v2[0], 13.0f)) + ASSERT(test_eq(v2[1], 22.0f)) + ASSERT(test_eq(v2[2], 21.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(scale_to)(m1, (vec3){1.0f, -1.0f, -5.0f}, m2); + glm_mat4_mulv(m2, v2, v2); + + ASSERT(test_eq(v2[0], 13.0f)) + ASSERT(test_eq(v2[1], -22.0f)) + ASSERT(test_eq(v2[2], -105.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, scale_make) { + mat4 m1; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + GLM(scale_make)(m1, (vec3){13.0f, 11.0f, 7.0f}); + glm_mat4_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 13.0f)) + ASSERT(test_eq(v2[1], 22.0f)) + ASSERT(test_eq(v2[2], 21.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + GLM(scale_make)(m1, (vec3){1.0f, -1.0f, -5.0f}); + glm_mat4_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 13.0f)) + ASSERT(test_eq(v2[1], -22.0f)) + ASSERT(test_eq(v2[2], -105.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, scale) { + mat4 m1; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(scale)(m1, (vec3){13.0f, 11.0f, 7.0f}); + glm_mat4_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 13.0f)) + ASSERT(test_eq(v2[1], 22.0f)) + ASSERT(test_eq(v2[2], 21.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(scale)(m1, (vec3){1.0f, -1.0f, -5.0f}); + glm_mat4_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 13.0f)) + ASSERT(test_eq(v2[1], -22.0f)) + ASSERT(test_eq(v2[2], -105.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, scale_uni) { + mat4 m1; + vec4 v1 = {1.0f, 2.0f, 3.0f, 1.0f}, v2; + + glm_mat4_identity(m1); + GLM(scale_uni)(m1, 13.0f); + glm_mat4_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 13.0f)) + ASSERT(test_eq(v2[1], 26.0f)) + ASSERT(test_eq(v2[2], 39.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + glm_mat4_identity(m1); + GLM(scale_uni)(m1, -5.0f); + glm_mat4_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], -65.0f)) + ASSERT(test_eq(v2[1], -130.0f)) + ASSERT(test_eq(v2[2], -195.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate_x) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {0.0f, 1.0f, 0.0f, 1.0f}, v2 = {0.0f, 1.0f, 0.0f, 1.0f}; + + GLM(rotate_x)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate_x)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate_x)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate_y) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}, v2 = {1.0f, 0.0f, 0.0f, 1.0f}; + + GLM(rotate_y)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate_y)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate_y)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate_z) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {0.0f, 1.0f, 0.0f, 1.0f}, v2 = {0.0f, 1.0f, 0.0f, 1.0f}; + + GLM(rotate_z)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate_z)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate_z)(m1, GLM_PI_2f, m1); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate_make) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + /* rotate X around Y = -Z */ + GLM(rotate_make)(m1, GLM_PI_2f, GLM_YUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + /* rotate -Z around X = Y */ + GLM(rotate_make)(m1, GLM_PI_2f, GLM_XUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate Y around X = +Z */ + GLM(rotate_make)(m1, GLM_PI_2f, GLM_XUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT, m2 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + /* 360 deg */ + glm_rotate(m1, GLM_PI_2f, GLM_YUP); + glm_rotate(m1, GLM_PI_2f, GLM_YUP); + glm_rotate(m1, GLM_PI_2f, GLM_YUP); + glm_rotate(m1, GLM_PI_2f, GLM_YUP); + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + + /* rotate X around Y = -Z */ + GLM(rotate)(m1, GLM_PI_2f, GLM_YUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + glm_mat4_identity(m1); + + /* rotate -Z around X = Y */ + GLM(rotate)(m1, GLM_PI_2f, GLM_XUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + glm_mat4_identity(m1); + + /* rotate Y around X = +Z */ + GLM(rotate)(m1, GLM_PI_2f, GLM_XUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate_at) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + GLM(rotate_at)(m1, (vec3){0.5f, 0.0f, 0.0f}, GLM_PI_2f, GLM_YUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.5f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -0.5f)) + + glm_mat4_identity(m1); + + GLM(rotate_at)(m1, GLM_VEC3_ZERO, GLM_PI_2f, GLM_ZUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.5f)) + ASSERT(test_eq(v1[2], -0.5f)) + + glm_mat4_identity(m1); + + v1[0] = 1.0f; + v1[1] = 1.0f; + v1[2] = 1.0f; + + GLM(rotate_at)(m1, GLM_VEC3_ZERO, GLM_PI_2f, GLM_XUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate_atm) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + GLM(rotate_atm)(m1, (vec3){0.5f, 0.0f, 0.0f}, GLM_PI_2f, GLM_YUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.5f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -0.5f)) + + GLM(rotate_atm)(m1, GLM_VEC3_ZERO, GLM_PI_2f, GLM_ZUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.5f)) + ASSERT(test_eq(v1[2], -0.5f)) + + v1[0] = 1.0f; + v1[1] = 1.0f; + v1[2] = 1.0f; + + GLM(rotate_atm)(m1, GLM_VEC3_ZERO, GLM_PI_2f, GLM_XUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, decompose_scalev) { + mat4 m1; + vec3 s1; + + GLM(scale_make)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose_scalev)(m1, s1); + + ASSERT(test_eq(s1[0], 7.0f)) + ASSERT(test_eq(s1[1], 8.0f)) + ASSERT(test_eq(s1[2], 9.0f)) + + GLM(scale)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose_scalev)(m1, s1); + + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + + glm_translate(m1, (vec3){4.0f, 5.0f, 6.0f}); + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, uniscaled) { + mat4 m1; + + GLM(scale_make)(m1, (vec3){7.0f, 8.0f, 9.0f}); + ASSERT(!GLM(uniscaled)(m1)) + + GLM(scale_make)(m1, (vec3){7.0f, 7.0f, 7.0f}); + ASSERT(GLM(uniscaled)(m1)) + + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + ASSERT(GLM(uniscaled)(m1)) + + glm_translate(m1, (vec3){4.0f, 5.0f, 6.0f}); + ASSERT(GLM(uniscaled)(m1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, decompose_rs) { + mat4 m1, m2, r; + vec3 s1; + + GLM(scale_make)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose_rs)(m1, r, s1); + + ASSERT(test_eq(s1[0], 7.0f)) + ASSERT(test_eq(s1[1], 8.0f)) + ASSERT(test_eq(s1[2], 9.0f)) + ASSERTIFY(test_assert_mat4_eq_identity(r)); + + GLM(scale)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose_rs)(m1, r, s1); + + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + ASSERTIFY(test_assert_mat4_eq_identity(r)); + + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + GLM(decompose_rs)(m1, r, s1); + + glm_mat4_identity(m2); + glm_mat4_mul(m2, r, m2); + glm_scale(m2, s1); + + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.00001f)); + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, decompose) { + mat4 m1, m2, r; + vec4 t; + vec3 s; + + GLM(scale_make)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose)(m1, t, r, s); + + ASSERT(test_eq(s[0], 7.0f)) + ASSERT(test_eq(s[1], 8.0f)) + ASSERT(test_eq(s[2], 9.0f)) + ASSERTIFY(test_assert_mat4_eq_identity(r)); + + GLM(scale)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose)(m1, t, r, s); + + ASSERT(test_eq(s[0], 49.0f)) + ASSERT(test_eq(s[1], 64.0f)) + ASSERT(test_eq(s[2], 81.0f)) + ASSERTIFY(test_assert_mat4_eq_identity(r)); + + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + ASSERT(test_eq(s[0], 49.0f)) + ASSERT(test_eq(s[1], 64.0f)) + ASSERT(test_eq(s[2], 81.0f)) + GLM(decompose)(m1, t, r, s); + + glm_mat4_identity(m2); + glm_mat4_mul(m2, r, m2); + glm_scale(m2, s); + + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.00001f)); + + glm_mat4_identity(m1); + glm_translate(m1, (vec3){56.0f, 13.0f, 90.0f}); + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + glm_scale(m1, (vec3){12.0f, 34.0f, 23.0f}); + + GLM(decompose)(m1, t, r, s); + + ASSERT(test_eq(t[0], 56.0f)) + ASSERT(test_eq(t[1], 13.0f)) + ASSERT(test_eq(t[2], 90.0f)) + + ASSERT(test_eq(s[0], 12.0f)) + ASSERT(test_eq(s[1], 34.0f)) + ASSERT(test_eq(s[2], 23.0f)) + + glm_mat4_identity(m2); + glm_translate(m2, t); + glm_mat4_mul(m2, r, m2); + glm_scale(m2, s); + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.00001f)); + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_affine2d.h b/lib/cglm/test/src/test_affine2d.h new file mode 100644 index 0000000..8828661 --- /dev/null +++ b/lib/cglm/test/src/test_affine2d.h @@ -0,0 +1,310 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, translate2d) { + mat3 m1; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + glm_mat3_identity(m1); + GLM(translate2d)(m1, (vec2){13.0f, 11.0f}); + glm_mat3_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 15.0f)) + ASSERT(test_eq(v2[1], 14.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + glm_mat3_identity(m1); + GLM(translate2d)(m1, (vec2){1.0f, -1.0f}); + glm_mat3_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 16.0f)) + ASSERT(test_eq(v2[1], 13.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate2d_to) { + mat3 m1, m2; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + glm_mat3_identity(m1); + GLM(translate2d_to)(m1, (vec2){13.0f, 11.0f}, m2); + glm_mat3_mulv(m2, v1, v2); + + ASSERT(test_eq(v2[0], 15.0f)) + ASSERT(test_eq(v2[1], 14.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + glm_mat3_identity(m1); + GLM(translate2d_to)(m1, (vec2){1.0f, -1.0f}, m2); + glm_mat3_mulv(m2, v2, v2); + + ASSERT(test_eq(v2[0], 16.0f)) + ASSERT(test_eq(v2[1], 13.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate2d_x) { + mat3 m1; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + glm_mat3_identity(m1); + GLM(translate2d_x)(m1, 13.0f); + glm_mat3_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 15.0f)) + ASSERT(test_eq(v2[1], 3.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + glm_mat3_identity(m1); + GLM(translate2d_x)(m1, -1.0f); + glm_mat3_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 14.0f)) + ASSERT(test_eq(v2[1], 3.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate2d_y) { + mat3 m1; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + glm_mat3_identity(m1); + GLM(translate2d_y)(m1, 11.0f); + glm_mat3_mulv(m1, v1, v2); + + + ASSERT(test_eq(v2[0], 2.0f)) + ASSERT(test_eq(v2[1], 14.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + glm_mat3_identity(m1); + GLM(translate2d_y)(m1, -1.0f); + glm_mat3_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 2.0f)) + ASSERT(test_eq(v2[1], 13.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, translate2d_make) { + mat3 m1; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + glm_mat3_identity(m1); + GLM(translate2d_make)(m1, (vec2){13.0f, 11.0f}); + glm_mat3_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 15.0f)) + ASSERT(test_eq(v2[1], 14.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + glm_mat3_identity(m1); + GLM(translate2d_make)(m1, (vec2){-1.0f, -5.0f}); + glm_mat3_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], 14.0f)) + ASSERT(test_eq(v2[1], 9.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, scale2d_to) { + mat3 m1, m2; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + glm_mat3_identity(m1); + GLM(scale2d_to)(m1, (vec2){13.0f, 11.0f}, m2); + glm_mat3_mulv(m2, v1, v2); + + ASSERT(test_eq(v2[0], 26.0f)) + ASSERT(test_eq(v2[1], 33.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + glm_mat3_identity(m1); + GLM(scale2d_to)(m1, (vec2){-1.0f, -5.0f}, m2); + glm_mat3_mulv(m2, v2, v2); + + ASSERT(test_eq(v2[0], -26.0f)) + ASSERT(test_eq(v2[1], -165.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, scale2d_make) { + mat3 m1; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + GLM(scale2d_make)(m1, (vec2){13.0f, 11.0f}); + glm_mat3_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 26.0f)) + ASSERT(test_eq(v2[1], 33.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + GLM(scale2d_make)(m1, (vec3){-1.0f, -5.0f}); + glm_mat3_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], -26.0f)) + ASSERT(test_eq(v2[1], -165.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, scale2d) { + mat3 m1; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + glm_mat3_identity(m1); + GLM(scale2d)(m1, (vec2){13.0f, 11.0f}); + glm_mat3_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 26.0f)) + ASSERT(test_eq(v2[1], 33.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + glm_mat3_identity(m1); + GLM(scale2d)(m1, (vec2){-1.0f, -5.0f}); + glm_mat3_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], -26.0f)) + ASSERT(test_eq(v2[1], -165.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, scale2d_uni) { + mat3 m1; + vec3 v1 = {2.0f, 3.0f, 1.0f}, v2; + + glm_mat3_identity(m1); + GLM(scale2d_uni)(m1, 13.0f); + glm_mat3_mulv(m1, v1, v2); + + ASSERT(test_eq(v2[0], 26.0f)) + ASSERT(test_eq(v2[1], 39.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + glm_mat3_identity(m1); + GLM(scale2d_uni)(m1, -5.0f); + glm_mat3_mulv(m1, v2, v2); + + ASSERT(test_eq(v2[0], -130.0f)) + ASSERT(test_eq(v2[1], -195.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate2d_make) { + mat3 m1 = GLM_MAT3_IDENTITY_INIT; + vec3 v1 = {0.0f, 1.0f, 1.0f}, v2 = {0.0f, 1.0f, 1.0f}; + + GLM(rotate2d_make)(m1, GLM_PI_2f); + glm_mat3_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate2d_make)(m1, -GLM_PI_2f); + glm_mat3_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate2d_make)(m1, GLM_PIf); + glm_mat3_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate2d) { + mat3 m1 = GLM_MAT3_IDENTITY_INIT; + vec3 v1 = {0.0f, 1.0f, 1.0f}, v2 = {0.0f, 1.0f, 1.0f}; + + GLM(rotate2d)(m1, GLM_PI_2f); + glm_mat3_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate2d)(m1, GLM_PI_2f); + glm_mat3_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate2d)(m1, GLM_PI_2f); + glm_mat3_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, rotate2d_to) { + mat3 m1 = GLM_MAT3_IDENTITY_INIT, m2; + vec3 v1 = {0.0f, 1.0f, 1.0f}, v2 = {0.0f, 1.0f, 1.0f}; + + GLM(rotate2d_to)(m1, GLM_PI_2f, m1); + glm_mat3_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate2d_to)(m1, GLM_PI_2f, m2); + glm_mat3_mulv(m2, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + glm_vec3_copy(v2, v1); + + GLM(rotate2d_to)(m2, GLM_PI_2f, m1); + glm_mat3_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_affine_mat.h b/lib/cglm/test/src/test_affine_mat.h new file mode 100644 index 0000000..e928f8e --- /dev/null +++ b/lib/cglm/test/src/test_affine_mat.h @@ -0,0 +1,112 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +#ifndef glm_affine_mat_test_guard +#define glm_affine_mat_test_guard +CGLM_INLINE +void +glm_inv_tr_raw(mat4 mat) { + CGLM_ALIGN_MAT mat3 r; + CGLM_ALIGN(8) vec3 t; + + /* rotate */ + glm_mat4_pick3t(mat, r); + glm_mat4_ins3(r, mat); + + /* translate */ + glm_mat3_mulv(r, mat[3], t); + glm_vec3_negate(t); + glm_vec3_copy(t, mat[3]); +} +#endif + +TEST_IMPL(GLM_PREFIX, mul) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + mat4 m2 = GLM_MAT4_IDENTITY_INIT; + mat4 m3; + mat4 m4 = GLM_MAT4_ZERO_INIT; + int i, j, k; + + test_rand_mat4(m1); + test_rand_mat4(m2); + + GLM(mul)(m1, m2, m3); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 4; k++) + /* column-major */ + m4[i][j] += m1[k][j] * m2[i][k]; + } + } + + ASSERTIFY(test_assert_mat4_eq(m3, m4)) + + /* test pre compiled */ + GLM(mul)(m1, m2, m3); + ASSERTIFY(test_assert_mat4_eq(m3, m4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mul_rot) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + mat4 m2 = GLM_MAT4_IDENTITY_INIT; + mat4 m3; + mat4 m4 = GLM_MAT4_ZERO_INIT; + int i, j, k; + + glm_rotate(m1, drand48(), (vec3){drand48(), drand48(), drand48()}); + glm_rotate(m2, drand48(), (vec3){drand48(), drand48(), drand48()}); + + GLM(mul_rot)(m1, m2, m3); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 4; k++) + /* column-major */ + m4[i][j] += m1[k][j] * m2[i][k]; + } + } + + ASSERTIFY(test_assert_mat4_eq(m3, m4)) + + /* test pre compiled */ + GLM(mul_rot)(m1, m2, m3); + ASSERTIFY(test_assert_mat4_eq(m3, m4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, inv_tr) { + mat4 m1, m2; + int i; + + for (i = 0; i < 10000; i++) { + test_rand_mat4(m1); + + glm_mat4_copy(m1, m2); + + /* test inverse precise */ + GLM(inv_tr)(m1); + GLM(inv_tr)(m1); + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + + /* test inverse precise */ + GLM(mat4_inv)(m1, m2); + GLM(inv_tr)(m2); + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + + /* test with raw */ + glm_mat4_copy(m1, m2); + glm_inv_tr_raw(m2); + GLM(inv_tr)(m1); + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + } + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_bezier.c b/lib/cglm/test/src/test_bezier.c new file mode 100644 index 0000000..3089dd5 --- /dev/null +++ b/lib/cglm/test/src/test_bezier.c @@ -0,0 +1,66 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +CGLM_INLINE +float +test_bezier_plain(float s, float p0, float c0, float c1, float p1) { + float x, xx, xxx, ss, sss; + + x = 1.0f - s; + xx = x * x; + xxx = xx * x; + ss = s * s; + sss = ss * s; + + return p0 * xxx + 3.0f * (c0 * s * xx + c1 * ss * x) + p1 * sss; +} + +CGLM_INLINE +float +test_hermite_plain(float s, float p0, float t0, float t1, float p1) { + float ss, sss; + + ss = s * s; + sss = ss * s; + + return p0 * (2.0f * sss - 3.0f * ss + 1.0f) + + t0 * (sss - 2.0f * ss + s) + + p1 * (-2.0f * sss + 3.0f * ss) + + t1 * (sss - ss); +} + +TEST_IMPL(bezier) { + float s, p0, p1, c0, c1, smc, Bs, Bs_plain; + + s = test_rand(); + p0 = test_rand(); + p1 = test_rand(); + c0 = test_rand(); + c1 = test_rand(); + + /* test cubic bezier */ + smc = glm_smc(s, GLM_BEZIER_MAT, (vec4){p0, c0, c1, p1}); + Bs = glm_bezier(s, p0, c0, c1, p1); + Bs_plain = test_bezier_plain(s, p0, c0, c1, p1); + + ASSERT(test_eq(Bs, Bs_plain)); + ASSERTIFY(test_assert_eqf(smc, Bs_plain)) + ASSERTIFY(test_assert_eqf(Bs, smc)) + + /* test cubic hermite */ + smc = glm_smc(s, GLM_HERMITE_MAT, (vec4){p0, p1, c0, c1}); + Bs = glm_hermite(s, p0, c0, c1, p1); + Bs_plain = test_hermite_plain(s, p0, c0, c1, p1); + + ASSERT(test_eq(Bs, Bs_plain)); + ASSERT(test_eq(smc, Bs_plain)); + ASSERT(test_eq(Bs, smc)); + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_cam.c b/lib/cglm/test/src/test_cam.c new file mode 100644 index 0000000..b5fbf2b --- /dev/null +++ b/lib/cglm/test/src/test_cam.c @@ -0,0 +1,55 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(camera_lookat) { + mat4 view1, view2; + vec3 center, + eye = {0.024f, 14.6f, 67.04f}, + dir = {0.0f, 0.0f, -1.0f}, + up = {0.0f, 1.0f, 0.0f}; + + glm_vec3_add(eye, dir, center); + glm_lookat(eye, center, up, view1); + + glm_look(eye, dir, up, view2); + + ASSERTIFY(test_assert_mat4_eq(view1, view2)) + + TEST_SUCCESS +} + +TEST_IMPL(camera_decomp) { + mat4 proj, proj2; + vec4 sizes; + float aspect, fovy, nearZ, farZ; + + aspect = 0.782f; + fovy = glm_rad(49.984f); + nearZ = 0.1f; + farZ = 100.0f; + + glm_perspective(fovy, aspect, nearZ, farZ, proj); + ASSERT(fabsf(aspect - glm_persp_aspect(proj)) < GLM_FLT_EPSILON) + ASSERT(fabsf(fovy - glm_persp_fovy(proj)) < GLM_FLT_EPSILON) + ASSERT(fabsf(49.984f - glm_deg(glm_persp_fovy(proj))) < GLM_FLT_EPSILON) + + glm_persp_sizes(proj, fovy, sizes); + + glm_frustum(-sizes[0] * 0.5f, + sizes[0] * 0.5f, + -sizes[1] * 0.5f, + sizes[1] * 0.5f, + nearZ, + farZ, + proj2); + + ASSERTIFY(test_assert_mat4_eq(proj, proj2)) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_cam_lh_no.c b/lib/cglm/test/src/test_cam_lh_no.c new file mode 100644 index 0000000..33a285a --- /dev/null +++ b/lib/cglm/test/src/test_cam_lh_no.c @@ -0,0 +1,36 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(perspective_lh_no) { + mat4 dst; + const float fovy = glm_rad(45.0f); + const float aspect = 640/480.0f; + const float zNearVal = 0.1f; + const float zFarVal = 100.0f; + + glm_perspective_lh_no(fovy, aspect, zNearVal, zFarVal, dst); + + /* Sanity mk. I: longhand version */ + ASSERT(test_eq(dst[0][0], 1.0f / (tanf(fovy / 2) * aspect))) + ASSERT(test_eq(dst[1][1], 1.0f / tanf(fovy / 2))) + ASSERT(test_eq(dst[2][2], (zFarVal + zNearVal) / (zFarVal - zNearVal))) + ASSERT(test_eq(dst[2][3], 1.0f)) + ASSERT(test_eq(dst[3][2], -2 * zFarVal * zNearVal / (zFarVal - zNearVal))) + + /* Sanity mk. II */ + /*reference test data for glm_perspective_lh_no*/ + mat4 cmp = {0}; + cmp[0][0] = 1.8106601f; + cmp[1][1] = 2.4142134f; + cmp[2][2] = 1.0020020f; + cmp[2][3] = 1.0000000f; + cmp[3][2] = -0.2002002f; + + return test_assert_mat4_eq(dst, cmp); +} diff --git a/lib/cglm/test/src/test_cam_lh_zo.c b/lib/cglm/test/src/test_cam_lh_zo.c new file mode 100644 index 0000000..f5f50af --- /dev/null +++ b/lib/cglm/test/src/test_cam_lh_zo.c @@ -0,0 +1,36 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(perspective_lh_zo) { + mat4 dst; + const float fovy = glm_rad(45.0f); + const float aspect = 640/480.0f; + const float zNearVal = 0.1f; + const float zFarVal = 100.0f; + + glm_perspective_lh_zo(fovy, aspect, zNearVal, zFarVal, dst); + + /* Sanity mk. I: longhand version */ + ASSERT(test_eq(dst[0][0], 1.0f / (tanf(fovy / 2) * aspect))) + ASSERT(test_eq(dst[1][1], 1.0f / tanf(fovy / 2))) + ASSERT(test_eq(dst[2][2], zFarVal / (zFarVal - zNearVal))) + ASSERT(test_eq(dst[2][3], 1.0f)) + ASSERT(test_eq(dst[3][2], -1 * zFarVal * zNearVal / (zFarVal - zNearVal))) + + /* Sanity mk. II */ + /* "Reference values" generated by GLM's glm::perspectiveLH_ZO */ + mat4 cmp = {0}; + cmp[0][0] = 1.8106601f; + cmp[1][1] = 2.4142134f; + cmp[2][2] = 1.0010010f; + cmp[2][3] = 1.0000000f; + cmp[3][2] = -0.1001001f; + + return test_assert_mat4_eq(dst, cmp); +} diff --git a/lib/cglm/test/src/test_cam_rh_no.c b/lib/cglm/test/src/test_cam_rh_no.c new file mode 100644 index 0000000..2bcadcd --- /dev/null +++ b/lib/cglm/test/src/test_cam_rh_no.c @@ -0,0 +1,36 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(perspective_rh_no) { + mat4 dst; + const float fovy = glm_rad(45.0f); + const float aspect = 640/480.0f; + const float zNearVal = 0.1f; + const float zFarVal = 100.0f; + + glm_perspective_rh_no(fovy, aspect, zNearVal, zFarVal, dst); + + /* Sanity mk. I: longhand version */ + ASSERT(test_eq(dst[0][0], 1.0f / (tanf(fovy / 2) * aspect))) + ASSERT(test_eq(dst[1][1], 1.0f / tanf(fovy / 2))) + ASSERT(test_eq(dst[2][2], -1.0f * (zFarVal + zNearVal) / (zFarVal - zNearVal))) + ASSERT(test_eq(dst[2][3], -1.0f)) + ASSERT(test_eq(dst[3][2], -2 * zFarVal * zNearVal / (zFarVal - zNearVal))) + + /* Sanity mk. II */ + /*reference test data for glm_perspective_rh_no*/ + mat4 cmp = {0}; + cmp[0][0] = 1.8106601f; + cmp[1][1] = 2.4142134f; + cmp[2][2] = -1.0020020f; + cmp[2][3] = -1.0000000f; + cmp[3][2] = -0.2002002f; + + return test_assert_mat4_eq(dst, cmp); +} diff --git a/lib/cglm/test/src/test_cam_rh_zo.c b/lib/cglm/test/src/test_cam_rh_zo.c new file mode 100644 index 0000000..95281a7 --- /dev/null +++ b/lib/cglm/test/src/test_cam_rh_zo.c @@ -0,0 +1,36 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(perspective_rh_zo) { + mat4 dst; + const float fovy = glm_rad(45.0f); + const float aspect = 640/480.0f; + const float zNearVal = 0.1f; + const float zFarVal = 100.0f; + + glm_perspective_rh_zo(fovy, aspect, zNearVal, zFarVal, dst); + + /* Sanity mk. I: longhand version */ + ASSERT(test_eq(dst[0][0], 1 / (tanf(fovy / 2) * aspect))) + ASSERT(test_eq(dst[1][1], 1 / tanf(fovy / 2))) + ASSERT(test_eq(dst[2][2], zFarVal / (zNearVal - zFarVal))) + ASSERT(test_eq(dst[2][3], -1.0f)) + ASSERT(test_eq(dst[3][2], -1 * zFarVal * zNearVal / (zFarVal - zNearVal))) + + /* Sanity mk. II */ + /*reference test data for glm_perspective_rh_zo*/ + mat4 cmp = {0}; + cmp[0][0] = 1.8106601f; + cmp[1][1] = 2.4142134f; + cmp[2][2] = -1.0010010f; + cmp[2][3] = -1.0000000f; + cmp[3][2] = -0.1001001f; + + return test_assert_mat4_eq(dst, cmp); +} diff --git a/lib/cglm/test/src/test_camera.h b/lib/cglm/test/src/test_camera.h new file mode 100644 index 0000000..fb1075a --- /dev/null +++ b/lib/cglm/test/src/test_camera.h @@ -0,0 +1,68 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, frustum) { + mat4 proj; + vec4 vp = {0.0f, 0.0f, 800.0f, 600.0f}; + float left, right, top, bottom, znear, zfar; + + znear = 0.1f; + zfar = 100.0f; + left = -100.0f; + right = 100.0f; + bottom = -100.0f; + top = 100.0f; + + GLM(frustum)(left, right, bottom, top, znear, zfar, proj); + + ASSERT(test_eq(proj[0][1], 0.0f)) + ASSERT(test_eq(proj[0][2], 0.0f)) + ASSERT(test_eq(proj[0][3], 0.0f)) + + ASSERT(test_eq(proj[1][0], 0.0f)) + ASSERT(test_eq(proj[1][2], 0.0f)) + ASSERT(test_eq(proj[1][3], 0.0f)) + + ASSERT(test_eq(proj[2][3], -1.0f)) + + ASSERT(test_eq(proj[3][0], 0.0f)) + ASSERT(test_eq(proj[3][1], 0.0f)) + ASSERT(test_eq(proj[3][3], 0.0f)) + + vec4 v1 = {1.0f, 20.0f, znear}; + vec4 v2 = {1.0f, 20.0f, zfar}; + vec4 v3, v4; + + /* perspective test */ + GLM(mat4_mulv)(proj, v1, v3); + GLM(project)(v3, proj, vp, v3); + + ASSERT(v3[0] > v1[0]) + ASSERT(v3[1] > v1[1]) + + GLM(mat4_mulv)(proj, v2, v4); + GLM(project)(v4, proj, vp, v4); + + ASSERT(v4[0] < v3[0]) + ASSERT(v4[1] < v3[1]) + + /* not infinity */ + ASSERT(!GLM(vec4_isinf)(proj[0])) + ASSERT(!GLM(vec4_isinf)(proj[1])) + ASSERT(!GLM(vec4_isinf)(proj[2])) + ASSERT(!GLM(vec4_isinf)(proj[3])) + + /* not NaN */ + ASSERT(!GLM(vec4_isnan)(proj[0])) + ASSERT(!GLM(vec4_isnan)(proj[1])) + ASSERT(!GLM(vec4_isnan)(proj[2])) + ASSERT(!GLM(vec4_isnan)(proj[3])) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_clamp.c b/lib/cglm/test/src/test_clamp.c new file mode 100644 index 0000000..1d1c0c2 --- /dev/null +++ b/lib/cglm/test/src/test_clamp.c @@ -0,0 +1,31 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(clamp) { + vec3 v3 = {15.07f, 0.4f, 17.3f}; + vec4 v4 = {5.07f, 2.3f, 1.3f, 1.4f}; + + ASSERT(glm_clamp(1.6f, 0.0f, 1.0f) == 1.0f) + ASSERT(glm_clamp(-1.6f, 0.0f, 1.0f) == 0.0f) + ASSERT(glm_clamp(0.6f, 0.0f, 1.0f) == 0.6f) + + glm_vec3_clamp(v3, 0.0, 1.0); + glm_vec4_clamp(v4, 1.5, 3.0); + + ASSERT(v3[0] == 1.0f) + ASSERT(v3[1] == 0.4f) + ASSERT(v3[2] == 1.0f) + + ASSERT(v4[0] == 3.0f) + ASSERT(v4[1] == 2.3f) + ASSERT(v4[2] == 1.5f) + ASSERT(v4[3] == 1.5f) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_common.c b/lib/cglm/test/src/test_common.c new file mode 100644 index 0000000..46b6e63 --- /dev/null +++ b/lib/cglm/test/src/test_common.c @@ -0,0 +1,341 @@ +/* + * Copyright (c), Recep Aslantas. + * MIT License (MIT), http://opensource.org/licenses/MIT + */ + +#include "test_common.h" +#include + +void +test_rand_mat4(mat4 dest) { + glm_mat4_copy(GLM_MAT4_IDENTITY, dest); + + /* random position */ + dest[3][0] = drand48(); + dest[3][1] = drand48(); + dest[3][2] = drand48(); + + /* random rotatation around random axis with random angle */ + glm_rotate(dest, drand48(), (vec3){drand48(), drand48(), drand48()}); + + /* random scale */ + /* glm_scale(dest, (vec3){drand48(), drand48(), drand48()}); */ +} + +void +test_rand_mat3(mat3 dest) { + mat4 m4; + + /* random rotatation around random axis with random angle */ + glm_rotate_make(m4, drand48(), (vec3){drand48(), drand48(), drand48()}); + glm_mat4_pick3(m4, dest); +} + +void +test_rand_mat2(mat2 dest) { + dest[0][0] = drand48(); + dest[0][1] = drand48(); + dest[1][0] = drand48(); + dest[1][1] = drand48(); +} + +void +test_rand_vec3(vec3 dest) { + dest[0] = drand48(); + dest[1] = drand48(); + dest[2] = drand48(); +} + +vec3s +test_rand_vec3s(void) { + vec3s r; + test_rand_vec3(r.raw); + return r; +} + +void +test_rand_vec4(vec4 dest) { + dest[0] = drand48(); + dest[1] = drand48(); + dest[2] = drand48(); + dest[3] = drand48(); +} + +vec4s +test_rand_vec4s(void) { + vec4s r; + test_rand_vec4(r.raw); + return r; +} + +float +test_rand(void) { + return drand48(); +} + +void +test_rand_quat(versor q) { + glm_quat(q, drand48(), drand48(), drand48(), drand48()); + glm_quat_normalize(q); +} + +test_status_t +test_assert_mat4_eq(mat4 m1, mat4 m2) { + int i, j; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + ASSERT(fabsf(m1[i][j] - m2[i][j]) <= 0.0000009) + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat4_eqt(mat4 m1, mat4 m2) { + int i, j; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + ASSERT(fabsf(m1[j][i] - m2[i][j]) <= 0.0000009) + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat4_eq2(mat4 m1, mat4 m2, float eps) { + int i, j; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + ASSERT(fabsf(m1[i][j] - m2[i][j]) <= eps); + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat2_eqt(mat2 m1, mat2 m2) { + int i, j; + + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + ASSERT(fabsf(m1[j][i] - m2[i][j]) <= 0.0000009); + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat2_eq(mat2 m1, mat2 m2) { + int i, j; + + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + ASSERT(fabsf(m1[i][j] - m2[i][j]) <= 0.0000009); + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat2_eq_identity(mat2 m2) { + int i, j; + + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + if (i == j) { + ASSERT(test_eq(m2[i][j], 1.0f)) + } else { + ASSERT(test_eq(m2[i][j], 0.0f)) + } + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat2_eq_zero(mat2 m2) { + int i, j; + + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + ASSERT(test_eq(m2[i][j], 0.0f)) + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat3_eq(mat3 m1, mat3 m2) { + int i, j; + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + ASSERT(fabsf(m1[i][j] - m2[i][j]) <= 0.0000009); + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat3_eqt(mat3 m1, mat3 m2) { + int i, j; + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + ASSERT(fabsf(m1[j][i] - m2[i][j]) <= 0.0000009); + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat3_eq_identity(mat3 m3) { + int i, j; + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + if (i == j) { + ASSERT(test_eq(m3[i][j], 1.0f)) + } else { + ASSERT(test_eq(m3[i][j], 0.0f)) + } + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat3_eq_zero(mat3 m3) { + int i, j; + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + ASSERT(test_eq(m3[i][j], 0.0f)) + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat4_eq_identity(mat4 m4) { + int i, j; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (i == j) { + ASSERT(test_eq(m4[i][j], 1.0f)) + } else { + ASSERT(test_eq(m4[i][j], 0.0f)) + } + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_mat4_eq_zero(mat4 m4) { + int i, j; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + ASSERT(test_eq(m4[i][j], 0.0f)) + } + } + + TEST_SUCCESS +} + +test_status_t +test_assert_eqf(float a, float b) { + ASSERT(fabsf(a - b) <= 0.000009); /* rounding errors */ + + TEST_SUCCESS +} + +test_status_t +test_assert_vec2_eq(vec2 v1, vec2 v2) { + ASSERT(fabsf(v1[0] - v2[0]) <= 0.000009); /* rounding errors */ + ASSERT(fabsf(v1[1] - v2[1]) <= 0.000009); + + TEST_SUCCESS +} + +test_status_t +test_assert_vec3_eq(vec3 v1, vec3 v2) { + ASSERT(fabsf(v1[0] - v2[0]) <= 0.000009); /* rounding errors */ + ASSERT(fabsf(v1[1] - v2[1]) <= 0.000009); + ASSERT(fabsf(v1[2] - v2[2]) <= 0.000009); + + TEST_SUCCESS +} + +test_status_t +test_assert_vec3s_eq(vec3s v1, vec3s v2) { + test_assert_vec3_eq(v1.raw, v2.raw); + + TEST_SUCCESS +} + +test_status_t +test_assert_vec4_eq(vec4 v1, vec4 v2) { + ASSERT(fabsf(v1[0] - v2[0]) <= 0.000009); /* rounding errors */ + ASSERT(fabsf(v1[1] - v2[1]) <= 0.000009); + ASSERT(fabsf(v1[2] - v2[2]) <= 0.000009); + ASSERT(fabsf(v1[3] - v2[3]) <= 0.000009); + + TEST_SUCCESS +} + +test_status_t +test_assert_vec4s_eq(vec4s v1, vec4s v2) { + test_assert_vec4_eq(v1.raw, v2.raw); + + TEST_SUCCESS +} + +test_status_t +test_assert_quat_eq_abs(versor v1, versor v2) { + ASSERT(fabsf(fabsf(v1[0]) - fabsf(v2[0])) <= 0.0009); /* rounding errors */ + ASSERT(fabsf(fabsf(v1[1]) - fabsf(v2[1])) <= 0.0009); + ASSERT(fabsf(fabsf(v1[2]) - fabsf(v2[2])) <= 0.0009); + ASSERT(fabsf(fabsf(v1[3]) - fabsf(v2[3])) <= 0.0009); + + TEST_SUCCESS +} + +test_status_t +test_assert_quat_eq(versor v1, versor v2) { + ASSERT(fabsf(v1[0] - v2[0]) <= 0.000009); /* rounding errors */ + ASSERT(fabsf(v1[1] - v2[1]) <= 0.000009); + ASSERT(fabsf(v1[2] - v2[2]) <= 0.000009); + ASSERT(fabsf(v1[3] - v2[3]) <= 0.000009); + + TEST_SUCCESS +} + +test_status_t +test_assert_quat_eq_identity(versor q) { + versor p = GLM_QUAT_IDENTITY_INIT; + + ASSERT(fabsf(q[0] - p[0]) <= 0.000009); /* rounding errors */ + ASSERT(fabsf(q[1] - p[1]) <= 0.000009); + ASSERT(fabsf(q[2] - p[2]) <= 0.000009); + ASSERT(fabsf(q[3] - p[3]) <= 0.000009); + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_common.h b/lib/cglm/test/src/test_common.h new file mode 100644 index 0000000..9162a8d --- /dev/null +++ b/lib/cglm/test/src/test_common.h @@ -0,0 +1,118 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef test_common_h +#define test_common_h + +#include "../include/common.h" + +void +test_rand_mat4(mat4 dest); + +void +test_rand_mat3(mat3 dest); + +void +test_rand_mat2(mat2 dest); + +test_status_t +test_assert_eqf(float a, float b); + +test_status_t +test_assert_mat4_eq(mat4 m1, mat4 m2); + +test_status_t +test_assert_mat4_eqt(mat4 m1, mat4 m2); + +test_status_t +test_assert_mat4_eq2(mat4 m1, mat4 m2, float eps); + +test_status_t +test_assert_mat4_eq_identity(mat4 m4); + +test_status_t +test_assert_mat4_eq_zero(mat4 m4); + +test_status_t +test_assert_mat2_eqt(mat2 m1, mat2 m2); + +test_status_t +test_assert_mat2_eq(mat2 m1, mat2 m2); + +test_status_t +test_assert_mat2_eq_identity(mat2 m2); + +test_status_t +test_assert_mat2_eq_zero(mat2 m2); + +test_status_t +test_assert_mat3_eq(mat3 m1, mat3 m2); + +test_status_t +test_assert_vec2_eq(vec2 v1, vec2 v2); + +test_status_t +test_assert_mat3_eqt(mat3 m1, mat3 m2); + +test_status_t +test_assert_mat3_eq_identity(mat3 m3); + +test_status_t +test_assert_mat3_eq_zero(mat3 m3); + +test_status_t +test_assert_vec3_eq(vec3 v1, vec3 v2); + +test_status_t +test_assert_vec3s_eq(vec3s v1, vec3s v2); + +test_status_t +test_assert_vec4_eq(vec4 v1, vec4 v2); + +test_status_t +test_assert_vec4s_eq(vec4s v1, vec4s v2); + +test_status_t +test_assert_quat_eq(versor v1, versor v2); + +test_status_t +test_assert_quat_eq_identity(versor q) ; + +test_status_t +test_assert_quat_eq_abs(versor v1, versor v2); + +void +test_rand_vec3(vec3 dest); + +vec3s +test_rand_vec3s(void); + +void +test_rand_vec4(vec4 dest); + +vec4s +test_rand_vec4s(void); + +float +test_rand(void); + +void +test_rand_quat(versor q); + +CGLM_INLINE +bool +test_eq(float a, float b) { + return fabsf(a - b) <= GLM_FLT_EPSILON * 10; +} + +CGLM_INLINE +bool +test_eq_th(float a, float b, float th) { + return fabsf(a - b) <= th; +} + +#endif /* test_common_h */ diff --git a/lib/cglm/test/src/test_euler.c b/lib/cglm/test/src/test_euler.c new file mode 100644 index 0000000..b71e0f0 --- /dev/null +++ b/lib/cglm/test/src/test_euler.c @@ -0,0 +1,45 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(euler) { + mat4 rot1, rot2; + vec3 inAngles, outAngles; + + inAngles[0] = glm_rad(-45.0f); /* X angle */ + inAngles[1] = glm_rad(88.0f); /* Y angle */ + inAngles[2] = glm_rad(18.0f); /* Z angle */ + + glm_euler_xyz(inAngles, rot1); + + /* extract angles */ + glmc_euler_angles(rot1, outAngles); + + /* angles must be equal in that range */ + ASSERTIFY(test_assert_vec3_eq(inAngles, outAngles)) + + /* matrices must be equal */ + glmc_euler_xyz(outAngles, rot2); + ASSERTIFY(test_assert_mat4_eq(rot1, rot2)) + + /* change range */ + inAngles[0] = glm_rad(-145.0f); /* X angle */ + inAngles[1] = glm_rad(818.0f); /* Y angle */ + inAngles[2] = glm_rad(181.0f); /* Z angle */ + + glm_euler_xyz(inAngles, rot1); + glmc_euler_angles(rot1, outAngles); + + /* angles may not be equal but matrices MUST! */ + + /* matrices must be equal */ + glmc_euler_xyz(outAngles, rot2); + ASSERTIFY(test_assert_mat4_eq(rot1, rot2)) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_ivec2.h b/lib/cglm/test/src/test_ivec2.h new file mode 100644 index 0000000..63f32bb --- /dev/null +++ b/lib/cglm/test/src/test_ivec2.h @@ -0,0 +1,189 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, ivec2) { + ivec4 v4 = {2, 3, 5, 7}; + ivec3 v3 = {11, 13, 17}; + ivec2 v2; + + GLM(ivec2)(v4, v2); + ASSERT(v2[0] == 2) + ASSERT(v2[1] == 3) + + GLM(ivec2)(v3, v2); + ASSERT(v2[0] == 11) + ASSERT(v2[1] == 13) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_copy) { + ivec2 src = {7, 5}; + ivec2 dst = {99, 99}; + + GLM(ivec2_copy)(src, dst); + ASSERT(dst[0] == 7) + ASSERT(dst[1] == 5) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_zero) { + ivec2 v = {2, 3}; + + GLM(ivec2_zero)(v); + ASSERT(v[0] == 0) + ASSERT(v[1] == 0) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_one) { + ivec2 v = {-2, 9}; + + GLM(ivec2_one)(v); + ASSERT(v[0] == 1) + ASSERT(v[1] == 1) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_add) { + ivec2 a = {14, 3}; + ivec2 b = {-3, 2}; + ivec2 v = {99, 99}; + + GLM(ivec2_add)(a, b, v); + ASSERT(v[0] == 11) + ASSERT(v[1] == 5) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_adds) { + ivec2 a = {-3, 1}; + ivec2 v = {99, 99}; + int s = 2; + + GLM(ivec2_adds)(a, s, v); + ASSERT(v[0] == -1) + ASSERT(v[1] == 3) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_sub) { + ivec2 a = {-2, 9}; + ivec2 b = {3, 2}; + ivec2 v = {99, 99}; + + GLM(ivec2_sub)(a, b, v); + ASSERT(v[0] == -5) + ASSERT(v[1] == 7) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_subs) { + ivec2 a = {5, -2}; + ivec2 v = {99, 99}; + int s = -3; + + GLM(ivec2_subs)(a, s, v); + ASSERT(v[0] == 8) + ASSERT(v[1] == 1) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_mul) { + ivec2 a = {3, 4}; + ivec2 b = {-2, 3}; + ivec2 v = {99, 99}; + + GLM(ivec2_mul)(a, b, v); + ASSERT(v[0] == -6) + ASSERT(v[1] == 12) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_scale) { + ivec2 a = {-9, 2}; + ivec2 v = {99, 99}; + int s = -2; + + GLM(ivec2_scale)(a, s, v); + ASSERT(v[0] == 18) + ASSERT(v[1] == -4) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_distance2) { + ivec2 a = {-1, 3}; + ivec2 b = {5, 4}; + int v; + + v = GLM(ivec2_distance2)(a, b); + ASSERT(v == 37) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_distance) { + ivec2 a = {3, 2}; + ivec2 b = {-2, 5}; + float v; + + v = GLM(ivec2_distance)(a, b); + ASSERT(test_eq(v, 5.8309518948f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_maxv) { + ivec2 a = {9, -20}; + ivec2 b = {8, -1}; + ivec2 v = {99, 99}; + + GLM(ivec2_maxv)(a, b, v); + ASSERT(v[0] == 9) + ASSERT(v[1] == -1) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_minv) { + ivec2 a = {16, 0}; + ivec2 b = {-15, 10}; + ivec2 v = {99, 99}; + + GLM(ivec2_minv)(a, b, v); + ASSERT(v[0] == -15) + ASSERT(v[1] == 0) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec2_clamp) { + ivec2 v = {3, -1}; + + GLM(ivec2_clamp)(v, -2, 4); + ASSERT(v[0] == 3) + ASSERT(v[1] == -1) + + v[0] = -15; + v[1] = 4; + GLM(ivec2_clamp)(v, -9, 3); + ASSERT(v[0] == -9) + ASSERT(v[1] == 3) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_ivec3.h b/lib/cglm/test/src/test_ivec3.h new file mode 100644 index 0000000..260b7a3 --- /dev/null +++ b/lib/cglm/test/src/test_ivec3.h @@ -0,0 +1,199 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, ivec3) { + ivec4 v4 = {2, 3, 5, 7}; + ivec3 v3 = {99, 99, 99}; + + GLM(ivec3)(v4, v3); + ASSERT(v3[0] == 2) + ASSERT(v3[1] == 3) + ASSERT(v3[2] == 5) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_copy) { + ivec3 src = {7, 5, 2}; + ivec3 dst = {99, 99, 99}; + + GLM(ivec3_copy)(src, dst); + ASSERT(dst[0] == 7) + ASSERT(dst[1] == 5) + ASSERT(dst[2] == 2) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_zero) { + ivec3 v = {2, 3, 5}; + + GLM(ivec3_zero)(v); + ASSERT(v[0] == 0) + ASSERT(v[1] == 0) + ASSERT(v[2] == 0) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_one) { + ivec3 v = {-2, 9, 12}; + + GLM(ivec3_one)(v); + ASSERT(v[0] == 1) + ASSERT(v[1] == 1) + ASSERT(v[2] == 1) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_add) { + ivec3 a = {14, 3, 2}; + ivec3 b = {-3, 2, 1}; + ivec3 v = {99, 99, 99}; + + GLM(ivec3_add)(a, b, v); + ASSERT(v[0] == 11) + ASSERT(v[1] == 5) + ASSERT(v[2] == 3) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_adds) { + ivec3 a = {-3, 1, 4}; + ivec3 v = {99, 99, 99}; + int s = 2; + + GLM(ivec3_adds)(a, s, v); + ASSERT(v[0] == -1) + ASSERT(v[1] == 3) + ASSERT(v[2] == 6) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_sub) { + ivec3 a = {-2, 9, 1}; + ivec3 b = {3, 2, -1}; + ivec3 v = {99, 99, 99}; + + GLM(ivec3_sub)(a, b, v); + ASSERT(v[0] == -5) + ASSERT(v[1] == 7) + ASSERT(v[2] == 2) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_subs) { + ivec3 a = {5, -2, 6}; + ivec3 v = {99, 99, 99}; + int s = -3; + + GLM(ivec3_subs)(a, s, v); + ASSERT(v[0] == 8) + ASSERT(v[1] == 1) + ASSERT(v[2] == 9) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_mul) { + ivec3 a = {3, 4, 5}; + ivec3 b = {-2, 3, 1}; + ivec3 v = {99, 99, 99}; + + GLM(ivec3_mul)(a, b, v); + ASSERT(v[0] == -6) + ASSERT(v[1] == 12) + ASSERT(v[2] == 5) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_scale) { + ivec3 a = {-9, 2, 3}; + ivec3 v = {99, 99, 99}; + int s = -2; + + GLM(ivec3_scale)(a, s, v); + ASSERT(v[0] == 18) + ASSERT(v[1] == -4) + ASSERT(v[2] == -6) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_distance2) { + ivec3 a = {-1, 3, 0}; + ivec3 b = {5, 4, 2}; + int v; + + v = GLM(ivec3_distance2)(a, b); + ASSERT(v == 41) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_distance) { + ivec3 a = {3, 2, 4}; + ivec3 b = {-2, 5, 2}; + float v; + + v = GLM(ivec3_distance)(a, b); + ASSERT(test_eq(v, 6.1644140029f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_maxv) { + ivec3 a = {9, -20, 5}; + ivec3 b = {8, -1, 2}; + ivec3 v = {99, 99, 99}; + + GLM(ivec3_maxv)(a, b, v); + ASSERT(v[0] == 9) + ASSERT(v[1] == -1) + ASSERT(v[2] == 5) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_minv) { + ivec3 a = {16, 0, 4}; + ivec3 b = {-15, 10, 8}; + ivec3 v = {99, 99, 99}; + + GLM(ivec3_minv)(a, b, v); + ASSERT(v[0] == -15) + ASSERT(v[1] == 0) + ASSERT(v[2] == 4) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec3_clamp) { + ivec3 v = {3, -1, 10}; + + GLM(ivec3_clamp)(v, -2, 4); + ASSERT(v[0] == 3) + ASSERT(v[1] == -1) + ASSERT(v[2] == 4) + + v[0] = -15; + v[1] = 4; + v[2] = 1; + GLM(ivec3_clamp)(v, -9, 3); + ASSERT(v[0] == -9) + ASSERT(v[1] == 3) + ASSERT(v[2] == 1) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_ivec4.h b/lib/cglm/test/src/test_ivec4.h new file mode 100644 index 0000000..48b3c41 --- /dev/null +++ b/lib/cglm/test/src/test_ivec4.h @@ -0,0 +1,214 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, ivec4) { + ivec3 v3 = {2, 3, 5}; + ivec4 v4; + + GLM(ivec4)(v3, 7, v4); + ASSERT(v4[0] == 2) + ASSERT(v4[1] == 3) + ASSERT(v4[2] == 5) + ASSERT(v4[3] == 7) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_copy) { + ivec4 src = {7, 5, 2, 11}; + ivec4 dst = {99, 99, 99, 99}; + + GLM(ivec4_copy)(src, dst); + ASSERT(dst[0] == 7) + ASSERT(dst[1] == 5) + ASSERT(dst[2] == 2) + ASSERT(dst[3] == 11) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_zero) { + ivec4 v = {2, 3, 5, 7}; + + GLM(ivec4_zero)(v); + ASSERT(v[0] == 0) + ASSERT(v[1] == 0) + ASSERT(v[2] == 0) + ASSERT(v[3] == 0) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_one) { + ivec4 v = {-2, 9, 12, 7}; + + GLM(ivec4_one)(v); + ASSERT(v[0] == 1) + ASSERT(v[1] == 1) + ASSERT(v[2] == 1) + ASSERT(v[3] == 1) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_add) { + ivec4 a = {14, 3, 2, -4}; + ivec4 b = {-3, 2, 1, -1}; + ivec4 v = {99, 99, 99, 99}; + + GLM(ivec4_add)(a, b, v); + ASSERT(v[0] == 11) + ASSERT(v[1] == 5) + ASSERT(v[2] == 3) + ASSERT(v[3] == -5) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_adds) { + ivec4 a = {-3, 1, 4, 2}; + ivec4 v = {99, 99, 99, 99}; + int s = -2; + + GLM(ivec4_adds)(a, s, v); + ASSERT(v[0] == -5) + ASSERT(v[1] == -1) + ASSERT(v[2] == 2) + ASSERT(v[3] == 0) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_sub) { + ivec4 a = {-2, 9, 1, 5}; + ivec4 b = {3, 2, -1, 2}; + ivec4 v = {99, 99, 99, 99}; + + GLM(ivec4_sub)(a, b, v); + ASSERT(v[0] == -5) + ASSERT(v[1] == 7) + ASSERT(v[2] == 2) + ASSERT(v[3] == 3) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_subs) { + ivec4 a = {5, -2, 6, 1}; + ivec4 v = {99, 99, 99, 99}; + int s = 2; + + GLM(ivec4_subs)(a, s, v); + ASSERT(v[0] == 3) + ASSERT(v[1] == -4) + ASSERT(v[2] == 4) + ASSERT(v[3] == -1) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_mul) { + ivec4 a = {3, 4, 5, -3}; + ivec4 b = {-2, 3, 1, 2}; + ivec4 v = {99, 99, 99, 99}; + + GLM(ivec4_mul)(a, b, v); + ASSERT(v[0] == -6) + ASSERT(v[1] == 12) + ASSERT(v[2] == 5) + ASSERT(v[3] == -6) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_scale) { + ivec4 a = {-9, 2, 3, 0}; + ivec4 v = {99, 99, 99, 99}; + int s = -2; + + GLM(ivec4_scale)(a, s, v); + ASSERT(v[0] == 18) + ASSERT(v[1] == -4) + ASSERT(v[2] == -6) + ASSERT(v[3] == 0) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_distance2) { + ivec4 a = {-1, 3, 0, 4}; + ivec4 b = {5, 4, 2, 6}; + int v; + + v = GLM(ivec4_distance2)(a, b); + ASSERT(v == 45) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_distance) { + ivec4 a = {3, 2, 4, -1}; + ivec4 b = {-2, 5, 2, 4}; + float v; + + v = GLM(ivec4_distance)(a, b); + ASSERT(test_eq(v, 7.9372539331f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_maxv) { + ivec4 a = {9, -20, 5, -3}; + ivec4 b = {8, -1, 2, 2}; + ivec4 v = {99, 99, 99, 99}; + + GLM(ivec4_maxv)(a, b, v); + ASSERT(v[0] == 9) + ASSERT(v[1] == -1) + ASSERT(v[2] == 5) + ASSERT(v[3] == 2) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_minv) { + ivec4 a = {16, 0, 4, 5}; + ivec4 b = {-15, 10, 8, 2}; + ivec4 v = {99, 99, 99, 99}; + + GLM(ivec4_minv)(a, b, v); + ASSERT(v[0] == -15) + ASSERT(v[1] == 0) + ASSERT(v[2] == 4) + ASSERT(v[3] == 2) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, ivec4_clamp) { + ivec4 v = {3, -1, 10, -100}; + + GLM(ivec4_clamp)(v, -2, 4); + ASSERT(v[0] == 3) + ASSERT(v[1] == -1) + ASSERT(v[2] == 4) + ASSERT(v[3] == -2) + + v[0] = -15; + v[1] = 4; + v[2] = 1; + v[3] = 0; + GLM(ivec4_clamp)(v, -9, 3); + ASSERT(v[0] == -9) + ASSERT(v[1] == 3) + ASSERT(v[2] == 1) + ASSERT(v[3] == 0) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_mat2.h b/lib/cglm/test/src/test_mat2.h new file mode 100644 index 0000000..9141caf --- /dev/null +++ b/lib/cglm/test/src/test_mat2.h @@ -0,0 +1,286 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +#define A_MATRIX2x2 {{1,2},{5,6}} + +#ifndef CGLM_TEST_MAT2_ONCE +#define CGLM_TEST_MAT2_ONCE + +TEST_IMPL(MACRO_GLM_MAT2_IDENTITY_INIT) { + mat2 m = GLM_MAT2_IDENTITY_INIT; + + ASSERT(test_eq(m[0][0], 1.0f)) + ASSERT(test_eq(m[0][1], 0.0f)) + ASSERT(test_eq(m[1][0], 0.0f)) + ASSERT(test_eq(m[1][1], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_MAT2_ZERO_INIT) { + mat2 m = GLM_MAT2_ZERO_INIT; + + ASSERT(test_eq(m[0][0], 0.0f)) + ASSERT(test_eq(m[0][1], 0.0f)) + ASSERT(test_eq(m[1][0], 0.0f)) + ASSERT(test_eq(m[1][1], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_MAT2_IDENTITY) { + ASSERT(test_eq(GLM_MAT2_IDENTITY[0][0], 1.0f)) + ASSERT(test_eq(GLM_MAT2_IDENTITY[0][1], 0.0f)) + ASSERT(test_eq(GLM_MAT2_IDENTITY[1][0], 0.0f)) + ASSERT(test_eq(GLM_MAT2_IDENTITY[1][1], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_MAT2_ZERO) { + ASSERT(test_eq(GLM_MAT2_ZERO[0][0], 0.0f)) + ASSERT(test_eq(GLM_MAT2_ZERO[0][1], 0.0f)) + ASSERT(test_eq(GLM_MAT2_ZERO[1][0], 0.0f)) + ASSERT(test_eq(GLM_MAT2_ZERO[1][1], 0.0f)) + + TEST_SUCCESS +} + +#endif /* CGLM_TEST_MAT2_ONCE */ + +TEST_IMPL(GLM_PREFIX, mat2_copy) { + mat2 m1 = A_MATRIX2x2; + mat2 m2 = GLM_MAT2_IDENTITY_INIT; + + GLM(mat2_copy)(m1, m2); + + test_assert_mat2_eq(m1, m2); + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_identity) { + mat2 m1 = GLM_MAT2_IDENTITY_INIT; + mat2 m2 = GLM_MAT2_IDENTITY_INIT; + mat2 m3; + + GLM(mat2_identity)(m3); + + ASSERTIFY(test_assert_mat2_eq_identity(m1)) + ASSERTIFY(test_assert_mat2_eq_identity(m2)) + ASSERTIFY(test_assert_mat2_eq_identity(m3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_identity_array) { + int i, count; + mat2 matrices[4] = { + A_MATRIX2x2, + A_MATRIX2x2, + A_MATRIX2x2, + A_MATRIX2x2 + }; + + count = 4; + + GLM(mat2_identity_array)(matrices, count); + + for (i = 0; i < count; i++) { + ASSERTIFY(test_assert_mat2_eq_identity(matrices[i])) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_zero) { + mat2 m1 = GLM_MAT2_ZERO_INIT; + mat2 m2 = GLM_MAT2_ZERO_INIT; + mat2 m3; + + GLM(mat2_zero)(m3); + + ASSERTIFY(test_assert_mat2_eq_zero(m1)) + ASSERTIFY(test_assert_mat2_eq_zero(m2)) + ASSERTIFY(test_assert_mat2_eq_zero(m3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_mul) { + mat2 m1 = GLM_MAT2_IDENTITY_INIT; + mat2 m2 = GLM_MAT2_IDENTITY_INIT; + mat2 m3; + mat2 m4 = GLM_MAT2_ZERO_INIT; + int i, j, k; + + /* test random matrices */ + /* random matrices */ + test_rand_mat2(m1); + test_rand_mat2(m2); + + GLM(mat2_mul)(m1, m2, m3); + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + for (k = 0; k < 2; k++) + /* column-major */ + m4[i][j] += m1[k][j] * m2[i][k]; + } + } + + ASSERTIFY(test_assert_mat2_eq(m3, m4)) + + /* test pre compiled */ + GLM(mat2_mul)(m1, m2, m3); + ASSERTIFY(test_assert_mat2_eq(m3, m4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_transpose_to) { + mat2 mat = A_MATRIX2x2; + mat2 m1; + + GLM(mat2_transpose_to)(mat, m1); + + ASSERTIFY(test_assert_mat2_eqt(mat, m1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_transpose) { + mat2 mat = A_MATRIX2x2; + mat2 m1; + + GLM(mat2_copy)(mat, m1); + GLM(mat2_transpose)(m1); + + ASSERTIFY(test_assert_mat2_eqt(mat, m1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_mulv) { + vec2 res; + mat2 mat = A_MATRIX2x2; + vec2 v = {11.0f, 21.0f}; + int i; + + GLM(mat2_mulv)(mat, v, res); + + for (i = 0; i < 2; i++) { + ASSERT(test_eq(res[i], v[0] * mat[0][i] + v[1] * mat[1][i])) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_trace) { + mat2 mat = A_MATRIX2x2; + float trace; + + trace = GLM(mat2_trace)(mat); + + ASSERT(test_eq(trace, mat[0][0] + mat[1][1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_scale) { + mat2 m1 = A_MATRIX2x2; + mat2 m2 = A_MATRIX2x2; + int i, j, scale; + + scale = rand() % 100; + + GLM(mat2_scale)(m1, (float)scale); + + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + ASSERT(test_eq(m1[i][j], m2[i][j] * scale)) + } + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_det) { + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_inv) { + mat2 m1 = GLM_MAT2_IDENTITY_INIT; + mat2 m2 = GLM_MAT2_IDENTITY_INIT; + mat2 m3; + int i; + + m1[0][0] = 41.0f; + m1[0][1] = 0.0f; + m1[1][0] = 0.0f; + m1[1][1] = 70.0f; + + for (i = 0; i < 10000; i++) { + /* test inverse precise */ + GLM(mat2_inv)(m1, m2); + GLM(mat2_inv)(m2, m3); + + ASSERTIFY(test_assert_mat2_eq(m1, m3)) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_swap_col) { + mat2 m1 = A_MATRIX2x2; + mat2 m2 = A_MATRIX2x2; + + GLM(mat2_swap_col)(m1, 0, 1); + + ASSERTIFY(test_assert_vec2_eq(m1[0], m2[1])) + ASSERTIFY(test_assert_vec2_eq(m1[1], m2[0])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_swap_row) { + mat2 m1 = A_MATRIX2x2; + mat2 m2 = A_MATRIX2x2; + + GLM(mat2_swap_row)(m1, 0, 1); + + ASSERT(test_eq(m1[0][0], m2[0][1])) + ASSERT(test_eq(m1[0][1], m2[0][0])) + + ASSERT(test_eq(m1[1][0], m2[1][1])) + ASSERT(test_eq(m1[1][1], m2[1][0])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat2_rmc) { + mat2 mat = A_MATRIX2x2; + vec2 v = {11.0f, 12.0f}; + vec2 v1; + float r1, r2; + int i; + + r1 = GLM(mat2_rmc)(v, mat, v); + + for (i = 0; i < 2; i++) { + v1[i] = v[0] * mat[i][0] + v[1] * mat[i][1]; + } + + r2 = v[0] * v1[0] + v[1] * v1[1]; + + ASSERT(test_eq(r1, r2)) + + TEST_SUCCESS +} + +#undef A_MATRIX2x2 diff --git a/lib/cglm/test/src/test_mat3.h b/lib/cglm/test/src/test_mat3.h new file mode 100644 index 0000000..76b1786 --- /dev/null +++ b/lib/cglm/test/src/test_mat3.h @@ -0,0 +1,311 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +#define A_MATRIX {{1,2,3},{5,6,7},{9,10,11}} + +TEST_IMPL(GLM_PREFIX, mat3_copy) { + mat3 m1 = A_MATRIX; + mat3 m2 = GLM_MAT3_IDENTITY_INIT; + + GLM(mat3_copy)(m1, m2); + + test_assert_mat3_eq(m1, m2); + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_identity) { + mat3 m1 = GLM_MAT3_IDENTITY_INIT; + mat3 m2 = GLM_MAT3_IDENTITY_INIT; + mat3 m3; + + GLM(mat3_identity)(m3); + + ASSERTIFY(test_assert_mat3_eq_identity(m1)) + ASSERTIFY(test_assert_mat3_eq_identity(m2)) + ASSERTIFY(test_assert_mat3_eq_identity(m3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_identity_array) { + int i, count; + mat3 matrices[4] = { + A_MATRIX, + A_MATRIX, + A_MATRIX, + A_MATRIX + }; + + count = 4; + + GLM(mat3_identity_array)(matrices, count); + + for (i = 0; i < count; i++) { + ASSERTIFY(test_assert_mat3_eq_identity(matrices[i])) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_zero) { + mat3 m1 = GLM_MAT3_ZERO_INIT; + mat3 m2 = GLM_MAT3_ZERO_INIT; + mat3 m3; + + GLM(mat3_zero)(m3); + + ASSERTIFY(test_assert_mat3_eq_zero(m1)) + ASSERTIFY(test_assert_mat3_eq_zero(m2)) + ASSERTIFY(test_assert_mat3_eq_zero(m3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_mul) { + mat3 m1 = GLM_MAT3_IDENTITY_INIT; + mat3 m2 = GLM_MAT3_IDENTITY_INIT; + mat3 m3; + mat3 m4 = GLM_MAT3_ZERO_INIT; + int i, j, k; + + /* test random matrices */ + /* random matrices */ + test_rand_mat3(m1); + test_rand_mat3(m2); + + GLM(mat3_mul)(m1, m2, m3); + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + for (k = 0; k < 3; k++) + /* column-major */ + m4[i][j] += m1[k][j] * m2[i][k]; + } + } + + ASSERTIFY(test_assert_mat3_eq(m3, m4)) + + /* test pre compiled */ + GLM(mat3_mul)(m1, m2, m3); + ASSERTIFY(test_assert_mat3_eq(m3, m4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_mulv) { + vec4 res; + mat3 mat = A_MATRIX; + vec4 v = {1.0f, 2.0f, 3.0f, 4.0f}; + int i; + + GLM(mat3_mulv)(mat, v, res); + + for (i = 0; i < 3; i++) { + ASSERT(test_eq(res[i], + v[0] * mat[0][i] + + v[1] * mat[1][i] + + v[2] * mat[2][i])) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_trace) { + mat3 mat = A_MATRIX; + float trace; + + trace = GLM(mat3_trace)(mat); + + ASSERT(test_eq(trace, mat[0][0] + mat[1][1] + mat[2][2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_quat) { + mat3 m1, m3; + mat4 m2; + versor q1, q2, q3; + vec3 axis1; + vec3 axis2 = {1.9f, 2.3f, 4.5f}; + + GLM(quat)(q1, GLM_PI_4f, 1.9f, 2.3f, 4.5f); + GLM(quat_mat3)(q1, m1); + GLM(mat3_quat)(m1, q2); + + GLM(rotate_make)(m2, GLM_PI_4f, axis2); + GLM(mat3_quat)(m1, q3); + + GLM(quat_axis)(q3, axis1); + + GLM(vec3_normalize)(axis1); + GLM(vec3_normalize)(axis2); + + GLM(mat4_pick3)(m2, m3); + + ASSERT(test_eq(glm_quat_angle(q3), GLM_PI_4f)) + ASSERTIFY(test_assert_vec3_eq(axis1, axis2)) + ASSERTIFY(test_assert_vec4_eq(q1, q2)) + ASSERTIFY(test_assert_mat3_eq(m1, m3)) + ASSERTIFY(test_assert_vec4_eq(q1, q3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_transpose_to) { + mat3 mat = A_MATRIX; + mat3 m1; + + GLM(mat3_transpose_to)(mat, m1); + + ASSERTIFY(test_assert_mat3_eqt(mat, m1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_transpose) { + mat3 mat = A_MATRIX; + mat3 m1; + + GLM(mat3_copy)(mat, m1); + GLM(mat3_transpose)(m1); + + ASSERTIFY(test_assert_mat3_eqt(mat, m1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_scale) { + mat3 m1 = A_MATRIX; + mat3 m2 = A_MATRIX; + int i, j, k, scale; + + scale = rand() % 100; + + GLM(mat3_scale)(m1, (float)scale); + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + for (k = 0; k < 3; k++) + ASSERT(test_eq(m1[i][j], m2[i][j] * scale)) + } + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_det) { + mat3 mat; + float a, b, c, + d, e, f, + g, h, i; + float det1, det2; + + test_rand_mat3(mat); + + a = mat[0][0]; b = mat[0][1]; c = mat[0][2]; + d = mat[1][0]; e = mat[1][1]; f = mat[1][2]; + g = mat[2][0]; h = mat[2][1]; i = mat[2][2]; + + det1 = a * (e * i - h * f) - d * (b * i - c * h) + g * (b * f - c * e); + det2 = GLM(mat3_det)(mat); + + ASSERT(test_eq(det1, det2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_inv) { + mat3 m1 = GLM_MAT3_IDENTITY_INIT; + mat3 m2 = GLM_MAT3_IDENTITY_INIT; + mat3 m3; + int i; + + for (i = 0; i < 100000; i++) { + test_rand_mat3(m1); + test_rand_mat3(m2); + + /* test inverse precise */ + GLM(mat3_inv)(m1, m2); + GLM(mat3_inv)(m2, m3); + ASSERTIFY(test_assert_mat3_eq(m1, m3)) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_swap_col) { + mat3 m1 = A_MATRIX; + mat3 m2 = A_MATRIX; + + GLM(mat3_swap_col)(m1, 0, 1); + + ASSERTIFY(test_assert_vec3_eq(m1[0], m2[1])) + ASSERTIFY(test_assert_vec3_eq(m1[1], m2[0])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_swap_row) { + mat3 m1 = A_MATRIX; + mat3 m2 = A_MATRIX; + + GLM(mat3_swap_row)(m1, 0, 1); + + ASSERT(test_eq(m1[0][0], m2[0][1])) + ASSERT(test_eq(m1[0][1], m2[0][0])) + ASSERT(test_eq(m1[0][2], m2[0][2])) + + ASSERT(test_eq(m1[1][0], m2[1][1])) + ASSERT(test_eq(m1[1][1], m2[1][0])) + ASSERT(test_eq(m1[1][2], m2[1][2])) + + ASSERT(test_eq(m1[2][0], m2[2][1])) + ASSERT(test_eq(m1[2][1], m2[2][0])) + ASSERT(test_eq(m1[2][2], m2[2][2])) + + GLM(mat3_swap_row)(m1, 1, 2); + + ASSERT(test_eq(m1[0][0], m2[0][1])) + ASSERT(test_eq(m1[0][1], m2[0][2])) + ASSERT(test_eq(m1[0][2], m2[0][0])) + + ASSERT(test_eq(m1[1][0], m2[1][1])) + ASSERT(test_eq(m1[1][1], m2[1][2])) + ASSERT(test_eq(m1[1][2], m2[1][0])) + + ASSERT(test_eq(m1[2][0], m2[2][1])) + ASSERT(test_eq(m1[2][1], m2[2][2])) + ASSERT(test_eq(m1[2][2], m2[2][0])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat3_rmc) { + mat3 mat = A_MATRIX; + vec3 v = {11.0f, 12.0f, 13.0f}; + vec3 v1; + float r1, r2; + int i; + + r1 = GLM(mat3_rmc)(v, mat, v); + + for (i = 0; i < 3; i++) { + v1[i] = v[0] * mat[i][0] + + v[1] * mat[i][1] + + v[2] * mat[i][2]; + } + + r2 = v[0] * v1[0] + v[1] * v1[1] + v[2] * v1[2]; + + ASSERT(test_eq(r1, r2)) + + TEST_SUCCESS +} + +#undef A_MATRIX diff --git a/lib/cglm/test/src/test_mat4.h b/lib/cglm/test/src/test_mat4.h new file mode 100644 index 0000000..d42e457 --- /dev/null +++ b/lib/cglm/test/src/test_mat4.h @@ -0,0 +1,488 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +#define A_MATRIX {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}} +#define A_MATRIX3 {{1,2,3},{5,6,7},{9,10,11}} + +TEST_IMPL(GLM_PREFIX, mat4_ucopy) { + mat4 m1 = A_MATRIX; + mat4 m2 = GLM_MAT4_IDENTITY_INIT; + + GLM(mat4_ucopy)(m1, m2); + + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_copy) { + mat4 m1 = A_MATRIX; + mat4 m2 = GLM_MAT4_IDENTITY_INIT; + + GLM(mat4_copy)(m1, m2); + + test_assert_mat4_eq(m1, m2); + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_identity) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + mat4 m2 = GLM_MAT4_IDENTITY_INIT; + mat4 m3; + + GLM(mat4_identity)(m3); + + ASSERTIFY(test_assert_mat4_eq_identity(m1)) + ASSERTIFY(test_assert_mat4_eq_identity(m2)) + ASSERTIFY(test_assert_mat4_eq_identity(m3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_identity_array) { + int i, count; + mat4 matrices[4] = { + A_MATRIX, + A_MATRIX, + A_MATRIX, + A_MATRIX + }; + + count = 4; + + GLM(mat4_identity_array)(matrices, count); + + for (i = 0; i < count; i++) { + ASSERTIFY(test_assert_mat4_eq_identity(matrices[i])) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_zero) { + mat4 m1 = GLM_MAT4_ZERO_INIT; + mat4 m2 = GLM_MAT4_ZERO_INIT; + mat4 m3; + + GLM(mat4_zero)(m3); + + ASSERTIFY(test_assert_mat4_eq_zero(m1)) + ASSERTIFY(test_assert_mat4_eq_zero(m2)) + ASSERTIFY(test_assert_mat4_eq_zero(m3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_pick3) { + mat4 m1 = A_MATRIX; + mat3 m2 = GLM_MAT3_ZERO_INIT; + mat3 m3 = A_MATRIX3; + + GLM(mat4_pick3)(m1, m2); + + ASSERTIFY(test_assert_mat3_eq(m2, m3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_pick3t) { + mat4 m1 = A_MATRIX; + mat3 m2 = GLM_MAT3_ZERO_INIT; + mat3 m3 = A_MATRIX3; + + GLM(mat4_pick3t)(m1, m2); + + ASSERTIFY(test_assert_mat3_eqt(m2, m3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_ins3) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + mat3 m2 = A_MATRIX3; + int i, j; + + GLM(mat4_ins3)(m2, m1); + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + ASSERT(m1[i][j] == m2[i][j]) + } + } + + ASSERT(test_eq(m1[3][0], 0.0f)) + ASSERT(test_eq(m1[3][1], 0.0f)) + ASSERT(test_eq(m1[3][2], 0.0f)) + ASSERT(test_eq(m1[3][3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_mul) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + mat4 m2 = GLM_MAT4_IDENTITY_INIT; + mat4 m3; + mat4 m4 = GLM_MAT4_ZERO_INIT; + int i, j, k; + + /* test random matrices */ + /* random matrices */ + test_rand_mat4(m1); + test_rand_mat4(m2); + + GLM(mat4_mul)(m1, m2, m3); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 4; k++) + /* column-major */ + m4[i][j] += m1[k][j] * m2[i][k]; + } + } + + ASSERTIFY(test_assert_mat4_eq(m3, m4)) + + /* test pre compiled */ + GLM(mat4_mul)(m1, m2, m3); + ASSERTIFY(test_assert_mat4_eq(m3, m4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_mulN) { + mat4 res1, res2; + mat4 m1 = A_MATRIX; + mat4 m2 = A_MATRIX; + mat4 m3 = A_MATRIX; + + mat4 *matrices[] = { + &m1, &m2, &m3 + }; + + GLM(mat4_mulN)(matrices, sizeof(matrices) / sizeof(matrices[0]), res1); + + GLM(mat4_mul)(*matrices[0], *matrices[1], res2); + GLM(mat4_mul)(res2, *matrices[2], res2); + + ASSERTIFY(test_assert_mat4_eq(res1, res1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_mulv) { + vec4 res; + mat4 mat = A_MATRIX; + vec4 v = {1.0f, 2.0f, 3.0f, 4.0f}; + int i; + + GLM(mat4_mulv)(mat, v, res); + + for (i = 0; i < 4; i++) { + ASSERT(test_eq(res[i], + v[0] * mat[0][i] + + v[1] * mat[1][i] + + v[2] * mat[2][i] + + v[3] * mat[3][i])) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_mulv3) { + vec4 res; + mat4 mat = A_MATRIX; + vec3 v = {1.0f, 2.0f, 3.0f}; + float last; + int i; + + last = 1.0f; + + GLM(mat4_mulv3)(mat, v, last, res); + + for (i = 0; i < 3; i++) { + ASSERT(test_eq(res[i], + v[0] * mat[0][i] + + v[1] * mat[1][i] + + v[2] * mat[2][i] + + last * mat[3][i])) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_trace) { + mat4 mat = A_MATRIX; + float trace; + + trace = GLM(mat4_trace)(mat); + + ASSERT(test_eq(trace, mat[0][0] + mat[1][1] + mat[2][2] + mat[3][3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_trace3) { + mat4 mat = A_MATRIX; + float trace; + + trace = GLM(mat4_trace3)(mat); + + ASSERT(test_eq(trace, mat[0][0] + mat[1][1] + mat[2][2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_quat) { + mat4 m1, m2; + versor q1, q2, q3; + vec3 axis1; + vec3 axis2 = {1.9f, 2.3f, 4.5f}; + + GLM(quat)(q1, GLM_PI_4f, 1.9f, 2.3f, 4.5f); + GLM(quat_mat4)(q1, m1); + GLM(mat4_quat)(m1, q2); + + GLM(rotate_make)(m2, GLM_PI_4f, axis2); + GLM(mat4_quat)(m1, q3); + + GLM(quat_axis)(q3, axis1); + + GLM(vec3_normalize)(axis1); + GLM(vec3_normalize)(axis2); + + ASSERT(test_eq(glm_quat_angle(q3), GLM_PI_4f)) + ASSERTIFY(test_assert_vec3_eq(axis1, axis2)) + ASSERTIFY(test_assert_vec4_eq(q1, q2)) + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + ASSERTIFY(test_assert_vec4_eq(q1, q3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_transpose_to) { + mat4 mat = A_MATRIX; + mat4 m1; + + GLM(mat4_transpose_to)(mat, m1); + + ASSERTIFY(test_assert_mat4_eqt(mat, m1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_transpose) { + mat4 mat = A_MATRIX; + mat4 m1; + + GLM(mat4_copy)(mat, m1); + GLM(mat4_transpose)(m1); + + ASSERTIFY(test_assert_mat4_eqt(mat, m1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_scale_p) { + mat4 m1 = A_MATRIX; + mat4 m2 = A_MATRIX; + int i, j, k, scale; + + scale = rand() % 100; + + GLM(mat4_scale_p)(m1, (float)scale); + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 4; k++) + ASSERT(test_eq(m1[i][j], m2[i][j] * scale)) + } + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_scale) { + mat4 m1 = A_MATRIX; + mat4 m2 = A_MATRIX; + int i, j, k, scale; + + scale = rand() % 100; + + GLM(mat4_scale)(m1, (float)scale); + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 4; k++) + ASSERT(test_eq(m1[i][j], m2[i][j] * scale)) + } + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_det) { + mat4 mat = GLM_MAT4_IDENTITY_INIT; + float t[6]; + float a, b, c, d, + e, f, g, h, + i, j, k, l, + m, n, o, p; + float det1, det2; + + test_rand_mat4(mat); + + a = mat[0][0]; b = mat[0][1]; c = mat[0][2]; d = mat[0][3]; + e = mat[1][0]; f = mat[1][1]; g = mat[1][2]; h = mat[1][3]; + i = mat[2][0]; j = mat[2][1]; k = mat[2][2]; l = mat[2][3]; + m = mat[3][0]; n = mat[3][1]; o = mat[3][2]; p = mat[3][3]; + + t[0] = k * p - o * l; + t[1] = j * p - n * l; + t[2] = j * o - n * k; + t[3] = i * p - m * l; + t[4] = i * o - m * k; + t[5] = i * n - m * j; + + det1 = a * (f * t[0] - g * t[1] + h * t[2]) + - b * (e * t[0] - g * t[3] + h * t[4]) + + c * (e * t[1] - f * t[3] + h * t[5]) + - d * (e * t[2] - f * t[4] + g * t[5]); + + det2 = GLM(mat4_det(mat)); + + ASSERT(test_eq(det1, det2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_inv) { + mat4 m1, m2, m3; + int i; + + for (i = 0; i < 100000; i++) { + test_rand_mat4(m1); + test_rand_mat4(m2); + + /* test inverse precise */ + GLM(mat4_inv)(m1, m2); + GLM(mat4_inv)(m2, m3); + ASSERTIFY(test_assert_mat4_eq(m1, m3)) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_inv_precise) { + mat4 m1, m2, m3; + mat4 m4, m5, m6; + int i; + + for (i = 0; i < 100000; i++) { + test_rand_mat4(m1); + test_rand_mat4(m2); + + glm_mat4_inv_precise(m1, m2); + glm_mat4_inv_precise(m2, m3); + ASSERTIFY(test_assert_mat4_eq(m1, m3)) + + test_rand_mat4(m4); + test_rand_mat4(m5); + + glmc_mat4_inv_precise(m4, m5); + glmc_mat4_inv_precise(m5, m6); + ASSERTIFY(test_assert_mat4_eq(m4, m6)) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_inv_fast) { + mat4 m1, m2, m3; + int i; + + for (i = 0; i < 100000; i++) { + test_rand_mat4(m1); + test_rand_mat4(m2); + + /* test inverse precise */ + GLM(mat4_inv_fast)(m1, m2); + GLM(mat4_inv_fast)(m2, m3); + ASSERTIFY(test_assert_mat4_eq2(m1, m3, 0.0009f)) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_swap_col) { + mat4 m1 = A_MATRIX; + mat4 m2 = A_MATRIX; + + GLM(mat4_swap_col)(m1, 0, 1); + GLM(mat4_swap_col)(m1, 2, 3); + + ASSERTIFY(test_assert_vec4_eq(m1[0], m2[1])) + ASSERTIFY(test_assert_vec4_eq(m1[1], m2[0])) + ASSERTIFY(test_assert_vec4_eq(m1[2], m2[3])) + ASSERTIFY(test_assert_vec4_eq(m1[3], m2[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_swap_row) { + mat4 m1 = A_MATRIX; + mat4 m2 = A_MATRIX; + + GLM(mat4_swap_row)(m1, 0, 1); + GLM(mat4_swap_row)(m1, 2, 3); + + ASSERT(test_eq(m1[0][0], m2[0][1])) + ASSERT(test_eq(m1[0][1], m2[0][0])) + ASSERT(test_eq(m1[0][2], m2[0][3])) + ASSERT(test_eq(m1[0][3], m2[0][2])) + ASSERT(test_eq(m1[1][0], m2[1][1])) + ASSERT(test_eq(m1[1][1], m2[1][0])) + ASSERT(test_eq(m1[1][2], m2[1][3])) + ASSERT(test_eq(m1[1][3], m2[1][2])) + ASSERT(test_eq(m1[2][0], m2[2][1])) + ASSERT(test_eq(m1[2][1], m2[2][0])) + ASSERT(test_eq(m1[2][2], m2[2][3])) + ASSERT(test_eq(m1[2][3], m2[2][2])) + ASSERT(test_eq(m1[3][0], m2[3][1])) + ASSERT(test_eq(m1[3][1], m2[3][0])) + ASSERT(test_eq(m1[3][2], m2[3][3])) + ASSERT(test_eq(m1[3][3], m2[3][2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, mat4_rmc) { + mat4 mat = A_MATRIX; + vec4 v = {1.0f, 2.0f, 3.0f, 4.0f}; + vec4 v1; + float r1, r2; + int i; + + r1 = GLM(mat4_rmc)(v, mat, v); + + for (i = 0; i < 4; i++) { + v1[i] = v[0] * mat[i][0] + + v[1] * mat[i][1] + + v[2] * mat[i][2] + + v[3] * mat[i][3]; + } + + r2 = v[0] * v1[0] + v[1] * v1[1] + v[2] * v1[2] + v[3] * v1[3]; + + ASSERT(test_eq(r1, r2)) + + TEST_SUCCESS +} + +#undef A_MATRIX +#undef A_MATRIX3 diff --git a/lib/cglm/test/src/test_plane.h b/lib/cglm/test/src/test_plane.h new file mode 100644 index 0000000..896c8b5 --- /dev/null +++ b/lib/cglm/test/src/test_plane.h @@ -0,0 +1,39 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, plane_normalize) { + vec4 p1 = {2.0f, -3.0f, 4.0f, 5.0f}, p2 = {2.0f, -3.0f, 4.0f, 5.0f}; + float s = 1.0f; + float norm; + + GLM(plane_normalize)(p2); + + norm = sqrtf(p1[0] * p1[0] + p1[1] * p1[1] + p1[2] * p1[2]); + if (norm == 0.0f) { + ASSERT(test_eq(p1[0], 0.0f)) + ASSERT(test_eq(p1[1], 0.0f)) + ASSERT(test_eq(p1[2], 0.0f)) + ASSERT(test_eq(p1[3], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(p1[0] * norm, p2[0])) + ASSERT(test_eq(p1[1] * norm, p2[1])) + ASSERT(test_eq(p1[2] * norm, p2[2])) + ASSERT(test_eq(p1[3] * norm, p2[3])) + + glm_vec4_zero(p1); + GLM(plane_normalize)(p1); + ASSERTIFY(test_assert_vec4_eq(p1, GLM_VEC4_ZERO)) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_project.h b/lib/cglm/test/src/test_project.h new file mode 100644 index 0000000..41bdecd --- /dev/null +++ b/lib/cglm/test/src/test_project.h @@ -0,0 +1,92 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, unprojecti) { + mat4 model, view, proj, mvp; + vec4 viewport = {0.0f, 0.0f, 800.0f, 600.0f}; + vec3 pos = {13.0f, 45.0f, 0.74f}; + vec3 projected, unprojected; + + glm_translate_make(model, (vec3){0.0f, 0.0f, -10.0f}); + glm_lookat((vec3){0.0f, 0.0f, 0.0f}, pos, GLM_YUP, view); + + glm_perspective_default(0.5f, proj); + glm_mat4_mulN((mat4 *[]){&proj, &view, &model}, 3, mvp); + + GLM(project)(pos, mvp, viewport, projected); + + glm_mat4_inv(mvp, mvp); + GLM(unprojecti)(projected, mvp, viewport, unprojected); + + /* unprojected of projected vector must be same as original one */ + /* we used 0.01 because of projection floating point errors */ + ASSERT(fabsf(pos[0] - unprojected[0]) < 0.01) + ASSERT(fabsf(pos[1] - unprojected[1]) < 0.01) + ASSERT(fabsf(pos[2] - unprojected[2]) < 0.01) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, unproject) { + mat4 model, view, proj, mvp; + vec4 viewport = {0.0f, 0.0f, 800.0f, 600.0f}; + vec3 pos = {13.0f, 45.0f, 0.74f}; + vec3 projected, unprojected; + + glm_translate_make(model, (vec3){0.0f, 0.0f, -10.0f}); + glm_lookat((vec3){0.0f, 0.0f, 0.0f}, pos, GLM_YUP, view); + + glm_perspective_default(0.5f, proj); + glm_mat4_mulN((mat4 *[]){&proj, &view, &model}, 3, mvp); + + GLM(project)(pos, mvp, viewport, projected); + GLM(unproject)(projected, mvp, viewport, unprojected); + + /* unprojected of projected vector must be same as original one */ + /* we used 0.01 because of projection floating point errors */ + ASSERT(fabsf(pos[0] - unprojected[0]) < 0.01) + ASSERT(fabsf(pos[1] - unprojected[1]) < 0.01) + ASSERT(fabsf(pos[2] - unprojected[2]) < 0.01) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, project) { + mat4 model, view, proj, mvp; + vec4 viewport = {0.0f, 0.0f, 800.0f, 600.0f}; + vec3 pos = {13.0f, 45.0f, 0.74f}; + vec3 projected, unprojected; + + glm_translate_make(model, (vec3){0.0f, 0.0f, -10.0f}); + glm_lookat((vec3){0.0f, 0.0f, 0.0f}, pos, GLM_YUP, view); + + glm_perspective_default(0.5f, proj); + glm_mat4_mulN((mat4 *[]){&proj, &view, &model}, 3, mvp); + + GLM(project)(pos, mvp, viewport, projected); + GLM(unproject)(projected, mvp, viewport, unprojected); + + /* unprojected of projected vector must be same as original one */ + /* we used 0.01 because of projection floating point errors */ + ASSERT(fabsf(pos[0] - unprojected[0]) < 0.01) + ASSERT(fabsf(pos[1] - unprojected[1]) < 0.01) + ASSERT(fabsf(pos[2] - unprojected[2]) < 0.01) + + /* test with no projection */ + glm_mat4_identity(mvp); + + GLM(project)(pos, mvp, viewport, projected); + GLM(unproject)(projected, mvp, viewport, unprojected); + + ASSERT(test_eq(pos[0], unprojected[0])) + ASSERT(test_eq(pos[1], unprojected[1])) + ASSERT(test_eq(pos[2], unprojected[2])) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_quat.h b/lib/cglm/test/src/test_quat.h new file mode 100644 index 0000000..ab85b19 --- /dev/null +++ b/lib/cglm/test/src/test_quat.h @@ -0,0 +1,1086 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +#ifndef CGLM_TEST_QUAT_ONCE +#define CGLM_TEST_QUAT_ONCE + +/* Macros */ + +TEST_IMPL(MACRO_GLM_QUAT_IDENTITY_INIT) { + versor v = GLM_QUAT_IDENTITY_INIT; + + ASSERT(test_eq(v[0], 0.0f)) + ASSERT(test_eq(v[1], 0.0f)) + ASSERT(test_eq(v[2], 0.0f)) + ASSERT(test_eq(v[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_QUAT_IDENTITY) { + ASSERT(test_eq(GLM_QUAT_IDENTITY[0], 0.0f)) + ASSERT(test_eq(GLM_QUAT_IDENTITY[1], 0.0f)) + ASSERT(test_eq(GLM_QUAT_IDENTITY[2], 0.0f)) + ASSERT(test_eq(GLM_QUAT_IDENTITY[3], 1.0f)) + + TEST_SUCCESS +} + +#endif /* CGLM_TEST_QUAT_ONCE */ + +TEST_IMPL(GLM_PREFIX, quat_identity) { + versor a = GLM_QUAT_IDENTITY_INIT; + versor b = GLM_QUAT_IDENTITY_INIT; + versor c; + mat4 r; + + GLM(quat_identity)(c); + + ASSERTIFY(test_assert_quat_eq_identity(a)) + ASSERTIFY(test_assert_quat_eq_identity(b)) + ASSERTIFY(test_assert_quat_eq_identity(c)) + + glm_quat_identity(c); + ASSERT(test_eq(glm_quat_real(c), cosf(glm_rad(0.0f) * 0.5f))) + + glm_quat_mat4(c, r); + ASSERTIFY(test_assert_mat4_eq2(r, GLM_MAT4_IDENTITY, 0.000009f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_identity_array) { + int i, count; + versor quats[4] = { + {1.0f, 2.0f, 3.0f, 4.0f}, + {1.0f, 2.0f, 3.0f, 4.0f}, + {1.0f, 2.0f, 3.0f, 4.0f}, + {1.0f, 2.0f, 3.0f, 4.0f}, + }; + + count = 4; + + GLM(quat_identity_array)(quats, count); + + for (i = 0; i < count; i++) { + ASSERTIFY(test_assert_quat_eq_identity(quats[i])) + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_init) { + versor q1 = {1.0f, 2.0f, 3.0f, 4.0f}; + versor q2 = {1.0f, 2.0f, 3.0f, 4.0f}; + versor q3 = {1.0f, 2.0f, 3.0f, 4.0f}; + + GLM(quat_init)(q1, 10.0f, 11.0f, 12.0f, 13.0f); + GLM(quat_init)(q2, 100.0f, 110.0f, 120.0f, 130.0f); + GLM(quat_init)(q3, 1000.0f, 1100.0f, 1200.0f, 1300.0f); + + ASSERT(q1[0] == 10.0f) + ASSERT(q1[1] == 11.0f) + ASSERT(q1[2] == 12.0f) + ASSERT(q1[3] == 13.0f) + + ASSERT(q2[0] == 100.0f) + ASSERT(q2[1] == 110.0f) + ASSERT(q2[2] == 120.0f) + ASSERT(q2[3] == 130.0f) + + ASSERT(q3[0] == 1000.0f) + ASSERT(q3[1] == 1100.0f) + ASSERT(q3[2] == 1200.0f) + ASSERT(q3[3] == 1300.0f) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quatv) { + versor q1 = {1.0f, 2.0f, 3.0f, 4.0f}; + vec3 v1, v2; + float a1; + + test_rand_vec3(v1); + GLM(quatv)(q1, glm_rad(60.0f), v1); + + glm_quat_axis(q1, v2); + a1 = glm_quat_angle(q1); + + ASSERT(test_eq(a1, glm_rad(60.0f))) + + glm_vec3_normalize(v1); + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat) { + versor q1 = {1.0f, 2.0f, 3.0f, 4.0f}; + vec3 v1, v2; + float a1; + + test_rand_vec3(v1); + GLM(quat)(q1, glm_rad(60.0f), v1[0], v1[1], v1[2]); + + glm_quat_axis(q1, v2); + a1 = glm_quat_angle(q1); + + ASSERT(test_eq(a1, glm_rad(60.0f))) + + glm_vec3_normalize(v1); + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_copy) { + versor v1 = {10.0f, 9.0f, 8.0f, 78.0f}; + versor v2 = {1.0f, 2.0f, 3.0f, 4.0f}; + + GLM(quat_copy)(v1, v2); + + ASSERTIFY(test_assert_vec4_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_from_vecs) { + versor q1, q2, q3, q4, q5, q6, q7; + vec3 v1 = {1.f, 0.f, 0.f}, v2 = {1.f, 0.f, 0.f}; /* parallel */ + vec3 v3 = {0.f, 1.f, 0.f}, v4 = {1.f, 0.f, 0.f}; /* perpendicular */ + vec3 v5 = {0.f, 0.f, 1.f}, v6 = {0.f, 0.f, -1.f}; /* straight */ + vec3 v7, v8; /* random */ + vec3 v9 = {0.57735026f, 0.57735026f, 0.57735026f}, /* acute */ + v10 = {0.70710678f, 0.70710678f, 0.f}; + vec3 v11 = {0.87287156f, 0.21821789f, 0.43643578f}, /* obtuse */ + v12 = {-0.87287156f, 0.21821789f, 0.43643578f}; + vec3 v13 = GLM_VEC3_ZERO_INIT; /* zero */ + + GLM(quat_from_vecs)(v1, v2, q1); + ASSERTIFY(test_assert_quat_eq_identity(q1)) + + GLM(quat_from_vecs)(v3, v4, q2); + GLM(quat_rotatev)(q2, v3, v3); + ASSERT(test_eq(GLM(vec3_dot)(v3, v4), 1.f)) + ASSERT(test_eq(q2[0], 0.f)) + ASSERT(test_eq(q2[1], 0.f)) + ASSERT(test_eq(q2[2], -0.707106781187f)) + ASSERT(test_eq(q2[3], 0.707106781187f)) + + GLM(quat_from_vecs)(v5, v6, q3); + GLM(quat_rotatev)(q3, v5, v5); + ASSERT(test_eq(GLM(vec3_dot)(v5, v6), 1.f)) + ASSERT(test_eq(q3[0], 0.f)) + ASSERT(test_eq(q3[1], -1.f)) + ASSERT(test_eq(q3[2], 0.f)) + ASSERT(test_eq(q3[3], 0.f)) + + test_rand_vec3(v7); + test_rand_vec3(v8); + GLM(vec3_normalize(v7)); + GLM(vec3_normalize(v8)); + GLM(quat_from_vecs)(v7, v8, q4); + GLM(quat_rotatev)(q4, v7, v7); + ASSERT(test_eq(GLM(vec3_dot)(v7, v8), 1.f)) + + GLM(quat_from_vecs)(v9, v10, q5); + GLM(quat_rotatev)(q5, v9, v9); + ASSERT(test_eq(GLM(vec3_dot)(v9, v10), 1.f)) + + GLM(quat_from_vecs)(v11, v12, q6); + GLM(quat_rotatev)(q6, v11, v11); + ASSERT(test_eq(GLM(vec3_dot)(v11, v12), 1.f)) + + GLM(quat_from_vecs)(v13, v1, q7); + ASSERTIFY(test_assert_quat_eq_identity(q7)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_norm) { + versor a = {10.0f, 9.0f, 8.0f, 78.0f}; + float n1, n2; + + n1 = GLM(quat_norm)(a); + n2 = sqrtf(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]); + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_normalize_to) { + versor v1 = {2.0f, -3.0f, 4.0f, 5.0f}, v2; + float s = 1.0f; + float norm; + + GLM(quat_normalize_to)(v1, v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2] + v1[3] * v1[3]); + if (norm <= 0.0f) { + ASSERTIFY(test_assert_quat_eq_identity(v1)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + ASSERT(test_eq(v1[3] * norm, v2[3])) + + glm_vec4_zero(v1); + GLM(quat_normalize_to)(v1, v2); + ASSERTIFY(test_assert_quat_eq_identity(v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_normalize) { + versor v1 = {2.0f, -3.0f, 4.0f, 5.0f}, v2 = {2.0f, -3.0f, 4.0f, 5.0f}; + float s = 1.0f; + float norm; + + GLM(quat_normalize)(v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2] + v1[3] * v1[3]); + if (norm <= 0.0f) { + ASSERTIFY(test_assert_quat_eq_identity(v1)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + ASSERT(test_eq(v1[3] * norm, v2[3])) + + glm_vec4_zero(v1); + GLM(quat_normalize)(v1); + ASSERTIFY(test_assert_quat_eq_identity(v1)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_dot) { + versor a = {10.0f, 9.0f, 8.0f, 78.0f}; + versor b = {1.0f, 2.0f, 3.0f, 4.0f}; + float dot1, dot2; + + dot1 = GLM(quat_dot)(a, b); + dot2 = a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; + + ASSERT(test_eq(dot1, dot2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_conjugate) { + versor a = {10.0f, 9.0f, 8.0f, 78.0f}; + versor b = {1.0f, 2.0f, 3.0f, 4.0f}; + versor d, e; + + GLM(quat_conjugate)(a, d); + GLM(quat_conjugate)(b, e); + + ASSERT(test_eq(d[0], -a[0])) + ASSERT(test_eq(d[1], -a[1])) + ASSERT(test_eq(d[2], -a[2])) + ASSERT(test_eq(d[3], a[3])) + + ASSERT(test_eq(e[0], -b[0])) + ASSERT(test_eq(e[1], -b[1])) + ASSERT(test_eq(e[2], -b[2])) + ASSERT(test_eq(e[3], b[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_inv) { + versor a = {10.0f, 9.0f, 8.0f, 78.0f}; + versor b = {1.0f, 2.0f, 3.0f, 4.0f}; + versor d, e; + float n1, n2; + + n1 = 1.0f / glm_vec4_norm2(a); + n2 = 1.0f / glm_vec4_norm2(b); + + GLM(quat_inv)(a, d); + GLM(quat_inv)(b, e); + + ASSERT(test_eq(d[0], -a[0] * n1)) + ASSERT(test_eq(d[1], -a[1] * n1)) + ASSERT(test_eq(d[2], -a[2] * n1)) + ASSERT(test_eq(d[3], a[3] * n1)) + + ASSERT(test_eq(e[0], -b[0] * n2)) + ASSERT(test_eq(e[1], -b[1] * n2)) + ASSERT(test_eq(e[2], -b[2] * n2)) + ASSERT(test_eq(e[3], b[3] * n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_add) { + versor a = {-10.0f, 9.0f, -8.0f, 56.0f}; + versor b = {12.0f, 19.0f, -18.0f, 1.0f}; + versor c, d; + + c[0] = a[0] + b[0]; + c[1] = a[1] + b[1]; + c[2] = a[2] + b[2]; + c[3] = a[3] + b[3]; + + GLM(quat_add)(a, b, d); + + ASSERTIFY(test_assert_quat_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_sub) { + vec4 a = {-10.0f, 9.0f, -8.0f, 56.0f}; + vec4 b = {12.0f, 19.0f, -18.0f, 1.0f}; + vec4 c, d; + + c[0] = a[0] - b[0]; + c[1] = a[1] - b[1]; + c[2] = a[2] - b[2]; + c[3] = a[3] - b[3]; + + GLM(quat_sub)(a, b, d); + + ASSERTIFY(test_assert_quat_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_real) { + versor a = {10.0f, 9.0f, 8.0f, 78.0f}; + versor b = {1.0f, 2.0f, 3.0f, 4.0f}; + + ASSERT(test_eq(GLM(quat_real)(a), 78.0f)) + ASSERT(test_eq(GLM(quat_real)(b), 4.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_imag) { + versor a = {10.0f, 9.0f, 8.0f, 78.0f}; + versor b = {1.0f, 2.0f, 3.0f, 4.0f}; + vec3 d, e; + + GLM(quat_imag)(a, d); + GLM(quat_imag)(b, e); + + ASSERT(test_eq(d[0], a[0])) + ASSERT(test_eq(d[1], a[1])) + ASSERT(test_eq(d[2], a[2])) + + ASSERT(test_eq(e[0], b[0])) + ASSERT(test_eq(e[1], b[1])) + ASSERT(test_eq(e[2], b[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_imagn) { + versor a = {10.0f, 9.0f, 8.0f, 78.0f}; + versor b = {1.0f, 2.0f, 3.0f, 4.0f}; + vec3 d, e; + + GLM(quat_imagn)(a, d); + GLM(quat_imagn)(b, e); + + glm_vec3_normalize(a); + glm_vec3_normalize(b); + glm_vec3_normalize(d); + glm_vec3_normalize(e); + + ASSERT(test_eq(d[0], a[0])) + ASSERT(test_eq(d[1], a[1])) + ASSERT(test_eq(d[2], a[2])) + + ASSERT(test_eq(e[0], b[0])) + ASSERT(test_eq(e[1], b[1])) + ASSERT(test_eq(e[2], b[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_imaglen) { + versor a = {10.0f, 9.0f, 8.0f, 78.0f}; + versor b = {1.0f, 2.0f, 3.0f, 4.0f}; + + ASSERT(test_eq(GLM(quat_imaglen)(a), glm_vec3_norm(a))); + ASSERT(test_eq(GLM(quat_imaglen)(b), glm_vec3_norm(b))); + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_angle) { + versor q1 = {1.0f, 2.0f, 3.0f, 4.0f}, q2, q3; + vec3 v1; + float a1, a2, a3; + + test_rand_vec3(v1); + GLM(quatv)(q1, glm_rad(60.140f), v1); + GLM(quatv)(q2, glm_rad(160.04f), v1); + GLM(quatv)(q3, glm_rad(20.350f), v1); + + a1 = GLM(quat_angle)(q1); + a2 = GLM(quat_angle)(q2); + a3 = GLM(quat_angle)(q3); + + ASSERT(test_eq(a1, glm_rad(60.140f))) + ASSERT(test_eq(a2, glm_rad(160.04f))) + ASSERT(test_eq(a3, glm_rad(20.350f))) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_axis) { + versor q1 = {1.0f, 2.0f, 3.0f, 4.0f}, q2, q3; + vec3 v1, v2; + + test_rand_vec3(v1); + GLM(quatv)(q1, glm_rad(60.0f), v1); + + glm_quat_axis(q1, v2); + glm_vec3_normalize(v1); + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + test_rand_vec3(v1); + GLM(quatv)(q2, glm_rad(60.0f), v1); + + glm_quat_axis(q2, v2); + glm_vec3_normalize(v1); + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + test_rand_vec3(v1); + GLM(quatv)(q3, glm_rad(60.0f), v1); + + glm_quat_axis(q3, v2); + glm_vec3_normalize(v1); + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_mul) { + versor q1 = {2.0f, 3.0f, 4.0f, 5.0f}; + versor q2 = {6.0f, 7.0f, 8.0f, 9.0f}; + versor q3; + versor q4; + vec3 v1 = {1.5f, 2.5f, 3.5f}; + + GLM(quat_mul)(q1, q2, q3); + + ASSERT(test_eq(q3[0], q1[3] * q2[0] + q1[0] * q2[3] + q1[1] * q2[2] - q1[2] * q2[1])) + ASSERT(test_eq(q3[1], q1[3] * q2[1] - q1[0] * q2[2] + q1[1] * q2[3] + q1[2] * q2[0])) + ASSERT(test_eq(q3[2], q1[3] * q2[2] + q1[0] * q2[1] - q1[1] * q2[0] + q1[2] * q2[3])) + ASSERT(test_eq(q3[3], q1[3] * q2[3] - q1[0] * q2[0] - q1[1] * q2[1] - q1[2] * q2[2])) + + glm_quatv(q1, glm_rad(30.0f), v1); + glm_quatv(q2, glm_rad(20.0f), v1); + glm_quatv(q3, glm_rad(50.0f), v1); + + GLM(quat_mul)(q1, q2, q4); + + ASSERTIFY(test_assert_quat_eq(q3, q4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_mat4) { + mat4 m1, m2; + versor q1, q2, q3; + vec3 axis1; + vec3 axis2 = {1.9f, 2.3f, 4.5f}; + int i; + + GLM(quat)(q1, GLM_PI_4f, 1.9f, 2.3f, 4.5f); + GLM(quat_mat4)(q1, m1); + GLM(mat4_quat)(m1, q2); + + GLM(rotate_make)(m2, GLM_PI_4f, axis2); + GLM(mat4_quat)(m1, q3); + + GLM(quat_axis)(q3, axis1); + + GLM(vec3_normalize)(axis1); + GLM(vec3_normalize)(axis2); + + ASSERT(test_eq(glm_quat_angle(q3), GLM_PI_4f)) + ASSERTIFY(test_assert_vec3_eq(axis1, axis2)) + ASSERTIFY(test_assert_vec4_eq(q1, q2)) + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + ASSERTIFY(test_assert_vec4_eq(q1, q3)) + + /* 1. test quat to mat and mat to quat */ + for (i = 0; i < 1000; i++) { + test_rand_quat(q1); + + GLM(quat_mat4)(q1, m1); + GLM(mat4_quat)(m1, q2); + GLM(quat_mat4)(q2, m2); + + /* 2. test first quat and generated one equality */ + ASSERTIFY(test_assert_quat_eq_abs(q1, q2)); + + /* 3. test first rot and second rotation */ + /* almost equal */ + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.000009f)); + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_mat4t) { + mat4 m1, m2; + versor q1, q2, q3; + vec3 axis1; + vec3 axis2 = {1.9f, 2.3f, 4.5f}; + int i; + + GLM(quat)(q1, GLM_PI_4f, 1.9f, 2.3f, 4.5f); + + GLM(quat_mat4t)(q1, m1); + glm_mat4_transpose(m1); + + GLM(mat4_quat)(m1, q2); + + GLM(rotate_make)(m2, GLM_PI_4f, axis2); + GLM(mat4_quat)(m1, q3); + + GLM(quat_axis)(q3, axis1); + + GLM(vec3_normalize)(axis1); + GLM(vec3_normalize)(axis2); + + ASSERT(test_eq(glm_quat_angle(q3), GLM_PI_4f)) + ASSERTIFY(test_assert_vec3_eq(axis1, axis2)) + ASSERTIFY(test_assert_vec4_eq(q1, q2)) + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + ASSERTIFY(test_assert_vec4_eq(q1, q3)) + + /* 1. test quat to mat and mat to quat */ + for (i = 0; i < 1000; i++) { + test_rand_quat(q1); + + GLM(quat_mat4t)(q1, m1); + glm_mat4_transpose(m1); + + GLM(mat4_quat)(m1, q2); + + GLM(quat_mat4t)(q2, m2); + glm_mat4_transpose(m2); + + /* 2. test first quat and generated one equality */ + ASSERTIFY(test_assert_quat_eq_abs(q1, q2)); + + /* 3. test first rot and second rotation */ + /* almost equal */ + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.000009f)); + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_mat3) { + mat4 m1, m2; + mat3 m3; + versor q1, q2, q3; + vec3 axis1; + vec3 axis2 = {1.9f, 2.3f, 4.5f}; + int i; + + GLM(quat)(q1, GLM_PI_4f, 1.9f, 2.3f, 4.5f); + GLM(quat_mat3)(q1, m3); + glm_mat4_identity(m1); + glm_mat4_ins3(m3, m1); + + GLM(mat4_quat)(m1, q2); + + GLM(rotate_make)(m2, GLM_PI_4f, axis2); + GLM(mat4_quat)(m1, q3); + + GLM(quat_axis)(q3, axis1); + + GLM(vec3_normalize)(axis1); + GLM(vec3_normalize)(axis2); + + ASSERT(test_eq(glm_quat_angle(q3), GLM_PI_4f)) + ASSERTIFY(test_assert_vec3_eq(axis1, axis2)) + ASSERTIFY(test_assert_vec4_eq(q1, q2)) + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + ASSERTIFY(test_assert_vec4_eq(q1, q3)) + + /* 1. test quat to mat and mat to quat */ + for (i = 0; i < 1000; i++) { + test_rand_quat(q1); + + GLM(quat_mat3)(q1, m3); + glm_mat4_identity(m1); + glm_mat4_ins3(m3, m1); + + GLM(mat4_quat)(m1, q2); + + GLM(quat_mat3)(q2, m3); + glm_mat4_identity(m2); + glm_mat4_ins3(m3, m2); + + /* 2. test first quat and generated one equality */ + ASSERTIFY(test_assert_quat_eq_abs(q1, q2)); + + /* 3. test first rot and second rotation */ + /* almost equal */ + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.000009f)); + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_mat3t) { + mat4 m1, m2; + mat3 m3; + versor q1, q2, q3; + vec3 axis1; + vec3 axis2 = {1.9f, 2.3f, 4.5f}; + int i; + + GLM(quat)(q1, GLM_PI_4f, 1.9f, 2.3f, 4.5f); + + GLM(quat_mat3t)(q1, m3); + glm_mat3_transpose(m3); + glm_mat4_identity(m1); + glm_mat4_ins3(m3, m1); + + GLM(mat4_quat)(m1, q2); + + GLM(rotate_make)(m2, GLM_PI_4f, axis2); + GLM(mat4_quat)(m1, q3); + + GLM(quat_axis)(q3, axis1); + + GLM(vec3_normalize)(axis1); + GLM(vec3_normalize)(axis2); + + ASSERT(test_eq(glm_quat_angle(q3), GLM_PI_4f)) + ASSERTIFY(test_assert_vec3_eq(axis1, axis2)) + ASSERTIFY(test_assert_vec4_eq(q1, q2)) + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + ASSERTIFY(test_assert_vec4_eq(q1, q3)) + + /* 1. test quat to mat and mat to quat */ + for (i = 0; i < 1000; i++) { + test_rand_quat(q1); + + GLM(quat_mat3t)(q1, m3); + glm_mat3_transpose(m3); + glm_mat4_identity(m1); + glm_mat4_ins3(m3, m1); + + GLM(mat4_quat)(m1, q2); + + GLM(quat_mat3t)(q2, m3); + glm_mat3_transpose(m3); + glm_mat4_identity(m2); + glm_mat4_ins3(m3, m2); + + /* 2. test first quat and generated one equality */ + ASSERTIFY(test_assert_quat_eq_abs(q1, q2)); + + /* 3. test first rot and second rotation */ + /* almost equal */ + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.000009f)); + } + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_lerp) { + versor v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + versor v2 = {100.0f, 200.0f, 10.0f, 10.0f}; + versor v3; + + GLM(quat_lerp)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + ASSERT(test_eq(v3[3], 0.0f)) + + GLM(quat_lerp)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + ASSERT(test_eq(v3[3], 5.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_lerpc) { + versor v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + versor v2 = {100.0f, 200.0f, 10.0f, 10.0f}; + versor v3; + + GLM(quat_lerpc)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + ASSERT(test_eq(v3[3], 0.0f)) + + GLM(quat_lerpc)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + ASSERT(test_eq(v3[3], 5.0f)) + + GLM(quat_lerpc)(v1, v2, -1.75f, v3); + ASSERT(test_eq(v3[0], -100.0f)) + ASSERT(test_eq(v3[1], -200.0f)) + ASSERT(test_eq(v3[2], -10.0f)) + ASSERT(test_eq(v3[3], -10.0f)) + + GLM(quat_lerpc)(v1, v2, 1.75f, v3); + ASSERT(test_eq(v3[0], 100.0f)) + ASSERT(test_eq(v3[1], 200.0f)) + ASSERT(test_eq(v3[2], 10.0f)) + ASSERT(test_eq(v3[3], 10.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_nlerp) { + versor q1, q2, q3, q4; + vec3 v1 = {10.0f, 0.0f, 0.0f}, v2; + + glm_quatv(q1, glm_rad(30.0f), v1); + glm_quatv(q2, glm_rad(90.0f), v1); + + GLM(quat_nlerp)(q1, q2, 1.0f, q3); + glm_quat_normalize(q2); + ASSERTIFY(test_assert_quat_eq(q2, q3)); + + glm_quatv(q1, glm_rad(30.001f), v1); + glm_quatv(q2, glm_rad(30.002f), v1); + GLM(quat_nlerp)(q1, q2, 0.7f, q3); + glm_quat_lerp(q1, q2, 0.7f, q4); + ASSERTIFY(test_assert_quat_eq(q3, q4)); + + glm_quatv(q1, glm_rad(30.0f), v1); + glm_quatv(q2, glm_rad(90.0f), v1); + GLM(quat_nlerp)(q1, q2, 0.5f, q3); + + glm_quat_axis(q3, v2); + glm_vec3_normalize(v1); + glm_vec3_normalize(v2); + + ASSERT(glm_quat_angle(q3) > glm_rad(30.0f)); + ASSERT(glm_quat_angle(q3) < glm_rad(90.0f)); + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_slerp) { + versor q1, q2, q3, q4; + vec3 v1 = {10.0f, 0.0f, 0.0f}, v2; + + glm_quatv(q1, glm_rad(30.0f), v1); + glm_quatv(q2, glm_rad(90.0f), v1); + + q1[0] = 10.0f; + GLM(quat_slerp)(q1, q2, 1.0f, q3); + ASSERTIFY(test_assert_quat_eq(q1, q3)); + + glm_quatv(q1, glm_rad(30.001f), v1); + glm_quatv(q2, glm_rad(30.002f), v1); + GLM(quat_slerp)(q1, q2, 0.7f, q3); + glm_quat_lerp(q1, q2, 0.7f, q4); + ASSERTIFY(test_assert_quat_eq(q3, q4)); + + glm_quatv(q1, glm_rad(30.0f), v1); + glm_quatv(q2, glm_rad(90.0f), v1); + GLM(quat_slerp)(q1, q2, 0.5f, q3); + + glm_quat_axis(q3, v2); + glm_vec3_normalize(v1); + glm_vec3_normalize(v2); + + ASSERT(glm_quat_angle(q3) > glm_rad(30.0f)); + ASSERT(glm_quat_angle(q3) < glm_rad(90.0f)); + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_look) { + versor q1; + vec3 v1 = {0.0f, 1.0f, 0.0f}; + mat4 m1, m2; + + glm_quat(q1, glm_rad(90.0f), 0.0f, 1.0f, 0.0f); + GLM(quat_look)(v1, q1, m1); + + glm_look(v1, (vec3){-1.0f, 0.0f, 0.0f}, GLM_YUP, m2); + ASSERTIFY(test_assert_mat4_eq(m1, m2)); + + glm_quat(q1, glm_rad(180.0f), 1.0f, 0.0f, 0.0f); + GLM(quat_look)(v1, q1, m1); + + glm_look(v1, (vec3){0.0f, 0.0f, 1.0f}, (vec3){0.0f, -1.0f, 0.0f}, m2); + + ASSERTIFY(test_assert_mat4_eq(m1, m2)); + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_for) { + versor q1, q2; + + glm_quat(q1, glm_rad(90.0f), 0.0f, 1.0f, 0.0f); + GLM(quat_for)((vec3){-1.0f, 0.0f, 0.0f}, (vec3){0.0f, 1.0f, 0.0f}, q2); + ASSERTIFY(test_assert_quat_eq(q1, q2)); + + glm_quat(q2, glm_rad(90.0f), 1.0f, 0.0f, 0.0f); + GLM(quat_for)((vec3){0.0f, 1.0f, 0.0f}, (vec3){0.0f, 0.0f, 1.0f}, q1); + ASSERTIFY(test_assert_quat_eq(q1, q2)); + + glm_quat(q2, glm_rad(180.0f), 1.0f, 0.0f, 0.0f); + GLM(quat_for)((vec3){0.0f, 0.0f, 1.0f}, (vec3){0.0f, -1.0f, 0.0f}, q1); + ASSERTIFY(test_assert_quat_eq(q1, q2)); + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_forp) { + versor q1, q2; + + glm_quat(q1, glm_rad(90.0f), 0.0f, 1.0f, 0.0f); + GLM(quat_forp)((vec3){2.0f, 0.0f, 0.0f}, + (vec3){1.0f, 0.0f, 0.0f}, + (vec3){0.0f, 1.0f, 0.0f}, + q2); + ASSERTIFY(test_assert_quat_eq(q1, q2)); + + glm_quat(q2, glm_rad(90.0f), 1.0f, 0.0f, 0.0f); + GLM(quat_forp)((vec3){0.0f, 1.0f, 0.0f}, + (vec3){0.0f, 2.0f, 0.0f}, + (vec3){0.0f, 0.0f, 1.0f}, + q1); + ASSERTIFY(test_assert_quat_eq(q1, q2)); + + glm_quat(q2, glm_rad(180.0f), 1.0f, 0.0f, 0.0f); + GLM(quat_forp)((vec3){0.0f, 1.0f, 1.0f}, + (vec3){0.0f, 1.0f, 2.0f}, + (vec3){0.0f, -1.0f, 0.0f}, + q1); + ASSERTIFY(test_assert_quat_eq(q1, q2)); + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_rotatev) { + vec3 v1 = {1.0f, 0.0f, 0.0f}, v2 = {1.0f, 1.0f, 1.0f}; + versor q; + + /* rotate X around Y = -Z */ + glm_quatv(q, GLM_PI_2f, GLM_YUP); + GLM(quat_rotatev)(q, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + /* rotate -Z around X = Y */ + glm_quatv(q, GLM_PI_2f, GLM_XUP); + GLM(quat_rotatev)(q, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate Y around Z = -X */ + glm_quatv(q, GLM_PI_2f, GLM_ZUP); + GLM(quat_rotatev)(q, v1, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate v2 around Y by 90deg */ + glm_quatv(q, GLM_PI_2f, GLM_YUP); + GLM(quat_rotatev)(q, v2, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], -1.0f)) + + /* rotate v2 around Y by 90deg */ + glm_quatv(q, GLM_PI_2f, GLM_YUP); + GLM(quat_rotatev)(q, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], -1.0f)) + + /* rotate v2 around Y by 90deg */ + glm_quatv(q, GLM_PI_2f, GLM_YUP); + GLM(quat_rotatev)(q, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + /* rotate v2 around X by 90deg */ + glm_quatv(q, GLM_PI_2f, GLM_XUP); + GLM(quat_rotatev)(q, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], -1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + /* rotate v2 around Z by 90deg */ + glm_quatv(q, GLM_PI_2f, GLM_ZUP); + GLM(quat_rotatev)(q, v2, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], -1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_rotate) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT, m2; + versor q1; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + /* rotate X around Y = -Z */ + glm_quatv(q1, GLM_PI_2f, GLM_YUP); + GLM(quat_rotate)(m1, q1, m1); + glm_rotate_make(m2, GLM_PI_2f, GLM_YUP); + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + glm_mat4_identity(m1); + glm_mat4_identity(m2); + + /* rotate -Z around X = Y */ + glm_quatv(q1, GLM_PI_2f, GLM_XUP); + GLM(quat_rotate)(m1, q1, m1); + glm_rotate(m2, GLM_PI_2f, GLM_XUP); + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + glm_mat4_identity(m1); + glm_mat4_identity(m2); + + /* rotate Y around X = +Z */ + glm_quatv(q1, GLM_PI_2f, GLM_XUP); + GLM(quat_rotate)(m1, q1, m1); + glm_rotate(m2, GLM_PI_2f, GLM_XUP); + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_rotate_at) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + versor q1; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + glm_quatv(q1, GLM_PI_2f, GLM_YUP); + GLM(quat_rotate_at)(m1, q1, (vec3){0.5f, 0.0f, 0.0f}); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.5f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -0.5f)) + + glm_mat4_identity(m1); + + glm_quatv(q1, GLM_PI_2f, GLM_ZUP); + GLM(quat_rotate_at)(m1, q1, (vec3){0.0f, 0.0f, 0.0f}); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.5f)) + ASSERT(test_eq(v1[2], -0.5f)) + + glm_mat4_identity(m1); + + v1[0] = 1.0f; + v1[1] = 1.0f; + v1[2] = 1.0f; + + glm_quatv(q1, GLM_PI_2f, GLM_XUP); + GLM(quat_rotate_at)(m1, q1, GLM_VEC3_ZERO); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, quat_rotate_atm) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + versor q1; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + glm_quatv(q1, GLM_PI_2f, GLM_YUP); + GLM(quat_rotate_atm)(m1, q1, (vec3){0.5f, 0.0f, 0.0f}); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.5f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -0.5f)) + + glm_quatv(q1, GLM_PI_2f, GLM_ZUP); + GLM(quat_rotate_atm)(m1, q1, (vec3){0.0f, 0.0f, 0.0f}); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.5f)) + ASSERT(test_eq(v1[2], -0.5f)) + + v1[0] = 1.0f; + v1[1] = 1.0f; + v1[2] = 1.0f; + + glm_quatv(q1, GLM_PI_2f, GLM_XUP); + GLM(quat_rotate_atm)(m1, q1, GLM_VEC3_ZERO); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_ray.h b/lib/cglm/test/src/test_ray.h new file mode 100644 index 0000000..c1b0281 --- /dev/null +++ b/lib/cglm/test/src/test_ray.h @@ -0,0 +1,34 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(GLM_PREFIX, ray_triangle) { + /* Check whether a simple hit is recognized with the right distance */ + vec3 origin = { 0.0f, 0.0f, 0.0f}; + vec3 direction = { 1.0f, 0.0f, 0.0f}; + vec3 opposite = {-1.0f, 0.0f, 0.0f}; + vec3 v0 = { 5.0f, -1.0f, 1.0f}; + vec3 v1 = { 5.0f, -1.0f, -1.0f}; + vec3 v2 = { 5.0f, 1.0f, 0.0f}; + float d; + bool hit; + + hit = GLM(ray_triangle)(origin, direction, v0, v1, v2, &d); + ASSERT(hit); + ASSERT(fabsf(d - 5.0f) <= 0.0000009); + + /* Check whether a simple miss works */ + hit = GLM(ray_triangle)(origin, opposite, v0, v1, v2, &d); + ASSERT(!hit); + + /* Check that we can disregard distance and pass NULL pointer instead */ + hit = GLM(ray_triangle)(origin, direction, v0, v1, v2, NULL); + ASSERT(hit); + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_struct.c b/lib/cglm/test/src/test_struct.c new file mode 100644 index 0000000..ce79356 --- /dev/null +++ b/lib/cglm/test/src/test_struct.c @@ -0,0 +1,78 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +TEST_IMPL(mat3s_identity_init) { + mat3s mat3_identity = GLMS_MAT3_IDENTITY_INIT; + mat3 mat3_identity_a = GLM_MAT3_IDENTITY_INIT; + test_assert_mat3_eq(mat3_identity.raw, mat3_identity_a); + TEST_SUCCESS +} + +TEST_IMPL(mat3s_zero_init) { + mat3s mat3_zero = GLMS_MAT3_ZERO_INIT; + mat3 mat3_zero_a = GLM_MAT3_ZERO_INIT; + test_assert_mat3_eq(mat3_zero.raw, mat3_zero_a); + TEST_SUCCESS +} + +TEST_IMPL(mat4s_identity_init) { + mat4s mat4_identity = GLMS_MAT4_IDENTITY_INIT; + mat4 mat4_identity_a = GLM_MAT4_IDENTITY_INIT; + test_assert_mat4_eq(mat4_identity.raw, mat4_identity_a); + TEST_SUCCESS +} + +TEST_IMPL(mat4s_zero_init) { + mat4s mat4_zero = GLMS_MAT4_ZERO_INIT; + mat4 mat4_zero_a = GLM_MAT4_ZERO_INIT; + test_assert_mat4_eq(mat4_zero.raw, mat4_zero_a); + TEST_SUCCESS +} + +TEST_IMPL(quats_zero_init) { + versors quat_zero = GLMS_QUAT_IDENTITY_INIT; + versor quat_zero_a = GLM_QUAT_IDENTITY_INIT; + test_assert_quat_eq(quat_zero.raw, quat_zero_a); + TEST_SUCCESS +} + +TEST_IMPL(vec3s_one_init) { + vec3s vec3_one = GLMS_VEC3_ONE_INIT; + vec3 vec3_one_a = GLM_VEC3_ONE_INIT; + test_assert_vec3_eq(vec3_one.raw, vec3_one_a); + TEST_SUCCESS +} + +TEST_IMPL(vec3s_zero_init) { + vec3s vec3_zero = GLMS_VEC3_ZERO_INIT; + vec3 vec3_zero_a = GLM_VEC3_ZERO_INIT; + test_assert_vec3_eq(vec3_zero.raw, vec3_zero_a); + TEST_SUCCESS +} + +TEST_IMPL(vec4s_black_init) { + vec4s vec4_black = GLMS_VEC4_BLACK_INIT; + vec4 vec4_black_a = GLM_VEC4_BLACK_INIT; + test_assert_vec4_eq(vec4_black.raw, vec4_black_a); + TEST_SUCCESS +} + +TEST_IMPL(vec4s_one_init) { + vec4s vec4_one = GLMS_VEC4_ONE_INIT; + vec4 vec4_one_a = GLM_VEC4_ONE_INIT; + test_assert_vec4_eq(vec4_one.raw, vec4_one_a); + TEST_SUCCESS +} + +TEST_IMPL(vec4s_zero_init) { + vec4s vec4_zero = GLMS_VEC4_ZERO_INIT; + vec4 vec4_zero_a = GLM_VEC4_ZERO_INIT; + test_assert_vec4_eq(vec4_zero.raw, vec4_zero_a); + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_vec2.h b/lib/cglm/test/src/test_vec2.h new file mode 100644 index 0000000..a300af7 --- /dev/null +++ b/lib/cglm/test/src/test_vec2.h @@ -0,0 +1,625 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +#ifndef CGLM_TEST_VEC2_ONCE +#define CGLM_TEST_VEC2_ONCE + +/* Macros */ + +TEST_IMPL(MACRO_GLM_VEC2_ONE_INIT) { + vec2 v = GLM_VEC2_ONE_INIT; + + ASSERT(test_eq(v[0], 1.0f)) + ASSERT(test_eq(v[1], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC2_ZERO_INIT) { + vec2 v = GLM_VEC2_ZERO_INIT; + + ASSERT(test_eq(v[0], 0.0f)) + ASSERT(test_eq(v[1], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC2_ONE) { + ASSERT(test_eq(GLM_VEC2_ONE[0], 1.0f)) + ASSERT(test_eq(GLM_VEC2_ONE[1], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC2_ZERO) { + ASSERT(test_eq(GLM_VEC2_ZERO[0], 0.0f)) + ASSERT(test_eq(GLM_VEC2_ZERO[0], 0.0f)) + + TEST_SUCCESS +} + +#endif /* CGLM_TEST_VEC2_ONCE */ + +TEST_IMPL(GLM_PREFIX, vec2) { + vec4 v4 = {10.0f, 9.0f, 8.0f, 7.0f}; + vec3 v3 = {11.0f, 12.0f, 13.0f}; + vec2 v2; + + GLM(vec2)(v4, v2); + ASSERT(test_eq(v2[0], v4[0])) + ASSERT(test_eq(v2[1], v4[1])) + + GLM(vec2)(v3, v2); + ASSERT(test_eq(v2[0], v3[0])) + ASSERT(test_eq(v2[1], v3[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_copy) { + vec2 v1 = {10.0f, 9.0f}; + vec2 v2 = {1.0f, 2.0f}; + + GLM(vec2_copy)(v1, v2); + + ASSERTIFY(test_assert_vec2_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_zero) { + vec2 v1 = {10.0f, 9.0f}; + vec2 v2 = {1.0f, 2.0f}; + + GLM(vec2_zero)(v1); + GLM(vec2_zero)(v2); + + ASSERTIFY(test_assert_vec2_eq(v1, GLM_VEC2_ZERO)) + ASSERTIFY(test_assert_vec2_eq(v2, GLM_VEC2_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_one) { + vec2 v1 = {10.0f, 9.0f}; + vec2 v2 = {1.0f, 2.0f}; + + GLM(vec2_one)(v1); + GLM(vec2_one)(v2); + + ASSERTIFY(test_assert_vec2_eq(v1, GLM_VEC2_ONE)) + ASSERTIFY(test_assert_vec2_eq(v2, GLM_VEC2_ONE)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_dot) { + vec2 a = {10.0f, 9.0f}; + vec2 b = {1.0f, 2.0f}; + float dot1, dot2; + + dot1 = GLM(vec2_dot)(a, b); + dot2 = a[0] * b[0] + a[1] * b[1]; + + ASSERT(test_eq(dot1, dot2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_cross) { + vec2 a = {10.0f, 9.0f}; + vec2 b = {1.0f, 2.0f}; + float cprod; + + cprod = a[0] * b[1] - a[1] * b[0]; + + ASSERT(test_eq(glm_vec2_cross(a, b), cprod)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_norm2) { + vec2 a = {10.0f, 9.0f}; + float n1, n2; + + n1 = GLM(vec2_norm2)(a); + n2 = a[0] * a[0] + a[1] * a[1]; + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_norm) { + vec2 a = {10.0f, 9.0f}; + float n1, n2; + + n1 = GLM(vec2_norm)(a); + n2 = sqrtf(a[0] * a[0] + a[1] * a[1]); + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_add) { + vec2 a = {-10.0f, 9.0f}; + vec2 b = {12.0f, 19.0f}; + vec2 c, d; + + c[0] = a[0] + b[0]; + c[1] = a[1] + b[1]; + + GLM(vec2_add)(a, b, d); + + ASSERTIFY(test_assert_vec2_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_adds) { + vec4 a = {-10.0f, 9.0f}; + vec4 c, d; + float s = 7.0f; + + c[0] = a[0] + s; + c[1] = a[1] + s; + + GLM(vec2_adds)(a, s, d); + + ASSERTIFY(test_assert_vec2_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_sub) { + vec2 a = {-10.0f, 9.0f}; + vec2 b = {12.0f, 19.0f}; + vec2 c, d; + + c[0] = a[0] - b[0]; + c[1] = a[1] - b[1]; + + GLM(vec2_sub)(a, b, d); + + ASSERTIFY(test_assert_vec2_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_subs) { + vec2 a = {-10.0f, 9.0f}; + vec2 c, d; + float s = 7.0f; + + c[0] = a[0] - s; + c[1] = a[1] - s; + + GLM(vec2_subs)(a, s, d); + + ASSERTIFY(test_assert_vec2_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_mul) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3; + + GLM(vec2_mul)(v1, v2, v3); + + ASSERT(test_eq(v1[0] * v2[0], v3[0])) + ASSERT(test_eq(v1[1] * v2[1], v3[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_scale) { + vec2 v1 = {2.0f, -3.0f}, v2; + float s = 7.0f; + + GLM(vec2_scale)(v1, s, v2); + + ASSERT(test_eq(v1[0] * s, v2[0])) + ASSERT(test_eq(v1[1] * s, v2[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_scale_as) { + vec2 v1 = {2.0f, -3.0f}, v2; + float s = 7.0f; + float norm; + + GLM(vec2_scale_as)(v1, s, v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_div) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3; + + GLM(vec2_div)(v1, v2, v3); + + ASSERT(test_eq(v1[0] / v2[0], v3[0])) + ASSERT(test_eq(v1[1] / v2[1], v3[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_divs) { + vec2 v1 = {2.0f, -3.0f}, v2; + float s = 7.0f; + + GLM(vec2_divs)(v1, s, v2); + + ASSERT(test_eq(v1[0] / s, v2[0])) + ASSERT(test_eq(v1[1] / s, v2[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_addadd) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3 = {1.0f, 2.0f}, + v4 = {1.0f, 2.0f}; + + GLM(vec2_addadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] + v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] + v2[1], v4[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_subadd) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3 = {1.0f, 2.0f}, + v4 = {1.0f, 2.0f}; + + GLM(vec2_subadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] - v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] - v2[1], v4[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_muladd) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3 = {1.0f, 2.0f}, + v4 = {1.0f, 2.0f}; + + GLM(vec2_muladd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] * v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] * v2[1], v4[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_muladds) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {1.0f, 2.0f}, + v3 = {1.0f, 2.0f}; + float s = 9.0f; + + GLM(vec2_muladds)(v1, s, v3); + + ASSERT(test_eq(v2[0] + v1[0] * s, v3[0])) + ASSERT(test_eq(v2[1] + v1[1] * s, v3[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_maxadd) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3 = {1.0f, 2.0f}, + v4 = {1.0f, 2.0f}; + + GLM(vec2_maxadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + glm_max(v1[0], v2[0]), v4[0])) + ASSERT(test_eq(v3[1] + glm_max(v1[1], v2[1]), v4[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_minadd) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3 = {1.0f, 2.0f}, + v4 = {1.0f, 2.0f}; + + GLM(vec2_minadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + glm_min(v1[0], v2[0]), v4[0])) + ASSERT(test_eq(v3[1] + glm_min(v1[1], v2[1]), v4[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_negate_to) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3, v4; + + GLM(vec2_negate_to)(v1, v3); + GLM(vec2_negate_to)(v2, v4); + + ASSERT(test_eq(-v1[0], v3[0])) + ASSERT(test_eq(-v1[1], v3[1])) + + ASSERT(test_eq(-v2[0], v4[0])) + ASSERT(test_eq(-v2[1], v4[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_negate) { + vec2 v1 = {2.0f, -3.0f}, + v2 = {-3.0f, 4.0f}, + v3 = {2.0f, -3.0f}, + v4 = {-3.0f, 4.0f}; + + GLM(vec2_negate)(v1); + GLM(vec2_negate)(v2); + + ASSERT(test_eq(-v1[0], v3[0])) + ASSERT(test_eq(-v1[1], v3[1])) + + ASSERT(test_eq(-v2[0], v4[0])) + ASSERT(test_eq(-v2[1], v4[1])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_normalize) { + vec2 v1 = {2.0f, -3.0f}, v2 = {2.0f, -3.0f}; + float s = 1.0f; + float norm; + + GLM(vec2_normalize)(v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + + glm_vec2_zero(v1); + GLM(vec2_normalize)(v1); + ASSERTIFY(test_assert_vec2_eq(v1, GLM_VEC2_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_normalize_to) { + vec2 v1 = {2.0f, -3.0f}, v2; + float s = 1.0f; + float norm; + + GLM(vec2_normalize_to)(v1, v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + + glm_vec2_zero(v1); + GLM(vec2_normalize_to)(v1, v2); + ASSERTIFY(test_assert_vec2_eq(v2, GLM_VEC2_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_rotate) { + vec2 v1 = {1.0f, 0.0f}; + + GLM(vec2_rotate)(v1, GLM_PI_2f, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + + GLM(vec2_rotate)(v1, GLM_PI_2f, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + + GLM(vec2_rotate)(v1, GLM_PI_2f, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + + GLM(vec2_rotate)(v1, GLM_PI_2f, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_distance2) { + vec2 v1 = {30.0f, 0.0f}, + v2 = {0.0f, 0.0f}, + v3 = {3.0f, 10.0f}, + v4 = {0.46f, 4.0f}; + float d; + + d = GLM(vec2_distance2)(v1, v2); + ASSERT(test_eq(d, 30.0f * 30.0f)) + + d = GLM(vec2_distance2)(v3, v4); + ASSERT(test_eq(powf(v3[0] - v4[0], 2.0f) + + powf(v3[1] - v4[1], 2.0f), d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_distance) { + vec2 v1 = {30.0f, 0.0f}, + v2 = {0.0f, 0.0f}, + v3 = {3.0f, 10.0f}, + v4 = {0.46f, 4.0f}; + float d; + + d = GLM(vec2_distance)(v1, v2); + ASSERT(test_eq(d, 30.0f)) + + d = GLM(vec2_distance)(v3, v4); + ASSERT(test_eq(sqrtf(powf(v3[0] - v4[0], 2.0f) + + powf(v3[1] - v4[1], 2.0f)), d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_maxv) { + vec2 v1, v2, v3; + vec2 v5 = {-1.456f, -1.456f}; + vec2 v6 = {11.0f, 11.0f}; + vec2 v7 = {78.0f, -78.0f}; + + GLM(vec2_maxv)(v5, v6, v1); + GLM(vec2_maxv)(v5, v7, v2); + GLM(vec2_maxv)(v6, v7, v3); + + ASSERT(test_eq(v1[0], 11.0f)) + ASSERT(test_eq(v1[1], 11.0f)) + + ASSERT(test_eq(v2[0], 78.0f)) + ASSERT(test_eq(v2[1], -1.456f)) + + ASSERT(test_eq(v3[0], 78.0f)) + ASSERT(test_eq(v3[1], 11.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_minv) { + vec2 v1, v2, v3; + vec2 v5 = {-1.456f, -1.456f}; + vec2 v6 = {11.0f, 11.0f}; + vec2 v7 = {78.0f, -78.0f}; + + GLM(vec2_minv)(v5, v6, v1); + GLM(vec2_minv)(v5, v7, v2); + GLM(vec2_minv)(v6, v7, v3); + + ASSERT(test_eq(v1[0], -1.456f)) + ASSERT(test_eq(v1[1], -1.456f)) + + ASSERT(test_eq(v2[0], -1.456f)) + ASSERT(test_eq(v2[1], -78.0f)) + + ASSERT(test_eq(v3[0], 11.0f)) + ASSERT(test_eq(v3[1], -78.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_clamp) { + vec2 v1 = {-1.456f, -11.456f}; + vec2 v2 = {0.110f, 111.0f}; + vec2 v3 = {78.0f, 32.0f}; + + GLM(vec2_clamp)(v1, -1.03f, 30.0f); + GLM(vec2_clamp)(v2, 0.11f, 111.0f); + GLM(vec2_clamp)(v3, -88.0f, 70.0f); + + ASSERT(test_eq(v1[0], -1.03f)) + ASSERT(test_eq(v1[1], -1.03f)) + + ASSERT(test_eq(v2[0], 0.11f)) + ASSERT(test_eq(v2[1], 111.0f)) + + ASSERT(test_eq(v3[0], 70.0f)) + ASSERT(test_eq(v3[1], 32.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_lerp) { + vec2 v1 = {-100.0f, -200.0f}; + vec2 v2 = {100.0f, 200.0f}; + vec2 v3; + + GLM(vec2_lerp)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + + GLM(vec2_lerp)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_complex_mul) { + vec2 v1 = { 3.0f, 5.0f }, + v2 = { 7.0f, 11.0f }, + v3 = { cosf(GLM_PIf/4.0f), sinf(GLM_PIf/4.0f) }; + + GLM(vec2_complex_mul)(v1, v2, v2); + ASSERTIFY(test_assert_vec2_eq(v2, (vec2){ -34, 68 })) + + GLM(vec2_complex_mul)(v3, v3, v3); + ASSERTIFY(test_assert_vec2_eq(v3, (vec2){ 0.0f, 1.0f })) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec2_complex_div) { + vec2 v1 = { -34.0f, 68.0f }, + v2 = { 3.0f, 5.0f }, + v3 = { cosf(GLM_PIf/4.0f), sinf(GLM_PIf/4.0f) }, + v4 = { cosf(GLM_PIf/4.0f), -sinf(GLM_PIf/4.0f) }; + + GLM(vec2_complex_div)(v1, v2, v2); + ASSERTIFY(test_assert_vec2_eq(v2, (vec2){ 7.0f, 11.0f })) + + GLM(vec2_complex_div)(v3, v4, v4); + ASSERTIFY(test_assert_vec2_eq(v4, (vec2){ 0.0f, 1.0f })) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_vec3.h b/lib/cglm/test/src/test_vec3.h new file mode 100644 index 0000000..44a9847 --- /dev/null +++ b/lib/cglm/test/src/test_vec3.h @@ -0,0 +1,1731 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +#define TEST_GLM_SHUFFLE3(z, y, x) (((z) << 4) | ((y) << 2) | (x)) + +#ifndef CGLM_TEST_VEC3_ONCE +#define CGLM_TEST_VEC3_ONCE + +/* Macros */ + +TEST_IMPL(MACRO_GLM_VEC3_ONE_INIT) { + vec3 v = GLM_VEC3_ONE_INIT; + + ASSERT(test_eq(v[0], 1.0f)) + ASSERT(test_eq(v[1], 1.0f)) + ASSERT(test_eq(v[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC3_ZERO_INIT) { + vec3 v = GLM_VEC3_ZERO_INIT; + + ASSERT(test_eq(v[0], 0.0f)) + ASSERT(test_eq(v[1], 0.0f)) + ASSERT(test_eq(v[2], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC3_ONE) { + ASSERT(test_eq(GLM_VEC3_ONE[0], 1.0f)) + ASSERT(test_eq(GLM_VEC3_ONE[1], 1.0f)) + ASSERT(test_eq(GLM_VEC3_ONE[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC3_ZERO) { + ASSERT(test_eq(GLM_VEC3_ZERO[0], 0.0f)) + ASSERT(test_eq(GLM_VEC3_ZERO[1], 0.0f)) + ASSERT(test_eq(GLM_VEC3_ZERO[2], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_YUP) { + ASSERT(test_eq(GLM_YUP[0], 0.0f)) + ASSERT(test_eq(GLM_YUP[1], 1.0f)) + ASSERT(test_eq(GLM_YUP[2], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_ZUP) { + ASSERT(test_eq(GLM_ZUP[0], 0.0f)) + ASSERT(test_eq(GLM_ZUP[1], 0.0f)) + ASSERT(test_eq(GLM_ZUP[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_XUP) { + ASSERT(test_eq(GLM_XUP[0], 1.0f)) + ASSERT(test_eq(GLM_XUP[1], 0.0f)) + ASSERT(test_eq(GLM_XUP[2], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_FORWARD_RH) { + ASSERT(test_eq(GLM_FORWARD[0], 0.0f)) + ASSERT(test_eq(GLM_FORWARD[1], 0.0f)) + ASSERT(test_eq(GLM_FORWARD[2], -1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_SHUFFLE3) { + ASSERT(TEST_GLM_SHUFFLE3(1, 0, 0) == GLM_SHUFFLE3(1, 0, 0)) + ASSERT(TEST_GLM_SHUFFLE3(0, 1, 0) == GLM_SHUFFLE3(0, 1, 0)) + ASSERT(TEST_GLM_SHUFFLE3(0, 0, 1) == GLM_SHUFFLE3(0, 0, 1)) + ASSERT(TEST_GLM_SHUFFLE3(1, 0, 0) == GLM_SHUFFLE3(1, 0, 0)) + ASSERT(TEST_GLM_SHUFFLE3(1, 0, 1) == GLM_SHUFFLE3(1, 0, 1)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_XXX) { + ASSERT(TEST_GLM_SHUFFLE3(0, 0, 0) == GLM_XXX) + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_YYY) { + ASSERT(TEST_GLM_SHUFFLE3(1, 1, 1) == GLM_YYY) + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_ZZZ) { + ASSERT(TEST_GLM_SHUFFLE3(2, 2, 2) == GLM_ZZZ) + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_ZYX) { + ASSERT(TEST_GLM_SHUFFLE3(0, 1, 2) == GLM_ZYX) + TEST_SUCCESS +} + +/* Deprecated */ + +TEST_IMPL(MACRO_glm_vec3_dup) { + vec3 v1 = {13.0f, 12.0f, 11.0f}, v2; + + glm_vec3_dup(v1, v2); + + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec3_flipsign) { + vec3 v1 = {13.0f, -12.0f, 11.0f}, + v2 = {13.0f, -12.0f, 11.0f}, + v3 = {-13.0f, 12.0f, -11.0f}; + + glm_vec3_flipsign(v1); + glmc_vec3_flipsign(v2); + + ASSERTIFY(test_assert_vec3_eq(v1, v3)) + ASSERTIFY(test_assert_vec3_eq(v2, v3)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec3_flipsign_to) { + vec3 v1 = {13.0f, -12.0f, 11.0f}, + v2 = {-13.0f, 12.0f, -11.0f}, + v3, v4; + + glm_vec3_flipsign_to(v1, v3); + glmc_vec3_flipsign_to(v1, v4); + + ASSERTIFY(test_assert_vec3_eq(v2, v3)) + ASSERTIFY(test_assert_vec3_eq(v2, v4)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec3_inv) { + vec3 v1 = {13.0f, -12.0f, 11.0f}, + v2 = {13.0f, -12.0f, 11.0f}, + v3 = {-13.0f, 12.0f, -11.0f}; + + glm_vec3_inv(v1); + glmc_vec3_inv(v2); + + ASSERTIFY(test_assert_vec3_eq(v1, v3)) + ASSERTIFY(test_assert_vec3_eq(v2, v3)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec3_inv_to) { + vec3 v1 = {13.0f, -12.0f, 11.0f}, + v2 = {-13.0f, 12.0f, -11.0f}, + v3, v4; + + glm_vec3_inv_to(v1, v3); + glmc_vec3_inv_to(v1, v4); + + ASSERTIFY(test_assert_vec3_eq(v3, v4)) + ASSERTIFY(test_assert_vec3_eq(v2, v3)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec3_mulv) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3, v4; + + glm_vec3_mulv(v1, v2, v3); + glmc_vec3_mulv(v1, v2, v4); + + ASSERTIFY(test_assert_vec3_eq(v3, v4)) + + ASSERT(test_eq(v1[0] * v2[0], v3[0])) + ASSERT(test_eq(v1[1] * v2[1], v3[1])) + ASSERT(test_eq(v1[2] * v2[2], v3[2])) + + TEST_SUCCESS +} + +#endif /* CGLM_TEST_VEC3_ONCE */ + +/* --- */ + +TEST_IMPL(GLM_PREFIX, vec3) { + vec4 v4 = {10.0f, 9.0f, 8.0f, 7.0f}; + vec3 v3; + + GLM(vec3)(v4, v3); + + ASSERT(test_eq(v3[0], v4[0])) + ASSERT(test_eq(v3[1], v4[1])) + ASSERT(test_eq(v3[2], v4[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_copy) { + vec3 v1 = {10.0f, 9.0f, 8.0f}; + vec3 v2 = {1.0f, 2.0f, 3.0f}; + + GLM(vec3_copy)(v1, v2); + + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_zero) { + vec3 v1 = {10.0f, 9.0f, 8.0f}; + vec3 v2 = {1.0f, 2.0f, 3.0f}; + + GLM(vec3_zero)(v1); + GLM(vec3_zero)(v2); + + ASSERTIFY(test_assert_vec3_eq(v1, GLM_VEC3_ZERO)) + ASSERTIFY(test_assert_vec3_eq(v2, GLM_VEC3_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_one) { + vec3 v1 = {10.0f, 9.0f, 8.0f}; + vec3 v2 = {1.0f, 2.0f, 3.0f}; + + GLM(vec3_one)(v1); + GLM(vec3_one)(v2); + + ASSERTIFY(test_assert_vec3_eq(v1, GLM_VEC3_ONE)) + ASSERTIFY(test_assert_vec3_eq(v1, GLM_VEC3_ONE)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_dot) { + vec3 a = {10.0f, 9.0f, 8.0f}; + vec3 b = {1.0f, 2.0f, 3.0f}; + float dot1, dot2; + + dot1 = GLM(vec3_dot)(a, b); + dot2 = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + + ASSERT(test_eq(dot1, dot2)) + + TEST_SUCCESS +} + + +TEST_IMPL(GLM_PREFIX, dot) { + /* SAME AS VEC3_DOT */ + + vec3 a = {10.0f, 9.0f, 8.0f}; + vec3 b = {1.0f, 2.0f, 3.0f}; + float dot1, dot2; + + dot1 = GLM(vec3_dot)(a, b); + dot2 = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + + ASSERT(test_eq(dot1, dot2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_norm2) { + vec3 a = {10.0f, 9.0f, 8.0f}; + float n1, n2; + + n1 = GLM(vec3_norm2)(a); + n2 = a[0] * a[0] + a[1] * a[1] + a[2] * a[2]; + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_norm) { + vec3 a = {10.0f, 9.0f, 8.0f}; + float n1, n2; + + n1 = GLM(vec3_norm)(a); + n2 = sqrtf(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]); + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_norm_one) { + vec3 a = {-10.0f, 9.0f, -8.0f}; + float n1, n2; + + n1 = GLM(vec3_norm_one)(a); + n2 = fabsf(a[0]) + fabsf(a[1]) + fabsf(a[2]); + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_norm_inf) { + vec3 a = {-10.0f, 9.0f, -8.0f}; + float n1, n2; + + n1 = GLM(vec3_norm_inf)(a); + n2 = fabsf(a[0]); + + if (n2 < fabsf(a[1])) + n2 = fabsf(a[1]); + + if (n2 < fabsf(a[2])) + n2 = fabsf(a[2]); + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_add) { + vec3 a = {-10.0f, 9.0f, -8.0f}; + vec3 b = {12.0f, 19.0f, -18.0f}; + vec3 c, d; + + c[0] = a[0] + b[0]; + c[1] = a[1] + b[1]; + c[2] = a[2] + b[2]; + + GLM(vec3_add)(a, b, d); + + ASSERTIFY(test_assert_vec3_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_adds) { + vec3 a = {-10.0f, 9.0f, -8.0f}; + vec3 c, d; + float s = 7.0f; + + c[0] = a[0] + s; + c[1] = a[1] + s; + c[2] = a[2] + s; + + GLM(vec3_adds)(a, s, d); + + ASSERTIFY(test_assert_vec3_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_sub) { + vec3 a = {-10.0f, 9.0f, -8.0f}; + vec3 b = {12.0f, 19.0f, -18.0f}; + vec3 c, d; + + c[0] = a[0] - b[0]; + c[1] = a[1] - b[1]; + c[2] = a[2] - b[2]; + + GLM(vec3_sub)(a, b, d); + + ASSERTIFY(test_assert_vec3_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_subs) { + vec3 a = {-10.0f, 9.0f, -8.0f}; + vec3 c, d; + float s = 7.0f; + + c[0] = a[0] - s; + c[1] = a[1] - s; + c[2] = a[2] - s; + + GLM(vec3_subs)(a, s, d); + + ASSERTIFY(test_assert_vec3_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_mul) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3; + + GLM(vec3_mul)(v1, v2, v3); + + ASSERT(test_eq(v1[0] * v2[0], v3[0])) + ASSERT(test_eq(v1[1] * v2[1], v3[1])) + ASSERT(test_eq(v1[2] * v2[2], v3[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_scale) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2; + float s = 7.0f; + + GLM(vec3_scale)(v1, s, v2); + + ASSERT(test_eq(v1[0] * s, v2[0])) + ASSERT(test_eq(v1[1] * s, v2[1])) + ASSERT(test_eq(v1[2] * s, v2[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_scale_as) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2; + float s = 7.0f; + float norm; + + GLM(vec3_scale_as)(v1, s, v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_div) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3; + + GLM(vec3_div)(v1, v2, v3); + + ASSERT(test_eq(v1[0] / v2[0], v3[0])) + ASSERT(test_eq(v1[1] / v2[1], v3[1])) + ASSERT(test_eq(v1[2] / v2[2], v3[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_divs) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2; + float s = 7.0f; + + GLM(vec3_divs)(v1, s, v2); + + ASSERT(test_eq(v1[0] / s, v2[0])) + ASSERT(test_eq(v1[1] / s, v2[1])) + ASSERT(test_eq(v1[2] / s, v2[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_addadd) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3 = {1.0f, 2.0f, 3.0f}, + v4 = {1.0f, 2.0f, 3.0f}; + + GLM(vec3_addadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] + v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] + v2[1], v4[1])) + ASSERT(test_eq(v3[2] + v1[2] + v2[2], v4[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_subadd) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3 = {1.0f, 2.0f, 3.0f}, + v4 = {1.0f, 2.0f, 3.0f}; + + GLM(vec3_subadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] - v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] - v2[1], v4[1])) + ASSERT(test_eq(v3[2] + v1[2] - v2[2], v4[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_muladd) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3 = {1.0f, 2.0f, 3.0f}, + v4 = {1.0f, 2.0f, 3.0f}; + + GLM(vec3_muladd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] * v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] * v2[1], v4[1])) + ASSERT(test_eq(v3[2] + v1[2] * v2[2], v4[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_muladds) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {1.0f, 2.0f, 3.0f}, + v3 = {1.0f, 2.0f, 3.0f}; + float s = 9.0f; + + GLM(vec3_muladds)(v1, s, v3); + + ASSERT(test_eq(v2[0] + v1[0] * s, v3[0])) + ASSERT(test_eq(v2[1] + v1[1] * s, v3[1])) + ASSERT(test_eq(v2[2] + v1[2] * s, v3[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_maxadd) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3 = {1.0f, 2.0f, 3.0f}, + v4 = {1.0f, 2.0f, 3.0f}; + + GLM(vec3_maxadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + glm_max(v1[0], v2[0]), v4[0])) + ASSERT(test_eq(v3[1] + glm_max(v1[1], v2[1]), v4[1])) + ASSERT(test_eq(v3[2] + glm_max(v1[2], v2[2]), v4[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_minadd) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3 = {1.0f, 2.0f, 3.0f}, + v4 = {1.0f, 2.0f, 3.0f}; + + GLM(vec3_minadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + glm_min(v1[0], v2[0]), v4[0])) + ASSERT(test_eq(v3[1] + glm_min(v1[1], v2[1]), v4[1])) + ASSERT(test_eq(v3[2] + glm_min(v1[2], v2[2]), v4[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_negate_to) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3, v4; + + GLM(vec3_negate_to)(v1, v3); + GLM(vec3_negate_to)(v2, v4); + + ASSERT(test_eq(-v1[0], v3[0])) + ASSERT(test_eq(-v1[1], v3[1])) + ASSERT(test_eq(-v1[2], v3[2])) + + ASSERT(test_eq(-v2[0], v4[0])) + ASSERT(test_eq(-v2[1], v4[1])) + ASSERT(test_eq(-v2[2], v4[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_negate) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f}, + v3 = {2.0f, -3.0f, 4.0f}, + v4 = {-3.0f, 4.0f, -5.0f}; + + GLM(vec3_negate)(v1); + GLM(vec3_negate)(v2); + + ASSERT(test_eq(-v1[0], v3[0])) + ASSERT(test_eq(-v1[1], v3[1])) + ASSERT(test_eq(-v1[2], v3[2])) + + ASSERT(test_eq(-v2[0], v4[0])) + ASSERT(test_eq(-v2[1], v4[1])) + ASSERT(test_eq(-v2[2], v4[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_normalize) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2 = {2.0f, -3.0f, 4.0f}; + float s = 1.0f; + float norm; + + GLM(vec3_normalize)(v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + + glm_vec3_zero(v1); + GLM(vec3_normalize)(v1); + ASSERTIFY(test_assert_vec3_eq(v1, GLM_VEC3_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_normalize_to) { + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2; + float s = 1.0f; + float norm; + + GLM(vec3_normalize_to)(v1, v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + + glm_vec3_zero(v1); + GLM(vec3_normalize_to)(v1, v2); + ASSERTIFY(test_assert_vec3_eq(v2, GLM_VEC3_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, normalize) { + /* SAME AS VEC3_NORMALIZE */ + + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2 = {2.0f, -3.0f, 4.0f}; + float s = 1.0f; + float norm; + + GLM(vec3_normalize)(v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + + glm_vec3_zero(v1); + GLM(vec3_normalize)(v1); + ASSERTIFY(test_assert_vec3_eq(v1, GLM_VEC3_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, normalize_to) { + /* SAME AS VEC3_NORMALIZE_TO */ + + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2; + float s = 1.0f; + float norm; + + GLM(vec3_normalize_to)(v1, v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + + glm_vec3_zero(v1); + GLM(vec3_normalize_to)(v1, v2); + ASSERTIFY(test_assert_vec3_eq(v2, GLM_VEC3_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_cross) { + /* (u2.v3 - u3.v2, u3.v1 - u1.v3, u1.v2 - u2.v1) */ + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2 = {12.0f, -31.0f, 43.0f}, v3, v4; + + GLM(vec3_cross)(v1, v2, v3); + + v4[0] = v1[1] * v2[2] - v1[2] * v2[1]; + v4[1] = v1[2] * v2[0] - v1[0] * v2[2]; + v4[2] = v1[0] * v2[1] - v1[1] * v2[0]; + + ASSERTIFY(test_assert_vec3_eq(v3, v4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_crossn) { + /* (u2.v3 - u3.v2, u3.v1 - u1.v3, u1.v2 - u2.v1) */ + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2 = {12.0f, -31.0f, 43.0f}, v3, v4; + + GLM(vec3_crossn)(v1, v2, v3); + + v4[0] = v1[1] * v2[2] - v1[2] * v2[1]; + v4[1] = v1[2] * v2[0] - v1[0] * v2[2]; + v4[2] = v1[0] * v2[1] - v1[1] * v2[0]; + + glm_normalize(v4); + + ASSERTIFY(test_assert_vec3_eq(v3, v4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, cross) { + /* SAME AS VEC3_CROSS */ + + /* (u2.v3 - u3.v2, u3.v1 - u1.v3, u1.v2 - u2.v1) */ + vec3 v1 = {2.0f, -3.0f, 4.0f}, v2 = {12.0f, -31.0f, 43.0f}, v3, v4; + + GLM(vec3_cross)(v1, v2, v3); + + v4[0] = v1[1] * v2[2] - v1[2] * v2[1]; + v4[1] = v1[2] * v2[0] - v1[0] * v2[2]; + v4[2] = v1[0] * v2[1] - v1[1] * v2[0]; + + ASSERTIFY(test_assert_vec3_eq(v3, v4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_angle) { + vec3 v1 = {1.0f, 0.0f, 0.0f}, + v2 = {1.0f, 0.0f, 1.0f}, + v3 = {0.0f, 1.0f, 0.0f}; + float a; + + a = GLM(vec3_angle)(v1, v1); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, 0.0f)) + + a = GLM(vec3_angle)(v1, v2); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, GLM_PI_4f)) + + a = GLM(vec3_angle)(v1, v3); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, GLM_PI_2f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_rotate) { + vec3 v1 = {1.0f, 0.0f, 0.0f}, v2 = {1.0f, 1.0f, 1.0f}; + + /* rotate X around Y = -Z */ + GLM(vec3_rotate)(v1, GLM_PI_2f, GLM_YUP); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + /* rotate -Z around X = Y */ + GLM(vec3_rotate)(v1, GLM_PI_2f, GLM_XUP); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate Y around Z = -X */ + GLM(vec3_rotate)(v1, GLM_PI_2f, GLM_ZUP); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate)(v2, GLM_PI_2f, GLM_YUP); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], -1.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate)(v2, GLM_PI_2f, GLM_YUP); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], -1.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate)(v2, GLM_PI_2f, GLM_YUP); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + /* rotate v2 around X by 90deg */ + GLM(vec3_rotate)(v2, GLM_PI_2f, GLM_XUP); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], -1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + /* rotate v2 around Z by 90deg */ + GLM(vec3_rotate)(v2, GLM_PI_2f, GLM_ZUP); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], -1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_rotate_m4) { + vec3 v1 = {1.0f, 0.0f, 0.0f}, v2 = {1.0f, 1.0f, 1.0f}; + mat4 x, y, z; + + glm_rotate_make(x, GLM_PI_2f, GLM_XUP); + glm_rotate_make(y, GLM_PI_2f, GLM_YUP); + glm_rotate_make(z, GLM_PI_2f, GLM_ZUP); + + /* rotate X around Y = -Z */ + GLM(vec3_rotate_m4)(y, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + /* rotate -Z around X = Y */ + GLM(vec3_rotate_m4)(x, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate Y around X = -X */ + GLM(vec3_rotate_m4)(z, v1, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate_m4)(y, v2, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], -1.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate_m4)(y, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], -1.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate_m4)(y, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + /* rotate v2 around X by 90deg */ + GLM(vec3_rotate_m4)(x, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], -1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + /* rotate v2 around Z by 90deg */ + GLM(vec3_rotate_m4)(z, v2, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], -1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_rotate_m3) { + vec3 v1 = {1.0f, 0.0f, 0.0f}, v2 = {1.0f, 1.0f, 1.0f}; + mat4 x0, y0, z0; + mat3 x, y, z; + + glm_rotate_make(x0, GLM_PI_2f, GLM_XUP); + glm_rotate_make(y0, GLM_PI_2f, GLM_YUP); + glm_rotate_make(z0, GLM_PI_2f, GLM_ZUP); + + glm_mat4_pick3(x0, x); + glm_mat4_pick3(y0, y); + glm_mat4_pick3(z0, z); + + /* rotate X around Y = -Z */ + GLM(vec3_rotate_m3)(y, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + /* rotate -Z around X = Y */ + GLM(vec3_rotate_m3)(x, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate Y around Z = -X */ + GLM(vec3_rotate_m3)(z, v1, v1); + + ASSERT(test_eq(v1[0], -1.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate_m3)(y, v2, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], -1.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate_m3)(y, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], -1.0f)) + + /* rotate v2 around Y by 90deg */ + GLM(vec3_rotate_m3)(y, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + /* rotate v2 around X by 90deg */ + GLM(vec3_rotate_m3)(x, v2, v2); + + ASSERT(test_eq(v2[0], -1.0f)) + ASSERT(test_eq(v2[1], -1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + /* rotate v2 around Z by 90deg */ + GLM(vec3_rotate_m3)(z, v2, v2); + + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], -1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_proj) { + vec3 v1 = {3.0f, 4.0f, 0.0f}, + v2 = {10.0f, 0.0f, 0.0f}, + v3 = {0.0f, 10.0f, 0.0f}, + v4 = {3.0f, 0.0f, 0.0f}, + v5 = {0.0f, 4.0f, 0.0f}, + v6; + + GLM(vec3_proj)(v1, v2, v6); + ASSERTIFY(test_assert_vec3_eq(v4, v6)) + + GLM(vec3_proj)(v1, v3, v6); + ASSERTIFY(test_assert_vec3_eq(v5, v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_center) { + vec3 v1 = {30.0f, 0.0f, 0.0f}, + v2 = {0.0f, 0.0f, 0.0f}, + v3 = {15.0f, 0.0f, 0.0f}, + v4 = {3.0f, 10.0f, 120.0f}, + v5 = {0.46f, 4.0f, 14.0f}, + v6; + + GLM(vec3_center)(v1, v2, v6); + ASSERTIFY(test_assert_vec3_eq(v3, v6)) + + GLM(vec3_center)(v4, v5, v6); + ASSERT(test_eq((v4[0] + v5[0]) * 0.5f, v6[0])) + ASSERT(test_eq((v4[1] + v5[1]) * 0.5f, v6[1])) + ASSERT(test_eq((v4[2] + v5[2]) * 0.5f, v6[2])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_distance2) { + vec3 v1 = {30.0f, 0.0f, 0.0f}, + v2 = {0.0f, 0.0f, 0.0f}, + v3 = {3.0f, 10.0f, 120.0f}, + v4 = {0.46f, 4.0f, 14.0f}; + float d; + + d = GLM(vec3_distance2)(v1, v2); + ASSERT(test_eq(d, 30.0f * 30.0f)) + + d = GLM(vec3_distance2)(v3, v4); + ASSERT(test_eq(powf(v3[0] - v4[0], 2.0f) + + powf(v3[1] - v4[1], 2.0f) + + powf(v3[2] - v4[2], 2.0f), d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_distance) { + vec3 v1 = {30.0f, 0.0f, 0.0f}, + v2 = {0.0f, 0.0f, 0.0f}, + v3 = {3.0f, 10.0f, 120.0f}, + v4 = {0.46f, 4.0f, 14.0f}; + float d; + + d = GLM(vec3_distance)(v1, v2); + ASSERT(test_eq(d, 30.0f)) + + d = GLM(vec3_distance)(v3, v4); + ASSERT(test_eq(sqrtf(powf(v3[0] - v4[0], 2.0f) + + powf(v3[1] - v4[1], 2.0f) + + powf(v3[2] - v4[2], 2.0f)), d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_maxv) { + vec3 v1, v2, v3; + vec3 v5 = {-1.456f, -1.456f, 241.456f}; + vec3 v6 = {11.0f, 11.0f, 11.0f}; + vec3 v7 = {78.0f, -78.0f, 7.0f}; + + GLM(vec3_maxv)(v5, v6, v1); + GLM(vec3_maxv)(v5, v7, v2); + GLM(vec3_maxv)(v6, v7, v3); + + ASSERT(test_eq(v1[0], 11.0f)) + ASSERT(test_eq(v1[1], 11.0f)) + ASSERT(test_eq(v1[2], 241.456f)) + + ASSERT(test_eq(v2[0], 78.0f)) + ASSERT(test_eq(v2[1], -1.456f)) + ASSERT(test_eq(v2[2], 241.456f)) + + ASSERT(test_eq(v3[0], 78.0f)) + ASSERT(test_eq(v3[1], 11.0f)) + ASSERT(test_eq(v3[2], 11.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_minv) { + vec3 v1, v2, v3; + vec3 v5 = {-1.456f, -1.456f, 241.456f}; + vec3 v6 = {11.0f, 11.0f, 11.0f}; + vec3 v7 = {78.0f, -78.0f, 7.0f}; + + GLM(vec3_minv)(v5, v6, v1); + GLM(vec3_minv)(v5, v7, v2); + GLM(vec3_minv)(v6, v7, v3); + + ASSERT(test_eq(v1[0], -1.456f)) + ASSERT(test_eq(v1[1], -1.456f)) + ASSERT(test_eq(v1[2], 11.0f)) + + ASSERT(test_eq(v2[0], -1.456f)) + ASSERT(test_eq(v2[1], -78.0f)) + ASSERT(test_eq(v2[2], 7.0f)) + + ASSERT(test_eq(v3[0], 11.0f)) + ASSERT(test_eq(v3[1], -78.0f)) + ASSERT(test_eq(v3[2], 7.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_ortho) { + vec3 v1, v2, v3, v4 = {1.f, 1.f, 1.f}; + vec3 v5, v6, v7, v8; + float a; + + test_rand_vec3(v1); + test_rand_vec3(v2); + test_rand_vec3(v3); + + GLM(vec3_ortho)(v1, v5); + GLM(vec3_ortho)(v2, v6); + GLM(vec3_ortho)(v3, v7); + GLM(vec3_ortho)(v4, v8); + + a = glm_vec3_angle(v1, v5); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, GLM_PI_2f)) + + a = glm_vec3_angle(v2, v6); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, GLM_PI_2f)) + + a = glm_vec3_angle(v3, v7); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, GLM_PI_2f)) + + a = glm_vec3_angle(v4, v8); + ASSERT(!isinf(a)) + ASSERT(!isnan(a)) + ASSERT(test_eq(a, GLM_PI_2f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_clamp) { + vec3 v1 = {-1.456f, -11.456f, 31.456f}; + vec3 v2 = {0.110f, 111.0f, 11.0f}; + vec3 v3 = {78.0f, 32.0f, -78.0f}; + + GLM(vec3_clamp)(v1, -1.03f, 30.0f); + GLM(vec3_clamp)(v2, 0.11f, 111.0f); + GLM(vec3_clamp)(v3, -88.0f, 70.0f); + + ASSERT(test_eq(v1[0], -1.03f)) + ASSERT(test_eq(v1[1], -1.03f)) + ASSERT(test_eq(v1[2], 30.0f)) + + ASSERT(test_eq(v2[0], 0.11f)) + ASSERT(test_eq(v2[1], 111.0f)) + ASSERT(test_eq(v2[2], 11.0f)) + + ASSERT(test_eq(v3[0], 70.0f)) + ASSERT(test_eq(v3[1], 32.0f)) + ASSERT(test_eq(v3[2], -78.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_lerp) { + vec3 v1 = {-100.0f, -200.0f, -10.0f}; + vec3 v2 = {100.0f, 200.0f, 10.0f}; + vec3 v3; + + GLM(vec3_lerp)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + + GLM(vec3_lerp)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_lerpc) { + vec3 v1 = {-100.0f, -200.0f, -10.0f}; + vec3 v2 = {100.0f, 200.0f, 10.0f}; + vec3 v3; + + GLM(vec3_lerpc)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + + GLM(vec3_lerpc)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + + GLM(vec3_lerpc)(v1, v2, -1.75f, v3); + ASSERT(test_eq(v3[0], -100.0f)) + ASSERT(test_eq(v3[1], -200.0f)) + ASSERT(test_eq(v3[2], -10.0f)) + + GLM(vec3_lerpc)(v1, v2, 1.75f, v3); + ASSERT(test_eq(v3[0], 100.0f)) + ASSERT(test_eq(v3[1], 200.0f)) + ASSERT(test_eq(v3[2], 10.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_mix) { + vec3 v1 = {-100.0f, -200.0f, -10.0f}; + vec3 v2 = {100.0f, 200.0f, 10.0f}; + vec3 v3; + + GLM(vec3_mix)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + + GLM(vec3_mix)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_mixc) { + vec3 v1 = {-100.0f, -200.0f, -10.0f}; + vec3 v2 = {100.0f, 200.0f, 10.0f}; + vec3 v3; + + GLM(vec3_mixc)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + + GLM(vec3_mixc)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + + GLM(vec3_mixc)(v1, v2, -1.75f, v3); + ASSERT(test_eq(v3[0], -100.0f)) + ASSERT(test_eq(v3[1], -200.0f)) + ASSERT(test_eq(v3[2], -10.0f)) + + GLM(vec3_mixc)(v1, v2, 1.75f, v3); + ASSERT(test_eq(v3[0], 100.0f)) + ASSERT(test_eq(v3[1], 200.0f)) + ASSERT(test_eq(v3[2], 10.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_step_uni) { + vec3 v1 = {-100.0f, -200.0f, -10.0f}; + vec3 v2; + + GLM(vec3_step_uni)(-2.5f, v1, v2); + ASSERT(test_eq(v2[0], 0.0f)) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(test_eq(v2[2], 0.0f)) + + GLM(vec3_step_uni)(-10.0f, v1, v2); + ASSERT(test_eq(v2[0], 0.0f)) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + GLM(vec3_step_uni)(-1000.0f, v1, v2); + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_step) { + vec3 v1 = {-100.0f, -200.0f, -10.0f}; + vec3 s1 = {-100.0f, 0.0f, 10.0f}; + vec3 s2 = {100.0f, -220.0f, -10.0f}; + vec3 s3 = {100.0f, 200.0f, 10.0f}; + vec3 v2; + + GLM(vec3_step)(s1, v1, v2); + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(test_eq(v2[2], 0.0f)) + + GLM(vec3_step)(s2, v1, v2); + ASSERT(test_eq(v2[0], 0.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + + GLM(vec3_step)(s3, v1, v2); + ASSERT(test_eq(v2[0], 0.0f)) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(test_eq(v2[2], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_smoothstep_uni) { + vec3 v1 = {-100.0f, -200.0f, -10.0f}; + vec3 v2; + + GLM(vec3_smoothstep_uni)(-200.0f, -100.0f, v1, v2); + ASSERT(test_eq_th(v2[0], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[1], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[2], 1.0f, 1e-5f)) + + GLM(vec3_smoothstep_uni)(-250.0f, -200.0f, v1, v2); + ASSERT(test_eq_th(v2[0], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[1], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[2], 1.0f, 1e-5f)) + + GLM(vec3_smoothstep_uni)(-200.0f, 200, v1, v2); + ASSERT(v2[0] > 0.0f && v2[0] < 0.25f) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(v2[2] > 0.0f && v2[2] < 0.5f) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_smoothstep) { + vec3 v1 = {-100.0f, -200.0f, -10.0f}; + vec3 e1_0 = {-100.0f, 0.0f, -11.0f}; + vec3 e1_1 = {50.0f, 10.0f, 20.0f}; + vec3 e2_0 = {-180.0f, -300.0f, -93.0f}; + vec3 e2_1 = {100.0f, 120.0f, -10.0f}; + vec3 e3_0 = {-12.0f, 100.0f, 0.0f}; + vec3 e3_1 = {100.0f, 200.0f, 10.0f}; + vec3 v2; + + GLM(vec3_smoothstep)(e1_0, e1_1, v1, v2); + ASSERT(test_eq_th(v2[0], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[1], 0.0f, 1e-5f)) + ASSERT(v2[2] > 0.0f && v2[2] < 0.1f) + + GLM(vec3_smoothstep)(e2_0, e2_1, v1, v2); + ASSERT(v2[0] > 0.0f && v2[0] < 0.25f) + ASSERT(v2[1] > 0.0f && v2[1] < 0.15f) + ASSERT(test_eq_th(v2[2], 1.0f, 1e-5f)) + + GLM(vec3_smoothstep)(e3_0, e3_1, v1, v2); + ASSERT(test_eq_th(v2[0], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[1], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[2], 0.0f, 1e-5f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_smoothinterp) { + vec3 e1_0 = {-100.0f, 0.0f, -11.0f}; + vec3 e1_1 = {50.0f, 10.0f, 20.0f}; + vec3 e2_0 = {80.0f, -220.0f, -19.0f}; + vec3 e2_1 = {100.0f, -200.0f, -10.0f}; + vec3 e3_0 = {-12.0f, 100.0f, 0.0f}; + vec3 e3_1 = {100.0f, 200.0f, 10.0f}; + vec3 v2; + + GLM(vec3_smoothinterp)(e1_0, e1_1, 0.5f, v2); + ASSERT(v2[0] >= e1_0[0] && v2[0] <= e1_1[0]) + ASSERT(v2[1] >= e1_0[1] && v2[1] <= e1_1[1]) + ASSERT(v2[2] >= e1_0[2] && v2[2] <= e1_1[2]) + + GLM(vec3_smoothinterp)(e2_0, e2_1, 0.5, v2); + ASSERT(v2[0] >= e2_0[0] && v2[0] <= e2_1[0]) + ASSERT(v2[1] >= e2_0[1] && v2[1] <= e2_1[1]) + ASSERT(v2[2] >= e2_0[2] && v2[2] <= e2_1[2]) + + GLM(vec3_smoothinterp)(e3_0, e3_1, 1.0, v2); + ASSERT(v2[0] >= e3_0[0] && v2[0] <= e3_1[0]) + ASSERT(v2[1] >= e3_0[1] && v2[1] <= e3_1[1]) + ASSERT(v2[2] >= e3_0[2] && v2[2] <= e3_1[2]) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_smoothinterpc) { + vec3 e1_0 = {-100.0f, 0.0f, -11.0f}; + vec3 e1_1 = {50.0f, 10.0f, 20.0f}; + vec3 e2_0 = {80.0f, -220.0f, -19.0f}; + vec3 e2_1 = {100.0f, -200.0f, -10.0f}; + vec3 e3_0 = {-12.0f, 100.0f, 0.0f}; + vec3 e3_1 = {100.0f, 200.0f, 10.0f}; + vec3 v2; + + GLM(vec3_smoothinterpc)(e1_0, e1_1, -0.5f, v2); + ASSERT(v2[0] >= e1_0[0] && v2[0] <= e1_1[0]) + ASSERT(v2[1] >= e1_0[1] && v2[1] <= e1_1[1]) + ASSERT(v2[2] >= e1_0[2] && v2[2] <= e1_1[2]) + + GLM(vec3_smoothinterpc)(e2_0, e2_1, 0.5f, v2); + ASSERT(v2[0] >= e2_0[0] && v2[0] <= e2_1[0]) + ASSERT(v2[1] >= e2_0[1] && v2[1] <= e2_1[1]) + ASSERT(v2[2] >= e2_0[2] && v2[2] <= e2_1[2]) + + GLM(vec3_smoothinterpc)(e3_0, e3_1, 2.0f, v2); + ASSERT(v2[0] >= e3_0[0] && v2[0] <= e3_1[0]) + ASSERT(v2[1] >= e3_0[1] && v2[1] <= e3_1[1]) + ASSERT(v2[2] >= e3_0[2] && v2[2] <= e3_1[2]) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_swizzle) { + vec3 v; + + /* ZYX */ + v[0] = 1; + v[1] = 2; + v[2] = 3; + + glm_vec3_swizzle(v, GLM_ZYX, v); + ASSERTIFY(test_assert_vec3_eq(v, (vec3){3, 2, 1})) + + glm_vec3_swizzle(v, GLM_XXX, v); + ASSERTIFY(test_assert_vec3_eq(v, (vec3){3, 3, 3})) + + v[0] = 1; + v[1] = 2; + v[2] = 3; + + glm_vec3_swizzle(v, GLM_YYY, v); + ASSERTIFY(test_assert_vec3_eq(v, (vec3){2, 2, 2})) + + v[0] = 1; + v[1] = 2; + v[2] = 3; + + glm_vec3_swizzle(v, GLM_ZZZ, v); + ASSERTIFY(test_assert_vec3_eq(v, (vec3){3, 3, 3})) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_broadcast) { + vec3 v1, v2, v3; + vec3 v5 = {-1.456f, -1.456f, -1.456f}; + vec3 v6 = {11.0f, 11.0f, 11.0f}; + vec3 v7 = {78.0f, 78.0f, 78.0f}; + + GLM(vec3_broadcast)(-1.456f, v1); + GLM(vec3_broadcast)(11.0f, v2); + GLM(vec3_broadcast)(78.0f, v3); + + ASSERTIFY(test_assert_vec3_eq(v1, v5)) + ASSERTIFY(test_assert_vec3_eq(v2, v6)) + ASSERTIFY(test_assert_vec3_eq(v3, v7)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_fill) { + vec3 v1, v2, v3; + vec3 v5 = {-1.456f, -1.456f, -1.456f}; + vec3 v6 = {11.0f, 11.0f, 11.0f}; + vec3 v7 = {78.0f, 78.0f, 78.0f}; + + GLM(vec3_fill)(v1, -1.456f); + GLM(vec3_fill)(v2, 11.0f); + GLM(vec3_fill)(v3, 78.0f); + + ASSERTIFY(test_assert_vec3_eq(v1, v5)) + ASSERTIFY(test_assert_vec3_eq(v2, v6)) + ASSERTIFY(test_assert_vec3_eq(v3, v7)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_eq) { + vec3 v1, v2, v3; + + GLM(vec3_fill)(v1, -1.456f); + GLM(vec3_fill)(v2, 11.0f); + GLM(vec3_fill)(v3, 78.1f); + + ASSERT(GLM(vec3_eq)(v1, -1.456f)) + ASSERT(GLM(vec3_eq)(v2, 11.0f)) + ASSERT(!GLM(vec3_eq)(v3, 78.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_eq_eps) { + vec3 v1, v2, v3; + + GLM(vec3_fill)(v1, -1.456f); + GLM(vec3_fill)(v2, 11.0f); + GLM(vec3_fill)(v3, 78.1f); + + ASSERT(GLM(vec3_eq_eps)(v1, -1.456f)) + ASSERT(GLM(vec3_eq_eps)(v2, 11.0f)) + ASSERT(!GLM(vec3_eq_eps)(v3, 78.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_eq_all) { + vec3 v1, v2, v3; + vec3 v4 = {2.104f, -3.012f, -4.10f}; + vec3 v5 = {-12.35f, -31.140f, -43.502f}; + + GLM(vec3_fill)(v1, -1.456f); + GLM(vec3_fill)(v2, 11.0f); + GLM(vec3_fill)(v3, 78.0f); + + ASSERT(GLM(vec3_eq_all)(v1)) + ASSERT(GLM(vec3_eq_all)(v2)) + ASSERT(GLM(vec3_eq_all)(v3)) + ASSERT(!GLM(vec3_eq_all)(v4)) + ASSERT(!GLM(vec3_eq_all)(v5)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_eqv) { + vec3 v1, v2, v3, v4, v5; + vec3 v6 = {-1.456f, -1.456f, -1.456f}; + vec3 v7 = {11.0f, 11.0f, 11.0f}; + vec3 v8 = {78.0f, 78.0f, -43.502f}; + + GLM(vec3_fill)(v1, -1.456f); + GLM(vec3_fill)(v2, 11.0f); + GLM(vec3_fill)(v3, 78.0f); + + test_rand_vec3(v4); + test_rand_vec3(v5); + + ASSERT(GLM(vec3_eqv)(v1, v6)) + ASSERT(GLM(vec3_eqv)(v2, v7)) + ASSERT(!GLM(vec3_eqv)(v3, v8)) + ASSERT(!GLM(vec3_eqv)(v4, v5)) + ASSERT(GLM(vec3_eqv)(v5, v5)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_eqv_eps) { + vec3 v1, v2, v3, v4, v5; + vec3 v6 = {-1.456f, -1.456f, -1.456f}; + vec3 v7 = {11.0f, 11.0f, 11.0f}; + vec3 v8 = {78.0f, 78.0f, -43.502f}; + + GLM(vec3_fill)(v1, -1.456f); + GLM(vec3_fill)(v2, 11.0f); + GLM(vec3_fill)(v3, 78.0f); + + test_rand_vec3(v4); + test_rand_vec3(v5); + + ASSERT(GLM(vec3_eqv_eps)(v1, v6)) + ASSERT(GLM(vec3_eqv_eps)(v2, v7)) + ASSERT(!GLM(vec3_eqv_eps)(v3, v8)) + ASSERT(!GLM(vec3_eqv_eps)(v4, v5)) + ASSERT(GLM(vec3_eqv_eps)(v5, v5)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_max) { + vec3 v1 = {2.104f, -3.012f, -4.10f}, v2 = {-12.35f, -31.140f, -43.502f}; + vec3 v3 = {INFINITY, 0.0f, 0.0f}, v4 = {NAN, INFINITY, 2.0f}; + vec3 v5 = {NAN, -1.0f, -1.0f}, v6 = {-1.0f, -11.0f, 11.0f}; + + ASSERT(test_eq(GLM(vec3_max)(v1), 2.104f)) + ASSERT(test_eq(GLM(vec3_max)(v2), -12.35f)) + ASSERT(isinf(GLM(vec3_max)(v3))) + ASSERT(isnan(GLM(vec3_max)(v4))) + ASSERT(isnan(GLM(vec3_max)(v5))) + ASSERT(test_eq(GLM(vec3_max)(v6), 11.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_min) { + vec3 v1 = {2.104f, -3.012f, -4.10f}, v2 = {-12.35f, -31.140f, -43.502f}; + vec3 v3 = {INFINITY, 0.0f, 0.0f}, v4 = {NAN, INFINITY, 2.0f}; + vec3 v5 = {NAN, -1.0f, -1.0f}, v6 = {-1.0f, -11.0f, 11.0f}; + + ASSERT(test_eq(GLM(vec3_min)(v1), -4.10f)) + ASSERT(test_eq(GLM(vec3_min)(v2), -43.502f)) + ASSERT(test_eq(GLM(vec3_min)(v3), 0.0f)) + ASSERT(isnan(GLM(vec3_min)(v4))) + ASSERT(isnan(GLM(vec3_min)(v5))) + ASSERT(test_eq(GLM(vec3_min)(v6), -11.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_isnan) { + vec3 v1 = {2.104f, -3.012f, -4.10f}, v2 = {-12.35f, -31.140f, -43.502f}; + vec3 v3 = {INFINITY, 0.0f, 0.0f}, v4 = {NAN, INFINITY, 2.0f}; + vec3 v5 = {NAN, -1.0f, -1.0f}, v6 = {-1.0f, -1.0f, 11.0f}; + + ASSERT(!GLM(vec3_isnan)(v1)) + ASSERT(!GLM(vec3_isnan)(v2)) + ASSERT(!GLM(vec3_isnan)(v3)) + ASSERT(GLM(vec3_isnan)(v4)) + ASSERT(GLM(vec3_isnan)(v5)) + ASSERT(!GLM(vec3_isnan)(v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_isinf) { + vec3 v1 = {2.104f, -3.012f, -4.10f}, v2 = {-12.35f, -31.140f, -43.502f}; + vec3 v3 = {INFINITY, 0.0f, 0.0f}, v4 = {NAN, INFINITY, 2.0f}; + vec3 v5 = {NAN, -1.0f, -1.0f}, v6 = {-1.0f, -1.0f, 11.0f}; + + ASSERT(!GLM(vec3_isinf)(v1)) + ASSERT(!GLM(vec3_isinf)(v2)) + ASSERT(GLM(vec3_isinf)(v3)) + ASSERT(GLM(vec3_isinf)(v4)) + ASSERT(!GLM(vec3_isinf)(v5)) + ASSERT(!GLM(vec3_isinf)(v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_isvalid) { + vec3 v1 = {2.104f, -3.012f, -4.10f}, v2 = {-12.35f, -31.140f, -43.502f}; + vec3 v3 = {INFINITY, 0.0f, 0.0f}, v4 = {NAN, INFINITY, 2.0f}; + vec3 v5 = {NAN, -1.0f, -1.0f}, v6 = {-1.0f, -1.0f, 11.0f}; + + ASSERT(GLM(vec3_isvalid)(v1)) + ASSERT(GLM(vec3_isvalid)(v2)) + ASSERT(!GLM(vec3_isvalid)(v3)) + ASSERT(!GLM(vec3_isvalid)(v4)) + ASSERT(!GLM(vec3_isvalid)(v5)) + ASSERT(GLM(vec3_isvalid)(v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_sign) { + vec3 v1 = {2.104f, -3.012f, -4.10f}, v2 = {-12.35f, -31.140f, -43.502f}; + vec3 v3, v4; + vec3 v5 = {1.0f, -1.0f, -1.0f}, v6 = {-1.0f, -1.0f, -1.0f}; + + GLM(vec3_sign)(v1, v3); + GLM(vec3_sign)(v2, v4); + + ASSERTIFY(test_assert_vec3_eq(v3, v5)) + ASSERTIFY(test_assert_vec3_eq(v4, v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_abs) { + vec3 v1 = {2.104f, -3.012f, -4.10f}, v2 = {-12.35f, -31.140f, -43.502f}; + vec3 v3, v4; + vec3 v5 = {2.104f, 3.012f, 4.10f}, v6 = {12.35f, 31.140f, 43.502f}; + + GLM(vec3_abs)(v1, v3); + GLM(vec3_abs)(v2, v4); + + ASSERTIFY(test_assert_vec3_eq(v3, v5)) + ASSERTIFY(test_assert_vec3_eq(v4, v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_fract) { + vec3 v1 = {2.104f, 3.012f, 4.10f}, v2 = {12.35f, 31.140f, 43.502f}, v3, v4; + vec3 v5 = {0.104f, 0.012f, 0.10f}, v6 = {0.35f, 0.140f, 0.502f}; + + GLM(vec3_fract)(v1, v3); + GLM(vec3_fract)(v2, v4); + + ASSERTIFY(test_assert_vec3_eq(v3, v5)) + ASSERTIFY(test_assert_vec3_eq(v4, v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_hadd) { + vec3 v1 = {2.0f, 3.0f, 4.0f}, v2 = {12.0f, 31.0f, 43.0f}; + float r1, r2, r3, r4; + + r1 = GLM(vec3_hadd)(v1); + r2 = GLM(vec3_hadd)(v2); + + r3 = v1[0] + v1[1] + v1[2]; + r4 = v2[0] + v2[1] + v2[2]; + + ASSERT(test_eq(r1, r3)) + ASSERT(test_eq(r2, r4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec3_sqrt) { + vec3 v1 = {2.0f, 3.0f, 4.0f}, v2 = {12.0f, 31.0f, 43.0f}, v3, v4; + + GLM(vec3_sqrt)(v1, v3); + GLM(vec3_sqrt)(v2, v4); + + ASSERT(test_eq(sqrtf(v1[0]), v3[0])) + ASSERT(test_eq(sqrtf(v1[1]), v3[1])) + ASSERT(test_eq(sqrtf(v1[2]), v3[2])) + + ASSERT(test_eq(sqrtf(v2[0]), v4[0])) + ASSERT(test_eq(sqrtf(v2[1]), v4[1])) + ASSERT(test_eq(sqrtf(v2[2]), v4[2])) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/test_vec4.h b/lib/cglm/test/src/test_vec4.h new file mode 100644 index 0000000..abb882f --- /dev/null +++ b/lib/cglm/test/src/test_vec4.h @@ -0,0 +1,1420 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#include "test_common.h" + +#define TEST_GLM_SHUFFLE4(z, y, x, w) (((z) << 6) | ((y) << 4) | ((x) << 2)|(w)) + +#ifndef CGLM_TEST_VEC4_ONCE +#define CGLM_TEST_VEC4_ONCE + +/* Macros */ + +TEST_IMPL(MACRO_GLM_VEC4_ONE_INIT) { + vec4 v = GLM_VEC4_ONE_INIT; + + ASSERT(test_eq(v[0], 1.0f)) + ASSERT(test_eq(v[1], 1.0f)) + ASSERT(test_eq(v[2], 1.0f)) + ASSERT(test_eq(v[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC4_ZERO_INIT) { + vec4 v = GLM_VEC4_ZERO_INIT; + + ASSERT(test_eq(v[0], 0.0f)) + ASSERT(test_eq(v[1], 0.0f)) + ASSERT(test_eq(v[2], 0.0f)) + ASSERT(test_eq(v[3], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC4_ONE) { + ASSERT(test_eq(GLM_VEC4_ONE[0], 1.0f)) + ASSERT(test_eq(GLM_VEC4_ONE[1], 1.0f)) + ASSERT(test_eq(GLM_VEC4_ONE[2], 1.0f)) + ASSERT(test_eq(GLM_VEC4_ONE[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_VEC4_ZERO) { + ASSERT(test_eq(GLM_VEC4_ZERO[0], 0.0f)) + ASSERT(test_eq(GLM_VEC4_ZERO[1], 0.0f)) + ASSERT(test_eq(GLM_VEC4_ZERO[2], 0.0f)) + ASSERT(test_eq(GLM_VEC4_ZERO[3], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_XXXX) { + ASSERT(TEST_GLM_SHUFFLE4(0, 0, 0, 0) == GLM_XXXX) + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_YYYY) { + ASSERT(TEST_GLM_SHUFFLE4(1, 1, 1, 1) == GLM_YYYY) + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_ZZZZ) { + ASSERT(TEST_GLM_SHUFFLE4(2, 2, 2, 2) == GLM_ZZZZ) + TEST_SUCCESS +} + +TEST_IMPL(MACRO_GLM_WZYX) { + ASSERT(TEST_GLM_SHUFFLE4(0, 1, 2, 3) == GLM_WZYX) + TEST_SUCCESS +} + +/* Deprecated */ + +TEST_IMPL(MACRO_glm_vec4_dup) { + vec4 v1 = {13.0f, 12.0f, 11.0f, 56.0f}, v2; + + glm_vec4_dup(v1, v2); + + ASSERTIFY(test_assert_vec4_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec4_flipsign) { + vec4 v1 = {13.0f, -12.0f, 11.0f, 56.0f}, + v2 = {13.0f, -12.0f, 11.0f, 56.0f}, + v3 = {-13.0f, 12.0f, -11.0f, -56.0f}; + + glm_vec4_flipsign(v1); + glmc_vec4_flipsign(v2); + + ASSERTIFY(test_assert_vec4_eq(v1, v3)) + ASSERTIFY(test_assert_vec4_eq(v2, v3)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec4_flipsign_to) { + vec4 v1 = {13.0f, -12.0f, 11.0f, 56.0f}, + v2 = {-13.0f, 12.0f, -11.0f, -56.0f}, + v3, v4; + + glm_vec4_flipsign_to(v1, v3); + glmc_vec4_flipsign_to(v1, v4); + + ASSERTIFY(test_assert_vec4_eq(v2, v3)) + ASSERTIFY(test_assert_vec4_eq(v2, v4)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec4_inv) { + vec4 v1 = {13.0f, -12.0f, 11.0f, 56.0f}, + v2 = {13.0f, -12.0f, 11.0f, 56.0f}, + v3 = {-13.0f, 12.0f, -11.0f, -56.0f}; + + glm_vec4_inv(v1); + glmc_vec4_inv(v2); + + ASSERTIFY(test_assert_vec4_eq(v1, v3)) + ASSERTIFY(test_assert_vec4_eq(v2, v3)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec4_inv_to) { + vec4 v1 = {13.0f, -12.0f, 11.0f, 56.0f}, + v2 = {-13.0f, 12.0f, -11.0f, -56.0f}, + v3, v4; + + glm_vec4_inv_to(v1, v3); + glmc_vec4_inv_to(v1, v4); + + ASSERTIFY(test_assert_vec4_eq(v3, v4)) + ASSERTIFY(test_assert_vec4_eq(v2, v3)) + + TEST_SUCCESS +} + +TEST_IMPL(MACRO_glm_vec4_mulv) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 56.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 56.0f}, + v3, v4; + + glm_vec4_mulv(v1, v2, v3); + glmc_vec4_mulv(v1, v2, v4); + + ASSERTIFY(test_assert_vec4_eq(v3, v4)) + + ASSERT(test_eq(v1[0] * v2[0], v3[0])) + ASSERT(test_eq(v1[1] * v2[1], v3[1])) + ASSERT(test_eq(v1[2] * v2[2], v3[2])) + ASSERT(test_eq(v1[3] * v2[3], v3[3])) + + TEST_SUCCESS +} + +#endif /* CGLM_TEST_VEC4_ONCE */ + +/* --- */ + +TEST_IMPL(GLM_PREFIX, vec4) { + vec4 v1 = {10.0f, 9.0f, 8.0f}; + vec4 v2 = {10.0f, 9.0f, 8.0f, 7.0f}; + vec4 v3; + + GLM(vec4)(v1, 7.0f, v3); + + ASSERTIFY(test_assert_vec4_eq(v2, v3)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_copy3) { + vec4 v4 = {10.0f, 9.0f, 8.0f, 7.0f}; + vec3 v3; + + GLM(vec4_copy3)(v4, v3); + + ASSERTIFY(test_assert_vec3_eq(v3, v4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_copy) { + vec4 v1 = {10.0f, 9.0f, 8.0f, 78.0f}; + vec4 v2 = {1.0f, 2.0f, 3.0f, 4.0f}; + + GLM(vec4_copy)(v1, v2); + + ASSERTIFY(test_assert_vec4_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_ucopy) { + vec4 v1 = {10.0f, 9.0f, 8.0f, 78.0f}; + vec4 v2 = {1.0f, 2.0f, 3.0f, 4.0f}; + + GLM(vec4_ucopy)(v1, v2); + + ASSERTIFY(test_assert_vec4_eq(v1, v2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_zero) { + vec4 v1 = {10.0f, 9.0f, 8.0f, 78.0f}; + vec4 v2 = {1.0f, 2.0f, 3.0f, 4.0f}; + + GLM(vec4_zero)(v1); + GLM(vec4_zero)(v2); + + ASSERTIFY(test_assert_vec4_eq(v1, GLM_VEC4_ZERO)) + ASSERTIFY(test_assert_vec4_eq(v2, GLM_VEC4_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_one) { + vec4 v1 = {10.0f, 9.0f, 8.0f, 78.0f}; + vec4 v2 = {1.0f, 2.0f, 3.0f, 4.0f}; + + GLM(vec4_one)(v1); + GLM(vec4_one)(v2); + + ASSERTIFY(test_assert_vec4_eq(v1, GLM_VEC4_ONE)) + ASSERTIFY(test_assert_vec4_eq(v2, GLM_VEC4_ONE)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_dot) { + vec4 a = {10.0f, 9.0f, 8.0f, 78.0f}; + vec4 b = {1.0f, 2.0f, 3.0f, 4.0f}; + float dot1, dot2; + + dot1 = GLM(vec4_dot)(a, b); + dot2 = a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; + + ASSERT(test_eq(dot1, dot2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_norm2) { + vec4 a = {10.0f, 9.0f, 8.0f, 78.0f}; + float n1, n2; + + n1 = GLM(vec4_norm2)(a); + n2 = a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]; + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_norm) { + vec4 a = {10.0f, 9.0f, 8.0f, 78.0f}; + float n1, n2; + + n1 = GLM(vec4_norm)(a); + n2 = sqrtf(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]); + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_norm_one) { + vec4 a = {-10.0f, 9.0f, -8.0f, 78.0f}; + float n1, n2; + + n1 = GLM(vec4_norm_one)(a); + n2 = fabsf(a[0]) + fabsf(a[1]) + fabsf(a[2]) + fabsf(a[3]); + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_norm_inf) { + vec4 a = {-10.0f, 9.0f, -8.0f, 78.0f}; + float n1, n2; + + n1 = GLM(vec4_norm_inf)(a); + n2 = fabsf(a[0]); + + if (n2 < fabsf(a[1])) + n2 = fabsf(a[1]); + + if (n2 < fabsf(a[2])) + n2 = fabsf(a[2]); + + if (n2 < fabsf(a[3])) + n2 = fabsf(a[3]); + + ASSERT(test_eq(n1, n2)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_add) { + vec4 a = {-10.0f, 9.0f, -8.0f, 56.0f}; + vec4 b = {12.0f, 19.0f, -18.0f, 1.0f}; + vec4 c, d; + + c[0] = a[0] + b[0]; + c[1] = a[1] + b[1]; + c[2] = a[2] + b[2]; + c[3] = a[3] + b[3]; + + GLM(vec4_add)(a, b, d); + + ASSERTIFY(test_assert_vec4_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_adds) { + vec4 a = {-10.0f, 9.0f, -8.0f, 56.0f}; + vec4 c, d; + float s = 7.0f; + + c[0] = a[0] + s; + c[1] = a[1] + s; + c[2] = a[2] + s; + c[3] = a[3] + s; + + GLM(vec4_adds)(a, s, d); + + ASSERTIFY(test_assert_vec4_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_sub) { + vec4 a = {-10.0f, 9.0f, -8.0f, 56.0f}; + vec4 b = {12.0f, 19.0f, -18.0f, 1.0f}; + vec4 c, d; + + c[0] = a[0] - b[0]; + c[1] = a[1] - b[1]; + c[2] = a[2] - b[2]; + c[3] = a[3] - b[3]; + + GLM(vec4_sub)(a, b, d); + + ASSERTIFY(test_assert_vec4_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_subs) { + vec4 a = {-10.0f, 9.0f, -8.0f, 74.0f}; + vec4 c, d; + float s = 7.0f; + + c[0] = a[0] - s; + c[1] = a[1] - s; + c[2] = a[2] - s; + c[3] = a[3] - s; + + GLM(vec4_subs)(a, s, d); + + ASSERTIFY(test_assert_vec4_eq(c, d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_mul) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 56.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 46.0f}, + v3; + + GLM(vec4_mul)(v1, v2, v3); + + ASSERT(test_eq(v1[0] * v2[0], v3[0])) + ASSERT(test_eq(v1[1] * v2[1], v3[1])) + ASSERT(test_eq(v1[2] * v2[2], v3[2])) + ASSERT(test_eq(v1[3] * v2[3], v3[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_scale) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 5.0f}, v2; + float s = 7.0f; + + GLM(vec4_scale)(v1, s, v2); + + ASSERT(test_eq(v1[0] * s, v2[0])) + ASSERT(test_eq(v1[1] * s, v2[1])) + ASSERT(test_eq(v1[2] * s, v2[2])) + ASSERT(test_eq(v1[3] * s, v2[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_scale_as) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 5.0f}, v2; + float s = 7.0f; + float norm; + + GLM(vec4_scale_as)(v1, s, v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2] + v1[3] * v1[3]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + ASSERT(test_eq(v1[3], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + ASSERT(test_eq(v1[3] * norm, v2[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_div) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 40.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 2.0f}, + v3; + + GLM(vec4_div)(v1, v2, v3); + + ASSERT(test_eq(v1[0] / v2[0], v3[0])) + ASSERT(test_eq(v1[1] / v2[1], v3[1])) + ASSERT(test_eq(v1[2] / v2[2], v3[2])) + ASSERT(test_eq(v1[3] / v2[3], v3[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_divs) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 40.0f}, v2; + float s = 7.0f; + + GLM(vec4_divs)(v1, s, v2); + + ASSERT(test_eq(v1[0] / s, v2[0])) + ASSERT(test_eq(v1[1] / s, v2[1])) + ASSERT(test_eq(v1[2] / s, v2[2])) + ASSERT(test_eq(v1[3] / s, v2[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_addadd) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 20.0f}, + v3 = {1.0f, 2.0f, 3.0f, 130.0f}, + v4 = {1.0f, 2.0f, 3.0f, 130.0f}; + + GLM(vec4_addadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] + v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] + v2[1], v4[1])) + ASSERT(test_eq(v3[2] + v1[2] + v2[2], v4[2])) + ASSERT(test_eq(v3[3] + v1[3] + v2[3], v4[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_subadd) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 20.0f}, + v3 = {1.0f, 2.0f, 3.0f, 130.0f}, + v4 = {1.0f, 2.0f, 3.0f, 130.0f}; + + GLM(vec4_subadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] - v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] - v2[1], v4[1])) + ASSERT(test_eq(v3[2] + v1[2] - v2[2], v4[2])) + ASSERT(test_eq(v3[3] + v1[3] - v2[3], v4[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_muladd) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 20.0f}, + v3 = {1.0f, 2.0f, 3.0f, 130.0f}, + v4 = {1.0f, 2.0f, 3.0f, 130.0f}; + + GLM(vec4_muladd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + v1[0] * v2[0], v4[0])) + ASSERT(test_eq(v3[1] + v1[1] * v2[1], v4[1])) + ASSERT(test_eq(v3[2] + v1[2] * v2[2], v4[2])) + ASSERT(test_eq(v3[3] + v1[3] * v2[3], v4[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_muladds) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 20.0f}, + v3 = {-3.0f, 4.0f, -5.0f, 20.0f}; + float s = 9.0f; + + GLM(vec4_muladds)(v1, s, v3); + + ASSERT(test_eq(v2[0] + v1[0] * s, v3[0])) + ASSERT(test_eq(v2[1] + v1[1] * s, v3[1])) + ASSERT(test_eq(v2[2] + v1[2] * s, v3[2])) + ASSERT(test_eq(v2[3] + v1[3] * s, v3[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_maxadd) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 20.0f}, + v3 = {1.0f, 2.0f, 3.0f, 130.0f}, + v4 = {1.0f, 2.0f, 3.0f, 130.0f}; + + GLM(vec4_maxadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + glm_max(v1[0], v2[0]), v4[0])) + ASSERT(test_eq(v3[1] + glm_max(v1[1], v2[1]), v4[1])) + ASSERT(test_eq(v3[2] + glm_max(v1[2], v2[2]), v4[2])) + ASSERT(test_eq(v3[3] + glm_max(v1[3], v2[3]), v4[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_minadd) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 4.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 20.0f}, + v3 = {1.0f, 2.0f, 3.0f, 130.0f}, + v4 = {1.0f, 2.0f, 3.0f, 130.0f}; + + GLM(vec4_minadd)(v1, v2, v4); + + ASSERT(test_eq(v3[0] + glm_min(v1[0], v2[0]), v4[0])) + ASSERT(test_eq(v3[1] + glm_min(v1[1], v2[1]), v4[1])) + ASSERT(test_eq(v3[2] + glm_min(v1[2], v2[2]), v4[2])) + ASSERT(test_eq(v3[3] + glm_min(v1[3], v2[3]), v4[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_negate_to) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 60.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 34.0f}, + v3, v4; + + GLM(vec4_negate_to)(v1, v3); + GLM(vec4_negate_to)(v2, v4); + + ASSERT(test_eq(-v1[0], v3[0])) + ASSERT(test_eq(-v1[1], v3[1])) + ASSERT(test_eq(-v1[2], v3[2])) + ASSERT(test_eq(-v1[3], v3[3])) + + ASSERT(test_eq(-v2[0], v4[0])) + ASSERT(test_eq(-v2[1], v4[1])) + ASSERT(test_eq(-v2[2], v4[2])) + ASSERT(test_eq(-v2[3], v4[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_negate) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 60.0f}, + v2 = {-3.0f, 4.0f, -5.0f, 34.0f}, + v3 = {2.0f, -3.0f, 4.0f, 60.0f}, + v4 = {-3.0f, 4.0f, -5.0f, 34.0f}; + + GLM(vec4_negate)(v1); + GLM(vec4_negate)(v2); + + ASSERT(test_eq(-v1[0], v3[0])) + ASSERT(test_eq(-v1[1], v3[1])) + ASSERT(test_eq(-v1[2], v3[2])) + ASSERT(test_eq(-v1[3], v3[3])) + + ASSERT(test_eq(-v2[0], v4[0])) + ASSERT(test_eq(-v2[1], v4[1])) + ASSERT(test_eq(-v2[2], v4[2])) + ASSERT(test_eq(-v2[3], v4[3])) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_normalize) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 5.0f}, v2 = {2.0f, -3.0f, 4.0f, 5.0f}; + float s = 1.0f; + float norm; + + GLM(vec4_normalize)(v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2] + v1[3] * v1[3]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + ASSERT(test_eq(v1[3], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + ASSERT(test_eq(v1[3] * norm, v2[3])) + + glm_vec4_zero(v1); + GLM(vec4_normalize)(v1); + ASSERTIFY(test_assert_vec4_eq(v1, GLM_VEC4_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_normalize_to) { + vec4 v1 = {2.0f, -3.0f, 4.0f, 5.0f}, v2; + float s = 1.0f; + float norm; + + GLM(vec4_normalize_to)(v1, v2); + + norm = sqrtf(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2] + v1[3] * v1[3]); + if (norm == 0.0f) { + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + ASSERT(test_eq(v1[3], 0.0f)) + + TEST_SUCCESS + } + + norm = s / norm; + + ASSERT(test_eq(v1[0] * norm, v2[0])) + ASSERT(test_eq(v1[1] * norm, v2[1])) + ASSERT(test_eq(v1[2] * norm, v2[2])) + ASSERT(test_eq(v1[3] * norm, v2[3])) + + glm_vec4_zero(v1); + GLM(vec4_normalize_to)(v1, v2); + ASSERTIFY(test_assert_vec4_eq(v2, GLM_VEC4_ZERO)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_distance2) { + vec4 v1 = {30.0f, 0.0f, 0.0f, 0.0f}, + v2 = {0.0f, 0.0f, 0.0f, 0.0f}, + v3 = {3.0f, 10.0f, 120.0f, 140.0f}, + v4 = {0.46f, 4.0f, 14.0f, 10.0f}; + float d; + + d = GLM(vec4_distance2)(v1, v2); + ASSERT(test_eq(d, 30.0f * 30.0f)) + + d = GLM(vec4_distance2)(v3, v4); + ASSERT(test_eq(powf(v3[0] - v4[0], 2.0f) + + powf(v3[1] - v4[1], 2.0f) + + powf(v3[2] - v4[2], 2.0f) + + powf(v3[3] - v4[3], 2.0f), d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_distance) { + vec4 v1 = {30.0f, 0.0f, 0.0f, 0.0f}, + v2 = {0.0f, 0.0f, 0.0f, 0.0f}, + v3 = {3.0f, 10.0f, 120.0f, 140.0f}, + v4 = {0.46f, 4.0f, 14.0f, 10.0f}; + float d; + + d = GLM(vec4_distance)(v1, v2); + ASSERT(test_eq(d, 30.0f)) + + d = GLM(vec4_distance)(v3, v4); + ASSERT(test_eq(sqrtf(powf(v3[0] - v4[0], 2.0f) + + powf(v3[1] - v4[1], 2.0f) + + powf(v3[2] - v4[2], 2.0f) + + powf(v3[3] - v4[3], 2.0f)), d)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_maxv) { + vec4 v1, v2, v3; + vec4 v5 = {-1.456f, -1.456f, 241.456f, 10.0f}; + vec4 v6 = {11.0f, 11.0f, 11.0f, 90.0f}; + vec4 v7 = {78.0f, -78.0f, 7.0f, 5.0f}; + + GLM(vec4_maxv)(v5, v6, v1); + GLM(vec4_maxv)(v5, v7, v2); + GLM(vec4_maxv)(v6, v7, v3); + + ASSERT(test_eq(v1[0], 11.0f)) + ASSERT(test_eq(v1[1], 11.0f)) + ASSERT(test_eq(v1[2], 241.456f)) + ASSERT(test_eq(v1[3], 90.0f)) + + ASSERT(test_eq(v2[0], 78.0f)) + ASSERT(test_eq(v2[1], -1.456f)) + ASSERT(test_eq(v2[2], 241.456f)) + ASSERT(test_eq(v2[3], 10.0f)) + + ASSERT(test_eq(v3[0], 78.0f)) + ASSERT(test_eq(v3[1], 11.0f)) + ASSERT(test_eq(v3[2], 11.0f)) + ASSERT(test_eq(v3[3], 90.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_minv) { + vec4 v1, v2, v3; + vec4 v5 = {-1.456f, -1.456f, 241.456f, 10.0f}; + vec4 v6 = {11.0f, 11.0f, 11.0f, 90.0f}; + vec4 v7 = {78.0f, -78.0f, 7.0f, 5.0f}; + + GLM(vec4_minv)(v5, v6, v1); + GLM(vec4_minv)(v5, v7, v2); + GLM(vec4_minv)(v6, v7, v3); + + ASSERT(test_eq(v1[0], -1.456f)) + ASSERT(test_eq(v1[1], -1.456f)) + ASSERT(test_eq(v1[2], 11.0f)) + ASSERT(test_eq(v1[3], 10.0f)) + + ASSERT(test_eq(v2[0], -1.456f)) + ASSERT(test_eq(v2[1], -78.0f)) + ASSERT(test_eq(v2[2], 7.0f)) + ASSERT(test_eq(v2[3], 5.0f)) + + ASSERT(test_eq(v3[0], 11.0f)) + ASSERT(test_eq(v3[1], -78.0f)) + ASSERT(test_eq(v3[2], 7.0f)) + ASSERT(test_eq(v3[3], 5.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_clamp) { + vec4 v1 = {-1.456f, -11.456f, 31.456f, 67.04f}; + vec4 v2 = {0.110f, 111.0f, 11.0f, 90.0f}; + vec4 v3 = {78.0f, 32.0f, -78.0f, 3.0f}; + + GLM(vec4_clamp)(v1, -1.03f, 30.0f); + GLM(vec4_clamp)(v2, 0.11f, 111.0f); + GLM(vec4_clamp)(v3, -88.0f, 70.0f); + + ASSERT(test_eq(v1[0], -1.03f)) + ASSERT(test_eq(v1[1], -1.03f)) + ASSERT(test_eq(v1[2], 30.0f)) + ASSERT(test_eq(v1[3], 30.0f)) + + ASSERT(test_eq(v2[0], 0.11f)) + ASSERT(test_eq(v2[1], 111.0f)) + ASSERT(test_eq(v2[2], 11.0f)) + ASSERT(test_eq(v2[3], 90.0f)) + + ASSERT(test_eq(v3[0], 70.0f)) + ASSERT(test_eq(v3[1], 32.0f)) + ASSERT(test_eq(v3[2], -78.0f)) + ASSERT(test_eq(v3[3], 3.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_lerp) { + vec4 v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + vec4 v2 = {100.0f, 200.0f, 10.0f, 10.0f}; + vec4 v3; + + GLM(vec4_lerp)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + ASSERT(test_eq(v3[3], 0.0f)) + + GLM(vec4_lerp)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + ASSERT(test_eq(v3[3], 5.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_lerpc) { + vec4 v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + vec4 v2 = {100.0f, 200.0f, 10.0f, 10.0f}; + vec4 v3; + + GLM(vec4_lerpc)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + ASSERT(test_eq(v3[3], 0.0f)) + + GLM(vec4_lerpc)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + ASSERT(test_eq(v3[3], 5.0f)) + + GLM(vec4_lerpc)(v1, v2, -1.75f, v3); + ASSERT(test_eq(v3[0], -100.0f)) + ASSERT(test_eq(v3[1], -200.0f)) + ASSERT(test_eq(v3[2], -10.0f)) + ASSERT(test_eq(v3[3], -10.0f)) + + GLM(vec4_lerpc)(v1, v2, 1.75f, v3); + ASSERT(test_eq(v3[0], 100.0f)) + ASSERT(test_eq(v3[1], 200.0f)) + ASSERT(test_eq(v3[2], 10.0f)) + ASSERT(test_eq(v3[3], 10.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_mix) { + vec4 v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + vec4 v2 = {100.0f, 200.0f, 10.0f, 10.0f}; + vec4 v3; + + GLM(vec4_mix)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + ASSERT(test_eq(v3[3], 0.0f)) + + GLM(vec4_mix)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + ASSERT(test_eq(v3[3], 5.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_mixc) { + vec4 v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + vec4 v2 = {100.0f, 200.0f, 10.0f, 10.0f}; + vec4 v3; + + GLM(vec4_mixc)(v1, v2, 0.5f, v3); + ASSERT(test_eq(v3[0], 0.0f)) + ASSERT(test_eq(v3[1], 0.0f)) + ASSERT(test_eq(v3[2], 0.0f)) + ASSERT(test_eq(v3[3], 0.0f)) + + GLM(vec4_mixc)(v1, v2, 0.75f, v3); + ASSERT(test_eq(v3[0], 50.0f)) + ASSERT(test_eq(v3[1], 100.0f)) + ASSERT(test_eq(v3[2], 5.0f)) + ASSERT(test_eq(v3[3], 5.0f)) + + GLM(vec4_mixc)(v1, v2, -1.75f, v3); + ASSERT(test_eq(v3[0], -100.0f)) + ASSERT(test_eq(v3[1], -200.0f)) + ASSERT(test_eq(v3[2], -10.0f)) + ASSERT(test_eq(v3[3], -10.0f)) + + GLM(vec4_mixc)(v1, v2, 1.75f, v3); + ASSERT(test_eq(v3[0], 100.0f)) + ASSERT(test_eq(v3[1], 200.0f)) + ASSERT(test_eq(v3[2], 10.0f)) + ASSERT(test_eq(v3[3], 10.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_step_uni) { + vec4 v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + vec4 v2; + + GLM(vec4_step_uni)(-2.5f, v1, v2); + ASSERT(test_eq(v2[0], 0.0f)) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(test_eq(v2[2], 0.0f)) + ASSERT(test_eq(v2[3], 0.0f)) + + GLM(vec4_step_uni)(-10.0f, v1, v2); + ASSERT(test_eq(v2[0], 0.0f)) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + GLM(vec4_step_uni)(-1000.0f, v1, v2); + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_step) { + vec4 v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + vec4 s1 = {-100.0f, 0.0f, 10.0f, 10.0f}; + vec4 s2 = {100.0f, -220.0f, -10.0f, -10.0f}; + vec4 s3 = {100.0f, 200.0f, 10.0f, 10.0f}; + vec4 v2; + + GLM(vec4_step)(s1, v1, v2); + ASSERT(test_eq(v2[0], 1.0f)) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(test_eq(v2[2], 0.0f)) + ASSERT(test_eq(v2[3], 0.0f)) + + GLM(vec4_step)(s2, v1, v2); + ASSERT(test_eq(v2[0], 0.0f)) + ASSERT(test_eq(v2[1], 1.0f)) + ASSERT(test_eq(v2[2], 1.0f)) + ASSERT(test_eq(v2[3], 1.0f)) + + GLM(vec4_step)(s3, v1, v2); + ASSERT(test_eq(v2[0], 0.0f)) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(test_eq(v2[2], 0.0f)) + ASSERT(test_eq(v2[3], 0.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_smoothstep_uni) { + vec4 v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + vec4 v2; + + GLM(vec4_smoothstep_uni)(-200.0f, -100.0f, v1, v2); + ASSERT(test_eq_th(v2[0], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[1], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[2], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[3], 1.0f, 1e-5f)) + + GLM(vec4_smoothstep_uni)(-250.0f, -200.0f, v1, v2); + ASSERT(test_eq_th(v2[0], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[1], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[2], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[3], 1.0f, 1e-5f)) + + GLM(vec4_smoothstep_uni)(-200.0f, 200.0f, v1, v2); + ASSERT(v2[0] > 0.0f && v2[0] < 0.25f) + ASSERT(test_eq(v2[1], 0.0f)) + ASSERT(v2[2] > 0.0f && v2[2] < 0.5f) + ASSERT(v2[3] > 0.0f && v2[3] < 0.5f) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_smoothstep) { + vec4 v1 = {-100.0f, -200.0f, -10.0f, -10.0f}; + vec4 e1_0 = {-100.0f, 0.0f, -11.0f, -11.0f}; + vec4 e1_1 = {50.0f, 10.0f, 20.0f, 20.0f}; + vec4 e2_0 = {-180.0f, -300.0f, -93.0f, -93.0f}; + vec4 e2_1 = {100.0f, 120.0f, -10.0f, -10.0f}; + vec4 e3_0 = {-12.0f, 100.0f, 0.0f, 0.0f}; + vec4 e3_1 = {100.0f, 200.0f, 10.0f, 10.0f}; + vec4 v2; + + GLM(vec4_smoothstep)(e1_0, e1_1, v1, v2); + ASSERT(test_eq_th(v2[0], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[1], 0.0f, 1e-5f)) + ASSERT(v2[2] > 0.0f && v2[2] < 0.1f) + ASSERT(v2[3] > 0.0f && v2[3] < 0.1f) + + GLM(vec4_smoothstep)(e2_0, e2_1, v1, v2); + ASSERT(v2[0] > 0.0f && v2[0] < 0.25f) + ASSERT(v2[1] > 0.0f && v2[1] < 0.15f) + ASSERT(test_eq_th(v2[2], 1.0f, 1e-5f)) + ASSERT(test_eq_th(v2[3], 1.0f, 1e-5f)) + + GLM(vec4_smoothstep)(e3_0, e3_1, v1, v2); + ASSERT(test_eq_th(v2[0], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[1], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[2], 0.0f, 1e-5f)) + ASSERT(test_eq_th(v2[3], 0.0f, 1e-5f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_smoothinterp) { + vec4 e1_0 = {-100.0f, 0.0f, -11.0f, -11.0f}; + vec4 e1_1 = {50.0f, 10.0f, 20.0f, 20.0f}; + vec4 e2_0 = {80.0f, -220.0f, -19.0f, -19.0f}; + vec4 e2_1 = {100.0f, -200.0f, -10.0f, -10.0f}; + vec4 e3_0 = {-12.0f, 100.0f, 0.0f, 0.0f}; + vec4 e3_1 = {100.0f, 200.0f, 10.0f, 10.0f}; + vec4 v2; + + GLM(vec4_smoothinterp)(e1_0, e1_1, 0.5f, v2); + ASSERT(v2[0] >= e1_0[0] && v2[0] <= e1_1[0]) + ASSERT(v2[1] >= e1_0[1] && v2[1] <= e1_1[1]) + ASSERT(v2[2] >= e1_0[2] && v2[2] <= e1_1[2]) + ASSERT(v2[3] >= e1_0[3] && v2[3] <= e1_1[3]) + + GLM(vec4_smoothinterp)(e2_0, e2_1, 0.5f, v2); + ASSERT(v2[0] >= e2_0[0] && v2[0] <= e2_1[0]) + ASSERT(v2[1] >= e2_0[1] && v2[1] <= e2_1[1]) + ASSERT(v2[2] >= e2_0[2] && v2[2] <= e2_1[2]) + ASSERT(v2[3] >= e2_0[3] && v2[3] <= e2_1[3]) + + GLM(vec4_smoothinterp)(e3_0, e3_1, 1.0f, v2); + ASSERT(v2[0] >= e3_0[0] && v2[0] <= e3_1[0]) + ASSERT(v2[1] >= e3_0[1] && v2[1] <= e3_1[1]) + ASSERT(v2[2] >= e3_0[2] && v2[2] <= e3_1[2]) + ASSERT(v2[3] >= e3_0[3] && v2[3] <= e3_1[3]) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_smoothinterpc) { + vec4 e1_0 = {-100.0f, 0.0f, -11.0f, -11.0f}; + vec4 e1_1 = {50.0f, 10.0f, 20.0f, 20.0f}; + vec4 e2_0 = {80.0f, -220.0f, -19.0f, -19.0f}; + vec4 e2_1 = {100.0f, -200.0f, -10.0f, -10.0f}; + vec4 e3_0 = {-12.0f, 100.0f, 0.0f, 0.0f}; + vec4 e3_1 = {100.0f, 200.0f, 10.0f, 10.0f}; + vec4 v2; + + GLM(vec4_smoothinterpc)(e1_0, e1_1, -0.5f, v2); + ASSERT(v2[0] >= e1_0[0] && v2[0] <= e1_1[0]) + ASSERT(v2[1] >= e1_0[1] && v2[1] <= e1_1[1]) + ASSERT(v2[2] >= e1_0[2] && v2[2] <= e1_1[2]) + ASSERT(v2[3] >= e1_0[3] && v2[3] <= e1_1[3]) + + GLM(vec4_smoothinterpc)(e2_0, e2_1, 0.5f, v2); + ASSERT(v2[0] >= e2_0[0] && v2[0] <= e2_1[0]) + ASSERT(v2[1] >= e2_0[1] && v2[1] <= e2_1[1]) + ASSERT(v2[2] >= e2_0[2] && v2[2] <= e2_1[2]) + ASSERT(v2[3] >= e2_0[3] && v2[3] <= e2_1[3]) + + GLM(vec4_smoothinterpc)(e3_0, e3_1, 2.0f, v2); + ASSERT(v2[0] >= e3_0[0] && v2[0] <= e3_1[0]) + ASSERT(v2[1] >= e3_0[1] && v2[1] <= e3_1[1]) + ASSERT(v2[2] >= e3_0[2] && v2[2] <= e3_1[2]) + ASSERT(v2[3] >= e3_0[3] && v2[3] <= e3_1[3]) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_cubic) { + vec4 v1 = {125.0f, 25.0f, 5.0f, 1.0f}; + vec4 v2 = {216.0f, 36.0f, 6.0f, 1.0f}; + vec4 v3, v4; + + ASSERT(test_eq(v1[0], v1[2] * v1[2] * v1[2])) + ASSERT(test_eq(v1[1], v1[2] * v1[2])) + ASSERT(test_eq(v1[3], 1.0f)) + + ASSERT(test_eq(v2[0], v2[2] * v2[2] * v2[2])) + ASSERT(test_eq(v2[1], v2[2] * v2[2])) + ASSERT(test_eq(v2[3], 1.0f)) + + GLM(vec4_cubic)(test_rand(), v3); + ASSERT(test_eq(v3[0], v3[2] * v3[2] * v3[2])) + ASSERT(test_eq(v3[1], v3[2] * v3[2])) + ASSERT(test_eq(v3[3], 1.0f)) + + GLM(vec4_cubic)(test_rand(), v4); + ASSERT(test_eq(v4[0], v4[2] * v4[2] * v4[2])) + ASSERT(test_eq(v4[1], v4[2] * v4[2])) + ASSERT(test_eq(v4[3], 1.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_swizzle) { + vec4 v; + + /* ZYX */ + v[0] = 1; + v[1] = 2; + v[2] = 3; + v[3] = 4; + + glm_vec4_swizzle(v, GLM_WZYX, v); + ASSERTIFY(test_assert_vec4_eq(v, (vec4){4, 3, 2, 1})) + + glm_vec4_swizzle(v, GLM_XXXX, v); + ASSERTIFY(test_assert_vec4_eq(v, (vec4){4, 4, 4, 4})) + + v[0] = 1; + v[1] = 2; + v[2] = 3; + v[3] = 4; + + glm_vec4_swizzle(v, GLM_YYYY, v); + ASSERTIFY(test_assert_vec4_eq(v, (vec4){2, 2, 2, 2})) + + v[0] = 1; + v[1] = 2; + v[2] = 3; + v[3] = 4; + + glm_vec4_swizzle(v, GLM_ZZZZ, v); + ASSERTIFY(test_assert_vec4_eq(v, (vec4){3, 3, 3, 3})) + + v[0] = 1; + v[1] = 2; + v[2] = 3; + v[3] = 4; + + glm_vec4_swizzle(v, GLM_WWWW, v); + ASSERTIFY(test_assert_vec4_eq(v, (vec4){4, 4, 4, 4})) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_broadcast) { + vec4 v1, v2, v3; + vec4 v5 = {-1.456f, -1.456f, -1.456f, -1.456f}; + vec4 v6 = {11.0f, 11.0f, 11.0f, 11.0f}; + vec4 v7 = {78.0f, 78.0f, 78.0f, 78.0f}; + + GLM(vec4_broadcast)(-1.456f, v1); + GLM(vec4_broadcast)(11.0f, v2); + GLM(vec4_broadcast)(78.0f, v3); + + ASSERTIFY(test_assert_vec4_eq(v1, v5)) + ASSERTIFY(test_assert_vec4_eq(v2, v6)) + ASSERTIFY(test_assert_vec4_eq(v3, v7)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_fill) { + vec4 v1, v2, v3; + vec4 v5 = {-1.456f, -1.456f, -1.456f, -1.456f}; + vec4 v6 = {11.0f, 11.0f, 11.0f, 11.0f}; + vec4 v7 = {78.0f, 78.0f, 78.0f, 78.0f}; + + GLM(vec4_fill)(v1, -1.456f); + GLM(vec4_fill)(v2, 11.0f); + GLM(vec4_fill)(v3, 78.0f); + + ASSERTIFY(test_assert_vec4_eq(v1, v5)) + ASSERTIFY(test_assert_vec4_eq(v2, v6)) + ASSERTIFY(test_assert_vec4_eq(v3, v7)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_eq) { + vec4 v1, v2, v3; + + GLM(vec4_fill)(v1, -1.456f); + GLM(vec4_fill)(v2, 11.0f); + GLM(vec4_fill)(v3, 78.1f); + + ASSERT(GLM(vec4_eq)(v1, -1.456f)) + ASSERT(GLM(vec4_eq)(v2, 11.0f)) + ASSERT(!GLM(vec4_eq)(v3, 78.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_eq_eps) { + vec4 v1, v2, v3; + + GLM(vec4_fill)(v1, -1.456f); + GLM(vec4_fill)(v2, 11.0f); + GLM(vec4_fill)(v3, 78.1f); + + ASSERT(GLM(vec4_eq_eps)(v1, -1.456f)) + ASSERT(GLM(vec4_eq_eps)(v2, 11.0f)) + ASSERT(!GLM(vec4_eq_eps)(v3, 78.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_eq_all) { + vec4 v1, v2, v3; + vec4 v4 = {2.104f, -3.012f, -4.10f, -4.10f}; + vec4 v5 = {-12.35f, -31.140f, -43.502f, -43.502f}; + + GLM(vec4_fill)(v1, -1.456f); + GLM(vec4_fill)(v2, 11.0f); + GLM(vec4_fill)(v3, 78.0f); + + ASSERT(GLM(vec4_eq_all)(v1)) + ASSERT(GLM(vec4_eq_all)(v2)) + ASSERT(GLM(vec4_eq_all)(v3)) + ASSERT(!GLM(vec4_eq_all)(v4)) + ASSERT(!GLM(vec4_eq_all)(v5)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_eqv) { + vec4 v1, v2, v3, v4, v5; + vec4 v6 = {-1.456f, -1.456f, -1.456f, -1.456f}; + vec4 v7 = {11.0f, 11.0f, 11.0f, 11.0f}; + vec4 v8 = {78.0f, 78.0f, -43.502f, -43.502f}; + + GLM(vec4_fill)(v1, -1.456f); + GLM(vec4_fill)(v2, 11.0f); + GLM(vec4_fill)(v3, 78.0f); + + test_rand_vec4(v4); + test_rand_vec4(v5); + + ASSERT(GLM(vec4_eqv)(v1, v6)) + ASSERT(GLM(vec4_eqv)(v2, v7)) + ASSERT(!GLM(vec4_eqv)(v3, v8)) + ASSERT(!GLM(vec4_eqv)(v4, v5)) + ASSERT(GLM(vec4_eqv)(v5, v5)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_eqv_eps) { + vec4 v1, v2, v3, v4, v5; + vec4 v6 = {-1.456f, -1.456f, -1.456f, -1.456f}; + vec4 v7 = {11.0f, 11.0f, 11.0f, 11.0f}; + vec4 v8 = {78.0f, 78.0f, -43.502f, -43.502f}; + + GLM(vec4_fill)(v1, -1.456f); + GLM(vec4_fill)(v2, 11.0f); + GLM(vec4_fill)(v3, 78.0f); + + test_rand_vec4(v4); + test_rand_vec4(v5); + + ASSERT(GLM(vec4_eqv_eps)(v1, v6)) + ASSERT(GLM(vec4_eqv_eps)(v2, v7)) + ASSERT(!GLM(vec4_eqv_eps)(v3, v8)) + ASSERT(!GLM(vec4_eqv_eps)(v4, v5)) + ASSERT(GLM(vec4_eqv_eps)(v5, v5)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_max) { + vec4 v1 = {2.104f, -3.012f, -4.10f, -4.10f}; + vec4 v2 = {-12.35f, -31.140f, -43.502f, -43.502f}; + vec4 v3 = {INFINITY, 0.0f, 0.0f, 0.0f}; + vec4 v4 = {NAN, INFINITY, 2.0f, 2.0f}; + vec4 v5 = {NAN, -1.0f, -1.0f, -1.0f}; + vec4 v6 = {-1.0f, -11.0f, 11.0f, 11.0f}; + + ASSERT(test_eq(GLM(vec4_max)(v1), 2.104f)) + ASSERT(test_eq(GLM(vec4_max)(v2), -12.35f)) + ASSERT(isinf(GLM(vec4_max)(v3))) + ASSERT(isnan(GLM(vec4_max)(v4))) + ASSERT(isnan(GLM(vec4_max)(v5))) + ASSERT(test_eq(GLM(vec4_max)(v6), 11.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_min) { + vec4 v1 = {2.104f, -3.012f, -4.10f, -4.10f}; + vec4 v2 = {-12.35f, -31.140f, -43.502f, -43.502f}; + vec4 v3 = {INFINITY, 0.0f, 0.0f, 0.0f}; + vec4 v4 = {NAN, INFINITY, 2.0f, 2.0f}; + vec4 v5 = {NAN, -1.0f, -1.0f, -1.0f}; + vec4 v6 = {-1.0f, -11.0f, 11.0f, 11.0f}; + + ASSERT(test_eq(GLM(vec4_min)(v1), -4.10f)) + ASSERT(test_eq(GLM(vec4_min)(v2), -43.502f)) + ASSERT(test_eq(GLM(vec4_min)(v3), 0.0f)) + ASSERT(isnan(GLM(vec4_min)(v4))) + ASSERT(isnan(GLM(vec4_min)(v5))) + ASSERT(test_eq(GLM(vec4_min)(v6), -11.0f)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_isnan) { + vec4 v1 = {2.104f, -3.012f, -4.10f, -4.10f}; + vec4 v2 = {-12.35f, -31.140f, -43.502f, -43.502f}; + vec4 v3 = {INFINITY, 0.0f, 0.0f, 0.0f}; + vec4 v4 = {NAN, INFINITY, 2.0f, 2.0f}; + vec4 v5 = {NAN, -1.0f, -1.0f, -1.0f}; + vec4 v6 = {-1.0f, -1.0f, 11.0f, 11.0f}; + + ASSERT(!GLM(vec4_isnan)(v1)) + ASSERT(!GLM(vec4_isnan)(v2)) + ASSERT(!GLM(vec4_isnan)(v3)) + ASSERT(GLM(vec4_isnan)(v4)) + ASSERT(GLM(vec4_isnan)(v5)) + ASSERT(!GLM(vec4_isnan)(v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_isinf) { + vec4 v1 = {2.104f, -3.012f, -4.10f, -4.10f}; + vec4 v2 = {-12.35f, -31.140f, -43.502f, -43.502f}; + vec4 v3 = {INFINITY, 0.0f, 0.0f, 0.0f}; + vec4 v4 = {NAN, INFINITY, 2.0f, 2.0f}; + vec4 v5 = {NAN, -1.0f, -1.0f, -1.0f}; + vec4 v6 = {-1.0f, -1.0f, 11.0f, 11.0f}; + + ASSERT(!GLM(vec4_isinf)(v1)) + ASSERT(!GLM(vec4_isinf)(v2)) + ASSERT(GLM(vec4_isinf)(v3)) + ASSERT(GLM(vec4_isinf)(v4)) + ASSERT(!GLM(vec4_isinf)(v5)) + ASSERT(!GLM(vec4_isinf)(v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_isvalid) { + vec4 v1 = {2.104f, -3.012f, -4.10f, -4.10f}; + vec4 v2 = {-12.35f, -31.140f, -43.502f, -43.502f}; + vec4 v3 = {INFINITY, 0.0f, 0.0f, 0.0f}; + vec4 v4 = {NAN, INFINITY, 2.0f, 2.0f}; + vec4 v5 = {NAN, -1.0f, -1.0f, -1.0f}; + vec4 v6 = {-1.0f, -1.0f, 11.0f, 11.0f}; + + ASSERT(GLM(vec4_isvalid)(v1)) + ASSERT(GLM(vec4_isvalid)(v2)) + ASSERT(!GLM(vec4_isvalid)(v3)) + ASSERT(!GLM(vec4_isvalid)(v4)) + ASSERT(!GLM(vec4_isvalid)(v5)) + ASSERT(GLM(vec4_isvalid)(v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_sign) { + vec4 v1 = {2.104f, -3.012f, -4.10f, -4.10f}; + vec4 v2 = {-12.35f, -31.140f, -43.502f, -43.502f}; + vec4 v3, v4; + vec4 v5 = {1.0f, -1.0f, -1.0f, -1.0f}; + vec4 v6 = {-1.0f, -1.0f, -1.0f, -1.0f}; + + GLM(vec4_sign)(v1, v3); + GLM(vec4_sign)(v2, v4); + + ASSERTIFY(test_assert_vec4_eq(v3, v5)) + ASSERTIFY(test_assert_vec4_eq(v4, v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_abs) { + vec4 v1 = {2.104f, -3.012f, -4.10f, -4.10f}; + vec4 v2 = {-12.35f, -31.140f, -43.502f, -43.502f}; + vec4 v3, v4; + vec4 v5 = {2.104f, 3.012f, 4.10f, 4.10f}; + vec4 v6 = {12.35f, 31.140f, 43.502f, 43.502f}; + + GLM(vec4_abs)(v1, v3); + GLM(vec4_abs)(v2, v4); + + ASSERTIFY(test_assert_vec4_eq(v3, v5)) + ASSERTIFY(test_assert_vec4_eq(v4, v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_fract) { + vec4 v1 = {2.104f, 3.012f, 4.10f, 4.10f}; + vec4 v2 = {12.35f, 31.140f, 43.502f, 43.502f}; + vec4 v3, v4; + vec4 v5 = {0.104f, 0.012f, 0.10f, 0.10f}; + vec4 v6 = {0.35f, 0.140f, 0.502f, 0.502f}; + + GLM(vec4_fract)(v1, v3); + GLM(vec4_fract)(v2, v4); + + ASSERTIFY(test_assert_vec4_eq(v3, v5)) + ASSERTIFY(test_assert_vec4_eq(v4, v6)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_hadd) { + vec4 v1 = {2.0f, 3.0f, 4.0f, 4.0f}, v2 = {12.0f, 31.0f, 43.0f, 43.0f}; + float r1, r2, r3, r4; + + r1 = GLM(vec4_hadd)(v1); + r2 = GLM(vec4_hadd)(v2); + + r3 = v1[0] + v1[1] + v1[2] + v1[3]; + r4 = v2[0] + v2[1] + v2[2] + v2[3]; + + ASSERT(test_eq(r1, r3)) + ASSERT(test_eq(r2, r4)) + + TEST_SUCCESS +} + +TEST_IMPL(GLM_PREFIX, vec4_sqrt) { + vec4 v1 = {2.0f, 3.0f, 4.0f, 4.0f}, v2 = {12.0f, 31.0f, 43.0f, 43.0f}; + vec4 v3, v4; + + GLM(vec4_sqrt)(v1, v3); + GLM(vec4_sqrt)(v2, v4); + + ASSERT(test_eq(sqrtf(v1[0]), v3[0])) + ASSERT(test_eq(sqrtf(v1[1]), v3[1])) + ASSERT(test_eq(sqrtf(v1[2]), v3[2])) + ASSERT(test_eq(sqrtf(v1[3]), v3[3])) + + ASSERT(test_eq(sqrtf(v2[0]), v4[0])) + ASSERT(test_eq(sqrtf(v2[1]), v4[1])) + ASSERT(test_eq(sqrtf(v2[2]), v4[2])) + ASSERT(test_eq(sqrtf(v2[3]), v4[3])) + + TEST_SUCCESS +} diff --git a/lib/cglm/test/src/tests.c b/lib/cglm/test/src/tests.c new file mode 100644 index 0000000..1505e32 --- /dev/null +++ b/lib/cglm/test/src/tests.c @@ -0,0 +1,63 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* test inline */ +/*---------------------------------------------------------------------------*/ + + +#define GLM_PREFIX glm_ +#define GLM(X) (glm_ ## X) + +#include "test_vec2.h" +#include "test_vec3.h" +#include "test_vec4.h" +#include "test_ivec2.h" +#include "test_ivec3.h" +#include "test_ivec4.h" +#include "test_mat2.h" +#include "test_mat3.h" +#include "test_mat4.h" +#include "test_quat.h" +#include "test_project.h" +#include "test_plane.h" +#include "test_affine.h" +#include "test_affine2d.h" +#include "test_affine_mat.h" +#include "test_ray.h" +#include "test_camera.h" + +#undef GLM +#undef GLM_PREFIX + +/* test pre-compiled */ +/*---------------------------------------------------------------------------*/ + +#define GLM_PREFIX glmc_ +#define GLM(X) (glmc_ ## X) + +#include "test_vec2.h" +#include "test_vec3.h" +#include "test_vec4.h" +#include "test_ivec2.h" +#include "test_ivec3.h" +#include "test_ivec4.h" +#include "test_mat2.h" +#include "test_mat3.h" +#include "test_mat4.h" +#include "test_quat.h" +#include "test_project.h" +#include "test_plane.h" +#include "test_affine.h" +#include "test_affine2d.h" +#include "test_affine_mat.h" +#include "test_ray.h" +#include "test_camera.h" + +#undef GLM +#undef GLM_PREFIX + +/*---------------------------------------------------------------------------*/ diff --git a/lib/cglm/test/tests.h b/lib/cglm/test/tests.h new file mode 100644 index 0000000..361b485 --- /dev/null +++ b/lib/cglm/test/tests.h @@ -0,0 +1,1672 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +#ifndef tests_h +#define tests_h + +#include "include/common.h" + +/* + * To register a test: + * 1. use TEST_DECLARE() to forward declare test + * 2. use TEST_ENTRY() to add test to list + */ + +/* affine mat */ +TEST_DECLARE(glm_mul) +TEST_DECLARE(glm_mul) +TEST_DECLARE(glm_inv_tr) + +TEST_DECLARE(glmc_mul) +TEST_DECLARE(glmc_mul_rot) +TEST_DECLARE(glmc_inv_tr) + +/* affine */ +TEST_DECLARE(glm_translate) +TEST_DECLARE(glm_translate_to) +TEST_DECLARE(glm_translate_x) +TEST_DECLARE(glm_translate_y) +TEST_DECLARE(glm_translate_z) +TEST_DECLARE(glm_translate_make) +TEST_DECLARE(glm_scale_to) +TEST_DECLARE(glm_scale_make) +TEST_DECLARE(glm_scale) +TEST_DECLARE(glm_scale_uni) +TEST_DECLARE(glm_rotate_x) +TEST_DECLARE(glm_rotate_y) +TEST_DECLARE(glm_rotate_z) +TEST_DECLARE(glm_rotate_make) +TEST_DECLARE(glm_rotate) +TEST_DECLARE(glm_rotate_at) +TEST_DECLARE(glm_rotate_atm) +TEST_DECLARE(glm_decompose_scalev) +TEST_DECLARE(glm_uniscaled) +TEST_DECLARE(glm_decompose_rs) +TEST_DECLARE(glm_decompose) + +TEST_DECLARE(glmc_translate) +TEST_DECLARE(glmc_translate_to) +TEST_DECLARE(glmc_translate_x) +TEST_DECLARE(glmc_translate_y) +TEST_DECLARE(glmc_translate_z) +TEST_DECLARE(glmc_translate_make) +TEST_DECLARE(glmc_scale_to) +TEST_DECLARE(glmc_scale_make) +TEST_DECLARE(glmc_scale) +TEST_DECLARE(glmc_scale_uni) +TEST_DECLARE(glmc_rotate_x) +TEST_DECLARE(glmc_rotate_y) +TEST_DECLARE(glmc_rotate_z) +TEST_DECLARE(glmc_rotate_make) +TEST_DECLARE(glmc_rotate) +TEST_DECLARE(glmc_rotate_at) +TEST_DECLARE(glmc_rotate_atm) +TEST_DECLARE(glmc_decompose_scalev) +TEST_DECLARE(glmc_uniscaled) +TEST_DECLARE(glmc_decompose_rs) +TEST_DECLARE(glmc_decompose) + +/* affine 2d */ +TEST_DECLARE(glm_translate2d) +TEST_DECLARE(glm_translate2d_to) +TEST_DECLARE(glm_translate2d_x) +TEST_DECLARE(glm_translate2d_y) +TEST_DECLARE(glm_translate2d_make) +TEST_DECLARE(glm_scale2d_to) +TEST_DECLARE(glm_scale2d_make) +TEST_DECLARE(glm_scale2d) +TEST_DECLARE(glm_scale2d_uni) +TEST_DECLARE(glm_rotate2d_make) +TEST_DECLARE(glm_rotate2d) +TEST_DECLARE(glm_rotate2d_to) + +TEST_DECLARE(glmc_translate2d) +TEST_DECLARE(glmc_translate2d_to) +TEST_DECLARE(glmc_translate2d_x) +TEST_DECLARE(glmc_translate2d_y) +TEST_DECLARE(glmc_translate2d_make) +TEST_DECLARE(glmc_scale2d_to) +TEST_DECLARE(glmc_scale2d_make) +TEST_DECLARE(glmc_scale2d) +TEST_DECLARE(glmc_scale2d_uni) +TEST_DECLARE(glmc_rotate2d_make) +TEST_DECLARE(glmc_rotate2d) +TEST_DECLARE(glmc_rotate2d_to) + +/* mat4 */ +TEST_DECLARE(glm_mat4_ucopy) +TEST_DECLARE(glm_mat4_copy) +TEST_DECLARE(glm_mat4_identity) +TEST_DECLARE(glm_mat4_identity_array) +TEST_DECLARE(glm_mat4_zero) +TEST_DECLARE(glm_mat4_pick3) +TEST_DECLARE(glm_mat4_pick3t) +TEST_DECLARE(glm_mat4_ins3) +TEST_DECLARE(glm_mat4_mul) +TEST_DECLARE(glm_mat4_mulN) +TEST_DECLARE(glm_mat4_mulv) +TEST_DECLARE(glm_mat4_mulv3) +TEST_DECLARE(glm_mat4_trace) +TEST_DECLARE(glm_mat4_trace3) +TEST_DECLARE(glm_mat4_quat) +TEST_DECLARE(glm_mat4_transpose_to) +TEST_DECLARE(glm_mat4_transpose) +TEST_DECLARE(glm_mat4_scale_p) +TEST_DECLARE(glm_mat4_scale) +TEST_DECLARE(glm_mat4_det) +TEST_DECLARE(glm_mat4_inv) +TEST_DECLARE(glm_mat4_inv_fast) +TEST_DECLARE(glm_mat4_inv_precise) +TEST_DECLARE(glm_mat4_swap_col) +TEST_DECLARE(glm_mat4_swap_row) +TEST_DECLARE(glm_mat4_rmc) + +TEST_DECLARE(glmc_mat4_ucopy) +TEST_DECLARE(glmc_mat4_copy) +TEST_DECLARE(glmc_mat4_identity) +TEST_DECLARE(glmc_mat4_identity_array) +TEST_DECLARE(glmc_mat4_zero) +TEST_DECLARE(glmc_mat4_pick3) +TEST_DECLARE(glmc_mat4_pick3t) +TEST_DECLARE(glmc_mat4_ins3) +TEST_DECLARE(glmc_mat4_mul) +TEST_DECLARE(glmc_mat4_mulN) +TEST_DECLARE(glmc_mat4_mulv) +TEST_DECLARE(glmc_mat4_mulv3) +TEST_DECLARE(glmc_mat4_trace) +TEST_DECLARE(glmc_mat4_trace3) +TEST_DECLARE(glmc_mat4_quat) +TEST_DECLARE(glmc_mat4_transpose_to) +TEST_DECLARE(glmc_mat4_transpose) +TEST_DECLARE(glmc_mat4_scale_p) +TEST_DECLARE(glmc_mat4_scale) +TEST_DECLARE(glmc_mat4_det) +TEST_DECLARE(glmc_mat4_inv) +TEST_DECLARE(glmc_mat4_inv_fast) +TEST_DECLARE(glmc_mat4_swap_col) +TEST_DECLARE(glmc_mat4_swap_row) +TEST_DECLARE(glmc_mat4_rmc) + +/* mat3 */ +TEST_DECLARE(glm_mat3_copy) +TEST_DECLARE(glm_mat3_identity) +TEST_DECLARE(glm_mat3_identity_array) +TEST_DECLARE(glm_mat3_zero) +TEST_DECLARE(glm_mat3_mul) +TEST_DECLARE(glm_mat3_mulv) +TEST_DECLARE(glm_mat3_trace) +TEST_DECLARE(glm_mat3_quat) +TEST_DECLARE(glm_mat3_transpose_to) +TEST_DECLARE(glm_mat3_transpose) +TEST_DECLARE(glm_mat3_scale) +TEST_DECLARE(glm_mat3_det) +TEST_DECLARE(glm_mat3_inv) +TEST_DECLARE(glm_mat3_swap_col) +TEST_DECLARE(glm_mat3_swap_row) +TEST_DECLARE(glm_mat3_rmc) + +TEST_DECLARE(glmc_mat3_copy) +TEST_DECLARE(glmc_mat3_identity) +TEST_DECLARE(glmc_mat3_identity_array) +TEST_DECLARE(glmc_mat3_zero) +TEST_DECLARE(glmc_mat3_mul) +TEST_DECLARE(glmc_mat3_mulv) +TEST_DECLARE(glmc_mat3_trace) +TEST_DECLARE(glmc_mat3_quat) +TEST_DECLARE(glmc_mat3_transpose_to) +TEST_DECLARE(glmc_mat3_transpose) +TEST_DECLARE(glmc_mat3_scale) +TEST_DECLARE(glmc_mat3_det) +TEST_DECLARE(glmc_mat3_inv) +TEST_DECLARE(glmc_mat3_swap_col) +TEST_DECLARE(glmc_mat3_swap_row) +TEST_DECLARE(glmc_mat3_rmc) + +TEST_DECLARE(MACRO_GLM_MAT2_IDENTITY_INIT) +TEST_DECLARE(MACRO_GLM_MAT2_ZERO_INIT) +TEST_DECLARE(MACRO_GLM_MAT2_IDENTITY) +TEST_DECLARE(MACRO_GLM_MAT2_ZERO) +TEST_DECLARE(glm_mat2_copy) +TEST_DECLARE(glm_mat2_identity) +TEST_DECLARE(glm_mat2_identity_array) +TEST_DECLARE(glm_mat2_zero) +TEST_DECLARE(glm_mat2_mul) +TEST_DECLARE(glm_mat2_transpose_to) +TEST_DECLARE(glm_mat2_transpose) +TEST_DECLARE(glm_mat2_mulv) +TEST_DECLARE(glm_mat2_trace) +TEST_DECLARE(glm_mat2_scale) +TEST_DECLARE(glm_mat2_det) +TEST_DECLARE(glm_mat2_inv) +TEST_DECLARE(glm_mat2_swap_col) +TEST_DECLARE(glm_mat2_swap_row) +TEST_DECLARE(glm_mat2_rmc) + +TEST_DECLARE(glmc_mat2_copy) +TEST_DECLARE(glmc_mat2_identity) +TEST_DECLARE(glmc_mat2_identity_array) +TEST_DECLARE(glmc_mat2_zero) +TEST_DECLARE(glmc_mat2_mul) +TEST_DECLARE(glmc_mat2_transpose_to) +TEST_DECLARE(glmc_mat2_transpose) +TEST_DECLARE(glmc_mat2_mulv) +TEST_DECLARE(glmc_mat2_trace) +TEST_DECLARE(glmc_mat2_scale) +TEST_DECLARE(glmc_mat2_det) +TEST_DECLARE(glmc_mat2_inv) +TEST_DECLARE(glmc_mat2_swap_col) +TEST_DECLARE(glmc_mat2_swap_row) +TEST_DECLARE(glmc_mat2_rmc) + +/* camera (incl [LR]H cross [NZ]O) */ +TEST_DECLARE(perspective_lh_zo) +TEST_DECLARE(perspective_rh_zo) +TEST_DECLARE(perspective_lh_no) +TEST_DECLARE(perspective_rh_no) +TEST_DECLARE(camera_lookat) +TEST_DECLARE(camera_decomp) + +TEST_DECLARE(glm_frustum) + +TEST_DECLARE(glmc_frustum) + +/* project */ +TEST_DECLARE(glm_unprojecti) +TEST_DECLARE(glm_unproject) +TEST_DECLARE(glm_project) + +TEST_DECLARE(glmc_unprojecti) +TEST_DECLARE(glmc_unproject) +TEST_DECLARE(glmc_project) + +/* plane */ +TEST_DECLARE(glm_plane_normalize) +TEST_DECLARE(glmc_plane_normalize) + +/* utils */ +TEST_DECLARE(clamp) + +/* euler */ +TEST_DECLARE(euler) + +/* ray */ +TEST_DECLARE(glm_ray_triangle) +TEST_DECLARE(glmc_ray_triangle) + +/* quat */ +TEST_DECLARE(MACRO_GLM_QUAT_IDENTITY_INIT) +TEST_DECLARE(MACRO_GLM_QUAT_IDENTITY) + +TEST_DECLARE(glm_quat_identity) +TEST_DECLARE(glm_quat_identity_array) +TEST_DECLARE(glm_quat_init) +TEST_DECLARE(glm_quatv) +TEST_DECLARE(glm_quat) +TEST_DECLARE(glm_quat_copy) +TEST_DECLARE(glm_quat_norm) +TEST_DECLARE(glm_quat_normalize_to) +TEST_DECLARE(glm_quat_normalize) +TEST_DECLARE(glm_quat_dot) +TEST_DECLARE(glm_quat_conjugate) +TEST_DECLARE(glm_quat_inv) +TEST_DECLARE(glm_quat_add) +TEST_DECLARE(glm_quat_sub) +TEST_DECLARE(glm_quat_real) +TEST_DECLARE(glm_quat_imag) +TEST_DECLARE(glm_quat_imagn) +TEST_DECLARE(glm_quat_imaglen) +TEST_DECLARE(glm_quat_angle) +TEST_DECLARE(glm_quat_axis) +TEST_DECLARE(glm_quat_mul) +TEST_DECLARE(glm_quat_mat4) +TEST_DECLARE(glm_quat_mat4t) +TEST_DECLARE(glm_quat_mat3) +TEST_DECLARE(glm_quat_mat3t) +TEST_DECLARE(glm_quat_lerp) +TEST_DECLARE(glm_quat_lerpc) +TEST_DECLARE(glm_quat_nlerp) +TEST_DECLARE(glm_quat_slerp) +TEST_DECLARE(glm_quat_look) +TEST_DECLARE(glm_quat_for) +TEST_DECLARE(glm_quat_forp) +TEST_DECLARE(glm_quat_rotatev) +TEST_DECLARE(glm_quat_rotate) +TEST_DECLARE(glm_quat_rotate_at) +TEST_DECLARE(glm_quat_rotate_atm) +TEST_DECLARE(glm_quat_from_vecs) + +TEST_DECLARE(glmc_quat_identity) +TEST_DECLARE(glmc_quat_identity_array) +TEST_DECLARE(glmc_quat_init) +TEST_DECLARE(glmc_quatv) +TEST_DECLARE(glmc_quat) +TEST_DECLARE(glmc_quat_copy) +TEST_DECLARE(glmc_quat_norm) +TEST_DECLARE(glmc_quat_normalize_to) +TEST_DECLARE(glmc_quat_normalize) +TEST_DECLARE(glmc_quat_dot) +TEST_DECLARE(glmc_quat_conjugate) +TEST_DECLARE(glmc_quat_inv) +TEST_DECLARE(glmc_quat_add) +TEST_DECLARE(glmc_quat_sub) +TEST_DECLARE(glmc_quat_real) +TEST_DECLARE(glmc_quat_imag) +TEST_DECLARE(glmc_quat_imagn) +TEST_DECLARE(glmc_quat_imaglen) +TEST_DECLARE(glmc_quat_angle) +TEST_DECLARE(glmc_quat_axis) +TEST_DECLARE(glmc_quat_mul) +TEST_DECLARE(glmc_quat_mat4) +TEST_DECLARE(glmc_quat_mat4t) +TEST_DECLARE(glmc_quat_mat3) +TEST_DECLARE(glmc_quat_mat3t) +TEST_DECLARE(glmc_quat_lerp) +TEST_DECLARE(glmc_quat_lerpc) +TEST_DECLARE(glmc_quat_nlerp) +TEST_DECLARE(glmc_quat_slerp) +TEST_DECLARE(glmc_quat_look) +TEST_DECLARE(glmc_quat_for) +TEST_DECLARE(glmc_quat_forp) +TEST_DECLARE(glmc_quat_rotatev) +TEST_DECLARE(glmc_quat_rotate) +TEST_DECLARE(glmc_quat_rotate_at) +TEST_DECLARE(glmc_quat_rotate_atm) +TEST_DECLARE(glmc_quat_from_vecs) + +/* bezier */ +TEST_DECLARE(bezier) + +/* vec2 */ +TEST_DECLARE(MACRO_GLM_VEC2_ONE_INIT) +TEST_DECLARE(MACRO_GLM_VEC2_ZERO_INIT) +TEST_DECLARE(MACRO_GLM_VEC2_ONE) +TEST_DECLARE(MACRO_GLM_VEC2_ZERO) + +TEST_DECLARE(glm_vec2) +TEST_DECLARE(glm_vec2_copy) +TEST_DECLARE(glm_vec2_zero) +TEST_DECLARE(glm_vec2_one) +TEST_DECLARE(glm_vec2_dot) +TEST_DECLARE(glm_vec2_cross) +TEST_DECLARE(glm_vec2_norm2) +TEST_DECLARE(glm_vec2_norm) +TEST_DECLARE(glm_vec2_add) +TEST_DECLARE(glm_vec2_adds) +TEST_DECLARE(glm_vec2_sub) +TEST_DECLARE(glm_vec2_subs) +TEST_DECLARE(glm_vec2_mul) +TEST_DECLARE(glm_vec2_scale) +TEST_DECLARE(glm_vec2_scale_as) +TEST_DECLARE(glm_vec2_div) +TEST_DECLARE(glm_vec2_divs) +TEST_DECLARE(glm_vec2_addadd) +TEST_DECLARE(glm_vec2_subadd) +TEST_DECLARE(glm_vec2_muladd) +TEST_DECLARE(glm_vec2_muladds) +TEST_DECLARE(glm_vec2_maxadd) +TEST_DECLARE(glm_vec2_minadd) +TEST_DECLARE(glm_vec2_negate_to) +TEST_DECLARE(glm_vec2_negate) +TEST_DECLARE(glm_vec2_normalize) +TEST_DECLARE(glm_vec2_normalize_to) +TEST_DECLARE(glm_vec2_rotate) +TEST_DECLARE(glm_vec2_distance2) +TEST_DECLARE(glm_vec2_distance) +TEST_DECLARE(glm_vec2_maxv) +TEST_DECLARE(glm_vec2_minv) +TEST_DECLARE(glm_vec2_clamp) +TEST_DECLARE(glm_vec2_lerp) +TEST_DECLARE(glm_vec2_complex_mul) +TEST_DECLARE(glm_vec2_complex_div) + +TEST_DECLARE(glmc_vec2) +TEST_DECLARE(glmc_vec2_copy) +TEST_DECLARE(glmc_vec2_zero) +TEST_DECLARE(glmc_vec2_one) +TEST_DECLARE(glmc_vec2_dot) +TEST_DECLARE(glmc_vec2_cross) +TEST_DECLARE(glmc_vec2_norm2) +TEST_DECLARE(glmc_vec2_norm) +TEST_DECLARE(glmc_vec2_add) +TEST_DECLARE(glmc_vec2_adds) +TEST_DECLARE(glmc_vec2_sub) +TEST_DECLARE(glmc_vec2_subs) +TEST_DECLARE(glmc_vec2_mul) +TEST_DECLARE(glmc_vec2_scale) +TEST_DECLARE(glmc_vec2_scale_as) +TEST_DECLARE(glmc_vec2_div) +TEST_DECLARE(glmc_vec2_divs) +TEST_DECLARE(glmc_vec2_addadd) +TEST_DECLARE(glmc_vec2_subadd) +TEST_DECLARE(glmc_vec2_muladd) +TEST_DECLARE(glmc_vec2_muladds) +TEST_DECLARE(glmc_vec2_maxadd) +TEST_DECLARE(glmc_vec2_minadd) +TEST_DECLARE(glmc_vec2_negate_to) +TEST_DECLARE(glmc_vec2_negate) +TEST_DECLARE(glmc_vec2_normalize) +TEST_DECLARE(glmc_vec2_normalize_to) +TEST_DECLARE(glmc_vec2_rotate) +TEST_DECLARE(glmc_vec2_distance2) +TEST_DECLARE(glmc_vec2_distance) +TEST_DECLARE(glmc_vec2_maxv) +TEST_DECLARE(glmc_vec2_minv) +TEST_DECLARE(glmc_vec2_clamp) +TEST_DECLARE(glmc_vec2_lerp) +TEST_DECLARE(glmc_vec2_complex_mul) +TEST_DECLARE(glmc_vec2_complex_div) + +/* vec3 */ +TEST_DECLARE(MACRO_GLM_VEC3_ONE_INIT) +TEST_DECLARE(MACRO_GLM_VEC3_ZERO_INIT) +TEST_DECLARE(MACRO_GLM_VEC3_ONE) +TEST_DECLARE(MACRO_GLM_VEC3_ZERO) +TEST_DECLARE(MACRO_GLM_YUP) +TEST_DECLARE(MACRO_GLM_ZUP) +TEST_DECLARE(MACRO_GLM_XUP) +TEST_DECLARE(MACRO_GLM_FORWARD_RH) +TEST_DECLARE(MACRO_GLM_SHUFFLE3) +TEST_DECLARE(MACRO_GLM_XXX) +TEST_DECLARE(MACRO_GLM_YYY) +TEST_DECLARE(MACRO_GLM_ZZZ) +TEST_DECLARE(MACRO_GLM_ZYX) + +TEST_DECLARE(MACRO_glm_vec3_dup) +TEST_DECLARE(MACRO_glm_vec3_flipsign) +TEST_DECLARE(MACRO_glm_vec3_flipsign_to) +TEST_DECLARE(MACRO_glm_vec3_inv) +TEST_DECLARE(MACRO_glm_vec3_inv_to) +TEST_DECLARE(MACRO_glm_vec3_mulv) + +TEST_DECLARE(glm_vec3) +TEST_DECLARE(glm_vec3_copy) +TEST_DECLARE(glm_vec3_zero) +TEST_DECLARE(glm_vec3_one) +TEST_DECLARE(glm_vec3_dot) +TEST_DECLARE(glm_dot) +TEST_DECLARE(glm_vec3_norm2) +TEST_DECLARE(glm_vec3_norm) +TEST_DECLARE(glm_vec3_norm_one) +TEST_DECLARE(glm_vec3_norm_inf) +TEST_DECLARE(glm_vec3_add) +TEST_DECLARE(glm_vec3_adds) +TEST_DECLARE(glm_vec3_sub) +TEST_DECLARE(glm_vec3_subs) +TEST_DECLARE(glm_vec3_mul) +TEST_DECLARE(glm_vec3_scale) +TEST_DECLARE(glm_vec3_scale_as) +TEST_DECLARE(glm_vec3_div) +TEST_DECLARE(glm_vec3_divs) +TEST_DECLARE(glm_vec3_addadd) +TEST_DECLARE(glm_vec3_subadd) +TEST_DECLARE(glm_vec3_muladd) +TEST_DECLARE(glm_vec3_muladds) +TEST_DECLARE(glm_vec3_maxadd) +TEST_DECLARE(glm_vec3_minadd) +TEST_DECLARE(glm_vec3_negate_to) +TEST_DECLARE(glm_vec3_negate) +TEST_DECLARE(glm_vec3_normalize) +TEST_DECLARE(glm_vec3_normalize_to) +TEST_DECLARE(glm_normalize) +TEST_DECLARE(glm_normalize_to) +TEST_DECLARE(glm_vec3_cross) +TEST_DECLARE(glm_vec3_crossn) +TEST_DECLARE(glm_cross) +TEST_DECLARE(glm_vec3_angle) +TEST_DECLARE(glm_vec3_rotate) +TEST_DECLARE(glm_vec3_rotate_m4) +TEST_DECLARE(glm_vec3_rotate_m3) +TEST_DECLARE(glm_vec3_proj) +TEST_DECLARE(glm_vec3_center) +TEST_DECLARE(glm_vec3_distance2) +TEST_DECLARE(glm_vec3_distance) +TEST_DECLARE(glm_vec3_maxv) +TEST_DECLARE(glm_vec3_minv) +TEST_DECLARE(glm_vec3_ortho) +TEST_DECLARE(glm_vec3_clamp) +TEST_DECLARE(glm_vec3_mix) +TEST_DECLARE(glm_vec3_mixc) +TEST_DECLARE(glm_vec3_step_uni) +TEST_DECLARE(glm_vec3_step) +TEST_DECLARE(glm_vec3_smoothstep_uni) +TEST_DECLARE(glm_vec3_smoothstep) +TEST_DECLARE(glm_vec3_smoothinterp) +TEST_DECLARE(glm_vec3_smoothinterpc) +TEST_DECLARE(glm_vec3_swizzle) +TEST_DECLARE(glm_vec3_broadcast) +TEST_DECLARE(glm_vec3_fill) +TEST_DECLARE(glm_vec3_eq) +TEST_DECLARE(glm_vec3_eq_eps) +TEST_DECLARE(glm_vec3_eq_all) +TEST_DECLARE(glm_vec3_eqv) +TEST_DECLARE(glm_vec3_eqv_eps) +TEST_DECLARE(glm_vec3_max) +TEST_DECLARE(glm_vec3_min) +TEST_DECLARE(glm_vec3_isnan) +TEST_DECLARE(glm_vec3_isinf) +TEST_DECLARE(glm_vec3_isvalid) +TEST_DECLARE(glm_vec3_sign) +TEST_DECLARE(glm_vec3_abs) +TEST_DECLARE(glm_vec3_fract) +TEST_DECLARE(glm_vec3_hadd) +TEST_DECLARE(glm_vec3_sqrt) + +TEST_DECLARE(glmc_vec3) +TEST_DECLARE(glmc_vec3_copy) +TEST_DECLARE(glmc_vec3_zero) +TEST_DECLARE(glmc_vec3_one) +TEST_DECLARE(glmc_vec3_dot) +TEST_DECLARE(glmc_vec3_norm2) +TEST_DECLARE(glmc_vec3_norm) +TEST_DECLARE(glmc_vec3_norm_one) +TEST_DECLARE(glmc_vec3_norm_inf) +TEST_DECLARE(glmc_vec3_add) +TEST_DECLARE(glmc_vec3_adds) +TEST_DECLARE(glmc_vec3_sub) +TEST_DECLARE(glmc_vec3_subs) +TEST_DECLARE(glmc_vec3_mul) +TEST_DECLARE(glmc_vec3_scale) +TEST_DECLARE(glmc_vec3_scale_as) +TEST_DECLARE(glmc_vec3_div) +TEST_DECLARE(glmc_vec3_divs) +TEST_DECLARE(glmc_vec3_addadd) +TEST_DECLARE(glmc_vec3_subadd) +TEST_DECLARE(glmc_vec3_muladd) +TEST_DECLARE(glmc_vec3_muladds) +TEST_DECLARE(glmc_vec3_maxadd) +TEST_DECLARE(glmc_vec3_minadd) +TEST_DECLARE(glmc_vec3_negate_to) +TEST_DECLARE(glmc_vec3_negate) +TEST_DECLARE(glmc_vec3_normalize) +TEST_DECLARE(glmc_vec3_normalize_to) +TEST_DECLARE(glmc_vec3_cross) +TEST_DECLARE(glmc_vec3_crossn) +TEST_DECLARE(glmc_vec3_angle) +TEST_DECLARE(glmc_vec3_rotate) +TEST_DECLARE(glmc_vec3_rotate_m4) +TEST_DECLARE(glmc_vec3_rotate_m3) +TEST_DECLARE(glmc_vec3_proj) +TEST_DECLARE(glmc_vec3_center) +TEST_DECLARE(glmc_vec3_distance2) +TEST_DECLARE(glmc_vec3_distance) +TEST_DECLARE(glmc_vec3_maxv) +TEST_DECLARE(glmc_vec3_minv) +TEST_DECLARE(glmc_vec3_ortho) +TEST_DECLARE(glmc_vec3_clamp) +TEST_DECLARE(glmc_vec3_mix) +TEST_DECLARE(glmc_vec3_mixc) +TEST_DECLARE(glmc_vec3_step_uni) +TEST_DECLARE(glmc_vec3_step) +TEST_DECLARE(glmc_vec3_smoothstep_uni) +TEST_DECLARE(glmc_vec3_smoothstep) +TEST_DECLARE(glmc_vec3_smoothinterp) +TEST_DECLARE(glmc_vec3_smoothinterpc) +TEST_DECLARE(glmc_vec3_swizzle) +TEST_DECLARE(glmc_vec3_broadcast) +TEST_DECLARE(glmc_vec3_fill) +TEST_DECLARE(glmc_vec3_eq) +TEST_DECLARE(glmc_vec3_eq_eps) +TEST_DECLARE(glmc_vec3_eq_all) +TEST_DECLARE(glmc_vec3_eqv) +TEST_DECLARE(glmc_vec3_eqv_eps) +TEST_DECLARE(glmc_vec3_max) +TEST_DECLARE(glmc_vec3_min) +TEST_DECLARE(glmc_vec3_isnan) +TEST_DECLARE(glmc_vec3_isinf) +TEST_DECLARE(glmc_vec3_isvalid) +TEST_DECLARE(glmc_vec3_sign) +TEST_DECLARE(glmc_vec3_abs) +TEST_DECLARE(glmc_vec3_fract) +TEST_DECLARE(glmc_vec3_hadd) +TEST_DECLARE(glmc_vec3_sqrt) + +/* vec4 */ +TEST_DECLARE(MACRO_GLM_VEC4_ONE_INIT) +TEST_DECLARE(MACRO_GLM_VEC4_ZERO_INIT) +TEST_DECLARE(MACRO_GLM_VEC4_ONE) +TEST_DECLARE(MACRO_GLM_VEC4_ZERO) +TEST_DECLARE(MACRO_GLM_XXXX) +TEST_DECLARE(MACRO_GLM_YYYY) +TEST_DECLARE(MACRO_GLM_ZZZZ) +TEST_DECLARE(MACRO_GLM_WZYX) +TEST_DECLARE(MACRO_glm_vec4_dup) +TEST_DECLARE(MACRO_glm_vec4_flipsign) +TEST_DECLARE(MACRO_glm_vec4_flipsign_to) +TEST_DECLARE(MACRO_glm_vec4_inv) +TEST_DECLARE(MACRO_glm_vec4_inv_to) +TEST_DECLARE(MACRO_glm_vec4_mulv) + +TEST_DECLARE(glm_vec4) +TEST_DECLARE(glm_vec4_copy3) +TEST_DECLARE(glm_vec4_copy) +TEST_DECLARE(glm_vec4_ucopy) +TEST_DECLARE(glm_vec4_zero) +TEST_DECLARE(glm_vec4_one) +TEST_DECLARE(glm_vec4_dot) +TEST_DECLARE(glm_vec4_norm2) +TEST_DECLARE(glm_vec4_norm) +TEST_DECLARE(glm_vec4_norm_one) +TEST_DECLARE(glm_vec4_norm_inf) +TEST_DECLARE(glm_vec4_add) +TEST_DECLARE(glm_vec4_adds) +TEST_DECLARE(glm_vec4_sub) +TEST_DECLARE(glm_vec4_subs) +TEST_DECLARE(glm_vec4_mul) +TEST_DECLARE(glm_vec4_scale) +TEST_DECLARE(glm_vec4_scale_as) +TEST_DECLARE(glm_vec4_div) +TEST_DECLARE(glm_vec4_divs) +TEST_DECLARE(glm_vec4_addadd) +TEST_DECLARE(glm_vec4_subadd) +TEST_DECLARE(glm_vec4_muladd) +TEST_DECLARE(glm_vec4_muladds) +TEST_DECLARE(glm_vec4_maxadd) +TEST_DECLARE(glm_vec4_minadd) +TEST_DECLARE(glm_vec4_negate_to) +TEST_DECLARE(glm_vec4_negate) +TEST_DECLARE(glm_vec4_normalize) +TEST_DECLARE(glm_vec4_normalize_to) +TEST_DECLARE(glm_vec4_distance2) +TEST_DECLARE(glm_vec4_distance) +TEST_DECLARE(glm_vec4_maxv) +TEST_DECLARE(glm_vec4_minv) +TEST_DECLARE(glm_vec4_clamp) +TEST_DECLARE(glm_vec4_lerp) +TEST_DECLARE(glm_vec4_lerpc) +TEST_DECLARE(glm_vec4_mix) +TEST_DECLARE(glm_vec4_mixc) +TEST_DECLARE(glm_vec4_step_uni) +TEST_DECLARE(glm_vec4_step) +TEST_DECLARE(glm_vec4_smoothstep_uni) +TEST_DECLARE(glm_vec4_smoothstep) +TEST_DECLARE(glm_vec4_smoothinterp) +TEST_DECLARE(glm_vec4_smoothinterpc) +TEST_DECLARE(glm_vec4_cubic) +TEST_DECLARE(glm_vec4_swizzle) +TEST_DECLARE(glm_vec4_broadcast) +TEST_DECLARE(glm_vec4_fill) +TEST_DECLARE(glm_vec4_eq) +TEST_DECLARE(glm_vec4_eq_eps) +TEST_DECLARE(glm_vec4_eq_all) +TEST_DECLARE(glm_vec4_eqv) +TEST_DECLARE(glm_vec4_eqv_eps) +TEST_DECLARE(glm_vec4_max) +TEST_DECLARE(glm_vec4_min) +TEST_DECLARE(glm_vec4_isnan) +TEST_DECLARE(glm_vec4_isinf) +TEST_DECLARE(glm_vec4_isvalid) +TEST_DECLARE(glm_vec4_sign) +TEST_DECLARE(glm_vec4_abs) +TEST_DECLARE(glm_vec4_fract) +TEST_DECLARE(glm_vec4_hadd) +TEST_DECLARE(glm_vec4_sqrt) + +TEST_DECLARE(glmc_vec4) +TEST_DECLARE(glmc_vec4_copy3) +TEST_DECLARE(glmc_vec4_copy) +TEST_DECLARE(glmc_vec4_ucopy) +TEST_DECLARE(glmc_vec4_zero) +TEST_DECLARE(glmc_vec4_one) +TEST_DECLARE(glmc_vec4_dot) +TEST_DECLARE(glmc_vec4_norm2) +TEST_DECLARE(glmc_vec4_norm) +TEST_DECLARE(glmc_vec4_norm_one) +TEST_DECLARE(glmc_vec4_norm_inf) +TEST_DECLARE(glmc_vec4_add) +TEST_DECLARE(glmc_vec4_adds) +TEST_DECLARE(glmc_vec4_sub) +TEST_DECLARE(glmc_vec4_subs) +TEST_DECLARE(glmc_vec4_mul) +TEST_DECLARE(glmc_vec4_scale) +TEST_DECLARE(glmc_vec4_scale_as) +TEST_DECLARE(glmc_vec4_div) +TEST_DECLARE(glmc_vec4_divs) +TEST_DECLARE(glmc_vec4_addadd) +TEST_DECLARE(glmc_vec4_subadd) +TEST_DECLARE(glmc_vec4_muladd) +TEST_DECLARE(glmc_vec4_muladds) +TEST_DECLARE(glmc_vec4_maxadd) +TEST_DECLARE(glmc_vec4_minadd) +TEST_DECLARE(glmc_vec4_negate_to) +TEST_DECLARE(glmc_vec4_negate) +TEST_DECLARE(glmc_vec4_normalize) +TEST_DECLARE(glmc_vec4_normalize_to) +TEST_DECLARE(glmc_vec4_distance2) +TEST_DECLARE(glmc_vec4_distance) +TEST_DECLARE(glmc_vec4_maxv) +TEST_DECLARE(glmc_vec4_minv) +TEST_DECLARE(glmc_vec4_clamp) +TEST_DECLARE(glmc_vec4_lerp) +TEST_DECLARE(glmc_vec4_lerpc) +TEST_DECLARE(glmc_vec4_mix) +TEST_DECLARE(glmc_vec4_mixc) +TEST_DECLARE(glmc_vec4_step_uni) +TEST_DECLARE(glmc_vec4_step) +TEST_DECLARE(glmc_vec4_smoothstep_uni) +TEST_DECLARE(glmc_vec4_smoothstep) +TEST_DECLARE(glmc_vec4_smoothinterp) +TEST_DECLARE(glmc_vec4_smoothinterpc) +TEST_DECLARE(glmc_vec4_cubic) +TEST_DECLARE(glmc_vec4_swizzle) +TEST_DECLARE(glmc_vec4_broadcast) +TEST_DECLARE(glmc_vec4_fill) +TEST_DECLARE(glmc_vec4_eq) +TEST_DECLARE(glmc_vec4_eq_eps) +TEST_DECLARE(glmc_vec4_eq_all) +TEST_DECLARE(glmc_vec4_eqv) +TEST_DECLARE(glmc_vec4_eqv_eps) +TEST_DECLARE(glmc_vec4_max) +TEST_DECLARE(glmc_vec4_min) +TEST_DECLARE(glmc_vec4_isnan) +TEST_DECLARE(glmc_vec4_isinf) +TEST_DECLARE(glmc_vec4_isvalid) +TEST_DECLARE(glmc_vec4_sign) +TEST_DECLARE(glmc_vec4_abs) +TEST_DECLARE(glmc_vec4_fract) +TEST_DECLARE(glmc_vec4_hadd) +TEST_DECLARE(glmc_vec4_sqrt) + +/* ivec2 */ +TEST_DECLARE(glm_ivec2) +TEST_DECLARE(glm_ivec2_copy) +TEST_DECLARE(glm_ivec2_zero) +TEST_DECLARE(glm_ivec2_one) +TEST_DECLARE(glm_ivec2_add) +TEST_DECLARE(glm_ivec2_adds) +TEST_DECLARE(glm_ivec2_sub) +TEST_DECLARE(glm_ivec2_subs) +TEST_DECLARE(glm_ivec2_mul) +TEST_DECLARE(glm_ivec2_scale) +TEST_DECLARE(glm_ivec2_distance2) +TEST_DECLARE(glm_ivec2_distance) +TEST_DECLARE(glm_ivec2_maxv) +TEST_DECLARE(glm_ivec2_minv) +TEST_DECLARE(glm_ivec2_clamp) + +TEST_DECLARE(glmc_ivec2) +TEST_DECLARE(glmc_ivec2_copy) +TEST_DECLARE(glmc_ivec2_zero) +TEST_DECLARE(glmc_ivec2_one) +TEST_DECLARE(glmc_ivec2_add) +TEST_DECLARE(glmc_ivec2_adds) +TEST_DECLARE(glmc_ivec2_sub) +TEST_DECLARE(glmc_ivec2_subs) +TEST_DECLARE(glmc_ivec2_mul) +TEST_DECLARE(glmc_ivec2_scale) +TEST_DECLARE(glmc_ivec2_distance2) +TEST_DECLARE(glmc_ivec2_distance) +TEST_DECLARE(glmc_ivec2_maxv) +TEST_DECLARE(glmc_ivec2_minv) +TEST_DECLARE(glmc_ivec2_clamp) + +/* ivec3 */ +TEST_DECLARE(glm_ivec3) +TEST_DECLARE(glm_ivec3_copy) +TEST_DECLARE(glm_ivec3_zero) +TEST_DECLARE(glm_ivec3_one) +TEST_DECLARE(glm_ivec3_add) +TEST_DECLARE(glm_ivec3_adds) +TEST_DECLARE(glm_ivec3_sub) +TEST_DECLARE(glm_ivec3_subs) +TEST_DECLARE(glm_ivec3_mul) +TEST_DECLARE(glm_ivec3_scale) +TEST_DECLARE(glm_ivec3_distance2) +TEST_DECLARE(glm_ivec3_distance) +TEST_DECLARE(glm_ivec3_maxv) +TEST_DECLARE(glm_ivec3_minv) +TEST_DECLARE(glm_ivec3_clamp) + +TEST_DECLARE(glmc_ivec3) +TEST_DECLARE(glmc_ivec3_copy) +TEST_DECLARE(glmc_ivec3_zero) +TEST_DECLARE(glmc_ivec3_one) +TEST_DECLARE(glmc_ivec3_add) +TEST_DECLARE(glmc_ivec3_adds) +TEST_DECLARE(glmc_ivec3_sub) +TEST_DECLARE(glmc_ivec3_subs) +TEST_DECLARE(glmc_ivec3_mul) +TEST_DECLARE(glmc_ivec3_scale) +TEST_DECLARE(glmc_ivec3_distance2) +TEST_DECLARE(glmc_ivec3_distance) +TEST_DECLARE(glmc_ivec3_maxv) +TEST_DECLARE(glmc_ivec3_minv) +TEST_DECLARE(glmc_ivec3_clamp) + +/* ivec4 */ +TEST_DECLARE(glm_ivec4) +TEST_DECLARE(glm_ivec4_copy) +TEST_DECLARE(glm_ivec4_zero) +TEST_DECLARE(glm_ivec4_one) +TEST_DECLARE(glm_ivec4_add) +TEST_DECLARE(glm_ivec4_adds) +TEST_DECLARE(glm_ivec4_sub) +TEST_DECLARE(glm_ivec4_subs) +TEST_DECLARE(glm_ivec4_mul) +TEST_DECLARE(glm_ivec4_scale) +TEST_DECLARE(glm_ivec4_distance2) +TEST_DECLARE(glm_ivec4_distance) +TEST_DECLARE(glm_ivec4_maxv) +TEST_DECLARE(glm_ivec4_minv) +TEST_DECLARE(glm_ivec4_clamp) + +TEST_DECLARE(glmc_ivec4) +TEST_DECLARE(glmc_ivec4_copy) +TEST_DECLARE(glmc_ivec4_zero) +TEST_DECLARE(glmc_ivec4_one) +TEST_DECLARE(glmc_ivec4_add) +TEST_DECLARE(glmc_ivec4_adds) +TEST_DECLARE(glmc_ivec4_sub) +TEST_DECLARE(glmc_ivec4_subs) +TEST_DECLARE(glmc_ivec4_mul) +TEST_DECLARE(glmc_ivec4_scale) +TEST_DECLARE(glmc_ivec4_distance2) +TEST_DECLARE(glmc_ivec4_distance) +TEST_DECLARE(glmc_ivec4_maxv) +TEST_DECLARE(glmc_ivec4_minv) +TEST_DECLARE(glmc_ivec4_clamp) + +/* structs */ +TEST_DECLARE(mat3s_identity_init) +TEST_DECLARE(mat3s_zero_init) +TEST_DECLARE(mat4s_identity_init) +TEST_DECLARE(mat4s_zero_init) +TEST_DECLARE(quats_zero_init) +TEST_DECLARE(vec3s_one_init) +TEST_DECLARE(vec3s_zero_init) +TEST_DECLARE(vec4s_black_init) +TEST_DECLARE(vec4s_one_init) +TEST_DECLARE(vec4s_zero_init) + +/*****************************************************************************/ + +TEST_LIST { + /* affine mat */ + TEST_ENTRY(glm_mul) + TEST_ENTRY(glm_mul) + TEST_ENTRY(glm_inv_tr) + + TEST_ENTRY(glmc_mul) + TEST_ENTRY(glmc_mul_rot) + TEST_ENTRY(glmc_inv_tr) + + /* affine */ + TEST_ENTRY(glm_translate) + TEST_ENTRY(glm_translate_to) + TEST_ENTRY(glm_translate_x) + TEST_ENTRY(glm_translate_y) + TEST_ENTRY(glm_translate_z) + TEST_ENTRY(glm_translate_make) + TEST_ENTRY(glm_scale_to) + TEST_ENTRY(glm_scale_make) + TEST_ENTRY(glm_scale) + TEST_ENTRY(glm_scale_uni) + TEST_ENTRY(glm_rotate_x) + TEST_ENTRY(glm_rotate_y) + TEST_ENTRY(glm_rotate_z) + TEST_ENTRY(glm_rotate_make) + TEST_ENTRY(glm_rotate) + TEST_ENTRY(glm_rotate_at) + TEST_ENTRY(glm_rotate_atm) + TEST_ENTRY(glm_decompose_scalev) + TEST_ENTRY(glm_uniscaled) + TEST_ENTRY(glm_decompose_rs) + TEST_ENTRY(glm_decompose) + + TEST_ENTRY(glmc_translate) + TEST_ENTRY(glmc_translate_to) + TEST_ENTRY(glmc_translate_x) + TEST_ENTRY(glmc_translate_y) + TEST_ENTRY(glmc_translate_z) + TEST_ENTRY(glmc_translate_make) + TEST_ENTRY(glmc_scale_to) + TEST_ENTRY(glmc_scale_make) + TEST_ENTRY(glmc_scale) + TEST_ENTRY(glmc_scale_uni) + TEST_ENTRY(glmc_rotate_x) + TEST_ENTRY(glmc_rotate_y) + TEST_ENTRY(glmc_rotate_z) + TEST_ENTRY(glmc_rotate_make) + TEST_ENTRY(glmc_rotate) + TEST_ENTRY(glmc_rotate_at) + TEST_ENTRY(glmc_rotate_atm) + TEST_ENTRY(glmc_decompose_scalev) + TEST_ENTRY(glmc_uniscaled) + TEST_ENTRY(glmc_decompose_rs) + TEST_ENTRY(glmc_decompose) + + /* affine 2d */ + TEST_ENTRY(glm_translate2d) + TEST_ENTRY(glm_translate2d_to) + TEST_ENTRY(glm_translate2d_x) + TEST_ENTRY(glm_translate2d_y) + TEST_ENTRY(glm_translate2d_make) + TEST_ENTRY(glm_scale2d_to) + TEST_ENTRY(glm_scale2d_make) + TEST_ENTRY(glm_scale2d) + TEST_ENTRY(glm_scale2d_uni) + TEST_ENTRY(glm_rotate2d_make) + TEST_ENTRY(glm_rotate2d) + TEST_ENTRY(glm_rotate2d_to) + + TEST_ENTRY(glmc_translate2d) + TEST_ENTRY(glmc_translate2d_to) + TEST_ENTRY(glmc_translate2d_x) + TEST_ENTRY(glmc_translate2d_y) + TEST_ENTRY(glmc_translate2d_make) + TEST_ENTRY(glmc_scale2d_to) + TEST_ENTRY(glmc_scale2d_make) + TEST_ENTRY(glmc_scale2d) + TEST_ENTRY(glmc_scale2d_uni) + TEST_ENTRY(glmc_rotate2d_make) + TEST_ENTRY(glmc_rotate2d) + TEST_ENTRY(glmc_rotate2d_to) + + /* mat4 */ + TEST_ENTRY(glm_mat4_ucopy) + TEST_ENTRY(glm_mat4_copy) + TEST_ENTRY(glm_mat4_identity) + TEST_ENTRY(glm_mat4_identity_array) + TEST_ENTRY(glm_mat4_zero) + TEST_ENTRY(glm_mat4_pick3) + TEST_ENTRY(glm_mat4_pick3t) + TEST_ENTRY(glm_mat4_ins3) + TEST_ENTRY(glm_mat4_mul) + TEST_ENTRY(glm_mat4_mulN) + TEST_ENTRY(glm_mat4_mulv) + TEST_ENTRY(glm_mat4_mulv3) + TEST_ENTRY(glm_mat4_trace) + TEST_ENTRY(glm_mat4_trace3) + TEST_ENTRY(glm_mat4_quat) + TEST_ENTRY(glm_mat4_transpose_to) + TEST_ENTRY(glm_mat4_transpose) + TEST_ENTRY(glm_mat4_scale_p) + TEST_ENTRY(glm_mat4_scale) + TEST_ENTRY(glm_mat4_det) + TEST_ENTRY(glm_mat4_inv) + TEST_ENTRY(glm_mat4_inv_fast) + TEST_ENTRY(glm_mat4_inv_precise) + TEST_ENTRY(glm_mat4_swap_col) + TEST_ENTRY(glm_mat4_swap_row) + TEST_ENTRY(glm_mat4_rmc) + + TEST_ENTRY(glmc_mat4_ucopy) + TEST_ENTRY(glmc_mat4_copy) + TEST_ENTRY(glmc_mat4_identity) + TEST_ENTRY(glmc_mat4_identity_array) + TEST_ENTRY(glmc_mat4_zero) + TEST_ENTRY(glmc_mat4_pick3) + TEST_ENTRY(glmc_mat4_pick3t) + TEST_ENTRY(glmc_mat4_ins3) + TEST_ENTRY(glmc_mat4_mul) + TEST_ENTRY(glmc_mat4_mulN) + TEST_ENTRY(glmc_mat4_mulv) + TEST_ENTRY(glmc_mat4_mulv3) + TEST_ENTRY(glmc_mat4_trace) + TEST_ENTRY(glmc_mat4_trace3) + TEST_ENTRY(glmc_mat4_quat) + TEST_ENTRY(glmc_mat4_transpose_to) + TEST_ENTRY(glmc_mat4_transpose) + TEST_ENTRY(glmc_mat4_scale_p) + TEST_ENTRY(glmc_mat4_scale) + TEST_ENTRY(glmc_mat4_det) + TEST_ENTRY(glmc_mat4_inv) + TEST_ENTRY(glmc_mat4_inv_fast) + TEST_ENTRY(glmc_mat4_swap_col) + TEST_ENTRY(glmc_mat4_swap_row) + TEST_ENTRY(glmc_mat4_rmc) + + /* mat3 */ + TEST_ENTRY(glm_mat3_copy) + TEST_ENTRY(glm_mat3_identity) + TEST_ENTRY(glm_mat3_identity_array) + TEST_ENTRY(glm_mat3_zero) + TEST_ENTRY(glm_mat3_mul) + TEST_ENTRY(glm_mat3_mulv) + TEST_ENTRY(glm_mat3_trace) + TEST_ENTRY(glm_mat3_quat) + TEST_ENTRY(glm_mat3_transpose_to) + TEST_ENTRY(glm_mat3_transpose) + TEST_ENTRY(glm_mat3_scale) + TEST_ENTRY(glm_mat3_det) + TEST_ENTRY(glm_mat3_inv) + TEST_ENTRY(glm_mat3_swap_col) + TEST_ENTRY(glm_mat3_swap_row) + TEST_ENTRY(glm_mat3_rmc) + + TEST_ENTRY(glmc_mat3_copy) + TEST_ENTRY(glmc_mat3_identity) + TEST_ENTRY(glmc_mat3_identity_array) + TEST_ENTRY(glmc_mat3_zero) + TEST_ENTRY(glmc_mat3_mul) + TEST_ENTRY(glmc_mat3_mulv) + TEST_ENTRY(glmc_mat3_trace) + TEST_ENTRY(glmc_mat3_quat) + TEST_ENTRY(glmc_mat3_transpose_to) + TEST_ENTRY(glmc_mat3_transpose) + TEST_ENTRY(glmc_mat3_scale) + TEST_ENTRY(glmc_mat3_det) + TEST_ENTRY(glmc_mat3_inv) + TEST_ENTRY(glmc_mat3_swap_col) + TEST_ENTRY(glmc_mat3_swap_row) + TEST_ENTRY(glmc_mat3_rmc) + + TEST_ENTRY(MACRO_GLM_MAT2_IDENTITY_INIT) + TEST_ENTRY(MACRO_GLM_MAT2_ZERO_INIT) + TEST_ENTRY(MACRO_GLM_MAT2_IDENTITY) + TEST_ENTRY(MACRO_GLM_MAT2_ZERO) + TEST_ENTRY(glm_mat2_copy) + TEST_ENTRY(glm_mat2_identity) + TEST_ENTRY(glm_mat2_identity_array) + TEST_ENTRY(glm_mat2_zero) + TEST_ENTRY(glm_mat2_mul) + TEST_ENTRY(glm_mat2_transpose_to) + TEST_ENTRY(glm_mat2_transpose) + TEST_ENTRY(glm_mat2_mulv) + TEST_ENTRY(glm_mat2_trace) + TEST_ENTRY(glm_mat2_scale) + TEST_ENTRY(glm_mat2_det) + TEST_ENTRY(glm_mat2_inv) + TEST_ENTRY(glm_mat2_swap_col) + TEST_ENTRY(glm_mat2_swap_row) + TEST_ENTRY(glm_mat2_rmc) + + TEST_ENTRY(glmc_mat2_copy) + TEST_ENTRY(glmc_mat2_identity) + TEST_ENTRY(glmc_mat2_identity_array) + TEST_ENTRY(glmc_mat2_zero) + TEST_ENTRY(glmc_mat2_mul) + TEST_ENTRY(glmc_mat2_transpose_to) + TEST_ENTRY(glmc_mat2_transpose) + TEST_ENTRY(glmc_mat2_mulv) + TEST_ENTRY(glmc_mat2_trace) + TEST_ENTRY(glmc_mat2_scale) + TEST_ENTRY(glmc_mat2_det) + TEST_ENTRY(glmc_mat2_inv) + TEST_ENTRY(glmc_mat2_swap_col) + TEST_ENTRY(glmc_mat2_swap_row) + TEST_ENTRY(glmc_mat2_rmc) + + /* camera (incl [LR]H cross [NZ]O) */ + TEST_ENTRY(perspective_lh_zo) + TEST_ENTRY(perspective_rh_zo) + TEST_ENTRY(perspective_lh_no) + TEST_ENTRY(perspective_rh_no) + TEST_ENTRY(camera_lookat) + TEST_ENTRY(camera_decomp) + + TEST_ENTRY(glm_frustum) + + TEST_ENTRY(glmc_frustum) + + /* project */ + TEST_ENTRY(glm_unprojecti) + TEST_ENTRY(glm_unproject) + TEST_ENTRY(glm_project) + + TEST_ENTRY(glmc_unprojecti) + TEST_ENTRY(glmc_unproject) + TEST_ENTRY(glmc_project) + + /* plane */ + TEST_ENTRY(glm_plane_normalize) + TEST_ENTRY(glmc_plane_normalize) + + /* utils */ + TEST_ENTRY(clamp) + + /* euler */ + TEST_ENTRY(euler) + + /* ray */ + TEST_ENTRY(glm_ray_triangle) + TEST_ENTRY(glmc_ray_triangle) + + /* quat */ + TEST_ENTRY(MACRO_GLM_QUAT_IDENTITY_INIT) + TEST_ENTRY(MACRO_GLM_QUAT_IDENTITY) + + TEST_ENTRY(glm_quat_identity) + TEST_ENTRY(glm_quat_identity_array) + TEST_ENTRY(glm_quat_init) + TEST_ENTRY(glm_quatv) + TEST_ENTRY(glm_quat) + TEST_ENTRY(glm_quat_copy) + TEST_ENTRY(glm_quat_norm) + TEST_ENTRY(glm_quat_normalize_to) + TEST_ENTRY(glm_quat_normalize) + TEST_ENTRY(glm_quat_dot) + TEST_ENTRY(glm_quat_conjugate) + TEST_ENTRY(glm_quat_inv) + TEST_ENTRY(glm_quat_add) + TEST_ENTRY(glm_quat_sub) + TEST_ENTRY(glm_quat_real) + TEST_ENTRY(glm_quat_imag) + TEST_ENTRY(glm_quat_imagn) + TEST_ENTRY(glm_quat_imaglen) + TEST_ENTRY(glm_quat_angle) + TEST_ENTRY(glm_quat_axis) + TEST_ENTRY(glm_quat_mul) + TEST_ENTRY(glm_quat_mat4) + TEST_ENTRY(glm_quat_mat4t) + TEST_ENTRY(glm_quat_mat3) + TEST_ENTRY(glm_quat_mat3t) + TEST_ENTRY(glm_quat_lerp) + TEST_ENTRY(glm_quat_lerpc) + TEST_ENTRY(glm_quat_nlerp) + TEST_ENTRY(glm_quat_slerp) + TEST_ENTRY(glm_quat_look) + TEST_ENTRY(glm_quat_for) + TEST_ENTRY(glm_quat_forp) + TEST_ENTRY(glm_quat_rotatev) + TEST_ENTRY(glm_quat_rotate) + TEST_ENTRY(glm_quat_rotate_at) + TEST_ENTRY(glm_quat_rotate_atm) + TEST_ENTRY(glm_quat_from_vecs) + + TEST_ENTRY(glmc_quat_identity) + TEST_ENTRY(glmc_quat_identity_array) + TEST_ENTRY(glmc_quat_init) + TEST_ENTRY(glmc_quatv) + TEST_ENTRY(glmc_quat) + TEST_ENTRY(glmc_quat_copy) + TEST_ENTRY(glmc_quat_norm) + TEST_ENTRY(glmc_quat_normalize_to) + TEST_ENTRY(glmc_quat_normalize) + TEST_ENTRY(glmc_quat_dot) + TEST_ENTRY(glmc_quat_conjugate) + TEST_ENTRY(glmc_quat_inv) + TEST_ENTRY(glmc_quat_add) + TEST_ENTRY(glmc_quat_sub) + TEST_ENTRY(glmc_quat_real) + TEST_ENTRY(glmc_quat_imag) + TEST_ENTRY(glmc_quat_imagn) + TEST_ENTRY(glmc_quat_imaglen) + TEST_ENTRY(glmc_quat_angle) + TEST_ENTRY(glmc_quat_axis) + TEST_ENTRY(glmc_quat_mul) + TEST_ENTRY(glmc_quat_mat4) + TEST_ENTRY(glmc_quat_mat4t) + TEST_ENTRY(glmc_quat_mat3) + TEST_ENTRY(glmc_quat_mat3t) + TEST_ENTRY(glmc_quat_lerp) + TEST_ENTRY(glmc_quat_lerpc) + TEST_ENTRY(glmc_quat_nlerp) + TEST_ENTRY(glmc_quat_slerp) + TEST_ENTRY(glmc_quat_look) + TEST_ENTRY(glmc_quat_for) + TEST_ENTRY(glmc_quat_forp) + TEST_ENTRY(glmc_quat_rotatev) + TEST_ENTRY(glmc_quat_rotate) + TEST_ENTRY(glmc_quat_rotate_at) + TEST_ENTRY(glmc_quat_rotate_atm) + TEST_ENTRY(glmc_quat_from_vecs) + + /* bezier */ + TEST_ENTRY(bezier) + + /* vec2 */ + TEST_ENTRY(MACRO_GLM_VEC2_ONE_INIT) + TEST_ENTRY(MACRO_GLM_VEC2_ZERO_INIT) + TEST_ENTRY(MACRO_GLM_VEC2_ONE) + TEST_ENTRY(MACRO_GLM_VEC2_ZERO) + + TEST_ENTRY(glm_vec2) + TEST_ENTRY(glm_vec2_copy) + TEST_ENTRY(glm_vec2_zero) + TEST_ENTRY(glm_vec2_one) + TEST_ENTRY(glm_vec2_dot) + TEST_ENTRY(glm_vec2_cross) + TEST_ENTRY(glm_vec2_norm2) + TEST_ENTRY(glm_vec2_norm) + TEST_ENTRY(glm_vec2_add) + TEST_ENTRY(glm_vec2_adds) + TEST_ENTRY(glm_vec2_sub) + TEST_ENTRY(glm_vec2_subs) + TEST_ENTRY(glm_vec2_mul) + TEST_ENTRY(glm_vec2_scale) + TEST_ENTRY(glm_vec2_scale_as) + TEST_ENTRY(glm_vec2_div) + TEST_ENTRY(glm_vec2_divs) + TEST_ENTRY(glm_vec2_addadd) + TEST_ENTRY(glm_vec2_subadd) + TEST_ENTRY(glm_vec2_muladd) + TEST_ENTRY(glm_vec2_muladds) + TEST_ENTRY(glm_vec2_maxadd) + TEST_ENTRY(glm_vec2_minadd) + TEST_ENTRY(glm_vec2_negate_to) + TEST_ENTRY(glm_vec2_negate) + TEST_ENTRY(glm_vec2_normalize) + TEST_ENTRY(glm_vec2_normalize_to) + TEST_ENTRY(glm_vec2_rotate) + TEST_ENTRY(glm_vec2_distance2) + TEST_ENTRY(glm_vec2_distance) + TEST_ENTRY(glm_vec2_maxv) + TEST_ENTRY(glm_vec2_minv) + TEST_ENTRY(glm_vec2_clamp) + TEST_ENTRY(glm_vec2_lerp) + TEST_ENTRY(glm_vec2_complex_mul) + TEST_ENTRY(glm_vec2_complex_div) + + TEST_ENTRY(glmc_vec2) + TEST_ENTRY(glmc_vec2_copy) + TEST_ENTRY(glmc_vec2_zero) + TEST_ENTRY(glmc_vec2_one) + TEST_ENTRY(glmc_vec2_dot) + TEST_ENTRY(glmc_vec2_cross) + TEST_ENTRY(glmc_vec2_norm2) + TEST_ENTRY(glmc_vec2_norm) + TEST_ENTRY(glmc_vec2_add) + TEST_ENTRY(glmc_vec2_adds) + TEST_ENTRY(glmc_vec2_sub) + TEST_ENTRY(glmc_vec2_subs) + TEST_ENTRY(glmc_vec2_mul) + TEST_ENTRY(glmc_vec2_scale) + TEST_ENTRY(glmc_vec2_scale_as) + TEST_ENTRY(glmc_vec2_div) + TEST_ENTRY(glmc_vec2_divs) + TEST_ENTRY(glmc_vec2_addadd) + TEST_ENTRY(glmc_vec2_subadd) + TEST_ENTRY(glmc_vec2_muladd) + TEST_ENTRY(glmc_vec2_muladds) + TEST_ENTRY(glmc_vec2_maxadd) + TEST_ENTRY(glmc_vec2_minadd) + TEST_ENTRY(glmc_vec2_negate_to) + TEST_ENTRY(glmc_vec2_negate) + TEST_ENTRY(glmc_vec2_normalize) + TEST_ENTRY(glmc_vec2_normalize_to) + TEST_ENTRY(glmc_vec2_rotate) + TEST_ENTRY(glmc_vec2_distance2) + TEST_ENTRY(glmc_vec2_distance) + TEST_ENTRY(glmc_vec2_maxv) + TEST_ENTRY(glmc_vec2_minv) + TEST_ENTRY(glmc_vec2_clamp) + TEST_ENTRY(glmc_vec2_lerp) + TEST_ENTRY(glmc_vec2_complex_mul) + TEST_ENTRY(glmc_vec2_complex_div) + + /* vec3 */ + TEST_ENTRY(MACRO_GLM_VEC3_ONE_INIT) + TEST_ENTRY(MACRO_GLM_VEC3_ZERO_INIT) + TEST_ENTRY(MACRO_GLM_VEC3_ONE) + TEST_ENTRY(MACRO_GLM_VEC3_ZERO) + TEST_ENTRY(MACRO_GLM_YUP) + TEST_ENTRY(MACRO_GLM_ZUP) + TEST_ENTRY(MACRO_GLM_XUP) + TEST_ENTRY(MACRO_GLM_FORWARD_RH) + TEST_ENTRY(MACRO_GLM_SHUFFLE3) + TEST_ENTRY(MACRO_GLM_XXX) + TEST_ENTRY(MACRO_GLM_YYY) + TEST_ENTRY(MACRO_GLM_ZZZ) + TEST_ENTRY(MACRO_GLM_ZYX) + TEST_ENTRY(MACRO_glm_vec3_dup) + TEST_ENTRY(MACRO_glm_vec3_flipsign) + TEST_ENTRY(MACRO_glm_vec3_flipsign_to) + TEST_ENTRY(MACRO_glm_vec3_inv) + TEST_ENTRY(MACRO_glm_vec3_inv_to) + TEST_ENTRY(MACRO_glm_vec3_mulv) + + TEST_ENTRY(glm_vec3) + TEST_ENTRY(glm_vec3_copy) + TEST_ENTRY(glm_vec3_zero) + TEST_ENTRY(glm_vec3_one) + TEST_ENTRY(glm_vec3_dot) + TEST_ENTRY(glm_dot) + TEST_ENTRY(glm_vec3_norm2) + TEST_ENTRY(glm_vec3_norm) + TEST_ENTRY(glm_vec3_norm_one) + TEST_ENTRY(glm_vec3_norm_inf) + TEST_ENTRY(glm_vec3_add) + TEST_ENTRY(glm_vec3_adds) + TEST_ENTRY(glm_vec3_sub) + TEST_ENTRY(glm_vec3_subs) + TEST_ENTRY(glm_vec3_mul) + TEST_ENTRY(glm_vec3_scale) + TEST_ENTRY(glm_vec3_scale_as) + TEST_ENTRY(glm_vec3_div) + TEST_ENTRY(glm_vec3_divs) + TEST_ENTRY(glm_vec3_addadd) + TEST_ENTRY(glm_vec3_subadd) + TEST_ENTRY(glm_vec3_muladd) + TEST_ENTRY(glm_vec3_muladds) + TEST_ENTRY(glm_vec3_maxadd) + TEST_ENTRY(glm_vec3_minadd) + TEST_ENTRY(glm_vec3_negate_to) + TEST_ENTRY(glm_vec3_negate) + TEST_ENTRY(glm_vec3_normalize) + TEST_ENTRY(glm_vec3_normalize_to) + TEST_ENTRY(glm_normalize) + TEST_ENTRY(glm_normalize_to) + TEST_ENTRY(glm_vec3_cross) + TEST_ENTRY(glm_vec3_crossn) + TEST_ENTRY(glm_cross) + TEST_ENTRY(glm_vec3_angle) + TEST_ENTRY(glm_vec3_rotate) + TEST_ENTRY(glm_vec3_rotate_m4) + TEST_ENTRY(glm_vec3_rotate_m3) + TEST_ENTRY(glm_vec3_proj) + TEST_ENTRY(glm_vec3_center) + TEST_ENTRY(glmc_vec3_distance2) + TEST_ENTRY(glmc_vec3_distance) + TEST_ENTRY(glm_vec3_maxv) + TEST_ENTRY(glm_vec3_minv) + TEST_ENTRY(glm_vec3_ortho) + TEST_ENTRY(glm_vec3_clamp) + TEST_ENTRY(glm_vec3_mix) + TEST_ENTRY(glm_vec3_mixc) + TEST_ENTRY(glm_vec3_step_uni) + TEST_ENTRY(glm_vec3_step) + TEST_ENTRY(glm_vec3_smoothstep_uni) + TEST_ENTRY(glm_vec3_smoothstep) + TEST_ENTRY(glm_vec3_smoothinterp) + TEST_ENTRY(glm_vec3_smoothinterpc) + TEST_ENTRY(glm_vec3_swizzle) + TEST_ENTRY(glm_vec3_broadcast) + TEST_ENTRY(glm_vec3_fill) + TEST_ENTRY(glm_vec3_eq) + TEST_ENTRY(glm_vec3_eq_eps) + TEST_ENTRY(glm_vec3_eq_all) + TEST_ENTRY(glm_vec3_eqv) + TEST_ENTRY(glm_vec3_eqv_eps) + TEST_ENTRY(glm_vec3_max) + TEST_ENTRY(glm_vec3_min) + TEST_ENTRY(glm_vec3_isnan) + TEST_ENTRY(glm_vec3_isinf) + TEST_ENTRY(glm_vec3_isvalid) + TEST_ENTRY(glm_vec3_sign) + TEST_ENTRY(glm_vec3_abs) + TEST_ENTRY(glm_vec3_fract) + TEST_ENTRY(glm_vec3_hadd) + TEST_ENTRY(glm_vec3_sqrt) + + TEST_ENTRY(glmc_vec3) + TEST_ENTRY(glmc_vec3_copy) + TEST_ENTRY(glmc_vec3_zero) + TEST_ENTRY(glmc_vec3_one) + TEST_ENTRY(glmc_vec3_dot) + TEST_ENTRY(glmc_vec3_norm2) + TEST_ENTRY(glmc_vec3_norm) + TEST_ENTRY(glmc_vec3_norm_one) + TEST_ENTRY(glmc_vec3_norm_inf) + TEST_ENTRY(glmc_vec3_add) + TEST_ENTRY(glmc_vec3_adds) + TEST_ENTRY(glmc_vec3_sub) + TEST_ENTRY(glmc_vec3_subs) + TEST_ENTRY(glmc_vec3_mul) + TEST_ENTRY(glmc_vec3_scale) + TEST_ENTRY(glmc_vec3_scale_as) + TEST_ENTRY(glmc_vec3_div) + TEST_ENTRY(glmc_vec3_divs) + TEST_ENTRY(glmc_vec3_addadd) + TEST_ENTRY(glmc_vec3_subadd) + TEST_ENTRY(glmc_vec3_muladd) + TEST_ENTRY(glmc_vec3_muladds) + TEST_ENTRY(glmc_vec3_maxadd) + TEST_ENTRY(glmc_vec3_minadd) + TEST_ENTRY(glmc_vec3_negate_to) + TEST_ENTRY(glmc_vec3_negate) + TEST_ENTRY(glmc_vec3_normalize) + TEST_ENTRY(glmc_vec3_normalize_to) + TEST_ENTRY(glmc_vec3_cross) + TEST_ENTRY(glmc_vec3_crossn) + TEST_ENTRY(glmc_vec3_angle) + TEST_ENTRY(glmc_vec3_rotate) + TEST_ENTRY(glmc_vec3_rotate_m4) + TEST_ENTRY(glmc_vec3_rotate_m3) + TEST_ENTRY(glmc_vec3_proj) + TEST_ENTRY(glmc_vec3_center) + TEST_ENTRY(glmc_vec3_distance2) + TEST_ENTRY(glmc_vec3_distance) + TEST_ENTRY(glmc_vec3_maxv) + TEST_ENTRY(glmc_vec3_minv) + TEST_ENTRY(glmc_vec3_ortho) + TEST_ENTRY(glmc_vec3_clamp) + TEST_ENTRY(glmc_vec3_mix) + TEST_ENTRY(glmc_vec3_mixc) + TEST_ENTRY(glmc_vec3_step_uni) + TEST_ENTRY(glmc_vec3_step) + TEST_ENTRY(glmc_vec3_smoothstep_uni) + TEST_ENTRY(glmc_vec3_smoothstep) + TEST_ENTRY(glmc_vec3_smoothinterp) + TEST_ENTRY(glmc_vec3_smoothinterpc) + TEST_ENTRY(glmc_vec3_swizzle) + TEST_ENTRY(glmc_vec3_broadcast) + TEST_ENTRY(glmc_vec3_fill) + TEST_ENTRY(glmc_vec3_eq) + TEST_ENTRY(glmc_vec3_eq_eps) + TEST_ENTRY(glmc_vec3_eq_all) + TEST_ENTRY(glmc_vec3_eqv) + TEST_ENTRY(glmc_vec3_eqv_eps) + TEST_ENTRY(glmc_vec3_max) + TEST_ENTRY(glmc_vec3_min) + TEST_ENTRY(glmc_vec3_isnan) + TEST_ENTRY(glmc_vec3_isinf) + TEST_ENTRY(glmc_vec3_isvalid) + TEST_ENTRY(glmc_vec3_sign) + TEST_ENTRY(glmc_vec3_abs) + TEST_ENTRY(glmc_vec3_fract) + TEST_ENTRY(glmc_vec3_hadd) + TEST_ENTRY(glmc_vec3_sqrt) + + /* vec4 */ + TEST_ENTRY(MACRO_GLM_VEC4_ONE_INIT) + TEST_ENTRY(MACRO_GLM_VEC4_ZERO_INIT) + TEST_ENTRY(MACRO_GLM_VEC4_ONE) + TEST_ENTRY(MACRO_GLM_VEC4_ZERO) + TEST_ENTRY(MACRO_GLM_XXXX) + TEST_ENTRY(MACRO_GLM_YYYY) + TEST_ENTRY(MACRO_GLM_ZZZZ) + TEST_ENTRY(MACRO_GLM_WZYX) + TEST_ENTRY(MACRO_glm_vec4_dup) + TEST_ENTRY(MACRO_glm_vec4_flipsign) + TEST_ENTRY(MACRO_glm_vec4_flipsign_to) + TEST_ENTRY(MACRO_glm_vec4_inv) + TEST_ENTRY(MACRO_glm_vec4_inv_to) + TEST_ENTRY(MACRO_glm_vec4_mulv) + + TEST_ENTRY(glm_vec4) + TEST_ENTRY(glm_vec4_copy3) + TEST_ENTRY(glm_vec4_copy) + TEST_ENTRY(glm_vec4_ucopy) + TEST_ENTRY(glm_vec4_zero) + TEST_ENTRY(glm_vec4_one) + TEST_ENTRY(glm_vec4_dot) + TEST_ENTRY(glm_vec4_norm2) + TEST_ENTRY(glm_vec4_norm) + TEST_ENTRY(glm_vec4_norm_one) + TEST_ENTRY(glm_vec4_norm_inf) + TEST_ENTRY(glm_vec4_add) + TEST_ENTRY(glm_vec4_adds) + TEST_ENTRY(glm_vec4_sub) + TEST_ENTRY(glm_vec4_subs) + TEST_ENTRY(glm_vec4_mul) + TEST_ENTRY(glm_vec4_scale) + TEST_ENTRY(glm_vec4_scale_as) + TEST_ENTRY(glm_vec4_div) + TEST_ENTRY(glm_vec4_divs) + TEST_ENTRY(glm_vec4_addadd) + TEST_ENTRY(glm_vec4_subadd) + TEST_ENTRY(glm_vec4_muladd) + TEST_ENTRY(glm_vec4_muladds) + TEST_ENTRY(glm_vec4_maxadd) + TEST_ENTRY(glm_vec4_minadd) + TEST_ENTRY(glm_vec4_negate_to) + TEST_ENTRY(glm_vec4_negate) + TEST_ENTRY(glm_vec4_normalize) + TEST_ENTRY(glm_vec4_normalize_to) + TEST_ENTRY(glm_vec4_distance2) + TEST_ENTRY(glm_vec4_distance) + TEST_ENTRY(glm_vec4_maxv) + TEST_ENTRY(glm_vec4_minv) + TEST_ENTRY(glm_vec4_clamp) + TEST_ENTRY(glm_vec4_lerp) + TEST_ENTRY(glm_vec4_lerpc) + TEST_ENTRY(glm_vec4_mix) + TEST_ENTRY(glm_vec4_mixc) + TEST_ENTRY(glm_vec4_step_uni) + TEST_ENTRY(glm_vec4_step) + TEST_ENTRY(glm_vec4_smoothstep_uni) + TEST_ENTRY(glm_vec4_smoothstep) + TEST_ENTRY(glm_vec4_smoothinterp) + TEST_ENTRY(glm_vec4_smoothinterpc) + TEST_ENTRY(glm_vec4_cubic) + TEST_ENTRY(glm_vec4_swizzle) + TEST_ENTRY(glm_vec4_broadcast) + TEST_ENTRY(glm_vec4_fill) + TEST_ENTRY(glm_vec4_eq) + TEST_ENTRY(glm_vec4_eq_eps) + TEST_ENTRY(glm_vec4_eq_all) + TEST_ENTRY(glm_vec4_eqv) + TEST_ENTRY(glm_vec4_eqv_eps) + TEST_ENTRY(glm_vec4_max) + TEST_ENTRY(glm_vec4_min) + TEST_ENTRY(glm_vec4_isnan) + TEST_ENTRY(glm_vec4_isinf) + TEST_ENTRY(glm_vec4_isvalid) + TEST_ENTRY(glm_vec4_sign) + TEST_ENTRY(glm_vec4_abs) + TEST_ENTRY(glm_vec4_fract) + TEST_ENTRY(glm_vec4_hadd) + TEST_ENTRY(glm_vec4_sqrt) + + TEST_ENTRY(glmc_vec4) + TEST_ENTRY(glmc_vec4_copy3) + TEST_ENTRY(glmc_vec4_copy) + TEST_ENTRY(glmc_vec4_ucopy) + TEST_ENTRY(glmc_vec4_zero) + TEST_ENTRY(glmc_vec4_one) + TEST_ENTRY(glmc_vec4_dot) + TEST_ENTRY(glmc_vec4_norm2) + TEST_ENTRY(glmc_vec4_norm) + TEST_ENTRY(glmc_vec4_norm_one) + TEST_ENTRY(glmc_vec4_norm_inf) + TEST_ENTRY(glmc_vec4_add) + TEST_ENTRY(glmc_vec4_adds) + TEST_ENTRY(glmc_vec4_sub) + TEST_ENTRY(glmc_vec4_subs) + TEST_ENTRY(glmc_vec4_mul) + TEST_ENTRY(glmc_vec4_scale) + TEST_ENTRY(glmc_vec4_scale_as) + TEST_ENTRY(glmc_vec4_div) + TEST_ENTRY(glmc_vec4_divs) + TEST_ENTRY(glmc_vec4_addadd) + TEST_ENTRY(glmc_vec4_subadd) + TEST_ENTRY(glmc_vec4_muladd) + TEST_ENTRY(glmc_vec4_muladds) + TEST_ENTRY(glmc_vec4_maxadd) + TEST_ENTRY(glmc_vec4_minadd) + TEST_ENTRY(glmc_vec4_negate_to) + TEST_ENTRY(glmc_vec4_negate) + TEST_ENTRY(glmc_vec4_normalize) + TEST_ENTRY(glmc_vec4_normalize_to) + TEST_ENTRY(glmc_vec4_distance2) + TEST_ENTRY(glmc_vec4_distance) + TEST_ENTRY(glmc_vec4_maxv) + TEST_ENTRY(glmc_vec4_minv) + TEST_ENTRY(glmc_vec4_clamp) + TEST_ENTRY(glmc_vec4_lerp) + TEST_ENTRY(glmc_vec4_lerpc) + TEST_ENTRY(glmc_vec4_mix) + TEST_ENTRY(glmc_vec4_mixc) + TEST_ENTRY(glmc_vec4_step_uni) + TEST_ENTRY(glmc_vec4_step) + TEST_ENTRY(glmc_vec4_smoothstep_uni) + TEST_ENTRY(glmc_vec4_smoothstep) + TEST_ENTRY(glmc_vec4_smoothinterp) + TEST_ENTRY(glmc_vec4_smoothinterpc) + TEST_ENTRY(glmc_vec4_cubic) + TEST_ENTRY(glmc_vec4_swizzle) + TEST_ENTRY(glmc_vec4_broadcast) + TEST_ENTRY(glmc_vec4_fill) + TEST_ENTRY(glmc_vec4_eq) + TEST_ENTRY(glmc_vec4_eq_eps) + TEST_ENTRY(glmc_vec4_eq_all) + TEST_ENTRY(glmc_vec4_eqv) + TEST_ENTRY(glmc_vec4_eqv_eps) + TEST_ENTRY(glmc_vec4_max) + TEST_ENTRY(glmc_vec4_min) + TEST_ENTRY(glmc_vec4_isnan) + TEST_ENTRY(glmc_vec4_isinf) + TEST_ENTRY(glmc_vec4_isvalid) + TEST_ENTRY(glmc_vec4_sign) + TEST_ENTRY(glmc_vec4_abs) + TEST_ENTRY(glmc_vec4_fract) + TEST_ENTRY(glmc_vec4_hadd) + TEST_ENTRY(glmc_vec4_sqrt) + + /* ivec2 */ + TEST_ENTRY(glm_ivec2) + TEST_ENTRY(glm_ivec2_copy) + TEST_ENTRY(glm_ivec2_zero) + TEST_ENTRY(glm_ivec2_one) + TEST_ENTRY(glm_ivec2_add) + TEST_ENTRY(glm_ivec2_adds) + TEST_ENTRY(glm_ivec2_sub) + TEST_ENTRY(glm_ivec2_subs) + TEST_ENTRY(glm_ivec2_mul) + TEST_ENTRY(glm_ivec2_scale) + TEST_ENTRY(glm_ivec2_distance2) + TEST_ENTRY(glm_ivec2_distance) + TEST_ENTRY(glm_ivec2_maxv) + TEST_ENTRY(glm_ivec2_minv) + TEST_ENTRY(glm_ivec2_clamp) + + TEST_ENTRY(glmc_ivec2) + TEST_ENTRY(glmc_ivec2_copy) + TEST_ENTRY(glmc_ivec2_zero) + TEST_ENTRY(glmc_ivec2_one) + TEST_ENTRY(glmc_ivec2_add) + TEST_ENTRY(glmc_ivec2_adds) + TEST_ENTRY(glmc_ivec2_sub) + TEST_ENTRY(glmc_ivec2_subs) + TEST_ENTRY(glmc_ivec2_mul) + TEST_ENTRY(glmc_ivec2_scale) + TEST_ENTRY(glmc_ivec2_distance2) + TEST_ENTRY(glmc_ivec2_distance) + TEST_ENTRY(glmc_ivec2_maxv) + TEST_ENTRY(glmc_ivec2_minv) + TEST_ENTRY(glmc_ivec2_clamp) + + /* ivec3 */ + TEST_ENTRY(glm_ivec3) + TEST_ENTRY(glm_ivec3_copy) + TEST_ENTRY(glm_ivec3_zero) + TEST_ENTRY(glm_ivec3_one) + TEST_ENTRY(glm_ivec3_add) + TEST_ENTRY(glm_ivec3_adds) + TEST_ENTRY(glm_ivec3_sub) + TEST_ENTRY(glm_ivec3_subs) + TEST_ENTRY(glm_ivec3_mul) + TEST_ENTRY(glm_ivec3_scale) + TEST_ENTRY(glm_ivec3_distance2) + TEST_ENTRY(glm_ivec3_distance) + TEST_ENTRY(glm_ivec3_maxv) + TEST_ENTRY(glm_ivec3_minv) + TEST_ENTRY(glm_ivec3_clamp) + + TEST_ENTRY(glmc_ivec3) + TEST_ENTRY(glmc_ivec3_copy) + TEST_ENTRY(glmc_ivec3_zero) + TEST_ENTRY(glmc_ivec3_one) + TEST_ENTRY(glmc_ivec3_add) + TEST_ENTRY(glmc_ivec3_adds) + TEST_ENTRY(glmc_ivec3_sub) + TEST_ENTRY(glmc_ivec3_subs) + TEST_ENTRY(glmc_ivec3_mul) + TEST_ENTRY(glmc_ivec3_scale) + TEST_ENTRY(glmc_ivec3_distance2) + TEST_ENTRY(glmc_ivec3_distance) + TEST_ENTRY(glmc_ivec3_maxv) + TEST_ENTRY(glmc_ivec3_minv) + TEST_ENTRY(glmc_ivec3_clamp) + + /* ivec4 */ + TEST_ENTRY(glm_ivec4) + TEST_ENTRY(glm_ivec4_copy) + TEST_ENTRY(glm_ivec4_zero) + TEST_ENTRY(glm_ivec4_one) + TEST_ENTRY(glm_ivec4_add) + TEST_ENTRY(glm_ivec4_adds) + TEST_ENTRY(glm_ivec4_sub) + TEST_ENTRY(glm_ivec4_subs) + TEST_ENTRY(glm_ivec4_mul) + TEST_ENTRY(glm_ivec4_scale) + TEST_ENTRY(glm_ivec4_distance2) + TEST_ENTRY(glm_ivec4_distance) + TEST_ENTRY(glm_ivec4_maxv) + TEST_ENTRY(glm_ivec4_minv) + TEST_ENTRY(glm_ivec4_clamp) + + TEST_ENTRY(glmc_ivec4) + TEST_ENTRY(glmc_ivec4_copy) + TEST_ENTRY(glmc_ivec4_zero) + TEST_ENTRY(glmc_ivec4_one) + TEST_ENTRY(glmc_ivec4_add) + TEST_ENTRY(glmc_ivec4_adds) + TEST_ENTRY(glmc_ivec4_sub) + TEST_ENTRY(glmc_ivec4_subs) + TEST_ENTRY(glmc_ivec4_mul) + TEST_ENTRY(glmc_ivec4_scale) + TEST_ENTRY(glmc_ivec4_distance2) + TEST_ENTRY(glmc_ivec4_distance) + TEST_ENTRY(glmc_ivec4_maxv) + TEST_ENTRY(glmc_ivec4_minv) + TEST_ENTRY(glmc_ivec4_clamp) + + /* structs */ + TEST_ENTRY(mat3s_identity_init) + TEST_ENTRY(mat3s_zero_init) + TEST_ENTRY(mat4s_identity_init) + TEST_ENTRY(mat4s_zero_init) + TEST_ENTRY(quats_zero_init) + TEST_ENTRY(vec3s_one_init) + TEST_ENTRY(vec3s_zero_init) + TEST_ENTRY(vec4s_black_init) + TEST_ENTRY(vec4s_one_init) + TEST_ENTRY(vec4s_zero_init) +}; + +#endif /* tests_h */ diff --git a/lib/cglm/win/.gitignore b/lib/cglm/win/.gitignore new file mode 100644 index 0000000..96c0a51 --- /dev/null +++ b/lib/cglm/win/.gitignore @@ -0,0 +1,9 @@ +!cglm.sln + +!cglm.vcxproj +!cglm.vcxproj.filters + +!cglm-test.vcxproj +!cglm-test.vcxproj.filters + +!packages.config diff --git a/lib/cglm/win/build.bat b/lib/cglm/win/build.bat new file mode 100644 index 0000000..a2f0bf0 --- /dev/null +++ b/lib/cglm/win/build.bat @@ -0,0 +1 @@ +msbuild cglm.vcxproj /p:Configuration=Release diff --git a/lib/cglm/win/cglm-test.vcxproj b/lib/cglm/win/cglm-test.vcxproj new file mode 100644 index 0000000..e38d77d --- /dev/null +++ b/lib/cglm/win/cglm-test.vcxproj @@ -0,0 +1,207 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {ca8bcaf9-cd25-4133-8f62-3d1449b5d2fc} + + + + 16.0 + {200E0DF1-7532-44E6-8273-84FB92C5557E} + Win32Proj + cglmtest + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + false + + + true + + + true + + + false + + + + + + Level3 + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ../include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + %(AdditionalDependencies) + + + + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ../include;%(AdditionalIncludeDirectories) + Default + + + Console + true + %(AdditionalDependencies) + + + + + + + Level3 + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ../include;%(AdditionalIncludeDirectories) + Default + + + Console + true + %(AdditionalDependencies) + + + + + + + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ../include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + %(AdditionalDependencies) + + + + + + \ No newline at end of file diff --git a/lib/cglm/win/cglm-test.vcxproj.filters b/lib/cglm/win/cglm-test.vcxproj.filters new file mode 100644 index 0000000..b67b1f8 --- /dev/null +++ b/lib/cglm/win/cglm-test.vcxproj.filters @@ -0,0 +1,113 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + include + + + include + + + include + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + \ No newline at end of file diff --git a/lib/cglm/win/cglm.sln b/lib/cglm/win/cglm.sln new file mode 100644 index 0000000..04f08b4 --- /dev/null +++ b/lib/cglm/win/cglm.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29123.88 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cglm", "cglm.vcxproj", "{CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cglm-test", "cglm-test.vcxproj", "{200E0DF1-7532-44E6-8273-84FB92C5557E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}.Debug|x64.ActiveCfg = Debug|x64 + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}.Debug|x64.Build.0 = Debug|x64 + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}.Debug|x86.ActiveCfg = Debug|Win32 + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}.Debug|x86.Build.0 = Debug|Win32 + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}.Release|x64.ActiveCfg = Release|x64 + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}.Release|x64.Build.0 = Release|x64 + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}.Release|x86.ActiveCfg = Release|Win32 + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC}.Release|x86.Build.0 = Release|Win32 + {200E0DF1-7532-44E6-8273-84FB92C5557E}.Debug|x64.ActiveCfg = Debug|x64 + {200E0DF1-7532-44E6-8273-84FB92C5557E}.Debug|x64.Build.0 = Debug|x64 + {200E0DF1-7532-44E6-8273-84FB92C5557E}.Debug|x86.ActiveCfg = Debug|Win32 + {200E0DF1-7532-44E6-8273-84FB92C5557E}.Debug|x86.Build.0 = Debug|Win32 + {200E0DF1-7532-44E6-8273-84FB92C5557E}.Release|x64.ActiveCfg = Release|x64 + {200E0DF1-7532-44E6-8273-84FB92C5557E}.Release|x64.Build.0 = Release|x64 + {200E0DF1-7532-44E6-8273-84FB92C5557E}.Release|x86.ActiveCfg = Release|Win32 + {200E0DF1-7532-44E6-8273-84FB92C5557E}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2AEF23C9-433B-428B-BEBC-068BF3AC9A65} + EndGlobalSection +EndGlobal diff --git a/lib/cglm/win/cglm.vcxproj b/lib/cglm/win/cglm.vcxproj new file mode 100644 index 0000000..60c4af0 --- /dev/null +++ b/lib/cglm/win/cglm.vcxproj @@ -0,0 +1,360 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 15.0 + {CA8BCAF9-CD25-4133-8F62-3D1449B5D2FC} + Win32Proj + cglm + 10.0.17763.0 + + + + DynamicLibrary + true + v141 + Unicode + + + DynamicLibrary + false + v141 + true + Unicode + + + DynamicLibrary + true + v141 + Unicode + + + DynamicLibrary + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + NativeRecommendedRules.ruleset + true + + + NativeRecommendedRules.ruleset + true + + + false + NativeRecommendedRules.ruleset + true + + + false + NativeRecommendedRules.ruleset + true + + + + NotUsing + Level3 + MaxSpeed + WIN32;_DEBUG;_WINDOWS;_USRDLL;CGLM_EXPORTS;%(PreprocessorDefinitions) + None + Default + + CompileAsC + true + true + + + Windows + + + + + Level3 + MaxSpeed + _DEBUG;_WINDOWS;_USRDLL;CGLM_EXPORTS;%(PreprocessorDefinitions) + AnySuitable + true + true + + CompileAsC + None + Default + true + + + Windows + + + + + Level3 + NotUsing + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;CGLM_EXPORTS;%(PreprocessorDefinitions) + None + + CompileAsC + true + Default + + + Windows + true + true + + + + + Level3 + NotUsing + MaxSpeed + true + true + NDEBUG;_WINDOWS;_USRDLL;CGLM_EXPORTS;%(PreprocessorDefinitions) + None + + CompileAsC + true + Default + + + Windows + true + true + + + + + + \ No newline at end of file diff --git a/lib/cglm/win/cglm.vcxproj.filters b/lib/cglm/win/cglm.vcxproj.filters new file mode 100644 index 0000000..7b9b6a3 --- /dev/null +++ b/lib/cglm/win/cglm.vcxproj.filters @@ -0,0 +1,607 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {f46634e5-c098-41a0-afb3-45afb6a53593} + + + {b982cbd3-03d9-4557-bed8-8224e4d95945} + + + {6a2a4ebb-ac68-4ed6-a4a1-f6d2243814e9} + + + {4bcb64d3-e522-48f7-85ef-3ddfacf50874} + + + {ccf6244c-614c-4016-a5d9-8a78ffc7765a} + + + {8607b04c-6eb6-49af-8ac2-e534ba78bf76} + + + {fb97f276-fe14-47ba-8a9f-01032f065a19} + + + {0b5febe7-a88d-4330-94ae-305897a5e957} + + + {8044a657-123d-4a0e-8de1-f348fad7dadb} + + + {842a48fc-5c7e-4951-9623-64af96dfb95a} + + + {86101de1-0722-4c88-92a0-e6d71158354e} + + + {98a166bb-ba2d-4649-a20f-ba6bf4ce6383} + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src\clipspace + + + src + + + src + + + src + + + + + src + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\simd\avx + + + include\cglm\simd\avx + + + include\cglm\simd\neon + + + include\cglm\simd\sse2 + + + include\cglm\simd\sse2 + + + include\cglm\simd\sse2 + + + include\cglm\simd\sse2 + + + include\cglm\simd + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm\call + + + include\cglm\call + + + include\cglm + + + include\cglm + + + include\cglm\call + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm\call + + + include\cglm\call + + + include\cglm + + + include\cglm\call + + + include\cglm + + + include\cglm + + + include\cglm\simd + + + include\cglm\simd + + + include\cglm\call + + + include\cglm + + + include\cglm + + + include\cglm\call + + + include\cglm + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm + + + include\cglm + + + include\cglm\call + + + include\cglm\call + + + include\cglm\struct + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm\struct + + + include\cglm\struct + + + include\cglm\simd\sse2 + + + include\cglm\call + + + include\cglm + + + include\cglm\struct + + + include\cglm\simd\neon + + + include\cglm\simd\neon + + + include\cglm\simd\neon + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm\clipspace + + + include\cglm\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call\clipspace + + + include\cglm\call + + + include\cglm\call + + + include\cglm\call + + + include\cglm\struct\clipspace + + + include\cglm\struct\clipspace + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm + + + include\cglm\struct + + + include\cglm\struct + + + \ No newline at end of file diff --git a/lib/glad/include/KHR/khrplatform.h b/lib/glad/include/KHR/khrplatform.h new file mode 100644 index 0000000..5b55ea2 --- /dev/null +++ b/lib/glad/include/KHR/khrplatform.h @@ -0,0 +1,290 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(KHRONOS_STATIC) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef _WIN64 +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/lib/glad/include/glad/glad.h b/lib/glad/include/glad/glad.h new file mode 100644 index 0000000..4edcae9 --- /dev/null +++ b/lib/glad/include/glad/glad.h @@ -0,0 +1,15685 @@ +/* + + OpenGL loader generated by glad 0.1.33 on Sat Apr 4 06:11:30 2020. + + Language/Generator: C/C++ + Specification: gl + APIs: gl=4.1 + Profile: core + Extensions: + GL_3DFX_multisample, + GL_3DFX_tbuffer, + GL_3DFX_texture_compression_FXT1, + GL_AMD_blend_minmax_factor, + GL_AMD_conservative_depth, + GL_AMD_debug_output, + GL_AMD_depth_clamp_separate, + GL_AMD_draw_buffers_blend, + GL_AMD_framebuffer_multisample_advanced, + GL_AMD_framebuffer_sample_positions, + GL_AMD_gcn_shader, + GL_AMD_gpu_shader_half_float, + GL_AMD_gpu_shader_int16, + GL_AMD_gpu_shader_int64, + GL_AMD_interleaved_elements, + GL_AMD_multi_draw_indirect, + GL_AMD_name_gen_delete, + GL_AMD_occlusion_query_event, + GL_AMD_performance_monitor, + GL_AMD_pinned_memory, + GL_AMD_query_buffer_object, + GL_AMD_sample_positions, + GL_AMD_seamless_cubemap_per_texture, + GL_AMD_shader_atomic_counter_ops, + GL_AMD_shader_ballot, + GL_AMD_shader_explicit_vertex_parameter, + GL_AMD_shader_gpu_shader_half_float_fetch, + GL_AMD_shader_image_load_store_lod, + GL_AMD_shader_stencil_export, + GL_AMD_shader_trinary_minmax, + GL_AMD_sparse_texture, + GL_AMD_stencil_operation_extended, + GL_AMD_texture_gather_bias_lod, + GL_AMD_texture_texture4, + GL_AMD_transform_feedback3_lines_triangles, + GL_AMD_transform_feedback4, + GL_AMD_vertex_shader_layer, + GL_AMD_vertex_shader_tessellator, + GL_AMD_vertex_shader_viewport_index, + GL_APPLE_aux_depth_stencil, + GL_APPLE_client_storage, + GL_APPLE_element_array, + GL_APPLE_fence, + GL_APPLE_float_pixels, + GL_APPLE_flush_buffer_range, + GL_APPLE_object_purgeable, + GL_APPLE_rgb_422, + GL_APPLE_row_bytes, + GL_APPLE_specular_vector, + GL_APPLE_texture_range, + GL_APPLE_transform_hint, + GL_APPLE_vertex_array_object, + GL_APPLE_vertex_array_range, + GL_APPLE_vertex_program_evaluators, + GL_APPLE_ycbcr_422, + GL_ARB_ES2_compatibility, + GL_ARB_ES3_1_compatibility, + GL_ARB_ES3_2_compatibility, + GL_ARB_ES3_compatibility, + GL_ARB_arrays_of_arrays, + GL_ARB_base_instance, + GL_ARB_bindless_texture, + GL_ARB_blend_func_extended, + GL_ARB_buffer_storage, + GL_ARB_cl_event, + GL_ARB_clear_buffer_object, + GL_ARB_clear_texture, + GL_ARB_clip_control, + GL_ARB_color_buffer_float, + GL_ARB_compatibility, + GL_ARB_compressed_texture_pixel_storage, + GL_ARB_compute_shader, + GL_ARB_compute_variable_group_size, + GL_ARB_conditional_render_inverted, + GL_ARB_conservative_depth, + GL_ARB_copy_buffer, + GL_ARB_copy_image, + GL_ARB_cull_distance, + GL_ARB_debug_output, + GL_ARB_depth_buffer_float, + GL_ARB_depth_clamp, + GL_ARB_depth_texture, + GL_ARB_derivative_control, + GL_ARB_direct_state_access, + GL_ARB_draw_buffers, + GL_ARB_draw_buffers_blend, + GL_ARB_draw_elements_base_vertex, + GL_ARB_draw_indirect, + GL_ARB_draw_instanced, + GL_ARB_enhanced_layouts, + GL_ARB_explicit_attrib_location, + GL_ARB_explicit_uniform_location, + GL_ARB_fragment_coord_conventions, + GL_ARB_fragment_layer_viewport, + GL_ARB_fragment_program, + GL_ARB_fragment_program_shadow, + GL_ARB_fragment_shader, + GL_ARB_fragment_shader_interlock, + GL_ARB_framebuffer_no_attachments, + GL_ARB_framebuffer_object, + GL_ARB_framebuffer_sRGB, + GL_ARB_geometry_shader4, + GL_ARB_get_program_binary, + GL_ARB_get_texture_sub_image, + GL_ARB_gl_spirv, + GL_ARB_gpu_shader5, + GL_ARB_gpu_shader_fp64, + GL_ARB_gpu_shader_int64, + GL_ARB_half_float_pixel, + GL_ARB_half_float_vertex, + GL_ARB_imaging, + GL_ARB_indirect_parameters, + GL_ARB_instanced_arrays, + GL_ARB_internalformat_query, + GL_ARB_internalformat_query2, + GL_ARB_invalidate_subdata, + GL_ARB_map_buffer_alignment, + GL_ARB_map_buffer_range, + GL_ARB_matrix_palette, + GL_ARB_multi_bind, + GL_ARB_multi_draw_indirect, + GL_ARB_multisample, + GL_ARB_multitexture, + GL_ARB_occlusion_query, + GL_ARB_occlusion_query2, + GL_ARB_parallel_shader_compile, + GL_ARB_pipeline_statistics_query, + GL_ARB_pixel_buffer_object, + GL_ARB_point_parameters, + GL_ARB_point_sprite, + GL_ARB_polygon_offset_clamp, + GL_ARB_post_depth_coverage, + GL_ARB_program_interface_query, + GL_ARB_provoking_vertex, + GL_ARB_query_buffer_object, + GL_ARB_robust_buffer_access_behavior, + GL_ARB_robustness, + GL_ARB_robustness_isolation, + GL_ARB_sample_locations, + GL_ARB_sample_shading, + GL_ARB_sampler_objects, + GL_ARB_seamless_cube_map, + GL_ARB_seamless_cubemap_per_texture, + GL_ARB_separate_shader_objects, + GL_ARB_shader_atomic_counter_ops, + GL_ARB_shader_atomic_counters, + GL_ARB_shader_ballot, + GL_ARB_shader_bit_encoding, + GL_ARB_shader_clock, + GL_ARB_shader_draw_parameters, + GL_ARB_shader_group_vote, + GL_ARB_shader_image_load_store, + GL_ARB_shader_image_size, + GL_ARB_shader_objects, + GL_ARB_shader_precision, + GL_ARB_shader_stencil_export, + GL_ARB_shader_storage_buffer_object, + GL_ARB_shader_subroutine, + GL_ARB_shader_texture_image_samples, + GL_ARB_shader_texture_lod, + GL_ARB_shader_viewport_layer_array, + GL_ARB_shading_language_100, + GL_ARB_shading_language_420pack, + GL_ARB_shading_language_include, + GL_ARB_shading_language_packing, + GL_ARB_shadow, + GL_ARB_shadow_ambient, + GL_ARB_sparse_buffer, + GL_ARB_sparse_texture, + GL_ARB_sparse_texture2, + GL_ARB_sparse_texture_clamp, + GL_ARB_spirv_extensions, + GL_ARB_stencil_texturing, + GL_ARB_sync, + GL_ARB_tessellation_shader, + GL_ARB_texture_barrier, + GL_ARB_texture_border_clamp, + GL_ARB_texture_buffer_object, + GL_ARB_texture_buffer_object_rgb32, + GL_ARB_texture_buffer_range, + GL_ARB_texture_compression, + GL_ARB_texture_compression_bptc, + GL_ARB_texture_compression_rgtc, + GL_ARB_texture_cube_map, + GL_ARB_texture_cube_map_array, + GL_ARB_texture_env_add, + GL_ARB_texture_env_combine, + GL_ARB_texture_env_crossbar, + GL_ARB_texture_env_dot3, + GL_ARB_texture_filter_anisotropic, + GL_ARB_texture_filter_minmax, + GL_ARB_texture_float, + GL_ARB_texture_gather, + GL_ARB_texture_mirror_clamp_to_edge, + GL_ARB_texture_mirrored_repeat, + GL_ARB_texture_multisample, + GL_ARB_texture_non_power_of_two, + GL_ARB_texture_query_levels, + GL_ARB_texture_query_lod, + GL_ARB_texture_rectangle, + GL_ARB_texture_rg, + GL_ARB_texture_rgb10_a2ui, + GL_ARB_texture_stencil8, + GL_ARB_texture_storage, + GL_ARB_texture_storage_multisample, + GL_ARB_texture_swizzle, + GL_ARB_texture_view, + GL_ARB_timer_query, + GL_ARB_transform_feedback2, + GL_ARB_transform_feedback3, + GL_ARB_transform_feedback_instanced, + GL_ARB_transform_feedback_overflow_query, + GL_ARB_transpose_matrix, + GL_ARB_uniform_buffer_object, + GL_ARB_vertex_array_bgra, + GL_ARB_vertex_array_object, + GL_ARB_vertex_attrib_64bit, + GL_ARB_vertex_attrib_binding, + GL_ARB_vertex_blend, + GL_ARB_vertex_buffer_object, + GL_ARB_vertex_program, + GL_ARB_vertex_shader, + GL_ARB_vertex_type_10f_11f_11f_rev, + GL_ARB_vertex_type_2_10_10_10_rev, + GL_ARB_viewport_array, + GL_ARB_window_pos, + GL_ATI_draw_buffers, + GL_ATI_element_array, + GL_ATI_envmap_bumpmap, + GL_ATI_fragment_shader, + GL_ATI_map_object_buffer, + GL_ATI_meminfo, + GL_ATI_pixel_format_float, + GL_ATI_pn_triangles, + GL_ATI_separate_stencil, + GL_ATI_text_fragment_shader, + GL_ATI_texture_env_combine3, + GL_ATI_texture_float, + GL_ATI_texture_mirror_once, + GL_ATI_vertex_array_object, + GL_ATI_vertex_attrib_array_object, + GL_ATI_vertex_streams, + GL_EXT_422_pixels, + GL_EXT_EGL_image_storage, + GL_EXT_EGL_sync, + GL_EXT_abgr, + GL_EXT_bgra, + GL_EXT_bindable_uniform, + GL_EXT_blend_color, + GL_EXT_blend_equation_separate, + GL_EXT_blend_func_separate, + GL_EXT_blend_logic_op, + GL_EXT_blend_minmax, + GL_EXT_blend_subtract, + GL_EXT_clip_volume_hint, + GL_EXT_cmyka, + GL_EXT_color_subtable, + GL_EXT_compiled_vertex_array, + GL_EXT_convolution, + GL_EXT_coordinate_frame, + GL_EXT_copy_texture, + GL_EXT_cull_vertex, + GL_EXT_debug_label, + GL_EXT_debug_marker, + GL_EXT_depth_bounds_test, + GL_EXT_direct_state_access, + GL_EXT_draw_buffers2, + GL_EXT_draw_instanced, + GL_EXT_draw_range_elements, + GL_EXT_external_buffer, + GL_EXT_fog_coord, + GL_EXT_framebuffer_blit, + GL_EXT_framebuffer_multisample, + GL_EXT_framebuffer_multisample_blit_scaled, + GL_EXT_framebuffer_object, + GL_EXT_framebuffer_sRGB, + GL_EXT_geometry_shader4, + GL_EXT_gpu_program_parameters, + GL_EXT_gpu_shader4, + GL_EXT_histogram, + GL_EXT_index_array_formats, + GL_EXT_index_func, + GL_EXT_index_material, + GL_EXT_index_texture, + GL_EXT_light_texture, + GL_EXT_memory_object, + GL_EXT_memory_object_fd, + GL_EXT_memory_object_win32, + GL_EXT_misc_attribute, + GL_EXT_multi_draw_arrays, + GL_EXT_multisample, + GL_EXT_multiview_tessellation_geometry_shader, + GL_EXT_multiview_texture_multisample, + GL_EXT_multiview_timer_query, + GL_EXT_packed_depth_stencil, + GL_EXT_packed_float, + GL_EXT_packed_pixels, + GL_EXT_paletted_texture, + GL_EXT_pixel_buffer_object, + GL_EXT_pixel_transform, + GL_EXT_pixel_transform_color_table, + GL_EXT_point_parameters, + GL_EXT_polygon_offset, + GL_EXT_polygon_offset_clamp, + GL_EXT_post_depth_coverage, + GL_EXT_provoking_vertex, + GL_EXT_raster_multisample, + GL_EXT_rescale_normal, + GL_EXT_secondary_color, + GL_EXT_semaphore, + GL_EXT_semaphore_fd, + GL_EXT_semaphore_win32, + GL_EXT_separate_shader_objects, + GL_EXT_separate_specular_color, + GL_EXT_shader_framebuffer_fetch, + GL_EXT_shader_framebuffer_fetch_non_coherent, + GL_EXT_shader_image_load_formatted, + GL_EXT_shader_image_load_store, + GL_EXT_shader_integer_mix, + GL_EXT_shadow_funcs, + GL_EXT_shared_texture_palette, + GL_EXT_sparse_texture2, + GL_EXT_stencil_clear_tag, + GL_EXT_stencil_two_side, + GL_EXT_stencil_wrap, + GL_EXT_subtexture, + GL_EXT_texture, + GL_EXT_texture3D, + GL_EXT_texture_array, + GL_EXT_texture_buffer_object, + GL_EXT_texture_compression_latc, + GL_EXT_texture_compression_rgtc, + GL_EXT_texture_compression_s3tc, + GL_EXT_texture_cube_map, + GL_EXT_texture_env_add, + GL_EXT_texture_env_combine, + GL_EXT_texture_env_dot3, + GL_EXT_texture_filter_anisotropic, + GL_EXT_texture_filter_minmax, + GL_EXT_texture_integer, + GL_EXT_texture_lod_bias, + GL_EXT_texture_mirror_clamp, + GL_EXT_texture_object, + GL_EXT_texture_perturb_normal, + GL_EXT_texture_sRGB, + GL_EXT_texture_sRGB_R8, + GL_EXT_texture_sRGB_decode, + GL_EXT_texture_shadow_lod, + GL_EXT_texture_shared_exponent, + GL_EXT_texture_snorm, + GL_EXT_texture_swizzle, + GL_EXT_timer_query, + GL_EXT_transform_feedback, + GL_EXT_vertex_array, + GL_EXT_vertex_array_bgra, + GL_EXT_vertex_attrib_64bit, + GL_EXT_vertex_shader, + GL_EXT_vertex_weighting, + GL_EXT_win32_keyed_mutex, + GL_EXT_window_rectangles, + GL_EXT_x11_sync_object, + GL_GREMEDY_frame_terminator, + GL_GREMEDY_string_marker, + GL_HP_convolution_border_modes, + GL_HP_image_transform, + GL_HP_occlusion_test, + GL_HP_texture_lighting, + GL_IBM_cull_vertex, + GL_IBM_multimode_draw_arrays, + GL_IBM_rasterpos_clip, + GL_IBM_static_data, + GL_IBM_texture_mirrored_repeat, + GL_IBM_vertex_array_lists, + GL_INGR_blend_func_separate, + GL_INGR_color_clamp, + GL_INGR_interlace_read, + GL_INTEL_blackhole_render, + GL_INTEL_conservative_rasterization, + GL_INTEL_fragment_shader_ordering, + GL_INTEL_framebuffer_CMAA, + GL_INTEL_map_texture, + GL_INTEL_parallel_arrays, + GL_INTEL_performance_query, + GL_KHR_blend_equation_advanced, + GL_KHR_blend_equation_advanced_coherent, + GL_KHR_context_flush_control, + GL_KHR_debug, + GL_KHR_no_error, + GL_KHR_parallel_shader_compile, + GL_KHR_robust_buffer_access_behavior, + GL_KHR_robustness, + GL_KHR_shader_subgroup, + GL_KHR_texture_compression_astc_hdr, + GL_KHR_texture_compression_astc_ldr, + GL_KHR_texture_compression_astc_sliced_3d, + GL_MESAX_texture_stack, + GL_MESA_framebuffer_flip_y, + GL_MESA_pack_invert, + GL_MESA_program_binary_formats, + GL_MESA_resize_buffers, + GL_MESA_shader_integer_functions, + GL_MESA_tile_raster_order, + GL_MESA_window_pos, + GL_MESA_ycbcr_texture, + GL_NVX_blend_equation_advanced_multi_draw_buffers, + GL_NVX_conditional_render, + GL_NVX_gpu_memory_info, + GL_NVX_gpu_multicast2, + GL_NVX_linked_gpu_multicast, + GL_NVX_progress_fence, + GL_NV_alpha_to_coverage_dither_control, + GL_NV_bindless_multi_draw_indirect, + GL_NV_bindless_multi_draw_indirect_count, + GL_NV_bindless_texture, + GL_NV_blend_equation_advanced, + GL_NV_blend_equation_advanced_coherent, + GL_NV_blend_minmax_factor, + GL_NV_blend_square, + GL_NV_clip_space_w_scaling, + GL_NV_command_list, + GL_NV_compute_program5, + GL_NV_compute_shader_derivatives, + GL_NV_conditional_render, + GL_NV_conservative_raster, + GL_NV_conservative_raster_dilate, + GL_NV_conservative_raster_pre_snap, + GL_NV_conservative_raster_pre_snap_triangles, + GL_NV_conservative_raster_underestimation, + GL_NV_copy_depth_to_color, + GL_NV_copy_image, + GL_NV_deep_texture3D, + GL_NV_depth_buffer_float, + GL_NV_depth_clamp, + GL_NV_draw_texture, + GL_NV_draw_vulkan_image, + GL_NV_evaluators, + GL_NV_explicit_multisample, + GL_NV_fence, + GL_NV_fill_rectangle, + GL_NV_float_buffer, + GL_NV_fog_distance, + GL_NV_fragment_coverage_to_color, + GL_NV_fragment_program, + GL_NV_fragment_program2, + GL_NV_fragment_program4, + GL_NV_fragment_program_option, + GL_NV_fragment_shader_barycentric, + GL_NV_fragment_shader_interlock, + GL_NV_framebuffer_mixed_samples, + GL_NV_framebuffer_multisample_coverage, + GL_NV_geometry_program4, + GL_NV_geometry_shader4, + GL_NV_geometry_shader_passthrough, + GL_NV_gpu_multicast, + GL_NV_gpu_program4, + GL_NV_gpu_program5, + GL_NV_gpu_program5_mem_extended, + GL_NV_gpu_shader5, + GL_NV_half_float, + GL_NV_internalformat_sample_query, + GL_NV_light_max_exponent, + GL_NV_memory_attachment, + GL_NV_mesh_shader, + GL_NV_multisample_coverage, + GL_NV_multisample_filter_hint, + GL_NV_occlusion_query, + GL_NV_packed_depth_stencil, + GL_NV_parameter_buffer_object, + GL_NV_parameter_buffer_object2, + GL_NV_path_rendering, + GL_NV_path_rendering_shared_edge, + GL_NV_pixel_data_range, + GL_NV_point_sprite, + GL_NV_present_video, + GL_NV_primitive_restart, + GL_NV_query_resource, + GL_NV_query_resource_tag, + GL_NV_register_combiners, + GL_NV_register_combiners2, + GL_NV_representative_fragment_test, + GL_NV_robustness_video_memory_purge, + GL_NV_sample_locations, + GL_NV_sample_mask_override_coverage, + GL_NV_scissor_exclusive, + GL_NV_shader_atomic_counters, + GL_NV_shader_atomic_float, + GL_NV_shader_atomic_float64, + GL_NV_shader_atomic_fp16_vector, + GL_NV_shader_atomic_int64, + GL_NV_shader_buffer_load, + GL_NV_shader_buffer_store, + GL_NV_shader_storage_buffer_object, + GL_NV_shader_subgroup_partitioned, + GL_NV_shader_texture_footprint, + GL_NV_shader_thread_group, + GL_NV_shader_thread_shuffle, + GL_NV_shading_rate_image, + GL_NV_stereo_view_rendering, + GL_NV_tessellation_program5, + GL_NV_texgen_emboss, + GL_NV_texgen_reflection, + GL_NV_texture_barrier, + GL_NV_texture_compression_vtc, + GL_NV_texture_env_combine4, + GL_NV_texture_expand_normal, + GL_NV_texture_multisample, + GL_NV_texture_rectangle, + GL_NV_texture_rectangle_compressed, + GL_NV_texture_shader, + GL_NV_texture_shader2, + GL_NV_texture_shader3, + GL_NV_transform_feedback, + GL_NV_transform_feedback2, + GL_NV_uniform_buffer_unified_memory, + GL_NV_vdpau_interop, + GL_NV_vdpau_interop2, + GL_NV_vertex_array_range, + GL_NV_vertex_array_range2, + GL_NV_vertex_attrib_integer_64bit, + GL_NV_vertex_buffer_unified_memory, + GL_NV_vertex_program, + GL_NV_vertex_program1_1, + GL_NV_vertex_program2, + GL_NV_vertex_program2_option, + GL_NV_vertex_program3, + GL_NV_vertex_program4, + GL_NV_video_capture, + GL_NV_viewport_array2, + GL_NV_viewport_swizzle, + GL_OES_byte_coordinates, + GL_OES_compressed_paletted_texture, + GL_OES_fixed_point, + GL_OES_query_matrix, + GL_OES_read_format, + GL_OES_single_precision, + GL_OML_interlace, + GL_OML_resample, + GL_OML_subsample, + GL_OVR_multiview, + GL_OVR_multiview2, + GL_PGI_misc_hints, + GL_PGI_vertex_hints, + GL_REND_screen_coordinates, + GL_S3_s3tc, + GL_SGIS_detail_texture, + GL_SGIS_fog_function, + GL_SGIS_generate_mipmap, + GL_SGIS_multisample, + GL_SGIS_pixel_texture, + GL_SGIS_point_line_texgen, + GL_SGIS_point_parameters, + GL_SGIS_sharpen_texture, + GL_SGIS_texture4D, + GL_SGIS_texture_border_clamp, + GL_SGIS_texture_color_mask, + GL_SGIS_texture_edge_clamp, + GL_SGIS_texture_filter4, + GL_SGIS_texture_lod, + GL_SGIS_texture_select, + GL_SGIX_async, + GL_SGIX_async_histogram, + GL_SGIX_async_pixel, + GL_SGIX_blend_alpha_minmax, + GL_SGIX_calligraphic_fragment, + GL_SGIX_clipmap, + GL_SGIX_convolution_accuracy, + GL_SGIX_depth_pass_instrument, + GL_SGIX_depth_texture, + GL_SGIX_flush_raster, + GL_SGIX_fog_offset, + GL_SGIX_fragment_lighting, + GL_SGIX_framezoom, + GL_SGIX_igloo_interface, + GL_SGIX_instruments, + GL_SGIX_interlace, + GL_SGIX_ir_instrument1, + GL_SGIX_list_priority, + GL_SGIX_pixel_texture, + GL_SGIX_pixel_tiles, + GL_SGIX_polynomial_ffd, + GL_SGIX_reference_plane, + GL_SGIX_resample, + GL_SGIX_scalebias_hint, + GL_SGIX_shadow, + GL_SGIX_shadow_ambient, + GL_SGIX_sprite, + GL_SGIX_subsample, + GL_SGIX_tag_sample_buffer, + GL_SGIX_texture_add_env, + GL_SGIX_texture_coordinate_clamp, + GL_SGIX_texture_lod_bias, + GL_SGIX_texture_multi_buffer, + GL_SGIX_texture_scale_bias, + GL_SGIX_vertex_preclip, + GL_SGIX_ycrcb, + GL_SGIX_ycrcb_subsample, + GL_SGIX_ycrcba, + GL_SGI_color_matrix, + GL_SGI_color_table, + GL_SGI_texture_color_table, + GL_SUNX_constant_data, + GL_SUN_convolution_border_modes, + GL_SUN_global_alpha, + GL_SUN_mesh_array, + GL_SUN_slice_accum, + GL_SUN_triangle_list, + GL_SUN_vertex, + GL_WIN_phong_shading, + GL_WIN_specular_fog + Loader: True + Local files: False + Omit khrplatform: False + Reproducible: False + + Commandline: + --profile="core" --api="gl=4.1" --generator="c" --spec="gl" --extensions="GL_3DFX_multisample,GL_3DFX_tbuffer,GL_3DFX_texture_compression_FXT1,GL_AMD_blend_minmax_factor,GL_AMD_conservative_depth,GL_AMD_debug_output,GL_AMD_depth_clamp_separate,GL_AMD_draw_buffers_blend,GL_AMD_framebuffer_multisample_advanced,GL_AMD_framebuffer_sample_positions,GL_AMD_gcn_shader,GL_AMD_gpu_shader_half_float,GL_AMD_gpu_shader_int16,GL_AMD_gpu_shader_int64,GL_AMD_interleaved_elements,GL_AMD_multi_draw_indirect,GL_AMD_name_gen_delete,GL_AMD_occlusion_query_event,GL_AMD_performance_monitor,GL_AMD_pinned_memory,GL_AMD_query_buffer_object,GL_AMD_sample_positions,GL_AMD_seamless_cubemap_per_texture,GL_AMD_shader_atomic_counter_ops,GL_AMD_shader_ballot,GL_AMD_shader_explicit_vertex_parameter,GL_AMD_shader_gpu_shader_half_float_fetch,GL_AMD_shader_image_load_store_lod,GL_AMD_shader_stencil_export,GL_AMD_shader_trinary_minmax,GL_AMD_sparse_texture,GL_AMD_stencil_operation_extended,GL_AMD_texture_gather_bias_lod,GL_AMD_texture_texture4,GL_AMD_transform_feedback3_lines_triangles,GL_AMD_transform_feedback4,GL_AMD_vertex_shader_layer,GL_AMD_vertex_shader_tessellator,GL_AMD_vertex_shader_viewport_index,GL_APPLE_aux_depth_stencil,GL_APPLE_client_storage,GL_APPLE_element_array,GL_APPLE_fence,GL_APPLE_float_pixels,GL_APPLE_flush_buffer_range,GL_APPLE_object_purgeable,GL_APPLE_rgb_422,GL_APPLE_row_bytes,GL_APPLE_specular_vector,GL_APPLE_texture_range,GL_APPLE_transform_hint,GL_APPLE_vertex_array_object,GL_APPLE_vertex_array_range,GL_APPLE_vertex_program_evaluators,GL_APPLE_ycbcr_422,GL_ARB_ES2_compatibility,GL_ARB_ES3_1_compatibility,GL_ARB_ES3_2_compatibility,GL_ARB_ES3_compatibility,GL_ARB_arrays_of_arrays,GL_ARB_base_instance,GL_ARB_bindless_texture,GL_ARB_blend_func_extended,GL_ARB_buffer_storage,GL_ARB_cl_event,GL_ARB_clear_buffer_object,GL_ARB_clear_texture,GL_ARB_clip_control,GL_ARB_color_buffer_float,GL_ARB_compatibility,GL_ARB_compressed_texture_pixel_storage,GL_ARB_compute_shader,GL_ARB_compute_variable_group_size,GL_ARB_conditional_render_inverted,GL_ARB_conservative_depth,GL_ARB_copy_buffer,GL_ARB_copy_image,GL_ARB_cull_distance,GL_ARB_debug_output,GL_ARB_depth_buffer_float,GL_ARB_depth_clamp,GL_ARB_depth_texture,GL_ARB_derivative_control,GL_ARB_direct_state_access,GL_ARB_draw_buffers,GL_ARB_draw_buffers_blend,GL_ARB_draw_elements_base_vertex,GL_ARB_draw_indirect,GL_ARB_draw_instanced,GL_ARB_enhanced_layouts,GL_ARB_explicit_attrib_location,GL_ARB_explicit_uniform_location,GL_ARB_fragment_coord_conventions,GL_ARB_fragment_layer_viewport,GL_ARB_fragment_program,GL_ARB_fragment_program_shadow,GL_ARB_fragment_shader,GL_ARB_fragment_shader_interlock,GL_ARB_framebuffer_no_attachments,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_get_program_binary,GL_ARB_get_texture_sub_image,GL_ARB_gl_spirv,GL_ARB_gpu_shader5,GL_ARB_gpu_shader_fp64,GL_ARB_gpu_shader_int64,GL_ARB_half_float_pixel,GL_ARB_half_float_vertex,GL_ARB_imaging,GL_ARB_indirect_parameters,GL_ARB_instanced_arrays,GL_ARB_internalformat_query,GL_ARB_internalformat_query2,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_alignment,GL_ARB_map_buffer_range,GL_ARB_matrix_palette,GL_ARB_multi_bind,GL_ARB_multi_draw_indirect,GL_ARB_multisample,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_occlusion_query2,GL_ARB_parallel_shader_compile,GL_ARB_pipeline_statistics_query,GL_ARB_pixel_buffer_object,GL_ARB_point_parameters,GL_ARB_point_sprite,GL_ARB_polygon_offset_clamp,GL_ARB_post_depth_coverage,GL_ARB_program_interface_query,GL_ARB_provoking_vertex,GL_ARB_query_buffer_object,GL_ARB_robust_buffer_access_behavior,GL_ARB_robustness,GL_ARB_robustness_isolation,GL_ARB_sample_locations,GL_ARB_sample_shading,GL_ARB_sampler_objects,GL_ARB_seamless_cube_map,GL_ARB_seamless_cubemap_per_texture,GL_ARB_separate_shader_objects,GL_ARB_shader_atomic_counter_ops,GL_ARB_shader_atomic_counters,GL_ARB_shader_ballot,GL_ARB_shader_bit_encoding,GL_ARB_shader_clock,GL_ARB_shader_draw_parameters,GL_ARB_shader_group_vote,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_precision,GL_ARB_shader_stencil_export,GL_ARB_shader_storage_buffer_object,GL_ARB_shader_subroutine,GL_ARB_shader_texture_image_samples,GL_ARB_shader_texture_lod,GL_ARB_shader_viewport_layer_array,GL_ARB_shading_language_100,GL_ARB_shading_language_420pack,GL_ARB_shading_language_include,GL_ARB_shading_language_packing,GL_ARB_shadow,GL_ARB_shadow_ambient,GL_ARB_sparse_buffer,GL_ARB_sparse_texture,GL_ARB_sparse_texture2,GL_ARB_sparse_texture_clamp,GL_ARB_spirv_extensions,GL_ARB_stencil_texturing,GL_ARB_sync,GL_ARB_tessellation_shader,GL_ARB_texture_barrier,GL_ARB_texture_border_clamp,GL_ARB_texture_buffer_object,GL_ARB_texture_buffer_object_rgb32,GL_ARB_texture_buffer_range,GL_ARB_texture_compression,GL_ARB_texture_compression_bptc,GL_ARB_texture_compression_rgtc,GL_ARB_texture_cube_map,GL_ARB_texture_cube_map_array,GL_ARB_texture_env_add,GL_ARB_texture_env_combine,GL_ARB_texture_env_crossbar,GL_ARB_texture_env_dot3,GL_ARB_texture_filter_anisotropic,GL_ARB_texture_filter_minmax,GL_ARB_texture_float,GL_ARB_texture_gather,GL_ARB_texture_mirror_clamp_to_edge,GL_ARB_texture_mirrored_repeat,GL_ARB_texture_multisample,GL_ARB_texture_non_power_of_two,GL_ARB_texture_query_levels,GL_ARB_texture_query_lod,GL_ARB_texture_rectangle,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_texture_stencil8,GL_ARB_texture_storage,GL_ARB_texture_storage_multisample,GL_ARB_texture_swizzle,GL_ARB_texture_view,GL_ARB_timer_query,GL_ARB_transform_feedback2,GL_ARB_transform_feedback3,GL_ARB_transform_feedback_instanced,GL_ARB_transform_feedback_overflow_query,GL_ARB_transpose_matrix,GL_ARB_uniform_buffer_object,GL_ARB_vertex_array_bgra,GL_ARB_vertex_array_object,GL_ARB_vertex_attrib_64bit,GL_ARB_vertex_attrib_binding,GL_ARB_vertex_blend,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_10f_11f_11f_rev,GL_ARB_vertex_type_2_10_10_10_rev,GL_ARB_viewport_array,GL_ARB_window_pos,GL_ATI_draw_buffers,GL_ATI_element_array,GL_ATI_envmap_bumpmap,GL_ATI_fragment_shader,GL_ATI_map_object_buffer,GL_ATI_meminfo,GL_ATI_pixel_format_float,GL_ATI_pn_triangles,GL_ATI_separate_stencil,GL_ATI_text_fragment_shader,GL_ATI_texture_env_combine3,GL_ATI_texture_float,GL_ATI_texture_mirror_once,GL_ATI_vertex_array_object,GL_ATI_vertex_attrib_array_object,GL_ATI_vertex_streams,GL_EXT_422_pixels,GL_EXT_EGL_image_storage,GL_EXT_EGL_sync,GL_EXT_abgr,GL_EXT_bgra,GL_EXT_bindable_uniform,GL_EXT_blend_color,GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate,GL_EXT_blend_logic_op,GL_EXT_blend_minmax,GL_EXT_blend_subtract,GL_EXT_clip_volume_hint,GL_EXT_cmyka,GL_EXT_color_subtable,GL_EXT_compiled_vertex_array,GL_EXT_convolution,GL_EXT_coordinate_frame,GL_EXT_copy_texture,GL_EXT_cull_vertex,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_bounds_test,GL_EXT_direct_state_access,GL_EXT_draw_buffers2,GL_EXT_draw_instanced,GL_EXT_draw_range_elements,GL_EXT_external_buffer,GL_EXT_fog_coord,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_program_parameters,GL_EXT_gpu_shader4,GL_EXT_histogram,GL_EXT_index_array_formats,GL_EXT_index_func,GL_EXT_index_material,GL_EXT_index_texture,GL_EXT_light_texture,GL_EXT_memory_object,GL_EXT_memory_object_fd,GL_EXT_memory_object_win32,GL_EXT_misc_attribute,GL_EXT_multi_draw_arrays,GL_EXT_multisample,GL_EXT_multiview_tessellation_geometry_shader,GL_EXT_multiview_texture_multisample,GL_EXT_multiview_timer_query,GL_EXT_packed_depth_stencil,GL_EXT_packed_float,GL_EXT_packed_pixels,GL_EXT_paletted_texture,GL_EXT_pixel_buffer_object,GL_EXT_pixel_transform,GL_EXT_pixel_transform_color_table,GL_EXT_point_parameters,GL_EXT_polygon_offset,GL_EXT_polygon_offset_clamp,GL_EXT_post_depth_coverage,GL_EXT_provoking_vertex,GL_EXT_raster_multisample,GL_EXT_rescale_normal,GL_EXT_secondary_color,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_semaphore_win32,GL_EXT_separate_shader_objects,GL_EXT_separate_specular_color,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_image_load_formatted,GL_EXT_shader_image_load_store,GL_EXT_shader_integer_mix,GL_EXT_shadow_funcs,GL_EXT_shared_texture_palette,GL_EXT_sparse_texture2,GL_EXT_stencil_clear_tag,GL_EXT_stencil_two_side,GL_EXT_stencil_wrap,GL_EXT_subtexture,GL_EXT_texture,GL_EXT_texture3D,GL_EXT_texture_array,GL_EXT_texture_buffer_object,GL_EXT_texture_compression_latc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_cube_map,GL_EXT_texture_env_add,GL_EXT_texture_env_combine,GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_filter_minmax,GL_EXT_texture_integer,GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp,GL_EXT_texture_object,GL_EXT_texture_perturb_normal,GL_EXT_texture_sRGB,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_shared_exponent,GL_EXT_texture_snorm,GL_EXT_texture_swizzle,GL_EXT_timer_query,GL_EXT_transform_feedback,GL_EXT_vertex_array,GL_EXT_vertex_array_bgra,GL_EXT_vertex_attrib_64bit,GL_EXT_vertex_shader,GL_EXT_vertex_weighting,GL_EXT_win32_keyed_mutex,GL_EXT_window_rectangles,GL_EXT_x11_sync_object,GL_GREMEDY_frame_terminator,GL_GREMEDY_string_marker,GL_HP_convolution_border_modes,GL_HP_image_transform,GL_HP_occlusion_test,GL_HP_texture_lighting,GL_IBM_cull_vertex,GL_IBM_multimode_draw_arrays,GL_IBM_rasterpos_clip,GL_IBM_static_data,GL_IBM_texture_mirrored_repeat,GL_IBM_vertex_array_lists,GL_INGR_blend_func_separate,GL_INGR_color_clamp,GL_INGR_interlace_read,GL_INTEL_blackhole_render,GL_INTEL_conservative_rasterization,GL_INTEL_fragment_shader_ordering,GL_INTEL_framebuffer_CMAA,GL_INTEL_map_texture,GL_INTEL_parallel_arrays,GL_INTEL_performance_query,GL_KHR_blend_equation_advanced,GL_KHR_blend_equation_advanced_coherent,GL_KHR_context_flush_control,GL_KHR_debug,GL_KHR_no_error,GL_KHR_parallel_shader_compile,GL_KHR_robust_buffer_access_behavior,GL_KHR_robustness,GL_KHR_shader_subgroup,GL_KHR_texture_compression_astc_hdr,GL_KHR_texture_compression_astc_ldr,GL_KHR_texture_compression_astc_sliced_3d,GL_MESAX_texture_stack,GL_MESA_framebuffer_flip_y,GL_MESA_pack_invert,GL_MESA_program_binary_formats,GL_MESA_resize_buffers,GL_MESA_shader_integer_functions,GL_MESA_tile_raster_order,GL_MESA_window_pos,GL_MESA_ycbcr_texture,GL_NVX_blend_equation_advanced_multi_draw_buffers,GL_NVX_conditional_render,GL_NVX_gpu_memory_info,GL_NVX_gpu_multicast2,GL_NVX_linked_gpu_multicast,GL_NVX_progress_fence,GL_NV_alpha_to_coverage_dither_control,GL_NV_bindless_multi_draw_indirect,GL_NV_bindless_multi_draw_indirect_count,GL_NV_bindless_texture,GL_NV_blend_equation_advanced,GL_NV_blend_equation_advanced_coherent,GL_NV_blend_minmax_factor,GL_NV_blend_square,GL_NV_clip_space_w_scaling,GL_NV_command_list,GL_NV_compute_program5,GL_NV_compute_shader_derivatives,GL_NV_conditional_render,GL_NV_conservative_raster,GL_NV_conservative_raster_dilate,GL_NV_conservative_raster_pre_snap,GL_NV_conservative_raster_pre_snap_triangles,GL_NV_conservative_raster_underestimation,GL_NV_copy_depth_to_color,GL_NV_copy_image,GL_NV_deep_texture3D,GL_NV_depth_buffer_float,GL_NV_depth_clamp,GL_NV_draw_texture,GL_NV_draw_vulkan_image,GL_NV_evaluators,GL_NV_explicit_multisample,GL_NV_fence,GL_NV_fill_rectangle,GL_NV_float_buffer,GL_NV_fog_distance,GL_NV_fragment_coverage_to_color,GL_NV_fragment_program,GL_NV_fragment_program2,GL_NV_fragment_program4,GL_NV_fragment_program_option,GL_NV_fragment_shader_barycentric,GL_NV_fragment_shader_interlock,GL_NV_framebuffer_mixed_samples,GL_NV_framebuffer_multisample_coverage,GL_NV_geometry_program4,GL_NV_geometry_shader4,GL_NV_geometry_shader_passthrough,GL_NV_gpu_multicast,GL_NV_gpu_program4,GL_NV_gpu_program5,GL_NV_gpu_program5_mem_extended,GL_NV_gpu_shader5,GL_NV_half_float,GL_NV_internalformat_sample_query,GL_NV_light_max_exponent,GL_NV_memory_attachment,GL_NV_mesh_shader,GL_NV_multisample_coverage,GL_NV_multisample_filter_hint,GL_NV_occlusion_query,GL_NV_packed_depth_stencil,GL_NV_parameter_buffer_object,GL_NV_parameter_buffer_object2,GL_NV_path_rendering,GL_NV_path_rendering_shared_edge,GL_NV_pixel_data_range,GL_NV_point_sprite,GL_NV_present_video,GL_NV_primitive_restart,GL_NV_query_resource,GL_NV_query_resource_tag,GL_NV_register_combiners,GL_NV_register_combiners2,GL_NV_representative_fragment_test,GL_NV_robustness_video_memory_purge,GL_NV_sample_locations,GL_NV_sample_mask_override_coverage,GL_NV_scissor_exclusive,GL_NV_shader_atomic_counters,GL_NV_shader_atomic_float,GL_NV_shader_atomic_float64,GL_NV_shader_atomic_fp16_vector,GL_NV_shader_atomic_int64,GL_NV_shader_buffer_load,GL_NV_shader_buffer_store,GL_NV_shader_storage_buffer_object,GL_NV_shader_subgroup_partitioned,GL_NV_shader_texture_footprint,GL_NV_shader_thread_group,GL_NV_shader_thread_shuffle,GL_NV_shading_rate_image,GL_NV_stereo_view_rendering,GL_NV_tessellation_program5,GL_NV_texgen_emboss,GL_NV_texgen_reflection,GL_NV_texture_barrier,GL_NV_texture_compression_vtc,GL_NV_texture_env_combine4,GL_NV_texture_expand_normal,GL_NV_texture_multisample,GL_NV_texture_rectangle,GL_NV_texture_rectangle_compressed,GL_NV_texture_shader,GL_NV_texture_shader2,GL_NV_texture_shader3,GL_NV_transform_feedback,GL_NV_transform_feedback2,GL_NV_uniform_buffer_unified_memory,GL_NV_vdpau_interop,GL_NV_vdpau_interop2,GL_NV_vertex_array_range,GL_NV_vertex_array_range2,GL_NV_vertex_attrib_integer_64bit,GL_NV_vertex_buffer_unified_memory,GL_NV_vertex_program,GL_NV_vertex_program1_1,GL_NV_vertex_program2,GL_NV_vertex_program2_option,GL_NV_vertex_program3,GL_NV_vertex_program4,GL_NV_video_capture,GL_NV_viewport_array2,GL_NV_viewport_swizzle,GL_OES_byte_coordinates,GL_OES_compressed_paletted_texture,GL_OES_fixed_point,GL_OES_query_matrix,GL_OES_read_format,GL_OES_single_precision,GL_OML_interlace,GL_OML_resample,GL_OML_subsample,GL_OVR_multiview,GL_OVR_multiview2,GL_PGI_misc_hints,GL_PGI_vertex_hints,GL_REND_screen_coordinates,GL_S3_s3tc,GL_SGIS_detail_texture,GL_SGIS_fog_function,GL_SGIS_generate_mipmap,GL_SGIS_multisample,GL_SGIS_pixel_texture,GL_SGIS_point_line_texgen,GL_SGIS_point_parameters,GL_SGIS_sharpen_texture,GL_SGIS_texture4D,GL_SGIS_texture_border_clamp,GL_SGIS_texture_color_mask,GL_SGIS_texture_edge_clamp,GL_SGIS_texture_filter4,GL_SGIS_texture_lod,GL_SGIS_texture_select,GL_SGIX_async,GL_SGIX_async_histogram,GL_SGIX_async_pixel,GL_SGIX_blend_alpha_minmax,GL_SGIX_calligraphic_fragment,GL_SGIX_clipmap,GL_SGIX_convolution_accuracy,GL_SGIX_depth_pass_instrument,GL_SGIX_depth_texture,GL_SGIX_flush_raster,GL_SGIX_fog_offset,GL_SGIX_fragment_lighting,GL_SGIX_framezoom,GL_SGIX_igloo_interface,GL_SGIX_instruments,GL_SGIX_interlace,GL_SGIX_ir_instrument1,GL_SGIX_list_priority,GL_SGIX_pixel_texture,GL_SGIX_pixel_tiles,GL_SGIX_polynomial_ffd,GL_SGIX_reference_plane,GL_SGIX_resample,GL_SGIX_scalebias_hint,GL_SGIX_shadow,GL_SGIX_shadow_ambient,GL_SGIX_sprite,GL_SGIX_subsample,GL_SGIX_tag_sample_buffer,GL_SGIX_texture_add_env,GL_SGIX_texture_coordinate_clamp,GL_SGIX_texture_lod_bias,GL_SGIX_texture_multi_buffer,GL_SGIX_texture_scale_bias,GL_SGIX_vertex_preclip,GL_SGIX_ycrcb,GL_SGIX_ycrcb_subsample,GL_SGIX_ycrcba,GL_SGI_color_matrix,GL_SGI_color_table,GL_SGI_texture_color_table,GL_SUNX_constant_data,GL_SUN_convolution_border_modes,GL_SUN_global_alpha,GL_SUN_mesh_array,GL_SUN_slice_accum,GL_SUN_triangle_list,GL_SUN_vertex,GL_WIN_phong_shading,GL_WIN_specular_fog" + Online: + Too many extensions +*/ + + +#ifndef __glad_h_ +#define __glad_h_ + +#ifdef __gl_h_ +#error OpenGL header already included, remove this include, glad already provides it +#endif +#define __gl_h_ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define APIENTRY __stdcall +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY APIENTRY +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct gladGLversionStruct { + int major; + int minor; +}; + +typedef void* (* GLADloadproc)(const char *name); + +#ifndef GLAPI +# if defined(GLAD_GLAPI_EXPORT) +# if defined(_WIN32) || defined(__CYGWIN__) +# if defined(GLAD_GLAPI_EXPORT_BUILD) +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllexport)) extern +# else +# define GLAPI __declspec(dllexport) extern +# endif +# else +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllimport)) extern +# else +# define GLAPI __declspec(dllimport) extern +# endif +# endif +# elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) +# define GLAPI __attribute__ ((visibility ("default"))) extern +# else +# define GLAPI extern +# endif +# else +# define GLAPI extern +# endif +#endif + +GLAPI struct gladGLversionStruct GLVersion; + +GLAPI int gladLoadGL(void); + +GLAPI int gladLoadGLLoader(GLADloadproc); + +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef int GLint; +typedef unsigned int GLuint; +typedef khronos_int32_t GLclampx; +typedef int GLsizei; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void *GLeglClientBufferEXT; +typedef void *GLeglImageOES; +typedef char GLchar; +typedef char GLcharARB; +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef khronos_uint16_t GLhalf; +typedef khronos_uint16_t GLhalfARB; +typedef khronos_int32_t GLfixed; +typedef khronos_intptr_t GLintptr; +typedef khronos_intptr_t GLintptrARB; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_ssize_t GLsizeiptrARB; +typedef khronos_int64_t GLint64; +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64; +typedef khronos_uint64_t GLuint64EXT; +typedef struct __GLsync *GLsync; +struct _cl_context; +struct _cl_event; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +typedef unsigned short GLhalfNV; +typedef GLintptr GLvdpauSurfaceNV; +typedef void (APIENTRY *GLVULKANPROCNV)(void); +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_NONE 0 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_VIEWPORT 0x0BA2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_REPEAT 0x2901 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_DOUBLE 0x140A +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_PATCHES 0x000E +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_ISOLINES 0x8E7A +#define GL_QUADS 0x0007 +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_RGB565 0x8D62 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_MAX_VIEWPORTS 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_UNDEFINED_VERTEX 0x8260 +#ifndef GL_VERSION_1_0 +#define GL_VERSION_1_0 1 +GLAPI int GLAD_GL_VERSION_1_0; +typedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); +GLAPI PFNGLCULLFACEPROC glad_glCullFace; +#define glCullFace glad_glCullFace +typedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); +GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; +#define glFrontFace glad_glFrontFace +typedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); +GLAPI PFNGLHINTPROC glad_glHint; +#define glHint glad_glHint +typedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); +GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; +#define glLineWidth glad_glLineWidth +typedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size); +GLAPI PFNGLPOINTSIZEPROC glad_glPointSize; +#define glPointSize glad_glPointSize +typedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); +GLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode; +#define glPolygonMode glad_glPolygonMode +typedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSORPROC glad_glScissor; +#define glScissor glad_glScissor +typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +#define glTexParameterf glad_glTexParameterf +typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +#define glTexParameterfv glad_glTexParameterfv +typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +#define glTexParameteri glad_glTexParameteri +typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +#define glTexParameteriv glad_glTexParameteriv +typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +#define glTexImage1D glad_glTexImage1D +typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +#define glTexImage2D glad_glTexImage2D +typedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf); +GLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +#define glDrawBuffer glad_glDrawBuffer +typedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); +GLAPI PFNGLCLEARPROC glad_glClear; +#define glClear glad_glClear +typedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; +#define glClearColor glad_glClearColor +typedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); +GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; +#define glClearStencil glad_glClearStencil +typedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth); +GLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth; +#define glClearDepth glad_glClearDepth +typedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); +GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; +#define glStencilMask glad_glStencilMask +typedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI PFNGLCOLORMASKPROC glad_glColorMask; +#define glColorMask glad_glColorMask +typedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); +GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; +#define glDepthMask glad_glDepthMask +typedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap); +GLAPI PFNGLDISABLEPROC glad_glDisable; +#define glDisable glad_glDisable +typedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap); +GLAPI PFNGLENABLEPROC glad_glEnable; +#define glEnable glad_glEnable +typedef void (APIENTRYP PFNGLFINISHPROC)(void); +GLAPI PFNGLFINISHPROC glad_glFinish; +#define glFinish glad_glFinish +typedef void (APIENTRYP PFNGLFLUSHPROC)(void); +GLAPI PFNGLFLUSHPROC glad_glFlush; +#define glFlush glad_glFlush +typedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; +#define glBlendFunc glad_glBlendFunc +typedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode); +GLAPI PFNGLLOGICOPPROC glad_glLogicOp; +#define glLogicOp glad_glLogicOp +typedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; +#define glStencilFunc glad_glStencilFunc +typedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; +#define glStencilOp glad_glStencilOp +typedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); +GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; +#define glDepthFunc glad_glDepthFunc +typedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref; +#define glPixelStoref glad_glPixelStoref +typedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; +#define glPixelStorei glad_glPixelStorei +typedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src); +GLAPI PFNGLREADBUFFERPROC glad_glReadBuffer; +#define glReadBuffer glad_glReadBuffer +typedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; +#define glReadPixels glad_glReadPixels +typedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); +GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +#define glGetBooleanv glad_glGetBooleanv +typedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); +GLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev; +#define glGetDoublev glad_glGetDoublev +typedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void); +GLAPI PFNGLGETERRORPROC glad_glGetError; +#define glGetError glad_glGetError +typedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); +GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; +#define glGetFloatv glad_glGetFloatv +typedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); +GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; +#define glGetIntegerv glad_glGetIntegerv +typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); +GLAPI PFNGLGETSTRINGPROC glad_glGetString; +#define glGetString glad_glGetString +typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +#define glGetTexImage glad_glGetTexImage +typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +#define glGetTexParameterfv glad_glGetTexParameterfv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +#define glGetTexParameteriv glad_glGetTexParameteriv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv +typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); +GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; +#define glIsEnabled glad_glIsEnabled +typedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange; +#define glDepthRange glad_glDepthRange +typedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLVIEWPORTPROC glad_glViewport; +#define glViewport glad_glViewport +#endif +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 +GLAPI int GLAD_GL_VERSION_1_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; +#define glDrawArrays glad_glDrawArrays +typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; +#define glDrawElements glad_glDrawElements +typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +#define glPolygonOffset glad_glPolygonOffset +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +#define glCopyTexImage1D glad_glCopyTexImage1D +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +#define glCopyTexImage2D glad_glCopyTexImage2D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +#define glCopyTexSubImage1D glad_glCopyTexSubImage1D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +#define glCopyTexSubImage2D glad_glCopyTexSubImage2D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +#define glTexSubImage1D glad_glTexSubImage1D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +#define glTexSubImage2D glad_glTexSubImage2D +typedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; +#define glBindTexture glad_glBindTexture +typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); +GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +#define glDeleteTextures glad_glDeleteTextures +typedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); +GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; +#define glGenTextures glad_glGenTextures +typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); +GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; +#define glIsTexture glad_glIsTexture +#endif +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +GLAPI int GLAD_GL_VERSION_1_2; +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +#define glDrawRangeElements glad_glDrawRangeElements +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +#define glTexImage3D glad_glTexImage3D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +#define glTexSubImage3D glad_glTexSubImage3D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +#define glCopyTexSubImage3D glad_glCopyTexSubImage3D +#endif +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +GLAPI int GLAD_GL_VERSION_1_3; +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); +GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +#define glActiveTexture glad_glActiveTexture +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +#define glSampleCoverage glad_glSampleCoverage +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +#define glCompressedTexImage3D glad_glCompressedTexImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +#define glCompressedTexImage2D glad_glCompressedTexImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +#define glCompressedTexImage1D glad_glCompressedTexImage1D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); +GLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +#define glGetCompressedTexImage glad_glGetCompressedTexImage +#endif +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +GLAPI int GLAD_GL_VERSION_1_4; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +#define glBlendFuncSeparate glad_glBlendFuncSeparate +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +GLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +#define glMultiDrawArrays glad_glMultiDrawArrays +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); +GLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +#define glMultiDrawElements glad_glMultiDrawElements +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +#define glPointParameterf glad_glPointParameterf +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +#define glPointParameterfv glad_glPointParameterfv +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +#define glPointParameteri glad_glPointParameteri +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +#define glPointParameteriv glad_glPointParameteriv +typedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; +#define glBlendColor glad_glBlendColor +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); +GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +#define glBlendEquation glad_glBlendEquation +#endif +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +GLAPI int GLAD_GL_VERSION_1_5; +typedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENQUERIESPROC glad_glGenQueries; +#define glGenQueries glad_glGenQueries +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +#define glDeleteQueries glad_glDeleteQueries +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id); +GLAPI PFNGLISQUERYPROC glad_glIsQuery; +#define glIsQuery glad_glIsQuery +typedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); +GLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery; +#define glBeginQuery glad_glBeginQuery +typedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target); +GLAPI PFNGLENDQUERYPROC glad_glEndQuery; +#define glEndQuery glad_glEndQuery +typedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv; +#define glGetQueryiv glad_glGetQueryiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +#define glGetQueryObjectiv glad_glGetQueryObjectiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +#define glGetQueryObjectuiv glad_glGetQueryObjectuiv +typedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; +#define glBindBuffer glad_glBindBuffer +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); +GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +#define glDeleteBuffers glad_glDeleteBuffers +typedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); +GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; +#define glGenBuffers glad_glGenBuffers +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); +GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; +#define glIsBuffer glad_glIsBuffer +typedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; +#define glBufferData glad_glBufferData +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +#define glBufferSubData glad_glBufferSubData +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); +GLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +#define glGetBufferSubData glad_glGetBufferSubData +typedef void * (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +GLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer; +#define glMapBuffer glad_glMapBuffer +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); +GLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +#define glUnmapBuffer glad_glUnmapBuffer +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +#define glGetBufferParameteriv glad_glGetBufferParameteriv +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); +GLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +#define glGetBufferPointerv glad_glGetBufferPointerv +#endif +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +GLAPI int GLAD_GL_VERSION_2_0; +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +#define glBlendEquationSeparate glad_glBlendEquationSeparate +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); +GLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +#define glDrawBuffers glad_glDrawBuffers +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +#define glStencilOpSeparate glad_glStencilOpSeparate +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +#define glStencilFuncSeparate glad_glStencilFuncSeparate +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +#define glStencilMaskSeparate glad_glStencilMaskSeparate +typedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; +#define glAttachShader glad_glAttachShader +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name); +GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +#define glBindAttribLocation glad_glBindAttribLocation +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); +GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; +#define glCompileShader glad_glCompileShader +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void); +GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +#define glCreateProgram glad_glCreateProgram +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); +GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; +#define glCreateShader glad_glCreateShader +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); +GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +#define glDeleteProgram glad_glDeleteProgram +typedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); +GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; +#define glDeleteShader glad_glDeleteShader +typedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; +#define glDetachShader glad_glDetachShader +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +#define glDisableVertexAttribArray glad_glDisableVertexAttribArray +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +#define glEnableVertexAttribArray glad_glEnableVertexAttribArray +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +#define glGetActiveAttrib glad_glGetActiveAttrib +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +#define glGetActiveUniform glad_glGetActiveUniform +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +#define glGetAttachedShaders glad_glGetAttachedShaders +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +#define glGetAttribLocation glad_glGetAttribLocation +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +#define glGetProgramiv glad_glGetProgramiv +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +#define glGetProgramInfoLog glad_glGetProgramInfoLog +typedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); +GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; +#define glGetShaderiv glad_glGetShaderiv +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +#define glGetShaderInfoLog glad_glGetShaderInfoLog +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +#define glGetShaderSource glad_glGetShaderSource +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +#define glGetUniformLocation glad_glGetUniformLocation +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); +GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +#define glGetUniformfv glad_glGetUniformfv +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); +GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +#define glGetUniformiv glad_glGetUniformiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +#define glGetVertexAttribdv glad_glGetVertexAttribdv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +#define glGetVertexAttribfv glad_glGetVertexAttribfv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +#define glGetVertexAttribiv glad_glGetVertexAttribiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); +GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; +#define glIsProgram glad_glIsProgram +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader); +GLAPI PFNGLISSHADERPROC glad_glIsShader; +#define glIsShader glad_glIsShader +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); +GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; +#define glLinkProgram glad_glLinkProgram +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; +#define glShaderSource glad_glShaderSource +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); +GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; +#define glUseProgram glad_glUseProgram +typedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; +#define glUniform1f glad_glUniform1f +typedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; +#define glUniform2f glad_glUniform2f +typedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; +#define glUniform3f glad_glUniform3f +typedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; +#define glUniform4f glad_glUniform4f +typedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; +#define glUniform1i glad_glUniform1i +typedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; +#define glUniform2i glad_glUniform2i +typedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; +#define glUniform3i glad_glUniform3i +typedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; +#define glUniform4i glad_glUniform4i +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; +#define glUniform1fv glad_glUniform1fv +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; +#define glUniform2fv glad_glUniform2fv +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; +#define glUniform3fv glad_glUniform3fv +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; +#define glUniform4fv glad_glUniform4fv +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; +#define glUniform1iv glad_glUniform1iv +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; +#define glUniform2iv glad_glUniform2iv +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; +#define glUniform3iv glad_glUniform3iv +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; +#define glUniform4iv glad_glUniform4iv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +#define glUniformMatrix2fv glad_glUniformMatrix2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +#define glUniformMatrix3fv glad_glUniformMatrix3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +#define glUniformMatrix4fv glad_glUniformMatrix4fv +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); +GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +#define glValidateProgram glad_glValidateProgram +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +#define glVertexAttrib1d glad_glVertexAttrib1d +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +#define glVertexAttrib1dv glad_glVertexAttrib1dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +#define glVertexAttrib1f glad_glVertexAttrib1f +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +#define glVertexAttrib1fv glad_glVertexAttrib1fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +GLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +#define glVertexAttrib1s glad_glVertexAttrib1s +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +#define glVertexAttrib1sv glad_glVertexAttrib1sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +#define glVertexAttrib2d glad_glVertexAttrib2d +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +#define glVertexAttrib2dv glad_glVertexAttrib2dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +#define glVertexAttrib2f glad_glVertexAttrib2f +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +#define glVertexAttrib2fv glad_glVertexAttrib2fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +GLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +#define glVertexAttrib2s glad_glVertexAttrib2s +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +#define glVertexAttrib2sv glad_glVertexAttrib2sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +#define glVertexAttrib3d glad_glVertexAttrib3d +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +#define glVertexAttrib3dv glad_glVertexAttrib3dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +#define glVertexAttrib3f glad_glVertexAttrib3f +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +#define glVertexAttrib3fv glad_glVertexAttrib3fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +#define glVertexAttrib3s glad_glVertexAttrib3s +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +#define glVertexAttrib3sv glad_glVertexAttrib3sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +#define glVertexAttrib4Niv glad_glVertexAttrib4Niv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +#define glVertexAttrib4Nub glad_glVertexAttrib4Nub +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +#define glVertexAttrib4bv glad_glVertexAttrib4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +#define glVertexAttrib4d glad_glVertexAttrib4d +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +#define glVertexAttrib4dv glad_glVertexAttrib4dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +#define glVertexAttrib4f glad_glVertexAttrib4f +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +#define glVertexAttrib4fv glad_glVertexAttrib4fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +#define glVertexAttrib4iv glad_glVertexAttrib4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +#define glVertexAttrib4s glad_glVertexAttrib4s +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +#define glVertexAttrib4sv glad_glVertexAttrib4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +#define glVertexAttrib4ubv glad_glVertexAttrib4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +#define glVertexAttrib4uiv glad_glVertexAttrib4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +#define glVertexAttrib4usv glad_glVertexAttrib4usv +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +#define glVertexAttribPointer glad_glVertexAttribPointer +#endif +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +GLAPI int GLAD_GL_VERSION_2_1; +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv +#endif +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +GLAPI int GLAD_GL_VERSION_3_0; +typedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI PFNGLCOLORMASKIPROC glad_glColorMaski; +#define glColorMaski glad_glColorMaski +typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); +GLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +#define glGetBooleani_v glad_glGetBooleani_v +typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); +GLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +#define glGetIntegeri_v glad_glGetIntegeri_v +typedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); +GLAPI PFNGLENABLEIPROC glad_glEnablei; +#define glEnablei glad_glEnablei +typedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); +GLAPI PFNGLDISABLEIPROC glad_glDisablei; +#define glDisablei glad_glDisablei +typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +GLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi; +#define glIsEnabledi glad_glIsEnabledi +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +#define glBeginTransformFeedback glad_glBeginTransformFeedback +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +#define glEndTransformFeedback glad_glEndTransformFeedback +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +#define glBindBufferRange glad_glBindBufferRange +typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +GLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +#define glBindBufferBase glad_glBindBufferBase +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying +typedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +GLAPI PFNGLCLAMPCOLORPROC glad_glClampColor; +#define glClampColor glad_glClampColor +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); +GLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +#define glBeginConditionalRender glad_glBeginConditionalRender +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); +GLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +#define glEndConditionalRender glad_glEndConditionalRender +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +#define glVertexAttribIPointer glad_glVertexAttribIPointer +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +#define glGetVertexAttribIiv glad_glGetVertexAttribIiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params); +GLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +GLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +#define glVertexAttribI1i glad_glVertexAttribI1i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +GLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +#define glVertexAttribI2i glad_glVertexAttribI2i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +#define glVertexAttribI3i glad_glVertexAttribI3i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +#define glVertexAttribI4i glad_glVertexAttribI4i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +GLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +#define glVertexAttribI1ui glad_glVertexAttribI1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +GLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +#define glVertexAttribI2ui glad_glVertexAttribI2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +#define glVertexAttribI3ui glad_glVertexAttribI3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +#define glVertexAttribI4ui glad_glVertexAttribI4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +#define glVertexAttribI1iv glad_glVertexAttribI1iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +#define glVertexAttribI2iv glad_glVertexAttribI2iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +#define glVertexAttribI3iv glad_glVertexAttribI3iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +#define glVertexAttribI4iv glad_glVertexAttribI4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +#define glVertexAttribI1uiv glad_glVertexAttribI1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +#define glVertexAttribI2uiv glad_glVertexAttribI2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +#define glVertexAttribI3uiv glad_glVertexAttribI3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +#define glVertexAttribI4uiv glad_glVertexAttribI4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +#define glVertexAttribI4bv glad_glVertexAttribI4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +#define glVertexAttribI4sv glad_glVertexAttribI4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +#define glVertexAttribI4ubv glad_glVertexAttribI4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +#define glVertexAttribI4usv glad_glVertexAttribI4usv +typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +#define glGetUniformuiv glad_glGetUniformuiv +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +#define glBindFragDataLocation glad_glBindFragDataLocation +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +#define glGetFragDataLocation glad_glGetFragDataLocation +typedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +GLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui; +#define glUniform1ui glad_glUniform1ui +typedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui; +#define glUniform2ui glad_glUniform2ui +typedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui; +#define glUniform3ui glad_glUniform3ui +typedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui; +#define glUniform4ui glad_glUniform4ui +typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +#define glUniform1uiv glad_glUniform1uiv +typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +#define glUniform2uiv glad_glUniform2uiv +typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +#define glUniform3uiv glad_glUniform3uiv +typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +#define glUniform4uiv glad_glUniform4uiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +#define glTexParameterIiv glad_glTexParameterIiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +#define glTexParameterIuiv glad_glTexParameterIuiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +#define glGetTexParameterIiv glad_glGetTexParameterIiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +#define glGetTexParameterIuiv glad_glGetTexParameterIuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +#define glClearBufferiv glad_glClearBufferiv +typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +#define glClearBufferuiv glad_glClearBufferuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +#define glClearBufferfv glad_glClearBufferfv +typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +#define glClearBufferfi glad_glClearBufferfi +typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); +GLAPI PFNGLGETSTRINGIPROC glad_glGetStringi; +#define glGetStringi glad_glGetStringi +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +#define glIsRenderbuffer glad_glIsRenderbuffer +typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +#define glBindRenderbuffer glad_glBindRenderbuffer +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); +GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +#define glDeleteRenderbuffers glad_glDeleteRenderbuffers +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +#define glGenRenderbuffers glad_glGenRenderbuffers +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +#define glRenderbufferStorage glad_glRenderbufferStorage +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +#define glIsFramebuffer glad_glIsFramebuffer +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +#define glBindFramebuffer glad_glBindFramebuffer +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); +GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +#define glDeleteFramebuffers glad_glDeleteFramebuffers +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +#define glGenFramebuffers glad_glGenFramebuffers +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +#define glCheckFramebufferStatus glad_glCheckFramebufferStatus +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +#define glFramebufferTexture1D glad_glFramebufferTexture1D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +#define glFramebufferTexture2D glad_glFramebufferTexture2D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +#define glFramebufferTexture3D glad_glFramebufferTexture3D +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv +typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); +GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +#define glGenerateMipmap glad_glGenerateMipmap +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +#define glBlitFramebuffer glad_glBlitFramebuffer +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +#define glFramebufferTextureLayer glad_glFramebufferTextureLayer +typedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +#define glMapBufferRange glad_glMapBufferRange +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +#define glFlushMappedBufferRange glad_glFlushMappedBufferRange +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); +GLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +#define glBindVertexArray glad_glBindVertexArray +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); +GLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +#define glDeleteVertexArrays glad_glDeleteVertexArrays +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +GLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +#define glGenVertexArrays glad_glGenVertexArrays +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); +GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +#define glIsVertexArray glad_glIsVertexArray +#endif +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +GLAPI int GLAD_GL_VERSION_3_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +#define glDrawArraysInstanced glad_glDrawArraysInstanced +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +#define glDrawElementsInstanced glad_glDrawElementsInstanced +typedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; +#define glTexBuffer glad_glTexBuffer +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); +GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +#define glCopyBufferSubData glad_glCopyBufferSubData +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +#define glGetUniformIndices glad_glGetUniformIndices +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +#define glGetActiveUniformsiv glad_glGetActiveUniformsiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +#define glGetActiveUniformName glad_glGetActiveUniformName +typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName); +GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +#define glGetUniformBlockIndex glad_glGetUniformBlockIndex +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName +typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +#define glUniformBlockBinding glad_glUniformBlockBinding +#endif +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +GLAPI int GLAD_GL_VERSION_3_2; +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); +GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +#define glProvokingVertex glad_glProvokingVertex +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; +#define glFenceSync glad_glFenceSync +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync); +GLAPI PFNGLISSYNCPROC glad_glIsSync; +#define glIsSync glad_glIsSync +typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); +GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; +#define glDeleteSync glad_glDeleteSync +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +#define glClientWaitSync glad_glClientWaitSync +typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; +#define glWaitSync glad_glWaitSync +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); +GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +#define glGetInteger64v glad_glGetInteger64v +typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; +#define glGetSynciv glad_glGetSynciv +typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); +GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +#define glGetInteger64i_v glad_glGetInteger64i_v +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params); +GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +#define glGetBufferParameteri64v glad_glGetBufferParameteri64v +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +#define glFramebufferTexture glad_glFramebufferTexture +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +#define glTexImage2DMultisample glad_glTexImage2DMultisample +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +#define glTexImage3DMultisample glad_glTexImage3DMultisample +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); +GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +#define glGetMultisamplefv glad_glGetMultisamplefv +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +#define glSampleMaski glad_glSampleMaski +#endif +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +GLAPI int GLAD_GL_VERSION_3_3; +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; +#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed +typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; +#define glGetFragDataIndex glad_glGetFragDataIndex +typedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); +GLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers; +#define glGenSamplers glad_glGenSamplers +typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); +GLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; +#define glDeleteSamplers glad_glDeleteSamplers +typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); +GLAPI PFNGLISSAMPLERPROC glad_glIsSampler; +#define glIsSampler glad_glIsSampler +typedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); +GLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler; +#define glBindSampler glad_glBindSampler +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); +GLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; +#define glSamplerParameteri glad_glSamplerParameteri +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param); +GLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; +#define glSamplerParameteriv glad_glSamplerParameteriv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); +GLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; +#define glSamplerParameterf glad_glSamplerParameterf +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param); +GLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; +#define glSamplerParameterfv glad_glSamplerParameterfv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param); +GLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; +#define glSamplerParameterIiv glad_glSamplerParameterIiv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param); +GLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; +#define glSamplerParameterIuiv glad_glSamplerParameterIuiv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; +#define glGetSamplerParameteriv glad_glGetSamplerParameteriv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; +#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params); +GLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; +#define glGetSamplerParameterfv glad_glGetSamplerParameterfv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; +#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv +typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); +GLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter; +#define glQueryCounter glad_glQueryCounter +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); +GLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; +#define glGetQueryObjecti64v glad_glGetQueryObjecti64v +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); +GLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; +#define glGetQueryObjectui64v glad_glGetQueryObjectui64v +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); +GLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; +#define glVertexAttribDivisor glad_glVertexAttribDivisor +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; +#define glVertexAttribP1ui glad_glVertexAttribP1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; +#define glVertexAttribP1uiv glad_glVertexAttribP1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; +#define glVertexAttribP2ui glad_glVertexAttribP2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; +#define glVertexAttribP2uiv glad_glVertexAttribP2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; +#define glVertexAttribP3ui glad_glVertexAttribP3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; +#define glVertexAttribP3uiv glad_glVertexAttribP3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; +#define glVertexAttribP4ui glad_glVertexAttribP4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; +#define glVertexAttribP4uiv glad_glVertexAttribP4uiv +typedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui; +#define glVertexP2ui glad_glVertexP2ui +typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; +#define glVertexP2uiv glad_glVertexP2uiv +typedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui; +#define glVertexP3ui glad_glVertexP3ui +typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; +#define glVertexP3uiv glad_glVertexP3uiv +typedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui; +#define glVertexP4ui glad_glVertexP4ui +typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; +#define glVertexP4uiv glad_glVertexP4uiv +typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; +#define glTexCoordP1ui glad_glTexCoordP1ui +typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; +#define glTexCoordP1uiv glad_glTexCoordP1uiv +typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; +#define glTexCoordP2ui glad_glTexCoordP2ui +typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; +#define glTexCoordP2uiv glad_glTexCoordP2uiv +typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; +#define glTexCoordP3ui glad_glTexCoordP3ui +typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; +#define glTexCoordP3uiv glad_glTexCoordP3uiv +typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; +#define glTexCoordP4ui glad_glTexCoordP4ui +typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; +#define glTexCoordP4uiv glad_glTexCoordP4uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; +#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; +#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; +#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; +#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; +#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; +#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; +#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; +#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv +typedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui; +#define glNormalP3ui glad_glNormalP3ui +typedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; +#define glNormalP3uiv glad_glNormalP3uiv +typedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui; +#define glColorP3ui glad_glColorP3ui +typedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv; +#define glColorP3uiv glad_glColorP3uiv +typedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui; +#define glColorP4ui glad_glColorP4ui +typedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv; +#define glColorP4uiv glad_glColorP4uiv +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; +#define glSecondaryColorP3ui glad_glSecondaryColorP3ui +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; +#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv +#endif +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +GLAPI int GLAD_GL_VERSION_4_0; +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value); +GLAPI PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading; +#define glMinSampleShading glad_glMinSampleShading +typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); +GLAPI PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi; +#define glBlendEquationi glad_glBlendEquationi +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei; +#define glBlendEquationSeparatei glad_glBlendEquationSeparatei +typedef void (APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); +GLAPI PFNGLBLENDFUNCIPROC glad_glBlendFunci; +#define glBlendFunci glad_glBlendFunci +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei; +#define glBlendFuncSeparatei glad_glBlendFuncSeparatei +typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); +GLAPI PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; +#define glDrawArraysIndirect glad_glDrawArraysIndirect +typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect); +GLAPI PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; +#define glDrawElementsIndirect glad_glDrawElementsIndirect +typedef void (APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); +GLAPI PFNGLUNIFORM1DPROC glad_glUniform1d; +#define glUniform1d glad_glUniform1d +typedef void (APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); +GLAPI PFNGLUNIFORM2DPROC glad_glUniform2d; +#define glUniform2d glad_glUniform2d +typedef void (APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLUNIFORM3DPROC glad_glUniform3d; +#define glUniform3d glad_glUniform3d +typedef void (APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLUNIFORM4DPROC glad_glUniform4d; +#define glUniform4d glad_glUniform4d +typedef void (APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM1DVPROC glad_glUniform1dv; +#define glUniform1dv glad_glUniform1dv +typedef void (APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM2DVPROC glad_glUniform2dv; +#define glUniform2dv glad_glUniform2dv +typedef void (APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM3DVPROC glad_glUniform3dv; +#define glUniform3dv glad_glUniform3dv +typedef void (APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM4DVPROC glad_glUniform4dv; +#define glUniform4dv glad_glUniform4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; +#define glUniformMatrix2dv glad_glUniformMatrix2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; +#define glUniformMatrix3dv glad_glUniformMatrix3dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; +#define glUniformMatrix4dv glad_glUniformMatrix4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; +#define glUniformMatrix2x3dv glad_glUniformMatrix2x3dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; +#define glUniformMatrix2x4dv glad_glUniformMatrix2x4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; +#define glUniformMatrix3x2dv glad_glUniformMatrix3x2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; +#define glUniformMatrix3x4dv glad_glUniformMatrix3x4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; +#define glUniformMatrix4x2dv glad_glUniformMatrix4x2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; +#define glUniformMatrix4x3dv glad_glUniformMatrix4x3dv +typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); +GLAPI PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; +#define glGetUniformdv glad_glGetUniformdv +typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar *name); +GLAPI PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; +#define glGetSubroutineUniformLocation glad_glGetSubroutineUniformLocation +typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar *name); +GLAPI PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; +#define glGetSubroutineIndex glad_glGetSubroutineIndex +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; +#define glGetActiveSubroutineUniformiv glad_glGetActiveSubroutineUniformiv +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; +#define glGetActiveSubroutineUniformName glad_glGetActiveSubroutineUniformName +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; +#define glGetActiveSubroutineName glad_glGetActiveSubroutineName +typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint *indices); +GLAPI PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; +#define glUniformSubroutinesuiv glad_glUniformSubroutinesuiv +typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; +#define glGetUniformSubroutineuiv glad_glGetUniformSubroutineuiv +typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); +GLAPI PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; +#define glGetProgramStageiv glad_glGetProgramStageiv +typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); +GLAPI PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; +#define glPatchParameteri glad_glPatchParameteri +typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); +GLAPI PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; +#define glPatchParameterfv glad_glPatchParameterfv +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); +GLAPI PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; +#define glBindTransformFeedback glad_glBindTransformFeedback +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; +#define glDeleteTransformFeedbacks glad_glDeleteTransformFeedbacks +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; +#define glGenTransformFeedbacks glad_glGenTransformFeedbacks +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); +GLAPI PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; +#define glIsTransformFeedback glad_glIsTransformFeedback +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; +#define glPauseTransformFeedback glad_glPauseTransformFeedback +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; +#define glResumeTransformFeedback glad_glResumeTransformFeedback +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; +#define glDrawTransformFeedback glad_glDrawTransformFeedback +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; +#define glDrawTransformFeedbackStream glad_glDrawTransformFeedbackStream +typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); +GLAPI PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; +#define glBeginQueryIndexed glad_glBeginQueryIndexed +typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); +GLAPI PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; +#define glEndQueryIndexed glad_glEndQueryIndexed +typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; +#define glGetQueryIndexediv glad_glGetQueryIndexediv +#endif +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +GLAPI int GLAD_GL_VERSION_4_1; +typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); +GLAPI PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; +#define glReleaseShaderCompiler glad_glReleaseShaderCompiler +typedef void (APIENTRYP PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +GLAPI PFNGLSHADERBINARYPROC glad_glShaderBinary; +#define glShaderBinary glad_glShaderBinary +typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GLAPI PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; +#define glGetShaderPrecisionFormat glad_glGetShaderPrecisionFormat +typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); +GLAPI PFNGLDEPTHRANGEFPROC glad_glDepthRangef; +#define glDepthRangef glad_glDepthRangef +typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); +GLAPI PFNGLCLEARDEPTHFPROC glad_glClearDepthf; +#define glClearDepthf glad_glClearDepthf +typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GLAPI PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; +#define glGetProgramBinary glad_glGetProgramBinary +typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +GLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary; +#define glProgramBinary glad_glProgramBinary +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); +GLAPI PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; +#define glProgramParameteri glad_glProgramParameteri +typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); +GLAPI PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; +#define glUseProgramStages glad_glUseProgramStages +typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); +GLAPI PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; +#define glActiveShaderProgram glad_glActiveShaderProgram +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar *const*strings); +GLAPI PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; +#define glCreateShaderProgramv glad_glCreateShaderProgramv +typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; +#define glBindProgramPipeline glad_glBindProgramPipeline +typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); +GLAPI PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; +#define glDeleteProgramPipelines glad_glDeleteProgramPipelines +typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +GLAPI PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; +#define glGenProgramPipelines glad_glGenProgramPipelines +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; +#define glIsProgramPipeline glad_glIsProgramPipeline +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; +#define glGetProgramPipelineiv glad_glGetProgramPipelineiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); +GLAPI PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; +#define glProgramUniform1i glad_glProgramUniform1i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; +#define glProgramUniform1iv glad_glProgramUniform1iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); +GLAPI PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; +#define glProgramUniform1f glad_glProgramUniform1f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; +#define glProgramUniform1fv glad_glProgramUniform1fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); +GLAPI PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; +#define glProgramUniform1d glad_glProgramUniform1d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; +#define glProgramUniform1dv glad_glProgramUniform1dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); +GLAPI PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; +#define glProgramUniform1ui glad_glProgramUniform1ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; +#define glProgramUniform1uiv glad_glProgramUniform1uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1); +GLAPI PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; +#define glProgramUniform2i glad_glProgramUniform2i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; +#define glProgramUniform2iv glad_glProgramUniform2iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; +#define glProgramUniform2f glad_glProgramUniform2f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; +#define glProgramUniform2fv glad_glProgramUniform2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1); +GLAPI PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; +#define glProgramUniform2d glad_glProgramUniform2d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; +#define glProgramUniform2dv glad_glProgramUniform2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; +#define glProgramUniform2ui glad_glProgramUniform2ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; +#define glProgramUniform2uiv glad_glProgramUniform2uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; +#define glProgramUniform3i glad_glProgramUniform3i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; +#define glProgramUniform3iv glad_glProgramUniform3iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; +#define glProgramUniform3f glad_glProgramUniform3f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; +#define glProgramUniform3fv glad_glProgramUniform3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +GLAPI PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; +#define glProgramUniform3d glad_glProgramUniform3d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; +#define glProgramUniform3dv glad_glProgramUniform3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; +#define glProgramUniform3ui glad_glProgramUniform3ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; +#define glProgramUniform3uiv glad_glProgramUniform3uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; +#define glProgramUniform4i glad_glProgramUniform4i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; +#define glProgramUniform4iv glad_glProgramUniform4iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; +#define glProgramUniform4f glad_glProgramUniform4f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; +#define glProgramUniform4fv glad_glProgramUniform4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +GLAPI PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; +#define glProgramUniform4d glad_glProgramUniform4d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; +#define glProgramUniform4dv glad_glProgramUniform4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; +#define glProgramUniform4ui glad_glProgramUniform4ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; +#define glProgramUniform4uiv glad_glProgramUniform4uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; +#define glProgramUniformMatrix2fv glad_glProgramUniformMatrix2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; +#define glProgramUniformMatrix3fv glad_glProgramUniformMatrix3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; +#define glProgramUniformMatrix4fv glad_glProgramUniformMatrix4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; +#define glProgramUniformMatrix2dv glad_glProgramUniformMatrix2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; +#define glProgramUniformMatrix3dv glad_glProgramUniformMatrix3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; +#define glProgramUniformMatrix4dv glad_glProgramUniformMatrix4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; +#define glProgramUniformMatrix2x3fv glad_glProgramUniformMatrix2x3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; +#define glProgramUniformMatrix3x2fv glad_glProgramUniformMatrix3x2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; +#define glProgramUniformMatrix2x4fv glad_glProgramUniformMatrix2x4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; +#define glProgramUniformMatrix4x2fv glad_glProgramUniformMatrix4x2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; +#define glProgramUniformMatrix3x4fv glad_glProgramUniformMatrix3x4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; +#define glProgramUniformMatrix4x3fv glad_glProgramUniformMatrix4x3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; +#define glProgramUniformMatrix2x3dv glad_glProgramUniformMatrix2x3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; +#define glProgramUniformMatrix3x2dv glad_glProgramUniformMatrix3x2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; +#define glProgramUniformMatrix2x4dv glad_glProgramUniformMatrix2x4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; +#define glProgramUniformMatrix4x2dv glad_glProgramUniformMatrix4x2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; +#define glProgramUniformMatrix3x4dv glad_glProgramUniformMatrix3x4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; +#define glProgramUniformMatrix4x3dv glad_glProgramUniformMatrix4x3dv +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; +#define glValidateProgramPipeline glad_glValidateProgramPipeline +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; +#define glGetProgramPipelineInfoLog glad_glGetProgramPipelineInfoLog +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; +#define glVertexAttribL1d glad_glVertexAttribL1d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; +#define glVertexAttribL2d glad_glVertexAttribL2d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; +#define glVertexAttribL3d glad_glVertexAttribL3d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; +#define glVertexAttribL4d glad_glVertexAttribL4d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; +#define glVertexAttribL1dv glad_glVertexAttribL1dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; +#define glVertexAttribL2dv glad_glVertexAttribL2dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; +#define glVertexAttribL3dv glad_glVertexAttribL3dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; +#define glVertexAttribL4dv glad_glVertexAttribL4dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; +#define glVertexAttribLPointer glad_glVertexAttribLPointer +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; +#define glGetVertexAttribLdv glad_glGetVertexAttribLdv +typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); +GLAPI PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; +#define glViewportArrayv glad_glViewportArrayv +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GLAPI PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; +#define glViewportIndexedf glad_glViewportIndexedf +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; +#define glViewportIndexedfv glad_glViewportIndexedfv +typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); +GLAPI PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; +#define glScissorArrayv glad_glScissorArrayv +typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; +#define glScissorIndexed glad_glScissorIndexed +typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; +#define glScissorIndexedv glad_glScissorIndexedv +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble *v); +GLAPI PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; +#define glDepthRangeArrayv glad_glDepthRangeArrayv +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; +#define glDepthRangeIndexed glad_glDepthRangeIndexed +typedef void (APIENTRYP PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); +GLAPI PFNGLGETFLOATI_VPROC glad_glGetFloati_v; +#define glGetFloati_v glad_glGetFloati_v +typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); +GLAPI PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; +#define glGetDoublei_v glad_glGetDoublei_v +#endif +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 +#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 +#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 +#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A +#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B +#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C +#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D +#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E +#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F +#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 +#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 +#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 +#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 +#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 +#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE +#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF +#define GL_ALL_PIXELS_AMD 0xFFFFFFFF +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 +#define GL_DATA_BUFFER_AMD 0x9151 +#define GL_PERFORMANCE_MONITOR_AMD 0x9152 +#define GL_QUERY_OBJECT_AMD 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 +#define GL_SAMPLER_OBJECT_AMD 0x9155 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#define GL_QUERY_BUFFER_AMD 0x9192 +#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 +#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 +#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A +#define GL_MIN_SPARSE_LEVEL_AMD 0x919B +#define GL_MIN_LOD_WARNING_AMD 0x919C +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +#define GL_SET_AMD 0x874A +#define GL_REPLACE_VALUE_AMD 0x874B +#define GL_STENCIL_OP_VALUE_AMD 0x874C +#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_DISCRETE_AMD 0x9006 +#define GL_CONTINUOUS_AMD 0x9007 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#define GL_ELEMENT_ARRAY_APPLE 0x8A0C +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B +#define GL_HALF_APPLE 0x140B +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_RETAINED_APPLE 0x8A1B +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_PURGEABLE_APPLE 0x8A1D +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 +#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 +#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 +#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 +#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_UNSIGNED_INT64_ARB 0x140F +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#define GL_TEXTURE_TARGET 0x1006 +#define GL_QUERY_TARGET 0x82EA +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_INDEX 0x8222 +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 +#define GL_SPIR_V_BINARY_ARB 0x9552 +#define GL_INT64_ARB 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 +#define GL_HALF_FLOAT_ARB 0x140B +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_MIPMAP 0x8293 +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_COLOR_ENCODING 0x8296 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_SRGB_DECODE_ARB 0x8299 +#define GL_FILTER 0x829A +#define GL_VERTEX_TEXTURE 0x829B +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_VIEW_CLASS_EAC_R11 0x9383 +#define GL_VIEW_CLASS_EAC_RG11 0x9384 +#define GL_VIEW_CLASS_ETC2_RGB 0x9385 +#define GL_VIEW_CLASS_ETC2_RGBA 0x9386 +#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387 +#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388 +#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389 +#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A +#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B +#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C +#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D +#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E +#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F +#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390 +#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391 +#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392 +#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393 +#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394 +#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395 +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_COMPLETION_STATUS_ARB 0x91B1 +#define GL_VERTICES_SUBMITTED_ARB 0x82EE +#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_NAME_LENGTH 0x92F9 +#define GL_TYPE 0x92FA +#define GL_ARRAY_SIZE 0x92FB +#define GL_OFFSET 0x92FC +#define GL_BLOCK_INDEX 0x92FD +#define GL_ARRAY_STRIDE 0x92FE +#define GL_MATRIX_STRIDE 0x92FF +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_LOCATION 0x930E +#define GL_LOCATION_INDEX 0x930F +#define GL_IS_PER_PATCH 0x92E7 +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 +#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#define GL_ABGR_EXT 0x8000 +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_SAMPLER 0x82E6 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +#define GL_TEXTURE_TILING_EXT 0x9580 +#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 +#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B +#define GL_NUM_TILING_TYPES_EXT 0x9582 +#define GL_TILING_TYPES_EXT 0x9583 +#define GL_OPTIMAL_TILING_EXT 0x9584 +#define GL_LINEAR_TILING_EXT 0x9585 +#define GL_NUM_DEVICE_UUIDS_EXT 0x9596 +#define GL_DEVICE_UUID_EXT 0x9597 +#define GL_DRIVER_UUID_EXT 0x9598 +#define GL_UUID_SIZE_EXT 16 +#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588 +#define GL_DEVICE_LUID_EXT 0x9599 +#define GL_DEVICE_NODE_MASK_EXT 0x959A +#define GL_LUID_SIZE_EXT 8 +#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589 +#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A +#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B +#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_PROVOKING_VERTEX_EXT 0x8E4F +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +#define GL_RESCALE_NORMAL_EXT 0x803A +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +#define GL_LAYOUT_GENERAL_EXT 0x958D +#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E +#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F +#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590 +#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 +#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 +#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 +#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 +#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 +#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594 +#define GL_D3D12_FENCE_VALUE_EXT 0x9595 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 +#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A +#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B +#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C +#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D +#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E +#define GL_IMAGE_1D_EXT 0x904C +#define GL_IMAGE_2D_EXT 0x904D +#define GL_IMAGE_3D_EXT 0x904E +#define GL_IMAGE_2D_RECT_EXT 0x904F +#define GL_IMAGE_CUBE_EXT 0x9050 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_IMAGE_1D_ARRAY_EXT 0x9052 +#define GL_IMAGE_2D_ARRAY_EXT 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 +#define GL_INT_IMAGE_1D_EXT 0x9057 +#define GL_INT_IMAGE_2D_EXT 0x9058 +#define GL_INT_IMAGE_3D_EXT 0x9059 +#define GL_INT_IMAGE_2D_RECT_EXT 0x905A +#define GL_INT_IMAGE_CUBE_EXT 0x905B +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D +#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C +#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D +#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 +#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 +#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#define GL_SR8_EXT 0x8FBD +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#define GL_ALPHA_SNORM 0x9010 +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_ALPHA8_SNORM 0x9014 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_ALPHA16_SNORM 0x9018 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_INTENSITY16_SNORM 0x901B +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE +#define GL_DOUBLE_MAT2_EXT 0x8F46 +#define GL_DOUBLE_MAT3_EXT 0x8F47 +#define GL_DOUBLE_MAT4_EXT 0x8F48 +#define GL_DOUBLE_MAT2x3_EXT 0x8F49 +#define GL_DOUBLE_MAT2x4_EXT 0x8F4A +#define GL_DOUBLE_MAT3x2_EXT 0x8F4B +#define GL_DOUBLE_MAT3x4_EXT 0x8F4C +#define GL_DOUBLE_MAT4x2_EXT 0x8F4D +#define GL_DOUBLE_MAT4x3_EXT 0x8F4E +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +#define GL_SYNC_X11_FENCE_EXT 0x90E1 +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#define GL_CULL_VERTEX_IBM 103050 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#define GL_ALL_STATIC_DATA_IBM 103060 +#define GL_STATIC_VERTEX_ARRAY_IBM 103061 +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#define GL_INTERLACE_READ_INGR 0x8568 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_QUERY 0x82E3 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +#define GL_DISPLAY_LIST 0x82E7 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_CONTEXT_LOST 0x0507 +#define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +#define GL_SUBGROUP_SIZE_KHR 0x9532 +#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 +#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 +#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 +#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 +#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 +#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 +#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 +#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 +#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 +#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 +#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB +#define GL_PACK_INVERT_MESA 0x8758 +#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F +#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8 +#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9 +#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#define GL_UPLOAD_GPU_MASK_NVX 0x954A +#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800 +#define GL_MAX_LGPU_GPUS_NVX 0x92BA +#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D +#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E +#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F +#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 +#define GL_NOP_COMMAND_NV 0x0001 +#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 +#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 +#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 +#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 +#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 +#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 +#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 +#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 +#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A +#define GL_BLEND_COLOR_COMMAND_NV 0x000B +#define GL_STENCIL_REF_COMMAND_NV 0x000C +#define GL_LINE_WIDTH_COMMAND_NV 0x000D +#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E +#define GL_ALPHA_REF_COMMAND_NV 0x000F +#define GL_VIEWPORT_COMMAND_NV 0x0010 +#define GL_SCISSOR_COMMAND_NV 0x0011 +#define GL_FRONT_FACE_COMMAND_NV 0x0012 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +#define GL_DEPTH_CLAMP_NV 0x864F +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 +#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#define GL_FILL_RECTANGLE_NV 0x933C +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#define GL_EYE_PLANE 0x2502 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +#define GL_PER_GPU_STORAGE_BIT_NV 0x0800 +#define GL_MULTICAST_GPUS_NV 0x92BA +#define GL_RENDER_GPU_MASK_NV 0x9558 +#define GL_PER_GPU_STORAGE_NV 0x9548 +#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C +#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F +#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 +#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 +#define GL_HALF_FLOAT_NV 0x140B +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4 +#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 +#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 +#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 +#define GL_MEMORY_ATTACHABLE_NV 0x95A8 +#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 +#define GL_DETACHED_TEXTURES_NV 0x95AA +#define GL_DETACHED_BUFFERS_NV 0x95AB +#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC +#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD +#define GL_MESH_SHADER_NV 0x9559 +#define GL_TASK_SHADER_NV 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 +#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 +#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 +#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 +#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A +#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D +#define GL_MAX_MESH_VIEWS_NV 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 +#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B +#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C +#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E +#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F +#define GL_MESH_VERTICES_OUT_NV 0x9579 +#define GL_MESH_PRIMITIVES_OUT_NV 0x957A +#define GL_MESH_OUTPUT_TYPE_NV 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 +#define GL_MESH_SHADER_BIT_NV 0x00000040 +#define GL_TASK_SHADER_BIT_NV 0x00000080 +#define GL_MESH_SUBROUTINE_NV 0x957C +#define GL_TASK_SUBROUTINE_NV 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_CONVEX_HULL_NV 0x908B +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_2_BYTES_NV 0x1407 +#define GL_3_BYTES_NV 0x1408 +#define GL_4_BYTES_NV 0x1409 +#define GL_EYE_LINEAR_NV 0x2400 +#define GL_OBJECT_LINEAR_NV 0x2401 +#define GL_CONSTANT_NV 0x8576 +#define GL_PATH_FOG_GEN_MODE_NV 0x90AC +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D +#define GL_SHARED_EDGE_NV 0xC0 +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +#define GL_FRAME_NV 0x8E26 +#define GL_FIELDS_NV 0x8E27 +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESENT_DURATION_NV 0x8E2B +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540 +#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542 +#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544 +#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545 +#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546 +#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +#define GL_FOG 0x0B60 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F +#define GL_PURGED_CONTEXT_RESET_NV 0x92BB +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 +#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_SM_COUNT_NV 0x933B +#define GL_SHADING_RATE_IMAGE_NV 0x9563 +#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 +#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 +#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 +#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A +#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B +#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C +#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D +#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E +#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F +#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B +#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C +#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D +#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E +#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F +#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE +#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF +#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 +#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 +#define GL_TESS_CONTROL_PROGRAM_NV 0x891E +#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F +#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 +#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#define GL_LAYER_NV 0x8DAA +#define GL_NEXT_BUFFER_NV -2 +#define GL_SKIP_COMPONENTS4_NV -3 +#define GL_SKIP_COMPONENTS3_NV -4 +#define GL_SKIP_COMPONENTS2_NV -5 +#define GL_SKIP_COMPONENTS1_NV -6 +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 +#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E +#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F +#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_WRITE_DISCARD_NV 0x88BE +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +#define GL_VIDEO_BUFFER_NV 0x9020 +#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 +#define GL_FIELD_UPPER_NV 0x9022 +#define GL_FIELD_LOWER_NV 0x9023 +#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 +#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 +#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 +#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 +#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 +#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 +#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A +#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B +#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C +#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D +#define GL_PARTIAL_SUCCESS_NV 0x902E +#define GL_SUCCESS_NV 0x902F +#define GL_FAILURE_NV 0x9030 +#define GL_YCBYCR8_422_NV 0x9031 +#define GL_YCBAYCR8A_4224_NV 0x9032 +#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 +#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 +#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 +#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 +#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 +#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 +#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 +#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A +#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B +#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#define GL_FIXED_OES 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA4_S3TC 0x83A3 +#define GL_RGBA_DXT5_S3TC 0x83A4 +#define GL_RGBA4_DXT5_S3TC 0x83A5 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#define GL_ASYNC_MARKER_SGIX 0x8329 +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +#define GL_INTERLACE_SGIX 0x8094 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#define GL_LIST_PRIORITY_SGIX 0x8182 +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +#define GL_WRAP_BORDER_SUN 0x81D4 +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 +#define GL_SLICE_ACCUM_SUN 0x85CC +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +GLAPI int GLAD_GL_3DFX_multisample; +#endif +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 +GLAPI int GLAD_GL_3DFX_tbuffer; +typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC)(GLuint mask); +GLAPI PFNGLTBUFFERMASK3DFXPROC glad_glTbufferMask3DFX; +#define glTbufferMask3DFX glad_glTbufferMask3DFX +#endif +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +GLAPI int GLAD_GL_3DFX_texture_compression_FXT1; +#endif +#ifndef GL_AMD_blend_minmax_factor +#define GL_AMD_blend_minmax_factor 1 +GLAPI int GLAD_GL_AMD_blend_minmax_factor; +#endif +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 +GLAPI int GLAD_GL_AMD_conservative_depth; +#endif +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 +GLAPI int GLAD_GL_AMD_debug_output; +typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC)(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI PFNGLDEBUGMESSAGEENABLEAMDPROC glad_glDebugMessageEnableAMD; +#define glDebugMessageEnableAMD glad_glDebugMessageEnableAMD +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC)(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); +GLAPI PFNGLDEBUGMESSAGEINSERTAMDPROC glad_glDebugMessageInsertAMD; +#define glDebugMessageInsertAMD glad_glDebugMessageInsertAMD +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC)(GLDEBUGPROCAMD callback, void *userParam); +GLAPI PFNGLDEBUGMESSAGECALLBACKAMDPROC glad_glDebugMessageCallbackAMD; +#define glDebugMessageCallbackAMD glad_glDebugMessageCallbackAMD +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC)(GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +GLAPI PFNGLGETDEBUGMESSAGELOGAMDPROC glad_glGetDebugMessageLogAMD; +#define glGetDebugMessageLogAMD glad_glGetDebugMessageLogAMD +#endif +#ifndef GL_AMD_depth_clamp_separate +#define GL_AMD_depth_clamp_separate 1 +GLAPI int GLAD_GL_AMD_depth_clamp_separate; +#endif +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 +GLAPI int GLAD_GL_AMD_draw_buffers_blend; +typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC)(GLuint buf, GLenum src, GLenum dst); +GLAPI PFNGLBLENDFUNCINDEXEDAMDPROC glad_glBlendFuncIndexedAMD; +#define glBlendFuncIndexedAMD glad_glBlendFuncIndexedAMD +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC glad_glBlendFuncSeparateIndexedAMD; +#define glBlendFuncSeparateIndexedAMD glad_glBlendFuncSeparateIndexedAMD +typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC)(GLuint buf, GLenum mode); +GLAPI PFNGLBLENDEQUATIONINDEXEDAMDPROC glad_glBlendEquationIndexedAMD; +#define glBlendEquationIndexedAMD glad_glBlendEquationIndexedAMD +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC glad_glBlendEquationSeparateIndexedAMD; +#define glBlendEquationSeparateIndexedAMD glad_glBlendEquationSeparateIndexedAMD +#endif +#ifndef GL_AMD_framebuffer_multisample_advanced +#define GL_AMD_framebuffer_multisample_advanced 1 +GLAPI int GLAD_GL_AMD_framebuffer_multisample_advanced; +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)(GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glRenderbufferStorageMultisampleAdvancedAMD; +#define glRenderbufferStorageMultisampleAdvancedAMD glad_glRenderbufferStorageMultisampleAdvancedAMD +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)(GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glNamedRenderbufferStorageMultisampleAdvancedAMD; +#define glNamedRenderbufferStorageMultisampleAdvancedAMD glad_glNamedRenderbufferStorageMultisampleAdvancedAMD +#endif +#ifndef GL_AMD_framebuffer_sample_positions +#define GL_AMD_framebuffer_sample_positions 1 +GLAPI int GLAD_GL_AMD_framebuffer_sample_positions; +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +GLAPI PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC glad_glFramebufferSamplePositionsfvAMD; +#define glFramebufferSamplePositionsfvAMD glad_glFramebufferSamplePositionsfvAMD +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +GLAPI PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC glad_glNamedFramebufferSamplePositionsfvAMD; +#define glNamedFramebufferSamplePositionsfvAMD glad_glNamedFramebufferSamplePositionsfvAMD +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +GLAPI PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC glad_glGetFramebufferParameterfvAMD; +#define glGetFramebufferParameterfvAMD glad_glGetFramebufferParameterfvAMD +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +GLAPI PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC glad_glGetNamedFramebufferParameterfvAMD; +#define glGetNamedFramebufferParameterfvAMD glad_glGetNamedFramebufferParameterfvAMD +#endif +#ifndef GL_AMD_gcn_shader +#define GL_AMD_gcn_shader 1 +GLAPI int GLAD_GL_AMD_gcn_shader; +#endif +#ifndef GL_AMD_gpu_shader_half_float +#define GL_AMD_gpu_shader_half_float 1 +GLAPI int GLAD_GL_AMD_gpu_shader_half_float; +#endif +#ifndef GL_AMD_gpu_shader_int16 +#define GL_AMD_gpu_shader_int16 1 +GLAPI int GLAD_GL_AMD_gpu_shader_int16; +#endif +#ifndef GL_AMD_gpu_shader_int64 +#define GL_AMD_gpu_shader_int64 1 +GLAPI int GLAD_GL_AMD_gpu_shader_int64; +typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC)(GLint location, GLint64EXT x); +GLAPI PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV; +#define glUniform1i64NV glad_glUniform1i64NV +typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y); +GLAPI PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV; +#define glUniform2i64NV glad_glUniform2i64NV +typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV; +#define glUniform3i64NV glad_glUniform3i64NV +typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV; +#define glUniform4i64NV glad_glUniform4i64NV +typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV; +#define glUniform1i64vNV glad_glUniform1i64vNV +typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV; +#define glUniform2i64vNV glad_glUniform2i64vNV +typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV; +#define glUniform3i64vNV glad_glUniform3i64vNV +typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV; +#define glUniform4i64vNV glad_glUniform4i64vNV +typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC)(GLint location, GLuint64EXT x); +GLAPI PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV; +#define glUniform1ui64NV glad_glUniform1ui64NV +typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV; +#define glUniform2ui64NV glad_glUniform2ui64NV +typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV; +#define glUniform3ui64NV glad_glUniform3ui64NV +typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV; +#define glUniform4ui64NV glad_glUniform4ui64NV +typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV; +#define glUniform1ui64vNV glad_glUniform1ui64vNV +typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV; +#define glUniform2ui64vNV glad_glUniform2ui64vNV +typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV; +#define glUniform3ui64vNV glad_glUniform3ui64vNV +typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV; +#define glUniform4ui64vNV glad_glUniform4ui64vNV +typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC)(GLuint program, GLint location, GLint64EXT *params); +GLAPI PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV; +#define glGetUniformi64vNV glad_glGetUniformi64vNV +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC)(GLuint program, GLint location, GLuint64EXT *params); +GLAPI PFNGLGETUNIFORMUI64VNVPROC glad_glGetUniformui64vNV; +#define glGetUniformui64vNV glad_glGetUniformui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC)(GLuint program, GLint location, GLint64EXT x); +GLAPI PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV; +#define glProgramUniform1i64NV glad_glProgramUniform1i64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GLAPI PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV; +#define glProgramUniform2i64NV glad_glProgramUniform2i64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV; +#define glProgramUniform3i64NV glad_glProgramUniform3i64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV; +#define glProgramUniform4i64NV glad_glProgramUniform4i64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV; +#define glProgramUniform1i64vNV glad_glProgramUniform1i64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV; +#define glProgramUniform2i64vNV glad_glProgramUniform2i64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV; +#define glProgramUniform3i64vNV glad_glProgramUniform3i64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV; +#define glProgramUniform4i64vNV glad_glProgramUniform4i64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x); +GLAPI PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV; +#define glProgramUniform1ui64NV glad_glProgramUniform1ui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV; +#define glProgramUniform2ui64NV glad_glProgramUniform2ui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV; +#define glProgramUniform3ui64NV glad_glProgramUniform3ui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV; +#define glProgramUniform4ui64NV glad_glProgramUniform4ui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV; +#define glProgramUniform1ui64vNV glad_glProgramUniform1ui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV; +#define glProgramUniform2ui64vNV glad_glProgramUniform2ui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV; +#define glProgramUniform3ui64vNV glad_glProgramUniform3ui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV; +#define glProgramUniform4ui64vNV glad_glProgramUniform4ui64vNV +#endif +#ifndef GL_AMD_interleaved_elements +#define GL_AMD_interleaved_elements 1 +GLAPI int GLAD_GL_AMD_interleaved_elements; +typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC)(GLuint index, GLenum pname, GLint param); +GLAPI PFNGLVERTEXATTRIBPARAMETERIAMDPROC glad_glVertexAttribParameteriAMD; +#define glVertexAttribParameteriAMD glad_glVertexAttribParameteriAMD +#endif +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 +GLAPI int GLAD_GL_AMD_multi_draw_indirect; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)(GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC glad_glMultiDrawArraysIndirectAMD; +#define glMultiDrawArraysIndirectAMD glad_glMultiDrawArraysIndirectAMD +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC glad_glMultiDrawElementsIndirectAMD; +#define glMultiDrawElementsIndirectAMD glad_glMultiDrawElementsIndirectAMD +#endif +#ifndef GL_AMD_name_gen_delete +#define GL_AMD_name_gen_delete 1 +GLAPI int GLAD_GL_AMD_name_gen_delete; +typedef void (APIENTRYP PFNGLGENNAMESAMDPROC)(GLenum identifier, GLuint num, GLuint *names); +GLAPI PFNGLGENNAMESAMDPROC glad_glGenNamesAMD; +#define glGenNamesAMD glad_glGenNamesAMD +typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC)(GLenum identifier, GLuint num, const GLuint *names); +GLAPI PFNGLDELETENAMESAMDPROC glad_glDeleteNamesAMD; +#define glDeleteNamesAMD glad_glDeleteNamesAMD +typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC)(GLenum identifier, GLuint name); +GLAPI PFNGLISNAMEAMDPROC glad_glIsNameAMD; +#define glIsNameAMD glad_glIsNameAMD +#endif +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 +GLAPI int GLAD_GL_AMD_occlusion_query_event; +typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC)(GLenum target, GLuint id, GLenum pname, GLuint param); +GLAPI PFNGLQUERYOBJECTPARAMETERUIAMDPROC glad_glQueryObjectParameteruiAMD; +#define glQueryObjectParameteruiAMD glad_glQueryObjectParameteruiAMD +#endif +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +GLAPI int GLAD_GL_AMD_performance_monitor; +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GLAPI PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD; +#define glGetPerfMonitorGroupsAMD glad_glGetPerfMonitorGroupsAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC)(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GLAPI PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD; +#define glGetPerfMonitorCountersAMD glad_glGetPerfMonitorCountersAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GLAPI PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD; +#define glGetPerfMonitorGroupStringAMD glad_glGetPerfMonitorGroupStringAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GLAPI PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD; +#define glGetPerfMonitorCounterStringAMD glad_glGetPerfMonitorCounterStringAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, GLenum pname, void *data); +GLAPI PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD; +#define glGetPerfMonitorCounterInfoAMD glad_glGetPerfMonitorCounterInfoAMD +typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); +GLAPI PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD; +#define glGenPerfMonitorsAMD glad_glGenPerfMonitorsAMD +typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); +GLAPI PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD; +#define glDeletePerfMonitorsAMD glad_glDeletePerfMonitorsAMD +typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GLAPI PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD; +#define glSelectPerfMonitorCountersAMD glad_glSelectPerfMonitorCountersAMD +typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); +GLAPI PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD; +#define glBeginPerfMonitorAMD glad_glBeginPerfMonitorAMD +typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); +GLAPI PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD; +#define glEndPerfMonitorAMD glad_glEndPerfMonitorAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +GLAPI PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD; +#define glGetPerfMonitorCounterDataAMD glad_glGetPerfMonitorCounterDataAMD +#endif +#ifndef GL_AMD_pinned_memory +#define GL_AMD_pinned_memory 1 +GLAPI int GLAD_GL_AMD_pinned_memory; +#endif +#ifndef GL_AMD_query_buffer_object +#define GL_AMD_query_buffer_object 1 +GLAPI int GLAD_GL_AMD_query_buffer_object; +#endif +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 +GLAPI int GLAD_GL_AMD_sample_positions; +typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC)(GLenum pname, GLuint index, const GLfloat *val); +GLAPI PFNGLSETMULTISAMPLEFVAMDPROC glad_glSetMultisamplefvAMD; +#define glSetMultisamplefvAMD glad_glSetMultisamplefvAMD +#endif +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 +GLAPI int GLAD_GL_AMD_seamless_cubemap_per_texture; +#endif +#ifndef GL_AMD_shader_atomic_counter_ops +#define GL_AMD_shader_atomic_counter_ops 1 +GLAPI int GLAD_GL_AMD_shader_atomic_counter_ops; +#endif +#ifndef GL_AMD_shader_ballot +#define GL_AMD_shader_ballot 1 +GLAPI int GLAD_GL_AMD_shader_ballot; +#endif +#ifndef GL_AMD_shader_explicit_vertex_parameter +#define GL_AMD_shader_explicit_vertex_parameter 1 +GLAPI int GLAD_GL_AMD_shader_explicit_vertex_parameter; +#endif +#ifndef GL_AMD_shader_gpu_shader_half_float_fetch +#define GL_AMD_shader_gpu_shader_half_float_fetch 1 +GLAPI int GLAD_GL_AMD_shader_gpu_shader_half_float_fetch; +#endif +#ifndef GL_AMD_shader_image_load_store_lod +#define GL_AMD_shader_image_load_store_lod 1 +GLAPI int GLAD_GL_AMD_shader_image_load_store_lod; +#endif +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 +GLAPI int GLAD_GL_AMD_shader_stencil_export; +#endif +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 +GLAPI int GLAD_GL_AMD_shader_trinary_minmax; +#endif +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 +GLAPI int GLAD_GL_AMD_sparse_texture; +typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC)(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +GLAPI PFNGLTEXSTORAGESPARSEAMDPROC glad_glTexStorageSparseAMD; +#define glTexStorageSparseAMD glad_glTexStorageSparseAMD +typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC)(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +GLAPI PFNGLTEXTURESTORAGESPARSEAMDPROC glad_glTextureStorageSparseAMD; +#define glTextureStorageSparseAMD glad_glTextureStorageSparseAMD +#endif +#ifndef GL_AMD_stencil_operation_extended +#define GL_AMD_stencil_operation_extended 1 +GLAPI int GLAD_GL_AMD_stencil_operation_extended; +typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC)(GLenum face, GLuint value); +GLAPI PFNGLSTENCILOPVALUEAMDPROC glad_glStencilOpValueAMD; +#define glStencilOpValueAMD glad_glStencilOpValueAMD +#endif +#ifndef GL_AMD_texture_gather_bias_lod +#define GL_AMD_texture_gather_bias_lod 1 +GLAPI int GLAD_GL_AMD_texture_gather_bias_lod; +#endif +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 +GLAPI int GLAD_GL_AMD_texture_texture4; +#endif +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 +GLAPI int GLAD_GL_AMD_transform_feedback3_lines_triangles; +#endif +#ifndef GL_AMD_transform_feedback4 +#define GL_AMD_transform_feedback4 1 +GLAPI int GLAD_GL_AMD_transform_feedback4; +#endif +#ifndef GL_AMD_vertex_shader_layer +#define GL_AMD_vertex_shader_layer 1 +GLAPI int GLAD_GL_AMD_vertex_shader_layer; +#endif +#ifndef GL_AMD_vertex_shader_tessellator +#define GL_AMD_vertex_shader_tessellator 1 +GLAPI int GLAD_GL_AMD_vertex_shader_tessellator; +typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC)(GLfloat factor); +GLAPI PFNGLTESSELLATIONFACTORAMDPROC glad_glTessellationFactorAMD; +#define glTessellationFactorAMD glad_glTessellationFactorAMD +typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC)(GLenum mode); +GLAPI PFNGLTESSELLATIONMODEAMDPROC glad_glTessellationModeAMD; +#define glTessellationModeAMD glad_glTessellationModeAMD +#endif +#ifndef GL_AMD_vertex_shader_viewport_index +#define GL_AMD_vertex_shader_viewport_index 1 +GLAPI int GLAD_GL_AMD_vertex_shader_viewport_index; +#endif +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 +GLAPI int GLAD_GL_APPLE_aux_depth_stencil; +#endif +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 +GLAPI int GLAD_GL_APPLE_client_storage; +#endif +#ifndef GL_APPLE_element_array +#define GL_APPLE_element_array 1 +GLAPI int GLAD_GL_APPLE_element_array; +typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC)(GLenum type, const void *pointer); +GLAPI PFNGLELEMENTPOINTERAPPLEPROC glad_glElementPointerAPPLE; +#define glElementPointerAPPLE glad_glElementPointerAPPLE +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, GLint first, GLsizei count); +GLAPI PFNGLDRAWELEMENTARRAYAPPLEPROC glad_glDrawElementArrayAPPLE; +#define glDrawElementArrayAPPLE glad_glDrawElementArrayAPPLE +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +GLAPI PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC glad_glDrawRangeElementArrayAPPLE; +#define glDrawRangeElementArrayAPPLE glad_glDrawRangeElementArrayAPPLE +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC glad_glMultiDrawElementArrayAPPLE; +#define glMultiDrawElementArrayAPPLE glad_glMultiDrawElementArrayAPPLE +typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC glad_glMultiDrawRangeElementArrayAPPLE; +#define glMultiDrawRangeElementArrayAPPLE glad_glMultiDrawRangeElementArrayAPPLE +#endif +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 +GLAPI int GLAD_GL_APPLE_fence; +typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC)(GLsizei n, GLuint *fences); +GLAPI PFNGLGENFENCESAPPLEPROC glad_glGenFencesAPPLE; +#define glGenFencesAPPLE glad_glGenFencesAPPLE +typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC)(GLsizei n, const GLuint *fences); +GLAPI PFNGLDELETEFENCESAPPLEPROC glad_glDeleteFencesAPPLE; +#define glDeleteFencesAPPLE glad_glDeleteFencesAPPLE +typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC)(GLuint fence); +GLAPI PFNGLSETFENCEAPPLEPROC glad_glSetFenceAPPLE; +#define glSetFenceAPPLE glad_glSetFenceAPPLE +typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC)(GLuint fence); +GLAPI PFNGLISFENCEAPPLEPROC glad_glIsFenceAPPLE; +#define glIsFenceAPPLE glad_glIsFenceAPPLE +typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC)(GLuint fence); +GLAPI PFNGLTESTFENCEAPPLEPROC glad_glTestFenceAPPLE; +#define glTestFenceAPPLE glad_glTestFenceAPPLE +typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC)(GLuint fence); +GLAPI PFNGLFINISHFENCEAPPLEPROC glad_glFinishFenceAPPLE; +#define glFinishFenceAPPLE glad_glFinishFenceAPPLE +typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC)(GLenum object, GLuint name); +GLAPI PFNGLTESTOBJECTAPPLEPROC glad_glTestObjectAPPLE; +#define glTestObjectAPPLE glad_glTestObjectAPPLE +typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC)(GLenum object, GLint name); +GLAPI PFNGLFINISHOBJECTAPPLEPROC glad_glFinishObjectAPPLE; +#define glFinishObjectAPPLE glad_glFinishObjectAPPLE +#endif +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +GLAPI int GLAD_GL_APPLE_float_pixels; +#endif +#ifndef GL_APPLE_flush_buffer_range +#define GL_APPLE_flush_buffer_range 1 +GLAPI int GLAD_GL_APPLE_flush_buffer_range; +typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLBUFFERPARAMETERIAPPLEPROC glad_glBufferParameteriAPPLE; +#define glBufferParameteriAPPLE glad_glBufferParameteriAPPLE +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)(GLenum target, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glad_glFlushMappedBufferRangeAPPLE; +#define glFlushMappedBufferRangeAPPLE glad_glFlushMappedBufferRangeAPPLE +#endif +#ifndef GL_APPLE_object_purgeable +#define GL_APPLE_object_purgeable 1 +GLAPI int GLAD_GL_APPLE_object_purgeable; +typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, GLenum option); +GLAPI PFNGLOBJECTPURGEABLEAPPLEPROC glad_glObjectPurgeableAPPLE; +#define glObjectPurgeableAPPLE glad_glObjectPurgeableAPPLE +typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, GLenum option); +GLAPI PFNGLOBJECTUNPURGEABLEAPPLEPROC glad_glObjectUnpurgeableAPPLE; +#define glObjectUnpurgeableAPPLE glad_glObjectUnpurgeableAPPLE +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC)(GLenum objectType, GLuint name, GLenum pname, GLint *params); +GLAPI PFNGLGETOBJECTPARAMETERIVAPPLEPROC glad_glGetObjectParameterivAPPLE; +#define glGetObjectParameterivAPPLE glad_glGetObjectParameterivAPPLE +#endif +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +GLAPI int GLAD_GL_APPLE_rgb_422; +#endif +#ifndef GL_APPLE_row_bytes +#define GL_APPLE_row_bytes 1 +GLAPI int GLAD_GL_APPLE_row_bytes; +#endif +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +GLAPI int GLAD_GL_APPLE_specular_vector; +#endif +#ifndef GL_APPLE_texture_range +#define GL_APPLE_texture_range 1 +GLAPI int GLAD_GL_APPLE_texture_range; +typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC)(GLenum target, GLsizei length, const void *pointer); +GLAPI PFNGLTEXTURERANGEAPPLEPROC glad_glTextureRangeAPPLE; +#define glTextureRangeAPPLE glad_glTextureRangeAPPLE +typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)(GLenum target, GLenum pname, void **params); +GLAPI PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC glad_glGetTexParameterPointervAPPLE; +#define glGetTexParameterPointervAPPLE glad_glGetTexParameterPointervAPPLE +#endif +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +GLAPI int GLAD_GL_APPLE_transform_hint; +#endif +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 +GLAPI int GLAD_GL_APPLE_vertex_array_object; +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC)(GLuint array); +GLAPI PFNGLBINDVERTEXARRAYAPPLEPROC glad_glBindVertexArrayAPPLE; +#define glBindVertexArrayAPPLE glad_glBindVertexArrayAPPLE +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC)(GLsizei n, const GLuint *arrays); +GLAPI PFNGLDELETEVERTEXARRAYSAPPLEPROC glad_glDeleteVertexArraysAPPLE; +#define glDeleteVertexArraysAPPLE glad_glDeleteVertexArraysAPPLE +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC)(GLsizei n, GLuint *arrays); +GLAPI PFNGLGENVERTEXARRAYSAPPLEPROC glad_glGenVertexArraysAPPLE; +#define glGenVertexArraysAPPLE glad_glGenVertexArraysAPPLE +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC)(GLuint array); +GLAPI PFNGLISVERTEXARRAYAPPLEPROC glad_glIsVertexArrayAPPLE; +#define glIsVertexArrayAPPLE glad_glIsVertexArrayAPPLE +#endif +#ifndef GL_APPLE_vertex_array_range +#define GL_APPLE_vertex_array_range 1 +GLAPI int GLAD_GL_APPLE_vertex_array_range; +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); +GLAPI PFNGLVERTEXARRAYRANGEAPPLEPROC glad_glVertexArrayRangeAPPLE; +#define glVertexArrayRangeAPPLE glad_glVertexArrayRangeAPPLE +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); +GLAPI PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC glad_glFlushVertexArrayRangeAPPLE; +#define glFlushVertexArrayRangeAPPLE glad_glFlushVertexArrayRangeAPPLE +typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)(GLenum pname, GLint param); +GLAPI PFNGLVERTEXARRAYPARAMETERIAPPLEPROC glad_glVertexArrayParameteriAPPLE; +#define glVertexArrayParameteriAPPLE glad_glVertexArrayParameteriAPPLE +#endif +#ifndef GL_APPLE_vertex_program_evaluators +#define GL_APPLE_vertex_program_evaluators 1 +GLAPI int GLAD_GL_APPLE_vertex_program_evaluators; +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +GLAPI PFNGLENABLEVERTEXATTRIBAPPLEPROC glad_glEnableVertexAttribAPPLE; +#define glEnableVertexAttribAPPLE glad_glEnableVertexAttribAPPLE +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +GLAPI PFNGLDISABLEVERTEXATTRIBAPPLEPROC glad_glDisableVertexAttribAPPLE; +#define glDisableVertexAttribAPPLE glad_glDisableVertexAttribAPPLE +typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)(GLuint index, GLenum pname); +GLAPI PFNGLISVERTEXATTRIBENABLEDAPPLEPROC glad_glIsVertexAttribEnabledAPPLE; +#define glIsVertexAttribEnabledAPPLE glad_glIsVertexAttribEnabledAPPLE +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +GLAPI PFNGLMAPVERTEXATTRIB1DAPPLEPROC glad_glMapVertexAttrib1dAPPLE; +#define glMapVertexAttrib1dAPPLE glad_glMapVertexAttrib1dAPPLE +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +GLAPI PFNGLMAPVERTEXATTRIB1FAPPLEPROC glad_glMapVertexAttrib1fAPPLE; +#define glMapVertexAttrib1fAPPLE glad_glMapVertexAttrib1fAPPLE +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +GLAPI PFNGLMAPVERTEXATTRIB2DAPPLEPROC glad_glMapVertexAttrib2dAPPLE; +#define glMapVertexAttrib2dAPPLE glad_glMapVertexAttrib2dAPPLE +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +GLAPI PFNGLMAPVERTEXATTRIB2FAPPLEPROC glad_glMapVertexAttrib2fAPPLE; +#define glMapVertexAttrib2fAPPLE glad_glMapVertexAttrib2fAPPLE +#endif +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 +GLAPI int GLAD_GL_APPLE_ycbcr_422; +#endif +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 +GLAPI int GLAD_GL_ARB_ES2_compatibility; +#endif +#ifndef GL_ARB_ES3_1_compatibility +#define GL_ARB_ES3_1_compatibility 1 +GLAPI int GLAD_GL_ARB_ES3_1_compatibility; +typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); +GLAPI PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion; +#define glMemoryBarrierByRegion glad_glMemoryBarrierByRegion +#endif +#ifndef GL_ARB_ES3_2_compatibility +#define GL_ARB_ES3_2_compatibility 1 +GLAPI int GLAD_GL_ARB_ES3_2_compatibility; +typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +GLAPI PFNGLPRIMITIVEBOUNDINGBOXARBPROC glad_glPrimitiveBoundingBoxARB; +#define glPrimitiveBoundingBoxARB glad_glPrimitiveBoundingBoxARB +#endif +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 +GLAPI int GLAD_GL_ARB_ES3_compatibility; +#endif +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 +GLAPI int GLAD_GL_ARB_arrays_of_arrays; +#endif +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 +GLAPI int GLAD_GL_ARB_base_instance; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GLAPI PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance; +#define glDrawArraysInstancedBaseInstance glad_glDrawArraysInstancedBaseInstance +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance; +#define glDrawElementsInstancedBaseInstance glad_glDrawElementsInstancedBaseInstance +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance; +#define glDrawElementsInstancedBaseVertexBaseInstance glad_glDrawElementsInstancedBaseVertexBaseInstance +#endif +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 +GLAPI int GLAD_GL_ARB_bindless_texture; +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC)(GLuint texture); +GLAPI PFNGLGETTEXTUREHANDLEARBPROC glad_glGetTextureHandleARB; +#define glGetTextureHandleARB glad_glGetTextureHandleARB +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC)(GLuint texture, GLuint sampler); +GLAPI PFNGLGETTEXTURESAMPLERHANDLEARBPROC glad_glGetTextureSamplerHandleARB; +#define glGetTextureSamplerHandleARB glad_glGetTextureSamplerHandleARB +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glad_glMakeTextureHandleResidentARB; +#define glMakeTextureHandleResidentARB glad_glMakeTextureHandleResidentARB +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glad_glMakeTextureHandleNonResidentARB; +#define glMakeTextureHandleNonResidentARB glad_glMakeTextureHandleNonResidentARB +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI PFNGLGETIMAGEHANDLEARBPROC glad_glGetImageHandleARB; +#define glGetImageHandleARB glad_glGetImageHandleARB +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle, GLenum access); +GLAPI PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glad_glMakeImageHandleResidentARB; +#define glMakeImageHandleResidentARB glad_glMakeImageHandleResidentARB +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glad_glMakeImageHandleNonResidentARB; +#define glMakeImageHandleNonResidentARB glad_glMakeImageHandleNonResidentARB +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC)(GLint location, GLuint64 value); +GLAPI PFNGLUNIFORMHANDLEUI64ARBPROC glad_glUniformHandleui64ARB; +#define glUniformHandleui64ARB glad_glUniformHandleui64ARB +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORMHANDLEUI64VARBPROC glad_glUniformHandleui64vARB; +#define glUniformHandleui64vARB glad_glUniformHandleui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)(GLuint program, GLint location, GLuint64 value); +GLAPI PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glad_glProgramUniformHandleui64ARB; +#define glProgramUniformHandleui64ARB glad_glProgramUniformHandleui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glad_glProgramUniformHandleui64vARB; +#define glProgramUniformHandleui64vARB glad_glProgramUniformHandleui64vARB +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLISTEXTUREHANDLERESIDENTARBPROC glad_glIsTextureHandleResidentARB; +#define glIsTextureHandleResidentARB glad_glIsTextureHandleResidentARB +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLISIMAGEHANDLERESIDENTARBPROC glad_glIsImageHandleResidentARB; +#define glIsImageHandleResidentARB glad_glIsImageHandleResidentARB +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC)(GLuint index, GLuint64EXT x); +GLAPI PFNGLVERTEXATTRIBL1UI64ARBPROC glad_glVertexAttribL1ui64ARB; +#define glVertexAttribL1ui64ARB glad_glVertexAttribL1ui64ARB +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL1UI64VARBPROC glad_glVertexAttribL1ui64vARB; +#define glVertexAttribL1ui64vARB glad_glVertexAttribL1ui64vARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC)(GLuint index, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETVERTEXATTRIBLUI64VARBPROC glad_glGetVertexAttribLui64vARB; +#define glGetVertexAttribLui64vARB glad_glGetVertexAttribLui64vARB +#endif +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 +GLAPI int GLAD_GL_ARB_blend_func_extended; +#endif +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 +GLAPI int GLAD_GL_ARB_buffer_storage; +typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI PFNGLBUFFERSTORAGEPROC glad_glBufferStorage; +#define glBufferStorage glad_glBufferStorage +#endif +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 +GLAPI int GLAD_GL_ARB_cl_event; +typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC)(struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +GLAPI PFNGLCREATESYNCFROMCLEVENTARBPROC glad_glCreateSyncFromCLeventARB; +#define glCreateSyncFromCLeventARB glad_glCreateSyncFromCLeventARB +#endif +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 +GLAPI int GLAD_GL_ARB_clear_buffer_object; +typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData; +#define glClearBufferData glad_glClearBufferData +typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData; +#define glClearBufferSubData glad_glClearBufferSubData +#endif +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 +GLAPI int GLAD_GL_ARB_clear_texture; +typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage; +#define glClearTexImage glad_glClearTexImage +typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage; +#define glClearTexSubImage glad_glClearTexSubImage +#endif +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 +GLAPI int GLAD_GL_ARB_clip_control; +typedef void (APIENTRYP PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); +GLAPI PFNGLCLIPCONTROLPROC glad_glClipControl; +#define glClipControl glad_glClipControl +#endif +#ifndef GL_ARB_color_buffer_float +#define GL_ARB_color_buffer_float 1 +GLAPI int GLAD_GL_ARB_color_buffer_float; +typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC)(GLenum target, GLenum clamp); +GLAPI PFNGLCLAMPCOLORARBPROC glad_glClampColorARB; +#define glClampColorARB glad_glClampColorARB +#endif +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 +GLAPI int GLAD_GL_ARB_compatibility; +#endif +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 1 +GLAPI int GLAD_GL_ARB_compressed_texture_pixel_storage; +#endif +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 +GLAPI int GLAD_GL_ARB_compute_shader; +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +GLAPI PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute; +#define glDispatchCompute glad_glDispatchCompute +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); +GLAPI PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect; +#define glDispatchComputeIndirect glad_glDispatchComputeIndirect +#endif +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 +GLAPI int GLAD_GL_ARB_compute_variable_group_size; +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +GLAPI PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glad_glDispatchComputeGroupSizeARB; +#define glDispatchComputeGroupSizeARB glad_glDispatchComputeGroupSizeARB +#endif +#ifndef GL_ARB_conditional_render_inverted +#define GL_ARB_conditional_render_inverted 1 +GLAPI int GLAD_GL_ARB_conditional_render_inverted; +#endif +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 +GLAPI int GLAD_GL_ARB_conservative_depth; +#endif +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 +GLAPI int GLAD_GL_ARB_copy_buffer; +#endif +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 +GLAPI int GLAD_GL_ARB_copy_image; +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +GLAPI PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData; +#define glCopyImageSubData glad_glCopyImageSubData +#endif +#ifndef GL_ARB_cull_distance +#define GL_ARB_cull_distance 1 +GLAPI int GLAD_GL_ARB_cull_distance; +#endif +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 +GLAPI int GLAD_GL_ARB_debug_output; +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB; +#define glDebugMessageControlARB glad_glDebugMessageControlARB +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB; +#define glDebugMessageInsertARB glad_glDebugMessageInsertARB +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, const void *userParam); +GLAPI PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB; +#define glDebugMessageCallbackARB glad_glDebugMessageCallbackARB +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB; +#define glGetDebugMessageLogARB glad_glGetDebugMessageLogARB +#endif +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 +GLAPI int GLAD_GL_ARB_depth_buffer_float; +#endif +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +GLAPI int GLAD_GL_ARB_depth_clamp; +#endif +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +GLAPI int GLAD_GL_ARB_depth_texture; +#endif +#ifndef GL_ARB_derivative_control +#define GL_ARB_derivative_control 1 +GLAPI int GLAD_GL_ARB_derivative_control; +#endif +#ifndef GL_ARB_direct_state_access +#define GL_ARB_direct_state_access 1 +GLAPI int GLAD_GL_ARB_direct_state_access; +typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks; +#define glCreateTransformFeedbacks glad_glCreateTransformFeedbacks +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, GLuint buffer); +GLAPI PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase; +#define glTransformFeedbackBufferBase glad_glTransformFeedbackBufferBase +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange; +#define glTransformFeedbackBufferRange glad_glTransformFeedbackBufferRange +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint *param); +GLAPI PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv; +#define glGetTransformFeedbackiv glad_glGetTransformFeedbackiv +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint *param); +GLAPI PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v; +#define glGetTransformFeedbacki_v glad_glGetTransformFeedbacki_v +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); +GLAPI PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v; +#define glGetTransformFeedbacki64_v glad_glGetTransformFeedbacki64_v +typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint *buffers); +GLAPI PFNGLCREATEBUFFERSPROC glad_glCreateBuffers; +#define glCreateBuffers glad_glCreateBuffers +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage; +#define glNamedBufferStorage glad_glNamedBufferStorage +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData; +#define glNamedBufferData glad_glNamedBufferData +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData; +#define glNamedBufferSubData glad_glNamedBufferSubData +typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData; +#define glCopyNamedBufferSubData glad_glCopyNamedBufferSubData +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData; +#define glClearNamedBufferData glad_glClearNamedBufferData +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData; +#define glClearNamedBufferSubData glad_glClearNamedBufferSubData +typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); +GLAPI PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer; +#define glMapNamedBuffer glad_glMapNamedBuffer +typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange; +#define glMapNamedBufferRange glad_glMapNamedBufferRange +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); +GLAPI PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer; +#define glUnmapNamedBuffer glad_glUnmapNamedBuffer +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange; +#define glFlushMappedNamedBufferRange glad_glFlushMappedNamedBufferRange +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv; +#define glGetNamedBufferParameteriv glad_glGetNamedBufferParameteriv +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, GLint64 *params); +GLAPI PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v; +#define glGetNamedBufferParameteri64v glad_glGetNamedBufferParameteri64v +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, void **params); +GLAPI PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv; +#define glGetNamedBufferPointerv glad_glGetNamedBufferPointerv +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData; +#define glGetNamedBufferSubData glad_glGetNamedBufferSubData +typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +GLAPI PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers; +#define glCreateFramebuffers glad_glCreateFramebuffers +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer; +#define glNamedFramebufferRenderbuffer glad_glNamedFramebufferRenderbuffer +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, GLint param); +GLAPI PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri; +#define glNamedFramebufferParameteri glad_glNamedFramebufferParameteri +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture; +#define glNamedFramebufferTexture glad_glNamedFramebufferTexture +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer; +#define glNamedFramebufferTextureLayer glad_glNamedFramebufferTextureLayer +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); +GLAPI PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer; +#define glNamedFramebufferDrawBuffer glad_glNamedFramebufferDrawBuffer +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers; +#define glNamedFramebufferDrawBuffers glad_glNamedFramebufferDrawBuffers +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); +GLAPI PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer; +#define glNamedFramebufferReadBuffer glad_glNamedFramebufferReadBuffer +typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); +GLAPI PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData; +#define glInvalidateNamedFramebufferData glad_glInvalidateNamedFramebufferData +typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData; +#define glInvalidateNamedFramebufferSubData glad_glInvalidateNamedFramebufferSubData +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv; +#define glClearNamedFramebufferiv glad_glClearNamedFramebufferiv +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv; +#define glClearNamedFramebufferuiv glad_glClearNamedFramebufferuiv +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv; +#define glClearNamedFramebufferfv glad_glClearNamedFramebufferfv +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi; +#define glClearNamedFramebufferfi glad_glClearNamedFramebufferfi +typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer; +#define glBlitNamedFramebuffer glad_glBlitNamedFramebuffer +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, GLenum target); +GLAPI PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus; +#define glCheckNamedFramebufferStatus glad_glCheckNamedFramebufferStatus +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, GLenum pname, GLint *param); +GLAPI PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv; +#define glGetNamedFramebufferParameteriv glad_glGetNamedFramebufferParameteriv +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv; +#define glGetNamedFramebufferAttachmentParameteriv glad_glGetNamedFramebufferAttachmentParameteriv +typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +GLAPI PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers; +#define glCreateRenderbuffers glad_glCreateRenderbuffers +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage; +#define glNamedRenderbufferStorage glad_glNamedRenderbufferStorage +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample; +#define glNamedRenderbufferStorageMultisample glad_glNamedRenderbufferStorageMultisample +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv; +#define glGetNamedRenderbufferParameteriv glad_glGetNamedRenderbufferParameteriv +typedef void (APIENTRYP PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint *textures); +GLAPI PFNGLCREATETEXTURESPROC glad_glCreateTextures; +#define glCreateTextures glad_glCreateTextures +typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer; +#define glTextureBuffer glad_glTextureBuffer +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange; +#define glTextureBufferRange glad_glTextureBufferRange +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D; +#define glTextureStorage1D glad_glTextureStorage1D +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D; +#define glTextureStorage2D glad_glTextureStorage2D +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D; +#define glTextureStorage3D glad_glTextureStorage3D +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample; +#define glTextureStorage2DMultisample glad_glTextureStorage2DMultisample +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample; +#define glTextureStorage3DMultisample glad_glTextureStorage3DMultisample +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D; +#define glTextureSubImage1D glad_glTextureSubImage1D +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D; +#define glTextureSubImage2D glad_glTextureSubImage2D +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D; +#define glTextureSubImage3D glad_glTextureSubImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D; +#define glCompressedTextureSubImage1D glad_glCompressedTextureSubImage1D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D; +#define glCompressedTextureSubImage2D glad_glCompressedTextureSubImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D; +#define glCompressedTextureSubImage3D glad_glCompressedTextureSubImage3D +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D; +#define glCopyTextureSubImage1D glad_glCopyTextureSubImage1D +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D; +#define glCopyTextureSubImage2D glad_glCopyTextureSubImage2D +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D; +#define glCopyTextureSubImage3D glad_glCopyTextureSubImage3D +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); +GLAPI PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf; +#define glTextureParameterf glad_glTextureParameterf +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, const GLfloat *param); +GLAPI PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv; +#define glTextureParameterfv glad_glTextureParameterfv +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); +GLAPI PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri; +#define glTextureParameteri glad_glTextureParameteri +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, const GLint *params); +GLAPI PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv; +#define glTextureParameterIiv glad_glTextureParameterIiv +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv; +#define glTextureParameterIuiv glad_glTextureParameterIuiv +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, const GLint *param); +GLAPI PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv; +#define glTextureParameteriv glad_glTextureParameteriv +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); +GLAPI PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap; +#define glGenerateTextureMipmap glad_glGenerateTextureMipmap +typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); +GLAPI PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit; +#define glBindTextureUnit glad_glBindTextureUnit +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage; +#define glGetTextureImage glad_glGetTextureImage +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLsizei bufSize, void *pixels); +GLAPI PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage; +#define glGetCompressedTextureImage glad_glGetCompressedTextureImage +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv; +#define glGetTextureLevelParameterfv glad_glGetTextureLevelParameterfv +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv; +#define glGetTextureLevelParameteriv glad_glGetTextureLevelParameteriv +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv; +#define glGetTextureParameterfv glad_glGetTextureParameterfv +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv; +#define glGetTextureParameterIiv glad_glGetTextureParameterIiv +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv; +#define glGetTextureParameterIuiv glad_glGetTextureParameterIuiv +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv; +#define glGetTextureParameteriv glad_glGetTextureParameteriv +typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +GLAPI PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays; +#define glCreateVertexArrays glad_glCreateVertexArrays +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +GLAPI PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib; +#define glDisableVertexArrayAttrib glad_glDisableVertexArrayAttrib +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +GLAPI PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib; +#define glEnableVertexArrayAttrib glad_glEnableVertexArrayAttrib +typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); +GLAPI PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer; +#define glVertexArrayElementBuffer glad_glVertexArrayElementBuffer +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer; +#define glVertexArrayVertexBuffer glad_glVertexArrayVertexBuffer +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +GLAPI PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers; +#define glVertexArrayVertexBuffers glad_glVertexArrayVertexBuffers +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding; +#define glVertexArrayAttribBinding glad_glVertexArrayAttribBinding +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat; +#define glVertexArrayAttribFormat glad_glVertexArrayAttribFormat +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat; +#define glVertexArrayAttribIFormat glad_glVertexArrayAttribIFormat +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat; +#define glVertexArrayAttribLFormat glad_glVertexArrayAttribLFormat +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); +GLAPI PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor; +#define glVertexArrayBindingDivisor glad_glVertexArrayBindingDivisor +typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint *param); +GLAPI PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv; +#define glGetVertexArrayiv glad_glGetVertexArrayiv +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv; +#define glGetVertexArrayIndexediv glad_glGetVertexArrayIndexediv +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); +GLAPI PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv; +#define glGetVertexArrayIndexed64iv glad_glGetVertexArrayIndexed64iv +typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint *samplers); +GLAPI PFNGLCREATESAMPLERSPROC glad_glCreateSamplers; +#define glCreateSamplers glad_glCreateSamplers +typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +GLAPI PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines; +#define glCreateProgramPipelines glad_glCreateProgramPipelines +typedef void (APIENTRYP PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint *ids); +GLAPI PFNGLCREATEQUERIESPROC glad_glCreateQueries; +#define glCreateQueries glad_glCreateQueries +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v; +#define glGetQueryBufferObjecti64v glad_glGetQueryBufferObjecti64v +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv; +#define glGetQueryBufferObjectiv glad_glGetQueryBufferObjectiv +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v; +#define glGetQueryBufferObjectui64v glad_glGetQueryBufferObjectui64v +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv; +#define glGetQueryBufferObjectuiv glad_glGetQueryBufferObjectuiv +#endif +#ifndef GL_ARB_draw_buffers +#define GL_ARB_draw_buffers 1 +GLAPI int GLAD_GL_ARB_draw_buffers; +typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC)(GLsizei n, const GLenum *bufs); +GLAPI PFNGLDRAWBUFFERSARBPROC glad_glDrawBuffersARB; +#define glDrawBuffersARB glad_glDrawBuffersARB +#endif +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 +GLAPI int GLAD_GL_ARB_draw_buffers_blend; +typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC)(GLuint buf, GLenum mode); +GLAPI PFNGLBLENDEQUATIONIARBPROC glad_glBlendEquationiARB; +#define glBlendEquationiARB glad_glBlendEquationiARB +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEIARBPROC glad_glBlendEquationSeparateiARB; +#define glBlendEquationSeparateiARB glad_glBlendEquationSeparateiARB +typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC)(GLuint buf, GLenum src, GLenum dst); +GLAPI PFNGLBLENDFUNCIARBPROC glad_glBlendFunciARB; +#define glBlendFunciARB glad_glBlendFunciARB +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEIARBPROC glad_glBlendFuncSeparateiARB; +#define glBlendFuncSeparateiARB glad_glBlendFuncSeparateiARB +#endif +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +GLAPI int GLAD_GL_ARB_draw_elements_base_vertex; +#endif +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 +GLAPI int GLAD_GL_ARB_draw_indirect; +#endif +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 +GLAPI int GLAD_GL_ARB_draw_instanced; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GLAPI PFNGLDRAWARRAYSINSTANCEDARBPROC glad_glDrawArraysInstancedARB; +#define glDrawArraysInstancedARB glad_glDrawArraysInstancedARB +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GLAPI PFNGLDRAWELEMENTSINSTANCEDARBPROC glad_glDrawElementsInstancedARB; +#define glDrawElementsInstancedARB glad_glDrawElementsInstancedARB +#endif +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 +GLAPI int GLAD_GL_ARB_enhanced_layouts; +#endif +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 +GLAPI int GLAD_GL_ARB_explicit_attrib_location; +#endif +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 +GLAPI int GLAD_GL_ARB_explicit_uniform_location; +#endif +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +GLAPI int GLAD_GL_ARB_fragment_coord_conventions; +#endif +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 +GLAPI int GLAD_GL_ARB_fragment_layer_viewport; +#endif +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 +GLAPI int GLAD_GL_ARB_fragment_program; +typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI PFNGLPROGRAMSTRINGARBPROC glad_glProgramStringARB; +#define glProgramStringARB glad_glProgramStringARB +typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program); +GLAPI PFNGLBINDPROGRAMARBPROC glad_glBindProgramARB; +#define glBindProgramARB glad_glBindProgramARB +typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint *programs); +GLAPI PFNGLDELETEPROGRAMSARBPROC glad_glDeleteProgramsARB; +#define glDeleteProgramsARB glad_glDeleteProgramsARB +typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint *programs); +GLAPI PFNGLGENPROGRAMSARBPROC glad_glGenProgramsARB; +#define glGenProgramsARB glad_glGenProgramsARB +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMENVPARAMETER4DARBPROC glad_glProgramEnvParameter4dARB; +#define glProgramEnvParameter4dARB glad_glProgramEnvParameter4dARB +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble *params); +GLAPI PFNGLPROGRAMENVPARAMETER4DVARBPROC glad_glProgramEnvParameter4dvARB; +#define glProgramEnvParameter4dvARB glad_glProgramEnvParameter4dvARB +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLPROGRAMENVPARAMETER4FARBPROC glad_glProgramEnvParameter4fARB; +#define glProgramEnvParameter4fARB glad_glProgramEnvParameter4fARB +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat *params); +GLAPI PFNGLPROGRAMENVPARAMETER4FVARBPROC glad_glProgramEnvParameter4fvARB; +#define glProgramEnvParameter4fvARB glad_glProgramEnvParameter4fvARB +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMLOCALPARAMETER4DARBPROC glad_glProgramLocalParameter4dARB; +#define glProgramLocalParameter4dARB glad_glProgramLocalParameter4dARB +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble *params); +GLAPI PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glad_glProgramLocalParameter4dvARB; +#define glProgramLocalParameter4dvARB glad_glProgramLocalParameter4dvARB +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLPROGRAMLOCALPARAMETER4FARBPROC glad_glProgramLocalParameter4fARB; +#define glProgramLocalParameter4fARB glad_glProgramLocalParameter4fARB +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat *params); +GLAPI PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glad_glProgramLocalParameter4fvARB; +#define glProgramLocalParameter4fvARB glad_glProgramLocalParameter4fvARB +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble *params); +GLAPI PFNGLGETPROGRAMENVPARAMETERDVARBPROC glad_glGetProgramEnvParameterdvARB; +#define glGetProgramEnvParameterdvARB glad_glGetProgramEnvParameterdvARB +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat *params); +GLAPI PFNGLGETPROGRAMENVPARAMETERFVARBPROC glad_glGetProgramEnvParameterfvARB; +#define glGetProgramEnvParameterfvARB glad_glGetProgramEnvParameterfvARB +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble *params); +GLAPI PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glad_glGetProgramLocalParameterdvARB; +#define glGetProgramLocalParameterdvARB glad_glGetProgramLocalParameterdvARB +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat *params); +GLAPI PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glad_glGetProgramLocalParameterfvARB; +#define glGetProgramLocalParameterfvARB glad_glGetProgramLocalParameterfvARB +typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMIVARBPROC glad_glGetProgramivARB; +#define glGetProgramivARB glad_glGetProgramivARB +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, void *string); +GLAPI PFNGLGETPROGRAMSTRINGARBPROC glad_glGetProgramStringARB; +#define glGetProgramStringARB glad_glGetProgramStringARB +typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC)(GLuint program); +GLAPI PFNGLISPROGRAMARBPROC glad_glIsProgramARB; +#define glIsProgramARB glad_glIsProgramARB +#endif +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 +GLAPI int GLAD_GL_ARB_fragment_program_shadow; +#endif +#ifndef GL_ARB_fragment_shader +#define GL_ARB_fragment_shader 1 +GLAPI int GLAD_GL_ARB_fragment_shader; +#endif +#ifndef GL_ARB_fragment_shader_interlock +#define GL_ARB_fragment_shader_interlock 1 +GLAPI int GLAD_GL_ARB_fragment_shader_interlock; +#endif +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 +GLAPI int GLAD_GL_ARB_framebuffer_no_attachments; +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri; +#define glFramebufferParameteri glad_glFramebufferParameteri +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv; +#define glGetFramebufferParameteriv glad_glGetFramebufferParameteriv +#endif +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 +GLAPI int GLAD_GL_ARB_framebuffer_object; +#endif +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 +GLAPI int GLAD_GL_ARB_framebuffer_sRGB; +#endif +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 +GLAPI int GLAD_GL_ARB_geometry_shader4; +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, GLint value); +GLAPI PFNGLPROGRAMPARAMETERIARBPROC glad_glProgramParameteriARB; +#define glProgramParameteriARB glad_glProgramParameteriARB +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTUREARBPROC glad_glFramebufferTextureARB; +#define glFramebufferTextureARB glad_glFramebufferTextureARB +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYERARBPROC glad_glFramebufferTextureLayerARB; +#define glFramebufferTextureLayerARB glad_glFramebufferTextureLayerARB +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI PFNGLFRAMEBUFFERTEXTUREFACEARBPROC glad_glFramebufferTextureFaceARB; +#define glFramebufferTextureFaceARB glad_glFramebufferTextureFaceARB +#endif +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 +GLAPI int GLAD_GL_ARB_get_program_binary; +#endif +#ifndef GL_ARB_get_texture_sub_image +#define GL_ARB_get_texture_sub_image 1 +GLAPI int GLAD_GL_ARB_get_texture_sub_image; +typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage; +#define glGetTextureSubImage glad_glGetTextureSubImage +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); +GLAPI PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; +#define glGetCompressedTextureSubImage glad_glGetCompressedTextureSubImage +#endif +#ifndef GL_ARB_gl_spirv +#define GL_ARB_gl_spirv 1 +GLAPI int GLAD_GL_ARB_gl_spirv; +typedef void (APIENTRYP PFNGLSPECIALIZESHADERARBPROC)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +GLAPI PFNGLSPECIALIZESHADERARBPROC glad_glSpecializeShaderARB; +#define glSpecializeShaderARB glad_glSpecializeShaderARB +#endif +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 +GLAPI int GLAD_GL_ARB_gpu_shader5; +#endif +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 +GLAPI int GLAD_GL_ARB_gpu_shader_fp64; +#endif +#ifndef GL_ARB_gpu_shader_int64 +#define GL_ARB_gpu_shader_int64 1 +GLAPI int GLAD_GL_ARB_gpu_shader_int64; +typedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC)(GLint location, GLint64 x); +GLAPI PFNGLUNIFORM1I64ARBPROC glad_glUniform1i64ARB; +#define glUniform1i64ARB glad_glUniform1i64ARB +typedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC)(GLint location, GLint64 x, GLint64 y); +GLAPI PFNGLUNIFORM2I64ARBPROC glad_glUniform2i64ARB; +#define glUniform2i64ARB glad_glUniform2i64ARB +typedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI PFNGLUNIFORM3I64ARBPROC glad_glUniform3i64ARB; +#define glUniform3i64ARB glad_glUniform3i64ARB +typedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI PFNGLUNIFORM4I64ARBPROC glad_glUniform4i64ARB; +#define glUniform4i64ARB glad_glUniform4i64ARB +typedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC)(GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLUNIFORM1I64VARBPROC glad_glUniform1i64vARB; +#define glUniform1i64vARB glad_glUniform1i64vARB +typedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC)(GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLUNIFORM2I64VARBPROC glad_glUniform2i64vARB; +#define glUniform2i64vARB glad_glUniform2i64vARB +typedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC)(GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLUNIFORM3I64VARBPROC glad_glUniform3i64vARB; +#define glUniform3i64vARB glad_glUniform3i64vARB +typedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC)(GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLUNIFORM4I64VARBPROC glad_glUniform4i64vARB; +#define glUniform4i64vARB glad_glUniform4i64vARB +typedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC)(GLint location, GLuint64 x); +GLAPI PFNGLUNIFORM1UI64ARBPROC glad_glUniform1ui64ARB; +#define glUniform1ui64ARB glad_glUniform1ui64ARB +typedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y); +GLAPI PFNGLUNIFORM2UI64ARBPROC glad_glUniform2ui64ARB; +#define glUniform2ui64ARB glad_glUniform2ui64ARB +typedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI PFNGLUNIFORM3UI64ARBPROC glad_glUniform3ui64ARB; +#define glUniform3ui64ARB glad_glUniform3ui64ARB +typedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI PFNGLUNIFORM4UI64ARBPROC glad_glUniform4ui64ARB; +#define glUniform4ui64ARB glad_glUniform4ui64ARB +typedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORM1UI64VARBPROC glad_glUniform1ui64vARB; +#define glUniform1ui64vARB glad_glUniform1ui64vARB +typedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORM2UI64VARBPROC glad_glUniform2ui64vARB; +#define glUniform2ui64vARB glad_glUniform2ui64vARB +typedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORM3UI64VARBPROC glad_glUniform3ui64vARB; +#define glUniform3ui64vARB glad_glUniform3ui64vARB +typedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORM4UI64VARBPROC glad_glUniform4ui64vARB; +#define glUniform4ui64vARB glad_glUniform4ui64vARB +typedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC)(GLuint program, GLint location, GLint64 *params); +GLAPI PFNGLGETUNIFORMI64VARBPROC glad_glGetUniformi64vARB; +#define glGetUniformi64vARB glad_glGetUniformi64vARB +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLuint64 *params); +GLAPI PFNGLGETUNIFORMUI64VARBPROC glad_glGetUniformui64vARB; +#define glGetUniformui64vARB glad_glGetUniformui64vARB +typedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint64 *params); +GLAPI PFNGLGETNUNIFORMI64VARBPROC glad_glGetnUniformi64vARB; +#define glGetnUniformi64vARB glad_glGetnUniformi64vARB +typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); +GLAPI PFNGLGETNUNIFORMUI64VARBPROC glad_glGetnUniformui64vARB; +#define glGetnUniformui64vARB glad_glGetnUniformui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC)(GLuint program, GLint location, GLint64 x); +GLAPI PFNGLPROGRAMUNIFORM1I64ARBPROC glad_glProgramUniform1i64ARB; +#define glProgramUniform1i64ARB glad_glProgramUniform1i64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y); +GLAPI PFNGLPROGRAMUNIFORM2I64ARBPROC glad_glProgramUniform2i64ARB; +#define glProgramUniform2i64ARB glad_glProgramUniform2i64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI PFNGLPROGRAMUNIFORM3I64ARBPROC glad_glProgramUniform3i64ARB; +#define glProgramUniform3i64ARB glad_glProgramUniform3i64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI PFNGLPROGRAMUNIFORM4I64ARBPROC glad_glProgramUniform4i64ARB; +#define glProgramUniform4i64ARB glad_glProgramUniform4i64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLPROGRAMUNIFORM1I64VARBPROC glad_glProgramUniform1i64vARB; +#define glProgramUniform1i64vARB glad_glProgramUniform1i64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLPROGRAMUNIFORM2I64VARBPROC glad_glProgramUniform2i64vARB; +#define glProgramUniform2i64vARB glad_glProgramUniform2i64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLPROGRAMUNIFORM3I64VARBPROC glad_glProgramUniform3i64vARB; +#define glProgramUniform3i64vARB glad_glProgramUniform3i64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLPROGRAMUNIFORM4I64VARBPROC glad_glProgramUniform4i64vARB; +#define glProgramUniform4i64vARB glad_glProgramUniform4i64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC)(GLuint program, GLint location, GLuint64 x); +GLAPI PFNGLPROGRAMUNIFORM1UI64ARBPROC glad_glProgramUniform1ui64ARB; +#define glProgramUniform1ui64ARB glad_glProgramUniform1ui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y); +GLAPI PFNGLPROGRAMUNIFORM2UI64ARBPROC glad_glProgramUniform2ui64ARB; +#define glProgramUniform2ui64ARB glad_glProgramUniform2ui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI PFNGLPROGRAMUNIFORM3UI64ARBPROC glad_glProgramUniform3ui64ARB; +#define glProgramUniform3ui64ARB glad_glProgramUniform3ui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI PFNGLPROGRAMUNIFORM4UI64ARBPROC glad_glProgramUniform4ui64ARB; +#define glProgramUniform4ui64ARB glad_glProgramUniform4ui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLPROGRAMUNIFORM1UI64VARBPROC glad_glProgramUniform1ui64vARB; +#define glProgramUniform1ui64vARB glad_glProgramUniform1ui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLPROGRAMUNIFORM2UI64VARBPROC glad_glProgramUniform2ui64vARB; +#define glProgramUniform2ui64vARB glad_glProgramUniform2ui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLPROGRAMUNIFORM3UI64VARBPROC glad_glProgramUniform3ui64vARB; +#define glProgramUniform3ui64vARB glad_glProgramUniform3ui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLPROGRAMUNIFORM4UI64VARBPROC glad_glProgramUniform4ui64vARB; +#define glProgramUniform4ui64vARB glad_glProgramUniform4ui64vARB +#endif +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 +GLAPI int GLAD_GL_ARB_half_float_pixel; +#endif +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 +GLAPI int GLAD_GL_ARB_half_float_vertex; +#endif +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 +GLAPI int GLAD_GL_ARB_imaging; +typedef void (APIENTRYP PFNGLCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI PFNGLCOLORTABLEPROC glad_glColorTable; +#define glColorTable glad_glColorTable +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLCOLORTABLEPARAMETERFVPROC glad_glColorTableParameterfv; +#define glColorTableParameterfv glad_glColorTableParameterfv +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLCOLORTABLEPARAMETERIVPROC glad_glColorTableParameteriv; +#define glColorTableParameteriv glad_glColorTableParameteriv +typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCOLORTABLEPROC glad_glCopyColorTable; +#define glCopyColorTable glad_glCopyColorTable +typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, void *table); +GLAPI PFNGLGETCOLORTABLEPROC glad_glGetColorTable; +#define glGetColorTable glad_glGetColorTable +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERFVPROC glad_glGetColorTableParameterfv; +#define glGetColorTableParameterfv glad_glGetColorTableParameterfv +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERIVPROC glad_glGetColorTableParameteriv; +#define glGetColorTableParameteriv glad_glGetColorTableParameteriv +typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCOLORSUBTABLEPROC glad_glColorSubTable; +#define glColorSubTable glad_glColorSubTable +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCOLORSUBTABLEPROC glad_glCopyColorSubTable; +#define glCopyColorSubTable glad_glCopyColorSubTable +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI PFNGLCONVOLUTIONFILTER1DPROC glad_glConvolutionFilter1D; +#define glConvolutionFilter1D glad_glConvolutionFilter1D +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI PFNGLCONVOLUTIONFILTER2DPROC glad_glConvolutionFilter2D; +#define glConvolutionFilter2D glad_glConvolutionFilter2D +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat params); +GLAPI PFNGLCONVOLUTIONPARAMETERFPROC glad_glConvolutionParameterf; +#define glConvolutionParameterf glad_glConvolutionParameterf +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLCONVOLUTIONPARAMETERFVPROC glad_glConvolutionParameterfv; +#define glConvolutionParameterfv glad_glConvolutionParameterfv +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC)(GLenum target, GLenum pname, GLint params); +GLAPI PFNGLCONVOLUTIONPARAMETERIPROC glad_glConvolutionParameteri; +#define glConvolutionParameteri glad_glConvolutionParameteri +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLCONVOLUTIONPARAMETERIVPROC glad_glConvolutionParameteriv; +#define glConvolutionParameteriv glad_glConvolutionParameteriv +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCONVOLUTIONFILTER1DPROC glad_glCopyConvolutionFilter1D; +#define glCopyConvolutionFilter1D glad_glCopyConvolutionFilter1D +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYCONVOLUTIONFILTER2DPROC glad_glCopyConvolutionFilter2D; +#define glCopyConvolutionFilter2D glad_glCopyConvolutionFilter2D +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC)(GLenum target, GLenum format, GLenum type, void *image); +GLAPI PFNGLGETCONVOLUTIONFILTERPROC glad_glGetConvolutionFilter; +#define glGetConvolutionFilter glad_glGetConvolutionFilter +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERFVPROC glad_glGetConvolutionParameterfv; +#define glGetConvolutionParameterfv glad_glGetConvolutionParameterfv +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERIVPROC glad_glGetConvolutionParameteriv; +#define glGetConvolutionParameteriv glad_glGetConvolutionParameteriv +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI PFNGLGETSEPARABLEFILTERPROC glad_glGetSeparableFilter; +#define glGetSeparableFilter glad_glGetSeparableFilter +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +GLAPI PFNGLSEPARABLEFILTER2DPROC glad_glSeparableFilter2D; +#define glSeparableFilter2D glad_glSeparableFilter2D +typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI PFNGLGETHISTOGRAMPROC glad_glGetHistogram; +#define glGetHistogram glad_glGetHistogram +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERFVPROC glad_glGetHistogramParameterfv; +#define glGetHistogramParameterfv glad_glGetHistogramParameterfv +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERIVPROC glad_glGetHistogramParameteriv; +#define glGetHistogramParameteriv glad_glGetHistogramParameteriv +typedef void (APIENTRYP PFNGLGETMINMAXPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI PFNGLGETMINMAXPROC glad_glGetMinmax; +#define glGetMinmax glad_glGetMinmax +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMINMAXPARAMETERFVPROC glad_glGetMinmaxParameterfv; +#define glGetMinmaxParameterfv glad_glGetMinmaxParameterfv +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMINMAXPARAMETERIVPROC glad_glGetMinmaxParameteriv; +#define glGetMinmaxParameteriv glad_glGetMinmaxParameteriv +typedef void (APIENTRYP PFNGLHISTOGRAMPROC)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI PFNGLHISTOGRAMPROC glad_glHistogram; +#define glHistogram glad_glHistogram +typedef void (APIENTRYP PFNGLMINMAXPROC)(GLenum target, GLenum internalformat, GLboolean sink); +GLAPI PFNGLMINMAXPROC glad_glMinmax; +#define glMinmax glad_glMinmax +typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC)(GLenum target); +GLAPI PFNGLRESETHISTOGRAMPROC glad_glResetHistogram; +#define glResetHistogram glad_glResetHistogram +typedef void (APIENTRYP PFNGLRESETMINMAXPROC)(GLenum target); +GLAPI PFNGLRESETMINMAXPROC glad_glResetMinmax; +#define glResetMinmax glad_glResetMinmax +#endif +#ifndef GL_ARB_indirect_parameters +#define GL_ARB_indirect_parameters 1 +GLAPI int GLAD_GL_ARB_indirect_parameters; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glad_glMultiDrawArraysIndirectCountARB; +#define glMultiDrawArraysIndirectCountARB glad_glMultiDrawArraysIndirectCountARB +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glad_glMultiDrawElementsIndirectCountARB; +#define glMultiDrawElementsIndirectCountARB glad_glMultiDrawElementsIndirectCountARB +#endif +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 +GLAPI int GLAD_GL_ARB_instanced_arrays; +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor); +GLAPI PFNGLVERTEXATTRIBDIVISORARBPROC glad_glVertexAttribDivisorARB; +#define glVertexAttribDivisorARB glad_glVertexAttribDivisorARB +#endif +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 +GLAPI int GLAD_GL_ARB_internalformat_query; +typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params); +GLAPI PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; +#define glGetInternalformativ glad_glGetInternalformativ +#endif +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 +GLAPI int GLAD_GL_ARB_internalformat_query2; +typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params); +GLAPI PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v; +#define glGetInternalformati64v glad_glGetInternalformati64v +#endif +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 +GLAPI int GLAD_GL_ARB_invalidate_subdata; +typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage; +#define glInvalidateTexSubImage glad_glInvalidateTexSubImage +typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); +GLAPI PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage; +#define glInvalidateTexImage glad_glInvalidateTexImage +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData; +#define glInvalidateBufferSubData glad_glInvalidateBufferSubData +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); +GLAPI PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData; +#define glInvalidateBufferData glad_glInvalidateBufferData +typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments); +GLAPI PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; +#define glInvalidateFramebuffer glad_glInvalidateFramebuffer +typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; +#define glInvalidateSubFramebuffer glad_glInvalidateSubFramebuffer +#endif +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 +GLAPI int GLAD_GL_ARB_map_buffer_alignment; +#endif +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 +GLAPI int GLAD_GL_ARB_map_buffer_range; +#endif +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +GLAPI int GLAD_GL_ARB_matrix_palette; +typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC)(GLint index); +GLAPI PFNGLCURRENTPALETTEMATRIXARBPROC glad_glCurrentPaletteMatrixARB; +#define glCurrentPaletteMatrixARB glad_glCurrentPaletteMatrixARB +typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC)(GLint size, const GLubyte *indices); +GLAPI PFNGLMATRIXINDEXUBVARBPROC glad_glMatrixIndexubvARB; +#define glMatrixIndexubvARB glad_glMatrixIndexubvARB +typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC)(GLint size, const GLushort *indices); +GLAPI PFNGLMATRIXINDEXUSVARBPROC glad_glMatrixIndexusvARB; +#define glMatrixIndexusvARB glad_glMatrixIndexusvARB +typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC)(GLint size, const GLuint *indices); +GLAPI PFNGLMATRIXINDEXUIVARBPROC glad_glMatrixIndexuivARB; +#define glMatrixIndexuivARB glad_glMatrixIndexuivARB +typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLMATRIXINDEXPOINTERARBPROC glad_glMatrixIndexPointerARB; +#define glMatrixIndexPointerARB glad_glMatrixIndexPointerARB +#endif +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 +GLAPI int GLAD_GL_ARB_multi_bind; +typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +GLAPI PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase; +#define glBindBuffersBase glad_glBindBuffersBase +typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +GLAPI PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange; +#define glBindBuffersRange glad_glBindBuffersRange +typedef void (APIENTRYP PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, const GLuint *textures); +GLAPI PFNGLBINDTEXTURESPROC glad_glBindTextures; +#define glBindTextures glad_glBindTextures +typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, const GLuint *samplers); +GLAPI PFNGLBINDSAMPLERSPROC glad_glBindSamplers; +#define glBindSamplers glad_glBindSamplers +typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, const GLuint *textures); +GLAPI PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures; +#define glBindImageTextures glad_glBindImageTextures +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC)(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +GLAPI PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers; +#define glBindVertexBuffers glad_glBindVertexBuffers +#endif +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 +GLAPI int GLAD_GL_ARB_multi_draw_indirect; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect; +#define glMultiDrawArraysIndirect glad_glMultiDrawArraysIndirect +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect; +#define glMultiDrawElementsIndirect glad_glMultiDrawElementsIndirect +#endif +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +GLAPI int GLAD_GL_ARB_multisample; +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC)(GLfloat value, GLboolean invert); +GLAPI PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB; +#define glSampleCoverageARB glad_glSampleCoverageARB +#endif +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +GLAPI int GLAD_GL_ARB_multitexture; +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC)(GLenum texture); +GLAPI PFNGLACTIVETEXTUREARBPROC glad_glActiveTextureARB; +#define glActiveTextureARB glad_glActiveTextureARB +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture); +GLAPI PFNGLCLIENTACTIVETEXTUREARBPROC glad_glClientActiveTextureARB; +#define glClientActiveTextureARB glad_glClientActiveTextureARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s); +GLAPI PFNGLMULTITEXCOORD1DARBPROC glad_glMultiTexCoord1dARB; +#define glMultiTexCoord1dARB glad_glMultiTexCoord1dARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD1DVARBPROC glad_glMultiTexCoord1dvARB; +#define glMultiTexCoord1dvARB glad_glMultiTexCoord1dvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s); +GLAPI PFNGLMULTITEXCOORD1FARBPROC glad_glMultiTexCoord1fARB; +#define glMultiTexCoord1fARB glad_glMultiTexCoord1fARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD1FVARBPROC glad_glMultiTexCoord1fvARB; +#define glMultiTexCoord1fvARB glad_glMultiTexCoord1fvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s); +GLAPI PFNGLMULTITEXCOORD1IARBPROC glad_glMultiTexCoord1iARB; +#define glMultiTexCoord1iARB glad_glMultiTexCoord1iARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD1IVARBPROC glad_glMultiTexCoord1ivARB; +#define glMultiTexCoord1ivARB glad_glMultiTexCoord1ivARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s); +GLAPI PFNGLMULTITEXCOORD1SARBPROC glad_glMultiTexCoord1sARB; +#define glMultiTexCoord1sARB glad_glMultiTexCoord1sARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD1SVARBPROC glad_glMultiTexCoord1svARB; +#define glMultiTexCoord1svARB glad_glMultiTexCoord1svARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t); +GLAPI PFNGLMULTITEXCOORD2DARBPROC glad_glMultiTexCoord2dARB; +#define glMultiTexCoord2dARB glad_glMultiTexCoord2dARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD2DVARBPROC glad_glMultiTexCoord2dvARB; +#define glMultiTexCoord2dvARB glad_glMultiTexCoord2dvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t); +GLAPI PFNGLMULTITEXCOORD2FARBPROC glad_glMultiTexCoord2fARB; +#define glMultiTexCoord2fARB glad_glMultiTexCoord2fARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD2FVARBPROC glad_glMultiTexCoord2fvARB; +#define glMultiTexCoord2fvARB glad_glMultiTexCoord2fvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t); +GLAPI PFNGLMULTITEXCOORD2IARBPROC glad_glMultiTexCoord2iARB; +#define glMultiTexCoord2iARB glad_glMultiTexCoord2iARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD2IVARBPROC glad_glMultiTexCoord2ivARB; +#define glMultiTexCoord2ivARB glad_glMultiTexCoord2ivARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t); +GLAPI PFNGLMULTITEXCOORD2SARBPROC glad_glMultiTexCoord2sARB; +#define glMultiTexCoord2sARB glad_glMultiTexCoord2sARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD2SVARBPROC glad_glMultiTexCoord2svARB; +#define glMultiTexCoord2svARB glad_glMultiTexCoord2svARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI PFNGLMULTITEXCOORD3DARBPROC glad_glMultiTexCoord3dARB; +#define glMultiTexCoord3dARB glad_glMultiTexCoord3dARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD3DVARBPROC glad_glMultiTexCoord3dvARB; +#define glMultiTexCoord3dvARB glad_glMultiTexCoord3dvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI PFNGLMULTITEXCOORD3FARBPROC glad_glMultiTexCoord3fARB; +#define glMultiTexCoord3fARB glad_glMultiTexCoord3fARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD3FVARBPROC glad_glMultiTexCoord3fvARB; +#define glMultiTexCoord3fvARB glad_glMultiTexCoord3fvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r); +GLAPI PFNGLMULTITEXCOORD3IARBPROC glad_glMultiTexCoord3iARB; +#define glMultiTexCoord3iARB glad_glMultiTexCoord3iARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD3IVARBPROC glad_glMultiTexCoord3ivARB; +#define glMultiTexCoord3ivARB glad_glMultiTexCoord3ivARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI PFNGLMULTITEXCOORD3SARBPROC glad_glMultiTexCoord3sARB; +#define glMultiTexCoord3sARB glad_glMultiTexCoord3sARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD3SVARBPROC glad_glMultiTexCoord3svARB; +#define glMultiTexCoord3svARB glad_glMultiTexCoord3svARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI PFNGLMULTITEXCOORD4DARBPROC glad_glMultiTexCoord4dARB; +#define glMultiTexCoord4dARB glad_glMultiTexCoord4dARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD4DVARBPROC glad_glMultiTexCoord4dvARB; +#define glMultiTexCoord4dvARB glad_glMultiTexCoord4dvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI PFNGLMULTITEXCOORD4FARBPROC glad_glMultiTexCoord4fARB; +#define glMultiTexCoord4fARB glad_glMultiTexCoord4fARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD4FVARBPROC glad_glMultiTexCoord4fvARB; +#define glMultiTexCoord4fvARB glad_glMultiTexCoord4fvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI PFNGLMULTITEXCOORD4IARBPROC glad_glMultiTexCoord4iARB; +#define glMultiTexCoord4iARB glad_glMultiTexCoord4iARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD4IVARBPROC glad_glMultiTexCoord4ivARB; +#define glMultiTexCoord4ivARB glad_glMultiTexCoord4ivARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI PFNGLMULTITEXCOORD4SARBPROC glad_glMultiTexCoord4sARB; +#define glMultiTexCoord4sARB glad_glMultiTexCoord4sARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD4SVARBPROC glad_glMultiTexCoord4svARB; +#define glMultiTexCoord4svARB glad_glMultiTexCoord4svARB +#endif +#ifndef GL_ARB_occlusion_query +#define GL_ARB_occlusion_query 1 +GLAPI int GLAD_GL_ARB_occlusion_query; +typedef void (APIENTRYP PFNGLGENQUERIESARBPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENQUERIESARBPROC glad_glGenQueriesARB; +#define glGenQueriesARB glad_glGenQueriesARB +typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETEQUERIESARBPROC glad_glDeleteQueriesARB; +#define glDeleteQueriesARB glad_glDeleteQueriesARB +typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC)(GLuint id); +GLAPI PFNGLISQUERYARBPROC glad_glIsQueryARB; +#define glIsQueryARB glad_glIsQueryARB +typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC)(GLenum target, GLuint id); +GLAPI PFNGLBEGINQUERYARBPROC glad_glBeginQueryARB; +#define glBeginQueryARB glad_glBeginQueryARB +typedef void (APIENTRYP PFNGLENDQUERYARBPROC)(GLenum target); +GLAPI PFNGLENDQUERYARBPROC glad_glEndQueryARB; +#define glEndQueryARB glad_glEndQueryARB +typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYIVARBPROC glad_glGetQueryivARB; +#define glGetQueryivARB glad_glGetQueryivARB +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYOBJECTIVARBPROC glad_glGetQueryObjectivARB; +#define glGetQueryObjectivARB glad_glGetQueryObjectivARB +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC)(GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLGETQUERYOBJECTUIVARBPROC glad_glGetQueryObjectuivARB; +#define glGetQueryObjectuivARB glad_glGetQueryObjectuivARB +#endif +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 +GLAPI int GLAD_GL_ARB_occlusion_query2; +#endif +#ifndef GL_ARB_parallel_shader_compile +#define GL_ARB_parallel_shader_compile 1 +GLAPI int GLAD_GL_ARB_parallel_shader_compile; +typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC)(GLuint count); +GLAPI PFNGLMAXSHADERCOMPILERTHREADSARBPROC glad_glMaxShaderCompilerThreadsARB; +#define glMaxShaderCompilerThreadsARB glad_glMaxShaderCompilerThreadsARB +#endif +#ifndef GL_ARB_pipeline_statistics_query +#define GL_ARB_pipeline_statistics_query 1 +GLAPI int GLAD_GL_ARB_pipeline_statistics_query; +#endif +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +GLAPI int GLAD_GL_ARB_pixel_buffer_object; +#endif +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +GLAPI int GLAD_GL_ARB_point_parameters; +typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFARBPROC glad_glPointParameterfARB; +#define glPointParameterfARB glad_glPointParameterfARB +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVARBPROC glad_glPointParameterfvARB; +#define glPointParameterfvARB glad_glPointParameterfvARB +#endif +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 +GLAPI int GLAD_GL_ARB_point_sprite; +#endif +#ifndef GL_ARB_polygon_offset_clamp +#define GL_ARB_polygon_offset_clamp 1 +GLAPI int GLAD_GL_ARB_polygon_offset_clamp; +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, GLfloat clamp); +GLAPI PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp; +#define glPolygonOffsetClamp glad_glPolygonOffsetClamp +#endif +#ifndef GL_ARB_post_depth_coverage +#define GL_ARB_post_depth_coverage 1 +GLAPI int GLAD_GL_ARB_post_depth_coverage; +#endif +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 +GLAPI int GLAD_GL_ARB_program_interface_query; +typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv; +#define glGetProgramInterfaceiv glad_glGetProgramInterfaceiv +typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name); +GLAPI PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex; +#define glGetProgramResourceIndex glad_glGetProgramResourceIndex +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName; +#define glGetProgramResourceName glad_glGetProgramResourceName +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params); +GLAPI PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv; +#define glGetProgramResourceiv glad_glGetProgramResourceiv +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, GLenum programInterface, const GLchar *name); +GLAPI PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation; +#define glGetProgramResourceLocation glad_glGetProgramResourceLocation +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name); +GLAPI PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex; +#define glGetProgramResourceLocationIndex glad_glGetProgramResourceLocationIndex +#endif +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +GLAPI int GLAD_GL_ARB_provoking_vertex; +#endif +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 +GLAPI int GLAD_GL_ARB_query_buffer_object; +#endif +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 +GLAPI int GLAD_GL_ARB_robust_buffer_access_behavior; +#endif +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +GLAPI int GLAD_GL_ARB_robustness; +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void); +GLAPI PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB; +#define glGetGraphicsResetStatusARB glad_glGetGraphicsResetStatusARB +typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +GLAPI PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB; +#define glGetnTexImageARB glad_glGetnTexImageARB +typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB; +#define glReadnPixelsARB glad_glReadnPixelsARB +typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, GLsizei bufSize, void *img); +GLAPI PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB; +#define glGetnCompressedTexImageARB glad_glGetnCompressedTexImageARB +typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB; +#define glGetnUniformfvARB glad_glGetnUniformfvARB +typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB; +#define glGetnUniformivARB glad_glGetnUniformivARB +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB; +#define glGetnUniformuivARB glad_glGetnUniformuivARB +typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +GLAPI PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB; +#define glGetnUniformdvARB glad_glGetnUniformdvARB +typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +GLAPI PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB; +#define glGetnMapdvARB glad_glGetnMapdvARB +typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +GLAPI PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB; +#define glGetnMapfvARB glad_glGetnMapfvARB +typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); +GLAPI PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB; +#define glGetnMapivARB glad_glGetnMapivARB +typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC)(GLenum map, GLsizei bufSize, GLfloat *values); +GLAPI PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB; +#define glGetnPixelMapfvARB glad_glGetnPixelMapfvARB +typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC)(GLenum map, GLsizei bufSize, GLuint *values); +GLAPI PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB; +#define glGetnPixelMapuivARB glad_glGetnPixelMapuivARB +typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC)(GLenum map, GLsizei bufSize, GLushort *values); +GLAPI PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB; +#define glGetnPixelMapusvARB glad_glGetnPixelMapusvARB +typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC)(GLsizei bufSize, GLubyte *pattern); +GLAPI PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB; +#define glGetnPolygonStippleARB glad_glGetnPolygonStippleARB +typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +GLAPI PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB; +#define glGetnColorTableARB glad_glGetnColorTableARB +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +GLAPI PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB; +#define glGetnConvolutionFilterARB glad_glGetnConvolutionFilterARB +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +GLAPI PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB; +#define glGetnSeparableFilterARB glad_glGetnSeparableFilterARB +typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB; +#define glGetnHistogramARB glad_glGetnHistogramARB +typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB; +#define glGetnMinmaxARB glad_glGetnMinmaxARB +#endif +#ifndef GL_ARB_robustness_isolation +#define GL_ARB_robustness_isolation 1 +GLAPI int GLAD_GL_ARB_robustness_isolation; +#endif +#ifndef GL_ARB_sample_locations +#define GL_ARB_sample_locations 1 +GLAPI int GLAD_GL_ARB_sample_locations; +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glFramebufferSampleLocationsfvARB; +#define glFramebufferSampleLocationsfvARB glad_glFramebufferSampleLocationsfvARB +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glNamedFramebufferSampleLocationsfvARB; +#define glNamedFramebufferSampleLocationsfvARB glad_glNamedFramebufferSampleLocationsfvARB +typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC)(void); +GLAPI PFNGLEVALUATEDEPTHVALUESARBPROC glad_glEvaluateDepthValuesARB; +#define glEvaluateDepthValuesARB glad_glEvaluateDepthValuesARB +#endif +#ifndef GL_ARB_sample_shading +#define GL_ARB_sample_shading 1 +GLAPI int GLAD_GL_ARB_sample_shading; +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC)(GLfloat value); +GLAPI PFNGLMINSAMPLESHADINGARBPROC glad_glMinSampleShadingARB; +#define glMinSampleShadingARB glad_glMinSampleShadingARB +#endif +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 +GLAPI int GLAD_GL_ARB_sampler_objects; +#endif +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +GLAPI int GLAD_GL_ARB_seamless_cube_map; +#endif +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 +GLAPI int GLAD_GL_ARB_seamless_cubemap_per_texture; +#endif +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 +GLAPI int GLAD_GL_ARB_separate_shader_objects; +#endif +#ifndef GL_ARB_shader_atomic_counter_ops +#define GL_ARB_shader_atomic_counter_ops 1 +GLAPI int GLAD_GL_ARB_shader_atomic_counter_ops; +#endif +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 +GLAPI int GLAD_GL_ARB_shader_atomic_counters; +typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv; +#define glGetActiveAtomicCounterBufferiv glad_glGetActiveAtomicCounterBufferiv +#endif +#ifndef GL_ARB_shader_ballot +#define GL_ARB_shader_ballot 1 +GLAPI int GLAD_GL_ARB_shader_ballot; +#endif +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 +GLAPI int GLAD_GL_ARB_shader_bit_encoding; +#endif +#ifndef GL_ARB_shader_clock +#define GL_ARB_shader_clock 1 +GLAPI int GLAD_GL_ARB_shader_clock; +#endif +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 +GLAPI int GLAD_GL_ARB_shader_draw_parameters; +#endif +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 +GLAPI int GLAD_GL_ARB_shader_group_vote; +#endif +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 +GLAPI int GLAD_GL_ARB_shader_image_load_store; +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +GLAPI PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture; +#define glBindImageTexture glad_glBindImageTexture +typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); +GLAPI PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier; +#define glMemoryBarrier glad_glMemoryBarrier +#endif +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 +GLAPI int GLAD_GL_ARB_shader_image_size; +#endif +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 +GLAPI int GLAD_GL_ARB_shader_objects; +typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC)(GLhandleARB obj); +GLAPI PFNGLDELETEOBJECTARBPROC glad_glDeleteObjectARB; +#define glDeleteObjectARB glad_glDeleteObjectARB +typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC)(GLenum pname); +GLAPI PFNGLGETHANDLEARBPROC glad_glGetHandleARB; +#define glGetHandleARB glad_glGetHandleARB +typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB attachedObj); +GLAPI PFNGLDETACHOBJECTARBPROC glad_glDetachObjectARB; +#define glDetachObjectARB glad_glDetachObjectARB +typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC)(GLenum shaderType); +GLAPI PFNGLCREATESHADEROBJECTARBPROC glad_glCreateShaderObjectARB; +#define glCreateShaderObjectARB glad_glCreateShaderObjectARB +typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC)(GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); +GLAPI PFNGLSHADERSOURCEARBPROC glad_glShaderSourceARB; +#define glShaderSourceARB glad_glShaderSourceARB +typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC)(GLhandleARB shaderObj); +GLAPI PFNGLCOMPILESHADERARBPROC glad_glCompileShaderARB; +#define glCompileShaderARB glad_glCompileShaderARB +typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC)(void); +GLAPI PFNGLCREATEPROGRAMOBJECTARBPROC glad_glCreateProgramObjectARB; +#define glCreateProgramObjectARB glad_glCreateProgramObjectARB +typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB obj); +GLAPI PFNGLATTACHOBJECTARBPROC glad_glAttachObjectARB; +#define glAttachObjectARB glad_glAttachObjectARB +typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC)(GLhandleARB programObj); +GLAPI PFNGLLINKPROGRAMARBPROC glad_glLinkProgramARB; +#define glLinkProgramARB glad_glLinkProgramARB +typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC)(GLhandleARB programObj); +GLAPI PFNGLUSEPROGRAMOBJECTARBPROC glad_glUseProgramObjectARB; +#define glUseProgramObjectARB glad_glUseProgramObjectARB +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC)(GLhandleARB programObj); +GLAPI PFNGLVALIDATEPROGRAMARBPROC glad_glValidateProgramARB; +#define glValidateProgramARB glad_glValidateProgramARB +typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC)(GLint location, GLfloat v0); +GLAPI PFNGLUNIFORM1FARBPROC glad_glUniform1fARB; +#define glUniform1fARB glad_glUniform1fARB +typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC)(GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLUNIFORM2FARBPROC glad_glUniform2fARB; +#define glUniform2fARB glad_glUniform2fARB +typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLUNIFORM3FARBPROC glad_glUniform3fARB; +#define glUniform3fARB glad_glUniform3fARB +typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLUNIFORM4FARBPROC glad_glUniform4fARB; +#define glUniform4fARB glad_glUniform4fARB +typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC)(GLint location, GLint v0); +GLAPI PFNGLUNIFORM1IARBPROC glad_glUniform1iARB; +#define glUniform1iARB glad_glUniform1iARB +typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC)(GLint location, GLint v0, GLint v1); +GLAPI PFNGLUNIFORM2IARBPROC glad_glUniform2iARB; +#define glUniform2iARB glad_glUniform2iARB +typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLUNIFORM3IARBPROC glad_glUniform3iARB; +#define glUniform3iARB glad_glUniform3iARB +typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLUNIFORM4IARBPROC glad_glUniform4iARB; +#define glUniform4iARB glad_glUniform4iARB +typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM1FVARBPROC glad_glUniform1fvARB; +#define glUniform1fvARB glad_glUniform1fvARB +typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM2FVARBPROC glad_glUniform2fvARB; +#define glUniform2fvARB glad_glUniform2fvARB +typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM3FVARBPROC glad_glUniform3fvARB; +#define glUniform3fvARB glad_glUniform3fvARB +typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM4FVARBPROC glad_glUniform4fvARB; +#define glUniform4fvARB glad_glUniform4fvARB +typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM1IVARBPROC glad_glUniform1ivARB; +#define glUniform1ivARB glad_glUniform1ivARB +typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM2IVARBPROC glad_glUniform2ivARB; +#define glUniform2ivARB glad_glUniform2ivARB +typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM3IVARBPROC glad_glUniform3ivARB; +#define glUniform3ivARB glad_glUniform3ivARB +typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM4IVARBPROC glad_glUniform4ivARB; +#define glUniform4ivARB glad_glUniform4ivARB +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2FVARBPROC glad_glUniformMatrix2fvARB; +#define glUniformMatrix2fvARB glad_glUniformMatrix2fvARB +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3FVARBPROC glad_glUniformMatrix3fvARB; +#define glUniformMatrix3fvARB glad_glUniformMatrix3fvARB +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4FVARBPROC glad_glUniformMatrix4fvARB; +#define glUniformMatrix4fvARB glad_glUniformMatrix4fvARB +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC)(GLhandleARB obj, GLenum pname, GLfloat *params); +GLAPI PFNGLGETOBJECTPARAMETERFVARBPROC glad_glGetObjectParameterfvARB; +#define glGetObjectParameterfvARB glad_glGetObjectParameterfvARB +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC)(GLhandleARB obj, GLenum pname, GLint *params); +GLAPI PFNGLGETOBJECTPARAMETERIVARBPROC glad_glGetObjectParameterivARB; +#define glGetObjectParameterivARB glad_glGetObjectParameterivARB +typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +GLAPI PFNGLGETINFOLOGARBPROC glad_glGetInfoLogARB; +#define glGetInfoLogARB glad_glGetInfoLogARB +typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC)(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +GLAPI PFNGLGETATTACHEDOBJECTSARBPROC glad_glGetAttachedObjectsARB; +#define glGetAttachedObjectsARB glad_glGetAttachedObjectsARB +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj, const GLcharARB *name); +GLAPI PFNGLGETUNIFORMLOCATIONARBPROC glad_glGetUniformLocationARB; +#define glGetUniformLocationARB glad_glGetUniformLocationARB +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI PFNGLGETACTIVEUNIFORMARBPROC glad_glGetActiveUniformARB; +#define glGetActiveUniformARB glad_glGetActiveUniformARB +typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC)(GLhandleARB programObj, GLint location, GLfloat *params); +GLAPI PFNGLGETUNIFORMFVARBPROC glad_glGetUniformfvARB; +#define glGetUniformfvARB glad_glGetUniformfvARB +typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC)(GLhandleARB programObj, GLint location, GLint *params); +GLAPI PFNGLGETUNIFORMIVARBPROC glad_glGetUniformivARB; +#define glGetUniformivARB glad_glGetUniformivARB +typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +GLAPI PFNGLGETSHADERSOURCEARBPROC glad_glGetShaderSourceARB; +#define glGetShaderSourceARB glad_glGetShaderSourceARB +#endif +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 +GLAPI int GLAD_GL_ARB_shader_precision; +#endif +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 +GLAPI int GLAD_GL_ARB_shader_stencil_export; +#endif +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 +GLAPI int GLAD_GL_ARB_shader_storage_buffer_object; +typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +GLAPI PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding; +#define glShaderStorageBlockBinding glad_glShaderStorageBlockBinding +#endif +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 +GLAPI int GLAD_GL_ARB_shader_subroutine; +#endif +#ifndef GL_ARB_shader_texture_image_samples +#define GL_ARB_shader_texture_image_samples 1 +GLAPI int GLAD_GL_ARB_shader_texture_image_samples; +#endif +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 +GLAPI int GLAD_GL_ARB_shader_texture_lod; +#endif +#ifndef GL_ARB_shader_viewport_layer_array +#define GL_ARB_shader_viewport_layer_array 1 +GLAPI int GLAD_GL_ARB_shader_viewport_layer_array; +#endif +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 +GLAPI int GLAD_GL_ARB_shading_language_100; +#endif +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 +GLAPI int GLAD_GL_ARB_shading_language_420pack; +#endif +#ifndef GL_ARB_shading_language_include +#define GL_ARB_shading_language_include 1 +GLAPI int GLAD_GL_ARB_shading_language_include; +typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC)(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +GLAPI PFNGLNAMEDSTRINGARBPROC glad_glNamedStringARB; +#define glNamedStringARB glad_glNamedStringARB +typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); +GLAPI PFNGLDELETENAMEDSTRINGARBPROC glad_glDeleteNamedStringARB; +#define glDeleteNamedStringARB glad_glDeleteNamedStringARB +typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC)(GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); +GLAPI PFNGLCOMPILESHADERINCLUDEARBPROC glad_glCompileShaderIncludeARB; +#define glCompileShaderIncludeARB glad_glCompileShaderIncludeARB +typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); +GLAPI PFNGLISNAMEDSTRINGARBPROC glad_glIsNamedStringARB; +#define glIsNamedStringARB glad_glIsNamedStringARB +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +GLAPI PFNGLGETNAMEDSTRINGARBPROC glad_glGetNamedStringARB; +#define glGetNamedStringARB glad_glGetNamedStringARB +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC)(GLint namelen, const GLchar *name, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDSTRINGIVARBPROC glad_glGetNamedStringivARB; +#define glGetNamedStringivARB glad_glGetNamedStringivARB +#endif +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 +GLAPI int GLAD_GL_ARB_shading_language_packing; +#endif +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +GLAPI int GLAD_GL_ARB_shadow; +#endif +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +GLAPI int GLAD_GL_ARB_shadow_ambient; +#endif +#ifndef GL_ARB_sparse_buffer +#define GL_ARB_sparse_buffer 1 +GLAPI int GLAD_GL_ARB_sparse_buffer; +typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC)(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI PFNGLBUFFERPAGECOMMITMENTARBPROC glad_glBufferPageCommitmentARB; +#define glBufferPageCommitmentARB glad_glBufferPageCommitmentARB +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC glad_glNamedBufferPageCommitmentEXT; +#define glNamedBufferPageCommitmentEXT glad_glNamedBufferPageCommitmentEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC glad_glNamedBufferPageCommitmentARB; +#define glNamedBufferPageCommitmentARB glad_glNamedBufferPageCommitmentARB +#endif +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 +GLAPI int GLAD_GL_ARB_sparse_texture; +typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +GLAPI PFNGLTEXPAGECOMMITMENTARBPROC glad_glTexPageCommitmentARB; +#define glTexPageCommitmentARB glad_glTexPageCommitmentARB +#endif +#ifndef GL_ARB_sparse_texture2 +#define GL_ARB_sparse_texture2 1 +GLAPI int GLAD_GL_ARB_sparse_texture2; +#endif +#ifndef GL_ARB_sparse_texture_clamp +#define GL_ARB_sparse_texture_clamp 1 +GLAPI int GLAD_GL_ARB_sparse_texture_clamp; +#endif +#ifndef GL_ARB_spirv_extensions +#define GL_ARB_spirv_extensions 1 +GLAPI int GLAD_GL_ARB_spirv_extensions; +#endif +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 +GLAPI int GLAD_GL_ARB_stencil_texturing; +#endif +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +GLAPI int GLAD_GL_ARB_sync; +#endif +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 +GLAPI int GLAD_GL_ARB_tessellation_shader; +#endif +#ifndef GL_ARB_texture_barrier +#define GL_ARB_texture_barrier 1 +GLAPI int GLAD_GL_ARB_texture_barrier; +typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC)(void); +GLAPI PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier; +#define glTextureBarrier glad_glTextureBarrier +#endif +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +GLAPI int GLAD_GL_ARB_texture_border_clamp; +#endif +#ifndef GL_ARB_texture_buffer_object +#define GL_ARB_texture_buffer_object 1 +GLAPI int GLAD_GL_ARB_texture_buffer_object; +typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXBUFFERARBPROC glad_glTexBufferARB; +#define glTexBufferARB glad_glTexBufferARB +#endif +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 +GLAPI int GLAD_GL_ARB_texture_buffer_object_rgb32; +#endif +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 +GLAPI int GLAD_GL_ARB_texture_buffer_range; +typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange; +#define glTexBufferRange glad_glTexBufferRange +#endif +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +GLAPI int GLAD_GL_ARB_texture_compression; +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glad_glCompressedTexImage3DARB; +#define glCompressedTexImage3DARB glad_glCompressedTexImage3DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glad_glCompressedTexImage2DARB; +#define glCompressedTexImage2DARB glad_glCompressedTexImage2DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glad_glCompressedTexImage1DARB; +#define glCompressedTexImage1DARB glad_glCompressedTexImage1DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glad_glCompressedTexSubImage3DARB; +#define glCompressedTexSubImage3DARB glad_glCompressedTexSubImage3DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glad_glCompressedTexSubImage2DARB; +#define glCompressedTexSubImage2DARB glad_glCompressedTexSubImage2DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glad_glCompressedTexSubImage1DARB; +#define glCompressedTexSubImage1DARB glad_glCompressedTexSubImage1DARB +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint level, void *img); +GLAPI PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glad_glGetCompressedTexImageARB; +#define glGetCompressedTexImageARB glad_glGetCompressedTexImageARB +#endif +#ifndef GL_ARB_texture_compression_bptc +#define GL_ARB_texture_compression_bptc 1 +GLAPI int GLAD_GL_ARB_texture_compression_bptc; +#endif +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 +GLAPI int GLAD_GL_ARB_texture_compression_rgtc; +#endif +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +GLAPI int GLAD_GL_ARB_texture_cube_map; +#endif +#ifndef GL_ARB_texture_cube_map_array +#define GL_ARB_texture_cube_map_array 1 +GLAPI int GLAD_GL_ARB_texture_cube_map_array; +#endif +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +GLAPI int GLAD_GL_ARB_texture_env_add; +#endif +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +GLAPI int GLAD_GL_ARB_texture_env_combine; +#endif +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +GLAPI int GLAD_GL_ARB_texture_env_crossbar; +#endif +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +GLAPI int GLAD_GL_ARB_texture_env_dot3; +#endif +#ifndef GL_ARB_texture_filter_anisotropic +#define GL_ARB_texture_filter_anisotropic 1 +GLAPI int GLAD_GL_ARB_texture_filter_anisotropic; +#endif +#ifndef GL_ARB_texture_filter_minmax +#define GL_ARB_texture_filter_minmax 1 +GLAPI int GLAD_GL_ARB_texture_filter_minmax; +#endif +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 +GLAPI int GLAD_GL_ARB_texture_float; +#endif +#ifndef GL_ARB_texture_gather +#define GL_ARB_texture_gather 1 +GLAPI int GLAD_GL_ARB_texture_gather; +#endif +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 +GLAPI int GLAD_GL_ARB_texture_mirror_clamp_to_edge; +#endif +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +GLAPI int GLAD_GL_ARB_texture_mirrored_repeat; +#endif +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +GLAPI int GLAD_GL_ARB_texture_multisample; +#endif +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +GLAPI int GLAD_GL_ARB_texture_non_power_of_two; +#endif +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 +GLAPI int GLAD_GL_ARB_texture_query_levels; +#endif +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 +GLAPI int GLAD_GL_ARB_texture_query_lod; +#endif +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +GLAPI int GLAD_GL_ARB_texture_rectangle; +#endif +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 +GLAPI int GLAD_GL_ARB_texture_rg; +#endif +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 +GLAPI int GLAD_GL_ARB_texture_rgb10_a2ui; +#endif +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 +GLAPI int GLAD_GL_ARB_texture_stencil8; +#endif +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 +GLAPI int GLAD_GL_ARB_texture_storage; +typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D; +#define glTexStorage1D glad_glTexStorage1D +typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; +#define glTexStorage2D glad_glTexStorage2D +typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; +#define glTexStorage3D glad_glTexStorage3D +#endif +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 +GLAPI int GLAD_GL_ARB_texture_storage_multisample; +typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample; +#define glTexStorage2DMultisample glad_glTexStorage2DMultisample +typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample; +#define glTexStorage3DMultisample glad_glTexStorage3DMultisample +#endif +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 +GLAPI int GLAD_GL_ARB_texture_swizzle; +#endif +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 +GLAPI int GLAD_GL_ARB_texture_view; +typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +GLAPI PFNGLTEXTUREVIEWPROC glad_glTextureView; +#define glTextureView glad_glTextureView +#endif +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 +GLAPI int GLAD_GL_ARB_timer_query; +#endif +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 +GLAPI int GLAD_GL_ARB_transform_feedback2; +#endif +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 +GLAPI int GLAD_GL_ARB_transform_feedback3; +#endif +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 +GLAPI int GLAD_GL_ARB_transform_feedback_instanced; +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, GLsizei instancecount); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced; +#define glDrawTransformFeedbackInstanced glad_glDrawTransformFeedbackInstanced +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced; +#define glDrawTransformFeedbackStreamInstanced glad_glDrawTransformFeedbackStreamInstanced +#endif +#ifndef GL_ARB_transform_feedback_overflow_query +#define GL_ARB_transform_feedback_overflow_query 1 +GLAPI int GLAD_GL_ARB_transform_feedback_overflow_query; +#endif +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +GLAPI int GLAD_GL_ARB_transpose_matrix; +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); +GLAPI PFNGLLOADTRANSPOSEMATRIXFARBPROC glad_glLoadTransposeMatrixfARB; +#define glLoadTransposeMatrixfARB glad_glLoadTransposeMatrixfARB +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); +GLAPI PFNGLLOADTRANSPOSEMATRIXDARBPROC glad_glLoadTransposeMatrixdARB; +#define glLoadTransposeMatrixdARB glad_glLoadTransposeMatrixdARB +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); +GLAPI PFNGLMULTTRANSPOSEMATRIXFARBPROC glad_glMultTransposeMatrixfARB; +#define glMultTransposeMatrixfARB glad_glMultTransposeMatrixfARB +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); +GLAPI PFNGLMULTTRANSPOSEMATRIXDARBPROC glad_glMultTransposeMatrixdARB; +#define glMultTransposeMatrixdARB glad_glMultTransposeMatrixdARB +#endif +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 +GLAPI int GLAD_GL_ARB_uniform_buffer_object; +#endif +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +GLAPI int GLAD_GL_ARB_vertex_array_bgra; +#endif +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 +GLAPI int GLAD_GL_ARB_vertex_array_object; +#endif +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 +GLAPI int GLAD_GL_ARB_vertex_attrib_64bit; +#endif +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 +GLAPI int GLAD_GL_ARB_vertex_attrib_binding; +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer; +#define glBindVertexBuffer glad_glBindVertexBuffer +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat; +#define glVertexAttribFormat glad_glVertexAttribFormat +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat; +#define glVertexAttribIFormat glad_glVertexAttribIFormat +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat; +#define glVertexAttribLFormat glad_glVertexAttribLFormat +typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); +GLAPI PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding; +#define glVertexAttribBinding glad_glVertexAttribBinding +typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); +GLAPI PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor; +#define glVertexBindingDivisor glad_glVertexBindingDivisor +#endif +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +GLAPI int GLAD_GL_ARB_vertex_blend; +typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC)(GLint size, const GLbyte *weights); +GLAPI PFNGLWEIGHTBVARBPROC glad_glWeightbvARB; +#define glWeightbvARB glad_glWeightbvARB +typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC)(GLint size, const GLshort *weights); +GLAPI PFNGLWEIGHTSVARBPROC glad_glWeightsvARB; +#define glWeightsvARB glad_glWeightsvARB +typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC)(GLint size, const GLint *weights); +GLAPI PFNGLWEIGHTIVARBPROC glad_glWeightivARB; +#define glWeightivARB glad_glWeightivARB +typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC)(GLint size, const GLfloat *weights); +GLAPI PFNGLWEIGHTFVARBPROC glad_glWeightfvARB; +#define glWeightfvARB glad_glWeightfvARB +typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC)(GLint size, const GLdouble *weights); +GLAPI PFNGLWEIGHTDVARBPROC glad_glWeightdvARB; +#define glWeightdvARB glad_glWeightdvARB +typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC)(GLint size, const GLubyte *weights); +GLAPI PFNGLWEIGHTUBVARBPROC glad_glWeightubvARB; +#define glWeightubvARB glad_glWeightubvARB +typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC)(GLint size, const GLushort *weights); +GLAPI PFNGLWEIGHTUSVARBPROC glad_glWeightusvARB; +#define glWeightusvARB glad_glWeightusvARB +typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC)(GLint size, const GLuint *weights); +GLAPI PFNGLWEIGHTUIVARBPROC glad_glWeightuivARB; +#define glWeightuivARB glad_glWeightuivARB +typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLWEIGHTPOINTERARBPROC glad_glWeightPointerARB; +#define glWeightPointerARB glad_glWeightPointerARB +typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC)(GLint count); +GLAPI PFNGLVERTEXBLENDARBPROC glad_glVertexBlendARB; +#define glVertexBlendARB glad_glVertexBlendARB +#endif +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 +GLAPI int GLAD_GL_ARB_vertex_buffer_object; +typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC)(GLenum target, GLuint buffer); +GLAPI PFNGLBINDBUFFERARBPROC glad_glBindBufferARB; +#define glBindBufferARB glad_glBindBufferARB +typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint *buffers); +GLAPI PFNGLDELETEBUFFERSARBPROC glad_glDeleteBuffersARB; +#define glDeleteBuffersARB glad_glDeleteBuffersARB +typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC)(GLsizei n, GLuint *buffers); +GLAPI PFNGLGENBUFFERSARBPROC glad_glGenBuffersARB; +#define glGenBuffersARB glad_glGenBuffersARB +typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC)(GLuint buffer); +GLAPI PFNGLISBUFFERARBPROC glad_glIsBufferARB; +#define glIsBufferARB glad_glIsBufferARB +typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC)(GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +GLAPI PFNGLBUFFERDATAARBPROC glad_glBufferDataARB; +#define glBufferDataARB glad_glBufferDataARB +typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +GLAPI PFNGLBUFFERSUBDATAARBPROC glad_glBufferSubDataARB; +#define glBufferSubDataARB glad_glBufferSubDataARB +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +GLAPI PFNGLGETBUFFERSUBDATAARBPROC glad_glGetBufferSubDataARB; +#define glGetBufferSubDataARB glad_glGetBufferSubDataARB +typedef void * (APIENTRYP PFNGLMAPBUFFERARBPROC)(GLenum target, GLenum access); +GLAPI PFNGLMAPBUFFERARBPROC glad_glMapBufferARB; +#define glMapBufferARB glad_glMapBufferARB +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC)(GLenum target); +GLAPI PFNGLUNMAPBUFFERARBPROC glad_glUnmapBufferARB; +#define glUnmapBufferARB glad_glUnmapBufferARB +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETBUFFERPARAMETERIVARBPROC glad_glGetBufferParameterivARB; +#define glGetBufferParameterivARB glad_glGetBufferParameterivARB +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC)(GLenum target, GLenum pname, void **params); +GLAPI PFNGLGETBUFFERPOINTERVARBPROC glad_glGetBufferPointervARB; +#define glGetBufferPointervARB glad_glGetBufferPointervARB +#endif +#ifndef GL_ARB_vertex_program +#define GL_ARB_vertex_program 1 +GLAPI int GLAD_GL_ARB_vertex_program; +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIB1DARBPROC glad_glVertexAttrib1dARB; +#define glVertexAttrib1dARB glad_glVertexAttrib1dARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB1DVARBPROC glad_glVertexAttrib1dvARB; +#define glVertexAttrib1dvARB glad_glVertexAttrib1dvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC)(GLuint index, GLfloat x); +GLAPI PFNGLVERTEXATTRIB1FARBPROC glad_glVertexAttrib1fARB; +#define glVertexAttrib1fARB glad_glVertexAttrib1fARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB1FVARBPROC glad_glVertexAttrib1fvARB; +#define glVertexAttrib1fvARB glad_glVertexAttrib1fvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC)(GLuint index, GLshort x); +GLAPI PFNGLVERTEXATTRIB1SARBPROC glad_glVertexAttrib1sARB; +#define glVertexAttrib1sARB glad_glVertexAttrib1sARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB1SVARBPROC glad_glVertexAttrib1svARB; +#define glVertexAttrib1svARB glad_glVertexAttrib1svARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIB2DARBPROC glad_glVertexAttrib2dARB; +#define glVertexAttrib2dARB glad_glVertexAttrib2dARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB2DVARBPROC glad_glVertexAttrib2dvARB; +#define glVertexAttrib2dvARB glad_glVertexAttrib2dvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC)(GLuint index, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXATTRIB2FARBPROC glad_glVertexAttrib2fARB; +#define glVertexAttrib2fARB glad_glVertexAttrib2fARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB2FVARBPROC glad_glVertexAttrib2fvARB; +#define glVertexAttrib2fvARB glad_glVertexAttrib2fvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC)(GLuint index, GLshort x, GLshort y); +GLAPI PFNGLVERTEXATTRIB2SARBPROC glad_glVertexAttrib2sARB; +#define glVertexAttrib2sARB glad_glVertexAttrib2sARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB2SVARBPROC glad_glVertexAttrib2svARB; +#define glVertexAttrib2svARB glad_glVertexAttrib2svARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIB3DARBPROC glad_glVertexAttrib3dARB; +#define glVertexAttrib3dARB glad_glVertexAttrib3dARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB3DVARBPROC glad_glVertexAttrib3dvARB; +#define glVertexAttrib3dvARB glad_glVertexAttrib3dvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXATTRIB3FARBPROC glad_glVertexAttrib3fARB; +#define glVertexAttrib3fARB glad_glVertexAttrib3fARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB3FVARBPROC glad_glVertexAttrib3fvARB; +#define glVertexAttrib3fvARB glad_glVertexAttrib3fvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXATTRIB3SARBPROC glad_glVertexAttrib3sARB; +#define glVertexAttrib3sARB glad_glVertexAttrib3sARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB3SVARBPROC glad_glVertexAttrib3svARB; +#define glVertexAttrib3svARB glad_glVertexAttrib3svARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4NBVARBPROC glad_glVertexAttrib4NbvARB; +#define glVertexAttrib4NbvARB glad_glVertexAttrib4NbvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4NIVARBPROC glad_glVertexAttrib4NivARB; +#define glVertexAttrib4NivARB glad_glVertexAttrib4NivARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4NSVARBPROC glad_glVertexAttrib4NsvARB; +#define glVertexAttrib4NsvARB glad_glVertexAttrib4NsvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI PFNGLVERTEXATTRIB4NUBARBPROC glad_glVertexAttrib4NubARB; +#define glVertexAttrib4NubARB glad_glVertexAttrib4NubARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4NUBVARBPROC glad_glVertexAttrib4NubvARB; +#define glVertexAttrib4NubvARB glad_glVertexAttrib4NubvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4NUIVARBPROC glad_glVertexAttrib4NuivARB; +#define glVertexAttrib4NuivARB glad_glVertexAttrib4NuivARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4NUSVARBPROC glad_glVertexAttrib4NusvARB; +#define glVertexAttrib4NusvARB glad_glVertexAttrib4NusvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4BVARBPROC glad_glVertexAttrib4bvARB; +#define glVertexAttrib4bvARB glad_glVertexAttrib4bvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIB4DARBPROC glad_glVertexAttrib4dARB; +#define glVertexAttrib4dARB glad_glVertexAttrib4dARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB4DVARBPROC glad_glVertexAttrib4dvARB; +#define glVertexAttrib4dvARB glad_glVertexAttrib4dvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXATTRIB4FARBPROC glad_glVertexAttrib4fARB; +#define glVertexAttrib4fARB glad_glVertexAttrib4fARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB4FVARBPROC glad_glVertexAttrib4fvARB; +#define glVertexAttrib4fvARB glad_glVertexAttrib4fvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4IVARBPROC glad_glVertexAttrib4ivARB; +#define glVertexAttrib4ivARB glad_glVertexAttrib4ivARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXATTRIB4SARBPROC glad_glVertexAttrib4sARB; +#define glVertexAttrib4sARB glad_glVertexAttrib4sARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4SVARBPROC glad_glVertexAttrib4svARB; +#define glVertexAttrib4svARB glad_glVertexAttrib4svARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4UBVARBPROC glad_glVertexAttrib4ubvARB; +#define glVertexAttrib4ubvARB glad_glVertexAttrib4ubvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4UIVARBPROC glad_glVertexAttrib4uivARB; +#define glVertexAttrib4uivARB glad_glVertexAttrib4uivARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4USVARBPROC glad_glVertexAttrib4usvARB; +#define glVertexAttrib4usvARB glad_glVertexAttrib4usvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBPOINTERARBPROC glad_glVertexAttribPointerARB; +#define glVertexAttribPointerARB glad_glVertexAttribPointerARB +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +GLAPI PFNGLENABLEVERTEXATTRIBARRAYARBPROC glad_glEnableVertexAttribArrayARB; +#define glEnableVertexAttribArrayARB glad_glEnableVertexAttribArrayARB +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +GLAPI PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glad_glDisableVertexAttribArrayARB; +#define glDisableVertexAttribArrayARB glad_glDisableVertexAttribArrayARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBDVARBPROC glad_glGetVertexAttribdvARB; +#define glGetVertexAttribdvARB glad_glGetVertexAttribdvARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBFVARBPROC glad_glGetVertexAttribfvARB; +#define glGetVertexAttribfvARB glad_glGetVertexAttribfvARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIVARBPROC glad_glGetVertexAttribivARB; +#define glGetVertexAttribivARB glad_glGetVertexAttribivARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC)(GLuint index, GLenum pname, void **pointer); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVARBPROC glad_glGetVertexAttribPointervARB; +#define glGetVertexAttribPointervARB glad_glGetVertexAttribPointervARB +#endif +#ifndef GL_ARB_vertex_shader +#define GL_ARB_vertex_shader 1 +GLAPI int GLAD_GL_ARB_vertex_shader; +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC)(GLhandleARB programObj, GLuint index, const GLcharARB *name); +GLAPI PFNGLBINDATTRIBLOCATIONARBPROC glad_glBindAttribLocationARB; +#define glBindAttribLocationARB glad_glBindAttribLocationARB +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI PFNGLGETACTIVEATTRIBARBPROC glad_glGetActiveAttribARB; +#define glGetActiveAttribARB glad_glGetActiveAttribARB +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC)(GLhandleARB programObj, const GLcharARB *name); +GLAPI PFNGLGETATTRIBLOCATIONARBPROC glad_glGetAttribLocationARB; +#define glGetAttribLocationARB glad_glGetAttribLocationARB +#endif +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +GLAPI int GLAD_GL_ARB_vertex_type_10f_11f_11f_rev; +#endif +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +GLAPI int GLAD_GL_ARB_vertex_type_2_10_10_10_rev; +#endif +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 +GLAPI int GLAD_GL_ARB_viewport_array; +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYDVNVPROC)(GLuint first, GLsizei count, const GLdouble *v); +GLAPI PFNGLDEPTHRANGEARRAYDVNVPROC glad_glDepthRangeArraydvNV; +#define glDepthRangeArraydvNV glad_glDepthRangeArraydvNV +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDDNVPROC)(GLuint index, GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEINDEXEDDNVPROC glad_glDepthRangeIndexeddNV; +#define glDepthRangeIndexeddNV glad_glDepthRangeIndexeddNV +#endif +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 +GLAPI int GLAD_GL_ARB_window_pos; +typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC)(GLdouble x, GLdouble y); +GLAPI PFNGLWINDOWPOS2DARBPROC glad_glWindowPos2dARB; +#define glWindowPos2dARB glad_glWindowPos2dARB +typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS2DVARBPROC glad_glWindowPos2dvARB; +#define glWindowPos2dvARB glad_glWindowPos2dvARB +typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC)(GLfloat x, GLfloat y); +GLAPI PFNGLWINDOWPOS2FARBPROC glad_glWindowPos2fARB; +#define glWindowPos2fARB glad_glWindowPos2fARB +typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS2FVARBPROC glad_glWindowPos2fvARB; +#define glWindowPos2fvARB glad_glWindowPos2fvARB +typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC)(GLint x, GLint y); +GLAPI PFNGLWINDOWPOS2IARBPROC glad_glWindowPos2iARB; +#define glWindowPos2iARB glad_glWindowPos2iARB +typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS2IVARBPROC glad_glWindowPos2ivARB; +#define glWindowPos2ivARB glad_glWindowPos2ivARB +typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC)(GLshort x, GLshort y); +GLAPI PFNGLWINDOWPOS2SARBPROC glad_glWindowPos2sARB; +#define glWindowPos2sARB glad_glWindowPos2sARB +typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS2SVARBPROC glad_glWindowPos2svARB; +#define glWindowPos2svARB glad_glWindowPos2svARB +typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLWINDOWPOS3DARBPROC glad_glWindowPos3dARB; +#define glWindowPos3dARB glad_glWindowPos3dARB +typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS3DVARBPROC glad_glWindowPos3dvARB; +#define glWindowPos3dvARB glad_glWindowPos3dvARB +typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLWINDOWPOS3FARBPROC glad_glWindowPos3fARB; +#define glWindowPos3fARB glad_glWindowPos3fARB +typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS3FVARBPROC glad_glWindowPos3fvARB; +#define glWindowPos3fvARB glad_glWindowPos3fvARB +typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC)(GLint x, GLint y, GLint z); +GLAPI PFNGLWINDOWPOS3IARBPROC glad_glWindowPos3iARB; +#define glWindowPos3iARB glad_glWindowPos3iARB +typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS3IVARBPROC glad_glWindowPos3ivARB; +#define glWindowPos3ivARB glad_glWindowPos3ivARB +typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC)(GLshort x, GLshort y, GLshort z); +GLAPI PFNGLWINDOWPOS3SARBPROC glad_glWindowPos3sARB; +#define glWindowPos3sARB glad_glWindowPos3sARB +typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS3SVARBPROC glad_glWindowPos3svARB; +#define glWindowPos3svARB glad_glWindowPos3svARB +#endif +#ifndef GL_ATI_draw_buffers +#define GL_ATI_draw_buffers 1 +GLAPI int GLAD_GL_ATI_draw_buffers; +typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC)(GLsizei n, const GLenum *bufs); +GLAPI PFNGLDRAWBUFFERSATIPROC glad_glDrawBuffersATI; +#define glDrawBuffersATI glad_glDrawBuffersATI +#endif +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +GLAPI int GLAD_GL_ATI_element_array; +typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC)(GLenum type, const void *pointer); +GLAPI PFNGLELEMENTPOINTERATIPROC glad_glElementPointerATI; +#define glElementPointerATI glad_glElementPointerATI +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC)(GLenum mode, GLsizei count); +GLAPI PFNGLDRAWELEMENTARRAYATIPROC glad_glDrawElementArrayATI; +#define glDrawElementArrayATI glad_glDrawElementArrayATI +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count); +GLAPI PFNGLDRAWRANGEELEMENTARRAYATIPROC glad_glDrawRangeElementArrayATI; +#define glDrawRangeElementArrayATI glad_glDrawRangeElementArrayATI +#endif +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +GLAPI int GLAD_GL_ATI_envmap_bumpmap; +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC)(GLenum pname, const GLint *param); +GLAPI PFNGLTEXBUMPPARAMETERIVATIPROC glad_glTexBumpParameterivATI; +#define glTexBumpParameterivATI glad_glTexBumpParameterivATI +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC)(GLenum pname, const GLfloat *param); +GLAPI PFNGLTEXBUMPPARAMETERFVATIPROC glad_glTexBumpParameterfvATI; +#define glTexBumpParameterfvATI glad_glTexBumpParameterfvATI +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC)(GLenum pname, GLint *param); +GLAPI PFNGLGETTEXBUMPPARAMETERIVATIPROC glad_glGetTexBumpParameterivATI; +#define glGetTexBumpParameterivATI glad_glGetTexBumpParameterivATI +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC)(GLenum pname, GLfloat *param); +GLAPI PFNGLGETTEXBUMPPARAMETERFVATIPROC glad_glGetTexBumpParameterfvATI; +#define glGetTexBumpParameterfvATI glad_glGetTexBumpParameterfvATI +#endif +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +GLAPI int GLAD_GL_ATI_fragment_shader; +typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range); +GLAPI PFNGLGENFRAGMENTSHADERSATIPROC glad_glGenFragmentShadersATI; +#define glGenFragmentShadersATI glad_glGenFragmentShadersATI +typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id); +GLAPI PFNGLBINDFRAGMENTSHADERATIPROC glad_glBindFragmentShaderATI; +#define glBindFragmentShaderATI glad_glBindFragmentShaderATI +typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id); +GLAPI PFNGLDELETEFRAGMENTSHADERATIPROC glad_glDeleteFragmentShaderATI; +#define glDeleteFragmentShaderATI glad_glDeleteFragmentShaderATI +typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC)(void); +GLAPI PFNGLBEGINFRAGMENTSHADERATIPROC glad_glBeginFragmentShaderATI; +#define glBeginFragmentShaderATI glad_glBeginFragmentShaderATI +typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC)(void); +GLAPI PFNGLENDFRAGMENTSHADERATIPROC glad_glEndFragmentShaderATI; +#define glEndFragmentShaderATI glad_glEndFragmentShaderATI +typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle); +GLAPI PFNGLPASSTEXCOORDATIPROC glad_glPassTexCoordATI; +#define glPassTexCoordATI glad_glPassTexCoordATI +typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle); +GLAPI PFNGLSAMPLEMAPATIPROC glad_glSampleMapATI; +#define glSampleMapATI glad_glSampleMapATI +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI PFNGLCOLORFRAGMENTOP1ATIPROC glad_glColorFragmentOp1ATI; +#define glColorFragmentOp1ATI glad_glColorFragmentOp1ATI +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI PFNGLCOLORFRAGMENTOP2ATIPROC glad_glColorFragmentOp2ATI; +#define glColorFragmentOp2ATI glad_glColorFragmentOp2ATI +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +GLAPI PFNGLCOLORFRAGMENTOP3ATIPROC glad_glColorFragmentOp3ATI; +#define glColorFragmentOp3ATI glad_glColorFragmentOp3ATI +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI PFNGLALPHAFRAGMENTOP1ATIPROC glad_glAlphaFragmentOp1ATI; +#define glAlphaFragmentOp1ATI glad_glAlphaFragmentOp1ATI +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI PFNGLALPHAFRAGMENTOP2ATIPROC glad_glAlphaFragmentOp2ATI; +#define glAlphaFragmentOp2ATI glad_glAlphaFragmentOp2ATI +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +GLAPI PFNGLALPHAFRAGMENTOP3ATIPROC glad_glAlphaFragmentOp3ATI; +#define glAlphaFragmentOp3ATI glad_glAlphaFragmentOp3ATI +typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat *value); +GLAPI PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glad_glSetFragmentShaderConstantATI; +#define glSetFragmentShaderConstantATI glad_glSetFragmentShaderConstantATI +#endif +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 +GLAPI int GLAD_GL_ATI_map_object_buffer; +typedef void * (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer); +GLAPI PFNGLMAPOBJECTBUFFERATIPROC glad_glMapObjectBufferATI; +#define glMapObjectBufferATI glad_glMapObjectBufferATI +typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer); +GLAPI PFNGLUNMAPOBJECTBUFFERATIPROC glad_glUnmapObjectBufferATI; +#define glUnmapObjectBufferATI glad_glUnmapObjectBufferATI +#endif +#ifndef GL_ATI_meminfo +#define GL_ATI_meminfo 1 +GLAPI int GLAD_GL_ATI_meminfo; +#endif +#ifndef GL_ATI_pixel_format_float +#define GL_ATI_pixel_format_float 1 +GLAPI int GLAD_GL_ATI_pixel_format_float; +#endif +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +GLAPI int GLAD_GL_ATI_pn_triangles; +typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPNTRIANGLESIATIPROC glad_glPNTrianglesiATI; +#define glPNTrianglesiATI glad_glPNTrianglesiATI +typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPNTRIANGLESFATIPROC glad_glPNTrianglesfATI; +#define glPNTrianglesfATI glad_glPNTrianglesfATI +#endif +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 +GLAPI int GLAD_GL_ATI_separate_stencil; +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI PFNGLSTENCILOPSEPARATEATIPROC glad_glStencilOpSeparateATI; +#define glStencilOpSeparateATI glad_glStencilOpSeparateATI +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCSEPARATEATIPROC glad_glStencilFuncSeparateATI; +#define glStencilFuncSeparateATI glad_glStencilFuncSeparateATI +#endif +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 +GLAPI int GLAD_GL_ATI_text_fragment_shader; +#endif +#ifndef GL_ATI_texture_env_combine3 +#define GL_ATI_texture_env_combine3 1 +GLAPI int GLAD_GL_ATI_texture_env_combine3; +#endif +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +GLAPI int GLAD_GL_ATI_texture_float; +#endif +#ifndef GL_ATI_texture_mirror_once +#define GL_ATI_texture_mirror_once 1 +GLAPI int GLAD_GL_ATI_texture_mirror_once; +#endif +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +GLAPI int GLAD_GL_ATI_vertex_array_object; +typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC)(GLsizei size, const void *pointer, GLenum usage); +GLAPI PFNGLNEWOBJECTBUFFERATIPROC glad_glNewObjectBufferATI; +#define glNewObjectBufferATI glad_glNewObjectBufferATI +typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC)(GLuint buffer); +GLAPI PFNGLISOBJECTBUFFERATIPROC glad_glIsObjectBufferATI; +#define glIsObjectBufferATI glad_glIsObjectBufferATI +typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC)(GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +GLAPI PFNGLUPDATEOBJECTBUFFERATIPROC glad_glUpdateObjectBufferATI; +#define glUpdateObjectBufferATI glad_glUpdateObjectBufferATI +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC)(GLuint buffer, GLenum pname, GLfloat *params); +GLAPI PFNGLGETOBJECTBUFFERFVATIPROC glad_glGetObjectBufferfvATI; +#define glGetObjectBufferfvATI glad_glGetObjectBufferfvATI +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC)(GLuint buffer, GLenum pname, GLint *params); +GLAPI PFNGLGETOBJECTBUFFERIVATIPROC glad_glGetObjectBufferivATI; +#define glGetObjectBufferivATI glad_glGetObjectBufferivATI +typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC)(GLuint buffer); +GLAPI PFNGLFREEOBJECTBUFFERATIPROC glad_glFreeObjectBufferATI; +#define glFreeObjectBufferATI glad_glFreeObjectBufferATI +typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC)(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI PFNGLARRAYOBJECTATIPROC glad_glArrayObjectATI; +#define glArrayObjectATI glad_glArrayObjectATI +typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC)(GLenum array, GLenum pname, GLfloat *params); +GLAPI PFNGLGETARRAYOBJECTFVATIPROC glad_glGetArrayObjectfvATI; +#define glGetArrayObjectfvATI glad_glGetArrayObjectfvATI +typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC)(GLenum array, GLenum pname, GLint *params); +GLAPI PFNGLGETARRAYOBJECTIVATIPROC glad_glGetArrayObjectivATI; +#define glGetArrayObjectivATI glad_glGetArrayObjectivATI +typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC)(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI PFNGLVARIANTARRAYOBJECTATIPROC glad_glVariantArrayObjectATI; +#define glVariantArrayObjectATI glad_glVariantArrayObjectATI +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC)(GLuint id, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVARIANTARRAYOBJECTFVATIPROC glad_glGetVariantArrayObjectfvATI; +#define glGetVariantArrayObjectfvATI glad_glGetVariantArrayObjectfvATI +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETVARIANTARRAYOBJECTIVATIPROC glad_glGetVariantArrayObjectivATI; +#define glGetVariantArrayObjectivATI glad_glGetVariantArrayObjectivATI +#endif +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 +GLAPI int GLAD_GL_ATI_vertex_attrib_array_object; +typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glad_glVertexAttribArrayObjectATI; +#define glVertexAttribArrayObjectATI glad_glVertexAttribArrayObjectATI +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC glad_glGetVertexAttribArrayObjectfvATI; +#define glGetVertexAttribArrayObjectfvATI glad_glGetVertexAttribArrayObjectfvATI +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC glad_glGetVertexAttribArrayObjectivATI; +#define glGetVertexAttribArrayObjectivATI glad_glGetVertexAttribArrayObjectivATI +#endif +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +GLAPI int GLAD_GL_ATI_vertex_streams; +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC)(GLenum stream, GLshort x); +GLAPI PFNGLVERTEXSTREAM1SATIPROC glad_glVertexStream1sATI; +#define glVertexStream1sATI glad_glVertexStream1sATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLVERTEXSTREAM1SVATIPROC glad_glVertexStream1svATI; +#define glVertexStream1svATI glad_glVertexStream1svATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC)(GLenum stream, GLint x); +GLAPI PFNGLVERTEXSTREAM1IATIPROC glad_glVertexStream1iATI; +#define glVertexStream1iATI glad_glVertexStream1iATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLVERTEXSTREAM1IVATIPROC glad_glVertexStream1ivATI; +#define glVertexStream1ivATI glad_glVertexStream1ivATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC)(GLenum stream, GLfloat x); +GLAPI PFNGLVERTEXSTREAM1FATIPROC glad_glVertexStream1fATI; +#define glVertexStream1fATI glad_glVertexStream1fATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLVERTEXSTREAM1FVATIPROC glad_glVertexStream1fvATI; +#define glVertexStream1fvATI glad_glVertexStream1fvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC)(GLenum stream, GLdouble x); +GLAPI PFNGLVERTEXSTREAM1DATIPROC glad_glVertexStream1dATI; +#define glVertexStream1dATI glad_glVertexStream1dATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLVERTEXSTREAM1DVATIPROC glad_glVertexStream1dvATI; +#define glVertexStream1dvATI glad_glVertexStream1dvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC)(GLenum stream, GLshort x, GLshort y); +GLAPI PFNGLVERTEXSTREAM2SATIPROC glad_glVertexStream2sATI; +#define glVertexStream2sATI glad_glVertexStream2sATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLVERTEXSTREAM2SVATIPROC glad_glVertexStream2svATI; +#define glVertexStream2svATI glad_glVertexStream2svATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC)(GLenum stream, GLint x, GLint y); +GLAPI PFNGLVERTEXSTREAM2IATIPROC glad_glVertexStream2iATI; +#define glVertexStream2iATI glad_glVertexStream2iATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLVERTEXSTREAM2IVATIPROC glad_glVertexStream2ivATI; +#define glVertexStream2ivATI glad_glVertexStream2ivATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC)(GLenum stream, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXSTREAM2FATIPROC glad_glVertexStream2fATI; +#define glVertexStream2fATI glad_glVertexStream2fATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLVERTEXSTREAM2FVATIPROC glad_glVertexStream2fvATI; +#define glVertexStream2fvATI glad_glVertexStream2fvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC)(GLenum stream, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXSTREAM2DATIPROC glad_glVertexStream2dATI; +#define glVertexStream2dATI glad_glVertexStream2dATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLVERTEXSTREAM2DVATIPROC glad_glVertexStream2dvATI; +#define glVertexStream2dvATI glad_glVertexStream2dvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXSTREAM3SATIPROC glad_glVertexStream3sATI; +#define glVertexStream3sATI glad_glVertexStream3sATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLVERTEXSTREAM3SVATIPROC glad_glVertexStream3svATI; +#define glVertexStream3svATI glad_glVertexStream3svATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC)(GLenum stream, GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEXSTREAM3IATIPROC glad_glVertexStream3iATI; +#define glVertexStream3iATI glad_glVertexStream3iATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLVERTEXSTREAM3IVATIPROC glad_glVertexStream3ivATI; +#define glVertexStream3ivATI glad_glVertexStream3ivATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXSTREAM3FATIPROC glad_glVertexStream3fATI; +#define glVertexStream3fATI glad_glVertexStream3fATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLVERTEXSTREAM3FVATIPROC glad_glVertexStream3fvATI; +#define glVertexStream3fvATI glad_glVertexStream3fvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC)(GLenum stream, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXSTREAM3DATIPROC glad_glVertexStream3dATI; +#define glVertexStream3dATI glad_glVertexStream3dATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLVERTEXSTREAM3DVATIPROC glad_glVertexStream3dvATI; +#define glVertexStream3dvATI glad_glVertexStream3dvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXSTREAM4SATIPROC glad_glVertexStream4sATI; +#define glVertexStream4sATI glad_glVertexStream4sATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLVERTEXSTREAM4SVATIPROC glad_glVertexStream4svATI; +#define glVertexStream4svATI glad_glVertexStream4svATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC)(GLenum stream, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEXSTREAM4IATIPROC glad_glVertexStream4iATI; +#define glVertexStream4iATI glad_glVertexStream4iATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLVERTEXSTREAM4IVATIPROC glad_glVertexStream4ivATI; +#define glVertexStream4ivATI glad_glVertexStream4ivATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXSTREAM4FATIPROC glad_glVertexStream4fATI; +#define glVertexStream4fATI glad_glVertexStream4fATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLVERTEXSTREAM4FVATIPROC glad_glVertexStream4fvATI; +#define glVertexStream4fvATI glad_glVertexStream4fvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXSTREAM4DATIPROC glad_glVertexStream4dATI; +#define glVertexStream4dATI glad_glVertexStream4dATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLVERTEXSTREAM4DVATIPROC glad_glVertexStream4dvATI; +#define glVertexStream4dvATI glad_glVertexStream4dvATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC)(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI PFNGLNORMALSTREAM3BATIPROC glad_glNormalStream3bATI; +#define glNormalStream3bATI glad_glNormalStream3bATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC)(GLenum stream, const GLbyte *coords); +GLAPI PFNGLNORMALSTREAM3BVATIPROC glad_glNormalStream3bvATI; +#define glNormalStream3bvATI glad_glNormalStream3bvATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC)(GLenum stream, GLshort nx, GLshort ny, GLshort nz); +GLAPI PFNGLNORMALSTREAM3SATIPROC glad_glNormalStream3sATI; +#define glNormalStream3sATI glad_glNormalStream3sATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLNORMALSTREAM3SVATIPROC glad_glNormalStream3svATI; +#define glNormalStream3svATI glad_glNormalStream3svATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC)(GLenum stream, GLint nx, GLint ny, GLint nz); +GLAPI PFNGLNORMALSTREAM3IATIPROC glad_glNormalStream3iATI; +#define glNormalStream3iATI glad_glNormalStream3iATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLNORMALSTREAM3IVATIPROC glad_glNormalStream3ivATI; +#define glNormalStream3ivATI glad_glNormalStream3ivATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI PFNGLNORMALSTREAM3FATIPROC glad_glNormalStream3fATI; +#define glNormalStream3fATI glad_glNormalStream3fATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLNORMALSTREAM3FVATIPROC glad_glNormalStream3fvATI; +#define glNormalStream3fvATI glad_glNormalStream3fvATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI PFNGLNORMALSTREAM3DATIPROC glad_glNormalStream3dATI; +#define glNormalStream3dATI glad_glNormalStream3dATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLNORMALSTREAM3DVATIPROC glad_glNormalStream3dvATI; +#define glNormalStream3dvATI glad_glNormalStream3dvATI +typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)(GLenum stream); +GLAPI PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC glad_glClientActiveVertexStreamATI; +#define glClientActiveVertexStreamATI glad_glClientActiveVertexStreamATI +typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC)(GLenum pname, GLint param); +GLAPI PFNGLVERTEXBLENDENVIATIPROC glad_glVertexBlendEnviATI; +#define glVertexBlendEnviATI glad_glVertexBlendEnviATI +typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLVERTEXBLENDENVFATIPROC glad_glVertexBlendEnvfATI; +#define glVertexBlendEnvfATI glad_glVertexBlendEnvfATI +#endif +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +GLAPI int GLAD_GL_EXT_422_pixels; +#endif +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +GLAPI int GLAD_GL_EXT_EGL_image_storage; +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)(GLenum target, GLeglImageOES image, const GLint* attrib_list); +GLAPI PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC glad_glEGLImageTargetTexStorageEXT; +#define glEGLImageTargetTexStorageEXT glad_glEGLImageTargetTexStorageEXT +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)(GLuint texture, GLeglImageOES image, const GLint* attrib_list); +GLAPI PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC glad_glEGLImageTargetTextureStorageEXT; +#define glEGLImageTargetTextureStorageEXT glad_glEGLImageTargetTextureStorageEXT +#endif +#ifndef GL_EXT_EGL_sync +#define GL_EXT_EGL_sync 1 +GLAPI int GLAD_GL_EXT_EGL_sync; +#endif +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +GLAPI int GLAD_GL_EXT_abgr; +#endif +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +GLAPI int GLAD_GL_EXT_bgra; +#endif +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +GLAPI int GLAD_GL_EXT_bindable_uniform; +typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC)(GLuint program, GLint location, GLuint buffer); +GLAPI PFNGLUNIFORMBUFFEREXTPROC glad_glUniformBufferEXT; +#define glUniformBufferEXT glad_glUniformBufferEXT +typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC)(GLuint program, GLint location); +GLAPI PFNGLGETUNIFORMBUFFERSIZEEXTPROC glad_glGetUniformBufferSizeEXT; +#define glGetUniformBufferSizeEXT glad_glGetUniformBufferSizeEXT +typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC)(GLuint program, GLint location); +GLAPI PFNGLGETUNIFORMOFFSETEXTPROC glad_glGetUniformOffsetEXT; +#define glGetUniformOffsetEXT glad_glGetUniformOffsetEXT +#endif +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +GLAPI int GLAD_GL_EXT_blend_color; +typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLBLENDCOLOREXTPROC glad_glBlendColorEXT; +#define glBlendColorEXT glad_glBlendColorEXT +#endif +#ifndef GL_EXT_blend_equation_separate +#define GL_EXT_blend_equation_separate 1 +GLAPI int GLAD_GL_EXT_blend_equation_separate; +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC)(GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEEXTPROC glad_glBlendEquationSeparateEXT; +#define glBlendEquationSeparateEXT glad_glBlendEquationSeparateEXT +#endif +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +GLAPI int GLAD_GL_EXT_blend_func_separate; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEEXTPROC glad_glBlendFuncSeparateEXT; +#define glBlendFuncSeparateEXT glad_glBlendFuncSeparateEXT +#endif +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +GLAPI int GLAD_GL_EXT_blend_logic_op; +#endif +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +GLAPI int GLAD_GL_EXT_blend_minmax; +typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC)(GLenum mode); +GLAPI PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT; +#define glBlendEquationEXT glad_glBlendEquationEXT +#endif +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +GLAPI int GLAD_GL_EXT_blend_subtract; +#endif +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +GLAPI int GLAD_GL_EXT_clip_volume_hint; +#endif +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +GLAPI int GLAD_GL_EXT_cmyka; +#endif +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 +GLAPI int GLAD_GL_EXT_color_subtable; +typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCOLORSUBTABLEEXTPROC glad_glColorSubTableEXT; +#define glColorSubTableEXT glad_glColorSubTableEXT +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCOLORSUBTABLEEXTPROC glad_glCopyColorSubTableEXT; +#define glCopyColorSubTableEXT glad_glCopyColorSubTableEXT +#endif +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +GLAPI int GLAD_GL_EXT_compiled_vertex_array; +typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC)(GLint first, GLsizei count); +GLAPI PFNGLLOCKARRAYSEXTPROC glad_glLockArraysEXT; +#define glLockArraysEXT glad_glLockArraysEXT +typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC)(void); +GLAPI PFNGLUNLOCKARRAYSEXTPROC glad_glUnlockArraysEXT; +#define glUnlockArraysEXT glad_glUnlockArraysEXT +#endif +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +GLAPI int GLAD_GL_EXT_convolution; +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI PFNGLCONVOLUTIONFILTER1DEXTPROC glad_glConvolutionFilter1DEXT; +#define glConvolutionFilter1DEXT glad_glConvolutionFilter1DEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI PFNGLCONVOLUTIONFILTER2DEXTPROC glad_glConvolutionFilter2DEXT; +#define glConvolutionFilter2DEXT glad_glConvolutionFilter2DEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC)(GLenum target, GLenum pname, GLfloat params); +GLAPI PFNGLCONVOLUTIONPARAMETERFEXTPROC glad_glConvolutionParameterfEXT; +#define glConvolutionParameterfEXT glad_glConvolutionParameterfEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLCONVOLUTIONPARAMETERFVEXTPROC glad_glConvolutionParameterfvEXT; +#define glConvolutionParameterfvEXT glad_glConvolutionParameterfvEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC)(GLenum target, GLenum pname, GLint params); +GLAPI PFNGLCONVOLUTIONPARAMETERIEXTPROC glad_glConvolutionParameteriEXT; +#define glConvolutionParameteriEXT glad_glConvolutionParameteriEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLCONVOLUTIONPARAMETERIVEXTPROC glad_glConvolutionParameterivEXT; +#define glConvolutionParameterivEXT glad_glConvolutionParameterivEXT +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC glad_glCopyConvolutionFilter1DEXT; +#define glCopyConvolutionFilter1DEXT glad_glCopyConvolutionFilter1DEXT +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC glad_glCopyConvolutionFilter2DEXT; +#define glCopyConvolutionFilter2DEXT glad_glCopyConvolutionFilter2DEXT +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, void *image); +GLAPI PFNGLGETCONVOLUTIONFILTEREXTPROC glad_glGetConvolutionFilterEXT; +#define glGetConvolutionFilterEXT glad_glGetConvolutionFilterEXT +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC glad_glGetConvolutionParameterfvEXT; +#define glGetConvolutionParameterfvEXT glad_glGetConvolutionParameterfvEXT +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glad_glGetConvolutionParameterivEXT; +#define glGetConvolutionParameterivEXT glad_glGetConvolutionParameterivEXT +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI PFNGLGETSEPARABLEFILTEREXTPROC glad_glGetSeparableFilterEXT; +#define glGetSeparableFilterEXT glad_glGetSeparableFilterEXT +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +GLAPI PFNGLSEPARABLEFILTER2DEXTPROC glad_glSeparableFilter2DEXT; +#define glSeparableFilter2DEXT glad_glSeparableFilter2DEXT +#endif +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +GLAPI int GLAD_GL_EXT_coordinate_frame; +typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC)(GLbyte tx, GLbyte ty, GLbyte tz); +GLAPI PFNGLTANGENT3BEXTPROC glad_glTangent3bEXT; +#define glTangent3bEXT glad_glTangent3bEXT +typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC)(const GLbyte *v); +GLAPI PFNGLTANGENT3BVEXTPROC glad_glTangent3bvEXT; +#define glTangent3bvEXT glad_glTangent3bvEXT +typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC)(GLdouble tx, GLdouble ty, GLdouble tz); +GLAPI PFNGLTANGENT3DEXTPROC glad_glTangent3dEXT; +#define glTangent3dEXT glad_glTangent3dEXT +typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC)(const GLdouble *v); +GLAPI PFNGLTANGENT3DVEXTPROC glad_glTangent3dvEXT; +#define glTangent3dvEXT glad_glTangent3dvEXT +typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC)(GLfloat tx, GLfloat ty, GLfloat tz); +GLAPI PFNGLTANGENT3FEXTPROC glad_glTangent3fEXT; +#define glTangent3fEXT glad_glTangent3fEXT +typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC)(const GLfloat *v); +GLAPI PFNGLTANGENT3FVEXTPROC glad_glTangent3fvEXT; +#define glTangent3fvEXT glad_glTangent3fvEXT +typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC)(GLint tx, GLint ty, GLint tz); +GLAPI PFNGLTANGENT3IEXTPROC glad_glTangent3iEXT; +#define glTangent3iEXT glad_glTangent3iEXT +typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC)(const GLint *v); +GLAPI PFNGLTANGENT3IVEXTPROC glad_glTangent3ivEXT; +#define glTangent3ivEXT glad_glTangent3ivEXT +typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC)(GLshort tx, GLshort ty, GLshort tz); +GLAPI PFNGLTANGENT3SEXTPROC glad_glTangent3sEXT; +#define glTangent3sEXT glad_glTangent3sEXT +typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC)(const GLshort *v); +GLAPI PFNGLTANGENT3SVEXTPROC glad_glTangent3svEXT; +#define glTangent3svEXT glad_glTangent3svEXT +typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC)(GLbyte bx, GLbyte by, GLbyte bz); +GLAPI PFNGLBINORMAL3BEXTPROC glad_glBinormal3bEXT; +#define glBinormal3bEXT glad_glBinormal3bEXT +typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC)(const GLbyte *v); +GLAPI PFNGLBINORMAL3BVEXTPROC glad_glBinormal3bvEXT; +#define glBinormal3bvEXT glad_glBinormal3bvEXT +typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC)(GLdouble bx, GLdouble by, GLdouble bz); +GLAPI PFNGLBINORMAL3DEXTPROC glad_glBinormal3dEXT; +#define glBinormal3dEXT glad_glBinormal3dEXT +typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC)(const GLdouble *v); +GLAPI PFNGLBINORMAL3DVEXTPROC glad_glBinormal3dvEXT; +#define glBinormal3dvEXT glad_glBinormal3dvEXT +typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC)(GLfloat bx, GLfloat by, GLfloat bz); +GLAPI PFNGLBINORMAL3FEXTPROC glad_glBinormal3fEXT; +#define glBinormal3fEXT glad_glBinormal3fEXT +typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC)(const GLfloat *v); +GLAPI PFNGLBINORMAL3FVEXTPROC glad_glBinormal3fvEXT; +#define glBinormal3fvEXT glad_glBinormal3fvEXT +typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC)(GLint bx, GLint by, GLint bz); +GLAPI PFNGLBINORMAL3IEXTPROC glad_glBinormal3iEXT; +#define glBinormal3iEXT glad_glBinormal3iEXT +typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC)(const GLint *v); +GLAPI PFNGLBINORMAL3IVEXTPROC glad_glBinormal3ivEXT; +#define glBinormal3ivEXT glad_glBinormal3ivEXT +typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC)(GLshort bx, GLshort by, GLshort bz); +GLAPI PFNGLBINORMAL3SEXTPROC glad_glBinormal3sEXT; +#define glBinormal3sEXT glad_glBinormal3sEXT +typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC)(const GLshort *v); +GLAPI PFNGLBINORMAL3SVEXTPROC glad_glBinormal3svEXT; +#define glBinormal3svEXT glad_glBinormal3svEXT +typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLTANGENTPOINTEREXTPROC glad_glTangentPointerEXT; +#define glTangentPointerEXT glad_glTangentPointerEXT +typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLBINORMALPOINTEREXTPROC glad_glBinormalPointerEXT; +#define glBinormalPointerEXT glad_glBinormalPointerEXT +#endif +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 +GLAPI int GLAD_GL_EXT_copy_texture; +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYTEXIMAGE1DEXTPROC glad_glCopyTexImage1DEXT; +#define glCopyTexImage1DEXT glad_glCopyTexImage1DEXT +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYTEXIMAGE2DEXTPROC glad_glCopyTexImage2DEXT; +#define glCopyTexImage2DEXT glad_glCopyTexImage2DEXT +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXSUBIMAGE1DEXTPROC glad_glCopyTexSubImage1DEXT; +#define glCopyTexSubImage1DEXT glad_glCopyTexSubImage1DEXT +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE2DEXTPROC glad_glCopyTexSubImage2DEXT; +#define glCopyTexSubImage2DEXT glad_glCopyTexSubImage2DEXT +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE3DEXTPROC glad_glCopyTexSubImage3DEXT; +#define glCopyTexSubImage3DEXT glad_glCopyTexSubImage3DEXT +#endif +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +GLAPI int GLAD_GL_EXT_cull_vertex; +typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC)(GLenum pname, GLdouble *params); +GLAPI PFNGLCULLPARAMETERDVEXTPROC glad_glCullParameterdvEXT; +#define glCullParameterdvEXT glad_glCullParameterdvEXT +typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC)(GLenum pname, GLfloat *params); +GLAPI PFNGLCULLPARAMETERFVEXTPROC glad_glCullParameterfvEXT; +#define glCullParameterfvEXT glad_glCullParameterfvEXT +#endif +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +GLAPI int GLAD_GL_EXT_debug_label; +typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC)(GLenum type, GLuint object, GLsizei length, const GLchar *label); +GLAPI PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT; +#define glLabelObjectEXT glad_glLabelObjectEXT +typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC)(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT; +#define glGetObjectLabelEXT glad_glGetObjectLabelEXT +#endif +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +GLAPI int GLAD_GL_EXT_debug_marker; +typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar *marker); +GLAPI PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT; +#define glInsertEventMarkerEXT glad_glInsertEventMarkerEXT +typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar *marker); +GLAPI PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT; +#define glPushGroupMarkerEXT glad_glPushGroupMarkerEXT +typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC)(void); +GLAPI PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT; +#define glPopGroupMarkerEXT glad_glPopGroupMarkerEXT +#endif +#ifndef GL_EXT_depth_bounds_test +#define GL_EXT_depth_bounds_test 1 +GLAPI int GLAD_GL_EXT_depth_bounds_test; +typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC)(GLclampd zmin, GLclampd zmax); +GLAPI PFNGLDEPTHBOUNDSEXTPROC glad_glDepthBoundsEXT; +#define glDepthBoundsEXT glad_glDepthBoundsEXT +#endif +#ifndef GL_EXT_direct_state_access +#define GL_EXT_direct_state_access 1 +GLAPI int GLAD_GL_EXT_direct_state_access; +typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat *m); +GLAPI PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT; +#define glMatrixLoadfEXT glad_glMatrixLoadfEXT +typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble *m); +GLAPI PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT; +#define glMatrixLoaddEXT glad_glMatrixLoaddEXT +typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat *m); +GLAPI PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT; +#define glMatrixMultfEXT glad_glMatrixMultfEXT +typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble *m); +GLAPI PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT; +#define glMatrixMultdEXT glad_glMatrixMultdEXT +typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode); +GLAPI PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT; +#define glMatrixLoadIdentityEXT glad_glMatrixLoadIdentityEXT +typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT; +#define glMatrixRotatefEXT glad_glMatrixRotatefEXT +typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT; +#define glMatrixRotatedEXT glad_glMatrixRotatedEXT +typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT; +#define glMatrixScalefEXT glad_glMatrixScalefEXT +typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT; +#define glMatrixScaledEXT glad_glMatrixScaledEXT +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT; +#define glMatrixTranslatefEXT glad_glMatrixTranslatefEXT +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT; +#define glMatrixTranslatedEXT glad_glMatrixTranslatedEXT +typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT; +#define glMatrixFrustumEXT glad_glMatrixFrustumEXT +typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT; +#define glMatrixOrthoEXT glad_glMatrixOrthoEXT +typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC)(GLenum mode); +GLAPI PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT; +#define glMatrixPopEXT glad_glMatrixPopEXT +typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC)(GLenum mode); +GLAPI PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT; +#define glMatrixPushEXT glad_glMatrixPushEXT +typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +GLAPI PFNGLCLIENTATTRIBDEFAULTEXTPROC glad_glClientAttribDefaultEXT; +#define glClientAttribDefaultEXT glad_glClientAttribDefaultEXT +typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +GLAPI PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC glad_glPushClientAttribDefaultEXT; +#define glPushClientAttribDefaultEXT glad_glPushClientAttribDefaultEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLTEXTUREPARAMETERFEXTPROC glad_glTextureParameterfEXT; +#define glTextureParameterfEXT glad_glTextureParameterfEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLTEXTUREPARAMETERFVEXTPROC glad_glTextureParameterfvEXT; +#define glTextureParameterfvEXT glad_glTextureParameterfvEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint param); +GLAPI PFNGLTEXTUREPARAMETERIEXTPROC glad_glTextureParameteriEXT; +#define glTextureParameteriEXT glad_glTextureParameteriEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXTUREPARAMETERIVEXTPROC glad_glTextureParameterivEXT; +#define glTextureParameterivEXT glad_glTextureParameterivEXT +typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTUREIMAGE1DEXTPROC glad_glTextureImage1DEXT; +#define glTextureImage1DEXT glad_glTextureImage1DEXT +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTUREIMAGE2DEXTPROC glad_glTextureImage2DEXT; +#define glTextureImage2DEXT glad_glTextureImage2DEXT +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE1DEXTPROC glad_glTextureSubImage1DEXT; +#define glTextureSubImage1DEXT glad_glTextureSubImage1DEXT +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE2DEXTPROC glad_glTextureSubImage2DEXT; +#define glTextureSubImage2DEXT glad_glTextureSubImage2DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYTEXTUREIMAGE1DEXTPROC glad_glCopyTextureImage1DEXT; +#define glCopyTextureImage1DEXT glad_glCopyTextureImage1DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYTEXTUREIMAGE2DEXTPROC glad_glCopyTextureImage2DEXT; +#define glCopyTextureImage2DEXT glad_glCopyTextureImage2DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glad_glCopyTextureSubImage1DEXT; +#define glCopyTextureSubImage1DEXT glad_glCopyTextureSubImage1DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glad_glCopyTextureSubImage2DEXT; +#define glCopyTextureSubImage2DEXT glad_glCopyTextureSubImage2DEXT +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLGETTEXTUREIMAGEEXTPROC glad_glGetTextureImageEXT; +#define glGetTextureImageEXT glad_glGetTextureImageEXT +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXTUREPARAMETERFVEXTPROC glad_glGetTextureParameterfvEXT; +#define glGetTextureParameterfvEXT glad_glGetTextureParameterfvEXT +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIVEXTPROC glad_glGetTextureParameterivEXT; +#define glGetTextureParameterivEXT glad_glGetTextureParameterivEXT +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glad_glGetTextureLevelParameterfvEXT; +#define glGetTextureLevelParameterfvEXT glad_glGetTextureLevelParameterfvEXT +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glad_glGetTextureLevelParameterivEXT; +#define glGetTextureLevelParameterivEXT glad_glGetTextureLevelParameterivEXT +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTUREIMAGE3DEXTPROC glad_glTextureImage3DEXT; +#define glTextureImage3DEXT glad_glTextureImage3DEXT +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE3DEXTPROC glad_glTextureSubImage3DEXT; +#define glTextureSubImage3DEXT glad_glTextureSubImage3DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glad_glCopyTextureSubImage3DEXT; +#define glCopyTextureSubImage3DEXT glad_glCopyTextureSubImage3DEXT +typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, GLuint texture); +GLAPI PFNGLBINDMULTITEXTUREEXTPROC glad_glBindMultiTextureEXT; +#define glBindMultiTextureEXT glad_glBindMultiTextureEXT +typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC)(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLMULTITEXCOORDPOINTEREXTPROC glad_glMultiTexCoordPointerEXT; +#define glMultiTexCoordPointerEXT glad_glMultiTexCoordPointerEXT +typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLMULTITEXENVFEXTPROC glad_glMultiTexEnvfEXT; +#define glMultiTexEnvfEXT glad_glMultiTexEnvfEXT +typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLMULTITEXENVFVEXTPROC glad_glMultiTexEnvfvEXT; +#define glMultiTexEnvfvEXT glad_glMultiTexEnvfvEXT +typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI PFNGLMULTITEXENVIEXTPROC glad_glMultiTexEnviEXT; +#define glMultiTexEnviEXT glad_glMultiTexEnviEXT +typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLMULTITEXENVIVEXTPROC glad_glMultiTexEnvivEXT; +#define glMultiTexEnvivEXT glad_glMultiTexEnvivEXT +typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +GLAPI PFNGLMULTITEXGENDEXTPROC glad_glMultiTexGendEXT; +#define glMultiTexGendEXT glad_glMultiTexGendEXT +typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); +GLAPI PFNGLMULTITEXGENDVEXTPROC glad_glMultiTexGendvEXT; +#define glMultiTexGendvEXT glad_glMultiTexGendvEXT +typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +GLAPI PFNGLMULTITEXGENFEXTPROC glad_glMultiTexGenfEXT; +#define glMultiTexGenfEXT glad_glMultiTexGenfEXT +typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); +GLAPI PFNGLMULTITEXGENFVEXTPROC glad_glMultiTexGenfvEXT; +#define glMultiTexGenfvEXT glad_glMultiTexGenfvEXT +typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint param); +GLAPI PFNGLMULTITEXGENIEXTPROC glad_glMultiTexGeniEXT; +#define glMultiTexGeniEXT glad_glMultiTexGeniEXT +typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLint *params); +GLAPI PFNGLMULTITEXGENIVEXTPROC glad_glMultiTexGenivEXT; +#define glMultiTexGenivEXT glad_glMultiTexGenivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMULTITEXENVFVEXTPROC glad_glGetMultiTexEnvfvEXT; +#define glGetMultiTexEnvfvEXT glad_glGetMultiTexEnvfvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXENVIVEXTPROC glad_glGetMultiTexEnvivEXT; +#define glGetMultiTexEnvivEXT glad_glGetMultiTexEnvivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); +GLAPI PFNGLGETMULTITEXGENDVEXTPROC glad_glGetMultiTexGendvEXT; +#define glGetMultiTexGendvEXT glad_glGetMultiTexGendvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMULTITEXGENFVEXTPROC glad_glGetMultiTexGenfvEXT; +#define glGetMultiTexGenfvEXT glad_glGetMultiTexGenfvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXGENIVEXTPROC glad_glGetMultiTexGenivEXT; +#define glGetMultiTexGenivEXT glad_glGetMultiTexGenivEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI PFNGLMULTITEXPARAMETERIEXTPROC glad_glMultiTexParameteriEXT; +#define glMultiTexParameteriEXT glad_glMultiTexParameteriEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLMULTITEXPARAMETERIVEXTPROC glad_glMultiTexParameterivEXT; +#define glMultiTexParameterivEXT glad_glMultiTexParameterivEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLMULTITEXPARAMETERFEXTPROC glad_glMultiTexParameterfEXT; +#define glMultiTexParameterfEXT glad_glMultiTexParameterfEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLMULTITEXPARAMETERFVEXTPROC glad_glMultiTexParameterfvEXT; +#define glMultiTexParameterfvEXT glad_glMultiTexParameterfvEXT +typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXIMAGE1DEXTPROC glad_glMultiTexImage1DEXT; +#define glMultiTexImage1DEXT glad_glMultiTexImage1DEXT +typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXIMAGE2DEXTPROC glad_glMultiTexImage2DEXT; +#define glMultiTexImage2DEXT glad_glMultiTexImage2DEXT +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXSUBIMAGE1DEXTPROC glad_glMultiTexSubImage1DEXT; +#define glMultiTexSubImage1DEXT glad_glMultiTexSubImage1DEXT +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXSUBIMAGE2DEXTPROC glad_glMultiTexSubImage2DEXT; +#define glMultiTexSubImage2DEXT glad_glMultiTexSubImage2DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYMULTITEXIMAGE1DEXTPROC glad_glCopyMultiTexImage1DEXT; +#define glCopyMultiTexImage1DEXT glad_glCopyMultiTexImage1DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYMULTITEXIMAGE2DEXTPROC glad_glCopyMultiTexImage2DEXT; +#define glCopyMultiTexImage2DEXT glad_glCopyMultiTexImage2DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glad_glCopyMultiTexSubImage1DEXT; +#define glCopyMultiTexSubImage1DEXT glad_glCopyMultiTexSubImage1DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glad_glCopyMultiTexSubImage2DEXT; +#define glCopyMultiTexSubImage2DEXT glad_glCopyMultiTexSubImage2DEXT +typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLGETMULTITEXIMAGEEXTPROC glad_glGetMultiTexImageEXT; +#define glGetMultiTexImageEXT glad_glGetMultiTexImageEXT +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMULTITEXPARAMETERFVEXTPROC glad_glGetMultiTexParameterfvEXT; +#define glGetMultiTexParameterfvEXT glad_glGetMultiTexParameterfvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXPARAMETERIVEXTPROC glad_glGetMultiTexParameterivEXT; +#define glGetMultiTexParameterivEXT glad_glGetMultiTexParameterivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glad_glGetMultiTexLevelParameterfvEXT; +#define glGetMultiTexLevelParameterfvEXT glad_glGetMultiTexLevelParameterfvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glad_glGetMultiTexLevelParameterivEXT; +#define glGetMultiTexLevelParameterivEXT glad_glGetMultiTexLevelParameterivEXT +typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXIMAGE3DEXTPROC glad_glMultiTexImage3DEXT; +#define glMultiTexImage3DEXT glad_glMultiTexImage3DEXT +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXSUBIMAGE3DEXTPROC glad_glMultiTexSubImage3DEXT; +#define glMultiTexSubImage3DEXT glad_glMultiTexSubImage3DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glad_glCopyMultiTexSubImage3DEXT; +#define glCopyMultiTexSubImage3DEXT glad_glCopyMultiTexSubImage3DEXT +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +GLAPI PFNGLENABLECLIENTSTATEINDEXEDEXTPROC glad_glEnableClientStateIndexedEXT; +#define glEnableClientStateIndexedEXT glad_glEnableClientStateIndexedEXT +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +GLAPI PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC glad_glDisableClientStateIndexedEXT; +#define glDisableClientStateIndexedEXT glad_glDisableClientStateIndexedEXT +typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, GLfloat *data); +GLAPI PFNGLGETFLOATINDEXEDVEXTPROC glad_glGetFloatIndexedvEXT; +#define glGetFloatIndexedvEXT glad_glGetFloatIndexedvEXT +typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, GLdouble *data); +GLAPI PFNGLGETDOUBLEINDEXEDVEXTPROC glad_glGetDoubleIndexedvEXT; +#define glGetDoubleIndexedvEXT glad_glGetDoubleIndexedvEXT +typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, void **data); +GLAPI PFNGLGETPOINTERINDEXEDVEXTPROC glad_glGetPointerIndexedvEXT; +#define glGetPointerIndexedvEXT glad_glGetPointerIndexedvEXT +typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +GLAPI PFNGLENABLEINDEXEDEXTPROC glad_glEnableIndexedEXT; +#define glEnableIndexedEXT glad_glEnableIndexedEXT +typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +GLAPI PFNGLDISABLEINDEXEDEXTPROC glad_glDisableIndexedEXT; +#define glDisableIndexedEXT glad_glDisableIndexedEXT +typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index); +GLAPI PFNGLISENABLEDINDEXEDEXTPROC glad_glIsEnabledIndexedEXT; +#define glIsEnabledIndexedEXT glad_glIsEnabledIndexedEXT +typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, GLint *data); +GLAPI PFNGLGETINTEGERINDEXEDVEXTPROC glad_glGetIntegerIndexedvEXT; +#define glGetIntegerIndexedvEXT glad_glGetIntegerIndexedvEXT +typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, GLboolean *data); +GLAPI PFNGLGETBOOLEANINDEXEDVEXTPROC glad_glGetBooleanIndexedvEXT; +#define glGetBooleanIndexedvEXT glad_glGetBooleanIndexedvEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glad_glCompressedTextureImage3DEXT; +#define glCompressedTextureImage3DEXT glad_glCompressedTextureImage3DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glad_glCompressedTextureImage2DEXT; +#define glCompressedTextureImage2DEXT glad_glCompressedTextureImage2DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glad_glCompressedTextureImage1DEXT; +#define glCompressedTextureImage1DEXT glad_glCompressedTextureImage1DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glad_glCompressedTextureSubImage3DEXT; +#define glCompressedTextureSubImage3DEXT glad_glCompressedTextureSubImage3DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glad_glCompressedTextureSubImage2DEXT; +#define glCompressedTextureSubImage2DEXT glad_glCompressedTextureSubImage2DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glad_glCompressedTextureSubImage1DEXT; +#define glCompressedTextureSubImage1DEXT glad_glCompressedTextureSubImage1DEXT +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint lod, void *img); +GLAPI PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glad_glGetCompressedTextureImageEXT; +#define glGetCompressedTextureImageEXT glad_glGetCompressedTextureImageEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glad_glCompressedMultiTexImage3DEXT; +#define glCompressedMultiTexImage3DEXT glad_glCompressedMultiTexImage3DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glad_glCompressedMultiTexImage2DEXT; +#define glCompressedMultiTexImage2DEXT glad_glCompressedMultiTexImage2DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glad_glCompressedMultiTexImage1DEXT; +#define glCompressedMultiTexImage1DEXT glad_glCompressedMultiTexImage1DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glad_glCompressedMultiTexSubImage3DEXT; +#define glCompressedMultiTexSubImage3DEXT glad_glCompressedMultiTexSubImage3DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glad_glCompressedMultiTexSubImage2DEXT; +#define glCompressedMultiTexSubImage2DEXT glad_glCompressedMultiTexSubImage2DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glad_glCompressedMultiTexSubImage1DEXT; +#define glCompressedMultiTexSubImage1DEXT glad_glCompressedMultiTexSubImage1DEXT +typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint lod, void *img); +GLAPI PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glad_glGetCompressedMultiTexImageEXT; +#define glGetCompressedMultiTexImageEXT glad_glGetCompressedMultiTexImageEXT +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); +GLAPI PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT; +#define glMatrixLoadTransposefEXT glad_glMatrixLoadTransposefEXT +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); +GLAPI PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT; +#define glMatrixLoadTransposedEXT glad_glMatrixLoadTransposedEXT +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); +GLAPI PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT; +#define glMatrixMultTransposefEXT glad_glMatrixMultTransposefEXT +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); +GLAPI PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT; +#define glMatrixMultTransposedEXT glad_glMatrixMultTransposedEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI PFNGLNAMEDBUFFERDATAEXTPROC glad_glNamedBufferDataEXT; +#define glNamedBufferDataEXT glad_glNamedBufferDataEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLNAMEDBUFFERSUBDATAEXTPROC glad_glNamedBufferSubDataEXT; +#define glNamedBufferSubDataEXT glad_glNamedBufferSubDataEXT +typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access); +GLAPI PFNGLMAPNAMEDBUFFEREXTPROC glad_glMapNamedBufferEXT; +#define glMapNamedBufferEXT glad_glMapNamedBufferEXT +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer); +GLAPI PFNGLUNMAPNAMEDBUFFEREXTPROC glad_glUnmapNamedBufferEXT; +#define glUnmapNamedBufferEXT glad_glUnmapNamedBufferEXT +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glad_glGetNamedBufferParameterivEXT; +#define glGetNamedBufferParameterivEXT glad_glGetNamedBufferParameterivEXT +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, void **params); +GLAPI PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glad_glGetNamedBufferPointervEXT; +#define glGetNamedBufferPointervEXT glad_glGetNamedBufferPointervEXT +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glad_glGetNamedBufferSubDataEXT; +#define glGetNamedBufferSubDataEXT glad_glGetNamedBufferSubDataEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, GLfloat v0); +GLAPI PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT; +#define glProgramUniform1fEXT glad_glProgramUniform1fEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT; +#define glProgramUniform2fEXT glad_glProgramUniform2fEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT; +#define glProgramUniform3fEXT glad_glProgramUniform3fEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT; +#define glProgramUniform4fEXT glad_glProgramUniform4fEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0); +GLAPI PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT; +#define glProgramUniform1iEXT glad_glProgramUniform1iEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1); +GLAPI PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT; +#define glProgramUniform2iEXT glad_glProgramUniform2iEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT; +#define glProgramUniform3iEXT glad_glProgramUniform3iEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT; +#define glProgramUniform4iEXT glad_glProgramUniform4iEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT; +#define glProgramUniform1fvEXT glad_glProgramUniform1fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT; +#define glProgramUniform2fvEXT glad_glProgramUniform2fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT; +#define glProgramUniform3fvEXT glad_glProgramUniform3fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT; +#define glProgramUniform4fvEXT glad_glProgramUniform4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT; +#define glProgramUniform1ivEXT glad_glProgramUniform1ivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT; +#define glProgramUniform2ivEXT glad_glProgramUniform2ivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT; +#define glProgramUniform3ivEXT glad_glProgramUniform3ivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT; +#define glProgramUniform4ivEXT glad_glProgramUniform4ivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT; +#define glProgramUniformMatrix2fvEXT glad_glProgramUniformMatrix2fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT; +#define glProgramUniformMatrix3fvEXT glad_glProgramUniformMatrix3fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT; +#define glProgramUniformMatrix4fvEXT glad_glProgramUniformMatrix4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT; +#define glProgramUniformMatrix2x3fvEXT glad_glProgramUniformMatrix2x3fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT; +#define glProgramUniformMatrix3x2fvEXT glad_glProgramUniformMatrix3x2fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT; +#define glProgramUniformMatrix2x4fvEXT glad_glProgramUniformMatrix2x4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT; +#define glProgramUniformMatrix4x2fvEXT glad_glProgramUniformMatrix4x2fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT; +#define glProgramUniformMatrix3x4fvEXT glad_glProgramUniformMatrix3x4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT; +#define glProgramUniformMatrix4x3fvEXT glad_glProgramUniformMatrix4x3fvEXT +typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXTUREBUFFEREXTPROC glad_glTextureBufferEXT; +#define glTextureBufferEXT glad_glTextureBufferEXT +typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLMULTITEXBUFFEREXTPROC glad_glMultiTexBufferEXT; +#define glMultiTexBufferEXT glad_glMultiTexBufferEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXTUREPARAMETERIIVEXTPROC glad_glTextureParameterIivEXT; +#define glTextureParameterIivEXT glad_glTextureParameterIivEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXTUREPARAMETERIUIVEXTPROC glad_glTextureParameterIuivEXT; +#define glTextureParameterIuivEXT glad_glTextureParameterIuivEXT +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIIVEXTPROC glad_glGetTextureParameterIivEXT; +#define glGetTextureParameterIivEXT glad_glGetTextureParameterIivEXT +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glad_glGetTextureParameterIuivEXT; +#define glGetTextureParameterIuivEXT glad_glGetTextureParameterIuivEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLMULTITEXPARAMETERIIVEXTPROC glad_glMultiTexParameterIivEXT; +#define glMultiTexParameterIivEXT glad_glMultiTexParameterIivEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLMULTITEXPARAMETERIUIVEXTPROC glad_glMultiTexParameterIuivEXT; +#define glMultiTexParameterIuivEXT glad_glMultiTexParameterIuivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXPARAMETERIIVEXTPROC glad_glGetMultiTexParameterIivEXT; +#define glGetMultiTexParameterIivEXT glad_glGetMultiTexParameterIivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glad_glGetMultiTexParameterIuivEXT; +#define glGetMultiTexParameterIuivEXT glad_glGetMultiTexParameterIuivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, GLuint v0); +GLAPI PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT; +#define glProgramUniform1uiEXT glad_glProgramUniform1uiEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT; +#define glProgramUniform2uiEXT glad_glProgramUniform2uiEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT; +#define glProgramUniform3uiEXT glad_glProgramUniform3uiEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT; +#define glProgramUniform4uiEXT glad_glProgramUniform4uiEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT; +#define glProgramUniform1uivEXT glad_glProgramUniform1uivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT; +#define glProgramUniform2uivEXT glad_glProgramUniform2uivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT; +#define glProgramUniform3uivEXT glad_glProgramUniform3uivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT; +#define glProgramUniform4uivEXT glad_glProgramUniform4uivEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glNamedProgramLocalParameters4fvEXT; +#define glNamedProgramLocalParameters4fvEXT glad_glNamedProgramLocalParameters4fvEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC glad_glNamedProgramLocalParameterI4iEXT; +#define glNamedProgramLocalParameterI4iEXT glad_glNamedProgramLocalParameterI4iEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLint *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC glad_glNamedProgramLocalParameterI4ivEXT; +#define glNamedProgramLocalParameterI4ivEXT glad_glNamedProgramLocalParameterI4ivEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC glad_glNamedProgramLocalParametersI4ivEXT; +#define glNamedProgramLocalParametersI4ivEXT glad_glNamedProgramLocalParametersI4ivEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC glad_glNamedProgramLocalParameterI4uiEXT; +#define glNamedProgramLocalParameterI4uiEXT glad_glNamedProgramLocalParameterI4uiEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLuint *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC glad_glNamedProgramLocalParameterI4uivEXT; +#define glNamedProgramLocalParameterI4uivEXT glad_glNamedProgramLocalParameterI4uivEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC glad_glNamedProgramLocalParametersI4uivEXT; +#define glNamedProgramLocalParametersI4uivEXT glad_glNamedProgramLocalParametersI4uivEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLint *params); +GLAPI PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC glad_glGetNamedProgramLocalParameterIivEXT; +#define glGetNamedProgramLocalParameterIivEXT glad_glGetNamedProgramLocalParameterIivEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLuint *params); +GLAPI PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC glad_glGetNamedProgramLocalParameterIuivEXT; +#define glGetNamedProgramLocalParameterIuivEXT glad_glGetNamedProgramLocalParameterIuivEXT +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); +GLAPI PFNGLENABLECLIENTSTATEIEXTPROC glad_glEnableClientStateiEXT; +#define glEnableClientStateiEXT glad_glEnableClientStateiEXT +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); +GLAPI PFNGLDISABLECLIENTSTATEIEXTPROC glad_glDisableClientStateiEXT; +#define glDisableClientStateiEXT glad_glDisableClientStateiEXT +typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC)(GLenum pname, GLuint index, GLfloat *params); +GLAPI PFNGLGETFLOATI_VEXTPROC glad_glGetFloati_vEXT; +#define glGetFloati_vEXT glad_glGetFloati_vEXT +typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC)(GLenum pname, GLuint index, GLdouble *params); +GLAPI PFNGLGETDOUBLEI_VEXTPROC glad_glGetDoublei_vEXT; +#define glGetDoublei_vEXT glad_glGetDoublei_vEXT +typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC)(GLenum pname, GLuint index, void **params); +GLAPI PFNGLGETPOINTERI_VEXTPROC glad_glGetPointeri_vEXT; +#define glGetPointeri_vEXT glad_glGetPointeri_vEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI PFNGLNAMEDPROGRAMSTRINGEXTPROC glad_glNamedProgramStringEXT; +#define glNamedProgramStringEXT glad_glNamedProgramStringEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC glad_glNamedProgramLocalParameter4dEXT; +#define glNamedProgramLocalParameter4dEXT glad_glNamedProgramLocalParameter4dEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLdouble *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC glad_glNamedProgramLocalParameter4dvEXT; +#define glNamedProgramLocalParameter4dvEXT glad_glNamedProgramLocalParameter4dvEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC glad_glNamedProgramLocalParameter4fEXT; +#define glNamedProgramLocalParameter4fEXT glad_glNamedProgramLocalParameter4fEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLfloat *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC glad_glNamedProgramLocalParameter4fvEXT; +#define glNamedProgramLocalParameter4fvEXT glad_glNamedProgramLocalParameter4fvEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)(GLuint program, GLenum target, GLuint index, GLdouble *params); +GLAPI PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC glad_glGetNamedProgramLocalParameterdvEXT; +#define glGetNamedProgramLocalParameterdvEXT glad_glGetNamedProgramLocalParameterdvEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)(GLuint program, GLenum target, GLuint index, GLfloat *params); +GLAPI PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC glad_glGetNamedProgramLocalParameterfvEXT; +#define glGetNamedProgramLocalParameterfvEXT glad_glGetNamedProgramLocalParameterfvEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDPROGRAMIVEXTPROC glad_glGetNamedProgramivEXT; +#define glGetNamedProgramivEXT glad_glGetNamedProgramivEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum pname, void *string); +GLAPI PFNGLGETNAMEDPROGRAMSTRINGEXTPROC glad_glGetNamedProgramStringEXT; +#define glGetNamedProgramStringEXT glad_glGetNamedProgramStringEXT +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glad_glNamedRenderbufferStorageEXT; +#define glNamedRenderbufferStorageEXT glad_glNamedRenderbufferStorageEXT +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glad_glGetNamedRenderbufferParameterivEXT; +#define glGetNamedRenderbufferParameterivEXT glad_glGetNamedRenderbufferParameterivEXT +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glNamedRenderbufferStorageMultisampleEXT; +#define glNamedRenderbufferStorageMultisampleEXT glad_glNamedRenderbufferStorageMultisampleEXT +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC glad_glNamedRenderbufferStorageMultisampleCoverageEXT; +#define glNamedRenderbufferStorageMultisampleCoverageEXT glad_glNamedRenderbufferStorageMultisampleCoverageEXT +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, GLenum target); +GLAPI PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glad_glCheckNamedFramebufferStatusEXT; +#define glCheckNamedFramebufferStatusEXT glad_glCheckNamedFramebufferStatusEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glad_glNamedFramebufferTexture1DEXT; +#define glNamedFramebufferTexture1DEXT glad_glNamedFramebufferTexture1DEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glad_glNamedFramebufferTexture2DEXT; +#define glNamedFramebufferTexture2DEXT glad_glNamedFramebufferTexture2DEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glad_glNamedFramebufferTexture3DEXT; +#define glNamedFramebufferTexture3DEXT glad_glNamedFramebufferTexture3DEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glad_glNamedFramebufferRenderbufferEXT; +#define glNamedFramebufferRenderbufferEXT glad_glNamedFramebufferRenderbufferEXT +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetNamedFramebufferAttachmentParameterivEXT; +#define glGetNamedFramebufferAttachmentParameterivEXT glad_glGetNamedFramebufferAttachmentParameterivEXT +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target); +GLAPI PFNGLGENERATETEXTUREMIPMAPEXTPROC glad_glGenerateTextureMipmapEXT; +#define glGenerateTextureMipmapEXT glad_glGenerateTextureMipmapEXT +typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target); +GLAPI PFNGLGENERATEMULTITEXMIPMAPEXTPROC glad_glGenerateMultiTexMipmapEXT; +#define glGenerateMultiTexMipmapEXT glad_glGenerateMultiTexMipmapEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +GLAPI PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glad_glFramebufferDrawBufferEXT; +#define glFramebufferDrawBufferEXT glad_glFramebufferDrawBufferEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glad_glFramebufferDrawBuffersEXT; +#define glFramebufferDrawBuffersEXT glad_glFramebufferDrawBuffersEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +GLAPI PFNGLFRAMEBUFFERREADBUFFEREXTPROC glad_glFramebufferReadBufferEXT; +#define glFramebufferReadBufferEXT glad_glFramebufferReadBufferEXT +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetFramebufferParameterivEXT; +#define glGetFramebufferParameterivEXT glad_glGetFramebufferParameterivEXT +typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glad_glNamedCopyBufferSubDataEXT; +#define glNamedCopyBufferSubDataEXT glad_glNamedCopyBufferSubDataEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glad_glNamedFramebufferTextureEXT; +#define glNamedFramebufferTextureEXT glad_glNamedFramebufferTextureEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glad_glNamedFramebufferTextureLayerEXT; +#define glNamedFramebufferTextureLayerEXT glad_glNamedFramebufferTextureLayerEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC glad_glNamedFramebufferTextureFaceEXT; +#define glNamedFramebufferTextureFaceEXT glad_glNamedFramebufferTextureFaceEXT +typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, GLuint renderbuffer); +GLAPI PFNGLTEXTURERENDERBUFFEREXTPROC glad_glTextureRenderbufferEXT; +#define glTextureRenderbufferEXT glad_glTextureRenderbufferEXT +typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, GLuint renderbuffer); +GLAPI PFNGLMULTITEXRENDERBUFFEREXTPROC glad_glMultiTexRenderbufferEXT; +#define glMultiTexRenderbufferEXT glad_glMultiTexRenderbufferEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC glad_glVertexArrayVertexOffsetEXT; +#define glVertexArrayVertexOffsetEXT glad_glVertexArrayVertexOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYCOLOROFFSETEXTPROC glad_glVertexArrayColorOffsetEXT; +#define glVertexArrayColorOffsetEXT glad_glVertexArrayColorOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC glad_glVertexArrayEdgeFlagOffsetEXT; +#define glVertexArrayEdgeFlagOffsetEXT glad_glVertexArrayEdgeFlagOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYINDEXOFFSETEXTPROC glad_glVertexArrayIndexOffsetEXT; +#define glVertexArrayIndexOffsetEXT glad_glVertexArrayIndexOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYNORMALOFFSETEXTPROC glad_glVertexArrayNormalOffsetEXT; +#define glVertexArrayNormalOffsetEXT glad_glVertexArrayNormalOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC glad_glVertexArrayTexCoordOffsetEXT; +#define glVertexArrayTexCoordOffsetEXT glad_glVertexArrayTexCoordOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC glad_glVertexArrayMultiTexCoordOffsetEXT; +#define glVertexArrayMultiTexCoordOffsetEXT glad_glVertexArrayMultiTexCoordOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC glad_glVertexArrayFogCoordOffsetEXT; +#define glVertexArrayFogCoordOffsetEXT glad_glVertexArrayFogCoordOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC glad_glVertexArraySecondaryColorOffsetEXT; +#define glVertexArraySecondaryColorOffsetEXT glad_glVertexArraySecondaryColorOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glad_glVertexArrayVertexAttribOffsetEXT; +#define glVertexArrayVertexAttribOffsetEXT glad_glVertexArrayVertexAttribOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glad_glVertexArrayVertexAttribIOffsetEXT; +#define glVertexArrayVertexAttribIOffsetEXT glad_glVertexArrayVertexAttribIOffsetEXT +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); +GLAPI PFNGLENABLEVERTEXARRAYEXTPROC glad_glEnableVertexArrayEXT; +#define glEnableVertexArrayEXT glad_glEnableVertexArrayEXT +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); +GLAPI PFNGLDISABLEVERTEXARRAYEXTPROC glad_glDisableVertexArrayEXT; +#define glDisableVertexArrayEXT glad_glDisableVertexArrayEXT +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); +GLAPI PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glad_glEnableVertexArrayAttribEXT; +#define glEnableVertexArrayAttribEXT glad_glEnableVertexArrayAttribEXT +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); +GLAPI PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glad_glDisableVertexArrayAttribEXT; +#define glDisableVertexArrayAttribEXT glad_glDisableVertexArrayAttribEXT +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC)(GLuint vaobj, GLenum pname, GLint *param); +GLAPI PFNGLGETVERTEXARRAYINTEGERVEXTPROC glad_glGetVertexArrayIntegervEXT; +#define glGetVertexArrayIntegervEXT glad_glGetVertexArrayIntegervEXT +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC)(GLuint vaobj, GLenum pname, void **param); +GLAPI PFNGLGETVERTEXARRAYPOINTERVEXTPROC glad_glGetVertexArrayPointervEXT; +#define glGetVertexArrayPointervEXT glad_glGetVertexArrayPointervEXT +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glad_glGetVertexArrayIntegeri_vEXT; +#define glGetVertexArrayIntegeri_vEXT glad_glGetVertexArrayIntegeri_vEXT +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)(GLuint vaobj, GLuint index, GLenum pname, void **param); +GLAPI PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glad_glGetVertexArrayPointeri_vEXT; +#define glGetVertexArrayPointeri_vEXT glad_glGetVertexArrayPointeri_vEXT +typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI PFNGLMAPNAMEDBUFFERRANGEEXTPROC glad_glMapNamedBufferRangeEXT; +#define glMapNamedBufferRangeEXT glad_glMapNamedBufferRangeEXT +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glad_glFlushMappedNamedBufferRangeEXT; +#define glFlushMappedNamedBufferRangeEXT glad_glFlushMappedNamedBufferRangeEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI PFNGLNAMEDBUFFERSTORAGEEXTPROC glad_glNamedBufferStorageEXT; +#define glNamedBufferStorageEXT glad_glNamedBufferStorageEXT +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARNAMEDBUFFERDATAEXTPROC glad_glClearNamedBufferDataEXT; +#define glClearNamedBufferDataEXT glad_glClearNamedBufferDataEXT +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glad_glClearNamedBufferSubDataEXT; +#define glClearNamedBufferSubDataEXT glad_glClearNamedBufferSubDataEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)(GLuint framebuffer, GLenum pname, GLint param); +GLAPI PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glad_glNamedFramebufferParameteriEXT; +#define glNamedFramebufferParameteriEXT glad_glNamedFramebufferParameteriEXT +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetNamedFramebufferParameterivEXT; +#define glGetNamedFramebufferParameterivEXT glad_glGetNamedFramebufferParameterivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC)(GLuint program, GLint location, GLdouble x); +GLAPI PFNGLPROGRAMUNIFORM1DEXTPROC glad_glProgramUniform1dEXT; +#define glProgramUniform1dEXT glad_glProgramUniform1dEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y); +GLAPI PFNGLPROGRAMUNIFORM2DEXTPROC glad_glProgramUniform2dEXT; +#define glProgramUniform2dEXT glad_glProgramUniform2dEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLPROGRAMUNIFORM3DEXTPROC glad_glProgramUniform3dEXT; +#define glProgramUniform3dEXT glad_glProgramUniform3dEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMUNIFORM4DEXTPROC glad_glProgramUniform4dEXT; +#define glProgramUniform4dEXT glad_glProgramUniform4dEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM1DVEXTPROC glad_glProgramUniform1dvEXT; +#define glProgramUniform1dvEXT glad_glProgramUniform1dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM2DVEXTPROC glad_glProgramUniform2dvEXT; +#define glProgramUniform2dvEXT glad_glProgramUniform2dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM3DVEXTPROC glad_glProgramUniform3dvEXT; +#define glProgramUniform3dvEXT glad_glProgramUniform3dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM4DVEXTPROC glad_glProgramUniform4dvEXT; +#define glProgramUniform4dvEXT glad_glProgramUniform4dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC glad_glProgramUniformMatrix2dvEXT; +#define glProgramUniformMatrix2dvEXT glad_glProgramUniformMatrix2dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC glad_glProgramUniformMatrix3dvEXT; +#define glProgramUniformMatrix3dvEXT glad_glProgramUniformMatrix3dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC glad_glProgramUniformMatrix4dvEXT; +#define glProgramUniformMatrix4dvEXT glad_glProgramUniformMatrix4dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC glad_glProgramUniformMatrix2x3dvEXT; +#define glProgramUniformMatrix2x3dvEXT glad_glProgramUniformMatrix2x3dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC glad_glProgramUniformMatrix2x4dvEXT; +#define glProgramUniformMatrix2x4dvEXT glad_glProgramUniformMatrix2x4dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC glad_glProgramUniformMatrix3x2dvEXT; +#define glProgramUniformMatrix3x2dvEXT glad_glProgramUniformMatrix3x2dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC glad_glProgramUniformMatrix3x4dvEXT; +#define glProgramUniformMatrix3x4dvEXT glad_glProgramUniformMatrix3x4dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC glad_glProgramUniformMatrix4x2dvEXT; +#define glProgramUniformMatrix4x2dvEXT glad_glProgramUniformMatrix4x2dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC glad_glProgramUniformMatrix4x3dvEXT; +#define glProgramUniformMatrix4x3dvEXT glad_glProgramUniformMatrix4x3dvEXT +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLTEXTUREBUFFERRANGEEXTPROC glad_glTextureBufferRangeEXT; +#define glTextureBufferRangeEXT glad_glTextureBufferRangeEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT; +#define glTextureStorage1DEXT glad_glTextureStorage1DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT; +#define glTextureStorage2DEXT glad_glTextureStorage2DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT; +#define glTextureStorage3DEXT glad_glTextureStorage3DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC glad_glTextureStorage2DMultisampleEXT; +#define glTextureStorage2DMultisampleEXT glad_glTextureStorage2DMultisampleEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC glad_glTextureStorage3DMultisampleEXT; +#define glTextureStorage3DMultisampleEXT glad_glTextureStorage3DMultisampleEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glad_glVertexArrayBindVertexBufferEXT; +#define glVertexArrayBindVertexBufferEXT glad_glVertexArrayBindVertexBufferEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glad_glVertexArrayVertexAttribFormatEXT; +#define glVertexArrayVertexAttribFormatEXT glad_glVertexArrayVertexAttribFormatEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glad_glVertexArrayVertexAttribIFormatEXT; +#define glVertexArrayVertexAttribIFormatEXT glad_glVertexArrayVertexAttribIFormatEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glad_glVertexArrayVertexAttribLFormatEXT; +#define glVertexArrayVertexAttribLFormatEXT glad_glVertexArrayVertexAttribLFormatEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glad_glVertexArrayVertexAttribBindingEXT; +#define glVertexArrayVertexAttribBindingEXT glad_glVertexArrayVertexAttribBindingEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); +GLAPI PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glad_glVertexArrayVertexBindingDivisorEXT; +#define glVertexArrayVertexBindingDivisorEXT glad_glVertexArrayVertexBindingDivisorEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glad_glVertexArrayVertexAttribLOffsetEXT; +#define glVertexArrayVertexAttribLOffsetEXT glad_glVertexArrayVertexAttribLOffsetEXT +typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +GLAPI PFNGLTEXTUREPAGECOMMITMENTEXTPROC glad_glTexturePageCommitmentEXT; +#define glTexturePageCommitmentEXT glad_glTexturePageCommitmentEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)(GLuint vaobj, GLuint index, GLuint divisor); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glad_glVertexArrayVertexAttribDivisorEXT; +#define glVertexArrayVertexAttribDivisorEXT glad_glVertexArrayVertexAttribDivisorEXT +#endif +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 +GLAPI int GLAD_GL_EXT_draw_buffers2; +typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI PFNGLCOLORMASKINDEXEDEXTPROC glad_glColorMaskIndexedEXT; +#define glColorMaskIndexedEXT glad_glColorMaskIndexedEXT +#endif +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +GLAPI int GLAD_GL_EXT_draw_instanced; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GLAPI PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT; +#define glDrawArraysInstancedEXT glad_glDrawArraysInstancedEXT +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GLAPI PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT; +#define glDrawElementsInstancedEXT glad_glDrawElementsInstancedEXT +#endif +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +GLAPI int GLAD_GL_EXT_draw_range_elements; +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWRANGEELEMENTSEXTPROC glad_glDrawRangeElementsEXT; +#define glDrawRangeElementsEXT glad_glDrawRangeElementsEXT +#endif +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +GLAPI int GLAD_GL_EXT_external_buffer; +typedef void (APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC)(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GLAPI PFNGLBUFFERSTORAGEEXTERNALEXTPROC glad_glBufferStorageExternalEXT; +#define glBufferStorageExternalEXT glad_glBufferStorageExternalEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GLAPI PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC glad_glNamedBufferStorageExternalEXT; +#define glNamedBufferStorageExternalEXT glad_glNamedBufferStorageExternalEXT +#endif +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +GLAPI int GLAD_GL_EXT_fog_coord; +typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC)(GLfloat coord); +GLAPI PFNGLFOGCOORDFEXTPROC glad_glFogCoordfEXT; +#define glFogCoordfEXT glad_glFogCoordfEXT +typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC)(const GLfloat *coord); +GLAPI PFNGLFOGCOORDFVEXTPROC glad_glFogCoordfvEXT; +#define glFogCoordfvEXT glad_glFogCoordfvEXT +typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC)(GLdouble coord); +GLAPI PFNGLFOGCOORDDEXTPROC glad_glFogCoorddEXT; +#define glFogCoorddEXT glad_glFogCoorddEXT +typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC)(const GLdouble *coord); +GLAPI PFNGLFOGCOORDDVEXTPROC glad_glFogCoorddvEXT; +#define glFogCoorddvEXT glad_glFogCoorddvEXT +typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLFOGCOORDPOINTEREXTPROC glad_glFogCoordPointerEXT; +#define glFogCoordPointerEXT glad_glFogCoordPointerEXT +#endif +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 +GLAPI int GLAD_GL_EXT_framebuffer_blit; +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT; +#define glBlitFramebufferEXT glad_glBlitFramebufferEXT +#endif +#ifndef GL_EXT_framebuffer_multisample +#define GL_EXT_framebuffer_multisample 1 +GLAPI int GLAD_GL_EXT_framebuffer_multisample; +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT; +#define glRenderbufferStorageMultisampleEXT glad_glRenderbufferStorageMultisampleEXT +#endif +#ifndef GL_EXT_framebuffer_multisample_blit_scaled +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +GLAPI int GLAD_GL_EXT_framebuffer_multisample_blit_scaled; +#endif +#ifndef GL_EXT_framebuffer_object +#define GL_EXT_framebuffer_object 1 +GLAPI int GLAD_GL_EXT_framebuffer_object; +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer); +GLAPI PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT; +#define glIsRenderbufferEXT glad_glIsRenderbufferEXT +typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer); +GLAPI PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT; +#define glBindRenderbufferEXT glad_glBindRenderbufferEXT +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint *renderbuffers); +GLAPI PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT; +#define glDeleteRenderbuffersEXT glad_glDeleteRenderbuffersEXT +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint *renderbuffers); +GLAPI PFNGLGENRENDERBUFFERSEXTPROC glad_glGenRenderbuffersEXT; +#define glGenRenderbuffersEXT glad_glGenRenderbuffersEXT +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEEXTPROC glad_glRenderbufferStorageEXT; +#define glRenderbufferStorageEXT glad_glRenderbufferStorageEXT +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glad_glGetRenderbufferParameterivEXT; +#define glGetRenderbufferParameterivEXT glad_glGetRenderbufferParameterivEXT +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer); +GLAPI PFNGLISFRAMEBUFFEREXTPROC glad_glIsFramebufferEXT; +#define glIsFramebufferEXT glad_glIsFramebufferEXT +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer); +GLAPI PFNGLBINDFRAMEBUFFEREXTPROC glad_glBindFramebufferEXT; +#define glBindFramebufferEXT glad_glBindFramebufferEXT +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint *framebuffers); +GLAPI PFNGLDELETEFRAMEBUFFERSEXTPROC glad_glDeleteFramebuffersEXT; +#define glDeleteFramebuffersEXT glad_glDeleteFramebuffersEXT +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint *framebuffers); +GLAPI PFNGLGENFRAMEBUFFERSEXTPROC glad_glGenFramebuffersEXT; +#define glGenFramebuffersEXT glad_glGenFramebuffersEXT +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target); +GLAPI PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glad_glCheckFramebufferStatusEXT; +#define glCheckFramebufferStatusEXT glad_glCheckFramebufferStatusEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glad_glFramebufferTexture1DEXT; +#define glFramebufferTexture1DEXT glad_glFramebufferTexture1DEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glad_glFramebufferTexture2DEXT; +#define glFramebufferTexture2DEXT glad_glFramebufferTexture2DEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT; +#define glFramebufferTexture3DEXT glad_glFramebufferTexture3DEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT; +#define glFramebufferRenderbufferEXT glad_glFramebufferRenderbufferEXT +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT; +#define glGetFramebufferAttachmentParameterivEXT glad_glGetFramebufferAttachmentParameterivEXT +typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC)(GLenum target); +GLAPI PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT; +#define glGenerateMipmapEXT glad_glGenerateMipmapEXT +#endif +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 +GLAPI int GLAD_GL_EXT_framebuffer_sRGB; +#endif +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 +GLAPI int GLAD_GL_EXT_geometry_shader4; +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC)(GLuint program, GLenum pname, GLint value); +GLAPI PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT; +#define glProgramParameteriEXT glad_glProgramParameteriEXT +#endif +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 +GLAPI int GLAD_GL_EXT_gpu_program_parameters; +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI PFNGLPROGRAMENVPARAMETERS4FVEXTPROC glad_glProgramEnvParameters4fvEXT; +#define glProgramEnvParameters4fvEXT glad_glProgramEnvParameters4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glProgramLocalParameters4fvEXT; +#define glProgramLocalParameters4fvEXT glad_glProgramLocalParameters4fvEXT +#endif +#ifndef GL_EXT_gpu_shader4 +#define GL_EXT_gpu_shader4 1 +GLAPI int GLAD_GL_EXT_gpu_shader4; +typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT; +#define glGetUniformuivEXT glad_glGetUniformuivEXT +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT; +#define glBindFragDataLocationEXT glad_glBindFragDataLocationEXT +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT; +#define glGetFragDataLocationEXT glad_glGetFragDataLocationEXT +typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0); +GLAPI PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT; +#define glUniform1uiEXT glad_glUniform1uiEXT +typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT; +#define glUniform2uiEXT glad_glUniform2uiEXT +typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT; +#define glUniform3uiEXT glad_glUniform3uiEXT +typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT; +#define glUniform4uiEXT glad_glUniform4uiEXT +typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT; +#define glUniform1uivEXT glad_glUniform1uivEXT +typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT; +#define glUniform2uivEXT glad_glUniform2uivEXT +typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT; +#define glUniform3uivEXT glad_glUniform3uivEXT +typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT; +#define glUniform4uivEXT glad_glUniform4uivEXT +#endif +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +GLAPI int GLAD_GL_EXT_histogram; +typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI PFNGLGETHISTOGRAMEXTPROC glad_glGetHistogramEXT; +#define glGetHistogramEXT glad_glGetHistogramEXT +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERFVEXTPROC glad_glGetHistogramParameterfvEXT; +#define glGetHistogramParameterfvEXT glad_glGetHistogramParameterfvEXT +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERIVEXTPROC glad_glGetHistogramParameterivEXT; +#define glGetHistogramParameterivEXT glad_glGetHistogramParameterivEXT +typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI PFNGLGETMINMAXEXTPROC glad_glGetMinmaxEXT; +#define glGetMinmaxEXT glad_glGetMinmaxEXT +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMINMAXPARAMETERFVEXTPROC glad_glGetMinmaxParameterfvEXT; +#define glGetMinmaxParameterfvEXT glad_glGetMinmaxParameterfvEXT +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMINMAXPARAMETERIVEXTPROC glad_glGetMinmaxParameterivEXT; +#define glGetMinmaxParameterivEXT glad_glGetMinmaxParameterivEXT +typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI PFNGLHISTOGRAMEXTPROC glad_glHistogramEXT; +#define glHistogramEXT glad_glHistogramEXT +typedef void (APIENTRYP PFNGLMINMAXEXTPROC)(GLenum target, GLenum internalformat, GLboolean sink); +GLAPI PFNGLMINMAXEXTPROC glad_glMinmaxEXT; +#define glMinmaxEXT glad_glMinmaxEXT +typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC)(GLenum target); +GLAPI PFNGLRESETHISTOGRAMEXTPROC glad_glResetHistogramEXT; +#define glResetHistogramEXT glad_glResetHistogramEXT +typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC)(GLenum target); +GLAPI PFNGLRESETMINMAXEXTPROC glad_glResetMinmaxEXT; +#define glResetMinmaxEXT glad_glResetMinmaxEXT +#endif +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +GLAPI int GLAD_GL_EXT_index_array_formats; +#endif +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +GLAPI int GLAD_GL_EXT_index_func; +typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC)(GLenum func, GLclampf ref); +GLAPI PFNGLINDEXFUNCEXTPROC glad_glIndexFuncEXT; +#define glIndexFuncEXT glad_glIndexFuncEXT +#endif +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +GLAPI int GLAD_GL_EXT_index_material; +typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC)(GLenum face, GLenum mode); +GLAPI PFNGLINDEXMATERIALEXTPROC glad_glIndexMaterialEXT; +#define glIndexMaterialEXT glad_glIndexMaterialEXT +#endif +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +GLAPI int GLAD_GL_EXT_index_texture; +#endif +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +GLAPI int GLAD_GL_EXT_light_texture; +typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC)(GLenum mode); +GLAPI PFNGLAPPLYTEXTUREEXTPROC glad_glApplyTextureEXT; +#define glApplyTextureEXT glad_glApplyTextureEXT +typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC)(GLenum pname); +GLAPI PFNGLTEXTURELIGHTEXTPROC glad_glTextureLightEXT; +#define glTextureLightEXT glad_glTextureLightEXT +typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC)(GLenum face, GLenum mode); +GLAPI PFNGLTEXTUREMATERIALEXTPROC glad_glTextureMaterialEXT; +#define glTextureMaterialEXT glad_glTextureMaterialEXT +#endif +#ifndef GL_EXT_memory_object +#define GL_EXT_memory_object 1 +GLAPI int GLAD_GL_EXT_memory_object; +typedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC)(GLenum pname, GLubyte *data); +GLAPI PFNGLGETUNSIGNEDBYTEVEXTPROC glad_glGetUnsignedBytevEXT; +#define glGetUnsignedBytevEXT glad_glGetUnsignedBytevEXT +typedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC)(GLenum target, GLuint index, GLubyte *data); +GLAPI PFNGLGETUNSIGNEDBYTEI_VEXTPROC glad_glGetUnsignedBytei_vEXT; +#define glGetUnsignedBytei_vEXT glad_glGetUnsignedBytei_vEXT +typedef void (APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC)(GLsizei n, const GLuint *memoryObjects); +GLAPI PFNGLDELETEMEMORYOBJECTSEXTPROC glad_glDeleteMemoryObjectsEXT; +#define glDeleteMemoryObjectsEXT glad_glDeleteMemoryObjectsEXT +typedef GLboolean (APIENTRYP PFNGLISMEMORYOBJECTEXTPROC)(GLuint memoryObject); +GLAPI PFNGLISMEMORYOBJECTEXTPROC glad_glIsMemoryObjectEXT; +#define glIsMemoryObjectEXT glad_glIsMemoryObjectEXT +typedef void (APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC)(GLsizei n, GLuint *memoryObjects); +GLAPI PFNGLCREATEMEMORYOBJECTSEXTPROC glad_glCreateMemoryObjectsEXT; +#define glCreateMemoryObjectsEXT glad_glCreateMemoryObjectsEXT +typedef void (APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, const GLint *params); +GLAPI PFNGLMEMORYOBJECTPARAMETERIVEXTPROC glad_glMemoryObjectParameterivEXT; +#define glMemoryObjectParameterivEXT glad_glMemoryObjectParameterivEXT +typedef void (APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, GLint *params); +GLAPI PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC glad_glGetMemoryObjectParameterivEXT; +#define glGetMemoryObjectParameterivEXT glad_glGetMemoryObjectParameterivEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM2DEXTPROC glad_glTexStorageMem2DEXT; +#define glTexStorageMem2DEXT glad_glTexStorageMem2DEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTexStorageMem2DMultisampleEXT; +#define glTexStorageMem2DMultisampleEXT glad_glTexStorageMem2DMultisampleEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM3DEXTPROC glad_glTexStorageMem3DEXT; +#define glTexStorageMem3DEXT glad_glTexStorageMem3DEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTexStorageMem3DMultisampleEXT; +#define glTexStorageMem3DMultisampleEXT glad_glTexStorageMem3DMultisampleEXT +typedef void (APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GLAPI PFNGLBUFFERSTORAGEMEMEXTPROC glad_glBufferStorageMemEXT; +#define glBufferStorageMemEXT glad_glBufferStorageMemEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM2DEXTPROC glad_glTextureStorageMem2DEXT; +#define glTextureStorageMem2DEXT glad_glTextureStorageMem2DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTextureStorageMem2DMultisampleEXT; +#define glTextureStorageMem2DMultisampleEXT glad_glTextureStorageMem2DMultisampleEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM3DEXTPROC glad_glTextureStorageMem3DEXT; +#define glTextureStorageMem3DEXT glad_glTextureStorageMem3DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTextureStorageMem3DMultisampleEXT; +#define glTextureStorageMem3DMultisampleEXT glad_glTextureStorageMem3DMultisampleEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +GLAPI PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC glad_glNamedBufferStorageMemEXT; +#define glNamedBufferStorageMemEXT glad_glNamedBufferStorageMemEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM1DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM1DEXTPROC glad_glTexStorageMem1DEXT; +#define glTexStorageMem1DEXT glad_glTexStorageMem1DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM1DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM1DEXTPROC glad_glTextureStorageMem1DEXT; +#define glTextureStorageMem1DEXT glad_glTextureStorageMem1DEXT +#endif +#ifndef GL_EXT_memory_object_fd +#define GL_EXT_memory_object_fd 1 +GLAPI int GLAD_GL_EXT_memory_object_fd; +typedef void (APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +GLAPI PFNGLIMPORTMEMORYFDEXTPROC glad_glImportMemoryFdEXT; +#define glImportMemoryFdEXT glad_glImportMemoryFdEXT +#endif +#ifndef GL_EXT_memory_object_win32 +#define GL_EXT_memory_object_win32 1 +GLAPI int GLAD_GL_EXT_memory_object_win32; +typedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GLAPI PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC glad_glImportMemoryWin32HandleEXT; +#define glImportMemoryWin32HandleEXT glad_glImportMemoryWin32HandleEXT +typedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, const void *name); +GLAPI PFNGLIMPORTMEMORYWIN32NAMEEXTPROC glad_glImportMemoryWin32NameEXT; +#define glImportMemoryWin32NameEXT glad_glImportMemoryWin32NameEXT +#endif +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +GLAPI int GLAD_GL_EXT_misc_attribute; +#endif +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +GLAPI int GLAD_GL_EXT_multi_draw_arrays; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT; +#define glMultiDrawArraysEXT glad_glMultiDrawArraysEXT +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +GLAPI PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT; +#define glMultiDrawElementsEXT glad_glMultiDrawElementsEXT +#endif +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +GLAPI int GLAD_GL_EXT_multisample; +typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC)(GLclampf value, GLboolean invert); +GLAPI PFNGLSAMPLEMASKEXTPROC glad_glSampleMaskEXT; +#define glSampleMaskEXT glad_glSampleMaskEXT +typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC)(GLenum pattern); +GLAPI PFNGLSAMPLEPATTERNEXTPROC glad_glSamplePatternEXT; +#define glSamplePatternEXT glad_glSamplePatternEXT +#endif +#ifndef GL_EXT_multiview_tessellation_geometry_shader +#define GL_EXT_multiview_tessellation_geometry_shader 1 +GLAPI int GLAD_GL_EXT_multiview_tessellation_geometry_shader; +#endif +#ifndef GL_EXT_multiview_texture_multisample +#define GL_EXT_multiview_texture_multisample 1 +GLAPI int GLAD_GL_EXT_multiview_texture_multisample; +#endif +#ifndef GL_EXT_multiview_timer_query +#define GL_EXT_multiview_timer_query 1 +GLAPI int GLAD_GL_EXT_multiview_timer_query; +#endif +#ifndef GL_EXT_packed_depth_stencil +#define GL_EXT_packed_depth_stencil 1 +GLAPI int GLAD_GL_EXT_packed_depth_stencil; +#endif +#ifndef GL_EXT_packed_float +#define GL_EXT_packed_float 1 +GLAPI int GLAD_GL_EXT_packed_float; +#endif +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +GLAPI int GLAD_GL_EXT_packed_pixels; +#endif +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +GLAPI int GLAD_GL_EXT_paletted_texture; +typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI PFNGLCOLORTABLEEXTPROC glad_glColorTableEXT; +#define glColorTableEXT glad_glColorTableEXT +typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC)(GLenum target, GLenum format, GLenum type, void *data); +GLAPI PFNGLGETCOLORTABLEEXTPROC glad_glGetColorTableEXT; +#define glGetColorTableEXT glad_glGetColorTableEXT +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glad_glGetColorTableParameterivEXT; +#define glGetColorTableParameterivEXT glad_glGetColorTableParameterivEXT +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glad_glGetColorTableParameterfvEXT; +#define glGetColorTableParameterfvEXT glad_glGetColorTableParameterfvEXT +#endif +#ifndef GL_EXT_pixel_buffer_object +#define GL_EXT_pixel_buffer_object 1 +GLAPI int GLAD_GL_EXT_pixel_buffer_object; +#endif +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +GLAPI int GLAD_GL_EXT_pixel_transform; +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLPIXELTRANSFORMPARAMETERIEXTPROC glad_glPixelTransformParameteriEXT; +#define glPixelTransformParameteriEXT glad_glPixelTransformParameteriEXT +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLPIXELTRANSFORMPARAMETERFEXTPROC glad_glPixelTransformParameterfEXT; +#define glPixelTransformParameterfEXT glad_glPixelTransformParameterfEXT +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC glad_glPixelTransformParameterivEXT; +#define glPixelTransformParameterivEXT glad_glPixelTransformParameterivEXT +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC glad_glPixelTransformParameterfvEXT; +#define glPixelTransformParameterfvEXT glad_glPixelTransformParameterfvEXT +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC glad_glGetPixelTransformParameterivEXT; +#define glGetPixelTransformParameterivEXT glad_glGetPixelTransformParameterivEXT +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC glad_glGetPixelTransformParameterfvEXT; +#define glGetPixelTransformParameterfvEXT glad_glGetPixelTransformParameterfvEXT +#endif +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +GLAPI int GLAD_GL_EXT_pixel_transform_color_table; +#endif +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +GLAPI int GLAD_GL_EXT_point_parameters; +typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFEXTPROC glad_glPointParameterfEXT; +#define glPointParameterfEXT glad_glPointParameterfEXT +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVEXTPROC glad_glPointParameterfvEXT; +#define glPointParameterfvEXT glad_glPointParameterfvEXT +#endif +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +GLAPI int GLAD_GL_EXT_polygon_offset; +typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC)(GLfloat factor, GLfloat bias); +GLAPI PFNGLPOLYGONOFFSETEXTPROC glad_glPolygonOffsetEXT; +#define glPolygonOffsetEXT glad_glPolygonOffsetEXT +#endif +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +GLAPI int GLAD_GL_EXT_polygon_offset_clamp; +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC)(GLfloat factor, GLfloat units, GLfloat clamp); +GLAPI PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT; +#define glPolygonOffsetClampEXT glad_glPolygonOffsetClampEXT +#endif +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +GLAPI int GLAD_GL_EXT_post_depth_coverage; +#endif +#ifndef GL_EXT_provoking_vertex +#define GL_EXT_provoking_vertex 1 +GLAPI int GLAD_GL_EXT_provoking_vertex; +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC)(GLenum mode); +GLAPI PFNGLPROVOKINGVERTEXEXTPROC glad_glProvokingVertexEXT; +#define glProvokingVertexEXT glad_glProvokingVertexEXT +#endif +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +GLAPI int GLAD_GL_EXT_raster_multisample; +typedef void (APIENTRYP PFNGLRASTERSAMPLESEXTPROC)(GLuint samples, GLboolean fixedsamplelocations); +GLAPI PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT; +#define glRasterSamplesEXT glad_glRasterSamplesEXT +#endif +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +GLAPI int GLAD_GL_EXT_rescale_normal; +#endif +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +GLAPI int GLAD_GL_EXT_secondary_color; +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC)(GLbyte red, GLbyte green, GLbyte blue); +GLAPI PFNGLSECONDARYCOLOR3BEXTPROC glad_glSecondaryColor3bEXT; +#define glSecondaryColor3bEXT glad_glSecondaryColor3bEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC)(const GLbyte *v); +GLAPI PFNGLSECONDARYCOLOR3BVEXTPROC glad_glSecondaryColor3bvEXT; +#define glSecondaryColor3bvEXT glad_glSecondaryColor3bvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC)(GLdouble red, GLdouble green, GLdouble blue); +GLAPI PFNGLSECONDARYCOLOR3DEXTPROC glad_glSecondaryColor3dEXT; +#define glSecondaryColor3dEXT glad_glSecondaryColor3dEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC)(const GLdouble *v); +GLAPI PFNGLSECONDARYCOLOR3DVEXTPROC glad_glSecondaryColor3dvEXT; +#define glSecondaryColor3dvEXT glad_glSecondaryColor3dvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC)(GLfloat red, GLfloat green, GLfloat blue); +GLAPI PFNGLSECONDARYCOLOR3FEXTPROC glad_glSecondaryColor3fEXT; +#define glSecondaryColor3fEXT glad_glSecondaryColor3fEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC)(const GLfloat *v); +GLAPI PFNGLSECONDARYCOLOR3FVEXTPROC glad_glSecondaryColor3fvEXT; +#define glSecondaryColor3fvEXT glad_glSecondaryColor3fvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC)(GLint red, GLint green, GLint blue); +GLAPI PFNGLSECONDARYCOLOR3IEXTPROC glad_glSecondaryColor3iEXT; +#define glSecondaryColor3iEXT glad_glSecondaryColor3iEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC)(const GLint *v); +GLAPI PFNGLSECONDARYCOLOR3IVEXTPROC glad_glSecondaryColor3ivEXT; +#define glSecondaryColor3ivEXT glad_glSecondaryColor3ivEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC)(GLshort red, GLshort green, GLshort blue); +GLAPI PFNGLSECONDARYCOLOR3SEXTPROC glad_glSecondaryColor3sEXT; +#define glSecondaryColor3sEXT glad_glSecondaryColor3sEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC)(const GLshort *v); +GLAPI PFNGLSECONDARYCOLOR3SVEXTPROC glad_glSecondaryColor3svEXT; +#define glSecondaryColor3svEXT glad_glSecondaryColor3svEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC)(GLubyte red, GLubyte green, GLubyte blue); +GLAPI PFNGLSECONDARYCOLOR3UBEXTPROC glad_glSecondaryColor3ubEXT; +#define glSecondaryColor3ubEXT glad_glSecondaryColor3ubEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC)(const GLubyte *v); +GLAPI PFNGLSECONDARYCOLOR3UBVEXTPROC glad_glSecondaryColor3ubvEXT; +#define glSecondaryColor3ubvEXT glad_glSecondaryColor3ubvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC)(GLuint red, GLuint green, GLuint blue); +GLAPI PFNGLSECONDARYCOLOR3UIEXTPROC glad_glSecondaryColor3uiEXT; +#define glSecondaryColor3uiEXT glad_glSecondaryColor3uiEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC)(const GLuint *v); +GLAPI PFNGLSECONDARYCOLOR3UIVEXTPROC glad_glSecondaryColor3uivEXT; +#define glSecondaryColor3uivEXT glad_glSecondaryColor3uivEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC)(GLushort red, GLushort green, GLushort blue); +GLAPI PFNGLSECONDARYCOLOR3USEXTPROC glad_glSecondaryColor3usEXT; +#define glSecondaryColor3usEXT glad_glSecondaryColor3usEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC)(const GLushort *v); +GLAPI PFNGLSECONDARYCOLOR3USVEXTPROC glad_glSecondaryColor3usvEXT; +#define glSecondaryColor3usvEXT glad_glSecondaryColor3usvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLSECONDARYCOLORPOINTEREXTPROC glad_glSecondaryColorPointerEXT; +#define glSecondaryColorPointerEXT glad_glSecondaryColorPointerEXT +#endif +#ifndef GL_EXT_semaphore +#define GL_EXT_semaphore 1 +GLAPI int GLAD_GL_EXT_semaphore; +typedef void (APIENTRYP PFNGLGENSEMAPHORESEXTPROC)(GLsizei n, GLuint *semaphores); +GLAPI PFNGLGENSEMAPHORESEXTPROC glad_glGenSemaphoresEXT; +#define glGenSemaphoresEXT glad_glGenSemaphoresEXT +typedef void (APIENTRYP PFNGLDELETESEMAPHORESEXTPROC)(GLsizei n, const GLuint *semaphores); +GLAPI PFNGLDELETESEMAPHORESEXTPROC glad_glDeleteSemaphoresEXT; +#define glDeleteSemaphoresEXT glad_glDeleteSemaphoresEXT +typedef GLboolean (APIENTRYP PFNGLISSEMAPHOREEXTPROC)(GLuint semaphore); +GLAPI PFNGLISSEMAPHOREEXTPROC glad_glIsSemaphoreEXT; +#define glIsSemaphoreEXT glad_glIsSemaphoreEXT +typedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, const GLuint64 *params); +GLAPI PFNGLSEMAPHOREPARAMETERUI64VEXTPROC glad_glSemaphoreParameterui64vEXT; +#define glSemaphoreParameterui64vEXT glad_glSemaphoreParameterui64vEXT +typedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, GLuint64 *params); +GLAPI PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC glad_glGetSemaphoreParameterui64vEXT; +#define glGetSemaphoreParameterui64vEXT glad_glGetSemaphoreParameterui64vEXT +typedef void (APIENTRYP PFNGLWAITSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GLAPI PFNGLWAITSEMAPHOREEXTPROC glad_glWaitSemaphoreEXT; +#define glWaitSemaphoreEXT glad_glWaitSemaphoreEXT +typedef void (APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +GLAPI PFNGLSIGNALSEMAPHOREEXTPROC glad_glSignalSemaphoreEXT; +#define glSignalSemaphoreEXT glad_glSignalSemaphoreEXT +#endif +#ifndef GL_EXT_semaphore_fd +#define GL_EXT_semaphore_fd 1 +GLAPI int GLAD_GL_EXT_semaphore_fd; +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC)(GLuint semaphore, GLenum handleType, GLint fd); +GLAPI PFNGLIMPORTSEMAPHOREFDEXTPROC glad_glImportSemaphoreFdEXT; +#define glImportSemaphoreFdEXT glad_glImportSemaphoreFdEXT +#endif +#ifndef GL_EXT_semaphore_win32 +#define GL_EXT_semaphore_win32 1 +GLAPI int GLAD_GL_EXT_semaphore_win32; +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)(GLuint semaphore, GLenum handleType, void *handle); +GLAPI PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC glad_glImportSemaphoreWin32HandleEXT; +#define glImportSemaphoreWin32HandleEXT glad_glImportSemaphoreWin32HandleEXT +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)(GLuint semaphore, GLenum handleType, const void *name); +GLAPI PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC glad_glImportSemaphoreWin32NameEXT; +#define glImportSemaphoreWin32NameEXT glad_glImportSemaphoreWin32NameEXT +#endif +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +GLAPI int GLAD_GL_EXT_separate_shader_objects; +typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC)(GLenum type, GLuint program); +GLAPI PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT; +#define glUseShaderProgramEXT glad_glUseShaderProgramEXT +typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC)(GLuint program); +GLAPI PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT; +#define glActiveProgramEXT glad_glActiveProgramEXT +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC)(GLenum type, const GLchar *string); +GLAPI PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT; +#define glCreateShaderProgramEXT glad_glCreateShaderProgramEXT +typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC)(GLuint pipeline, GLuint program); +GLAPI PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT; +#define glActiveShaderProgramEXT glad_glActiveShaderProgramEXT +typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC)(GLuint pipeline); +GLAPI PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT; +#define glBindProgramPipelineEXT glad_glBindProgramPipelineEXT +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC)(GLenum type, GLsizei count, const GLchar **strings); +GLAPI PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT; +#define glCreateShaderProgramvEXT glad_glCreateShaderProgramvEXT +typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC)(GLsizei n, const GLuint *pipelines); +GLAPI PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT; +#define glDeleteProgramPipelinesEXT glad_glDeleteProgramPipelinesEXT +typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC)(GLsizei n, GLuint *pipelines); +GLAPI PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT; +#define glGenProgramPipelinesEXT glad_glGenProgramPipelinesEXT +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT; +#define glGetProgramPipelineInfoLogEXT glad_glGetProgramPipelineInfoLogEXT +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC)(GLuint pipeline, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT; +#define glGetProgramPipelineivEXT glad_glGetProgramPipelineivEXT +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC)(GLuint pipeline); +GLAPI PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT; +#define glIsProgramPipelineEXT glad_glIsProgramPipelineEXT +typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC)(GLuint pipeline, GLbitfield stages, GLuint program); +GLAPI PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT; +#define glUseProgramStagesEXT glad_glUseProgramStagesEXT +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)(GLuint pipeline); +GLAPI PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT; +#define glValidateProgramPipelineEXT glad_glValidateProgramPipelineEXT +#endif +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +GLAPI int GLAD_GL_EXT_separate_specular_color; +#endif +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +GLAPI int GLAD_GL_EXT_shader_framebuffer_fetch; +#endif +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +GLAPI int GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent; +typedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)(void); +GLAPI PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC glad_glFramebufferFetchBarrierEXT; +#define glFramebufferFetchBarrierEXT glad_glFramebufferFetchBarrierEXT +#endif +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 +GLAPI int GLAD_GL_EXT_shader_image_load_formatted; +#endif +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 +GLAPI int GLAD_GL_EXT_shader_image_load_store; +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC)(GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +GLAPI PFNGLBINDIMAGETEXTUREEXTPROC glad_glBindImageTextureEXT; +#define glBindImageTextureEXT glad_glBindImageTextureEXT +typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC)(GLbitfield barriers); +GLAPI PFNGLMEMORYBARRIEREXTPROC glad_glMemoryBarrierEXT; +#define glMemoryBarrierEXT glad_glMemoryBarrierEXT +#endif +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +GLAPI int GLAD_GL_EXT_shader_integer_mix; +#endif +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 +GLAPI int GLAD_GL_EXT_shadow_funcs; +#endif +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +GLAPI int GLAD_GL_EXT_shared_texture_palette; +#endif +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +GLAPI int GLAD_GL_EXT_sparse_texture2; +#endif +#ifndef GL_EXT_stencil_clear_tag +#define GL_EXT_stencil_clear_tag 1 +GLAPI int GLAD_GL_EXT_stencil_clear_tag; +typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC)(GLsizei stencilTagBits, GLuint stencilClearTag); +GLAPI PFNGLSTENCILCLEARTAGEXTPROC glad_glStencilClearTagEXT; +#define glStencilClearTagEXT glad_glStencilClearTagEXT +#endif +#ifndef GL_EXT_stencil_two_side +#define GL_EXT_stencil_two_side 1 +GLAPI int GLAD_GL_EXT_stencil_two_side; +typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC)(GLenum face); +GLAPI PFNGLACTIVESTENCILFACEEXTPROC glad_glActiveStencilFaceEXT; +#define glActiveStencilFaceEXT glad_glActiveStencilFaceEXT +#endif +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +GLAPI int GLAD_GL_EXT_stencil_wrap; +#endif +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 +GLAPI int GLAD_GL_EXT_subtexture; +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE1DEXTPROC glad_glTexSubImage1DEXT; +#define glTexSubImage1DEXT glad_glTexSubImage1DEXT +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE2DEXTPROC glad_glTexSubImage2DEXT; +#define glTexSubImage2DEXT glad_glTexSubImage2DEXT +#endif +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +GLAPI int GLAD_GL_EXT_texture; +#endif +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +GLAPI int GLAD_GL_EXT_texture3D; +typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE3DEXTPROC glad_glTexImage3DEXT; +#define glTexImage3DEXT glad_glTexImage3DEXT +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE3DEXTPROC glad_glTexSubImage3DEXT; +#define glTexSubImage3DEXT glad_glTexSubImage3DEXT +#endif +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 +GLAPI int GLAD_GL_EXT_texture_array; +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC glad_glFramebufferTextureLayerEXT; +#define glFramebufferTextureLayerEXT glad_glFramebufferTextureLayerEXT +#endif +#ifndef GL_EXT_texture_buffer_object +#define GL_EXT_texture_buffer_object 1 +GLAPI int GLAD_GL_EXT_texture_buffer_object; +typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC)(GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT; +#define glTexBufferEXT glad_glTexBufferEXT +#endif +#ifndef GL_EXT_texture_compression_latc +#define GL_EXT_texture_compression_latc 1 +GLAPI int GLAD_GL_EXT_texture_compression_latc; +#endif +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +GLAPI int GLAD_GL_EXT_texture_compression_rgtc; +#endif +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +GLAPI int GLAD_GL_EXT_texture_compression_s3tc; +#endif +#ifndef GL_EXT_texture_cube_map +#define GL_EXT_texture_cube_map 1 +GLAPI int GLAD_GL_EXT_texture_cube_map; +#endif +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +GLAPI int GLAD_GL_EXT_texture_env_add; +#endif +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +GLAPI int GLAD_GL_EXT_texture_env_combine; +#endif +#ifndef GL_EXT_texture_env_dot3 +#define GL_EXT_texture_env_dot3 1 +GLAPI int GLAD_GL_EXT_texture_env_dot3; +#endif +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +GLAPI int GLAD_GL_EXT_texture_filter_anisotropic; +#endif +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +GLAPI int GLAD_GL_EXT_texture_filter_minmax; +#endif +#ifndef GL_EXT_texture_integer +#define GL_EXT_texture_integer 1 +GLAPI int GLAD_GL_EXT_texture_integer; +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT; +#define glTexParameterIivEXT glad_glTexParameterIivEXT +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT; +#define glTexParameterIuivEXT glad_glTexParameterIuivEXT +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT; +#define glGetTexParameterIivEXT glad_glGetTexParameterIivEXT +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT; +#define glGetTexParameterIuivEXT glad_glGetTexParameterIuivEXT +typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC)(GLint red, GLint green, GLint blue, GLint alpha); +GLAPI PFNGLCLEARCOLORIIEXTPROC glad_glClearColorIiEXT; +#define glClearColorIiEXT glad_glClearColorIiEXT +typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha); +GLAPI PFNGLCLEARCOLORIUIEXTPROC glad_glClearColorIuiEXT; +#define glClearColorIuiEXT glad_glClearColorIuiEXT +#endif +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +GLAPI int GLAD_GL_EXT_texture_lod_bias; +#endif +#ifndef GL_EXT_texture_mirror_clamp +#define GL_EXT_texture_mirror_clamp 1 +GLAPI int GLAD_GL_EXT_texture_mirror_clamp; +#endif +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +GLAPI int GLAD_GL_EXT_texture_object; +typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC)(GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI PFNGLARETEXTURESRESIDENTEXTPROC glad_glAreTexturesResidentEXT; +#define glAreTexturesResidentEXT glad_glAreTexturesResidentEXT +typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC)(GLenum target, GLuint texture); +GLAPI PFNGLBINDTEXTUREEXTPROC glad_glBindTextureEXT; +#define glBindTextureEXT glad_glBindTextureEXT +typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC)(GLsizei n, const GLuint *textures); +GLAPI PFNGLDELETETEXTURESEXTPROC glad_glDeleteTexturesEXT; +#define glDeleteTexturesEXT glad_glDeleteTexturesEXT +typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC)(GLsizei n, GLuint *textures); +GLAPI PFNGLGENTEXTURESEXTPROC glad_glGenTexturesEXT; +#define glGenTexturesEXT glad_glGenTexturesEXT +typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC)(GLuint texture); +GLAPI PFNGLISTEXTUREEXTPROC glad_glIsTextureEXT; +#define glIsTextureEXT glad_glIsTextureEXT +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC)(GLsizei n, const GLuint *textures, const GLclampf *priorities); +GLAPI PFNGLPRIORITIZETEXTURESEXTPROC glad_glPrioritizeTexturesEXT; +#define glPrioritizeTexturesEXT glad_glPrioritizeTexturesEXT +#endif +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +GLAPI int GLAD_GL_EXT_texture_perturb_normal; +typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC)(GLenum mode); +GLAPI PFNGLTEXTURENORMALEXTPROC glad_glTextureNormalEXT; +#define glTextureNormalEXT glad_glTextureNormalEXT +#endif +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +GLAPI int GLAD_GL_EXT_texture_sRGB; +#endif +#ifndef GL_EXT_texture_sRGB_R8 +#define GL_EXT_texture_sRGB_R8 1 +GLAPI int GLAD_GL_EXT_texture_sRGB_R8; +#endif +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +GLAPI int GLAD_GL_EXT_texture_sRGB_decode; +#endif +#ifndef GL_EXT_texture_shadow_lod +#define GL_EXT_texture_shadow_lod 1 +GLAPI int GLAD_GL_EXT_texture_shadow_lod; +#endif +#ifndef GL_EXT_texture_shared_exponent +#define GL_EXT_texture_shared_exponent 1 +GLAPI int GLAD_GL_EXT_texture_shared_exponent; +#endif +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 +GLAPI int GLAD_GL_EXT_texture_snorm; +#endif +#ifndef GL_EXT_texture_swizzle +#define GL_EXT_texture_swizzle 1 +GLAPI int GLAD_GL_EXT_texture_swizzle; +#endif +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 +GLAPI int GLAD_GL_EXT_timer_query; +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC)(GLuint id, GLenum pname, GLint64 *params); +GLAPI PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT; +#define glGetQueryObjecti64vEXT glad_glGetQueryObjecti64vEXT +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC)(GLuint id, GLenum pname, GLuint64 *params); +GLAPI PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT; +#define glGetQueryObjectui64vEXT glad_glGetQueryObjectui64vEXT +#endif +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 +GLAPI int GLAD_GL_EXT_transform_feedback; +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)(GLenum primitiveMode); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glad_glBeginTransformFeedbackEXT; +#define glBeginTransformFeedbackEXT glad_glBeginTransformFeedbackEXT +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC)(void); +GLAPI PFNGLENDTRANSFORMFEEDBACKEXTPROC glad_glEndTransformFeedbackEXT; +#define glEndTransformFeedbackEXT glad_glEndTransformFeedbackEXT +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLBINDBUFFERRANGEEXTPROC glad_glBindBufferRangeEXT; +#define glBindBufferRangeEXT glad_glBindBufferRangeEXT +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI PFNGLBINDBUFFEROFFSETEXTPROC glad_glBindBufferOffsetEXT; +#define glBindBufferOffsetEXT glad_glBindBufferOffsetEXT +typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC)(GLenum target, GLuint index, GLuint buffer); +GLAPI PFNGLBINDBUFFERBASEEXTPROC glad_glBindBufferBaseEXT; +#define glBindBufferBaseEXT glad_glBindBufferBaseEXT +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glad_glTransformFeedbackVaryingsEXT; +#define glTransformFeedbackVaryingsEXT glad_glTransformFeedbackVaryingsEXT +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glad_glGetTransformFeedbackVaryingEXT; +#define glGetTransformFeedbackVaryingEXT glad_glGetTransformFeedbackVaryingEXT +#endif +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +GLAPI int GLAD_GL_EXT_vertex_array; +typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC)(GLint i); +GLAPI PFNGLARRAYELEMENTEXTPROC glad_glArrayElementEXT; +#define glArrayElementEXT glad_glArrayElementEXT +typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLCOLORPOINTEREXTPROC glad_glColorPointerEXT; +#define glColorPointerEXT glad_glColorPointerEXT +typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC)(GLenum mode, GLint first, GLsizei count); +GLAPI PFNGLDRAWARRAYSEXTPROC glad_glDrawArraysEXT; +#define glDrawArraysEXT glad_glDrawArraysEXT +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC)(GLsizei stride, GLsizei count, const GLboolean *pointer); +GLAPI PFNGLEDGEFLAGPOINTEREXTPROC glad_glEdgeFlagPointerEXT; +#define glEdgeFlagPointerEXT glad_glEdgeFlagPointerEXT +typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC)(GLenum pname, void **params); +GLAPI PFNGLGETPOINTERVEXTPROC glad_glGetPointervEXT; +#define glGetPointervEXT glad_glGetPointervEXT +typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLINDEXPOINTEREXTPROC glad_glIndexPointerEXT; +#define glIndexPointerEXT glad_glIndexPointerEXT +typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLNORMALPOINTEREXTPROC glad_glNormalPointerEXT; +#define glNormalPointerEXT glad_glNormalPointerEXT +typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLTEXCOORDPOINTEREXTPROC glad_glTexCoordPointerEXT; +#define glTexCoordPointerEXT glad_glTexCoordPointerEXT +typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLVERTEXPOINTEREXTPROC glad_glVertexPointerEXT; +#define glVertexPointerEXT glad_glVertexPointerEXT +#endif +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 +GLAPI int GLAD_GL_EXT_vertex_array_bgra; +#endif +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 +GLAPI int GLAD_GL_EXT_vertex_attrib_64bit; +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIBL1DEXTPROC glad_glVertexAttribL1dEXT; +#define glVertexAttribL1dEXT glad_glVertexAttribL1dEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIBL2DEXTPROC glad_glVertexAttribL2dEXT; +#define glVertexAttribL2dEXT glad_glVertexAttribL2dEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIBL3DEXTPROC glad_glVertexAttribL3dEXT; +#define glVertexAttribL3dEXT glad_glVertexAttribL3dEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIBL4DEXTPROC glad_glVertexAttribL4dEXT; +#define glVertexAttribL4dEXT glad_glVertexAttribL4dEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL1DVEXTPROC glad_glVertexAttribL1dvEXT; +#define glVertexAttribL1dvEXT glad_glVertexAttribL1dvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL2DVEXTPROC glad_glVertexAttribL2dvEXT; +#define glVertexAttribL2dvEXT glad_glVertexAttribL2dvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL3DVEXTPROC glad_glVertexAttribL3dvEXT; +#define glVertexAttribL3dvEXT glad_glVertexAttribL3dvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL4DVEXTPROC glad_glVertexAttribL4dvEXT; +#define glVertexAttribL4dvEXT glad_glVertexAttribL4dvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBLPOINTEREXTPROC glad_glVertexAttribLPointerEXT; +#define glVertexAttribLPointerEXT glad_glVertexAttribLPointerEXT +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBLDVEXTPROC glad_glGetVertexAttribLdvEXT; +#define glGetVertexAttribLdvEXT glad_glGetVertexAttribLdvEXT +#endif +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +GLAPI int GLAD_GL_EXT_vertex_shader; +typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC)(void); +GLAPI PFNGLBEGINVERTEXSHADEREXTPROC glad_glBeginVertexShaderEXT; +#define glBeginVertexShaderEXT glad_glBeginVertexShaderEXT +typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC)(void); +GLAPI PFNGLENDVERTEXSHADEREXTPROC glad_glEndVertexShaderEXT; +#define glEndVertexShaderEXT glad_glEndVertexShaderEXT +typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC)(GLuint id); +GLAPI PFNGLBINDVERTEXSHADEREXTPROC glad_glBindVertexShaderEXT; +#define glBindVertexShaderEXT glad_glBindVertexShaderEXT +typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC)(GLuint range); +GLAPI PFNGLGENVERTEXSHADERSEXTPROC glad_glGenVertexShadersEXT; +#define glGenVertexShadersEXT glad_glGenVertexShadersEXT +typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC)(GLuint id); +GLAPI PFNGLDELETEVERTEXSHADEREXTPROC glad_glDeleteVertexShaderEXT; +#define glDeleteVertexShaderEXT glad_glDeleteVertexShaderEXT +typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC)(GLenum op, GLuint res, GLuint arg1); +GLAPI PFNGLSHADEROP1EXTPROC glad_glShaderOp1EXT; +#define glShaderOp1EXT glad_glShaderOp1EXT +typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); +GLAPI PFNGLSHADEROP2EXTPROC glad_glShaderOp2EXT; +#define glShaderOp2EXT glad_glShaderOp2EXT +typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +GLAPI PFNGLSHADEROP3EXTPROC glad_glShaderOp3EXT; +#define glShaderOp3EXT glad_glShaderOp3EXT +typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI PFNGLSWIZZLEEXTPROC glad_glSwizzleEXT; +#define glSwizzleEXT glad_glSwizzleEXT +typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI PFNGLWRITEMASKEXTPROC glad_glWriteMaskEXT; +#define glWriteMaskEXT glad_glWriteMaskEXT +typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +GLAPI PFNGLINSERTCOMPONENTEXTPROC glad_glInsertComponentEXT; +#define glInsertComponentEXT glad_glInsertComponentEXT +typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +GLAPI PFNGLEXTRACTCOMPONENTEXTPROC glad_glExtractComponentEXT; +#define glExtractComponentEXT glad_glExtractComponentEXT +typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +GLAPI PFNGLGENSYMBOLSEXTPROC glad_glGenSymbolsEXT; +#define glGenSymbolsEXT glad_glGenSymbolsEXT +typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC)(GLuint id, GLenum type, const void *addr); +GLAPI PFNGLSETINVARIANTEXTPROC glad_glSetInvariantEXT; +#define glSetInvariantEXT glad_glSetInvariantEXT +typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC)(GLuint id, GLenum type, const void *addr); +GLAPI PFNGLSETLOCALCONSTANTEXTPROC glad_glSetLocalConstantEXT; +#define glSetLocalConstantEXT glad_glSetLocalConstantEXT +typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC)(GLuint id, const GLbyte *addr); +GLAPI PFNGLVARIANTBVEXTPROC glad_glVariantbvEXT; +#define glVariantbvEXT glad_glVariantbvEXT +typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC)(GLuint id, const GLshort *addr); +GLAPI PFNGLVARIANTSVEXTPROC glad_glVariantsvEXT; +#define glVariantsvEXT glad_glVariantsvEXT +typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC)(GLuint id, const GLint *addr); +GLAPI PFNGLVARIANTIVEXTPROC glad_glVariantivEXT; +#define glVariantivEXT glad_glVariantivEXT +typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC)(GLuint id, const GLfloat *addr); +GLAPI PFNGLVARIANTFVEXTPROC glad_glVariantfvEXT; +#define glVariantfvEXT glad_glVariantfvEXT +typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC)(GLuint id, const GLdouble *addr); +GLAPI PFNGLVARIANTDVEXTPROC glad_glVariantdvEXT; +#define glVariantdvEXT glad_glVariantdvEXT +typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC)(GLuint id, const GLubyte *addr); +GLAPI PFNGLVARIANTUBVEXTPROC glad_glVariantubvEXT; +#define glVariantubvEXT glad_glVariantubvEXT +typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC)(GLuint id, const GLushort *addr); +GLAPI PFNGLVARIANTUSVEXTPROC glad_glVariantusvEXT; +#define glVariantusvEXT glad_glVariantusvEXT +typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC)(GLuint id, const GLuint *addr); +GLAPI PFNGLVARIANTUIVEXTPROC glad_glVariantuivEXT; +#define glVariantuivEXT glad_glVariantuivEXT +typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC)(GLuint id, GLenum type, GLuint stride, const void *addr); +GLAPI PFNGLVARIANTPOINTEREXTPROC glad_glVariantPointerEXT; +#define glVariantPointerEXT glad_glVariantPointerEXT +typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +GLAPI PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glad_glEnableVariantClientStateEXT; +#define glEnableVariantClientStateEXT glad_glEnableVariantClientStateEXT +typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +GLAPI PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glad_glDisableVariantClientStateEXT; +#define glDisableVariantClientStateEXT glad_glDisableVariantClientStateEXT +typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC)(GLenum light, GLenum value); +GLAPI PFNGLBINDLIGHTPARAMETEREXTPROC glad_glBindLightParameterEXT; +#define glBindLightParameterEXT glad_glBindLightParameterEXT +typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC)(GLenum face, GLenum value); +GLAPI PFNGLBINDMATERIALPARAMETEREXTPROC glad_glBindMaterialParameterEXT; +#define glBindMaterialParameterEXT glad_glBindMaterialParameterEXT +typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC)(GLenum unit, GLenum coord, GLenum value); +GLAPI PFNGLBINDTEXGENPARAMETEREXTPROC glad_glBindTexGenParameterEXT; +#define glBindTexGenParameterEXT glad_glBindTexGenParameterEXT +typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)(GLenum unit, GLenum value); +GLAPI PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glad_glBindTextureUnitParameterEXT; +#define glBindTextureUnitParameterEXT glad_glBindTextureUnitParameterEXT +typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC)(GLenum value); +GLAPI PFNGLBINDPARAMETEREXTPROC glad_glBindParameterEXT; +#define glBindParameterEXT glad_glBindParameterEXT +typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC)(GLuint id, GLenum cap); +GLAPI PFNGLISVARIANTENABLEDEXTPROC glad_glIsVariantEnabledEXT; +#define glIsVariantEnabledEXT glad_glIsVariantEnabledEXT +typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean *data); +GLAPI PFNGLGETVARIANTBOOLEANVEXTPROC glad_glGetVariantBooleanvEXT; +#define glGetVariantBooleanvEXT glad_glGetVariantBooleanvEXT +typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +GLAPI PFNGLGETVARIANTINTEGERVEXTPROC glad_glGetVariantIntegervEXT; +#define glGetVariantIntegervEXT glad_glGetVariantIntegervEXT +typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +GLAPI PFNGLGETVARIANTFLOATVEXTPROC glad_glGetVariantFloatvEXT; +#define glGetVariantFloatvEXT glad_glGetVariantFloatvEXT +typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC)(GLuint id, GLenum value, void **data); +GLAPI PFNGLGETVARIANTPOINTERVEXTPROC glad_glGetVariantPointervEXT; +#define glGetVariantPointervEXT glad_glGetVariantPointervEXT +typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean *data); +GLAPI PFNGLGETINVARIANTBOOLEANVEXTPROC glad_glGetInvariantBooleanvEXT; +#define glGetInvariantBooleanvEXT glad_glGetInvariantBooleanvEXT +typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +GLAPI PFNGLGETINVARIANTINTEGERVEXTPROC glad_glGetInvariantIntegervEXT; +#define glGetInvariantIntegervEXT glad_glGetInvariantIntegervEXT +typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +GLAPI PFNGLGETINVARIANTFLOATVEXTPROC glad_glGetInvariantFloatvEXT; +#define glGetInvariantFloatvEXT glad_glGetInvariantFloatvEXT +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean *data); +GLAPI PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glad_glGetLocalConstantBooleanvEXT; +#define glGetLocalConstantBooleanvEXT glad_glGetLocalConstantBooleanvEXT +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +GLAPI PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glad_glGetLocalConstantIntegervEXT; +#define glGetLocalConstantIntegervEXT glad_glGetLocalConstantIntegervEXT +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +GLAPI PFNGLGETLOCALCONSTANTFLOATVEXTPROC glad_glGetLocalConstantFloatvEXT; +#define glGetLocalConstantFloatvEXT glad_glGetLocalConstantFloatvEXT +#endif +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +GLAPI int GLAD_GL_EXT_vertex_weighting; +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC)(GLfloat weight); +GLAPI PFNGLVERTEXWEIGHTFEXTPROC glad_glVertexWeightfEXT; +#define glVertexWeightfEXT glad_glVertexWeightfEXT +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC)(const GLfloat *weight); +GLAPI PFNGLVERTEXWEIGHTFVEXTPROC glad_glVertexWeightfvEXT; +#define glVertexWeightfvEXT glad_glVertexWeightfvEXT +typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXWEIGHTPOINTEREXTPROC glad_glVertexWeightPointerEXT; +#define glVertexWeightPointerEXT glad_glVertexWeightPointerEXT +#endif +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +GLAPI int GLAD_GL_EXT_win32_keyed_mutex; +typedef GLboolean (APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key, GLuint timeout); +GLAPI PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC glad_glAcquireKeyedMutexWin32EXT; +#define glAcquireKeyedMutexWin32EXT glad_glAcquireKeyedMutexWin32EXT +typedef GLboolean (APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key); +GLAPI PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC glad_glReleaseKeyedMutexWin32EXT; +#define glReleaseKeyedMutexWin32EXT glad_glReleaseKeyedMutexWin32EXT +#endif +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +GLAPI int GLAD_GL_EXT_window_rectangles; +typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC)(GLenum mode, GLsizei count, const GLint *box); +GLAPI PFNGLWINDOWRECTANGLESEXTPROC glad_glWindowRectanglesEXT; +#define glWindowRectanglesEXT glad_glWindowRectanglesEXT +#endif +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 +GLAPI int GLAD_GL_EXT_x11_sync_object; +typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +GLAPI PFNGLIMPORTSYNCEXTPROC glad_glImportSyncEXT; +#define glImportSyncEXT glad_glImportSyncEXT +#endif +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 +GLAPI int GLAD_GL_GREMEDY_frame_terminator; +typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC)(void); +GLAPI PFNGLFRAMETERMINATORGREMEDYPROC glad_glFrameTerminatorGREMEDY; +#define glFrameTerminatorGREMEDY glad_glFrameTerminatorGREMEDY +#endif +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 +GLAPI int GLAD_GL_GREMEDY_string_marker; +typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC)(GLsizei len, const void *string); +GLAPI PFNGLSTRINGMARKERGREMEDYPROC glad_glStringMarkerGREMEDY; +#define glStringMarkerGREMEDY glad_glStringMarkerGREMEDY +#endif +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +GLAPI int GLAD_GL_HP_convolution_border_modes; +#endif +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +GLAPI int GLAD_GL_HP_image_transform; +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLIMAGETRANSFORMPARAMETERIHPPROC glad_glImageTransformParameteriHP; +#define glImageTransformParameteriHP glad_glImageTransformParameteriHP +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLIMAGETRANSFORMPARAMETERFHPPROC glad_glImageTransformParameterfHP; +#define glImageTransformParameterfHP glad_glImageTransformParameterfHP +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLIMAGETRANSFORMPARAMETERIVHPPROC glad_glImageTransformParameterivHP; +#define glImageTransformParameterivHP glad_glImageTransformParameterivHP +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLIMAGETRANSFORMPARAMETERFVHPPROC glad_glImageTransformParameterfvHP; +#define glImageTransformParameterfvHP glad_glImageTransformParameterfvHP +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC glad_glGetImageTransformParameterivHP; +#define glGetImageTransformParameterivHP glad_glGetImageTransformParameterivHP +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC glad_glGetImageTransformParameterfvHP; +#define glGetImageTransformParameterfvHP glad_glGetImageTransformParameterfvHP +#endif +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +GLAPI int GLAD_GL_HP_occlusion_test; +#endif +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +GLAPI int GLAD_GL_HP_texture_lighting; +#endif +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +GLAPI int GLAD_GL_IBM_cull_vertex; +#endif +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 +GLAPI int GLAD_GL_IBM_multimode_draw_arrays; +typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +GLAPI PFNGLMULTIMODEDRAWARRAYSIBMPROC glad_glMultiModeDrawArraysIBM; +#define glMultiModeDrawArraysIBM glad_glMultiModeDrawArraysIBM +typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC)(const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride); +GLAPI PFNGLMULTIMODEDRAWELEMENTSIBMPROC glad_glMultiModeDrawElementsIBM; +#define glMultiModeDrawElementsIBM glad_glMultiModeDrawElementsIBM +#endif +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +GLAPI int GLAD_GL_IBM_rasterpos_clip; +#endif +#ifndef GL_IBM_static_data +#define GL_IBM_static_data 1 +GLAPI int GLAD_GL_IBM_static_data; +typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC)(GLenum target); +GLAPI PFNGLFLUSHSTATICDATAIBMPROC glad_glFlushStaticDataIBM; +#define glFlushStaticDataIBM glad_glFlushStaticDataIBM +#endif +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 +GLAPI int GLAD_GL_IBM_texture_mirrored_repeat; +#endif +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +GLAPI int GLAD_GL_IBM_vertex_array_lists; +typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLCOLORPOINTERLISTIBMPROC glad_glColorPointerListIBM; +#define glColorPointerListIBM glad_glColorPointerListIBM +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLSECONDARYCOLORPOINTERLISTIBMPROC glad_glSecondaryColorPointerListIBM; +#define glSecondaryColorPointerListIBM glad_glSecondaryColorPointerListIBM +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC)(GLint stride, const GLboolean **pointer, GLint ptrstride); +GLAPI PFNGLEDGEFLAGPOINTERLISTIBMPROC glad_glEdgeFlagPointerListIBM; +#define glEdgeFlagPointerListIBM glad_glEdgeFlagPointerListIBM +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLFOGCOORDPOINTERLISTIBMPROC glad_glFogCoordPointerListIBM; +#define glFogCoordPointerListIBM glad_glFogCoordPointerListIBM +typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLINDEXPOINTERLISTIBMPROC glad_glIndexPointerListIBM; +#define glIndexPointerListIBM glad_glIndexPointerListIBM +typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLNORMALPOINTERLISTIBMPROC glad_glNormalPointerListIBM; +#define glNormalPointerListIBM glad_glNormalPointerListIBM +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLTEXCOORDPOINTERLISTIBMPROC glad_glTexCoordPointerListIBM; +#define glTexCoordPointerListIBM glad_glTexCoordPointerListIBM +typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLVERTEXPOINTERLISTIBMPROC glad_glVertexPointerListIBM; +#define glVertexPointerListIBM glad_glVertexPointerListIBM +#endif +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 +GLAPI int GLAD_GL_INGR_blend_func_separate; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEINGRPROC glad_glBlendFuncSeparateINGR; +#define glBlendFuncSeparateINGR glad_glBlendFuncSeparateINGR +#endif +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +GLAPI int GLAD_GL_INGR_color_clamp; +#endif +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +GLAPI int GLAD_GL_INGR_interlace_read; +#endif +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +GLAPI int GLAD_GL_INTEL_blackhole_render; +#endif +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +GLAPI int GLAD_GL_INTEL_conservative_rasterization; +#endif +#ifndef GL_INTEL_fragment_shader_ordering +#define GL_INTEL_fragment_shader_ordering 1 +GLAPI int GLAD_GL_INTEL_fragment_shader_ordering; +#endif +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 +GLAPI int GLAD_GL_INTEL_framebuffer_CMAA; +typedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)(void); +GLAPI PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL; +#define glApplyFramebufferAttachmentCMAAINTEL glad_glApplyFramebufferAttachmentCMAAINTEL +#endif +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 +GLAPI int GLAD_GL_INTEL_map_texture; +typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC)(GLuint texture); +GLAPI PFNGLSYNCTEXTUREINTELPROC glad_glSyncTextureINTEL; +#define glSyncTextureINTEL glad_glSyncTextureINTEL +typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level); +GLAPI PFNGLUNMAPTEXTURE2DINTELPROC glad_glUnmapTexture2DINTEL; +#define glUnmapTexture2DINTEL glad_glUnmapTexture2DINTEL +typedef void * (APIENTRYP PFNGLMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout); +GLAPI PFNGLMAPTEXTURE2DINTELPROC glad_glMapTexture2DINTEL; +#define glMapTexture2DINTEL glad_glMapTexture2DINTEL +#endif +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +GLAPI int GLAD_GL_INTEL_parallel_arrays; +typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC)(GLint size, GLenum type, const void **pointer); +GLAPI PFNGLVERTEXPOINTERVINTELPROC glad_glVertexPointervINTEL; +#define glVertexPointervINTEL glad_glVertexPointervINTEL +typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC)(GLenum type, const void **pointer); +GLAPI PFNGLNORMALPOINTERVINTELPROC glad_glNormalPointervINTEL; +#define glNormalPointervINTEL glad_glNormalPointervINTEL +typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC)(GLint size, GLenum type, const void **pointer); +GLAPI PFNGLCOLORPOINTERVINTELPROC glad_glColorPointervINTEL; +#define glColorPointervINTEL glad_glColorPointervINTEL +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC)(GLint size, GLenum type, const void **pointer); +GLAPI PFNGLTEXCOORDPOINTERVINTELPROC glad_glTexCoordPointervINTEL; +#define glTexCoordPointervINTEL glad_glTexCoordPointervINTEL +#endif +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +GLAPI int GLAD_GL_INTEL_performance_query; +typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC)(GLuint queryHandle); +GLAPI PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL; +#define glBeginPerfQueryINTEL glad_glBeginPerfQueryINTEL +typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC)(GLuint queryId, GLuint *queryHandle); +GLAPI PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL; +#define glCreatePerfQueryINTEL glad_glCreatePerfQueryINTEL +typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC)(GLuint queryHandle); +GLAPI PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL; +#define glDeletePerfQueryINTEL glad_glDeletePerfQueryINTEL +typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC)(GLuint queryHandle); +GLAPI PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL; +#define glEndPerfQueryINTEL glad_glEndPerfQueryINTEL +typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC)(GLuint *queryId); +GLAPI PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL; +#define glGetFirstPerfQueryIdINTEL glad_glGetFirstPerfQueryIdINTEL +typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC)(GLuint queryId, GLuint *nextQueryId); +GLAPI PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL; +#define glGetNextPerfQueryIdINTEL glad_glGetNextPerfQueryIdINTEL +typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC)(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GLAPI PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL; +#define glGetPerfCounterInfoINTEL glad_glGetPerfCounterInfoINTEL +typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC)(GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GLAPI PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL; +#define glGetPerfQueryDataINTEL glad_glGetPerfQueryDataINTEL +typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC)(GLchar *queryName, GLuint *queryId); +GLAPI PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL; +#define glGetPerfQueryIdByNameINTEL glad_glGetPerfQueryIdByNameINTEL +typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC)(GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +GLAPI PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL; +#define glGetPerfQueryInfoINTEL glad_glGetPerfQueryInfoINTEL +#endif +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +GLAPI int GLAD_GL_KHR_blend_equation_advanced; +typedef void (APIENTRYP PFNGLBLENDBARRIERKHRPROC)(void); +GLAPI PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR; +#define glBlendBarrierKHR glad_glBlendBarrierKHR +#endif +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +GLAPI int GLAD_GL_KHR_blend_equation_advanced_coherent; +#endif +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +GLAPI int GLAD_GL_KHR_context_flush_control; +#endif +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +GLAPI int GLAD_GL_KHR_debug; +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; +#define glDebugMessageControl glad_glDebugMessageControl +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; +#define glDebugMessageInsert glad_glDebugMessageInsert +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void *userParam); +GLAPI PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; +#define glDebugMessageCallback glad_glDebugMessageCallback +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; +#define glGetDebugMessageLog glad_glGetDebugMessageLog +typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar *message); +GLAPI PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; +#define glPushDebugGroup glad_glPushDebugGroup +typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC)(void); +GLAPI PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; +#define glPopDebugGroup glad_glPopDebugGroup +typedef void (APIENTRYP PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GLAPI PFNGLOBJECTLABELPROC glad_glObjectLabel; +#define glObjectLabel glad_glObjectLabel +typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; +#define glGetObjectLabel glad_glGetObjectLabel +typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC)(const void *ptr, GLsizei length, const GLchar *label); +GLAPI PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; +#define glObjectPtrLabel glad_glObjectPtrLabel +typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; +#define glGetObjectPtrLabel glad_glGetObjectPtrLabel +typedef void (APIENTRYP PFNGLGETPOINTERVPROC)(GLenum pname, void **params); +GLAPI PFNGLGETPOINTERVPROC glad_glGetPointerv; +#define glGetPointerv glad_glGetPointerv +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR; +#define glDebugMessageControlKHR glad_glDebugMessageControlKHR +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR; +#define glDebugMessageInsertKHR glad_glDebugMessageInsertKHR +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC)(GLDEBUGPROCKHR callback, const void *userParam); +GLAPI PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR; +#define glDebugMessageCallbackKHR glad_glDebugMessageCallbackKHR +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR; +#define glGetDebugMessageLogKHR glad_glGetDebugMessageLogKHR +typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC)(GLenum source, GLuint id, GLsizei length, const GLchar *message); +GLAPI PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR; +#define glPushDebugGroupKHR glad_glPushDebugGroupKHR +typedef void (APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC)(void); +GLAPI PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR; +#define glPopDebugGroupKHR glad_glPopDebugGroupKHR +typedef void (APIENTRYP PFNGLOBJECTLABELKHRPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GLAPI PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR; +#define glObjectLabelKHR glad_glObjectLabelKHR +typedef void (APIENTRYP PFNGLGETOBJECTLABELKHRPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR; +#define glGetObjectLabelKHR glad_glGetObjectLabelKHR +typedef void (APIENTRYP PFNGLOBJECTPTRLABELKHRPROC)(const void *ptr, GLsizei length, const GLchar *label); +GLAPI PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR; +#define glObjectPtrLabelKHR glad_glObjectPtrLabelKHR +typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR; +#define glGetObjectPtrLabelKHR glad_glGetObjectPtrLabelKHR +typedef void (APIENTRYP PFNGLGETPOINTERVKHRPROC)(GLenum pname, void **params); +GLAPI PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR; +#define glGetPointervKHR glad_glGetPointervKHR +#endif +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +GLAPI int GLAD_GL_KHR_no_error; +#endif +#ifndef GL_KHR_parallel_shader_compile +#define GL_KHR_parallel_shader_compile 1 +GLAPI int GLAD_GL_KHR_parallel_shader_compile; +typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)(GLuint count); +GLAPI PFNGLMAXSHADERCOMPILERTHREADSKHRPROC glad_glMaxShaderCompilerThreadsKHR; +#define glMaxShaderCompilerThreadsKHR glad_glMaxShaderCompilerThreadsKHR +#endif +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +GLAPI int GLAD_GL_KHR_robust_buffer_access_behavior; +#endif +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +GLAPI int GLAD_GL_KHR_robustness; +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC)(void); +GLAPI PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus; +#define glGetGraphicsResetStatus glad_glGetGraphicsResetStatus +typedef void (APIENTRYP PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI PFNGLREADNPIXELSPROC glad_glReadnPixels; +#define glReadnPixels glad_glReadnPixels +typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv; +#define glGetnUniformfv glad_glGetnUniformfv +typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv; +#define glGetnUniformiv glad_glGetnUniformiv +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; +#define glGetnUniformuiv glad_glGetnUniformuiv +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC)(void); +GLAPI PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR; +#define glGetGraphicsResetStatusKHR glad_glGetGraphicsResetStatusKHR +typedef void (APIENTRYP PFNGLREADNPIXELSKHRPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR; +#define glReadnPixelsKHR glad_glReadnPixelsKHR +typedef void (APIENTRYP PFNGLGETNUNIFORMFVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR; +#define glGetnUniformfvKHR glad_glGetnUniformfvKHR +typedef void (APIENTRYP PFNGLGETNUNIFORMIVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR; +#define glGetnUniformivKHR glad_glGetnUniformivKHR +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR; +#define glGetnUniformuivKHR glad_glGetnUniformuivKHR +#endif +#ifndef GL_KHR_shader_subgroup +#define GL_KHR_shader_subgroup 1 +GLAPI int GLAD_GL_KHR_shader_subgroup; +#endif +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +GLAPI int GLAD_GL_KHR_texture_compression_astc_hdr; +#endif +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +GLAPI int GLAD_GL_KHR_texture_compression_astc_ldr; +#endif +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +GLAPI int GLAD_GL_KHR_texture_compression_astc_sliced_3d; +#endif +#ifndef GL_MESAX_texture_stack +#define GL_MESAX_texture_stack 1 +GLAPI int GLAD_GL_MESAX_texture_stack; +#endif +#ifndef GL_MESA_framebuffer_flip_y +#define GL_MESA_framebuffer_flip_y 1 +GLAPI int GLAD_GL_MESA_framebuffer_flip_y; +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLFRAMEBUFFERPARAMETERIMESAPROC glad_glFramebufferParameteriMESA; +#define glFramebufferParameteriMESA glad_glFramebufferParameteriMESA +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC glad_glGetFramebufferParameterivMESA; +#define glGetFramebufferParameterivMESA glad_glGetFramebufferParameterivMESA +#endif +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 +GLAPI int GLAD_GL_MESA_pack_invert; +#endif +#ifndef GL_MESA_program_binary_formats +#define GL_MESA_program_binary_formats 1 +GLAPI int GLAD_GL_MESA_program_binary_formats; +#endif +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 +GLAPI int GLAD_GL_MESA_resize_buffers; +typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC)(void); +GLAPI PFNGLRESIZEBUFFERSMESAPROC glad_glResizeBuffersMESA; +#define glResizeBuffersMESA glad_glResizeBuffersMESA +#endif +#ifndef GL_MESA_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +GLAPI int GLAD_GL_MESA_shader_integer_functions; +#endif +#ifndef GL_MESA_tile_raster_order +#define GL_MESA_tile_raster_order 1 +GLAPI int GLAD_GL_MESA_tile_raster_order; +#endif +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 +GLAPI int GLAD_GL_MESA_window_pos; +typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC)(GLdouble x, GLdouble y); +GLAPI PFNGLWINDOWPOS2DMESAPROC glad_glWindowPos2dMESA; +#define glWindowPos2dMESA glad_glWindowPos2dMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS2DVMESAPROC glad_glWindowPos2dvMESA; +#define glWindowPos2dvMESA glad_glWindowPos2dvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC)(GLfloat x, GLfloat y); +GLAPI PFNGLWINDOWPOS2FMESAPROC glad_glWindowPos2fMESA; +#define glWindowPos2fMESA glad_glWindowPos2fMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS2FVMESAPROC glad_glWindowPos2fvMESA; +#define glWindowPos2fvMESA glad_glWindowPos2fvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC)(GLint x, GLint y); +GLAPI PFNGLWINDOWPOS2IMESAPROC glad_glWindowPos2iMESA; +#define glWindowPos2iMESA glad_glWindowPos2iMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS2IVMESAPROC glad_glWindowPos2ivMESA; +#define glWindowPos2ivMESA glad_glWindowPos2ivMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC)(GLshort x, GLshort y); +GLAPI PFNGLWINDOWPOS2SMESAPROC glad_glWindowPos2sMESA; +#define glWindowPos2sMESA glad_glWindowPos2sMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS2SVMESAPROC glad_glWindowPos2svMESA; +#define glWindowPos2svMESA glad_glWindowPos2svMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLWINDOWPOS3DMESAPROC glad_glWindowPos3dMESA; +#define glWindowPos3dMESA glad_glWindowPos3dMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS3DVMESAPROC glad_glWindowPos3dvMESA; +#define glWindowPos3dvMESA glad_glWindowPos3dvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLWINDOWPOS3FMESAPROC glad_glWindowPos3fMESA; +#define glWindowPos3fMESA glad_glWindowPos3fMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS3FVMESAPROC glad_glWindowPos3fvMESA; +#define glWindowPos3fvMESA glad_glWindowPos3fvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC)(GLint x, GLint y, GLint z); +GLAPI PFNGLWINDOWPOS3IMESAPROC glad_glWindowPos3iMESA; +#define glWindowPos3iMESA glad_glWindowPos3iMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS3IVMESAPROC glad_glWindowPos3ivMESA; +#define glWindowPos3ivMESA glad_glWindowPos3ivMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC)(GLshort x, GLshort y, GLshort z); +GLAPI PFNGLWINDOWPOS3SMESAPROC glad_glWindowPos3sMESA; +#define glWindowPos3sMESA glad_glWindowPos3sMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS3SVMESAPROC glad_glWindowPos3svMESA; +#define glWindowPos3svMESA glad_glWindowPos3svMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLWINDOWPOS4DMESAPROC glad_glWindowPos4dMESA; +#define glWindowPos4dMESA glad_glWindowPos4dMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS4DVMESAPROC glad_glWindowPos4dvMESA; +#define glWindowPos4dvMESA glad_glWindowPos4dvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLWINDOWPOS4FMESAPROC glad_glWindowPos4fMESA; +#define glWindowPos4fMESA glad_glWindowPos4fMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS4FVMESAPROC glad_glWindowPos4fvMESA; +#define glWindowPos4fvMESA glad_glWindowPos4fvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC)(GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLWINDOWPOS4IMESAPROC glad_glWindowPos4iMESA; +#define glWindowPos4iMESA glad_glWindowPos4iMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS4IVMESAPROC glad_glWindowPos4ivMESA; +#define glWindowPos4ivMESA glad_glWindowPos4ivMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLWINDOWPOS4SMESAPROC glad_glWindowPos4sMESA; +#define glWindowPos4sMESA glad_glWindowPos4sMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS4SVMESAPROC glad_glWindowPos4svMESA; +#define glWindowPos4svMESA glad_glWindowPos4svMESA +#endif +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 +GLAPI int GLAD_GL_MESA_ycbcr_texture; +#endif +#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +GLAPI int GLAD_GL_NVX_blend_equation_advanced_multi_draw_buffers; +#endif +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 +GLAPI int GLAD_GL_NVX_conditional_render; +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC)(GLuint id); +GLAPI PFNGLBEGINCONDITIONALRENDERNVXPROC glad_glBeginConditionalRenderNVX; +#define glBeginConditionalRenderNVX glad_glBeginConditionalRenderNVX +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC)(void); +GLAPI PFNGLENDCONDITIONALRENDERNVXPROC glad_glEndConditionalRenderNVX; +#define glEndConditionalRenderNVX glad_glEndConditionalRenderNVX +#endif +#ifndef GL_NVX_gpu_memory_info +#define GL_NVX_gpu_memory_info 1 +GLAPI int GLAD_GL_NVX_gpu_memory_info; +#endif +#ifndef GL_NVX_gpu_multicast2 +#define GL_NVX_gpu_multicast2 1 +GLAPI int GLAD_GL_NVX_gpu_multicast2; +typedef void (APIENTRYP PFNGLUPLOADGPUMASKNVXPROC)(GLbitfield mask); +GLAPI PFNGLUPLOADGPUMASKNVXPROC glad_glUploadGpuMaskNVX; +#define glUploadGpuMaskNVX glad_glUploadGpuMaskNVX +typedef void (APIENTRYP PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)(GLuint gpu, GLuint first, GLsizei count, const GLfloat *v); +GLAPI PFNGLMULTICASTVIEWPORTARRAYVNVXPROC glad_glMulticastViewportArrayvNVX; +#define glMulticastViewportArrayvNVX glad_glMulticastViewportArrayvNVX +typedef void (APIENTRYP PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)(GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff); +GLAPI PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC glad_glMulticastViewportPositionWScaleNVX; +#define glMulticastViewportPositionWScaleNVX glad_glMulticastViewportPositionWScaleNVX +typedef void (APIENTRYP PFNGLMULTICASTSCISSORARRAYVNVXPROC)(GLuint gpu, GLuint first, GLsizei count, const GLint *v); +GLAPI PFNGLMULTICASTSCISSORARRAYVNVXPROC glad_glMulticastScissorArrayvNVX; +#define glMulticastScissorArrayvNVX glad_glMulticastScissorArrayvNVX +typedef GLuint (APIENTRYP PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)(GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +GLAPI PFNGLASYNCCOPYBUFFERSUBDATANVXPROC glad_glAsyncCopyBufferSubDataNVX; +#define glAsyncCopyBufferSubDataNVX glad_glAsyncCopyBufferSubDataNVX +typedef GLuint (APIENTRYP PFNGLASYNCCOPYIMAGESUBDATANVXPROC)(GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +GLAPI PFNGLASYNCCOPYIMAGESUBDATANVXPROC glad_glAsyncCopyImageSubDataNVX; +#define glAsyncCopyImageSubDataNVX glad_glAsyncCopyImageSubDataNVX +#endif +#ifndef GL_NVX_linked_gpu_multicast +#define GL_NVX_linked_gpu_multicast 1 +GLAPI int GLAD_GL_NVX_linked_gpu_multicast; +typedef void (APIENTRYP PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC glad_glLGPUNamedBufferSubDataNVX; +#define glLGPUNamedBufferSubDataNVX glad_glLGPUNamedBufferSubDataNVX +typedef void (APIENTRYP PFNGLLGPUCOPYIMAGESUBDATANVXPROC)(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLLGPUCOPYIMAGESUBDATANVXPROC glad_glLGPUCopyImageSubDataNVX; +#define glLGPUCopyImageSubDataNVX glad_glLGPUCopyImageSubDataNVX +typedef void (APIENTRYP PFNGLLGPUINTERLOCKNVXPROC)(void); +GLAPI PFNGLLGPUINTERLOCKNVXPROC glad_glLGPUInterlockNVX; +#define glLGPUInterlockNVX glad_glLGPUInterlockNVX +#endif +#ifndef GL_NVX_progress_fence +#define GL_NVX_progress_fence 1 +GLAPI int GLAD_GL_NVX_progress_fence; +typedef GLuint (APIENTRYP PFNGLCREATEPROGRESSFENCENVXPROC)(void); +GLAPI PFNGLCREATEPROGRESSFENCENVXPROC glad_glCreateProgressFenceNVX; +#define glCreateProgressFenceNVX glad_glCreateProgressFenceNVX +typedef void (APIENTRYP PFNGLSIGNALSEMAPHOREUI64NVXPROC)(GLuint signalGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +GLAPI PFNGLSIGNALSEMAPHOREUI64NVXPROC glad_glSignalSemaphoreui64NVX; +#define glSignalSemaphoreui64NVX glad_glSignalSemaphoreui64NVX +typedef void (APIENTRYP PFNGLWAITSEMAPHOREUI64NVXPROC)(GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +GLAPI PFNGLWAITSEMAPHOREUI64NVXPROC glad_glWaitSemaphoreui64NVX; +#define glWaitSemaphoreui64NVX glad_glWaitSemaphoreui64NVX +typedef void (APIENTRYP PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)(GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +GLAPI PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC glad_glClientWaitSemaphoreui64NVX; +#define glClientWaitSemaphoreui64NVX glad_glClientWaitSemaphoreui64NVX +#endif +#ifndef GL_NV_alpha_to_coverage_dither_control +#define GL_NV_alpha_to_coverage_dither_control 1 +GLAPI int GLAD_GL_NV_alpha_to_coverage_dither_control; +typedef void (APIENTRYP PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)(GLenum mode); +GLAPI PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC glad_glAlphaToCoverageDitherControlNV; +#define glAlphaToCoverageDitherControlNV glad_glAlphaToCoverageDitherControlNV +#endif +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 +GLAPI int GLAD_GL_NV_bindless_multi_draw_indirect; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC glad_glMultiDrawArraysIndirectBindlessNV; +#define glMultiDrawArraysIndirectBindlessNV glad_glMultiDrawArraysIndirectBindlessNV +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC glad_glMultiDrawElementsIndirectBindlessNV; +#define glMultiDrawElementsIndirectBindlessNV glad_glMultiDrawElementsIndirectBindlessNV +#endif +#ifndef GL_NV_bindless_multi_draw_indirect_count +#define GL_NV_bindless_multi_draw_indirect_count 1 +GLAPI int GLAD_GL_NV_bindless_multi_draw_indirect_count; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawArraysIndirectBindlessCountNV; +#define glMultiDrawArraysIndirectBindlessCountNV glad_glMultiDrawArraysIndirectBindlessCountNV +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawElementsIndirectBindlessCountNV; +#define glMultiDrawElementsIndirectBindlessCountNV glad_glMultiDrawElementsIndirectBindlessCountNV +#endif +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 +GLAPI int GLAD_GL_NV_bindless_texture; +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC)(GLuint texture); +GLAPI PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV; +#define glGetTextureHandleNV glad_glGetTextureHandleNV +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC)(GLuint texture, GLuint sampler); +GLAPI PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV; +#define glGetTextureSamplerHandleNV glad_glGetTextureSamplerHandleNV +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV; +#define glMakeTextureHandleResidentNV glad_glMakeTextureHandleResidentNV +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV; +#define glMakeTextureHandleNonResidentNV glad_glMakeTextureHandleNonResidentNV +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV; +#define glGetImageHandleNV glad_glGetImageHandleNV +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle, GLenum access); +GLAPI PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV; +#define glMakeImageHandleResidentNV glad_glMakeImageHandleResidentNV +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV; +#define glMakeImageHandleNonResidentNV glad_glMakeImageHandleNonResidentNV +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC)(GLint location, GLuint64 value); +GLAPI PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV; +#define glUniformHandleui64NV glad_glUniformHandleui64NV +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV; +#define glUniformHandleui64vNV glad_glUniformHandleui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)(GLuint program, GLint location, GLuint64 value); +GLAPI PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV; +#define glProgramUniformHandleui64NV glad_glProgramUniformHandleui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV; +#define glProgramUniformHandleui64vNV glad_glProgramUniformHandleui64vNV +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV; +#define glIsTextureHandleResidentNV glad_glIsTextureHandleResidentNV +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV; +#define glIsImageHandleResidentNV glad_glIsImageHandleResidentNV +#endif +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +GLAPI int GLAD_GL_NV_blend_equation_advanced; +typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC)(GLenum pname, GLint value); +GLAPI PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV; +#define glBlendParameteriNV glad_glBlendParameteriNV +typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC)(void); +GLAPI PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV; +#define glBlendBarrierNV glad_glBlendBarrierNV +#endif +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +GLAPI int GLAD_GL_NV_blend_equation_advanced_coherent; +#endif +#ifndef GL_NV_blend_minmax_factor +#define GL_NV_blend_minmax_factor 1 +GLAPI int GLAD_GL_NV_blend_minmax_factor; +#endif +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +GLAPI int GLAD_GL_NV_blend_square; +#endif +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +GLAPI int GLAD_GL_NV_clip_space_w_scaling; +typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC)(GLuint index, GLfloat xcoeff, GLfloat ycoeff); +GLAPI PFNGLVIEWPORTPOSITIONWSCALENVPROC glad_glViewportPositionWScaleNV; +#define glViewportPositionWScaleNV glad_glViewportPositionWScaleNV +#endif +#ifndef GL_NV_command_list +#define GL_NV_command_list 1 +GLAPI int GLAD_GL_NV_command_list; +typedef void (APIENTRYP PFNGLCREATESTATESNVPROC)(GLsizei n, GLuint *states); +GLAPI PFNGLCREATESTATESNVPROC glad_glCreateStatesNV; +#define glCreateStatesNV glad_glCreateStatesNV +typedef void (APIENTRYP PFNGLDELETESTATESNVPROC)(GLsizei n, const GLuint *states); +GLAPI PFNGLDELETESTATESNVPROC glad_glDeleteStatesNV; +#define glDeleteStatesNV glad_glDeleteStatesNV +typedef GLboolean (APIENTRYP PFNGLISSTATENVPROC)(GLuint state); +GLAPI PFNGLISSTATENVPROC glad_glIsStateNV; +#define glIsStateNV glad_glIsStateNV +typedef void (APIENTRYP PFNGLSTATECAPTURENVPROC)(GLuint state, GLenum mode); +GLAPI PFNGLSTATECAPTURENVPROC glad_glStateCaptureNV; +#define glStateCaptureNV glad_glStateCaptureNV +typedef GLuint (APIENTRYP PFNGLGETCOMMANDHEADERNVPROC)(GLenum tokenID, GLuint size); +GLAPI PFNGLGETCOMMANDHEADERNVPROC glad_glGetCommandHeaderNV; +#define glGetCommandHeaderNV glad_glGetCommandHeaderNV +typedef GLushort (APIENTRYP PFNGLGETSTAGEINDEXNVPROC)(GLenum shadertype); +GLAPI PFNGLGETSTAGEINDEXNVPROC glad_glGetStageIndexNV; +#define glGetStageIndexNV glad_glGetStageIndexNV +typedef void (APIENTRYP PFNGLDRAWCOMMANDSNVPROC)(GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); +GLAPI PFNGLDRAWCOMMANDSNVPROC glad_glDrawCommandsNV; +#define glDrawCommandsNV glad_glDrawCommandsNV +typedef void (APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC)(GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); +GLAPI PFNGLDRAWCOMMANDSADDRESSNVPROC glad_glDrawCommandsAddressNV; +#define glDrawCommandsAddressNV glad_glDrawCommandsAddressNV +typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC)(GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI PFNGLDRAWCOMMANDSSTATESNVPROC glad_glDrawCommandsStatesNV; +#define glDrawCommandsStatesNV glad_glDrawCommandsStatesNV +typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)(const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC glad_glDrawCommandsStatesAddressNV; +#define glDrawCommandsStatesAddressNV glad_glDrawCommandsStatesAddressNV +typedef void (APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC)(GLsizei n, GLuint *lists); +GLAPI PFNGLCREATECOMMANDLISTSNVPROC glad_glCreateCommandListsNV; +#define glCreateCommandListsNV glad_glCreateCommandListsNV +typedef void (APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC)(GLsizei n, const GLuint *lists); +GLAPI PFNGLDELETECOMMANDLISTSNVPROC glad_glDeleteCommandListsNV; +#define glDeleteCommandListsNV glad_glDeleteCommandListsNV +typedef GLboolean (APIENTRYP PFNGLISCOMMANDLISTNVPROC)(GLuint list); +GLAPI PFNGLISCOMMANDLISTNVPROC glad_glIsCommandListNV; +#define glIsCommandListNV glad_glIsCommandListNV +typedef void (APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)(GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC glad_glListDrawCommandsStatesClientNV; +#define glListDrawCommandsStatesClientNV glad_glListDrawCommandsStatesClientNV +typedef void (APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC)(GLuint list, GLuint segments); +GLAPI PFNGLCOMMANDLISTSEGMENTSNVPROC glad_glCommandListSegmentsNV; +#define glCommandListSegmentsNV glad_glCommandListSegmentsNV +typedef void (APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC)(GLuint list); +GLAPI PFNGLCOMPILECOMMANDLISTNVPROC glad_glCompileCommandListNV; +#define glCompileCommandListNV glad_glCompileCommandListNV +typedef void (APIENTRYP PFNGLCALLCOMMANDLISTNVPROC)(GLuint list); +GLAPI PFNGLCALLCOMMANDLISTNVPROC glad_glCallCommandListNV; +#define glCallCommandListNV glad_glCallCommandListNV +#endif +#ifndef GL_NV_compute_program5 +#define GL_NV_compute_program5 1 +GLAPI int GLAD_GL_NV_compute_program5; +#endif +#ifndef GL_NV_compute_shader_derivatives +#define GL_NV_compute_shader_derivatives 1 +GLAPI int GLAD_GL_NV_compute_shader_derivatives; +#endif +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +GLAPI int GLAD_GL_NV_conditional_render; +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode); +GLAPI PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV; +#define glBeginConditionalRenderNV glad_glBeginConditionalRenderNV +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC)(void); +GLAPI PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV; +#define glEndConditionalRenderNV glad_glEndConditionalRenderNV +#endif +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +GLAPI int GLAD_GL_NV_conservative_raster; +typedef void (APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC)(GLuint xbits, GLuint ybits); +GLAPI PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV; +#define glSubpixelPrecisionBiasNV glad_glSubpixelPrecisionBiasNV +#endif +#ifndef GL_NV_conservative_raster_dilate +#define GL_NV_conservative_raster_dilate 1 +GLAPI int GLAD_GL_NV_conservative_raster_dilate; +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)(GLenum pname, GLfloat value); +GLAPI PFNGLCONSERVATIVERASTERPARAMETERFNVPROC glad_glConservativeRasterParameterfNV; +#define glConservativeRasterParameterfNV glad_glConservativeRasterParameterfNV +#endif +#ifndef GL_NV_conservative_raster_pre_snap +#define GL_NV_conservative_raster_pre_snap 1 +GLAPI int GLAD_GL_NV_conservative_raster_pre_snap; +#endif +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +GLAPI int GLAD_GL_NV_conservative_raster_pre_snap_triangles; +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC)(GLenum pname, GLint param); +GLAPI PFNGLCONSERVATIVERASTERPARAMETERINVPROC glad_glConservativeRasterParameteriNV; +#define glConservativeRasterParameteriNV glad_glConservativeRasterParameteriNV +#endif +#ifndef GL_NV_conservative_raster_underestimation +#define GL_NV_conservative_raster_underestimation 1 +GLAPI int GLAD_GL_NV_conservative_raster_underestimation; +#endif +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +GLAPI int GLAD_GL_NV_copy_depth_to_color; +#endif +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 +GLAPI int GLAD_GL_NV_copy_image; +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLCOPYIMAGESUBDATANVPROC glad_glCopyImageSubDataNV; +#define glCopyImageSubDataNV glad_glCopyImageSubDataNV +#endif +#ifndef GL_NV_deep_texture3D +#define GL_NV_deep_texture3D 1 +GLAPI int GLAD_GL_NV_deep_texture3D; +#endif +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +GLAPI int GLAD_GL_NV_depth_buffer_float; +typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar); +GLAPI PFNGLDEPTHRANGEDNVPROC glad_glDepthRangedNV; +#define glDepthRangedNV glad_glDepthRangedNV +typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC)(GLdouble depth); +GLAPI PFNGLCLEARDEPTHDNVPROC glad_glClearDepthdNV; +#define glClearDepthdNV glad_glClearDepthdNV +typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax); +GLAPI PFNGLDEPTHBOUNDSDNVPROC glad_glDepthBoundsdNV; +#define glDepthBoundsdNV glad_glDepthBoundsdNV +#endif +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +GLAPI int GLAD_GL_NV_depth_clamp; +#endif +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 +GLAPI int GLAD_GL_NV_draw_texture; +typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC)(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GLAPI PFNGLDRAWTEXTURENVPROC glad_glDrawTextureNV; +#define glDrawTextureNV glad_glDrawTextureNV +#endif +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +GLAPI int GLAD_GL_NV_draw_vulkan_image; +typedef void (APIENTRYP PFNGLDRAWVKIMAGENVPROC)(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GLAPI PFNGLDRAWVKIMAGENVPROC glad_glDrawVkImageNV; +#define glDrawVkImageNV glad_glDrawVkImageNV +typedef GLVULKANPROCNV (APIENTRYP PFNGLGETVKPROCADDRNVPROC)(const GLchar *name); +GLAPI PFNGLGETVKPROCADDRNVPROC glad_glGetVkProcAddrNV; +#define glGetVkProcAddrNV glad_glGetVkProcAddrNV +typedef void (APIENTRYP PFNGLWAITVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); +GLAPI PFNGLWAITVKSEMAPHORENVPROC glad_glWaitVkSemaphoreNV; +#define glWaitVkSemaphoreNV glad_glWaitVkSemaphoreNV +typedef void (APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); +GLAPI PFNGLSIGNALVKSEMAPHORENVPROC glad_glSignalVkSemaphoreNV; +#define glSignalVkSemaphoreNV glad_glSignalVkSemaphoreNV +typedef void (APIENTRYP PFNGLSIGNALVKFENCENVPROC)(GLuint64 vkFence); +GLAPI PFNGLSIGNALVKFENCENVPROC glad_glSignalVkFenceNV; +#define glSignalVkFenceNV glad_glSignalVkFenceNV +#endif +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +GLAPI int GLAD_GL_NV_evaluators; +typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +GLAPI PFNGLMAPCONTROLPOINTSNVPROC glad_glMapControlPointsNV; +#define glMapControlPointsNV glad_glMapControlPointsNV +typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLMAPPARAMETERIVNVPROC glad_glMapParameterivNV; +#define glMapParameterivNV glad_glMapParameterivNV +typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLMAPPARAMETERFVNVPROC glad_glMapParameterfvNV; +#define glMapParameterfvNV glad_glMapParameterfvNV +typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +GLAPI PFNGLGETMAPCONTROLPOINTSNVPROC glad_glGetMapControlPointsNV; +#define glGetMapControlPointsNV glad_glGetMapControlPointsNV +typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMAPPARAMETERIVNVPROC glad_glGetMapParameterivNV; +#define glGetMapParameterivNV glad_glGetMapParameterivNV +typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMAPPARAMETERFVNVPROC glad_glGetMapParameterfvNV; +#define glGetMapParameterfvNV glad_glGetMapParameterfvNV +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETMAPATTRIBPARAMETERIVNVPROC glad_glGetMapAttribParameterivNV; +#define glGetMapAttribParameterivNV glad_glGetMapAttribParameterivNV +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMAPATTRIBPARAMETERFVNVPROC glad_glGetMapAttribParameterfvNV; +#define glGetMapAttribParameterfvNV glad_glGetMapAttribParameterfvNV +typedef void (APIENTRYP PFNGLEVALMAPSNVPROC)(GLenum target, GLenum mode); +GLAPI PFNGLEVALMAPSNVPROC glad_glEvalMapsNV; +#define glEvalMapsNV glad_glEvalMapsNV +#endif +#ifndef GL_NV_explicit_multisample +#define GL_NV_explicit_multisample 1 +GLAPI int GLAD_GL_NV_explicit_multisample; +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC)(GLenum pname, GLuint index, GLfloat *val); +GLAPI PFNGLGETMULTISAMPLEFVNVPROC glad_glGetMultisamplefvNV; +#define glGetMultisamplefvNV glad_glGetMultisamplefvNV +typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC)(GLuint index, GLbitfield mask); +GLAPI PFNGLSAMPLEMASKINDEXEDNVPROC glad_glSampleMaskIndexedNV; +#define glSampleMaskIndexedNV glad_glSampleMaskIndexedNV +typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC)(GLenum target, GLuint renderbuffer); +GLAPI PFNGLTEXRENDERBUFFERNVPROC glad_glTexRenderbufferNV; +#define glTexRenderbufferNV glad_glTexRenderbufferNV +#endif +#ifndef GL_NV_fence +#define GL_NV_fence 1 +GLAPI int GLAD_GL_NV_fence; +typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint *fences); +GLAPI PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV; +#define glDeleteFencesNV glad_glDeleteFencesNV +typedef void (APIENTRYP PFNGLGENFENCESNVPROC)(GLsizei n, GLuint *fences); +GLAPI PFNGLGENFENCESNVPROC glad_glGenFencesNV; +#define glGenFencesNV glad_glGenFencesNV +typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC)(GLuint fence); +GLAPI PFNGLISFENCENVPROC glad_glIsFenceNV; +#define glIsFenceNV glad_glIsFenceNV +typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC)(GLuint fence); +GLAPI PFNGLTESTFENCENVPROC glad_glTestFenceNV; +#define glTestFenceNV glad_glTestFenceNV +typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint *params); +GLAPI PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV; +#define glGetFenceivNV glad_glGetFenceivNV +typedef void (APIENTRYP PFNGLFINISHFENCENVPROC)(GLuint fence); +GLAPI PFNGLFINISHFENCENVPROC glad_glFinishFenceNV; +#define glFinishFenceNV glad_glFinishFenceNV +typedef void (APIENTRYP PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); +GLAPI PFNGLSETFENCENVPROC glad_glSetFenceNV; +#define glSetFenceNV glad_glSetFenceNV +#endif +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +GLAPI int GLAD_GL_NV_fill_rectangle; +#endif +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +GLAPI int GLAD_GL_NV_float_buffer; +#endif +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +GLAPI int GLAD_GL_NV_fog_distance; +#endif +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +GLAPI int GLAD_GL_NV_fragment_coverage_to_color; +typedef void (APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC)(GLuint color); +GLAPI PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV; +#define glFragmentCoverageColorNV glad_glFragmentCoverageColorNV +#endif +#ifndef GL_NV_fragment_program +#define GL_NV_fragment_program 1 +GLAPI int GLAD_GL_NV_fragment_program; +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLPROGRAMNAMEDPARAMETER4FNVPROC glad_glProgramNamedParameter4fNV; +#define glProgramNamedParameter4fNV glad_glProgramNamedParameter4fNV +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +GLAPI PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC glad_glProgramNamedParameter4fvNV; +#define glProgramNamedParameter4fvNV glad_glProgramNamedParameter4fvNV +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMNAMEDPARAMETER4DNVPROC glad_glProgramNamedParameter4dNV; +#define glProgramNamedParameter4dNV glad_glProgramNamedParameter4dNV +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); +GLAPI PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC glad_glProgramNamedParameter4dvNV; +#define glProgramNamedParameter4dvNV glad_glProgramNamedParameter4dvNV +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); +GLAPI PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glad_glGetProgramNamedParameterfvNV; +#define glGetProgramNamedParameterfvNV glad_glGetProgramNamedParameterfvNV +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +GLAPI PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glad_glGetProgramNamedParameterdvNV; +#define glGetProgramNamedParameterdvNV glad_glGetProgramNamedParameterdvNV +#endif +#ifndef GL_NV_fragment_program2 +#define GL_NV_fragment_program2 1 +GLAPI int GLAD_GL_NV_fragment_program2; +#endif +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 +GLAPI int GLAD_GL_NV_fragment_program4; +#endif +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 +GLAPI int GLAD_GL_NV_fragment_program_option; +#endif +#ifndef GL_NV_fragment_shader_barycentric +#define GL_NV_fragment_shader_barycentric 1 +GLAPI int GLAD_GL_NV_fragment_shader_barycentric; +#endif +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +GLAPI int GLAD_GL_NV_fragment_shader_interlock; +#endif +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +GLAPI int GLAD_GL_NV_framebuffer_mixed_samples; +typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC)(GLsizei n, const GLfloat *v); +GLAPI PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV; +#define glCoverageModulationTableNV glad_glCoverageModulationTableNV +typedef void (APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC)(GLsizei bufSize, GLfloat *v); +GLAPI PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV; +#define glGetCoverageModulationTableNV glad_glGetCoverageModulationTableNV +typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC)(GLenum components); +GLAPI PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV; +#define glCoverageModulationNV glad_glCoverageModulationNV +#endif +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +GLAPI int GLAD_GL_NV_framebuffer_multisample_coverage; +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC glad_glRenderbufferStorageMultisampleCoverageNV; +#define glRenderbufferStorageMultisampleCoverageNV glad_glRenderbufferStorageMultisampleCoverageNV +#endif +#ifndef GL_NV_geometry_program4 +#define GL_NV_geometry_program4 1 +GLAPI int GLAD_GL_NV_geometry_program4; +typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC)(GLenum target, GLint limit); +GLAPI PFNGLPROGRAMVERTEXLIMITNVPROC glad_glProgramVertexLimitNV; +#define glProgramVertexLimitNV glad_glProgramVertexLimitNV +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT; +#define glFramebufferTextureEXT glad_glFramebufferTextureEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC glad_glFramebufferTextureFaceEXT; +#define glFramebufferTextureFaceEXT glad_glFramebufferTextureFaceEXT +#endif +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 +GLAPI int GLAD_GL_NV_geometry_shader4; +#endif +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +GLAPI int GLAD_GL_NV_geometry_shader_passthrough; +#endif +#ifndef GL_NV_gpu_multicast +#define GL_NV_gpu_multicast 1 +GLAPI int GLAD_GL_NV_gpu_multicast; +typedef void (APIENTRYP PFNGLRENDERGPUMASKNVPROC)(GLbitfield mask); +GLAPI PFNGLRENDERGPUMASKNVPROC glad_glRenderGpuMaskNV; +#define glRenderGpuMaskNV glad_glRenderGpuMaskNV +typedef void (APIENTRYP PFNGLMULTICASTBUFFERSUBDATANVPROC)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLMULTICASTBUFFERSUBDATANVPROC glad_glMulticastBufferSubDataNV; +#define glMulticastBufferSubDataNV glad_glMulticastBufferSubDataNV +typedef void (APIENTRYP PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC glad_glMulticastCopyBufferSubDataNV; +#define glMulticastCopyBufferSubDataNV glad_glMulticastCopyBufferSubDataNV +typedef void (APIENTRYP PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +GLAPI PFNGLMULTICASTCOPYIMAGESUBDATANVPROC glad_glMulticastCopyImageSubDataNV; +#define glMulticastCopyImageSubDataNV glad_glMulticastCopyImageSubDataNV +typedef void (APIENTRYP PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLMULTICASTBLITFRAMEBUFFERNVPROC glad_glMulticastBlitFramebufferNV; +#define glMulticastBlitFramebufferNV glad_glMulticastBlitFramebufferNV +typedef void (APIENTRYP PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glMulticastFramebufferSampleLocationsfvNV; +#define glMulticastFramebufferSampleLocationsfvNV glad_glMulticastFramebufferSampleLocationsfvNV +typedef void (APIENTRYP PFNGLMULTICASTBARRIERNVPROC)(void); +GLAPI PFNGLMULTICASTBARRIERNVPROC glad_glMulticastBarrierNV; +#define glMulticastBarrierNV glad_glMulticastBarrierNV +typedef void (APIENTRYP PFNGLMULTICASTWAITSYNCNVPROC)(GLuint signalGpu, GLbitfield waitGpuMask); +GLAPI PFNGLMULTICASTWAITSYNCNVPROC glad_glMulticastWaitSyncNV; +#define glMulticastWaitSyncNV glad_glMulticastWaitSyncNV +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLMULTICASTGETQUERYOBJECTIVNVPROC glad_glMulticastGetQueryObjectivNV; +#define glMulticastGetQueryObjectivNV glad_glMulticastGetQueryObjectivNV +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC glad_glMulticastGetQueryObjectuivNV; +#define glMulticastGetQueryObjectuivNV glad_glMulticastGetQueryObjectuivNV +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLint64 *params); +GLAPI PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC glad_glMulticastGetQueryObjecti64vNV; +#define glMulticastGetQueryObjecti64vNV glad_glMulticastGetQueryObjecti64vNV +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); +GLAPI PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC glad_glMulticastGetQueryObjectui64vNV; +#define glMulticastGetQueryObjectui64vNV glad_glMulticastGetQueryObjectui64vNV +#endif +#ifndef GL_NV_gpu_program4 +#define GL_NV_gpu_program4 1 +GLAPI int GLAD_GL_NV_gpu_program4; +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLPROGRAMLOCALPARAMETERI4INVPROC glad_glProgramLocalParameterI4iNV; +#define glProgramLocalParameterI4iNV glad_glProgramLocalParameterI4iNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)(GLenum target, GLuint index, const GLint *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC glad_glProgramLocalParameterI4ivNV; +#define glProgramLocalParameterI4ivNV glad_glProgramLocalParameterI4ivNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC glad_glProgramLocalParametersI4ivNV; +#define glProgramLocalParametersI4ivNV glad_glProgramLocalParametersI4ivNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLPROGRAMLOCALPARAMETERI4UINVPROC glad_glProgramLocalParameterI4uiNV; +#define glProgramLocalParameterI4uiNV glad_glProgramLocalParameterI4uiNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, const GLuint *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC glad_glProgramLocalParameterI4uivNV; +#define glProgramLocalParameterI4uivNV glad_glProgramLocalParameterI4uivNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC glad_glProgramLocalParametersI4uivNV; +#define glProgramLocalParametersI4uivNV glad_glProgramLocalParametersI4uivNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLPROGRAMENVPARAMETERI4INVPROC glad_glProgramEnvParameterI4iNV; +#define glProgramEnvParameterI4iNV glad_glProgramEnvParameterI4iNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC)(GLenum target, GLuint index, const GLint *params); +GLAPI PFNGLPROGRAMENVPARAMETERI4IVNVPROC glad_glProgramEnvParameterI4ivNV; +#define glProgramEnvParameterI4ivNV glad_glProgramEnvParameterI4ivNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI PFNGLPROGRAMENVPARAMETERSI4IVNVPROC glad_glProgramEnvParametersI4ivNV; +#define glProgramEnvParametersI4ivNV glad_glProgramEnvParametersI4ivNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLPROGRAMENVPARAMETERI4UINVPROC glad_glProgramEnvParameterI4uiNV; +#define glProgramEnvParameterI4uiNV glad_glProgramEnvParameterI4uiNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, const GLuint *params); +GLAPI PFNGLPROGRAMENVPARAMETERI4UIVNVPROC glad_glProgramEnvParameterI4uivNV; +#define glProgramEnvParameterI4uivNV glad_glProgramEnvParameterI4uivNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC glad_glProgramEnvParametersI4uivNV; +#define glProgramEnvParametersI4uivNV glad_glProgramEnvParametersI4uivNV +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)(GLenum target, GLuint index, GLint *params); +GLAPI PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC glad_glGetProgramLocalParameterIivNV; +#define glGetProgramLocalParameterIivNV glad_glGetProgramLocalParameterIivNV +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)(GLenum target, GLuint index, GLuint *params); +GLAPI PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC glad_glGetProgramLocalParameterIuivNV; +#define glGetProgramLocalParameterIuivNV glad_glGetProgramLocalParameterIuivNV +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)(GLenum target, GLuint index, GLint *params); +GLAPI PFNGLGETPROGRAMENVPARAMETERIIVNVPROC glad_glGetProgramEnvParameterIivNV; +#define glGetProgramEnvParameterIivNV glad_glGetProgramEnvParameterIivNV +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)(GLenum target, GLuint index, GLuint *params); +GLAPI PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC glad_glGetProgramEnvParameterIuivNV; +#define glGetProgramEnvParameterIuivNV glad_glGetProgramEnvParameterIuivNV +#endif +#ifndef GL_NV_gpu_program5 +#define GL_NV_gpu_program5 1 +GLAPI int GLAD_GL_NV_gpu_program5; +typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)(GLenum target, GLsizei count, const GLuint *params); +GLAPI PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC glad_glProgramSubroutineParametersuivNV; +#define glProgramSubroutineParametersuivNV glad_glProgramSubroutineParametersuivNV +typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)(GLenum target, GLuint index, GLuint *param); +GLAPI PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC glad_glGetProgramSubroutineParameteruivNV; +#define glGetProgramSubroutineParameteruivNV glad_glGetProgramSubroutineParameteruivNV +#endif +#ifndef GL_NV_gpu_program5_mem_extended +#define GL_NV_gpu_program5_mem_extended 1 +GLAPI int GLAD_GL_NV_gpu_program5_mem_extended; +#endif +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +GLAPI int GLAD_GL_NV_gpu_shader5; +#endif +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 +GLAPI int GLAD_GL_NV_half_float; +typedef void (APIENTRYP PFNGLVERTEX2HNVPROC)(GLhalfNV x, GLhalfNV y); +GLAPI PFNGLVERTEX2HNVPROC glad_glVertex2hNV; +#define glVertex2hNV glad_glVertex2hNV +typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLVERTEX2HVNVPROC glad_glVertex2hvNV; +#define glVertex2hvNV glad_glVertex2hvNV +typedef void (APIENTRYP PFNGLVERTEX3HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI PFNGLVERTEX3HNVPROC glad_glVertex3hNV; +#define glVertex3hNV glad_glVertex3hNV +typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLVERTEX3HVNVPROC glad_glVertex3hvNV; +#define glVertex3hvNV glad_glVertex3hvNV +typedef void (APIENTRYP PFNGLVERTEX4HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI PFNGLVERTEX4HNVPROC glad_glVertex4hNV; +#define glVertex4hNV glad_glVertex4hNV +typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLVERTEX4HVNVPROC glad_glVertex4hvNV; +#define glVertex4hvNV glad_glVertex4hvNV +typedef void (APIENTRYP PFNGLNORMAL3HNVPROC)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +GLAPI PFNGLNORMAL3HNVPROC glad_glNormal3hNV; +#define glNormal3hNV glad_glNormal3hNV +typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLNORMAL3HVNVPROC glad_glNormal3hvNV; +#define glNormal3hvNV glad_glNormal3hvNV +typedef void (APIENTRYP PFNGLCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI PFNGLCOLOR3HNVPROC glad_glColor3hNV; +#define glColor3hNV glad_glColor3hNV +typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLCOLOR3HVNVPROC glad_glColor3hvNV; +#define glColor3hvNV glad_glColor3hvNV +typedef void (APIENTRYP PFNGLCOLOR4HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +GLAPI PFNGLCOLOR4HNVPROC glad_glColor4hNV; +#define glColor4hNV glad_glColor4hNV +typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLCOLOR4HVNVPROC glad_glColor4hvNV; +#define glColor4hvNV glad_glColor4hvNV +typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC)(GLhalfNV s); +GLAPI PFNGLTEXCOORD1HNVPROC glad_glTexCoord1hNV; +#define glTexCoord1hNV glad_glTexCoord1hNV +typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLTEXCOORD1HVNVPROC glad_glTexCoord1hvNV; +#define glTexCoord1hvNV glad_glTexCoord1hvNV +typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC)(GLhalfNV s, GLhalfNV t); +GLAPI PFNGLTEXCOORD2HNVPROC glad_glTexCoord2hNV; +#define glTexCoord2hNV glad_glTexCoord2hNV +typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLTEXCOORD2HVNVPROC glad_glTexCoord2hvNV; +#define glTexCoord2hvNV glad_glTexCoord2hvNV +typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI PFNGLTEXCOORD3HNVPROC glad_glTexCoord3hNV; +#define glTexCoord3hNV glad_glTexCoord3hNV +typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLTEXCOORD3HVNVPROC glad_glTexCoord3hvNV; +#define glTexCoord3hvNV glad_glTexCoord3hvNV +typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI PFNGLTEXCOORD4HNVPROC glad_glTexCoord4hNV; +#define glTexCoord4hNV glad_glTexCoord4hNV +typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLTEXCOORD4HVNVPROC glad_glTexCoord4hvNV; +#define glTexCoord4hvNV glad_glTexCoord4hvNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC)(GLenum target, GLhalfNV s); +GLAPI PFNGLMULTITEXCOORD1HNVPROC glad_glMultiTexCoord1hNV; +#define glMultiTexCoord1hNV glad_glMultiTexCoord1hNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC)(GLenum target, const GLhalfNV *v); +GLAPI PFNGLMULTITEXCOORD1HVNVPROC glad_glMultiTexCoord1hvNV; +#define glMultiTexCoord1hvNV glad_glMultiTexCoord1hvNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t); +GLAPI PFNGLMULTITEXCOORD2HNVPROC glad_glMultiTexCoord2hNV; +#define glMultiTexCoord2hNV glad_glMultiTexCoord2hNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC)(GLenum target, const GLhalfNV *v); +GLAPI PFNGLMULTITEXCOORD2HVNVPROC glad_glMultiTexCoord2hvNV; +#define glMultiTexCoord2hvNV glad_glMultiTexCoord2hvNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI PFNGLMULTITEXCOORD3HNVPROC glad_glMultiTexCoord3hNV; +#define glMultiTexCoord3hNV glad_glMultiTexCoord3hNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC)(GLenum target, const GLhalfNV *v); +GLAPI PFNGLMULTITEXCOORD3HVNVPROC glad_glMultiTexCoord3hvNV; +#define glMultiTexCoord3hvNV glad_glMultiTexCoord3hvNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI PFNGLMULTITEXCOORD4HNVPROC glad_glMultiTexCoord4hNV; +#define glMultiTexCoord4hNV glad_glMultiTexCoord4hNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC)(GLenum target, const GLhalfNV *v); +GLAPI PFNGLMULTITEXCOORD4HVNVPROC glad_glMultiTexCoord4hvNV; +#define glMultiTexCoord4hvNV glad_glMultiTexCoord4hvNV +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC)(GLhalfNV fog); +GLAPI PFNGLFOGCOORDHNVPROC glad_glFogCoordhNV; +#define glFogCoordhNV glad_glFogCoordhNV +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC)(const GLhalfNV *fog); +GLAPI PFNGLFOGCOORDHVNVPROC glad_glFogCoordhvNV; +#define glFogCoordhvNV glad_glFogCoordhvNV +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI PFNGLSECONDARYCOLOR3HNVPROC glad_glSecondaryColor3hNV; +#define glSecondaryColor3hNV glad_glSecondaryColor3hNV +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLSECONDARYCOLOR3HVNVPROC glad_glSecondaryColor3hvNV; +#define glSecondaryColor3hvNV glad_glSecondaryColor3hvNV +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC)(GLhalfNV weight); +GLAPI PFNGLVERTEXWEIGHTHNVPROC glad_glVertexWeighthNV; +#define glVertexWeighthNV glad_glVertexWeighthNV +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC)(const GLhalfNV *weight); +GLAPI PFNGLVERTEXWEIGHTHVNVPROC glad_glVertexWeighthvNV; +#define glVertexWeighthvNV glad_glVertexWeighthvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC)(GLuint index, GLhalfNV x); +GLAPI PFNGLVERTEXATTRIB1HNVPROC glad_glVertexAttrib1hNV; +#define glVertexAttrib1hNV glad_glVertexAttrib1hNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC)(GLuint index, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIB1HVNVPROC glad_glVertexAttrib1hvNV; +#define glVertexAttrib1hvNV glad_glVertexAttrib1hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y); +GLAPI PFNGLVERTEXATTRIB2HNVPROC glad_glVertexAttrib2hNV; +#define glVertexAttrib2hNV glad_glVertexAttrib2hNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC)(GLuint index, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIB2HVNVPROC glad_glVertexAttrib2hvNV; +#define glVertexAttrib2hvNV glad_glVertexAttrib2hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI PFNGLVERTEXATTRIB3HNVPROC glad_glVertexAttrib3hNV; +#define glVertexAttrib3hNV glad_glVertexAttrib3hNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC)(GLuint index, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIB3HVNVPROC glad_glVertexAttrib3hvNV; +#define glVertexAttrib3hvNV glad_glVertexAttrib3hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI PFNGLVERTEXATTRIB4HNVPROC glad_glVertexAttrib4hNV; +#define glVertexAttrib4hNV glad_glVertexAttrib4hNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC)(GLuint index, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIB4HVNVPROC glad_glVertexAttrib4hvNV; +#define glVertexAttrib4hvNV glad_glVertexAttrib4hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIBS1HVNVPROC glad_glVertexAttribs1hvNV; +#define glVertexAttribs1hvNV glad_glVertexAttribs1hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIBS2HVNVPROC glad_glVertexAttribs2hvNV; +#define glVertexAttribs2hvNV glad_glVertexAttribs2hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIBS3HVNVPROC glad_glVertexAttribs3hvNV; +#define glVertexAttribs3hvNV glad_glVertexAttribs3hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIBS4HVNVPROC glad_glVertexAttribs4hvNV; +#define glVertexAttribs4hvNV glad_glVertexAttribs4hvNV +#endif +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +GLAPI int GLAD_GL_NV_internalformat_sample_query; +typedef void (APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +GLAPI PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV; +#define glGetInternalformatSampleivNV glad_glGetInternalformatSampleivNV +#endif +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +GLAPI int GLAD_GL_NV_light_max_exponent; +#endif +#ifndef GL_NV_memory_attachment +#define GL_NV_memory_attachment 1 +GLAPI int GLAD_GL_NV_memory_attachment; +typedef void (APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)(GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GLAPI PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC glad_glGetMemoryObjectDetachedResourcesuivNV; +#define glGetMemoryObjectDetachedResourcesuivNV glad_glGetMemoryObjectDetachedResourcesuivNV +typedef void (APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)(GLuint memory, GLenum pname); +GLAPI PFNGLRESETMEMORYOBJECTPARAMETERNVPROC glad_glResetMemoryObjectParameterNV; +#define glResetMemoryObjectParameterNV glad_glResetMemoryObjectParameterNV +typedef void (APIENTRYP PFNGLTEXATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXATTACHMEMORYNVPROC glad_glTexAttachMemoryNV; +#define glTexAttachMemoryNV glad_glTexAttachMemoryNV +typedef void (APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset); +GLAPI PFNGLBUFFERATTACHMEMORYNVPROC glad_glBufferAttachMemoryNV; +#define glBufferAttachMemoryNV glad_glBufferAttachMemoryNV +typedef void (APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC)(GLuint texture, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTUREATTACHMEMORYNVPROC glad_glTextureAttachMemoryNV; +#define glTextureAttachMemoryNV glad_glTextureAttachMemoryNV +typedef void (APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)(GLuint buffer, GLuint memory, GLuint64 offset); +GLAPI PFNGLNAMEDBUFFERATTACHMEMORYNVPROC glad_glNamedBufferAttachMemoryNV; +#define glNamedBufferAttachMemoryNV glad_glNamedBufferAttachMemoryNV +#endif +#ifndef GL_NV_mesh_shader +#define GL_NV_mesh_shader 1 +GLAPI int GLAD_GL_NV_mesh_shader; +typedef void (APIENTRYP PFNGLDRAWMESHTASKSNVPROC)(GLuint first, GLuint count); +GLAPI PFNGLDRAWMESHTASKSNVPROC glad_glDrawMeshTasksNV; +#define glDrawMeshTasksNV glad_glDrawMeshTasksNV +typedef void (APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect); +GLAPI PFNGLDRAWMESHTASKSINDIRECTNVPROC glad_glDrawMeshTasksIndirectNV; +#define glDrawMeshTasksIndirectNV glad_glDrawMeshTasksIndirectNV +typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect, GLsizei drawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC glad_glMultiDrawMeshTasksIndirectNV; +#define glMultiDrawMeshTasksIndirectNV glad_glMultiDrawMeshTasksIndirectNV +typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)(GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC glad_glMultiDrawMeshTasksIndirectCountNV; +#define glMultiDrawMeshTasksIndirectCountNV glad_glMultiDrawMeshTasksIndirectCountNV +#endif +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 +GLAPI int GLAD_GL_NV_multisample_coverage; +#endif +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +GLAPI int GLAD_GL_NV_multisample_filter_hint; +#endif +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +GLAPI int GLAD_GL_NV_occlusion_query; +typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENOCCLUSIONQUERIESNVPROC glad_glGenOcclusionQueriesNV; +#define glGenOcclusionQueriesNV glad_glGenOcclusionQueriesNV +typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETEOCCLUSIONQUERIESNVPROC glad_glDeleteOcclusionQueriesNV; +#define glDeleteOcclusionQueriesNV glad_glDeleteOcclusionQueriesNV +typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC)(GLuint id); +GLAPI PFNGLISOCCLUSIONQUERYNVPROC glad_glIsOcclusionQueryNV; +#define glIsOcclusionQueryNV glad_glIsOcclusionQueryNV +typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC)(GLuint id); +GLAPI PFNGLBEGINOCCLUSIONQUERYNVPROC glad_glBeginOcclusionQueryNV; +#define glBeginOcclusionQueryNV glad_glBeginOcclusionQueryNV +typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC)(void); +GLAPI PFNGLENDOCCLUSIONQUERYNVPROC glad_glEndOcclusionQueryNV; +#define glEndOcclusionQueryNV glad_glEndOcclusionQueryNV +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETOCCLUSIONQUERYIVNVPROC glad_glGetOcclusionQueryivNV; +#define glGetOcclusionQueryivNV glad_glGetOcclusionQueryivNV +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC)(GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLGETOCCLUSIONQUERYUIVNVPROC glad_glGetOcclusionQueryuivNV; +#define glGetOcclusionQueryuivNV glad_glGetOcclusionQueryuivNV +#endif +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +GLAPI int GLAD_GL_NV_packed_depth_stencil; +#endif +#ifndef GL_NV_parameter_buffer_object +#define GL_NV_parameter_buffer_object 1 +GLAPI int GLAD_GL_NV_parameter_buffer_object; +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); +GLAPI PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC glad_glProgramBufferParametersfvNV; +#define glProgramBufferParametersfvNV glad_glProgramBufferParametersfvNV +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); +GLAPI PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC glad_glProgramBufferParametersIivNV; +#define glProgramBufferParametersIivNV glad_glProgramBufferParametersIivNV +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); +GLAPI PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC glad_glProgramBufferParametersIuivNV; +#define glProgramBufferParametersIuivNV glad_glProgramBufferParametersIuivNV +#endif +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 +GLAPI int GLAD_GL_NV_parameter_buffer_object2; +#endif +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +GLAPI int GLAD_GL_NV_path_rendering; +typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC)(GLsizei range); +GLAPI PFNGLGENPATHSNVPROC glad_glGenPathsNV; +#define glGenPathsNV glad_glGenPathsNV +typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range); +GLAPI PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV; +#define glDeletePathsNV glad_glDeletePathsNV +typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC)(GLuint path); +GLAPI PFNGLISPATHNVPROC glad_glIsPathNV; +#define glIsPathNV glad_glIsPathNV +typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC)(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV; +#define glPathCommandsNV glad_glPathCommandsNV +typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC)(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV; +#define glPathCoordsNV glad_glPathCoordsNV +typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC)(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV; +#define glPathSubCommandsNV glad_glPathSubCommandsNV +typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC)(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV; +#define glPathSubCoordsNV glad_glPathSubCoordsNV +typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC)(GLuint path, GLenum format, GLsizei length, const void *pathString); +GLAPI PFNGLPATHSTRINGNVPROC glad_glPathStringNV; +#define glPathStringNV glad_glPathStringNV +typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV; +#define glPathGlyphsNV glad_glPathGlyphsNV +typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV; +#define glPathGlyphRangeNV glad_glPathGlyphRangeNV +typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC)(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GLAPI PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV; +#define glWeightPathsNV glad_glWeightPathsNV +typedef void (APIENTRYP PFNGLCOPYPATHNVPROC)(GLuint resultPath, GLuint srcPath); +GLAPI PFNGLCOPYPATHNVPROC glad_glCopyPathNV; +#define glCopyPathNV glad_glCopyPathNV +typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GLAPI PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV; +#define glInterpolatePathsNV glad_glInterpolatePathsNV +typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC)(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV; +#define glTransformPathNV glad_glTransformPathNV +typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, const GLint *value); +GLAPI PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV; +#define glPathParameterivNV glad_glPathParameterivNV +typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC)(GLuint path, GLenum pname, GLint value); +GLAPI PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV; +#define glPathParameteriNV glad_glPathParameteriNV +typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, const GLfloat *value); +GLAPI PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV; +#define glPathParameterfvNV glad_glPathParameterfvNV +typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC)(GLuint path, GLenum pname, GLfloat value); +GLAPI PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV; +#define glPathParameterfNV glad_glPathParameterfNV +typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC)(GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GLAPI PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV; +#define glPathDashArrayNV glad_glPathDashArrayNV +typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV; +#define glPathStencilFuncNV glad_glPathStencilFuncNV +typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC)(GLfloat factor, GLfloat units); +GLAPI PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV; +#define glPathStencilDepthOffsetNV glad_glPathStencilDepthOffsetNV +typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask); +GLAPI PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV; +#define glStencilFillPathNV glad_glStencilFillPathNV +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask); +GLAPI PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV; +#define glStencilStrokePathNV glad_glStencilStrokePathNV +typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV; +#define glStencilFillPathInstancedNV glad_glStencilFillPathInstancedNV +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV; +#define glStencilStrokePathInstancedNV glad_glStencilStrokePathInstancedNV +typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC)(GLenum func); +GLAPI PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV; +#define glPathCoverDepthFuncNV glad_glPathCoverDepthFuncNV +typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode); +GLAPI PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV; +#define glCoverFillPathNV glad_glCoverFillPathNV +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode); +GLAPI PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV; +#define glCoverStrokePathNV glad_glCoverStrokePathNV +typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV; +#define glCoverFillPathInstancedNV glad_glCoverFillPathInstancedNV +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV; +#define glCoverStrokePathInstancedNV glad_glCoverStrokePathInstancedNV +typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, GLint *value); +GLAPI PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV; +#define glGetPathParameterivNV glad_glGetPathParameterivNV +typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, GLfloat *value); +GLAPI PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV; +#define glGetPathParameterfvNV glad_glGetPathParameterfvNV +typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC)(GLuint path, GLubyte *commands); +GLAPI PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV; +#define glGetPathCommandsNV glad_glGetPathCommandsNV +typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC)(GLuint path, GLfloat *coords); +GLAPI PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV; +#define glGetPathCoordsNV glad_glGetPathCoordsNV +typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC)(GLuint path, GLfloat *dashArray); +GLAPI PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV; +#define glGetPathDashArrayNV glad_glGetPathDashArrayNV +typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC)(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GLAPI PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV; +#define glGetPathMetricsNV glad_glGetPathMetricsNV +typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC)(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GLAPI PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV; +#define glGetPathMetricRangeNV glad_glGetPathMetricRangeNV +typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC)(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GLAPI PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV; +#define glGetPathSpacingNV glad_glGetPathSpacingNV +typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC)(GLuint path, GLuint mask, GLfloat x, GLfloat y); +GLAPI PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV; +#define glIsPointInFillPathNV glad_glIsPointInFillPathNV +typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC)(GLuint path, GLfloat x, GLfloat y); +GLAPI PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV; +#define glIsPointInStrokePathNV glad_glIsPointInStrokePathNV +typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC)(GLuint path, GLsizei startSegment, GLsizei numSegments); +GLAPI PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV; +#define glGetPathLengthNV glad_glGetPathLengthNV +typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC)(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GLAPI PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV; +#define glPointAlongPathNV glad_glPointAlongPathNV +typedef void (APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV; +#define glMatrixLoad3x2fNV glad_glMatrixLoad3x2fNV +typedef void (APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV; +#define glMatrixLoad3x3fNV glad_glMatrixLoad3x3fNV +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV; +#define glMatrixLoadTranspose3x3fNV glad_glMatrixLoadTranspose3x3fNV +typedef void (APIENTRYP PFNGLMATRIXMULT3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV; +#define glMatrixMult3x2fNV glad_glMatrixMult3x2fNV +typedef void (APIENTRYP PFNGLMATRIXMULT3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV; +#define glMatrixMult3x3fNV glad_glMatrixMult3x3fNV +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV; +#define glMatrixMultTranspose3x3fNV glad_glMatrixMultTranspose3x3fNV +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GLAPI PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV; +#define glStencilThenCoverFillPathNV glad_glStencilThenCoverFillPathNV +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GLAPI PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV; +#define glStencilThenCoverStrokePathNV glad_glStencilThenCoverStrokePathNV +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV; +#define glStencilThenCoverFillPathInstancedNV glad_glStencilThenCoverFillPathInstancedNV +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV; +#define glStencilThenCoverStrokePathInstancedNV glad_glStencilThenCoverStrokePathInstancedNV +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC)(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +GLAPI PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV; +#define glPathGlyphIndexRangeNV glad_glPathGlyphIndexRangeNV +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV; +#define glPathGlyphIndexArrayNV glad_glPathGlyphIndexArrayNV +typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV; +#define glPathMemoryGlyphIndexArrayNV glad_glPathMemoryGlyphIndexArrayNV +typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV; +#define glProgramPathFragmentInputGenNV glad_glProgramPathFragmentInputGenNV +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GLAPI PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV; +#define glGetProgramResourcefvNV glad_glGetProgramResourcefvNV +typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); +GLAPI PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV; +#define glPathColorGenNV glad_glPathColorGenNV +typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC)(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV; +#define glPathTexGenNV glad_glPathTexGenNV +typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC)(GLenum genMode); +GLAPI PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV; +#define glPathFogGenNV glad_glPathFogGenNV +typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC)(GLenum color, GLenum pname, GLint *value); +GLAPI PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV; +#define glGetPathColorGenivNV glad_glGetPathColorGenivNV +typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC)(GLenum color, GLenum pname, GLfloat *value); +GLAPI PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV; +#define glGetPathColorGenfvNV glad_glGetPathColorGenfvNV +typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC)(GLenum texCoordSet, GLenum pname, GLint *value); +GLAPI PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV; +#define glGetPathTexGenivNV glad_glGetPathTexGenivNV +typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC)(GLenum texCoordSet, GLenum pname, GLfloat *value); +GLAPI PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV; +#define glGetPathTexGenfvNV glad_glGetPathTexGenfvNV +#endif +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +GLAPI int GLAD_GL_NV_path_rendering_shared_edge; +#endif +#ifndef GL_NV_pixel_data_range +#define GL_NV_pixel_data_range 1 +GLAPI int GLAD_GL_NV_pixel_data_range; +typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC)(GLenum target, GLsizei length, const void *pointer); +GLAPI PFNGLPIXELDATARANGENVPROC glad_glPixelDataRangeNV; +#define glPixelDataRangeNV glad_glPixelDataRangeNV +typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC)(GLenum target); +GLAPI PFNGLFLUSHPIXELDATARANGENVPROC glad_glFlushPixelDataRangeNV; +#define glFlushPixelDataRangeNV glad_glFlushPixelDataRangeNV +#endif +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +GLAPI int GLAD_GL_NV_point_sprite; +typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC)(GLenum pname, GLint param); +GLAPI PFNGLPOINTPARAMETERINVPROC glad_glPointParameteriNV; +#define glPointParameteriNV glad_glPointParameteriNV +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLPOINTPARAMETERIVNVPROC glad_glPointParameterivNV; +#define glPointParameterivNV glad_glPointParameterivNV +#endif +#ifndef GL_NV_present_video +#define GL_NV_present_video 1 +GLAPI int GLAD_GL_NV_present_video; +typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +GLAPI PFNGLPRESENTFRAMEKEYEDNVPROC glad_glPresentFrameKeyedNV; +#define glPresentFrameKeyedNV glad_glPresentFrameKeyedNV +typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +GLAPI PFNGLPRESENTFRAMEDUALFILLNVPROC glad_glPresentFrameDualFillNV; +#define glPresentFrameDualFillNV glad_glPresentFrameDualFillNV +typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC)(GLuint video_slot, GLenum pname, GLint *params); +GLAPI PFNGLGETVIDEOIVNVPROC glad_glGetVideoivNV; +#define glGetVideoivNV glad_glGetVideoivNV +typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC)(GLuint video_slot, GLenum pname, GLuint *params); +GLAPI PFNGLGETVIDEOUIVNVPROC glad_glGetVideouivNV; +#define glGetVideouivNV glad_glGetVideouivNV +typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC)(GLuint video_slot, GLenum pname, GLint64EXT *params); +GLAPI PFNGLGETVIDEOI64VNVPROC glad_glGetVideoi64vNV; +#define glGetVideoi64vNV glad_glGetVideoi64vNV +typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC)(GLuint video_slot, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETVIDEOUI64VNVPROC glad_glGetVideoui64vNV; +#define glGetVideoui64vNV glad_glGetVideoui64vNV +#endif +#ifndef GL_NV_primitive_restart +#define GL_NV_primitive_restart 1 +GLAPI int GLAD_GL_NV_primitive_restart; +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC)(void); +GLAPI PFNGLPRIMITIVERESTARTNVPROC glad_glPrimitiveRestartNV; +#define glPrimitiveRestartNV glad_glPrimitiveRestartNV +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC)(GLuint index); +GLAPI PFNGLPRIMITIVERESTARTINDEXNVPROC glad_glPrimitiveRestartIndexNV; +#define glPrimitiveRestartIndexNV glad_glPrimitiveRestartIndexNV +#endif +#ifndef GL_NV_query_resource +#define GL_NV_query_resource 1 +GLAPI int GLAD_GL_NV_query_resource; +typedef GLint (APIENTRYP PFNGLQUERYRESOURCENVPROC)(GLenum queryType, GLint tagId, GLuint count, GLint *buffer); +GLAPI PFNGLQUERYRESOURCENVPROC glad_glQueryResourceNV; +#define glQueryResourceNV glad_glQueryResourceNV +#endif +#ifndef GL_NV_query_resource_tag +#define GL_NV_query_resource_tag 1 +GLAPI int GLAD_GL_NV_query_resource_tag; +typedef void (APIENTRYP PFNGLGENQUERYRESOURCETAGNVPROC)(GLsizei n, GLint *tagIds); +GLAPI PFNGLGENQUERYRESOURCETAGNVPROC glad_glGenQueryResourceTagNV; +#define glGenQueryResourceTagNV glad_glGenQueryResourceTagNV +typedef void (APIENTRYP PFNGLDELETEQUERYRESOURCETAGNVPROC)(GLsizei n, const GLint *tagIds); +GLAPI PFNGLDELETEQUERYRESOURCETAGNVPROC glad_glDeleteQueryResourceTagNV; +#define glDeleteQueryResourceTagNV glad_glDeleteQueryResourceTagNV +typedef void (APIENTRYP PFNGLQUERYRESOURCETAGNVPROC)(GLint tagId, const GLchar *tagString); +GLAPI PFNGLQUERYRESOURCETAGNVPROC glad_glQueryResourceTagNV; +#define glQueryResourceTagNV glad_glQueryResourceTagNV +#endif +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +GLAPI int GLAD_GL_NV_register_combiners; +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLCOMBINERPARAMETERFVNVPROC glad_glCombinerParameterfvNV; +#define glCombinerParameterfvNV glad_glCombinerParameterfvNV +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLCOMBINERPARAMETERFNVPROC glad_glCombinerParameterfNV; +#define glCombinerParameterfNV glad_glCombinerParameterfNV +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLCOMBINERPARAMETERIVNVPROC glad_glCombinerParameterivNV; +#define glCombinerParameterivNV glad_glCombinerParameterivNV +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC)(GLenum pname, GLint param); +GLAPI PFNGLCOMBINERPARAMETERINVPROC glad_glCombinerParameteriNV; +#define glCombinerParameteriNV glad_glCombinerParameteriNV +typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI PFNGLCOMBINERINPUTNVPROC glad_glCombinerInputNV; +#define glCombinerInputNV glad_glCombinerInputNV +typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +GLAPI PFNGLCOMBINEROUTPUTNVPROC glad_glCombinerOutputNV; +#define glCombinerOutputNV glad_glCombinerOutputNV +typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI PFNGLFINALCOMBINERINPUTNVPROC glad_glFinalCombinerInputNV; +#define glFinalCombinerInputNV glad_glFinalCombinerInputNV +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glad_glGetCombinerInputParameterfvNV; +#define glGetCombinerInputParameterfvNV glad_glGetCombinerInputParameterfvNV +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +GLAPI PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glad_glGetCombinerInputParameterivNV; +#define glGetCombinerInputParameterivNV glad_glGetCombinerInputParameterivNV +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glad_glGetCombinerOutputParameterfvNV; +#define glGetCombinerOutputParameterfvNV glad_glGetCombinerOutputParameterfvNV +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, GLenum pname, GLint *params); +GLAPI PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glad_glGetCombinerOutputParameterivNV; +#define glGetCombinerOutputParameterivNV glad_glGetCombinerOutputParameterivNV +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)(GLenum variable, GLenum pname, GLfloat *params); +GLAPI PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glad_glGetFinalCombinerInputParameterfvNV; +#define glGetFinalCombinerInputParameterfvNV glad_glGetFinalCombinerInputParameterfvNV +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)(GLenum variable, GLenum pname, GLint *params); +GLAPI PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glad_glGetFinalCombinerInputParameterivNV; +#define glGetFinalCombinerInputParameterivNV glad_glGetFinalCombinerInputParameterivNV +#endif +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +GLAPI int GLAD_GL_NV_register_combiners2; +typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, const GLfloat *params); +GLAPI PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glad_glCombinerStageParameterfvNV; +#define glCombinerStageParameterfvNV glad_glCombinerStageParameterfvNV +typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glad_glGetCombinerStageParameterfvNV; +#define glGetCombinerStageParameterfvNV glad_glGetCombinerStageParameterfvNV +#endif +#ifndef GL_NV_representative_fragment_test +#define GL_NV_representative_fragment_test 1 +GLAPI int GLAD_GL_NV_representative_fragment_test; +#endif +#ifndef GL_NV_robustness_video_memory_purge +#define GL_NV_robustness_video_memory_purge 1 +GLAPI int GLAD_GL_NV_robustness_video_memory_purge; +#endif +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +GLAPI int GLAD_GL_NV_sample_locations; +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV; +#define glFramebufferSampleLocationsfvNV glad_glFramebufferSampleLocationsfvNV +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV; +#define glNamedFramebufferSampleLocationsfvNV glad_glNamedFramebufferSampleLocationsfvNV +typedef void (APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC)(void); +GLAPI PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV; +#define glResolveDepthValuesNV glad_glResolveDepthValuesNV +#endif +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +GLAPI int GLAD_GL_NV_sample_mask_override_coverage; +#endif +#ifndef GL_NV_scissor_exclusive +#define GL_NV_scissor_exclusive 1 +GLAPI int GLAD_GL_NV_scissor_exclusive; +typedef void (APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSOREXCLUSIVENVPROC glad_glScissorExclusiveNV; +#define glScissorExclusiveNV glad_glScissorExclusiveNV +typedef void (APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)(GLuint first, GLsizei count, const GLint *v); +GLAPI PFNGLSCISSOREXCLUSIVEARRAYVNVPROC glad_glScissorExclusiveArrayvNV; +#define glScissorExclusiveArrayvNV glad_glScissorExclusiveArrayvNV +#endif +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 +GLAPI int GLAD_GL_NV_shader_atomic_counters; +#endif +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 +GLAPI int GLAD_GL_NV_shader_atomic_float; +#endif +#ifndef GL_NV_shader_atomic_float64 +#define GL_NV_shader_atomic_float64 1 +GLAPI int GLAD_GL_NV_shader_atomic_float64; +#endif +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 +GLAPI int GLAD_GL_NV_shader_atomic_fp16_vector; +#endif +#ifndef GL_NV_shader_atomic_int64 +#define GL_NV_shader_atomic_int64 1 +GLAPI int GLAD_GL_NV_shader_atomic_int64; +#endif +#ifndef GL_NV_shader_buffer_load +#define GL_NV_shader_buffer_load 1 +GLAPI int GLAD_GL_NV_shader_buffer_load; +typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC)(GLenum target, GLenum access); +GLAPI PFNGLMAKEBUFFERRESIDENTNVPROC glad_glMakeBufferResidentNV; +#define glMakeBufferResidentNV glad_glMakeBufferResidentNV +typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC)(GLenum target); +GLAPI PFNGLMAKEBUFFERNONRESIDENTNVPROC glad_glMakeBufferNonResidentNV; +#define glMakeBufferNonResidentNV glad_glMakeBufferNonResidentNV +typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC)(GLenum target); +GLAPI PFNGLISBUFFERRESIDENTNVPROC glad_glIsBufferResidentNV; +#define glIsBufferResidentNV glad_glIsBufferResidentNV +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)(GLuint buffer, GLenum access); +GLAPI PFNGLMAKENAMEDBUFFERRESIDENTNVPROC glad_glMakeNamedBufferResidentNV; +#define glMakeNamedBufferResidentNV glad_glMakeNamedBufferResidentNV +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)(GLuint buffer); +GLAPI PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC glad_glMakeNamedBufferNonResidentNV; +#define glMakeNamedBufferNonResidentNV glad_glMakeNamedBufferNonResidentNV +typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC)(GLuint buffer); +GLAPI PFNGLISNAMEDBUFFERRESIDENTNVPROC glad_glIsNamedBufferResidentNV; +#define glIsNamedBufferResidentNV glad_glIsNamedBufferResidentNV +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC)(GLenum target, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETBUFFERPARAMETERUI64VNVPROC glad_glGetBufferParameterui64vNV; +#define glGetBufferParameterui64vNV glad_glGetBufferParameterui64vNV +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)(GLuint buffer, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC glad_glGetNamedBufferParameterui64vNV; +#define glGetNamedBufferParameterui64vNV glad_glGetNamedBufferParameterui64vNV +typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC)(GLenum value, GLuint64EXT *result); +GLAPI PFNGLGETINTEGERUI64VNVPROC glad_glGetIntegerui64vNV; +#define glGetIntegerui64vNV glad_glGetIntegerui64vNV +typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC)(GLint location, GLuint64EXT value); +GLAPI PFNGLUNIFORMUI64NVPROC glad_glUniformui64NV; +#define glUniformui64NV glad_glUniformui64NV +typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORMUI64VNVPROC glad_glUniformui64vNV; +#define glUniformui64vNV glad_glUniformui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC)(GLuint program, GLint location, GLuint64EXT value); +GLAPI PFNGLPROGRAMUNIFORMUI64NVPROC glad_glProgramUniformui64NV; +#define glProgramUniformui64NV glad_glProgramUniformui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORMUI64VNVPROC glad_glProgramUniformui64vNV; +#define glProgramUniformui64vNV glad_glProgramUniformui64vNV +#endif +#ifndef GL_NV_shader_buffer_store +#define GL_NV_shader_buffer_store 1 +GLAPI int GLAD_GL_NV_shader_buffer_store; +#endif +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 +GLAPI int GLAD_GL_NV_shader_storage_buffer_object; +#endif +#ifndef GL_NV_shader_subgroup_partitioned +#define GL_NV_shader_subgroup_partitioned 1 +GLAPI int GLAD_GL_NV_shader_subgroup_partitioned; +#endif +#ifndef GL_NV_shader_texture_footprint +#define GL_NV_shader_texture_footprint 1 +GLAPI int GLAD_GL_NV_shader_texture_footprint; +#endif +#ifndef GL_NV_shader_thread_group +#define GL_NV_shader_thread_group 1 +GLAPI int GLAD_GL_NV_shader_thread_group; +#endif +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 +GLAPI int GLAD_GL_NV_shader_thread_shuffle; +#endif +#ifndef GL_NV_shading_rate_image +#define GL_NV_shading_rate_image 1 +GLAPI int GLAD_GL_NV_shading_rate_image; +typedef void (APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC)(GLuint texture); +GLAPI PFNGLBINDSHADINGRATEIMAGENVPROC glad_glBindShadingRateImageNV; +#define glBindShadingRateImageNV glad_glBindShadingRateImageNV +typedef void (APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint entry, GLenum *rate); +GLAPI PFNGLGETSHADINGRATEIMAGEPALETTENVPROC glad_glGetShadingRateImagePaletteNV; +#define glGetShadingRateImagePaletteNV glad_glGetShadingRateImagePaletteNV +typedef void (APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)(GLenum rate, GLuint samples, GLuint index, GLint *location); +GLAPI PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC glad_glGetShadingRateSampleLocationivNV; +#define glGetShadingRateSampleLocationivNV glad_glGetShadingRateSampleLocationivNV +typedef void (APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC)(GLboolean synchronize); +GLAPI PFNGLSHADINGRATEIMAGEBARRIERNVPROC glad_glShadingRateImageBarrierNV; +#define glShadingRateImageBarrierNV glad_glShadingRateImageBarrierNV +typedef void (APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GLAPI PFNGLSHADINGRATEIMAGEPALETTENVPROC glad_glShadingRateImagePaletteNV; +#define glShadingRateImagePaletteNV glad_glShadingRateImagePaletteNV +typedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC)(GLenum order); +GLAPI PFNGLSHADINGRATESAMPLEORDERNVPROC glad_glShadingRateSampleOrderNV; +#define glShadingRateSampleOrderNV glad_glShadingRateSampleOrderNV +typedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)(GLenum rate, GLuint samples, const GLint *locations); +GLAPI PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC glad_glShadingRateSampleOrderCustomNV; +#define glShadingRateSampleOrderCustomNV glad_glShadingRateSampleOrderCustomNV +#endif +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +GLAPI int GLAD_GL_NV_stereo_view_rendering; +#endif +#ifndef GL_NV_tessellation_program5 +#define GL_NV_tessellation_program5 1 +GLAPI int GLAD_GL_NV_tessellation_program5; +#endif +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +GLAPI int GLAD_GL_NV_texgen_emboss; +#endif +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +GLAPI int GLAD_GL_NV_texgen_reflection; +#endif +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 +GLAPI int GLAD_GL_NV_texture_barrier; +typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC)(void); +GLAPI PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV; +#define glTextureBarrierNV glad_glTextureBarrierNV +#endif +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +GLAPI int GLAD_GL_NV_texture_compression_vtc; +#endif +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +GLAPI int GLAD_GL_NV_texture_env_combine4; +#endif +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 +GLAPI int GLAD_GL_NV_texture_expand_normal; +#endif +#ifndef GL_NV_texture_multisample +#define GL_NV_texture_multisample 1 +GLAPI int GLAD_GL_NV_texture_multisample; +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTexImage2DMultisampleCoverageNV; +#define glTexImage2DMultisampleCoverageNV glad_glTexImage2DMultisampleCoverageNV +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTexImage3DMultisampleCoverageNV; +#define glTexImage3DMultisampleCoverageNV glad_glTexImage3DMultisampleCoverageNV +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC glad_glTextureImage2DMultisampleNV; +#define glTextureImage2DMultisampleNV glad_glTextureImage2DMultisampleNV +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC glad_glTextureImage3DMultisampleNV; +#define glTextureImage3DMultisampleNV glad_glTextureImage3DMultisampleNV +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTextureImage2DMultisampleCoverageNV; +#define glTextureImage2DMultisampleCoverageNV glad_glTextureImage2DMultisampleCoverageNV +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTextureImage3DMultisampleCoverageNV; +#define glTextureImage3DMultisampleCoverageNV glad_glTextureImage3DMultisampleCoverageNV +#endif +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +GLAPI int GLAD_GL_NV_texture_rectangle; +#endif +#ifndef GL_NV_texture_rectangle_compressed +#define GL_NV_texture_rectangle_compressed 1 +GLAPI int GLAD_GL_NV_texture_rectangle_compressed; +#endif +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +GLAPI int GLAD_GL_NV_texture_shader; +#endif +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +GLAPI int GLAD_GL_NV_texture_shader2; +#endif +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +GLAPI int GLAD_GL_NV_texture_shader3; +#endif +#ifndef GL_NV_transform_feedback +#define GL_NV_transform_feedback 1 +GLAPI int GLAD_GL_NV_transform_feedback; +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC)(GLenum primitiveMode); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKNVPROC glad_glBeginTransformFeedbackNV; +#define glBeginTransformFeedbackNV glad_glBeginTransformFeedbackNV +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC)(void); +GLAPI PFNGLENDTRANSFORMFEEDBACKNVPROC glad_glEndTransformFeedbackNV; +#define glEndTransformFeedbackNV glad_glEndTransformFeedbackNV +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)(GLsizei count, const GLint *attribs, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC glad_glTransformFeedbackAttribsNV; +#define glTransformFeedbackAttribsNV glad_glTransformFeedbackAttribsNV +typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLBINDBUFFERRANGENVPROC glad_glBindBufferRangeNV; +#define glBindBufferRangeNV glad_glBindBufferRangeNV +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI PFNGLBINDBUFFEROFFSETNVPROC glad_glBindBufferOffsetNV; +#define glBindBufferOffsetNV glad_glBindBufferOffsetNV +typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC)(GLenum target, GLuint index, GLuint buffer); +GLAPI PFNGLBINDBUFFERBASENVPROC glad_glBindBufferBaseNV; +#define glBindBufferBaseNV glad_glBindBufferBaseNV +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC glad_glTransformFeedbackVaryingsNV; +#define glTransformFeedbackVaryingsNV glad_glTransformFeedbackVaryingsNV +typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLACTIVEVARYINGNVPROC glad_glActiveVaryingNV; +#define glActiveVaryingNV glad_glActiveVaryingNV +typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETVARYINGLOCATIONNVPROC glad_glGetVaryingLocationNV; +#define glGetVaryingLocationNV glad_glGetVaryingLocationNV +typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEVARYINGNVPROC glad_glGetActiveVaryingNV; +#define glGetActiveVaryingNV glad_glGetActiveVaryingNV +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)(GLuint program, GLuint index, GLint *location); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC glad_glGetTransformFeedbackVaryingNV; +#define glGetTransformFeedbackVaryingNV glad_glGetTransformFeedbackVaryingNV +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC glad_glTransformFeedbackStreamAttribsNV; +#define glTransformFeedbackStreamAttribsNV glad_glTransformFeedbackStreamAttribsNV +#endif +#ifndef GL_NV_transform_feedback2 +#define GL_NV_transform_feedback2 1 +GLAPI int GLAD_GL_NV_transform_feedback2; +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC)(GLenum target, GLuint id); +GLAPI PFNGLBINDTRANSFORMFEEDBACKNVPROC glad_glBindTransformFeedbackNV; +#define glBindTransformFeedbackNV glad_glBindTransformFeedbackNV +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETETRANSFORMFEEDBACKSNVPROC glad_glDeleteTransformFeedbacksNV; +#define glDeleteTransformFeedbacksNV glad_glDeleteTransformFeedbacksNV +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENTRANSFORMFEEDBACKSNVPROC glad_glGenTransformFeedbacksNV; +#define glGenTransformFeedbacksNV glad_glGenTransformFeedbacksNV +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC)(GLuint id); +GLAPI PFNGLISTRANSFORMFEEDBACKNVPROC glad_glIsTransformFeedbackNV; +#define glIsTransformFeedbackNV glad_glIsTransformFeedbackNV +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC)(void); +GLAPI PFNGLPAUSETRANSFORMFEEDBACKNVPROC glad_glPauseTransformFeedbackNV; +#define glPauseTransformFeedbackNV glad_glPauseTransformFeedbackNV +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC)(void); +GLAPI PFNGLRESUMETRANSFORMFEEDBACKNVPROC glad_glResumeTransformFeedbackNV; +#define glResumeTransformFeedbackNV glad_glResumeTransformFeedbackNV +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC)(GLenum mode, GLuint id); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKNVPROC glad_glDrawTransformFeedbackNV; +#define glDrawTransformFeedbackNV glad_glDrawTransformFeedbackNV +#endif +#ifndef GL_NV_uniform_buffer_unified_memory +#define GL_NV_uniform_buffer_unified_memory 1 +GLAPI int GLAD_GL_NV_uniform_buffer_unified_memory; +#endif +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 +GLAPI int GLAD_GL_NV_vdpau_interop; +typedef void (APIENTRYP PFNGLVDPAUINITNVPROC)(const void *vdpDevice, const void *getProcAddress); +GLAPI PFNGLVDPAUINITNVPROC glad_glVDPAUInitNV; +#define glVDPAUInitNV glad_glVDPAUInitNV +typedef void (APIENTRYP PFNGLVDPAUFININVPROC)(void); +GLAPI PFNGLVDPAUFININVPROC glad_glVDPAUFiniNV; +#define glVDPAUFiniNV glad_glVDPAUFiniNV +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI PFNGLVDPAUREGISTERVIDEOSURFACENVPROC glad_glVDPAURegisterVideoSurfaceNV; +#define glVDPAURegisterVideoSurfaceNV glad_glVDPAURegisterVideoSurfaceNV +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC glad_glVDPAURegisterOutputSurfaceNV; +#define glVDPAURegisterOutputSurfaceNV glad_glVDPAURegisterOutputSurfaceNV +typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC)(GLvdpauSurfaceNV surface); +GLAPI PFNGLVDPAUISSURFACENVPROC glad_glVDPAUIsSurfaceNV; +#define glVDPAUIsSurfaceNV glad_glVDPAUIsSurfaceNV +typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC)(GLvdpauSurfaceNV surface); +GLAPI PFNGLVDPAUUNREGISTERSURFACENVPROC glad_glVDPAUUnregisterSurfaceNV; +#define glVDPAUUnregisterSurfaceNV glad_glVDPAUUnregisterSurfaceNV +typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC)(GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI PFNGLVDPAUGETSURFACEIVNVPROC glad_glVDPAUGetSurfaceivNV; +#define glVDPAUGetSurfaceivNV glad_glVDPAUGetSurfaceivNV +typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC)(GLvdpauSurfaceNV surface, GLenum access); +GLAPI PFNGLVDPAUSURFACEACCESSNVPROC glad_glVDPAUSurfaceAccessNV; +#define glVDPAUSurfaceAccessNV glad_glVDPAUSurfaceAccessNV +typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC)(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); +GLAPI PFNGLVDPAUMAPSURFACESNVPROC glad_glVDPAUMapSurfacesNV; +#define glVDPAUMapSurfacesNV glad_glVDPAUMapSurfacesNV +typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC)(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); +GLAPI PFNGLVDPAUUNMAPSURFACESNVPROC glad_glVDPAUUnmapSurfacesNV; +#define glVDPAUUnmapSurfacesNV glad_glVDPAUUnmapSurfacesNV +#endif +#ifndef GL_NV_vdpau_interop2 +#define GL_NV_vdpau_interop2 1 +GLAPI int GLAD_GL_NV_vdpau_interop2; +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure); +GLAPI PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC glad_glVDPAURegisterVideoSurfaceWithPictureStructureNV; +#define glVDPAURegisterVideoSurfaceWithPictureStructureNV glad_glVDPAURegisterVideoSurfaceWithPictureStructureNV +#endif +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +GLAPI int GLAD_GL_NV_vertex_array_range; +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC)(void); +GLAPI PFNGLFLUSHVERTEXARRAYRANGENVPROC glad_glFlushVertexArrayRangeNV; +#define glFlushVertexArrayRangeNV glad_glFlushVertexArrayRangeNV +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC)(GLsizei length, const void *pointer); +GLAPI PFNGLVERTEXARRAYRANGENVPROC glad_glVertexArrayRangeNV; +#define glVertexArrayRangeNV glad_glVertexArrayRangeNV +#endif +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +GLAPI int GLAD_GL_NV_vertex_array_range2; +#endif +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 +GLAPI int GLAD_GL_NV_vertex_attrib_integer_64bit; +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC)(GLuint index, GLint64EXT x); +GLAPI PFNGLVERTEXATTRIBL1I64NVPROC glad_glVertexAttribL1i64NV; +#define glVertexAttribL1i64NV glad_glVertexAttribL1i64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y); +GLAPI PFNGLVERTEXATTRIBL2I64NVPROC glad_glVertexAttribL2i64NV; +#define glVertexAttribL2i64NV glad_glVertexAttribL2i64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI PFNGLVERTEXATTRIBL3I64NVPROC glad_glVertexAttribL3i64NV; +#define glVertexAttribL3i64NV glad_glVertexAttribL3i64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI PFNGLVERTEXATTRIBL4I64NVPROC glad_glVertexAttribL4i64NV; +#define glVertexAttribL4i64NV glad_glVertexAttribL4i64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC)(GLuint index, const GLint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL1I64VNVPROC glad_glVertexAttribL1i64vNV; +#define glVertexAttribL1i64vNV glad_glVertexAttribL1i64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC)(GLuint index, const GLint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL2I64VNVPROC glad_glVertexAttribL2i64vNV; +#define glVertexAttribL2i64vNV glad_glVertexAttribL2i64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC)(GLuint index, const GLint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL3I64VNVPROC glad_glVertexAttribL3i64vNV; +#define glVertexAttribL3i64vNV glad_glVertexAttribL3i64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC)(GLuint index, const GLint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL4I64VNVPROC glad_glVertexAttribL4i64vNV; +#define glVertexAttribL4i64vNV glad_glVertexAttribL4i64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC)(GLuint index, GLuint64EXT x); +GLAPI PFNGLVERTEXATTRIBL1UI64NVPROC glad_glVertexAttribL1ui64NV; +#define glVertexAttribL1ui64NV glad_glVertexAttribL1ui64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y); +GLAPI PFNGLVERTEXATTRIBL2UI64NVPROC glad_glVertexAttribL2ui64NV; +#define glVertexAttribL2ui64NV glad_glVertexAttribL2ui64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI PFNGLVERTEXATTRIBL3UI64NVPROC glad_glVertexAttribL3ui64NV; +#define glVertexAttribL3ui64NV glad_glVertexAttribL3ui64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI PFNGLVERTEXATTRIBL4UI64NVPROC glad_glVertexAttribL4ui64NV; +#define glVertexAttribL4ui64NV glad_glVertexAttribL4ui64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL1UI64VNVPROC glad_glVertexAttribL1ui64vNV; +#define glVertexAttribL1ui64vNV glad_glVertexAttribL1ui64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL2UI64VNVPROC glad_glVertexAttribL2ui64vNV; +#define glVertexAttribL2ui64vNV glad_glVertexAttribL2ui64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL3UI64VNVPROC glad_glVertexAttribL3ui64vNV; +#define glVertexAttribL3ui64vNV glad_glVertexAttribL3ui64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL4UI64VNVPROC glad_glVertexAttribL4ui64vNV; +#define glVertexAttribL4ui64vNV glad_glVertexAttribL4ui64vNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC)(GLuint index, GLenum pname, GLint64EXT *params); +GLAPI PFNGLGETVERTEXATTRIBLI64VNVPROC glad_glGetVertexAttribLi64vNV; +#define glGetVertexAttribLi64vNV glad_glGetVertexAttribLi64vNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC)(GLuint index, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETVERTEXATTRIBLUI64VNVPROC glad_glGetVertexAttribLui64vNV; +#define glGetVertexAttribLui64vNV glad_glGetVertexAttribLui64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLVERTEXATTRIBLFORMATNVPROC glad_glVertexAttribLFormatNV; +#define glVertexAttribLFormatNV glad_glVertexAttribLFormatNV +#endif +#ifndef GL_NV_vertex_buffer_unified_memory +#define GL_NV_vertex_buffer_unified_memory 1 +GLAPI int GLAD_GL_NV_vertex_buffer_unified_memory; +typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +GLAPI PFNGLBUFFERADDRESSRANGENVPROC glad_glBufferAddressRangeNV; +#define glBufferAddressRangeNV glad_glBufferAddressRangeNV +typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLVERTEXFORMATNVPROC glad_glVertexFormatNV; +#define glVertexFormatNV glad_glVertexFormatNV +typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC)(GLenum type, GLsizei stride); +GLAPI PFNGLNORMALFORMATNVPROC glad_glNormalFormatNV; +#define glNormalFormatNV glad_glNormalFormatNV +typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLCOLORFORMATNVPROC glad_glColorFormatNV; +#define glColorFormatNV glad_glColorFormatNV +typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC)(GLenum type, GLsizei stride); +GLAPI PFNGLINDEXFORMATNVPROC glad_glIndexFormatNV; +#define glIndexFormatNV glad_glIndexFormatNV +typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLTEXCOORDFORMATNVPROC glad_glTexCoordFormatNV; +#define glTexCoordFormatNV glad_glTexCoordFormatNV +typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC)(GLsizei stride); +GLAPI PFNGLEDGEFLAGFORMATNVPROC glad_glEdgeFlagFormatNV; +#define glEdgeFlagFormatNV glad_glEdgeFlagFormatNV +typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLSECONDARYCOLORFORMATNVPROC glad_glSecondaryColorFormatNV; +#define glSecondaryColorFormatNV glad_glSecondaryColorFormatNV +typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC)(GLenum type, GLsizei stride); +GLAPI PFNGLFOGCOORDFORMATNVPROC glad_glFogCoordFormatNV; +#define glFogCoordFormatNV glad_glFogCoordFormatNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +GLAPI PFNGLVERTEXATTRIBFORMATNVPROC glad_glVertexAttribFormatNV; +#define glVertexAttribFormatNV glad_glVertexAttribFormatNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLVERTEXATTRIBIFORMATNVPROC glad_glVertexAttribIFormatNV; +#define glVertexAttribIFormatNV glad_glVertexAttribIFormatNV +typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC)(GLenum value, GLuint index, GLuint64EXT *result); +GLAPI PFNGLGETINTEGERUI64I_VNVPROC glad_glGetIntegerui64i_vNV; +#define glGetIntegerui64i_vNV glad_glGetIntegerui64i_vNV +#endif +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +GLAPI int GLAD_GL_NV_vertex_program; +typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC)(GLsizei n, const GLuint *programs, GLboolean *residences); +GLAPI PFNGLAREPROGRAMSRESIDENTNVPROC glad_glAreProgramsResidentNV; +#define glAreProgramsResidentNV glad_glAreProgramsResidentNV +typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC)(GLenum target, GLuint id); +GLAPI PFNGLBINDPROGRAMNVPROC glad_glBindProgramNV; +#define glBindProgramNV glad_glBindProgramNV +typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); +GLAPI PFNGLDELETEPROGRAMSNVPROC glad_glDeleteProgramsNV; +#define glDeleteProgramsNV glad_glDeleteProgramsNV +typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC)(GLenum target, GLuint id, const GLfloat *params); +GLAPI PFNGLEXECUTEPROGRAMNVPROC glad_glExecuteProgramNV; +#define glExecuteProgramNV glad_glExecuteProgramNV +typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC)(GLsizei n, GLuint *programs); +GLAPI PFNGLGENPROGRAMSNVPROC glad_glGenProgramsNV; +#define glGenProgramsNV glad_glGenProgramsNV +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC)(GLenum target, GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETPROGRAMPARAMETERDVNVPROC glad_glGetProgramParameterdvNV; +#define glGetProgramParameterdvNV glad_glGetProgramParameterdvNV +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETPROGRAMPARAMETERFVNVPROC glad_glGetProgramParameterfvNV; +#define glGetProgramParameterfvNV glad_glGetProgramParameterfvNV +typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMIVNVPROC glad_glGetProgramivNV; +#define glGetProgramivNV glad_glGetProgramivNV +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC)(GLuint id, GLenum pname, GLubyte *program); +GLAPI PFNGLGETPROGRAMSTRINGNVPROC glad_glGetProgramStringNV; +#define glGetProgramStringNV glad_glGetProgramStringNV +typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC)(GLenum target, GLuint address, GLenum pname, GLint *params); +GLAPI PFNGLGETTRACKMATRIXIVNVPROC glad_glGetTrackMatrixivNV; +#define glGetTrackMatrixivNV glad_glGetTrackMatrixivNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBDVNVPROC glad_glGetVertexAttribdvNV; +#define glGetVertexAttribdvNV glad_glGetVertexAttribdvNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBFVNVPROC glad_glGetVertexAttribfvNV; +#define glGetVertexAttribfvNV glad_glGetVertexAttribfvNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIVNVPROC glad_glGetVertexAttribivNV; +#define glGetVertexAttribivNV glad_glGetVertexAttribivNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC)(GLuint index, GLenum pname, void **pointer); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVNVPROC glad_glGetVertexAttribPointervNV; +#define glGetVertexAttribPointervNV glad_glGetVertexAttribPointervNV +typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC)(GLuint id); +GLAPI PFNGLISPROGRAMNVPROC glad_glIsProgramNV; +#define glIsProgramNV glad_glIsProgramNV +typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC)(GLenum target, GLuint id, GLsizei len, const GLubyte *program); +GLAPI PFNGLLOADPROGRAMNVPROC glad_glLoadProgramNV; +#define glLoadProgramNV glad_glLoadProgramNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMPARAMETER4DNVPROC glad_glProgramParameter4dNV; +#define glProgramParameter4dNV glad_glProgramParameter4dNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC)(GLenum target, GLuint index, const GLdouble *v); +GLAPI PFNGLPROGRAMPARAMETER4DVNVPROC glad_glProgramParameter4dvNV; +#define glProgramParameter4dvNV glad_glProgramParameter4dvNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLPROGRAMPARAMETER4FNVPROC glad_glProgramParameter4fNV; +#define glProgramParameter4fNV glad_glProgramParameter4fNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC)(GLenum target, GLuint index, const GLfloat *v); +GLAPI PFNGLPROGRAMPARAMETER4FVNVPROC glad_glProgramParameter4fvNV; +#define glProgramParameter4fvNV glad_glProgramParameter4fvNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLPROGRAMPARAMETERS4DVNVPROC glad_glProgramParameters4dvNV; +#define glProgramParameters4dvNV glad_glProgramParameters4dvNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLPROGRAMPARAMETERS4FVNVPROC glad_glProgramParameters4fvNV; +#define glProgramParameters4fvNV glad_glProgramParameters4fvNV +typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); +GLAPI PFNGLREQUESTRESIDENTPROGRAMSNVPROC glad_glRequestResidentProgramsNV; +#define glRequestResidentProgramsNV glad_glRequestResidentProgramsNV +typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC)(GLenum target, GLuint address, GLenum matrix, GLenum transform); +GLAPI PFNGLTRACKMATRIXNVPROC glad_glTrackMatrixNV; +#define glTrackMatrixNV glad_glTrackMatrixNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC)(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBPOINTERNVPROC glad_glVertexAttribPointerNV; +#define glVertexAttribPointerNV glad_glVertexAttribPointerNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIB1DNVPROC glad_glVertexAttrib1dNV; +#define glVertexAttrib1dNV glad_glVertexAttrib1dNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB1DVNVPROC glad_glVertexAttrib1dvNV; +#define glVertexAttrib1dvNV glad_glVertexAttrib1dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC)(GLuint index, GLfloat x); +GLAPI PFNGLVERTEXATTRIB1FNVPROC glad_glVertexAttrib1fNV; +#define glVertexAttrib1fNV glad_glVertexAttrib1fNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB1FVNVPROC glad_glVertexAttrib1fvNV; +#define glVertexAttrib1fvNV glad_glVertexAttrib1fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC)(GLuint index, GLshort x); +GLAPI PFNGLVERTEXATTRIB1SNVPROC glad_glVertexAttrib1sNV; +#define glVertexAttrib1sNV glad_glVertexAttrib1sNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB1SVNVPROC glad_glVertexAttrib1svNV; +#define glVertexAttrib1svNV glad_glVertexAttrib1svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIB2DNVPROC glad_glVertexAttrib2dNV; +#define glVertexAttrib2dNV glad_glVertexAttrib2dNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB2DVNVPROC glad_glVertexAttrib2dvNV; +#define glVertexAttrib2dvNV glad_glVertexAttrib2dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC)(GLuint index, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXATTRIB2FNVPROC glad_glVertexAttrib2fNV; +#define glVertexAttrib2fNV glad_glVertexAttrib2fNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB2FVNVPROC glad_glVertexAttrib2fvNV; +#define glVertexAttrib2fvNV glad_glVertexAttrib2fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC)(GLuint index, GLshort x, GLshort y); +GLAPI PFNGLVERTEXATTRIB2SNVPROC glad_glVertexAttrib2sNV; +#define glVertexAttrib2sNV glad_glVertexAttrib2sNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB2SVNVPROC glad_glVertexAttrib2svNV; +#define glVertexAttrib2svNV glad_glVertexAttrib2svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIB3DNVPROC glad_glVertexAttrib3dNV; +#define glVertexAttrib3dNV glad_glVertexAttrib3dNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB3DVNVPROC glad_glVertexAttrib3dvNV; +#define glVertexAttrib3dvNV glad_glVertexAttrib3dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXATTRIB3FNVPROC glad_glVertexAttrib3fNV; +#define glVertexAttrib3fNV glad_glVertexAttrib3fNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB3FVNVPROC glad_glVertexAttrib3fvNV; +#define glVertexAttrib3fvNV glad_glVertexAttrib3fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXATTRIB3SNVPROC glad_glVertexAttrib3sNV; +#define glVertexAttrib3sNV glad_glVertexAttrib3sNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB3SVNVPROC glad_glVertexAttrib3svNV; +#define glVertexAttrib3svNV glad_glVertexAttrib3svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIB4DNVPROC glad_glVertexAttrib4dNV; +#define glVertexAttrib4dNV glad_glVertexAttrib4dNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB4DVNVPROC glad_glVertexAttrib4dvNV; +#define glVertexAttrib4dvNV glad_glVertexAttrib4dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXATTRIB4FNVPROC glad_glVertexAttrib4fNV; +#define glVertexAttrib4fNV glad_glVertexAttrib4fNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB4FVNVPROC glad_glVertexAttrib4fvNV; +#define glVertexAttrib4fvNV glad_glVertexAttrib4fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXATTRIB4SNVPROC glad_glVertexAttrib4sNV; +#define glVertexAttrib4sNV glad_glVertexAttrib4sNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4SVNVPROC glad_glVertexAttrib4svNV; +#define glVertexAttrib4svNV glad_glVertexAttrib4svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI PFNGLVERTEXATTRIB4UBNVPROC glad_glVertexAttrib4ubNV; +#define glVertexAttrib4ubNV glad_glVertexAttrib4ubNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4UBVNVPROC glad_glVertexAttrib4ubvNV; +#define glVertexAttrib4ubvNV glad_glVertexAttrib4ubvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC)(GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBS1DVNVPROC glad_glVertexAttribs1dvNV; +#define glVertexAttribs1dvNV glad_glVertexAttribs1dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC)(GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIBS1FVNVPROC glad_glVertexAttribs1fvNV; +#define glVertexAttribs1fvNV glad_glVertexAttribs1fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC)(GLuint index, GLsizei count, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBS1SVNVPROC glad_glVertexAttribs1svNV; +#define glVertexAttribs1svNV glad_glVertexAttribs1svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC)(GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBS2DVNVPROC glad_glVertexAttribs2dvNV; +#define glVertexAttribs2dvNV glad_glVertexAttribs2dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC)(GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIBS2FVNVPROC glad_glVertexAttribs2fvNV; +#define glVertexAttribs2fvNV glad_glVertexAttribs2fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC)(GLuint index, GLsizei count, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBS2SVNVPROC glad_glVertexAttribs2svNV; +#define glVertexAttribs2svNV glad_glVertexAttribs2svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC)(GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBS3DVNVPROC glad_glVertexAttribs3dvNV; +#define glVertexAttribs3dvNV glad_glVertexAttribs3dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC)(GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIBS3FVNVPROC glad_glVertexAttribs3fvNV; +#define glVertexAttribs3fvNV glad_glVertexAttribs3fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC)(GLuint index, GLsizei count, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBS3SVNVPROC glad_glVertexAttribs3svNV; +#define glVertexAttribs3svNV glad_glVertexAttribs3svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC)(GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBS4DVNVPROC glad_glVertexAttribs4dvNV; +#define glVertexAttribs4dvNV glad_glVertexAttribs4dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC)(GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIBS4FVNVPROC glad_glVertexAttribs4fvNV; +#define glVertexAttribs4fvNV glad_glVertexAttribs4fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC)(GLuint index, GLsizei count, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBS4SVNVPROC glad_glVertexAttribs4svNV; +#define glVertexAttribs4svNV glad_glVertexAttribs4svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC)(GLuint index, GLsizei count, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIBS4UBVNVPROC glad_glVertexAttribs4ubvNV; +#define glVertexAttribs4ubvNV glad_glVertexAttribs4ubvNV +#endif +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +GLAPI int GLAD_GL_NV_vertex_program1_1; +#endif +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 +GLAPI int GLAD_GL_NV_vertex_program2; +#endif +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 +GLAPI int GLAD_GL_NV_vertex_program2_option; +#endif +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 +GLAPI int GLAD_GL_NV_vertex_program3; +#endif +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 +GLAPI int GLAD_GL_NV_vertex_program4; +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x); +GLAPI PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT; +#define glVertexAttribI1iEXT glad_glVertexAttribI1iEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y); +GLAPI PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT; +#define glVertexAttribI2iEXT glad_glVertexAttribI2iEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT; +#define glVertexAttribI3iEXT glad_glVertexAttribI3iEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT; +#define glVertexAttribI4iEXT glad_glVertexAttribI4iEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x); +GLAPI PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT; +#define glVertexAttribI1uiEXT glad_glVertexAttribI1uiEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y); +GLAPI PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT; +#define glVertexAttribI2uiEXT glad_glVertexAttribI2uiEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT; +#define glVertexAttribI3uiEXT glad_glVertexAttribI3uiEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT; +#define glVertexAttribI4uiEXT glad_glVertexAttribI4uiEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT; +#define glVertexAttribI1ivEXT glad_glVertexAttribI1ivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT; +#define glVertexAttribI2ivEXT glad_glVertexAttribI2ivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT; +#define glVertexAttribI3ivEXT glad_glVertexAttribI3ivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT; +#define glVertexAttribI4ivEXT glad_glVertexAttribI4ivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT; +#define glVertexAttribI1uivEXT glad_glVertexAttribI1uivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT; +#define glVertexAttribI2uivEXT glad_glVertexAttribI2uivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT; +#define glVertexAttribI3uivEXT glad_glVertexAttribI3uivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT; +#define glVertexAttribI4uivEXT glad_glVertexAttribI4uivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT; +#define glVertexAttribI4bvEXT glad_glVertexAttribI4bvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT; +#define glVertexAttribI4svEXT glad_glVertexAttribI4svEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT; +#define glVertexAttribI4ubvEXT glad_glVertexAttribI4ubvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT; +#define glVertexAttribI4usvEXT glad_glVertexAttribI4usvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT; +#define glVertexAttribIPointerEXT glad_glVertexAttribIPointerEXT +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT; +#define glGetVertexAttribIivEXT glad_glGetVertexAttribIivEXT +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, GLuint *params); +GLAPI PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT; +#define glGetVertexAttribIuivEXT glad_glGetVertexAttribIuivEXT +#endif +#ifndef GL_NV_video_capture +#define GL_NV_video_capture 1 +GLAPI int GLAD_GL_NV_video_capture; +typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC)(GLuint video_capture_slot); +GLAPI PFNGLBEGINVIDEOCAPTURENVPROC glad_glBeginVideoCaptureNV; +#define glBeginVideoCaptureNV glad_glBeginVideoCaptureNV +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +GLAPI PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC glad_glBindVideoCaptureStreamBufferNV; +#define glBindVideoCaptureStreamBufferNV glad_glBindVideoCaptureStreamBufferNV +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +GLAPI PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC glad_glBindVideoCaptureStreamTextureNV; +#define glBindVideoCaptureStreamTextureNV glad_glBindVideoCaptureStreamTextureNV +typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC)(GLuint video_capture_slot); +GLAPI PFNGLENDVIDEOCAPTURENVPROC glad_glEndVideoCaptureNV; +#define glEndVideoCaptureNV glad_glEndVideoCaptureNV +typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC)(GLuint video_capture_slot, GLenum pname, GLint *params); +GLAPI PFNGLGETVIDEOCAPTUREIVNVPROC glad_glGetVideoCaptureivNV; +#define glGetVideoCaptureivNV glad_glGetVideoCaptureivNV +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); +GLAPI PFNGLGETVIDEOCAPTURESTREAMIVNVPROC glad_glGetVideoCaptureStreamivNV; +#define glGetVideoCaptureStreamivNV glad_glGetVideoCaptureStreamivNV +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVIDEOCAPTURESTREAMFVNVPROC glad_glGetVideoCaptureStreamfvNV; +#define glGetVideoCaptureStreamfvNV glad_glGetVideoCaptureStreamfvNV +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVIDEOCAPTURESTREAMDVNVPROC glad_glGetVideoCaptureStreamdvNV; +#define glGetVideoCaptureStreamdvNV glad_glGetVideoCaptureStreamdvNV +typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC)(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); +GLAPI PFNGLVIDEOCAPTURENVPROC glad_glVideoCaptureNV; +#define glVideoCaptureNV glad_glVideoCaptureNV +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); +GLAPI PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC glad_glVideoCaptureStreamParameterivNV; +#define glVideoCaptureStreamParameterivNV glad_glVideoCaptureStreamParameterivNV +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); +GLAPI PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC glad_glVideoCaptureStreamParameterfvNV; +#define glVideoCaptureStreamParameterfvNV glad_glVideoCaptureStreamParameterfvNV +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); +GLAPI PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC glad_glVideoCaptureStreamParameterdvNV; +#define glVideoCaptureStreamParameterdvNV glad_glVideoCaptureStreamParameterdvNV +#endif +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +GLAPI int GLAD_GL_NV_viewport_array2; +#endif +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +GLAPI int GLAD_GL_NV_viewport_swizzle; +typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +GLAPI PFNGLVIEWPORTSWIZZLENVPROC glad_glViewportSwizzleNV; +#define glViewportSwizzleNV glad_glViewportSwizzleNV +#endif +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +GLAPI int GLAD_GL_OES_byte_coordinates; +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC)(GLenum texture, GLbyte s); +GLAPI PFNGLMULTITEXCOORD1BOESPROC glad_glMultiTexCoord1bOES; +#define glMultiTexCoord1bOES glad_glMultiTexCoord1bOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC)(GLenum texture, const GLbyte *coords); +GLAPI PFNGLMULTITEXCOORD1BVOESPROC glad_glMultiTexCoord1bvOES; +#define glMultiTexCoord1bvOES glad_glMultiTexCoord1bvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC)(GLenum texture, GLbyte s, GLbyte t); +GLAPI PFNGLMULTITEXCOORD2BOESPROC glad_glMultiTexCoord2bOES; +#define glMultiTexCoord2bOES glad_glMultiTexCoord2bOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC)(GLenum texture, const GLbyte *coords); +GLAPI PFNGLMULTITEXCOORD2BVOESPROC glad_glMultiTexCoord2bvOES; +#define glMultiTexCoord2bvOES glad_glMultiTexCoord2bvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC)(GLenum texture, GLbyte s, GLbyte t, GLbyte r); +GLAPI PFNGLMULTITEXCOORD3BOESPROC glad_glMultiTexCoord3bOES; +#define glMultiTexCoord3bOES glad_glMultiTexCoord3bOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC)(GLenum texture, const GLbyte *coords); +GLAPI PFNGLMULTITEXCOORD3BVOESPROC glad_glMultiTexCoord3bvOES; +#define glMultiTexCoord3bvOES glad_glMultiTexCoord3bvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC)(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI PFNGLMULTITEXCOORD4BOESPROC glad_glMultiTexCoord4bOES; +#define glMultiTexCoord4bOES glad_glMultiTexCoord4bOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC)(GLenum texture, const GLbyte *coords); +GLAPI PFNGLMULTITEXCOORD4BVOESPROC glad_glMultiTexCoord4bvOES; +#define glMultiTexCoord4bvOES glad_glMultiTexCoord4bvOES +typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC)(GLbyte s); +GLAPI PFNGLTEXCOORD1BOESPROC glad_glTexCoord1bOES; +#define glTexCoord1bOES glad_glTexCoord1bOES +typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLTEXCOORD1BVOESPROC glad_glTexCoord1bvOES; +#define glTexCoord1bvOES glad_glTexCoord1bvOES +typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC)(GLbyte s, GLbyte t); +GLAPI PFNGLTEXCOORD2BOESPROC glad_glTexCoord2bOES; +#define glTexCoord2bOES glad_glTexCoord2bOES +typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLTEXCOORD2BVOESPROC glad_glTexCoord2bvOES; +#define glTexCoord2bvOES glad_glTexCoord2bvOES +typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC)(GLbyte s, GLbyte t, GLbyte r); +GLAPI PFNGLTEXCOORD3BOESPROC glad_glTexCoord3bOES; +#define glTexCoord3bOES glad_glTexCoord3bOES +typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLTEXCOORD3BVOESPROC glad_glTexCoord3bvOES; +#define glTexCoord3bvOES glad_glTexCoord3bvOES +typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC)(GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI PFNGLTEXCOORD4BOESPROC glad_glTexCoord4bOES; +#define glTexCoord4bOES glad_glTexCoord4bOES +typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLTEXCOORD4BVOESPROC glad_glTexCoord4bvOES; +#define glTexCoord4bvOES glad_glTexCoord4bvOES +typedef void (APIENTRYP PFNGLVERTEX2BOESPROC)(GLbyte x, GLbyte y); +GLAPI PFNGLVERTEX2BOESPROC glad_glVertex2bOES; +#define glVertex2bOES glad_glVertex2bOES +typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLVERTEX2BVOESPROC glad_glVertex2bvOES; +#define glVertex2bvOES glad_glVertex2bvOES +typedef void (APIENTRYP PFNGLVERTEX3BOESPROC)(GLbyte x, GLbyte y, GLbyte z); +GLAPI PFNGLVERTEX3BOESPROC glad_glVertex3bOES; +#define glVertex3bOES glad_glVertex3bOES +typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLVERTEX3BVOESPROC glad_glVertex3bvOES; +#define glVertex3bvOES glad_glVertex3bvOES +typedef void (APIENTRYP PFNGLVERTEX4BOESPROC)(GLbyte x, GLbyte y, GLbyte z, GLbyte w); +GLAPI PFNGLVERTEX4BOESPROC glad_glVertex4bOES; +#define glVertex4bOES glad_glVertex4bOES +typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLVERTEX4BVOESPROC glad_glVertex4bvOES; +#define glVertex4bvOES glad_glVertex4bvOES +#endif +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +GLAPI int GLAD_GL_OES_compressed_paletted_texture; +#endif +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +GLAPI int GLAD_GL_OES_fixed_point; +typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC)(GLenum func, GLfixed ref); +GLAPI PFNGLALPHAFUNCXOESPROC glad_glAlphaFuncxOES; +#define glAlphaFuncxOES glad_glAlphaFuncxOES +typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI PFNGLCLEARCOLORXOESPROC glad_glClearColorxOES; +#define glClearColorxOES glad_glClearColorxOES +typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC)(GLfixed depth); +GLAPI PFNGLCLEARDEPTHXOESPROC glad_glClearDepthxOES; +#define glClearDepthxOES glad_glClearDepthxOES +typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC)(GLenum plane, const GLfixed *equation); +GLAPI PFNGLCLIPPLANEXOESPROC glad_glClipPlanexOES; +#define glClipPlanexOES glad_glClipPlanexOES +typedef void (APIENTRYP PFNGLCOLOR4XOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI PFNGLCOLOR4XOESPROC glad_glColor4xOES; +#define glColor4xOES glad_glColor4xOES +typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC)(GLfixed n, GLfixed f); +GLAPI PFNGLDEPTHRANGEXOESPROC glad_glDepthRangexOES; +#define glDepthRangexOES glad_glDepthRangexOES +typedef void (APIENTRYP PFNGLFOGXOESPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLFOGXOESPROC glad_glFogxOES; +#define glFogxOES glad_glFogxOES +typedef void (APIENTRYP PFNGLFOGXVOESPROC)(GLenum pname, const GLfixed *param); +GLAPI PFNGLFOGXVOESPROC glad_glFogxvOES; +#define glFogxvOES glad_glFogxvOES +typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI PFNGLFRUSTUMXOESPROC glad_glFrustumxOES; +#define glFrustumxOES glad_glFrustumxOES +typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC)(GLenum plane, GLfixed *equation); +GLAPI PFNGLGETCLIPPLANEXOESPROC glad_glGetClipPlanexOES; +#define glGetClipPlanexOES glad_glGetClipPlanexOES +typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC)(GLenum pname, GLfixed *params); +GLAPI PFNGLGETFIXEDVOESPROC glad_glGetFixedvOES; +#define glGetFixedvOES glad_glGetFixedvOES +typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +GLAPI PFNGLGETTEXENVXVOESPROC glad_glGetTexEnvxvOES; +#define glGetTexEnvxvOES glad_glGetTexEnvxvOES +typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +GLAPI PFNGLGETTEXPARAMETERXVOESPROC glad_glGetTexParameterxvOES; +#define glGetTexParameterxvOES glad_glGetTexParameterxvOES +typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLLIGHTMODELXOESPROC glad_glLightModelxOES; +#define glLightModelxOES glad_glLightModelxOES +typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC)(GLenum pname, const GLfixed *param); +GLAPI PFNGLLIGHTMODELXVOESPROC glad_glLightModelxvOES; +#define glLightModelxvOES glad_glLightModelxvOES +typedef void (APIENTRYP PFNGLLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed param); +GLAPI PFNGLLIGHTXOESPROC glad_glLightxOES; +#define glLightxOES glad_glLightxOES +typedef void (APIENTRYP PFNGLLIGHTXVOESPROC)(GLenum light, GLenum pname, const GLfixed *params); +GLAPI PFNGLLIGHTXVOESPROC glad_glLightxvOES; +#define glLightxvOES glad_glLightxvOES +typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC)(GLfixed width); +GLAPI PFNGLLINEWIDTHXOESPROC glad_glLineWidthxOES; +#define glLineWidthxOES glad_glLineWidthxOES +typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC)(const GLfixed *m); +GLAPI PFNGLLOADMATRIXXOESPROC glad_glLoadMatrixxOES; +#define glLoadMatrixxOES glad_glLoadMatrixxOES +typedef void (APIENTRYP PFNGLMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +GLAPI PFNGLMATERIALXOESPROC glad_glMaterialxOES; +#define glMaterialxOES glad_glMaterialxOES +typedef void (APIENTRYP PFNGLMATERIALXVOESPROC)(GLenum face, GLenum pname, const GLfixed *param); +GLAPI PFNGLMATERIALXVOESPROC glad_glMaterialxvOES; +#define glMaterialxvOES glad_glMaterialxvOES +typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC)(const GLfixed *m); +GLAPI PFNGLMULTMATRIXXOESPROC glad_glMultMatrixxOES; +#define glMultMatrixxOES glad_glMultMatrixxOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI PFNGLMULTITEXCOORD4XOESPROC glad_glMultiTexCoord4xOES; +#define glMultiTexCoord4xOES glad_glMultiTexCoord4xOES +typedef void (APIENTRYP PFNGLNORMAL3XOESPROC)(GLfixed nx, GLfixed ny, GLfixed nz); +GLAPI PFNGLNORMAL3XOESPROC glad_glNormal3xOES; +#define glNormal3xOES glad_glNormal3xOES +typedef void (APIENTRYP PFNGLORTHOXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI PFNGLORTHOXOESPROC glad_glOrthoxOES; +#define glOrthoxOES glad_glOrthoxOES +typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC)(GLenum pname, const GLfixed *params); +GLAPI PFNGLPOINTPARAMETERXVOESPROC glad_glPointParameterxvOES; +#define glPointParameterxvOES glad_glPointParameterxvOES +typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC)(GLfixed size); +GLAPI PFNGLPOINTSIZEXOESPROC glad_glPointSizexOES; +#define glPointSizexOES glad_glPointSizexOES +typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC)(GLfixed factor, GLfixed units); +GLAPI PFNGLPOLYGONOFFSETXOESPROC glad_glPolygonOffsetxOES; +#define glPolygonOffsetxOES glad_glPolygonOffsetxOES +typedef void (APIENTRYP PFNGLROTATEXOESPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLROTATEXOESPROC glad_glRotatexOES; +#define glRotatexOES glad_glRotatexOES +typedef void (APIENTRYP PFNGLSCALEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLSCALEXOESPROC glad_glScalexOES; +#define glScalexOES glad_glScalexOES +typedef void (APIENTRYP PFNGLTEXENVXOESPROC)(GLenum target, GLenum pname, GLfixed param); +GLAPI PFNGLTEXENVXOESPROC glad_glTexEnvxOES; +#define glTexEnvxOES glad_glTexEnvxOES +typedef void (APIENTRYP PFNGLTEXENVXVOESPROC)(GLenum target, GLenum pname, const GLfixed *params); +GLAPI PFNGLTEXENVXVOESPROC glad_glTexEnvxvOES; +#define glTexEnvxvOES glad_glTexEnvxvOES +typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); +GLAPI PFNGLTEXPARAMETERXOESPROC glad_glTexParameterxOES; +#define glTexParameterxOES glad_glTexParameterxOES +typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed *params); +GLAPI PFNGLTEXPARAMETERXVOESPROC glad_glTexParameterxvOES; +#define glTexParameterxvOES glad_glTexParameterxvOES +typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLTRANSLATEXOESPROC glad_glTranslatexOES; +#define glTranslatexOES glad_glTranslatexOES +typedef void (APIENTRYP PFNGLGETLIGHTXVOESPROC)(GLenum light, GLenum pname, GLfixed *params); +GLAPI PFNGLGETLIGHTXVOESPROC glad_glGetLightxvOES; +#define glGetLightxvOES glad_glGetLightxvOES +typedef void (APIENTRYP PFNGLGETMATERIALXVOESPROC)(GLenum face, GLenum pname, GLfixed *params); +GLAPI PFNGLGETMATERIALXVOESPROC glad_glGetMaterialxvOES; +#define glGetMaterialxvOES glad_glGetMaterialxvOES +typedef void (APIENTRYP PFNGLPOINTPARAMETERXOESPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLPOINTPARAMETERXOESPROC glad_glPointParameterxOES; +#define glPointParameterxOES glad_glPointParameterxOES +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEXOESPROC)(GLclampx value, GLboolean invert); +GLAPI PFNGLSAMPLECOVERAGEXOESPROC glad_glSampleCoveragexOES; +#define glSampleCoveragexOES glad_glSampleCoveragexOES +typedef void (APIENTRYP PFNGLACCUMXOESPROC)(GLenum op, GLfixed value); +GLAPI PFNGLACCUMXOESPROC glad_glAccumxOES; +#define glAccumxOES glad_glAccumxOES +typedef void (APIENTRYP PFNGLBITMAPXOESPROC)(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +GLAPI PFNGLBITMAPXOESPROC glad_glBitmapxOES; +#define glBitmapxOES glad_glBitmapxOES +typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI PFNGLBLENDCOLORXOESPROC glad_glBlendColorxOES; +#define glBlendColorxOES glad_glBlendColorxOES +typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI PFNGLCLEARACCUMXOESPROC glad_glClearAccumxOES; +#define glClearAccumxOES glad_glClearAccumxOES +typedef void (APIENTRYP PFNGLCOLOR3XOESPROC)(GLfixed red, GLfixed green, GLfixed blue); +GLAPI PFNGLCOLOR3XOESPROC glad_glColor3xOES; +#define glColor3xOES glad_glColor3xOES +typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC)(const GLfixed *components); +GLAPI PFNGLCOLOR3XVOESPROC glad_glColor3xvOES; +#define glColor3xvOES glad_glColor3xvOES +typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC)(const GLfixed *components); +GLAPI PFNGLCOLOR4XVOESPROC glad_glColor4xvOES; +#define glColor4xvOES glad_glColor4xvOES +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); +GLAPI PFNGLCONVOLUTIONPARAMETERXOESPROC glad_glConvolutionParameterxOES; +#define glConvolutionParameterxOES glad_glConvolutionParameterxOES +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed *params); +GLAPI PFNGLCONVOLUTIONPARAMETERXVOESPROC glad_glConvolutionParameterxvOES; +#define glConvolutionParameterxvOES glad_glConvolutionParameterxvOES +typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC)(GLfixed u); +GLAPI PFNGLEVALCOORD1XOESPROC glad_glEvalCoord1xOES; +#define glEvalCoord1xOES glad_glEvalCoord1xOES +typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLEVALCOORD1XVOESPROC glad_glEvalCoord1xvOES; +#define glEvalCoord1xvOES glad_glEvalCoord1xvOES +typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC)(GLfixed u, GLfixed v); +GLAPI PFNGLEVALCOORD2XOESPROC glad_glEvalCoord2xOES; +#define glEvalCoord2xOES glad_glEvalCoord2xOES +typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLEVALCOORD2XVOESPROC glad_glEvalCoord2xvOES; +#define glEvalCoord2xvOES glad_glEvalCoord2xvOES +typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC)(GLsizei n, GLenum type, const GLfixed *buffer); +GLAPI PFNGLFEEDBACKBUFFERXOESPROC glad_glFeedbackBufferxOES; +#define glFeedbackBufferxOES glad_glFeedbackBufferxOES +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERXVOESPROC glad_glGetConvolutionParameterxvOES; +#define glGetConvolutionParameterxvOES glad_glGetConvolutionParameterxvOES +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERXVOESPROC glad_glGetHistogramParameterxvOES; +#define glGetHistogramParameterxvOES glad_glGetHistogramParameterxvOES +typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed *params); +GLAPI PFNGLGETLIGHTXOESPROC glad_glGetLightxOES; +#define glGetLightxOES glad_glGetLightxOES +typedef void (APIENTRYP PFNGLGETMAPXVOESPROC)(GLenum target, GLenum query, GLfixed *v); +GLAPI PFNGLGETMAPXVOESPROC glad_glGetMapxvOES; +#define glGetMapxvOES glad_glGetMapxvOES +typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +GLAPI PFNGLGETMATERIALXOESPROC glad_glGetMaterialxOES; +#define glGetMaterialxOES glad_glGetMaterialxOES +typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC)(GLenum map, GLint size, GLfixed *values); +GLAPI PFNGLGETPIXELMAPXVPROC glad_glGetPixelMapxv; +#define glGetPixelMapxv glad_glGetPixelMapxv +typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC)(GLenum coord, GLenum pname, GLfixed *params); +GLAPI PFNGLGETTEXGENXVOESPROC glad_glGetTexGenxvOES; +#define glGetTexGenxvOES glad_glGetTexGenxvOES +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC)(GLenum target, GLint level, GLenum pname, GLfixed *params); +GLAPI PFNGLGETTEXLEVELPARAMETERXVOESPROC glad_glGetTexLevelParameterxvOES; +#define glGetTexLevelParameterxvOES glad_glGetTexLevelParameterxvOES +typedef void (APIENTRYP PFNGLINDEXXOESPROC)(GLfixed component); +GLAPI PFNGLINDEXXOESPROC glad_glIndexxOES; +#define glIndexxOES glad_glIndexxOES +typedef void (APIENTRYP PFNGLINDEXXVOESPROC)(const GLfixed *component); +GLAPI PFNGLINDEXXVOESPROC glad_glIndexxvOES; +#define glIndexxvOES glad_glIndexxvOES +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); +GLAPI PFNGLLOADTRANSPOSEMATRIXXOESPROC glad_glLoadTransposeMatrixxOES; +#define glLoadTransposeMatrixxOES glad_glLoadTransposeMatrixxOES +typedef void (APIENTRYP PFNGLMAP1XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +GLAPI PFNGLMAP1XOESPROC glad_glMap1xOES; +#define glMap1xOES glad_glMap1xOES +typedef void (APIENTRYP PFNGLMAP2XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +GLAPI PFNGLMAP2XOESPROC glad_glMap2xOES; +#define glMap2xOES glad_glMap2xOES +typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC)(GLint n, GLfixed u1, GLfixed u2); +GLAPI PFNGLMAPGRID1XOESPROC glad_glMapGrid1xOES; +#define glMapGrid1xOES glad_glMapGrid1xOES +typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +GLAPI PFNGLMAPGRID2XOESPROC glad_glMapGrid2xOES; +#define glMapGrid2xOES glad_glMapGrid2xOES +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); +GLAPI PFNGLMULTTRANSPOSEMATRIXXOESPROC glad_glMultTransposeMatrixxOES; +#define glMultTransposeMatrixxOES glad_glMultTransposeMatrixxOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC)(GLenum texture, GLfixed s); +GLAPI PFNGLMULTITEXCOORD1XOESPROC glad_glMultiTexCoord1xOES; +#define glMultiTexCoord1xOES glad_glMultiTexCoord1xOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC)(GLenum texture, const GLfixed *coords); +GLAPI PFNGLMULTITEXCOORD1XVOESPROC glad_glMultiTexCoord1xvOES; +#define glMultiTexCoord1xvOES glad_glMultiTexCoord1xvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC)(GLenum texture, GLfixed s, GLfixed t); +GLAPI PFNGLMULTITEXCOORD2XOESPROC glad_glMultiTexCoord2xOES; +#define glMultiTexCoord2xOES glad_glMultiTexCoord2xOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC)(GLenum texture, const GLfixed *coords); +GLAPI PFNGLMULTITEXCOORD2XVOESPROC glad_glMultiTexCoord2xvOES; +#define glMultiTexCoord2xvOES glad_glMultiTexCoord2xvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r); +GLAPI PFNGLMULTITEXCOORD3XOESPROC glad_glMultiTexCoord3xOES; +#define glMultiTexCoord3xOES glad_glMultiTexCoord3xOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC)(GLenum texture, const GLfixed *coords); +GLAPI PFNGLMULTITEXCOORD3XVOESPROC glad_glMultiTexCoord3xvOES; +#define glMultiTexCoord3xvOES glad_glMultiTexCoord3xvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC)(GLenum texture, const GLfixed *coords); +GLAPI PFNGLMULTITEXCOORD4XVOESPROC glad_glMultiTexCoord4xvOES; +#define glMultiTexCoord4xvOES glad_glMultiTexCoord4xvOES +typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLNORMAL3XVOESPROC glad_glNormal3xvOES; +#define glNormal3xvOES glad_glNormal3xvOES +typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC)(GLfixed token); +GLAPI PFNGLPASSTHROUGHXOESPROC glad_glPassThroughxOES; +#define glPassThroughxOES glad_glPassThroughxOES +typedef void (APIENTRYP PFNGLPIXELMAPXPROC)(GLenum map, GLint size, const GLfixed *values); +GLAPI PFNGLPIXELMAPXPROC glad_glPixelMapx; +#define glPixelMapx glad_glPixelMapx +typedef void (APIENTRYP PFNGLPIXELSTOREXPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLPIXELSTOREXPROC glad_glPixelStorex; +#define glPixelStorex glad_glPixelStorex +typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLPIXELTRANSFERXOESPROC glad_glPixelTransferxOES; +#define glPixelTransferxOES glad_glPixelTransferxOES +typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC)(GLfixed xfactor, GLfixed yfactor); +GLAPI PFNGLPIXELZOOMXOESPROC glad_glPixelZoomxOES; +#define glPixelZoomxOES glad_glPixelZoomxOES +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC)(GLsizei n, const GLuint *textures, const GLfixed *priorities); +GLAPI PFNGLPRIORITIZETEXTURESXOESPROC glad_glPrioritizeTexturesxOES; +#define glPrioritizeTexturesxOES glad_glPrioritizeTexturesxOES +typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC)(GLfixed x, GLfixed y); +GLAPI PFNGLRASTERPOS2XOESPROC glad_glRasterPos2xOES; +#define glRasterPos2xOES glad_glRasterPos2xOES +typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLRASTERPOS2XVOESPROC glad_glRasterPos2xvOES; +#define glRasterPos2xvOES glad_glRasterPos2xvOES +typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC)(GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLRASTERPOS3XOESPROC glad_glRasterPos3xOES; +#define glRasterPos3xOES glad_glRasterPos3xOES +typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLRASTERPOS3XVOESPROC glad_glRasterPos3xvOES; +#define glRasterPos3xvOES glad_glRasterPos3xvOES +typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed w); +GLAPI PFNGLRASTERPOS4XOESPROC glad_glRasterPos4xOES; +#define glRasterPos4xOES glad_glRasterPos4xOES +typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLRASTERPOS4XVOESPROC glad_glRasterPos4xvOES; +#define glRasterPos4xvOES glad_glRasterPos4xvOES +typedef void (APIENTRYP PFNGLRECTXOESPROC)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +GLAPI PFNGLRECTXOESPROC glad_glRectxOES; +#define glRectxOES glad_glRectxOES +typedef void (APIENTRYP PFNGLRECTXVOESPROC)(const GLfixed *v1, const GLfixed *v2); +GLAPI PFNGLRECTXVOESPROC glad_glRectxvOES; +#define glRectxvOES glad_glRectxvOES +typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC)(GLfixed s); +GLAPI PFNGLTEXCOORD1XOESPROC glad_glTexCoord1xOES; +#define glTexCoord1xOES glad_glTexCoord1xOES +typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLTEXCOORD1XVOESPROC glad_glTexCoord1xvOES; +#define glTexCoord1xvOES glad_glTexCoord1xvOES +typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC)(GLfixed s, GLfixed t); +GLAPI PFNGLTEXCOORD2XOESPROC glad_glTexCoord2xOES; +#define glTexCoord2xOES glad_glTexCoord2xOES +typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLTEXCOORD2XVOESPROC glad_glTexCoord2xvOES; +#define glTexCoord2xvOES glad_glTexCoord2xvOES +typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC)(GLfixed s, GLfixed t, GLfixed r); +GLAPI PFNGLTEXCOORD3XOESPROC glad_glTexCoord3xOES; +#define glTexCoord3xOES glad_glTexCoord3xOES +typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLTEXCOORD3XVOESPROC glad_glTexCoord3xvOES; +#define glTexCoord3xvOES glad_glTexCoord3xvOES +typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC)(GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI PFNGLTEXCOORD4XOESPROC glad_glTexCoord4xOES; +#define glTexCoord4xOES glad_glTexCoord4xOES +typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLTEXCOORD4XVOESPROC glad_glTexCoord4xvOES; +#define glTexCoord4xvOES glad_glTexCoord4xvOES +typedef void (APIENTRYP PFNGLTEXGENXOESPROC)(GLenum coord, GLenum pname, GLfixed param); +GLAPI PFNGLTEXGENXOESPROC glad_glTexGenxOES; +#define glTexGenxOES glad_glTexGenxOES +typedef void (APIENTRYP PFNGLTEXGENXVOESPROC)(GLenum coord, GLenum pname, const GLfixed *params); +GLAPI PFNGLTEXGENXVOESPROC glad_glTexGenxvOES; +#define glTexGenxvOES glad_glTexGenxvOES +typedef void (APIENTRYP PFNGLVERTEX2XOESPROC)(GLfixed x); +GLAPI PFNGLVERTEX2XOESPROC glad_glVertex2xOES; +#define glVertex2xOES glad_glVertex2xOES +typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLVERTEX2XVOESPROC glad_glVertex2xvOES; +#define glVertex2xvOES glad_glVertex2xvOES +typedef void (APIENTRYP PFNGLVERTEX3XOESPROC)(GLfixed x, GLfixed y); +GLAPI PFNGLVERTEX3XOESPROC glad_glVertex3xOES; +#define glVertex3xOES glad_glVertex3xOES +typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLVERTEX3XVOESPROC glad_glVertex3xvOES; +#define glVertex3xvOES glad_glVertex3xvOES +typedef void (APIENTRYP PFNGLVERTEX4XOESPROC)(GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLVERTEX4XOESPROC glad_glVertex4xOES; +#define glVertex4xOES glad_glVertex4xOES +typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLVERTEX4XVOESPROC glad_glVertex4xvOES; +#define glVertex4xvOES glad_glVertex4xvOES +#endif +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +GLAPI int GLAD_GL_OES_query_matrix; +typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC)(GLfixed *mantissa, GLint *exponent); +GLAPI PFNGLQUERYMATRIXXOESPROC glad_glQueryMatrixxOES; +#define glQueryMatrixxOES glad_glQueryMatrixxOES +#endif +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +GLAPI int GLAD_GL_OES_read_format; +#endif +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +GLAPI int GLAD_GL_OES_single_precision; +typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC)(GLclampf depth); +GLAPI PFNGLCLEARDEPTHFOESPROC glad_glClearDepthfOES; +#define glClearDepthfOES glad_glClearDepthfOES +typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC)(GLenum plane, const GLfloat *equation); +GLAPI PFNGLCLIPPLANEFOESPROC glad_glClipPlanefOES; +#define glClipPlanefOES glad_glClipPlanefOES +typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC)(GLclampf n, GLclampf f); +GLAPI PFNGLDEPTHRANGEFOESPROC glad_glDepthRangefOES; +#define glDepthRangefOES glad_glDepthRangefOES +typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +GLAPI PFNGLFRUSTUMFOESPROC glad_glFrustumfOES; +#define glFrustumfOES glad_glFrustumfOES +typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC)(GLenum plane, GLfloat *equation); +GLAPI PFNGLGETCLIPPLANEFOESPROC glad_glGetClipPlanefOES; +#define glGetClipPlanefOES glad_glGetClipPlanefOES +typedef void (APIENTRYP PFNGLORTHOFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +GLAPI PFNGLORTHOFOESPROC glad_glOrthofOES; +#define glOrthofOES glad_glOrthofOES +#endif +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +GLAPI int GLAD_GL_OML_interlace; +#endif +#ifndef GL_OML_resample +#define GL_OML_resample 1 +GLAPI int GLAD_GL_OML_resample; +#endif +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +GLAPI int GLAD_GL_OML_subsample; +#endif +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +GLAPI int GLAD_GL_OVR_multiview; +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +GLAPI PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR; +#define glFramebufferTextureMultiviewOVR glad_glFramebufferTextureMultiviewOVR +#endif +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +GLAPI int GLAD_GL_OVR_multiview2; +#endif +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +GLAPI int GLAD_GL_PGI_misc_hints; +typedef void (APIENTRYP PFNGLHINTPGIPROC)(GLenum target, GLint mode); +GLAPI PFNGLHINTPGIPROC glad_glHintPGI; +#define glHintPGI glad_glHintPGI +#endif +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +GLAPI int GLAD_GL_PGI_vertex_hints; +#endif +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +GLAPI int GLAD_GL_REND_screen_coordinates; +#endif +#ifndef GL_S3_s3tc +#define GL_S3_s3tc 1 +GLAPI int GLAD_GL_S3_s3tc; +#endif +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +GLAPI int GLAD_GL_SGIS_detail_texture; +typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat *points); +GLAPI PFNGLDETAILTEXFUNCSGISPROC glad_glDetailTexFuncSGIS; +#define glDetailTexFuncSGIS glad_glDetailTexFuncSGIS +typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC)(GLenum target, GLfloat *points); +GLAPI PFNGLGETDETAILTEXFUNCSGISPROC glad_glGetDetailTexFuncSGIS; +#define glGetDetailTexFuncSGIS glad_glGetDetailTexFuncSGIS +#endif +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +GLAPI int GLAD_GL_SGIS_fog_function; +typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC)(GLsizei n, const GLfloat *points); +GLAPI PFNGLFOGFUNCSGISPROC glad_glFogFuncSGIS; +#define glFogFuncSGIS glad_glFogFuncSGIS +typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC)(GLfloat *points); +GLAPI PFNGLGETFOGFUNCSGISPROC glad_glGetFogFuncSGIS; +#define glGetFogFuncSGIS glad_glGetFogFuncSGIS +#endif +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +GLAPI int GLAD_GL_SGIS_generate_mipmap; +#endif +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +GLAPI int GLAD_GL_SGIS_multisample; +typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC)(GLclampf value, GLboolean invert); +GLAPI PFNGLSAMPLEMASKSGISPROC glad_glSampleMaskSGIS; +#define glSampleMaskSGIS glad_glSampleMaskSGIS +typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC)(GLenum pattern); +GLAPI PFNGLSAMPLEPATTERNSGISPROC glad_glSamplePatternSGIS; +#define glSamplePatternSGIS glad_glSamplePatternSGIS +#endif +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +GLAPI int GLAD_GL_SGIS_pixel_texture; +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC)(GLenum pname, GLint param); +GLAPI PFNGLPIXELTEXGENPARAMETERISGISPROC glad_glPixelTexGenParameteriSGIS; +#define glPixelTexGenParameteriSGIS glad_glPixelTexGenParameteriSGIS +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLPIXELTEXGENPARAMETERIVSGISPROC glad_glPixelTexGenParameterivSGIS; +#define glPixelTexGenParameterivSGIS glad_glPixelTexGenParameterivSGIS +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPIXELTEXGENPARAMETERFSGISPROC glad_glPixelTexGenParameterfSGIS; +#define glPixelTexGenParameterfSGIS glad_glPixelTexGenParameterfSGIS +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPIXELTEXGENPARAMETERFVSGISPROC glad_glPixelTexGenParameterfvSGIS; +#define glPixelTexGenParameterfvSGIS glad_glPixelTexGenParameterfvSGIS +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, GLint *params); +GLAPI PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC glad_glGetPixelTexGenParameterivSGIS; +#define glGetPixelTexGenParameterivSGIS glad_glGetPixelTexGenParameterivSGIS +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, GLfloat *params); +GLAPI PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC glad_glGetPixelTexGenParameterfvSGIS; +#define glGetPixelTexGenParameterfvSGIS glad_glGetPixelTexGenParameterfvSGIS +#endif +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +GLAPI int GLAD_GL_SGIS_point_line_texgen; +#endif +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +GLAPI int GLAD_GL_SGIS_point_parameters; +typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFSGISPROC glad_glPointParameterfSGIS; +#define glPointParameterfSGIS glad_glPointParameterfSGIS +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVSGISPROC glad_glPointParameterfvSGIS; +#define glPointParameterfvSGIS glad_glPointParameterfvSGIS +#endif +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +GLAPI int GLAD_GL_SGIS_sharpen_texture; +typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat *points); +GLAPI PFNGLSHARPENTEXFUNCSGISPROC glad_glSharpenTexFuncSGIS; +#define glSharpenTexFuncSGIS glad_glSharpenTexFuncSGIS +typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC)(GLenum target, GLfloat *points); +GLAPI PFNGLGETSHARPENTEXFUNCSGISPROC glad_glGetSharpenTexFuncSGIS; +#define glGetSharpenTexFuncSGIS glad_glGetSharpenTexFuncSGIS +#endif +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +GLAPI int GLAD_GL_SGIS_texture4D; +typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE4DSGISPROC glad_glTexImage4DSGIS; +#define glTexImage4DSGIS glad_glTexImage4DSGIS +typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE4DSGISPROC glad_glTexSubImage4DSGIS; +#define glTexSubImage4DSGIS glad_glTexSubImage4DSGIS +#endif +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +GLAPI int GLAD_GL_SGIS_texture_border_clamp; +#endif +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +GLAPI int GLAD_GL_SGIS_texture_color_mask; +typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI PFNGLTEXTURECOLORMASKSGISPROC glad_glTextureColorMaskSGIS; +#define glTextureColorMaskSGIS glad_glTextureColorMaskSGIS +#endif +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +GLAPI int GLAD_GL_SGIS_texture_edge_clamp; +#endif +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +GLAPI int GLAD_GL_SGIS_texture_filter4; +typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLfloat *weights); +GLAPI PFNGLGETTEXFILTERFUNCSGISPROC glad_glGetTexFilterFuncSGIS; +#define glGetTexFilterFuncSGIS glad_glGetTexFilterFuncSGIS +typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +GLAPI PFNGLTEXFILTERFUNCSGISPROC glad_glTexFilterFuncSGIS; +#define glTexFilterFuncSGIS glad_glTexFilterFuncSGIS +#endif +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +GLAPI int GLAD_GL_SGIS_texture_lod; +#endif +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 +GLAPI int GLAD_GL_SGIS_texture_select; +#endif +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +GLAPI int GLAD_GL_SGIX_async; +typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC)(GLuint marker); +GLAPI PFNGLASYNCMARKERSGIXPROC glad_glAsyncMarkerSGIX; +#define glAsyncMarkerSGIX glad_glAsyncMarkerSGIX +typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC)(GLuint *markerp); +GLAPI PFNGLFINISHASYNCSGIXPROC glad_glFinishAsyncSGIX; +#define glFinishAsyncSGIX glad_glFinishAsyncSGIX +typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC)(GLuint *markerp); +GLAPI PFNGLPOLLASYNCSGIXPROC glad_glPollAsyncSGIX; +#define glPollAsyncSGIX glad_glPollAsyncSGIX +typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC)(GLsizei range); +GLAPI PFNGLGENASYNCMARKERSSGIXPROC glad_glGenAsyncMarkersSGIX; +#define glGenAsyncMarkersSGIX glad_glGenAsyncMarkersSGIX +typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC)(GLuint marker, GLsizei range); +GLAPI PFNGLDELETEASYNCMARKERSSGIXPROC glad_glDeleteAsyncMarkersSGIX; +#define glDeleteAsyncMarkersSGIX glad_glDeleteAsyncMarkersSGIX +typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC)(GLuint marker); +GLAPI PFNGLISASYNCMARKERSGIXPROC glad_glIsAsyncMarkerSGIX; +#define glIsAsyncMarkerSGIX glad_glIsAsyncMarkerSGIX +#endif +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +GLAPI int GLAD_GL_SGIX_async_histogram; +#endif +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +GLAPI int GLAD_GL_SGIX_async_pixel; +#endif +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +GLAPI int GLAD_GL_SGIX_blend_alpha_minmax; +#endif +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +GLAPI int GLAD_GL_SGIX_calligraphic_fragment; +#endif +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +GLAPI int GLAD_GL_SGIX_clipmap; +#endif +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +GLAPI int GLAD_GL_SGIX_convolution_accuracy; +#endif +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +GLAPI int GLAD_GL_SGIX_depth_pass_instrument; +#endif +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +GLAPI int GLAD_GL_SGIX_depth_texture; +#endif +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 +GLAPI int GLAD_GL_SGIX_flush_raster; +typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC)(void); +GLAPI PFNGLFLUSHRASTERSGIXPROC glad_glFlushRasterSGIX; +#define glFlushRasterSGIX glad_glFlushRasterSGIX +#endif +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +GLAPI int GLAD_GL_SGIX_fog_offset; +#endif +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +GLAPI int GLAD_GL_SGIX_fragment_lighting; +typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC)(GLenum face, GLenum mode); +GLAPI PFNGLFRAGMENTCOLORMATERIALSGIXPROC glad_glFragmentColorMaterialSGIX; +#define glFragmentColorMaterialSGIX glad_glFragmentColorMaterialSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC)(GLenum light, GLenum pname, GLfloat param); +GLAPI PFNGLFRAGMENTLIGHTFSGIXPROC glad_glFragmentLightfSGIX; +#define glFragmentLightfSGIX glad_glFragmentLightfSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, const GLfloat *params); +GLAPI PFNGLFRAGMENTLIGHTFVSGIXPROC glad_glFragmentLightfvSGIX; +#define glFragmentLightfvSGIX glad_glFragmentLightfvSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC)(GLenum light, GLenum pname, GLint param); +GLAPI PFNGLFRAGMENTLIGHTISGIXPROC glad_glFragmentLightiSGIX; +#define glFragmentLightiSGIX glad_glFragmentLightiSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, const GLint *params); +GLAPI PFNGLFRAGMENTLIGHTIVSGIXPROC glad_glFragmentLightivSGIX; +#define glFragmentLightivSGIX glad_glFragmentLightivSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLFRAGMENTLIGHTMODELFSGIXPROC glad_glFragmentLightModelfSGIX; +#define glFragmentLightModelfSGIX glad_glFragmentLightModelfSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLFRAGMENTLIGHTMODELFVSGIXPROC glad_glFragmentLightModelfvSGIX; +#define glFragmentLightModelfvSGIX glad_glFragmentLightModelfvSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC)(GLenum pname, GLint param); +GLAPI PFNGLFRAGMENTLIGHTMODELISGIXPROC glad_glFragmentLightModeliSGIX; +#define glFragmentLightModeliSGIX glad_glFragmentLightModeliSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLFRAGMENTLIGHTMODELIVSGIXPROC glad_glFragmentLightModelivSGIX; +#define glFragmentLightModelivSGIX glad_glFragmentLightModelivSGIX +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC)(GLenum face, GLenum pname, GLfloat param); +GLAPI PFNGLFRAGMENTMATERIALFSGIXPROC glad_glFragmentMaterialfSGIX; +#define glFragmentMaterialfSGIX glad_glFragmentMaterialfSGIX +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, const GLfloat *params); +GLAPI PFNGLFRAGMENTMATERIALFVSGIXPROC glad_glFragmentMaterialfvSGIX; +#define glFragmentMaterialfvSGIX glad_glFragmentMaterialfvSGIX +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC)(GLenum face, GLenum pname, GLint param); +GLAPI PFNGLFRAGMENTMATERIALISGIXPROC glad_glFragmentMaterialiSGIX; +#define glFragmentMaterialiSGIX glad_glFragmentMaterialiSGIX +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, const GLint *params); +GLAPI PFNGLFRAGMENTMATERIALIVSGIXPROC glad_glFragmentMaterialivSGIX; +#define glFragmentMaterialivSGIX glad_glFragmentMaterialivSGIX +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, GLfloat *params); +GLAPI PFNGLGETFRAGMENTLIGHTFVSGIXPROC glad_glGetFragmentLightfvSGIX; +#define glGetFragmentLightfvSGIX glad_glGetFragmentLightfvSGIX +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAGMENTLIGHTIVSGIXPROC glad_glGetFragmentLightivSGIX; +#define glGetFragmentLightivSGIX glad_glGetFragmentLightivSGIX +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, GLfloat *params); +GLAPI PFNGLGETFRAGMENTMATERIALFVSGIXPROC glad_glGetFragmentMaterialfvSGIX; +#define glGetFragmentMaterialfvSGIX glad_glGetFragmentMaterialfvSGIX +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAGMENTMATERIALIVSGIXPROC glad_glGetFragmentMaterialivSGIX; +#define glGetFragmentMaterialivSGIX glad_glGetFragmentMaterialivSGIX +typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC)(GLenum pname, GLint param); +GLAPI PFNGLLIGHTENVISGIXPROC glad_glLightEnviSGIX; +#define glLightEnviSGIX glad_glLightEnviSGIX +#endif +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +GLAPI int GLAD_GL_SGIX_framezoom; +typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC)(GLint factor); +GLAPI PFNGLFRAMEZOOMSGIXPROC glad_glFrameZoomSGIX; +#define glFrameZoomSGIX glad_glFrameZoomSGIX +#endif +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 +GLAPI int GLAD_GL_SGIX_igloo_interface; +typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC)(GLenum pname, const void *params); +GLAPI PFNGLIGLOOINTERFACESGIXPROC glad_glIglooInterfaceSGIX; +#define glIglooInterfaceSGIX glad_glIglooInterfaceSGIX +#endif +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +GLAPI int GLAD_GL_SGIX_instruments; +typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC)(void); +GLAPI PFNGLGETINSTRUMENTSSGIXPROC glad_glGetInstrumentsSGIX; +#define glGetInstrumentsSGIX glad_glGetInstrumentsSGIX +typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC)(GLsizei size, GLint *buffer); +GLAPI PFNGLINSTRUMENTSBUFFERSGIXPROC glad_glInstrumentsBufferSGIX; +#define glInstrumentsBufferSGIX glad_glInstrumentsBufferSGIX +typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC)(GLint *marker_p); +GLAPI PFNGLPOLLINSTRUMENTSSGIXPROC glad_glPollInstrumentsSGIX; +#define glPollInstrumentsSGIX glad_glPollInstrumentsSGIX +typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC)(GLint marker); +GLAPI PFNGLREADINSTRUMENTSSGIXPROC glad_glReadInstrumentsSGIX; +#define glReadInstrumentsSGIX glad_glReadInstrumentsSGIX +typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC)(void); +GLAPI PFNGLSTARTINSTRUMENTSSGIXPROC glad_glStartInstrumentsSGIX; +#define glStartInstrumentsSGIX glad_glStartInstrumentsSGIX +typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC)(GLint marker); +GLAPI PFNGLSTOPINSTRUMENTSSGIXPROC glad_glStopInstrumentsSGIX; +#define glStopInstrumentsSGIX glad_glStopInstrumentsSGIX +#endif +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +GLAPI int GLAD_GL_SGIX_interlace; +#endif +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +GLAPI int GLAD_GL_SGIX_ir_instrument1; +#endif +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +GLAPI int GLAD_GL_SGIX_list_priority; +typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, GLfloat *params); +GLAPI PFNGLGETLISTPARAMETERFVSGIXPROC glad_glGetListParameterfvSGIX; +#define glGetListParameterfvSGIX glad_glGetListParameterfvSGIX +typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, GLint *params); +GLAPI PFNGLGETLISTPARAMETERIVSGIXPROC glad_glGetListParameterivSGIX; +#define glGetListParameterivSGIX glad_glGetListParameterivSGIX +typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC)(GLuint list, GLenum pname, GLfloat param); +GLAPI PFNGLLISTPARAMETERFSGIXPROC glad_glListParameterfSGIX; +#define glListParameterfSGIX glad_glListParameterfSGIX +typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, const GLfloat *params); +GLAPI PFNGLLISTPARAMETERFVSGIXPROC glad_glListParameterfvSGIX; +#define glListParameterfvSGIX glad_glListParameterfvSGIX +typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC)(GLuint list, GLenum pname, GLint param); +GLAPI PFNGLLISTPARAMETERISGIXPROC glad_glListParameteriSGIX; +#define glListParameteriSGIX glad_glListParameteriSGIX +typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, const GLint *params); +GLAPI PFNGLLISTPARAMETERIVSGIXPROC glad_glListParameterivSGIX; +#define glListParameterivSGIX glad_glListParameterivSGIX +#endif +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +GLAPI int GLAD_GL_SGIX_pixel_texture; +typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC)(GLenum mode); +GLAPI PFNGLPIXELTEXGENSGIXPROC glad_glPixelTexGenSGIX; +#define glPixelTexGenSGIX glad_glPixelTexGenSGIX +#endif +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +GLAPI int GLAD_GL_SGIX_pixel_tiles; +#endif +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +GLAPI int GLAD_GL_SGIX_polynomial_ffd; +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +GLAPI PFNGLDEFORMATIONMAP3DSGIXPROC glad_glDeformationMap3dSGIX; +#define glDeformationMap3dSGIX glad_glDeformationMap3dSGIX +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +GLAPI PFNGLDEFORMATIONMAP3FSGIXPROC glad_glDeformationMap3fSGIX; +#define glDeformationMap3fSGIX glad_glDeformationMap3fSGIX +typedef void (APIENTRYP PFNGLDEFORMSGIXPROC)(GLbitfield mask); +GLAPI PFNGLDEFORMSGIXPROC glad_glDeformSGIX; +#define glDeformSGIX glad_glDeformSGIX +typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)(GLbitfield mask); +GLAPI PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC glad_glLoadIdentityDeformationMapSGIX; +#define glLoadIdentityDeformationMapSGIX glad_glLoadIdentityDeformationMapSGIX +#endif +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +GLAPI int GLAD_GL_SGIX_reference_plane; +typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC)(const GLdouble *equation); +GLAPI PFNGLREFERENCEPLANESGIXPROC glad_glReferencePlaneSGIX; +#define glReferencePlaneSGIX glad_glReferencePlaneSGIX +#endif +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +GLAPI int GLAD_GL_SGIX_resample; +#endif +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +GLAPI int GLAD_GL_SGIX_scalebias_hint; +#endif +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +GLAPI int GLAD_GL_SGIX_shadow; +#endif +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +GLAPI int GLAD_GL_SGIX_shadow_ambient; +#endif +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +GLAPI int GLAD_GL_SGIX_sprite; +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLSPRITEPARAMETERFSGIXPROC glad_glSpriteParameterfSGIX; +#define glSpriteParameterfSGIX glad_glSpriteParameterfSGIX +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLSPRITEPARAMETERFVSGIXPROC glad_glSpriteParameterfvSGIX; +#define glSpriteParameterfvSGIX glad_glSpriteParameterfvSGIX +typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC)(GLenum pname, GLint param); +GLAPI PFNGLSPRITEPARAMETERISGIXPROC glad_glSpriteParameteriSGIX; +#define glSpriteParameteriSGIX glad_glSpriteParameteriSGIX +typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLSPRITEPARAMETERIVSGIXPROC glad_glSpriteParameterivSGIX; +#define glSpriteParameterivSGIX glad_glSpriteParameterivSGIX +#endif +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +GLAPI int GLAD_GL_SGIX_subsample; +#endif +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 +GLAPI int GLAD_GL_SGIX_tag_sample_buffer; +typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC)(void); +GLAPI PFNGLTAGSAMPLEBUFFERSGIXPROC glad_glTagSampleBufferSGIX; +#define glTagSampleBufferSGIX glad_glTagSampleBufferSGIX +#endif +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +GLAPI int GLAD_GL_SGIX_texture_add_env; +#endif +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +GLAPI int GLAD_GL_SGIX_texture_coordinate_clamp; +#endif +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +GLAPI int GLAD_GL_SGIX_texture_lod_bias; +#endif +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +GLAPI int GLAD_GL_SGIX_texture_multi_buffer; +#endif +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +GLAPI int GLAD_GL_SGIX_texture_scale_bias; +#endif +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +GLAPI int GLAD_GL_SGIX_vertex_preclip; +#endif +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +GLAPI int GLAD_GL_SGIX_ycrcb; +#endif +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +GLAPI int GLAD_GL_SGIX_ycrcb_subsample; +#endif +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +GLAPI int GLAD_GL_SGIX_ycrcba; +#endif +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 +GLAPI int GLAD_GL_SGI_color_matrix; +#endif +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +GLAPI int GLAD_GL_SGI_color_table; +typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI PFNGLCOLORTABLESGIPROC glad_glColorTableSGI; +#define glColorTableSGI glad_glColorTableSGI +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLCOLORTABLEPARAMETERFVSGIPROC glad_glColorTableParameterfvSGI; +#define glColorTableParameterfvSGI glad_glColorTableParameterfvSGI +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLCOLORTABLEPARAMETERIVSGIPROC glad_glColorTableParameterivSGI; +#define glColorTableParameterivSGI glad_glColorTableParameterivSGI +typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCOLORTABLESGIPROC glad_glCopyColorTableSGI; +#define glCopyColorTableSGI glad_glCopyColorTableSGI +typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC)(GLenum target, GLenum format, GLenum type, void *table); +GLAPI PFNGLGETCOLORTABLESGIPROC glad_glGetColorTableSGI; +#define glGetColorTableSGI glad_glGetColorTableSGI +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERFVSGIPROC glad_glGetColorTableParameterfvSGI; +#define glGetColorTableParameterfvSGI glad_glGetColorTableParameterfvSGI +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERIVSGIPROC glad_glGetColorTableParameterivSGI; +#define glGetColorTableParameterivSGI glad_glGetColorTableParameterivSGI +#endif +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +GLAPI int GLAD_GL_SGI_texture_color_table; +#endif +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +GLAPI int GLAD_GL_SUNX_constant_data; +typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC)(void); +GLAPI PFNGLFINISHTEXTURESUNXPROC glad_glFinishTextureSUNX; +#define glFinishTextureSUNX glad_glFinishTextureSUNX +#endif +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +GLAPI int GLAD_GL_SUN_convolution_border_modes; +#endif +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +GLAPI int GLAD_GL_SUN_global_alpha; +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC)(GLbyte factor); +GLAPI PFNGLGLOBALALPHAFACTORBSUNPROC glad_glGlobalAlphaFactorbSUN; +#define glGlobalAlphaFactorbSUN glad_glGlobalAlphaFactorbSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC)(GLshort factor); +GLAPI PFNGLGLOBALALPHAFACTORSSUNPROC glad_glGlobalAlphaFactorsSUN; +#define glGlobalAlphaFactorsSUN glad_glGlobalAlphaFactorsSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC)(GLint factor); +GLAPI PFNGLGLOBALALPHAFACTORISUNPROC glad_glGlobalAlphaFactoriSUN; +#define glGlobalAlphaFactoriSUN glad_glGlobalAlphaFactoriSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC)(GLfloat factor); +GLAPI PFNGLGLOBALALPHAFACTORFSUNPROC glad_glGlobalAlphaFactorfSUN; +#define glGlobalAlphaFactorfSUN glad_glGlobalAlphaFactorfSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC)(GLdouble factor); +GLAPI PFNGLGLOBALALPHAFACTORDSUNPROC glad_glGlobalAlphaFactordSUN; +#define glGlobalAlphaFactordSUN glad_glGlobalAlphaFactordSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC)(GLubyte factor); +GLAPI PFNGLGLOBALALPHAFACTORUBSUNPROC glad_glGlobalAlphaFactorubSUN; +#define glGlobalAlphaFactorubSUN glad_glGlobalAlphaFactorubSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC)(GLushort factor); +GLAPI PFNGLGLOBALALPHAFACTORUSSUNPROC glad_glGlobalAlphaFactorusSUN; +#define glGlobalAlphaFactorusSUN glad_glGlobalAlphaFactorusSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC)(GLuint factor); +GLAPI PFNGLGLOBALALPHAFACTORUISUNPROC glad_glGlobalAlphaFactoruiSUN; +#define glGlobalAlphaFactoruiSUN glad_glGlobalAlphaFactoruiSUN +#endif +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +GLAPI int GLAD_GL_SUN_mesh_array; +typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC)(GLenum mode, GLint first, GLsizei count, GLsizei width); +GLAPI PFNGLDRAWMESHARRAYSSUNPROC glad_glDrawMeshArraysSUN; +#define glDrawMeshArraysSUN glad_glDrawMeshArraysSUN +#endif +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +GLAPI int GLAD_GL_SUN_slice_accum; +#endif +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +GLAPI int GLAD_GL_SUN_triangle_list; +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC)(GLuint code); +GLAPI PFNGLREPLACEMENTCODEUISUNPROC glad_glReplacementCodeuiSUN; +#define glReplacementCodeuiSUN glad_glReplacementCodeuiSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC)(GLushort code); +GLAPI PFNGLREPLACEMENTCODEUSSUNPROC glad_glReplacementCodeusSUN; +#define glReplacementCodeusSUN glad_glReplacementCodeusSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC)(GLubyte code); +GLAPI PFNGLREPLACEMENTCODEUBSUNPROC glad_glReplacementCodeubSUN; +#define glReplacementCodeubSUN glad_glReplacementCodeubSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC)(const GLuint *code); +GLAPI PFNGLREPLACEMENTCODEUIVSUNPROC glad_glReplacementCodeuivSUN; +#define glReplacementCodeuivSUN glad_glReplacementCodeuivSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC)(const GLushort *code); +GLAPI PFNGLREPLACEMENTCODEUSVSUNPROC glad_glReplacementCodeusvSUN; +#define glReplacementCodeusvSUN glad_glReplacementCodeusvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC)(const GLubyte *code); +GLAPI PFNGLREPLACEMENTCODEUBVSUNPROC glad_glReplacementCodeubvSUN; +#define glReplacementCodeubvSUN glad_glReplacementCodeubvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC)(GLenum type, GLsizei stride, const void **pointer); +GLAPI PFNGLREPLACEMENTCODEPOINTERSUNPROC glad_glReplacementCodePointerSUN; +#define glReplacementCodePointerSUN glad_glReplacementCodePointerSUN +#endif +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 +GLAPI int GLAD_GL_SUN_vertex; +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +GLAPI PFNGLCOLOR4UBVERTEX2FSUNPROC glad_glColor4ubVertex2fSUN; +#define glColor4ubVertex2fSUN glad_glColor4ubVertex2fSUN +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC)(const GLubyte *c, const GLfloat *v); +GLAPI PFNGLCOLOR4UBVERTEX2FVSUNPROC glad_glColor4ubVertex2fvSUN; +#define glColor4ubVertex2fvSUN glad_glColor4ubVertex2fvSUN +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLCOLOR4UBVERTEX3FSUNPROC glad_glColor4ubVertex3fSUN; +#define glColor4ubVertex3fSUN glad_glColor4ubVertex3fSUN +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC)(const GLubyte *c, const GLfloat *v); +GLAPI PFNGLCOLOR4UBVERTEX3FVSUNPROC glad_glColor4ubVertex3fvSUN; +#define glColor4ubVertex3fvSUN glad_glColor4ubVertex3fvSUN +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLCOLOR3FVERTEX3FSUNPROC glad_glColor3fVertex3fSUN; +#define glColor3fVertex3fSUN glad_glColor3fVertex3fSUN +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *v); +GLAPI PFNGLCOLOR3FVERTEX3FVSUNPROC glad_glColor3fVertex3fvSUN; +#define glColor3fVertex3fvSUN glad_glColor3fVertex3fvSUN +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLNORMAL3FVERTEX3FSUNPROC glad_glNormal3fVertex3fSUN; +#define glNormal3fVertex3fSUN glad_glNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *n, const GLfloat *v); +GLAPI PFNGLNORMAL3FVERTEX3FVSUNPROC glad_glNormal3fVertex3fvSUN; +#define glNormal3fVertex3fvSUN glad_glNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glColor4fNormal3fVertex3fSUN; +#define glColor4fNormal3fVertex3fSUN glad_glColor4fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glColor4fNormal3fVertex3fvSUN; +#define glColor4fNormal3fVertex3fvSUN glad_glColor4fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FVERTEX3FSUNPROC glad_glTexCoord2fVertex3fSUN; +#define glTexCoord2fVertex3fSUN glad_glTexCoord2fVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FVERTEX3FVSUNPROC glad_glTexCoord2fVertex3fvSUN; +#define glTexCoord2fVertex3fvSUN glad_glTexCoord2fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLTEXCOORD4FVERTEX4FSUNPROC glad_glTexCoord4fVertex4fSUN; +#define glTexCoord4fVertex4fSUN glad_glTexCoord4fVertex4fSUN +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC)(const GLfloat *tc, const GLfloat *v); +GLAPI PFNGLTEXCOORD4FVERTEX4FVSUNPROC glad_glTexCoord4fVertex4fvSUN; +#define glTexCoord4fVertex4fvSUN glad_glTexCoord4fVertex4fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC glad_glTexCoord2fColor4ubVertex3fSUN; +#define glTexCoord2fColor4ubVertex3fSUN glad_glTexCoord2fColor4ubVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)(const GLfloat *tc, const GLubyte *c, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC glad_glTexCoord2fColor4ubVertex3fvSUN; +#define glTexCoord2fColor4ubVertex3fvSUN glad_glTexCoord2fColor4ubVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC glad_glTexCoord2fColor3fVertex3fSUN; +#define glTexCoord2fColor3fVertex3fSUN glad_glTexCoord2fColor3fVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *c, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC glad_glTexCoord2fColor3fVertex3fvSUN; +#define glTexCoord2fColor3fVertex3fvSUN glad_glTexCoord2fColor3fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fNormal3fVertex3fSUN; +#define glTexCoord2fNormal3fVertex3fSUN glad_glTexCoord2fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fNormal3fVertex3fvSUN; +#define glTexCoord2fNormal3fVertex3fvSUN glad_glTexCoord2fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fSUN; +#define glTexCoord2fColor4fNormal3fVertex3fSUN glad_glTexCoord2fColor4fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fvSUN; +#define glTexCoord2fColor4fNormal3fVertex3fvSUN glad_glTexCoord2fColor4fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fSUN; +#define glTexCoord4fColor4fNormal3fVertex4fSUN glad_glTexCoord4fColor4fNormal3fVertex4fSUN +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fvSUN; +#define glTexCoord4fColor4fNormal3fVertex4fvSUN glad_glTexCoord4fColor4fNormal3fVertex4fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)(GLuint rc, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC glad_glReplacementCodeuiVertex3fSUN; +#define glReplacementCodeuiVertex3fSUN glad_glReplacementCodeuiVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC glad_glReplacementCodeuiVertex3fvSUN; +#define glReplacementCodeuiVertex3fvSUN glad_glReplacementCodeuiVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC glad_glReplacementCodeuiColor4ubVertex3fSUN; +#define glReplacementCodeuiColor4ubVertex3fSUN glad_glReplacementCodeuiColor4ubVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)(const GLuint *rc, const GLubyte *c, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4ubVertex3fvSUN; +#define glReplacementCodeuiColor4ubVertex3fvSUN glad_glReplacementCodeuiColor4ubVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor3fVertex3fSUN; +#define glReplacementCodeuiColor3fVertex3fSUN glad_glReplacementCodeuiColor3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *c, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor3fVertex3fvSUN; +#define glReplacementCodeuiColor3fVertex3fvSUN glad_glReplacementCodeuiColor3fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiNormal3fVertex3fSUN; +#define glReplacementCodeuiNormal3fVertex3fSUN glad_glReplacementCodeuiNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiNormal3fVertex3fvSUN; +#define glReplacementCodeuiNormal3fVertex3fvSUN glad_glReplacementCodeuiNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN; +#define glReplacementCodeuiColor4fNormal3fVertex3fSUN glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; +#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fSUN; +#define glReplacementCodeuiTexCoord2fVertex3fSUN glad_glReplacementCodeuiTexCoord2fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *tc, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fvSUN; +#define glReplacementCodeuiTexCoord2fVertex3fvSUN glad_glReplacementCodeuiTexCoord2fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN +#endif +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +GLAPI int GLAD_GL_WIN_phong_shading; +#endif +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +GLAPI int GLAD_GL_WIN_specular_fog; +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/glad/src/glad.c b/lib/glad/src/glad.c new file mode 100644 index 0000000..1bf442b --- /dev/null +++ b/lib/glad/src/glad.c @@ -0,0 +1,9098 @@ +/* + + OpenGL loader generated by glad 0.1.33 on Sat Apr 4 06:11:30 2020. + + Language/Generator: C/C++ + Specification: gl + APIs: gl=4.1 + Profile: core + Extensions: + GL_3DFX_multisample, + GL_3DFX_tbuffer, + GL_3DFX_texture_compression_FXT1, + GL_AMD_blend_minmax_factor, + GL_AMD_conservative_depth, + GL_AMD_debug_output, + GL_AMD_depth_clamp_separate, + GL_AMD_draw_buffers_blend, + GL_AMD_framebuffer_multisample_advanced, + GL_AMD_framebuffer_sample_positions, + GL_AMD_gcn_shader, + GL_AMD_gpu_shader_half_float, + GL_AMD_gpu_shader_int16, + GL_AMD_gpu_shader_int64, + GL_AMD_interleaved_elements, + GL_AMD_multi_draw_indirect, + GL_AMD_name_gen_delete, + GL_AMD_occlusion_query_event, + GL_AMD_performance_monitor, + GL_AMD_pinned_memory, + GL_AMD_query_buffer_object, + GL_AMD_sample_positions, + GL_AMD_seamless_cubemap_per_texture, + GL_AMD_shader_atomic_counter_ops, + GL_AMD_shader_ballot, + GL_AMD_shader_explicit_vertex_parameter, + GL_AMD_shader_gpu_shader_half_float_fetch, + GL_AMD_shader_image_load_store_lod, + GL_AMD_shader_stencil_export, + GL_AMD_shader_trinary_minmax, + GL_AMD_sparse_texture, + GL_AMD_stencil_operation_extended, + GL_AMD_texture_gather_bias_lod, + GL_AMD_texture_texture4, + GL_AMD_transform_feedback3_lines_triangles, + GL_AMD_transform_feedback4, + GL_AMD_vertex_shader_layer, + GL_AMD_vertex_shader_tessellator, + GL_AMD_vertex_shader_viewport_index, + GL_APPLE_aux_depth_stencil, + GL_APPLE_client_storage, + GL_APPLE_element_array, + GL_APPLE_fence, + GL_APPLE_float_pixels, + GL_APPLE_flush_buffer_range, + GL_APPLE_object_purgeable, + GL_APPLE_rgb_422, + GL_APPLE_row_bytes, + GL_APPLE_specular_vector, + GL_APPLE_texture_range, + GL_APPLE_transform_hint, + GL_APPLE_vertex_array_object, + GL_APPLE_vertex_array_range, + GL_APPLE_vertex_program_evaluators, + GL_APPLE_ycbcr_422, + GL_ARB_ES2_compatibility, + GL_ARB_ES3_1_compatibility, + GL_ARB_ES3_2_compatibility, + GL_ARB_ES3_compatibility, + GL_ARB_arrays_of_arrays, + GL_ARB_base_instance, + GL_ARB_bindless_texture, + GL_ARB_blend_func_extended, + GL_ARB_buffer_storage, + GL_ARB_cl_event, + GL_ARB_clear_buffer_object, + GL_ARB_clear_texture, + GL_ARB_clip_control, + GL_ARB_color_buffer_float, + GL_ARB_compatibility, + GL_ARB_compressed_texture_pixel_storage, + GL_ARB_compute_shader, + GL_ARB_compute_variable_group_size, + GL_ARB_conditional_render_inverted, + GL_ARB_conservative_depth, + GL_ARB_copy_buffer, + GL_ARB_copy_image, + GL_ARB_cull_distance, + GL_ARB_debug_output, + GL_ARB_depth_buffer_float, + GL_ARB_depth_clamp, + GL_ARB_depth_texture, + GL_ARB_derivative_control, + GL_ARB_direct_state_access, + GL_ARB_draw_buffers, + GL_ARB_draw_buffers_blend, + GL_ARB_draw_elements_base_vertex, + GL_ARB_draw_indirect, + GL_ARB_draw_instanced, + GL_ARB_enhanced_layouts, + GL_ARB_explicit_attrib_location, + GL_ARB_explicit_uniform_location, + GL_ARB_fragment_coord_conventions, + GL_ARB_fragment_layer_viewport, + GL_ARB_fragment_program, + GL_ARB_fragment_program_shadow, + GL_ARB_fragment_shader, + GL_ARB_fragment_shader_interlock, + GL_ARB_framebuffer_no_attachments, + GL_ARB_framebuffer_object, + GL_ARB_framebuffer_sRGB, + GL_ARB_geometry_shader4, + GL_ARB_get_program_binary, + GL_ARB_get_texture_sub_image, + GL_ARB_gl_spirv, + GL_ARB_gpu_shader5, + GL_ARB_gpu_shader_fp64, + GL_ARB_gpu_shader_int64, + GL_ARB_half_float_pixel, + GL_ARB_half_float_vertex, + GL_ARB_imaging, + GL_ARB_indirect_parameters, + GL_ARB_instanced_arrays, + GL_ARB_internalformat_query, + GL_ARB_internalformat_query2, + GL_ARB_invalidate_subdata, + GL_ARB_map_buffer_alignment, + GL_ARB_map_buffer_range, + GL_ARB_matrix_palette, + GL_ARB_multi_bind, + GL_ARB_multi_draw_indirect, + GL_ARB_multisample, + GL_ARB_multitexture, + GL_ARB_occlusion_query, + GL_ARB_occlusion_query2, + GL_ARB_parallel_shader_compile, + GL_ARB_pipeline_statistics_query, + GL_ARB_pixel_buffer_object, + GL_ARB_point_parameters, + GL_ARB_point_sprite, + GL_ARB_polygon_offset_clamp, + GL_ARB_post_depth_coverage, + GL_ARB_program_interface_query, + GL_ARB_provoking_vertex, + GL_ARB_query_buffer_object, + GL_ARB_robust_buffer_access_behavior, + GL_ARB_robustness, + GL_ARB_robustness_isolation, + GL_ARB_sample_locations, + GL_ARB_sample_shading, + GL_ARB_sampler_objects, + GL_ARB_seamless_cube_map, + GL_ARB_seamless_cubemap_per_texture, + GL_ARB_separate_shader_objects, + GL_ARB_shader_atomic_counter_ops, + GL_ARB_shader_atomic_counters, + GL_ARB_shader_ballot, + GL_ARB_shader_bit_encoding, + GL_ARB_shader_clock, + GL_ARB_shader_draw_parameters, + GL_ARB_shader_group_vote, + GL_ARB_shader_image_load_store, + GL_ARB_shader_image_size, + GL_ARB_shader_objects, + GL_ARB_shader_precision, + GL_ARB_shader_stencil_export, + GL_ARB_shader_storage_buffer_object, + GL_ARB_shader_subroutine, + GL_ARB_shader_texture_image_samples, + GL_ARB_shader_texture_lod, + GL_ARB_shader_viewport_layer_array, + GL_ARB_shading_language_100, + GL_ARB_shading_language_420pack, + GL_ARB_shading_language_include, + GL_ARB_shading_language_packing, + GL_ARB_shadow, + GL_ARB_shadow_ambient, + GL_ARB_sparse_buffer, + GL_ARB_sparse_texture, + GL_ARB_sparse_texture2, + GL_ARB_sparse_texture_clamp, + GL_ARB_spirv_extensions, + GL_ARB_stencil_texturing, + GL_ARB_sync, + GL_ARB_tessellation_shader, + GL_ARB_texture_barrier, + GL_ARB_texture_border_clamp, + GL_ARB_texture_buffer_object, + GL_ARB_texture_buffer_object_rgb32, + GL_ARB_texture_buffer_range, + GL_ARB_texture_compression, + GL_ARB_texture_compression_bptc, + GL_ARB_texture_compression_rgtc, + GL_ARB_texture_cube_map, + GL_ARB_texture_cube_map_array, + GL_ARB_texture_env_add, + GL_ARB_texture_env_combine, + GL_ARB_texture_env_crossbar, + GL_ARB_texture_env_dot3, + GL_ARB_texture_filter_anisotropic, + GL_ARB_texture_filter_minmax, + GL_ARB_texture_float, + GL_ARB_texture_gather, + GL_ARB_texture_mirror_clamp_to_edge, + GL_ARB_texture_mirrored_repeat, + GL_ARB_texture_multisample, + GL_ARB_texture_non_power_of_two, + GL_ARB_texture_query_levels, + GL_ARB_texture_query_lod, + GL_ARB_texture_rectangle, + GL_ARB_texture_rg, + GL_ARB_texture_rgb10_a2ui, + GL_ARB_texture_stencil8, + GL_ARB_texture_storage, + GL_ARB_texture_storage_multisample, + GL_ARB_texture_swizzle, + GL_ARB_texture_view, + GL_ARB_timer_query, + GL_ARB_transform_feedback2, + GL_ARB_transform_feedback3, + GL_ARB_transform_feedback_instanced, + GL_ARB_transform_feedback_overflow_query, + GL_ARB_transpose_matrix, + GL_ARB_uniform_buffer_object, + GL_ARB_vertex_array_bgra, + GL_ARB_vertex_array_object, + GL_ARB_vertex_attrib_64bit, + GL_ARB_vertex_attrib_binding, + GL_ARB_vertex_blend, + GL_ARB_vertex_buffer_object, + GL_ARB_vertex_program, + GL_ARB_vertex_shader, + GL_ARB_vertex_type_10f_11f_11f_rev, + GL_ARB_vertex_type_2_10_10_10_rev, + GL_ARB_viewport_array, + GL_ARB_window_pos, + GL_ATI_draw_buffers, + GL_ATI_element_array, + GL_ATI_envmap_bumpmap, + GL_ATI_fragment_shader, + GL_ATI_map_object_buffer, + GL_ATI_meminfo, + GL_ATI_pixel_format_float, + GL_ATI_pn_triangles, + GL_ATI_separate_stencil, + GL_ATI_text_fragment_shader, + GL_ATI_texture_env_combine3, + GL_ATI_texture_float, + GL_ATI_texture_mirror_once, + GL_ATI_vertex_array_object, + GL_ATI_vertex_attrib_array_object, + GL_ATI_vertex_streams, + GL_EXT_422_pixels, + GL_EXT_EGL_image_storage, + GL_EXT_EGL_sync, + GL_EXT_abgr, + GL_EXT_bgra, + GL_EXT_bindable_uniform, + GL_EXT_blend_color, + GL_EXT_blend_equation_separate, + GL_EXT_blend_func_separate, + GL_EXT_blend_logic_op, + GL_EXT_blend_minmax, + GL_EXT_blend_subtract, + GL_EXT_clip_volume_hint, + GL_EXT_cmyka, + GL_EXT_color_subtable, + GL_EXT_compiled_vertex_array, + GL_EXT_convolution, + GL_EXT_coordinate_frame, + GL_EXT_copy_texture, + GL_EXT_cull_vertex, + GL_EXT_debug_label, + GL_EXT_debug_marker, + GL_EXT_depth_bounds_test, + GL_EXT_direct_state_access, + GL_EXT_draw_buffers2, + GL_EXT_draw_instanced, + GL_EXT_draw_range_elements, + GL_EXT_external_buffer, + GL_EXT_fog_coord, + GL_EXT_framebuffer_blit, + GL_EXT_framebuffer_multisample, + GL_EXT_framebuffer_multisample_blit_scaled, + GL_EXT_framebuffer_object, + GL_EXT_framebuffer_sRGB, + GL_EXT_geometry_shader4, + GL_EXT_gpu_program_parameters, + GL_EXT_gpu_shader4, + GL_EXT_histogram, + GL_EXT_index_array_formats, + GL_EXT_index_func, + GL_EXT_index_material, + GL_EXT_index_texture, + GL_EXT_light_texture, + GL_EXT_memory_object, + GL_EXT_memory_object_fd, + GL_EXT_memory_object_win32, + GL_EXT_misc_attribute, + GL_EXT_multi_draw_arrays, + GL_EXT_multisample, + GL_EXT_multiview_tessellation_geometry_shader, + GL_EXT_multiview_texture_multisample, + GL_EXT_multiview_timer_query, + GL_EXT_packed_depth_stencil, + GL_EXT_packed_float, + GL_EXT_packed_pixels, + GL_EXT_paletted_texture, + GL_EXT_pixel_buffer_object, + GL_EXT_pixel_transform, + GL_EXT_pixel_transform_color_table, + GL_EXT_point_parameters, + GL_EXT_polygon_offset, + GL_EXT_polygon_offset_clamp, + GL_EXT_post_depth_coverage, + GL_EXT_provoking_vertex, + GL_EXT_raster_multisample, + GL_EXT_rescale_normal, + GL_EXT_secondary_color, + GL_EXT_semaphore, + GL_EXT_semaphore_fd, + GL_EXT_semaphore_win32, + GL_EXT_separate_shader_objects, + GL_EXT_separate_specular_color, + GL_EXT_shader_framebuffer_fetch, + GL_EXT_shader_framebuffer_fetch_non_coherent, + GL_EXT_shader_image_load_formatted, + GL_EXT_shader_image_load_store, + GL_EXT_shader_integer_mix, + GL_EXT_shadow_funcs, + GL_EXT_shared_texture_palette, + GL_EXT_sparse_texture2, + GL_EXT_stencil_clear_tag, + GL_EXT_stencil_two_side, + GL_EXT_stencil_wrap, + GL_EXT_subtexture, + GL_EXT_texture, + GL_EXT_texture3D, + GL_EXT_texture_array, + GL_EXT_texture_buffer_object, + GL_EXT_texture_compression_latc, + GL_EXT_texture_compression_rgtc, + GL_EXT_texture_compression_s3tc, + GL_EXT_texture_cube_map, + GL_EXT_texture_env_add, + GL_EXT_texture_env_combine, + GL_EXT_texture_env_dot3, + GL_EXT_texture_filter_anisotropic, + GL_EXT_texture_filter_minmax, + GL_EXT_texture_integer, + GL_EXT_texture_lod_bias, + GL_EXT_texture_mirror_clamp, + GL_EXT_texture_object, + GL_EXT_texture_perturb_normal, + GL_EXT_texture_sRGB, + GL_EXT_texture_sRGB_R8, + GL_EXT_texture_sRGB_decode, + GL_EXT_texture_shadow_lod, + GL_EXT_texture_shared_exponent, + GL_EXT_texture_snorm, + GL_EXT_texture_swizzle, + GL_EXT_timer_query, + GL_EXT_transform_feedback, + GL_EXT_vertex_array, + GL_EXT_vertex_array_bgra, + GL_EXT_vertex_attrib_64bit, + GL_EXT_vertex_shader, + GL_EXT_vertex_weighting, + GL_EXT_win32_keyed_mutex, + GL_EXT_window_rectangles, + GL_EXT_x11_sync_object, + GL_GREMEDY_frame_terminator, + GL_GREMEDY_string_marker, + GL_HP_convolution_border_modes, + GL_HP_image_transform, + GL_HP_occlusion_test, + GL_HP_texture_lighting, + GL_IBM_cull_vertex, + GL_IBM_multimode_draw_arrays, + GL_IBM_rasterpos_clip, + GL_IBM_static_data, + GL_IBM_texture_mirrored_repeat, + GL_IBM_vertex_array_lists, + GL_INGR_blend_func_separate, + GL_INGR_color_clamp, + GL_INGR_interlace_read, + GL_INTEL_blackhole_render, + GL_INTEL_conservative_rasterization, + GL_INTEL_fragment_shader_ordering, + GL_INTEL_framebuffer_CMAA, + GL_INTEL_map_texture, + GL_INTEL_parallel_arrays, + GL_INTEL_performance_query, + GL_KHR_blend_equation_advanced, + GL_KHR_blend_equation_advanced_coherent, + GL_KHR_context_flush_control, + GL_KHR_debug, + GL_KHR_no_error, + GL_KHR_parallel_shader_compile, + GL_KHR_robust_buffer_access_behavior, + GL_KHR_robustness, + GL_KHR_shader_subgroup, + GL_KHR_texture_compression_astc_hdr, + GL_KHR_texture_compression_astc_ldr, + GL_KHR_texture_compression_astc_sliced_3d, + GL_MESAX_texture_stack, + GL_MESA_framebuffer_flip_y, + GL_MESA_pack_invert, + GL_MESA_program_binary_formats, + GL_MESA_resize_buffers, + GL_MESA_shader_integer_functions, + GL_MESA_tile_raster_order, + GL_MESA_window_pos, + GL_MESA_ycbcr_texture, + GL_NVX_blend_equation_advanced_multi_draw_buffers, + GL_NVX_conditional_render, + GL_NVX_gpu_memory_info, + GL_NVX_gpu_multicast2, + GL_NVX_linked_gpu_multicast, + GL_NVX_progress_fence, + GL_NV_alpha_to_coverage_dither_control, + GL_NV_bindless_multi_draw_indirect, + GL_NV_bindless_multi_draw_indirect_count, + GL_NV_bindless_texture, + GL_NV_blend_equation_advanced, + GL_NV_blend_equation_advanced_coherent, + GL_NV_blend_minmax_factor, + GL_NV_blend_square, + GL_NV_clip_space_w_scaling, + GL_NV_command_list, + GL_NV_compute_program5, + GL_NV_compute_shader_derivatives, + GL_NV_conditional_render, + GL_NV_conservative_raster, + GL_NV_conservative_raster_dilate, + GL_NV_conservative_raster_pre_snap, + GL_NV_conservative_raster_pre_snap_triangles, + GL_NV_conservative_raster_underestimation, + GL_NV_copy_depth_to_color, + GL_NV_copy_image, + GL_NV_deep_texture3D, + GL_NV_depth_buffer_float, + GL_NV_depth_clamp, + GL_NV_draw_texture, + GL_NV_draw_vulkan_image, + GL_NV_evaluators, + GL_NV_explicit_multisample, + GL_NV_fence, + GL_NV_fill_rectangle, + GL_NV_float_buffer, + GL_NV_fog_distance, + GL_NV_fragment_coverage_to_color, + GL_NV_fragment_program, + GL_NV_fragment_program2, + GL_NV_fragment_program4, + GL_NV_fragment_program_option, + GL_NV_fragment_shader_barycentric, + GL_NV_fragment_shader_interlock, + GL_NV_framebuffer_mixed_samples, + GL_NV_framebuffer_multisample_coverage, + GL_NV_geometry_program4, + GL_NV_geometry_shader4, + GL_NV_geometry_shader_passthrough, + GL_NV_gpu_multicast, + GL_NV_gpu_program4, + GL_NV_gpu_program5, + GL_NV_gpu_program5_mem_extended, + GL_NV_gpu_shader5, + GL_NV_half_float, + GL_NV_internalformat_sample_query, + GL_NV_light_max_exponent, + GL_NV_memory_attachment, + GL_NV_mesh_shader, + GL_NV_multisample_coverage, + GL_NV_multisample_filter_hint, + GL_NV_occlusion_query, + GL_NV_packed_depth_stencil, + GL_NV_parameter_buffer_object, + GL_NV_parameter_buffer_object2, + GL_NV_path_rendering, + GL_NV_path_rendering_shared_edge, + GL_NV_pixel_data_range, + GL_NV_point_sprite, + GL_NV_present_video, + GL_NV_primitive_restart, + GL_NV_query_resource, + GL_NV_query_resource_tag, + GL_NV_register_combiners, + GL_NV_register_combiners2, + GL_NV_representative_fragment_test, + GL_NV_robustness_video_memory_purge, + GL_NV_sample_locations, + GL_NV_sample_mask_override_coverage, + GL_NV_scissor_exclusive, + GL_NV_shader_atomic_counters, + GL_NV_shader_atomic_float, + GL_NV_shader_atomic_float64, + GL_NV_shader_atomic_fp16_vector, + GL_NV_shader_atomic_int64, + GL_NV_shader_buffer_load, + GL_NV_shader_buffer_store, + GL_NV_shader_storage_buffer_object, + GL_NV_shader_subgroup_partitioned, + GL_NV_shader_texture_footprint, + GL_NV_shader_thread_group, + GL_NV_shader_thread_shuffle, + GL_NV_shading_rate_image, + GL_NV_stereo_view_rendering, + GL_NV_tessellation_program5, + GL_NV_texgen_emboss, + GL_NV_texgen_reflection, + GL_NV_texture_barrier, + GL_NV_texture_compression_vtc, + GL_NV_texture_env_combine4, + GL_NV_texture_expand_normal, + GL_NV_texture_multisample, + GL_NV_texture_rectangle, + GL_NV_texture_rectangle_compressed, + GL_NV_texture_shader, + GL_NV_texture_shader2, + GL_NV_texture_shader3, + GL_NV_transform_feedback, + GL_NV_transform_feedback2, + GL_NV_uniform_buffer_unified_memory, + GL_NV_vdpau_interop, + GL_NV_vdpau_interop2, + GL_NV_vertex_array_range, + GL_NV_vertex_array_range2, + GL_NV_vertex_attrib_integer_64bit, + GL_NV_vertex_buffer_unified_memory, + GL_NV_vertex_program, + GL_NV_vertex_program1_1, + GL_NV_vertex_program2, + GL_NV_vertex_program2_option, + GL_NV_vertex_program3, + GL_NV_vertex_program4, + GL_NV_video_capture, + GL_NV_viewport_array2, + GL_NV_viewport_swizzle, + GL_OES_byte_coordinates, + GL_OES_compressed_paletted_texture, + GL_OES_fixed_point, + GL_OES_query_matrix, + GL_OES_read_format, + GL_OES_single_precision, + GL_OML_interlace, + GL_OML_resample, + GL_OML_subsample, + GL_OVR_multiview, + GL_OVR_multiview2, + GL_PGI_misc_hints, + GL_PGI_vertex_hints, + GL_REND_screen_coordinates, + GL_S3_s3tc, + GL_SGIS_detail_texture, + GL_SGIS_fog_function, + GL_SGIS_generate_mipmap, + GL_SGIS_multisample, + GL_SGIS_pixel_texture, + GL_SGIS_point_line_texgen, + GL_SGIS_point_parameters, + GL_SGIS_sharpen_texture, + GL_SGIS_texture4D, + GL_SGIS_texture_border_clamp, + GL_SGIS_texture_color_mask, + GL_SGIS_texture_edge_clamp, + GL_SGIS_texture_filter4, + GL_SGIS_texture_lod, + GL_SGIS_texture_select, + GL_SGIX_async, + GL_SGIX_async_histogram, + GL_SGIX_async_pixel, + GL_SGIX_blend_alpha_minmax, + GL_SGIX_calligraphic_fragment, + GL_SGIX_clipmap, + GL_SGIX_convolution_accuracy, + GL_SGIX_depth_pass_instrument, + GL_SGIX_depth_texture, + GL_SGIX_flush_raster, + GL_SGIX_fog_offset, + GL_SGIX_fragment_lighting, + GL_SGIX_framezoom, + GL_SGIX_igloo_interface, + GL_SGIX_instruments, + GL_SGIX_interlace, + GL_SGIX_ir_instrument1, + GL_SGIX_list_priority, + GL_SGIX_pixel_texture, + GL_SGIX_pixel_tiles, + GL_SGIX_polynomial_ffd, + GL_SGIX_reference_plane, + GL_SGIX_resample, + GL_SGIX_scalebias_hint, + GL_SGIX_shadow, + GL_SGIX_shadow_ambient, + GL_SGIX_sprite, + GL_SGIX_subsample, + GL_SGIX_tag_sample_buffer, + GL_SGIX_texture_add_env, + GL_SGIX_texture_coordinate_clamp, + GL_SGIX_texture_lod_bias, + GL_SGIX_texture_multi_buffer, + GL_SGIX_texture_scale_bias, + GL_SGIX_vertex_preclip, + GL_SGIX_ycrcb, + GL_SGIX_ycrcb_subsample, + GL_SGIX_ycrcba, + GL_SGI_color_matrix, + GL_SGI_color_table, + GL_SGI_texture_color_table, + GL_SUNX_constant_data, + GL_SUN_convolution_border_modes, + GL_SUN_global_alpha, + GL_SUN_mesh_array, + GL_SUN_slice_accum, + GL_SUN_triangle_list, + GL_SUN_vertex, + GL_WIN_phong_shading, + GL_WIN_specular_fog + Loader: True + Local files: False + Omit khrplatform: False + Reproducible: False + + Commandline: + --profile="core" --api="gl=4.1" --generator="c" --spec="gl" --extensions="GL_3DFX_multisample,GL_3DFX_tbuffer,GL_3DFX_texture_compression_FXT1,GL_AMD_blend_minmax_factor,GL_AMD_conservative_depth,GL_AMD_debug_output,GL_AMD_depth_clamp_separate,GL_AMD_draw_buffers_blend,GL_AMD_framebuffer_multisample_advanced,GL_AMD_framebuffer_sample_positions,GL_AMD_gcn_shader,GL_AMD_gpu_shader_half_float,GL_AMD_gpu_shader_int16,GL_AMD_gpu_shader_int64,GL_AMD_interleaved_elements,GL_AMD_multi_draw_indirect,GL_AMD_name_gen_delete,GL_AMD_occlusion_query_event,GL_AMD_performance_monitor,GL_AMD_pinned_memory,GL_AMD_query_buffer_object,GL_AMD_sample_positions,GL_AMD_seamless_cubemap_per_texture,GL_AMD_shader_atomic_counter_ops,GL_AMD_shader_ballot,GL_AMD_shader_explicit_vertex_parameter,GL_AMD_shader_gpu_shader_half_float_fetch,GL_AMD_shader_image_load_store_lod,GL_AMD_shader_stencil_export,GL_AMD_shader_trinary_minmax,GL_AMD_sparse_texture,GL_AMD_stencil_operation_extended,GL_AMD_texture_gather_bias_lod,GL_AMD_texture_texture4,GL_AMD_transform_feedback3_lines_triangles,GL_AMD_transform_feedback4,GL_AMD_vertex_shader_layer,GL_AMD_vertex_shader_tessellator,GL_AMD_vertex_shader_viewport_index,GL_APPLE_aux_depth_stencil,GL_APPLE_client_storage,GL_APPLE_element_array,GL_APPLE_fence,GL_APPLE_float_pixels,GL_APPLE_flush_buffer_range,GL_APPLE_object_purgeable,GL_APPLE_rgb_422,GL_APPLE_row_bytes,GL_APPLE_specular_vector,GL_APPLE_texture_range,GL_APPLE_transform_hint,GL_APPLE_vertex_array_object,GL_APPLE_vertex_array_range,GL_APPLE_vertex_program_evaluators,GL_APPLE_ycbcr_422,GL_ARB_ES2_compatibility,GL_ARB_ES3_1_compatibility,GL_ARB_ES3_2_compatibility,GL_ARB_ES3_compatibility,GL_ARB_arrays_of_arrays,GL_ARB_base_instance,GL_ARB_bindless_texture,GL_ARB_blend_func_extended,GL_ARB_buffer_storage,GL_ARB_cl_event,GL_ARB_clear_buffer_object,GL_ARB_clear_texture,GL_ARB_clip_control,GL_ARB_color_buffer_float,GL_ARB_compatibility,GL_ARB_compressed_texture_pixel_storage,GL_ARB_compute_shader,GL_ARB_compute_variable_group_size,GL_ARB_conditional_render_inverted,GL_ARB_conservative_depth,GL_ARB_copy_buffer,GL_ARB_copy_image,GL_ARB_cull_distance,GL_ARB_debug_output,GL_ARB_depth_buffer_float,GL_ARB_depth_clamp,GL_ARB_depth_texture,GL_ARB_derivative_control,GL_ARB_direct_state_access,GL_ARB_draw_buffers,GL_ARB_draw_buffers_blend,GL_ARB_draw_elements_base_vertex,GL_ARB_draw_indirect,GL_ARB_draw_instanced,GL_ARB_enhanced_layouts,GL_ARB_explicit_attrib_location,GL_ARB_explicit_uniform_location,GL_ARB_fragment_coord_conventions,GL_ARB_fragment_layer_viewport,GL_ARB_fragment_program,GL_ARB_fragment_program_shadow,GL_ARB_fragment_shader,GL_ARB_fragment_shader_interlock,GL_ARB_framebuffer_no_attachments,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_get_program_binary,GL_ARB_get_texture_sub_image,GL_ARB_gl_spirv,GL_ARB_gpu_shader5,GL_ARB_gpu_shader_fp64,GL_ARB_gpu_shader_int64,GL_ARB_half_float_pixel,GL_ARB_half_float_vertex,GL_ARB_imaging,GL_ARB_indirect_parameters,GL_ARB_instanced_arrays,GL_ARB_internalformat_query,GL_ARB_internalformat_query2,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_alignment,GL_ARB_map_buffer_range,GL_ARB_matrix_palette,GL_ARB_multi_bind,GL_ARB_multi_draw_indirect,GL_ARB_multisample,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_occlusion_query2,GL_ARB_parallel_shader_compile,GL_ARB_pipeline_statistics_query,GL_ARB_pixel_buffer_object,GL_ARB_point_parameters,GL_ARB_point_sprite,GL_ARB_polygon_offset_clamp,GL_ARB_post_depth_coverage,GL_ARB_program_interface_query,GL_ARB_provoking_vertex,GL_ARB_query_buffer_object,GL_ARB_robust_buffer_access_behavior,GL_ARB_robustness,GL_ARB_robustness_isolation,GL_ARB_sample_locations,GL_ARB_sample_shading,GL_ARB_sampler_objects,GL_ARB_seamless_cube_map,GL_ARB_seamless_cubemap_per_texture,GL_ARB_separate_shader_objects,GL_ARB_shader_atomic_counter_ops,GL_ARB_shader_atomic_counters,GL_ARB_shader_ballot,GL_ARB_shader_bit_encoding,GL_ARB_shader_clock,GL_ARB_shader_draw_parameters,GL_ARB_shader_group_vote,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_precision,GL_ARB_shader_stencil_export,GL_ARB_shader_storage_buffer_object,GL_ARB_shader_subroutine,GL_ARB_shader_texture_image_samples,GL_ARB_shader_texture_lod,GL_ARB_shader_viewport_layer_array,GL_ARB_shading_language_100,GL_ARB_shading_language_420pack,GL_ARB_shading_language_include,GL_ARB_shading_language_packing,GL_ARB_shadow,GL_ARB_shadow_ambient,GL_ARB_sparse_buffer,GL_ARB_sparse_texture,GL_ARB_sparse_texture2,GL_ARB_sparse_texture_clamp,GL_ARB_spirv_extensions,GL_ARB_stencil_texturing,GL_ARB_sync,GL_ARB_tessellation_shader,GL_ARB_texture_barrier,GL_ARB_texture_border_clamp,GL_ARB_texture_buffer_object,GL_ARB_texture_buffer_object_rgb32,GL_ARB_texture_buffer_range,GL_ARB_texture_compression,GL_ARB_texture_compression_bptc,GL_ARB_texture_compression_rgtc,GL_ARB_texture_cube_map,GL_ARB_texture_cube_map_array,GL_ARB_texture_env_add,GL_ARB_texture_env_combine,GL_ARB_texture_env_crossbar,GL_ARB_texture_env_dot3,GL_ARB_texture_filter_anisotropic,GL_ARB_texture_filter_minmax,GL_ARB_texture_float,GL_ARB_texture_gather,GL_ARB_texture_mirror_clamp_to_edge,GL_ARB_texture_mirrored_repeat,GL_ARB_texture_multisample,GL_ARB_texture_non_power_of_two,GL_ARB_texture_query_levels,GL_ARB_texture_query_lod,GL_ARB_texture_rectangle,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_texture_stencil8,GL_ARB_texture_storage,GL_ARB_texture_storage_multisample,GL_ARB_texture_swizzle,GL_ARB_texture_view,GL_ARB_timer_query,GL_ARB_transform_feedback2,GL_ARB_transform_feedback3,GL_ARB_transform_feedback_instanced,GL_ARB_transform_feedback_overflow_query,GL_ARB_transpose_matrix,GL_ARB_uniform_buffer_object,GL_ARB_vertex_array_bgra,GL_ARB_vertex_array_object,GL_ARB_vertex_attrib_64bit,GL_ARB_vertex_attrib_binding,GL_ARB_vertex_blend,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_10f_11f_11f_rev,GL_ARB_vertex_type_2_10_10_10_rev,GL_ARB_viewport_array,GL_ARB_window_pos,GL_ATI_draw_buffers,GL_ATI_element_array,GL_ATI_envmap_bumpmap,GL_ATI_fragment_shader,GL_ATI_map_object_buffer,GL_ATI_meminfo,GL_ATI_pixel_format_float,GL_ATI_pn_triangles,GL_ATI_separate_stencil,GL_ATI_text_fragment_shader,GL_ATI_texture_env_combine3,GL_ATI_texture_float,GL_ATI_texture_mirror_once,GL_ATI_vertex_array_object,GL_ATI_vertex_attrib_array_object,GL_ATI_vertex_streams,GL_EXT_422_pixels,GL_EXT_EGL_image_storage,GL_EXT_EGL_sync,GL_EXT_abgr,GL_EXT_bgra,GL_EXT_bindable_uniform,GL_EXT_blend_color,GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate,GL_EXT_blend_logic_op,GL_EXT_blend_minmax,GL_EXT_blend_subtract,GL_EXT_clip_volume_hint,GL_EXT_cmyka,GL_EXT_color_subtable,GL_EXT_compiled_vertex_array,GL_EXT_convolution,GL_EXT_coordinate_frame,GL_EXT_copy_texture,GL_EXT_cull_vertex,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_bounds_test,GL_EXT_direct_state_access,GL_EXT_draw_buffers2,GL_EXT_draw_instanced,GL_EXT_draw_range_elements,GL_EXT_external_buffer,GL_EXT_fog_coord,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_program_parameters,GL_EXT_gpu_shader4,GL_EXT_histogram,GL_EXT_index_array_formats,GL_EXT_index_func,GL_EXT_index_material,GL_EXT_index_texture,GL_EXT_light_texture,GL_EXT_memory_object,GL_EXT_memory_object_fd,GL_EXT_memory_object_win32,GL_EXT_misc_attribute,GL_EXT_multi_draw_arrays,GL_EXT_multisample,GL_EXT_multiview_tessellation_geometry_shader,GL_EXT_multiview_texture_multisample,GL_EXT_multiview_timer_query,GL_EXT_packed_depth_stencil,GL_EXT_packed_float,GL_EXT_packed_pixels,GL_EXT_paletted_texture,GL_EXT_pixel_buffer_object,GL_EXT_pixel_transform,GL_EXT_pixel_transform_color_table,GL_EXT_point_parameters,GL_EXT_polygon_offset,GL_EXT_polygon_offset_clamp,GL_EXT_post_depth_coverage,GL_EXT_provoking_vertex,GL_EXT_raster_multisample,GL_EXT_rescale_normal,GL_EXT_secondary_color,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_semaphore_win32,GL_EXT_separate_shader_objects,GL_EXT_separate_specular_color,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_image_load_formatted,GL_EXT_shader_image_load_store,GL_EXT_shader_integer_mix,GL_EXT_shadow_funcs,GL_EXT_shared_texture_palette,GL_EXT_sparse_texture2,GL_EXT_stencil_clear_tag,GL_EXT_stencil_two_side,GL_EXT_stencil_wrap,GL_EXT_subtexture,GL_EXT_texture,GL_EXT_texture3D,GL_EXT_texture_array,GL_EXT_texture_buffer_object,GL_EXT_texture_compression_latc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_cube_map,GL_EXT_texture_env_add,GL_EXT_texture_env_combine,GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_filter_minmax,GL_EXT_texture_integer,GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp,GL_EXT_texture_object,GL_EXT_texture_perturb_normal,GL_EXT_texture_sRGB,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_shared_exponent,GL_EXT_texture_snorm,GL_EXT_texture_swizzle,GL_EXT_timer_query,GL_EXT_transform_feedback,GL_EXT_vertex_array,GL_EXT_vertex_array_bgra,GL_EXT_vertex_attrib_64bit,GL_EXT_vertex_shader,GL_EXT_vertex_weighting,GL_EXT_win32_keyed_mutex,GL_EXT_window_rectangles,GL_EXT_x11_sync_object,GL_GREMEDY_frame_terminator,GL_GREMEDY_string_marker,GL_HP_convolution_border_modes,GL_HP_image_transform,GL_HP_occlusion_test,GL_HP_texture_lighting,GL_IBM_cull_vertex,GL_IBM_multimode_draw_arrays,GL_IBM_rasterpos_clip,GL_IBM_static_data,GL_IBM_texture_mirrored_repeat,GL_IBM_vertex_array_lists,GL_INGR_blend_func_separate,GL_INGR_color_clamp,GL_INGR_interlace_read,GL_INTEL_blackhole_render,GL_INTEL_conservative_rasterization,GL_INTEL_fragment_shader_ordering,GL_INTEL_framebuffer_CMAA,GL_INTEL_map_texture,GL_INTEL_parallel_arrays,GL_INTEL_performance_query,GL_KHR_blend_equation_advanced,GL_KHR_blend_equation_advanced_coherent,GL_KHR_context_flush_control,GL_KHR_debug,GL_KHR_no_error,GL_KHR_parallel_shader_compile,GL_KHR_robust_buffer_access_behavior,GL_KHR_robustness,GL_KHR_shader_subgroup,GL_KHR_texture_compression_astc_hdr,GL_KHR_texture_compression_astc_ldr,GL_KHR_texture_compression_astc_sliced_3d,GL_MESAX_texture_stack,GL_MESA_framebuffer_flip_y,GL_MESA_pack_invert,GL_MESA_program_binary_formats,GL_MESA_resize_buffers,GL_MESA_shader_integer_functions,GL_MESA_tile_raster_order,GL_MESA_window_pos,GL_MESA_ycbcr_texture,GL_NVX_blend_equation_advanced_multi_draw_buffers,GL_NVX_conditional_render,GL_NVX_gpu_memory_info,GL_NVX_gpu_multicast2,GL_NVX_linked_gpu_multicast,GL_NVX_progress_fence,GL_NV_alpha_to_coverage_dither_control,GL_NV_bindless_multi_draw_indirect,GL_NV_bindless_multi_draw_indirect_count,GL_NV_bindless_texture,GL_NV_blend_equation_advanced,GL_NV_blend_equation_advanced_coherent,GL_NV_blend_minmax_factor,GL_NV_blend_square,GL_NV_clip_space_w_scaling,GL_NV_command_list,GL_NV_compute_program5,GL_NV_compute_shader_derivatives,GL_NV_conditional_render,GL_NV_conservative_raster,GL_NV_conservative_raster_dilate,GL_NV_conservative_raster_pre_snap,GL_NV_conservative_raster_pre_snap_triangles,GL_NV_conservative_raster_underestimation,GL_NV_copy_depth_to_color,GL_NV_copy_image,GL_NV_deep_texture3D,GL_NV_depth_buffer_float,GL_NV_depth_clamp,GL_NV_draw_texture,GL_NV_draw_vulkan_image,GL_NV_evaluators,GL_NV_explicit_multisample,GL_NV_fence,GL_NV_fill_rectangle,GL_NV_float_buffer,GL_NV_fog_distance,GL_NV_fragment_coverage_to_color,GL_NV_fragment_program,GL_NV_fragment_program2,GL_NV_fragment_program4,GL_NV_fragment_program_option,GL_NV_fragment_shader_barycentric,GL_NV_fragment_shader_interlock,GL_NV_framebuffer_mixed_samples,GL_NV_framebuffer_multisample_coverage,GL_NV_geometry_program4,GL_NV_geometry_shader4,GL_NV_geometry_shader_passthrough,GL_NV_gpu_multicast,GL_NV_gpu_program4,GL_NV_gpu_program5,GL_NV_gpu_program5_mem_extended,GL_NV_gpu_shader5,GL_NV_half_float,GL_NV_internalformat_sample_query,GL_NV_light_max_exponent,GL_NV_memory_attachment,GL_NV_mesh_shader,GL_NV_multisample_coverage,GL_NV_multisample_filter_hint,GL_NV_occlusion_query,GL_NV_packed_depth_stencil,GL_NV_parameter_buffer_object,GL_NV_parameter_buffer_object2,GL_NV_path_rendering,GL_NV_path_rendering_shared_edge,GL_NV_pixel_data_range,GL_NV_point_sprite,GL_NV_present_video,GL_NV_primitive_restart,GL_NV_query_resource,GL_NV_query_resource_tag,GL_NV_register_combiners,GL_NV_register_combiners2,GL_NV_representative_fragment_test,GL_NV_robustness_video_memory_purge,GL_NV_sample_locations,GL_NV_sample_mask_override_coverage,GL_NV_scissor_exclusive,GL_NV_shader_atomic_counters,GL_NV_shader_atomic_float,GL_NV_shader_atomic_float64,GL_NV_shader_atomic_fp16_vector,GL_NV_shader_atomic_int64,GL_NV_shader_buffer_load,GL_NV_shader_buffer_store,GL_NV_shader_storage_buffer_object,GL_NV_shader_subgroup_partitioned,GL_NV_shader_texture_footprint,GL_NV_shader_thread_group,GL_NV_shader_thread_shuffle,GL_NV_shading_rate_image,GL_NV_stereo_view_rendering,GL_NV_tessellation_program5,GL_NV_texgen_emboss,GL_NV_texgen_reflection,GL_NV_texture_barrier,GL_NV_texture_compression_vtc,GL_NV_texture_env_combine4,GL_NV_texture_expand_normal,GL_NV_texture_multisample,GL_NV_texture_rectangle,GL_NV_texture_rectangle_compressed,GL_NV_texture_shader,GL_NV_texture_shader2,GL_NV_texture_shader3,GL_NV_transform_feedback,GL_NV_transform_feedback2,GL_NV_uniform_buffer_unified_memory,GL_NV_vdpau_interop,GL_NV_vdpau_interop2,GL_NV_vertex_array_range,GL_NV_vertex_array_range2,GL_NV_vertex_attrib_integer_64bit,GL_NV_vertex_buffer_unified_memory,GL_NV_vertex_program,GL_NV_vertex_program1_1,GL_NV_vertex_program2,GL_NV_vertex_program2_option,GL_NV_vertex_program3,GL_NV_vertex_program4,GL_NV_video_capture,GL_NV_viewport_array2,GL_NV_viewport_swizzle,GL_OES_byte_coordinates,GL_OES_compressed_paletted_texture,GL_OES_fixed_point,GL_OES_query_matrix,GL_OES_read_format,GL_OES_single_precision,GL_OML_interlace,GL_OML_resample,GL_OML_subsample,GL_OVR_multiview,GL_OVR_multiview2,GL_PGI_misc_hints,GL_PGI_vertex_hints,GL_REND_screen_coordinates,GL_S3_s3tc,GL_SGIS_detail_texture,GL_SGIS_fog_function,GL_SGIS_generate_mipmap,GL_SGIS_multisample,GL_SGIS_pixel_texture,GL_SGIS_point_line_texgen,GL_SGIS_point_parameters,GL_SGIS_sharpen_texture,GL_SGIS_texture4D,GL_SGIS_texture_border_clamp,GL_SGIS_texture_color_mask,GL_SGIS_texture_edge_clamp,GL_SGIS_texture_filter4,GL_SGIS_texture_lod,GL_SGIS_texture_select,GL_SGIX_async,GL_SGIX_async_histogram,GL_SGIX_async_pixel,GL_SGIX_blend_alpha_minmax,GL_SGIX_calligraphic_fragment,GL_SGIX_clipmap,GL_SGIX_convolution_accuracy,GL_SGIX_depth_pass_instrument,GL_SGIX_depth_texture,GL_SGIX_flush_raster,GL_SGIX_fog_offset,GL_SGIX_fragment_lighting,GL_SGIX_framezoom,GL_SGIX_igloo_interface,GL_SGIX_instruments,GL_SGIX_interlace,GL_SGIX_ir_instrument1,GL_SGIX_list_priority,GL_SGIX_pixel_texture,GL_SGIX_pixel_tiles,GL_SGIX_polynomial_ffd,GL_SGIX_reference_plane,GL_SGIX_resample,GL_SGIX_scalebias_hint,GL_SGIX_shadow,GL_SGIX_shadow_ambient,GL_SGIX_sprite,GL_SGIX_subsample,GL_SGIX_tag_sample_buffer,GL_SGIX_texture_add_env,GL_SGIX_texture_coordinate_clamp,GL_SGIX_texture_lod_bias,GL_SGIX_texture_multi_buffer,GL_SGIX_texture_scale_bias,GL_SGIX_vertex_preclip,GL_SGIX_ycrcb,GL_SGIX_ycrcb_subsample,GL_SGIX_ycrcba,GL_SGI_color_matrix,GL_SGI_color_table,GL_SGI_texture_color_table,GL_SUNX_constant_data,GL_SUN_convolution_border_modes,GL_SUN_global_alpha,GL_SUN_mesh_array,GL_SUN_slice_accum,GL_SUN_triangle_list,GL_SUN_vertex,GL_WIN_phong_shading,GL_WIN_specular_fog" + Online: + Too many extensions +*/ + +#include +#include +#include +#include + +static void* get_proc(const char *namez); + +#if defined(_WIN32) || defined(__CYGWIN__) +#ifndef _WINDOWS_ +#undef APIENTRY +#endif +#include +static HMODULE libGL; + +typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*); +static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; + +#ifdef _MSC_VER +#ifdef __has_include + #if __has_include() + #define HAVE_WINAPIFAMILY 1 + #endif +#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ + #define HAVE_WINAPIFAMILY 1 +#endif +#endif + +#ifdef HAVE_WINAPIFAMILY + #include + #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + #define IS_UWP 1 + #endif +#endif + +static +int open_gl(void) { +#ifndef IS_UWP + libGL = LoadLibraryW(L"opengl32.dll"); + if(libGL != NULL) { + void (* tmp)(void); + tmp = (void(*)(void)) GetProcAddress(libGL, "wglGetProcAddress"); + gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp; + return gladGetProcAddressPtr != NULL; + } +#endif + + return 0; +} + +static +void close_gl(void) { + if(libGL != NULL) { + FreeLibrary((HMODULE) libGL); + libGL = NULL; + } +} +#else +#include +static void* libGL; + +#if !defined(__APPLE__) && !defined(__HAIKU__) +typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*); +static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; +#endif + +static +int open_gl(void) { +#ifdef __APPLE__ + static const char *NAMES[] = { + "../Frameworks/OpenGL.framework/OpenGL", + "/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" + }; +#else + static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; +#endif + + unsigned int index = 0; + for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { + libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); + + if(libGL != NULL) { +#if defined(__APPLE__) || defined(__HAIKU__) + return 1; +#else + gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, + "glXGetProcAddressARB"); + return gladGetProcAddressPtr != NULL; +#endif + } + } + + return 0; +} + +static +void close_gl(void) { + if(libGL != NULL) { + dlclose(libGL); + libGL = NULL; + } +} +#endif + +static +void* get_proc(const char *namez) { + void* result = NULL; + if(libGL == NULL) return NULL; + +#if !defined(__APPLE__) && !defined(__HAIKU__) + if(gladGetProcAddressPtr != NULL) { + result = gladGetProcAddressPtr(namez); + } +#endif + if(result == NULL) { +#if defined(_WIN32) || defined(__CYGWIN__) + result = (void*)GetProcAddress((HMODULE) libGL, namez); +#else + result = dlsym(libGL, namez); +#endif + } + + return result; +} + +int gladLoadGL(void) { + int status = 0; + + if(open_gl()) { + status = gladLoadGLLoader(&get_proc); + close_gl(); + } + + return status; +} + +struct gladGLversionStruct GLVersion = { 0, 0 }; + +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) +#define _GLAD_IS_SOME_NEW_VERSION 1 +#endif + +static int max_loaded_major; +static int max_loaded_minor; + +static const char *exts = NULL; +static int num_exts_i = 0; +static char **exts_i = NULL; + +static int get_exts(void) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if(max_loaded_major < 3) { +#endif + exts = (const char *)glGetString(GL_EXTENSIONS); +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + unsigned int index; + + num_exts_i = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); + if (num_exts_i > 0) { + exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); + } + + if (exts_i == NULL) { + return 0; + } + + for(index = 0; index < (unsigned)num_exts_i; index++) { + const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); + size_t len = strlen(gl_str_tmp); + + char *local_str = (char*)malloc((len+1) * sizeof(char)); + if(local_str != NULL) { + memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char)); + } + exts_i[index] = local_str; + } + } +#endif + return 1; +} + +static void free_exts(void) { + if (exts_i != NULL) { + int index; + for(index = 0; index < num_exts_i; index++) { + free((char *)exts_i[index]); + } + free((void *)exts_i); + exts_i = NULL; + } +} + +static int has_ext(const char *ext) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if(max_loaded_major < 3) { +#endif + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if(extensions == NULL || ext == NULL) { + return 0; + } + + while(1) { + loc = strstr(extensions, ext); + if(loc == NULL) { + return 0; + } + + terminator = loc + strlen(ext); + if((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) { + return 1; + } + extensions = terminator; + } +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + int index; + if(exts_i == NULL) return 0; + for(index = 0; index < num_exts_i; index++) { + const char *e = exts_i[index]; + + if(exts_i[index] != NULL && strcmp(e, ext) == 0) { + return 1; + } + } + } +#endif + + return 0; +} +int GLAD_GL_VERSION_1_0 = 0; +int GLAD_GL_VERSION_1_1 = 0; +int GLAD_GL_VERSION_1_2 = 0; +int GLAD_GL_VERSION_1_3 = 0; +int GLAD_GL_VERSION_1_4 = 0; +int GLAD_GL_VERSION_1_5 = 0; +int GLAD_GL_VERSION_2_0 = 0; +int GLAD_GL_VERSION_2_1 = 0; +int GLAD_GL_VERSION_3_0 = 0; +int GLAD_GL_VERSION_3_1 = 0; +int GLAD_GL_VERSION_3_2 = 0; +int GLAD_GL_VERSION_3_3 = 0; +int GLAD_GL_VERSION_4_0 = 0; +int GLAD_GL_VERSION_4_1 = 0; +PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram = NULL; +PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; +PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; +PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL; +PFNGLBEGINQUERYPROC glad_glBeginQuery = NULL; +PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed = NULL; +PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; +PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; +PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; +PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; +PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL; +PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; +PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline = NULL; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; +PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; +PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; +PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback = NULL; +PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; +PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; +PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei = NULL; +PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi = NULL; +PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; +PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei = NULL; +PFNGLBLENDFUNCIPROC glad_glBlendFunci = NULL; +PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL; +PFNGLBUFFERDATAPROC glad_glBufferData = NULL; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; +PFNGLCLAMPCOLORPROC glad_glClampColor = NULL; +PFNGLCLEARPROC glad_glClear = NULL; +PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL; +PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL; +PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL; +PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; +PFNGLCLEARCOLORPROC glad_glClearColor = NULL; +PFNGLCLEARDEPTHPROC glad_glClearDepth = NULL; +PFNGLCLEARDEPTHFPROC glad_glClearDepthf = NULL; +PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; +PFNGLCOLORMASKPROC glad_glColorMask = NULL; +PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; +PFNGLCOLORP3UIPROC glad_glColorP3ui = NULL; +PFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL; +PFNGLCOLORP4UIPROC glad_glColorP4ui = NULL; +PFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL; +PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; +PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; +PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; +PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; +PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; +PFNGLCREATESHADERPROC glad_glCreateShader = NULL; +PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv = NULL; +PFNGLCULLFACEPROC glad_glCullFace = NULL; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; +PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines = NULL; +PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; +PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; +PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; +PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; +PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks = NULL; +PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; +PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; +PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; +PFNGLDEPTHRANGEPROC glad_glDepthRange = NULL; +PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv = NULL; +PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed = NULL; +PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; +PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; +PFNGLDISABLEPROC glad_glDisable = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; +PFNGLDISABLEIPROC glad_glDisablei = NULL; +PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; +PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect = NULL; +PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; +PFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL; +PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; +PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; +PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; +PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect = NULL; +PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL; +PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; +PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback = NULL; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream = NULL; +PFNGLENABLEPROC glad_glEnable = NULL; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; +PFNGLENABLEIPROC glad_glEnablei = NULL; +PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL; +PFNGLENDQUERYPROC glad_glEndQuery = NULL; +PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed = NULL; +PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; +PFNGLFENCESYNCPROC glad_glFenceSync = NULL; +PFNGLFINISHPROC glad_glFinish = NULL; +PFNGLFLUSHPROC glad_glFlush = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; +PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; +PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; +PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL; +PFNGLFRONTFACEPROC glad_glFrontFace = NULL; +PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; +PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines = NULL; +PFNGLGENQUERIESPROC glad_glGenQueries = NULL; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; +PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; +PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; +PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks = NULL; +PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; +PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName = NULL; +PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName = NULL; +PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv = NULL; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; +PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL; +PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; +PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; +PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; +PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; +PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL; +PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL; +PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v = NULL; +PFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL; +PFNGLGETERRORPROC glad_glGetError = NULL; +PFNGLGETFLOATI_VPROC glad_glGetFloati_v = NULL; +PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; +PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL; +PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; +PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; +PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; +PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; +PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; +PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary = NULL; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; +PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog = NULL; +PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv = NULL; +PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv = NULL; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; +PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv = NULL; +PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL; +PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL; +PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL; +PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; +PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; +PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; +PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; +PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; +PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; +PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat = NULL; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; +PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; +PFNGLGETSTRINGPROC glad_glGetString = NULL; +PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; +PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex = NULL; +PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation = NULL; +PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; +PFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL; +PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; +PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; +PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL; +PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; +PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; +PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; +PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv = NULL; +PFNGLGETUNIFORMDVPROC glad_glGetUniformdv = NULL; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; +PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL; +PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL; +PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL; +PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv = NULL; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; +PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; +PFNGLHINTPROC glad_glHint = NULL; +PFNGLISBUFFERPROC glad_glIsBuffer = NULL; +PFNGLISENABLEDPROC glad_glIsEnabled = NULL; +PFNGLISENABLEDIPROC glad_glIsEnabledi = NULL; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; +PFNGLISPROGRAMPROC glad_glIsProgram = NULL; +PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline = NULL; +PFNGLISQUERYPROC glad_glIsQuery = NULL; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; +PFNGLISSAMPLERPROC glad_glIsSampler = NULL; +PFNGLISSHADERPROC glad_glIsShader = NULL; +PFNGLISSYNCPROC glad_glIsSync = NULL; +PFNGLISTEXTUREPROC glad_glIsTexture = NULL; +PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback = NULL; +PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; +PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; +PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; +PFNGLLOGICOPPROC glad_glLogicOp = NULL; +PFNGLMAPBUFFERPROC glad_glMapBuffer = NULL; +PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; +PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading = NULL; +PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL; +PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL; +PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL; +PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL; +PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL; +PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL; +PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL; +PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL; +PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL; +PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL; +PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL; +PFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL; +PFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL; +PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv = NULL; +PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri = NULL; +PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback = NULL; +PFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL; +PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; +PFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL; +PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL; +PFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL; +PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL; +PFNGLPOINTSIZEPROC glad_glPointSize = NULL; +PFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; +PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL; +PFNGLPROGRAMBINARYPROC glad_glProgramBinary = NULL; +PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri = NULL; +PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d = NULL; +PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv = NULL; +PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f = NULL; +PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv = NULL; +PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i = NULL; +PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv = NULL; +PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui = NULL; +PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv = NULL; +PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d = NULL; +PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv = NULL; +PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f = NULL; +PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv = NULL; +PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i = NULL; +PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv = NULL; +PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui = NULL; +PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv = NULL; +PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d = NULL; +PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv = NULL; +PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f = NULL; +PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv = NULL; +PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i = NULL; +PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv = NULL; +PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui = NULL; +PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv = NULL; +PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d = NULL; +PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv = NULL; +PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f = NULL; +PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv = NULL; +PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i = NULL; +PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv = NULL; +PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui = NULL; +PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv = NULL; +PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL; +PFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL; +PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; +PFNGLREADPIXELSPROC glad_glReadPixels = NULL; +PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler = NULL; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL; +PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback = NULL; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; +PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; +PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; +PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; +PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; +PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; +PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; +PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; +PFNGLSCISSORPROC glad_glScissor = NULL; +PFNGLSCISSORARRAYVPROC glad_glScissorArrayv = NULL; +PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed = NULL; +PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv = NULL; +PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL; +PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL; +PFNGLSHADERBINARYPROC glad_glShaderBinary = NULL; +PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; +PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; +PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; +PFNGLSTENCILOPPROC glad_glStencilOp = NULL; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; +PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; +PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL; +PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL; +PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL; +PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL; +PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL; +PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL; +PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL; +PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL; +PFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; +PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL; +PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; +PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL; +PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; +PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; +PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; +PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL; +PFNGLUNIFORM1DPROC glad_glUniform1d = NULL; +PFNGLUNIFORM1DVPROC glad_glUniform1dv = NULL; +PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; +PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; +PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; +PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; +PFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL; +PFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL; +PFNGLUNIFORM2DPROC glad_glUniform2d = NULL; +PFNGLUNIFORM2DVPROC glad_glUniform2dv = NULL; +PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; +PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; +PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; +PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; +PFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL; +PFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL; +PFNGLUNIFORM3DPROC glad_glUniform3d = NULL; +PFNGLUNIFORM3DVPROC glad_glUniform3dv = NULL; +PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; +PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; +PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; +PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; +PFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL; +PFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL; +PFNGLUNIFORM4DPROC glad_glUniform4d = NULL; +PFNGLUNIFORM4DVPROC glad_glUniform4dv = NULL; +PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; +PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; +PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; +PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; +PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; +PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; +PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; +PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv = NULL; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; +PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv = NULL; +PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; +PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv = NULL; +PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; +PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv = NULL; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; +PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv = NULL; +PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL; +PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv = NULL; +PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL; +PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv = NULL; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; +PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv = NULL; +PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL; +PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv = NULL; +PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL; +PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv = NULL; +PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL; +PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; +PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages = NULL; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; +PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline = NULL; +PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL; +PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; +PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL; +PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL; +PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL; +PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; +PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL; +PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL; +PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL; +PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; +PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL; +PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL; +PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL; +PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL; +PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL; +PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL; +PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL; +PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL; +PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL; +PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL; +PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL; +PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; +PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL; +PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL; +PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL; +PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL; +PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL; +PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL; +PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; +PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL; +PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL; +PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL; +PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL; +PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL; +PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL; +PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL; +PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL; +PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL; +PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL; +PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL; +PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL; +PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL; +PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL; +PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL; +PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL; +PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL; +PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; +PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; +PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL; +PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; +PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d = NULL; +PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv = NULL; +PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d = NULL; +PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv = NULL; +PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d = NULL; +PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv = NULL; +PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d = NULL; +PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv = NULL; +PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer = NULL; +PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL; +PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL; +PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL; +PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL; +PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL; +PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL; +PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL; +PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; +PFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL; +PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL; +PFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL; +PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL; +PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; +PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; +PFNGLVIEWPORTPROC glad_glViewport = NULL; +PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv = NULL; +PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf = NULL; +PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv = NULL; +PFNGLWAITSYNCPROC glad_glWaitSync = NULL; +int GLAD_GL_3DFX_multisample = 0; +int GLAD_GL_3DFX_tbuffer = 0; +int GLAD_GL_3DFX_texture_compression_FXT1 = 0; +int GLAD_GL_AMD_blend_minmax_factor = 0; +int GLAD_GL_AMD_conservative_depth = 0; +int GLAD_GL_AMD_debug_output = 0; +int GLAD_GL_AMD_depth_clamp_separate = 0; +int GLAD_GL_AMD_draw_buffers_blend = 0; +int GLAD_GL_AMD_framebuffer_multisample_advanced = 0; +int GLAD_GL_AMD_framebuffer_sample_positions = 0; +int GLAD_GL_AMD_gcn_shader = 0; +int GLAD_GL_AMD_gpu_shader_half_float = 0; +int GLAD_GL_AMD_gpu_shader_int16 = 0; +int GLAD_GL_AMD_gpu_shader_int64 = 0; +int GLAD_GL_AMD_interleaved_elements = 0; +int GLAD_GL_AMD_multi_draw_indirect = 0; +int GLAD_GL_AMD_name_gen_delete = 0; +int GLAD_GL_AMD_occlusion_query_event = 0; +int GLAD_GL_AMD_performance_monitor = 0; +int GLAD_GL_AMD_pinned_memory = 0; +int GLAD_GL_AMD_query_buffer_object = 0; +int GLAD_GL_AMD_sample_positions = 0; +int GLAD_GL_AMD_seamless_cubemap_per_texture = 0; +int GLAD_GL_AMD_shader_atomic_counter_ops = 0; +int GLAD_GL_AMD_shader_ballot = 0; +int GLAD_GL_AMD_shader_explicit_vertex_parameter = 0; +int GLAD_GL_AMD_shader_gpu_shader_half_float_fetch = 0; +int GLAD_GL_AMD_shader_image_load_store_lod = 0; +int GLAD_GL_AMD_shader_stencil_export = 0; +int GLAD_GL_AMD_shader_trinary_minmax = 0; +int GLAD_GL_AMD_sparse_texture = 0; +int GLAD_GL_AMD_stencil_operation_extended = 0; +int GLAD_GL_AMD_texture_gather_bias_lod = 0; +int GLAD_GL_AMD_texture_texture4 = 0; +int GLAD_GL_AMD_transform_feedback3_lines_triangles = 0; +int GLAD_GL_AMD_transform_feedback4 = 0; +int GLAD_GL_AMD_vertex_shader_layer = 0; +int GLAD_GL_AMD_vertex_shader_tessellator = 0; +int GLAD_GL_AMD_vertex_shader_viewport_index = 0; +int GLAD_GL_APPLE_aux_depth_stencil = 0; +int GLAD_GL_APPLE_client_storage = 0; +int GLAD_GL_APPLE_element_array = 0; +int GLAD_GL_APPLE_fence = 0; +int GLAD_GL_APPLE_float_pixels = 0; +int GLAD_GL_APPLE_flush_buffer_range = 0; +int GLAD_GL_APPLE_object_purgeable = 0; +int GLAD_GL_APPLE_rgb_422 = 0; +int GLAD_GL_APPLE_row_bytes = 0; +int GLAD_GL_APPLE_specular_vector = 0; +int GLAD_GL_APPLE_texture_range = 0; +int GLAD_GL_APPLE_transform_hint = 0; +int GLAD_GL_APPLE_vertex_array_object = 0; +int GLAD_GL_APPLE_vertex_array_range = 0; +int GLAD_GL_APPLE_vertex_program_evaluators = 0; +int GLAD_GL_APPLE_ycbcr_422 = 0; +int GLAD_GL_ARB_ES2_compatibility = 0; +int GLAD_GL_ARB_ES3_1_compatibility = 0; +int GLAD_GL_ARB_ES3_2_compatibility = 0; +int GLAD_GL_ARB_ES3_compatibility = 0; +int GLAD_GL_ARB_arrays_of_arrays = 0; +int GLAD_GL_ARB_base_instance = 0; +int GLAD_GL_ARB_bindless_texture = 0; +int GLAD_GL_ARB_blend_func_extended = 0; +int GLAD_GL_ARB_buffer_storage = 0; +int GLAD_GL_ARB_cl_event = 0; +int GLAD_GL_ARB_clear_buffer_object = 0; +int GLAD_GL_ARB_clear_texture = 0; +int GLAD_GL_ARB_clip_control = 0; +int GLAD_GL_ARB_color_buffer_float = 0; +int GLAD_GL_ARB_compatibility = 0; +int GLAD_GL_ARB_compressed_texture_pixel_storage = 0; +int GLAD_GL_ARB_compute_shader = 0; +int GLAD_GL_ARB_compute_variable_group_size = 0; +int GLAD_GL_ARB_conditional_render_inverted = 0; +int GLAD_GL_ARB_conservative_depth = 0; +int GLAD_GL_ARB_copy_buffer = 0; +int GLAD_GL_ARB_copy_image = 0; +int GLAD_GL_ARB_cull_distance = 0; +int GLAD_GL_ARB_debug_output = 0; +int GLAD_GL_ARB_depth_buffer_float = 0; +int GLAD_GL_ARB_depth_clamp = 0; +int GLAD_GL_ARB_depth_texture = 0; +int GLAD_GL_ARB_derivative_control = 0; +int GLAD_GL_ARB_direct_state_access = 0; +int GLAD_GL_ARB_draw_buffers = 0; +int GLAD_GL_ARB_draw_buffers_blend = 0; +int GLAD_GL_ARB_draw_elements_base_vertex = 0; +int GLAD_GL_ARB_draw_indirect = 0; +int GLAD_GL_ARB_draw_instanced = 0; +int GLAD_GL_ARB_enhanced_layouts = 0; +int GLAD_GL_ARB_explicit_attrib_location = 0; +int GLAD_GL_ARB_explicit_uniform_location = 0; +int GLAD_GL_ARB_fragment_coord_conventions = 0; +int GLAD_GL_ARB_fragment_layer_viewport = 0; +int GLAD_GL_ARB_fragment_program = 0; +int GLAD_GL_ARB_fragment_program_shadow = 0; +int GLAD_GL_ARB_fragment_shader = 0; +int GLAD_GL_ARB_fragment_shader_interlock = 0; +int GLAD_GL_ARB_framebuffer_no_attachments = 0; +int GLAD_GL_ARB_framebuffer_object = 0; +int GLAD_GL_ARB_framebuffer_sRGB = 0; +int GLAD_GL_ARB_geometry_shader4 = 0; +int GLAD_GL_ARB_get_program_binary = 0; +int GLAD_GL_ARB_get_texture_sub_image = 0; +int GLAD_GL_ARB_gl_spirv = 0; +int GLAD_GL_ARB_gpu_shader5 = 0; +int GLAD_GL_ARB_gpu_shader_fp64 = 0; +int GLAD_GL_ARB_gpu_shader_int64 = 0; +int GLAD_GL_ARB_half_float_pixel = 0; +int GLAD_GL_ARB_half_float_vertex = 0; +int GLAD_GL_ARB_imaging = 0; +int GLAD_GL_ARB_indirect_parameters = 0; +int GLAD_GL_ARB_instanced_arrays = 0; +int GLAD_GL_ARB_internalformat_query = 0; +int GLAD_GL_ARB_internalformat_query2 = 0; +int GLAD_GL_ARB_invalidate_subdata = 0; +int GLAD_GL_ARB_map_buffer_alignment = 0; +int GLAD_GL_ARB_map_buffer_range = 0; +int GLAD_GL_ARB_matrix_palette = 0; +int GLAD_GL_ARB_multi_bind = 0; +int GLAD_GL_ARB_multi_draw_indirect = 0; +int GLAD_GL_ARB_multisample = 0; +int GLAD_GL_ARB_multitexture = 0; +int GLAD_GL_ARB_occlusion_query = 0; +int GLAD_GL_ARB_occlusion_query2 = 0; +int GLAD_GL_ARB_parallel_shader_compile = 0; +int GLAD_GL_ARB_pipeline_statistics_query = 0; +int GLAD_GL_ARB_pixel_buffer_object = 0; +int GLAD_GL_ARB_point_parameters = 0; +int GLAD_GL_ARB_point_sprite = 0; +int GLAD_GL_ARB_polygon_offset_clamp = 0; +int GLAD_GL_ARB_post_depth_coverage = 0; +int GLAD_GL_ARB_program_interface_query = 0; +int GLAD_GL_ARB_provoking_vertex = 0; +int GLAD_GL_ARB_query_buffer_object = 0; +int GLAD_GL_ARB_robust_buffer_access_behavior = 0; +int GLAD_GL_ARB_robustness = 0; +int GLAD_GL_ARB_robustness_isolation = 0; +int GLAD_GL_ARB_sample_locations = 0; +int GLAD_GL_ARB_sample_shading = 0; +int GLAD_GL_ARB_sampler_objects = 0; +int GLAD_GL_ARB_seamless_cube_map = 0; +int GLAD_GL_ARB_seamless_cubemap_per_texture = 0; +int GLAD_GL_ARB_separate_shader_objects = 0; +int GLAD_GL_ARB_shader_atomic_counter_ops = 0; +int GLAD_GL_ARB_shader_atomic_counters = 0; +int GLAD_GL_ARB_shader_ballot = 0; +int GLAD_GL_ARB_shader_bit_encoding = 0; +int GLAD_GL_ARB_shader_clock = 0; +int GLAD_GL_ARB_shader_draw_parameters = 0; +int GLAD_GL_ARB_shader_group_vote = 0; +int GLAD_GL_ARB_shader_image_load_store = 0; +int GLAD_GL_ARB_shader_image_size = 0; +int GLAD_GL_ARB_shader_objects = 0; +int GLAD_GL_ARB_shader_precision = 0; +int GLAD_GL_ARB_shader_stencil_export = 0; +int GLAD_GL_ARB_shader_storage_buffer_object = 0; +int GLAD_GL_ARB_shader_subroutine = 0; +int GLAD_GL_ARB_shader_texture_image_samples = 0; +int GLAD_GL_ARB_shader_texture_lod = 0; +int GLAD_GL_ARB_shader_viewport_layer_array = 0; +int GLAD_GL_ARB_shading_language_100 = 0; +int GLAD_GL_ARB_shading_language_420pack = 0; +int GLAD_GL_ARB_shading_language_include = 0; +int GLAD_GL_ARB_shading_language_packing = 0; +int GLAD_GL_ARB_shadow = 0; +int GLAD_GL_ARB_shadow_ambient = 0; +int GLAD_GL_ARB_sparse_buffer = 0; +int GLAD_GL_ARB_sparse_texture = 0; +int GLAD_GL_ARB_sparse_texture2 = 0; +int GLAD_GL_ARB_sparse_texture_clamp = 0; +int GLAD_GL_ARB_spirv_extensions = 0; +int GLAD_GL_ARB_stencil_texturing = 0; +int GLAD_GL_ARB_sync = 0; +int GLAD_GL_ARB_tessellation_shader = 0; +int GLAD_GL_ARB_texture_barrier = 0; +int GLAD_GL_ARB_texture_border_clamp = 0; +int GLAD_GL_ARB_texture_buffer_object = 0; +int GLAD_GL_ARB_texture_buffer_object_rgb32 = 0; +int GLAD_GL_ARB_texture_buffer_range = 0; +int GLAD_GL_ARB_texture_compression = 0; +int GLAD_GL_ARB_texture_compression_bptc = 0; +int GLAD_GL_ARB_texture_compression_rgtc = 0; +int GLAD_GL_ARB_texture_cube_map = 0; +int GLAD_GL_ARB_texture_cube_map_array = 0; +int GLAD_GL_ARB_texture_env_add = 0; +int GLAD_GL_ARB_texture_env_combine = 0; +int GLAD_GL_ARB_texture_env_crossbar = 0; +int GLAD_GL_ARB_texture_env_dot3 = 0; +int GLAD_GL_ARB_texture_filter_anisotropic = 0; +int GLAD_GL_ARB_texture_filter_minmax = 0; +int GLAD_GL_ARB_texture_float = 0; +int GLAD_GL_ARB_texture_gather = 0; +int GLAD_GL_ARB_texture_mirror_clamp_to_edge = 0; +int GLAD_GL_ARB_texture_mirrored_repeat = 0; +int GLAD_GL_ARB_texture_multisample = 0; +int GLAD_GL_ARB_texture_non_power_of_two = 0; +int GLAD_GL_ARB_texture_query_levels = 0; +int GLAD_GL_ARB_texture_query_lod = 0; +int GLAD_GL_ARB_texture_rectangle = 0; +int GLAD_GL_ARB_texture_rg = 0; +int GLAD_GL_ARB_texture_rgb10_a2ui = 0; +int GLAD_GL_ARB_texture_stencil8 = 0; +int GLAD_GL_ARB_texture_storage = 0; +int GLAD_GL_ARB_texture_storage_multisample = 0; +int GLAD_GL_ARB_texture_swizzle = 0; +int GLAD_GL_ARB_texture_view = 0; +int GLAD_GL_ARB_timer_query = 0; +int GLAD_GL_ARB_transform_feedback2 = 0; +int GLAD_GL_ARB_transform_feedback3 = 0; +int GLAD_GL_ARB_transform_feedback_instanced = 0; +int GLAD_GL_ARB_transform_feedback_overflow_query = 0; +int GLAD_GL_ARB_transpose_matrix = 0; +int GLAD_GL_ARB_uniform_buffer_object = 0; +int GLAD_GL_ARB_vertex_array_bgra = 0; +int GLAD_GL_ARB_vertex_array_object = 0; +int GLAD_GL_ARB_vertex_attrib_64bit = 0; +int GLAD_GL_ARB_vertex_attrib_binding = 0; +int GLAD_GL_ARB_vertex_blend = 0; +int GLAD_GL_ARB_vertex_buffer_object = 0; +int GLAD_GL_ARB_vertex_program = 0; +int GLAD_GL_ARB_vertex_shader = 0; +int GLAD_GL_ARB_vertex_type_10f_11f_11f_rev = 0; +int GLAD_GL_ARB_vertex_type_2_10_10_10_rev = 0; +int GLAD_GL_ARB_viewport_array = 0; +int GLAD_GL_ARB_window_pos = 0; +int GLAD_GL_ATI_draw_buffers = 0; +int GLAD_GL_ATI_element_array = 0; +int GLAD_GL_ATI_envmap_bumpmap = 0; +int GLAD_GL_ATI_fragment_shader = 0; +int GLAD_GL_ATI_map_object_buffer = 0; +int GLAD_GL_ATI_meminfo = 0; +int GLAD_GL_ATI_pixel_format_float = 0; +int GLAD_GL_ATI_pn_triangles = 0; +int GLAD_GL_ATI_separate_stencil = 0; +int GLAD_GL_ATI_text_fragment_shader = 0; +int GLAD_GL_ATI_texture_env_combine3 = 0; +int GLAD_GL_ATI_texture_float = 0; +int GLAD_GL_ATI_texture_mirror_once = 0; +int GLAD_GL_ATI_vertex_array_object = 0; +int GLAD_GL_ATI_vertex_attrib_array_object = 0; +int GLAD_GL_ATI_vertex_streams = 0; +int GLAD_GL_EXT_422_pixels = 0; +int GLAD_GL_EXT_EGL_image_storage = 0; +int GLAD_GL_EXT_EGL_sync = 0; +int GLAD_GL_EXT_abgr = 0; +int GLAD_GL_EXT_bgra = 0; +int GLAD_GL_EXT_bindable_uniform = 0; +int GLAD_GL_EXT_blend_color = 0; +int GLAD_GL_EXT_blend_equation_separate = 0; +int GLAD_GL_EXT_blend_func_separate = 0; +int GLAD_GL_EXT_blend_logic_op = 0; +int GLAD_GL_EXT_blend_minmax = 0; +int GLAD_GL_EXT_blend_subtract = 0; +int GLAD_GL_EXT_clip_volume_hint = 0; +int GLAD_GL_EXT_cmyka = 0; +int GLAD_GL_EXT_color_subtable = 0; +int GLAD_GL_EXT_compiled_vertex_array = 0; +int GLAD_GL_EXT_convolution = 0; +int GLAD_GL_EXT_coordinate_frame = 0; +int GLAD_GL_EXT_copy_texture = 0; +int GLAD_GL_EXT_cull_vertex = 0; +int GLAD_GL_EXT_debug_label = 0; +int GLAD_GL_EXT_debug_marker = 0; +int GLAD_GL_EXT_depth_bounds_test = 0; +int GLAD_GL_EXT_direct_state_access = 0; +int GLAD_GL_EXT_draw_buffers2 = 0; +int GLAD_GL_EXT_draw_instanced = 0; +int GLAD_GL_EXT_draw_range_elements = 0; +int GLAD_GL_EXT_external_buffer = 0; +int GLAD_GL_EXT_fog_coord = 0; +int GLAD_GL_EXT_framebuffer_blit = 0; +int GLAD_GL_EXT_framebuffer_multisample = 0; +int GLAD_GL_EXT_framebuffer_multisample_blit_scaled = 0; +int GLAD_GL_EXT_framebuffer_object = 0; +int GLAD_GL_EXT_framebuffer_sRGB = 0; +int GLAD_GL_EXT_geometry_shader4 = 0; +int GLAD_GL_EXT_gpu_program_parameters = 0; +int GLAD_GL_EXT_gpu_shader4 = 0; +int GLAD_GL_EXT_histogram = 0; +int GLAD_GL_EXT_index_array_formats = 0; +int GLAD_GL_EXT_index_func = 0; +int GLAD_GL_EXT_index_material = 0; +int GLAD_GL_EXT_index_texture = 0; +int GLAD_GL_EXT_light_texture = 0; +int GLAD_GL_EXT_memory_object = 0; +int GLAD_GL_EXT_memory_object_fd = 0; +int GLAD_GL_EXT_memory_object_win32 = 0; +int GLAD_GL_EXT_misc_attribute = 0; +int GLAD_GL_EXT_multi_draw_arrays = 0; +int GLAD_GL_EXT_multisample = 0; +int GLAD_GL_EXT_multiview_tessellation_geometry_shader = 0; +int GLAD_GL_EXT_multiview_texture_multisample = 0; +int GLAD_GL_EXT_multiview_timer_query = 0; +int GLAD_GL_EXT_packed_depth_stencil = 0; +int GLAD_GL_EXT_packed_float = 0; +int GLAD_GL_EXT_packed_pixels = 0; +int GLAD_GL_EXT_paletted_texture = 0; +int GLAD_GL_EXT_pixel_buffer_object = 0; +int GLAD_GL_EXT_pixel_transform = 0; +int GLAD_GL_EXT_pixel_transform_color_table = 0; +int GLAD_GL_EXT_point_parameters = 0; +int GLAD_GL_EXT_polygon_offset = 0; +int GLAD_GL_EXT_polygon_offset_clamp = 0; +int GLAD_GL_EXT_post_depth_coverage = 0; +int GLAD_GL_EXT_provoking_vertex = 0; +int GLAD_GL_EXT_raster_multisample = 0; +int GLAD_GL_EXT_rescale_normal = 0; +int GLAD_GL_EXT_secondary_color = 0; +int GLAD_GL_EXT_semaphore = 0; +int GLAD_GL_EXT_semaphore_fd = 0; +int GLAD_GL_EXT_semaphore_win32 = 0; +int GLAD_GL_EXT_separate_shader_objects = 0; +int GLAD_GL_EXT_separate_specular_color = 0; +int GLAD_GL_EXT_shader_framebuffer_fetch = 0; +int GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent = 0; +int GLAD_GL_EXT_shader_image_load_formatted = 0; +int GLAD_GL_EXT_shader_image_load_store = 0; +int GLAD_GL_EXT_shader_integer_mix = 0; +int GLAD_GL_EXT_shadow_funcs = 0; +int GLAD_GL_EXT_shared_texture_palette = 0; +int GLAD_GL_EXT_sparse_texture2 = 0; +int GLAD_GL_EXT_stencil_clear_tag = 0; +int GLAD_GL_EXT_stencil_two_side = 0; +int GLAD_GL_EXT_stencil_wrap = 0; +int GLAD_GL_EXT_subtexture = 0; +int GLAD_GL_EXT_texture = 0; +int GLAD_GL_EXT_texture3D = 0; +int GLAD_GL_EXT_texture_array = 0; +int GLAD_GL_EXT_texture_buffer_object = 0; +int GLAD_GL_EXT_texture_compression_latc = 0; +int GLAD_GL_EXT_texture_compression_rgtc = 0; +int GLAD_GL_EXT_texture_compression_s3tc = 0; +int GLAD_GL_EXT_texture_cube_map = 0; +int GLAD_GL_EXT_texture_env_add = 0; +int GLAD_GL_EXT_texture_env_combine = 0; +int GLAD_GL_EXT_texture_env_dot3 = 0; +int GLAD_GL_EXT_texture_filter_anisotropic = 0; +int GLAD_GL_EXT_texture_filter_minmax = 0; +int GLAD_GL_EXT_texture_integer = 0; +int GLAD_GL_EXT_texture_lod_bias = 0; +int GLAD_GL_EXT_texture_mirror_clamp = 0; +int GLAD_GL_EXT_texture_object = 0; +int GLAD_GL_EXT_texture_perturb_normal = 0; +int GLAD_GL_EXT_texture_sRGB = 0; +int GLAD_GL_EXT_texture_sRGB_R8 = 0; +int GLAD_GL_EXT_texture_sRGB_decode = 0; +int GLAD_GL_EXT_texture_shadow_lod = 0; +int GLAD_GL_EXT_texture_shared_exponent = 0; +int GLAD_GL_EXT_texture_snorm = 0; +int GLAD_GL_EXT_texture_swizzle = 0; +int GLAD_GL_EXT_timer_query = 0; +int GLAD_GL_EXT_transform_feedback = 0; +int GLAD_GL_EXT_vertex_array = 0; +int GLAD_GL_EXT_vertex_array_bgra = 0; +int GLAD_GL_EXT_vertex_attrib_64bit = 0; +int GLAD_GL_EXT_vertex_shader = 0; +int GLAD_GL_EXT_vertex_weighting = 0; +int GLAD_GL_EXT_win32_keyed_mutex = 0; +int GLAD_GL_EXT_window_rectangles = 0; +int GLAD_GL_EXT_x11_sync_object = 0; +int GLAD_GL_GREMEDY_frame_terminator = 0; +int GLAD_GL_GREMEDY_string_marker = 0; +int GLAD_GL_HP_convolution_border_modes = 0; +int GLAD_GL_HP_image_transform = 0; +int GLAD_GL_HP_occlusion_test = 0; +int GLAD_GL_HP_texture_lighting = 0; +int GLAD_GL_IBM_cull_vertex = 0; +int GLAD_GL_IBM_multimode_draw_arrays = 0; +int GLAD_GL_IBM_rasterpos_clip = 0; +int GLAD_GL_IBM_static_data = 0; +int GLAD_GL_IBM_texture_mirrored_repeat = 0; +int GLAD_GL_IBM_vertex_array_lists = 0; +int GLAD_GL_INGR_blend_func_separate = 0; +int GLAD_GL_INGR_color_clamp = 0; +int GLAD_GL_INGR_interlace_read = 0; +int GLAD_GL_INTEL_blackhole_render = 0; +int GLAD_GL_INTEL_conservative_rasterization = 0; +int GLAD_GL_INTEL_fragment_shader_ordering = 0; +int GLAD_GL_INTEL_framebuffer_CMAA = 0; +int GLAD_GL_INTEL_map_texture = 0; +int GLAD_GL_INTEL_parallel_arrays = 0; +int GLAD_GL_INTEL_performance_query = 0; +int GLAD_GL_KHR_blend_equation_advanced = 0; +int GLAD_GL_KHR_blend_equation_advanced_coherent = 0; +int GLAD_GL_KHR_context_flush_control = 0; +int GLAD_GL_KHR_debug = 0; +int GLAD_GL_KHR_no_error = 0; +int GLAD_GL_KHR_parallel_shader_compile = 0; +int GLAD_GL_KHR_robust_buffer_access_behavior = 0; +int GLAD_GL_KHR_robustness = 0; +int GLAD_GL_KHR_shader_subgroup = 0; +int GLAD_GL_KHR_texture_compression_astc_hdr = 0; +int GLAD_GL_KHR_texture_compression_astc_ldr = 0; +int GLAD_GL_KHR_texture_compression_astc_sliced_3d = 0; +int GLAD_GL_MESAX_texture_stack = 0; +int GLAD_GL_MESA_framebuffer_flip_y = 0; +int GLAD_GL_MESA_pack_invert = 0; +int GLAD_GL_MESA_program_binary_formats = 0; +int GLAD_GL_MESA_resize_buffers = 0; +int GLAD_GL_MESA_shader_integer_functions = 0; +int GLAD_GL_MESA_tile_raster_order = 0; +int GLAD_GL_MESA_window_pos = 0; +int GLAD_GL_MESA_ycbcr_texture = 0; +int GLAD_GL_NVX_blend_equation_advanced_multi_draw_buffers = 0; +int GLAD_GL_NVX_conditional_render = 0; +int GLAD_GL_NVX_gpu_memory_info = 0; +int GLAD_GL_NVX_gpu_multicast2 = 0; +int GLAD_GL_NVX_linked_gpu_multicast = 0; +int GLAD_GL_NVX_progress_fence = 0; +int GLAD_GL_NV_alpha_to_coverage_dither_control = 0; +int GLAD_GL_NV_bindless_multi_draw_indirect = 0; +int GLAD_GL_NV_bindless_multi_draw_indirect_count = 0; +int GLAD_GL_NV_bindless_texture = 0; +int GLAD_GL_NV_blend_equation_advanced = 0; +int GLAD_GL_NV_blend_equation_advanced_coherent = 0; +int GLAD_GL_NV_blend_minmax_factor = 0; +int GLAD_GL_NV_blend_square = 0; +int GLAD_GL_NV_clip_space_w_scaling = 0; +int GLAD_GL_NV_command_list = 0; +int GLAD_GL_NV_compute_program5 = 0; +int GLAD_GL_NV_compute_shader_derivatives = 0; +int GLAD_GL_NV_conditional_render = 0; +int GLAD_GL_NV_conservative_raster = 0; +int GLAD_GL_NV_conservative_raster_dilate = 0; +int GLAD_GL_NV_conservative_raster_pre_snap = 0; +int GLAD_GL_NV_conservative_raster_pre_snap_triangles = 0; +int GLAD_GL_NV_conservative_raster_underestimation = 0; +int GLAD_GL_NV_copy_depth_to_color = 0; +int GLAD_GL_NV_copy_image = 0; +int GLAD_GL_NV_deep_texture3D = 0; +int GLAD_GL_NV_depth_buffer_float = 0; +int GLAD_GL_NV_depth_clamp = 0; +int GLAD_GL_NV_draw_texture = 0; +int GLAD_GL_NV_draw_vulkan_image = 0; +int GLAD_GL_NV_evaluators = 0; +int GLAD_GL_NV_explicit_multisample = 0; +int GLAD_GL_NV_fence = 0; +int GLAD_GL_NV_fill_rectangle = 0; +int GLAD_GL_NV_float_buffer = 0; +int GLAD_GL_NV_fog_distance = 0; +int GLAD_GL_NV_fragment_coverage_to_color = 0; +int GLAD_GL_NV_fragment_program = 0; +int GLAD_GL_NV_fragment_program2 = 0; +int GLAD_GL_NV_fragment_program4 = 0; +int GLAD_GL_NV_fragment_program_option = 0; +int GLAD_GL_NV_fragment_shader_barycentric = 0; +int GLAD_GL_NV_fragment_shader_interlock = 0; +int GLAD_GL_NV_framebuffer_mixed_samples = 0; +int GLAD_GL_NV_framebuffer_multisample_coverage = 0; +int GLAD_GL_NV_geometry_program4 = 0; +int GLAD_GL_NV_geometry_shader4 = 0; +int GLAD_GL_NV_geometry_shader_passthrough = 0; +int GLAD_GL_NV_gpu_multicast = 0; +int GLAD_GL_NV_gpu_program4 = 0; +int GLAD_GL_NV_gpu_program5 = 0; +int GLAD_GL_NV_gpu_program5_mem_extended = 0; +int GLAD_GL_NV_gpu_shader5 = 0; +int GLAD_GL_NV_half_float = 0; +int GLAD_GL_NV_internalformat_sample_query = 0; +int GLAD_GL_NV_light_max_exponent = 0; +int GLAD_GL_NV_memory_attachment = 0; +int GLAD_GL_NV_mesh_shader = 0; +int GLAD_GL_NV_multisample_coverage = 0; +int GLAD_GL_NV_multisample_filter_hint = 0; +int GLAD_GL_NV_occlusion_query = 0; +int GLAD_GL_NV_packed_depth_stencil = 0; +int GLAD_GL_NV_parameter_buffer_object = 0; +int GLAD_GL_NV_parameter_buffer_object2 = 0; +int GLAD_GL_NV_path_rendering = 0; +int GLAD_GL_NV_path_rendering_shared_edge = 0; +int GLAD_GL_NV_pixel_data_range = 0; +int GLAD_GL_NV_point_sprite = 0; +int GLAD_GL_NV_present_video = 0; +int GLAD_GL_NV_primitive_restart = 0; +int GLAD_GL_NV_query_resource = 0; +int GLAD_GL_NV_query_resource_tag = 0; +int GLAD_GL_NV_register_combiners = 0; +int GLAD_GL_NV_register_combiners2 = 0; +int GLAD_GL_NV_representative_fragment_test = 0; +int GLAD_GL_NV_robustness_video_memory_purge = 0; +int GLAD_GL_NV_sample_locations = 0; +int GLAD_GL_NV_sample_mask_override_coverage = 0; +int GLAD_GL_NV_scissor_exclusive = 0; +int GLAD_GL_NV_shader_atomic_counters = 0; +int GLAD_GL_NV_shader_atomic_float = 0; +int GLAD_GL_NV_shader_atomic_float64 = 0; +int GLAD_GL_NV_shader_atomic_fp16_vector = 0; +int GLAD_GL_NV_shader_atomic_int64 = 0; +int GLAD_GL_NV_shader_buffer_load = 0; +int GLAD_GL_NV_shader_buffer_store = 0; +int GLAD_GL_NV_shader_storage_buffer_object = 0; +int GLAD_GL_NV_shader_subgroup_partitioned = 0; +int GLAD_GL_NV_shader_texture_footprint = 0; +int GLAD_GL_NV_shader_thread_group = 0; +int GLAD_GL_NV_shader_thread_shuffle = 0; +int GLAD_GL_NV_shading_rate_image = 0; +int GLAD_GL_NV_stereo_view_rendering = 0; +int GLAD_GL_NV_tessellation_program5 = 0; +int GLAD_GL_NV_texgen_emboss = 0; +int GLAD_GL_NV_texgen_reflection = 0; +int GLAD_GL_NV_texture_barrier = 0; +int GLAD_GL_NV_texture_compression_vtc = 0; +int GLAD_GL_NV_texture_env_combine4 = 0; +int GLAD_GL_NV_texture_expand_normal = 0; +int GLAD_GL_NV_texture_multisample = 0; +int GLAD_GL_NV_texture_rectangle = 0; +int GLAD_GL_NV_texture_rectangle_compressed = 0; +int GLAD_GL_NV_texture_shader = 0; +int GLAD_GL_NV_texture_shader2 = 0; +int GLAD_GL_NV_texture_shader3 = 0; +int GLAD_GL_NV_transform_feedback = 0; +int GLAD_GL_NV_transform_feedback2 = 0; +int GLAD_GL_NV_uniform_buffer_unified_memory = 0; +int GLAD_GL_NV_vdpau_interop = 0; +int GLAD_GL_NV_vdpau_interop2 = 0; +int GLAD_GL_NV_vertex_array_range = 0; +int GLAD_GL_NV_vertex_array_range2 = 0; +int GLAD_GL_NV_vertex_attrib_integer_64bit = 0; +int GLAD_GL_NV_vertex_buffer_unified_memory = 0; +int GLAD_GL_NV_vertex_program = 0; +int GLAD_GL_NV_vertex_program1_1 = 0; +int GLAD_GL_NV_vertex_program2 = 0; +int GLAD_GL_NV_vertex_program2_option = 0; +int GLAD_GL_NV_vertex_program3 = 0; +int GLAD_GL_NV_vertex_program4 = 0; +int GLAD_GL_NV_video_capture = 0; +int GLAD_GL_NV_viewport_array2 = 0; +int GLAD_GL_NV_viewport_swizzle = 0; +int GLAD_GL_OES_byte_coordinates = 0; +int GLAD_GL_OES_compressed_paletted_texture = 0; +int GLAD_GL_OES_fixed_point = 0; +int GLAD_GL_OES_query_matrix = 0; +int GLAD_GL_OES_read_format = 0; +int GLAD_GL_OES_single_precision = 0; +int GLAD_GL_OML_interlace = 0; +int GLAD_GL_OML_resample = 0; +int GLAD_GL_OML_subsample = 0; +int GLAD_GL_OVR_multiview = 0; +int GLAD_GL_OVR_multiview2 = 0; +int GLAD_GL_PGI_misc_hints = 0; +int GLAD_GL_PGI_vertex_hints = 0; +int GLAD_GL_REND_screen_coordinates = 0; +int GLAD_GL_S3_s3tc = 0; +int GLAD_GL_SGIS_detail_texture = 0; +int GLAD_GL_SGIS_fog_function = 0; +int GLAD_GL_SGIS_generate_mipmap = 0; +int GLAD_GL_SGIS_multisample = 0; +int GLAD_GL_SGIS_pixel_texture = 0; +int GLAD_GL_SGIS_point_line_texgen = 0; +int GLAD_GL_SGIS_point_parameters = 0; +int GLAD_GL_SGIS_sharpen_texture = 0; +int GLAD_GL_SGIS_texture4D = 0; +int GLAD_GL_SGIS_texture_border_clamp = 0; +int GLAD_GL_SGIS_texture_color_mask = 0; +int GLAD_GL_SGIS_texture_edge_clamp = 0; +int GLAD_GL_SGIS_texture_filter4 = 0; +int GLAD_GL_SGIS_texture_lod = 0; +int GLAD_GL_SGIS_texture_select = 0; +int GLAD_GL_SGIX_async = 0; +int GLAD_GL_SGIX_async_histogram = 0; +int GLAD_GL_SGIX_async_pixel = 0; +int GLAD_GL_SGIX_blend_alpha_minmax = 0; +int GLAD_GL_SGIX_calligraphic_fragment = 0; +int GLAD_GL_SGIX_clipmap = 0; +int GLAD_GL_SGIX_convolution_accuracy = 0; +int GLAD_GL_SGIX_depth_pass_instrument = 0; +int GLAD_GL_SGIX_depth_texture = 0; +int GLAD_GL_SGIX_flush_raster = 0; +int GLAD_GL_SGIX_fog_offset = 0; +int GLAD_GL_SGIX_fragment_lighting = 0; +int GLAD_GL_SGIX_framezoom = 0; +int GLAD_GL_SGIX_igloo_interface = 0; +int GLAD_GL_SGIX_instruments = 0; +int GLAD_GL_SGIX_interlace = 0; +int GLAD_GL_SGIX_ir_instrument1 = 0; +int GLAD_GL_SGIX_list_priority = 0; +int GLAD_GL_SGIX_pixel_texture = 0; +int GLAD_GL_SGIX_pixel_tiles = 0; +int GLAD_GL_SGIX_polynomial_ffd = 0; +int GLAD_GL_SGIX_reference_plane = 0; +int GLAD_GL_SGIX_resample = 0; +int GLAD_GL_SGIX_scalebias_hint = 0; +int GLAD_GL_SGIX_shadow = 0; +int GLAD_GL_SGIX_shadow_ambient = 0; +int GLAD_GL_SGIX_sprite = 0; +int GLAD_GL_SGIX_subsample = 0; +int GLAD_GL_SGIX_tag_sample_buffer = 0; +int GLAD_GL_SGIX_texture_add_env = 0; +int GLAD_GL_SGIX_texture_coordinate_clamp = 0; +int GLAD_GL_SGIX_texture_lod_bias = 0; +int GLAD_GL_SGIX_texture_multi_buffer = 0; +int GLAD_GL_SGIX_texture_scale_bias = 0; +int GLAD_GL_SGIX_vertex_preclip = 0; +int GLAD_GL_SGIX_ycrcb = 0; +int GLAD_GL_SGIX_ycrcb_subsample = 0; +int GLAD_GL_SGIX_ycrcba = 0; +int GLAD_GL_SGI_color_matrix = 0; +int GLAD_GL_SGI_color_table = 0; +int GLAD_GL_SGI_texture_color_table = 0; +int GLAD_GL_SUNX_constant_data = 0; +int GLAD_GL_SUN_convolution_border_modes = 0; +int GLAD_GL_SUN_global_alpha = 0; +int GLAD_GL_SUN_mesh_array = 0; +int GLAD_GL_SUN_slice_accum = 0; +int GLAD_GL_SUN_triangle_list = 0; +int GLAD_GL_SUN_vertex = 0; +int GLAD_GL_WIN_phong_shading = 0; +int GLAD_GL_WIN_specular_fog = 0; +PFNGLTBUFFERMASK3DFXPROC glad_glTbufferMask3DFX = NULL; +PFNGLDEBUGMESSAGEENABLEAMDPROC glad_glDebugMessageEnableAMD = NULL; +PFNGLDEBUGMESSAGEINSERTAMDPROC glad_glDebugMessageInsertAMD = NULL; +PFNGLDEBUGMESSAGECALLBACKAMDPROC glad_glDebugMessageCallbackAMD = NULL; +PFNGLGETDEBUGMESSAGELOGAMDPROC glad_glGetDebugMessageLogAMD = NULL; +PFNGLBLENDFUNCINDEXEDAMDPROC glad_glBlendFuncIndexedAMD = NULL; +PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC glad_glBlendFuncSeparateIndexedAMD = NULL; +PFNGLBLENDEQUATIONINDEXEDAMDPROC glad_glBlendEquationIndexedAMD = NULL; +PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC glad_glBlendEquationSeparateIndexedAMD = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glRenderbufferStorageMultisampleAdvancedAMD = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glNamedRenderbufferStorageMultisampleAdvancedAMD = NULL; +PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC glad_glFramebufferSamplePositionsfvAMD = NULL; +PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC glad_glNamedFramebufferSamplePositionsfvAMD = NULL; +PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC glad_glGetFramebufferParameterfvAMD = NULL; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC glad_glGetNamedFramebufferParameterfvAMD = NULL; +PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV = NULL; +PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV = NULL; +PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV = NULL; +PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV = NULL; +PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV = NULL; +PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV = NULL; +PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV = NULL; +PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV = NULL; +PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV = NULL; +PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV = NULL; +PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV = NULL; +PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV = NULL; +PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV = NULL; +PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV = NULL; +PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV = NULL; +PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV = NULL; +PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV = NULL; +PFNGLGETUNIFORMUI64VNVPROC glad_glGetUniformui64vNV = NULL; +PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV = NULL; +PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV = NULL; +PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV = NULL; +PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV = NULL; +PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV = NULL; +PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV = NULL; +PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV = NULL; +PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV = NULL; +PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV = NULL; +PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV = NULL; +PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV = NULL; +PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV = NULL; +PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV = NULL; +PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV = NULL; +PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV = NULL; +PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV = NULL; +PFNGLVERTEXATTRIBPARAMETERIAMDPROC glad_glVertexAttribParameteriAMD = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC glad_glMultiDrawArraysIndirectAMD = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC glad_glMultiDrawElementsIndirectAMD = NULL; +PFNGLGENNAMESAMDPROC glad_glGenNamesAMD = NULL; +PFNGLDELETENAMESAMDPROC glad_glDeleteNamesAMD = NULL; +PFNGLISNAMEAMDPROC glad_glIsNameAMD = NULL; +PFNGLQUERYOBJECTPARAMETERUIAMDPROC glad_glQueryObjectParameteruiAMD = NULL; +PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD = NULL; +PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD = NULL; +PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD = NULL; +PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD = NULL; +PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD = NULL; +PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD = NULL; +PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD = NULL; +PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD = NULL; +PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD = NULL; +PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD = NULL; +PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD = NULL; +PFNGLSETMULTISAMPLEFVAMDPROC glad_glSetMultisamplefvAMD = NULL; +PFNGLTEXSTORAGESPARSEAMDPROC glad_glTexStorageSparseAMD = NULL; +PFNGLTEXTURESTORAGESPARSEAMDPROC glad_glTextureStorageSparseAMD = NULL; +PFNGLSTENCILOPVALUEAMDPROC glad_glStencilOpValueAMD = NULL; +PFNGLTESSELLATIONFACTORAMDPROC glad_glTessellationFactorAMD = NULL; +PFNGLTESSELLATIONMODEAMDPROC glad_glTessellationModeAMD = NULL; +PFNGLELEMENTPOINTERAPPLEPROC glad_glElementPointerAPPLE = NULL; +PFNGLDRAWELEMENTARRAYAPPLEPROC glad_glDrawElementArrayAPPLE = NULL; +PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC glad_glDrawRangeElementArrayAPPLE = NULL; +PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC glad_glMultiDrawElementArrayAPPLE = NULL; +PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC glad_glMultiDrawRangeElementArrayAPPLE = NULL; +PFNGLGENFENCESAPPLEPROC glad_glGenFencesAPPLE = NULL; +PFNGLDELETEFENCESAPPLEPROC glad_glDeleteFencesAPPLE = NULL; +PFNGLSETFENCEAPPLEPROC glad_glSetFenceAPPLE = NULL; +PFNGLISFENCEAPPLEPROC glad_glIsFenceAPPLE = NULL; +PFNGLTESTFENCEAPPLEPROC glad_glTestFenceAPPLE = NULL; +PFNGLFINISHFENCEAPPLEPROC glad_glFinishFenceAPPLE = NULL; +PFNGLTESTOBJECTAPPLEPROC glad_glTestObjectAPPLE = NULL; +PFNGLFINISHOBJECTAPPLEPROC glad_glFinishObjectAPPLE = NULL; +PFNGLBUFFERPARAMETERIAPPLEPROC glad_glBufferParameteriAPPLE = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glad_glFlushMappedBufferRangeAPPLE = NULL; +PFNGLOBJECTPURGEABLEAPPLEPROC glad_glObjectPurgeableAPPLE = NULL; +PFNGLOBJECTUNPURGEABLEAPPLEPROC glad_glObjectUnpurgeableAPPLE = NULL; +PFNGLGETOBJECTPARAMETERIVAPPLEPROC glad_glGetObjectParameterivAPPLE = NULL; +PFNGLTEXTURERANGEAPPLEPROC glad_glTextureRangeAPPLE = NULL; +PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC glad_glGetTexParameterPointervAPPLE = NULL; +PFNGLBINDVERTEXARRAYAPPLEPROC glad_glBindVertexArrayAPPLE = NULL; +PFNGLDELETEVERTEXARRAYSAPPLEPROC glad_glDeleteVertexArraysAPPLE = NULL; +PFNGLGENVERTEXARRAYSAPPLEPROC glad_glGenVertexArraysAPPLE = NULL; +PFNGLISVERTEXARRAYAPPLEPROC glad_glIsVertexArrayAPPLE = NULL; +PFNGLVERTEXARRAYRANGEAPPLEPROC glad_glVertexArrayRangeAPPLE = NULL; +PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC glad_glFlushVertexArrayRangeAPPLE = NULL; +PFNGLVERTEXARRAYPARAMETERIAPPLEPROC glad_glVertexArrayParameteriAPPLE = NULL; +PFNGLENABLEVERTEXATTRIBAPPLEPROC glad_glEnableVertexAttribAPPLE = NULL; +PFNGLDISABLEVERTEXATTRIBAPPLEPROC glad_glDisableVertexAttribAPPLE = NULL; +PFNGLISVERTEXATTRIBENABLEDAPPLEPROC glad_glIsVertexAttribEnabledAPPLE = NULL; +PFNGLMAPVERTEXATTRIB1DAPPLEPROC glad_glMapVertexAttrib1dAPPLE = NULL; +PFNGLMAPVERTEXATTRIB1FAPPLEPROC glad_glMapVertexAttrib1fAPPLE = NULL; +PFNGLMAPVERTEXATTRIB2DAPPLEPROC glad_glMapVertexAttrib2dAPPLE = NULL; +PFNGLMAPVERTEXATTRIB2FAPPLEPROC glad_glMapVertexAttrib2fAPPLE = NULL; +PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion = NULL; +PFNGLPRIMITIVEBOUNDINGBOXARBPROC glad_glPrimitiveBoundingBoxARB = NULL; +PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance = NULL; +PFNGLGETTEXTUREHANDLEARBPROC glad_glGetTextureHandleARB = NULL; +PFNGLGETTEXTURESAMPLERHANDLEARBPROC glad_glGetTextureSamplerHandleARB = NULL; +PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glad_glMakeTextureHandleResidentARB = NULL; +PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glad_glMakeTextureHandleNonResidentARB = NULL; +PFNGLGETIMAGEHANDLEARBPROC glad_glGetImageHandleARB = NULL; +PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glad_glMakeImageHandleResidentARB = NULL; +PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glad_glMakeImageHandleNonResidentARB = NULL; +PFNGLUNIFORMHANDLEUI64ARBPROC glad_glUniformHandleui64ARB = NULL; +PFNGLUNIFORMHANDLEUI64VARBPROC glad_glUniformHandleui64vARB = NULL; +PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glad_glProgramUniformHandleui64ARB = NULL; +PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glad_glProgramUniformHandleui64vARB = NULL; +PFNGLISTEXTUREHANDLERESIDENTARBPROC glad_glIsTextureHandleResidentARB = NULL; +PFNGLISIMAGEHANDLERESIDENTARBPROC glad_glIsImageHandleResidentARB = NULL; +PFNGLVERTEXATTRIBL1UI64ARBPROC glad_glVertexAttribL1ui64ARB = NULL; +PFNGLVERTEXATTRIBL1UI64VARBPROC glad_glVertexAttribL1ui64vARB = NULL; +PFNGLGETVERTEXATTRIBLUI64VARBPROC glad_glGetVertexAttribLui64vARB = NULL; +PFNGLBUFFERSTORAGEPROC glad_glBufferStorage = NULL; +PFNGLCREATESYNCFROMCLEVENTARBPROC glad_glCreateSyncFromCLeventARB = NULL; +PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData = NULL; +PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData = NULL; +PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage = NULL; +PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage = NULL; +PFNGLCLIPCONTROLPROC glad_glClipControl = NULL; +PFNGLCLAMPCOLORARBPROC glad_glClampColorARB = NULL; +PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute = NULL; +PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect = NULL; +PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glad_glDispatchComputeGroupSizeARB = NULL; +PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData = NULL; +PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB = NULL; +PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB = NULL; +PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB = NULL; +PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB = NULL; +PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks = NULL; +PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase = NULL; +PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange = NULL; +PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv = NULL; +PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v = NULL; +PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v = NULL; +PFNGLCREATEBUFFERSPROC glad_glCreateBuffers = NULL; +PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage = NULL; +PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData = NULL; +PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData = NULL; +PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData = NULL; +PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData = NULL; +PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData = NULL; +PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer = NULL; +PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange = NULL; +PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer = NULL; +PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange = NULL; +PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv = NULL; +PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v = NULL; +PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv = NULL; +PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData = NULL; +PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers = NULL; +PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer = NULL; +PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer = NULL; +PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer = NULL; +PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers = NULL; +PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer = NULL; +PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData = NULL; +PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData = NULL; +PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv = NULL; +PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv = NULL; +PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv = NULL; +PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi = NULL; +PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer = NULL; +PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus = NULL; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv = NULL; +PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv = NULL; +PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample = NULL; +PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv = NULL; +PFNGLCREATETEXTURESPROC glad_glCreateTextures = NULL; +PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer = NULL; +PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange = NULL; +PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D = NULL; +PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D = NULL; +PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D = NULL; +PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample = NULL; +PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample = NULL; +PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D = NULL; +PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D = NULL; +PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D = NULL; +PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D = NULL; +PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D = NULL; +PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D = NULL; +PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf = NULL; +PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv = NULL; +PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri = NULL; +PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv = NULL; +PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv = NULL; +PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv = NULL; +PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap = NULL; +PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit = NULL; +PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage = NULL; +PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage = NULL; +PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv = NULL; +PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv = NULL; +PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv = NULL; +PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv = NULL; +PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv = NULL; +PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv = NULL; +PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays = NULL; +PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib = NULL; +PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib = NULL; +PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer = NULL; +PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer = NULL; +PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers = NULL; +PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding = NULL; +PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat = NULL; +PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat = NULL; +PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat = NULL; +PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor = NULL; +PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv = NULL; +PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv = NULL; +PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv = NULL; +PFNGLCREATESAMPLERSPROC glad_glCreateSamplers = NULL; +PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines = NULL; +PFNGLCREATEQUERIESPROC glad_glCreateQueries = NULL; +PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v = NULL; +PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv = NULL; +PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v = NULL; +PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv = NULL; +PFNGLDRAWBUFFERSARBPROC glad_glDrawBuffersARB = NULL; +PFNGLBLENDEQUATIONIARBPROC glad_glBlendEquationiARB = NULL; +PFNGLBLENDEQUATIONSEPARATEIARBPROC glad_glBlendEquationSeparateiARB = NULL; +PFNGLBLENDFUNCIARBPROC glad_glBlendFunciARB = NULL; +PFNGLBLENDFUNCSEPARATEIARBPROC glad_glBlendFuncSeparateiARB = NULL; +PFNGLDRAWARRAYSINSTANCEDARBPROC glad_glDrawArraysInstancedARB = NULL; +PFNGLDRAWELEMENTSINSTANCEDARBPROC glad_glDrawElementsInstancedARB = NULL; +PFNGLPROGRAMSTRINGARBPROC glad_glProgramStringARB = NULL; +PFNGLBINDPROGRAMARBPROC glad_glBindProgramARB = NULL; +PFNGLDELETEPROGRAMSARBPROC glad_glDeleteProgramsARB = NULL; +PFNGLGENPROGRAMSARBPROC glad_glGenProgramsARB = NULL; +PFNGLPROGRAMENVPARAMETER4DARBPROC glad_glProgramEnvParameter4dARB = NULL; +PFNGLPROGRAMENVPARAMETER4DVARBPROC glad_glProgramEnvParameter4dvARB = NULL; +PFNGLPROGRAMENVPARAMETER4FARBPROC glad_glProgramEnvParameter4fARB = NULL; +PFNGLPROGRAMENVPARAMETER4FVARBPROC glad_glProgramEnvParameter4fvARB = NULL; +PFNGLPROGRAMLOCALPARAMETER4DARBPROC glad_glProgramLocalParameter4dARB = NULL; +PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glad_glProgramLocalParameter4dvARB = NULL; +PFNGLPROGRAMLOCALPARAMETER4FARBPROC glad_glProgramLocalParameter4fARB = NULL; +PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glad_glProgramLocalParameter4fvARB = NULL; +PFNGLGETPROGRAMENVPARAMETERDVARBPROC glad_glGetProgramEnvParameterdvARB = NULL; +PFNGLGETPROGRAMENVPARAMETERFVARBPROC glad_glGetProgramEnvParameterfvARB = NULL; +PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glad_glGetProgramLocalParameterdvARB = NULL; +PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glad_glGetProgramLocalParameterfvARB = NULL; +PFNGLGETPROGRAMIVARBPROC glad_glGetProgramivARB = NULL; +PFNGLGETPROGRAMSTRINGARBPROC glad_glGetProgramStringARB = NULL; +PFNGLISPROGRAMARBPROC glad_glIsProgramARB = NULL; +PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri = NULL; +PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv = NULL; +PFNGLPROGRAMPARAMETERIARBPROC glad_glProgramParameteriARB = NULL; +PFNGLFRAMEBUFFERTEXTUREARBPROC glad_glFramebufferTextureARB = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERARBPROC glad_glFramebufferTextureLayerARB = NULL; +PFNGLFRAMEBUFFERTEXTUREFACEARBPROC glad_glFramebufferTextureFaceARB = NULL; +PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage = NULL; +PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage = NULL; +PFNGLSPECIALIZESHADERARBPROC glad_glSpecializeShaderARB = NULL; +PFNGLUNIFORM1I64ARBPROC glad_glUniform1i64ARB = NULL; +PFNGLUNIFORM2I64ARBPROC glad_glUniform2i64ARB = NULL; +PFNGLUNIFORM3I64ARBPROC glad_glUniform3i64ARB = NULL; +PFNGLUNIFORM4I64ARBPROC glad_glUniform4i64ARB = NULL; +PFNGLUNIFORM1I64VARBPROC glad_glUniform1i64vARB = NULL; +PFNGLUNIFORM2I64VARBPROC glad_glUniform2i64vARB = NULL; +PFNGLUNIFORM3I64VARBPROC glad_glUniform3i64vARB = NULL; +PFNGLUNIFORM4I64VARBPROC glad_glUniform4i64vARB = NULL; +PFNGLUNIFORM1UI64ARBPROC glad_glUniform1ui64ARB = NULL; +PFNGLUNIFORM2UI64ARBPROC glad_glUniform2ui64ARB = NULL; +PFNGLUNIFORM3UI64ARBPROC glad_glUniform3ui64ARB = NULL; +PFNGLUNIFORM4UI64ARBPROC glad_glUniform4ui64ARB = NULL; +PFNGLUNIFORM1UI64VARBPROC glad_glUniform1ui64vARB = NULL; +PFNGLUNIFORM2UI64VARBPROC glad_glUniform2ui64vARB = NULL; +PFNGLUNIFORM3UI64VARBPROC glad_glUniform3ui64vARB = NULL; +PFNGLUNIFORM4UI64VARBPROC glad_glUniform4ui64vARB = NULL; +PFNGLGETUNIFORMI64VARBPROC glad_glGetUniformi64vARB = NULL; +PFNGLGETUNIFORMUI64VARBPROC glad_glGetUniformui64vARB = NULL; +PFNGLGETNUNIFORMI64VARBPROC glad_glGetnUniformi64vARB = NULL; +PFNGLGETNUNIFORMUI64VARBPROC glad_glGetnUniformui64vARB = NULL; +PFNGLPROGRAMUNIFORM1I64ARBPROC glad_glProgramUniform1i64ARB = NULL; +PFNGLPROGRAMUNIFORM2I64ARBPROC glad_glProgramUniform2i64ARB = NULL; +PFNGLPROGRAMUNIFORM3I64ARBPROC glad_glProgramUniform3i64ARB = NULL; +PFNGLPROGRAMUNIFORM4I64ARBPROC glad_glProgramUniform4i64ARB = NULL; +PFNGLPROGRAMUNIFORM1I64VARBPROC glad_glProgramUniform1i64vARB = NULL; +PFNGLPROGRAMUNIFORM2I64VARBPROC glad_glProgramUniform2i64vARB = NULL; +PFNGLPROGRAMUNIFORM3I64VARBPROC glad_glProgramUniform3i64vARB = NULL; +PFNGLPROGRAMUNIFORM4I64VARBPROC glad_glProgramUniform4i64vARB = NULL; +PFNGLPROGRAMUNIFORM1UI64ARBPROC glad_glProgramUniform1ui64ARB = NULL; +PFNGLPROGRAMUNIFORM2UI64ARBPROC glad_glProgramUniform2ui64ARB = NULL; +PFNGLPROGRAMUNIFORM3UI64ARBPROC glad_glProgramUniform3ui64ARB = NULL; +PFNGLPROGRAMUNIFORM4UI64ARBPROC glad_glProgramUniform4ui64ARB = NULL; +PFNGLPROGRAMUNIFORM1UI64VARBPROC glad_glProgramUniform1ui64vARB = NULL; +PFNGLPROGRAMUNIFORM2UI64VARBPROC glad_glProgramUniform2ui64vARB = NULL; +PFNGLPROGRAMUNIFORM3UI64VARBPROC glad_glProgramUniform3ui64vARB = NULL; +PFNGLPROGRAMUNIFORM4UI64VARBPROC glad_glProgramUniform4ui64vARB = NULL; +PFNGLCOLORTABLEPROC glad_glColorTable = NULL; +PFNGLCOLORTABLEPARAMETERFVPROC glad_glColorTableParameterfv = NULL; +PFNGLCOLORTABLEPARAMETERIVPROC glad_glColorTableParameteriv = NULL; +PFNGLCOPYCOLORTABLEPROC glad_glCopyColorTable = NULL; +PFNGLGETCOLORTABLEPROC glad_glGetColorTable = NULL; +PFNGLGETCOLORTABLEPARAMETERFVPROC glad_glGetColorTableParameterfv = NULL; +PFNGLGETCOLORTABLEPARAMETERIVPROC glad_glGetColorTableParameteriv = NULL; +PFNGLCOLORSUBTABLEPROC glad_glColorSubTable = NULL; +PFNGLCOPYCOLORSUBTABLEPROC glad_glCopyColorSubTable = NULL; +PFNGLCONVOLUTIONFILTER1DPROC glad_glConvolutionFilter1D = NULL; +PFNGLCONVOLUTIONFILTER2DPROC glad_glConvolutionFilter2D = NULL; +PFNGLCONVOLUTIONPARAMETERFPROC glad_glConvolutionParameterf = NULL; +PFNGLCONVOLUTIONPARAMETERFVPROC glad_glConvolutionParameterfv = NULL; +PFNGLCONVOLUTIONPARAMETERIPROC glad_glConvolutionParameteri = NULL; +PFNGLCONVOLUTIONPARAMETERIVPROC glad_glConvolutionParameteriv = NULL; +PFNGLCOPYCONVOLUTIONFILTER1DPROC glad_glCopyConvolutionFilter1D = NULL; +PFNGLCOPYCONVOLUTIONFILTER2DPROC glad_glCopyConvolutionFilter2D = NULL; +PFNGLGETCONVOLUTIONFILTERPROC glad_glGetConvolutionFilter = NULL; +PFNGLGETCONVOLUTIONPARAMETERFVPROC glad_glGetConvolutionParameterfv = NULL; +PFNGLGETCONVOLUTIONPARAMETERIVPROC glad_glGetConvolutionParameteriv = NULL; +PFNGLGETSEPARABLEFILTERPROC glad_glGetSeparableFilter = NULL; +PFNGLSEPARABLEFILTER2DPROC glad_glSeparableFilter2D = NULL; +PFNGLGETHISTOGRAMPROC glad_glGetHistogram = NULL; +PFNGLGETHISTOGRAMPARAMETERFVPROC glad_glGetHistogramParameterfv = NULL; +PFNGLGETHISTOGRAMPARAMETERIVPROC glad_glGetHistogramParameteriv = NULL; +PFNGLGETMINMAXPROC glad_glGetMinmax = NULL; +PFNGLGETMINMAXPARAMETERFVPROC glad_glGetMinmaxParameterfv = NULL; +PFNGLGETMINMAXPARAMETERIVPROC glad_glGetMinmaxParameteriv = NULL; +PFNGLHISTOGRAMPROC glad_glHistogram = NULL; +PFNGLMINMAXPROC glad_glMinmax = NULL; +PFNGLRESETHISTOGRAMPROC glad_glResetHistogram = NULL; +PFNGLRESETMINMAXPROC glad_glResetMinmax = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glad_glMultiDrawArraysIndirectCountARB = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glad_glMultiDrawElementsIndirectCountARB = NULL; +PFNGLVERTEXATTRIBDIVISORARBPROC glad_glVertexAttribDivisorARB = NULL; +PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ = NULL; +PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v = NULL; +PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage = NULL; +PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage = NULL; +PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData = NULL; +PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData = NULL; +PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer = NULL; +PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer = NULL; +PFNGLCURRENTPALETTEMATRIXARBPROC glad_glCurrentPaletteMatrixARB = NULL; +PFNGLMATRIXINDEXUBVARBPROC glad_glMatrixIndexubvARB = NULL; +PFNGLMATRIXINDEXUSVARBPROC glad_glMatrixIndexusvARB = NULL; +PFNGLMATRIXINDEXUIVARBPROC glad_glMatrixIndexuivARB = NULL; +PFNGLMATRIXINDEXPOINTERARBPROC glad_glMatrixIndexPointerARB = NULL; +PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase = NULL; +PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange = NULL; +PFNGLBINDTEXTURESPROC glad_glBindTextures = NULL; +PFNGLBINDSAMPLERSPROC glad_glBindSamplers = NULL; +PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures = NULL; +PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect = NULL; +PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB = NULL; +PFNGLACTIVETEXTUREARBPROC glad_glActiveTextureARB = NULL; +PFNGLCLIENTACTIVETEXTUREARBPROC glad_glClientActiveTextureARB = NULL; +PFNGLMULTITEXCOORD1DARBPROC glad_glMultiTexCoord1dARB = NULL; +PFNGLMULTITEXCOORD1DVARBPROC glad_glMultiTexCoord1dvARB = NULL; +PFNGLMULTITEXCOORD1FARBPROC glad_glMultiTexCoord1fARB = NULL; +PFNGLMULTITEXCOORD1FVARBPROC glad_glMultiTexCoord1fvARB = NULL; +PFNGLMULTITEXCOORD1IARBPROC glad_glMultiTexCoord1iARB = NULL; +PFNGLMULTITEXCOORD1IVARBPROC glad_glMultiTexCoord1ivARB = NULL; +PFNGLMULTITEXCOORD1SARBPROC glad_glMultiTexCoord1sARB = NULL; +PFNGLMULTITEXCOORD1SVARBPROC glad_glMultiTexCoord1svARB = NULL; +PFNGLMULTITEXCOORD2DARBPROC glad_glMultiTexCoord2dARB = NULL; +PFNGLMULTITEXCOORD2DVARBPROC glad_glMultiTexCoord2dvARB = NULL; +PFNGLMULTITEXCOORD2FARBPROC glad_glMultiTexCoord2fARB = NULL; +PFNGLMULTITEXCOORD2FVARBPROC glad_glMultiTexCoord2fvARB = NULL; +PFNGLMULTITEXCOORD2IARBPROC glad_glMultiTexCoord2iARB = NULL; +PFNGLMULTITEXCOORD2IVARBPROC glad_glMultiTexCoord2ivARB = NULL; +PFNGLMULTITEXCOORD2SARBPROC glad_glMultiTexCoord2sARB = NULL; +PFNGLMULTITEXCOORD2SVARBPROC glad_glMultiTexCoord2svARB = NULL; +PFNGLMULTITEXCOORD3DARBPROC glad_glMultiTexCoord3dARB = NULL; +PFNGLMULTITEXCOORD3DVARBPROC glad_glMultiTexCoord3dvARB = NULL; +PFNGLMULTITEXCOORD3FARBPROC glad_glMultiTexCoord3fARB = NULL; +PFNGLMULTITEXCOORD3FVARBPROC glad_glMultiTexCoord3fvARB = NULL; +PFNGLMULTITEXCOORD3IARBPROC glad_glMultiTexCoord3iARB = NULL; +PFNGLMULTITEXCOORD3IVARBPROC glad_glMultiTexCoord3ivARB = NULL; +PFNGLMULTITEXCOORD3SARBPROC glad_glMultiTexCoord3sARB = NULL; +PFNGLMULTITEXCOORD3SVARBPROC glad_glMultiTexCoord3svARB = NULL; +PFNGLMULTITEXCOORD4DARBPROC glad_glMultiTexCoord4dARB = NULL; +PFNGLMULTITEXCOORD4DVARBPROC glad_glMultiTexCoord4dvARB = NULL; +PFNGLMULTITEXCOORD4FARBPROC glad_glMultiTexCoord4fARB = NULL; +PFNGLMULTITEXCOORD4FVARBPROC glad_glMultiTexCoord4fvARB = NULL; +PFNGLMULTITEXCOORD4IARBPROC glad_glMultiTexCoord4iARB = NULL; +PFNGLMULTITEXCOORD4IVARBPROC glad_glMultiTexCoord4ivARB = NULL; +PFNGLMULTITEXCOORD4SARBPROC glad_glMultiTexCoord4sARB = NULL; +PFNGLMULTITEXCOORD4SVARBPROC glad_glMultiTexCoord4svARB = NULL; +PFNGLGENQUERIESARBPROC glad_glGenQueriesARB = NULL; +PFNGLDELETEQUERIESARBPROC glad_glDeleteQueriesARB = NULL; +PFNGLISQUERYARBPROC glad_glIsQueryARB = NULL; +PFNGLBEGINQUERYARBPROC glad_glBeginQueryARB = NULL; +PFNGLENDQUERYARBPROC glad_glEndQueryARB = NULL; +PFNGLGETQUERYIVARBPROC glad_glGetQueryivARB = NULL; +PFNGLGETQUERYOBJECTIVARBPROC glad_glGetQueryObjectivARB = NULL; +PFNGLGETQUERYOBJECTUIVARBPROC glad_glGetQueryObjectuivARB = NULL; +PFNGLMAXSHADERCOMPILERTHREADSARBPROC glad_glMaxShaderCompilerThreadsARB = NULL; +PFNGLPOINTPARAMETERFARBPROC glad_glPointParameterfARB = NULL; +PFNGLPOINTPARAMETERFVARBPROC glad_glPointParameterfvARB = NULL; +PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp = NULL; +PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv = NULL; +PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex = NULL; +PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName = NULL; +PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv = NULL; +PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation = NULL; +PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex = NULL; +PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB = NULL; +PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB = NULL; +PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB = NULL; +PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB = NULL; +PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB = NULL; +PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB = NULL; +PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB = NULL; +PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB = NULL; +PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB = NULL; +PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB = NULL; +PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB = NULL; +PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB = NULL; +PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB = NULL; +PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB = NULL; +PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB = NULL; +PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB = NULL; +PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB = NULL; +PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB = NULL; +PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB = NULL; +PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB = NULL; +PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glFramebufferSampleLocationsfvARB = NULL; +PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glNamedFramebufferSampleLocationsfvARB = NULL; +PFNGLEVALUATEDEPTHVALUESARBPROC glad_glEvaluateDepthValuesARB = NULL; +PFNGLMINSAMPLESHADINGARBPROC glad_glMinSampleShadingARB = NULL; +PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv = NULL; +PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture = NULL; +PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier = NULL; +PFNGLDELETEOBJECTARBPROC glad_glDeleteObjectARB = NULL; +PFNGLGETHANDLEARBPROC glad_glGetHandleARB = NULL; +PFNGLDETACHOBJECTARBPROC glad_glDetachObjectARB = NULL; +PFNGLCREATESHADEROBJECTARBPROC glad_glCreateShaderObjectARB = NULL; +PFNGLSHADERSOURCEARBPROC glad_glShaderSourceARB = NULL; +PFNGLCOMPILESHADERARBPROC glad_glCompileShaderARB = NULL; +PFNGLCREATEPROGRAMOBJECTARBPROC glad_glCreateProgramObjectARB = NULL; +PFNGLATTACHOBJECTARBPROC glad_glAttachObjectARB = NULL; +PFNGLLINKPROGRAMARBPROC glad_glLinkProgramARB = NULL; +PFNGLUSEPROGRAMOBJECTARBPROC glad_glUseProgramObjectARB = NULL; +PFNGLVALIDATEPROGRAMARBPROC glad_glValidateProgramARB = NULL; +PFNGLUNIFORM1FARBPROC glad_glUniform1fARB = NULL; +PFNGLUNIFORM2FARBPROC glad_glUniform2fARB = NULL; +PFNGLUNIFORM3FARBPROC glad_glUniform3fARB = NULL; +PFNGLUNIFORM4FARBPROC glad_glUniform4fARB = NULL; +PFNGLUNIFORM1IARBPROC glad_glUniform1iARB = NULL; +PFNGLUNIFORM2IARBPROC glad_glUniform2iARB = NULL; +PFNGLUNIFORM3IARBPROC glad_glUniform3iARB = NULL; +PFNGLUNIFORM4IARBPROC glad_glUniform4iARB = NULL; +PFNGLUNIFORM1FVARBPROC glad_glUniform1fvARB = NULL; +PFNGLUNIFORM2FVARBPROC glad_glUniform2fvARB = NULL; +PFNGLUNIFORM3FVARBPROC glad_glUniform3fvARB = NULL; +PFNGLUNIFORM4FVARBPROC glad_glUniform4fvARB = NULL; +PFNGLUNIFORM1IVARBPROC glad_glUniform1ivARB = NULL; +PFNGLUNIFORM2IVARBPROC glad_glUniform2ivARB = NULL; +PFNGLUNIFORM3IVARBPROC glad_glUniform3ivARB = NULL; +PFNGLUNIFORM4IVARBPROC glad_glUniform4ivARB = NULL; +PFNGLUNIFORMMATRIX2FVARBPROC glad_glUniformMatrix2fvARB = NULL; +PFNGLUNIFORMMATRIX3FVARBPROC glad_glUniformMatrix3fvARB = NULL; +PFNGLUNIFORMMATRIX4FVARBPROC glad_glUniformMatrix4fvARB = NULL; +PFNGLGETOBJECTPARAMETERFVARBPROC glad_glGetObjectParameterfvARB = NULL; +PFNGLGETOBJECTPARAMETERIVARBPROC glad_glGetObjectParameterivARB = NULL; +PFNGLGETINFOLOGARBPROC glad_glGetInfoLogARB = NULL; +PFNGLGETATTACHEDOBJECTSARBPROC glad_glGetAttachedObjectsARB = NULL; +PFNGLGETUNIFORMLOCATIONARBPROC glad_glGetUniformLocationARB = NULL; +PFNGLGETACTIVEUNIFORMARBPROC glad_glGetActiveUniformARB = NULL; +PFNGLGETUNIFORMFVARBPROC glad_glGetUniformfvARB = NULL; +PFNGLGETUNIFORMIVARBPROC glad_glGetUniformivARB = NULL; +PFNGLGETSHADERSOURCEARBPROC glad_glGetShaderSourceARB = NULL; +PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding = NULL; +PFNGLNAMEDSTRINGARBPROC glad_glNamedStringARB = NULL; +PFNGLDELETENAMEDSTRINGARBPROC glad_glDeleteNamedStringARB = NULL; +PFNGLCOMPILESHADERINCLUDEARBPROC glad_glCompileShaderIncludeARB = NULL; +PFNGLISNAMEDSTRINGARBPROC glad_glIsNamedStringARB = NULL; +PFNGLGETNAMEDSTRINGARBPROC glad_glGetNamedStringARB = NULL; +PFNGLGETNAMEDSTRINGIVARBPROC glad_glGetNamedStringivARB = NULL; +PFNGLBUFFERPAGECOMMITMENTARBPROC glad_glBufferPageCommitmentARB = NULL; +PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC glad_glNamedBufferPageCommitmentEXT = NULL; +PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC glad_glNamedBufferPageCommitmentARB = NULL; +PFNGLTEXPAGECOMMITMENTARBPROC glad_glTexPageCommitmentARB = NULL; +PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier = NULL; +PFNGLTEXBUFFERARBPROC glad_glTexBufferARB = NULL; +PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange = NULL; +PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glad_glCompressedTexImage3DARB = NULL; +PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glad_glCompressedTexImage2DARB = NULL; +PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glad_glCompressedTexImage1DARB = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glad_glCompressedTexSubImage3DARB = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glad_glCompressedTexSubImage2DARB = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glad_glCompressedTexSubImage1DARB = NULL; +PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glad_glGetCompressedTexImageARB = NULL; +PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D = NULL; +PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D = NULL; +PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D = NULL; +PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample = NULL; +PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample = NULL; +PFNGLTEXTUREVIEWPROC glad_glTextureView = NULL; +PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced = NULL; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced = NULL; +PFNGLLOADTRANSPOSEMATRIXFARBPROC glad_glLoadTransposeMatrixfARB = NULL; +PFNGLLOADTRANSPOSEMATRIXDARBPROC glad_glLoadTransposeMatrixdARB = NULL; +PFNGLMULTTRANSPOSEMATRIXFARBPROC glad_glMultTransposeMatrixfARB = NULL; +PFNGLMULTTRANSPOSEMATRIXDARBPROC glad_glMultTransposeMatrixdARB = NULL; +PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer = NULL; +PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat = NULL; +PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat = NULL; +PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat = NULL; +PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding = NULL; +PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor = NULL; +PFNGLWEIGHTBVARBPROC glad_glWeightbvARB = NULL; +PFNGLWEIGHTSVARBPROC glad_glWeightsvARB = NULL; +PFNGLWEIGHTIVARBPROC glad_glWeightivARB = NULL; +PFNGLWEIGHTFVARBPROC glad_glWeightfvARB = NULL; +PFNGLWEIGHTDVARBPROC glad_glWeightdvARB = NULL; +PFNGLWEIGHTUBVARBPROC glad_glWeightubvARB = NULL; +PFNGLWEIGHTUSVARBPROC glad_glWeightusvARB = NULL; +PFNGLWEIGHTUIVARBPROC glad_glWeightuivARB = NULL; +PFNGLWEIGHTPOINTERARBPROC glad_glWeightPointerARB = NULL; +PFNGLVERTEXBLENDARBPROC glad_glVertexBlendARB = NULL; +PFNGLBINDBUFFERARBPROC glad_glBindBufferARB = NULL; +PFNGLDELETEBUFFERSARBPROC glad_glDeleteBuffersARB = NULL; +PFNGLGENBUFFERSARBPROC glad_glGenBuffersARB = NULL; +PFNGLISBUFFERARBPROC glad_glIsBufferARB = NULL; +PFNGLBUFFERDATAARBPROC glad_glBufferDataARB = NULL; +PFNGLBUFFERSUBDATAARBPROC glad_glBufferSubDataARB = NULL; +PFNGLGETBUFFERSUBDATAARBPROC glad_glGetBufferSubDataARB = NULL; +PFNGLMAPBUFFERARBPROC glad_glMapBufferARB = NULL; +PFNGLUNMAPBUFFERARBPROC glad_glUnmapBufferARB = NULL; +PFNGLGETBUFFERPARAMETERIVARBPROC glad_glGetBufferParameterivARB = NULL; +PFNGLGETBUFFERPOINTERVARBPROC glad_glGetBufferPointervARB = NULL; +PFNGLVERTEXATTRIB1DARBPROC glad_glVertexAttrib1dARB = NULL; +PFNGLVERTEXATTRIB1DVARBPROC glad_glVertexAttrib1dvARB = NULL; +PFNGLVERTEXATTRIB1FARBPROC glad_glVertexAttrib1fARB = NULL; +PFNGLVERTEXATTRIB1FVARBPROC glad_glVertexAttrib1fvARB = NULL; +PFNGLVERTEXATTRIB1SARBPROC glad_glVertexAttrib1sARB = NULL; +PFNGLVERTEXATTRIB1SVARBPROC glad_glVertexAttrib1svARB = NULL; +PFNGLVERTEXATTRIB2DARBPROC glad_glVertexAttrib2dARB = NULL; +PFNGLVERTEXATTRIB2DVARBPROC glad_glVertexAttrib2dvARB = NULL; +PFNGLVERTEXATTRIB2FARBPROC glad_glVertexAttrib2fARB = NULL; +PFNGLVERTEXATTRIB2FVARBPROC glad_glVertexAttrib2fvARB = NULL; +PFNGLVERTEXATTRIB2SARBPROC glad_glVertexAttrib2sARB = NULL; +PFNGLVERTEXATTRIB2SVARBPROC glad_glVertexAttrib2svARB = NULL; +PFNGLVERTEXATTRIB3DARBPROC glad_glVertexAttrib3dARB = NULL; +PFNGLVERTEXATTRIB3DVARBPROC glad_glVertexAttrib3dvARB = NULL; +PFNGLVERTEXATTRIB3FARBPROC glad_glVertexAttrib3fARB = NULL; +PFNGLVERTEXATTRIB3FVARBPROC glad_glVertexAttrib3fvARB = NULL; +PFNGLVERTEXATTRIB3SARBPROC glad_glVertexAttrib3sARB = NULL; +PFNGLVERTEXATTRIB3SVARBPROC glad_glVertexAttrib3svARB = NULL; +PFNGLVERTEXATTRIB4NBVARBPROC glad_glVertexAttrib4NbvARB = NULL; +PFNGLVERTEXATTRIB4NIVARBPROC glad_glVertexAttrib4NivARB = NULL; +PFNGLVERTEXATTRIB4NSVARBPROC glad_glVertexAttrib4NsvARB = NULL; +PFNGLVERTEXATTRIB4NUBARBPROC glad_glVertexAttrib4NubARB = NULL; +PFNGLVERTEXATTRIB4NUBVARBPROC glad_glVertexAttrib4NubvARB = NULL; +PFNGLVERTEXATTRIB4NUIVARBPROC glad_glVertexAttrib4NuivARB = NULL; +PFNGLVERTEXATTRIB4NUSVARBPROC glad_glVertexAttrib4NusvARB = NULL; +PFNGLVERTEXATTRIB4BVARBPROC glad_glVertexAttrib4bvARB = NULL; +PFNGLVERTEXATTRIB4DARBPROC glad_glVertexAttrib4dARB = NULL; +PFNGLVERTEXATTRIB4DVARBPROC glad_glVertexAttrib4dvARB = NULL; +PFNGLVERTEXATTRIB4FARBPROC glad_glVertexAttrib4fARB = NULL; +PFNGLVERTEXATTRIB4FVARBPROC glad_glVertexAttrib4fvARB = NULL; +PFNGLVERTEXATTRIB4IVARBPROC glad_glVertexAttrib4ivARB = NULL; +PFNGLVERTEXATTRIB4SARBPROC glad_glVertexAttrib4sARB = NULL; +PFNGLVERTEXATTRIB4SVARBPROC glad_glVertexAttrib4svARB = NULL; +PFNGLVERTEXATTRIB4UBVARBPROC glad_glVertexAttrib4ubvARB = NULL; +PFNGLVERTEXATTRIB4UIVARBPROC glad_glVertexAttrib4uivARB = NULL; +PFNGLVERTEXATTRIB4USVARBPROC glad_glVertexAttrib4usvARB = NULL; +PFNGLVERTEXATTRIBPOINTERARBPROC glad_glVertexAttribPointerARB = NULL; +PFNGLENABLEVERTEXATTRIBARRAYARBPROC glad_glEnableVertexAttribArrayARB = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glad_glDisableVertexAttribArrayARB = NULL; +PFNGLGETVERTEXATTRIBDVARBPROC glad_glGetVertexAttribdvARB = NULL; +PFNGLGETVERTEXATTRIBFVARBPROC glad_glGetVertexAttribfvARB = NULL; +PFNGLGETVERTEXATTRIBIVARBPROC glad_glGetVertexAttribivARB = NULL; +PFNGLGETVERTEXATTRIBPOINTERVARBPROC glad_glGetVertexAttribPointervARB = NULL; +PFNGLBINDATTRIBLOCATIONARBPROC glad_glBindAttribLocationARB = NULL; +PFNGLGETACTIVEATTRIBARBPROC glad_glGetActiveAttribARB = NULL; +PFNGLGETATTRIBLOCATIONARBPROC glad_glGetAttribLocationARB = NULL; +PFNGLDEPTHRANGEARRAYDVNVPROC glad_glDepthRangeArraydvNV = NULL; +PFNGLDEPTHRANGEINDEXEDDNVPROC glad_glDepthRangeIndexeddNV = NULL; +PFNGLWINDOWPOS2DARBPROC glad_glWindowPos2dARB = NULL; +PFNGLWINDOWPOS2DVARBPROC glad_glWindowPos2dvARB = NULL; +PFNGLWINDOWPOS2FARBPROC glad_glWindowPos2fARB = NULL; +PFNGLWINDOWPOS2FVARBPROC glad_glWindowPos2fvARB = NULL; +PFNGLWINDOWPOS2IARBPROC glad_glWindowPos2iARB = NULL; +PFNGLWINDOWPOS2IVARBPROC glad_glWindowPos2ivARB = NULL; +PFNGLWINDOWPOS2SARBPROC glad_glWindowPos2sARB = NULL; +PFNGLWINDOWPOS2SVARBPROC glad_glWindowPos2svARB = NULL; +PFNGLWINDOWPOS3DARBPROC glad_glWindowPos3dARB = NULL; +PFNGLWINDOWPOS3DVARBPROC glad_glWindowPos3dvARB = NULL; +PFNGLWINDOWPOS3FARBPROC glad_glWindowPos3fARB = NULL; +PFNGLWINDOWPOS3FVARBPROC glad_glWindowPos3fvARB = NULL; +PFNGLWINDOWPOS3IARBPROC glad_glWindowPos3iARB = NULL; +PFNGLWINDOWPOS3IVARBPROC glad_glWindowPos3ivARB = NULL; +PFNGLWINDOWPOS3SARBPROC glad_glWindowPos3sARB = NULL; +PFNGLWINDOWPOS3SVARBPROC glad_glWindowPos3svARB = NULL; +PFNGLDRAWBUFFERSATIPROC glad_glDrawBuffersATI = NULL; +PFNGLELEMENTPOINTERATIPROC glad_glElementPointerATI = NULL; +PFNGLDRAWELEMENTARRAYATIPROC glad_glDrawElementArrayATI = NULL; +PFNGLDRAWRANGEELEMENTARRAYATIPROC glad_glDrawRangeElementArrayATI = NULL; +PFNGLTEXBUMPPARAMETERIVATIPROC glad_glTexBumpParameterivATI = NULL; +PFNGLTEXBUMPPARAMETERFVATIPROC glad_glTexBumpParameterfvATI = NULL; +PFNGLGETTEXBUMPPARAMETERIVATIPROC glad_glGetTexBumpParameterivATI = NULL; +PFNGLGETTEXBUMPPARAMETERFVATIPROC glad_glGetTexBumpParameterfvATI = NULL; +PFNGLGENFRAGMENTSHADERSATIPROC glad_glGenFragmentShadersATI = NULL; +PFNGLBINDFRAGMENTSHADERATIPROC glad_glBindFragmentShaderATI = NULL; +PFNGLDELETEFRAGMENTSHADERATIPROC glad_glDeleteFragmentShaderATI = NULL; +PFNGLBEGINFRAGMENTSHADERATIPROC glad_glBeginFragmentShaderATI = NULL; +PFNGLENDFRAGMENTSHADERATIPROC glad_glEndFragmentShaderATI = NULL; +PFNGLPASSTEXCOORDATIPROC glad_glPassTexCoordATI = NULL; +PFNGLSAMPLEMAPATIPROC glad_glSampleMapATI = NULL; +PFNGLCOLORFRAGMENTOP1ATIPROC glad_glColorFragmentOp1ATI = NULL; +PFNGLCOLORFRAGMENTOP2ATIPROC glad_glColorFragmentOp2ATI = NULL; +PFNGLCOLORFRAGMENTOP3ATIPROC glad_glColorFragmentOp3ATI = NULL; +PFNGLALPHAFRAGMENTOP1ATIPROC glad_glAlphaFragmentOp1ATI = NULL; +PFNGLALPHAFRAGMENTOP2ATIPROC glad_glAlphaFragmentOp2ATI = NULL; +PFNGLALPHAFRAGMENTOP3ATIPROC glad_glAlphaFragmentOp3ATI = NULL; +PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glad_glSetFragmentShaderConstantATI = NULL; +PFNGLMAPOBJECTBUFFERATIPROC glad_glMapObjectBufferATI = NULL; +PFNGLUNMAPOBJECTBUFFERATIPROC glad_glUnmapObjectBufferATI = NULL; +PFNGLPNTRIANGLESIATIPROC glad_glPNTrianglesiATI = NULL; +PFNGLPNTRIANGLESFATIPROC glad_glPNTrianglesfATI = NULL; +PFNGLSTENCILOPSEPARATEATIPROC glad_glStencilOpSeparateATI = NULL; +PFNGLSTENCILFUNCSEPARATEATIPROC glad_glStencilFuncSeparateATI = NULL; +PFNGLNEWOBJECTBUFFERATIPROC glad_glNewObjectBufferATI = NULL; +PFNGLISOBJECTBUFFERATIPROC glad_glIsObjectBufferATI = NULL; +PFNGLUPDATEOBJECTBUFFERATIPROC glad_glUpdateObjectBufferATI = NULL; +PFNGLGETOBJECTBUFFERFVATIPROC glad_glGetObjectBufferfvATI = NULL; +PFNGLGETOBJECTBUFFERIVATIPROC glad_glGetObjectBufferivATI = NULL; +PFNGLFREEOBJECTBUFFERATIPROC glad_glFreeObjectBufferATI = NULL; +PFNGLARRAYOBJECTATIPROC glad_glArrayObjectATI = NULL; +PFNGLGETARRAYOBJECTFVATIPROC glad_glGetArrayObjectfvATI = NULL; +PFNGLGETARRAYOBJECTIVATIPROC glad_glGetArrayObjectivATI = NULL; +PFNGLVARIANTARRAYOBJECTATIPROC glad_glVariantArrayObjectATI = NULL; +PFNGLGETVARIANTARRAYOBJECTFVATIPROC glad_glGetVariantArrayObjectfvATI = NULL; +PFNGLGETVARIANTARRAYOBJECTIVATIPROC glad_glGetVariantArrayObjectivATI = NULL; +PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glad_glVertexAttribArrayObjectATI = NULL; +PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC glad_glGetVertexAttribArrayObjectfvATI = NULL; +PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC glad_glGetVertexAttribArrayObjectivATI = NULL; +PFNGLVERTEXSTREAM1SATIPROC glad_glVertexStream1sATI = NULL; +PFNGLVERTEXSTREAM1SVATIPROC glad_glVertexStream1svATI = NULL; +PFNGLVERTEXSTREAM1IATIPROC glad_glVertexStream1iATI = NULL; +PFNGLVERTEXSTREAM1IVATIPROC glad_glVertexStream1ivATI = NULL; +PFNGLVERTEXSTREAM1FATIPROC glad_glVertexStream1fATI = NULL; +PFNGLVERTEXSTREAM1FVATIPROC glad_glVertexStream1fvATI = NULL; +PFNGLVERTEXSTREAM1DATIPROC glad_glVertexStream1dATI = NULL; +PFNGLVERTEXSTREAM1DVATIPROC glad_glVertexStream1dvATI = NULL; +PFNGLVERTEXSTREAM2SATIPROC glad_glVertexStream2sATI = NULL; +PFNGLVERTEXSTREAM2SVATIPROC glad_glVertexStream2svATI = NULL; +PFNGLVERTEXSTREAM2IATIPROC glad_glVertexStream2iATI = NULL; +PFNGLVERTEXSTREAM2IVATIPROC glad_glVertexStream2ivATI = NULL; +PFNGLVERTEXSTREAM2FATIPROC glad_glVertexStream2fATI = NULL; +PFNGLVERTEXSTREAM2FVATIPROC glad_glVertexStream2fvATI = NULL; +PFNGLVERTEXSTREAM2DATIPROC glad_glVertexStream2dATI = NULL; +PFNGLVERTEXSTREAM2DVATIPROC glad_glVertexStream2dvATI = NULL; +PFNGLVERTEXSTREAM3SATIPROC glad_glVertexStream3sATI = NULL; +PFNGLVERTEXSTREAM3SVATIPROC glad_glVertexStream3svATI = NULL; +PFNGLVERTEXSTREAM3IATIPROC glad_glVertexStream3iATI = NULL; +PFNGLVERTEXSTREAM3IVATIPROC glad_glVertexStream3ivATI = NULL; +PFNGLVERTEXSTREAM3FATIPROC glad_glVertexStream3fATI = NULL; +PFNGLVERTEXSTREAM3FVATIPROC glad_glVertexStream3fvATI = NULL; +PFNGLVERTEXSTREAM3DATIPROC glad_glVertexStream3dATI = NULL; +PFNGLVERTEXSTREAM3DVATIPROC glad_glVertexStream3dvATI = NULL; +PFNGLVERTEXSTREAM4SATIPROC glad_glVertexStream4sATI = NULL; +PFNGLVERTEXSTREAM4SVATIPROC glad_glVertexStream4svATI = NULL; +PFNGLVERTEXSTREAM4IATIPROC glad_glVertexStream4iATI = NULL; +PFNGLVERTEXSTREAM4IVATIPROC glad_glVertexStream4ivATI = NULL; +PFNGLVERTEXSTREAM4FATIPROC glad_glVertexStream4fATI = NULL; +PFNGLVERTEXSTREAM4FVATIPROC glad_glVertexStream4fvATI = NULL; +PFNGLVERTEXSTREAM4DATIPROC glad_glVertexStream4dATI = NULL; +PFNGLVERTEXSTREAM4DVATIPROC glad_glVertexStream4dvATI = NULL; +PFNGLNORMALSTREAM3BATIPROC glad_glNormalStream3bATI = NULL; +PFNGLNORMALSTREAM3BVATIPROC glad_glNormalStream3bvATI = NULL; +PFNGLNORMALSTREAM3SATIPROC glad_glNormalStream3sATI = NULL; +PFNGLNORMALSTREAM3SVATIPROC glad_glNormalStream3svATI = NULL; +PFNGLNORMALSTREAM3IATIPROC glad_glNormalStream3iATI = NULL; +PFNGLNORMALSTREAM3IVATIPROC glad_glNormalStream3ivATI = NULL; +PFNGLNORMALSTREAM3FATIPROC glad_glNormalStream3fATI = NULL; +PFNGLNORMALSTREAM3FVATIPROC glad_glNormalStream3fvATI = NULL; +PFNGLNORMALSTREAM3DATIPROC glad_glNormalStream3dATI = NULL; +PFNGLNORMALSTREAM3DVATIPROC glad_glNormalStream3dvATI = NULL; +PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC glad_glClientActiveVertexStreamATI = NULL; +PFNGLVERTEXBLENDENVIATIPROC glad_glVertexBlendEnviATI = NULL; +PFNGLVERTEXBLENDENVFATIPROC glad_glVertexBlendEnvfATI = NULL; +PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC glad_glEGLImageTargetTexStorageEXT = NULL; +PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC glad_glEGLImageTargetTextureStorageEXT = NULL; +PFNGLUNIFORMBUFFEREXTPROC glad_glUniformBufferEXT = NULL; +PFNGLGETUNIFORMBUFFERSIZEEXTPROC glad_glGetUniformBufferSizeEXT = NULL; +PFNGLGETUNIFORMOFFSETEXTPROC glad_glGetUniformOffsetEXT = NULL; +PFNGLBLENDCOLOREXTPROC glad_glBlendColorEXT = NULL; +PFNGLBLENDEQUATIONSEPARATEEXTPROC glad_glBlendEquationSeparateEXT = NULL; +PFNGLBLENDFUNCSEPARATEEXTPROC glad_glBlendFuncSeparateEXT = NULL; +PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT = NULL; +PFNGLCOLORSUBTABLEEXTPROC glad_glColorSubTableEXT = NULL; +PFNGLCOPYCOLORSUBTABLEEXTPROC glad_glCopyColorSubTableEXT = NULL; +PFNGLLOCKARRAYSEXTPROC glad_glLockArraysEXT = NULL; +PFNGLUNLOCKARRAYSEXTPROC glad_glUnlockArraysEXT = NULL; +PFNGLCONVOLUTIONFILTER1DEXTPROC glad_glConvolutionFilter1DEXT = NULL; +PFNGLCONVOLUTIONFILTER2DEXTPROC glad_glConvolutionFilter2DEXT = NULL; +PFNGLCONVOLUTIONPARAMETERFEXTPROC glad_glConvolutionParameterfEXT = NULL; +PFNGLCONVOLUTIONPARAMETERFVEXTPROC glad_glConvolutionParameterfvEXT = NULL; +PFNGLCONVOLUTIONPARAMETERIEXTPROC glad_glConvolutionParameteriEXT = NULL; +PFNGLCONVOLUTIONPARAMETERIVEXTPROC glad_glConvolutionParameterivEXT = NULL; +PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC glad_glCopyConvolutionFilter1DEXT = NULL; +PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC glad_glCopyConvolutionFilter2DEXT = NULL; +PFNGLGETCONVOLUTIONFILTEREXTPROC glad_glGetConvolutionFilterEXT = NULL; +PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC glad_glGetConvolutionParameterfvEXT = NULL; +PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glad_glGetConvolutionParameterivEXT = NULL; +PFNGLGETSEPARABLEFILTEREXTPROC glad_glGetSeparableFilterEXT = NULL; +PFNGLSEPARABLEFILTER2DEXTPROC glad_glSeparableFilter2DEXT = NULL; +PFNGLTANGENT3BEXTPROC glad_glTangent3bEXT = NULL; +PFNGLTANGENT3BVEXTPROC glad_glTangent3bvEXT = NULL; +PFNGLTANGENT3DEXTPROC glad_glTangent3dEXT = NULL; +PFNGLTANGENT3DVEXTPROC glad_glTangent3dvEXT = NULL; +PFNGLTANGENT3FEXTPROC glad_glTangent3fEXT = NULL; +PFNGLTANGENT3FVEXTPROC glad_glTangent3fvEXT = NULL; +PFNGLTANGENT3IEXTPROC glad_glTangent3iEXT = NULL; +PFNGLTANGENT3IVEXTPROC glad_glTangent3ivEXT = NULL; +PFNGLTANGENT3SEXTPROC glad_glTangent3sEXT = NULL; +PFNGLTANGENT3SVEXTPROC glad_glTangent3svEXT = NULL; +PFNGLBINORMAL3BEXTPROC glad_glBinormal3bEXT = NULL; +PFNGLBINORMAL3BVEXTPROC glad_glBinormal3bvEXT = NULL; +PFNGLBINORMAL3DEXTPROC glad_glBinormal3dEXT = NULL; +PFNGLBINORMAL3DVEXTPROC glad_glBinormal3dvEXT = NULL; +PFNGLBINORMAL3FEXTPROC glad_glBinormal3fEXT = NULL; +PFNGLBINORMAL3FVEXTPROC glad_glBinormal3fvEXT = NULL; +PFNGLBINORMAL3IEXTPROC glad_glBinormal3iEXT = NULL; +PFNGLBINORMAL3IVEXTPROC glad_glBinormal3ivEXT = NULL; +PFNGLBINORMAL3SEXTPROC glad_glBinormal3sEXT = NULL; +PFNGLBINORMAL3SVEXTPROC glad_glBinormal3svEXT = NULL; +PFNGLTANGENTPOINTEREXTPROC glad_glTangentPointerEXT = NULL; +PFNGLBINORMALPOINTEREXTPROC glad_glBinormalPointerEXT = NULL; +PFNGLCOPYTEXIMAGE1DEXTPROC glad_glCopyTexImage1DEXT = NULL; +PFNGLCOPYTEXIMAGE2DEXTPROC glad_glCopyTexImage2DEXT = NULL; +PFNGLCOPYTEXSUBIMAGE1DEXTPROC glad_glCopyTexSubImage1DEXT = NULL; +PFNGLCOPYTEXSUBIMAGE2DEXTPROC glad_glCopyTexSubImage2DEXT = NULL; +PFNGLCOPYTEXSUBIMAGE3DEXTPROC glad_glCopyTexSubImage3DEXT = NULL; +PFNGLCULLPARAMETERDVEXTPROC glad_glCullParameterdvEXT = NULL; +PFNGLCULLPARAMETERFVEXTPROC glad_glCullParameterfvEXT = NULL; +PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT = NULL; +PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT = NULL; +PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT = NULL; +PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT = NULL; +PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT = NULL; +PFNGLDEPTHBOUNDSEXTPROC glad_glDepthBoundsEXT = NULL; +PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT = NULL; +PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT = NULL; +PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT = NULL; +PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT = NULL; +PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT = NULL; +PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT = NULL; +PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT = NULL; +PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT = NULL; +PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT = NULL; +PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT = NULL; +PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT = NULL; +PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT = NULL; +PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT = NULL; +PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT = NULL; +PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT = NULL; +PFNGLCLIENTATTRIBDEFAULTEXTPROC glad_glClientAttribDefaultEXT = NULL; +PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC glad_glPushClientAttribDefaultEXT = NULL; +PFNGLTEXTUREPARAMETERFEXTPROC glad_glTextureParameterfEXT = NULL; +PFNGLTEXTUREPARAMETERFVEXTPROC glad_glTextureParameterfvEXT = NULL; +PFNGLTEXTUREPARAMETERIEXTPROC glad_glTextureParameteriEXT = NULL; +PFNGLTEXTUREPARAMETERIVEXTPROC glad_glTextureParameterivEXT = NULL; +PFNGLTEXTUREIMAGE1DEXTPROC glad_glTextureImage1DEXT = NULL; +PFNGLTEXTUREIMAGE2DEXTPROC glad_glTextureImage2DEXT = NULL; +PFNGLTEXTURESUBIMAGE1DEXTPROC glad_glTextureSubImage1DEXT = NULL; +PFNGLTEXTURESUBIMAGE2DEXTPROC glad_glTextureSubImage2DEXT = NULL; +PFNGLCOPYTEXTUREIMAGE1DEXTPROC glad_glCopyTextureImage1DEXT = NULL; +PFNGLCOPYTEXTUREIMAGE2DEXTPROC glad_glCopyTextureImage2DEXT = NULL; +PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glad_glCopyTextureSubImage1DEXT = NULL; +PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glad_glCopyTextureSubImage2DEXT = NULL; +PFNGLGETTEXTUREIMAGEEXTPROC glad_glGetTextureImageEXT = NULL; +PFNGLGETTEXTUREPARAMETERFVEXTPROC glad_glGetTextureParameterfvEXT = NULL; +PFNGLGETTEXTUREPARAMETERIVEXTPROC glad_glGetTextureParameterivEXT = NULL; +PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glad_glGetTextureLevelParameterfvEXT = NULL; +PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glad_glGetTextureLevelParameterivEXT = NULL; +PFNGLTEXTUREIMAGE3DEXTPROC glad_glTextureImage3DEXT = NULL; +PFNGLTEXTURESUBIMAGE3DEXTPROC glad_glTextureSubImage3DEXT = NULL; +PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glad_glCopyTextureSubImage3DEXT = NULL; +PFNGLBINDMULTITEXTUREEXTPROC glad_glBindMultiTextureEXT = NULL; +PFNGLMULTITEXCOORDPOINTEREXTPROC glad_glMultiTexCoordPointerEXT = NULL; +PFNGLMULTITEXENVFEXTPROC glad_glMultiTexEnvfEXT = NULL; +PFNGLMULTITEXENVFVEXTPROC glad_glMultiTexEnvfvEXT = NULL; +PFNGLMULTITEXENVIEXTPROC glad_glMultiTexEnviEXT = NULL; +PFNGLMULTITEXENVIVEXTPROC glad_glMultiTexEnvivEXT = NULL; +PFNGLMULTITEXGENDEXTPROC glad_glMultiTexGendEXT = NULL; +PFNGLMULTITEXGENDVEXTPROC glad_glMultiTexGendvEXT = NULL; +PFNGLMULTITEXGENFEXTPROC glad_glMultiTexGenfEXT = NULL; +PFNGLMULTITEXGENFVEXTPROC glad_glMultiTexGenfvEXT = NULL; +PFNGLMULTITEXGENIEXTPROC glad_glMultiTexGeniEXT = NULL; +PFNGLMULTITEXGENIVEXTPROC glad_glMultiTexGenivEXT = NULL; +PFNGLGETMULTITEXENVFVEXTPROC glad_glGetMultiTexEnvfvEXT = NULL; +PFNGLGETMULTITEXENVIVEXTPROC glad_glGetMultiTexEnvivEXT = NULL; +PFNGLGETMULTITEXGENDVEXTPROC glad_glGetMultiTexGendvEXT = NULL; +PFNGLGETMULTITEXGENFVEXTPROC glad_glGetMultiTexGenfvEXT = NULL; +PFNGLGETMULTITEXGENIVEXTPROC glad_glGetMultiTexGenivEXT = NULL; +PFNGLMULTITEXPARAMETERIEXTPROC glad_glMultiTexParameteriEXT = NULL; +PFNGLMULTITEXPARAMETERIVEXTPROC glad_glMultiTexParameterivEXT = NULL; +PFNGLMULTITEXPARAMETERFEXTPROC glad_glMultiTexParameterfEXT = NULL; +PFNGLMULTITEXPARAMETERFVEXTPROC glad_glMultiTexParameterfvEXT = NULL; +PFNGLMULTITEXIMAGE1DEXTPROC glad_glMultiTexImage1DEXT = NULL; +PFNGLMULTITEXIMAGE2DEXTPROC glad_glMultiTexImage2DEXT = NULL; +PFNGLMULTITEXSUBIMAGE1DEXTPROC glad_glMultiTexSubImage1DEXT = NULL; +PFNGLMULTITEXSUBIMAGE2DEXTPROC glad_glMultiTexSubImage2DEXT = NULL; +PFNGLCOPYMULTITEXIMAGE1DEXTPROC glad_glCopyMultiTexImage1DEXT = NULL; +PFNGLCOPYMULTITEXIMAGE2DEXTPROC glad_glCopyMultiTexImage2DEXT = NULL; +PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glad_glCopyMultiTexSubImage1DEXT = NULL; +PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glad_glCopyMultiTexSubImage2DEXT = NULL; +PFNGLGETMULTITEXIMAGEEXTPROC glad_glGetMultiTexImageEXT = NULL; +PFNGLGETMULTITEXPARAMETERFVEXTPROC glad_glGetMultiTexParameterfvEXT = NULL; +PFNGLGETMULTITEXPARAMETERIVEXTPROC glad_glGetMultiTexParameterivEXT = NULL; +PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glad_glGetMultiTexLevelParameterfvEXT = NULL; +PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glad_glGetMultiTexLevelParameterivEXT = NULL; +PFNGLMULTITEXIMAGE3DEXTPROC glad_glMultiTexImage3DEXT = NULL; +PFNGLMULTITEXSUBIMAGE3DEXTPROC glad_glMultiTexSubImage3DEXT = NULL; +PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glad_glCopyMultiTexSubImage3DEXT = NULL; +PFNGLENABLECLIENTSTATEINDEXEDEXTPROC glad_glEnableClientStateIndexedEXT = NULL; +PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC glad_glDisableClientStateIndexedEXT = NULL; +PFNGLGETFLOATINDEXEDVEXTPROC glad_glGetFloatIndexedvEXT = NULL; +PFNGLGETDOUBLEINDEXEDVEXTPROC glad_glGetDoubleIndexedvEXT = NULL; +PFNGLGETPOINTERINDEXEDVEXTPROC glad_glGetPointerIndexedvEXT = NULL; +PFNGLENABLEINDEXEDEXTPROC glad_glEnableIndexedEXT = NULL; +PFNGLDISABLEINDEXEDEXTPROC glad_glDisableIndexedEXT = NULL; +PFNGLISENABLEDINDEXEDEXTPROC glad_glIsEnabledIndexedEXT = NULL; +PFNGLGETINTEGERINDEXEDVEXTPROC glad_glGetIntegerIndexedvEXT = NULL; +PFNGLGETBOOLEANINDEXEDVEXTPROC glad_glGetBooleanIndexedvEXT = NULL; +PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glad_glCompressedTextureImage3DEXT = NULL; +PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glad_glCompressedTextureImage2DEXT = NULL; +PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glad_glCompressedTextureImage1DEXT = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glad_glCompressedTextureSubImage3DEXT = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glad_glCompressedTextureSubImage2DEXT = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glad_glCompressedTextureSubImage1DEXT = NULL; +PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glad_glGetCompressedTextureImageEXT = NULL; +PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glad_glCompressedMultiTexImage3DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glad_glCompressedMultiTexImage2DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glad_glCompressedMultiTexImage1DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glad_glCompressedMultiTexSubImage3DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glad_glCompressedMultiTexSubImage2DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glad_glCompressedMultiTexSubImage1DEXT = NULL; +PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glad_glGetCompressedMultiTexImageEXT = NULL; +PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT = NULL; +PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT = NULL; +PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT = NULL; +PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT = NULL; +PFNGLNAMEDBUFFERDATAEXTPROC glad_glNamedBufferDataEXT = NULL; +PFNGLNAMEDBUFFERSUBDATAEXTPROC glad_glNamedBufferSubDataEXT = NULL; +PFNGLMAPNAMEDBUFFEREXTPROC glad_glMapNamedBufferEXT = NULL; +PFNGLUNMAPNAMEDBUFFEREXTPROC glad_glUnmapNamedBufferEXT = NULL; +PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glad_glGetNamedBufferParameterivEXT = NULL; +PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glad_glGetNamedBufferPointervEXT = NULL; +PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glad_glGetNamedBufferSubDataEXT = NULL; +PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT = NULL; +PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT = NULL; +PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT = NULL; +PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT = NULL; +PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT = NULL; +PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT = NULL; +PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT = NULL; +PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT = NULL; +PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT = NULL; +PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT = NULL; +PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT = NULL; +PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT = NULL; +PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT = NULL; +PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT = NULL; +PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT = NULL; +PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT = NULL; +PFNGLTEXTUREBUFFEREXTPROC glad_glTextureBufferEXT = NULL; +PFNGLMULTITEXBUFFEREXTPROC glad_glMultiTexBufferEXT = NULL; +PFNGLTEXTUREPARAMETERIIVEXTPROC glad_glTextureParameterIivEXT = NULL; +PFNGLTEXTUREPARAMETERIUIVEXTPROC glad_glTextureParameterIuivEXT = NULL; +PFNGLGETTEXTUREPARAMETERIIVEXTPROC glad_glGetTextureParameterIivEXT = NULL; +PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glad_glGetTextureParameterIuivEXT = NULL; +PFNGLMULTITEXPARAMETERIIVEXTPROC glad_glMultiTexParameterIivEXT = NULL; +PFNGLMULTITEXPARAMETERIUIVEXTPROC glad_glMultiTexParameterIuivEXT = NULL; +PFNGLGETMULTITEXPARAMETERIIVEXTPROC glad_glGetMultiTexParameterIivEXT = NULL; +PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glad_glGetMultiTexParameterIuivEXT = NULL; +PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT = NULL; +PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT = NULL; +PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT = NULL; +PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT = NULL; +PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT = NULL; +PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT = NULL; +PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT = NULL; +PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glNamedProgramLocalParameters4fvEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC glad_glNamedProgramLocalParameterI4iEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC glad_glNamedProgramLocalParameterI4ivEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC glad_glNamedProgramLocalParametersI4ivEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC glad_glNamedProgramLocalParameterI4uiEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC glad_glNamedProgramLocalParameterI4uivEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC glad_glNamedProgramLocalParametersI4uivEXT = NULL; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC glad_glGetNamedProgramLocalParameterIivEXT = NULL; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC glad_glGetNamedProgramLocalParameterIuivEXT = NULL; +PFNGLENABLECLIENTSTATEIEXTPROC glad_glEnableClientStateiEXT = NULL; +PFNGLDISABLECLIENTSTATEIEXTPROC glad_glDisableClientStateiEXT = NULL; +PFNGLGETFLOATI_VEXTPROC glad_glGetFloati_vEXT = NULL; +PFNGLGETDOUBLEI_VEXTPROC glad_glGetDoublei_vEXT = NULL; +PFNGLGETPOINTERI_VEXTPROC glad_glGetPointeri_vEXT = NULL; +PFNGLNAMEDPROGRAMSTRINGEXTPROC glad_glNamedProgramStringEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC glad_glNamedProgramLocalParameter4dEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC glad_glNamedProgramLocalParameter4dvEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC glad_glNamedProgramLocalParameter4fEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC glad_glNamedProgramLocalParameter4fvEXT = NULL; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC glad_glGetNamedProgramLocalParameterdvEXT = NULL; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC glad_glGetNamedProgramLocalParameterfvEXT = NULL; +PFNGLGETNAMEDPROGRAMIVEXTPROC glad_glGetNamedProgramivEXT = NULL; +PFNGLGETNAMEDPROGRAMSTRINGEXTPROC glad_glGetNamedProgramStringEXT = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glad_glNamedRenderbufferStorageEXT = NULL; +PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glad_glGetNamedRenderbufferParameterivEXT = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glNamedRenderbufferStorageMultisampleEXT = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC glad_glNamedRenderbufferStorageMultisampleCoverageEXT = NULL; +PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glad_glCheckNamedFramebufferStatusEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glad_glNamedFramebufferTexture1DEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glad_glNamedFramebufferTexture2DEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glad_glNamedFramebufferTexture3DEXT = NULL; +PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glad_glNamedFramebufferRenderbufferEXT = NULL; +PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetNamedFramebufferAttachmentParameterivEXT = NULL; +PFNGLGENERATETEXTUREMIPMAPEXTPROC glad_glGenerateTextureMipmapEXT = NULL; +PFNGLGENERATEMULTITEXMIPMAPEXTPROC glad_glGenerateMultiTexMipmapEXT = NULL; +PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glad_glFramebufferDrawBufferEXT = NULL; +PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glad_glFramebufferDrawBuffersEXT = NULL; +PFNGLFRAMEBUFFERREADBUFFEREXTPROC glad_glFramebufferReadBufferEXT = NULL; +PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetFramebufferParameterivEXT = NULL; +PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glad_glNamedCopyBufferSubDataEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glad_glNamedFramebufferTextureEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glad_glNamedFramebufferTextureLayerEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC glad_glNamedFramebufferTextureFaceEXT = NULL; +PFNGLTEXTURERENDERBUFFEREXTPROC glad_glTextureRenderbufferEXT = NULL; +PFNGLMULTITEXRENDERBUFFEREXTPROC glad_glMultiTexRenderbufferEXT = NULL; +PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC glad_glVertexArrayVertexOffsetEXT = NULL; +PFNGLVERTEXARRAYCOLOROFFSETEXTPROC glad_glVertexArrayColorOffsetEXT = NULL; +PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC glad_glVertexArrayEdgeFlagOffsetEXT = NULL; +PFNGLVERTEXARRAYINDEXOFFSETEXTPROC glad_glVertexArrayIndexOffsetEXT = NULL; +PFNGLVERTEXARRAYNORMALOFFSETEXTPROC glad_glVertexArrayNormalOffsetEXT = NULL; +PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC glad_glVertexArrayTexCoordOffsetEXT = NULL; +PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC glad_glVertexArrayMultiTexCoordOffsetEXT = NULL; +PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC glad_glVertexArrayFogCoordOffsetEXT = NULL; +PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC glad_glVertexArraySecondaryColorOffsetEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glad_glVertexArrayVertexAttribOffsetEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glad_glVertexArrayVertexAttribIOffsetEXT = NULL; +PFNGLENABLEVERTEXARRAYEXTPROC glad_glEnableVertexArrayEXT = NULL; +PFNGLDISABLEVERTEXARRAYEXTPROC glad_glDisableVertexArrayEXT = NULL; +PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glad_glEnableVertexArrayAttribEXT = NULL; +PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glad_glDisableVertexArrayAttribEXT = NULL; +PFNGLGETVERTEXARRAYINTEGERVEXTPROC glad_glGetVertexArrayIntegervEXT = NULL; +PFNGLGETVERTEXARRAYPOINTERVEXTPROC glad_glGetVertexArrayPointervEXT = NULL; +PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glad_glGetVertexArrayIntegeri_vEXT = NULL; +PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glad_glGetVertexArrayPointeri_vEXT = NULL; +PFNGLMAPNAMEDBUFFERRANGEEXTPROC glad_glMapNamedBufferRangeEXT = NULL; +PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glad_glFlushMappedNamedBufferRangeEXT = NULL; +PFNGLNAMEDBUFFERSTORAGEEXTPROC glad_glNamedBufferStorageEXT = NULL; +PFNGLCLEARNAMEDBUFFERDATAEXTPROC glad_glClearNamedBufferDataEXT = NULL; +PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glad_glClearNamedBufferSubDataEXT = NULL; +PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glad_glNamedFramebufferParameteriEXT = NULL; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetNamedFramebufferParameterivEXT = NULL; +PFNGLPROGRAMUNIFORM1DEXTPROC glad_glProgramUniform1dEXT = NULL; +PFNGLPROGRAMUNIFORM2DEXTPROC glad_glProgramUniform2dEXT = NULL; +PFNGLPROGRAMUNIFORM3DEXTPROC glad_glProgramUniform3dEXT = NULL; +PFNGLPROGRAMUNIFORM4DEXTPROC glad_glProgramUniform4dEXT = NULL; +PFNGLPROGRAMUNIFORM1DVEXTPROC glad_glProgramUniform1dvEXT = NULL; +PFNGLPROGRAMUNIFORM2DVEXTPROC glad_glProgramUniform2dvEXT = NULL; +PFNGLPROGRAMUNIFORM3DVEXTPROC glad_glProgramUniform3dvEXT = NULL; +PFNGLPROGRAMUNIFORM4DVEXTPROC glad_glProgramUniform4dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC glad_glProgramUniformMatrix2dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC glad_glProgramUniformMatrix3dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC glad_glProgramUniformMatrix4dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC glad_glProgramUniformMatrix2x3dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC glad_glProgramUniformMatrix2x4dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC glad_glProgramUniformMatrix3x2dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC glad_glProgramUniformMatrix3x4dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC glad_glProgramUniformMatrix4x2dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC glad_glProgramUniformMatrix4x3dvEXT = NULL; +PFNGLTEXTUREBUFFERRANGEEXTPROC glad_glTextureBufferRangeEXT = NULL; +PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT = NULL; +PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT = NULL; +PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT = NULL; +PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC glad_glTextureStorage2DMultisampleEXT = NULL; +PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC glad_glTextureStorage3DMultisampleEXT = NULL; +PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glad_glVertexArrayBindVertexBufferEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glad_glVertexArrayVertexAttribFormatEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glad_glVertexArrayVertexAttribIFormatEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glad_glVertexArrayVertexAttribLFormatEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glad_glVertexArrayVertexAttribBindingEXT = NULL; +PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glad_glVertexArrayVertexBindingDivisorEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glad_glVertexArrayVertexAttribLOffsetEXT = NULL; +PFNGLTEXTUREPAGECOMMITMENTEXTPROC glad_glTexturePageCommitmentEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glad_glVertexArrayVertexAttribDivisorEXT = NULL; +PFNGLCOLORMASKINDEXEDEXTPROC glad_glColorMaskIndexedEXT = NULL; +PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT = NULL; +PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT = NULL; +PFNGLDRAWRANGEELEMENTSEXTPROC glad_glDrawRangeElementsEXT = NULL; +PFNGLBUFFERSTORAGEEXTERNALEXTPROC glad_glBufferStorageExternalEXT = NULL; +PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC glad_glNamedBufferStorageExternalEXT = NULL; +PFNGLFOGCOORDFEXTPROC glad_glFogCoordfEXT = NULL; +PFNGLFOGCOORDFVEXTPROC glad_glFogCoordfvEXT = NULL; +PFNGLFOGCOORDDEXTPROC glad_glFogCoorddEXT = NULL; +PFNGLFOGCOORDDVEXTPROC glad_glFogCoorddvEXT = NULL; +PFNGLFOGCOORDPOINTEREXTPROC glad_glFogCoordPointerEXT = NULL; +PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT = NULL; +PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT = NULL; +PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT = NULL; +PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT = NULL; +PFNGLGENRENDERBUFFERSEXTPROC glad_glGenRenderbuffersEXT = NULL; +PFNGLRENDERBUFFERSTORAGEEXTPROC glad_glRenderbufferStorageEXT = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glad_glGetRenderbufferParameterivEXT = NULL; +PFNGLISFRAMEBUFFEREXTPROC glad_glIsFramebufferEXT = NULL; +PFNGLBINDFRAMEBUFFEREXTPROC glad_glBindFramebufferEXT = NULL; +PFNGLDELETEFRAMEBUFFERSEXTPROC glad_glDeleteFramebuffersEXT = NULL; +PFNGLGENFRAMEBUFFERSEXTPROC glad_glGenFramebuffersEXT = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glad_glCheckFramebufferStatusEXT = NULL; +PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glad_glFramebufferTexture1DEXT = NULL; +PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glad_glFramebufferTexture2DEXT = NULL; +PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT = NULL; +PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT = NULL; +PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT = NULL; +PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT = NULL; +PFNGLPROGRAMENVPARAMETERS4FVEXTPROC glad_glProgramEnvParameters4fvEXT = NULL; +PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glProgramLocalParameters4fvEXT = NULL; +PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT = NULL; +PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT = NULL; +PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT = NULL; +PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT = NULL; +PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT = NULL; +PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT = NULL; +PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT = NULL; +PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT = NULL; +PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT = NULL; +PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT = NULL; +PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT = NULL; +PFNGLGETHISTOGRAMEXTPROC glad_glGetHistogramEXT = NULL; +PFNGLGETHISTOGRAMPARAMETERFVEXTPROC glad_glGetHistogramParameterfvEXT = NULL; +PFNGLGETHISTOGRAMPARAMETERIVEXTPROC glad_glGetHistogramParameterivEXT = NULL; +PFNGLGETMINMAXEXTPROC glad_glGetMinmaxEXT = NULL; +PFNGLGETMINMAXPARAMETERFVEXTPROC glad_glGetMinmaxParameterfvEXT = NULL; +PFNGLGETMINMAXPARAMETERIVEXTPROC glad_glGetMinmaxParameterivEXT = NULL; +PFNGLHISTOGRAMEXTPROC glad_glHistogramEXT = NULL; +PFNGLMINMAXEXTPROC glad_glMinmaxEXT = NULL; +PFNGLRESETHISTOGRAMEXTPROC glad_glResetHistogramEXT = NULL; +PFNGLRESETMINMAXEXTPROC glad_glResetMinmaxEXT = NULL; +PFNGLINDEXFUNCEXTPROC glad_glIndexFuncEXT = NULL; +PFNGLINDEXMATERIALEXTPROC glad_glIndexMaterialEXT = NULL; +PFNGLAPPLYTEXTUREEXTPROC glad_glApplyTextureEXT = NULL; +PFNGLTEXTURELIGHTEXTPROC glad_glTextureLightEXT = NULL; +PFNGLTEXTUREMATERIALEXTPROC glad_glTextureMaterialEXT = NULL; +PFNGLGETUNSIGNEDBYTEVEXTPROC glad_glGetUnsignedBytevEXT = NULL; +PFNGLGETUNSIGNEDBYTEI_VEXTPROC glad_glGetUnsignedBytei_vEXT = NULL; +PFNGLDELETEMEMORYOBJECTSEXTPROC glad_glDeleteMemoryObjectsEXT = NULL; +PFNGLISMEMORYOBJECTEXTPROC glad_glIsMemoryObjectEXT = NULL; +PFNGLCREATEMEMORYOBJECTSEXTPROC glad_glCreateMemoryObjectsEXT = NULL; +PFNGLMEMORYOBJECTPARAMETERIVEXTPROC glad_glMemoryObjectParameterivEXT = NULL; +PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC glad_glGetMemoryObjectParameterivEXT = NULL; +PFNGLTEXSTORAGEMEM2DEXTPROC glad_glTexStorageMem2DEXT = NULL; +PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTexStorageMem2DMultisampleEXT = NULL; +PFNGLTEXSTORAGEMEM3DEXTPROC glad_glTexStorageMem3DEXT = NULL; +PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTexStorageMem3DMultisampleEXT = NULL; +PFNGLBUFFERSTORAGEMEMEXTPROC glad_glBufferStorageMemEXT = NULL; +PFNGLTEXTURESTORAGEMEM2DEXTPROC glad_glTextureStorageMem2DEXT = NULL; +PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTextureStorageMem2DMultisampleEXT = NULL; +PFNGLTEXTURESTORAGEMEM3DEXTPROC glad_glTextureStorageMem3DEXT = NULL; +PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTextureStorageMem3DMultisampleEXT = NULL; +PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC glad_glNamedBufferStorageMemEXT = NULL; +PFNGLTEXSTORAGEMEM1DEXTPROC glad_glTexStorageMem1DEXT = NULL; +PFNGLTEXTURESTORAGEMEM1DEXTPROC glad_glTextureStorageMem1DEXT = NULL; +PFNGLIMPORTMEMORYFDEXTPROC glad_glImportMemoryFdEXT = NULL; +PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC glad_glImportMemoryWin32HandleEXT = NULL; +PFNGLIMPORTMEMORYWIN32NAMEEXTPROC glad_glImportMemoryWin32NameEXT = NULL; +PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT = NULL; +PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT = NULL; +PFNGLSAMPLEMASKEXTPROC glad_glSampleMaskEXT = NULL; +PFNGLSAMPLEPATTERNEXTPROC glad_glSamplePatternEXT = NULL; +PFNGLCOLORTABLEEXTPROC glad_glColorTableEXT = NULL; +PFNGLGETCOLORTABLEEXTPROC glad_glGetColorTableEXT = NULL; +PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glad_glGetColorTableParameterivEXT = NULL; +PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glad_glGetColorTableParameterfvEXT = NULL; +PFNGLPIXELTRANSFORMPARAMETERIEXTPROC glad_glPixelTransformParameteriEXT = NULL; +PFNGLPIXELTRANSFORMPARAMETERFEXTPROC glad_glPixelTransformParameterfEXT = NULL; +PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC glad_glPixelTransformParameterivEXT = NULL; +PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC glad_glPixelTransformParameterfvEXT = NULL; +PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC glad_glGetPixelTransformParameterivEXT = NULL; +PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC glad_glGetPixelTransformParameterfvEXT = NULL; +PFNGLPOINTPARAMETERFEXTPROC glad_glPointParameterfEXT = NULL; +PFNGLPOINTPARAMETERFVEXTPROC glad_glPointParameterfvEXT = NULL; +PFNGLPOLYGONOFFSETEXTPROC glad_glPolygonOffsetEXT = NULL; +PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT = NULL; +PFNGLPROVOKINGVERTEXEXTPROC glad_glProvokingVertexEXT = NULL; +PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT = NULL; +PFNGLSECONDARYCOLOR3BEXTPROC glad_glSecondaryColor3bEXT = NULL; +PFNGLSECONDARYCOLOR3BVEXTPROC glad_glSecondaryColor3bvEXT = NULL; +PFNGLSECONDARYCOLOR3DEXTPROC glad_glSecondaryColor3dEXT = NULL; +PFNGLSECONDARYCOLOR3DVEXTPROC glad_glSecondaryColor3dvEXT = NULL; +PFNGLSECONDARYCOLOR3FEXTPROC glad_glSecondaryColor3fEXT = NULL; +PFNGLSECONDARYCOLOR3FVEXTPROC glad_glSecondaryColor3fvEXT = NULL; +PFNGLSECONDARYCOLOR3IEXTPROC glad_glSecondaryColor3iEXT = NULL; +PFNGLSECONDARYCOLOR3IVEXTPROC glad_glSecondaryColor3ivEXT = NULL; +PFNGLSECONDARYCOLOR3SEXTPROC glad_glSecondaryColor3sEXT = NULL; +PFNGLSECONDARYCOLOR3SVEXTPROC glad_glSecondaryColor3svEXT = NULL; +PFNGLSECONDARYCOLOR3UBEXTPROC glad_glSecondaryColor3ubEXT = NULL; +PFNGLSECONDARYCOLOR3UBVEXTPROC glad_glSecondaryColor3ubvEXT = NULL; +PFNGLSECONDARYCOLOR3UIEXTPROC glad_glSecondaryColor3uiEXT = NULL; +PFNGLSECONDARYCOLOR3UIVEXTPROC glad_glSecondaryColor3uivEXT = NULL; +PFNGLSECONDARYCOLOR3USEXTPROC glad_glSecondaryColor3usEXT = NULL; +PFNGLSECONDARYCOLOR3USVEXTPROC glad_glSecondaryColor3usvEXT = NULL; +PFNGLSECONDARYCOLORPOINTEREXTPROC glad_glSecondaryColorPointerEXT = NULL; +PFNGLGENSEMAPHORESEXTPROC glad_glGenSemaphoresEXT = NULL; +PFNGLDELETESEMAPHORESEXTPROC glad_glDeleteSemaphoresEXT = NULL; +PFNGLISSEMAPHOREEXTPROC glad_glIsSemaphoreEXT = NULL; +PFNGLSEMAPHOREPARAMETERUI64VEXTPROC glad_glSemaphoreParameterui64vEXT = NULL; +PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC glad_glGetSemaphoreParameterui64vEXT = NULL; +PFNGLWAITSEMAPHOREEXTPROC glad_glWaitSemaphoreEXT = NULL; +PFNGLSIGNALSEMAPHOREEXTPROC glad_glSignalSemaphoreEXT = NULL; +PFNGLIMPORTSEMAPHOREFDEXTPROC glad_glImportSemaphoreFdEXT = NULL; +PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC glad_glImportSemaphoreWin32HandleEXT = NULL; +PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC glad_glImportSemaphoreWin32NameEXT = NULL; +PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT = NULL; +PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT = NULL; +PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT = NULL; +PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT = NULL; +PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT = NULL; +PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT = NULL; +PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT = NULL; +PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT = NULL; +PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT = NULL; +PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT = NULL; +PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT = NULL; +PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT = NULL; +PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT = NULL; +PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC glad_glFramebufferFetchBarrierEXT = NULL; +PFNGLBINDIMAGETEXTUREEXTPROC glad_glBindImageTextureEXT = NULL; +PFNGLMEMORYBARRIEREXTPROC glad_glMemoryBarrierEXT = NULL; +PFNGLSTENCILCLEARTAGEXTPROC glad_glStencilClearTagEXT = NULL; +PFNGLACTIVESTENCILFACEEXTPROC glad_glActiveStencilFaceEXT = NULL; +PFNGLTEXSUBIMAGE1DEXTPROC glad_glTexSubImage1DEXT = NULL; +PFNGLTEXSUBIMAGE2DEXTPROC glad_glTexSubImage2DEXT = NULL; +PFNGLTEXIMAGE3DEXTPROC glad_glTexImage3DEXT = NULL; +PFNGLTEXSUBIMAGE3DEXTPROC glad_glTexSubImage3DEXT = NULL; +PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC glad_glFramebufferTextureLayerEXT = NULL; +PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT = NULL; +PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT = NULL; +PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT = NULL; +PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT = NULL; +PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT = NULL; +PFNGLCLEARCOLORIIEXTPROC glad_glClearColorIiEXT = NULL; +PFNGLCLEARCOLORIUIEXTPROC glad_glClearColorIuiEXT = NULL; +PFNGLARETEXTURESRESIDENTEXTPROC glad_glAreTexturesResidentEXT = NULL; +PFNGLBINDTEXTUREEXTPROC glad_glBindTextureEXT = NULL; +PFNGLDELETETEXTURESEXTPROC glad_glDeleteTexturesEXT = NULL; +PFNGLGENTEXTURESEXTPROC glad_glGenTexturesEXT = NULL; +PFNGLISTEXTUREEXTPROC glad_glIsTextureEXT = NULL; +PFNGLPRIORITIZETEXTURESEXTPROC glad_glPrioritizeTexturesEXT = NULL; +PFNGLTEXTURENORMALEXTPROC glad_glTextureNormalEXT = NULL; +PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT = NULL; +PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT = NULL; +PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glad_glBeginTransformFeedbackEXT = NULL; +PFNGLENDTRANSFORMFEEDBACKEXTPROC glad_glEndTransformFeedbackEXT = NULL; +PFNGLBINDBUFFERRANGEEXTPROC glad_glBindBufferRangeEXT = NULL; +PFNGLBINDBUFFEROFFSETEXTPROC glad_glBindBufferOffsetEXT = NULL; +PFNGLBINDBUFFERBASEEXTPROC glad_glBindBufferBaseEXT = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glad_glTransformFeedbackVaryingsEXT = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glad_glGetTransformFeedbackVaryingEXT = NULL; +PFNGLARRAYELEMENTEXTPROC glad_glArrayElementEXT = NULL; +PFNGLCOLORPOINTEREXTPROC glad_glColorPointerEXT = NULL; +PFNGLDRAWARRAYSEXTPROC glad_glDrawArraysEXT = NULL; +PFNGLEDGEFLAGPOINTEREXTPROC glad_glEdgeFlagPointerEXT = NULL; +PFNGLGETPOINTERVEXTPROC glad_glGetPointervEXT = NULL; +PFNGLINDEXPOINTEREXTPROC glad_glIndexPointerEXT = NULL; +PFNGLNORMALPOINTEREXTPROC glad_glNormalPointerEXT = NULL; +PFNGLTEXCOORDPOINTEREXTPROC glad_glTexCoordPointerEXT = NULL; +PFNGLVERTEXPOINTEREXTPROC glad_glVertexPointerEXT = NULL; +PFNGLVERTEXATTRIBL1DEXTPROC glad_glVertexAttribL1dEXT = NULL; +PFNGLVERTEXATTRIBL2DEXTPROC glad_glVertexAttribL2dEXT = NULL; +PFNGLVERTEXATTRIBL3DEXTPROC glad_glVertexAttribL3dEXT = NULL; +PFNGLVERTEXATTRIBL4DEXTPROC glad_glVertexAttribL4dEXT = NULL; +PFNGLVERTEXATTRIBL1DVEXTPROC glad_glVertexAttribL1dvEXT = NULL; +PFNGLVERTEXATTRIBL2DVEXTPROC glad_glVertexAttribL2dvEXT = NULL; +PFNGLVERTEXATTRIBL3DVEXTPROC glad_glVertexAttribL3dvEXT = NULL; +PFNGLVERTEXATTRIBL4DVEXTPROC glad_glVertexAttribL4dvEXT = NULL; +PFNGLVERTEXATTRIBLPOINTEREXTPROC glad_glVertexAttribLPointerEXT = NULL; +PFNGLGETVERTEXATTRIBLDVEXTPROC glad_glGetVertexAttribLdvEXT = NULL; +PFNGLBEGINVERTEXSHADEREXTPROC glad_glBeginVertexShaderEXT = NULL; +PFNGLENDVERTEXSHADEREXTPROC glad_glEndVertexShaderEXT = NULL; +PFNGLBINDVERTEXSHADEREXTPROC glad_glBindVertexShaderEXT = NULL; +PFNGLGENVERTEXSHADERSEXTPROC glad_glGenVertexShadersEXT = NULL; +PFNGLDELETEVERTEXSHADEREXTPROC glad_glDeleteVertexShaderEXT = NULL; +PFNGLSHADEROP1EXTPROC glad_glShaderOp1EXT = NULL; +PFNGLSHADEROP2EXTPROC glad_glShaderOp2EXT = NULL; +PFNGLSHADEROP3EXTPROC glad_glShaderOp3EXT = NULL; +PFNGLSWIZZLEEXTPROC glad_glSwizzleEXT = NULL; +PFNGLWRITEMASKEXTPROC glad_glWriteMaskEXT = NULL; +PFNGLINSERTCOMPONENTEXTPROC glad_glInsertComponentEXT = NULL; +PFNGLEXTRACTCOMPONENTEXTPROC glad_glExtractComponentEXT = NULL; +PFNGLGENSYMBOLSEXTPROC glad_glGenSymbolsEXT = NULL; +PFNGLSETINVARIANTEXTPROC glad_glSetInvariantEXT = NULL; +PFNGLSETLOCALCONSTANTEXTPROC glad_glSetLocalConstantEXT = NULL; +PFNGLVARIANTBVEXTPROC glad_glVariantbvEXT = NULL; +PFNGLVARIANTSVEXTPROC glad_glVariantsvEXT = NULL; +PFNGLVARIANTIVEXTPROC glad_glVariantivEXT = NULL; +PFNGLVARIANTFVEXTPROC glad_glVariantfvEXT = NULL; +PFNGLVARIANTDVEXTPROC glad_glVariantdvEXT = NULL; +PFNGLVARIANTUBVEXTPROC glad_glVariantubvEXT = NULL; +PFNGLVARIANTUSVEXTPROC glad_glVariantusvEXT = NULL; +PFNGLVARIANTUIVEXTPROC glad_glVariantuivEXT = NULL; +PFNGLVARIANTPOINTEREXTPROC glad_glVariantPointerEXT = NULL; +PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glad_glEnableVariantClientStateEXT = NULL; +PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glad_glDisableVariantClientStateEXT = NULL; +PFNGLBINDLIGHTPARAMETEREXTPROC glad_glBindLightParameterEXT = NULL; +PFNGLBINDMATERIALPARAMETEREXTPROC glad_glBindMaterialParameterEXT = NULL; +PFNGLBINDTEXGENPARAMETEREXTPROC glad_glBindTexGenParameterEXT = NULL; +PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glad_glBindTextureUnitParameterEXT = NULL; +PFNGLBINDPARAMETEREXTPROC glad_glBindParameterEXT = NULL; +PFNGLISVARIANTENABLEDEXTPROC glad_glIsVariantEnabledEXT = NULL; +PFNGLGETVARIANTBOOLEANVEXTPROC glad_glGetVariantBooleanvEXT = NULL; +PFNGLGETVARIANTINTEGERVEXTPROC glad_glGetVariantIntegervEXT = NULL; +PFNGLGETVARIANTFLOATVEXTPROC glad_glGetVariantFloatvEXT = NULL; +PFNGLGETVARIANTPOINTERVEXTPROC glad_glGetVariantPointervEXT = NULL; +PFNGLGETINVARIANTBOOLEANVEXTPROC glad_glGetInvariantBooleanvEXT = NULL; +PFNGLGETINVARIANTINTEGERVEXTPROC glad_glGetInvariantIntegervEXT = NULL; +PFNGLGETINVARIANTFLOATVEXTPROC glad_glGetInvariantFloatvEXT = NULL; +PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glad_glGetLocalConstantBooleanvEXT = NULL; +PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glad_glGetLocalConstantIntegervEXT = NULL; +PFNGLGETLOCALCONSTANTFLOATVEXTPROC glad_glGetLocalConstantFloatvEXT = NULL; +PFNGLVERTEXWEIGHTFEXTPROC glad_glVertexWeightfEXT = NULL; +PFNGLVERTEXWEIGHTFVEXTPROC glad_glVertexWeightfvEXT = NULL; +PFNGLVERTEXWEIGHTPOINTEREXTPROC glad_glVertexWeightPointerEXT = NULL; +PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC glad_glAcquireKeyedMutexWin32EXT = NULL; +PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC glad_glReleaseKeyedMutexWin32EXT = NULL; +PFNGLWINDOWRECTANGLESEXTPROC glad_glWindowRectanglesEXT = NULL; +PFNGLIMPORTSYNCEXTPROC glad_glImportSyncEXT = NULL; +PFNGLFRAMETERMINATORGREMEDYPROC glad_glFrameTerminatorGREMEDY = NULL; +PFNGLSTRINGMARKERGREMEDYPROC glad_glStringMarkerGREMEDY = NULL; +PFNGLIMAGETRANSFORMPARAMETERIHPPROC glad_glImageTransformParameteriHP = NULL; +PFNGLIMAGETRANSFORMPARAMETERFHPPROC glad_glImageTransformParameterfHP = NULL; +PFNGLIMAGETRANSFORMPARAMETERIVHPPROC glad_glImageTransformParameterivHP = NULL; +PFNGLIMAGETRANSFORMPARAMETERFVHPPROC glad_glImageTransformParameterfvHP = NULL; +PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC glad_glGetImageTransformParameterivHP = NULL; +PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC glad_glGetImageTransformParameterfvHP = NULL; +PFNGLMULTIMODEDRAWARRAYSIBMPROC glad_glMultiModeDrawArraysIBM = NULL; +PFNGLMULTIMODEDRAWELEMENTSIBMPROC glad_glMultiModeDrawElementsIBM = NULL; +PFNGLFLUSHSTATICDATAIBMPROC glad_glFlushStaticDataIBM = NULL; +PFNGLCOLORPOINTERLISTIBMPROC glad_glColorPointerListIBM = NULL; +PFNGLSECONDARYCOLORPOINTERLISTIBMPROC glad_glSecondaryColorPointerListIBM = NULL; +PFNGLEDGEFLAGPOINTERLISTIBMPROC glad_glEdgeFlagPointerListIBM = NULL; +PFNGLFOGCOORDPOINTERLISTIBMPROC glad_glFogCoordPointerListIBM = NULL; +PFNGLINDEXPOINTERLISTIBMPROC glad_glIndexPointerListIBM = NULL; +PFNGLNORMALPOINTERLISTIBMPROC glad_glNormalPointerListIBM = NULL; +PFNGLTEXCOORDPOINTERLISTIBMPROC glad_glTexCoordPointerListIBM = NULL; +PFNGLVERTEXPOINTERLISTIBMPROC glad_glVertexPointerListIBM = NULL; +PFNGLBLENDFUNCSEPARATEINGRPROC glad_glBlendFuncSeparateINGR = NULL; +PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL = NULL; +PFNGLSYNCTEXTUREINTELPROC glad_glSyncTextureINTEL = NULL; +PFNGLUNMAPTEXTURE2DINTELPROC glad_glUnmapTexture2DINTEL = NULL; +PFNGLMAPTEXTURE2DINTELPROC glad_glMapTexture2DINTEL = NULL; +PFNGLVERTEXPOINTERVINTELPROC glad_glVertexPointervINTEL = NULL; +PFNGLNORMALPOINTERVINTELPROC glad_glNormalPointervINTEL = NULL; +PFNGLCOLORPOINTERVINTELPROC glad_glColorPointervINTEL = NULL; +PFNGLTEXCOORDPOINTERVINTELPROC glad_glTexCoordPointervINTEL = NULL; +PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL = NULL; +PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL = NULL; +PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL = NULL; +PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL = NULL; +PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL = NULL; +PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL = NULL; +PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL = NULL; +PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL = NULL; +PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL = NULL; +PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL = NULL; +PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR = NULL; +PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl = NULL; +PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert = NULL; +PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback = NULL; +PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog = NULL; +PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup = NULL; +PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup = NULL; +PFNGLOBJECTLABELPROC glad_glObjectLabel = NULL; +PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel = NULL; +PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel = NULL; +PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel = NULL; +PFNGLGETPOINTERVPROC glad_glGetPointerv = NULL; +PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR = NULL; +PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR = NULL; +PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR = NULL; +PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR = NULL; +PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR = NULL; +PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR = NULL; +PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR = NULL; +PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR = NULL; +PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR = NULL; +PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR = NULL; +PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR = NULL; +PFNGLMAXSHADERCOMPILERTHREADSKHRPROC glad_glMaxShaderCompilerThreadsKHR = NULL; +PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus = NULL; +PFNGLREADNPIXELSPROC glad_glReadnPixels = NULL; +PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv = NULL; +PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv = NULL; +PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv = NULL; +PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR = NULL; +PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR = NULL; +PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR = NULL; +PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR = NULL; +PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR = NULL; +PFNGLFRAMEBUFFERPARAMETERIMESAPROC glad_glFramebufferParameteriMESA = NULL; +PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC glad_glGetFramebufferParameterivMESA = NULL; +PFNGLRESIZEBUFFERSMESAPROC glad_glResizeBuffersMESA = NULL; +PFNGLWINDOWPOS2DMESAPROC glad_glWindowPos2dMESA = NULL; +PFNGLWINDOWPOS2DVMESAPROC glad_glWindowPos2dvMESA = NULL; +PFNGLWINDOWPOS2FMESAPROC glad_glWindowPos2fMESA = NULL; +PFNGLWINDOWPOS2FVMESAPROC glad_glWindowPos2fvMESA = NULL; +PFNGLWINDOWPOS2IMESAPROC glad_glWindowPos2iMESA = NULL; +PFNGLWINDOWPOS2IVMESAPROC glad_glWindowPos2ivMESA = NULL; +PFNGLWINDOWPOS2SMESAPROC glad_glWindowPos2sMESA = NULL; +PFNGLWINDOWPOS2SVMESAPROC glad_glWindowPos2svMESA = NULL; +PFNGLWINDOWPOS3DMESAPROC glad_glWindowPos3dMESA = NULL; +PFNGLWINDOWPOS3DVMESAPROC glad_glWindowPos3dvMESA = NULL; +PFNGLWINDOWPOS3FMESAPROC glad_glWindowPos3fMESA = NULL; +PFNGLWINDOWPOS3FVMESAPROC glad_glWindowPos3fvMESA = NULL; +PFNGLWINDOWPOS3IMESAPROC glad_glWindowPos3iMESA = NULL; +PFNGLWINDOWPOS3IVMESAPROC glad_glWindowPos3ivMESA = NULL; +PFNGLWINDOWPOS3SMESAPROC glad_glWindowPos3sMESA = NULL; +PFNGLWINDOWPOS3SVMESAPROC glad_glWindowPos3svMESA = NULL; +PFNGLWINDOWPOS4DMESAPROC glad_glWindowPos4dMESA = NULL; +PFNGLWINDOWPOS4DVMESAPROC glad_glWindowPos4dvMESA = NULL; +PFNGLWINDOWPOS4FMESAPROC glad_glWindowPos4fMESA = NULL; +PFNGLWINDOWPOS4FVMESAPROC glad_glWindowPos4fvMESA = NULL; +PFNGLWINDOWPOS4IMESAPROC glad_glWindowPos4iMESA = NULL; +PFNGLWINDOWPOS4IVMESAPROC glad_glWindowPos4ivMESA = NULL; +PFNGLWINDOWPOS4SMESAPROC glad_glWindowPos4sMESA = NULL; +PFNGLWINDOWPOS4SVMESAPROC glad_glWindowPos4svMESA = NULL; +PFNGLBEGINCONDITIONALRENDERNVXPROC glad_glBeginConditionalRenderNVX = NULL; +PFNGLENDCONDITIONALRENDERNVXPROC glad_glEndConditionalRenderNVX = NULL; +PFNGLUPLOADGPUMASKNVXPROC glad_glUploadGpuMaskNVX = NULL; +PFNGLMULTICASTVIEWPORTARRAYVNVXPROC glad_glMulticastViewportArrayvNVX = NULL; +PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC glad_glMulticastViewportPositionWScaleNVX = NULL; +PFNGLMULTICASTSCISSORARRAYVNVXPROC glad_glMulticastScissorArrayvNVX = NULL; +PFNGLASYNCCOPYBUFFERSUBDATANVXPROC glad_glAsyncCopyBufferSubDataNVX = NULL; +PFNGLASYNCCOPYIMAGESUBDATANVXPROC glad_glAsyncCopyImageSubDataNVX = NULL; +PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC glad_glLGPUNamedBufferSubDataNVX = NULL; +PFNGLLGPUCOPYIMAGESUBDATANVXPROC glad_glLGPUCopyImageSubDataNVX = NULL; +PFNGLLGPUINTERLOCKNVXPROC glad_glLGPUInterlockNVX = NULL; +PFNGLCREATEPROGRESSFENCENVXPROC glad_glCreateProgressFenceNVX = NULL; +PFNGLSIGNALSEMAPHOREUI64NVXPROC glad_glSignalSemaphoreui64NVX = NULL; +PFNGLWAITSEMAPHOREUI64NVXPROC glad_glWaitSemaphoreui64NVX = NULL; +PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC glad_glClientWaitSemaphoreui64NVX = NULL; +PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC glad_glAlphaToCoverageDitherControlNV = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC glad_glMultiDrawArraysIndirectBindlessNV = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC glad_glMultiDrawElementsIndirectBindlessNV = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawArraysIndirectBindlessCountNV = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawElementsIndirectBindlessCountNV = NULL; +PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV = NULL; +PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV = NULL; +PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV = NULL; +PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV = NULL; +PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV = NULL; +PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV = NULL; +PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV = NULL; +PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV = NULL; +PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV = NULL; +PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV = NULL; +PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV = NULL; +PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV = NULL; +PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV = NULL; +PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV = NULL; +PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV = NULL; +PFNGLVIEWPORTPOSITIONWSCALENVPROC glad_glViewportPositionWScaleNV = NULL; +PFNGLCREATESTATESNVPROC glad_glCreateStatesNV = NULL; +PFNGLDELETESTATESNVPROC glad_glDeleteStatesNV = NULL; +PFNGLISSTATENVPROC glad_glIsStateNV = NULL; +PFNGLSTATECAPTURENVPROC glad_glStateCaptureNV = NULL; +PFNGLGETCOMMANDHEADERNVPROC glad_glGetCommandHeaderNV = NULL; +PFNGLGETSTAGEINDEXNVPROC glad_glGetStageIndexNV = NULL; +PFNGLDRAWCOMMANDSNVPROC glad_glDrawCommandsNV = NULL; +PFNGLDRAWCOMMANDSADDRESSNVPROC glad_glDrawCommandsAddressNV = NULL; +PFNGLDRAWCOMMANDSSTATESNVPROC glad_glDrawCommandsStatesNV = NULL; +PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC glad_glDrawCommandsStatesAddressNV = NULL; +PFNGLCREATECOMMANDLISTSNVPROC glad_glCreateCommandListsNV = NULL; +PFNGLDELETECOMMANDLISTSNVPROC glad_glDeleteCommandListsNV = NULL; +PFNGLISCOMMANDLISTNVPROC glad_glIsCommandListNV = NULL; +PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC glad_glListDrawCommandsStatesClientNV = NULL; +PFNGLCOMMANDLISTSEGMENTSNVPROC glad_glCommandListSegmentsNV = NULL; +PFNGLCOMPILECOMMANDLISTNVPROC glad_glCompileCommandListNV = NULL; +PFNGLCALLCOMMANDLISTNVPROC glad_glCallCommandListNV = NULL; +PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV = NULL; +PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV = NULL; +PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV = NULL; +PFNGLCONSERVATIVERASTERPARAMETERFNVPROC glad_glConservativeRasterParameterfNV = NULL; +PFNGLCONSERVATIVERASTERPARAMETERINVPROC glad_glConservativeRasterParameteriNV = NULL; +PFNGLCOPYIMAGESUBDATANVPROC glad_glCopyImageSubDataNV = NULL; +PFNGLDEPTHRANGEDNVPROC glad_glDepthRangedNV = NULL; +PFNGLCLEARDEPTHDNVPROC glad_glClearDepthdNV = NULL; +PFNGLDEPTHBOUNDSDNVPROC glad_glDepthBoundsdNV = NULL; +PFNGLDRAWTEXTURENVPROC glad_glDrawTextureNV = NULL; +PFNGLDRAWVKIMAGENVPROC glad_glDrawVkImageNV = NULL; +PFNGLGETVKPROCADDRNVPROC glad_glGetVkProcAddrNV = NULL; +PFNGLWAITVKSEMAPHORENVPROC glad_glWaitVkSemaphoreNV = NULL; +PFNGLSIGNALVKSEMAPHORENVPROC glad_glSignalVkSemaphoreNV = NULL; +PFNGLSIGNALVKFENCENVPROC glad_glSignalVkFenceNV = NULL; +PFNGLMAPCONTROLPOINTSNVPROC glad_glMapControlPointsNV = NULL; +PFNGLMAPPARAMETERIVNVPROC glad_glMapParameterivNV = NULL; +PFNGLMAPPARAMETERFVNVPROC glad_glMapParameterfvNV = NULL; +PFNGLGETMAPCONTROLPOINTSNVPROC glad_glGetMapControlPointsNV = NULL; +PFNGLGETMAPPARAMETERIVNVPROC glad_glGetMapParameterivNV = NULL; +PFNGLGETMAPPARAMETERFVNVPROC glad_glGetMapParameterfvNV = NULL; +PFNGLGETMAPATTRIBPARAMETERIVNVPROC glad_glGetMapAttribParameterivNV = NULL; +PFNGLGETMAPATTRIBPARAMETERFVNVPROC glad_glGetMapAttribParameterfvNV = NULL; +PFNGLEVALMAPSNVPROC glad_glEvalMapsNV = NULL; +PFNGLGETMULTISAMPLEFVNVPROC glad_glGetMultisamplefvNV = NULL; +PFNGLSAMPLEMASKINDEXEDNVPROC glad_glSampleMaskIndexedNV = NULL; +PFNGLTEXRENDERBUFFERNVPROC glad_glTexRenderbufferNV = NULL; +PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV = NULL; +PFNGLGENFENCESNVPROC glad_glGenFencesNV = NULL; +PFNGLISFENCENVPROC glad_glIsFenceNV = NULL; +PFNGLTESTFENCENVPROC glad_glTestFenceNV = NULL; +PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV = NULL; +PFNGLFINISHFENCENVPROC glad_glFinishFenceNV = NULL; +PFNGLSETFENCENVPROC glad_glSetFenceNV = NULL; +PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV = NULL; +PFNGLPROGRAMNAMEDPARAMETER4FNVPROC glad_glProgramNamedParameter4fNV = NULL; +PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC glad_glProgramNamedParameter4fvNV = NULL; +PFNGLPROGRAMNAMEDPARAMETER4DNVPROC glad_glProgramNamedParameter4dNV = NULL; +PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC glad_glProgramNamedParameter4dvNV = NULL; +PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glad_glGetProgramNamedParameterfvNV = NULL; +PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glad_glGetProgramNamedParameterdvNV = NULL; +PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV = NULL; +PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV = NULL; +PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC glad_glRenderbufferStorageMultisampleCoverageNV = NULL; +PFNGLPROGRAMVERTEXLIMITNVPROC glad_glProgramVertexLimitNV = NULL; +PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT = NULL; +PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC glad_glFramebufferTextureFaceEXT = NULL; +PFNGLRENDERGPUMASKNVPROC glad_glRenderGpuMaskNV = NULL; +PFNGLMULTICASTBUFFERSUBDATANVPROC glad_glMulticastBufferSubDataNV = NULL; +PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC glad_glMulticastCopyBufferSubDataNV = NULL; +PFNGLMULTICASTCOPYIMAGESUBDATANVPROC glad_glMulticastCopyImageSubDataNV = NULL; +PFNGLMULTICASTBLITFRAMEBUFFERNVPROC glad_glMulticastBlitFramebufferNV = NULL; +PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glMulticastFramebufferSampleLocationsfvNV = NULL; +PFNGLMULTICASTBARRIERNVPROC glad_glMulticastBarrierNV = NULL; +PFNGLMULTICASTWAITSYNCNVPROC glad_glMulticastWaitSyncNV = NULL; +PFNGLMULTICASTGETQUERYOBJECTIVNVPROC glad_glMulticastGetQueryObjectivNV = NULL; +PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC glad_glMulticastGetQueryObjectuivNV = NULL; +PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC glad_glMulticastGetQueryObjecti64vNV = NULL; +PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC glad_glMulticastGetQueryObjectui64vNV = NULL; +PFNGLPROGRAMLOCALPARAMETERI4INVPROC glad_glProgramLocalParameterI4iNV = NULL; +PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC glad_glProgramLocalParameterI4ivNV = NULL; +PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC glad_glProgramLocalParametersI4ivNV = NULL; +PFNGLPROGRAMLOCALPARAMETERI4UINVPROC glad_glProgramLocalParameterI4uiNV = NULL; +PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC glad_glProgramLocalParameterI4uivNV = NULL; +PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC glad_glProgramLocalParametersI4uivNV = NULL; +PFNGLPROGRAMENVPARAMETERI4INVPROC glad_glProgramEnvParameterI4iNV = NULL; +PFNGLPROGRAMENVPARAMETERI4IVNVPROC glad_glProgramEnvParameterI4ivNV = NULL; +PFNGLPROGRAMENVPARAMETERSI4IVNVPROC glad_glProgramEnvParametersI4ivNV = NULL; +PFNGLPROGRAMENVPARAMETERI4UINVPROC glad_glProgramEnvParameterI4uiNV = NULL; +PFNGLPROGRAMENVPARAMETERI4UIVNVPROC glad_glProgramEnvParameterI4uivNV = NULL; +PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC glad_glProgramEnvParametersI4uivNV = NULL; +PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC glad_glGetProgramLocalParameterIivNV = NULL; +PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC glad_glGetProgramLocalParameterIuivNV = NULL; +PFNGLGETPROGRAMENVPARAMETERIIVNVPROC glad_glGetProgramEnvParameterIivNV = NULL; +PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC glad_glGetProgramEnvParameterIuivNV = NULL; +PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC glad_glProgramSubroutineParametersuivNV = NULL; +PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC glad_glGetProgramSubroutineParameteruivNV = NULL; +PFNGLVERTEX2HNVPROC glad_glVertex2hNV = NULL; +PFNGLVERTEX2HVNVPROC glad_glVertex2hvNV = NULL; +PFNGLVERTEX3HNVPROC glad_glVertex3hNV = NULL; +PFNGLVERTEX3HVNVPROC glad_glVertex3hvNV = NULL; +PFNGLVERTEX4HNVPROC glad_glVertex4hNV = NULL; +PFNGLVERTEX4HVNVPROC glad_glVertex4hvNV = NULL; +PFNGLNORMAL3HNVPROC glad_glNormal3hNV = NULL; +PFNGLNORMAL3HVNVPROC glad_glNormal3hvNV = NULL; +PFNGLCOLOR3HNVPROC glad_glColor3hNV = NULL; +PFNGLCOLOR3HVNVPROC glad_glColor3hvNV = NULL; +PFNGLCOLOR4HNVPROC glad_glColor4hNV = NULL; +PFNGLCOLOR4HVNVPROC glad_glColor4hvNV = NULL; +PFNGLTEXCOORD1HNVPROC glad_glTexCoord1hNV = NULL; +PFNGLTEXCOORD1HVNVPROC glad_glTexCoord1hvNV = NULL; +PFNGLTEXCOORD2HNVPROC glad_glTexCoord2hNV = NULL; +PFNGLTEXCOORD2HVNVPROC glad_glTexCoord2hvNV = NULL; +PFNGLTEXCOORD3HNVPROC glad_glTexCoord3hNV = NULL; +PFNGLTEXCOORD3HVNVPROC glad_glTexCoord3hvNV = NULL; +PFNGLTEXCOORD4HNVPROC glad_glTexCoord4hNV = NULL; +PFNGLTEXCOORD4HVNVPROC glad_glTexCoord4hvNV = NULL; +PFNGLMULTITEXCOORD1HNVPROC glad_glMultiTexCoord1hNV = NULL; +PFNGLMULTITEXCOORD1HVNVPROC glad_glMultiTexCoord1hvNV = NULL; +PFNGLMULTITEXCOORD2HNVPROC glad_glMultiTexCoord2hNV = NULL; +PFNGLMULTITEXCOORD2HVNVPROC glad_glMultiTexCoord2hvNV = NULL; +PFNGLMULTITEXCOORD3HNVPROC glad_glMultiTexCoord3hNV = NULL; +PFNGLMULTITEXCOORD3HVNVPROC glad_glMultiTexCoord3hvNV = NULL; +PFNGLMULTITEXCOORD4HNVPROC glad_glMultiTexCoord4hNV = NULL; +PFNGLMULTITEXCOORD4HVNVPROC glad_glMultiTexCoord4hvNV = NULL; +PFNGLFOGCOORDHNVPROC glad_glFogCoordhNV = NULL; +PFNGLFOGCOORDHVNVPROC glad_glFogCoordhvNV = NULL; +PFNGLSECONDARYCOLOR3HNVPROC glad_glSecondaryColor3hNV = NULL; +PFNGLSECONDARYCOLOR3HVNVPROC glad_glSecondaryColor3hvNV = NULL; +PFNGLVERTEXWEIGHTHNVPROC glad_glVertexWeighthNV = NULL; +PFNGLVERTEXWEIGHTHVNVPROC glad_glVertexWeighthvNV = NULL; +PFNGLVERTEXATTRIB1HNVPROC glad_glVertexAttrib1hNV = NULL; +PFNGLVERTEXATTRIB1HVNVPROC glad_glVertexAttrib1hvNV = NULL; +PFNGLVERTEXATTRIB2HNVPROC glad_glVertexAttrib2hNV = NULL; +PFNGLVERTEXATTRIB2HVNVPROC glad_glVertexAttrib2hvNV = NULL; +PFNGLVERTEXATTRIB3HNVPROC glad_glVertexAttrib3hNV = NULL; +PFNGLVERTEXATTRIB3HVNVPROC glad_glVertexAttrib3hvNV = NULL; +PFNGLVERTEXATTRIB4HNVPROC glad_glVertexAttrib4hNV = NULL; +PFNGLVERTEXATTRIB4HVNVPROC glad_glVertexAttrib4hvNV = NULL; +PFNGLVERTEXATTRIBS1HVNVPROC glad_glVertexAttribs1hvNV = NULL; +PFNGLVERTEXATTRIBS2HVNVPROC glad_glVertexAttribs2hvNV = NULL; +PFNGLVERTEXATTRIBS3HVNVPROC glad_glVertexAttribs3hvNV = NULL; +PFNGLVERTEXATTRIBS4HVNVPROC glad_glVertexAttribs4hvNV = NULL; +PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV = NULL; +PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC glad_glGetMemoryObjectDetachedResourcesuivNV = NULL; +PFNGLRESETMEMORYOBJECTPARAMETERNVPROC glad_glResetMemoryObjectParameterNV = NULL; +PFNGLTEXATTACHMEMORYNVPROC glad_glTexAttachMemoryNV = NULL; +PFNGLBUFFERATTACHMEMORYNVPROC glad_glBufferAttachMemoryNV = NULL; +PFNGLTEXTUREATTACHMEMORYNVPROC glad_glTextureAttachMemoryNV = NULL; +PFNGLNAMEDBUFFERATTACHMEMORYNVPROC glad_glNamedBufferAttachMemoryNV = NULL; +PFNGLDRAWMESHTASKSNVPROC glad_glDrawMeshTasksNV = NULL; +PFNGLDRAWMESHTASKSINDIRECTNVPROC glad_glDrawMeshTasksIndirectNV = NULL; +PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC glad_glMultiDrawMeshTasksIndirectNV = NULL; +PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC glad_glMultiDrawMeshTasksIndirectCountNV = NULL; +PFNGLGENOCCLUSIONQUERIESNVPROC glad_glGenOcclusionQueriesNV = NULL; +PFNGLDELETEOCCLUSIONQUERIESNVPROC glad_glDeleteOcclusionQueriesNV = NULL; +PFNGLISOCCLUSIONQUERYNVPROC glad_glIsOcclusionQueryNV = NULL; +PFNGLBEGINOCCLUSIONQUERYNVPROC glad_glBeginOcclusionQueryNV = NULL; +PFNGLENDOCCLUSIONQUERYNVPROC glad_glEndOcclusionQueryNV = NULL; +PFNGLGETOCCLUSIONQUERYIVNVPROC glad_glGetOcclusionQueryivNV = NULL; +PFNGLGETOCCLUSIONQUERYUIVNVPROC glad_glGetOcclusionQueryuivNV = NULL; +PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC glad_glProgramBufferParametersfvNV = NULL; +PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC glad_glProgramBufferParametersIivNV = NULL; +PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC glad_glProgramBufferParametersIuivNV = NULL; +PFNGLGENPATHSNVPROC glad_glGenPathsNV = NULL; +PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV = NULL; +PFNGLISPATHNVPROC glad_glIsPathNV = NULL; +PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV = NULL; +PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV = NULL; +PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV = NULL; +PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV = NULL; +PFNGLPATHSTRINGNVPROC glad_glPathStringNV = NULL; +PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV = NULL; +PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV = NULL; +PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV = NULL; +PFNGLCOPYPATHNVPROC glad_glCopyPathNV = NULL; +PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV = NULL; +PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV = NULL; +PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV = NULL; +PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV = NULL; +PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV = NULL; +PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV = NULL; +PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV = NULL; +PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV = NULL; +PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV = NULL; +PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV = NULL; +PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV = NULL; +PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV = NULL; +PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV = NULL; +PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV = NULL; +PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV = NULL; +PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV = NULL; +PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV = NULL; +PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV = NULL; +PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV = NULL; +PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV = NULL; +PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV = NULL; +PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV = NULL; +PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV = NULL; +PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV = NULL; +PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV = NULL; +PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV = NULL; +PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV = NULL; +PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV = NULL; +PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV = NULL; +PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV = NULL; +PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV = NULL; +PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV = NULL; +PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV = NULL; +PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV = NULL; +PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV = NULL; +PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV = NULL; +PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV = NULL; +PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV = NULL; +PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV = NULL; +PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV = NULL; +PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV = NULL; +PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV = NULL; +PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV = NULL; +PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV = NULL; +PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV = NULL; +PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV = NULL; +PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV = NULL; +PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV = NULL; +PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV = NULL; +PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV = NULL; +PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV = NULL; +PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV = NULL; +PFNGLPIXELDATARANGENVPROC glad_glPixelDataRangeNV = NULL; +PFNGLFLUSHPIXELDATARANGENVPROC glad_glFlushPixelDataRangeNV = NULL; +PFNGLPOINTPARAMETERINVPROC glad_glPointParameteriNV = NULL; +PFNGLPOINTPARAMETERIVNVPROC glad_glPointParameterivNV = NULL; +PFNGLPRESENTFRAMEKEYEDNVPROC glad_glPresentFrameKeyedNV = NULL; +PFNGLPRESENTFRAMEDUALFILLNVPROC glad_glPresentFrameDualFillNV = NULL; +PFNGLGETVIDEOIVNVPROC glad_glGetVideoivNV = NULL; +PFNGLGETVIDEOUIVNVPROC glad_glGetVideouivNV = NULL; +PFNGLGETVIDEOI64VNVPROC glad_glGetVideoi64vNV = NULL; +PFNGLGETVIDEOUI64VNVPROC glad_glGetVideoui64vNV = NULL; +PFNGLPRIMITIVERESTARTNVPROC glad_glPrimitiveRestartNV = NULL; +PFNGLPRIMITIVERESTARTINDEXNVPROC glad_glPrimitiveRestartIndexNV = NULL; +PFNGLQUERYRESOURCENVPROC glad_glQueryResourceNV = NULL; +PFNGLGENQUERYRESOURCETAGNVPROC glad_glGenQueryResourceTagNV = NULL; +PFNGLDELETEQUERYRESOURCETAGNVPROC glad_glDeleteQueryResourceTagNV = NULL; +PFNGLQUERYRESOURCETAGNVPROC glad_glQueryResourceTagNV = NULL; +PFNGLCOMBINERPARAMETERFVNVPROC glad_glCombinerParameterfvNV = NULL; +PFNGLCOMBINERPARAMETERFNVPROC glad_glCombinerParameterfNV = NULL; +PFNGLCOMBINERPARAMETERIVNVPROC glad_glCombinerParameterivNV = NULL; +PFNGLCOMBINERPARAMETERINVPROC glad_glCombinerParameteriNV = NULL; +PFNGLCOMBINERINPUTNVPROC glad_glCombinerInputNV = NULL; +PFNGLCOMBINEROUTPUTNVPROC glad_glCombinerOutputNV = NULL; +PFNGLFINALCOMBINERINPUTNVPROC glad_glFinalCombinerInputNV = NULL; +PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glad_glGetCombinerInputParameterfvNV = NULL; +PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glad_glGetCombinerInputParameterivNV = NULL; +PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glad_glGetCombinerOutputParameterfvNV = NULL; +PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glad_glGetCombinerOutputParameterivNV = NULL; +PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glad_glGetFinalCombinerInputParameterfvNV = NULL; +PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glad_glGetFinalCombinerInputParameterivNV = NULL; +PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glad_glCombinerStageParameterfvNV = NULL; +PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glad_glGetCombinerStageParameterfvNV = NULL; +PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV = NULL; +PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV = NULL; +PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV = NULL; +PFNGLSCISSOREXCLUSIVENVPROC glad_glScissorExclusiveNV = NULL; +PFNGLSCISSOREXCLUSIVEARRAYVNVPROC glad_glScissorExclusiveArrayvNV = NULL; +PFNGLMAKEBUFFERRESIDENTNVPROC glad_glMakeBufferResidentNV = NULL; +PFNGLMAKEBUFFERNONRESIDENTNVPROC glad_glMakeBufferNonResidentNV = NULL; +PFNGLISBUFFERRESIDENTNVPROC glad_glIsBufferResidentNV = NULL; +PFNGLMAKENAMEDBUFFERRESIDENTNVPROC glad_glMakeNamedBufferResidentNV = NULL; +PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC glad_glMakeNamedBufferNonResidentNV = NULL; +PFNGLISNAMEDBUFFERRESIDENTNVPROC glad_glIsNamedBufferResidentNV = NULL; +PFNGLGETBUFFERPARAMETERUI64VNVPROC glad_glGetBufferParameterui64vNV = NULL; +PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC glad_glGetNamedBufferParameterui64vNV = NULL; +PFNGLGETINTEGERUI64VNVPROC glad_glGetIntegerui64vNV = NULL; +PFNGLUNIFORMUI64NVPROC glad_glUniformui64NV = NULL; +PFNGLUNIFORMUI64VNVPROC glad_glUniformui64vNV = NULL; +PFNGLPROGRAMUNIFORMUI64NVPROC glad_glProgramUniformui64NV = NULL; +PFNGLPROGRAMUNIFORMUI64VNVPROC glad_glProgramUniformui64vNV = NULL; +PFNGLBINDSHADINGRATEIMAGENVPROC glad_glBindShadingRateImageNV = NULL; +PFNGLGETSHADINGRATEIMAGEPALETTENVPROC glad_glGetShadingRateImagePaletteNV = NULL; +PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC glad_glGetShadingRateSampleLocationivNV = NULL; +PFNGLSHADINGRATEIMAGEBARRIERNVPROC glad_glShadingRateImageBarrierNV = NULL; +PFNGLSHADINGRATEIMAGEPALETTENVPROC glad_glShadingRateImagePaletteNV = NULL; +PFNGLSHADINGRATESAMPLEORDERNVPROC glad_glShadingRateSampleOrderNV = NULL; +PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC glad_glShadingRateSampleOrderCustomNV = NULL; +PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV = NULL; +PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTexImage2DMultisampleCoverageNV = NULL; +PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTexImage3DMultisampleCoverageNV = NULL; +PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC glad_glTextureImage2DMultisampleNV = NULL; +PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC glad_glTextureImage3DMultisampleNV = NULL; +PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTextureImage2DMultisampleCoverageNV = NULL; +PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTextureImage3DMultisampleCoverageNV = NULL; +PFNGLBEGINTRANSFORMFEEDBACKNVPROC glad_glBeginTransformFeedbackNV = NULL; +PFNGLENDTRANSFORMFEEDBACKNVPROC glad_glEndTransformFeedbackNV = NULL; +PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC glad_glTransformFeedbackAttribsNV = NULL; +PFNGLBINDBUFFERRANGENVPROC glad_glBindBufferRangeNV = NULL; +PFNGLBINDBUFFEROFFSETNVPROC glad_glBindBufferOffsetNV = NULL; +PFNGLBINDBUFFERBASENVPROC glad_glBindBufferBaseNV = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC glad_glTransformFeedbackVaryingsNV = NULL; +PFNGLACTIVEVARYINGNVPROC glad_glActiveVaryingNV = NULL; +PFNGLGETVARYINGLOCATIONNVPROC glad_glGetVaryingLocationNV = NULL; +PFNGLGETACTIVEVARYINGNVPROC glad_glGetActiveVaryingNV = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC glad_glGetTransformFeedbackVaryingNV = NULL; +PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC glad_glTransformFeedbackStreamAttribsNV = NULL; +PFNGLBINDTRANSFORMFEEDBACKNVPROC glad_glBindTransformFeedbackNV = NULL; +PFNGLDELETETRANSFORMFEEDBACKSNVPROC glad_glDeleteTransformFeedbacksNV = NULL; +PFNGLGENTRANSFORMFEEDBACKSNVPROC glad_glGenTransformFeedbacksNV = NULL; +PFNGLISTRANSFORMFEEDBACKNVPROC glad_glIsTransformFeedbackNV = NULL; +PFNGLPAUSETRANSFORMFEEDBACKNVPROC glad_glPauseTransformFeedbackNV = NULL; +PFNGLRESUMETRANSFORMFEEDBACKNVPROC glad_glResumeTransformFeedbackNV = NULL; +PFNGLDRAWTRANSFORMFEEDBACKNVPROC glad_glDrawTransformFeedbackNV = NULL; +PFNGLVDPAUINITNVPROC glad_glVDPAUInitNV = NULL; +PFNGLVDPAUFININVPROC glad_glVDPAUFiniNV = NULL; +PFNGLVDPAUREGISTERVIDEOSURFACENVPROC glad_glVDPAURegisterVideoSurfaceNV = NULL; +PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC glad_glVDPAURegisterOutputSurfaceNV = NULL; +PFNGLVDPAUISSURFACENVPROC glad_glVDPAUIsSurfaceNV = NULL; +PFNGLVDPAUUNREGISTERSURFACENVPROC glad_glVDPAUUnregisterSurfaceNV = NULL; +PFNGLVDPAUGETSURFACEIVNVPROC glad_glVDPAUGetSurfaceivNV = NULL; +PFNGLVDPAUSURFACEACCESSNVPROC glad_glVDPAUSurfaceAccessNV = NULL; +PFNGLVDPAUMAPSURFACESNVPROC glad_glVDPAUMapSurfacesNV = NULL; +PFNGLVDPAUUNMAPSURFACESNVPROC glad_glVDPAUUnmapSurfacesNV = NULL; +PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC glad_glVDPAURegisterVideoSurfaceWithPictureStructureNV = NULL; +PFNGLFLUSHVERTEXARRAYRANGENVPROC glad_glFlushVertexArrayRangeNV = NULL; +PFNGLVERTEXARRAYRANGENVPROC glad_glVertexArrayRangeNV = NULL; +PFNGLVERTEXATTRIBL1I64NVPROC glad_glVertexAttribL1i64NV = NULL; +PFNGLVERTEXATTRIBL2I64NVPROC glad_glVertexAttribL2i64NV = NULL; +PFNGLVERTEXATTRIBL3I64NVPROC glad_glVertexAttribL3i64NV = NULL; +PFNGLVERTEXATTRIBL4I64NVPROC glad_glVertexAttribL4i64NV = NULL; +PFNGLVERTEXATTRIBL1I64VNVPROC glad_glVertexAttribL1i64vNV = NULL; +PFNGLVERTEXATTRIBL2I64VNVPROC glad_glVertexAttribL2i64vNV = NULL; +PFNGLVERTEXATTRIBL3I64VNVPROC glad_glVertexAttribL3i64vNV = NULL; +PFNGLVERTEXATTRIBL4I64VNVPROC glad_glVertexAttribL4i64vNV = NULL; +PFNGLVERTEXATTRIBL1UI64NVPROC glad_glVertexAttribL1ui64NV = NULL; +PFNGLVERTEXATTRIBL2UI64NVPROC glad_glVertexAttribL2ui64NV = NULL; +PFNGLVERTEXATTRIBL3UI64NVPROC glad_glVertexAttribL3ui64NV = NULL; +PFNGLVERTEXATTRIBL4UI64NVPROC glad_glVertexAttribL4ui64NV = NULL; +PFNGLVERTEXATTRIBL1UI64VNVPROC glad_glVertexAttribL1ui64vNV = NULL; +PFNGLVERTEXATTRIBL2UI64VNVPROC glad_glVertexAttribL2ui64vNV = NULL; +PFNGLVERTEXATTRIBL3UI64VNVPROC glad_glVertexAttribL3ui64vNV = NULL; +PFNGLVERTEXATTRIBL4UI64VNVPROC glad_glVertexAttribL4ui64vNV = NULL; +PFNGLGETVERTEXATTRIBLI64VNVPROC glad_glGetVertexAttribLi64vNV = NULL; +PFNGLGETVERTEXATTRIBLUI64VNVPROC glad_glGetVertexAttribLui64vNV = NULL; +PFNGLVERTEXATTRIBLFORMATNVPROC glad_glVertexAttribLFormatNV = NULL; +PFNGLBUFFERADDRESSRANGENVPROC glad_glBufferAddressRangeNV = NULL; +PFNGLVERTEXFORMATNVPROC glad_glVertexFormatNV = NULL; +PFNGLNORMALFORMATNVPROC glad_glNormalFormatNV = NULL; +PFNGLCOLORFORMATNVPROC glad_glColorFormatNV = NULL; +PFNGLINDEXFORMATNVPROC glad_glIndexFormatNV = NULL; +PFNGLTEXCOORDFORMATNVPROC glad_glTexCoordFormatNV = NULL; +PFNGLEDGEFLAGFORMATNVPROC glad_glEdgeFlagFormatNV = NULL; +PFNGLSECONDARYCOLORFORMATNVPROC glad_glSecondaryColorFormatNV = NULL; +PFNGLFOGCOORDFORMATNVPROC glad_glFogCoordFormatNV = NULL; +PFNGLVERTEXATTRIBFORMATNVPROC glad_glVertexAttribFormatNV = NULL; +PFNGLVERTEXATTRIBIFORMATNVPROC glad_glVertexAttribIFormatNV = NULL; +PFNGLGETINTEGERUI64I_VNVPROC glad_glGetIntegerui64i_vNV = NULL; +PFNGLAREPROGRAMSRESIDENTNVPROC glad_glAreProgramsResidentNV = NULL; +PFNGLBINDPROGRAMNVPROC glad_glBindProgramNV = NULL; +PFNGLDELETEPROGRAMSNVPROC glad_glDeleteProgramsNV = NULL; +PFNGLEXECUTEPROGRAMNVPROC glad_glExecuteProgramNV = NULL; +PFNGLGENPROGRAMSNVPROC glad_glGenProgramsNV = NULL; +PFNGLGETPROGRAMPARAMETERDVNVPROC glad_glGetProgramParameterdvNV = NULL; +PFNGLGETPROGRAMPARAMETERFVNVPROC glad_glGetProgramParameterfvNV = NULL; +PFNGLGETPROGRAMIVNVPROC glad_glGetProgramivNV = NULL; +PFNGLGETPROGRAMSTRINGNVPROC glad_glGetProgramStringNV = NULL; +PFNGLGETTRACKMATRIXIVNVPROC glad_glGetTrackMatrixivNV = NULL; +PFNGLGETVERTEXATTRIBDVNVPROC glad_glGetVertexAttribdvNV = NULL; +PFNGLGETVERTEXATTRIBFVNVPROC glad_glGetVertexAttribfvNV = NULL; +PFNGLGETVERTEXATTRIBIVNVPROC glad_glGetVertexAttribivNV = NULL; +PFNGLGETVERTEXATTRIBPOINTERVNVPROC glad_glGetVertexAttribPointervNV = NULL; +PFNGLISPROGRAMNVPROC glad_glIsProgramNV = NULL; +PFNGLLOADPROGRAMNVPROC glad_glLoadProgramNV = NULL; +PFNGLPROGRAMPARAMETER4DNVPROC glad_glProgramParameter4dNV = NULL; +PFNGLPROGRAMPARAMETER4DVNVPROC glad_glProgramParameter4dvNV = NULL; +PFNGLPROGRAMPARAMETER4FNVPROC glad_glProgramParameter4fNV = NULL; +PFNGLPROGRAMPARAMETER4FVNVPROC glad_glProgramParameter4fvNV = NULL; +PFNGLPROGRAMPARAMETERS4DVNVPROC glad_glProgramParameters4dvNV = NULL; +PFNGLPROGRAMPARAMETERS4FVNVPROC glad_glProgramParameters4fvNV = NULL; +PFNGLREQUESTRESIDENTPROGRAMSNVPROC glad_glRequestResidentProgramsNV = NULL; +PFNGLTRACKMATRIXNVPROC glad_glTrackMatrixNV = NULL; +PFNGLVERTEXATTRIBPOINTERNVPROC glad_glVertexAttribPointerNV = NULL; +PFNGLVERTEXATTRIB1DNVPROC glad_glVertexAttrib1dNV = NULL; +PFNGLVERTEXATTRIB1DVNVPROC glad_glVertexAttrib1dvNV = NULL; +PFNGLVERTEXATTRIB1FNVPROC glad_glVertexAttrib1fNV = NULL; +PFNGLVERTEXATTRIB1FVNVPROC glad_glVertexAttrib1fvNV = NULL; +PFNGLVERTEXATTRIB1SNVPROC glad_glVertexAttrib1sNV = NULL; +PFNGLVERTEXATTRIB1SVNVPROC glad_glVertexAttrib1svNV = NULL; +PFNGLVERTEXATTRIB2DNVPROC glad_glVertexAttrib2dNV = NULL; +PFNGLVERTEXATTRIB2DVNVPROC glad_glVertexAttrib2dvNV = NULL; +PFNGLVERTEXATTRIB2FNVPROC glad_glVertexAttrib2fNV = NULL; +PFNGLVERTEXATTRIB2FVNVPROC glad_glVertexAttrib2fvNV = NULL; +PFNGLVERTEXATTRIB2SNVPROC glad_glVertexAttrib2sNV = NULL; +PFNGLVERTEXATTRIB2SVNVPROC glad_glVertexAttrib2svNV = NULL; +PFNGLVERTEXATTRIB3DNVPROC glad_glVertexAttrib3dNV = NULL; +PFNGLVERTEXATTRIB3DVNVPROC glad_glVertexAttrib3dvNV = NULL; +PFNGLVERTEXATTRIB3FNVPROC glad_glVertexAttrib3fNV = NULL; +PFNGLVERTEXATTRIB3FVNVPROC glad_glVertexAttrib3fvNV = NULL; +PFNGLVERTEXATTRIB3SNVPROC glad_glVertexAttrib3sNV = NULL; +PFNGLVERTEXATTRIB3SVNVPROC glad_glVertexAttrib3svNV = NULL; +PFNGLVERTEXATTRIB4DNVPROC glad_glVertexAttrib4dNV = NULL; +PFNGLVERTEXATTRIB4DVNVPROC glad_glVertexAttrib4dvNV = NULL; +PFNGLVERTEXATTRIB4FNVPROC glad_glVertexAttrib4fNV = NULL; +PFNGLVERTEXATTRIB4FVNVPROC glad_glVertexAttrib4fvNV = NULL; +PFNGLVERTEXATTRIB4SNVPROC glad_glVertexAttrib4sNV = NULL; +PFNGLVERTEXATTRIB4SVNVPROC glad_glVertexAttrib4svNV = NULL; +PFNGLVERTEXATTRIB4UBNVPROC glad_glVertexAttrib4ubNV = NULL; +PFNGLVERTEXATTRIB4UBVNVPROC glad_glVertexAttrib4ubvNV = NULL; +PFNGLVERTEXATTRIBS1DVNVPROC glad_glVertexAttribs1dvNV = NULL; +PFNGLVERTEXATTRIBS1FVNVPROC glad_glVertexAttribs1fvNV = NULL; +PFNGLVERTEXATTRIBS1SVNVPROC glad_glVertexAttribs1svNV = NULL; +PFNGLVERTEXATTRIBS2DVNVPROC glad_glVertexAttribs2dvNV = NULL; +PFNGLVERTEXATTRIBS2FVNVPROC glad_glVertexAttribs2fvNV = NULL; +PFNGLVERTEXATTRIBS2SVNVPROC glad_glVertexAttribs2svNV = NULL; +PFNGLVERTEXATTRIBS3DVNVPROC glad_glVertexAttribs3dvNV = NULL; +PFNGLVERTEXATTRIBS3FVNVPROC glad_glVertexAttribs3fvNV = NULL; +PFNGLVERTEXATTRIBS3SVNVPROC glad_glVertexAttribs3svNV = NULL; +PFNGLVERTEXATTRIBS4DVNVPROC glad_glVertexAttribs4dvNV = NULL; +PFNGLVERTEXATTRIBS4FVNVPROC glad_glVertexAttribs4fvNV = NULL; +PFNGLVERTEXATTRIBS4SVNVPROC glad_glVertexAttribs4svNV = NULL; +PFNGLVERTEXATTRIBS4UBVNVPROC glad_glVertexAttribs4ubvNV = NULL; +PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT = NULL; +PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT = NULL; +PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT = NULL; +PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT = NULL; +PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT = NULL; +PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT = NULL; +PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT = NULL; +PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT = NULL; +PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT = NULL; +PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT = NULL; +PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT = NULL; +PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT = NULL; +PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT = NULL; +PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT = NULL; +PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT = NULL; +PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT = NULL; +PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT = NULL; +PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT = NULL; +PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT = NULL; +PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT = NULL; +PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT = NULL; +PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT = NULL; +PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT = NULL; +PFNGLBEGINVIDEOCAPTURENVPROC glad_glBeginVideoCaptureNV = NULL; +PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC glad_glBindVideoCaptureStreamBufferNV = NULL; +PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC glad_glBindVideoCaptureStreamTextureNV = NULL; +PFNGLENDVIDEOCAPTURENVPROC glad_glEndVideoCaptureNV = NULL; +PFNGLGETVIDEOCAPTUREIVNVPROC glad_glGetVideoCaptureivNV = NULL; +PFNGLGETVIDEOCAPTURESTREAMIVNVPROC glad_glGetVideoCaptureStreamivNV = NULL; +PFNGLGETVIDEOCAPTURESTREAMFVNVPROC glad_glGetVideoCaptureStreamfvNV = NULL; +PFNGLGETVIDEOCAPTURESTREAMDVNVPROC glad_glGetVideoCaptureStreamdvNV = NULL; +PFNGLVIDEOCAPTURENVPROC glad_glVideoCaptureNV = NULL; +PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC glad_glVideoCaptureStreamParameterivNV = NULL; +PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC glad_glVideoCaptureStreamParameterfvNV = NULL; +PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC glad_glVideoCaptureStreamParameterdvNV = NULL; +PFNGLVIEWPORTSWIZZLENVPROC glad_glViewportSwizzleNV = NULL; +PFNGLMULTITEXCOORD1BOESPROC glad_glMultiTexCoord1bOES = NULL; +PFNGLMULTITEXCOORD1BVOESPROC glad_glMultiTexCoord1bvOES = NULL; +PFNGLMULTITEXCOORD2BOESPROC glad_glMultiTexCoord2bOES = NULL; +PFNGLMULTITEXCOORD2BVOESPROC glad_glMultiTexCoord2bvOES = NULL; +PFNGLMULTITEXCOORD3BOESPROC glad_glMultiTexCoord3bOES = NULL; +PFNGLMULTITEXCOORD3BVOESPROC glad_glMultiTexCoord3bvOES = NULL; +PFNGLMULTITEXCOORD4BOESPROC glad_glMultiTexCoord4bOES = NULL; +PFNGLMULTITEXCOORD4BVOESPROC glad_glMultiTexCoord4bvOES = NULL; +PFNGLTEXCOORD1BOESPROC glad_glTexCoord1bOES = NULL; +PFNGLTEXCOORD1BVOESPROC glad_glTexCoord1bvOES = NULL; +PFNGLTEXCOORD2BOESPROC glad_glTexCoord2bOES = NULL; +PFNGLTEXCOORD2BVOESPROC glad_glTexCoord2bvOES = NULL; +PFNGLTEXCOORD3BOESPROC glad_glTexCoord3bOES = NULL; +PFNGLTEXCOORD3BVOESPROC glad_glTexCoord3bvOES = NULL; +PFNGLTEXCOORD4BOESPROC glad_glTexCoord4bOES = NULL; +PFNGLTEXCOORD4BVOESPROC glad_glTexCoord4bvOES = NULL; +PFNGLVERTEX2BOESPROC glad_glVertex2bOES = NULL; +PFNGLVERTEX2BVOESPROC glad_glVertex2bvOES = NULL; +PFNGLVERTEX3BOESPROC glad_glVertex3bOES = NULL; +PFNGLVERTEX3BVOESPROC glad_glVertex3bvOES = NULL; +PFNGLVERTEX4BOESPROC glad_glVertex4bOES = NULL; +PFNGLVERTEX4BVOESPROC glad_glVertex4bvOES = NULL; +PFNGLALPHAFUNCXOESPROC glad_glAlphaFuncxOES = NULL; +PFNGLCLEARCOLORXOESPROC glad_glClearColorxOES = NULL; +PFNGLCLEARDEPTHXOESPROC glad_glClearDepthxOES = NULL; +PFNGLCLIPPLANEXOESPROC glad_glClipPlanexOES = NULL; +PFNGLCOLOR4XOESPROC glad_glColor4xOES = NULL; +PFNGLDEPTHRANGEXOESPROC glad_glDepthRangexOES = NULL; +PFNGLFOGXOESPROC glad_glFogxOES = NULL; +PFNGLFOGXVOESPROC glad_glFogxvOES = NULL; +PFNGLFRUSTUMXOESPROC glad_glFrustumxOES = NULL; +PFNGLGETCLIPPLANEXOESPROC glad_glGetClipPlanexOES = NULL; +PFNGLGETFIXEDVOESPROC glad_glGetFixedvOES = NULL; +PFNGLGETTEXENVXVOESPROC glad_glGetTexEnvxvOES = NULL; +PFNGLGETTEXPARAMETERXVOESPROC glad_glGetTexParameterxvOES = NULL; +PFNGLLIGHTMODELXOESPROC glad_glLightModelxOES = NULL; +PFNGLLIGHTMODELXVOESPROC glad_glLightModelxvOES = NULL; +PFNGLLIGHTXOESPROC glad_glLightxOES = NULL; +PFNGLLIGHTXVOESPROC glad_glLightxvOES = NULL; +PFNGLLINEWIDTHXOESPROC glad_glLineWidthxOES = NULL; +PFNGLLOADMATRIXXOESPROC glad_glLoadMatrixxOES = NULL; +PFNGLMATERIALXOESPROC glad_glMaterialxOES = NULL; +PFNGLMATERIALXVOESPROC glad_glMaterialxvOES = NULL; +PFNGLMULTMATRIXXOESPROC glad_glMultMatrixxOES = NULL; +PFNGLMULTITEXCOORD4XOESPROC glad_glMultiTexCoord4xOES = NULL; +PFNGLNORMAL3XOESPROC glad_glNormal3xOES = NULL; +PFNGLORTHOXOESPROC glad_glOrthoxOES = NULL; +PFNGLPOINTPARAMETERXVOESPROC glad_glPointParameterxvOES = NULL; +PFNGLPOINTSIZEXOESPROC glad_glPointSizexOES = NULL; +PFNGLPOLYGONOFFSETXOESPROC glad_glPolygonOffsetxOES = NULL; +PFNGLROTATEXOESPROC glad_glRotatexOES = NULL; +PFNGLSCALEXOESPROC glad_glScalexOES = NULL; +PFNGLTEXENVXOESPROC glad_glTexEnvxOES = NULL; +PFNGLTEXENVXVOESPROC glad_glTexEnvxvOES = NULL; +PFNGLTEXPARAMETERXOESPROC glad_glTexParameterxOES = NULL; +PFNGLTEXPARAMETERXVOESPROC glad_glTexParameterxvOES = NULL; +PFNGLTRANSLATEXOESPROC glad_glTranslatexOES = NULL; +PFNGLGETLIGHTXVOESPROC glad_glGetLightxvOES = NULL; +PFNGLGETMATERIALXVOESPROC glad_glGetMaterialxvOES = NULL; +PFNGLPOINTPARAMETERXOESPROC glad_glPointParameterxOES = NULL; +PFNGLSAMPLECOVERAGEXOESPROC glad_glSampleCoveragexOES = NULL; +PFNGLACCUMXOESPROC glad_glAccumxOES = NULL; +PFNGLBITMAPXOESPROC glad_glBitmapxOES = NULL; +PFNGLBLENDCOLORXOESPROC glad_glBlendColorxOES = NULL; +PFNGLCLEARACCUMXOESPROC glad_glClearAccumxOES = NULL; +PFNGLCOLOR3XOESPROC glad_glColor3xOES = NULL; +PFNGLCOLOR3XVOESPROC glad_glColor3xvOES = NULL; +PFNGLCOLOR4XVOESPROC glad_glColor4xvOES = NULL; +PFNGLCONVOLUTIONPARAMETERXOESPROC glad_glConvolutionParameterxOES = NULL; +PFNGLCONVOLUTIONPARAMETERXVOESPROC glad_glConvolutionParameterxvOES = NULL; +PFNGLEVALCOORD1XOESPROC glad_glEvalCoord1xOES = NULL; +PFNGLEVALCOORD1XVOESPROC glad_glEvalCoord1xvOES = NULL; +PFNGLEVALCOORD2XOESPROC glad_glEvalCoord2xOES = NULL; +PFNGLEVALCOORD2XVOESPROC glad_glEvalCoord2xvOES = NULL; +PFNGLFEEDBACKBUFFERXOESPROC glad_glFeedbackBufferxOES = NULL; +PFNGLGETCONVOLUTIONPARAMETERXVOESPROC glad_glGetConvolutionParameterxvOES = NULL; +PFNGLGETHISTOGRAMPARAMETERXVOESPROC glad_glGetHistogramParameterxvOES = NULL; +PFNGLGETLIGHTXOESPROC glad_glGetLightxOES = NULL; +PFNGLGETMAPXVOESPROC glad_glGetMapxvOES = NULL; +PFNGLGETMATERIALXOESPROC glad_glGetMaterialxOES = NULL; +PFNGLGETPIXELMAPXVPROC glad_glGetPixelMapxv = NULL; +PFNGLGETTEXGENXVOESPROC glad_glGetTexGenxvOES = NULL; +PFNGLGETTEXLEVELPARAMETERXVOESPROC glad_glGetTexLevelParameterxvOES = NULL; +PFNGLINDEXXOESPROC glad_glIndexxOES = NULL; +PFNGLINDEXXVOESPROC glad_glIndexxvOES = NULL; +PFNGLLOADTRANSPOSEMATRIXXOESPROC glad_glLoadTransposeMatrixxOES = NULL; +PFNGLMAP1XOESPROC glad_glMap1xOES = NULL; +PFNGLMAP2XOESPROC glad_glMap2xOES = NULL; +PFNGLMAPGRID1XOESPROC glad_glMapGrid1xOES = NULL; +PFNGLMAPGRID2XOESPROC glad_glMapGrid2xOES = NULL; +PFNGLMULTTRANSPOSEMATRIXXOESPROC glad_glMultTransposeMatrixxOES = NULL; +PFNGLMULTITEXCOORD1XOESPROC glad_glMultiTexCoord1xOES = NULL; +PFNGLMULTITEXCOORD1XVOESPROC glad_glMultiTexCoord1xvOES = NULL; +PFNGLMULTITEXCOORD2XOESPROC glad_glMultiTexCoord2xOES = NULL; +PFNGLMULTITEXCOORD2XVOESPROC glad_glMultiTexCoord2xvOES = NULL; +PFNGLMULTITEXCOORD3XOESPROC glad_glMultiTexCoord3xOES = NULL; +PFNGLMULTITEXCOORD3XVOESPROC glad_glMultiTexCoord3xvOES = NULL; +PFNGLMULTITEXCOORD4XVOESPROC glad_glMultiTexCoord4xvOES = NULL; +PFNGLNORMAL3XVOESPROC glad_glNormal3xvOES = NULL; +PFNGLPASSTHROUGHXOESPROC glad_glPassThroughxOES = NULL; +PFNGLPIXELMAPXPROC glad_glPixelMapx = NULL; +PFNGLPIXELSTOREXPROC glad_glPixelStorex = NULL; +PFNGLPIXELTRANSFERXOESPROC glad_glPixelTransferxOES = NULL; +PFNGLPIXELZOOMXOESPROC glad_glPixelZoomxOES = NULL; +PFNGLPRIORITIZETEXTURESXOESPROC glad_glPrioritizeTexturesxOES = NULL; +PFNGLRASTERPOS2XOESPROC glad_glRasterPos2xOES = NULL; +PFNGLRASTERPOS2XVOESPROC glad_glRasterPos2xvOES = NULL; +PFNGLRASTERPOS3XOESPROC glad_glRasterPos3xOES = NULL; +PFNGLRASTERPOS3XVOESPROC glad_glRasterPos3xvOES = NULL; +PFNGLRASTERPOS4XOESPROC glad_glRasterPos4xOES = NULL; +PFNGLRASTERPOS4XVOESPROC glad_glRasterPos4xvOES = NULL; +PFNGLRECTXOESPROC glad_glRectxOES = NULL; +PFNGLRECTXVOESPROC glad_glRectxvOES = NULL; +PFNGLTEXCOORD1XOESPROC glad_glTexCoord1xOES = NULL; +PFNGLTEXCOORD1XVOESPROC glad_glTexCoord1xvOES = NULL; +PFNGLTEXCOORD2XOESPROC glad_glTexCoord2xOES = NULL; +PFNGLTEXCOORD2XVOESPROC glad_glTexCoord2xvOES = NULL; +PFNGLTEXCOORD3XOESPROC glad_glTexCoord3xOES = NULL; +PFNGLTEXCOORD3XVOESPROC glad_glTexCoord3xvOES = NULL; +PFNGLTEXCOORD4XOESPROC glad_glTexCoord4xOES = NULL; +PFNGLTEXCOORD4XVOESPROC glad_glTexCoord4xvOES = NULL; +PFNGLTEXGENXOESPROC glad_glTexGenxOES = NULL; +PFNGLTEXGENXVOESPROC glad_glTexGenxvOES = NULL; +PFNGLVERTEX2XOESPROC glad_glVertex2xOES = NULL; +PFNGLVERTEX2XVOESPROC glad_glVertex2xvOES = NULL; +PFNGLVERTEX3XOESPROC glad_glVertex3xOES = NULL; +PFNGLVERTEX3XVOESPROC glad_glVertex3xvOES = NULL; +PFNGLVERTEX4XOESPROC glad_glVertex4xOES = NULL; +PFNGLVERTEX4XVOESPROC glad_glVertex4xvOES = NULL; +PFNGLQUERYMATRIXXOESPROC glad_glQueryMatrixxOES = NULL; +PFNGLCLEARDEPTHFOESPROC glad_glClearDepthfOES = NULL; +PFNGLCLIPPLANEFOESPROC glad_glClipPlanefOES = NULL; +PFNGLDEPTHRANGEFOESPROC glad_glDepthRangefOES = NULL; +PFNGLFRUSTUMFOESPROC glad_glFrustumfOES = NULL; +PFNGLGETCLIPPLANEFOESPROC glad_glGetClipPlanefOES = NULL; +PFNGLORTHOFOESPROC glad_glOrthofOES = NULL; +PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR = NULL; +PFNGLHINTPGIPROC glad_glHintPGI = NULL; +PFNGLDETAILTEXFUNCSGISPROC glad_glDetailTexFuncSGIS = NULL; +PFNGLGETDETAILTEXFUNCSGISPROC glad_glGetDetailTexFuncSGIS = NULL; +PFNGLFOGFUNCSGISPROC glad_glFogFuncSGIS = NULL; +PFNGLGETFOGFUNCSGISPROC glad_glGetFogFuncSGIS = NULL; +PFNGLSAMPLEMASKSGISPROC glad_glSampleMaskSGIS = NULL; +PFNGLSAMPLEPATTERNSGISPROC glad_glSamplePatternSGIS = NULL; +PFNGLPIXELTEXGENPARAMETERISGISPROC glad_glPixelTexGenParameteriSGIS = NULL; +PFNGLPIXELTEXGENPARAMETERIVSGISPROC glad_glPixelTexGenParameterivSGIS = NULL; +PFNGLPIXELTEXGENPARAMETERFSGISPROC glad_glPixelTexGenParameterfSGIS = NULL; +PFNGLPIXELTEXGENPARAMETERFVSGISPROC glad_glPixelTexGenParameterfvSGIS = NULL; +PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC glad_glGetPixelTexGenParameterivSGIS = NULL; +PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC glad_glGetPixelTexGenParameterfvSGIS = NULL; +PFNGLPOINTPARAMETERFSGISPROC glad_glPointParameterfSGIS = NULL; +PFNGLPOINTPARAMETERFVSGISPROC glad_glPointParameterfvSGIS = NULL; +PFNGLSHARPENTEXFUNCSGISPROC glad_glSharpenTexFuncSGIS = NULL; +PFNGLGETSHARPENTEXFUNCSGISPROC glad_glGetSharpenTexFuncSGIS = NULL; +PFNGLTEXIMAGE4DSGISPROC glad_glTexImage4DSGIS = NULL; +PFNGLTEXSUBIMAGE4DSGISPROC glad_glTexSubImage4DSGIS = NULL; +PFNGLTEXTURECOLORMASKSGISPROC glad_glTextureColorMaskSGIS = NULL; +PFNGLGETTEXFILTERFUNCSGISPROC glad_glGetTexFilterFuncSGIS = NULL; +PFNGLTEXFILTERFUNCSGISPROC glad_glTexFilterFuncSGIS = NULL; +PFNGLASYNCMARKERSGIXPROC glad_glAsyncMarkerSGIX = NULL; +PFNGLFINISHASYNCSGIXPROC glad_glFinishAsyncSGIX = NULL; +PFNGLPOLLASYNCSGIXPROC glad_glPollAsyncSGIX = NULL; +PFNGLGENASYNCMARKERSSGIXPROC glad_glGenAsyncMarkersSGIX = NULL; +PFNGLDELETEASYNCMARKERSSGIXPROC glad_glDeleteAsyncMarkersSGIX = NULL; +PFNGLISASYNCMARKERSGIXPROC glad_glIsAsyncMarkerSGIX = NULL; +PFNGLFLUSHRASTERSGIXPROC glad_glFlushRasterSGIX = NULL; +PFNGLFRAGMENTCOLORMATERIALSGIXPROC glad_glFragmentColorMaterialSGIX = NULL; +PFNGLFRAGMENTLIGHTFSGIXPROC glad_glFragmentLightfSGIX = NULL; +PFNGLFRAGMENTLIGHTFVSGIXPROC glad_glFragmentLightfvSGIX = NULL; +PFNGLFRAGMENTLIGHTISGIXPROC glad_glFragmentLightiSGIX = NULL; +PFNGLFRAGMENTLIGHTIVSGIXPROC glad_glFragmentLightivSGIX = NULL; +PFNGLFRAGMENTLIGHTMODELFSGIXPROC glad_glFragmentLightModelfSGIX = NULL; +PFNGLFRAGMENTLIGHTMODELFVSGIXPROC glad_glFragmentLightModelfvSGIX = NULL; +PFNGLFRAGMENTLIGHTMODELISGIXPROC glad_glFragmentLightModeliSGIX = NULL; +PFNGLFRAGMENTLIGHTMODELIVSGIXPROC glad_glFragmentLightModelivSGIX = NULL; +PFNGLFRAGMENTMATERIALFSGIXPROC glad_glFragmentMaterialfSGIX = NULL; +PFNGLFRAGMENTMATERIALFVSGIXPROC glad_glFragmentMaterialfvSGIX = NULL; +PFNGLFRAGMENTMATERIALISGIXPROC glad_glFragmentMaterialiSGIX = NULL; +PFNGLFRAGMENTMATERIALIVSGIXPROC glad_glFragmentMaterialivSGIX = NULL; +PFNGLGETFRAGMENTLIGHTFVSGIXPROC glad_glGetFragmentLightfvSGIX = NULL; +PFNGLGETFRAGMENTLIGHTIVSGIXPROC glad_glGetFragmentLightivSGIX = NULL; +PFNGLGETFRAGMENTMATERIALFVSGIXPROC glad_glGetFragmentMaterialfvSGIX = NULL; +PFNGLGETFRAGMENTMATERIALIVSGIXPROC glad_glGetFragmentMaterialivSGIX = NULL; +PFNGLLIGHTENVISGIXPROC glad_glLightEnviSGIX = NULL; +PFNGLFRAMEZOOMSGIXPROC glad_glFrameZoomSGIX = NULL; +PFNGLIGLOOINTERFACESGIXPROC glad_glIglooInterfaceSGIX = NULL; +PFNGLGETINSTRUMENTSSGIXPROC glad_glGetInstrumentsSGIX = NULL; +PFNGLINSTRUMENTSBUFFERSGIXPROC glad_glInstrumentsBufferSGIX = NULL; +PFNGLPOLLINSTRUMENTSSGIXPROC glad_glPollInstrumentsSGIX = NULL; +PFNGLREADINSTRUMENTSSGIXPROC glad_glReadInstrumentsSGIX = NULL; +PFNGLSTARTINSTRUMENTSSGIXPROC glad_glStartInstrumentsSGIX = NULL; +PFNGLSTOPINSTRUMENTSSGIXPROC glad_glStopInstrumentsSGIX = NULL; +PFNGLGETLISTPARAMETERFVSGIXPROC glad_glGetListParameterfvSGIX = NULL; +PFNGLGETLISTPARAMETERIVSGIXPROC glad_glGetListParameterivSGIX = NULL; +PFNGLLISTPARAMETERFSGIXPROC glad_glListParameterfSGIX = NULL; +PFNGLLISTPARAMETERFVSGIXPROC glad_glListParameterfvSGIX = NULL; +PFNGLLISTPARAMETERISGIXPROC glad_glListParameteriSGIX = NULL; +PFNGLLISTPARAMETERIVSGIXPROC glad_glListParameterivSGIX = NULL; +PFNGLPIXELTEXGENSGIXPROC glad_glPixelTexGenSGIX = NULL; +PFNGLDEFORMATIONMAP3DSGIXPROC glad_glDeformationMap3dSGIX = NULL; +PFNGLDEFORMATIONMAP3FSGIXPROC glad_glDeformationMap3fSGIX = NULL; +PFNGLDEFORMSGIXPROC glad_glDeformSGIX = NULL; +PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC glad_glLoadIdentityDeformationMapSGIX = NULL; +PFNGLREFERENCEPLANESGIXPROC glad_glReferencePlaneSGIX = NULL; +PFNGLSPRITEPARAMETERFSGIXPROC glad_glSpriteParameterfSGIX = NULL; +PFNGLSPRITEPARAMETERFVSGIXPROC glad_glSpriteParameterfvSGIX = NULL; +PFNGLSPRITEPARAMETERISGIXPROC glad_glSpriteParameteriSGIX = NULL; +PFNGLSPRITEPARAMETERIVSGIXPROC glad_glSpriteParameterivSGIX = NULL; +PFNGLTAGSAMPLEBUFFERSGIXPROC glad_glTagSampleBufferSGIX = NULL; +PFNGLCOLORTABLESGIPROC glad_glColorTableSGI = NULL; +PFNGLCOLORTABLEPARAMETERFVSGIPROC glad_glColorTableParameterfvSGI = NULL; +PFNGLCOLORTABLEPARAMETERIVSGIPROC glad_glColorTableParameterivSGI = NULL; +PFNGLCOPYCOLORTABLESGIPROC glad_glCopyColorTableSGI = NULL; +PFNGLGETCOLORTABLESGIPROC glad_glGetColorTableSGI = NULL; +PFNGLGETCOLORTABLEPARAMETERFVSGIPROC glad_glGetColorTableParameterfvSGI = NULL; +PFNGLGETCOLORTABLEPARAMETERIVSGIPROC glad_glGetColorTableParameterivSGI = NULL; +PFNGLFINISHTEXTURESUNXPROC glad_glFinishTextureSUNX = NULL; +PFNGLGLOBALALPHAFACTORBSUNPROC glad_glGlobalAlphaFactorbSUN = NULL; +PFNGLGLOBALALPHAFACTORSSUNPROC glad_glGlobalAlphaFactorsSUN = NULL; +PFNGLGLOBALALPHAFACTORISUNPROC glad_glGlobalAlphaFactoriSUN = NULL; +PFNGLGLOBALALPHAFACTORFSUNPROC glad_glGlobalAlphaFactorfSUN = NULL; +PFNGLGLOBALALPHAFACTORDSUNPROC glad_glGlobalAlphaFactordSUN = NULL; +PFNGLGLOBALALPHAFACTORUBSUNPROC glad_glGlobalAlphaFactorubSUN = NULL; +PFNGLGLOBALALPHAFACTORUSSUNPROC glad_glGlobalAlphaFactorusSUN = NULL; +PFNGLGLOBALALPHAFACTORUISUNPROC glad_glGlobalAlphaFactoruiSUN = NULL; +PFNGLDRAWMESHARRAYSSUNPROC glad_glDrawMeshArraysSUN = NULL; +PFNGLREPLACEMENTCODEUISUNPROC glad_glReplacementCodeuiSUN = NULL; +PFNGLREPLACEMENTCODEUSSUNPROC glad_glReplacementCodeusSUN = NULL; +PFNGLREPLACEMENTCODEUBSUNPROC glad_glReplacementCodeubSUN = NULL; +PFNGLREPLACEMENTCODEUIVSUNPROC glad_glReplacementCodeuivSUN = NULL; +PFNGLREPLACEMENTCODEUSVSUNPROC glad_glReplacementCodeusvSUN = NULL; +PFNGLREPLACEMENTCODEUBVSUNPROC glad_glReplacementCodeubvSUN = NULL; +PFNGLREPLACEMENTCODEPOINTERSUNPROC glad_glReplacementCodePointerSUN = NULL; +PFNGLCOLOR4UBVERTEX2FSUNPROC glad_glColor4ubVertex2fSUN = NULL; +PFNGLCOLOR4UBVERTEX2FVSUNPROC glad_glColor4ubVertex2fvSUN = NULL; +PFNGLCOLOR4UBVERTEX3FSUNPROC glad_glColor4ubVertex3fSUN = NULL; +PFNGLCOLOR4UBVERTEX3FVSUNPROC glad_glColor4ubVertex3fvSUN = NULL; +PFNGLCOLOR3FVERTEX3FSUNPROC glad_glColor3fVertex3fSUN = NULL; +PFNGLCOLOR3FVERTEX3FVSUNPROC glad_glColor3fVertex3fvSUN = NULL; +PFNGLNORMAL3FVERTEX3FSUNPROC glad_glNormal3fVertex3fSUN = NULL; +PFNGLNORMAL3FVERTEX3FVSUNPROC glad_glNormal3fVertex3fvSUN = NULL; +PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glColor4fNormal3fVertex3fSUN = NULL; +PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glColor4fNormal3fVertex3fvSUN = NULL; +PFNGLTEXCOORD2FVERTEX3FSUNPROC glad_glTexCoord2fVertex3fSUN = NULL; +PFNGLTEXCOORD2FVERTEX3FVSUNPROC glad_glTexCoord2fVertex3fvSUN = NULL; +PFNGLTEXCOORD4FVERTEX4FSUNPROC glad_glTexCoord4fVertex4fSUN = NULL; +PFNGLTEXCOORD4FVERTEX4FVSUNPROC glad_glTexCoord4fVertex4fvSUN = NULL; +PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC glad_glTexCoord2fColor4ubVertex3fSUN = NULL; +PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC glad_glTexCoord2fColor4ubVertex3fvSUN = NULL; +PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC glad_glTexCoord2fColor3fVertex3fSUN = NULL; +PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC glad_glTexCoord2fColor3fVertex3fvSUN = NULL; +PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fNormal3fVertex3fSUN = NULL; +PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fNormal3fVertex3fvSUN = NULL; +PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fSUN = NULL; +PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fvSUN = NULL; +PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fSUN = NULL; +PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fvSUN = NULL; +PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC glad_glReplacementCodeuiVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC glad_glReplacementCodeuiVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC glad_glReplacementCodeuiColor4ubVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4ubVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor3fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiNormal3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiNormal3fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = NULL; +static void load_GL_VERSION_1_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_0) return; + glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); + glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); + glad_glHint = (PFNGLHINTPROC)load("glHint"); + glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); + glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); + glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); + glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); + glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); + glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); + glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); + glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); + glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); + glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); + glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); + glad_glClear = (PFNGLCLEARPROC)load("glClear"); + glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); + glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); + glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); + glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); + glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); + glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); + glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); + glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); + glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); + glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); + glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); + glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); + glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); + glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); + glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); + glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); + glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); + glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); + glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); + glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); + glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); + glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); + glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); + glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); + glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); + glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); + glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); + glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); + glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); + glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); + glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); + glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); +} +static void load_GL_VERSION_1_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_1) return; + glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); + glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); + glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); + glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); + glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); + glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); + glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); + glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); + glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); + glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); + glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); + glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); + glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); +} +static void load_GL_VERSION_1_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_2) return; + glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); + glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); + glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); + glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); +} +static void load_GL_VERSION_1_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_3) return; + glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); + glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); + glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); + glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); + glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); + glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); + glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); + glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); + glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); +} +static void load_GL_VERSION_1_4(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_4) return; + glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); + glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); + glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); + glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); + glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); + glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); + glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); +} +static void load_GL_VERSION_1_5(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_5) return; + glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); + glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); + glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); + glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); + glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); + glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); + glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); + glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); + glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); + glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); + glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); + glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); + glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); + glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); + glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); + glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); + glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); + glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); + glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); +} +static void load_GL_VERSION_2_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_0) return; + glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); + glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); + glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); + glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); + glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); + glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); + glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); + glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); + glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); + glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); + glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); + glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); + glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); + glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); + glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); + glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); + glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); + glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); + glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); + glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); + glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); + glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); + glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); + glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); + glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); + glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); + glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); + glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); + glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); + glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); + glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); + glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); + glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); + glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); + glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); + glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); + glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); + glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); + glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); + glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); + glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); + glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); + glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); + glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); + glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); + glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); + glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); + glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); + glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); + glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); + glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); + glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); + glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); + glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); + glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); + glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); + glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); + glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); + glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); + glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); + glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); + glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); + glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); + glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); + glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); + glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); + glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); + glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); + glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); + glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); + glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); + glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); + glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); + glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); + glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); + glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); + glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); + glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); + glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); + glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); + glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); + glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); + glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); + glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); + glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); + glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); + glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); + glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); + glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); + glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); + glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); + glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); + glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); +} +static void load_GL_VERSION_2_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_1) return; + glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); + glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); + glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); + glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); + glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); + glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); +} +static void load_GL_VERSION_3_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_0) return; + glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); + glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); + glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); + glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); + glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); + glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); + glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); + glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); + glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); + glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); + glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); + glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); + glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); + glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); + glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); + glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); + glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); + glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); + glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); + glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); + glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); + glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); + glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); + glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); + glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); + glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); + glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); + glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); + glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); + glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); + glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); + glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); + glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); + glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); + glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); + glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); + glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); + glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); + glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); + glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); + glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); + glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); + glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); + glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); + glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); + glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); + glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); + glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); + glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); + glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); + glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); + glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); + glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); + glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_VERSION_3_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_1) return; + glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); + glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); + glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); + glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); +} +static void load_GL_VERSION_3_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_2) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); + glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); + glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); + glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_VERSION_3_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_3) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); + glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); + glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); + glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); + glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); + glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); + glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); + glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); + glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); + glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); + glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); + glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); + glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); + glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); + glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); +} +static void load_GL_VERSION_4_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_4_0) return; + glad_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load("glMinSampleShading"); + glad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load("glBlendEquationi"); + glad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load("glBlendEquationSeparatei"); + glad_glBlendFunci = (PFNGLBLENDFUNCIPROC)load("glBlendFunci"); + glad_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)load("glBlendFuncSeparatei"); + glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); + glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); + glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); + glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); + glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); + glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); + glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); + glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); + glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); + glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); + glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); + glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); + glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); + glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); + glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); + glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); + glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); + glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); + glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); + glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); + glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); + glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); + glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); + glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); + glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); + glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); + glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); + glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); + glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); + glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); + glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); + glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); + glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); + glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); + glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); + glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); + glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); + glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); + glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); + glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); + glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); +} +static void load_GL_VERSION_4_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_4_1) return; + glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); + glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); + glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); + glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); + glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); + glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); + glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); + glad_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)load("glUseProgramStages"); + glad_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)load("glActiveShaderProgram"); + glad_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)load("glCreateShaderProgramv"); + glad_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)load("glBindProgramPipeline"); + glad_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)load("glDeleteProgramPipelines"); + glad_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)load("glGenProgramPipelines"); + glad_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)load("glIsProgramPipeline"); + glad_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)load("glGetProgramPipelineiv"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); + glad_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)load("glProgramUniform1i"); + glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); + glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); + glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); + glad_glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)load("glProgramUniform1d"); + glad_glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)load("glProgramUniform1dv"); + glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); + glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); + glad_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); + glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); + glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); + glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); + glad_glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)load("glProgramUniform2d"); + glad_glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)load("glProgramUniform2dv"); + glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); + glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); + glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); + glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); + glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); + glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); + glad_glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)load("glProgramUniform3d"); + glad_glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)load("glProgramUniform3dv"); + glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); + glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); + glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); + glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); + glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); + glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); + glad_glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)load("glProgramUniform4d"); + glad_glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)load("glProgramUniform4dv"); + glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); + glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); + glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); + glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); + glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); + glad_glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)load("glProgramUniformMatrix2dv"); + glad_glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)load("glProgramUniformMatrix3dv"); + glad_glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)load("glProgramUniformMatrix4dv"); + glad_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)load("glProgramUniformMatrix2x3fv"); + glad_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)load("glProgramUniformMatrix3x2fv"); + glad_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)load("glProgramUniformMatrix2x4fv"); + glad_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)load("glProgramUniformMatrix4x2fv"); + glad_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)load("glProgramUniformMatrix3x4fv"); + glad_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)load("glProgramUniformMatrix4x3fv"); + glad_glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)load("glProgramUniformMatrix2x3dv"); + glad_glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)load("glProgramUniformMatrix3x2dv"); + glad_glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)load("glProgramUniformMatrix2x4dv"); + glad_glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)load("glProgramUniformMatrix4x2dv"); + glad_glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)load("glProgramUniformMatrix3x4dv"); + glad_glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)load("glProgramUniformMatrix4x3dv"); + glad_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); + glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); + glad_glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)load("glVertexAttribL1d"); + glad_glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)load("glVertexAttribL2d"); + glad_glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)load("glVertexAttribL3d"); + glad_glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)load("glVertexAttribL4d"); + glad_glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)load("glVertexAttribL1dv"); + glad_glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)load("glVertexAttribL2dv"); + glad_glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)load("glVertexAttribL3dv"); + glad_glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)load("glVertexAttribL4dv"); + glad_glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)load("glVertexAttribLPointer"); + glad_glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)load("glGetVertexAttribLdv"); + glad_glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)load("glViewportArrayv"); + glad_glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)load("glViewportIndexedf"); + glad_glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)load("glViewportIndexedfv"); + glad_glScissorArrayv = (PFNGLSCISSORARRAYVPROC)load("glScissorArrayv"); + glad_glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)load("glScissorIndexed"); + glad_glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)load("glScissorIndexedv"); + glad_glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)load("glDepthRangeArrayv"); + glad_glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)load("glDepthRangeIndexed"); + glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); + glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); +} +static void load_GL_3DFX_tbuffer(GLADloadproc load) { + if(!GLAD_GL_3DFX_tbuffer) return; + glad_glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)load("glTbufferMask3DFX"); +} +static void load_GL_AMD_debug_output(GLADloadproc load) { + if(!GLAD_GL_AMD_debug_output) return; + glad_glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)load("glDebugMessageEnableAMD"); + glad_glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)load("glDebugMessageInsertAMD"); + glad_glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)load("glDebugMessageCallbackAMD"); + glad_glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)load("glGetDebugMessageLogAMD"); +} +static void load_GL_AMD_draw_buffers_blend(GLADloadproc load) { + if(!GLAD_GL_AMD_draw_buffers_blend) return; + glad_glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)load("glBlendFuncIndexedAMD"); + glad_glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)load("glBlendFuncSeparateIndexedAMD"); + glad_glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)load("glBlendEquationIndexedAMD"); + glad_glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)load("glBlendEquationSeparateIndexedAMD"); +} +static void load_GL_AMD_framebuffer_multisample_advanced(GLADloadproc load) { + if(!GLAD_GL_AMD_framebuffer_multisample_advanced) return; + glad_glRenderbufferStorageMultisampleAdvancedAMD = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)load("glRenderbufferStorageMultisampleAdvancedAMD"); + glad_glNamedRenderbufferStorageMultisampleAdvancedAMD = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)load("glNamedRenderbufferStorageMultisampleAdvancedAMD"); +} +static void load_GL_AMD_framebuffer_sample_positions(GLADloadproc load) { + if(!GLAD_GL_AMD_framebuffer_sample_positions) return; + glad_glFramebufferSamplePositionsfvAMD = (PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)load("glFramebufferSamplePositionsfvAMD"); + glad_glNamedFramebufferSamplePositionsfvAMD = (PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)load("glNamedFramebufferSamplePositionsfvAMD"); + glad_glGetFramebufferParameterfvAMD = (PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)load("glGetFramebufferParameterfvAMD"); + glad_glGetNamedFramebufferParameterfvAMD = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)load("glGetNamedFramebufferParameterfvAMD"); +} +static void load_GL_AMD_gpu_shader_int64(GLADloadproc load) { + if(!GLAD_GL_AMD_gpu_shader_int64) return; + glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); + glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); + glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); + glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); + glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); + glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); + glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); + glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); + glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); + glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); + glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); + glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); + glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); + glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); + glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); + glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); + glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); + glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); + glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); + glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); + glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); + glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); + glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); + glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); + glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); + glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); + glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); + glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); + glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); + glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); + glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); + glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); + glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); + glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); +} +static void load_GL_AMD_interleaved_elements(GLADloadproc load) { + if(!GLAD_GL_AMD_interleaved_elements) return; + glad_glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)load("glVertexAttribParameteriAMD"); +} +static void load_GL_AMD_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_AMD_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)load("glMultiDrawArraysIndirectAMD"); + glad_glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)load("glMultiDrawElementsIndirectAMD"); +} +static void load_GL_AMD_name_gen_delete(GLADloadproc load) { + if(!GLAD_GL_AMD_name_gen_delete) return; + glad_glGenNamesAMD = (PFNGLGENNAMESAMDPROC)load("glGenNamesAMD"); + glad_glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)load("glDeleteNamesAMD"); + glad_glIsNameAMD = (PFNGLISNAMEAMDPROC)load("glIsNameAMD"); +} +static void load_GL_AMD_occlusion_query_event(GLADloadproc load) { + if(!GLAD_GL_AMD_occlusion_query_event) return; + glad_glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)load("glQueryObjectParameteruiAMD"); +} +static void load_GL_AMD_performance_monitor(GLADloadproc load) { + if(!GLAD_GL_AMD_performance_monitor) return; + glad_glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)load("glGetPerfMonitorGroupsAMD"); + glad_glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)load("glGetPerfMonitorCountersAMD"); + glad_glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)load("glGetPerfMonitorGroupStringAMD"); + glad_glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)load("glGetPerfMonitorCounterStringAMD"); + glad_glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)load("glGetPerfMonitorCounterInfoAMD"); + glad_glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)load("glGenPerfMonitorsAMD"); + glad_glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)load("glDeletePerfMonitorsAMD"); + glad_glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)load("glSelectPerfMonitorCountersAMD"); + glad_glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)load("glBeginPerfMonitorAMD"); + glad_glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)load("glEndPerfMonitorAMD"); + glad_glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)load("glGetPerfMonitorCounterDataAMD"); +} +static void load_GL_AMD_sample_positions(GLADloadproc load) { + if(!GLAD_GL_AMD_sample_positions) return; + glad_glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)load("glSetMultisamplefvAMD"); +} +static void load_GL_AMD_sparse_texture(GLADloadproc load) { + if(!GLAD_GL_AMD_sparse_texture) return; + glad_glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)load("glTexStorageSparseAMD"); + glad_glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)load("glTextureStorageSparseAMD"); +} +static void load_GL_AMD_stencil_operation_extended(GLADloadproc load) { + if(!GLAD_GL_AMD_stencil_operation_extended) return; + glad_glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)load("glStencilOpValueAMD"); +} +static void load_GL_AMD_vertex_shader_tessellator(GLADloadproc load) { + if(!GLAD_GL_AMD_vertex_shader_tessellator) return; + glad_glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)load("glTessellationFactorAMD"); + glad_glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)load("glTessellationModeAMD"); +} +static void load_GL_APPLE_element_array(GLADloadproc load) { + if(!GLAD_GL_APPLE_element_array) return; + glad_glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)load("glElementPointerAPPLE"); + glad_glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)load("glDrawElementArrayAPPLE"); + glad_glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)load("glDrawRangeElementArrayAPPLE"); + glad_glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)load("glMultiDrawElementArrayAPPLE"); + glad_glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)load("glMultiDrawRangeElementArrayAPPLE"); +} +static void load_GL_APPLE_fence(GLADloadproc load) { + if(!GLAD_GL_APPLE_fence) return; + glad_glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)load("glGenFencesAPPLE"); + glad_glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)load("glDeleteFencesAPPLE"); + glad_glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)load("glSetFenceAPPLE"); + glad_glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)load("glIsFenceAPPLE"); + glad_glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)load("glTestFenceAPPLE"); + glad_glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)load("glFinishFenceAPPLE"); + glad_glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)load("glTestObjectAPPLE"); + glad_glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)load("glFinishObjectAPPLE"); +} +static void load_GL_APPLE_flush_buffer_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_flush_buffer_range) return; + glad_glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)load("glBufferParameteriAPPLE"); + glad_glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)load("glFlushMappedBufferRangeAPPLE"); +} +static void load_GL_APPLE_object_purgeable(GLADloadproc load) { + if(!GLAD_GL_APPLE_object_purgeable) return; + glad_glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)load("glObjectPurgeableAPPLE"); + glad_glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)load("glObjectUnpurgeableAPPLE"); + glad_glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)load("glGetObjectParameterivAPPLE"); +} +static void load_GL_APPLE_texture_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_texture_range) return; + glad_glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)load("glTextureRangeAPPLE"); + glad_glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)load("glGetTexParameterPointervAPPLE"); +} +static void load_GL_APPLE_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_array_object) return; + glad_glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)load("glBindVertexArrayAPPLE"); + glad_glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)load("glDeleteVertexArraysAPPLE"); + glad_glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)load("glGenVertexArraysAPPLE"); + glad_glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)load("glIsVertexArrayAPPLE"); +} +static void load_GL_APPLE_vertex_array_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_array_range) return; + glad_glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)load("glVertexArrayRangeAPPLE"); + glad_glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)load("glFlushVertexArrayRangeAPPLE"); + glad_glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)load("glVertexArrayParameteriAPPLE"); +} +static void load_GL_APPLE_vertex_program_evaluators(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_program_evaluators) return; + glad_glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)load("glEnableVertexAttribAPPLE"); + glad_glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)load("glDisableVertexAttribAPPLE"); + glad_glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)load("glIsVertexAttribEnabledAPPLE"); + glad_glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)load("glMapVertexAttrib1dAPPLE"); + glad_glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)load("glMapVertexAttrib1fAPPLE"); + glad_glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)load("glMapVertexAttrib2dAPPLE"); + glad_glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)load("glMapVertexAttrib2fAPPLE"); +} +static void load_GL_ARB_ES2_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES2_compatibility) return; + glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); + glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); + glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); + glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); + glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); +} +static void load_GL_ARB_ES3_1_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES3_1_compatibility) return; + glad_glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)load("glMemoryBarrierByRegion"); +} +static void load_GL_ARB_ES3_2_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES3_2_compatibility) return; + glad_glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)load("glPrimitiveBoundingBoxARB"); +} +static void load_GL_ARB_base_instance(GLADloadproc load) { + if(!GLAD_GL_ARB_base_instance) return; + glad_glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)load("glDrawArraysInstancedBaseInstance"); + glad_glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)load("glDrawElementsInstancedBaseInstance"); + glad_glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)load("glDrawElementsInstancedBaseVertexBaseInstance"); +} +static void load_GL_ARB_bindless_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_bindless_texture) return; + glad_glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)load("glGetTextureHandleARB"); + glad_glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)load("glGetTextureSamplerHandleARB"); + glad_glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)load("glMakeTextureHandleResidentARB"); + glad_glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)load("glMakeTextureHandleNonResidentARB"); + glad_glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)load("glGetImageHandleARB"); + glad_glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)load("glMakeImageHandleResidentARB"); + glad_glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)load("glMakeImageHandleNonResidentARB"); + glad_glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)load("glUniformHandleui64ARB"); + glad_glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)load("glUniformHandleui64vARB"); + glad_glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)load("glProgramUniformHandleui64ARB"); + glad_glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)load("glProgramUniformHandleui64vARB"); + glad_glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)load("glIsTextureHandleResidentARB"); + glad_glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)load("glIsImageHandleResidentARB"); + glad_glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)load("glVertexAttribL1ui64ARB"); + glad_glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)load("glVertexAttribL1ui64vARB"); + glad_glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)load("glGetVertexAttribLui64vARB"); +} +static void load_GL_ARB_blend_func_extended(GLADloadproc load) { + if(!GLAD_GL_ARB_blend_func_extended) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); +} +static void load_GL_ARB_buffer_storage(GLADloadproc load) { + if(!GLAD_GL_ARB_buffer_storage) return; + glad_glBufferStorage = (PFNGLBUFFERSTORAGEPROC)load("glBufferStorage"); +} +static void load_GL_ARB_cl_event(GLADloadproc load) { + if(!GLAD_GL_ARB_cl_event) return; + glad_glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)load("glCreateSyncFromCLeventARB"); +} +static void load_GL_ARB_clear_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_clear_buffer_object) return; + glad_glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)load("glClearBufferData"); + glad_glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)load("glClearBufferSubData"); +} +static void load_GL_ARB_clear_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_clear_texture) return; + glad_glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)load("glClearTexImage"); + glad_glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)load("glClearTexSubImage"); +} +static void load_GL_ARB_clip_control(GLADloadproc load) { + if(!GLAD_GL_ARB_clip_control) return; + glad_glClipControl = (PFNGLCLIPCONTROLPROC)load("glClipControl"); +} +static void load_GL_ARB_color_buffer_float(GLADloadproc load) { + if(!GLAD_GL_ARB_color_buffer_float) return; + glad_glClampColorARB = (PFNGLCLAMPCOLORARBPROC)load("glClampColorARB"); +} +static void load_GL_ARB_compute_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_compute_shader) return; + glad_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)load("glDispatchCompute"); + glad_glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)load("glDispatchComputeIndirect"); +} +static void load_GL_ARB_compute_variable_group_size(GLADloadproc load) { + if(!GLAD_GL_ARB_compute_variable_group_size) return; + glad_glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)load("glDispatchComputeGroupSizeARB"); +} +static void load_GL_ARB_copy_buffer(GLADloadproc load) { + if(!GLAD_GL_ARB_copy_buffer) return; + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); +} +static void load_GL_ARB_copy_image(GLADloadproc load) { + if(!GLAD_GL_ARB_copy_image) return; + glad_glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)load("glCopyImageSubData"); +} +static void load_GL_ARB_debug_output(GLADloadproc load) { + if(!GLAD_GL_ARB_debug_output) return; + glad_glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)load("glDebugMessageControlARB"); + glad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)load("glDebugMessageInsertARB"); + glad_glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)load("glDebugMessageCallbackARB"); + glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)load("glGetDebugMessageLogARB"); +} +static void load_GL_ARB_direct_state_access(GLADloadproc load) { + if(!GLAD_GL_ARB_direct_state_access) return; + glad_glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)load("glCreateTransformFeedbacks"); + glad_glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)load("glTransformFeedbackBufferBase"); + glad_glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)load("glTransformFeedbackBufferRange"); + glad_glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)load("glGetTransformFeedbackiv"); + glad_glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)load("glGetTransformFeedbacki_v"); + glad_glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)load("glGetTransformFeedbacki64_v"); + glad_glCreateBuffers = (PFNGLCREATEBUFFERSPROC)load("glCreateBuffers"); + glad_glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)load("glNamedBufferStorage"); + glad_glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)load("glNamedBufferData"); + glad_glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)load("glNamedBufferSubData"); + glad_glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)load("glCopyNamedBufferSubData"); + glad_glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)load("glClearNamedBufferData"); + glad_glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)load("glClearNamedBufferSubData"); + glad_glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)load("glMapNamedBuffer"); + glad_glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)load("glMapNamedBufferRange"); + glad_glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)load("glUnmapNamedBuffer"); + glad_glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)load("glFlushMappedNamedBufferRange"); + glad_glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)load("glGetNamedBufferParameteriv"); + glad_glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)load("glGetNamedBufferParameteri64v"); + glad_glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)load("glGetNamedBufferPointerv"); + glad_glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)load("glGetNamedBufferSubData"); + glad_glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)load("glCreateFramebuffers"); + glad_glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)load("glNamedFramebufferRenderbuffer"); + glad_glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)load("glNamedFramebufferParameteri"); + glad_glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)load("glNamedFramebufferTexture"); + glad_glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)load("glNamedFramebufferTextureLayer"); + glad_glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)load("glNamedFramebufferDrawBuffer"); + glad_glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)load("glNamedFramebufferDrawBuffers"); + glad_glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)load("glNamedFramebufferReadBuffer"); + glad_glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)load("glInvalidateNamedFramebufferData"); + glad_glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)load("glInvalidateNamedFramebufferSubData"); + glad_glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)load("glClearNamedFramebufferiv"); + glad_glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)load("glClearNamedFramebufferuiv"); + glad_glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)load("glClearNamedFramebufferfv"); + glad_glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)load("glClearNamedFramebufferfi"); + glad_glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)load("glBlitNamedFramebuffer"); + glad_glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)load("glCheckNamedFramebufferStatus"); + glad_glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)load("glGetNamedFramebufferParameteriv"); + glad_glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetNamedFramebufferAttachmentParameteriv"); + glad_glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)load("glCreateRenderbuffers"); + glad_glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)load("glNamedRenderbufferStorage"); + glad_glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glNamedRenderbufferStorageMultisample"); + glad_glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)load("glGetNamedRenderbufferParameteriv"); + glad_glCreateTextures = (PFNGLCREATETEXTURESPROC)load("glCreateTextures"); + glad_glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)load("glTextureBuffer"); + glad_glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)load("glTextureBufferRange"); + glad_glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)load("glTextureStorage1D"); + glad_glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)load("glTextureStorage2D"); + glad_glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)load("glTextureStorage3D"); + glad_glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)load("glTextureStorage2DMultisample"); + glad_glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)load("glTextureStorage3DMultisample"); + glad_glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)load("glTextureSubImage1D"); + glad_glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)load("glTextureSubImage2D"); + glad_glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)load("glTextureSubImage3D"); + glad_glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)load("glCompressedTextureSubImage1D"); + glad_glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)load("glCompressedTextureSubImage2D"); + glad_glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)load("glCompressedTextureSubImage3D"); + glad_glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)load("glCopyTextureSubImage1D"); + glad_glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)load("glCopyTextureSubImage2D"); + glad_glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)load("glCopyTextureSubImage3D"); + glad_glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)load("glTextureParameterf"); + glad_glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)load("glTextureParameterfv"); + glad_glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)load("glTextureParameteri"); + glad_glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)load("glTextureParameterIiv"); + glad_glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)load("glTextureParameterIuiv"); + glad_glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)load("glTextureParameteriv"); + glad_glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)load("glGenerateTextureMipmap"); + glad_glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)load("glBindTextureUnit"); + glad_glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)load("glGetTextureImage"); + glad_glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)load("glGetCompressedTextureImage"); + glad_glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)load("glGetTextureLevelParameterfv"); + glad_glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)load("glGetTextureLevelParameteriv"); + glad_glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)load("glGetTextureParameterfv"); + glad_glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)load("glGetTextureParameterIiv"); + glad_glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)load("glGetTextureParameterIuiv"); + glad_glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)load("glGetTextureParameteriv"); + glad_glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)load("glCreateVertexArrays"); + glad_glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)load("glDisableVertexArrayAttrib"); + glad_glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)load("glEnableVertexArrayAttrib"); + glad_glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)load("glVertexArrayElementBuffer"); + glad_glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)load("glVertexArrayVertexBuffer"); + glad_glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)load("glVertexArrayVertexBuffers"); + glad_glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)load("glVertexArrayAttribBinding"); + glad_glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)load("glVertexArrayAttribFormat"); + glad_glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)load("glVertexArrayAttribIFormat"); + glad_glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)load("glVertexArrayAttribLFormat"); + glad_glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)load("glVertexArrayBindingDivisor"); + glad_glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)load("glGetVertexArrayiv"); + glad_glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)load("glGetVertexArrayIndexediv"); + glad_glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)load("glGetVertexArrayIndexed64iv"); + glad_glCreateSamplers = (PFNGLCREATESAMPLERSPROC)load("glCreateSamplers"); + glad_glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)load("glCreateProgramPipelines"); + glad_glCreateQueries = (PFNGLCREATEQUERIESPROC)load("glCreateQueries"); + glad_glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)load("glGetQueryBufferObjecti64v"); + glad_glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)load("glGetQueryBufferObjectiv"); + glad_glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)load("glGetQueryBufferObjectui64v"); + glad_glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)load("glGetQueryBufferObjectuiv"); +} +static void load_GL_ARB_draw_buffers(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_buffers) return; + glad_glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)load("glDrawBuffersARB"); +} +static void load_GL_ARB_draw_buffers_blend(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_buffers_blend) return; + glad_glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)load("glBlendEquationiARB"); + glad_glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)load("glBlendEquationSeparateiARB"); + glad_glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)load("glBlendFunciARB"); + glad_glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)load("glBlendFuncSeparateiARB"); +} +static void load_GL_ARB_draw_elements_base_vertex(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_elements_base_vertex) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); +} +static void load_GL_ARB_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_indirect) return; + glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); + glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); +} +static void load_GL_ARB_draw_instanced(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_instanced) return; + glad_glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)load("glDrawArraysInstancedARB"); + glad_glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)load("glDrawElementsInstancedARB"); +} +static void load_GL_ARB_fragment_program(GLADloadproc load) { + if(!GLAD_GL_ARB_fragment_program) return; + glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); + glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); + glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); + glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); + glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); + glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); + glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); + glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); + glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); + glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); + glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); + glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); + glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); + glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); + glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); + glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); + glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); + glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); + glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); +} +static void load_GL_ARB_framebuffer_no_attachments(GLADloadproc load) { + if(!GLAD_GL_ARB_framebuffer_no_attachments) return; + glad_glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)load("glFramebufferParameteri"); + glad_glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)load("glGetFramebufferParameteriv"); +} +static void load_GL_ARB_framebuffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_framebuffer_object) return; + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); +} +static void load_GL_ARB_geometry_shader4(GLADloadproc load) { + if(!GLAD_GL_ARB_geometry_shader4) return; + glad_glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)load("glProgramParameteriARB"); + glad_glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)load("glFramebufferTextureARB"); + glad_glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)load("glFramebufferTextureLayerARB"); + glad_glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)load("glFramebufferTextureFaceARB"); +} +static void load_GL_ARB_get_program_binary(GLADloadproc load) { + if(!GLAD_GL_ARB_get_program_binary) return; + glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); + glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); +} +static void load_GL_ARB_get_texture_sub_image(GLADloadproc load) { + if(!GLAD_GL_ARB_get_texture_sub_image) return; + glad_glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)load("glGetTextureSubImage"); + glad_glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)load("glGetCompressedTextureSubImage"); +} +static void load_GL_ARB_gl_spirv(GLADloadproc load) { + if(!GLAD_GL_ARB_gl_spirv) return; + glad_glSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC)load("glSpecializeShaderARB"); +} +static void load_GL_ARB_gpu_shader_fp64(GLADloadproc load) { + if(!GLAD_GL_ARB_gpu_shader_fp64) return; + glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); + glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); + glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); + glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); + glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); + glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); + glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); + glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); + glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); + glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); + glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); + glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); + glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); + glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); + glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); + glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); + glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); + glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); +} +static void load_GL_ARB_gpu_shader_int64(GLADloadproc load) { + if(!GLAD_GL_ARB_gpu_shader_int64) return; + glad_glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)load("glUniform1i64ARB"); + glad_glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)load("glUniform2i64ARB"); + glad_glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)load("glUniform3i64ARB"); + glad_glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)load("glUniform4i64ARB"); + glad_glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)load("glUniform1i64vARB"); + glad_glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)load("glUniform2i64vARB"); + glad_glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)load("glUniform3i64vARB"); + glad_glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)load("glUniform4i64vARB"); + glad_glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)load("glUniform1ui64ARB"); + glad_glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)load("glUniform2ui64ARB"); + glad_glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)load("glUniform3ui64ARB"); + glad_glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)load("glUniform4ui64ARB"); + glad_glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)load("glUniform1ui64vARB"); + glad_glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)load("glUniform2ui64vARB"); + glad_glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)load("glUniform3ui64vARB"); + glad_glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)load("glUniform4ui64vARB"); + glad_glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)load("glGetUniformi64vARB"); + glad_glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)load("glGetUniformui64vARB"); + glad_glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)load("glGetnUniformi64vARB"); + glad_glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)load("glGetnUniformui64vARB"); + glad_glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)load("glProgramUniform1i64ARB"); + glad_glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)load("glProgramUniform2i64ARB"); + glad_glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)load("glProgramUniform3i64ARB"); + glad_glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)load("glProgramUniform4i64ARB"); + glad_glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)load("glProgramUniform1i64vARB"); + glad_glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)load("glProgramUniform2i64vARB"); + glad_glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)load("glProgramUniform3i64vARB"); + glad_glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)load("glProgramUniform4i64vARB"); + glad_glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)load("glProgramUniform1ui64ARB"); + glad_glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)load("glProgramUniform2ui64ARB"); + glad_glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)load("glProgramUniform3ui64ARB"); + glad_glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)load("glProgramUniform4ui64ARB"); + glad_glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)load("glProgramUniform1ui64vARB"); + glad_glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)load("glProgramUniform2ui64vARB"); + glad_glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)load("glProgramUniform3ui64vARB"); + glad_glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)load("glProgramUniform4ui64vARB"); +} +static void load_GL_ARB_imaging(GLADloadproc load) { + if(!GLAD_GL_ARB_imaging) return; + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); + glad_glColorTable = (PFNGLCOLORTABLEPROC)load("glColorTable"); + glad_glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)load("glColorTableParameterfv"); + glad_glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)load("glColorTableParameteriv"); + glad_glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)load("glCopyColorTable"); + glad_glGetColorTable = (PFNGLGETCOLORTABLEPROC)load("glGetColorTable"); + glad_glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)load("glGetColorTableParameterfv"); + glad_glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)load("glGetColorTableParameteriv"); + glad_glColorSubTable = (PFNGLCOLORSUBTABLEPROC)load("glColorSubTable"); + glad_glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)load("glCopyColorSubTable"); + glad_glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)load("glConvolutionFilter1D"); + glad_glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)load("glConvolutionFilter2D"); + glad_glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)load("glConvolutionParameterf"); + glad_glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)load("glConvolutionParameterfv"); + glad_glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)load("glConvolutionParameteri"); + glad_glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)load("glConvolutionParameteriv"); + glad_glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)load("glCopyConvolutionFilter1D"); + glad_glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)load("glCopyConvolutionFilter2D"); + glad_glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)load("glGetConvolutionFilter"); + glad_glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)load("glGetConvolutionParameterfv"); + glad_glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)load("glGetConvolutionParameteriv"); + glad_glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)load("glGetSeparableFilter"); + glad_glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)load("glSeparableFilter2D"); + glad_glGetHistogram = (PFNGLGETHISTOGRAMPROC)load("glGetHistogram"); + glad_glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)load("glGetHistogramParameterfv"); + glad_glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)load("glGetHistogramParameteriv"); + glad_glGetMinmax = (PFNGLGETMINMAXPROC)load("glGetMinmax"); + glad_glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)load("glGetMinmaxParameterfv"); + glad_glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)load("glGetMinmaxParameteriv"); + glad_glHistogram = (PFNGLHISTOGRAMPROC)load("glHistogram"); + glad_glMinmax = (PFNGLMINMAXPROC)load("glMinmax"); + glad_glResetHistogram = (PFNGLRESETHISTOGRAMPROC)load("glResetHistogram"); + glad_glResetMinmax = (PFNGLRESETMINMAXPROC)load("glResetMinmax"); +} +static void load_GL_ARB_indirect_parameters(GLADloadproc load) { + if(!GLAD_GL_ARB_indirect_parameters) return; + glad_glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)load("glMultiDrawArraysIndirectCountARB"); + glad_glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)load("glMultiDrawElementsIndirectCountARB"); +} +static void load_GL_ARB_instanced_arrays(GLADloadproc load) { + if(!GLAD_GL_ARB_instanced_arrays) return; + glad_glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)load("glVertexAttribDivisorARB"); +} +static void load_GL_ARB_internalformat_query(GLADloadproc load) { + if(!GLAD_GL_ARB_internalformat_query) return; + glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ"); +} +static void load_GL_ARB_internalformat_query2(GLADloadproc load) { + if(!GLAD_GL_ARB_internalformat_query2) return; + glad_glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)load("glGetInternalformati64v"); +} +static void load_GL_ARB_invalidate_subdata(GLADloadproc load) { + if(!GLAD_GL_ARB_invalidate_subdata) return; + glad_glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)load("glInvalidateTexSubImage"); + glad_glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)load("glInvalidateTexImage"); + glad_glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)load("glInvalidateBufferSubData"); + glad_glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)load("glInvalidateBufferData"); + glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer"); + glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer"); +} +static void load_GL_ARB_map_buffer_range(GLADloadproc load) { + if(!GLAD_GL_ARB_map_buffer_range) return; + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); +} +static void load_GL_ARB_matrix_palette(GLADloadproc load) { + if(!GLAD_GL_ARB_matrix_palette) return; + glad_glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)load("glCurrentPaletteMatrixARB"); + glad_glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)load("glMatrixIndexubvARB"); + glad_glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)load("glMatrixIndexusvARB"); + glad_glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)load("glMatrixIndexuivARB"); + glad_glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)load("glMatrixIndexPointerARB"); +} +static void load_GL_ARB_multi_bind(GLADloadproc load) { + if(!GLAD_GL_ARB_multi_bind) return; + glad_glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)load("glBindBuffersBase"); + glad_glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)load("glBindBuffersRange"); + glad_glBindTextures = (PFNGLBINDTEXTURESPROC)load("glBindTextures"); + glad_glBindSamplers = (PFNGLBINDSAMPLERSPROC)load("glBindSamplers"); + glad_glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)load("glBindImageTextures"); + glad_glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)load("glBindVertexBuffers"); +} +static void load_GL_ARB_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_ARB_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)load("glMultiDrawArraysIndirect"); + glad_glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)load("glMultiDrawElementsIndirect"); +} +static void load_GL_ARB_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_multisample) return; + glad_glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)load("glSampleCoverageARB"); +} +static void load_GL_ARB_multitexture(GLADloadproc load) { + if(!GLAD_GL_ARB_multitexture) return; + glad_glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)load("glActiveTextureARB"); + glad_glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)load("glClientActiveTextureARB"); + glad_glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)load("glMultiTexCoord1dARB"); + glad_glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)load("glMultiTexCoord1dvARB"); + glad_glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)load("glMultiTexCoord1fARB"); + glad_glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)load("glMultiTexCoord1fvARB"); + glad_glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)load("glMultiTexCoord1iARB"); + glad_glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)load("glMultiTexCoord1ivARB"); + glad_glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)load("glMultiTexCoord1sARB"); + glad_glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)load("glMultiTexCoord1svARB"); + glad_glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)load("glMultiTexCoord2dARB"); + glad_glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)load("glMultiTexCoord2dvARB"); + glad_glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)load("glMultiTexCoord2fARB"); + glad_glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)load("glMultiTexCoord2fvARB"); + glad_glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)load("glMultiTexCoord2iARB"); + glad_glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)load("glMultiTexCoord2ivARB"); + glad_glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)load("glMultiTexCoord2sARB"); + glad_glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)load("glMultiTexCoord2svARB"); + glad_glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)load("glMultiTexCoord3dARB"); + glad_glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)load("glMultiTexCoord3dvARB"); + glad_glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)load("glMultiTexCoord3fARB"); + glad_glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)load("glMultiTexCoord3fvARB"); + glad_glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)load("glMultiTexCoord3iARB"); + glad_glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)load("glMultiTexCoord3ivARB"); + glad_glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)load("glMultiTexCoord3sARB"); + glad_glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)load("glMultiTexCoord3svARB"); + glad_glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)load("glMultiTexCoord4dARB"); + glad_glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)load("glMultiTexCoord4dvARB"); + glad_glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)load("glMultiTexCoord4fARB"); + glad_glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)load("glMultiTexCoord4fvARB"); + glad_glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)load("glMultiTexCoord4iARB"); + glad_glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)load("glMultiTexCoord4ivARB"); + glad_glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)load("glMultiTexCoord4sARB"); + glad_glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)load("glMultiTexCoord4svARB"); +} +static void load_GL_ARB_occlusion_query(GLADloadproc load) { + if(!GLAD_GL_ARB_occlusion_query) return; + glad_glGenQueriesARB = (PFNGLGENQUERIESARBPROC)load("glGenQueriesARB"); + glad_glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)load("glDeleteQueriesARB"); + glad_glIsQueryARB = (PFNGLISQUERYARBPROC)load("glIsQueryARB"); + glad_glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)load("glBeginQueryARB"); + glad_glEndQueryARB = (PFNGLENDQUERYARBPROC)load("glEndQueryARB"); + glad_glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)load("glGetQueryivARB"); + glad_glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)load("glGetQueryObjectivARB"); + glad_glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)load("glGetQueryObjectuivARB"); +} +static void load_GL_ARB_parallel_shader_compile(GLADloadproc load) { + if(!GLAD_GL_ARB_parallel_shader_compile) return; + glad_glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)load("glMaxShaderCompilerThreadsARB"); +} +static void load_GL_ARB_point_parameters(GLADloadproc load) { + if(!GLAD_GL_ARB_point_parameters) return; + glad_glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)load("glPointParameterfARB"); + glad_glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)load("glPointParameterfvARB"); +} +static void load_GL_ARB_polygon_offset_clamp(GLADloadproc load) { + if(!GLAD_GL_ARB_polygon_offset_clamp) return; + glad_glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)load("glPolygonOffsetClamp"); +} +static void load_GL_ARB_program_interface_query(GLADloadproc load) { + if(!GLAD_GL_ARB_program_interface_query) return; + glad_glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)load("glGetProgramInterfaceiv"); + glad_glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)load("glGetProgramResourceIndex"); + glad_glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)load("glGetProgramResourceName"); + glad_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)load("glGetProgramResourceiv"); + glad_glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)load("glGetProgramResourceLocation"); + glad_glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)load("glGetProgramResourceLocationIndex"); +} +static void load_GL_ARB_provoking_vertex(GLADloadproc load) { + if(!GLAD_GL_ARB_provoking_vertex) return; + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); +} +static void load_GL_ARB_robustness(GLADloadproc load) { + if(!GLAD_GL_ARB_robustness) return; + glad_glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)load("glGetGraphicsResetStatusARB"); + glad_glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)load("glGetnTexImageARB"); + glad_glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)load("glReadnPixelsARB"); + glad_glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)load("glGetnCompressedTexImageARB"); + glad_glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)load("glGetnUniformfvARB"); + glad_glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)load("glGetnUniformivARB"); + glad_glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)load("glGetnUniformuivARB"); + glad_glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)load("glGetnUniformdvARB"); + glad_glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)load("glGetnMapdvARB"); + glad_glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)load("glGetnMapfvARB"); + glad_glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)load("glGetnMapivARB"); + glad_glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)load("glGetnPixelMapfvARB"); + glad_glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)load("glGetnPixelMapuivARB"); + glad_glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)load("glGetnPixelMapusvARB"); + glad_glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)load("glGetnPolygonStippleARB"); + glad_glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)load("glGetnColorTableARB"); + glad_glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)load("glGetnConvolutionFilterARB"); + glad_glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)load("glGetnSeparableFilterARB"); + glad_glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)load("glGetnHistogramARB"); + glad_glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)load("glGetnMinmaxARB"); +} +static void load_GL_ARB_sample_locations(GLADloadproc load) { + if(!GLAD_GL_ARB_sample_locations) return; + glad_glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glFramebufferSampleLocationsfvARB"); + glad_glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glNamedFramebufferSampleLocationsfvARB"); + glad_glEvaluateDepthValuesARB = (PFNGLEVALUATEDEPTHVALUESARBPROC)load("glEvaluateDepthValuesARB"); +} +static void load_GL_ARB_sample_shading(GLADloadproc load) { + if(!GLAD_GL_ARB_sample_shading) return; + glad_glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)load("glMinSampleShadingARB"); +} +static void load_GL_ARB_sampler_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_sampler_objects) return; + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); + glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); + glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); + glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); + glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); + glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); + glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); + glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); + glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); + glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); + glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); +} +static void load_GL_ARB_separate_shader_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_separate_shader_objects) return; + glad_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)load("glUseProgramStages"); + glad_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)load("glActiveShaderProgram"); + glad_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)load("glCreateShaderProgramv"); + glad_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)load("glBindProgramPipeline"); + glad_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)load("glDeleteProgramPipelines"); + glad_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)load("glGenProgramPipelines"); + glad_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)load("glIsProgramPipeline"); + glad_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)load("glGetProgramPipelineiv"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); + glad_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)load("glProgramUniform1i"); + glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); + glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); + glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); + glad_glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)load("glProgramUniform1d"); + glad_glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)load("glProgramUniform1dv"); + glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); + glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); + glad_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); + glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); + glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); + glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); + glad_glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)load("glProgramUniform2d"); + glad_glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)load("glProgramUniform2dv"); + glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); + glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); + glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); + glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); + glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); + glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); + glad_glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)load("glProgramUniform3d"); + glad_glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)load("glProgramUniform3dv"); + glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); + glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); + glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); + glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); + glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); + glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); + glad_glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)load("glProgramUniform4d"); + glad_glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)load("glProgramUniform4dv"); + glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); + glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); + glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); + glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); + glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); + glad_glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)load("glProgramUniformMatrix2dv"); + glad_glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)load("glProgramUniformMatrix3dv"); + glad_glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)load("glProgramUniformMatrix4dv"); + glad_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)load("glProgramUniformMatrix2x3fv"); + glad_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)load("glProgramUniformMatrix3x2fv"); + glad_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)load("glProgramUniformMatrix2x4fv"); + glad_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)load("glProgramUniformMatrix4x2fv"); + glad_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)load("glProgramUniformMatrix3x4fv"); + glad_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)load("glProgramUniformMatrix4x3fv"); + glad_glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)load("glProgramUniformMatrix2x3dv"); + glad_glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)load("glProgramUniformMatrix3x2dv"); + glad_glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)load("glProgramUniformMatrix2x4dv"); + glad_glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)load("glProgramUniformMatrix4x2dv"); + glad_glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)load("glProgramUniformMatrix3x4dv"); + glad_glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)load("glProgramUniformMatrix4x3dv"); + glad_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); + glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); +} +static void load_GL_ARB_shader_atomic_counters(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_atomic_counters) return; + glad_glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)load("glGetActiveAtomicCounterBufferiv"); +} +static void load_GL_ARB_shader_image_load_store(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_image_load_store) return; + glad_glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)load("glBindImageTexture"); + glad_glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)load("glMemoryBarrier"); +} +static void load_GL_ARB_shader_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_objects) return; + glad_glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)load("glDeleteObjectARB"); + glad_glGetHandleARB = (PFNGLGETHANDLEARBPROC)load("glGetHandleARB"); + glad_glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)load("glDetachObjectARB"); + glad_glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)load("glCreateShaderObjectARB"); + glad_glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)load("glShaderSourceARB"); + glad_glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)load("glCompileShaderARB"); + glad_glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)load("glCreateProgramObjectARB"); + glad_glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)load("glAttachObjectARB"); + glad_glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)load("glLinkProgramARB"); + glad_glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)load("glUseProgramObjectARB"); + glad_glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)load("glValidateProgramARB"); + glad_glUniform1fARB = (PFNGLUNIFORM1FARBPROC)load("glUniform1fARB"); + glad_glUniform2fARB = (PFNGLUNIFORM2FARBPROC)load("glUniform2fARB"); + glad_glUniform3fARB = (PFNGLUNIFORM3FARBPROC)load("glUniform3fARB"); + glad_glUniform4fARB = (PFNGLUNIFORM4FARBPROC)load("glUniform4fARB"); + glad_glUniform1iARB = (PFNGLUNIFORM1IARBPROC)load("glUniform1iARB"); + glad_glUniform2iARB = (PFNGLUNIFORM2IARBPROC)load("glUniform2iARB"); + glad_glUniform3iARB = (PFNGLUNIFORM3IARBPROC)load("glUniform3iARB"); + glad_glUniform4iARB = (PFNGLUNIFORM4IARBPROC)load("glUniform4iARB"); + glad_glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)load("glUniform1fvARB"); + glad_glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)load("glUniform2fvARB"); + glad_glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)load("glUniform3fvARB"); + glad_glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)load("glUniform4fvARB"); + glad_glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)load("glUniform1ivARB"); + glad_glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)load("glUniform2ivARB"); + glad_glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)load("glUniform3ivARB"); + glad_glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)load("glUniform4ivARB"); + glad_glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)load("glUniformMatrix2fvARB"); + glad_glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)load("glUniformMatrix3fvARB"); + glad_glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)load("glUniformMatrix4fvARB"); + glad_glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)load("glGetObjectParameterfvARB"); + glad_glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)load("glGetObjectParameterivARB"); + glad_glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)load("glGetInfoLogARB"); + glad_glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)load("glGetAttachedObjectsARB"); + glad_glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)load("glGetUniformLocationARB"); + glad_glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)load("glGetActiveUniformARB"); + glad_glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)load("glGetUniformfvARB"); + glad_glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)load("glGetUniformivARB"); + glad_glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)load("glGetShaderSourceARB"); +} +static void load_GL_ARB_shader_storage_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_storage_buffer_object) return; + glad_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)load("glShaderStorageBlockBinding"); +} +static void load_GL_ARB_shader_subroutine(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_subroutine) return; + glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); + glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); + glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); + glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); + glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); + glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); + glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); + glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); +} +static void load_GL_ARB_shading_language_include(GLADloadproc load) { + if(!GLAD_GL_ARB_shading_language_include) return; + glad_glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)load("glNamedStringARB"); + glad_glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)load("glDeleteNamedStringARB"); + glad_glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)load("glCompileShaderIncludeARB"); + glad_glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)load("glIsNamedStringARB"); + glad_glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)load("glGetNamedStringARB"); + glad_glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)load("glGetNamedStringivARB"); +} +static void load_GL_ARB_sparse_buffer(GLADloadproc load) { + if(!GLAD_GL_ARB_sparse_buffer) return; + glad_glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)load("glBufferPageCommitmentARB"); + glad_glNamedBufferPageCommitmentEXT = (PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)load("glNamedBufferPageCommitmentEXT"); + glad_glNamedBufferPageCommitmentARB = (PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)load("glNamedBufferPageCommitmentARB"); +} +static void load_GL_ARB_sparse_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_sparse_texture) return; + glad_glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)load("glTexPageCommitmentARB"); +} +static void load_GL_ARB_sync(GLADloadproc load) { + if(!GLAD_GL_ARB_sync) return; + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); +} +static void load_GL_ARB_tessellation_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_tessellation_shader) return; + glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); + glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); +} +static void load_GL_ARB_texture_barrier(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_barrier) return; + glad_glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)load("glTextureBarrier"); +} +static void load_GL_ARB_texture_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_buffer_object) return; + glad_glTexBufferARB = (PFNGLTEXBUFFERARBPROC)load("glTexBufferARB"); +} +static void load_GL_ARB_texture_buffer_range(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_buffer_range) return; + glad_glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)load("glTexBufferRange"); +} +static void load_GL_ARB_texture_compression(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_compression) return; + glad_glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)load("glCompressedTexImage3DARB"); + glad_glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)load("glCompressedTexImage2DARB"); + glad_glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)load("glCompressedTexImage1DARB"); + glad_glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)load("glCompressedTexSubImage3DARB"); + glad_glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)load("glCompressedTexSubImage2DARB"); + glad_glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)load("glCompressedTexSubImage1DARB"); + glad_glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)load("glGetCompressedTexImageARB"); +} +static void load_GL_ARB_texture_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_multisample) return; + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_ARB_texture_storage(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_storage) return; + glad_glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)load("glTexStorage1D"); + glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D"); + glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D"); +} +static void load_GL_ARB_texture_storage_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_storage_multisample) return; + glad_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)load("glTexStorage2DMultisample"); + glad_glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)load("glTexStorage3DMultisample"); +} +static void load_GL_ARB_texture_view(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_view) return; + glad_glTextureView = (PFNGLTEXTUREVIEWPROC)load("glTextureView"); +} +static void load_GL_ARB_timer_query(GLADloadproc load) { + if(!GLAD_GL_ARB_timer_query) return; + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); +} +static void load_GL_ARB_transform_feedback2(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback2) return; + glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); + glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); + glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); + glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); + glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); + glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); + glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); +} +static void load_GL_ARB_transform_feedback3(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback3) return; + glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); + glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); + glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); + glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); +} +static void load_GL_ARB_transform_feedback_instanced(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback_instanced) return; + glad_glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)load("glDrawTransformFeedbackInstanced"); + glad_glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)load("glDrawTransformFeedbackStreamInstanced"); +} +static void load_GL_ARB_transpose_matrix(GLADloadproc load) { + if(!GLAD_GL_ARB_transpose_matrix) return; + glad_glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)load("glLoadTransposeMatrixfARB"); + glad_glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)load("glLoadTransposeMatrixdARB"); + glad_glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)load("glMultTransposeMatrixfARB"); + glad_glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)load("glMultTransposeMatrixdARB"); +} +static void load_GL_ARB_uniform_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_uniform_buffer_object) return; + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); +} +static void load_GL_ARB_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_array_object) return; + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_ARB_vertex_attrib_64bit(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_attrib_64bit) return; + glad_glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)load("glVertexAttribL1d"); + glad_glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)load("glVertexAttribL2d"); + glad_glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)load("glVertexAttribL3d"); + glad_glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)load("glVertexAttribL4d"); + glad_glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)load("glVertexAttribL1dv"); + glad_glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)load("glVertexAttribL2dv"); + glad_glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)load("glVertexAttribL3dv"); + glad_glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)load("glVertexAttribL4dv"); + glad_glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)load("glVertexAttribLPointer"); + glad_glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)load("glGetVertexAttribLdv"); +} +static void load_GL_ARB_vertex_attrib_binding(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_attrib_binding) return; + glad_glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)load("glBindVertexBuffer"); + glad_glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)load("glVertexAttribFormat"); + glad_glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)load("glVertexAttribIFormat"); + glad_glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)load("glVertexAttribLFormat"); + glad_glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)load("glVertexAttribBinding"); + glad_glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)load("glVertexBindingDivisor"); +} +static void load_GL_ARB_vertex_blend(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_blend) return; + glad_glWeightbvARB = (PFNGLWEIGHTBVARBPROC)load("glWeightbvARB"); + glad_glWeightsvARB = (PFNGLWEIGHTSVARBPROC)load("glWeightsvARB"); + glad_glWeightivARB = (PFNGLWEIGHTIVARBPROC)load("glWeightivARB"); + glad_glWeightfvARB = (PFNGLWEIGHTFVARBPROC)load("glWeightfvARB"); + glad_glWeightdvARB = (PFNGLWEIGHTDVARBPROC)load("glWeightdvARB"); + glad_glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)load("glWeightubvARB"); + glad_glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)load("glWeightusvARB"); + glad_glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)load("glWeightuivARB"); + glad_glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)load("glWeightPointerARB"); + glad_glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)load("glVertexBlendARB"); +} +static void load_GL_ARB_vertex_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_buffer_object) return; + glad_glBindBufferARB = (PFNGLBINDBUFFERARBPROC)load("glBindBufferARB"); + glad_glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)load("glDeleteBuffersARB"); + glad_glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)load("glGenBuffersARB"); + glad_glIsBufferARB = (PFNGLISBUFFERARBPROC)load("glIsBufferARB"); + glad_glBufferDataARB = (PFNGLBUFFERDATAARBPROC)load("glBufferDataARB"); + glad_glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)load("glBufferSubDataARB"); + glad_glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)load("glGetBufferSubDataARB"); + glad_glMapBufferARB = (PFNGLMAPBUFFERARBPROC)load("glMapBufferARB"); + glad_glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)load("glUnmapBufferARB"); + glad_glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)load("glGetBufferParameterivARB"); + glad_glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)load("glGetBufferPointervARB"); +} +static void load_GL_ARB_vertex_program(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_program) return; + glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); + glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); + glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); + glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); + glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); + glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); + glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); + glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); + glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); + glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); + glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); + glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); + glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); + glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); + glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); + glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); + glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); + glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); + glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); + glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); + glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); + glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); + glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); + glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); + glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); + glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); + glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); + glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); + glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); + glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); + glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); + glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); + glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); + glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); + glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); + glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); + glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); + glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); + glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); + glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); + glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); + glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); + glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); + glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); + glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); + glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); + glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); + glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); + glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); + glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); + glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); + glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); + glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); + glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); + glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); + glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); + glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); + glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); + glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); + glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); + glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); + glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); +} +static void load_GL_ARB_vertex_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_shader) return; + glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); + glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); + glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); + glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); + glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); + glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); + glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); + glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); + glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); + glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); + glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); + glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); + glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); + glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); + glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); + glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); + glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); + glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); + glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); + glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); + glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); + glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); + glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); + glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); + glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); + glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); + glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); + glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); + glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); + glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); + glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); + glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); + glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); + glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); + glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); + glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); + glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); + glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); + glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); + glad_glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)load("glBindAttribLocationARB"); + glad_glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)load("glGetActiveAttribARB"); + glad_glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)load("glGetAttribLocationARB"); + glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); + glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); + glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); + glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); +} +static void load_GL_ARB_vertex_type_2_10_10_10_rev(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_type_2_10_10_10_rev) return; + glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); + glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); + glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); +} +static void load_GL_ARB_viewport_array(GLADloadproc load) { + if(!GLAD_GL_ARB_viewport_array) return; + glad_glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)load("glViewportArrayv"); + glad_glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)load("glViewportIndexedf"); + glad_glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)load("glViewportIndexedfv"); + glad_glScissorArrayv = (PFNGLSCISSORARRAYVPROC)load("glScissorArrayv"); + glad_glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)load("glScissorIndexed"); + glad_glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)load("glScissorIndexedv"); + glad_glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)load("glDepthRangeArrayv"); + glad_glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)load("glDepthRangeIndexed"); + glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); + glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); + glad_glDepthRangeArraydvNV = (PFNGLDEPTHRANGEARRAYDVNVPROC)load("glDepthRangeArraydvNV"); + glad_glDepthRangeIndexeddNV = (PFNGLDEPTHRANGEINDEXEDDNVPROC)load("glDepthRangeIndexeddNV"); +} +static void load_GL_ARB_window_pos(GLADloadproc load) { + if(!GLAD_GL_ARB_window_pos) return; + glad_glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)load("glWindowPos2dARB"); + glad_glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)load("glWindowPos2dvARB"); + glad_glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)load("glWindowPos2fARB"); + glad_glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)load("glWindowPos2fvARB"); + glad_glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)load("glWindowPos2iARB"); + glad_glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)load("glWindowPos2ivARB"); + glad_glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)load("glWindowPos2sARB"); + glad_glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)load("glWindowPos2svARB"); + glad_glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)load("glWindowPos3dARB"); + glad_glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)load("glWindowPos3dvARB"); + glad_glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)load("glWindowPos3fARB"); + glad_glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)load("glWindowPos3fvARB"); + glad_glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)load("glWindowPos3iARB"); + glad_glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)load("glWindowPos3ivARB"); + glad_glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)load("glWindowPos3sARB"); + glad_glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)load("glWindowPos3svARB"); +} +static void load_GL_ATI_draw_buffers(GLADloadproc load) { + if(!GLAD_GL_ATI_draw_buffers) return; + glad_glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)load("glDrawBuffersATI"); +} +static void load_GL_ATI_element_array(GLADloadproc load) { + if(!GLAD_GL_ATI_element_array) return; + glad_glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)load("glElementPointerATI"); + glad_glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)load("glDrawElementArrayATI"); + glad_glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)load("glDrawRangeElementArrayATI"); +} +static void load_GL_ATI_envmap_bumpmap(GLADloadproc load) { + if(!GLAD_GL_ATI_envmap_bumpmap) return; + glad_glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)load("glTexBumpParameterivATI"); + glad_glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)load("glTexBumpParameterfvATI"); + glad_glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)load("glGetTexBumpParameterivATI"); + glad_glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)load("glGetTexBumpParameterfvATI"); +} +static void load_GL_ATI_fragment_shader(GLADloadproc load) { + if(!GLAD_GL_ATI_fragment_shader) return; + glad_glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)load("glGenFragmentShadersATI"); + glad_glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)load("glBindFragmentShaderATI"); + glad_glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)load("glDeleteFragmentShaderATI"); + glad_glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)load("glBeginFragmentShaderATI"); + glad_glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)load("glEndFragmentShaderATI"); + glad_glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)load("glPassTexCoordATI"); + glad_glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)load("glSampleMapATI"); + glad_glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)load("glColorFragmentOp1ATI"); + glad_glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)load("glColorFragmentOp2ATI"); + glad_glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)load("glColorFragmentOp3ATI"); + glad_glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)load("glAlphaFragmentOp1ATI"); + glad_glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)load("glAlphaFragmentOp2ATI"); + glad_glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)load("glAlphaFragmentOp3ATI"); + glad_glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)load("glSetFragmentShaderConstantATI"); +} +static void load_GL_ATI_map_object_buffer(GLADloadproc load) { + if(!GLAD_GL_ATI_map_object_buffer) return; + glad_glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)load("glMapObjectBufferATI"); + glad_glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)load("glUnmapObjectBufferATI"); +} +static void load_GL_ATI_pn_triangles(GLADloadproc load) { + if(!GLAD_GL_ATI_pn_triangles) return; + glad_glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)load("glPNTrianglesiATI"); + glad_glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)load("glPNTrianglesfATI"); +} +static void load_GL_ATI_separate_stencil(GLADloadproc load) { + if(!GLAD_GL_ATI_separate_stencil) return; + glad_glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)load("glStencilOpSeparateATI"); + glad_glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)load("glStencilFuncSeparateATI"); +} +static void load_GL_ATI_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_array_object) return; + glad_glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)load("glNewObjectBufferATI"); + glad_glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)load("glIsObjectBufferATI"); + glad_glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)load("glUpdateObjectBufferATI"); + glad_glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)load("glGetObjectBufferfvATI"); + glad_glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)load("glGetObjectBufferivATI"); + glad_glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)load("glFreeObjectBufferATI"); + glad_glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)load("glArrayObjectATI"); + glad_glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)load("glGetArrayObjectfvATI"); + glad_glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)load("glGetArrayObjectivATI"); + glad_glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)load("glVariantArrayObjectATI"); + glad_glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)load("glGetVariantArrayObjectfvATI"); + glad_glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)load("glGetVariantArrayObjectivATI"); +} +static void load_GL_ATI_vertex_attrib_array_object(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_attrib_array_object) return; + glad_glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)load("glVertexAttribArrayObjectATI"); + glad_glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)load("glGetVertexAttribArrayObjectfvATI"); + glad_glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)load("glGetVertexAttribArrayObjectivATI"); +} +static void load_GL_ATI_vertex_streams(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_streams) return; + glad_glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)load("glVertexStream1sATI"); + glad_glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)load("glVertexStream1svATI"); + glad_glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)load("glVertexStream1iATI"); + glad_glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)load("glVertexStream1ivATI"); + glad_glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)load("glVertexStream1fATI"); + glad_glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)load("glVertexStream1fvATI"); + glad_glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)load("glVertexStream1dATI"); + glad_glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)load("glVertexStream1dvATI"); + glad_glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)load("glVertexStream2sATI"); + glad_glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)load("glVertexStream2svATI"); + glad_glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)load("glVertexStream2iATI"); + glad_glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)load("glVertexStream2ivATI"); + glad_glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)load("glVertexStream2fATI"); + glad_glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)load("glVertexStream2fvATI"); + glad_glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)load("glVertexStream2dATI"); + glad_glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)load("glVertexStream2dvATI"); + glad_glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)load("glVertexStream3sATI"); + glad_glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)load("glVertexStream3svATI"); + glad_glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)load("glVertexStream3iATI"); + glad_glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)load("glVertexStream3ivATI"); + glad_glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)load("glVertexStream3fATI"); + glad_glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)load("glVertexStream3fvATI"); + glad_glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)load("glVertexStream3dATI"); + glad_glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)load("glVertexStream3dvATI"); + glad_glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)load("glVertexStream4sATI"); + glad_glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)load("glVertexStream4svATI"); + glad_glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)load("glVertexStream4iATI"); + glad_glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)load("glVertexStream4ivATI"); + glad_glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)load("glVertexStream4fATI"); + glad_glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)load("glVertexStream4fvATI"); + glad_glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)load("glVertexStream4dATI"); + glad_glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)load("glVertexStream4dvATI"); + glad_glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)load("glNormalStream3bATI"); + glad_glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)load("glNormalStream3bvATI"); + glad_glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)load("glNormalStream3sATI"); + glad_glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)load("glNormalStream3svATI"); + glad_glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)load("glNormalStream3iATI"); + glad_glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)load("glNormalStream3ivATI"); + glad_glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)load("glNormalStream3fATI"); + glad_glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)load("glNormalStream3fvATI"); + glad_glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)load("glNormalStream3dATI"); + glad_glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)load("glNormalStream3dvATI"); + glad_glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)load("glClientActiveVertexStreamATI"); + glad_glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)load("glVertexBlendEnviATI"); + glad_glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)load("glVertexBlendEnvfATI"); +} +static void load_GL_EXT_EGL_image_storage(GLADloadproc load) { + if(!GLAD_GL_EXT_EGL_image_storage) return; + glad_glEGLImageTargetTexStorageEXT = (PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)load("glEGLImageTargetTexStorageEXT"); + glad_glEGLImageTargetTextureStorageEXT = (PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)load("glEGLImageTargetTextureStorageEXT"); +} +static void load_GL_EXT_bindable_uniform(GLADloadproc load) { + if(!GLAD_GL_EXT_bindable_uniform) return; + glad_glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)load("glUniformBufferEXT"); + glad_glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)load("glGetUniformBufferSizeEXT"); + glad_glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)load("glGetUniformOffsetEXT"); +} +static void load_GL_EXT_blend_color(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_color) return; + glad_glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)load("glBlendColorEXT"); +} +static void load_GL_EXT_blend_equation_separate(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_equation_separate) return; + glad_glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)load("glBlendEquationSeparateEXT"); +} +static void load_GL_EXT_blend_func_separate(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_func_separate) return; + glad_glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)load("glBlendFuncSeparateEXT"); +} +static void load_GL_EXT_blend_minmax(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_minmax) return; + glad_glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)load("glBlendEquationEXT"); +} +static void load_GL_EXT_color_subtable(GLADloadproc load) { + if(!GLAD_GL_EXT_color_subtable) return; + glad_glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)load("glColorSubTableEXT"); + glad_glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)load("glCopyColorSubTableEXT"); +} +static void load_GL_EXT_compiled_vertex_array(GLADloadproc load) { + if(!GLAD_GL_EXT_compiled_vertex_array) return; + glad_glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)load("glLockArraysEXT"); + glad_glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)load("glUnlockArraysEXT"); +} +static void load_GL_EXT_convolution(GLADloadproc load) { + if(!GLAD_GL_EXT_convolution) return; + glad_glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)load("glConvolutionFilter1DEXT"); + glad_glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)load("glConvolutionFilter2DEXT"); + glad_glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)load("glConvolutionParameterfEXT"); + glad_glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)load("glConvolutionParameterfvEXT"); + glad_glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)load("glConvolutionParameteriEXT"); + glad_glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)load("glConvolutionParameterivEXT"); + glad_glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)load("glCopyConvolutionFilter1DEXT"); + glad_glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)load("glCopyConvolutionFilter2DEXT"); + glad_glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)load("glGetConvolutionFilterEXT"); + glad_glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)load("glGetConvolutionParameterfvEXT"); + glad_glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)load("glGetConvolutionParameterivEXT"); + glad_glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)load("glGetSeparableFilterEXT"); + glad_glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)load("glSeparableFilter2DEXT"); +} +static void load_GL_EXT_coordinate_frame(GLADloadproc load) { + if(!GLAD_GL_EXT_coordinate_frame) return; + glad_glTangent3bEXT = (PFNGLTANGENT3BEXTPROC)load("glTangent3bEXT"); + glad_glTangent3bvEXT = (PFNGLTANGENT3BVEXTPROC)load("glTangent3bvEXT"); + glad_glTangent3dEXT = (PFNGLTANGENT3DEXTPROC)load("glTangent3dEXT"); + glad_glTangent3dvEXT = (PFNGLTANGENT3DVEXTPROC)load("glTangent3dvEXT"); + glad_glTangent3fEXT = (PFNGLTANGENT3FEXTPROC)load("glTangent3fEXT"); + glad_glTangent3fvEXT = (PFNGLTANGENT3FVEXTPROC)load("glTangent3fvEXT"); + glad_glTangent3iEXT = (PFNGLTANGENT3IEXTPROC)load("glTangent3iEXT"); + glad_glTangent3ivEXT = (PFNGLTANGENT3IVEXTPROC)load("glTangent3ivEXT"); + glad_glTangent3sEXT = (PFNGLTANGENT3SEXTPROC)load("glTangent3sEXT"); + glad_glTangent3svEXT = (PFNGLTANGENT3SVEXTPROC)load("glTangent3svEXT"); + glad_glBinormal3bEXT = (PFNGLBINORMAL3BEXTPROC)load("glBinormal3bEXT"); + glad_glBinormal3bvEXT = (PFNGLBINORMAL3BVEXTPROC)load("glBinormal3bvEXT"); + glad_glBinormal3dEXT = (PFNGLBINORMAL3DEXTPROC)load("glBinormal3dEXT"); + glad_glBinormal3dvEXT = (PFNGLBINORMAL3DVEXTPROC)load("glBinormal3dvEXT"); + glad_glBinormal3fEXT = (PFNGLBINORMAL3FEXTPROC)load("glBinormal3fEXT"); + glad_glBinormal3fvEXT = (PFNGLBINORMAL3FVEXTPROC)load("glBinormal3fvEXT"); + glad_glBinormal3iEXT = (PFNGLBINORMAL3IEXTPROC)load("glBinormal3iEXT"); + glad_glBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC)load("glBinormal3ivEXT"); + glad_glBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC)load("glBinormal3sEXT"); + glad_glBinormal3svEXT = (PFNGLBINORMAL3SVEXTPROC)load("glBinormal3svEXT"); + glad_glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)load("glTangentPointerEXT"); + glad_glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)load("glBinormalPointerEXT"); +} +static void load_GL_EXT_copy_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_copy_texture) return; + glad_glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)load("glCopyTexImage1DEXT"); + glad_glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)load("glCopyTexImage2DEXT"); + glad_glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)load("glCopyTexSubImage1DEXT"); + glad_glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)load("glCopyTexSubImage2DEXT"); + glad_glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)load("glCopyTexSubImage3DEXT"); +} +static void load_GL_EXT_cull_vertex(GLADloadproc load) { + if(!GLAD_GL_EXT_cull_vertex) return; + glad_glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)load("glCullParameterdvEXT"); + glad_glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)load("glCullParameterfvEXT"); +} +static void load_GL_EXT_debug_label(GLADloadproc load) { + if(!GLAD_GL_EXT_debug_label) return; + glad_glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)load("glLabelObjectEXT"); + glad_glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)load("glGetObjectLabelEXT"); +} +static void load_GL_EXT_debug_marker(GLADloadproc load) { + if(!GLAD_GL_EXT_debug_marker) return; + glad_glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)load("glInsertEventMarkerEXT"); + glad_glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)load("glPushGroupMarkerEXT"); + glad_glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)load("glPopGroupMarkerEXT"); +} +static void load_GL_EXT_depth_bounds_test(GLADloadproc load) { + if(!GLAD_GL_EXT_depth_bounds_test) return; + glad_glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)load("glDepthBoundsEXT"); +} +static void load_GL_EXT_direct_state_access(GLADloadproc load) { + if(!GLAD_GL_EXT_direct_state_access) return; + glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); + glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); + glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); + glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); + glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); + glad_glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)load("glMatrixRotatefEXT"); + glad_glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)load("glMatrixRotatedEXT"); + glad_glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)load("glMatrixScalefEXT"); + glad_glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)load("glMatrixScaledEXT"); + glad_glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)load("glMatrixTranslatefEXT"); + glad_glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)load("glMatrixTranslatedEXT"); + glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); + glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); + glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); + glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); + glad_glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)load("glClientAttribDefaultEXT"); + glad_glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)load("glPushClientAttribDefaultEXT"); + glad_glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)load("glTextureParameterfEXT"); + glad_glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)load("glTextureParameterfvEXT"); + glad_glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)load("glTextureParameteriEXT"); + glad_glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)load("glTextureParameterivEXT"); + glad_glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)load("glTextureImage1DEXT"); + glad_glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)load("glTextureImage2DEXT"); + glad_glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)load("glTextureSubImage1DEXT"); + glad_glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)load("glTextureSubImage2DEXT"); + glad_glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)load("glCopyTextureImage1DEXT"); + glad_glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)load("glCopyTextureImage2DEXT"); + glad_glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)load("glCopyTextureSubImage1DEXT"); + glad_glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)load("glCopyTextureSubImage2DEXT"); + glad_glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)load("glGetTextureImageEXT"); + glad_glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)load("glGetTextureParameterfvEXT"); + glad_glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)load("glGetTextureParameterivEXT"); + glad_glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)load("glGetTextureLevelParameterfvEXT"); + glad_glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)load("glGetTextureLevelParameterivEXT"); + glad_glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)load("glTextureImage3DEXT"); + glad_glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)load("glTextureSubImage3DEXT"); + glad_glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)load("glCopyTextureSubImage3DEXT"); + glad_glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)load("glBindMultiTextureEXT"); + glad_glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)load("glMultiTexCoordPointerEXT"); + glad_glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)load("glMultiTexEnvfEXT"); + glad_glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)load("glMultiTexEnvfvEXT"); + glad_glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)load("glMultiTexEnviEXT"); + glad_glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)load("glMultiTexEnvivEXT"); + glad_glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)load("glMultiTexGendEXT"); + glad_glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)load("glMultiTexGendvEXT"); + glad_glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)load("glMultiTexGenfEXT"); + glad_glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)load("glMultiTexGenfvEXT"); + glad_glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)load("glMultiTexGeniEXT"); + glad_glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)load("glMultiTexGenivEXT"); + glad_glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)load("glGetMultiTexEnvfvEXT"); + glad_glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)load("glGetMultiTexEnvivEXT"); + glad_glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)load("glGetMultiTexGendvEXT"); + glad_glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)load("glGetMultiTexGenfvEXT"); + glad_glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)load("glGetMultiTexGenivEXT"); + glad_glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)load("glMultiTexParameteriEXT"); + glad_glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)load("glMultiTexParameterivEXT"); + glad_glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)load("glMultiTexParameterfEXT"); + glad_glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)load("glMultiTexParameterfvEXT"); + glad_glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)load("glMultiTexImage1DEXT"); + glad_glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)load("glMultiTexImage2DEXT"); + glad_glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)load("glMultiTexSubImage1DEXT"); + glad_glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)load("glMultiTexSubImage2DEXT"); + glad_glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)load("glCopyMultiTexImage1DEXT"); + glad_glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)load("glCopyMultiTexImage2DEXT"); + glad_glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)load("glCopyMultiTexSubImage1DEXT"); + glad_glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)load("glCopyMultiTexSubImage2DEXT"); + glad_glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)load("glGetMultiTexImageEXT"); + glad_glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)load("glGetMultiTexParameterfvEXT"); + glad_glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)load("glGetMultiTexParameterivEXT"); + glad_glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)load("glGetMultiTexLevelParameterfvEXT"); + glad_glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)load("glGetMultiTexLevelParameterivEXT"); + glad_glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)load("glMultiTexImage3DEXT"); + glad_glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)load("glMultiTexSubImage3DEXT"); + glad_glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)load("glCopyMultiTexSubImage3DEXT"); + glad_glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)load("glEnableClientStateIndexedEXT"); + glad_glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)load("glDisableClientStateIndexedEXT"); + glad_glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)load("glGetFloatIndexedvEXT"); + glad_glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)load("glGetDoubleIndexedvEXT"); + glad_glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)load("glGetPointerIndexedvEXT"); + glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); + glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); + glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); + glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); + glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); + glad_glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)load("glCompressedTextureImage3DEXT"); + glad_glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)load("glCompressedTextureImage2DEXT"); + glad_glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)load("glCompressedTextureImage1DEXT"); + glad_glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)load("glCompressedTextureSubImage3DEXT"); + glad_glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)load("glCompressedTextureSubImage2DEXT"); + glad_glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)load("glCompressedTextureSubImage1DEXT"); + glad_glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)load("glGetCompressedTextureImageEXT"); + glad_glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)load("glCompressedMultiTexImage3DEXT"); + glad_glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)load("glCompressedMultiTexImage2DEXT"); + glad_glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)load("glCompressedMultiTexImage1DEXT"); + glad_glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)load("glCompressedMultiTexSubImage3DEXT"); + glad_glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)load("glCompressedMultiTexSubImage2DEXT"); + glad_glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)load("glCompressedMultiTexSubImage1DEXT"); + glad_glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)load("glGetCompressedMultiTexImageEXT"); + glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); + glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); + glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); + glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); + glad_glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)load("glNamedBufferDataEXT"); + glad_glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)load("glNamedBufferSubDataEXT"); + glad_glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)load("glMapNamedBufferEXT"); + glad_glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)load("glUnmapNamedBufferEXT"); + glad_glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)load("glGetNamedBufferParameterivEXT"); + glad_glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)load("glGetNamedBufferPointervEXT"); + glad_glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)load("glGetNamedBufferSubDataEXT"); + glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); + glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); + glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); + glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); + glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); + glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); + glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); + glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); + glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); + glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); + glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); + glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); + glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); + glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); + glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); + glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); + glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); + glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); + glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); + glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); + glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); + glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); + glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); + glad_glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)load("glTextureBufferEXT"); + glad_glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)load("glMultiTexBufferEXT"); + glad_glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)load("glTextureParameterIivEXT"); + glad_glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)load("glTextureParameterIuivEXT"); + glad_glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)load("glGetTextureParameterIivEXT"); + glad_glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)load("glGetTextureParameterIuivEXT"); + glad_glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)load("glMultiTexParameterIivEXT"); + glad_glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)load("glMultiTexParameterIuivEXT"); + glad_glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)load("glGetMultiTexParameterIivEXT"); + glad_glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)load("glGetMultiTexParameterIuivEXT"); + glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); + glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); + glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); + glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); + glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); + glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); + glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); + glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); + glad_glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glNamedProgramLocalParameters4fvEXT"); + glad_glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)load("glNamedProgramLocalParameterI4iEXT"); + glad_glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)load("glNamedProgramLocalParameterI4ivEXT"); + glad_glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)load("glNamedProgramLocalParametersI4ivEXT"); + glad_glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)load("glNamedProgramLocalParameterI4uiEXT"); + glad_glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)load("glNamedProgramLocalParameterI4uivEXT"); + glad_glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)load("glNamedProgramLocalParametersI4uivEXT"); + glad_glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)load("glGetNamedProgramLocalParameterIivEXT"); + glad_glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)load("glGetNamedProgramLocalParameterIuivEXT"); + glad_glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)load("glEnableClientStateiEXT"); + glad_glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)load("glDisableClientStateiEXT"); + glad_glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)load("glGetFloati_vEXT"); + glad_glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)load("glGetDoublei_vEXT"); + glad_glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)load("glGetPointeri_vEXT"); + glad_glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)load("glNamedProgramStringEXT"); + glad_glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)load("glNamedProgramLocalParameter4dEXT"); + glad_glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)load("glNamedProgramLocalParameter4dvEXT"); + glad_glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)load("glNamedProgramLocalParameter4fEXT"); + glad_glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)load("glNamedProgramLocalParameter4fvEXT"); + glad_glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)load("glGetNamedProgramLocalParameterdvEXT"); + glad_glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)load("glGetNamedProgramLocalParameterfvEXT"); + glad_glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)load("glGetNamedProgramivEXT"); + glad_glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)load("glGetNamedProgramStringEXT"); + glad_glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)load("glNamedRenderbufferStorageEXT"); + glad_glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)load("glGetNamedRenderbufferParameterivEXT"); + glad_glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glNamedRenderbufferStorageMultisampleEXT"); + glad_glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)load("glNamedRenderbufferStorageMultisampleCoverageEXT"); + glad_glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)load("glCheckNamedFramebufferStatusEXT"); + glad_glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)load("glNamedFramebufferTexture1DEXT"); + glad_glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)load("glNamedFramebufferTexture2DEXT"); + glad_glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)load("glNamedFramebufferTexture3DEXT"); + glad_glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)load("glNamedFramebufferRenderbufferEXT"); + glad_glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetNamedFramebufferAttachmentParameterivEXT"); + glad_glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)load("glGenerateTextureMipmapEXT"); + glad_glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)load("glGenerateMultiTexMipmapEXT"); + glad_glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)load("glFramebufferDrawBufferEXT"); + glad_glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)load("glFramebufferDrawBuffersEXT"); + glad_glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)load("glFramebufferReadBufferEXT"); + glad_glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetFramebufferParameterivEXT"); + glad_glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)load("glNamedCopyBufferSubDataEXT"); + glad_glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)load("glNamedFramebufferTextureEXT"); + glad_glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)load("glNamedFramebufferTextureLayerEXT"); + glad_glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)load("glNamedFramebufferTextureFaceEXT"); + glad_glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)load("glTextureRenderbufferEXT"); + glad_glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)load("glMultiTexRenderbufferEXT"); + glad_glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)load("glVertexArrayVertexOffsetEXT"); + glad_glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)load("glVertexArrayColorOffsetEXT"); + glad_glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)load("glVertexArrayEdgeFlagOffsetEXT"); + glad_glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)load("glVertexArrayIndexOffsetEXT"); + glad_glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)load("glVertexArrayNormalOffsetEXT"); + glad_glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)load("glVertexArrayTexCoordOffsetEXT"); + glad_glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)load("glVertexArrayMultiTexCoordOffsetEXT"); + glad_glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)load("glVertexArrayFogCoordOffsetEXT"); + glad_glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)load("glVertexArraySecondaryColorOffsetEXT"); + glad_glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)load("glVertexArrayVertexAttribOffsetEXT"); + glad_glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)load("glVertexArrayVertexAttribIOffsetEXT"); + glad_glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)load("glEnableVertexArrayEXT"); + glad_glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)load("glDisableVertexArrayEXT"); + glad_glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)load("glEnableVertexArrayAttribEXT"); + glad_glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)load("glDisableVertexArrayAttribEXT"); + glad_glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)load("glGetVertexArrayIntegervEXT"); + glad_glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)load("glGetVertexArrayPointervEXT"); + glad_glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)load("glGetVertexArrayIntegeri_vEXT"); + glad_glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)load("glGetVertexArrayPointeri_vEXT"); + glad_glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)load("glMapNamedBufferRangeEXT"); + glad_glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)load("glFlushMappedNamedBufferRangeEXT"); + glad_glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)load("glNamedBufferStorageEXT"); + glad_glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)load("glClearNamedBufferDataEXT"); + glad_glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)load("glClearNamedBufferSubDataEXT"); + glad_glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)load("glNamedFramebufferParameteriEXT"); + glad_glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetNamedFramebufferParameterivEXT"); + glad_glProgramUniform1dEXT = (PFNGLPROGRAMUNIFORM1DEXTPROC)load("glProgramUniform1dEXT"); + glad_glProgramUniform2dEXT = (PFNGLPROGRAMUNIFORM2DEXTPROC)load("glProgramUniform2dEXT"); + glad_glProgramUniform3dEXT = (PFNGLPROGRAMUNIFORM3DEXTPROC)load("glProgramUniform3dEXT"); + glad_glProgramUniform4dEXT = (PFNGLPROGRAMUNIFORM4DEXTPROC)load("glProgramUniform4dEXT"); + glad_glProgramUniform1dvEXT = (PFNGLPROGRAMUNIFORM1DVEXTPROC)load("glProgramUniform1dvEXT"); + glad_glProgramUniform2dvEXT = (PFNGLPROGRAMUNIFORM2DVEXTPROC)load("glProgramUniform2dvEXT"); + glad_glProgramUniform3dvEXT = (PFNGLPROGRAMUNIFORM3DVEXTPROC)load("glProgramUniform3dvEXT"); + glad_glProgramUniform4dvEXT = (PFNGLPROGRAMUNIFORM4DVEXTPROC)load("glProgramUniform4dvEXT"); + glad_glProgramUniformMatrix2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)load("glProgramUniformMatrix2dvEXT"); + glad_glProgramUniformMatrix3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)load("glProgramUniformMatrix3dvEXT"); + glad_glProgramUniformMatrix4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)load("glProgramUniformMatrix4dvEXT"); + glad_glProgramUniformMatrix2x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)load("glProgramUniformMatrix2x3dvEXT"); + glad_glProgramUniformMatrix2x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)load("glProgramUniformMatrix2x4dvEXT"); + glad_glProgramUniformMatrix3x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)load("glProgramUniformMatrix3x2dvEXT"); + glad_glProgramUniformMatrix3x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)load("glProgramUniformMatrix3x4dvEXT"); + glad_glProgramUniformMatrix4x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)load("glProgramUniformMatrix4x2dvEXT"); + glad_glProgramUniformMatrix4x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)load("glProgramUniformMatrix4x3dvEXT"); + glad_glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)load("glTextureBufferRangeEXT"); + glad_glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)load("glTextureStorage1DEXT"); + glad_glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)load("glTextureStorage2DEXT"); + glad_glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)load("glTextureStorage3DEXT"); + glad_glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)load("glTextureStorage2DMultisampleEXT"); + glad_glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)load("glTextureStorage3DMultisampleEXT"); + glad_glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)load("glVertexArrayBindVertexBufferEXT"); + glad_glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)load("glVertexArrayVertexAttribFormatEXT"); + glad_glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)load("glVertexArrayVertexAttribIFormatEXT"); + glad_glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)load("glVertexArrayVertexAttribLFormatEXT"); + glad_glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)load("glVertexArrayVertexAttribBindingEXT"); + glad_glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)load("glVertexArrayVertexBindingDivisorEXT"); + glad_glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)load("glVertexArrayVertexAttribLOffsetEXT"); + glad_glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)load("glTexturePageCommitmentEXT"); + glad_glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)load("glVertexArrayVertexAttribDivisorEXT"); +} +static void load_GL_EXT_draw_buffers2(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_buffers2) return; + glad_glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)load("glColorMaskIndexedEXT"); + glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); + glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); + glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); + glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); + glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); +} +static void load_GL_EXT_draw_instanced(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_instanced) return; + glad_glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)load("glDrawArraysInstancedEXT"); + glad_glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)load("glDrawElementsInstancedEXT"); +} +static void load_GL_EXT_draw_range_elements(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_range_elements) return; + glad_glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)load("glDrawRangeElementsEXT"); +} +static void load_GL_EXT_external_buffer(GLADloadproc load) { + if(!GLAD_GL_EXT_external_buffer) return; + glad_glBufferStorageExternalEXT = (PFNGLBUFFERSTORAGEEXTERNALEXTPROC)load("glBufferStorageExternalEXT"); + glad_glNamedBufferStorageExternalEXT = (PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)load("glNamedBufferStorageExternalEXT"); +} +static void load_GL_EXT_fog_coord(GLADloadproc load) { + if(!GLAD_GL_EXT_fog_coord) return; + glad_glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)load("glFogCoordfEXT"); + glad_glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)load("glFogCoordfvEXT"); + glad_glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)load("glFogCoorddEXT"); + glad_glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)load("glFogCoorddvEXT"); + glad_glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)load("glFogCoordPointerEXT"); +} +static void load_GL_EXT_framebuffer_blit(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_blit) return; + glad_glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)load("glBlitFramebufferEXT"); +} +static void load_GL_EXT_framebuffer_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_multisample) return; + glad_glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glRenderbufferStorageMultisampleEXT"); +} +static void load_GL_EXT_framebuffer_object(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_object) return; + glad_glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)load("glIsRenderbufferEXT"); + glad_glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)load("glBindRenderbufferEXT"); + glad_glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)load("glDeleteRenderbuffersEXT"); + glad_glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)load("glGenRenderbuffersEXT"); + glad_glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)load("glRenderbufferStorageEXT"); + glad_glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)load("glGetRenderbufferParameterivEXT"); + glad_glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)load("glIsFramebufferEXT"); + glad_glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)load("glBindFramebufferEXT"); + glad_glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)load("glDeleteFramebuffersEXT"); + glad_glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)load("glGenFramebuffersEXT"); + glad_glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)load("glCheckFramebufferStatusEXT"); + glad_glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)load("glFramebufferTexture1DEXT"); + glad_glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)load("glFramebufferTexture2DEXT"); + glad_glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)load("glFramebufferTexture3DEXT"); + glad_glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)load("glFramebufferRenderbufferEXT"); + glad_glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetFramebufferAttachmentParameterivEXT"); + glad_glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)load("glGenerateMipmapEXT"); +} +static void load_GL_EXT_geometry_shader4(GLADloadproc load) { + if(!GLAD_GL_EXT_geometry_shader4) return; + glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); +} +static void load_GL_EXT_gpu_program_parameters(GLADloadproc load) { + if(!GLAD_GL_EXT_gpu_program_parameters) return; + glad_glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)load("glProgramEnvParameters4fvEXT"); + glad_glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glProgramLocalParameters4fvEXT"); +} +static void load_GL_EXT_gpu_shader4(GLADloadproc load) { + if(!GLAD_GL_EXT_gpu_shader4) return; + glad_glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)load("glGetUniformuivEXT"); + glad_glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)load("glBindFragDataLocationEXT"); + glad_glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)load("glGetFragDataLocationEXT"); + glad_glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)load("glUniform1uiEXT"); + glad_glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)load("glUniform2uiEXT"); + glad_glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)load("glUniform3uiEXT"); + glad_glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)load("glUniform4uiEXT"); + glad_glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)load("glUniform1uivEXT"); + glad_glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)load("glUniform2uivEXT"); + glad_glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)load("glUniform3uivEXT"); + glad_glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)load("glUniform4uivEXT"); +} +static void load_GL_EXT_histogram(GLADloadproc load) { + if(!GLAD_GL_EXT_histogram) return; + glad_glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)load("glGetHistogramEXT"); + glad_glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)load("glGetHistogramParameterfvEXT"); + glad_glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)load("glGetHistogramParameterivEXT"); + glad_glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)load("glGetMinmaxEXT"); + glad_glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)load("glGetMinmaxParameterfvEXT"); + glad_glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)load("glGetMinmaxParameterivEXT"); + glad_glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)load("glHistogramEXT"); + glad_glMinmaxEXT = (PFNGLMINMAXEXTPROC)load("glMinmaxEXT"); + glad_glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)load("glResetHistogramEXT"); + glad_glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)load("glResetMinmaxEXT"); +} +static void load_GL_EXT_index_func(GLADloadproc load) { + if(!GLAD_GL_EXT_index_func) return; + glad_glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)load("glIndexFuncEXT"); +} +static void load_GL_EXT_index_material(GLADloadproc load) { + if(!GLAD_GL_EXT_index_material) return; + glad_glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)load("glIndexMaterialEXT"); +} +static void load_GL_EXT_light_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_light_texture) return; + glad_glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)load("glApplyTextureEXT"); + glad_glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)load("glTextureLightEXT"); + glad_glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)load("glTextureMaterialEXT"); +} +static void load_GL_EXT_memory_object(GLADloadproc load) { + if(!GLAD_GL_EXT_memory_object) return; + glad_glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)load("glGetUnsignedBytevEXT"); + glad_glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)load("glGetUnsignedBytei_vEXT"); + glad_glDeleteMemoryObjectsEXT = (PFNGLDELETEMEMORYOBJECTSEXTPROC)load("glDeleteMemoryObjectsEXT"); + glad_glIsMemoryObjectEXT = (PFNGLISMEMORYOBJECTEXTPROC)load("glIsMemoryObjectEXT"); + glad_glCreateMemoryObjectsEXT = (PFNGLCREATEMEMORYOBJECTSEXTPROC)load("glCreateMemoryObjectsEXT"); + glad_glMemoryObjectParameterivEXT = (PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)load("glMemoryObjectParameterivEXT"); + glad_glGetMemoryObjectParameterivEXT = (PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)load("glGetMemoryObjectParameterivEXT"); + glad_glTexStorageMem2DEXT = (PFNGLTEXSTORAGEMEM2DEXTPROC)load("glTexStorageMem2DEXT"); + glad_glTexStorageMem2DMultisampleEXT = (PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)load("glTexStorageMem2DMultisampleEXT"); + glad_glTexStorageMem3DEXT = (PFNGLTEXSTORAGEMEM3DEXTPROC)load("glTexStorageMem3DEXT"); + glad_glTexStorageMem3DMultisampleEXT = (PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)load("glTexStorageMem3DMultisampleEXT"); + glad_glBufferStorageMemEXT = (PFNGLBUFFERSTORAGEMEMEXTPROC)load("glBufferStorageMemEXT"); + glad_glTextureStorageMem2DEXT = (PFNGLTEXTURESTORAGEMEM2DEXTPROC)load("glTextureStorageMem2DEXT"); + glad_glTextureStorageMem2DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)load("glTextureStorageMem2DMultisampleEXT"); + glad_glTextureStorageMem3DEXT = (PFNGLTEXTURESTORAGEMEM3DEXTPROC)load("glTextureStorageMem3DEXT"); + glad_glTextureStorageMem3DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)load("glTextureStorageMem3DMultisampleEXT"); + glad_glNamedBufferStorageMemEXT = (PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)load("glNamedBufferStorageMemEXT"); + glad_glTexStorageMem1DEXT = (PFNGLTEXSTORAGEMEM1DEXTPROC)load("glTexStorageMem1DEXT"); + glad_glTextureStorageMem1DEXT = (PFNGLTEXTURESTORAGEMEM1DEXTPROC)load("glTextureStorageMem1DEXT"); +} +static void load_GL_EXT_memory_object_fd(GLADloadproc load) { + if(!GLAD_GL_EXT_memory_object_fd) return; + glad_glImportMemoryFdEXT = (PFNGLIMPORTMEMORYFDEXTPROC)load("glImportMemoryFdEXT"); +} +static void load_GL_EXT_memory_object_win32(GLADloadproc load) { + if(!GLAD_GL_EXT_memory_object_win32) return; + glad_glImportMemoryWin32HandleEXT = (PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)load("glImportMemoryWin32HandleEXT"); + glad_glImportMemoryWin32NameEXT = (PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)load("glImportMemoryWin32NameEXT"); +} +static void load_GL_EXT_multi_draw_arrays(GLADloadproc load) { + if(!GLAD_GL_EXT_multi_draw_arrays) return; + glad_glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)load("glMultiDrawArraysEXT"); + glad_glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)load("glMultiDrawElementsEXT"); +} +static void load_GL_EXT_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_multisample) return; + glad_glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)load("glSampleMaskEXT"); + glad_glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)load("glSamplePatternEXT"); +} +static void load_GL_EXT_paletted_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_paletted_texture) return; + glad_glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)load("glColorTableEXT"); + glad_glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)load("glGetColorTableEXT"); + glad_glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)load("glGetColorTableParameterivEXT"); + glad_glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)load("glGetColorTableParameterfvEXT"); +} +static void load_GL_EXT_pixel_transform(GLADloadproc load) { + if(!GLAD_GL_EXT_pixel_transform) return; + glad_glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)load("glPixelTransformParameteriEXT"); + glad_glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)load("glPixelTransformParameterfEXT"); + glad_glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)load("glPixelTransformParameterivEXT"); + glad_glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)load("glPixelTransformParameterfvEXT"); + glad_glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)load("glGetPixelTransformParameterivEXT"); + glad_glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)load("glGetPixelTransformParameterfvEXT"); +} +static void load_GL_EXT_point_parameters(GLADloadproc load) { + if(!GLAD_GL_EXT_point_parameters) return; + glad_glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)load("glPointParameterfEXT"); + glad_glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)load("glPointParameterfvEXT"); +} +static void load_GL_EXT_polygon_offset(GLADloadproc load) { + if(!GLAD_GL_EXT_polygon_offset) return; + glad_glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)load("glPolygonOffsetEXT"); +} +static void load_GL_EXT_polygon_offset_clamp(GLADloadproc load) { + if(!GLAD_GL_EXT_polygon_offset_clamp) return; + glad_glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)load("glPolygonOffsetClampEXT"); +} +static void load_GL_EXT_provoking_vertex(GLADloadproc load) { + if(!GLAD_GL_EXT_provoking_vertex) return; + glad_glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)load("glProvokingVertexEXT"); +} +static void load_GL_EXT_raster_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_raster_multisample) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); +} +static void load_GL_EXT_secondary_color(GLADloadproc load) { + if(!GLAD_GL_EXT_secondary_color) return; + glad_glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)load("glSecondaryColor3bEXT"); + glad_glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)load("glSecondaryColor3bvEXT"); + glad_glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)load("glSecondaryColor3dEXT"); + glad_glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)load("glSecondaryColor3dvEXT"); + glad_glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)load("glSecondaryColor3fEXT"); + glad_glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)load("glSecondaryColor3fvEXT"); + glad_glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)load("glSecondaryColor3iEXT"); + glad_glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)load("glSecondaryColor3ivEXT"); + glad_glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)load("glSecondaryColor3sEXT"); + glad_glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)load("glSecondaryColor3svEXT"); + glad_glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)load("glSecondaryColor3ubEXT"); + glad_glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)load("glSecondaryColor3ubvEXT"); + glad_glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)load("glSecondaryColor3uiEXT"); + glad_glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)load("glSecondaryColor3uivEXT"); + glad_glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)load("glSecondaryColor3usEXT"); + glad_glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)load("glSecondaryColor3usvEXT"); + glad_glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)load("glSecondaryColorPointerEXT"); +} +static void load_GL_EXT_semaphore(GLADloadproc load) { + if(!GLAD_GL_EXT_semaphore) return; + glad_glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)load("glGetUnsignedBytevEXT"); + glad_glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)load("glGetUnsignedBytei_vEXT"); + glad_glGenSemaphoresEXT = (PFNGLGENSEMAPHORESEXTPROC)load("glGenSemaphoresEXT"); + glad_glDeleteSemaphoresEXT = (PFNGLDELETESEMAPHORESEXTPROC)load("glDeleteSemaphoresEXT"); + glad_glIsSemaphoreEXT = (PFNGLISSEMAPHOREEXTPROC)load("glIsSemaphoreEXT"); + glad_glSemaphoreParameterui64vEXT = (PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)load("glSemaphoreParameterui64vEXT"); + glad_glGetSemaphoreParameterui64vEXT = (PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)load("glGetSemaphoreParameterui64vEXT"); + glad_glWaitSemaphoreEXT = (PFNGLWAITSEMAPHOREEXTPROC)load("glWaitSemaphoreEXT"); + glad_glSignalSemaphoreEXT = (PFNGLSIGNALSEMAPHOREEXTPROC)load("glSignalSemaphoreEXT"); +} +static void load_GL_EXT_semaphore_fd(GLADloadproc load) { + if(!GLAD_GL_EXT_semaphore_fd) return; + glad_glImportSemaphoreFdEXT = (PFNGLIMPORTSEMAPHOREFDEXTPROC)load("glImportSemaphoreFdEXT"); +} +static void load_GL_EXT_semaphore_win32(GLADloadproc load) { + if(!GLAD_GL_EXT_semaphore_win32) return; + glad_glImportSemaphoreWin32HandleEXT = (PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)load("glImportSemaphoreWin32HandleEXT"); + glad_glImportSemaphoreWin32NameEXT = (PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)load("glImportSemaphoreWin32NameEXT"); +} +static void load_GL_EXT_separate_shader_objects(GLADloadproc load) { + if(!GLAD_GL_EXT_separate_shader_objects) return; + glad_glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)load("glUseShaderProgramEXT"); + glad_glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)load("glActiveProgramEXT"); + glad_glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)load("glCreateShaderProgramEXT"); + glad_glActiveShaderProgramEXT = (PFNGLACTIVESHADERPROGRAMEXTPROC)load("glActiveShaderProgramEXT"); + glad_glBindProgramPipelineEXT = (PFNGLBINDPROGRAMPIPELINEEXTPROC)load("glBindProgramPipelineEXT"); + glad_glCreateShaderProgramvEXT = (PFNGLCREATESHADERPROGRAMVEXTPROC)load("glCreateShaderProgramvEXT"); + glad_glDeleteProgramPipelinesEXT = (PFNGLDELETEPROGRAMPIPELINESEXTPROC)load("glDeleteProgramPipelinesEXT"); + glad_glGenProgramPipelinesEXT = (PFNGLGENPROGRAMPIPELINESEXTPROC)load("glGenProgramPipelinesEXT"); + glad_glGetProgramPipelineInfoLogEXT = (PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)load("glGetProgramPipelineInfoLogEXT"); + glad_glGetProgramPipelineivEXT = (PFNGLGETPROGRAMPIPELINEIVEXTPROC)load("glGetProgramPipelineivEXT"); + glad_glIsProgramPipelineEXT = (PFNGLISPROGRAMPIPELINEEXTPROC)load("glIsProgramPipelineEXT"); + glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); + glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); + glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); + glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); + glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); + glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); + glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); + glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); + glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); + glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); + glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); + glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); + glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); + glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); + glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); + glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); + glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); + glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); + glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glUseProgramStagesEXT = (PFNGLUSEPROGRAMSTAGESEXTPROC)load("glUseProgramStagesEXT"); + glad_glValidateProgramPipelineEXT = (PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)load("glValidateProgramPipelineEXT"); + glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); + glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); + glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); + glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); + glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); + glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); + glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); + glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); + glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); + glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); + glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); + glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); + glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); +} +static void load_GL_EXT_shader_framebuffer_fetch_non_coherent(GLADloadproc load) { + if(!GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent) return; + glad_glFramebufferFetchBarrierEXT = (PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)load("glFramebufferFetchBarrierEXT"); +} +static void load_GL_EXT_shader_image_load_store(GLADloadproc load) { + if(!GLAD_GL_EXT_shader_image_load_store) return; + glad_glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)load("glBindImageTextureEXT"); + glad_glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)load("glMemoryBarrierEXT"); +} +static void load_GL_EXT_stencil_clear_tag(GLADloadproc load) { + if(!GLAD_GL_EXT_stencil_clear_tag) return; + glad_glStencilClearTagEXT = (PFNGLSTENCILCLEARTAGEXTPROC)load("glStencilClearTagEXT"); +} +static void load_GL_EXT_stencil_two_side(GLADloadproc load) { + if(!GLAD_GL_EXT_stencil_two_side) return; + glad_glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)load("glActiveStencilFaceEXT"); +} +static void load_GL_EXT_subtexture(GLADloadproc load) { + if(!GLAD_GL_EXT_subtexture) return; + glad_glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)load("glTexSubImage1DEXT"); + glad_glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)load("glTexSubImage2DEXT"); +} +static void load_GL_EXT_texture3D(GLADloadproc load) { + if(!GLAD_GL_EXT_texture3D) return; + glad_glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)load("glTexImage3DEXT"); + glad_glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)load("glTexSubImage3DEXT"); +} +static void load_GL_EXT_texture_array(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_array) return; + glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); +} +static void load_GL_EXT_texture_buffer_object(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_buffer_object) return; + glad_glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)load("glTexBufferEXT"); +} +static void load_GL_EXT_texture_integer(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_integer) return; + glad_glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)load("glTexParameterIivEXT"); + glad_glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)load("glTexParameterIuivEXT"); + glad_glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)load("glGetTexParameterIivEXT"); + glad_glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)load("glGetTexParameterIuivEXT"); + glad_glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)load("glClearColorIiEXT"); + glad_glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)load("glClearColorIuiEXT"); +} +static void load_GL_EXT_texture_object(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_object) return; + glad_glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)load("glAreTexturesResidentEXT"); + glad_glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)load("glBindTextureEXT"); + glad_glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)load("glDeleteTexturesEXT"); + glad_glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)load("glGenTexturesEXT"); + glad_glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)load("glIsTextureEXT"); + glad_glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)load("glPrioritizeTexturesEXT"); +} +static void load_GL_EXT_texture_perturb_normal(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_perturb_normal) return; + glad_glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)load("glTextureNormalEXT"); +} +static void load_GL_EXT_timer_query(GLADloadproc load) { + if(!GLAD_GL_EXT_timer_query) return; + glad_glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)load("glGetQueryObjecti64vEXT"); + glad_glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)load("glGetQueryObjectui64vEXT"); +} +static void load_GL_EXT_transform_feedback(GLADloadproc load) { + if(!GLAD_GL_EXT_transform_feedback) return; + glad_glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)load("glBeginTransformFeedbackEXT"); + glad_glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)load("glEndTransformFeedbackEXT"); + glad_glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)load("glBindBufferRangeEXT"); + glad_glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)load("glBindBufferOffsetEXT"); + glad_glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)load("glBindBufferBaseEXT"); + glad_glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)load("glTransformFeedbackVaryingsEXT"); + glad_glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)load("glGetTransformFeedbackVaryingEXT"); +} +static void load_GL_EXT_vertex_array(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_array) return; + glad_glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)load("glArrayElementEXT"); + glad_glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)load("glColorPointerEXT"); + glad_glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)load("glDrawArraysEXT"); + glad_glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)load("glEdgeFlagPointerEXT"); + glad_glGetPointervEXT = (PFNGLGETPOINTERVEXTPROC)load("glGetPointervEXT"); + glad_glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)load("glIndexPointerEXT"); + glad_glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)load("glNormalPointerEXT"); + glad_glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)load("glTexCoordPointerEXT"); + glad_glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)load("glVertexPointerEXT"); +} +static void load_GL_EXT_vertex_attrib_64bit(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_attrib_64bit) return; + glad_glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)load("glVertexAttribL1dEXT"); + glad_glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)load("glVertexAttribL2dEXT"); + glad_glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)load("glVertexAttribL3dEXT"); + glad_glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)load("glVertexAttribL4dEXT"); + glad_glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)load("glVertexAttribL1dvEXT"); + glad_glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)load("glVertexAttribL2dvEXT"); + glad_glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)load("glVertexAttribL3dvEXT"); + glad_glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)load("glVertexAttribL4dvEXT"); + glad_glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)load("glVertexAttribLPointerEXT"); + glad_glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)load("glGetVertexAttribLdvEXT"); +} +static void load_GL_EXT_vertex_shader(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_shader) return; + glad_glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)load("glBeginVertexShaderEXT"); + glad_glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)load("glEndVertexShaderEXT"); + glad_glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)load("glBindVertexShaderEXT"); + glad_glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)load("glGenVertexShadersEXT"); + glad_glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)load("glDeleteVertexShaderEXT"); + glad_glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)load("glShaderOp1EXT"); + glad_glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)load("glShaderOp2EXT"); + glad_glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)load("glShaderOp3EXT"); + glad_glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)load("glSwizzleEXT"); + glad_glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)load("glWriteMaskEXT"); + glad_glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)load("glInsertComponentEXT"); + glad_glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)load("glExtractComponentEXT"); + glad_glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)load("glGenSymbolsEXT"); + glad_glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)load("glSetInvariantEXT"); + glad_glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)load("glSetLocalConstantEXT"); + glad_glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)load("glVariantbvEXT"); + glad_glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)load("glVariantsvEXT"); + glad_glVariantivEXT = (PFNGLVARIANTIVEXTPROC)load("glVariantivEXT"); + glad_glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)load("glVariantfvEXT"); + glad_glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)load("glVariantdvEXT"); + glad_glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)load("glVariantubvEXT"); + glad_glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)load("glVariantusvEXT"); + glad_glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)load("glVariantuivEXT"); + glad_glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)load("glVariantPointerEXT"); + glad_glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)load("glEnableVariantClientStateEXT"); + glad_glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)load("glDisableVariantClientStateEXT"); + glad_glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)load("glBindLightParameterEXT"); + glad_glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)load("glBindMaterialParameterEXT"); + glad_glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)load("glBindTexGenParameterEXT"); + glad_glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)load("glBindTextureUnitParameterEXT"); + glad_glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)load("glBindParameterEXT"); + glad_glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)load("glIsVariantEnabledEXT"); + glad_glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)load("glGetVariantBooleanvEXT"); + glad_glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)load("glGetVariantIntegervEXT"); + glad_glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)load("glGetVariantFloatvEXT"); + glad_glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)load("glGetVariantPointervEXT"); + glad_glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)load("glGetInvariantBooleanvEXT"); + glad_glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)load("glGetInvariantIntegervEXT"); + glad_glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)load("glGetInvariantFloatvEXT"); + glad_glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)load("glGetLocalConstantBooleanvEXT"); + glad_glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)load("glGetLocalConstantIntegervEXT"); + glad_glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)load("glGetLocalConstantFloatvEXT"); +} +static void load_GL_EXT_vertex_weighting(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_weighting) return; + glad_glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)load("glVertexWeightfEXT"); + glad_glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)load("glVertexWeightfvEXT"); + glad_glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)load("glVertexWeightPointerEXT"); +} +static void load_GL_EXT_win32_keyed_mutex(GLADloadproc load) { + if(!GLAD_GL_EXT_win32_keyed_mutex) return; + glad_glAcquireKeyedMutexWin32EXT = (PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)load("glAcquireKeyedMutexWin32EXT"); + glad_glReleaseKeyedMutexWin32EXT = (PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)load("glReleaseKeyedMutexWin32EXT"); +} +static void load_GL_EXT_window_rectangles(GLADloadproc load) { + if(!GLAD_GL_EXT_window_rectangles) return; + glad_glWindowRectanglesEXT = (PFNGLWINDOWRECTANGLESEXTPROC)load("glWindowRectanglesEXT"); +} +static void load_GL_EXT_x11_sync_object(GLADloadproc load) { + if(!GLAD_GL_EXT_x11_sync_object) return; + glad_glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)load("glImportSyncEXT"); +} +static void load_GL_GREMEDY_frame_terminator(GLADloadproc load) { + if(!GLAD_GL_GREMEDY_frame_terminator) return; + glad_glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)load("glFrameTerminatorGREMEDY"); +} +static void load_GL_GREMEDY_string_marker(GLADloadproc load) { + if(!GLAD_GL_GREMEDY_string_marker) return; + glad_glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)load("glStringMarkerGREMEDY"); +} +static void load_GL_HP_image_transform(GLADloadproc load) { + if(!GLAD_GL_HP_image_transform) return; + glad_glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)load("glImageTransformParameteriHP"); + glad_glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)load("glImageTransformParameterfHP"); + glad_glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)load("glImageTransformParameterivHP"); + glad_glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)load("glImageTransformParameterfvHP"); + glad_glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)load("glGetImageTransformParameterivHP"); + glad_glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)load("glGetImageTransformParameterfvHP"); +} +static void load_GL_IBM_multimode_draw_arrays(GLADloadproc load) { + if(!GLAD_GL_IBM_multimode_draw_arrays) return; + glad_glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)load("glMultiModeDrawArraysIBM"); + glad_glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)load("glMultiModeDrawElementsIBM"); +} +static void load_GL_IBM_static_data(GLADloadproc load) { + if(!GLAD_GL_IBM_static_data) return; + glad_glFlushStaticDataIBM = (PFNGLFLUSHSTATICDATAIBMPROC)load("glFlushStaticDataIBM"); +} +static void load_GL_IBM_vertex_array_lists(GLADloadproc load) { + if(!GLAD_GL_IBM_vertex_array_lists) return; + glad_glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)load("glColorPointerListIBM"); + glad_glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)load("glSecondaryColorPointerListIBM"); + glad_glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)load("glEdgeFlagPointerListIBM"); + glad_glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)load("glFogCoordPointerListIBM"); + glad_glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)load("glIndexPointerListIBM"); + glad_glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)load("glNormalPointerListIBM"); + glad_glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)load("glTexCoordPointerListIBM"); + glad_glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)load("glVertexPointerListIBM"); +} +static void load_GL_INGR_blend_func_separate(GLADloadproc load) { + if(!GLAD_GL_INGR_blend_func_separate) return; + glad_glBlendFuncSeparateINGR = (PFNGLBLENDFUNCSEPARATEINGRPROC)load("glBlendFuncSeparateINGR"); +} +static void load_GL_INTEL_framebuffer_CMAA(GLADloadproc load) { + if(!GLAD_GL_INTEL_framebuffer_CMAA) return; + glad_glApplyFramebufferAttachmentCMAAINTEL = (PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)load("glApplyFramebufferAttachmentCMAAINTEL"); +} +static void load_GL_INTEL_map_texture(GLADloadproc load) { + if(!GLAD_GL_INTEL_map_texture) return; + glad_glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)load("glSyncTextureINTEL"); + glad_glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)load("glUnmapTexture2DINTEL"); + glad_glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)load("glMapTexture2DINTEL"); +} +static void load_GL_INTEL_parallel_arrays(GLADloadproc load) { + if(!GLAD_GL_INTEL_parallel_arrays) return; + glad_glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)load("glVertexPointervINTEL"); + glad_glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)load("glNormalPointervINTEL"); + glad_glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)load("glColorPointervINTEL"); + glad_glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)load("glTexCoordPointervINTEL"); +} +static void load_GL_INTEL_performance_query(GLADloadproc load) { + if(!GLAD_GL_INTEL_performance_query) return; + glad_glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)load("glBeginPerfQueryINTEL"); + glad_glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)load("glCreatePerfQueryINTEL"); + glad_glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)load("glDeletePerfQueryINTEL"); + glad_glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)load("glEndPerfQueryINTEL"); + glad_glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)load("glGetFirstPerfQueryIdINTEL"); + glad_glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)load("glGetNextPerfQueryIdINTEL"); + glad_glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)load("glGetPerfCounterInfoINTEL"); + glad_glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)load("glGetPerfQueryDataINTEL"); + glad_glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)load("glGetPerfQueryIdByNameINTEL"); + glad_glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)load("glGetPerfQueryInfoINTEL"); +} +static void load_GL_KHR_blend_equation_advanced(GLADloadproc load) { + if(!GLAD_GL_KHR_blend_equation_advanced) return; + glad_glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)load("glBlendBarrierKHR"); +} +static void load_GL_KHR_debug(GLADloadproc load) { + if(!GLAD_GL_KHR_debug) return; + glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)load("glDebugMessageControl"); + glad_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)load("glDebugMessageInsert"); + glad_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)load("glDebugMessageCallback"); + glad_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)load("glGetDebugMessageLog"); + glad_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)load("glPushDebugGroup"); + glad_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)load("glPopDebugGroup"); + glad_glObjectLabel = (PFNGLOBJECTLABELPROC)load("glObjectLabel"); + glad_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)load("glGetObjectLabel"); + glad_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)load("glObjectPtrLabel"); + glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)load("glGetObjectPtrLabel"); + glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); + glad_glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC)load("glDebugMessageControlKHR"); + glad_glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC)load("glDebugMessageInsertKHR"); + glad_glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)load("glDebugMessageCallbackKHR"); + glad_glGetDebugMessageLogKHR = (PFNGLGETDEBUGMESSAGELOGKHRPROC)load("glGetDebugMessageLogKHR"); + glad_glPushDebugGroupKHR = (PFNGLPUSHDEBUGGROUPKHRPROC)load("glPushDebugGroupKHR"); + glad_glPopDebugGroupKHR = (PFNGLPOPDEBUGGROUPKHRPROC)load("glPopDebugGroupKHR"); + glad_glObjectLabelKHR = (PFNGLOBJECTLABELKHRPROC)load("glObjectLabelKHR"); + glad_glGetObjectLabelKHR = (PFNGLGETOBJECTLABELKHRPROC)load("glGetObjectLabelKHR"); + glad_glObjectPtrLabelKHR = (PFNGLOBJECTPTRLABELKHRPROC)load("glObjectPtrLabelKHR"); + glad_glGetObjectPtrLabelKHR = (PFNGLGETOBJECTPTRLABELKHRPROC)load("glGetObjectPtrLabelKHR"); + glad_glGetPointervKHR = (PFNGLGETPOINTERVKHRPROC)load("glGetPointervKHR"); +} +static void load_GL_KHR_parallel_shader_compile(GLADloadproc load) { + if(!GLAD_GL_KHR_parallel_shader_compile) return; + glad_glMaxShaderCompilerThreadsKHR = (PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)load("glMaxShaderCompilerThreadsKHR"); +} +static void load_GL_KHR_robustness(GLADloadproc load) { + if(!GLAD_GL_KHR_robustness) return; + glad_glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)load("glGetGraphicsResetStatus"); + glad_glReadnPixels = (PFNGLREADNPIXELSPROC)load("glReadnPixels"); + glad_glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)load("glGetnUniformfv"); + glad_glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)load("glGetnUniformiv"); + glad_glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)load("glGetnUniformuiv"); + glad_glGetGraphicsResetStatusKHR = (PFNGLGETGRAPHICSRESETSTATUSKHRPROC)load("glGetGraphicsResetStatusKHR"); + glad_glReadnPixelsKHR = (PFNGLREADNPIXELSKHRPROC)load("glReadnPixelsKHR"); + glad_glGetnUniformfvKHR = (PFNGLGETNUNIFORMFVKHRPROC)load("glGetnUniformfvKHR"); + glad_glGetnUniformivKHR = (PFNGLGETNUNIFORMIVKHRPROC)load("glGetnUniformivKHR"); + glad_glGetnUniformuivKHR = (PFNGLGETNUNIFORMUIVKHRPROC)load("glGetnUniformuivKHR"); +} +static void load_GL_MESA_framebuffer_flip_y(GLADloadproc load) { + if(!GLAD_GL_MESA_framebuffer_flip_y) return; + glad_glFramebufferParameteriMESA = (PFNGLFRAMEBUFFERPARAMETERIMESAPROC)load("glFramebufferParameteriMESA"); + glad_glGetFramebufferParameterivMESA = (PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)load("glGetFramebufferParameterivMESA"); +} +static void load_GL_MESA_resize_buffers(GLADloadproc load) { + if(!GLAD_GL_MESA_resize_buffers) return; + glad_glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)load("glResizeBuffersMESA"); +} +static void load_GL_MESA_window_pos(GLADloadproc load) { + if(!GLAD_GL_MESA_window_pos) return; + glad_glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)load("glWindowPos2dMESA"); + glad_glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)load("glWindowPos2dvMESA"); + glad_glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)load("glWindowPos2fMESA"); + glad_glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)load("glWindowPos2fvMESA"); + glad_glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)load("glWindowPos2iMESA"); + glad_glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)load("glWindowPos2ivMESA"); + glad_glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)load("glWindowPos2sMESA"); + glad_glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)load("glWindowPos2svMESA"); + glad_glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)load("glWindowPos3dMESA"); + glad_glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)load("glWindowPos3dvMESA"); + glad_glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)load("glWindowPos3fMESA"); + glad_glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)load("glWindowPos3fvMESA"); + glad_glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)load("glWindowPos3iMESA"); + glad_glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)load("glWindowPos3ivMESA"); + glad_glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)load("glWindowPos3sMESA"); + glad_glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)load("glWindowPos3svMESA"); + glad_glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)load("glWindowPos4dMESA"); + glad_glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)load("glWindowPos4dvMESA"); + glad_glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)load("glWindowPos4fMESA"); + glad_glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)load("glWindowPos4fvMESA"); + glad_glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)load("glWindowPos4iMESA"); + glad_glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)load("glWindowPos4ivMESA"); + glad_glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)load("glWindowPos4sMESA"); + glad_glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)load("glWindowPos4svMESA"); +} +static void load_GL_NVX_conditional_render(GLADloadproc load) { + if(!GLAD_GL_NVX_conditional_render) return; + glad_glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)load("glBeginConditionalRenderNVX"); + glad_glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)load("glEndConditionalRenderNVX"); +} +static void load_GL_NVX_gpu_multicast2(GLADloadproc load) { + if(!GLAD_GL_NVX_gpu_multicast2) return; + glad_glUploadGpuMaskNVX = (PFNGLUPLOADGPUMASKNVXPROC)load("glUploadGpuMaskNVX"); + glad_glMulticastViewportArrayvNVX = (PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)load("glMulticastViewportArrayvNVX"); + glad_glMulticastViewportPositionWScaleNVX = (PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)load("glMulticastViewportPositionWScaleNVX"); + glad_glMulticastScissorArrayvNVX = (PFNGLMULTICASTSCISSORARRAYVNVXPROC)load("glMulticastScissorArrayvNVX"); + glad_glAsyncCopyBufferSubDataNVX = (PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)load("glAsyncCopyBufferSubDataNVX"); + glad_glAsyncCopyImageSubDataNVX = (PFNGLASYNCCOPYIMAGESUBDATANVXPROC)load("glAsyncCopyImageSubDataNVX"); +} +static void load_GL_NVX_linked_gpu_multicast(GLADloadproc load) { + if(!GLAD_GL_NVX_linked_gpu_multicast) return; + glad_glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)load("glLGPUNamedBufferSubDataNVX"); + glad_glLGPUCopyImageSubDataNVX = (PFNGLLGPUCOPYIMAGESUBDATANVXPROC)load("glLGPUCopyImageSubDataNVX"); + glad_glLGPUInterlockNVX = (PFNGLLGPUINTERLOCKNVXPROC)load("glLGPUInterlockNVX"); +} +static void load_GL_NVX_progress_fence(GLADloadproc load) { + if(!GLAD_GL_NVX_progress_fence) return; + glad_glCreateProgressFenceNVX = (PFNGLCREATEPROGRESSFENCENVXPROC)load("glCreateProgressFenceNVX"); + glad_glSignalSemaphoreui64NVX = (PFNGLSIGNALSEMAPHOREUI64NVXPROC)load("glSignalSemaphoreui64NVX"); + glad_glWaitSemaphoreui64NVX = (PFNGLWAITSEMAPHOREUI64NVXPROC)load("glWaitSemaphoreui64NVX"); + glad_glClientWaitSemaphoreui64NVX = (PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)load("glClientWaitSemaphoreui64NVX"); +} +static void load_GL_NV_alpha_to_coverage_dither_control(GLADloadproc load) { + if(!GLAD_GL_NV_alpha_to_coverage_dither_control) return; + glad_glAlphaToCoverageDitherControlNV = (PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)load("glAlphaToCoverageDitherControlNV"); +} +static void load_GL_NV_bindless_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)load("glMultiDrawArraysIndirectBindlessNV"); + glad_glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)load("glMultiDrawElementsIndirectBindlessNV"); +} +static void load_GL_NV_bindless_multi_draw_indirect_count(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_multi_draw_indirect_count) return; + glad_glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawArraysIndirectBindlessCountNV"); + glad_glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawElementsIndirectBindlessCountNV"); +} +static void load_GL_NV_bindless_texture(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_texture) return; + glad_glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)load("glGetTextureHandleNV"); + glad_glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)load("glGetTextureSamplerHandleNV"); + glad_glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)load("glMakeTextureHandleResidentNV"); + glad_glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)load("glMakeTextureHandleNonResidentNV"); + glad_glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)load("glGetImageHandleNV"); + glad_glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)load("glMakeImageHandleResidentNV"); + glad_glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)load("glMakeImageHandleNonResidentNV"); + glad_glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)load("glUniformHandleui64NV"); + glad_glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)load("glUniformHandleui64vNV"); + glad_glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)load("glProgramUniformHandleui64NV"); + glad_glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)load("glProgramUniformHandleui64vNV"); + glad_glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)load("glIsTextureHandleResidentNV"); + glad_glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)load("glIsImageHandleResidentNV"); +} +static void load_GL_NV_blend_equation_advanced(GLADloadproc load) { + if(!GLAD_GL_NV_blend_equation_advanced) return; + glad_glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)load("glBlendParameteriNV"); + glad_glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)load("glBlendBarrierNV"); +} +static void load_GL_NV_clip_space_w_scaling(GLADloadproc load) { + if(!GLAD_GL_NV_clip_space_w_scaling) return; + glad_glViewportPositionWScaleNV = (PFNGLVIEWPORTPOSITIONWSCALENVPROC)load("glViewportPositionWScaleNV"); +} +static void load_GL_NV_command_list(GLADloadproc load) { + if(!GLAD_GL_NV_command_list) return; + glad_glCreateStatesNV = (PFNGLCREATESTATESNVPROC)load("glCreateStatesNV"); + glad_glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)load("glDeleteStatesNV"); + glad_glIsStateNV = (PFNGLISSTATENVPROC)load("glIsStateNV"); + glad_glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)load("glStateCaptureNV"); + glad_glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)load("glGetCommandHeaderNV"); + glad_glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)load("glGetStageIndexNV"); + glad_glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)load("glDrawCommandsNV"); + glad_glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)load("glDrawCommandsAddressNV"); + glad_glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)load("glDrawCommandsStatesNV"); + glad_glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)load("glDrawCommandsStatesAddressNV"); + glad_glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)load("glCreateCommandListsNV"); + glad_glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)load("glDeleteCommandListsNV"); + glad_glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)load("glIsCommandListNV"); + glad_glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)load("glListDrawCommandsStatesClientNV"); + glad_glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)load("glCommandListSegmentsNV"); + glad_glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)load("glCompileCommandListNV"); + glad_glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)load("glCallCommandListNV"); +} +static void load_GL_NV_conditional_render(GLADloadproc load) { + if(!GLAD_GL_NV_conditional_render) return; + glad_glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)load("glBeginConditionalRenderNV"); + glad_glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)load("glEndConditionalRenderNV"); +} +static void load_GL_NV_conservative_raster(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster) return; + glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)load("glSubpixelPrecisionBiasNV"); +} +static void load_GL_NV_conservative_raster_dilate(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster_dilate) return; + glad_glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)load("glConservativeRasterParameterfNV"); +} +static void load_GL_NV_conservative_raster_pre_snap_triangles(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster_pre_snap_triangles) return; + glad_glConservativeRasterParameteriNV = (PFNGLCONSERVATIVERASTERPARAMETERINVPROC)load("glConservativeRasterParameteriNV"); +} +static void load_GL_NV_copy_image(GLADloadproc load) { + if(!GLAD_GL_NV_copy_image) return; + glad_glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)load("glCopyImageSubDataNV"); +} +static void load_GL_NV_depth_buffer_float(GLADloadproc load) { + if(!GLAD_GL_NV_depth_buffer_float) return; + glad_glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)load("glDepthRangedNV"); + glad_glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)load("glClearDepthdNV"); + glad_glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)load("glDepthBoundsdNV"); +} +static void load_GL_NV_draw_texture(GLADloadproc load) { + if(!GLAD_GL_NV_draw_texture) return; + glad_glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)load("glDrawTextureNV"); +} +static void load_GL_NV_draw_vulkan_image(GLADloadproc load) { + if(!GLAD_GL_NV_draw_vulkan_image) return; + glad_glDrawVkImageNV = (PFNGLDRAWVKIMAGENVPROC)load("glDrawVkImageNV"); + glad_glGetVkProcAddrNV = (PFNGLGETVKPROCADDRNVPROC)load("glGetVkProcAddrNV"); + glad_glWaitVkSemaphoreNV = (PFNGLWAITVKSEMAPHORENVPROC)load("glWaitVkSemaphoreNV"); + glad_glSignalVkSemaphoreNV = (PFNGLSIGNALVKSEMAPHORENVPROC)load("glSignalVkSemaphoreNV"); + glad_glSignalVkFenceNV = (PFNGLSIGNALVKFENCENVPROC)load("glSignalVkFenceNV"); +} +static void load_GL_NV_evaluators(GLADloadproc load) { + if(!GLAD_GL_NV_evaluators) return; + glad_glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)load("glMapControlPointsNV"); + glad_glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)load("glMapParameterivNV"); + glad_glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)load("glMapParameterfvNV"); + glad_glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)load("glGetMapControlPointsNV"); + glad_glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)load("glGetMapParameterivNV"); + glad_glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)load("glGetMapParameterfvNV"); + glad_glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)load("glGetMapAttribParameterivNV"); + glad_glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)load("glGetMapAttribParameterfvNV"); + glad_glEvalMapsNV = (PFNGLEVALMAPSNVPROC)load("glEvalMapsNV"); +} +static void load_GL_NV_explicit_multisample(GLADloadproc load) { + if(!GLAD_GL_NV_explicit_multisample) return; + glad_glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)load("glGetMultisamplefvNV"); + glad_glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)load("glSampleMaskIndexedNV"); + glad_glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)load("glTexRenderbufferNV"); +} +static void load_GL_NV_fence(GLADloadproc load) { + if(!GLAD_GL_NV_fence) return; + glad_glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)load("glDeleteFencesNV"); + glad_glGenFencesNV = (PFNGLGENFENCESNVPROC)load("glGenFencesNV"); + glad_glIsFenceNV = (PFNGLISFENCENVPROC)load("glIsFenceNV"); + glad_glTestFenceNV = (PFNGLTESTFENCENVPROC)load("glTestFenceNV"); + glad_glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)load("glGetFenceivNV"); + glad_glFinishFenceNV = (PFNGLFINISHFENCENVPROC)load("glFinishFenceNV"); + glad_glSetFenceNV = (PFNGLSETFENCENVPROC)load("glSetFenceNV"); +} +static void load_GL_NV_fragment_coverage_to_color(GLADloadproc load) { + if(!GLAD_GL_NV_fragment_coverage_to_color) return; + glad_glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)load("glFragmentCoverageColorNV"); +} +static void load_GL_NV_fragment_program(GLADloadproc load) { + if(!GLAD_GL_NV_fragment_program) return; + glad_glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)load("glProgramNamedParameter4fNV"); + glad_glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)load("glProgramNamedParameter4fvNV"); + glad_glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)load("glProgramNamedParameter4dNV"); + glad_glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)load("glProgramNamedParameter4dvNV"); + glad_glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)load("glGetProgramNamedParameterfvNV"); + glad_glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)load("glGetProgramNamedParameterdvNV"); +} +static void load_GL_NV_framebuffer_mixed_samples(GLADloadproc load) { + if(!GLAD_GL_NV_framebuffer_mixed_samples) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); + glad_glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)load("glCoverageModulationTableNV"); + glad_glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)load("glGetCoverageModulationTableNV"); + glad_glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)load("glCoverageModulationNV"); +} +static void load_GL_NV_framebuffer_multisample_coverage(GLADloadproc load) { + if(!GLAD_GL_NV_framebuffer_multisample_coverage) return; + glad_glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)load("glRenderbufferStorageMultisampleCoverageNV"); +} +static void load_GL_NV_geometry_program4(GLADloadproc load) { + if(!GLAD_GL_NV_geometry_program4) return; + glad_glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)load("glProgramVertexLimitNV"); + glad_glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)load("glFramebufferTextureEXT"); + glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); + glad_glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)load("glFramebufferTextureFaceEXT"); +} +static void load_GL_NV_gpu_multicast(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_multicast) return; + glad_glRenderGpuMaskNV = (PFNGLRENDERGPUMASKNVPROC)load("glRenderGpuMaskNV"); + glad_glMulticastBufferSubDataNV = (PFNGLMULTICASTBUFFERSUBDATANVPROC)load("glMulticastBufferSubDataNV"); + glad_glMulticastCopyBufferSubDataNV = (PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)load("glMulticastCopyBufferSubDataNV"); + glad_glMulticastCopyImageSubDataNV = (PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)load("glMulticastCopyImageSubDataNV"); + glad_glMulticastBlitFramebufferNV = (PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)load("glMulticastBlitFramebufferNV"); + glad_glMulticastFramebufferSampleLocationsfvNV = (PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glMulticastFramebufferSampleLocationsfvNV"); + glad_glMulticastBarrierNV = (PFNGLMULTICASTBARRIERNVPROC)load("glMulticastBarrierNV"); + glad_glMulticastWaitSyncNV = (PFNGLMULTICASTWAITSYNCNVPROC)load("glMulticastWaitSyncNV"); + glad_glMulticastGetQueryObjectivNV = (PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)load("glMulticastGetQueryObjectivNV"); + glad_glMulticastGetQueryObjectuivNV = (PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)load("glMulticastGetQueryObjectuivNV"); + glad_glMulticastGetQueryObjecti64vNV = (PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)load("glMulticastGetQueryObjecti64vNV"); + glad_glMulticastGetQueryObjectui64vNV = (PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)load("glMulticastGetQueryObjectui64vNV"); +} +static void load_GL_NV_gpu_program4(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_program4) return; + glad_glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)load("glProgramLocalParameterI4iNV"); + glad_glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)load("glProgramLocalParameterI4ivNV"); + glad_glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)load("glProgramLocalParametersI4ivNV"); + glad_glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)load("glProgramLocalParameterI4uiNV"); + glad_glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)load("glProgramLocalParameterI4uivNV"); + glad_glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)load("glProgramLocalParametersI4uivNV"); + glad_glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)load("glProgramEnvParameterI4iNV"); + glad_glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)load("glProgramEnvParameterI4ivNV"); + glad_glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)load("glProgramEnvParametersI4ivNV"); + glad_glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)load("glProgramEnvParameterI4uiNV"); + glad_glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)load("glProgramEnvParameterI4uivNV"); + glad_glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)load("glProgramEnvParametersI4uivNV"); + glad_glGetProgramLocalParameterIivNV = (PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)load("glGetProgramLocalParameterIivNV"); + glad_glGetProgramLocalParameterIuivNV = (PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)load("glGetProgramLocalParameterIuivNV"); + glad_glGetProgramEnvParameterIivNV = (PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)load("glGetProgramEnvParameterIivNV"); + glad_glGetProgramEnvParameterIuivNV = (PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)load("glGetProgramEnvParameterIuivNV"); +} +static void load_GL_NV_gpu_program5(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_program5) return; + glad_glProgramSubroutineParametersuivNV = (PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)load("glProgramSubroutineParametersuivNV"); + glad_glGetProgramSubroutineParameteruivNV = (PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)load("glGetProgramSubroutineParameteruivNV"); +} +static void load_GL_NV_gpu_shader5(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_shader5) return; + glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); + glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); + glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); + glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); + glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); + glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); + glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); + glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); + glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); + glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); + glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); + glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); + glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); + glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); + glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); + glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); + glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); + glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); + glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); + glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); + glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); + glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); + glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); + glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); + glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); + glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); + glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); + glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); + glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); + glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); + glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); + glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); + glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); +} +static void load_GL_NV_half_float(GLADloadproc load) { + if(!GLAD_GL_NV_half_float) return; + glad_glVertex2hNV = (PFNGLVERTEX2HNVPROC)load("glVertex2hNV"); + glad_glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)load("glVertex2hvNV"); + glad_glVertex3hNV = (PFNGLVERTEX3HNVPROC)load("glVertex3hNV"); + glad_glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)load("glVertex3hvNV"); + glad_glVertex4hNV = (PFNGLVERTEX4HNVPROC)load("glVertex4hNV"); + glad_glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)load("glVertex4hvNV"); + glad_glNormal3hNV = (PFNGLNORMAL3HNVPROC)load("glNormal3hNV"); + glad_glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)load("glNormal3hvNV"); + glad_glColor3hNV = (PFNGLCOLOR3HNVPROC)load("glColor3hNV"); + glad_glColor3hvNV = (PFNGLCOLOR3HVNVPROC)load("glColor3hvNV"); + glad_glColor4hNV = (PFNGLCOLOR4HNVPROC)load("glColor4hNV"); + glad_glColor4hvNV = (PFNGLCOLOR4HVNVPROC)load("glColor4hvNV"); + glad_glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)load("glTexCoord1hNV"); + glad_glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)load("glTexCoord1hvNV"); + glad_glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)load("glTexCoord2hNV"); + glad_glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)load("glTexCoord2hvNV"); + glad_glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)load("glTexCoord3hNV"); + glad_glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)load("glTexCoord3hvNV"); + glad_glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)load("glTexCoord4hNV"); + glad_glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)load("glTexCoord4hvNV"); + glad_glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)load("glMultiTexCoord1hNV"); + glad_glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)load("glMultiTexCoord1hvNV"); + glad_glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)load("glMultiTexCoord2hNV"); + glad_glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)load("glMultiTexCoord2hvNV"); + glad_glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)load("glMultiTexCoord3hNV"); + glad_glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)load("glMultiTexCoord3hvNV"); + glad_glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)load("glMultiTexCoord4hNV"); + glad_glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)load("glMultiTexCoord4hvNV"); + glad_glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)load("glFogCoordhNV"); + glad_glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)load("glFogCoordhvNV"); + glad_glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)load("glSecondaryColor3hNV"); + glad_glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)load("glSecondaryColor3hvNV"); + glad_glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)load("glVertexWeighthNV"); + glad_glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)load("glVertexWeighthvNV"); + glad_glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)load("glVertexAttrib1hNV"); + glad_glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)load("glVertexAttrib1hvNV"); + glad_glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)load("glVertexAttrib2hNV"); + glad_glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)load("glVertexAttrib2hvNV"); + glad_glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)load("glVertexAttrib3hNV"); + glad_glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)load("glVertexAttrib3hvNV"); + glad_glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)load("glVertexAttrib4hNV"); + glad_glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)load("glVertexAttrib4hvNV"); + glad_glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)load("glVertexAttribs1hvNV"); + glad_glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)load("glVertexAttribs2hvNV"); + glad_glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)load("glVertexAttribs3hvNV"); + glad_glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)load("glVertexAttribs4hvNV"); +} +static void load_GL_NV_internalformat_sample_query(GLADloadproc load) { + if(!GLAD_GL_NV_internalformat_sample_query) return; + glad_glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)load("glGetInternalformatSampleivNV"); +} +static void load_GL_NV_memory_attachment(GLADloadproc load) { + if(!GLAD_GL_NV_memory_attachment) return; + glad_glGetMemoryObjectDetachedResourcesuivNV = (PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)load("glGetMemoryObjectDetachedResourcesuivNV"); + glad_glResetMemoryObjectParameterNV = (PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)load("glResetMemoryObjectParameterNV"); + glad_glTexAttachMemoryNV = (PFNGLTEXATTACHMEMORYNVPROC)load("glTexAttachMemoryNV"); + glad_glBufferAttachMemoryNV = (PFNGLBUFFERATTACHMEMORYNVPROC)load("glBufferAttachMemoryNV"); + glad_glTextureAttachMemoryNV = (PFNGLTEXTUREATTACHMEMORYNVPROC)load("glTextureAttachMemoryNV"); + glad_glNamedBufferAttachMemoryNV = (PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)load("glNamedBufferAttachMemoryNV"); +} +static void load_GL_NV_mesh_shader(GLADloadproc load) { + if(!GLAD_GL_NV_mesh_shader) return; + glad_glDrawMeshTasksNV = (PFNGLDRAWMESHTASKSNVPROC)load("glDrawMeshTasksNV"); + glad_glDrawMeshTasksIndirectNV = (PFNGLDRAWMESHTASKSINDIRECTNVPROC)load("glDrawMeshTasksIndirectNV"); + glad_glMultiDrawMeshTasksIndirectNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)load("glMultiDrawMeshTasksIndirectNV"); + glad_glMultiDrawMeshTasksIndirectCountNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)load("glMultiDrawMeshTasksIndirectCountNV"); +} +static void load_GL_NV_occlusion_query(GLADloadproc load) { + if(!GLAD_GL_NV_occlusion_query) return; + glad_glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)load("glGenOcclusionQueriesNV"); + glad_glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)load("glDeleteOcclusionQueriesNV"); + glad_glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)load("glIsOcclusionQueryNV"); + glad_glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)load("glBeginOcclusionQueryNV"); + glad_glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)load("glEndOcclusionQueryNV"); + glad_glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)load("glGetOcclusionQueryivNV"); + glad_glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)load("glGetOcclusionQueryuivNV"); +} +static void load_GL_NV_parameter_buffer_object(GLADloadproc load) { + if(!GLAD_GL_NV_parameter_buffer_object) return; + glad_glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)load("glProgramBufferParametersfvNV"); + glad_glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)load("glProgramBufferParametersIivNV"); + glad_glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)load("glProgramBufferParametersIuivNV"); +} +static void load_GL_NV_path_rendering(GLADloadproc load) { + if(!GLAD_GL_NV_path_rendering) return; + glad_glGenPathsNV = (PFNGLGENPATHSNVPROC)load("glGenPathsNV"); + glad_glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)load("glDeletePathsNV"); + glad_glIsPathNV = (PFNGLISPATHNVPROC)load("glIsPathNV"); + glad_glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)load("glPathCommandsNV"); + glad_glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)load("glPathCoordsNV"); + glad_glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)load("glPathSubCommandsNV"); + glad_glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)load("glPathSubCoordsNV"); + glad_glPathStringNV = (PFNGLPATHSTRINGNVPROC)load("glPathStringNV"); + glad_glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)load("glPathGlyphsNV"); + glad_glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)load("glPathGlyphRangeNV"); + glad_glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)load("glWeightPathsNV"); + glad_glCopyPathNV = (PFNGLCOPYPATHNVPROC)load("glCopyPathNV"); + glad_glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)load("glInterpolatePathsNV"); + glad_glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)load("glTransformPathNV"); + glad_glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)load("glPathParameterivNV"); + glad_glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)load("glPathParameteriNV"); + glad_glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)load("glPathParameterfvNV"); + glad_glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)load("glPathParameterfNV"); + glad_glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)load("glPathDashArrayNV"); + glad_glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)load("glPathStencilFuncNV"); + glad_glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)load("glPathStencilDepthOffsetNV"); + glad_glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)load("glStencilFillPathNV"); + glad_glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)load("glStencilStrokePathNV"); + glad_glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)load("glStencilFillPathInstancedNV"); + glad_glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)load("glStencilStrokePathInstancedNV"); + glad_glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)load("glPathCoverDepthFuncNV"); + glad_glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)load("glCoverFillPathNV"); + glad_glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)load("glCoverStrokePathNV"); + glad_glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)load("glCoverFillPathInstancedNV"); + glad_glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)load("glCoverStrokePathInstancedNV"); + glad_glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)load("glGetPathParameterivNV"); + glad_glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)load("glGetPathParameterfvNV"); + glad_glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)load("glGetPathCommandsNV"); + glad_glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)load("glGetPathCoordsNV"); + glad_glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)load("glGetPathDashArrayNV"); + glad_glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)load("glGetPathMetricsNV"); + glad_glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)load("glGetPathMetricRangeNV"); + glad_glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)load("glGetPathSpacingNV"); + glad_glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)load("glIsPointInFillPathNV"); + glad_glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)load("glIsPointInStrokePathNV"); + glad_glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)load("glGetPathLengthNV"); + glad_glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)load("glPointAlongPathNV"); + glad_glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)load("glMatrixLoad3x2fNV"); + glad_glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)load("glMatrixLoad3x3fNV"); + glad_glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)load("glMatrixLoadTranspose3x3fNV"); + glad_glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)load("glMatrixMult3x2fNV"); + glad_glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)load("glMatrixMult3x3fNV"); + glad_glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)load("glMatrixMultTranspose3x3fNV"); + glad_glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)load("glStencilThenCoverFillPathNV"); + glad_glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)load("glStencilThenCoverStrokePathNV"); + glad_glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)load("glStencilThenCoverFillPathInstancedNV"); + glad_glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)load("glStencilThenCoverStrokePathInstancedNV"); + glad_glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)load("glPathGlyphIndexRangeNV"); + glad_glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)load("glPathGlyphIndexArrayNV"); + glad_glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)load("glPathMemoryGlyphIndexArrayNV"); + glad_glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)load("glProgramPathFragmentInputGenNV"); + glad_glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)load("glGetProgramResourcefvNV"); + glad_glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)load("glPathColorGenNV"); + glad_glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)load("glPathTexGenNV"); + glad_glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)load("glPathFogGenNV"); + glad_glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)load("glGetPathColorGenivNV"); + glad_glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)load("glGetPathColorGenfvNV"); + glad_glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)load("glGetPathTexGenivNV"); + glad_glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)load("glGetPathTexGenfvNV"); + glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); + glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); + glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); + glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); + glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); + glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); + glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); + glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); + glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); + glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); + glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); + glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); + glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); + glad_glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)load("glMatrixRotatefEXT"); + glad_glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)load("glMatrixRotatedEXT"); + glad_glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)load("glMatrixScalefEXT"); + glad_glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)load("glMatrixScaledEXT"); + glad_glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)load("glMatrixTranslatefEXT"); + glad_glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)load("glMatrixTranslatedEXT"); +} +static void load_GL_NV_pixel_data_range(GLADloadproc load) { + if(!GLAD_GL_NV_pixel_data_range) return; + glad_glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)load("glPixelDataRangeNV"); + glad_glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)load("glFlushPixelDataRangeNV"); +} +static void load_GL_NV_point_sprite(GLADloadproc load) { + if(!GLAD_GL_NV_point_sprite) return; + glad_glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)load("glPointParameteriNV"); + glad_glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)load("glPointParameterivNV"); +} +static void load_GL_NV_present_video(GLADloadproc load) { + if(!GLAD_GL_NV_present_video) return; + glad_glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)load("glPresentFrameKeyedNV"); + glad_glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)load("glPresentFrameDualFillNV"); + glad_glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)load("glGetVideoivNV"); + glad_glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)load("glGetVideouivNV"); + glad_glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)load("glGetVideoi64vNV"); + glad_glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)load("glGetVideoui64vNV"); +} +static void load_GL_NV_primitive_restart(GLADloadproc load) { + if(!GLAD_GL_NV_primitive_restart) return; + glad_glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)load("glPrimitiveRestartNV"); + glad_glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)load("glPrimitiveRestartIndexNV"); +} +static void load_GL_NV_query_resource(GLADloadproc load) { + if(!GLAD_GL_NV_query_resource) return; + glad_glQueryResourceNV = (PFNGLQUERYRESOURCENVPROC)load("glQueryResourceNV"); +} +static void load_GL_NV_query_resource_tag(GLADloadproc load) { + if(!GLAD_GL_NV_query_resource_tag) return; + glad_glGenQueryResourceTagNV = (PFNGLGENQUERYRESOURCETAGNVPROC)load("glGenQueryResourceTagNV"); + glad_glDeleteQueryResourceTagNV = (PFNGLDELETEQUERYRESOURCETAGNVPROC)load("glDeleteQueryResourceTagNV"); + glad_glQueryResourceTagNV = (PFNGLQUERYRESOURCETAGNVPROC)load("glQueryResourceTagNV"); +} +static void load_GL_NV_register_combiners(GLADloadproc load) { + if(!GLAD_GL_NV_register_combiners) return; + glad_glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)load("glCombinerParameterfvNV"); + glad_glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)load("glCombinerParameterfNV"); + glad_glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)load("glCombinerParameterivNV"); + glad_glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)load("glCombinerParameteriNV"); + glad_glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)load("glCombinerInputNV"); + glad_glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)load("glCombinerOutputNV"); + glad_glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)load("glFinalCombinerInputNV"); + glad_glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)load("glGetCombinerInputParameterfvNV"); + glad_glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)load("glGetCombinerInputParameterivNV"); + glad_glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)load("glGetCombinerOutputParameterfvNV"); + glad_glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)load("glGetCombinerOutputParameterivNV"); + glad_glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)load("glGetFinalCombinerInputParameterfvNV"); + glad_glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)load("glGetFinalCombinerInputParameterivNV"); +} +static void load_GL_NV_register_combiners2(GLADloadproc load) { + if(!GLAD_GL_NV_register_combiners2) return; + glad_glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)load("glCombinerStageParameterfvNV"); + glad_glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)load("glGetCombinerStageParameterfvNV"); +} +static void load_GL_NV_sample_locations(GLADloadproc load) { + if(!GLAD_GL_NV_sample_locations) return; + glad_glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glFramebufferSampleLocationsfvNV"); + glad_glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glNamedFramebufferSampleLocationsfvNV"); + glad_glResolveDepthValuesNV = (PFNGLRESOLVEDEPTHVALUESNVPROC)load("glResolveDepthValuesNV"); +} +static void load_GL_NV_scissor_exclusive(GLADloadproc load) { + if(!GLAD_GL_NV_scissor_exclusive) return; + glad_glScissorExclusiveNV = (PFNGLSCISSOREXCLUSIVENVPROC)load("glScissorExclusiveNV"); + glad_glScissorExclusiveArrayvNV = (PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)load("glScissorExclusiveArrayvNV"); +} +static void load_GL_NV_shader_buffer_load(GLADloadproc load) { + if(!GLAD_GL_NV_shader_buffer_load) return; + glad_glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)load("glMakeBufferResidentNV"); + glad_glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)load("glMakeBufferNonResidentNV"); + glad_glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)load("glIsBufferResidentNV"); + glad_glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)load("glMakeNamedBufferResidentNV"); + glad_glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)load("glMakeNamedBufferNonResidentNV"); + glad_glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)load("glIsNamedBufferResidentNV"); + glad_glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)load("glGetBufferParameterui64vNV"); + glad_glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)load("glGetNamedBufferParameterui64vNV"); + glad_glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)load("glGetIntegerui64vNV"); + glad_glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)load("glUniformui64NV"); + glad_glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)load("glUniformui64vNV"); + glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); + glad_glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)load("glProgramUniformui64NV"); + glad_glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)load("glProgramUniformui64vNV"); +} +static void load_GL_NV_shading_rate_image(GLADloadproc load) { + if(!GLAD_GL_NV_shading_rate_image) return; + glad_glBindShadingRateImageNV = (PFNGLBINDSHADINGRATEIMAGENVPROC)load("glBindShadingRateImageNV"); + glad_glGetShadingRateImagePaletteNV = (PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)load("glGetShadingRateImagePaletteNV"); + glad_glGetShadingRateSampleLocationivNV = (PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)load("glGetShadingRateSampleLocationivNV"); + glad_glShadingRateImageBarrierNV = (PFNGLSHADINGRATEIMAGEBARRIERNVPROC)load("glShadingRateImageBarrierNV"); + glad_glShadingRateImageBarrierNV = (PFNGLSHADINGRATEIMAGEBARRIERNVPROC)load("glShadingRateImageBarrierNV"); + glad_glShadingRateImagePaletteNV = (PFNGLSHADINGRATEIMAGEPALETTENVPROC)load("glShadingRateImagePaletteNV"); + glad_glShadingRateSampleOrderNV = (PFNGLSHADINGRATESAMPLEORDERNVPROC)load("glShadingRateSampleOrderNV"); + glad_glShadingRateSampleOrderCustomNV = (PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)load("glShadingRateSampleOrderCustomNV"); +} +static void load_GL_NV_texture_barrier(GLADloadproc load) { + if(!GLAD_GL_NV_texture_barrier) return; + glad_glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)load("glTextureBarrierNV"); +} +static void load_GL_NV_texture_multisample(GLADloadproc load) { + if(!GLAD_GL_NV_texture_multisample) return; + glad_glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTexImage2DMultisampleCoverageNV"); + glad_glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTexImage3DMultisampleCoverageNV"); + glad_glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)load("glTextureImage2DMultisampleNV"); + glad_glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)load("glTextureImage3DMultisampleNV"); + glad_glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTextureImage2DMultisampleCoverageNV"); + glad_glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTextureImage3DMultisampleCoverageNV"); +} +static void load_GL_NV_transform_feedback(GLADloadproc load) { + if(!GLAD_GL_NV_transform_feedback) return; + glad_glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)load("glBeginTransformFeedbackNV"); + glad_glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)load("glEndTransformFeedbackNV"); + glad_glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)load("glTransformFeedbackAttribsNV"); + glad_glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)load("glBindBufferRangeNV"); + glad_glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)load("glBindBufferOffsetNV"); + glad_glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)load("glBindBufferBaseNV"); + glad_glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)load("glTransformFeedbackVaryingsNV"); + glad_glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)load("glActiveVaryingNV"); + glad_glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)load("glGetVaryingLocationNV"); + glad_glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)load("glGetActiveVaryingNV"); + glad_glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)load("glGetTransformFeedbackVaryingNV"); + glad_glTransformFeedbackStreamAttribsNV = (PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)load("glTransformFeedbackStreamAttribsNV"); +} +static void load_GL_NV_transform_feedback2(GLADloadproc load) { + if(!GLAD_GL_NV_transform_feedback2) return; + glad_glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)load("glBindTransformFeedbackNV"); + glad_glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)load("glDeleteTransformFeedbacksNV"); + glad_glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)load("glGenTransformFeedbacksNV"); + glad_glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)load("glIsTransformFeedbackNV"); + glad_glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)load("glPauseTransformFeedbackNV"); + glad_glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)load("glResumeTransformFeedbackNV"); + glad_glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)load("glDrawTransformFeedbackNV"); +} +static void load_GL_NV_vdpau_interop(GLADloadproc load) { + if(!GLAD_GL_NV_vdpau_interop) return; + glad_glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)load("glVDPAUInitNV"); + glad_glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)load("glVDPAUFiniNV"); + glad_glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)load("glVDPAURegisterVideoSurfaceNV"); + glad_glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)load("glVDPAURegisterOutputSurfaceNV"); + glad_glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)load("glVDPAUIsSurfaceNV"); + glad_glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)load("glVDPAUUnregisterSurfaceNV"); + glad_glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)load("glVDPAUGetSurfaceivNV"); + glad_glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)load("glVDPAUSurfaceAccessNV"); + glad_glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)load("glVDPAUMapSurfacesNV"); + glad_glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)load("glVDPAUUnmapSurfacesNV"); +} +static void load_GL_NV_vdpau_interop2(GLADloadproc load) { + if(!GLAD_GL_NV_vdpau_interop2) return; + glad_glVDPAURegisterVideoSurfaceWithPictureStructureNV = (PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)load("glVDPAURegisterVideoSurfaceWithPictureStructureNV"); +} +static void load_GL_NV_vertex_array_range(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_array_range) return; + glad_glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)load("glFlushVertexArrayRangeNV"); + glad_glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)load("glVertexArrayRangeNV"); +} +static void load_GL_NV_vertex_attrib_integer_64bit(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_attrib_integer_64bit) return; + glad_glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)load("glVertexAttribL1i64NV"); + glad_glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)load("glVertexAttribL2i64NV"); + glad_glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)load("glVertexAttribL3i64NV"); + glad_glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)load("glVertexAttribL4i64NV"); + glad_glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)load("glVertexAttribL1i64vNV"); + glad_glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)load("glVertexAttribL2i64vNV"); + glad_glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)load("glVertexAttribL3i64vNV"); + glad_glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)load("glVertexAttribL4i64vNV"); + glad_glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)load("glVertexAttribL1ui64NV"); + glad_glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)load("glVertexAttribL2ui64NV"); + glad_glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)load("glVertexAttribL3ui64NV"); + glad_glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)load("glVertexAttribL4ui64NV"); + glad_glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)load("glVertexAttribL1ui64vNV"); + glad_glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)load("glVertexAttribL2ui64vNV"); + glad_glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)load("glVertexAttribL3ui64vNV"); + glad_glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)load("glVertexAttribL4ui64vNV"); + glad_glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)load("glGetVertexAttribLi64vNV"); + glad_glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)load("glGetVertexAttribLui64vNV"); + glad_glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)load("glVertexAttribLFormatNV"); +} +static void load_GL_NV_vertex_buffer_unified_memory(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_buffer_unified_memory) return; + glad_glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)load("glBufferAddressRangeNV"); + glad_glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)load("glVertexFormatNV"); + glad_glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)load("glNormalFormatNV"); + glad_glColorFormatNV = (PFNGLCOLORFORMATNVPROC)load("glColorFormatNV"); + glad_glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)load("glIndexFormatNV"); + glad_glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)load("glTexCoordFormatNV"); + glad_glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)load("glEdgeFlagFormatNV"); + glad_glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)load("glSecondaryColorFormatNV"); + glad_glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)load("glFogCoordFormatNV"); + glad_glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)load("glVertexAttribFormatNV"); + glad_glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)load("glVertexAttribIFormatNV"); + glad_glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)load("glGetIntegerui64i_vNV"); +} +static void load_GL_NV_vertex_program(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_program) return; + glad_glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)load("glAreProgramsResidentNV"); + glad_glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)load("glBindProgramNV"); + glad_glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)load("glDeleteProgramsNV"); + glad_glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)load("glExecuteProgramNV"); + glad_glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)load("glGenProgramsNV"); + glad_glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)load("glGetProgramParameterdvNV"); + glad_glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)load("glGetProgramParameterfvNV"); + glad_glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)load("glGetProgramivNV"); + glad_glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)load("glGetProgramStringNV"); + glad_glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)load("glGetTrackMatrixivNV"); + glad_glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)load("glGetVertexAttribdvNV"); + glad_glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)load("glGetVertexAttribfvNV"); + glad_glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)load("glGetVertexAttribivNV"); + glad_glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)load("glGetVertexAttribPointervNV"); + glad_glIsProgramNV = (PFNGLISPROGRAMNVPROC)load("glIsProgramNV"); + glad_glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)load("glLoadProgramNV"); + glad_glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)load("glProgramParameter4dNV"); + glad_glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)load("glProgramParameter4dvNV"); + glad_glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)load("glProgramParameter4fNV"); + glad_glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)load("glProgramParameter4fvNV"); + glad_glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)load("glProgramParameters4dvNV"); + glad_glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)load("glProgramParameters4fvNV"); + glad_glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)load("glRequestResidentProgramsNV"); + glad_glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)load("glTrackMatrixNV"); + glad_glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)load("glVertexAttribPointerNV"); + glad_glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)load("glVertexAttrib1dNV"); + glad_glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)load("glVertexAttrib1dvNV"); + glad_glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)load("glVertexAttrib1fNV"); + glad_glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)load("glVertexAttrib1fvNV"); + glad_glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)load("glVertexAttrib1sNV"); + glad_glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)load("glVertexAttrib1svNV"); + glad_glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)load("glVertexAttrib2dNV"); + glad_glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)load("glVertexAttrib2dvNV"); + glad_glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)load("glVertexAttrib2fNV"); + glad_glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)load("glVertexAttrib2fvNV"); + glad_glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)load("glVertexAttrib2sNV"); + glad_glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)load("glVertexAttrib2svNV"); + glad_glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)load("glVertexAttrib3dNV"); + glad_glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)load("glVertexAttrib3dvNV"); + glad_glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)load("glVertexAttrib3fNV"); + glad_glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)load("glVertexAttrib3fvNV"); + glad_glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)load("glVertexAttrib3sNV"); + glad_glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)load("glVertexAttrib3svNV"); + glad_glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)load("glVertexAttrib4dNV"); + glad_glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)load("glVertexAttrib4dvNV"); + glad_glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)load("glVertexAttrib4fNV"); + glad_glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)load("glVertexAttrib4fvNV"); + glad_glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)load("glVertexAttrib4sNV"); + glad_glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)load("glVertexAttrib4svNV"); + glad_glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)load("glVertexAttrib4ubNV"); + glad_glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)load("glVertexAttrib4ubvNV"); + glad_glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)load("glVertexAttribs1dvNV"); + glad_glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)load("glVertexAttribs1fvNV"); + glad_glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)load("glVertexAttribs1svNV"); + glad_glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)load("glVertexAttribs2dvNV"); + glad_glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)load("glVertexAttribs2fvNV"); + glad_glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)load("glVertexAttribs2svNV"); + glad_glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)load("glVertexAttribs3dvNV"); + glad_glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)load("glVertexAttribs3fvNV"); + glad_glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)load("glVertexAttribs3svNV"); + glad_glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)load("glVertexAttribs4dvNV"); + glad_glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)load("glVertexAttribs4fvNV"); + glad_glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)load("glVertexAttribs4svNV"); + glad_glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)load("glVertexAttribs4ubvNV"); +} +static void load_GL_NV_vertex_program4(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_program4) return; + glad_glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)load("glVertexAttribI1iEXT"); + glad_glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)load("glVertexAttribI2iEXT"); + glad_glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)load("glVertexAttribI3iEXT"); + glad_glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)load("glVertexAttribI4iEXT"); + glad_glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)load("glVertexAttribI1uiEXT"); + glad_glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)load("glVertexAttribI2uiEXT"); + glad_glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)load("glVertexAttribI3uiEXT"); + glad_glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)load("glVertexAttribI4uiEXT"); + glad_glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)load("glVertexAttribI1ivEXT"); + glad_glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)load("glVertexAttribI2ivEXT"); + glad_glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)load("glVertexAttribI3ivEXT"); + glad_glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)load("glVertexAttribI4ivEXT"); + glad_glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)load("glVertexAttribI1uivEXT"); + glad_glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)load("glVertexAttribI2uivEXT"); + glad_glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)load("glVertexAttribI3uivEXT"); + glad_glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)load("glVertexAttribI4uivEXT"); + glad_glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)load("glVertexAttribI4bvEXT"); + glad_glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)load("glVertexAttribI4svEXT"); + glad_glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)load("glVertexAttribI4ubvEXT"); + glad_glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)load("glVertexAttribI4usvEXT"); + glad_glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)load("glVertexAttribIPointerEXT"); + glad_glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)load("glGetVertexAttribIivEXT"); + glad_glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)load("glGetVertexAttribIuivEXT"); +} +static void load_GL_NV_video_capture(GLADloadproc load) { + if(!GLAD_GL_NV_video_capture) return; + glad_glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)load("glBeginVideoCaptureNV"); + glad_glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)load("glBindVideoCaptureStreamBufferNV"); + glad_glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)load("glBindVideoCaptureStreamTextureNV"); + glad_glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)load("glEndVideoCaptureNV"); + glad_glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)load("glGetVideoCaptureivNV"); + glad_glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)load("glGetVideoCaptureStreamivNV"); + glad_glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)load("glGetVideoCaptureStreamfvNV"); + glad_glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)load("glGetVideoCaptureStreamdvNV"); + glad_glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)load("glVideoCaptureNV"); + glad_glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)load("glVideoCaptureStreamParameterivNV"); + glad_glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)load("glVideoCaptureStreamParameterfvNV"); + glad_glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)load("glVideoCaptureStreamParameterdvNV"); +} +static void load_GL_NV_viewport_swizzle(GLADloadproc load) { + if(!GLAD_GL_NV_viewport_swizzle) return; + glad_glViewportSwizzleNV = (PFNGLVIEWPORTSWIZZLENVPROC)load("glViewportSwizzleNV"); +} +static void load_GL_OES_byte_coordinates(GLADloadproc load) { + if(!GLAD_GL_OES_byte_coordinates) return; + glad_glMultiTexCoord1bOES = (PFNGLMULTITEXCOORD1BOESPROC)load("glMultiTexCoord1bOES"); + glad_glMultiTexCoord1bvOES = (PFNGLMULTITEXCOORD1BVOESPROC)load("glMultiTexCoord1bvOES"); + glad_glMultiTexCoord2bOES = (PFNGLMULTITEXCOORD2BOESPROC)load("glMultiTexCoord2bOES"); + glad_glMultiTexCoord2bvOES = (PFNGLMULTITEXCOORD2BVOESPROC)load("glMultiTexCoord2bvOES"); + glad_glMultiTexCoord3bOES = (PFNGLMULTITEXCOORD3BOESPROC)load("glMultiTexCoord3bOES"); + glad_glMultiTexCoord3bvOES = (PFNGLMULTITEXCOORD3BVOESPROC)load("glMultiTexCoord3bvOES"); + glad_glMultiTexCoord4bOES = (PFNGLMULTITEXCOORD4BOESPROC)load("glMultiTexCoord4bOES"); + glad_glMultiTexCoord4bvOES = (PFNGLMULTITEXCOORD4BVOESPROC)load("glMultiTexCoord4bvOES"); + glad_glTexCoord1bOES = (PFNGLTEXCOORD1BOESPROC)load("glTexCoord1bOES"); + glad_glTexCoord1bvOES = (PFNGLTEXCOORD1BVOESPROC)load("glTexCoord1bvOES"); + glad_glTexCoord2bOES = (PFNGLTEXCOORD2BOESPROC)load("glTexCoord2bOES"); + glad_glTexCoord2bvOES = (PFNGLTEXCOORD2BVOESPROC)load("glTexCoord2bvOES"); + glad_glTexCoord3bOES = (PFNGLTEXCOORD3BOESPROC)load("glTexCoord3bOES"); + glad_glTexCoord3bvOES = (PFNGLTEXCOORD3BVOESPROC)load("glTexCoord3bvOES"); + glad_glTexCoord4bOES = (PFNGLTEXCOORD4BOESPROC)load("glTexCoord4bOES"); + glad_glTexCoord4bvOES = (PFNGLTEXCOORD4BVOESPROC)load("glTexCoord4bvOES"); + glad_glVertex2bOES = (PFNGLVERTEX2BOESPROC)load("glVertex2bOES"); + glad_glVertex2bvOES = (PFNGLVERTEX2BVOESPROC)load("glVertex2bvOES"); + glad_glVertex3bOES = (PFNGLVERTEX3BOESPROC)load("glVertex3bOES"); + glad_glVertex3bvOES = (PFNGLVERTEX3BVOESPROC)load("glVertex3bvOES"); + glad_glVertex4bOES = (PFNGLVERTEX4BOESPROC)load("glVertex4bOES"); + glad_glVertex4bvOES = (PFNGLVERTEX4BVOESPROC)load("glVertex4bvOES"); +} +static void load_GL_OES_fixed_point(GLADloadproc load) { + if(!GLAD_GL_OES_fixed_point) return; + glad_glAlphaFuncxOES = (PFNGLALPHAFUNCXOESPROC)load("glAlphaFuncxOES"); + glad_glClearColorxOES = (PFNGLCLEARCOLORXOESPROC)load("glClearColorxOES"); + glad_glClearDepthxOES = (PFNGLCLEARDEPTHXOESPROC)load("glClearDepthxOES"); + glad_glClipPlanexOES = (PFNGLCLIPPLANEXOESPROC)load("glClipPlanexOES"); + glad_glColor4xOES = (PFNGLCOLOR4XOESPROC)load("glColor4xOES"); + glad_glDepthRangexOES = (PFNGLDEPTHRANGEXOESPROC)load("glDepthRangexOES"); + glad_glFogxOES = (PFNGLFOGXOESPROC)load("glFogxOES"); + glad_glFogxvOES = (PFNGLFOGXVOESPROC)load("glFogxvOES"); + glad_glFrustumxOES = (PFNGLFRUSTUMXOESPROC)load("glFrustumxOES"); + glad_glGetClipPlanexOES = (PFNGLGETCLIPPLANEXOESPROC)load("glGetClipPlanexOES"); + glad_glGetFixedvOES = (PFNGLGETFIXEDVOESPROC)load("glGetFixedvOES"); + glad_glGetTexEnvxvOES = (PFNGLGETTEXENVXVOESPROC)load("glGetTexEnvxvOES"); + glad_glGetTexParameterxvOES = (PFNGLGETTEXPARAMETERXVOESPROC)load("glGetTexParameterxvOES"); + glad_glLightModelxOES = (PFNGLLIGHTMODELXOESPROC)load("glLightModelxOES"); + glad_glLightModelxvOES = (PFNGLLIGHTMODELXVOESPROC)load("glLightModelxvOES"); + glad_glLightxOES = (PFNGLLIGHTXOESPROC)load("glLightxOES"); + glad_glLightxvOES = (PFNGLLIGHTXVOESPROC)load("glLightxvOES"); + glad_glLineWidthxOES = (PFNGLLINEWIDTHXOESPROC)load("glLineWidthxOES"); + glad_glLoadMatrixxOES = (PFNGLLOADMATRIXXOESPROC)load("glLoadMatrixxOES"); + glad_glMaterialxOES = (PFNGLMATERIALXOESPROC)load("glMaterialxOES"); + glad_glMaterialxvOES = (PFNGLMATERIALXVOESPROC)load("glMaterialxvOES"); + glad_glMultMatrixxOES = (PFNGLMULTMATRIXXOESPROC)load("glMultMatrixxOES"); + glad_glMultiTexCoord4xOES = (PFNGLMULTITEXCOORD4XOESPROC)load("glMultiTexCoord4xOES"); + glad_glNormal3xOES = (PFNGLNORMAL3XOESPROC)load("glNormal3xOES"); + glad_glOrthoxOES = (PFNGLORTHOXOESPROC)load("glOrthoxOES"); + glad_glPointParameterxvOES = (PFNGLPOINTPARAMETERXVOESPROC)load("glPointParameterxvOES"); + glad_glPointSizexOES = (PFNGLPOINTSIZEXOESPROC)load("glPointSizexOES"); + glad_glPolygonOffsetxOES = (PFNGLPOLYGONOFFSETXOESPROC)load("glPolygonOffsetxOES"); + glad_glRotatexOES = (PFNGLROTATEXOESPROC)load("glRotatexOES"); + glad_glScalexOES = (PFNGLSCALEXOESPROC)load("glScalexOES"); + glad_glTexEnvxOES = (PFNGLTEXENVXOESPROC)load("glTexEnvxOES"); + glad_glTexEnvxvOES = (PFNGLTEXENVXVOESPROC)load("glTexEnvxvOES"); + glad_glTexParameterxOES = (PFNGLTEXPARAMETERXOESPROC)load("glTexParameterxOES"); + glad_glTexParameterxvOES = (PFNGLTEXPARAMETERXVOESPROC)load("glTexParameterxvOES"); + glad_glTranslatexOES = (PFNGLTRANSLATEXOESPROC)load("glTranslatexOES"); + glad_glGetLightxvOES = (PFNGLGETLIGHTXVOESPROC)load("glGetLightxvOES"); + glad_glGetMaterialxvOES = (PFNGLGETMATERIALXVOESPROC)load("glGetMaterialxvOES"); + glad_glPointParameterxOES = (PFNGLPOINTPARAMETERXOESPROC)load("glPointParameterxOES"); + glad_glSampleCoveragexOES = (PFNGLSAMPLECOVERAGEXOESPROC)load("glSampleCoveragexOES"); + glad_glAccumxOES = (PFNGLACCUMXOESPROC)load("glAccumxOES"); + glad_glBitmapxOES = (PFNGLBITMAPXOESPROC)load("glBitmapxOES"); + glad_glBlendColorxOES = (PFNGLBLENDCOLORXOESPROC)load("glBlendColorxOES"); + glad_glClearAccumxOES = (PFNGLCLEARACCUMXOESPROC)load("glClearAccumxOES"); + glad_glColor3xOES = (PFNGLCOLOR3XOESPROC)load("glColor3xOES"); + glad_glColor3xvOES = (PFNGLCOLOR3XVOESPROC)load("glColor3xvOES"); + glad_glColor4xvOES = (PFNGLCOLOR4XVOESPROC)load("glColor4xvOES"); + glad_glConvolutionParameterxOES = (PFNGLCONVOLUTIONPARAMETERXOESPROC)load("glConvolutionParameterxOES"); + glad_glConvolutionParameterxvOES = (PFNGLCONVOLUTIONPARAMETERXVOESPROC)load("glConvolutionParameterxvOES"); + glad_glEvalCoord1xOES = (PFNGLEVALCOORD1XOESPROC)load("glEvalCoord1xOES"); + glad_glEvalCoord1xvOES = (PFNGLEVALCOORD1XVOESPROC)load("glEvalCoord1xvOES"); + glad_glEvalCoord2xOES = (PFNGLEVALCOORD2XOESPROC)load("glEvalCoord2xOES"); + glad_glEvalCoord2xvOES = (PFNGLEVALCOORD2XVOESPROC)load("glEvalCoord2xvOES"); + glad_glFeedbackBufferxOES = (PFNGLFEEDBACKBUFFERXOESPROC)load("glFeedbackBufferxOES"); + glad_glGetConvolutionParameterxvOES = (PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)load("glGetConvolutionParameterxvOES"); + glad_glGetHistogramParameterxvOES = (PFNGLGETHISTOGRAMPARAMETERXVOESPROC)load("glGetHistogramParameterxvOES"); + glad_glGetLightxOES = (PFNGLGETLIGHTXOESPROC)load("glGetLightxOES"); + glad_glGetMapxvOES = (PFNGLGETMAPXVOESPROC)load("glGetMapxvOES"); + glad_glGetMaterialxOES = (PFNGLGETMATERIALXOESPROC)load("glGetMaterialxOES"); + glad_glGetPixelMapxv = (PFNGLGETPIXELMAPXVPROC)load("glGetPixelMapxv"); + glad_glGetTexGenxvOES = (PFNGLGETTEXGENXVOESPROC)load("glGetTexGenxvOES"); + glad_glGetTexLevelParameterxvOES = (PFNGLGETTEXLEVELPARAMETERXVOESPROC)load("glGetTexLevelParameterxvOES"); + glad_glIndexxOES = (PFNGLINDEXXOESPROC)load("glIndexxOES"); + glad_glIndexxvOES = (PFNGLINDEXXVOESPROC)load("glIndexxvOES"); + glad_glLoadTransposeMatrixxOES = (PFNGLLOADTRANSPOSEMATRIXXOESPROC)load("glLoadTransposeMatrixxOES"); + glad_glMap1xOES = (PFNGLMAP1XOESPROC)load("glMap1xOES"); + glad_glMap2xOES = (PFNGLMAP2XOESPROC)load("glMap2xOES"); + glad_glMapGrid1xOES = (PFNGLMAPGRID1XOESPROC)load("glMapGrid1xOES"); + glad_glMapGrid2xOES = (PFNGLMAPGRID2XOESPROC)load("glMapGrid2xOES"); + glad_glMultTransposeMatrixxOES = (PFNGLMULTTRANSPOSEMATRIXXOESPROC)load("glMultTransposeMatrixxOES"); + glad_glMultiTexCoord1xOES = (PFNGLMULTITEXCOORD1XOESPROC)load("glMultiTexCoord1xOES"); + glad_glMultiTexCoord1xvOES = (PFNGLMULTITEXCOORD1XVOESPROC)load("glMultiTexCoord1xvOES"); + glad_glMultiTexCoord2xOES = (PFNGLMULTITEXCOORD2XOESPROC)load("glMultiTexCoord2xOES"); + glad_glMultiTexCoord2xvOES = (PFNGLMULTITEXCOORD2XVOESPROC)load("glMultiTexCoord2xvOES"); + glad_glMultiTexCoord3xOES = (PFNGLMULTITEXCOORD3XOESPROC)load("glMultiTexCoord3xOES"); + glad_glMultiTexCoord3xvOES = (PFNGLMULTITEXCOORD3XVOESPROC)load("glMultiTexCoord3xvOES"); + glad_glMultiTexCoord4xvOES = (PFNGLMULTITEXCOORD4XVOESPROC)load("glMultiTexCoord4xvOES"); + glad_glNormal3xvOES = (PFNGLNORMAL3XVOESPROC)load("glNormal3xvOES"); + glad_glPassThroughxOES = (PFNGLPASSTHROUGHXOESPROC)load("glPassThroughxOES"); + glad_glPixelMapx = (PFNGLPIXELMAPXPROC)load("glPixelMapx"); + glad_glPixelStorex = (PFNGLPIXELSTOREXPROC)load("glPixelStorex"); + glad_glPixelTransferxOES = (PFNGLPIXELTRANSFERXOESPROC)load("glPixelTransferxOES"); + glad_glPixelZoomxOES = (PFNGLPIXELZOOMXOESPROC)load("glPixelZoomxOES"); + glad_glPrioritizeTexturesxOES = (PFNGLPRIORITIZETEXTURESXOESPROC)load("glPrioritizeTexturesxOES"); + glad_glRasterPos2xOES = (PFNGLRASTERPOS2XOESPROC)load("glRasterPos2xOES"); + glad_glRasterPos2xvOES = (PFNGLRASTERPOS2XVOESPROC)load("glRasterPos2xvOES"); + glad_glRasterPos3xOES = (PFNGLRASTERPOS3XOESPROC)load("glRasterPos3xOES"); + glad_glRasterPos3xvOES = (PFNGLRASTERPOS3XVOESPROC)load("glRasterPos3xvOES"); + glad_glRasterPos4xOES = (PFNGLRASTERPOS4XOESPROC)load("glRasterPos4xOES"); + glad_glRasterPos4xvOES = (PFNGLRASTERPOS4XVOESPROC)load("glRasterPos4xvOES"); + glad_glRectxOES = (PFNGLRECTXOESPROC)load("glRectxOES"); + glad_glRectxvOES = (PFNGLRECTXVOESPROC)load("glRectxvOES"); + glad_glTexCoord1xOES = (PFNGLTEXCOORD1XOESPROC)load("glTexCoord1xOES"); + glad_glTexCoord1xvOES = (PFNGLTEXCOORD1XVOESPROC)load("glTexCoord1xvOES"); + glad_glTexCoord2xOES = (PFNGLTEXCOORD2XOESPROC)load("glTexCoord2xOES"); + glad_glTexCoord2xvOES = (PFNGLTEXCOORD2XVOESPROC)load("glTexCoord2xvOES"); + glad_glTexCoord3xOES = (PFNGLTEXCOORD3XOESPROC)load("glTexCoord3xOES"); + glad_glTexCoord3xvOES = (PFNGLTEXCOORD3XVOESPROC)load("glTexCoord3xvOES"); + glad_glTexCoord4xOES = (PFNGLTEXCOORD4XOESPROC)load("glTexCoord4xOES"); + glad_glTexCoord4xvOES = (PFNGLTEXCOORD4XVOESPROC)load("glTexCoord4xvOES"); + glad_glTexGenxOES = (PFNGLTEXGENXOESPROC)load("glTexGenxOES"); + glad_glTexGenxvOES = (PFNGLTEXGENXVOESPROC)load("glTexGenxvOES"); + glad_glVertex2xOES = (PFNGLVERTEX2XOESPROC)load("glVertex2xOES"); + glad_glVertex2xvOES = (PFNGLVERTEX2XVOESPROC)load("glVertex2xvOES"); + glad_glVertex3xOES = (PFNGLVERTEX3XOESPROC)load("glVertex3xOES"); + glad_glVertex3xvOES = (PFNGLVERTEX3XVOESPROC)load("glVertex3xvOES"); + glad_glVertex4xOES = (PFNGLVERTEX4XOESPROC)load("glVertex4xOES"); + glad_glVertex4xvOES = (PFNGLVERTEX4XVOESPROC)load("glVertex4xvOES"); +} +static void load_GL_OES_query_matrix(GLADloadproc load) { + if(!GLAD_GL_OES_query_matrix) return; + glad_glQueryMatrixxOES = (PFNGLQUERYMATRIXXOESPROC)load("glQueryMatrixxOES"); +} +static void load_GL_OES_single_precision(GLADloadproc load) { + if(!GLAD_GL_OES_single_precision) return; + glad_glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)load("glClearDepthfOES"); + glad_glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)load("glClipPlanefOES"); + glad_glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)load("glDepthRangefOES"); + glad_glFrustumfOES = (PFNGLFRUSTUMFOESPROC)load("glFrustumfOES"); + glad_glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)load("glGetClipPlanefOES"); + glad_glOrthofOES = (PFNGLORTHOFOESPROC)load("glOrthofOES"); +} +static void load_GL_OVR_multiview(GLADloadproc load) { + if(!GLAD_GL_OVR_multiview) return; + glad_glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)load("glFramebufferTextureMultiviewOVR"); +} +static void load_GL_PGI_misc_hints(GLADloadproc load) { + if(!GLAD_GL_PGI_misc_hints) return; + glad_glHintPGI = (PFNGLHINTPGIPROC)load("glHintPGI"); +} +static void load_GL_SGIS_detail_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_detail_texture) return; + glad_glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)load("glDetailTexFuncSGIS"); + glad_glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)load("glGetDetailTexFuncSGIS"); +} +static void load_GL_SGIS_fog_function(GLADloadproc load) { + if(!GLAD_GL_SGIS_fog_function) return; + glad_glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)load("glFogFuncSGIS"); + glad_glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)load("glGetFogFuncSGIS"); +} +static void load_GL_SGIS_multisample(GLADloadproc load) { + if(!GLAD_GL_SGIS_multisample) return; + glad_glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)load("glSampleMaskSGIS"); + glad_glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)load("glSamplePatternSGIS"); +} +static void load_GL_SGIS_pixel_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_pixel_texture) return; + glad_glPixelTexGenParameteriSGIS = (PFNGLPIXELTEXGENPARAMETERISGISPROC)load("glPixelTexGenParameteriSGIS"); + glad_glPixelTexGenParameterivSGIS = (PFNGLPIXELTEXGENPARAMETERIVSGISPROC)load("glPixelTexGenParameterivSGIS"); + glad_glPixelTexGenParameterfSGIS = (PFNGLPIXELTEXGENPARAMETERFSGISPROC)load("glPixelTexGenParameterfSGIS"); + glad_glPixelTexGenParameterfvSGIS = (PFNGLPIXELTEXGENPARAMETERFVSGISPROC)load("glPixelTexGenParameterfvSGIS"); + glad_glGetPixelTexGenParameterivSGIS = (PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)load("glGetPixelTexGenParameterivSGIS"); + glad_glGetPixelTexGenParameterfvSGIS = (PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)load("glGetPixelTexGenParameterfvSGIS"); +} +static void load_GL_SGIS_point_parameters(GLADloadproc load) { + if(!GLAD_GL_SGIS_point_parameters) return; + glad_glPointParameterfSGIS = (PFNGLPOINTPARAMETERFSGISPROC)load("glPointParameterfSGIS"); + glad_glPointParameterfvSGIS = (PFNGLPOINTPARAMETERFVSGISPROC)load("glPointParameterfvSGIS"); +} +static void load_GL_SGIS_sharpen_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_sharpen_texture) return; + glad_glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)load("glSharpenTexFuncSGIS"); + glad_glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)load("glGetSharpenTexFuncSGIS"); +} +static void load_GL_SGIS_texture4D(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture4D) return; + glad_glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)load("glTexImage4DSGIS"); + glad_glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)load("glTexSubImage4DSGIS"); +} +static void load_GL_SGIS_texture_color_mask(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture_color_mask) return; + glad_glTextureColorMaskSGIS = (PFNGLTEXTURECOLORMASKSGISPROC)load("glTextureColorMaskSGIS"); +} +static void load_GL_SGIS_texture_filter4(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture_filter4) return; + glad_glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)load("glGetTexFilterFuncSGIS"); + glad_glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)load("glTexFilterFuncSGIS"); +} +static void load_GL_SGIX_async(GLADloadproc load) { + if(!GLAD_GL_SGIX_async) return; + glad_glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)load("glAsyncMarkerSGIX"); + glad_glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)load("glFinishAsyncSGIX"); + glad_glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)load("glPollAsyncSGIX"); + glad_glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)load("glGenAsyncMarkersSGIX"); + glad_glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)load("glDeleteAsyncMarkersSGIX"); + glad_glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)load("glIsAsyncMarkerSGIX"); +} +static void load_GL_SGIX_flush_raster(GLADloadproc load) { + if(!GLAD_GL_SGIX_flush_raster) return; + glad_glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)load("glFlushRasterSGIX"); +} +static void load_GL_SGIX_fragment_lighting(GLADloadproc load) { + if(!GLAD_GL_SGIX_fragment_lighting) return; + glad_glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)load("glFragmentColorMaterialSGIX"); + glad_glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)load("glFragmentLightfSGIX"); + glad_glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)load("glFragmentLightfvSGIX"); + glad_glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)load("glFragmentLightiSGIX"); + glad_glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)load("glFragmentLightivSGIX"); + glad_glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)load("glFragmentLightModelfSGIX"); + glad_glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)load("glFragmentLightModelfvSGIX"); + glad_glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)load("glFragmentLightModeliSGIX"); + glad_glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)load("glFragmentLightModelivSGIX"); + glad_glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)load("glFragmentMaterialfSGIX"); + glad_glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)load("glFragmentMaterialfvSGIX"); + glad_glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)load("glFragmentMaterialiSGIX"); + glad_glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)load("glFragmentMaterialivSGIX"); + glad_glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)load("glGetFragmentLightfvSGIX"); + glad_glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)load("glGetFragmentLightivSGIX"); + glad_glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)load("glGetFragmentMaterialfvSGIX"); + glad_glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)load("glGetFragmentMaterialivSGIX"); + glad_glLightEnviSGIX = (PFNGLLIGHTENVISGIXPROC)load("glLightEnviSGIX"); +} +static void load_GL_SGIX_framezoom(GLADloadproc load) { + if(!GLAD_GL_SGIX_framezoom) return; + glad_glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)load("glFrameZoomSGIX"); +} +static void load_GL_SGIX_igloo_interface(GLADloadproc load) { + if(!GLAD_GL_SGIX_igloo_interface) return; + glad_glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)load("glIglooInterfaceSGIX"); +} +static void load_GL_SGIX_instruments(GLADloadproc load) { + if(!GLAD_GL_SGIX_instruments) return; + glad_glGetInstrumentsSGIX = (PFNGLGETINSTRUMENTSSGIXPROC)load("glGetInstrumentsSGIX"); + glad_glInstrumentsBufferSGIX = (PFNGLINSTRUMENTSBUFFERSGIXPROC)load("glInstrumentsBufferSGIX"); + glad_glPollInstrumentsSGIX = (PFNGLPOLLINSTRUMENTSSGIXPROC)load("glPollInstrumentsSGIX"); + glad_glReadInstrumentsSGIX = (PFNGLREADINSTRUMENTSSGIXPROC)load("glReadInstrumentsSGIX"); + glad_glStartInstrumentsSGIX = (PFNGLSTARTINSTRUMENTSSGIXPROC)load("glStartInstrumentsSGIX"); + glad_glStopInstrumentsSGIX = (PFNGLSTOPINSTRUMENTSSGIXPROC)load("glStopInstrumentsSGIX"); +} +static void load_GL_SGIX_list_priority(GLADloadproc load) { + if(!GLAD_GL_SGIX_list_priority) return; + glad_glGetListParameterfvSGIX = (PFNGLGETLISTPARAMETERFVSGIXPROC)load("glGetListParameterfvSGIX"); + glad_glGetListParameterivSGIX = (PFNGLGETLISTPARAMETERIVSGIXPROC)load("glGetListParameterivSGIX"); + glad_glListParameterfSGIX = (PFNGLLISTPARAMETERFSGIXPROC)load("glListParameterfSGIX"); + glad_glListParameterfvSGIX = (PFNGLLISTPARAMETERFVSGIXPROC)load("glListParameterfvSGIX"); + glad_glListParameteriSGIX = (PFNGLLISTPARAMETERISGIXPROC)load("glListParameteriSGIX"); + glad_glListParameterivSGIX = (PFNGLLISTPARAMETERIVSGIXPROC)load("glListParameterivSGIX"); +} +static void load_GL_SGIX_pixel_texture(GLADloadproc load) { + if(!GLAD_GL_SGIX_pixel_texture) return; + glad_glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)load("glPixelTexGenSGIX"); +} +static void load_GL_SGIX_polynomial_ffd(GLADloadproc load) { + if(!GLAD_GL_SGIX_polynomial_ffd) return; + glad_glDeformationMap3dSGIX = (PFNGLDEFORMATIONMAP3DSGIXPROC)load("glDeformationMap3dSGIX"); + glad_glDeformationMap3fSGIX = (PFNGLDEFORMATIONMAP3FSGIXPROC)load("glDeformationMap3fSGIX"); + glad_glDeformSGIX = (PFNGLDEFORMSGIXPROC)load("glDeformSGIX"); + glad_glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)load("glLoadIdentityDeformationMapSGIX"); +} +static void load_GL_SGIX_reference_plane(GLADloadproc load) { + if(!GLAD_GL_SGIX_reference_plane) return; + glad_glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)load("glReferencePlaneSGIX"); +} +static void load_GL_SGIX_sprite(GLADloadproc load) { + if(!GLAD_GL_SGIX_sprite) return; + glad_glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)load("glSpriteParameterfSGIX"); + glad_glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)load("glSpriteParameterfvSGIX"); + glad_glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)load("glSpriteParameteriSGIX"); + glad_glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)load("glSpriteParameterivSGIX"); +} +static void load_GL_SGIX_tag_sample_buffer(GLADloadproc load) { + if(!GLAD_GL_SGIX_tag_sample_buffer) return; + glad_glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)load("glTagSampleBufferSGIX"); +} +static void load_GL_SGI_color_table(GLADloadproc load) { + if(!GLAD_GL_SGI_color_table) return; + glad_glColorTableSGI = (PFNGLCOLORTABLESGIPROC)load("glColorTableSGI"); + glad_glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)load("glColorTableParameterfvSGI"); + glad_glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)load("glColorTableParameterivSGI"); + glad_glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)load("glCopyColorTableSGI"); + glad_glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)load("glGetColorTableSGI"); + glad_glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)load("glGetColorTableParameterfvSGI"); + glad_glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)load("glGetColorTableParameterivSGI"); +} +static void load_GL_SUNX_constant_data(GLADloadproc load) { + if(!GLAD_GL_SUNX_constant_data) return; + glad_glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)load("glFinishTextureSUNX"); +} +static void load_GL_SUN_global_alpha(GLADloadproc load) { + if(!GLAD_GL_SUN_global_alpha) return; + glad_glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)load("glGlobalAlphaFactorbSUN"); + glad_glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)load("glGlobalAlphaFactorsSUN"); + glad_glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)load("glGlobalAlphaFactoriSUN"); + glad_glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)load("glGlobalAlphaFactorfSUN"); + glad_glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)load("glGlobalAlphaFactordSUN"); + glad_glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)load("glGlobalAlphaFactorubSUN"); + glad_glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)load("glGlobalAlphaFactorusSUN"); + glad_glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)load("glGlobalAlphaFactoruiSUN"); +} +static void load_GL_SUN_mesh_array(GLADloadproc load) { + if(!GLAD_GL_SUN_mesh_array) return; + glad_glDrawMeshArraysSUN = (PFNGLDRAWMESHARRAYSSUNPROC)load("glDrawMeshArraysSUN"); +} +static void load_GL_SUN_triangle_list(GLADloadproc load) { + if(!GLAD_GL_SUN_triangle_list) return; + glad_glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)load("glReplacementCodeuiSUN"); + glad_glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)load("glReplacementCodeusSUN"); + glad_glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)load("glReplacementCodeubSUN"); + glad_glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)load("glReplacementCodeuivSUN"); + glad_glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)load("glReplacementCodeusvSUN"); + glad_glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)load("glReplacementCodeubvSUN"); + glad_glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)load("glReplacementCodePointerSUN"); +} +static void load_GL_SUN_vertex(GLADloadproc load) { + if(!GLAD_GL_SUN_vertex) return; + glad_glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)load("glColor4ubVertex2fSUN"); + glad_glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)load("glColor4ubVertex2fvSUN"); + glad_glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)load("glColor4ubVertex3fSUN"); + glad_glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)load("glColor4ubVertex3fvSUN"); + glad_glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)load("glColor3fVertex3fSUN"); + glad_glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)load("glColor3fVertex3fvSUN"); + glad_glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)load("glNormal3fVertex3fSUN"); + glad_glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)load("glNormal3fVertex3fvSUN"); + glad_glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glColor4fNormal3fVertex3fSUN"); + glad_glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glColor4fNormal3fVertex3fvSUN"); + glad_glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)load("glTexCoord2fVertex3fSUN"); + glad_glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)load("glTexCoord2fVertex3fvSUN"); + glad_glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)load("glTexCoord4fVertex4fSUN"); + glad_glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)load("glTexCoord4fVertex4fvSUN"); + glad_glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)load("glTexCoord2fColor4ubVertex3fSUN"); + glad_glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)load("glTexCoord2fColor4ubVertex3fvSUN"); + glad_glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)load("glTexCoord2fColor3fVertex3fSUN"); + glad_glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)load("glTexCoord2fColor3fVertex3fvSUN"); + glad_glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fNormal3fVertex3fSUN"); + glad_glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fNormal3fVertex3fvSUN"); + glad_glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fSUN"); + glad_glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fvSUN"); + glad_glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fSUN"); + glad_glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fvSUN"); + glad_glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)load("glReplacementCodeuiVertex3fSUN"); + glad_glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)load("glReplacementCodeuiVertex3fvSUN"); + glad_glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)load("glReplacementCodeuiColor4ubVertex3fSUN"); + glad_glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4ubVertex3fvSUN"); + glad_glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor3fVertex3fSUN"); + glad_glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor3fVertex3fvSUN"); + glad_glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiNormal3fVertex3fSUN"); + glad_glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); +} +static int find_extensionsGL(void) { + if (!get_exts()) return 0; + GLAD_GL_3DFX_multisample = has_ext("GL_3DFX_multisample"); + GLAD_GL_3DFX_tbuffer = has_ext("GL_3DFX_tbuffer"); + GLAD_GL_3DFX_texture_compression_FXT1 = has_ext("GL_3DFX_texture_compression_FXT1"); + GLAD_GL_AMD_blend_minmax_factor = has_ext("GL_AMD_blend_minmax_factor"); + GLAD_GL_AMD_conservative_depth = has_ext("GL_AMD_conservative_depth"); + GLAD_GL_AMD_debug_output = has_ext("GL_AMD_debug_output"); + GLAD_GL_AMD_depth_clamp_separate = has_ext("GL_AMD_depth_clamp_separate"); + GLAD_GL_AMD_draw_buffers_blend = has_ext("GL_AMD_draw_buffers_blend"); + GLAD_GL_AMD_framebuffer_multisample_advanced = has_ext("GL_AMD_framebuffer_multisample_advanced"); + GLAD_GL_AMD_framebuffer_sample_positions = has_ext("GL_AMD_framebuffer_sample_positions"); + GLAD_GL_AMD_gcn_shader = has_ext("GL_AMD_gcn_shader"); + GLAD_GL_AMD_gpu_shader_half_float = has_ext("GL_AMD_gpu_shader_half_float"); + GLAD_GL_AMD_gpu_shader_int16 = has_ext("GL_AMD_gpu_shader_int16"); + GLAD_GL_AMD_gpu_shader_int64 = has_ext("GL_AMD_gpu_shader_int64"); + GLAD_GL_AMD_interleaved_elements = has_ext("GL_AMD_interleaved_elements"); + GLAD_GL_AMD_multi_draw_indirect = has_ext("GL_AMD_multi_draw_indirect"); + GLAD_GL_AMD_name_gen_delete = has_ext("GL_AMD_name_gen_delete"); + GLAD_GL_AMD_occlusion_query_event = has_ext("GL_AMD_occlusion_query_event"); + GLAD_GL_AMD_performance_monitor = has_ext("GL_AMD_performance_monitor"); + GLAD_GL_AMD_pinned_memory = has_ext("GL_AMD_pinned_memory"); + GLAD_GL_AMD_query_buffer_object = has_ext("GL_AMD_query_buffer_object"); + GLAD_GL_AMD_sample_positions = has_ext("GL_AMD_sample_positions"); + GLAD_GL_AMD_seamless_cubemap_per_texture = has_ext("GL_AMD_seamless_cubemap_per_texture"); + GLAD_GL_AMD_shader_atomic_counter_ops = has_ext("GL_AMD_shader_atomic_counter_ops"); + GLAD_GL_AMD_shader_ballot = has_ext("GL_AMD_shader_ballot"); + GLAD_GL_AMD_shader_explicit_vertex_parameter = has_ext("GL_AMD_shader_explicit_vertex_parameter"); + GLAD_GL_AMD_shader_gpu_shader_half_float_fetch = has_ext("GL_AMD_shader_gpu_shader_half_float_fetch"); + GLAD_GL_AMD_shader_image_load_store_lod = has_ext("GL_AMD_shader_image_load_store_lod"); + GLAD_GL_AMD_shader_stencil_export = has_ext("GL_AMD_shader_stencil_export"); + GLAD_GL_AMD_shader_trinary_minmax = has_ext("GL_AMD_shader_trinary_minmax"); + GLAD_GL_AMD_sparse_texture = has_ext("GL_AMD_sparse_texture"); + GLAD_GL_AMD_stencil_operation_extended = has_ext("GL_AMD_stencil_operation_extended"); + GLAD_GL_AMD_texture_gather_bias_lod = has_ext("GL_AMD_texture_gather_bias_lod"); + GLAD_GL_AMD_texture_texture4 = has_ext("GL_AMD_texture_texture4"); + GLAD_GL_AMD_transform_feedback3_lines_triangles = has_ext("GL_AMD_transform_feedback3_lines_triangles"); + GLAD_GL_AMD_transform_feedback4 = has_ext("GL_AMD_transform_feedback4"); + GLAD_GL_AMD_vertex_shader_layer = has_ext("GL_AMD_vertex_shader_layer"); + GLAD_GL_AMD_vertex_shader_tessellator = has_ext("GL_AMD_vertex_shader_tessellator"); + GLAD_GL_AMD_vertex_shader_viewport_index = has_ext("GL_AMD_vertex_shader_viewport_index"); + GLAD_GL_APPLE_aux_depth_stencil = has_ext("GL_APPLE_aux_depth_stencil"); + GLAD_GL_APPLE_client_storage = has_ext("GL_APPLE_client_storage"); + GLAD_GL_APPLE_element_array = has_ext("GL_APPLE_element_array"); + GLAD_GL_APPLE_fence = has_ext("GL_APPLE_fence"); + GLAD_GL_APPLE_float_pixels = has_ext("GL_APPLE_float_pixels"); + GLAD_GL_APPLE_flush_buffer_range = has_ext("GL_APPLE_flush_buffer_range"); + GLAD_GL_APPLE_object_purgeable = has_ext("GL_APPLE_object_purgeable"); + GLAD_GL_APPLE_rgb_422 = has_ext("GL_APPLE_rgb_422"); + GLAD_GL_APPLE_row_bytes = has_ext("GL_APPLE_row_bytes"); + GLAD_GL_APPLE_specular_vector = has_ext("GL_APPLE_specular_vector"); + GLAD_GL_APPLE_texture_range = has_ext("GL_APPLE_texture_range"); + GLAD_GL_APPLE_transform_hint = has_ext("GL_APPLE_transform_hint"); + GLAD_GL_APPLE_vertex_array_object = has_ext("GL_APPLE_vertex_array_object"); + GLAD_GL_APPLE_vertex_array_range = has_ext("GL_APPLE_vertex_array_range"); + GLAD_GL_APPLE_vertex_program_evaluators = has_ext("GL_APPLE_vertex_program_evaluators"); + GLAD_GL_APPLE_ycbcr_422 = has_ext("GL_APPLE_ycbcr_422"); + GLAD_GL_ARB_ES2_compatibility = has_ext("GL_ARB_ES2_compatibility"); + GLAD_GL_ARB_ES3_1_compatibility = has_ext("GL_ARB_ES3_1_compatibility"); + GLAD_GL_ARB_ES3_2_compatibility = has_ext("GL_ARB_ES3_2_compatibility"); + GLAD_GL_ARB_ES3_compatibility = has_ext("GL_ARB_ES3_compatibility"); + GLAD_GL_ARB_arrays_of_arrays = has_ext("GL_ARB_arrays_of_arrays"); + GLAD_GL_ARB_base_instance = has_ext("GL_ARB_base_instance"); + GLAD_GL_ARB_bindless_texture = has_ext("GL_ARB_bindless_texture"); + GLAD_GL_ARB_blend_func_extended = has_ext("GL_ARB_blend_func_extended"); + GLAD_GL_ARB_buffer_storage = has_ext("GL_ARB_buffer_storage"); + GLAD_GL_ARB_cl_event = has_ext("GL_ARB_cl_event"); + GLAD_GL_ARB_clear_buffer_object = has_ext("GL_ARB_clear_buffer_object"); + GLAD_GL_ARB_clear_texture = has_ext("GL_ARB_clear_texture"); + GLAD_GL_ARB_clip_control = has_ext("GL_ARB_clip_control"); + GLAD_GL_ARB_color_buffer_float = has_ext("GL_ARB_color_buffer_float"); + GLAD_GL_ARB_compatibility = has_ext("GL_ARB_compatibility"); + GLAD_GL_ARB_compressed_texture_pixel_storage = has_ext("GL_ARB_compressed_texture_pixel_storage"); + GLAD_GL_ARB_compute_shader = has_ext("GL_ARB_compute_shader"); + GLAD_GL_ARB_compute_variable_group_size = has_ext("GL_ARB_compute_variable_group_size"); + GLAD_GL_ARB_conditional_render_inverted = has_ext("GL_ARB_conditional_render_inverted"); + GLAD_GL_ARB_conservative_depth = has_ext("GL_ARB_conservative_depth"); + GLAD_GL_ARB_copy_buffer = has_ext("GL_ARB_copy_buffer"); + GLAD_GL_ARB_copy_image = has_ext("GL_ARB_copy_image"); + GLAD_GL_ARB_cull_distance = has_ext("GL_ARB_cull_distance"); + GLAD_GL_ARB_debug_output = has_ext("GL_ARB_debug_output"); + GLAD_GL_ARB_depth_buffer_float = has_ext("GL_ARB_depth_buffer_float"); + GLAD_GL_ARB_depth_clamp = has_ext("GL_ARB_depth_clamp"); + GLAD_GL_ARB_depth_texture = has_ext("GL_ARB_depth_texture"); + GLAD_GL_ARB_derivative_control = has_ext("GL_ARB_derivative_control"); + GLAD_GL_ARB_direct_state_access = has_ext("GL_ARB_direct_state_access"); + GLAD_GL_ARB_draw_buffers = has_ext("GL_ARB_draw_buffers"); + GLAD_GL_ARB_draw_buffers_blend = has_ext("GL_ARB_draw_buffers_blend"); + GLAD_GL_ARB_draw_elements_base_vertex = has_ext("GL_ARB_draw_elements_base_vertex"); + GLAD_GL_ARB_draw_indirect = has_ext("GL_ARB_draw_indirect"); + GLAD_GL_ARB_draw_instanced = has_ext("GL_ARB_draw_instanced"); + GLAD_GL_ARB_enhanced_layouts = has_ext("GL_ARB_enhanced_layouts"); + GLAD_GL_ARB_explicit_attrib_location = has_ext("GL_ARB_explicit_attrib_location"); + GLAD_GL_ARB_explicit_uniform_location = has_ext("GL_ARB_explicit_uniform_location"); + GLAD_GL_ARB_fragment_coord_conventions = has_ext("GL_ARB_fragment_coord_conventions"); + GLAD_GL_ARB_fragment_layer_viewport = has_ext("GL_ARB_fragment_layer_viewport"); + GLAD_GL_ARB_fragment_program = has_ext("GL_ARB_fragment_program"); + GLAD_GL_ARB_fragment_program_shadow = has_ext("GL_ARB_fragment_program_shadow"); + GLAD_GL_ARB_fragment_shader = has_ext("GL_ARB_fragment_shader"); + GLAD_GL_ARB_fragment_shader_interlock = has_ext("GL_ARB_fragment_shader_interlock"); + GLAD_GL_ARB_framebuffer_no_attachments = has_ext("GL_ARB_framebuffer_no_attachments"); + GLAD_GL_ARB_framebuffer_object = has_ext("GL_ARB_framebuffer_object"); + GLAD_GL_ARB_framebuffer_sRGB = has_ext("GL_ARB_framebuffer_sRGB"); + GLAD_GL_ARB_geometry_shader4 = has_ext("GL_ARB_geometry_shader4"); + GLAD_GL_ARB_get_program_binary = has_ext("GL_ARB_get_program_binary"); + GLAD_GL_ARB_get_texture_sub_image = has_ext("GL_ARB_get_texture_sub_image"); + GLAD_GL_ARB_gl_spirv = has_ext("GL_ARB_gl_spirv"); + GLAD_GL_ARB_gpu_shader5 = has_ext("GL_ARB_gpu_shader5"); + GLAD_GL_ARB_gpu_shader_fp64 = has_ext("GL_ARB_gpu_shader_fp64"); + GLAD_GL_ARB_gpu_shader_int64 = has_ext("GL_ARB_gpu_shader_int64"); + GLAD_GL_ARB_half_float_pixel = has_ext("GL_ARB_half_float_pixel"); + GLAD_GL_ARB_half_float_vertex = has_ext("GL_ARB_half_float_vertex"); + GLAD_GL_ARB_imaging = has_ext("GL_ARB_imaging"); + GLAD_GL_ARB_indirect_parameters = has_ext("GL_ARB_indirect_parameters"); + GLAD_GL_ARB_instanced_arrays = has_ext("GL_ARB_instanced_arrays"); + GLAD_GL_ARB_internalformat_query = has_ext("GL_ARB_internalformat_query"); + GLAD_GL_ARB_internalformat_query2 = has_ext("GL_ARB_internalformat_query2"); + GLAD_GL_ARB_invalidate_subdata = has_ext("GL_ARB_invalidate_subdata"); + GLAD_GL_ARB_map_buffer_alignment = has_ext("GL_ARB_map_buffer_alignment"); + GLAD_GL_ARB_map_buffer_range = has_ext("GL_ARB_map_buffer_range"); + GLAD_GL_ARB_matrix_palette = has_ext("GL_ARB_matrix_palette"); + GLAD_GL_ARB_multi_bind = has_ext("GL_ARB_multi_bind"); + GLAD_GL_ARB_multi_draw_indirect = has_ext("GL_ARB_multi_draw_indirect"); + GLAD_GL_ARB_multisample = has_ext("GL_ARB_multisample"); + GLAD_GL_ARB_multitexture = has_ext("GL_ARB_multitexture"); + GLAD_GL_ARB_occlusion_query = has_ext("GL_ARB_occlusion_query"); + GLAD_GL_ARB_occlusion_query2 = has_ext("GL_ARB_occlusion_query2"); + GLAD_GL_ARB_parallel_shader_compile = has_ext("GL_ARB_parallel_shader_compile"); + GLAD_GL_ARB_pipeline_statistics_query = has_ext("GL_ARB_pipeline_statistics_query"); + GLAD_GL_ARB_pixel_buffer_object = has_ext("GL_ARB_pixel_buffer_object"); + GLAD_GL_ARB_point_parameters = has_ext("GL_ARB_point_parameters"); + GLAD_GL_ARB_point_sprite = has_ext("GL_ARB_point_sprite"); + GLAD_GL_ARB_polygon_offset_clamp = has_ext("GL_ARB_polygon_offset_clamp"); + GLAD_GL_ARB_post_depth_coverage = has_ext("GL_ARB_post_depth_coverage"); + GLAD_GL_ARB_program_interface_query = has_ext("GL_ARB_program_interface_query"); + GLAD_GL_ARB_provoking_vertex = has_ext("GL_ARB_provoking_vertex"); + GLAD_GL_ARB_query_buffer_object = has_ext("GL_ARB_query_buffer_object"); + GLAD_GL_ARB_robust_buffer_access_behavior = has_ext("GL_ARB_robust_buffer_access_behavior"); + GLAD_GL_ARB_robustness = has_ext("GL_ARB_robustness"); + GLAD_GL_ARB_robustness_isolation = has_ext("GL_ARB_robustness_isolation"); + GLAD_GL_ARB_sample_locations = has_ext("GL_ARB_sample_locations"); + GLAD_GL_ARB_sample_shading = has_ext("GL_ARB_sample_shading"); + GLAD_GL_ARB_sampler_objects = has_ext("GL_ARB_sampler_objects"); + GLAD_GL_ARB_seamless_cube_map = has_ext("GL_ARB_seamless_cube_map"); + GLAD_GL_ARB_seamless_cubemap_per_texture = has_ext("GL_ARB_seamless_cubemap_per_texture"); + GLAD_GL_ARB_separate_shader_objects = has_ext("GL_ARB_separate_shader_objects"); + GLAD_GL_ARB_shader_atomic_counter_ops = has_ext("GL_ARB_shader_atomic_counter_ops"); + GLAD_GL_ARB_shader_atomic_counters = has_ext("GL_ARB_shader_atomic_counters"); + GLAD_GL_ARB_shader_ballot = has_ext("GL_ARB_shader_ballot"); + GLAD_GL_ARB_shader_bit_encoding = has_ext("GL_ARB_shader_bit_encoding"); + GLAD_GL_ARB_shader_clock = has_ext("GL_ARB_shader_clock"); + GLAD_GL_ARB_shader_draw_parameters = has_ext("GL_ARB_shader_draw_parameters"); + GLAD_GL_ARB_shader_group_vote = has_ext("GL_ARB_shader_group_vote"); + GLAD_GL_ARB_shader_image_load_store = has_ext("GL_ARB_shader_image_load_store"); + GLAD_GL_ARB_shader_image_size = has_ext("GL_ARB_shader_image_size"); + GLAD_GL_ARB_shader_objects = has_ext("GL_ARB_shader_objects"); + GLAD_GL_ARB_shader_precision = has_ext("GL_ARB_shader_precision"); + GLAD_GL_ARB_shader_stencil_export = has_ext("GL_ARB_shader_stencil_export"); + GLAD_GL_ARB_shader_storage_buffer_object = has_ext("GL_ARB_shader_storage_buffer_object"); + GLAD_GL_ARB_shader_subroutine = has_ext("GL_ARB_shader_subroutine"); + GLAD_GL_ARB_shader_texture_image_samples = has_ext("GL_ARB_shader_texture_image_samples"); + GLAD_GL_ARB_shader_texture_lod = has_ext("GL_ARB_shader_texture_lod"); + GLAD_GL_ARB_shader_viewport_layer_array = has_ext("GL_ARB_shader_viewport_layer_array"); + GLAD_GL_ARB_shading_language_100 = has_ext("GL_ARB_shading_language_100"); + GLAD_GL_ARB_shading_language_420pack = has_ext("GL_ARB_shading_language_420pack"); + GLAD_GL_ARB_shading_language_include = has_ext("GL_ARB_shading_language_include"); + GLAD_GL_ARB_shading_language_packing = has_ext("GL_ARB_shading_language_packing"); + GLAD_GL_ARB_shadow = has_ext("GL_ARB_shadow"); + GLAD_GL_ARB_shadow_ambient = has_ext("GL_ARB_shadow_ambient"); + GLAD_GL_ARB_sparse_buffer = has_ext("GL_ARB_sparse_buffer"); + GLAD_GL_ARB_sparse_texture = has_ext("GL_ARB_sparse_texture"); + GLAD_GL_ARB_sparse_texture2 = has_ext("GL_ARB_sparse_texture2"); + GLAD_GL_ARB_sparse_texture_clamp = has_ext("GL_ARB_sparse_texture_clamp"); + GLAD_GL_ARB_spirv_extensions = has_ext("GL_ARB_spirv_extensions"); + GLAD_GL_ARB_stencil_texturing = has_ext("GL_ARB_stencil_texturing"); + GLAD_GL_ARB_sync = has_ext("GL_ARB_sync"); + GLAD_GL_ARB_tessellation_shader = has_ext("GL_ARB_tessellation_shader"); + GLAD_GL_ARB_texture_barrier = has_ext("GL_ARB_texture_barrier"); + GLAD_GL_ARB_texture_border_clamp = has_ext("GL_ARB_texture_border_clamp"); + GLAD_GL_ARB_texture_buffer_object = has_ext("GL_ARB_texture_buffer_object"); + GLAD_GL_ARB_texture_buffer_object_rgb32 = has_ext("GL_ARB_texture_buffer_object_rgb32"); + GLAD_GL_ARB_texture_buffer_range = has_ext("GL_ARB_texture_buffer_range"); + GLAD_GL_ARB_texture_compression = has_ext("GL_ARB_texture_compression"); + GLAD_GL_ARB_texture_compression_bptc = has_ext("GL_ARB_texture_compression_bptc"); + GLAD_GL_ARB_texture_compression_rgtc = has_ext("GL_ARB_texture_compression_rgtc"); + GLAD_GL_ARB_texture_cube_map = has_ext("GL_ARB_texture_cube_map"); + GLAD_GL_ARB_texture_cube_map_array = has_ext("GL_ARB_texture_cube_map_array"); + GLAD_GL_ARB_texture_env_add = has_ext("GL_ARB_texture_env_add"); + GLAD_GL_ARB_texture_env_combine = has_ext("GL_ARB_texture_env_combine"); + GLAD_GL_ARB_texture_env_crossbar = has_ext("GL_ARB_texture_env_crossbar"); + GLAD_GL_ARB_texture_env_dot3 = has_ext("GL_ARB_texture_env_dot3"); + GLAD_GL_ARB_texture_filter_anisotropic = has_ext("GL_ARB_texture_filter_anisotropic"); + GLAD_GL_ARB_texture_filter_minmax = has_ext("GL_ARB_texture_filter_minmax"); + GLAD_GL_ARB_texture_float = has_ext("GL_ARB_texture_float"); + GLAD_GL_ARB_texture_gather = has_ext("GL_ARB_texture_gather"); + GLAD_GL_ARB_texture_mirror_clamp_to_edge = has_ext("GL_ARB_texture_mirror_clamp_to_edge"); + GLAD_GL_ARB_texture_mirrored_repeat = has_ext("GL_ARB_texture_mirrored_repeat"); + GLAD_GL_ARB_texture_multisample = has_ext("GL_ARB_texture_multisample"); + GLAD_GL_ARB_texture_non_power_of_two = has_ext("GL_ARB_texture_non_power_of_two"); + GLAD_GL_ARB_texture_query_levels = has_ext("GL_ARB_texture_query_levels"); + GLAD_GL_ARB_texture_query_lod = has_ext("GL_ARB_texture_query_lod"); + GLAD_GL_ARB_texture_rectangle = has_ext("GL_ARB_texture_rectangle"); + GLAD_GL_ARB_texture_rg = has_ext("GL_ARB_texture_rg"); + GLAD_GL_ARB_texture_rgb10_a2ui = has_ext("GL_ARB_texture_rgb10_a2ui"); + GLAD_GL_ARB_texture_stencil8 = has_ext("GL_ARB_texture_stencil8"); + GLAD_GL_ARB_texture_storage = has_ext("GL_ARB_texture_storage"); + GLAD_GL_ARB_texture_storage_multisample = has_ext("GL_ARB_texture_storage_multisample"); + GLAD_GL_ARB_texture_swizzle = has_ext("GL_ARB_texture_swizzle"); + GLAD_GL_ARB_texture_view = has_ext("GL_ARB_texture_view"); + GLAD_GL_ARB_timer_query = has_ext("GL_ARB_timer_query"); + GLAD_GL_ARB_transform_feedback2 = has_ext("GL_ARB_transform_feedback2"); + GLAD_GL_ARB_transform_feedback3 = has_ext("GL_ARB_transform_feedback3"); + GLAD_GL_ARB_transform_feedback_instanced = has_ext("GL_ARB_transform_feedback_instanced"); + GLAD_GL_ARB_transform_feedback_overflow_query = has_ext("GL_ARB_transform_feedback_overflow_query"); + GLAD_GL_ARB_transpose_matrix = has_ext("GL_ARB_transpose_matrix"); + GLAD_GL_ARB_uniform_buffer_object = has_ext("GL_ARB_uniform_buffer_object"); + GLAD_GL_ARB_vertex_array_bgra = has_ext("GL_ARB_vertex_array_bgra"); + GLAD_GL_ARB_vertex_array_object = has_ext("GL_ARB_vertex_array_object"); + GLAD_GL_ARB_vertex_attrib_64bit = has_ext("GL_ARB_vertex_attrib_64bit"); + GLAD_GL_ARB_vertex_attrib_binding = has_ext("GL_ARB_vertex_attrib_binding"); + GLAD_GL_ARB_vertex_blend = has_ext("GL_ARB_vertex_blend"); + GLAD_GL_ARB_vertex_buffer_object = has_ext("GL_ARB_vertex_buffer_object"); + GLAD_GL_ARB_vertex_program = has_ext("GL_ARB_vertex_program"); + GLAD_GL_ARB_vertex_shader = has_ext("GL_ARB_vertex_shader"); + GLAD_GL_ARB_vertex_type_10f_11f_11f_rev = has_ext("GL_ARB_vertex_type_10f_11f_11f_rev"); + GLAD_GL_ARB_vertex_type_2_10_10_10_rev = has_ext("GL_ARB_vertex_type_2_10_10_10_rev"); + GLAD_GL_ARB_viewport_array = has_ext("GL_ARB_viewport_array"); + GLAD_GL_ARB_window_pos = has_ext("GL_ARB_window_pos"); + GLAD_GL_ATI_draw_buffers = has_ext("GL_ATI_draw_buffers"); + GLAD_GL_ATI_element_array = has_ext("GL_ATI_element_array"); + GLAD_GL_ATI_envmap_bumpmap = has_ext("GL_ATI_envmap_bumpmap"); + GLAD_GL_ATI_fragment_shader = has_ext("GL_ATI_fragment_shader"); + GLAD_GL_ATI_map_object_buffer = has_ext("GL_ATI_map_object_buffer"); + GLAD_GL_ATI_meminfo = has_ext("GL_ATI_meminfo"); + GLAD_GL_ATI_pixel_format_float = has_ext("GL_ATI_pixel_format_float"); + GLAD_GL_ATI_pn_triangles = has_ext("GL_ATI_pn_triangles"); + GLAD_GL_ATI_separate_stencil = has_ext("GL_ATI_separate_stencil"); + GLAD_GL_ATI_text_fragment_shader = has_ext("GL_ATI_text_fragment_shader"); + GLAD_GL_ATI_texture_env_combine3 = has_ext("GL_ATI_texture_env_combine3"); + GLAD_GL_ATI_texture_float = has_ext("GL_ATI_texture_float"); + GLAD_GL_ATI_texture_mirror_once = has_ext("GL_ATI_texture_mirror_once"); + GLAD_GL_ATI_vertex_array_object = has_ext("GL_ATI_vertex_array_object"); + GLAD_GL_ATI_vertex_attrib_array_object = has_ext("GL_ATI_vertex_attrib_array_object"); + GLAD_GL_ATI_vertex_streams = has_ext("GL_ATI_vertex_streams"); + GLAD_GL_EXT_422_pixels = has_ext("GL_EXT_422_pixels"); + GLAD_GL_EXT_EGL_image_storage = has_ext("GL_EXT_EGL_image_storage"); + GLAD_GL_EXT_EGL_sync = has_ext("GL_EXT_EGL_sync"); + GLAD_GL_EXT_abgr = has_ext("GL_EXT_abgr"); + GLAD_GL_EXT_bgra = has_ext("GL_EXT_bgra"); + GLAD_GL_EXT_bindable_uniform = has_ext("GL_EXT_bindable_uniform"); + GLAD_GL_EXT_blend_color = has_ext("GL_EXT_blend_color"); + GLAD_GL_EXT_blend_equation_separate = has_ext("GL_EXT_blend_equation_separate"); + GLAD_GL_EXT_blend_func_separate = has_ext("GL_EXT_blend_func_separate"); + GLAD_GL_EXT_blend_logic_op = has_ext("GL_EXT_blend_logic_op"); + GLAD_GL_EXT_blend_minmax = has_ext("GL_EXT_blend_minmax"); + GLAD_GL_EXT_blend_subtract = has_ext("GL_EXT_blend_subtract"); + GLAD_GL_EXT_clip_volume_hint = has_ext("GL_EXT_clip_volume_hint"); + GLAD_GL_EXT_cmyka = has_ext("GL_EXT_cmyka"); + GLAD_GL_EXT_color_subtable = has_ext("GL_EXT_color_subtable"); + GLAD_GL_EXT_compiled_vertex_array = has_ext("GL_EXT_compiled_vertex_array"); + GLAD_GL_EXT_convolution = has_ext("GL_EXT_convolution"); + GLAD_GL_EXT_coordinate_frame = has_ext("GL_EXT_coordinate_frame"); + GLAD_GL_EXT_copy_texture = has_ext("GL_EXT_copy_texture"); + GLAD_GL_EXT_cull_vertex = has_ext("GL_EXT_cull_vertex"); + GLAD_GL_EXT_debug_label = has_ext("GL_EXT_debug_label"); + GLAD_GL_EXT_debug_marker = has_ext("GL_EXT_debug_marker"); + GLAD_GL_EXT_depth_bounds_test = has_ext("GL_EXT_depth_bounds_test"); + GLAD_GL_EXT_direct_state_access = has_ext("GL_EXT_direct_state_access"); + GLAD_GL_EXT_draw_buffers2 = has_ext("GL_EXT_draw_buffers2"); + GLAD_GL_EXT_draw_instanced = has_ext("GL_EXT_draw_instanced"); + GLAD_GL_EXT_draw_range_elements = has_ext("GL_EXT_draw_range_elements"); + GLAD_GL_EXT_external_buffer = has_ext("GL_EXT_external_buffer"); + GLAD_GL_EXT_fog_coord = has_ext("GL_EXT_fog_coord"); + GLAD_GL_EXT_framebuffer_blit = has_ext("GL_EXT_framebuffer_blit"); + GLAD_GL_EXT_framebuffer_multisample = has_ext("GL_EXT_framebuffer_multisample"); + GLAD_GL_EXT_framebuffer_multisample_blit_scaled = has_ext("GL_EXT_framebuffer_multisample_blit_scaled"); + GLAD_GL_EXT_framebuffer_object = has_ext("GL_EXT_framebuffer_object"); + GLAD_GL_EXT_framebuffer_sRGB = has_ext("GL_EXT_framebuffer_sRGB"); + GLAD_GL_EXT_geometry_shader4 = has_ext("GL_EXT_geometry_shader4"); + GLAD_GL_EXT_gpu_program_parameters = has_ext("GL_EXT_gpu_program_parameters"); + GLAD_GL_EXT_gpu_shader4 = has_ext("GL_EXT_gpu_shader4"); + GLAD_GL_EXT_histogram = has_ext("GL_EXT_histogram"); + GLAD_GL_EXT_index_array_formats = has_ext("GL_EXT_index_array_formats"); + GLAD_GL_EXT_index_func = has_ext("GL_EXT_index_func"); + GLAD_GL_EXT_index_material = has_ext("GL_EXT_index_material"); + GLAD_GL_EXT_index_texture = has_ext("GL_EXT_index_texture"); + GLAD_GL_EXT_light_texture = has_ext("GL_EXT_light_texture"); + GLAD_GL_EXT_memory_object = has_ext("GL_EXT_memory_object"); + GLAD_GL_EXT_memory_object_fd = has_ext("GL_EXT_memory_object_fd"); + GLAD_GL_EXT_memory_object_win32 = has_ext("GL_EXT_memory_object_win32"); + GLAD_GL_EXT_misc_attribute = has_ext("GL_EXT_misc_attribute"); + GLAD_GL_EXT_multi_draw_arrays = has_ext("GL_EXT_multi_draw_arrays"); + GLAD_GL_EXT_multisample = has_ext("GL_EXT_multisample"); + GLAD_GL_EXT_multiview_tessellation_geometry_shader = has_ext("GL_EXT_multiview_tessellation_geometry_shader"); + GLAD_GL_EXT_multiview_texture_multisample = has_ext("GL_EXT_multiview_texture_multisample"); + GLAD_GL_EXT_multiview_timer_query = has_ext("GL_EXT_multiview_timer_query"); + GLAD_GL_EXT_packed_depth_stencil = has_ext("GL_EXT_packed_depth_stencil"); + GLAD_GL_EXT_packed_float = has_ext("GL_EXT_packed_float"); + GLAD_GL_EXT_packed_pixels = has_ext("GL_EXT_packed_pixels"); + GLAD_GL_EXT_paletted_texture = has_ext("GL_EXT_paletted_texture"); + GLAD_GL_EXT_pixel_buffer_object = has_ext("GL_EXT_pixel_buffer_object"); + GLAD_GL_EXT_pixel_transform = has_ext("GL_EXT_pixel_transform"); + GLAD_GL_EXT_pixel_transform_color_table = has_ext("GL_EXT_pixel_transform_color_table"); + GLAD_GL_EXT_point_parameters = has_ext("GL_EXT_point_parameters"); + GLAD_GL_EXT_polygon_offset = has_ext("GL_EXT_polygon_offset"); + GLAD_GL_EXT_polygon_offset_clamp = has_ext("GL_EXT_polygon_offset_clamp"); + GLAD_GL_EXT_post_depth_coverage = has_ext("GL_EXT_post_depth_coverage"); + GLAD_GL_EXT_provoking_vertex = has_ext("GL_EXT_provoking_vertex"); + GLAD_GL_EXT_raster_multisample = has_ext("GL_EXT_raster_multisample"); + GLAD_GL_EXT_rescale_normal = has_ext("GL_EXT_rescale_normal"); + GLAD_GL_EXT_secondary_color = has_ext("GL_EXT_secondary_color"); + GLAD_GL_EXT_semaphore = has_ext("GL_EXT_semaphore"); + GLAD_GL_EXT_semaphore_fd = has_ext("GL_EXT_semaphore_fd"); + GLAD_GL_EXT_semaphore_win32 = has_ext("GL_EXT_semaphore_win32"); + GLAD_GL_EXT_separate_shader_objects = has_ext("GL_EXT_separate_shader_objects"); + GLAD_GL_EXT_separate_specular_color = has_ext("GL_EXT_separate_specular_color"); + GLAD_GL_EXT_shader_framebuffer_fetch = has_ext("GL_EXT_shader_framebuffer_fetch"); + GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent = has_ext("GL_EXT_shader_framebuffer_fetch_non_coherent"); + GLAD_GL_EXT_shader_image_load_formatted = has_ext("GL_EXT_shader_image_load_formatted"); + GLAD_GL_EXT_shader_image_load_store = has_ext("GL_EXT_shader_image_load_store"); + GLAD_GL_EXT_shader_integer_mix = has_ext("GL_EXT_shader_integer_mix"); + GLAD_GL_EXT_shadow_funcs = has_ext("GL_EXT_shadow_funcs"); + GLAD_GL_EXT_shared_texture_palette = has_ext("GL_EXT_shared_texture_palette"); + GLAD_GL_EXT_sparse_texture2 = has_ext("GL_EXT_sparse_texture2"); + GLAD_GL_EXT_stencil_clear_tag = has_ext("GL_EXT_stencil_clear_tag"); + GLAD_GL_EXT_stencil_two_side = has_ext("GL_EXT_stencil_two_side"); + GLAD_GL_EXT_stencil_wrap = has_ext("GL_EXT_stencil_wrap"); + GLAD_GL_EXT_subtexture = has_ext("GL_EXT_subtexture"); + GLAD_GL_EXT_texture = has_ext("GL_EXT_texture"); + GLAD_GL_EXT_texture3D = has_ext("GL_EXT_texture3D"); + GLAD_GL_EXT_texture_array = has_ext("GL_EXT_texture_array"); + GLAD_GL_EXT_texture_buffer_object = has_ext("GL_EXT_texture_buffer_object"); + GLAD_GL_EXT_texture_compression_latc = has_ext("GL_EXT_texture_compression_latc"); + GLAD_GL_EXT_texture_compression_rgtc = has_ext("GL_EXT_texture_compression_rgtc"); + GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); + GLAD_GL_EXT_texture_cube_map = has_ext("GL_EXT_texture_cube_map"); + GLAD_GL_EXT_texture_env_add = has_ext("GL_EXT_texture_env_add"); + GLAD_GL_EXT_texture_env_combine = has_ext("GL_EXT_texture_env_combine"); + GLAD_GL_EXT_texture_env_dot3 = has_ext("GL_EXT_texture_env_dot3"); + GLAD_GL_EXT_texture_filter_anisotropic = has_ext("GL_EXT_texture_filter_anisotropic"); + GLAD_GL_EXT_texture_filter_minmax = has_ext("GL_EXT_texture_filter_minmax"); + GLAD_GL_EXT_texture_integer = has_ext("GL_EXT_texture_integer"); + GLAD_GL_EXT_texture_lod_bias = has_ext("GL_EXT_texture_lod_bias"); + GLAD_GL_EXT_texture_mirror_clamp = has_ext("GL_EXT_texture_mirror_clamp"); + GLAD_GL_EXT_texture_object = has_ext("GL_EXT_texture_object"); + GLAD_GL_EXT_texture_perturb_normal = has_ext("GL_EXT_texture_perturb_normal"); + GLAD_GL_EXT_texture_sRGB = has_ext("GL_EXT_texture_sRGB"); + GLAD_GL_EXT_texture_sRGB_R8 = has_ext("GL_EXT_texture_sRGB_R8"); + GLAD_GL_EXT_texture_sRGB_decode = has_ext("GL_EXT_texture_sRGB_decode"); + GLAD_GL_EXT_texture_shadow_lod = has_ext("GL_EXT_texture_shadow_lod"); + GLAD_GL_EXT_texture_shared_exponent = has_ext("GL_EXT_texture_shared_exponent"); + GLAD_GL_EXT_texture_snorm = has_ext("GL_EXT_texture_snorm"); + GLAD_GL_EXT_texture_swizzle = has_ext("GL_EXT_texture_swizzle"); + GLAD_GL_EXT_timer_query = has_ext("GL_EXT_timer_query"); + GLAD_GL_EXT_transform_feedback = has_ext("GL_EXT_transform_feedback"); + GLAD_GL_EXT_vertex_array = has_ext("GL_EXT_vertex_array"); + GLAD_GL_EXT_vertex_array_bgra = has_ext("GL_EXT_vertex_array_bgra"); + GLAD_GL_EXT_vertex_attrib_64bit = has_ext("GL_EXT_vertex_attrib_64bit"); + GLAD_GL_EXT_vertex_shader = has_ext("GL_EXT_vertex_shader"); + GLAD_GL_EXT_vertex_weighting = has_ext("GL_EXT_vertex_weighting"); + GLAD_GL_EXT_win32_keyed_mutex = has_ext("GL_EXT_win32_keyed_mutex"); + GLAD_GL_EXT_window_rectangles = has_ext("GL_EXT_window_rectangles"); + GLAD_GL_EXT_x11_sync_object = has_ext("GL_EXT_x11_sync_object"); + GLAD_GL_GREMEDY_frame_terminator = has_ext("GL_GREMEDY_frame_terminator"); + GLAD_GL_GREMEDY_string_marker = has_ext("GL_GREMEDY_string_marker"); + GLAD_GL_HP_convolution_border_modes = has_ext("GL_HP_convolution_border_modes"); + GLAD_GL_HP_image_transform = has_ext("GL_HP_image_transform"); + GLAD_GL_HP_occlusion_test = has_ext("GL_HP_occlusion_test"); + GLAD_GL_HP_texture_lighting = has_ext("GL_HP_texture_lighting"); + GLAD_GL_IBM_cull_vertex = has_ext("GL_IBM_cull_vertex"); + GLAD_GL_IBM_multimode_draw_arrays = has_ext("GL_IBM_multimode_draw_arrays"); + GLAD_GL_IBM_rasterpos_clip = has_ext("GL_IBM_rasterpos_clip"); + GLAD_GL_IBM_static_data = has_ext("GL_IBM_static_data"); + GLAD_GL_IBM_texture_mirrored_repeat = has_ext("GL_IBM_texture_mirrored_repeat"); + GLAD_GL_IBM_vertex_array_lists = has_ext("GL_IBM_vertex_array_lists"); + GLAD_GL_INGR_blend_func_separate = has_ext("GL_INGR_blend_func_separate"); + GLAD_GL_INGR_color_clamp = has_ext("GL_INGR_color_clamp"); + GLAD_GL_INGR_interlace_read = has_ext("GL_INGR_interlace_read"); + GLAD_GL_INTEL_blackhole_render = has_ext("GL_INTEL_blackhole_render"); + GLAD_GL_INTEL_conservative_rasterization = has_ext("GL_INTEL_conservative_rasterization"); + GLAD_GL_INTEL_fragment_shader_ordering = has_ext("GL_INTEL_fragment_shader_ordering"); + GLAD_GL_INTEL_framebuffer_CMAA = has_ext("GL_INTEL_framebuffer_CMAA"); + GLAD_GL_INTEL_map_texture = has_ext("GL_INTEL_map_texture"); + GLAD_GL_INTEL_parallel_arrays = has_ext("GL_INTEL_parallel_arrays"); + GLAD_GL_INTEL_performance_query = has_ext("GL_INTEL_performance_query"); + GLAD_GL_KHR_blend_equation_advanced = has_ext("GL_KHR_blend_equation_advanced"); + GLAD_GL_KHR_blend_equation_advanced_coherent = has_ext("GL_KHR_blend_equation_advanced_coherent"); + GLAD_GL_KHR_context_flush_control = has_ext("GL_KHR_context_flush_control"); + GLAD_GL_KHR_debug = has_ext("GL_KHR_debug"); + GLAD_GL_KHR_no_error = has_ext("GL_KHR_no_error"); + GLAD_GL_KHR_parallel_shader_compile = has_ext("GL_KHR_parallel_shader_compile"); + GLAD_GL_KHR_robust_buffer_access_behavior = has_ext("GL_KHR_robust_buffer_access_behavior"); + GLAD_GL_KHR_robustness = has_ext("GL_KHR_robustness"); + GLAD_GL_KHR_shader_subgroup = has_ext("GL_KHR_shader_subgroup"); + GLAD_GL_KHR_texture_compression_astc_hdr = has_ext("GL_KHR_texture_compression_astc_hdr"); + GLAD_GL_KHR_texture_compression_astc_ldr = has_ext("GL_KHR_texture_compression_astc_ldr"); + GLAD_GL_KHR_texture_compression_astc_sliced_3d = has_ext("GL_KHR_texture_compression_astc_sliced_3d"); + GLAD_GL_MESAX_texture_stack = has_ext("GL_MESAX_texture_stack"); + GLAD_GL_MESA_framebuffer_flip_y = has_ext("GL_MESA_framebuffer_flip_y"); + GLAD_GL_MESA_pack_invert = has_ext("GL_MESA_pack_invert"); + GLAD_GL_MESA_program_binary_formats = has_ext("GL_MESA_program_binary_formats"); + GLAD_GL_MESA_resize_buffers = has_ext("GL_MESA_resize_buffers"); + GLAD_GL_MESA_shader_integer_functions = has_ext("GL_MESA_shader_integer_functions"); + GLAD_GL_MESA_tile_raster_order = has_ext("GL_MESA_tile_raster_order"); + GLAD_GL_MESA_window_pos = has_ext("GL_MESA_window_pos"); + GLAD_GL_MESA_ycbcr_texture = has_ext("GL_MESA_ycbcr_texture"); + GLAD_GL_NVX_blend_equation_advanced_multi_draw_buffers = has_ext("GL_NVX_blend_equation_advanced_multi_draw_buffers"); + GLAD_GL_NVX_conditional_render = has_ext("GL_NVX_conditional_render"); + GLAD_GL_NVX_gpu_memory_info = has_ext("GL_NVX_gpu_memory_info"); + GLAD_GL_NVX_gpu_multicast2 = has_ext("GL_NVX_gpu_multicast2"); + GLAD_GL_NVX_linked_gpu_multicast = has_ext("GL_NVX_linked_gpu_multicast"); + GLAD_GL_NVX_progress_fence = has_ext("GL_NVX_progress_fence"); + GLAD_GL_NV_alpha_to_coverage_dither_control = has_ext("GL_NV_alpha_to_coverage_dither_control"); + GLAD_GL_NV_bindless_multi_draw_indirect = has_ext("GL_NV_bindless_multi_draw_indirect"); + GLAD_GL_NV_bindless_multi_draw_indirect_count = has_ext("GL_NV_bindless_multi_draw_indirect_count"); + GLAD_GL_NV_bindless_texture = has_ext("GL_NV_bindless_texture"); + GLAD_GL_NV_blend_equation_advanced = has_ext("GL_NV_blend_equation_advanced"); + GLAD_GL_NV_blend_equation_advanced_coherent = has_ext("GL_NV_blend_equation_advanced_coherent"); + GLAD_GL_NV_blend_minmax_factor = has_ext("GL_NV_blend_minmax_factor"); + GLAD_GL_NV_blend_square = has_ext("GL_NV_blend_square"); + GLAD_GL_NV_clip_space_w_scaling = has_ext("GL_NV_clip_space_w_scaling"); + GLAD_GL_NV_command_list = has_ext("GL_NV_command_list"); + GLAD_GL_NV_compute_program5 = has_ext("GL_NV_compute_program5"); + GLAD_GL_NV_compute_shader_derivatives = has_ext("GL_NV_compute_shader_derivatives"); + GLAD_GL_NV_conditional_render = has_ext("GL_NV_conditional_render"); + GLAD_GL_NV_conservative_raster = has_ext("GL_NV_conservative_raster"); + GLAD_GL_NV_conservative_raster_dilate = has_ext("GL_NV_conservative_raster_dilate"); + GLAD_GL_NV_conservative_raster_pre_snap = has_ext("GL_NV_conservative_raster_pre_snap"); + GLAD_GL_NV_conservative_raster_pre_snap_triangles = has_ext("GL_NV_conservative_raster_pre_snap_triangles"); + GLAD_GL_NV_conservative_raster_underestimation = has_ext("GL_NV_conservative_raster_underestimation"); + GLAD_GL_NV_copy_depth_to_color = has_ext("GL_NV_copy_depth_to_color"); + GLAD_GL_NV_copy_image = has_ext("GL_NV_copy_image"); + GLAD_GL_NV_deep_texture3D = has_ext("GL_NV_deep_texture3D"); + GLAD_GL_NV_depth_buffer_float = has_ext("GL_NV_depth_buffer_float"); + GLAD_GL_NV_depth_clamp = has_ext("GL_NV_depth_clamp"); + GLAD_GL_NV_draw_texture = has_ext("GL_NV_draw_texture"); + GLAD_GL_NV_draw_vulkan_image = has_ext("GL_NV_draw_vulkan_image"); + GLAD_GL_NV_evaluators = has_ext("GL_NV_evaluators"); + GLAD_GL_NV_explicit_multisample = has_ext("GL_NV_explicit_multisample"); + GLAD_GL_NV_fence = has_ext("GL_NV_fence"); + GLAD_GL_NV_fill_rectangle = has_ext("GL_NV_fill_rectangle"); + GLAD_GL_NV_float_buffer = has_ext("GL_NV_float_buffer"); + GLAD_GL_NV_fog_distance = has_ext("GL_NV_fog_distance"); + GLAD_GL_NV_fragment_coverage_to_color = has_ext("GL_NV_fragment_coverage_to_color"); + GLAD_GL_NV_fragment_program = has_ext("GL_NV_fragment_program"); + GLAD_GL_NV_fragment_program2 = has_ext("GL_NV_fragment_program2"); + GLAD_GL_NV_fragment_program4 = has_ext("GL_NV_fragment_program4"); + GLAD_GL_NV_fragment_program_option = has_ext("GL_NV_fragment_program_option"); + GLAD_GL_NV_fragment_shader_barycentric = has_ext("GL_NV_fragment_shader_barycentric"); + GLAD_GL_NV_fragment_shader_interlock = has_ext("GL_NV_fragment_shader_interlock"); + GLAD_GL_NV_framebuffer_mixed_samples = has_ext("GL_NV_framebuffer_mixed_samples"); + GLAD_GL_NV_framebuffer_multisample_coverage = has_ext("GL_NV_framebuffer_multisample_coverage"); + GLAD_GL_NV_geometry_program4 = has_ext("GL_NV_geometry_program4"); + GLAD_GL_NV_geometry_shader4 = has_ext("GL_NV_geometry_shader4"); + GLAD_GL_NV_geometry_shader_passthrough = has_ext("GL_NV_geometry_shader_passthrough"); + GLAD_GL_NV_gpu_multicast = has_ext("GL_NV_gpu_multicast"); + GLAD_GL_NV_gpu_program4 = has_ext("GL_NV_gpu_program4"); + GLAD_GL_NV_gpu_program5 = has_ext("GL_NV_gpu_program5"); + GLAD_GL_NV_gpu_program5_mem_extended = has_ext("GL_NV_gpu_program5_mem_extended"); + GLAD_GL_NV_gpu_shader5 = has_ext("GL_NV_gpu_shader5"); + GLAD_GL_NV_half_float = has_ext("GL_NV_half_float"); + GLAD_GL_NV_internalformat_sample_query = has_ext("GL_NV_internalformat_sample_query"); + GLAD_GL_NV_light_max_exponent = has_ext("GL_NV_light_max_exponent"); + GLAD_GL_NV_memory_attachment = has_ext("GL_NV_memory_attachment"); + GLAD_GL_NV_mesh_shader = has_ext("GL_NV_mesh_shader"); + GLAD_GL_NV_multisample_coverage = has_ext("GL_NV_multisample_coverage"); + GLAD_GL_NV_multisample_filter_hint = has_ext("GL_NV_multisample_filter_hint"); + GLAD_GL_NV_occlusion_query = has_ext("GL_NV_occlusion_query"); + GLAD_GL_NV_packed_depth_stencil = has_ext("GL_NV_packed_depth_stencil"); + GLAD_GL_NV_parameter_buffer_object = has_ext("GL_NV_parameter_buffer_object"); + GLAD_GL_NV_parameter_buffer_object2 = has_ext("GL_NV_parameter_buffer_object2"); + GLAD_GL_NV_path_rendering = has_ext("GL_NV_path_rendering"); + GLAD_GL_NV_path_rendering_shared_edge = has_ext("GL_NV_path_rendering_shared_edge"); + GLAD_GL_NV_pixel_data_range = has_ext("GL_NV_pixel_data_range"); + GLAD_GL_NV_point_sprite = has_ext("GL_NV_point_sprite"); + GLAD_GL_NV_present_video = has_ext("GL_NV_present_video"); + GLAD_GL_NV_primitive_restart = has_ext("GL_NV_primitive_restart"); + GLAD_GL_NV_query_resource = has_ext("GL_NV_query_resource"); + GLAD_GL_NV_query_resource_tag = has_ext("GL_NV_query_resource_tag"); + GLAD_GL_NV_register_combiners = has_ext("GL_NV_register_combiners"); + GLAD_GL_NV_register_combiners2 = has_ext("GL_NV_register_combiners2"); + GLAD_GL_NV_representative_fragment_test = has_ext("GL_NV_representative_fragment_test"); + GLAD_GL_NV_robustness_video_memory_purge = has_ext("GL_NV_robustness_video_memory_purge"); + GLAD_GL_NV_sample_locations = has_ext("GL_NV_sample_locations"); + GLAD_GL_NV_sample_mask_override_coverage = has_ext("GL_NV_sample_mask_override_coverage"); + GLAD_GL_NV_scissor_exclusive = has_ext("GL_NV_scissor_exclusive"); + GLAD_GL_NV_shader_atomic_counters = has_ext("GL_NV_shader_atomic_counters"); + GLAD_GL_NV_shader_atomic_float = has_ext("GL_NV_shader_atomic_float"); + GLAD_GL_NV_shader_atomic_float64 = has_ext("GL_NV_shader_atomic_float64"); + GLAD_GL_NV_shader_atomic_fp16_vector = has_ext("GL_NV_shader_atomic_fp16_vector"); + GLAD_GL_NV_shader_atomic_int64 = has_ext("GL_NV_shader_atomic_int64"); + GLAD_GL_NV_shader_buffer_load = has_ext("GL_NV_shader_buffer_load"); + GLAD_GL_NV_shader_buffer_store = has_ext("GL_NV_shader_buffer_store"); + GLAD_GL_NV_shader_storage_buffer_object = has_ext("GL_NV_shader_storage_buffer_object"); + GLAD_GL_NV_shader_subgroup_partitioned = has_ext("GL_NV_shader_subgroup_partitioned"); + GLAD_GL_NV_shader_texture_footprint = has_ext("GL_NV_shader_texture_footprint"); + GLAD_GL_NV_shader_thread_group = has_ext("GL_NV_shader_thread_group"); + GLAD_GL_NV_shader_thread_shuffle = has_ext("GL_NV_shader_thread_shuffle"); + GLAD_GL_NV_shading_rate_image = has_ext("GL_NV_shading_rate_image"); + GLAD_GL_NV_stereo_view_rendering = has_ext("GL_NV_stereo_view_rendering"); + GLAD_GL_NV_tessellation_program5 = has_ext("GL_NV_tessellation_program5"); + GLAD_GL_NV_texgen_emboss = has_ext("GL_NV_texgen_emboss"); + GLAD_GL_NV_texgen_reflection = has_ext("GL_NV_texgen_reflection"); + GLAD_GL_NV_texture_barrier = has_ext("GL_NV_texture_barrier"); + GLAD_GL_NV_texture_compression_vtc = has_ext("GL_NV_texture_compression_vtc"); + GLAD_GL_NV_texture_env_combine4 = has_ext("GL_NV_texture_env_combine4"); + GLAD_GL_NV_texture_expand_normal = has_ext("GL_NV_texture_expand_normal"); + GLAD_GL_NV_texture_multisample = has_ext("GL_NV_texture_multisample"); + GLAD_GL_NV_texture_rectangle = has_ext("GL_NV_texture_rectangle"); + GLAD_GL_NV_texture_rectangle_compressed = has_ext("GL_NV_texture_rectangle_compressed"); + GLAD_GL_NV_texture_shader = has_ext("GL_NV_texture_shader"); + GLAD_GL_NV_texture_shader2 = has_ext("GL_NV_texture_shader2"); + GLAD_GL_NV_texture_shader3 = has_ext("GL_NV_texture_shader3"); + GLAD_GL_NV_transform_feedback = has_ext("GL_NV_transform_feedback"); + GLAD_GL_NV_transform_feedback2 = has_ext("GL_NV_transform_feedback2"); + GLAD_GL_NV_uniform_buffer_unified_memory = has_ext("GL_NV_uniform_buffer_unified_memory"); + GLAD_GL_NV_vdpau_interop = has_ext("GL_NV_vdpau_interop"); + GLAD_GL_NV_vdpau_interop2 = has_ext("GL_NV_vdpau_interop2"); + GLAD_GL_NV_vertex_array_range = has_ext("GL_NV_vertex_array_range"); + GLAD_GL_NV_vertex_array_range2 = has_ext("GL_NV_vertex_array_range2"); + GLAD_GL_NV_vertex_attrib_integer_64bit = has_ext("GL_NV_vertex_attrib_integer_64bit"); + GLAD_GL_NV_vertex_buffer_unified_memory = has_ext("GL_NV_vertex_buffer_unified_memory"); + GLAD_GL_NV_vertex_program = has_ext("GL_NV_vertex_program"); + GLAD_GL_NV_vertex_program1_1 = has_ext("GL_NV_vertex_program1_1"); + GLAD_GL_NV_vertex_program2 = has_ext("GL_NV_vertex_program2"); + GLAD_GL_NV_vertex_program2_option = has_ext("GL_NV_vertex_program2_option"); + GLAD_GL_NV_vertex_program3 = has_ext("GL_NV_vertex_program3"); + GLAD_GL_NV_vertex_program4 = has_ext("GL_NV_vertex_program4"); + GLAD_GL_NV_video_capture = has_ext("GL_NV_video_capture"); + GLAD_GL_NV_viewport_array2 = has_ext("GL_NV_viewport_array2"); + GLAD_GL_NV_viewport_swizzle = has_ext("GL_NV_viewport_swizzle"); + GLAD_GL_OES_byte_coordinates = has_ext("GL_OES_byte_coordinates"); + GLAD_GL_OES_compressed_paletted_texture = has_ext("GL_OES_compressed_paletted_texture"); + GLAD_GL_OES_fixed_point = has_ext("GL_OES_fixed_point"); + GLAD_GL_OES_query_matrix = has_ext("GL_OES_query_matrix"); + GLAD_GL_OES_read_format = has_ext("GL_OES_read_format"); + GLAD_GL_OES_single_precision = has_ext("GL_OES_single_precision"); + GLAD_GL_OML_interlace = has_ext("GL_OML_interlace"); + GLAD_GL_OML_resample = has_ext("GL_OML_resample"); + GLAD_GL_OML_subsample = has_ext("GL_OML_subsample"); + GLAD_GL_OVR_multiview = has_ext("GL_OVR_multiview"); + GLAD_GL_OVR_multiview2 = has_ext("GL_OVR_multiview2"); + GLAD_GL_PGI_misc_hints = has_ext("GL_PGI_misc_hints"); + GLAD_GL_PGI_vertex_hints = has_ext("GL_PGI_vertex_hints"); + GLAD_GL_REND_screen_coordinates = has_ext("GL_REND_screen_coordinates"); + GLAD_GL_S3_s3tc = has_ext("GL_S3_s3tc"); + GLAD_GL_SGIS_detail_texture = has_ext("GL_SGIS_detail_texture"); + GLAD_GL_SGIS_fog_function = has_ext("GL_SGIS_fog_function"); + GLAD_GL_SGIS_generate_mipmap = has_ext("GL_SGIS_generate_mipmap"); + GLAD_GL_SGIS_multisample = has_ext("GL_SGIS_multisample"); + GLAD_GL_SGIS_pixel_texture = has_ext("GL_SGIS_pixel_texture"); + GLAD_GL_SGIS_point_line_texgen = has_ext("GL_SGIS_point_line_texgen"); + GLAD_GL_SGIS_point_parameters = has_ext("GL_SGIS_point_parameters"); + GLAD_GL_SGIS_sharpen_texture = has_ext("GL_SGIS_sharpen_texture"); + GLAD_GL_SGIS_texture4D = has_ext("GL_SGIS_texture4D"); + GLAD_GL_SGIS_texture_border_clamp = has_ext("GL_SGIS_texture_border_clamp"); + GLAD_GL_SGIS_texture_color_mask = has_ext("GL_SGIS_texture_color_mask"); + GLAD_GL_SGIS_texture_edge_clamp = has_ext("GL_SGIS_texture_edge_clamp"); + GLAD_GL_SGIS_texture_filter4 = has_ext("GL_SGIS_texture_filter4"); + GLAD_GL_SGIS_texture_lod = has_ext("GL_SGIS_texture_lod"); + GLAD_GL_SGIS_texture_select = has_ext("GL_SGIS_texture_select"); + GLAD_GL_SGIX_async = has_ext("GL_SGIX_async"); + GLAD_GL_SGIX_async_histogram = has_ext("GL_SGIX_async_histogram"); + GLAD_GL_SGIX_async_pixel = has_ext("GL_SGIX_async_pixel"); + GLAD_GL_SGIX_blend_alpha_minmax = has_ext("GL_SGIX_blend_alpha_minmax"); + GLAD_GL_SGIX_calligraphic_fragment = has_ext("GL_SGIX_calligraphic_fragment"); + GLAD_GL_SGIX_clipmap = has_ext("GL_SGIX_clipmap"); + GLAD_GL_SGIX_convolution_accuracy = has_ext("GL_SGIX_convolution_accuracy"); + GLAD_GL_SGIX_depth_pass_instrument = has_ext("GL_SGIX_depth_pass_instrument"); + GLAD_GL_SGIX_depth_texture = has_ext("GL_SGIX_depth_texture"); + GLAD_GL_SGIX_flush_raster = has_ext("GL_SGIX_flush_raster"); + GLAD_GL_SGIX_fog_offset = has_ext("GL_SGIX_fog_offset"); + GLAD_GL_SGIX_fragment_lighting = has_ext("GL_SGIX_fragment_lighting"); + GLAD_GL_SGIX_framezoom = has_ext("GL_SGIX_framezoom"); + GLAD_GL_SGIX_igloo_interface = has_ext("GL_SGIX_igloo_interface"); + GLAD_GL_SGIX_instruments = has_ext("GL_SGIX_instruments"); + GLAD_GL_SGIX_interlace = has_ext("GL_SGIX_interlace"); + GLAD_GL_SGIX_ir_instrument1 = has_ext("GL_SGIX_ir_instrument1"); + GLAD_GL_SGIX_list_priority = has_ext("GL_SGIX_list_priority"); + GLAD_GL_SGIX_pixel_texture = has_ext("GL_SGIX_pixel_texture"); + GLAD_GL_SGIX_pixel_tiles = has_ext("GL_SGIX_pixel_tiles"); + GLAD_GL_SGIX_polynomial_ffd = has_ext("GL_SGIX_polynomial_ffd"); + GLAD_GL_SGIX_reference_plane = has_ext("GL_SGIX_reference_plane"); + GLAD_GL_SGIX_resample = has_ext("GL_SGIX_resample"); + GLAD_GL_SGIX_scalebias_hint = has_ext("GL_SGIX_scalebias_hint"); + GLAD_GL_SGIX_shadow = has_ext("GL_SGIX_shadow"); + GLAD_GL_SGIX_shadow_ambient = has_ext("GL_SGIX_shadow_ambient"); + GLAD_GL_SGIX_sprite = has_ext("GL_SGIX_sprite"); + GLAD_GL_SGIX_subsample = has_ext("GL_SGIX_subsample"); + GLAD_GL_SGIX_tag_sample_buffer = has_ext("GL_SGIX_tag_sample_buffer"); + GLAD_GL_SGIX_texture_add_env = has_ext("GL_SGIX_texture_add_env"); + GLAD_GL_SGIX_texture_coordinate_clamp = has_ext("GL_SGIX_texture_coordinate_clamp"); + GLAD_GL_SGIX_texture_lod_bias = has_ext("GL_SGIX_texture_lod_bias"); + GLAD_GL_SGIX_texture_multi_buffer = has_ext("GL_SGIX_texture_multi_buffer"); + GLAD_GL_SGIX_texture_scale_bias = has_ext("GL_SGIX_texture_scale_bias"); + GLAD_GL_SGIX_vertex_preclip = has_ext("GL_SGIX_vertex_preclip"); + GLAD_GL_SGIX_ycrcb = has_ext("GL_SGIX_ycrcb"); + GLAD_GL_SGIX_ycrcb_subsample = has_ext("GL_SGIX_ycrcb_subsample"); + GLAD_GL_SGIX_ycrcba = has_ext("GL_SGIX_ycrcba"); + GLAD_GL_SGI_color_matrix = has_ext("GL_SGI_color_matrix"); + GLAD_GL_SGI_color_table = has_ext("GL_SGI_color_table"); + GLAD_GL_SGI_texture_color_table = has_ext("GL_SGI_texture_color_table"); + GLAD_GL_SUNX_constant_data = has_ext("GL_SUNX_constant_data"); + GLAD_GL_SUN_convolution_border_modes = has_ext("GL_SUN_convolution_border_modes"); + GLAD_GL_SUN_global_alpha = has_ext("GL_SUN_global_alpha"); + GLAD_GL_SUN_mesh_array = has_ext("GL_SUN_mesh_array"); + GLAD_GL_SUN_slice_accum = has_ext("GL_SUN_slice_accum"); + GLAD_GL_SUN_triangle_list = has_ext("GL_SUN_triangle_list"); + GLAD_GL_SUN_vertex = has_ext("GL_SUN_vertex"); + GLAD_GL_WIN_phong_shading = has_ext("GL_WIN_phong_shading"); + GLAD_GL_WIN_specular_fog = has_ext("GL_WIN_specular_fog"); + free_exts(); + return 1; +} + +static void find_coreGL(void) { + + /* Thank you @elmindreda + * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 + * https://github.com/glfw/glfw/blob/master/src/context.c#L36 + */ + int i, major, minor; + + const char* version; + const char* prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + NULL + }; + + version = (const char*) glGetString(GL_VERSION); + if (!version) return; + + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + +/* PR #18 */ +#ifdef _MSC_VER + sscanf_s(version, "%d.%d", &major, &minor); +#else + sscanf(version, "%d.%d", &major, &minor); +#endif + + GLVersion.major = major; GLVersion.minor = minor; + max_loaded_major = major; max_loaded_minor = minor; + GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; + GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; + GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; + GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; + GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; + GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; + GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; + GLAD_GL_VERSION_4_0 = (major == 4 && minor >= 0) || major > 4; + GLAD_GL_VERSION_4_1 = (major == 4 && minor >= 1) || major > 4; + if (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 1)) { + max_loaded_major = 4; + max_loaded_minor = 1; + } +} + +int gladLoadGLLoader(GLADloadproc load) { + GLVersion.major = 0; GLVersion.minor = 0; + glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + if(glGetString == NULL) return 0; + if(glGetString(GL_VERSION) == NULL) return 0; + find_coreGL(); + load_GL_VERSION_1_0(load); + load_GL_VERSION_1_1(load); + load_GL_VERSION_1_2(load); + load_GL_VERSION_1_3(load); + load_GL_VERSION_1_4(load); + load_GL_VERSION_1_5(load); + load_GL_VERSION_2_0(load); + load_GL_VERSION_2_1(load); + load_GL_VERSION_3_0(load); + load_GL_VERSION_3_1(load); + load_GL_VERSION_3_2(load); + load_GL_VERSION_3_3(load); + load_GL_VERSION_4_0(load); + load_GL_VERSION_4_1(load); + + if (!find_extensionsGL()) return 0; + load_GL_3DFX_tbuffer(load); + load_GL_AMD_debug_output(load); + load_GL_AMD_draw_buffers_blend(load); + load_GL_AMD_framebuffer_multisample_advanced(load); + load_GL_AMD_framebuffer_sample_positions(load); + load_GL_AMD_gpu_shader_int64(load); + load_GL_AMD_interleaved_elements(load); + load_GL_AMD_multi_draw_indirect(load); + load_GL_AMD_name_gen_delete(load); + load_GL_AMD_occlusion_query_event(load); + load_GL_AMD_performance_monitor(load); + load_GL_AMD_sample_positions(load); + load_GL_AMD_sparse_texture(load); + load_GL_AMD_stencil_operation_extended(load); + load_GL_AMD_vertex_shader_tessellator(load); + load_GL_APPLE_element_array(load); + load_GL_APPLE_fence(load); + load_GL_APPLE_flush_buffer_range(load); + load_GL_APPLE_object_purgeable(load); + load_GL_APPLE_texture_range(load); + load_GL_APPLE_vertex_array_object(load); + load_GL_APPLE_vertex_array_range(load); + load_GL_APPLE_vertex_program_evaluators(load); + load_GL_ARB_ES2_compatibility(load); + load_GL_ARB_ES3_1_compatibility(load); + load_GL_ARB_ES3_2_compatibility(load); + load_GL_ARB_base_instance(load); + load_GL_ARB_bindless_texture(load); + load_GL_ARB_blend_func_extended(load); + load_GL_ARB_buffer_storage(load); + load_GL_ARB_cl_event(load); + load_GL_ARB_clear_buffer_object(load); + load_GL_ARB_clear_texture(load); + load_GL_ARB_clip_control(load); + load_GL_ARB_color_buffer_float(load); + load_GL_ARB_compute_shader(load); + load_GL_ARB_compute_variable_group_size(load); + load_GL_ARB_copy_buffer(load); + load_GL_ARB_copy_image(load); + load_GL_ARB_debug_output(load); + load_GL_ARB_direct_state_access(load); + load_GL_ARB_draw_buffers(load); + load_GL_ARB_draw_buffers_blend(load); + load_GL_ARB_draw_elements_base_vertex(load); + load_GL_ARB_draw_indirect(load); + load_GL_ARB_draw_instanced(load); + load_GL_ARB_fragment_program(load); + load_GL_ARB_framebuffer_no_attachments(load); + load_GL_ARB_framebuffer_object(load); + load_GL_ARB_geometry_shader4(load); + load_GL_ARB_get_program_binary(load); + load_GL_ARB_get_texture_sub_image(load); + load_GL_ARB_gl_spirv(load); + load_GL_ARB_gpu_shader_fp64(load); + load_GL_ARB_gpu_shader_int64(load); + load_GL_ARB_imaging(load); + load_GL_ARB_indirect_parameters(load); + load_GL_ARB_instanced_arrays(load); + load_GL_ARB_internalformat_query(load); + load_GL_ARB_internalformat_query2(load); + load_GL_ARB_invalidate_subdata(load); + load_GL_ARB_map_buffer_range(load); + load_GL_ARB_matrix_palette(load); + load_GL_ARB_multi_bind(load); + load_GL_ARB_multi_draw_indirect(load); + load_GL_ARB_multisample(load); + load_GL_ARB_multitexture(load); + load_GL_ARB_occlusion_query(load); + load_GL_ARB_parallel_shader_compile(load); + load_GL_ARB_point_parameters(load); + load_GL_ARB_polygon_offset_clamp(load); + load_GL_ARB_program_interface_query(load); + load_GL_ARB_provoking_vertex(load); + load_GL_ARB_robustness(load); + load_GL_ARB_sample_locations(load); + load_GL_ARB_sample_shading(load); + load_GL_ARB_sampler_objects(load); + load_GL_ARB_separate_shader_objects(load); + load_GL_ARB_shader_atomic_counters(load); + load_GL_ARB_shader_image_load_store(load); + load_GL_ARB_shader_objects(load); + load_GL_ARB_shader_storage_buffer_object(load); + load_GL_ARB_shader_subroutine(load); + load_GL_ARB_shading_language_include(load); + load_GL_ARB_sparse_buffer(load); + load_GL_ARB_sparse_texture(load); + load_GL_ARB_sync(load); + load_GL_ARB_tessellation_shader(load); + load_GL_ARB_texture_barrier(load); + load_GL_ARB_texture_buffer_object(load); + load_GL_ARB_texture_buffer_range(load); + load_GL_ARB_texture_compression(load); + load_GL_ARB_texture_multisample(load); + load_GL_ARB_texture_storage(load); + load_GL_ARB_texture_storage_multisample(load); + load_GL_ARB_texture_view(load); + load_GL_ARB_timer_query(load); + load_GL_ARB_transform_feedback2(load); + load_GL_ARB_transform_feedback3(load); + load_GL_ARB_transform_feedback_instanced(load); + load_GL_ARB_transpose_matrix(load); + load_GL_ARB_uniform_buffer_object(load); + load_GL_ARB_vertex_array_object(load); + load_GL_ARB_vertex_attrib_64bit(load); + load_GL_ARB_vertex_attrib_binding(load); + load_GL_ARB_vertex_blend(load); + load_GL_ARB_vertex_buffer_object(load); + load_GL_ARB_vertex_program(load); + load_GL_ARB_vertex_shader(load); + load_GL_ARB_vertex_type_2_10_10_10_rev(load); + load_GL_ARB_viewport_array(load); + load_GL_ARB_window_pos(load); + load_GL_ATI_draw_buffers(load); + load_GL_ATI_element_array(load); + load_GL_ATI_envmap_bumpmap(load); + load_GL_ATI_fragment_shader(load); + load_GL_ATI_map_object_buffer(load); + load_GL_ATI_pn_triangles(load); + load_GL_ATI_separate_stencil(load); + load_GL_ATI_vertex_array_object(load); + load_GL_ATI_vertex_attrib_array_object(load); + load_GL_ATI_vertex_streams(load); + load_GL_EXT_EGL_image_storage(load); + load_GL_EXT_bindable_uniform(load); + load_GL_EXT_blend_color(load); + load_GL_EXT_blend_equation_separate(load); + load_GL_EXT_blend_func_separate(load); + load_GL_EXT_blend_minmax(load); + load_GL_EXT_color_subtable(load); + load_GL_EXT_compiled_vertex_array(load); + load_GL_EXT_convolution(load); + load_GL_EXT_coordinate_frame(load); + load_GL_EXT_copy_texture(load); + load_GL_EXT_cull_vertex(load); + load_GL_EXT_debug_label(load); + load_GL_EXT_debug_marker(load); + load_GL_EXT_depth_bounds_test(load); + load_GL_EXT_direct_state_access(load); + load_GL_EXT_draw_buffers2(load); + load_GL_EXT_draw_instanced(load); + load_GL_EXT_draw_range_elements(load); + load_GL_EXT_external_buffer(load); + load_GL_EXT_fog_coord(load); + load_GL_EXT_framebuffer_blit(load); + load_GL_EXT_framebuffer_multisample(load); + load_GL_EXT_framebuffer_object(load); + load_GL_EXT_geometry_shader4(load); + load_GL_EXT_gpu_program_parameters(load); + load_GL_EXT_gpu_shader4(load); + load_GL_EXT_histogram(load); + load_GL_EXT_index_func(load); + load_GL_EXT_index_material(load); + load_GL_EXT_light_texture(load); + load_GL_EXT_memory_object(load); + load_GL_EXT_memory_object_fd(load); + load_GL_EXT_memory_object_win32(load); + load_GL_EXT_multi_draw_arrays(load); + load_GL_EXT_multisample(load); + load_GL_EXT_paletted_texture(load); + load_GL_EXT_pixel_transform(load); + load_GL_EXT_point_parameters(load); + load_GL_EXT_polygon_offset(load); + load_GL_EXT_polygon_offset_clamp(load); + load_GL_EXT_provoking_vertex(load); + load_GL_EXT_raster_multisample(load); + load_GL_EXT_secondary_color(load); + load_GL_EXT_semaphore(load); + load_GL_EXT_semaphore_fd(load); + load_GL_EXT_semaphore_win32(load); + load_GL_EXT_separate_shader_objects(load); + load_GL_EXT_shader_framebuffer_fetch_non_coherent(load); + load_GL_EXT_shader_image_load_store(load); + load_GL_EXT_stencil_clear_tag(load); + load_GL_EXT_stencil_two_side(load); + load_GL_EXT_subtexture(load); + load_GL_EXT_texture3D(load); + load_GL_EXT_texture_array(load); + load_GL_EXT_texture_buffer_object(load); + load_GL_EXT_texture_integer(load); + load_GL_EXT_texture_object(load); + load_GL_EXT_texture_perturb_normal(load); + load_GL_EXT_timer_query(load); + load_GL_EXT_transform_feedback(load); + load_GL_EXT_vertex_array(load); + load_GL_EXT_vertex_attrib_64bit(load); + load_GL_EXT_vertex_shader(load); + load_GL_EXT_vertex_weighting(load); + load_GL_EXT_win32_keyed_mutex(load); + load_GL_EXT_window_rectangles(load); + load_GL_EXT_x11_sync_object(load); + load_GL_GREMEDY_frame_terminator(load); + load_GL_GREMEDY_string_marker(load); + load_GL_HP_image_transform(load); + load_GL_IBM_multimode_draw_arrays(load); + load_GL_IBM_static_data(load); + load_GL_IBM_vertex_array_lists(load); + load_GL_INGR_blend_func_separate(load); + load_GL_INTEL_framebuffer_CMAA(load); + load_GL_INTEL_map_texture(load); + load_GL_INTEL_parallel_arrays(load); + load_GL_INTEL_performance_query(load); + load_GL_KHR_blend_equation_advanced(load); + load_GL_KHR_debug(load); + load_GL_KHR_parallel_shader_compile(load); + load_GL_KHR_robustness(load); + load_GL_MESA_framebuffer_flip_y(load); + load_GL_MESA_resize_buffers(load); + load_GL_MESA_window_pos(load); + load_GL_NVX_conditional_render(load); + load_GL_NVX_gpu_multicast2(load); + load_GL_NVX_linked_gpu_multicast(load); + load_GL_NVX_progress_fence(load); + load_GL_NV_alpha_to_coverage_dither_control(load); + load_GL_NV_bindless_multi_draw_indirect(load); + load_GL_NV_bindless_multi_draw_indirect_count(load); + load_GL_NV_bindless_texture(load); + load_GL_NV_blend_equation_advanced(load); + load_GL_NV_clip_space_w_scaling(load); + load_GL_NV_command_list(load); + load_GL_NV_conditional_render(load); + load_GL_NV_conservative_raster(load); + load_GL_NV_conservative_raster_dilate(load); + load_GL_NV_conservative_raster_pre_snap_triangles(load); + load_GL_NV_copy_image(load); + load_GL_NV_depth_buffer_float(load); + load_GL_NV_draw_texture(load); + load_GL_NV_draw_vulkan_image(load); + load_GL_NV_evaluators(load); + load_GL_NV_explicit_multisample(load); + load_GL_NV_fence(load); + load_GL_NV_fragment_coverage_to_color(load); + load_GL_NV_fragment_program(load); + load_GL_NV_framebuffer_mixed_samples(load); + load_GL_NV_framebuffer_multisample_coverage(load); + load_GL_NV_geometry_program4(load); + load_GL_NV_gpu_multicast(load); + load_GL_NV_gpu_program4(load); + load_GL_NV_gpu_program5(load); + load_GL_NV_gpu_shader5(load); + load_GL_NV_half_float(load); + load_GL_NV_internalformat_sample_query(load); + load_GL_NV_memory_attachment(load); + load_GL_NV_mesh_shader(load); + load_GL_NV_occlusion_query(load); + load_GL_NV_parameter_buffer_object(load); + load_GL_NV_path_rendering(load); + load_GL_NV_pixel_data_range(load); + load_GL_NV_point_sprite(load); + load_GL_NV_present_video(load); + load_GL_NV_primitive_restart(load); + load_GL_NV_query_resource(load); + load_GL_NV_query_resource_tag(load); + load_GL_NV_register_combiners(load); + load_GL_NV_register_combiners2(load); + load_GL_NV_sample_locations(load); + load_GL_NV_scissor_exclusive(load); + load_GL_NV_shader_buffer_load(load); + load_GL_NV_shading_rate_image(load); + load_GL_NV_texture_barrier(load); + load_GL_NV_texture_multisample(load); + load_GL_NV_transform_feedback(load); + load_GL_NV_transform_feedback2(load); + load_GL_NV_vdpau_interop(load); + load_GL_NV_vdpau_interop2(load); + load_GL_NV_vertex_array_range(load); + load_GL_NV_vertex_attrib_integer_64bit(load); + load_GL_NV_vertex_buffer_unified_memory(load); + load_GL_NV_vertex_program(load); + load_GL_NV_vertex_program4(load); + load_GL_NV_video_capture(load); + load_GL_NV_viewport_swizzle(load); + load_GL_OES_byte_coordinates(load); + load_GL_OES_fixed_point(load); + load_GL_OES_query_matrix(load); + load_GL_OES_single_precision(load); + load_GL_OVR_multiview(load); + load_GL_PGI_misc_hints(load); + load_GL_SGIS_detail_texture(load); + load_GL_SGIS_fog_function(load); + load_GL_SGIS_multisample(load); + load_GL_SGIS_pixel_texture(load); + load_GL_SGIS_point_parameters(load); + load_GL_SGIS_sharpen_texture(load); + load_GL_SGIS_texture4D(load); + load_GL_SGIS_texture_color_mask(load); + load_GL_SGIS_texture_filter4(load); + load_GL_SGIX_async(load); + load_GL_SGIX_flush_raster(load); + load_GL_SGIX_fragment_lighting(load); + load_GL_SGIX_framezoom(load); + load_GL_SGIX_igloo_interface(load); + load_GL_SGIX_instruments(load); + load_GL_SGIX_list_priority(load); + load_GL_SGIX_pixel_texture(load); + load_GL_SGIX_polynomial_ffd(load); + load_GL_SGIX_reference_plane(load); + load_GL_SGIX_sprite(load); + load_GL_SGIX_tag_sample_buffer(load); + load_GL_SGI_color_table(load); + load_GL_SUNX_constant_data(load); + load_GL_SUN_global_alpha(load); + load_GL_SUN_mesh_array(load); + load_GL_SUN_triangle_list(load); + load_GL_SUN_vertex(load); + return GLVersion.major != 0 || GLVersion.minor != 0; +} + diff --git a/lib/glfw/.appveyor.yml b/lib/glfw/.appveyor.yml new file mode 100644 index 0000000..2742949 --- /dev/null +++ b/lib/glfw/.appveyor.yml @@ -0,0 +1,47 @@ +image: + - Visual Studio 2015 +branches: + only: + - ci + - master + - latest + - 3.3-stable +skip_tags: true +environment: + matrix: + - GENERATOR: MinGW Makefiles + BUILD_SHARED_LIBS: ON + CFLAGS: -Werror + - GENERATOR: MinGW Makefiles + BUILD_SHARED_LIBS: OFF + CFLAGS: -Werror + - GENERATOR: Visual Studio 10 2010 + BUILD_SHARED_LIBS: ON + CFLAGS: /WX + - GENERATOR: Visual Studio 10 2010 + BUILD_SHARED_LIBS: OFF + CFLAGS: /WX +matrix: + fast_finish: true +for: +- + matrix: + only: + - GENERATOR: MinGW Makefiles + build_script: + - set PATH=%PATH:C:\Program Files\Git\usr\bin=C:\MinGW\bin% + - cmake -S . -B build -G "%GENERATOR%" -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% + - cmake --build build +- + matrix: + only: + - GENERATOR: Visual Studio 10 2010 + build_script: + - cmake -S . -B build -G "%GENERATOR%" -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% + - cmake --build build --target glfw +notifications: + - provider: Email + to: + - ci@glfw.org + on_build_failure: true + on_build_success: false diff --git a/lib/glfw/.gitattributes b/lib/glfw/.gitattributes new file mode 100644 index 0000000..805f403 --- /dev/null +++ b/lib/glfw/.gitattributes @@ -0,0 +1,5 @@ +*.m linguist-language=Objective-C +.gitignore export-ignore +.gitattributes export-ignore +.travis.yml export-ignore +.appveyor.yml export-ignore diff --git a/lib/glfw/.github/CODEOWNERS b/lib/glfw/.github/CODEOWNERS new file mode 100644 index 0000000..018808b --- /dev/null +++ b/lib/glfw/.github/CODEOWNERS @@ -0,0 +1,10 @@ + +* @elmindreda + +src/wl_* @linkmauve + +docs/*.css @glfw/webdev +docs/*.scss @glfw/webdev +docs/*.html @glfw/webdev +docs/*.xml @glfw/webdev + diff --git a/lib/glfw/.github/workflows/build.yml b/lib/glfw/.github/workflows/build.yml new file mode 100644 index 0000000..7f79885 --- /dev/null +++ b/lib/glfw/.github/workflows/build.yml @@ -0,0 +1,93 @@ +name: Build +on: + pull_request: + push: + branches: [ ci, master, latest, 3.3-stable ] +permissions: + statuses: write + contents: read + +jobs: + build-linux-x11-clang: + name: X11 (Linux, Clang) + runs-on: ubuntu-latest + env: + CC: clang + CFLAGS: -Werror + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt update + sudo apt install libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxext-dev + + - name: Configure static library + run: cmake -S . -B build-static + - name: Build static library + run: cmake --build build-static --parallel + + - name: Configure shared library + run: cmake -S . -B build-shared -D BUILD_SHARED_LIBS=ON + - name: Build shared library + run: cmake --build build-shared --parallel + + build-linux-full-clang: + name: X11+Wayland (Linux, Clang) + runs-on: ubuntu-latest + env: + CC: clang + CFLAGS: -Werror + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt update + sudo apt install libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxext-dev wayland-protocols libwayland-dev libxkbcommon-dev + + - name: Configure static library + run: cmake -S . -B build-static -D GLFW_BUILD_WAYLAND=ON + - name: Build static library + run: cmake --build build-static --parallel + + - name: Configure shared library + run: cmake -S . -B build-shared -D GLFW_BUILD_WAYLAND=ON -D BUILD_SHARED_LIBS=ON + - name: Build shared library + run: cmake --build build-shared --parallel + + build-macos-cocoa-clang: + name: Cocoa (macOS, Clang) + runs-on: macos-latest + env: + CFLAGS: -Werror + MACOSX_DEPLOYMENT_TARGET: 10.8 + steps: + - uses: actions/checkout@v2 + + - name: Configure static library + run: cmake -S . -B build-static + - name: Build static library + run: cmake --build build-static --parallel + + - name: Configure shared library + run: cmake -S . -B build-shared -D BUILD_SHARED_LIBS=ON + - name: Build shared library + run: cmake --build build-shared --parallel + + build-windows-win32-vs2022: + name: Win32 (Windows, VS2022) + runs-on: windows-latest + env: + CFLAGS: /WX + steps: + - uses: actions/checkout@v2 + + - name: Configure static library + run: cmake -S . -B build-static -G "Visual Studio 17 2022" + - name: Build static library + run: cmake --build build-static --parallel + + - name: Configure shared library + run: cmake -S . -B build-shared -G "Visual Studio 17 2022" -D BUILD_SHARED_LIBS=ON + - name: Build shared library + run: cmake --build build-shared --parallel + diff --git a/lib/glfw/.gitignore b/lib/glfw/.gitignore new file mode 100644 index 0000000..84636a0 --- /dev/null +++ b/lib/glfw/.gitignore @@ -0,0 +1,103 @@ +# The canonical out-of-tree build subdirectory +build + +# Visual Studio clutter +_ReSharper* +*.sdf +*.suo +*.dir +*.vcxproj* +*.sln +.vs +CMakeSettings.json +Win32 +x64 +Debug +Release +MinSizeRel +RelWithDebInfo +*.opensdf + +# Xcode clutter +GLFW.build +GLFW.xcodeproj + +# macOS clutter +.DS_Store + +# Makefile generator clutter +Makefile + +# Ninja generator clutter +build.ninja +rules.ninja +.ninja_deps +.ninja_log + +# CMake clutter +CMakeCache.txt +CMakeFiles +CMakeScripts +CMakeDoxyfile.in +CMakeDoxygenDefaults.cmake +cmake_install.cmake +cmake_uninstall.cmake + +# Generated files +docs/Doxyfile +docs/html +docs/warnings.txt +docs/doxygen_sqlite3.db +src/glfw_config.h +src/glfw3.pc +src/glfw3Config.cmake +src/glfw3ConfigVersion.cmake + +# Compiled binaries +src/libglfw.so +src/libglfw.so.3 +src/libglfw.so.3.4 +src/libglfw.dylib +src/libglfw.dylib +src/libglfw.3.dylib +src/libglfw.3.4.dylib +src/libglfw3.a +src/glfw3.lib +src/glfw3.dll +src/glfw3dll.lib +src/libglfw3dll.a +examples/*.app +examples/*.exe +examples/boing +examples/gears +examples/heightmap +examples/offscreen +examples/particles +examples/splitview +examples/sharing +examples/triangle-opengl +examples/wave +examples/windows +tests/*.app +tests/*.exe +tests/clipboard +tests/cursor +tests/empty +tests/events +tests/gamma +tests/glfwinfo +tests/icon +tests/iconify +tests/inputlag +tests/joysticks +tests/monitors +tests/msaa +tests/reopen +tests/tearing +tests/threads +tests/timeout +tests/title +tests/triangle-vulkan +tests/window +tests/windows + diff --git a/lib/glfw/.mailmap b/lib/glfw/.mailmap new file mode 100644 index 0000000..96d8a9b --- /dev/null +++ b/lib/glfw/.mailmap @@ -0,0 +1,10 @@ +Camilla Löwy +Camilla Löwy +Camilla Löwy + +Emmanuel Gil Peyrot + +Marcus Geelnard +Marcus Geelnard +Marcus Geelnard + diff --git a/lib/glfw/CMake/GenerateMappings.cmake b/lib/glfw/CMake/GenerateMappings.cmake new file mode 100644 index 0000000..c8c9e23 --- /dev/null +++ b/lib/glfw/CMake/GenerateMappings.cmake @@ -0,0 +1,48 @@ +# Usage: +# cmake -P GenerateMappings.cmake + +set(source_url "https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt") +set(source_path "${CMAKE_CURRENT_BINARY_DIR}/gamecontrollerdb.txt") +set(template_path "${CMAKE_ARGV3}") +set(target_path "${CMAKE_ARGV4}") + +if (NOT EXISTS "${template_path}") + message(FATAL_ERROR "Failed to find template file ${template_path}") +endif() + +file(DOWNLOAD "${source_url}" "${source_path}" + STATUS download_status + TLS_VERIFY on) + +list(GET download_status 0 status_code) +list(GET download_status 1 status_message) + +if (status_code) + message(FATAL_ERROR "Failed to download ${source_url}: ${status_message}") +endif() + +file(STRINGS "${source_path}" lines) +foreach(line ${lines}) + if (line MATCHES "^[0-9a-fA-F]") + if (line MATCHES "platform:Windows") + if (GLFW_WIN32_MAPPINGS) + string(APPEND GLFW_WIN32_MAPPINGS "\n") + endif() + string(APPEND GLFW_WIN32_MAPPINGS "\"${line}\",") + elseif (line MATCHES "platform:Mac OS X") + if (GLFW_COCOA_MAPPINGS) + string(APPEND GLFW_COCOA_MAPPINGS "\n") + endif() + string(APPEND GLFW_COCOA_MAPPINGS "\"${line}\",") + elseif (line MATCHES "platform:Linux") + if (GLFW_LINUX_MAPPINGS) + string(APPEND GLFW_LINUX_MAPPINGS "\n") + endif() + string(APPEND GLFW_LINUX_MAPPINGS "\"${line}\",") + endif() + endif() +endforeach() + +configure_file("${template_path}" "${target_path}" @ONLY NEWLINE_STYLE UNIX) +file(REMOVE "${source_path}") + diff --git a/lib/glfw/CMake/Info.plist.in b/lib/glfw/CMake/Info.plist.in new file mode 100644 index 0000000..684ad79 --- /dev/null +++ b/lib/glfw/CMake/Info.plist.in @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${MACOSX_BUNDLE_EXECUTABLE_NAME} + CFBundleGetInfoString + ${MACOSX_BUNDLE_INFO_STRING} + CFBundleIconFile + ${MACOSX_BUNDLE_ICON_FILE} + CFBundleIdentifier + ${MACOSX_BUNDLE_GUI_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLongVersionString + ${MACOSX_BUNDLE_LONG_VERSION_STRING} + CFBundleName + ${MACOSX_BUNDLE_BUNDLE_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + ${MACOSX_BUNDLE_SHORT_VERSION_STRING} + CFBundleSignature + ???? + CFBundleVersion + ${MACOSX_BUNDLE_BUNDLE_VERSION} + CSResourcesFileMapped + + LSRequiresCarbon + + NSHumanReadableCopyright + ${MACOSX_BUNDLE_COPYRIGHT} + NSHighResolutionCapable + + + diff --git a/lib/glfw/CMake/cmake_uninstall.cmake.in b/lib/glfw/CMake/cmake_uninstall.cmake.in new file mode 100644 index 0000000..5ecc476 --- /dev/null +++ b/lib/glfw/CMake/cmake_uninstall.cmake.in @@ -0,0 +1,29 @@ + +if (NOT EXISTS "@GLFW_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: \"@GLFW_BINARY_DIR@/install_manifest.txt\"") +endif() + +file(READ "@GLFW_BINARY_DIR@/install_manifest.txt" files) +string(REGEX REPLACE "\n" ";" files "${files}") + +foreach (file ${files}) + message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") + if (EXISTS "$ENV{DESTDIR}${file}") + exec_program("@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval) + if (NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + endif() + elseif (IS_SYMLINK "$ENV{DESTDIR}${file}") + EXEC_PROGRAM("@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval) + if (NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing symlink \"$ENV{DESTDIR}${file}\"") + endif() + else() + message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") + endif() +endforeach() + diff --git a/lib/glfw/CMake/glfw3.pc.in b/lib/glfw/CMake/glfw3.pc.in new file mode 100644 index 0000000..37f4efd --- /dev/null +++ b/lib/glfw/CMake/glfw3.pc.in @@ -0,0 +1,13 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ + +Name: GLFW +Description: A multi-platform library for OpenGL, window and input +Version: @GLFW_VERSION@ +URL: https://www.glfw.org/ +Requires.private: @GLFW_PKG_CONFIG_REQUIRES_PRIVATE@ +Libs: -L${libdir} -l@GLFW_LIB_NAME@ +Libs.private: @GLFW_PKG_CONFIG_LIBS_PRIVATE@ +Cflags: -I${includedir} diff --git a/lib/glfw/CMake/glfw3Config.cmake.in b/lib/glfw/CMake/glfw3Config.cmake.in new file mode 100644 index 0000000..4a13a88 --- /dev/null +++ b/lib/glfw/CMake/glfw3Config.cmake.in @@ -0,0 +1,3 @@ +include(CMakeFindDependencyMacro) +find_dependency(Threads) +include("${CMAKE_CURRENT_LIST_DIR}/glfw3Targets.cmake") diff --git a/lib/glfw/CMake/i686-w64-mingw32-clang.cmake b/lib/glfw/CMake/i686-w64-mingw32-clang.cmake new file mode 100644 index 0000000..8726b23 --- /dev/null +++ b/lib/glfw/CMake/i686-w64-mingw32-clang.cmake @@ -0,0 +1,13 @@ +# Define the environment for cross-compiling with 32-bit MinGW-w64 Clang +SET(CMAKE_SYSTEM_NAME Windows) # Target system name +SET(CMAKE_SYSTEM_VERSION 1) +SET(CMAKE_C_COMPILER "i686-w64-mingw32-clang") +SET(CMAKE_CXX_COMPILER "i686-w64-mingw32-clang++") +SET(CMAKE_RC_COMPILER "i686-w64-mingw32-windres") +SET(CMAKE_RANLIB "i686-w64-mingw32-ranlib") + +# Configure the behaviour of the find commands +SET(CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32") +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/lib/glfw/CMake/i686-w64-mingw32.cmake b/lib/glfw/CMake/i686-w64-mingw32.cmake new file mode 100644 index 0000000..2ca4dcd --- /dev/null +++ b/lib/glfw/CMake/i686-w64-mingw32.cmake @@ -0,0 +1,13 @@ +# Define the environment for cross-compiling with 32-bit MinGW-w64 GCC +SET(CMAKE_SYSTEM_NAME Windows) # Target system name +SET(CMAKE_SYSTEM_VERSION 1) +SET(CMAKE_C_COMPILER "i686-w64-mingw32-gcc") +SET(CMAKE_CXX_COMPILER "i686-w64-mingw32-g++") +SET(CMAKE_RC_COMPILER "i686-w64-mingw32-windres") +SET(CMAKE_RANLIB "i686-w64-mingw32-ranlib") + +# Configure the behaviour of the find commands +SET(CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32") +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/lib/glfw/CMake/modules/FindEpollShim.cmake b/lib/glfw/CMake/modules/FindEpollShim.cmake new file mode 100644 index 0000000..f34d070 --- /dev/null +++ b/lib/glfw/CMake/modules/FindEpollShim.cmake @@ -0,0 +1,17 @@ +# Find EpollShim +# Once done, this will define +# +# EPOLLSHIM_FOUND - System has EpollShim +# EPOLLSHIM_INCLUDE_DIRS - The EpollShim include directories +# EPOLLSHIM_LIBRARIES - The libraries needed to use EpollShim + +find_path(EPOLLSHIM_INCLUDE_DIRS NAMES sys/epoll.h sys/timerfd.h HINTS /usr/local/include/libepoll-shim) +find_library(EPOLLSHIM_LIBRARIES NAMES epoll-shim libepoll-shim HINTS /usr/local/lib) + +if (EPOLLSHIM_INCLUDE_DIRS AND EPOLLSHIM_LIBRARIES) + set(EPOLLSHIM_FOUND TRUE) +endif (EPOLLSHIM_INCLUDE_DIRS AND EPOLLSHIM_LIBRARIES) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(EpollShim DEFAULT_MSG EPOLLSHIM_LIBRARIES EPOLLSHIM_INCLUDE_DIRS) +mark_as_advanced(EPOLLSHIM_INCLUDE_DIRS EPOLLSHIM_LIBRARIES) diff --git a/lib/glfw/CMake/modules/FindOSMesa.cmake b/lib/glfw/CMake/modules/FindOSMesa.cmake new file mode 100644 index 0000000..3194bd9 --- /dev/null +++ b/lib/glfw/CMake/modules/FindOSMesa.cmake @@ -0,0 +1,18 @@ +# Try to find OSMesa on a Unix system +# +# This will define: +# +# OSMESA_LIBRARIES - Link these to use OSMesa +# OSMESA_INCLUDE_DIR - Include directory for OSMesa +# +# Copyright (c) 2014 Brandon Schaefer + +if (NOT WIN32) + + find_package (PkgConfig) + pkg_check_modules (PKG_OSMESA QUIET osmesa) + + set (OSMESA_INCLUDE_DIR ${PKG_OSMESA_INCLUDE_DIRS}) + set (OSMESA_LIBRARIES ${PKG_OSMESA_LIBRARIES}) + +endif () diff --git a/lib/glfw/CMake/x86_64-w64-mingw32-clang.cmake b/lib/glfw/CMake/x86_64-w64-mingw32-clang.cmake new file mode 100644 index 0000000..60f7914 --- /dev/null +++ b/lib/glfw/CMake/x86_64-w64-mingw32-clang.cmake @@ -0,0 +1,13 @@ +# Define the environment for cross-compiling with 64-bit MinGW-w64 Clang +SET(CMAKE_SYSTEM_NAME Windows) # Target system name +SET(CMAKE_SYSTEM_VERSION 1) +SET(CMAKE_C_COMPILER "x86_64-w64-mingw32-clang") +SET(CMAKE_CXX_COMPILER "x86_64-w64-mingw32-clang++") +SET(CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres") +SET(CMAKE_RANLIB "x86_64-w64-mingw32-ranlib") + +# Configure the behaviour of the find commands +SET(CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32") +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/lib/glfw/CMake/x86_64-w64-mingw32.cmake b/lib/glfw/CMake/x86_64-w64-mingw32.cmake new file mode 100644 index 0000000..063e845 --- /dev/null +++ b/lib/glfw/CMake/x86_64-w64-mingw32.cmake @@ -0,0 +1,13 @@ +# Define the environment for cross-compiling with 64-bit MinGW-w64 GCC +SET(CMAKE_SYSTEM_NAME Windows) # Target system name +SET(CMAKE_SYSTEM_VERSION 1) +SET(CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc") +SET(CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++") +SET(CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres") +SET(CMAKE_RANLIB "x86_64-w64-mingw32-ranlib") + +# Configure the behaviour of the find commands +SET(CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32") +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/lib/glfw/CMakeLists.txt b/lib/glfw/CMakeLists.txt new file mode 100644 index 0000000..f5e538b --- /dev/null +++ b/lib/glfw/CMakeLists.txt @@ -0,0 +1,179 @@ +cmake_minimum_required(VERSION 3.4...3.20 FATAL_ERROR) + +project(GLFW VERSION 3.4.0 LANGUAGES C) + +set(CMAKE_LEGACY_CYGWIN_WIN32 OFF) + +if (POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) +endif() + +if (POLICY CMP0069) + cmake_policy(SET CMP0069 NEW) +endif() + +if (POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) +endif() + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(GLFW_STANDALONE TRUE) +endif() + +option(BUILD_SHARED_LIBS "Build shared libraries" OFF) +option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" ${GLFW_STANDALONE}) +option(GLFW_BUILD_TESTS "Build the GLFW test programs" ${GLFW_STANDALONE}) +option(GLFW_BUILD_DOCS "Build the GLFW documentation" ON) +option(GLFW_INSTALL "Generate installation target" ON) + +include(GNUInstallDirs) +include(CMakeDependentOption) + +if (GLFW_USE_OSMESA) + message(FATAL_ERROR "GLFW_USE_OSMESA has been removed; set the GLFW_PLATFORM init hint") +endif() + +cmake_dependent_option(GLFW_BUILD_WIN32 "Build support for Win32" ON "WIN32" OFF) +cmake_dependent_option(GLFW_BUILD_COCOA "Build support for Cocoa" ON "APPLE" OFF) +cmake_dependent_option(GLFW_BUILD_X11 "Build support for X11" ON "UNIX;NOT APPLE" OFF) +cmake_dependent_option(GLFW_BUILD_WAYLAND "Build support for Wayland" + "${GLFW_USE_WAYLAND}" "UNIX;NOT APPLE" OFF) + +cmake_dependent_option(GLFW_USE_HYBRID_HPG "Force use of high-performance GPU on hybrid systems" OFF + "WIN32" OFF) +cmake_dependent_option(USE_MSVC_RUNTIME_LIBRARY_DLL "Use MSVC runtime library DLL" ON + "MSVC" OFF) + +set(GLFW_LIBRARY_TYPE "${GLFW_LIBRARY_TYPE}" CACHE STRING + "Library type override for GLFW (SHARED, STATIC, OBJECT, or empty to follow BUILD_SHARED_LIBS)") + +if (GLFW_LIBRARY_TYPE) + if (GLFW_LIBRARY_TYPE STREQUAL "SHARED") + set(GLFW_BUILD_SHARED_LIBRARY TRUE) + else() + set(GLFW_BUILD_SHARED_LIBRARY FALSE) + endif() +else() + set(GLFW_BUILD_SHARED_LIBRARY ${BUILD_SHARED_LIBS}) +endif() + +list(APPEND CMAKE_MODULE_PATH "${GLFW_SOURCE_DIR}/CMake/modules") + +find_package(Threads REQUIRED) + +if (GLFW_BUILD_DOCS) + set(DOXYGEN_SKIP_DOT TRUE) + find_package(Doxygen) +endif() + +#-------------------------------------------------------------------- +# Report backend selection +#-------------------------------------------------------------------- +if (GLFW_BUILD_WIN32) + message(STATUS "Including Win32 support") +endif() +if (GLFW_BUILD_COCOA) + message(STATUS "Including Cocoa support") +endif() +if (GLFW_BUILD_WAYLAND) + message(STATUS "Including Wayland support") +endif() +if (GLFW_BUILD_X11) + message(STATUS "Including X11 support") +endif() + +#-------------------------------------------------------------------- +# Apply Microsoft C runtime library option +# This is here because it also applies to tests and examples +#-------------------------------------------------------------------- +if (MSVC AND NOT USE_MSVC_RUNTIME_LIBRARY_DLL) + if (CMAKE_VERSION VERSION_LESS 3.15) + foreach (flag CMAKE_C_FLAGS + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELWITHDEBINFO) + + if (flag MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag} "${${flag}}") + endif() + if (flag MATCHES "/MDd") + string(REGEX REPLACE "/MDd" "/MTd" ${flag} "${${flag}}") + endif() + + endforeach() + else() + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + endif() +endif() + +#-------------------------------------------------------------------- +# Create generated files +#-------------------------------------------------------------------- +include(CMakePackageConfigHelpers) + +set(GLFW_CONFIG_PATH "${CMAKE_INSTALL_LIBDIR}/cmake/glfw3") + +configure_package_config_file(CMake/glfw3Config.cmake.in + src/glfw3Config.cmake + INSTALL_DESTINATION "${GLFW_CONFIG_PATH}" + NO_CHECK_REQUIRED_COMPONENTS_MACRO) + +write_basic_package_version_file(src/glfw3ConfigVersion.cmake + VERSION ${GLFW_VERSION} + COMPATIBILITY SameMajorVersion) + +#-------------------------------------------------------------------- +# Add subdirectories +#-------------------------------------------------------------------- +add_subdirectory(src) + +if (GLFW_BUILD_EXAMPLES) + add_subdirectory(examples) +endif() + +if (GLFW_BUILD_TESTS) + add_subdirectory(tests) +endif() + +if (DOXYGEN_FOUND AND GLFW_BUILD_DOCS) + add_subdirectory(docs) +endif() + +#-------------------------------------------------------------------- +# Install files other than the library +# The library is installed by src/CMakeLists.txt +#-------------------------------------------------------------------- +if (GLFW_INSTALL) + install(DIRECTORY include/GLFW DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING PATTERN glfw3.h PATTERN glfw3native.h) + + install(FILES "${GLFW_BINARY_DIR}/src/glfw3Config.cmake" + "${GLFW_BINARY_DIR}/src/glfw3ConfigVersion.cmake" + DESTINATION "${GLFW_CONFIG_PATH}") + + install(EXPORT glfwTargets FILE glfw3Targets.cmake + EXPORT_LINK_INTERFACE_LIBRARIES + DESTINATION "${GLFW_CONFIG_PATH}") + install(FILES "${GLFW_BINARY_DIR}/src/glfw3.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + + if (DOXYGEN_FOUND AND GLFW_BUILD_DOCS) + install(DIRECTORY "${GLFW_BINARY_DIR}/docs/html" + DESTINATION "${CMAKE_INSTALL_DOCDIR}") + endif() + + # Only generate this target if no higher-level project already has + if (NOT TARGET uninstall) + configure_file(CMake/cmake_uninstall.cmake.in + cmake_uninstall.cmake IMMEDIATE @ONLY) + + add_custom_target(uninstall + "${CMAKE_COMMAND}" -P + "${GLFW_BINARY_DIR}/cmake_uninstall.cmake") + set_target_properties(uninstall PROPERTIES FOLDER "GLFW3") + endif() +endif() + diff --git a/lib/glfw/CONTRIBUTORS.md b/lib/glfw/CONTRIBUTORS.md new file mode 100644 index 0000000..110ed4c --- /dev/null +++ b/lib/glfw/CONTRIBUTORS.md @@ -0,0 +1,265 @@ +# Acknowledgements + +GLFW exists because people around the world donated their time and lent their +skills. This list only includes contributions to the main repository and +excludes other invaluable contributions like language bindings and text and +video tutorials. + + - Bobyshev Alexander + - Laurent Aphecetche + - Matt Arsenault + - ashishgamedev + - David Avedissian + - Luca Bacci + - Keith Bauer + - John Bartholomew + - Coşku Baş + - Niklas Behrens + - Andrew Belt + - Nevyn Bengtsson + - Niklas Bergström + - Denis Bernard + - BiBi + - Doug Binks + - blanco + - Waris Boonyasiriwat + - Kyle Brenneman + - Rok Breulj + - TheBrokenRail + - Kai Burjack + - Martin Capitanio + - Nicolas Caramelli + - David Carlier + - Arturo Castro + - Chi-kwan Chan + - TheChocolateOre + - Ali Chraghi + - Joseph Chua + - Ian Clarkson + - Michał Cichoń + - Lambert Clara + - Anna Clarke + - Josh Codd + - Yaron Cohen-Tal + - Omar Cornut + - Andrew Corrigan + - Bailey Cosier + - Noel Cower + - CuriouserThing + - Jason Daly + - danhambleton + - Jarrod Davis + - Olivier Delannoy + - Paul R. Deppe + - Michael Dickens + - Роман Донченко + - Mario Dorn + - Wolfgang Draxinger + - Jonathan Dummer + - Ralph Eastwood + - Fredrik Ehnbom + - Robin Eklind + - Jan Ekström + - Siavash Eliasi + - Ahmad Fatoum + - Nikita Fediuchin + - Felipe Ferreira + - Michael Fogleman + - Jason Francis + - Gerald Franz + - Mário Freitas + - GeO4d + - Marcus Geelnard + - ghuser404 + - Charles Giessen + - Ryan C. Gordon + - Stephen Gowen + - Kovid Goyal + - Kevin Grandemange + - Eloi Marín Gratacós + - Stefan Gustavson + - Andrew Gutekanst + - Stephen Gutekanst + - Jonathan Hale + - hdf89shfdfs + - Sylvain Hellegouarch + - Björn Hempel + - Matthew Henry + - heromyth + - Lucas Hinderberger + - Paul Holden + - Hajime Hoshi + - Warren Hu + - Charles Huber + - Brent Huisman + - illustris + - InKryption + - IntellectualKitty + - Aaron Jacobs + - JannikGM + - Erik S. V. Jansson + - jjYBdx4IL + - Toni Jovanoski + - Arseny Kapoulkine + - Cem Karan + - Osman Keskin + - Koray Kilinc + - Josh Kilmer + - Byunghoon Kim + - Cameron King + - Peter Knut + - Christoph Kubisch + - Yuri Kunde Schlesner + - Rokas Kupstys + - Konstantin Käfer + - Eric Larson + - Francis Lecavalier + - Jong Won Lee + - Robin Leffmann + - Glenn Lewis + - Shane Liesegang + - Anders Lindqvist + - Leon Linhart + - Marco Lizza + - Eyal Lotem + - Aaron Loucks + - Luflosi + - lukect + - Tristam MacDonald + - Hans Mackowiak + - Ramiro Magno + - Дмитри Малышев + - Zbigniew Mandziejewicz + - Adam Marcus + - Célestin Marot + - Kyle McDonald + - David V. McKay + - David Medlock + - Bryce Mehring + - Jonathan Mercier + - Marcel Metz + - Liam Middlebrook + - Ave Milia + - Jonathan Miller + - Kenneth Miller + - Bruce Mitchener + - Jack Moffitt + - Ravi Mohan + - Jeff Molofee + - Alexander Monakov + - Pierre Morel + - Jon Morton + - Pierre Moulon + - Martins Mozeiko + - Pascal Muetschard + - James Murphy + - Julian Møller + - ndogxj + - F. Nedelec + - n3rdopolis + - Kristian Nielsen + - Joel Niemelä + - Kamil Nowakowski + - onox + - Denis Ovod + - Ozzy + - Andri Pálsson + - luz paz + - Peoro + - Braden Pellett + - Christopher Pelloux + - Michael Pennington + - Arturo J. Pérez + - Vladimir Perminov + - Olivier Perret + - Anthony Pesch + - Orson Peters + - Emmanuel Gil Peyrot + - Cyril Pichard + - Pilzschaf + - Keith Pitt + - Stanislav Podgorskiy + - Konstantin Podsvirov + - Nathan Poirier + - Alexandre Pretyman + - Pablo Prietz + - przemekmirek + - pthom + - Martin Pulec + - Guillaume Racicot + - Christian Rauch + - Philip Rideout + - Eddie Ringle + - Max Risuhin + - Joe Roback + - Jorge Rodriguez + - Jari Ronkainen + - Luca Rood + - Ed Ropple + - Aleksey Rybalkin + - Mikko Rytkönen + - Riku Salminen + - Brandon Schaefer + - Sebastian Schuberth + - Christian Sdunek + - Matt Sealey + - Steve Sexton + - Arkady Shapkin + - Ali Sherief + - Yoshiki Shibukawa + - Dmitri Shuralyov + - Joao da Silva + - Daniel Sieger + - Daniel Skorupski + - Slemmie + - Anthony Smith + - Bradley Smith + - Cliff Smolinsky + - Patrick Snape + - Erlend Sogge Heggen + - Olivier Sohn + - Julian Squires + - Johannes Stein + - Pontus Stenetorp + - Michael Stocker + - Justin Stoecker + - Elviss Strazdins + - Paul Sultana + - Nathan Sweet + - TTK-Bandit + - Jared Tiala + - Sergey Tikhomirov + - Arthur Tombs + - TronicLabs + - Ioannis Tsakpinis + - Samuli Tuomola + - Matthew Turner + - urraka + - Elias Vanderstuyft + - Stef Velzel + - Jari Vetoniemi + - Ricardo Vieira + - Nicholas Vitovitch + - Simon Voordouw + - Corentin Wallez + - Torsten Walluhn + - Patrick Walton + - Xo Wang + - Andre Weissflog + - Jay Weisskopf + - Frank Wille + - Andy Williams + - Joel Winarske + - Richard A. Wilkes + - Tatsuya Yatagawa + - Ryogo Yoshimura + - Lukas Zanner + - Andrey Zholos + - Aihui Zhu + - Santi Zupancic + - Jonas Ådahl + - Lasse Öörni + - Leonard König + - All the unmentioned and anonymous contributors in the GLFW community, for bug + reports, patches, feedback, testing and encouragement + diff --git a/lib/glfw/LICENSE.md b/lib/glfw/LICENSE.md new file mode 100644 index 0000000..7494a3f --- /dev/null +++ b/lib/glfw/LICENSE.md @@ -0,0 +1,23 @@ +Copyright (c) 2002-2006 Marcus Geelnard + +Copyright (c) 2006-2019 Camilla Löwy + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. + diff --git a/lib/glfw/README.md b/lib/glfw/README.md new file mode 100644 index 0000000..8b4a154 --- /dev/null +++ b/lib/glfw/README.md @@ -0,0 +1,420 @@ +# GLFW + +[![Build status](https://github.com/glfw/glfw/actions/workflows/build.yml/badge.svg)](https://github.com/glfw/glfw/actions) +[![Build status](https://ci.appveyor.com/api/projects/status/0kf0ct9831i5l6sp/branch/master?svg=true)](https://ci.appveyor.com/project/elmindreda/glfw) +[![Coverity Scan](https://scan.coverity.com/projects/4884/badge.svg)](https://scan.coverity.com/projects/glfw-glfw) + +## Introduction + +GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan +application development. It provides a simple, platform-independent API for +creating windows, contexts and surfaces, reading input, handling events, etc. + +GLFW natively supports Windows, macOS and Linux and other Unix-like systems. On +Linux both X11 and Wayland are supported. + +GLFW is licensed under the [zlib/libpng +license](https://www.glfw.org/license.html). + +You can [download](https://www.glfw.org/download.html) the latest stable release +as source or Windows binaries, or fetch the `latest` branch from GitHub. Each +release starting with 3.0 also has a corresponding [annotated +tag](https://github.com/glfw/glfw/releases) with source and binary archives. + +The [documentation](https://www.glfw.org/docs/latest/) is available online and is +included in all source and binary archives. See the [release +notes](https://www.glfw.org/docs/latest/news.html) for new features, caveats and +deprecations in the latest release. For more details see the [version +history](https://www.glfw.org/changelog.html). + +The `master` branch is the stable integration branch and _should_ always compile +and run on all supported platforms, although details of newly added features may +change until they have been included in a release. New features and many bug +fixes live in [other branches](https://github.com/glfw/glfw/branches/all) until +they are stable enough to merge. + +If you are new to GLFW, you may find the +[tutorial](https://www.glfw.org/docs/latest/quick.html) for GLFW 3 useful. If +you have used GLFW 2 in the past, there is a [transition +guide](https://www.glfw.org/docs/latest/moving.html) for moving to the GLFW +3 API. + +GLFW exists because of the contributions of [many people](CONTRIBUTORS.md) +around the world, whether by reporting bugs, providing community support, adding +features, reviewing or testing code, debugging, proofreading docs, suggesting +features or fixing bugs. + + +## Compiling GLFW + +GLFW itself requires only the headers and libraries for your OS and window +system. It does not need the headers for any context creation API (WGL, GLX, +EGL, NSGL, OSMesa) or rendering API (OpenGL, OpenGL ES, Vulkan) to enable +support for them. + +GLFW supports compilation on Windows with Visual C++ 2010 and later, MinGW and +MinGW-w64, on macOS with Clang and on Linux and other Unix-like systems with GCC +and Clang. It will likely compile in other environments as well, but this is +not regularly tested. + +There are [pre-compiled Windows binaries](https://www.glfw.org/download.html) +available for all supported compilers. + +See the [compilation guide](https://www.glfw.org/docs/latest/compile.html) for +more information about how to compile GLFW yourself. + + +## Using GLFW + +See the [documentation](https://www.glfw.org/docs/latest/) for tutorials, guides +and the API reference. + + +## Contributing to GLFW + +See the [contribution +guide](https://github.com/glfw/glfw/blob/master/docs/CONTRIBUTING.md) for +more information. + + +## System requirements + +GLFW supports Windows XP and later and macOS 10.8 and later. Linux and other +Unix-like systems running the X Window System are supported even without +a desktop environment or modern extensions, although some features require +a running window or clipboard manager. The OSMesa backend requires Mesa 6.3. + +See the [compatibility guide](https://www.glfw.org/docs/latest/compat.html) +in the documentation for more information. + + +## Dependencies + +GLFW itself needs only CMake 3.1 or later and the headers and libraries for your +OS and window system. + +The examples and test programs depend on a number of tiny libraries. These are +located in the `deps/` directory. + + - [getopt\_port](https://github.com/kimgr/getopt_port/) for examples + with command-line options + - [TinyCThread](https://github.com/tinycthread/tinycthread) for threaded + examples + - [glad2](https://github.com/Dav1dde/glad) for loading OpenGL and Vulkan + functions + - [linmath.h](https://github.com/datenwolf/linmath.h) for linear algebra in + examples + - [Nuklear](https://github.com/Immediate-Mode-UI/Nuklear) for test and example UI + - [stb\_image\_write](https://github.com/nothings/stb) for writing images to disk + +The documentation is generated with [Doxygen](https://doxygen.org/) if CMake can +find that tool. + + +## Reporting bugs + +Bugs are reported to our [issue tracker](https://github.com/glfw/glfw/issues). +Please check the [contribution +guide](https://github.com/glfw/glfw/blob/master/docs/CONTRIBUTING.md) for +information on what to include when reporting a bug. + + +## Changelog + + - Added `GLFW_PLATFORM` init hint for runtime platform selection (#1958) + - Added `GLFW_ANY_PLATFORM`, `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, + `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` and `GLFW_PLATFORM_NULL` symbols to + specify the desired platform (#1958) + - Added `glfwGetPlatform` function to query what platform was selected (#1655,#1958) + - Added `glfwPlatformSupported` function to query if a platform is supported + (#1655,#1958) + - Added `glfwInitAllocator` for setting a custom memory allocator (#544,#1628,#1947) + - Added `GLFWallocator` struct and `GLFWallocatefun`, `GLFWreallocatefun` and + `GLFWdeallocatefun` types (#544,#1628,#1947) + - Added `glfwInitVulkanLoader` for using a non-default Vulkan loader (#1374,#1890) + - Added `GLFW_RESIZE_NWSE_CURSOR`, `GLFW_RESIZE_NESW_CURSOR`, + `GLFW_RESIZE_ALL_CURSOR` and `GLFW_NOT_ALLOWED_CURSOR` cursor shapes (#427) + - Added `GLFW_RESIZE_EW_CURSOR` alias for `GLFW_HRESIZE_CURSOR` (#427) + - Added `GLFW_RESIZE_NS_CURSOR` alias for `GLFW_VRESIZE_CURSOR` (#427) + - Added `GLFW_POINTING_HAND_CURSOR` alias for `GLFW_HAND_CURSOR` (#427) + - Added `GLFW_MOUSE_PASSTHROUGH` window hint for letting mouse input pass + through the window (#1236,#1568) + - Added `GLFW_CURSOR_CAPTURED` cursor mode to confine the cursor to the window + content area (#58) + - Added `GLFW_POSITION_X` and `GLFW_POSITION_Y` window hints for initial position + (#1603,#1747) + - Added `GLFW_ANY_POSITION` hint value for letting the window manager choose (#1603,#1747) + - Added `GLFW_PLATFORM_UNAVAILABLE` error for platform detection failures (#1958) + - Added `GLFW_FEATURE_UNAVAILABLE` error for platform limitations (#1692) + - Added `GLFW_FEATURE_UNIMPLEMENTED` error for incomplete backends (#1692) + - Added `GLFW_WAYLAND_APP_ID` window hint string for Wayland app\_id selection + (#2121,#2122) + - Added `GLFW_ANGLE_PLATFORM_TYPE` init hint and `GLFW_ANGLE_PLATFORM_TYPE_*` + values to select ANGLE backend (#1380) + - Added `GLFW_X11_XCB_VULKAN_SURFACE` init hint for selecting X11 Vulkan + surface extension (#1793) + - Added `GLFW_NATIVE_INCLUDE_NONE` for disabling inclusion of native headers (#1348) + - Added `GLFW_BUILD_WIN32` CMake option for enabling Win32 support (#1958) + - Added `GLFW_BUILD_COCOA` CMake option for enabling Cocoa support (#1958) + - Added `GLFW_BUILD_X11` CMake option for enabling X11 support (#1958) + - Added `GLFW_LIBRARY_TYPE` CMake variable for overriding the library type + (#279,#1307,#1497,#1574,#1928) + - Added `GLFW_PKG_CONFIG_REQUIRES_PRIVATE` and `GLFW_PKG_CONFIG_LIBS_PRIVATE` CMake + variables exposing pkg-config dependencies (#1307) + - Made joystick subsystem initialize at first use (#1284,#1646) + - Made `GLFW_DOUBLEBUFFER` a read-only window attribute + - Updated the minimum required CMake version to 3.1 + - Updated gamepad mappings from upstream + - Disabled tests and examples by default when built as a CMake subdirectory + - Renamed `GLFW_USE_WAYLAND` CMake option to `GLFW_BUILD_WAYLAND` (#1958) + - Removed `GLFW_USE_OSMESA` CMake option enabling the Null platform (#1958) + - Removed CMake generated configuration header + - Bugfix: The CMake config-file package used an absolute path and was not + relocatable (#1470) + - Bugfix: Video modes with a duplicate screen area were discarded (#1555,#1556) + - Bugfix: Compiling with -Wextra-semi caused warnings (#1440) + - Bugfix: Built-in mappings failed because some OEMs re-used VID/PID (#1583) + - Bugfix: Some extension loader headers did not prevent default OpenGL header + inclusion (#1695) + - Bugfix: Buffers were swapped at creation on single-buffered windows (#1873) + - Bugfix: Gamepad mapping updates could spam `GLFW_INVALID_VALUE` due to + incompatible controllers sharing hardware ID (#1763) + - Bugfix: Native access functions for context handles did not check that the API matched + - Bugfix: `glfwMakeContextCurrent` would access TLS slot before initialization + - Bugfix: `glfwSetGammaRamp` could emit `GLFW_INVALID_VALUE` before initialization + - Bugfix: `glfwGetJoystickUserPointer` returned `NULL` during disconnection (#2092) + - [Win32] Added the `GLFW_WIN32_KEYBOARD_MENU` window hint for enabling access + to the window menu + - [Win32] Added a version info resource to the GLFW DLL + - [Win32] Made hidden helper window use its own window class + - [Win32] Disabled framebuffer transparency on Windows 7 when DWM windows are + opaque (#1512) + - [Win32] Bugfix: `GLFW_INCLUDE_VULKAN` plus `VK_USE_PLATFORM_WIN32_KHR` caused + symbol redefinition (#1524) + - [Win32] Bugfix: The cursor position event was emitted before its cursor enter + event (#1490) + - [Win32] Bugfix: The window hint `GLFW_MAXIMIZED` did not move or resize the + window (#1499) + - [Win32] Bugfix: Disabled cursor mode interfered with some non-client actions + - [Win32] Bugfix: Super key was not released after Win+V hotkey (#1622) + - [Win32] Bugfix: `glfwGetKeyName` could access out of bounds and return an + invalid pointer + - [Win32] Bugfix: Some synthetic key events were reported as `GLFW_KEY_UNKNOWN` + (#1623) + - [Win32] Bugfix: Non-BMP Unicode codepoint input was reported as UTF-16 + - [Win32] Bugfix: Monitor functions could return invalid values after + configuration change (#1761) + - [Win32] Bugfix: Initialization would segfault on Windows 8 (not 8.1) (#1775) + - [Win32] Bugfix: Duplicate size events were not filtered (#1610) + - [Win32] Bugfix: Full screen windows were incorrectly resized by DPI changes + (#1582) + - [Win32] Bugfix: `GLFW_SCALE_TO_MONITOR` had no effect on systems older than + Windows 10 version 1703 (#1511) + - [Win32] Bugfix: `USE_MSVC_RUNTIME_LIBRARY_DLL` had no effect on CMake 3.15 or + later (#1783,#1796) + - [Win32] Bugfix: Compilation with LLVM for Windows failed (#1807,#1824,#1874) + - [Win32] Bugfix: The foreground lock timeout was overridden, ignoring the user + - [Win32] Bugfix: Content scale queries could fail silently (#1615) + - [Win32] Bugfix: Content scales could have garbage values if monitor was recently + disconnected (#1615) + - [Win32] Bugfix: A window created maximized and undecorated would cover the whole + monitor (#1806) + - [Win32] Bugfix: The default restored window position was lost when creating a maximized + window + - [Win32] Bugfix: `glfwMaximizeWindow` would make a hidden window visible + - [Win32] Bugfix: `Alt+PrtSc` would emit `GLFW_KEY_UNKNOWN` and a different + scancode than `PrtSc` (#1993) + - [Win32] Bugfix: `GLFW_KEY_PAUSE` scancode from `glfwGetKeyScancode` did not + match event scancode (#1993) + - [Win32] Bugfix: Instance-local operations used executable instance (#469,#1296,#1395) + - [Win32] Bugfix: The OSMesa library was not unloaded on termination + - [Win32] Bugfix: Right shift emitted `GLFW_KEY_UNKNOWN` when using a CJK IME (#2050) + - [Cocoa] Added support for `VK_EXT_metal_surface` (#1619) + - [Cocoa] Added locating the Vulkan loader at runtime in an application bundle + - [Cocoa] Moved main menu creation to GLFW initialization time (#1649) + - [Cocoa] Changed `EGLNativeWindowType` from `NSView` to `CALayer` (#1169) + - [Cocoa] Changed F13 key to report Print Screen for cross-platform consistency + (#1786) + - [Cocoa] Disabled macOS fullscreen when `GLFW_RESIZABLE` is false + - [Cocoa] Removed dependency on the CoreVideo framework + - [Cocoa] Bugfix: `glfwSetWindowSize` used a bottom-left anchor point (#1553) + - [Cocoa] Bugfix: Window remained on screen after destruction until event poll + (#1412) + - [Cocoa] Bugfix: Event processing before window creation would assert (#1543) + - [Cocoa] Bugfix: Undecorated windows could not be iconified on recent macOS + - [Cocoa] Bugfix: Touching event queue from secondary thread before main thread + would abort (#1649) + - [Cocoa] Bugfix: Non-BMP Unicode codepoint input was reported as UTF-16 + (#1635) + - [Cocoa] Bugfix: Failing to retrieve the refresh rate of built-in displays + could leak memory + - [Cocoa] Bugfix: Objective-C files were compiled as C with CMake 3.19 (#1787) + - [Cocoa] Bugfix: Duplicate video modes were not filtered out (#1830) + - [Cocoa] Bugfix: Menu bar was not clickable on macOS 10.15+ until it lost and + regained focus (#1648,#1802) + - [Cocoa] Bugfix: Monitor name query could segfault on macOS 11 (#1809,#1833) + - [Cocoa] Bugfix: The install name of the installed dylib was relative (#1504) + - [Cocoa] Bugfix: The MoltenVK layer contents scale was updated only after + related events were emitted + - [Cocoa] Bugfix: Moving the cursor programmatically would freeze it for + a fraction of a second (#1962) + - [Cocoa] Bugfix: `kIOMasterPortDefault` was deprecated in macOS 12.0 (#1980) + - [Cocoa] Bugfix: `kUTTypeURL` was deprecated in macOS 12.0 (#2003) + - [Cocoa] Bugfix: A connected Apple AirPlay would emit a useless error (#1791) + - [Cocoa] Bugfix: The EGL and OSMesa libraries were not unloaded on termination + - [Cocoa] Bugfix: `GLFW_MAXIMIZED` was always true when `GLFW_RESIZABLE` was false + - [Cocoa] Bugfix: Changing `GLFW_DECORATED` in macOS fullscreen would abort + application (#1886) + - [Cocoa] Bugfix: Setting a monitor from macOS fullscreen would abort + application (#2110) + - [Cocoa] Bugfix: The Vulkan loader was not loaded from the `Frameworks` bundle + subdirectory (#2113,#2120) + - [X11] Bugfix: The CMake files did not check for the XInput headers (#1480) + - [X11] Bugfix: Key names were not updated when the keyboard layout changed + (#1462,#1528) + - [X11] Bugfix: Decorations could not be enabled after window creation (#1566) + - [X11] Bugfix: Content scale fallback value could be inconsistent (#1578) + - [X11] Bugfix: `glfwMaximizeWindow` had no effect on hidden windows + - [X11] Bugfix: Clearing `GLFW_FLOATING` on a hidden window caused invalid read + - [X11] Bugfix: Changing `GLFW_FLOATING` on a hidden window could silently fail + - [X11] Bugfix: Disabled cursor mode was interrupted by indicator windows + - [X11] Bugfix: Monitor physical dimensions could be reported as zero mm + - [X11] Bugfix: Window position events were not emitted during resizing (#1613) + - [X11] Bugfix: `glfwFocusWindow` could terminate on older WMs or without a WM + - [X11] Bugfix: Querying a disconnected monitor could segfault (#1602) + - [X11] Bugfix: IME input of CJK was broken for "C" locale (#1587,#1636) + - [X11] Bugfix: Termination would segfault if the IM had been destroyed + - [X11] Bugfix: Any IM started after initialization would not be detected + - [X11] Bugfix: Xlib errors caused by other parts of the application could be + reported as GLFW errors + - [X11] Bugfix: A handle race condition could cause a `BadWindow` error (#1633) + - [X11] Bugfix: XKB path used keysyms instead of physical locations for + non-printable keys (#1598) + - [X11] Bugfix: Function keys were mapped to `GLFW_KEY_UNKNOWN` for some layout + combinations (#1598) + - [X11] Bugfix: Keys pressed simultaneously with others were not always + reported (#1112,#1415,#1472,#1616) + - [X11] Bugfix: Some window attributes were not applied on leaving fullscreen + (#1863) + - [X11] Bugfix: Changing `GLFW_FLOATING` could leak memory + - [X11] Bugfix: Icon pixel format conversion worked only by accident, relying on + undefined behavior (#1986) + - [X11] Bugfix: Dynamic loading on OpenBSD failed due to soname differences + - [X11] Bugfix: Waiting for events would fail if file descriptor was too large + (#2024) + - [X11] Bugfix: Joystick events could lead to busy-waiting (#1872) + - [X11] Bugfix: `glfwWaitEvents*` did not continue for joystick events + - [X11] Bugfix: `glfwPostEmptyEvent` could be ignored due to race condition + (#379,#1281,#1285,#2033) + - [X11] Bugfix: Dynamic loading on NetBSD failed due to soname differences + - [X11] Bugfix: Left shift of int constant relied on undefined behavior (#1951) + - [X11] Bugfix: The OSMesa libray was not unloaded on termination + - [X11] Bugfix: A malformed response during selection transfer could cause a segfault + - [X11] Bugfix: Some calls would reset Xlib to the default error handler (#2108) + - [Wayland] Added dynamic loading of all Wayland libraries + - [Wayland] Added support for key names via xkbcommon + - [Wayland] Added support for file path drop events (#2040) + - [Wayland] Added support for more human-readable monitor names where available + - [Wayland] Disabled alpha channel for opaque windows on systems lacking + `EGL_EXT_present_opaque` (#1895) + - [Wayland] Removed support for `wl_shell` (#1443) + - [Wayland] Bugfix: The `GLFW_HAND_CURSOR` shape used the wrong image (#1432) + - [Wayland] Bugfix: `CLOCK_MONOTONIC` was not correctly enabled + - [Wayland] Bugfix: Repeated keys could be reported with `NULL` window (#1704) + - [Wayland] Bugfix: Retrieving partial framebuffer size would segfault + - [Wayland] Bugfix: Scrolling offsets were inverted compared to other platforms + (#1463) + - [Wayland] Bugfix: Client-Side Decorations were destroyed in the wrong order + (#1798) + - [Wayland] Bugfix: Monitors physical size could report zero (#1784,#1792) + - [Wayland] Bugfix: Some keys were not repeating in Wayland (#1908) + - [Wayland] Bugfix: Non-arrow cursors are offset from the hotspot (#1706,#1899) + - [Wayland] Bugfix: The `O_CLOEXEC` flag was not defined on FreeBSD + - [Wayland] Bugfix: Key repeat could lead to a race condition (#1710) + - [Wayland] Bugfix: Activating a window would emit two input focus events + - [Wayland] Bugfix: Disable key repeat mechanism when window loses input focus + - [Wayland] Bugfix: Window hiding and showing did not work (#1492,#1731) + - [Wayland] Bugfix: A key being repeated was not released when window lost focus + - [Wayland] Bugfix: Showing a hidden window did not emit a window refresh event + - [Wayland] Bugfix: Full screen window creation did not ignore `GLFW_VISIBLE` + - [Wayland] Bugfix: Some keys were reported as wrong key or `GLFW_KEY_UNKNOWN` + - [Wayland] Bugfix: Text input did not repeat along with key repeat + - [Wayland] Bugfix: `glfwPostEmptyEvent` sometimes had no effect (#1520,#1521) + - [Wayland] Bugfix: `glfwSetClipboardString` would fail if set to result of + `glfwGetClipboardString` + - [Wayland] Bugfix: Data source creation error would cause double free at termination + - [Wayland] Bugfix: Partial writes of clipboard string would cause beginning to repeat + - [Wayland] Bugfix: Some errors would cause clipboard string transfer to hang + - [Wayland] Bugfix: Drag and drop data was misinterpreted as clipboard string + - [Wayland] Bugfix: MIME type matching was not performed for clipboard string + - [Wayland] Bugfix: The OSMesa library was not unloaded on termination + - [Wayland] Bugfix: `glfwCreateWindow` could emit `GLFW_FEATURE_UNAVAILABLE` + - [Wayland] Bugfix: Lock key modifier bits were only set when lock keys were pressed + - [Wayland] Bugfix: A window leaving full screen mode would be iconified (#1995) + - [Wayland] Bugfix: A window leaving full screen mode ignored its desired size + - [Wayland] Bugfix: `glfwSetWindowMonitor` did not update windowed mode size + - [Wayland] Bugfix: `glfwRestoreWindow` would make a full screen window windowed + - [Wayland] Bugfix: A window maximized or restored by the user would enter an + inconsistent state + - [Wayland] Bugfix: Window maximization events were not emitted + - [Wayland] Bugfix: `glfwRestoreWindow` assumed it was always in windowed mode + - [Wayland] Bugfix: `glfwSetWindowSize` would resize a full screen window + - [Wayland] Bugfix: A window content scale event would be emitted every time + the window resized + - [Wayland] Bugfix: If `glfwInit` failed it would close stdin + - [Wayland] Bugfix: Manual resizing with fallback decorations behaved erratically + (#1991,#2115,#2127) + - [Wayland] Bugfix: Size limits included frame size for fallback decorations + - [Wayland] Bugfix: Updating `GLFW_DECORATED` had no effect on server-side + decorations + - [Wayland] Bugfix: A monitor would be reported as connected again if its scale + changed + - [Wayland] Bugfix: `glfwTerminate` would segfault if any monitor had changed + scale + - [Wayland] Bugfix: Window content scale events were not emitted when monitor + scale changed + - [Wayland] Bugfix: `glfwSetWindowAspectRatio` reported an error instead of + applying the specified ratio + - [Wayland] Bugfix: `GLFW_MAXIMIZED` window hint had no effect + - [Wayland] Bugfix: `glfwRestoreWindow` had no effect before first show + - [Wayland] Bugfix: Hiding and then showing a window caused program abort on + wlroots compositors (#1268) + - [Wayland] Bugfix: `GLFW_DECORATED` was ignored when showing a window with XDG + decorations + - [Wayland] Bugfix: Connecting a mouse after `glfwInit` would segfault (#1450) + - [POSIX] Removed use of deprecated function `gettimeofday` + - [POSIX] Bugfix: `CLOCK_MONOTONIC` was not correctly tested for or enabled + - [Linux] Bugfix: Joysticks without buttons were ignored (#2042,#2043) + - [WGL] Disabled the DWM swap interval hack for Windows 8 and later (#1072) + - [NSGL] Removed enforcement of forward-compatible flag for core contexts + - [NSGL] Bugfix: `GLFW_COCOA_RETINA_FRAMEBUFFER` had no effect on newer + macOS versions (#1442) + - [NSGL] Bugfix: Workaround for swap interval on 10.14 broke on 10.12 (#1483) + - [NSGL] Bugfix: Defining `GL_SILENCE_DEPRECATION` externally caused + a duplicate definition warning (#1840) + - [EGL] Added platform selection via the `EGL_EXT_platform_base` extension + (#442) + - [EGL] Added ANGLE backend selection via `EGL_ANGLE_platform_angle` extension + (#1380) + [EGL] Added loading of glvnd `libOpenGL.so.0` where available for OpenGL + - [EGL] Bugfix: The `GLFW_DOUBLEBUFFER` context attribute was ignored (#1843) + - [GLX] Added loading of glvnd `libGLX.so.0` where available + - [GLX] Bugfix: Context creation failed if GLX 1.4 was not exported by GLX library + + +## Contact + +On [glfw.org](https://www.glfw.org/) you can find the latest version of GLFW, as +well as news, documentation and other information about the project. + +If you have questions related to the use of GLFW, we have a +[forum](https://discourse.glfw.org/), and the `#glfw` IRC channel on +[Libera.Chat](https://libera.chat/). + +If you have a bug to report, a patch to submit or a feature you'd like to +request, please file it in the +[issue tracker](https://github.com/glfw/glfw/issues) on GitHub. + +Finally, if you're interested in helping out with the development of GLFW or +porting it to your favorite platform, join us on the forum, GitHub or IRC. + diff --git a/lib/glfw/deps/getopt.c b/lib/glfw/deps/getopt.c new file mode 100644 index 0000000..9743046 --- /dev/null +++ b/lib/glfw/deps/getopt.c @@ -0,0 +1,230 @@ +/* Copyright (c) 2012, Kim Gräsman + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of Kim Gräsman nor the names of contributors may be used + * to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL KIM GRÄSMAN BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "getopt.h" + +#include +#include + +const int no_argument = 0; +const int required_argument = 1; +const int optional_argument = 2; + +char* optarg; +int optopt; +/* The variable optind [...] shall be initialized to 1 by the system. */ +int optind = 1; +int opterr; + +static char* optcursor = NULL; + +/* Implemented based on [1] and [2] for optional arguments. + optopt is handled FreeBSD-style, per [3]. + Other GNU and FreeBSD extensions are purely accidental. + +[1] http://pubs.opengroup.org/onlinepubs/000095399/functions/getopt.html +[2] http://www.kernel.org/doc/man-pages/online/pages/man3/getopt.3.html +[3] http://www.freebsd.org/cgi/man.cgi?query=getopt&sektion=3&manpath=FreeBSD+9.0-RELEASE +*/ +int getopt(int argc, char* const argv[], const char* optstring) { + int optchar = -1; + const char* optdecl = NULL; + + optarg = NULL; + opterr = 0; + optopt = 0; + + /* Unspecified, but we need it to avoid overrunning the argv bounds. */ + if (optind >= argc) + goto no_more_optchars; + + /* If, when getopt() is called argv[optind] is a null pointer, getopt() + shall return -1 without changing optind. */ + if (argv[optind] == NULL) + goto no_more_optchars; + + /* If, when getopt() is called *argv[optind] is not the character '-', + getopt() shall return -1 without changing optind. */ + if (*argv[optind] != '-') + goto no_more_optchars; + + /* If, when getopt() is called argv[optind] points to the string "-", + getopt() shall return -1 without changing optind. */ + if (strcmp(argv[optind], "-") == 0) + goto no_more_optchars; + + /* If, when getopt() is called argv[optind] points to the string "--", + getopt() shall return -1 after incrementing optind. */ + if (strcmp(argv[optind], "--") == 0) { + ++optind; + goto no_more_optchars; + } + + if (optcursor == NULL || *optcursor == '\0') + optcursor = argv[optind] + 1; + + optchar = *optcursor; + + /* FreeBSD: The variable optopt saves the last known option character + returned by getopt(). */ + optopt = optchar; + + /* The getopt() function shall return the next option character (if one is + found) from argv that matches a character in optstring, if there is + one that matches. */ + optdecl = strchr(optstring, optchar); + if (optdecl) { + /* [I]f a character is followed by a colon, the option takes an + argument. */ + if (optdecl[1] == ':') { + optarg = ++optcursor; + if (*optarg == '\0') { + /* GNU extension: Two colons mean an option takes an + optional arg; if there is text in the current argv-element + (i.e., in the same word as the option name itself, for example, + "-oarg"), then it is returned in optarg, otherwise optarg is set + to zero. */ + if (optdecl[2] != ':') { + /* If the option was the last character in the string pointed to by + an element of argv, then optarg shall contain the next element + of argv, and optind shall be incremented by 2. If the resulting + value of optind is greater than argc, this indicates a missing + option-argument, and getopt() shall return an error indication. + + Otherwise, optarg shall point to the string following the + option character in that element of argv, and optind shall be + incremented by 1. + */ + if (++optind < argc) { + optarg = argv[optind]; + } else { + /* If it detects a missing option-argument, it shall return the + colon character ( ':' ) if the first character of optstring + was a colon, or a question-mark character ( '?' ) otherwise. + */ + optarg = NULL; + optchar = (optstring[0] == ':') ? ':' : '?'; + } + } else { + optarg = NULL; + } + } + + optcursor = NULL; + } + } else { + /* If getopt() encounters an option character that is not contained in + optstring, it shall return the question-mark ( '?' ) character. */ + optchar = '?'; + } + + if (optcursor == NULL || *++optcursor == '\0') + ++optind; + + return optchar; + +no_more_optchars: + optcursor = NULL; + return -1; +} + +/* Implementation based on [1]. + +[1] http://www.kernel.org/doc/man-pages/online/pages/man3/getopt.3.html +*/ +int getopt_long(int argc, char* const argv[], const char* optstring, + const struct option* longopts, int* longindex) { + const struct option* o = longopts; + const struct option* match = NULL; + int num_matches = 0; + size_t argument_name_length = 0; + const char* current_argument = NULL; + int retval = -1; + + optarg = NULL; + optopt = 0; + + if (optind >= argc) + return -1; + + if (strlen(argv[optind]) < 3 || strncmp(argv[optind], "--", 2) != 0) + return getopt(argc, argv, optstring); + + /* It's an option; starts with -- and is longer than two chars. */ + current_argument = argv[optind] + 2; + argument_name_length = strcspn(current_argument, "="); + for (; o->name; ++o) { + if (strncmp(o->name, current_argument, argument_name_length) == 0) { + match = o; + ++num_matches; + } + } + + if (num_matches == 1) { + /* If longindex is not NULL, it points to a variable which is set to the + index of the long option relative to longopts. */ + if (longindex) + *longindex = (int) (match - longopts); + + /* If flag is NULL, then getopt_long() shall return val. + Otherwise, getopt_long() returns 0, and flag shall point to a variable + which shall be set to val if the option is found, but left unchanged if + the option is not found. */ + if (match->flag) + *(match->flag) = match->val; + + retval = match->flag ? 0 : match->val; + + if (match->has_arg != no_argument) { + optarg = strchr(argv[optind], '='); + if (optarg != NULL) + ++optarg; + + if (match->has_arg == required_argument) { + /* Only scan the next argv for required arguments. Behavior is not + specified, but has been observed with Ubuntu and Mac OSX. */ + if (optarg == NULL && ++optind < argc) { + optarg = argv[optind]; + } + + if (optarg == NULL) + retval = ':'; + } + } else if (strchr(argv[optind], '=')) { + /* An argument was provided to a non-argument option. + I haven't seen this specified explicitly, but both GNU and BSD-based + implementations show this behavior. + */ + retval = '?'; + } + } else { + /* Unknown option or ambiguous match. */ + retval = '?'; + } + + ++optind; + return retval; +} diff --git a/lib/glfw/deps/getopt.h b/lib/glfw/deps/getopt.h new file mode 100644 index 0000000..e1eb540 --- /dev/null +++ b/lib/glfw/deps/getopt.h @@ -0,0 +1,57 @@ +/* Copyright (c) 2012, Kim Gräsman + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of Kim Gräsman nor the names of contributors may be used + * to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL KIM GRÄSMAN BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef INCLUDED_GETOPT_PORT_H +#define INCLUDED_GETOPT_PORT_H + +#if defined(__cplusplus) +extern "C" { +#endif + +extern const int no_argument; +extern const int required_argument; +extern const int optional_argument; + +extern char* optarg; +extern int optind, opterr, optopt; + +struct option { + const char* name; + int has_arg; + int* flag; + int val; +}; + +int getopt(int argc, char* const argv[], const char* optstring); + +int getopt_long(int argc, char* const argv[], + const char* optstring, const struct option* longopts, int* longindex); + +#if defined(__cplusplus) +} +#endif + +#endif // INCLUDED_GETOPT_PORT_H diff --git a/lib/glfw/deps/glad/gl.h b/lib/glfw/deps/glad/gl.h new file mode 100644 index 0000000..b421fe0 --- /dev/null +++ b/lib/glfw/deps/glad/gl.h @@ -0,0 +1,5996 @@ +/** + * Loader generated by glad 2.0.0-beta on Tue Aug 24 22:51:07 2021 + * + * Generator: C/C++ + * Specification: gl + * Extensions: 3 + * + * APIs: + * - gl:compatibility=3.3 + * + * Options: + * - ALIAS = False + * - DEBUG = False + * - HEADER_ONLY = True + * - LOADER = False + * - MX = False + * - MX_GLOBAL = False + * - ON_DEMAND = False + * + * Commandline: + * --api='gl:compatibility=3.3' --extensions='GL_ARB_multisample,GL_ARB_robustness,GL_KHR_debug' c --header-only + * + * Online: + * http://glad.sh/#api=gl%3Acompatibility%3D3.3&extensions=GL_ARB_multisample%2CGL_ARB_robustness%2CGL_KHR_debug&generator=c&options=HEADER_ONLY + * + */ + +#ifndef GLAD_GL_H_ +#define GLAD_GL_H_ + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-id-macro" +#endif +#ifdef __gl_h_ + #error OpenGL (gl.h) header already included (API: gl), remove previous include! +#endif +#define __gl_h_ 1 +#ifdef __gl3_h_ + #error OpenGL (gl3.h) header already included (API: gl), remove previous include! +#endif +#define __gl3_h_ 1 +#ifdef __glext_h_ + #error OpenGL (glext.h) header already included (API: gl), remove previous include! +#endif +#define __glext_h_ 1 +#ifdef __gl3ext_h_ + #error OpenGL (gl3ext.h) header already included (API: gl), remove previous include! +#endif +#define __gl3ext_h_ 1 +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#define GLAD_GL +#define GLAD_OPTION_GL_HEADER_ONLY + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef GLAD_PLATFORM_H_ +#define GLAD_PLATFORM_H_ + +#ifndef GLAD_PLATFORM_WIN32 + #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) + #define GLAD_PLATFORM_WIN32 1 + #else + #define GLAD_PLATFORM_WIN32 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_APPLE + #ifdef __APPLE__ + #define GLAD_PLATFORM_APPLE 1 + #else + #define GLAD_PLATFORM_APPLE 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_EMSCRIPTEN + #ifdef __EMSCRIPTEN__ + #define GLAD_PLATFORM_EMSCRIPTEN 1 + #else + #define GLAD_PLATFORM_EMSCRIPTEN 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_UWP + #if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) + #ifdef __has_include + #if __has_include() + #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 + #endif + #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ + #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 + #endif + #endif + + #ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY + #include + #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + #define GLAD_PLATFORM_UWP 1 + #endif + #endif + + #ifndef GLAD_PLATFORM_UWP + #define GLAD_PLATFORM_UWP 0 + #endif +#endif + +#ifdef __GNUC__ + #define GLAD_GNUC_EXTENSION __extension__ +#else + #define GLAD_GNUC_EXTENSION +#endif + +#ifndef GLAD_API_CALL + #if defined(GLAD_API_CALL_EXPORT) + #if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) + #if defined(GLAD_API_CALL_EXPORT_BUILD) + #if defined(__GNUC__) + #define GLAD_API_CALL __attribute__ ((dllexport)) extern + #else + #define GLAD_API_CALL __declspec(dllexport) extern + #endif + #else + #if defined(__GNUC__) + #define GLAD_API_CALL __attribute__ ((dllimport)) extern + #else + #define GLAD_API_CALL __declspec(dllimport) extern + #endif + #endif + #elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) + #define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern + #else + #define GLAD_API_CALL extern + #endif + #else + #define GLAD_API_CALL extern + #endif +#endif + +#ifdef APIENTRY + #define GLAD_API_PTR APIENTRY +#elif GLAD_PLATFORM_WIN32 + #define GLAD_API_PTR __stdcall +#else + #define GLAD_API_PTR +#endif + +#ifndef GLAPI +#define GLAPI GLAD_API_CALL +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY GLAD_API_PTR +#endif + +#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) +#define GLAD_VERSION_MAJOR(version) (version / 10000) +#define GLAD_VERSION_MINOR(version) (version % 10000) + +#define GLAD_GENERATOR_VERSION "2.0.0-beta" + +typedef void (*GLADapiproc)(void); + +typedef GLADapiproc (*GLADloadfunc)(const char *name); +typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); + +typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, ...); + +#endif /* GLAD_PLATFORM_H_ */ + +#define GL_2D 0x0600 +#define GL_2_BYTES 0x1407 +#define GL_3D 0x0601 +#define GL_3D_COLOR 0x0602 +#define GL_3D_COLOR_TEXTURE 0x0603 +#define GL_3_BYTES 0x1408 +#define GL_4D_COLOR_TEXTURE 0x0604 +#define GL_4_BYTES 0x1409 +#define GL_ACCUM 0x0100 +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_RED_BITS 0x0D58 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ADD 0x0104 +#define GL_ADD_SIGNED 0x8574 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF +#define GL_ALPHA 0x1906 +#define GL_ALPHA12 0x803D +#define GL_ALPHA16 0x803E +#define GL_ALPHA4 0x803B +#define GL_ALPHA8 0x803C +#define GL_ALPHA_BIAS 0x0D1D +#define GL_ALPHA_BITS 0x0D55 +#define GL_ALPHA_INTEGER 0x8D97 +#define GL_ALPHA_SCALE 0x0D1C +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_ALWAYS 0x0207 +#define GL_AMBIENT 0x1200 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_AND 0x1501 +#define GL_AND_INVERTED 0x1504 +#define GL_AND_REVERSE 0x1502 +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_AUTO_NORMAL 0x0D80 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#define GL_AUX_BUFFERS 0x0C00 +#define GL_BACK 0x0405 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_BGRA_INTEGER 0x8D9B +#define GL_BGR_INTEGER 0x8D9A +#define GL_BITMAP 0x1A00 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_BLEND 0x0BE2 +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLUE 0x1905 +#define GL_BLUE_BIAS 0x0D1B +#define GL_BLUE_BITS 0x0D54 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_BLUE_SCALE 0x0D1A +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_BUFFER 0x82E0 +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_BYTE 0x1400 +#define GL_C3F_V3F 0x2A24 +#define GL_C4F_N3F_V3F 0x2A26 +#define GL_C4UB_V2F 0x2A22 +#define GL_C4UB_V3F 0x2A23 +#define GL_CCW 0x0901 +#define GL_CLAMP 0x2900 +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLEAR 0x1500 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 +#define GL_COEFF 0x0A00 +#define GL_COLOR 0x1800 +#define GL_COLOR_ARRAY 0x8076 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_INDEX 0x1900 +#define GL_COLOR_INDEXES 0x1603 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_COLOR_SUM 0x8458 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_COMBINE 0x8570 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#define GL_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_RG 0x8226 +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CONDITION_SATISFIED 0x911C +#define GL_CONSTANT 0x8576 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_FLAGS 0x821E +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_COORD_REPLACE 0x8862 +#define GL_COPY 0x1503 +#define GL_COPY_INVERTED 0x150C +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_CURRENT_BIT 0x00000001 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_FOG_COORD 0x8453 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_CURRENT_QUERY 0x8865 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_CW 0x0900 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DECAL 0x2101 +#define GL_DECR 0x1E03 +#define GL_DECR_WRAP 0x8508 +#define GL_DELETE_STATUS 0x8B80 +#define GL_DEPTH 0x1801 +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_DEPTH_BIAS 0x0D1F +#define GL_DEPTH_BITS 0x0D56 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_DEPTH_CLAMP 0x864F +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_SCALE 0x0D1E +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DIFFUSE 0x1201 +#define GL_DISPLAY_LIST 0x82E7 +#define GL_DITHER 0x0BD0 +#define GL_DOMAIN 0x0A02 +#define GL_DONT_CARE 0x1100 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#define GL_DOUBLE 0x140A +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_DST_ALPHA 0x0304 +#define GL_DST_COLOR 0x0306 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_EDGE_FLAG 0x0B43 +#define GL_EDGE_FLAG_ARRAY 0x8079 +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_EMISSION 0x1600 +#define GL_ENABLE_BIT 0x00002000 +#define GL_EQUAL 0x0202 +#define GL_EQUIV 0x1509 +#define GL_EVAL_BIT 0x00010000 +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 +#define GL_EXTENSIONS 0x1F03 +#define GL_EYE_LINEAR 0x2400 +#define GL_EYE_PLANE 0x2502 +#define GL_FALSE 0 +#define GL_FASTEST 0x1101 +#define GL_FEEDBACK 0x1C01 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 +#define GL_FILL 0x1B02 +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_FIXED_ONLY 0x891D +#define GL_FLAT 0x1D00 +#define GL_FLOAT 0x1406 +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4 0x8B5C +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_FOG 0x0B60 +#define GL_FOG_BIT 0x00000080 +#define GL_FOG_COLOR 0x0B66 +#define GL_FOG_COORD 0x8451 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORD_ARRAY 0x8457 +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D +#define GL_FOG_COORD_ARRAY_POINTER 0x8456 +#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORD_ARRAY_TYPE 0x8454 +#define GL_FOG_COORD_SRC 0x8450 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_END 0x0B64 +#define GL_FOG_HINT 0x0C54 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_START 0x0B63 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_FRAMEBUFFER 0x8D40 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRONT 0x0404 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_FRONT_FACE 0x0B46 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEQUAL 0x0206 +#define GL_GREATER 0x0204 +#define GL_GREEN 0x1904 +#define GL_GREEN_BIAS 0x0D19 +#define GL_GREEN_BITS 0x0D53 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_GREEN_SCALE 0x0D18 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_HALF_FLOAT 0x140B +#define GL_HINT_BIT 0x00008000 +#define GL_INCR 0x1E02 +#define GL_INCR_WRAP 0x8507 +#define GL_INDEX 0x8222 +#define GL_INDEX_ARRAY 0x8077 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_INDEX_ARRAY_POINTER 0x8091 +#define GL_INDEX_ARRAY_STRIDE 0x8086 +#define GL_INDEX_ARRAY_TYPE 0x8085 +#define GL_INDEX_BITS 0x0D51 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_INDEX_MODE 0x0C30 +#define GL_INDEX_OFFSET 0x0D13 +#define GL_INDEX_SHIFT 0x0D12 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_INT 0x1404 +#define GL_INTENSITY 0x8049 +#define GL_INTENSITY12 0x804C +#define GL_INTENSITY16 0x804D +#define GL_INTENSITY4 0x804A +#define GL_INTENSITY8 0x804B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_INTERPOLATE 0x8575 +#define GL_INT_2_10_10_10_REV 0x8D9F +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_INVALID_OPERATION 0x0502 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVERT 0x150A +#define GL_KEEP 0x1E00 +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_LEFT 0x0406 +#define GL_LEQUAL 0x0203 +#define GL_LESS 0x0201 +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 +#define GL_LIGHTING 0x0B50 +#define GL_LIGHTING_BIT 0x00000040 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LINE 0x1B01 +#define GL_LINEAR 0x2601 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINES 0x0001 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_BIT 0x00000004 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_LINE_TOKEN 0x0702 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINK_STATUS 0x8B82 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_BIT 0x00020000 +#define GL_LIST_INDEX 0x0B33 +#define GL_LIST_MODE 0x0B30 +#define GL_LOAD 0x0101 +#define GL_LOGIC_OP 0x0BF1 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE12 0x8041 +#define GL_LUMINANCE12_ALPHA12 0x8047 +#define GL_LUMINANCE12_ALPHA4 0x8046 +#define GL_LUMINANCE16 0x8042 +#define GL_LUMINANCE16_ALPHA16 0x8048 +#define GL_LUMINANCE4 0x803F +#define GL_LUMINANCE4_ALPHA4 0x8043 +#define GL_LUMINANCE6_ALPHA2 0x8044 +#define GL_LUMINANCE8 0x8040 +#define GL_LUMINANCE8_ALPHA8 0x8045 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_MAJOR_VERSION 0x821B +#define GL_MAP1_COLOR_4 0x0D90 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 +#define GL_MAP1_INDEX 0x0D91 +#define GL_MAP1_NORMAL 0x0D92 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 +#define GL_MAP1_VERTEX_3 0x0D97 +#define GL_MAP1_VERTEX_4 0x0D98 +#define GL_MAP2_COLOR_4 0x0DB0 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 +#define GL_MAP2_INDEX 0x0DB1 +#define GL_MAP2_NORMAL 0x0DB2 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 +#define GL_MAP2_VERTEX_3 0x0DB7 +#define GL_MAP2_VERTEX_4 0x0DB8 +#define GL_MAP_COLOR 0x0D10 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_STENCIL 0x0D11 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MATRIX_MODE 0x0BA0 +#define GL_MAX 0x8008 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_EVAL_ORDER 0x0D30 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_MAX_TEXTURE_COORDS 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MIN 0x8007 +#define GL_MINOR_VERSION 0x821C +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MODELVIEW 0x1700 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_MODULATE 0x2100 +#define GL_MULT 0x0103 +#define GL_MULTISAMPLE 0x809D +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#define GL_N3F_V3F 0x2A25 +#define GL_NAME_STACK_DEPTH 0x0D70 +#define GL_NAND 0x150E +#define GL_NEAREST 0x2600 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEVER 0x0200 +#define GL_NICEST 0x1102 +#define GL_NONE 0 +#define GL_NOOP 0x1505 +#define GL_NOR 0x1508 +#define GL_NORMALIZE 0x0BA1 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_MAP 0x8511 +#define GL_NOTEQUAL 0x0205 +#define GL_NO_ERROR 0 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_NUM_EXTENSIONS 0x821D +#define GL_OBJECT_LINEAR 0x2401 +#define GL_OBJECT_PLANE 0x2501 +#define GL_OBJECT_TYPE 0x9112 +#define GL_ONE 1 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_OPERAND2_RGB 0x8592 +#define GL_OR 0x1507 +#define GL_ORDER 0x0A01 +#define GL_OR_INVERTED 0x150D +#define GL_OR_REVERSE 0x150B +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PASS_THROUGH_TOKEN 0x0700 +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#define GL_PIXEL_MODE_BIT 0x00000020 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_POINT 0x1B00 +#define GL_POINTS 0x0000 +#define GL_POINT_BIT 0x00000002 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_POINT_SPRITE 0x8861 +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_POINT_TOKEN 0x0701 +#define GL_POLYGON 0x0009 +#define GL_POLYGON_BIT 0x00000008 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_POLYGON_STIPPLE 0x0B42 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_POSITION 0x1203 +#define GL_PREVIOUS 0x8578 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_PROGRAM 0x82E2 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_PROJECTION 0x1701 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_Q 0x2003 +#define GL_QUADRATIC_ATTENUATION 0x1209 +#define GL_QUADS 0x0007 +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_QUAD_STRIP 0x0008 +#define GL_QUERY 0x82E3 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_QUERY_WAIT 0x8E13 +#define GL_R 0x2002 +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_R16 0x822A +#define GL_R16F 0x822D +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R16_SNORM 0x8F98 +#define GL_R32F 0x822E +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_R3_G3_B2 0x2A10 +#define GL_R8 0x8229 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R8_SNORM 0x8F94 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_READ_BUFFER 0x0C02 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_READ_ONLY 0x88B8 +#define GL_READ_WRITE 0x88BA +#define GL_RED 0x1903 +#define GL_RED_BIAS 0x0D15 +#define GL_RED_BITS 0x0D52 +#define GL_RED_INTEGER 0x8D94 +#define GL_RED_SCALE 0x0D14 +#define GL_REFLECTION_MAP 0x8512 +#define GL_RENDER 0x1C00 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERER 0x1F01 +#define GL_RENDER_MODE 0x0C40 +#define GL_REPEAT 0x2901 +#define GL_REPLACE 0x1E01 +#define GL_RESCALE_NORMAL 0x803A +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_RETURN 0x0102 +#define GL_RG 0x8227 +#define GL_RG16 0x822C +#define GL_RG16F 0x822F +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG16_SNORM 0x8F99 +#define GL_RG32F 0x8230 +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_RG8 0x822B +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB 0x1907 +#define GL_RGB10 0x8052 +#define GL_RGB10_A2 0x8059 +#define GL_RGB10_A2UI 0x906F +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGB16F 0x881B +#define GL_RGB16I 0x8D89 +#define GL_RGB16UI 0x8D77 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGB32F 0x8815 +#define GL_RGB32I 0x8D83 +#define GL_RGB32UI 0x8D71 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB5_A1 0x8057 +#define GL_RGB8 0x8051 +#define GL_RGB8I 0x8D8F +#define GL_RGB8UI 0x8D7D +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGB9_E5 0x8C3D +#define GL_RGBA 0x1908 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_RGBA16F 0x881A +#define GL_RGBA16I 0x8D88 +#define GL_RGBA16UI 0x8D76 +#define GL_RGBA16_SNORM 0x8F9B +#define GL_RGBA2 0x8055 +#define GL_RGBA32F 0x8814 +#define GL_RGBA32I 0x8D82 +#define GL_RGBA32UI 0x8D70 +#define GL_RGBA4 0x8056 +#define GL_RGBA8 0x8058 +#define GL_RGBA8I 0x8D8E +#define GL_RGBA8UI 0x8D7C +#define GL_RGBA8_SNORM 0x8F97 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_RGBA_MODE 0x0C31 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGB_SCALE 0x8573 +#define GL_RG_INTEGER 0x8228 +#define GL_RIGHT 0x0407 +#define GL_S 0x2000 +#define GL_SAMPLER 0x82E6 +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SELECT 0x1C02 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_SET 0x150F +#define GL_SHADER 0x82E1 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_TYPE 0x8B4F +#define GL_SHADE_MODEL 0x0B54 +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_SHININESS 0x1601 +#define GL_SHORT 0x1402 +#define GL_SIGNALED 0x9119 +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SMOOTH 0x1D01 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_SOURCE2_RGB 0x8582 +#define GL_SPECULAR 0x1202 +#define GL_SPHERE_MAP 0x2402 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_ALPHA 0x8589 +#define GL_SRC1_COLOR 0x88F9 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_ALPHA 0x858A +#define GL_SRC2_RGB 0x8582 +#define GL_SRC_ALPHA 0x0302 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_SRC_COLOR 0x0300 +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_STATIC_COPY 0x88E6 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_STENCIL_BITS 0x0D57 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_INDEX 0x1901 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STEREO 0x0C33 +#define GL_STREAM_COPY 0x88E2 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_SUBTRACT 0x84E7 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_SYNC_STATUS 0x9114 +#define GL_T 0x2001 +#define GL_T2F_C3F_V3F 0x2A2A +#define GL_T2F_C4F_N3F_V3F 0x2A2C +#define GL_T2F_C4UB_V3F 0x2A29 +#define GL_T2F_N3F_V3F 0x2A2B +#define GL_T2F_V3F 0x2A27 +#define GL_T4F_C4F_N3F_V4F 0x2A2D +#define GL_T4F_V4F 0x2A28 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_TEXTURE_ENV 0x2300 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_PRIORITY 0x8066 +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_RESIDENT 0x8067 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_TIMESTAMP 0x8E28 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_FAN 0x0006 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_TRUE 1 +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNSIGNALED 0x9118 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_V2F 0x2A20 +#define GL_V3F 0x2A21 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_VENDOR 0x1F00 +#define GL_VERSION 0x1F02 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_VIEWPORT 0x0BA2 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_WAIT_FAILED 0x911D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_WRITE_ONLY 0x88B9 +#define GL_XOR 0x1506 +#define GL_ZERO 0 +#define GL_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 + + +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_GLAD_API_PTR + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_GLAD_API_PTR funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_GLAD_API_PTR + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_GLAD_API_PTR __stdcall +#else +# define KHRONOS_GLAD_API_PTR +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef _WIN64 +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ + +typedef unsigned int GLenum; + +typedef unsigned char GLboolean; + +typedef unsigned int GLbitfield; + +typedef void GLvoid; + +typedef khronos_int8_t GLbyte; + +typedef khronos_uint8_t GLubyte; + +typedef khronos_int16_t GLshort; + +typedef khronos_uint16_t GLushort; + +typedef int GLint; + +typedef unsigned int GLuint; + +typedef khronos_int32_t GLclampx; + +typedef int GLsizei; + +typedef khronos_float_t GLfloat; + +typedef khronos_float_t GLclampf; + +typedef double GLdouble; + +typedef double GLclampd; + +typedef void *GLeglClientBufferEXT; + +typedef void *GLeglImageOES; + +typedef char GLchar; + +typedef char GLcharARB; + +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif + +typedef khronos_uint16_t GLhalf; + +typedef khronos_uint16_t GLhalfARB; + +typedef khronos_int32_t GLfixed; + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_intptr_t GLintptr; +#else +typedef khronos_intptr_t GLintptr; +#endif + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_intptr_t GLintptrARB; +#else +typedef khronos_intptr_t GLintptrARB; +#endif + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_ssize_t GLsizeiptr; +#else +typedef khronos_ssize_t GLsizeiptr; +#endif + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_ssize_t GLsizeiptrARB; +#else +typedef khronos_ssize_t GLsizeiptrARB; +#endif + +typedef khronos_int64_t GLint64; + +typedef khronos_int64_t GLint64EXT; + +typedef khronos_uint64_t GLuint64; + +typedef khronos_uint64_t GLuint64EXT; + +typedef struct __GLsync *GLsync; + +struct _cl_context; + +struct _cl_event; + +typedef void (GLAD_API_PTR *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + +typedef void (GLAD_API_PTR *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + +typedef void (GLAD_API_PTR *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + +typedef void (GLAD_API_PTR *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); + +typedef unsigned short GLhalfNV; + +typedef GLintptr GLvdpauSurfaceNV; + +typedef void (GLAD_API_PTR *GLVULKANPROCNV)(void); + + + +#define GL_VERSION_1_0 1 +GLAD_API_CALL int GLAD_GL_VERSION_1_0; +#define GL_VERSION_1_1 1 +GLAD_API_CALL int GLAD_GL_VERSION_1_1; +#define GL_VERSION_1_2 1 +GLAD_API_CALL int GLAD_GL_VERSION_1_2; +#define GL_VERSION_1_3 1 +GLAD_API_CALL int GLAD_GL_VERSION_1_3; +#define GL_VERSION_1_4 1 +GLAD_API_CALL int GLAD_GL_VERSION_1_4; +#define GL_VERSION_1_5 1 +GLAD_API_CALL int GLAD_GL_VERSION_1_5; +#define GL_VERSION_2_0 1 +GLAD_API_CALL int GLAD_GL_VERSION_2_0; +#define GL_VERSION_2_1 1 +GLAD_API_CALL int GLAD_GL_VERSION_2_1; +#define GL_VERSION_3_0 1 +GLAD_API_CALL int GLAD_GL_VERSION_3_0; +#define GL_VERSION_3_1 1 +GLAD_API_CALL int GLAD_GL_VERSION_3_1; +#define GL_VERSION_3_2 1 +GLAD_API_CALL int GLAD_GL_VERSION_3_2; +#define GL_VERSION_3_3 1 +GLAD_API_CALL int GLAD_GL_VERSION_3_3; +#define GL_ARB_multisample 1 +GLAD_API_CALL int GLAD_GL_ARB_multisample; +#define GL_ARB_robustness 1 +GLAD_API_CALL int GLAD_GL_ARB_robustness; +#define GL_KHR_debug 1 +GLAD_API_CALL int GLAD_GL_KHR_debug; + + +typedef void (GLAD_API_PTR *PFNGLACCUMPROC)(GLenum op, GLfloat value); +typedef void (GLAD_API_PTR *PFNGLACTIVETEXTUREPROC)(GLenum texture); +typedef void (GLAD_API_PTR *PFNGLALPHAFUNCPROC)(GLenum func, GLfloat ref); +typedef GLboolean (GLAD_API_PTR *PFNGLARETEXTURESRESIDENTPROC)(GLsizei n, const GLuint * textures, GLboolean * residences); +typedef void (GLAD_API_PTR *PFNGLARRAYELEMENTPROC)(GLint i); +typedef void (GLAD_API_PTR *PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +typedef void (GLAD_API_PTR *PFNGLBEGINPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); +typedef void (GLAD_API_PTR *PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); +typedef void (GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); +typedef void (GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +typedef void (GLAD_API_PTR *PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void (GLAD_API_PTR *PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +typedef void (GLAD_API_PTR *PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +typedef void (GLAD_API_PTR *PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); +typedef void (GLAD_API_PTR *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +typedef void (GLAD_API_PTR *PFNGLBINDVERTEXARRAYPROC)(GLuint array); +typedef void (GLAD_API_PTR *PFNGLBITMAPPROC)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap); +typedef void (GLAD_API_PTR *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GLAD_API_PTR *PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (GLAD_API_PTR *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void * data, GLenum usage); +typedef void (GLAD_API_PTR *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data); +typedef void (GLAD_API_PTR *PFNGLCALLLISTPROC)(GLuint list); +typedef void (GLAD_API_PTR *PFNGLCALLLISTSPROC)(GLsizei n, GLenum type, const void * lists); +typedef GLenum (GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +typedef void (GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask); +typedef void (GLAD_API_PTR *PFNGLCLEARACCUMPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +typedef void (GLAD_API_PTR *PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLCLEARDEPTHPROC)(GLdouble depth); +typedef void (GLAD_API_PTR *PFNGLCLEARINDEXPROC)(GLfloat c); +typedef void (GLAD_API_PTR *PFNGLCLEARSTENCILPROC)(GLint s); +typedef void (GLAD_API_PTR *PFNGLCLIENTACTIVETEXTUREPROC)(GLenum texture); +typedef GLenum (GLAD_API_PTR *PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GLAD_API_PTR *PFNGLCLIPPLANEPROC)(GLenum plane, const GLdouble * equation); +typedef void (GLAD_API_PTR *PFNGLCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAD_API_PTR *PFNGLCOLOR3BVPROC)(const GLbyte * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAD_API_PTR *PFNGLCOLOR3DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAD_API_PTR *PFNGLCOLOR3FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR3IPROC)(GLint red, GLint green, GLint blue); +typedef void (GLAD_API_PTR *PFNGLCOLOR3IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue); +typedef void (GLAD_API_PTR *PFNGLCOLOR3SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAD_API_PTR *PFNGLCOLOR3UBVPROC)(const GLubyte * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue); +typedef void (GLAD_API_PTR *PFNGLCOLOR3UIVPROC)(const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue); +typedef void (GLAD_API_PTR *PFNGLCOLOR3USVPROC)(const GLushort * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR4BPROC)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); +typedef void (GLAD_API_PTR *PFNGLCOLOR4BVPROC)(const GLbyte * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR4DPROC)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); +typedef void (GLAD_API_PTR *PFNGLCOLOR4DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR4FPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLCOLOR4FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR4IPROC)(GLint red, GLint green, GLint blue, GLint alpha); +typedef void (GLAD_API_PTR *PFNGLCOLOR4IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR4SPROC)(GLshort red, GLshort green, GLshort blue, GLshort alpha); +typedef void (GLAD_API_PTR *PFNGLCOLOR4SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR4UBPROC)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +typedef void (GLAD_API_PTR *PFNGLCOLOR4UBVPROC)(const GLubyte * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR4UIPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha); +typedef void (GLAD_API_PTR *PFNGLCOLOR4UIVPROC)(const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLCOLOR4USPROC)(GLushort red, GLushort green, GLushort blue, GLushort alpha); +typedef void (GLAD_API_PTR *PFNGLCOLOR4USVPROC)(const GLushort * v); +typedef void (GLAD_API_PTR *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GLAD_API_PTR *PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (GLAD_API_PTR *PFNGLCOLORMATERIALPROC)(GLenum face, GLenum mode); +typedef void (GLAD_API_PTR *PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); +typedef void (GLAD_API_PTR *PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint * color); +typedef void (GLAD_API_PTR *PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); +typedef void (GLAD_API_PTR *PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint * color); +typedef void (GLAD_API_PTR *PFNGLCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLCOMPILESHADERPROC)(GLuint shader); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (GLAD_API_PTR *PFNGLCOPYPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GLAD_API_PTR *PFNGLCREATEPROGRAMPROC)(void); +typedef GLuint (GLAD_API_PTR *PFNGLCREATESHADERPROC)(GLenum type); +typedef void (GLAD_API_PTR *PFNGLCULLFACEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void * userParam); +typedef void (GLAD_API_PTR *PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); +typedef void (GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); +typedef void (GLAD_API_PTR *PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint * framebuffers); +typedef void (GLAD_API_PTR *PFNGLDELETELISTSPROC)(GLuint list, GLsizei range); +typedef void (GLAD_API_PTR *PFNGLDELETEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint * ids); +typedef void (GLAD_API_PTR *PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint * renderbuffers); +typedef void (GLAD_API_PTR *PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint * samplers); +typedef void (GLAD_API_PTR *PFNGLDELETESHADERPROC)(GLuint shader); +typedef void (GLAD_API_PTR *PFNGLDELETESYNCPROC)(GLsync sync); +typedef void (GLAD_API_PTR *PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint * arrays); +typedef void (GLAD_API_PTR *PFNGLDEPTHFUNCPROC)(GLenum func); +typedef void (GLAD_API_PTR *PFNGLDEPTHMASKPROC)(GLboolean flag); +typedef void (GLAD_API_PTR *PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); +typedef void (GLAD_API_PTR *PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +typedef void (GLAD_API_PTR *PFNGLDISABLEPROC)(GLenum cap); +typedef void (GLAD_API_PTR *PFNGLDISABLECLIENTSTATEPROC)(GLenum array); +typedef void (GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLDISABLEIPROC)(GLenum target, GLuint index); +typedef void (GLAD_API_PTR *PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +typedef void (GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +typedef void (GLAD_API_PTR *PFNGLDRAWBUFFERPROC)(GLenum buf); +typedef void (GLAD_API_PTR *PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum * bufs); +typedef void (GLAD_API_PTR *PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices); +typedef void (GLAD_API_PTR *PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex); +typedef void (GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount); +typedef void (GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex); +typedef void (GLAD_API_PTR *PFNGLDRAWPIXELSPROC)(GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices); +typedef void (GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex); +typedef void (GLAD_API_PTR *PFNGLEDGEFLAGPROC)(GLboolean flag); +typedef void (GLAD_API_PTR *PFNGLEDGEFLAGPOINTERPROC)(GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLEDGEFLAGVPROC)(const GLboolean * flag); +typedef void (GLAD_API_PTR *PFNGLENABLEPROC)(GLenum cap); +typedef void (GLAD_API_PTR *PFNGLENABLECLIENTSTATEPROC)(GLenum array); +typedef void (GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLENABLEIPROC)(GLenum target, GLuint index); +typedef void (GLAD_API_PTR *PFNGLENDPROC)(void); +typedef void (GLAD_API_PTR *PFNGLENDCONDITIONALRENDERPROC)(void); +typedef void (GLAD_API_PTR *PFNGLENDLISTPROC)(void); +typedef void (GLAD_API_PTR *PFNGLENDQUERYPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKPROC)(void); +typedef void (GLAD_API_PTR *PFNGLEVALCOORD1DPROC)(GLdouble u); +typedef void (GLAD_API_PTR *PFNGLEVALCOORD1DVPROC)(const GLdouble * u); +typedef void (GLAD_API_PTR *PFNGLEVALCOORD1FPROC)(GLfloat u); +typedef void (GLAD_API_PTR *PFNGLEVALCOORD1FVPROC)(const GLfloat * u); +typedef void (GLAD_API_PTR *PFNGLEVALCOORD2DPROC)(GLdouble u, GLdouble v); +typedef void (GLAD_API_PTR *PFNGLEVALCOORD2DVPROC)(const GLdouble * u); +typedef void (GLAD_API_PTR *PFNGLEVALCOORD2FPROC)(GLfloat u, GLfloat v); +typedef void (GLAD_API_PTR *PFNGLEVALCOORD2FVPROC)(const GLfloat * u); +typedef void (GLAD_API_PTR *PFNGLEVALMESH1PROC)(GLenum mode, GLint i1, GLint i2); +typedef void (GLAD_API_PTR *PFNGLEVALMESH2PROC)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); +typedef void (GLAD_API_PTR *PFNGLEVALPOINT1PROC)(GLint i); +typedef void (GLAD_API_PTR *PFNGLEVALPOINT2PROC)(GLint i, GLint j); +typedef void (GLAD_API_PTR *PFNGLFEEDBACKBUFFERPROC)(GLsizei size, GLenum type, GLfloat * buffer); +typedef GLsync (GLAD_API_PTR *PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +typedef void (GLAD_API_PTR *PFNGLFINISHPROC)(void); +typedef void (GLAD_API_PTR *PFNGLFLUSHPROC)(void); +typedef void (GLAD_API_PTR *PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); +typedef void (GLAD_API_PTR *PFNGLFOGCOORDPOINTERPROC)(GLenum type, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLFOGCOORDDPROC)(GLdouble coord); +typedef void (GLAD_API_PTR *PFNGLFOGCOORDDVPROC)(const GLdouble * coord); +typedef void (GLAD_API_PTR *PFNGLFOGCOORDFPROC)(GLfloat coord); +typedef void (GLAD_API_PTR *PFNGLFOGCOORDFVPROC)(const GLfloat * coord); +typedef void (GLAD_API_PTR *PFNGLFOGFPROC)(GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLFOGFVPROC)(GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLFOGIPROC)(GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLFOGIVPROC)(GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAD_API_PTR *PFNGLFRONTFACEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLFRUSTUMPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GLAD_API_PTR *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers); +typedef GLuint (GLAD_API_PTR *PFNGLGENLISTSPROC)(GLsizei range); +typedef void (GLAD_API_PTR *PFNGLGENQUERIESPROC)(GLsizei n, GLuint * ids); +typedef void (GLAD_API_PTR *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint * renderbuffers); +typedef void (GLAD_API_PTR *PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint * samplers); +typedef void (GLAD_API_PTR *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint * arrays); +typedef void (GLAD_API_PTR *PFNGLGENERATEMIPMAPPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders); +typedef GLint (GLAD_API_PTR *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean * data); +typedef void (GLAD_API_PTR *PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean * data); +typedef void (GLAD_API_PTR *PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 * params); +typedef void (GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void ** params); +typedef void (GLAD_API_PTR *PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void * data); +typedef void (GLAD_API_PTR *PFNGLGETCLIPPLANEPROC)(GLenum plane, GLdouble * equation); +typedef void (GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void * img); +typedef GLuint (GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); +typedef void (GLAD_API_PTR *PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble * data); +typedef GLenum (GLAD_API_PTR *PFNGLGETERRORPROC)(void); +typedef void (GLAD_API_PTR *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat * data); +typedef GLint (GLAD_API_PTR *PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar * name); +typedef GLint (GLAD_API_PTR *PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint * params); +typedef GLenum (GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void); +typedef void (GLAD_API_PTR *PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 * data); +typedef void (GLAD_API_PTR *PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 * data); +typedef void (GLAD_API_PTR *PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint * data); +typedef void (GLAD_API_PTR *PFNGLGETINTEGERVPROC)(GLenum pname, GLint * data); +typedef void (GLAD_API_PTR *PFNGLGETLIGHTFVPROC)(GLenum light, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETLIGHTIVPROC)(GLenum light, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETMAPDVPROC)(GLenum target, GLenum query, GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLGETMAPFVPROC)(GLenum target, GLenum query, GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLGETMAPIVPROC)(GLenum target, GLenum query, GLint * v); +typedef void (GLAD_API_PTR *PFNGLGETMATERIALFVPROC)(GLenum face, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETMATERIALIVPROC)(GLenum face, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat * val); +typedef void (GLAD_API_PTR *PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); +typedef void (GLAD_API_PTR *PFNGLGETOBJECTPTRLABELPROC)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); +typedef void (GLAD_API_PTR *PFNGLGETPIXELMAPFVPROC)(GLenum map, GLfloat * values); +typedef void (GLAD_API_PTR *PFNGLGETPIXELMAPUIVPROC)(GLenum map, GLuint * values); +typedef void (GLAD_API_PTR *PFNGLGETPIXELMAPUSVPROC)(GLenum map, GLushort * values); +typedef void (GLAD_API_PTR *PFNGLGETPOINTERVPROC)(GLenum pname, void ** params); +typedef void (GLAD_API_PTR *PFNGLGETPOLYGONSTIPPLEPROC)(GLubyte * mask); +typedef void (GLAD_API_PTR *PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); +typedef void (GLAD_API_PTR *PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 * params); +typedef void (GLAD_API_PTR *PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 * params); +typedef void (GLAD_API_PTR *PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); +typedef void (GLAD_API_PTR *PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source); +typedef void (GLAD_API_PTR *PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint * params); +typedef const GLubyte * (GLAD_API_PTR *PFNGLGETSTRINGPROC)(GLenum name); +typedef const GLubyte * (GLAD_API_PTR *PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); +typedef void (GLAD_API_PTR *PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei * length, GLint * values); +typedef void (GLAD_API_PTR *PFNGLGETTEXENVFVPROC)(GLenum target, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXENVIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXGENDVPROC)(GLenum coord, GLenum pname, GLdouble * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXGENFVPROC)(GLenum coord, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXGENIVPROC)(GLenum coord, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void * pixels); +typedef void (GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); +typedef GLuint (GLAD_API_PTR *PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar * uniformBlockName); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices); +typedef GLint (GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void ** pointer); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETNCOLORTABLEARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * table); +typedef void (GLAD_API_PTR *PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, GLsizei bufSize, void * img); +typedef void (GLAD_API_PTR *PFNGLGETNCONVOLUTIONFILTERARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * image); +typedef void (GLAD_API_PTR *PFNGLGETNHISTOGRAMARBPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values); +typedef void (GLAD_API_PTR *PFNGLGETNMAPDVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLGETNMAPFVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLGETNMAPIVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint * v); +typedef void (GLAD_API_PTR *PFNGLGETNMINMAXARBPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values); +typedef void (GLAD_API_PTR *PFNGLGETNPIXELMAPFVARBPROC)(GLenum map, GLsizei bufSize, GLfloat * values); +typedef void (GLAD_API_PTR *PFNGLGETNPIXELMAPUIVARBPROC)(GLenum map, GLsizei bufSize, GLuint * values); +typedef void (GLAD_API_PTR *PFNGLGETNPIXELMAPUSVARBPROC)(GLenum map, GLsizei bufSize, GLushort * values); +typedef void (GLAD_API_PTR *PFNGLGETNPOLYGONSTIPPLEARBPROC)(GLsizei bufSize, GLubyte * pattern); +typedef void (GLAD_API_PTR *PFNGLGETNSEPARABLEFILTERARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void * row, GLsizei columnBufSize, void * column, void * span); +typedef void (GLAD_API_PTR *PFNGLGETNTEXIMAGEARBPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * img); +typedef void (GLAD_API_PTR *PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble * params); +typedef void (GLAD_API_PTR *PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLHINTPROC)(GLenum target, GLenum mode); +typedef void (GLAD_API_PTR *PFNGLINDEXMASKPROC)(GLuint mask); +typedef void (GLAD_API_PTR *PFNGLINDEXPOINTERPROC)(GLenum type, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLINDEXDPROC)(GLdouble c); +typedef void (GLAD_API_PTR *PFNGLINDEXDVPROC)(const GLdouble * c); +typedef void (GLAD_API_PTR *PFNGLINDEXFPROC)(GLfloat c); +typedef void (GLAD_API_PTR *PFNGLINDEXFVPROC)(const GLfloat * c); +typedef void (GLAD_API_PTR *PFNGLINDEXIPROC)(GLint c); +typedef void (GLAD_API_PTR *PFNGLINDEXIVPROC)(const GLint * c); +typedef void (GLAD_API_PTR *PFNGLINDEXSPROC)(GLshort c); +typedef void (GLAD_API_PTR *PFNGLINDEXSVPROC)(const GLshort * c); +typedef void (GLAD_API_PTR *PFNGLINDEXUBPROC)(GLubyte c); +typedef void (GLAD_API_PTR *PFNGLINDEXUBVPROC)(const GLubyte * c); +typedef void (GLAD_API_PTR *PFNGLINITNAMESPROC)(void); +typedef void (GLAD_API_PTR *PFNGLINTERLEAVEDARRAYSPROC)(GLenum format, GLsizei stride, const void * pointer); +typedef GLboolean (GLAD_API_PTR *PFNGLISBUFFERPROC)(GLuint buffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISENABLEDPROC)(GLenum cap); +typedef GLboolean (GLAD_API_PTR *PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +typedef GLboolean (GLAD_API_PTR *PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISLISTPROC)(GLuint list); +typedef GLboolean (GLAD_API_PTR *PFNGLISPROGRAMPROC)(GLuint program); +typedef GLboolean (GLAD_API_PTR *PFNGLISQUERYPROC)(GLuint id); +typedef GLboolean (GLAD_API_PTR *PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISSAMPLERPROC)(GLuint sampler); +typedef GLboolean (GLAD_API_PTR *PFNGLISSHADERPROC)(GLuint shader); +typedef GLboolean (GLAD_API_PTR *PFNGLISSYNCPROC)(GLsync sync); +typedef GLboolean (GLAD_API_PTR *PFNGLISTEXTUREPROC)(GLuint texture); +typedef GLboolean (GLAD_API_PTR *PFNGLISVERTEXARRAYPROC)(GLuint array); +typedef void (GLAD_API_PTR *PFNGLLIGHTMODELFPROC)(GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLLIGHTMODELFVPROC)(GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLLIGHTMODELIPROC)(GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLLIGHTMODELIVPROC)(GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLLIGHTFPROC)(GLenum light, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLLIGHTFVPROC)(GLenum light, GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLLIGHTIPROC)(GLenum light, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLLIGHTIVPROC)(GLenum light, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLLINESTIPPLEPROC)(GLint factor, GLushort pattern); +typedef void (GLAD_API_PTR *PFNGLLINEWIDTHPROC)(GLfloat width); +typedef void (GLAD_API_PTR *PFNGLLINKPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLLISTBASEPROC)(GLuint base); +typedef void (GLAD_API_PTR *PFNGLLOADIDENTITYPROC)(void); +typedef void (GLAD_API_PTR *PFNGLLOADMATRIXDPROC)(const GLdouble * m); +typedef void (GLAD_API_PTR *PFNGLLOADMATRIXFPROC)(const GLfloat * m); +typedef void (GLAD_API_PTR *PFNGLLOADNAMEPROC)(GLuint name); +typedef void (GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXDPROC)(const GLdouble * m); +typedef void (GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXFPROC)(const GLfloat * m); +typedef void (GLAD_API_PTR *PFNGLLOGICOPPROC)(GLenum opcode); +typedef void (GLAD_API_PTR *PFNGLMAP1DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points); +typedef void (GLAD_API_PTR *PFNGLMAP1FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points); +typedef void (GLAD_API_PTR *PFNGLMAP2DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points); +typedef void (GLAD_API_PTR *PFNGLMAP2FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points); +typedef void * (GLAD_API_PTR *PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +typedef void * (GLAD_API_PTR *PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GLAD_API_PTR *PFNGLMAPGRID1DPROC)(GLint un, GLdouble u1, GLdouble u2); +typedef void (GLAD_API_PTR *PFNGLMAPGRID1FPROC)(GLint un, GLfloat u1, GLfloat u2); +typedef void (GLAD_API_PTR *PFNGLMAPGRID2DPROC)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); +typedef void (GLAD_API_PTR *PFNGLMAPGRID2FPROC)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); +typedef void (GLAD_API_PTR *PFNGLMATERIALFPROC)(GLenum face, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLMATERIALFVPROC)(GLenum face, GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLMATERIALIPROC)(GLenum face, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLMATERIALIVPROC)(GLenum face, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLMATRIXMODEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLMULTMATRIXDPROC)(const GLdouble * m); +typedef void (GLAD_API_PTR *PFNGLMULTMATRIXFPROC)(const GLfloat * m); +typedef void (GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXDPROC)(const GLdouble * m); +typedef void (GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXFPROC)(const GLfloat * m); +typedef void (GLAD_API_PTR *PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount); +typedef void (GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount); +typedef void (GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount, const GLint * basevertex); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD1DPROC)(GLenum target, GLdouble s); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD1DVPROC)(GLenum target, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD1FPROC)(GLenum target, GLfloat s); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD1FVPROC)(GLenum target, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD1IPROC)(GLenum target, GLint s); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD1IVPROC)(GLenum target, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD1SPROC)(GLenum target, GLshort s); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD1SVPROC)(GLenum target, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD2DPROC)(GLenum target, GLdouble s, GLdouble t); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD2DVPROC)(GLenum target, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD2FPROC)(GLenum target, GLfloat s, GLfloat t); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD2FVPROC)(GLenum target, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD2IPROC)(GLenum target, GLint s, GLint t); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD2IVPROC)(GLenum target, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD2SPROC)(GLenum target, GLshort s, GLshort t); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD2SVPROC)(GLenum target, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD3DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD3DVPROC)(GLenum target, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD3FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD3FVPROC)(GLenum target, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD3IPROC)(GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD3IVPROC)(GLenum target, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD3SPROC)(GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD3SVPROC)(GLenum target, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD4DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD4DVPROC)(GLenum target, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD4FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD4FVPROC)(GLenum target, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD4IPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD4IVPROC)(GLenum target, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD4SPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORD4SVPROC)(GLenum target, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLNEWLISTPROC)(GLuint list, GLenum mode); +typedef void (GLAD_API_PTR *PFNGLNORMAL3BPROC)(GLbyte nx, GLbyte ny, GLbyte nz); +typedef void (GLAD_API_PTR *PFNGLNORMAL3BVPROC)(const GLbyte * v); +typedef void (GLAD_API_PTR *PFNGLNORMAL3DPROC)(GLdouble nx, GLdouble ny, GLdouble nz); +typedef void (GLAD_API_PTR *PFNGLNORMAL3DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLNORMAL3FPROC)(GLfloat nx, GLfloat ny, GLfloat nz); +typedef void (GLAD_API_PTR *PFNGLNORMAL3FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLNORMAL3IPROC)(GLint nx, GLint ny, GLint nz); +typedef void (GLAD_API_PTR *PFNGLNORMAL3IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLNORMAL3SPROC)(GLshort nx, GLshort ny, GLshort nz); +typedef void (GLAD_API_PTR *PFNGLNORMAL3SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLNORMALPOINTERPROC)(GLenum type, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label); +typedef void (GLAD_API_PTR *PFNGLOBJECTPTRLABELPROC)(const void * ptr, GLsizei length, const GLchar * label); +typedef void (GLAD_API_PTR *PFNGLORTHOPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GLAD_API_PTR *PFNGLPASSTHROUGHPROC)(GLfloat token); +typedef void (GLAD_API_PTR *PFNGLPIXELMAPFVPROC)(GLenum map, GLsizei mapsize, const GLfloat * values); +typedef void (GLAD_API_PTR *PFNGLPIXELMAPUIVPROC)(GLenum map, GLsizei mapsize, const GLuint * values); +typedef void (GLAD_API_PTR *PFNGLPIXELMAPUSVPROC)(GLenum map, GLsizei mapsize, const GLushort * values); +typedef void (GLAD_API_PTR *PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLPIXELTRANSFERFPROC)(GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLPIXELTRANSFERIPROC)(GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLPIXELZOOMPROC)(GLfloat xfactor, GLfloat yfactor); +typedef void (GLAD_API_PTR *PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLPOINTSIZEPROC)(GLfloat size); +typedef void (GLAD_API_PTR *PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); +typedef void (GLAD_API_PTR *PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +typedef void (GLAD_API_PTR *PFNGLPOLYGONSTIPPLEPROC)(const GLubyte * mask); +typedef void (GLAD_API_PTR *PFNGLPOPATTRIBPROC)(void); +typedef void (GLAD_API_PTR *PFNGLPOPCLIENTATTRIBPROC)(void); +typedef void (GLAD_API_PTR *PFNGLPOPDEBUGGROUPPROC)(void); +typedef void (GLAD_API_PTR *PFNGLPOPMATRIXPROC)(void); +typedef void (GLAD_API_PTR *PFNGLPOPNAMEPROC)(void); +typedef void (GLAD_API_PTR *PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLPRIORITIZETEXTURESPROC)(GLsizei n, const GLuint * textures, const GLfloat * priorities); +typedef void (GLAD_API_PTR *PFNGLPROVOKINGVERTEXPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLPUSHATTRIBPROC)(GLbitfield mask); +typedef void (GLAD_API_PTR *PFNGLPUSHCLIENTATTRIBPROC)(GLbitfield mask); +typedef void (GLAD_API_PTR *PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar * message); +typedef void (GLAD_API_PTR *PFNGLPUSHMATRIXPROC)(void); +typedef void (GLAD_API_PTR *PFNGLPUSHNAMEPROC)(GLuint name); +typedef void (GLAD_API_PTR *PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS2DPROC)(GLdouble x, GLdouble y); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS2DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS2FPROC)(GLfloat x, GLfloat y); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS2FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS2IPROC)(GLint x, GLint y); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS2IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS2SPROC)(GLshort x, GLshort y); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS2SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS3DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS3FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS3IPROC)(GLint x, GLint y, GLint z); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS3IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS3SPROC)(GLshort x, GLshort y, GLshort z); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS3SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS4DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS4FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS4IPROC)(GLint x, GLint y, GLint z, GLint w); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS4IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAD_API_PTR *PFNGLRASTERPOS4SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLREADBUFFERPROC)(GLenum src); +typedef void (GLAD_API_PTR *PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels); +typedef void (GLAD_API_PTR *PFNGLREADNPIXELSARBPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data); +typedef void (GLAD_API_PTR *PFNGLRECTDPROC)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); +typedef void (GLAD_API_PTR *PFNGLRECTDVPROC)(const GLdouble * v1, const GLdouble * v2); +typedef void (GLAD_API_PTR *PFNGLRECTFPROC)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); +typedef void (GLAD_API_PTR *PFNGLRECTFVPROC)(const GLfloat * v1, const GLfloat * v2); +typedef void (GLAD_API_PTR *PFNGLRECTIPROC)(GLint x1, GLint y1, GLint x2, GLint y2); +typedef void (GLAD_API_PTR *PFNGLRECTIVPROC)(const GLint * v1, const GLint * v2); +typedef void (GLAD_API_PTR *PFNGLRECTSPROC)(GLshort x1, GLshort y1, GLshort x2, GLshort y2); +typedef void (GLAD_API_PTR *PFNGLRECTSVPROC)(const GLshort * v1, const GLshort * v2); +typedef GLint (GLAD_API_PTR *PFNGLRENDERMODEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLROTATEDPROC)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLROTATEFPROC)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +typedef void (GLAD_API_PTR *PFNGLSAMPLECOVERAGEARBPROC)(GLfloat value, GLboolean invert); +typedef void (GLAD_API_PTR *PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +typedef void (GLAD_API_PTR *PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint * param); +typedef void (GLAD_API_PTR *PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint * param); +typedef void (GLAD_API_PTR *PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat * param); +typedef void (GLAD_API_PTR *PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint * param); +typedef void (GLAD_API_PTR *PFNGLSCALEDPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLSCALEFPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3BVPROC)(const GLbyte * v); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3IPROC)(GLint red, GLint green, GLint blue); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3UBVPROC)(const GLubyte * v); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3UIVPROC)(const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLOR3USVPROC)(const GLushort * v); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint * color); +typedef void (GLAD_API_PTR *PFNGLSECONDARYCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLSELECTBUFFERPROC)(GLsizei size, GLuint * buffer); +typedef void (GLAD_API_PTR *PFNGLSHADEMODELPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length); +typedef void (GLAD_API_PTR *PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILMASKPROC)(GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GLAD_API_PTR *PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GLAD_API_PTR *PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD1DPROC)(GLdouble s); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD1DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD1FPROC)(GLfloat s); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD1FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD1IPROC)(GLint s); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD1IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD1SPROC)(GLshort s); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD1SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD2DPROC)(GLdouble s, GLdouble t); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD2DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD2FPROC)(GLfloat s, GLfloat t); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD2FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD2IPROC)(GLint s, GLint t); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD2IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD2SPROC)(GLshort s, GLshort t); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD2SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD3DPROC)(GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD3DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD3FPROC)(GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD3FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD3IPROC)(GLint s, GLint t, GLint r); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD3IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD3SPROC)(GLshort s, GLshort t, GLshort r); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD3SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD4DPROC)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD4DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD4FPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD4FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD4IPROC)(GLint s, GLint t, GLint r, GLint q); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD4IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD4SPROC)(GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAD_API_PTR *PFNGLTEXCOORD4SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint * coords); +typedef void (GLAD_API_PTR *PFNGLTEXCOORDPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLTEXENVFPROC)(GLenum target, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLTEXENVFVPROC)(GLenum target, GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLTEXENVIPROC)(GLenum target, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLTEXENVIVPROC)(GLenum target, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLTEXGENDPROC)(GLenum coord, GLenum pname, GLdouble param); +typedef void (GLAD_API_PTR *PFNGLTEXGENDVPROC)(GLenum coord, GLenum pname, const GLdouble * params); +typedef void (GLAD_API_PTR *PFNGLTEXGENFPROC)(GLenum coord, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLTEXGENFVPROC)(GLenum coord, GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLTEXGENIPROC)(GLenum coord, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLTEXGENIVPROC)(GLenum coord, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAD_API_PTR *PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint * params); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode); +typedef void (GLAD_API_PTR *PFNGLTRANSLATEDPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLTRANSLATEFPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef GLboolean (GLAD_API_PTR *PFNGLUNMAPBUFFERPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLUSEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLVALIDATEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLVERTEX2DPROC)(GLdouble x, GLdouble y); +typedef void (GLAD_API_PTR *PFNGLVERTEX2DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX2FPROC)(GLfloat x, GLfloat y); +typedef void (GLAD_API_PTR *PFNGLVERTEX2FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX2IPROC)(GLint x, GLint y); +typedef void (GLAD_API_PTR *PFNGLVERTEX2IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX2SPROC)(GLshort x, GLshort y); +typedef void (GLAD_API_PTR *PFNGLVERTEX2SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX3DPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLVERTEX3DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX3FPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLVERTEX3FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX3IPROC)(GLint x, GLint y, GLint z); +typedef void (GLAD_API_PTR *PFNGLVERTEX3IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX3SPROC)(GLshort x, GLshort y, GLshort z); +typedef void (GLAD_API_PTR *PFNGLVERTEX3SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAD_API_PTR *PFNGLVERTEX4DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAD_API_PTR *PFNGLVERTEX4FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX4IPROC)(GLint x, GLint y, GLint z, GLint w); +typedef void (GLAD_API_PTR *PFNGLVERTEX4IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEX4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAD_API_PTR *PFNGLVERTEX4SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); +typedef void (GLAD_API_PTR *PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); +typedef void (GLAD_API_PTR *PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); +typedef void (GLAD_API_PTR *PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLVERTEXPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS2DPROC)(GLdouble x, GLdouble y); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS2DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS2FPROC)(GLfloat x, GLfloat y); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS2FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS2IPROC)(GLint x, GLint y); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS2IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS2SPROC)(GLshort x, GLshort y); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS2SVPROC)(const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS3DVPROC)(const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS3FVPROC)(const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS3IPROC)(GLint x, GLint y, GLint z); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS3IVPROC)(const GLint * v); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS3SPROC)(GLshort x, GLshort y, GLshort z); +typedef void (GLAD_API_PTR *PFNGLWINDOWPOS3SVPROC)(const GLshort * v); + +GLAD_API_CALL PFNGLACCUMPROC glad_glAccum; +#define glAccum glad_glAccum +GLAD_API_CALL PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +#define glActiveTexture glad_glActiveTexture +GLAD_API_CALL PFNGLALPHAFUNCPROC glad_glAlphaFunc; +#define glAlphaFunc glad_glAlphaFunc +GLAD_API_CALL PFNGLARETEXTURESRESIDENTPROC glad_glAreTexturesResident; +#define glAreTexturesResident glad_glAreTexturesResident +GLAD_API_CALL PFNGLARRAYELEMENTPROC glad_glArrayElement; +#define glArrayElement glad_glArrayElement +GLAD_API_CALL PFNGLATTACHSHADERPROC glad_glAttachShader; +#define glAttachShader glad_glAttachShader +GLAD_API_CALL PFNGLBEGINPROC glad_glBegin; +#define glBegin glad_glBegin +GLAD_API_CALL PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +#define glBeginConditionalRender glad_glBeginConditionalRender +GLAD_API_CALL PFNGLBEGINQUERYPROC glad_glBeginQuery; +#define glBeginQuery glad_glBeginQuery +GLAD_API_CALL PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +#define glBeginTransformFeedback glad_glBeginTransformFeedback +GLAD_API_CALL PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +#define glBindAttribLocation glad_glBindAttribLocation +GLAD_API_CALL PFNGLBINDBUFFERPROC glad_glBindBuffer; +#define glBindBuffer glad_glBindBuffer +GLAD_API_CALL PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +#define glBindBufferBase glad_glBindBufferBase +GLAD_API_CALL PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +#define glBindBufferRange glad_glBindBufferRange +GLAD_API_CALL PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +#define glBindFragDataLocation glad_glBindFragDataLocation +GLAD_API_CALL PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; +#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed +GLAD_API_CALL PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +#define glBindFramebuffer glad_glBindFramebuffer +GLAD_API_CALL PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +#define glBindRenderbuffer glad_glBindRenderbuffer +GLAD_API_CALL PFNGLBINDSAMPLERPROC glad_glBindSampler; +#define glBindSampler glad_glBindSampler +GLAD_API_CALL PFNGLBINDTEXTUREPROC glad_glBindTexture; +#define glBindTexture glad_glBindTexture +GLAD_API_CALL PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +#define glBindVertexArray glad_glBindVertexArray +GLAD_API_CALL PFNGLBITMAPPROC glad_glBitmap; +#define glBitmap glad_glBitmap +GLAD_API_CALL PFNGLBLENDCOLORPROC glad_glBlendColor; +#define glBlendColor glad_glBlendColor +GLAD_API_CALL PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +#define glBlendEquation glad_glBlendEquation +GLAD_API_CALL PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +#define glBlendEquationSeparate glad_glBlendEquationSeparate +GLAD_API_CALL PFNGLBLENDFUNCPROC glad_glBlendFunc; +#define glBlendFunc glad_glBlendFunc +GLAD_API_CALL PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +#define glBlendFuncSeparate glad_glBlendFuncSeparate +GLAD_API_CALL PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +#define glBlitFramebuffer glad_glBlitFramebuffer +GLAD_API_CALL PFNGLBUFFERDATAPROC glad_glBufferData; +#define glBufferData glad_glBufferData +GLAD_API_CALL PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +#define glBufferSubData glad_glBufferSubData +GLAD_API_CALL PFNGLCALLLISTPROC glad_glCallList; +#define glCallList glad_glCallList +GLAD_API_CALL PFNGLCALLLISTSPROC glad_glCallLists; +#define glCallLists glad_glCallLists +GLAD_API_CALL PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +#define glCheckFramebufferStatus glad_glCheckFramebufferStatus +GLAD_API_CALL PFNGLCLAMPCOLORPROC glad_glClampColor; +#define glClampColor glad_glClampColor +GLAD_API_CALL PFNGLCLEARPROC glad_glClear; +#define glClear glad_glClear +GLAD_API_CALL PFNGLCLEARACCUMPROC glad_glClearAccum; +#define glClearAccum glad_glClearAccum +GLAD_API_CALL PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +#define glClearBufferfi glad_glClearBufferfi +GLAD_API_CALL PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +#define glClearBufferfv glad_glClearBufferfv +GLAD_API_CALL PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +#define glClearBufferiv glad_glClearBufferiv +GLAD_API_CALL PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +#define glClearBufferuiv glad_glClearBufferuiv +GLAD_API_CALL PFNGLCLEARCOLORPROC glad_glClearColor; +#define glClearColor glad_glClearColor +GLAD_API_CALL PFNGLCLEARDEPTHPROC glad_glClearDepth; +#define glClearDepth glad_glClearDepth +GLAD_API_CALL PFNGLCLEARINDEXPROC glad_glClearIndex; +#define glClearIndex glad_glClearIndex +GLAD_API_CALL PFNGLCLEARSTENCILPROC glad_glClearStencil; +#define glClearStencil glad_glClearStencil +GLAD_API_CALL PFNGLCLIENTACTIVETEXTUREPROC glad_glClientActiveTexture; +#define glClientActiveTexture glad_glClientActiveTexture +GLAD_API_CALL PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +#define glClientWaitSync glad_glClientWaitSync +GLAD_API_CALL PFNGLCLIPPLANEPROC glad_glClipPlane; +#define glClipPlane glad_glClipPlane +GLAD_API_CALL PFNGLCOLOR3BPROC glad_glColor3b; +#define glColor3b glad_glColor3b +GLAD_API_CALL PFNGLCOLOR3BVPROC glad_glColor3bv; +#define glColor3bv glad_glColor3bv +GLAD_API_CALL PFNGLCOLOR3DPROC glad_glColor3d; +#define glColor3d glad_glColor3d +GLAD_API_CALL PFNGLCOLOR3DVPROC glad_glColor3dv; +#define glColor3dv glad_glColor3dv +GLAD_API_CALL PFNGLCOLOR3FPROC glad_glColor3f; +#define glColor3f glad_glColor3f +GLAD_API_CALL PFNGLCOLOR3FVPROC glad_glColor3fv; +#define glColor3fv glad_glColor3fv +GLAD_API_CALL PFNGLCOLOR3IPROC glad_glColor3i; +#define glColor3i glad_glColor3i +GLAD_API_CALL PFNGLCOLOR3IVPROC glad_glColor3iv; +#define glColor3iv glad_glColor3iv +GLAD_API_CALL PFNGLCOLOR3SPROC glad_glColor3s; +#define glColor3s glad_glColor3s +GLAD_API_CALL PFNGLCOLOR3SVPROC glad_glColor3sv; +#define glColor3sv glad_glColor3sv +GLAD_API_CALL PFNGLCOLOR3UBPROC glad_glColor3ub; +#define glColor3ub glad_glColor3ub +GLAD_API_CALL PFNGLCOLOR3UBVPROC glad_glColor3ubv; +#define glColor3ubv glad_glColor3ubv +GLAD_API_CALL PFNGLCOLOR3UIPROC glad_glColor3ui; +#define glColor3ui glad_glColor3ui +GLAD_API_CALL PFNGLCOLOR3UIVPROC glad_glColor3uiv; +#define glColor3uiv glad_glColor3uiv +GLAD_API_CALL PFNGLCOLOR3USPROC glad_glColor3us; +#define glColor3us glad_glColor3us +GLAD_API_CALL PFNGLCOLOR3USVPROC glad_glColor3usv; +#define glColor3usv glad_glColor3usv +GLAD_API_CALL PFNGLCOLOR4BPROC glad_glColor4b; +#define glColor4b glad_glColor4b +GLAD_API_CALL PFNGLCOLOR4BVPROC glad_glColor4bv; +#define glColor4bv glad_glColor4bv +GLAD_API_CALL PFNGLCOLOR4DPROC glad_glColor4d; +#define glColor4d glad_glColor4d +GLAD_API_CALL PFNGLCOLOR4DVPROC glad_glColor4dv; +#define glColor4dv glad_glColor4dv +GLAD_API_CALL PFNGLCOLOR4FPROC glad_glColor4f; +#define glColor4f glad_glColor4f +GLAD_API_CALL PFNGLCOLOR4FVPROC glad_glColor4fv; +#define glColor4fv glad_glColor4fv +GLAD_API_CALL PFNGLCOLOR4IPROC glad_glColor4i; +#define glColor4i glad_glColor4i +GLAD_API_CALL PFNGLCOLOR4IVPROC glad_glColor4iv; +#define glColor4iv glad_glColor4iv +GLAD_API_CALL PFNGLCOLOR4SPROC glad_glColor4s; +#define glColor4s glad_glColor4s +GLAD_API_CALL PFNGLCOLOR4SVPROC glad_glColor4sv; +#define glColor4sv glad_glColor4sv +GLAD_API_CALL PFNGLCOLOR4UBPROC glad_glColor4ub; +#define glColor4ub glad_glColor4ub +GLAD_API_CALL PFNGLCOLOR4UBVPROC glad_glColor4ubv; +#define glColor4ubv glad_glColor4ubv +GLAD_API_CALL PFNGLCOLOR4UIPROC glad_glColor4ui; +#define glColor4ui glad_glColor4ui +GLAD_API_CALL PFNGLCOLOR4UIVPROC glad_glColor4uiv; +#define glColor4uiv glad_glColor4uiv +GLAD_API_CALL PFNGLCOLOR4USPROC glad_glColor4us; +#define glColor4us glad_glColor4us +GLAD_API_CALL PFNGLCOLOR4USVPROC glad_glColor4usv; +#define glColor4usv glad_glColor4usv +GLAD_API_CALL PFNGLCOLORMASKPROC glad_glColorMask; +#define glColorMask glad_glColorMask +GLAD_API_CALL PFNGLCOLORMASKIPROC glad_glColorMaski; +#define glColorMaski glad_glColorMaski +GLAD_API_CALL PFNGLCOLORMATERIALPROC glad_glColorMaterial; +#define glColorMaterial glad_glColorMaterial +GLAD_API_CALL PFNGLCOLORP3UIPROC glad_glColorP3ui; +#define glColorP3ui glad_glColorP3ui +GLAD_API_CALL PFNGLCOLORP3UIVPROC glad_glColorP3uiv; +#define glColorP3uiv glad_glColorP3uiv +GLAD_API_CALL PFNGLCOLORP4UIPROC glad_glColorP4ui; +#define glColorP4ui glad_glColorP4ui +GLAD_API_CALL PFNGLCOLORP4UIVPROC glad_glColorP4uiv; +#define glColorP4uiv glad_glColorP4uiv +GLAD_API_CALL PFNGLCOLORPOINTERPROC glad_glColorPointer; +#define glColorPointer glad_glColorPointer +GLAD_API_CALL PFNGLCOMPILESHADERPROC glad_glCompileShader; +#define glCompileShader glad_glCompileShader +GLAD_API_CALL PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +#define glCompressedTexImage1D glad_glCompressedTexImage1D +GLAD_API_CALL PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +#define glCompressedTexImage2D glad_glCompressedTexImage2D +GLAD_API_CALL PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +#define glCompressedTexImage3D glad_glCompressedTexImage3D +GLAD_API_CALL PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D +GLAD_API_CALL PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D +GLAD_API_CALL PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D +GLAD_API_CALL PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +#define glCopyBufferSubData glad_glCopyBufferSubData +GLAD_API_CALL PFNGLCOPYPIXELSPROC glad_glCopyPixels; +#define glCopyPixels glad_glCopyPixels +GLAD_API_CALL PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +#define glCopyTexImage1D glad_glCopyTexImage1D +GLAD_API_CALL PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +#define glCopyTexImage2D glad_glCopyTexImage2D +GLAD_API_CALL PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +#define glCopyTexSubImage1D glad_glCopyTexSubImage1D +GLAD_API_CALL PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +#define glCopyTexSubImage2D glad_glCopyTexSubImage2D +GLAD_API_CALL PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +#define glCopyTexSubImage3D glad_glCopyTexSubImage3D +GLAD_API_CALL PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +#define glCreateProgram glad_glCreateProgram +GLAD_API_CALL PFNGLCREATESHADERPROC glad_glCreateShader; +#define glCreateShader glad_glCreateShader +GLAD_API_CALL PFNGLCULLFACEPROC glad_glCullFace; +#define glCullFace glad_glCullFace +GLAD_API_CALL PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; +#define glDebugMessageCallback glad_glDebugMessageCallback +GLAD_API_CALL PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; +#define glDebugMessageControl glad_glDebugMessageControl +GLAD_API_CALL PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; +#define glDebugMessageInsert glad_glDebugMessageInsert +GLAD_API_CALL PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +#define glDeleteBuffers glad_glDeleteBuffers +GLAD_API_CALL PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +#define glDeleteFramebuffers glad_glDeleteFramebuffers +GLAD_API_CALL PFNGLDELETELISTSPROC glad_glDeleteLists; +#define glDeleteLists glad_glDeleteLists +GLAD_API_CALL PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +#define glDeleteProgram glad_glDeleteProgram +GLAD_API_CALL PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +#define glDeleteQueries glad_glDeleteQueries +GLAD_API_CALL PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +#define glDeleteRenderbuffers glad_glDeleteRenderbuffers +GLAD_API_CALL PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; +#define glDeleteSamplers glad_glDeleteSamplers +GLAD_API_CALL PFNGLDELETESHADERPROC glad_glDeleteShader; +#define glDeleteShader glad_glDeleteShader +GLAD_API_CALL PFNGLDELETESYNCPROC glad_glDeleteSync; +#define glDeleteSync glad_glDeleteSync +GLAD_API_CALL PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +#define glDeleteTextures glad_glDeleteTextures +GLAD_API_CALL PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +#define glDeleteVertexArrays glad_glDeleteVertexArrays +GLAD_API_CALL PFNGLDEPTHFUNCPROC glad_glDepthFunc; +#define glDepthFunc glad_glDepthFunc +GLAD_API_CALL PFNGLDEPTHMASKPROC glad_glDepthMask; +#define glDepthMask glad_glDepthMask +GLAD_API_CALL PFNGLDEPTHRANGEPROC glad_glDepthRange; +#define glDepthRange glad_glDepthRange +GLAD_API_CALL PFNGLDETACHSHADERPROC glad_glDetachShader; +#define glDetachShader glad_glDetachShader +GLAD_API_CALL PFNGLDISABLEPROC glad_glDisable; +#define glDisable glad_glDisable +GLAD_API_CALL PFNGLDISABLECLIENTSTATEPROC glad_glDisableClientState; +#define glDisableClientState glad_glDisableClientState +GLAD_API_CALL PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +#define glDisableVertexAttribArray glad_glDisableVertexAttribArray +GLAD_API_CALL PFNGLDISABLEIPROC glad_glDisablei; +#define glDisablei glad_glDisablei +GLAD_API_CALL PFNGLDRAWARRAYSPROC glad_glDrawArrays; +#define glDrawArrays glad_glDrawArrays +GLAD_API_CALL PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +#define glDrawArraysInstanced glad_glDrawArraysInstanced +GLAD_API_CALL PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +#define glDrawBuffer glad_glDrawBuffer +GLAD_API_CALL PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +#define glDrawBuffers glad_glDrawBuffers +GLAD_API_CALL PFNGLDRAWELEMENTSPROC glad_glDrawElements; +#define glDrawElements glad_glDrawElements +GLAD_API_CALL PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex +GLAD_API_CALL PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +#define glDrawElementsInstanced glad_glDrawElementsInstanced +GLAD_API_CALL PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex +GLAD_API_CALL PFNGLDRAWPIXELSPROC glad_glDrawPixels; +#define glDrawPixels glad_glDrawPixels +GLAD_API_CALL PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +#define glDrawRangeElements glad_glDrawRangeElements +GLAD_API_CALL PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex +GLAD_API_CALL PFNGLEDGEFLAGPROC glad_glEdgeFlag; +#define glEdgeFlag glad_glEdgeFlag +GLAD_API_CALL PFNGLEDGEFLAGPOINTERPROC glad_glEdgeFlagPointer; +#define glEdgeFlagPointer glad_glEdgeFlagPointer +GLAD_API_CALL PFNGLEDGEFLAGVPROC glad_glEdgeFlagv; +#define glEdgeFlagv glad_glEdgeFlagv +GLAD_API_CALL PFNGLENABLEPROC glad_glEnable; +#define glEnable glad_glEnable +GLAD_API_CALL PFNGLENABLECLIENTSTATEPROC glad_glEnableClientState; +#define glEnableClientState glad_glEnableClientState +GLAD_API_CALL PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +#define glEnableVertexAttribArray glad_glEnableVertexAttribArray +GLAD_API_CALL PFNGLENABLEIPROC glad_glEnablei; +#define glEnablei glad_glEnablei +GLAD_API_CALL PFNGLENDPROC glad_glEnd; +#define glEnd glad_glEnd +GLAD_API_CALL PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +#define glEndConditionalRender glad_glEndConditionalRender +GLAD_API_CALL PFNGLENDLISTPROC glad_glEndList; +#define glEndList glad_glEndList +GLAD_API_CALL PFNGLENDQUERYPROC glad_glEndQuery; +#define glEndQuery glad_glEndQuery +GLAD_API_CALL PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +#define glEndTransformFeedback glad_glEndTransformFeedback +GLAD_API_CALL PFNGLEVALCOORD1DPROC glad_glEvalCoord1d; +#define glEvalCoord1d glad_glEvalCoord1d +GLAD_API_CALL PFNGLEVALCOORD1DVPROC glad_glEvalCoord1dv; +#define glEvalCoord1dv glad_glEvalCoord1dv +GLAD_API_CALL PFNGLEVALCOORD1FPROC glad_glEvalCoord1f; +#define glEvalCoord1f glad_glEvalCoord1f +GLAD_API_CALL PFNGLEVALCOORD1FVPROC glad_glEvalCoord1fv; +#define glEvalCoord1fv glad_glEvalCoord1fv +GLAD_API_CALL PFNGLEVALCOORD2DPROC glad_glEvalCoord2d; +#define glEvalCoord2d glad_glEvalCoord2d +GLAD_API_CALL PFNGLEVALCOORD2DVPROC glad_glEvalCoord2dv; +#define glEvalCoord2dv glad_glEvalCoord2dv +GLAD_API_CALL PFNGLEVALCOORD2FPROC glad_glEvalCoord2f; +#define glEvalCoord2f glad_glEvalCoord2f +GLAD_API_CALL PFNGLEVALCOORD2FVPROC glad_glEvalCoord2fv; +#define glEvalCoord2fv glad_glEvalCoord2fv +GLAD_API_CALL PFNGLEVALMESH1PROC glad_glEvalMesh1; +#define glEvalMesh1 glad_glEvalMesh1 +GLAD_API_CALL PFNGLEVALMESH2PROC glad_glEvalMesh2; +#define glEvalMesh2 glad_glEvalMesh2 +GLAD_API_CALL PFNGLEVALPOINT1PROC glad_glEvalPoint1; +#define glEvalPoint1 glad_glEvalPoint1 +GLAD_API_CALL PFNGLEVALPOINT2PROC glad_glEvalPoint2; +#define glEvalPoint2 glad_glEvalPoint2 +GLAD_API_CALL PFNGLFEEDBACKBUFFERPROC glad_glFeedbackBuffer; +#define glFeedbackBuffer glad_glFeedbackBuffer +GLAD_API_CALL PFNGLFENCESYNCPROC glad_glFenceSync; +#define glFenceSync glad_glFenceSync +GLAD_API_CALL PFNGLFINISHPROC glad_glFinish; +#define glFinish glad_glFinish +GLAD_API_CALL PFNGLFLUSHPROC glad_glFlush; +#define glFlush glad_glFlush +GLAD_API_CALL PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +#define glFlushMappedBufferRange glad_glFlushMappedBufferRange +GLAD_API_CALL PFNGLFOGCOORDPOINTERPROC glad_glFogCoordPointer; +#define glFogCoordPointer glad_glFogCoordPointer +GLAD_API_CALL PFNGLFOGCOORDDPROC glad_glFogCoordd; +#define glFogCoordd glad_glFogCoordd +GLAD_API_CALL PFNGLFOGCOORDDVPROC glad_glFogCoorddv; +#define glFogCoorddv glad_glFogCoorddv +GLAD_API_CALL PFNGLFOGCOORDFPROC glad_glFogCoordf; +#define glFogCoordf glad_glFogCoordf +GLAD_API_CALL PFNGLFOGCOORDFVPROC glad_glFogCoordfv; +#define glFogCoordfv glad_glFogCoordfv +GLAD_API_CALL PFNGLFOGFPROC glad_glFogf; +#define glFogf glad_glFogf +GLAD_API_CALL PFNGLFOGFVPROC glad_glFogfv; +#define glFogfv glad_glFogfv +GLAD_API_CALL PFNGLFOGIPROC glad_glFogi; +#define glFogi glad_glFogi +GLAD_API_CALL PFNGLFOGIVPROC glad_glFogiv; +#define glFogiv glad_glFogiv +GLAD_API_CALL PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer +GLAD_API_CALL PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +#define glFramebufferTexture glad_glFramebufferTexture +GLAD_API_CALL PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +#define glFramebufferTexture1D glad_glFramebufferTexture1D +GLAD_API_CALL PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +#define glFramebufferTexture2D glad_glFramebufferTexture2D +GLAD_API_CALL PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +#define glFramebufferTexture3D glad_glFramebufferTexture3D +GLAD_API_CALL PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +#define glFramebufferTextureLayer glad_glFramebufferTextureLayer +GLAD_API_CALL PFNGLFRONTFACEPROC glad_glFrontFace; +#define glFrontFace glad_glFrontFace +GLAD_API_CALL PFNGLFRUSTUMPROC glad_glFrustum; +#define glFrustum glad_glFrustum +GLAD_API_CALL PFNGLGENBUFFERSPROC glad_glGenBuffers; +#define glGenBuffers glad_glGenBuffers +GLAD_API_CALL PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +#define glGenFramebuffers glad_glGenFramebuffers +GLAD_API_CALL PFNGLGENLISTSPROC glad_glGenLists; +#define glGenLists glad_glGenLists +GLAD_API_CALL PFNGLGENQUERIESPROC glad_glGenQueries; +#define glGenQueries glad_glGenQueries +GLAD_API_CALL PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +#define glGenRenderbuffers glad_glGenRenderbuffers +GLAD_API_CALL PFNGLGENSAMPLERSPROC glad_glGenSamplers; +#define glGenSamplers glad_glGenSamplers +GLAD_API_CALL PFNGLGENTEXTURESPROC glad_glGenTextures; +#define glGenTextures glad_glGenTextures +GLAD_API_CALL PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +#define glGenVertexArrays glad_glGenVertexArrays +GLAD_API_CALL PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +#define glGenerateMipmap glad_glGenerateMipmap +GLAD_API_CALL PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +#define glGetActiveAttrib glad_glGetActiveAttrib +GLAD_API_CALL PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +#define glGetActiveUniform glad_glGetActiveUniform +GLAD_API_CALL PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName +GLAD_API_CALL PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv +GLAD_API_CALL PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +#define glGetActiveUniformName glad_glGetActiveUniformName +GLAD_API_CALL PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +#define glGetActiveUniformsiv glad_glGetActiveUniformsiv +GLAD_API_CALL PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +#define glGetAttachedShaders glad_glGetAttachedShaders +GLAD_API_CALL PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +#define glGetAttribLocation glad_glGetAttribLocation +GLAD_API_CALL PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +#define glGetBooleani_v glad_glGetBooleani_v +GLAD_API_CALL PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +#define glGetBooleanv glad_glGetBooleanv +GLAD_API_CALL PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +#define glGetBufferParameteri64v glad_glGetBufferParameteri64v +GLAD_API_CALL PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +#define glGetBufferParameteriv glad_glGetBufferParameteriv +GLAD_API_CALL PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +#define glGetBufferPointerv glad_glGetBufferPointerv +GLAD_API_CALL PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +#define glGetBufferSubData glad_glGetBufferSubData +GLAD_API_CALL PFNGLGETCLIPPLANEPROC glad_glGetClipPlane; +#define glGetClipPlane glad_glGetClipPlane +GLAD_API_CALL PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +#define glGetCompressedTexImage glad_glGetCompressedTexImage +GLAD_API_CALL PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; +#define glGetDebugMessageLog glad_glGetDebugMessageLog +GLAD_API_CALL PFNGLGETDOUBLEVPROC glad_glGetDoublev; +#define glGetDoublev glad_glGetDoublev +GLAD_API_CALL PFNGLGETERRORPROC glad_glGetError; +#define glGetError glad_glGetError +GLAD_API_CALL PFNGLGETFLOATVPROC glad_glGetFloatv; +#define glGetFloatv glad_glGetFloatv +GLAD_API_CALL PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; +#define glGetFragDataIndex glad_glGetFragDataIndex +GLAD_API_CALL PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +#define glGetFragDataLocation glad_glGetFragDataLocation +GLAD_API_CALL PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv +GLAD_API_CALL PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB; +#define glGetGraphicsResetStatusARB glad_glGetGraphicsResetStatusARB +GLAD_API_CALL PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +#define glGetInteger64i_v glad_glGetInteger64i_v +GLAD_API_CALL PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +#define glGetInteger64v glad_glGetInteger64v +GLAD_API_CALL PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +#define glGetIntegeri_v glad_glGetIntegeri_v +GLAD_API_CALL PFNGLGETINTEGERVPROC glad_glGetIntegerv; +#define glGetIntegerv glad_glGetIntegerv +GLAD_API_CALL PFNGLGETLIGHTFVPROC glad_glGetLightfv; +#define glGetLightfv glad_glGetLightfv +GLAD_API_CALL PFNGLGETLIGHTIVPROC glad_glGetLightiv; +#define glGetLightiv glad_glGetLightiv +GLAD_API_CALL PFNGLGETMAPDVPROC glad_glGetMapdv; +#define glGetMapdv glad_glGetMapdv +GLAD_API_CALL PFNGLGETMAPFVPROC glad_glGetMapfv; +#define glGetMapfv glad_glGetMapfv +GLAD_API_CALL PFNGLGETMAPIVPROC glad_glGetMapiv; +#define glGetMapiv glad_glGetMapiv +GLAD_API_CALL PFNGLGETMATERIALFVPROC glad_glGetMaterialfv; +#define glGetMaterialfv glad_glGetMaterialfv +GLAD_API_CALL PFNGLGETMATERIALIVPROC glad_glGetMaterialiv; +#define glGetMaterialiv glad_glGetMaterialiv +GLAD_API_CALL PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +#define glGetMultisamplefv glad_glGetMultisamplefv +GLAD_API_CALL PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; +#define glGetObjectLabel glad_glGetObjectLabel +GLAD_API_CALL PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; +#define glGetObjectPtrLabel glad_glGetObjectPtrLabel +GLAD_API_CALL PFNGLGETPIXELMAPFVPROC glad_glGetPixelMapfv; +#define glGetPixelMapfv glad_glGetPixelMapfv +GLAD_API_CALL PFNGLGETPIXELMAPUIVPROC glad_glGetPixelMapuiv; +#define glGetPixelMapuiv glad_glGetPixelMapuiv +GLAD_API_CALL PFNGLGETPIXELMAPUSVPROC glad_glGetPixelMapusv; +#define glGetPixelMapusv glad_glGetPixelMapusv +GLAD_API_CALL PFNGLGETPOINTERVPROC glad_glGetPointerv; +#define glGetPointerv glad_glGetPointerv +GLAD_API_CALL PFNGLGETPOLYGONSTIPPLEPROC glad_glGetPolygonStipple; +#define glGetPolygonStipple glad_glGetPolygonStipple +GLAD_API_CALL PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +#define glGetProgramInfoLog glad_glGetProgramInfoLog +GLAD_API_CALL PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +#define glGetProgramiv glad_glGetProgramiv +GLAD_API_CALL PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; +#define glGetQueryObjecti64v glad_glGetQueryObjecti64v +GLAD_API_CALL PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +#define glGetQueryObjectiv glad_glGetQueryObjectiv +GLAD_API_CALL PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; +#define glGetQueryObjectui64v glad_glGetQueryObjectui64v +GLAD_API_CALL PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +#define glGetQueryObjectuiv glad_glGetQueryObjectuiv +GLAD_API_CALL PFNGLGETQUERYIVPROC glad_glGetQueryiv; +#define glGetQueryiv glad_glGetQueryiv +GLAD_API_CALL PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv +GLAD_API_CALL PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; +#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv +GLAD_API_CALL PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; +#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv +GLAD_API_CALL PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; +#define glGetSamplerParameterfv glad_glGetSamplerParameterfv +GLAD_API_CALL PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; +#define glGetSamplerParameteriv glad_glGetSamplerParameteriv +GLAD_API_CALL PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +#define glGetShaderInfoLog glad_glGetShaderInfoLog +GLAD_API_CALL PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +#define glGetShaderSource glad_glGetShaderSource +GLAD_API_CALL PFNGLGETSHADERIVPROC glad_glGetShaderiv; +#define glGetShaderiv glad_glGetShaderiv +GLAD_API_CALL PFNGLGETSTRINGPROC glad_glGetString; +#define glGetString glad_glGetString +GLAD_API_CALL PFNGLGETSTRINGIPROC glad_glGetStringi; +#define glGetStringi glad_glGetStringi +GLAD_API_CALL PFNGLGETSYNCIVPROC glad_glGetSynciv; +#define glGetSynciv glad_glGetSynciv +GLAD_API_CALL PFNGLGETTEXENVFVPROC glad_glGetTexEnvfv; +#define glGetTexEnvfv glad_glGetTexEnvfv +GLAD_API_CALL PFNGLGETTEXENVIVPROC glad_glGetTexEnviv; +#define glGetTexEnviv glad_glGetTexEnviv +GLAD_API_CALL PFNGLGETTEXGENDVPROC glad_glGetTexGendv; +#define glGetTexGendv glad_glGetTexGendv +GLAD_API_CALL PFNGLGETTEXGENFVPROC glad_glGetTexGenfv; +#define glGetTexGenfv glad_glGetTexGenfv +GLAD_API_CALL PFNGLGETTEXGENIVPROC glad_glGetTexGeniv; +#define glGetTexGeniv glad_glGetTexGeniv +GLAD_API_CALL PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +#define glGetTexImage glad_glGetTexImage +GLAD_API_CALL PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv +GLAD_API_CALL PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv +GLAD_API_CALL PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +#define glGetTexParameterIiv glad_glGetTexParameterIiv +GLAD_API_CALL PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +#define glGetTexParameterIuiv glad_glGetTexParameterIuiv +GLAD_API_CALL PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +#define glGetTexParameterfv glad_glGetTexParameterfv +GLAD_API_CALL PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +#define glGetTexParameteriv glad_glGetTexParameteriv +GLAD_API_CALL PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying +GLAD_API_CALL PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +#define glGetUniformBlockIndex glad_glGetUniformBlockIndex +GLAD_API_CALL PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +#define glGetUniformIndices glad_glGetUniformIndices +GLAD_API_CALL PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +#define glGetUniformLocation glad_glGetUniformLocation +GLAD_API_CALL PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +#define glGetUniformfv glad_glGetUniformfv +GLAD_API_CALL PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +#define glGetUniformiv glad_glGetUniformiv +GLAD_API_CALL PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +#define glGetUniformuiv glad_glGetUniformuiv +GLAD_API_CALL PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +#define glGetVertexAttribIiv glad_glGetVertexAttribIiv +GLAD_API_CALL PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv +GLAD_API_CALL PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv +GLAD_API_CALL PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +#define glGetVertexAttribdv glad_glGetVertexAttribdv +GLAD_API_CALL PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +#define glGetVertexAttribfv glad_glGetVertexAttribfv +GLAD_API_CALL PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +#define glGetVertexAttribiv glad_glGetVertexAttribiv +GLAD_API_CALL PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB; +#define glGetnColorTableARB glad_glGetnColorTableARB +GLAD_API_CALL PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB; +#define glGetnCompressedTexImageARB glad_glGetnCompressedTexImageARB +GLAD_API_CALL PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB; +#define glGetnConvolutionFilterARB glad_glGetnConvolutionFilterARB +GLAD_API_CALL PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB; +#define glGetnHistogramARB glad_glGetnHistogramARB +GLAD_API_CALL PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB; +#define glGetnMapdvARB glad_glGetnMapdvARB +GLAD_API_CALL PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB; +#define glGetnMapfvARB glad_glGetnMapfvARB +GLAD_API_CALL PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB; +#define glGetnMapivARB glad_glGetnMapivARB +GLAD_API_CALL PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB; +#define glGetnMinmaxARB glad_glGetnMinmaxARB +GLAD_API_CALL PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB; +#define glGetnPixelMapfvARB glad_glGetnPixelMapfvARB +GLAD_API_CALL PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB; +#define glGetnPixelMapuivARB glad_glGetnPixelMapuivARB +GLAD_API_CALL PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB; +#define glGetnPixelMapusvARB glad_glGetnPixelMapusvARB +GLAD_API_CALL PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB; +#define glGetnPolygonStippleARB glad_glGetnPolygonStippleARB +GLAD_API_CALL PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB; +#define glGetnSeparableFilterARB glad_glGetnSeparableFilterARB +GLAD_API_CALL PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB; +#define glGetnTexImageARB glad_glGetnTexImageARB +GLAD_API_CALL PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB; +#define glGetnUniformdvARB glad_glGetnUniformdvARB +GLAD_API_CALL PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB; +#define glGetnUniformfvARB glad_glGetnUniformfvARB +GLAD_API_CALL PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB; +#define glGetnUniformivARB glad_glGetnUniformivARB +GLAD_API_CALL PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB; +#define glGetnUniformuivARB glad_glGetnUniformuivARB +GLAD_API_CALL PFNGLHINTPROC glad_glHint; +#define glHint glad_glHint +GLAD_API_CALL PFNGLINDEXMASKPROC glad_glIndexMask; +#define glIndexMask glad_glIndexMask +GLAD_API_CALL PFNGLINDEXPOINTERPROC glad_glIndexPointer; +#define glIndexPointer glad_glIndexPointer +GLAD_API_CALL PFNGLINDEXDPROC glad_glIndexd; +#define glIndexd glad_glIndexd +GLAD_API_CALL PFNGLINDEXDVPROC glad_glIndexdv; +#define glIndexdv glad_glIndexdv +GLAD_API_CALL PFNGLINDEXFPROC glad_glIndexf; +#define glIndexf glad_glIndexf +GLAD_API_CALL PFNGLINDEXFVPROC glad_glIndexfv; +#define glIndexfv glad_glIndexfv +GLAD_API_CALL PFNGLINDEXIPROC glad_glIndexi; +#define glIndexi glad_glIndexi +GLAD_API_CALL PFNGLINDEXIVPROC glad_glIndexiv; +#define glIndexiv glad_glIndexiv +GLAD_API_CALL PFNGLINDEXSPROC glad_glIndexs; +#define glIndexs glad_glIndexs +GLAD_API_CALL PFNGLINDEXSVPROC glad_glIndexsv; +#define glIndexsv glad_glIndexsv +GLAD_API_CALL PFNGLINDEXUBPROC glad_glIndexub; +#define glIndexub glad_glIndexub +GLAD_API_CALL PFNGLINDEXUBVPROC glad_glIndexubv; +#define glIndexubv glad_glIndexubv +GLAD_API_CALL PFNGLINITNAMESPROC glad_glInitNames; +#define glInitNames glad_glInitNames +GLAD_API_CALL PFNGLINTERLEAVEDARRAYSPROC glad_glInterleavedArrays; +#define glInterleavedArrays glad_glInterleavedArrays +GLAD_API_CALL PFNGLISBUFFERPROC glad_glIsBuffer; +#define glIsBuffer glad_glIsBuffer +GLAD_API_CALL PFNGLISENABLEDPROC glad_glIsEnabled; +#define glIsEnabled glad_glIsEnabled +GLAD_API_CALL PFNGLISENABLEDIPROC glad_glIsEnabledi; +#define glIsEnabledi glad_glIsEnabledi +GLAD_API_CALL PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +#define glIsFramebuffer glad_glIsFramebuffer +GLAD_API_CALL PFNGLISLISTPROC glad_glIsList; +#define glIsList glad_glIsList +GLAD_API_CALL PFNGLISPROGRAMPROC glad_glIsProgram; +#define glIsProgram glad_glIsProgram +GLAD_API_CALL PFNGLISQUERYPROC glad_glIsQuery; +#define glIsQuery glad_glIsQuery +GLAD_API_CALL PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +#define glIsRenderbuffer glad_glIsRenderbuffer +GLAD_API_CALL PFNGLISSAMPLERPROC glad_glIsSampler; +#define glIsSampler glad_glIsSampler +GLAD_API_CALL PFNGLISSHADERPROC glad_glIsShader; +#define glIsShader glad_glIsShader +GLAD_API_CALL PFNGLISSYNCPROC glad_glIsSync; +#define glIsSync glad_glIsSync +GLAD_API_CALL PFNGLISTEXTUREPROC glad_glIsTexture; +#define glIsTexture glad_glIsTexture +GLAD_API_CALL PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +#define glIsVertexArray glad_glIsVertexArray +GLAD_API_CALL PFNGLLIGHTMODELFPROC glad_glLightModelf; +#define glLightModelf glad_glLightModelf +GLAD_API_CALL PFNGLLIGHTMODELFVPROC glad_glLightModelfv; +#define glLightModelfv glad_glLightModelfv +GLAD_API_CALL PFNGLLIGHTMODELIPROC glad_glLightModeli; +#define glLightModeli glad_glLightModeli +GLAD_API_CALL PFNGLLIGHTMODELIVPROC glad_glLightModeliv; +#define glLightModeliv glad_glLightModeliv +GLAD_API_CALL PFNGLLIGHTFPROC glad_glLightf; +#define glLightf glad_glLightf +GLAD_API_CALL PFNGLLIGHTFVPROC glad_glLightfv; +#define glLightfv glad_glLightfv +GLAD_API_CALL PFNGLLIGHTIPROC glad_glLighti; +#define glLighti glad_glLighti +GLAD_API_CALL PFNGLLIGHTIVPROC glad_glLightiv; +#define glLightiv glad_glLightiv +GLAD_API_CALL PFNGLLINESTIPPLEPROC glad_glLineStipple; +#define glLineStipple glad_glLineStipple +GLAD_API_CALL PFNGLLINEWIDTHPROC glad_glLineWidth; +#define glLineWidth glad_glLineWidth +GLAD_API_CALL PFNGLLINKPROGRAMPROC glad_glLinkProgram; +#define glLinkProgram glad_glLinkProgram +GLAD_API_CALL PFNGLLISTBASEPROC glad_glListBase; +#define glListBase glad_glListBase +GLAD_API_CALL PFNGLLOADIDENTITYPROC glad_glLoadIdentity; +#define glLoadIdentity glad_glLoadIdentity +GLAD_API_CALL PFNGLLOADMATRIXDPROC glad_glLoadMatrixd; +#define glLoadMatrixd glad_glLoadMatrixd +GLAD_API_CALL PFNGLLOADMATRIXFPROC glad_glLoadMatrixf; +#define glLoadMatrixf glad_glLoadMatrixf +GLAD_API_CALL PFNGLLOADNAMEPROC glad_glLoadName; +#define glLoadName glad_glLoadName +GLAD_API_CALL PFNGLLOADTRANSPOSEMATRIXDPROC glad_glLoadTransposeMatrixd; +#define glLoadTransposeMatrixd glad_glLoadTransposeMatrixd +GLAD_API_CALL PFNGLLOADTRANSPOSEMATRIXFPROC glad_glLoadTransposeMatrixf; +#define glLoadTransposeMatrixf glad_glLoadTransposeMatrixf +GLAD_API_CALL PFNGLLOGICOPPROC glad_glLogicOp; +#define glLogicOp glad_glLogicOp +GLAD_API_CALL PFNGLMAP1DPROC glad_glMap1d; +#define glMap1d glad_glMap1d +GLAD_API_CALL PFNGLMAP1FPROC glad_glMap1f; +#define glMap1f glad_glMap1f +GLAD_API_CALL PFNGLMAP2DPROC glad_glMap2d; +#define glMap2d glad_glMap2d +GLAD_API_CALL PFNGLMAP2FPROC glad_glMap2f; +#define glMap2f glad_glMap2f +GLAD_API_CALL PFNGLMAPBUFFERPROC glad_glMapBuffer; +#define glMapBuffer glad_glMapBuffer +GLAD_API_CALL PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +#define glMapBufferRange glad_glMapBufferRange +GLAD_API_CALL PFNGLMAPGRID1DPROC glad_glMapGrid1d; +#define glMapGrid1d glad_glMapGrid1d +GLAD_API_CALL PFNGLMAPGRID1FPROC glad_glMapGrid1f; +#define glMapGrid1f glad_glMapGrid1f +GLAD_API_CALL PFNGLMAPGRID2DPROC glad_glMapGrid2d; +#define glMapGrid2d glad_glMapGrid2d +GLAD_API_CALL PFNGLMAPGRID2FPROC glad_glMapGrid2f; +#define glMapGrid2f glad_glMapGrid2f +GLAD_API_CALL PFNGLMATERIALFPROC glad_glMaterialf; +#define glMaterialf glad_glMaterialf +GLAD_API_CALL PFNGLMATERIALFVPROC glad_glMaterialfv; +#define glMaterialfv glad_glMaterialfv +GLAD_API_CALL PFNGLMATERIALIPROC glad_glMateriali; +#define glMateriali glad_glMateriali +GLAD_API_CALL PFNGLMATERIALIVPROC glad_glMaterialiv; +#define glMaterialiv glad_glMaterialiv +GLAD_API_CALL PFNGLMATRIXMODEPROC glad_glMatrixMode; +#define glMatrixMode glad_glMatrixMode +GLAD_API_CALL PFNGLMULTMATRIXDPROC glad_glMultMatrixd; +#define glMultMatrixd glad_glMultMatrixd +GLAD_API_CALL PFNGLMULTMATRIXFPROC glad_glMultMatrixf; +#define glMultMatrixf glad_glMultMatrixf +GLAD_API_CALL PFNGLMULTTRANSPOSEMATRIXDPROC glad_glMultTransposeMatrixd; +#define glMultTransposeMatrixd glad_glMultTransposeMatrixd +GLAD_API_CALL PFNGLMULTTRANSPOSEMATRIXFPROC glad_glMultTransposeMatrixf; +#define glMultTransposeMatrixf glad_glMultTransposeMatrixf +GLAD_API_CALL PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +#define glMultiDrawArrays glad_glMultiDrawArrays +GLAD_API_CALL PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +#define glMultiDrawElements glad_glMultiDrawElements +GLAD_API_CALL PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex +GLAD_API_CALL PFNGLMULTITEXCOORD1DPROC glad_glMultiTexCoord1d; +#define glMultiTexCoord1d glad_glMultiTexCoord1d +GLAD_API_CALL PFNGLMULTITEXCOORD1DVPROC glad_glMultiTexCoord1dv; +#define glMultiTexCoord1dv glad_glMultiTexCoord1dv +GLAD_API_CALL PFNGLMULTITEXCOORD1FPROC glad_glMultiTexCoord1f; +#define glMultiTexCoord1f glad_glMultiTexCoord1f +GLAD_API_CALL PFNGLMULTITEXCOORD1FVPROC glad_glMultiTexCoord1fv; +#define glMultiTexCoord1fv glad_glMultiTexCoord1fv +GLAD_API_CALL PFNGLMULTITEXCOORD1IPROC glad_glMultiTexCoord1i; +#define glMultiTexCoord1i glad_glMultiTexCoord1i +GLAD_API_CALL PFNGLMULTITEXCOORD1IVPROC glad_glMultiTexCoord1iv; +#define glMultiTexCoord1iv glad_glMultiTexCoord1iv +GLAD_API_CALL PFNGLMULTITEXCOORD1SPROC glad_glMultiTexCoord1s; +#define glMultiTexCoord1s glad_glMultiTexCoord1s +GLAD_API_CALL PFNGLMULTITEXCOORD1SVPROC glad_glMultiTexCoord1sv; +#define glMultiTexCoord1sv glad_glMultiTexCoord1sv +GLAD_API_CALL PFNGLMULTITEXCOORD2DPROC glad_glMultiTexCoord2d; +#define glMultiTexCoord2d glad_glMultiTexCoord2d +GLAD_API_CALL PFNGLMULTITEXCOORD2DVPROC glad_glMultiTexCoord2dv; +#define glMultiTexCoord2dv glad_glMultiTexCoord2dv +GLAD_API_CALL PFNGLMULTITEXCOORD2FPROC glad_glMultiTexCoord2f; +#define glMultiTexCoord2f glad_glMultiTexCoord2f +GLAD_API_CALL PFNGLMULTITEXCOORD2FVPROC glad_glMultiTexCoord2fv; +#define glMultiTexCoord2fv glad_glMultiTexCoord2fv +GLAD_API_CALL PFNGLMULTITEXCOORD2IPROC glad_glMultiTexCoord2i; +#define glMultiTexCoord2i glad_glMultiTexCoord2i +GLAD_API_CALL PFNGLMULTITEXCOORD2IVPROC glad_glMultiTexCoord2iv; +#define glMultiTexCoord2iv glad_glMultiTexCoord2iv +GLAD_API_CALL PFNGLMULTITEXCOORD2SPROC glad_glMultiTexCoord2s; +#define glMultiTexCoord2s glad_glMultiTexCoord2s +GLAD_API_CALL PFNGLMULTITEXCOORD2SVPROC glad_glMultiTexCoord2sv; +#define glMultiTexCoord2sv glad_glMultiTexCoord2sv +GLAD_API_CALL PFNGLMULTITEXCOORD3DPROC glad_glMultiTexCoord3d; +#define glMultiTexCoord3d glad_glMultiTexCoord3d +GLAD_API_CALL PFNGLMULTITEXCOORD3DVPROC glad_glMultiTexCoord3dv; +#define glMultiTexCoord3dv glad_glMultiTexCoord3dv +GLAD_API_CALL PFNGLMULTITEXCOORD3FPROC glad_glMultiTexCoord3f; +#define glMultiTexCoord3f glad_glMultiTexCoord3f +GLAD_API_CALL PFNGLMULTITEXCOORD3FVPROC glad_glMultiTexCoord3fv; +#define glMultiTexCoord3fv glad_glMultiTexCoord3fv +GLAD_API_CALL PFNGLMULTITEXCOORD3IPROC glad_glMultiTexCoord3i; +#define glMultiTexCoord3i glad_glMultiTexCoord3i +GLAD_API_CALL PFNGLMULTITEXCOORD3IVPROC glad_glMultiTexCoord3iv; +#define glMultiTexCoord3iv glad_glMultiTexCoord3iv +GLAD_API_CALL PFNGLMULTITEXCOORD3SPROC glad_glMultiTexCoord3s; +#define glMultiTexCoord3s glad_glMultiTexCoord3s +GLAD_API_CALL PFNGLMULTITEXCOORD3SVPROC glad_glMultiTexCoord3sv; +#define glMultiTexCoord3sv glad_glMultiTexCoord3sv +GLAD_API_CALL PFNGLMULTITEXCOORD4DPROC glad_glMultiTexCoord4d; +#define glMultiTexCoord4d glad_glMultiTexCoord4d +GLAD_API_CALL PFNGLMULTITEXCOORD4DVPROC glad_glMultiTexCoord4dv; +#define glMultiTexCoord4dv glad_glMultiTexCoord4dv +GLAD_API_CALL PFNGLMULTITEXCOORD4FPROC glad_glMultiTexCoord4f; +#define glMultiTexCoord4f glad_glMultiTexCoord4f +GLAD_API_CALL PFNGLMULTITEXCOORD4FVPROC glad_glMultiTexCoord4fv; +#define glMultiTexCoord4fv glad_glMultiTexCoord4fv +GLAD_API_CALL PFNGLMULTITEXCOORD4IPROC glad_glMultiTexCoord4i; +#define glMultiTexCoord4i glad_glMultiTexCoord4i +GLAD_API_CALL PFNGLMULTITEXCOORD4IVPROC glad_glMultiTexCoord4iv; +#define glMultiTexCoord4iv glad_glMultiTexCoord4iv +GLAD_API_CALL PFNGLMULTITEXCOORD4SPROC glad_glMultiTexCoord4s; +#define glMultiTexCoord4s glad_glMultiTexCoord4s +GLAD_API_CALL PFNGLMULTITEXCOORD4SVPROC glad_glMultiTexCoord4sv; +#define glMultiTexCoord4sv glad_glMultiTexCoord4sv +GLAD_API_CALL PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; +#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui +GLAD_API_CALL PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; +#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv +GLAD_API_CALL PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; +#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui +GLAD_API_CALL PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; +#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv +GLAD_API_CALL PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; +#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui +GLAD_API_CALL PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; +#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv +GLAD_API_CALL PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; +#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui +GLAD_API_CALL PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; +#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv +GLAD_API_CALL PFNGLNEWLISTPROC glad_glNewList; +#define glNewList glad_glNewList +GLAD_API_CALL PFNGLNORMAL3BPROC glad_glNormal3b; +#define glNormal3b glad_glNormal3b +GLAD_API_CALL PFNGLNORMAL3BVPROC glad_glNormal3bv; +#define glNormal3bv glad_glNormal3bv +GLAD_API_CALL PFNGLNORMAL3DPROC glad_glNormal3d; +#define glNormal3d glad_glNormal3d +GLAD_API_CALL PFNGLNORMAL3DVPROC glad_glNormal3dv; +#define glNormal3dv glad_glNormal3dv +GLAD_API_CALL PFNGLNORMAL3FPROC glad_glNormal3f; +#define glNormal3f glad_glNormal3f +GLAD_API_CALL PFNGLNORMAL3FVPROC glad_glNormal3fv; +#define glNormal3fv glad_glNormal3fv +GLAD_API_CALL PFNGLNORMAL3IPROC glad_glNormal3i; +#define glNormal3i glad_glNormal3i +GLAD_API_CALL PFNGLNORMAL3IVPROC glad_glNormal3iv; +#define glNormal3iv glad_glNormal3iv +GLAD_API_CALL PFNGLNORMAL3SPROC glad_glNormal3s; +#define glNormal3s glad_glNormal3s +GLAD_API_CALL PFNGLNORMAL3SVPROC glad_glNormal3sv; +#define glNormal3sv glad_glNormal3sv +GLAD_API_CALL PFNGLNORMALP3UIPROC glad_glNormalP3ui; +#define glNormalP3ui glad_glNormalP3ui +GLAD_API_CALL PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; +#define glNormalP3uiv glad_glNormalP3uiv +GLAD_API_CALL PFNGLNORMALPOINTERPROC glad_glNormalPointer; +#define glNormalPointer glad_glNormalPointer +GLAD_API_CALL PFNGLOBJECTLABELPROC glad_glObjectLabel; +#define glObjectLabel glad_glObjectLabel +GLAD_API_CALL PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; +#define glObjectPtrLabel glad_glObjectPtrLabel +GLAD_API_CALL PFNGLORTHOPROC glad_glOrtho; +#define glOrtho glad_glOrtho +GLAD_API_CALL PFNGLPASSTHROUGHPROC glad_glPassThrough; +#define glPassThrough glad_glPassThrough +GLAD_API_CALL PFNGLPIXELMAPFVPROC glad_glPixelMapfv; +#define glPixelMapfv glad_glPixelMapfv +GLAD_API_CALL PFNGLPIXELMAPUIVPROC glad_glPixelMapuiv; +#define glPixelMapuiv glad_glPixelMapuiv +GLAD_API_CALL PFNGLPIXELMAPUSVPROC glad_glPixelMapusv; +#define glPixelMapusv glad_glPixelMapusv +GLAD_API_CALL PFNGLPIXELSTOREFPROC glad_glPixelStoref; +#define glPixelStoref glad_glPixelStoref +GLAD_API_CALL PFNGLPIXELSTOREIPROC glad_glPixelStorei; +#define glPixelStorei glad_glPixelStorei +GLAD_API_CALL PFNGLPIXELTRANSFERFPROC glad_glPixelTransferf; +#define glPixelTransferf glad_glPixelTransferf +GLAD_API_CALL PFNGLPIXELTRANSFERIPROC glad_glPixelTransferi; +#define glPixelTransferi glad_glPixelTransferi +GLAD_API_CALL PFNGLPIXELZOOMPROC glad_glPixelZoom; +#define glPixelZoom glad_glPixelZoom +GLAD_API_CALL PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +#define glPointParameterf glad_glPointParameterf +GLAD_API_CALL PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +#define glPointParameterfv glad_glPointParameterfv +GLAD_API_CALL PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +#define glPointParameteri glad_glPointParameteri +GLAD_API_CALL PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +#define glPointParameteriv glad_glPointParameteriv +GLAD_API_CALL PFNGLPOINTSIZEPROC glad_glPointSize; +#define glPointSize glad_glPointSize +GLAD_API_CALL PFNGLPOLYGONMODEPROC glad_glPolygonMode; +#define glPolygonMode glad_glPolygonMode +GLAD_API_CALL PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +#define glPolygonOffset glad_glPolygonOffset +GLAD_API_CALL PFNGLPOLYGONSTIPPLEPROC glad_glPolygonStipple; +#define glPolygonStipple glad_glPolygonStipple +GLAD_API_CALL PFNGLPOPATTRIBPROC glad_glPopAttrib; +#define glPopAttrib glad_glPopAttrib +GLAD_API_CALL PFNGLPOPCLIENTATTRIBPROC glad_glPopClientAttrib; +#define glPopClientAttrib glad_glPopClientAttrib +GLAD_API_CALL PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; +#define glPopDebugGroup glad_glPopDebugGroup +GLAD_API_CALL PFNGLPOPMATRIXPROC glad_glPopMatrix; +#define glPopMatrix glad_glPopMatrix +GLAD_API_CALL PFNGLPOPNAMEPROC glad_glPopName; +#define glPopName glad_glPopName +GLAD_API_CALL PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex +GLAD_API_CALL PFNGLPRIORITIZETEXTURESPROC glad_glPrioritizeTextures; +#define glPrioritizeTextures glad_glPrioritizeTextures +GLAD_API_CALL PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +#define glProvokingVertex glad_glProvokingVertex +GLAD_API_CALL PFNGLPUSHATTRIBPROC glad_glPushAttrib; +#define glPushAttrib glad_glPushAttrib +GLAD_API_CALL PFNGLPUSHCLIENTATTRIBPROC glad_glPushClientAttrib; +#define glPushClientAttrib glad_glPushClientAttrib +GLAD_API_CALL PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; +#define glPushDebugGroup glad_glPushDebugGroup +GLAD_API_CALL PFNGLPUSHMATRIXPROC glad_glPushMatrix; +#define glPushMatrix glad_glPushMatrix +GLAD_API_CALL PFNGLPUSHNAMEPROC glad_glPushName; +#define glPushName glad_glPushName +GLAD_API_CALL PFNGLQUERYCOUNTERPROC glad_glQueryCounter; +#define glQueryCounter glad_glQueryCounter +GLAD_API_CALL PFNGLRASTERPOS2DPROC glad_glRasterPos2d; +#define glRasterPos2d glad_glRasterPos2d +GLAD_API_CALL PFNGLRASTERPOS2DVPROC glad_glRasterPos2dv; +#define glRasterPos2dv glad_glRasterPos2dv +GLAD_API_CALL PFNGLRASTERPOS2FPROC glad_glRasterPos2f; +#define glRasterPos2f glad_glRasterPos2f +GLAD_API_CALL PFNGLRASTERPOS2FVPROC glad_glRasterPos2fv; +#define glRasterPos2fv glad_glRasterPos2fv +GLAD_API_CALL PFNGLRASTERPOS2IPROC glad_glRasterPos2i; +#define glRasterPos2i glad_glRasterPos2i +GLAD_API_CALL PFNGLRASTERPOS2IVPROC glad_glRasterPos2iv; +#define glRasterPos2iv glad_glRasterPos2iv +GLAD_API_CALL PFNGLRASTERPOS2SPROC glad_glRasterPos2s; +#define glRasterPos2s glad_glRasterPos2s +GLAD_API_CALL PFNGLRASTERPOS2SVPROC glad_glRasterPos2sv; +#define glRasterPos2sv glad_glRasterPos2sv +GLAD_API_CALL PFNGLRASTERPOS3DPROC glad_glRasterPos3d; +#define glRasterPos3d glad_glRasterPos3d +GLAD_API_CALL PFNGLRASTERPOS3DVPROC glad_glRasterPos3dv; +#define glRasterPos3dv glad_glRasterPos3dv +GLAD_API_CALL PFNGLRASTERPOS3FPROC glad_glRasterPos3f; +#define glRasterPos3f glad_glRasterPos3f +GLAD_API_CALL PFNGLRASTERPOS3FVPROC glad_glRasterPos3fv; +#define glRasterPos3fv glad_glRasterPos3fv +GLAD_API_CALL PFNGLRASTERPOS3IPROC glad_glRasterPos3i; +#define glRasterPos3i glad_glRasterPos3i +GLAD_API_CALL PFNGLRASTERPOS3IVPROC glad_glRasterPos3iv; +#define glRasterPos3iv glad_glRasterPos3iv +GLAD_API_CALL PFNGLRASTERPOS3SPROC glad_glRasterPos3s; +#define glRasterPos3s glad_glRasterPos3s +GLAD_API_CALL PFNGLRASTERPOS3SVPROC glad_glRasterPos3sv; +#define glRasterPos3sv glad_glRasterPos3sv +GLAD_API_CALL PFNGLRASTERPOS4DPROC glad_glRasterPos4d; +#define glRasterPos4d glad_glRasterPos4d +GLAD_API_CALL PFNGLRASTERPOS4DVPROC glad_glRasterPos4dv; +#define glRasterPos4dv glad_glRasterPos4dv +GLAD_API_CALL PFNGLRASTERPOS4FPROC glad_glRasterPos4f; +#define glRasterPos4f glad_glRasterPos4f +GLAD_API_CALL PFNGLRASTERPOS4FVPROC glad_glRasterPos4fv; +#define glRasterPos4fv glad_glRasterPos4fv +GLAD_API_CALL PFNGLRASTERPOS4IPROC glad_glRasterPos4i; +#define glRasterPos4i glad_glRasterPos4i +GLAD_API_CALL PFNGLRASTERPOS4IVPROC glad_glRasterPos4iv; +#define glRasterPos4iv glad_glRasterPos4iv +GLAD_API_CALL PFNGLRASTERPOS4SPROC glad_glRasterPos4s; +#define glRasterPos4s glad_glRasterPos4s +GLAD_API_CALL PFNGLRASTERPOS4SVPROC glad_glRasterPos4sv; +#define glRasterPos4sv glad_glRasterPos4sv +GLAD_API_CALL PFNGLREADBUFFERPROC glad_glReadBuffer; +#define glReadBuffer glad_glReadBuffer +GLAD_API_CALL PFNGLREADPIXELSPROC glad_glReadPixels; +#define glReadPixels glad_glReadPixels +GLAD_API_CALL PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB; +#define glReadnPixelsARB glad_glReadnPixelsARB +GLAD_API_CALL PFNGLRECTDPROC glad_glRectd; +#define glRectd glad_glRectd +GLAD_API_CALL PFNGLRECTDVPROC glad_glRectdv; +#define glRectdv glad_glRectdv +GLAD_API_CALL PFNGLRECTFPROC glad_glRectf; +#define glRectf glad_glRectf +GLAD_API_CALL PFNGLRECTFVPROC glad_glRectfv; +#define glRectfv glad_glRectfv +GLAD_API_CALL PFNGLRECTIPROC glad_glRecti; +#define glRecti glad_glRecti +GLAD_API_CALL PFNGLRECTIVPROC glad_glRectiv; +#define glRectiv glad_glRectiv +GLAD_API_CALL PFNGLRECTSPROC glad_glRects; +#define glRects glad_glRects +GLAD_API_CALL PFNGLRECTSVPROC glad_glRectsv; +#define glRectsv glad_glRectsv +GLAD_API_CALL PFNGLRENDERMODEPROC glad_glRenderMode; +#define glRenderMode glad_glRenderMode +GLAD_API_CALL PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +#define glRenderbufferStorage glad_glRenderbufferStorage +GLAD_API_CALL PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample +GLAD_API_CALL PFNGLROTATEDPROC glad_glRotated; +#define glRotated glad_glRotated +GLAD_API_CALL PFNGLROTATEFPROC glad_glRotatef; +#define glRotatef glad_glRotatef +GLAD_API_CALL PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +#define glSampleCoverage glad_glSampleCoverage +GLAD_API_CALL PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB; +#define glSampleCoverageARB glad_glSampleCoverageARB +GLAD_API_CALL PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +#define glSampleMaski glad_glSampleMaski +GLAD_API_CALL PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; +#define glSamplerParameterIiv glad_glSamplerParameterIiv +GLAD_API_CALL PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; +#define glSamplerParameterIuiv glad_glSamplerParameterIuiv +GLAD_API_CALL PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; +#define glSamplerParameterf glad_glSamplerParameterf +GLAD_API_CALL PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; +#define glSamplerParameterfv glad_glSamplerParameterfv +GLAD_API_CALL PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; +#define glSamplerParameteri glad_glSamplerParameteri +GLAD_API_CALL PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; +#define glSamplerParameteriv glad_glSamplerParameteriv +GLAD_API_CALL PFNGLSCALEDPROC glad_glScaled; +#define glScaled glad_glScaled +GLAD_API_CALL PFNGLSCALEFPROC glad_glScalef; +#define glScalef glad_glScalef +GLAD_API_CALL PFNGLSCISSORPROC glad_glScissor; +#define glScissor glad_glScissor +GLAD_API_CALL PFNGLSECONDARYCOLOR3BPROC glad_glSecondaryColor3b; +#define glSecondaryColor3b glad_glSecondaryColor3b +GLAD_API_CALL PFNGLSECONDARYCOLOR3BVPROC glad_glSecondaryColor3bv; +#define glSecondaryColor3bv glad_glSecondaryColor3bv +GLAD_API_CALL PFNGLSECONDARYCOLOR3DPROC glad_glSecondaryColor3d; +#define glSecondaryColor3d glad_glSecondaryColor3d +GLAD_API_CALL PFNGLSECONDARYCOLOR3DVPROC glad_glSecondaryColor3dv; +#define glSecondaryColor3dv glad_glSecondaryColor3dv +GLAD_API_CALL PFNGLSECONDARYCOLOR3FPROC glad_glSecondaryColor3f; +#define glSecondaryColor3f glad_glSecondaryColor3f +GLAD_API_CALL PFNGLSECONDARYCOLOR3FVPROC glad_glSecondaryColor3fv; +#define glSecondaryColor3fv glad_glSecondaryColor3fv +GLAD_API_CALL PFNGLSECONDARYCOLOR3IPROC glad_glSecondaryColor3i; +#define glSecondaryColor3i glad_glSecondaryColor3i +GLAD_API_CALL PFNGLSECONDARYCOLOR3IVPROC glad_glSecondaryColor3iv; +#define glSecondaryColor3iv glad_glSecondaryColor3iv +GLAD_API_CALL PFNGLSECONDARYCOLOR3SPROC glad_glSecondaryColor3s; +#define glSecondaryColor3s glad_glSecondaryColor3s +GLAD_API_CALL PFNGLSECONDARYCOLOR3SVPROC glad_glSecondaryColor3sv; +#define glSecondaryColor3sv glad_glSecondaryColor3sv +GLAD_API_CALL PFNGLSECONDARYCOLOR3UBPROC glad_glSecondaryColor3ub; +#define glSecondaryColor3ub glad_glSecondaryColor3ub +GLAD_API_CALL PFNGLSECONDARYCOLOR3UBVPROC glad_glSecondaryColor3ubv; +#define glSecondaryColor3ubv glad_glSecondaryColor3ubv +GLAD_API_CALL PFNGLSECONDARYCOLOR3UIPROC glad_glSecondaryColor3ui; +#define glSecondaryColor3ui glad_glSecondaryColor3ui +GLAD_API_CALL PFNGLSECONDARYCOLOR3UIVPROC glad_glSecondaryColor3uiv; +#define glSecondaryColor3uiv glad_glSecondaryColor3uiv +GLAD_API_CALL PFNGLSECONDARYCOLOR3USPROC glad_glSecondaryColor3us; +#define glSecondaryColor3us glad_glSecondaryColor3us +GLAD_API_CALL PFNGLSECONDARYCOLOR3USVPROC glad_glSecondaryColor3usv; +#define glSecondaryColor3usv glad_glSecondaryColor3usv +GLAD_API_CALL PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; +#define glSecondaryColorP3ui glad_glSecondaryColorP3ui +GLAD_API_CALL PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; +#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv +GLAD_API_CALL PFNGLSECONDARYCOLORPOINTERPROC glad_glSecondaryColorPointer; +#define glSecondaryColorPointer glad_glSecondaryColorPointer +GLAD_API_CALL PFNGLSELECTBUFFERPROC glad_glSelectBuffer; +#define glSelectBuffer glad_glSelectBuffer +GLAD_API_CALL PFNGLSHADEMODELPROC glad_glShadeModel; +#define glShadeModel glad_glShadeModel +GLAD_API_CALL PFNGLSHADERSOURCEPROC glad_glShaderSource; +#define glShaderSource glad_glShaderSource +GLAD_API_CALL PFNGLSTENCILFUNCPROC glad_glStencilFunc; +#define glStencilFunc glad_glStencilFunc +GLAD_API_CALL PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +#define glStencilFuncSeparate glad_glStencilFuncSeparate +GLAD_API_CALL PFNGLSTENCILMASKPROC glad_glStencilMask; +#define glStencilMask glad_glStencilMask +GLAD_API_CALL PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +#define glStencilMaskSeparate glad_glStencilMaskSeparate +GLAD_API_CALL PFNGLSTENCILOPPROC glad_glStencilOp; +#define glStencilOp glad_glStencilOp +GLAD_API_CALL PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +#define glStencilOpSeparate glad_glStencilOpSeparate +GLAD_API_CALL PFNGLTEXBUFFERPROC glad_glTexBuffer; +#define glTexBuffer glad_glTexBuffer +GLAD_API_CALL PFNGLTEXCOORD1DPROC glad_glTexCoord1d; +#define glTexCoord1d glad_glTexCoord1d +GLAD_API_CALL PFNGLTEXCOORD1DVPROC glad_glTexCoord1dv; +#define glTexCoord1dv glad_glTexCoord1dv +GLAD_API_CALL PFNGLTEXCOORD1FPROC glad_glTexCoord1f; +#define glTexCoord1f glad_glTexCoord1f +GLAD_API_CALL PFNGLTEXCOORD1FVPROC glad_glTexCoord1fv; +#define glTexCoord1fv glad_glTexCoord1fv +GLAD_API_CALL PFNGLTEXCOORD1IPROC glad_glTexCoord1i; +#define glTexCoord1i glad_glTexCoord1i +GLAD_API_CALL PFNGLTEXCOORD1IVPROC glad_glTexCoord1iv; +#define glTexCoord1iv glad_glTexCoord1iv +GLAD_API_CALL PFNGLTEXCOORD1SPROC glad_glTexCoord1s; +#define glTexCoord1s glad_glTexCoord1s +GLAD_API_CALL PFNGLTEXCOORD1SVPROC glad_glTexCoord1sv; +#define glTexCoord1sv glad_glTexCoord1sv +GLAD_API_CALL PFNGLTEXCOORD2DPROC glad_glTexCoord2d; +#define glTexCoord2d glad_glTexCoord2d +GLAD_API_CALL PFNGLTEXCOORD2DVPROC glad_glTexCoord2dv; +#define glTexCoord2dv glad_glTexCoord2dv +GLAD_API_CALL PFNGLTEXCOORD2FPROC glad_glTexCoord2f; +#define glTexCoord2f glad_glTexCoord2f +GLAD_API_CALL PFNGLTEXCOORD2FVPROC glad_glTexCoord2fv; +#define glTexCoord2fv glad_glTexCoord2fv +GLAD_API_CALL PFNGLTEXCOORD2IPROC glad_glTexCoord2i; +#define glTexCoord2i glad_glTexCoord2i +GLAD_API_CALL PFNGLTEXCOORD2IVPROC glad_glTexCoord2iv; +#define glTexCoord2iv glad_glTexCoord2iv +GLAD_API_CALL PFNGLTEXCOORD2SPROC glad_glTexCoord2s; +#define glTexCoord2s glad_glTexCoord2s +GLAD_API_CALL PFNGLTEXCOORD2SVPROC glad_glTexCoord2sv; +#define glTexCoord2sv glad_glTexCoord2sv +GLAD_API_CALL PFNGLTEXCOORD3DPROC glad_glTexCoord3d; +#define glTexCoord3d glad_glTexCoord3d +GLAD_API_CALL PFNGLTEXCOORD3DVPROC glad_glTexCoord3dv; +#define glTexCoord3dv glad_glTexCoord3dv +GLAD_API_CALL PFNGLTEXCOORD3FPROC glad_glTexCoord3f; +#define glTexCoord3f glad_glTexCoord3f +GLAD_API_CALL PFNGLTEXCOORD3FVPROC glad_glTexCoord3fv; +#define glTexCoord3fv glad_glTexCoord3fv +GLAD_API_CALL PFNGLTEXCOORD3IPROC glad_glTexCoord3i; +#define glTexCoord3i glad_glTexCoord3i +GLAD_API_CALL PFNGLTEXCOORD3IVPROC glad_glTexCoord3iv; +#define glTexCoord3iv glad_glTexCoord3iv +GLAD_API_CALL PFNGLTEXCOORD3SPROC glad_glTexCoord3s; +#define glTexCoord3s glad_glTexCoord3s +GLAD_API_CALL PFNGLTEXCOORD3SVPROC glad_glTexCoord3sv; +#define glTexCoord3sv glad_glTexCoord3sv +GLAD_API_CALL PFNGLTEXCOORD4DPROC glad_glTexCoord4d; +#define glTexCoord4d glad_glTexCoord4d +GLAD_API_CALL PFNGLTEXCOORD4DVPROC glad_glTexCoord4dv; +#define glTexCoord4dv glad_glTexCoord4dv +GLAD_API_CALL PFNGLTEXCOORD4FPROC glad_glTexCoord4f; +#define glTexCoord4f glad_glTexCoord4f +GLAD_API_CALL PFNGLTEXCOORD4FVPROC glad_glTexCoord4fv; +#define glTexCoord4fv glad_glTexCoord4fv +GLAD_API_CALL PFNGLTEXCOORD4IPROC glad_glTexCoord4i; +#define glTexCoord4i glad_glTexCoord4i +GLAD_API_CALL PFNGLTEXCOORD4IVPROC glad_glTexCoord4iv; +#define glTexCoord4iv glad_glTexCoord4iv +GLAD_API_CALL PFNGLTEXCOORD4SPROC glad_glTexCoord4s; +#define glTexCoord4s glad_glTexCoord4s +GLAD_API_CALL PFNGLTEXCOORD4SVPROC glad_glTexCoord4sv; +#define glTexCoord4sv glad_glTexCoord4sv +GLAD_API_CALL PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; +#define glTexCoordP1ui glad_glTexCoordP1ui +GLAD_API_CALL PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; +#define glTexCoordP1uiv glad_glTexCoordP1uiv +GLAD_API_CALL PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; +#define glTexCoordP2ui glad_glTexCoordP2ui +GLAD_API_CALL PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; +#define glTexCoordP2uiv glad_glTexCoordP2uiv +GLAD_API_CALL PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; +#define glTexCoordP3ui glad_glTexCoordP3ui +GLAD_API_CALL PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; +#define glTexCoordP3uiv glad_glTexCoordP3uiv +GLAD_API_CALL PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; +#define glTexCoordP4ui glad_glTexCoordP4ui +GLAD_API_CALL PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; +#define glTexCoordP4uiv glad_glTexCoordP4uiv +GLAD_API_CALL PFNGLTEXCOORDPOINTERPROC glad_glTexCoordPointer; +#define glTexCoordPointer glad_glTexCoordPointer +GLAD_API_CALL PFNGLTEXENVFPROC glad_glTexEnvf; +#define glTexEnvf glad_glTexEnvf +GLAD_API_CALL PFNGLTEXENVFVPROC glad_glTexEnvfv; +#define glTexEnvfv glad_glTexEnvfv +GLAD_API_CALL PFNGLTEXENVIPROC glad_glTexEnvi; +#define glTexEnvi glad_glTexEnvi +GLAD_API_CALL PFNGLTEXENVIVPROC glad_glTexEnviv; +#define glTexEnviv glad_glTexEnviv +GLAD_API_CALL PFNGLTEXGENDPROC glad_glTexGend; +#define glTexGend glad_glTexGend +GLAD_API_CALL PFNGLTEXGENDVPROC glad_glTexGendv; +#define glTexGendv glad_glTexGendv +GLAD_API_CALL PFNGLTEXGENFPROC glad_glTexGenf; +#define glTexGenf glad_glTexGenf +GLAD_API_CALL PFNGLTEXGENFVPROC glad_glTexGenfv; +#define glTexGenfv glad_glTexGenfv +GLAD_API_CALL PFNGLTEXGENIPROC glad_glTexGeni; +#define glTexGeni glad_glTexGeni +GLAD_API_CALL PFNGLTEXGENIVPROC glad_glTexGeniv; +#define glTexGeniv glad_glTexGeniv +GLAD_API_CALL PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +#define glTexImage1D glad_glTexImage1D +GLAD_API_CALL PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +#define glTexImage2D glad_glTexImage2D +GLAD_API_CALL PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +#define glTexImage2DMultisample glad_glTexImage2DMultisample +GLAD_API_CALL PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +#define glTexImage3D glad_glTexImage3D +GLAD_API_CALL PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +#define glTexImage3DMultisample glad_glTexImage3DMultisample +GLAD_API_CALL PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +#define glTexParameterIiv glad_glTexParameterIiv +GLAD_API_CALL PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +#define glTexParameterIuiv glad_glTexParameterIuiv +GLAD_API_CALL PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +#define glTexParameterf glad_glTexParameterf +GLAD_API_CALL PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +#define glTexParameterfv glad_glTexParameterfv +GLAD_API_CALL PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +#define glTexParameteri glad_glTexParameteri +GLAD_API_CALL PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +#define glTexParameteriv glad_glTexParameteriv +GLAD_API_CALL PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +#define glTexSubImage1D glad_glTexSubImage1D +GLAD_API_CALL PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +#define glTexSubImage2D glad_glTexSubImage2D +GLAD_API_CALL PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +#define glTexSubImage3D glad_glTexSubImage3D +GLAD_API_CALL PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings +GLAD_API_CALL PFNGLTRANSLATEDPROC glad_glTranslated; +#define glTranslated glad_glTranslated +GLAD_API_CALL PFNGLTRANSLATEFPROC glad_glTranslatef; +#define glTranslatef glad_glTranslatef +GLAD_API_CALL PFNGLUNIFORM1FPROC glad_glUniform1f; +#define glUniform1f glad_glUniform1f +GLAD_API_CALL PFNGLUNIFORM1FVPROC glad_glUniform1fv; +#define glUniform1fv glad_glUniform1fv +GLAD_API_CALL PFNGLUNIFORM1IPROC glad_glUniform1i; +#define glUniform1i glad_glUniform1i +GLAD_API_CALL PFNGLUNIFORM1IVPROC glad_glUniform1iv; +#define glUniform1iv glad_glUniform1iv +GLAD_API_CALL PFNGLUNIFORM1UIPROC glad_glUniform1ui; +#define glUniform1ui glad_glUniform1ui +GLAD_API_CALL PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +#define glUniform1uiv glad_glUniform1uiv +GLAD_API_CALL PFNGLUNIFORM2FPROC glad_glUniform2f; +#define glUniform2f glad_glUniform2f +GLAD_API_CALL PFNGLUNIFORM2FVPROC glad_glUniform2fv; +#define glUniform2fv glad_glUniform2fv +GLAD_API_CALL PFNGLUNIFORM2IPROC glad_glUniform2i; +#define glUniform2i glad_glUniform2i +GLAD_API_CALL PFNGLUNIFORM2IVPROC glad_glUniform2iv; +#define glUniform2iv glad_glUniform2iv +GLAD_API_CALL PFNGLUNIFORM2UIPROC glad_glUniform2ui; +#define glUniform2ui glad_glUniform2ui +GLAD_API_CALL PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +#define glUniform2uiv glad_glUniform2uiv +GLAD_API_CALL PFNGLUNIFORM3FPROC glad_glUniform3f; +#define glUniform3f glad_glUniform3f +GLAD_API_CALL PFNGLUNIFORM3FVPROC glad_glUniform3fv; +#define glUniform3fv glad_glUniform3fv +GLAD_API_CALL PFNGLUNIFORM3IPROC glad_glUniform3i; +#define glUniform3i glad_glUniform3i +GLAD_API_CALL PFNGLUNIFORM3IVPROC glad_glUniform3iv; +#define glUniform3iv glad_glUniform3iv +GLAD_API_CALL PFNGLUNIFORM3UIPROC glad_glUniform3ui; +#define glUniform3ui glad_glUniform3ui +GLAD_API_CALL PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +#define glUniform3uiv glad_glUniform3uiv +GLAD_API_CALL PFNGLUNIFORM4FPROC glad_glUniform4f; +#define glUniform4f glad_glUniform4f +GLAD_API_CALL PFNGLUNIFORM4FVPROC glad_glUniform4fv; +#define glUniform4fv glad_glUniform4fv +GLAD_API_CALL PFNGLUNIFORM4IPROC glad_glUniform4i; +#define glUniform4i glad_glUniform4i +GLAD_API_CALL PFNGLUNIFORM4IVPROC glad_glUniform4iv; +#define glUniform4iv glad_glUniform4iv +GLAD_API_CALL PFNGLUNIFORM4UIPROC glad_glUniform4ui; +#define glUniform4ui glad_glUniform4ui +GLAD_API_CALL PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +#define glUniform4uiv glad_glUniform4uiv +GLAD_API_CALL PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +#define glUniformBlockBinding glad_glUniformBlockBinding +GLAD_API_CALL PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +#define glUniformMatrix2fv glad_glUniformMatrix2fv +GLAD_API_CALL PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv +GLAD_API_CALL PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv +GLAD_API_CALL PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +#define glUniformMatrix3fv glad_glUniformMatrix3fv +GLAD_API_CALL PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv +GLAD_API_CALL PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv +GLAD_API_CALL PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +#define glUniformMatrix4fv glad_glUniformMatrix4fv +GLAD_API_CALL PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv +GLAD_API_CALL PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv +GLAD_API_CALL PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +#define glUnmapBuffer glad_glUnmapBuffer +GLAD_API_CALL PFNGLUSEPROGRAMPROC glad_glUseProgram; +#define glUseProgram glad_glUseProgram +GLAD_API_CALL PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +#define glValidateProgram glad_glValidateProgram +GLAD_API_CALL PFNGLVERTEX2DPROC glad_glVertex2d; +#define glVertex2d glad_glVertex2d +GLAD_API_CALL PFNGLVERTEX2DVPROC glad_glVertex2dv; +#define glVertex2dv glad_glVertex2dv +GLAD_API_CALL PFNGLVERTEX2FPROC glad_glVertex2f; +#define glVertex2f glad_glVertex2f +GLAD_API_CALL PFNGLVERTEX2FVPROC glad_glVertex2fv; +#define glVertex2fv glad_glVertex2fv +GLAD_API_CALL PFNGLVERTEX2IPROC glad_glVertex2i; +#define glVertex2i glad_glVertex2i +GLAD_API_CALL PFNGLVERTEX2IVPROC glad_glVertex2iv; +#define glVertex2iv glad_glVertex2iv +GLAD_API_CALL PFNGLVERTEX2SPROC glad_glVertex2s; +#define glVertex2s glad_glVertex2s +GLAD_API_CALL PFNGLVERTEX2SVPROC glad_glVertex2sv; +#define glVertex2sv glad_glVertex2sv +GLAD_API_CALL PFNGLVERTEX3DPROC glad_glVertex3d; +#define glVertex3d glad_glVertex3d +GLAD_API_CALL PFNGLVERTEX3DVPROC glad_glVertex3dv; +#define glVertex3dv glad_glVertex3dv +GLAD_API_CALL PFNGLVERTEX3FPROC glad_glVertex3f; +#define glVertex3f glad_glVertex3f +GLAD_API_CALL PFNGLVERTEX3FVPROC glad_glVertex3fv; +#define glVertex3fv glad_glVertex3fv +GLAD_API_CALL PFNGLVERTEX3IPROC glad_glVertex3i; +#define glVertex3i glad_glVertex3i +GLAD_API_CALL PFNGLVERTEX3IVPROC glad_glVertex3iv; +#define glVertex3iv glad_glVertex3iv +GLAD_API_CALL PFNGLVERTEX3SPROC glad_glVertex3s; +#define glVertex3s glad_glVertex3s +GLAD_API_CALL PFNGLVERTEX3SVPROC glad_glVertex3sv; +#define glVertex3sv glad_glVertex3sv +GLAD_API_CALL PFNGLVERTEX4DPROC glad_glVertex4d; +#define glVertex4d glad_glVertex4d +GLAD_API_CALL PFNGLVERTEX4DVPROC glad_glVertex4dv; +#define glVertex4dv glad_glVertex4dv +GLAD_API_CALL PFNGLVERTEX4FPROC glad_glVertex4f; +#define glVertex4f glad_glVertex4f +GLAD_API_CALL PFNGLVERTEX4FVPROC glad_glVertex4fv; +#define glVertex4fv glad_glVertex4fv +GLAD_API_CALL PFNGLVERTEX4IPROC glad_glVertex4i; +#define glVertex4i glad_glVertex4i +GLAD_API_CALL PFNGLVERTEX4IVPROC glad_glVertex4iv; +#define glVertex4iv glad_glVertex4iv +GLAD_API_CALL PFNGLVERTEX4SPROC glad_glVertex4s; +#define glVertex4s glad_glVertex4s +GLAD_API_CALL PFNGLVERTEX4SVPROC glad_glVertex4sv; +#define glVertex4sv glad_glVertex4sv +GLAD_API_CALL PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +#define glVertexAttrib1d glad_glVertexAttrib1d +GLAD_API_CALL PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +#define glVertexAttrib1dv glad_glVertexAttrib1dv +GLAD_API_CALL PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +#define glVertexAttrib1f glad_glVertexAttrib1f +GLAD_API_CALL PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +#define glVertexAttrib1fv glad_glVertexAttrib1fv +GLAD_API_CALL PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +#define glVertexAttrib1s glad_glVertexAttrib1s +GLAD_API_CALL PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +#define glVertexAttrib1sv glad_glVertexAttrib1sv +GLAD_API_CALL PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +#define glVertexAttrib2d glad_glVertexAttrib2d +GLAD_API_CALL PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +#define glVertexAttrib2dv glad_glVertexAttrib2dv +GLAD_API_CALL PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +#define glVertexAttrib2f glad_glVertexAttrib2f +GLAD_API_CALL PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +#define glVertexAttrib2fv glad_glVertexAttrib2fv +GLAD_API_CALL PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +#define glVertexAttrib2s glad_glVertexAttrib2s +GLAD_API_CALL PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +#define glVertexAttrib2sv glad_glVertexAttrib2sv +GLAD_API_CALL PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +#define glVertexAttrib3d glad_glVertexAttrib3d +GLAD_API_CALL PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +#define glVertexAttrib3dv glad_glVertexAttrib3dv +GLAD_API_CALL PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +#define glVertexAttrib3f glad_glVertexAttrib3f +GLAD_API_CALL PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +#define glVertexAttrib3fv glad_glVertexAttrib3fv +GLAD_API_CALL PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +#define glVertexAttrib3s glad_glVertexAttrib3s +GLAD_API_CALL PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +#define glVertexAttrib3sv glad_glVertexAttrib3sv +GLAD_API_CALL PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv +GLAD_API_CALL PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +#define glVertexAttrib4Niv glad_glVertexAttrib4Niv +GLAD_API_CALL PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv +GLAD_API_CALL PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +#define glVertexAttrib4Nub glad_glVertexAttrib4Nub +GLAD_API_CALL PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv +GLAD_API_CALL PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv +GLAD_API_CALL PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv +GLAD_API_CALL PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +#define glVertexAttrib4bv glad_glVertexAttrib4bv +GLAD_API_CALL PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +#define glVertexAttrib4d glad_glVertexAttrib4d +GLAD_API_CALL PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +#define glVertexAttrib4dv glad_glVertexAttrib4dv +GLAD_API_CALL PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +#define glVertexAttrib4f glad_glVertexAttrib4f +GLAD_API_CALL PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +#define glVertexAttrib4fv glad_glVertexAttrib4fv +GLAD_API_CALL PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +#define glVertexAttrib4iv glad_glVertexAttrib4iv +GLAD_API_CALL PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +#define glVertexAttrib4s glad_glVertexAttrib4s +GLAD_API_CALL PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +#define glVertexAttrib4sv glad_glVertexAttrib4sv +GLAD_API_CALL PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +#define glVertexAttrib4ubv glad_glVertexAttrib4ubv +GLAD_API_CALL PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +#define glVertexAttrib4uiv glad_glVertexAttrib4uiv +GLAD_API_CALL PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +#define glVertexAttrib4usv glad_glVertexAttrib4usv +GLAD_API_CALL PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; +#define glVertexAttribDivisor glad_glVertexAttribDivisor +GLAD_API_CALL PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +#define glVertexAttribI1i glad_glVertexAttribI1i +GLAD_API_CALL PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +#define glVertexAttribI1iv glad_glVertexAttribI1iv +GLAD_API_CALL PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +#define glVertexAttribI1ui glad_glVertexAttribI1ui +GLAD_API_CALL PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +#define glVertexAttribI1uiv glad_glVertexAttribI1uiv +GLAD_API_CALL PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +#define glVertexAttribI2i glad_glVertexAttribI2i +GLAD_API_CALL PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +#define glVertexAttribI2iv glad_glVertexAttribI2iv +GLAD_API_CALL PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +#define glVertexAttribI2ui glad_glVertexAttribI2ui +GLAD_API_CALL PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +#define glVertexAttribI2uiv glad_glVertexAttribI2uiv +GLAD_API_CALL PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +#define glVertexAttribI3i glad_glVertexAttribI3i +GLAD_API_CALL PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +#define glVertexAttribI3iv glad_glVertexAttribI3iv +GLAD_API_CALL PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +#define glVertexAttribI3ui glad_glVertexAttribI3ui +GLAD_API_CALL PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +#define glVertexAttribI3uiv glad_glVertexAttribI3uiv +GLAD_API_CALL PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +#define glVertexAttribI4bv glad_glVertexAttribI4bv +GLAD_API_CALL PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +#define glVertexAttribI4i glad_glVertexAttribI4i +GLAD_API_CALL PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +#define glVertexAttribI4iv glad_glVertexAttribI4iv +GLAD_API_CALL PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +#define glVertexAttribI4sv glad_glVertexAttribI4sv +GLAD_API_CALL PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +#define glVertexAttribI4ubv glad_glVertexAttribI4ubv +GLAD_API_CALL PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +#define glVertexAttribI4ui glad_glVertexAttribI4ui +GLAD_API_CALL PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +#define glVertexAttribI4uiv glad_glVertexAttribI4uiv +GLAD_API_CALL PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +#define glVertexAttribI4usv glad_glVertexAttribI4usv +GLAD_API_CALL PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +#define glVertexAttribIPointer glad_glVertexAttribIPointer +GLAD_API_CALL PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; +#define glVertexAttribP1ui glad_glVertexAttribP1ui +GLAD_API_CALL PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; +#define glVertexAttribP1uiv glad_glVertexAttribP1uiv +GLAD_API_CALL PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; +#define glVertexAttribP2ui glad_glVertexAttribP2ui +GLAD_API_CALL PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; +#define glVertexAttribP2uiv glad_glVertexAttribP2uiv +GLAD_API_CALL PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; +#define glVertexAttribP3ui glad_glVertexAttribP3ui +GLAD_API_CALL PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; +#define glVertexAttribP3uiv glad_glVertexAttribP3uiv +GLAD_API_CALL PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; +#define glVertexAttribP4ui glad_glVertexAttribP4ui +GLAD_API_CALL PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; +#define glVertexAttribP4uiv glad_glVertexAttribP4uiv +GLAD_API_CALL PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +#define glVertexAttribPointer glad_glVertexAttribPointer +GLAD_API_CALL PFNGLVERTEXP2UIPROC glad_glVertexP2ui; +#define glVertexP2ui glad_glVertexP2ui +GLAD_API_CALL PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; +#define glVertexP2uiv glad_glVertexP2uiv +GLAD_API_CALL PFNGLVERTEXP3UIPROC glad_glVertexP3ui; +#define glVertexP3ui glad_glVertexP3ui +GLAD_API_CALL PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; +#define glVertexP3uiv glad_glVertexP3uiv +GLAD_API_CALL PFNGLVERTEXP4UIPROC glad_glVertexP4ui; +#define glVertexP4ui glad_glVertexP4ui +GLAD_API_CALL PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; +#define glVertexP4uiv glad_glVertexP4uiv +GLAD_API_CALL PFNGLVERTEXPOINTERPROC glad_glVertexPointer; +#define glVertexPointer glad_glVertexPointer +GLAD_API_CALL PFNGLVIEWPORTPROC glad_glViewport; +#define glViewport glad_glViewport +GLAD_API_CALL PFNGLWAITSYNCPROC glad_glWaitSync; +#define glWaitSync glad_glWaitSync +GLAD_API_CALL PFNGLWINDOWPOS2DPROC glad_glWindowPos2d; +#define glWindowPos2d glad_glWindowPos2d +GLAD_API_CALL PFNGLWINDOWPOS2DVPROC glad_glWindowPos2dv; +#define glWindowPos2dv glad_glWindowPos2dv +GLAD_API_CALL PFNGLWINDOWPOS2FPROC glad_glWindowPos2f; +#define glWindowPos2f glad_glWindowPos2f +GLAD_API_CALL PFNGLWINDOWPOS2FVPROC glad_glWindowPos2fv; +#define glWindowPos2fv glad_glWindowPos2fv +GLAD_API_CALL PFNGLWINDOWPOS2IPROC glad_glWindowPos2i; +#define glWindowPos2i glad_glWindowPos2i +GLAD_API_CALL PFNGLWINDOWPOS2IVPROC glad_glWindowPos2iv; +#define glWindowPos2iv glad_glWindowPos2iv +GLAD_API_CALL PFNGLWINDOWPOS2SPROC glad_glWindowPos2s; +#define glWindowPos2s glad_glWindowPos2s +GLAD_API_CALL PFNGLWINDOWPOS2SVPROC glad_glWindowPos2sv; +#define glWindowPos2sv glad_glWindowPos2sv +GLAD_API_CALL PFNGLWINDOWPOS3DPROC glad_glWindowPos3d; +#define glWindowPos3d glad_glWindowPos3d +GLAD_API_CALL PFNGLWINDOWPOS3DVPROC glad_glWindowPos3dv; +#define glWindowPos3dv glad_glWindowPos3dv +GLAD_API_CALL PFNGLWINDOWPOS3FPROC glad_glWindowPos3f; +#define glWindowPos3f glad_glWindowPos3f +GLAD_API_CALL PFNGLWINDOWPOS3FVPROC glad_glWindowPos3fv; +#define glWindowPos3fv glad_glWindowPos3fv +GLAD_API_CALL PFNGLWINDOWPOS3IPROC glad_glWindowPos3i; +#define glWindowPos3i glad_glWindowPos3i +GLAD_API_CALL PFNGLWINDOWPOS3IVPROC glad_glWindowPos3iv; +#define glWindowPos3iv glad_glWindowPos3iv +GLAD_API_CALL PFNGLWINDOWPOS3SPROC glad_glWindowPos3s; +#define glWindowPos3s glad_glWindowPos3s +GLAD_API_CALL PFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv; +#define glWindowPos3sv glad_glWindowPos3sv + + + + + +GLAD_API_CALL int gladLoadGLUserPtr( GLADuserptrloadfunc load, void *userptr); +GLAD_API_CALL int gladLoadGL( GLADloadfunc load); + + + +#ifdef __cplusplus +} +#endif +#endif + +/* Source */ +#ifdef GLAD_GL_IMPLEMENTATION +#include +#include +#include + +#ifndef GLAD_IMPL_UTIL_C_ +#define GLAD_IMPL_UTIL_C_ + +#ifdef _MSC_VER +#define GLAD_IMPL_UTIL_SSCANF sscanf_s +#else +#define GLAD_IMPL_UTIL_SSCANF sscanf +#endif + +#endif /* GLAD_IMPL_UTIL_C_ */ + +#ifdef __cplusplus +extern "C" { +#endif + + + +int GLAD_GL_VERSION_1_0 = 0; +int GLAD_GL_VERSION_1_1 = 0; +int GLAD_GL_VERSION_1_2 = 0; +int GLAD_GL_VERSION_1_3 = 0; +int GLAD_GL_VERSION_1_4 = 0; +int GLAD_GL_VERSION_1_5 = 0; +int GLAD_GL_VERSION_2_0 = 0; +int GLAD_GL_VERSION_2_1 = 0; +int GLAD_GL_VERSION_3_0 = 0; +int GLAD_GL_VERSION_3_1 = 0; +int GLAD_GL_VERSION_3_2 = 0; +int GLAD_GL_VERSION_3_3 = 0; +int GLAD_GL_ARB_multisample = 0; +int GLAD_GL_ARB_robustness = 0; +int GLAD_GL_KHR_debug = 0; + + + +PFNGLACCUMPROC glad_glAccum = NULL; +PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; +PFNGLALPHAFUNCPROC glad_glAlphaFunc = NULL; +PFNGLARETEXTURESRESIDENTPROC glad_glAreTexturesResident = NULL; +PFNGLARRAYELEMENTPROC glad_glArrayElement = NULL; +PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; +PFNGLBEGINPROC glad_glBegin = NULL; +PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL; +PFNGLBEGINQUERYPROC glad_glBeginQuery = NULL; +PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; +PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; +PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; +PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; +PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL; +PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; +PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; +PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; +PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; +PFNGLBITMAPPROC glad_glBitmap = NULL; +PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; +PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; +PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL; +PFNGLBUFFERDATAPROC glad_glBufferData = NULL; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; +PFNGLCALLLISTPROC glad_glCallList = NULL; +PFNGLCALLLISTSPROC glad_glCallLists = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; +PFNGLCLAMPCOLORPROC glad_glClampColor = NULL; +PFNGLCLEARPROC glad_glClear = NULL; +PFNGLCLEARACCUMPROC glad_glClearAccum = NULL; +PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL; +PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL; +PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL; +PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; +PFNGLCLEARCOLORPROC glad_glClearColor = NULL; +PFNGLCLEARDEPTHPROC glad_glClearDepth = NULL; +PFNGLCLEARINDEXPROC glad_glClearIndex = NULL; +PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; +PFNGLCLIENTACTIVETEXTUREPROC glad_glClientActiveTexture = NULL; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; +PFNGLCLIPPLANEPROC glad_glClipPlane = NULL; +PFNGLCOLOR3BPROC glad_glColor3b = NULL; +PFNGLCOLOR3BVPROC glad_glColor3bv = NULL; +PFNGLCOLOR3DPROC glad_glColor3d = NULL; +PFNGLCOLOR3DVPROC glad_glColor3dv = NULL; +PFNGLCOLOR3FPROC glad_glColor3f = NULL; +PFNGLCOLOR3FVPROC glad_glColor3fv = NULL; +PFNGLCOLOR3IPROC glad_glColor3i = NULL; +PFNGLCOLOR3IVPROC glad_glColor3iv = NULL; +PFNGLCOLOR3SPROC glad_glColor3s = NULL; +PFNGLCOLOR3SVPROC glad_glColor3sv = NULL; +PFNGLCOLOR3UBPROC glad_glColor3ub = NULL; +PFNGLCOLOR3UBVPROC glad_glColor3ubv = NULL; +PFNGLCOLOR3UIPROC glad_glColor3ui = NULL; +PFNGLCOLOR3UIVPROC glad_glColor3uiv = NULL; +PFNGLCOLOR3USPROC glad_glColor3us = NULL; +PFNGLCOLOR3USVPROC glad_glColor3usv = NULL; +PFNGLCOLOR4BPROC glad_glColor4b = NULL; +PFNGLCOLOR4BVPROC glad_glColor4bv = NULL; +PFNGLCOLOR4DPROC glad_glColor4d = NULL; +PFNGLCOLOR4DVPROC glad_glColor4dv = NULL; +PFNGLCOLOR4FPROC glad_glColor4f = NULL; +PFNGLCOLOR4FVPROC glad_glColor4fv = NULL; +PFNGLCOLOR4IPROC glad_glColor4i = NULL; +PFNGLCOLOR4IVPROC glad_glColor4iv = NULL; +PFNGLCOLOR4SPROC glad_glColor4s = NULL; +PFNGLCOLOR4SVPROC glad_glColor4sv = NULL; +PFNGLCOLOR4UBPROC glad_glColor4ub = NULL; +PFNGLCOLOR4UBVPROC glad_glColor4ubv = NULL; +PFNGLCOLOR4UIPROC glad_glColor4ui = NULL; +PFNGLCOLOR4UIVPROC glad_glColor4uiv = NULL; +PFNGLCOLOR4USPROC glad_glColor4us = NULL; +PFNGLCOLOR4USVPROC glad_glColor4usv = NULL; +PFNGLCOLORMASKPROC glad_glColorMask = NULL; +PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; +PFNGLCOLORMATERIALPROC glad_glColorMaterial = NULL; +PFNGLCOLORP3UIPROC glad_glColorP3ui = NULL; +PFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL; +PFNGLCOLORP4UIPROC glad_glColorP4ui = NULL; +PFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL; +PFNGLCOLORPOINTERPROC glad_glColorPointer = NULL; +PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; +PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; +PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; +PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; +PFNGLCOPYPIXELSPROC glad_glCopyPixels = NULL; +PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; +PFNGLCREATESHADERPROC glad_glCreateShader = NULL; +PFNGLCULLFACEPROC glad_glCullFace = NULL; +PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback = NULL; +PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl = NULL; +PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert = NULL; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; +PFNGLDELETELISTSPROC glad_glDeleteLists = NULL; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; +PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; +PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; +PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; +PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; +PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; +PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; +PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; +PFNGLDEPTHRANGEPROC glad_glDepthRange = NULL; +PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; +PFNGLDISABLEPROC glad_glDisable = NULL; +PFNGLDISABLECLIENTSTATEPROC glad_glDisableClientState = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; +PFNGLDISABLEIPROC glad_glDisablei = NULL; +PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; +PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; +PFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL; +PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; +PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; +PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; +PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL; +PFNGLDRAWPIXELSPROC glad_glDrawPixels = NULL; +PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; +PFNGLEDGEFLAGPROC glad_glEdgeFlag = NULL; +PFNGLEDGEFLAGPOINTERPROC glad_glEdgeFlagPointer = NULL; +PFNGLEDGEFLAGVPROC glad_glEdgeFlagv = NULL; +PFNGLENABLEPROC glad_glEnable = NULL; +PFNGLENABLECLIENTSTATEPROC glad_glEnableClientState = NULL; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; +PFNGLENABLEIPROC glad_glEnablei = NULL; +PFNGLENDPROC glad_glEnd = NULL; +PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL; +PFNGLENDLISTPROC glad_glEndList = NULL; +PFNGLENDQUERYPROC glad_glEndQuery = NULL; +PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; +PFNGLEVALCOORD1DPROC glad_glEvalCoord1d = NULL; +PFNGLEVALCOORD1DVPROC glad_glEvalCoord1dv = NULL; +PFNGLEVALCOORD1FPROC glad_glEvalCoord1f = NULL; +PFNGLEVALCOORD1FVPROC glad_glEvalCoord1fv = NULL; +PFNGLEVALCOORD2DPROC glad_glEvalCoord2d = NULL; +PFNGLEVALCOORD2DVPROC glad_glEvalCoord2dv = NULL; +PFNGLEVALCOORD2FPROC glad_glEvalCoord2f = NULL; +PFNGLEVALCOORD2FVPROC glad_glEvalCoord2fv = NULL; +PFNGLEVALMESH1PROC glad_glEvalMesh1 = NULL; +PFNGLEVALMESH2PROC glad_glEvalMesh2 = NULL; +PFNGLEVALPOINT1PROC glad_glEvalPoint1 = NULL; +PFNGLEVALPOINT2PROC glad_glEvalPoint2 = NULL; +PFNGLFEEDBACKBUFFERPROC glad_glFeedbackBuffer = NULL; +PFNGLFENCESYNCPROC glad_glFenceSync = NULL; +PFNGLFINISHPROC glad_glFinish = NULL; +PFNGLFLUSHPROC glad_glFlush = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; +PFNGLFOGCOORDPOINTERPROC glad_glFogCoordPointer = NULL; +PFNGLFOGCOORDDPROC glad_glFogCoordd = NULL; +PFNGLFOGCOORDDVPROC glad_glFogCoorddv = NULL; +PFNGLFOGCOORDFPROC glad_glFogCoordf = NULL; +PFNGLFOGCOORDFVPROC glad_glFogCoordfv = NULL; +PFNGLFOGFPROC glad_glFogf = NULL; +PFNGLFOGFVPROC glad_glFogfv = NULL; +PFNGLFOGIPROC glad_glFogi = NULL; +PFNGLFOGIVPROC glad_glFogiv = NULL; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; +PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; +PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; +PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL; +PFNGLFRONTFACEPROC glad_glFrontFace = NULL; +PFNGLFRUSTUMPROC glad_glFrustum = NULL; +PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; +PFNGLGENLISTSPROC glad_glGenLists = NULL; +PFNGLGENQUERIESPROC glad_glGenQueries = NULL; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; +PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; +PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; +PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; +PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL; +PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; +PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; +PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; +PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; +PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL; +PFNGLGETCLIPPLANEPROC glad_glGetClipPlane = NULL; +PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL; +PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog = NULL; +PFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL; +PFNGLGETERRORPROC glad_glGetError = NULL; +PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; +PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL; +PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; +PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB = NULL; +PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; +PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; +PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; +PFNGLGETLIGHTFVPROC glad_glGetLightfv = NULL; +PFNGLGETLIGHTIVPROC glad_glGetLightiv = NULL; +PFNGLGETMAPDVPROC glad_glGetMapdv = NULL; +PFNGLGETMAPFVPROC glad_glGetMapfv = NULL; +PFNGLGETMAPIVPROC glad_glGetMapiv = NULL; +PFNGLGETMATERIALFVPROC glad_glGetMaterialfv = NULL; +PFNGLGETMATERIALIVPROC glad_glGetMaterialiv = NULL; +PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; +PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel = NULL; +PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel = NULL; +PFNGLGETPIXELMAPFVPROC glad_glGetPixelMapfv = NULL; +PFNGLGETPIXELMAPUIVPROC glad_glGetPixelMapuiv = NULL; +PFNGLGETPIXELMAPUSVPROC glad_glGetPixelMapusv = NULL; +PFNGLGETPOINTERVPROC glad_glGetPointerv = NULL; +PFNGLGETPOLYGONSTIPPLEPROC glad_glGetPolygonStipple = NULL; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; +PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL; +PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL; +PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL; +PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; +PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; +PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; +PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; +PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; +PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; +PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; +PFNGLGETSTRINGPROC glad_glGetString = NULL; +PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; +PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; +PFNGLGETTEXENVFVPROC glad_glGetTexEnvfv = NULL; +PFNGLGETTEXENVIVPROC glad_glGetTexEnviv = NULL; +PFNGLGETTEXGENDVPROC glad_glGetTexGendv = NULL; +PFNGLGETTEXGENFVPROC glad_glGetTexGenfv = NULL; +PFNGLGETTEXGENIVPROC glad_glGetTexGeniv = NULL; +PFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL; +PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; +PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; +PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL; +PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; +PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; +PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; +PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL; +PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL; +PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; +PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; +PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB = NULL; +PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB = NULL; +PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB = NULL; +PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB = NULL; +PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB = NULL; +PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB = NULL; +PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB = NULL; +PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB = NULL; +PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB = NULL; +PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB = NULL; +PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB = NULL; +PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB = NULL; +PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB = NULL; +PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB = NULL; +PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB = NULL; +PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB = NULL; +PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB = NULL; +PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB = NULL; +PFNGLHINTPROC glad_glHint = NULL; +PFNGLINDEXMASKPROC glad_glIndexMask = NULL; +PFNGLINDEXPOINTERPROC glad_glIndexPointer = NULL; +PFNGLINDEXDPROC glad_glIndexd = NULL; +PFNGLINDEXDVPROC glad_glIndexdv = NULL; +PFNGLINDEXFPROC glad_glIndexf = NULL; +PFNGLINDEXFVPROC glad_glIndexfv = NULL; +PFNGLINDEXIPROC glad_glIndexi = NULL; +PFNGLINDEXIVPROC glad_glIndexiv = NULL; +PFNGLINDEXSPROC glad_glIndexs = NULL; +PFNGLINDEXSVPROC glad_glIndexsv = NULL; +PFNGLINDEXUBPROC glad_glIndexub = NULL; +PFNGLINDEXUBVPROC glad_glIndexubv = NULL; +PFNGLINITNAMESPROC glad_glInitNames = NULL; +PFNGLINTERLEAVEDARRAYSPROC glad_glInterleavedArrays = NULL; +PFNGLISBUFFERPROC glad_glIsBuffer = NULL; +PFNGLISENABLEDPROC glad_glIsEnabled = NULL; +PFNGLISENABLEDIPROC glad_glIsEnabledi = NULL; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; +PFNGLISLISTPROC glad_glIsList = NULL; +PFNGLISPROGRAMPROC glad_glIsProgram = NULL; +PFNGLISQUERYPROC glad_glIsQuery = NULL; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; +PFNGLISSAMPLERPROC glad_glIsSampler = NULL; +PFNGLISSHADERPROC glad_glIsShader = NULL; +PFNGLISSYNCPROC glad_glIsSync = NULL; +PFNGLISTEXTUREPROC glad_glIsTexture = NULL; +PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; +PFNGLLIGHTMODELFPROC glad_glLightModelf = NULL; +PFNGLLIGHTMODELFVPROC glad_glLightModelfv = NULL; +PFNGLLIGHTMODELIPROC glad_glLightModeli = NULL; +PFNGLLIGHTMODELIVPROC glad_glLightModeliv = NULL; +PFNGLLIGHTFPROC glad_glLightf = NULL; +PFNGLLIGHTFVPROC glad_glLightfv = NULL; +PFNGLLIGHTIPROC glad_glLighti = NULL; +PFNGLLIGHTIVPROC glad_glLightiv = NULL; +PFNGLLINESTIPPLEPROC glad_glLineStipple = NULL; +PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; +PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; +PFNGLLISTBASEPROC glad_glListBase = NULL; +PFNGLLOADIDENTITYPROC glad_glLoadIdentity = NULL; +PFNGLLOADMATRIXDPROC glad_glLoadMatrixd = NULL; +PFNGLLOADMATRIXFPROC glad_glLoadMatrixf = NULL; +PFNGLLOADNAMEPROC glad_glLoadName = NULL; +PFNGLLOADTRANSPOSEMATRIXDPROC glad_glLoadTransposeMatrixd = NULL; +PFNGLLOADTRANSPOSEMATRIXFPROC glad_glLoadTransposeMatrixf = NULL; +PFNGLLOGICOPPROC glad_glLogicOp = NULL; +PFNGLMAP1DPROC glad_glMap1d = NULL; +PFNGLMAP1FPROC glad_glMap1f = NULL; +PFNGLMAP2DPROC glad_glMap2d = NULL; +PFNGLMAP2FPROC glad_glMap2f = NULL; +PFNGLMAPBUFFERPROC glad_glMapBuffer = NULL; +PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; +PFNGLMAPGRID1DPROC glad_glMapGrid1d = NULL; +PFNGLMAPGRID1FPROC glad_glMapGrid1f = NULL; +PFNGLMAPGRID2DPROC glad_glMapGrid2d = NULL; +PFNGLMAPGRID2FPROC glad_glMapGrid2f = NULL; +PFNGLMATERIALFPROC glad_glMaterialf = NULL; +PFNGLMATERIALFVPROC glad_glMaterialfv = NULL; +PFNGLMATERIALIPROC glad_glMateriali = NULL; +PFNGLMATERIALIVPROC glad_glMaterialiv = NULL; +PFNGLMATRIXMODEPROC glad_glMatrixMode = NULL; +PFNGLMULTMATRIXDPROC glad_glMultMatrixd = NULL; +PFNGLMULTMATRIXFPROC glad_glMultMatrixf = NULL; +PFNGLMULTTRANSPOSEMATRIXDPROC glad_glMultTransposeMatrixd = NULL; +PFNGLMULTTRANSPOSEMATRIXFPROC glad_glMultTransposeMatrixf = NULL; +PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL; +PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL; +PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL; +PFNGLMULTITEXCOORD1DPROC glad_glMultiTexCoord1d = NULL; +PFNGLMULTITEXCOORD1DVPROC glad_glMultiTexCoord1dv = NULL; +PFNGLMULTITEXCOORD1FPROC glad_glMultiTexCoord1f = NULL; +PFNGLMULTITEXCOORD1FVPROC glad_glMultiTexCoord1fv = NULL; +PFNGLMULTITEXCOORD1IPROC glad_glMultiTexCoord1i = NULL; +PFNGLMULTITEXCOORD1IVPROC glad_glMultiTexCoord1iv = NULL; +PFNGLMULTITEXCOORD1SPROC glad_glMultiTexCoord1s = NULL; +PFNGLMULTITEXCOORD1SVPROC glad_glMultiTexCoord1sv = NULL; +PFNGLMULTITEXCOORD2DPROC glad_glMultiTexCoord2d = NULL; +PFNGLMULTITEXCOORD2DVPROC glad_glMultiTexCoord2dv = NULL; +PFNGLMULTITEXCOORD2FPROC glad_glMultiTexCoord2f = NULL; +PFNGLMULTITEXCOORD2FVPROC glad_glMultiTexCoord2fv = NULL; +PFNGLMULTITEXCOORD2IPROC glad_glMultiTexCoord2i = NULL; +PFNGLMULTITEXCOORD2IVPROC glad_glMultiTexCoord2iv = NULL; +PFNGLMULTITEXCOORD2SPROC glad_glMultiTexCoord2s = NULL; +PFNGLMULTITEXCOORD2SVPROC glad_glMultiTexCoord2sv = NULL; +PFNGLMULTITEXCOORD3DPROC glad_glMultiTexCoord3d = NULL; +PFNGLMULTITEXCOORD3DVPROC glad_glMultiTexCoord3dv = NULL; +PFNGLMULTITEXCOORD3FPROC glad_glMultiTexCoord3f = NULL; +PFNGLMULTITEXCOORD3FVPROC glad_glMultiTexCoord3fv = NULL; +PFNGLMULTITEXCOORD3IPROC glad_glMultiTexCoord3i = NULL; +PFNGLMULTITEXCOORD3IVPROC glad_glMultiTexCoord3iv = NULL; +PFNGLMULTITEXCOORD3SPROC glad_glMultiTexCoord3s = NULL; +PFNGLMULTITEXCOORD3SVPROC glad_glMultiTexCoord3sv = NULL; +PFNGLMULTITEXCOORD4DPROC glad_glMultiTexCoord4d = NULL; +PFNGLMULTITEXCOORD4DVPROC glad_glMultiTexCoord4dv = NULL; +PFNGLMULTITEXCOORD4FPROC glad_glMultiTexCoord4f = NULL; +PFNGLMULTITEXCOORD4FVPROC glad_glMultiTexCoord4fv = NULL; +PFNGLMULTITEXCOORD4IPROC glad_glMultiTexCoord4i = NULL; +PFNGLMULTITEXCOORD4IVPROC glad_glMultiTexCoord4iv = NULL; +PFNGLMULTITEXCOORD4SPROC glad_glMultiTexCoord4s = NULL; +PFNGLMULTITEXCOORD4SVPROC glad_glMultiTexCoord4sv = NULL; +PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL; +PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL; +PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL; +PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL; +PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL; +PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL; +PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL; +PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL; +PFNGLNEWLISTPROC glad_glNewList = NULL; +PFNGLNORMAL3BPROC glad_glNormal3b = NULL; +PFNGLNORMAL3BVPROC glad_glNormal3bv = NULL; +PFNGLNORMAL3DPROC glad_glNormal3d = NULL; +PFNGLNORMAL3DVPROC glad_glNormal3dv = NULL; +PFNGLNORMAL3FPROC glad_glNormal3f = NULL; +PFNGLNORMAL3FVPROC glad_glNormal3fv = NULL; +PFNGLNORMAL3IPROC glad_glNormal3i = NULL; +PFNGLNORMAL3IVPROC glad_glNormal3iv = NULL; +PFNGLNORMAL3SPROC glad_glNormal3s = NULL; +PFNGLNORMAL3SVPROC glad_glNormal3sv = NULL; +PFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL; +PFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL; +PFNGLNORMALPOINTERPROC glad_glNormalPointer = NULL; +PFNGLOBJECTLABELPROC glad_glObjectLabel = NULL; +PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel = NULL; +PFNGLORTHOPROC glad_glOrtho = NULL; +PFNGLPASSTHROUGHPROC glad_glPassThrough = NULL; +PFNGLPIXELMAPFVPROC glad_glPixelMapfv = NULL; +PFNGLPIXELMAPUIVPROC glad_glPixelMapuiv = NULL; +PFNGLPIXELMAPUSVPROC glad_glPixelMapusv = NULL; +PFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL; +PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; +PFNGLPIXELTRANSFERFPROC glad_glPixelTransferf = NULL; +PFNGLPIXELTRANSFERIPROC glad_glPixelTransferi = NULL; +PFNGLPIXELZOOMPROC glad_glPixelZoom = NULL; +PFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL; +PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL; +PFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL; +PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL; +PFNGLPOINTSIZEPROC glad_glPointSize = NULL; +PFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; +PFNGLPOLYGONSTIPPLEPROC glad_glPolygonStipple = NULL; +PFNGLPOPATTRIBPROC glad_glPopAttrib = NULL; +PFNGLPOPCLIENTATTRIBPROC glad_glPopClientAttrib = NULL; +PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup = NULL; +PFNGLPOPMATRIXPROC glad_glPopMatrix = NULL; +PFNGLPOPNAMEPROC glad_glPopName = NULL; +PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL; +PFNGLPRIORITIZETEXTURESPROC glad_glPrioritizeTextures = NULL; +PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL; +PFNGLPUSHATTRIBPROC glad_glPushAttrib = NULL; +PFNGLPUSHCLIENTATTRIBPROC glad_glPushClientAttrib = NULL; +PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup = NULL; +PFNGLPUSHMATRIXPROC glad_glPushMatrix = NULL; +PFNGLPUSHNAMEPROC glad_glPushName = NULL; +PFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL; +PFNGLRASTERPOS2DPROC glad_glRasterPos2d = NULL; +PFNGLRASTERPOS2DVPROC glad_glRasterPos2dv = NULL; +PFNGLRASTERPOS2FPROC glad_glRasterPos2f = NULL; +PFNGLRASTERPOS2FVPROC glad_glRasterPos2fv = NULL; +PFNGLRASTERPOS2IPROC glad_glRasterPos2i = NULL; +PFNGLRASTERPOS2IVPROC glad_glRasterPos2iv = NULL; +PFNGLRASTERPOS2SPROC glad_glRasterPos2s = NULL; +PFNGLRASTERPOS2SVPROC glad_glRasterPos2sv = NULL; +PFNGLRASTERPOS3DPROC glad_glRasterPos3d = NULL; +PFNGLRASTERPOS3DVPROC glad_glRasterPos3dv = NULL; +PFNGLRASTERPOS3FPROC glad_glRasterPos3f = NULL; +PFNGLRASTERPOS3FVPROC glad_glRasterPos3fv = NULL; +PFNGLRASTERPOS3IPROC glad_glRasterPos3i = NULL; +PFNGLRASTERPOS3IVPROC glad_glRasterPos3iv = NULL; +PFNGLRASTERPOS3SPROC glad_glRasterPos3s = NULL; +PFNGLRASTERPOS3SVPROC glad_glRasterPos3sv = NULL; +PFNGLRASTERPOS4DPROC glad_glRasterPos4d = NULL; +PFNGLRASTERPOS4DVPROC glad_glRasterPos4dv = NULL; +PFNGLRASTERPOS4FPROC glad_glRasterPos4f = NULL; +PFNGLRASTERPOS4FVPROC glad_glRasterPos4fv = NULL; +PFNGLRASTERPOS4IPROC glad_glRasterPos4i = NULL; +PFNGLRASTERPOS4IVPROC glad_glRasterPos4iv = NULL; +PFNGLRASTERPOS4SPROC glad_glRasterPos4s = NULL; +PFNGLRASTERPOS4SVPROC glad_glRasterPos4sv = NULL; +PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; +PFNGLREADPIXELSPROC glad_glReadPixels = NULL; +PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB = NULL; +PFNGLRECTDPROC glad_glRectd = NULL; +PFNGLRECTDVPROC glad_glRectdv = NULL; +PFNGLRECTFPROC glad_glRectf = NULL; +PFNGLRECTFVPROC glad_glRectfv = NULL; +PFNGLRECTIPROC glad_glRecti = NULL; +PFNGLRECTIVPROC glad_glRectiv = NULL; +PFNGLRECTSPROC glad_glRects = NULL; +PFNGLRECTSVPROC glad_glRectsv = NULL; +PFNGLRENDERMODEPROC glad_glRenderMode = NULL; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL; +PFNGLROTATEDPROC glad_glRotated = NULL; +PFNGLROTATEFPROC glad_glRotatef = NULL; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; +PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB = NULL; +PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; +PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; +PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; +PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; +PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; +PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; +PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; +PFNGLSCALEDPROC glad_glScaled = NULL; +PFNGLSCALEFPROC glad_glScalef = NULL; +PFNGLSCISSORPROC glad_glScissor = NULL; +PFNGLSECONDARYCOLOR3BPROC glad_glSecondaryColor3b = NULL; +PFNGLSECONDARYCOLOR3BVPROC glad_glSecondaryColor3bv = NULL; +PFNGLSECONDARYCOLOR3DPROC glad_glSecondaryColor3d = NULL; +PFNGLSECONDARYCOLOR3DVPROC glad_glSecondaryColor3dv = NULL; +PFNGLSECONDARYCOLOR3FPROC glad_glSecondaryColor3f = NULL; +PFNGLSECONDARYCOLOR3FVPROC glad_glSecondaryColor3fv = NULL; +PFNGLSECONDARYCOLOR3IPROC glad_glSecondaryColor3i = NULL; +PFNGLSECONDARYCOLOR3IVPROC glad_glSecondaryColor3iv = NULL; +PFNGLSECONDARYCOLOR3SPROC glad_glSecondaryColor3s = NULL; +PFNGLSECONDARYCOLOR3SVPROC glad_glSecondaryColor3sv = NULL; +PFNGLSECONDARYCOLOR3UBPROC glad_glSecondaryColor3ub = NULL; +PFNGLSECONDARYCOLOR3UBVPROC glad_glSecondaryColor3ubv = NULL; +PFNGLSECONDARYCOLOR3UIPROC glad_glSecondaryColor3ui = NULL; +PFNGLSECONDARYCOLOR3UIVPROC glad_glSecondaryColor3uiv = NULL; +PFNGLSECONDARYCOLOR3USPROC glad_glSecondaryColor3us = NULL; +PFNGLSECONDARYCOLOR3USVPROC glad_glSecondaryColor3usv = NULL; +PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL; +PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL; +PFNGLSECONDARYCOLORPOINTERPROC glad_glSecondaryColorPointer = NULL; +PFNGLSELECTBUFFERPROC glad_glSelectBuffer = NULL; +PFNGLSHADEMODELPROC glad_glShadeModel = NULL; +PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; +PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; +PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; +PFNGLSTENCILOPPROC glad_glStencilOp = NULL; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; +PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; +PFNGLTEXCOORD1DPROC glad_glTexCoord1d = NULL; +PFNGLTEXCOORD1DVPROC glad_glTexCoord1dv = NULL; +PFNGLTEXCOORD1FPROC glad_glTexCoord1f = NULL; +PFNGLTEXCOORD1FVPROC glad_glTexCoord1fv = NULL; +PFNGLTEXCOORD1IPROC glad_glTexCoord1i = NULL; +PFNGLTEXCOORD1IVPROC glad_glTexCoord1iv = NULL; +PFNGLTEXCOORD1SPROC glad_glTexCoord1s = NULL; +PFNGLTEXCOORD1SVPROC glad_glTexCoord1sv = NULL; +PFNGLTEXCOORD2DPROC glad_glTexCoord2d = NULL; +PFNGLTEXCOORD2DVPROC glad_glTexCoord2dv = NULL; +PFNGLTEXCOORD2FPROC glad_glTexCoord2f = NULL; +PFNGLTEXCOORD2FVPROC glad_glTexCoord2fv = NULL; +PFNGLTEXCOORD2IPROC glad_glTexCoord2i = NULL; +PFNGLTEXCOORD2IVPROC glad_glTexCoord2iv = NULL; +PFNGLTEXCOORD2SPROC glad_glTexCoord2s = NULL; +PFNGLTEXCOORD2SVPROC glad_glTexCoord2sv = NULL; +PFNGLTEXCOORD3DPROC glad_glTexCoord3d = NULL; +PFNGLTEXCOORD3DVPROC glad_glTexCoord3dv = NULL; +PFNGLTEXCOORD3FPROC glad_glTexCoord3f = NULL; +PFNGLTEXCOORD3FVPROC glad_glTexCoord3fv = NULL; +PFNGLTEXCOORD3IPROC glad_glTexCoord3i = NULL; +PFNGLTEXCOORD3IVPROC glad_glTexCoord3iv = NULL; +PFNGLTEXCOORD3SPROC glad_glTexCoord3s = NULL; +PFNGLTEXCOORD3SVPROC glad_glTexCoord3sv = NULL; +PFNGLTEXCOORD4DPROC glad_glTexCoord4d = NULL; +PFNGLTEXCOORD4DVPROC glad_glTexCoord4dv = NULL; +PFNGLTEXCOORD4FPROC glad_glTexCoord4f = NULL; +PFNGLTEXCOORD4FVPROC glad_glTexCoord4fv = NULL; +PFNGLTEXCOORD4IPROC glad_glTexCoord4i = NULL; +PFNGLTEXCOORD4IVPROC glad_glTexCoord4iv = NULL; +PFNGLTEXCOORD4SPROC glad_glTexCoord4s = NULL; +PFNGLTEXCOORD4SVPROC glad_glTexCoord4sv = NULL; +PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL; +PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL; +PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL; +PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL; +PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL; +PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL; +PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL; +PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL; +PFNGLTEXCOORDPOINTERPROC glad_glTexCoordPointer = NULL; +PFNGLTEXENVFPROC glad_glTexEnvf = NULL; +PFNGLTEXENVFVPROC glad_glTexEnvfv = NULL; +PFNGLTEXENVIPROC glad_glTexEnvi = NULL; +PFNGLTEXENVIVPROC glad_glTexEnviv = NULL; +PFNGLTEXGENDPROC glad_glTexGend = NULL; +PFNGLTEXGENDVPROC glad_glTexGendv = NULL; +PFNGLTEXGENFPROC glad_glTexGenf = NULL; +PFNGLTEXGENFVPROC glad_glTexGenfv = NULL; +PFNGLTEXGENIPROC glad_glTexGeni = NULL; +PFNGLTEXGENIVPROC glad_glTexGeniv = NULL; +PFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; +PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL; +PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; +PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL; +PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; +PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; +PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; +PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL; +PFNGLTRANSLATEDPROC glad_glTranslated = NULL; +PFNGLTRANSLATEFPROC glad_glTranslatef = NULL; +PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; +PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; +PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; +PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; +PFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL; +PFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL; +PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; +PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; +PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; +PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; +PFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL; +PFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL; +PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; +PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; +PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; +PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; +PFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL; +PFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL; +PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; +PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; +PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; +PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; +PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; +PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; +PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; +PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; +PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; +PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL; +PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; +PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL; +PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL; +PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL; +PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; +PFNGLVERTEX2DPROC glad_glVertex2d = NULL; +PFNGLVERTEX2DVPROC glad_glVertex2dv = NULL; +PFNGLVERTEX2FPROC glad_glVertex2f = NULL; +PFNGLVERTEX2FVPROC glad_glVertex2fv = NULL; +PFNGLVERTEX2IPROC glad_glVertex2i = NULL; +PFNGLVERTEX2IVPROC glad_glVertex2iv = NULL; +PFNGLVERTEX2SPROC glad_glVertex2s = NULL; +PFNGLVERTEX2SVPROC glad_glVertex2sv = NULL; +PFNGLVERTEX3DPROC glad_glVertex3d = NULL; +PFNGLVERTEX3DVPROC glad_glVertex3dv = NULL; +PFNGLVERTEX3FPROC glad_glVertex3f = NULL; +PFNGLVERTEX3FVPROC glad_glVertex3fv = NULL; +PFNGLVERTEX3IPROC glad_glVertex3i = NULL; +PFNGLVERTEX3IVPROC glad_glVertex3iv = NULL; +PFNGLVERTEX3SPROC glad_glVertex3s = NULL; +PFNGLVERTEX3SVPROC glad_glVertex3sv = NULL; +PFNGLVERTEX4DPROC glad_glVertex4d = NULL; +PFNGLVERTEX4DVPROC glad_glVertex4dv = NULL; +PFNGLVERTEX4FPROC glad_glVertex4f = NULL; +PFNGLVERTEX4FVPROC glad_glVertex4fv = NULL; +PFNGLVERTEX4IPROC glad_glVertex4i = NULL; +PFNGLVERTEX4IVPROC glad_glVertex4iv = NULL; +PFNGLVERTEX4SPROC glad_glVertex4s = NULL; +PFNGLVERTEX4SVPROC glad_glVertex4sv = NULL; +PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL; +PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; +PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL; +PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL; +PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL; +PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; +PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL; +PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL; +PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL; +PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; +PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL; +PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL; +PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL; +PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL; +PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL; +PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL; +PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL; +PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL; +PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL; +PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL; +PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL; +PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; +PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL; +PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL; +PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL; +PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL; +PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL; +PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL; +PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; +PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL; +PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL; +PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL; +PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL; +PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL; +PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL; +PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL; +PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL; +PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL; +PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL; +PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL; +PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL; +PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL; +PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL; +PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL; +PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL; +PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL; +PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; +PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; +PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL; +PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; +PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL; +PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL; +PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL; +PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL; +PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL; +PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL; +PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL; +PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; +PFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL; +PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL; +PFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL; +PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL; +PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; +PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; +PFNGLVERTEXPOINTERPROC glad_glVertexPointer = NULL; +PFNGLVIEWPORTPROC glad_glViewport = NULL; +PFNGLWAITSYNCPROC glad_glWaitSync = NULL; +PFNGLWINDOWPOS2DPROC glad_glWindowPos2d = NULL; +PFNGLWINDOWPOS2DVPROC glad_glWindowPos2dv = NULL; +PFNGLWINDOWPOS2FPROC glad_glWindowPos2f = NULL; +PFNGLWINDOWPOS2FVPROC glad_glWindowPos2fv = NULL; +PFNGLWINDOWPOS2IPROC glad_glWindowPos2i = NULL; +PFNGLWINDOWPOS2IVPROC glad_glWindowPos2iv = NULL; +PFNGLWINDOWPOS2SPROC glad_glWindowPos2s = NULL; +PFNGLWINDOWPOS2SVPROC glad_glWindowPos2sv = NULL; +PFNGLWINDOWPOS3DPROC glad_glWindowPos3d = NULL; +PFNGLWINDOWPOS3DVPROC glad_glWindowPos3dv = NULL; +PFNGLWINDOWPOS3FPROC glad_glWindowPos3f = NULL; +PFNGLWINDOWPOS3FVPROC glad_glWindowPos3fv = NULL; +PFNGLWINDOWPOS3IPROC glad_glWindowPos3i = NULL; +PFNGLWINDOWPOS3IVPROC glad_glWindowPos3iv = NULL; +PFNGLWINDOWPOS3SPROC glad_glWindowPos3s = NULL; +PFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv = NULL; + + +static void glad_gl_load_GL_VERSION_1_0( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_1_0) return; + glad_glAccum = (PFNGLACCUMPROC) load(userptr, "glAccum"); + glad_glAlphaFunc = (PFNGLALPHAFUNCPROC) load(userptr, "glAlphaFunc"); + glad_glBegin = (PFNGLBEGINPROC) load(userptr, "glBegin"); + glad_glBitmap = (PFNGLBITMAPPROC) load(userptr, "glBitmap"); + glad_glBlendFunc = (PFNGLBLENDFUNCPROC) load(userptr, "glBlendFunc"); + glad_glCallList = (PFNGLCALLLISTPROC) load(userptr, "glCallList"); + glad_glCallLists = (PFNGLCALLLISTSPROC) load(userptr, "glCallLists"); + glad_glClear = (PFNGLCLEARPROC) load(userptr, "glClear"); + glad_glClearAccum = (PFNGLCLEARACCUMPROC) load(userptr, "glClearAccum"); + glad_glClearColor = (PFNGLCLEARCOLORPROC) load(userptr, "glClearColor"); + glad_glClearDepth = (PFNGLCLEARDEPTHPROC) load(userptr, "glClearDepth"); + glad_glClearIndex = (PFNGLCLEARINDEXPROC) load(userptr, "glClearIndex"); + glad_glClearStencil = (PFNGLCLEARSTENCILPROC) load(userptr, "glClearStencil"); + glad_glClipPlane = (PFNGLCLIPPLANEPROC) load(userptr, "glClipPlane"); + glad_glColor3b = (PFNGLCOLOR3BPROC) load(userptr, "glColor3b"); + glad_glColor3bv = (PFNGLCOLOR3BVPROC) load(userptr, "glColor3bv"); + glad_glColor3d = (PFNGLCOLOR3DPROC) load(userptr, "glColor3d"); + glad_glColor3dv = (PFNGLCOLOR3DVPROC) load(userptr, "glColor3dv"); + glad_glColor3f = (PFNGLCOLOR3FPROC) load(userptr, "glColor3f"); + glad_glColor3fv = (PFNGLCOLOR3FVPROC) load(userptr, "glColor3fv"); + glad_glColor3i = (PFNGLCOLOR3IPROC) load(userptr, "glColor3i"); + glad_glColor3iv = (PFNGLCOLOR3IVPROC) load(userptr, "glColor3iv"); + glad_glColor3s = (PFNGLCOLOR3SPROC) load(userptr, "glColor3s"); + glad_glColor3sv = (PFNGLCOLOR3SVPROC) load(userptr, "glColor3sv"); + glad_glColor3ub = (PFNGLCOLOR3UBPROC) load(userptr, "glColor3ub"); + glad_glColor3ubv = (PFNGLCOLOR3UBVPROC) load(userptr, "glColor3ubv"); + glad_glColor3ui = (PFNGLCOLOR3UIPROC) load(userptr, "glColor3ui"); + glad_glColor3uiv = (PFNGLCOLOR3UIVPROC) load(userptr, "glColor3uiv"); + glad_glColor3us = (PFNGLCOLOR3USPROC) load(userptr, "glColor3us"); + glad_glColor3usv = (PFNGLCOLOR3USVPROC) load(userptr, "glColor3usv"); + glad_glColor4b = (PFNGLCOLOR4BPROC) load(userptr, "glColor4b"); + glad_glColor4bv = (PFNGLCOLOR4BVPROC) load(userptr, "glColor4bv"); + glad_glColor4d = (PFNGLCOLOR4DPROC) load(userptr, "glColor4d"); + glad_glColor4dv = (PFNGLCOLOR4DVPROC) load(userptr, "glColor4dv"); + glad_glColor4f = (PFNGLCOLOR4FPROC) load(userptr, "glColor4f"); + glad_glColor4fv = (PFNGLCOLOR4FVPROC) load(userptr, "glColor4fv"); + glad_glColor4i = (PFNGLCOLOR4IPROC) load(userptr, "glColor4i"); + glad_glColor4iv = (PFNGLCOLOR4IVPROC) load(userptr, "glColor4iv"); + glad_glColor4s = (PFNGLCOLOR4SPROC) load(userptr, "glColor4s"); + glad_glColor4sv = (PFNGLCOLOR4SVPROC) load(userptr, "glColor4sv"); + glad_glColor4ub = (PFNGLCOLOR4UBPROC) load(userptr, "glColor4ub"); + glad_glColor4ubv = (PFNGLCOLOR4UBVPROC) load(userptr, "glColor4ubv"); + glad_glColor4ui = (PFNGLCOLOR4UIPROC) load(userptr, "glColor4ui"); + glad_glColor4uiv = (PFNGLCOLOR4UIVPROC) load(userptr, "glColor4uiv"); + glad_glColor4us = (PFNGLCOLOR4USPROC) load(userptr, "glColor4us"); + glad_glColor4usv = (PFNGLCOLOR4USVPROC) load(userptr, "glColor4usv"); + glad_glColorMask = (PFNGLCOLORMASKPROC) load(userptr, "glColorMask"); + glad_glColorMaterial = (PFNGLCOLORMATERIALPROC) load(userptr, "glColorMaterial"); + glad_glCopyPixels = (PFNGLCOPYPIXELSPROC) load(userptr, "glCopyPixels"); + glad_glCullFace = (PFNGLCULLFACEPROC) load(userptr, "glCullFace"); + glad_glDeleteLists = (PFNGLDELETELISTSPROC) load(userptr, "glDeleteLists"); + glad_glDepthFunc = (PFNGLDEPTHFUNCPROC) load(userptr, "glDepthFunc"); + glad_glDepthMask = (PFNGLDEPTHMASKPROC) load(userptr, "glDepthMask"); + glad_glDepthRange = (PFNGLDEPTHRANGEPROC) load(userptr, "glDepthRange"); + glad_glDisable = (PFNGLDISABLEPROC) load(userptr, "glDisable"); + glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC) load(userptr, "glDrawBuffer"); + glad_glDrawPixels = (PFNGLDRAWPIXELSPROC) load(userptr, "glDrawPixels"); + glad_glEdgeFlag = (PFNGLEDGEFLAGPROC) load(userptr, "glEdgeFlag"); + glad_glEdgeFlagv = (PFNGLEDGEFLAGVPROC) load(userptr, "glEdgeFlagv"); + glad_glEnable = (PFNGLENABLEPROC) load(userptr, "glEnable"); + glad_glEnd = (PFNGLENDPROC) load(userptr, "glEnd"); + glad_glEndList = (PFNGLENDLISTPROC) load(userptr, "glEndList"); + glad_glEvalCoord1d = (PFNGLEVALCOORD1DPROC) load(userptr, "glEvalCoord1d"); + glad_glEvalCoord1dv = (PFNGLEVALCOORD1DVPROC) load(userptr, "glEvalCoord1dv"); + glad_glEvalCoord1f = (PFNGLEVALCOORD1FPROC) load(userptr, "glEvalCoord1f"); + glad_glEvalCoord1fv = (PFNGLEVALCOORD1FVPROC) load(userptr, "glEvalCoord1fv"); + glad_glEvalCoord2d = (PFNGLEVALCOORD2DPROC) load(userptr, "glEvalCoord2d"); + glad_glEvalCoord2dv = (PFNGLEVALCOORD2DVPROC) load(userptr, "glEvalCoord2dv"); + glad_glEvalCoord2f = (PFNGLEVALCOORD2FPROC) load(userptr, "glEvalCoord2f"); + glad_glEvalCoord2fv = (PFNGLEVALCOORD2FVPROC) load(userptr, "glEvalCoord2fv"); + glad_glEvalMesh1 = (PFNGLEVALMESH1PROC) load(userptr, "glEvalMesh1"); + glad_glEvalMesh2 = (PFNGLEVALMESH2PROC) load(userptr, "glEvalMesh2"); + glad_glEvalPoint1 = (PFNGLEVALPOINT1PROC) load(userptr, "glEvalPoint1"); + glad_glEvalPoint2 = (PFNGLEVALPOINT2PROC) load(userptr, "glEvalPoint2"); + glad_glFeedbackBuffer = (PFNGLFEEDBACKBUFFERPROC) load(userptr, "glFeedbackBuffer"); + glad_glFinish = (PFNGLFINISHPROC) load(userptr, "glFinish"); + glad_glFlush = (PFNGLFLUSHPROC) load(userptr, "glFlush"); + glad_glFogf = (PFNGLFOGFPROC) load(userptr, "glFogf"); + glad_glFogfv = (PFNGLFOGFVPROC) load(userptr, "glFogfv"); + glad_glFogi = (PFNGLFOGIPROC) load(userptr, "glFogi"); + glad_glFogiv = (PFNGLFOGIVPROC) load(userptr, "glFogiv"); + glad_glFrontFace = (PFNGLFRONTFACEPROC) load(userptr, "glFrontFace"); + glad_glFrustum = (PFNGLFRUSTUMPROC) load(userptr, "glFrustum"); + glad_glGenLists = (PFNGLGENLISTSPROC) load(userptr, "glGenLists"); + glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC) load(userptr, "glGetBooleanv"); + glad_glGetClipPlane = (PFNGLGETCLIPPLANEPROC) load(userptr, "glGetClipPlane"); + glad_glGetDoublev = (PFNGLGETDOUBLEVPROC) load(userptr, "glGetDoublev"); + glad_glGetError = (PFNGLGETERRORPROC) load(userptr, "glGetError"); + glad_glGetFloatv = (PFNGLGETFLOATVPROC) load(userptr, "glGetFloatv"); + glad_glGetIntegerv = (PFNGLGETINTEGERVPROC) load(userptr, "glGetIntegerv"); + glad_glGetLightfv = (PFNGLGETLIGHTFVPROC) load(userptr, "glGetLightfv"); + glad_glGetLightiv = (PFNGLGETLIGHTIVPROC) load(userptr, "glGetLightiv"); + glad_glGetMapdv = (PFNGLGETMAPDVPROC) load(userptr, "glGetMapdv"); + glad_glGetMapfv = (PFNGLGETMAPFVPROC) load(userptr, "glGetMapfv"); + glad_glGetMapiv = (PFNGLGETMAPIVPROC) load(userptr, "glGetMapiv"); + glad_glGetMaterialfv = (PFNGLGETMATERIALFVPROC) load(userptr, "glGetMaterialfv"); + glad_glGetMaterialiv = (PFNGLGETMATERIALIVPROC) load(userptr, "glGetMaterialiv"); + glad_glGetPixelMapfv = (PFNGLGETPIXELMAPFVPROC) load(userptr, "glGetPixelMapfv"); + glad_glGetPixelMapuiv = (PFNGLGETPIXELMAPUIVPROC) load(userptr, "glGetPixelMapuiv"); + glad_glGetPixelMapusv = (PFNGLGETPIXELMAPUSVPROC) load(userptr, "glGetPixelMapusv"); + glad_glGetPolygonStipple = (PFNGLGETPOLYGONSTIPPLEPROC) load(userptr, "glGetPolygonStipple"); + glad_glGetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); + glad_glGetTexEnvfv = (PFNGLGETTEXENVFVPROC) load(userptr, "glGetTexEnvfv"); + glad_glGetTexEnviv = (PFNGLGETTEXENVIVPROC) load(userptr, "glGetTexEnviv"); + glad_glGetTexGendv = (PFNGLGETTEXGENDVPROC) load(userptr, "glGetTexGendv"); + glad_glGetTexGenfv = (PFNGLGETTEXGENFVPROC) load(userptr, "glGetTexGenfv"); + glad_glGetTexGeniv = (PFNGLGETTEXGENIVPROC) load(userptr, "glGetTexGeniv"); + glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC) load(userptr, "glGetTexImage"); + glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC) load(userptr, "glGetTexLevelParameterfv"); + glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC) load(userptr, "glGetTexLevelParameteriv"); + glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC) load(userptr, "glGetTexParameterfv"); + glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC) load(userptr, "glGetTexParameteriv"); + glad_glHint = (PFNGLHINTPROC) load(userptr, "glHint"); + glad_glIndexMask = (PFNGLINDEXMASKPROC) load(userptr, "glIndexMask"); + glad_glIndexd = (PFNGLINDEXDPROC) load(userptr, "glIndexd"); + glad_glIndexdv = (PFNGLINDEXDVPROC) load(userptr, "glIndexdv"); + glad_glIndexf = (PFNGLINDEXFPROC) load(userptr, "glIndexf"); + glad_glIndexfv = (PFNGLINDEXFVPROC) load(userptr, "glIndexfv"); + glad_glIndexi = (PFNGLINDEXIPROC) load(userptr, "glIndexi"); + glad_glIndexiv = (PFNGLINDEXIVPROC) load(userptr, "glIndexiv"); + glad_glIndexs = (PFNGLINDEXSPROC) load(userptr, "glIndexs"); + glad_glIndexsv = (PFNGLINDEXSVPROC) load(userptr, "glIndexsv"); + glad_glInitNames = (PFNGLINITNAMESPROC) load(userptr, "glInitNames"); + glad_glIsEnabled = (PFNGLISENABLEDPROC) load(userptr, "glIsEnabled"); + glad_glIsList = (PFNGLISLISTPROC) load(userptr, "glIsList"); + glad_glLightModelf = (PFNGLLIGHTMODELFPROC) load(userptr, "glLightModelf"); + glad_glLightModelfv = (PFNGLLIGHTMODELFVPROC) load(userptr, "glLightModelfv"); + glad_glLightModeli = (PFNGLLIGHTMODELIPROC) load(userptr, "glLightModeli"); + glad_glLightModeliv = (PFNGLLIGHTMODELIVPROC) load(userptr, "glLightModeliv"); + glad_glLightf = (PFNGLLIGHTFPROC) load(userptr, "glLightf"); + glad_glLightfv = (PFNGLLIGHTFVPROC) load(userptr, "glLightfv"); + glad_glLighti = (PFNGLLIGHTIPROC) load(userptr, "glLighti"); + glad_glLightiv = (PFNGLLIGHTIVPROC) load(userptr, "glLightiv"); + glad_glLineStipple = (PFNGLLINESTIPPLEPROC) load(userptr, "glLineStipple"); + glad_glLineWidth = (PFNGLLINEWIDTHPROC) load(userptr, "glLineWidth"); + glad_glListBase = (PFNGLLISTBASEPROC) load(userptr, "glListBase"); + glad_glLoadIdentity = (PFNGLLOADIDENTITYPROC) load(userptr, "glLoadIdentity"); + glad_glLoadMatrixd = (PFNGLLOADMATRIXDPROC) load(userptr, "glLoadMatrixd"); + glad_glLoadMatrixf = (PFNGLLOADMATRIXFPROC) load(userptr, "glLoadMatrixf"); + glad_glLoadName = (PFNGLLOADNAMEPROC) load(userptr, "glLoadName"); + glad_glLogicOp = (PFNGLLOGICOPPROC) load(userptr, "glLogicOp"); + glad_glMap1d = (PFNGLMAP1DPROC) load(userptr, "glMap1d"); + glad_glMap1f = (PFNGLMAP1FPROC) load(userptr, "glMap1f"); + glad_glMap2d = (PFNGLMAP2DPROC) load(userptr, "glMap2d"); + glad_glMap2f = (PFNGLMAP2FPROC) load(userptr, "glMap2f"); + glad_glMapGrid1d = (PFNGLMAPGRID1DPROC) load(userptr, "glMapGrid1d"); + glad_glMapGrid1f = (PFNGLMAPGRID1FPROC) load(userptr, "glMapGrid1f"); + glad_glMapGrid2d = (PFNGLMAPGRID2DPROC) load(userptr, "glMapGrid2d"); + glad_glMapGrid2f = (PFNGLMAPGRID2FPROC) load(userptr, "glMapGrid2f"); + glad_glMaterialf = (PFNGLMATERIALFPROC) load(userptr, "glMaterialf"); + glad_glMaterialfv = (PFNGLMATERIALFVPROC) load(userptr, "glMaterialfv"); + glad_glMateriali = (PFNGLMATERIALIPROC) load(userptr, "glMateriali"); + glad_glMaterialiv = (PFNGLMATERIALIVPROC) load(userptr, "glMaterialiv"); + glad_glMatrixMode = (PFNGLMATRIXMODEPROC) load(userptr, "glMatrixMode"); + glad_glMultMatrixd = (PFNGLMULTMATRIXDPROC) load(userptr, "glMultMatrixd"); + glad_glMultMatrixf = (PFNGLMULTMATRIXFPROC) load(userptr, "glMultMatrixf"); + glad_glNewList = (PFNGLNEWLISTPROC) load(userptr, "glNewList"); + glad_glNormal3b = (PFNGLNORMAL3BPROC) load(userptr, "glNormal3b"); + glad_glNormal3bv = (PFNGLNORMAL3BVPROC) load(userptr, "glNormal3bv"); + glad_glNormal3d = (PFNGLNORMAL3DPROC) load(userptr, "glNormal3d"); + glad_glNormal3dv = (PFNGLNORMAL3DVPROC) load(userptr, "glNormal3dv"); + glad_glNormal3f = (PFNGLNORMAL3FPROC) load(userptr, "glNormal3f"); + glad_glNormal3fv = (PFNGLNORMAL3FVPROC) load(userptr, "glNormal3fv"); + glad_glNormal3i = (PFNGLNORMAL3IPROC) load(userptr, "glNormal3i"); + glad_glNormal3iv = (PFNGLNORMAL3IVPROC) load(userptr, "glNormal3iv"); + glad_glNormal3s = (PFNGLNORMAL3SPROC) load(userptr, "glNormal3s"); + glad_glNormal3sv = (PFNGLNORMAL3SVPROC) load(userptr, "glNormal3sv"); + glad_glOrtho = (PFNGLORTHOPROC) load(userptr, "glOrtho"); + glad_glPassThrough = (PFNGLPASSTHROUGHPROC) load(userptr, "glPassThrough"); + glad_glPixelMapfv = (PFNGLPIXELMAPFVPROC) load(userptr, "glPixelMapfv"); + glad_glPixelMapuiv = (PFNGLPIXELMAPUIVPROC) load(userptr, "glPixelMapuiv"); + glad_glPixelMapusv = (PFNGLPIXELMAPUSVPROC) load(userptr, "glPixelMapusv"); + glad_glPixelStoref = (PFNGLPIXELSTOREFPROC) load(userptr, "glPixelStoref"); + glad_glPixelStorei = (PFNGLPIXELSTOREIPROC) load(userptr, "glPixelStorei"); + glad_glPixelTransferf = (PFNGLPIXELTRANSFERFPROC) load(userptr, "glPixelTransferf"); + glad_glPixelTransferi = (PFNGLPIXELTRANSFERIPROC) load(userptr, "glPixelTransferi"); + glad_glPixelZoom = (PFNGLPIXELZOOMPROC) load(userptr, "glPixelZoom"); + glad_glPointSize = (PFNGLPOINTSIZEPROC) load(userptr, "glPointSize"); + glad_glPolygonMode = (PFNGLPOLYGONMODEPROC) load(userptr, "glPolygonMode"); + glad_glPolygonStipple = (PFNGLPOLYGONSTIPPLEPROC) load(userptr, "glPolygonStipple"); + glad_glPopAttrib = (PFNGLPOPATTRIBPROC) load(userptr, "glPopAttrib"); + glad_glPopMatrix = (PFNGLPOPMATRIXPROC) load(userptr, "glPopMatrix"); + glad_glPopName = (PFNGLPOPNAMEPROC) load(userptr, "glPopName"); + glad_glPushAttrib = (PFNGLPUSHATTRIBPROC) load(userptr, "glPushAttrib"); + glad_glPushMatrix = (PFNGLPUSHMATRIXPROC) load(userptr, "glPushMatrix"); + glad_glPushName = (PFNGLPUSHNAMEPROC) load(userptr, "glPushName"); + glad_glRasterPos2d = (PFNGLRASTERPOS2DPROC) load(userptr, "glRasterPos2d"); + glad_glRasterPos2dv = (PFNGLRASTERPOS2DVPROC) load(userptr, "glRasterPos2dv"); + glad_glRasterPos2f = (PFNGLRASTERPOS2FPROC) load(userptr, "glRasterPos2f"); + glad_glRasterPos2fv = (PFNGLRASTERPOS2FVPROC) load(userptr, "glRasterPos2fv"); + glad_glRasterPos2i = (PFNGLRASTERPOS2IPROC) load(userptr, "glRasterPos2i"); + glad_glRasterPos2iv = (PFNGLRASTERPOS2IVPROC) load(userptr, "glRasterPos2iv"); + glad_glRasterPos2s = (PFNGLRASTERPOS2SPROC) load(userptr, "glRasterPos2s"); + glad_glRasterPos2sv = (PFNGLRASTERPOS2SVPROC) load(userptr, "glRasterPos2sv"); + glad_glRasterPos3d = (PFNGLRASTERPOS3DPROC) load(userptr, "glRasterPos3d"); + glad_glRasterPos3dv = (PFNGLRASTERPOS3DVPROC) load(userptr, "glRasterPos3dv"); + glad_glRasterPos3f = (PFNGLRASTERPOS3FPROC) load(userptr, "glRasterPos3f"); + glad_glRasterPos3fv = (PFNGLRASTERPOS3FVPROC) load(userptr, "glRasterPos3fv"); + glad_glRasterPos3i = (PFNGLRASTERPOS3IPROC) load(userptr, "glRasterPos3i"); + glad_glRasterPos3iv = (PFNGLRASTERPOS3IVPROC) load(userptr, "glRasterPos3iv"); + glad_glRasterPos3s = (PFNGLRASTERPOS3SPROC) load(userptr, "glRasterPos3s"); + glad_glRasterPos3sv = (PFNGLRASTERPOS3SVPROC) load(userptr, "glRasterPos3sv"); + glad_glRasterPos4d = (PFNGLRASTERPOS4DPROC) load(userptr, "glRasterPos4d"); + glad_glRasterPos4dv = (PFNGLRASTERPOS4DVPROC) load(userptr, "glRasterPos4dv"); + glad_glRasterPos4f = (PFNGLRASTERPOS4FPROC) load(userptr, "glRasterPos4f"); + glad_glRasterPos4fv = (PFNGLRASTERPOS4FVPROC) load(userptr, "glRasterPos4fv"); + glad_glRasterPos4i = (PFNGLRASTERPOS4IPROC) load(userptr, "glRasterPos4i"); + glad_glRasterPos4iv = (PFNGLRASTERPOS4IVPROC) load(userptr, "glRasterPos4iv"); + glad_glRasterPos4s = (PFNGLRASTERPOS4SPROC) load(userptr, "glRasterPos4s"); + glad_glRasterPos4sv = (PFNGLRASTERPOS4SVPROC) load(userptr, "glRasterPos4sv"); + glad_glReadBuffer = (PFNGLREADBUFFERPROC) load(userptr, "glReadBuffer"); + glad_glReadPixels = (PFNGLREADPIXELSPROC) load(userptr, "glReadPixels"); + glad_glRectd = (PFNGLRECTDPROC) load(userptr, "glRectd"); + glad_glRectdv = (PFNGLRECTDVPROC) load(userptr, "glRectdv"); + glad_glRectf = (PFNGLRECTFPROC) load(userptr, "glRectf"); + glad_glRectfv = (PFNGLRECTFVPROC) load(userptr, "glRectfv"); + glad_glRecti = (PFNGLRECTIPROC) load(userptr, "glRecti"); + glad_glRectiv = (PFNGLRECTIVPROC) load(userptr, "glRectiv"); + glad_glRects = (PFNGLRECTSPROC) load(userptr, "glRects"); + glad_glRectsv = (PFNGLRECTSVPROC) load(userptr, "glRectsv"); + glad_glRenderMode = (PFNGLRENDERMODEPROC) load(userptr, "glRenderMode"); + glad_glRotated = (PFNGLROTATEDPROC) load(userptr, "glRotated"); + glad_glRotatef = (PFNGLROTATEFPROC) load(userptr, "glRotatef"); + glad_glScaled = (PFNGLSCALEDPROC) load(userptr, "glScaled"); + glad_glScalef = (PFNGLSCALEFPROC) load(userptr, "glScalef"); + glad_glScissor = (PFNGLSCISSORPROC) load(userptr, "glScissor"); + glad_glSelectBuffer = (PFNGLSELECTBUFFERPROC) load(userptr, "glSelectBuffer"); + glad_glShadeModel = (PFNGLSHADEMODELPROC) load(userptr, "glShadeModel"); + glad_glStencilFunc = (PFNGLSTENCILFUNCPROC) load(userptr, "glStencilFunc"); + glad_glStencilMask = (PFNGLSTENCILMASKPROC) load(userptr, "glStencilMask"); + glad_glStencilOp = (PFNGLSTENCILOPPROC) load(userptr, "glStencilOp"); + glad_glTexCoord1d = (PFNGLTEXCOORD1DPROC) load(userptr, "glTexCoord1d"); + glad_glTexCoord1dv = (PFNGLTEXCOORD1DVPROC) load(userptr, "glTexCoord1dv"); + glad_glTexCoord1f = (PFNGLTEXCOORD1FPROC) load(userptr, "glTexCoord1f"); + glad_glTexCoord1fv = (PFNGLTEXCOORD1FVPROC) load(userptr, "glTexCoord1fv"); + glad_glTexCoord1i = (PFNGLTEXCOORD1IPROC) load(userptr, "glTexCoord1i"); + glad_glTexCoord1iv = (PFNGLTEXCOORD1IVPROC) load(userptr, "glTexCoord1iv"); + glad_glTexCoord1s = (PFNGLTEXCOORD1SPROC) load(userptr, "glTexCoord1s"); + glad_glTexCoord1sv = (PFNGLTEXCOORD1SVPROC) load(userptr, "glTexCoord1sv"); + glad_glTexCoord2d = (PFNGLTEXCOORD2DPROC) load(userptr, "glTexCoord2d"); + glad_glTexCoord2dv = (PFNGLTEXCOORD2DVPROC) load(userptr, "glTexCoord2dv"); + glad_glTexCoord2f = (PFNGLTEXCOORD2FPROC) load(userptr, "glTexCoord2f"); + glad_glTexCoord2fv = (PFNGLTEXCOORD2FVPROC) load(userptr, "glTexCoord2fv"); + glad_glTexCoord2i = (PFNGLTEXCOORD2IPROC) load(userptr, "glTexCoord2i"); + glad_glTexCoord2iv = (PFNGLTEXCOORD2IVPROC) load(userptr, "glTexCoord2iv"); + glad_glTexCoord2s = (PFNGLTEXCOORD2SPROC) load(userptr, "glTexCoord2s"); + glad_glTexCoord2sv = (PFNGLTEXCOORD2SVPROC) load(userptr, "glTexCoord2sv"); + glad_glTexCoord3d = (PFNGLTEXCOORD3DPROC) load(userptr, "glTexCoord3d"); + glad_glTexCoord3dv = (PFNGLTEXCOORD3DVPROC) load(userptr, "glTexCoord3dv"); + glad_glTexCoord3f = (PFNGLTEXCOORD3FPROC) load(userptr, "glTexCoord3f"); + glad_glTexCoord3fv = (PFNGLTEXCOORD3FVPROC) load(userptr, "glTexCoord3fv"); + glad_glTexCoord3i = (PFNGLTEXCOORD3IPROC) load(userptr, "glTexCoord3i"); + glad_glTexCoord3iv = (PFNGLTEXCOORD3IVPROC) load(userptr, "glTexCoord3iv"); + glad_glTexCoord3s = (PFNGLTEXCOORD3SPROC) load(userptr, "glTexCoord3s"); + glad_glTexCoord3sv = (PFNGLTEXCOORD3SVPROC) load(userptr, "glTexCoord3sv"); + glad_glTexCoord4d = (PFNGLTEXCOORD4DPROC) load(userptr, "glTexCoord4d"); + glad_glTexCoord4dv = (PFNGLTEXCOORD4DVPROC) load(userptr, "glTexCoord4dv"); + glad_glTexCoord4f = (PFNGLTEXCOORD4FPROC) load(userptr, "glTexCoord4f"); + glad_glTexCoord4fv = (PFNGLTEXCOORD4FVPROC) load(userptr, "glTexCoord4fv"); + glad_glTexCoord4i = (PFNGLTEXCOORD4IPROC) load(userptr, "glTexCoord4i"); + glad_glTexCoord4iv = (PFNGLTEXCOORD4IVPROC) load(userptr, "glTexCoord4iv"); + glad_glTexCoord4s = (PFNGLTEXCOORD4SPROC) load(userptr, "glTexCoord4s"); + glad_glTexCoord4sv = (PFNGLTEXCOORD4SVPROC) load(userptr, "glTexCoord4sv"); + glad_glTexEnvf = (PFNGLTEXENVFPROC) load(userptr, "glTexEnvf"); + glad_glTexEnvfv = (PFNGLTEXENVFVPROC) load(userptr, "glTexEnvfv"); + glad_glTexEnvi = (PFNGLTEXENVIPROC) load(userptr, "glTexEnvi"); + glad_glTexEnviv = (PFNGLTEXENVIVPROC) load(userptr, "glTexEnviv"); + glad_glTexGend = (PFNGLTEXGENDPROC) load(userptr, "glTexGend"); + glad_glTexGendv = (PFNGLTEXGENDVPROC) load(userptr, "glTexGendv"); + glad_glTexGenf = (PFNGLTEXGENFPROC) load(userptr, "glTexGenf"); + glad_glTexGenfv = (PFNGLTEXGENFVPROC) load(userptr, "glTexGenfv"); + glad_glTexGeni = (PFNGLTEXGENIPROC) load(userptr, "glTexGeni"); + glad_glTexGeniv = (PFNGLTEXGENIVPROC) load(userptr, "glTexGeniv"); + glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC) load(userptr, "glTexImage1D"); + glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC) load(userptr, "glTexImage2D"); + glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC) load(userptr, "glTexParameterf"); + glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC) load(userptr, "glTexParameterfv"); + glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC) load(userptr, "glTexParameteri"); + glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC) load(userptr, "glTexParameteriv"); + glad_glTranslated = (PFNGLTRANSLATEDPROC) load(userptr, "glTranslated"); + glad_glTranslatef = (PFNGLTRANSLATEFPROC) load(userptr, "glTranslatef"); + glad_glVertex2d = (PFNGLVERTEX2DPROC) load(userptr, "glVertex2d"); + glad_glVertex2dv = (PFNGLVERTEX2DVPROC) load(userptr, "glVertex2dv"); + glad_glVertex2f = (PFNGLVERTEX2FPROC) load(userptr, "glVertex2f"); + glad_glVertex2fv = (PFNGLVERTEX2FVPROC) load(userptr, "glVertex2fv"); + glad_glVertex2i = (PFNGLVERTEX2IPROC) load(userptr, "glVertex2i"); + glad_glVertex2iv = (PFNGLVERTEX2IVPROC) load(userptr, "glVertex2iv"); + glad_glVertex2s = (PFNGLVERTEX2SPROC) load(userptr, "glVertex2s"); + glad_glVertex2sv = (PFNGLVERTEX2SVPROC) load(userptr, "glVertex2sv"); + glad_glVertex3d = (PFNGLVERTEX3DPROC) load(userptr, "glVertex3d"); + glad_glVertex3dv = (PFNGLVERTEX3DVPROC) load(userptr, "glVertex3dv"); + glad_glVertex3f = (PFNGLVERTEX3FPROC) load(userptr, "glVertex3f"); + glad_glVertex3fv = (PFNGLVERTEX3FVPROC) load(userptr, "glVertex3fv"); + glad_glVertex3i = (PFNGLVERTEX3IPROC) load(userptr, "glVertex3i"); + glad_glVertex3iv = (PFNGLVERTEX3IVPROC) load(userptr, "glVertex3iv"); + glad_glVertex3s = (PFNGLVERTEX3SPROC) load(userptr, "glVertex3s"); + glad_glVertex3sv = (PFNGLVERTEX3SVPROC) load(userptr, "glVertex3sv"); + glad_glVertex4d = (PFNGLVERTEX4DPROC) load(userptr, "glVertex4d"); + glad_glVertex4dv = (PFNGLVERTEX4DVPROC) load(userptr, "glVertex4dv"); + glad_glVertex4f = (PFNGLVERTEX4FPROC) load(userptr, "glVertex4f"); + glad_glVertex4fv = (PFNGLVERTEX4FVPROC) load(userptr, "glVertex4fv"); + glad_glVertex4i = (PFNGLVERTEX4IPROC) load(userptr, "glVertex4i"); + glad_glVertex4iv = (PFNGLVERTEX4IVPROC) load(userptr, "glVertex4iv"); + glad_glVertex4s = (PFNGLVERTEX4SPROC) load(userptr, "glVertex4s"); + glad_glVertex4sv = (PFNGLVERTEX4SVPROC) load(userptr, "glVertex4sv"); + glad_glViewport = (PFNGLVIEWPORTPROC) load(userptr, "glViewport"); +} +static void glad_gl_load_GL_VERSION_1_1( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_1_1) return; + glad_glAreTexturesResident = (PFNGLARETEXTURESRESIDENTPROC) load(userptr, "glAreTexturesResident"); + glad_glArrayElement = (PFNGLARRAYELEMENTPROC) load(userptr, "glArrayElement"); + glad_glBindTexture = (PFNGLBINDTEXTUREPROC) load(userptr, "glBindTexture"); + glad_glColorPointer = (PFNGLCOLORPOINTERPROC) load(userptr, "glColorPointer"); + glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC) load(userptr, "glCopyTexImage1D"); + glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC) load(userptr, "glCopyTexImage2D"); + glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC) load(userptr, "glCopyTexSubImage1D"); + glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC) load(userptr, "glCopyTexSubImage2D"); + glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC) load(userptr, "glDeleteTextures"); + glad_glDisableClientState = (PFNGLDISABLECLIENTSTATEPROC) load(userptr, "glDisableClientState"); + glad_glDrawArrays = (PFNGLDRAWARRAYSPROC) load(userptr, "glDrawArrays"); + glad_glDrawElements = (PFNGLDRAWELEMENTSPROC) load(userptr, "glDrawElements"); + glad_glEdgeFlagPointer = (PFNGLEDGEFLAGPOINTERPROC) load(userptr, "glEdgeFlagPointer"); + glad_glEnableClientState = (PFNGLENABLECLIENTSTATEPROC) load(userptr, "glEnableClientState"); + glad_glGenTextures = (PFNGLGENTEXTURESPROC) load(userptr, "glGenTextures"); + glad_glGetPointerv = (PFNGLGETPOINTERVPROC) load(userptr, "glGetPointerv"); + glad_glIndexPointer = (PFNGLINDEXPOINTERPROC) load(userptr, "glIndexPointer"); + glad_glIndexub = (PFNGLINDEXUBPROC) load(userptr, "glIndexub"); + glad_glIndexubv = (PFNGLINDEXUBVPROC) load(userptr, "glIndexubv"); + glad_glInterleavedArrays = (PFNGLINTERLEAVEDARRAYSPROC) load(userptr, "glInterleavedArrays"); + glad_glIsTexture = (PFNGLISTEXTUREPROC) load(userptr, "glIsTexture"); + glad_glNormalPointer = (PFNGLNORMALPOINTERPROC) load(userptr, "glNormalPointer"); + glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC) load(userptr, "glPolygonOffset"); + glad_glPopClientAttrib = (PFNGLPOPCLIENTATTRIBPROC) load(userptr, "glPopClientAttrib"); + glad_glPrioritizeTextures = (PFNGLPRIORITIZETEXTURESPROC) load(userptr, "glPrioritizeTextures"); + glad_glPushClientAttrib = (PFNGLPUSHCLIENTATTRIBPROC) load(userptr, "glPushClientAttrib"); + glad_glTexCoordPointer = (PFNGLTEXCOORDPOINTERPROC) load(userptr, "glTexCoordPointer"); + glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC) load(userptr, "glTexSubImage1D"); + glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC) load(userptr, "glTexSubImage2D"); + glad_glVertexPointer = (PFNGLVERTEXPOINTERPROC) load(userptr, "glVertexPointer"); +} +static void glad_gl_load_GL_VERSION_1_2( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_1_2) return; + glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC) load(userptr, "glCopyTexSubImage3D"); + glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC) load(userptr, "glDrawRangeElements"); + glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC) load(userptr, "glTexImage3D"); + glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC) load(userptr, "glTexSubImage3D"); +} +static void glad_gl_load_GL_VERSION_1_3( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_1_3) return; + glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC) load(userptr, "glActiveTexture"); + glad_glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC) load(userptr, "glClientActiveTexture"); + glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC) load(userptr, "glCompressedTexImage1D"); + glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC) load(userptr, "glCompressedTexImage2D"); + glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC) load(userptr, "glCompressedTexImage3D"); + glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) load(userptr, "glCompressedTexSubImage1D"); + glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) load(userptr, "glCompressedTexSubImage2D"); + glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) load(userptr, "glCompressedTexSubImage3D"); + glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC) load(userptr, "glGetCompressedTexImage"); + glad_glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC) load(userptr, "glLoadTransposeMatrixd"); + glad_glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC) load(userptr, "glLoadTransposeMatrixf"); + glad_glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC) load(userptr, "glMultTransposeMatrixd"); + glad_glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC) load(userptr, "glMultTransposeMatrixf"); + glad_glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC) load(userptr, "glMultiTexCoord1d"); + glad_glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC) load(userptr, "glMultiTexCoord1dv"); + glad_glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC) load(userptr, "glMultiTexCoord1f"); + glad_glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC) load(userptr, "glMultiTexCoord1fv"); + glad_glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC) load(userptr, "glMultiTexCoord1i"); + glad_glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC) load(userptr, "glMultiTexCoord1iv"); + glad_glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC) load(userptr, "glMultiTexCoord1s"); + glad_glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC) load(userptr, "glMultiTexCoord1sv"); + glad_glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC) load(userptr, "glMultiTexCoord2d"); + glad_glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC) load(userptr, "glMultiTexCoord2dv"); + glad_glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC) load(userptr, "glMultiTexCoord2f"); + glad_glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC) load(userptr, "glMultiTexCoord2fv"); + glad_glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC) load(userptr, "glMultiTexCoord2i"); + glad_glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC) load(userptr, "glMultiTexCoord2iv"); + glad_glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC) load(userptr, "glMultiTexCoord2s"); + glad_glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC) load(userptr, "glMultiTexCoord2sv"); + glad_glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC) load(userptr, "glMultiTexCoord3d"); + glad_glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC) load(userptr, "glMultiTexCoord3dv"); + glad_glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC) load(userptr, "glMultiTexCoord3f"); + glad_glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC) load(userptr, "glMultiTexCoord3fv"); + glad_glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC) load(userptr, "glMultiTexCoord3i"); + glad_glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC) load(userptr, "glMultiTexCoord3iv"); + glad_glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC) load(userptr, "glMultiTexCoord3s"); + glad_glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC) load(userptr, "glMultiTexCoord3sv"); + glad_glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC) load(userptr, "glMultiTexCoord4d"); + glad_glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC) load(userptr, "glMultiTexCoord4dv"); + glad_glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC) load(userptr, "glMultiTexCoord4f"); + glad_glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC) load(userptr, "glMultiTexCoord4fv"); + glad_glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC) load(userptr, "glMultiTexCoord4i"); + glad_glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC) load(userptr, "glMultiTexCoord4iv"); + glad_glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC) load(userptr, "glMultiTexCoord4s"); + glad_glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC) load(userptr, "glMultiTexCoord4sv"); + glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC) load(userptr, "glSampleCoverage"); +} +static void glad_gl_load_GL_VERSION_1_4( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_1_4) return; + glad_glBlendColor = (PFNGLBLENDCOLORPROC) load(userptr, "glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC) load(userptr, "glBlendEquation"); + glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) load(userptr, "glBlendFuncSeparate"); + glad_glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC) load(userptr, "glFogCoordPointer"); + glad_glFogCoordd = (PFNGLFOGCOORDDPROC) load(userptr, "glFogCoordd"); + glad_glFogCoorddv = (PFNGLFOGCOORDDVPROC) load(userptr, "glFogCoorddv"); + glad_glFogCoordf = (PFNGLFOGCOORDFPROC) load(userptr, "glFogCoordf"); + glad_glFogCoordfv = (PFNGLFOGCOORDFVPROC) load(userptr, "glFogCoordfv"); + glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC) load(userptr, "glMultiDrawArrays"); + glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC) load(userptr, "glMultiDrawElements"); + glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC) load(userptr, "glPointParameterf"); + glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC) load(userptr, "glPointParameterfv"); + glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC) load(userptr, "glPointParameteri"); + glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC) load(userptr, "glPointParameteriv"); + glad_glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC) load(userptr, "glSecondaryColor3b"); + glad_glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC) load(userptr, "glSecondaryColor3bv"); + glad_glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC) load(userptr, "glSecondaryColor3d"); + glad_glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC) load(userptr, "glSecondaryColor3dv"); + glad_glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC) load(userptr, "glSecondaryColor3f"); + glad_glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC) load(userptr, "glSecondaryColor3fv"); + glad_glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC) load(userptr, "glSecondaryColor3i"); + glad_glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC) load(userptr, "glSecondaryColor3iv"); + glad_glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC) load(userptr, "glSecondaryColor3s"); + glad_glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC) load(userptr, "glSecondaryColor3sv"); + glad_glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC) load(userptr, "glSecondaryColor3ub"); + glad_glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC) load(userptr, "glSecondaryColor3ubv"); + glad_glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC) load(userptr, "glSecondaryColor3ui"); + glad_glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC) load(userptr, "glSecondaryColor3uiv"); + glad_glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC) load(userptr, "glSecondaryColor3us"); + glad_glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC) load(userptr, "glSecondaryColor3usv"); + glad_glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC) load(userptr, "glSecondaryColorPointer"); + glad_glWindowPos2d = (PFNGLWINDOWPOS2DPROC) load(userptr, "glWindowPos2d"); + glad_glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC) load(userptr, "glWindowPos2dv"); + glad_glWindowPos2f = (PFNGLWINDOWPOS2FPROC) load(userptr, "glWindowPos2f"); + glad_glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC) load(userptr, "glWindowPos2fv"); + glad_glWindowPos2i = (PFNGLWINDOWPOS2IPROC) load(userptr, "glWindowPos2i"); + glad_glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC) load(userptr, "glWindowPos2iv"); + glad_glWindowPos2s = (PFNGLWINDOWPOS2SPROC) load(userptr, "glWindowPos2s"); + glad_glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC) load(userptr, "glWindowPos2sv"); + glad_glWindowPos3d = (PFNGLWINDOWPOS3DPROC) load(userptr, "glWindowPos3d"); + glad_glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC) load(userptr, "glWindowPos3dv"); + glad_glWindowPos3f = (PFNGLWINDOWPOS3FPROC) load(userptr, "glWindowPos3f"); + glad_glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC) load(userptr, "glWindowPos3fv"); + glad_glWindowPos3i = (PFNGLWINDOWPOS3IPROC) load(userptr, "glWindowPos3i"); + glad_glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC) load(userptr, "glWindowPos3iv"); + glad_glWindowPos3s = (PFNGLWINDOWPOS3SPROC) load(userptr, "glWindowPos3s"); + glad_glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC) load(userptr, "glWindowPos3sv"); +} +static void glad_gl_load_GL_VERSION_1_5( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_1_5) return; + glad_glBeginQuery = (PFNGLBEGINQUERYPROC) load(userptr, "glBeginQuery"); + glad_glBindBuffer = (PFNGLBINDBUFFERPROC) load(userptr, "glBindBuffer"); + glad_glBufferData = (PFNGLBUFFERDATAPROC) load(userptr, "glBufferData"); + glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC) load(userptr, "glBufferSubData"); + glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC) load(userptr, "glDeleteBuffers"); + glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC) load(userptr, "glDeleteQueries"); + glad_glEndQuery = (PFNGLENDQUERYPROC) load(userptr, "glEndQuery"); + glad_glGenBuffers = (PFNGLGENBUFFERSPROC) load(userptr, "glGenBuffers"); + glad_glGenQueries = (PFNGLGENQUERIESPROC) load(userptr, "glGenQueries"); + glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC) load(userptr, "glGetBufferParameteriv"); + glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC) load(userptr, "glGetBufferPointerv"); + glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC) load(userptr, "glGetBufferSubData"); + glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC) load(userptr, "glGetQueryObjectiv"); + glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC) load(userptr, "glGetQueryObjectuiv"); + glad_glGetQueryiv = (PFNGLGETQUERYIVPROC) load(userptr, "glGetQueryiv"); + glad_glIsBuffer = (PFNGLISBUFFERPROC) load(userptr, "glIsBuffer"); + glad_glIsQuery = (PFNGLISQUERYPROC) load(userptr, "glIsQuery"); + glad_glMapBuffer = (PFNGLMAPBUFFERPROC) load(userptr, "glMapBuffer"); + glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC) load(userptr, "glUnmapBuffer"); +} +static void glad_gl_load_GL_VERSION_2_0( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_2_0) return; + glad_glAttachShader = (PFNGLATTACHSHADERPROC) load(userptr, "glAttachShader"); + glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC) load(userptr, "glBindAttribLocation"); + glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC) load(userptr, "glBlendEquationSeparate"); + glad_glCompileShader = (PFNGLCOMPILESHADERPROC) load(userptr, "glCompileShader"); + glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC) load(userptr, "glCreateProgram"); + glad_glCreateShader = (PFNGLCREATESHADERPROC) load(userptr, "glCreateShader"); + glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC) load(userptr, "glDeleteProgram"); + glad_glDeleteShader = (PFNGLDELETESHADERPROC) load(userptr, "glDeleteShader"); + glad_glDetachShader = (PFNGLDETACHSHADERPROC) load(userptr, "glDetachShader"); + glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) load(userptr, "glDisableVertexAttribArray"); + glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC) load(userptr, "glDrawBuffers"); + glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) load(userptr, "glEnableVertexAttribArray"); + glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC) load(userptr, "glGetActiveAttrib"); + glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC) load(userptr, "glGetActiveUniform"); + glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC) load(userptr, "glGetAttachedShaders"); + glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC) load(userptr, "glGetAttribLocation"); + glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) load(userptr, "glGetProgramInfoLog"); + glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC) load(userptr, "glGetProgramiv"); + glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) load(userptr, "glGetShaderInfoLog"); + glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC) load(userptr, "glGetShaderSource"); + glad_glGetShaderiv = (PFNGLGETSHADERIVPROC) load(userptr, "glGetShaderiv"); + glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) load(userptr, "glGetUniformLocation"); + glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC) load(userptr, "glGetUniformfv"); + glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC) load(userptr, "glGetUniformiv"); + glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC) load(userptr, "glGetVertexAttribPointerv"); + glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC) load(userptr, "glGetVertexAttribdv"); + glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC) load(userptr, "glGetVertexAttribfv"); + glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC) load(userptr, "glGetVertexAttribiv"); + glad_glIsProgram = (PFNGLISPROGRAMPROC) load(userptr, "glIsProgram"); + glad_glIsShader = (PFNGLISSHADERPROC) load(userptr, "glIsShader"); + glad_glLinkProgram = (PFNGLLINKPROGRAMPROC) load(userptr, "glLinkProgram"); + glad_glShaderSource = (PFNGLSHADERSOURCEPROC) load(userptr, "glShaderSource"); + glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC) load(userptr, "glStencilFuncSeparate"); + glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC) load(userptr, "glStencilMaskSeparate"); + glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC) load(userptr, "glStencilOpSeparate"); + glad_glUniform1f = (PFNGLUNIFORM1FPROC) load(userptr, "glUniform1f"); + glad_glUniform1fv = (PFNGLUNIFORM1FVPROC) load(userptr, "glUniform1fv"); + glad_glUniform1i = (PFNGLUNIFORM1IPROC) load(userptr, "glUniform1i"); + glad_glUniform1iv = (PFNGLUNIFORM1IVPROC) load(userptr, "glUniform1iv"); + glad_glUniform2f = (PFNGLUNIFORM2FPROC) load(userptr, "glUniform2f"); + glad_glUniform2fv = (PFNGLUNIFORM2FVPROC) load(userptr, "glUniform2fv"); + glad_glUniform2i = (PFNGLUNIFORM2IPROC) load(userptr, "glUniform2i"); + glad_glUniform2iv = (PFNGLUNIFORM2IVPROC) load(userptr, "glUniform2iv"); + glad_glUniform3f = (PFNGLUNIFORM3FPROC) load(userptr, "glUniform3f"); + glad_glUniform3fv = (PFNGLUNIFORM3FVPROC) load(userptr, "glUniform3fv"); + glad_glUniform3i = (PFNGLUNIFORM3IPROC) load(userptr, "glUniform3i"); + glad_glUniform3iv = (PFNGLUNIFORM3IVPROC) load(userptr, "glUniform3iv"); + glad_glUniform4f = (PFNGLUNIFORM4FPROC) load(userptr, "glUniform4f"); + glad_glUniform4fv = (PFNGLUNIFORM4FVPROC) load(userptr, "glUniform4fv"); + glad_glUniform4i = (PFNGLUNIFORM4IPROC) load(userptr, "glUniform4i"); + glad_glUniform4iv = (PFNGLUNIFORM4IVPROC) load(userptr, "glUniform4iv"); + glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC) load(userptr, "glUniformMatrix2fv"); + glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC) load(userptr, "glUniformMatrix3fv"); + glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC) load(userptr, "glUniformMatrix4fv"); + glad_glUseProgram = (PFNGLUSEPROGRAMPROC) load(userptr, "glUseProgram"); + glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC) load(userptr, "glValidateProgram"); + glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC) load(userptr, "glVertexAttrib1d"); + glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC) load(userptr, "glVertexAttrib1dv"); + glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC) load(userptr, "glVertexAttrib1f"); + glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC) load(userptr, "glVertexAttrib1fv"); + glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC) load(userptr, "glVertexAttrib1s"); + glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC) load(userptr, "glVertexAttrib1sv"); + glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC) load(userptr, "glVertexAttrib2d"); + glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC) load(userptr, "glVertexAttrib2dv"); + glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC) load(userptr, "glVertexAttrib2f"); + glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC) load(userptr, "glVertexAttrib2fv"); + glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC) load(userptr, "glVertexAttrib2s"); + glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC) load(userptr, "glVertexAttrib2sv"); + glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC) load(userptr, "glVertexAttrib3d"); + glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC) load(userptr, "glVertexAttrib3dv"); + glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC) load(userptr, "glVertexAttrib3f"); + glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC) load(userptr, "glVertexAttrib3fv"); + glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC) load(userptr, "glVertexAttrib3s"); + glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC) load(userptr, "glVertexAttrib3sv"); + glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC) load(userptr, "glVertexAttrib4Nbv"); + glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC) load(userptr, "glVertexAttrib4Niv"); + glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC) load(userptr, "glVertexAttrib4Nsv"); + glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC) load(userptr, "glVertexAttrib4Nub"); + glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC) load(userptr, "glVertexAttrib4Nubv"); + glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC) load(userptr, "glVertexAttrib4Nuiv"); + glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC) load(userptr, "glVertexAttrib4Nusv"); + glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC) load(userptr, "glVertexAttrib4bv"); + glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC) load(userptr, "glVertexAttrib4d"); + glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC) load(userptr, "glVertexAttrib4dv"); + glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC) load(userptr, "glVertexAttrib4f"); + glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) load(userptr, "glVertexAttrib4fv"); + glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC) load(userptr, "glVertexAttrib4iv"); + glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC) load(userptr, "glVertexAttrib4s"); + glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC) load(userptr, "glVertexAttrib4sv"); + glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC) load(userptr, "glVertexAttrib4ubv"); + glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC) load(userptr, "glVertexAttrib4uiv"); + glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC) load(userptr, "glVertexAttrib4usv"); + glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) load(userptr, "glVertexAttribPointer"); +} +static void glad_gl_load_GL_VERSION_2_1( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_2_1) return; + glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC) load(userptr, "glUniformMatrix2x3fv"); + glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC) load(userptr, "glUniformMatrix2x4fv"); + glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC) load(userptr, "glUniformMatrix3x2fv"); + glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC) load(userptr, "glUniformMatrix3x4fv"); + glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC) load(userptr, "glUniformMatrix4x2fv"); + glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC) load(userptr, "glUniformMatrix4x3fv"); +} +static void glad_gl_load_GL_VERSION_3_0( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_3_0) return; + glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC) load(userptr, "glBeginConditionalRender"); + glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC) load(userptr, "glBeginTransformFeedback"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC) load(userptr, "glBindBufferBase"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC) load(userptr, "glBindBufferRange"); + glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC) load(userptr, "glBindFragDataLocation"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC) load(userptr, "glBindFramebuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC) load(userptr, "glBindRenderbuffer"); + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC) load(userptr, "glBindVertexArray"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC) load(userptr, "glBlitFramebuffer"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) load(userptr, "glCheckFramebufferStatus"); + glad_glClampColor = (PFNGLCLAMPCOLORPROC) load(userptr, "glClampColor"); + glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC) load(userptr, "glClearBufferfi"); + glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC) load(userptr, "glClearBufferfv"); + glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC) load(userptr, "glClearBufferiv"); + glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC) load(userptr, "glClearBufferuiv"); + glad_glColorMaski = (PFNGLCOLORMASKIPROC) load(userptr, "glColorMaski"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC) load(userptr, "glDeleteFramebuffers"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC) load(userptr, "glDeleteRenderbuffers"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC) load(userptr, "glDeleteVertexArrays"); + glad_glDisablei = (PFNGLDISABLEIPROC) load(userptr, "glDisablei"); + glad_glEnablei = (PFNGLENABLEIPROC) load(userptr, "glEnablei"); + glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC) load(userptr, "glEndConditionalRender"); + glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC) load(userptr, "glEndTransformFeedback"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC) load(userptr, "glFlushMappedBufferRange"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC) load(userptr, "glFramebufferRenderbuffer"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC) load(userptr, "glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC) load(userptr, "glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC) load(userptr, "glFramebufferTexture3D"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC) load(userptr, "glFramebufferTextureLayer"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC) load(userptr, "glGenFramebuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC) load(userptr, "glGenRenderbuffers"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC) load(userptr, "glGenVertexArrays"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC) load(userptr, "glGenerateMipmap"); + glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC) load(userptr, "glGetBooleani_v"); + glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC) load(userptr, "glGetFragDataLocation"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) load(userptr, "glGetFramebufferAttachmentParameteriv"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC) load(userptr, "glGetIntegeri_v"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC) load(userptr, "glGetRenderbufferParameteriv"); + glad_glGetStringi = (PFNGLGETSTRINGIPROC) load(userptr, "glGetStringi"); + glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC) load(userptr, "glGetTexParameterIiv"); + glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC) load(userptr, "glGetTexParameterIuiv"); + glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) load(userptr, "glGetTransformFeedbackVarying"); + glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC) load(userptr, "glGetUniformuiv"); + glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC) load(userptr, "glGetVertexAttribIiv"); + glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC) load(userptr, "glGetVertexAttribIuiv"); + glad_glIsEnabledi = (PFNGLISENABLEDIPROC) load(userptr, "glIsEnabledi"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC) load(userptr, "glIsFramebuffer"); + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC) load(userptr, "glIsRenderbuffer"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC) load(userptr, "glIsVertexArray"); + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC) load(userptr, "glMapBufferRange"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC) load(userptr, "glRenderbufferStorage"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) load(userptr, "glRenderbufferStorageMultisample"); + glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC) load(userptr, "glTexParameterIiv"); + glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC) load(userptr, "glTexParameterIuiv"); + glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC) load(userptr, "glTransformFeedbackVaryings"); + glad_glUniform1ui = (PFNGLUNIFORM1UIPROC) load(userptr, "glUniform1ui"); + glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC) load(userptr, "glUniform1uiv"); + glad_glUniform2ui = (PFNGLUNIFORM2UIPROC) load(userptr, "glUniform2ui"); + glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC) load(userptr, "glUniform2uiv"); + glad_glUniform3ui = (PFNGLUNIFORM3UIPROC) load(userptr, "glUniform3ui"); + glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC) load(userptr, "glUniform3uiv"); + glad_glUniform4ui = (PFNGLUNIFORM4UIPROC) load(userptr, "glUniform4ui"); + glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC) load(userptr, "glUniform4uiv"); + glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC) load(userptr, "glVertexAttribI1i"); + glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC) load(userptr, "glVertexAttribI1iv"); + glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC) load(userptr, "glVertexAttribI1ui"); + glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC) load(userptr, "glVertexAttribI1uiv"); + glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC) load(userptr, "glVertexAttribI2i"); + glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC) load(userptr, "glVertexAttribI2iv"); + glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC) load(userptr, "glVertexAttribI2ui"); + glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC) load(userptr, "glVertexAttribI2uiv"); + glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC) load(userptr, "glVertexAttribI3i"); + glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC) load(userptr, "glVertexAttribI3iv"); + glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC) load(userptr, "glVertexAttribI3ui"); + glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC) load(userptr, "glVertexAttribI3uiv"); + glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC) load(userptr, "glVertexAttribI4bv"); + glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC) load(userptr, "glVertexAttribI4i"); + glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC) load(userptr, "glVertexAttribI4iv"); + glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC) load(userptr, "glVertexAttribI4sv"); + glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC) load(userptr, "glVertexAttribI4ubv"); + glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC) load(userptr, "glVertexAttribI4ui"); + glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC) load(userptr, "glVertexAttribI4uiv"); + glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC) load(userptr, "glVertexAttribI4usv"); + glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC) load(userptr, "glVertexAttribIPointer"); +} +static void glad_gl_load_GL_VERSION_3_1( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_3_1) return; + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC) load(userptr, "glBindBufferBase"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC) load(userptr, "glBindBufferRange"); + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC) load(userptr, "glCopyBufferSubData"); + glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC) load(userptr, "glDrawArraysInstanced"); + glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC) load(userptr, "glDrawElementsInstanced"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) load(userptr, "glGetActiveUniformBlockName"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC) load(userptr, "glGetActiveUniformBlockiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC) load(userptr, "glGetActiveUniformName"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC) load(userptr, "glGetActiveUniformsiv"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC) load(userptr, "glGetIntegeri_v"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC) load(userptr, "glGetUniformBlockIndex"); + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC) load(userptr, "glGetUniformIndices"); + glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC) load(userptr, "glPrimitiveRestartIndex"); + glad_glTexBuffer = (PFNGLTEXBUFFERPROC) load(userptr, "glTexBuffer"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC) load(userptr, "glUniformBlockBinding"); +} +static void glad_gl_load_GL_VERSION_3_2( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_3_2) return; + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC) load(userptr, "glClientWaitSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC) load(userptr, "glDeleteSync"); + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC) load(userptr, "glDrawElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) load(userptr, "glDrawElementsInstancedBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) load(userptr, "glDrawRangeElementsBaseVertex"); + glad_glFenceSync = (PFNGLFENCESYNCPROC) load(userptr, "glFenceSync"); + glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC) load(userptr, "glFramebufferTexture"); + glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC) load(userptr, "glGetBufferParameteri64v"); + glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC) load(userptr, "glGetInteger64i_v"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC) load(userptr, "glGetInteger64v"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC) load(userptr, "glGetMultisamplefv"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC) load(userptr, "glGetSynciv"); + glad_glIsSync = (PFNGLISSYNCPROC) load(userptr, "glIsSync"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) load(userptr, "glMultiDrawElementsBaseVertex"); + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC) load(userptr, "glProvokingVertex"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC) load(userptr, "glSampleMaski"); + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC) load(userptr, "glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC) load(userptr, "glTexImage3DMultisample"); + glad_glWaitSync = (PFNGLWAITSYNCPROC) load(userptr, "glWaitSync"); +} +static void glad_gl_load_GL_VERSION_3_3( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_VERSION_3_3) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) load(userptr, "glBindFragDataLocationIndexed"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC) load(userptr, "glBindSampler"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC) load(userptr, "glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC) load(userptr, "glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC) load(userptr, "glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC) load(userptr, "glColorP4uiv"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC) load(userptr, "glDeleteSamplers"); + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC) load(userptr, "glGenSamplers"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC) load(userptr, "glGetFragDataIndex"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC) load(userptr, "glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC) load(userptr, "glGetQueryObjectui64v"); + glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC) load(userptr, "glGetSamplerParameterIiv"); + glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC) load(userptr, "glGetSamplerParameterIuiv"); + glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC) load(userptr, "glGetSamplerParameterfv"); + glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC) load(userptr, "glGetSamplerParameteriv"); + glad_glIsSampler = (PFNGLISSAMPLERPROC) load(userptr, "glIsSampler"); + glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC) load(userptr, "glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC) load(userptr, "glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC) load(userptr, "glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC) load(userptr, "glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC) load(userptr, "glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC) load(userptr, "glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC) load(userptr, "glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC) load(userptr, "glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC) load(userptr, "glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC) load(userptr, "glNormalP3uiv"); + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC) load(userptr, "glQueryCounter"); + glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC) load(userptr, "glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC) load(userptr, "glSamplerParameterIuiv"); + glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC) load(userptr, "glSamplerParameterf"); + glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC) load(userptr, "glSamplerParameterfv"); + glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC) load(userptr, "glSamplerParameteri"); + glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC) load(userptr, "glSamplerParameteriv"); + glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC) load(userptr, "glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC) load(userptr, "glSecondaryColorP3uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC) load(userptr, "glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC) load(userptr, "glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC) load(userptr, "glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC) load(userptr, "glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC) load(userptr, "glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC) load(userptr, "glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC) load(userptr, "glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC) load(userptr, "glTexCoordP4uiv"); + glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC) load(userptr, "glVertexAttribDivisor"); + glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC) load(userptr, "glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC) load(userptr, "glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC) load(userptr, "glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC) load(userptr, "glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC) load(userptr, "glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC) load(userptr, "glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC) load(userptr, "glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC) load(userptr, "glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC) load(userptr, "glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC) load(userptr, "glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC) load(userptr, "glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC) load(userptr, "glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC) load(userptr, "glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC) load(userptr, "glVertexP4uiv"); +} +static void glad_gl_load_GL_ARB_multisample( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_ARB_multisample) return; + glad_glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC) load(userptr, "glSampleCoverageARB"); +} +static void glad_gl_load_GL_ARB_robustness( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_ARB_robustness) return; + glad_glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC) load(userptr, "glGetGraphicsResetStatusARB"); + glad_glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC) load(userptr, "glGetnColorTableARB"); + glad_glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) load(userptr, "glGetnCompressedTexImageARB"); + glad_glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC) load(userptr, "glGetnConvolutionFilterARB"); + glad_glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC) load(userptr, "glGetnHistogramARB"); + glad_glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC) load(userptr, "glGetnMapdvARB"); + glad_glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC) load(userptr, "glGetnMapfvARB"); + glad_glGetnMapivARB = (PFNGLGETNMAPIVARBPROC) load(userptr, "glGetnMapivARB"); + glad_glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC) load(userptr, "glGetnMinmaxARB"); + glad_glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC) load(userptr, "glGetnPixelMapfvARB"); + glad_glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC) load(userptr, "glGetnPixelMapuivARB"); + glad_glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC) load(userptr, "glGetnPixelMapusvARB"); + glad_glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC) load(userptr, "glGetnPolygonStippleARB"); + glad_glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC) load(userptr, "glGetnSeparableFilterARB"); + glad_glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC) load(userptr, "glGetnTexImageARB"); + glad_glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC) load(userptr, "glGetnUniformdvARB"); + glad_glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC) load(userptr, "glGetnUniformfvARB"); + glad_glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC) load(userptr, "glGetnUniformivARB"); + glad_glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC) load(userptr, "glGetnUniformuivARB"); + glad_glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC) load(userptr, "glReadnPixelsARB"); +} +static void glad_gl_load_GL_KHR_debug( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_KHR_debug) return; + glad_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC) load(userptr, "glDebugMessageCallback"); + glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC) load(userptr, "glDebugMessageControl"); + glad_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC) load(userptr, "glDebugMessageInsert"); + glad_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC) load(userptr, "glGetDebugMessageLog"); + glad_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC) load(userptr, "glGetObjectLabel"); + glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC) load(userptr, "glGetObjectPtrLabel"); + glad_glGetPointerv = (PFNGLGETPOINTERVPROC) load(userptr, "glGetPointerv"); + glad_glObjectLabel = (PFNGLOBJECTLABELPROC) load(userptr, "glObjectLabel"); + glad_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC) load(userptr, "glObjectPtrLabel"); + glad_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC) load(userptr, "glPopDebugGroup"); + glad_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC) load(userptr, "glPushDebugGroup"); +} + + + +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) +#define GLAD_GL_IS_SOME_NEW_VERSION 1 +#else +#define GLAD_GL_IS_SOME_NEW_VERSION 0 +#endif + +static int glad_gl_get_extensions( int version, const char **out_exts, unsigned int *out_num_exts_i, char ***out_exts_i) { +#if GLAD_GL_IS_SOME_NEW_VERSION + if(GLAD_VERSION_MAJOR(version) < 3) { +#else + (void) version; + (void) out_num_exts_i; + (void) out_exts_i; +#endif + if (glad_glGetString == NULL) { + return 0; + } + *out_exts = (const char *)glad_glGetString(GL_EXTENSIONS); +#if GLAD_GL_IS_SOME_NEW_VERSION + } else { + unsigned int index = 0; + unsigned int num_exts_i = 0; + char **exts_i = NULL; + if (glad_glGetStringi == NULL || glad_glGetIntegerv == NULL) { + return 0; + } + glad_glGetIntegerv(GL_NUM_EXTENSIONS, (int*) &num_exts_i); + if (num_exts_i > 0) { + exts_i = (char **) malloc(num_exts_i * (sizeof *exts_i)); + } + if (exts_i == NULL) { + return 0; + } + for(index = 0; index < num_exts_i; index++) { + const char *gl_str_tmp = (const char*) glad_glGetStringi(GL_EXTENSIONS, index); + size_t len = strlen(gl_str_tmp) + 1; + + char *local_str = (char*) malloc(len * sizeof(char)); + if(local_str != NULL) { + memcpy(local_str, gl_str_tmp, len * sizeof(char)); + } + + exts_i[index] = local_str; + } + + *out_num_exts_i = num_exts_i; + *out_exts_i = exts_i; + } +#endif + return 1; +} +static void glad_gl_free_extensions(char **exts_i, unsigned int num_exts_i) { + if (exts_i != NULL) { + unsigned int index; + for(index = 0; index < num_exts_i; index++) { + free((void *) (exts_i[index])); + } + free((void *)exts_i); + exts_i = NULL; + } +} +static int glad_gl_has_extension(int version, const char *exts, unsigned int num_exts_i, char **exts_i, const char *ext) { + if(GLAD_VERSION_MAJOR(version) < 3 || !GLAD_GL_IS_SOME_NEW_VERSION) { + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if(extensions == NULL || ext == NULL) { + return 0; + } + while(1) { + loc = strstr(extensions, ext); + if(loc == NULL) { + return 0; + } + terminator = loc + strlen(ext); + if((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) { + return 1; + } + extensions = terminator; + } + } else { + unsigned int index; + for(index = 0; index < num_exts_i; index++) { + const char *e = exts_i[index]; + if(strcmp(e, ext) == 0) { + return 1; + } + } + } + return 0; +} + +static GLADapiproc glad_gl_get_proc_from_userptr(void *userptr, const char* name) { + return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name); +} + +static int glad_gl_find_extensions_gl( int version) { + const char *exts = NULL; + unsigned int num_exts_i = 0; + char **exts_i = NULL; + if (!glad_gl_get_extensions(version, &exts, &num_exts_i, &exts_i)) return 0; + + GLAD_GL_ARB_multisample = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_ARB_multisample"); + GLAD_GL_ARB_robustness = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_ARB_robustness"); + GLAD_GL_KHR_debug = glad_gl_has_extension(version, exts, num_exts_i, exts_i, "GL_KHR_debug"); + + glad_gl_free_extensions(exts_i, num_exts_i); + + return 1; +} + +static int glad_gl_find_core_gl(void) { + int i; + const char* version; + const char* prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + "OpenGL SC ", + NULL + }; + int major = 0; + int minor = 0; + version = (const char*) glad_glGetString(GL_VERSION); + if (!version) return 0; + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + + GLAD_IMPL_UTIL_SSCANF(version, "%d.%d", &major, &minor); + + GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; + GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; + GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; + GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; + GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; + GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; + GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; + + return GLAD_MAKE_VERSION(major, minor); +} + +int gladLoadGLUserPtr( GLADuserptrloadfunc load, void *userptr) { + int version; + + glad_glGetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); + if(glad_glGetString == NULL) return 0; + if(glad_glGetString(GL_VERSION) == NULL) return 0; + version = glad_gl_find_core_gl(); + + glad_gl_load_GL_VERSION_1_0(load, userptr); + glad_gl_load_GL_VERSION_1_1(load, userptr); + glad_gl_load_GL_VERSION_1_2(load, userptr); + glad_gl_load_GL_VERSION_1_3(load, userptr); + glad_gl_load_GL_VERSION_1_4(load, userptr); + glad_gl_load_GL_VERSION_1_5(load, userptr); + glad_gl_load_GL_VERSION_2_0(load, userptr); + glad_gl_load_GL_VERSION_2_1(load, userptr); + glad_gl_load_GL_VERSION_3_0(load, userptr); + glad_gl_load_GL_VERSION_3_1(load, userptr); + glad_gl_load_GL_VERSION_3_2(load, userptr); + glad_gl_load_GL_VERSION_3_3(load, userptr); + + if (!glad_gl_find_extensions_gl(version)) return 0; + glad_gl_load_GL_ARB_multisample(load, userptr); + glad_gl_load_GL_ARB_robustness(load, userptr); + glad_gl_load_GL_KHR_debug(load, userptr); + + + + return version; +} + + +int gladLoadGL( GLADloadfunc load) { + return gladLoadGLUserPtr( glad_gl_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load); +} + + + + + + +#ifdef __cplusplus +} +#endif + +#endif /* GLAD_GL_IMPLEMENTATION */ + diff --git a/lib/glfw/deps/glad/gles2.h b/lib/glfw/deps/glad/gles2.h new file mode 100644 index 0000000..d67f110 --- /dev/null +++ b/lib/glfw/deps/glad/gles2.h @@ -0,0 +1,1805 @@ +/** + * Loader generated by glad 2.0.0-beta on Tue Aug 24 22:51:42 2021 + * + * Generator: C/C++ + * Specification: gl + * Extensions: 0 + * + * APIs: + * - gles2=2.0 + * + * Options: + * - ALIAS = False + * - DEBUG = False + * - HEADER_ONLY = True + * - LOADER = False + * - MX = False + * - MX_GLOBAL = False + * - ON_DEMAND = False + * + * Commandline: + * --api='gles2=2.0' --extensions='' c --header-only + * + * Online: + * http://glad.sh/#api=gles2%3D2.0&extensions=&generator=c&options=HEADER_ONLY + * + */ + +#ifndef GLAD_GLES2_H_ +#define GLAD_GLES2_H_ + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-id-macro" +#endif +#ifdef __gl2_h_ + #error OpenGL ES 2 header already included (API: gles2), remove previous include! +#endif +#define __gl2_h_ 1 +#ifdef __gl3_h_ + #error OpenGL ES 3 header already included (API: gles2), remove previous include! +#endif +#define __gl3_h_ 1 +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#define GLAD_GLES2 +#define GLAD_OPTION_GLES2_HEADER_ONLY + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef GLAD_PLATFORM_H_ +#define GLAD_PLATFORM_H_ + +#ifndef GLAD_PLATFORM_WIN32 + #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) + #define GLAD_PLATFORM_WIN32 1 + #else + #define GLAD_PLATFORM_WIN32 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_APPLE + #ifdef __APPLE__ + #define GLAD_PLATFORM_APPLE 1 + #else + #define GLAD_PLATFORM_APPLE 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_EMSCRIPTEN + #ifdef __EMSCRIPTEN__ + #define GLAD_PLATFORM_EMSCRIPTEN 1 + #else + #define GLAD_PLATFORM_EMSCRIPTEN 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_UWP + #if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) + #ifdef __has_include + #if __has_include() + #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 + #endif + #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ + #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 + #endif + #endif + + #ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY + #include + #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + #define GLAD_PLATFORM_UWP 1 + #endif + #endif + + #ifndef GLAD_PLATFORM_UWP + #define GLAD_PLATFORM_UWP 0 + #endif +#endif + +#ifdef __GNUC__ + #define GLAD_GNUC_EXTENSION __extension__ +#else + #define GLAD_GNUC_EXTENSION +#endif + +#ifndef GLAD_API_CALL + #if defined(GLAD_API_CALL_EXPORT) + #if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) + #if defined(GLAD_API_CALL_EXPORT_BUILD) + #if defined(__GNUC__) + #define GLAD_API_CALL __attribute__ ((dllexport)) extern + #else + #define GLAD_API_CALL __declspec(dllexport) extern + #endif + #else + #if defined(__GNUC__) + #define GLAD_API_CALL __attribute__ ((dllimport)) extern + #else + #define GLAD_API_CALL __declspec(dllimport) extern + #endif + #endif + #elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) + #define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern + #else + #define GLAD_API_CALL extern + #endif + #else + #define GLAD_API_CALL extern + #endif +#endif + +#ifdef APIENTRY + #define GLAD_API_PTR APIENTRY +#elif GLAD_PLATFORM_WIN32 + #define GLAD_API_PTR __stdcall +#else + #define GLAD_API_PTR +#endif + +#ifndef GLAPI +#define GLAPI GLAD_API_CALL +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY GLAD_API_PTR +#endif + +#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) +#define GLAD_VERSION_MAJOR(version) (version / 10000) +#define GLAD_VERSION_MINOR(version) (version % 10000) + +#define GLAD_GENERATOR_VERSION "2.0.0-beta" + +typedef void (*GLADapiproc)(void); + +typedef GLADapiproc (*GLADloadfunc)(const char *name); +typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); + +typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, ...); + +#endif /* GLAD_PLATFORM_H_ */ + +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALPHA 0x1906 +#define GL_ALPHA_BITS 0x0D55 +#define GL_ALWAYS 0x0207 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_BACK 0x0405 +#define GL_BLEND 0x0BE2 +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLUE_BITS 0x0D54 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_BYTE 0x1400 +#define GL_CCW 0x0901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_CW 0x0900 +#define GL_DECR 0x1E03 +#define GL_DECR_WRAP 0x8508 +#define GL_DELETE_STATUS 0x8B80 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_DEPTH_BITS 0x0D56 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DITHER 0x0BD0 +#define GL_DONT_CARE 0x1100 +#define GL_DST_ALPHA 0x0304 +#define GL_DST_COLOR 0x0306 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_EQUAL 0x0202 +#define GL_EXTENSIONS 0x1F03 +#define GL_FALSE 0 +#define GL_FASTEST 0x1101 +#define GL_FIXED 0x140C +#define GL_FLOAT 0x1406 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRONT 0x0404 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_FRONT_FACE 0x0B46 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_GEQUAL 0x0206 +#define GL_GREATER 0x0204 +#define GL_GREEN_BITS 0x0D53 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_HIGH_INT 0x8DF5 +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_INCR 0x1E02 +#define GL_INCR_WRAP 0x8507 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_INT 0x1404 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_INVALID_OPERATION 0x0502 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVERT 0x150A +#define GL_KEEP 0x1E00 +#define GL_LEQUAL 0x0203 +#define GL_LESS 0x0201 +#define GL_LINEAR 0x2601 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINK_STATUS 0x8B82 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_LOW_INT 0x8DF3 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_NEAREST 0x2600 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEVER 0x0200 +#define GL_NICEST 0x1102 +#define GL_NONE 0 +#define GL_NOTEQUAL 0x0205 +#define GL_NO_ERROR 0 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_ONE 1 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_POINTS 0x0000 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_RED_BITS 0x0D52 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERER 0x1F01 +#define GL_REPEAT 0x2901 +#define GL_REPLACE 0x1E01 +#define GL_RGB 0x1907 +#define GL_RGB565 0x8D62 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA 0x1908 +#define GL_RGBA4 0x8056 +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_TYPE 0x8B4F +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_SHORT 0x1402 +#define GL_SRC_ALPHA 0x0302 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_SRC_COLOR 0x0300 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_STENCIL_BITS 0x0D57 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STREAM_DRAW 0x88E0 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRUE 1 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_VENDOR 0x1F00 +#define GL_VERSION 0x1F02 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_VIEWPORT 0x0BA2 +#define GL_ZERO 0 + + +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_GLAD_API_PTR + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_GLAD_API_PTR funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_GLAD_API_PTR + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_GLAD_API_PTR __stdcall +#else +# define KHRONOS_GLAD_API_PTR +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef _WIN64 +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ + +typedef unsigned int GLenum; + +typedef unsigned char GLboolean; + +typedef unsigned int GLbitfield; + +typedef void GLvoid; + +typedef khronos_int8_t GLbyte; + +typedef khronos_uint8_t GLubyte; + +typedef khronos_int16_t GLshort; + +typedef khronos_uint16_t GLushort; + +typedef int GLint; + +typedef unsigned int GLuint; + +typedef khronos_int32_t GLclampx; + +typedef int GLsizei; + +typedef khronos_float_t GLfloat; + +typedef khronos_float_t GLclampf; + +typedef double GLdouble; + +typedef double GLclampd; + +typedef void *GLeglClientBufferEXT; + +typedef void *GLeglImageOES; + +typedef char GLchar; + +typedef char GLcharARB; + +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif + +typedef khronos_uint16_t GLhalf; + +typedef khronos_uint16_t GLhalfARB; + +typedef khronos_int32_t GLfixed; + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_intptr_t GLintptr; +#else +typedef khronos_intptr_t GLintptr; +#endif + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_intptr_t GLintptrARB; +#else +typedef khronos_intptr_t GLintptrARB; +#endif + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_ssize_t GLsizeiptr; +#else +typedef khronos_ssize_t GLsizeiptr; +#endif + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_ssize_t GLsizeiptrARB; +#else +typedef khronos_ssize_t GLsizeiptrARB; +#endif + +typedef khronos_int64_t GLint64; + +typedef khronos_int64_t GLint64EXT; + +typedef khronos_uint64_t GLuint64; + +typedef khronos_uint64_t GLuint64EXT; + +typedef struct __GLsync *GLsync; + +struct _cl_context; + +struct _cl_event; + +typedef void (GLAD_API_PTR *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + +typedef void (GLAD_API_PTR *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + +typedef void (GLAD_API_PTR *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + +typedef void (GLAD_API_PTR *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); + +typedef unsigned short GLhalfNV; + +typedef GLintptr GLvdpauSurfaceNV; + +typedef void (GLAD_API_PTR *GLVULKANPROCNV)(void); + + + +#define GL_ES_VERSION_2_0 1 +GLAD_API_CALL int GLAD_GL_ES_VERSION_2_0; + + +typedef void (GLAD_API_PTR *PFNGLACTIVETEXTUREPROC)(GLenum texture); +typedef void (GLAD_API_PTR *PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +typedef void (GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +typedef void (GLAD_API_PTR *PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +typedef void (GLAD_API_PTR *PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +typedef void (GLAD_API_PTR *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +typedef void (GLAD_API_PTR *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GLAD_API_PTR *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void * data, GLenum usage); +typedef void (GLAD_API_PTR *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data); +typedef GLenum (GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask); +typedef void (GLAD_API_PTR *PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLCLEARDEPTHFPROC)(GLfloat d); +typedef void (GLAD_API_PTR *PFNGLCLEARSTENCILPROC)(GLint s); +typedef void (GLAD_API_PTR *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GLAD_API_PTR *PFNGLCOMPILESHADERPROC)(GLuint shader); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GLAD_API_PTR *PFNGLCREATEPROGRAMPROC)(void); +typedef GLuint (GLAD_API_PTR *PFNGLCREATESHADERPROC)(GLenum type); +typedef void (GLAD_API_PTR *PFNGLCULLFACEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint * framebuffers); +typedef void (GLAD_API_PTR *PFNGLDELETEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint * renderbuffers); +typedef void (GLAD_API_PTR *PFNGLDELETESHADERPROC)(GLuint shader); +typedef void (GLAD_API_PTR *PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLDEPTHFUNCPROC)(GLenum func); +typedef void (GLAD_API_PTR *PFNGLDEPTHMASKPROC)(GLboolean flag); +typedef void (GLAD_API_PTR *PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); +typedef void (GLAD_API_PTR *PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +typedef void (GLAD_API_PTR *PFNGLDISABLEPROC)(GLenum cap); +typedef void (GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +typedef void (GLAD_API_PTR *PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices); +typedef void (GLAD_API_PTR *PFNGLENABLEPROC)(GLenum cap); +typedef void (GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLFINISHPROC)(void); +typedef void (GLAD_API_PTR *PFNGLFLUSHPROC)(void); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAD_API_PTR *PFNGLFRONTFACEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers); +typedef void (GLAD_API_PTR *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint * renderbuffers); +typedef void (GLAD_API_PTR *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLGENERATEMIPMAPPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders); +typedef GLint (GLAD_API_PTR *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean * data); +typedef void (GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef GLenum (GLAD_API_PTR *PFNGLGETERRORPROC)(void); +typedef void (GLAD_API_PTR *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat * data); +typedef void (GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETINTEGERVPROC)(GLenum pname, GLint * data); +typedef void (GLAD_API_PTR *PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); +typedef void (GLAD_API_PTR *PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); +typedef void (GLAD_API_PTR *PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision); +typedef void (GLAD_API_PTR *PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source); +typedef void (GLAD_API_PTR *PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint * params); +typedef const GLubyte * (GLAD_API_PTR *PFNGLGETSTRINGPROC)(GLenum name); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef GLint (GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void ** pointer); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLHINTPROC)(GLenum target, GLenum mode); +typedef GLboolean (GLAD_API_PTR *PFNGLISBUFFERPROC)(GLuint buffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISENABLEDPROC)(GLenum cap); +typedef GLboolean (GLAD_API_PTR *PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISPROGRAMPROC)(GLuint program); +typedef GLboolean (GLAD_API_PTR *PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISSHADERPROC)(GLuint shader); +typedef GLboolean (GLAD_API_PTR *PFNGLISTEXTUREPROC)(GLuint texture); +typedef void (GLAD_API_PTR *PFNGLLINEWIDTHPROC)(GLfloat width); +typedef void (GLAD_API_PTR *PFNGLLINKPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +typedef void (GLAD_API_PTR *PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels); +typedef void (GLAD_API_PTR *PFNGLRELEASESHADERCOMPILERPROC)(void); +typedef void (GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +typedef void (GLAD_API_PTR *PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint * shaders, GLenum binaryFormat, const void * binary, GLsizei length); +typedef void (GLAD_API_PTR *PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length); +typedef void (GLAD_API_PTR *PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILMASKPROC)(GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +typedef void (GLAD_API_PTR *PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GLAD_API_PTR *PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GLAD_API_PTR *PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAD_API_PTR *PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAD_API_PTR *PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUSEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLVALIDATEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); + +GLAD_API_CALL PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +#define glActiveTexture glad_glActiveTexture +GLAD_API_CALL PFNGLATTACHSHADERPROC glad_glAttachShader; +#define glAttachShader glad_glAttachShader +GLAD_API_CALL PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +#define glBindAttribLocation glad_glBindAttribLocation +GLAD_API_CALL PFNGLBINDBUFFERPROC glad_glBindBuffer; +#define glBindBuffer glad_glBindBuffer +GLAD_API_CALL PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +#define glBindFramebuffer glad_glBindFramebuffer +GLAD_API_CALL PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +#define glBindRenderbuffer glad_glBindRenderbuffer +GLAD_API_CALL PFNGLBINDTEXTUREPROC glad_glBindTexture; +#define glBindTexture glad_glBindTexture +GLAD_API_CALL PFNGLBLENDCOLORPROC glad_glBlendColor; +#define glBlendColor glad_glBlendColor +GLAD_API_CALL PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +#define glBlendEquation glad_glBlendEquation +GLAD_API_CALL PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +#define glBlendEquationSeparate glad_glBlendEquationSeparate +GLAD_API_CALL PFNGLBLENDFUNCPROC glad_glBlendFunc; +#define glBlendFunc glad_glBlendFunc +GLAD_API_CALL PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +#define glBlendFuncSeparate glad_glBlendFuncSeparate +GLAD_API_CALL PFNGLBUFFERDATAPROC glad_glBufferData; +#define glBufferData glad_glBufferData +GLAD_API_CALL PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +#define glBufferSubData glad_glBufferSubData +GLAD_API_CALL PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +#define glCheckFramebufferStatus glad_glCheckFramebufferStatus +GLAD_API_CALL PFNGLCLEARPROC glad_glClear; +#define glClear glad_glClear +GLAD_API_CALL PFNGLCLEARCOLORPROC glad_glClearColor; +#define glClearColor glad_glClearColor +GLAD_API_CALL PFNGLCLEARDEPTHFPROC glad_glClearDepthf; +#define glClearDepthf glad_glClearDepthf +GLAD_API_CALL PFNGLCLEARSTENCILPROC glad_glClearStencil; +#define glClearStencil glad_glClearStencil +GLAD_API_CALL PFNGLCOLORMASKPROC glad_glColorMask; +#define glColorMask glad_glColorMask +GLAD_API_CALL PFNGLCOMPILESHADERPROC glad_glCompileShader; +#define glCompileShader glad_glCompileShader +GLAD_API_CALL PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +#define glCompressedTexImage2D glad_glCompressedTexImage2D +GLAD_API_CALL PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D +GLAD_API_CALL PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +#define glCopyTexImage2D glad_glCopyTexImage2D +GLAD_API_CALL PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +#define glCopyTexSubImage2D glad_glCopyTexSubImage2D +GLAD_API_CALL PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +#define glCreateProgram glad_glCreateProgram +GLAD_API_CALL PFNGLCREATESHADERPROC glad_glCreateShader; +#define glCreateShader glad_glCreateShader +GLAD_API_CALL PFNGLCULLFACEPROC glad_glCullFace; +#define glCullFace glad_glCullFace +GLAD_API_CALL PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +#define glDeleteBuffers glad_glDeleteBuffers +GLAD_API_CALL PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +#define glDeleteFramebuffers glad_glDeleteFramebuffers +GLAD_API_CALL PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +#define glDeleteProgram glad_glDeleteProgram +GLAD_API_CALL PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +#define glDeleteRenderbuffers glad_glDeleteRenderbuffers +GLAD_API_CALL PFNGLDELETESHADERPROC glad_glDeleteShader; +#define glDeleteShader glad_glDeleteShader +GLAD_API_CALL PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +#define glDeleteTextures glad_glDeleteTextures +GLAD_API_CALL PFNGLDEPTHFUNCPROC glad_glDepthFunc; +#define glDepthFunc glad_glDepthFunc +GLAD_API_CALL PFNGLDEPTHMASKPROC glad_glDepthMask; +#define glDepthMask glad_glDepthMask +GLAD_API_CALL PFNGLDEPTHRANGEFPROC glad_glDepthRangef; +#define glDepthRangef glad_glDepthRangef +GLAD_API_CALL PFNGLDETACHSHADERPROC glad_glDetachShader; +#define glDetachShader glad_glDetachShader +GLAD_API_CALL PFNGLDISABLEPROC glad_glDisable; +#define glDisable glad_glDisable +GLAD_API_CALL PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +#define glDisableVertexAttribArray glad_glDisableVertexAttribArray +GLAD_API_CALL PFNGLDRAWARRAYSPROC glad_glDrawArrays; +#define glDrawArrays glad_glDrawArrays +GLAD_API_CALL PFNGLDRAWELEMENTSPROC glad_glDrawElements; +#define glDrawElements glad_glDrawElements +GLAD_API_CALL PFNGLENABLEPROC glad_glEnable; +#define glEnable glad_glEnable +GLAD_API_CALL PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +#define glEnableVertexAttribArray glad_glEnableVertexAttribArray +GLAD_API_CALL PFNGLFINISHPROC glad_glFinish; +#define glFinish glad_glFinish +GLAD_API_CALL PFNGLFLUSHPROC glad_glFlush; +#define glFlush glad_glFlush +GLAD_API_CALL PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer +GLAD_API_CALL PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +#define glFramebufferTexture2D glad_glFramebufferTexture2D +GLAD_API_CALL PFNGLFRONTFACEPROC glad_glFrontFace; +#define glFrontFace glad_glFrontFace +GLAD_API_CALL PFNGLGENBUFFERSPROC glad_glGenBuffers; +#define glGenBuffers glad_glGenBuffers +GLAD_API_CALL PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +#define glGenFramebuffers glad_glGenFramebuffers +GLAD_API_CALL PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +#define glGenRenderbuffers glad_glGenRenderbuffers +GLAD_API_CALL PFNGLGENTEXTURESPROC glad_glGenTextures; +#define glGenTextures glad_glGenTextures +GLAD_API_CALL PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +#define glGenerateMipmap glad_glGenerateMipmap +GLAD_API_CALL PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +#define glGetActiveAttrib glad_glGetActiveAttrib +GLAD_API_CALL PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +#define glGetActiveUniform glad_glGetActiveUniform +GLAD_API_CALL PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +#define glGetAttachedShaders glad_glGetAttachedShaders +GLAD_API_CALL PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +#define glGetAttribLocation glad_glGetAttribLocation +GLAD_API_CALL PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +#define glGetBooleanv glad_glGetBooleanv +GLAD_API_CALL PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +#define glGetBufferParameteriv glad_glGetBufferParameteriv +GLAD_API_CALL PFNGLGETERRORPROC glad_glGetError; +#define glGetError glad_glGetError +GLAD_API_CALL PFNGLGETFLOATVPROC glad_glGetFloatv; +#define glGetFloatv glad_glGetFloatv +GLAD_API_CALL PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv +GLAD_API_CALL PFNGLGETINTEGERVPROC glad_glGetIntegerv; +#define glGetIntegerv glad_glGetIntegerv +GLAD_API_CALL PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +#define glGetProgramInfoLog glad_glGetProgramInfoLog +GLAD_API_CALL PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +#define glGetProgramiv glad_glGetProgramiv +GLAD_API_CALL PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv +GLAD_API_CALL PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +#define glGetShaderInfoLog glad_glGetShaderInfoLog +GLAD_API_CALL PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; +#define glGetShaderPrecisionFormat glad_glGetShaderPrecisionFormat +GLAD_API_CALL PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +#define glGetShaderSource glad_glGetShaderSource +GLAD_API_CALL PFNGLGETSHADERIVPROC glad_glGetShaderiv; +#define glGetShaderiv glad_glGetShaderiv +GLAD_API_CALL PFNGLGETSTRINGPROC glad_glGetString; +#define glGetString glad_glGetString +GLAD_API_CALL PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +#define glGetTexParameterfv glad_glGetTexParameterfv +GLAD_API_CALL PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +#define glGetTexParameteriv glad_glGetTexParameteriv +GLAD_API_CALL PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +#define glGetUniformLocation glad_glGetUniformLocation +GLAD_API_CALL PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +#define glGetUniformfv glad_glGetUniformfv +GLAD_API_CALL PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +#define glGetUniformiv glad_glGetUniformiv +GLAD_API_CALL PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv +GLAD_API_CALL PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +#define glGetVertexAttribfv glad_glGetVertexAttribfv +GLAD_API_CALL PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +#define glGetVertexAttribiv glad_glGetVertexAttribiv +GLAD_API_CALL PFNGLHINTPROC glad_glHint; +#define glHint glad_glHint +GLAD_API_CALL PFNGLISBUFFERPROC glad_glIsBuffer; +#define glIsBuffer glad_glIsBuffer +GLAD_API_CALL PFNGLISENABLEDPROC glad_glIsEnabled; +#define glIsEnabled glad_glIsEnabled +GLAD_API_CALL PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +#define glIsFramebuffer glad_glIsFramebuffer +GLAD_API_CALL PFNGLISPROGRAMPROC glad_glIsProgram; +#define glIsProgram glad_glIsProgram +GLAD_API_CALL PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +#define glIsRenderbuffer glad_glIsRenderbuffer +GLAD_API_CALL PFNGLISSHADERPROC glad_glIsShader; +#define glIsShader glad_glIsShader +GLAD_API_CALL PFNGLISTEXTUREPROC glad_glIsTexture; +#define glIsTexture glad_glIsTexture +GLAD_API_CALL PFNGLLINEWIDTHPROC glad_glLineWidth; +#define glLineWidth glad_glLineWidth +GLAD_API_CALL PFNGLLINKPROGRAMPROC glad_glLinkProgram; +#define glLinkProgram glad_glLinkProgram +GLAD_API_CALL PFNGLPIXELSTOREIPROC glad_glPixelStorei; +#define glPixelStorei glad_glPixelStorei +GLAD_API_CALL PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +#define glPolygonOffset glad_glPolygonOffset +GLAD_API_CALL PFNGLREADPIXELSPROC glad_glReadPixels; +#define glReadPixels glad_glReadPixels +GLAD_API_CALL PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; +#define glReleaseShaderCompiler glad_glReleaseShaderCompiler +GLAD_API_CALL PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +#define glRenderbufferStorage glad_glRenderbufferStorage +GLAD_API_CALL PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +#define glSampleCoverage glad_glSampleCoverage +GLAD_API_CALL PFNGLSCISSORPROC glad_glScissor; +#define glScissor glad_glScissor +GLAD_API_CALL PFNGLSHADERBINARYPROC glad_glShaderBinary; +#define glShaderBinary glad_glShaderBinary +GLAD_API_CALL PFNGLSHADERSOURCEPROC glad_glShaderSource; +#define glShaderSource glad_glShaderSource +GLAD_API_CALL PFNGLSTENCILFUNCPROC glad_glStencilFunc; +#define glStencilFunc glad_glStencilFunc +GLAD_API_CALL PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +#define glStencilFuncSeparate glad_glStencilFuncSeparate +GLAD_API_CALL PFNGLSTENCILMASKPROC glad_glStencilMask; +#define glStencilMask glad_glStencilMask +GLAD_API_CALL PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +#define glStencilMaskSeparate glad_glStencilMaskSeparate +GLAD_API_CALL PFNGLSTENCILOPPROC glad_glStencilOp; +#define glStencilOp glad_glStencilOp +GLAD_API_CALL PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +#define glStencilOpSeparate glad_glStencilOpSeparate +GLAD_API_CALL PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +#define glTexImage2D glad_glTexImage2D +GLAD_API_CALL PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +#define glTexParameterf glad_glTexParameterf +GLAD_API_CALL PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +#define glTexParameterfv glad_glTexParameterfv +GLAD_API_CALL PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +#define glTexParameteri glad_glTexParameteri +GLAD_API_CALL PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +#define glTexParameteriv glad_glTexParameteriv +GLAD_API_CALL PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +#define glTexSubImage2D glad_glTexSubImage2D +GLAD_API_CALL PFNGLUNIFORM1FPROC glad_glUniform1f; +#define glUniform1f glad_glUniform1f +GLAD_API_CALL PFNGLUNIFORM1FVPROC glad_glUniform1fv; +#define glUniform1fv glad_glUniform1fv +GLAD_API_CALL PFNGLUNIFORM1IPROC glad_glUniform1i; +#define glUniform1i glad_glUniform1i +GLAD_API_CALL PFNGLUNIFORM1IVPROC glad_glUniform1iv; +#define glUniform1iv glad_glUniform1iv +GLAD_API_CALL PFNGLUNIFORM2FPROC glad_glUniform2f; +#define glUniform2f glad_glUniform2f +GLAD_API_CALL PFNGLUNIFORM2FVPROC glad_glUniform2fv; +#define glUniform2fv glad_glUniform2fv +GLAD_API_CALL PFNGLUNIFORM2IPROC glad_glUniform2i; +#define glUniform2i glad_glUniform2i +GLAD_API_CALL PFNGLUNIFORM2IVPROC glad_glUniform2iv; +#define glUniform2iv glad_glUniform2iv +GLAD_API_CALL PFNGLUNIFORM3FPROC glad_glUniform3f; +#define glUniform3f glad_glUniform3f +GLAD_API_CALL PFNGLUNIFORM3FVPROC glad_glUniform3fv; +#define glUniform3fv glad_glUniform3fv +GLAD_API_CALL PFNGLUNIFORM3IPROC glad_glUniform3i; +#define glUniform3i glad_glUniform3i +GLAD_API_CALL PFNGLUNIFORM3IVPROC glad_glUniform3iv; +#define glUniform3iv glad_glUniform3iv +GLAD_API_CALL PFNGLUNIFORM4FPROC glad_glUniform4f; +#define glUniform4f glad_glUniform4f +GLAD_API_CALL PFNGLUNIFORM4FVPROC glad_glUniform4fv; +#define glUniform4fv glad_glUniform4fv +GLAD_API_CALL PFNGLUNIFORM4IPROC glad_glUniform4i; +#define glUniform4i glad_glUniform4i +GLAD_API_CALL PFNGLUNIFORM4IVPROC glad_glUniform4iv; +#define glUniform4iv glad_glUniform4iv +GLAD_API_CALL PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +#define glUniformMatrix2fv glad_glUniformMatrix2fv +GLAD_API_CALL PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +#define glUniformMatrix3fv glad_glUniformMatrix3fv +GLAD_API_CALL PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +#define glUniformMatrix4fv glad_glUniformMatrix4fv +GLAD_API_CALL PFNGLUSEPROGRAMPROC glad_glUseProgram; +#define glUseProgram glad_glUseProgram +GLAD_API_CALL PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +#define glValidateProgram glad_glValidateProgram +GLAD_API_CALL PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +#define glVertexAttrib1f glad_glVertexAttrib1f +GLAD_API_CALL PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +#define glVertexAttrib1fv glad_glVertexAttrib1fv +GLAD_API_CALL PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +#define glVertexAttrib2f glad_glVertexAttrib2f +GLAD_API_CALL PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +#define glVertexAttrib2fv glad_glVertexAttrib2fv +GLAD_API_CALL PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +#define glVertexAttrib3f glad_glVertexAttrib3f +GLAD_API_CALL PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +#define glVertexAttrib3fv glad_glVertexAttrib3fv +GLAD_API_CALL PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +#define glVertexAttrib4f glad_glVertexAttrib4f +GLAD_API_CALL PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +#define glVertexAttrib4fv glad_glVertexAttrib4fv +GLAD_API_CALL PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +#define glVertexAttribPointer glad_glVertexAttribPointer +GLAD_API_CALL PFNGLVIEWPORTPROC glad_glViewport; +#define glViewport glad_glViewport + + + + + +GLAD_API_CALL int gladLoadGLES2UserPtr( GLADuserptrloadfunc load, void *userptr); +GLAD_API_CALL int gladLoadGLES2( GLADloadfunc load); + + + +#ifdef __cplusplus +} +#endif +#endif + +/* Source */ +#ifdef GLAD_GLES2_IMPLEMENTATION +#include +#include +#include + +#ifndef GLAD_IMPL_UTIL_C_ +#define GLAD_IMPL_UTIL_C_ + +#ifdef _MSC_VER +#define GLAD_IMPL_UTIL_SSCANF sscanf_s +#else +#define GLAD_IMPL_UTIL_SSCANF sscanf +#endif + +#endif /* GLAD_IMPL_UTIL_C_ */ + +#ifdef __cplusplus +extern "C" { +#endif + + + +int GLAD_GL_ES_VERSION_2_0 = 0; + + + +PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; +PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; +PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; +PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; +PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; +PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; +PFNGLBUFFERDATAPROC glad_glBufferData = NULL; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; +PFNGLCLEARPROC glad_glClear = NULL; +PFNGLCLEARCOLORPROC glad_glClearColor = NULL; +PFNGLCLEARDEPTHFPROC glad_glClearDepthf = NULL; +PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; +PFNGLCOLORMASKPROC glad_glColorMask = NULL; +PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; +PFNGLCREATESHADERPROC glad_glCreateShader = NULL; +PFNGLCULLFACEPROC glad_glCullFace = NULL; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; +PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; +PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; +PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; +PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; +PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; +PFNGLDISABLEPROC glad_glDisable = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; +PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; +PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; +PFNGLENABLEPROC glad_glEnable = NULL; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; +PFNGLFINISHPROC glad_glFinish = NULL; +PFNGLFLUSHPROC glad_glFlush = NULL; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; +PFNGLFRONTFACEPROC glad_glFrontFace = NULL; +PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; +PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; +PFNGLGETERRORPROC glad_glGetError = NULL; +PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; +PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; +PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat = NULL; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; +PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; +PFNGLGETSTRINGPROC glad_glGetString = NULL; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; +PFNGLHINTPROC glad_glHint = NULL; +PFNGLISBUFFERPROC glad_glIsBuffer = NULL; +PFNGLISENABLEDPROC glad_glIsEnabled = NULL; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; +PFNGLISPROGRAMPROC glad_glIsProgram = NULL; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; +PFNGLISSHADERPROC glad_glIsShader = NULL; +PFNGLISTEXTUREPROC glad_glIsTexture = NULL; +PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; +PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; +PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; +PFNGLREADPIXELSPROC glad_glReadPixels = NULL; +PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler = NULL; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; +PFNGLSCISSORPROC glad_glScissor = NULL; +PFNGLSHADERBINARYPROC glad_glShaderBinary = NULL; +PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; +PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; +PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; +PFNGLSTENCILOPPROC glad_glStencilOp = NULL; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; +PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; +PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; +PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; +PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; +PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; +PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; +PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; +PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; +PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; +PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; +PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; +PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; +PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; +PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; +PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; +PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; +PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; +PFNGLVIEWPORTPROC glad_glViewport = NULL; + + +static void glad_gl_load_GL_ES_VERSION_2_0( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_GL_ES_VERSION_2_0) return; + glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC) load(userptr, "glActiveTexture"); + glad_glAttachShader = (PFNGLATTACHSHADERPROC) load(userptr, "glAttachShader"); + glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC) load(userptr, "glBindAttribLocation"); + glad_glBindBuffer = (PFNGLBINDBUFFERPROC) load(userptr, "glBindBuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC) load(userptr, "glBindFramebuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC) load(userptr, "glBindRenderbuffer"); + glad_glBindTexture = (PFNGLBINDTEXTUREPROC) load(userptr, "glBindTexture"); + glad_glBlendColor = (PFNGLBLENDCOLORPROC) load(userptr, "glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC) load(userptr, "glBlendEquation"); + glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC) load(userptr, "glBlendEquationSeparate"); + glad_glBlendFunc = (PFNGLBLENDFUNCPROC) load(userptr, "glBlendFunc"); + glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) load(userptr, "glBlendFuncSeparate"); + glad_glBufferData = (PFNGLBUFFERDATAPROC) load(userptr, "glBufferData"); + glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC) load(userptr, "glBufferSubData"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) load(userptr, "glCheckFramebufferStatus"); + glad_glClear = (PFNGLCLEARPROC) load(userptr, "glClear"); + glad_glClearColor = (PFNGLCLEARCOLORPROC) load(userptr, "glClearColor"); + glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC) load(userptr, "glClearDepthf"); + glad_glClearStencil = (PFNGLCLEARSTENCILPROC) load(userptr, "glClearStencil"); + glad_glColorMask = (PFNGLCOLORMASKPROC) load(userptr, "glColorMask"); + glad_glCompileShader = (PFNGLCOMPILESHADERPROC) load(userptr, "glCompileShader"); + glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC) load(userptr, "glCompressedTexImage2D"); + glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) load(userptr, "glCompressedTexSubImage2D"); + glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC) load(userptr, "glCopyTexImage2D"); + glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC) load(userptr, "glCopyTexSubImage2D"); + glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC) load(userptr, "glCreateProgram"); + glad_glCreateShader = (PFNGLCREATESHADERPROC) load(userptr, "glCreateShader"); + glad_glCullFace = (PFNGLCULLFACEPROC) load(userptr, "glCullFace"); + glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC) load(userptr, "glDeleteBuffers"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC) load(userptr, "glDeleteFramebuffers"); + glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC) load(userptr, "glDeleteProgram"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC) load(userptr, "glDeleteRenderbuffers"); + glad_glDeleteShader = (PFNGLDELETESHADERPROC) load(userptr, "glDeleteShader"); + glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC) load(userptr, "glDeleteTextures"); + glad_glDepthFunc = (PFNGLDEPTHFUNCPROC) load(userptr, "glDepthFunc"); + glad_glDepthMask = (PFNGLDEPTHMASKPROC) load(userptr, "glDepthMask"); + glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC) load(userptr, "glDepthRangef"); + glad_glDetachShader = (PFNGLDETACHSHADERPROC) load(userptr, "glDetachShader"); + glad_glDisable = (PFNGLDISABLEPROC) load(userptr, "glDisable"); + glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) load(userptr, "glDisableVertexAttribArray"); + glad_glDrawArrays = (PFNGLDRAWARRAYSPROC) load(userptr, "glDrawArrays"); + glad_glDrawElements = (PFNGLDRAWELEMENTSPROC) load(userptr, "glDrawElements"); + glad_glEnable = (PFNGLENABLEPROC) load(userptr, "glEnable"); + glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) load(userptr, "glEnableVertexAttribArray"); + glad_glFinish = (PFNGLFINISHPROC) load(userptr, "glFinish"); + glad_glFlush = (PFNGLFLUSHPROC) load(userptr, "glFlush"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC) load(userptr, "glFramebufferRenderbuffer"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC) load(userptr, "glFramebufferTexture2D"); + glad_glFrontFace = (PFNGLFRONTFACEPROC) load(userptr, "glFrontFace"); + glad_glGenBuffers = (PFNGLGENBUFFERSPROC) load(userptr, "glGenBuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC) load(userptr, "glGenFramebuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC) load(userptr, "glGenRenderbuffers"); + glad_glGenTextures = (PFNGLGENTEXTURESPROC) load(userptr, "glGenTextures"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC) load(userptr, "glGenerateMipmap"); + glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC) load(userptr, "glGetActiveAttrib"); + glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC) load(userptr, "glGetActiveUniform"); + glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC) load(userptr, "glGetAttachedShaders"); + glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC) load(userptr, "glGetAttribLocation"); + glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC) load(userptr, "glGetBooleanv"); + glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC) load(userptr, "glGetBufferParameteriv"); + glad_glGetError = (PFNGLGETERRORPROC) load(userptr, "glGetError"); + glad_glGetFloatv = (PFNGLGETFLOATVPROC) load(userptr, "glGetFloatv"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) load(userptr, "glGetFramebufferAttachmentParameteriv"); + glad_glGetIntegerv = (PFNGLGETINTEGERVPROC) load(userptr, "glGetIntegerv"); + glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) load(userptr, "glGetProgramInfoLog"); + glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC) load(userptr, "glGetProgramiv"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC) load(userptr, "glGetRenderbufferParameteriv"); + glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) load(userptr, "glGetShaderInfoLog"); + glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC) load(userptr, "glGetShaderPrecisionFormat"); + glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC) load(userptr, "glGetShaderSource"); + glad_glGetShaderiv = (PFNGLGETSHADERIVPROC) load(userptr, "glGetShaderiv"); + glad_glGetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); + glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC) load(userptr, "glGetTexParameterfv"); + glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC) load(userptr, "glGetTexParameteriv"); + glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) load(userptr, "glGetUniformLocation"); + glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC) load(userptr, "glGetUniformfv"); + glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC) load(userptr, "glGetUniformiv"); + glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC) load(userptr, "glGetVertexAttribPointerv"); + glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC) load(userptr, "glGetVertexAttribfv"); + glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC) load(userptr, "glGetVertexAttribiv"); + glad_glHint = (PFNGLHINTPROC) load(userptr, "glHint"); + glad_glIsBuffer = (PFNGLISBUFFERPROC) load(userptr, "glIsBuffer"); + glad_glIsEnabled = (PFNGLISENABLEDPROC) load(userptr, "glIsEnabled"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC) load(userptr, "glIsFramebuffer"); + glad_glIsProgram = (PFNGLISPROGRAMPROC) load(userptr, "glIsProgram"); + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC) load(userptr, "glIsRenderbuffer"); + glad_glIsShader = (PFNGLISSHADERPROC) load(userptr, "glIsShader"); + glad_glIsTexture = (PFNGLISTEXTUREPROC) load(userptr, "glIsTexture"); + glad_glLineWidth = (PFNGLLINEWIDTHPROC) load(userptr, "glLineWidth"); + glad_glLinkProgram = (PFNGLLINKPROGRAMPROC) load(userptr, "glLinkProgram"); + glad_glPixelStorei = (PFNGLPIXELSTOREIPROC) load(userptr, "glPixelStorei"); + glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC) load(userptr, "glPolygonOffset"); + glad_glReadPixels = (PFNGLREADPIXELSPROC) load(userptr, "glReadPixels"); + glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC) load(userptr, "glReleaseShaderCompiler"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC) load(userptr, "glRenderbufferStorage"); + glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC) load(userptr, "glSampleCoverage"); + glad_glScissor = (PFNGLSCISSORPROC) load(userptr, "glScissor"); + glad_glShaderBinary = (PFNGLSHADERBINARYPROC) load(userptr, "glShaderBinary"); + glad_glShaderSource = (PFNGLSHADERSOURCEPROC) load(userptr, "glShaderSource"); + glad_glStencilFunc = (PFNGLSTENCILFUNCPROC) load(userptr, "glStencilFunc"); + glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC) load(userptr, "glStencilFuncSeparate"); + glad_glStencilMask = (PFNGLSTENCILMASKPROC) load(userptr, "glStencilMask"); + glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC) load(userptr, "glStencilMaskSeparate"); + glad_glStencilOp = (PFNGLSTENCILOPPROC) load(userptr, "glStencilOp"); + glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC) load(userptr, "glStencilOpSeparate"); + glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC) load(userptr, "glTexImage2D"); + glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC) load(userptr, "glTexParameterf"); + glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC) load(userptr, "glTexParameterfv"); + glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC) load(userptr, "glTexParameteri"); + glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC) load(userptr, "glTexParameteriv"); + glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC) load(userptr, "glTexSubImage2D"); + glad_glUniform1f = (PFNGLUNIFORM1FPROC) load(userptr, "glUniform1f"); + glad_glUniform1fv = (PFNGLUNIFORM1FVPROC) load(userptr, "glUniform1fv"); + glad_glUniform1i = (PFNGLUNIFORM1IPROC) load(userptr, "glUniform1i"); + glad_glUniform1iv = (PFNGLUNIFORM1IVPROC) load(userptr, "glUniform1iv"); + glad_glUniform2f = (PFNGLUNIFORM2FPROC) load(userptr, "glUniform2f"); + glad_glUniform2fv = (PFNGLUNIFORM2FVPROC) load(userptr, "glUniform2fv"); + glad_glUniform2i = (PFNGLUNIFORM2IPROC) load(userptr, "glUniform2i"); + glad_glUniform2iv = (PFNGLUNIFORM2IVPROC) load(userptr, "glUniform2iv"); + glad_glUniform3f = (PFNGLUNIFORM3FPROC) load(userptr, "glUniform3f"); + glad_glUniform3fv = (PFNGLUNIFORM3FVPROC) load(userptr, "glUniform3fv"); + glad_glUniform3i = (PFNGLUNIFORM3IPROC) load(userptr, "glUniform3i"); + glad_glUniform3iv = (PFNGLUNIFORM3IVPROC) load(userptr, "glUniform3iv"); + glad_glUniform4f = (PFNGLUNIFORM4FPROC) load(userptr, "glUniform4f"); + glad_glUniform4fv = (PFNGLUNIFORM4FVPROC) load(userptr, "glUniform4fv"); + glad_glUniform4i = (PFNGLUNIFORM4IPROC) load(userptr, "glUniform4i"); + glad_glUniform4iv = (PFNGLUNIFORM4IVPROC) load(userptr, "glUniform4iv"); + glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC) load(userptr, "glUniformMatrix2fv"); + glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC) load(userptr, "glUniformMatrix3fv"); + glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC) load(userptr, "glUniformMatrix4fv"); + glad_glUseProgram = (PFNGLUSEPROGRAMPROC) load(userptr, "glUseProgram"); + glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC) load(userptr, "glValidateProgram"); + glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC) load(userptr, "glVertexAttrib1f"); + glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC) load(userptr, "glVertexAttrib1fv"); + glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC) load(userptr, "glVertexAttrib2f"); + glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC) load(userptr, "glVertexAttrib2fv"); + glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC) load(userptr, "glVertexAttrib3f"); + glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC) load(userptr, "glVertexAttrib3fv"); + glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC) load(userptr, "glVertexAttrib4f"); + glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) load(userptr, "glVertexAttrib4fv"); + glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) load(userptr, "glVertexAttribPointer"); + glad_glViewport = (PFNGLVIEWPORTPROC) load(userptr, "glViewport"); +} + + + +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) +#define GLAD_GL_IS_SOME_NEW_VERSION 1 +#else +#define GLAD_GL_IS_SOME_NEW_VERSION 0 +#endif + +static int glad_gl_get_extensions( int version, const char **out_exts, unsigned int *out_num_exts_i, char ***out_exts_i) { +#if GLAD_GL_IS_SOME_NEW_VERSION + if(GLAD_VERSION_MAJOR(version) < 3) { +#else + (void) version; + (void) out_num_exts_i; + (void) out_exts_i; +#endif + if (glad_glGetString == NULL) { + return 0; + } + *out_exts = (const char *)glad_glGetString(GL_EXTENSIONS); +#if GLAD_GL_IS_SOME_NEW_VERSION + } else { + unsigned int index = 0; + unsigned int num_exts_i = 0; + char **exts_i = NULL; + if (glad_glGetStringi == NULL || glad_glGetIntegerv == NULL) { + return 0; + } + glad_glGetIntegerv(GL_NUM_EXTENSIONS, (int*) &num_exts_i); + if (num_exts_i > 0) { + exts_i = (char **) malloc(num_exts_i * (sizeof *exts_i)); + } + if (exts_i == NULL) { + return 0; + } + for(index = 0; index < num_exts_i; index++) { + const char *gl_str_tmp = (const char*) glad_glGetStringi(GL_EXTENSIONS, index); + size_t len = strlen(gl_str_tmp) + 1; + + char *local_str = (char*) malloc(len * sizeof(char)); + if(local_str != NULL) { + memcpy(local_str, gl_str_tmp, len * sizeof(char)); + } + + exts_i[index] = local_str; + } + + *out_num_exts_i = num_exts_i; + *out_exts_i = exts_i; + } +#endif + return 1; +} +static void glad_gl_free_extensions(char **exts_i, unsigned int num_exts_i) { + if (exts_i != NULL) { + unsigned int index; + for(index = 0; index < num_exts_i; index++) { + free((void *) (exts_i[index])); + } + free((void *)exts_i); + exts_i = NULL; + } +} +static int glad_gl_has_extension(int version, const char *exts, unsigned int num_exts_i, char **exts_i, const char *ext) { + if(GLAD_VERSION_MAJOR(version) < 3 || !GLAD_GL_IS_SOME_NEW_VERSION) { + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if(extensions == NULL || ext == NULL) { + return 0; + } + while(1) { + loc = strstr(extensions, ext); + if(loc == NULL) { + return 0; + } + terminator = loc + strlen(ext); + if((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) { + return 1; + } + extensions = terminator; + } + } else { + unsigned int index; + for(index = 0; index < num_exts_i; index++) { + const char *e = exts_i[index]; + if(strcmp(e, ext) == 0) { + return 1; + } + } + } + return 0; +} + +static GLADapiproc glad_gl_get_proc_from_userptr(void *userptr, const char* name) { + return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name); +} + +static int glad_gl_find_extensions_gles2( int version) { + const char *exts = NULL; + unsigned int num_exts_i = 0; + char **exts_i = NULL; + if (!glad_gl_get_extensions(version, &exts, &num_exts_i, &exts_i)) return 0; + + (void) glad_gl_has_extension; + + glad_gl_free_extensions(exts_i, num_exts_i); + + return 1; +} + +static int glad_gl_find_core_gles2(void) { + int i; + const char* version; + const char* prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + "OpenGL SC ", + NULL + }; + int major = 0; + int minor = 0; + version = (const char*) glad_glGetString(GL_VERSION); + if (!version) return 0; + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + + GLAD_IMPL_UTIL_SSCANF(version, "%d.%d", &major, &minor); + + GLAD_GL_ES_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + + return GLAD_MAKE_VERSION(major, minor); +} + +int gladLoadGLES2UserPtr( GLADuserptrloadfunc load, void *userptr) { + int version; + + glad_glGetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); + if(glad_glGetString == NULL) return 0; + if(glad_glGetString(GL_VERSION) == NULL) return 0; + version = glad_gl_find_core_gles2(); + + glad_gl_load_GL_ES_VERSION_2_0(load, userptr); + + if (!glad_gl_find_extensions_gles2(version)) return 0; + + + + return version; +} + + +int gladLoadGLES2( GLADloadfunc load) { + return gladLoadGLES2UserPtr( glad_gl_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load); +} + + + + + + +#ifdef __cplusplus +} +#endif + +#endif /* GLAD_GLES2_IMPLEMENTATION */ + diff --git a/lib/glfw/deps/glad/vulkan.h b/lib/glfw/deps/glad/vulkan.h new file mode 100644 index 0000000..469ffe5 --- /dev/null +++ b/lib/glfw/deps/glad/vulkan.h @@ -0,0 +1,6330 @@ +/** + * Loader generated by glad 2.0.0-beta on Thu Jul 7 20:52:04 2022 + * + * Generator: C/C++ + * Specification: vk + * Extensions: 4 + * + * APIs: + * - vulkan=1.3 + * + * Options: + * - ALIAS = False + * - DEBUG = False + * - HEADER_ONLY = True + * - LOADER = False + * - MX = False + * - MX_GLOBAL = False + * - ON_DEMAND = False + * + * Commandline: + * --api='vulkan=1.3' --extensions='VK_EXT_debug_report,VK_KHR_portability_enumeration,VK_KHR_surface,VK_KHR_swapchain' c --header-only + * + * Online: + * http://glad.sh/#api=vulkan%3D1.3&extensions=VK_EXT_debug_report%2CVK_KHR_portability_enumeration%2CVK_KHR_surface%2CVK_KHR_swapchain&generator=c&options=HEADER_ONLY + * + */ + +#ifndef GLAD_VULKAN_H_ +#define GLAD_VULKAN_H_ + +#ifdef VULKAN_H_ + #error header already included (API: vulkan), remove previous include! +#endif +#define VULKAN_H_ 1 + +#ifdef VULKAN_CORE_H_ + #error header already included (API: vulkan), remove previous include! +#endif +#define VULKAN_CORE_H_ 1 + + +#define GLAD_VULKAN +#define GLAD_OPTION_VULKAN_HEADER_ONLY + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef GLAD_PLATFORM_H_ +#define GLAD_PLATFORM_H_ + +#ifndef GLAD_PLATFORM_WIN32 + #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) + #define GLAD_PLATFORM_WIN32 1 + #else + #define GLAD_PLATFORM_WIN32 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_APPLE + #ifdef __APPLE__ + #define GLAD_PLATFORM_APPLE 1 + #else + #define GLAD_PLATFORM_APPLE 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_EMSCRIPTEN + #ifdef __EMSCRIPTEN__ + #define GLAD_PLATFORM_EMSCRIPTEN 1 + #else + #define GLAD_PLATFORM_EMSCRIPTEN 0 + #endif +#endif + +#ifndef GLAD_PLATFORM_UWP + #if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) + #ifdef __has_include + #if __has_include() + #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 + #endif + #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ + #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 + #endif + #endif + + #ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY + #include + #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + #define GLAD_PLATFORM_UWP 1 + #endif + #endif + + #ifndef GLAD_PLATFORM_UWP + #define GLAD_PLATFORM_UWP 0 + #endif +#endif + +#ifdef __GNUC__ + #define GLAD_GNUC_EXTENSION __extension__ +#else + #define GLAD_GNUC_EXTENSION +#endif + +#ifndef GLAD_API_CALL + #if defined(GLAD_API_CALL_EXPORT) + #if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) + #if defined(GLAD_API_CALL_EXPORT_BUILD) + #if defined(__GNUC__) + #define GLAD_API_CALL __attribute__ ((dllexport)) extern + #else + #define GLAD_API_CALL __declspec(dllexport) extern + #endif + #else + #if defined(__GNUC__) + #define GLAD_API_CALL __attribute__ ((dllimport)) extern + #else + #define GLAD_API_CALL __declspec(dllimport) extern + #endif + #endif + #elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) + #define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern + #else + #define GLAD_API_CALL extern + #endif + #else + #define GLAD_API_CALL extern + #endif +#endif + +#ifdef APIENTRY + #define GLAD_API_PTR APIENTRY +#elif GLAD_PLATFORM_WIN32 + #define GLAD_API_PTR __stdcall +#else + #define GLAD_API_PTR +#endif + +#ifndef GLAPI +#define GLAPI GLAD_API_CALL +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY GLAD_API_PTR +#endif + +#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) +#define GLAD_VERSION_MAJOR(version) (version / 10000) +#define GLAD_VERSION_MINOR(version) (version % 10000) + +#define GLAD_GENERATOR_VERSION "2.0.0-beta" + +typedef void (*GLADapiproc)(void); + +typedef GLADapiproc (*GLADloadfunc)(const char *name); +typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); + +typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, ...); + +#endif /* GLAD_PLATFORM_H_ */ + +#define VK_ATTACHMENT_UNUSED (~0U) +#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" +#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10 +#define VK_FALSE 0 +#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration" +#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1 +#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" +#define VK_KHR_SURFACE_SPEC_VERSION 25 +#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" +#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 +#define VK_LOD_CLAMP_NONE 1000.0F +#define VK_LUID_SIZE 8 +#define VK_MAX_DESCRIPTION_SIZE 256 +#define VK_MAX_DEVICE_GROUP_SIZE 32 +#define VK_MAX_DRIVER_INFO_SIZE 256 +#define VK_MAX_DRIVER_NAME_SIZE 256 +#define VK_MAX_EXTENSION_NAME_SIZE 256 +#define VK_MAX_MEMORY_HEAPS 16 +#define VK_MAX_MEMORY_TYPES 32 +#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256 +#define VK_QUEUE_FAMILY_EXTERNAL (~1U) +#define VK_QUEUE_FAMILY_IGNORED (~0U) +#define VK_REMAINING_ARRAY_LAYERS (~0U) +#define VK_REMAINING_MIP_LEVELS (~0U) +#define VK_SUBPASS_EXTERNAL (~0U) +#define VK_TRUE 1 +#define VK_UUID_SIZE 16 +#define VK_WHOLE_SIZE (~0ULL) + + +/* */ +/* File: vk_platform.h */ +/* */ +/* +** Copyright 2014-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + + +#ifndef VK_PLATFORM_H_ +#define VK_PLATFORM_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +/* +*************************************************************************************************** +* Platform-specific directives and type declarations +*************************************************************************************************** +*/ + +/* Platform-specific calling convention macros. + * + * Platforms should define these so that Vulkan clients call Vulkan commands + * with the same calling conventions that the Vulkan implementation expects. + * + * VKAPI_ATTR - Placed before the return type in function declarations. + * Useful for C++11 and GCC/Clang-style function attribute syntax. + * VKAPI_CALL - Placed after the return type in function declarations. + * Useful for MSVC-style calling convention syntax. + * VKAPI_PTR - Placed between the '(' and '*' in function pointer types. + * + * Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void); + * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void); + */ +#if defined(_WIN32) + /* On Windows, Vulkan commands use the stdcall convention */ + #define VKAPI_ATTR + #define VKAPI_CALL __stdcall + #define VKAPI_PTR VKAPI_CALL +#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 + #error "Vulkan is not supported for the 'armeabi' NDK ABI" +#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) + /* On Android 32-bit ARM targets, Vulkan functions use the "hardfloat" */ + /* calling convention, i.e. float parameters are passed in registers. This */ + /* is true even if the rest of the application passes floats on the stack, */ + /* as it does by default when compiling for the armeabi-v7a NDK ABI. */ + #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp"))) + #define VKAPI_CALL + #define VKAPI_PTR VKAPI_ATTR +#else + /* On other platforms, use the default calling convention */ + #define VKAPI_ATTR + #define VKAPI_CALL + #define VKAPI_PTR +#endif + +#if !defined(VK_NO_STDDEF_H) + #include +#endif /* !defined(VK_NO_STDDEF_H) */ + +#if !defined(VK_NO_STDINT_H) + #if defined(_MSC_VER) && (_MSC_VER < 1600) + typedef signed __int8 int8_t; + typedef unsigned __int8 uint8_t; + typedef signed __int16 int16_t; + typedef unsigned __int16 uint16_t; + typedef signed __int32 int32_t; + typedef unsigned __int32 uint32_t; + typedef signed __int64 int64_t; + typedef unsigned __int64 uint64_t; + #else + #include + #endif +#endif /* !defined(VK_NO_STDINT_H) */ + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif +/* DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead. */ +#define VK_MAKE_VERSION(major, minor, patch) \ + ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) +/* DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead. */ +#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) +/* DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead. */ +#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) +/* DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead. */ +#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) +#define VK_MAKE_API_VERSION(variant, major, minor, patch) \ + ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) +#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29) +#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU) +#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) +#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) +/* DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. */ +/*#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 */ +/* Vulkan 1.0 version number */ +#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)/* Patch version should always be set to 0 */ +/* Vulkan 1.1 version number */ +#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)/* Patch version should always be set to 0 */ +/* Vulkan 1.2 version number */ +#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)/* Patch version should always be set to 0 */ +/* Vulkan 1.3 version number */ +#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)/* Patch version should always be set to 0 */ +/* Version of this file */ +#define VK_HEADER_VERSION 220 +/* Complete version of this file */ +#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; +#ifndef VK_USE_64_BIT_PTR_DEFINES + #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) + #define VK_USE_64_BIT_PTR_DEFINES 1 + #else + #define VK_USE_64_BIT_PTR_DEFINES 0 + #endif +#endif +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L)) + #define VK_NULL_HANDLE nullptr + #else + #define VK_NULL_HANDLE ((void*)0) + #endif + #else + #define VK_NULL_HANDLE 0ULL + #endif +#endif +#ifndef VK_NULL_HANDLE + #define VK_NULL_HANDLE 0 +#endif +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; + #else + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; + #endif +#endif + + + + + + + + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_HANDLE(VkPhysicalDevice) +VK_DEFINE_HANDLE(VkDevice) +VK_DEFINE_HANDLE(VkQueue) +VK_DEFINE_HANDLE(VkCommandBuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) +typedef enum VkAttachmentLoadOp { + VK_ATTACHMENT_LOAD_OP_LOAD = 0, + VK_ATTACHMENT_LOAD_OP_CLEAR = 1, + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentLoadOp; +typedef enum VkAttachmentStoreOp { + VK_ATTACHMENT_STORE_OP_STORE = 0, + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1, + VK_ATTACHMENT_STORE_OP_NONE = 1000301000, + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentStoreOp; +typedef enum VkBlendFactor { + VK_BLEND_FACTOR_ZERO = 0, + VK_BLEND_FACTOR_ONE = 1, + VK_BLEND_FACTOR_SRC_COLOR = 2, + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3, + VK_BLEND_FACTOR_DST_COLOR = 4, + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5, + VK_BLEND_FACTOR_SRC_ALPHA = 6, + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7, + VK_BLEND_FACTOR_DST_ALPHA = 8, + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9, + VK_BLEND_FACTOR_CONSTANT_COLOR = 10, + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11, + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12, + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13, + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14, + VK_BLEND_FACTOR_SRC1_COLOR = 15, + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16, + VK_BLEND_FACTOR_SRC1_ALPHA = 17, + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18, + VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF +} VkBlendFactor; +typedef enum VkBlendOp { + VK_BLEND_OP_ADD = 0, + VK_BLEND_OP_SUBTRACT = 1, + VK_BLEND_OP_REVERSE_SUBTRACT = 2, + VK_BLEND_OP_MIN = 3, + VK_BLEND_OP_MAX = 4, + VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF +} VkBlendOp; +typedef enum VkBorderColor { + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0, + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1, + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2, + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3, + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4, + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5, + VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF +} VkBorderColor; +typedef enum VkFramebufferCreateFlagBits { + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1, + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFramebufferCreateFlagBits; +typedef enum VkPipelineCacheHeaderVersion { + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheHeaderVersion; +typedef enum VkPipelineCacheCreateFlagBits { + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1, + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheCreateFlagBits; +typedef enum VkPipelineShaderStageCreateFlagBits { + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 1, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 2, + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineShaderStageCreateFlagBits; +typedef enum VkDescriptorSetLayoutCreateFlagBits { + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorSetLayoutCreateFlagBits; +typedef enum VkInstanceCreateFlagBits { + VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 1, + VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkInstanceCreateFlagBits; +typedef enum VkDeviceQueueCreateFlagBits { + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1, + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDeviceQueueCreateFlagBits; +typedef enum VkBufferCreateFlagBits { + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1, + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2, + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4, + VK_BUFFER_CREATE_PROTECTED_BIT = 8, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16, + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkBufferCreateFlagBits; +typedef enum VkBufferUsageFlagBits { + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1, + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2, + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4, + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8, + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16, + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32, + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64, + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128, + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072, + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkBufferUsageFlagBits; +typedef enum VkColorComponentFlagBits { + VK_COLOR_COMPONENT_R_BIT = 1, + VK_COLOR_COMPONENT_G_BIT = 2, + VK_COLOR_COMPONENT_B_BIT = 4, + VK_COLOR_COMPONENT_A_BIT = 8, + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkColorComponentFlagBits; +typedef enum VkComponentSwizzle { + VK_COMPONENT_SWIZZLE_IDENTITY = 0, + VK_COMPONENT_SWIZZLE_ZERO = 1, + VK_COMPONENT_SWIZZLE_ONE = 2, + VK_COMPONENT_SWIZZLE_R = 3, + VK_COMPONENT_SWIZZLE_G = 4, + VK_COMPONENT_SWIZZLE_B = 5, + VK_COMPONENT_SWIZZLE_A = 6, + VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF +} VkComponentSwizzle; +typedef enum VkCommandPoolCreateFlagBits { + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1, + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2, + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4, + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandPoolCreateFlagBits; +typedef enum VkCommandPoolResetFlagBits { + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1, + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandPoolResetFlagBits; +typedef enum VkCommandBufferResetFlagBits { + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1, + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferResetFlagBits; +typedef enum VkCommandBufferLevel { + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1, + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferLevel; +typedef enum VkCommandBufferUsageFlagBits { + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1, + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2, + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4, + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferUsageFlagBits; +typedef enum VkCompareOp { + VK_COMPARE_OP_NEVER = 0, + VK_COMPARE_OP_LESS = 1, + VK_COMPARE_OP_EQUAL = 2, + VK_COMPARE_OP_LESS_OR_EQUAL = 3, + VK_COMPARE_OP_GREATER = 4, + VK_COMPARE_OP_NOT_EQUAL = 5, + VK_COMPARE_OP_GREATER_OR_EQUAL = 6, + VK_COMPARE_OP_ALWAYS = 7, + VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF +} VkCompareOp; +typedef enum VkCullModeFlagBits { + VK_CULL_MODE_NONE = 0, + VK_CULL_MODE_FRONT_BIT = 1, + VK_CULL_MODE_BACK_BIT = 2, + VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCullModeFlagBits; +typedef enum VkDescriptorType { + VK_DESCRIPTOR_TYPE_SAMPLER = 0, + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1, + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2, + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3, + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4, + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10, + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK = 1000138000, + VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorType; +typedef enum VkDynamicState { + VK_DYNAMIC_STATE_VIEWPORT = 0, + VK_DYNAMIC_STATE_SCISSOR = 1, + VK_DYNAMIC_STATE_LINE_WIDTH = 2, + VK_DYNAMIC_STATE_DEPTH_BIAS = 3, + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4, + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5, + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, + VK_DYNAMIC_STATE_CULL_MODE = 1000267000, + VK_DYNAMIC_STATE_FRONT_FACE = 1000267001, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010, + VK_DYNAMIC_STATE_STENCIL_OP = 1000267011, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004, + VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF +} VkDynamicState; +typedef enum VkFenceCreateFlagBits { + VK_FENCE_CREATE_SIGNALED_BIT = 1, + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFenceCreateFlagBits; +typedef enum VkPolygonMode { + VK_POLYGON_MODE_FILL = 0, + VK_POLYGON_MODE_LINE = 1, + VK_POLYGON_MODE_POINT = 2, + VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF +} VkPolygonMode; +typedef enum VkFormat { + VK_FORMAT_UNDEFINED = 0, + VK_FORMAT_R4G4_UNORM_PACK8 = 1, + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2, + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3, + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4, + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5, + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6, + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7, + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8, + VK_FORMAT_R8_UNORM = 9, + VK_FORMAT_R8_SNORM = 10, + VK_FORMAT_R8_USCALED = 11, + VK_FORMAT_R8_SSCALED = 12, + VK_FORMAT_R8_UINT = 13, + VK_FORMAT_R8_SINT = 14, + VK_FORMAT_R8_SRGB = 15, + VK_FORMAT_R8G8_UNORM = 16, + VK_FORMAT_R8G8_SNORM = 17, + VK_FORMAT_R8G8_USCALED = 18, + VK_FORMAT_R8G8_SSCALED = 19, + VK_FORMAT_R8G8_UINT = 20, + VK_FORMAT_R8G8_SINT = 21, + VK_FORMAT_R8G8_SRGB = 22, + VK_FORMAT_R8G8B8_UNORM = 23, + VK_FORMAT_R8G8B8_SNORM = 24, + VK_FORMAT_R8G8B8_USCALED = 25, + VK_FORMAT_R8G8B8_SSCALED = 26, + VK_FORMAT_R8G8B8_UINT = 27, + VK_FORMAT_R8G8B8_SINT = 28, + VK_FORMAT_R8G8B8_SRGB = 29, + VK_FORMAT_B8G8R8_UNORM = 30, + VK_FORMAT_B8G8R8_SNORM = 31, + VK_FORMAT_B8G8R8_USCALED = 32, + VK_FORMAT_B8G8R8_SSCALED = 33, + VK_FORMAT_B8G8R8_UINT = 34, + VK_FORMAT_B8G8R8_SINT = 35, + VK_FORMAT_B8G8R8_SRGB = 36, + VK_FORMAT_R8G8B8A8_UNORM = 37, + VK_FORMAT_R8G8B8A8_SNORM = 38, + VK_FORMAT_R8G8B8A8_USCALED = 39, + VK_FORMAT_R8G8B8A8_SSCALED = 40, + VK_FORMAT_R8G8B8A8_UINT = 41, + VK_FORMAT_R8G8B8A8_SINT = 42, + VK_FORMAT_R8G8B8A8_SRGB = 43, + VK_FORMAT_B8G8R8A8_UNORM = 44, + VK_FORMAT_B8G8R8A8_SNORM = 45, + VK_FORMAT_B8G8R8A8_USCALED = 46, + VK_FORMAT_B8G8R8A8_SSCALED = 47, + VK_FORMAT_B8G8R8A8_UINT = 48, + VK_FORMAT_B8G8R8A8_SINT = 49, + VK_FORMAT_B8G8R8A8_SRGB = 50, + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51, + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52, + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53, + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54, + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55, + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56, + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57, + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58, + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59, + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60, + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61, + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62, + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63, + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64, + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65, + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66, + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67, + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68, + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69, + VK_FORMAT_R16_UNORM = 70, + VK_FORMAT_R16_SNORM = 71, + VK_FORMAT_R16_USCALED = 72, + VK_FORMAT_R16_SSCALED = 73, + VK_FORMAT_R16_UINT = 74, + VK_FORMAT_R16_SINT = 75, + VK_FORMAT_R16_SFLOAT = 76, + VK_FORMAT_R16G16_UNORM = 77, + VK_FORMAT_R16G16_SNORM = 78, + VK_FORMAT_R16G16_USCALED = 79, + VK_FORMAT_R16G16_SSCALED = 80, + VK_FORMAT_R16G16_UINT = 81, + VK_FORMAT_R16G16_SINT = 82, + VK_FORMAT_R16G16_SFLOAT = 83, + VK_FORMAT_R16G16B16_UNORM = 84, + VK_FORMAT_R16G16B16_SNORM = 85, + VK_FORMAT_R16G16B16_USCALED = 86, + VK_FORMAT_R16G16B16_SSCALED = 87, + VK_FORMAT_R16G16B16_UINT = 88, + VK_FORMAT_R16G16B16_SINT = 89, + VK_FORMAT_R16G16B16_SFLOAT = 90, + VK_FORMAT_R16G16B16A16_UNORM = 91, + VK_FORMAT_R16G16B16A16_SNORM = 92, + VK_FORMAT_R16G16B16A16_USCALED = 93, + VK_FORMAT_R16G16B16A16_SSCALED = 94, + VK_FORMAT_R16G16B16A16_UINT = 95, + VK_FORMAT_R16G16B16A16_SINT = 96, + VK_FORMAT_R16G16B16A16_SFLOAT = 97, + VK_FORMAT_R32_UINT = 98, + VK_FORMAT_R32_SINT = 99, + VK_FORMAT_R32_SFLOAT = 100, + VK_FORMAT_R32G32_UINT = 101, + VK_FORMAT_R32G32_SINT = 102, + VK_FORMAT_R32G32_SFLOAT = 103, + VK_FORMAT_R32G32B32_UINT = 104, + VK_FORMAT_R32G32B32_SINT = 105, + VK_FORMAT_R32G32B32_SFLOAT = 106, + VK_FORMAT_R32G32B32A32_UINT = 107, + VK_FORMAT_R32G32B32A32_SINT = 108, + VK_FORMAT_R32G32B32A32_SFLOAT = 109, + VK_FORMAT_R64_UINT = 110, + VK_FORMAT_R64_SINT = 111, + VK_FORMAT_R64_SFLOAT = 112, + VK_FORMAT_R64G64_UINT = 113, + VK_FORMAT_R64G64_SINT = 114, + VK_FORMAT_R64G64_SFLOAT = 115, + VK_FORMAT_R64G64B64_UINT = 116, + VK_FORMAT_R64G64B64_SINT = 117, + VK_FORMAT_R64G64B64_SFLOAT = 118, + VK_FORMAT_R64G64B64A64_UINT = 119, + VK_FORMAT_R64G64B64A64_SINT = 120, + VK_FORMAT_R64G64B64A64_SFLOAT = 121, + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122, + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123, + VK_FORMAT_D16_UNORM = 124, + VK_FORMAT_X8_D24_UNORM_PACK32 = 125, + VK_FORMAT_D32_SFLOAT = 126, + VK_FORMAT_S8_UINT = 127, + VK_FORMAT_D16_UNORM_S8_UINT = 128, + VK_FORMAT_D24_UNORM_S8_UINT = 129, + VK_FORMAT_D32_SFLOAT_S8_UINT = 130, + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131, + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132, + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133, + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134, + VK_FORMAT_BC2_UNORM_BLOCK = 135, + VK_FORMAT_BC2_SRGB_BLOCK = 136, + VK_FORMAT_BC3_UNORM_BLOCK = 137, + VK_FORMAT_BC3_SRGB_BLOCK = 138, + VK_FORMAT_BC4_UNORM_BLOCK = 139, + VK_FORMAT_BC4_SNORM_BLOCK = 140, + VK_FORMAT_BC5_UNORM_BLOCK = 141, + VK_FORMAT_BC5_SNORM_BLOCK = 142, + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143, + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144, + VK_FORMAT_BC7_UNORM_BLOCK = 145, + VK_FORMAT_BC7_SRGB_BLOCK = 146, + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147, + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148, + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149, + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150, + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151, + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152, + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153, + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154, + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155, + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156, + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157, + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158, + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159, + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160, + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161, + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162, + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163, + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164, + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165, + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166, + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167, + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168, + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169, + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170, + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171, + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172, + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173, + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174, + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175, + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176, + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177, + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178, + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179, + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180, + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181, + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000, + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001, + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002, + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003, + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004, + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005, + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006, + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007, + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008, + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009, + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010, + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016, + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017, + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018, + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019, + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020, + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026, + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027, + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028, + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029, + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030, + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031, + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032, + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033, + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003, + VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000, + VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001, + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000, + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013, + VK_FORMAT_MAX_ENUM = 0x7FFFFFFF +} VkFormat; +typedef enum VkFormatFeatureFlagBits { + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1, + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2, + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4, + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8, + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16, + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32, + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64, + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128, + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256, + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512, + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024, + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096, + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384, + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768, + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152, + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304, + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536, + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFormatFeatureFlagBits; +typedef enum VkFrontFace { + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, + VK_FRONT_FACE_CLOCKWISE = 1, + VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF +} VkFrontFace; +typedef enum VkImageAspectFlagBits { + VK_IMAGE_ASPECT_COLOR_BIT = 1, + VK_IMAGE_ASPECT_DEPTH_BIT = 2, + VK_IMAGE_ASPECT_STENCIL_BIT = 4, + VK_IMAGE_ASPECT_METADATA_BIT = 8, + VK_IMAGE_ASPECT_PLANE_0_BIT = 16, + VK_IMAGE_ASPECT_PLANE_1_BIT = 32, + VK_IMAGE_ASPECT_PLANE_2_BIT = 64, + VK_IMAGE_ASPECT_NONE = 0, + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageAspectFlagBits; +typedef enum VkImageCreateFlagBits { + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1, + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2, + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4, + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8, + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16, + VK_IMAGE_CREATE_ALIAS_BIT = 1024, + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64, + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32, + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128, + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256, + VK_IMAGE_CREATE_PROTECTED_BIT = 2048, + VK_IMAGE_CREATE_DISJOINT_BIT = 512, + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageCreateFlagBits; +typedef enum VkImageLayout { + VK_IMAGE_LAYOUT_UNDEFINED = 0, + VK_IMAGE_LAYOUT_GENERAL = 1, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, + VK_IMAGE_LAYOUT_PREINITIALIZED = 8, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001, + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002, + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003, + VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001, + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, + VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF +} VkImageLayout; +typedef enum VkImageTiling { + VK_IMAGE_TILING_OPTIMAL = 0, + VK_IMAGE_TILING_LINEAR = 1, + VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF +} VkImageTiling; +typedef enum VkImageType { + VK_IMAGE_TYPE_1D = 0, + VK_IMAGE_TYPE_2D = 1, + VK_IMAGE_TYPE_3D = 2, + VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkImageType; +typedef enum VkImageUsageFlagBits { + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1, + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2, + VK_IMAGE_USAGE_SAMPLED_BIT = 4, + VK_IMAGE_USAGE_STORAGE_BIT = 8, + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16, + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32, + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64, + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128, + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageUsageFlagBits; +typedef enum VkImageViewType { + VK_IMAGE_VIEW_TYPE_1D = 0, + VK_IMAGE_VIEW_TYPE_2D = 1, + VK_IMAGE_VIEW_TYPE_3D = 2, + VK_IMAGE_VIEW_TYPE_CUBE = 3, + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkImageViewType; +typedef enum VkSharingMode { + VK_SHARING_MODE_EXCLUSIVE = 0, + VK_SHARING_MODE_CONCURRENT = 1, + VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSharingMode; +typedef enum VkIndexType { + VK_INDEX_TYPE_UINT16 = 0, + VK_INDEX_TYPE_UINT32 = 1, + VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkIndexType; +typedef enum VkLogicOp { + VK_LOGIC_OP_CLEAR = 0, + VK_LOGIC_OP_AND = 1, + VK_LOGIC_OP_AND_REVERSE = 2, + VK_LOGIC_OP_COPY = 3, + VK_LOGIC_OP_AND_INVERTED = 4, + VK_LOGIC_OP_NO_OP = 5, + VK_LOGIC_OP_XOR = 6, + VK_LOGIC_OP_OR = 7, + VK_LOGIC_OP_NOR = 8, + VK_LOGIC_OP_EQUIVALENT = 9, + VK_LOGIC_OP_INVERT = 10, + VK_LOGIC_OP_OR_REVERSE = 11, + VK_LOGIC_OP_COPY_INVERTED = 12, + VK_LOGIC_OP_OR_INVERTED = 13, + VK_LOGIC_OP_NAND = 14, + VK_LOGIC_OP_SET = 15, + VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF +} VkLogicOp; +typedef enum VkMemoryHeapFlagBits { + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1, + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2, + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryHeapFlagBits; +typedef enum VkAccessFlagBits { + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1, + VK_ACCESS_INDEX_READ_BIT = 2, + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4, + VK_ACCESS_UNIFORM_READ_BIT = 8, + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16, + VK_ACCESS_SHADER_READ_BIT = 32, + VK_ACCESS_SHADER_WRITE_BIT = 64, + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128, + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024, + VK_ACCESS_TRANSFER_READ_BIT = 2048, + VK_ACCESS_TRANSFER_WRITE_BIT = 4096, + VK_ACCESS_HOST_READ_BIT = 8192, + VK_ACCESS_HOST_WRITE_BIT = 16384, + VK_ACCESS_MEMORY_READ_BIT = 32768, + VK_ACCESS_MEMORY_WRITE_BIT = 65536, + VK_ACCESS_NONE = 0, + VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkAccessFlagBits; +typedef enum VkMemoryPropertyFlagBits { + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2, + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4, + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8, + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16, + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32, + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryPropertyFlagBits; +typedef enum VkPhysicalDeviceType { + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, + VK_PHYSICAL_DEVICE_TYPE_CPU = 4, + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkPhysicalDeviceType; +typedef enum VkPipelineBindPoint { + VK_PIPELINE_BIND_POINT_GRAPHICS = 0, + VK_PIPELINE_BIND_POINT_COMPUTE = 1, + VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF +} VkPipelineBindPoint; +typedef enum VkPipelineCreateFlagBits { + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1, + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2, + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4, + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8, + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16, + VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512, + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCreateFlagBits; +typedef enum VkPrimitiveTopology { + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF +} VkPrimitiveTopology; +typedef enum VkQueryControlFlagBits { + VK_QUERY_CONTROL_PRECISE_BIT = 1, + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryControlFlagBits; +typedef enum VkQueryPipelineStatisticFlagBits { + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1, + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2, + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4, + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8, + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16, + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32, + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64, + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128, + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256, + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512, + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024, + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryPipelineStatisticFlagBits; +typedef enum VkQueryResultFlagBits { + VK_QUERY_RESULT_64_BIT = 1, + VK_QUERY_RESULT_WAIT_BIT = 2, + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4, + VK_QUERY_RESULT_PARTIAL_BIT = 8, + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryResultFlagBits; +typedef enum VkQueryType { + VK_QUERY_TYPE_OCCLUSION = 0, + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, + VK_QUERY_TYPE_TIMESTAMP = 2, + VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkQueryType; +typedef enum VkQueueFlagBits { + VK_QUEUE_GRAPHICS_BIT = 1, + VK_QUEUE_COMPUTE_BIT = 2, + VK_QUEUE_TRANSFER_BIT = 4, + VK_QUEUE_SPARSE_BINDING_BIT = 8, + VK_QUEUE_PROTECTED_BIT = 16, + VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueueFlagBits; +typedef enum VkSubpassContents { + VK_SUBPASS_CONTENTS_INLINE = 0, + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, + VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF +} VkSubpassContents; +typedef enum VkResult { + VK_SUCCESS = 0, + VK_NOT_READY = 1, + VK_TIMEOUT = 2, + VK_EVENT_SET = 3, + VK_EVENT_RESET = 4, + VK_INCOMPLETE = 5, + VK_ERROR_OUT_OF_HOST_MEMORY = -1, + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2, + VK_ERROR_INITIALIZATION_FAILED = -3, + VK_ERROR_DEVICE_LOST = -4, + VK_ERROR_MEMORY_MAP_FAILED = -5, + VK_ERROR_LAYER_NOT_PRESENT = -6, + VK_ERROR_EXTENSION_NOT_PRESENT = -7, + VK_ERROR_FEATURE_NOT_PRESENT = -8, + VK_ERROR_INCOMPATIBLE_DRIVER = -9, + VK_ERROR_TOO_MANY_OBJECTS = -10, + VK_ERROR_FORMAT_NOT_SUPPORTED = -11, + VK_ERROR_FRAGMENTED_POOL = -12, + VK_ERROR_UNKNOWN = -13, + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, + VK_ERROR_FRAGMENTATION = -1000161000, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, + VK_PIPELINE_COMPILE_REQUIRED = 1000297000, + VK_ERROR_SURFACE_LOST_KHR = -1000000000, + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, + VK_SUBOPTIMAL_KHR = 1000001003, + VK_ERROR_OUT_OF_DATE_KHR = -1000001004, + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, + VK_RESULT_MAX_ENUM = 0x7FFFFFFF +} VkResult; +typedef enum VkShaderStageFlagBits { + VK_SHADER_STAGE_VERTEX_BIT = 1, + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2, + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4, + VK_SHADER_STAGE_GEOMETRY_BIT = 8, + VK_SHADER_STAGE_FRAGMENT_BIT = 16, + VK_SHADER_STAGE_COMPUTE_BIT = 32, + VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, + VK_SHADER_STAGE_ALL = 0x7FFFFFFF, + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkShaderStageFlagBits; +typedef enum VkSparseMemoryBindFlagBits { + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1, + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSparseMemoryBindFlagBits; +typedef enum VkStencilFaceFlagBits { + VK_STENCIL_FACE_FRONT_BIT = 1, + VK_STENCIL_FACE_BACK_BIT = 2, + VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003, + VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK, + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkStencilFaceFlagBits; +typedef enum VkStencilOp { + VK_STENCIL_OP_KEEP = 0, + VK_STENCIL_OP_ZERO = 1, + VK_STENCIL_OP_REPLACE = 2, + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, + VK_STENCIL_OP_INVERT = 5, + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, + VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF +} VkStencilOp; +typedef enum VkStructureType { + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5, + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005, + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001, + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000, + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002, + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004, + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005, + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002, + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004, + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001, + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005, + VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006, + VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000, + VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003, + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009, + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010, + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011, + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, + VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkStructureType; +typedef enum VkSystemAllocationScope { + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0, + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1, + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2, + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3, + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4, + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF +} VkSystemAllocationScope; +typedef enum VkInternalAllocationType { + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0, + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkInternalAllocationType; +typedef enum VkSamplerAddressMode { + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0, + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1, + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2, + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3, + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4, + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerAddressMode; +typedef enum VkFilter { + VK_FILTER_NEAREST = 0, + VK_FILTER_LINEAR = 1, + VK_FILTER_MAX_ENUM = 0x7FFFFFFF +} VkFilter; +typedef enum VkSamplerMipmapMode { + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerMipmapMode; +typedef enum VkVertexInputRate { + VK_VERTEX_INPUT_RATE_VERTEX = 0, + VK_VERTEX_INPUT_RATE_INSTANCE = 1, + VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF +} VkVertexInputRate; +typedef enum VkPipelineStageFlagBits { + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1, + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2, + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4, + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8, + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16, + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32, + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128, + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256, + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512, + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048, + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096, + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192, + VK_PIPELINE_STAGE_HOST_BIT = 16384, + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768, + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536, + VK_PIPELINE_STAGE_NONE = 0, + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineStageFlagBits; +typedef enum VkSparseImageFormatFlagBits { + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1, + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2, + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4, + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSparseImageFormatFlagBits; +typedef enum VkSampleCountFlagBits { + VK_SAMPLE_COUNT_1_BIT = 1, + VK_SAMPLE_COUNT_2_BIT = 2, + VK_SAMPLE_COUNT_4_BIT = 4, + VK_SAMPLE_COUNT_8_BIT = 8, + VK_SAMPLE_COUNT_16_BIT = 16, + VK_SAMPLE_COUNT_32_BIT = 32, + VK_SAMPLE_COUNT_64_BIT = 64, + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSampleCountFlagBits; +typedef enum VkAttachmentDescriptionFlagBits { + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1, + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentDescriptionFlagBits; +typedef enum VkDescriptorPoolCreateFlagBits { + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2, + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorPoolCreateFlagBits; +typedef enum VkDependencyFlagBits { + VK_DEPENDENCY_BY_REGION_BIT = 1, + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4, + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2, + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDependencyFlagBits; +typedef enum VkObjectType { + VK_OBJECT_TYPE_UNKNOWN = 0, + VK_OBJECT_TYPE_INSTANCE = 1, + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, + VK_OBJECT_TYPE_DEVICE = 3, + VK_OBJECT_TYPE_QUEUE = 4, + VK_OBJECT_TYPE_SEMAPHORE = 5, + VK_OBJECT_TYPE_COMMAND_BUFFER = 6, + VK_OBJECT_TYPE_FENCE = 7, + VK_OBJECT_TYPE_DEVICE_MEMORY = 8, + VK_OBJECT_TYPE_BUFFER = 9, + VK_OBJECT_TYPE_IMAGE = 10, + VK_OBJECT_TYPE_EVENT = 11, + VK_OBJECT_TYPE_QUERY_POOL = 12, + VK_OBJECT_TYPE_BUFFER_VIEW = 13, + VK_OBJECT_TYPE_IMAGE_VIEW = 14, + VK_OBJECT_TYPE_SHADER_MODULE = 15, + VK_OBJECT_TYPE_PIPELINE_CACHE = 16, + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, + VK_OBJECT_TYPE_RENDER_PASS = 18, + VK_OBJECT_TYPE_PIPELINE = 19, + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, + VK_OBJECT_TYPE_SAMPLER = 21, + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, + VK_OBJECT_TYPE_FRAMEBUFFER = 24, + VK_OBJECT_TYPE_COMMAND_POOL = 25, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000, + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, + VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkObjectType; +typedef enum VkEventCreateFlagBits { + VK_EVENT_CREATE_DEVICE_ONLY_BIT = 1, + VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkEventCreateFlagBits; +typedef enum VkDescriptorUpdateTemplateType { + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorUpdateTemplateType; +typedef enum VkPointClippingBehavior { + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0, + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1, + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF +} VkPointClippingBehavior; +typedef enum VkResolveModeFlagBits { + VK_RESOLVE_MODE_NONE = 0, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1, + VK_RESOLVE_MODE_AVERAGE_BIT = 2, + VK_RESOLVE_MODE_MIN_BIT = 4, + VK_RESOLVE_MODE_MAX_BIT = 8, + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkResolveModeFlagBits; +typedef enum VkDescriptorBindingFlagBits { + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8, + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorBindingFlagBits; +typedef enum VkSemaphoreType { + VK_SEMAPHORE_TYPE_BINARY = 0, + VK_SEMAPHORE_TYPE_TIMELINE = 1, + VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreType; +typedef enum VkPipelineCreationFeedbackFlagBits { + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 1, + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 2, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 4, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT, + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCreationFeedbackFlagBits; +typedef enum VkSemaphoreWaitFlagBits { + VK_SEMAPHORE_WAIT_ANY_BIT = 1, + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreWaitFlagBits; +typedef enum VkToolPurposeFlagBits { + VK_TOOL_PURPOSE_VALIDATION_BIT = 1, + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT, + VK_TOOL_PURPOSE_PROFILING_BIT = 2, + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT, + VK_TOOL_PURPOSE_TRACING_BIT = 4, + VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 8, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 16, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT, + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkToolPurposeFlagBits; +typedef uint64_t VkAccessFlagBits2; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 1; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 1; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 2; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 2; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 4; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 4; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 8; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 8; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 16; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 16; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 32; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 32; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 64; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 64; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 128; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 128; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 256; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 256; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 512; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 1024; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 2048; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 2048; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 4096; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 4096; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 8192; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 8192; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 16384; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 16384; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 32768; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 32768; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 65536; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 65536; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 4294967296; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 4294967296; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 8589934592; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 8589934592; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 17179869184; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 17179869184; + +typedef uint64_t VkPipelineStageFlagBits2; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 1; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 1; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 2; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 2; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 4; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 4; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 8; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 8; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 16; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 16; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 32; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 32; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 64; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 64; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 128; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 128; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 256; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 256; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 512; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 512; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 1024; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 1024; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 2048; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 2048; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 4096; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 4096; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 4096; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 4096; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 8192; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 8192; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 16384; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 16384; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 32768; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 32768; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 65536; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 65536; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 4294967296; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 4294967296; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 8589934592; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 8589934592; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = 17179869184; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 17179869184; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = 34359738368; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 34359738368; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 68719476736; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 68719476736; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 137438953472; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 137438953472; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 274877906944; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 274877906944; + +typedef uint64_t VkFormatFeatureFlagBits2; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 1; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 1; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 2; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 2; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 4; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 4; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 8; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 8; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 16; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 16; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 32; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 64; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 64; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 128; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 128; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 256; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 256; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 512; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 512; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 1024; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 1024; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 2048; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 2048; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 4096; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 8192; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 16384; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 16384; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 32768; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 32768; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 65536; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 131072; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 4194304; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 4194304; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 8388608; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 2147483648; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 2147483648; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 4294967296; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 4294967296; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 8589934592; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 8589934592; + +typedef enum VkRenderingFlagBits { + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 1, + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, + VK_RENDERING_SUSPENDING_BIT = 2, + VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT, + VK_RENDERING_RESUMING_BIT = 4, + VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT, + VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderingFlagBits; +typedef enum VkColorSpaceKHR { + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, + VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkColorSpaceKHR; +typedef enum VkCompositeAlphaFlagBitsKHR { + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1, + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2, + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4, + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8, + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkCompositeAlphaFlagBitsKHR; +typedef enum VkPresentModeKHR { + VK_PRESENT_MODE_IMMEDIATE_KHR = 0, + VK_PRESENT_MODE_MAILBOX_KHR = 1, + VK_PRESENT_MODE_FIFO_KHR = 2, + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, + VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPresentModeKHR; +typedef enum VkSurfaceTransformFlagBitsKHR { + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1, + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2, + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4, + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128, + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256, + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkSurfaceTransformFlagBitsKHR; +typedef enum VkDebugReportFlagBitsEXT { + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1, + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2, + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4, + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8, + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16, + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugReportFlagBitsEXT; +typedef enum VkDebugReportObjectTypeEXT { + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33, + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000, + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugReportObjectTypeEXT; +typedef enum VkExternalMemoryHandleTypeFlagBits { + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalMemoryHandleTypeFlagBits; +typedef enum VkExternalMemoryFeatureFlagBits { + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1, + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2, + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4, + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalMemoryFeatureFlagBits; +typedef enum VkExternalSemaphoreHandleTypeFlagBits { + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalSemaphoreHandleTypeFlagBits; +typedef enum VkExternalSemaphoreFeatureFlagBits { + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1, + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2, + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalSemaphoreFeatureFlagBits; +typedef enum VkSemaphoreImportFlagBits { + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1, + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreImportFlagBits; +typedef enum VkExternalFenceHandleTypeFlagBits { + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8, + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalFenceHandleTypeFlagBits; +typedef enum VkExternalFenceFeatureFlagBits { + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1, + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2, + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalFenceFeatureFlagBits; +typedef enum VkFenceImportFlagBits { + VK_FENCE_IMPORT_TEMPORARY_BIT = 1, + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFenceImportFlagBits; +typedef enum VkPeerMemoryFeatureFlagBits { + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1, + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2, + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4, + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8, + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPeerMemoryFeatureFlagBits; +typedef enum VkMemoryAllocateFlagBits { + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4, + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryAllocateFlagBits; +typedef enum VkDeviceGroupPresentModeFlagBitsKHR { + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1, + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2, + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4, + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8, + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDeviceGroupPresentModeFlagBitsKHR; +typedef enum VkSwapchainCreateFlagBitsKHR { + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1, + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2, + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkSwapchainCreateFlagBitsKHR; +typedef enum VkSubgroupFeatureFlagBits { + VK_SUBGROUP_FEATURE_BASIC_BIT = 1, + VK_SUBGROUP_FEATURE_VOTE_BIT = 2, + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4, + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8, + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16, + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32, + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64, + VK_SUBGROUP_FEATURE_QUAD_BIT = 128, + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubgroupFeatureFlagBits; +typedef enum VkTessellationDomainOrigin { + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0, + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF +} VkTessellationDomainOrigin; +typedef enum VkSamplerYcbcrModelConversion { + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF +} VkSamplerYcbcrModelConversion; +typedef enum VkSamplerYcbcrRange { + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0, + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1, + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerYcbcrRange; +typedef enum VkChromaLocation { + VK_CHROMA_LOCATION_COSITED_EVEN = 0, + VK_CHROMA_LOCATION_MIDPOINT = 1, + VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF +} VkChromaLocation; +typedef enum VkSamplerReductionMode { + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0, + VK_SAMPLER_REDUCTION_MODE_MIN = 1, + VK_SAMPLER_REDUCTION_MODE_MAX = 2, + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerReductionMode; +typedef enum VkShaderFloatControlsIndependence { + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF +} VkShaderFloatControlsIndependence; +typedef enum VkSubmitFlagBits { + VK_SUBMIT_PROTECTED_BIT = 1, + VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT, + VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubmitFlagBits; +typedef enum VkVendorId { + VK_VENDOR_ID_VIV = 0x10001, + VK_VENDOR_ID_VSI = 0x10002, + VK_VENDOR_ID_KAZAN = 0x10003, + VK_VENDOR_ID_CODEPLAY = 0x10004, + VK_VENDOR_ID_MESA = 0x10005, + VK_VENDOR_ID_POCL = 0x10006, + VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF +} VkVendorId; +typedef enum VkDriverId { + VK_DRIVER_ID_AMD_PROPRIETARY = 1, + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2, + VK_DRIVER_ID_MESA_RADV = 3, + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4, + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5, + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6, + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7, + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8, + VK_DRIVER_ID_ARM_PROPRIETARY = 9, + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10, + VK_DRIVER_ID_GGP_PROPRIETARY = 11, + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12, + VK_DRIVER_ID_MESA_LLVMPIPE = 13, + VK_DRIVER_ID_MOLTENVK = 14, + VK_DRIVER_ID_COREAVI_PROPRIETARY = 15, + VK_DRIVER_ID_JUICE_PROPRIETARY = 16, + VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17, + VK_DRIVER_ID_MESA_TURNIP = 18, + VK_DRIVER_ID_MESA_V3DV = 19, + VK_DRIVER_ID_MESA_PANVK = 20, + VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21, + VK_DRIVER_ID_MESA_VENUS = 22, + VK_DRIVER_ID_MESA_DOZEN = 23, + VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF +} VkDriverId; +typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( + void* pUserData, + size_t size, + VkInternalAllocationType allocationType, + VkSystemAllocationScope allocationScope); +typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)( + void* pUserData, + size_t size, + VkInternalAllocationType allocationType, + VkSystemAllocationScope allocationScope); +typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( + void* pUserData, + void* pOriginal, + size_t size, + size_t alignment, + VkSystemAllocationScope allocationScope); +typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( + void* pUserData, + size_t size, + size_t alignment, + VkSystemAllocationScope allocationScope); +typedef void (VKAPI_PTR *PFN_vkFreeFunction)( + void* pUserData, + void* pMemory); +typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); +typedef struct VkBaseOutStructure { + VkStructureType sType; + struct VkBaseOutStructure * pNext; +} VkBaseOutStructure; + +typedef struct VkBaseInStructure { + VkStructureType sType; + const struct VkBaseInStructure * pNext; +} VkBaseInStructure; + +typedef struct VkOffset2D { + int32_t x; + int32_t y; +} VkOffset2D; + +typedef struct VkOffset3D { + int32_t x; + int32_t y; + int32_t z; +} VkOffset3D; + +typedef struct VkExtent2D { + uint32_t width; + uint32_t height; +} VkExtent2D; + +typedef struct VkExtent3D { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkExtent3D; + +typedef struct VkViewport { + float x; + float y; + float width; + float height; + float minDepth; + float maxDepth; +} VkViewport; + +typedef struct VkRect2D { + VkOffset2D offset; + VkExtent2D extent; +} VkRect2D; + +typedef struct VkClearRect { + VkRect2D rect; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkClearRect; + +typedef struct VkComponentMapping { + VkComponentSwizzle r; + VkComponentSwizzle g; + VkComponentSwizzle b; + VkComponentSwizzle a; +} VkComponentMapping; + +typedef struct VkExtensionProperties { + char extensionName [ VK_MAX_EXTENSION_NAME_SIZE ]; + uint32_t specVersion; +} VkExtensionProperties; + +typedef struct VkLayerProperties { + char layerName [ VK_MAX_EXTENSION_NAME_SIZE ]; + uint32_t specVersion; + uint32_t implementationVersion; + char description [ VK_MAX_DESCRIPTION_SIZE ]; +} VkLayerProperties; + +typedef struct VkApplicationInfo { + VkStructureType sType; + const void * pNext; + const char * pApplicationName; + uint32_t applicationVersion; + const char * pEngineName; + uint32_t engineVersion; + uint32_t apiVersion; +} VkApplicationInfo; + +typedef struct VkAllocationCallbacks { + void * pUserData; + PFN_vkAllocationFunction pfnAllocation; + PFN_vkReallocationFunction pfnReallocation; + PFN_vkFreeFunction pfnFree; + PFN_vkInternalAllocationNotification pfnInternalAllocation; + PFN_vkInternalFreeNotification pfnInternalFree; +} VkAllocationCallbacks; + +typedef struct VkDescriptorImageInfo { + VkSampler sampler; + VkImageView imageView; + VkImageLayout imageLayout; +} VkDescriptorImageInfo; + +typedef struct VkCopyDescriptorSet { + VkStructureType sType; + const void * pNext; + VkDescriptorSet srcSet; + uint32_t srcBinding; + uint32_t srcArrayElement; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; +} VkCopyDescriptorSet; + +typedef struct VkDescriptorPoolSize { + VkDescriptorType type; + uint32_t descriptorCount; +} VkDescriptorPoolSize; + +typedef struct VkDescriptorSetAllocateInfo { + VkStructureType sType; + const void * pNext; + VkDescriptorPool descriptorPool; + uint32_t descriptorSetCount; + const VkDescriptorSetLayout * pSetLayouts; +} VkDescriptorSetAllocateInfo; + +typedef struct VkSpecializationMapEntry { + uint32_t constantID; + uint32_t offset; + size_t size; +} VkSpecializationMapEntry; + +typedef struct VkSpecializationInfo { + uint32_t mapEntryCount; + const VkSpecializationMapEntry * pMapEntries; + size_t dataSize; + const void * pData; +} VkSpecializationInfo; + +typedef struct VkVertexInputBindingDescription { + uint32_t binding; + uint32_t stride; + VkVertexInputRate inputRate; +} VkVertexInputBindingDescription; + +typedef struct VkVertexInputAttributeDescription { + uint32_t location; + uint32_t binding; + VkFormat format; + uint32_t offset; +} VkVertexInputAttributeDescription; + +typedef struct VkStencilOpState { + VkStencilOp failOp; + VkStencilOp passOp; + VkStencilOp depthFailOp; + VkCompareOp compareOp; + uint32_t compareMask; + uint32_t writeMask; + uint32_t reference; +} VkStencilOpState; + +typedef struct VkPipelineCacheHeaderVersionOne { + uint32_t headerSize; + VkPipelineCacheHeaderVersion headerVersion; + uint32_t vendorID; + uint32_t deviceID; + uint8_t pipelineCacheUUID [ VK_UUID_SIZE ]; +} VkPipelineCacheHeaderVersionOne; + +typedef struct VkCommandBufferAllocateInfo { + VkStructureType sType; + const void * pNext; + VkCommandPool commandPool; + VkCommandBufferLevel level; + uint32_t commandBufferCount; +} VkCommandBufferAllocateInfo; + +typedef union VkClearColorValue { + float float32 [4]; + int32_t int32 [4]; + uint32_t uint32 [4]; +} VkClearColorValue; + +typedef struct VkClearDepthStencilValue { + float depth; + uint32_t stencil; +} VkClearDepthStencilValue; + +typedef union VkClearValue { + VkClearColorValue color; + VkClearDepthStencilValue depthStencil; +} VkClearValue; + +typedef struct VkAttachmentReference { + uint32_t attachment; + VkImageLayout layout; +} VkAttachmentReference; + +typedef struct VkDrawIndirectCommand { + uint32_t vertexCount; + uint32_t instanceCount; + uint32_t firstVertex; + uint32_t firstInstance; +} VkDrawIndirectCommand; + +typedef struct VkDrawIndexedIndirectCommand { + uint32_t indexCount; + uint32_t instanceCount; + uint32_t firstIndex; + int32_t vertexOffset; + uint32_t firstInstance; +} VkDrawIndexedIndirectCommand; + +typedef struct VkDispatchIndirectCommand { + uint32_t x; + uint32_t y; + uint32_t z; +} VkDispatchIndirectCommand; + +typedef struct VkSurfaceFormatKHR { + VkFormat format; + VkColorSpaceKHR colorSpace; +} VkSurfaceFormatKHR; + +typedef struct VkPresentInfoKHR { + VkStructureType sType; + const void * pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore * pWaitSemaphores; + uint32_t swapchainCount; + const VkSwapchainKHR * pSwapchains; + const uint32_t * pImageIndices; + VkResult * pResults; +} VkPresentInfoKHR; + +typedef struct VkDevicePrivateDataCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t privateDataSlotRequestCount; +} VkDevicePrivateDataCreateInfo; + +typedef struct VkConformanceVersion { + uint8_t major; + uint8_t minor; + uint8_t subminor; + uint8_t patch; +} VkConformanceVersion; + +typedef struct VkPhysicalDeviceDriverProperties { + VkStructureType sType; + void * pNext; + VkDriverId driverID; + char driverName [ VK_MAX_DRIVER_NAME_SIZE ]; + char driverInfo [ VK_MAX_DRIVER_INFO_SIZE ]; + VkConformanceVersion conformanceVersion; +} VkPhysicalDeviceDriverProperties; + +typedef struct VkPhysicalDeviceExternalImageFormatInfo { + VkStructureType sType; + const void * pNext; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalImageFormatInfo; + +typedef struct VkPhysicalDeviceExternalSemaphoreInfo { + VkStructureType sType; + const void * pNext; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalSemaphoreInfo; + +typedef struct VkPhysicalDeviceExternalFenceInfo { + VkStructureType sType; + const void * pNext; + VkExternalFenceHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalFenceInfo; + +typedef struct VkPhysicalDeviceMultiviewProperties { + VkStructureType sType; + void * pNext; + uint32_t maxMultiviewViewCount; + uint32_t maxMultiviewInstanceIndex; +} VkPhysicalDeviceMultiviewProperties; + +typedef struct VkRenderPassMultiviewCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t subpassCount; + const uint32_t * pViewMasks; + uint32_t dependencyCount; + const int32_t * pViewOffsets; + uint32_t correlationMaskCount; + const uint32_t * pCorrelationMasks; +} VkRenderPassMultiviewCreateInfo; + +typedef struct VkBindBufferMemoryDeviceGroupInfo { + VkStructureType sType; + const void * pNext; + uint32_t deviceIndexCount; + const uint32_t * pDeviceIndices; +} VkBindBufferMemoryDeviceGroupInfo; + +typedef struct VkBindImageMemoryDeviceGroupInfo { + VkStructureType sType; + const void * pNext; + uint32_t deviceIndexCount; + const uint32_t * pDeviceIndices; + uint32_t splitInstanceBindRegionCount; + const VkRect2D * pSplitInstanceBindRegions; +} VkBindImageMemoryDeviceGroupInfo; + +typedef struct VkDeviceGroupRenderPassBeginInfo { + VkStructureType sType; + const void * pNext; + uint32_t deviceMask; + uint32_t deviceRenderAreaCount; + const VkRect2D * pDeviceRenderAreas; +} VkDeviceGroupRenderPassBeginInfo; + +typedef struct VkDeviceGroupCommandBufferBeginInfo { + VkStructureType sType; + const void * pNext; + uint32_t deviceMask; +} VkDeviceGroupCommandBufferBeginInfo; + +typedef struct VkDeviceGroupSubmitInfo { + VkStructureType sType; + const void * pNext; + uint32_t waitSemaphoreCount; + const uint32_t * pWaitSemaphoreDeviceIndices; + uint32_t commandBufferCount; + const uint32_t * pCommandBufferDeviceMasks; + uint32_t signalSemaphoreCount; + const uint32_t * pSignalSemaphoreDeviceIndices; +} VkDeviceGroupSubmitInfo; + +typedef struct VkDeviceGroupBindSparseInfo { + VkStructureType sType; + const void * pNext; + uint32_t resourceDeviceIndex; + uint32_t memoryDeviceIndex; +} VkDeviceGroupBindSparseInfo; + +typedef struct VkImageSwapchainCreateInfoKHR { + VkStructureType sType; + const void * pNext; + VkSwapchainKHR swapchain; +} VkImageSwapchainCreateInfoKHR; + +typedef struct VkBindImageMemorySwapchainInfoKHR { + VkStructureType sType; + const void * pNext; + VkSwapchainKHR swapchain; + uint32_t imageIndex; +} VkBindImageMemorySwapchainInfoKHR; + +typedef struct VkAcquireNextImageInfoKHR { + VkStructureType sType; + const void * pNext; + VkSwapchainKHR swapchain; + uint64_t timeout; + VkSemaphore semaphore; + VkFence fence; + uint32_t deviceMask; +} VkAcquireNextImageInfoKHR; + +typedef struct VkDeviceGroupPresentInfoKHR { + VkStructureType sType; + const void * pNext; + uint32_t swapchainCount; + const uint32_t * pDeviceMasks; + VkDeviceGroupPresentModeFlagBitsKHR mode; +} VkDeviceGroupPresentInfoKHR; + +typedef struct VkDeviceGroupDeviceCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t physicalDeviceCount; + const VkPhysicalDevice * pPhysicalDevices; +} VkDeviceGroupDeviceCreateInfo; + +typedef struct VkDescriptorUpdateTemplateEntry { + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; + VkDescriptorType descriptorType; + size_t offset; + size_t stride; +} VkDescriptorUpdateTemplateEntry; + +typedef struct VkBufferMemoryRequirementsInfo2 { + VkStructureType sType; + const void * pNext; + VkBuffer buffer; +} VkBufferMemoryRequirementsInfo2; + +typedef struct VkImageMemoryRequirementsInfo2 { + VkStructureType sType; + const void * pNext; + VkImage image; +} VkImageMemoryRequirementsInfo2; + +typedef struct VkImageSparseMemoryRequirementsInfo2 { + VkStructureType sType; + const void * pNext; + VkImage image; +} VkImageSparseMemoryRequirementsInfo2; + +typedef struct VkPhysicalDevicePointClippingProperties { + VkStructureType sType; + void * pNext; + VkPointClippingBehavior pointClippingBehavior; +} VkPhysicalDevicePointClippingProperties; + +typedef struct VkMemoryDedicatedAllocateInfo { + VkStructureType sType; + const void * pNext; + VkImage image; + VkBuffer buffer; +} VkMemoryDedicatedAllocateInfo; + +typedef struct VkPipelineTessellationDomainOriginStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkTessellationDomainOrigin domainOrigin; +} VkPipelineTessellationDomainOriginStateCreateInfo; + +typedef struct VkSamplerYcbcrConversionInfo { + VkStructureType sType; + const void * pNext; + VkSamplerYcbcrConversion conversion; +} VkSamplerYcbcrConversionInfo; + +typedef struct VkBindImagePlaneMemoryInfo { + VkStructureType sType; + const void * pNext; + VkImageAspectFlagBits planeAspect; +} VkBindImagePlaneMemoryInfo; + +typedef struct VkImagePlaneMemoryRequirementsInfo { + VkStructureType sType; + const void * pNext; + VkImageAspectFlagBits planeAspect; +} VkImagePlaneMemoryRequirementsInfo; + +typedef struct VkSamplerYcbcrConversionImageFormatProperties { + VkStructureType sType; + void * pNext; + uint32_t combinedImageSamplerDescriptorCount; +} VkSamplerYcbcrConversionImageFormatProperties; + +typedef struct VkSamplerReductionModeCreateInfo { + VkStructureType sType; + const void * pNext; + VkSamplerReductionMode reductionMode; +} VkSamplerReductionModeCreateInfo; + +typedef struct VkPhysicalDeviceInlineUniformBlockProperties { + VkStructureType sType; + void * pNext; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; +} VkPhysicalDeviceInlineUniformBlockProperties; + +typedef struct VkWriteDescriptorSetInlineUniformBlock { + VkStructureType sType; + const void * pNext; + uint32_t dataSize; + const void * pData; +} VkWriteDescriptorSetInlineUniformBlock; + +typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t maxInlineUniformBlockBindings; +} VkDescriptorPoolInlineUniformBlockCreateInfo; + +typedef struct VkImageFormatListCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t viewFormatCount; + const VkFormat * pViewFormats; +} VkImageFormatListCreateInfo; + +typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo { + VkStructureType sType; + const void * pNext; + uint32_t descriptorSetCount; + const uint32_t * pDescriptorCounts; +} VkDescriptorSetVariableDescriptorCountAllocateInfo; + +typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport { + VkStructureType sType; + void * pNext; + uint32_t maxVariableDescriptorCount; +} VkDescriptorSetVariableDescriptorCountLayoutSupport; + +typedef struct VkSubpassBeginInfo { + VkStructureType sType; + const void * pNext; + VkSubpassContents contents; +} VkSubpassBeginInfo; + +typedef struct VkSubpassEndInfo { + VkStructureType sType; + const void * pNext; +} VkSubpassEndInfo; + +typedef struct VkPhysicalDeviceTimelineSemaphoreProperties { + VkStructureType sType; + void * pNext; + uint64_t maxTimelineSemaphoreValueDifference; +} VkPhysicalDeviceTimelineSemaphoreProperties; + +typedef struct VkSemaphoreTypeCreateInfo { + VkStructureType sType; + const void * pNext; + VkSemaphoreType semaphoreType; + uint64_t initialValue; +} VkSemaphoreTypeCreateInfo; + +typedef struct VkTimelineSemaphoreSubmitInfo { + VkStructureType sType; + const void * pNext; + uint32_t waitSemaphoreValueCount; + const uint64_t * pWaitSemaphoreValues; + uint32_t signalSemaphoreValueCount; + const uint64_t * pSignalSemaphoreValues; +} VkTimelineSemaphoreSubmitInfo; + +typedef struct VkSemaphoreSignalInfo { + VkStructureType sType; + const void * pNext; + VkSemaphore semaphore; + uint64_t value; +} VkSemaphoreSignalInfo; + +typedef struct VkBufferDeviceAddressInfo { + VkStructureType sType; + const void * pNext; + VkBuffer buffer; +} VkBufferDeviceAddressInfo; + +typedef struct VkBufferOpaqueCaptureAddressCreateInfo { + VkStructureType sType; + const void * pNext; + uint64_t opaqueCaptureAddress; +} VkBufferOpaqueCaptureAddressCreateInfo; + +typedef struct VkRenderPassAttachmentBeginInfo { + VkStructureType sType; + const void * pNext; + uint32_t attachmentCount; + const VkImageView * pAttachments; +} VkRenderPassAttachmentBeginInfo; + +typedef struct VkAttachmentReferenceStencilLayout { + VkStructureType sType; + void * pNext; + VkImageLayout stencilLayout; +} VkAttachmentReferenceStencilLayout; + +typedef struct VkAttachmentDescriptionStencilLayout { + VkStructureType sType; + void * pNext; + VkImageLayout stencilInitialLayout; + VkImageLayout stencilFinalLayout; +} VkAttachmentDescriptionStencilLayout; + +typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo { + VkStructureType sType; + void * pNext; + uint32_t requiredSubgroupSize; +} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; + +typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo { + VkStructureType sType; + const void * pNext; + uint64_t opaqueCaptureAddress; +} VkMemoryOpaqueCaptureAddressAllocateInfo; + +typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo { + VkStructureType sType; + const void * pNext; + VkDeviceMemory memory; +} VkDeviceMemoryOpaqueCaptureAddressInfo; + +typedef struct VkCommandBufferSubmitInfo { + VkStructureType sType; + const void * pNext; + VkCommandBuffer commandBuffer; + uint32_t deviceMask; +} VkCommandBufferSubmitInfo; + +typedef struct VkPipelineRenderingCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat * pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; +} VkPipelineRenderingCreateInfo; + +typedef struct VkRenderingAttachmentInfo { + VkStructureType sType; + const void * pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkResolveModeFlagBits resolveMode; + VkImageView resolveImageView; + VkImageLayout resolveImageLayout; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkClearValue clearValue; +} VkRenderingAttachmentInfo; + +typedef uint32_t VkSampleMask; +typedef uint32_t VkBool32; +typedef uint32_t VkFlags; +typedef uint64_t VkFlags64; +typedef uint64_t VkDeviceSize; +typedef uint64_t VkDeviceAddress; +typedef VkFlags VkFramebufferCreateFlags; +typedef VkFlags VkQueryPoolCreateFlags; +typedef VkFlags VkRenderPassCreateFlags; +typedef VkFlags VkSamplerCreateFlags; +typedef VkFlags VkPipelineLayoutCreateFlags; +typedef VkFlags VkPipelineCacheCreateFlags; +typedef VkFlags VkPipelineDepthStencilStateCreateFlags; +typedef VkFlags VkPipelineDynamicStateCreateFlags; +typedef VkFlags VkPipelineColorBlendStateCreateFlags; +typedef VkFlags VkPipelineMultisampleStateCreateFlags; +typedef VkFlags VkPipelineRasterizationStateCreateFlags; +typedef VkFlags VkPipelineViewportStateCreateFlags; +typedef VkFlags VkPipelineTessellationStateCreateFlags; +typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; +typedef VkFlags VkPipelineVertexInputStateCreateFlags; +typedef VkFlags VkPipelineShaderStageCreateFlags; +typedef VkFlags VkDescriptorSetLayoutCreateFlags; +typedef VkFlags VkBufferViewCreateFlags; +typedef VkFlags VkInstanceCreateFlags; +typedef VkFlags VkDeviceCreateFlags; +typedef VkFlags VkDeviceQueueCreateFlags; +typedef VkFlags VkQueueFlags; +typedef VkFlags VkMemoryPropertyFlags; +typedef VkFlags VkMemoryHeapFlags; +typedef VkFlags VkAccessFlags; +typedef VkFlags VkBufferUsageFlags; +typedef VkFlags VkBufferCreateFlags; +typedef VkFlags VkShaderStageFlags; +typedef VkFlags VkImageUsageFlags; +typedef VkFlags VkImageCreateFlags; +typedef VkFlags VkImageViewCreateFlags; +typedef VkFlags VkPipelineCreateFlags; +typedef VkFlags VkColorComponentFlags; +typedef VkFlags VkFenceCreateFlags; +typedef VkFlags VkSemaphoreCreateFlags; +typedef VkFlags VkFormatFeatureFlags; +typedef VkFlags VkQueryControlFlags; +typedef VkFlags VkQueryResultFlags; +typedef VkFlags VkShaderModuleCreateFlags; +typedef VkFlags VkEventCreateFlags; +typedef VkFlags VkCommandPoolCreateFlags; +typedef VkFlags VkCommandPoolResetFlags; +typedef VkFlags VkCommandBufferResetFlags; +typedef VkFlags VkCommandBufferUsageFlags; +typedef VkFlags VkQueryPipelineStatisticFlags; +typedef VkFlags VkMemoryMapFlags; +typedef VkFlags VkImageAspectFlags; +typedef VkFlags VkSparseMemoryBindFlags; +typedef VkFlags VkSparseImageFormatFlags; +typedef VkFlags VkSubpassDescriptionFlags; +typedef VkFlags VkPipelineStageFlags; +typedef VkFlags VkSampleCountFlags; +typedef VkFlags VkAttachmentDescriptionFlags; +typedef VkFlags VkStencilFaceFlags; +typedef VkFlags VkCullModeFlags; +typedef VkFlags VkDescriptorPoolCreateFlags; +typedef VkFlags VkDescriptorPoolResetFlags; +typedef VkFlags VkDependencyFlags; +typedef VkFlags VkSubgroupFeatureFlags; +typedef VkFlags VkPrivateDataSlotCreateFlags; +typedef VkFlags VkDescriptorUpdateTemplateCreateFlags; +typedef VkFlags VkPipelineCreationFeedbackFlags; +typedef VkFlags VkSemaphoreWaitFlags; +typedef VkFlags64 VkAccessFlags2; +typedef VkFlags64 VkPipelineStageFlags2; +typedef VkFlags64 VkFormatFeatureFlags2; +typedef VkFlags VkRenderingFlags; +typedef VkFlags VkCompositeAlphaFlagsKHR; +typedef VkFlags VkSurfaceTransformFlagsKHR; +typedef VkFlags VkSwapchainCreateFlagsKHR; +typedef VkFlags VkPeerMemoryFeatureFlags; +typedef VkFlags VkMemoryAllocateFlags; +typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; +typedef VkFlags VkDebugReportFlagsEXT; +typedef VkFlags VkCommandPoolTrimFlags; +typedef VkFlags VkExternalMemoryHandleTypeFlags; +typedef VkFlags VkExternalMemoryFeatureFlags; +typedef VkFlags VkExternalSemaphoreHandleTypeFlags; +typedef VkFlags VkExternalSemaphoreFeatureFlags; +typedef VkFlags VkSemaphoreImportFlags; +typedef VkFlags VkExternalFenceHandleTypeFlags; +typedef VkFlags VkExternalFenceFeatureFlags; +typedef VkFlags VkFenceImportFlags; +typedef VkFlags VkDescriptorBindingFlags; +typedef VkFlags VkResolveModeFlags; +typedef VkFlags VkToolPurposeFlags; +typedef VkFlags VkSubmitFlags; +typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( + VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char* pLayerPrefix, + const char* pMessage, + void* pUserData); +typedef struct VkDeviceQueueCreateInfo { + VkStructureType sType; + const void * pNext; + VkDeviceQueueCreateFlags flags; + uint32_t queueFamilyIndex; + uint32_t queueCount; + const float * pQueuePriorities; +} VkDeviceQueueCreateInfo; + +typedef struct VkInstanceCreateInfo { + VkStructureType sType; + const void * pNext; + VkInstanceCreateFlags flags; + const VkApplicationInfo * pApplicationInfo; + uint32_t enabledLayerCount; + const char * const* ppEnabledLayerNames; + uint32_t enabledExtensionCount; + const char * const* ppEnabledExtensionNames; +} VkInstanceCreateInfo; + +typedef struct VkQueueFamilyProperties { + VkQueueFlags queueFlags; + uint32_t queueCount; + uint32_t timestampValidBits; + VkExtent3D minImageTransferGranularity; +} VkQueueFamilyProperties; + +typedef struct VkMemoryAllocateInfo { + VkStructureType sType; + const void * pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeIndex; +} VkMemoryAllocateInfo; + +typedef struct VkMemoryRequirements { + VkDeviceSize size; + VkDeviceSize alignment; + uint32_t memoryTypeBits; +} VkMemoryRequirements; + +typedef struct VkSparseImageFormatProperties { + VkImageAspectFlags aspectMask; + VkExtent3D imageGranularity; + VkSparseImageFormatFlags flags; +} VkSparseImageFormatProperties; + +typedef struct VkSparseImageMemoryRequirements { + VkSparseImageFormatProperties formatProperties; + uint32_t imageMipTailFirstLod; + VkDeviceSize imageMipTailSize; + VkDeviceSize imageMipTailOffset; + VkDeviceSize imageMipTailStride; +} VkSparseImageMemoryRequirements; + +typedef struct VkMemoryType { + VkMemoryPropertyFlags propertyFlags; + uint32_t heapIndex; +} VkMemoryType; + +typedef struct VkMemoryHeap { + VkDeviceSize size; + VkMemoryHeapFlags flags; +} VkMemoryHeap; + +typedef struct VkMappedMemoryRange { + VkStructureType sType; + const void * pNext; + VkDeviceMemory memory; + VkDeviceSize offset; + VkDeviceSize size; +} VkMappedMemoryRange; + +typedef struct VkFormatProperties { + VkFormatFeatureFlags linearTilingFeatures; + VkFormatFeatureFlags optimalTilingFeatures; + VkFormatFeatureFlags bufferFeatures; +} VkFormatProperties; + +typedef struct VkImageFormatProperties { + VkExtent3D maxExtent; + uint32_t maxMipLevels; + uint32_t maxArrayLayers; + VkSampleCountFlags sampleCounts; + VkDeviceSize maxResourceSize; +} VkImageFormatProperties; + +typedef struct VkDescriptorBufferInfo { + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize range; +} VkDescriptorBufferInfo; + +typedef struct VkWriteDescriptorSet { + VkStructureType sType; + const void * pNext; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; + VkDescriptorType descriptorType; + const VkDescriptorImageInfo * pImageInfo; + const VkDescriptorBufferInfo * pBufferInfo; + const VkBufferView * pTexelBufferView; +} VkWriteDescriptorSet; + +typedef struct VkBufferCreateInfo { + VkStructureType sType; + const void * pNext; + VkBufferCreateFlags flags; + VkDeviceSize size; + VkBufferUsageFlags usage; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t * pQueueFamilyIndices; +} VkBufferCreateInfo; + +typedef struct VkBufferViewCreateInfo { + VkStructureType sType; + const void * pNext; + VkBufferViewCreateFlags flags; + VkBuffer buffer; + VkFormat format; + VkDeviceSize offset; + VkDeviceSize range; +} VkBufferViewCreateInfo; + +typedef struct VkImageSubresource { + VkImageAspectFlags aspectMask; + uint32_t mipLevel; + uint32_t arrayLayer; +} VkImageSubresource; + +typedef struct VkImageSubresourceLayers { + VkImageAspectFlags aspectMask; + uint32_t mipLevel; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkImageSubresourceLayers; + +typedef struct VkImageSubresourceRange { + VkImageAspectFlags aspectMask; + uint32_t baseMipLevel; + uint32_t levelCount; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkImageSubresourceRange; + +typedef struct VkMemoryBarrier { + VkStructureType sType; + const void * pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; +} VkMemoryBarrier; + +typedef struct VkBufferMemoryBarrier { + VkStructureType sType; + const void * pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier; + +typedef struct VkImageMemoryBarrier { + VkStructureType sType; + const void * pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier; + +typedef struct VkImageCreateInfo { + VkStructureType sType; + const void * pNext; + VkImageCreateFlags flags; + VkImageType imageType; + VkFormat format; + VkExtent3D extent; + uint32_t mipLevels; + uint32_t arrayLayers; + VkSampleCountFlagBits samples; + VkImageTiling tiling; + VkImageUsageFlags usage; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t * pQueueFamilyIndices; + VkImageLayout initialLayout; +} VkImageCreateInfo; + +typedef struct VkSubresourceLayout { + VkDeviceSize offset; + VkDeviceSize size; + VkDeviceSize rowPitch; + VkDeviceSize arrayPitch; + VkDeviceSize depthPitch; +} VkSubresourceLayout; + +typedef struct VkImageViewCreateInfo { + VkStructureType sType; + const void * pNext; + VkImageViewCreateFlags flags; + VkImage image; + VkImageViewType viewType; + VkFormat format; + VkComponentMapping components; + VkImageSubresourceRange subresourceRange; +} VkImageViewCreateInfo; + +typedef struct VkBufferCopy { + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy; + +typedef struct VkSparseMemoryBind { + VkDeviceSize resourceOffset; + VkDeviceSize size; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkSparseMemoryBindFlags flags; +} VkSparseMemoryBind; + +typedef struct VkSparseImageMemoryBind { + VkImageSubresource subresource; + VkOffset3D offset; + VkExtent3D extent; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkSparseMemoryBindFlags flags; +} VkSparseImageMemoryBind; + +typedef struct VkSparseBufferMemoryBindInfo { + VkBuffer buffer; + uint32_t bindCount; + const VkSparseMemoryBind * pBinds; +} VkSparseBufferMemoryBindInfo; + +typedef struct VkSparseImageOpaqueMemoryBindInfo { + VkImage image; + uint32_t bindCount; + const VkSparseMemoryBind * pBinds; +} VkSparseImageOpaqueMemoryBindInfo; + +typedef struct VkSparseImageMemoryBindInfo { + VkImage image; + uint32_t bindCount; + const VkSparseImageMemoryBind * pBinds; +} VkSparseImageMemoryBindInfo; + +typedef struct VkBindSparseInfo { + VkStructureType sType; + const void * pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore * pWaitSemaphores; + uint32_t bufferBindCount; + const VkSparseBufferMemoryBindInfo * pBufferBinds; + uint32_t imageOpaqueBindCount; + const VkSparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds; + uint32_t imageBindCount; + const VkSparseImageMemoryBindInfo * pImageBinds; + uint32_t signalSemaphoreCount; + const VkSemaphore * pSignalSemaphores; +} VkBindSparseInfo; + +typedef struct VkImageCopy { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy; + +typedef struct VkImageBlit { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets [2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets [2]; +} VkImageBlit; + +typedef struct VkBufferImageCopy { + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy; + +typedef struct VkImageResolve { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve; + +typedef struct VkShaderModuleCreateInfo { + VkStructureType sType; + const void * pNext; + VkShaderModuleCreateFlags flags; + size_t codeSize; + const uint32_t * pCode; +} VkShaderModuleCreateInfo; + +typedef struct VkDescriptorSetLayoutBinding { + uint32_t binding; + VkDescriptorType descriptorType; + uint32_t descriptorCount; + VkShaderStageFlags stageFlags; + const VkSampler * pImmutableSamplers; +} VkDescriptorSetLayoutBinding; + +typedef struct VkDescriptorSetLayoutCreateInfo { + VkStructureType sType; + const void * pNext; + VkDescriptorSetLayoutCreateFlags flags; + uint32_t bindingCount; + const VkDescriptorSetLayoutBinding * pBindings; +} VkDescriptorSetLayoutCreateInfo; + +typedef struct VkDescriptorPoolCreateInfo { + VkStructureType sType; + const void * pNext; + VkDescriptorPoolCreateFlags flags; + uint32_t maxSets; + uint32_t poolSizeCount; + const VkDescriptorPoolSize * pPoolSizes; +} VkDescriptorPoolCreateInfo; + +typedef struct VkPipelineShaderStageCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineShaderStageCreateFlags flags; + VkShaderStageFlagBits stage; + VkShaderModule module; + const char * pName; + const VkSpecializationInfo * pSpecializationInfo; +} VkPipelineShaderStageCreateInfo; + +typedef struct VkComputePipelineCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineCreateFlags flags; + VkPipelineShaderStageCreateInfo stage; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkComputePipelineCreateInfo; + +typedef struct VkPipelineVertexInputStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineVertexInputStateCreateFlags flags; + uint32_t vertexBindingDescriptionCount; + const VkVertexInputBindingDescription * pVertexBindingDescriptions; + uint32_t vertexAttributeDescriptionCount; + const VkVertexInputAttributeDescription * pVertexAttributeDescriptions; +} VkPipelineVertexInputStateCreateInfo; + +typedef struct VkPipelineInputAssemblyStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineInputAssemblyStateCreateFlags flags; + VkPrimitiveTopology topology; + VkBool32 primitiveRestartEnable; +} VkPipelineInputAssemblyStateCreateInfo; + +typedef struct VkPipelineTessellationStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineTessellationStateCreateFlags flags; + uint32_t patchControlPoints; +} VkPipelineTessellationStateCreateInfo; + +typedef struct VkPipelineViewportStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineViewportStateCreateFlags flags; + uint32_t viewportCount; + const VkViewport * pViewports; + uint32_t scissorCount; + const VkRect2D * pScissors; +} VkPipelineViewportStateCreateInfo; + +typedef struct VkPipelineRasterizationStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineRasterizationStateCreateFlags flags; + VkBool32 depthClampEnable; + VkBool32 rasterizerDiscardEnable; + VkPolygonMode polygonMode; + VkCullModeFlags cullMode; + VkFrontFace frontFace; + VkBool32 depthBiasEnable; + float depthBiasConstantFactor; + float depthBiasClamp; + float depthBiasSlopeFactor; + float lineWidth; +} VkPipelineRasterizationStateCreateInfo; + +typedef struct VkPipelineMultisampleStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineMultisampleStateCreateFlags flags; + VkSampleCountFlagBits rasterizationSamples; + VkBool32 sampleShadingEnable; + float minSampleShading; + const VkSampleMask * pSampleMask; + VkBool32 alphaToCoverageEnable; + VkBool32 alphaToOneEnable; +} VkPipelineMultisampleStateCreateInfo; + +typedef struct VkPipelineColorBlendAttachmentState { + VkBool32 blendEnable; + VkBlendFactor srcColorBlendFactor; + VkBlendFactor dstColorBlendFactor; + VkBlendOp colorBlendOp; + VkBlendFactor srcAlphaBlendFactor; + VkBlendFactor dstAlphaBlendFactor; + VkBlendOp alphaBlendOp; + VkColorComponentFlags colorWriteMask; +} VkPipelineColorBlendAttachmentState; + +typedef struct VkPipelineColorBlendStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineColorBlendStateCreateFlags flags; + VkBool32 logicOpEnable; + VkLogicOp logicOp; + uint32_t attachmentCount; + const VkPipelineColorBlendAttachmentState * pAttachments; + float blendConstants [4]; +} VkPipelineColorBlendStateCreateInfo; + +typedef struct VkPipelineDynamicStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineDynamicStateCreateFlags flags; + uint32_t dynamicStateCount; + const VkDynamicState * pDynamicStates; +} VkPipelineDynamicStateCreateInfo; + +typedef struct VkPipelineDepthStencilStateCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineDepthStencilStateCreateFlags flags; + VkBool32 depthTestEnable; + VkBool32 depthWriteEnable; + VkCompareOp depthCompareOp; + VkBool32 depthBoundsTestEnable; + VkBool32 stencilTestEnable; + VkStencilOpState front; + VkStencilOpState back; + float minDepthBounds; + float maxDepthBounds; +} VkPipelineDepthStencilStateCreateInfo; + +typedef struct VkGraphicsPipelineCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo * pStages; + const VkPipelineVertexInputStateCreateInfo * pVertexInputState; + const VkPipelineInputAssemblyStateCreateInfo * pInputAssemblyState; + const VkPipelineTessellationStateCreateInfo * pTessellationState; + const VkPipelineViewportStateCreateInfo * pViewportState; + const VkPipelineRasterizationStateCreateInfo * pRasterizationState; + const VkPipelineMultisampleStateCreateInfo * pMultisampleState; + const VkPipelineDepthStencilStateCreateInfo * pDepthStencilState; + const VkPipelineColorBlendStateCreateInfo * pColorBlendState; + const VkPipelineDynamicStateCreateInfo * pDynamicState; + VkPipelineLayout layout; + VkRenderPass renderPass; + uint32_t subpass; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkGraphicsPipelineCreateInfo; + +typedef struct VkPipelineCacheCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineCacheCreateFlags flags; + size_t initialDataSize; + const void * pInitialData; +} VkPipelineCacheCreateInfo; + +typedef struct VkPushConstantRange { + VkShaderStageFlags stageFlags; + uint32_t offset; + uint32_t size; +} VkPushConstantRange; + +typedef struct VkPipelineLayoutCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineLayoutCreateFlags flags; + uint32_t setLayoutCount; + const VkDescriptorSetLayout * pSetLayouts; + uint32_t pushConstantRangeCount; + const VkPushConstantRange * pPushConstantRanges; +} VkPipelineLayoutCreateInfo; + +typedef struct VkSamplerCreateInfo { + VkStructureType sType; + const void * pNext; + VkSamplerCreateFlags flags; + VkFilter magFilter; + VkFilter minFilter; + VkSamplerMipmapMode mipmapMode; + VkSamplerAddressMode addressModeU; + VkSamplerAddressMode addressModeV; + VkSamplerAddressMode addressModeW; + float mipLodBias; + VkBool32 anisotropyEnable; + float maxAnisotropy; + VkBool32 compareEnable; + VkCompareOp compareOp; + float minLod; + float maxLod; + VkBorderColor borderColor; + VkBool32 unnormalizedCoordinates; +} VkSamplerCreateInfo; + +typedef struct VkCommandPoolCreateInfo { + VkStructureType sType; + const void * pNext; + VkCommandPoolCreateFlags flags; + uint32_t queueFamilyIndex; +} VkCommandPoolCreateInfo; + +typedef struct VkCommandBufferInheritanceInfo { + VkStructureType sType; + const void * pNext; + VkRenderPass renderPass; + uint32_t subpass; + VkFramebuffer framebuffer; + VkBool32 occlusionQueryEnable; + VkQueryControlFlags queryFlags; + VkQueryPipelineStatisticFlags pipelineStatistics; +} VkCommandBufferInheritanceInfo; + +typedef struct VkCommandBufferBeginInfo { + VkStructureType sType; + const void * pNext; + VkCommandBufferUsageFlags flags; + const VkCommandBufferInheritanceInfo * pInheritanceInfo; +} VkCommandBufferBeginInfo; + +typedef struct VkRenderPassBeginInfo { + VkStructureType sType; + const void * pNext; + VkRenderPass renderPass; + VkFramebuffer framebuffer; + VkRect2D renderArea; + uint32_t clearValueCount; + const VkClearValue * pClearValues; +} VkRenderPassBeginInfo; + +typedef struct VkClearAttachment { + VkImageAspectFlags aspectMask; + uint32_t colorAttachment; + VkClearValue clearValue; +} VkClearAttachment; + +typedef struct VkAttachmentDescription { + VkAttachmentDescriptionFlags flags; + VkFormat format; + VkSampleCountFlagBits samples; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkAttachmentLoadOp stencilLoadOp; + VkAttachmentStoreOp stencilStoreOp; + VkImageLayout initialLayout; + VkImageLayout finalLayout; +} VkAttachmentDescription; + +typedef struct VkSubpassDescription { + VkSubpassDescriptionFlags flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t inputAttachmentCount; + const VkAttachmentReference * pInputAttachments; + uint32_t colorAttachmentCount; + const VkAttachmentReference * pColorAttachments; + const VkAttachmentReference * pResolveAttachments; + const VkAttachmentReference * pDepthStencilAttachment; + uint32_t preserveAttachmentCount; + const uint32_t * pPreserveAttachments; +} VkSubpassDescription; + +typedef struct VkSubpassDependency { + uint32_t srcSubpass; + uint32_t dstSubpass; + VkPipelineStageFlags srcStageMask; + VkPipelineStageFlags dstStageMask; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkDependencyFlags dependencyFlags; +} VkSubpassDependency; + +typedef struct VkRenderPassCreateInfo { + VkStructureType sType; + const void * pNext; + VkRenderPassCreateFlags flags; + uint32_t attachmentCount; + const VkAttachmentDescription * pAttachments; + uint32_t subpassCount; + const VkSubpassDescription * pSubpasses; + uint32_t dependencyCount; + const VkSubpassDependency * pDependencies; +} VkRenderPassCreateInfo; + +typedef struct VkEventCreateInfo { + VkStructureType sType; + const void * pNext; + VkEventCreateFlags flags; +} VkEventCreateInfo; + +typedef struct VkFenceCreateInfo { + VkStructureType sType; + const void * pNext; + VkFenceCreateFlags flags; +} VkFenceCreateInfo; + +typedef struct VkPhysicalDeviceFeatures { + VkBool32 robustBufferAccess; + VkBool32 fullDrawIndexUint32; + VkBool32 imageCubeArray; + VkBool32 independentBlend; + VkBool32 geometryShader; + VkBool32 tessellationShader; + VkBool32 sampleRateShading; + VkBool32 dualSrcBlend; + VkBool32 logicOp; + VkBool32 multiDrawIndirect; + VkBool32 drawIndirectFirstInstance; + VkBool32 depthClamp; + VkBool32 depthBiasClamp; + VkBool32 fillModeNonSolid; + VkBool32 depthBounds; + VkBool32 wideLines; + VkBool32 largePoints; + VkBool32 alphaToOne; + VkBool32 multiViewport; + VkBool32 samplerAnisotropy; + VkBool32 textureCompressionETC2; + VkBool32 textureCompressionASTC_LDR; + VkBool32 textureCompressionBC; + VkBool32 occlusionQueryPrecise; + VkBool32 pipelineStatisticsQuery; + VkBool32 vertexPipelineStoresAndAtomics; + VkBool32 fragmentStoresAndAtomics; + VkBool32 shaderTessellationAndGeometryPointSize; + VkBool32 shaderImageGatherExtended; + VkBool32 shaderStorageImageExtendedFormats; + VkBool32 shaderStorageImageMultisample; + VkBool32 shaderStorageImageReadWithoutFormat; + VkBool32 shaderStorageImageWriteWithoutFormat; + VkBool32 shaderUniformBufferArrayDynamicIndexing; + VkBool32 shaderSampledImageArrayDynamicIndexing; + VkBool32 shaderStorageBufferArrayDynamicIndexing; + VkBool32 shaderStorageImageArrayDynamicIndexing; + VkBool32 shaderClipDistance; + VkBool32 shaderCullDistance; + VkBool32 shaderFloat64; + VkBool32 shaderInt64; + VkBool32 shaderInt16; + VkBool32 shaderResourceResidency; + VkBool32 shaderResourceMinLod; + VkBool32 sparseBinding; + VkBool32 sparseResidencyBuffer; + VkBool32 sparseResidencyImage2D; + VkBool32 sparseResidencyImage3D; + VkBool32 sparseResidency2Samples; + VkBool32 sparseResidency4Samples; + VkBool32 sparseResidency8Samples; + VkBool32 sparseResidency16Samples; + VkBool32 sparseResidencyAliased; + VkBool32 variableMultisampleRate; + VkBool32 inheritedQueries; +} VkPhysicalDeviceFeatures; + +typedef struct VkPhysicalDeviceSparseProperties { + VkBool32 residencyStandard2DBlockShape; + VkBool32 residencyStandard2DMultisampleBlockShape; + VkBool32 residencyStandard3DBlockShape; + VkBool32 residencyAlignedMipSize; + VkBool32 residencyNonResidentStrict; +} VkPhysicalDeviceSparseProperties; + +typedef struct VkPhysicalDeviceLimits { + uint32_t maxImageDimension1D; + uint32_t maxImageDimension2D; + uint32_t maxImageDimension3D; + uint32_t maxImageDimensionCube; + uint32_t maxImageArrayLayers; + uint32_t maxTexelBufferElements; + uint32_t maxUniformBufferRange; + uint32_t maxStorageBufferRange; + uint32_t maxPushConstantsSize; + uint32_t maxMemoryAllocationCount; + uint32_t maxSamplerAllocationCount; + VkDeviceSize bufferImageGranularity; + VkDeviceSize sparseAddressSpaceSize; + uint32_t maxBoundDescriptorSets; + uint32_t maxPerStageDescriptorSamplers; + uint32_t maxPerStageDescriptorUniformBuffers; + uint32_t maxPerStageDescriptorStorageBuffers; + uint32_t maxPerStageDescriptorSampledImages; + uint32_t maxPerStageDescriptorStorageImages; + uint32_t maxPerStageDescriptorInputAttachments; + uint32_t maxPerStageResources; + uint32_t maxDescriptorSetSamplers; + uint32_t maxDescriptorSetUniformBuffers; + uint32_t maxDescriptorSetUniformBuffersDynamic; + uint32_t maxDescriptorSetStorageBuffers; + uint32_t maxDescriptorSetStorageBuffersDynamic; + uint32_t maxDescriptorSetSampledImages; + uint32_t maxDescriptorSetStorageImages; + uint32_t maxDescriptorSetInputAttachments; + uint32_t maxVertexInputAttributes; + uint32_t maxVertexInputBindings; + uint32_t maxVertexInputAttributeOffset; + uint32_t maxVertexInputBindingStride; + uint32_t maxVertexOutputComponents; + uint32_t maxTessellationGenerationLevel; + uint32_t maxTessellationPatchSize; + uint32_t maxTessellationControlPerVertexInputComponents; + uint32_t maxTessellationControlPerVertexOutputComponents; + uint32_t maxTessellationControlPerPatchOutputComponents; + uint32_t maxTessellationControlTotalOutputComponents; + uint32_t maxTessellationEvaluationInputComponents; + uint32_t maxTessellationEvaluationOutputComponents; + uint32_t maxGeometryShaderInvocations; + uint32_t maxGeometryInputComponents; + uint32_t maxGeometryOutputComponents; + uint32_t maxGeometryOutputVertices; + uint32_t maxGeometryTotalOutputComponents; + uint32_t maxFragmentInputComponents; + uint32_t maxFragmentOutputAttachments; + uint32_t maxFragmentDualSrcAttachments; + uint32_t maxFragmentCombinedOutputResources; + uint32_t maxComputeSharedMemorySize; + uint32_t maxComputeWorkGroupCount [3]; + uint32_t maxComputeWorkGroupInvocations; + uint32_t maxComputeWorkGroupSize [3]; + uint32_t subPixelPrecisionBits; + uint32_t subTexelPrecisionBits; + uint32_t mipmapPrecisionBits; + uint32_t maxDrawIndexedIndexValue; + uint32_t maxDrawIndirectCount; + float maxSamplerLodBias; + float maxSamplerAnisotropy; + uint32_t maxViewports; + uint32_t maxViewportDimensions [2]; + float viewportBoundsRange [2]; + uint32_t viewportSubPixelBits; + size_t minMemoryMapAlignment; + VkDeviceSize minTexelBufferOffsetAlignment; + VkDeviceSize minUniformBufferOffsetAlignment; + VkDeviceSize minStorageBufferOffsetAlignment; + int32_t minTexelOffset; + uint32_t maxTexelOffset; + int32_t minTexelGatherOffset; + uint32_t maxTexelGatherOffset; + float minInterpolationOffset; + float maxInterpolationOffset; + uint32_t subPixelInterpolationOffsetBits; + uint32_t maxFramebufferWidth; + uint32_t maxFramebufferHeight; + uint32_t maxFramebufferLayers; + VkSampleCountFlags framebufferColorSampleCounts; + VkSampleCountFlags framebufferDepthSampleCounts; + VkSampleCountFlags framebufferStencilSampleCounts; + VkSampleCountFlags framebufferNoAttachmentsSampleCounts; + uint32_t maxColorAttachments; + VkSampleCountFlags sampledImageColorSampleCounts; + VkSampleCountFlags sampledImageIntegerSampleCounts; + VkSampleCountFlags sampledImageDepthSampleCounts; + VkSampleCountFlags sampledImageStencilSampleCounts; + VkSampleCountFlags storageImageSampleCounts; + uint32_t maxSampleMaskWords; + VkBool32 timestampComputeAndGraphics; + float timestampPeriod; + uint32_t maxClipDistances; + uint32_t maxCullDistances; + uint32_t maxCombinedClipAndCullDistances; + uint32_t discreteQueuePriorities; + float pointSizeRange [2]; + float lineWidthRange [2]; + float pointSizeGranularity; + float lineWidthGranularity; + VkBool32 strictLines; + VkBool32 standardSampleLocations; + VkDeviceSize optimalBufferCopyOffsetAlignment; + VkDeviceSize optimalBufferCopyRowPitchAlignment; + VkDeviceSize nonCoherentAtomSize; +} VkPhysicalDeviceLimits; + +typedef struct VkSemaphoreCreateInfo { + VkStructureType sType; + const void * pNext; + VkSemaphoreCreateFlags flags; +} VkSemaphoreCreateInfo; + +typedef struct VkQueryPoolCreateInfo { + VkStructureType sType; + const void * pNext; + VkQueryPoolCreateFlags flags; + VkQueryType queryType; + uint32_t queryCount; + VkQueryPipelineStatisticFlags pipelineStatistics; +} VkQueryPoolCreateInfo; + +typedef struct VkFramebufferCreateInfo { + VkStructureType sType; + const void * pNext; + VkFramebufferCreateFlags flags; + VkRenderPass renderPass; + uint32_t attachmentCount; + const VkImageView * pAttachments; + uint32_t width; + uint32_t height; + uint32_t layers; +} VkFramebufferCreateInfo; + +typedef struct VkSubmitInfo { + VkStructureType sType; + const void * pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore * pWaitSemaphores; + const VkPipelineStageFlags * pWaitDstStageMask; + uint32_t commandBufferCount; + const VkCommandBuffer * pCommandBuffers; + uint32_t signalSemaphoreCount; + const VkSemaphore * pSignalSemaphores; +} VkSubmitInfo; + +typedef struct VkSurfaceCapabilitiesKHR { + uint32_t minImageCount; + uint32_t maxImageCount; + VkExtent2D currentExtent; + VkExtent2D minImageExtent; + VkExtent2D maxImageExtent; + uint32_t maxImageArrayLayers; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkSurfaceTransformFlagBitsKHR currentTransform; + VkCompositeAlphaFlagsKHR supportedCompositeAlpha; + VkImageUsageFlags supportedUsageFlags; +} VkSurfaceCapabilitiesKHR; + +typedef struct VkSwapchainCreateInfoKHR { + VkStructureType sType; + const void * pNext; + VkSwapchainCreateFlagsKHR flags; + VkSurfaceKHR surface; + uint32_t minImageCount; + VkFormat imageFormat; + VkColorSpaceKHR imageColorSpace; + VkExtent2D imageExtent; + uint32_t imageArrayLayers; + VkImageUsageFlags imageUsage; + VkSharingMode imageSharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t * pQueueFamilyIndices; + VkSurfaceTransformFlagBitsKHR preTransform; + VkCompositeAlphaFlagBitsKHR compositeAlpha; + VkPresentModeKHR presentMode; + VkBool32 clipped; + VkSwapchainKHR oldSwapchain; +} VkSwapchainCreateInfoKHR; + +typedef struct VkDebugReportCallbackCreateInfoEXT { + VkStructureType sType; + const void * pNext; + VkDebugReportFlagsEXT flags; + PFN_vkDebugReportCallbackEXT pfnCallback; + void * pUserData; +} VkDebugReportCallbackCreateInfoEXT; + +typedef struct VkPrivateDataSlotCreateInfo { + VkStructureType sType; + const void * pNext; + VkPrivateDataSlotCreateFlags flags; +} VkPrivateDataSlotCreateInfo; + +typedef struct VkPhysicalDevicePrivateDataFeatures { + VkStructureType sType; + void * pNext; + VkBool32 privateData; +} VkPhysicalDevicePrivateDataFeatures; + +typedef struct VkPhysicalDeviceFeatures2 { + VkStructureType sType; + void * pNext; + VkPhysicalDeviceFeatures features; +} VkPhysicalDeviceFeatures2; + +typedef struct VkFormatProperties2 { + VkStructureType sType; + void * pNext; + VkFormatProperties formatProperties; +} VkFormatProperties2; + +typedef struct VkImageFormatProperties2 { + VkStructureType sType; + void * pNext; + VkImageFormatProperties imageFormatProperties; +} VkImageFormatProperties2; + +typedef struct VkPhysicalDeviceImageFormatInfo2 { + VkStructureType sType; + const void * pNext; + VkFormat format; + VkImageType type; + VkImageTiling tiling; + VkImageUsageFlags usage; + VkImageCreateFlags flags; +} VkPhysicalDeviceImageFormatInfo2; + +typedef struct VkQueueFamilyProperties2 { + VkStructureType sType; + void * pNext; + VkQueueFamilyProperties queueFamilyProperties; +} VkQueueFamilyProperties2; + +typedef struct VkSparseImageFormatProperties2 { + VkStructureType sType; + void * pNext; + VkSparseImageFormatProperties properties; +} VkSparseImageFormatProperties2; + +typedef struct VkPhysicalDeviceSparseImageFormatInfo2 { + VkStructureType sType; + const void * pNext; + VkFormat format; + VkImageType type; + VkSampleCountFlagBits samples; + VkImageUsageFlags usage; + VkImageTiling tiling; +} VkPhysicalDeviceSparseImageFormatInfo2; + +typedef struct VkPhysicalDeviceVariablePointersFeatures { + VkStructureType sType; + void * pNext; + VkBool32 variablePointersStorageBuffer; + VkBool32 variablePointers; +} VkPhysicalDeviceVariablePointersFeatures; + +typedef struct VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures; + +typedef struct VkExternalMemoryProperties { + VkExternalMemoryFeatureFlags externalMemoryFeatures; + VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes; + VkExternalMemoryHandleTypeFlags compatibleHandleTypes; +} VkExternalMemoryProperties; + +typedef struct VkExternalImageFormatProperties { + VkStructureType sType; + void * pNext; + VkExternalMemoryProperties externalMemoryProperties; +} VkExternalImageFormatProperties; + +typedef struct VkPhysicalDeviceExternalBufferInfo { + VkStructureType sType; + const void * pNext; + VkBufferCreateFlags flags; + VkBufferUsageFlags usage; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalBufferInfo; + +typedef struct VkExternalBufferProperties { + VkStructureType sType; + void * pNext; + VkExternalMemoryProperties externalMemoryProperties; +} VkExternalBufferProperties; + +typedef struct VkPhysicalDeviceIDProperties { + VkStructureType sType; + void * pNext; + uint8_t deviceUUID [ VK_UUID_SIZE ]; + uint8_t driverUUID [ VK_UUID_SIZE ]; + uint8_t deviceLUID [ VK_LUID_SIZE ]; + uint32_t deviceNodeMask; + VkBool32 deviceLUIDValid; +} VkPhysicalDeviceIDProperties; + +typedef struct VkExternalMemoryImageCreateInfo { + VkStructureType sType; + const void * pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExternalMemoryImageCreateInfo; + +typedef struct VkExternalMemoryBufferCreateInfo { + VkStructureType sType; + const void * pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExternalMemoryBufferCreateInfo; + +typedef struct VkExportMemoryAllocateInfo { + VkStructureType sType; + const void * pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExportMemoryAllocateInfo; + +typedef struct VkExternalSemaphoreProperties { + VkStructureType sType; + void * pNext; + VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes; + VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes; + VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures; +} VkExternalSemaphoreProperties; + +typedef struct VkExportSemaphoreCreateInfo { + VkStructureType sType; + const void * pNext; + VkExternalSemaphoreHandleTypeFlags handleTypes; +} VkExportSemaphoreCreateInfo; + +typedef struct VkExternalFenceProperties { + VkStructureType sType; + void * pNext; + VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes; + VkExternalFenceHandleTypeFlags compatibleHandleTypes; + VkExternalFenceFeatureFlags externalFenceFeatures; +} VkExternalFenceProperties; + +typedef struct VkExportFenceCreateInfo { + VkStructureType sType; + const void * pNext; + VkExternalFenceHandleTypeFlags handleTypes; +} VkExportFenceCreateInfo; + +typedef struct VkPhysicalDeviceMultiviewFeatures { + VkStructureType sType; + void * pNext; + VkBool32 multiview; + VkBool32 multiviewGeometryShader; + VkBool32 multiviewTessellationShader; +} VkPhysicalDeviceMultiviewFeatures; + +typedef struct VkPhysicalDeviceGroupProperties { + VkStructureType sType; + void * pNext; + uint32_t physicalDeviceCount; + VkPhysicalDevice physicalDevices [ VK_MAX_DEVICE_GROUP_SIZE ]; + VkBool32 subsetAllocation; +} VkPhysicalDeviceGroupProperties; + +typedef struct VkMemoryAllocateFlagsInfo { + VkStructureType sType; + const void * pNext; + VkMemoryAllocateFlags flags; + uint32_t deviceMask; +} VkMemoryAllocateFlagsInfo; + +typedef struct VkBindBufferMemoryInfo { + VkStructureType sType; + const void * pNext; + VkBuffer buffer; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; +} VkBindBufferMemoryInfo; + +typedef struct VkBindImageMemoryInfo { + VkStructureType sType; + const void * pNext; + VkImage image; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; +} VkBindImageMemoryInfo; + +typedef struct VkDeviceGroupPresentCapabilitiesKHR { + VkStructureType sType; + void * pNext; + uint32_t presentMask [ VK_MAX_DEVICE_GROUP_SIZE ]; + VkDeviceGroupPresentModeFlagsKHR modes; +} VkDeviceGroupPresentCapabilitiesKHR; + +typedef struct VkDeviceGroupSwapchainCreateInfoKHR { + VkStructureType sType; + const void * pNext; + VkDeviceGroupPresentModeFlagsKHR modes; +} VkDeviceGroupSwapchainCreateInfoKHR; + +typedef struct VkDescriptorUpdateTemplateCreateInfo { + VkStructureType sType; + const void * pNext; + VkDescriptorUpdateTemplateCreateFlags flags; + uint32_t descriptorUpdateEntryCount; + const VkDescriptorUpdateTemplateEntry * pDescriptorUpdateEntries; + VkDescriptorUpdateTemplateType templateType; + VkDescriptorSetLayout descriptorSetLayout; + VkPipelineBindPoint pipelineBindPoint; + VkPipelineLayout pipelineLayout; + uint32_t set; +} VkDescriptorUpdateTemplateCreateInfo; + +typedef struct VkInputAttachmentAspectReference { + uint32_t subpass; + uint32_t inputAttachmentIndex; + VkImageAspectFlags aspectMask; +} VkInputAttachmentAspectReference; + +typedef struct VkRenderPassInputAttachmentAspectCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t aspectReferenceCount; + const VkInputAttachmentAspectReference * pAspectReferences; +} VkRenderPassInputAttachmentAspectCreateInfo; + +typedef struct VkPhysicalDevice16BitStorageFeatures { + VkStructureType sType; + void * pNext; + VkBool32 storageBuffer16BitAccess; + VkBool32 uniformAndStorageBuffer16BitAccess; + VkBool32 storagePushConstant16; + VkBool32 storageInputOutput16; +} VkPhysicalDevice16BitStorageFeatures; + +typedef struct VkPhysicalDeviceSubgroupProperties { + VkStructureType sType; + void * pNext; + uint32_t subgroupSize; + VkShaderStageFlags supportedStages; + VkSubgroupFeatureFlags supportedOperations; + VkBool32 quadOperationsInAllStages; +} VkPhysicalDeviceSubgroupProperties; + +typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures { + VkStructureType sType; + void * pNext; + VkBool32 shaderSubgroupExtendedTypes; +} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; + +typedef struct VkDeviceBufferMemoryRequirements { + VkStructureType sType; + const void * pNext; + const VkBufferCreateInfo * pCreateInfo; +} VkDeviceBufferMemoryRequirements; + +typedef struct VkDeviceImageMemoryRequirements { + VkStructureType sType; + const void * pNext; + const VkImageCreateInfo * pCreateInfo; + VkImageAspectFlagBits planeAspect; +} VkDeviceImageMemoryRequirements; + +typedef struct VkMemoryRequirements2 { + VkStructureType sType; + void * pNext; + VkMemoryRequirements memoryRequirements; +} VkMemoryRequirements2; + +typedef struct VkSparseImageMemoryRequirements2 { + VkStructureType sType; + void * pNext; + VkSparseImageMemoryRequirements memoryRequirements; +} VkSparseImageMemoryRequirements2; + +typedef struct VkMemoryDedicatedRequirements { + VkStructureType sType; + void * pNext; + VkBool32 prefersDedicatedAllocation; + VkBool32 requiresDedicatedAllocation; +} VkMemoryDedicatedRequirements; + +typedef struct VkImageViewUsageCreateInfo { + VkStructureType sType; + const void * pNext; + VkImageUsageFlags usage; +} VkImageViewUsageCreateInfo; + +typedef struct VkSamplerYcbcrConversionCreateInfo { + VkStructureType sType; + const void * pNext; + VkFormat format; + VkSamplerYcbcrModelConversion ycbcrModel; + VkSamplerYcbcrRange ycbcrRange; + VkComponentMapping components; + VkChromaLocation xChromaOffset; + VkChromaLocation yChromaOffset; + VkFilter chromaFilter; + VkBool32 forceExplicitReconstruction; +} VkSamplerYcbcrConversionCreateInfo; + +typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures { + VkStructureType sType; + void * pNext; + VkBool32 samplerYcbcrConversion; +} VkPhysicalDeviceSamplerYcbcrConversionFeatures; + +typedef struct VkProtectedSubmitInfo { + VkStructureType sType; + const void * pNext; + VkBool32 protectedSubmit; +} VkProtectedSubmitInfo; + +typedef struct VkPhysicalDeviceProtectedMemoryFeatures { + VkStructureType sType; + void * pNext; + VkBool32 protectedMemory; +} VkPhysicalDeviceProtectedMemoryFeatures; + +typedef struct VkPhysicalDeviceProtectedMemoryProperties { + VkStructureType sType; + void * pNext; + VkBool32 protectedNoFault; +} VkPhysicalDeviceProtectedMemoryProperties; + +typedef struct VkDeviceQueueInfo2 { + VkStructureType sType; + const void * pNext; + VkDeviceQueueCreateFlags flags; + uint32_t queueFamilyIndex; + uint32_t queueIndex; +} VkDeviceQueueInfo2; + +typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties { + VkStructureType sType; + void * pNext; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; +} VkPhysicalDeviceSamplerFilterMinmaxProperties; + +typedef struct VkPhysicalDeviceInlineUniformBlockFeatures { + VkStructureType sType; + void * pNext; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; +} VkPhysicalDeviceInlineUniformBlockFeatures; + +typedef struct VkPhysicalDeviceMaintenance3Properties { + VkStructureType sType; + void * pNext; + uint32_t maxPerSetDescriptors; + VkDeviceSize maxMemoryAllocationSize; +} VkPhysicalDeviceMaintenance3Properties; + +typedef struct VkPhysicalDeviceMaintenance4Features { + VkStructureType sType; + void * pNext; + VkBool32 maintenance4; +} VkPhysicalDeviceMaintenance4Features; + +typedef struct VkPhysicalDeviceMaintenance4Properties { + VkStructureType sType; + void * pNext; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceMaintenance4Properties; + +typedef struct VkDescriptorSetLayoutSupport { + VkStructureType sType; + void * pNext; + VkBool32 supported; +} VkDescriptorSetLayoutSupport; + +typedef struct VkPhysicalDeviceShaderDrawParametersFeatures { + VkStructureType sType; + void * pNext; + VkBool32 shaderDrawParameters; +} VkPhysicalDeviceShaderDrawParametersFeatures; + +typedef struct VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures; + +typedef struct VkPhysicalDeviceShaderFloat16Int8Features { + VkStructureType sType; + void * pNext; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; +} VkPhysicalDeviceShaderFloat16Int8Features; + +typedef struct VkPhysicalDeviceFloatControlsProperties { + VkStructureType sType; + void * pNext; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 shaderSignedZeroInfNanPreserveFloat16; + VkBool32 shaderSignedZeroInfNanPreserveFloat32; + VkBool32 shaderSignedZeroInfNanPreserveFloat64; + VkBool32 shaderDenormPreserveFloat16; + VkBool32 shaderDenormPreserveFloat32; + VkBool32 shaderDenormPreserveFloat64; + VkBool32 shaderDenormFlushToZeroFloat16; + VkBool32 shaderDenormFlushToZeroFloat32; + VkBool32 shaderDenormFlushToZeroFloat64; + VkBool32 shaderRoundingModeRTEFloat16; + VkBool32 shaderRoundingModeRTEFloat32; + VkBool32 shaderRoundingModeRTEFloat64; + VkBool32 shaderRoundingModeRTZFloat16; + VkBool32 shaderRoundingModeRTZFloat32; + VkBool32 shaderRoundingModeRTZFloat64; +} VkPhysicalDeviceFloatControlsProperties; + +typedef struct VkPhysicalDeviceHostQueryResetFeatures { + VkStructureType sType; + void * pNext; + VkBool32 hostQueryReset; +} VkPhysicalDeviceHostQueryResetFeatures; + +typedef struct VkPhysicalDeviceDescriptorIndexingFeatures { + VkStructureType sType; + void * pNext; + VkBool32 shaderInputAttachmentArrayDynamicIndexing; + VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; + VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; + VkBool32 shaderUniformBufferArrayNonUniformIndexing; + VkBool32 shaderSampledImageArrayNonUniformIndexing; + VkBool32 shaderStorageBufferArrayNonUniformIndexing; + VkBool32 shaderStorageImageArrayNonUniformIndexing; + VkBool32 shaderInputAttachmentArrayNonUniformIndexing; + VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; + VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; + VkBool32 descriptorBindingUniformBufferUpdateAfterBind; + VkBool32 descriptorBindingSampledImageUpdateAfterBind; + VkBool32 descriptorBindingStorageImageUpdateAfterBind; + VkBool32 descriptorBindingStorageBufferUpdateAfterBind; + VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingUpdateUnusedWhilePending; + VkBool32 descriptorBindingPartiallyBound; + VkBool32 descriptorBindingVariableDescriptorCount; + VkBool32 runtimeDescriptorArray; +} VkPhysicalDeviceDescriptorIndexingFeatures; + +typedef struct VkPhysicalDeviceDescriptorIndexingProperties { + VkStructureType sType; + void * pNext; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; +} VkPhysicalDeviceDescriptorIndexingProperties; + +typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t bindingCount; + const VkDescriptorBindingFlags * pBindingFlags; +} VkDescriptorSetLayoutBindingFlagsCreateInfo; + +typedef struct VkAttachmentDescription2 { + VkStructureType sType; + const void * pNext; + VkAttachmentDescriptionFlags flags; + VkFormat format; + VkSampleCountFlagBits samples; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkAttachmentLoadOp stencilLoadOp; + VkAttachmentStoreOp stencilStoreOp; + VkImageLayout initialLayout; + VkImageLayout finalLayout; +} VkAttachmentDescription2; + +typedef struct VkAttachmentReference2 { + VkStructureType sType; + const void * pNext; + uint32_t attachment; + VkImageLayout layout; + VkImageAspectFlags aspectMask; +} VkAttachmentReference2; + +typedef struct VkSubpassDescription2 { + VkStructureType sType; + const void * pNext; + VkSubpassDescriptionFlags flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t viewMask; + uint32_t inputAttachmentCount; + const VkAttachmentReference2 * pInputAttachments; + uint32_t colorAttachmentCount; + const VkAttachmentReference2 * pColorAttachments; + const VkAttachmentReference2 * pResolveAttachments; + const VkAttachmentReference2 * pDepthStencilAttachment; + uint32_t preserveAttachmentCount; + const uint32_t * pPreserveAttachments; +} VkSubpassDescription2; + +typedef struct VkSubpassDependency2 { + VkStructureType sType; + const void * pNext; + uint32_t srcSubpass; + uint32_t dstSubpass; + VkPipelineStageFlags srcStageMask; + VkPipelineStageFlags dstStageMask; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkDependencyFlags dependencyFlags; + int32_t viewOffset; +} VkSubpassDependency2; + +typedef struct VkRenderPassCreateInfo2 { + VkStructureType sType; + const void * pNext; + VkRenderPassCreateFlags flags; + uint32_t attachmentCount; + const VkAttachmentDescription2 * pAttachments; + uint32_t subpassCount; + const VkSubpassDescription2 * pSubpasses; + uint32_t dependencyCount; + const VkSubpassDependency2 * pDependencies; + uint32_t correlatedViewMaskCount; + const uint32_t * pCorrelatedViewMasks; +} VkRenderPassCreateInfo2; + +typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures { + VkStructureType sType; + void * pNext; + VkBool32 timelineSemaphore; +} VkPhysicalDeviceTimelineSemaphoreFeatures; + +typedef struct VkSemaphoreWaitInfo { + VkStructureType sType; + const void * pNext; + VkSemaphoreWaitFlags flags; + uint32_t semaphoreCount; + const VkSemaphore * pSemaphores; + const uint64_t * pValues; +} VkSemaphoreWaitInfo; + +typedef struct VkPhysicalDevice8BitStorageFeatures { + VkStructureType sType; + void * pNext; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; +} VkPhysicalDevice8BitStorageFeatures; + +typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures { + VkStructureType sType; + void * pNext; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; +} VkPhysicalDeviceVulkanMemoryModelFeatures; + +typedef struct VkPhysicalDeviceShaderAtomicInt64Features { + VkStructureType sType; + void * pNext; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; +} VkPhysicalDeviceShaderAtomicInt64Features; + +typedef struct VkPhysicalDeviceDepthStencilResolveProperties { + VkStructureType sType; + void * pNext; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; +} VkPhysicalDeviceDepthStencilResolveProperties; + +typedef struct VkSubpassDescriptionDepthStencilResolve { + VkStructureType sType; + const void * pNext; + VkResolveModeFlagBits depthResolveMode; + VkResolveModeFlagBits stencilResolveMode; + const VkAttachmentReference2 * pDepthStencilResolveAttachment; +} VkSubpassDescriptionDepthStencilResolve; + +typedef struct VkImageStencilUsageCreateInfo { + VkStructureType sType; + const void * pNext; + VkImageUsageFlags stencilUsage; +} VkImageStencilUsageCreateInfo; + +typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures { + VkStructureType sType; + void * pNext; + VkBool32 scalarBlockLayout; +} VkPhysicalDeviceScalarBlockLayoutFeatures; + +typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures { + VkStructureType sType; + void * pNext; + VkBool32 uniformBufferStandardLayout; +} VkPhysicalDeviceUniformBufferStandardLayoutFeatures; + +typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures { + VkStructureType sType; + void * pNext; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeatures; + +typedef struct VkPhysicalDeviceImagelessFramebufferFeatures { + VkStructureType sType; + void * pNext; + VkBool32 imagelessFramebuffer; +} VkPhysicalDeviceImagelessFramebufferFeatures; + +typedef struct VkFramebufferAttachmentImageInfo { + VkStructureType sType; + const void * pNext; + VkImageCreateFlags flags; + VkImageUsageFlags usage; + uint32_t width; + uint32_t height; + uint32_t layerCount; + uint32_t viewFormatCount; + const VkFormat * pViewFormats; +} VkFramebufferAttachmentImageInfo; + +typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures { + VkStructureType sType; + void * pNext; + VkBool32 textureCompressionASTC_HDR; +} VkPhysicalDeviceTextureCompressionASTCHDRFeatures; + +typedef struct VkPipelineCreationFeedback { + VkPipelineCreationFeedbackFlags flags; + uint64_t duration; +} VkPipelineCreationFeedback; + +typedef struct VkPipelineCreationFeedbackCreateInfo { + VkStructureType sType; + const void * pNext; + VkPipelineCreationFeedback * pPipelineCreationFeedback; + uint32_t pipelineStageCreationFeedbackCount; + VkPipelineCreationFeedback * pPipelineStageCreationFeedbacks; +} VkPipelineCreationFeedbackCreateInfo; + +typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures { + VkStructureType sType; + void * pNext; + VkBool32 separateDepthStencilLayouts; +} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; + +typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures { + VkStructureType sType; + void * pNext; + VkBool32 shaderDemoteToHelperInvocation; +} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures; + +typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties { + VkStructureType sType; + void * pNext; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; +} VkPhysicalDeviceTexelBufferAlignmentProperties; + +typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures { + VkStructureType sType; + void * pNext; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; +} VkPhysicalDeviceSubgroupSizeControlFeatures; + +typedef struct VkPhysicalDeviceSubgroupSizeControlProperties { + VkStructureType sType; + void * pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; +} VkPhysicalDeviceSubgroupSizeControlProperties; + +typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures { + VkStructureType sType; + void * pNext; + VkBool32 pipelineCreationCacheControl; +} VkPhysicalDevicePipelineCreationCacheControlFeatures; + +typedef struct VkPhysicalDeviceVulkan11Features { + VkStructureType sType; + void * pNext; + VkBool32 storageBuffer16BitAccess; + VkBool32 uniformAndStorageBuffer16BitAccess; + VkBool32 storagePushConstant16; + VkBool32 storageInputOutput16; + VkBool32 multiview; + VkBool32 multiviewGeometryShader; + VkBool32 multiviewTessellationShader; + VkBool32 variablePointersStorageBuffer; + VkBool32 variablePointers; + VkBool32 protectedMemory; + VkBool32 samplerYcbcrConversion; + VkBool32 shaderDrawParameters; +} VkPhysicalDeviceVulkan11Features; + +typedef struct VkPhysicalDeviceVulkan11Properties { + VkStructureType sType; + void * pNext; + uint8_t deviceUUID [ VK_UUID_SIZE ]; + uint8_t driverUUID [ VK_UUID_SIZE ]; + uint8_t deviceLUID [ VK_LUID_SIZE ]; + uint32_t deviceNodeMask; + VkBool32 deviceLUIDValid; + uint32_t subgroupSize; + VkShaderStageFlags subgroupSupportedStages; + VkSubgroupFeatureFlags subgroupSupportedOperations; + VkBool32 subgroupQuadOperationsInAllStages; + VkPointClippingBehavior pointClippingBehavior; + uint32_t maxMultiviewViewCount; + uint32_t maxMultiviewInstanceIndex; + VkBool32 protectedNoFault; + uint32_t maxPerSetDescriptors; + VkDeviceSize maxMemoryAllocationSize; +} VkPhysicalDeviceVulkan11Properties; + +typedef struct VkPhysicalDeviceVulkan12Features { + VkStructureType sType; + void * pNext; + VkBool32 samplerMirrorClampToEdge; + VkBool32 drawIndirectCount; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; + VkBool32 descriptorIndexing; + VkBool32 shaderInputAttachmentArrayDynamicIndexing; + VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; + VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; + VkBool32 shaderUniformBufferArrayNonUniformIndexing; + VkBool32 shaderSampledImageArrayNonUniformIndexing; + VkBool32 shaderStorageBufferArrayNonUniformIndexing; + VkBool32 shaderStorageImageArrayNonUniformIndexing; + VkBool32 shaderInputAttachmentArrayNonUniformIndexing; + VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; + VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; + VkBool32 descriptorBindingUniformBufferUpdateAfterBind; + VkBool32 descriptorBindingSampledImageUpdateAfterBind; + VkBool32 descriptorBindingStorageImageUpdateAfterBind; + VkBool32 descriptorBindingStorageBufferUpdateAfterBind; + VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingUpdateUnusedWhilePending; + VkBool32 descriptorBindingPartiallyBound; + VkBool32 descriptorBindingVariableDescriptorCount; + VkBool32 runtimeDescriptorArray; + VkBool32 samplerFilterMinmax; + VkBool32 scalarBlockLayout; + VkBool32 imagelessFramebuffer; + VkBool32 uniformBufferStandardLayout; + VkBool32 shaderSubgroupExtendedTypes; + VkBool32 separateDepthStencilLayouts; + VkBool32 hostQueryReset; + VkBool32 timelineSemaphore; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; + VkBool32 shaderOutputViewportIndex; + VkBool32 shaderOutputLayer; + VkBool32 subgroupBroadcastDynamicId; +} VkPhysicalDeviceVulkan12Features; + +typedef struct VkPhysicalDeviceVulkan12Properties { + VkStructureType sType; + void * pNext; + VkDriverId driverID; + char driverName [ VK_MAX_DRIVER_NAME_SIZE ]; + char driverInfo [ VK_MAX_DRIVER_INFO_SIZE ]; + VkConformanceVersion conformanceVersion; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 shaderSignedZeroInfNanPreserveFloat16; + VkBool32 shaderSignedZeroInfNanPreserveFloat32; + VkBool32 shaderSignedZeroInfNanPreserveFloat64; + VkBool32 shaderDenormPreserveFloat16; + VkBool32 shaderDenormPreserveFloat32; + VkBool32 shaderDenormPreserveFloat64; + VkBool32 shaderDenormFlushToZeroFloat16; + VkBool32 shaderDenormFlushToZeroFloat32; + VkBool32 shaderDenormFlushToZeroFloat64; + VkBool32 shaderRoundingModeRTEFloat16; + VkBool32 shaderRoundingModeRTEFloat32; + VkBool32 shaderRoundingModeRTEFloat64; + VkBool32 shaderRoundingModeRTZFloat16; + VkBool32 shaderRoundingModeRTZFloat32; + VkBool32 shaderRoundingModeRTZFloat64; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; + uint64_t maxTimelineSemaphoreValueDifference; + VkSampleCountFlags framebufferIntegerColorSampleCounts; +} VkPhysicalDeviceVulkan12Properties; + +typedef struct VkPhysicalDeviceVulkan13Features { + VkStructureType sType; + void * pNext; + VkBool32 robustImageAccess; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; + VkBool32 pipelineCreationCacheControl; + VkBool32 privateData; + VkBool32 shaderDemoteToHelperInvocation; + VkBool32 shaderTerminateInvocation; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; + VkBool32 synchronization2; + VkBool32 textureCompressionASTC_HDR; + VkBool32 shaderZeroInitializeWorkgroupMemory; + VkBool32 dynamicRendering; + VkBool32 shaderIntegerDotProduct; + VkBool32 maintenance4; +} VkPhysicalDeviceVulkan13Features; + +typedef struct VkPhysicalDeviceVulkan13Properties { + VkStructureType sType; + void * pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; + uint32_t maxInlineUniformTotalSize; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceVulkan13Properties; + +typedef struct VkPhysicalDeviceToolProperties { + VkStructureType sType; + void * pNext; + char name [ VK_MAX_EXTENSION_NAME_SIZE ]; + char version [ VK_MAX_EXTENSION_NAME_SIZE ]; + VkToolPurposeFlags purposes; + char description [ VK_MAX_DESCRIPTION_SIZE ]; + char layer [ VK_MAX_EXTENSION_NAME_SIZE ]; +} VkPhysicalDeviceToolProperties; + +typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures { + VkStructureType sType; + void * pNext; + VkBool32 shaderZeroInitializeWorkgroupMemory; +} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + +typedef struct VkPhysicalDeviceImageRobustnessFeatures { + VkStructureType sType; + void * pNext; + VkBool32 robustImageAccess; +} VkPhysicalDeviceImageRobustnessFeatures; + +typedef struct VkBufferCopy2 { + VkStructureType sType; + const void * pNext; + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy2; + +typedef struct VkImageCopy2 { + VkStructureType sType; + const void * pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy2; + +typedef struct VkImageBlit2 { + VkStructureType sType; + const void * pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets [2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets [2]; +} VkImageBlit2; + +typedef struct VkBufferImageCopy2 { + VkStructureType sType; + const void * pNext; + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy2; + +typedef struct VkImageResolve2 { + VkStructureType sType; + const void * pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve2; + +typedef struct VkCopyBufferInfo2 { + VkStructureType sType; + const void * pNext; + VkBuffer srcBuffer; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferCopy2 * pRegions; +} VkCopyBufferInfo2; + +typedef struct VkCopyImageInfo2 { + VkStructureType sType; + const void * pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageCopy2 * pRegions; +} VkCopyImageInfo2; + +typedef struct VkBlitImageInfo2 { + VkStructureType sType; + const void * pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageBlit2 * pRegions; + VkFilter filter; +} VkBlitImageInfo2; + +typedef struct VkCopyBufferToImageInfo2 { + VkStructureType sType; + const void * pNext; + VkBuffer srcBuffer; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkBufferImageCopy2 * pRegions; +} VkCopyBufferToImageInfo2; + +typedef struct VkCopyImageToBufferInfo2 { + VkStructureType sType; + const void * pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferImageCopy2 * pRegions; +} VkCopyImageToBufferInfo2; + +typedef struct VkResolveImageInfo2 { + VkStructureType sType; + const void * pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageResolve2 * pRegions; +} VkResolveImageInfo2; + +typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures { + VkStructureType sType; + void * pNext; + VkBool32 shaderTerminateInvocation; +} VkPhysicalDeviceShaderTerminateInvocationFeatures; + +typedef struct VkMemoryBarrier2 { + VkStructureType sType; + const void * pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; +} VkMemoryBarrier2; + +typedef struct VkImageMemoryBarrier2 { + VkStructureType sType; + const void * pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier2; + +typedef struct VkBufferMemoryBarrier2 { + VkStructureType sType; + const void * pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier2; + +typedef struct VkDependencyInfo { + VkStructureType sType; + const void * pNext; + VkDependencyFlags dependencyFlags; + uint32_t memoryBarrierCount; + const VkMemoryBarrier2 * pMemoryBarriers; + uint32_t bufferMemoryBarrierCount; + const VkBufferMemoryBarrier2 * pBufferMemoryBarriers; + uint32_t imageMemoryBarrierCount; + const VkImageMemoryBarrier2 * pImageMemoryBarriers; +} VkDependencyInfo; + +typedef struct VkSemaphoreSubmitInfo { + VkStructureType sType; + const void * pNext; + VkSemaphore semaphore; + uint64_t value; + VkPipelineStageFlags2 stageMask; + uint32_t deviceIndex; +} VkSemaphoreSubmitInfo; + +typedef struct VkSubmitInfo2 { + VkStructureType sType; + const void * pNext; + VkSubmitFlags flags; + uint32_t waitSemaphoreInfoCount; + const VkSemaphoreSubmitInfo * pWaitSemaphoreInfos; + uint32_t commandBufferInfoCount; + const VkCommandBufferSubmitInfo * pCommandBufferInfos; + uint32_t signalSemaphoreInfoCount; + const VkSemaphoreSubmitInfo * pSignalSemaphoreInfos; +} VkSubmitInfo2; + +typedef struct VkPhysicalDeviceSynchronization2Features { + VkStructureType sType; + void * pNext; + VkBool32 synchronization2; +} VkPhysicalDeviceSynchronization2Features; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures { + VkStructureType sType; + void * pNext; + VkBool32 shaderIntegerDotProduct; +} VkPhysicalDeviceShaderIntegerDotProductFeatures; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties { + VkStructureType sType; + void * pNext; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; +} VkPhysicalDeviceShaderIntegerDotProductProperties; + +typedef struct VkFormatProperties3 { + VkStructureType sType; + void * pNext; + VkFormatFeatureFlags2 linearTilingFeatures; + VkFormatFeatureFlags2 optimalTilingFeatures; + VkFormatFeatureFlags2 bufferFeatures; +} VkFormatProperties3; + +typedef struct VkRenderingInfo { + VkStructureType sType; + const void * pNext; + VkRenderingFlags flags; + VkRect2D renderArea; + uint32_t layerCount; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkRenderingAttachmentInfo * pColorAttachments; + const VkRenderingAttachmentInfo * pDepthAttachment; + const VkRenderingAttachmentInfo * pStencilAttachment; +} VkRenderingInfo; + +typedef struct VkPhysicalDeviceDynamicRenderingFeatures { + VkStructureType sType; + void * pNext; + VkBool32 dynamicRendering; +} VkPhysicalDeviceDynamicRenderingFeatures; + +typedef struct VkCommandBufferInheritanceRenderingInfo { + VkStructureType sType; + const void * pNext; + VkRenderingFlags flags; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat * pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; + VkSampleCountFlagBits rasterizationSamples; +} VkCommandBufferInheritanceRenderingInfo; + +typedef struct VkPhysicalDeviceProperties { + uint32_t apiVersion; + uint32_t driverVersion; + uint32_t vendorID; + uint32_t deviceID; + VkPhysicalDeviceType deviceType; + char deviceName [ VK_MAX_PHYSICAL_DEVICE_NAME_SIZE ]; + uint8_t pipelineCacheUUID [ VK_UUID_SIZE ]; + VkPhysicalDeviceLimits limits; + VkPhysicalDeviceSparseProperties sparseProperties; +} VkPhysicalDeviceProperties; + +typedef struct VkDeviceCreateInfo { + VkStructureType sType; + const void * pNext; + VkDeviceCreateFlags flags; + uint32_t queueCreateInfoCount; + const VkDeviceQueueCreateInfo * pQueueCreateInfos; + uint32_t enabledLayerCount; + const char * const* ppEnabledLayerNames; + uint32_t enabledExtensionCount; + const char * const* ppEnabledExtensionNames; + const VkPhysicalDeviceFeatures * pEnabledFeatures; +} VkDeviceCreateInfo; + +typedef struct VkPhysicalDeviceMemoryProperties { + uint32_t memoryTypeCount; + VkMemoryType memoryTypes [ VK_MAX_MEMORY_TYPES ]; + uint32_t memoryHeapCount; + VkMemoryHeap memoryHeaps [ VK_MAX_MEMORY_HEAPS ]; +} VkPhysicalDeviceMemoryProperties; + +typedef struct VkPhysicalDeviceProperties2 { + VkStructureType sType; + void * pNext; + VkPhysicalDeviceProperties properties; +} VkPhysicalDeviceProperties2; + +typedef struct VkPhysicalDeviceMemoryProperties2 { + VkStructureType sType; + void * pNext; + VkPhysicalDeviceMemoryProperties memoryProperties; +} VkPhysicalDeviceMemoryProperties2; + +typedef struct VkFramebufferAttachmentsCreateInfo { + VkStructureType sType; + const void * pNext; + uint32_t attachmentImageInfoCount; + const VkFramebufferAttachmentImageInfo * pAttachmentImageInfos; +} VkFramebufferAttachmentsCreateInfo; + + + +#define VK_VERSION_1_0 1 +GLAD_API_CALL int GLAD_VK_VERSION_1_0; +#define VK_VERSION_1_1 1 +GLAD_API_CALL int GLAD_VK_VERSION_1_1; +#define VK_VERSION_1_2 1 +GLAD_API_CALL int GLAD_VK_VERSION_1_2; +#define VK_VERSION_1_3 1 +GLAD_API_CALL int GLAD_VK_VERSION_1_3; +#define VK_EXT_debug_report 1 +GLAD_API_CALL int GLAD_VK_EXT_debug_report; +#define VK_KHR_portability_enumeration 1 +GLAD_API_CALL int GLAD_VK_KHR_portability_enumeration; +#define VK_KHR_surface 1 +GLAD_API_CALL int GLAD_VK_KHR_surface; +#define VK_KHR_swapchain 1 +GLAD_API_CALL int GLAD_VK_KHR_swapchain; + + +typedef VkResult (GLAD_API_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR * pAcquireInfo, uint32_t * pImageIndex); +typedef VkResult (GLAD_API_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t * pImageIndex); +typedef VkResult (GLAD_API_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo * pAllocateInfo, VkCommandBuffer * pCommandBuffers); +typedef VkResult (GLAD_API_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo * pAllocateInfo, VkDescriptorSet * pDescriptorSets); +typedef VkResult (GLAD_API_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo * pAllocateInfo, const VkAllocationCallbacks * pAllocator, VkDeviceMemory * pMemory); +typedef VkResult (GLAD_API_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo * pBeginInfo); +typedef VkResult (GLAD_API_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset); +typedef VkResult (GLAD_API_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo * pBindInfos); +typedef VkResult (GLAD_API_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset); +typedef VkResult (GLAD_API_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo * pBindInfos); +typedef void (GLAD_API_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); +typedef void (GLAD_API_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo * pRenderPassBegin, VkSubpassContents contents); +typedef void (GLAD_API_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo * pRenderPassBegin, const VkSubpassBeginInfo * pSubpassBeginInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer commandBuffer, const VkRenderingInfo * pRenderingInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet * pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t * pDynamicOffsets); +typedef void (GLAD_API_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); +typedef void (GLAD_API_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); +typedef void (GLAD_API_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer * pBuffers, const VkDeviceSize * pOffsets); +typedef void (GLAD_API_PTR *PFN_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer * pBuffers, const VkDeviceSize * pOffsets, const VkDeviceSize * pSizes, const VkDeviceSize * pStrides); +typedef void (GLAD_API_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit * pRegions, VkFilter filter); +typedef void (GLAD_API_PTR *PFN_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2 * pBlitImageInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment * pAttachments, uint32_t rectCount, const VkClearRect * pRects); +typedef void (GLAD_API_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue * pColor, uint32_t rangeCount, const VkImageSubresourceRange * pRanges); +typedef void (GLAD_API_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue * pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange * pRanges); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy * pRegions); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2 * pCopyBufferInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy * pRegions); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy * pRegions); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2 * pCopyImageInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy * pRegions); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); +typedef void (GLAD_API_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef void (GLAD_API_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef void (GLAD_API_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset); +typedef void (GLAD_API_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); +typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance); +typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (GLAD_API_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query); +typedef void (GLAD_API_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer); +typedef void (GLAD_API_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo * pSubpassEndInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdEndRendering)(VkCommandBuffer commandBuffer); +typedef void (GLAD_API_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer * pCommandBuffers); +typedef void (GLAD_API_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); +typedef void (GLAD_API_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents); +typedef void (GLAD_API_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo * pSubpassBeginInfo, const VkSubpassEndInfo * pSubpassEndInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier * pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier * pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier * pImageMemoryBarriers); +typedef void (GLAD_API_PTR *PFN_vkCmdPipelineBarrier2)(VkCommandBuffer commandBuffer, const VkDependencyInfo * pDependencyInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void * pValues); +typedef void (GLAD_API_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); +typedef void (GLAD_API_PTR *PFN_vkCmdResetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (GLAD_API_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +typedef void (GLAD_API_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve * pRegions); +typedef void (GLAD_API_PTR *PFN_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2 * pResolveImageInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants [4]); +typedef void (GLAD_API_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor); +typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds); +typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (GLAD_API_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask); +typedef void (GLAD_API_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); +typedef void (GLAD_API_PTR *PFN_vkCmdSetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo * pDependencyInfo); +typedef void (GLAD_API_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (GLAD_API_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth); +typedef void (GLAD_API_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); +typedef void (GLAD_API_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (GLAD_API_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (GLAD_API_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D * pScissors); +typedef void (GLAD_API_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D * pScissors); +typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask); +typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); +typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference); +typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask); +typedef void (GLAD_API_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport * pViewports); +typedef void (GLAD_API_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport * pViewports); +typedef void (GLAD_API_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void * pData); +typedef void (GLAD_API_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent * pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier * pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier * pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier * pImageMemoryBarriers); +typedef void (GLAD_API_PTR *PFN_vkCmdWaitEvents2)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent * pEvents, const VkDependencyInfo * pDependencyInfos); +typedef void (GLAD_API_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); +typedef void (GLAD_API_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkBuffer * pBuffer); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkBufferView * pView); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkCommandPool * pCommandPool); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo * pCreateInfos, const VkAllocationCallbacks * pAllocator, VkPipeline * pPipelines); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDebugReportCallbackEXT * pCallback); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorPool * pDescriptorPool); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorSetLayout * pSetLayout); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDevice * pDevice); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkEvent * pEvent); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkFence * pFence); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkFramebuffer * pFramebuffer); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo * pCreateInfos, const VkAllocationCallbacks * pAllocator, VkPipeline * pPipelines); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkImage * pImage); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkImageView * pView); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkInstance * pInstance); +typedef VkResult (GLAD_API_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkPipelineCache * pPipelineCache); +typedef VkResult (GLAD_API_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkPipelineLayout * pPipelineLayout); +typedef VkResult (GLAD_API_PTR *PFN_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkPrivateDataSlot * pPrivateDataSlot); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkQueryPool * pQueryPool); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkRenderPass * pRenderPass); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2 * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkRenderPass * pRenderPass); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSampler * pSampler); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSamplerYcbcrConversion * pYcbcrConversion); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSemaphore * pSemaphore); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkShaderModule * pShaderModule); +typedef VkResult (GLAD_API_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSwapchainKHR * pSwapchain); +typedef void (GLAD_API_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char * pLayerPrefix, const char * pMessage); +typedef void (GLAD_API_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks * pAllocator); +typedef void (GLAD_API_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks * pAllocator); +typedef VkResult (GLAD_API_PTR *PFN_vkDeviceWaitIdle)(VkDevice device); +typedef VkResult (GLAD_API_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer); +typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char * pLayerName, uint32_t * pPropertyCount, VkExtensionProperties * pProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t * pPropertyCount, VkLayerProperties * pProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char * pLayerName, uint32_t * pPropertyCount, VkExtensionProperties * pProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t * pPropertyCount, VkLayerProperties * pProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t * pApiVersion); +typedef VkResult (GLAD_API_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t * pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t * pPhysicalDeviceCount, VkPhysicalDevice * pPhysicalDevices); +typedef VkResult (GLAD_API_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange * pMemoryRanges); +typedef void (GLAD_API_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer * pCommandBuffers); +typedef VkResult (GLAD_API_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet * pDescriptorSets); +typedef void (GLAD_API_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks * pAllocator); +typedef VkDeviceAddress (GLAD_API_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo * pInfo); +typedef void (GLAD_API_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements * pMemoryRequirements); +typedef void (GLAD_API_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2 * pInfo, VkMemoryRequirements2 * pMemoryRequirements); +typedef uint64_t (GLAD_API_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo * pInfo); +typedef void (GLAD_API_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo * pCreateInfo, VkDescriptorSetLayoutSupport * pSupport); +typedef void (GLAD_API_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements * pInfo, VkMemoryRequirements2 * pMemoryRequirements); +typedef void (GLAD_API_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags * pPeerMemoryFeatures); +typedef VkResult (GLAD_API_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities); +typedef VkResult (GLAD_API_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR * pModes); +typedef void (GLAD_API_PTR *PFN_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements * pInfo, VkMemoryRequirements2 * pMemoryRequirements); +typedef void (GLAD_API_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements * pInfo, uint32_t * pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements); +typedef void (GLAD_API_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize * pCommittedMemoryInBytes); +typedef uint64_t (GLAD_API_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo); +typedef PFN_vkVoidFunction (GLAD_API_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char * pName); +typedef void (GLAD_API_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue * pQueue); +typedef void (GLAD_API_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2 * pQueueInfo, VkQueue * pQueue); +typedef VkResult (GLAD_API_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event); +typedef VkResult (GLAD_API_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence); +typedef void (GLAD_API_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements * pMemoryRequirements); +typedef void (GLAD_API_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2 * pInfo, VkMemoryRequirements2 * pMemoryRequirements); +typedef void (GLAD_API_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t * pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements * pSparseMemoryRequirements); +typedef void (GLAD_API_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2 * pInfo, uint32_t * pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements); +typedef void (GLAD_API_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource * pSubresource, VkSubresourceLayout * pLayout); +typedef PFN_vkVoidFunction (GLAD_API_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char * pName); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo, VkExternalBufferProperties * pExternalBufferProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo, VkExternalFenceProperties * pExternalFenceProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, VkExternalSemaphoreProperties * pExternalSemaphoreProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures * pFeatures); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2 * pFeatures); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties * pFormatProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2 * pFormatProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties * pImageFormatProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo, VkImageFormatProperties2 * pImageFormatProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties * pMemoryProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2 * pMemoryProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pRectCount, VkRect2D * pRects); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties * pProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 * pProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t * pQueueFamilyPropertyCount, VkQueueFamilyProperties * pQueueFamilyProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t * pQueueFamilyPropertyCount, VkQueueFamilyProperties2 * pQueueFamilyProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t * pPropertyCount, VkSparseImageFormatProperties * pProperties); +typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, uint32_t * pPropertyCount, VkSparseImageFormatProperties2 * pProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR * pSurfaceCapabilities); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pSurfaceFormatCount, VkSurfaceFormatKHR * pSurfaceFormats); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pPresentModeCount, VkPresentModeKHR * pPresentModes); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32 * pSupported); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t * pToolCount, VkPhysicalDeviceToolProperties * pToolProperties); +typedef VkResult (GLAD_API_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t * pDataSize, void * pData); +typedef void (GLAD_API_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t * pData); +typedef VkResult (GLAD_API_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void * pData, VkDeviceSize stride, VkQueryResultFlags flags); +typedef void (GLAD_API_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D * pGranularity); +typedef VkResult (GLAD_API_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t * pValue); +typedef VkResult (GLAD_API_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t * pSwapchainImageCount, VkImage * pSwapchainImages); +typedef VkResult (GLAD_API_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange * pMemoryRanges); +typedef VkResult (GLAD_API_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void ** ppData); +typedef VkResult (GLAD_API_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache * pSrcCaches); +typedef VkResult (GLAD_API_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo * pBindInfo, VkFence fence); +typedef VkResult (GLAD_API_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR * pPresentInfo); +typedef VkResult (GLAD_API_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo * pSubmits, VkFence fence); +typedef VkResult (GLAD_API_PTR *PFN_vkQueueSubmit2)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2 * pSubmits, VkFence fence); +typedef VkResult (GLAD_API_PTR *PFN_vkQueueWaitIdle)(VkQueue queue); +typedef VkResult (GLAD_API_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags); +typedef VkResult (GLAD_API_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags); +typedef VkResult (GLAD_API_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags); +typedef VkResult (GLAD_API_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event); +typedef VkResult (GLAD_API_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence * pFences); +typedef void (GLAD_API_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +typedef VkResult (GLAD_API_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event); +typedef VkResult (GLAD_API_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef VkResult (GLAD_API_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo * pSignalInfo); +typedef void (GLAD_API_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); +typedef void (GLAD_API_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory); +typedef void (GLAD_API_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void * pData); +typedef void (GLAD_API_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet * pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet * pDescriptorCopies); +typedef VkResult (GLAD_API_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence * pFences, VkBool32 waitAll, uint64_t timeout); +typedef VkResult (GLAD_API_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo * pWaitInfo, uint64_t timeout); + +GLAD_API_CALL PFN_vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR; +#define vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR +GLAD_API_CALL PFN_vkAcquireNextImageKHR glad_vkAcquireNextImageKHR; +#define vkAcquireNextImageKHR glad_vkAcquireNextImageKHR +GLAD_API_CALL PFN_vkAllocateCommandBuffers glad_vkAllocateCommandBuffers; +#define vkAllocateCommandBuffers glad_vkAllocateCommandBuffers +GLAD_API_CALL PFN_vkAllocateDescriptorSets glad_vkAllocateDescriptorSets; +#define vkAllocateDescriptorSets glad_vkAllocateDescriptorSets +GLAD_API_CALL PFN_vkAllocateMemory glad_vkAllocateMemory; +#define vkAllocateMemory glad_vkAllocateMemory +GLAD_API_CALL PFN_vkBeginCommandBuffer glad_vkBeginCommandBuffer; +#define vkBeginCommandBuffer glad_vkBeginCommandBuffer +GLAD_API_CALL PFN_vkBindBufferMemory glad_vkBindBufferMemory; +#define vkBindBufferMemory glad_vkBindBufferMemory +GLAD_API_CALL PFN_vkBindBufferMemory2 glad_vkBindBufferMemory2; +#define vkBindBufferMemory2 glad_vkBindBufferMemory2 +GLAD_API_CALL PFN_vkBindImageMemory glad_vkBindImageMemory; +#define vkBindImageMemory glad_vkBindImageMemory +GLAD_API_CALL PFN_vkBindImageMemory2 glad_vkBindImageMemory2; +#define vkBindImageMemory2 glad_vkBindImageMemory2 +GLAD_API_CALL PFN_vkCmdBeginQuery glad_vkCmdBeginQuery; +#define vkCmdBeginQuery glad_vkCmdBeginQuery +GLAD_API_CALL PFN_vkCmdBeginRenderPass glad_vkCmdBeginRenderPass; +#define vkCmdBeginRenderPass glad_vkCmdBeginRenderPass +GLAD_API_CALL PFN_vkCmdBeginRenderPass2 glad_vkCmdBeginRenderPass2; +#define vkCmdBeginRenderPass2 glad_vkCmdBeginRenderPass2 +GLAD_API_CALL PFN_vkCmdBeginRendering glad_vkCmdBeginRendering; +#define vkCmdBeginRendering glad_vkCmdBeginRendering +GLAD_API_CALL PFN_vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets; +#define vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets +GLAD_API_CALL PFN_vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer; +#define vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer +GLAD_API_CALL PFN_vkCmdBindPipeline glad_vkCmdBindPipeline; +#define vkCmdBindPipeline glad_vkCmdBindPipeline +GLAD_API_CALL PFN_vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers; +#define vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers +GLAD_API_CALL PFN_vkCmdBindVertexBuffers2 glad_vkCmdBindVertexBuffers2; +#define vkCmdBindVertexBuffers2 glad_vkCmdBindVertexBuffers2 +GLAD_API_CALL PFN_vkCmdBlitImage glad_vkCmdBlitImage; +#define vkCmdBlitImage glad_vkCmdBlitImage +GLAD_API_CALL PFN_vkCmdBlitImage2 glad_vkCmdBlitImage2; +#define vkCmdBlitImage2 glad_vkCmdBlitImage2 +GLAD_API_CALL PFN_vkCmdClearAttachments glad_vkCmdClearAttachments; +#define vkCmdClearAttachments glad_vkCmdClearAttachments +GLAD_API_CALL PFN_vkCmdClearColorImage glad_vkCmdClearColorImage; +#define vkCmdClearColorImage glad_vkCmdClearColorImage +GLAD_API_CALL PFN_vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage; +#define vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage +GLAD_API_CALL PFN_vkCmdCopyBuffer glad_vkCmdCopyBuffer; +#define vkCmdCopyBuffer glad_vkCmdCopyBuffer +GLAD_API_CALL PFN_vkCmdCopyBuffer2 glad_vkCmdCopyBuffer2; +#define vkCmdCopyBuffer2 glad_vkCmdCopyBuffer2 +GLAD_API_CALL PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage; +#define vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage +GLAD_API_CALL PFN_vkCmdCopyBufferToImage2 glad_vkCmdCopyBufferToImage2; +#define vkCmdCopyBufferToImage2 glad_vkCmdCopyBufferToImage2 +GLAD_API_CALL PFN_vkCmdCopyImage glad_vkCmdCopyImage; +#define vkCmdCopyImage glad_vkCmdCopyImage +GLAD_API_CALL PFN_vkCmdCopyImage2 glad_vkCmdCopyImage2; +#define vkCmdCopyImage2 glad_vkCmdCopyImage2 +GLAD_API_CALL PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer; +#define vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer +GLAD_API_CALL PFN_vkCmdCopyImageToBuffer2 glad_vkCmdCopyImageToBuffer2; +#define vkCmdCopyImageToBuffer2 glad_vkCmdCopyImageToBuffer2 +GLAD_API_CALL PFN_vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults; +#define vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults +GLAD_API_CALL PFN_vkCmdDispatch glad_vkCmdDispatch; +#define vkCmdDispatch glad_vkCmdDispatch +GLAD_API_CALL PFN_vkCmdDispatchBase glad_vkCmdDispatchBase; +#define vkCmdDispatchBase glad_vkCmdDispatchBase +GLAD_API_CALL PFN_vkCmdDispatchIndirect glad_vkCmdDispatchIndirect; +#define vkCmdDispatchIndirect glad_vkCmdDispatchIndirect +GLAD_API_CALL PFN_vkCmdDraw glad_vkCmdDraw; +#define vkCmdDraw glad_vkCmdDraw +GLAD_API_CALL PFN_vkCmdDrawIndexed glad_vkCmdDrawIndexed; +#define vkCmdDrawIndexed glad_vkCmdDrawIndexed +GLAD_API_CALL PFN_vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect; +#define vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect +GLAD_API_CALL PFN_vkCmdDrawIndexedIndirectCount glad_vkCmdDrawIndexedIndirectCount; +#define vkCmdDrawIndexedIndirectCount glad_vkCmdDrawIndexedIndirectCount +GLAD_API_CALL PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect; +#define vkCmdDrawIndirect glad_vkCmdDrawIndirect +GLAD_API_CALL PFN_vkCmdDrawIndirectCount glad_vkCmdDrawIndirectCount; +#define vkCmdDrawIndirectCount glad_vkCmdDrawIndirectCount +GLAD_API_CALL PFN_vkCmdEndQuery glad_vkCmdEndQuery; +#define vkCmdEndQuery glad_vkCmdEndQuery +GLAD_API_CALL PFN_vkCmdEndRenderPass glad_vkCmdEndRenderPass; +#define vkCmdEndRenderPass glad_vkCmdEndRenderPass +GLAD_API_CALL PFN_vkCmdEndRenderPass2 glad_vkCmdEndRenderPass2; +#define vkCmdEndRenderPass2 glad_vkCmdEndRenderPass2 +GLAD_API_CALL PFN_vkCmdEndRendering glad_vkCmdEndRendering; +#define vkCmdEndRendering glad_vkCmdEndRendering +GLAD_API_CALL PFN_vkCmdExecuteCommands glad_vkCmdExecuteCommands; +#define vkCmdExecuteCommands glad_vkCmdExecuteCommands +GLAD_API_CALL PFN_vkCmdFillBuffer glad_vkCmdFillBuffer; +#define vkCmdFillBuffer glad_vkCmdFillBuffer +GLAD_API_CALL PFN_vkCmdNextSubpass glad_vkCmdNextSubpass; +#define vkCmdNextSubpass glad_vkCmdNextSubpass +GLAD_API_CALL PFN_vkCmdNextSubpass2 glad_vkCmdNextSubpass2; +#define vkCmdNextSubpass2 glad_vkCmdNextSubpass2 +GLAD_API_CALL PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier; +#define vkCmdPipelineBarrier glad_vkCmdPipelineBarrier +GLAD_API_CALL PFN_vkCmdPipelineBarrier2 glad_vkCmdPipelineBarrier2; +#define vkCmdPipelineBarrier2 glad_vkCmdPipelineBarrier2 +GLAD_API_CALL PFN_vkCmdPushConstants glad_vkCmdPushConstants; +#define vkCmdPushConstants glad_vkCmdPushConstants +GLAD_API_CALL PFN_vkCmdResetEvent glad_vkCmdResetEvent; +#define vkCmdResetEvent glad_vkCmdResetEvent +GLAD_API_CALL PFN_vkCmdResetEvent2 glad_vkCmdResetEvent2; +#define vkCmdResetEvent2 glad_vkCmdResetEvent2 +GLAD_API_CALL PFN_vkCmdResetQueryPool glad_vkCmdResetQueryPool; +#define vkCmdResetQueryPool glad_vkCmdResetQueryPool +GLAD_API_CALL PFN_vkCmdResolveImage glad_vkCmdResolveImage; +#define vkCmdResolveImage glad_vkCmdResolveImage +GLAD_API_CALL PFN_vkCmdResolveImage2 glad_vkCmdResolveImage2; +#define vkCmdResolveImage2 glad_vkCmdResolveImage2 +GLAD_API_CALL PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants; +#define vkCmdSetBlendConstants glad_vkCmdSetBlendConstants +GLAD_API_CALL PFN_vkCmdSetCullMode glad_vkCmdSetCullMode; +#define vkCmdSetCullMode glad_vkCmdSetCullMode +GLAD_API_CALL PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias; +#define vkCmdSetDepthBias glad_vkCmdSetDepthBias +GLAD_API_CALL PFN_vkCmdSetDepthBiasEnable glad_vkCmdSetDepthBiasEnable; +#define vkCmdSetDepthBiasEnable glad_vkCmdSetDepthBiasEnable +GLAD_API_CALL PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds; +#define vkCmdSetDepthBounds glad_vkCmdSetDepthBounds +GLAD_API_CALL PFN_vkCmdSetDepthBoundsTestEnable glad_vkCmdSetDepthBoundsTestEnable; +#define vkCmdSetDepthBoundsTestEnable glad_vkCmdSetDepthBoundsTestEnable +GLAD_API_CALL PFN_vkCmdSetDepthCompareOp glad_vkCmdSetDepthCompareOp; +#define vkCmdSetDepthCompareOp glad_vkCmdSetDepthCompareOp +GLAD_API_CALL PFN_vkCmdSetDepthTestEnable glad_vkCmdSetDepthTestEnable; +#define vkCmdSetDepthTestEnable glad_vkCmdSetDepthTestEnable +GLAD_API_CALL PFN_vkCmdSetDepthWriteEnable glad_vkCmdSetDepthWriteEnable; +#define vkCmdSetDepthWriteEnable glad_vkCmdSetDepthWriteEnable +GLAD_API_CALL PFN_vkCmdSetDeviceMask glad_vkCmdSetDeviceMask; +#define vkCmdSetDeviceMask glad_vkCmdSetDeviceMask +GLAD_API_CALL PFN_vkCmdSetEvent glad_vkCmdSetEvent; +#define vkCmdSetEvent glad_vkCmdSetEvent +GLAD_API_CALL PFN_vkCmdSetEvent2 glad_vkCmdSetEvent2; +#define vkCmdSetEvent2 glad_vkCmdSetEvent2 +GLAD_API_CALL PFN_vkCmdSetFrontFace glad_vkCmdSetFrontFace; +#define vkCmdSetFrontFace glad_vkCmdSetFrontFace +GLAD_API_CALL PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth; +#define vkCmdSetLineWidth glad_vkCmdSetLineWidth +GLAD_API_CALL PFN_vkCmdSetPrimitiveRestartEnable glad_vkCmdSetPrimitiveRestartEnable; +#define vkCmdSetPrimitiveRestartEnable glad_vkCmdSetPrimitiveRestartEnable +GLAD_API_CALL PFN_vkCmdSetPrimitiveTopology glad_vkCmdSetPrimitiveTopology; +#define vkCmdSetPrimitiveTopology glad_vkCmdSetPrimitiveTopology +GLAD_API_CALL PFN_vkCmdSetRasterizerDiscardEnable glad_vkCmdSetRasterizerDiscardEnable; +#define vkCmdSetRasterizerDiscardEnable glad_vkCmdSetRasterizerDiscardEnable +GLAD_API_CALL PFN_vkCmdSetScissor glad_vkCmdSetScissor; +#define vkCmdSetScissor glad_vkCmdSetScissor +GLAD_API_CALL PFN_vkCmdSetScissorWithCount glad_vkCmdSetScissorWithCount; +#define vkCmdSetScissorWithCount glad_vkCmdSetScissorWithCount +GLAD_API_CALL PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask; +#define vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask +GLAD_API_CALL PFN_vkCmdSetStencilOp glad_vkCmdSetStencilOp; +#define vkCmdSetStencilOp glad_vkCmdSetStencilOp +GLAD_API_CALL PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference; +#define vkCmdSetStencilReference glad_vkCmdSetStencilReference +GLAD_API_CALL PFN_vkCmdSetStencilTestEnable glad_vkCmdSetStencilTestEnable; +#define vkCmdSetStencilTestEnable glad_vkCmdSetStencilTestEnable +GLAD_API_CALL PFN_vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask; +#define vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask +GLAD_API_CALL PFN_vkCmdSetViewport glad_vkCmdSetViewport; +#define vkCmdSetViewport glad_vkCmdSetViewport +GLAD_API_CALL PFN_vkCmdSetViewportWithCount glad_vkCmdSetViewportWithCount; +#define vkCmdSetViewportWithCount glad_vkCmdSetViewportWithCount +GLAD_API_CALL PFN_vkCmdUpdateBuffer glad_vkCmdUpdateBuffer; +#define vkCmdUpdateBuffer glad_vkCmdUpdateBuffer +GLAD_API_CALL PFN_vkCmdWaitEvents glad_vkCmdWaitEvents; +#define vkCmdWaitEvents glad_vkCmdWaitEvents +GLAD_API_CALL PFN_vkCmdWaitEvents2 glad_vkCmdWaitEvents2; +#define vkCmdWaitEvents2 glad_vkCmdWaitEvents2 +GLAD_API_CALL PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp; +#define vkCmdWriteTimestamp glad_vkCmdWriteTimestamp +GLAD_API_CALL PFN_vkCmdWriteTimestamp2 glad_vkCmdWriteTimestamp2; +#define vkCmdWriteTimestamp2 glad_vkCmdWriteTimestamp2 +GLAD_API_CALL PFN_vkCreateBuffer glad_vkCreateBuffer; +#define vkCreateBuffer glad_vkCreateBuffer +GLAD_API_CALL PFN_vkCreateBufferView glad_vkCreateBufferView; +#define vkCreateBufferView glad_vkCreateBufferView +GLAD_API_CALL PFN_vkCreateCommandPool glad_vkCreateCommandPool; +#define vkCreateCommandPool glad_vkCreateCommandPool +GLAD_API_CALL PFN_vkCreateComputePipelines glad_vkCreateComputePipelines; +#define vkCreateComputePipelines glad_vkCreateComputePipelines +GLAD_API_CALL PFN_vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT; +#define vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT +GLAD_API_CALL PFN_vkCreateDescriptorPool glad_vkCreateDescriptorPool; +#define vkCreateDescriptorPool glad_vkCreateDescriptorPool +GLAD_API_CALL PFN_vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout; +#define vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout +GLAD_API_CALL PFN_vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate; +#define vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate +GLAD_API_CALL PFN_vkCreateDevice glad_vkCreateDevice; +#define vkCreateDevice glad_vkCreateDevice +GLAD_API_CALL PFN_vkCreateEvent glad_vkCreateEvent; +#define vkCreateEvent glad_vkCreateEvent +GLAD_API_CALL PFN_vkCreateFence glad_vkCreateFence; +#define vkCreateFence glad_vkCreateFence +GLAD_API_CALL PFN_vkCreateFramebuffer glad_vkCreateFramebuffer; +#define vkCreateFramebuffer glad_vkCreateFramebuffer +GLAD_API_CALL PFN_vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines; +#define vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines +GLAD_API_CALL PFN_vkCreateImage glad_vkCreateImage; +#define vkCreateImage glad_vkCreateImage +GLAD_API_CALL PFN_vkCreateImageView glad_vkCreateImageView; +#define vkCreateImageView glad_vkCreateImageView +GLAD_API_CALL PFN_vkCreateInstance glad_vkCreateInstance; +#define vkCreateInstance glad_vkCreateInstance +GLAD_API_CALL PFN_vkCreatePipelineCache glad_vkCreatePipelineCache; +#define vkCreatePipelineCache glad_vkCreatePipelineCache +GLAD_API_CALL PFN_vkCreatePipelineLayout glad_vkCreatePipelineLayout; +#define vkCreatePipelineLayout glad_vkCreatePipelineLayout +GLAD_API_CALL PFN_vkCreatePrivateDataSlot glad_vkCreatePrivateDataSlot; +#define vkCreatePrivateDataSlot glad_vkCreatePrivateDataSlot +GLAD_API_CALL PFN_vkCreateQueryPool glad_vkCreateQueryPool; +#define vkCreateQueryPool glad_vkCreateQueryPool +GLAD_API_CALL PFN_vkCreateRenderPass glad_vkCreateRenderPass; +#define vkCreateRenderPass glad_vkCreateRenderPass +GLAD_API_CALL PFN_vkCreateRenderPass2 glad_vkCreateRenderPass2; +#define vkCreateRenderPass2 glad_vkCreateRenderPass2 +GLAD_API_CALL PFN_vkCreateSampler glad_vkCreateSampler; +#define vkCreateSampler glad_vkCreateSampler +GLAD_API_CALL PFN_vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion; +#define vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion +GLAD_API_CALL PFN_vkCreateSemaphore glad_vkCreateSemaphore; +#define vkCreateSemaphore glad_vkCreateSemaphore +GLAD_API_CALL PFN_vkCreateShaderModule glad_vkCreateShaderModule; +#define vkCreateShaderModule glad_vkCreateShaderModule +GLAD_API_CALL PFN_vkCreateSwapchainKHR glad_vkCreateSwapchainKHR; +#define vkCreateSwapchainKHR glad_vkCreateSwapchainKHR +GLAD_API_CALL PFN_vkDebugReportMessageEXT glad_vkDebugReportMessageEXT; +#define vkDebugReportMessageEXT glad_vkDebugReportMessageEXT +GLAD_API_CALL PFN_vkDestroyBuffer glad_vkDestroyBuffer; +#define vkDestroyBuffer glad_vkDestroyBuffer +GLAD_API_CALL PFN_vkDestroyBufferView glad_vkDestroyBufferView; +#define vkDestroyBufferView glad_vkDestroyBufferView +GLAD_API_CALL PFN_vkDestroyCommandPool glad_vkDestroyCommandPool; +#define vkDestroyCommandPool glad_vkDestroyCommandPool +GLAD_API_CALL PFN_vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT; +#define vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT +GLAD_API_CALL PFN_vkDestroyDescriptorPool glad_vkDestroyDescriptorPool; +#define vkDestroyDescriptorPool glad_vkDestroyDescriptorPool +GLAD_API_CALL PFN_vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout; +#define vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout +GLAD_API_CALL PFN_vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate; +#define vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate +GLAD_API_CALL PFN_vkDestroyDevice glad_vkDestroyDevice; +#define vkDestroyDevice glad_vkDestroyDevice +GLAD_API_CALL PFN_vkDestroyEvent glad_vkDestroyEvent; +#define vkDestroyEvent glad_vkDestroyEvent +GLAD_API_CALL PFN_vkDestroyFence glad_vkDestroyFence; +#define vkDestroyFence glad_vkDestroyFence +GLAD_API_CALL PFN_vkDestroyFramebuffer glad_vkDestroyFramebuffer; +#define vkDestroyFramebuffer glad_vkDestroyFramebuffer +GLAD_API_CALL PFN_vkDestroyImage glad_vkDestroyImage; +#define vkDestroyImage glad_vkDestroyImage +GLAD_API_CALL PFN_vkDestroyImageView glad_vkDestroyImageView; +#define vkDestroyImageView glad_vkDestroyImageView +GLAD_API_CALL PFN_vkDestroyInstance glad_vkDestroyInstance; +#define vkDestroyInstance glad_vkDestroyInstance +GLAD_API_CALL PFN_vkDestroyPipeline glad_vkDestroyPipeline; +#define vkDestroyPipeline glad_vkDestroyPipeline +GLAD_API_CALL PFN_vkDestroyPipelineCache glad_vkDestroyPipelineCache; +#define vkDestroyPipelineCache glad_vkDestroyPipelineCache +GLAD_API_CALL PFN_vkDestroyPipelineLayout glad_vkDestroyPipelineLayout; +#define vkDestroyPipelineLayout glad_vkDestroyPipelineLayout +GLAD_API_CALL PFN_vkDestroyPrivateDataSlot glad_vkDestroyPrivateDataSlot; +#define vkDestroyPrivateDataSlot glad_vkDestroyPrivateDataSlot +GLAD_API_CALL PFN_vkDestroyQueryPool glad_vkDestroyQueryPool; +#define vkDestroyQueryPool glad_vkDestroyQueryPool +GLAD_API_CALL PFN_vkDestroyRenderPass glad_vkDestroyRenderPass; +#define vkDestroyRenderPass glad_vkDestroyRenderPass +GLAD_API_CALL PFN_vkDestroySampler glad_vkDestroySampler; +#define vkDestroySampler glad_vkDestroySampler +GLAD_API_CALL PFN_vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion; +#define vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion +GLAD_API_CALL PFN_vkDestroySemaphore glad_vkDestroySemaphore; +#define vkDestroySemaphore glad_vkDestroySemaphore +GLAD_API_CALL PFN_vkDestroyShaderModule glad_vkDestroyShaderModule; +#define vkDestroyShaderModule glad_vkDestroyShaderModule +GLAD_API_CALL PFN_vkDestroySurfaceKHR glad_vkDestroySurfaceKHR; +#define vkDestroySurfaceKHR glad_vkDestroySurfaceKHR +GLAD_API_CALL PFN_vkDestroySwapchainKHR glad_vkDestroySwapchainKHR; +#define vkDestroySwapchainKHR glad_vkDestroySwapchainKHR +GLAD_API_CALL PFN_vkDeviceWaitIdle glad_vkDeviceWaitIdle; +#define vkDeviceWaitIdle glad_vkDeviceWaitIdle +GLAD_API_CALL PFN_vkEndCommandBuffer glad_vkEndCommandBuffer; +#define vkEndCommandBuffer glad_vkEndCommandBuffer +GLAD_API_CALL PFN_vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties; +#define vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties +GLAD_API_CALL PFN_vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties; +#define vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties +GLAD_API_CALL PFN_vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties; +#define vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties +GLAD_API_CALL PFN_vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties; +#define vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties +GLAD_API_CALL PFN_vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion; +#define vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion +GLAD_API_CALL PFN_vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups; +#define vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups +GLAD_API_CALL PFN_vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices; +#define vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices +GLAD_API_CALL PFN_vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges; +#define vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges +GLAD_API_CALL PFN_vkFreeCommandBuffers glad_vkFreeCommandBuffers; +#define vkFreeCommandBuffers glad_vkFreeCommandBuffers +GLAD_API_CALL PFN_vkFreeDescriptorSets glad_vkFreeDescriptorSets; +#define vkFreeDescriptorSets glad_vkFreeDescriptorSets +GLAD_API_CALL PFN_vkFreeMemory glad_vkFreeMemory; +#define vkFreeMemory glad_vkFreeMemory +GLAD_API_CALL PFN_vkGetBufferDeviceAddress glad_vkGetBufferDeviceAddress; +#define vkGetBufferDeviceAddress glad_vkGetBufferDeviceAddress +GLAD_API_CALL PFN_vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements; +#define vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements +GLAD_API_CALL PFN_vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2; +#define vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2 +GLAD_API_CALL PFN_vkGetBufferOpaqueCaptureAddress glad_vkGetBufferOpaqueCaptureAddress; +#define vkGetBufferOpaqueCaptureAddress glad_vkGetBufferOpaqueCaptureAddress +GLAD_API_CALL PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport; +#define vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport +GLAD_API_CALL PFN_vkGetDeviceBufferMemoryRequirements glad_vkGetDeviceBufferMemoryRequirements; +#define vkGetDeviceBufferMemoryRequirements glad_vkGetDeviceBufferMemoryRequirements +GLAD_API_CALL PFN_vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures; +#define vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures +GLAD_API_CALL PFN_vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR; +#define vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR +GLAD_API_CALL PFN_vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR; +#define vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR +GLAD_API_CALL PFN_vkGetDeviceImageMemoryRequirements glad_vkGetDeviceImageMemoryRequirements; +#define vkGetDeviceImageMemoryRequirements glad_vkGetDeviceImageMemoryRequirements +GLAD_API_CALL PFN_vkGetDeviceImageSparseMemoryRequirements glad_vkGetDeviceImageSparseMemoryRequirements; +#define vkGetDeviceImageSparseMemoryRequirements glad_vkGetDeviceImageSparseMemoryRequirements +GLAD_API_CALL PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment; +#define vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment +GLAD_API_CALL PFN_vkGetDeviceMemoryOpaqueCaptureAddress glad_vkGetDeviceMemoryOpaqueCaptureAddress; +#define vkGetDeviceMemoryOpaqueCaptureAddress glad_vkGetDeviceMemoryOpaqueCaptureAddress +GLAD_API_CALL PFN_vkGetDeviceProcAddr glad_vkGetDeviceProcAddr; +#define vkGetDeviceProcAddr glad_vkGetDeviceProcAddr +GLAD_API_CALL PFN_vkGetDeviceQueue glad_vkGetDeviceQueue; +#define vkGetDeviceQueue glad_vkGetDeviceQueue +GLAD_API_CALL PFN_vkGetDeviceQueue2 glad_vkGetDeviceQueue2; +#define vkGetDeviceQueue2 glad_vkGetDeviceQueue2 +GLAD_API_CALL PFN_vkGetEventStatus glad_vkGetEventStatus; +#define vkGetEventStatus glad_vkGetEventStatus +GLAD_API_CALL PFN_vkGetFenceStatus glad_vkGetFenceStatus; +#define vkGetFenceStatus glad_vkGetFenceStatus +GLAD_API_CALL PFN_vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements; +#define vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements +GLAD_API_CALL PFN_vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2; +#define vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2 +GLAD_API_CALL PFN_vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements; +#define vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements +GLAD_API_CALL PFN_vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2; +#define vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2 +GLAD_API_CALL PFN_vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout; +#define vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout +GLAD_API_CALL PFN_vkGetInstanceProcAddr glad_vkGetInstanceProcAddr; +#define vkGetInstanceProcAddr glad_vkGetInstanceProcAddr +GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties; +#define vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties; +#define vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties; +#define vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures; +#define vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures +GLAD_API_CALL PFN_vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2; +#define vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2 +GLAD_API_CALL PFN_vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties; +#define vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2; +#define vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2 +GLAD_API_CALL PFN_vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties; +#define vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2; +#define vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2 +GLAD_API_CALL PFN_vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties; +#define vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2; +#define vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2 +GLAD_API_CALL PFN_vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR; +#define vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR +GLAD_API_CALL PFN_vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties; +#define vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2; +#define vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2 +GLAD_API_CALL PFN_vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties; +#define vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2; +#define vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2 +GLAD_API_CALL PFN_vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties; +#define vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties +GLAD_API_CALL PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2; +#define vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2 +GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR; +#define vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR +GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR; +#define vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR +GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR; +#define vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR +GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR; +#define vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR +GLAD_API_CALL PFN_vkGetPhysicalDeviceToolProperties glad_vkGetPhysicalDeviceToolProperties; +#define vkGetPhysicalDeviceToolProperties glad_vkGetPhysicalDeviceToolProperties +GLAD_API_CALL PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData; +#define vkGetPipelineCacheData glad_vkGetPipelineCacheData +GLAD_API_CALL PFN_vkGetPrivateData glad_vkGetPrivateData; +#define vkGetPrivateData glad_vkGetPrivateData +GLAD_API_CALL PFN_vkGetQueryPoolResults glad_vkGetQueryPoolResults; +#define vkGetQueryPoolResults glad_vkGetQueryPoolResults +GLAD_API_CALL PFN_vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity; +#define vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity +GLAD_API_CALL PFN_vkGetSemaphoreCounterValue glad_vkGetSemaphoreCounterValue; +#define vkGetSemaphoreCounterValue glad_vkGetSemaphoreCounterValue +GLAD_API_CALL PFN_vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR; +#define vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR +GLAD_API_CALL PFN_vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges; +#define vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges +GLAD_API_CALL PFN_vkMapMemory glad_vkMapMemory; +#define vkMapMemory glad_vkMapMemory +GLAD_API_CALL PFN_vkMergePipelineCaches glad_vkMergePipelineCaches; +#define vkMergePipelineCaches glad_vkMergePipelineCaches +GLAD_API_CALL PFN_vkQueueBindSparse glad_vkQueueBindSparse; +#define vkQueueBindSparse glad_vkQueueBindSparse +GLAD_API_CALL PFN_vkQueuePresentKHR glad_vkQueuePresentKHR; +#define vkQueuePresentKHR glad_vkQueuePresentKHR +GLAD_API_CALL PFN_vkQueueSubmit glad_vkQueueSubmit; +#define vkQueueSubmit glad_vkQueueSubmit +GLAD_API_CALL PFN_vkQueueSubmit2 glad_vkQueueSubmit2; +#define vkQueueSubmit2 glad_vkQueueSubmit2 +GLAD_API_CALL PFN_vkQueueWaitIdle glad_vkQueueWaitIdle; +#define vkQueueWaitIdle glad_vkQueueWaitIdle +GLAD_API_CALL PFN_vkResetCommandBuffer glad_vkResetCommandBuffer; +#define vkResetCommandBuffer glad_vkResetCommandBuffer +GLAD_API_CALL PFN_vkResetCommandPool glad_vkResetCommandPool; +#define vkResetCommandPool glad_vkResetCommandPool +GLAD_API_CALL PFN_vkResetDescriptorPool glad_vkResetDescriptorPool; +#define vkResetDescriptorPool glad_vkResetDescriptorPool +GLAD_API_CALL PFN_vkResetEvent glad_vkResetEvent; +#define vkResetEvent glad_vkResetEvent +GLAD_API_CALL PFN_vkResetFences glad_vkResetFences; +#define vkResetFences glad_vkResetFences +GLAD_API_CALL PFN_vkResetQueryPool glad_vkResetQueryPool; +#define vkResetQueryPool glad_vkResetQueryPool +GLAD_API_CALL PFN_vkSetEvent glad_vkSetEvent; +#define vkSetEvent glad_vkSetEvent +GLAD_API_CALL PFN_vkSetPrivateData glad_vkSetPrivateData; +#define vkSetPrivateData glad_vkSetPrivateData +GLAD_API_CALL PFN_vkSignalSemaphore glad_vkSignalSemaphore; +#define vkSignalSemaphore glad_vkSignalSemaphore +GLAD_API_CALL PFN_vkTrimCommandPool glad_vkTrimCommandPool; +#define vkTrimCommandPool glad_vkTrimCommandPool +GLAD_API_CALL PFN_vkUnmapMemory glad_vkUnmapMemory; +#define vkUnmapMemory glad_vkUnmapMemory +GLAD_API_CALL PFN_vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate; +#define vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate +GLAD_API_CALL PFN_vkUpdateDescriptorSets glad_vkUpdateDescriptorSets; +#define vkUpdateDescriptorSets glad_vkUpdateDescriptorSets +GLAD_API_CALL PFN_vkWaitForFences glad_vkWaitForFences; +#define vkWaitForFences glad_vkWaitForFences +GLAD_API_CALL PFN_vkWaitSemaphores glad_vkWaitSemaphores; +#define vkWaitSemaphores glad_vkWaitSemaphores + + + + + +GLAD_API_CALL int gladLoadVulkanUserPtr( VkPhysicalDevice physical_device, GLADuserptrloadfunc load, void *userptr); +GLAD_API_CALL int gladLoadVulkan( VkPhysicalDevice physical_device, GLADloadfunc load); + + + +#ifdef __cplusplus +} +#endif +#endif + +/* Source */ +#ifdef GLAD_VULKAN_IMPLEMENTATION +#include +#include +#include + +#ifndef GLAD_IMPL_UTIL_C_ +#define GLAD_IMPL_UTIL_C_ + +#ifdef _MSC_VER +#define GLAD_IMPL_UTIL_SSCANF sscanf_s +#else +#define GLAD_IMPL_UTIL_SSCANF sscanf +#endif + +#endif /* GLAD_IMPL_UTIL_C_ */ + +#ifdef __cplusplus +extern "C" { +#endif + + + +int GLAD_VK_VERSION_1_0 = 0; +int GLAD_VK_VERSION_1_1 = 0; +int GLAD_VK_VERSION_1_2 = 0; +int GLAD_VK_VERSION_1_3 = 0; +int GLAD_VK_EXT_debug_report = 0; +int GLAD_VK_KHR_portability_enumeration = 0; +int GLAD_VK_KHR_surface = 0; +int GLAD_VK_KHR_swapchain = 0; + + + +PFN_vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR = NULL; +PFN_vkAcquireNextImageKHR glad_vkAcquireNextImageKHR = NULL; +PFN_vkAllocateCommandBuffers glad_vkAllocateCommandBuffers = NULL; +PFN_vkAllocateDescriptorSets glad_vkAllocateDescriptorSets = NULL; +PFN_vkAllocateMemory glad_vkAllocateMemory = NULL; +PFN_vkBeginCommandBuffer glad_vkBeginCommandBuffer = NULL; +PFN_vkBindBufferMemory glad_vkBindBufferMemory = NULL; +PFN_vkBindBufferMemory2 glad_vkBindBufferMemory2 = NULL; +PFN_vkBindImageMemory glad_vkBindImageMemory = NULL; +PFN_vkBindImageMemory2 glad_vkBindImageMemory2 = NULL; +PFN_vkCmdBeginQuery glad_vkCmdBeginQuery = NULL; +PFN_vkCmdBeginRenderPass glad_vkCmdBeginRenderPass = NULL; +PFN_vkCmdBeginRenderPass2 glad_vkCmdBeginRenderPass2 = NULL; +PFN_vkCmdBeginRendering glad_vkCmdBeginRendering = NULL; +PFN_vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets = NULL; +PFN_vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer = NULL; +PFN_vkCmdBindPipeline glad_vkCmdBindPipeline = NULL; +PFN_vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers = NULL; +PFN_vkCmdBindVertexBuffers2 glad_vkCmdBindVertexBuffers2 = NULL; +PFN_vkCmdBlitImage glad_vkCmdBlitImage = NULL; +PFN_vkCmdBlitImage2 glad_vkCmdBlitImage2 = NULL; +PFN_vkCmdClearAttachments glad_vkCmdClearAttachments = NULL; +PFN_vkCmdClearColorImage glad_vkCmdClearColorImage = NULL; +PFN_vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage = NULL; +PFN_vkCmdCopyBuffer glad_vkCmdCopyBuffer = NULL; +PFN_vkCmdCopyBuffer2 glad_vkCmdCopyBuffer2 = NULL; +PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage = NULL; +PFN_vkCmdCopyBufferToImage2 glad_vkCmdCopyBufferToImage2 = NULL; +PFN_vkCmdCopyImage glad_vkCmdCopyImage = NULL; +PFN_vkCmdCopyImage2 glad_vkCmdCopyImage2 = NULL; +PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer = NULL; +PFN_vkCmdCopyImageToBuffer2 glad_vkCmdCopyImageToBuffer2 = NULL; +PFN_vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults = NULL; +PFN_vkCmdDispatch glad_vkCmdDispatch = NULL; +PFN_vkCmdDispatchBase glad_vkCmdDispatchBase = NULL; +PFN_vkCmdDispatchIndirect glad_vkCmdDispatchIndirect = NULL; +PFN_vkCmdDraw glad_vkCmdDraw = NULL; +PFN_vkCmdDrawIndexed glad_vkCmdDrawIndexed = NULL; +PFN_vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect = NULL; +PFN_vkCmdDrawIndexedIndirectCount glad_vkCmdDrawIndexedIndirectCount = NULL; +PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect = NULL; +PFN_vkCmdDrawIndirectCount glad_vkCmdDrawIndirectCount = NULL; +PFN_vkCmdEndQuery glad_vkCmdEndQuery = NULL; +PFN_vkCmdEndRenderPass glad_vkCmdEndRenderPass = NULL; +PFN_vkCmdEndRenderPass2 glad_vkCmdEndRenderPass2 = NULL; +PFN_vkCmdEndRendering glad_vkCmdEndRendering = NULL; +PFN_vkCmdExecuteCommands glad_vkCmdExecuteCommands = NULL; +PFN_vkCmdFillBuffer glad_vkCmdFillBuffer = NULL; +PFN_vkCmdNextSubpass glad_vkCmdNextSubpass = NULL; +PFN_vkCmdNextSubpass2 glad_vkCmdNextSubpass2 = NULL; +PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier = NULL; +PFN_vkCmdPipelineBarrier2 glad_vkCmdPipelineBarrier2 = NULL; +PFN_vkCmdPushConstants glad_vkCmdPushConstants = NULL; +PFN_vkCmdResetEvent glad_vkCmdResetEvent = NULL; +PFN_vkCmdResetEvent2 glad_vkCmdResetEvent2 = NULL; +PFN_vkCmdResetQueryPool glad_vkCmdResetQueryPool = NULL; +PFN_vkCmdResolveImage glad_vkCmdResolveImage = NULL; +PFN_vkCmdResolveImage2 glad_vkCmdResolveImage2 = NULL; +PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants = NULL; +PFN_vkCmdSetCullMode glad_vkCmdSetCullMode = NULL; +PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias = NULL; +PFN_vkCmdSetDepthBiasEnable glad_vkCmdSetDepthBiasEnable = NULL; +PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds = NULL; +PFN_vkCmdSetDepthBoundsTestEnable glad_vkCmdSetDepthBoundsTestEnable = NULL; +PFN_vkCmdSetDepthCompareOp glad_vkCmdSetDepthCompareOp = NULL; +PFN_vkCmdSetDepthTestEnable glad_vkCmdSetDepthTestEnable = NULL; +PFN_vkCmdSetDepthWriteEnable glad_vkCmdSetDepthWriteEnable = NULL; +PFN_vkCmdSetDeviceMask glad_vkCmdSetDeviceMask = NULL; +PFN_vkCmdSetEvent glad_vkCmdSetEvent = NULL; +PFN_vkCmdSetEvent2 glad_vkCmdSetEvent2 = NULL; +PFN_vkCmdSetFrontFace glad_vkCmdSetFrontFace = NULL; +PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth = NULL; +PFN_vkCmdSetPrimitiveRestartEnable glad_vkCmdSetPrimitiveRestartEnable = NULL; +PFN_vkCmdSetPrimitiveTopology glad_vkCmdSetPrimitiveTopology = NULL; +PFN_vkCmdSetRasterizerDiscardEnable glad_vkCmdSetRasterizerDiscardEnable = NULL; +PFN_vkCmdSetScissor glad_vkCmdSetScissor = NULL; +PFN_vkCmdSetScissorWithCount glad_vkCmdSetScissorWithCount = NULL; +PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask = NULL; +PFN_vkCmdSetStencilOp glad_vkCmdSetStencilOp = NULL; +PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference = NULL; +PFN_vkCmdSetStencilTestEnable glad_vkCmdSetStencilTestEnable = NULL; +PFN_vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask = NULL; +PFN_vkCmdSetViewport glad_vkCmdSetViewport = NULL; +PFN_vkCmdSetViewportWithCount glad_vkCmdSetViewportWithCount = NULL; +PFN_vkCmdUpdateBuffer glad_vkCmdUpdateBuffer = NULL; +PFN_vkCmdWaitEvents glad_vkCmdWaitEvents = NULL; +PFN_vkCmdWaitEvents2 glad_vkCmdWaitEvents2 = NULL; +PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp = NULL; +PFN_vkCmdWriteTimestamp2 glad_vkCmdWriteTimestamp2 = NULL; +PFN_vkCreateBuffer glad_vkCreateBuffer = NULL; +PFN_vkCreateBufferView glad_vkCreateBufferView = NULL; +PFN_vkCreateCommandPool glad_vkCreateCommandPool = NULL; +PFN_vkCreateComputePipelines glad_vkCreateComputePipelines = NULL; +PFN_vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT = NULL; +PFN_vkCreateDescriptorPool glad_vkCreateDescriptorPool = NULL; +PFN_vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout = NULL; +PFN_vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate = NULL; +PFN_vkCreateDevice glad_vkCreateDevice = NULL; +PFN_vkCreateEvent glad_vkCreateEvent = NULL; +PFN_vkCreateFence glad_vkCreateFence = NULL; +PFN_vkCreateFramebuffer glad_vkCreateFramebuffer = NULL; +PFN_vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines = NULL; +PFN_vkCreateImage glad_vkCreateImage = NULL; +PFN_vkCreateImageView glad_vkCreateImageView = NULL; +PFN_vkCreateInstance glad_vkCreateInstance = NULL; +PFN_vkCreatePipelineCache glad_vkCreatePipelineCache = NULL; +PFN_vkCreatePipelineLayout glad_vkCreatePipelineLayout = NULL; +PFN_vkCreatePrivateDataSlot glad_vkCreatePrivateDataSlot = NULL; +PFN_vkCreateQueryPool glad_vkCreateQueryPool = NULL; +PFN_vkCreateRenderPass glad_vkCreateRenderPass = NULL; +PFN_vkCreateRenderPass2 glad_vkCreateRenderPass2 = NULL; +PFN_vkCreateSampler glad_vkCreateSampler = NULL; +PFN_vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion = NULL; +PFN_vkCreateSemaphore glad_vkCreateSemaphore = NULL; +PFN_vkCreateShaderModule glad_vkCreateShaderModule = NULL; +PFN_vkCreateSwapchainKHR glad_vkCreateSwapchainKHR = NULL; +PFN_vkDebugReportMessageEXT glad_vkDebugReportMessageEXT = NULL; +PFN_vkDestroyBuffer glad_vkDestroyBuffer = NULL; +PFN_vkDestroyBufferView glad_vkDestroyBufferView = NULL; +PFN_vkDestroyCommandPool glad_vkDestroyCommandPool = NULL; +PFN_vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT = NULL; +PFN_vkDestroyDescriptorPool glad_vkDestroyDescriptorPool = NULL; +PFN_vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout = NULL; +PFN_vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate = NULL; +PFN_vkDestroyDevice glad_vkDestroyDevice = NULL; +PFN_vkDestroyEvent glad_vkDestroyEvent = NULL; +PFN_vkDestroyFence glad_vkDestroyFence = NULL; +PFN_vkDestroyFramebuffer glad_vkDestroyFramebuffer = NULL; +PFN_vkDestroyImage glad_vkDestroyImage = NULL; +PFN_vkDestroyImageView glad_vkDestroyImageView = NULL; +PFN_vkDestroyInstance glad_vkDestroyInstance = NULL; +PFN_vkDestroyPipeline glad_vkDestroyPipeline = NULL; +PFN_vkDestroyPipelineCache glad_vkDestroyPipelineCache = NULL; +PFN_vkDestroyPipelineLayout glad_vkDestroyPipelineLayout = NULL; +PFN_vkDestroyPrivateDataSlot glad_vkDestroyPrivateDataSlot = NULL; +PFN_vkDestroyQueryPool glad_vkDestroyQueryPool = NULL; +PFN_vkDestroyRenderPass glad_vkDestroyRenderPass = NULL; +PFN_vkDestroySampler glad_vkDestroySampler = NULL; +PFN_vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion = NULL; +PFN_vkDestroySemaphore glad_vkDestroySemaphore = NULL; +PFN_vkDestroyShaderModule glad_vkDestroyShaderModule = NULL; +PFN_vkDestroySurfaceKHR glad_vkDestroySurfaceKHR = NULL; +PFN_vkDestroySwapchainKHR glad_vkDestroySwapchainKHR = NULL; +PFN_vkDeviceWaitIdle glad_vkDeviceWaitIdle = NULL; +PFN_vkEndCommandBuffer glad_vkEndCommandBuffer = NULL; +PFN_vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties = NULL; +PFN_vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties = NULL; +PFN_vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties = NULL; +PFN_vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties = NULL; +PFN_vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion = NULL; +PFN_vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups = NULL; +PFN_vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices = NULL; +PFN_vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges = NULL; +PFN_vkFreeCommandBuffers glad_vkFreeCommandBuffers = NULL; +PFN_vkFreeDescriptorSets glad_vkFreeDescriptorSets = NULL; +PFN_vkFreeMemory glad_vkFreeMemory = NULL; +PFN_vkGetBufferDeviceAddress glad_vkGetBufferDeviceAddress = NULL; +PFN_vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements = NULL; +PFN_vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2 = NULL; +PFN_vkGetBufferOpaqueCaptureAddress glad_vkGetBufferOpaqueCaptureAddress = NULL; +PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport = NULL; +PFN_vkGetDeviceBufferMemoryRequirements glad_vkGetDeviceBufferMemoryRequirements = NULL; +PFN_vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures = NULL; +PFN_vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR = NULL; +PFN_vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR = NULL; +PFN_vkGetDeviceImageMemoryRequirements glad_vkGetDeviceImageMemoryRequirements = NULL; +PFN_vkGetDeviceImageSparseMemoryRequirements glad_vkGetDeviceImageSparseMemoryRequirements = NULL; +PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment = NULL; +PFN_vkGetDeviceMemoryOpaqueCaptureAddress glad_vkGetDeviceMemoryOpaqueCaptureAddress = NULL; +PFN_vkGetDeviceProcAddr glad_vkGetDeviceProcAddr = NULL; +PFN_vkGetDeviceQueue glad_vkGetDeviceQueue = NULL; +PFN_vkGetDeviceQueue2 glad_vkGetDeviceQueue2 = NULL; +PFN_vkGetEventStatus glad_vkGetEventStatus = NULL; +PFN_vkGetFenceStatus glad_vkGetFenceStatus = NULL; +PFN_vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements = NULL; +PFN_vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2 = NULL; +PFN_vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements = NULL; +PFN_vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2 = NULL; +PFN_vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout = NULL; +PFN_vkGetInstanceProcAddr glad_vkGetInstanceProcAddr = NULL; +PFN_vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties = NULL; +PFN_vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties = NULL; +PFN_vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties = NULL; +PFN_vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures = NULL; +PFN_vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2 = NULL; +PFN_vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties = NULL; +PFN_vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2 = NULL; +PFN_vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties = NULL; +PFN_vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2 = NULL; +PFN_vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties = NULL; +PFN_vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2 = NULL; +PFN_vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR = NULL; +PFN_vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties = NULL; +PFN_vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2 = NULL; +PFN_vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties = NULL; +PFN_vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2 = NULL; +PFN_vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties = NULL; +PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2 = NULL; +PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = NULL; +PFN_vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR = NULL; +PFN_vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR = NULL; +PFN_vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR = NULL; +PFN_vkGetPhysicalDeviceToolProperties glad_vkGetPhysicalDeviceToolProperties = NULL; +PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData = NULL; +PFN_vkGetPrivateData glad_vkGetPrivateData = NULL; +PFN_vkGetQueryPoolResults glad_vkGetQueryPoolResults = NULL; +PFN_vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity = NULL; +PFN_vkGetSemaphoreCounterValue glad_vkGetSemaphoreCounterValue = NULL; +PFN_vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR = NULL; +PFN_vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges = NULL; +PFN_vkMapMemory glad_vkMapMemory = NULL; +PFN_vkMergePipelineCaches glad_vkMergePipelineCaches = NULL; +PFN_vkQueueBindSparse glad_vkQueueBindSparse = NULL; +PFN_vkQueuePresentKHR glad_vkQueuePresentKHR = NULL; +PFN_vkQueueSubmit glad_vkQueueSubmit = NULL; +PFN_vkQueueSubmit2 glad_vkQueueSubmit2 = NULL; +PFN_vkQueueWaitIdle glad_vkQueueWaitIdle = NULL; +PFN_vkResetCommandBuffer glad_vkResetCommandBuffer = NULL; +PFN_vkResetCommandPool glad_vkResetCommandPool = NULL; +PFN_vkResetDescriptorPool glad_vkResetDescriptorPool = NULL; +PFN_vkResetEvent glad_vkResetEvent = NULL; +PFN_vkResetFences glad_vkResetFences = NULL; +PFN_vkResetQueryPool glad_vkResetQueryPool = NULL; +PFN_vkSetEvent glad_vkSetEvent = NULL; +PFN_vkSetPrivateData glad_vkSetPrivateData = NULL; +PFN_vkSignalSemaphore glad_vkSignalSemaphore = NULL; +PFN_vkTrimCommandPool glad_vkTrimCommandPool = NULL; +PFN_vkUnmapMemory glad_vkUnmapMemory = NULL; +PFN_vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate = NULL; +PFN_vkUpdateDescriptorSets glad_vkUpdateDescriptorSets = NULL; +PFN_vkWaitForFences glad_vkWaitForFences = NULL; +PFN_vkWaitSemaphores glad_vkWaitSemaphores = NULL; + + +static void glad_vk_load_VK_VERSION_1_0( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_VK_VERSION_1_0) return; + glad_vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers) load(userptr, "vkAllocateCommandBuffers"); + glad_vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets) load(userptr, "vkAllocateDescriptorSets"); + glad_vkAllocateMemory = (PFN_vkAllocateMemory) load(userptr, "vkAllocateMemory"); + glad_vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer) load(userptr, "vkBeginCommandBuffer"); + glad_vkBindBufferMemory = (PFN_vkBindBufferMemory) load(userptr, "vkBindBufferMemory"); + glad_vkBindImageMemory = (PFN_vkBindImageMemory) load(userptr, "vkBindImageMemory"); + glad_vkCmdBeginQuery = (PFN_vkCmdBeginQuery) load(userptr, "vkCmdBeginQuery"); + glad_vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) load(userptr, "vkCmdBeginRenderPass"); + glad_vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) load(userptr, "vkCmdBindDescriptorSets"); + glad_vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) load(userptr, "vkCmdBindIndexBuffer"); + glad_vkCmdBindPipeline = (PFN_vkCmdBindPipeline) load(userptr, "vkCmdBindPipeline"); + glad_vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) load(userptr, "vkCmdBindVertexBuffers"); + glad_vkCmdBlitImage = (PFN_vkCmdBlitImage) load(userptr, "vkCmdBlitImage"); + glad_vkCmdClearAttachments = (PFN_vkCmdClearAttachments) load(userptr, "vkCmdClearAttachments"); + glad_vkCmdClearColorImage = (PFN_vkCmdClearColorImage) load(userptr, "vkCmdClearColorImage"); + glad_vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage) load(userptr, "vkCmdClearDepthStencilImage"); + glad_vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer) load(userptr, "vkCmdCopyBuffer"); + glad_vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage) load(userptr, "vkCmdCopyBufferToImage"); + glad_vkCmdCopyImage = (PFN_vkCmdCopyImage) load(userptr, "vkCmdCopyImage"); + glad_vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer) load(userptr, "vkCmdCopyImageToBuffer"); + glad_vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) load(userptr, "vkCmdCopyQueryPoolResults"); + glad_vkCmdDispatch = (PFN_vkCmdDispatch) load(userptr, "vkCmdDispatch"); + glad_vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect) load(userptr, "vkCmdDispatchIndirect"); + glad_vkCmdDraw = (PFN_vkCmdDraw) load(userptr, "vkCmdDraw"); + glad_vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed) load(userptr, "vkCmdDrawIndexed"); + glad_vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect) load(userptr, "vkCmdDrawIndexedIndirect"); + glad_vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect) load(userptr, "vkCmdDrawIndirect"); + glad_vkCmdEndQuery = (PFN_vkCmdEndQuery) load(userptr, "vkCmdEndQuery"); + glad_vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass) load(userptr, "vkCmdEndRenderPass"); + glad_vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands) load(userptr, "vkCmdExecuteCommands"); + glad_vkCmdFillBuffer = (PFN_vkCmdFillBuffer) load(userptr, "vkCmdFillBuffer"); + glad_vkCmdNextSubpass = (PFN_vkCmdNextSubpass) load(userptr, "vkCmdNextSubpass"); + glad_vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier) load(userptr, "vkCmdPipelineBarrier"); + glad_vkCmdPushConstants = (PFN_vkCmdPushConstants) load(userptr, "vkCmdPushConstants"); + glad_vkCmdResetEvent = (PFN_vkCmdResetEvent) load(userptr, "vkCmdResetEvent"); + glad_vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool) load(userptr, "vkCmdResetQueryPool"); + glad_vkCmdResolveImage = (PFN_vkCmdResolveImage) load(userptr, "vkCmdResolveImage"); + glad_vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants) load(userptr, "vkCmdSetBlendConstants"); + glad_vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias) load(userptr, "vkCmdSetDepthBias"); + glad_vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds) load(userptr, "vkCmdSetDepthBounds"); + glad_vkCmdSetEvent = (PFN_vkCmdSetEvent) load(userptr, "vkCmdSetEvent"); + glad_vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth) load(userptr, "vkCmdSetLineWidth"); + glad_vkCmdSetScissor = (PFN_vkCmdSetScissor) load(userptr, "vkCmdSetScissor"); + glad_vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask) load(userptr, "vkCmdSetStencilCompareMask"); + glad_vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference) load(userptr, "vkCmdSetStencilReference"); + glad_vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask) load(userptr, "vkCmdSetStencilWriteMask"); + glad_vkCmdSetViewport = (PFN_vkCmdSetViewport) load(userptr, "vkCmdSetViewport"); + glad_vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) load(userptr, "vkCmdUpdateBuffer"); + glad_vkCmdWaitEvents = (PFN_vkCmdWaitEvents) load(userptr, "vkCmdWaitEvents"); + glad_vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) load(userptr, "vkCmdWriteTimestamp"); + glad_vkCreateBuffer = (PFN_vkCreateBuffer) load(userptr, "vkCreateBuffer"); + glad_vkCreateBufferView = (PFN_vkCreateBufferView) load(userptr, "vkCreateBufferView"); + glad_vkCreateCommandPool = (PFN_vkCreateCommandPool) load(userptr, "vkCreateCommandPool"); + glad_vkCreateComputePipelines = (PFN_vkCreateComputePipelines) load(userptr, "vkCreateComputePipelines"); + glad_vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool) load(userptr, "vkCreateDescriptorPool"); + glad_vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) load(userptr, "vkCreateDescriptorSetLayout"); + glad_vkCreateDevice = (PFN_vkCreateDevice) load(userptr, "vkCreateDevice"); + glad_vkCreateEvent = (PFN_vkCreateEvent) load(userptr, "vkCreateEvent"); + glad_vkCreateFence = (PFN_vkCreateFence) load(userptr, "vkCreateFence"); + glad_vkCreateFramebuffer = (PFN_vkCreateFramebuffer) load(userptr, "vkCreateFramebuffer"); + glad_vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines) load(userptr, "vkCreateGraphicsPipelines"); + glad_vkCreateImage = (PFN_vkCreateImage) load(userptr, "vkCreateImage"); + glad_vkCreateImageView = (PFN_vkCreateImageView) load(userptr, "vkCreateImageView"); + glad_vkCreateInstance = (PFN_vkCreateInstance) load(userptr, "vkCreateInstance"); + glad_vkCreatePipelineCache = (PFN_vkCreatePipelineCache) load(userptr, "vkCreatePipelineCache"); + glad_vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout) load(userptr, "vkCreatePipelineLayout"); + glad_vkCreateQueryPool = (PFN_vkCreateQueryPool) load(userptr, "vkCreateQueryPool"); + glad_vkCreateRenderPass = (PFN_vkCreateRenderPass) load(userptr, "vkCreateRenderPass"); + glad_vkCreateSampler = (PFN_vkCreateSampler) load(userptr, "vkCreateSampler"); + glad_vkCreateSemaphore = (PFN_vkCreateSemaphore) load(userptr, "vkCreateSemaphore"); + glad_vkCreateShaderModule = (PFN_vkCreateShaderModule) load(userptr, "vkCreateShaderModule"); + glad_vkDestroyBuffer = (PFN_vkDestroyBuffer) load(userptr, "vkDestroyBuffer"); + glad_vkDestroyBufferView = (PFN_vkDestroyBufferView) load(userptr, "vkDestroyBufferView"); + glad_vkDestroyCommandPool = (PFN_vkDestroyCommandPool) load(userptr, "vkDestroyCommandPool"); + glad_vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool) load(userptr, "vkDestroyDescriptorPool"); + glad_vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout) load(userptr, "vkDestroyDescriptorSetLayout"); + glad_vkDestroyDevice = (PFN_vkDestroyDevice) load(userptr, "vkDestroyDevice"); + glad_vkDestroyEvent = (PFN_vkDestroyEvent) load(userptr, "vkDestroyEvent"); + glad_vkDestroyFence = (PFN_vkDestroyFence) load(userptr, "vkDestroyFence"); + glad_vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer) load(userptr, "vkDestroyFramebuffer"); + glad_vkDestroyImage = (PFN_vkDestroyImage) load(userptr, "vkDestroyImage"); + glad_vkDestroyImageView = (PFN_vkDestroyImageView) load(userptr, "vkDestroyImageView"); + glad_vkDestroyInstance = (PFN_vkDestroyInstance) load(userptr, "vkDestroyInstance"); + glad_vkDestroyPipeline = (PFN_vkDestroyPipeline) load(userptr, "vkDestroyPipeline"); + glad_vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache) load(userptr, "vkDestroyPipelineCache"); + glad_vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout) load(userptr, "vkDestroyPipelineLayout"); + glad_vkDestroyQueryPool = (PFN_vkDestroyQueryPool) load(userptr, "vkDestroyQueryPool"); + glad_vkDestroyRenderPass = (PFN_vkDestroyRenderPass) load(userptr, "vkDestroyRenderPass"); + glad_vkDestroySampler = (PFN_vkDestroySampler) load(userptr, "vkDestroySampler"); + glad_vkDestroySemaphore = (PFN_vkDestroySemaphore) load(userptr, "vkDestroySemaphore"); + glad_vkDestroyShaderModule = (PFN_vkDestroyShaderModule) load(userptr, "vkDestroyShaderModule"); + glad_vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle) load(userptr, "vkDeviceWaitIdle"); + glad_vkEndCommandBuffer = (PFN_vkEndCommandBuffer) load(userptr, "vkEndCommandBuffer"); + glad_vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties) load(userptr, "vkEnumerateDeviceExtensionProperties"); + glad_vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties) load(userptr, "vkEnumerateDeviceLayerProperties"); + glad_vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties) load(userptr, "vkEnumerateInstanceExtensionProperties"); + glad_vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties) load(userptr, "vkEnumerateInstanceLayerProperties"); + glad_vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) load(userptr, "vkEnumeratePhysicalDevices"); + glad_vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) load(userptr, "vkFlushMappedMemoryRanges"); + glad_vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers) load(userptr, "vkFreeCommandBuffers"); + glad_vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets) load(userptr, "vkFreeDescriptorSets"); + glad_vkFreeMemory = (PFN_vkFreeMemory) load(userptr, "vkFreeMemory"); + glad_vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements) load(userptr, "vkGetBufferMemoryRequirements"); + glad_vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment) load(userptr, "vkGetDeviceMemoryCommitment"); + glad_vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr) load(userptr, "vkGetDeviceProcAddr"); + glad_vkGetDeviceQueue = (PFN_vkGetDeviceQueue) load(userptr, "vkGetDeviceQueue"); + glad_vkGetEventStatus = (PFN_vkGetEventStatus) load(userptr, "vkGetEventStatus"); + glad_vkGetFenceStatus = (PFN_vkGetFenceStatus) load(userptr, "vkGetFenceStatus"); + glad_vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements) load(userptr, "vkGetImageMemoryRequirements"); + glad_vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements) load(userptr, "vkGetImageSparseMemoryRequirements"); + glad_vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout) load(userptr, "vkGetImageSubresourceLayout"); + glad_vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr) load(userptr, "vkGetInstanceProcAddr"); + glad_vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures) load(userptr, "vkGetPhysicalDeviceFeatures"); + glad_vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties) load(userptr, "vkGetPhysicalDeviceFormatProperties"); + glad_vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties) load(userptr, "vkGetPhysicalDeviceImageFormatProperties"); + glad_vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties) load(userptr, "vkGetPhysicalDeviceMemoryProperties"); + glad_vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties) load(userptr, "vkGetPhysicalDeviceProperties"); + glad_vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties) load(userptr, "vkGetPhysicalDeviceQueueFamilyProperties"); + glad_vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties) load(userptr, "vkGetPhysicalDeviceSparseImageFormatProperties"); + glad_vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData) load(userptr, "vkGetPipelineCacheData"); + glad_vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults) load(userptr, "vkGetQueryPoolResults"); + glad_vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity) load(userptr, "vkGetRenderAreaGranularity"); + glad_vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) load(userptr, "vkInvalidateMappedMemoryRanges"); + glad_vkMapMemory = (PFN_vkMapMemory) load(userptr, "vkMapMemory"); + glad_vkMergePipelineCaches = (PFN_vkMergePipelineCaches) load(userptr, "vkMergePipelineCaches"); + glad_vkQueueBindSparse = (PFN_vkQueueBindSparse) load(userptr, "vkQueueBindSparse"); + glad_vkQueueSubmit = (PFN_vkQueueSubmit) load(userptr, "vkQueueSubmit"); + glad_vkQueueWaitIdle = (PFN_vkQueueWaitIdle) load(userptr, "vkQueueWaitIdle"); + glad_vkResetCommandBuffer = (PFN_vkResetCommandBuffer) load(userptr, "vkResetCommandBuffer"); + glad_vkResetCommandPool = (PFN_vkResetCommandPool) load(userptr, "vkResetCommandPool"); + glad_vkResetDescriptorPool = (PFN_vkResetDescriptorPool) load(userptr, "vkResetDescriptorPool"); + glad_vkResetEvent = (PFN_vkResetEvent) load(userptr, "vkResetEvent"); + glad_vkResetFences = (PFN_vkResetFences) load(userptr, "vkResetFences"); + glad_vkSetEvent = (PFN_vkSetEvent) load(userptr, "vkSetEvent"); + glad_vkUnmapMemory = (PFN_vkUnmapMemory) load(userptr, "vkUnmapMemory"); + glad_vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) load(userptr, "vkUpdateDescriptorSets"); + glad_vkWaitForFences = (PFN_vkWaitForFences) load(userptr, "vkWaitForFences"); +} +static void glad_vk_load_VK_VERSION_1_1( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_VK_VERSION_1_1) return; + glad_vkBindBufferMemory2 = (PFN_vkBindBufferMemory2) load(userptr, "vkBindBufferMemory2"); + glad_vkBindImageMemory2 = (PFN_vkBindImageMemory2) load(userptr, "vkBindImageMemory2"); + glad_vkCmdDispatchBase = (PFN_vkCmdDispatchBase) load(userptr, "vkCmdDispatchBase"); + glad_vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask) load(userptr, "vkCmdSetDeviceMask"); + glad_vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate) load(userptr, "vkCreateDescriptorUpdateTemplate"); + glad_vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion) load(userptr, "vkCreateSamplerYcbcrConversion"); + glad_vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate) load(userptr, "vkDestroyDescriptorUpdateTemplate"); + glad_vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion) load(userptr, "vkDestroySamplerYcbcrConversion"); + glad_vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load(userptr, "vkEnumerateInstanceVersion"); + glad_vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups) load(userptr, "vkEnumeratePhysicalDeviceGroups"); + glad_vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2) load(userptr, "vkGetBufferMemoryRequirements2"); + glad_vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport) load(userptr, "vkGetDescriptorSetLayoutSupport"); + glad_vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures) load(userptr, "vkGetDeviceGroupPeerMemoryFeatures"); + glad_vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2) load(userptr, "vkGetDeviceQueue2"); + glad_vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2) load(userptr, "vkGetImageMemoryRequirements2"); + glad_vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2) load(userptr, "vkGetImageSparseMemoryRequirements2"); + glad_vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties) load(userptr, "vkGetPhysicalDeviceExternalBufferProperties"); + glad_vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties) load(userptr, "vkGetPhysicalDeviceExternalFenceProperties"); + glad_vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties) load(userptr, "vkGetPhysicalDeviceExternalSemaphoreProperties"); + glad_vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2) load(userptr, "vkGetPhysicalDeviceFeatures2"); + glad_vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2) load(userptr, "vkGetPhysicalDeviceFormatProperties2"); + glad_vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2) load(userptr, "vkGetPhysicalDeviceImageFormatProperties2"); + glad_vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2) load(userptr, "vkGetPhysicalDeviceMemoryProperties2"); + glad_vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2) load(userptr, "vkGetPhysicalDeviceProperties2"); + glad_vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2) load(userptr, "vkGetPhysicalDeviceQueueFamilyProperties2"); + glad_vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2) load(userptr, "vkGetPhysicalDeviceSparseImageFormatProperties2"); + glad_vkTrimCommandPool = (PFN_vkTrimCommandPool) load(userptr, "vkTrimCommandPool"); + glad_vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate) load(userptr, "vkUpdateDescriptorSetWithTemplate"); +} +static void glad_vk_load_VK_VERSION_1_2( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_VK_VERSION_1_2) return; + glad_vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2) load(userptr, "vkCmdBeginRenderPass2"); + glad_vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount) load(userptr, "vkCmdDrawIndexedIndirectCount"); + glad_vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount) load(userptr, "vkCmdDrawIndirectCount"); + glad_vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2) load(userptr, "vkCmdEndRenderPass2"); + glad_vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2) load(userptr, "vkCmdNextSubpass2"); + glad_vkCreateRenderPass2 = (PFN_vkCreateRenderPass2) load(userptr, "vkCreateRenderPass2"); + glad_vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress) load(userptr, "vkGetBufferDeviceAddress"); + glad_vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress) load(userptr, "vkGetBufferOpaqueCaptureAddress"); + glad_vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress) load(userptr, "vkGetDeviceMemoryOpaqueCaptureAddress"); + glad_vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue) load(userptr, "vkGetSemaphoreCounterValue"); + glad_vkResetQueryPool = (PFN_vkResetQueryPool) load(userptr, "vkResetQueryPool"); + glad_vkSignalSemaphore = (PFN_vkSignalSemaphore) load(userptr, "vkSignalSemaphore"); + glad_vkWaitSemaphores = (PFN_vkWaitSemaphores) load(userptr, "vkWaitSemaphores"); +} +static void glad_vk_load_VK_VERSION_1_3( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_VK_VERSION_1_3) return; + glad_vkCmdBeginRendering = (PFN_vkCmdBeginRendering) load(userptr, "vkCmdBeginRendering"); + glad_vkCmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2) load(userptr, "vkCmdBindVertexBuffers2"); + glad_vkCmdBlitImage2 = (PFN_vkCmdBlitImage2) load(userptr, "vkCmdBlitImage2"); + glad_vkCmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2) load(userptr, "vkCmdCopyBuffer2"); + glad_vkCmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2) load(userptr, "vkCmdCopyBufferToImage2"); + glad_vkCmdCopyImage2 = (PFN_vkCmdCopyImage2) load(userptr, "vkCmdCopyImage2"); + glad_vkCmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2) load(userptr, "vkCmdCopyImageToBuffer2"); + glad_vkCmdEndRendering = (PFN_vkCmdEndRendering) load(userptr, "vkCmdEndRendering"); + glad_vkCmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2) load(userptr, "vkCmdPipelineBarrier2"); + glad_vkCmdResetEvent2 = (PFN_vkCmdResetEvent2) load(userptr, "vkCmdResetEvent2"); + glad_vkCmdResolveImage2 = (PFN_vkCmdResolveImage2) load(userptr, "vkCmdResolveImage2"); + glad_vkCmdSetCullMode = (PFN_vkCmdSetCullMode) load(userptr, "vkCmdSetCullMode"); + glad_vkCmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable) load(userptr, "vkCmdSetDepthBiasEnable"); + glad_vkCmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable) load(userptr, "vkCmdSetDepthBoundsTestEnable"); + glad_vkCmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp) load(userptr, "vkCmdSetDepthCompareOp"); + glad_vkCmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable) load(userptr, "vkCmdSetDepthTestEnable"); + glad_vkCmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable) load(userptr, "vkCmdSetDepthWriteEnable"); + glad_vkCmdSetEvent2 = (PFN_vkCmdSetEvent2) load(userptr, "vkCmdSetEvent2"); + glad_vkCmdSetFrontFace = (PFN_vkCmdSetFrontFace) load(userptr, "vkCmdSetFrontFace"); + glad_vkCmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable) load(userptr, "vkCmdSetPrimitiveRestartEnable"); + glad_vkCmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology) load(userptr, "vkCmdSetPrimitiveTopology"); + glad_vkCmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable) load(userptr, "vkCmdSetRasterizerDiscardEnable"); + glad_vkCmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount) load(userptr, "vkCmdSetScissorWithCount"); + glad_vkCmdSetStencilOp = (PFN_vkCmdSetStencilOp) load(userptr, "vkCmdSetStencilOp"); + glad_vkCmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable) load(userptr, "vkCmdSetStencilTestEnable"); + glad_vkCmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount) load(userptr, "vkCmdSetViewportWithCount"); + glad_vkCmdWaitEvents2 = (PFN_vkCmdWaitEvents2) load(userptr, "vkCmdWaitEvents2"); + glad_vkCmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2) load(userptr, "vkCmdWriteTimestamp2"); + glad_vkCreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot) load(userptr, "vkCreatePrivateDataSlot"); + glad_vkDestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot) load(userptr, "vkDestroyPrivateDataSlot"); + glad_vkGetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements) load(userptr, "vkGetDeviceBufferMemoryRequirements"); + glad_vkGetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements) load(userptr, "vkGetDeviceImageMemoryRequirements"); + glad_vkGetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements) load(userptr, "vkGetDeviceImageSparseMemoryRequirements"); + glad_vkGetPhysicalDeviceToolProperties = (PFN_vkGetPhysicalDeviceToolProperties) load(userptr, "vkGetPhysicalDeviceToolProperties"); + glad_vkGetPrivateData = (PFN_vkGetPrivateData) load(userptr, "vkGetPrivateData"); + glad_vkQueueSubmit2 = (PFN_vkQueueSubmit2) load(userptr, "vkQueueSubmit2"); + glad_vkSetPrivateData = (PFN_vkSetPrivateData) load(userptr, "vkSetPrivateData"); +} +static void glad_vk_load_VK_EXT_debug_report( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_VK_EXT_debug_report) return; + glad_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT) load(userptr, "vkCreateDebugReportCallbackEXT"); + glad_vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT) load(userptr, "vkDebugReportMessageEXT"); + glad_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT) load(userptr, "vkDestroyDebugReportCallbackEXT"); +} +static void glad_vk_load_VK_KHR_surface( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_VK_KHR_surface) return; + glad_vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR) load(userptr, "vkDestroySurfaceKHR"); + glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) load(userptr, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); + glad_vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) load(userptr, "vkGetPhysicalDeviceSurfaceFormatsKHR"); + glad_vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) load(userptr, "vkGetPhysicalDeviceSurfacePresentModesKHR"); + glad_vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) load(userptr, "vkGetPhysicalDeviceSurfaceSupportKHR"); +} +static void glad_vk_load_VK_KHR_swapchain( GLADuserptrloadfunc load, void* userptr) { + if(!GLAD_VK_KHR_swapchain) return; + glad_vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR) load(userptr, "vkAcquireNextImage2KHR"); + glad_vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) load(userptr, "vkAcquireNextImageKHR"); + glad_vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) load(userptr, "vkCreateSwapchainKHR"); + glad_vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) load(userptr, "vkDestroySwapchainKHR"); + glad_vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR) load(userptr, "vkGetDeviceGroupPresentCapabilitiesKHR"); + glad_vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR) load(userptr, "vkGetDeviceGroupSurfacePresentModesKHR"); + glad_vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR) load(userptr, "vkGetPhysicalDevicePresentRectanglesKHR"); + glad_vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) load(userptr, "vkGetSwapchainImagesKHR"); + glad_vkQueuePresentKHR = (PFN_vkQueuePresentKHR) load(userptr, "vkQueuePresentKHR"); +} + + + +static int glad_vk_get_extensions( VkPhysicalDevice physical_device, uint32_t *out_extension_count, char ***out_extensions) { + uint32_t i; + uint32_t instance_extension_count = 0; + uint32_t device_extension_count = 0; + uint32_t max_extension_count = 0; + uint32_t total_extension_count = 0; + char **extensions = NULL; + VkExtensionProperties *ext_properties = NULL; + VkResult result; + + if (glad_vkEnumerateInstanceExtensionProperties == NULL || (physical_device != NULL && glad_vkEnumerateDeviceExtensionProperties == NULL)) { + return 0; + } + + result = glad_vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, NULL); + if (result != VK_SUCCESS) { + return 0; + } + + if (physical_device != NULL) { + result = glad_vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, NULL); + if (result != VK_SUCCESS) { + return 0; + } + } + + total_extension_count = instance_extension_count + device_extension_count; + if (total_extension_count <= 0) { + return 0; + } + + max_extension_count = instance_extension_count > device_extension_count + ? instance_extension_count : device_extension_count; + + ext_properties = (VkExtensionProperties*) malloc(max_extension_count * sizeof(VkExtensionProperties)); + if (ext_properties == NULL) { + goto glad_vk_get_extensions_error; + } + + result = glad_vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, ext_properties); + if (result != VK_SUCCESS) { + goto glad_vk_get_extensions_error; + } + + extensions = (char**) calloc(total_extension_count, sizeof(char*)); + if (extensions == NULL) { + goto glad_vk_get_extensions_error; + } + + for (i = 0; i < instance_extension_count; ++i) { + VkExtensionProperties ext = ext_properties[i]; + + size_t extension_name_length = strlen(ext.extensionName) + 1; + extensions[i] = (char*) malloc(extension_name_length * sizeof(char)); + if (extensions[i] == NULL) { + goto glad_vk_get_extensions_error; + } + memcpy(extensions[i], ext.extensionName, extension_name_length * sizeof(char)); + } + + if (physical_device != NULL) { + result = glad_vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, ext_properties); + if (result != VK_SUCCESS) { + goto glad_vk_get_extensions_error; + } + + for (i = 0; i < device_extension_count; ++i) { + VkExtensionProperties ext = ext_properties[i]; + + size_t extension_name_length = strlen(ext.extensionName) + 1; + extensions[instance_extension_count + i] = (char*) malloc(extension_name_length * sizeof(char)); + if (extensions[instance_extension_count + i] == NULL) { + goto glad_vk_get_extensions_error; + } + memcpy(extensions[instance_extension_count + i], ext.extensionName, extension_name_length * sizeof(char)); + } + } + + free((void*) ext_properties); + + *out_extension_count = total_extension_count; + *out_extensions = extensions; + + return 1; + +glad_vk_get_extensions_error: + free((void*) ext_properties); + if (extensions != NULL) { + for (i = 0; i < total_extension_count; ++i) { + free((void*) extensions[i]); + } + free(extensions); + } + return 0; +} + +static void glad_vk_free_extensions(uint32_t extension_count, char **extensions) { + uint32_t i; + + for(i = 0; i < extension_count ; ++i) { + free((void*) (extensions[i])); + } + + free((void*) extensions); +} + +static int glad_vk_has_extension(const char *name, uint32_t extension_count, char **extensions) { + uint32_t i; + + for (i = 0; i < extension_count; ++i) { + if(extensions[i] != NULL && strcmp(name, extensions[i]) == 0) { + return 1; + } + } + + return 0; +} + +static GLADapiproc glad_vk_get_proc_from_userptr(void *userptr, const char* name) { + return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name); +} + +static int glad_vk_find_extensions_vulkan( VkPhysicalDevice physical_device) { + uint32_t extension_count = 0; + char **extensions = NULL; + if (!glad_vk_get_extensions(physical_device, &extension_count, &extensions)) return 0; + + GLAD_VK_EXT_debug_report = glad_vk_has_extension("VK_EXT_debug_report", extension_count, extensions); + GLAD_VK_KHR_portability_enumeration = glad_vk_has_extension("VK_KHR_portability_enumeration", extension_count, extensions); + GLAD_VK_KHR_surface = glad_vk_has_extension("VK_KHR_surface", extension_count, extensions); + GLAD_VK_KHR_swapchain = glad_vk_has_extension("VK_KHR_swapchain", extension_count, extensions); + + (void) glad_vk_has_extension; + + glad_vk_free_extensions(extension_count, extensions); + + return 1; +} + +static int glad_vk_find_core_vulkan( VkPhysicalDevice physical_device) { + int major = 1; + int minor = 0; + +#ifdef VK_VERSION_1_1 + if (glad_vkEnumerateInstanceVersion != NULL) { + uint32_t version; + VkResult result; + + result = glad_vkEnumerateInstanceVersion(&version); + if (result == VK_SUCCESS) { + major = (int) VK_VERSION_MAJOR(version); + minor = (int) VK_VERSION_MINOR(version); + } + } +#endif + + if (physical_device != NULL && glad_vkGetPhysicalDeviceProperties != NULL) { + VkPhysicalDeviceProperties properties; + glad_vkGetPhysicalDeviceProperties(physical_device, &properties); + + major = (int) VK_VERSION_MAJOR(properties.apiVersion); + minor = (int) VK_VERSION_MINOR(properties.apiVersion); + } + + GLAD_VK_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + GLAD_VK_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + GLAD_VK_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + GLAD_VK_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + + return GLAD_MAKE_VERSION(major, minor); +} + +int gladLoadVulkanUserPtr( VkPhysicalDevice physical_device, GLADuserptrloadfunc load, void *userptr) { + int version; + +#ifdef VK_VERSION_1_1 + glad_vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load(userptr, "vkEnumerateInstanceVersion"); +#endif + version = glad_vk_find_core_vulkan( physical_device); + if (!version) { + return 0; + } + + glad_vk_load_VK_VERSION_1_0(load, userptr); + glad_vk_load_VK_VERSION_1_1(load, userptr); + glad_vk_load_VK_VERSION_1_2(load, userptr); + glad_vk_load_VK_VERSION_1_3(load, userptr); + + if (!glad_vk_find_extensions_vulkan( physical_device)) return 0; + glad_vk_load_VK_EXT_debug_report(load, userptr); + glad_vk_load_VK_KHR_surface(load, userptr); + glad_vk_load_VK_KHR_swapchain(load, userptr); + + + return version; +} + + +int gladLoadVulkan( VkPhysicalDevice physical_device, GLADloadfunc load) { + return gladLoadVulkanUserPtr( physical_device, glad_vk_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load); +} + + + + + + +#ifdef __cplusplus +} +#endif + +#endif /* GLAD_VULKAN_IMPLEMENTATION */ + diff --git a/lib/glfw/deps/linmath.h b/lib/glfw/deps/linmath.h new file mode 100644 index 0000000..5c80265 --- /dev/null +++ b/lib/glfw/deps/linmath.h @@ -0,0 +1,606 @@ +#ifndef LINMATH_H +#define LINMATH_H + +#include +#include +#include + +/* 2021-03-21 Camilla Löwy + * - Replaced double constants with float equivalents + */ + +#ifdef LINMATH_NO_INLINE +#define LINMATH_H_FUNC static +#else +#define LINMATH_H_FUNC static inline +#endif + +#define LINMATH_H_DEFINE_VEC(n) \ +typedef float vec##n[n]; \ +LINMATH_H_FUNC void vec##n##_add(vec##n r, vec##n const a, vec##n const b) \ +{ \ + int i; \ + for(i=0; ib[i] ? a[i] : b[i]; \ +} \ +LINMATH_H_FUNC void vec##n##_dup(vec##n r, vec##n const src) \ +{ \ + int i; \ + for(i=0; i 1e-4) { + vec3_norm(u, u); + mat4x4 T; + mat4x4_from_vec3_mul_outer(T, u, u); + + mat4x4 S = { + { 0, u[2], -u[1], 0}, + {-u[2], 0, u[0], 0}, + { u[1], -u[0], 0, 0}, + { 0, 0, 0, 0} + }; + mat4x4_scale(S, S, s); + + mat4x4 C; + mat4x4_identity(C); + mat4x4_sub(C, C, T); + + mat4x4_scale(C, C, c); + + mat4x4_add(T, T, C); + mat4x4_add(T, T, S); + + T[3][3] = 1.f; + mat4x4_mul(R, M, T); + } else { + mat4x4_dup(R, M); + } +} +LINMATH_H_FUNC void mat4x4_rotate_X(mat4x4 Q, mat4x4 const M, float angle) +{ + float s = sinf(angle); + float c = cosf(angle); + mat4x4 R = { + {1.f, 0.f, 0.f, 0.f}, + {0.f, c, s, 0.f}, + {0.f, -s, c, 0.f}, + {0.f, 0.f, 0.f, 1.f} + }; + mat4x4_mul(Q, M, R); +} +LINMATH_H_FUNC void mat4x4_rotate_Y(mat4x4 Q, mat4x4 const M, float angle) +{ + float s = sinf(angle); + float c = cosf(angle); + mat4x4 R = { + { c, 0.f, -s, 0.f}, + { 0.f, 1.f, 0.f, 0.f}, + { s, 0.f, c, 0.f}, + { 0.f, 0.f, 0.f, 1.f} + }; + mat4x4_mul(Q, M, R); +} +LINMATH_H_FUNC void mat4x4_rotate_Z(mat4x4 Q, mat4x4 const M, float angle) +{ + float s = sinf(angle); + float c = cosf(angle); + mat4x4 R = { + { c, s, 0.f, 0.f}, + { -s, c, 0.f, 0.f}, + { 0.f, 0.f, 1.f, 0.f}, + { 0.f, 0.f, 0.f, 1.f} + }; + mat4x4_mul(Q, M, R); +} +LINMATH_H_FUNC void mat4x4_invert(mat4x4 T, mat4x4 const M) +{ + float s[6]; + float c[6]; + s[0] = M[0][0]*M[1][1] - M[1][0]*M[0][1]; + s[1] = M[0][0]*M[1][2] - M[1][0]*M[0][2]; + s[2] = M[0][0]*M[1][3] - M[1][0]*M[0][3]; + s[3] = M[0][1]*M[1][2] - M[1][1]*M[0][2]; + s[4] = M[0][1]*M[1][3] - M[1][1]*M[0][3]; + s[5] = M[0][2]*M[1][3] - M[1][2]*M[0][3]; + + c[0] = M[2][0]*M[3][1] - M[3][0]*M[2][1]; + c[1] = M[2][0]*M[3][2] - M[3][0]*M[2][2]; + c[2] = M[2][0]*M[3][3] - M[3][0]*M[2][3]; + c[3] = M[2][1]*M[3][2] - M[3][1]*M[2][2]; + c[4] = M[2][1]*M[3][3] - M[3][1]*M[2][3]; + c[5] = M[2][2]*M[3][3] - M[3][2]*M[2][3]; + + /* Assumes it is invertible */ + float idet = 1.0f/( s[0]*c[5]-s[1]*c[4]+s[2]*c[3]+s[3]*c[2]-s[4]*c[1]+s[5]*c[0] ); + + T[0][0] = ( M[1][1] * c[5] - M[1][2] * c[4] + M[1][3] * c[3]) * idet; + T[0][1] = (-M[0][1] * c[5] + M[0][2] * c[4] - M[0][3] * c[3]) * idet; + T[0][2] = ( M[3][1] * s[5] - M[3][2] * s[4] + M[3][3] * s[3]) * idet; + T[0][3] = (-M[2][1] * s[5] + M[2][2] * s[4] - M[2][3] * s[3]) * idet; + + T[1][0] = (-M[1][0] * c[5] + M[1][2] * c[2] - M[1][3] * c[1]) * idet; + T[1][1] = ( M[0][0] * c[5] - M[0][2] * c[2] + M[0][3] * c[1]) * idet; + T[1][2] = (-M[3][0] * s[5] + M[3][2] * s[2] - M[3][3] * s[1]) * idet; + T[1][3] = ( M[2][0] * s[5] - M[2][2] * s[2] + M[2][3] * s[1]) * idet; + + T[2][0] = ( M[1][0] * c[4] - M[1][1] * c[2] + M[1][3] * c[0]) * idet; + T[2][1] = (-M[0][0] * c[4] + M[0][1] * c[2] - M[0][3] * c[0]) * idet; + T[2][2] = ( M[3][0] * s[4] - M[3][1] * s[2] + M[3][3] * s[0]) * idet; + T[2][3] = (-M[2][0] * s[4] + M[2][1] * s[2] - M[2][3] * s[0]) * idet; + + T[3][0] = (-M[1][0] * c[3] + M[1][1] * c[1] - M[1][2] * c[0]) * idet; + T[3][1] = ( M[0][0] * c[3] - M[0][1] * c[1] + M[0][2] * c[0]) * idet; + T[3][2] = (-M[3][0] * s[3] + M[3][1] * s[1] - M[3][2] * s[0]) * idet; + T[3][3] = ( M[2][0] * s[3] - M[2][1] * s[1] + M[2][2] * s[0]) * idet; +} +LINMATH_H_FUNC void mat4x4_orthonormalize(mat4x4 R, mat4x4 const M) +{ + mat4x4_dup(R, M); + float s = 1.f; + vec3 h; + + vec3_norm(R[2], R[2]); + + s = vec3_mul_inner(R[1], R[2]); + vec3_scale(h, R[2], s); + vec3_sub(R[1], R[1], h); + vec3_norm(R[1], R[1]); + + s = vec3_mul_inner(R[0], R[2]); + vec3_scale(h, R[2], s); + vec3_sub(R[0], R[0], h); + + s = vec3_mul_inner(R[0], R[1]); + vec3_scale(h, R[1], s); + vec3_sub(R[0], R[0], h); + vec3_norm(R[0], R[0]); +} + +LINMATH_H_FUNC void mat4x4_frustum(mat4x4 M, float l, float r, float b, float t, float n, float f) +{ + M[0][0] = 2.f*n/(r-l); + M[0][1] = M[0][2] = M[0][3] = 0.f; + + M[1][1] = 2.f*n/(t-b); + M[1][0] = M[1][2] = M[1][3] = 0.f; + + M[2][0] = (r+l)/(r-l); + M[2][1] = (t+b)/(t-b); + M[2][2] = -(f+n)/(f-n); + M[2][3] = -1.f; + + M[3][2] = -2.f*(f*n)/(f-n); + M[3][0] = M[3][1] = M[3][3] = 0.f; +} +LINMATH_H_FUNC void mat4x4_ortho(mat4x4 M, float l, float r, float b, float t, float n, float f) +{ + M[0][0] = 2.f/(r-l); + M[0][1] = M[0][2] = M[0][3] = 0.f; + + M[1][1] = 2.f/(t-b); + M[1][0] = M[1][2] = M[1][3] = 0.f; + + M[2][2] = -2.f/(f-n); + M[2][0] = M[2][1] = M[2][3] = 0.f; + + M[3][0] = -(r+l)/(r-l); + M[3][1] = -(t+b)/(t-b); + M[3][2] = -(f+n)/(f-n); + M[3][3] = 1.f; +} +LINMATH_H_FUNC void mat4x4_perspective(mat4x4 m, float y_fov, float aspect, float n, float f) +{ + /* NOTE: Degrees are an unhandy unit to work with. + * linmath.h uses radians for everything! */ + float const a = 1.f / tanf(y_fov / 2.f); + + m[0][0] = a / aspect; + m[0][1] = 0.f; + m[0][2] = 0.f; + m[0][3] = 0.f; + + m[1][0] = 0.f; + m[1][1] = a; + m[1][2] = 0.f; + m[1][3] = 0.f; + + m[2][0] = 0.f; + m[2][1] = 0.f; + m[2][2] = -((f + n) / (f - n)); + m[2][3] = -1.f; + + m[3][0] = 0.f; + m[3][1] = 0.f; + m[3][2] = -((2.f * f * n) / (f - n)); + m[3][3] = 0.f; +} +LINMATH_H_FUNC void mat4x4_look_at(mat4x4 m, vec3 const eye, vec3 const center, vec3 const up) +{ + /* Adapted from Android's OpenGL Matrix.java. */ + /* See the OpenGL GLUT documentation for gluLookAt for a description */ + /* of the algorithm. We implement it in a straightforward way: */ + + /* TODO: The negation of of can be spared by swapping the order of + * operands in the following cross products in the right way. */ + vec3 f; + vec3_sub(f, center, eye); + vec3_norm(f, f); + + vec3 s; + vec3_mul_cross(s, f, up); + vec3_norm(s, s); + + vec3 t; + vec3_mul_cross(t, s, f); + + m[0][0] = s[0]; + m[0][1] = t[0]; + m[0][2] = -f[0]; + m[0][3] = 0.f; + + m[1][0] = s[1]; + m[1][1] = t[1]; + m[1][2] = -f[1]; + m[1][3] = 0.f; + + m[2][0] = s[2]; + m[2][1] = t[2]; + m[2][2] = -f[2]; + m[2][3] = 0.f; + + m[3][0] = 0.f; + m[3][1] = 0.f; + m[3][2] = 0.f; + m[3][3] = 1.f; + + mat4x4_translate_in_place(m, -eye[0], -eye[1], -eye[2]); +} + +typedef float quat[4]; +#define quat_add vec4_add +#define quat_sub vec4_sub +#define quat_norm vec4_norm +#define quat_scale vec4_scale +#define quat_mul_inner vec4_mul_inner + +LINMATH_H_FUNC void quat_identity(quat q) +{ + q[0] = q[1] = q[2] = 0.f; + q[3] = 1.f; +} +LINMATH_H_FUNC void quat_mul(quat r, quat const p, quat const q) +{ + vec3 w; + vec3_mul_cross(r, p, q); + vec3_scale(w, p, q[3]); + vec3_add(r, r, w); + vec3_scale(w, q, p[3]); + vec3_add(r, r, w); + r[3] = p[3]*q[3] - vec3_mul_inner(p, q); +} +LINMATH_H_FUNC void quat_conj(quat r, quat const q) +{ + int i; + for(i=0; i<3; ++i) + r[i] = -q[i]; + r[3] = q[3]; +} +LINMATH_H_FUNC void quat_rotate(quat r, float angle, vec3 const axis) { + vec3 axis_norm; + vec3_norm(axis_norm, axis); + float s = sinf(angle / 2); + float c = cosf(angle / 2); + vec3_scale(r, axis_norm, s); + r[3] = c; +} +LINMATH_H_FUNC void quat_mul_vec3(vec3 r, quat const q, vec3 const v) +{ +/* + * Method by Fabian 'ryg' Giessen (of Farbrausch) +t = 2 * cross(q.xyz, v) +v' = v + q.w * t + cross(q.xyz, t) + */ + vec3 t; + vec3 q_xyz = {q[0], q[1], q[2]}; + vec3 u = {q[0], q[1], q[2]}; + + vec3_mul_cross(t, q_xyz, v); + vec3_scale(t, t, 2); + + vec3_mul_cross(u, q_xyz, t); + vec3_scale(t, t, q[3]); + + vec3_add(r, v, t); + vec3_add(r, r, u); +} +LINMATH_H_FUNC void mat4x4_from_quat(mat4x4 M, quat const q) +{ + float a = q[3]; + float b = q[0]; + float c = q[1]; + float d = q[2]; + float a2 = a*a; + float b2 = b*b; + float c2 = c*c; + float d2 = d*d; + + M[0][0] = a2 + b2 - c2 - d2; + M[0][1] = 2.f*(b*c + a*d); + M[0][2] = 2.f*(b*d - a*c); + M[0][3] = 0.f; + + M[1][0] = 2*(b*c - a*d); + M[1][1] = a2 - b2 + c2 - d2; + M[1][2] = 2.f*(c*d + a*b); + M[1][3] = 0.f; + + M[2][0] = 2.f*(b*d + a*c); + M[2][1] = 2.f*(c*d - a*b); + M[2][2] = a2 - b2 - c2 + d2; + M[2][3] = 0.f; + + M[3][0] = M[3][1] = M[3][2] = 0.f; + M[3][3] = 1.f; +} + +LINMATH_H_FUNC void mat4x4o_mul_quat(mat4x4 R, mat4x4 const M, quat const q) +{ +/* XXX: The way this is written only works for orthogonal matrices. */ +/* TODO: Take care of non-orthogonal case. */ + quat_mul_vec3(R[0], q, M[0]); + quat_mul_vec3(R[1], q, M[1]); + quat_mul_vec3(R[2], q, M[2]); + + R[3][0] = R[3][1] = R[3][2] = 0.f; + R[0][3] = M[0][3]; + R[1][3] = M[1][3]; + R[2][3] = M[2][3]; + R[3][3] = M[3][3]; // typically 1.0, but here we make it general +} +LINMATH_H_FUNC void quat_from_mat4x4(quat q, mat4x4 const M) +{ + float r=0.f; + int i; + + int perm[] = { 0, 1, 2, 0, 1 }; + int *p = perm; + + for(i = 0; i<3; i++) { + float m = M[i][i]; + if( m < r ) + continue; + m = r; + p = &perm[i]; + } + + r = sqrtf(1.f + M[p[0]][p[0]] - M[p[1]][p[1]] - M[p[2]][p[2]] ); + + if(r < 1e-6) { + q[0] = 1.f; + q[1] = q[2] = q[3] = 0.f; + return; + } + + q[0] = r/2.f; + q[1] = (M[p[0]][p[1]] - M[p[1]][p[0]])/(2.f*r); + q[2] = (M[p[2]][p[0]] - M[p[0]][p[2]])/(2.f*r); + q[3] = (M[p[2]][p[1]] - M[p[1]][p[2]])/(2.f*r); +} + +LINMATH_H_FUNC void mat4x4_arcball(mat4x4 R, mat4x4 const M, vec2 const _a, vec2 const _b, float s) +{ + vec2 a; memcpy(a, _a, sizeof(a)); + vec2 b; memcpy(b, _b, sizeof(b)); + + float z_a = 0.f; + float z_b = 0.f; + + if(vec2_len(a) < 1.f) { + z_a = sqrtf(1.f - vec2_mul_inner(a, a)); + } else { + vec2_norm(a, a); + } + + if(vec2_len(b) < 1.f) { + z_b = sqrtf(1.f - vec2_mul_inner(b, b)); + } else { + vec2_norm(b, b); + } + + vec3 a_ = {a[0], a[1], z_a}; + vec3 b_ = {b[0], b[1], z_b}; + + vec3 c_; + vec3_mul_cross(c_, a_, b_); + + float const angle = acos(vec3_mul_inner(a_, b_)) * s; + mat4x4_rotate(R, M, c_[0], c_[1], c_[2], angle); +} +#endif diff --git a/lib/glfw/deps/mingw/_mingw_dxhelper.h b/lib/glfw/deps/mingw/_mingw_dxhelper.h new file mode 100644 index 0000000..849e291 --- /dev/null +++ b/lib/glfw/deps/mingw/_mingw_dxhelper.h @@ -0,0 +1,117 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ + +#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS) +#define NONAMELESSUNION 1 +#endif +#if defined(NONAMELESSSTRUCT) && \ + !defined(NONAMELESSUNION) +#define NONAMELESSUNION 1 +#endif +#if defined(NONAMELESSUNION) && \ + !defined(NONAMELESSSTRUCT) +#define NONAMELESSSTRUCT 1 +#endif +#if !defined(__GNU_EXTENSION) +#if defined(__GNUC__) || defined(__GNUG__) +#define __GNU_EXTENSION __extension__ +#else +#define __GNU_EXTENSION +#endif +#endif /* __extension__ */ + +#ifndef __ANONYMOUS_DEFINED +#define __ANONYMOUS_DEFINED +#if defined(__GNUC__) || defined(__GNUG__) +#define _ANONYMOUS_UNION __extension__ +#define _ANONYMOUS_STRUCT __extension__ +#else +#define _ANONYMOUS_UNION +#define _ANONYMOUS_STRUCT +#endif +#ifndef NONAMELESSUNION +#define _UNION_NAME(x) +#define _STRUCT_NAME(x) +#else /* NONAMELESSUNION */ +#define _UNION_NAME(x) x +#define _STRUCT_NAME(x) x +#endif +#endif /* __ANONYMOUS_DEFINED */ + +#ifndef DUMMYUNIONNAME +# ifdef NONAMELESSUNION +# define DUMMYUNIONNAME u +# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */ +# define DUMMYUNIONNAME2 u2 +# define DUMMYUNIONNAME3 u3 +# define DUMMYUNIONNAME4 u4 +# define DUMMYUNIONNAME5 u5 +# define DUMMYUNIONNAME6 u6 +# define DUMMYUNIONNAME7 u7 +# define DUMMYUNIONNAME8 u8 +# define DUMMYUNIONNAME9 u9 +# else /* NONAMELESSUNION */ +# define DUMMYUNIONNAME +# define DUMMYUNIONNAME1 /* Wine uses this variant */ +# define DUMMYUNIONNAME2 +# define DUMMYUNIONNAME3 +# define DUMMYUNIONNAME4 +# define DUMMYUNIONNAME5 +# define DUMMYUNIONNAME6 +# define DUMMYUNIONNAME7 +# define DUMMYUNIONNAME8 +# define DUMMYUNIONNAME9 +# endif +#endif /* DUMMYUNIONNAME */ + +#if !defined(DUMMYUNIONNAME1) /* MinGW does not define this one */ +# ifdef NONAMELESSUNION +# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */ +# else +# define DUMMYUNIONNAME1 /* Wine uses this variant */ +# endif +#endif /* DUMMYUNIONNAME1 */ + +#ifndef DUMMYSTRUCTNAME +# ifdef NONAMELESSUNION +# define DUMMYSTRUCTNAME s +# define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */ +# define DUMMYSTRUCTNAME2 s2 +# define DUMMYSTRUCTNAME3 s3 +# define DUMMYSTRUCTNAME4 s4 +# define DUMMYSTRUCTNAME5 s5 +# else +# define DUMMYSTRUCTNAME +# define DUMMYSTRUCTNAME1 /* Wine uses this variant */ +# define DUMMYSTRUCTNAME2 +# define DUMMYSTRUCTNAME3 +# define DUMMYSTRUCTNAME4 +# define DUMMYSTRUCTNAME5 +# endif +#endif /* DUMMYSTRUCTNAME */ + +/* These are for compatibility with the Wine source tree */ + +#ifndef WINELIB_NAME_AW +# ifdef __MINGW_NAME_AW +# define WINELIB_NAME_AW __MINGW_NAME_AW +# else +# ifdef UNICODE +# define WINELIB_NAME_AW(func) func##W +# else +# define WINELIB_NAME_AW(func) func##A +# endif +# endif +#endif /* WINELIB_NAME_AW */ + +#ifndef DECL_WINELIB_TYPE_AW +# ifdef __MINGW_TYPEDEF_AW +# define DECL_WINELIB_TYPE_AW __MINGW_TYPEDEF_AW +# else +# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; +# endif +#endif /* DECL_WINELIB_TYPE_AW */ + diff --git a/lib/glfw/deps/mingw/dinput.h b/lib/glfw/deps/mingw/dinput.h new file mode 100644 index 0000000..b575480 --- /dev/null +++ b/lib/glfw/deps/mingw/dinput.h @@ -0,0 +1,2467 @@ +/* + * Copyright (C) the Wine project + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __DINPUT_INCLUDED__ +#define __DINPUT_INCLUDED__ + +#define COM_NO_WINDOWS_H +#include +#include <_mingw_dxhelper.h> + +#ifndef DIRECTINPUT_VERSION +#define DIRECTINPUT_VERSION 0x0800 +#endif + +/* Classes */ +DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(CLSID_DirectInputDevice8, 0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/* Interfaces */ +DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); +DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); +DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice2A, 0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice2W, 0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice7A, 0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInputDevice7W, 0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInputDevice8A, 0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); +DEFINE_GUID(IID_IDirectInputDevice8W, 0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); +DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); + +/* Predefined object types */ +DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RxAxis,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RyAxis,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RzAxis,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Slider,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Button,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Unknown,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/* Predefined product GUIDs */ +DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboard, 0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Joystick, 0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysMouseEm2, 0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/* predefined forcefeedback effects */ +DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); + +typedef struct IDirectInputA *LPDIRECTINPUTA; +typedef struct IDirectInputW *LPDIRECTINPUTW; +typedef struct IDirectInput2A *LPDIRECTINPUT2A; +typedef struct IDirectInput2W *LPDIRECTINPUT2W; +typedef struct IDirectInput7A *LPDIRECTINPUT7A; +typedef struct IDirectInput7W *LPDIRECTINPUT7W; +#if DIRECTINPUT_VERSION >= 0x0800 +typedef struct IDirectInput8A *LPDIRECTINPUT8A; +typedef struct IDirectInput8W *LPDIRECTINPUT8W; +#endif /* DI8 */ +typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; +typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; +#if DIRECTINPUT_VERSION >= 0x0500 +typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; +typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; +#endif /* DI5 */ +#if DIRECTINPUT_VERSION >= 0x0700 +typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; +typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; +#endif /* DI7 */ +#if DIRECTINPUT_VERSION >= 0x0800 +typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; +typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; +#endif /* DI8 */ +#if DIRECTINPUT_VERSION >= 0x0500 +typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; +#endif /* DI5 */ +typedef struct SysKeyboardA *LPSYSKEYBOARDA; +typedef struct SysMouseA *LPSYSMOUSEA; + +#define IID_IDirectInput WINELIB_NAME_AW(IID_IDirectInput) +#define IDirectInput WINELIB_NAME_AW(IDirectInput) +DECL_WINELIB_TYPE_AW(LPDIRECTINPUT) +#define IID_IDirectInput2 WINELIB_NAME_AW(IID_IDirectInput2) +#define IDirectInput2 WINELIB_NAME_AW(IDirectInput2) +DECL_WINELIB_TYPE_AW(LPDIRECTINPUT2) +#define IID_IDirectInput7 WINELIB_NAME_AW(IID_IDirectInput7) +#define IDirectInput7 WINELIB_NAME_AW(IDirectInput7) +DECL_WINELIB_TYPE_AW(LPDIRECTINPUT7) +#if DIRECTINPUT_VERSION >= 0x0800 +#define IID_IDirectInput8 WINELIB_NAME_AW(IID_IDirectInput8) +#define IDirectInput8 WINELIB_NAME_AW(IDirectInput8) +DECL_WINELIB_TYPE_AW(LPDIRECTINPUT8) +#endif /* DI8 */ +#define IID_IDirectInputDevice WINELIB_NAME_AW(IID_IDirectInputDevice) +#define IDirectInputDevice WINELIB_NAME_AW(IDirectInputDevice) +DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE) +#if DIRECTINPUT_VERSION >= 0x0500 +#define IID_IDirectInputDevice2 WINELIB_NAME_AW(IID_IDirectInputDevice2) +#define IDirectInputDevice2 WINELIB_NAME_AW(IDirectInputDevice2) +DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE2) +#endif /* DI5 */ +#if DIRECTINPUT_VERSION >= 0x0700 +#define IID_IDirectInputDevice7 WINELIB_NAME_AW(IID_IDirectInputDevice7) +#define IDirectInputDevice7 WINELIB_NAME_AW(IDirectInputDevice7) +DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE7) +#endif /* DI7 */ +#if DIRECTINPUT_VERSION >= 0x0800 +#define IID_IDirectInputDevice8 WINELIB_NAME_AW(IID_IDirectInputDevice8) +#define IDirectInputDevice8 WINELIB_NAME_AW(IDirectInputDevice8) +DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE8) +#endif /* DI8 */ + +#define DI_OK S_OK +#define DI_NOTATTACHED S_FALSE +#define DI_BUFFEROVERFLOW S_FALSE +#define DI_PROPNOEFFECT S_FALSE +#define DI_NOEFFECT S_FALSE +#define DI_POLLEDDEVICE ((HRESULT)0x00000002L) +#define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L) +#define DI_EFFECTRESTARTED ((HRESULT)0x00000004L) +#define DI_TRUNCATED ((HRESULT)0x00000008L) +#define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL) +#define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL) +#define DI_WRITEPROTECT ((HRESULT)0x00000013L) + +#define DIERR_OLDDIRECTINPUTVERSION \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION) +#define DIERR_BETADIRECTINPUTVERSION \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP) +#define DIERR_BADDRIVERVER \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL) +#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG +#define DIERR_NOTFOUND \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) +#define DIERR_OBJECTNOTFOUND \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) +#define DIERR_INVALIDPARAM E_INVALIDARG +#define DIERR_NOINTERFACE E_NOINTERFACE +#define DIERR_GENERIC E_FAIL +#define DIERR_OUTOFMEMORY E_OUTOFMEMORY +#define DIERR_UNSUPPORTED E_NOTIMPL +#define DIERR_NOTINITIALIZED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY) +#define DIERR_ALREADYINITIALIZED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED) +#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION +#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED +#define DIERR_INPUTLOST \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT) +#define DIERR_ACQUIRED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY) +#define DIERR_NOTACQUIRED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS) +#define DIERR_READONLY E_ACCESSDENIED +#define DIERR_HANDLEEXISTS E_ACCESSDENIED +#ifndef E_PENDING +#define E_PENDING 0x8000000AL +#endif +#define DIERR_INSUFFICIENTPRIVS 0x80040200L +#define DIERR_DEVICEFULL 0x80040201L +#define DIERR_MOREDATA 0x80040202L +#define DIERR_NOTDOWNLOADED 0x80040203L +#define DIERR_HASEFFECTS 0x80040204L +#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L +#define DIERR_INCOMPLETEEFFECT 0x80040206L +#define DIERR_NOTBUFFERED 0x80040207L +#define DIERR_EFFECTPLAYING 0x80040208L +#define DIERR_UNPLUGGED 0x80040209L +#define DIERR_REPORTFULL 0x8004020AL +#define DIERR_MAPFILEFAIL 0x8004020BL + +#define DIENUM_STOP 0 +#define DIENUM_CONTINUE 1 + +#define DIEDFL_ALLDEVICES 0x00000000 +#define DIEDFL_ATTACHEDONLY 0x00000001 +#define DIEDFL_FORCEFEEDBACK 0x00000100 +#define DIEDFL_INCLUDEALIASES 0x00010000 +#define DIEDFL_INCLUDEPHANTOMS 0x00020000 +#define DIEDFL_INCLUDEHIDDEN 0x00040000 + +#define DIDEVTYPE_DEVICE 1 +#define DIDEVTYPE_MOUSE 2 +#define DIDEVTYPE_KEYBOARD 3 +#define DIDEVTYPE_JOYSTICK 4 +#define DIDEVTYPE_HID 0x00010000 + +#define DI8DEVCLASS_ALL 0 +#define DI8DEVCLASS_DEVICE 1 +#define DI8DEVCLASS_POINTER 2 +#define DI8DEVCLASS_KEYBOARD 3 +#define DI8DEVCLASS_GAMECTRL 4 + +#define DI8DEVTYPE_DEVICE 0x11 +#define DI8DEVTYPE_MOUSE 0x12 +#define DI8DEVTYPE_KEYBOARD 0x13 +#define DI8DEVTYPE_JOYSTICK 0x14 +#define DI8DEVTYPE_GAMEPAD 0x15 +#define DI8DEVTYPE_DRIVING 0x16 +#define DI8DEVTYPE_FLIGHT 0x17 +#define DI8DEVTYPE_1STPERSON 0x18 +#define DI8DEVTYPE_DEVICECTRL 0x19 +#define DI8DEVTYPE_SCREENPOINTER 0x1A +#define DI8DEVTYPE_REMOTE 0x1B +#define DI8DEVTYPE_SUPPLEMENTAL 0x1C + +#define DIDEVTYPEMOUSE_UNKNOWN 1 +#define DIDEVTYPEMOUSE_TRADITIONAL 2 +#define DIDEVTYPEMOUSE_FINGERSTICK 3 +#define DIDEVTYPEMOUSE_TOUCHPAD 4 +#define DIDEVTYPEMOUSE_TRACKBALL 5 + +#define DIDEVTYPEKEYBOARD_UNKNOWN 0 +#define DIDEVTYPEKEYBOARD_PCXT 1 +#define DIDEVTYPEKEYBOARD_OLIVETTI 2 +#define DIDEVTYPEKEYBOARD_PCAT 3 +#define DIDEVTYPEKEYBOARD_PCENH 4 +#define DIDEVTYPEKEYBOARD_NOKIA1050 5 +#define DIDEVTYPEKEYBOARD_NOKIA9140 6 +#define DIDEVTYPEKEYBOARD_NEC98 7 +#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8 +#define DIDEVTYPEKEYBOARD_NEC98106 9 +#define DIDEVTYPEKEYBOARD_JAPAN106 10 +#define DIDEVTYPEKEYBOARD_JAPANAX 11 +#define DIDEVTYPEKEYBOARD_J3100 12 + +#define DIDEVTYPEJOYSTICK_UNKNOWN 1 +#define DIDEVTYPEJOYSTICK_TRADITIONAL 2 +#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3 +#define DIDEVTYPEJOYSTICK_GAMEPAD 4 +#define DIDEVTYPEJOYSTICK_RUDDER 5 +#define DIDEVTYPEJOYSTICK_WHEEL 6 +#define DIDEVTYPEJOYSTICK_HEADTRACKER 7 + +#define DI8DEVTYPEMOUSE_UNKNOWN 1 +#define DI8DEVTYPEMOUSE_TRADITIONAL 2 +#define DI8DEVTYPEMOUSE_FINGERSTICK 3 +#define DI8DEVTYPEMOUSE_TOUCHPAD 4 +#define DI8DEVTYPEMOUSE_TRACKBALL 5 +#define DI8DEVTYPEMOUSE_ABSOLUTE 6 + +#define DI8DEVTYPEKEYBOARD_UNKNOWN 0 +#define DI8DEVTYPEKEYBOARD_PCXT 1 +#define DI8DEVTYPEKEYBOARD_OLIVETTI 2 +#define DI8DEVTYPEKEYBOARD_PCAT 3 +#define DI8DEVTYPEKEYBOARD_PCENH 4 +#define DI8DEVTYPEKEYBOARD_NOKIA1050 5 +#define DI8DEVTYPEKEYBOARD_NOKIA9140 6 +#define DI8DEVTYPEKEYBOARD_NEC98 7 +#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8 +#define DI8DEVTYPEKEYBOARD_NEC98106 9 +#define DI8DEVTYPEKEYBOARD_JAPAN106 10 +#define DI8DEVTYPEKEYBOARD_JAPANAX 11 +#define DI8DEVTYPEKEYBOARD_J3100 12 + +#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1 + +#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEJOYSTICK_STANDARD 2 + +#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEGAMEPAD_STANDARD 2 +#define DI8DEVTYPEGAMEPAD_TILT 3 + +#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2 +#define DI8DEVTYPEDRIVING_DUALPEDALS 3 +#define DI8DEVTYPEDRIVING_THREEPEDALS 4 +#define DI8DEVTYPEDRIVING_HANDHELD 5 + +#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEFLIGHT_STICK 2 +#define DI8DEVTYPEFLIGHT_YOKE 3 +#define DI8DEVTYPEFLIGHT_RC 4 + +#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPE1STPERSON_UNKNOWN 2 +#define DI8DEVTYPE1STPERSON_SIXDOF 3 +#define DI8DEVTYPE1STPERSON_SHOOTER 4 + +#define DI8DEVTYPESCREENPTR_UNKNOWN 2 +#define DI8DEVTYPESCREENPTR_LIGHTGUN 3 +#define DI8DEVTYPESCREENPTR_LIGHTPEN 4 +#define DI8DEVTYPESCREENPTR_TOUCH 5 + +#define DI8DEVTYPEREMOTE_UNKNOWN 2 + +#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2 +#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3 +#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4 + +#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2 +#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3 +#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4 +#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5 +#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6 +#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7 +#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8 +#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9 +#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10 +#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11 +#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12 +#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13 + +#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType) +#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType) + +typedef struct DIDEVICEOBJECTINSTANCE_DX3A { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + CHAR tszName[MAX_PATH]; +} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A; +typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; +typedef struct DIDEVICEOBJECTINSTANCE_DX3W { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + WCHAR tszName[MAX_PATH]; +} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W; +typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; + +DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3) +DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3) +DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3) + +typedef struct DIDEVICEOBJECTINSTANCEA { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + CHAR tszName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFMaxForce; + DWORD dwFFForceResolution; + WORD wCollectionNumber; + WORD wDesignatorIndex; + WORD wUsagePage; + WORD wUsage; + DWORD dwDimension; + WORD wExponent; + WORD wReserved; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA; +typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; + +typedef struct DIDEVICEOBJECTINSTANCEW { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + WCHAR tszName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFMaxForce; + DWORD dwFFForceResolution; + WORD wCollectionNumber; + WORD wDesignatorIndex; + WORD wUsagePage; + WORD wUsage; + DWORD dwDimension; + WORD wExponent; + WORD wReserved; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW; +typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; + +DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE) +DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE) +DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE) + +typedef struct DIDEVICEINSTANCE_DX3A { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + CHAR tszInstanceName[MAX_PATH]; + CHAR tszProductName[MAX_PATH]; +} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A; +typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; +typedef struct DIDEVICEINSTANCE_DX3W { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + WCHAR tszInstanceName[MAX_PATH]; + WCHAR tszProductName[MAX_PATH]; +} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W; +typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; + +DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3) +DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3) +DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3) + +typedef struct DIDEVICEINSTANCEA { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + CHAR tszInstanceName[MAX_PATH]; + CHAR tszProductName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + GUID guidFFDriver; + WORD wUsagePage; + WORD wUsage; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA; +typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; + +typedef struct DIDEVICEINSTANCEW { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + WCHAR tszInstanceName[MAX_PATH]; + WCHAR tszProductName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + GUID guidFFDriver; + WORD wUsagePage; + WORD wUsage; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW; +typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; + +DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE) +DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE) +DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE) + +typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA,LPVOID); +typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW,LPVOID); +DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK) + +#define DIEDBS_MAPPEDPRI1 0x00000001 +#define DIEDBS_MAPPEDPRI2 0x00000002 +#define DIEDBS_RECENTDEVICE 0x00000010 +#define DIEDBS_NEWDEVICE 0x00000020 + +#define DIEDBSFL_ATTACHEDONLY 0x00000000 +#define DIEDBSFL_THISUSER 0x00000010 +#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK +#define DIEDBSFL_AVAILABLEDEVICES 0x00001000 +#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000 +#define DIEDBSFL_NONGAMINGDEVICES 0x00004000 +#define DIEDBSFL_VALID 0x00007110 + +#if DIRECTINPUT_VERSION >= 0x0800 +typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID); +typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID); +DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESBYSEMANTICSCB) +#endif + +typedef BOOL (CALLBACK *LPDICONFIGUREDEVICESCALLBACK)(LPUNKNOWN,LPVOID); + +typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA,LPVOID); +typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW,LPVOID); +DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK) + +#if DIRECTINPUT_VERSION >= 0x0500 +typedef BOOL (CALLBACK *LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID); +#endif + +#define DIK_ESCAPE 0x01 +#define DIK_1 0x02 +#define DIK_2 0x03 +#define DIK_3 0x04 +#define DIK_4 0x05 +#define DIK_5 0x06 +#define DIK_6 0x07 +#define DIK_7 0x08 +#define DIK_8 0x09 +#define DIK_9 0x0A +#define DIK_0 0x0B +#define DIK_MINUS 0x0C /* - on main keyboard */ +#define DIK_EQUALS 0x0D +#define DIK_BACK 0x0E /* backspace */ +#define DIK_TAB 0x0F +#define DIK_Q 0x10 +#define DIK_W 0x11 +#define DIK_E 0x12 +#define DIK_R 0x13 +#define DIK_T 0x14 +#define DIK_Y 0x15 +#define DIK_U 0x16 +#define DIK_I 0x17 +#define DIK_O 0x18 +#define DIK_P 0x19 +#define DIK_LBRACKET 0x1A +#define DIK_RBRACKET 0x1B +#define DIK_RETURN 0x1C /* Enter on main keyboard */ +#define DIK_LCONTROL 0x1D +#define DIK_A 0x1E +#define DIK_S 0x1F +#define DIK_D 0x20 +#define DIK_F 0x21 +#define DIK_G 0x22 +#define DIK_H 0x23 +#define DIK_J 0x24 +#define DIK_K 0x25 +#define DIK_L 0x26 +#define DIK_SEMICOLON 0x27 +#define DIK_APOSTROPHE 0x28 +#define DIK_GRAVE 0x29 /* accent grave */ +#define DIK_LSHIFT 0x2A +#define DIK_BACKSLASH 0x2B +#define DIK_Z 0x2C +#define DIK_X 0x2D +#define DIK_C 0x2E +#define DIK_V 0x2F +#define DIK_B 0x30 +#define DIK_N 0x31 +#define DIK_M 0x32 +#define DIK_COMMA 0x33 +#define DIK_PERIOD 0x34 /* . on main keyboard */ +#define DIK_SLASH 0x35 /* / on main keyboard */ +#define DIK_RSHIFT 0x36 +#define DIK_MULTIPLY 0x37 /* * on numeric keypad */ +#define DIK_LMENU 0x38 /* left Alt */ +#define DIK_SPACE 0x39 +#define DIK_CAPITAL 0x3A +#define DIK_F1 0x3B +#define DIK_F2 0x3C +#define DIK_F3 0x3D +#define DIK_F4 0x3E +#define DIK_F5 0x3F +#define DIK_F6 0x40 +#define DIK_F7 0x41 +#define DIK_F8 0x42 +#define DIK_F9 0x43 +#define DIK_F10 0x44 +#define DIK_NUMLOCK 0x45 +#define DIK_SCROLL 0x46 /* Scroll Lock */ +#define DIK_NUMPAD7 0x47 +#define DIK_NUMPAD8 0x48 +#define DIK_NUMPAD9 0x49 +#define DIK_SUBTRACT 0x4A /* - on numeric keypad */ +#define DIK_NUMPAD4 0x4B +#define DIK_NUMPAD5 0x4C +#define DIK_NUMPAD6 0x4D +#define DIK_ADD 0x4E /* + on numeric keypad */ +#define DIK_NUMPAD1 0x4F +#define DIK_NUMPAD2 0x50 +#define DIK_NUMPAD3 0x51 +#define DIK_NUMPAD0 0x52 +#define DIK_DECIMAL 0x53 /* . on numeric keypad */ +#define DIK_OEM_102 0x56 /* < > | on UK/Germany keyboards */ +#define DIK_F11 0x57 +#define DIK_F12 0x58 +#define DIK_F13 0x64 /* (NEC PC98) */ +#define DIK_F14 0x65 /* (NEC PC98) */ +#define DIK_F15 0x66 /* (NEC PC98) */ +#define DIK_KANA 0x70 /* (Japanese keyboard) */ +#define DIK_ABNT_C1 0x73 /* / ? on Portugese (Brazilian) keyboards */ +#define DIK_CONVERT 0x79 /* (Japanese keyboard) */ +#define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ +#define DIK_YEN 0x7D /* (Japanese keyboard) */ +#define DIK_ABNT_C2 0x7E /* Numpad . on Portugese (Brazilian) keyboards */ +#define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ +#define DIK_CIRCUMFLEX 0x90 /* (Japanese keyboard) */ +#define DIK_AT 0x91 /* (NEC PC98) */ +#define DIK_COLON 0x92 /* (NEC PC98) */ +#define DIK_UNDERLINE 0x93 /* (NEC PC98) */ +#define DIK_KANJI 0x94 /* (Japanese keyboard) */ +#define DIK_STOP 0x95 /* (NEC PC98) */ +#define DIK_AX 0x96 /* (Japan AX) */ +#define DIK_UNLABELED 0x97 /* (J3100) */ +#define DIK_NEXTTRACK 0x99 /* Next Track */ +#define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ +#define DIK_RCONTROL 0x9D +#define DIK_MUTE 0xA0 /* Mute */ +#define DIK_CALCULATOR 0xA1 /* Calculator */ +#define DIK_PLAYPAUSE 0xA2 /* Play / Pause */ +#define DIK_MEDIASTOP 0xA4 /* Media Stop */ +#define DIK_VOLUMEDOWN 0xAE /* Volume - */ +#define DIK_VOLUMEUP 0xB0 /* Volume + */ +#define DIK_WEBHOME 0xB2 /* Web home */ +#define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ +#define DIK_DIVIDE 0xB5 /* / on numeric keypad */ +#define DIK_SYSRQ 0xB7 +#define DIK_RMENU 0xB8 /* right Alt */ +#define DIK_PAUSE 0xC5 /* Pause */ +#define DIK_HOME 0xC7 /* Home on arrow keypad */ +#define DIK_UP 0xC8 /* UpArrow on arrow keypad */ +#define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ +#define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ +#define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ +#define DIK_END 0xCF /* End on arrow keypad */ +#define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ +#define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ +#define DIK_INSERT 0xD2 /* Insert on arrow keypad */ +#define DIK_DELETE 0xD3 /* Delete on arrow keypad */ +#define DIK_LWIN 0xDB /* Left Windows key */ +#define DIK_RWIN 0xDC /* Right Windows key */ +#define DIK_APPS 0xDD /* AppMenu key */ +#define DIK_POWER 0xDE +#define DIK_SLEEP 0xDF +#define DIK_WAKE 0xE3 /* System Wake */ +#define DIK_WEBSEARCH 0xE5 /* Web Search */ +#define DIK_WEBFAVORITES 0xE6 /* Web Favorites */ +#define DIK_WEBREFRESH 0xE7 /* Web Refresh */ +#define DIK_WEBSTOP 0xE8 /* Web Stop */ +#define DIK_WEBFORWARD 0xE9 /* Web Forward */ +#define DIK_WEBBACK 0xEA /* Web Back */ +#define DIK_MYCOMPUTER 0xEB /* My Computer */ +#define DIK_MAIL 0xEC /* Mail */ +#define DIK_MEDIASELECT 0xED /* Media Select */ + +#define DIK_BACKSPACE DIK_BACK /* backspace */ +#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ +#define DIK_LALT DIK_LMENU /* left Alt */ +#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ +#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ +#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ +#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ +#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ +#define DIK_RALT DIK_RMENU /* right Alt */ +#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ +#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ +#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ +#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ +#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ +#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ + +#define DIDFT_ALL 0x00000000 +#define DIDFT_RELAXIS 0x00000001 +#define DIDFT_ABSAXIS 0x00000002 +#define DIDFT_AXIS 0x00000003 +#define DIDFT_PSHBUTTON 0x00000004 +#define DIDFT_TGLBUTTON 0x00000008 +#define DIDFT_BUTTON 0x0000000C +#define DIDFT_POV 0x00000010 +#define DIDFT_COLLECTION 0x00000040 +#define DIDFT_NODATA 0x00000080 +#define DIDFT_ANYINSTANCE 0x00FFFF00 +#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE +#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8) +#define DIDFT_GETTYPE(n) LOBYTE(n) +#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8) +#define DIDFT_FFACTUATOR 0x01000000 +#define DIDFT_FFEFFECTTRIGGER 0x02000000 +#if DIRECTINPUT_VERSION >= 0x050a +#define DIDFT_OUTPUT 0x10000000 +#define DIDFT_VENDORDEFINED 0x04000000 +#define DIDFT_ALIAS 0x08000000 +#endif /* DI5a */ +#ifndef DIDFT_OPTIONAL +#define DIDFT_OPTIONAL 0x80000000 +#endif +#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8) +#define DIDFT_NOCOLLECTION 0x00FFFF00 + +#define DIDF_ABSAXIS 0x00000001 +#define DIDF_RELAXIS 0x00000002 + +#define DIGDD_PEEK 0x00000001 + +#define DISEQUENCE_COMPARE(dwSq1,cmp,dwSq2) ((int)((dwSq1) - (dwSq2)) cmp 0) + +typedef struct DIDEVICEOBJECTDATA_DX3 { + DWORD dwOfs; + DWORD dwData; + DWORD dwTimeStamp; + DWORD dwSequence; +} DIDEVICEOBJECTDATA_DX3,*LPDIDEVICEOBJECTDATA_DX3; +typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3; + +typedef struct DIDEVICEOBJECTDATA { + DWORD dwOfs; + DWORD dwData; + DWORD dwTimeStamp; + DWORD dwSequence; +#if(DIRECTINPUT_VERSION >= 0x0800) + UINT_PTR uAppData; +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ +} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; +typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; + +typedef struct _DIOBJECTDATAFORMAT { + const GUID *pguid; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; +} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; +typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; + +typedef struct _DIDATAFORMAT { + DWORD dwSize; + DWORD dwObjSize; + DWORD dwFlags; + DWORD dwDataSize; + DWORD dwNumObjs; + LPDIOBJECTDATAFORMAT rgodf; +} DIDATAFORMAT, *LPDIDATAFORMAT; +typedef const DIDATAFORMAT *LPCDIDATAFORMAT; + +#if DIRECTINPUT_VERSION >= 0x0500 +#define DIDOI_FFACTUATOR 0x00000001 +#define DIDOI_FFEFFECTTRIGGER 0x00000002 +#define DIDOI_POLLED 0x00008000 +#define DIDOI_ASPECTPOSITION 0x00000100 +#define DIDOI_ASPECTVELOCITY 0x00000200 +#define DIDOI_ASPECTACCEL 0x00000300 +#define DIDOI_ASPECTFORCE 0x00000400 +#define DIDOI_ASPECTMASK 0x00000F00 +#endif /* DI5 */ +#if DIRECTINPUT_VERSION >= 0x050a +#define DIDOI_GUIDISUSAGE 0x00010000 +#endif /* DI5a */ + +typedef struct DIPROPHEADER { + DWORD dwSize; + DWORD dwHeaderSize; + DWORD dwObj; + DWORD dwHow; +} DIPROPHEADER,*LPDIPROPHEADER; +typedef const DIPROPHEADER *LPCDIPROPHEADER; + +#define DIPH_DEVICE 0 +#define DIPH_BYOFFSET 1 +#define DIPH_BYID 2 +#if DIRECTINPUT_VERSION >= 0x050a +#define DIPH_BYUSAGE 3 + +#define DIMAKEUSAGEDWORD(UsagePage, Usage) (DWORD)MAKELONG(Usage, UsagePage) +#endif /* DI5a */ + +typedef struct DIPROPDWORD { + DIPROPHEADER diph; + DWORD dwData; +} DIPROPDWORD, *LPDIPROPDWORD; +typedef const DIPROPDWORD *LPCDIPROPDWORD; + +typedef struct DIPROPRANGE { + DIPROPHEADER diph; + LONG lMin; + LONG lMax; +} DIPROPRANGE, *LPDIPROPRANGE; +typedef const DIPROPRANGE *LPCDIPROPRANGE; + +#define DIPROPRANGE_NOMIN ((LONG)0x80000000) +#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) + +#if DIRECTINPUT_VERSION >= 0x050a +typedef struct DIPROPCAL { + DIPROPHEADER diph; + LONG lMin; + LONG lCenter; + LONG lMax; +} DIPROPCAL, *LPDIPROPCAL; +typedef const DIPROPCAL *LPCDIPROPCAL; + +typedef struct DIPROPCALPOV { + DIPROPHEADER diph; + LONG lMin[5]; + LONG lMax[5]; +} DIPROPCALPOV, *LPDIPROPCALPOV; +typedef const DIPROPCALPOV *LPCDIPROPCALPOV; + +typedef struct DIPROPGUIDANDPATH { + DIPROPHEADER diph; + GUID guidClass; + WCHAR wszPath[MAX_PATH]; +} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; +typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; + +typedef struct DIPROPSTRING { + DIPROPHEADER diph; + WCHAR wsz[MAX_PATH]; +} DIPROPSTRING, *LPDIPROPSTRING; +typedef const DIPROPSTRING *LPCDIPROPSTRING; +#endif /* DI5a */ + +#if DIRECTINPUT_VERSION >= 0x0800 +typedef struct DIPROPPOINTER { + DIPROPHEADER diph; + UINT_PTR uData; +} DIPROPPOINTER, *LPDIPROPPOINTER; +typedef const DIPROPPOINTER *LPCDIPROPPOINTER; +#endif /* DI8 */ + +/* special property GUIDs */ +#ifdef __cplusplus +#define MAKEDIPROP(prop) (*(const GUID *)(prop)) +#else +#define MAKEDIPROP(prop) ((REFGUID)(prop)) +#endif +#define DIPROP_BUFFERSIZE MAKEDIPROP(1) +#define DIPROP_AXISMODE MAKEDIPROP(2) + +#define DIPROPAXISMODE_ABS 0 +#define DIPROPAXISMODE_REL 1 + +#define DIPROP_GRANULARITY MAKEDIPROP(3) +#define DIPROP_RANGE MAKEDIPROP(4) +#define DIPROP_DEADZONE MAKEDIPROP(5) +#define DIPROP_SATURATION MAKEDIPROP(6) +#define DIPROP_FFGAIN MAKEDIPROP(7) +#define DIPROP_FFLOAD MAKEDIPROP(8) +#define DIPROP_AUTOCENTER MAKEDIPROP(9) + +#define DIPROPAUTOCENTER_OFF 0 +#define DIPROPAUTOCENTER_ON 1 + +#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10) + +#define DIPROPCALIBRATIONMODE_COOKED 0 +#define DIPROPCALIBRATIONMODE_RAW 1 + +#if DIRECTINPUT_VERSION >= 0x050a +#define DIPROP_CALIBRATION MAKEDIPROP(11) +#define DIPROP_GUIDANDPATH MAKEDIPROP(12) +#define DIPROP_INSTANCENAME MAKEDIPROP(13) +#define DIPROP_PRODUCTNAME MAKEDIPROP(14) +#endif + +#if DIRECTINPUT_VERSION >= 0x5B2 +#define DIPROP_JOYSTICKID MAKEDIPROP(15) +#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16) +#endif + +#if DIRECTINPUT_VERSION >= 0x0700 +#define DIPROP_PHYSICALRANGE MAKEDIPROP(18) +#define DIPROP_LOGICALRANGE MAKEDIPROP(19) +#endif + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIPROP_KEYNAME MAKEDIPROP(20) +#define DIPROP_CPOINTS MAKEDIPROP(21) +#define DIPROP_APPDATA MAKEDIPROP(22) +#define DIPROP_SCANCODE MAKEDIPROP(23) +#define DIPROP_VIDPID MAKEDIPROP(24) +#define DIPROP_USERNAME MAKEDIPROP(25) +#define DIPROP_TYPENAME MAKEDIPROP(26) + +#define MAXCPOINTSNUM 8 + +typedef struct _CPOINT { + LONG lP; + DWORD dwLog; +} CPOINT, *PCPOINT; + +typedef struct DIPROPCPOINTS { + DIPROPHEADER diph; + DWORD dwCPointsNum; + CPOINT cp[MAXCPOINTSNUM]; +} DIPROPCPOINTS, *LPDIPROPCPOINTS; +typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS; +#endif /* DI8 */ + + +typedef struct DIDEVCAPS_DX3 { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDevType; + DWORD dwAxes; + DWORD dwButtons; + DWORD dwPOVs; +} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3; + +typedef struct DIDEVCAPS { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDevType; + DWORD dwAxes; + DWORD dwButtons; + DWORD dwPOVs; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFSamplePeriod; + DWORD dwFFMinTimeResolution; + DWORD dwFirmwareRevision; + DWORD dwHardwareRevision; + DWORD dwFFDriverVersion; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVCAPS,*LPDIDEVCAPS; + +#define DIDC_ATTACHED 0x00000001 +#define DIDC_POLLEDDEVICE 0x00000002 +#define DIDC_EMULATED 0x00000004 +#define DIDC_POLLEDDATAFORMAT 0x00000008 +#define DIDC_FORCEFEEDBACK 0x00000100 +#define DIDC_FFATTACK 0x00000200 +#define DIDC_FFFADE 0x00000400 +#define DIDC_SATURATION 0x00000800 +#define DIDC_POSNEGCOEFFICIENTS 0x00001000 +#define DIDC_POSNEGSATURATION 0x00002000 +#define DIDC_DEADBAND 0x00004000 +#define DIDC_STARTDELAY 0x00008000 +#define DIDC_ALIAS 0x00010000 +#define DIDC_PHANTOM 0x00020000 +#define DIDC_HIDDEN 0x00040000 + + +/* SetCooperativeLevel dwFlags */ +#define DISCL_EXCLUSIVE 0x00000001 +#define DISCL_NONEXCLUSIVE 0x00000002 +#define DISCL_FOREGROUND 0x00000004 +#define DISCL_BACKGROUND 0x00000008 +#define DISCL_NOWINKEY 0x00000010 + +#if (DIRECTINPUT_VERSION >= 0x0500) +/* Device FF flags */ +#define DISFFC_RESET 0x00000001 +#define DISFFC_STOPALL 0x00000002 +#define DISFFC_PAUSE 0x00000004 +#define DISFFC_CONTINUE 0x00000008 +#define DISFFC_SETACTUATORSON 0x00000010 +#define DISFFC_SETACTUATORSOFF 0x00000020 + +#define DIGFFS_EMPTY 0x00000001 +#define DIGFFS_STOPPED 0x00000002 +#define DIGFFS_PAUSED 0x00000004 +#define DIGFFS_ACTUATORSON 0x00000010 +#define DIGFFS_ACTUATORSOFF 0x00000020 +#define DIGFFS_POWERON 0x00000040 +#define DIGFFS_POWEROFF 0x00000080 +#define DIGFFS_SAFETYSWITCHON 0x00000100 +#define DIGFFS_SAFETYSWITCHOFF 0x00000200 +#define DIGFFS_USERFFSWITCHON 0x00000400 +#define DIGFFS_USERFFSWITCHOFF 0x00000800 +#define DIGFFS_DEVICELOST 0x80000000 + +/* Effect flags */ +#define DIEFT_ALL 0x00000000 + +#define DIEFT_CONSTANTFORCE 0x00000001 +#define DIEFT_RAMPFORCE 0x00000002 +#define DIEFT_PERIODIC 0x00000003 +#define DIEFT_CONDITION 0x00000004 +#define DIEFT_CUSTOMFORCE 0x00000005 +#define DIEFT_HARDWARE 0x000000FF +#define DIEFT_FFATTACK 0x00000200 +#define DIEFT_FFFADE 0x00000400 +#define DIEFT_SATURATION 0x00000800 +#define DIEFT_POSNEGCOEFFICIENTS 0x00001000 +#define DIEFT_POSNEGSATURATION 0x00002000 +#define DIEFT_DEADBAND 0x00004000 +#define DIEFT_STARTDELAY 0x00008000 +#define DIEFT_GETTYPE(n) LOBYTE(n) + +#define DIEFF_OBJECTIDS 0x00000001 +#define DIEFF_OBJECTOFFSETS 0x00000002 +#define DIEFF_CARTESIAN 0x00000010 +#define DIEFF_POLAR 0x00000020 +#define DIEFF_SPHERICAL 0x00000040 + +#define DIEP_DURATION 0x00000001 +#define DIEP_SAMPLEPERIOD 0x00000002 +#define DIEP_GAIN 0x00000004 +#define DIEP_TRIGGERBUTTON 0x00000008 +#define DIEP_TRIGGERREPEATINTERVAL 0x00000010 +#define DIEP_AXES 0x00000020 +#define DIEP_DIRECTION 0x00000040 +#define DIEP_ENVELOPE 0x00000080 +#define DIEP_TYPESPECIFICPARAMS 0x00000100 +#if(DIRECTINPUT_VERSION >= 0x0600) +#define DIEP_STARTDELAY 0x00000200 +#define DIEP_ALLPARAMS_DX5 0x000001FF +#define DIEP_ALLPARAMS 0x000003FF +#else +#define DIEP_ALLPARAMS 0x000001FF +#endif /* DIRECTINPUT_VERSION >= 0x0600 */ +#define DIEP_START 0x20000000 +#define DIEP_NORESTART 0x40000000 +#define DIEP_NODOWNLOAD 0x80000000 +#define DIEB_NOTRIGGER 0xFFFFFFFF + +#define DIES_SOLO 0x00000001 +#define DIES_NODOWNLOAD 0x80000000 + +#define DIEGES_PLAYING 0x00000001 +#define DIEGES_EMULATED 0x00000002 + +#define DI_DEGREES 100 +#define DI_FFNOMINALMAX 10000 +#define DI_SECONDS 1000000 + +typedef struct DICONSTANTFORCE { + LONG lMagnitude; +} DICONSTANTFORCE, *LPDICONSTANTFORCE; +typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; + +typedef struct DIRAMPFORCE { + LONG lStart; + LONG lEnd; +} DIRAMPFORCE, *LPDIRAMPFORCE; +typedef const DIRAMPFORCE *LPCDIRAMPFORCE; + +typedef struct DIPERIODIC { + DWORD dwMagnitude; + LONG lOffset; + DWORD dwPhase; + DWORD dwPeriod; +} DIPERIODIC, *LPDIPERIODIC; +typedef const DIPERIODIC *LPCDIPERIODIC; + +typedef struct DICONDITION { + LONG lOffset; + LONG lPositiveCoefficient; + LONG lNegativeCoefficient; + DWORD dwPositiveSaturation; + DWORD dwNegativeSaturation; + LONG lDeadBand; +} DICONDITION, *LPDICONDITION; +typedef const DICONDITION *LPCDICONDITION; + +typedef struct DICUSTOMFORCE { + DWORD cChannels; + DWORD dwSamplePeriod; + DWORD cSamples; + LPLONG rglForceData; +} DICUSTOMFORCE, *LPDICUSTOMFORCE; +typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; + +typedef struct DIENVELOPE { + DWORD dwSize; + DWORD dwAttackLevel; + DWORD dwAttackTime; + DWORD dwFadeLevel; + DWORD dwFadeTime; +} DIENVELOPE, *LPDIENVELOPE; +typedef const DIENVELOPE *LPCDIENVELOPE; + +typedef struct DIEFFECT_DX5 { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDuration; + DWORD dwSamplePeriod; + DWORD dwGain; + DWORD dwTriggerButton; + DWORD dwTriggerRepeatInterval; + DWORD cAxes; + LPDWORD rgdwAxes; + LPLONG rglDirection; + LPDIENVELOPE lpEnvelope; + DWORD cbTypeSpecificParams; + LPVOID lpvTypeSpecificParams; +} DIEFFECT_DX5, *LPDIEFFECT_DX5; +typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; + +typedef struct DIEFFECT { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDuration; + DWORD dwSamplePeriod; + DWORD dwGain; + DWORD dwTriggerButton; + DWORD dwTriggerRepeatInterval; + DWORD cAxes; + LPDWORD rgdwAxes; + LPLONG rglDirection; + LPDIENVELOPE lpEnvelope; + DWORD cbTypeSpecificParams; + LPVOID lpvTypeSpecificParams; +#if(DIRECTINPUT_VERSION >= 0x0600) + DWORD dwStartDelay; +#endif /* DIRECTINPUT_VERSION >= 0x0600 */ +} DIEFFECT, *LPDIEFFECT; +typedef const DIEFFECT *LPCDIEFFECT; +typedef DIEFFECT DIEFFECT_DX6; +typedef LPDIEFFECT LPDIEFFECT_DX6; + +typedef struct DIEFFECTINFOA { + DWORD dwSize; + GUID guid; + DWORD dwEffType; + DWORD dwStaticParams; + DWORD dwDynamicParams; + CHAR tszName[MAX_PATH]; +} DIEFFECTINFOA, *LPDIEFFECTINFOA; +typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; + +typedef struct DIEFFECTINFOW { + DWORD dwSize; + GUID guid; + DWORD dwEffType; + DWORD dwStaticParams; + DWORD dwDynamicParams; + WCHAR tszName[MAX_PATH]; +} DIEFFECTINFOW, *LPDIEFFECTINFOW; +typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; + +DECL_WINELIB_TYPE_AW(DIEFFECTINFO) +DECL_WINELIB_TYPE_AW(LPDIEFFECTINFO) +DECL_WINELIB_TYPE_AW(LPCDIEFFECTINFO) + +typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); +typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); + +typedef struct DIEFFESCAPE { + DWORD dwSize; + DWORD dwCommand; + LPVOID lpvInBuffer; + DWORD cbInBuffer; + LPVOID lpvOutBuffer; + DWORD cbOutBuffer; +} DIEFFESCAPE, *LPDIEFFESCAPE; + +typedef struct DIJOYSTATE { + LONG lX; + LONG lY; + LONG lZ; + LONG lRx; + LONG lRy; + LONG lRz; + LONG rglSlider[2]; + DWORD rgdwPOV[4]; + BYTE rgbButtons[32]; +} DIJOYSTATE, *LPDIJOYSTATE; + +typedef struct DIJOYSTATE2 { + LONG lX; + LONG lY; + LONG lZ; + LONG lRx; + LONG lRy; + LONG lRz; + LONG rglSlider[2]; + DWORD rgdwPOV[4]; + BYTE rgbButtons[128]; + LONG lVX; /* 'v' as in velocity */ + LONG lVY; + LONG lVZ; + LONG lVRx; + LONG lVRy; + LONG lVRz; + LONG rglVSlider[2]; + LONG lAX; /* 'a' as in acceleration */ + LONG lAY; + LONG lAZ; + LONG lARx; + LONG lARy; + LONG lARz; + LONG rglASlider[2]; + LONG lFX; /* 'f' as in force */ + LONG lFY; + LONG lFZ; + LONG lFRx; /* 'fr' as in rotational force aka torque */ + LONG lFRy; + LONG lFRz; + LONG rglFSlider[2]; +} DIJOYSTATE2, *LPDIJOYSTATE2; + +#define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX) +#define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY) +#define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ) +#define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx) +#define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy) +#define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz) +#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \ + (n) * sizeof(LONG)) +#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \ + (n) * sizeof(DWORD)) +#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n)) +#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0) +#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1) +#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2) +#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3) +#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4) +#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5) +#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6) +#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7) +#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8) +#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9) +#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10) +#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11) +#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12) +#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13) +#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14) +#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15) +#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16) +#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17) +#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18) +#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19) +#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20) +#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21) +#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22) +#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23) +#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24) +#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25) +#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26) +#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27) +#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28) +#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29) +#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30) +#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31) +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +/* DInput 7 structures, types */ +#if(DIRECTINPUT_VERSION >= 0x0700) +typedef struct DIFILEEFFECT { + DWORD dwSize; + GUID GuidEffect; + LPCDIEFFECT lpDiEffect; + CHAR szFriendlyName[MAX_PATH]; +} DIFILEEFFECT, *LPDIFILEEFFECT; + +typedef const DIFILEEFFECT *LPCDIFILEEFFECT; +typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +/* DInput 8 structures and types */ +#if DIRECTINPUT_VERSION >= 0x0800 +typedef struct _DIACTIONA { + UINT_PTR uAppData; + DWORD dwSemantic; + DWORD dwFlags; + __GNU_EXTENSION union { + LPCSTR lptszActionName; + UINT uResIdString; + } DUMMYUNIONNAME; + GUID guidInstance; + DWORD dwObjID; + DWORD dwHow; +} DIACTIONA, *LPDIACTIONA; +typedef const DIACTIONA *LPCDIACTIONA; + +typedef struct _DIACTIONW { + UINT_PTR uAppData; + DWORD dwSemantic; + DWORD dwFlags; + __GNU_EXTENSION union { + LPCWSTR lptszActionName; + UINT uResIdString; + } DUMMYUNIONNAME; + GUID guidInstance; + DWORD dwObjID; + DWORD dwHow; +} DIACTIONW, *LPDIACTIONW; +typedef const DIACTIONW *LPCDIACTIONW; + +DECL_WINELIB_TYPE_AW(DIACTION) +DECL_WINELIB_TYPE_AW(LPDIACTION) +DECL_WINELIB_TYPE_AW(LPCDIACTION) + +#define DIA_FORCEFEEDBACK 0x00000001 +#define DIA_APPMAPPED 0x00000002 +#define DIA_APPNOMAP 0x00000004 +#define DIA_NORANGE 0x00000008 +#define DIA_APPFIXED 0x00000010 + +#define DIAH_UNMAPPED 0x00000000 +#define DIAH_USERCONFIG 0x00000001 +#define DIAH_APPREQUESTED 0x00000002 +#define DIAH_HWAPP 0x00000004 +#define DIAH_HWDEFAULT 0x00000008 +#define DIAH_DEFAULT 0x00000020 +#define DIAH_ERROR 0x80000000 + +typedef struct _DIACTIONFORMATA { + DWORD dwSize; + DWORD dwActionSize; + DWORD dwDataSize; + DWORD dwNumActions; + LPDIACTIONA rgoAction; + GUID guidActionMap; + DWORD dwGenre; + DWORD dwBufferSize; + LONG lAxisMin; + LONG lAxisMax; + HINSTANCE hInstString; + FILETIME ftTimeStamp; + DWORD dwCRC; + CHAR tszActionMap[MAX_PATH]; +} DIACTIONFORMATA, *LPDIACTIONFORMATA; +typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; + +typedef struct _DIACTIONFORMATW { + DWORD dwSize; + DWORD dwActionSize; + DWORD dwDataSize; + DWORD dwNumActions; + LPDIACTIONW rgoAction; + GUID guidActionMap; + DWORD dwGenre; + DWORD dwBufferSize; + LONG lAxisMin; + LONG lAxisMax; + HINSTANCE hInstString; + FILETIME ftTimeStamp; + DWORD dwCRC; + WCHAR tszActionMap[MAX_PATH]; +} DIACTIONFORMATW, *LPDIACTIONFORMATW; +typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; + +DECL_WINELIB_TYPE_AW(DIACTIONFORMAT) +DECL_WINELIB_TYPE_AW(LPDIACTIONFORMAT) +DECL_WINELIB_TYPE_AW(LPCDIACTIONFORMAT) + +#define DIAFTS_NEWDEVICELOW 0xFFFFFFFF +#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF +#define DIAFTS_UNUSEDDEVICELOW 0x00000000 +#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000 + +#define DIDBAM_DEFAULT 0x00000000 +#define DIDBAM_PRESERVE 0x00000001 +#define DIDBAM_INITIALIZE 0x00000002 +#define DIDBAM_HWDEFAULTS 0x00000004 + +#define DIDSAM_DEFAULT 0x00000000 +#define DIDSAM_NOUSER 0x00000001 +#define DIDSAM_FORCESAVE 0x00000002 + +#define DICD_DEFAULT 0x00000000 +#define DICD_EDIT 0x00000001 + +#ifndef D3DCOLOR_DEFINED +typedef DWORD D3DCOLOR; +#define D3DCOLOR_DEFINED +#endif + +typedef struct _DICOLORSET { + DWORD dwSize; + D3DCOLOR cTextFore; + D3DCOLOR cTextHighlight; + D3DCOLOR cCalloutLine; + D3DCOLOR cCalloutHighlight; + D3DCOLOR cBorder; + D3DCOLOR cControlFill; + D3DCOLOR cHighlightFill; + D3DCOLOR cAreaFill; +} DICOLORSET, *LPDICOLORSET; +typedef const DICOLORSET *LPCDICOLORSET; + +typedef struct _DICONFIGUREDEVICESPARAMSA { + DWORD dwSize; + DWORD dwcUsers; + LPSTR lptszUserNames; + DWORD dwcFormats; + LPDIACTIONFORMATA lprgFormats; + HWND hwnd; + DICOLORSET dics; + LPUNKNOWN lpUnkDDSTarget; +} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA; +typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; + +typedef struct _DICONFIGUREDEVICESPARAMSW { + DWORD dwSize; + DWORD dwcUsers; + LPWSTR lptszUserNames; + DWORD dwcFormats; + LPDIACTIONFORMATW lprgFormats; + HWND hwnd; + DICOLORSET dics; + LPUNKNOWN lpUnkDDSTarget; +} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW; +typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; + +DECL_WINELIB_TYPE_AW(DICONFIGUREDEVICESPARAMS) +DECL_WINELIB_TYPE_AW(LPDICONFIGUREDEVICESPARAMS) +DECL_WINELIB_TYPE_AW(LPCDICONFIGUREDEVICESPARAMS) + +#define DIDIFT_CONFIGURATION 0x00000001 +#define DIDIFT_OVERLAY 0x00000002 + +#define DIDAL_CENTERED 0x00000000 +#define DIDAL_LEFTALIGNED 0x00000001 +#define DIDAL_RIGHTALIGNED 0x00000002 +#define DIDAL_MIDDLE 0x00000000 +#define DIDAL_TOPALIGNED 0x00000004 +#define DIDAL_BOTTOMALIGNED 0x00000008 + +typedef struct _DIDEVICEIMAGEINFOA { + CHAR tszImagePath[MAX_PATH]; + DWORD dwFlags; + DWORD dwViewID; + RECT rcOverlay; + DWORD dwObjID; + DWORD dwcValidPts; + POINT rgptCalloutLine[5]; + RECT rcCalloutRect; + DWORD dwTextAlign; +} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA; +typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; + +typedef struct _DIDEVICEIMAGEINFOW { + WCHAR tszImagePath[MAX_PATH]; + DWORD dwFlags; + DWORD dwViewID; + RECT rcOverlay; + DWORD dwObjID; + DWORD dwcValidPts; + POINT rgptCalloutLine[5]; + RECT rcCalloutRect; + DWORD dwTextAlign; +} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW; +typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; + +DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFO) +DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFO) +DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFO) + +typedef struct _DIDEVICEIMAGEINFOHEADERA { + DWORD dwSize; + DWORD dwSizeImageInfo; + DWORD dwcViews; + DWORD dwcButtons; + DWORD dwcAxes; + DWORD dwcPOVs; + DWORD dwBufferSize; + DWORD dwBufferUsed; + LPDIDEVICEIMAGEINFOA lprgImageInfoArray; +} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA; +typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; + +typedef struct _DIDEVICEIMAGEINFOHEADERW { + DWORD dwSize; + DWORD dwSizeImageInfo; + DWORD dwcViews; + DWORD dwcButtons; + DWORD dwcAxes; + DWORD dwcPOVs; + DWORD dwBufferSize; + DWORD dwBufferUsed; + LPDIDEVICEIMAGEINFOW lprgImageInfoArray; +} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW; +typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; + +DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFOHEADER) +DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFOHEADER) +DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFOHEADER) + +#endif /* DI8 */ + + +/***************************************************************************** + * IDirectInputEffect interface + */ +#if (DIRECTINPUT_VERSION >= 0x0500) +#undef INTERFACE +#define INTERFACE IDirectInputEffect +DECLARE_INTERFACE_(IDirectInputEffect,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputEffect methods ***/ + STDMETHOD(Initialize)(THIS_ HINSTANCE, DWORD, REFGUID) PURE; + STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; + STDMETHOD(GetParameters)(THIS_ LPDIEFFECT, DWORD) PURE; + STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT, DWORD) PURE; + STDMETHOD(Start)(THIS_ DWORD, DWORD) PURE; + STDMETHOD(Stop)(THIS) PURE; + STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; + STDMETHOD(Download)(THIS) PURE; + STDMETHOD(Unload)(THIS) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInputEffect methods ***/ +#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a) +#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b) +#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b) +#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b) +#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p) +#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a) +#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p) +#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p) +#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#else +/*** IUnknown methods ***/ +#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputEffect_AddRef(p) (p)->AddRef() +#define IDirectInputEffect_Release(p) (p)->Release() +/*** IDirectInputEffect methods ***/ +#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a) +#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b) +#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b) +#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b) +#define IDirectInputEffect_Stop(p) (p)->Stop() +#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a) +#define IDirectInputEffect_Download(p) (p)->Download() +#define IDirectInputEffect_Unload(p) (p)->Unload() +#define IDirectInputEffect_Escape(p,a) (p)->Escape(a) +#endif + +#endif /* DI5 */ + + +/***************************************************************************** + * IDirectInputDeviceA interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputDeviceA +DECLARE_INTERFACE_(IDirectInputDeviceA,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputDeviceA methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; +}; + +/***************************************************************************** + * IDirectInputDeviceW interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputDeviceW +DECLARE_INTERFACE_(IDirectInputDeviceW,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputDeviceW methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInputDevice methods ***/ +#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#else +/*** IUnknown methods ***/ +#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice_AddRef(p) (p)->AddRef() +#define IDirectInputDevice_Release(p) (p)->Release() +/*** IDirectInputDevice methods ***/ +#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice_Acquire(p) (p)->Acquire() +#define IDirectInputDevice_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#endif + + +#if (DIRECTINPUT_VERSION >= 0x0500) +/***************************************************************************** + * IDirectInputDevice2A interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputDevice2A +DECLARE_INTERFACE_(IDirectInputDevice2A,IDirectInputDeviceA) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputDeviceA methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; + /*** IDirectInputDevice2A methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; +}; + +/***************************************************************************** + * IDirectInputDevice2W interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputDevice2W +DECLARE_INTERFACE_(IDirectInputDevice2W,IDirectInputDeviceW) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputDeviceW methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; + /*** IDirectInputDevice2W methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInputDevice methods ***/ +#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +/*** IDirectInputDevice2 methods ***/ +#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +#else +/*** IUnknown methods ***/ +#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice2_AddRef(p) (p)->AddRef() +#define IDirectInputDevice2_Release(p) (p)->Release() +/*** IDirectInputDevice methods ***/ +#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice2_Acquire(p) (p)->Acquire() +#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +/*** IDirectInputDevice2 methods ***/ +#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice2_Poll(p) (p)->Poll() +#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +#endif +#endif /* DI5 */ + +#if DIRECTINPUT_VERSION >= 0x0700 +/***************************************************************************** + * IDirectInputDevice7A interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputDevice7A +DECLARE_INTERFACE_(IDirectInputDevice7A,IDirectInputDevice2A) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputDeviceA methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; + /*** IDirectInputDevice2A methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; + /*** IDirectInputDevice7A methods ***/ + STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; +}; + +/***************************************************************************** + * IDirectInputDevice7W interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputDevice7W +DECLARE_INTERFACE_(IDirectInputDevice7W,IDirectInputDevice2W) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputDeviceW methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; + /*** IDirectInputDevice2W methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; + /*** IDirectInputDevice7W methods ***/ + STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInputDevice methods ***/ +#define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +/*** IDirectInputDevice2 methods ***/ +#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +/*** IDirectInputDevice7 methods ***/ +#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) +#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) +#else +/*** IUnknown methods ***/ +#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice7_AddRef(p) (p)->AddRef() +#define IDirectInputDevice7_Release(p) (p)->Release() +/*** IDirectInputDevice methods ***/ +#define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice7_Acquire(p) (p)->Acquire() +#define IDirectInputDevice7_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +/*** IDirectInputDevice2 methods ***/ +#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice7_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice7_Poll(p) (p)->Poll() +#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +/*** IDirectInputDevice7 methods ***/ +#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) +#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) +#endif + +#endif /* DI7 */ + +#if DIRECTINPUT_VERSION >= 0x0800 +/***************************************************************************** + * IDirectInputDevice8A interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputDevice8A +DECLARE_INTERFACE_(IDirectInputDevice8A,IDirectInputDevice7A) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputDeviceA methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; + /*** IDirectInputDevice2A methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; + /*** IDirectInputDevice7A methods ***/ + STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; + /*** IDirectInputDevice8A methods ***/ + STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; + STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; + STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader) PURE; +}; + +/***************************************************************************** + * IDirectInputDevice8W interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputDevice8W +DECLARE_INTERFACE_(IDirectInputDevice8W,IDirectInputDevice7W) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputDeviceW methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; + /*** IDirectInputDevice2W methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; + /*** IDirectInputDevice7W methods ***/ + STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; + /*** IDirectInputDevice8W methods ***/ + STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE; + STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE; + STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW lpdiDevImageInfoHeader) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInputDevice methods ***/ +#define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +/*** IDirectInputDevice2 methods ***/ +#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +/*** IDirectInputDevice7 methods ***/ +#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) +#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) +/*** IDirectInputDevice8 methods ***/ +#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c) +#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c) +#define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a) +#else +/*** IUnknown methods ***/ +#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice8_AddRef(p) (p)->AddRef() +#define IDirectInputDevice8_Release(p) (p)->Release() +/*** IDirectInputDevice methods ***/ +#define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice8_Acquire(p) (p)->Acquire() +#define IDirectInputDevice8_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +/*** IDirectInputDevice2 methods ***/ +#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice8_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice8_Poll(p) (p)->Poll() +#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +/*** IDirectInputDevice7 methods ***/ +#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) +#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) +/*** IDirectInputDevice8 methods ***/ +#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c) +#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c) +#define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a) +#endif + +#endif /* DI8 */ + +/* "Standard" Mouse report... */ +typedef struct DIMOUSESTATE { + LONG lX; + LONG lY; + LONG lZ; + BYTE rgbButtons[4]; +} DIMOUSESTATE; + +#if DIRECTINPUT_VERSION >= 0x0700 +/* "Standard" Mouse report for DInput 7... */ +typedef struct DIMOUSESTATE2 { + LONG lX; + LONG lY; + LONG lZ; + BYTE rgbButtons[8]; +} DIMOUSESTATE2; +#endif /* DI7 */ + +#define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX) +#define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY) +#define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ) +#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0) +#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1) +#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2) +#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3) +#if DIRECTINPUT_VERSION >= 0x0700 +#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) +#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) +#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) +#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) +#endif /* DI7 */ + +#ifdef __cplusplus +extern "C" { +#endif +extern const DIDATAFORMAT c_dfDIMouse; +#if DIRECTINPUT_VERSION >= 0x0700 +extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */ +#endif /* DI7 */ +extern const DIDATAFORMAT c_dfDIKeyboard; +#if DIRECTINPUT_VERSION >= 0x0500 +extern const DIDATAFORMAT c_dfDIJoystick; +extern const DIDATAFORMAT c_dfDIJoystick2; +#endif /* DI5 */ +#ifdef __cplusplus +}; +#endif + +/***************************************************************************** + * IDirectInputA interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputA +DECLARE_INTERFACE_(IDirectInputA,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputA methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; +}; + +/***************************************************************************** + * IDirectInputW interface + */ +#undef INTERFACE +#define INTERFACE IDirectInputW +DECLARE_INTERFACE_(IDirectInputW,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputW methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInput methods ***/ +#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#else +/*** IUnknown methods ***/ +#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput_AddRef(p) (p)->AddRef() +#define IDirectInput_Release(p) (p)->Release() +/*** IDirectInput methods ***/ +#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b) +#endif + +/***************************************************************************** + * IDirectInput2A interface + */ +#undef INTERFACE +#define INTERFACE IDirectInput2A +DECLARE_INTERFACE_(IDirectInput2A,IDirectInputA) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputA methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; + /*** IDirectInput2A methods ***/ + STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; +}; + +/***************************************************************************** + * IDirectInput2W interface + */ +#undef INTERFACE +#define INTERFACE IDirectInput2W +DECLARE_INTERFACE_(IDirectInput2W,IDirectInputW) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputW methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; + /*** IDirectInput2W methods ***/ + STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInput methods ***/ +#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +/*** IDirectInput2 methods ***/ +#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +#else +/*** IUnknown methods ***/ +#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput2_AddRef(p) (p)->AddRef() +#define IDirectInput2_Release(p) (p)->Release() +/*** IDirectInput methods ***/ +#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b) +/*** IDirectInput2 methods ***/ +#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +#endif + +/***************************************************************************** + * IDirectInput7A interface + */ +#undef INTERFACE +#define INTERFACE IDirectInput7A +DECLARE_INTERFACE_(IDirectInput7A,IDirectInput2A) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputA methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; + /*** IDirectInput2A methods ***/ + STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; + /*** IDirectInput7A methods ***/ + STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE; +}; + +/***************************************************************************** + * IDirectInput7W interface + */ +#undef INTERFACE +#define INTERFACE IDirectInput7W +DECLARE_INTERFACE_(IDirectInput7W,IDirectInput2W) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInputW methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; + /*** IDirectInput2W methods ***/ + STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; + /*** IDirectInput7W methods ***/ + STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput7_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInput methods ***/ +#define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +/*** IDirectInput2 methods ***/ +#define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +/*** IDirectInput7 methods ***/ +#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d) +#else +/*** IUnknown methods ***/ +#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput7_AddRef(p) (p)->AddRef() +#define IDirectInput7_Release(p) (p)->Release() +/*** IDirectInput methods ***/ +#define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b) +/*** IDirectInput2 methods ***/ +#define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +/*** IDirectInput7 methods ***/ +#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d) +#endif + + +#if DIRECTINPUT_VERSION >= 0x0800 +/***************************************************************************** + * IDirectInput8A interface + */ +#undef INTERFACE +#define INTERFACE IDirectInput8A +DECLARE_INTERFACE_(IDirectInput8A,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInput8A methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; + STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE; +}; + +/***************************************************************************** + * IDirectInput8W interface + */ +#undef INTERFACE +#define INTERFACE IDirectInput8W +DECLARE_INTERFACE_(IDirectInput8W,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectInput8W methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8W *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; + STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; + STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE; +}; +#undef INTERFACE + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput8_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectInput8 methods ***/ +#define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e) +#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d) +#else +/*** IUnknown methods ***/ +#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput8_AddRef(p) (p)->AddRef() +#define IDirectInput8_Release(p) (p)->Release() +/*** IDirectInput8 methods ***/ +#define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e) +#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d) +#endif + +#endif /* DI8 */ + +/* Export functions */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if DIRECTINPUT_VERSION >= 0x0800 +HRESULT WINAPI DirectInput8Create(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); +#else /* DI < 8 */ +HRESULT WINAPI DirectInputCreateA(HINSTANCE,DWORD,LPDIRECTINPUTA *,LPUNKNOWN); +HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN); +#define DirectInputCreate WINELIB_NAME_AW(DirectInputCreate) + +HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); +#endif /* DI8 */ + +#ifdef __cplusplus +}; +#endif + +#endif /* __DINPUT_INCLUDED__ */ diff --git a/lib/glfw/deps/mingw/xinput.h b/lib/glfw/deps/mingw/xinput.h new file mode 100644 index 0000000..d3ca726 --- /dev/null +++ b/lib/glfw/deps/mingw/xinput.h @@ -0,0 +1,239 @@ +/* + * The Wine project - Xinput Joystick Library + * Copyright 2008 Andrew Fenn + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_XINPUT_H +#define __WINE_XINPUT_H + +#include + +/* + * Bitmasks for the joysticks buttons, determines what has + * been pressed on the joystick, these need to be mapped + * to whatever device you're using instead of an xbox 360 + * joystick + */ + +#define XINPUT_GAMEPAD_DPAD_UP 0x0001 +#define XINPUT_GAMEPAD_DPAD_DOWN 0x0002 +#define XINPUT_GAMEPAD_DPAD_LEFT 0x0004 +#define XINPUT_GAMEPAD_DPAD_RIGHT 0x0008 +#define XINPUT_GAMEPAD_START 0x0010 +#define XINPUT_GAMEPAD_BACK 0x0020 +#define XINPUT_GAMEPAD_LEFT_THUMB 0x0040 +#define XINPUT_GAMEPAD_RIGHT_THUMB 0x0080 +#define XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100 +#define XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200 +#define XINPUT_GAMEPAD_A 0x1000 +#define XINPUT_GAMEPAD_B 0x2000 +#define XINPUT_GAMEPAD_X 0x4000 +#define XINPUT_GAMEPAD_Y 0x8000 + +/* + * Defines the flags used to determine if the user is pushing + * down on a button, not holding a button, etc + */ + +#define XINPUT_KEYSTROKE_KEYDOWN 0x0001 +#define XINPUT_KEYSTROKE_KEYUP 0x0002 +#define XINPUT_KEYSTROKE_REPEAT 0x0004 + +/* + * Defines the codes which are returned by XInputGetKeystroke + */ + +#define VK_PAD_A 0x5800 +#define VK_PAD_B 0x5801 +#define VK_PAD_X 0x5802 +#define VK_PAD_Y 0x5803 +#define VK_PAD_RSHOULDER 0x5804 +#define VK_PAD_LSHOULDER 0x5805 +#define VK_PAD_LTRIGGER 0x5806 +#define VK_PAD_RTRIGGER 0x5807 +#define VK_PAD_DPAD_UP 0x5810 +#define VK_PAD_DPAD_DOWN 0x5811 +#define VK_PAD_DPAD_LEFT 0x5812 +#define VK_PAD_DPAD_RIGHT 0x5813 +#define VK_PAD_START 0x5814 +#define VK_PAD_BACK 0x5815 +#define VK_PAD_LTHUMB_PRESS 0x5816 +#define VK_PAD_RTHUMB_PRESS 0x5817 +#define VK_PAD_LTHUMB_UP 0x5820 +#define VK_PAD_LTHUMB_DOWN 0x5821 +#define VK_PAD_LTHUMB_RIGHT 0x5822 +#define VK_PAD_LTHUMB_LEFT 0x5823 +#define VK_PAD_LTHUMB_UPLEFT 0x5824 +#define VK_PAD_LTHUMB_UPRIGHT 0x5825 +#define VK_PAD_LTHUMB_DOWNRIGHT 0x5826 +#define VK_PAD_LTHUMB_DOWNLEFT 0x5827 +#define VK_PAD_RTHUMB_UP 0x5830 +#define VK_PAD_RTHUMB_DOWN 0x5831 +#define VK_PAD_RTHUMB_RIGHT 0x5832 +#define VK_PAD_RTHUMB_LEFT 0x5833 +#define VK_PAD_RTHUMB_UPLEFT 0x5834 +#define VK_PAD_RTHUMB_UPRIGHT 0x5835 +#define VK_PAD_RTHUMB_DOWNRIGHT 0x5836 +#define VK_PAD_RTHUMB_DOWNLEFT 0x5837 + +/* + * Deadzones are for analogue joystick controls on the joypad + * which determine when input should be assumed to be in the + * middle of the pad. This is a threshold to stop a joypad + * controlling the game when the player isn't touching the + * controls. + */ + +#define XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE 7849 +#define XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE 8689 +#define XINPUT_GAMEPAD_TRIGGER_THRESHOLD 30 + + +/* + * Defines what type of abilities the type of joystick has + * DEVTYPE_GAMEPAD is available for all joysticks, however + * there may be more specific identifiers for other joysticks + * which are being used. + */ + +#define XINPUT_DEVTYPE_GAMEPAD 0x01 +#define XINPUT_DEVSUBTYPE_GAMEPAD 0x01 +#define XINPUT_DEVSUBTYPE_WHEEL 0x02 +#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03 +#define XINPUT_DEVSUBTYPE_FLIGHT_SICK 0x04 +#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05 +#define XINPUT_DEVSUBTYPE_GUITAR 0x06 +#define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08 + +/* + * These are used with the XInputGetCapabilities function to + * determine the abilities to the joystick which has been + * plugged in. + */ + +#define XINPUT_CAPS_VOICE_SUPPORTED 0x0004 +#define XINPUT_FLAG_GAMEPAD 0x00000001 + +/* + * Defines the status of the battery if one is used in the + * attached joystick. The first two define if the joystick + * supports a battery. Disconnected means that the joystick + * isn't connected. Wired shows that the joystick is a wired + * joystick. + */ + +#define BATTERY_DEVTYPE_GAMEPAD 0x00 +#define BATTERY_DEVTYPE_HEADSET 0x01 +#define BATTERY_TYPE_DISCONNECTED 0x00 +#define BATTERY_TYPE_WIRED 0x01 +#define BATTERY_TYPE_ALKALINE 0x02 +#define BATTERY_TYPE_NIMH 0x03 +#define BATTERY_TYPE_UNKNOWN 0xFF +#define BATTERY_LEVEL_EMPTY 0x00 +#define BATTERY_LEVEL_LOW 0x01 +#define BATTERY_LEVEL_MEDIUM 0x02 +#define BATTERY_LEVEL_FULL 0x03 + +/* + * How many joysticks can be used with this library. Games that + * use the xinput library will not go over this number. + */ + +#define XUSER_MAX_COUNT 4 +#define XUSER_INDEX_ANY 0x000000FF + +/* + * Defines the structure of an xbox 360 joystick. + */ + +typedef struct _XINPUT_GAMEPAD { + WORD wButtons; + BYTE bLeftTrigger; + BYTE bRightTrigger; + SHORT sThumbLX; + SHORT sThumbLY; + SHORT sThumbRX; + SHORT sThumbRY; +} XINPUT_GAMEPAD, *PXINPUT_GAMEPAD; + +typedef struct _XINPUT_STATE { + DWORD dwPacketNumber; + XINPUT_GAMEPAD Gamepad; +} XINPUT_STATE, *PXINPUT_STATE; + +/* + * Defines the structure of how much vibration is set on both the + * right and left motors in a joystick. If you're not using a 360 + * joystick you will have to map these to your device. + */ + +typedef struct _XINPUT_VIBRATION { + WORD wLeftMotorSpeed; + WORD wRightMotorSpeed; +} XINPUT_VIBRATION, *PXINPUT_VIBRATION; + +/* + * Defines the structure for what kind of abilities the joystick has + * such abilities are things such as if the joystick has the ability + * to send and receive audio, if the joystick is in fact a driving + * wheel or perhaps if the joystick is some kind of dance pad or + * guitar. + */ + +typedef struct _XINPUT_CAPABILITIES { + BYTE Type; + BYTE SubType; + WORD Flags; + XINPUT_GAMEPAD Gamepad; + XINPUT_VIBRATION Vibration; +} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; + +/* + * Defines the structure for a joystick input event which is + * retrieved using the function XInputGetKeystroke + */ +typedef struct _XINPUT_KEYSTROKE { + WORD VirtualKey; + WCHAR Unicode; + WORD Flags; + BYTE UserIndex; + BYTE HidCode; +} XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; + +typedef struct _XINPUT_BATTERY_INFORMATION +{ + BYTE BatteryType; + BYTE BatteryLevel; +} XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION; + +#ifdef __cplusplus +extern "C" { +#endif + +void WINAPI XInputEnable(WINBOOL); +DWORD WINAPI XInputSetState(DWORD, XINPUT_VIBRATION*); +DWORD WINAPI XInputGetState(DWORD, XINPUT_STATE*); +DWORD WINAPI XInputGetKeystroke(DWORD, DWORD, PXINPUT_KEYSTROKE); +DWORD WINAPI XInputGetCapabilities(DWORD, DWORD, XINPUT_CAPABILITIES*); +DWORD WINAPI XInputGetDSoundAudioDeviceGuids(DWORD, GUID*, GUID*); +DWORD WINAPI XInputGetBatteryInformation(DWORD, BYTE, XINPUT_BATTERY_INFORMATION*); + +#ifdef __cplusplus +} +#endif + +#endif /* __WINE_XINPUT_H */ diff --git a/lib/glfw/deps/nuklear.h b/lib/glfw/deps/nuklear.h new file mode 100644 index 0000000..f2eb9df --- /dev/null +++ b/lib/glfw/deps/nuklear.h @@ -0,0 +1,25778 @@ +/* +/// # Nuklear +/// ![](https://cloud.githubusercontent.com/assets/8057201/11761525/ae06f0ca-a0c6-11e5-819d-5610b25f6ef4.gif) +/// +/// ## Contents +/// 1. About section +/// 2. Highlights section +/// 3. Features section +/// 4. Usage section +/// 1. Flags section +/// 2. Constants section +/// 3. Dependencies section +/// 5. Example section +/// 6. API section +/// 1. Context section +/// 2. Input section +/// 3. Drawing section +/// 4. Window section +/// 5. Layouting section +/// 6. Groups section +/// 7. Tree section +/// 8. Properties section +/// 7. License section +/// 8. Changelog section +/// 9. Gallery section +/// 10. Credits section +/// +/// ## About +/// This is a minimal state immediate mode graphical user interface toolkit +/// written in ANSI C and licensed under public domain. It was designed as a simple +/// embeddable user interface for application and does not have any dependencies, +/// a default renderbackend or OS window and input handling but instead provides a very modular +/// library approach by using simple input state for input and draw +/// commands describing primitive shapes as output. So instead of providing a +/// layered library that tries to abstract over a number of platform and +/// render backends it only focuses on the actual UI. +/// +/// ## Highlights +/// - Graphical user interface toolkit +/// - Single header library +/// - Written in C89 (a.k.a. ANSI C or ISO C90) +/// - Small codebase (~18kLOC) +/// - Focus on portability, efficiency and simplicity +/// - No dependencies (not even the standard library if not wanted) +/// - Fully skinnable and customizable +/// - Low memory footprint with total memory control if needed or wanted +/// - UTF-8 support +/// - No global or hidden state +/// - Customizable library modules (you can compile and use only what you need) +/// - Optional font baker and vertex buffer output +/// +/// ## Features +/// - Absolutely no platform dependent code +/// - Memory management control ranging from/to +/// - Ease of use by allocating everything from standard library +/// - Control every byte of memory inside the library +/// - Font handling control ranging from/to +/// - Use your own font implementation for everything +/// - Use this libraries internal font baking and handling API +/// - Drawing output control ranging from/to +/// - Simple shapes for more high level APIs which already have drawing capabilities +/// - Hardware accessible anti-aliased vertex buffer output +/// - Customizable colors and properties ranging from/to +/// - Simple changes to color by filling a simple color table +/// - Complete control with ability to use skinning to decorate widgets +/// - Bendable UI library with widget ranging from/to +/// - Basic widgets like buttons, checkboxes, slider, ... +/// - Advanced widget like abstract comboboxes, contextual menus,... +/// - Compile time configuration to only compile what you need +/// - Subset which can be used if you do not want to link or use the standard library +/// - Can be easily modified to only update on user input instead of frame updates +/// +/// ## Usage +/// This library is self contained in one single header file and can be used either +/// in header only mode or in implementation mode. The header only mode is used +/// by default when included and allows including this header in other headers +/// and does not contain the actual implementation.

+/// +/// The implementation mode requires to define the preprocessor macro +/// NK_IMPLEMENTATION in *one* .c/.cpp file before #includeing this file, e.g.: +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C +/// #define NK_IMPLEMENTATION +/// #include "nuklear.h" +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Also optionally define the symbols listed in the section "OPTIONAL DEFINES" +/// below in header and implementation mode if you want to use additional functionality +/// or need more control over the library. +/// +/// !!! WARNING +/// Every time nuklear is included define the same compiler flags. This very important not doing so could lead to compiler errors or even worse stack corruptions. +/// +/// ### Flags +/// Flag | Description +/// --------------------------------|------------------------------------------ +/// NK_PRIVATE | If defined declares all functions as static, so they can only be accessed inside the file that contains the implementation +/// NK_INCLUDE_FIXED_TYPES | If defined it will include header `` for fixed sized types otherwise nuklear tries to select the correct type. If that fails it will throw a compiler error and you have to select the correct types yourself. +/// NK_INCLUDE_DEFAULT_ALLOCATOR | If defined it will include header `` and provide additional functions to use this library without caring for memory allocation control and therefore ease memory management. +/// NK_INCLUDE_STANDARD_IO | If defined it will include header `` and provide additional functions depending on file loading. +/// NK_INCLUDE_STANDARD_VARARGS | If defined it will include header and provide additional functions depending on file loading. +/// NK_INCLUDE_VERTEX_BUFFER_OUTPUT | Defining this adds a vertex draw command list backend to this library, which allows you to convert queue commands into vertex draw commands. This is mainly if you need a hardware accessible format for OpenGL, DirectX, Vulkan, Metal,... +/// NK_INCLUDE_FONT_BAKING | Defining this adds `stb_truetype` and `stb_rect_pack` implementation to this library and provides font baking and rendering. If you already have font handling or do not want to use this font handler you don't have to define it. +/// NK_INCLUDE_DEFAULT_FONT | Defining this adds the default font: ProggyClean.ttf into this library which can be loaded into a font atlas and allows using this library without having a truetype font +/// NK_INCLUDE_COMMAND_USERDATA | Defining this adds a userdata pointer into each command. Can be useful for example if you want to provide custom shaders depending on the used widget. Can be combined with the style structures. +/// NK_BUTTON_TRIGGER_ON_RELEASE | Different platforms require button clicks occurring either on buttons being pressed (up to down) or released (down to up). By default this library will react on buttons being pressed, but if you define this it will only trigger if a button is released. +/// NK_ZERO_COMMAND_MEMORY | Defining this will zero out memory for each drawing command added to a drawing queue (inside nk_command_buffer_push). Zeroing command memory is very useful for fast checking (using memcmp) if command buffers are equal and avoid drawing frames when nothing on screen has changed since previous frame. +/// NK_UINT_DRAW_INDEX | Defining this will set the size of vertex index elements when using NK_VERTEX_BUFFER_OUTPUT to 32bit instead of the default of 16bit +/// NK_KEYSTATE_BASED_INPUT | Define this if your backend uses key state for each frame rather than key press/release events +/// +/// !!! WARNING +/// The following flags will pull in the standard C library: +/// - NK_INCLUDE_DEFAULT_ALLOCATOR +/// - NK_INCLUDE_STANDARD_IO +/// - NK_INCLUDE_STANDARD_VARARGS +/// +/// !!! WARNING +/// The following flags if defined need to be defined for both header and implementation: +/// - NK_INCLUDE_FIXED_TYPES +/// - NK_INCLUDE_DEFAULT_ALLOCATOR +/// - NK_INCLUDE_STANDARD_VARARGS +/// - NK_INCLUDE_VERTEX_BUFFER_OUTPUT +/// - NK_INCLUDE_FONT_BAKING +/// - NK_INCLUDE_DEFAULT_FONT +/// - NK_INCLUDE_STANDARD_VARARGS +/// - NK_INCLUDE_COMMAND_USERDATA +/// - NK_UINT_DRAW_INDEX +/// +/// ### Constants +/// Define | Description +/// --------------------------------|--------------------------------------- +/// NK_BUFFER_DEFAULT_INITIAL_SIZE | Initial buffer size allocated by all buffers while using the default allocator functions included by defining NK_INCLUDE_DEFAULT_ALLOCATOR. If you don't want to allocate the default 4k memory then redefine it. +/// NK_MAX_NUMBER_BUFFER | Maximum buffer size for the conversion buffer between float and string Under normal circumstances this should be more than sufficient. +/// NK_INPUT_MAX | Defines the max number of bytes which can be added as text input in one frame. Under normal circumstances this should be more than sufficient. +/// +/// !!! WARNING +/// The following constants if defined need to be defined for both header and implementation: +/// - NK_MAX_NUMBER_BUFFER +/// - NK_BUFFER_DEFAULT_INITIAL_SIZE +/// - NK_INPUT_MAX +/// +/// ### Dependencies +/// Function | Description +/// ------------|--------------------------------------------------------------- +/// NK_ASSERT | If you don't define this, nuklear will use with assert(). +/// NK_MEMSET | You can define this to 'memset' or your own memset implementation replacement. If not nuklear will use its own version. +/// NK_MEMCPY | You can define this to 'memcpy' or your own memcpy implementation replacement. If not nuklear will use its own version. +/// NK_SQRT | You can define this to 'sqrt' or your own sqrt implementation replacement. If not nuklear will use its own slow and not highly accurate version. +/// NK_SIN | You can define this to 'sinf' or your own sine implementation replacement. If not nuklear will use its own approximation implementation. +/// NK_COS | You can define this to 'cosf' or your own cosine implementation replacement. If not nuklear will use its own approximation implementation. +/// NK_STRTOD | You can define this to `strtod` or your own string to double conversion implementation replacement. If not defined nuklear will use its own imprecise and possibly unsafe version (does not handle nan or infinity!). +/// NK_DTOA | You can define this to `dtoa` or your own double to string conversion implementation replacement. If not defined nuklear will use its own imprecise and possibly unsafe version (does not handle nan or infinity!). +/// NK_VSNPRINTF| If you define `NK_INCLUDE_STANDARD_VARARGS` as well as `NK_INCLUDE_STANDARD_IO` and want to be safe define this to `vsnprintf` on compilers supporting later versions of C or C++. By default nuklear will check for your stdlib version in C as well as compiler version in C++. if `vsnprintf` is available it will define it to `vsnprintf` directly. If not defined and if you have older versions of C or C++ it will be defined to `vsprintf` which is unsafe. +/// +/// !!! WARNING +/// The following dependencies will pull in the standard C library if not redefined: +/// - NK_ASSERT +/// +/// !!! WARNING +/// The following dependencies if defined need to be defined for both header and implementation: +/// - NK_ASSERT +/// +/// !!! WARNING +/// The following dependencies if defined need to be defined only for the implementation part: +/// - NK_MEMSET +/// - NK_MEMCPY +/// - NK_SQRT +/// - NK_SIN +/// - NK_COS +/// - NK_STRTOD +/// - NK_DTOA +/// - NK_VSNPRINTF +/// +/// ## Example +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// // init gui state +/// enum {EASY, HARD}; +/// static int op = EASY; +/// static float value = 0.6f; +/// static int i = 20; +/// struct nk_context ctx; +/// +/// nk_init_fixed(&ctx, calloc(1, MAX_MEMORY), MAX_MEMORY, &font); +/// if (nk_begin(&ctx, "Show", nk_rect(50, 50, 220, 220), +/// NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_CLOSABLE)) { +/// // fixed widget pixel width +/// nk_layout_row_static(&ctx, 30, 80, 1); +/// if (nk_button_label(&ctx, "button")) { +/// // event handling +/// } +/// +/// // fixed widget window ratio width +/// nk_layout_row_dynamic(&ctx, 30, 2); +/// if (nk_option_label(&ctx, "easy", op == EASY)) op = EASY; +/// if (nk_option_label(&ctx, "hard", op == HARD)) op = HARD; +/// +/// // custom widget pixel width +/// nk_layout_row_begin(&ctx, NK_STATIC, 30, 2); +/// { +/// nk_layout_row_push(&ctx, 50); +/// nk_label(&ctx, "Volume:", NK_TEXT_LEFT); +/// nk_layout_row_push(&ctx, 110); +/// nk_slider_float(&ctx, 0, &value, 1.0f, 0.1f); +/// } +/// nk_layout_row_end(&ctx); +/// } +/// nk_end(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// ![](https://cloud.githubusercontent.com/assets/8057201/10187981/584ecd68-675c-11e5-897c-822ef534a876.png) +/// +/// ## API +/// +*/ +#ifndef NK_SINGLE_FILE + #define NK_SINGLE_FILE +#endif + +#ifndef NK_NUKLEAR_H_ +#define NK_NUKLEAR_H_ + +#ifdef __cplusplus +extern "C" { +#endif +/* + * ============================================================== + * + * CONSTANTS + * + * =============================================================== + */ +#define NK_UNDEFINED (-1.0f) +#define NK_UTF_INVALID 0xFFFD /* internal invalid utf8 rune */ +#define NK_UTF_SIZE 4 /* describes the number of bytes a glyph consists of*/ +#ifndef NK_INPUT_MAX + #define NK_INPUT_MAX 16 +#endif +#ifndef NK_MAX_NUMBER_BUFFER + #define NK_MAX_NUMBER_BUFFER 64 +#endif +#ifndef NK_SCROLLBAR_HIDING_TIMEOUT + #define NK_SCROLLBAR_HIDING_TIMEOUT 4.0f +#endif +/* + * ============================================================== + * + * HELPER + * + * =============================================================== + */ +#ifndef NK_API + #ifdef NK_PRIVATE + #if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199409L)) + #define NK_API static inline + #elif defined(__cplusplus) + #define NK_API static inline + #else + #define NK_API static + #endif + #else + #define NK_API extern + #endif +#endif +#ifndef NK_LIB + #ifdef NK_SINGLE_FILE + #define NK_LIB static + #else + #define NK_LIB extern + #endif +#endif + +#define NK_INTERN static +#define NK_STORAGE static +#define NK_GLOBAL static + +#define NK_FLAG(x) (1 << (x)) +#define NK_STRINGIFY(x) #x +#define NK_MACRO_STRINGIFY(x) NK_STRINGIFY(x) +#define NK_STRING_JOIN_IMMEDIATE(arg1, arg2) arg1 ## arg2 +#define NK_STRING_JOIN_DELAY(arg1, arg2) NK_STRING_JOIN_IMMEDIATE(arg1, arg2) +#define NK_STRING_JOIN(arg1, arg2) NK_STRING_JOIN_DELAY(arg1, arg2) + +#ifdef _MSC_VER + #define NK_UNIQUE_NAME(name) NK_STRING_JOIN(name,__COUNTER__) +#else + #define NK_UNIQUE_NAME(name) NK_STRING_JOIN(name,__LINE__) +#endif + +#ifndef NK_STATIC_ASSERT + #define NK_STATIC_ASSERT(exp) typedef char NK_UNIQUE_NAME(_dummy_array)[(exp)?1:-1] +#endif + +#ifndef NK_FILE_LINE +#ifdef _MSC_VER + #define NK_FILE_LINE __FILE__ ":" NK_MACRO_STRINGIFY(__COUNTER__) +#else + #define NK_FILE_LINE __FILE__ ":" NK_MACRO_STRINGIFY(__LINE__) +#endif +#endif + +#define NK_MIN(a,b) ((a) < (b) ? (a) : (b)) +#define NK_MAX(a,b) ((a) < (b) ? (b) : (a)) +#define NK_CLAMP(i,v,x) (NK_MAX(NK_MIN(v,x), i)) + +#ifdef NK_INCLUDE_STANDARD_VARARGS + #include /* valist, va_start, va_end, ... */ + #if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ + #include + #define NK_PRINTF_FORMAT_STRING _Printf_format_string_ + #else + #define NK_PRINTF_FORMAT_STRING + #endif + #if defined(__GNUC__) + #define NK_PRINTF_VARARG_FUNC(fmtargnumber) __attribute__((format(__printf__, fmtargnumber, fmtargnumber+1))) + #define NK_PRINTF_VALIST_FUNC(fmtargnumber) __attribute__((format(__printf__, fmtargnumber, 0))) + #else + #define NK_PRINTF_VARARG_FUNC(fmtargnumber) + #define NK_PRINTF_VALIST_FUNC(fmtargnumber) + #endif +#endif + +/* + * =============================================================== + * + * BASIC + * + * =============================================================== + */ +#ifdef NK_INCLUDE_FIXED_TYPES + #include + #define NK_INT8 int8_t + #define NK_UINT8 uint8_t + #define NK_INT16 int16_t + #define NK_UINT16 uint16_t + #define NK_INT32 int32_t + #define NK_UINT32 uint32_t + #define NK_SIZE_TYPE uintptr_t + #define NK_POINTER_TYPE uintptr_t +#else + #ifndef NK_INT8 + #define NK_INT8 signed char + #endif + #ifndef NK_UINT8 + #define NK_UINT8 unsigned char + #endif + #ifndef NK_INT16 + #define NK_INT16 signed short + #endif + #ifndef NK_UINT16 + #define NK_UINT16 unsigned short + #endif + #ifndef NK_INT32 + #if defined(_MSC_VER) + #define NK_INT32 __int32 + #else + #define NK_INT32 signed int + #endif + #endif + #ifndef NK_UINT32 + #if defined(_MSC_VER) + #define NK_UINT32 unsigned __int32 + #else + #define NK_UINT32 unsigned int + #endif + #endif + #ifndef NK_SIZE_TYPE + #if defined(_WIN64) && defined(_MSC_VER) + #define NK_SIZE_TYPE unsigned __int64 + #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) + #define NK_SIZE_TYPE unsigned __int32 + #elif defined(__GNUC__) || defined(__clang__) + #if defined(__x86_64__) || defined(__ppc64__) + #define NK_SIZE_TYPE unsigned long + #else + #define NK_SIZE_TYPE unsigned int + #endif + #else + #define NK_SIZE_TYPE unsigned long + #endif + #endif + #ifndef NK_POINTER_TYPE + #if defined(_WIN64) && defined(_MSC_VER) + #define NK_POINTER_TYPE unsigned __int64 + #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) + #define NK_POINTER_TYPE unsigned __int32 + #elif defined(__GNUC__) || defined(__clang__) + #if defined(__x86_64__) || defined(__ppc64__) + #define NK_POINTER_TYPE unsigned long + #else + #define NK_POINTER_TYPE unsigned int + #endif + #else + #define NK_POINTER_TYPE unsigned long + #endif + #endif +#endif + +typedef NK_INT8 nk_char; +typedef NK_UINT8 nk_uchar; +typedef NK_UINT8 nk_byte; +typedef NK_INT16 nk_short; +typedef NK_UINT16 nk_ushort; +typedef NK_INT32 nk_int; +typedef NK_UINT32 nk_uint; +typedef NK_SIZE_TYPE nk_size; +typedef NK_POINTER_TYPE nk_ptr; + +typedef nk_uint nk_hash; +typedef nk_uint nk_flags; +typedef nk_uint nk_rune; + +/* Make sure correct type size: + * This will fire with a negative subscript error if the type sizes + * are set incorrectly by the compiler, and compile out if not */ +NK_STATIC_ASSERT(sizeof(nk_short) == 2); +NK_STATIC_ASSERT(sizeof(nk_ushort) == 2); +NK_STATIC_ASSERT(sizeof(nk_uint) == 4); +NK_STATIC_ASSERT(sizeof(nk_int) == 4); +NK_STATIC_ASSERT(sizeof(nk_byte) == 1); +NK_STATIC_ASSERT(sizeof(nk_flags) >= 4); +NK_STATIC_ASSERT(sizeof(nk_rune) >= 4); +NK_STATIC_ASSERT(sizeof(nk_size) >= sizeof(void*)); +NK_STATIC_ASSERT(sizeof(nk_ptr) >= sizeof(void*)); + +/* ============================================================================ + * + * API + * + * =========================================================================== */ +struct nk_buffer; +struct nk_allocator; +struct nk_command_buffer; +struct nk_draw_command; +struct nk_convert_config; +struct nk_style_item; +struct nk_text_edit; +struct nk_draw_list; +struct nk_user_font; +struct nk_panel; +struct nk_context; +struct nk_draw_vertex_layout_element; +struct nk_style_button; +struct nk_style_toggle; +struct nk_style_selectable; +struct nk_style_slide; +struct nk_style_progress; +struct nk_style_scrollbar; +struct nk_style_edit; +struct nk_style_property; +struct nk_style_chart; +struct nk_style_combo; +struct nk_style_tab; +struct nk_style_window_header; +struct nk_style_window; + +enum {nk_false, nk_true}; +struct nk_color {nk_byte r,g,b,a;}; +struct nk_colorf {float r,g,b,a;}; +struct nk_vec2 {float x,y;}; +struct nk_vec2i {short x, y;}; +struct nk_rect {float x,y,w,h;}; +struct nk_recti {short x,y,w,h;}; +typedef char nk_glyph[NK_UTF_SIZE]; +typedef union {void *ptr; int id;} nk_handle; +struct nk_image {nk_handle handle;unsigned short w,h;unsigned short region[4];}; +struct nk_cursor {struct nk_image img; struct nk_vec2 size, offset;}; +struct nk_scroll {nk_uint x, y;}; + +enum nk_heading {NK_UP, NK_RIGHT, NK_DOWN, NK_LEFT}; +enum nk_button_behavior {NK_BUTTON_DEFAULT, NK_BUTTON_REPEATER}; +enum nk_modify {NK_FIXED = nk_false, NK_MODIFIABLE = nk_true}; +enum nk_orientation {NK_VERTICAL, NK_HORIZONTAL}; +enum nk_collapse_states {NK_MINIMIZED = nk_false, NK_MAXIMIZED = nk_true}; +enum nk_show_states {NK_HIDDEN = nk_false, NK_SHOWN = nk_true}; +enum nk_chart_type {NK_CHART_LINES, NK_CHART_COLUMN, NK_CHART_MAX}; +enum nk_chart_event {NK_CHART_HOVERING = 0x01, NK_CHART_CLICKED = 0x02}; +enum nk_color_format {NK_RGB, NK_RGBA}; +enum nk_popup_type {NK_POPUP_STATIC, NK_POPUP_DYNAMIC}; +enum nk_layout_format {NK_DYNAMIC, NK_STATIC}; +enum nk_tree_type {NK_TREE_NODE, NK_TREE_TAB}; + +typedef void*(*nk_plugin_alloc)(nk_handle, void *old, nk_size); +typedef void (*nk_plugin_free)(nk_handle, void *old); +typedef int(*nk_plugin_filter)(const struct nk_text_edit*, nk_rune unicode); +typedef void(*nk_plugin_paste)(nk_handle, struct nk_text_edit*); +typedef void(*nk_plugin_copy)(nk_handle, const char*, int len); + +struct nk_allocator { + nk_handle userdata; + nk_plugin_alloc alloc; + nk_plugin_free free; +}; +enum nk_symbol_type { + NK_SYMBOL_NONE, + NK_SYMBOL_X, + NK_SYMBOL_UNDERSCORE, + NK_SYMBOL_CIRCLE_SOLID, + NK_SYMBOL_CIRCLE_OUTLINE, + NK_SYMBOL_RECT_SOLID, + NK_SYMBOL_RECT_OUTLINE, + NK_SYMBOL_TRIANGLE_UP, + NK_SYMBOL_TRIANGLE_DOWN, + NK_SYMBOL_TRIANGLE_LEFT, + NK_SYMBOL_TRIANGLE_RIGHT, + NK_SYMBOL_PLUS, + NK_SYMBOL_MINUS, + NK_SYMBOL_MAX +}; +/* ============================================================================= + * + * CONTEXT + * + * =============================================================================*/ +/*/// ### Context +/// Contexts are the main entry point and the majestro of nuklear and contain all required state. +/// They are used for window, memory, input, style, stack, commands and time management and need +/// to be passed into all nuklear GUI specific functions. +/// +/// #### Usage +/// To use a context it first has to be initialized which can be achieved by calling +/// one of either `nk_init_default`, `nk_init_fixed`, `nk_init`, `nk_init_custom`. +/// Each takes in a font handle and a specific way of handling memory. Memory control +/// hereby ranges from standard library to just specifying a fixed sized block of memory +/// which nuklear has to manage itself from. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_context ctx; +/// nk_init_xxx(&ctx, ...); +/// while (1) { +/// // [...] +/// nk_clear(&ctx); +/// } +/// nk_free(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// #### Reference +/// Function | Description +/// --------------------|------------------------------------------------------- +/// __nk_init_default__ | Initializes context with standard library memory allocation (malloc,free) +/// __nk_init_fixed__ | Initializes context from single fixed size memory block +/// __nk_init__ | Initializes context with memory allocator callbacks for alloc and free +/// __nk_init_custom__ | Initializes context from two buffers. One for draw commands the other for window/panel/table allocations +/// __nk_clear__ | Called at the end of the frame to reset and prepare the context for the next frame +/// __nk_free__ | Shutdown and free all memory allocated inside the context +/// __nk_set_user_data__| Utility function to pass user data to draw command + */ +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +/*/// #### nk_init_default +/// Initializes a `nk_context` struct with a default standard library allocator. +/// Should be used if you don't want to be bothered with memory management in nuklear. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_init_default(struct nk_context *ctx, const struct nk_user_font *font); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|--------------------------------------------------------------- +/// __ctx__ | Must point to an either stack or heap allocated `nk_context` struct +/// __font__ | Must point to a previously initialized font handle for more info look at font documentation +/// +/// Returns either `false(0)` on failure or `true(1)` on success. +/// +*/ +NK_API int nk_init_default(struct nk_context*, const struct nk_user_font*); +#endif +/*/// #### nk_init_fixed +/// Initializes a `nk_context` struct from single fixed size memory block +/// Should be used if you want complete control over nuklear's memory management. +/// Especially recommended for system with little memory or systems with virtual memory. +/// For the later case you can just allocate for example 16MB of virtual memory +/// and only the required amount of memory will actually be committed. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_init_fixed(struct nk_context *ctx, void *memory, nk_size size, const struct nk_user_font *font); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// !!! Warning +/// make sure the passed memory block is aligned correctly for `nk_draw_commands`. +/// +/// Parameter | Description +/// ------------|-------------------------------------------------------------- +/// __ctx__ | Must point to an either stack or heap allocated `nk_context` struct +/// __memory__ | Must point to a previously allocated memory block +/// __size__ | Must contain the total size of __memory__ +/// __font__ | Must point to a previously initialized font handle for more info look at font documentation +/// +/// Returns either `false(0)` on failure or `true(1)` on success. +*/ +NK_API int nk_init_fixed(struct nk_context*, void *memory, nk_size size, const struct nk_user_font*); +/*/// #### nk_init +/// Initializes a `nk_context` struct with memory allocation callbacks for nuklear to allocate +/// memory from. Used internally for `nk_init_default` and provides a kitchen sink allocation +/// interface to nuklear. Can be useful for cases like monitoring memory consumption. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_init(struct nk_context *ctx, struct nk_allocator *alloc, const struct nk_user_font *font); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|--------------------------------------------------------------- +/// __ctx__ | Must point to an either stack or heap allocated `nk_context` struct +/// __alloc__ | Must point to a previously allocated memory allocator +/// __font__ | Must point to a previously initialized font handle for more info look at font documentation +/// +/// Returns either `false(0)` on failure or `true(1)` on success. +*/ +NK_API int nk_init(struct nk_context*, struct nk_allocator*, const struct nk_user_font*); +/*/// #### nk_init_custom +/// Initializes a `nk_context` struct from two different either fixed or growing +/// buffers. The first buffer is for allocating draw commands while the second buffer is +/// used for allocating windows, panels and state tables. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_init_custom(struct nk_context *ctx, struct nk_buffer *cmds, struct nk_buffer *pool, const struct nk_user_font *font); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|--------------------------------------------------------------- +/// __ctx__ | Must point to an either stack or heap allocated `nk_context` struct +/// __cmds__ | Must point to a previously initialized memory buffer either fixed or dynamic to store draw commands into +/// __pool__ | Must point to a previously initialized memory buffer either fixed or dynamic to store windows, panels and tables +/// __font__ | Must point to a previously initialized font handle for more info look at font documentation +/// +/// Returns either `false(0)` on failure or `true(1)` on success. +*/ +NK_API int nk_init_custom(struct nk_context*, struct nk_buffer *cmds, struct nk_buffer *pool, const struct nk_user_font*); +/*/// #### nk_clear +/// Resets the context state at the end of the frame. This includes mostly +/// garbage collector tasks like removing windows or table not called and therefore +/// used anymore. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_clear(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +*/ +NK_API void nk_clear(struct nk_context*); +/*/// #### nk_free +/// Frees all memory allocated by nuklear. Not needed if context was +/// initialized with `nk_init_fixed`. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_free(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +*/ +NK_API void nk_free(struct nk_context*); +#ifdef NK_INCLUDE_COMMAND_USERDATA +/*/// #### nk_set_user_data +/// Sets the currently passed userdata passed down into each draw command. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_set_user_data(struct nk_context *ctx, nk_handle data); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|-------------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +/// __data__ | Handle with either pointer or index to be passed into every draw commands +*/ +NK_API void nk_set_user_data(struct nk_context*, nk_handle handle); +#endif +/* ============================================================================= + * + * INPUT + * + * =============================================================================*/ +/*/// ### Input +/// The input API is responsible for holding the current input state composed of +/// mouse, key and text input states. +/// It is worth noting that no direct OS or window handling is done in nuklear. +/// Instead all input state has to be provided by platform specific code. This on one hand +/// expects more work from the user and complicates usage but on the other hand +/// provides simple abstraction over a big number of platforms, libraries and other +/// already provided functionality. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// nk_input_begin(&ctx); +/// while (GetEvent(&evt)) { +/// if (evt.type == MOUSE_MOVE) +/// nk_input_motion(&ctx, evt.motion.x, evt.motion.y); +/// else if (evt.type == [...]) { +/// // [...] +/// } +/// } nk_input_end(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// #### Usage +/// Input state needs to be provided to nuklear by first calling `nk_input_begin` +/// which resets internal state like delta mouse position and button transistions. +/// After `nk_input_begin` all current input state needs to be provided. This includes +/// mouse motion, button and key pressed and released, text input and scrolling. +/// Both event- or state-based input handling are supported by this API +/// and should work without problems. Finally after all input state has been +/// mirrored `nk_input_end` needs to be called to finish input process. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_context ctx; +/// nk_init_xxx(&ctx, ...); +/// while (1) { +/// Event evt; +/// nk_input_begin(&ctx); +/// while (GetEvent(&evt)) { +/// if (evt.type == MOUSE_MOVE) +/// nk_input_motion(&ctx, evt.motion.x, evt.motion.y); +/// else if (evt.type == [...]) { +/// // [...] +/// } +/// } +/// nk_input_end(&ctx); +/// // [...] +/// nk_clear(&ctx); +/// } nk_free(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// #### Reference +/// Function | Description +/// --------------------|------------------------------------------------------- +/// __nk_input_begin__ | Begins the input mirroring process. Needs to be called before all other `nk_input_xxx` calls +/// __nk_input_motion__ | Mirrors mouse cursor position +/// __nk_input_key__ | Mirrors key state with either pressed or released +/// __nk_input_button__ | Mirrors mouse button state with either pressed or released +/// __nk_input_scroll__ | Mirrors mouse scroll values +/// __nk_input_char__ | Adds a single ASCII text character into an internal text buffer +/// __nk_input_glyph__ | Adds a single multi-byte UTF-8 character into an internal text buffer +/// __nk_input_unicode__| Adds a single unicode rune into an internal text buffer +/// __nk_input_end__ | Ends the input mirroring process by calculating state changes. Don't call any `nk_input_xxx` function referenced above after this call +*/ +enum nk_keys { + NK_KEY_NONE, + NK_KEY_SHIFT, + NK_KEY_CTRL, + NK_KEY_DEL, + NK_KEY_ENTER, + NK_KEY_TAB, + NK_KEY_BACKSPACE, + NK_KEY_COPY, + NK_KEY_CUT, + NK_KEY_PASTE, + NK_KEY_UP, + NK_KEY_DOWN, + NK_KEY_LEFT, + NK_KEY_RIGHT, + /* Shortcuts: text field */ + NK_KEY_TEXT_INSERT_MODE, + NK_KEY_TEXT_REPLACE_MODE, + NK_KEY_TEXT_RESET_MODE, + NK_KEY_TEXT_LINE_START, + NK_KEY_TEXT_LINE_END, + NK_KEY_TEXT_START, + NK_KEY_TEXT_END, + NK_KEY_TEXT_UNDO, + NK_KEY_TEXT_REDO, + NK_KEY_TEXT_SELECT_ALL, + NK_KEY_TEXT_WORD_LEFT, + NK_KEY_TEXT_WORD_RIGHT, + /* Shortcuts: scrollbar */ + NK_KEY_SCROLL_START, + NK_KEY_SCROLL_END, + NK_KEY_SCROLL_DOWN, + NK_KEY_SCROLL_UP, + NK_KEY_MAX +}; +enum nk_buttons { + NK_BUTTON_LEFT, + NK_BUTTON_MIDDLE, + NK_BUTTON_RIGHT, + NK_BUTTON_DOUBLE, + NK_BUTTON_MAX +}; +/*/// #### nk_input_begin +/// Begins the input mirroring process by resetting text, scroll +/// mouse, previous mouse position and movement as well as key state transitions, +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_begin(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +*/ +NK_API void nk_input_begin(struct nk_context*); +/*/// #### nk_input_motion +/// Mirrors current mouse position to nuklear +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_motion(struct nk_context *ctx, int x, int y); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +/// __x__ | Must hold an integer describing the current mouse cursor x-position +/// __y__ | Must hold an integer describing the current mouse cursor y-position +*/ +NK_API void nk_input_motion(struct nk_context*, int x, int y); +/*/// #### nk_input_key +/// Mirrors the state of a specific key to nuklear +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_key(struct nk_context*, enum nk_keys key, int down); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +/// __key__ | Must be any value specified in enum `nk_keys` that needs to be mirrored +/// __down__ | Must be 0 for key is up and 1 for key is down +*/ +NK_API void nk_input_key(struct nk_context*, enum nk_keys, int down); +/*/// #### nk_input_button +/// Mirrors the state of a specific mouse button to nuklear +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_button(struct nk_context *ctx, enum nk_buttons btn, int x, int y, int down); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +/// __btn__ | Must be any value specified in enum `nk_buttons` that needs to be mirrored +/// __x__ | Must contain an integer describing mouse cursor x-position on click up/down +/// __y__ | Must contain an integer describing mouse cursor y-position on click up/down +/// __down__ | Must be 0 for key is up and 1 for key is down +*/ +NK_API void nk_input_button(struct nk_context*, enum nk_buttons, int x, int y, int down); +/*/// #### nk_input_scroll +/// Copies the last mouse scroll value to nuklear. Is generally +/// a scroll value. So does not have to come from mouse and could also originate +/// TODO finish this sentence +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_scroll(struct nk_context *ctx, struct nk_vec2 val); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +/// __val__ | vector with both X- as well as Y-scroll value +*/ +NK_API void nk_input_scroll(struct nk_context*, struct nk_vec2 val); +/*/// #### nk_input_char +/// Copies a single ASCII character into an internal text buffer +/// This is basically a helper function to quickly push ASCII characters into +/// nuklear. +/// +/// !!! Note +/// Stores up to NK_INPUT_MAX bytes between `nk_input_begin` and `nk_input_end`. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_char(struct nk_context *ctx, char c); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +/// __c__ | Must be a single ASCII character preferable one that can be printed +*/ +NK_API void nk_input_char(struct nk_context*, char); +/*/// #### nk_input_glyph +/// Converts an encoded unicode rune into UTF-8 and copies the result into an +/// internal text buffer. +/// +/// !!! Note +/// Stores up to NK_INPUT_MAX bytes between `nk_input_begin` and `nk_input_end`. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_glyph(struct nk_context *ctx, const nk_glyph g); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +/// __g__ | UTF-32 unicode codepoint +*/ +NK_API void nk_input_glyph(struct nk_context*, const nk_glyph); +/*/// #### nk_input_unicode +/// Converts a unicode rune into UTF-8 and copies the result +/// into an internal text buffer. +/// !!! Note +/// Stores up to NK_INPUT_MAX bytes between `nk_input_begin` and `nk_input_end`. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_unicode(struct nk_context*, nk_rune rune); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +/// __rune__ | UTF-32 unicode codepoint +*/ +NK_API void nk_input_unicode(struct nk_context*, nk_rune); +/*/// #### nk_input_end +/// End the input mirroring process by resetting mouse grabbing +/// state to ensure the mouse cursor is not grabbed indefinitely. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_input_end(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to a previously initialized `nk_context` struct +*/ +NK_API void nk_input_end(struct nk_context*); +/* ============================================================================= + * + * DRAWING + * + * =============================================================================*/ +/*/// ### Drawing +/// This library was designed to be render backend agnostic so it does +/// not draw anything to screen directly. Instead all drawn shapes, widgets +/// are made of, are buffered into memory and make up a command queue. +/// Each frame therefore fills the command buffer with draw commands +/// that then need to be executed by the user and his own render backend. +/// After that the command buffer needs to be cleared and a new frame can be +/// started. It is probably important to note that the command buffer is the main +/// drawing API and the optional vertex buffer API only takes this format and +/// converts it into a hardware accessible format. +/// +/// #### Usage +/// To draw all draw commands accumulated over a frame you need your own render +/// backend able to draw a number of 2D primitives. This includes at least +/// filled and stroked rectangles, circles, text, lines, triangles and scissors. +/// As soon as this criterion is met you can iterate over each draw command +/// and execute each draw command in a interpreter like fashion: +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// const struct nk_command *cmd = 0; +/// nk_foreach(cmd, &ctx) { +/// switch (cmd->type) { +/// case NK_COMMAND_LINE: +/// your_draw_line_function(...) +/// break; +/// case NK_COMMAND_RECT +/// your_draw_rect_function(...) +/// break; +/// case //...: +/// //[...] +/// } +/// } +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// In program flow context draw commands need to be executed after input has been +/// gathered and the complete UI with windows and their contained widgets have +/// been executed and before calling `nk_clear` which frees all previously +/// allocated draw commands. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_context ctx; +/// nk_init_xxx(&ctx, ...); +/// while (1) { +/// Event evt; +/// nk_input_begin(&ctx); +/// while (GetEvent(&evt)) { +/// if (evt.type == MOUSE_MOVE) +/// nk_input_motion(&ctx, evt.motion.x, evt.motion.y); +/// else if (evt.type == [...]) { +/// [...] +/// } +/// } +/// nk_input_end(&ctx); +/// // +/// // [...] +/// // +/// const struct nk_command *cmd = 0; +/// nk_foreach(cmd, &ctx) { +/// switch (cmd->type) { +/// case NK_COMMAND_LINE: +/// your_draw_line_function(...) +/// break; +/// case NK_COMMAND_RECT +/// your_draw_rect_function(...) +/// break; +/// case ...: +/// // [...] +/// } +/// nk_clear(&ctx); +/// } +/// nk_free(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// You probably noticed that you have to draw all of the UI each frame which is +/// quite wasteful. While the actual UI updating loop is quite fast rendering +/// without actually needing it is not. So there are multiple things you could do. +/// +/// First is only update on input. This of course is only an option if your +/// application only depends on the UI and does not require any outside calculations. +/// If you actually only update on input make sure to update the UI two times each +/// frame and call `nk_clear` directly after the first pass and only draw in +/// the second pass. In addition it is recommended to also add additional timers +/// to make sure the UI is not drawn more than a fixed number of frames per second. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_context ctx; +/// nk_init_xxx(&ctx, ...); +/// while (1) { +/// // [...wait for input ] +/// // [...do two UI passes ...] +/// do_ui(...) +/// nk_clear(&ctx); +/// do_ui(...) +/// // +/// // draw +/// const struct nk_command *cmd = 0; +/// nk_foreach(cmd, &ctx) { +/// switch (cmd->type) { +/// case NK_COMMAND_LINE: +/// your_draw_line_function(...) +/// break; +/// case NK_COMMAND_RECT +/// your_draw_rect_function(...) +/// break; +/// case ...: +/// //[...] +/// } +/// nk_clear(&ctx); +/// } +/// nk_free(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// The second probably more applicable trick is to only draw if anything changed. +/// It is not really useful for applications with continuous draw loop but +/// quite useful for desktop applications. To actually get nuklear to only +/// draw on changes you first have to define `NK_ZERO_COMMAND_MEMORY` and +/// allocate a memory buffer that will store each unique drawing output. +/// After each frame you compare the draw command memory inside the library +/// with your allocated buffer by memcmp. If memcmp detects differences +/// you have to copy the command buffer into the allocated buffer +/// and then draw like usual (this example uses fixed memory but you could +/// use dynamically allocated memory). +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// //[... other defines ...] +/// #define NK_ZERO_COMMAND_MEMORY +/// #include "nuklear.h" +/// // +/// // setup context +/// struct nk_context ctx; +/// void *last = calloc(1,64*1024); +/// void *buf = calloc(1,64*1024); +/// nk_init_fixed(&ctx, buf, 64*1024); +/// // +/// // loop +/// while (1) { +/// // [...input...] +/// // [...ui...] +/// void *cmds = nk_buffer_memory(&ctx.memory); +/// if (memcmp(cmds, last, ctx.memory.allocated)) { +/// memcpy(last,cmds,ctx.memory.allocated); +/// const struct nk_command *cmd = 0; +/// nk_foreach(cmd, &ctx) { +/// switch (cmd->type) { +/// case NK_COMMAND_LINE: +/// your_draw_line_function(...) +/// break; +/// case NK_COMMAND_RECT +/// your_draw_rect_function(...) +/// break; +/// case ...: +/// // [...] +/// } +/// } +/// } +/// nk_clear(&ctx); +/// } +/// nk_free(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Finally while using draw commands makes sense for higher abstracted platforms like +/// X11 and Win32 or drawing libraries it is often desirable to use graphics +/// hardware directly. Therefore it is possible to just define +/// `NK_INCLUDE_VERTEX_BUFFER_OUTPUT` which includes optional vertex output. +/// To access the vertex output you first have to convert all draw commands into +/// vertexes by calling `nk_convert` which takes in your preferred vertex format. +/// After successfully converting all draw commands just iterate over and execute all +/// vertex draw commands: +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// // fill configuration +/// struct your_vertex +/// { +/// float pos[2]; // important to keep it to 2 floats +/// float uv[2]; +/// unsigned char col[4]; +/// }; +/// struct nk_convert_config cfg = {}; +/// static const struct nk_draw_vertex_layout_element vertex_layout[] = { +/// {NK_VERTEX_POSITION, NK_FORMAT_FLOAT, NK_OFFSETOF(struct your_vertex, pos)}, +/// {NK_VERTEX_TEXCOORD, NK_FORMAT_FLOAT, NK_OFFSETOF(struct your_vertex, uv)}, +/// {NK_VERTEX_COLOR, NK_FORMAT_R8G8B8A8, NK_OFFSETOF(struct your_vertex, col)}, +/// {NK_VERTEX_LAYOUT_END} +/// }; +/// cfg.shape_AA = NK_ANTI_ALIASING_ON; +/// cfg.line_AA = NK_ANTI_ALIASING_ON; +/// cfg.vertex_layout = vertex_layout; +/// cfg.vertex_size = sizeof(struct your_vertex); +/// cfg.vertex_alignment = NK_ALIGNOF(struct your_vertex); +/// cfg.circle_segment_count = 22; +/// cfg.curve_segment_count = 22; +/// cfg.arc_segment_count = 22; +/// cfg.global_alpha = 1.0f; +/// cfg.null = dev->null; +/// // +/// // setup buffers and convert +/// struct nk_buffer cmds, verts, idx; +/// nk_buffer_init_default(&cmds); +/// nk_buffer_init_default(&verts); +/// nk_buffer_init_default(&idx); +/// nk_convert(&ctx, &cmds, &verts, &idx, &cfg); +/// // +/// // draw +/// nk_draw_foreach(cmd, &ctx, &cmds) { +/// if (!cmd->elem_count) continue; +/// //[...] +/// } +/// nk_buffer_free(&cms); +/// nk_buffer_free(&verts); +/// nk_buffer_free(&idx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// #### Reference +/// Function | Description +/// --------------------|------------------------------------------------------- +/// __nk__begin__ | Returns the first draw command in the context draw command list to be drawn +/// __nk__next__ | Increments the draw command iterator to the next command inside the context draw command list +/// __nk_foreach__ | Iterates over each draw command inside the context draw command list +/// __nk_convert__ | Converts from the abstract draw commands list into a hardware accessible vertex format +/// __nk_draw_begin__ | Returns the first vertex command in the context vertex draw list to be executed +/// __nk__draw_next__ | Increments the vertex command iterator to the next command inside the context vertex command list +/// __nk__draw_end__ | Returns the end of the vertex draw list +/// __nk_draw_foreach__ | Iterates over each vertex draw command inside the vertex draw list +*/ +enum nk_anti_aliasing {NK_ANTI_ALIASING_OFF, NK_ANTI_ALIASING_ON}; +enum nk_convert_result { + NK_CONVERT_SUCCESS = 0, + NK_CONVERT_INVALID_PARAM = 1, + NK_CONVERT_COMMAND_BUFFER_FULL = NK_FLAG(1), + NK_CONVERT_VERTEX_BUFFER_FULL = NK_FLAG(2), + NK_CONVERT_ELEMENT_BUFFER_FULL = NK_FLAG(3) +}; +struct nk_draw_null_texture { + nk_handle texture; /* texture handle to a texture with a white pixel */ + struct nk_vec2 uv; /* coordinates to a white pixel in the texture */ +}; +struct nk_convert_config { + float global_alpha; /* global alpha value */ + enum nk_anti_aliasing line_AA; /* line anti-aliasing flag can be turned off if you are tight on memory */ + enum nk_anti_aliasing shape_AA; /* shape anti-aliasing flag can be turned off if you are tight on memory */ + unsigned circle_segment_count; /* number of segments used for circles: default to 22 */ + unsigned arc_segment_count; /* number of segments used for arcs: default to 22 */ + unsigned curve_segment_count; /* number of segments used for curves: default to 22 */ + struct nk_draw_null_texture null; /* handle to texture with a white pixel for shape drawing */ + const struct nk_draw_vertex_layout_element *vertex_layout; /* describes the vertex output format and packing */ + nk_size vertex_size; /* sizeof one vertex for vertex packing */ + nk_size vertex_alignment; /* vertex alignment: Can be obtained by NK_ALIGNOF */ +}; +/*/// #### nk__begin +/// Returns a draw command list iterator to iterate all draw +/// commands accumulated over one frame. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// const struct nk_command* nk__begin(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | must point to an previously initialized `nk_context` struct at the end of a frame +/// +/// Returns draw command pointer pointing to the first command inside the draw command list +*/ +NK_API const struct nk_command* nk__begin(struct nk_context*); +/*/// #### nk__next +/// Returns draw command pointer pointing to the next command inside the draw command list +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// const struct nk_command* nk__next(struct nk_context*, const struct nk_command*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct at the end of a frame +/// __cmd__ | Must point to an previously a draw command either returned by `nk__begin` or `nk__next` +/// +/// Returns draw command pointer pointing to the next command inside the draw command list +*/ +NK_API const struct nk_command* nk__next(struct nk_context*, const struct nk_command*); +/*/// #### nk_foreach +/// Iterates over each draw command inside the context draw command list +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// #define nk_foreach(c, ctx) +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct at the end of a frame +/// __cmd__ | Command pointer initialized to NULL +/// +/// Iterates over each draw command inside the context draw command list +*/ +#define nk_foreach(c, ctx) for((c) = nk__begin(ctx); (c) != 0; (c) = nk__next(ctx,c)) +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT +/*/// #### nk_convert +/// Converts all internal draw commands into vertex draw commands and fills +/// three buffers with vertexes, vertex draw commands and vertex indices. The vertex format +/// as well as some other configuration values have to be configured by filling out a +/// `nk_convert_config` struct. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// nk_flags nk_convert(struct nk_context *ctx, struct nk_buffer *cmds, +/// struct nk_buffer *vertices, struct nk_buffer *elements, const struct nk_convert_config*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct at the end of a frame +/// __cmds__ | Must point to a previously initialized buffer to hold converted vertex draw commands +/// __vertices__| Must point to a previously initialized buffer to hold all produced vertices +/// __elements__| Must point to a previously initialized buffer to hold all produced vertex indices +/// __config__ | Must point to a filled out `nk_config` struct to configure the conversion process +/// +/// Returns one of enum nk_convert_result error codes +/// +/// Parameter | Description +/// --------------------------------|----------------------------------------------------------- +/// NK_CONVERT_SUCCESS | Signals a successful draw command to vertex buffer conversion +/// NK_CONVERT_INVALID_PARAM | An invalid argument was passed in the function call +/// NK_CONVERT_COMMAND_BUFFER_FULL | The provided buffer for storing draw commands is full or failed to allocate more memory +/// NK_CONVERT_VERTEX_BUFFER_FULL | The provided buffer for storing vertices is full or failed to allocate more memory +/// NK_CONVERT_ELEMENT_BUFFER_FULL | The provided buffer for storing indicies is full or failed to allocate more memory +*/ +NK_API nk_flags nk_convert(struct nk_context*, struct nk_buffer *cmds, struct nk_buffer *vertices, struct nk_buffer *elements, const struct nk_convert_config*); +/*/// #### nk__draw_begin +/// Returns a draw vertex command buffer iterator to iterate over the vertex draw command buffer +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// const struct nk_draw_command* nk__draw_begin(const struct nk_context*, const struct nk_buffer*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct at the end of a frame +/// __buf__ | Must point to an previously by `nk_convert` filled out vertex draw command buffer +/// +/// Returns vertex draw command pointer pointing to the first command inside the vertex draw command buffer +*/ +NK_API const struct nk_draw_command* nk__draw_begin(const struct nk_context*, const struct nk_buffer*); +/*/// #### nk__draw_end +/// Returns the vertex draw command at the end of the vertex draw command buffer +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// const struct nk_draw_command* nk__draw_end(const struct nk_context *ctx, const struct nk_buffer *buf); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct at the end of a frame +/// __buf__ | Must point to an previously by `nk_convert` filled out vertex draw command buffer +/// +/// Returns vertex draw command pointer pointing to the end of the last vertex draw command inside the vertex draw command buffer +*/ +NK_API const struct nk_draw_command* nk__draw_end(const struct nk_context*, const struct nk_buffer*); +/*/// #### nk__draw_next +/// Increments the vertex draw command buffer iterator +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// const struct nk_draw_command* nk__draw_next(const struct nk_draw_command*, const struct nk_buffer*, const struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __cmd__ | Must point to an previously either by `nk__draw_begin` or `nk__draw_next` returned vertex draw command +/// __buf__ | Must point to an previously by `nk_convert` filled out vertex draw command buffer +/// __ctx__ | Must point to an previously initialized `nk_context` struct at the end of a frame +/// +/// Returns vertex draw command pointer pointing to the end of the last vertex draw command inside the vertex draw command buffer +*/ +NK_API const struct nk_draw_command* nk__draw_next(const struct nk_draw_command*, const struct nk_buffer*, const struct nk_context*); +/*/// #### nk_draw_foreach +/// Iterates over each vertex draw command inside a vertex draw command buffer +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// #define nk_draw_foreach(cmd,ctx, b) +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __cmd__ | `nk_draw_command`iterator set to NULL +/// __buf__ | Must point to an previously by `nk_convert` filled out vertex draw command buffer +/// __ctx__ | Must point to an previously initialized `nk_context` struct at the end of a frame +*/ +#define nk_draw_foreach(cmd,ctx, b) for((cmd)=nk__draw_begin(ctx, b); (cmd)!=0; (cmd)=nk__draw_next(cmd, b, ctx)) +#endif +/* ============================================================================= + * + * WINDOW + * + * ============================================================================= +/// ### Window +/// Windows are the main persistent state used inside nuklear and are life time +/// controlled by simply "retouching" (i.e. calling) each window each frame. +/// All widgets inside nuklear can only be added inside the function pair `nk_begin_xxx` +/// and `nk_end`. Calling any widgets outside these two functions will result in an +/// assert in debug or no state change in release mode.

+/// +/// Each window holds frame persistent state like position, size, flags, state tables, +/// and some garbage collected internal persistent widget state. Each window +/// is linked into a window stack list which determines the drawing and overlapping +/// order. The topmost window thereby is the currently active window.

+/// +/// To change window position inside the stack occurs either automatically by +/// user input by being clicked on or programmatically by calling `nk_window_focus`. +/// Windows by default are visible unless explicitly being defined with flag +/// `NK_WINDOW_HIDDEN`, the user clicked the close button on windows with flag +/// `NK_WINDOW_CLOSABLE` or if a window was explicitly hidden by calling +/// `nk_window_show`. To explicitly close and destroy a window call `nk_window_close`.

+/// +/// #### Usage +/// To create and keep a window you have to call one of the two `nk_begin_xxx` +/// functions to start window declarations and `nk_end` at the end. Furthermore it +/// is recommended to check the return value of `nk_begin_xxx` and only process +/// widgets inside the window if the value is not 0. Either way you have to call +/// `nk_end` at the end of window declarations. Furthermore, do not attempt to +/// nest `nk_begin_xxx` calls which will hopefully result in an assert or if not +/// in a segmentation fault. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_begin_xxx(...) { +/// // [... widgets ...] +/// } +/// nk_end(ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// In the grand concept window and widget declarations need to occur after input +/// handling and before drawing to screen. Not doing so can result in higher +/// latency or at worst invalid behavior. Furthermore make sure that `nk_clear` +/// is called at the end of the frame. While nuklear's default platform backends +/// already call `nk_clear` for you if you write your own backend not calling +/// `nk_clear` can cause asserts or even worse undefined behavior. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_context ctx; +/// nk_init_xxx(&ctx, ...); +/// while (1) { +/// Event evt; +/// nk_input_begin(&ctx); +/// while (GetEvent(&evt)) { +/// if (evt.type == MOUSE_MOVE) +/// nk_input_motion(&ctx, evt.motion.x, evt.motion.y); +/// else if (evt.type == [...]) { +/// nk_input_xxx(...); +/// } +/// } +/// nk_input_end(&ctx); +/// +/// if (nk_begin_xxx(...) { +/// //[...] +/// } +/// nk_end(ctx); +/// +/// const struct nk_command *cmd = 0; +/// nk_foreach(cmd, &ctx) { +/// case NK_COMMAND_LINE: +/// your_draw_line_function(...) +/// break; +/// case NK_COMMAND_RECT +/// your_draw_rect_function(...) +/// break; +/// case //...: +/// //[...] +/// } +/// nk_clear(&ctx); +/// } +/// nk_free(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// #### Reference +/// Function | Description +/// ------------------------------------|---------------------------------------- +/// nk_begin | Starts a new window; needs to be called every frame for every window (unless hidden) or otherwise the window gets removed +/// nk_begin_titled | Extended window start with separated title and identifier to allow multiple windows with same name but not title +/// nk_end | Needs to be called at the end of the window building process to process scaling, scrollbars and general cleanup +// +/// nk_window_find | Finds and returns the window with give name +/// nk_window_get_bounds | Returns a rectangle with screen position and size of the currently processed window. +/// nk_window_get_position | Returns the position of the currently processed window +/// nk_window_get_size | Returns the size with width and height of the currently processed window +/// nk_window_get_width | Returns the width of the currently processed window +/// nk_window_get_height | Returns the height of the currently processed window +/// nk_window_get_panel | Returns the underlying panel which contains all processing state of the current window +/// nk_window_get_content_region | Returns the position and size of the currently visible and non-clipped space inside the currently processed window +/// nk_window_get_content_region_min | Returns the upper rectangle position of the currently visible and non-clipped space inside the currently processed window +/// nk_window_get_content_region_max | Returns the upper rectangle position of the currently visible and non-clipped space inside the currently processed window +/// nk_window_get_content_region_size | Returns the size of the currently visible and non-clipped space inside the currently processed window +/// nk_window_get_canvas | Returns the draw command buffer. Can be used to draw custom widgets +/// nk_window_get_scroll | Gets the scroll offset of the current window +/// nk_window_has_focus | Returns if the currently processed window is currently active +/// nk_window_is_collapsed | Returns if the window with given name is currently minimized/collapsed +/// nk_window_is_closed | Returns if the currently processed window was closed +/// nk_window_is_hidden | Returns if the currently processed window was hidden +/// nk_window_is_active | Same as nk_window_has_focus for some reason +/// nk_window_is_hovered | Returns if the currently processed window is currently being hovered by mouse +/// nk_window_is_any_hovered | Return if any window currently hovered +/// nk_item_is_any_active | Returns if any window or widgets is currently hovered or active +// +/// nk_window_set_bounds | Updates position and size of the currently processed window +/// nk_window_set_position | Updates position of the currently process window +/// nk_window_set_size | Updates the size of the currently processed window +/// nk_window_set_focus | Set the currently processed window as active window +/// nk_window_set_scroll | Sets the scroll offset of the current window +// +/// nk_window_close | Closes the window with given window name which deletes the window at the end of the frame +/// nk_window_collapse | Collapses the window with given window name +/// nk_window_collapse_if | Collapses the window with given window name if the given condition was met +/// nk_window_show | Hides a visible or reshows a hidden window +/// nk_window_show_if | Hides/shows a window depending on condition +*/ +/* +/// #### nk_panel_flags +/// Flag | Description +/// ----------------------------|---------------------------------------- +/// NK_WINDOW_BORDER | Draws a border around the window to visually separate window from the background +/// NK_WINDOW_MOVABLE | The movable flag indicates that a window can be moved by user input or by dragging the window header +/// NK_WINDOW_SCALABLE | The scalable flag indicates that a window can be scaled by user input by dragging a scaler icon at the button of the window +/// NK_WINDOW_CLOSABLE | Adds a closable icon into the header +/// NK_WINDOW_MINIMIZABLE | Adds a minimize icon into the header +/// NK_WINDOW_NO_SCROLLBAR | Removes the scrollbar from the window +/// NK_WINDOW_TITLE | Forces a header at the top at the window showing the title +/// NK_WINDOW_SCROLL_AUTO_HIDE | Automatically hides the window scrollbar if no user interaction: also requires delta time in `nk_context` to be set each frame +/// NK_WINDOW_BACKGROUND | Always keep window in the background +/// NK_WINDOW_SCALE_LEFT | Puts window scaler in the left-bottom corner instead right-bottom +/// NK_WINDOW_NO_INPUT | Prevents window of scaling, moving or getting focus +/// +/// #### nk_collapse_states +/// State | Description +/// ----------------|----------------------------------------------------------- +/// __NK_MINIMIZED__| UI section is collased and not visibile until maximized +/// __NK_MAXIMIZED__| UI section is extended and visibile until minimized +///

+*/ +enum nk_panel_flags { + NK_WINDOW_BORDER = NK_FLAG(0), + NK_WINDOW_MOVABLE = NK_FLAG(1), + NK_WINDOW_SCALABLE = NK_FLAG(2), + NK_WINDOW_CLOSABLE = NK_FLAG(3), + NK_WINDOW_MINIMIZABLE = NK_FLAG(4), + NK_WINDOW_NO_SCROLLBAR = NK_FLAG(5), + NK_WINDOW_TITLE = NK_FLAG(6), + NK_WINDOW_SCROLL_AUTO_HIDE = NK_FLAG(7), + NK_WINDOW_BACKGROUND = NK_FLAG(8), + NK_WINDOW_SCALE_LEFT = NK_FLAG(9), + NK_WINDOW_NO_INPUT = NK_FLAG(10) +}; +/*/// #### nk_begin +/// Starts a new window; needs to be called every frame for every +/// window (unless hidden) or otherwise the window gets removed +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_begin(struct nk_context *ctx, const char *title, struct nk_rect bounds, nk_flags flags); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __title__ | Window title and identifier. Needs to be persistent over frames to identify the window +/// __bounds__ | Initial position and window size. However if you do not define `NK_WINDOW_SCALABLE` or `NK_WINDOW_MOVABLE` you can set window position and size every frame +/// __flags__ | Window flags defined in the nk_panel_flags section with a number of different window behaviors +/// +/// Returns `true(1)` if the window can be filled up with widgets from this point +/// until `nk_end` or `false(0)` otherwise for example if minimized +*/ +NK_API int nk_begin(struct nk_context *ctx, const char *title, struct nk_rect bounds, nk_flags flags); +/*/// #### nk_begin_titled +/// Extended window start with separated title and identifier to allow multiple +/// windows with same title but not name +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, struct nk_rect bounds, nk_flags flags); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Window identifier. Needs to be persistent over frames to identify the window +/// __title__ | Window title displayed inside header if flag `NK_WINDOW_TITLE` or either `NK_WINDOW_CLOSABLE` or `NK_WINDOW_MINIMIZED` was set +/// __bounds__ | Initial position and window size. However if you do not define `NK_WINDOW_SCALABLE` or `NK_WINDOW_MOVABLE` you can set window position and size every frame +/// __flags__ | Window flags defined in the nk_panel_flags section with a number of different window behaviors +/// +/// Returns `true(1)` if the window can be filled up with widgets from this point +/// until `nk_end` or `false(0)` otherwise for example if minimized +*/ +NK_API int nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, struct nk_rect bounds, nk_flags flags); +/*/// #### nk_end +/// Needs to be called at the end of the window building process to process scaling, scrollbars and general cleanup. +/// All widget calls after this functions will result in asserts or no state changes +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_end(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +*/ +NK_API void nk_end(struct nk_context *ctx); +/*/// #### nk_window_find +/// Finds and returns a window from passed name +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_window *nk_window_find(struct nk_context *ctx, const char *name); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Window identifier +/// +/// Returns a `nk_window` struct pointing to the identified window or NULL if +/// no window with the given name was found +*/ +NK_API struct nk_window *nk_window_find(struct nk_context *ctx, const char *name); +/*/// #### nk_window_get_bounds +/// Returns a rectangle with screen position and size of the currently processed window +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_rect nk_window_get_bounds(const struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns a `nk_rect` struct with window upper left window position and size +*/ +NK_API struct nk_rect nk_window_get_bounds(const struct nk_context *ctx); +/*/// #### nk_window_get_position +/// Returns the position of the currently processed window. +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_vec2 nk_window_get_position(const struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns a `nk_vec2` struct with window upper left position +*/ +NK_API struct nk_vec2 nk_window_get_position(const struct nk_context *ctx); +/*/// #### nk_window_get_size +/// Returns the size with width and height of the currently processed window. +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_vec2 nk_window_get_size(const struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns a `nk_vec2` struct with window width and height +*/ +NK_API struct nk_vec2 nk_window_get_size(const struct nk_context*); +/*/// #### nk_window_get_width +/// Returns the width of the currently processed window. +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// float nk_window_get_width(const struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns the current window width +*/ +NK_API float nk_window_get_width(const struct nk_context*); +/*/// #### nk_window_get_height +/// Returns the height of the currently processed window. +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// float nk_window_get_height(const struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns the current window height +*/ +NK_API float nk_window_get_height(const struct nk_context*); +/*/// #### nk_window_get_panel +/// Returns the underlying panel which contains all processing state of the current window. +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// !!! WARNING +/// Do not keep the returned panel pointer around, it is only valid until `nk_end` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_panel* nk_window_get_panel(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns a pointer to window internal `nk_panel` state. +*/ +NK_API struct nk_panel* nk_window_get_panel(struct nk_context*); +/*/// #### nk_window_get_content_region +/// Returns the position and size of the currently visible and non-clipped space +/// inside the currently processed window. +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_rect nk_window_get_content_region(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns `nk_rect` struct with screen position and size (no scrollbar offset) +/// of the visible space inside the current window +*/ +NK_API struct nk_rect nk_window_get_content_region(struct nk_context*); +/*/// #### nk_window_get_content_region_min +/// Returns the upper left position of the currently visible and non-clipped +/// space inside the currently processed window. +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_vec2 nk_window_get_content_region_min(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// returns `nk_vec2` struct with upper left screen position (no scrollbar offset) +/// of the visible space inside the current window +*/ +NK_API struct nk_vec2 nk_window_get_content_region_min(struct nk_context*); +/*/// #### nk_window_get_content_region_max +/// Returns the lower right screen position of the currently visible and +/// non-clipped space inside the currently processed window. +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_vec2 nk_window_get_content_region_max(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns `nk_vec2` struct with lower right screen position (no scrollbar offset) +/// of the visible space inside the current window +*/ +NK_API struct nk_vec2 nk_window_get_content_region_max(struct nk_context*); +/*/// #### nk_window_get_content_region_size +/// Returns the size of the currently visible and non-clipped space inside the +/// currently processed window +/// +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_vec2 nk_window_get_content_region_size(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns `nk_vec2` struct with size the visible space inside the current window +*/ +NK_API struct nk_vec2 nk_window_get_content_region_size(struct nk_context*); +/*/// #### nk_window_get_canvas +/// Returns the draw command buffer. Can be used to draw custom widgets +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// !!! WARNING +/// Do not keep the returned command buffer pointer around it is only valid until `nk_end` +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_command_buffer* nk_window_get_canvas(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns a pointer to window internal `nk_command_buffer` struct used as +/// drawing canvas. Can be used to do custom drawing. +*/ +NK_API struct nk_command_buffer* nk_window_get_canvas(struct nk_context*); +/*/// #### nk_window_get_scroll +/// Gets the scroll offset for the current window +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_get_scroll(struct nk_context *ctx, nk_uint *offset_x, nk_uint *offset_y); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// -------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __offset_x__ | A pointer to the x offset output (or NULL to ignore) +/// __offset_y__ | A pointer to the y offset output (or NULL to ignore) +*/ +NK_API void nk_window_get_scroll(struct nk_context*, nk_uint *offset_x, nk_uint *offset_y); +/*/// #### nk_window_has_focus +/// Returns if the currently processed window is currently active +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_window_has_focus(const struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns `false(0)` if current window is not active or `true(1)` if it is +*/ +NK_API int nk_window_has_focus(const struct nk_context*); +/*/// #### nk_window_is_hovered +/// Return if the current window is being hovered +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_window_is_hovered(struct nk_context *ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns `true(1)` if current window is hovered or `false(0)` otherwise +*/ +NK_API int nk_window_is_hovered(struct nk_context*); +/*/// #### nk_window_is_collapsed +/// Returns if the window with given name is currently minimized/collapsed +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_window_is_collapsed(struct nk_context *ctx, const char *name); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of window you want to check if it is collapsed +/// +/// Returns `true(1)` if current window is minimized and `false(0)` if window not +/// found or is not minimized +*/ +NK_API int nk_window_is_collapsed(struct nk_context *ctx, const char *name); +/*/// #### nk_window_is_closed +/// Returns if the window with given name was closed by calling `nk_close` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_window_is_closed(struct nk_context *ctx, const char *name); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of window you want to check if it is closed +/// +/// Returns `true(1)` if current window was closed or `false(0)` window not found or not closed +*/ +NK_API int nk_window_is_closed(struct nk_context*, const char*); +/*/// #### nk_window_is_hidden +/// Returns if the window with given name is hidden +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_window_is_hidden(struct nk_context *ctx, const char *name); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of window you want to check if it is hidden +/// +/// Returns `true(1)` if current window is hidden or `false(0)` window not found or visible +*/ +NK_API int nk_window_is_hidden(struct nk_context*, const char*); +/*/// #### nk_window_is_active +/// Same as nk_window_has_focus for some reason +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_window_is_active(struct nk_context *ctx, const char *name); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of window you want to check if it is active +/// +/// Returns `true(1)` if current window is active or `false(0)` window not found or not active +*/ +NK_API int nk_window_is_active(struct nk_context*, const char*); +/*/// #### nk_window_is_any_hovered +/// Returns if the any window is being hovered +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_window_is_any_hovered(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns `true(1)` if any window is hovered or `false(0)` otherwise +*/ +NK_API int nk_window_is_any_hovered(struct nk_context*); +/*/// #### nk_item_is_any_active +/// Returns if the any window is being hovered or any widget is currently active. +/// Can be used to decide if input should be processed by UI or your specific input handling. +/// Example could be UI and 3D camera to move inside a 3D space. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_item_is_any_active(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// +/// Returns `true(1)` if any window is hovered or any item is active or `false(0)` otherwise +*/ +NK_API int nk_item_is_any_active(struct nk_context*); +/*/// #### nk_window_set_bounds +/// Updates position and size of window with passed in name +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_set_bounds(struct nk_context*, const char *name, struct nk_rect bounds); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to modify both position and size +/// __bounds__ | Must point to a `nk_rect` struct with the new position and size +*/ +NK_API void nk_window_set_bounds(struct nk_context*, const char *name, struct nk_rect bounds); +/*/// #### nk_window_set_position +/// Updates position of window with passed name +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_set_position(struct nk_context*, const char *name, struct nk_vec2 pos); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to modify both position +/// __pos__ | Must point to a `nk_vec2` struct with the new position +*/ +NK_API void nk_window_set_position(struct nk_context*, const char *name, struct nk_vec2 pos); +/*/// #### nk_window_set_size +/// Updates size of window with passed in name +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_set_size(struct nk_context*, const char *name, struct nk_vec2); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to modify both window size +/// __size__ | Must point to a `nk_vec2` struct with new window size +*/ +NK_API void nk_window_set_size(struct nk_context*, const char *name, struct nk_vec2); +/*/// #### nk_window_set_focus +/// Sets the window with given name as active +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_set_focus(struct nk_context*, const char *name); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to set focus on +*/ +NK_API void nk_window_set_focus(struct nk_context*, const char *name); +/*/// #### nk_window_set_scroll +/// Sets the scroll offset for the current window +/// !!! WARNING +/// Only call this function between calls `nk_begin_xxx` and `nk_end` +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_set_scroll(struct nk_context *ctx, nk_uint offset_x, nk_uint offset_y); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// -------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __offset_x__ | The x offset to scroll to +/// __offset_y__ | The y offset to scroll to +*/ +NK_API void nk_window_set_scroll(struct nk_context*, nk_uint offset_x, nk_uint offset_y); +/*/// #### nk_window_close +/// Closes a window and marks it for being freed at the end of the frame +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_close(struct nk_context *ctx, const char *name); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to close +*/ +NK_API void nk_window_close(struct nk_context *ctx, const char *name); +/*/// #### nk_window_collapse +/// Updates collapse state of a window with given name +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_collapse(struct nk_context*, const char *name, enum nk_collapse_states state); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to close +/// __state__ | value out of nk_collapse_states section +*/ +NK_API void nk_window_collapse(struct nk_context*, const char *name, enum nk_collapse_states state); +/*/// #### nk_window_collapse_if +/// Updates collapse state of a window with given name if given condition is met +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_collapse_if(struct nk_context*, const char *name, enum nk_collapse_states, int cond); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to either collapse or maximize +/// __state__ | value out of nk_collapse_states section the window should be put into +/// __cond__ | condition that has to be met to actually commit the collapse state change +*/ +NK_API void nk_window_collapse_if(struct nk_context*, const char *name, enum nk_collapse_states, int cond); +/*/// #### nk_window_show +/// updates visibility state of a window with given name +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_show(struct nk_context*, const char *name, enum nk_show_states); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to either collapse or maximize +/// __state__ | state with either visible or hidden to modify the window with +*/ +NK_API void nk_window_show(struct nk_context*, const char *name, enum nk_show_states); +/*/// #### nk_window_show_if +/// Updates visibility state of a window with given name if a given condition is met +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_window_show_if(struct nk_context*, const char *name, enum nk_show_states, int cond); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __name__ | Identifier of the window to either hide or show +/// __state__ | state with either visible or hidden to modify the window with +/// __cond__ | condition that has to be met to actually commit the visbility state change +*/ +NK_API void nk_window_show_if(struct nk_context*, const char *name, enum nk_show_states, int cond); +/* ============================================================================= + * + * LAYOUT + * + * ============================================================================= +/// ### Layouting +/// Layouting in general describes placing widget inside a window with position and size. +/// While in this particular implementation there are five different APIs for layouting +/// each with different trade offs between control and ease of use.

+/// +/// All layouting methods in this library are based around the concept of a row. +/// A row has a height the window content grows by and a number of columns and each +/// layouting method specifies how each widget is placed inside the row. +/// After a row has been allocated by calling a layouting functions and then +/// filled with widgets will advance an internal pointer over the allocated row.

+/// +/// To actually define a layout you just call the appropriate layouting function +/// and each subsequent widget call will place the widget as specified. Important +/// here is that if you define more widgets then columns defined inside the layout +/// functions it will allocate the next row without you having to make another layouting

+/// call. +/// +/// Biggest limitation with using all these APIs outside the `nk_layout_space_xxx` API +/// is that you have to define the row height for each. However the row height +/// often depends on the height of the font.

+/// +/// To fix that internally nuklear uses a minimum row height that is set to the +/// height plus padding of currently active font and overwrites the row height +/// value if zero.

+/// +/// If you manually want to change the minimum row height then +/// use nk_layout_set_min_row_height, and use nk_layout_reset_min_row_height to +/// reset it back to be derived from font height.

+/// +/// Also if you change the font in nuklear it will automatically change the minimum +/// row height for you and. This means if you change the font but still want +/// a minimum row height smaller than the font you have to repush your value.

+/// +/// For actually more advanced UI I would even recommend using the `nk_layout_space_xxx` +/// layouting method in combination with a cassowary constraint solver (there are +/// some versions on github with permissive license model) to take over all control over widget +/// layouting yourself. However for quick and dirty layouting using all the other layouting +/// functions should be fine. +/// +/// #### Usage +/// 1. __nk_layout_row_dynamic__

+/// The easiest layouting function is `nk_layout_row_dynamic`. It provides each +/// widgets with same horizontal space inside the row and dynamically grows +/// if the owning window grows in width. So the number of columns dictates +/// the size of each widget dynamically by formula: +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// widget_width = (window_width - padding - spacing) * (1/colum_count) +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Just like all other layouting APIs if you define more widget than columns this +/// library will allocate a new row and keep all layouting parameters previously +/// defined. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_begin_xxx(...) { +/// // first row with height: 30 composed of two widgets +/// nk_layout_row_dynamic(&ctx, 30, 2); +/// nk_widget(...); +/// nk_widget(...); +/// // +/// // second row with same parameter as defined above +/// nk_widget(...); +/// nk_widget(...); +/// // +/// // third row uses 0 for height which will use auto layouting +/// nk_layout_row_dynamic(&ctx, 0, 2); +/// nk_widget(...); +/// nk_widget(...); +/// } +/// nk_end(...); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// 2. __nk_layout_row_static__

+/// Another easy layouting function is `nk_layout_row_static`. It provides each +/// widget with same horizontal pixel width inside the row and does not grow +/// if the owning window scales smaller or bigger. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_begin_xxx(...) { +/// // first row with height: 30 composed of two widgets with width: 80 +/// nk_layout_row_static(&ctx, 30, 80, 2); +/// nk_widget(...); +/// nk_widget(...); +/// // +/// // second row with same parameter as defined above +/// nk_widget(...); +/// nk_widget(...); +/// // +/// // third row uses 0 for height which will use auto layouting +/// nk_layout_row_static(&ctx, 0, 80, 2); +/// nk_widget(...); +/// nk_widget(...); +/// } +/// nk_end(...); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// 3. __nk_layout_row_xxx__

+/// A little bit more advanced layouting API are functions `nk_layout_row_begin`, +/// `nk_layout_row_push` and `nk_layout_row_end`. They allow to directly +/// specify each column pixel or window ratio in a row. It supports either +/// directly setting per column pixel width or widget window ratio but not +/// both. Furthermore it is a immediate mode API so each value is directly +/// pushed before calling a widget. Therefore the layout is not automatically +/// repeating like the last two layouting functions. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_begin_xxx(...) { +/// // first row with height: 25 composed of two widgets with width 60 and 40 +/// nk_layout_row_begin(ctx, NK_STATIC, 25, 2); +/// nk_layout_row_push(ctx, 60); +/// nk_widget(...); +/// nk_layout_row_push(ctx, 40); +/// nk_widget(...); +/// nk_layout_row_end(ctx); +/// // +/// // second row with height: 25 composed of two widgets with window ratio 0.25 and 0.75 +/// nk_layout_row_begin(ctx, NK_DYNAMIC, 25, 2); +/// nk_layout_row_push(ctx, 0.25f); +/// nk_widget(...); +/// nk_layout_row_push(ctx, 0.75f); +/// nk_widget(...); +/// nk_layout_row_end(ctx); +/// // +/// // third row with auto generated height: composed of two widgets with window ratio 0.25 and 0.75 +/// nk_layout_row_begin(ctx, NK_DYNAMIC, 0, 2); +/// nk_layout_row_push(ctx, 0.25f); +/// nk_widget(...); +/// nk_layout_row_push(ctx, 0.75f); +/// nk_widget(...); +/// nk_layout_row_end(ctx); +/// } +/// nk_end(...); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// 4. __nk_layout_row__

+/// The array counterpart to API nk_layout_row_xxx is the single nk_layout_row +/// functions. Instead of pushing either pixel or window ratio for every widget +/// it allows to define it by array. The trade of for less control is that +/// `nk_layout_row` is automatically repeating. Otherwise the behavior is the +/// same. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_begin_xxx(...) { +/// // two rows with height: 30 composed of two widgets with width 60 and 40 +/// const float size[] = {60,40}; +/// nk_layout_row(ctx, NK_STATIC, 30, 2, ratio); +/// nk_widget(...); +/// nk_widget(...); +/// nk_widget(...); +/// nk_widget(...); +/// // +/// // two rows with height: 30 composed of two widgets with window ratio 0.25 and 0.75 +/// const float ratio[] = {0.25, 0.75}; +/// nk_layout_row(ctx, NK_DYNAMIC, 30, 2, ratio); +/// nk_widget(...); +/// nk_widget(...); +/// nk_widget(...); +/// nk_widget(...); +/// // +/// // two rows with auto generated height composed of two widgets with window ratio 0.25 and 0.75 +/// const float ratio[] = {0.25, 0.75}; +/// nk_layout_row(ctx, NK_DYNAMIC, 30, 2, ratio); +/// nk_widget(...); +/// nk_widget(...); +/// nk_widget(...); +/// nk_widget(...); +/// } +/// nk_end(...); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// 5. __nk_layout_row_template_xxx__

+/// The most complex and second most flexible API is a simplified flexbox version without +/// line wrapping and weights for dynamic widgets. It is an immediate mode API but +/// unlike `nk_layout_row_xxx` it has auto repeat behavior and needs to be called +/// before calling the templated widgets. +/// The row template layout has three different per widget size specifier. The first +/// one is the `nk_layout_row_template_push_static` with fixed widget pixel width. +/// They do not grow if the row grows and will always stay the same. +/// The second size specifier is `nk_layout_row_template_push_variable` +/// which defines a minimum widget size but it also can grow if more space is available +/// not taken by other widgets. +/// Finally there are dynamic widgets with `nk_layout_row_template_push_dynamic` +/// which are completely flexible and unlike variable widgets can even shrink +/// to zero if not enough space is provided. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_begin_xxx(...) { +/// // two rows with height: 30 composed of three widgets +/// nk_layout_row_template_begin(ctx, 30); +/// nk_layout_row_template_push_dynamic(ctx); +/// nk_layout_row_template_push_variable(ctx, 80); +/// nk_layout_row_template_push_static(ctx, 80); +/// nk_layout_row_template_end(ctx); +/// // +/// // first row +/// nk_widget(...); // dynamic widget can go to zero if not enough space +/// nk_widget(...); // variable widget with min 80 pixel but can grow bigger if enough space +/// nk_widget(...); // static widget with fixed 80 pixel width +/// // +/// // second row same layout +/// nk_widget(...); +/// nk_widget(...); +/// nk_widget(...); +/// } +/// nk_end(...); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// 6. __nk_layout_space_xxx__

+/// Finally the most flexible API directly allows you to place widgets inside the +/// window. The space layout API is an immediate mode API which does not support +/// row auto repeat and directly sets position and size of a widget. Position +/// and size hereby can be either specified as ratio of allocated space or +/// allocated space local position and pixel size. Since this API is quite +/// powerful there are a number of utility functions to get the available space +/// and convert between local allocated space and screen space. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_begin_xxx(...) { +/// // static row with height: 500 (you can set column count to INT_MAX if you don't want to be bothered) +/// nk_layout_space_begin(ctx, NK_STATIC, 500, INT_MAX); +/// nk_layout_space_push(ctx, nk_rect(0,0,150,200)); +/// nk_widget(...); +/// nk_layout_space_push(ctx, nk_rect(200,200,100,200)); +/// nk_widget(...); +/// nk_layout_space_end(ctx); +/// // +/// // dynamic row with height: 500 (you can set column count to INT_MAX if you don't want to be bothered) +/// nk_layout_space_begin(ctx, NK_DYNAMIC, 500, INT_MAX); +/// nk_layout_space_push(ctx, nk_rect(0.5,0.5,0.1,0.1)); +/// nk_widget(...); +/// nk_layout_space_push(ctx, nk_rect(0.7,0.6,0.1,0.1)); +/// nk_widget(...); +/// } +/// nk_end(...); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// #### Reference +/// Function | Description +/// ----------------------------------------|------------------------------------ +/// nk_layout_set_min_row_height | Set the currently used minimum row height to a specified value +/// nk_layout_reset_min_row_height | Resets the currently used minimum row height to font height +/// nk_layout_widget_bounds | Calculates current width a static layout row can fit inside a window +/// nk_layout_ratio_from_pixel | Utility functions to calculate window ratio from pixel size +// +/// nk_layout_row_dynamic | Current layout is divided into n same sized growing columns +/// nk_layout_row_static | Current layout is divided into n same fixed sized columns +/// nk_layout_row_begin | Starts a new row with given height and number of columns +/// nk_layout_row_push | Pushes another column with given size or window ratio +/// nk_layout_row_end | Finished previously started row +/// nk_layout_row | Specifies row columns in array as either window ratio or size +// +/// nk_layout_row_template_begin | Begins the row template declaration +/// nk_layout_row_template_push_dynamic | Adds a dynamic column that dynamically grows and can go to zero if not enough space +/// nk_layout_row_template_push_variable | Adds a variable column that dynamically grows but does not shrink below specified pixel width +/// nk_layout_row_template_push_static | Adds a static column that does not grow and will always have the same size +/// nk_layout_row_template_end | Marks the end of the row template +// +/// nk_layout_space_begin | Begins a new layouting space that allows to specify each widgets position and size +/// nk_layout_space_push | Pushes position and size of the next widget in own coordinate space either as pixel or ratio +/// nk_layout_space_end | Marks the end of the layouting space +// +/// nk_layout_space_bounds | Callable after nk_layout_space_begin and returns total space allocated +/// nk_layout_space_to_screen | Converts vector from nk_layout_space coordinate space into screen space +/// nk_layout_space_to_local | Converts vector from screen space into nk_layout_space coordinates +/// nk_layout_space_rect_to_screen | Converts rectangle from nk_layout_space coordinate space into screen space +/// nk_layout_space_rect_to_local | Converts rectangle from screen space into nk_layout_space coordinates +*/ +/*/// #### nk_layout_set_min_row_height +/// Sets the currently used minimum row height. +/// !!! WARNING +/// The passed height needs to include both your preferred row height +/// as well as padding. No internal padding is added. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_set_min_row_height(struct nk_context*, float height); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __height__ | New minimum row height to be used for auto generating the row height +*/ +NK_API void nk_layout_set_min_row_height(struct nk_context*, float height); +/*/// #### nk_layout_reset_min_row_height +/// Reset the currently used minimum row height back to `font_height + text_padding + padding` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_reset_min_row_height(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +*/ +NK_API void nk_layout_reset_min_row_height(struct nk_context*); +/*/// #### nk_layout_widget_bounds +/// Returns the width of the next row allocate by one of the layouting functions +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_rect nk_layout_widget_bounds(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// +/// Return `nk_rect` with both position and size of the next row +*/ +NK_API struct nk_rect nk_layout_widget_bounds(struct nk_context*); +/*/// #### nk_layout_ratio_from_pixel +/// Utility functions to calculate window ratio from pixel size +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// float nk_layout_ratio_from_pixel(struct nk_context*, float pixel_width); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __pixel__ | Pixel_width to convert to window ratio +/// +/// Returns `nk_rect` with both position and size of the next row +*/ +NK_API float nk_layout_ratio_from_pixel(struct nk_context*, float pixel_width); +/*/// #### nk_layout_row_dynamic +/// Sets current row layout to share horizontal space +/// between @cols number of widgets evenly. Once called all subsequent widget +/// calls greater than @cols will allocate a new row with same layout. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_dynamic(struct nk_context *ctx, float height, int cols); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __height__ | Holds height of each widget in row or zero for auto layouting +/// __columns__ | Number of widget inside row +*/ +NK_API void nk_layout_row_dynamic(struct nk_context *ctx, float height, int cols); +/*/// #### nk_layout_row_static +/// Sets current row layout to fill @cols number of widgets +/// in row with same @item_width horizontal size. Once called all subsequent widget +/// calls greater than @cols will allocate a new row with same layout. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_static(struct nk_context *ctx, float height, int item_width, int cols); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __height__ | Holds height of each widget in row or zero for auto layouting +/// __width__ | Holds pixel width of each widget in the row +/// __columns__ | Number of widget inside row +*/ +NK_API void nk_layout_row_static(struct nk_context *ctx, float height, int item_width, int cols); +/*/// #### nk_layout_row_begin +/// Starts a new dynamic or fixed row with given height and columns. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, float row_height, int cols); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __fmt__ | either `NK_DYNAMIC` for window ratio or `NK_STATIC` for fixed size columns +/// __height__ | holds height of each widget in row or zero for auto layouting +/// __columns__ | Number of widget inside row +*/ +NK_API void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, float row_height, int cols); +/*/// #### nk_layout_row_push +/// Specifies either window ratio or width of a single column +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_push(struct nk_context*, float value); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __value__ | either a window ratio or fixed width depending on @fmt in previous `nk_layout_row_begin` call +*/ +NK_API void nk_layout_row_push(struct nk_context*, float value); +/*/// #### nk_layout_row_end +/// Finished previously started row +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_end(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +*/ +NK_API void nk_layout_row_end(struct nk_context*); +/*/// #### nk_layout_row +/// Specifies row columns in array as either window ratio or size +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row(struct nk_context*, enum nk_layout_format, float height, int cols, const float *ratio); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __fmt__ | Either `NK_DYNAMIC` for window ratio or `NK_STATIC` for fixed size columns +/// __height__ | Holds height of each widget in row or zero for auto layouting +/// __columns__ | Number of widget inside row +*/ +NK_API void nk_layout_row(struct nk_context*, enum nk_layout_format, float height, int cols, const float *ratio); +/*/// #### nk_layout_row_template_begin +/// Begins the row template declaration +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_template_begin(struct nk_context*, float row_height); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __height__ | Holds height of each widget in row or zero for auto layouting +*/ +NK_API void nk_layout_row_template_begin(struct nk_context*, float row_height); +/*/// #### nk_layout_row_template_push_dynamic +/// Adds a dynamic column that dynamically grows and can go to zero if not enough space +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_template_push_dynamic(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __height__ | Holds height of each widget in row or zero for auto layouting +*/ +NK_API void nk_layout_row_template_push_dynamic(struct nk_context*); +/*/// #### nk_layout_row_template_push_variable +/// Adds a variable column that dynamically grows but does not shrink below specified pixel width +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_template_push_variable(struct nk_context*, float min_width); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __width__ | Holds the minimum pixel width the next column must always be +*/ +NK_API void nk_layout_row_template_push_variable(struct nk_context*, float min_width); +/*/// #### nk_layout_row_template_push_static +/// Adds a static column that does not grow and will always have the same size +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_template_push_static(struct nk_context*, float width); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __width__ | Holds the absolute pixel width value the next column must be +*/ +NK_API void nk_layout_row_template_push_static(struct nk_context*, float width); +/*/// #### nk_layout_row_template_end +/// Marks the end of the row template +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_row_template_end(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +*/ +NK_API void nk_layout_row_template_end(struct nk_context*); +/*/// #### nk_layout_space_begin +/// Begins a new layouting space that allows to specify each widgets position and size. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_space_begin(struct nk_context*, enum nk_layout_format, float height, int widget_count); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` +/// __fmt__ | Either `NK_DYNAMIC` for window ratio or `NK_STATIC` for fixed size columns +/// __height__ | Holds height of each widget in row or zero for auto layouting +/// __columns__ | Number of widgets inside row +*/ +NK_API void nk_layout_space_begin(struct nk_context*, enum nk_layout_format, float height, int widget_count); +/*/// #### nk_layout_space_push +/// Pushes position and size of the next widget in own coordinate space either as pixel or ratio +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_space_push(struct nk_context *ctx, struct nk_rect bounds); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` +/// __bounds__ | Position and size in laoyut space local coordinates +*/ +NK_API void nk_layout_space_push(struct nk_context*, struct nk_rect bounds); +/*/// #### nk_layout_space_end +/// Marks the end of the layout space +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_layout_space_end(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` +*/ +NK_API void nk_layout_space_end(struct nk_context*); +/*/// #### nk_layout_space_bounds +/// Utility function to calculate total space allocated for `nk_layout_space` +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_rect nk_layout_space_bounds(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` +/// +/// Returns `nk_rect` holding the total space allocated +*/ +NK_API struct nk_rect nk_layout_space_bounds(struct nk_context*); +/*/// #### nk_layout_space_to_screen +/// Converts vector from nk_layout_space coordinate space into screen space +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_vec2 nk_layout_space_to_screen(struct nk_context*, struct nk_vec2); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` +/// __vec__ | Position to convert from layout space into screen coordinate space +/// +/// Returns transformed `nk_vec2` in screen space coordinates +*/ +NK_API struct nk_vec2 nk_layout_space_to_screen(struct nk_context*, struct nk_vec2); +/*/// #### nk_layout_space_to_local +/// Converts vector from layout space into screen space +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_vec2 nk_layout_space_to_local(struct nk_context*, struct nk_vec2); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` +/// __vec__ | Position to convert from screen space into layout coordinate space +/// +/// Returns transformed `nk_vec2` in layout space coordinates +*/ +NK_API struct nk_vec2 nk_layout_space_to_local(struct nk_context*, struct nk_vec2); +/*/// #### nk_layout_space_rect_to_screen +/// Converts rectangle from screen space into layout space +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_rect nk_layout_space_rect_to_screen(struct nk_context*, struct nk_rect); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` +/// __bounds__ | Rectangle to convert from layout space into screen space +/// +/// Returns transformed `nk_rect` in screen space coordinates +*/ +NK_API struct nk_rect nk_layout_space_rect_to_screen(struct nk_context*, struct nk_rect); +/*/// #### nk_layout_space_rect_to_local +/// Converts rectangle from layout space into screen space +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_rect nk_layout_space_rect_to_local(struct nk_context*, struct nk_rect); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` +/// __bounds__ | Rectangle to convert from layout space into screen space +/// +/// Returns transformed `nk_rect` in layout space coordinates +*/ +NK_API struct nk_rect nk_layout_space_rect_to_local(struct nk_context*, struct nk_rect); +/* ============================================================================= + * + * GROUP + * + * ============================================================================= +/// ### Groups +/// Groups are basically windows inside windows. They allow to subdivide space +/// in a window to layout widgets as a group. Almost all more complex widget +/// layouting requirements can be solved using groups and basic layouting +/// fuctionality. Groups just like windows are identified by an unique name and +/// internally keep track of scrollbar offsets by default. However additional +/// versions are provided to directly manage the scrollbar. +/// +/// #### Usage +/// To create a group you have to call one of the three `nk_group_begin_xxx` +/// functions to start group declarations and `nk_group_end` at the end. Furthermore it +/// is required to check the return value of `nk_group_begin_xxx` and only process +/// widgets inside the window if the value is not 0. +/// Nesting groups is possible and even encouraged since many layouting schemes +/// can only be achieved by nesting. Groups, unlike windows, need `nk_group_end` +/// to be only called if the corosponding `nk_group_begin_xxx` call does not return 0: +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_group_begin_xxx(ctx, ...) { +/// // [... widgets ...] +/// nk_group_end(ctx); +/// } +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// In the grand concept groups can be called after starting a window +/// with `nk_begin_xxx` and before calling `nk_end`: +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// struct nk_context ctx; +/// nk_init_xxx(&ctx, ...); +/// while (1) { +/// // Input +/// Event evt; +/// nk_input_begin(&ctx); +/// while (GetEvent(&evt)) { +/// if (evt.type == MOUSE_MOVE) +/// nk_input_motion(&ctx, evt.motion.x, evt.motion.y); +/// else if (evt.type == [...]) { +/// nk_input_xxx(...); +/// } +/// } +/// nk_input_end(&ctx); +/// // +/// // Window +/// if (nk_begin_xxx(...) { +/// // [...widgets...] +/// nk_layout_row_dynamic(...); +/// if (nk_group_begin_xxx(ctx, ...) { +/// //[... widgets ...] +/// nk_group_end(ctx); +/// } +/// } +/// nk_end(ctx); +/// // +/// // Draw +/// const struct nk_command *cmd = 0; +/// nk_foreach(cmd, &ctx) { +/// switch (cmd->type) { +/// case NK_COMMAND_LINE: +/// your_draw_line_function(...) +/// break; +/// case NK_COMMAND_RECT +/// your_draw_rect_function(...) +/// break; +/// case ...: +/// // [...] +/// } +/// nk_clear(&ctx); +/// } +/// nk_free(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// #### Reference +/// Function | Description +/// --------------------------------|------------------------------------------- +/// nk_group_begin | Start a new group with internal scrollbar handling +/// nk_group_begin_titled | Start a new group with separeted name and title and internal scrollbar handling +/// nk_group_end | Ends a group. Should only be called if nk_group_begin returned non-zero +/// nk_group_scrolled_offset_begin | Start a new group with manual separated handling of scrollbar x- and y-offset +/// nk_group_scrolled_begin | Start a new group with manual scrollbar handling +/// nk_group_scrolled_end | Ends a group with manual scrollbar handling. Should only be called if nk_group_begin returned non-zero +/// nk_group_get_scroll | Gets the scroll offset for the given group +/// nk_group_set_scroll | Sets the scroll offset for the given group +*/ +/*/// #### nk_group_begin +/// Starts a new widget group. Requires a previous layouting function to specify a pos/size. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_group_begin(struct nk_context*, const char *title, nk_flags); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __title__ | Must be an unique identifier for this group that is also used for the group header +/// __flags__ | Window flags defined in the nk_panel_flags section with a number of different group behaviors +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +NK_API int nk_group_begin(struct nk_context*, const char *title, nk_flags); +/*/// #### nk_group_begin_titled +/// Starts a new widget group. Requires a previous layouting function to specify a pos/size. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_group_begin_titled(struct nk_context*, const char *name, const char *title, nk_flags); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __id__ | Must be an unique identifier for this group +/// __title__ | Group header title +/// __flags__ | Window flags defined in the nk_panel_flags section with a number of different group behaviors +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +NK_API int nk_group_begin_titled(struct nk_context*, const char *name, const char *title, nk_flags); +/*/// #### nk_group_end +/// Ends a widget group +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_group_end(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +*/ +NK_API void nk_group_end(struct nk_context*); +/*/// #### nk_group_scrolled_offset_begin +/// starts a new widget group. requires a previous layouting function to specify +/// a size. Does not keep track of scrollbar. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_group_scrolled_offset_begin(struct nk_context*, nk_uint *x_offset, nk_uint *y_offset, const char *title, nk_flags flags); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __x_offset__| Scrollbar x-offset to offset all widgets inside the group horizontally. +/// __y_offset__| Scrollbar y-offset to offset all widgets inside the group vertically +/// __title__ | Window unique group title used to both identify and display in the group header +/// __flags__ | Window flags from the nk_panel_flags section +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +NK_API int nk_group_scrolled_offset_begin(struct nk_context*, nk_uint *x_offset, nk_uint *y_offset, const char *title, nk_flags flags); +/*/// #### nk_group_scrolled_begin +/// Starts a new widget group. requires a previous +/// layouting function to specify a size. Does not keep track of scrollbar. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_group_scrolled_begin(struct nk_context*, struct nk_scroll *off, const char *title, nk_flags); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __off__ | Both x- and y- scroll offset. Allows for manual scrollbar control +/// __title__ | Window unique group title used to both identify and display in the group header +/// __flags__ | Window flags from nk_panel_flags section +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +NK_API int nk_group_scrolled_begin(struct nk_context*, struct nk_scroll *off, const char *title, nk_flags); +/*/// #### nk_group_scrolled_end +/// Ends a widget group after calling nk_group_scrolled_offset_begin or nk_group_scrolled_begin. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_group_scrolled_end(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +*/ +NK_API void nk_group_scrolled_end(struct nk_context*); +/*/// #### nk_group_get_scroll +/// Gets the scroll position of the given group. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_group_get_scroll(struct nk_context*, const char *id, nk_uint *x_offset, nk_uint *y_offset); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// -------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __id__ | The id of the group to get the scroll position of +/// __x_offset__ | A pointer to the x offset output (or NULL to ignore) +/// __y_offset__ | A pointer to the y offset output (or NULL to ignore) +*/ +NK_API void nk_group_get_scroll(struct nk_context*, const char *id, nk_uint *x_offset, nk_uint *y_offset); +/*/// #### nk_group_set_scroll +/// Sets the scroll position of the given group. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_group_set_scroll(struct nk_context*, const char *id, nk_uint x_offset, nk_uint y_offset); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// -------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __id__ | The id of the group to scroll +/// __x_offset__ | The x offset to scroll to +/// __y_offset__ | The y offset to scroll to +*/ +NK_API void nk_group_set_scroll(struct nk_context*, const char *id, nk_uint x_offset, nk_uint y_offset); +/* ============================================================================= + * + * TREE + * + * ============================================================================= +/// ### Tree +/// Trees represent two different concept. First the concept of a collapsable +/// UI section that can be either in a hidden or visibile state. They allow the UI +/// user to selectively minimize the current set of visible UI to comprehend. +/// The second concept are tree widgets for visual UI representation of trees.

+/// +/// Trees thereby can be nested for tree representations and multiple nested +/// collapsable UI sections. All trees are started by calling of the +/// `nk_tree_xxx_push_tree` functions and ended by calling one of the +/// `nk_tree_xxx_pop_xxx()` functions. Each starting functions takes a title label +/// and optionally an image to be displayed and the initial collapse state from +/// the nk_collapse_states section.

+/// +/// The runtime state of the tree is either stored outside the library by the caller +/// or inside which requires a unique ID. The unique ID can either be generated +/// automatically from `__FILE__` and `__LINE__` with function `nk_tree_push`, +/// by `__FILE__` and a user provided ID generated for example by loop index with +/// function `nk_tree_push_id` or completely provided from outside by user with +/// function `nk_tree_push_hashed`. +/// +/// #### Usage +/// To create a tree you have to call one of the seven `nk_tree_xxx_push_xxx` +/// functions to start a collapsable UI section and `nk_tree_xxx_pop` to mark the +/// end. +/// Each starting function will either return `false(0)` if the tree is collapsed +/// or hidden and therefore does not need to be filled with content or `true(1)` +/// if visible and required to be filled. +/// +/// !!! Note +/// The tree header does not require and layouting function and instead +/// calculates a auto height based on the currently used font size +/// +/// The tree ending functions only need to be called if the tree content is +/// actually visible. So make sure the tree push function is guarded by `if` +/// and the pop call is only taken if the tree is visible. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// if (nk_tree_push(ctx, NK_TREE_TAB, "Tree", NK_MINIMIZED)) { +/// nk_layout_row_dynamic(...); +/// nk_widget(...); +/// nk_tree_pop(ctx); +/// } +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// #### Reference +/// Function | Description +/// ----------------------------|------------------------------------------- +/// nk_tree_push | Start a collapsable UI section with internal state management +/// nk_tree_push_id | Start a collapsable UI section with internal state management callable in a look +/// nk_tree_push_hashed | Start a collapsable UI section with internal state management with full control over internal unique ID use to store state +/// nk_tree_image_push | Start a collapsable UI section with image and label header +/// nk_tree_image_push_id | Start a collapsable UI section with image and label header and internal state management callable in a look +/// nk_tree_image_push_hashed | Start a collapsable UI section with image and label header and internal state management with full control over internal unique ID use to store state +/// nk_tree_pop | Ends a collapsable UI section +// +/// nk_tree_state_push | Start a collapsable UI section with external state management +/// nk_tree_state_image_push | Start a collapsable UI section with image and label header and external state management +/// nk_tree_state_pop | Ends a collapsabale UI section +/// +/// #### nk_tree_type +/// Flag | Description +/// ----------------|---------------------------------------- +/// NK_TREE_NODE | Highlighted tree header to mark a collapsable UI section +/// NK_TREE_TAB | Non-highighted tree header closer to tree representations +*/ +/*/// #### nk_tree_push +/// Starts a collapsable UI section with internal state management +/// !!! WARNING +/// To keep track of the runtime tree collapsable state this function uses +/// defines `__FILE__` and `__LINE__` to generate a unique ID. If you want +/// to call this function in a loop please use `nk_tree_push_id` or +/// `nk_tree_push_hashed` instead. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// #define nk_tree_push(ctx, type, title, state) +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __type__ | Value from the nk_tree_type section to visually mark a tree node header as either a collapseable UI section or tree node +/// __title__ | Label printed in the tree header +/// __state__ | Initial tree state value out of nk_collapse_states +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +#define nk_tree_push(ctx, type, title, state) nk_tree_push_hashed(ctx, type, title, state, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),__LINE__) +/*/// #### nk_tree_push_id +/// Starts a collapsable UI section with internal state management callable in a look +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// #define nk_tree_push_id(ctx, type, title, state, id) +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __type__ | Value from the nk_tree_type section to visually mark a tree node header as either a collapseable UI section or tree node +/// __title__ | Label printed in the tree header +/// __state__ | Initial tree state value out of nk_collapse_states +/// __id__ | Loop counter index if this function is called in a loop +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +#define nk_tree_push_id(ctx, type, title, state, id) nk_tree_push_hashed(ctx, type, title, state, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),id) +/*/// #### nk_tree_push_hashed +/// Start a collapsable UI section with internal state management with full +/// control over internal unique ID used to store state +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_tree_push_hashed(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __type__ | Value from the nk_tree_type section to visually mark a tree node header as either a collapseable UI section or tree node +/// __title__ | Label printed in the tree header +/// __state__ | Initial tree state value out of nk_collapse_states +/// __hash__ | Memory block or string to generate the ID from +/// __len__ | Size of passed memory block or string in __hash__ +/// __seed__ | Seeding value if this function is called in a loop or default to `0` +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +NK_API int nk_tree_push_hashed(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed); +/*/// #### nk_tree_image_push +/// Start a collapsable UI section with image and label header +/// !!! WARNING +/// To keep track of the runtime tree collapsable state this function uses +/// defines `__FILE__` and `__LINE__` to generate a unique ID. If you want +/// to call this function in a loop please use `nk_tree_image_push_id` or +/// `nk_tree_image_push_hashed` instead. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// #define nk_tree_image_push(ctx, type, img, title, state) +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __type__ | Value from the nk_tree_type section to visually mark a tree node header as either a collapseable UI section or tree node +/// __img__ | Image to display inside the header on the left of the label +/// __title__ | Label printed in the tree header +/// __state__ | Initial tree state value out of nk_collapse_states +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +#define nk_tree_image_push(ctx, type, img, title, state) nk_tree_image_push_hashed(ctx, type, img, title, state, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),__LINE__) +/*/// #### nk_tree_image_push_id +/// Start a collapsable UI section with image and label header and internal state +/// management callable in a look +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// #define nk_tree_image_push_id(ctx, type, img, title, state, id) +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __type__ | Value from the nk_tree_type section to visually mark a tree node header as either a collapseable UI section or tree node +/// __img__ | Image to display inside the header on the left of the label +/// __title__ | Label printed in the tree header +/// __state__ | Initial tree state value out of nk_collapse_states +/// __id__ | Loop counter index if this function is called in a loop +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +#define nk_tree_image_push_id(ctx, type, img, title, state, id) nk_tree_image_push_hashed(ctx, type, img, title, state, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),id) +/*/// #### nk_tree_image_push_hashed +/// Start a collapsable UI section with internal state management with full +/// control over internal unique ID used to store state +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_tree_image_push_hashed(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct +/// __type__ | Value from the nk_tree_type section to visually mark a tree node header as either a collapseable UI section or tree node +/// __img__ | Image to display inside the header on the left of the label +/// __title__ | Label printed in the tree header +/// __state__ | Initial tree state value out of nk_collapse_states +/// __hash__ | Memory block or string to generate the ID from +/// __len__ | Size of passed memory block or string in __hash__ +/// __seed__ | Seeding value if this function is called in a loop or default to `0` +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +NK_API int nk_tree_image_push_hashed(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed); +/*/// #### nk_tree_pop +/// Ends a collapsabale UI section +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_tree_pop(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling `nk_tree_xxx_push_xxx` +*/ +NK_API void nk_tree_pop(struct nk_context*); +/*/// #### nk_tree_state_push +/// Start a collapsable UI section with external state management +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_tree_state_push(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states *state); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling `nk_tree_xxx_push_xxx` +/// __type__ | Value from the nk_tree_type section to visually mark a tree node header as either a collapseable UI section or tree node +/// __title__ | Label printed in the tree header +/// __state__ | Persistent state to update +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +NK_API int nk_tree_state_push(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states *state); +/*/// #### nk_tree_state_image_push +/// Start a collapsable UI section with image and label header and external state management +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_tree_state_image_push(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states *state); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling `nk_tree_xxx_push_xxx` +/// __img__ | Image to display inside the header on the left of the label +/// __type__ | Value from the nk_tree_type section to visually mark a tree node header as either a collapseable UI section or tree node +/// __title__ | Label printed in the tree header +/// __state__ | Persistent state to update +/// +/// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise +*/ +NK_API int nk_tree_state_image_push(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states *state); +/*/// #### nk_tree_state_pop +/// Ends a collapsabale UI section +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_tree_state_pop(struct nk_context*); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// ------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling `nk_tree_xxx_push_xxx` +*/ +NK_API void nk_tree_state_pop(struct nk_context*); + +#define nk_tree_element_push(ctx, type, title, state, sel) nk_tree_element_push_hashed(ctx, type, title, state, sel, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),__LINE__) +#define nk_tree_element_push_id(ctx, type, title, state, sel, id) nk_tree_element_push_hashed(ctx, type, title, state, sel, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),id) +NK_API int nk_tree_element_push_hashed(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states initial_state, int *selected, const char *hash, int len, int seed); +NK_API int nk_tree_element_image_push_hashed(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states initial_state, int *selected, const char *hash, int len,int seed); +NK_API void nk_tree_element_pop(struct nk_context*); + +/* ============================================================================= + * + * LIST VIEW + * + * ============================================================================= */ +struct nk_list_view { +/* public: */ + int begin, end, count; +/* private: */ + int total_height; + struct nk_context *ctx; + nk_uint *scroll_pointer; + nk_uint scroll_value; +}; +NK_API int nk_list_view_begin(struct nk_context*, struct nk_list_view *out, const char *id, nk_flags, int row_height, int row_count); +NK_API void nk_list_view_end(struct nk_list_view*); +/* ============================================================================= + * + * WIDGET + * + * ============================================================================= */ +enum nk_widget_layout_states { + NK_WIDGET_INVALID, /* The widget cannot be seen and is completely out of view */ + NK_WIDGET_VALID, /* The widget is completely inside the window and can be updated and drawn */ + NK_WIDGET_ROM /* The widget is partially visible and cannot be updated */ +}; +enum nk_widget_states { + NK_WIDGET_STATE_MODIFIED = NK_FLAG(1), + NK_WIDGET_STATE_INACTIVE = NK_FLAG(2), /* widget is neither active nor hovered */ + NK_WIDGET_STATE_ENTERED = NK_FLAG(3), /* widget has been hovered on the current frame */ + NK_WIDGET_STATE_HOVER = NK_FLAG(4), /* widget is being hovered */ + NK_WIDGET_STATE_ACTIVED = NK_FLAG(5),/* widget is currently activated */ + NK_WIDGET_STATE_LEFT = NK_FLAG(6), /* widget is from this frame on not hovered anymore */ + NK_WIDGET_STATE_HOVERED = NK_WIDGET_STATE_HOVER|NK_WIDGET_STATE_MODIFIED, /* widget is being hovered */ + NK_WIDGET_STATE_ACTIVE = NK_WIDGET_STATE_ACTIVED|NK_WIDGET_STATE_MODIFIED /* widget is currently activated */ +}; +NK_API enum nk_widget_layout_states nk_widget(struct nk_rect*, const struct nk_context*); +NK_API enum nk_widget_layout_states nk_widget_fitting(struct nk_rect*, struct nk_context*, struct nk_vec2); +NK_API struct nk_rect nk_widget_bounds(struct nk_context*); +NK_API struct nk_vec2 nk_widget_position(struct nk_context*); +NK_API struct nk_vec2 nk_widget_size(struct nk_context*); +NK_API float nk_widget_width(struct nk_context*); +NK_API float nk_widget_height(struct nk_context*); +NK_API int nk_widget_is_hovered(struct nk_context*); +NK_API int nk_widget_is_mouse_clicked(struct nk_context*, enum nk_buttons); +NK_API int nk_widget_has_mouse_click_down(struct nk_context*, enum nk_buttons, int down); +NK_API void nk_spacing(struct nk_context*, int cols); +/* ============================================================================= + * + * TEXT + * + * ============================================================================= */ +enum nk_text_align { + NK_TEXT_ALIGN_LEFT = 0x01, + NK_TEXT_ALIGN_CENTERED = 0x02, + NK_TEXT_ALIGN_RIGHT = 0x04, + NK_TEXT_ALIGN_TOP = 0x08, + NK_TEXT_ALIGN_MIDDLE = 0x10, + NK_TEXT_ALIGN_BOTTOM = 0x20 +}; +enum nk_text_alignment { + NK_TEXT_LEFT = NK_TEXT_ALIGN_MIDDLE|NK_TEXT_ALIGN_LEFT, + NK_TEXT_CENTERED = NK_TEXT_ALIGN_MIDDLE|NK_TEXT_ALIGN_CENTERED, + NK_TEXT_RIGHT = NK_TEXT_ALIGN_MIDDLE|NK_TEXT_ALIGN_RIGHT +}; +NK_API void nk_text(struct nk_context*, const char*, int, nk_flags); +NK_API void nk_text_colored(struct nk_context*, const char*, int, nk_flags, struct nk_color); +NK_API void nk_text_wrap(struct nk_context*, const char*, int); +NK_API void nk_text_wrap_colored(struct nk_context*, const char*, int, struct nk_color); +NK_API void nk_label(struct nk_context*, const char*, nk_flags align); +NK_API void nk_label_colored(struct nk_context*, const char*, nk_flags align, struct nk_color); +NK_API void nk_label_wrap(struct nk_context*, const char*); +NK_API void nk_label_colored_wrap(struct nk_context*, const char*, struct nk_color); +NK_API void nk_image(struct nk_context*, struct nk_image); +NK_API void nk_image_color(struct nk_context*, struct nk_image, struct nk_color); +#ifdef NK_INCLUDE_STANDARD_VARARGS +NK_API void nk_labelf(struct nk_context*, nk_flags, NK_PRINTF_FORMAT_STRING const char*, ...) NK_PRINTF_VARARG_FUNC(3); +NK_API void nk_labelf_colored(struct nk_context*, nk_flags, struct nk_color, NK_PRINTF_FORMAT_STRING const char*,...) NK_PRINTF_VARARG_FUNC(4); +NK_API void nk_labelf_wrap(struct nk_context*, NK_PRINTF_FORMAT_STRING const char*,...) NK_PRINTF_VARARG_FUNC(2); +NK_API void nk_labelf_colored_wrap(struct nk_context*, struct nk_color, NK_PRINTF_FORMAT_STRING const char*,...) NK_PRINTF_VARARG_FUNC(3); +NK_API void nk_labelfv(struct nk_context*, nk_flags, NK_PRINTF_FORMAT_STRING const char*, va_list) NK_PRINTF_VALIST_FUNC(3); +NK_API void nk_labelfv_colored(struct nk_context*, nk_flags, struct nk_color, NK_PRINTF_FORMAT_STRING const char*, va_list) NK_PRINTF_VALIST_FUNC(4); +NK_API void nk_labelfv_wrap(struct nk_context*, NK_PRINTF_FORMAT_STRING const char*, va_list) NK_PRINTF_VALIST_FUNC(2); +NK_API void nk_labelfv_colored_wrap(struct nk_context*, struct nk_color, NK_PRINTF_FORMAT_STRING const char*, va_list) NK_PRINTF_VALIST_FUNC(3); +NK_API void nk_value_bool(struct nk_context*, const char *prefix, int); +NK_API void nk_value_int(struct nk_context*, const char *prefix, int); +NK_API void nk_value_uint(struct nk_context*, const char *prefix, unsigned int); +NK_API void nk_value_float(struct nk_context*, const char *prefix, float); +NK_API void nk_value_color_byte(struct nk_context*, const char *prefix, struct nk_color); +NK_API void nk_value_color_float(struct nk_context*, const char *prefix, struct nk_color); +NK_API void nk_value_color_hex(struct nk_context*, const char *prefix, struct nk_color); +#endif +/* ============================================================================= + * + * BUTTON + * + * ============================================================================= */ +NK_API int nk_button_text(struct nk_context*, const char *title, int len); +NK_API int nk_button_label(struct nk_context*, const char *title); +NK_API int nk_button_color(struct nk_context*, struct nk_color); +NK_API int nk_button_symbol(struct nk_context*, enum nk_symbol_type); +NK_API int nk_button_image(struct nk_context*, struct nk_image img); +NK_API int nk_button_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags text_alignment); +NK_API int nk_button_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags alignment); +NK_API int nk_button_image_label(struct nk_context*, struct nk_image img, const char*, nk_flags text_alignment); +NK_API int nk_button_image_text(struct nk_context*, struct nk_image img, const char*, int, nk_flags alignment); +NK_API int nk_button_text_styled(struct nk_context*, const struct nk_style_button*, const char *title, int len); +NK_API int nk_button_label_styled(struct nk_context*, const struct nk_style_button*, const char *title); +NK_API int nk_button_symbol_styled(struct nk_context*, const struct nk_style_button*, enum nk_symbol_type); +NK_API int nk_button_image_styled(struct nk_context*, const struct nk_style_button*, struct nk_image img); +NK_API int nk_button_symbol_text_styled(struct nk_context*,const struct nk_style_button*, enum nk_symbol_type, const char*, int, nk_flags alignment); +NK_API int nk_button_symbol_label_styled(struct nk_context *ctx, const struct nk_style_button *style, enum nk_symbol_type symbol, const char *title, nk_flags align); +NK_API int nk_button_image_label_styled(struct nk_context*,const struct nk_style_button*, struct nk_image img, const char*, nk_flags text_alignment); +NK_API int nk_button_image_text_styled(struct nk_context*,const struct nk_style_button*, struct nk_image img, const char*, int, nk_flags alignment); +NK_API void nk_button_set_behavior(struct nk_context*, enum nk_button_behavior); +NK_API int nk_button_push_behavior(struct nk_context*, enum nk_button_behavior); +NK_API int nk_button_pop_behavior(struct nk_context*); +/* ============================================================================= + * + * CHECKBOX + * + * ============================================================================= */ +NK_API int nk_check_label(struct nk_context*, const char*, int active); +NK_API int nk_check_text(struct nk_context*, const char*, int,int active); +NK_API unsigned nk_check_flags_label(struct nk_context*, const char*, unsigned int flags, unsigned int value); +NK_API unsigned nk_check_flags_text(struct nk_context*, const char*, int, unsigned int flags, unsigned int value); +NK_API int nk_checkbox_label(struct nk_context*, const char*, int *active); +NK_API int nk_checkbox_text(struct nk_context*, const char*, int, int *active); +NK_API int nk_checkbox_flags_label(struct nk_context*, const char*, unsigned int *flags, unsigned int value); +NK_API int nk_checkbox_flags_text(struct nk_context*, const char*, int, unsigned int *flags, unsigned int value); +/* ============================================================================= + * + * RADIO BUTTON + * + * ============================================================================= */ +NK_API int nk_radio_label(struct nk_context*, const char*, int *active); +NK_API int nk_radio_text(struct nk_context*, const char*, int, int *active); +NK_API int nk_option_label(struct nk_context*, const char*, int active); +NK_API int nk_option_text(struct nk_context*, const char*, int, int active); +/* ============================================================================= + * + * SELECTABLE + * + * ============================================================================= */ +NK_API int nk_selectable_label(struct nk_context*, const char*, nk_flags align, int *value); +NK_API int nk_selectable_text(struct nk_context*, const char*, int, nk_flags align, int *value); +NK_API int nk_selectable_image_label(struct nk_context*,struct nk_image, const char*, nk_flags align, int *value); +NK_API int nk_selectable_image_text(struct nk_context*,struct nk_image, const char*, int, nk_flags align, int *value); +NK_API int nk_selectable_symbol_label(struct nk_context*,enum nk_symbol_type, const char*, nk_flags align, int *value); +NK_API int nk_selectable_symbol_text(struct nk_context*,enum nk_symbol_type, const char*, int, nk_flags align, int *value); + +NK_API int nk_select_label(struct nk_context*, const char*, nk_flags align, int value); +NK_API int nk_select_text(struct nk_context*, const char*, int, nk_flags align, int value); +NK_API int nk_select_image_label(struct nk_context*, struct nk_image,const char*, nk_flags align, int value); +NK_API int nk_select_image_text(struct nk_context*, struct nk_image,const char*, int, nk_flags align, int value); +NK_API int nk_select_symbol_label(struct nk_context*,enum nk_symbol_type, const char*, nk_flags align, int value); +NK_API int nk_select_symbol_text(struct nk_context*,enum nk_symbol_type, const char*, int, nk_flags align, int value); + +/* ============================================================================= + * + * SLIDER + * + * ============================================================================= */ +NK_API float nk_slide_float(struct nk_context*, float min, float val, float max, float step); +NK_API int nk_slide_int(struct nk_context*, int min, int val, int max, int step); +NK_API int nk_slider_float(struct nk_context*, float min, float *val, float max, float step); +NK_API int nk_slider_int(struct nk_context*, int min, int *val, int max, int step); +/* ============================================================================= + * + * PROGRESSBAR + * + * ============================================================================= */ +NK_API int nk_progress(struct nk_context*, nk_size *cur, nk_size max, int modifyable); +NK_API nk_size nk_prog(struct nk_context*, nk_size cur, nk_size max, int modifyable); + +/* ============================================================================= + * + * COLOR PICKER + * + * ============================================================================= */ +NK_API struct nk_colorf nk_color_picker(struct nk_context*, struct nk_colorf, enum nk_color_format); +NK_API int nk_color_pick(struct nk_context*, struct nk_colorf*, enum nk_color_format); +/* ============================================================================= + * + * PROPERTIES + * + * ============================================================================= +/// ### Properties +/// Properties are the main value modification widgets in Nuklear. Changing a value +/// can be achieved by dragging, adding/removing incremental steps on button click +/// or by directly typing a number. +/// +/// #### Usage +/// Each property requires a unique name for identifaction that is also used for +/// displaying a label. If you want to use the same name multiple times make sure +/// add a '#' before your name. The '#' will not be shown but will generate a +/// unique ID. Each propery also takes in a minimum and maximum value. If you want +/// to make use of the complete number range of a type just use the provided +/// type limits from `limits.h`. For example `INT_MIN` and `INT_MAX` for +/// `nk_property_int` and `nk_propertyi`. In additional each property takes in +/// a increment value that will be added or subtracted if either the increment +/// decrement button is clicked. Finally there is a value for increment per pixel +/// dragged that is added or subtracted from the value. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int value = 0; +/// struct nk_context ctx; +/// nk_init_xxx(&ctx, ...); +/// while (1) { +/// // Input +/// Event evt; +/// nk_input_begin(&ctx); +/// while (GetEvent(&evt)) { +/// if (evt.type == MOUSE_MOVE) +/// nk_input_motion(&ctx, evt.motion.x, evt.motion.y); +/// else if (evt.type == [...]) { +/// nk_input_xxx(...); +/// } +/// } +/// nk_input_end(&ctx); +/// // +/// // Window +/// if (nk_begin_xxx(...) { +/// // Property +/// nk_layout_row_dynamic(...); +/// nk_property_int(ctx, "ID", INT_MIN, &value, INT_MAX, 1, 1); +/// } +/// nk_end(ctx); +/// // +/// // Draw +/// const struct nk_command *cmd = 0; +/// nk_foreach(cmd, &ctx) { +/// switch (cmd->type) { +/// case NK_COMMAND_LINE: +/// your_draw_line_function(...) +/// break; +/// case NK_COMMAND_RECT +/// your_draw_rect_function(...) +/// break; +/// case ...: +/// // [...] +/// } +/// nk_clear(&ctx); +/// } +/// nk_free(&ctx); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// #### Reference +/// Function | Description +/// --------------------|------------------------------------------- +/// nk_property_int | Integer property directly modifing a passed in value +/// nk_property_float | Float property directly modifing a passed in value +/// nk_property_double | Double property directly modifing a passed in value +/// nk_propertyi | Integer property returning the modified int value +/// nk_propertyf | Float property returning the modified float value +/// nk_propertyd | Double property returning the modified double value +/// +*/ +/*/// #### nk_property_int +/// Integer property directly modifing a passed in value +/// !!! WARNING +/// To generate a unique property ID using the same label make sure to insert +/// a `#` at the beginning. It will not be shown but guarantees correct behavior. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_property_int(struct nk_context *ctx, const char *name, int min, int *val, int max, int step, float inc_per_pixel); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// --------------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling a layouting function +/// __name__ | String used both as a label as well as a unique identifier +/// __min__ | Minimum value not allowed to be underflown +/// __val__ | Integer pointer to be modified +/// __max__ | Maximum value not allowed to be overflown +/// __step__ | Increment added and subtracted on increment and decrement button +/// __inc_per_pixel__ | Value per pixel added or subtracted on dragging +*/ +NK_API void nk_property_int(struct nk_context*, const char *name, int min, int *val, int max, int step, float inc_per_pixel); +/*/// #### nk_property_float +/// Float property directly modifing a passed in value +/// !!! WARNING +/// To generate a unique property ID using the same label make sure to insert +/// a `#` at the beginning. It will not be shown but guarantees correct behavior. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_property_float(struct nk_context *ctx, const char *name, float min, float *val, float max, float step, float inc_per_pixel); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// --------------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling a layouting function +/// __name__ | String used both as a label as well as a unique identifier +/// __min__ | Minimum value not allowed to be underflown +/// __val__ | Float pointer to be modified +/// __max__ | Maximum value not allowed to be overflown +/// __step__ | Increment added and subtracted on increment and decrement button +/// __inc_per_pixel__ | Value per pixel added or subtracted on dragging +*/ +NK_API void nk_property_float(struct nk_context*, const char *name, float min, float *val, float max, float step, float inc_per_pixel); +/*/// #### nk_property_double +/// Double property directly modifing a passed in value +/// !!! WARNING +/// To generate a unique property ID using the same label make sure to insert +/// a `#` at the beginning. It will not be shown but guarantees correct behavior. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// void nk_property_double(struct nk_context *ctx, const char *name, double min, double *val, double max, double step, double inc_per_pixel); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// --------------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling a layouting function +/// __name__ | String used both as a label as well as a unique identifier +/// __min__ | Minimum value not allowed to be underflown +/// __val__ | Double pointer to be modified +/// __max__ | Maximum value not allowed to be overflown +/// __step__ | Increment added and subtracted on increment and decrement button +/// __inc_per_pixel__ | Value per pixel added or subtracted on dragging +*/ +NK_API void nk_property_double(struct nk_context*, const char *name, double min, double *val, double max, double step, float inc_per_pixel); +/*/// #### nk_propertyi +/// Integer property modifing a passed in value and returning the new value +/// !!! WARNING +/// To generate a unique property ID using the same label make sure to insert +/// a `#` at the beginning. It will not be shown but guarantees correct behavior. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// int nk_propertyi(struct nk_context *ctx, const char *name, int min, int val, int max, int step, float inc_per_pixel); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// --------------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling a layouting function +/// __name__ | String used both as a label as well as a unique identifier +/// __min__ | Minimum value not allowed to be underflown +/// __val__ | Current integer value to be modified and returned +/// __max__ | Maximum value not allowed to be overflown +/// __step__ | Increment added and subtracted on increment and decrement button +/// __inc_per_pixel__ | Value per pixel added or subtracted on dragging +/// +/// Returns the new modified integer value +*/ +NK_API int nk_propertyi(struct nk_context*, const char *name, int min, int val, int max, int step, float inc_per_pixel); +/*/// #### nk_propertyf +/// Float property modifing a passed in value and returning the new value +/// !!! WARNING +/// To generate a unique property ID using the same label make sure to insert +/// a `#` at the beginning. It will not be shown but guarantees correct behavior. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// float nk_propertyf(struct nk_context *ctx, const char *name, float min, float val, float max, float step, float inc_per_pixel); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// --------------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling a layouting function +/// __name__ | String used both as a label as well as a unique identifier +/// __min__ | Minimum value not allowed to be underflown +/// __val__ | Current float value to be modified and returned +/// __max__ | Maximum value not allowed to be overflown +/// __step__ | Increment added and subtracted on increment and decrement button +/// __inc_per_pixel__ | Value per pixel added or subtracted on dragging +/// +/// Returns the new modified float value +*/ +NK_API float nk_propertyf(struct nk_context*, const char *name, float min, float val, float max, float step, float inc_per_pixel); +/*/// #### nk_propertyd +/// Float property modifing a passed in value and returning the new value +/// !!! WARNING +/// To generate a unique property ID using the same label make sure to insert +/// a `#` at the beginning. It will not be shown but guarantees correct behavior. +/// +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +/// float nk_propertyd(struct nk_context *ctx, const char *name, double min, double val, double max, double step, double inc_per_pixel); +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// +/// Parameter | Description +/// --------------------|----------------------------------------------------------- +/// __ctx__ | Must point to an previously initialized `nk_context` struct after calling a layouting function +/// __name__ | String used both as a label as well as a unique identifier +/// __min__ | Minimum value not allowed to be underflown +/// __val__ | Current double value to be modified and returned +/// __max__ | Maximum value not allowed to be overflown +/// __step__ | Increment added and subtracted on increment and decrement button +/// __inc_per_pixel__ | Value per pixel added or subtracted on dragging +/// +/// Returns the new modified double value +*/ +NK_API double nk_propertyd(struct nk_context*, const char *name, double min, double val, double max, double step, float inc_per_pixel); +/* ============================================================================= + * + * TEXT EDIT + * + * ============================================================================= */ +enum nk_edit_flags { + NK_EDIT_DEFAULT = 0, + NK_EDIT_READ_ONLY = NK_FLAG(0), + NK_EDIT_AUTO_SELECT = NK_FLAG(1), + NK_EDIT_SIG_ENTER = NK_FLAG(2), + NK_EDIT_ALLOW_TAB = NK_FLAG(3), + NK_EDIT_NO_CURSOR = NK_FLAG(4), + NK_EDIT_SELECTABLE = NK_FLAG(5), + NK_EDIT_CLIPBOARD = NK_FLAG(6), + NK_EDIT_CTRL_ENTER_NEWLINE = NK_FLAG(7), + NK_EDIT_NO_HORIZONTAL_SCROLL = NK_FLAG(8), + NK_EDIT_ALWAYS_INSERT_MODE = NK_FLAG(9), + NK_EDIT_MULTILINE = NK_FLAG(10), + NK_EDIT_GOTO_END_ON_ACTIVATE = NK_FLAG(11) +}; +enum nk_edit_types { + NK_EDIT_SIMPLE = NK_EDIT_ALWAYS_INSERT_MODE, + NK_EDIT_FIELD = NK_EDIT_SIMPLE|NK_EDIT_SELECTABLE|NK_EDIT_CLIPBOARD, + NK_EDIT_BOX = NK_EDIT_ALWAYS_INSERT_MODE| NK_EDIT_SELECTABLE| NK_EDIT_MULTILINE|NK_EDIT_ALLOW_TAB|NK_EDIT_CLIPBOARD, + NK_EDIT_EDITOR = NK_EDIT_SELECTABLE|NK_EDIT_MULTILINE|NK_EDIT_ALLOW_TAB| NK_EDIT_CLIPBOARD +}; +enum nk_edit_events { + NK_EDIT_ACTIVE = NK_FLAG(0), /* edit widget is currently being modified */ + NK_EDIT_INACTIVE = NK_FLAG(1), /* edit widget is not active and is not being modified */ + NK_EDIT_ACTIVATED = NK_FLAG(2), /* edit widget went from state inactive to state active */ + NK_EDIT_DEACTIVATED = NK_FLAG(3), /* edit widget went from state active to state inactive */ + NK_EDIT_COMMITED = NK_FLAG(4) /* edit widget has received an enter and lost focus */ +}; +NK_API nk_flags nk_edit_string(struct nk_context*, nk_flags, char *buffer, int *len, int max, nk_plugin_filter); +NK_API nk_flags nk_edit_string_zero_terminated(struct nk_context*, nk_flags, char *buffer, int max, nk_plugin_filter); +NK_API nk_flags nk_edit_buffer(struct nk_context*, nk_flags, struct nk_text_edit*, nk_plugin_filter); +NK_API void nk_edit_focus(struct nk_context*, nk_flags flags); +NK_API void nk_edit_unfocus(struct nk_context*); +/* ============================================================================= + * + * CHART + * + * ============================================================================= */ +NK_API int nk_chart_begin(struct nk_context*, enum nk_chart_type, int num, float min, float max); +NK_API int nk_chart_begin_colored(struct nk_context*, enum nk_chart_type, struct nk_color, struct nk_color active, int num, float min, float max); +NK_API void nk_chart_add_slot(struct nk_context *ctx, const enum nk_chart_type, int count, float min_value, float max_value); +NK_API void nk_chart_add_slot_colored(struct nk_context *ctx, const enum nk_chart_type, struct nk_color, struct nk_color active, int count, float min_value, float max_value); +NK_API nk_flags nk_chart_push(struct nk_context*, float); +NK_API nk_flags nk_chart_push_slot(struct nk_context*, float, int); +NK_API void nk_chart_end(struct nk_context*); +NK_API void nk_plot(struct nk_context*, enum nk_chart_type, const float *values, int count, int offset); +NK_API void nk_plot_function(struct nk_context*, enum nk_chart_type, void *userdata, float(*value_getter)(void* user, int index), int count, int offset); +/* ============================================================================= + * + * POPUP + * + * ============================================================================= */ +NK_API int nk_popup_begin(struct nk_context*, enum nk_popup_type, const char*, nk_flags, struct nk_rect bounds); +NK_API void nk_popup_close(struct nk_context*); +NK_API void nk_popup_end(struct nk_context*); +NK_API void nk_popup_get_scroll(struct nk_context*, nk_uint *offset_x, nk_uint *offset_y); +NK_API void nk_popup_set_scroll(struct nk_context*, nk_uint offset_x, nk_uint offset_y); +/* ============================================================================= + * + * COMBOBOX + * + * ============================================================================= */ +NK_API int nk_combo(struct nk_context*, const char **items, int count, int selected, int item_height, struct nk_vec2 size); +NK_API int nk_combo_separator(struct nk_context*, const char *items_separated_by_separator, int separator, int selected, int count, int item_height, struct nk_vec2 size); +NK_API int nk_combo_string(struct nk_context*, const char *items_separated_by_zeros, int selected, int count, int item_height, struct nk_vec2 size); +NK_API int nk_combo_callback(struct nk_context*, void(*item_getter)(void*, int, const char**), void *userdata, int selected, int count, int item_height, struct nk_vec2 size); +NK_API void nk_combobox(struct nk_context*, const char **items, int count, int *selected, int item_height, struct nk_vec2 size); +NK_API void nk_combobox_string(struct nk_context*, const char *items_separated_by_zeros, int *selected, int count, int item_height, struct nk_vec2 size); +NK_API void nk_combobox_separator(struct nk_context*, const char *items_separated_by_separator, int separator,int *selected, int count, int item_height, struct nk_vec2 size); +NK_API void nk_combobox_callback(struct nk_context*, void(*item_getter)(void*, int, const char**), void*, int *selected, int count, int item_height, struct nk_vec2 size); +/* ============================================================================= + * + * ABSTRACT COMBOBOX + * + * ============================================================================= */ +NK_API int nk_combo_begin_text(struct nk_context*, const char *selected, int, struct nk_vec2 size); +NK_API int nk_combo_begin_label(struct nk_context*, const char *selected, struct nk_vec2 size); +NK_API int nk_combo_begin_color(struct nk_context*, struct nk_color color, struct nk_vec2 size); +NK_API int nk_combo_begin_symbol(struct nk_context*, enum nk_symbol_type, struct nk_vec2 size); +NK_API int nk_combo_begin_symbol_label(struct nk_context*, const char *selected, enum nk_symbol_type, struct nk_vec2 size); +NK_API int nk_combo_begin_symbol_text(struct nk_context*, const char *selected, int, enum nk_symbol_type, struct nk_vec2 size); +NK_API int nk_combo_begin_image(struct nk_context*, struct nk_image img, struct nk_vec2 size); +NK_API int nk_combo_begin_image_label(struct nk_context*, const char *selected, struct nk_image, struct nk_vec2 size); +NK_API int nk_combo_begin_image_text(struct nk_context*, const char *selected, int, struct nk_image, struct nk_vec2 size); +NK_API int nk_combo_item_label(struct nk_context*, const char*, nk_flags alignment); +NK_API int nk_combo_item_text(struct nk_context*, const char*,int, nk_flags alignment); +NK_API int nk_combo_item_image_label(struct nk_context*, struct nk_image, const char*, nk_flags alignment); +NK_API int nk_combo_item_image_text(struct nk_context*, struct nk_image, const char*, int,nk_flags alignment); +NK_API int nk_combo_item_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags alignment); +NK_API int nk_combo_item_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags alignment); +NK_API void nk_combo_close(struct nk_context*); +NK_API void nk_combo_end(struct nk_context*); +/* ============================================================================= + * + * CONTEXTUAL + * + * ============================================================================= */ +NK_API int nk_contextual_begin(struct nk_context*, nk_flags, struct nk_vec2, struct nk_rect trigger_bounds); +NK_API int nk_contextual_item_text(struct nk_context*, const char*, int,nk_flags align); +NK_API int nk_contextual_item_label(struct nk_context*, const char*, nk_flags align); +NK_API int nk_contextual_item_image_label(struct nk_context*, struct nk_image, const char*, nk_flags alignment); +NK_API int nk_contextual_item_image_text(struct nk_context*, struct nk_image, const char*, int len, nk_flags alignment); +NK_API int nk_contextual_item_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags alignment); +NK_API int nk_contextual_item_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags alignment); +NK_API void nk_contextual_close(struct nk_context*); +NK_API void nk_contextual_end(struct nk_context*); +/* ============================================================================= + * + * TOOLTIP + * + * ============================================================================= */ +NK_API void nk_tooltip(struct nk_context*, const char*); +#ifdef NK_INCLUDE_STANDARD_VARARGS +NK_API void nk_tooltipf(struct nk_context*, NK_PRINTF_FORMAT_STRING const char*, ...) NK_PRINTF_VARARG_FUNC(2); +NK_API void nk_tooltipfv(struct nk_context*, NK_PRINTF_FORMAT_STRING const char*, va_list) NK_PRINTF_VALIST_FUNC(2); +#endif +NK_API int nk_tooltip_begin(struct nk_context*, float width); +NK_API void nk_tooltip_end(struct nk_context*); +/* ============================================================================= + * + * MENU + * + * ============================================================================= */ +NK_API void nk_menubar_begin(struct nk_context*); +NK_API void nk_menubar_end(struct nk_context*); +NK_API int nk_menu_begin_text(struct nk_context*, const char* title, int title_len, nk_flags align, struct nk_vec2 size); +NK_API int nk_menu_begin_label(struct nk_context*, const char*, nk_flags align, struct nk_vec2 size); +NK_API int nk_menu_begin_image(struct nk_context*, const char*, struct nk_image, struct nk_vec2 size); +NK_API int nk_menu_begin_image_text(struct nk_context*, const char*, int,nk_flags align,struct nk_image, struct nk_vec2 size); +NK_API int nk_menu_begin_image_label(struct nk_context*, const char*, nk_flags align,struct nk_image, struct nk_vec2 size); +NK_API int nk_menu_begin_symbol(struct nk_context*, const char*, enum nk_symbol_type, struct nk_vec2 size); +NK_API int nk_menu_begin_symbol_text(struct nk_context*, const char*, int,nk_flags align,enum nk_symbol_type, struct nk_vec2 size); +NK_API int nk_menu_begin_symbol_label(struct nk_context*, const char*, nk_flags align,enum nk_symbol_type, struct nk_vec2 size); +NK_API int nk_menu_item_text(struct nk_context*, const char*, int,nk_flags align); +NK_API int nk_menu_item_label(struct nk_context*, const char*, nk_flags alignment); +NK_API int nk_menu_item_image_label(struct nk_context*, struct nk_image, const char*, nk_flags alignment); +NK_API int nk_menu_item_image_text(struct nk_context*, struct nk_image, const char*, int len, nk_flags alignment); +NK_API int nk_menu_item_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags alignment); +NK_API int nk_menu_item_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags alignment); +NK_API void nk_menu_close(struct nk_context*); +NK_API void nk_menu_end(struct nk_context*); +/* ============================================================================= + * + * STYLE + * + * ============================================================================= */ +enum nk_style_colors { + NK_COLOR_TEXT, + NK_COLOR_WINDOW, + NK_COLOR_HEADER, + NK_COLOR_BORDER, + NK_COLOR_BUTTON, + NK_COLOR_BUTTON_HOVER, + NK_COLOR_BUTTON_ACTIVE, + NK_COLOR_TOGGLE, + NK_COLOR_TOGGLE_HOVER, + NK_COLOR_TOGGLE_CURSOR, + NK_COLOR_SELECT, + NK_COLOR_SELECT_ACTIVE, + NK_COLOR_SLIDER, + NK_COLOR_SLIDER_CURSOR, + NK_COLOR_SLIDER_CURSOR_HOVER, + NK_COLOR_SLIDER_CURSOR_ACTIVE, + NK_COLOR_PROPERTY, + NK_COLOR_EDIT, + NK_COLOR_EDIT_CURSOR, + NK_COLOR_COMBO, + NK_COLOR_CHART, + NK_COLOR_CHART_COLOR, + NK_COLOR_CHART_COLOR_HIGHLIGHT, + NK_COLOR_SCROLLBAR, + NK_COLOR_SCROLLBAR_CURSOR, + NK_COLOR_SCROLLBAR_CURSOR_HOVER, + NK_COLOR_SCROLLBAR_CURSOR_ACTIVE, + NK_COLOR_TAB_HEADER, + NK_COLOR_COUNT +}; +enum nk_style_cursor { + NK_CURSOR_ARROW, + NK_CURSOR_TEXT, + NK_CURSOR_MOVE, + NK_CURSOR_RESIZE_VERTICAL, + NK_CURSOR_RESIZE_HORIZONTAL, + NK_CURSOR_RESIZE_TOP_LEFT_DOWN_RIGHT, + NK_CURSOR_RESIZE_TOP_RIGHT_DOWN_LEFT, + NK_CURSOR_COUNT +}; +NK_API void nk_style_default(struct nk_context*); +NK_API void nk_style_from_table(struct nk_context*, const struct nk_color*); +NK_API void nk_style_load_cursor(struct nk_context*, enum nk_style_cursor, const struct nk_cursor*); +NK_API void nk_style_load_all_cursors(struct nk_context*, struct nk_cursor*); +NK_API const char* nk_style_get_color_by_name(enum nk_style_colors); +NK_API void nk_style_set_font(struct nk_context*, const struct nk_user_font*); +NK_API int nk_style_set_cursor(struct nk_context*, enum nk_style_cursor); +NK_API void nk_style_show_cursor(struct nk_context*); +NK_API void nk_style_hide_cursor(struct nk_context*); + +NK_API int nk_style_push_font(struct nk_context*, const struct nk_user_font*); +NK_API int nk_style_push_float(struct nk_context*, float*, float); +NK_API int nk_style_push_vec2(struct nk_context*, struct nk_vec2*, struct nk_vec2); +NK_API int nk_style_push_style_item(struct nk_context*, struct nk_style_item*, struct nk_style_item); +NK_API int nk_style_push_flags(struct nk_context*, nk_flags*, nk_flags); +NK_API int nk_style_push_color(struct nk_context*, struct nk_color*, struct nk_color); + +NK_API int nk_style_pop_font(struct nk_context*); +NK_API int nk_style_pop_float(struct nk_context*); +NK_API int nk_style_pop_vec2(struct nk_context*); +NK_API int nk_style_pop_style_item(struct nk_context*); +NK_API int nk_style_pop_flags(struct nk_context*); +NK_API int nk_style_pop_color(struct nk_context*); +/* ============================================================================= + * + * COLOR + * + * ============================================================================= */ +NK_API struct nk_color nk_rgb(int r, int g, int b); +NK_API struct nk_color nk_rgb_iv(const int *rgb); +NK_API struct nk_color nk_rgb_bv(const nk_byte* rgb); +NK_API struct nk_color nk_rgb_f(float r, float g, float b); +NK_API struct nk_color nk_rgb_fv(const float *rgb); +NK_API struct nk_color nk_rgb_cf(struct nk_colorf c); +NK_API struct nk_color nk_rgb_hex(const char *rgb); + +NK_API struct nk_color nk_rgba(int r, int g, int b, int a); +NK_API struct nk_color nk_rgba_u32(nk_uint); +NK_API struct nk_color nk_rgba_iv(const int *rgba); +NK_API struct nk_color nk_rgba_bv(const nk_byte *rgba); +NK_API struct nk_color nk_rgba_f(float r, float g, float b, float a); +NK_API struct nk_color nk_rgba_fv(const float *rgba); +NK_API struct nk_color nk_rgba_cf(struct nk_colorf c); +NK_API struct nk_color nk_rgba_hex(const char *rgb); + +NK_API struct nk_colorf nk_hsva_colorf(float h, float s, float v, float a); +NK_API struct nk_colorf nk_hsva_colorfv(float *c); +NK_API void nk_colorf_hsva_f(float *out_h, float *out_s, float *out_v, float *out_a, struct nk_colorf in); +NK_API void nk_colorf_hsva_fv(float *hsva, struct nk_colorf in); + +NK_API struct nk_color nk_hsv(int h, int s, int v); +NK_API struct nk_color nk_hsv_iv(const int *hsv); +NK_API struct nk_color nk_hsv_bv(const nk_byte *hsv); +NK_API struct nk_color nk_hsv_f(float h, float s, float v); +NK_API struct nk_color nk_hsv_fv(const float *hsv); + +NK_API struct nk_color nk_hsva(int h, int s, int v, int a); +NK_API struct nk_color nk_hsva_iv(const int *hsva); +NK_API struct nk_color nk_hsva_bv(const nk_byte *hsva); +NK_API struct nk_color nk_hsva_f(float h, float s, float v, float a); +NK_API struct nk_color nk_hsva_fv(const float *hsva); + +/* color (conversion nuklear --> user) */ +NK_API void nk_color_f(float *r, float *g, float *b, float *a, struct nk_color); +NK_API void nk_color_fv(float *rgba_out, struct nk_color); +NK_API struct nk_colorf nk_color_cf(struct nk_color); +NK_API void nk_color_d(double *r, double *g, double *b, double *a, struct nk_color); +NK_API void nk_color_dv(double *rgba_out, struct nk_color); + +NK_API nk_uint nk_color_u32(struct nk_color); +NK_API void nk_color_hex_rgba(char *output, struct nk_color); +NK_API void nk_color_hex_rgb(char *output, struct nk_color); + +NK_API void nk_color_hsv_i(int *out_h, int *out_s, int *out_v, struct nk_color); +NK_API void nk_color_hsv_b(nk_byte *out_h, nk_byte *out_s, nk_byte *out_v, struct nk_color); +NK_API void nk_color_hsv_iv(int *hsv_out, struct nk_color); +NK_API void nk_color_hsv_bv(nk_byte *hsv_out, struct nk_color); +NK_API void nk_color_hsv_f(float *out_h, float *out_s, float *out_v, struct nk_color); +NK_API void nk_color_hsv_fv(float *hsv_out, struct nk_color); + +NK_API void nk_color_hsva_i(int *h, int *s, int *v, int *a, struct nk_color); +NK_API void nk_color_hsva_b(nk_byte *h, nk_byte *s, nk_byte *v, nk_byte *a, struct nk_color); +NK_API void nk_color_hsva_iv(int *hsva_out, struct nk_color); +NK_API void nk_color_hsva_bv(nk_byte *hsva_out, struct nk_color); +NK_API void nk_color_hsva_f(float *out_h, float *out_s, float *out_v, float *out_a, struct nk_color); +NK_API void nk_color_hsva_fv(float *hsva_out, struct nk_color); +/* ============================================================================= + * + * IMAGE + * + * ============================================================================= */ +NK_API nk_handle nk_handle_ptr(void*); +NK_API nk_handle nk_handle_id(int); +NK_API struct nk_image nk_image_handle(nk_handle); +NK_API struct nk_image nk_image_ptr(void*); +NK_API struct nk_image nk_image_id(int); +NK_API int nk_image_is_subimage(const struct nk_image* img); +NK_API struct nk_image nk_subimage_ptr(void*, unsigned short w, unsigned short h, struct nk_rect sub_region); +NK_API struct nk_image nk_subimage_id(int, unsigned short w, unsigned short h, struct nk_rect sub_region); +NK_API struct nk_image nk_subimage_handle(nk_handle, unsigned short w, unsigned short h, struct nk_rect sub_region); +/* ============================================================================= + * + * MATH + * + * ============================================================================= */ +NK_API nk_hash nk_murmur_hash(const void *key, int len, nk_hash seed); +NK_API void nk_triangle_from_direction(struct nk_vec2 *result, struct nk_rect r, float pad_x, float pad_y, enum nk_heading); + +NK_API struct nk_vec2 nk_vec2(float x, float y); +NK_API struct nk_vec2 nk_vec2i(int x, int y); +NK_API struct nk_vec2 nk_vec2v(const float *xy); +NK_API struct nk_vec2 nk_vec2iv(const int *xy); + +NK_API struct nk_rect nk_get_null_rect(void); +NK_API struct nk_rect nk_rect(float x, float y, float w, float h); +NK_API struct nk_rect nk_recti(int x, int y, int w, int h); +NK_API struct nk_rect nk_recta(struct nk_vec2 pos, struct nk_vec2 size); +NK_API struct nk_rect nk_rectv(const float *xywh); +NK_API struct nk_rect nk_rectiv(const int *xywh); +NK_API struct nk_vec2 nk_rect_pos(struct nk_rect); +NK_API struct nk_vec2 nk_rect_size(struct nk_rect); +/* ============================================================================= + * + * STRING + * + * ============================================================================= */ +NK_API int nk_strlen(const char *str); +NK_API int nk_stricmp(const char *s1, const char *s2); +NK_API int nk_stricmpn(const char *s1, const char *s2, int n); +NK_API int nk_strtoi(const char *str, const char **endptr); +NK_API float nk_strtof(const char *str, const char **endptr); +NK_API double nk_strtod(const char *str, const char **endptr); +NK_API int nk_strfilter(const char *text, const char *regexp); +NK_API int nk_strmatch_fuzzy_string(char const *str, char const *pattern, int *out_score); +NK_API int nk_strmatch_fuzzy_text(const char *txt, int txt_len, const char *pattern, int *out_score); +/* ============================================================================= + * + * UTF-8 + * + * ============================================================================= */ +NK_API int nk_utf_decode(const char*, nk_rune*, int); +NK_API int nk_utf_encode(nk_rune, char*, int); +NK_API int nk_utf_len(const char*, int byte_len); +NK_API const char* nk_utf_at(const char *buffer, int length, int index, nk_rune *unicode, int *len); +/* =============================================================== + * + * FONT + * + * ===============================================================*/ +/* Font handling in this library was designed to be quite customizable and lets + you decide what you want to use and what you want to provide. There are three + different ways to use the font atlas. The first two will use your font + handling scheme and only requires essential data to run nuklear. The next + slightly more advanced features is font handling with vertex buffer output. + Finally the most complex API wise is using nuklear's font baking API. + + 1.) Using your own implementation without vertex buffer output + -------------------------------------------------------------- + So first up the easiest way to do font handling is by just providing a + `nk_user_font` struct which only requires the height in pixel of the used + font and a callback to calculate the width of a string. This way of handling + fonts is best fitted for using the normal draw shape command API where you + do all the text drawing yourself and the library does not require any kind + of deeper knowledge about which font handling mechanism you use. + IMPORTANT: the `nk_user_font` pointer provided to nuklear has to persist + over the complete life time! I know this sucks but it is currently the only + way to switch between fonts. + + float your_text_width_calculation(nk_handle handle, float height, const char *text, int len) + { + your_font_type *type = handle.ptr; + float text_width = ...; + return text_width; + } + + struct nk_user_font font; + font.userdata.ptr = &your_font_class_or_struct; + font.height = your_font_height; + font.width = your_text_width_calculation; + + struct nk_context ctx; + nk_init_default(&ctx, &font); + + 2.) Using your own implementation with vertex buffer output + -------------------------------------------------------------- + While the first approach works fine if you don't want to use the optional + vertex buffer output it is not enough if you do. To get font handling working + for these cases you have to provide two additional parameters inside the + `nk_user_font`. First a texture atlas handle used to draw text as subimages + of a bigger font atlas texture and a callback to query a character's glyph + information (offset, size, ...). So it is still possible to provide your own + font and use the vertex buffer output. + + float your_text_width_calculation(nk_handle handle, float height, const char *text, int len) + { + your_font_type *type = handle.ptr; + float text_width = ...; + return text_width; + } + void query_your_font_glyph(nk_handle handle, float font_height, struct nk_user_font_glyph *glyph, nk_rune codepoint, nk_rune next_codepoint) + { + your_font_type *type = handle.ptr; + glyph.width = ...; + glyph.height = ...; + glyph.xadvance = ...; + glyph.uv[0].x = ...; + glyph.uv[0].y = ...; + glyph.uv[1].x = ...; + glyph.uv[1].y = ...; + glyph.offset.x = ...; + glyph.offset.y = ...; + } + + struct nk_user_font font; + font.userdata.ptr = &your_font_class_or_struct; + font.height = your_font_height; + font.width = your_text_width_calculation; + font.query = query_your_font_glyph; + font.texture.id = your_font_texture; + + struct nk_context ctx; + nk_init_default(&ctx, &font); + + 3.) Nuklear font baker + ------------------------------------ + The final approach if you do not have a font handling functionality or don't + want to use it in this library is by using the optional font baker. + The font baker APIs can be used to create a font plus font atlas texture + and can be used with or without the vertex buffer output. + + It still uses the `nk_user_font` struct and the two different approaches + previously stated still work. The font baker is not located inside + `nk_context` like all other systems since it can be understood as more of + an extension to nuklear and does not really depend on any `nk_context` state. + + Font baker need to be initialized first by one of the nk_font_atlas_init_xxx + functions. If you don't care about memory just call the default version + `nk_font_atlas_init_default` which will allocate all memory from the standard library. + If you want to control memory allocation but you don't care if the allocated + memory is temporary and therefore can be freed directly after the baking process + is over or permanent you can call `nk_font_atlas_init`. + + After successfully initializing the font baker you can add Truetype(.ttf) fonts from + different sources like memory or from file by calling one of the `nk_font_atlas_add_xxx`. + functions. Adding font will permanently store each font, font config and ttf memory block(!) + inside the font atlas and allows to reuse the font atlas. If you don't want to reuse + the font baker by for example adding additional fonts you can call + `nk_font_atlas_cleanup` after the baking process is over (after calling nk_font_atlas_end). + + As soon as you added all fonts you wanted you can now start the baking process + for every selected glyph to image by calling `nk_font_atlas_bake`. + The baking process returns image memory, width and height which can be used to + either create your own image object or upload it to any graphics library. + No matter which case you finally have to call `nk_font_atlas_end` which + will free all temporary memory including the font atlas image so make sure + you created our texture beforehand. `nk_font_atlas_end` requires a handle + to your font texture or object and optionally fills a `struct nk_draw_null_texture` + which can be used for the optional vertex output. If you don't want it just + set the argument to `NULL`. + + At this point you are done and if you don't want to reuse the font atlas you + can call `nk_font_atlas_cleanup` to free all truetype blobs and configuration + memory. Finally if you don't use the font atlas and any of it's fonts anymore + you need to call `nk_font_atlas_clear` to free all memory still being used. + + struct nk_font_atlas atlas; + nk_font_atlas_init_default(&atlas); + nk_font_atlas_begin(&atlas); + nk_font *font = nk_font_atlas_add_from_file(&atlas, "Path/To/Your/TTF_Font.ttf", 13, 0); + nk_font *font2 = nk_font_atlas_add_from_file(&atlas, "Path/To/Your/TTF_Font2.ttf", 16, 0); + const void* img = nk_font_atlas_bake(&atlas, &img_width, &img_height, NK_FONT_ATLAS_RGBA32); + nk_font_atlas_end(&atlas, nk_handle_id(texture), 0); + + struct nk_context ctx; + nk_init_default(&ctx, &font->handle); + while (1) { + + } + nk_font_atlas_clear(&atlas); + + The font baker API is probably the most complex API inside this library and + I would suggest reading some of my examples `example/` to get a grip on how + to use the font atlas. There are a number of details I left out. For example + how to merge fonts, configure a font with `nk_font_config` to use other languages, + use another texture coordinate format and a lot more: + + struct nk_font_config cfg = nk_font_config(font_pixel_height); + cfg.merge_mode = nk_false or nk_true; + cfg.range = nk_font_korean_glyph_ranges(); + cfg.coord_type = NK_COORD_PIXEL; + nk_font *font = nk_font_atlas_add_from_file(&atlas, "Path/To/Your/TTF_Font.ttf", 13, &cfg); + +*/ +struct nk_user_font_glyph; +typedef float(*nk_text_width_f)(nk_handle, float h, const char*, int len); +typedef void(*nk_query_font_glyph_f)(nk_handle handle, float font_height, + struct nk_user_font_glyph *glyph, + nk_rune codepoint, nk_rune next_codepoint); + +#if defined(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) || defined(NK_INCLUDE_SOFTWARE_FONT) +struct nk_user_font_glyph { + struct nk_vec2 uv[2]; + /* texture coordinates */ + struct nk_vec2 offset; + /* offset between top left and glyph */ + float width, height; + /* size of the glyph */ + float xadvance; + /* offset to the next glyph */ +}; +#endif + +struct nk_user_font { + nk_handle userdata; + /* user provided font handle */ + float height; + /* max height of the font */ + nk_text_width_f width; + /* font string width in pixel callback */ +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT + nk_query_font_glyph_f query; + /* font glyph callback to query drawing info */ + nk_handle texture; + /* texture handle to the used font atlas or texture */ +#endif +}; + +#ifdef NK_INCLUDE_FONT_BAKING +enum nk_font_coord_type { + NK_COORD_UV, /* texture coordinates inside font glyphs are clamped between 0-1 */ + NK_COORD_PIXEL /* texture coordinates inside font glyphs are in absolute pixel */ +}; + +struct nk_font; +struct nk_baked_font { + float height; + /* height of the font */ + float ascent, descent; + /* font glyphs ascent and descent */ + nk_rune glyph_offset; + /* glyph array offset inside the font glyph baking output array */ + nk_rune glyph_count; + /* number of glyphs of this font inside the glyph baking array output */ + const nk_rune *ranges; + /* font codepoint ranges as pairs of (from/to) and 0 as last element */ +}; + +struct nk_font_config { + struct nk_font_config *next; + /* NOTE: only used internally */ + void *ttf_blob; + /* pointer to loaded TTF file memory block. + * NOTE: not needed for nk_font_atlas_add_from_memory and nk_font_atlas_add_from_file. */ + nk_size ttf_size; + /* size of the loaded TTF file memory block + * NOTE: not needed for nk_font_atlas_add_from_memory and nk_font_atlas_add_from_file. */ + + unsigned char ttf_data_owned_by_atlas; + /* used inside font atlas: default to: 0*/ + unsigned char merge_mode; + /* merges this font into the last font */ + unsigned char pixel_snap; + /* align every character to pixel boundary (if true set oversample (1,1)) */ + unsigned char oversample_v, oversample_h; + /* rasterize at hight quality for sub-pixel position */ + unsigned char padding[3]; + + float size; + /* baked pixel height of the font */ + enum nk_font_coord_type coord_type; + /* texture coordinate format with either pixel or UV coordinates */ + struct nk_vec2 spacing; + /* extra pixel spacing between glyphs */ + const nk_rune *range; + /* list of unicode ranges (2 values per range, zero terminated) */ + struct nk_baked_font *font; + /* font to setup in the baking process: NOTE: not needed for font atlas */ + nk_rune fallback_glyph; + /* fallback glyph to use if a given rune is not found */ + struct nk_font_config *n; + struct nk_font_config *p; +}; + +struct nk_font_glyph { + nk_rune codepoint; + float xadvance; + float x0, y0, x1, y1, w, h; + float u0, v0, u1, v1; +}; + +struct nk_font { + struct nk_font *next; + struct nk_user_font handle; + struct nk_baked_font info; + float scale; + struct nk_font_glyph *glyphs; + const struct nk_font_glyph *fallback; + nk_rune fallback_codepoint; + nk_handle texture; + struct nk_font_config *config; +}; + +enum nk_font_atlas_format { + NK_FONT_ATLAS_ALPHA8, + NK_FONT_ATLAS_RGBA32 +}; + +struct nk_font_atlas { + void *pixel; + int tex_width; + int tex_height; + + struct nk_allocator permanent; + struct nk_allocator temporary; + + struct nk_recti custom; + struct nk_cursor cursors[NK_CURSOR_COUNT]; + + int glyph_count; + struct nk_font_glyph *glyphs; + struct nk_font *default_font; + struct nk_font *fonts; + struct nk_font_config *config; + int font_num; +}; + +/* some language glyph codepoint ranges */ +NK_API const nk_rune *nk_font_default_glyph_ranges(void); +NK_API const nk_rune *nk_font_chinese_glyph_ranges(void); +NK_API const nk_rune *nk_font_cyrillic_glyph_ranges(void); +NK_API const nk_rune *nk_font_korean_glyph_ranges(void); + +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_API void nk_font_atlas_init_default(struct nk_font_atlas*); +#endif +NK_API void nk_font_atlas_init(struct nk_font_atlas*, struct nk_allocator*); +NK_API void nk_font_atlas_init_custom(struct nk_font_atlas*, struct nk_allocator *persistent, struct nk_allocator *transient); +NK_API void nk_font_atlas_begin(struct nk_font_atlas*); +NK_API struct nk_font_config nk_font_config(float pixel_height); +NK_API struct nk_font *nk_font_atlas_add(struct nk_font_atlas*, const struct nk_font_config*); +#ifdef NK_INCLUDE_DEFAULT_FONT +NK_API struct nk_font* nk_font_atlas_add_default(struct nk_font_atlas*, float height, const struct nk_font_config*); +#endif +NK_API struct nk_font* nk_font_atlas_add_from_memory(struct nk_font_atlas *atlas, void *memory, nk_size size, float height, const struct nk_font_config *config); +#ifdef NK_INCLUDE_STANDARD_IO +NK_API struct nk_font* nk_font_atlas_add_from_file(struct nk_font_atlas *atlas, const char *file_path, float height, const struct nk_font_config*); +#endif +NK_API struct nk_font *nk_font_atlas_add_compressed(struct nk_font_atlas*, void *memory, nk_size size, float height, const struct nk_font_config*); +NK_API struct nk_font* nk_font_atlas_add_compressed_base85(struct nk_font_atlas*, const char *data, float height, const struct nk_font_config *config); +NK_API const void* nk_font_atlas_bake(struct nk_font_atlas*, int *width, int *height, enum nk_font_atlas_format); +NK_API void nk_font_atlas_end(struct nk_font_atlas*, nk_handle tex, struct nk_draw_null_texture*); +NK_API const struct nk_font_glyph* nk_font_find_glyph(struct nk_font*, nk_rune unicode); +NK_API void nk_font_atlas_cleanup(struct nk_font_atlas *atlas); +NK_API void nk_font_atlas_clear(struct nk_font_atlas*); + +#endif + +/* ============================================================== + * + * MEMORY BUFFER + * + * ===============================================================*/ +/* A basic (double)-buffer with linear allocation and resetting as only + freeing policy. The buffer's main purpose is to control all memory management + inside the GUI toolkit and still leave memory control as much as possible in + the hand of the user while also making sure the library is easy to use if + not as much control is needed. + In general all memory inside this library can be provided from the user in + three different ways. + + The first way and the one providing most control is by just passing a fixed + size memory block. In this case all control lies in the hand of the user + since he can exactly control where the memory comes from and how much memory + the library should consume. Of course using the fixed size API removes the + ability to automatically resize a buffer if not enough memory is provided so + you have to take over the resizing. While being a fixed sized buffer sounds + quite limiting, it is very effective in this library since the actual memory + consumption is quite stable and has a fixed upper bound for a lot of cases. + + If you don't want to think about how much memory the library should allocate + at all time or have a very dynamic UI with unpredictable memory consumption + habits but still want control over memory allocation you can use the dynamic + allocator based API. The allocator consists of two callbacks for allocating + and freeing memory and optional userdata so you can plugin your own allocator. + + The final and easiest way can be used by defining + NK_INCLUDE_DEFAULT_ALLOCATOR which uses the standard library memory + allocation functions malloc and free and takes over complete control over + memory in this library. +*/ +struct nk_memory_status { + void *memory; + unsigned int type; + nk_size size; + nk_size allocated; + nk_size needed; + nk_size calls; +}; + +enum nk_allocation_type { + NK_BUFFER_FIXED, + NK_BUFFER_DYNAMIC +}; + +enum nk_buffer_allocation_type { + NK_BUFFER_FRONT, + NK_BUFFER_BACK, + NK_BUFFER_MAX +}; + +struct nk_buffer_marker { + int active; + nk_size offset; +}; + +struct nk_memory {void *ptr;nk_size size;}; +struct nk_buffer { + struct nk_buffer_marker marker[NK_BUFFER_MAX]; + /* buffer marker to free a buffer to a certain offset */ + struct nk_allocator pool; + /* allocator callback for dynamic buffers */ + enum nk_allocation_type type; + /* memory management type */ + struct nk_memory memory; + /* memory and size of the current memory block */ + float grow_factor; + /* growing factor for dynamic memory management */ + nk_size allocated; + /* total amount of memory allocated */ + nk_size needed; + /* totally consumed memory given that enough memory is present */ + nk_size calls; + /* number of allocation calls */ + nk_size size; + /* current size of the buffer */ +}; + +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_API void nk_buffer_init_default(struct nk_buffer*); +#endif +NK_API void nk_buffer_init(struct nk_buffer*, const struct nk_allocator*, nk_size size); +NK_API void nk_buffer_init_fixed(struct nk_buffer*, void *memory, nk_size size); +NK_API void nk_buffer_info(struct nk_memory_status*, struct nk_buffer*); +NK_API void nk_buffer_push(struct nk_buffer*, enum nk_buffer_allocation_type type, const void *memory, nk_size size, nk_size align); +NK_API void nk_buffer_mark(struct nk_buffer*, enum nk_buffer_allocation_type type); +NK_API void nk_buffer_reset(struct nk_buffer*, enum nk_buffer_allocation_type type); +NK_API void nk_buffer_clear(struct nk_buffer*); +NK_API void nk_buffer_free(struct nk_buffer*); +NK_API void *nk_buffer_memory(struct nk_buffer*); +NK_API const void *nk_buffer_memory_const(const struct nk_buffer*); +NK_API nk_size nk_buffer_total(struct nk_buffer*); + +/* ============================================================== + * + * STRING + * + * ===============================================================*/ +/* Basic string buffer which is only used in context with the text editor + * to manage and manipulate dynamic or fixed size string content. This is _NOT_ + * the default string handling method. The only instance you should have any contact + * with this API is if you interact with an `nk_text_edit` object inside one of the + * copy and paste functions and even there only for more advanced cases. */ +struct nk_str { + struct nk_buffer buffer; + int len; /* in codepoints/runes/glyphs */ +}; + +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_API void nk_str_init_default(struct nk_str*); +#endif +NK_API void nk_str_init(struct nk_str*, const struct nk_allocator*, nk_size size); +NK_API void nk_str_init_fixed(struct nk_str*, void *memory, nk_size size); +NK_API void nk_str_clear(struct nk_str*); +NK_API void nk_str_free(struct nk_str*); + +NK_API int nk_str_append_text_char(struct nk_str*, const char*, int); +NK_API int nk_str_append_str_char(struct nk_str*, const char*); +NK_API int nk_str_append_text_utf8(struct nk_str*, const char*, int); +NK_API int nk_str_append_str_utf8(struct nk_str*, const char*); +NK_API int nk_str_append_text_runes(struct nk_str*, const nk_rune*, int); +NK_API int nk_str_append_str_runes(struct nk_str*, const nk_rune*); + +NK_API int nk_str_insert_at_char(struct nk_str*, int pos, const char*, int); +NK_API int nk_str_insert_at_rune(struct nk_str*, int pos, const char*, int); + +NK_API int nk_str_insert_text_char(struct nk_str*, int pos, const char*, int); +NK_API int nk_str_insert_str_char(struct nk_str*, int pos, const char*); +NK_API int nk_str_insert_text_utf8(struct nk_str*, int pos, const char*, int); +NK_API int nk_str_insert_str_utf8(struct nk_str*, int pos, const char*); +NK_API int nk_str_insert_text_runes(struct nk_str*, int pos, const nk_rune*, int); +NK_API int nk_str_insert_str_runes(struct nk_str*, int pos, const nk_rune*); + +NK_API void nk_str_remove_chars(struct nk_str*, int len); +NK_API void nk_str_remove_runes(struct nk_str *str, int len); +NK_API void nk_str_delete_chars(struct nk_str*, int pos, int len); +NK_API void nk_str_delete_runes(struct nk_str*, int pos, int len); + +NK_API char *nk_str_at_char(struct nk_str*, int pos); +NK_API char *nk_str_at_rune(struct nk_str*, int pos, nk_rune *unicode, int *len); +NK_API nk_rune nk_str_rune_at(const struct nk_str*, int pos); +NK_API const char *nk_str_at_char_const(const struct nk_str*, int pos); +NK_API const char *nk_str_at_const(const struct nk_str*, int pos, nk_rune *unicode, int *len); + +NK_API char *nk_str_get(struct nk_str*); +NK_API const char *nk_str_get_const(const struct nk_str*); +NK_API int nk_str_len(struct nk_str*); +NK_API int nk_str_len_char(struct nk_str*); + +/*=============================================================== + * + * TEXT EDITOR + * + * ===============================================================*/ +/* Editing text in this library is handled by either `nk_edit_string` or + * `nk_edit_buffer`. But like almost everything in this library there are multiple + * ways of doing it and a balance between control and ease of use with memory + * as well as functionality controlled by flags. + * + * This library generally allows three different levels of memory control: + * First of is the most basic way of just providing a simple char array with + * string length. This method is probably the easiest way of handling simple + * user text input. Main upside is complete control over memory while the biggest + * downside in comparison with the other two approaches is missing undo/redo. + * + * For UIs that require undo/redo the second way was created. It is based on + * a fixed size nk_text_edit struct, which has an internal undo/redo stack. + * This is mainly useful if you want something more like a text editor but don't want + * to have a dynamically growing buffer. + * + * The final way is using a dynamically growing nk_text_edit struct, which + * has both a default version if you don't care where memory comes from and an + * allocator version if you do. While the text editor is quite powerful for its + * complexity I would not recommend editing gigabytes of data with it. + * It is rather designed for uses cases which make sense for a GUI library not for + * an full blown text editor. + */ +#ifndef NK_TEXTEDIT_UNDOSTATECOUNT +#define NK_TEXTEDIT_UNDOSTATECOUNT 99 +#endif + +#ifndef NK_TEXTEDIT_UNDOCHARCOUNT +#define NK_TEXTEDIT_UNDOCHARCOUNT 999 +#endif + +struct nk_text_edit; +struct nk_clipboard { + nk_handle userdata; + nk_plugin_paste paste; + nk_plugin_copy copy; +}; + +struct nk_text_undo_record { + int where; + short insert_length; + short delete_length; + short char_storage; +}; + +struct nk_text_undo_state { + struct nk_text_undo_record undo_rec[NK_TEXTEDIT_UNDOSTATECOUNT]; + nk_rune undo_char[NK_TEXTEDIT_UNDOCHARCOUNT]; + short undo_point; + short redo_point; + short undo_char_point; + short redo_char_point; +}; + +enum nk_text_edit_type { + NK_TEXT_EDIT_SINGLE_LINE, + NK_TEXT_EDIT_MULTI_LINE +}; + +enum nk_text_edit_mode { + NK_TEXT_EDIT_MODE_VIEW, + NK_TEXT_EDIT_MODE_INSERT, + NK_TEXT_EDIT_MODE_REPLACE +}; + +struct nk_text_edit { + struct nk_clipboard clip; + struct nk_str string; + nk_plugin_filter filter; + struct nk_vec2 scrollbar; + + int cursor; + int select_start; + int select_end; + unsigned char mode; + unsigned char cursor_at_end_of_line; + unsigned char initialized; + unsigned char has_preferred_x; + unsigned char single_line; + unsigned char active; + unsigned char padding1; + float preferred_x; + struct nk_text_undo_state undo; +}; + +/* filter function */ +NK_API int nk_filter_default(const struct nk_text_edit*, nk_rune unicode); +NK_API int nk_filter_ascii(const struct nk_text_edit*, nk_rune unicode); +NK_API int nk_filter_float(const struct nk_text_edit*, nk_rune unicode); +NK_API int nk_filter_decimal(const struct nk_text_edit*, nk_rune unicode); +NK_API int nk_filter_hex(const struct nk_text_edit*, nk_rune unicode); +NK_API int nk_filter_oct(const struct nk_text_edit*, nk_rune unicode); +NK_API int nk_filter_binary(const struct nk_text_edit*, nk_rune unicode); + +/* text editor */ +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_API void nk_textedit_init_default(struct nk_text_edit*); +#endif +NK_API void nk_textedit_init(struct nk_text_edit*, struct nk_allocator*, nk_size size); +NK_API void nk_textedit_init_fixed(struct nk_text_edit*, void *memory, nk_size size); +NK_API void nk_textedit_free(struct nk_text_edit*); +NK_API void nk_textedit_text(struct nk_text_edit*, const char*, int total_len); +NK_API void nk_textedit_delete(struct nk_text_edit*, int where, int len); +NK_API void nk_textedit_delete_selection(struct nk_text_edit*); +NK_API void nk_textedit_select_all(struct nk_text_edit*); +NK_API int nk_textedit_cut(struct nk_text_edit*); +NK_API int nk_textedit_paste(struct nk_text_edit*, char const*, int len); +NK_API void nk_textedit_undo(struct nk_text_edit*); +NK_API void nk_textedit_redo(struct nk_text_edit*); + +/* =============================================================== + * + * DRAWING + * + * ===============================================================*/ +/* This library was designed to be render backend agnostic so it does + not draw anything to screen. Instead all drawn shapes, widgets + are made of, are buffered into memory and make up a command queue. + Each frame therefore fills the command buffer with draw commands + that then need to be executed by the user and his own render backend. + After that the command buffer needs to be cleared and a new frame can be + started. It is probably important to note that the command buffer is the main + drawing API and the optional vertex buffer API only takes this format and + converts it into a hardware accessible format. + + To use the command queue to draw your own widgets you can access the + command buffer of each window by calling `nk_window_get_canvas` after + previously having called `nk_begin`: + + void draw_red_rectangle_widget(struct nk_context *ctx) + { + struct nk_command_buffer *canvas; + struct nk_input *input = &ctx->input; + canvas = nk_window_get_canvas(ctx); + + struct nk_rect space; + enum nk_widget_layout_states state; + state = nk_widget(&space, ctx); + if (!state) return; + + if (state != NK_WIDGET_ROM) + update_your_widget_by_user_input(...); + nk_fill_rect(canvas, space, 0, nk_rgb(255,0,0)); + } + + if (nk_begin(...)) { + nk_layout_row_dynamic(ctx, 25, 1); + draw_red_rectangle_widget(ctx); + } + nk_end(..) + + Important to know if you want to create your own widgets is the `nk_widget` + call. It allocates space on the panel reserved for this widget to be used, + but also returns the state of the widget space. If your widget is not seen and does + not have to be updated it is '0' and you can just return. If it only has + to be drawn the state will be `NK_WIDGET_ROM` otherwise you can do both + update and draw your widget. The reason for separating is to only draw and + update what is actually necessary which is crucial for performance. +*/ +enum nk_command_type { + NK_COMMAND_NOP, + NK_COMMAND_SCISSOR, + NK_COMMAND_LINE, + NK_COMMAND_CURVE, + NK_COMMAND_RECT, + NK_COMMAND_RECT_FILLED, + NK_COMMAND_RECT_MULTI_COLOR, + NK_COMMAND_CIRCLE, + NK_COMMAND_CIRCLE_FILLED, + NK_COMMAND_ARC, + NK_COMMAND_ARC_FILLED, + NK_COMMAND_TRIANGLE, + NK_COMMAND_TRIANGLE_FILLED, + NK_COMMAND_POLYGON, + NK_COMMAND_POLYGON_FILLED, + NK_COMMAND_POLYLINE, + NK_COMMAND_TEXT, + NK_COMMAND_IMAGE, + NK_COMMAND_CUSTOM +}; + +/* command base and header of every command inside the buffer */ +struct nk_command { + enum nk_command_type type; + nk_size next; +#ifdef NK_INCLUDE_COMMAND_USERDATA + nk_handle userdata; +#endif +}; + +struct nk_command_scissor { + struct nk_command header; + short x, y; + unsigned short w, h; +}; + +struct nk_command_line { + struct nk_command header; + unsigned short line_thickness; + struct nk_vec2i begin; + struct nk_vec2i end; + struct nk_color color; +}; + +struct nk_command_curve { + struct nk_command header; + unsigned short line_thickness; + struct nk_vec2i begin; + struct nk_vec2i end; + struct nk_vec2i ctrl[2]; + struct nk_color color; +}; + +struct nk_command_rect { + struct nk_command header; + unsigned short rounding; + unsigned short line_thickness; + short x, y; + unsigned short w, h; + struct nk_color color; +}; + +struct nk_command_rect_filled { + struct nk_command header; + unsigned short rounding; + short x, y; + unsigned short w, h; + struct nk_color color; +}; + +struct nk_command_rect_multi_color { + struct nk_command header; + short x, y; + unsigned short w, h; + struct nk_color left; + struct nk_color top; + struct nk_color bottom; + struct nk_color right; +}; + +struct nk_command_triangle { + struct nk_command header; + unsigned short line_thickness; + struct nk_vec2i a; + struct nk_vec2i b; + struct nk_vec2i c; + struct nk_color color; +}; + +struct nk_command_triangle_filled { + struct nk_command header; + struct nk_vec2i a; + struct nk_vec2i b; + struct nk_vec2i c; + struct nk_color color; +}; + +struct nk_command_circle { + struct nk_command header; + short x, y; + unsigned short line_thickness; + unsigned short w, h; + struct nk_color color; +}; + +struct nk_command_circle_filled { + struct nk_command header; + short x, y; + unsigned short w, h; + struct nk_color color; +}; + +struct nk_command_arc { + struct nk_command header; + short cx, cy; + unsigned short r; + unsigned short line_thickness; + float a[2]; + struct nk_color color; +}; + +struct nk_command_arc_filled { + struct nk_command header; + short cx, cy; + unsigned short r; + float a[2]; + struct nk_color color; +}; + +struct nk_command_polygon { + struct nk_command header; + struct nk_color color; + unsigned short line_thickness; + unsigned short point_count; + struct nk_vec2i points[1]; +}; + +struct nk_command_polygon_filled { + struct nk_command header; + struct nk_color color; + unsigned short point_count; + struct nk_vec2i points[1]; +}; + +struct nk_command_polyline { + struct nk_command header; + struct nk_color color; + unsigned short line_thickness; + unsigned short point_count; + struct nk_vec2i points[1]; +}; + +struct nk_command_image { + struct nk_command header; + short x, y; + unsigned short w, h; + struct nk_image img; + struct nk_color col; +}; + +typedef void (*nk_command_custom_callback)(void *canvas, short x,short y, + unsigned short w, unsigned short h, nk_handle callback_data); +struct nk_command_custom { + struct nk_command header; + short x, y; + unsigned short w, h; + nk_handle callback_data; + nk_command_custom_callback callback; +}; + +struct nk_command_text { + struct nk_command header; + const struct nk_user_font *font; + struct nk_color background; + struct nk_color foreground; + short x, y; + unsigned short w, h; + float height; + int length; + char string[1]; +}; + +enum nk_command_clipping { + NK_CLIPPING_OFF = nk_false, + NK_CLIPPING_ON = nk_true +}; + +struct nk_command_buffer { + struct nk_buffer *base; + struct nk_rect clip; + int use_clipping; + nk_handle userdata; + nk_size begin, end, last; +}; + +/* shape outlines */ +NK_API void nk_stroke_line(struct nk_command_buffer *b, float x0, float y0, float x1, float y1, float line_thickness, struct nk_color); +NK_API void nk_stroke_curve(struct nk_command_buffer*, float, float, float, float, float, float, float, float, float line_thickness, struct nk_color); +NK_API void nk_stroke_rect(struct nk_command_buffer*, struct nk_rect, float rounding, float line_thickness, struct nk_color); +NK_API void nk_stroke_circle(struct nk_command_buffer*, struct nk_rect, float line_thickness, struct nk_color); +NK_API void nk_stroke_arc(struct nk_command_buffer*, float cx, float cy, float radius, float a_min, float a_max, float line_thickness, struct nk_color); +NK_API void nk_stroke_triangle(struct nk_command_buffer*, float, float, float, float, float, float, float line_thichness, struct nk_color); +NK_API void nk_stroke_polyline(struct nk_command_buffer*, float *points, int point_count, float line_thickness, struct nk_color col); +NK_API void nk_stroke_polygon(struct nk_command_buffer*, float*, int point_count, float line_thickness, struct nk_color); + +/* filled shades */ +NK_API void nk_fill_rect(struct nk_command_buffer*, struct nk_rect, float rounding, struct nk_color); +NK_API void nk_fill_rect_multi_color(struct nk_command_buffer*, struct nk_rect, struct nk_color left, struct nk_color top, struct nk_color right, struct nk_color bottom); +NK_API void nk_fill_circle(struct nk_command_buffer*, struct nk_rect, struct nk_color); +NK_API void nk_fill_arc(struct nk_command_buffer*, float cx, float cy, float radius, float a_min, float a_max, struct nk_color); +NK_API void nk_fill_triangle(struct nk_command_buffer*, float x0, float y0, float x1, float y1, float x2, float y2, struct nk_color); +NK_API void nk_fill_polygon(struct nk_command_buffer*, float*, int point_count, struct nk_color); + +/* misc */ +NK_API void nk_draw_image(struct nk_command_buffer*, struct nk_rect, const struct nk_image*, struct nk_color); +NK_API void nk_draw_text(struct nk_command_buffer*, struct nk_rect, const char *text, int len, const struct nk_user_font*, struct nk_color, struct nk_color); +NK_API void nk_push_scissor(struct nk_command_buffer*, struct nk_rect); +NK_API void nk_push_custom(struct nk_command_buffer*, struct nk_rect, nk_command_custom_callback, nk_handle usr); + +/* =============================================================== + * + * INPUT + * + * ===============================================================*/ +struct nk_mouse_button { + int down; + unsigned int clicked; + struct nk_vec2 clicked_pos; +}; +struct nk_mouse { + struct nk_mouse_button buttons[NK_BUTTON_MAX]; + struct nk_vec2 pos; + struct nk_vec2 prev; + struct nk_vec2 delta; + struct nk_vec2 scroll_delta; + unsigned char grab; + unsigned char grabbed; + unsigned char ungrab; +}; + +struct nk_key { + int down; + unsigned int clicked; +}; +struct nk_keyboard { + struct nk_key keys[NK_KEY_MAX]; + char text[NK_INPUT_MAX]; + int text_len; +}; + +struct nk_input { + struct nk_keyboard keyboard; + struct nk_mouse mouse; +}; + +NK_API int nk_input_has_mouse_click(const struct nk_input*, enum nk_buttons); +NK_API int nk_input_has_mouse_click_in_rect(const struct nk_input*, enum nk_buttons, struct nk_rect); +NK_API int nk_input_has_mouse_click_down_in_rect(const struct nk_input*, enum nk_buttons, struct nk_rect, int down); +NK_API int nk_input_is_mouse_click_in_rect(const struct nk_input*, enum nk_buttons, struct nk_rect); +NK_API int nk_input_is_mouse_click_down_in_rect(const struct nk_input *i, enum nk_buttons id, struct nk_rect b, int down); +NK_API int nk_input_any_mouse_click_in_rect(const struct nk_input*, struct nk_rect); +NK_API int nk_input_is_mouse_prev_hovering_rect(const struct nk_input*, struct nk_rect); +NK_API int nk_input_is_mouse_hovering_rect(const struct nk_input*, struct nk_rect); +NK_API int nk_input_mouse_clicked(const struct nk_input*, enum nk_buttons, struct nk_rect); +NK_API int nk_input_is_mouse_down(const struct nk_input*, enum nk_buttons); +NK_API int nk_input_is_mouse_pressed(const struct nk_input*, enum nk_buttons); +NK_API int nk_input_is_mouse_released(const struct nk_input*, enum nk_buttons); +NK_API int nk_input_is_key_pressed(const struct nk_input*, enum nk_keys); +NK_API int nk_input_is_key_released(const struct nk_input*, enum nk_keys); +NK_API int nk_input_is_key_down(const struct nk_input*, enum nk_keys); + +/* =============================================================== + * + * DRAW LIST + * + * ===============================================================*/ +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT +/* The optional vertex buffer draw list provides a 2D drawing context + with antialiasing functionality which takes basic filled or outlined shapes + or a path and outputs vertexes, elements and draw commands. + The actual draw list API is not required to be used directly while using this + library since converting the default library draw command output is done by + just calling `nk_convert` but I decided to still make this library accessible + since it can be useful. + + The draw list is based on a path buffering and polygon and polyline + rendering API which allows a lot of ways to draw 2D content to screen. + In fact it is probably more powerful than needed but allows even more crazy + things than this library provides by default. +*/ +#ifdef NK_UINT_DRAW_INDEX +typedef nk_uint nk_draw_index; +#else +typedef nk_ushort nk_draw_index; +#endif +enum nk_draw_list_stroke { + NK_STROKE_OPEN = nk_false, + /* build up path has no connection back to the beginning */ + NK_STROKE_CLOSED = nk_true + /* build up path has a connection back to the beginning */ +}; + +enum nk_draw_vertex_layout_attribute { + NK_VERTEX_POSITION, + NK_VERTEX_COLOR, + NK_VERTEX_TEXCOORD, + NK_VERTEX_ATTRIBUTE_COUNT +}; + +enum nk_draw_vertex_layout_format { + NK_FORMAT_SCHAR, + NK_FORMAT_SSHORT, + NK_FORMAT_SINT, + NK_FORMAT_UCHAR, + NK_FORMAT_USHORT, + NK_FORMAT_UINT, + NK_FORMAT_FLOAT, + NK_FORMAT_DOUBLE, + +NK_FORMAT_COLOR_BEGIN, + NK_FORMAT_R8G8B8 = NK_FORMAT_COLOR_BEGIN, + NK_FORMAT_R16G15B16, + NK_FORMAT_R32G32B32, + + NK_FORMAT_R8G8B8A8, + NK_FORMAT_B8G8R8A8, + NK_FORMAT_R16G15B16A16, + NK_FORMAT_R32G32B32A32, + NK_FORMAT_R32G32B32A32_FLOAT, + NK_FORMAT_R32G32B32A32_DOUBLE, + + NK_FORMAT_RGB32, + NK_FORMAT_RGBA32, +NK_FORMAT_COLOR_END = NK_FORMAT_RGBA32, + NK_FORMAT_COUNT +}; + +#define NK_VERTEX_LAYOUT_END NK_VERTEX_ATTRIBUTE_COUNT,NK_FORMAT_COUNT,0 +struct nk_draw_vertex_layout_element { + enum nk_draw_vertex_layout_attribute attribute; + enum nk_draw_vertex_layout_format format; + nk_size offset; +}; + +struct nk_draw_command { + unsigned int elem_count; + /* number of elements in the current draw batch */ + struct nk_rect clip_rect; + /* current screen clipping rectangle */ + nk_handle texture; + /* current texture to set */ +#ifdef NK_INCLUDE_COMMAND_USERDATA + nk_handle userdata; +#endif +}; + +struct nk_draw_list { + struct nk_rect clip_rect; + struct nk_vec2 circle_vtx[12]; + struct nk_convert_config config; + + struct nk_buffer *buffer; + struct nk_buffer *vertices; + struct nk_buffer *elements; + + unsigned int element_count; + unsigned int vertex_count; + unsigned int cmd_count; + nk_size cmd_offset; + + unsigned int path_count; + unsigned int path_offset; + + enum nk_anti_aliasing line_AA; + enum nk_anti_aliasing shape_AA; + +#ifdef NK_INCLUDE_COMMAND_USERDATA + nk_handle userdata; +#endif +}; + +/* draw list */ +NK_API void nk_draw_list_init(struct nk_draw_list*); +NK_API void nk_draw_list_setup(struct nk_draw_list*, const struct nk_convert_config*, struct nk_buffer *cmds, struct nk_buffer *vertices, struct nk_buffer *elements, enum nk_anti_aliasing line_aa,enum nk_anti_aliasing shape_aa); + +/* drawing */ +#define nk_draw_list_foreach(cmd, can, b) for((cmd)=nk__draw_list_begin(can, b); (cmd)!=0; (cmd)=nk__draw_list_next(cmd, b, can)) +NK_API const struct nk_draw_command* nk__draw_list_begin(const struct nk_draw_list*, const struct nk_buffer*); +NK_API const struct nk_draw_command* nk__draw_list_next(const struct nk_draw_command*, const struct nk_buffer*, const struct nk_draw_list*); +NK_API const struct nk_draw_command* nk__draw_list_end(const struct nk_draw_list*, const struct nk_buffer*); + +/* path */ +NK_API void nk_draw_list_path_clear(struct nk_draw_list*); +NK_API void nk_draw_list_path_line_to(struct nk_draw_list*, struct nk_vec2 pos); +NK_API void nk_draw_list_path_arc_to_fast(struct nk_draw_list*, struct nk_vec2 center, float radius, int a_min, int a_max); +NK_API void nk_draw_list_path_arc_to(struct nk_draw_list*, struct nk_vec2 center, float radius, float a_min, float a_max, unsigned int segments); +NK_API void nk_draw_list_path_rect_to(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, float rounding); +NK_API void nk_draw_list_path_curve_to(struct nk_draw_list*, struct nk_vec2 p2, struct nk_vec2 p3, struct nk_vec2 p4, unsigned int num_segments); +NK_API void nk_draw_list_path_fill(struct nk_draw_list*, struct nk_color); +NK_API void nk_draw_list_path_stroke(struct nk_draw_list*, struct nk_color, enum nk_draw_list_stroke closed, float thickness); + +/* stroke */ +NK_API void nk_draw_list_stroke_line(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_color, float thickness); +NK_API void nk_draw_list_stroke_rect(struct nk_draw_list*, struct nk_rect rect, struct nk_color, float rounding, float thickness); +NK_API void nk_draw_list_stroke_triangle(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_vec2 c, struct nk_color, float thickness); +NK_API void nk_draw_list_stroke_circle(struct nk_draw_list*, struct nk_vec2 center, float radius, struct nk_color, unsigned int segs, float thickness); +NK_API void nk_draw_list_stroke_curve(struct nk_draw_list*, struct nk_vec2 p0, struct nk_vec2 cp0, struct nk_vec2 cp1, struct nk_vec2 p1, struct nk_color, unsigned int segments, float thickness); +NK_API void nk_draw_list_stroke_poly_line(struct nk_draw_list*, const struct nk_vec2 *pnts, const unsigned int cnt, struct nk_color, enum nk_draw_list_stroke, float thickness, enum nk_anti_aliasing); + +/* fill */ +NK_API void nk_draw_list_fill_rect(struct nk_draw_list*, struct nk_rect rect, struct nk_color, float rounding); +NK_API void nk_draw_list_fill_rect_multi_color(struct nk_draw_list*, struct nk_rect rect, struct nk_color left, struct nk_color top, struct nk_color right, struct nk_color bottom); +NK_API void nk_draw_list_fill_triangle(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_vec2 c, struct nk_color); +NK_API void nk_draw_list_fill_circle(struct nk_draw_list*, struct nk_vec2 center, float radius, struct nk_color col, unsigned int segs); +NK_API void nk_draw_list_fill_poly_convex(struct nk_draw_list*, const struct nk_vec2 *points, const unsigned int count, struct nk_color, enum nk_anti_aliasing); + +/* misc */ +NK_API void nk_draw_list_add_image(struct nk_draw_list*, struct nk_image texture, struct nk_rect rect, struct nk_color); +NK_API void nk_draw_list_add_text(struct nk_draw_list*, const struct nk_user_font*, struct nk_rect, const char *text, int len, float font_height, struct nk_color); +#ifdef NK_INCLUDE_COMMAND_USERDATA +NK_API void nk_draw_list_push_userdata(struct nk_draw_list*, nk_handle userdata); +#endif + +#endif + +/* =============================================================== + * + * GUI + * + * ===============================================================*/ +enum nk_style_item_type { + NK_STYLE_ITEM_COLOR, + NK_STYLE_ITEM_IMAGE +}; + +union nk_style_item_data { + struct nk_image image; + struct nk_color color; +}; + +struct nk_style_item { + enum nk_style_item_type type; + union nk_style_item_data data; +}; + +struct nk_style_text { + struct nk_color color; + struct nk_vec2 padding; +}; + +struct nk_style_button { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + struct nk_color border_color; + + /* text */ + struct nk_color text_background; + struct nk_color text_normal; + struct nk_color text_hover; + struct nk_color text_active; + nk_flags text_alignment; + + /* properties */ + float border; + float rounding; + struct nk_vec2 padding; + struct nk_vec2 image_padding; + struct nk_vec2 touch_padding; + + /* optional user callbacks */ + nk_handle userdata; + void(*draw_begin)(struct nk_command_buffer*, nk_handle userdata); + void(*draw_end)(struct nk_command_buffer*, nk_handle userdata); +}; + +struct nk_style_toggle { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + struct nk_color border_color; + + /* cursor */ + struct nk_style_item cursor_normal; + struct nk_style_item cursor_hover; + + /* text */ + struct nk_color text_normal; + struct nk_color text_hover; + struct nk_color text_active; + struct nk_color text_background; + nk_flags text_alignment; + + /* properties */ + struct nk_vec2 padding; + struct nk_vec2 touch_padding; + float spacing; + float border; + + /* optional user callbacks */ + nk_handle userdata; + void(*draw_begin)(struct nk_command_buffer*, nk_handle); + void(*draw_end)(struct nk_command_buffer*, nk_handle); +}; + +struct nk_style_selectable { + /* background (inactive) */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item pressed; + + /* background (active) */ + struct nk_style_item normal_active; + struct nk_style_item hover_active; + struct nk_style_item pressed_active; + + /* text color (inactive) */ + struct nk_color text_normal; + struct nk_color text_hover; + struct nk_color text_pressed; + + /* text color (active) */ + struct nk_color text_normal_active; + struct nk_color text_hover_active; + struct nk_color text_pressed_active; + struct nk_color text_background; + nk_flags text_alignment; + + /* properties */ + float rounding; + struct nk_vec2 padding; + struct nk_vec2 touch_padding; + struct nk_vec2 image_padding; + + /* optional user callbacks */ + nk_handle userdata; + void(*draw_begin)(struct nk_command_buffer*, nk_handle); + void(*draw_end)(struct nk_command_buffer*, nk_handle); +}; + +struct nk_style_slider { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + struct nk_color border_color; + + /* background bar */ + struct nk_color bar_normal; + struct nk_color bar_hover; + struct nk_color bar_active; + struct nk_color bar_filled; + + /* cursor */ + struct nk_style_item cursor_normal; + struct nk_style_item cursor_hover; + struct nk_style_item cursor_active; + + /* properties */ + float border; + float rounding; + float bar_height; + struct nk_vec2 padding; + struct nk_vec2 spacing; + struct nk_vec2 cursor_size; + + /* optional buttons */ + int show_buttons; + struct nk_style_button inc_button; + struct nk_style_button dec_button; + enum nk_symbol_type inc_symbol; + enum nk_symbol_type dec_symbol; + + /* optional user callbacks */ + nk_handle userdata; + void(*draw_begin)(struct nk_command_buffer*, nk_handle); + void(*draw_end)(struct nk_command_buffer*, nk_handle); +}; + +struct nk_style_progress { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + struct nk_color border_color; + + /* cursor */ + struct nk_style_item cursor_normal; + struct nk_style_item cursor_hover; + struct nk_style_item cursor_active; + struct nk_color cursor_border_color; + + /* properties */ + float rounding; + float border; + float cursor_border; + float cursor_rounding; + struct nk_vec2 padding; + + /* optional user callbacks */ + nk_handle userdata; + void(*draw_begin)(struct nk_command_buffer*, nk_handle); + void(*draw_end)(struct nk_command_buffer*, nk_handle); +}; + +struct nk_style_scrollbar { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + struct nk_color border_color; + + /* cursor */ + struct nk_style_item cursor_normal; + struct nk_style_item cursor_hover; + struct nk_style_item cursor_active; + struct nk_color cursor_border_color; + + /* properties */ + float border; + float rounding; + float border_cursor; + float rounding_cursor; + struct nk_vec2 padding; + + /* optional buttons */ + int show_buttons; + struct nk_style_button inc_button; + struct nk_style_button dec_button; + enum nk_symbol_type inc_symbol; + enum nk_symbol_type dec_symbol; + + /* optional user callbacks */ + nk_handle userdata; + void(*draw_begin)(struct nk_command_buffer*, nk_handle); + void(*draw_end)(struct nk_command_buffer*, nk_handle); +}; + +struct nk_style_edit { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + struct nk_color border_color; + struct nk_style_scrollbar scrollbar; + + /* cursor */ + struct nk_color cursor_normal; + struct nk_color cursor_hover; + struct nk_color cursor_text_normal; + struct nk_color cursor_text_hover; + + /* text (unselected) */ + struct nk_color text_normal; + struct nk_color text_hover; + struct nk_color text_active; + + /* text (selected) */ + struct nk_color selected_normal; + struct nk_color selected_hover; + struct nk_color selected_text_normal; + struct nk_color selected_text_hover; + + /* properties */ + float border; + float rounding; + float cursor_size; + struct nk_vec2 scrollbar_size; + struct nk_vec2 padding; + float row_padding; +}; + +struct nk_style_property { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + struct nk_color border_color; + + /* text */ + struct nk_color label_normal; + struct nk_color label_hover; + struct nk_color label_active; + + /* symbols */ + enum nk_symbol_type sym_left; + enum nk_symbol_type sym_right; + + /* properties */ + float border; + float rounding; + struct nk_vec2 padding; + + struct nk_style_edit edit; + struct nk_style_button inc_button; + struct nk_style_button dec_button; + + /* optional user callbacks */ + nk_handle userdata; + void(*draw_begin)(struct nk_command_buffer*, nk_handle); + void(*draw_end)(struct nk_command_buffer*, nk_handle); +}; + +struct nk_style_chart { + /* colors */ + struct nk_style_item background; + struct nk_color border_color; + struct nk_color selected_color; + struct nk_color color; + + /* properties */ + float border; + float rounding; + struct nk_vec2 padding; +}; + +struct nk_style_combo { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + struct nk_color border_color; + + /* label */ + struct nk_color label_normal; + struct nk_color label_hover; + struct nk_color label_active; + + /* symbol */ + struct nk_color symbol_normal; + struct nk_color symbol_hover; + struct nk_color symbol_active; + + /* button */ + struct nk_style_button button; + enum nk_symbol_type sym_normal; + enum nk_symbol_type sym_hover; + enum nk_symbol_type sym_active; + + /* properties */ + float border; + float rounding; + struct nk_vec2 content_padding; + struct nk_vec2 button_padding; + struct nk_vec2 spacing; +}; + +struct nk_style_tab { + /* background */ + struct nk_style_item background; + struct nk_color border_color; + struct nk_color text; + + /* button */ + struct nk_style_button tab_maximize_button; + struct nk_style_button tab_minimize_button; + struct nk_style_button node_maximize_button; + struct nk_style_button node_minimize_button; + enum nk_symbol_type sym_minimize; + enum nk_symbol_type sym_maximize; + + /* properties */ + float border; + float rounding; + float indent; + struct nk_vec2 padding; + struct nk_vec2 spacing; +}; + +enum nk_style_header_align { + NK_HEADER_LEFT, + NK_HEADER_RIGHT +}; +struct nk_style_window_header { + /* background */ + struct nk_style_item normal; + struct nk_style_item hover; + struct nk_style_item active; + + /* button */ + struct nk_style_button close_button; + struct nk_style_button minimize_button; + enum nk_symbol_type close_symbol; + enum nk_symbol_type minimize_symbol; + enum nk_symbol_type maximize_symbol; + + /* title */ + struct nk_color label_normal; + struct nk_color label_hover; + struct nk_color label_active; + + /* properties */ + enum nk_style_header_align align; + struct nk_vec2 padding; + struct nk_vec2 label_padding; + struct nk_vec2 spacing; +}; + +struct nk_style_window { + struct nk_style_window_header header; + struct nk_style_item fixed_background; + struct nk_color background; + + struct nk_color border_color; + struct nk_color popup_border_color; + struct nk_color combo_border_color; + struct nk_color contextual_border_color; + struct nk_color menu_border_color; + struct nk_color group_border_color; + struct nk_color tooltip_border_color; + struct nk_style_item scaler; + + float border; + float combo_border; + float contextual_border; + float menu_border; + float group_border; + float tooltip_border; + float popup_border; + float min_row_height_padding; + + float rounding; + struct nk_vec2 spacing; + struct nk_vec2 scrollbar_size; + struct nk_vec2 min_size; + + struct nk_vec2 padding; + struct nk_vec2 group_padding; + struct nk_vec2 popup_padding; + struct nk_vec2 combo_padding; + struct nk_vec2 contextual_padding; + struct nk_vec2 menu_padding; + struct nk_vec2 tooltip_padding; +}; + +struct nk_style { + const struct nk_user_font *font; + const struct nk_cursor *cursors[NK_CURSOR_COUNT]; + const struct nk_cursor *cursor_active; + struct nk_cursor *cursor_last; + int cursor_visible; + + struct nk_style_text text; + struct nk_style_button button; + struct nk_style_button contextual_button; + struct nk_style_button menu_button; + struct nk_style_toggle option; + struct nk_style_toggle checkbox; + struct nk_style_selectable selectable; + struct nk_style_slider slider; + struct nk_style_progress progress; + struct nk_style_property property; + struct nk_style_edit edit; + struct nk_style_chart chart; + struct nk_style_scrollbar scrollh; + struct nk_style_scrollbar scrollv; + struct nk_style_tab tab; + struct nk_style_combo combo; + struct nk_style_window window; +}; + +NK_API struct nk_style_item nk_style_item_image(struct nk_image img); +NK_API struct nk_style_item nk_style_item_color(struct nk_color); +NK_API struct nk_style_item nk_style_item_hide(void); + +/*============================================================== + * PANEL + * =============================================================*/ +#ifndef NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS +#define NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS 16 +#endif +#ifndef NK_CHART_MAX_SLOT +#define NK_CHART_MAX_SLOT 4 +#endif + +enum nk_panel_type { + NK_PANEL_NONE = 0, + NK_PANEL_WINDOW = NK_FLAG(0), + NK_PANEL_GROUP = NK_FLAG(1), + NK_PANEL_POPUP = NK_FLAG(2), + NK_PANEL_CONTEXTUAL = NK_FLAG(4), + NK_PANEL_COMBO = NK_FLAG(5), + NK_PANEL_MENU = NK_FLAG(6), + NK_PANEL_TOOLTIP = NK_FLAG(7) +}; +enum nk_panel_set { + NK_PANEL_SET_NONBLOCK = NK_PANEL_CONTEXTUAL|NK_PANEL_COMBO|NK_PANEL_MENU|NK_PANEL_TOOLTIP, + NK_PANEL_SET_POPUP = NK_PANEL_SET_NONBLOCK|NK_PANEL_POPUP, + NK_PANEL_SET_SUB = NK_PANEL_SET_POPUP|NK_PANEL_GROUP +}; + +struct nk_chart_slot { + enum nk_chart_type type; + struct nk_color color; + struct nk_color highlight; + float min, max, range; + int count; + struct nk_vec2 last; + int index; +}; + +struct nk_chart { + int slot; + float x, y, w, h; + struct nk_chart_slot slots[NK_CHART_MAX_SLOT]; +}; + +enum nk_panel_row_layout_type { + NK_LAYOUT_DYNAMIC_FIXED = 0, + NK_LAYOUT_DYNAMIC_ROW, + NK_LAYOUT_DYNAMIC_FREE, + NK_LAYOUT_DYNAMIC, + NK_LAYOUT_STATIC_FIXED, + NK_LAYOUT_STATIC_ROW, + NK_LAYOUT_STATIC_FREE, + NK_LAYOUT_STATIC, + NK_LAYOUT_TEMPLATE, + NK_LAYOUT_COUNT +}; +struct nk_row_layout { + enum nk_panel_row_layout_type type; + int index; + float height; + float min_height; + int columns; + const float *ratio; + float item_width; + float item_height; + float item_offset; + float filled; + struct nk_rect item; + int tree_depth; + float templates[NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS]; +}; + +struct nk_popup_buffer { + nk_size begin; + nk_size parent; + nk_size last; + nk_size end; + int active; +}; + +struct nk_menu_state { + float x, y, w, h; + struct nk_scroll offset; +}; + +struct nk_panel { + enum nk_panel_type type; + nk_flags flags; + struct nk_rect bounds; + nk_uint *offset_x; + nk_uint *offset_y; + float at_x, at_y, max_x; + float footer_height; + float header_height; + float border; + unsigned int has_scrolling; + struct nk_rect clip; + struct nk_menu_state menu; + struct nk_row_layout row; + struct nk_chart chart; + struct nk_command_buffer *buffer; + struct nk_panel *parent; +}; + +/*============================================================== + * WINDOW + * =============================================================*/ +#ifndef NK_WINDOW_MAX_NAME +#define NK_WINDOW_MAX_NAME 64 +#endif + +struct nk_table; +enum nk_window_flags { + NK_WINDOW_PRIVATE = NK_FLAG(11), + NK_WINDOW_DYNAMIC = NK_WINDOW_PRIVATE, + /* special window type growing up in height while being filled to a certain maximum height */ + NK_WINDOW_ROM = NK_FLAG(12), + /* sets window widgets into a read only mode and does not allow input changes */ + NK_WINDOW_NOT_INTERACTIVE = NK_WINDOW_ROM|NK_WINDOW_NO_INPUT, + /* prevents all interaction caused by input to either window or widgets inside */ + NK_WINDOW_HIDDEN = NK_FLAG(13), + /* Hides window and stops any window interaction and drawing */ + NK_WINDOW_CLOSED = NK_FLAG(14), + /* Directly closes and frees the window at the end of the frame */ + NK_WINDOW_MINIMIZED = NK_FLAG(15), + /* marks the window as minimized */ + NK_WINDOW_REMOVE_ROM = NK_FLAG(16) + /* Removes read only mode at the end of the window */ +}; + +struct nk_popup_state { + struct nk_window *win; + enum nk_panel_type type; + struct nk_popup_buffer buf; + nk_hash name; + int active; + unsigned combo_count; + unsigned con_count, con_old; + unsigned active_con; + struct nk_rect header; +}; + +struct nk_edit_state { + nk_hash name; + unsigned int seq; + unsigned int old; + int active, prev; + int cursor; + int sel_start; + int sel_end; + struct nk_scroll scrollbar; + unsigned char mode; + unsigned char single_line; +}; + +struct nk_property_state { + int active, prev; + char buffer[NK_MAX_NUMBER_BUFFER]; + int length; + int cursor; + int select_start; + int select_end; + nk_hash name; + unsigned int seq; + unsigned int old; + int state; +}; + +struct nk_window { + unsigned int seq; + nk_hash name; + char name_string[NK_WINDOW_MAX_NAME]; + nk_flags flags; + + struct nk_rect bounds; + struct nk_scroll scrollbar; + struct nk_command_buffer buffer; + struct nk_panel *layout; + float scrollbar_hiding_timer; + + /* persistent widget state */ + struct nk_property_state property; + struct nk_popup_state popup; + struct nk_edit_state edit; + unsigned int scrolled; + + struct nk_table *tables; + unsigned int table_count; + + /* window list hooks */ + struct nk_window *next; + struct nk_window *prev; + struct nk_window *parent; +}; + +/*============================================================== + * STACK + * =============================================================*/ +/* The style modifier stack can be used to temporarily change a + * property inside `nk_style`. For example if you want a special + * red button you can temporarily push the old button color onto a stack + * draw the button with a red color and then you just pop the old color + * back from the stack: + * + * nk_style_push_style_item(ctx, &ctx->style.button.normal, nk_style_item_color(nk_rgb(255,0,0))); + * nk_style_push_style_item(ctx, &ctx->style.button.hover, nk_style_item_color(nk_rgb(255,0,0))); + * nk_style_push_style_item(ctx, &ctx->style.button.active, nk_style_item_color(nk_rgb(255,0,0))); + * nk_style_push_vec2(ctx, &cx->style.button.padding, nk_vec2(2,2)); + * + * nk_button(...); + * + * nk_style_pop_style_item(ctx); + * nk_style_pop_style_item(ctx); + * nk_style_pop_style_item(ctx); + * nk_style_pop_vec2(ctx); + * + * Nuklear has a stack for style_items, float properties, vector properties, + * flags, colors, fonts and for button_behavior. Each has it's own fixed size stack + * which can be changed at compile time. + */ +#ifndef NK_BUTTON_BEHAVIOR_STACK_SIZE +#define NK_BUTTON_BEHAVIOR_STACK_SIZE 8 +#endif + +#ifndef NK_FONT_STACK_SIZE +#define NK_FONT_STACK_SIZE 8 +#endif + +#ifndef NK_STYLE_ITEM_STACK_SIZE +#define NK_STYLE_ITEM_STACK_SIZE 16 +#endif + +#ifndef NK_FLOAT_STACK_SIZE +#define NK_FLOAT_STACK_SIZE 32 +#endif + +#ifndef NK_VECTOR_STACK_SIZE +#define NK_VECTOR_STACK_SIZE 16 +#endif + +#ifndef NK_FLAGS_STACK_SIZE +#define NK_FLAGS_STACK_SIZE 32 +#endif + +#ifndef NK_COLOR_STACK_SIZE +#define NK_COLOR_STACK_SIZE 32 +#endif + +#define NK_CONFIGURATION_STACK_TYPE(prefix, name, type)\ + struct nk_config_stack_##name##_element {\ + prefix##_##type *address;\ + prefix##_##type old_value;\ + } +#define NK_CONFIG_STACK(type,size)\ + struct nk_config_stack_##type {\ + int head;\ + struct nk_config_stack_##type##_element elements[size];\ + } + +#define nk_float float +NK_CONFIGURATION_STACK_TYPE(struct nk, style_item, style_item); +NK_CONFIGURATION_STACK_TYPE(nk ,float, float); +NK_CONFIGURATION_STACK_TYPE(struct nk, vec2, vec2); +NK_CONFIGURATION_STACK_TYPE(nk ,flags, flags); +NK_CONFIGURATION_STACK_TYPE(struct nk, color, color); +NK_CONFIGURATION_STACK_TYPE(const struct nk, user_font, user_font*); +NK_CONFIGURATION_STACK_TYPE(enum nk, button_behavior, button_behavior); + +NK_CONFIG_STACK(style_item, NK_STYLE_ITEM_STACK_SIZE); +NK_CONFIG_STACK(float, NK_FLOAT_STACK_SIZE); +NK_CONFIG_STACK(vec2, NK_VECTOR_STACK_SIZE); +NK_CONFIG_STACK(flags, NK_FLAGS_STACK_SIZE); +NK_CONFIG_STACK(color, NK_COLOR_STACK_SIZE); +NK_CONFIG_STACK(user_font, NK_FONT_STACK_SIZE); +NK_CONFIG_STACK(button_behavior, NK_BUTTON_BEHAVIOR_STACK_SIZE); + +struct nk_configuration_stacks { + struct nk_config_stack_style_item style_items; + struct nk_config_stack_float floats; + struct nk_config_stack_vec2 vectors; + struct nk_config_stack_flags flags; + struct nk_config_stack_color colors; + struct nk_config_stack_user_font fonts; + struct nk_config_stack_button_behavior button_behaviors; +}; + +/*============================================================== + * CONTEXT + * =============================================================*/ +#define NK_VALUE_PAGE_CAPACITY \ + (((NK_MAX(sizeof(struct nk_window),sizeof(struct nk_panel)) / sizeof(nk_uint))) / 2) + +struct nk_table { + unsigned int seq; + unsigned int size; + nk_hash keys[NK_VALUE_PAGE_CAPACITY]; + nk_uint values[NK_VALUE_PAGE_CAPACITY]; + struct nk_table *next, *prev; +}; + +union nk_page_data { + struct nk_table tbl; + struct nk_panel pan; + struct nk_window win; +}; + +struct nk_page_element { + union nk_page_data data; + struct nk_page_element *next; + struct nk_page_element *prev; +}; + +struct nk_page { + unsigned int size; + struct nk_page *next; + struct nk_page_element win[1]; +}; + +struct nk_pool { + struct nk_allocator alloc; + enum nk_allocation_type type; + unsigned int page_count; + struct nk_page *pages; + struct nk_page_element *freelist; + unsigned capacity; + nk_size size; + nk_size cap; +}; + +struct nk_context { +/* public: can be accessed freely */ + struct nk_input input; + struct nk_style style; + struct nk_buffer memory; + struct nk_clipboard clip; + nk_flags last_widget_state; + enum nk_button_behavior button_behavior; + struct nk_configuration_stacks stacks; + float delta_time_seconds; + +/* private: + should only be accessed if you + know what you are doing */ +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT + struct nk_draw_list draw_list; +#endif +#ifdef NK_INCLUDE_COMMAND_USERDATA + nk_handle userdata; +#endif + /* text editor objects are quite big because of an internal + * undo/redo stack. Therefore it does not make sense to have one for + * each window for temporary use cases, so I only provide *one* instance + * for all windows. This works because the content is cleared anyway */ + struct nk_text_edit text_edit; + /* draw buffer used for overlay drawing operation like cursor */ + struct nk_command_buffer overlay; + + /* windows */ + int build; + int use_pool; + struct nk_pool pool; + struct nk_window *begin; + struct nk_window *end; + struct nk_window *active; + struct nk_window *current; + struct nk_page_element *freelist; + unsigned int count; + unsigned int seq; +}; + +/* ============================================================== + * MATH + * =============================================================== */ +#define NK_PI 3.141592654f +#define NK_UTF_INVALID 0xFFFD +#define NK_MAX_FLOAT_PRECISION 2 + +#define NK_UNUSED(x) ((void)(x)) +#define NK_SATURATE(x) (NK_MAX(0, NK_MIN(1.0f, x))) +#define NK_LEN(a) (sizeof(a)/sizeof(a)[0]) +#define NK_ABS(a) (((a) < 0) ? -(a) : (a)) +#define NK_BETWEEN(x, a, b) ((a) <= (x) && (x) < (b)) +#define NK_INBOX(px, py, x, y, w, h)\ + (NK_BETWEEN(px,x,x+w) && NK_BETWEEN(py,y,y+h)) +#define NK_INTERSECT(x0, y0, w0, h0, x1, y1, w1, h1) \ + (!(((x1 > (x0 + w0)) || ((x1 + w1) < x0) || (y1 > (y0 + h0)) || (y1 + h1) < y0))) +#define NK_CONTAINS(x, y, w, h, bx, by, bw, bh)\ + (NK_INBOX(x,y, bx, by, bw, bh) && NK_INBOX(x+w,y+h, bx, by, bw, bh)) + +#define nk_vec2_sub(a, b) nk_vec2((a).x - (b).x, (a).y - (b).y) +#define nk_vec2_add(a, b) nk_vec2((a).x + (b).x, (a).y + (b).y) +#define nk_vec2_len_sqr(a) ((a).x*(a).x+(a).y*(a).y) +#define nk_vec2_muls(a, t) nk_vec2((a).x * (t), (a).y * (t)) + +#define nk_ptr_add(t, p, i) ((t*)((void*)((nk_byte*)(p) + (i)))) +#define nk_ptr_add_const(t, p, i) ((const t*)((const void*)((const nk_byte*)(p) + (i)))) +#define nk_zero_struct(s) nk_zero(&s, sizeof(s)) + +/* ============================================================== + * ALIGNMENT + * =============================================================== */ +/* Pointer to Integer type conversion for pointer alignment */ +#if defined(__PTRDIFF_TYPE__) /* This case should work for GCC*/ +# define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x)) +# define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x)) +#elif !defined(__GNUC__) /* works for compilers other than LLVM */ +# define NK_UINT_TO_PTR(x) ((void*)&((char*)0)[x]) +# define NK_PTR_TO_UINT(x) ((nk_size)(((char*)x)-(char*)0)) +#elif defined(NK_USE_FIXED_TYPES) /* used if we have */ +# define NK_UINT_TO_PTR(x) ((void*)(uintptr_t)(x)) +# define NK_PTR_TO_UINT(x) ((uintptr_t)(x)) +#else /* generates warning but works */ +# define NK_UINT_TO_PTR(x) ((void*)(x)) +# define NK_PTR_TO_UINT(x) ((nk_size)(x)) +#endif + +#define NK_ALIGN_PTR(x, mask)\ + (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1)))) +#define NK_ALIGN_PTR_BACK(x, mask)\ + (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x)) & ~(mask-1)))) + +#define NK_OFFSETOF(st,m) ((nk_ptr)&(((st*)0)->m)) +#define NK_CONTAINER_OF(ptr,type,member)\ + (type*)((void*)((char*)(1 ? (ptr): &((type*)0)->member) - NK_OFFSETOF(type, member))) + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +template struct nk_alignof; +template struct nk_helper{enum {value = size_diff};}; +template struct nk_helper{enum {value = nk_alignof::value};}; +template struct nk_alignof{struct Big {T x; char c;}; enum { + diff = sizeof(Big) - sizeof(T), value = nk_helper::value};}; +#define NK_ALIGNOF(t) (nk_alignof::value) +#elif defined(_MSC_VER) +#define NK_ALIGNOF(t) (__alignof(t)) +#else +#define NK_ALIGNOF(t) ((char*)(&((struct {char c; t _h;}*)0)->_h) - (char*)0) +#endif + +#endif /* NK_NUKLEAR_H_ */ + +#ifdef NK_IMPLEMENTATION + +#ifndef NK_INTERNAL_H +#define NK_INTERNAL_H + +#ifndef NK_POOL_DEFAULT_CAPACITY +#define NK_POOL_DEFAULT_CAPACITY 16 +#endif + +#ifndef NK_DEFAULT_COMMAND_BUFFER_SIZE +#define NK_DEFAULT_COMMAND_BUFFER_SIZE (4*1024) +#endif + +#ifndef NK_BUFFER_DEFAULT_INITIAL_SIZE +#define NK_BUFFER_DEFAULT_INITIAL_SIZE (4*1024) +#endif + +/* standard library headers */ +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +#include /* malloc, free */ +#endif +#ifdef NK_INCLUDE_STANDARD_IO +#include /* fopen, fclose,... */ +#endif +#ifndef NK_ASSERT +#include +#define NK_ASSERT(expr) assert(expr) +#endif + +#ifndef NK_MEMSET +#define NK_MEMSET nk_memset +#endif +#ifndef NK_MEMCPY +#define NK_MEMCPY nk_memcopy +#endif +#ifndef NK_SQRT +#define NK_SQRT nk_sqrt +#endif +#ifndef NK_SIN +#define NK_SIN nk_sin +#endif +#ifndef NK_COS +#define NK_COS nk_cos +#endif +#ifndef NK_STRTOD +#define NK_STRTOD nk_strtod +#endif +#ifndef NK_DTOA +#define NK_DTOA nk_dtoa +#endif + +#define NK_DEFAULT (-1) + +#ifndef NK_VSNPRINTF +/* If your compiler does support `vsnprintf` I would highly recommend + * defining this to vsnprintf instead since `vsprintf` is basically + * unbelievable unsafe and should *NEVER* be used. But I have to support + * it since C89 only provides this unsafe version. */ + #if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) ||\ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L)) ||\ + (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)) ||\ + defined(_ISOC99_SOURCE) || defined(_BSD_SOURCE) + #define NK_VSNPRINTF(s,n,f,a) vsnprintf(s,n,f,a) + #else + #define NK_VSNPRINTF(s,n,f,a) vsprintf(s,f,a) + #endif +#endif + +#define NK_SCHAR_MIN (-127) +#define NK_SCHAR_MAX 127 +#define NK_UCHAR_MIN 0 +#define NK_UCHAR_MAX 256 +#define NK_SSHORT_MIN (-32767) +#define NK_SSHORT_MAX 32767 +#define NK_USHORT_MIN 0 +#define NK_USHORT_MAX 65535 +#define NK_SINT_MIN (-2147483647) +#define NK_SINT_MAX 2147483647 +#define NK_UINT_MIN 0 +#define NK_UINT_MAX 4294967295u + +/* Make sure correct type size: + * This will fire with a negative subscript error if the type sizes + * are set incorrectly by the compiler, and compile out if not */ +NK_STATIC_ASSERT(sizeof(nk_size) >= sizeof(void*)); +NK_STATIC_ASSERT(sizeof(nk_ptr) == sizeof(void*)); +NK_STATIC_ASSERT(sizeof(nk_flags) >= 4); +NK_STATIC_ASSERT(sizeof(nk_rune) >= 4); +NK_STATIC_ASSERT(sizeof(nk_ushort) == 2); +NK_STATIC_ASSERT(sizeof(nk_short) == 2); +NK_STATIC_ASSERT(sizeof(nk_uint) == 4); +NK_STATIC_ASSERT(sizeof(nk_int) == 4); +NK_STATIC_ASSERT(sizeof(nk_byte) == 1); + +NK_GLOBAL const struct nk_rect nk_null_rect = {-8192.0f, -8192.0f, 16384, 16384}; +#define NK_FLOAT_PRECISION 0.00000000000001 + +NK_GLOBAL const struct nk_color nk_red = {255,0,0,255}; +NK_GLOBAL const struct nk_color nk_green = {0,255,0,255}; +NK_GLOBAL const struct nk_color nk_blue = {0,0,255,255}; +NK_GLOBAL const struct nk_color nk_white = {255,255,255,255}; +NK_GLOBAL const struct nk_color nk_black = {0,0,0,255}; +NK_GLOBAL const struct nk_color nk_yellow = {255,255,0,255}; + +/* widget */ +#define nk_widget_state_reset(s)\ + if ((*(s)) & NK_WIDGET_STATE_MODIFIED)\ + (*(s)) = NK_WIDGET_STATE_INACTIVE|NK_WIDGET_STATE_MODIFIED;\ + else (*(s)) = NK_WIDGET_STATE_INACTIVE; + +/* math */ +NK_LIB float nk_inv_sqrt(float n); +NK_LIB float nk_sqrt(float x); +NK_LIB float nk_sin(float x); +NK_LIB float nk_cos(float x); +NK_LIB nk_uint nk_round_up_pow2(nk_uint v); +NK_LIB struct nk_rect nk_shrink_rect(struct nk_rect r, float amount); +NK_LIB struct nk_rect nk_pad_rect(struct nk_rect r, struct nk_vec2 pad); +NK_LIB void nk_unify(struct nk_rect *clip, const struct nk_rect *a, float x0, float y0, float x1, float y1); +NK_LIB double nk_pow(double x, int n); +NK_LIB int nk_ifloord(double x); +NK_LIB int nk_ifloorf(float x); +NK_LIB int nk_iceilf(float x); +NK_LIB int nk_log10(double n); + +/* util */ +enum {NK_DO_NOT_STOP_ON_NEW_LINE, NK_STOP_ON_NEW_LINE}; +NK_LIB int nk_is_lower(int c); +NK_LIB int nk_is_upper(int c); +NK_LIB int nk_to_upper(int c); +NK_LIB int nk_to_lower(int c); +NK_LIB void* nk_memcopy(void *dst, const void *src, nk_size n); +NK_LIB void nk_memset(void *ptr, int c0, nk_size size); +NK_LIB void nk_zero(void *ptr, nk_size size); +NK_LIB char *nk_itoa(char *s, long n); +NK_LIB int nk_string_float_limit(char *string, int prec); +NK_LIB char *nk_dtoa(char *s, double n); +NK_LIB int nk_text_clamp(const struct nk_user_font *font, const char *text, int text_len, float space, int *glyphs, float *text_width, nk_rune *sep_list, int sep_count); +NK_LIB struct nk_vec2 nk_text_calculate_text_bounds(const struct nk_user_font *font, const char *begin, int byte_len, float row_height, const char **remaining, struct nk_vec2 *out_offset, int *glyphs, int op); +#ifdef NK_INCLUDE_STANDARD_VARARGS +NK_LIB int nk_strfmt(char *buf, int buf_size, const char *fmt, va_list args); +#endif +#ifdef NK_INCLUDE_STANDARD_IO +NK_LIB char *nk_file_load(const char* path, nk_size* siz, struct nk_allocator *alloc); +#endif + +/* buffer */ +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_LIB void* nk_malloc(nk_handle unused, void *old,nk_size size); +NK_LIB void nk_mfree(nk_handle unused, void *ptr); +#endif +NK_LIB void* nk_buffer_align(void *unaligned, nk_size align, nk_size *alignment, enum nk_buffer_allocation_type type); +NK_LIB void* nk_buffer_alloc(struct nk_buffer *b, enum nk_buffer_allocation_type type, nk_size size, nk_size align); +NK_LIB void* nk_buffer_realloc(struct nk_buffer *b, nk_size capacity, nk_size *size); + +/* draw */ +NK_LIB void nk_command_buffer_init(struct nk_command_buffer *cb, struct nk_buffer *b, enum nk_command_clipping clip); +NK_LIB void nk_command_buffer_reset(struct nk_command_buffer *b); +NK_LIB void* nk_command_buffer_push(struct nk_command_buffer* b, enum nk_command_type t, nk_size size); +NK_LIB void nk_draw_symbol(struct nk_command_buffer *out, enum nk_symbol_type type, struct nk_rect content, struct nk_color background, struct nk_color foreground, float border_width, const struct nk_user_font *font); + +/* buffering */ +NK_LIB void nk_start_buffer(struct nk_context *ctx, struct nk_command_buffer *b); +NK_LIB void nk_start(struct nk_context *ctx, struct nk_window *win); +NK_LIB void nk_start_popup(struct nk_context *ctx, struct nk_window *win); +NK_LIB void nk_finish_popup(struct nk_context *ctx, struct nk_window*); +NK_LIB void nk_finish_buffer(struct nk_context *ctx, struct nk_command_buffer *b); +NK_LIB void nk_finish(struct nk_context *ctx, struct nk_window *w); +NK_LIB void nk_build(struct nk_context *ctx); + +/* text editor */ +NK_LIB void nk_textedit_clear_state(struct nk_text_edit *state, enum nk_text_edit_type type, nk_plugin_filter filter); +NK_LIB void nk_textedit_click(struct nk_text_edit *state, float x, float y, const struct nk_user_font *font, float row_height); +NK_LIB void nk_textedit_drag(struct nk_text_edit *state, float x, float y, const struct nk_user_font *font, float row_height); +NK_LIB void nk_textedit_key(struct nk_text_edit *state, enum nk_keys key, int shift_mod, const struct nk_user_font *font, float row_height); + +/* window */ +enum nk_window_insert_location { + NK_INSERT_BACK, /* inserts window into the back of list (front of screen) */ + NK_INSERT_FRONT /* inserts window into the front of list (back of screen) */ +}; +NK_LIB void *nk_create_window(struct nk_context *ctx); +NK_LIB void nk_remove_window(struct nk_context*, struct nk_window*); +NK_LIB void nk_free_window(struct nk_context *ctx, struct nk_window *win); +NK_LIB struct nk_window *nk_find_window(struct nk_context *ctx, nk_hash hash, const char *name); +NK_LIB void nk_insert_window(struct nk_context *ctx, struct nk_window *win, enum nk_window_insert_location loc); + +/* pool */ +NK_LIB void nk_pool_init(struct nk_pool *pool, struct nk_allocator *alloc, unsigned int capacity); +NK_LIB void nk_pool_free(struct nk_pool *pool); +NK_LIB void nk_pool_init_fixed(struct nk_pool *pool, void *memory, nk_size size); +NK_LIB struct nk_page_element *nk_pool_alloc(struct nk_pool *pool); + +/* page-element */ +NK_LIB struct nk_page_element* nk_create_page_element(struct nk_context *ctx); +NK_LIB void nk_link_page_element_into_freelist(struct nk_context *ctx, struct nk_page_element *elem); +NK_LIB void nk_free_page_element(struct nk_context *ctx, struct nk_page_element *elem); + +/* table */ +NK_LIB struct nk_table* nk_create_table(struct nk_context *ctx); +NK_LIB void nk_remove_table(struct nk_window *win, struct nk_table *tbl); +NK_LIB void nk_free_table(struct nk_context *ctx, struct nk_table *tbl); +NK_LIB void nk_push_table(struct nk_window *win, struct nk_table *tbl); +NK_LIB nk_uint *nk_add_value(struct nk_context *ctx, struct nk_window *win, nk_hash name, nk_uint value); +NK_LIB nk_uint *nk_find_value(struct nk_window *win, nk_hash name); + +/* panel */ +NK_LIB void *nk_create_panel(struct nk_context *ctx); +NK_LIB void nk_free_panel(struct nk_context*, struct nk_panel *pan); +NK_LIB int nk_panel_has_header(nk_flags flags, const char *title); +NK_LIB struct nk_vec2 nk_panel_get_padding(const struct nk_style *style, enum nk_panel_type type); +NK_LIB float nk_panel_get_border(const struct nk_style *style, nk_flags flags, enum nk_panel_type type); +NK_LIB struct nk_color nk_panel_get_border_color(const struct nk_style *style, enum nk_panel_type type); +NK_LIB int nk_panel_is_sub(enum nk_panel_type type); +NK_LIB int nk_panel_is_nonblock(enum nk_panel_type type); +NK_LIB int nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type panel_type); +NK_LIB void nk_panel_end(struct nk_context *ctx); + +/* layout */ +NK_LIB float nk_layout_row_calculate_usable_space(const struct nk_style *style, enum nk_panel_type type, float total_space, int columns); +NK_LIB void nk_panel_layout(const struct nk_context *ctx, struct nk_window *win, float height, int cols); +NK_LIB void nk_row_layout(struct nk_context *ctx, enum nk_layout_format fmt, float height, int cols, int width); +NK_LIB void nk_panel_alloc_row(const struct nk_context *ctx, struct nk_window *win); +NK_LIB void nk_layout_widget_space(struct nk_rect *bounds, const struct nk_context *ctx, struct nk_window *win, int modify); +NK_LIB void nk_panel_alloc_space(struct nk_rect *bounds, const struct nk_context *ctx); +NK_LIB void nk_layout_peek(struct nk_rect *bounds, struct nk_context *ctx); + +/* popup */ +NK_LIB int nk_nonblock_begin(struct nk_context *ctx, nk_flags flags, struct nk_rect body, struct nk_rect header, enum nk_panel_type panel_type); + +/* text */ +struct nk_text { + struct nk_vec2 padding; + struct nk_color background; + struct nk_color text; +}; +NK_LIB void nk_widget_text(struct nk_command_buffer *o, struct nk_rect b, const char *string, int len, const struct nk_text *t, nk_flags a, const struct nk_user_font *f); +NK_LIB void nk_widget_text_wrap(struct nk_command_buffer *o, struct nk_rect b, const char *string, int len, const struct nk_text *t, const struct nk_user_font *f); + +/* button */ +NK_LIB int nk_button_behavior(nk_flags *state, struct nk_rect r, const struct nk_input *i, enum nk_button_behavior behavior); +NK_LIB const struct nk_style_item* nk_draw_button(struct nk_command_buffer *out, const struct nk_rect *bounds, nk_flags state, const struct nk_style_button *style); +NK_LIB int nk_do_button(nk_flags *state, struct nk_command_buffer *out, struct nk_rect r, const struct nk_style_button *style, const struct nk_input *in, enum nk_button_behavior behavior, struct nk_rect *content); +NK_LIB void nk_draw_button_text(struct nk_command_buffer *out, const struct nk_rect *bounds, const struct nk_rect *content, nk_flags state, const struct nk_style_button *style, const char *txt, int len, nk_flags text_alignment, const struct nk_user_font *font); +NK_LIB int nk_do_button_text(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, const char *string, int len, nk_flags align, enum nk_button_behavior behavior, const struct nk_style_button *style, const struct nk_input *in, const struct nk_user_font *font); +NK_LIB void nk_draw_button_symbol(struct nk_command_buffer *out, const struct nk_rect *bounds, const struct nk_rect *content, nk_flags state, const struct nk_style_button *style, enum nk_symbol_type type, const struct nk_user_font *font); +NK_LIB int nk_do_button_symbol(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, enum nk_symbol_type symbol, enum nk_button_behavior behavior, const struct nk_style_button *style, const struct nk_input *in, const struct nk_user_font *font); +NK_LIB void nk_draw_button_image(struct nk_command_buffer *out, const struct nk_rect *bounds, const struct nk_rect *content, nk_flags state, const struct nk_style_button *style, const struct nk_image *img); +NK_LIB int nk_do_button_image(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, struct nk_image img, enum nk_button_behavior b, const struct nk_style_button *style, const struct nk_input *in); +NK_LIB void nk_draw_button_text_symbol(struct nk_command_buffer *out, const struct nk_rect *bounds, const struct nk_rect *label, const struct nk_rect *symbol, nk_flags state, const struct nk_style_button *style, const char *str, int len, enum nk_symbol_type type, const struct nk_user_font *font); +NK_LIB int nk_do_button_text_symbol(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, enum nk_symbol_type symbol, const char *str, int len, nk_flags align, enum nk_button_behavior behavior, const struct nk_style_button *style, const struct nk_user_font *font, const struct nk_input *in); +NK_LIB void nk_draw_button_text_image(struct nk_command_buffer *out, const struct nk_rect *bounds, const struct nk_rect *label, const struct nk_rect *image, nk_flags state, const struct nk_style_button *style, const char *str, int len, const struct nk_user_font *font, const struct nk_image *img); +NK_LIB int nk_do_button_text_image(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, struct nk_image img, const char* str, int len, nk_flags align, enum nk_button_behavior behavior, const struct nk_style_button *style, const struct nk_user_font *font, const struct nk_input *in); + +/* toggle */ +enum nk_toggle_type { + NK_TOGGLE_CHECK, + NK_TOGGLE_OPTION +}; +NK_LIB int nk_toggle_behavior(const struct nk_input *in, struct nk_rect select, nk_flags *state, int active); +NK_LIB void nk_draw_checkbox(struct nk_command_buffer *out, nk_flags state, const struct nk_style_toggle *style, int active, const struct nk_rect *label, const struct nk_rect *selector, const struct nk_rect *cursors, const char *string, int len, const struct nk_user_font *font); +NK_LIB void nk_draw_option(struct nk_command_buffer *out, nk_flags state, const struct nk_style_toggle *style, int active, const struct nk_rect *label, const struct nk_rect *selector, const struct nk_rect *cursors, const char *string, int len, const struct nk_user_font *font); +NK_LIB int nk_do_toggle(nk_flags *state, struct nk_command_buffer *out, struct nk_rect r, int *active, const char *str, int len, enum nk_toggle_type type, const struct nk_style_toggle *style, const struct nk_input *in, const struct nk_user_font *font); + +/* progress */ +NK_LIB nk_size nk_progress_behavior(nk_flags *state, struct nk_input *in, struct nk_rect r, struct nk_rect cursor, nk_size max, nk_size value, int modifiable); +NK_LIB void nk_draw_progress(struct nk_command_buffer *out, nk_flags state, const struct nk_style_progress *style, const struct nk_rect *bounds, const struct nk_rect *scursor, nk_size value, nk_size max); +NK_LIB nk_size nk_do_progress(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, nk_size value, nk_size max, int modifiable, const struct nk_style_progress *style, struct nk_input *in); + +/* slider */ +NK_LIB float nk_slider_behavior(nk_flags *state, struct nk_rect *logical_cursor, struct nk_rect *visual_cursor, struct nk_input *in, struct nk_rect bounds, float slider_min, float slider_max, float slider_value, float slider_step, float slider_steps); +NK_LIB void nk_draw_slider(struct nk_command_buffer *out, nk_flags state, const struct nk_style_slider *style, const struct nk_rect *bounds, const struct nk_rect *visual_cursor, float min, float value, float max); +NK_LIB float nk_do_slider(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, float min, float val, float max, float step, const struct nk_style_slider *style, struct nk_input *in, const struct nk_user_font *font); + +/* scrollbar */ +NK_LIB float nk_scrollbar_behavior(nk_flags *state, struct nk_input *in, int has_scrolling, const struct nk_rect *scroll, const struct nk_rect *cursor, const struct nk_rect *empty0, const struct nk_rect *empty1, float scroll_offset, float target, float scroll_step, enum nk_orientation o); +NK_LIB void nk_draw_scrollbar(struct nk_command_buffer *out, nk_flags state, const struct nk_style_scrollbar *style, const struct nk_rect *bounds, const struct nk_rect *scroll); +NK_LIB float nk_do_scrollbarv(nk_flags *state, struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, float offset, float target, float step, float button_pixel_inc, const struct nk_style_scrollbar *style, struct nk_input *in, const struct nk_user_font *font); +NK_LIB float nk_do_scrollbarh(nk_flags *state, struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, float offset, float target, float step, float button_pixel_inc, const struct nk_style_scrollbar *style, struct nk_input *in, const struct nk_user_font *font); + +/* selectable */ +NK_LIB void nk_draw_selectable(struct nk_command_buffer *out, nk_flags state, const struct nk_style_selectable *style, int active, const struct nk_rect *bounds, const struct nk_rect *icon, const struct nk_image *img, enum nk_symbol_type sym, const char *string, int len, nk_flags align, const struct nk_user_font *font); +NK_LIB int nk_do_selectable(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, const char *str, int len, nk_flags align, int *value, const struct nk_style_selectable *style, const struct nk_input *in, const struct nk_user_font *font); +NK_LIB int nk_do_selectable_image(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, const char *str, int len, nk_flags align, int *value, const struct nk_image *img, const struct nk_style_selectable *style, const struct nk_input *in, const struct nk_user_font *font); + +/* edit */ +NK_LIB void nk_edit_draw_text(struct nk_command_buffer *out, const struct nk_style_edit *style, float pos_x, float pos_y, float x_offset, const char *text, int byte_len, float row_height, const struct nk_user_font *font, struct nk_color background, struct nk_color foreground, int is_selected); +NK_LIB nk_flags nk_do_edit(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, nk_flags flags, nk_plugin_filter filter, struct nk_text_edit *edit, const struct nk_style_edit *style, struct nk_input *in, const struct nk_user_font *font); + +/* color-picker */ +NK_LIB int nk_color_picker_behavior(nk_flags *state, const struct nk_rect *bounds, const struct nk_rect *matrix, const struct nk_rect *hue_bar, const struct nk_rect *alpha_bar, struct nk_colorf *color, const struct nk_input *in); +NK_LIB void nk_draw_color_picker(struct nk_command_buffer *o, const struct nk_rect *matrix, const struct nk_rect *hue_bar, const struct nk_rect *alpha_bar, struct nk_colorf col); +NK_LIB int nk_do_color_picker(nk_flags *state, struct nk_command_buffer *out, struct nk_colorf *col, enum nk_color_format fmt, struct nk_rect bounds, struct nk_vec2 padding, const struct nk_input *in, const struct nk_user_font *font); + +/* property */ +enum nk_property_status { + NK_PROPERTY_DEFAULT, + NK_PROPERTY_EDIT, + NK_PROPERTY_DRAG +}; +enum nk_property_filter { + NK_FILTER_INT, + NK_FILTER_FLOAT +}; +enum nk_property_kind { + NK_PROPERTY_INT, + NK_PROPERTY_FLOAT, + NK_PROPERTY_DOUBLE +}; +union nk_property { + int i; + float f; + double d; +}; +struct nk_property_variant { + enum nk_property_kind kind; + union nk_property value; + union nk_property min_value; + union nk_property max_value; + union nk_property step; +}; +NK_LIB struct nk_property_variant nk_property_variant_int(int value, int min_value, int max_value, int step); +NK_LIB struct nk_property_variant nk_property_variant_float(float value, float min_value, float max_value, float step); +NK_LIB struct nk_property_variant nk_property_variant_double(double value, double min_value, double max_value, double step); + +NK_LIB void nk_drag_behavior(nk_flags *state, const struct nk_input *in, struct nk_rect drag, struct nk_property_variant *variant, float inc_per_pixel); +NK_LIB void nk_property_behavior(nk_flags *ws, const struct nk_input *in, struct nk_rect property, struct nk_rect label, struct nk_rect edit, struct nk_rect empty, int *state, struct nk_property_variant *variant, float inc_per_pixel); +NK_LIB void nk_draw_property(struct nk_command_buffer *out, const struct nk_style_property *style, const struct nk_rect *bounds, const struct nk_rect *label, nk_flags state, const char *name, int len, const struct nk_user_font *font); +NK_LIB void nk_do_property(nk_flags *ws, struct nk_command_buffer *out, struct nk_rect property, const char *name, struct nk_property_variant *variant, float inc_per_pixel, char *buffer, int *len, int *state, int *cursor, int *select_begin, int *select_end, const struct nk_style_property *style, enum nk_property_filter filter, struct nk_input *in, const struct nk_user_font *font, struct nk_text_edit *text_edit, enum nk_button_behavior behavior); +NK_LIB void nk_property(struct nk_context *ctx, const char *name, struct nk_property_variant *variant, float inc_per_pixel, const enum nk_property_filter filter); + +#endif + + + + + +/* =============================================================== + * + * MATH + * + * ===============================================================*/ +/* Since nuklear is supposed to work on all systems providing floating point + math without any dependencies I also had to implement my own math functions + for sqrt, sin and cos. Since the actual highly accurate implementations for + the standard library functions are quite complex and I do not need high + precision for my use cases I use approximations. + + Sqrt + ---- + For square root nuklear uses the famous fast inverse square root: + https://en.wikipedia.org/wiki/Fast_inverse_square_root with + slightly tweaked magic constant. While on today's hardware it is + probably not faster it is still fast and accurate enough for + nuklear's use cases. IMPORTANT: this requires float format IEEE 754 + + Sine/Cosine + ----------- + All constants inside both function are generated Remez's minimax + approximations for value range 0...2*PI. The reason why I decided to + approximate exactly that range is that nuklear only needs sine and + cosine to generate circles which only requires that exact range. + In addition I used Remez instead of Taylor for additional precision: + www.lolengine.net/blog/2011/12/21/better-function-approximations. + + The tool I used to generate constants for both sine and cosine + (it can actually approximate a lot more functions) can be + found here: www.lolengine.net/wiki/oss/lolremez +*/ +NK_LIB float +nk_inv_sqrt(float n) +{ + float x2; + const float threehalfs = 1.5f; + union {nk_uint i; float f;} conv = {0}; + conv.f = n; + x2 = n * 0.5f; + conv.i = 0x5f375A84 - (conv.i >> 1); + conv.f = conv.f * (threehalfs - (x2 * conv.f * conv.f)); + return conv.f; +} +NK_LIB float +nk_sqrt(float x) +{ + return x * nk_inv_sqrt(x); +} +NK_LIB float +nk_sin(float x) +{ + NK_STORAGE const float a0 = +1.91059300966915117e-31f; + NK_STORAGE const float a1 = +1.00086760103908896f; + NK_STORAGE const float a2 = -1.21276126894734565e-2f; + NK_STORAGE const float a3 = -1.38078780785773762e-1f; + NK_STORAGE const float a4 = -2.67353392911981221e-2f; + NK_STORAGE const float a5 = +2.08026600266304389e-2f; + NK_STORAGE const float a6 = -3.03996055049204407e-3f; + NK_STORAGE const float a7 = +1.38235642404333740e-4f; + return a0 + x*(a1 + x*(a2 + x*(a3 + x*(a4 + x*(a5 + x*(a6 + x*a7)))))); +} +NK_LIB float +nk_cos(float x) +{ + /* New implementation. Also generated using lolremez. */ + /* Old version significantly deviated from expected results. */ + NK_STORAGE const float a0 = 9.9995999154986614e-1f; + NK_STORAGE const float a1 = 1.2548995793001028e-3f; + NK_STORAGE const float a2 = -5.0648546280678015e-1f; + NK_STORAGE const float a3 = 1.2942246466519995e-2f; + NK_STORAGE const float a4 = 2.8668384702547972e-2f; + NK_STORAGE const float a5 = 7.3726485210586547e-3f; + NK_STORAGE const float a6 = -3.8510875386947414e-3f; + NK_STORAGE const float a7 = 4.7196604604366623e-4f; + NK_STORAGE const float a8 = -1.8776444013090451e-5f; + return a0 + x*(a1 + x*(a2 + x*(a3 + x*(a4 + x*(a5 + x*(a6 + x*(a7 + x*a8))))))); +} +NK_LIB nk_uint +nk_round_up_pow2(nk_uint v) +{ + v--; + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + v++; + return v; +} +NK_LIB double +nk_pow(double x, int n) +{ + /* check the sign of n */ + double r = 1; + int plus = n >= 0; + n = (plus) ? n : -n; + while (n > 0) { + if ((n & 1) == 1) + r *= x; + n /= 2; + x *= x; + } + return plus ? r : 1.0 / r; +} +NK_LIB int +nk_ifloord(double x) +{ + x = (double)((int)x - ((x < 0.0) ? 1 : 0)); + return (int)x; +} +NK_LIB int +nk_ifloorf(float x) +{ + x = (float)((int)x - ((x < 0.0f) ? 1 : 0)); + return (int)x; +} +NK_LIB int +nk_iceilf(float x) +{ + if (x >= 0) { + int i = (int)x; + return (x > i) ? i+1: i; + } else { + int t = (int)x; + float r = x - (float)t; + return (r > 0.0f) ? t+1: t; + } +} +NK_LIB int +nk_log10(double n) +{ + int neg; + int ret; + int exp = 0; + + neg = (n < 0) ? 1 : 0; + ret = (neg) ? (int)-n : (int)n; + while ((ret / 10) > 0) { + ret /= 10; + exp++; + } + if (neg) exp = -exp; + return exp; +} +NK_API struct nk_rect +nk_get_null_rect(void) +{ + return nk_null_rect; +} +NK_API struct nk_rect +nk_rect(float x, float y, float w, float h) +{ + struct nk_rect r; + r.x = x; r.y = y; + r.w = w; r.h = h; + return r; +} +NK_API struct nk_rect +nk_recti(int x, int y, int w, int h) +{ + struct nk_rect r; + r.x = (float)x; + r.y = (float)y; + r.w = (float)w; + r.h = (float)h; + return r; +} +NK_API struct nk_rect +nk_recta(struct nk_vec2 pos, struct nk_vec2 size) +{ + return nk_rect(pos.x, pos.y, size.x, size.y); +} +NK_API struct nk_rect +nk_rectv(const float *r) +{ + return nk_rect(r[0], r[1], r[2], r[3]); +} +NK_API struct nk_rect +nk_rectiv(const int *r) +{ + return nk_recti(r[0], r[1], r[2], r[3]); +} +NK_API struct nk_vec2 +nk_rect_pos(struct nk_rect r) +{ + struct nk_vec2 ret; + ret.x = r.x; ret.y = r.y; + return ret; +} +NK_API struct nk_vec2 +nk_rect_size(struct nk_rect r) +{ + struct nk_vec2 ret; + ret.x = r.w; ret.y = r.h; + return ret; +} +NK_LIB struct nk_rect +nk_shrink_rect(struct nk_rect r, float amount) +{ + struct nk_rect res; + r.w = NK_MAX(r.w, 2 * amount); + r.h = NK_MAX(r.h, 2 * amount); + res.x = r.x + amount; + res.y = r.y + amount; + res.w = r.w - 2 * amount; + res.h = r.h - 2 * amount; + return res; +} +NK_LIB struct nk_rect +nk_pad_rect(struct nk_rect r, struct nk_vec2 pad) +{ + r.w = NK_MAX(r.w, 2 * pad.x); + r.h = NK_MAX(r.h, 2 * pad.y); + r.x += pad.x; r.y += pad.y; + r.w -= 2 * pad.x; + r.h -= 2 * pad.y; + return r; +} +NK_API struct nk_vec2 +nk_vec2(float x, float y) +{ + struct nk_vec2 ret; + ret.x = x; ret.y = y; + return ret; +} +NK_API struct nk_vec2 +nk_vec2i(int x, int y) +{ + struct nk_vec2 ret; + ret.x = (float)x; + ret.y = (float)y; + return ret; +} +NK_API struct nk_vec2 +nk_vec2v(const float *v) +{ + return nk_vec2(v[0], v[1]); +} +NK_API struct nk_vec2 +nk_vec2iv(const int *v) +{ + return nk_vec2i(v[0], v[1]); +} +NK_LIB void +nk_unify(struct nk_rect *clip, const struct nk_rect *a, float x0, float y0, + float x1, float y1) +{ + NK_ASSERT(a); + NK_ASSERT(clip); + clip->x = NK_MAX(a->x, x0); + clip->y = NK_MAX(a->y, y0); + clip->w = NK_MIN(a->x + a->w, x1) - clip->x; + clip->h = NK_MIN(a->y + a->h, y1) - clip->y; + clip->w = NK_MAX(0, clip->w); + clip->h = NK_MAX(0, clip->h); +} + +NK_API void +nk_triangle_from_direction(struct nk_vec2 *result, struct nk_rect r, + float pad_x, float pad_y, enum nk_heading direction) +{ + float w_half, h_half; + NK_ASSERT(result); + + r.w = NK_MAX(2 * pad_x, r.w); + r.h = NK_MAX(2 * pad_y, r.h); + r.w = r.w - 2 * pad_x; + r.h = r.h - 2 * pad_y; + + r.x = r.x + pad_x; + r.y = r.y + pad_y; + + w_half = r.w / 2.0f; + h_half = r.h / 2.0f; + + if (direction == NK_UP) { + result[0] = nk_vec2(r.x + w_half, r.y); + result[1] = nk_vec2(r.x + r.w, r.y + r.h); + result[2] = nk_vec2(r.x, r.y + r.h); + } else if (direction == NK_RIGHT) { + result[0] = nk_vec2(r.x, r.y); + result[1] = nk_vec2(r.x + r.w, r.y + h_half); + result[2] = nk_vec2(r.x, r.y + r.h); + } else if (direction == NK_DOWN) { + result[0] = nk_vec2(r.x, r.y); + result[1] = nk_vec2(r.x + r.w, r.y); + result[2] = nk_vec2(r.x + w_half, r.y + r.h); + } else { + result[0] = nk_vec2(r.x, r.y + h_half); + result[1] = nk_vec2(r.x + r.w, r.y); + result[2] = nk_vec2(r.x + r.w, r.y + r.h); + } +} + + + + + +/* =============================================================== + * + * UTIL + * + * ===============================================================*/ +NK_INTERN int nk_str_match_here(const char *regexp, const char *text); +NK_INTERN int nk_str_match_star(int c, const char *regexp, const char *text); +NK_LIB int nk_is_lower(int c) {return (c >= 'a' && c <= 'z') || (c >= 0xE0 && c <= 0xFF);} +NK_LIB int nk_is_upper(int c){return (c >= 'A' && c <= 'Z') || (c >= 0xC0 && c <= 0xDF);} +NK_LIB int nk_to_upper(int c) {return (c >= 'a' && c <= 'z') ? (c - ('a' - 'A')) : c;} +NK_LIB int nk_to_lower(int c) {return (c >= 'A' && c <= 'Z') ? (c - ('a' + 'A')) : c;} + +NK_LIB void* +nk_memcopy(void *dst0, const void *src0, nk_size length) +{ + nk_ptr t; + char *dst = (char*)dst0; + const char *src = (const char*)src0; + if (length == 0 || dst == src) + goto done; + + #define nk_word int + #define nk_wsize sizeof(nk_word) + #define nk_wmask (nk_wsize-1) + #define NK_TLOOP(s) if (t) NK_TLOOP1(s) + #define NK_TLOOP1(s) do { s; } while (--t) + + if (dst < src) { + t = (nk_ptr)src; /* only need low bits */ + if ((t | (nk_ptr)dst) & nk_wmask) { + if ((t ^ (nk_ptr)dst) & nk_wmask || length < nk_wsize) + t = length; + else + t = nk_wsize - (t & nk_wmask); + length -= t; + NK_TLOOP1(*dst++ = *src++); + } + t = length / nk_wsize; + NK_TLOOP(*(nk_word*)(void*)dst = *(const nk_word*)(const void*)src; + src += nk_wsize; dst += nk_wsize); + t = length & nk_wmask; + NK_TLOOP(*dst++ = *src++); + } else { + src += length; + dst += length; + t = (nk_ptr)src; + if ((t | (nk_ptr)dst) & nk_wmask) { + if ((t ^ (nk_ptr)dst) & nk_wmask || length <= nk_wsize) + t = length; + else + t &= nk_wmask; + length -= t; + NK_TLOOP1(*--dst = *--src); + } + t = length / nk_wsize; + NK_TLOOP(src -= nk_wsize; dst -= nk_wsize; + *(nk_word*)(void*)dst = *(const nk_word*)(const void*)src); + t = length & nk_wmask; + NK_TLOOP(*--dst = *--src); + } + #undef nk_word + #undef nk_wsize + #undef nk_wmask + #undef NK_TLOOP + #undef NK_TLOOP1 +done: + return (dst0); +} +NK_LIB void +nk_memset(void *ptr, int c0, nk_size size) +{ + #define nk_word unsigned + #define nk_wsize sizeof(nk_word) + #define nk_wmask (nk_wsize - 1) + nk_byte *dst = (nk_byte*)ptr; + unsigned c = 0; + nk_size t = 0; + + if ((c = (nk_byte)c0) != 0) { + c = (c << 8) | c; /* at least 16-bits */ + if (sizeof(unsigned int) > 2) + c = (c << 16) | c; /* at least 32-bits*/ + } + + /* too small of a word count */ + dst = (nk_byte*)ptr; + if (size < 3 * nk_wsize) { + while (size--) *dst++ = (nk_byte)c0; + return; + } + + /* align destination */ + if ((t = NK_PTR_TO_UINT(dst) & nk_wmask) != 0) { + t = nk_wsize -t; + size -= t; + do { + *dst++ = (nk_byte)c0; + } while (--t != 0); + } + + /* fill word */ + t = size / nk_wsize; + do { + *(nk_word*)((void*)dst) = c; + dst += nk_wsize; + } while (--t != 0); + + /* fill trailing bytes */ + t = (size & nk_wmask); + if (t != 0) { + do { + *dst++ = (nk_byte)c0; + } while (--t != 0); + } + + #undef nk_word + #undef nk_wsize + #undef nk_wmask +} +NK_LIB void +nk_zero(void *ptr, nk_size size) +{ + NK_ASSERT(ptr); + NK_MEMSET(ptr, 0, size); +} +NK_API int +nk_strlen(const char *str) +{ + int siz = 0; + NK_ASSERT(str); + while (str && *str++ != '\0') siz++; + return siz; +} +NK_API int +nk_strtoi(const char *str, const char **endptr) +{ + int neg = 1; + const char *p = str; + int value = 0; + + NK_ASSERT(str); + if (!str) return 0; + + /* skip whitespace */ + while (*p == ' ') p++; + if (*p == '-') { + neg = -1; + p++; + } + while (*p && *p >= '0' && *p <= '9') { + value = value * 10 + (int) (*p - '0'); + p++; + } + if (endptr) + *endptr = p; + return neg*value; +} +NK_API double +nk_strtod(const char *str, const char **endptr) +{ + double m; + double neg = 1.0; + const char *p = str; + double value = 0; + double number = 0; + + NK_ASSERT(str); + if (!str) return 0; + + /* skip whitespace */ + while (*p == ' ') p++; + if (*p == '-') { + neg = -1.0; + p++; + } + + while (*p && *p != '.' && *p != 'e') { + value = value * 10.0 + (double) (*p - '0'); + p++; + } + + if (*p == '.') { + p++; + for(m = 0.1; *p && *p != 'e'; p++ ) { + value = value + (double) (*p - '0') * m; + m *= 0.1; + } + } + if (*p == 'e') { + int i, pow, div; + p++; + if (*p == '-') { + div = nk_true; + p++; + } else if (*p == '+') { + div = nk_false; + p++; + } else div = nk_false; + + for (pow = 0; *p; p++) + pow = pow * 10 + (int) (*p - '0'); + + for (m = 1.0, i = 0; i < pow; i++) + m *= 10.0; + + if (div) + value /= m; + else value *= m; + } + number = value * neg; + if (endptr) + *endptr = p; + return number; +} +NK_API float +nk_strtof(const char *str, const char **endptr) +{ + float float_value; + double double_value; + double_value = NK_STRTOD(str, endptr); + float_value = (float)double_value; + return float_value; +} +NK_API int +nk_stricmp(const char *s1, const char *s2) +{ + nk_int c1,c2,d; + do { + c1 = *s1++; + c2 = *s2++; + d = c1 - c2; + while (d) { + if (c1 <= 'Z' && c1 >= 'A') { + d += ('a' - 'A'); + if (!d) break; + } + if (c2 <= 'Z' && c2 >= 'A') { + d -= ('a' - 'A'); + if (!d) break; + } + return ((d >= 0) << 1) - 1; + } + } while (c1); + return 0; +} +NK_API int +nk_stricmpn(const char *s1, const char *s2, int n) +{ + int c1,c2,d; + NK_ASSERT(n >= 0); + do { + c1 = *s1++; + c2 = *s2++; + if (!n--) return 0; + + d = c1 - c2; + while (d) { + if (c1 <= 'Z' && c1 >= 'A') { + d += ('a' - 'A'); + if (!d) break; + } + if (c2 <= 'Z' && c2 >= 'A') { + d -= ('a' - 'A'); + if (!d) break; + } + return ((d >= 0) << 1) - 1; + } + } while (c1); + return 0; +} +NK_INTERN int +nk_str_match_here(const char *regexp, const char *text) +{ + if (regexp[0] == '\0') + return 1; + if (regexp[1] == '*') + return nk_str_match_star(regexp[0], regexp+2, text); + if (regexp[0] == '$' && regexp[1] == '\0') + return *text == '\0'; + if (*text!='\0' && (regexp[0]=='.' || regexp[0]==*text)) + return nk_str_match_here(regexp+1, text+1); + return 0; +} +NK_INTERN int +nk_str_match_star(int c, const char *regexp, const char *text) +{ + do {/* a '* matches zero or more instances */ + if (nk_str_match_here(regexp, text)) + return 1; + } while (*text != '\0' && (*text++ == c || c == '.')); + return 0; +} +NK_API int +nk_strfilter(const char *text, const char *regexp) +{ + /* + c matches any literal character c + . matches any single character + ^ matches the beginning of the input string + $ matches the end of the input string + * matches zero or more occurrences of the previous character*/ + if (regexp[0] == '^') + return nk_str_match_here(regexp+1, text); + do { /* must look even if string is empty */ + if (nk_str_match_here(regexp, text)) + return 1; + } while (*text++ != '\0'); + return 0; +} +NK_API int +nk_strmatch_fuzzy_text(const char *str, int str_len, + const char *pattern, int *out_score) +{ + /* Returns true if each character in pattern is found sequentially within str + * if found then out_score is also set. Score value has no intrinsic meaning. + * Range varies with pattern. Can only compare scores with same search pattern. */ + + /* bonus for adjacent matches */ + #define NK_ADJACENCY_BONUS 5 + /* bonus if match occurs after a separator */ + #define NK_SEPARATOR_BONUS 10 + /* bonus if match is uppercase and prev is lower */ + #define NK_CAMEL_BONUS 10 + /* penalty applied for every letter in str before the first match */ + #define NK_LEADING_LETTER_PENALTY (-3) + /* maximum penalty for leading letters */ + #define NK_MAX_LEADING_LETTER_PENALTY (-9) + /* penalty for every letter that doesn't matter */ + #define NK_UNMATCHED_LETTER_PENALTY (-1) + + /* loop variables */ + int score = 0; + char const * pattern_iter = pattern; + int str_iter = 0; + int prev_matched = nk_false; + int prev_lower = nk_false; + /* true so if first letter match gets separator bonus*/ + int prev_separator = nk_true; + + /* use "best" matched letter if multiple string letters match the pattern */ + char const * best_letter = 0; + int best_letter_score = 0; + + /* loop over strings */ + NK_ASSERT(str); + NK_ASSERT(pattern); + if (!str || !str_len || !pattern) return 0; + while (str_iter < str_len) + { + const char pattern_letter = *pattern_iter; + const char str_letter = str[str_iter]; + + int next_match = *pattern_iter != '\0' && + nk_to_lower(pattern_letter) == nk_to_lower(str_letter); + int rematch = best_letter && nk_to_upper(*best_letter) == nk_to_upper(str_letter); + + int advanced = next_match && best_letter; + int pattern_repeat = best_letter && *pattern_iter != '\0'; + pattern_repeat = pattern_repeat && + nk_to_lower(*best_letter) == nk_to_lower(pattern_letter); + + if (advanced || pattern_repeat) { + score += best_letter_score; + best_letter = 0; + best_letter_score = 0; + } + + if (next_match || rematch) + { + int new_score = 0; + /* Apply penalty for each letter before the first pattern match */ + if (pattern_iter == pattern) { + int count = (int)(&str[str_iter] - str); + int penalty = NK_LEADING_LETTER_PENALTY * count; + if (penalty < NK_MAX_LEADING_LETTER_PENALTY) + penalty = NK_MAX_LEADING_LETTER_PENALTY; + + score += penalty; + } + + /* apply bonus for consecutive bonuses */ + if (prev_matched) + new_score += NK_ADJACENCY_BONUS; + + /* apply bonus for matches after a separator */ + if (prev_separator) + new_score += NK_SEPARATOR_BONUS; + + /* apply bonus across camel case boundaries */ + if (prev_lower && nk_is_upper(str_letter)) + new_score += NK_CAMEL_BONUS; + + /* update pattern iter IFF the next pattern letter was matched */ + if (next_match) + ++pattern_iter; + + /* update best letter in str which may be for a "next" letter or a rematch */ + if (new_score >= best_letter_score) { + /* apply penalty for now skipped letter */ + if (best_letter != 0) + score += NK_UNMATCHED_LETTER_PENALTY; + + best_letter = &str[str_iter]; + best_letter_score = new_score; + } + prev_matched = nk_true; + } else { + score += NK_UNMATCHED_LETTER_PENALTY; + prev_matched = nk_false; + } + + /* separators should be more easily defined */ + prev_lower = nk_is_lower(str_letter) != 0; + prev_separator = str_letter == '_' || str_letter == ' '; + + ++str_iter; + } + + /* apply score for last match */ + if (best_letter) + score += best_letter_score; + + /* did not match full pattern */ + if (*pattern_iter != '\0') + return nk_false; + + if (out_score) + *out_score = score; + return nk_true; +} +NK_API int +nk_strmatch_fuzzy_string(char const *str, char const *pattern, int *out_score) +{ + return nk_strmatch_fuzzy_text(str, nk_strlen(str), pattern, out_score); +} +NK_LIB int +nk_string_float_limit(char *string, int prec) +{ + int dot = 0; + char *c = string; + while (*c) { + if (*c == '.') { + dot = 1; + c++; + continue; + } + if (dot == (prec+1)) { + *c = 0; + break; + } + if (dot > 0) dot++; + c++; + } + return (int)(c - string); +} +NK_INTERN void +nk_strrev_ascii(char *s) +{ + int len = nk_strlen(s); + int end = len / 2; + int i = 0; + char t; + for (; i < end; ++i) { + t = s[i]; + s[i] = s[len - 1 - i]; + s[len -1 - i] = t; + } +} +NK_LIB char* +nk_itoa(char *s, long n) +{ + long i = 0; + if (n == 0) { + s[i++] = '0'; + s[i] = 0; + return s; + } + if (n < 0) { + s[i++] = '-'; + n = -n; + } + while (n > 0) { + s[i++] = (char)('0' + (n % 10)); + n /= 10; + } + s[i] = 0; + if (s[0] == '-') + ++s; + + nk_strrev_ascii(s); + return s; +} +NK_LIB char* +nk_dtoa(char *s, double n) +{ + int useExp = 0; + int digit = 0, m = 0, m1 = 0; + char *c = s; + int neg = 0; + + NK_ASSERT(s); + if (!s) return 0; + + if (n == 0.0) { + s[0] = '0'; s[1] = '\0'; + return s; + } + + neg = (n < 0); + if (neg) n = -n; + + /* calculate magnitude */ + m = nk_log10(n); + useExp = (m >= 14 || (neg && m >= 9) || m <= -9); + if (neg) *(c++) = '-'; + + /* set up for scientific notation */ + if (useExp) { + if (m < 0) + m -= 1; + n = n / (double)nk_pow(10.0, m); + m1 = m; + m = 0; + } + if (m < 1.0) { + m = 0; + } + + /* convert the number */ + while (n > NK_FLOAT_PRECISION || m >= 0) { + double weight = nk_pow(10.0, m); + if (weight > 0) { + double t = (double)n / weight; + digit = nk_ifloord(t); + n -= ((double)digit * weight); + *(c++) = (char)('0' + (char)digit); + } + if (m == 0 && n > 0) + *(c++) = '.'; + m--; + } + + if (useExp) { + /* convert the exponent */ + int i, j; + *(c++) = 'e'; + if (m1 > 0) { + *(c++) = '+'; + } else { + *(c++) = '-'; + m1 = -m1; + } + m = 0; + while (m1 > 0) { + *(c++) = (char)('0' + (char)(m1 % 10)); + m1 /= 10; + m++; + } + c -= m; + for (i = 0, j = m-1; i= buf_size) break; + iter++; + + /* flag arguments */ + while (*iter) { + if (*iter == '-') flag |= NK_ARG_FLAG_LEFT; + else if (*iter == '+') flag |= NK_ARG_FLAG_PLUS; + else if (*iter == ' ') flag |= NK_ARG_FLAG_SPACE; + else if (*iter == '#') flag |= NK_ARG_FLAG_NUM; + else if (*iter == '0') flag |= NK_ARG_FLAG_ZERO; + else break; + iter++; + } + + /* width argument */ + width = NK_DEFAULT; + if (*iter >= '1' && *iter <= '9') { + const char *end; + width = nk_strtoi(iter, &end); + if (end == iter) + width = -1; + else iter = end; + } else if (*iter == '*') { + width = va_arg(args, int); + iter++; + } + + /* precision argument */ + precision = NK_DEFAULT; + if (*iter == '.') { + iter++; + if (*iter == '*') { + precision = va_arg(args, int); + iter++; + } else { + const char *end; + precision = nk_strtoi(iter, &end); + if (end == iter) + precision = -1; + else iter = end; + } + } + + /* length modifier */ + if (*iter == 'h') { + if (*(iter+1) == 'h') { + arg_type = NK_ARG_TYPE_CHAR; + iter++; + } else arg_type = NK_ARG_TYPE_SHORT; + iter++; + } else if (*iter == 'l') { + arg_type = NK_ARG_TYPE_LONG; + iter++; + } else arg_type = NK_ARG_TYPE_DEFAULT; + + /* specifier */ + if (*iter == '%') { + NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); + NK_ASSERT(precision == NK_DEFAULT); + NK_ASSERT(width == NK_DEFAULT); + if (len < buf_size) + buf[len++] = '%'; + } else if (*iter == 's') { + /* string */ + const char *str = va_arg(args, const char*); + NK_ASSERT(str != buf && "buffer and argument are not allowed to overlap!"); + NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); + NK_ASSERT(precision == NK_DEFAULT); + NK_ASSERT(width == NK_DEFAULT); + if (str == buf) return -1; + while (str && *str && len < buf_size) + buf[len++] = *str++; + } else if (*iter == 'n') { + /* current length callback */ + signed int *n = va_arg(args, int*); + NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); + NK_ASSERT(precision == NK_DEFAULT); + NK_ASSERT(width == NK_DEFAULT); + if (n) *n = len; + } else if (*iter == 'c' || *iter == 'i' || *iter == 'd') { + /* signed integer */ + long value = 0; + const char *num_iter; + int num_len, num_print, padding; + int cur_precision = NK_MAX(precision, 1); + int cur_width = NK_MAX(width, 0); + + /* retrieve correct value type */ + if (arg_type == NK_ARG_TYPE_CHAR) + value = (signed char)va_arg(args, int); + else if (arg_type == NK_ARG_TYPE_SHORT) + value = (signed short)va_arg(args, int); + else if (arg_type == NK_ARG_TYPE_LONG) + value = va_arg(args, signed long); + else if (*iter == 'c') + value = (unsigned char)va_arg(args, int); + else value = va_arg(args, signed int); + + /* convert number to string */ + nk_itoa(number_buffer, value); + num_len = nk_strlen(number_buffer); + padding = NK_MAX(cur_width - NK_MAX(cur_precision, num_len), 0); + if ((flag & NK_ARG_FLAG_PLUS) || (flag & NK_ARG_FLAG_SPACE)) + padding = NK_MAX(padding-1, 0); + + /* fill left padding up to a total of `width` characters */ + if (!(flag & NK_ARG_FLAG_LEFT)) { + while (padding-- > 0 && (len < buf_size)) { + if ((flag & NK_ARG_FLAG_ZERO) && (precision == NK_DEFAULT)) + buf[len++] = '0'; + else buf[len++] = ' '; + } + } + + /* copy string value representation into buffer */ + if ((flag & NK_ARG_FLAG_PLUS) && value >= 0 && len < buf_size) + buf[len++] = '+'; + else if ((flag & NK_ARG_FLAG_SPACE) && value >= 0 && len < buf_size) + buf[len++] = ' '; + + /* fill up to precision number of digits with '0' */ + num_print = NK_MAX(cur_precision, num_len); + while (precision && (num_print > num_len) && (len < buf_size)) { + buf[len++] = '0'; + num_print--; + } + + /* copy string value representation into buffer */ + num_iter = number_buffer; + while (precision && *num_iter && len < buf_size) + buf[len++] = *num_iter++; + + /* fill right padding up to width characters */ + if (flag & NK_ARG_FLAG_LEFT) { + while ((padding-- > 0) && (len < buf_size)) + buf[len++] = ' '; + } + } else if (*iter == 'o' || *iter == 'x' || *iter == 'X' || *iter == 'u') { + /* unsigned integer */ + unsigned long value = 0; + int num_len = 0, num_print, padding = 0; + int cur_precision = NK_MAX(precision, 1); + int cur_width = NK_MAX(width, 0); + unsigned int base = (*iter == 'o') ? 8: (*iter == 'u')? 10: 16; + + /* print oct/hex/dec value */ + const char *upper_output_format = "0123456789ABCDEF"; + const char *lower_output_format = "0123456789abcdef"; + const char *output_format = (*iter == 'x') ? + lower_output_format: upper_output_format; + + /* retrieve correct value type */ + if (arg_type == NK_ARG_TYPE_CHAR) + value = (unsigned char)va_arg(args, int); + else if (arg_type == NK_ARG_TYPE_SHORT) + value = (unsigned short)va_arg(args, int); + else if (arg_type == NK_ARG_TYPE_LONG) + value = va_arg(args, unsigned long); + else value = va_arg(args, unsigned int); + + do { + /* convert decimal number into hex/oct number */ + int digit = output_format[value % base]; + if (num_len < NK_MAX_NUMBER_BUFFER) + number_buffer[num_len++] = (char)digit; + value /= base; + } while (value > 0); + + num_print = NK_MAX(cur_precision, num_len); + padding = NK_MAX(cur_width - NK_MAX(cur_precision, num_len), 0); + if (flag & NK_ARG_FLAG_NUM) + padding = NK_MAX(padding-1, 0); + + /* fill left padding up to a total of `width` characters */ + if (!(flag & NK_ARG_FLAG_LEFT)) { + while ((padding-- > 0) && (len < buf_size)) { + if ((flag & NK_ARG_FLAG_ZERO) && (precision == NK_DEFAULT)) + buf[len++] = '0'; + else buf[len++] = ' '; + } + } + + /* fill up to precision number of digits */ + if (num_print && (flag & NK_ARG_FLAG_NUM)) { + if ((*iter == 'o') && (len < buf_size)) { + buf[len++] = '0'; + } else if ((*iter == 'x') && ((len+1) < buf_size)) { + buf[len++] = '0'; + buf[len++] = 'x'; + } else if ((*iter == 'X') && ((len+1) < buf_size)) { + buf[len++] = '0'; + buf[len++] = 'X'; + } + } + while (precision && (num_print > num_len) && (len < buf_size)) { + buf[len++] = '0'; + num_print--; + } + + /* reverse number direction */ + while (num_len > 0) { + if (precision && (len < buf_size)) + buf[len++] = number_buffer[num_len-1]; + num_len--; + } + + /* fill right padding up to width characters */ + if (flag & NK_ARG_FLAG_LEFT) { + while ((padding-- > 0) && (len < buf_size)) + buf[len++] = ' '; + } + } else if (*iter == 'f') { + /* floating point */ + const char *num_iter; + int cur_precision = (precision < 0) ? 6: precision; + int prefix, cur_width = NK_MAX(width, 0); + double value = va_arg(args, double); + int num_len = 0, frac_len = 0, dot = 0; + int padding = 0; + + NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); + NK_DTOA(number_buffer, value); + num_len = nk_strlen(number_buffer); + + /* calculate padding */ + num_iter = number_buffer; + while (*num_iter && *num_iter != '.') + num_iter++; + + prefix = (*num_iter == '.')?(int)(num_iter - number_buffer)+1:0; + padding = NK_MAX(cur_width - (prefix + NK_MIN(cur_precision, num_len - prefix)) , 0); + if ((flag & NK_ARG_FLAG_PLUS) || (flag & NK_ARG_FLAG_SPACE)) + padding = NK_MAX(padding-1, 0); + + /* fill left padding up to a total of `width` characters */ + if (!(flag & NK_ARG_FLAG_LEFT)) { + while (padding-- > 0 && (len < buf_size)) { + if (flag & NK_ARG_FLAG_ZERO) + buf[len++] = '0'; + else buf[len++] = ' '; + } + } + + /* copy string value representation into buffer */ + num_iter = number_buffer; + if ((flag & NK_ARG_FLAG_PLUS) && (value >= 0) && (len < buf_size)) + buf[len++] = '+'; + else if ((flag & NK_ARG_FLAG_SPACE) && (value >= 0) && (len < buf_size)) + buf[len++] = ' '; + while (*num_iter) { + if (dot) frac_len++; + if (len < buf_size) + buf[len++] = *num_iter; + if (*num_iter == '.') dot = 1; + if (frac_len >= cur_precision) break; + num_iter++; + } + + /* fill number up to precision */ + while (frac_len < cur_precision) { + if (!dot && len < buf_size) { + buf[len++] = '.'; + dot = 1; + } + if (len < buf_size) + buf[len++] = '0'; + frac_len++; + } + + /* fill right padding up to width characters */ + if (flag & NK_ARG_FLAG_LEFT) { + while ((padding-- > 0) && (len < buf_size)) + buf[len++] = ' '; + } + } else { + /* Specifier not supported: g,G,e,E,p,z */ + NK_ASSERT(0 && "specifier is not supported!"); + return result; + } + } + buf[(len >= buf_size)?(buf_size-1):len] = 0; + result = (len >= buf_size)?-1:len; + return result; +} +#endif +NK_LIB int +nk_strfmt(char *buf, int buf_size, const char *fmt, va_list args) +{ + int result = -1; + NK_ASSERT(buf); + NK_ASSERT(buf_size); + if (!buf || !buf_size || !fmt) return 0; +#ifdef NK_INCLUDE_STANDARD_IO + result = NK_VSNPRINTF(buf, (nk_size)buf_size, fmt, args); + result = (result >= buf_size) ? -1: result; + buf[buf_size-1] = 0; +#else + result = nk_vsnprintf(buf, buf_size, fmt, args); +#endif + return result; +} +#endif +NK_API nk_hash +nk_murmur_hash(const void * key, int len, nk_hash seed) +{ + /* 32-Bit MurmurHash3: https://code.google.com/p/smhasher/wiki/MurmurHash3*/ + #define NK_ROTL(x,r) ((x) << (r) | ((x) >> (32 - r))) + + nk_uint h1 = seed; + nk_uint k1; + const nk_byte *data = (const nk_byte*)key; + const nk_byte *keyptr = data; + nk_byte *k1ptr; + const int bsize = sizeof(k1); + const int nblocks = len/4; + + const nk_uint c1 = 0xcc9e2d51; + const nk_uint c2 = 0x1b873593; + const nk_byte *tail; + int i; + + /* body */ + if (!key) return 0; + for (i = 0; i < nblocks; ++i, keyptr += bsize) { + k1ptr = (nk_byte*)&k1; + k1ptr[0] = keyptr[0]; + k1ptr[1] = keyptr[1]; + k1ptr[2] = keyptr[2]; + k1ptr[3] = keyptr[3]; + + k1 *= c1; + k1 = NK_ROTL(k1,15); + k1 *= c2; + + h1 ^= k1; + h1 = NK_ROTL(h1,13); + h1 = h1*5+0xe6546b64; + } + + /* tail */ + tail = (const nk_byte*)(data + nblocks*4); + k1 = 0; + switch (len & 3) { + case 3: k1 ^= (nk_uint)(tail[2] << 16); /* fallthrough */ + case 2: k1 ^= (nk_uint)(tail[1] << 8u); /* fallthrough */ + case 1: k1 ^= tail[0]; + k1 *= c1; + k1 = NK_ROTL(k1,15); + k1 *= c2; + h1 ^= k1; + break; + default: break; + } + + /* finalization */ + h1 ^= (nk_uint)len; + /* fmix32 */ + h1 ^= h1 >> 16; + h1 *= 0x85ebca6b; + h1 ^= h1 >> 13; + h1 *= 0xc2b2ae35; + h1 ^= h1 >> 16; + + #undef NK_ROTL + return h1; +} +#ifdef NK_INCLUDE_STANDARD_IO +NK_LIB char* +nk_file_load(const char* path, nk_size* siz, struct nk_allocator *alloc) +{ + char *buf; + FILE *fd; + long ret; + + NK_ASSERT(path); + NK_ASSERT(siz); + NK_ASSERT(alloc); + if (!path || !siz || !alloc) + return 0; + + fd = fopen(path, "rb"); + if (!fd) return 0; + fseek(fd, 0, SEEK_END); + ret = ftell(fd); + if (ret < 0) { + fclose(fd); + return 0; + } + *siz = (nk_size)ret; + fseek(fd, 0, SEEK_SET); + buf = (char*)alloc->alloc(alloc->userdata,0, *siz); + NK_ASSERT(buf); + if (!buf) { + fclose(fd); + return 0; + } + *siz = (nk_size)fread(buf, 1,*siz, fd); + fclose(fd); + return buf; +} +#endif +NK_LIB int +nk_text_clamp(const struct nk_user_font *font, const char *text, + int text_len, float space, int *glyphs, float *text_width, + nk_rune *sep_list, int sep_count) +{ + int i = 0; + int glyph_len = 0; + float last_width = 0; + nk_rune unicode = 0; + float width = 0; + int len = 0; + int g = 0; + float s; + + int sep_len = 0; + int sep_g = 0; + float sep_width = 0; + sep_count = NK_MAX(sep_count,0); + + glyph_len = nk_utf_decode(text, &unicode, text_len); + while (glyph_len && (width < space) && (len < text_len)) { + len += glyph_len; + s = font->width(font->userdata, font->height, text, len); + for (i = 0; i < sep_count; ++i) { + if (unicode != sep_list[i]) continue; + sep_width = last_width = width; + sep_g = g+1; + sep_len = len; + break; + } + if (i == sep_count){ + last_width = sep_width = width; + sep_g = g+1; + } + width = s; + glyph_len = nk_utf_decode(&text[len], &unicode, text_len - len); + g++; + } + if (len >= text_len) { + *glyphs = g; + *text_width = last_width; + return len; + } else { + *glyphs = sep_g; + *text_width = sep_width; + return (!sep_len) ? len: sep_len; + } +} +NK_LIB struct nk_vec2 +nk_text_calculate_text_bounds(const struct nk_user_font *font, + const char *begin, int byte_len, float row_height, const char **remaining, + struct nk_vec2 *out_offset, int *glyphs, int op) +{ + float line_height = row_height; + struct nk_vec2 text_size = nk_vec2(0,0); + float line_width = 0.0f; + + float glyph_width; + int glyph_len = 0; + nk_rune unicode = 0; + int text_len = 0; + if (!begin || byte_len <= 0 || !font) + return nk_vec2(0,row_height); + + glyph_len = nk_utf_decode(begin, &unicode, byte_len); + if (!glyph_len) return text_size; + glyph_width = font->width(font->userdata, font->height, begin, glyph_len); + + *glyphs = 0; + while ((text_len < byte_len) && glyph_len) { + if (unicode == '\n') { + text_size.x = NK_MAX(text_size.x, line_width); + text_size.y += line_height; + line_width = 0; + *glyphs+=1; + if (op == NK_STOP_ON_NEW_LINE) + break; + + text_len++; + glyph_len = nk_utf_decode(begin + text_len, &unicode, byte_len-text_len); + continue; + } + + if (unicode == '\r') { + text_len++; + *glyphs+=1; + glyph_len = nk_utf_decode(begin + text_len, &unicode, byte_len-text_len); + continue; + } + + *glyphs = *glyphs + 1; + text_len += glyph_len; + line_width += (float)glyph_width; + glyph_len = nk_utf_decode(begin + text_len, &unicode, byte_len-text_len); + glyph_width = font->width(font->userdata, font->height, begin+text_len, glyph_len); + continue; + } + + if (text_size.x < line_width) + text_size.x = line_width; + if (out_offset) + *out_offset = nk_vec2(line_width, text_size.y + line_height); + if (line_width > 0 || text_size.y == 0.0f) + text_size.y += line_height; + if (remaining) + *remaining = begin+text_len; + return text_size; +} + + + + + +/* ============================================================== + * + * COLOR + * + * ===============================================================*/ +NK_INTERN int +nk_parse_hex(const char *p, int length) +{ + int i = 0; + int len = 0; + while (len < length) { + i <<= 4; + if (p[len] >= 'a' && p[len] <= 'f') + i += ((p[len] - 'a') + 10); + else if (p[len] >= 'A' && p[len] <= 'F') + i += ((p[len] - 'A') + 10); + else i += (p[len] - '0'); + len++; + } + return i; +} +NK_API struct nk_color +nk_rgba(int r, int g, int b, int a) +{ + struct nk_color ret; + ret.r = (nk_byte)NK_CLAMP(0, r, 255); + ret.g = (nk_byte)NK_CLAMP(0, g, 255); + ret.b = (nk_byte)NK_CLAMP(0, b, 255); + ret.a = (nk_byte)NK_CLAMP(0, a, 255); + return ret; +} +NK_API struct nk_color +nk_rgb_hex(const char *rgb) +{ + struct nk_color col; + const char *c = rgb; + if (*c == '#') c++; + col.r = (nk_byte)nk_parse_hex(c, 2); + col.g = (nk_byte)nk_parse_hex(c+2, 2); + col.b = (nk_byte)nk_parse_hex(c+4, 2); + col.a = 255; + return col; +} +NK_API struct nk_color +nk_rgba_hex(const char *rgb) +{ + struct nk_color col; + const char *c = rgb; + if (*c == '#') c++; + col.r = (nk_byte)nk_parse_hex(c, 2); + col.g = (nk_byte)nk_parse_hex(c+2, 2); + col.b = (nk_byte)nk_parse_hex(c+4, 2); + col.a = (nk_byte)nk_parse_hex(c+6, 2); + return col; +} +NK_API void +nk_color_hex_rgba(char *output, struct nk_color col) +{ + #define NK_TO_HEX(i) ((i) <= 9 ? '0' + (i): 'A' - 10 + (i)) + output[0] = (char)NK_TO_HEX((col.r & 0xF0) >> 4); + output[1] = (char)NK_TO_HEX((col.r & 0x0F)); + output[2] = (char)NK_TO_HEX((col.g & 0xF0) >> 4); + output[3] = (char)NK_TO_HEX((col.g & 0x0F)); + output[4] = (char)NK_TO_HEX((col.b & 0xF0) >> 4); + output[5] = (char)NK_TO_HEX((col.b & 0x0F)); + output[6] = (char)NK_TO_HEX((col.a & 0xF0) >> 4); + output[7] = (char)NK_TO_HEX((col.a & 0x0F)); + output[8] = '\0'; + #undef NK_TO_HEX +} +NK_API void +nk_color_hex_rgb(char *output, struct nk_color col) +{ + #define NK_TO_HEX(i) ((i) <= 9 ? '0' + (i): 'A' - 10 + (i)) + output[0] = (char)NK_TO_HEX((col.r & 0xF0) >> 4); + output[1] = (char)NK_TO_HEX((col.r & 0x0F)); + output[2] = (char)NK_TO_HEX((col.g & 0xF0) >> 4); + output[3] = (char)NK_TO_HEX((col.g & 0x0F)); + output[4] = (char)NK_TO_HEX((col.b & 0xF0) >> 4); + output[5] = (char)NK_TO_HEX((col.b & 0x0F)); + output[6] = '\0'; + #undef NK_TO_HEX +} +NK_API struct nk_color +nk_rgba_iv(const int *c) +{ + return nk_rgba(c[0], c[1], c[2], c[3]); +} +NK_API struct nk_color +nk_rgba_bv(const nk_byte *c) +{ + return nk_rgba(c[0], c[1], c[2], c[3]); +} +NK_API struct nk_color +nk_rgb(int r, int g, int b) +{ + struct nk_color ret; + ret.r = (nk_byte)NK_CLAMP(0, r, 255); + ret.g = (nk_byte)NK_CLAMP(0, g, 255); + ret.b = (nk_byte)NK_CLAMP(0, b, 255); + ret.a = (nk_byte)255; + return ret; +} +NK_API struct nk_color +nk_rgb_iv(const int *c) +{ + return nk_rgb(c[0], c[1], c[2]); +} +NK_API struct nk_color +nk_rgb_bv(const nk_byte* c) +{ + return nk_rgb(c[0], c[1], c[2]); +} +NK_API struct nk_color +nk_rgba_u32(nk_uint in) +{ + struct nk_color ret; + ret.r = (in & 0xFF); + ret.g = ((in >> 8) & 0xFF); + ret.b = ((in >> 16) & 0xFF); + ret.a = (nk_byte)((in >> 24) & 0xFF); + return ret; +} +NK_API struct nk_color +nk_rgba_f(float r, float g, float b, float a) +{ + struct nk_color ret; + ret.r = (nk_byte)(NK_SATURATE(r) * 255.0f); + ret.g = (nk_byte)(NK_SATURATE(g) * 255.0f); + ret.b = (nk_byte)(NK_SATURATE(b) * 255.0f); + ret.a = (nk_byte)(NK_SATURATE(a) * 255.0f); + return ret; +} +NK_API struct nk_color +nk_rgba_fv(const float *c) +{ + return nk_rgba_f(c[0], c[1], c[2], c[3]); +} +NK_API struct nk_color +nk_rgba_cf(struct nk_colorf c) +{ + return nk_rgba_f(c.r, c.g, c.b, c.a); +} +NK_API struct nk_color +nk_rgb_f(float r, float g, float b) +{ + struct nk_color ret; + ret.r = (nk_byte)(NK_SATURATE(r) * 255.0f); + ret.g = (nk_byte)(NK_SATURATE(g) * 255.0f); + ret.b = (nk_byte)(NK_SATURATE(b) * 255.0f); + ret.a = 255; + return ret; +} +NK_API struct nk_color +nk_rgb_fv(const float *c) +{ + return nk_rgb_f(c[0], c[1], c[2]); +} +NK_API struct nk_color +nk_rgb_cf(struct nk_colorf c) +{ + return nk_rgb_f(c.r, c.g, c.b); +} +NK_API struct nk_color +nk_hsv(int h, int s, int v) +{ + return nk_hsva(h, s, v, 255); +} +NK_API struct nk_color +nk_hsv_iv(const int *c) +{ + return nk_hsv(c[0], c[1], c[2]); +} +NK_API struct nk_color +nk_hsv_bv(const nk_byte *c) +{ + return nk_hsv(c[0], c[1], c[2]); +} +NK_API struct nk_color +nk_hsv_f(float h, float s, float v) +{ + return nk_hsva_f(h, s, v, 1.0f); +} +NK_API struct nk_color +nk_hsv_fv(const float *c) +{ + return nk_hsv_f(c[0], c[1], c[2]); +} +NK_API struct nk_color +nk_hsva(int h, int s, int v, int a) +{ + float hf = ((float)NK_CLAMP(0, h, 255)) / 255.0f; + float sf = ((float)NK_CLAMP(0, s, 255)) / 255.0f; + float vf = ((float)NK_CLAMP(0, v, 255)) / 255.0f; + float af = ((float)NK_CLAMP(0, a, 255)) / 255.0f; + return nk_hsva_f(hf, sf, vf, af); +} +NK_API struct nk_color +nk_hsva_iv(const int *c) +{ + return nk_hsva(c[0], c[1], c[2], c[3]); +} +NK_API struct nk_color +nk_hsva_bv(const nk_byte *c) +{ + return nk_hsva(c[0], c[1], c[2], c[3]); +} +NK_API struct nk_colorf +nk_hsva_colorf(float h, float s, float v, float a) +{ + int i; + float p, q, t, f; + struct nk_colorf out = {0,0,0,0}; + if (s <= 0.0f) { + out.r = v; out.g = v; out.b = v; out.a = a; + return out; + } + h = h / (60.0f/360.0f); + i = (int)h; + f = h - (float)i; + p = v * (1.0f - s); + q = v * (1.0f - (s * f)); + t = v * (1.0f - s * (1.0f - f)); + + switch (i) { + case 0: default: out.r = v; out.g = t; out.b = p; break; + case 1: out.r = q; out.g = v; out.b = p; break; + case 2: out.r = p; out.g = v; out.b = t; break; + case 3: out.r = p; out.g = q; out.b = v; break; + case 4: out.r = t; out.g = p; out.b = v; break; + case 5: out.r = v; out.g = p; out.b = q; break;} + out.a = a; + return out; +} +NK_API struct nk_colorf +nk_hsva_colorfv(float *c) +{ + return nk_hsva_colorf(c[0], c[1], c[2], c[3]); +} +NK_API struct nk_color +nk_hsva_f(float h, float s, float v, float a) +{ + struct nk_colorf c = nk_hsva_colorf(h, s, v, a); + return nk_rgba_f(c.r, c.g, c.b, c.a); +} +NK_API struct nk_color +nk_hsva_fv(const float *c) +{ + return nk_hsva_f(c[0], c[1], c[2], c[3]); +} +NK_API nk_uint +nk_color_u32(struct nk_color in) +{ + nk_uint out = (nk_uint)in.r; + out |= ((nk_uint)in.g << 8); + out |= ((nk_uint)in.b << 16); + out |= ((nk_uint)in.a << 24); + return out; +} +NK_API void +nk_color_f(float *r, float *g, float *b, float *a, struct nk_color in) +{ + NK_STORAGE const float s = 1.0f/255.0f; + *r = (float)in.r * s; + *g = (float)in.g * s; + *b = (float)in.b * s; + *a = (float)in.a * s; +} +NK_API void +nk_color_fv(float *c, struct nk_color in) +{ + nk_color_f(&c[0], &c[1], &c[2], &c[3], in); +} +NK_API struct nk_colorf +nk_color_cf(struct nk_color in) +{ + struct nk_colorf o; + nk_color_f(&o.r, &o.g, &o.b, &o.a, in); + return o; +} +NK_API void +nk_color_d(double *r, double *g, double *b, double *a, struct nk_color in) +{ + NK_STORAGE const double s = 1.0/255.0; + *r = (double)in.r * s; + *g = (double)in.g * s; + *b = (double)in.b * s; + *a = (double)in.a * s; +} +NK_API void +nk_color_dv(double *c, struct nk_color in) +{ + nk_color_d(&c[0], &c[1], &c[2], &c[3], in); +} +NK_API void +nk_color_hsv_f(float *out_h, float *out_s, float *out_v, struct nk_color in) +{ + float a; + nk_color_hsva_f(out_h, out_s, out_v, &a, in); +} +NK_API void +nk_color_hsv_fv(float *out, struct nk_color in) +{ + float a; + nk_color_hsva_f(&out[0], &out[1], &out[2], &a, in); +} +NK_API void +nk_colorf_hsva_f(float *out_h, float *out_s, + float *out_v, float *out_a, struct nk_colorf in) +{ + float chroma; + float K = 0.0f; + if (in.g < in.b) { + const float t = in.g; in.g = in.b; in.b = t; + K = -1.f; + } + if (in.r < in.g) { + const float t = in.r; in.r = in.g; in.g = t; + K = -2.f/6.0f - K; + } + chroma = in.r - ((in.g < in.b) ? in.g: in.b); + *out_h = NK_ABS(K + (in.g - in.b)/(6.0f * chroma + 1e-20f)); + *out_s = chroma / (in.r + 1e-20f); + *out_v = in.r; + *out_a = in.a; + +} +NK_API void +nk_colorf_hsva_fv(float *hsva, struct nk_colorf in) +{ + nk_colorf_hsva_f(&hsva[0], &hsva[1], &hsva[2], &hsva[3], in); +} +NK_API void +nk_color_hsva_f(float *out_h, float *out_s, + float *out_v, float *out_a, struct nk_color in) +{ + struct nk_colorf col; + nk_color_f(&col.r,&col.g,&col.b,&col.a, in); + nk_colorf_hsva_f(out_h, out_s, out_v, out_a, col); +} +NK_API void +nk_color_hsva_fv(float *out, struct nk_color in) +{ + nk_color_hsva_f(&out[0], &out[1], &out[2], &out[3], in); +} +NK_API void +nk_color_hsva_i(int *out_h, int *out_s, int *out_v, + int *out_a, struct nk_color in) +{ + float h,s,v,a; + nk_color_hsva_f(&h, &s, &v, &a, in); + *out_h = (nk_byte)(h * 255.0f); + *out_s = (nk_byte)(s * 255.0f); + *out_v = (nk_byte)(v * 255.0f); + *out_a = (nk_byte)(a * 255.0f); +} +NK_API void +nk_color_hsva_iv(int *out, struct nk_color in) +{ + nk_color_hsva_i(&out[0], &out[1], &out[2], &out[3], in); +} +NK_API void +nk_color_hsva_bv(nk_byte *out, struct nk_color in) +{ + int tmp[4]; + nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in); + out[0] = (nk_byte)tmp[0]; + out[1] = (nk_byte)tmp[1]; + out[2] = (nk_byte)tmp[2]; + out[3] = (nk_byte)tmp[3]; +} +NK_API void +nk_color_hsva_b(nk_byte *h, nk_byte *s, nk_byte *v, nk_byte *a, struct nk_color in) +{ + int tmp[4]; + nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in); + *h = (nk_byte)tmp[0]; + *s = (nk_byte)tmp[1]; + *v = (nk_byte)tmp[2]; + *a = (nk_byte)tmp[3]; +} +NK_API void +nk_color_hsv_i(int *out_h, int *out_s, int *out_v, struct nk_color in) +{ + int a; + nk_color_hsva_i(out_h, out_s, out_v, &a, in); +} +NK_API void +nk_color_hsv_b(nk_byte *out_h, nk_byte *out_s, nk_byte *out_v, struct nk_color in) +{ + int tmp[4]; + nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in); + *out_h = (nk_byte)tmp[0]; + *out_s = (nk_byte)tmp[1]; + *out_v = (nk_byte)tmp[2]; +} +NK_API void +nk_color_hsv_iv(int *out, struct nk_color in) +{ + nk_color_hsv_i(&out[0], &out[1], &out[2], in); +} +NK_API void +nk_color_hsv_bv(nk_byte *out, struct nk_color in) +{ + int tmp[4]; + nk_color_hsv_i(&tmp[0], &tmp[1], &tmp[2], in); + out[0] = (nk_byte)tmp[0]; + out[1] = (nk_byte)tmp[1]; + out[2] = (nk_byte)tmp[2]; +} + + + + + +/* =============================================================== + * + * UTF-8 + * + * ===============================================================*/ +NK_GLOBAL const nk_byte nk_utfbyte[NK_UTF_SIZE+1] = {0x80, 0, 0xC0, 0xE0, 0xF0}; +NK_GLOBAL const nk_byte nk_utfmask[NK_UTF_SIZE+1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8}; +NK_GLOBAL const nk_uint nk_utfmin[NK_UTF_SIZE+1] = {0, 0, 0x80, 0x800, 0x10000}; +NK_GLOBAL const nk_uint nk_utfmax[NK_UTF_SIZE+1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF}; + +NK_INTERN int +nk_utf_validate(nk_rune *u, int i) +{ + NK_ASSERT(u); + if (!u) return 0; + if (!NK_BETWEEN(*u, nk_utfmin[i], nk_utfmax[i]) || + NK_BETWEEN(*u, 0xD800, 0xDFFF)) + *u = NK_UTF_INVALID; + for (i = 1; *u > nk_utfmax[i]; ++i); + return i; +} +NK_INTERN nk_rune +nk_utf_decode_byte(char c, int *i) +{ + NK_ASSERT(i); + if (!i) return 0; + for(*i = 0; *i < (int)NK_LEN(nk_utfmask); ++(*i)) { + if (((nk_byte)c & nk_utfmask[*i]) == nk_utfbyte[*i]) + return (nk_byte)(c & ~nk_utfmask[*i]); + } + return 0; +} +NK_API int +nk_utf_decode(const char *c, nk_rune *u, int clen) +{ + int i, j, len, type=0; + nk_rune udecoded; + + NK_ASSERT(c); + NK_ASSERT(u); + + if (!c || !u) return 0; + if (!clen) return 0; + *u = NK_UTF_INVALID; + + udecoded = nk_utf_decode_byte(c[0], &len); + if (!NK_BETWEEN(len, 1, NK_UTF_SIZE)) + return 1; + + for (i = 1, j = 1; i < clen && j < len; ++i, ++j) { + udecoded = (udecoded << 6) | nk_utf_decode_byte(c[i], &type); + if (type != 0) + return j; + } + if (j < len) + return 0; + *u = udecoded; + nk_utf_validate(u, len); + return len; +} +NK_INTERN char +nk_utf_encode_byte(nk_rune u, int i) +{ + return (char)((nk_utfbyte[i]) | ((nk_byte)u & ~nk_utfmask[i])); +} +NK_API int +nk_utf_encode(nk_rune u, char *c, int clen) +{ + int len, i; + len = nk_utf_validate(&u, 0); + if (clen < len || !len || len > NK_UTF_SIZE) + return 0; + + for (i = len - 1; i != 0; --i) { + c[i] = nk_utf_encode_byte(u, 0); + u >>= 6; + } + c[0] = nk_utf_encode_byte(u, len); + return len; +} +NK_API int +nk_utf_len(const char *str, int len) +{ + const char *text; + int glyphs = 0; + int text_len; + int glyph_len; + int src_len = 0; + nk_rune unicode; + + NK_ASSERT(str); + if (!str || !len) return 0; + + text = str; + text_len = len; + glyph_len = nk_utf_decode(text, &unicode, text_len); + while (glyph_len && src_len < len) { + glyphs++; + src_len = src_len + glyph_len; + glyph_len = nk_utf_decode(text + src_len, &unicode, text_len - src_len); + } + return glyphs; +} +NK_API const char* +nk_utf_at(const char *buffer, int length, int index, + nk_rune *unicode, int *len) +{ + int i = 0; + int src_len = 0; + int glyph_len = 0; + const char *text; + int text_len; + + NK_ASSERT(buffer); + NK_ASSERT(unicode); + NK_ASSERT(len); + + if (!buffer || !unicode || !len) return 0; + if (index < 0) { + *unicode = NK_UTF_INVALID; + *len = 0; + return 0; + } + + text = buffer; + text_len = length; + glyph_len = nk_utf_decode(text, unicode, text_len); + while (glyph_len) { + if (i == index) { + *len = glyph_len; + break; + } + + i++; + src_len = src_len + glyph_len; + glyph_len = nk_utf_decode(text + src_len, unicode, text_len - src_len); + } + if (i != index) return 0; + return buffer + src_len; +} + + + + + +/* ============================================================== + * + * BUFFER + * + * ===============================================================*/ +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_LIB void* +nk_malloc(nk_handle unused, void *old,nk_size size) +{ + NK_UNUSED(unused); + NK_UNUSED(old); + return malloc(size); +} +NK_LIB void +nk_mfree(nk_handle unused, void *ptr) +{ + NK_UNUSED(unused); + free(ptr); +} +NK_API void +nk_buffer_init_default(struct nk_buffer *buffer) +{ + struct nk_allocator alloc; + alloc.userdata.ptr = 0; + alloc.alloc = nk_malloc; + alloc.free = nk_mfree; + nk_buffer_init(buffer, &alloc, NK_BUFFER_DEFAULT_INITIAL_SIZE); +} +#endif + +NK_API void +nk_buffer_init(struct nk_buffer *b, const struct nk_allocator *a, + nk_size initial_size) +{ + NK_ASSERT(b); + NK_ASSERT(a); + NK_ASSERT(initial_size); + if (!b || !a || !initial_size) return; + + nk_zero(b, sizeof(*b)); + b->type = NK_BUFFER_DYNAMIC; + b->memory.ptr = a->alloc(a->userdata,0, initial_size); + b->memory.size = initial_size; + b->size = initial_size; + b->grow_factor = 2.0f; + b->pool = *a; +} +NK_API void +nk_buffer_init_fixed(struct nk_buffer *b, void *m, nk_size size) +{ + NK_ASSERT(b); + NK_ASSERT(m); + NK_ASSERT(size); + if (!b || !m || !size) return; + + nk_zero(b, sizeof(*b)); + b->type = NK_BUFFER_FIXED; + b->memory.ptr = m; + b->memory.size = size; + b->size = size; +} +NK_LIB void* +nk_buffer_align(void *unaligned, + nk_size align, nk_size *alignment, + enum nk_buffer_allocation_type type) +{ + void *memory = 0; + switch (type) { + default: + case NK_BUFFER_MAX: + case NK_BUFFER_FRONT: + if (align) { + memory = NK_ALIGN_PTR(unaligned, align); + *alignment = (nk_size)((nk_byte*)memory - (nk_byte*)unaligned); + } else { + memory = unaligned; + *alignment = 0; + } + break; + case NK_BUFFER_BACK: + if (align) { + memory = NK_ALIGN_PTR_BACK(unaligned, align); + *alignment = (nk_size)((nk_byte*)unaligned - (nk_byte*)memory); + } else { + memory = unaligned; + *alignment = 0; + } + break; + } + return memory; +} +NK_LIB void* +nk_buffer_realloc(struct nk_buffer *b, nk_size capacity, nk_size *size) +{ + void *temp; + nk_size buffer_size; + + NK_ASSERT(b); + NK_ASSERT(size); + if (!b || !size || !b->pool.alloc || !b->pool.free) + return 0; + + buffer_size = b->memory.size; + temp = b->pool.alloc(b->pool.userdata, b->memory.ptr, capacity); + NK_ASSERT(temp); + if (!temp) return 0; + + *size = capacity; + if (temp != b->memory.ptr) { + NK_MEMCPY(temp, b->memory.ptr, buffer_size); + b->pool.free(b->pool.userdata, b->memory.ptr); + } + + if (b->size == buffer_size) { + /* no back buffer so just set correct size */ + b->size = capacity; + return temp; + } else { + /* copy back buffer to the end of the new buffer */ + void *dst, *src; + nk_size back_size; + back_size = buffer_size - b->size; + dst = nk_ptr_add(void, temp, capacity - back_size); + src = nk_ptr_add(void, temp, b->size); + NK_MEMCPY(dst, src, back_size); + b->size = capacity - back_size; + } + return temp; +} +NK_LIB void* +nk_buffer_alloc(struct nk_buffer *b, enum nk_buffer_allocation_type type, + nk_size size, nk_size align) +{ + int full; + nk_size alignment; + void *unaligned; + void *memory; + + NK_ASSERT(b); + NK_ASSERT(size); + if (!b || !size) return 0; + b->needed += size; + + /* calculate total size with needed alignment + size */ + if (type == NK_BUFFER_FRONT) + unaligned = nk_ptr_add(void, b->memory.ptr, b->allocated); + else unaligned = nk_ptr_add(void, b->memory.ptr, b->size - size); + memory = nk_buffer_align(unaligned, align, &alignment, type); + + /* check if buffer has enough memory*/ + if (type == NK_BUFFER_FRONT) + full = ((b->allocated + size + alignment) > b->size); + else full = ((b->size - NK_MIN(b->size,(size + alignment))) <= b->allocated); + + if (full) { + nk_size capacity; + if (b->type != NK_BUFFER_DYNAMIC) + return 0; + NK_ASSERT(b->pool.alloc && b->pool.free); + if (b->type != NK_BUFFER_DYNAMIC || !b->pool.alloc || !b->pool.free) + return 0; + + /* buffer is full so allocate bigger buffer if dynamic */ + capacity = (nk_size)((float)b->memory.size * b->grow_factor); + capacity = NK_MAX(capacity, nk_round_up_pow2((nk_uint)(b->allocated + size))); + b->memory.ptr = nk_buffer_realloc(b, capacity, &b->memory.size); + if (!b->memory.ptr) return 0; + + /* align newly allocated pointer */ + if (type == NK_BUFFER_FRONT) + unaligned = nk_ptr_add(void, b->memory.ptr, b->allocated); + else unaligned = nk_ptr_add(void, b->memory.ptr, b->size - size); + memory = nk_buffer_align(unaligned, align, &alignment, type); + } + if (type == NK_BUFFER_FRONT) + b->allocated += size + alignment; + else b->size -= (size + alignment); + b->needed += alignment; + b->calls++; + return memory; +} +NK_API void +nk_buffer_push(struct nk_buffer *b, enum nk_buffer_allocation_type type, + const void *memory, nk_size size, nk_size align) +{ + void *mem = nk_buffer_alloc(b, type, size, align); + if (!mem) return; + NK_MEMCPY(mem, memory, size); +} +NK_API void +nk_buffer_mark(struct nk_buffer *buffer, enum nk_buffer_allocation_type type) +{ + NK_ASSERT(buffer); + if (!buffer) return; + buffer->marker[type].active = nk_true; + if (type == NK_BUFFER_BACK) + buffer->marker[type].offset = buffer->size; + else buffer->marker[type].offset = buffer->allocated; +} +NK_API void +nk_buffer_reset(struct nk_buffer *buffer, enum nk_buffer_allocation_type type) +{ + NK_ASSERT(buffer); + if (!buffer) return; + if (type == NK_BUFFER_BACK) { + /* reset back buffer either back to marker or empty */ + buffer->needed -= (buffer->memory.size - buffer->marker[type].offset); + if (buffer->marker[type].active) + buffer->size = buffer->marker[type].offset; + else buffer->size = buffer->memory.size; + buffer->marker[type].active = nk_false; + } else { + /* reset front buffer either back to back marker or empty */ + buffer->needed -= (buffer->allocated - buffer->marker[type].offset); + if (buffer->marker[type].active) + buffer->allocated = buffer->marker[type].offset; + else buffer->allocated = 0; + buffer->marker[type].active = nk_false; + } +} +NK_API void +nk_buffer_clear(struct nk_buffer *b) +{ + NK_ASSERT(b); + if (!b) return; + b->allocated = 0; + b->size = b->memory.size; + b->calls = 0; + b->needed = 0; +} +NK_API void +nk_buffer_free(struct nk_buffer *b) +{ + NK_ASSERT(b); + if (!b || !b->memory.ptr) return; + if (b->type == NK_BUFFER_FIXED) return; + if (!b->pool.free) return; + NK_ASSERT(b->pool.free); + b->pool.free(b->pool.userdata, b->memory.ptr); +} +NK_API void +nk_buffer_info(struct nk_memory_status *s, struct nk_buffer *b) +{ + NK_ASSERT(b); + NK_ASSERT(s); + if (!s || !b) return; + s->allocated = b->allocated; + s->size = b->memory.size; + s->needed = b->needed; + s->memory = b->memory.ptr; + s->calls = b->calls; +} +NK_API void* +nk_buffer_memory(struct nk_buffer *buffer) +{ + NK_ASSERT(buffer); + if (!buffer) return 0; + return buffer->memory.ptr; +} +NK_API const void* +nk_buffer_memory_const(const struct nk_buffer *buffer) +{ + NK_ASSERT(buffer); + if (!buffer) return 0; + return buffer->memory.ptr; +} +NK_API nk_size +nk_buffer_total(struct nk_buffer *buffer) +{ + NK_ASSERT(buffer); + if (!buffer) return 0; + return buffer->memory.size; +} + + + + + +/* =============================================================== + * + * STRING + * + * ===============================================================*/ +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_API void +nk_str_init_default(struct nk_str *str) +{ + struct nk_allocator alloc; + alloc.userdata.ptr = 0; + alloc.alloc = nk_malloc; + alloc.free = nk_mfree; + nk_buffer_init(&str->buffer, &alloc, 32); + str->len = 0; +} +#endif + +NK_API void +nk_str_init(struct nk_str *str, const struct nk_allocator *alloc, nk_size size) +{ + nk_buffer_init(&str->buffer, alloc, size); + str->len = 0; +} +NK_API void +nk_str_init_fixed(struct nk_str *str, void *memory, nk_size size) +{ + nk_buffer_init_fixed(&str->buffer, memory, size); + str->len = 0; +} +NK_API int +nk_str_append_text_char(struct nk_str *s, const char *str, int len) +{ + char *mem; + NK_ASSERT(s); + NK_ASSERT(str); + if (!s || !str || !len) return 0; + mem = (char*)nk_buffer_alloc(&s->buffer, NK_BUFFER_FRONT, (nk_size)len * sizeof(char), 0); + if (!mem) return 0; + NK_MEMCPY(mem, str, (nk_size)len * sizeof(char)); + s->len += nk_utf_len(str, len); + return len; +} +NK_API int +nk_str_append_str_char(struct nk_str *s, const char *str) +{ + return nk_str_append_text_char(s, str, nk_strlen(str)); +} +NK_API int +nk_str_append_text_utf8(struct nk_str *str, const char *text, int len) +{ + int i = 0; + int byte_len = 0; + nk_rune unicode; + if (!str || !text || !len) return 0; + for (i = 0; i < len; ++i) + byte_len += nk_utf_decode(text+byte_len, &unicode, 4); + nk_str_append_text_char(str, text, byte_len); + return len; +} +NK_API int +nk_str_append_str_utf8(struct nk_str *str, const char *text) +{ + int runes = 0; + int byte_len = 0; + int num_runes = 0; + int glyph_len = 0; + nk_rune unicode; + if (!str || !text) return 0; + + glyph_len = byte_len = nk_utf_decode(text+byte_len, &unicode, 4); + while (unicode != '\0' && glyph_len) { + glyph_len = nk_utf_decode(text+byte_len, &unicode, 4); + byte_len += glyph_len; + num_runes++; + } + nk_str_append_text_char(str, text, byte_len); + return runes; +} +NK_API int +nk_str_append_text_runes(struct nk_str *str, const nk_rune *text, int len) +{ + int i = 0; + int byte_len = 0; + nk_glyph glyph; + + NK_ASSERT(str); + if (!str || !text || !len) return 0; + for (i = 0; i < len; ++i) { + byte_len = nk_utf_encode(text[i], glyph, NK_UTF_SIZE); + if (!byte_len) break; + nk_str_append_text_char(str, glyph, byte_len); + } + return len; +} +NK_API int +nk_str_append_str_runes(struct nk_str *str, const nk_rune *runes) +{ + int i = 0; + nk_glyph glyph; + int byte_len; + NK_ASSERT(str); + if (!str || !runes) return 0; + while (runes[i] != '\0') { + byte_len = nk_utf_encode(runes[i], glyph, NK_UTF_SIZE); + nk_str_append_text_char(str, glyph, byte_len); + i++; + } + return i; +} +NK_API int +nk_str_insert_at_char(struct nk_str *s, int pos, const char *str, int len) +{ + int i; + void *mem; + char *src; + char *dst; + + int copylen; + NK_ASSERT(s); + NK_ASSERT(str); + NK_ASSERT(len >= 0); + if (!s || !str || !len || (nk_size)pos > s->buffer.allocated) return 0; + if ((s->buffer.allocated + (nk_size)len >= s->buffer.memory.size) && + (s->buffer.type == NK_BUFFER_FIXED)) return 0; + + copylen = (int)s->buffer.allocated - pos; + if (!copylen) { + nk_str_append_text_char(s, str, len); + return 1; + } + mem = nk_buffer_alloc(&s->buffer, NK_BUFFER_FRONT, (nk_size)len * sizeof(char), 0); + if (!mem) return 0; + + /* memmove */ + NK_ASSERT(((int)pos + (int)len + ((int)copylen - 1)) >= 0); + NK_ASSERT(((int)pos + ((int)copylen - 1)) >= 0); + dst = nk_ptr_add(char, s->buffer.memory.ptr, pos + len + (copylen - 1)); + src = nk_ptr_add(char, s->buffer.memory.ptr, pos + (copylen-1)); + for (i = 0; i < copylen; ++i) *dst-- = *src--; + mem = nk_ptr_add(void, s->buffer.memory.ptr, pos); + NK_MEMCPY(mem, str, (nk_size)len * sizeof(char)); + s->len = nk_utf_len((char *)s->buffer.memory.ptr, (int)s->buffer.allocated); + return 1; +} +NK_API int +nk_str_insert_at_rune(struct nk_str *str, int pos, const char *cstr, int len) +{ + int glyph_len; + nk_rune unicode; + const char *begin; + const char *buffer; + + NK_ASSERT(str); + NK_ASSERT(cstr); + NK_ASSERT(len); + if (!str || !cstr || !len) return 0; + begin = nk_str_at_rune(str, pos, &unicode, &glyph_len); + if (!str->len) + return nk_str_append_text_char(str, cstr, len); + buffer = nk_str_get_const(str); + if (!begin) return 0; + return nk_str_insert_at_char(str, (int)(begin - buffer), cstr, len); +} +NK_API int +nk_str_insert_text_char(struct nk_str *str, int pos, const char *text, int len) +{ + return nk_str_insert_text_utf8(str, pos, text, len); +} +NK_API int +nk_str_insert_str_char(struct nk_str *str, int pos, const char *text) +{ + return nk_str_insert_text_utf8(str, pos, text, nk_strlen(text)); +} +NK_API int +nk_str_insert_text_utf8(struct nk_str *str, int pos, const char *text, int len) +{ + int i = 0; + int byte_len = 0; + nk_rune unicode; + + NK_ASSERT(str); + NK_ASSERT(text); + if (!str || !text || !len) return 0; + for (i = 0; i < len; ++i) + byte_len += nk_utf_decode(text+byte_len, &unicode, 4); + nk_str_insert_at_rune(str, pos, text, byte_len); + return len; +} +NK_API int +nk_str_insert_str_utf8(struct nk_str *str, int pos, const char *text) +{ + int runes = 0; + int byte_len = 0; + int num_runes = 0; + int glyph_len = 0; + nk_rune unicode; + if (!str || !text) return 0; + + glyph_len = byte_len = nk_utf_decode(text+byte_len, &unicode, 4); + while (unicode != '\0' && glyph_len) { + glyph_len = nk_utf_decode(text+byte_len, &unicode, 4); + byte_len += glyph_len; + num_runes++; + } + nk_str_insert_at_rune(str, pos, text, byte_len); + return runes; +} +NK_API int +nk_str_insert_text_runes(struct nk_str *str, int pos, const nk_rune *runes, int len) +{ + int i = 0; + int byte_len = 0; + nk_glyph glyph; + + NK_ASSERT(str); + if (!str || !runes || !len) return 0; + for (i = 0; i < len; ++i) { + byte_len = nk_utf_encode(runes[i], glyph, NK_UTF_SIZE); + if (!byte_len) break; + nk_str_insert_at_rune(str, pos+i, glyph, byte_len); + } + return len; +} +NK_API int +nk_str_insert_str_runes(struct nk_str *str, int pos, const nk_rune *runes) +{ + int i = 0; + nk_glyph glyph; + int byte_len; + NK_ASSERT(str); + if (!str || !runes) return 0; + while (runes[i] != '\0') { + byte_len = nk_utf_encode(runes[i], glyph, NK_UTF_SIZE); + nk_str_insert_at_rune(str, pos+i, glyph, byte_len); + i++; + } + return i; +} +NK_API void +nk_str_remove_chars(struct nk_str *s, int len) +{ + NK_ASSERT(s); + NK_ASSERT(len >= 0); + if (!s || len < 0 || (nk_size)len > s->buffer.allocated) return; + NK_ASSERT(((int)s->buffer.allocated - (int)len) >= 0); + s->buffer.allocated -= (nk_size)len; + s->len = nk_utf_len((char *)s->buffer.memory.ptr, (int)s->buffer.allocated); +} +NK_API void +nk_str_remove_runes(struct nk_str *str, int len) +{ + int index; + const char *begin; + const char *end; + nk_rune unicode; + + NK_ASSERT(str); + NK_ASSERT(len >= 0); + if (!str || len < 0) return; + if (len >= str->len) { + str->len = 0; + return; + } + + index = str->len - len; + begin = nk_str_at_rune(str, index, &unicode, &len); + end = (const char*)str->buffer.memory.ptr + str->buffer.allocated; + nk_str_remove_chars(str, (int)(end-begin)+1); +} +NK_API void +nk_str_delete_chars(struct nk_str *s, int pos, int len) +{ + NK_ASSERT(s); + if (!s || !len || (nk_size)pos > s->buffer.allocated || + (nk_size)(pos + len) > s->buffer.allocated) return; + + if ((nk_size)(pos + len) < s->buffer.allocated) { + /* memmove */ + char *dst = nk_ptr_add(char, s->buffer.memory.ptr, pos); + char *src = nk_ptr_add(char, s->buffer.memory.ptr, pos + len); + NK_MEMCPY(dst, src, s->buffer.allocated - (nk_size)(pos + len)); + NK_ASSERT(((int)s->buffer.allocated - (int)len) >= 0); + s->buffer.allocated -= (nk_size)len; + } else nk_str_remove_chars(s, len); + s->len = nk_utf_len((char *)s->buffer.memory.ptr, (int)s->buffer.allocated); +} +NK_API void +nk_str_delete_runes(struct nk_str *s, int pos, int len) +{ + char *temp; + nk_rune unicode; + char *begin; + char *end; + int unused; + + NK_ASSERT(s); + NK_ASSERT(s->len >= pos + len); + if (s->len < pos + len) + len = NK_CLAMP(0, (s->len - pos), s->len); + if (!len) return; + + temp = (char *)s->buffer.memory.ptr; + begin = nk_str_at_rune(s, pos, &unicode, &unused); + if (!begin) return; + s->buffer.memory.ptr = begin; + end = nk_str_at_rune(s, len, &unicode, &unused); + s->buffer.memory.ptr = temp; + if (!end) return; + nk_str_delete_chars(s, (int)(begin - temp), (int)(end - begin)); +} +NK_API char* +nk_str_at_char(struct nk_str *s, int pos) +{ + NK_ASSERT(s); + if (!s || pos > (int)s->buffer.allocated) return 0; + return nk_ptr_add(char, s->buffer.memory.ptr, pos); +} +NK_API char* +nk_str_at_rune(struct nk_str *str, int pos, nk_rune *unicode, int *len) +{ + int i = 0; + int src_len = 0; + int glyph_len = 0; + char *text; + int text_len; + + NK_ASSERT(str); + NK_ASSERT(unicode); + NK_ASSERT(len); + + if (!str || !unicode || !len) return 0; + if (pos < 0) { + *unicode = 0; + *len = 0; + return 0; + } + + text = (char*)str->buffer.memory.ptr; + text_len = (int)str->buffer.allocated; + glyph_len = nk_utf_decode(text, unicode, text_len); + while (glyph_len) { + if (i == pos) { + *len = glyph_len; + break; + } + + i++; + src_len = src_len + glyph_len; + glyph_len = nk_utf_decode(text + src_len, unicode, text_len - src_len); + } + if (i != pos) return 0; + return text + src_len; +} +NK_API const char* +nk_str_at_char_const(const struct nk_str *s, int pos) +{ + NK_ASSERT(s); + if (!s || pos > (int)s->buffer.allocated) return 0; + return nk_ptr_add(char, s->buffer.memory.ptr, pos); +} +NK_API const char* +nk_str_at_const(const struct nk_str *str, int pos, nk_rune *unicode, int *len) +{ + int i = 0; + int src_len = 0; + int glyph_len = 0; + char *text; + int text_len; + + NK_ASSERT(str); + NK_ASSERT(unicode); + NK_ASSERT(len); + + if (!str || !unicode || !len) return 0; + if (pos < 0) { + *unicode = 0; + *len = 0; + return 0; + } + + text = (char*)str->buffer.memory.ptr; + text_len = (int)str->buffer.allocated; + glyph_len = nk_utf_decode(text, unicode, text_len); + while (glyph_len) { + if (i == pos) { + *len = glyph_len; + break; + } + + i++; + src_len = src_len + glyph_len; + glyph_len = nk_utf_decode(text + src_len, unicode, text_len - src_len); + } + if (i != pos) return 0; + return text + src_len; +} +NK_API nk_rune +nk_str_rune_at(const struct nk_str *str, int pos) +{ + int len; + nk_rune unicode = 0; + nk_str_at_const(str, pos, &unicode, &len); + return unicode; +} +NK_API char* +nk_str_get(struct nk_str *s) +{ + NK_ASSERT(s); + if (!s || !s->len || !s->buffer.allocated) return 0; + return (char*)s->buffer.memory.ptr; +} +NK_API const char* +nk_str_get_const(const struct nk_str *s) +{ + NK_ASSERT(s); + if (!s || !s->len || !s->buffer.allocated) return 0; + return (const char*)s->buffer.memory.ptr; +} +NK_API int +nk_str_len(struct nk_str *s) +{ + NK_ASSERT(s); + if (!s || !s->len || !s->buffer.allocated) return 0; + return s->len; +} +NK_API int +nk_str_len_char(struct nk_str *s) +{ + NK_ASSERT(s); + if (!s || !s->len || !s->buffer.allocated) return 0; + return (int)s->buffer.allocated; +} +NK_API void +nk_str_clear(struct nk_str *str) +{ + NK_ASSERT(str); + nk_buffer_clear(&str->buffer); + str->len = 0; +} +NK_API void +nk_str_free(struct nk_str *str) +{ + NK_ASSERT(str); + nk_buffer_free(&str->buffer); + str->len = 0; +} + + + + + +/* ============================================================== + * + * DRAW + * + * ===============================================================*/ +NK_LIB void +nk_command_buffer_init(struct nk_command_buffer *cb, + struct nk_buffer *b, enum nk_command_clipping clip) +{ + NK_ASSERT(cb); + NK_ASSERT(b); + if (!cb || !b) return; + cb->base = b; + cb->use_clipping = (int)clip; + cb->begin = b->allocated; + cb->end = b->allocated; + cb->last = b->allocated; +} +NK_LIB void +nk_command_buffer_reset(struct nk_command_buffer *b) +{ + NK_ASSERT(b); + if (!b) return; + b->begin = 0; + b->end = 0; + b->last = 0; + b->clip = nk_null_rect; +#ifdef NK_INCLUDE_COMMAND_USERDATA + b->userdata.ptr = 0; +#endif +} +NK_LIB void* +nk_command_buffer_push(struct nk_command_buffer* b, + enum nk_command_type t, nk_size size) +{ + NK_STORAGE const nk_size align = NK_ALIGNOF(struct nk_command); + struct nk_command *cmd; + nk_size alignment; + void *unaligned; + void *memory; + + NK_ASSERT(b); + NK_ASSERT(b->base); + if (!b) return 0; + cmd = (struct nk_command*)nk_buffer_alloc(b->base,NK_BUFFER_FRONT,size,align); + if (!cmd) return 0; + + /* make sure the offset to the next command is aligned */ + b->last = (nk_size)((nk_byte*)cmd - (nk_byte*)b->base->memory.ptr); + unaligned = (nk_byte*)cmd + size; + memory = NK_ALIGN_PTR(unaligned, align); + alignment = (nk_size)((nk_byte*)memory - (nk_byte*)unaligned); +#ifdef NK_ZERO_COMMAND_MEMORY + NK_MEMSET(cmd, 0, size + alignment); +#endif + + cmd->type = t; + cmd->next = b->base->allocated + alignment; +#ifdef NK_INCLUDE_COMMAND_USERDATA + cmd->userdata = b->userdata; +#endif + b->end = cmd->next; + return cmd; +} +NK_API void +nk_push_scissor(struct nk_command_buffer *b, struct nk_rect r) +{ + struct nk_command_scissor *cmd; + NK_ASSERT(b); + if (!b) return; + + b->clip.x = r.x; + b->clip.y = r.y; + b->clip.w = r.w; + b->clip.h = r.h; + cmd = (struct nk_command_scissor*) + nk_command_buffer_push(b, NK_COMMAND_SCISSOR, sizeof(*cmd)); + + if (!cmd) return; + cmd->x = (short)r.x; + cmd->y = (short)r.y; + cmd->w = (unsigned short)NK_MAX(0, r.w); + cmd->h = (unsigned short)NK_MAX(0, r.h); +} +NK_API void +nk_stroke_line(struct nk_command_buffer *b, float x0, float y0, + float x1, float y1, float line_thickness, struct nk_color c) +{ + struct nk_command_line *cmd; + NK_ASSERT(b); + if (!b || line_thickness <= 0) return; + cmd = (struct nk_command_line*) + nk_command_buffer_push(b, NK_COMMAND_LINE, sizeof(*cmd)); + if (!cmd) return; + cmd->line_thickness = (unsigned short)line_thickness; + cmd->begin.x = (short)x0; + cmd->begin.y = (short)y0; + cmd->end.x = (short)x1; + cmd->end.y = (short)y1; + cmd->color = c; +} +NK_API void +nk_stroke_curve(struct nk_command_buffer *b, float ax, float ay, + float ctrl0x, float ctrl0y, float ctrl1x, float ctrl1y, + float bx, float by, float line_thickness, struct nk_color col) +{ + struct nk_command_curve *cmd; + NK_ASSERT(b); + if (!b || col.a == 0 || line_thickness <= 0) return; + + cmd = (struct nk_command_curve*) + nk_command_buffer_push(b, NK_COMMAND_CURVE, sizeof(*cmd)); + if (!cmd) return; + cmd->line_thickness = (unsigned short)line_thickness; + cmd->begin.x = (short)ax; + cmd->begin.y = (short)ay; + cmd->ctrl[0].x = (short)ctrl0x; + cmd->ctrl[0].y = (short)ctrl0y; + cmd->ctrl[1].x = (short)ctrl1x; + cmd->ctrl[1].y = (short)ctrl1y; + cmd->end.x = (short)bx; + cmd->end.y = (short)by; + cmd->color = col; +} +NK_API void +nk_stroke_rect(struct nk_command_buffer *b, struct nk_rect rect, + float rounding, float line_thickness, struct nk_color c) +{ + struct nk_command_rect *cmd; + NK_ASSERT(b); + if (!b || c.a == 0 || rect.w == 0 || rect.h == 0 || line_thickness <= 0) return; + if (b->use_clipping) { + const struct nk_rect *clip = &b->clip; + if (!NK_INTERSECT(rect.x, rect.y, rect.w, rect.h, + clip->x, clip->y, clip->w, clip->h)) return; + } + cmd = (struct nk_command_rect*) + nk_command_buffer_push(b, NK_COMMAND_RECT, sizeof(*cmd)); + if (!cmd) return; + cmd->rounding = (unsigned short)rounding; + cmd->line_thickness = (unsigned short)line_thickness; + cmd->x = (short)rect.x; + cmd->y = (short)rect.y; + cmd->w = (unsigned short)NK_MAX(0, rect.w); + cmd->h = (unsigned short)NK_MAX(0, rect.h); + cmd->color = c; +} +NK_API void +nk_fill_rect(struct nk_command_buffer *b, struct nk_rect rect, + float rounding, struct nk_color c) +{ + struct nk_command_rect_filled *cmd; + NK_ASSERT(b); + if (!b || c.a == 0 || rect.w == 0 || rect.h == 0) return; + if (b->use_clipping) { + const struct nk_rect *clip = &b->clip; + if (!NK_INTERSECT(rect.x, rect.y, rect.w, rect.h, + clip->x, clip->y, clip->w, clip->h)) return; + } + + cmd = (struct nk_command_rect_filled*) + nk_command_buffer_push(b, NK_COMMAND_RECT_FILLED, sizeof(*cmd)); + if (!cmd) return; + cmd->rounding = (unsigned short)rounding; + cmd->x = (short)rect.x; + cmd->y = (short)rect.y; + cmd->w = (unsigned short)NK_MAX(0, rect.w); + cmd->h = (unsigned short)NK_MAX(0, rect.h); + cmd->color = c; +} +NK_API void +nk_fill_rect_multi_color(struct nk_command_buffer *b, struct nk_rect rect, + struct nk_color left, struct nk_color top, struct nk_color right, + struct nk_color bottom) +{ + struct nk_command_rect_multi_color *cmd; + NK_ASSERT(b); + if (!b || rect.w == 0 || rect.h == 0) return; + if (b->use_clipping) { + const struct nk_rect *clip = &b->clip; + if (!NK_INTERSECT(rect.x, rect.y, rect.w, rect.h, + clip->x, clip->y, clip->w, clip->h)) return; + } + + cmd = (struct nk_command_rect_multi_color*) + nk_command_buffer_push(b, NK_COMMAND_RECT_MULTI_COLOR, sizeof(*cmd)); + if (!cmd) return; + cmd->x = (short)rect.x; + cmd->y = (short)rect.y; + cmd->w = (unsigned short)NK_MAX(0, rect.w); + cmd->h = (unsigned short)NK_MAX(0, rect.h); + cmd->left = left; + cmd->top = top; + cmd->right = right; + cmd->bottom = bottom; +} +NK_API void +nk_stroke_circle(struct nk_command_buffer *b, struct nk_rect r, + float line_thickness, struct nk_color c) +{ + struct nk_command_circle *cmd; + if (!b || r.w == 0 || r.h == 0 || line_thickness <= 0) return; + if (b->use_clipping) { + const struct nk_rect *clip = &b->clip; + if (!NK_INTERSECT(r.x, r.y, r.w, r.h, clip->x, clip->y, clip->w, clip->h)) + return; + } + + cmd = (struct nk_command_circle*) + nk_command_buffer_push(b, NK_COMMAND_CIRCLE, sizeof(*cmd)); + if (!cmd) return; + cmd->line_thickness = (unsigned short)line_thickness; + cmd->x = (short)r.x; + cmd->y = (short)r.y; + cmd->w = (unsigned short)NK_MAX(r.w, 0); + cmd->h = (unsigned short)NK_MAX(r.h, 0); + cmd->color = c; +} +NK_API void +nk_fill_circle(struct nk_command_buffer *b, struct nk_rect r, struct nk_color c) +{ + struct nk_command_circle_filled *cmd; + NK_ASSERT(b); + if (!b || c.a == 0 || r.w == 0 || r.h == 0) return; + if (b->use_clipping) { + const struct nk_rect *clip = &b->clip; + if (!NK_INTERSECT(r.x, r.y, r.w, r.h, clip->x, clip->y, clip->w, clip->h)) + return; + } + + cmd = (struct nk_command_circle_filled*) + nk_command_buffer_push(b, NK_COMMAND_CIRCLE_FILLED, sizeof(*cmd)); + if (!cmd) return; + cmd->x = (short)r.x; + cmd->y = (short)r.y; + cmd->w = (unsigned short)NK_MAX(r.w, 0); + cmd->h = (unsigned short)NK_MAX(r.h, 0); + cmd->color = c; +} +NK_API void +nk_stroke_arc(struct nk_command_buffer *b, float cx, float cy, float radius, + float a_min, float a_max, float line_thickness, struct nk_color c) +{ + struct nk_command_arc *cmd; + if (!b || c.a == 0 || line_thickness <= 0) return; + cmd = (struct nk_command_arc*) + nk_command_buffer_push(b, NK_COMMAND_ARC, sizeof(*cmd)); + if (!cmd) return; + cmd->line_thickness = (unsigned short)line_thickness; + cmd->cx = (short)cx; + cmd->cy = (short)cy; + cmd->r = (unsigned short)radius; + cmd->a[0] = a_min; + cmd->a[1] = a_max; + cmd->color = c; +} +NK_API void +nk_fill_arc(struct nk_command_buffer *b, float cx, float cy, float radius, + float a_min, float a_max, struct nk_color c) +{ + struct nk_command_arc_filled *cmd; + NK_ASSERT(b); + if (!b || c.a == 0) return; + cmd = (struct nk_command_arc_filled*) + nk_command_buffer_push(b, NK_COMMAND_ARC_FILLED, sizeof(*cmd)); + if (!cmd) return; + cmd->cx = (short)cx; + cmd->cy = (short)cy; + cmd->r = (unsigned short)radius; + cmd->a[0] = a_min; + cmd->a[1] = a_max; + cmd->color = c; +} +NK_API void +nk_stroke_triangle(struct nk_command_buffer *b, float x0, float y0, float x1, + float y1, float x2, float y2, float line_thickness, struct nk_color c) +{ + struct nk_command_triangle *cmd; + NK_ASSERT(b); + if (!b || c.a == 0 || line_thickness <= 0) return; + if (b->use_clipping) { + const struct nk_rect *clip = &b->clip; + if (!NK_INBOX(x0, y0, clip->x, clip->y, clip->w, clip->h) && + !NK_INBOX(x1, y1, clip->x, clip->y, clip->w, clip->h) && + !NK_INBOX(x2, y2, clip->x, clip->y, clip->w, clip->h)) + return; + } + + cmd = (struct nk_command_triangle*) + nk_command_buffer_push(b, NK_COMMAND_TRIANGLE, sizeof(*cmd)); + if (!cmd) return; + cmd->line_thickness = (unsigned short)line_thickness; + cmd->a.x = (short)x0; + cmd->a.y = (short)y0; + cmd->b.x = (short)x1; + cmd->b.y = (short)y1; + cmd->c.x = (short)x2; + cmd->c.y = (short)y2; + cmd->color = c; +} +NK_API void +nk_fill_triangle(struct nk_command_buffer *b, float x0, float y0, float x1, + float y1, float x2, float y2, struct nk_color c) +{ + struct nk_command_triangle_filled *cmd; + NK_ASSERT(b); + if (!b || c.a == 0) return; + if (!b) return; + if (b->use_clipping) { + const struct nk_rect *clip = &b->clip; + if (!NK_INBOX(x0, y0, clip->x, clip->y, clip->w, clip->h) && + !NK_INBOX(x1, y1, clip->x, clip->y, clip->w, clip->h) && + !NK_INBOX(x2, y2, clip->x, clip->y, clip->w, clip->h)) + return; + } + + cmd = (struct nk_command_triangle_filled*) + nk_command_buffer_push(b, NK_COMMAND_TRIANGLE_FILLED, sizeof(*cmd)); + if (!cmd) return; + cmd->a.x = (short)x0; + cmd->a.y = (short)y0; + cmd->b.x = (short)x1; + cmd->b.y = (short)y1; + cmd->c.x = (short)x2; + cmd->c.y = (short)y2; + cmd->color = c; +} +NK_API void +nk_stroke_polygon(struct nk_command_buffer *b, float *points, int point_count, + float line_thickness, struct nk_color col) +{ + int i; + nk_size size = 0; + struct nk_command_polygon *cmd; + + NK_ASSERT(b); + if (!b || col.a == 0 || line_thickness <= 0) return; + size = sizeof(*cmd) + sizeof(short) * 2 * (nk_size)point_count; + cmd = (struct nk_command_polygon*) nk_command_buffer_push(b, NK_COMMAND_POLYGON, size); + if (!cmd) return; + cmd->color = col; + cmd->line_thickness = (unsigned short)line_thickness; + cmd->point_count = (unsigned short)point_count; + for (i = 0; i < point_count; ++i) { + cmd->points[i].x = (short)points[i*2]; + cmd->points[i].y = (short)points[i*2+1]; + } +} +NK_API void +nk_fill_polygon(struct nk_command_buffer *b, float *points, int point_count, + struct nk_color col) +{ + int i; + nk_size size = 0; + struct nk_command_polygon_filled *cmd; + + NK_ASSERT(b); + if (!b || col.a == 0) return; + size = sizeof(*cmd) + sizeof(short) * 2 * (nk_size)point_count; + cmd = (struct nk_command_polygon_filled*) + nk_command_buffer_push(b, NK_COMMAND_POLYGON_FILLED, size); + if (!cmd) return; + cmd->color = col; + cmd->point_count = (unsigned short)point_count; + for (i = 0; i < point_count; ++i) { + cmd->points[i].x = (short)points[i*2+0]; + cmd->points[i].y = (short)points[i*2+1]; + } +} +NK_API void +nk_stroke_polyline(struct nk_command_buffer *b, float *points, int point_count, + float line_thickness, struct nk_color col) +{ + int i; + nk_size size = 0; + struct nk_command_polyline *cmd; + + NK_ASSERT(b); + if (!b || col.a == 0 || line_thickness <= 0) return; + size = sizeof(*cmd) + sizeof(short) * 2 * (nk_size)point_count; + cmd = (struct nk_command_polyline*) nk_command_buffer_push(b, NK_COMMAND_POLYLINE, size); + if (!cmd) return; + cmd->color = col; + cmd->point_count = (unsigned short)point_count; + cmd->line_thickness = (unsigned short)line_thickness; + for (i = 0; i < point_count; ++i) { + cmd->points[i].x = (short)points[i*2]; + cmd->points[i].y = (short)points[i*2+1]; + } +} +NK_API void +nk_draw_image(struct nk_command_buffer *b, struct nk_rect r, + const struct nk_image *img, struct nk_color col) +{ + struct nk_command_image *cmd; + NK_ASSERT(b); + if (!b) return; + if (b->use_clipping) { + const struct nk_rect *c = &b->clip; + if (c->w == 0 || c->h == 0 || !NK_INTERSECT(r.x, r.y, r.w, r.h, c->x, c->y, c->w, c->h)) + return; + } + + cmd = (struct nk_command_image*) + nk_command_buffer_push(b, NK_COMMAND_IMAGE, sizeof(*cmd)); + if (!cmd) return; + cmd->x = (short)r.x; + cmd->y = (short)r.y; + cmd->w = (unsigned short)NK_MAX(0, r.w); + cmd->h = (unsigned short)NK_MAX(0, r.h); + cmd->img = *img; + cmd->col = col; +} +NK_API void +nk_push_custom(struct nk_command_buffer *b, struct nk_rect r, + nk_command_custom_callback cb, nk_handle usr) +{ + struct nk_command_custom *cmd; + NK_ASSERT(b); + if (!b) return; + if (b->use_clipping) { + const struct nk_rect *c = &b->clip; + if (c->w == 0 || c->h == 0 || !NK_INTERSECT(r.x, r.y, r.w, r.h, c->x, c->y, c->w, c->h)) + return; + } + + cmd = (struct nk_command_custom*) + nk_command_buffer_push(b, NK_COMMAND_CUSTOM, sizeof(*cmd)); + if (!cmd) return; + cmd->x = (short)r.x; + cmd->y = (short)r.y; + cmd->w = (unsigned short)NK_MAX(0, r.w); + cmd->h = (unsigned short)NK_MAX(0, r.h); + cmd->callback_data = usr; + cmd->callback = cb; +} +NK_API void +nk_draw_text(struct nk_command_buffer *b, struct nk_rect r, + const char *string, int length, const struct nk_user_font *font, + struct nk_color bg, struct nk_color fg) +{ + float text_width = 0; + struct nk_command_text *cmd; + + NK_ASSERT(b); + NK_ASSERT(font); + if (!b || !string || !length || (bg.a == 0 && fg.a == 0)) return; + if (b->use_clipping) { + const struct nk_rect *c = &b->clip; + if (c->w == 0 || c->h == 0 || !NK_INTERSECT(r.x, r.y, r.w, r.h, c->x, c->y, c->w, c->h)) + return; + } + + /* make sure text fits inside bounds */ + text_width = font->width(font->userdata, font->height, string, length); + if (text_width > r.w){ + int glyphs = 0; + float txt_width = (float)text_width; + length = nk_text_clamp(font, string, length, r.w, &glyphs, &txt_width, 0,0); + } + + if (!length) return; + cmd = (struct nk_command_text*) + nk_command_buffer_push(b, NK_COMMAND_TEXT, sizeof(*cmd) + (nk_size)(length + 1)); + if (!cmd) return; + cmd->x = (short)r.x; + cmd->y = (short)r.y; + cmd->w = (unsigned short)r.w; + cmd->h = (unsigned short)r.h; + cmd->background = bg; + cmd->foreground = fg; + cmd->font = font; + cmd->length = length; + cmd->height = font->height; + NK_MEMCPY(cmd->string, string, (nk_size)length); + cmd->string[length] = '\0'; +} + + + + + +/* =============================================================== + * + * VERTEX + * + * ===============================================================*/ +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT +NK_API void +nk_draw_list_init(struct nk_draw_list *list) +{ + nk_size i = 0; + NK_ASSERT(list); + if (!list) return; + nk_zero(list, sizeof(*list)); + for (i = 0; i < NK_LEN(list->circle_vtx); ++i) { + const float a = ((float)i / (float)NK_LEN(list->circle_vtx)) * 2 * NK_PI; + list->circle_vtx[i].x = (float)NK_COS(a); + list->circle_vtx[i].y = (float)NK_SIN(a); + } +} +NK_API void +nk_draw_list_setup(struct nk_draw_list *canvas, const struct nk_convert_config *config, + struct nk_buffer *cmds, struct nk_buffer *vertices, struct nk_buffer *elements, + enum nk_anti_aliasing line_aa, enum nk_anti_aliasing shape_aa) +{ + NK_ASSERT(canvas); + NK_ASSERT(config); + NK_ASSERT(cmds); + NK_ASSERT(vertices); + NK_ASSERT(elements); + if (!canvas || !config || !cmds || !vertices || !elements) + return; + + canvas->buffer = cmds; + canvas->config = *config; + canvas->elements = elements; + canvas->vertices = vertices; + canvas->line_AA = line_aa; + canvas->shape_AA = shape_aa; + canvas->clip_rect = nk_null_rect; + + canvas->cmd_offset = 0; + canvas->element_count = 0; + canvas->vertex_count = 0; + canvas->cmd_offset = 0; + canvas->cmd_count = 0; + canvas->path_count = 0; +} +NK_API const struct nk_draw_command* +nk__draw_list_begin(const struct nk_draw_list *canvas, const struct nk_buffer *buffer) +{ + nk_byte *memory; + nk_size offset; + const struct nk_draw_command *cmd; + + NK_ASSERT(buffer); + if (!buffer || !buffer->size || !canvas->cmd_count) + return 0; + + memory = (nk_byte*)buffer->memory.ptr; + offset = buffer->memory.size - canvas->cmd_offset; + cmd = nk_ptr_add(const struct nk_draw_command, memory, offset); + return cmd; +} +NK_API const struct nk_draw_command* +nk__draw_list_end(const struct nk_draw_list *canvas, const struct nk_buffer *buffer) +{ + nk_size size; + nk_size offset; + nk_byte *memory; + const struct nk_draw_command *end; + + NK_ASSERT(buffer); + NK_ASSERT(canvas); + if (!buffer || !canvas) + return 0; + + memory = (nk_byte*)buffer->memory.ptr; + size = buffer->memory.size; + offset = size - canvas->cmd_offset; + end = nk_ptr_add(const struct nk_draw_command, memory, offset); + end -= (canvas->cmd_count-1); + return end; +} +NK_API const struct nk_draw_command* +nk__draw_list_next(const struct nk_draw_command *cmd, + const struct nk_buffer *buffer, const struct nk_draw_list *canvas) +{ + const struct nk_draw_command *end; + NK_ASSERT(buffer); + NK_ASSERT(canvas); + if (!cmd || !buffer || !canvas) + return 0; + + end = nk__draw_list_end(canvas, buffer); + if (cmd <= end) return 0; + return (cmd-1); +} +NK_INTERN struct nk_vec2* +nk_draw_list_alloc_path(struct nk_draw_list *list, int count) +{ + struct nk_vec2 *points; + NK_STORAGE const nk_size point_align = NK_ALIGNOF(struct nk_vec2); + NK_STORAGE const nk_size point_size = sizeof(struct nk_vec2); + points = (struct nk_vec2*) + nk_buffer_alloc(list->buffer, NK_BUFFER_FRONT, + point_size * (nk_size)count, point_align); + + if (!points) return 0; + if (!list->path_offset) { + void *memory = nk_buffer_memory(list->buffer); + list->path_offset = (unsigned int)((nk_byte*)points - (nk_byte*)memory); + } + list->path_count += (unsigned int)count; + return points; +} +NK_INTERN struct nk_vec2 +nk_draw_list_path_last(struct nk_draw_list *list) +{ + void *memory; + struct nk_vec2 *point; + NK_ASSERT(list->path_count); + memory = nk_buffer_memory(list->buffer); + point = nk_ptr_add(struct nk_vec2, memory, list->path_offset); + point += (list->path_count-1); + return *point; +} +NK_INTERN struct nk_draw_command* +nk_draw_list_push_command(struct nk_draw_list *list, struct nk_rect clip, + nk_handle texture) +{ + NK_STORAGE const nk_size cmd_align = NK_ALIGNOF(struct nk_draw_command); + NK_STORAGE const nk_size cmd_size = sizeof(struct nk_draw_command); + struct nk_draw_command *cmd; + + NK_ASSERT(list); + cmd = (struct nk_draw_command*) + nk_buffer_alloc(list->buffer, NK_BUFFER_BACK, cmd_size, cmd_align); + + if (!cmd) return 0; + if (!list->cmd_count) { + nk_byte *memory = (nk_byte*)nk_buffer_memory(list->buffer); + nk_size total = nk_buffer_total(list->buffer); + memory = nk_ptr_add(nk_byte, memory, total); + list->cmd_offset = (nk_size)(memory - (nk_byte*)cmd); + } + + cmd->elem_count = 0; + cmd->clip_rect = clip; + cmd->texture = texture; +#ifdef NK_INCLUDE_COMMAND_USERDATA + cmd->userdata = list->userdata; +#endif + + list->cmd_count++; + list->clip_rect = clip; + return cmd; +} +NK_INTERN struct nk_draw_command* +nk_draw_list_command_last(struct nk_draw_list *list) +{ + void *memory; + nk_size size; + struct nk_draw_command *cmd; + NK_ASSERT(list->cmd_count); + + memory = nk_buffer_memory(list->buffer); + size = nk_buffer_total(list->buffer); + cmd = nk_ptr_add(struct nk_draw_command, memory, size - list->cmd_offset); + return (cmd - (list->cmd_count-1)); +} +NK_INTERN void +nk_draw_list_add_clip(struct nk_draw_list *list, struct nk_rect rect) +{ + NK_ASSERT(list); + if (!list) return; + if (!list->cmd_count) { + nk_draw_list_push_command(list, rect, list->config.null.texture); + } else { + struct nk_draw_command *prev = nk_draw_list_command_last(list); + if (prev->elem_count == 0) + prev->clip_rect = rect; + nk_draw_list_push_command(list, rect, prev->texture); + } +} +NK_INTERN void +nk_draw_list_push_image(struct nk_draw_list *list, nk_handle texture) +{ + NK_ASSERT(list); + if (!list) return; + if (!list->cmd_count) { + nk_draw_list_push_command(list, nk_null_rect, texture); + } else { + struct nk_draw_command *prev = nk_draw_list_command_last(list); + if (prev->elem_count == 0) { + prev->texture = texture; + #ifdef NK_INCLUDE_COMMAND_USERDATA + prev->userdata = list->userdata; + #endif + } else if (prev->texture.id != texture.id + #ifdef NK_INCLUDE_COMMAND_USERDATA + || prev->userdata.id != list->userdata.id + #endif + ) nk_draw_list_push_command(list, prev->clip_rect, texture); + } +} +#ifdef NK_INCLUDE_COMMAND_USERDATA +NK_API void +nk_draw_list_push_userdata(struct nk_draw_list *list, nk_handle userdata) +{ + list->userdata = userdata; +} +#endif +NK_INTERN void* +nk_draw_list_alloc_vertices(struct nk_draw_list *list, nk_size count) +{ + void *vtx; + NK_ASSERT(list); + if (!list) return 0; + vtx = nk_buffer_alloc(list->vertices, NK_BUFFER_FRONT, + list->config.vertex_size*count, list->config.vertex_alignment); + if (!vtx) return 0; + list->vertex_count += (unsigned int)count; + + /* This assert triggers because your are drawing a lot of stuff and nuklear + * defined `nk_draw_index` as `nk_ushort` to safe space be default. + * + * So you reached the maximum number of indicies or rather vertexes. + * To solve this issue please change typdef `nk_draw_index` to `nk_uint` + * and don't forget to specify the new element size in your drawing + * backend (OpenGL, DirectX, ...). For example in OpenGL for `glDrawElements` + * instead of specifing `GL_UNSIGNED_SHORT` you have to define `GL_UNSIGNED_INT`. + * Sorry for the inconvenience. */ + if(sizeof(nk_draw_index)==2) NK_ASSERT((list->vertex_count < NK_USHORT_MAX && + "To many verticies for 16-bit vertex indicies. Please read comment above on how to solve this problem")); + return vtx; +} +NK_INTERN nk_draw_index* +nk_draw_list_alloc_elements(struct nk_draw_list *list, nk_size count) +{ + nk_draw_index *ids; + struct nk_draw_command *cmd; + NK_STORAGE const nk_size elem_align = NK_ALIGNOF(nk_draw_index); + NK_STORAGE const nk_size elem_size = sizeof(nk_draw_index); + NK_ASSERT(list); + if (!list) return 0; + + ids = (nk_draw_index*) + nk_buffer_alloc(list->elements, NK_BUFFER_FRONT, elem_size*count, elem_align); + if (!ids) return 0; + cmd = nk_draw_list_command_last(list); + list->element_count += (unsigned int)count; + cmd->elem_count += (unsigned int)count; + return ids; +} +NK_INTERN int +nk_draw_vertex_layout_element_is_end_of_layout( + const struct nk_draw_vertex_layout_element *element) +{ + return (element->attribute == NK_VERTEX_ATTRIBUTE_COUNT || + element->format == NK_FORMAT_COUNT); +} +NK_INTERN void +nk_draw_vertex_color(void *attr, const float *vals, + enum nk_draw_vertex_layout_format format) +{ + /* if this triggers you tried to provide a value format for a color */ + float val[4]; + NK_ASSERT(format >= NK_FORMAT_COLOR_BEGIN); + NK_ASSERT(format <= NK_FORMAT_COLOR_END); + if (format < NK_FORMAT_COLOR_BEGIN || format > NK_FORMAT_COLOR_END) return; + + val[0] = NK_SATURATE(vals[0]); + val[1] = NK_SATURATE(vals[1]); + val[2] = NK_SATURATE(vals[2]); + val[3] = NK_SATURATE(vals[3]); + + switch (format) { + default: NK_ASSERT(0 && "Invalid vertex layout color format"); break; + case NK_FORMAT_R8G8B8A8: + case NK_FORMAT_R8G8B8: { + struct nk_color col = nk_rgba_fv(val); + NK_MEMCPY(attr, &col.r, sizeof(col)); + } break; + case NK_FORMAT_B8G8R8A8: { + struct nk_color col = nk_rgba_fv(val); + struct nk_color bgra = nk_rgba(col.b, col.g, col.r, col.a); + NK_MEMCPY(attr, &bgra, sizeof(bgra)); + } break; + case NK_FORMAT_R16G15B16: { + nk_ushort col[3]; + col[0] = (nk_ushort)(val[0]*(float)NK_USHORT_MAX); + col[1] = (nk_ushort)(val[1]*(float)NK_USHORT_MAX); + col[2] = (nk_ushort)(val[2]*(float)NK_USHORT_MAX); + NK_MEMCPY(attr, col, sizeof(col)); + } break; + case NK_FORMAT_R16G15B16A16: { + nk_ushort col[4]; + col[0] = (nk_ushort)(val[0]*(float)NK_USHORT_MAX); + col[1] = (nk_ushort)(val[1]*(float)NK_USHORT_MAX); + col[2] = (nk_ushort)(val[2]*(float)NK_USHORT_MAX); + col[3] = (nk_ushort)(val[3]*(float)NK_USHORT_MAX); + NK_MEMCPY(attr, col, sizeof(col)); + } break; + case NK_FORMAT_R32G32B32: { + nk_uint col[3]; + col[0] = (nk_uint)(val[0]*(float)NK_UINT_MAX); + col[1] = (nk_uint)(val[1]*(float)NK_UINT_MAX); + col[2] = (nk_uint)(val[2]*(float)NK_UINT_MAX); + NK_MEMCPY(attr, col, sizeof(col)); + } break; + case NK_FORMAT_R32G32B32A32: { + nk_uint col[4]; + col[0] = (nk_uint)(val[0]*(float)NK_UINT_MAX); + col[1] = (nk_uint)(val[1]*(float)NK_UINT_MAX); + col[2] = (nk_uint)(val[2]*(float)NK_UINT_MAX); + col[3] = (nk_uint)(val[3]*(float)NK_UINT_MAX); + NK_MEMCPY(attr, col, sizeof(col)); + } break; + case NK_FORMAT_R32G32B32A32_FLOAT: + NK_MEMCPY(attr, val, sizeof(float)*4); + break; + case NK_FORMAT_R32G32B32A32_DOUBLE: { + double col[4]; + col[0] = (double)val[0]; + col[1] = (double)val[1]; + col[2] = (double)val[2]; + col[3] = (double)val[3]; + NK_MEMCPY(attr, col, sizeof(col)); + } break; + case NK_FORMAT_RGB32: + case NK_FORMAT_RGBA32: { + struct nk_color col = nk_rgba_fv(val); + nk_uint color = nk_color_u32(col); + NK_MEMCPY(attr, &color, sizeof(color)); + } break; } +} +NK_INTERN void +nk_draw_vertex_element(void *dst, const float *values, int value_count, + enum nk_draw_vertex_layout_format format) +{ + int value_index; + void *attribute = dst; + /* if this triggers you tried to provide a color format for a value */ + NK_ASSERT(format < NK_FORMAT_COLOR_BEGIN); + if (format >= NK_FORMAT_COLOR_BEGIN && format <= NK_FORMAT_COLOR_END) return; + for (value_index = 0; value_index < value_count; ++value_index) { + switch (format) { + default: NK_ASSERT(0 && "invalid vertex layout format"); break; + case NK_FORMAT_SCHAR: { + char value = (char)NK_CLAMP((float)NK_SCHAR_MIN, values[value_index], (float)NK_SCHAR_MAX); + NK_MEMCPY(attribute, &value, sizeof(value)); + attribute = (void*)((char*)attribute + sizeof(char)); + } break; + case NK_FORMAT_SSHORT: { + nk_short value = (nk_short)NK_CLAMP((float)NK_SSHORT_MIN, values[value_index], (float)NK_SSHORT_MAX); + NK_MEMCPY(attribute, &value, sizeof(value)); + attribute = (void*)((char*)attribute + sizeof(value)); + } break; + case NK_FORMAT_SINT: { + nk_int value = (nk_int)NK_CLAMP((float)NK_SINT_MIN, values[value_index], (float)NK_SINT_MAX); + NK_MEMCPY(attribute, &value, sizeof(value)); + attribute = (void*)((char*)attribute + sizeof(nk_int)); + } break; + case NK_FORMAT_UCHAR: { + unsigned char value = (unsigned char)NK_CLAMP((float)NK_UCHAR_MIN, values[value_index], (float)NK_UCHAR_MAX); + NK_MEMCPY(attribute, &value, sizeof(value)); + attribute = (void*)((char*)attribute + sizeof(unsigned char)); + } break; + case NK_FORMAT_USHORT: { + nk_ushort value = (nk_ushort)NK_CLAMP((float)NK_USHORT_MIN, values[value_index], (float)NK_USHORT_MAX); + NK_MEMCPY(attribute, &value, sizeof(value)); + attribute = (void*)((char*)attribute + sizeof(value)); + } break; + case NK_FORMAT_UINT: { + nk_uint value = (nk_uint)NK_CLAMP((float)NK_UINT_MIN, values[value_index], (float)NK_UINT_MAX); + NK_MEMCPY(attribute, &value, sizeof(value)); + attribute = (void*)((char*)attribute + sizeof(nk_uint)); + } break; + case NK_FORMAT_FLOAT: + NK_MEMCPY(attribute, &values[value_index], sizeof(values[value_index])); + attribute = (void*)((char*)attribute + sizeof(float)); + break; + case NK_FORMAT_DOUBLE: { + double value = (double)values[value_index]; + NK_MEMCPY(attribute, &value, sizeof(value)); + attribute = (void*)((char*)attribute + sizeof(double)); + } break; + } + } +} +NK_INTERN void* +nk_draw_vertex(void *dst, const struct nk_convert_config *config, + struct nk_vec2 pos, struct nk_vec2 uv, struct nk_colorf color) +{ + void *result = (void*)((char*)dst + config->vertex_size); + const struct nk_draw_vertex_layout_element *elem_iter = config->vertex_layout; + while (!nk_draw_vertex_layout_element_is_end_of_layout(elem_iter)) { + void *address = (void*)((char*)dst + elem_iter->offset); + switch (elem_iter->attribute) { + case NK_VERTEX_ATTRIBUTE_COUNT: + default: NK_ASSERT(0 && "wrong element attribute"); break; + case NK_VERTEX_POSITION: nk_draw_vertex_element(address, &pos.x, 2, elem_iter->format); break; + case NK_VERTEX_TEXCOORD: nk_draw_vertex_element(address, &uv.x, 2, elem_iter->format); break; + case NK_VERTEX_COLOR: nk_draw_vertex_color(address, &color.r, elem_iter->format); break; + } + elem_iter++; + } + return result; +} +NK_API void +nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *points, + const unsigned int points_count, struct nk_color color, enum nk_draw_list_stroke closed, + float thickness, enum nk_anti_aliasing aliasing) +{ + nk_size count; + int thick_line; + struct nk_colorf col; + struct nk_colorf col_trans; + NK_ASSERT(list); + if (!list || points_count < 2) return; + + color.a = (nk_byte)((float)color.a * list->config.global_alpha); + count = points_count; + if (!closed) count = points_count-1; + thick_line = thickness > 1.0f; + +#ifdef NK_INCLUDE_COMMAND_USERDATA + nk_draw_list_push_userdata(list, list->userdata); +#endif + + color.a = (nk_byte)((float)color.a * list->config.global_alpha); + nk_color_fv(&col.r, color); + col_trans = col; + col_trans.a = 0; + + if (aliasing == NK_ANTI_ALIASING_ON) { + /* ANTI-ALIASED STROKE */ + const float AA_SIZE = 1.0f; + NK_STORAGE const nk_size pnt_align = NK_ALIGNOF(struct nk_vec2); + NK_STORAGE const nk_size pnt_size = sizeof(struct nk_vec2); + + /* allocate vertices and elements */ + nk_size i1 = 0; + nk_size vertex_offset; + nk_size index = list->vertex_count; + + const nk_size idx_count = (thick_line) ? (count * 18) : (count * 12); + const nk_size vtx_count = (thick_line) ? (points_count * 4): (points_count *3); + + void *vtx = nk_draw_list_alloc_vertices(list, vtx_count); + nk_draw_index *ids = nk_draw_list_alloc_elements(list, idx_count); + + nk_size size; + struct nk_vec2 *normals, *temp; + if (!vtx || !ids) return; + + /* temporary allocate normals + points */ + vertex_offset = (nk_size)((nk_byte*)vtx - (nk_byte*)list->vertices->memory.ptr); + nk_buffer_mark(list->vertices, NK_BUFFER_FRONT); + size = pnt_size * ((thick_line) ? 5 : 3) * points_count; + normals = (struct nk_vec2*) nk_buffer_alloc(list->vertices, NK_BUFFER_FRONT, size, pnt_align); + if (!normals) return; + temp = normals + points_count; + + /* make sure vertex pointer is still correct */ + vtx = (void*)((nk_byte*)list->vertices->memory.ptr + vertex_offset); + + /* calculate normals */ + for (i1 = 0; i1 < count; ++i1) { + const nk_size i2 = ((i1 + 1) == points_count) ? 0 : (i1 + 1); + struct nk_vec2 diff = nk_vec2_sub(points[i2], points[i1]); + float len; + + /* vec2 inverted length */ + len = nk_vec2_len_sqr(diff); + if (len != 0.0f) + len = nk_inv_sqrt(len); + else len = 1.0f; + + diff = nk_vec2_muls(diff, len); + normals[i1].x = diff.y; + normals[i1].y = -diff.x; + } + + if (!closed) + normals[points_count-1] = normals[points_count-2]; + + if (!thick_line) { + nk_size idx1, i; + if (!closed) { + struct nk_vec2 d; + temp[0] = nk_vec2_add(points[0], nk_vec2_muls(normals[0], AA_SIZE)); + temp[1] = nk_vec2_sub(points[0], nk_vec2_muls(normals[0], AA_SIZE)); + d = nk_vec2_muls(normals[points_count-1], AA_SIZE); + temp[(points_count-1) * 2 + 0] = nk_vec2_add(points[points_count-1], d); + temp[(points_count-1) * 2 + 1] = nk_vec2_sub(points[points_count-1], d); + } + + /* fill elements */ + idx1 = index; + for (i1 = 0; i1 < count; i1++) { + struct nk_vec2 dm; + float dmr2; + nk_size i2 = ((i1 + 1) == points_count) ? 0 : (i1 + 1); + nk_size idx2 = ((i1+1) == points_count) ? index: (idx1 + 3); + + /* average normals */ + dm = nk_vec2_muls(nk_vec2_add(normals[i1], normals[i2]), 0.5f); + dmr2 = dm.x * dm.x + dm.y* dm.y; + if (dmr2 > 0.000001f) { + float scale = 1.0f/dmr2; + scale = NK_MIN(100.0f, scale); + dm = nk_vec2_muls(dm, scale); + } + + dm = nk_vec2_muls(dm, AA_SIZE); + temp[i2*2+0] = nk_vec2_add(points[i2], dm); + temp[i2*2+1] = nk_vec2_sub(points[i2], dm); + + ids[0] = (nk_draw_index)(idx2 + 0); ids[1] = (nk_draw_index)(idx1+0); + ids[2] = (nk_draw_index)(idx1 + 2); ids[3] = (nk_draw_index)(idx1+2); + ids[4] = (nk_draw_index)(idx2 + 2); ids[5] = (nk_draw_index)(idx2+0); + ids[6] = (nk_draw_index)(idx2 + 1); ids[7] = (nk_draw_index)(idx1+1); + ids[8] = (nk_draw_index)(idx1 + 0); ids[9] = (nk_draw_index)(idx1+0); + ids[10]= (nk_draw_index)(idx2 + 0); ids[11]= (nk_draw_index)(idx2+1); + ids += 12; + idx1 = idx2; + } + + /* fill vertices */ + for (i = 0; i < points_count; ++i) { + const struct nk_vec2 uv = list->config.null.uv; + vtx = nk_draw_vertex(vtx, &list->config, points[i], uv, col); + vtx = nk_draw_vertex(vtx, &list->config, temp[i*2+0], uv, col_trans); + vtx = nk_draw_vertex(vtx, &list->config, temp[i*2+1], uv, col_trans); + } + } else { + nk_size idx1, i; + const float half_inner_thickness = (thickness - AA_SIZE) * 0.5f; + if (!closed) { + struct nk_vec2 d1 = nk_vec2_muls(normals[0], half_inner_thickness + AA_SIZE); + struct nk_vec2 d2 = nk_vec2_muls(normals[0], half_inner_thickness); + + temp[0] = nk_vec2_add(points[0], d1); + temp[1] = nk_vec2_add(points[0], d2); + temp[2] = nk_vec2_sub(points[0], d2); + temp[3] = nk_vec2_sub(points[0], d1); + + d1 = nk_vec2_muls(normals[points_count-1], half_inner_thickness + AA_SIZE); + d2 = nk_vec2_muls(normals[points_count-1], half_inner_thickness); + + temp[(points_count-1)*4+0] = nk_vec2_add(points[points_count-1], d1); + temp[(points_count-1)*4+1] = nk_vec2_add(points[points_count-1], d2); + temp[(points_count-1)*4+2] = nk_vec2_sub(points[points_count-1], d2); + temp[(points_count-1)*4+3] = nk_vec2_sub(points[points_count-1], d1); + } + + /* add all elements */ + idx1 = index; + for (i1 = 0; i1 < count; ++i1) { + struct nk_vec2 dm_out, dm_in; + const nk_size i2 = ((i1+1) == points_count) ? 0: (i1 + 1); + nk_size idx2 = ((i1+1) == points_count) ? index: (idx1 + 4); + + /* average normals */ + struct nk_vec2 dm = nk_vec2_muls(nk_vec2_add(normals[i1], normals[i2]), 0.5f); + float dmr2 = dm.x * dm.x + dm.y* dm.y; + if (dmr2 > 0.000001f) { + float scale = 1.0f/dmr2; + scale = NK_MIN(100.0f, scale); + dm = nk_vec2_muls(dm, scale); + } + + dm_out = nk_vec2_muls(dm, ((half_inner_thickness) + AA_SIZE)); + dm_in = nk_vec2_muls(dm, half_inner_thickness); + temp[i2*4+0] = nk_vec2_add(points[i2], dm_out); + temp[i2*4+1] = nk_vec2_add(points[i2], dm_in); + temp[i2*4+2] = nk_vec2_sub(points[i2], dm_in); + temp[i2*4+3] = nk_vec2_sub(points[i2], dm_out); + + /* add indexes */ + ids[0] = (nk_draw_index)(idx2 + 1); ids[1] = (nk_draw_index)(idx1+1); + ids[2] = (nk_draw_index)(idx1 + 2); ids[3] = (nk_draw_index)(idx1+2); + ids[4] = (nk_draw_index)(idx2 + 2); ids[5] = (nk_draw_index)(idx2+1); + ids[6] = (nk_draw_index)(idx2 + 1); ids[7] = (nk_draw_index)(idx1+1); + ids[8] = (nk_draw_index)(idx1 + 0); ids[9] = (nk_draw_index)(idx1+0); + ids[10]= (nk_draw_index)(idx2 + 0); ids[11] = (nk_draw_index)(idx2+1); + ids[12]= (nk_draw_index)(idx2 + 2); ids[13] = (nk_draw_index)(idx1+2); + ids[14]= (nk_draw_index)(idx1 + 3); ids[15] = (nk_draw_index)(idx1+3); + ids[16]= (nk_draw_index)(idx2 + 3); ids[17] = (nk_draw_index)(idx2+2); + ids += 18; + idx1 = idx2; + } + + /* add vertices */ + for (i = 0; i < points_count; ++i) { + const struct nk_vec2 uv = list->config.null.uv; + vtx = nk_draw_vertex(vtx, &list->config, temp[i*4+0], uv, col_trans); + vtx = nk_draw_vertex(vtx, &list->config, temp[i*4+1], uv, col); + vtx = nk_draw_vertex(vtx, &list->config, temp[i*4+2], uv, col); + vtx = nk_draw_vertex(vtx, &list->config, temp[i*4+3], uv, col_trans); + } + } + /* free temporary normals + points */ + nk_buffer_reset(list->vertices, NK_BUFFER_FRONT); + } else { + /* NON ANTI-ALIASED STROKE */ + nk_size i1 = 0; + nk_size idx = list->vertex_count; + const nk_size idx_count = count * 6; + const nk_size vtx_count = count * 4; + void *vtx = nk_draw_list_alloc_vertices(list, vtx_count); + nk_draw_index *ids = nk_draw_list_alloc_elements(list, idx_count); + if (!vtx || !ids) return; + + for (i1 = 0; i1 < count; ++i1) { + float dx, dy; + const struct nk_vec2 uv = list->config.null.uv; + const nk_size i2 = ((i1+1) == points_count) ? 0 : i1 + 1; + const struct nk_vec2 p1 = points[i1]; + const struct nk_vec2 p2 = points[i2]; + struct nk_vec2 diff = nk_vec2_sub(p2, p1); + float len; + + /* vec2 inverted length */ + len = nk_vec2_len_sqr(diff); + if (len != 0.0f) + len = nk_inv_sqrt(len); + else len = 1.0f; + diff = nk_vec2_muls(diff, len); + + /* add vertices */ + dx = diff.x * (thickness * 0.5f); + dy = diff.y * (thickness * 0.5f); + + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(p1.x + dy, p1.y - dx), uv, col); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(p2.x + dy, p2.y - dx), uv, col); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(p2.x - dy, p2.y + dx), uv, col); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(p1.x - dy, p1.y + dx), uv, col); + + ids[0] = (nk_draw_index)(idx+0); ids[1] = (nk_draw_index)(idx+1); + ids[2] = (nk_draw_index)(idx+2); ids[3] = (nk_draw_index)(idx+0); + ids[4] = (nk_draw_index)(idx+2); ids[5] = (nk_draw_index)(idx+3); + + ids += 6; + idx += 4; + } + } +} +NK_API void +nk_draw_list_fill_poly_convex(struct nk_draw_list *list, + const struct nk_vec2 *points, const unsigned int points_count, + struct nk_color color, enum nk_anti_aliasing aliasing) +{ + struct nk_colorf col; + struct nk_colorf col_trans; + + NK_STORAGE const nk_size pnt_align = NK_ALIGNOF(struct nk_vec2); + NK_STORAGE const nk_size pnt_size = sizeof(struct nk_vec2); + NK_ASSERT(list); + if (!list || points_count < 3) return; + +#ifdef NK_INCLUDE_COMMAND_USERDATA + nk_draw_list_push_userdata(list, list->userdata); +#endif + + color.a = (nk_byte)((float)color.a * list->config.global_alpha); + nk_color_fv(&col.r, color); + col_trans = col; + col_trans.a = 0; + + if (aliasing == NK_ANTI_ALIASING_ON) { + nk_size i = 0; + nk_size i0 = 0; + nk_size i1 = 0; + + const float AA_SIZE = 1.0f; + nk_size vertex_offset = 0; + nk_size index = list->vertex_count; + + const nk_size idx_count = (points_count-2)*3 + points_count*6; + const nk_size vtx_count = (points_count*2); + + void *vtx = nk_draw_list_alloc_vertices(list, vtx_count); + nk_draw_index *ids = nk_draw_list_alloc_elements(list, idx_count); + + nk_size size = 0; + struct nk_vec2 *normals = 0; + unsigned int vtx_inner_idx = (unsigned int)(index + 0); + unsigned int vtx_outer_idx = (unsigned int)(index + 1); + if (!vtx || !ids) return; + + /* temporary allocate normals */ + vertex_offset = (nk_size)((nk_byte*)vtx - (nk_byte*)list->vertices->memory.ptr); + nk_buffer_mark(list->vertices, NK_BUFFER_FRONT); + size = pnt_size * points_count; + normals = (struct nk_vec2*) nk_buffer_alloc(list->vertices, NK_BUFFER_FRONT, size, pnt_align); + if (!normals) return; + vtx = (void*)((nk_byte*)list->vertices->memory.ptr + vertex_offset); + + /* add elements */ + for (i = 2; i < points_count; i++) { + ids[0] = (nk_draw_index)(vtx_inner_idx); + ids[1] = (nk_draw_index)(vtx_inner_idx + ((i-1) << 1)); + ids[2] = (nk_draw_index)(vtx_inner_idx + (i << 1)); + ids += 3; + } + + /* compute normals */ + for (i0 = points_count-1, i1 = 0; i1 < points_count; i0 = i1++) { + struct nk_vec2 p0 = points[i0]; + struct nk_vec2 p1 = points[i1]; + struct nk_vec2 diff = nk_vec2_sub(p1, p0); + + /* vec2 inverted length */ + float len = nk_vec2_len_sqr(diff); + if (len != 0.0f) + len = nk_inv_sqrt(len); + else len = 1.0f; + diff = nk_vec2_muls(diff, len); + + normals[i0].x = diff.y; + normals[i0].y = -diff.x; + } + + /* add vertices + indexes */ + for (i0 = points_count-1, i1 = 0; i1 < points_count; i0 = i1++) { + const struct nk_vec2 uv = list->config.null.uv; + struct nk_vec2 n0 = normals[i0]; + struct nk_vec2 n1 = normals[i1]; + struct nk_vec2 dm = nk_vec2_muls(nk_vec2_add(n0, n1), 0.5f); + float dmr2 = dm.x*dm.x + dm.y*dm.y; + if (dmr2 > 0.000001f) { + float scale = 1.0f / dmr2; + scale = NK_MIN(scale, 100.0f); + dm = nk_vec2_muls(dm, scale); + } + dm = nk_vec2_muls(dm, AA_SIZE * 0.5f); + + /* add vertices */ + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2_sub(points[i1], dm), uv, col); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2_add(points[i1], dm), uv, col_trans); + + /* add indexes */ + ids[0] = (nk_draw_index)(vtx_inner_idx+(i1<<1)); + ids[1] = (nk_draw_index)(vtx_inner_idx+(i0<<1)); + ids[2] = (nk_draw_index)(vtx_outer_idx+(i0<<1)); + ids[3] = (nk_draw_index)(vtx_outer_idx+(i0<<1)); + ids[4] = (nk_draw_index)(vtx_outer_idx+(i1<<1)); + ids[5] = (nk_draw_index)(vtx_inner_idx+(i1<<1)); + ids += 6; + } + /* free temporary normals + points */ + nk_buffer_reset(list->vertices, NK_BUFFER_FRONT); + } else { + nk_size i = 0; + nk_size index = list->vertex_count; + const nk_size idx_count = (points_count-2)*3; + const nk_size vtx_count = points_count; + void *vtx = nk_draw_list_alloc_vertices(list, vtx_count); + nk_draw_index *ids = nk_draw_list_alloc_elements(list, idx_count); + + if (!vtx || !ids) return; + for (i = 0; i < vtx_count; ++i) + vtx = nk_draw_vertex(vtx, &list->config, points[i], list->config.null.uv, col); + for (i = 2; i < points_count; ++i) { + ids[0] = (nk_draw_index)index; + ids[1] = (nk_draw_index)(index+ i - 1); + ids[2] = (nk_draw_index)(index+i); + ids += 3; + } + } +} +NK_API void +nk_draw_list_path_clear(struct nk_draw_list *list) +{ + NK_ASSERT(list); + if (!list) return; + nk_buffer_reset(list->buffer, NK_BUFFER_FRONT); + list->path_count = 0; + list->path_offset = 0; +} +NK_API void +nk_draw_list_path_line_to(struct nk_draw_list *list, struct nk_vec2 pos) +{ + struct nk_vec2 *points = 0; + struct nk_draw_command *cmd = 0; + NK_ASSERT(list); + if (!list) return; + if (!list->cmd_count) + nk_draw_list_add_clip(list, nk_null_rect); + + cmd = nk_draw_list_command_last(list); + if (cmd && cmd->texture.ptr != list->config.null.texture.ptr) + nk_draw_list_push_image(list, list->config.null.texture); + + points = nk_draw_list_alloc_path(list, 1); + if (!points) return; + points[0] = pos; +} +NK_API void +nk_draw_list_path_arc_to_fast(struct nk_draw_list *list, struct nk_vec2 center, + float radius, int a_min, int a_max) +{ + int a = 0; + NK_ASSERT(list); + if (!list) return; + if (a_min <= a_max) { + for (a = a_min; a <= a_max; a++) { + const struct nk_vec2 c = list->circle_vtx[(nk_size)a % NK_LEN(list->circle_vtx)]; + const float x = center.x + c.x * radius; + const float y = center.y + c.y * radius; + nk_draw_list_path_line_to(list, nk_vec2(x, y)); + } + } +} +NK_API void +nk_draw_list_path_arc_to(struct nk_draw_list *list, struct nk_vec2 center, + float radius, float a_min, float a_max, unsigned int segments) +{ + unsigned int i = 0; + NK_ASSERT(list); + if (!list) return; + if (radius == 0.0f) return; + + /* This algorithm for arc drawing relies on these two trigonometric identities[1]: + sin(a + b) = sin(a) * cos(b) + cos(a) * sin(b) + cos(a + b) = cos(a) * cos(b) - sin(a) * sin(b) + + Two coordinates (x, y) of a point on a circle centered on + the origin can be written in polar form as: + x = r * cos(a) + y = r * sin(a) + where r is the radius of the circle, + a is the angle between (x, y) and the origin. + + This allows us to rotate the coordinates around the + origin by an angle b using the following transformation: + x' = r * cos(a + b) = x * cos(b) - y * sin(b) + y' = r * sin(a + b) = y * cos(b) + x * sin(b) + + [1] https://en.wikipedia.org/wiki/List_of_trigonometric_identities#Angle_sum_and_difference_identities + */ + {const float d_angle = (a_max - a_min) / (float)segments; + const float sin_d = (float)NK_SIN(d_angle); + const float cos_d = (float)NK_COS(d_angle); + + float cx = (float)NK_COS(a_min) * radius; + float cy = (float)NK_SIN(a_min) * radius; + for(i = 0; i <= segments; ++i) { + float new_cx, new_cy; + const float x = center.x + cx; + const float y = center.y + cy; + nk_draw_list_path_line_to(list, nk_vec2(x, y)); + + new_cx = cx * cos_d - cy * sin_d; + new_cy = cy * cos_d + cx * sin_d; + cx = new_cx; + cy = new_cy; + }} +} +NK_API void +nk_draw_list_path_rect_to(struct nk_draw_list *list, struct nk_vec2 a, + struct nk_vec2 b, float rounding) +{ + float r; + NK_ASSERT(list); + if (!list) return; + r = rounding; + r = NK_MIN(r, ((b.x-a.x) < 0) ? -(b.x-a.x): (b.x-a.x)); + r = NK_MIN(r, ((b.y-a.y) < 0) ? -(b.y-a.y): (b.y-a.y)); + + if (r == 0.0f) { + nk_draw_list_path_line_to(list, a); + nk_draw_list_path_line_to(list, nk_vec2(b.x,a.y)); + nk_draw_list_path_line_to(list, b); + nk_draw_list_path_line_to(list, nk_vec2(a.x,b.y)); + } else { + nk_draw_list_path_arc_to_fast(list, nk_vec2(a.x + r, a.y + r), r, 6, 9); + nk_draw_list_path_arc_to_fast(list, nk_vec2(b.x - r, a.y + r), r, 9, 12); + nk_draw_list_path_arc_to_fast(list, nk_vec2(b.x - r, b.y - r), r, 0, 3); + nk_draw_list_path_arc_to_fast(list, nk_vec2(a.x + r, b.y - r), r, 3, 6); + } +} +NK_API void +nk_draw_list_path_curve_to(struct nk_draw_list *list, struct nk_vec2 p2, + struct nk_vec2 p3, struct nk_vec2 p4, unsigned int num_segments) +{ + float t_step; + unsigned int i_step; + struct nk_vec2 p1; + + NK_ASSERT(list); + NK_ASSERT(list->path_count); + if (!list || !list->path_count) return; + num_segments = NK_MAX(num_segments, 1); + + p1 = nk_draw_list_path_last(list); + t_step = 1.0f/(float)num_segments; + for (i_step = 1; i_step <= num_segments; ++i_step) { + float t = t_step * (float)i_step; + float u = 1.0f - t; + float w1 = u*u*u; + float w2 = 3*u*u*t; + float w3 = 3*u*t*t; + float w4 = t * t *t; + float x = w1 * p1.x + w2 * p2.x + w3 * p3.x + w4 * p4.x; + float y = w1 * p1.y + w2 * p2.y + w3 * p3.y + w4 * p4.y; + nk_draw_list_path_line_to(list, nk_vec2(x,y)); + } +} +NK_API void +nk_draw_list_path_fill(struct nk_draw_list *list, struct nk_color color) +{ + struct nk_vec2 *points; + NK_ASSERT(list); + if (!list) return; + points = (struct nk_vec2*)nk_buffer_memory(list->buffer); + nk_draw_list_fill_poly_convex(list, points, list->path_count, color, list->config.shape_AA); + nk_draw_list_path_clear(list); +} +NK_API void +nk_draw_list_path_stroke(struct nk_draw_list *list, struct nk_color color, + enum nk_draw_list_stroke closed, float thickness) +{ + struct nk_vec2 *points; + NK_ASSERT(list); + if (!list) return; + points = (struct nk_vec2*)nk_buffer_memory(list->buffer); + nk_draw_list_stroke_poly_line(list, points, list->path_count, color, + closed, thickness, list->config.line_AA); + nk_draw_list_path_clear(list); +} +NK_API void +nk_draw_list_stroke_line(struct nk_draw_list *list, struct nk_vec2 a, + struct nk_vec2 b, struct nk_color col, float thickness) +{ + NK_ASSERT(list); + if (!list || !col.a) return; + if (list->line_AA == NK_ANTI_ALIASING_ON) { + nk_draw_list_path_line_to(list, a); + nk_draw_list_path_line_to(list, b); + } else { + nk_draw_list_path_line_to(list, nk_vec2_sub(a,nk_vec2(0.5f,0.5f))); + nk_draw_list_path_line_to(list, nk_vec2_sub(b,nk_vec2(0.5f,0.5f))); + } + nk_draw_list_path_stroke(list, col, NK_STROKE_OPEN, thickness); +} +NK_API void +nk_draw_list_fill_rect(struct nk_draw_list *list, struct nk_rect rect, + struct nk_color col, float rounding) +{ + NK_ASSERT(list); + if (!list || !col.a) return; + + if (list->line_AA == NK_ANTI_ALIASING_ON) { + nk_draw_list_path_rect_to(list, nk_vec2(rect.x, rect.y), + nk_vec2(rect.x + rect.w, rect.y + rect.h), rounding); + } else { + nk_draw_list_path_rect_to(list, nk_vec2(rect.x-0.5f, rect.y-0.5f), + nk_vec2(rect.x + rect.w, rect.y + rect.h), rounding); + } nk_draw_list_path_fill(list, col); +} +NK_API void +nk_draw_list_stroke_rect(struct nk_draw_list *list, struct nk_rect rect, + struct nk_color col, float rounding, float thickness) +{ + NK_ASSERT(list); + if (!list || !col.a) return; + if (list->line_AA == NK_ANTI_ALIASING_ON) { + nk_draw_list_path_rect_to(list, nk_vec2(rect.x, rect.y), + nk_vec2(rect.x + rect.w, rect.y + rect.h), rounding); + } else { + nk_draw_list_path_rect_to(list, nk_vec2(rect.x-0.5f, rect.y-0.5f), + nk_vec2(rect.x + rect.w, rect.y + rect.h), rounding); + } nk_draw_list_path_stroke(list, col, NK_STROKE_CLOSED, thickness); +} +NK_API void +nk_draw_list_fill_rect_multi_color(struct nk_draw_list *list, struct nk_rect rect, + struct nk_color left, struct nk_color top, struct nk_color right, + struct nk_color bottom) +{ + void *vtx; + struct nk_colorf col_left, col_top; + struct nk_colorf col_right, col_bottom; + nk_draw_index *idx; + nk_draw_index index; + + nk_color_fv(&col_left.r, left); + nk_color_fv(&col_right.r, right); + nk_color_fv(&col_top.r, top); + nk_color_fv(&col_bottom.r, bottom); + + NK_ASSERT(list); + if (!list) return; + + nk_draw_list_push_image(list, list->config.null.texture); + index = (nk_draw_index)list->vertex_count; + vtx = nk_draw_list_alloc_vertices(list, 4); + idx = nk_draw_list_alloc_elements(list, 6); + if (!vtx || !idx) return; + + idx[0] = (nk_draw_index)(index+0); idx[1] = (nk_draw_index)(index+1); + idx[2] = (nk_draw_index)(index+2); idx[3] = (nk_draw_index)(index+0); + idx[4] = (nk_draw_index)(index+2); idx[5] = (nk_draw_index)(index+3); + + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x, rect.y), list->config.null.uv, col_left); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x + rect.w, rect.y), list->config.null.uv, col_top); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x + rect.w, rect.y + rect.h), list->config.null.uv, col_right); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x, rect.y + rect.h), list->config.null.uv, col_bottom); +} +NK_API void +nk_draw_list_fill_triangle(struct nk_draw_list *list, struct nk_vec2 a, + struct nk_vec2 b, struct nk_vec2 c, struct nk_color col) +{ + NK_ASSERT(list); + if (!list || !col.a) return; + nk_draw_list_path_line_to(list, a); + nk_draw_list_path_line_to(list, b); + nk_draw_list_path_line_to(list, c); + nk_draw_list_path_fill(list, col); +} +NK_API void +nk_draw_list_stroke_triangle(struct nk_draw_list *list, struct nk_vec2 a, + struct nk_vec2 b, struct nk_vec2 c, struct nk_color col, float thickness) +{ + NK_ASSERT(list); + if (!list || !col.a) return; + nk_draw_list_path_line_to(list, a); + nk_draw_list_path_line_to(list, b); + nk_draw_list_path_line_to(list, c); + nk_draw_list_path_stroke(list, col, NK_STROKE_CLOSED, thickness); +} +NK_API void +nk_draw_list_fill_circle(struct nk_draw_list *list, struct nk_vec2 center, + float radius, struct nk_color col, unsigned int segs) +{ + float a_max; + NK_ASSERT(list); + if (!list || !col.a) return; + a_max = NK_PI * 2.0f * ((float)segs - 1.0f) / (float)segs; + nk_draw_list_path_arc_to(list, center, radius, 0.0f, a_max, segs); + nk_draw_list_path_fill(list, col); +} +NK_API void +nk_draw_list_stroke_circle(struct nk_draw_list *list, struct nk_vec2 center, + float radius, struct nk_color col, unsigned int segs, float thickness) +{ + float a_max; + NK_ASSERT(list); + if (!list || !col.a) return; + a_max = NK_PI * 2.0f * ((float)segs - 1.0f) / (float)segs; + nk_draw_list_path_arc_to(list, center, radius, 0.0f, a_max, segs); + nk_draw_list_path_stroke(list, col, NK_STROKE_CLOSED, thickness); +} +NK_API void +nk_draw_list_stroke_curve(struct nk_draw_list *list, struct nk_vec2 p0, + struct nk_vec2 cp0, struct nk_vec2 cp1, struct nk_vec2 p1, + struct nk_color col, unsigned int segments, float thickness) +{ + NK_ASSERT(list); + if (!list || !col.a) return; + nk_draw_list_path_line_to(list, p0); + nk_draw_list_path_curve_to(list, cp0, cp1, p1, segments); + nk_draw_list_path_stroke(list, col, NK_STROKE_OPEN, thickness); +} +NK_INTERN void +nk_draw_list_push_rect_uv(struct nk_draw_list *list, struct nk_vec2 a, + struct nk_vec2 c, struct nk_vec2 uva, struct nk_vec2 uvc, + struct nk_color color) +{ + void *vtx; + struct nk_vec2 uvb; + struct nk_vec2 uvd; + struct nk_vec2 b; + struct nk_vec2 d; + + struct nk_colorf col; + nk_draw_index *idx; + nk_draw_index index; + NK_ASSERT(list); + if (!list) return; + + nk_color_fv(&col.r, color); + uvb = nk_vec2(uvc.x, uva.y); + uvd = nk_vec2(uva.x, uvc.y); + b = nk_vec2(c.x, a.y); + d = nk_vec2(a.x, c.y); + + index = (nk_draw_index)list->vertex_count; + vtx = nk_draw_list_alloc_vertices(list, 4); + idx = nk_draw_list_alloc_elements(list, 6); + if (!vtx || !idx) return; + + idx[0] = (nk_draw_index)(index+0); idx[1] = (nk_draw_index)(index+1); + idx[2] = (nk_draw_index)(index+2); idx[3] = (nk_draw_index)(index+0); + idx[4] = (nk_draw_index)(index+2); idx[5] = (nk_draw_index)(index+3); + + vtx = nk_draw_vertex(vtx, &list->config, a, uva, col); + vtx = nk_draw_vertex(vtx, &list->config, b, uvb, col); + vtx = nk_draw_vertex(vtx, &list->config, c, uvc, col); + vtx = nk_draw_vertex(vtx, &list->config, d, uvd, col); +} +NK_API void +nk_draw_list_add_image(struct nk_draw_list *list, struct nk_image texture, + struct nk_rect rect, struct nk_color color) +{ + NK_ASSERT(list); + if (!list) return; + /* push new command with given texture */ + nk_draw_list_push_image(list, texture.handle); + if (nk_image_is_subimage(&texture)) { + /* add region inside of the texture */ + struct nk_vec2 uv[2]; + uv[0].x = (float)texture.region[0]/(float)texture.w; + uv[0].y = (float)texture.region[1]/(float)texture.h; + uv[1].x = (float)(texture.region[0] + texture.region[2])/(float)texture.w; + uv[1].y = (float)(texture.region[1] + texture.region[3])/(float)texture.h; + nk_draw_list_push_rect_uv(list, nk_vec2(rect.x, rect.y), + nk_vec2(rect.x + rect.w, rect.y + rect.h), uv[0], uv[1], color); + } else nk_draw_list_push_rect_uv(list, nk_vec2(rect.x, rect.y), + nk_vec2(rect.x + rect.w, rect.y + rect.h), + nk_vec2(0.0f, 0.0f), nk_vec2(1.0f, 1.0f),color); +} +NK_API void +nk_draw_list_add_text(struct nk_draw_list *list, const struct nk_user_font *font, + struct nk_rect rect, const char *text, int len, float font_height, + struct nk_color fg) +{ + float x = 0; + int text_len = 0; + nk_rune unicode = 0; + nk_rune next = 0; + int glyph_len = 0; + int next_glyph_len = 0; + struct nk_user_font_glyph g; + + NK_ASSERT(list); + if (!list || !len || !text) return; + if (!NK_INTERSECT(rect.x, rect.y, rect.w, rect.h, + list->clip_rect.x, list->clip_rect.y, list->clip_rect.w, list->clip_rect.h)) return; + + nk_draw_list_push_image(list, font->texture); + x = rect.x; + glyph_len = nk_utf_decode(text, &unicode, len); + if (!glyph_len) return; + + /* draw every glyph image */ + fg.a = (nk_byte)((float)fg.a * list->config.global_alpha); + while (text_len < len && glyph_len) { + float gx, gy, gh, gw; + float char_width = 0; + if (unicode == NK_UTF_INVALID) break; + + /* query currently drawn glyph information */ + next_glyph_len = nk_utf_decode(text + text_len + glyph_len, &next, (int)len - text_len); + font->query(font->userdata, font_height, &g, unicode, + (next == NK_UTF_INVALID) ? '\0' : next); + + /* calculate and draw glyph drawing rectangle and image */ + gx = x + g.offset.x; + gy = rect.y + g.offset.y; + gw = g.width; gh = g.height; + char_width = g.xadvance; + nk_draw_list_push_rect_uv(list, nk_vec2(gx,gy), nk_vec2(gx + gw, gy+ gh), + g.uv[0], g.uv[1], fg); + + /* offset next glyph */ + text_len += glyph_len; + x += char_width; + glyph_len = next_glyph_len; + unicode = next; + } +} +NK_API nk_flags +nk_convert(struct nk_context *ctx, struct nk_buffer *cmds, + struct nk_buffer *vertices, struct nk_buffer *elements, + const struct nk_convert_config *config) +{ + nk_flags res = NK_CONVERT_SUCCESS; + const struct nk_command *cmd; + NK_ASSERT(ctx); + NK_ASSERT(cmds); + NK_ASSERT(vertices); + NK_ASSERT(elements); + NK_ASSERT(config); + NK_ASSERT(config->vertex_layout); + NK_ASSERT(config->vertex_size); + if (!ctx || !cmds || !vertices || !elements || !config || !config->vertex_layout) + return NK_CONVERT_INVALID_PARAM; + + nk_draw_list_setup(&ctx->draw_list, config, cmds, vertices, elements, + config->line_AA, config->shape_AA); + nk_foreach(cmd, ctx) + { +#ifdef NK_INCLUDE_COMMAND_USERDATA + ctx->draw_list.userdata = cmd->userdata; +#endif + switch (cmd->type) { + case NK_COMMAND_NOP: break; + case NK_COMMAND_SCISSOR: { + const struct nk_command_scissor *s = (const struct nk_command_scissor*)cmd; + nk_draw_list_add_clip(&ctx->draw_list, nk_rect(s->x, s->y, s->w, s->h)); + } break; + case NK_COMMAND_LINE: { + const struct nk_command_line *l = (const struct nk_command_line*)cmd; + nk_draw_list_stroke_line(&ctx->draw_list, nk_vec2(l->begin.x, l->begin.y), + nk_vec2(l->end.x, l->end.y), l->color, l->line_thickness); + } break; + case NK_COMMAND_CURVE: { + const struct nk_command_curve *q = (const struct nk_command_curve*)cmd; + nk_draw_list_stroke_curve(&ctx->draw_list, nk_vec2(q->begin.x, q->begin.y), + nk_vec2(q->ctrl[0].x, q->ctrl[0].y), nk_vec2(q->ctrl[1].x, + q->ctrl[1].y), nk_vec2(q->end.x, q->end.y), q->color, + config->curve_segment_count, q->line_thickness); + } break; + case NK_COMMAND_RECT: { + const struct nk_command_rect *r = (const struct nk_command_rect*)cmd; + nk_draw_list_stroke_rect(&ctx->draw_list, nk_rect(r->x, r->y, r->w, r->h), + r->color, (float)r->rounding, r->line_thickness); + } break; + case NK_COMMAND_RECT_FILLED: { + const struct nk_command_rect_filled *r = (const struct nk_command_rect_filled*)cmd; + nk_draw_list_fill_rect(&ctx->draw_list, nk_rect(r->x, r->y, r->w, r->h), + r->color, (float)r->rounding); + } break; + case NK_COMMAND_RECT_MULTI_COLOR: { + const struct nk_command_rect_multi_color *r = (const struct nk_command_rect_multi_color*)cmd; + nk_draw_list_fill_rect_multi_color(&ctx->draw_list, nk_rect(r->x, r->y, r->w, r->h), + r->left, r->top, r->right, r->bottom); + } break; + case NK_COMMAND_CIRCLE: { + const struct nk_command_circle *c = (const struct nk_command_circle*)cmd; + nk_draw_list_stroke_circle(&ctx->draw_list, nk_vec2((float)c->x + (float)c->w/2, + (float)c->y + (float)c->h/2), (float)c->w/2, c->color, + config->circle_segment_count, c->line_thickness); + } break; + case NK_COMMAND_CIRCLE_FILLED: { + const struct nk_command_circle_filled *c = (const struct nk_command_circle_filled *)cmd; + nk_draw_list_fill_circle(&ctx->draw_list, nk_vec2((float)c->x + (float)c->w/2, + (float)c->y + (float)c->h/2), (float)c->w/2, c->color, + config->circle_segment_count); + } break; + case NK_COMMAND_ARC: { + const struct nk_command_arc *c = (const struct nk_command_arc*)cmd; + nk_draw_list_path_line_to(&ctx->draw_list, nk_vec2(c->cx, c->cy)); + nk_draw_list_path_arc_to(&ctx->draw_list, nk_vec2(c->cx, c->cy), c->r, + c->a[0], c->a[1], config->arc_segment_count); + nk_draw_list_path_stroke(&ctx->draw_list, c->color, NK_STROKE_CLOSED, c->line_thickness); + } break; + case NK_COMMAND_ARC_FILLED: { + const struct nk_command_arc_filled *c = (const struct nk_command_arc_filled*)cmd; + nk_draw_list_path_line_to(&ctx->draw_list, nk_vec2(c->cx, c->cy)); + nk_draw_list_path_arc_to(&ctx->draw_list, nk_vec2(c->cx, c->cy), c->r, + c->a[0], c->a[1], config->arc_segment_count); + nk_draw_list_path_fill(&ctx->draw_list, c->color); + } break; + case NK_COMMAND_TRIANGLE: { + const struct nk_command_triangle *t = (const struct nk_command_triangle*)cmd; + nk_draw_list_stroke_triangle(&ctx->draw_list, nk_vec2(t->a.x, t->a.y), + nk_vec2(t->b.x, t->b.y), nk_vec2(t->c.x, t->c.y), t->color, + t->line_thickness); + } break; + case NK_COMMAND_TRIANGLE_FILLED: { + const struct nk_command_triangle_filled *t = (const struct nk_command_triangle_filled*)cmd; + nk_draw_list_fill_triangle(&ctx->draw_list, nk_vec2(t->a.x, t->a.y), + nk_vec2(t->b.x, t->b.y), nk_vec2(t->c.x, t->c.y), t->color); + } break; + case NK_COMMAND_POLYGON: { + int i; + const struct nk_command_polygon*p = (const struct nk_command_polygon*)cmd; + for (i = 0; i < p->point_count; ++i) { + struct nk_vec2 pnt = nk_vec2((float)p->points[i].x, (float)p->points[i].y); + nk_draw_list_path_line_to(&ctx->draw_list, pnt); + } + nk_draw_list_path_stroke(&ctx->draw_list, p->color, NK_STROKE_CLOSED, p->line_thickness); + } break; + case NK_COMMAND_POLYGON_FILLED: { + int i; + const struct nk_command_polygon_filled *p = (const struct nk_command_polygon_filled*)cmd; + for (i = 0; i < p->point_count; ++i) { + struct nk_vec2 pnt = nk_vec2((float)p->points[i].x, (float)p->points[i].y); + nk_draw_list_path_line_to(&ctx->draw_list, pnt); + } + nk_draw_list_path_fill(&ctx->draw_list, p->color); + } break; + case NK_COMMAND_POLYLINE: { + int i; + const struct nk_command_polyline *p = (const struct nk_command_polyline*)cmd; + for (i = 0; i < p->point_count; ++i) { + struct nk_vec2 pnt = nk_vec2((float)p->points[i].x, (float)p->points[i].y); + nk_draw_list_path_line_to(&ctx->draw_list, pnt); + } + nk_draw_list_path_stroke(&ctx->draw_list, p->color, NK_STROKE_OPEN, p->line_thickness); + } break; + case NK_COMMAND_TEXT: { + const struct nk_command_text *t = (const struct nk_command_text*)cmd; + nk_draw_list_add_text(&ctx->draw_list, t->font, nk_rect(t->x, t->y, t->w, t->h), + t->string, t->length, t->height, t->foreground); + } break; + case NK_COMMAND_IMAGE: { + const struct nk_command_image *i = (const struct nk_command_image*)cmd; + nk_draw_list_add_image(&ctx->draw_list, i->img, nk_rect(i->x, i->y, i->w, i->h), i->col); + } break; + case NK_COMMAND_CUSTOM: { + const struct nk_command_custom *c = (const struct nk_command_custom*)cmd; + c->callback(&ctx->draw_list, c->x, c->y, c->w, c->h, c->callback_data); + } break; + default: break; + } + } + res |= (cmds->needed > cmds->allocated + (cmds->memory.size - cmds->size)) ? NK_CONVERT_COMMAND_BUFFER_FULL: 0; + res |= (vertices->needed > vertices->allocated) ? NK_CONVERT_VERTEX_BUFFER_FULL: 0; + res |= (elements->needed > elements->allocated) ? NK_CONVERT_ELEMENT_BUFFER_FULL: 0; + return res; +} +NK_API const struct nk_draw_command* +nk__draw_begin(const struct nk_context *ctx, + const struct nk_buffer *buffer) +{ + return nk__draw_list_begin(&ctx->draw_list, buffer); +} +NK_API const struct nk_draw_command* +nk__draw_end(const struct nk_context *ctx, const struct nk_buffer *buffer) +{ + return nk__draw_list_end(&ctx->draw_list, buffer); +} +NK_API const struct nk_draw_command* +nk__draw_next(const struct nk_draw_command *cmd, + const struct nk_buffer *buffer, const struct nk_context *ctx) +{ + return nk__draw_list_next(cmd, buffer, &ctx->draw_list); +} +#endif + + + + + +#ifdef NK_INCLUDE_FONT_BAKING +/* ------------------------------------------------------------- + * + * RECT PACK + * + * --------------------------------------------------------------*/ +/* stb_rect_pack.h - v0.05 - public domain - rectangle packing */ +/* Sean Barrett 2014 */ +#define NK_RP__MAXVAL 0xffff +typedef unsigned short nk_rp_coord; + +struct nk_rp_rect { + /* reserved for your use: */ + int id; + /* input: */ + nk_rp_coord w, h; + /* output: */ + nk_rp_coord x, y; + int was_packed; + /* non-zero if valid packing */ +}; /* 16 bytes, nominally */ + +struct nk_rp_node { + nk_rp_coord x,y; + struct nk_rp_node *next; +}; + +struct nk_rp_context { + int width; + int height; + int align; + int init_mode; + int heuristic; + int num_nodes; + struct nk_rp_node *active_head; + struct nk_rp_node *free_head; + struct nk_rp_node extra[2]; + /* we allocate two extra nodes so optimal user-node-count is 'width' not 'width+2' */ +}; + +struct nk_rp__findresult { + int x,y; + struct nk_rp_node **prev_link; +}; + +enum NK_RP_HEURISTIC { + NK_RP_HEURISTIC_Skyline_default=0, + NK_RP_HEURISTIC_Skyline_BL_sortHeight = NK_RP_HEURISTIC_Skyline_default, + NK_RP_HEURISTIC_Skyline_BF_sortHeight +}; +enum NK_RP_INIT_STATE{NK_RP__INIT_skyline = 1}; + +NK_INTERN void +nk_rp_setup_allow_out_of_mem(struct nk_rp_context *context, int allow_out_of_mem) +{ + if (allow_out_of_mem) + /* if it's ok to run out of memory, then don't bother aligning them; */ + /* this gives better packing, but may fail due to OOM (even though */ + /* the rectangles easily fit). @TODO a smarter approach would be to only */ + /* quantize once we've hit OOM, then we could get rid of this parameter. */ + context->align = 1; + else { + /* if it's not ok to run out of memory, then quantize the widths */ + /* so that num_nodes is always enough nodes. */ + /* */ + /* I.e. num_nodes * align >= width */ + /* align >= width / num_nodes */ + /* align = ceil(width/num_nodes) */ + context->align = (context->width + context->num_nodes-1) / context->num_nodes; + } +} +NK_INTERN void +nk_rp_init_target(struct nk_rp_context *context, int width, int height, + struct nk_rp_node *nodes, int num_nodes) +{ + int i; +#ifndef STBRP_LARGE_RECTS + NK_ASSERT(width <= 0xffff && height <= 0xffff); +#endif + + for (i=0; i < num_nodes-1; ++i) + nodes[i].next = &nodes[i+1]; + nodes[i].next = 0; + context->init_mode = NK_RP__INIT_skyline; + context->heuristic = NK_RP_HEURISTIC_Skyline_default; + context->free_head = &nodes[0]; + context->active_head = &context->extra[0]; + context->width = width; + context->height = height; + context->num_nodes = num_nodes; + nk_rp_setup_allow_out_of_mem(context, 0); + + /* node 0 is the full width, node 1 is the sentinel (lets us not store width explicitly) */ + context->extra[0].x = 0; + context->extra[0].y = 0; + context->extra[0].next = &context->extra[1]; + context->extra[1].x = (nk_rp_coord) width; + context->extra[1].y = 65535; + context->extra[1].next = 0; +} +/* find minimum y position if it starts at x1 */ +NK_INTERN int +nk_rp__skyline_find_min_y(struct nk_rp_context *c, struct nk_rp_node *first, + int x0, int width, int *pwaste) +{ + struct nk_rp_node *node = first; + int x1 = x0 + width; + int min_y, visited_width, waste_area; + NK_ASSERT(first->x <= x0); + NK_UNUSED(c); + + NK_ASSERT(node->next->x > x0); + /* we ended up handling this in the caller for efficiency */ + NK_ASSERT(node->x <= x0); + + min_y = 0; + waste_area = 0; + visited_width = 0; + while (node->x < x1) + { + if (node->y > min_y) { + /* raise min_y higher. */ + /* we've accounted for all waste up to min_y, */ + /* but we'll now add more waste for everything we've visited */ + waste_area += visited_width * (node->y - min_y); + min_y = node->y; + /* the first time through, visited_width might be reduced */ + if (node->x < x0) + visited_width += node->next->x - x0; + else + visited_width += node->next->x - node->x; + } else { + /* add waste area */ + int under_width = node->next->x - node->x; + if (under_width + visited_width > width) + under_width = width - visited_width; + waste_area += under_width * (min_y - node->y); + visited_width += under_width; + } + node = node->next; + } + *pwaste = waste_area; + return min_y; +} +NK_INTERN struct nk_rp__findresult +nk_rp__skyline_find_best_pos(struct nk_rp_context *c, int width, int height) +{ + int best_waste = (1<<30), best_x, best_y = (1 << 30); + struct nk_rp__findresult fr; + struct nk_rp_node **prev, *node, *tail, **best = 0; + + /* align to multiple of c->align */ + width = (width + c->align - 1); + width -= width % c->align; + NK_ASSERT(width % c->align == 0); + + node = c->active_head; + prev = &c->active_head; + while (node->x + width <= c->width) { + int y,waste; + y = nk_rp__skyline_find_min_y(c, node, node->x, width, &waste); + /* actually just want to test BL */ + if (c->heuristic == NK_RP_HEURISTIC_Skyline_BL_sortHeight) { + /* bottom left */ + if (y < best_y) { + best_y = y; + best = prev; + } + } else { + /* best-fit */ + if (y + height <= c->height) { + /* can only use it if it first vertically */ + if (y < best_y || (y == best_y && waste < best_waste)) { + best_y = y; + best_waste = waste; + best = prev; + } + } + } + prev = &node->next; + node = node->next; + } + best_x = (best == 0) ? 0 : (*best)->x; + + /* if doing best-fit (BF), we also have to try aligning right edge to each node position */ + /* */ + /* e.g, if fitting */ + /* */ + /* ____________________ */ + /* |____________________| */ + /* */ + /* into */ + /* */ + /* | | */ + /* | ____________| */ + /* |____________| */ + /* */ + /* then right-aligned reduces waste, but bottom-left BL is always chooses left-aligned */ + /* */ + /* This makes BF take about 2x the time */ + if (c->heuristic == NK_RP_HEURISTIC_Skyline_BF_sortHeight) + { + tail = c->active_head; + node = c->active_head; + prev = &c->active_head; + /* find first node that's admissible */ + while (tail->x < width) + tail = tail->next; + while (tail) + { + int xpos = tail->x - width; + int y,waste; + NK_ASSERT(xpos >= 0); + /* find the left position that matches this */ + while (node->next->x <= xpos) { + prev = &node->next; + node = node->next; + } + NK_ASSERT(node->next->x > xpos && node->x <= xpos); + y = nk_rp__skyline_find_min_y(c, node, xpos, width, &waste); + if (y + height < c->height) { + if (y <= best_y) { + if (y < best_y || waste < best_waste || (waste==best_waste && xpos < best_x)) { + best_x = xpos; + NK_ASSERT(y <= best_y); + best_y = y; + best_waste = waste; + best = prev; + } + } + } + tail = tail->next; + } + } + fr.prev_link = best; + fr.x = best_x; + fr.y = best_y; + return fr; +} +NK_INTERN struct nk_rp__findresult +nk_rp__skyline_pack_rectangle(struct nk_rp_context *context, int width, int height) +{ + /* find best position according to heuristic */ + struct nk_rp__findresult res = nk_rp__skyline_find_best_pos(context, width, height); + struct nk_rp_node *node, *cur; + + /* bail if: */ + /* 1. it failed */ + /* 2. the best node doesn't fit (we don't always check this) */ + /* 3. we're out of memory */ + if (res.prev_link == 0 || res.y + height > context->height || context->free_head == 0) { + res.prev_link = 0; + return res; + } + + /* on success, create new node */ + node = context->free_head; + node->x = (nk_rp_coord) res.x; + node->y = (nk_rp_coord) (res.y + height); + + context->free_head = node->next; + + /* insert the new node into the right starting point, and */ + /* let 'cur' point to the remaining nodes needing to be */ + /* stitched back in */ + cur = *res.prev_link; + if (cur->x < res.x) { + /* preserve the existing one, so start testing with the next one */ + struct nk_rp_node *next = cur->next; + cur->next = node; + cur = next; + } else { + *res.prev_link = node; + } + + /* from here, traverse cur and free the nodes, until we get to one */ + /* that shouldn't be freed */ + while (cur->next && cur->next->x <= res.x + width) { + struct nk_rp_node *next = cur->next; + /* move the current node to the free list */ + cur->next = context->free_head; + context->free_head = cur; + cur = next; + } + /* stitch the list back in */ + node->next = cur; + + if (cur->x < res.x + width) + cur->x = (nk_rp_coord) (res.x + width); + return res; +} +NK_INTERN int +nk_rect_height_compare(const void *a, const void *b) +{ + const struct nk_rp_rect *p = (const struct nk_rp_rect *) a; + const struct nk_rp_rect *q = (const struct nk_rp_rect *) b; + if (p->h > q->h) + return -1; + if (p->h < q->h) + return 1; + return (p->w > q->w) ? -1 : (p->w < q->w); +} +NK_INTERN int +nk_rect_original_order(const void *a, const void *b) +{ + const struct nk_rp_rect *p = (const struct nk_rp_rect *) a; + const struct nk_rp_rect *q = (const struct nk_rp_rect *) b; + return (p->was_packed < q->was_packed) ? -1 : (p->was_packed > q->was_packed); +} +NK_INTERN void +nk_rp_qsort(struct nk_rp_rect *array, unsigned int len, int(*cmp)(const void*,const void*)) +{ + /* iterative quick sort */ + #define NK_MAX_SORT_STACK 64 + unsigned right, left = 0, stack[NK_MAX_SORT_STACK], pos = 0; + unsigned seed = len/2 * 69069+1; + for (;;) { + for (; left+1 < len; len++) { + struct nk_rp_rect pivot, tmp; + if (pos == NK_MAX_SORT_STACK) len = stack[pos = 0]; + pivot = array[left+seed%(len-left)]; + seed = seed * 69069 + 1; + stack[pos++] = len; + for (right = left-1;;) { + while (cmp(&array[++right], &pivot) < 0); + while (cmp(&pivot, &array[--len]) < 0); + if (right >= len) break; + tmp = array[right]; + array[right] = array[len]; + array[len] = tmp; + } + } + if (pos == 0) break; + left = len; + len = stack[--pos]; + } + #undef NK_MAX_SORT_STACK +} +NK_INTERN void +nk_rp_pack_rects(struct nk_rp_context *context, struct nk_rp_rect *rects, int num_rects) +{ + int i; + /* we use the 'was_packed' field internally to allow sorting/unsorting */ + for (i=0; i < num_rects; ++i) { + rects[i].was_packed = i; + } + + /* sort according to heuristic */ + nk_rp_qsort(rects, (unsigned)num_rects, nk_rect_height_compare); + + for (i=0; i < num_rects; ++i) { + struct nk_rp__findresult fr = nk_rp__skyline_pack_rectangle(context, rects[i].w, rects[i].h); + if (fr.prev_link) { + rects[i].x = (nk_rp_coord) fr.x; + rects[i].y = (nk_rp_coord) fr.y; + } else { + rects[i].x = rects[i].y = NK_RP__MAXVAL; + } + } + + /* unsort */ + nk_rp_qsort(rects, (unsigned)num_rects, nk_rect_original_order); + + /* set was_packed flags */ + for (i=0; i < num_rects; ++i) + rects[i].was_packed = !(rects[i].x == NK_RP__MAXVAL && rects[i].y == NK_RP__MAXVAL); +} + +/* + * ============================================================== + * + * TRUETYPE + * + * =============================================================== + */ +/* stb_truetype.h - v1.07 - public domain */ +#define NK_TT_MAX_OVERSAMPLE 8 +#define NK_TT__OVER_MASK (NK_TT_MAX_OVERSAMPLE-1) + +struct nk_tt_bakedchar { + unsigned short x0,y0,x1,y1; + /* coordinates of bbox in bitmap */ + float xoff,yoff,xadvance; +}; + +struct nk_tt_aligned_quad{ + float x0,y0,s0,t0; /* top-left */ + float x1,y1,s1,t1; /* bottom-right */ +}; + +struct nk_tt_packedchar { + unsigned short x0,y0,x1,y1; + /* coordinates of bbox in bitmap */ + float xoff,yoff,xadvance; + float xoff2,yoff2; +}; + +struct nk_tt_pack_range { + float font_size; + int first_unicode_codepoint_in_range; + /* if non-zero, then the chars are continuous, and this is the first codepoint */ + int *array_of_unicode_codepoints; + /* if non-zero, then this is an array of unicode codepoints */ + int num_chars; + struct nk_tt_packedchar *chardata_for_range; /* output */ + unsigned char h_oversample, v_oversample; + /* don't set these, they're used internally */ +}; + +struct nk_tt_pack_context { + void *pack_info; + int width; + int height; + int stride_in_bytes; + int padding; + unsigned int h_oversample, v_oversample; + unsigned char *pixels; + void *nodes; +}; + +struct nk_tt_fontinfo { + const unsigned char* data; /* pointer to .ttf file */ + int fontstart;/* offset of start of font */ + int numGlyphs;/* number of glyphs, needed for range checking */ + int loca,head,glyf,hhea,hmtx,kern; /* table locations as offset from start of .ttf */ + int index_map; /* a cmap mapping for our chosen character encoding */ + int indexToLocFormat; /* format needed to map from glyph index to glyph */ +}; + +enum { + NK_TT_vmove=1, + NK_TT_vline, + NK_TT_vcurve +}; + +struct nk_tt_vertex { + short x,y,cx,cy; + unsigned char type,padding; +}; + +struct nk_tt__bitmap{ + int w,h,stride; + unsigned char *pixels; +}; + +struct nk_tt__hheap_chunk { + struct nk_tt__hheap_chunk *next; +}; +struct nk_tt__hheap { + struct nk_allocator alloc; + struct nk_tt__hheap_chunk *head; + void *first_free; + int num_remaining_in_head_chunk; +}; + +struct nk_tt__edge { + float x0,y0, x1,y1; + int invert; +}; + +struct nk_tt__active_edge { + struct nk_tt__active_edge *next; + float fx,fdx,fdy; + float direction; + float sy; + float ey; +}; +struct nk_tt__point {float x,y;}; + +#define NK_TT_MACSTYLE_DONTCARE 0 +#define NK_TT_MACSTYLE_BOLD 1 +#define NK_TT_MACSTYLE_ITALIC 2 +#define NK_TT_MACSTYLE_UNDERSCORE 4 +#define NK_TT_MACSTYLE_NONE 8 +/* <= not same as 0, this makes us check the bitfield is 0 */ + +enum { /* platformID */ + NK_TT_PLATFORM_ID_UNICODE =0, + NK_TT_PLATFORM_ID_MAC =1, + NK_TT_PLATFORM_ID_ISO =2, + NK_TT_PLATFORM_ID_MICROSOFT =3 +}; + +enum { /* encodingID for NK_TT_PLATFORM_ID_UNICODE */ + NK_TT_UNICODE_EID_UNICODE_1_0 =0, + NK_TT_UNICODE_EID_UNICODE_1_1 =1, + NK_TT_UNICODE_EID_ISO_10646 =2, + NK_TT_UNICODE_EID_UNICODE_2_0_BMP=3, + NK_TT_UNICODE_EID_UNICODE_2_0_FULL=4 +}; + +enum { /* encodingID for NK_TT_PLATFORM_ID_MICROSOFT */ + NK_TT_MS_EID_SYMBOL =0, + NK_TT_MS_EID_UNICODE_BMP =1, + NK_TT_MS_EID_SHIFTJIS =2, + NK_TT_MS_EID_UNICODE_FULL =10 +}; + +enum { /* encodingID for NK_TT_PLATFORM_ID_MAC; same as Script Manager codes */ + NK_TT_MAC_EID_ROMAN =0, NK_TT_MAC_EID_ARABIC =4, + NK_TT_MAC_EID_JAPANESE =1, NK_TT_MAC_EID_HEBREW =5, + NK_TT_MAC_EID_CHINESE_TRAD =2, NK_TT_MAC_EID_GREEK =6, + NK_TT_MAC_EID_KOREAN =3, NK_TT_MAC_EID_RUSSIAN =7 +}; + +enum { /* languageID for NK_TT_PLATFORM_ID_MICROSOFT; same as LCID... */ + /* problematic because there are e.g. 16 english LCIDs and 16 arabic LCIDs */ + NK_TT_MS_LANG_ENGLISH =0x0409, NK_TT_MS_LANG_ITALIAN =0x0410, + NK_TT_MS_LANG_CHINESE =0x0804, NK_TT_MS_LANG_JAPANESE =0x0411, + NK_TT_MS_LANG_DUTCH =0x0413, NK_TT_MS_LANG_KOREAN =0x0412, + NK_TT_MS_LANG_FRENCH =0x040c, NK_TT_MS_LANG_RUSSIAN =0x0419, + NK_TT_MS_LANG_GERMAN =0x0407, NK_TT_MS_LANG_SPANISH =0x0409, + NK_TT_MS_LANG_HEBREW =0x040d, NK_TT_MS_LANG_SWEDISH =0x041D +}; + +enum { /* languageID for NK_TT_PLATFORM_ID_MAC */ + NK_TT_MAC_LANG_ENGLISH =0 , NK_TT_MAC_LANG_JAPANESE =11, + NK_TT_MAC_LANG_ARABIC =12, NK_TT_MAC_LANG_KOREAN =23, + NK_TT_MAC_LANG_DUTCH =4 , NK_TT_MAC_LANG_RUSSIAN =32, + NK_TT_MAC_LANG_FRENCH =1 , NK_TT_MAC_LANG_SPANISH =6 , + NK_TT_MAC_LANG_GERMAN =2 , NK_TT_MAC_LANG_SWEDISH =5 , + NK_TT_MAC_LANG_HEBREW =10, NK_TT_MAC_LANG_CHINESE_SIMPLIFIED =33, + NK_TT_MAC_LANG_ITALIAN =3 , NK_TT_MAC_LANG_CHINESE_TRAD =19 +}; + +#define nk_ttBYTE(p) (* (const nk_byte *) (p)) +#define nk_ttCHAR(p) (* (const char *) (p)) + +#if defined(NK_BIGENDIAN) && !defined(NK_ALLOW_UNALIGNED_TRUETYPE) + #define nk_ttUSHORT(p) (* (nk_ushort *) (p)) + #define nk_ttSHORT(p) (* (nk_short *) (p)) + #define nk_ttULONG(p) (* (nk_uint *) (p)) + #define nk_ttLONG(p) (* (nk_int *) (p)) +#else + static nk_ushort nk_ttUSHORT(const nk_byte *p) { return (nk_ushort)(p[0]*256 + p[1]); } + static nk_short nk_ttSHORT(const nk_byte *p) { return (nk_short)(p[0]*256 + p[1]); } + static nk_uint nk_ttULONG(const nk_byte *p) { return (nk_uint)((p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]); } +#endif + +#define nk_tt_tag4(p,c0,c1,c2,c3)\ + ((p)[0] == (c0) && (p)[1] == (c1) && (p)[2] == (c2) && (p)[3] == (c3)) +#define nk_tt_tag(p,str) nk_tt_tag4(p,str[0],str[1],str[2],str[3]) + +NK_INTERN int nk_tt_GetGlyphShape(const struct nk_tt_fontinfo *info, struct nk_allocator *alloc, + int glyph_index, struct nk_tt_vertex **pvertices); + +NK_INTERN nk_uint +nk_tt__find_table(const nk_byte *data, nk_uint fontstart, const char *tag) +{ + /* @OPTIMIZE: binary search */ + nk_int num_tables = nk_ttUSHORT(data+fontstart+4); + nk_uint tabledir = fontstart + 12; + nk_int i; + for (i = 0; i < num_tables; ++i) { + nk_uint loc = tabledir + (nk_uint)(16*i); + if (nk_tt_tag(data+loc+0, tag)) + return nk_ttULONG(data+loc+8); + } + return 0; +} +NK_INTERN int +nk_tt_InitFont(struct nk_tt_fontinfo *info, const unsigned char *data2, int fontstart) +{ + nk_uint cmap, t; + nk_int i,numTables; + const nk_byte *data = (const nk_byte *) data2; + + info->data = data; + info->fontstart = fontstart; + + cmap = nk_tt__find_table(data, (nk_uint)fontstart, "cmap"); /* required */ + info->loca = (int)nk_tt__find_table(data, (nk_uint)fontstart, "loca"); /* required */ + info->head = (int)nk_tt__find_table(data, (nk_uint)fontstart, "head"); /* required */ + info->glyf = (int)nk_tt__find_table(data, (nk_uint)fontstart, "glyf"); /* required */ + info->hhea = (int)nk_tt__find_table(data, (nk_uint)fontstart, "hhea"); /* required */ + info->hmtx = (int)nk_tt__find_table(data, (nk_uint)fontstart, "hmtx"); /* required */ + info->kern = (int)nk_tt__find_table(data, (nk_uint)fontstart, "kern"); /* not required */ + if (!cmap || !info->loca || !info->head || !info->glyf || !info->hhea || !info->hmtx) + return 0; + + t = nk_tt__find_table(data, (nk_uint)fontstart, "maxp"); + if (t) info->numGlyphs = nk_ttUSHORT(data+t+4); + else info->numGlyphs = 0xffff; + + /* find a cmap encoding table we understand *now* to avoid searching */ + /* later. (todo: could make this installable) */ + /* the same regardless of glyph. */ + numTables = nk_ttUSHORT(data + cmap + 2); + info->index_map = 0; + for (i=0; i < numTables; ++i) + { + nk_uint encoding_record = cmap + 4 + 8 * (nk_uint)i; + /* find an encoding we understand: */ + switch(nk_ttUSHORT(data+encoding_record)) { + case NK_TT_PLATFORM_ID_MICROSOFT: + switch (nk_ttUSHORT(data+encoding_record+2)) { + case NK_TT_MS_EID_UNICODE_BMP: + case NK_TT_MS_EID_UNICODE_FULL: + /* MS/Unicode */ + info->index_map = (int)(cmap + nk_ttULONG(data+encoding_record+4)); + break; + default: break; + } break; + case NK_TT_PLATFORM_ID_UNICODE: + /* Mac/iOS has these */ + /* all the encodingIDs are unicode, so we don't bother to check it */ + info->index_map = (int)(cmap + nk_ttULONG(data+encoding_record+4)); + break; + default: break; + } + } + if (info->index_map == 0) + return 0; + info->indexToLocFormat = nk_ttUSHORT(data+info->head + 50); + return 1; +} +NK_INTERN int +nk_tt_FindGlyphIndex(const struct nk_tt_fontinfo *info, int unicode_codepoint) +{ + const nk_byte *data = info->data; + nk_uint index_map = (nk_uint)info->index_map; + + nk_ushort format = nk_ttUSHORT(data + index_map + 0); + if (format == 0) { /* apple byte encoding */ + nk_int bytes = nk_ttUSHORT(data + index_map + 2); + if (unicode_codepoint < bytes-6) + return nk_ttBYTE(data + index_map + 6 + unicode_codepoint); + return 0; + } else if (format == 6) { + nk_uint first = nk_ttUSHORT(data + index_map + 6); + nk_uint count = nk_ttUSHORT(data + index_map + 8); + if ((nk_uint) unicode_codepoint >= first && (nk_uint) unicode_codepoint < first+count) + return nk_ttUSHORT(data + index_map + 10 + (unicode_codepoint - (int)first)*2); + return 0; + } else if (format == 2) { + NK_ASSERT(0); /* @TODO: high-byte mapping for japanese/chinese/korean */ + return 0; + } else if (format == 4) { /* standard mapping for windows fonts: binary search collection of ranges */ + nk_ushort segcount = nk_ttUSHORT(data+index_map+6) >> 1; + nk_ushort searchRange = nk_ttUSHORT(data+index_map+8) >> 1; + nk_ushort entrySelector = nk_ttUSHORT(data+index_map+10); + nk_ushort rangeShift = nk_ttUSHORT(data+index_map+12) >> 1; + + /* do a binary search of the segments */ + nk_uint endCount = index_map + 14; + nk_uint search = endCount; + + if (unicode_codepoint > 0xffff) + return 0; + + /* they lie from endCount .. endCount + segCount */ + /* but searchRange is the nearest power of two, so... */ + if (unicode_codepoint >= nk_ttUSHORT(data + search + rangeShift*2)) + search += (nk_uint)(rangeShift*2); + + /* now decrement to bias correctly to find smallest */ + search -= 2; + while (entrySelector) { + nk_ushort end; + searchRange >>= 1; + end = nk_ttUSHORT(data + search + searchRange*2); + if (unicode_codepoint > end) + search += (nk_uint)(searchRange*2); + --entrySelector; + } + search += 2; + + { + nk_ushort offset, start; + nk_ushort item = (nk_ushort) ((search - endCount) >> 1); + + NK_ASSERT(unicode_codepoint <= nk_ttUSHORT(data + endCount + 2*item)); + start = nk_ttUSHORT(data + index_map + 14 + segcount*2 + 2 + 2*item); + if (unicode_codepoint < start) + return 0; + + offset = nk_ttUSHORT(data + index_map + 14 + segcount*6 + 2 + 2*item); + if (offset == 0) + return (nk_ushort) (unicode_codepoint + nk_ttSHORT(data + index_map + 14 + segcount*4 + 2 + 2*item)); + + return nk_ttUSHORT(data + offset + (unicode_codepoint-start)*2 + index_map + 14 + segcount*6 + 2 + 2*item); + } + } else if (format == 12 || format == 13) { + nk_uint ngroups = nk_ttULONG(data+index_map+12); + nk_int low,high; + low = 0; high = (nk_int)ngroups; + /* Binary search the right group. */ + while (low < high) { + nk_int mid = low + ((high-low) >> 1); /* rounds down, so low <= mid < high */ + nk_uint start_char = nk_ttULONG(data+index_map+16+mid*12); + nk_uint end_char = nk_ttULONG(data+index_map+16+mid*12+4); + if ((nk_uint) unicode_codepoint < start_char) + high = mid; + else if ((nk_uint) unicode_codepoint > end_char) + low = mid+1; + else { + nk_uint start_glyph = nk_ttULONG(data+index_map+16+mid*12+8); + if (format == 12) + return (int)start_glyph + (int)unicode_codepoint - (int)start_char; + else /* format == 13 */ + return (int)start_glyph; + } + } + return 0; /* not found */ + } + /* @TODO */ + NK_ASSERT(0); + return 0; +} +NK_INTERN void +nk_tt_setvertex(struct nk_tt_vertex *v, nk_byte type, nk_int x, nk_int y, nk_int cx, nk_int cy) +{ + v->type = type; + v->x = (nk_short) x; + v->y = (nk_short) y; + v->cx = (nk_short) cx; + v->cy = (nk_short) cy; +} +NK_INTERN int +nk_tt__GetGlyfOffset(const struct nk_tt_fontinfo *info, int glyph_index) +{ + int g1,g2; + if (glyph_index >= info->numGlyphs) return -1; /* glyph index out of range */ + if (info->indexToLocFormat >= 2) return -1; /* unknown index->glyph map format */ + + if (info->indexToLocFormat == 0) { + g1 = info->glyf + nk_ttUSHORT(info->data + info->loca + glyph_index * 2) * 2; + g2 = info->glyf + nk_ttUSHORT(info->data + info->loca + glyph_index * 2 + 2) * 2; + } else { + g1 = info->glyf + (int)nk_ttULONG (info->data + info->loca + glyph_index * 4); + g2 = info->glyf + (int)nk_ttULONG (info->data + info->loca + glyph_index * 4 + 4); + } + return g1==g2 ? -1 : g1; /* if length is 0, return -1 */ +} +NK_INTERN int +nk_tt_GetGlyphBox(const struct nk_tt_fontinfo *info, int glyph_index, + int *x0, int *y0, int *x1, int *y1) +{ + int g = nk_tt__GetGlyfOffset(info, glyph_index); + if (g < 0) return 0; + + if (x0) *x0 = nk_ttSHORT(info->data + g + 2); + if (y0) *y0 = nk_ttSHORT(info->data + g + 4); + if (x1) *x1 = nk_ttSHORT(info->data + g + 6); + if (y1) *y1 = nk_ttSHORT(info->data + g + 8); + return 1; +} +NK_INTERN int +nk_tt__close_shape(struct nk_tt_vertex *vertices, int num_vertices, int was_off, + int start_off, nk_int sx, nk_int sy, nk_int scx, nk_int scy, nk_int cx, nk_int cy) +{ + if (start_off) { + if (was_off) + nk_tt_setvertex(&vertices[num_vertices++], NK_TT_vcurve, (cx+scx)>>1, (cy+scy)>>1, cx,cy); + nk_tt_setvertex(&vertices[num_vertices++], NK_TT_vcurve, sx,sy,scx,scy); + } else { + if (was_off) + nk_tt_setvertex(&vertices[num_vertices++], NK_TT_vcurve,sx,sy,cx,cy); + else + nk_tt_setvertex(&vertices[num_vertices++], NK_TT_vline,sx,sy,0,0); + } + return num_vertices; +} +NK_INTERN int +nk_tt_GetGlyphShape(const struct nk_tt_fontinfo *info, struct nk_allocator *alloc, + int glyph_index, struct nk_tt_vertex **pvertices) +{ + nk_short numberOfContours; + const nk_byte *endPtsOfContours; + const nk_byte *data = info->data; + struct nk_tt_vertex *vertices=0; + int num_vertices=0; + int g = nk_tt__GetGlyfOffset(info, glyph_index); + *pvertices = 0; + + if (g < 0) return 0; + numberOfContours = nk_ttSHORT(data + g); + if (numberOfContours > 0) { + nk_byte flags=0,flagcount; + nk_int ins, i,j=0,m,n, next_move, was_off=0, off, start_off=0; + nk_int x,y,cx,cy,sx,sy, scx,scy; + const nk_byte *points; + endPtsOfContours = (data + g + 10); + ins = nk_ttUSHORT(data + g + 10 + numberOfContours * 2); + points = data + g + 10 + numberOfContours * 2 + 2 + ins; + + n = 1+nk_ttUSHORT(endPtsOfContours + numberOfContours*2-2); + m = n + 2*numberOfContours; /* a loose bound on how many vertices we might need */ + vertices = (struct nk_tt_vertex *)alloc->alloc(alloc->userdata, 0, (nk_size)m * sizeof(vertices[0])); + if (vertices == 0) + return 0; + + next_move = 0; + flagcount=0; + + /* in first pass, we load uninterpreted data into the allocated array */ + /* above, shifted to the end of the array so we won't overwrite it when */ + /* we create our final data starting from the front */ + off = m - n; /* starting offset for uninterpreted data, regardless of how m ends up being calculated */ + + /* first load flags */ + for (i=0; i < n; ++i) { + if (flagcount == 0) { + flags = *points++; + if (flags & 8) + flagcount = *points++; + } else --flagcount; + vertices[off+i].type = flags; + } + + /* now load x coordinates */ + x=0; + for (i=0; i < n; ++i) { + flags = vertices[off+i].type; + if (flags & 2) { + nk_short dx = *points++; + x += (flags & 16) ? dx : -dx; /* ??? */ + } else { + if (!(flags & 16)) { + x = x + (nk_short) (points[0]*256 + points[1]); + points += 2; + } + } + vertices[off+i].x = (nk_short) x; + } + + /* now load y coordinates */ + y=0; + for (i=0; i < n; ++i) { + flags = vertices[off+i].type; + if (flags & 4) { + nk_short dy = *points++; + y += (flags & 32) ? dy : -dy; /* ??? */ + } else { + if (!(flags & 32)) { + y = y + (nk_short) (points[0]*256 + points[1]); + points += 2; + } + } + vertices[off+i].y = (nk_short) y; + } + + /* now convert them to our format */ + num_vertices=0; + sx = sy = cx = cy = scx = scy = 0; + for (i=0; i < n; ++i) + { + flags = vertices[off+i].type; + x = (nk_short) vertices[off+i].x; + y = (nk_short) vertices[off+i].y; + + if (next_move == i) { + if (i != 0) + num_vertices = nk_tt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy); + + /* now start the new one */ + start_off = !(flags & 1); + if (start_off) { + /* if we start off with an off-curve point, then when we need to find a point on the curve */ + /* where we can start, and we need to save some state for when we wraparound. */ + scx = x; + scy = y; + if (!(vertices[off+i+1].type & 1)) { + /* next point is also a curve point, so interpolate an on-point curve */ + sx = (x + (nk_int) vertices[off+i+1].x) >> 1; + sy = (y + (nk_int) vertices[off+i+1].y) >> 1; + } else { + /* otherwise just use the next point as our start point */ + sx = (nk_int) vertices[off+i+1].x; + sy = (nk_int) vertices[off+i+1].y; + ++i; /* we're using point i+1 as the starting point, so skip it */ + } + } else { + sx = x; + sy = y; + } + nk_tt_setvertex(&vertices[num_vertices++], NK_TT_vmove,sx,sy,0,0); + was_off = 0; + next_move = 1 + nk_ttUSHORT(endPtsOfContours+j*2); + ++j; + } else { + if (!(flags & 1)) + { /* if it's a curve */ + if (was_off) /* two off-curve control points in a row means interpolate an on-curve midpoint */ + nk_tt_setvertex(&vertices[num_vertices++], NK_TT_vcurve, (cx+x)>>1, (cy+y)>>1, cx, cy); + cx = x; + cy = y; + was_off = 1; + } else { + if (was_off) + nk_tt_setvertex(&vertices[num_vertices++], NK_TT_vcurve, x,y, cx, cy); + else nk_tt_setvertex(&vertices[num_vertices++], NK_TT_vline, x,y,0,0); + was_off = 0; + } + } + } + num_vertices = nk_tt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy); + } else if (numberOfContours == -1) { + /* Compound shapes. */ + int more = 1; + const nk_byte *comp = data + g + 10; + num_vertices = 0; + vertices = 0; + + while (more) + { + nk_ushort flags, gidx; + int comp_num_verts = 0, i; + struct nk_tt_vertex *comp_verts = 0, *tmp = 0; + float mtx[6] = {1,0,0,1,0,0}, m, n; + + flags = (nk_ushort)nk_ttSHORT(comp); comp+=2; + gidx = (nk_ushort)nk_ttSHORT(comp); comp+=2; + + if (flags & 2) { /* XY values */ + if (flags & 1) { /* shorts */ + mtx[4] = nk_ttSHORT(comp); comp+=2; + mtx[5] = nk_ttSHORT(comp); comp+=2; + } else { + mtx[4] = nk_ttCHAR(comp); comp+=1; + mtx[5] = nk_ttCHAR(comp); comp+=1; + } + } else { + /* @TODO handle matching point */ + NK_ASSERT(0); + } + if (flags & (1<<3)) { /* WE_HAVE_A_SCALE */ + mtx[0] = mtx[3] = nk_ttSHORT(comp)/16384.0f; comp+=2; + mtx[1] = mtx[2] = 0; + } else if (flags & (1<<6)) { /* WE_HAVE_AN_X_AND_YSCALE */ + mtx[0] = nk_ttSHORT(comp)/16384.0f; comp+=2; + mtx[1] = mtx[2] = 0; + mtx[3] = nk_ttSHORT(comp)/16384.0f; comp+=2; + } else if (flags & (1<<7)) { /* WE_HAVE_A_TWO_BY_TWO */ + mtx[0] = nk_ttSHORT(comp)/16384.0f; comp+=2; + mtx[1] = nk_ttSHORT(comp)/16384.0f; comp+=2; + mtx[2] = nk_ttSHORT(comp)/16384.0f; comp+=2; + mtx[3] = nk_ttSHORT(comp)/16384.0f; comp+=2; + } + + /* Find transformation scales. */ + m = (float) NK_SQRT(mtx[0]*mtx[0] + mtx[1]*mtx[1]); + n = (float) NK_SQRT(mtx[2]*mtx[2] + mtx[3]*mtx[3]); + + /* Get indexed glyph. */ + comp_num_verts = nk_tt_GetGlyphShape(info, alloc, gidx, &comp_verts); + if (comp_num_verts > 0) + { + /* Transform vertices. */ + for (i = 0; i < comp_num_verts; ++i) { + struct nk_tt_vertex* v = &comp_verts[i]; + short x,y; + x=v->x; y=v->y; + v->x = (short)(m * (mtx[0]*x + mtx[2]*y + mtx[4])); + v->y = (short)(n * (mtx[1]*x + mtx[3]*y + mtx[5])); + x=v->cx; y=v->cy; + v->cx = (short)(m * (mtx[0]*x + mtx[2]*y + mtx[4])); + v->cy = (short)(n * (mtx[1]*x + mtx[3]*y + mtx[5])); + } + /* Append vertices. */ + tmp = (struct nk_tt_vertex*)alloc->alloc(alloc->userdata, 0, + (nk_size)(num_vertices+comp_num_verts)*sizeof(struct nk_tt_vertex)); + if (!tmp) { + if (vertices) alloc->free(alloc->userdata, vertices); + if (comp_verts) alloc->free(alloc->userdata, comp_verts); + return 0; + } + if (num_vertices > 0) NK_MEMCPY(tmp, vertices, (nk_size)num_vertices*sizeof(struct nk_tt_vertex)); + NK_MEMCPY(tmp+num_vertices, comp_verts, (nk_size)comp_num_verts*sizeof(struct nk_tt_vertex)); + if (vertices) alloc->free(alloc->userdata,vertices); + vertices = tmp; + alloc->free(alloc->userdata,comp_verts); + num_vertices += comp_num_verts; + } + /* More components ? */ + more = flags & (1<<5); + } + } else if (numberOfContours < 0) { + /* @TODO other compound variations? */ + NK_ASSERT(0); + } else { + /* numberOfCounters == 0, do nothing */ + } + *pvertices = vertices; + return num_vertices; +} +NK_INTERN void +nk_tt_GetGlyphHMetrics(const struct nk_tt_fontinfo *info, int glyph_index, + int *advanceWidth, int *leftSideBearing) +{ + nk_ushort numOfLongHorMetrics = nk_ttUSHORT(info->data+info->hhea + 34); + if (glyph_index < numOfLongHorMetrics) { + if (advanceWidth) + *advanceWidth = nk_ttSHORT(info->data + info->hmtx + 4*glyph_index); + if (leftSideBearing) + *leftSideBearing = nk_ttSHORT(info->data + info->hmtx + 4*glyph_index + 2); + } else { + if (advanceWidth) + *advanceWidth = nk_ttSHORT(info->data + info->hmtx + 4*(numOfLongHorMetrics-1)); + if (leftSideBearing) + *leftSideBearing = nk_ttSHORT(info->data + info->hmtx + 4*numOfLongHorMetrics + 2*(glyph_index - numOfLongHorMetrics)); + } +} +NK_INTERN void +nk_tt_GetFontVMetrics(const struct nk_tt_fontinfo *info, + int *ascent, int *descent, int *lineGap) +{ + if (ascent ) *ascent = nk_ttSHORT(info->data+info->hhea + 4); + if (descent) *descent = nk_ttSHORT(info->data+info->hhea + 6); + if (lineGap) *lineGap = nk_ttSHORT(info->data+info->hhea + 8); +} +NK_INTERN float +nk_tt_ScaleForPixelHeight(const struct nk_tt_fontinfo *info, float height) +{ + int fheight = nk_ttSHORT(info->data + info->hhea + 4) - nk_ttSHORT(info->data + info->hhea + 6); + return (float) height / (float)fheight; +} +NK_INTERN float +nk_tt_ScaleForMappingEmToPixels(const struct nk_tt_fontinfo *info, float pixels) +{ + int unitsPerEm = nk_ttUSHORT(info->data + info->head + 18); + return pixels / (float)unitsPerEm; +} + +/*------------------------------------------------------------- + * antialiasing software rasterizer + * --------------------------------------------------------------*/ +NK_INTERN void +nk_tt_GetGlyphBitmapBoxSubpixel(const struct nk_tt_fontinfo *font, + int glyph, float scale_x, float scale_y,float shift_x, float shift_y, + int *ix0, int *iy0, int *ix1, int *iy1) +{ + int x0,y0,x1,y1; + if (!nk_tt_GetGlyphBox(font, glyph, &x0,&y0,&x1,&y1)) { + /* e.g. space character */ + if (ix0) *ix0 = 0; + if (iy0) *iy0 = 0; + if (ix1) *ix1 = 0; + if (iy1) *iy1 = 0; + } else { + /* move to integral bboxes (treating pixels as little squares, what pixels get touched)? */ + if (ix0) *ix0 = nk_ifloorf((float)x0 * scale_x + shift_x); + if (iy0) *iy0 = nk_ifloorf((float)-y1 * scale_y + shift_y); + if (ix1) *ix1 = nk_iceilf ((float)x1 * scale_x + shift_x); + if (iy1) *iy1 = nk_iceilf ((float)-y0 * scale_y + shift_y); + } +} +NK_INTERN void +nk_tt_GetGlyphBitmapBox(const struct nk_tt_fontinfo *font, int glyph, + float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) +{ + nk_tt_GetGlyphBitmapBoxSubpixel(font, glyph, scale_x, scale_y,0.0f,0.0f, ix0, iy0, ix1, iy1); +} + +/*------------------------------------------------------------- + * Rasterizer + * --------------------------------------------------------------*/ +NK_INTERN void* +nk_tt__hheap_alloc(struct nk_tt__hheap *hh, nk_size size) +{ + if (hh->first_free) { + void *p = hh->first_free; + hh->first_free = * (void **) p; + return p; + } else { + if (hh->num_remaining_in_head_chunk == 0) { + int count = (size < 32 ? 2000 : size < 128 ? 800 : 100); + struct nk_tt__hheap_chunk *c = (struct nk_tt__hheap_chunk *) + hh->alloc.alloc(hh->alloc.userdata, 0, + sizeof(struct nk_tt__hheap_chunk) + size * (nk_size)count); + if (c == 0) return 0; + c->next = hh->head; + hh->head = c; + hh->num_remaining_in_head_chunk = count; + } + --hh->num_remaining_in_head_chunk; + return (char *) (hh->head) + size * (nk_size)hh->num_remaining_in_head_chunk; + } +} +NK_INTERN void +nk_tt__hheap_free(struct nk_tt__hheap *hh, void *p) +{ + *(void **) p = hh->first_free; + hh->first_free = p; +} +NK_INTERN void +nk_tt__hheap_cleanup(struct nk_tt__hheap *hh) +{ + struct nk_tt__hheap_chunk *c = hh->head; + while (c) { + struct nk_tt__hheap_chunk *n = c->next; + hh->alloc.free(hh->alloc.userdata, c); + c = n; + } +} +NK_INTERN struct nk_tt__active_edge* +nk_tt__new_active(struct nk_tt__hheap *hh, struct nk_tt__edge *e, + int off_x, float start_point) +{ + struct nk_tt__active_edge *z = (struct nk_tt__active_edge *) + nk_tt__hheap_alloc(hh, sizeof(*z)); + float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); + /*STBTT_assert(e->y0 <= start_point); */ + if (!z) return z; + z->fdx = dxdy; + z->fdy = (dxdy != 0) ? (1/dxdy): 0; + z->fx = e->x0 + dxdy * (start_point - e->y0); + z->fx -= (float)off_x; + z->direction = e->invert ? 1.0f : -1.0f; + z->sy = e->y0; + z->ey = e->y1; + z->next = 0; + return z; +} +NK_INTERN void +nk_tt__handle_clipped_edge(float *scanline, int x, struct nk_tt__active_edge *e, + float x0, float y0, float x1, float y1) +{ + if (y0 == y1) return; + NK_ASSERT(y0 < y1); + NK_ASSERT(e->sy <= e->ey); + if (y0 > e->ey) return; + if (y1 < e->sy) return; + if (y0 < e->sy) { + x0 += (x1-x0) * (e->sy - y0) / (y1-y0); + y0 = e->sy; + } + if (y1 > e->ey) { + x1 += (x1-x0) * (e->ey - y1) / (y1-y0); + y1 = e->ey; + } + + if (x0 == x) NK_ASSERT(x1 <= x+1); + else if (x0 == x+1) NK_ASSERT(x1 >= x); + else if (x0 <= x) NK_ASSERT(x1 <= x); + else if (x0 >= x+1) NK_ASSERT(x1 >= x+1); + else NK_ASSERT(x1 >= x && x1 <= x+1); + + if (x0 <= x && x1 <= x) + scanline[x] += e->direction * (y1-y0); + else if (x0 >= x+1 && x1 >= x+1); + else { + NK_ASSERT(x0 >= x && x0 <= x+1 && x1 >= x && x1 <= x+1); + /* coverage = 1 - average x position */ + scanline[x] += (float)e->direction * (float)(y1-y0) * (1.0f-((x0-(float)x)+(x1-(float)x))/2.0f); + } +} +NK_INTERN void +nk_tt__fill_active_edges_new(float *scanline, float *scanline_fill, int len, + struct nk_tt__active_edge *e, float y_top) +{ + float y_bottom = y_top+1; + while (e) + { + /* brute force every pixel */ + /* compute intersection points with top & bottom */ + NK_ASSERT(e->ey >= y_top); + if (e->fdx == 0) { + float x0 = e->fx; + if (x0 < len) { + if (x0 >= 0) { + nk_tt__handle_clipped_edge(scanline,(int) x0,e, x0,y_top, x0,y_bottom); + nk_tt__handle_clipped_edge(scanline_fill-1,(int) x0+1,e, x0,y_top, x0,y_bottom); + } else { + nk_tt__handle_clipped_edge(scanline_fill-1,0,e, x0,y_top, x0,y_bottom); + } + } + } else { + float x0 = e->fx; + float dx = e->fdx; + float xb = x0 + dx; + float x_top, x_bottom; + float y0,y1; + float dy = e->fdy; + NK_ASSERT(e->sy <= y_bottom && e->ey >= y_top); + + /* compute endpoints of line segment clipped to this scanline (if the */ + /* line segment starts on this scanline. x0 is the intersection of the */ + /* line with y_top, but that may be off the line segment. */ + if (e->sy > y_top) { + x_top = x0 + dx * (e->sy - y_top); + y0 = e->sy; + } else { + x_top = x0; + y0 = y_top; + } + + if (e->ey < y_bottom) { + x_bottom = x0 + dx * (e->ey - y_top); + y1 = e->ey; + } else { + x_bottom = xb; + y1 = y_bottom; + } + + if (x_top >= 0 && x_bottom >= 0 && x_top < len && x_bottom < len) + { + /* from here on, we don't have to range check x values */ + if ((int) x_top == (int) x_bottom) { + float height; + /* simple case, only spans one pixel */ + int x = (int) x_top; + height = y1 - y0; + NK_ASSERT(x >= 0 && x < len); + scanline[x] += e->direction * (1.0f-(((float)x_top - (float)x) + ((float)x_bottom-(float)x))/2.0f) * (float)height; + scanline_fill[x] += e->direction * (float)height; /* everything right of this pixel is filled */ + } else { + int x,x1,x2; + float y_crossing, step, sign, area; + /* covers 2+ pixels */ + if (x_top > x_bottom) + { + /* flip scanline vertically; signed area is the same */ + float t; + y0 = y_bottom - (y0 - y_top); + y1 = y_bottom - (y1 - y_top); + t = y0; y0 = y1; y1 = t; + t = x_bottom; x_bottom = x_top; x_top = t; + dx = -dx; + dy = -dy; + t = x0; x0 = xb; xb = t; + } + + x1 = (int) x_top; + x2 = (int) x_bottom; + /* compute intersection with y axis at x1+1 */ + y_crossing = ((float)x1+1 - (float)x0) * (float)dy + (float)y_top; + + sign = e->direction; + /* area of the rectangle covered from y0..y_crossing */ + area = sign * (y_crossing-y0); + /* area of the triangle (x_top,y0), (x+1,y0), (x+1,y_crossing) */ + scanline[x1] += area * (1.0f-((float)((float)x_top - (float)x1)+(float)(x1+1-x1))/2.0f); + + step = sign * dy; + for (x = x1+1; x < x2; ++x) { + scanline[x] += area + step/2; + area += step; + } + y_crossing += (float)dy * (float)(x2 - (x1+1)); + + scanline[x2] += area + sign * (1.0f-((float)(x2-x2)+((float)x_bottom-(float)x2))/2.0f) * (y1-y_crossing); + scanline_fill[x2] += sign * (y1-y0); + } + } + else + { + /* if edge goes outside of box we're drawing, we require */ + /* clipping logic. since this does not match the intended use */ + /* of this library, we use a different, very slow brute */ + /* force implementation */ + int x; + for (x=0; x < len; ++x) + { + /* cases: */ + /* */ + /* there can be up to two intersections with the pixel. any intersection */ + /* with left or right edges can be handled by splitting into two (or three) */ + /* regions. intersections with top & bottom do not necessitate case-wise logic. */ + /* */ + /* the old way of doing this found the intersections with the left & right edges, */ + /* then used some simple logic to produce up to three segments in sorted order */ + /* from top-to-bottom. however, this had a problem: if an x edge was epsilon */ + /* across the x border, then the corresponding y position might not be distinct */ + /* from the other y segment, and it might ignored as an empty segment. to avoid */ + /* that, we need to explicitly produce segments based on x positions. */ + + /* rename variables to clear pairs */ + float ya = y_top; + float x1 = (float) (x); + float x2 = (float) (x+1); + float x3 = xb; + float y3 = y_bottom; + float yb,y2; + + yb = ((float)x - x0) / dx + y_top; + y2 = ((float)x+1 - x0) / dx + y_top; + + if (x0 < x1 && x3 > x2) { /* three segments descending down-right */ + nk_tt__handle_clipped_edge(scanline,x,e, x0,ya, x1,yb); + nk_tt__handle_clipped_edge(scanline,x,e, x1,yb, x2,y2); + nk_tt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); + } else if (x3 < x1 && x0 > x2) { /* three segments descending down-left */ + nk_tt__handle_clipped_edge(scanline,x,e, x0,ya, x2,y2); + nk_tt__handle_clipped_edge(scanline,x,e, x2,y2, x1,yb); + nk_tt__handle_clipped_edge(scanline,x,e, x1,yb, x3,y3); + } else if (x0 < x1 && x3 > x1) { /* two segments across x, down-right */ + nk_tt__handle_clipped_edge(scanline,x,e, x0,ya, x1,yb); + nk_tt__handle_clipped_edge(scanline,x,e, x1,yb, x3,y3); + } else if (x3 < x1 && x0 > x1) { /* two segments across x, down-left */ + nk_tt__handle_clipped_edge(scanline,x,e, x0,ya, x1,yb); + nk_tt__handle_clipped_edge(scanline,x,e, x1,yb, x3,y3); + } else if (x0 < x2 && x3 > x2) { /* two segments across x+1, down-right */ + nk_tt__handle_clipped_edge(scanline,x,e, x0,ya, x2,y2); + nk_tt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); + } else if (x3 < x2 && x0 > x2) { /* two segments across x+1, down-left */ + nk_tt__handle_clipped_edge(scanline,x,e, x0,ya, x2,y2); + nk_tt__handle_clipped_edge(scanline,x,e, x2,y2, x3,y3); + } else { /* one segment */ + nk_tt__handle_clipped_edge(scanline,x,e, x0,ya, x3,y3); + } + } + } + } + e = e->next; + } +} +NK_INTERN void +nk_tt__rasterize_sorted_edges(struct nk_tt__bitmap *result, struct nk_tt__edge *e, + int n, int vsubsample, int off_x, int off_y, struct nk_allocator *alloc) +{ + /* directly AA rasterize edges w/o supersampling */ + struct nk_tt__hheap hh; + struct nk_tt__active_edge *active = 0; + int y,j=0, i; + float scanline_data[129], *scanline, *scanline2; + + NK_UNUSED(vsubsample); + nk_zero_struct(hh); + hh.alloc = *alloc; + + if (result->w > 64) + scanline = (float *) alloc->alloc(alloc->userdata,0, (nk_size)(result->w*2+1) * sizeof(float)); + else scanline = scanline_data; + + scanline2 = scanline + result->w; + y = off_y; + e[n].y0 = (float) (off_y + result->h) + 1; + + while (j < result->h) + { + /* find center of pixel for this scanline */ + float scan_y_top = (float)y + 0.0f; + float scan_y_bottom = (float)y + 1.0f; + struct nk_tt__active_edge **step = &active; + + NK_MEMSET(scanline , 0, (nk_size)result->w*sizeof(scanline[0])); + NK_MEMSET(scanline2, 0, (nk_size)(result->w+1)*sizeof(scanline[0])); + + /* update all active edges; */ + /* remove all active edges that terminate before the top of this scanline */ + while (*step) { + struct nk_tt__active_edge * z = *step; + if (z->ey <= scan_y_top) { + *step = z->next; /* delete from list */ + NK_ASSERT(z->direction); + z->direction = 0; + nk_tt__hheap_free(&hh, z); + } else { + step = &((*step)->next); /* advance through list */ + } + } + + /* insert all edges that start before the bottom of this scanline */ + while (e->y0 <= scan_y_bottom) { + if (e->y0 != e->y1) { + struct nk_tt__active_edge *z = nk_tt__new_active(&hh, e, off_x, scan_y_top); + if (z != 0) { + NK_ASSERT(z->ey >= scan_y_top); + /* insert at front */ + z->next = active; + active = z; + } + } + ++e; + } + + /* now process all active edges */ + if (active) + nk_tt__fill_active_edges_new(scanline, scanline2+1, result->w, active, scan_y_top); + + { + float sum = 0; + for (i=0; i < result->w; ++i) { + float k; + int m; + sum += scanline2[i]; + k = scanline[i] + sum; + k = (float) NK_ABS(k) * 255.0f + 0.5f; + m = (int) k; + if (m > 255) m = 255; + result->pixels[j*result->stride + i] = (unsigned char) m; + } + } + /* advance all the edges */ + step = &active; + while (*step) { + struct nk_tt__active_edge *z = *step; + z->fx += z->fdx; /* advance to position for current scanline */ + step = &((*step)->next); /* advance through list */ + } + ++y; + ++j; + } + nk_tt__hheap_cleanup(&hh); + if (scanline != scanline_data) + alloc->free(alloc->userdata, scanline); +} +NK_INTERN void +nk_tt__sort_edges_ins_sort(struct nk_tt__edge *p, int n) +{ + int i,j; + #define NK_TT__COMPARE(a,b) ((a)->y0 < (b)->y0) + for (i=1; i < n; ++i) { + struct nk_tt__edge t = p[i], *a = &t; + j = i; + while (j > 0) { + struct nk_tt__edge *b = &p[j-1]; + int c = NK_TT__COMPARE(a,b); + if (!c) break; + p[j] = p[j-1]; + --j; + } + if (i != j) + p[j] = t; + } +} +NK_INTERN void +nk_tt__sort_edges_quicksort(struct nk_tt__edge *p, int n) +{ + /* threshold for transitioning to insertion sort */ + while (n > 12) { + struct nk_tt__edge t; + int c01,c12,c,m,i,j; + + /* compute median of three */ + m = n >> 1; + c01 = NK_TT__COMPARE(&p[0],&p[m]); + c12 = NK_TT__COMPARE(&p[m],&p[n-1]); + + /* if 0 >= mid >= end, or 0 < mid < end, then use mid */ + if (c01 != c12) { + /* otherwise, we'll need to swap something else to middle */ + int z; + c = NK_TT__COMPARE(&p[0],&p[n-1]); + /* 0>mid && midn => n; 0 0 */ + /* 0n: 0>n => 0; 0 n */ + z = (c == c12) ? 0 : n-1; + t = p[z]; + p[z] = p[m]; + p[m] = t; + } + + /* now p[m] is the median-of-three */ + /* swap it to the beginning so it won't move around */ + t = p[0]; + p[0] = p[m]; + p[m] = t; + + /* partition loop */ + i=1; + j=n-1; + for(;;) { + /* handling of equality is crucial here */ + /* for sentinels & efficiency with duplicates */ + for (;;++i) { + if (!NK_TT__COMPARE(&p[i], &p[0])) break; + } + for (;;--j) { + if (!NK_TT__COMPARE(&p[0], &p[j])) break; + } + + /* make sure we haven't crossed */ + if (i >= j) break; + t = p[i]; + p[i] = p[j]; + p[j] = t; + + ++i; + --j; + + } + + /* recurse on smaller side, iterate on larger */ + if (j < (n-i)) { + nk_tt__sort_edges_quicksort(p,j); + p = p+i; + n = n-i; + } else { + nk_tt__sort_edges_quicksort(p+i, n-i); + n = j; + } + } +} +NK_INTERN void +nk_tt__sort_edges(struct nk_tt__edge *p, int n) +{ + nk_tt__sort_edges_quicksort(p, n); + nk_tt__sort_edges_ins_sort(p, n); +} +NK_INTERN void +nk_tt__rasterize(struct nk_tt__bitmap *result, struct nk_tt__point *pts, + int *wcount, int windings, float scale_x, float scale_y, + float shift_x, float shift_y, int off_x, int off_y, int invert, + struct nk_allocator *alloc) +{ + float y_scale_inv = invert ? -scale_y : scale_y; + struct nk_tt__edge *e; + int n,i,j,k,m; + int vsubsample = 1; + /* vsubsample should divide 255 evenly; otherwise we won't reach full opacity */ + + /* now we have to blow out the windings into explicit edge lists */ + n = 0; + for (i=0; i < windings; ++i) + n += wcount[i]; + + e = (struct nk_tt__edge*) + alloc->alloc(alloc->userdata, 0,(sizeof(*e) * (nk_size)(n+1))); + if (e == 0) return; + n = 0; + + m=0; + for (i=0; i < windings; ++i) + { + struct nk_tt__point *p = pts + m; + m += wcount[i]; + j = wcount[i]-1; + for (k=0; k < wcount[i]; j=k++) { + int a=k,b=j; + /* skip the edge if horizontal */ + if (p[j].y == p[k].y) + continue; + + /* add edge from j to k to the list */ + e[n].invert = 0; + if (invert ? p[j].y > p[k].y : p[j].y < p[k].y) { + e[n].invert = 1; + a=j,b=k; + } + e[n].x0 = p[a].x * scale_x + shift_x; + e[n].y0 = (p[a].y * y_scale_inv + shift_y) * (float)vsubsample; + e[n].x1 = p[b].x * scale_x + shift_x; + e[n].y1 = (p[b].y * y_scale_inv + shift_y) * (float)vsubsample; + ++n; + } + } + + /* now sort the edges by their highest point (should snap to integer, and then by x) */ + /*STBTT_sort(e, n, sizeof(e[0]), nk_tt__edge_compare); */ + nk_tt__sort_edges(e, n); + /* now, traverse the scanlines and find the intersections on each scanline, use xor winding rule */ + nk_tt__rasterize_sorted_edges(result, e, n, vsubsample, off_x, off_y, alloc); + alloc->free(alloc->userdata, e); +} +NK_INTERN void +nk_tt__add_point(struct nk_tt__point *points, int n, float x, float y) +{ + if (!points) return; /* during first pass, it's unallocated */ + points[n].x = x; + points[n].y = y; +} +NK_INTERN int +nk_tt__tesselate_curve(struct nk_tt__point *points, int *num_points, + float x0, float y0, float x1, float y1, float x2, float y2, + float objspace_flatness_squared, int n) +{ + /* tesselate until threshold p is happy... + * @TODO warped to compensate for non-linear stretching */ + /* midpoint */ + float mx = (x0 + 2*x1 + x2)/4; + float my = (y0 + 2*y1 + y2)/4; + /* versus directly drawn line */ + float dx = (x0+x2)/2 - mx; + float dy = (y0+y2)/2 - my; + if (n > 16) /* 65536 segments on one curve better be enough! */ + return 1; + + /* half-pixel error allowed... need to be smaller if AA */ + if (dx*dx+dy*dy > objspace_flatness_squared) { + nk_tt__tesselate_curve(points, num_points, x0,y0, + (x0+x1)/2.0f,(y0+y1)/2.0f, mx,my, objspace_flatness_squared,n+1); + nk_tt__tesselate_curve(points, num_points, mx,my, + (x1+x2)/2.0f,(y1+y2)/2.0f, x2,y2, objspace_flatness_squared,n+1); + } else { + nk_tt__add_point(points, *num_points,x2,y2); + *num_points = *num_points+1; + } + return 1; +} +NK_INTERN struct nk_tt__point* +nk_tt_FlattenCurves(struct nk_tt_vertex *vertices, int num_verts, + float objspace_flatness, int **contour_lengths, int *num_contours, + struct nk_allocator *alloc) +{ + /* returns number of contours */ + struct nk_tt__point *points=0; + int num_points=0; + float objspace_flatness_squared = objspace_flatness * objspace_flatness; + int i; + int n=0; + int start=0; + int pass; + + /* count how many "moves" there are to get the contour count */ + for (i=0; i < num_verts; ++i) + if (vertices[i].type == NK_TT_vmove) ++n; + + *num_contours = n; + if (n == 0) return 0; + + *contour_lengths = (int *) + alloc->alloc(alloc->userdata,0, (sizeof(**contour_lengths) * (nk_size)n)); + if (*contour_lengths == 0) { + *num_contours = 0; + return 0; + } + + /* make two passes through the points so we don't need to realloc */ + for (pass=0; pass < 2; ++pass) + { + float x=0,y=0; + if (pass == 1) { + points = (struct nk_tt__point *) + alloc->alloc(alloc->userdata,0, (nk_size)num_points * sizeof(points[0])); + if (points == 0) goto error; + } + num_points = 0; + n= -1; + + for (i=0; i < num_verts; ++i) + { + switch (vertices[i].type) { + case NK_TT_vmove: + /* start the next contour */ + if (n >= 0) + (*contour_lengths)[n] = num_points - start; + ++n; + start = num_points; + + x = vertices[i].x, y = vertices[i].y; + nk_tt__add_point(points, num_points++, x,y); + break; + case NK_TT_vline: + x = vertices[i].x, y = vertices[i].y; + nk_tt__add_point(points, num_points++, x, y); + break; + case NK_TT_vcurve: + nk_tt__tesselate_curve(points, &num_points, x,y, + vertices[i].cx, vertices[i].cy, + vertices[i].x, vertices[i].y, + objspace_flatness_squared, 0); + x = vertices[i].x, y = vertices[i].y; + break; + default: break; + } + } + (*contour_lengths)[n] = num_points - start; + } + return points; + +error: + alloc->free(alloc->userdata, points); + alloc->free(alloc->userdata, *contour_lengths); + *contour_lengths = 0; + *num_contours = 0; + return 0; +} +NK_INTERN void +nk_tt_Rasterize(struct nk_tt__bitmap *result, float flatness_in_pixels, + struct nk_tt_vertex *vertices, int num_verts, + float scale_x, float scale_y, float shift_x, float shift_y, + int x_off, int y_off, int invert, struct nk_allocator *alloc) +{ + float scale = scale_x > scale_y ? scale_y : scale_x; + int winding_count, *winding_lengths; + struct nk_tt__point *windings = nk_tt_FlattenCurves(vertices, num_verts, + flatness_in_pixels / scale, &winding_lengths, &winding_count, alloc); + + NK_ASSERT(alloc); + if (windings) { + nk_tt__rasterize(result, windings, winding_lengths, winding_count, + scale_x, scale_y, shift_x, shift_y, x_off, y_off, invert, alloc); + alloc->free(alloc->userdata, winding_lengths); + alloc->free(alloc->userdata, windings); + } +} +NK_INTERN void +nk_tt_MakeGlyphBitmapSubpixel(const struct nk_tt_fontinfo *info, unsigned char *output, + int out_w, int out_h, int out_stride, float scale_x, float scale_y, + float shift_x, float shift_y, int glyph, struct nk_allocator *alloc) +{ + int ix0,iy0; + struct nk_tt_vertex *vertices; + int num_verts = nk_tt_GetGlyphShape(info, alloc, glyph, &vertices); + struct nk_tt__bitmap gbm; + + nk_tt_GetGlyphBitmapBoxSubpixel(info, glyph, scale_x, scale_y, shift_x, + shift_y, &ix0,&iy0,0,0); + gbm.pixels = output; + gbm.w = out_w; + gbm.h = out_h; + gbm.stride = out_stride; + + if (gbm.w && gbm.h) + nk_tt_Rasterize(&gbm, 0.35f, vertices, num_verts, scale_x, scale_y, + shift_x, shift_y, ix0,iy0, 1, alloc); + alloc->free(alloc->userdata, vertices); +} + +/*------------------------------------------------------------- + * Bitmap baking + * --------------------------------------------------------------*/ +NK_INTERN int +nk_tt_PackBegin(struct nk_tt_pack_context *spc, unsigned char *pixels, + int pw, int ph, int stride_in_bytes, int padding, struct nk_allocator *alloc) +{ + int num_nodes = pw - padding; + struct nk_rp_context *context = (struct nk_rp_context *) + alloc->alloc(alloc->userdata,0, sizeof(*context)); + struct nk_rp_node *nodes = (struct nk_rp_node*) + alloc->alloc(alloc->userdata,0, (sizeof(*nodes ) * (nk_size)num_nodes)); + + if (context == 0 || nodes == 0) { + if (context != 0) alloc->free(alloc->userdata, context); + if (nodes != 0) alloc->free(alloc->userdata, nodes); + return 0; + } + + spc->width = pw; + spc->height = ph; + spc->pixels = pixels; + spc->pack_info = context; + spc->nodes = nodes; + spc->padding = padding; + spc->stride_in_bytes = (stride_in_bytes != 0) ? stride_in_bytes : pw; + spc->h_oversample = 1; + spc->v_oversample = 1; + + nk_rp_init_target(context, pw-padding, ph-padding, nodes, num_nodes); + if (pixels) + NK_MEMSET(pixels, 0, (nk_size)(pw*ph)); /* background of 0 around pixels */ + return 1; +} +NK_INTERN void +nk_tt_PackEnd(struct nk_tt_pack_context *spc, struct nk_allocator *alloc) +{ + alloc->free(alloc->userdata, spc->nodes); + alloc->free(alloc->userdata, spc->pack_info); +} +NK_INTERN void +nk_tt_PackSetOversampling(struct nk_tt_pack_context *spc, + unsigned int h_oversample, unsigned int v_oversample) +{ + NK_ASSERT(h_oversample <= NK_TT_MAX_OVERSAMPLE); + NK_ASSERT(v_oversample <= NK_TT_MAX_OVERSAMPLE); + if (h_oversample <= NK_TT_MAX_OVERSAMPLE) + spc->h_oversample = h_oversample; + if (v_oversample <= NK_TT_MAX_OVERSAMPLE) + spc->v_oversample = v_oversample; +} +NK_INTERN void +nk_tt__h_prefilter(unsigned char *pixels, int w, int h, int stride_in_bytes, + int kernel_width) +{ + unsigned char buffer[NK_TT_MAX_OVERSAMPLE]; + int safe_w = w - kernel_width; + int j; + + for (j=0; j < h; ++j) + { + int i; + unsigned int total; + NK_MEMSET(buffer, 0, (nk_size)kernel_width); + + total = 0; + + /* make kernel_width a constant in common cases so compiler can optimize out the divide */ + switch (kernel_width) { + case 2: + for (i=0; i <= safe_w; ++i) { + total += (unsigned int)(pixels[i] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / 2); + } + break; + case 3: + for (i=0; i <= safe_w; ++i) { + total += (unsigned int)(pixels[i] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / 3); + } + break; + case 4: + for (i=0; i <= safe_w; ++i) { + total += (unsigned int)pixels[i] - buffer[i & NK_TT__OVER_MASK]; + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / 4); + } + break; + case 5: + for (i=0; i <= safe_w; ++i) { + total += (unsigned int)(pixels[i] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / 5); + } + break; + default: + for (i=0; i <= safe_w; ++i) { + total += (unsigned int)(pixels[i] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i]; + pixels[i] = (unsigned char) (total / (unsigned int)kernel_width); + } + break; + } + + for (; i < w; ++i) { + NK_ASSERT(pixels[i] == 0); + total -= (unsigned int)(buffer[i & NK_TT__OVER_MASK]); + pixels[i] = (unsigned char) (total / (unsigned int)kernel_width); + } + pixels += stride_in_bytes; + } +} +NK_INTERN void +nk_tt__v_prefilter(unsigned char *pixels, int w, int h, int stride_in_bytes, + int kernel_width) +{ + unsigned char buffer[NK_TT_MAX_OVERSAMPLE]; + int safe_h = h - kernel_width; + int j; + + for (j=0; j < w; ++j) + { + int i; + unsigned int total; + NK_MEMSET(buffer, 0, (nk_size)kernel_width); + + total = 0; + + /* make kernel_width a constant in common cases so compiler can optimize out the divide */ + switch (kernel_width) { + case 2: + for (i=0; i <= safe_h; ++i) { + total += (unsigned int)(pixels[i*stride_in_bytes] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / 2); + } + break; + case 3: + for (i=0; i <= safe_h; ++i) { + total += (unsigned int)(pixels[i*stride_in_bytes] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / 3); + } + break; + case 4: + for (i=0; i <= safe_h; ++i) { + total += (unsigned int)(pixels[i*stride_in_bytes] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / 4); + } + break; + case 5: + for (i=0; i <= safe_h; ++i) { + total += (unsigned int)(pixels[i*stride_in_bytes] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / 5); + } + break; + default: + for (i=0; i <= safe_h; ++i) { + total += (unsigned int)(pixels[i*stride_in_bytes] - buffer[i & NK_TT__OVER_MASK]); + buffer[(i+kernel_width) & NK_TT__OVER_MASK] = pixels[i*stride_in_bytes]; + pixels[i*stride_in_bytes] = (unsigned char) (total / (unsigned int)kernel_width); + } + break; + } + + for (; i < h; ++i) { + NK_ASSERT(pixels[i*stride_in_bytes] == 0); + total -= (unsigned int)(buffer[i & NK_TT__OVER_MASK]); + pixels[i*stride_in_bytes] = (unsigned char) (total / (unsigned int)kernel_width); + } + pixels += 1; + } +} +NK_INTERN float +nk_tt__oversample_shift(int oversample) +{ + if (!oversample) + return 0.0f; + + /* The prefilter is a box filter of width "oversample", */ + /* which shifts phase by (oversample - 1)/2 pixels in */ + /* oversampled space. We want to shift in the opposite */ + /* direction to counter this. */ + return (float)-(oversample - 1) / (2.0f * (float)oversample); +} +NK_INTERN int +nk_tt_PackFontRangesGatherRects(struct nk_tt_pack_context *spc, + struct nk_tt_fontinfo *info, struct nk_tt_pack_range *ranges, + int num_ranges, struct nk_rp_rect *rects) +{ + /* rects array must be big enough to accommodate all characters in the given ranges */ + int i,j,k; + k = 0; + + for (i=0; i < num_ranges; ++i) { + float fh = ranges[i].font_size; + float scale = (fh > 0) ? nk_tt_ScaleForPixelHeight(info, fh): + nk_tt_ScaleForMappingEmToPixels(info, -fh); + ranges[i].h_oversample = (unsigned char) spc->h_oversample; + ranges[i].v_oversample = (unsigned char) spc->v_oversample; + for (j=0; j < ranges[i].num_chars; ++j) { + int x0,y0,x1,y1; + int codepoint = ranges[i].first_unicode_codepoint_in_range ? + ranges[i].first_unicode_codepoint_in_range + j : + ranges[i].array_of_unicode_codepoints[j]; + + int glyph = nk_tt_FindGlyphIndex(info, codepoint); + nk_tt_GetGlyphBitmapBoxSubpixel(info,glyph, scale * (float)spc->h_oversample, + scale * (float)spc->v_oversample, 0,0, &x0,&y0,&x1,&y1); + rects[k].w = (nk_rp_coord) (x1-x0 + spc->padding + (int)spc->h_oversample-1); + rects[k].h = (nk_rp_coord) (y1-y0 + spc->padding + (int)spc->v_oversample-1); + ++k; + } + } + return k; +} +NK_INTERN int +nk_tt_PackFontRangesRenderIntoRects(struct nk_tt_pack_context *spc, + struct nk_tt_fontinfo *info, struct nk_tt_pack_range *ranges, + int num_ranges, struct nk_rp_rect *rects, struct nk_allocator *alloc) +{ + int i,j,k, return_value = 1; + /* save current values */ + int old_h_over = (int)spc->h_oversample; + int old_v_over = (int)spc->v_oversample; + /* rects array must be big enough to accommodate all characters in the given ranges */ + + k = 0; + for (i=0; i < num_ranges; ++i) + { + float fh = ranges[i].font_size; + float recip_h,recip_v,sub_x,sub_y; + float scale = fh > 0 ? nk_tt_ScaleForPixelHeight(info, fh): + nk_tt_ScaleForMappingEmToPixels(info, -fh); + + spc->h_oversample = ranges[i].h_oversample; + spc->v_oversample = ranges[i].v_oversample; + + recip_h = 1.0f / (float)spc->h_oversample; + recip_v = 1.0f / (float)spc->v_oversample; + + sub_x = nk_tt__oversample_shift((int)spc->h_oversample); + sub_y = nk_tt__oversample_shift((int)spc->v_oversample); + + for (j=0; j < ranges[i].num_chars; ++j) + { + struct nk_rp_rect *r = &rects[k]; + if (r->was_packed) + { + struct nk_tt_packedchar *bc = &ranges[i].chardata_for_range[j]; + int advance, lsb, x0,y0,x1,y1; + int codepoint = ranges[i].first_unicode_codepoint_in_range ? + ranges[i].first_unicode_codepoint_in_range + j : + ranges[i].array_of_unicode_codepoints[j]; + int glyph = nk_tt_FindGlyphIndex(info, codepoint); + nk_rp_coord pad = (nk_rp_coord) spc->padding; + + /* pad on left and top */ + r->x = (nk_rp_coord)((int)r->x + (int)pad); + r->y = (nk_rp_coord)((int)r->y + (int)pad); + r->w = (nk_rp_coord)((int)r->w - (int)pad); + r->h = (nk_rp_coord)((int)r->h - (int)pad); + + nk_tt_GetGlyphHMetrics(info, glyph, &advance, &lsb); + nk_tt_GetGlyphBitmapBox(info, glyph, scale * (float)spc->h_oversample, + (scale * (float)spc->v_oversample), &x0,&y0,&x1,&y1); + nk_tt_MakeGlyphBitmapSubpixel(info, spc->pixels + r->x + r->y*spc->stride_in_bytes, + (int)(r->w - spc->h_oversample+1), (int)(r->h - spc->v_oversample+1), + spc->stride_in_bytes, scale * (float)spc->h_oversample, + scale * (float)spc->v_oversample, 0,0, glyph, alloc); + + if (spc->h_oversample > 1) + nk_tt__h_prefilter(spc->pixels + r->x + r->y*spc->stride_in_bytes, + r->w, r->h, spc->stride_in_bytes, (int)spc->h_oversample); + + if (spc->v_oversample > 1) + nk_tt__v_prefilter(spc->pixels + r->x + r->y*spc->stride_in_bytes, + r->w, r->h, spc->stride_in_bytes, (int)spc->v_oversample); + + bc->x0 = (nk_ushort) r->x; + bc->y0 = (nk_ushort) r->y; + bc->x1 = (nk_ushort) (r->x + r->w); + bc->y1 = (nk_ushort) (r->y + r->h); + bc->xadvance = scale * (float)advance; + bc->xoff = (float) x0 * recip_h + sub_x; + bc->yoff = (float) y0 * recip_v + sub_y; + bc->xoff2 = ((float)x0 + r->w) * recip_h + sub_x; + bc->yoff2 = ((float)y0 + r->h) * recip_v + sub_y; + } else { + return_value = 0; /* if any fail, report failure */ + } + ++k; + } + } + /* restore original values */ + spc->h_oversample = (unsigned int)old_h_over; + spc->v_oversample = (unsigned int)old_v_over; + return return_value; +} +NK_INTERN void +nk_tt_GetPackedQuad(struct nk_tt_packedchar *chardata, int pw, int ph, + int char_index, float *xpos, float *ypos, struct nk_tt_aligned_quad *q, + int align_to_integer) +{ + float ipw = 1.0f / (float)pw, iph = 1.0f / (float)ph; + struct nk_tt_packedchar *b = (struct nk_tt_packedchar*)(chardata + char_index); + if (align_to_integer) { + int tx = nk_ifloorf((*xpos + b->xoff) + 0.5f); + int ty = nk_ifloorf((*ypos + b->yoff) + 0.5f); + + float x = (float)tx; + float y = (float)ty; + + q->x0 = x; + q->y0 = y; + q->x1 = x + b->xoff2 - b->xoff; + q->y1 = y + b->yoff2 - b->yoff; + } else { + q->x0 = *xpos + b->xoff; + q->y0 = *ypos + b->yoff; + q->x1 = *xpos + b->xoff2; + q->y1 = *ypos + b->yoff2; + } + q->s0 = b->x0 * ipw; + q->t0 = b->y0 * iph; + q->s1 = b->x1 * ipw; + q->t1 = b->y1 * iph; + *xpos += b->xadvance; +} + +/* ------------------------------------------------------------- + * + * FONT BAKING + * + * --------------------------------------------------------------*/ +struct nk_font_bake_data { + struct nk_tt_fontinfo info; + struct nk_rp_rect *rects; + struct nk_tt_pack_range *ranges; + nk_rune range_count; +}; + +struct nk_font_baker { + struct nk_allocator alloc; + struct nk_tt_pack_context spc; + struct nk_font_bake_data *build; + struct nk_tt_packedchar *packed_chars; + struct nk_rp_rect *rects; + struct nk_tt_pack_range *ranges; +}; + +NK_GLOBAL const nk_size nk_rect_align = NK_ALIGNOF(struct nk_rp_rect); +NK_GLOBAL const nk_size nk_range_align = NK_ALIGNOF(struct nk_tt_pack_range); +NK_GLOBAL const nk_size nk_char_align = NK_ALIGNOF(struct nk_tt_packedchar); +NK_GLOBAL const nk_size nk_build_align = NK_ALIGNOF(struct nk_font_bake_data); +NK_GLOBAL const nk_size nk_baker_align = NK_ALIGNOF(struct nk_font_baker); + +NK_INTERN int +nk_range_count(const nk_rune *range) +{ + const nk_rune *iter = range; + NK_ASSERT(range); + if (!range) return 0; + while (*(iter++) != 0); + return (iter == range) ? 0 : (int)((iter - range)/2); +} +NK_INTERN int +nk_range_glyph_count(const nk_rune *range, int count) +{ + int i = 0; + int total_glyphs = 0; + for (i = 0; i < count; ++i) { + int diff; + nk_rune f = range[(i*2)+0]; + nk_rune t = range[(i*2)+1]; + NK_ASSERT(t >= f); + diff = (int)((t - f) + 1); + total_glyphs += diff; + } + return total_glyphs; +} +NK_API const nk_rune* +nk_font_default_glyph_ranges(void) +{ + NK_STORAGE const nk_rune ranges[] = {0x0020, 0x00FF, 0}; + return ranges; +} +NK_API const nk_rune* +nk_font_chinese_glyph_ranges(void) +{ + NK_STORAGE const nk_rune ranges[] = { + 0x0020, 0x00FF, + 0x3000, 0x30FF, + 0x31F0, 0x31FF, + 0xFF00, 0xFFEF, + 0x4e00, 0x9FAF, + 0 + }; + return ranges; +} +NK_API const nk_rune* +nk_font_cyrillic_glyph_ranges(void) +{ + NK_STORAGE const nk_rune ranges[] = { + 0x0020, 0x00FF, + 0x0400, 0x052F, + 0x2DE0, 0x2DFF, + 0xA640, 0xA69F, + 0 + }; + return ranges; +} +NK_API const nk_rune* +nk_font_korean_glyph_ranges(void) +{ + NK_STORAGE const nk_rune ranges[] = { + 0x0020, 0x00FF, + 0x3131, 0x3163, + 0xAC00, 0xD79D, + 0 + }; + return ranges; +} +NK_INTERN void +nk_font_baker_memory(nk_size *temp, int *glyph_count, + struct nk_font_config *config_list, int count) +{ + int range_count = 0; + int total_range_count = 0; + struct nk_font_config *iter, *i; + + NK_ASSERT(config_list); + NK_ASSERT(glyph_count); + if (!config_list) { + *temp = 0; + *glyph_count = 0; + return; + } + *glyph_count = 0; + for (iter = config_list; iter; iter = iter->next) { + i = iter; + do {if (!i->range) iter->range = nk_font_default_glyph_ranges(); + range_count = nk_range_count(i->range); + total_range_count += range_count; + *glyph_count += nk_range_glyph_count(i->range, range_count); + } while ((i = i->n) != iter); + } + *temp = (nk_size)*glyph_count * sizeof(struct nk_rp_rect); + *temp += (nk_size)total_range_count * sizeof(struct nk_tt_pack_range); + *temp += (nk_size)*glyph_count * sizeof(struct nk_tt_packedchar); + *temp += (nk_size)count * sizeof(struct nk_font_bake_data); + *temp += sizeof(struct nk_font_baker); + *temp += nk_rect_align + nk_range_align + nk_char_align; + *temp += nk_build_align + nk_baker_align; +} +NK_INTERN struct nk_font_baker* +nk_font_baker(void *memory, int glyph_count, int count, struct nk_allocator *alloc) +{ + struct nk_font_baker *baker; + if (!memory) return 0; + /* setup baker inside a memory block */ + baker = (struct nk_font_baker*)NK_ALIGN_PTR(memory, nk_baker_align); + baker->build = (struct nk_font_bake_data*)NK_ALIGN_PTR((baker + 1), nk_build_align); + baker->packed_chars = (struct nk_tt_packedchar*)NK_ALIGN_PTR((baker->build + count), nk_char_align); + baker->rects = (struct nk_rp_rect*)NK_ALIGN_PTR((baker->packed_chars + glyph_count), nk_rect_align); + baker->ranges = (struct nk_tt_pack_range*)NK_ALIGN_PTR((baker->rects + glyph_count), nk_range_align); + baker->alloc = *alloc; + return baker; +} +NK_INTERN int +nk_font_bake_pack(struct nk_font_baker *baker, + nk_size *image_memory, int *width, int *height, struct nk_recti *custom, + const struct nk_font_config *config_list, int count, + struct nk_allocator *alloc) +{ + NK_STORAGE const nk_size max_height = 1024 * 32; + const struct nk_font_config *config_iter, *it; + int total_glyph_count = 0; + int total_range_count = 0; + int range_count = 0; + int i = 0; + + NK_ASSERT(image_memory); + NK_ASSERT(width); + NK_ASSERT(height); + NK_ASSERT(config_list); + NK_ASSERT(count); + NK_ASSERT(alloc); + + if (!image_memory || !width || !height || !config_list || !count) return nk_false; + for (config_iter = config_list; config_iter; config_iter = config_iter->next) { + it = config_iter; + do {range_count = nk_range_count(it->range); + total_range_count += range_count; + total_glyph_count += nk_range_glyph_count(it->range, range_count); + } while ((it = it->n) != config_iter); + } + /* setup font baker from temporary memory */ + for (config_iter = config_list; config_iter; config_iter = config_iter->next) { + it = config_iter; + do {if (!nk_tt_InitFont(&baker->build[i++].info, (const unsigned char*)it->ttf_blob, 0)) + return nk_false; + } while ((it = it->n) != config_iter); + } + *height = 0; + *width = (total_glyph_count > 1000) ? 1024 : 512; + nk_tt_PackBegin(&baker->spc, 0, (int)*width, (int)max_height, 0, 1, alloc); + { + int input_i = 0; + int range_n = 0; + int rect_n = 0; + int char_n = 0; + + if (custom) { + /* pack custom user data first so it will be in the upper left corner*/ + struct nk_rp_rect custom_space; + nk_zero(&custom_space, sizeof(custom_space)); + custom_space.w = (nk_rp_coord)(custom->w); + custom_space.h = (nk_rp_coord)(custom->h); + + nk_tt_PackSetOversampling(&baker->spc, 1, 1); + nk_rp_pack_rects((struct nk_rp_context*)baker->spc.pack_info, &custom_space, 1); + *height = NK_MAX(*height, (int)(custom_space.y + custom_space.h)); + + custom->x = (short)custom_space.x; + custom->y = (short)custom_space.y; + custom->w = (short)custom_space.w; + custom->h = (short)custom_space.h; + } + + /* first font pass: pack all glyphs */ + for (input_i = 0, config_iter = config_list; input_i < count && config_iter; + config_iter = config_iter->next) { + it = config_iter; + do {int n = 0; + int glyph_count; + const nk_rune *in_range; + const struct nk_font_config *cfg = it; + struct nk_font_bake_data *tmp = &baker->build[input_i++]; + + /* count glyphs + ranges in current font */ + glyph_count = 0; range_count = 0; + for (in_range = cfg->range; in_range[0] && in_range[1]; in_range += 2) { + glyph_count += (int)(in_range[1] - in_range[0]) + 1; + range_count++; + } + + /* setup ranges */ + tmp->ranges = baker->ranges + range_n; + tmp->range_count = (nk_rune)range_count; + range_n += range_count; + for (i = 0; i < range_count; ++i) { + in_range = &cfg->range[i * 2]; + tmp->ranges[i].font_size = cfg->size; + tmp->ranges[i].first_unicode_codepoint_in_range = (int)in_range[0]; + tmp->ranges[i].num_chars = (int)(in_range[1]- in_range[0]) + 1; + tmp->ranges[i].chardata_for_range = baker->packed_chars + char_n; + char_n += tmp->ranges[i].num_chars; + } + + /* pack */ + tmp->rects = baker->rects + rect_n; + rect_n += glyph_count; + nk_tt_PackSetOversampling(&baker->spc, cfg->oversample_h, cfg->oversample_v); + n = nk_tt_PackFontRangesGatherRects(&baker->spc, &tmp->info, + tmp->ranges, (int)tmp->range_count, tmp->rects); + nk_rp_pack_rects((struct nk_rp_context*)baker->spc.pack_info, tmp->rects, (int)n); + + /* texture height */ + for (i = 0; i < n; ++i) { + if (tmp->rects[i].was_packed) + *height = NK_MAX(*height, tmp->rects[i].y + tmp->rects[i].h); + } + } while ((it = it->n) != config_iter); + } + NK_ASSERT(rect_n == total_glyph_count); + NK_ASSERT(char_n == total_glyph_count); + NK_ASSERT(range_n == total_range_count); + } + *height = (int)nk_round_up_pow2((nk_uint)*height); + *image_memory = (nk_size)(*width) * (nk_size)(*height); + return nk_true; +} +NK_INTERN void +nk_font_bake(struct nk_font_baker *baker, void *image_memory, int width, int height, + struct nk_font_glyph *glyphs, int glyphs_count, + const struct nk_font_config *config_list, int font_count) +{ + int input_i = 0; + nk_rune glyph_n = 0; + const struct nk_font_config *config_iter; + const struct nk_font_config *it; + + NK_ASSERT(image_memory); + NK_ASSERT(width); + NK_ASSERT(height); + NK_ASSERT(config_list); + NK_ASSERT(baker); + NK_ASSERT(font_count); + NK_ASSERT(glyphs_count); + if (!image_memory || !width || !height || !config_list || + !font_count || !glyphs || !glyphs_count) + return; + + /* second font pass: render glyphs */ + nk_zero(image_memory, (nk_size)((nk_size)width * (nk_size)height)); + baker->spc.pixels = (unsigned char*)image_memory; + baker->spc.height = (int)height; + for (input_i = 0, config_iter = config_list; input_i < font_count && config_iter; + config_iter = config_iter->next) { + it = config_iter; + do {const struct nk_font_config *cfg = it; + struct nk_font_bake_data *tmp = &baker->build[input_i++]; + nk_tt_PackSetOversampling(&baker->spc, cfg->oversample_h, cfg->oversample_v); + nk_tt_PackFontRangesRenderIntoRects(&baker->spc, &tmp->info, tmp->ranges, + (int)tmp->range_count, tmp->rects, &baker->alloc); + } while ((it = it->n) != config_iter); + } nk_tt_PackEnd(&baker->spc, &baker->alloc); + + /* third pass: setup font and glyphs */ + for (input_i = 0, config_iter = config_list; input_i < font_count && config_iter; + config_iter = config_iter->next) { + it = config_iter; + do {nk_size i = 0; + int char_idx = 0; + nk_rune glyph_count = 0; + const struct nk_font_config *cfg = it; + struct nk_font_bake_data *tmp = &baker->build[input_i++]; + struct nk_baked_font *dst_font = cfg->font; + + float font_scale = nk_tt_ScaleForPixelHeight(&tmp->info, cfg->size); + int unscaled_ascent, unscaled_descent, unscaled_line_gap; + nk_tt_GetFontVMetrics(&tmp->info, &unscaled_ascent, &unscaled_descent, + &unscaled_line_gap); + + /* fill baked font */ + if (!cfg->merge_mode) { + dst_font->ranges = cfg->range; + dst_font->height = cfg->size; + dst_font->ascent = ((float)unscaled_ascent * font_scale); + dst_font->descent = ((float)unscaled_descent * font_scale); + dst_font->glyph_offset = glyph_n; + // Need to zero this, or it will carry over from a previous + // bake, and cause a segfault when accessing glyphs[]. + dst_font->glyph_count = 0; + } + + /* fill own baked font glyph array */ + for (i = 0; i < tmp->range_count; ++i) { + struct nk_tt_pack_range *range = &tmp->ranges[i]; + for (char_idx = 0; char_idx < range->num_chars; char_idx++) + { + nk_rune codepoint = 0; + float dummy_x = 0, dummy_y = 0; + struct nk_tt_aligned_quad q; + struct nk_font_glyph *glyph; + + /* query glyph bounds from stb_truetype */ + const struct nk_tt_packedchar *pc = &range->chardata_for_range[char_idx]; + if (!pc->x0 && !pc->x1 && !pc->y0 && !pc->y1) continue; + codepoint = (nk_rune)(range->first_unicode_codepoint_in_range + char_idx); + nk_tt_GetPackedQuad(range->chardata_for_range, (int)width, + (int)height, char_idx, &dummy_x, &dummy_y, &q, 0); + + /* fill own glyph type with data */ + glyph = &glyphs[dst_font->glyph_offset + dst_font->glyph_count + (unsigned int)glyph_count]; + glyph->codepoint = codepoint; + glyph->x0 = q.x0; glyph->y0 = q.y0; + glyph->x1 = q.x1; glyph->y1 = q.y1; + glyph->y0 += (dst_font->ascent + 0.5f); + glyph->y1 += (dst_font->ascent + 0.5f); + glyph->w = glyph->x1 - glyph->x0 + 0.5f; + glyph->h = glyph->y1 - glyph->y0; + + if (cfg->coord_type == NK_COORD_PIXEL) { + glyph->u0 = q.s0 * (float)width; + glyph->v0 = q.t0 * (float)height; + glyph->u1 = q.s1 * (float)width; + glyph->v1 = q.t1 * (float)height; + } else { + glyph->u0 = q.s0; + glyph->v0 = q.t0; + glyph->u1 = q.s1; + glyph->v1 = q.t1; + } + glyph->xadvance = (pc->xadvance + cfg->spacing.x); + if (cfg->pixel_snap) + glyph->xadvance = (float)(int)(glyph->xadvance + 0.5f); + glyph_count++; + } + } + dst_font->glyph_count += glyph_count; + glyph_n += glyph_count; + } while ((it = it->n) != config_iter); + } +} +NK_INTERN void +nk_font_bake_custom_data(void *img_memory, int img_width, int img_height, + struct nk_recti img_dst, const char *texture_data_mask, int tex_width, + int tex_height, char white, char black) +{ + nk_byte *pixels; + int y = 0; + int x = 0; + int n = 0; + + NK_ASSERT(img_memory); + NK_ASSERT(img_width); + NK_ASSERT(img_height); + NK_ASSERT(texture_data_mask); + NK_UNUSED(tex_height); + if (!img_memory || !img_width || !img_height || !texture_data_mask) + return; + + pixels = (nk_byte*)img_memory; + for (y = 0, n = 0; y < tex_height; ++y) { + for (x = 0; x < tex_width; ++x, ++n) { + const int off0 = ((img_dst.x + x) + (img_dst.y + y) * img_width); + const int off1 = off0 + 1 + tex_width; + pixels[off0] = (texture_data_mask[n] == white) ? 0xFF : 0x00; + pixels[off1] = (texture_data_mask[n] == black) ? 0xFF : 0x00; + } + } +} +NK_INTERN void +nk_font_bake_convert(void *out_memory, int img_width, int img_height, + const void *in_memory) +{ + int n = 0; + nk_rune *dst; + const nk_byte *src; + + NK_ASSERT(out_memory); + NK_ASSERT(in_memory); + NK_ASSERT(img_width); + NK_ASSERT(img_height); + if (!out_memory || !in_memory || !img_height || !img_width) return; + + dst = (nk_rune*)out_memory; + src = (const nk_byte*)in_memory; + for (n = (int)(img_width * img_height); n > 0; n--) + *dst++ = ((nk_rune)(*src++) << 24) | 0x00FFFFFF; +} + +/* ------------------------------------------------------------- + * + * FONT + * + * --------------------------------------------------------------*/ +NK_INTERN float +nk_font_text_width(nk_handle handle, float height, const char *text, int len) +{ + nk_rune unicode; + int text_len = 0; + float text_width = 0; + int glyph_len = 0; + float scale = 0; + + struct nk_font *font = (struct nk_font*)handle.ptr; + NK_ASSERT(font); + NK_ASSERT(font->glyphs); + if (!font || !text || !len) + return 0; + + scale = height/font->info.height; + glyph_len = text_len = nk_utf_decode(text, &unicode, (int)len); + if (!glyph_len) return 0; + while (text_len <= (int)len && glyph_len) { + const struct nk_font_glyph *g; + if (unicode == NK_UTF_INVALID) break; + + /* query currently drawn glyph information */ + g = nk_font_find_glyph(font, unicode); + text_width += g->xadvance * scale; + + /* offset next glyph */ + glyph_len = nk_utf_decode(text + text_len, &unicode, (int)len - text_len); + text_len += glyph_len; + } + return text_width; +} +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT +NK_INTERN void +nk_font_query_font_glyph(nk_handle handle, float height, + struct nk_user_font_glyph *glyph, nk_rune codepoint, nk_rune next_codepoint) +{ + float scale; + const struct nk_font_glyph *g; + struct nk_font *font; + + NK_ASSERT(glyph); + NK_UNUSED(next_codepoint); + + font = (struct nk_font*)handle.ptr; + NK_ASSERT(font); + NK_ASSERT(font->glyphs); + if (!font || !glyph) + return; + + scale = height/font->info.height; + g = nk_font_find_glyph(font, codepoint); + glyph->width = (g->x1 - g->x0) * scale; + glyph->height = (g->y1 - g->y0) * scale; + glyph->offset = nk_vec2(g->x0 * scale, g->y0 * scale); + glyph->xadvance = (g->xadvance * scale); + glyph->uv[0] = nk_vec2(g->u0, g->v0); + glyph->uv[1] = nk_vec2(g->u1, g->v1); +} +#endif +NK_API const struct nk_font_glyph* +nk_font_find_glyph(struct nk_font *font, nk_rune unicode) +{ + int i = 0; + int count; + int total_glyphs = 0; + const struct nk_font_glyph *glyph = 0; + const struct nk_font_config *iter = 0; + + NK_ASSERT(font); + NK_ASSERT(font->glyphs); + NK_ASSERT(font->info.ranges); + if (!font || !font->glyphs) return 0; + + glyph = font->fallback; + iter = font->config; + do {count = nk_range_count(iter->range); + for (i = 0; i < count; ++i) { + nk_rune f = iter->range[(i*2)+0]; + nk_rune t = iter->range[(i*2)+1]; + int diff = (int)((t - f) + 1); + if (unicode >= f && unicode <= t) + return &font->glyphs[((nk_rune)total_glyphs + (unicode - f))]; + total_glyphs += diff; + } + } while ((iter = iter->n) != font->config); + return glyph; +} +NK_INTERN void +nk_font_init(struct nk_font *font, float pixel_height, + nk_rune fallback_codepoint, struct nk_font_glyph *glyphs, + const struct nk_baked_font *baked_font, nk_handle atlas) +{ + struct nk_baked_font baked; + NK_ASSERT(font); + NK_ASSERT(glyphs); + NK_ASSERT(baked_font); + if (!font || !glyphs || !baked_font) + return; + + baked = *baked_font; + font->fallback = 0; + font->info = baked; + font->scale = (float)pixel_height / (float)font->info.height; + font->glyphs = &glyphs[baked_font->glyph_offset]; + font->texture = atlas; + font->fallback_codepoint = fallback_codepoint; + font->fallback = nk_font_find_glyph(font, fallback_codepoint); + + font->handle.height = font->info.height * font->scale; + font->handle.width = nk_font_text_width; + font->handle.userdata.ptr = font; +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT + font->handle.query = nk_font_query_font_glyph; + font->handle.texture = font->texture; +#endif +} + +/* --------------------------------------------------------------------------- + * + * DEFAULT FONT + * + * ProggyClean.ttf + * Copyright (c) 2004, 2005 Tristan Grimmer + * MIT license (see License.txt in http://www.upperbounds.net/download/ProggyClean.ttf.zip) + * Download and more information at http://upperbounds.net + *-----------------------------------------------------------------------------*/ +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Woverlength-strings" +#elif defined(__GNUC__) || defined(__GNUG__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Woverlength-strings" +#endif + +#ifdef NK_INCLUDE_DEFAULT_FONT + +NK_GLOBAL const char nk_proggy_clean_ttf_compressed_data_base85[11980+1] = + "7])#######hV0qs'/###[),##/l:$#Q6>##5[n42>c-TH`->>#/e>11NNV=Bv(*:.F?uu#(gRU.o0XGH`$vhLG1hxt9?W`#,5LsCp#-i>.r$<$6pD>Lb';9Crc6tgXmKVeU2cD4Eo3R/" + "2*>]b(MC;$jPfY.;h^`IWM9Qo#t'X#(v#Y9w0#1D$CIf;W'#pWUPXOuxXuU(H9M(1=Ke$$'5F%)]0^#0X@U.a$FBjVQTSDgEKnIS7EM9>ZY9w0#L;>>#Mx&4Mvt//L[MkA#W@lK.N'[0#7RL_&#w+F%HtG9M#XL`N&.,GM4Pg;--VsM.M0rJfLH2eTM`*oJMHRC`N" + "kfimM2J,W-jXS:)r0wK#@Fge$U>`w'N7G#$#fB#$E^$#:9:hk+eOe--6x)F7*E%?76%^GMHePW-Z5l'&GiF#$956:rS?dA#fiK:)Yr+`�j@'DbG&#^$PG.Ll+DNa&VZ>1i%h1S9u5o@YaaW$e+bROPOpxTO7Stwi1::iB1q)C_=dV26J;2,]7op$]uQr@_V7$q^%lQwtuHY]=DX,n3L#0PHDO4f9>dC@O>HBuKPpP*E,N+b3L#lpR/MrTEH.IAQk.a>D[.e;mc." + "x]Ip.PH^'/aqUO/$1WxLoW0[iLAw=4h(9.`G" + "CRUxHPeR`5Mjol(dUWxZa(>STrPkrJiWx`5U7F#.g*jrohGg`cg:lSTvEY/EV_7H4Q9[Z%cnv;JQYZ5q.l7Zeas:HOIZOB?Ggv:[7MI2k).'2($5FNP&EQ(,)" + "U]W]+fh18.vsai00);D3@4ku5P?DP8aJt+;qUM]=+b'8@;mViBKx0DE[-auGl8:PJ&Dj+M6OC]O^((##]`0i)drT;-7X`=-H3[igUnPG-NZlo.#k@h#=Ork$m>a>$-?Tm$UV(?#P6YY#" + "'/###xe7q.73rI3*pP/$1>s9)W,JrM7SN]'/4C#v$U`0#V.[0>xQsH$fEmPMgY2u7Kh(G%siIfLSoS+MK2eTM$=5,M8p`A.;_R%#u[K#$x4AG8.kK/HSB==-'Ie/QTtG?-.*^N-4B/ZM" + "_3YlQC7(p7q)&](`6_c)$/*JL(L-^(]$wIM`dPtOdGA,U3:w2M-0+WomX2u7lqM2iEumMTcsF?-aT=Z-97UEnXglEn1K-bnEO`gu" + "Ft(c%=;Am_Qs@jLooI&NX;]0#j4#F14;gl8-GQpgwhrq8'=l_f-b49'UOqkLu7-##oDY2L(te+Mch&gLYtJ,MEtJfLh'x'M=$CS-ZZ%P]8bZ>#S?YY#%Q&q'3^Fw&?D)UDNrocM3A76/" + "/oL?#h7gl85[qW/NDOk%16ij;+:1a'iNIdb-ou8.P*w,v5#EI$TWS>Pot-R*H'-SEpA:g)f+O$%%`kA#G=8RMmG1&O`>to8bC]T&$,n.LoO>29sp3dt-52U%VM#q7'DHpg+#Z9%H[Ket`e;)f#Km8&+DC$I46>#Kr]]u-[=99tts1.qb#q72g1WJO81q+eN'03'eM>&1XxY-caEnO" + "j%2n8)),?ILR5^.Ibn<-X-Mq7[a82Lq:F&#ce+S9wsCK*x`569E8ew'He]h:sI[2LM$[guka3ZRd6:t%IG:;$%YiJ:Nq=?eAw;/:nnDq0(CYcMpG)qLN4$##&J-XTt,%OVU4)S1+R-#dg0/Nn?Ku1^0f$B*P:Rowwm-`0PKjYDDM'3]d39VZHEl4,.j']Pk-M.h^&:0FACm$maq-&sgw0t7/6(^xtk%" + "LuH88Fj-ekm>GA#_>568x6(OFRl-IZp`&b,_P'$MhLbxfc$mj`,O;&%W2m`Zh:/)Uetw:aJ%]K9h:TcF]u_-Sj9,VK3M.*'&0D[Ca]J9gp8,kAW]" + "%(?A%R$f<->Zts'^kn=-^@c4%-pY6qI%J%1IGxfLU9CP8cbPlXv);C=b),<2mOvP8up,UVf3839acAWAW-W?#ao/^#%KYo8fRULNd2.>%m]UK:n%r$'sw]J;5pAoO_#2mO3n,'=H5(et" + "Hg*`+RLgv>=4U8guD$I%D:W>-r5V*%j*W:Kvej.Lp$'?;++O'>()jLR-^u68PHm8ZFWe+ej8h:9r6L*0//c&iH&R8pRbA#Kjm%upV1g:" + "a_#Ur7FuA#(tRh#.Y5K+@?3<-8m0$PEn;J:rh6?I6uG<-`wMU'ircp0LaE_OtlMb&1#6T.#FDKu#1Lw%u%+GM+X'e?YLfjM[VO0MbuFp7;>Q&#WIo)0@F%q7c#4XAXN-U&VBpqB>0ie&jhZ[?iLR@@_AvA-iQC(=ksRZRVp7`.=+NpBC%rh&3]R:8XDmE5^V8O(x<-+k?'(^](H.aREZSi,#1:[IXaZFOm<-ui#qUq2$##Ri;u75OK#(RtaW-K-F`S+cF]uN`-KMQ%rP/Xri.LRcB##=YL3BgM/3M" + "D?@f&1'BW-)Ju#bmmWCMkk&#TR`C,5d>g)F;t,4:@_l8G/5h4vUd%&%950:VXD'QdWoY-F$BtUwmfe$YqL'8(PWX(" + "P?^@Po3$##`MSs?DWBZ/S>+4%>fX,VWv/w'KD`LP5IbH;rTV>n3cEK8U#bX]l-/V+^lj3;vlMb&[5YQ8#pekX9JP3XUC72L,,?+Ni&co7ApnO*5NK,((W-i:$,kp'UDAO(G0Sq7MVjJs" + "bIu)'Z,*[>br5fX^:FPAWr-m2KgLQ_nN6'8uTGT5g)uLv:873UpTLgH+#FgpH'_o1780Ph8KmxQJ8#H72L4@768@Tm&Q" + "h4CB/5OvmA&,Q&QbUoi$a_%3M01H)4x7I^&KQVgtFnV+;[Pc>[m4k//,]1?#`VY[Jr*3&&slRfLiVZJ:]?=K3Sw=[$=uRB?3xk48@aege0jT6'N#(q%.O=?2S]u*(m<-" + "V8J'(1)G][68hW$5'q[GC&5j`TE?m'esFGNRM)j,ffZ?-qx8;->g4t*:CIP/[Qap7/9'#(1sao7w-.qNUdkJ)tCF&#B^;xGvn2r9FEPFFFcL@.iFNkTve$m%#QvQS8U@)2Z+3K:AKM5i" + "sZ88+dKQ)W6>J%CL`.d*(B`-n8D9oK-XV1q['-5k'cAZ69e;D_?$ZPP&s^+7])$*$#@QYi9,5P r+$%CE=68>K8r0=dSC%%(@p7" + ".m7jilQ02'0-VWAgTlGW'b)Tq7VT9q^*^$$.:&N@@" + "$&)WHtPm*5_rO0&e%K&#-30j(E4#'Zb.o/(Tpm$>K'f@[PvFl,hfINTNU6u'0pao7%XUp9]5.>%h`8_=VYbxuel.NTSsJfLacFu3B'lQSu/m6-Oqem8T+oE--$0a/k]uj9EwsG>%veR*" + "hv^BFpQj:K'#SJ,sB-'#](j.Lg92rTw-*n%@/;39rrJF,l#qV%OrtBeC6/,;qB3ebNW[?,Hqj2L.1NP&GjUR=1D8QaS3Up&@*9wP?+lo7b?@%'k4`p0Z$22%K3+iCZj?XJN4Nm&+YF]u" + "@-W$U%VEQ/,,>>#)D#%8cY#YZ?=,`Wdxu/ae&#" + "w6)R89tI#6@s'(6Bf7a&?S=^ZI_kS&ai`&=tE72L_D,;^R)7[$so8lKN%5/$(vdfq7+ebA#" + "u1p]ovUKW&Y%q]'>$1@-[xfn$7ZTp7mM,G,Ko7a&Gu%G[RMxJs[0MM%wci.LFDK)(%:_i2B5CsR8&9Z&#=mPEnm0f`<&c)QL5uJ#%u%lJj+D-r;BoFDoS97h5g)E#o:&S4weDF,9^Hoe`h*L+_a*NrLW-1pG_&2UdB8" + "6e%B/:=>)N4xeW.*wft-;$'58-ESqr#U`'6AQ]m&6/`Z>#S?YY#Vc;r7U2&326d=w&H####?TZ`*4?&.MK?LP8Vxg>$[QXc%QJv92.(Db*B)gb*BM9dM*hJMAo*c&#" + "b0v=Pjer]$gG&JXDf->'StvU7505l9$AFvgYRI^&<^b68?j#q9QX4SM'RO#&sL1IM.rJfLUAj221]d##DW=m83u5;'bYx,*Sl0hL(W;;$doB&O/TQ:(Z^xBdLjLV#*8U_72Lh+2Q8Cj0i:6hp&$C/:p(HK>T8Y[gHQ4`4)'$Ab(Nof%V'8hL&#SfD07&6D@M.*J:;$-rv29'M]8qMv-tLp,'886iaC=Hb*YJoKJ,(j%K=H`K.v9HggqBIiZu'QvBT.#=)0ukruV&.)3=(^1`o*Pj4<-#MJ+gLq9-##@HuZPN0]u:h7.T..G:;$/Usj(T7`Q8tT72LnYl<-qx8;-HV7Q-&Xdx%1a,hC=0u+HlsV>nuIQL-5" + "_>@kXQtMacfD.m-VAb8;IReM3$wf0''hra*so568'Ip&vRs849'MRYSp%:t:h5qSgwpEr$B>Q,;s(C#$)`svQuF$##-D,##,g68@2[T;.XSdN9Qe)rpt._K-#5wF)sP'##p#C0c%-Gb%" + "hd+<-j'Ai*x&&HMkT]C'OSl##5RG[JXaHN;d'uA#x._U;.`PU@(Z3dt4r152@:v,'R.Sj'w#0<-;kPI)FfJ&#AYJ&#//)>-k=m=*XnK$>=)72L]0I%>.G690a:$##<,);?;72#?x9+d;" + "^V'9;jY@;)br#q^YQpx:X#Te$Z^'=-=bGhLf:D6&bNwZ9-ZD#n^9HhLMr5G;']d&6'wYmTFmLq9wI>P(9mI[>kC-ekLC/R&CH+s'B;K-M6$EB%is00:" + "+A4[7xks.LrNk0&E)wILYF@2L'0Nb$+pv<(2.768/FrY&h$^3i&@+G%JT'<-,v`3;_)I9M^AE]CN?Cl2AZg+%4iTpT3$U4O]GKx'm9)b@p7YsvK3w^YR-" + "CdQ*:Ir<($u&)#(&?L9Rg3H)4fiEp^iI9O8KnTj,]H?D*r7'M;PwZ9K0E^k&-cpI;.p/6_vwoFMV<->#%Xi.LxVnrU(4&8/P+:hLSKj$#U%]49t'I:rgMi'FL@a:0Y-uA[39',(vbma*" + "hU%<-SRF`Tt:542R_VV$p@[p8DV[A,?1839FWdFTi1O*H&#(AL8[_P%.M>v^-))qOT*F5Cq0`Ye%+$B6i:7@0IXSsDiWP,##P`%/L-" + "S(qw%sf/@%#B6;/U7K]uZbi^Oc^2n%t<)'mEVE''n`WnJra$^TKvX5B>;_aSEK',(hwa0:i4G?.Bci.(X[?b*($,=-n<.Q%`(X=?+@Am*Js0&=3bh8K]mL69=Lb,OcZV/);TTm8VI;?%OtJ<(b4mq7M6:u?KRdFl*:xP?Yb.5)%w_I?7uk5JC+FS(m#i'k.'a0i)9<7b'fs'59hq$*5Uhv##pi^8+hIEBF`nvo`;'l0.^S1<-wUK2/Coh58KKhLj" + "M=SO*rfO`+qC`W-On.=AJ56>>i2@2LH6A:&5q`?9I3@@'04&p2/LVa*T-4<-i3;M9UvZd+N7>b*eIwg:CC)c<>nO&#$(>.Z-I&J(Q0Hd5Q%7Co-b`-cP)hI;*_F]u`Rb[.j8_Q/<&>uu+VsH$sM9TA%?)(vmJ80),P7E>)tjD%2L=-t#fK[%`v=Q8WlA2);Sa" + ">gXm8YB`1d@K#n]76-a$U,mF%Ul:#/'xoFM9QX-$.QN'>" + "[%$Z$uF6pA6Ki2O5:8w*vP1<-1`[G,)-m#>0`P&#eb#.3i)rtB61(o'$?X3B2Qft^ae_5tKL9MUe9b*sLEQ95C&`=G?@Mj=wh*'3E>=-<)Gt*Iw)'QG:`@I" + "wOf7&]1i'S01B+Ev/Nac#9S;=;YQpg_6U`*kVY39xK,[/6Aj7:'1Bm-_1EYfa1+o&o4hp7KN_Q(OlIo@S%;jVdn0'1h19w,WQhLI)3S#f$2(eb,jr*b;3Vw]*7NH%$c4Vs,eD9>XW8?N]o+(*pgC%/72LV-uW%iewS8W6m2rtCpo'RS1R84=@paTKt)>=%&1[)*vp'u+x,VrwN;&]kuO9JDbg=pO$J*.jVe;u'm0dr9l,<*wMK*Oe=g8lV_KEBFkO'oU]^=[-792#ok,)" + "i]lR8qQ2oA8wcRCZ^7w/Njh;?.stX?Q1>S1q4Bn$)K1<-rGdO'$Wr.Lc.CG)$/*JL4tNR/,SVO3,aUw'DJN:)Ss;wGn9A32ijw%FL+Z0Fn.U9;reSq)bmI32U==5ALuG&#Vf1398/pVo" + "1*c-(aY168o<`JsSbk-,1N;$>0:OUas(3:8Z972LSfF8eb=c-;>SPw7.6hn3m`9^Xkn(r.qS[0;T%&Qc=+STRxX'q1BNk3&*eu2;&8q$&x>Q#Q7^Tf+6<(d%ZVmj2bDi%.3L2n+4W'$P" + "iDDG)g,r%+?,$@?uou5tSe2aN_AQU*'IAO" + "URQ##V^Fv-XFbGM7Fl(N<3DhLGF%q.1rC$#:T__&Pi68%0xi_&[qFJ(77j_&JWoF.V735&T,[R*:xFR*K5>>#`bW-?4Ne_&6Ne_&6Ne_&n`kr-#GJcM6X;uM6X;uM(.a..^2TkL%oR(#" + ";u.T%fAr%4tJ8&><1=GHZ_+m9/#H1F^R#SC#*N=BA9(D?v[UiFY>>^8p,KKF.W]L29uLkLlu/+4T" + "w$)F./^n3+rlo+DB;5sIYGNk+i1t-69Jg--0pao7Sm#K)pdHW&;LuDNH@H>#/X-TI(;P>#,Gc>#0Su>#4`1?#8lC?#xL$#B.`$#F:r$#JF.%#NR@%#R_R%#Vke%#Zww%#_-4^Rh%Sflr-k'MS.o?.5/sWel/wpEM0%3'/1)K^f1-d>G21&v(35>V`39V7A4=onx4" + "A1OY5EI0;6Ibgr6M$HS7Q<)58C5w,;WoA*#[%T*#`1g*#d=#+#hI5+#lUG+#pbY+#tnl+#x$),#&1;,#*=M,#.I`,#2Ur,#6b.-#;w[H#iQtA#m^0B#qjBB#uvTB##-hB#'9$C#+E6C#" + "/QHC#3^ZC#7jmC#;v)D#?,)4kMYD4lVu`4m`:&5niUA5@(A5BA1]PBB:xlBCC=2CDLXMCEUtiCf&0g2'tN?PGT4CPGT4CPGT4CPGT4CPGT4CPGT4CPGT4CP" + "GT4CPGT4CPGT4CPGT4CPGT4CPGT4CP-qekC`.9kEg^+F$kwViFJTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5KTB&5o,^<-28ZI'O?;xp" + "O?;xpO?;xpO?;xpO?;xpO?;xpO?;xpO?;xpO?;xpO?;xpO?;xpO?;xpO?;xpO?;xp;7q-#lLYI:xvD=#"; + +#endif /* NK_INCLUDE_DEFAULT_FONT */ + +#define NK_CURSOR_DATA_W 90 +#define NK_CURSOR_DATA_H 27 +NK_GLOBAL const char nk_custom_cursor_data[NK_CURSOR_DATA_W * NK_CURSOR_DATA_H + 1] = +{ + "..- -XXXXXXX- X - X -XXXXXXX - XXXXXXX" + "..- -X.....X- X.X - X.X -X.....X - X.....X" + "--- -XXX.XXX- X...X - X...X -X....X - X....X" + "X - X.X - X.....X - X.....X -X...X - X...X" + "XX - X.X -X.......X- X.......X -X..X.X - X.X..X" + "X.X - X.X -XXXX.XXXX- XXXX.XXXX -X.X X.X - X.X X.X" + "X..X - X.X - X.X - X.X -XX X.X - X.X XX" + "X...X - X.X - X.X - XX X.X XX - X.X - X.X " + "X....X - X.X - X.X - X.X X.X X.X - X.X - X.X " + "X.....X - X.X - X.X - X..X X.X X..X - X.X - X.X " + "X......X - X.X - X.X - X...XXXXXX.XXXXXX...X - X.X XX-XX X.X " + "X.......X - X.X - X.X -X.....................X- X.X X.X-X.X X.X " + "X........X - X.X - X.X - X...XXXXXX.XXXXXX...X - X.X..X-X..X.X " + "X.........X -XXX.XXX- X.X - X..X X.X X..X - X...X-X...X " + "X..........X-X.....X- X.X - X.X X.X X.X - X....X-X....X " + "X......XXXXX-XXXXXXX- X.X - XX X.X XX - X.....X-X.....X " + "X...X..X --------- X.X - X.X - XXXXXXX-XXXXXXX " + "X..X X..X - -XXXX.XXXX- XXXX.XXXX ------------------------------------" + "X.X X..X - -X.......X- X.......X - XX XX - " + "XX X..X - - X.....X - X.....X - X.X X.X - " + " X..X - X...X - X...X - X..X X..X - " + " XX - X.X - X.X - X...XXXXXXXXXXXXX...X - " + "------------ - X - X -X.....................X- " + " ----------------------------------- X...XXXXXXXXXXXXX...X - " + " - X..X X..X - " + " - X.X X.X - " + " - XX XX - " +}; + +#ifdef __clang__ +#pragma clang diagnostic pop +#elif defined(__GNUC__) || defined(__GNUG__) +#pragma GCC diagnostic pop +#endif + +NK_GLOBAL unsigned char *nk__barrier; +NK_GLOBAL unsigned char *nk__barrier2; +NK_GLOBAL unsigned char *nk__barrier3; +NK_GLOBAL unsigned char *nk__barrier4; +NK_GLOBAL unsigned char *nk__dout; + +NK_INTERN unsigned int +nk_decompress_length(unsigned char *input) +{ + return (unsigned int)((input[8] << 24) + (input[9] << 16) + (input[10] << 8) + input[11]); +} +NK_INTERN void +nk__match(unsigned char *data, unsigned int length) +{ + /* INVERSE of memmove... write each byte before copying the next...*/ + NK_ASSERT (nk__dout + length <= nk__barrier); + if (nk__dout + length > nk__barrier) { nk__dout += length; return; } + if (data < nk__barrier4) { nk__dout = nk__barrier+1; return; } + while (length--) *nk__dout++ = *data++; +} +NK_INTERN void +nk__lit(unsigned char *data, unsigned int length) +{ + NK_ASSERT (nk__dout + length <= nk__barrier); + if (nk__dout + length > nk__barrier) { nk__dout += length; return; } + if (data < nk__barrier2) { nk__dout = nk__barrier+1; return; } + NK_MEMCPY(nk__dout, data, length); + nk__dout += length; +} +NK_INTERN unsigned char* +nk_decompress_token(unsigned char *i) +{ + #define nk__in2(x) ((i[x] << 8) + i[(x)+1]) + #define nk__in3(x) ((i[x] << 16) + nk__in2((x)+1)) + #define nk__in4(x) ((i[x] << 24) + nk__in3((x)+1)) + + if (*i >= 0x20) { /* use fewer if's for cases that expand small */ + if (*i >= 0x80) nk__match(nk__dout-i[1]-1, (unsigned int)i[0] - 0x80 + 1), i += 2; + else if (*i >= 0x40) nk__match(nk__dout-(nk__in2(0) - 0x4000 + 1), (unsigned int)i[2]+1), i += 3; + else /* *i >= 0x20 */ nk__lit(i+1, (unsigned int)i[0] - 0x20 + 1), i += 1 + (i[0] - 0x20 + 1); + } else { /* more ifs for cases that expand large, since overhead is amortized */ + if (*i >= 0x18) nk__match(nk__dout-(unsigned int)(nk__in3(0) - 0x180000 + 1), (unsigned int)i[3]+1), i += 4; + else if (*i >= 0x10) nk__match(nk__dout-(unsigned int)(nk__in3(0) - 0x100000 + 1), (unsigned int)nk__in2(3)+1), i += 5; + else if (*i >= 0x08) nk__lit(i+2, (unsigned int)nk__in2(0) - 0x0800 + 1), i += 2 + (nk__in2(0) - 0x0800 + 1); + else if (*i == 0x07) nk__lit(i+3, (unsigned int)nk__in2(1) + 1), i += 3 + (nk__in2(1) + 1); + else if (*i == 0x06) nk__match(nk__dout-(unsigned int)(nk__in3(1)+1), i[4]+1u), i += 5; + else if (*i == 0x04) nk__match(nk__dout-(unsigned int)(nk__in3(1)+1), (unsigned int)nk__in2(4)+1u), i += 6; + } + return i; +} +NK_INTERN unsigned int +nk_adler32(unsigned int adler32, unsigned char *buffer, unsigned int buflen) +{ + const unsigned long ADLER_MOD = 65521; + unsigned long s1 = adler32 & 0xffff, s2 = adler32 >> 16; + unsigned long blocklen, i; + + blocklen = buflen % 5552; + while (buflen) { + for (i=0; i + 7 < blocklen; i += 8) { + s1 += buffer[0]; s2 += s1; + s1 += buffer[1]; s2 += s1; + s1 += buffer[2]; s2 += s1; + s1 += buffer[3]; s2 += s1; + s1 += buffer[4]; s2 += s1; + s1 += buffer[5]; s2 += s1; + s1 += buffer[6]; s2 += s1; + s1 += buffer[7]; s2 += s1; + buffer += 8; + } + for (; i < blocklen; ++i) { + s1 += *buffer++; s2 += s1; + } + + s1 %= ADLER_MOD; s2 %= ADLER_MOD; + buflen -= (unsigned int)blocklen; + blocklen = 5552; + } + return (unsigned int)(s2 << 16) + (unsigned int)s1; +} +NK_INTERN unsigned int +nk_decompress(unsigned char *output, unsigned char *i, unsigned int length) +{ + unsigned int olen; + if (nk__in4(0) != 0x57bC0000) return 0; + if (nk__in4(4) != 0) return 0; /* error! stream is > 4GB */ + olen = nk_decompress_length(i); + nk__barrier2 = i; + nk__barrier3 = i+length; + nk__barrier = output + olen; + nk__barrier4 = output; + i += 16; + + nk__dout = output; + for (;;) { + unsigned char *old_i = i; + i = nk_decompress_token(i); + if (i == old_i) { + if (*i == 0x05 && i[1] == 0xfa) { + NK_ASSERT(nk__dout == output + olen); + if (nk__dout != output + olen) return 0; + if (nk_adler32(1, output, olen) != (unsigned int) nk__in4(2)) + return 0; + return olen; + } else { + NK_ASSERT(0); /* NOTREACHED */ + return 0; + } + } + NK_ASSERT(nk__dout <= output + olen); + if (nk__dout > output + olen) + return 0; + } +} +NK_INTERN unsigned int +nk_decode_85_byte(char c) +{ + return (unsigned int)((c >= '\\') ? c-36 : c-35); +} +NK_INTERN void +nk_decode_85(unsigned char* dst, const unsigned char* src) +{ + while (*src) + { + unsigned int tmp = + nk_decode_85_byte((char)src[0]) + + 85 * (nk_decode_85_byte((char)src[1]) + + 85 * (nk_decode_85_byte((char)src[2]) + + 85 * (nk_decode_85_byte((char)src[3]) + + 85 * nk_decode_85_byte((char)src[4])))); + + /* we can't assume little-endianess. */ + dst[0] = (unsigned char)((tmp >> 0) & 0xFF); + dst[1] = (unsigned char)((tmp >> 8) & 0xFF); + dst[2] = (unsigned char)((tmp >> 16) & 0xFF); + dst[3] = (unsigned char)((tmp >> 24) & 0xFF); + + src += 5; + dst += 4; + } +} + +/* ------------------------------------------------------------- + * + * FONT ATLAS + * + * --------------------------------------------------------------*/ +NK_API struct nk_font_config +nk_font_config(float pixel_height) +{ + struct nk_font_config cfg; + nk_zero_struct(cfg); + cfg.ttf_blob = 0; + cfg.ttf_size = 0; + cfg.ttf_data_owned_by_atlas = 0; + cfg.size = pixel_height; + cfg.oversample_h = 3; + cfg.oversample_v = 1; + cfg.pixel_snap = 0; + cfg.coord_type = NK_COORD_UV; + cfg.spacing = nk_vec2(0,0); + cfg.range = nk_font_default_glyph_ranges(); + cfg.merge_mode = 0; + cfg.fallback_glyph = '?'; + cfg.font = 0; + cfg.n = 0; + return cfg; +} +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_API void +nk_font_atlas_init_default(struct nk_font_atlas *atlas) +{ + NK_ASSERT(atlas); + if (!atlas) return; + nk_zero_struct(*atlas); + atlas->temporary.userdata.ptr = 0; + atlas->temporary.alloc = nk_malloc; + atlas->temporary.free = nk_mfree; + atlas->permanent.userdata.ptr = 0; + atlas->permanent.alloc = nk_malloc; + atlas->permanent.free = nk_mfree; +} +#endif +NK_API void +nk_font_atlas_init(struct nk_font_atlas *atlas, struct nk_allocator *alloc) +{ + NK_ASSERT(atlas); + NK_ASSERT(alloc); + if (!atlas || !alloc) return; + nk_zero_struct(*atlas); + atlas->permanent = *alloc; + atlas->temporary = *alloc; +} +NK_API void +nk_font_atlas_init_custom(struct nk_font_atlas *atlas, + struct nk_allocator *permanent, struct nk_allocator *temporary) +{ + NK_ASSERT(atlas); + NK_ASSERT(permanent); + NK_ASSERT(temporary); + if (!atlas || !permanent || !temporary) return; + nk_zero_struct(*atlas); + atlas->permanent = *permanent; + atlas->temporary = *temporary; +} +NK_API void +nk_font_atlas_begin(struct nk_font_atlas *atlas) +{ + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc && atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc && atlas->permanent.free); + if (!atlas || !atlas->permanent.alloc || !atlas->permanent.free || + !atlas->temporary.alloc || !atlas->temporary.free) return; + if (atlas->glyphs) { + atlas->permanent.free(atlas->permanent.userdata, atlas->glyphs); + atlas->glyphs = 0; + } + if (atlas->pixel) { + atlas->permanent.free(atlas->permanent.userdata, atlas->pixel); + atlas->pixel = 0; + } +} +NK_API struct nk_font* +nk_font_atlas_add(struct nk_font_atlas *atlas, const struct nk_font_config *config) +{ + struct nk_font *font = 0; + struct nk_font_config *cfg; + + NK_ASSERT(atlas); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + + NK_ASSERT(config); + NK_ASSERT(config->ttf_blob); + NK_ASSERT(config->ttf_size); + NK_ASSERT(config->size > 0.0f); + + if (!atlas || !config || !config->ttf_blob || !config->ttf_size || config->size <= 0.0f|| + !atlas->permanent.alloc || !atlas->permanent.free || + !atlas->temporary.alloc || !atlas->temporary.free) + return 0; + + /* allocate font config */ + cfg = (struct nk_font_config*) + atlas->permanent.alloc(atlas->permanent.userdata,0, sizeof(struct nk_font_config)); + NK_MEMCPY(cfg, config, sizeof(*config)); + cfg->n = cfg; + cfg->p = cfg; + + if (!config->merge_mode) { + /* insert font config into list */ + if (!atlas->config) { + atlas->config = cfg; + cfg->next = 0; + } else { + struct nk_font_config *i = atlas->config; + while (i->next) i = i->next; + i->next = cfg; + cfg->next = 0; + } + /* allocate new font */ + font = (struct nk_font*) + atlas->permanent.alloc(atlas->permanent.userdata,0, sizeof(struct nk_font)); + NK_ASSERT(font); + nk_zero(font, sizeof(*font)); + if (!font) return 0; + font->config = cfg; + + /* insert font into list */ + if (!atlas->fonts) { + atlas->fonts = font; + font->next = 0; + } else { + struct nk_font *i = atlas->fonts; + while (i->next) i = i->next; + i->next = font; + font->next = 0; + } + cfg->font = &font->info; + } else { + /* extend previously added font */ + struct nk_font *f = 0; + struct nk_font_config *c = 0; + NK_ASSERT(atlas->font_num); + f = atlas->fonts; + c = f->config; + cfg->font = &f->info; + + cfg->n = c; + cfg->p = c->p; + c->p->n = cfg; + c->p = cfg; + } + /* create own copy of .TTF font blob */ + if (!config->ttf_data_owned_by_atlas) { + cfg->ttf_blob = atlas->permanent.alloc(atlas->permanent.userdata,0, cfg->ttf_size); + NK_ASSERT(cfg->ttf_blob); + if (!cfg->ttf_blob) { + atlas->font_num++; + return 0; + } + NK_MEMCPY(cfg->ttf_blob, config->ttf_blob, cfg->ttf_size); + cfg->ttf_data_owned_by_atlas = 1; + } + atlas->font_num++; + return font; +} +NK_API struct nk_font* +nk_font_atlas_add_from_memory(struct nk_font_atlas *atlas, void *memory, + nk_size size, float height, const struct nk_font_config *config) +{ + struct nk_font_config cfg; + NK_ASSERT(memory); + NK_ASSERT(size); + + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + if (!atlas || !atlas->temporary.alloc || !atlas->temporary.free || !memory || !size || + !atlas->permanent.alloc || !atlas->permanent.free) + return 0; + + cfg = (config) ? *config: nk_font_config(height); + cfg.ttf_blob = memory; + cfg.ttf_size = size; + cfg.size = height; + cfg.ttf_data_owned_by_atlas = 0; + return nk_font_atlas_add(atlas, &cfg); +} +#ifdef NK_INCLUDE_STANDARD_IO +NK_API struct nk_font* +nk_font_atlas_add_from_file(struct nk_font_atlas *atlas, const char *file_path, + float height, const struct nk_font_config *config) +{ + nk_size size; + char *memory; + struct nk_font_config cfg; + + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + + if (!atlas || !file_path) return 0; + memory = nk_file_load(file_path, &size, &atlas->permanent); + if (!memory) return 0; + + cfg = (config) ? *config: nk_font_config(height); + cfg.ttf_blob = memory; + cfg.ttf_size = size; + cfg.size = height; + cfg.ttf_data_owned_by_atlas = 1; + return nk_font_atlas_add(atlas, &cfg); +} +#endif +NK_API struct nk_font* +nk_font_atlas_add_compressed(struct nk_font_atlas *atlas, + void *compressed_data, nk_size compressed_size, float height, + const struct nk_font_config *config) +{ + unsigned int decompressed_size; + void *decompressed_data; + struct nk_font_config cfg; + + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + + NK_ASSERT(compressed_data); + NK_ASSERT(compressed_size); + if (!atlas || !compressed_data || !atlas->temporary.alloc || !atlas->temporary.free || + !atlas->permanent.alloc || !atlas->permanent.free) + return 0; + + decompressed_size = nk_decompress_length((unsigned char*)compressed_data); + decompressed_data = atlas->permanent.alloc(atlas->permanent.userdata,0,decompressed_size); + NK_ASSERT(decompressed_data); + if (!decompressed_data) return 0; + nk_decompress((unsigned char*)decompressed_data, (unsigned char*)compressed_data, + (unsigned int)compressed_size); + + cfg = (config) ? *config: nk_font_config(height); + cfg.ttf_blob = decompressed_data; + cfg.ttf_size = decompressed_size; + cfg.size = height; + cfg.ttf_data_owned_by_atlas = 1; + return nk_font_atlas_add(atlas, &cfg); +} +NK_API struct nk_font* +nk_font_atlas_add_compressed_base85(struct nk_font_atlas *atlas, + const char *data_base85, float height, const struct nk_font_config *config) +{ + int compressed_size; + void *compressed_data; + struct nk_font *font; + + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + + NK_ASSERT(data_base85); + if (!atlas || !data_base85 || !atlas->temporary.alloc || !atlas->temporary.free || + !atlas->permanent.alloc || !atlas->permanent.free) + return 0; + + compressed_size = (((int)nk_strlen(data_base85) + 4) / 5) * 4; + compressed_data = atlas->temporary.alloc(atlas->temporary.userdata,0, (nk_size)compressed_size); + NK_ASSERT(compressed_data); + if (!compressed_data) return 0; + nk_decode_85((unsigned char*)compressed_data, (const unsigned char*)data_base85); + font = nk_font_atlas_add_compressed(atlas, compressed_data, + (nk_size)compressed_size, height, config); + atlas->temporary.free(atlas->temporary.userdata, compressed_data); + return font; +} + +#ifdef NK_INCLUDE_DEFAULT_FONT +NK_API struct nk_font* +nk_font_atlas_add_default(struct nk_font_atlas *atlas, + float pixel_height, const struct nk_font_config *config) +{ + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + return nk_font_atlas_add_compressed_base85(atlas, + nk_proggy_clean_ttf_compressed_data_base85, pixel_height, config); +} +#endif +NK_API const void* +nk_font_atlas_bake(struct nk_font_atlas *atlas, int *width, int *height, + enum nk_font_atlas_format fmt) +{ + int i = 0; + void *tmp = 0; + nk_size tmp_size, img_size; + struct nk_font *font_iter; + struct nk_font_baker *baker; + + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + + NK_ASSERT(width); + NK_ASSERT(height); + if (!atlas || !width || !height || + !atlas->temporary.alloc || !atlas->temporary.free || + !atlas->permanent.alloc || !atlas->permanent.free) + return 0; + +#ifdef NK_INCLUDE_DEFAULT_FONT + /* no font added so just use default font */ + if (!atlas->font_num) + atlas->default_font = nk_font_atlas_add_default(atlas, 13.0f, 0); +#endif + NK_ASSERT(atlas->font_num); + if (!atlas->font_num) return 0; + + /* allocate temporary baker memory required for the baking process */ + nk_font_baker_memory(&tmp_size, &atlas->glyph_count, atlas->config, atlas->font_num); + tmp = atlas->temporary.alloc(atlas->temporary.userdata,0, tmp_size); + NK_ASSERT(tmp); + if (!tmp) goto failed; + + /* allocate glyph memory for all fonts */ + baker = nk_font_baker(tmp, atlas->glyph_count, atlas->font_num, &atlas->temporary); + atlas->glyphs = (struct nk_font_glyph*)atlas->permanent.alloc( + atlas->permanent.userdata,0, sizeof(struct nk_font_glyph)*(nk_size)atlas->glyph_count); + NK_ASSERT(atlas->glyphs); + if (!atlas->glyphs) + goto failed; + + /* pack all glyphs into a tight fit space */ + atlas->custom.w = (NK_CURSOR_DATA_W*2)+1; + atlas->custom.h = NK_CURSOR_DATA_H + 1; + if (!nk_font_bake_pack(baker, &img_size, width, height, &atlas->custom, + atlas->config, atlas->font_num, &atlas->temporary)) + goto failed; + + /* allocate memory for the baked image font atlas */ + atlas->pixel = atlas->temporary.alloc(atlas->temporary.userdata,0, img_size); + NK_ASSERT(atlas->pixel); + if (!atlas->pixel) + goto failed; + + /* bake glyphs and custom white pixel into image */ + nk_font_bake(baker, atlas->pixel, *width, *height, + atlas->glyphs, atlas->glyph_count, atlas->config, atlas->font_num); + nk_font_bake_custom_data(atlas->pixel, *width, *height, atlas->custom, + nk_custom_cursor_data, NK_CURSOR_DATA_W, NK_CURSOR_DATA_H, '.', 'X'); + + if (fmt == NK_FONT_ATLAS_RGBA32) { + /* convert alpha8 image into rgba32 image */ + void *img_rgba = atlas->temporary.alloc(atlas->temporary.userdata,0, + (nk_size)(*width * *height * 4)); + NK_ASSERT(img_rgba); + if (!img_rgba) goto failed; + nk_font_bake_convert(img_rgba, *width, *height, atlas->pixel); + atlas->temporary.free(atlas->temporary.userdata, atlas->pixel); + atlas->pixel = img_rgba; + } + atlas->tex_width = *width; + atlas->tex_height = *height; + + /* initialize each font */ + for (font_iter = atlas->fonts; font_iter; font_iter = font_iter->next) { + struct nk_font *font = font_iter; + struct nk_font_config *config = font->config; + nk_font_init(font, config->size, config->fallback_glyph, atlas->glyphs, + config->font, nk_handle_ptr(0)); + } + + /* initialize each cursor */ + {NK_STORAGE const struct nk_vec2 nk_cursor_data[NK_CURSOR_COUNT][3] = { + /* Pos Size Offset */ + {{ 0, 3}, {12,19}, { 0, 0}}, + {{13, 0}, { 7,16}, { 4, 8}}, + {{31, 0}, {23,23}, {11,11}}, + {{21, 0}, { 9, 23}, { 5,11}}, + {{55,18}, {23, 9}, {11, 5}}, + {{73, 0}, {17,17}, { 9, 9}}, + {{55, 0}, {17,17}, { 9, 9}} + }; + for (i = 0; i < NK_CURSOR_COUNT; ++i) { + struct nk_cursor *cursor = &atlas->cursors[i]; + cursor->img.w = (unsigned short)*width; + cursor->img.h = (unsigned short)*height; + cursor->img.region[0] = (unsigned short)(atlas->custom.x + nk_cursor_data[i][0].x); + cursor->img.region[1] = (unsigned short)(atlas->custom.y + nk_cursor_data[i][0].y); + cursor->img.region[2] = (unsigned short)nk_cursor_data[i][1].x; + cursor->img.region[3] = (unsigned short)nk_cursor_data[i][1].y; + cursor->size = nk_cursor_data[i][1]; + cursor->offset = nk_cursor_data[i][2]; + }} + /* free temporary memory */ + atlas->temporary.free(atlas->temporary.userdata, tmp); + return atlas->pixel; + +failed: + /* error so cleanup all memory */ + if (tmp) atlas->temporary.free(atlas->temporary.userdata, tmp); + if (atlas->glyphs) { + atlas->permanent.free(atlas->permanent.userdata, atlas->glyphs); + atlas->glyphs = 0; + } + if (atlas->pixel) { + atlas->temporary.free(atlas->temporary.userdata, atlas->pixel); + atlas->pixel = 0; + } + return 0; +} +NK_API void +nk_font_atlas_end(struct nk_font_atlas *atlas, nk_handle texture, + struct nk_draw_null_texture *null) +{ + int i = 0; + struct nk_font *font_iter; + NK_ASSERT(atlas); + if (!atlas) { + if (!null) return; + null->texture = texture; + null->uv = nk_vec2(0.5f,0.5f); + } + if (null) { + null->texture = texture; + null->uv.x = (atlas->custom.x + 0.5f)/(float)atlas->tex_width; + null->uv.y = (atlas->custom.y + 0.5f)/(float)atlas->tex_height; + } + for (font_iter = atlas->fonts; font_iter; font_iter = font_iter->next) { + font_iter->texture = texture; +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT + font_iter->handle.texture = texture; +#endif + } + for (i = 0; i < NK_CURSOR_COUNT; ++i) + atlas->cursors[i].img.handle = texture; + + atlas->temporary.free(atlas->temporary.userdata, atlas->pixel); + atlas->pixel = 0; + atlas->tex_width = 0; + atlas->tex_height = 0; + atlas->custom.x = 0; + atlas->custom.y = 0; + atlas->custom.w = 0; + atlas->custom.h = 0; +} +NK_API void +nk_font_atlas_cleanup(struct nk_font_atlas *atlas) +{ + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + if (!atlas || !atlas->permanent.alloc || !atlas->permanent.free) return; + if (atlas->config) { + struct nk_font_config *iter; + for (iter = atlas->config; iter; iter = iter->next) { + struct nk_font_config *i; + for (i = iter->n; i != iter; i = i->n) { + atlas->permanent.free(atlas->permanent.userdata, i->ttf_blob); + i->ttf_blob = 0; + } + atlas->permanent.free(atlas->permanent.userdata, iter->ttf_blob); + iter->ttf_blob = 0; + } + } +} +NK_API void +nk_font_atlas_clear(struct nk_font_atlas *atlas) +{ + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + if (!atlas || !atlas->permanent.alloc || !atlas->permanent.free) return; + + if (atlas->config) { + struct nk_font_config *iter, *next; + for (iter = atlas->config; iter; iter = next) { + struct nk_font_config *i, *n; + for (i = iter->n; i != iter; i = n) { + n = i->n; + if (i->ttf_blob) + atlas->permanent.free(atlas->permanent.userdata, i->ttf_blob); + atlas->permanent.free(atlas->permanent.userdata, i); + } + next = iter->next; + if (i->ttf_blob) + atlas->permanent.free(atlas->permanent.userdata, iter->ttf_blob); + atlas->permanent.free(atlas->permanent.userdata, iter); + } + atlas->config = 0; + } + if (atlas->fonts) { + struct nk_font *iter, *next; + for (iter = atlas->fonts; iter; iter = next) { + next = iter->next; + atlas->permanent.free(atlas->permanent.userdata, iter); + } + atlas->fonts = 0; + } + if (atlas->glyphs) + atlas->permanent.free(atlas->permanent.userdata, atlas->glyphs); + nk_zero_struct(*atlas); +} +#endif + + + + + +/* =============================================================== + * + * INPUT + * + * ===============================================================*/ +NK_API void +nk_input_begin(struct nk_context *ctx) +{ + int i; + struct nk_input *in; + NK_ASSERT(ctx); + if (!ctx) return; + in = &ctx->input; + for (i = 0; i < NK_BUTTON_MAX; ++i) + in->mouse.buttons[i].clicked = 0; + + in->keyboard.text_len = 0; + in->mouse.scroll_delta = nk_vec2(0,0); + in->mouse.prev.x = in->mouse.pos.x; + in->mouse.prev.y = in->mouse.pos.y; + in->mouse.delta.x = 0; + in->mouse.delta.y = 0; + for (i = 0; i < NK_KEY_MAX; i++) + in->keyboard.keys[i].clicked = 0; +} +NK_API void +nk_input_end(struct nk_context *ctx) +{ + struct nk_input *in; + NK_ASSERT(ctx); + if (!ctx) return; + in = &ctx->input; + if (in->mouse.grab) + in->mouse.grab = 0; + if (in->mouse.ungrab) { + in->mouse.grabbed = 0; + in->mouse.ungrab = 0; + in->mouse.grab = 0; + } +} +NK_API void +nk_input_motion(struct nk_context *ctx, int x, int y) +{ + struct nk_input *in; + NK_ASSERT(ctx); + if (!ctx) return; + in = &ctx->input; + in->mouse.pos.x = (float)x; + in->mouse.pos.y = (float)y; + in->mouse.delta.x = in->mouse.pos.x - in->mouse.prev.x; + in->mouse.delta.y = in->mouse.pos.y - in->mouse.prev.y; +} +NK_API void +nk_input_key(struct nk_context *ctx, enum nk_keys key, int down) +{ + struct nk_input *in; + NK_ASSERT(ctx); + if (!ctx) return; + in = &ctx->input; +#ifdef NK_KEYSTATE_BASED_INPUT + if (in->keyboard.keys[key].down != down) + in->keyboard.keys[key].clicked++; +#else + in->keyboard.keys[key].clicked++; +#endif + in->keyboard.keys[key].down = down; +} +NK_API void +nk_input_button(struct nk_context *ctx, enum nk_buttons id, int x, int y, int down) +{ + struct nk_mouse_button *btn; + struct nk_input *in; + NK_ASSERT(ctx); + if (!ctx) return; + in = &ctx->input; + if (in->mouse.buttons[id].down == down) return; + + btn = &in->mouse.buttons[id]; + btn->clicked_pos.x = (float)x; + btn->clicked_pos.y = (float)y; + btn->down = down; + btn->clicked++; +} +NK_API void +nk_input_scroll(struct nk_context *ctx, struct nk_vec2 val) +{ + NK_ASSERT(ctx); + if (!ctx) return; + ctx->input.mouse.scroll_delta.x += val.x; + ctx->input.mouse.scroll_delta.y += val.y; +} +NK_API void +nk_input_glyph(struct nk_context *ctx, const nk_glyph glyph) +{ + int len = 0; + nk_rune unicode; + struct nk_input *in; + + NK_ASSERT(ctx); + if (!ctx) return; + in = &ctx->input; + + len = nk_utf_decode(glyph, &unicode, NK_UTF_SIZE); + if (len && ((in->keyboard.text_len + len) < NK_INPUT_MAX)) { + nk_utf_encode(unicode, &in->keyboard.text[in->keyboard.text_len], + NK_INPUT_MAX - in->keyboard.text_len); + in->keyboard.text_len += len; + } +} +NK_API void +nk_input_char(struct nk_context *ctx, char c) +{ + nk_glyph glyph; + NK_ASSERT(ctx); + if (!ctx) return; + glyph[0] = c; + nk_input_glyph(ctx, glyph); +} +NK_API void +nk_input_unicode(struct nk_context *ctx, nk_rune unicode) +{ + nk_glyph rune; + NK_ASSERT(ctx); + if (!ctx) return; + nk_utf_encode(unicode, rune, NK_UTF_SIZE); + nk_input_glyph(ctx, rune); +} +NK_API int +nk_input_has_mouse_click(const struct nk_input *i, enum nk_buttons id) +{ + const struct nk_mouse_button *btn; + if (!i) return nk_false; + btn = &i->mouse.buttons[id]; + return (btn->clicked && btn->down == nk_false) ? nk_true : nk_false; +} +NK_API int +nk_input_has_mouse_click_in_rect(const struct nk_input *i, enum nk_buttons id, + struct nk_rect b) +{ + const struct nk_mouse_button *btn; + if (!i) return nk_false; + btn = &i->mouse.buttons[id]; + if (!NK_INBOX(btn->clicked_pos.x,btn->clicked_pos.y,b.x,b.y,b.w,b.h)) + return nk_false; + return nk_true; +} +NK_API int +nk_input_has_mouse_click_down_in_rect(const struct nk_input *i, enum nk_buttons id, + struct nk_rect b, int down) +{ + const struct nk_mouse_button *btn; + if (!i) return nk_false; + btn = &i->mouse.buttons[id]; + return nk_input_has_mouse_click_in_rect(i, id, b) && (btn->down == down); +} +NK_API int +nk_input_is_mouse_click_in_rect(const struct nk_input *i, enum nk_buttons id, + struct nk_rect b) +{ + const struct nk_mouse_button *btn; + if (!i) return nk_false; + btn = &i->mouse.buttons[id]; + return (nk_input_has_mouse_click_down_in_rect(i, id, b, nk_false) && + btn->clicked) ? nk_true : nk_false; +} +NK_API int +nk_input_is_mouse_click_down_in_rect(const struct nk_input *i, enum nk_buttons id, + struct nk_rect b, int down) +{ + const struct nk_mouse_button *btn; + if (!i) return nk_false; + btn = &i->mouse.buttons[id]; + return (nk_input_has_mouse_click_down_in_rect(i, id, b, down) && + btn->clicked) ? nk_true : nk_false; +} +NK_API int +nk_input_any_mouse_click_in_rect(const struct nk_input *in, struct nk_rect b) +{ + int i, down = 0; + for (i = 0; i < NK_BUTTON_MAX; ++i) + down = down || nk_input_is_mouse_click_in_rect(in, (enum nk_buttons)i, b); + return down; +} +NK_API int +nk_input_is_mouse_hovering_rect(const struct nk_input *i, struct nk_rect rect) +{ + if (!i) return nk_false; + return NK_INBOX(i->mouse.pos.x, i->mouse.pos.y, rect.x, rect.y, rect.w, rect.h); +} +NK_API int +nk_input_is_mouse_prev_hovering_rect(const struct nk_input *i, struct nk_rect rect) +{ + if (!i) return nk_false; + return NK_INBOX(i->mouse.prev.x, i->mouse.prev.y, rect.x, rect.y, rect.w, rect.h); +} +NK_API int +nk_input_mouse_clicked(const struct nk_input *i, enum nk_buttons id, struct nk_rect rect) +{ + if (!i) return nk_false; + if (!nk_input_is_mouse_hovering_rect(i, rect)) return nk_false; + return nk_input_is_mouse_click_in_rect(i, id, rect); +} +NK_API int +nk_input_is_mouse_down(const struct nk_input *i, enum nk_buttons id) +{ + if (!i) return nk_false; + return i->mouse.buttons[id].down; +} +NK_API int +nk_input_is_mouse_pressed(const struct nk_input *i, enum nk_buttons id) +{ + const struct nk_mouse_button *b; + if (!i) return nk_false; + b = &i->mouse.buttons[id]; + if (b->down && b->clicked) + return nk_true; + return nk_false; +} +NK_API int +nk_input_is_mouse_released(const struct nk_input *i, enum nk_buttons id) +{ + if (!i) return nk_false; + return (!i->mouse.buttons[id].down && i->mouse.buttons[id].clicked); +} +NK_API int +nk_input_is_key_pressed(const struct nk_input *i, enum nk_keys key) +{ + const struct nk_key *k; + if (!i) return nk_false; + k = &i->keyboard.keys[key]; + if ((k->down && k->clicked) || (!k->down && k->clicked >= 2)) + return nk_true; + return nk_false; +} +NK_API int +nk_input_is_key_released(const struct nk_input *i, enum nk_keys key) +{ + const struct nk_key *k; + if (!i) return nk_false; + k = &i->keyboard.keys[key]; + if ((!k->down && k->clicked) || (k->down && k->clicked >= 2)) + return nk_true; + return nk_false; +} +NK_API int +nk_input_is_key_down(const struct nk_input *i, enum nk_keys key) +{ + const struct nk_key *k; + if (!i) return nk_false; + k = &i->keyboard.keys[key]; + if (k->down) return nk_true; + return nk_false; +} + + + + + +/* =============================================================== + * + * STYLE + * + * ===============================================================*/ +NK_API void nk_style_default(struct nk_context *ctx){nk_style_from_table(ctx, 0);} +#define NK_COLOR_MAP(NK_COLOR)\ + NK_COLOR(NK_COLOR_TEXT, 175,175,175,255) \ + NK_COLOR(NK_COLOR_WINDOW, 45, 45, 45, 255) \ + NK_COLOR(NK_COLOR_HEADER, 40, 40, 40, 255) \ + NK_COLOR(NK_COLOR_BORDER, 65, 65, 65, 255) \ + NK_COLOR(NK_COLOR_BUTTON, 50, 50, 50, 255) \ + NK_COLOR(NK_COLOR_BUTTON_HOVER, 40, 40, 40, 255) \ + NK_COLOR(NK_COLOR_BUTTON_ACTIVE, 35, 35, 35, 255) \ + NK_COLOR(NK_COLOR_TOGGLE, 100,100,100,255) \ + NK_COLOR(NK_COLOR_TOGGLE_HOVER, 120,120,120,255) \ + NK_COLOR(NK_COLOR_TOGGLE_CURSOR, 45, 45, 45, 255) \ + NK_COLOR(NK_COLOR_SELECT, 45, 45, 45, 255) \ + NK_COLOR(NK_COLOR_SELECT_ACTIVE, 35, 35, 35,255) \ + NK_COLOR(NK_COLOR_SLIDER, 38, 38, 38, 255) \ + NK_COLOR(NK_COLOR_SLIDER_CURSOR, 100,100,100,255) \ + NK_COLOR(NK_COLOR_SLIDER_CURSOR_HOVER, 120,120,120,255) \ + NK_COLOR(NK_COLOR_SLIDER_CURSOR_ACTIVE, 150,150,150,255) \ + NK_COLOR(NK_COLOR_PROPERTY, 38, 38, 38, 255) \ + NK_COLOR(NK_COLOR_EDIT, 38, 38, 38, 255) \ + NK_COLOR(NK_COLOR_EDIT_CURSOR, 175,175,175,255) \ + NK_COLOR(NK_COLOR_COMBO, 45, 45, 45, 255) \ + NK_COLOR(NK_COLOR_CHART, 120,120,120,255) \ + NK_COLOR(NK_COLOR_CHART_COLOR, 45, 45, 45, 255) \ + NK_COLOR(NK_COLOR_CHART_COLOR_HIGHLIGHT, 255, 0, 0, 255) \ + NK_COLOR(NK_COLOR_SCROLLBAR, 40, 40, 40, 255) \ + NK_COLOR(NK_COLOR_SCROLLBAR_CURSOR, 100,100,100,255) \ + NK_COLOR(NK_COLOR_SCROLLBAR_CURSOR_HOVER, 120,120,120,255) \ + NK_COLOR(NK_COLOR_SCROLLBAR_CURSOR_ACTIVE, 150,150,150,255) \ + NK_COLOR(NK_COLOR_TAB_HEADER, 40, 40, 40,255) + +NK_GLOBAL const struct nk_color +nk_default_color_style[NK_COLOR_COUNT] = { +#define NK_COLOR(a,b,c,d,e) {b,c,d,e}, + NK_COLOR_MAP(NK_COLOR) +#undef NK_COLOR +}; +NK_GLOBAL const char *nk_color_names[NK_COLOR_COUNT] = { +#define NK_COLOR(a,b,c,d,e) #a, + NK_COLOR_MAP(NK_COLOR) +#undef NK_COLOR +}; + +NK_API const char* +nk_style_get_color_by_name(enum nk_style_colors c) +{ + return nk_color_names[c]; +} +NK_API struct nk_style_item +nk_style_item_image(struct nk_image img) +{ + struct nk_style_item i; + i.type = NK_STYLE_ITEM_IMAGE; + i.data.image = img; + return i; +} +NK_API struct nk_style_item +nk_style_item_color(struct nk_color col) +{ + struct nk_style_item i; + i.type = NK_STYLE_ITEM_COLOR; + i.data.color = col; + return i; +} +NK_API struct nk_style_item +nk_style_item_hide(void) +{ + struct nk_style_item i; + i.type = NK_STYLE_ITEM_COLOR; + i.data.color = nk_rgba(0,0,0,0); + return i; +} +NK_API void +nk_style_from_table(struct nk_context *ctx, const struct nk_color *table) +{ + struct nk_style *style; + struct nk_style_text *text; + struct nk_style_button *button; + struct nk_style_toggle *toggle; + struct nk_style_selectable *select; + struct nk_style_slider *slider; + struct nk_style_progress *prog; + struct nk_style_scrollbar *scroll; + struct nk_style_edit *edit; + struct nk_style_property *property; + struct nk_style_combo *combo; + struct nk_style_chart *chart; + struct nk_style_tab *tab; + struct nk_style_window *win; + + NK_ASSERT(ctx); + if (!ctx) return; + style = &ctx->style; + table = (!table) ? nk_default_color_style: table; + + /* default text */ + text = &style->text; + text->color = table[NK_COLOR_TEXT]; + text->padding = nk_vec2(0,0); + + /* default button */ + button = &style->button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_BUTTON]); + button->hover = nk_style_item_color(table[NK_COLOR_BUTTON_HOVER]); + button->active = nk_style_item_color(table[NK_COLOR_BUTTON_ACTIVE]); + button->border_color = table[NK_COLOR_BORDER]; + button->text_background = table[NK_COLOR_BUTTON]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(2.0f,2.0f); + button->image_padding = nk_vec2(0.0f,0.0f); + button->touch_padding = nk_vec2(0.0f, 0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 1.0f; + button->rounding = 4.0f; + button->draw_begin = 0; + button->draw_end = 0; + + /* contextual button */ + button = &style->contextual_button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_WINDOW]); + button->hover = nk_style_item_color(table[NK_COLOR_BUTTON_HOVER]); + button->active = nk_style_item_color(table[NK_COLOR_BUTTON_ACTIVE]); + button->border_color = table[NK_COLOR_WINDOW]; + button->text_background = table[NK_COLOR_WINDOW]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(2.0f,2.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 0.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + + /* menu button */ + button = &style->menu_button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_WINDOW]); + button->hover = nk_style_item_color(table[NK_COLOR_WINDOW]); + button->active = nk_style_item_color(table[NK_COLOR_WINDOW]); + button->border_color = table[NK_COLOR_WINDOW]; + button->text_background = table[NK_COLOR_WINDOW]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(2.0f,2.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 0.0f; + button->rounding = 1.0f; + button->draw_begin = 0; + button->draw_end = 0; + + /* checkbox toggle */ + toggle = &style->checkbox; + nk_zero_struct(*toggle); + toggle->normal = nk_style_item_color(table[NK_COLOR_TOGGLE]); + toggle->hover = nk_style_item_color(table[NK_COLOR_TOGGLE_HOVER]); + toggle->active = nk_style_item_color(table[NK_COLOR_TOGGLE_HOVER]); + toggle->cursor_normal = nk_style_item_color(table[NK_COLOR_TOGGLE_CURSOR]); + toggle->cursor_hover = nk_style_item_color(table[NK_COLOR_TOGGLE_CURSOR]); + toggle->userdata = nk_handle_ptr(0); + toggle->text_background = table[NK_COLOR_WINDOW]; + toggle->text_normal = table[NK_COLOR_TEXT]; + toggle->text_hover = table[NK_COLOR_TEXT]; + toggle->text_active = table[NK_COLOR_TEXT]; + toggle->padding = nk_vec2(2.0f, 2.0f); + toggle->touch_padding = nk_vec2(0,0); + toggle->border_color = nk_rgba(0,0,0,0); + toggle->border = 0.0f; + toggle->spacing = 4; + + /* option toggle */ + toggle = &style->option; + nk_zero_struct(*toggle); + toggle->normal = nk_style_item_color(table[NK_COLOR_TOGGLE]); + toggle->hover = nk_style_item_color(table[NK_COLOR_TOGGLE_HOVER]); + toggle->active = nk_style_item_color(table[NK_COLOR_TOGGLE_HOVER]); + toggle->cursor_normal = nk_style_item_color(table[NK_COLOR_TOGGLE_CURSOR]); + toggle->cursor_hover = nk_style_item_color(table[NK_COLOR_TOGGLE_CURSOR]); + toggle->userdata = nk_handle_ptr(0); + toggle->text_background = table[NK_COLOR_WINDOW]; + toggle->text_normal = table[NK_COLOR_TEXT]; + toggle->text_hover = table[NK_COLOR_TEXT]; + toggle->text_active = table[NK_COLOR_TEXT]; + toggle->padding = nk_vec2(3.0f, 3.0f); + toggle->touch_padding = nk_vec2(0,0); + toggle->border_color = nk_rgba(0,0,0,0); + toggle->border = 0.0f; + toggle->spacing = 4; + + /* selectable */ + select = &style->selectable; + nk_zero_struct(*select); + select->normal = nk_style_item_color(table[NK_COLOR_SELECT]); + select->hover = nk_style_item_color(table[NK_COLOR_SELECT]); + select->pressed = nk_style_item_color(table[NK_COLOR_SELECT]); + select->normal_active = nk_style_item_color(table[NK_COLOR_SELECT_ACTIVE]); + select->hover_active = nk_style_item_color(table[NK_COLOR_SELECT_ACTIVE]); + select->pressed_active = nk_style_item_color(table[NK_COLOR_SELECT_ACTIVE]); + select->text_normal = table[NK_COLOR_TEXT]; + select->text_hover = table[NK_COLOR_TEXT]; + select->text_pressed = table[NK_COLOR_TEXT]; + select->text_normal_active = table[NK_COLOR_TEXT]; + select->text_hover_active = table[NK_COLOR_TEXT]; + select->text_pressed_active = table[NK_COLOR_TEXT]; + select->padding = nk_vec2(2.0f,2.0f); + select->image_padding = nk_vec2(2.0f,2.0f); + select->touch_padding = nk_vec2(0,0); + select->userdata = nk_handle_ptr(0); + select->rounding = 0.0f; + select->draw_begin = 0; + select->draw_end = 0; + + /* slider */ + slider = &style->slider; + nk_zero_struct(*slider); + slider->normal = nk_style_item_hide(); + slider->hover = nk_style_item_hide(); + slider->active = nk_style_item_hide(); + slider->bar_normal = table[NK_COLOR_SLIDER]; + slider->bar_hover = table[NK_COLOR_SLIDER]; + slider->bar_active = table[NK_COLOR_SLIDER]; + slider->bar_filled = table[NK_COLOR_SLIDER_CURSOR]; + slider->cursor_normal = nk_style_item_color(table[NK_COLOR_SLIDER_CURSOR]); + slider->cursor_hover = nk_style_item_color(table[NK_COLOR_SLIDER_CURSOR_HOVER]); + slider->cursor_active = nk_style_item_color(table[NK_COLOR_SLIDER_CURSOR_ACTIVE]); + slider->inc_symbol = NK_SYMBOL_TRIANGLE_RIGHT; + slider->dec_symbol = NK_SYMBOL_TRIANGLE_LEFT; + slider->cursor_size = nk_vec2(16,16); + slider->padding = nk_vec2(2,2); + slider->spacing = nk_vec2(2,2); + slider->userdata = nk_handle_ptr(0); + slider->show_buttons = nk_false; + slider->bar_height = 8; + slider->rounding = 0; + slider->draw_begin = 0; + slider->draw_end = 0; + + /* slider buttons */ + button = &style->slider.inc_button; + button->normal = nk_style_item_color(nk_rgb(40,40,40)); + button->hover = nk_style_item_color(nk_rgb(42,42,42)); + button->active = nk_style_item_color(nk_rgb(44,44,44)); + button->border_color = nk_rgb(65,65,65); + button->text_background = nk_rgb(40,40,40); + button->text_normal = nk_rgb(175,175,175); + button->text_hover = nk_rgb(175,175,175); + button->text_active = nk_rgb(175,175,175); + button->padding = nk_vec2(8.0f,8.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 1.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + style->slider.dec_button = style->slider.inc_button; + + /* progressbar */ + prog = &style->progress; + nk_zero_struct(*prog); + prog->normal = nk_style_item_color(table[NK_COLOR_SLIDER]); + prog->hover = nk_style_item_color(table[NK_COLOR_SLIDER]); + prog->active = nk_style_item_color(table[NK_COLOR_SLIDER]); + prog->cursor_normal = nk_style_item_color(table[NK_COLOR_SLIDER_CURSOR]); + prog->cursor_hover = nk_style_item_color(table[NK_COLOR_SLIDER_CURSOR_HOVER]); + prog->cursor_active = nk_style_item_color(table[NK_COLOR_SLIDER_CURSOR_ACTIVE]); + prog->border_color = nk_rgba(0,0,0,0); + prog->cursor_border_color = nk_rgba(0,0,0,0); + prog->userdata = nk_handle_ptr(0); + prog->padding = nk_vec2(4,4); + prog->rounding = 0; + prog->border = 0; + prog->cursor_rounding = 0; + prog->cursor_border = 0; + prog->draw_begin = 0; + prog->draw_end = 0; + + /* scrollbars */ + scroll = &style->scrollh; + nk_zero_struct(*scroll); + scroll->normal = nk_style_item_color(table[NK_COLOR_SCROLLBAR]); + scroll->hover = nk_style_item_color(table[NK_COLOR_SCROLLBAR]); + scroll->active = nk_style_item_color(table[NK_COLOR_SCROLLBAR]); + scroll->cursor_normal = nk_style_item_color(table[NK_COLOR_SCROLLBAR_CURSOR]); + scroll->cursor_hover = nk_style_item_color(table[NK_COLOR_SCROLLBAR_CURSOR_HOVER]); + scroll->cursor_active = nk_style_item_color(table[NK_COLOR_SCROLLBAR_CURSOR_ACTIVE]); + scroll->dec_symbol = NK_SYMBOL_CIRCLE_SOLID; + scroll->inc_symbol = NK_SYMBOL_CIRCLE_SOLID; + scroll->userdata = nk_handle_ptr(0); + scroll->border_color = table[NK_COLOR_SCROLLBAR]; + scroll->cursor_border_color = table[NK_COLOR_SCROLLBAR]; + scroll->padding = nk_vec2(0,0); + scroll->show_buttons = nk_false; + scroll->border = 0; + scroll->rounding = 0; + scroll->border_cursor = 0; + scroll->rounding_cursor = 0; + scroll->draw_begin = 0; + scroll->draw_end = 0; + style->scrollv = style->scrollh; + + /* scrollbars buttons */ + button = &style->scrollh.inc_button; + button->normal = nk_style_item_color(nk_rgb(40,40,40)); + button->hover = nk_style_item_color(nk_rgb(42,42,42)); + button->active = nk_style_item_color(nk_rgb(44,44,44)); + button->border_color = nk_rgb(65,65,65); + button->text_background = nk_rgb(40,40,40); + button->text_normal = nk_rgb(175,175,175); + button->text_hover = nk_rgb(175,175,175); + button->text_active = nk_rgb(175,175,175); + button->padding = nk_vec2(4.0f,4.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 1.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + style->scrollh.dec_button = style->scrollh.inc_button; + style->scrollv.inc_button = style->scrollh.inc_button; + style->scrollv.dec_button = style->scrollh.inc_button; + + /* edit */ + edit = &style->edit; + nk_zero_struct(*edit); + edit->normal = nk_style_item_color(table[NK_COLOR_EDIT]); + edit->hover = nk_style_item_color(table[NK_COLOR_EDIT]); + edit->active = nk_style_item_color(table[NK_COLOR_EDIT]); + edit->cursor_normal = table[NK_COLOR_TEXT]; + edit->cursor_hover = table[NK_COLOR_TEXT]; + edit->cursor_text_normal= table[NK_COLOR_EDIT]; + edit->cursor_text_hover = table[NK_COLOR_EDIT]; + edit->border_color = table[NK_COLOR_BORDER]; + edit->text_normal = table[NK_COLOR_TEXT]; + edit->text_hover = table[NK_COLOR_TEXT]; + edit->text_active = table[NK_COLOR_TEXT]; + edit->selected_normal = table[NK_COLOR_TEXT]; + edit->selected_hover = table[NK_COLOR_TEXT]; + edit->selected_text_normal = table[NK_COLOR_EDIT]; + edit->selected_text_hover = table[NK_COLOR_EDIT]; + edit->scrollbar_size = nk_vec2(10,10); + edit->scrollbar = style->scrollv; + edit->padding = nk_vec2(4,4); + edit->row_padding = 2; + edit->cursor_size = 4; + edit->border = 1; + edit->rounding = 0; + + /* property */ + property = &style->property; + nk_zero_struct(*property); + property->normal = nk_style_item_color(table[NK_COLOR_PROPERTY]); + property->hover = nk_style_item_color(table[NK_COLOR_PROPERTY]); + property->active = nk_style_item_color(table[NK_COLOR_PROPERTY]); + property->border_color = table[NK_COLOR_BORDER]; + property->label_normal = table[NK_COLOR_TEXT]; + property->label_hover = table[NK_COLOR_TEXT]; + property->label_active = table[NK_COLOR_TEXT]; + property->sym_left = NK_SYMBOL_TRIANGLE_LEFT; + property->sym_right = NK_SYMBOL_TRIANGLE_RIGHT; + property->userdata = nk_handle_ptr(0); + property->padding = nk_vec2(4,4); + property->border = 1; + property->rounding = 10; + property->draw_begin = 0; + property->draw_end = 0; + + /* property buttons */ + button = &style->property.dec_button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_PROPERTY]); + button->hover = nk_style_item_color(table[NK_COLOR_PROPERTY]); + button->active = nk_style_item_color(table[NK_COLOR_PROPERTY]); + button->border_color = nk_rgba(0,0,0,0); + button->text_background = table[NK_COLOR_PROPERTY]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(0.0f,0.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 0.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + style->property.inc_button = style->property.dec_button; + + /* property edit */ + edit = &style->property.edit; + nk_zero_struct(*edit); + edit->normal = nk_style_item_color(table[NK_COLOR_PROPERTY]); + edit->hover = nk_style_item_color(table[NK_COLOR_PROPERTY]); + edit->active = nk_style_item_color(table[NK_COLOR_PROPERTY]); + edit->border_color = nk_rgba(0,0,0,0); + edit->cursor_normal = table[NK_COLOR_TEXT]; + edit->cursor_hover = table[NK_COLOR_TEXT]; + edit->cursor_text_normal= table[NK_COLOR_EDIT]; + edit->cursor_text_hover = table[NK_COLOR_EDIT]; + edit->text_normal = table[NK_COLOR_TEXT]; + edit->text_hover = table[NK_COLOR_TEXT]; + edit->text_active = table[NK_COLOR_TEXT]; + edit->selected_normal = table[NK_COLOR_TEXT]; + edit->selected_hover = table[NK_COLOR_TEXT]; + edit->selected_text_normal = table[NK_COLOR_EDIT]; + edit->selected_text_hover = table[NK_COLOR_EDIT]; + edit->padding = nk_vec2(0,0); + edit->cursor_size = 8; + edit->border = 0; + edit->rounding = 0; + + /* chart */ + chart = &style->chart; + nk_zero_struct(*chart); + chart->background = nk_style_item_color(table[NK_COLOR_CHART]); + chart->border_color = table[NK_COLOR_BORDER]; + chart->selected_color = table[NK_COLOR_CHART_COLOR_HIGHLIGHT]; + chart->color = table[NK_COLOR_CHART_COLOR]; + chart->padding = nk_vec2(4,4); + chart->border = 0; + chart->rounding = 0; + + /* combo */ + combo = &style->combo; + combo->normal = nk_style_item_color(table[NK_COLOR_COMBO]); + combo->hover = nk_style_item_color(table[NK_COLOR_COMBO]); + combo->active = nk_style_item_color(table[NK_COLOR_COMBO]); + combo->border_color = table[NK_COLOR_BORDER]; + combo->label_normal = table[NK_COLOR_TEXT]; + combo->label_hover = table[NK_COLOR_TEXT]; + combo->label_active = table[NK_COLOR_TEXT]; + combo->sym_normal = NK_SYMBOL_TRIANGLE_DOWN; + combo->sym_hover = NK_SYMBOL_TRIANGLE_DOWN; + combo->sym_active = NK_SYMBOL_TRIANGLE_DOWN; + combo->content_padding = nk_vec2(4,4); + combo->button_padding = nk_vec2(0,4); + combo->spacing = nk_vec2(4,0); + combo->border = 1; + combo->rounding = 0; + + /* combo button */ + button = &style->combo.button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_COMBO]); + button->hover = nk_style_item_color(table[NK_COLOR_COMBO]); + button->active = nk_style_item_color(table[NK_COLOR_COMBO]); + button->border_color = nk_rgba(0,0,0,0); + button->text_background = table[NK_COLOR_COMBO]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(2.0f,2.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 0.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + + /* tab */ + tab = &style->tab; + tab->background = nk_style_item_color(table[NK_COLOR_TAB_HEADER]); + tab->border_color = table[NK_COLOR_BORDER]; + tab->text = table[NK_COLOR_TEXT]; + tab->sym_minimize = NK_SYMBOL_TRIANGLE_RIGHT; + tab->sym_maximize = NK_SYMBOL_TRIANGLE_DOWN; + tab->padding = nk_vec2(4,4); + tab->spacing = nk_vec2(4,4); + tab->indent = 10.0f; + tab->border = 1; + tab->rounding = 0; + + /* tab button */ + button = &style->tab.tab_minimize_button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_TAB_HEADER]); + button->hover = nk_style_item_color(table[NK_COLOR_TAB_HEADER]); + button->active = nk_style_item_color(table[NK_COLOR_TAB_HEADER]); + button->border_color = nk_rgba(0,0,0,0); + button->text_background = table[NK_COLOR_TAB_HEADER]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(2.0f,2.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 0.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + style->tab.tab_maximize_button =*button; + + /* node button */ + button = &style->tab.node_minimize_button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_WINDOW]); + button->hover = nk_style_item_color(table[NK_COLOR_WINDOW]); + button->active = nk_style_item_color(table[NK_COLOR_WINDOW]); + button->border_color = nk_rgba(0,0,0,0); + button->text_background = table[NK_COLOR_TAB_HEADER]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(2.0f,2.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 0.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + style->tab.node_maximize_button =*button; + + /* window header */ + win = &style->window; + win->header.align = NK_HEADER_RIGHT; + win->header.close_symbol = NK_SYMBOL_X; + win->header.minimize_symbol = NK_SYMBOL_MINUS; + win->header.maximize_symbol = NK_SYMBOL_PLUS; + win->header.normal = nk_style_item_color(table[NK_COLOR_HEADER]); + win->header.hover = nk_style_item_color(table[NK_COLOR_HEADER]); + win->header.active = nk_style_item_color(table[NK_COLOR_HEADER]); + win->header.label_normal = table[NK_COLOR_TEXT]; + win->header.label_hover = table[NK_COLOR_TEXT]; + win->header.label_active = table[NK_COLOR_TEXT]; + win->header.label_padding = nk_vec2(4,4); + win->header.padding = nk_vec2(4,4); + win->header.spacing = nk_vec2(0,0); + + /* window header close button */ + button = &style->window.header.close_button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_HEADER]); + button->hover = nk_style_item_color(table[NK_COLOR_HEADER]); + button->active = nk_style_item_color(table[NK_COLOR_HEADER]); + button->border_color = nk_rgba(0,0,0,0); + button->text_background = table[NK_COLOR_HEADER]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(0.0f,0.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 0.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + + /* window header minimize button */ + button = &style->window.header.minimize_button; + nk_zero_struct(*button); + button->normal = nk_style_item_color(table[NK_COLOR_HEADER]); + button->hover = nk_style_item_color(table[NK_COLOR_HEADER]); + button->active = nk_style_item_color(table[NK_COLOR_HEADER]); + button->border_color = nk_rgba(0,0,0,0); + button->text_background = table[NK_COLOR_HEADER]; + button->text_normal = table[NK_COLOR_TEXT]; + button->text_hover = table[NK_COLOR_TEXT]; + button->text_active = table[NK_COLOR_TEXT]; + button->padding = nk_vec2(0.0f,0.0f); + button->touch_padding = nk_vec2(0.0f,0.0f); + button->userdata = nk_handle_ptr(0); + button->text_alignment = NK_TEXT_CENTERED; + button->border = 0.0f; + button->rounding = 0.0f; + button->draw_begin = 0; + button->draw_end = 0; + + /* window */ + win->background = table[NK_COLOR_WINDOW]; + win->fixed_background = nk_style_item_color(table[NK_COLOR_WINDOW]); + win->border_color = table[NK_COLOR_BORDER]; + win->popup_border_color = table[NK_COLOR_BORDER]; + win->combo_border_color = table[NK_COLOR_BORDER]; + win->contextual_border_color = table[NK_COLOR_BORDER]; + win->menu_border_color = table[NK_COLOR_BORDER]; + win->group_border_color = table[NK_COLOR_BORDER]; + win->tooltip_border_color = table[NK_COLOR_BORDER]; + win->scaler = nk_style_item_color(table[NK_COLOR_TEXT]); + + win->rounding = 0.0f; + win->spacing = nk_vec2(4,4); + win->scrollbar_size = nk_vec2(10,10); + win->min_size = nk_vec2(64,64); + + win->combo_border = 1.0f; + win->contextual_border = 1.0f; + win->menu_border = 1.0f; + win->group_border = 1.0f; + win->tooltip_border = 1.0f; + win->popup_border = 1.0f; + win->border = 2.0f; + win->min_row_height_padding = 8; + + win->padding = nk_vec2(4,4); + win->group_padding = nk_vec2(4,4); + win->popup_padding = nk_vec2(4,4); + win->combo_padding = nk_vec2(4,4); + win->contextual_padding = nk_vec2(4,4); + win->menu_padding = nk_vec2(4,4); + win->tooltip_padding = nk_vec2(4,4); +} +NK_API void +nk_style_set_font(struct nk_context *ctx, const struct nk_user_font *font) +{ + struct nk_style *style; + NK_ASSERT(ctx); + + if (!ctx) return; + style = &ctx->style; + style->font = font; + ctx->stacks.fonts.head = 0; + if (ctx->current) + nk_layout_reset_min_row_height(ctx); +} +NK_API int +nk_style_push_font(struct nk_context *ctx, const struct nk_user_font *font) +{ + struct nk_config_stack_user_font *font_stack; + struct nk_config_stack_user_font_element *element; + + NK_ASSERT(ctx); + if (!ctx) return 0; + + font_stack = &ctx->stacks.fonts; + NK_ASSERT(font_stack->head < (int)NK_LEN(font_stack->elements)); + if (font_stack->head >= (int)NK_LEN(font_stack->elements)) + return 0; + + element = &font_stack->elements[font_stack->head++]; + element->address = &ctx->style.font; + element->old_value = ctx->style.font; + ctx->style.font = font; + return 1; +} +NK_API int +nk_style_pop_font(struct nk_context *ctx) +{ + struct nk_config_stack_user_font *font_stack; + struct nk_config_stack_user_font_element *element; + + NK_ASSERT(ctx); + if (!ctx) return 0; + + font_stack = &ctx->stacks.fonts; + NK_ASSERT(font_stack->head > 0); + if (font_stack->head < 1) + return 0; + + element = &font_stack->elements[--font_stack->head]; + *element->address = element->old_value; + return 1; +} +#define NK_STYLE_PUSH_IMPLEMENATION(prefix, type, stack) \ +nk_style_push_##type(struct nk_context *ctx, prefix##_##type *address, prefix##_##type value)\ +{\ + struct nk_config_stack_##type * type_stack;\ + struct nk_config_stack_##type##_element *element;\ + NK_ASSERT(ctx);\ + if (!ctx) return 0;\ + type_stack = &ctx->stacks.stack;\ + NK_ASSERT(type_stack->head < (int)NK_LEN(type_stack->elements));\ + if (type_stack->head >= (int)NK_LEN(type_stack->elements))\ + return 0;\ + element = &type_stack->elements[type_stack->head++];\ + element->address = address;\ + element->old_value = *address;\ + *address = value;\ + return 1;\ +} +#define NK_STYLE_POP_IMPLEMENATION(type, stack) \ +nk_style_pop_##type(struct nk_context *ctx)\ +{\ + struct nk_config_stack_##type *type_stack;\ + struct nk_config_stack_##type##_element *element;\ + NK_ASSERT(ctx);\ + if (!ctx) return 0;\ + type_stack = &ctx->stacks.stack;\ + NK_ASSERT(type_stack->head > 0);\ + if (type_stack->head < 1)\ + return 0;\ + element = &type_stack->elements[--type_stack->head];\ + *element->address = element->old_value;\ + return 1;\ +} +NK_API int NK_STYLE_PUSH_IMPLEMENATION(struct nk, style_item, style_items) +NK_API int NK_STYLE_PUSH_IMPLEMENATION(nk,float, floats) +NK_API int NK_STYLE_PUSH_IMPLEMENATION(struct nk, vec2, vectors) +NK_API int NK_STYLE_PUSH_IMPLEMENATION(nk,flags, flags) +NK_API int NK_STYLE_PUSH_IMPLEMENATION(struct nk,color, colors) + +NK_API int NK_STYLE_POP_IMPLEMENATION(style_item, style_items) +NK_API int NK_STYLE_POP_IMPLEMENATION(float,floats) +NK_API int NK_STYLE_POP_IMPLEMENATION(vec2, vectors) +NK_API int NK_STYLE_POP_IMPLEMENATION(flags,flags) +NK_API int NK_STYLE_POP_IMPLEMENATION(color,colors) + +NK_API int +nk_style_set_cursor(struct nk_context *ctx, enum nk_style_cursor c) +{ + struct nk_style *style; + NK_ASSERT(ctx); + if (!ctx) return 0; + style = &ctx->style; + if (style->cursors[c]) { + style->cursor_active = style->cursors[c]; + return 1; + } + return 0; +} +NK_API void +nk_style_show_cursor(struct nk_context *ctx) +{ + ctx->style.cursor_visible = nk_true; +} +NK_API void +nk_style_hide_cursor(struct nk_context *ctx) +{ + ctx->style.cursor_visible = nk_false; +} +NK_API void +nk_style_load_cursor(struct nk_context *ctx, enum nk_style_cursor cursor, + const struct nk_cursor *c) +{ + struct nk_style *style; + NK_ASSERT(ctx); + if (!ctx) return; + style = &ctx->style; + style->cursors[cursor] = c; +} +NK_API void +nk_style_load_all_cursors(struct nk_context *ctx, struct nk_cursor *cursors) +{ + int i = 0; + struct nk_style *style; + NK_ASSERT(ctx); + if (!ctx) return; + style = &ctx->style; + for (i = 0; i < NK_CURSOR_COUNT; ++i) + style->cursors[i] = &cursors[i]; + style->cursor_visible = nk_true; +} + + + + + +/* ============================================================== + * + * CONTEXT + * + * ===============================================================*/ +NK_INTERN void +nk_setup(struct nk_context *ctx, const struct nk_user_font *font) +{ + NK_ASSERT(ctx); + if (!ctx) return; + nk_zero_struct(*ctx); + nk_style_default(ctx); + ctx->seq = 1; + if (font) ctx->style.font = font; +#ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT + nk_draw_list_init(&ctx->draw_list); +#endif +} +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_API int +nk_init_default(struct nk_context *ctx, const struct nk_user_font *font) +{ + struct nk_allocator alloc; + alloc.userdata.ptr = 0; + alloc.alloc = nk_malloc; + alloc.free = nk_mfree; + return nk_init(ctx, &alloc, font); +} +#endif +NK_API int +nk_init_fixed(struct nk_context *ctx, void *memory, nk_size size, + const struct nk_user_font *font) +{ + NK_ASSERT(memory); + if (!memory) return 0; + nk_setup(ctx, font); + nk_buffer_init_fixed(&ctx->memory, memory, size); + ctx->use_pool = nk_false; + return 1; +} +NK_API int +nk_init_custom(struct nk_context *ctx, struct nk_buffer *cmds, + struct nk_buffer *pool, const struct nk_user_font *font) +{ + NK_ASSERT(cmds); + NK_ASSERT(pool); + if (!cmds || !pool) return 0; + + nk_setup(ctx, font); + ctx->memory = *cmds; + if (pool->type == NK_BUFFER_FIXED) { + /* take memory from buffer and alloc fixed pool */ + nk_pool_init_fixed(&ctx->pool, pool->memory.ptr, pool->memory.size); + } else { + /* create dynamic pool from buffer allocator */ + struct nk_allocator *alloc = &pool->pool; + nk_pool_init(&ctx->pool, alloc, NK_POOL_DEFAULT_CAPACITY); + } + ctx->use_pool = nk_true; + return 1; +} +NK_API int +nk_init(struct nk_context *ctx, struct nk_allocator *alloc, + const struct nk_user_font *font) +{ + NK_ASSERT(alloc); + if (!alloc) return 0; + nk_setup(ctx, font); + nk_buffer_init(&ctx->memory, alloc, NK_DEFAULT_COMMAND_BUFFER_SIZE); + nk_pool_init(&ctx->pool, alloc, NK_POOL_DEFAULT_CAPACITY); + ctx->use_pool = nk_true; + return 1; +} +#ifdef NK_INCLUDE_COMMAND_USERDATA +NK_API void +nk_set_user_data(struct nk_context *ctx, nk_handle handle) +{ + if (!ctx) return; + ctx->userdata = handle; + if (ctx->current) + ctx->current->buffer.userdata = handle; +} +#endif +NK_API void +nk_free(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + if (!ctx) return; + nk_buffer_free(&ctx->memory); + if (ctx->use_pool) + nk_pool_free(&ctx->pool); + + nk_zero(&ctx->input, sizeof(ctx->input)); + nk_zero(&ctx->style, sizeof(ctx->style)); + nk_zero(&ctx->memory, sizeof(ctx->memory)); + + ctx->seq = 0; + ctx->build = 0; + ctx->begin = 0; + ctx->end = 0; + ctx->active = 0; + ctx->current = 0; + ctx->freelist = 0; + ctx->count = 0; +} +NK_API void +nk_clear(struct nk_context *ctx) +{ + struct nk_window *iter; + struct nk_window *next; + NK_ASSERT(ctx); + + if (!ctx) return; + if (ctx->use_pool) + nk_buffer_clear(&ctx->memory); + else nk_buffer_reset(&ctx->memory, NK_BUFFER_FRONT); + + ctx->build = 0; + ctx->memory.calls = 0; + ctx->last_widget_state = 0; + ctx->style.cursor_active = ctx->style.cursors[NK_CURSOR_ARROW]; + NK_MEMSET(&ctx->overlay, 0, sizeof(ctx->overlay)); + + /* garbage collector */ + iter = ctx->begin; + while (iter) { + /* make sure valid minimized windows do not get removed */ + if ((iter->flags & NK_WINDOW_MINIMIZED) && + !(iter->flags & NK_WINDOW_CLOSED) && + iter->seq == ctx->seq) { + iter = iter->next; + continue; + } + /* remove hotness from hidden or closed windows*/ + if (((iter->flags & NK_WINDOW_HIDDEN) || + (iter->flags & NK_WINDOW_CLOSED)) && + iter == ctx->active) { + ctx->active = iter->prev; + ctx->end = iter->prev; + if (!ctx->end) + ctx->begin = 0; + if (ctx->active) + ctx->active->flags &= ~(unsigned)NK_WINDOW_ROM; + } + /* free unused popup windows */ + if (iter->popup.win && iter->popup.win->seq != ctx->seq) { + nk_free_window(ctx, iter->popup.win); + iter->popup.win = 0; + } + /* remove unused window state tables */ + {struct nk_table *n, *it = iter->tables; + while (it) { + n = it->next; + if (it->seq != ctx->seq) { + nk_remove_table(iter, it); + nk_zero(it, sizeof(union nk_page_data)); + nk_free_table(ctx, it); + if (it == iter->tables) + iter->tables = n; + } it = n; + }} + /* window itself is not used anymore so free */ + if (iter->seq != ctx->seq || iter->flags & NK_WINDOW_CLOSED) { + next = iter->next; + nk_remove_window(ctx, iter); + nk_free_window(ctx, iter); + iter = next; + } else iter = iter->next; + } + ctx->seq++; +} +NK_LIB void +nk_start_buffer(struct nk_context *ctx, struct nk_command_buffer *buffer) +{ + NK_ASSERT(ctx); + NK_ASSERT(buffer); + if (!ctx || !buffer) return; + buffer->begin = ctx->memory.allocated; + buffer->end = buffer->begin; + buffer->last = buffer->begin; + buffer->clip = nk_null_rect; +} +NK_LIB void +nk_start(struct nk_context *ctx, struct nk_window *win) +{ + NK_ASSERT(ctx); + NK_ASSERT(win); + nk_start_buffer(ctx, &win->buffer); +} +NK_LIB void +nk_start_popup(struct nk_context *ctx, struct nk_window *win) +{ + struct nk_popup_buffer *buf; + NK_ASSERT(ctx); + NK_ASSERT(win); + if (!ctx || !win) return; + + /* save buffer fill state for popup */ + buf = &win->popup.buf; + buf->begin = win->buffer.end; + buf->end = win->buffer.end; + buf->parent = win->buffer.last; + buf->last = buf->begin; + buf->active = nk_true; +} +NK_LIB void +nk_finish_popup(struct nk_context *ctx, struct nk_window *win) +{ + struct nk_popup_buffer *buf; + NK_ASSERT(ctx); + NK_ASSERT(win); + if (!ctx || !win) return; + + buf = &win->popup.buf; + buf->last = win->buffer.last; + buf->end = win->buffer.end; +} +NK_LIB void +nk_finish_buffer(struct nk_context *ctx, struct nk_command_buffer *buffer) +{ + NK_ASSERT(ctx); + NK_ASSERT(buffer); + if (!ctx || !buffer) return; + buffer->end = ctx->memory.allocated; +} +NK_LIB void +nk_finish(struct nk_context *ctx, struct nk_window *win) +{ + struct nk_popup_buffer *buf; + struct nk_command *parent_last; + void *memory; + + NK_ASSERT(ctx); + NK_ASSERT(win); + if (!ctx || !win) return; + nk_finish_buffer(ctx, &win->buffer); + if (!win->popup.buf.active) return; + + buf = &win->popup.buf; + memory = ctx->memory.memory.ptr; + parent_last = nk_ptr_add(struct nk_command, memory, buf->parent); + parent_last->next = buf->end; +} +NK_LIB void +nk_build(struct nk_context *ctx) +{ + struct nk_window *it = 0; + struct nk_command *cmd = 0; + nk_byte *buffer = 0; + + /* draw cursor overlay */ + if (!ctx->style.cursor_active) + ctx->style.cursor_active = ctx->style.cursors[NK_CURSOR_ARROW]; + if (ctx->style.cursor_active && !ctx->input.mouse.grabbed && ctx->style.cursor_visible) { + struct nk_rect mouse_bounds; + const struct nk_cursor *cursor = ctx->style.cursor_active; + nk_command_buffer_init(&ctx->overlay, &ctx->memory, NK_CLIPPING_OFF); + nk_start_buffer(ctx, &ctx->overlay); + + mouse_bounds.x = ctx->input.mouse.pos.x - cursor->offset.x; + mouse_bounds.y = ctx->input.mouse.pos.y - cursor->offset.y; + mouse_bounds.w = cursor->size.x; + mouse_bounds.h = cursor->size.y; + + nk_draw_image(&ctx->overlay, mouse_bounds, &cursor->img, nk_white); + nk_finish_buffer(ctx, &ctx->overlay); + } + /* build one big draw command list out of all window buffers */ + it = ctx->begin; + buffer = (nk_byte*)ctx->memory.memory.ptr; + while (it != 0) { + struct nk_window *next = it->next; + if (it->buffer.last == it->buffer.begin || (it->flags & NK_WINDOW_HIDDEN)|| + it->seq != ctx->seq) + goto cont; + + cmd = nk_ptr_add(struct nk_command, buffer, it->buffer.last); + while (next && ((next->buffer.last == next->buffer.begin) || + (next->flags & NK_WINDOW_HIDDEN) || next->seq != ctx->seq)) + next = next->next; /* skip empty command buffers */ + + if (next) cmd->next = next->buffer.begin; + cont: it = next; + } + /* append all popup draw commands into lists */ + it = ctx->begin; + while (it != 0) { + struct nk_window *next = it->next; + struct nk_popup_buffer *buf; + if (!it->popup.buf.active) + goto skip; + + buf = &it->popup.buf; + cmd->next = buf->begin; + cmd = nk_ptr_add(struct nk_command, buffer, buf->last); + buf->active = nk_false; + skip: it = next; + } + if (cmd) { + /* append overlay commands */ + if (ctx->overlay.end != ctx->overlay.begin) + cmd->next = ctx->overlay.begin; + else cmd->next = ctx->memory.allocated; + } +} +NK_API const struct nk_command* +nk__begin(struct nk_context *ctx) +{ + struct nk_window *iter; + nk_byte *buffer; + NK_ASSERT(ctx); + if (!ctx) return 0; + if (!ctx->count) return 0; + + buffer = (nk_byte*)ctx->memory.memory.ptr; + if (!ctx->build) { + nk_build(ctx); + ctx->build = nk_true; + } + iter = ctx->begin; + while (iter && ((iter->buffer.begin == iter->buffer.end) || + (iter->flags & NK_WINDOW_HIDDEN) || iter->seq != ctx->seq)) + iter = iter->next; + if (!iter) return 0; + return nk_ptr_add_const(struct nk_command, buffer, iter->buffer.begin); +} + +NK_API const struct nk_command* +nk__next(struct nk_context *ctx, const struct nk_command *cmd) +{ + nk_byte *buffer; + const struct nk_command *next; + NK_ASSERT(ctx); + if (!ctx || !cmd || !ctx->count) return 0; + if (cmd->next >= ctx->memory.allocated) return 0; + buffer = (nk_byte*)ctx->memory.memory.ptr; + next = nk_ptr_add_const(struct nk_command, buffer, cmd->next); + return next; +} + + + + + + +/* =============================================================== + * + * POOL + * + * ===============================================================*/ +NK_LIB void +nk_pool_init(struct nk_pool *pool, struct nk_allocator *alloc, + unsigned int capacity) +{ + nk_zero(pool, sizeof(*pool)); + pool->alloc = *alloc; + pool->capacity = capacity; + pool->type = NK_BUFFER_DYNAMIC; + pool->pages = 0; +} +NK_LIB void +nk_pool_free(struct nk_pool *pool) +{ + struct nk_page *iter = pool->pages; + if (!pool) return; + if (pool->type == NK_BUFFER_FIXED) return; + while (iter) { + struct nk_page *next = iter->next; + pool->alloc.free(pool->alloc.userdata, iter); + iter = next; + } +} +NK_LIB void +nk_pool_init_fixed(struct nk_pool *pool, void *memory, nk_size size) +{ + nk_zero(pool, sizeof(*pool)); + NK_ASSERT(size >= sizeof(struct nk_page)); + if (size < sizeof(struct nk_page)) return; + pool->capacity = (unsigned)(size - sizeof(struct nk_page)) / sizeof(struct nk_page_element); + pool->pages = (struct nk_page*)memory; + pool->type = NK_BUFFER_FIXED; + pool->size = size; +} +NK_LIB struct nk_page_element* +nk_pool_alloc(struct nk_pool *pool) +{ + if (!pool->pages || pool->pages->size >= pool->capacity) { + /* allocate new page */ + struct nk_page *page; + if (pool->type == NK_BUFFER_FIXED) { + NK_ASSERT(pool->pages); + if (!pool->pages) return 0; + NK_ASSERT(pool->pages->size < pool->capacity); + return 0; + } else { + nk_size size = sizeof(struct nk_page); + size += NK_POOL_DEFAULT_CAPACITY * sizeof(union nk_page_data); + page = (struct nk_page*)pool->alloc.alloc(pool->alloc.userdata,0, size); + page->next = pool->pages; + pool->pages = page; + page->size = 0; + } + } return &pool->pages->win[pool->pages->size++]; +} + + + + + +/* =============================================================== + * + * PAGE ELEMENT + * + * ===============================================================*/ +NK_LIB struct nk_page_element* +nk_create_page_element(struct nk_context *ctx) +{ + struct nk_page_element *elem; + if (ctx->freelist) { + /* unlink page element from free list */ + elem = ctx->freelist; + ctx->freelist = elem->next; + } else if (ctx->use_pool) { + /* allocate page element from memory pool */ + elem = nk_pool_alloc(&ctx->pool); + NK_ASSERT(elem); + if (!elem) return 0; + } else { + /* allocate new page element from back of fixed size memory buffer */ + NK_STORAGE const nk_size size = sizeof(struct nk_page_element); + NK_STORAGE const nk_size align = NK_ALIGNOF(struct nk_page_element); + elem = (struct nk_page_element*)nk_buffer_alloc(&ctx->memory, NK_BUFFER_BACK, size, align); + NK_ASSERT(elem); + if (!elem) return 0; + } + nk_zero_struct(*elem); + elem->next = 0; + elem->prev = 0; + return elem; +} +NK_LIB void +nk_link_page_element_into_freelist(struct nk_context *ctx, + struct nk_page_element *elem) +{ + /* link table into freelist */ + if (!ctx->freelist) { + ctx->freelist = elem; + } else { + elem->next = ctx->freelist; + ctx->freelist = elem; + } +} +NK_LIB void +nk_free_page_element(struct nk_context *ctx, struct nk_page_element *elem) +{ + /* we have a pool so just add to free list */ + if (ctx->use_pool) { + nk_link_page_element_into_freelist(ctx, elem); + return; + } + /* if possible remove last element from back of fixed memory buffer */ + {void *elem_end = (void*)(elem + 1); + void *buffer_end = (nk_byte*)ctx->memory.memory.ptr + ctx->memory.size; + if (elem_end == buffer_end) + ctx->memory.size -= sizeof(struct nk_page_element); + else nk_link_page_element_into_freelist(ctx, elem);} +} + + + + + +/* =============================================================== + * + * TABLE + * + * ===============================================================*/ +NK_LIB struct nk_table* +nk_create_table(struct nk_context *ctx) +{ + struct nk_page_element *elem; + elem = nk_create_page_element(ctx); + if (!elem) return 0; + nk_zero_struct(*elem); + return &elem->data.tbl; +} +NK_LIB void +nk_free_table(struct nk_context *ctx, struct nk_table *tbl) +{ + union nk_page_data *pd = NK_CONTAINER_OF(tbl, union nk_page_data, tbl); + struct nk_page_element *pe = NK_CONTAINER_OF(pd, struct nk_page_element, data); + nk_free_page_element(ctx, pe); +} +NK_LIB void +nk_push_table(struct nk_window *win, struct nk_table *tbl) +{ + if (!win->tables) { + win->tables = tbl; + tbl->next = 0; + tbl->prev = 0; + tbl->size = 0; + win->table_count = 1; + return; + } + win->tables->prev = tbl; + tbl->next = win->tables; + tbl->prev = 0; + tbl->size = 0; + win->tables = tbl; + win->table_count++; +} +NK_LIB void +nk_remove_table(struct nk_window *win, struct nk_table *tbl) +{ + if (win->tables == tbl) + win->tables = tbl->next; + if (tbl->next) + tbl->next->prev = tbl->prev; + if (tbl->prev) + tbl->prev->next = tbl->next; + tbl->next = 0; + tbl->prev = 0; +} +NK_LIB nk_uint* +nk_add_value(struct nk_context *ctx, struct nk_window *win, + nk_hash name, nk_uint value) +{ + NK_ASSERT(ctx); + NK_ASSERT(win); + if (!win || !ctx) return 0; + if (!win->tables || win->tables->size >= NK_VALUE_PAGE_CAPACITY) { + struct nk_table *tbl = nk_create_table(ctx); + NK_ASSERT(tbl); + if (!tbl) return 0; + nk_push_table(win, tbl); + } + win->tables->seq = win->seq; + win->tables->keys[win->tables->size] = name; + win->tables->values[win->tables->size] = value; + return &win->tables->values[win->tables->size++]; +} +NK_LIB nk_uint* +nk_find_value(struct nk_window *win, nk_hash name) +{ + struct nk_table *iter = win->tables; + while (iter) { + unsigned int i = 0; + unsigned int size = iter->size; + for (i = 0; i < size; ++i) { + if (iter->keys[i] == name) { + iter->seq = win->seq; + return &iter->values[i]; + } + } size = NK_VALUE_PAGE_CAPACITY; + iter = iter->next; + } + return 0; +} + + + + + +/* =============================================================== + * + * PANEL + * + * ===============================================================*/ +NK_LIB void* +nk_create_panel(struct nk_context *ctx) +{ + struct nk_page_element *elem; + elem = nk_create_page_element(ctx); + if (!elem) return 0; + nk_zero_struct(*elem); + return &elem->data.pan; +} +NK_LIB void +nk_free_panel(struct nk_context *ctx, struct nk_panel *pan) +{ + union nk_page_data *pd = NK_CONTAINER_OF(pan, union nk_page_data, pan); + struct nk_page_element *pe = NK_CONTAINER_OF(pd, struct nk_page_element, data); + nk_free_page_element(ctx, pe); +} +NK_LIB int +nk_panel_has_header(nk_flags flags, const char *title) +{ + int active = 0; + active = (flags & (NK_WINDOW_CLOSABLE|NK_WINDOW_MINIMIZABLE)); + active = active || (flags & NK_WINDOW_TITLE); + active = active && !(flags & NK_WINDOW_HIDDEN) && title; + return active; +} +NK_LIB struct nk_vec2 +nk_panel_get_padding(const struct nk_style *style, enum nk_panel_type type) +{ + switch (type) { + default: + case NK_PANEL_WINDOW: return style->window.padding; + case NK_PANEL_GROUP: return style->window.group_padding; + case NK_PANEL_POPUP: return style->window.popup_padding; + case NK_PANEL_CONTEXTUAL: return style->window.contextual_padding; + case NK_PANEL_COMBO: return style->window.combo_padding; + case NK_PANEL_MENU: return style->window.menu_padding; + case NK_PANEL_TOOLTIP: return style->window.menu_padding;} +} +NK_LIB float +nk_panel_get_border(const struct nk_style *style, nk_flags flags, + enum nk_panel_type type) +{ + if (flags & NK_WINDOW_BORDER) { + switch (type) { + default: + case NK_PANEL_WINDOW: return style->window.border; + case NK_PANEL_GROUP: return style->window.group_border; + case NK_PANEL_POPUP: return style->window.popup_border; + case NK_PANEL_CONTEXTUAL: return style->window.contextual_border; + case NK_PANEL_COMBO: return style->window.combo_border; + case NK_PANEL_MENU: return style->window.menu_border; + case NK_PANEL_TOOLTIP: return style->window.menu_border; + }} else return 0; +} +NK_LIB struct nk_color +nk_panel_get_border_color(const struct nk_style *style, enum nk_panel_type type) +{ + switch (type) { + default: + case NK_PANEL_WINDOW: return style->window.border_color; + case NK_PANEL_GROUP: return style->window.group_border_color; + case NK_PANEL_POPUP: return style->window.popup_border_color; + case NK_PANEL_CONTEXTUAL: return style->window.contextual_border_color; + case NK_PANEL_COMBO: return style->window.combo_border_color; + case NK_PANEL_MENU: return style->window.menu_border_color; + case NK_PANEL_TOOLTIP: return style->window.menu_border_color;} +} +NK_LIB int +nk_panel_is_sub(enum nk_panel_type type) +{ + return (type & NK_PANEL_SET_SUB)?1:0; +} +NK_LIB int +nk_panel_is_nonblock(enum nk_panel_type type) +{ + return (type & NK_PANEL_SET_NONBLOCK)?1:0; +} +NK_LIB int +nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type panel_type) +{ + struct nk_input *in; + struct nk_window *win; + struct nk_panel *layout; + struct nk_command_buffer *out; + const struct nk_style *style; + const struct nk_user_font *font; + + struct nk_vec2 scrollbar_size; + struct nk_vec2 panel_padding; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) return 0; + nk_zero(ctx->current->layout, sizeof(*ctx->current->layout)); + if ((ctx->current->flags & NK_WINDOW_HIDDEN) || (ctx->current->flags & NK_WINDOW_CLOSED)) { + nk_zero(ctx->current->layout, sizeof(struct nk_panel)); + ctx->current->layout->type = panel_type; + return 0; + } + /* pull state into local stack */ + style = &ctx->style; + font = style->font; + win = ctx->current; + layout = win->layout; + out = &win->buffer; + in = (win->flags & NK_WINDOW_NO_INPUT) ? 0: &ctx->input; +#ifdef NK_INCLUDE_COMMAND_USERDATA + win->buffer.userdata = ctx->userdata; +#endif + /* pull style configuration into local stack */ + scrollbar_size = style->window.scrollbar_size; + panel_padding = nk_panel_get_padding(style, panel_type); + + /* window movement */ + if ((win->flags & NK_WINDOW_MOVABLE) && !(win->flags & NK_WINDOW_ROM)) { + int left_mouse_down; + int left_mouse_clicked; + int left_mouse_click_in_cursor; + + /* calculate draggable window space */ + struct nk_rect header; + header.x = win->bounds.x; + header.y = win->bounds.y; + header.w = win->bounds.w; + if (nk_panel_has_header(win->flags, title)) { + header.h = font->height + 2.0f * style->window.header.padding.y; + header.h += 2.0f * style->window.header.label_padding.y; + } else header.h = panel_padding.y; + + /* window movement by dragging */ + left_mouse_down = in->mouse.buttons[NK_BUTTON_LEFT].down; + left_mouse_clicked = (int)in->mouse.buttons[NK_BUTTON_LEFT].clicked; + left_mouse_click_in_cursor = nk_input_has_mouse_click_down_in_rect(in, + NK_BUTTON_LEFT, header, nk_true); + if (left_mouse_down && left_mouse_click_in_cursor && !left_mouse_clicked) { + win->bounds.x = win->bounds.x + in->mouse.delta.x; + win->bounds.y = win->bounds.y + in->mouse.delta.y; + in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.x += in->mouse.delta.x; + in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.y += in->mouse.delta.y; + ctx->style.cursor_active = ctx->style.cursors[NK_CURSOR_MOVE]; + } + } + + /* setup panel */ + layout->type = panel_type; + layout->flags = win->flags; + layout->bounds = win->bounds; + layout->bounds.x += panel_padding.x; + layout->bounds.w -= 2*panel_padding.x; + if (win->flags & NK_WINDOW_BORDER) { + layout->border = nk_panel_get_border(style, win->flags, panel_type); + layout->bounds = nk_shrink_rect(layout->bounds, layout->border); + } else layout->border = 0; + layout->at_y = layout->bounds.y; + layout->at_x = layout->bounds.x; + layout->max_x = 0; + layout->header_height = 0; + layout->footer_height = 0; + nk_layout_reset_min_row_height(ctx); + layout->row.index = 0; + layout->row.columns = 0; + layout->row.ratio = 0; + layout->row.item_width = 0; + layout->row.tree_depth = 0; + layout->row.height = panel_padding.y; + layout->has_scrolling = nk_true; + if (!(win->flags & NK_WINDOW_NO_SCROLLBAR)) + layout->bounds.w -= scrollbar_size.x; + if (!nk_panel_is_nonblock(panel_type)) { + layout->footer_height = 0; + if (!(win->flags & NK_WINDOW_NO_SCROLLBAR) || win->flags & NK_WINDOW_SCALABLE) + layout->footer_height = scrollbar_size.y; + layout->bounds.h -= layout->footer_height; + } + + /* panel header */ + if (nk_panel_has_header(win->flags, title)) + { + struct nk_text text; + struct nk_rect header; + const struct nk_style_item *background = 0; + + /* calculate header bounds */ + header.x = win->bounds.x; + header.y = win->bounds.y; + header.w = win->bounds.w; + header.h = font->height + 2.0f * style->window.header.padding.y; + header.h += (2.0f * style->window.header.label_padding.y); + + /* shrink panel by header */ + layout->header_height = header.h; + layout->bounds.y += header.h; + layout->bounds.h -= header.h; + layout->at_y += header.h; + + /* select correct header background and text color */ + if (ctx->active == win) { + background = &style->window.header.active; + text.text = style->window.header.label_active; + } else if (nk_input_is_mouse_hovering_rect(&ctx->input, header)) { + background = &style->window.header.hover; + text.text = style->window.header.label_hover; + } else { + background = &style->window.header.normal; + text.text = style->window.header.label_normal; + } + + /* draw header background */ + header.h += 1.0f; + if (background->type == NK_STYLE_ITEM_IMAGE) { + text.background = nk_rgba(0,0,0,0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + } else { + text.background = background->data.color; + nk_fill_rect(out, header, 0, background->data.color); + } + + /* window close button */ + {struct nk_rect button; + button.y = header.y + style->window.header.padding.y; + button.h = header.h - 2 * style->window.header.padding.y; + button.w = button.h; + if (win->flags & NK_WINDOW_CLOSABLE) { + nk_flags ws = 0; + if (style->window.header.align == NK_HEADER_RIGHT) { + button.x = (header.w + header.x) - (button.w + style->window.header.padding.x); + header.w -= button.w + style->window.header.spacing.x + style->window.header.padding.x; + } else { + button.x = header.x + style->window.header.padding.x; + header.x += button.w + style->window.header.spacing.x + style->window.header.padding.x; + } + + if (nk_do_button_symbol(&ws, &win->buffer, button, + style->window.header.close_symbol, NK_BUTTON_DEFAULT, + &style->window.header.close_button, in, style->font) && !(win->flags & NK_WINDOW_ROM)) + { + layout->flags |= NK_WINDOW_HIDDEN; + layout->flags &= (nk_flags)~NK_WINDOW_MINIMIZED; + } + } + + /* window minimize button */ + if (win->flags & NK_WINDOW_MINIMIZABLE) { + nk_flags ws = 0; + if (style->window.header.align == NK_HEADER_RIGHT) { + button.x = (header.w + header.x) - button.w; + if (!(win->flags & NK_WINDOW_CLOSABLE)) { + button.x -= style->window.header.padding.x; + header.w -= style->window.header.padding.x; + } + header.w -= button.w + style->window.header.spacing.x; + } else { + button.x = header.x; + header.x += button.w + style->window.header.spacing.x + style->window.header.padding.x; + } + if (nk_do_button_symbol(&ws, &win->buffer, button, (layout->flags & NK_WINDOW_MINIMIZED)? + style->window.header.maximize_symbol: style->window.header.minimize_symbol, + NK_BUTTON_DEFAULT, &style->window.header.minimize_button, in, style->font) && !(win->flags & NK_WINDOW_ROM)) + layout->flags = (layout->flags & NK_WINDOW_MINIMIZED) ? + layout->flags & (nk_flags)~NK_WINDOW_MINIMIZED: + layout->flags | NK_WINDOW_MINIMIZED; + }} + + {/* window header title */ + int text_len = nk_strlen(title); + struct nk_rect label = {0,0,0,0}; + float t = font->width(font->userdata, font->height, title, text_len); + text.padding = nk_vec2(0,0); + + label.x = header.x + style->window.header.padding.x; + label.x += style->window.header.label_padding.x; + label.y = header.y + style->window.header.label_padding.y; + label.h = font->height + 2 * style->window.header.label_padding.y; + label.w = t + 2 * style->window.header.spacing.x; + label.w = NK_CLAMP(0, label.w, header.x + header.w - label.x); + nk_widget_text(out, label,(const char*)title, text_len, &text, NK_TEXT_LEFT, font);} + } + + /* draw window background */ + if (!(layout->flags & NK_WINDOW_MINIMIZED) && !(layout->flags & NK_WINDOW_DYNAMIC)) { + struct nk_rect body; + body.x = win->bounds.x; + body.w = win->bounds.w; + body.y = (win->bounds.y + layout->header_height); + body.h = (win->bounds.h - layout->header_height); + if (style->window.fixed_background.type == NK_STYLE_ITEM_IMAGE) + nk_draw_image(out, body, &style->window.fixed_background.data.image, nk_white); + else nk_fill_rect(out, body, 0, style->window.fixed_background.data.color); + } + + /* set clipping rectangle */ + {struct nk_rect clip; + layout->clip = layout->bounds; + nk_unify(&clip, &win->buffer.clip, layout->clip.x, layout->clip.y, + layout->clip.x + layout->clip.w, layout->clip.y + layout->clip.h); + nk_push_scissor(out, clip); + layout->clip = clip;} + return !(layout->flags & NK_WINDOW_HIDDEN) && !(layout->flags & NK_WINDOW_MINIMIZED); +} +NK_LIB void +nk_panel_end(struct nk_context *ctx) +{ + struct nk_input *in; + struct nk_window *window; + struct nk_panel *layout; + const struct nk_style *style; + struct nk_command_buffer *out; + + struct nk_vec2 scrollbar_size; + struct nk_vec2 panel_padding; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + window = ctx->current; + layout = window->layout; + style = &ctx->style; + out = &window->buffer; + in = (layout->flags & NK_WINDOW_ROM || layout->flags & NK_WINDOW_NO_INPUT) ? 0 :&ctx->input; + if (!nk_panel_is_sub(layout->type)) + nk_push_scissor(out, nk_null_rect); + + /* cache configuration data */ + scrollbar_size = style->window.scrollbar_size; + panel_padding = nk_panel_get_padding(style, layout->type); + + /* update the current cursor Y-position to point over the last added widget */ + layout->at_y += layout->row.height; + + /* dynamic panels */ + if (layout->flags & NK_WINDOW_DYNAMIC && !(layout->flags & NK_WINDOW_MINIMIZED)) + { + /* update panel height to fit dynamic growth */ + struct nk_rect empty_space; + if (layout->at_y < (layout->bounds.y + layout->bounds.h)) + layout->bounds.h = layout->at_y - layout->bounds.y; + + /* fill top empty space */ + empty_space.x = window->bounds.x; + empty_space.y = layout->bounds.y; + empty_space.h = panel_padding.y; + empty_space.w = window->bounds.w; + nk_fill_rect(out, empty_space, 0, style->window.background); + + /* fill left empty space */ + empty_space.x = window->bounds.x; + empty_space.y = layout->bounds.y; + empty_space.w = panel_padding.x + layout->border; + empty_space.h = layout->bounds.h; + nk_fill_rect(out, empty_space, 0, style->window.background); + + /* fill right empty space */ + empty_space.x = layout->bounds.x + layout->bounds.w; + empty_space.y = layout->bounds.y; + empty_space.w = panel_padding.x + layout->border; + empty_space.h = layout->bounds.h; + if (*layout->offset_y == 0 && !(layout->flags & NK_WINDOW_NO_SCROLLBAR)) + empty_space.w += scrollbar_size.x; + nk_fill_rect(out, empty_space, 0, style->window.background); + + /* fill bottom empty space */ + if (layout->footer_height > 0) { + empty_space.x = window->bounds.x; + empty_space.y = layout->bounds.y + layout->bounds.h; + empty_space.w = window->bounds.w; + empty_space.h = layout->footer_height; + nk_fill_rect(out, empty_space, 0, style->window.background); + } + } + + /* scrollbars */ + if (!(layout->flags & NK_WINDOW_NO_SCROLLBAR) && + !(layout->flags & NK_WINDOW_MINIMIZED) && + window->scrollbar_hiding_timer < NK_SCROLLBAR_HIDING_TIMEOUT) + { + struct nk_rect scroll; + int scroll_has_scrolling; + float scroll_target; + float scroll_offset; + float scroll_step; + float scroll_inc; + + /* mouse wheel scrolling */ + if (nk_panel_is_sub(layout->type)) + { + /* sub-window mouse wheel scrolling */ + struct nk_window *root_window = window; + struct nk_panel *root_panel = window->layout; + while (root_panel->parent) + root_panel = root_panel->parent; + while (root_window->parent) + root_window = root_window->parent; + + /* only allow scrolling if parent window is active */ + scroll_has_scrolling = 0; + if ((root_window == ctx->active) && layout->has_scrolling) { + /* and panel is being hovered and inside clip rect*/ + if (nk_input_is_mouse_hovering_rect(in, layout->bounds) && + NK_INTERSECT(layout->bounds.x, layout->bounds.y, layout->bounds.w, layout->bounds.h, + root_panel->clip.x, root_panel->clip.y, root_panel->clip.w, root_panel->clip.h)) + { + /* deactivate all parent scrolling */ + root_panel = window->layout; + while (root_panel->parent) { + root_panel->has_scrolling = nk_false; + root_panel = root_panel->parent; + } + root_panel->has_scrolling = nk_false; + scroll_has_scrolling = nk_true; + } + } + } else if (!nk_panel_is_sub(layout->type)) { + /* window mouse wheel scrolling */ + scroll_has_scrolling = (window == ctx->active) && layout->has_scrolling; + if (in && (in->mouse.scroll_delta.y > 0 || in->mouse.scroll_delta.x > 0) && scroll_has_scrolling) + window->scrolled = nk_true; + else window->scrolled = nk_false; + } else scroll_has_scrolling = nk_false; + + { + /* vertical scrollbar */ + nk_flags state = 0; + scroll.x = layout->bounds.x + layout->bounds.w + panel_padding.x; + scroll.y = layout->bounds.y; + scroll.w = scrollbar_size.x; + scroll.h = layout->bounds.h; + + scroll_offset = (float)*layout->offset_y; + scroll_step = scroll.h * 0.10f; + scroll_inc = scroll.h * 0.01f; + scroll_target = (float)(int)(layout->at_y - scroll.y); + scroll_offset = nk_do_scrollbarv(&state, out, scroll, scroll_has_scrolling, + scroll_offset, scroll_target, scroll_step, scroll_inc, + &ctx->style.scrollv, in, style->font); + *layout->offset_y = (nk_uint)scroll_offset; + if (in && scroll_has_scrolling) + in->mouse.scroll_delta.y = 0; + } + { + /* horizontal scrollbar */ + nk_flags state = 0; + scroll.x = layout->bounds.x; + scroll.y = layout->bounds.y + layout->bounds.h; + scroll.w = layout->bounds.w; + scroll.h = scrollbar_size.y; + + scroll_offset = (float)*layout->offset_x; + scroll_target = (float)(int)(layout->max_x - scroll.x); + scroll_step = layout->max_x * 0.05f; + scroll_inc = layout->max_x * 0.005f; + scroll_offset = nk_do_scrollbarh(&state, out, scroll, scroll_has_scrolling, + scroll_offset, scroll_target, scroll_step, scroll_inc, + &ctx->style.scrollh, in, style->font); + *layout->offset_x = (nk_uint)scroll_offset; + } + } + + /* hide scroll if no user input */ + if (window->flags & NK_WINDOW_SCROLL_AUTO_HIDE) { + int has_input = ctx->input.mouse.delta.x != 0 || ctx->input.mouse.delta.y != 0 || ctx->input.mouse.scroll_delta.y != 0; + int is_window_hovered = nk_window_is_hovered(ctx); + int any_item_active = (ctx->last_widget_state & NK_WIDGET_STATE_MODIFIED); + if ((!has_input && is_window_hovered) || (!is_window_hovered && !any_item_active)) + window->scrollbar_hiding_timer += ctx->delta_time_seconds; + else window->scrollbar_hiding_timer = 0; + } else window->scrollbar_hiding_timer = 0; + + /* window border */ + if (layout->flags & NK_WINDOW_BORDER) + { + struct nk_color border_color = nk_panel_get_border_color(style, layout->type); + const float padding_y = (layout->flags & NK_WINDOW_MINIMIZED) + ? (style->window.border + window->bounds.y + layout->header_height) + : ((layout->flags & NK_WINDOW_DYNAMIC) + ? (layout->bounds.y + layout->bounds.h + layout->footer_height) + : (window->bounds.y + window->bounds.h)); + struct nk_rect b = window->bounds; + b.h = padding_y - window->bounds.y; + nk_stroke_rect(out, b, 0, layout->border, border_color); + } + + /* scaler */ + if ((layout->flags & NK_WINDOW_SCALABLE) && in && !(layout->flags & NK_WINDOW_MINIMIZED)) + { + /* calculate scaler bounds */ + struct nk_rect scaler; + scaler.w = scrollbar_size.x; + scaler.h = scrollbar_size.y; + scaler.y = layout->bounds.y + layout->bounds.h; + if (layout->flags & NK_WINDOW_SCALE_LEFT) + scaler.x = layout->bounds.x - panel_padding.x * 0.5f; + else scaler.x = layout->bounds.x + layout->bounds.w + panel_padding.x; + if (layout->flags & NK_WINDOW_NO_SCROLLBAR) + scaler.x -= scaler.w; + + /* draw scaler */ + {const struct nk_style_item *item = &style->window.scaler; + if (item->type == NK_STYLE_ITEM_IMAGE) + nk_draw_image(out, scaler, &item->data.image, nk_white); + else { + if (layout->flags & NK_WINDOW_SCALE_LEFT) { + nk_fill_triangle(out, scaler.x, scaler.y, scaler.x, + scaler.y + scaler.h, scaler.x + scaler.w, + scaler.y + scaler.h, item->data.color); + } else { + nk_fill_triangle(out, scaler.x + scaler.w, scaler.y, scaler.x + scaler.w, + scaler.y + scaler.h, scaler.x, scaler.y + scaler.h, item->data.color); + } + }} + + /* do window scaling */ + if (!(window->flags & NK_WINDOW_ROM)) { + struct nk_vec2 window_size = style->window.min_size; + int left_mouse_down = in->mouse.buttons[NK_BUTTON_LEFT].down; + int left_mouse_click_in_scaler = nk_input_has_mouse_click_down_in_rect(in, + NK_BUTTON_LEFT, scaler, nk_true); + + if (left_mouse_down && left_mouse_click_in_scaler) { + float delta_x = in->mouse.delta.x; + if (layout->flags & NK_WINDOW_SCALE_LEFT) { + delta_x = -delta_x; + window->bounds.x += in->mouse.delta.x; + } + /* dragging in x-direction */ + if (window->bounds.w + delta_x >= window_size.x) { + if ((delta_x < 0) || (delta_x > 0 && in->mouse.pos.x >= scaler.x)) { + window->bounds.w = window->bounds.w + delta_x; + scaler.x += in->mouse.delta.x; + } + } + /* dragging in y-direction (only possible if static window) */ + if (!(layout->flags & NK_WINDOW_DYNAMIC)) { + if (window_size.y < window->bounds.h + in->mouse.delta.y) { + if ((in->mouse.delta.y < 0) || (in->mouse.delta.y > 0 && in->mouse.pos.y >= scaler.y)) { + window->bounds.h = window->bounds.h + in->mouse.delta.y; + scaler.y += in->mouse.delta.y; + } + } + } + ctx->style.cursor_active = ctx->style.cursors[NK_CURSOR_RESIZE_TOP_RIGHT_DOWN_LEFT]; + in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.x = scaler.x + scaler.w/2.0f; + in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.y = scaler.y + scaler.h/2.0f; + } + } + } + if (!nk_panel_is_sub(layout->type)) { + /* window is hidden so clear command buffer */ + if (layout->flags & NK_WINDOW_HIDDEN) + nk_command_buffer_reset(&window->buffer); + /* window is visible and not tab */ + else nk_finish(ctx, window); + } + + /* NK_WINDOW_REMOVE_ROM flag was set so remove NK_WINDOW_ROM */ + if (layout->flags & NK_WINDOW_REMOVE_ROM) { + layout->flags &= ~(nk_flags)NK_WINDOW_ROM; + layout->flags &= ~(nk_flags)NK_WINDOW_REMOVE_ROM; + } + window->flags = layout->flags; + + /* property garbage collector */ + if (window->property.active && window->property.old != window->property.seq && + window->property.active == window->property.prev) { + nk_zero(&window->property, sizeof(window->property)); + } else { + window->property.old = window->property.seq; + window->property.prev = window->property.active; + window->property.seq = 0; + } + /* edit garbage collector */ + if (window->edit.active && window->edit.old != window->edit.seq && + window->edit.active == window->edit.prev) { + nk_zero(&window->edit, sizeof(window->edit)); + } else { + window->edit.old = window->edit.seq; + window->edit.prev = window->edit.active; + window->edit.seq = 0; + } + /* contextual garbage collector */ + if (window->popup.active_con && window->popup.con_old != window->popup.con_count) { + window->popup.con_count = 0; + window->popup.con_old = 0; + window->popup.active_con = 0; + } else { + window->popup.con_old = window->popup.con_count; + window->popup.con_count = 0; + } + window->popup.combo_count = 0; + /* helper to make sure you have a 'nk_tree_push' for every 'nk_tree_pop' */ + NK_ASSERT(!layout->row.tree_depth); +} + + + + + +/* =============================================================== + * + * WINDOW + * + * ===============================================================*/ +NK_LIB void* +nk_create_window(struct nk_context *ctx) +{ + struct nk_page_element *elem; + elem = nk_create_page_element(ctx); + if (!elem) return 0; + elem->data.win.seq = ctx->seq; + return &elem->data.win; +} +NK_LIB void +nk_free_window(struct nk_context *ctx, struct nk_window *win) +{ + /* unlink windows from list */ + struct nk_table *it = win->tables; + if (win->popup.win) { + nk_free_window(ctx, win->popup.win); + win->popup.win = 0; + } + win->next = 0; + win->prev = 0; + + while (it) { + /*free window state tables */ + struct nk_table *n = it->next; + nk_remove_table(win, it); + nk_free_table(ctx, it); + if (it == win->tables) + win->tables = n; + it = n; + } + + /* link windows into freelist */ + {union nk_page_data *pd = NK_CONTAINER_OF(win, union nk_page_data, win); + struct nk_page_element *pe = NK_CONTAINER_OF(pd, struct nk_page_element, data); + nk_free_page_element(ctx, pe);} +} +NK_LIB struct nk_window* +nk_find_window(struct nk_context *ctx, nk_hash hash, const char *name) +{ + struct nk_window *iter; + iter = ctx->begin; + while (iter) { + NK_ASSERT(iter != iter->next); + if (iter->name == hash) { + int max_len = nk_strlen(iter->name_string); + if (!nk_stricmpn(iter->name_string, name, max_len)) + return iter; + } + iter = iter->next; + } + return 0; +} +NK_LIB void +nk_insert_window(struct nk_context *ctx, struct nk_window *win, + enum nk_window_insert_location loc) +{ + const struct nk_window *iter; + NK_ASSERT(ctx); + NK_ASSERT(win); + if (!win || !ctx) return; + + iter = ctx->begin; + while (iter) { + NK_ASSERT(iter != iter->next); + NK_ASSERT(iter != win); + if (iter == win) return; + iter = iter->next; + } + + if (!ctx->begin) { + win->next = 0; + win->prev = 0; + ctx->begin = win; + ctx->end = win; + ctx->count = 1; + return; + } + if (loc == NK_INSERT_BACK) { + struct nk_window *end; + end = ctx->end; + end->flags |= NK_WINDOW_ROM; + end->next = win; + win->prev = ctx->end; + win->next = 0; + ctx->end = win; + ctx->active = ctx->end; + ctx->end->flags &= ~(nk_flags)NK_WINDOW_ROM; + } else { + /*ctx->end->flags |= NK_WINDOW_ROM;*/ + ctx->begin->prev = win; + win->next = ctx->begin; + win->prev = 0; + ctx->begin = win; + ctx->begin->flags &= ~(nk_flags)NK_WINDOW_ROM; + } + ctx->count++; +} +NK_LIB void +nk_remove_window(struct nk_context *ctx, struct nk_window *win) +{ + if (win == ctx->begin || win == ctx->end) { + if (win == ctx->begin) { + ctx->begin = win->next; + if (win->next) + win->next->prev = 0; + } + if (win == ctx->end) { + ctx->end = win->prev; + if (win->prev) + win->prev->next = 0; + } + } else { + if (win->next) + win->next->prev = win->prev; + if (win->prev) + win->prev->next = win->next; + } + if (win == ctx->active || !ctx->active) { + ctx->active = ctx->end; + if (ctx->end) + ctx->end->flags &= ~(nk_flags)NK_WINDOW_ROM; + } + win->next = 0; + win->prev = 0; + ctx->count--; +} +NK_API int +nk_begin(struct nk_context *ctx, const char *title, + struct nk_rect bounds, nk_flags flags) +{ + return nk_begin_titled(ctx, title, title, bounds, flags); +} +NK_API int +nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, + struct nk_rect bounds, nk_flags flags) +{ + struct nk_window *win; + struct nk_style *style; + nk_hash name_hash; + int name_len; + int ret = 0; + + NK_ASSERT(ctx); + NK_ASSERT(name); + NK_ASSERT(title); + NK_ASSERT(ctx->style.font && ctx->style.font->width && "if this triggers you forgot to add a font"); + NK_ASSERT(!ctx->current && "if this triggers you missed a `nk_end` call"); + if (!ctx || ctx->current || !title || !name) + return 0; + + /* find or create window */ + style = &ctx->style; + name_len = (int)nk_strlen(name); + name_hash = nk_murmur_hash(name, (int)name_len, NK_WINDOW_TITLE); + win = nk_find_window(ctx, name_hash, name); + if (!win) { + /* create new window */ + nk_size name_length = (nk_size)name_len; + win = (struct nk_window*)nk_create_window(ctx); + NK_ASSERT(win); + if (!win) return 0; + + if (flags & NK_WINDOW_BACKGROUND) + nk_insert_window(ctx, win, NK_INSERT_FRONT); + else nk_insert_window(ctx, win, NK_INSERT_BACK); + nk_command_buffer_init(&win->buffer, &ctx->memory, NK_CLIPPING_ON); + + win->flags = flags; + win->bounds = bounds; + win->name = name_hash; + name_length = NK_MIN(name_length, NK_WINDOW_MAX_NAME-1); + NK_MEMCPY(win->name_string, name, name_length); + win->name_string[name_length] = 0; + win->popup.win = 0; + if (!ctx->active) + ctx->active = win; + } else { + /* update window */ + win->flags &= ~(nk_flags)(NK_WINDOW_PRIVATE-1); + win->flags |= flags; + if (!(win->flags & (NK_WINDOW_MOVABLE | NK_WINDOW_SCALABLE))) + win->bounds = bounds; + /* If this assert triggers you either: + * + * I.) Have more than one window with the same name or + * II.) You forgot to actually draw the window. + * More specific you did not call `nk_clear` (nk_clear will be + * automatically called for you if you are using one of the + * provided demo backends). */ + NK_ASSERT(win->seq != ctx->seq); + win->seq = ctx->seq; + if (!ctx->active && !(win->flags & NK_WINDOW_HIDDEN)) { + ctx->active = win; + ctx->end = win; + } + } + if (win->flags & NK_WINDOW_HIDDEN) { + ctx->current = win; + win->layout = 0; + return 0; + } else nk_start(ctx, win); + + /* window overlapping */ + if (!(win->flags & NK_WINDOW_HIDDEN) && !(win->flags & NK_WINDOW_NO_INPUT)) + { + int inpanel, ishovered; + struct nk_window *iter = win; + float h = ctx->style.font->height + 2.0f * style->window.header.padding.y + + (2.0f * style->window.header.label_padding.y); + struct nk_rect win_bounds = (!(win->flags & NK_WINDOW_MINIMIZED))? + win->bounds: nk_rect(win->bounds.x, win->bounds.y, win->bounds.w, h); + + /* activate window if hovered and no other window is overlapping this window */ + inpanel = nk_input_has_mouse_click_down_in_rect(&ctx->input, NK_BUTTON_LEFT, win_bounds, nk_true); + inpanel = inpanel && ctx->input.mouse.buttons[NK_BUTTON_LEFT].clicked; + ishovered = nk_input_is_mouse_hovering_rect(&ctx->input, win_bounds); + if ((win != ctx->active) && ishovered && !ctx->input.mouse.buttons[NK_BUTTON_LEFT].down) { + iter = win->next; + while (iter) { + struct nk_rect iter_bounds = (!(iter->flags & NK_WINDOW_MINIMIZED))? + iter->bounds: nk_rect(iter->bounds.x, iter->bounds.y, iter->bounds.w, h); + if (NK_INTERSECT(win_bounds.x, win_bounds.y, win_bounds.w, win_bounds.h, + iter_bounds.x, iter_bounds.y, iter_bounds.w, iter_bounds.h) && + (!(iter->flags & NK_WINDOW_HIDDEN))) + break; + + if (iter->popup.win && iter->popup.active && !(iter->flags & NK_WINDOW_HIDDEN) && + NK_INTERSECT(win->bounds.x, win_bounds.y, win_bounds.w, win_bounds.h, + iter->popup.win->bounds.x, iter->popup.win->bounds.y, + iter->popup.win->bounds.w, iter->popup.win->bounds.h)) + break; + iter = iter->next; + } + } + + /* activate window if clicked */ + if (iter && inpanel && (win != ctx->end)) { + iter = win->next; + while (iter) { + /* try to find a panel with higher priority in the same position */ + struct nk_rect iter_bounds = (!(iter->flags & NK_WINDOW_MINIMIZED))? + iter->bounds: nk_rect(iter->bounds.x, iter->bounds.y, iter->bounds.w, h); + if (NK_INBOX(ctx->input.mouse.pos.x, ctx->input.mouse.pos.y, + iter_bounds.x, iter_bounds.y, iter_bounds.w, iter_bounds.h) && + !(iter->flags & NK_WINDOW_HIDDEN)) + break; + if (iter->popup.win && iter->popup.active && !(iter->flags & NK_WINDOW_HIDDEN) && + NK_INTERSECT(win_bounds.x, win_bounds.y, win_bounds.w, win_bounds.h, + iter->popup.win->bounds.x, iter->popup.win->bounds.y, + iter->popup.win->bounds.w, iter->popup.win->bounds.h)) + break; + iter = iter->next; + } + } + if (iter && !(win->flags & NK_WINDOW_ROM) && (win->flags & NK_WINDOW_BACKGROUND)) { + win->flags |= (nk_flags)NK_WINDOW_ROM; + iter->flags &= ~(nk_flags)NK_WINDOW_ROM; + ctx->active = iter; + if (!(iter->flags & NK_WINDOW_BACKGROUND)) { + /* current window is active in that position so transfer to top + * at the highest priority in stack */ + nk_remove_window(ctx, iter); + nk_insert_window(ctx, iter, NK_INSERT_BACK); + } + } else { + if (!iter && ctx->end != win) { + if (!(win->flags & NK_WINDOW_BACKGROUND)) { + /* current window is active in that position so transfer to top + * at the highest priority in stack */ + nk_remove_window(ctx, win); + nk_insert_window(ctx, win, NK_INSERT_BACK); + } + win->flags &= ~(nk_flags)NK_WINDOW_ROM; + ctx->active = win; + } + if (ctx->end != win && !(win->flags & NK_WINDOW_BACKGROUND)) + win->flags |= NK_WINDOW_ROM; + } + } + win->layout = (struct nk_panel*)nk_create_panel(ctx); + ctx->current = win; + ret = nk_panel_begin(ctx, title, NK_PANEL_WINDOW); + win->layout->offset_x = &win->scrollbar.x; + win->layout->offset_y = &win->scrollbar.y; + return ret; +} +NK_API void +nk_end(struct nk_context *ctx) +{ + struct nk_panel *layout; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current && "if this triggers you forgot to call `nk_begin`"); + if (!ctx || !ctx->current) + return; + + layout = ctx->current->layout; + if (!layout || (layout->type == NK_PANEL_WINDOW && (ctx->current->flags & NK_WINDOW_HIDDEN))) { + ctx->current = 0; + return; + } + nk_panel_end(ctx); + nk_free_panel(ctx, ctx->current->layout); + ctx->current = 0; +} +NK_API struct nk_rect +nk_window_get_bounds(const struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return nk_rect(0,0,0,0); + return ctx->current->bounds; +} +NK_API struct nk_vec2 +nk_window_get_position(const struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return nk_vec2(0,0); + return nk_vec2(ctx->current->bounds.x, ctx->current->bounds.y); +} +NK_API struct nk_vec2 +nk_window_get_size(const struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return nk_vec2(0,0); + return nk_vec2(ctx->current->bounds.w, ctx->current->bounds.h); +} +NK_API float +nk_window_get_width(const struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return 0; + return ctx->current->bounds.w; +} +NK_API float +nk_window_get_height(const struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return 0; + return ctx->current->bounds.h; +} +NK_API struct nk_rect +nk_window_get_content_region(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return nk_rect(0,0,0,0); + return ctx->current->layout->clip; +} +NK_API struct nk_vec2 +nk_window_get_content_region_min(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current) return nk_vec2(0,0); + return nk_vec2(ctx->current->layout->clip.x, ctx->current->layout->clip.y); +} +NK_API struct nk_vec2 +nk_window_get_content_region_max(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current) return nk_vec2(0,0); + return nk_vec2(ctx->current->layout->clip.x + ctx->current->layout->clip.w, + ctx->current->layout->clip.y + ctx->current->layout->clip.h); +} +NK_API struct nk_vec2 +nk_window_get_content_region_size(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current) return nk_vec2(0,0); + return nk_vec2(ctx->current->layout->clip.w, ctx->current->layout->clip.h); +} +NK_API struct nk_command_buffer* +nk_window_get_canvas(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current) return 0; + return &ctx->current->buffer; +} +NK_API struct nk_panel* +nk_window_get_panel(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return 0; + return ctx->current->layout; +} +NK_API void +nk_window_get_scroll(struct nk_context *ctx, nk_uint *offset_x, nk_uint *offset_y) +{ + struct nk_window *win; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return ; + win = ctx->current; + if (offset_x) + *offset_x = win->scrollbar.x; + if (offset_y) + *offset_y = win->scrollbar.y; +} +NK_API int +nk_window_has_focus(const struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current) return 0; + return ctx->current == ctx->active; +} +NK_API int +nk_window_is_hovered(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return 0; + if(ctx->current->flags & NK_WINDOW_HIDDEN) + return 0; + return nk_input_is_mouse_hovering_rect(&ctx->input, ctx->current->bounds); +} +NK_API int +nk_window_is_any_hovered(struct nk_context *ctx) +{ + struct nk_window *iter; + NK_ASSERT(ctx); + if (!ctx) return 0; + iter = ctx->begin; + while (iter) { + /* check if window is being hovered */ + if(!(iter->flags & NK_WINDOW_HIDDEN)) { + /* check if window popup is being hovered */ + if (iter->popup.active && iter->popup.win && nk_input_is_mouse_hovering_rect(&ctx->input, iter->popup.win->bounds)) + return 1; + + if (iter->flags & NK_WINDOW_MINIMIZED) { + struct nk_rect header = iter->bounds; + header.h = ctx->style.font->height + 2 * ctx->style.window.header.padding.y; + if (nk_input_is_mouse_hovering_rect(&ctx->input, header)) + return 1; + } else if (nk_input_is_mouse_hovering_rect(&ctx->input, iter->bounds)) { + return 1; + } + } + iter = iter->next; + } + return 0; +} +NK_API int +nk_item_is_any_active(struct nk_context *ctx) +{ + int any_hovered = nk_window_is_any_hovered(ctx); + int any_active = (ctx->last_widget_state & NK_WIDGET_STATE_MODIFIED); + return any_hovered || any_active; +} +NK_API int +nk_window_is_collapsed(struct nk_context *ctx, const char *name) +{ + int title_len; + nk_hash title_hash; + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return 0; + + title_len = (int)nk_strlen(name); + title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); + win = nk_find_window(ctx, title_hash, name); + if (!win) return 0; + return win->flags & NK_WINDOW_MINIMIZED; +} +NK_API int +nk_window_is_closed(struct nk_context *ctx, const char *name) +{ + int title_len; + nk_hash title_hash; + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return 1; + + title_len = (int)nk_strlen(name); + title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); + win = nk_find_window(ctx, title_hash, name); + if (!win) return 1; + return (win->flags & NK_WINDOW_CLOSED); +} +NK_API int +nk_window_is_hidden(struct nk_context *ctx, const char *name) +{ + int title_len; + nk_hash title_hash; + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return 1; + + title_len = (int)nk_strlen(name); + title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); + win = nk_find_window(ctx, title_hash, name); + if (!win) return 1; + return (win->flags & NK_WINDOW_HIDDEN); +} +NK_API int +nk_window_is_active(struct nk_context *ctx, const char *name) +{ + int title_len; + nk_hash title_hash; + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return 0; + + title_len = (int)nk_strlen(name); + title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); + win = nk_find_window(ctx, title_hash, name); + if (!win) return 0; + return win == ctx->active; +} +NK_API struct nk_window* +nk_window_find(struct nk_context *ctx, const char *name) +{ + int title_len; + nk_hash title_hash; + title_len = (int)nk_strlen(name); + title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); + return nk_find_window(ctx, title_hash, name); +} +NK_API void +nk_window_close(struct nk_context *ctx, const char *name) +{ + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return; + win = nk_window_find(ctx, name); + if (!win) return; + NK_ASSERT(ctx->current != win && "You cannot close a currently active window"); + if (ctx->current == win) return; + win->flags |= NK_WINDOW_HIDDEN; + win->flags |= NK_WINDOW_CLOSED; +} +NK_API void +nk_window_set_bounds(struct nk_context *ctx, + const char *name, struct nk_rect bounds) +{ + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return; + win = nk_window_find(ctx, name); + if (!win) return; + NK_ASSERT(ctx->current != win && "You cannot update a currently in procecss window"); + win->bounds = bounds; +} +NK_API void +nk_window_set_position(struct nk_context *ctx, + const char *name, struct nk_vec2 pos) +{ + struct nk_window *win = nk_window_find(ctx, name); + if (!win) return; + win->bounds.x = pos.x; + win->bounds.y = pos.y; +} +NK_API void +nk_window_set_size(struct nk_context *ctx, + const char *name, struct nk_vec2 size) +{ + struct nk_window *win = nk_window_find(ctx, name); + if (!win) return; + win->bounds.w = size.x; + win->bounds.h = size.y; +} +NK_API void +nk_window_set_scroll(struct nk_context *ctx, nk_uint offset_x, nk_uint offset_y) +{ + struct nk_window *win; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return; + win = ctx->current; + win->scrollbar.x = offset_x; + win->scrollbar.y = offset_y; +} +NK_API void +nk_window_collapse(struct nk_context *ctx, const char *name, + enum nk_collapse_states c) +{ + int title_len; + nk_hash title_hash; + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return; + + title_len = (int)nk_strlen(name); + title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); + win = nk_find_window(ctx, title_hash, name); + if (!win) return; + if (c == NK_MINIMIZED) + win->flags |= NK_WINDOW_MINIMIZED; + else win->flags &= ~(nk_flags)NK_WINDOW_MINIMIZED; +} +NK_API void +nk_window_collapse_if(struct nk_context *ctx, const char *name, + enum nk_collapse_states c, int cond) +{ + NK_ASSERT(ctx); + if (!ctx || !cond) return; + nk_window_collapse(ctx, name, c); +} +NK_API void +nk_window_show(struct nk_context *ctx, const char *name, enum nk_show_states s) +{ + int title_len; + nk_hash title_hash; + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return; + + title_len = (int)nk_strlen(name); + title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); + win = nk_find_window(ctx, title_hash, name); + if (!win) return; + if (s == NK_HIDDEN) { + win->flags |= NK_WINDOW_HIDDEN; + } else win->flags &= ~(nk_flags)NK_WINDOW_HIDDEN; +} +NK_API void +nk_window_show_if(struct nk_context *ctx, const char *name, + enum nk_show_states s, int cond) +{ + NK_ASSERT(ctx); + if (!ctx || !cond) return; + nk_window_show(ctx, name, s); +} + +NK_API void +nk_window_set_focus(struct nk_context *ctx, const char *name) +{ + int title_len; + nk_hash title_hash; + struct nk_window *win; + NK_ASSERT(ctx); + if (!ctx) return; + + title_len = (int)nk_strlen(name); + title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); + win = nk_find_window(ctx, title_hash, name); + if (win && ctx->end != win) { + nk_remove_window(ctx, win); + nk_insert_window(ctx, win, NK_INSERT_BACK); + } + ctx->active = win; +} + + + + +/* =============================================================== + * + * POPUP + * + * ===============================================================*/ +NK_API int +nk_popup_begin(struct nk_context *ctx, enum nk_popup_type type, + const char *title, nk_flags flags, struct nk_rect rect) +{ + struct nk_window *popup; + struct nk_window *win; + struct nk_panel *panel; + + int title_len; + nk_hash title_hash; + nk_size allocated; + + NK_ASSERT(ctx); + NK_ASSERT(title); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + panel = win->layout; + NK_ASSERT(!(panel->type & NK_PANEL_SET_POPUP) && "popups are not allowed to have popups"); + (void)panel; + title_len = (int)nk_strlen(title); + title_hash = nk_murmur_hash(title, (int)title_len, NK_PANEL_POPUP); + + popup = win->popup.win; + if (!popup) { + popup = (struct nk_window*)nk_create_window(ctx); + popup->parent = win; + win->popup.win = popup; + win->popup.active = 0; + win->popup.type = NK_PANEL_POPUP; + } + + /* make sure we have correct popup */ + if (win->popup.name != title_hash) { + if (!win->popup.active) { + nk_zero(popup, sizeof(*popup)); + win->popup.name = title_hash; + win->popup.active = 1; + win->popup.type = NK_PANEL_POPUP; + } else return 0; + } + + /* popup position is local to window */ + ctx->current = popup; + rect.x += win->layout->clip.x; + rect.y += win->layout->clip.y; + + /* setup popup data */ + popup->parent = win; + popup->bounds = rect; + popup->seq = ctx->seq; + popup->layout = (struct nk_panel*)nk_create_panel(ctx); + popup->flags = flags; + popup->flags |= NK_WINDOW_BORDER; + if (type == NK_POPUP_DYNAMIC) + popup->flags |= NK_WINDOW_DYNAMIC; + + popup->buffer = win->buffer; + nk_start_popup(ctx, win); + allocated = ctx->memory.allocated; + nk_push_scissor(&popup->buffer, nk_null_rect); + + if (nk_panel_begin(ctx, title, NK_PANEL_POPUP)) { + /* popup is running therefore invalidate parent panels */ + struct nk_panel *root; + root = win->layout; + while (root) { + root->flags |= NK_WINDOW_ROM; + root->flags &= ~(nk_flags)NK_WINDOW_REMOVE_ROM; + root = root->parent; + } + win->popup.active = 1; + popup->layout->offset_x = &popup->scrollbar.x; + popup->layout->offset_y = &popup->scrollbar.y; + popup->layout->parent = win->layout; + return 1; + } else { + /* popup was closed/is invalid so cleanup */ + struct nk_panel *root; + root = win->layout; + while (root) { + root->flags |= NK_WINDOW_REMOVE_ROM; + root = root->parent; + } + win->popup.buf.active = 0; + win->popup.active = 0; + ctx->memory.allocated = allocated; + ctx->current = win; + nk_free_panel(ctx, popup->layout); + popup->layout = 0; + return 0; + } +} +NK_LIB int +nk_nonblock_begin(struct nk_context *ctx, + nk_flags flags, struct nk_rect body, struct nk_rect header, + enum nk_panel_type panel_type) +{ + struct nk_window *popup; + struct nk_window *win; + struct nk_panel *panel; + int is_active = nk_true; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + /* popups cannot have popups */ + win = ctx->current; + panel = win->layout; + NK_ASSERT(!(panel->type & NK_PANEL_SET_POPUP)); + (void)panel; + popup = win->popup.win; + if (!popup) { + /* create window for nonblocking popup */ + popup = (struct nk_window*)nk_create_window(ctx); + popup->parent = win; + win->popup.win = popup; + win->popup.type = panel_type; + nk_command_buffer_init(&popup->buffer, &ctx->memory, NK_CLIPPING_ON); + } else { + /* close the popup if user pressed outside or in the header */ + int pressed, in_body, in_header; +#ifdef NK_BUTTON_TRIGGER_ON_RELEASE + pressed = nk_input_is_mouse_released(&ctx->input, NK_BUTTON_LEFT); +#else + pressed = nk_input_is_mouse_pressed(&ctx->input, NK_BUTTON_LEFT); +#endif + in_body = nk_input_is_mouse_hovering_rect(&ctx->input, body); + in_header = nk_input_is_mouse_hovering_rect(&ctx->input, header); + if (pressed && (!in_body || in_header)) + is_active = nk_false; + } + win->popup.header = header; + + if (!is_active) { + /* remove read only mode from all parent panels */ + struct nk_panel *root = win->layout; + while (root) { + root->flags |= NK_WINDOW_REMOVE_ROM; + root = root->parent; + } + return is_active; + } + popup->bounds = body; + popup->parent = win; + popup->layout = (struct nk_panel*)nk_create_panel(ctx); + popup->flags = flags; + popup->flags |= NK_WINDOW_BORDER; + popup->flags |= NK_WINDOW_DYNAMIC; + popup->seq = ctx->seq; + win->popup.active = 1; + NK_ASSERT(popup->layout); + + nk_start_popup(ctx, win); + popup->buffer = win->buffer; + nk_push_scissor(&popup->buffer, nk_null_rect); + ctx->current = popup; + + nk_panel_begin(ctx, 0, panel_type); + win->buffer = popup->buffer; + popup->layout->parent = win->layout; + popup->layout->offset_x = &popup->scrollbar.x; + popup->layout->offset_y = &popup->scrollbar.y; + + /* set read only mode to all parent panels */ + {struct nk_panel *root; + root = win->layout; + while (root) { + root->flags |= NK_WINDOW_ROM; + root = root->parent; + }} + return is_active; +} +NK_API void +nk_popup_close(struct nk_context *ctx) +{ + struct nk_window *popup; + NK_ASSERT(ctx); + if (!ctx || !ctx->current) return; + + popup = ctx->current; + NK_ASSERT(popup->parent); + NK_ASSERT(popup->layout->type & NK_PANEL_SET_POPUP); + popup->flags |= NK_WINDOW_HIDDEN; +} +NK_API void +nk_popup_end(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_window *popup; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + popup = ctx->current; + if (!popup->parent) return; + win = popup->parent; + if (popup->flags & NK_WINDOW_HIDDEN) { + struct nk_panel *root; + root = win->layout; + while (root) { + root->flags |= NK_WINDOW_REMOVE_ROM; + root = root->parent; + } + win->popup.active = 0; + } + nk_push_scissor(&popup->buffer, nk_null_rect); + nk_end(ctx); + + win->buffer = popup->buffer; + nk_finish_popup(ctx, win); + ctx->current = win; + nk_push_scissor(&win->buffer, win->layout->clip); +} +NK_API void +nk_popup_get_scroll(struct nk_context *ctx, nk_uint *offset_x, nk_uint *offset_y) +{ + struct nk_window *popup; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + popup = ctx->current; + if (offset_x) + *offset_x = popup->scrollbar.x; + if (offset_y) + *offset_y = popup->scrollbar.y; +} +NK_API void +nk_popup_set_scroll(struct nk_context *ctx, nk_uint offset_x, nk_uint offset_y) +{ + struct nk_window *popup; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + popup = ctx->current; + popup->scrollbar.x = offset_x; + popup->scrollbar.y = offset_y; +} + + + + +/* ============================================================== + * + * CONTEXTUAL + * + * ===============================================================*/ +NK_API int +nk_contextual_begin(struct nk_context *ctx, nk_flags flags, struct nk_vec2 size, + struct nk_rect trigger_bounds) +{ + struct nk_window *win; + struct nk_window *popup; + struct nk_rect body; + + NK_STORAGE const struct nk_rect null_rect = {-1,-1,0,0}; + int is_clicked = 0; + int is_open = 0; + int ret = 0; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + ++win->popup.con_count; + if (ctx->current != ctx->active) + return 0; + + /* check if currently active contextual is active */ + popup = win->popup.win; + is_open = (popup && win->popup.type == NK_PANEL_CONTEXTUAL); + is_clicked = nk_input_mouse_clicked(&ctx->input, NK_BUTTON_RIGHT, trigger_bounds); + if (win->popup.active_con && win->popup.con_count != win->popup.active_con) + return 0; + if (!is_open && win->popup.active_con) + win->popup.active_con = 0; + if ((!is_open && !is_clicked)) + return 0; + + /* calculate contextual position on click */ + win->popup.active_con = win->popup.con_count; + if (is_clicked) { + body.x = ctx->input.mouse.pos.x; + body.y = ctx->input.mouse.pos.y; + } else { + body.x = popup->bounds.x; + body.y = popup->bounds.y; + } + body.w = size.x; + body.h = size.y; + + /* start nonblocking contextual popup */ + ret = nk_nonblock_begin(ctx, flags|NK_WINDOW_NO_SCROLLBAR, body, + null_rect, NK_PANEL_CONTEXTUAL); + if (ret) win->popup.type = NK_PANEL_CONTEXTUAL; + else { + win->popup.active_con = 0; + win->popup.type = NK_PANEL_NONE; + if (win->popup.win) + win->popup.win->flags = 0; + } + return ret; +} +NK_API int +nk_contextual_item_text(struct nk_context *ctx, const char *text, int len, + nk_flags alignment) +{ + struct nk_window *win; + const struct nk_input *in; + const struct nk_style *style; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + state = nk_widget_fitting(&bounds, ctx, style->contextual_button.padding); + if (!state) return nk_false; + + in = (state == NK_WIDGET_ROM || win->layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + if (nk_do_button_text(&ctx->last_widget_state, &win->buffer, bounds, + text, len, alignment, NK_BUTTON_DEFAULT, &style->contextual_button, in, style->font)) { + nk_contextual_close(ctx); + return nk_true; + } + return nk_false; +} +NK_API int +nk_contextual_item_label(struct nk_context *ctx, const char *label, nk_flags align) +{ + return nk_contextual_item_text(ctx, label, nk_strlen(label), align); +} +NK_API int +nk_contextual_item_image_text(struct nk_context *ctx, struct nk_image img, + const char *text, int len, nk_flags align) +{ + struct nk_window *win; + const struct nk_input *in; + const struct nk_style *style; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + state = nk_widget_fitting(&bounds, ctx, style->contextual_button.padding); + if (!state) return nk_false; + + in = (state == NK_WIDGET_ROM || win->layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + if (nk_do_button_text_image(&ctx->last_widget_state, &win->buffer, bounds, + img, text, len, align, NK_BUTTON_DEFAULT, &style->contextual_button, style->font, in)){ + nk_contextual_close(ctx); + return nk_true; + } + return nk_false; +} +NK_API int +nk_contextual_item_image_label(struct nk_context *ctx, struct nk_image img, + const char *label, nk_flags align) +{ + return nk_contextual_item_image_text(ctx, img, label, nk_strlen(label), align); +} +NK_API int +nk_contextual_item_symbol_text(struct nk_context *ctx, enum nk_symbol_type symbol, + const char *text, int len, nk_flags align) +{ + struct nk_window *win; + const struct nk_input *in; + const struct nk_style *style; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + state = nk_widget_fitting(&bounds, ctx, style->contextual_button.padding); + if (!state) return nk_false; + + in = (state == NK_WIDGET_ROM || win->layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + if (nk_do_button_text_symbol(&ctx->last_widget_state, &win->buffer, bounds, + symbol, text, len, align, NK_BUTTON_DEFAULT, &style->contextual_button, style->font, in)) { + nk_contextual_close(ctx); + return nk_true; + } + return nk_false; +} +NK_API int +nk_contextual_item_symbol_label(struct nk_context *ctx, enum nk_symbol_type symbol, + const char *text, nk_flags align) +{ + return nk_contextual_item_symbol_text(ctx, symbol, text, nk_strlen(text), align); +} +NK_API void +nk_contextual_close(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) return; + nk_popup_close(ctx); +} +NK_API void +nk_contextual_end(struct nk_context *ctx) +{ + struct nk_window *popup; + struct nk_panel *panel; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return; + + popup = ctx->current; + panel = popup->layout; + NK_ASSERT(popup->parent); + NK_ASSERT(panel->type & NK_PANEL_SET_POPUP); + if (panel->flags & NK_WINDOW_DYNAMIC) { + /* Close behavior + This is a bit of a hack solution since we do not know before we end our popup + how big it will be. We therefore do not directly know when a + click outside the non-blocking popup must close it at that direct frame. + Instead it will be closed in the next frame.*/ + struct nk_rect body = {0,0,0,0}; + if (panel->at_y < (panel->bounds.y + panel->bounds.h)) { + struct nk_vec2 padding = nk_panel_get_padding(&ctx->style, panel->type); + body = panel->bounds; + body.y = (panel->at_y + panel->footer_height + panel->border + padding.y + panel->row.height); + body.h = (panel->bounds.y + panel->bounds.h) - body.y; + } + {int pressed = nk_input_is_mouse_pressed(&ctx->input, NK_BUTTON_LEFT); + int in_body = nk_input_is_mouse_hovering_rect(&ctx->input, body); + if (pressed && in_body) + popup->flags |= NK_WINDOW_HIDDEN; + } + } + if (popup->flags & NK_WINDOW_HIDDEN) + popup->seq = 0; + nk_popup_end(ctx); + return; +} + + + + + +/* =============================================================== + * + * MENU + * + * ===============================================================*/ +NK_API void +nk_menubar_begin(struct nk_context *ctx) +{ + struct nk_panel *layout; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + layout = ctx->current->layout; + NK_ASSERT(layout->at_y == layout->bounds.y); + /* if this assert triggers you allocated space between nk_begin and nk_menubar_begin. + If you want a menubar the first nuklear function after `nk_begin` has to be a + `nk_menubar_begin` call. Inside the menubar you then have to allocate space for + widgets (also supports multiple rows). + Example: + if (nk_begin(...)) { + nk_menubar_begin(...); + nk_layout_xxxx(...); + nk_button(...); + nk_layout_xxxx(...); + nk_button(...); + nk_menubar_end(...); + } + nk_end(...); + */ + if (layout->flags & NK_WINDOW_HIDDEN || layout->flags & NK_WINDOW_MINIMIZED) + return; + + layout->menu.x = layout->at_x; + layout->menu.y = layout->at_y + layout->row.height; + layout->menu.w = layout->bounds.w; + layout->menu.offset.x = *layout->offset_x; + layout->menu.offset.y = *layout->offset_y; + *layout->offset_y = 0; +} +NK_API void +nk_menubar_end(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_panel *layout; + struct nk_command_buffer *out; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + out = &win->buffer; + layout = win->layout; + if (layout->flags & NK_WINDOW_HIDDEN || layout->flags & NK_WINDOW_MINIMIZED) + return; + + layout->menu.h = layout->at_y - layout->menu.y; + layout->bounds.y += layout->menu.h + ctx->style.window.spacing.y + layout->row.height; + layout->bounds.h -= layout->menu.h + ctx->style.window.spacing.y + layout->row.height; + + *layout->offset_x = layout->menu.offset.x; + *layout->offset_y = layout->menu.offset.y; + layout->at_y = layout->bounds.y - layout->row.height; + + layout->clip.y = layout->bounds.y; + layout->clip.h = layout->bounds.h; + nk_push_scissor(out, layout->clip); +} +NK_INTERN int +nk_menu_begin(struct nk_context *ctx, struct nk_window *win, + const char *id, int is_clicked, struct nk_rect header, struct nk_vec2 size) +{ + int is_open = 0; + int is_active = 0; + struct nk_rect body; + struct nk_window *popup; + nk_hash hash = nk_murmur_hash(id, (int)nk_strlen(id), NK_PANEL_MENU); + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + body.x = header.x; + body.w = size.x; + body.y = header.y + header.h; + body.h = size.y; + + popup = win->popup.win; + is_open = popup ? nk_true : nk_false; + is_active = (popup && (win->popup.name == hash) && win->popup.type == NK_PANEL_MENU); + if ((is_clicked && is_open && !is_active) || (is_open && !is_active) || + (!is_open && !is_active && !is_clicked)) return 0; + if (!nk_nonblock_begin(ctx, NK_WINDOW_NO_SCROLLBAR, body, header, NK_PANEL_MENU)) + return 0; + + win->popup.type = NK_PANEL_MENU; + win->popup.name = hash; + return 1; +} +NK_API int +nk_menu_begin_text(struct nk_context *ctx, const char *title, int len, + nk_flags align, struct nk_vec2 size) +{ + struct nk_window *win; + const struct nk_input *in; + struct nk_rect header; + int is_clicked = nk_false; + nk_flags state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + state = nk_widget(&header, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || win->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + if (nk_do_button_text(&ctx->last_widget_state, &win->buffer, header, + title, len, align, NK_BUTTON_DEFAULT, &ctx->style.menu_button, in, ctx->style.font)) + is_clicked = nk_true; + return nk_menu_begin(ctx, win, title, is_clicked, header, size); +} +NK_API int nk_menu_begin_label(struct nk_context *ctx, + const char *text, nk_flags align, struct nk_vec2 size) +{ + return nk_menu_begin_text(ctx, text, nk_strlen(text), align, size); +} +NK_API int +nk_menu_begin_image(struct nk_context *ctx, const char *id, struct nk_image img, + struct nk_vec2 size) +{ + struct nk_window *win; + struct nk_rect header; + const struct nk_input *in; + int is_clicked = nk_false; + nk_flags state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + state = nk_widget(&header, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || win->layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + if (nk_do_button_image(&ctx->last_widget_state, &win->buffer, header, + img, NK_BUTTON_DEFAULT, &ctx->style.menu_button, in)) + is_clicked = nk_true; + return nk_menu_begin(ctx, win, id, is_clicked, header, size); +} +NK_API int +nk_menu_begin_symbol(struct nk_context *ctx, const char *id, + enum nk_symbol_type sym, struct nk_vec2 size) +{ + struct nk_window *win; + const struct nk_input *in; + struct nk_rect header; + int is_clicked = nk_false; + nk_flags state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + state = nk_widget(&header, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || win->layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + if (nk_do_button_symbol(&ctx->last_widget_state, &win->buffer, header, + sym, NK_BUTTON_DEFAULT, &ctx->style.menu_button, in, ctx->style.font)) + is_clicked = nk_true; + return nk_menu_begin(ctx, win, id, is_clicked, header, size); +} +NK_API int +nk_menu_begin_image_text(struct nk_context *ctx, const char *title, int len, + nk_flags align, struct nk_image img, struct nk_vec2 size) +{ + struct nk_window *win; + struct nk_rect header; + const struct nk_input *in; + int is_clicked = nk_false; + nk_flags state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + state = nk_widget(&header, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || win->layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + if (nk_do_button_text_image(&ctx->last_widget_state, &win->buffer, + header, img, title, len, align, NK_BUTTON_DEFAULT, &ctx->style.menu_button, + ctx->style.font, in)) + is_clicked = nk_true; + return nk_menu_begin(ctx, win, title, is_clicked, header, size); +} +NK_API int +nk_menu_begin_image_label(struct nk_context *ctx, + const char *title, nk_flags align, struct nk_image img, struct nk_vec2 size) +{ + return nk_menu_begin_image_text(ctx, title, nk_strlen(title), align, img, size); +} +NK_API int +nk_menu_begin_symbol_text(struct nk_context *ctx, const char *title, int len, + nk_flags align, enum nk_symbol_type sym, struct nk_vec2 size) +{ + struct nk_window *win; + struct nk_rect header; + const struct nk_input *in; + int is_clicked = nk_false; + nk_flags state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + state = nk_widget(&header, ctx); + if (!state) return 0; + + in = (state == NK_WIDGET_ROM || win->layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + if (nk_do_button_text_symbol(&ctx->last_widget_state, &win->buffer, + header, sym, title, len, align, NK_BUTTON_DEFAULT, &ctx->style.menu_button, + ctx->style.font, in)) is_clicked = nk_true; + return nk_menu_begin(ctx, win, title, is_clicked, header, size); +} +NK_API int +nk_menu_begin_symbol_label(struct nk_context *ctx, + const char *title, nk_flags align, enum nk_symbol_type sym, struct nk_vec2 size ) +{ + return nk_menu_begin_symbol_text(ctx, title, nk_strlen(title), align,sym,size); +} +NK_API int +nk_menu_item_text(struct nk_context *ctx, const char *title, int len, nk_flags align) +{ + return nk_contextual_item_text(ctx, title, len, align); +} +NK_API int +nk_menu_item_label(struct nk_context *ctx, const char *label, nk_flags align) +{ + return nk_contextual_item_label(ctx, label, align); +} +NK_API int +nk_menu_item_image_label(struct nk_context *ctx, struct nk_image img, + const char *label, nk_flags align) +{ + return nk_contextual_item_image_label(ctx, img, label, align); +} +NK_API int +nk_menu_item_image_text(struct nk_context *ctx, struct nk_image img, + const char *text, int len, nk_flags align) +{ + return nk_contextual_item_image_text(ctx, img, text, len, align); +} +NK_API int nk_menu_item_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, + const char *text, int len, nk_flags align) +{ + return nk_contextual_item_symbol_text(ctx, sym, text, len, align); +} +NK_API int nk_menu_item_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, + const char *label, nk_flags align) +{ + return nk_contextual_item_symbol_label(ctx, sym, label, align); +} +NK_API void nk_menu_close(struct nk_context *ctx) +{ + nk_contextual_close(ctx); +} +NK_API void +nk_menu_end(struct nk_context *ctx) +{ + nk_contextual_end(ctx); +} + + + + + +/* =============================================================== + * + * LAYOUT + * + * ===============================================================*/ +NK_API void +nk_layout_set_min_row_height(struct nk_context *ctx, float height) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + layout->row.min_height = height; +} +NK_API void +nk_layout_reset_min_row_height(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + layout->row.min_height = ctx->style.font->height; + layout->row.min_height += ctx->style.text.padding.y*2; + layout->row.min_height += ctx->style.window.min_row_height_padding*2; +} +NK_LIB float +nk_layout_row_calculate_usable_space(const struct nk_style *style, enum nk_panel_type type, + float total_space, int columns) +{ + float panel_padding; + float panel_spacing; + float panel_space; + + struct nk_vec2 spacing; + struct nk_vec2 padding; + + spacing = style->window.spacing; + padding = nk_panel_get_padding(style, type); + + /* calculate the usable panel space */ + panel_padding = 2 * padding.x; + panel_spacing = (float)NK_MAX(columns - 1, 0) * spacing.x; + panel_space = total_space - panel_padding - panel_spacing; + return panel_space; +} +NK_LIB void +nk_panel_layout(const struct nk_context *ctx, struct nk_window *win, + float height, int cols) +{ + struct nk_panel *layout; + const struct nk_style *style; + struct nk_command_buffer *out; + + struct nk_vec2 item_spacing; + struct nk_color color; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + /* prefetch some configuration data */ + layout = win->layout; + style = &ctx->style; + out = &win->buffer; + color = style->window.background; + item_spacing = style->window.spacing; + + /* if one of these triggers you forgot to add an `if` condition around either + a window, group, popup, combobox or contextual menu `begin` and `end` block. + Example: + if (nk_begin(...) {...} nk_end(...); or + if (nk_group_begin(...) { nk_group_end(...);} */ + NK_ASSERT(!(layout->flags & NK_WINDOW_MINIMIZED)); + NK_ASSERT(!(layout->flags & NK_WINDOW_HIDDEN)); + NK_ASSERT(!(layout->flags & NK_WINDOW_CLOSED)); + + /* update the current row and set the current row layout */ + layout->row.index = 0; + layout->at_y += layout->row.height; + layout->row.columns = cols; + if (height == 0.0f) + layout->row.height = NK_MAX(height, layout->row.min_height) + item_spacing.y; + else layout->row.height = height + item_spacing.y; + + layout->row.item_offset = 0; + if (layout->flags & NK_WINDOW_DYNAMIC) { + /* draw background for dynamic panels */ + struct nk_rect background; + background.x = win->bounds.x; + background.w = win->bounds.w; + background.y = layout->at_y - 1.0f; + background.h = layout->row.height + 1.0f; + nk_fill_rect(out, background, 0, color); + } +} +NK_LIB void +nk_row_layout(struct nk_context *ctx, enum nk_layout_format fmt, + float height, int cols, int width) +{ + /* update the current row and set the current row layout */ + struct nk_window *win; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + nk_panel_layout(ctx, win, height, cols); + if (fmt == NK_DYNAMIC) + win->layout->row.type = NK_LAYOUT_DYNAMIC_FIXED; + else win->layout->row.type = NK_LAYOUT_STATIC_FIXED; + + win->layout->row.ratio = 0; + win->layout->row.filled = 0; + win->layout->row.item_offset = 0; + win->layout->row.item_width = (float)width; +} +NK_API float +nk_layout_ratio_from_pixel(struct nk_context *ctx, float pixel_width) +{ + struct nk_window *win; + NK_ASSERT(ctx); + NK_ASSERT(pixel_width); + if (!ctx || !ctx->current || !ctx->current->layout) return 0; + win = ctx->current; + return NK_CLAMP(0.0f, pixel_width/win->bounds.x, 1.0f); +} +NK_API void +nk_layout_row_dynamic(struct nk_context *ctx, float height, int cols) +{ + nk_row_layout(ctx, NK_DYNAMIC, height, cols, 0); +} +NK_API void +nk_layout_row_static(struct nk_context *ctx, float height, int item_width, int cols) +{ + nk_row_layout(ctx, NK_STATIC, height, cols, item_width); +} +NK_API void +nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, + float row_height, int cols) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + nk_panel_layout(ctx, win, row_height, cols); + if (fmt == NK_DYNAMIC) + layout->row.type = NK_LAYOUT_DYNAMIC_ROW; + else layout->row.type = NK_LAYOUT_STATIC_ROW; + + layout->row.ratio = 0; + layout->row.filled = 0; + layout->row.item_width = 0; + layout->row.item_offset = 0; + layout->row.columns = cols; +} +NK_API void +nk_layout_row_push(struct nk_context *ctx, float ratio_or_width) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + NK_ASSERT(layout->row.type == NK_LAYOUT_STATIC_ROW || layout->row.type == NK_LAYOUT_DYNAMIC_ROW); + if (layout->row.type != NK_LAYOUT_STATIC_ROW && layout->row.type != NK_LAYOUT_DYNAMIC_ROW) + return; + + if (layout->row.type == NK_LAYOUT_DYNAMIC_ROW) { + float ratio = ratio_or_width; + if ((ratio + layout->row.filled) > 1.0f) return; + if (ratio > 0.0f) + layout->row.item_width = NK_SATURATE(ratio); + else layout->row.item_width = 1.0f - layout->row.filled; + } else layout->row.item_width = ratio_or_width; +} +NK_API void +nk_layout_row_end(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + NK_ASSERT(layout->row.type == NK_LAYOUT_STATIC_ROW || layout->row.type == NK_LAYOUT_DYNAMIC_ROW); + if (layout->row.type != NK_LAYOUT_STATIC_ROW && layout->row.type != NK_LAYOUT_DYNAMIC_ROW) + return; + layout->row.item_width = 0; + layout->row.item_offset = 0; +} +NK_API void +nk_layout_row(struct nk_context *ctx, enum nk_layout_format fmt, + float height, int cols, const float *ratio) +{ + int i; + int n_undef = 0; + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + nk_panel_layout(ctx, win, height, cols); + if (fmt == NK_DYNAMIC) { + /* calculate width of undefined widget ratios */ + float r = 0; + layout->row.ratio = ratio; + for (i = 0; i < cols; ++i) { + if (ratio[i] < 0.0f) + n_undef++; + else r += ratio[i]; + } + r = NK_SATURATE(1.0f - r); + layout->row.type = NK_LAYOUT_DYNAMIC; + layout->row.item_width = (r > 0 && n_undef > 0) ? (r / (float)n_undef):0; + } else { + layout->row.ratio = ratio; + layout->row.type = NK_LAYOUT_STATIC; + layout->row.item_width = 0; + layout->row.item_offset = 0; + } + layout->row.item_offset = 0; + layout->row.filled = 0; +} +NK_API void +nk_layout_row_template_begin(struct nk_context *ctx, float height) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + nk_panel_layout(ctx, win, height, 1); + layout->row.type = NK_LAYOUT_TEMPLATE; + layout->row.columns = 0; + layout->row.ratio = 0; + layout->row.item_width = 0; + layout->row.item_height = 0; + layout->row.item_offset = 0; + layout->row.filled = 0; + layout->row.item.x = 0; + layout->row.item.y = 0; + layout->row.item.w = 0; + layout->row.item.h = 0; +} +NK_API void +nk_layout_row_template_push_dynamic(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); + NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); + if (layout->row.type != NK_LAYOUT_TEMPLATE) return; + if (layout->row.columns >= NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS) return; + layout->row.templates[layout->row.columns++] = -1.0f; +} +NK_API void +nk_layout_row_template_push_variable(struct nk_context *ctx, float min_width) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); + NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); + if (layout->row.type != NK_LAYOUT_TEMPLATE) return; + if (layout->row.columns >= NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS) return; + layout->row.templates[layout->row.columns++] = -min_width; +} +NK_API void +nk_layout_row_template_push_static(struct nk_context *ctx, float width) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); + NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); + if (layout->row.type != NK_LAYOUT_TEMPLATE) return; + if (layout->row.columns >= NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS) return; + layout->row.templates[layout->row.columns++] = width; +} +NK_API void +nk_layout_row_template_end(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_panel *layout; + + int i = 0; + int variable_count = 0; + int min_variable_count = 0; + float min_fixed_width = 0.0f; + float total_fixed_width = 0.0f; + float max_variable_width = 0.0f; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); + if (layout->row.type != NK_LAYOUT_TEMPLATE) return; + for (i = 0; i < layout->row.columns; ++i) { + float width = layout->row.templates[i]; + if (width >= 0.0f) { + total_fixed_width += width; + min_fixed_width += width; + } else if (width < -1.0f) { + width = -width; + total_fixed_width += width; + max_variable_width = NK_MAX(max_variable_width, width); + variable_count++; + } else { + min_variable_count++; + variable_count++; + } + } + if (variable_count) { + float space = nk_layout_row_calculate_usable_space(&ctx->style, layout->type, + layout->bounds.w, layout->row.columns); + float var_width = (NK_MAX(space-min_fixed_width,0.0f)) / (float)variable_count; + int enough_space = var_width >= max_variable_width; + if (!enough_space) + var_width = (NK_MAX(space-total_fixed_width,0)) / (float)min_variable_count; + for (i = 0; i < layout->row.columns; ++i) { + float *width = &layout->row.templates[i]; + *width = (*width >= 0.0f)? *width: (*width < -1.0f && !enough_space)? -(*width): var_width; + } + } +} +NK_API void +nk_layout_space_begin(struct nk_context *ctx, enum nk_layout_format fmt, + float height, int widget_count) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + nk_panel_layout(ctx, win, height, widget_count); + if (fmt == NK_STATIC) + layout->row.type = NK_LAYOUT_STATIC_FREE; + else layout->row.type = NK_LAYOUT_DYNAMIC_FREE; + + layout->row.ratio = 0; + layout->row.filled = 0; + layout->row.item_width = 0; + layout->row.item_offset = 0; +} +NK_API void +nk_layout_space_end(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + layout->row.item_width = 0; + layout->row.item_height = 0; + layout->row.item_offset = 0; + nk_zero(&layout->row.item, sizeof(layout->row.item)); +} +NK_API void +nk_layout_space_push(struct nk_context *ctx, struct nk_rect rect) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + layout->row.item = rect; +} +NK_API struct nk_rect +nk_layout_space_bounds(struct nk_context *ctx) +{ + struct nk_rect ret; + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + win = ctx->current; + layout = win->layout; + + ret.x = layout->clip.x; + ret.y = layout->clip.y; + ret.w = layout->clip.w; + ret.h = layout->row.height; + return ret; +} +NK_API struct nk_rect +nk_layout_widget_bounds(struct nk_context *ctx) +{ + struct nk_rect ret; + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + win = ctx->current; + layout = win->layout; + + ret.x = layout->at_x; + ret.y = layout->at_y; + ret.w = layout->bounds.w - NK_MAX(layout->at_x - layout->bounds.x,0); + ret.h = layout->row.height; + return ret; +} +NK_API struct nk_vec2 +nk_layout_space_to_screen(struct nk_context *ctx, struct nk_vec2 ret) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + win = ctx->current; + layout = win->layout; + + ret.x += layout->at_x - (float)*layout->offset_x; + ret.y += layout->at_y - (float)*layout->offset_y; + return ret; +} +NK_API struct nk_vec2 +nk_layout_space_to_local(struct nk_context *ctx, struct nk_vec2 ret) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + win = ctx->current; + layout = win->layout; + + ret.x += -layout->at_x + (float)*layout->offset_x; + ret.y += -layout->at_y + (float)*layout->offset_y; + return ret; +} +NK_API struct nk_rect +nk_layout_space_rect_to_screen(struct nk_context *ctx, struct nk_rect ret) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + win = ctx->current; + layout = win->layout; + + ret.x += layout->at_x - (float)*layout->offset_x; + ret.y += layout->at_y - (float)*layout->offset_y; + return ret; +} +NK_API struct nk_rect +nk_layout_space_rect_to_local(struct nk_context *ctx, struct nk_rect ret) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + win = ctx->current; + layout = win->layout; + + ret.x += -layout->at_x + (float)*layout->offset_x; + ret.y += -layout->at_y + (float)*layout->offset_y; + return ret; +} +NK_LIB void +nk_panel_alloc_row(const struct nk_context *ctx, struct nk_window *win) +{ + struct nk_panel *layout = win->layout; + struct nk_vec2 spacing = ctx->style.window.spacing; + const float row_height = layout->row.height - spacing.y; + nk_panel_layout(ctx, win, row_height, layout->row.columns); +} +NK_LIB void +nk_layout_widget_space(struct nk_rect *bounds, const struct nk_context *ctx, + struct nk_window *win, int modify) +{ + struct nk_panel *layout; + const struct nk_style *style; + + struct nk_vec2 spacing; + struct nk_vec2 padding; + + float item_offset = 0; + float item_width = 0; + float item_spacing = 0; + float panel_space = 0; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + style = &ctx->style; + NK_ASSERT(bounds); + + spacing = style->window.spacing; + padding = nk_panel_get_padding(style, layout->type); + panel_space = nk_layout_row_calculate_usable_space(&ctx->style, layout->type, + layout->bounds.w, layout->row.columns); + + #define NK_FRAC(x) (x - (int)x) /* will be used to remove fookin gaps */ + /* calculate the width of one item inside the current layout space */ + switch (layout->row.type) { + case NK_LAYOUT_DYNAMIC_FIXED: { + /* scaling fixed size widgets item width */ + float w = NK_MAX(1.0f,panel_space) / (float)layout->row.columns; + item_offset = (float)layout->row.index * w; + item_width = w + NK_FRAC(item_offset); + item_spacing = (float)layout->row.index * spacing.x; + } break; + case NK_LAYOUT_DYNAMIC_ROW: { + /* scaling single ratio widget width */ + float w = layout->row.item_width * panel_space; + item_offset = layout->row.item_offset; + item_width = w + NK_FRAC(item_offset); + item_spacing = 0; + + if (modify) { + layout->row.item_offset += w + spacing.x; + layout->row.filled += layout->row.item_width; + layout->row.index = 0; + } + } break; + case NK_LAYOUT_DYNAMIC_FREE: { + /* panel width depended free widget placing */ + bounds->x = layout->at_x + (layout->bounds.w * layout->row.item.x); + bounds->x -= (float)*layout->offset_x; + bounds->y = layout->at_y + (layout->row.height * layout->row.item.y); + bounds->y -= (float)*layout->offset_y; + bounds->w = layout->bounds.w * layout->row.item.w + NK_FRAC(bounds->x); + bounds->h = layout->row.height * layout->row.item.h + NK_FRAC(bounds->y); + return; + } + case NK_LAYOUT_DYNAMIC: { + /* scaling arrays of panel width ratios for every widget */ + float ratio, w; + NK_ASSERT(layout->row.ratio); + ratio = (layout->row.ratio[layout->row.index] < 0) ? + layout->row.item_width : layout->row.ratio[layout->row.index]; + + w = (ratio * panel_space); + item_spacing = (float)layout->row.index * spacing.x; + item_offset = layout->row.item_offset; + item_width = w + NK_FRAC(item_offset); + + if (modify) { + layout->row.item_offset += w; + layout->row.filled += ratio; + } + } break; + case NK_LAYOUT_STATIC_FIXED: { + /* non-scaling fixed widgets item width */ + item_width = layout->row.item_width; + item_offset = (float)layout->row.index * item_width; + item_spacing = (float)layout->row.index * spacing.x; + } break; + case NK_LAYOUT_STATIC_ROW: { + /* scaling single ratio widget width */ + item_width = layout->row.item_width; + item_offset = layout->row.item_offset; + item_spacing = (float)layout->row.index * spacing.x; + if (modify) layout->row.item_offset += item_width; + } break; + case NK_LAYOUT_STATIC_FREE: { + /* free widget placing */ + bounds->x = layout->at_x + layout->row.item.x; + bounds->w = layout->row.item.w; + if (((bounds->x + bounds->w) > layout->max_x) && modify) + layout->max_x = (bounds->x + bounds->w); + bounds->x -= (float)*layout->offset_x; + bounds->y = layout->at_y + layout->row.item.y; + bounds->y -= (float)*layout->offset_y; + bounds->h = layout->row.item.h; + return; + } + case NK_LAYOUT_STATIC: { + /* non-scaling array of panel pixel width for every widget */ + item_spacing = (float)layout->row.index * spacing.x; + item_width = layout->row.ratio[layout->row.index]; + item_offset = layout->row.item_offset; + if (modify) layout->row.item_offset += item_width; + } break; + case NK_LAYOUT_TEMPLATE: { + /* stretchy row layout with combined dynamic/static widget width*/ + float w; + NK_ASSERT(layout->row.index < layout->row.columns); + NK_ASSERT(layout->row.index < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); + w = layout->row.templates[layout->row.index]; + item_offset = layout->row.item_offset; + item_width = w + NK_FRAC(item_offset); + item_spacing = (float)layout->row.index * spacing.x; + if (modify) layout->row.item_offset += w; + } break; + #undef NK_FRAC + default: NK_ASSERT(0); break; + }; + + /* set the bounds of the newly allocated widget */ + bounds->w = item_width; + bounds->h = layout->row.height - spacing.y; + bounds->y = layout->at_y - (float)*layout->offset_y; + bounds->x = layout->at_x + item_offset + item_spacing + padding.x; + if (((bounds->x + bounds->w) > layout->max_x) && modify) + layout->max_x = bounds->x + bounds->w; + bounds->x -= (float)*layout->offset_x; +} +NK_LIB void +nk_panel_alloc_space(struct nk_rect *bounds, const struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + /* check if the end of the row has been hit and begin new row if so */ + win = ctx->current; + layout = win->layout; + if (layout->row.index >= layout->row.columns) + nk_panel_alloc_row(ctx, win); + + /* calculate widget position and size */ + nk_layout_widget_space(bounds, ctx, win, nk_true); + layout->row.index++; +} +NK_LIB void +nk_layout_peek(struct nk_rect *bounds, struct nk_context *ctx) +{ + float y; + int index; + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + y = layout->at_y; + index = layout->row.index; + if (layout->row.index >= layout->row.columns) { + layout->at_y += layout->row.height; + layout->row.index = 0; + } + nk_layout_widget_space(bounds, ctx, win, nk_false); + if (!layout->row.index) { + bounds->x -= layout->row.item_offset; + } + layout->at_y = y; + layout->row.index = index; +} + + + + + +/* =============================================================== + * + * TREE + * + * ===============================================================*/ +NK_INTERN int +nk_tree_state_base(struct nk_context *ctx, enum nk_tree_type type, + struct nk_image *img, const char *title, enum nk_collapse_states *state) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_style *style; + struct nk_command_buffer *out; + const struct nk_input *in; + const struct nk_style_button *button; + enum nk_symbol_type symbol; + float row_height; + + struct nk_vec2 item_spacing; + struct nk_rect header = {0,0,0,0}; + struct nk_rect sym = {0,0,0,0}; + struct nk_text text; + + nk_flags ws = 0; + enum nk_widget_layout_states widget_state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + /* cache some data */ + win = ctx->current; + layout = win->layout; + out = &win->buffer; + style = &ctx->style; + item_spacing = style->window.spacing; + + /* calculate header bounds and draw background */ + row_height = style->font->height + 2 * style->tab.padding.y; + nk_layout_set_min_row_height(ctx, row_height); + nk_layout_row_dynamic(ctx, row_height, 1); + nk_layout_reset_min_row_height(ctx); + + widget_state = nk_widget(&header, ctx); + if (type == NK_TREE_TAB) { + const struct nk_style_item *background = &style->tab.background; + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(out, header, &background->data.image, nk_white); + text.background = nk_rgba(0,0,0,0); + } else { + text.background = background->data.color; + nk_fill_rect(out, header, 0, style->tab.border_color); + nk_fill_rect(out, nk_shrink_rect(header, style->tab.border), + style->tab.rounding, background->data.color); + } + } else text.background = style->window.background; + + /* update node state */ + in = (!(layout->flags & NK_WINDOW_ROM)) ? &ctx->input: 0; + in = (in && widget_state == NK_WIDGET_VALID) ? &ctx->input : 0; + if (nk_button_behavior(&ws, header, in, NK_BUTTON_DEFAULT)) + *state = (*state == NK_MAXIMIZED) ? NK_MINIMIZED : NK_MAXIMIZED; + + /* select correct button style */ + if (*state == NK_MAXIMIZED) { + symbol = style->tab.sym_maximize; + if (type == NK_TREE_TAB) + button = &style->tab.tab_maximize_button; + else button = &style->tab.node_maximize_button; + } else { + symbol = style->tab.sym_minimize; + if (type == NK_TREE_TAB) + button = &style->tab.tab_minimize_button; + else button = &style->tab.node_minimize_button; + } + + {/* draw triangle button */ + sym.w = sym.h = style->font->height; + sym.y = header.y + style->tab.padding.y; + sym.x = header.x + style->tab.padding.x; + nk_do_button_symbol(&ws, &win->buffer, sym, symbol, NK_BUTTON_DEFAULT, + button, 0, style->font); + + if (img) { + /* draw optional image icon */ + sym.x = sym.x + sym.w + 4 * item_spacing.x; + nk_draw_image(&win->buffer, sym, img, nk_white); + sym.w = style->font->height + style->tab.spacing.x;} + } + + {/* draw label */ + struct nk_rect label; + header.w = NK_MAX(header.w, sym.w + item_spacing.x); + label.x = sym.x + sym.w + item_spacing.x; + label.y = sym.y; + label.w = header.w - (sym.w + item_spacing.y + style->tab.indent); + label.h = style->font->height; + text.text = style->tab.text; + text.padding = nk_vec2(0,0); + nk_widget_text(out, label, title, nk_strlen(title), &text, + NK_TEXT_LEFT, style->font);} + + /* increase x-axis cursor widget position pointer */ + if (*state == NK_MAXIMIZED) { + layout->at_x = header.x + (float)*layout->offset_x + style->tab.indent; + layout->bounds.w = NK_MAX(layout->bounds.w, style->tab.indent); + layout->bounds.w -= (style->tab.indent + style->window.padding.x); + layout->row.tree_depth++; + return nk_true; + } else return nk_false; +} +NK_INTERN int +nk_tree_base(struct nk_context *ctx, enum nk_tree_type type, + struct nk_image *img, const char *title, enum nk_collapse_states initial_state, + const char *hash, int len, int line) +{ + struct nk_window *win = ctx->current; + int title_len = 0; + nk_hash tree_hash = 0; + nk_uint *state = 0; + + /* retrieve tree state from internal widget state tables */ + if (!hash) { + title_len = (int)nk_strlen(title); + tree_hash = nk_murmur_hash(title, (int)title_len, (nk_hash)line); + } else tree_hash = nk_murmur_hash(hash, len, (nk_hash)line); + state = nk_find_value(win, tree_hash); + if (!state) { + state = nk_add_value(ctx, win, tree_hash, 0); + *state = initial_state; + } + return nk_tree_state_base(ctx, type, img, title, (enum nk_collapse_states*)state); +} +NK_API int +nk_tree_state_push(struct nk_context *ctx, enum nk_tree_type type, + const char *title, enum nk_collapse_states *state) +{ + return nk_tree_state_base(ctx, type, 0, title, state); +} +NK_API int +nk_tree_state_image_push(struct nk_context *ctx, enum nk_tree_type type, + struct nk_image img, const char *title, enum nk_collapse_states *state) +{ + return nk_tree_state_base(ctx, type, &img, title, state); +} +NK_API void +nk_tree_state_pop(struct nk_context *ctx) +{ + struct nk_window *win = 0; + struct nk_panel *layout = 0; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + layout->at_x -= ctx->style.tab.indent + ctx->style.window.padding.x; + layout->bounds.w += ctx->style.tab.indent + ctx->style.window.padding.x; + NK_ASSERT(layout->row.tree_depth); + layout->row.tree_depth--; +} +NK_API int +nk_tree_push_hashed(struct nk_context *ctx, enum nk_tree_type type, + const char *title, enum nk_collapse_states initial_state, + const char *hash, int len, int line) +{ + return nk_tree_base(ctx, type, 0, title, initial_state, hash, len, line); +} +NK_API int +nk_tree_image_push_hashed(struct nk_context *ctx, enum nk_tree_type type, + struct nk_image img, const char *title, enum nk_collapse_states initial_state, + const char *hash, int len,int seed) +{ + return nk_tree_base(ctx, type, &img, title, initial_state, hash, len, seed); +} +NK_API void +nk_tree_pop(struct nk_context *ctx) +{ + nk_tree_state_pop(ctx); +} +NK_INTERN int +nk_tree_element_image_push_hashed_base(struct nk_context *ctx, enum nk_tree_type type, + struct nk_image *img, const char *title, int title_len, + enum nk_collapse_states *state, int *selected) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_style *style; + struct nk_command_buffer *out; + const struct nk_input *in; + const struct nk_style_button *button; + enum nk_symbol_type symbol; + float row_height; + struct nk_vec2 padding; + + int text_len; + float text_width; + + struct nk_vec2 item_spacing; + struct nk_rect header = {0,0,0,0}; + struct nk_rect sym = {0,0,0,0}; + struct nk_text text; + + nk_flags ws = 0; + enum nk_widget_layout_states widget_state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + /* cache some data */ + win = ctx->current; + layout = win->layout; + out = &win->buffer; + style = &ctx->style; + item_spacing = style->window.spacing; + padding = style->selectable.padding; + + /* calculate header bounds and draw background */ + row_height = style->font->height + 2 * style->tab.padding.y; + nk_layout_set_min_row_height(ctx, row_height); + nk_layout_row_dynamic(ctx, row_height, 1); + nk_layout_reset_min_row_height(ctx); + + widget_state = nk_widget(&header, ctx); + if (type == NK_TREE_TAB) { + const struct nk_style_item *background = &style->tab.background; + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(out, header, &background->data.image, nk_white); + text.background = nk_rgba(0,0,0,0); + } else { + text.background = background->data.color; + nk_fill_rect(out, header, 0, style->tab.border_color); + nk_fill_rect(out, nk_shrink_rect(header, style->tab.border), + style->tab.rounding, background->data.color); + } + } else text.background = style->window.background; + + in = (!(layout->flags & NK_WINDOW_ROM)) ? &ctx->input: 0; + in = (in && widget_state == NK_WIDGET_VALID) ? &ctx->input : 0; + + /* select correct button style */ + if (*state == NK_MAXIMIZED) { + symbol = style->tab.sym_maximize; + if (type == NK_TREE_TAB) + button = &style->tab.tab_maximize_button; + else button = &style->tab.node_maximize_button; + } else { + symbol = style->tab.sym_minimize; + if (type == NK_TREE_TAB) + button = &style->tab.tab_minimize_button; + else button = &style->tab.node_minimize_button; + } + {/* draw triangle button */ + sym.w = sym.h = style->font->height; + sym.y = header.y + style->tab.padding.y; + sym.x = header.x + style->tab.padding.x; + if (nk_do_button_symbol(&ws, &win->buffer, sym, symbol, NK_BUTTON_DEFAULT, button, in, style->font)) + *state = (*state == NK_MAXIMIZED) ? NK_MINIMIZED : NK_MAXIMIZED;} + + /* draw label */ + {nk_flags dummy = 0; + struct nk_rect label; + /* calculate size of the text and tooltip */ + text_len = nk_strlen(title); + text_width = style->font->width(style->font->userdata, style->font->height, title, text_len); + text_width += (4 * padding.x); + + header.w = NK_MAX(header.w, sym.w + item_spacing.x); + label.x = sym.x + sym.w + item_spacing.x; + label.y = sym.y; + label.w = NK_MIN(header.w - (sym.w + item_spacing.y + style->tab.indent), text_width); + label.h = style->font->height; + + if (img) { + nk_do_selectable_image(&dummy, &win->buffer, label, title, title_len, NK_TEXT_LEFT, + selected, img, &style->selectable, in, style->font); + } else nk_do_selectable(&dummy, &win->buffer, label, title, title_len, NK_TEXT_LEFT, + selected, &style->selectable, in, style->font); + } + /* increase x-axis cursor widget position pointer */ + if (*state == NK_MAXIMIZED) { + layout->at_x = header.x + (float)*layout->offset_x + style->tab.indent; + layout->bounds.w = NK_MAX(layout->bounds.w, style->tab.indent); + layout->bounds.w -= (style->tab.indent + style->window.padding.x); + layout->row.tree_depth++; + return nk_true; + } else return nk_false; +} +NK_INTERN int +nk_tree_element_base(struct nk_context *ctx, enum nk_tree_type type, + struct nk_image *img, const char *title, enum nk_collapse_states initial_state, + int *selected, const char *hash, int len, int line) +{ + struct nk_window *win = ctx->current; + int title_len = 0; + nk_hash tree_hash = 0; + nk_uint *state = 0; + + /* retrieve tree state from internal widget state tables */ + if (!hash) { + title_len = (int)nk_strlen(title); + tree_hash = nk_murmur_hash(title, (int)title_len, (nk_hash)line); + } else tree_hash = nk_murmur_hash(hash, len, (nk_hash)line); + state = nk_find_value(win, tree_hash); + if (!state) { + state = nk_add_value(ctx, win, tree_hash, 0); + *state = initial_state; + } return nk_tree_element_image_push_hashed_base(ctx, type, img, title, + nk_strlen(title), (enum nk_collapse_states*)state, selected); +} +NK_API int +nk_tree_element_push_hashed(struct nk_context *ctx, enum nk_tree_type type, + const char *title, enum nk_collapse_states initial_state, + int *selected, const char *hash, int len, int seed) +{ + return nk_tree_element_base(ctx, type, 0, title, initial_state, selected, hash, len, seed); +} +NK_API int +nk_tree_element_image_push_hashed(struct nk_context *ctx, enum nk_tree_type type, + struct nk_image img, const char *title, enum nk_collapse_states initial_state, + int *selected, const char *hash, int len,int seed) +{ + return nk_tree_element_base(ctx, type, &img, title, initial_state, selected, hash, len, seed); +} +NK_API void +nk_tree_element_pop(struct nk_context *ctx) +{ + nk_tree_state_pop(ctx); +} + + + + + +/* =============================================================== + * + * GROUP + * + * ===============================================================*/ +NK_API int +nk_group_scrolled_offset_begin(struct nk_context *ctx, + nk_uint *x_offset, nk_uint *y_offset, const char *title, nk_flags flags) +{ + struct nk_rect bounds; + struct nk_window panel; + struct nk_window *win; + + win = ctx->current; + nk_panel_alloc_space(&bounds, ctx); + {const struct nk_rect *c = &win->layout->clip; + if (!NK_INTERSECT(c->x, c->y, c->w, c->h, bounds.x, bounds.y, bounds.w, bounds.h) && + !(flags & NK_WINDOW_MOVABLE)) { + return 0; + }} + if (win->flags & NK_WINDOW_ROM) + flags |= NK_WINDOW_ROM; + + /* initialize a fake window to create the panel from */ + nk_zero(&panel, sizeof(panel)); + panel.bounds = bounds; + panel.flags = flags; + panel.scrollbar.x = *x_offset; + panel.scrollbar.y = *y_offset; + panel.buffer = win->buffer; + panel.layout = (struct nk_panel*)nk_create_panel(ctx); + ctx->current = &panel; + nk_panel_begin(ctx, (flags & NK_WINDOW_TITLE) ? title: 0, NK_PANEL_GROUP); + + win->buffer = panel.buffer; + win->buffer.clip = panel.layout->clip; + panel.layout->offset_x = x_offset; + panel.layout->offset_y = y_offset; + panel.layout->parent = win->layout; + win->layout = panel.layout; + + ctx->current = win; + if ((panel.layout->flags & NK_WINDOW_CLOSED) || + (panel.layout->flags & NK_WINDOW_MINIMIZED)) + { + nk_flags f = panel.layout->flags; + nk_group_scrolled_end(ctx); + if (f & NK_WINDOW_CLOSED) + return NK_WINDOW_CLOSED; + if (f & NK_WINDOW_MINIMIZED) + return NK_WINDOW_MINIMIZED; + } + return 1; +} +NK_API void +nk_group_scrolled_end(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_panel *parent; + struct nk_panel *g; + + struct nk_rect clip; + struct nk_window pan; + struct nk_vec2 panel_padding; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return; + + /* make sure nk_group_begin was called correctly */ + NK_ASSERT(ctx->current); + win = ctx->current; + NK_ASSERT(win->layout); + g = win->layout; + NK_ASSERT(g->parent); + parent = g->parent; + + /* dummy window */ + nk_zero_struct(pan); + panel_padding = nk_panel_get_padding(&ctx->style, NK_PANEL_GROUP); + pan.bounds.y = g->bounds.y - (g->header_height + g->menu.h); + pan.bounds.x = g->bounds.x - panel_padding.x; + pan.bounds.w = g->bounds.w + 2 * panel_padding.x; + pan.bounds.h = g->bounds.h + g->header_height + g->menu.h; + if (g->flags & NK_WINDOW_BORDER) { + pan.bounds.x -= g->border; + pan.bounds.y -= g->border; + pan.bounds.w += 2*g->border; + pan.bounds.h += 2*g->border; + } + if (!(g->flags & NK_WINDOW_NO_SCROLLBAR)) { + pan.bounds.w += ctx->style.window.scrollbar_size.x; + pan.bounds.h += ctx->style.window.scrollbar_size.y; + } + pan.scrollbar.x = *g->offset_x; + pan.scrollbar.y = *g->offset_y; + pan.flags = g->flags; + pan.buffer = win->buffer; + pan.layout = g; + pan.parent = win; + ctx->current = &pan; + + /* make sure group has correct clipping rectangle */ + nk_unify(&clip, &parent->clip, pan.bounds.x, pan.bounds.y, + pan.bounds.x + pan.bounds.w, pan.bounds.y + pan.bounds.h + panel_padding.x); + nk_push_scissor(&pan.buffer, clip); + nk_end(ctx); + + win->buffer = pan.buffer; + nk_push_scissor(&win->buffer, parent->clip); + ctx->current = win; + win->layout = parent; + g->bounds = pan.bounds; + return; +} +NK_API int +nk_group_scrolled_begin(struct nk_context *ctx, + struct nk_scroll *scroll, const char *title, nk_flags flags) +{ + return nk_group_scrolled_offset_begin(ctx, &scroll->x, &scroll->y, title, flags); +} +NK_API int +nk_group_begin_titled(struct nk_context *ctx, const char *id, + const char *title, nk_flags flags) +{ + int id_len; + nk_hash id_hash; + struct nk_window *win; + nk_uint *x_offset; + nk_uint *y_offset; + + NK_ASSERT(ctx); + NK_ASSERT(id); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !id) + return 0; + + /* find persistent group scrollbar value */ + win = ctx->current; + id_len = (int)nk_strlen(id); + id_hash = nk_murmur_hash(id, (int)id_len, NK_PANEL_GROUP); + x_offset = nk_find_value(win, id_hash); + if (!x_offset) { + x_offset = nk_add_value(ctx, win, id_hash, 0); + y_offset = nk_add_value(ctx, win, id_hash+1, 0); + + NK_ASSERT(x_offset); + NK_ASSERT(y_offset); + if (!x_offset || !y_offset) return 0; + *x_offset = *y_offset = 0; + } else y_offset = nk_find_value(win, id_hash+1); + return nk_group_scrolled_offset_begin(ctx, x_offset, y_offset, title, flags); +} +NK_API int +nk_group_begin(struct nk_context *ctx, const char *title, nk_flags flags) +{ + return nk_group_begin_titled(ctx, title, title, flags); +} +NK_API void +nk_group_end(struct nk_context *ctx) +{ + nk_group_scrolled_end(ctx); +} +NK_API void +nk_group_get_scroll(struct nk_context *ctx, const char *id, nk_uint *x_offset, nk_uint *y_offset) +{ + int id_len; + nk_hash id_hash; + struct nk_window *win; + nk_uint *x_offset_ptr; + nk_uint *y_offset_ptr; + + NK_ASSERT(ctx); + NK_ASSERT(id); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !id) + return; + + /* find persistent group scrollbar value */ + win = ctx->current; + id_len = (int)nk_strlen(id); + id_hash = nk_murmur_hash(id, (int)id_len, NK_PANEL_GROUP); + x_offset_ptr = nk_find_value(win, id_hash); + if (!x_offset_ptr) { + x_offset_ptr = nk_add_value(ctx, win, id_hash, 0); + y_offset_ptr = nk_add_value(ctx, win, id_hash+1, 0); + + NK_ASSERT(x_offset_ptr); + NK_ASSERT(y_offset_ptr); + if (!x_offset_ptr || !y_offset_ptr) return; + *x_offset_ptr = *y_offset_ptr = 0; + } else y_offset_ptr = nk_find_value(win, id_hash+1); + if (x_offset) + *x_offset = *x_offset_ptr; + if (y_offset) + *y_offset = *y_offset_ptr; +} +NK_API void +nk_group_set_scroll(struct nk_context *ctx, const char *id, nk_uint x_offset, nk_uint y_offset) +{ + int id_len; + nk_hash id_hash; + struct nk_window *win; + nk_uint *x_offset_ptr; + nk_uint *y_offset_ptr; + + NK_ASSERT(ctx); + NK_ASSERT(id); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !id) + return; + + /* find persistent group scrollbar value */ + win = ctx->current; + id_len = (int)nk_strlen(id); + id_hash = nk_murmur_hash(id, (int)id_len, NK_PANEL_GROUP); + x_offset_ptr = nk_find_value(win, id_hash); + if (!x_offset_ptr) { + x_offset_ptr = nk_add_value(ctx, win, id_hash, 0); + y_offset_ptr = nk_add_value(ctx, win, id_hash+1, 0); + + NK_ASSERT(x_offset_ptr); + NK_ASSERT(y_offset_ptr); + if (!x_offset_ptr || !y_offset_ptr) return; + *x_offset_ptr = *y_offset_ptr = 0; + } else y_offset_ptr = nk_find_value(win, id_hash+1); + *x_offset_ptr = x_offset; + *y_offset_ptr = y_offset; +} + + + + +/* =============================================================== + * + * LIST VIEW + * + * ===============================================================*/ +NK_API int +nk_list_view_begin(struct nk_context *ctx, struct nk_list_view *view, + const char *title, nk_flags flags, int row_height, int row_count) +{ + int title_len; + nk_hash title_hash; + nk_uint *x_offset; + nk_uint *y_offset; + + int result; + struct nk_window *win; + struct nk_panel *layout; + const struct nk_style *style; + struct nk_vec2 item_spacing; + + NK_ASSERT(ctx); + NK_ASSERT(view); + NK_ASSERT(title); + if (!ctx || !view || !title) return 0; + + win = ctx->current; + style = &ctx->style; + item_spacing = style->window.spacing; + row_height += NK_MAX(0, (int)item_spacing.y); + + /* find persistent list view scrollbar offset */ + title_len = (int)nk_strlen(title); + title_hash = nk_murmur_hash(title, (int)title_len, NK_PANEL_GROUP); + x_offset = nk_find_value(win, title_hash); + if (!x_offset) { + x_offset = nk_add_value(ctx, win, title_hash, 0); + y_offset = nk_add_value(ctx, win, title_hash+1, 0); + + NK_ASSERT(x_offset); + NK_ASSERT(y_offset); + if (!x_offset || !y_offset) return 0; + *x_offset = *y_offset = 0; + } else y_offset = nk_find_value(win, title_hash+1); + view->scroll_value = *y_offset; + view->scroll_pointer = y_offset; + + *y_offset = 0; + result = nk_group_scrolled_offset_begin(ctx, x_offset, y_offset, title, flags); + win = ctx->current; + layout = win->layout; + + view->total_height = row_height * NK_MAX(row_count,1); + view->begin = (int)NK_MAX(((float)view->scroll_value / (float)row_height), 0.0f); + view->count = (int)NK_MAX(nk_iceilf((layout->clip.h)/(float)row_height),0); + view->count = NK_MIN(view->count, row_count - view->begin); + view->end = view->begin + view->count; + view->ctx = ctx; + return result; +} +NK_API void +nk_list_view_end(struct nk_list_view *view) +{ + struct nk_context *ctx; + struct nk_window *win; + struct nk_panel *layout; + + NK_ASSERT(view); + NK_ASSERT(view->ctx); + NK_ASSERT(view->scroll_pointer); + if (!view || !view->ctx) return; + + ctx = view->ctx; + win = ctx->current; + layout = win->layout; + layout->at_y = layout->bounds.y + (float)view->total_height; + *view->scroll_pointer = *view->scroll_pointer + view->scroll_value; + nk_group_end(view->ctx); +} + + + + + +/* =============================================================== + * + * WIDGET + * + * ===============================================================*/ +NK_API struct nk_rect +nk_widget_bounds(struct nk_context *ctx) +{ + struct nk_rect bounds; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return nk_rect(0,0,0,0); + nk_layout_peek(&bounds, ctx); + return bounds; +} +NK_API struct nk_vec2 +nk_widget_position(struct nk_context *ctx) +{ + struct nk_rect bounds; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return nk_vec2(0,0); + + nk_layout_peek(&bounds, ctx); + return nk_vec2(bounds.x, bounds.y); +} +NK_API struct nk_vec2 +nk_widget_size(struct nk_context *ctx) +{ + struct nk_rect bounds; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return nk_vec2(0,0); + + nk_layout_peek(&bounds, ctx); + return nk_vec2(bounds.w, bounds.h); +} +NK_API float +nk_widget_width(struct nk_context *ctx) +{ + struct nk_rect bounds; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return 0; + + nk_layout_peek(&bounds, ctx); + return bounds.w; +} +NK_API float +nk_widget_height(struct nk_context *ctx) +{ + struct nk_rect bounds; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return 0; + + nk_layout_peek(&bounds, ctx); + return bounds.h; +} +NK_API int +nk_widget_is_hovered(struct nk_context *ctx) +{ + struct nk_rect c, v; + struct nk_rect bounds; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current || ctx->active != ctx->current) + return 0; + + c = ctx->current->layout->clip; + c.x = (float)((int)c.x); + c.y = (float)((int)c.y); + c.w = (float)((int)c.w); + c.h = (float)((int)c.h); + + nk_layout_peek(&bounds, ctx); + nk_unify(&v, &c, bounds.x, bounds.y, bounds.x + bounds.w, bounds.y + bounds.h); + if (!NK_INTERSECT(c.x, c.y, c.w, c.h, bounds.x, bounds.y, bounds.w, bounds.h)) + return 0; + return nk_input_is_mouse_hovering_rect(&ctx->input, bounds); +} +NK_API int +nk_widget_is_mouse_clicked(struct nk_context *ctx, enum nk_buttons btn) +{ + struct nk_rect c, v; + struct nk_rect bounds; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current || ctx->active != ctx->current) + return 0; + + c = ctx->current->layout->clip; + c.x = (float)((int)c.x); + c.y = (float)((int)c.y); + c.w = (float)((int)c.w); + c.h = (float)((int)c.h); + + nk_layout_peek(&bounds, ctx); + nk_unify(&v, &c, bounds.x, bounds.y, bounds.x + bounds.w, bounds.y + bounds.h); + if (!NK_INTERSECT(c.x, c.y, c.w, c.h, bounds.x, bounds.y, bounds.w, bounds.h)) + return 0; + return nk_input_mouse_clicked(&ctx->input, btn, bounds); +} +NK_API int +nk_widget_has_mouse_click_down(struct nk_context *ctx, enum nk_buttons btn, int down) +{ + struct nk_rect c, v; + struct nk_rect bounds; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current || ctx->active != ctx->current) + return 0; + + c = ctx->current->layout->clip; + c.x = (float)((int)c.x); + c.y = (float)((int)c.y); + c.w = (float)((int)c.w); + c.h = (float)((int)c.h); + + nk_layout_peek(&bounds, ctx); + nk_unify(&v, &c, bounds.x, bounds.y, bounds.x + bounds.w, bounds.y + bounds.h); + if (!NK_INTERSECT(c.x, c.y, c.w, c.h, bounds.x, bounds.y, bounds.w, bounds.h)) + return 0; + return nk_input_has_mouse_click_down_in_rect(&ctx->input, btn, bounds, down); +} +NK_API enum nk_widget_layout_states +nk_widget(struct nk_rect *bounds, const struct nk_context *ctx) +{ + struct nk_rect c, v; + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return NK_WIDGET_INVALID; + + /* allocate space and check if the widget needs to be updated and drawn */ + nk_panel_alloc_space(bounds, ctx); + win = ctx->current; + layout = win->layout; + in = &ctx->input; + c = layout->clip; + + /* if one of these triggers you forgot to add an `if` condition around either + a window, group, popup, combobox or contextual menu `begin` and `end` block. + Example: + if (nk_begin(...) {...} nk_end(...); or + if (nk_group_begin(...) { nk_group_end(...);} */ + NK_ASSERT(!(layout->flags & NK_WINDOW_MINIMIZED)); + NK_ASSERT(!(layout->flags & NK_WINDOW_HIDDEN)); + NK_ASSERT(!(layout->flags & NK_WINDOW_CLOSED)); + + /* need to convert to int here to remove floating point errors */ + bounds->x = (float)((int)bounds->x); + bounds->y = (float)((int)bounds->y); + bounds->w = (float)((int)bounds->w); + bounds->h = (float)((int)bounds->h); + + c.x = (float)((int)c.x); + c.y = (float)((int)c.y); + c.w = (float)((int)c.w); + c.h = (float)((int)c.h); + + nk_unify(&v, &c, bounds->x, bounds->y, bounds->x + bounds->w, bounds->y + bounds->h); + if (!NK_INTERSECT(c.x, c.y, c.w, c.h, bounds->x, bounds->y, bounds->w, bounds->h)) + return NK_WIDGET_INVALID; + if (!NK_INBOX(in->mouse.pos.x, in->mouse.pos.y, v.x, v.y, v.w, v.h)) + return NK_WIDGET_ROM; + return NK_WIDGET_VALID; +} +NK_API enum nk_widget_layout_states +nk_widget_fitting(struct nk_rect *bounds, struct nk_context *ctx, + struct nk_vec2 item_padding) +{ + /* update the bounds to stand without padding */ + struct nk_window *win; + struct nk_style *style; + struct nk_panel *layout; + enum nk_widget_layout_states state; + struct nk_vec2 panel_padding; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return NK_WIDGET_INVALID; + + win = ctx->current; + style = &ctx->style; + layout = win->layout; + state = nk_widget(bounds, ctx); + + panel_padding = nk_panel_get_padding(style, layout->type); + if (layout->row.index == 1) { + bounds->w += panel_padding.x; + bounds->x -= panel_padding.x; + } else bounds->x -= item_padding.x; + + if (layout->row.index == layout->row.columns) + bounds->w += panel_padding.x; + else bounds->w += item_padding.x; + return state; +} +NK_API void +nk_spacing(struct nk_context *ctx, int cols) +{ + struct nk_window *win; + struct nk_panel *layout; + struct nk_rect none; + int i, index, rows; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + /* spacing over row boundaries */ + win = ctx->current; + layout = win->layout; + index = (layout->row.index + cols) % layout->row.columns; + rows = (layout->row.index + cols) / layout->row.columns; + if (rows) { + for (i = 0; i < rows; ++i) + nk_panel_alloc_row(ctx, win); + cols = index; + } + /* non table layout need to allocate space */ + if (layout->row.type != NK_LAYOUT_DYNAMIC_FIXED && + layout->row.type != NK_LAYOUT_STATIC_FIXED) { + for (i = 0; i < cols; ++i) + nk_panel_alloc_space(&none, ctx); + } layout->row.index = index; +} + + + + + +/* =============================================================== + * + * TEXT + * + * ===============================================================*/ +NK_LIB void +nk_widget_text(struct nk_command_buffer *o, struct nk_rect b, + const char *string, int len, const struct nk_text *t, + nk_flags a, const struct nk_user_font *f) +{ + struct nk_rect label; + float text_width; + + NK_ASSERT(o); + NK_ASSERT(t); + if (!o || !t) return; + + b.h = NK_MAX(b.h, 2 * t->padding.y); + label.x = 0; label.w = 0; + label.y = b.y + t->padding.y; + label.h = NK_MIN(f->height, b.h - 2 * t->padding.y); + + text_width = f->width(f->userdata, f->height, (const char*)string, len); + text_width += (2.0f * t->padding.x); + + /* align in x-axis */ + if (a & NK_TEXT_ALIGN_LEFT) { + label.x = b.x + t->padding.x; + label.w = NK_MAX(0, b.w - 2 * t->padding.x); + } else if (a & NK_TEXT_ALIGN_CENTERED) { + label.w = NK_MAX(1, 2 * t->padding.x + (float)text_width); + label.x = (b.x + t->padding.x + ((b.w - 2 * t->padding.x) - label.w) / 2); + label.x = NK_MAX(b.x + t->padding.x, label.x); + label.w = NK_MIN(b.x + b.w, label.x + label.w); + if (label.w >= label.x) label.w -= label.x; + } else if (a & NK_TEXT_ALIGN_RIGHT) { + label.x = NK_MAX(b.x + t->padding.x, (b.x + b.w) - (2 * t->padding.x + (float)text_width)); + label.w = (float)text_width + 2 * t->padding.x; + } else return; + + /* align in y-axis */ + if (a & NK_TEXT_ALIGN_MIDDLE) { + label.y = b.y + b.h/2.0f - (float)f->height/2.0f; + label.h = NK_MAX(b.h/2.0f, b.h - (b.h/2.0f + f->height/2.0f)); + } else if (a & NK_TEXT_ALIGN_BOTTOM) { + label.y = b.y + b.h - f->height; + label.h = f->height; + } + nk_draw_text(o, label, (const char*)string, len, f, t->background, t->text); +} +NK_LIB void +nk_widget_text_wrap(struct nk_command_buffer *o, struct nk_rect b, + const char *string, int len, const struct nk_text *t, + const struct nk_user_font *f) +{ + float width; + int glyphs = 0; + int fitting = 0; + int done = 0; + struct nk_rect line; + struct nk_text text; + NK_INTERN nk_rune seperator[] = {' '}; + + NK_ASSERT(o); + NK_ASSERT(t); + if (!o || !t) return; + + text.padding = nk_vec2(0,0); + text.background = t->background; + text.text = t->text; + + b.w = NK_MAX(b.w, 2 * t->padding.x); + b.h = NK_MAX(b.h, 2 * t->padding.y); + b.h = b.h - 2 * t->padding.y; + + line.x = b.x + t->padding.x; + line.y = b.y + t->padding.y; + line.w = b.w - 2 * t->padding.x; + line.h = 2 * t->padding.y + f->height; + + fitting = nk_text_clamp(f, string, len, line.w, &glyphs, &width, seperator,NK_LEN(seperator)); + while (done < len) { + if (!fitting || line.y + line.h >= (b.y + b.h)) break; + nk_widget_text(o, line, &string[done], fitting, &text, NK_TEXT_LEFT, f); + done += fitting; + line.y += f->height + 2 * t->padding.y; + fitting = nk_text_clamp(f, &string[done], len - done, line.w, &glyphs, &width, seperator,NK_LEN(seperator)); + } +} +NK_API void +nk_text_colored(struct nk_context *ctx, const char *str, int len, + nk_flags alignment, struct nk_color color) +{ + struct nk_window *win; + const struct nk_style *style; + + struct nk_vec2 item_padding; + struct nk_rect bounds; + struct nk_text text; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) return; + + win = ctx->current; + style = &ctx->style; + nk_panel_alloc_space(&bounds, ctx); + item_padding = style->text.padding; + + text.padding.x = item_padding.x; + text.padding.y = item_padding.y; + text.background = style->window.background; + text.text = color; + nk_widget_text(&win->buffer, bounds, str, len, &text, alignment, style->font); +} +NK_API void +nk_text_wrap_colored(struct nk_context *ctx, const char *str, + int len, struct nk_color color) +{ + struct nk_window *win; + const struct nk_style *style; + + struct nk_vec2 item_padding; + struct nk_rect bounds; + struct nk_text text; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) return; + + win = ctx->current; + style = &ctx->style; + nk_panel_alloc_space(&bounds, ctx); + item_padding = style->text.padding; + + text.padding.x = item_padding.x; + text.padding.y = item_padding.y; + text.background = style->window.background; + text.text = color; + nk_widget_text_wrap(&win->buffer, bounds, str, len, &text, style->font); +} +#ifdef NK_INCLUDE_STANDARD_VARARGS +NK_API void +nk_labelf_colored(struct nk_context *ctx, nk_flags flags, + struct nk_color color, const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + nk_labelfv_colored(ctx, flags, color, fmt, args); + va_end(args); +} +NK_API void +nk_labelf_colored_wrap(struct nk_context *ctx, struct nk_color color, + const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + nk_labelfv_colored_wrap(ctx, color, fmt, args); + va_end(args); +} +NK_API void +nk_labelf(struct nk_context *ctx, nk_flags flags, const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + nk_labelfv(ctx, flags, fmt, args); + va_end(args); +} +NK_API void +nk_labelf_wrap(struct nk_context *ctx, const char *fmt,...) +{ + va_list args; + va_start(args, fmt); + nk_labelfv_wrap(ctx, fmt, args); + va_end(args); +} +NK_API void +nk_labelfv_colored(struct nk_context *ctx, nk_flags flags, + struct nk_color color, const char *fmt, va_list args) +{ + char buf[256]; + nk_strfmt(buf, NK_LEN(buf), fmt, args); + nk_label_colored(ctx, buf, flags, color); +} + +NK_API void +nk_labelfv_colored_wrap(struct nk_context *ctx, struct nk_color color, + const char *fmt, va_list args) +{ + char buf[256]; + nk_strfmt(buf, NK_LEN(buf), fmt, args); + nk_label_colored_wrap(ctx, buf, color); +} + +NK_API void +nk_labelfv(struct nk_context *ctx, nk_flags flags, const char *fmt, va_list args) +{ + char buf[256]; + nk_strfmt(buf, NK_LEN(buf), fmt, args); + nk_label(ctx, buf, flags); +} + +NK_API void +nk_labelfv_wrap(struct nk_context *ctx, const char *fmt, va_list args) +{ + char buf[256]; + nk_strfmt(buf, NK_LEN(buf), fmt, args); + nk_label_wrap(ctx, buf); +} + +NK_API void +nk_value_bool(struct nk_context *ctx, const char *prefix, int value) +{ + nk_labelf(ctx, NK_TEXT_LEFT, "%s: %s", prefix, ((value) ? "true": "false")); +} +NK_API void +nk_value_int(struct nk_context *ctx, const char *prefix, int value) +{ + nk_labelf(ctx, NK_TEXT_LEFT, "%s: %d", prefix, value); +} +NK_API void +nk_value_uint(struct nk_context *ctx, const char *prefix, unsigned int value) +{ + nk_labelf(ctx, NK_TEXT_LEFT, "%s: %u", prefix, value); +} +NK_API void +nk_value_float(struct nk_context *ctx, const char *prefix, float value) +{ + double double_value = (double)value; + nk_labelf(ctx, NK_TEXT_LEFT, "%s: %.3f", prefix, double_value); +} +NK_API void +nk_value_color_byte(struct nk_context *ctx, const char *p, struct nk_color c) +{ + nk_labelf(ctx, NK_TEXT_LEFT, "%s: (%d, %d, %d, %d)", p, c.r, c.g, c.b, c.a); +} +NK_API void +nk_value_color_float(struct nk_context *ctx, const char *p, struct nk_color color) +{ + double c[4]; nk_color_dv(c, color); + nk_labelf(ctx, NK_TEXT_LEFT, "%s: (%.2f, %.2f, %.2f, %.2f)", + p, c[0], c[1], c[2], c[3]); +} +NK_API void +nk_value_color_hex(struct nk_context *ctx, const char *prefix, struct nk_color color) +{ + char hex[16]; + nk_color_hex_rgba(hex, color); + nk_labelf(ctx, NK_TEXT_LEFT, "%s: %s", prefix, hex); +} +#endif +NK_API void +nk_text(struct nk_context *ctx, const char *str, int len, nk_flags alignment) +{ + NK_ASSERT(ctx); + if (!ctx) return; + nk_text_colored(ctx, str, len, alignment, ctx->style.text.color); +} +NK_API void +nk_text_wrap(struct nk_context *ctx, const char *str, int len) +{ + NK_ASSERT(ctx); + if (!ctx) return; + nk_text_wrap_colored(ctx, str, len, ctx->style.text.color); +} +NK_API void +nk_label(struct nk_context *ctx, const char *str, nk_flags alignment) +{ + nk_text(ctx, str, nk_strlen(str), alignment); +} +NK_API void +nk_label_colored(struct nk_context *ctx, const char *str, nk_flags align, + struct nk_color color) +{ + nk_text_colored(ctx, str, nk_strlen(str), align, color); +} +NK_API void +nk_label_wrap(struct nk_context *ctx, const char *str) +{ + nk_text_wrap(ctx, str, nk_strlen(str)); +} +NK_API void +nk_label_colored_wrap(struct nk_context *ctx, const char *str, struct nk_color color) +{ + nk_text_wrap_colored(ctx, str, nk_strlen(str), color); +} + + + + + +/* =============================================================== + * + * IMAGE + * + * ===============================================================*/ +NK_API nk_handle +nk_handle_ptr(void *ptr) +{ + nk_handle handle = {0}; + handle.ptr = ptr; + return handle; +} +NK_API nk_handle +nk_handle_id(int id) +{ + nk_handle handle; + nk_zero_struct(handle); + handle.id = id; + return handle; +} +NK_API struct nk_image +nk_subimage_ptr(void *ptr, unsigned short w, unsigned short h, struct nk_rect r) +{ + struct nk_image s; + nk_zero(&s, sizeof(s)); + s.handle.ptr = ptr; + s.w = w; s.h = h; + s.region[0] = (unsigned short)r.x; + s.region[1] = (unsigned short)r.y; + s.region[2] = (unsigned short)r.w; + s.region[3] = (unsigned short)r.h; + return s; +} +NK_API struct nk_image +nk_subimage_id(int id, unsigned short w, unsigned short h, struct nk_rect r) +{ + struct nk_image s; + nk_zero(&s, sizeof(s)); + s.handle.id = id; + s.w = w; s.h = h; + s.region[0] = (unsigned short)r.x; + s.region[1] = (unsigned short)r.y; + s.region[2] = (unsigned short)r.w; + s.region[3] = (unsigned short)r.h; + return s; +} +NK_API struct nk_image +nk_subimage_handle(nk_handle handle, unsigned short w, unsigned short h, + struct nk_rect r) +{ + struct nk_image s; + nk_zero(&s, sizeof(s)); + s.handle = handle; + s.w = w; s.h = h; + s.region[0] = (unsigned short)r.x; + s.region[1] = (unsigned short)r.y; + s.region[2] = (unsigned short)r.w; + s.region[3] = (unsigned short)r.h; + return s; +} +NK_API struct nk_image +nk_image_handle(nk_handle handle) +{ + struct nk_image s; + nk_zero(&s, sizeof(s)); + s.handle = handle; + s.w = 0; s.h = 0; + s.region[0] = 0; + s.region[1] = 0; + s.region[2] = 0; + s.region[3] = 0; + return s; +} +NK_API struct nk_image +nk_image_ptr(void *ptr) +{ + struct nk_image s; + nk_zero(&s, sizeof(s)); + NK_ASSERT(ptr); + s.handle.ptr = ptr; + s.w = 0; s.h = 0; + s.region[0] = 0; + s.region[1] = 0; + s.region[2] = 0; + s.region[3] = 0; + return s; +} +NK_API struct nk_image +nk_image_id(int id) +{ + struct nk_image s; + nk_zero(&s, sizeof(s)); + s.handle.id = id; + s.w = 0; s.h = 0; + s.region[0] = 0; + s.region[1] = 0; + s.region[2] = 0; + s.region[3] = 0; + return s; +} +NK_API int +nk_image_is_subimage(const struct nk_image* img) +{ + NK_ASSERT(img); + return !(img->w == 0 && img->h == 0); +} +NK_API void +nk_image(struct nk_context *ctx, struct nk_image img) +{ + struct nk_window *win; + struct nk_rect bounds; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) return; + + win = ctx->current; + if (!nk_widget(&bounds, ctx)) return; + nk_draw_image(&win->buffer, bounds, &img, nk_white); +} +NK_API void +nk_image_color(struct nk_context *ctx, struct nk_image img, struct nk_color col) +{ + struct nk_window *win; + struct nk_rect bounds; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) return; + + win = ctx->current; + if (!nk_widget(&bounds, ctx)) return; + nk_draw_image(&win->buffer, bounds, &img, col); +} + + + + + +/* ============================================================== + * + * BUTTON + * + * ===============================================================*/ +NK_LIB void +nk_draw_symbol(struct nk_command_buffer *out, enum nk_symbol_type type, + struct nk_rect content, struct nk_color background, struct nk_color foreground, + float border_width, const struct nk_user_font *font) +{ + switch (type) { + case NK_SYMBOL_X: + case NK_SYMBOL_UNDERSCORE: + case NK_SYMBOL_PLUS: + case NK_SYMBOL_MINUS: { + /* single character text symbol */ + const char *X = (type == NK_SYMBOL_X) ? "x": + (type == NK_SYMBOL_UNDERSCORE) ? "_": + (type == NK_SYMBOL_PLUS) ? "+": "-"; + struct nk_text text; + text.padding = nk_vec2(0,0); + text.background = background; + text.text = foreground; + nk_widget_text(out, content, X, 1, &text, NK_TEXT_CENTERED, font); + } break; + case NK_SYMBOL_CIRCLE_SOLID: + case NK_SYMBOL_CIRCLE_OUTLINE: + case NK_SYMBOL_RECT_SOLID: + case NK_SYMBOL_RECT_OUTLINE: { + /* simple empty/filled shapes */ + if (type == NK_SYMBOL_RECT_SOLID || type == NK_SYMBOL_RECT_OUTLINE) { + nk_fill_rect(out, content, 0, foreground); + if (type == NK_SYMBOL_RECT_OUTLINE) + nk_fill_rect(out, nk_shrink_rect(content, border_width), 0, background); + } else { + nk_fill_circle(out, content, foreground); + if (type == NK_SYMBOL_CIRCLE_OUTLINE) + nk_fill_circle(out, nk_shrink_rect(content, 1), background); + } + } break; + case NK_SYMBOL_TRIANGLE_UP: + case NK_SYMBOL_TRIANGLE_DOWN: + case NK_SYMBOL_TRIANGLE_LEFT: + case NK_SYMBOL_TRIANGLE_RIGHT: { + enum nk_heading heading; + struct nk_vec2 points[3]; + heading = (type == NK_SYMBOL_TRIANGLE_RIGHT) ? NK_RIGHT : + (type == NK_SYMBOL_TRIANGLE_LEFT) ? NK_LEFT: + (type == NK_SYMBOL_TRIANGLE_UP) ? NK_UP: NK_DOWN; + nk_triangle_from_direction(points, content, 0, 0, heading); + nk_fill_triangle(out, points[0].x, points[0].y, points[1].x, points[1].y, + points[2].x, points[2].y, foreground); + } break; + default: + case NK_SYMBOL_NONE: + case NK_SYMBOL_MAX: break; + } +} +NK_LIB int +nk_button_behavior(nk_flags *state, struct nk_rect r, + const struct nk_input *i, enum nk_button_behavior behavior) +{ + int ret = 0; + nk_widget_state_reset(state); + if (!i) return 0; + if (nk_input_is_mouse_hovering_rect(i, r)) { + *state = NK_WIDGET_STATE_HOVERED; + if (nk_input_is_mouse_down(i, NK_BUTTON_LEFT)) + *state = NK_WIDGET_STATE_ACTIVE; + if (nk_input_has_mouse_click_in_rect(i, NK_BUTTON_LEFT, r)) { + ret = (behavior != NK_BUTTON_DEFAULT) ? + nk_input_is_mouse_down(i, NK_BUTTON_LEFT): +#ifdef NK_BUTTON_TRIGGER_ON_RELEASE + nk_input_is_mouse_released(i, NK_BUTTON_LEFT); +#else + nk_input_is_mouse_pressed(i, NK_BUTTON_LEFT); +#endif + } + } + if (*state & NK_WIDGET_STATE_HOVER && !nk_input_is_mouse_prev_hovering_rect(i, r)) + *state |= NK_WIDGET_STATE_ENTERED; + else if (nk_input_is_mouse_prev_hovering_rect(i, r)) + *state |= NK_WIDGET_STATE_LEFT; + return ret; +} +NK_LIB const struct nk_style_item* +nk_draw_button(struct nk_command_buffer *out, + const struct nk_rect *bounds, nk_flags state, + const struct nk_style_button *style) +{ + const struct nk_style_item *background; + if (state & NK_WIDGET_STATE_HOVER) + background = &style->hover; + else if (state & NK_WIDGET_STATE_ACTIVED) + background = &style->active; + else background = &style->normal; + + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(out, *bounds, &background->data.image, nk_white); + } else { + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + } + return background; +} +NK_LIB int +nk_do_button(nk_flags *state, struct nk_command_buffer *out, struct nk_rect r, + const struct nk_style_button *style, const struct nk_input *in, + enum nk_button_behavior behavior, struct nk_rect *content) +{ + struct nk_rect bounds; + NK_ASSERT(style); + NK_ASSERT(state); + NK_ASSERT(out); + if (!out || !style) + return nk_false; + + /* calculate button content space */ + content->x = r.x + style->padding.x + style->border + style->rounding; + content->y = r.y + style->padding.y + style->border + style->rounding; + content->w = r.w - (2 * style->padding.x + style->border + style->rounding*2); + content->h = r.h - (2 * style->padding.y + style->border + style->rounding*2); + + /* execute button behavior */ + bounds.x = r.x - style->touch_padding.x; + bounds.y = r.y - style->touch_padding.y; + bounds.w = r.w + 2 * style->touch_padding.x; + bounds.h = r.h + 2 * style->touch_padding.y; + return nk_button_behavior(state, bounds, in, behavior); +} +NK_LIB void +nk_draw_button_text(struct nk_command_buffer *out, + const struct nk_rect *bounds, const struct nk_rect *content, nk_flags state, + const struct nk_style_button *style, const char *txt, int len, + nk_flags text_alignment, const struct nk_user_font *font) +{ + struct nk_text text; + const struct nk_style_item *background; + background = nk_draw_button(out, bounds, state, style); + + /* select correct colors/images */ + if (background->type == NK_STYLE_ITEM_COLOR) + text.background = background->data.color; + else text.background = style->text_background; + if (state & NK_WIDGET_STATE_HOVER) + text.text = style->text_hover; + else if (state & NK_WIDGET_STATE_ACTIVED) + text.text = style->text_active; + else text.text = style->text_normal; + + text.padding = nk_vec2(0,0); + nk_widget_text(out, *content, txt, len, &text, text_alignment, font); +} +NK_LIB int +nk_do_button_text(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect bounds, + const char *string, int len, nk_flags align, enum nk_button_behavior behavior, + const struct nk_style_button *style, const struct nk_input *in, + const struct nk_user_font *font) +{ + struct nk_rect content; + int ret = nk_false; + + NK_ASSERT(state); + NK_ASSERT(style); + NK_ASSERT(out); + NK_ASSERT(string); + NK_ASSERT(font); + if (!out || !style || !font || !string) + return nk_false; + + ret = nk_do_button(state, out, bounds, style, in, behavior, &content); + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_button_text(out, &bounds, &content, *state, style, string, len, align, font); + if (style->draw_end) style->draw_end(out, style->userdata); + return ret; +} +NK_LIB void +nk_draw_button_symbol(struct nk_command_buffer *out, + const struct nk_rect *bounds, const struct nk_rect *content, + nk_flags state, const struct nk_style_button *style, + enum nk_symbol_type type, const struct nk_user_font *font) +{ + struct nk_color sym, bg; + const struct nk_style_item *background; + + /* select correct colors/images */ + background = nk_draw_button(out, bounds, state, style); + if (background->type == NK_STYLE_ITEM_COLOR) + bg = background->data.color; + else bg = style->text_background; + + if (state & NK_WIDGET_STATE_HOVER) + sym = style->text_hover; + else if (state & NK_WIDGET_STATE_ACTIVED) + sym = style->text_active; + else sym = style->text_normal; + nk_draw_symbol(out, type, *content, bg, sym, 1, font); +} +NK_LIB int +nk_do_button_symbol(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect bounds, + enum nk_symbol_type symbol, enum nk_button_behavior behavior, + const struct nk_style_button *style, const struct nk_input *in, + const struct nk_user_font *font) +{ + int ret; + struct nk_rect content; + + NK_ASSERT(state); + NK_ASSERT(style); + NK_ASSERT(font); + NK_ASSERT(out); + if (!out || !style || !font || !state) + return nk_false; + + ret = nk_do_button(state, out, bounds, style, in, behavior, &content); + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_button_symbol(out, &bounds, &content, *state, style, symbol, font); + if (style->draw_end) style->draw_end(out, style->userdata); + return ret; +} +NK_LIB void +nk_draw_button_image(struct nk_command_buffer *out, + const struct nk_rect *bounds, const struct nk_rect *content, + nk_flags state, const struct nk_style_button *style, const struct nk_image *img) +{ + nk_draw_button(out, bounds, state, style); + nk_draw_image(out, *content, img, nk_white); +} +NK_LIB int +nk_do_button_image(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect bounds, + struct nk_image img, enum nk_button_behavior b, + const struct nk_style_button *style, const struct nk_input *in) +{ + int ret; + struct nk_rect content; + + NK_ASSERT(state); + NK_ASSERT(style); + NK_ASSERT(out); + if (!out || !style || !state) + return nk_false; + + ret = nk_do_button(state, out, bounds, style, in, b, &content); + content.x += style->image_padding.x; + content.y += style->image_padding.y; + content.w -= 2 * style->image_padding.x; + content.h -= 2 * style->image_padding.y; + + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_button_image(out, &bounds, &content, *state, style, &img); + if (style->draw_end) style->draw_end(out, style->userdata); + return ret; +} +NK_LIB void +nk_draw_button_text_symbol(struct nk_command_buffer *out, + const struct nk_rect *bounds, const struct nk_rect *label, + const struct nk_rect *symbol, nk_flags state, const struct nk_style_button *style, + const char *str, int len, enum nk_symbol_type type, + const struct nk_user_font *font) +{ + struct nk_color sym; + struct nk_text text; + const struct nk_style_item *background; + + /* select correct background colors/images */ + background = nk_draw_button(out, bounds, state, style); + if (background->type == NK_STYLE_ITEM_COLOR) + text.background = background->data.color; + else text.background = style->text_background; + + /* select correct text colors */ + if (state & NK_WIDGET_STATE_HOVER) { + sym = style->text_hover; + text.text = style->text_hover; + } else if (state & NK_WIDGET_STATE_ACTIVED) { + sym = style->text_active; + text.text = style->text_active; + } else { + sym = style->text_normal; + text.text = style->text_normal; + } + + text.padding = nk_vec2(0,0); + nk_draw_symbol(out, type, *symbol, style->text_background, sym, 0, font); + nk_widget_text(out, *label, str, len, &text, NK_TEXT_CENTERED, font); +} +NK_LIB int +nk_do_button_text_symbol(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect bounds, + enum nk_symbol_type symbol, const char *str, int len, nk_flags align, + enum nk_button_behavior behavior, const struct nk_style_button *style, + const struct nk_user_font *font, const struct nk_input *in) +{ + int ret; + struct nk_rect tri = {0,0,0,0}; + struct nk_rect content; + + NK_ASSERT(style); + NK_ASSERT(out); + NK_ASSERT(font); + if (!out || !style || !font) + return nk_false; + + ret = nk_do_button(state, out, bounds, style, in, behavior, &content); + tri.y = content.y + (content.h/2) - font->height/2; + tri.w = font->height; tri.h = font->height; + if (align & NK_TEXT_ALIGN_LEFT) { + tri.x = (content.x + content.w) - (2 * style->padding.x + tri.w); + tri.x = NK_MAX(tri.x, 0); + } else tri.x = content.x + 2 * style->padding.x; + + /* draw button */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_button_text_symbol(out, &bounds, &content, &tri, + *state, style, str, len, symbol, font); + if (style->draw_end) style->draw_end(out, style->userdata); + return ret; +} +NK_LIB void +nk_draw_button_text_image(struct nk_command_buffer *out, + const struct nk_rect *bounds, const struct nk_rect *label, + const struct nk_rect *image, nk_flags state, const struct nk_style_button *style, + const char *str, int len, const struct nk_user_font *font, + const struct nk_image *img) +{ + struct nk_text text; + const struct nk_style_item *background; + background = nk_draw_button(out, bounds, state, style); + + /* select correct colors */ + if (background->type == NK_STYLE_ITEM_COLOR) + text.background = background->data.color; + else text.background = style->text_background; + if (state & NK_WIDGET_STATE_HOVER) + text.text = style->text_hover; + else if (state & NK_WIDGET_STATE_ACTIVED) + text.text = style->text_active; + else text.text = style->text_normal; + + text.padding = nk_vec2(0,0); + nk_widget_text(out, *label, str, len, &text, NK_TEXT_CENTERED, font); + nk_draw_image(out, *image, img, nk_white); +} +NK_LIB int +nk_do_button_text_image(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect bounds, + struct nk_image img, const char* str, int len, nk_flags align, + enum nk_button_behavior behavior, const struct nk_style_button *style, + const struct nk_user_font *font, const struct nk_input *in) +{ + int ret; + struct nk_rect icon; + struct nk_rect content; + + NK_ASSERT(style); + NK_ASSERT(state); + NK_ASSERT(font); + NK_ASSERT(out); + if (!out || !font || !style || !str) + return nk_false; + + ret = nk_do_button(state, out, bounds, style, in, behavior, &content); + icon.y = bounds.y + style->padding.y; + icon.w = icon.h = bounds.h - 2 * style->padding.y; + if (align & NK_TEXT_ALIGN_LEFT) { + icon.x = (bounds.x + bounds.w) - (2 * style->padding.x + icon.w); + icon.x = NK_MAX(icon.x, 0); + } else icon.x = bounds.x + 2 * style->padding.x; + + icon.x += style->image_padding.x; + icon.y += style->image_padding.y; + icon.w -= 2 * style->image_padding.x; + icon.h -= 2 * style->image_padding.y; + + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_button_text_image(out, &bounds, &content, &icon, *state, style, str, len, font, &img); + if (style->draw_end) style->draw_end(out, style->userdata); + return ret; +} +NK_API void +nk_button_set_behavior(struct nk_context *ctx, enum nk_button_behavior behavior) +{ + NK_ASSERT(ctx); + if (!ctx) return; + ctx->button_behavior = behavior; +} +NK_API int +nk_button_push_behavior(struct nk_context *ctx, enum nk_button_behavior behavior) +{ + struct nk_config_stack_button_behavior *button_stack; + struct nk_config_stack_button_behavior_element *element; + + NK_ASSERT(ctx); + if (!ctx) return 0; + + button_stack = &ctx->stacks.button_behaviors; + NK_ASSERT(button_stack->head < (int)NK_LEN(button_stack->elements)); + if (button_stack->head >= (int)NK_LEN(button_stack->elements)) + return 0; + + element = &button_stack->elements[button_stack->head++]; + element->address = &ctx->button_behavior; + element->old_value = ctx->button_behavior; + ctx->button_behavior = behavior; + return 1; +} +NK_API int +nk_button_pop_behavior(struct nk_context *ctx) +{ + struct nk_config_stack_button_behavior *button_stack; + struct nk_config_stack_button_behavior_element *element; + + NK_ASSERT(ctx); + if (!ctx) return 0; + + button_stack = &ctx->stacks.button_behaviors; + NK_ASSERT(button_stack->head > 0); + if (button_stack->head < 1) + return 0; + + element = &button_stack->elements[--button_stack->head]; + *element->address = element->old_value; + return 1; +} +NK_API int +nk_button_text_styled(struct nk_context *ctx, + const struct nk_style_button *style, const char *title, int len) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(style); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!style || !ctx || !ctx->current || !ctx->current->layout) return 0; + + win = ctx->current; + layout = win->layout; + state = nk_widget(&bounds, ctx); + + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_button_text(&ctx->last_widget_state, &win->buffer, bounds, + title, len, style->text_alignment, ctx->button_behavior, + style, in, ctx->style.font); +} +NK_API int +nk_button_text(struct nk_context *ctx, const char *title, int len) +{ + NK_ASSERT(ctx); + if (!ctx) return 0; + return nk_button_text_styled(ctx, &ctx->style.button, title, len); +} +NK_API int nk_button_label_styled(struct nk_context *ctx, + const struct nk_style_button *style, const char *title) +{ + return nk_button_text_styled(ctx, style, title, nk_strlen(title)); +} +NK_API int nk_button_label(struct nk_context *ctx, const char *title) +{ + return nk_button_text(ctx, title, nk_strlen(title)); +} +NK_API int +nk_button_color(struct nk_context *ctx, struct nk_color color) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + struct nk_style_button button; + + int ret = 0; + struct nk_rect bounds; + struct nk_rect content; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + layout = win->layout; + + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + + button = ctx->style.button; + button.normal = nk_style_item_color(color); + button.hover = nk_style_item_color(color); + button.active = nk_style_item_color(color); + ret = nk_do_button(&ctx->last_widget_state, &win->buffer, bounds, + &button, in, ctx->button_behavior, &content); + nk_draw_button(&win->buffer, &bounds, ctx->last_widget_state, &button); + return ret; +} +NK_API int +nk_button_symbol_styled(struct nk_context *ctx, + const struct nk_style_button *style, enum nk_symbol_type symbol) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + layout = win->layout; + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_button_symbol(&ctx->last_widget_state, &win->buffer, bounds, + symbol, ctx->button_behavior, style, in, ctx->style.font); +} +NK_API int +nk_button_symbol(struct nk_context *ctx, enum nk_symbol_type symbol) +{ + NK_ASSERT(ctx); + if (!ctx) return 0; + return nk_button_symbol_styled(ctx, &ctx->style.button, symbol); +} +NK_API int +nk_button_image_styled(struct nk_context *ctx, const struct nk_style_button *style, + struct nk_image img) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + layout = win->layout; + + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_button_image(&ctx->last_widget_state, &win->buffer, bounds, + img, ctx->button_behavior, style, in); +} +NK_API int +nk_button_image(struct nk_context *ctx, struct nk_image img) +{ + NK_ASSERT(ctx); + if (!ctx) return 0; + return nk_button_image_styled(ctx, &ctx->style.button, img); +} +NK_API int +nk_button_symbol_text_styled(struct nk_context *ctx, + const struct nk_style_button *style, enum nk_symbol_type symbol, + const char *text, int len, nk_flags align) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + layout = win->layout; + + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_button_text_symbol(&ctx->last_widget_state, &win->buffer, bounds, + symbol, text, len, align, ctx->button_behavior, + style, ctx->style.font, in); +} +NK_API int +nk_button_symbol_text(struct nk_context *ctx, enum nk_symbol_type symbol, + const char* text, int len, nk_flags align) +{ + NK_ASSERT(ctx); + if (!ctx) return 0; + return nk_button_symbol_text_styled(ctx, &ctx->style.button, symbol, text, len, align); +} +NK_API int nk_button_symbol_label(struct nk_context *ctx, enum nk_symbol_type symbol, + const char *label, nk_flags align) +{ + return nk_button_symbol_text(ctx, symbol, label, nk_strlen(label), align); +} +NK_API int nk_button_symbol_label_styled(struct nk_context *ctx, + const struct nk_style_button *style, enum nk_symbol_type symbol, + const char *title, nk_flags align) +{ + return nk_button_symbol_text_styled(ctx, style, symbol, title, nk_strlen(title), align); +} +NK_API int +nk_button_image_text_styled(struct nk_context *ctx, + const struct nk_style_button *style, struct nk_image img, const char *text, + int len, nk_flags align) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + layout = win->layout; + + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_button_text_image(&ctx->last_widget_state, &win->buffer, + bounds, img, text, len, align, ctx->button_behavior, + style, ctx->style.font, in); +} +NK_API int +nk_button_image_text(struct nk_context *ctx, struct nk_image img, + const char *text, int len, nk_flags align) +{ + return nk_button_image_text_styled(ctx, &ctx->style.button,img, text, len, align); +} +NK_API int nk_button_image_label(struct nk_context *ctx, struct nk_image img, + const char *label, nk_flags align) +{ + return nk_button_image_text(ctx, img, label, nk_strlen(label), align); +} +NK_API int nk_button_image_label_styled(struct nk_context *ctx, + const struct nk_style_button *style, struct nk_image img, + const char *label, nk_flags text_alignment) +{ + return nk_button_image_text_styled(ctx, style, img, label, nk_strlen(label), text_alignment); +} + + + + + +/* =============================================================== + * + * TOGGLE + * + * ===============================================================*/ +NK_LIB int +nk_toggle_behavior(const struct nk_input *in, struct nk_rect select, + nk_flags *state, int active) +{ + nk_widget_state_reset(state); + if (nk_button_behavior(state, select, in, NK_BUTTON_DEFAULT)) { + *state = NK_WIDGET_STATE_ACTIVE; + active = !active; + } + if (*state & NK_WIDGET_STATE_HOVER && !nk_input_is_mouse_prev_hovering_rect(in, select)) + *state |= NK_WIDGET_STATE_ENTERED; + else if (nk_input_is_mouse_prev_hovering_rect(in, select)) + *state |= NK_WIDGET_STATE_LEFT; + return active; +} +NK_LIB void +nk_draw_checkbox(struct nk_command_buffer *out, + nk_flags state, const struct nk_style_toggle *style, int active, + const struct nk_rect *label, const struct nk_rect *selector, + const struct nk_rect *cursors, const char *string, int len, + const struct nk_user_font *font) +{ + const struct nk_style_item *background; + const struct nk_style_item *cursor; + struct nk_text text; + + /* select correct colors/images */ + if (state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + cursor = &style->cursor_hover; + text.text = style->text_hover; + } else if (state & NK_WIDGET_STATE_ACTIVED) { + background = &style->hover; + cursor = &style->cursor_hover; + text.text = style->text_active; + } else { + background = &style->normal; + cursor = &style->cursor_normal; + text.text = style->text_normal; + } + + /* draw background and cursor */ + if (background->type == NK_STYLE_ITEM_COLOR) { + nk_fill_rect(out, *selector, 0, style->border_color); + nk_fill_rect(out, nk_shrink_rect(*selector, style->border), 0, background->data.color); + } else nk_draw_image(out, *selector, &background->data.image, nk_white); + if (active) { + if (cursor->type == NK_STYLE_ITEM_IMAGE) + nk_draw_image(out, *cursors, &cursor->data.image, nk_white); + else nk_fill_rect(out, *cursors, 0, cursor->data.color); + } + + text.padding.x = 0; + text.padding.y = 0; + text.background = style->text_background; + nk_widget_text(out, *label, string, len, &text, NK_TEXT_LEFT, font); +} +NK_LIB void +nk_draw_option(struct nk_command_buffer *out, + nk_flags state, const struct nk_style_toggle *style, int active, + const struct nk_rect *label, const struct nk_rect *selector, + const struct nk_rect *cursors, const char *string, int len, + const struct nk_user_font *font) +{ + const struct nk_style_item *background; + const struct nk_style_item *cursor; + struct nk_text text; + + /* select correct colors/images */ + if (state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + cursor = &style->cursor_hover; + text.text = style->text_hover; + } else if (state & NK_WIDGET_STATE_ACTIVED) { + background = &style->hover; + cursor = &style->cursor_hover; + text.text = style->text_active; + } else { + background = &style->normal; + cursor = &style->cursor_normal; + text.text = style->text_normal; + } + + /* draw background and cursor */ + if (background->type == NK_STYLE_ITEM_COLOR) { + nk_fill_circle(out, *selector, style->border_color); + nk_fill_circle(out, nk_shrink_rect(*selector, style->border), background->data.color); + } else nk_draw_image(out, *selector, &background->data.image, nk_white); + if (active) { + if (cursor->type == NK_STYLE_ITEM_IMAGE) + nk_draw_image(out, *cursors, &cursor->data.image, nk_white); + else nk_fill_circle(out, *cursors, cursor->data.color); + } + + text.padding.x = 0; + text.padding.y = 0; + text.background = style->text_background; + nk_widget_text(out, *label, string, len, &text, NK_TEXT_LEFT, font); +} +NK_LIB int +nk_do_toggle(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect r, + int *active, const char *str, int len, enum nk_toggle_type type, + const struct nk_style_toggle *style, const struct nk_input *in, + const struct nk_user_font *font) +{ + int was_active; + struct nk_rect bounds; + struct nk_rect select; + struct nk_rect cursor; + struct nk_rect label; + + NK_ASSERT(style); + NK_ASSERT(out); + NK_ASSERT(font); + if (!out || !style || !font || !active) + return 0; + + r.w = NK_MAX(r.w, font->height + 2 * style->padding.x); + r.h = NK_MAX(r.h, font->height + 2 * style->padding.y); + + /* add additional touch padding for touch screen devices */ + bounds.x = r.x - style->touch_padding.x; + bounds.y = r.y - style->touch_padding.y; + bounds.w = r.w + 2 * style->touch_padding.x; + bounds.h = r.h + 2 * style->touch_padding.y; + + /* calculate the selector space */ + select.w = font->height; + select.h = select.w; + select.y = r.y + r.h/2.0f - select.h/2.0f; + select.x = r.x; + + /* calculate the bounds of the cursor inside the selector */ + cursor.x = select.x + style->padding.x + style->border; + cursor.y = select.y + style->padding.y + style->border; + cursor.w = select.w - (2 * style->padding.x + 2 * style->border); + cursor.h = select.h - (2 * style->padding.y + 2 * style->border); + + /* label behind the selector */ + label.x = select.x + select.w + style->spacing; + label.y = select.y; + label.w = NK_MAX(r.x + r.w, label.x) - label.x; + label.h = select.w; + + /* update selector */ + was_active = *active; + *active = nk_toggle_behavior(in, bounds, state, *active); + + /* draw selector */ + if (style->draw_begin) + style->draw_begin(out, style->userdata); + if (type == NK_TOGGLE_CHECK) { + nk_draw_checkbox(out, *state, style, *active, &label, &select, &cursor, str, len, font); + } else { + nk_draw_option(out, *state, style, *active, &label, &select, &cursor, str, len, font); + } + if (style->draw_end) + style->draw_end(out, style->userdata); + return (was_active != *active); +} +/*---------------------------------------------------------------- + * + * CHECKBOX + * + * --------------------------------------------------------------*/ +NK_API int +nk_check_text(struct nk_context *ctx, const char *text, int len, int active) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + const struct nk_style *style; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return active; + + win = ctx->current; + style = &ctx->style; + layout = win->layout; + + state = nk_widget(&bounds, ctx); + if (!state) return active; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + nk_do_toggle(&ctx->last_widget_state, &win->buffer, bounds, &active, + text, len, NK_TOGGLE_CHECK, &style->checkbox, in, style->font); + return active; +} +NK_API unsigned int +nk_check_flags_text(struct nk_context *ctx, const char *text, int len, + unsigned int flags, unsigned int value) +{ + int old_active; + NK_ASSERT(ctx); + NK_ASSERT(text); + if (!ctx || !text) return flags; + old_active = (int)((flags & value) & value); + if (nk_check_text(ctx, text, len, old_active)) + flags |= value; + else flags &= ~value; + return flags; +} +NK_API int +nk_checkbox_text(struct nk_context *ctx, const char *text, int len, int *active) +{ + int old_val; + NK_ASSERT(ctx); + NK_ASSERT(text); + NK_ASSERT(active); + if (!ctx || !text || !active) return 0; + old_val = *active; + *active = nk_check_text(ctx, text, len, *active); + return old_val != *active; +} +NK_API int +nk_checkbox_flags_text(struct nk_context *ctx, const char *text, int len, + unsigned int *flags, unsigned int value) +{ + int active; + NK_ASSERT(ctx); + NK_ASSERT(text); + NK_ASSERT(flags); + if (!ctx || !text || !flags) return 0; + + active = (int)((*flags & value) & value); + if (nk_checkbox_text(ctx, text, len, &active)) { + if (active) *flags |= value; + else *flags &= ~value; + return 1; + } + return 0; +} +NK_API int nk_check_label(struct nk_context *ctx, const char *label, int active) +{ + return nk_check_text(ctx, label, nk_strlen(label), active); +} +NK_API unsigned int nk_check_flags_label(struct nk_context *ctx, const char *label, + unsigned int flags, unsigned int value) +{ + return nk_check_flags_text(ctx, label, nk_strlen(label), flags, value); +} +NK_API int nk_checkbox_label(struct nk_context *ctx, const char *label, int *active) +{ + return nk_checkbox_text(ctx, label, nk_strlen(label), active); +} +NK_API int nk_checkbox_flags_label(struct nk_context *ctx, const char *label, + unsigned int *flags, unsigned int value) +{ + return nk_checkbox_flags_text(ctx, label, nk_strlen(label), flags, value); +} +/*---------------------------------------------------------------- + * + * OPTION + * + * --------------------------------------------------------------*/ +NK_API int +nk_option_text(struct nk_context *ctx, const char *text, int len, int is_active) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + const struct nk_style *style; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return is_active; + + win = ctx->current; + style = &ctx->style; + layout = win->layout; + + state = nk_widget(&bounds, ctx); + if (!state) return (int)state; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + nk_do_toggle(&ctx->last_widget_state, &win->buffer, bounds, &is_active, + text, len, NK_TOGGLE_OPTION, &style->option, in, style->font); + return is_active; +} +NK_API int +nk_radio_text(struct nk_context *ctx, const char *text, int len, int *active) +{ + int old_value; + NK_ASSERT(ctx); + NK_ASSERT(text); + NK_ASSERT(active); + if (!ctx || !text || !active) return 0; + old_value = *active; + *active = nk_option_text(ctx, text, len, old_value); + return old_value != *active; +} +NK_API int +nk_option_label(struct nk_context *ctx, const char *label, int active) +{ + return nk_option_text(ctx, label, nk_strlen(label), active); +} +NK_API int +nk_radio_label(struct nk_context *ctx, const char *label, int *active) +{ + return nk_radio_text(ctx, label, nk_strlen(label), active); +} + + + + + +/* =============================================================== + * + * SELECTABLE + * + * ===============================================================*/ +NK_LIB void +nk_draw_selectable(struct nk_command_buffer *out, + nk_flags state, const struct nk_style_selectable *style, int active, + const struct nk_rect *bounds, + const struct nk_rect *icon, const struct nk_image *img, enum nk_symbol_type sym, + const char *string, int len, nk_flags align, const struct nk_user_font *font) +{ + const struct nk_style_item *background; + struct nk_text text; + text.padding = style->padding; + + /* select correct colors/images */ + if (!active) { + if (state & NK_WIDGET_STATE_ACTIVED) { + background = &style->pressed; + text.text = style->text_pressed; + } else if (state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + text.text = style->text_hover; + } else { + background = &style->normal; + text.text = style->text_normal; + } + } else { + if (state & NK_WIDGET_STATE_ACTIVED) { + background = &style->pressed_active; + text.text = style->text_pressed_active; + } else if (state & NK_WIDGET_STATE_HOVER) { + background = &style->hover_active; + text.text = style->text_hover_active; + } else { + background = &style->normal_active; + text.text = style->text_normal_active; + } + } + /* draw selectable background and text */ + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(out, *bounds, &background->data.image, nk_white); + text.background = nk_rgba(0,0,0,0); + } else { + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + text.background = background->data.color; + } + if (icon) { + if (img) nk_draw_image(out, *icon, img, nk_white); + else nk_draw_symbol(out, sym, *icon, text.background, text.text, 1, font); + } + nk_widget_text(out, *bounds, string, len, &text, align, font); +} +NK_LIB int +nk_do_selectable(nk_flags *state, struct nk_command_buffer *out, + struct nk_rect bounds, const char *str, int len, nk_flags align, int *value, + const struct nk_style_selectable *style, const struct nk_input *in, + const struct nk_user_font *font) +{ + int old_value; + struct nk_rect touch; + + NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(str); + NK_ASSERT(len); + NK_ASSERT(value); + NK_ASSERT(style); + NK_ASSERT(font); + + if (!state || !out || !str || !len || !value || !style || !font) return 0; + old_value = *value; + + /* remove padding */ + touch.x = bounds.x - style->touch_padding.x; + touch.y = bounds.y - style->touch_padding.y; + touch.w = bounds.w + style->touch_padding.x * 2; + touch.h = bounds.h + style->touch_padding.y * 2; + + /* update button */ + if (nk_button_behavior(state, touch, in, NK_BUTTON_DEFAULT)) + *value = !(*value); + + /* draw selectable */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_selectable(out, *state, style, *value, &bounds, 0,0,NK_SYMBOL_NONE, str, len, align, font); + if (style->draw_end) style->draw_end(out, style->userdata); + return old_value != *value; +} +NK_LIB int +nk_do_selectable_image(nk_flags *state, struct nk_command_buffer *out, + struct nk_rect bounds, const char *str, int len, nk_flags align, int *value, + const struct nk_image *img, const struct nk_style_selectable *style, + const struct nk_input *in, const struct nk_user_font *font) +{ + int old_value; + struct nk_rect touch; + struct nk_rect icon; + + NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(str); + NK_ASSERT(len); + NK_ASSERT(value); + NK_ASSERT(style); + NK_ASSERT(font); + + if (!state || !out || !str || !len || !value || !style || !font) return 0; + old_value = *value; + + /* toggle behavior */ + touch.x = bounds.x - style->touch_padding.x; + touch.y = bounds.y - style->touch_padding.y; + touch.w = bounds.w + style->touch_padding.x * 2; + touch.h = bounds.h + style->touch_padding.y * 2; + if (nk_button_behavior(state, touch, in, NK_BUTTON_DEFAULT)) + *value = !(*value); + + icon.y = bounds.y + style->padding.y; + icon.w = icon.h = bounds.h - 2 * style->padding.y; + if (align & NK_TEXT_ALIGN_LEFT) { + icon.x = (bounds.x + bounds.w) - (2 * style->padding.x + icon.w); + icon.x = NK_MAX(icon.x, 0); + } else icon.x = bounds.x + 2 * style->padding.x; + + icon.x += style->image_padding.x; + icon.y += style->image_padding.y; + icon.w -= 2 * style->image_padding.x; + icon.h -= 2 * style->image_padding.y; + + /* draw selectable */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_selectable(out, *state, style, *value, &bounds, &icon, img, NK_SYMBOL_NONE, str, len, align, font); + if (style->draw_end) style->draw_end(out, style->userdata); + return old_value != *value; +} +NK_LIB int +nk_do_selectable_symbol(nk_flags *state, struct nk_command_buffer *out, + struct nk_rect bounds, const char *str, int len, nk_flags align, int *value, + enum nk_symbol_type sym, const struct nk_style_selectable *style, + const struct nk_input *in, const struct nk_user_font *font) +{ + int old_value; + struct nk_rect touch; + struct nk_rect icon; + + NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(str); + NK_ASSERT(len); + NK_ASSERT(value); + NK_ASSERT(style); + NK_ASSERT(font); + + if (!state || !out || !str || !len || !value || !style || !font) return 0; + old_value = *value; + + /* toggle behavior */ + touch.x = bounds.x - style->touch_padding.x; + touch.y = bounds.y - style->touch_padding.y; + touch.w = bounds.w + style->touch_padding.x * 2; + touch.h = bounds.h + style->touch_padding.y * 2; + if (nk_button_behavior(state, touch, in, NK_BUTTON_DEFAULT)) + *value = !(*value); + + icon.y = bounds.y + style->padding.y; + icon.w = icon.h = bounds.h - 2 * style->padding.y; + if (align & NK_TEXT_ALIGN_LEFT) { + icon.x = (bounds.x + bounds.w) - (2 * style->padding.x + icon.w); + icon.x = NK_MAX(icon.x, 0); + } else icon.x = bounds.x + 2 * style->padding.x; + + icon.x += style->image_padding.x; + icon.y += style->image_padding.y; + icon.w -= 2 * style->image_padding.x; + icon.h -= 2 * style->image_padding.y; + + /* draw selectable */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_selectable(out, *state, style, *value, &bounds, &icon, 0, sym, str, len, align, font); + if (style->draw_end) style->draw_end(out, style->userdata); + return old_value != *value; +} + +NK_API int +nk_selectable_text(struct nk_context *ctx, const char *str, int len, + nk_flags align, int *value) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + const struct nk_style *style; + + enum nk_widget_layout_states state; + struct nk_rect bounds; + + NK_ASSERT(ctx); + NK_ASSERT(value); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !value) + return 0; + + win = ctx->current; + layout = win->layout; + style = &ctx->style; + + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_selectable(&ctx->last_widget_state, &win->buffer, bounds, + str, len, align, value, &style->selectable, in, style->font); +} +NK_API int +nk_selectable_image_text(struct nk_context *ctx, struct nk_image img, + const char *str, int len, nk_flags align, int *value) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + const struct nk_style *style; + + enum nk_widget_layout_states state; + struct nk_rect bounds; + + NK_ASSERT(ctx); + NK_ASSERT(value); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !value) + return 0; + + win = ctx->current; + layout = win->layout; + style = &ctx->style; + + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_selectable_image(&ctx->last_widget_state, &win->buffer, bounds, + str, len, align, value, &img, &style->selectable, in, style->font); +} +NK_API int +nk_selectable_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, + const char *str, int len, nk_flags align, int *value) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_input *in; + const struct nk_style *style; + + enum nk_widget_layout_states state; + struct nk_rect bounds; + + NK_ASSERT(ctx); + NK_ASSERT(value); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !value) + return 0; + + win = ctx->current; + layout = win->layout; + style = &ctx->style; + + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_selectable_symbol(&ctx->last_widget_state, &win->buffer, bounds, + str, len, align, value, sym, &style->selectable, in, style->font); +} +NK_API int +nk_selectable_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, + const char *title, nk_flags align, int *value) +{ + return nk_selectable_symbol_text(ctx, sym, title, nk_strlen(title), align, value); +} +NK_API int nk_select_text(struct nk_context *ctx, const char *str, int len, + nk_flags align, int value) +{ + nk_selectable_text(ctx, str, len, align, &value);return value; +} +NK_API int nk_selectable_label(struct nk_context *ctx, const char *str, nk_flags align, int *value) +{ + return nk_selectable_text(ctx, str, nk_strlen(str), align, value); +} +NK_API int nk_selectable_image_label(struct nk_context *ctx,struct nk_image img, + const char *str, nk_flags align, int *value) +{ + return nk_selectable_image_text(ctx, img, str, nk_strlen(str), align, value); +} +NK_API int nk_select_label(struct nk_context *ctx, const char *str, nk_flags align, int value) +{ + nk_selectable_text(ctx, str, nk_strlen(str), align, &value);return value; +} +NK_API int nk_select_image_label(struct nk_context *ctx, struct nk_image img, + const char *str, nk_flags align, int value) +{ + nk_selectable_image_text(ctx, img, str, nk_strlen(str), align, &value);return value; +} +NK_API int nk_select_image_text(struct nk_context *ctx, struct nk_image img, + const char *str, int len, nk_flags align, int value) +{ + nk_selectable_image_text(ctx, img, str, len, align, &value);return value; +} +NK_API int +nk_select_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, + const char *title, int title_len, nk_flags align, int value) +{ + nk_selectable_symbol_text(ctx, sym, title, title_len, align, &value);return value; +} +NK_API int +nk_select_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, + const char *title, nk_flags align, int value) +{ + return nk_select_symbol_text(ctx, sym, title, nk_strlen(title), align, value); +} + + + + + +/* =============================================================== + * + * SLIDER + * + * ===============================================================*/ +NK_LIB float +nk_slider_behavior(nk_flags *state, struct nk_rect *logical_cursor, + struct nk_rect *visual_cursor, struct nk_input *in, + struct nk_rect bounds, float slider_min, float slider_max, float slider_value, + float slider_step, float slider_steps) +{ + int left_mouse_down; + int left_mouse_click_in_cursor; + + /* check if visual cursor is being dragged */ + nk_widget_state_reset(state); + left_mouse_down = in && in->mouse.buttons[NK_BUTTON_LEFT].down; + left_mouse_click_in_cursor = in && nk_input_has_mouse_click_down_in_rect(in, + NK_BUTTON_LEFT, *visual_cursor, nk_true); + + if (left_mouse_down && left_mouse_click_in_cursor) { + float ratio = 0; + const float d = in->mouse.pos.x - (visual_cursor->x+visual_cursor->w*0.5f); + const float pxstep = bounds.w / slider_steps; + + /* only update value if the next slider step is reached */ + *state = NK_WIDGET_STATE_ACTIVE; + if (NK_ABS(d) >= pxstep) { + const float steps = (float)((int)(NK_ABS(d) / pxstep)); + slider_value += (d > 0) ? (slider_step*steps) : -(slider_step*steps); + slider_value = NK_CLAMP(slider_min, slider_value, slider_max); + ratio = (slider_value - slider_min)/slider_step; + logical_cursor->x = bounds.x + (logical_cursor->w * ratio); + in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.x = logical_cursor->x; + } + } + + /* slider widget state */ + if (nk_input_is_mouse_hovering_rect(in, bounds)) + *state = NK_WIDGET_STATE_HOVERED; + if (*state & NK_WIDGET_STATE_HOVER && + !nk_input_is_mouse_prev_hovering_rect(in, bounds)) + *state |= NK_WIDGET_STATE_ENTERED; + else if (nk_input_is_mouse_prev_hovering_rect(in, bounds)) + *state |= NK_WIDGET_STATE_LEFT; + return slider_value; +} +NK_LIB void +nk_draw_slider(struct nk_command_buffer *out, nk_flags state, + const struct nk_style_slider *style, const struct nk_rect *bounds, + const struct nk_rect *visual_cursor, float min, float value, float max) +{ + struct nk_rect fill; + struct nk_rect bar; + const struct nk_style_item *background; + + /* select correct slider images/colors */ + struct nk_color bar_color; + const struct nk_style_item *cursor; + + NK_UNUSED(min); + NK_UNUSED(max); + NK_UNUSED(value); + + if (state & NK_WIDGET_STATE_ACTIVED) { + background = &style->active; + bar_color = style->bar_active; + cursor = &style->cursor_active; + } else if (state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + bar_color = style->bar_hover; + cursor = &style->cursor_hover; + } else { + background = &style->normal; + bar_color = style->bar_normal; + cursor = &style->cursor_normal; + } + /* calculate slider background bar */ + bar.x = bounds->x; + bar.y = (visual_cursor->y + visual_cursor->h/2) - bounds->h/12; + bar.w = bounds->w; + bar.h = bounds->h/6; + + /* filled background bar style */ + fill.w = (visual_cursor->x + (visual_cursor->w/2.0f)) - bar.x; + fill.x = bar.x; + fill.y = bar.y; + fill.h = bar.h; + + /* draw background */ + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(out, *bounds, &background->data.image, nk_white); + } else { + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + } + + /* draw slider bar */ + nk_fill_rect(out, bar, style->rounding, bar_color); + nk_fill_rect(out, fill, style->rounding, style->bar_filled); + + /* draw cursor */ + if (cursor->type == NK_STYLE_ITEM_IMAGE) + nk_draw_image(out, *visual_cursor, &cursor->data.image, nk_white); + else nk_fill_circle(out, *visual_cursor, cursor->data.color); +} +NK_LIB float +nk_do_slider(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect bounds, + float min, float val, float max, float step, + const struct nk_style_slider *style, struct nk_input *in, + const struct nk_user_font *font) +{ + float slider_range; + float slider_min; + float slider_max; + float slider_value; + float slider_steps; + float cursor_offset; + + struct nk_rect visual_cursor; + struct nk_rect logical_cursor; + + NK_ASSERT(style); + NK_ASSERT(out); + if (!out || !style) + return 0; + + /* remove padding from slider bounds */ + bounds.x = bounds.x + style->padding.x; + bounds.y = bounds.y + style->padding.y; + bounds.h = NK_MAX(bounds.h, 2*style->padding.y); + bounds.w = NK_MAX(bounds.w, 2*style->padding.x + style->cursor_size.x); + bounds.w -= 2 * style->padding.x; + bounds.h -= 2 * style->padding.y; + + /* optional buttons */ + if (style->show_buttons) { + nk_flags ws; + struct nk_rect button; + button.y = bounds.y; + button.w = bounds.h; + button.h = bounds.h; + + /* decrement button */ + button.x = bounds.x; + if (nk_do_button_symbol(&ws, out, button, style->dec_symbol, NK_BUTTON_DEFAULT, + &style->dec_button, in, font)) + val -= step; + + /* increment button */ + button.x = (bounds.x + bounds.w) - button.w; + if (nk_do_button_symbol(&ws, out, button, style->inc_symbol, NK_BUTTON_DEFAULT, + &style->inc_button, in, font)) + val += step; + + bounds.x = bounds.x + button.w + style->spacing.x; + bounds.w = bounds.w - (2*button.w + 2*style->spacing.x); + } + + /* remove one cursor size to support visual cursor */ + bounds.x += style->cursor_size.x*0.5f; + bounds.w -= style->cursor_size.x; + + /* make sure the provided values are correct */ + slider_max = NK_MAX(min, max); + slider_min = NK_MIN(min, max); + slider_value = NK_CLAMP(slider_min, val, slider_max); + slider_range = slider_max - slider_min; + slider_steps = slider_range / step; + cursor_offset = (slider_value - slider_min) / step; + + /* calculate cursor + Basically you have two cursors. One for visual representation and interaction + and one for updating the actual cursor value. */ + logical_cursor.h = bounds.h; + logical_cursor.w = bounds.w / slider_steps; + logical_cursor.x = bounds.x + (logical_cursor.w * cursor_offset); + logical_cursor.y = bounds.y; + + visual_cursor.h = style->cursor_size.y; + visual_cursor.w = style->cursor_size.x; + visual_cursor.y = (bounds.y + bounds.h*0.5f) - visual_cursor.h*0.5f; + visual_cursor.x = logical_cursor.x - visual_cursor.w*0.5f; + + slider_value = nk_slider_behavior(state, &logical_cursor, &visual_cursor, + in, bounds, slider_min, slider_max, slider_value, step, slider_steps); + visual_cursor.x = logical_cursor.x - visual_cursor.w*0.5f; + + /* draw slider */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_slider(out, *state, style, &bounds, &visual_cursor, slider_min, slider_value, slider_max); + if (style->draw_end) style->draw_end(out, style->userdata); + return slider_value; +} +NK_API int +nk_slider_float(struct nk_context *ctx, float min_value, float *value, float max_value, + float value_step) +{ + struct nk_window *win; + struct nk_panel *layout; + struct nk_input *in; + const struct nk_style *style; + + int ret = 0; + float old_value; + struct nk_rect bounds; + enum nk_widget_layout_states state; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + NK_ASSERT(value); + if (!ctx || !ctx->current || !ctx->current->layout || !value) + return ret; + + win = ctx->current; + style = &ctx->style; + layout = win->layout; + + state = nk_widget(&bounds, ctx); + if (!state) return ret; + in = (/*state == NK_WIDGET_ROM || */ layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + + old_value = *value; + *value = nk_do_slider(&ctx->last_widget_state, &win->buffer, bounds, min_value, + old_value, max_value, value_step, &style->slider, in, style->font); + return (old_value > *value || old_value < *value); +} +NK_API float +nk_slide_float(struct nk_context *ctx, float min, float val, float max, float step) +{ + nk_slider_float(ctx, min, &val, max, step); return val; +} +NK_API int +nk_slide_int(struct nk_context *ctx, int min, int val, int max, int step) +{ + float value = (float)val; + nk_slider_float(ctx, (float)min, &value, (float)max, (float)step); + return (int)value; +} +NK_API int +nk_slider_int(struct nk_context *ctx, int min, int *val, int max, int step) +{ + int ret; + float value = (float)*val; + ret = nk_slider_float(ctx, (float)min, &value, (float)max, (float)step); + *val = (int)value; + return ret; +} + + + + + +/* =============================================================== + * + * PROGRESS + * + * ===============================================================*/ +NK_LIB nk_size +nk_progress_behavior(nk_flags *state, struct nk_input *in, + struct nk_rect r, struct nk_rect cursor, nk_size max, nk_size value, int modifiable) +{ + int left_mouse_down = 0; + int left_mouse_click_in_cursor = 0; + + nk_widget_state_reset(state); + if (!in || !modifiable) return value; + left_mouse_down = in && in->mouse.buttons[NK_BUTTON_LEFT].down; + left_mouse_click_in_cursor = in && nk_input_has_mouse_click_down_in_rect(in, + NK_BUTTON_LEFT, cursor, nk_true); + if (nk_input_is_mouse_hovering_rect(in, r)) + *state = NK_WIDGET_STATE_HOVERED; + + if (in && left_mouse_down && left_mouse_click_in_cursor) { + if (left_mouse_down && left_mouse_click_in_cursor) { + float ratio = NK_MAX(0, (float)(in->mouse.pos.x - cursor.x)) / (float)cursor.w; + value = (nk_size)NK_CLAMP(0, (float)max * ratio, (float)max); + in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.x = cursor.x + cursor.w/2.0f; + *state |= NK_WIDGET_STATE_ACTIVE; + } + } + /* set progressbar widget state */ + if (*state & NK_WIDGET_STATE_HOVER && !nk_input_is_mouse_prev_hovering_rect(in, r)) + *state |= NK_WIDGET_STATE_ENTERED; + else if (nk_input_is_mouse_prev_hovering_rect(in, r)) + *state |= NK_WIDGET_STATE_LEFT; + return value; +} +NK_LIB void +nk_draw_progress(struct nk_command_buffer *out, nk_flags state, + const struct nk_style_progress *style, const struct nk_rect *bounds, + const struct nk_rect *scursor, nk_size value, nk_size max) +{ + const struct nk_style_item *background; + const struct nk_style_item *cursor; + + NK_UNUSED(max); + NK_UNUSED(value); + + /* select correct colors/images to draw */ + if (state & NK_WIDGET_STATE_ACTIVED) { + background = &style->active; + cursor = &style->cursor_active; + } else if (state & NK_WIDGET_STATE_HOVER){ + background = &style->hover; + cursor = &style->cursor_hover; + } else { + background = &style->normal; + cursor = &style->cursor_normal; + } + + /* draw background */ + if (background->type == NK_STYLE_ITEM_COLOR) { + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + } else nk_draw_image(out, *bounds, &background->data.image, nk_white); + + /* draw cursor */ + if (cursor->type == NK_STYLE_ITEM_COLOR) { + nk_fill_rect(out, *scursor, style->rounding, cursor->data.color); + nk_stroke_rect(out, *scursor, style->rounding, style->border, style->border_color); + } else nk_draw_image(out, *scursor, &cursor->data.image, nk_white); +} +NK_LIB nk_size +nk_do_progress(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect bounds, + nk_size value, nk_size max, int modifiable, + const struct nk_style_progress *style, struct nk_input *in) +{ + float prog_scale; + nk_size prog_value; + struct nk_rect cursor; + + NK_ASSERT(style); + NK_ASSERT(out); + if (!out || !style) return 0; + + /* calculate progressbar cursor */ + cursor.w = NK_MAX(bounds.w, 2 * style->padding.x + 2 * style->border); + cursor.h = NK_MAX(bounds.h, 2 * style->padding.y + 2 * style->border); + cursor = nk_pad_rect(bounds, nk_vec2(style->padding.x + style->border, style->padding.y + style->border)); + prog_scale = (float)value / (float)max; + + /* update progressbar */ + prog_value = NK_MIN(value, max); + prog_value = nk_progress_behavior(state, in, bounds, cursor,max, prog_value, modifiable); + cursor.w = cursor.w * prog_scale; + + /* draw progressbar */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_progress(out, *state, style, &bounds, &cursor, value, max); + if (style->draw_end) style->draw_end(out, style->userdata); + return prog_value; +} +NK_API int +nk_progress(struct nk_context *ctx, nk_size *cur, nk_size max, int is_modifyable) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_style *style; + struct nk_input *in; + + struct nk_rect bounds; + enum nk_widget_layout_states state; + nk_size old_value; + + NK_ASSERT(ctx); + NK_ASSERT(cur); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !cur) + return 0; + + win = ctx->current; + style = &ctx->style; + layout = win->layout; + state = nk_widget(&bounds, ctx); + if (!state) return 0; + + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + old_value = *cur; + *cur = nk_do_progress(&ctx->last_widget_state, &win->buffer, bounds, + *cur, max, is_modifyable, &style->progress, in); + return (*cur != old_value); +} +NK_API nk_size +nk_prog(struct nk_context *ctx, nk_size cur, nk_size max, int modifyable) +{ + nk_progress(ctx, &cur, max, modifyable); + return cur; +} + + + + + +/* =============================================================== + * + * SCROLLBAR + * + * ===============================================================*/ +NK_LIB float +nk_scrollbar_behavior(nk_flags *state, struct nk_input *in, + int has_scrolling, const struct nk_rect *scroll, + const struct nk_rect *cursor, const struct nk_rect *empty0, + const struct nk_rect *empty1, float scroll_offset, + float target, float scroll_step, enum nk_orientation o) +{ + nk_flags ws = 0; + int left_mouse_down; + int left_mouse_clicked; + int left_mouse_click_in_cursor; + float scroll_delta; + + nk_widget_state_reset(state); + if (!in) return scroll_offset; + + left_mouse_down = in->mouse.buttons[NK_BUTTON_LEFT].down; + left_mouse_clicked = in->mouse.buttons[NK_BUTTON_LEFT].clicked; + left_mouse_click_in_cursor = nk_input_has_mouse_click_down_in_rect(in, + NK_BUTTON_LEFT, *cursor, nk_true); + if (nk_input_is_mouse_hovering_rect(in, *scroll)) + *state = NK_WIDGET_STATE_HOVERED; + + scroll_delta = (o == NK_VERTICAL) ? in->mouse.scroll_delta.y: in->mouse.scroll_delta.x; + if (left_mouse_down && left_mouse_click_in_cursor && !left_mouse_clicked) { + /* update cursor by mouse dragging */ + float pixel, delta; + *state = NK_WIDGET_STATE_ACTIVE; + if (o == NK_VERTICAL) { + float cursor_y; + pixel = in->mouse.delta.y; + delta = (pixel / scroll->h) * target; + scroll_offset = NK_CLAMP(0, scroll_offset + delta, target - scroll->h); + cursor_y = scroll->y + ((scroll_offset/target) * scroll->h); + in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.y = cursor_y + cursor->h/2.0f; + } else { + float cursor_x; + pixel = in->mouse.delta.x; + delta = (pixel / scroll->w) * target; + scroll_offset = NK_CLAMP(0, scroll_offset + delta, target - scroll->w); + cursor_x = scroll->x + ((scroll_offset/target) * scroll->w); + in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.x = cursor_x + cursor->w/2.0f; + } + } else if ((nk_input_is_key_pressed(in, NK_KEY_SCROLL_UP) && o == NK_VERTICAL && has_scrolling)|| + nk_button_behavior(&ws, *empty0, in, NK_BUTTON_DEFAULT)) { + /* scroll page up by click on empty space or shortcut */ + if (o == NK_VERTICAL) + scroll_offset = NK_MAX(0, scroll_offset - scroll->h); + else scroll_offset = NK_MAX(0, scroll_offset - scroll->w); + } else if ((nk_input_is_key_pressed(in, NK_KEY_SCROLL_DOWN) && o == NK_VERTICAL && has_scrolling) || + nk_button_behavior(&ws, *empty1, in, NK_BUTTON_DEFAULT)) { + /* scroll page down by click on empty space or shortcut */ + if (o == NK_VERTICAL) + scroll_offset = NK_MIN(scroll_offset + scroll->h, target - scroll->h); + else scroll_offset = NK_MIN(scroll_offset + scroll->w, target - scroll->w); + } else if (has_scrolling) { + if ((scroll_delta < 0 || (scroll_delta > 0))) { + /* update cursor by mouse scrolling */ + scroll_offset = scroll_offset + scroll_step * (-scroll_delta); + if (o == NK_VERTICAL) + scroll_offset = NK_CLAMP(0, scroll_offset, target - scroll->h); + else scroll_offset = NK_CLAMP(0, scroll_offset, target - scroll->w); + } else if (nk_input_is_key_pressed(in, NK_KEY_SCROLL_START)) { + /* update cursor to the beginning */ + if (o == NK_VERTICAL) scroll_offset = 0; + } else if (nk_input_is_key_pressed(in, NK_KEY_SCROLL_END)) { + /* update cursor to the end */ + if (o == NK_VERTICAL) scroll_offset = target - scroll->h; + } + } + if (*state & NK_WIDGET_STATE_HOVER && !nk_input_is_mouse_prev_hovering_rect(in, *scroll)) + *state |= NK_WIDGET_STATE_ENTERED; + else if (nk_input_is_mouse_prev_hovering_rect(in, *scroll)) + *state |= NK_WIDGET_STATE_LEFT; + return scroll_offset; +} +NK_LIB void +nk_draw_scrollbar(struct nk_command_buffer *out, nk_flags state, + const struct nk_style_scrollbar *style, const struct nk_rect *bounds, + const struct nk_rect *scroll) +{ + const struct nk_style_item *background; + const struct nk_style_item *cursor; + + /* select correct colors/images to draw */ + if (state & NK_WIDGET_STATE_ACTIVED) { + background = &style->active; + cursor = &style->cursor_active; + } else if (state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + cursor = &style->cursor_hover; + } else { + background = &style->normal; + cursor = &style->cursor_normal; + } + + /* draw background */ + if (background->type == NK_STYLE_ITEM_COLOR) { + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + } else { + nk_draw_image(out, *bounds, &background->data.image, nk_white); + } + + /* draw cursor */ + if (cursor->type == NK_STYLE_ITEM_COLOR) { + nk_fill_rect(out, *scroll, style->rounding_cursor, cursor->data.color); + nk_stroke_rect(out, *scroll, style->rounding_cursor, style->border_cursor, style->cursor_border_color); + } else nk_draw_image(out, *scroll, &cursor->data.image, nk_white); +} +NK_LIB float +nk_do_scrollbarv(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, + float offset, float target, float step, float button_pixel_inc, + const struct nk_style_scrollbar *style, struct nk_input *in, + const struct nk_user_font *font) +{ + struct nk_rect empty_north; + struct nk_rect empty_south; + struct nk_rect cursor; + + float scroll_step; + float scroll_offset; + float scroll_off; + float scroll_ratio; + + NK_ASSERT(out); + NK_ASSERT(style); + NK_ASSERT(state); + if (!out || !style) return 0; + + scroll.w = NK_MAX(scroll.w, 1); + scroll.h = NK_MAX(scroll.h, 0); + if (target <= scroll.h) return 0; + + /* optional scrollbar buttons */ + if (style->show_buttons) { + nk_flags ws; + float scroll_h; + struct nk_rect button; + + button.x = scroll.x; + button.w = scroll.w; + button.h = scroll.w; + + scroll_h = NK_MAX(scroll.h - 2 * button.h,0); + scroll_step = NK_MIN(step, button_pixel_inc); + + /* decrement button */ + button.y = scroll.y; + if (nk_do_button_symbol(&ws, out, button, style->dec_symbol, + NK_BUTTON_REPEATER, &style->dec_button, in, font)) + offset = offset - scroll_step; + + /* increment button */ + button.y = scroll.y + scroll.h - button.h; + if (nk_do_button_symbol(&ws, out, button, style->inc_symbol, + NK_BUTTON_REPEATER, &style->inc_button, in, font)) + offset = offset + scroll_step; + + scroll.y = scroll.y + button.h; + scroll.h = scroll_h; + } + + /* calculate scrollbar constants */ + scroll_step = NK_MIN(step, scroll.h); + scroll_offset = NK_CLAMP(0, offset, target - scroll.h); + scroll_ratio = scroll.h / target; + scroll_off = scroll_offset / target; + + /* calculate scrollbar cursor bounds */ + cursor.h = NK_MAX((scroll_ratio * scroll.h) - (2*style->border + 2*style->padding.y), 0); + cursor.y = scroll.y + (scroll_off * scroll.h) + style->border + style->padding.y; + cursor.w = scroll.w - (2 * style->border + 2 * style->padding.x); + cursor.x = scroll.x + style->border + style->padding.x; + + /* calculate empty space around cursor */ + empty_north.x = scroll.x; + empty_north.y = scroll.y; + empty_north.w = scroll.w; + empty_north.h = NK_MAX(cursor.y - scroll.y, 0); + + empty_south.x = scroll.x; + empty_south.y = cursor.y + cursor.h; + empty_south.w = scroll.w; + empty_south.h = NK_MAX((scroll.y + scroll.h) - (cursor.y + cursor.h), 0); + + /* update scrollbar */ + scroll_offset = nk_scrollbar_behavior(state, in, has_scrolling, &scroll, &cursor, + &empty_north, &empty_south, scroll_offset, target, scroll_step, NK_VERTICAL); + scroll_off = scroll_offset / target; + cursor.y = scroll.y + (scroll_off * scroll.h) + style->border_cursor + style->padding.y; + + /* draw scrollbar */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_scrollbar(out, *state, style, &scroll, &cursor); + if (style->draw_end) style->draw_end(out, style->userdata); + return scroll_offset; +} +NK_LIB float +nk_do_scrollbarh(nk_flags *state, + struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, + float offset, float target, float step, float button_pixel_inc, + const struct nk_style_scrollbar *style, struct nk_input *in, + const struct nk_user_font *font) +{ + struct nk_rect cursor; + struct nk_rect empty_west; + struct nk_rect empty_east; + + float scroll_step; + float scroll_offset; + float scroll_off; + float scroll_ratio; + + NK_ASSERT(out); + NK_ASSERT(style); + if (!out || !style) return 0; + + /* scrollbar background */ + scroll.h = NK_MAX(scroll.h, 1); + scroll.w = NK_MAX(scroll.w, 2 * scroll.h); + if (target <= scroll.w) return 0; + + /* optional scrollbar buttons */ + if (style->show_buttons) { + nk_flags ws; + float scroll_w; + struct nk_rect button; + button.y = scroll.y; + button.w = scroll.h; + button.h = scroll.h; + + scroll_w = scroll.w - 2 * button.w; + scroll_step = NK_MIN(step, button_pixel_inc); + + /* decrement button */ + button.x = scroll.x; + if (nk_do_button_symbol(&ws, out, button, style->dec_symbol, + NK_BUTTON_REPEATER, &style->dec_button, in, font)) + offset = offset - scroll_step; + + /* increment button */ + button.x = scroll.x + scroll.w - button.w; + if (nk_do_button_symbol(&ws, out, button, style->inc_symbol, + NK_BUTTON_REPEATER, &style->inc_button, in, font)) + offset = offset + scroll_step; + + scroll.x = scroll.x + button.w; + scroll.w = scroll_w; + } + + /* calculate scrollbar constants */ + scroll_step = NK_MIN(step, scroll.w); + scroll_offset = NK_CLAMP(0, offset, target - scroll.w); + scroll_ratio = scroll.w / target; + scroll_off = scroll_offset / target; + + /* calculate cursor bounds */ + cursor.w = (scroll_ratio * scroll.w) - (2*style->border + 2*style->padding.x); + cursor.x = scroll.x + (scroll_off * scroll.w) + style->border + style->padding.x; + cursor.h = scroll.h - (2 * style->border + 2 * style->padding.y); + cursor.y = scroll.y + style->border + style->padding.y; + + /* calculate empty space around cursor */ + empty_west.x = scroll.x; + empty_west.y = scroll.y; + empty_west.w = cursor.x - scroll.x; + empty_west.h = scroll.h; + + empty_east.x = cursor.x + cursor.w; + empty_east.y = scroll.y; + empty_east.w = (scroll.x + scroll.w) - (cursor.x + cursor.w); + empty_east.h = scroll.h; + + /* update scrollbar */ + scroll_offset = nk_scrollbar_behavior(state, in, has_scrolling, &scroll, &cursor, + &empty_west, &empty_east, scroll_offset, target, scroll_step, NK_HORIZONTAL); + scroll_off = scroll_offset / target; + cursor.x = scroll.x + (scroll_off * scroll.w); + + /* draw scrollbar */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_scrollbar(out, *state, style, &scroll, &cursor); + if (style->draw_end) style->draw_end(out, style->userdata); + return scroll_offset; +} + + + + + +/* =============================================================== + * + * TEXT EDITOR + * + * ===============================================================*/ +/* stb_textedit.h - v1.8 - public domain - Sean Barrett */ +struct nk_text_find { + float x,y; /* position of n'th character */ + float height; /* height of line */ + int first_char, length; /* first char of row, and length */ + int prev_first; /*_ first char of previous row */ +}; + +struct nk_text_edit_row { + float x0,x1; + /* starting x location, end x location (allows for align=right, etc) */ + float baseline_y_delta; + /* position of baseline relative to previous row's baseline*/ + float ymin,ymax; + /* height of row above and below baseline */ + int num_chars; +}; + +/* forward declarations */ +NK_INTERN void nk_textedit_makeundo_delete(struct nk_text_edit*, int, int); +NK_INTERN void nk_textedit_makeundo_insert(struct nk_text_edit*, int, int); +NK_INTERN void nk_textedit_makeundo_replace(struct nk_text_edit*, int, int, int); +#define NK_TEXT_HAS_SELECTION(s) ((s)->select_start != (s)->select_end) + +NK_INTERN float +nk_textedit_get_width(const struct nk_text_edit *edit, int line_start, int char_id, + const struct nk_user_font *font) +{ + int len = 0; + nk_rune unicode = 0; + const char *str = nk_str_at_const(&edit->string, line_start + char_id, &unicode, &len); + return font->width(font->userdata, font->height, str, len); +} +NK_INTERN void +nk_textedit_layout_row(struct nk_text_edit_row *r, struct nk_text_edit *edit, + int line_start_id, float row_height, const struct nk_user_font *font) +{ + int l; + int glyphs = 0; + nk_rune unicode; + const char *remaining; + int len = nk_str_len_char(&edit->string); + const char *end = nk_str_get_const(&edit->string) + len; + const char *text = nk_str_at_const(&edit->string, line_start_id, &unicode, &l); + const struct nk_vec2 size = nk_text_calculate_text_bounds(font, + text, (int)(end - text), row_height, &remaining, 0, &glyphs, NK_STOP_ON_NEW_LINE); + + r->x0 = 0.0f; + r->x1 = size.x; + r->baseline_y_delta = size.y; + r->ymin = 0.0f; + r->ymax = size.y; + r->num_chars = glyphs; +} +NK_INTERN int +nk_textedit_locate_coord(struct nk_text_edit *edit, float x, float y, + const struct nk_user_font *font, float row_height) +{ + struct nk_text_edit_row r; + int n = edit->string.len; + float base_y = 0, prev_x; + int i=0, k; + + r.x0 = r.x1 = 0; + r.ymin = r.ymax = 0; + r.num_chars = 0; + + /* search rows to find one that straddles 'y' */ + while (i < n) { + nk_textedit_layout_row(&r, edit, i, row_height, font); + if (r.num_chars <= 0) + return n; + + if (i==0 && y < base_y + r.ymin) + return 0; + + if (y < base_y + r.ymax) + break; + + i += r.num_chars; + base_y += r.baseline_y_delta; + } + + /* below all text, return 'after' last character */ + if (i >= n) + return n; + + /* check if it's before the beginning of the line */ + if (x < r.x0) + return i; + + /* check if it's before the end of the line */ + if (x < r.x1) { + /* search characters in row for one that straddles 'x' */ + k = i; + prev_x = r.x0; + for (i=0; i < r.num_chars; ++i) { + float w = nk_textedit_get_width(edit, k, i, font); + if (x < prev_x+w) { + if (x < prev_x+w/2) + return k+i; + else return k+i+1; + } + prev_x += w; + } + /* shouldn't happen, but if it does, fall through to end-of-line case */ + } + + /* if the last character is a newline, return that. + * otherwise return 'after' the last character */ + if (nk_str_rune_at(&edit->string, i+r.num_chars-1) == '\n') + return i+r.num_chars-1; + else return i+r.num_chars; +} +NK_LIB void +nk_textedit_click(struct nk_text_edit *state, float x, float y, + const struct nk_user_font *font, float row_height) +{ + /* API click: on mouse down, move the cursor to the clicked location, + * and reset the selection */ + state->cursor = nk_textedit_locate_coord(state, x, y, font, row_height); + state->select_start = state->cursor; + state->select_end = state->cursor; + state->has_preferred_x = 0; +} +NK_LIB void +nk_textedit_drag(struct nk_text_edit *state, float x, float y, + const struct nk_user_font *font, float row_height) +{ + /* API drag: on mouse drag, move the cursor and selection endpoint + * to the clicked location */ + int p = nk_textedit_locate_coord(state, x, y, font, row_height); + if (state->select_start == state->select_end) + state->select_start = state->cursor; + state->cursor = state->select_end = p; +} +NK_INTERN void +nk_textedit_find_charpos(struct nk_text_find *find, struct nk_text_edit *state, + int n, int single_line, const struct nk_user_font *font, float row_height) +{ + /* find the x/y location of a character, and remember info about the previous + * row in case we get a move-up event (for page up, we'll have to rescan) */ + struct nk_text_edit_row r; + int prev_start = 0; + int z = state->string.len; + int i=0, first; + + nk_zero_struct(r); + if (n == z) { + /* if it's at the end, then find the last line -- simpler than trying to + explicitly handle this case in the regular code */ + nk_textedit_layout_row(&r, state, 0, row_height, font); + if (single_line) { + find->first_char = 0; + find->length = z; + } else { + while (i < z) { + prev_start = i; + i += r.num_chars; + nk_textedit_layout_row(&r, state, i, row_height, font); + } + + find->first_char = i; + find->length = r.num_chars; + } + find->x = r.x1; + find->y = r.ymin; + find->height = r.ymax - r.ymin; + find->prev_first = prev_start; + return; + } + + /* search rows to find the one that straddles character n */ + find->y = 0; + + for(;;) { + nk_textedit_layout_row(&r, state, i, row_height, font); + if (n < i + r.num_chars) break; + prev_start = i; + i += r.num_chars; + find->y += r.baseline_y_delta; + } + + find->first_char = first = i; + find->length = r.num_chars; + find->height = r.ymax - r.ymin; + find->prev_first = prev_start; + + /* now scan to find xpos */ + find->x = r.x0; + for (i=0; first+i < n; ++i) + find->x += nk_textedit_get_width(state, first, i, font); +} +NK_INTERN void +nk_textedit_clamp(struct nk_text_edit *state) +{ + /* make the selection/cursor state valid if client altered the string */ + int n = state->string.len; + if (NK_TEXT_HAS_SELECTION(state)) { + if (state->select_start > n) state->select_start = n; + if (state->select_end > n) state->select_end = n; + /* if clamping forced them to be equal, move the cursor to match */ + if (state->select_start == state->select_end) + state->cursor = state->select_start; + } + if (state->cursor > n) state->cursor = n; +} +NK_API void +nk_textedit_delete(struct nk_text_edit *state, int where, int len) +{ + /* delete characters while updating undo */ + nk_textedit_makeundo_delete(state, where, len); + nk_str_delete_runes(&state->string, where, len); + state->has_preferred_x = 0; +} +NK_API void +nk_textedit_delete_selection(struct nk_text_edit *state) +{ + /* delete the section */ + nk_textedit_clamp(state); + if (NK_TEXT_HAS_SELECTION(state)) { + if (state->select_start < state->select_end) { + nk_textedit_delete(state, state->select_start, + state->select_end - state->select_start); + state->select_end = state->cursor = state->select_start; + } else { + nk_textedit_delete(state, state->select_end, + state->select_start - state->select_end); + state->select_start = state->cursor = state->select_end; + } + state->has_preferred_x = 0; + } +} +NK_INTERN void +nk_textedit_sortselection(struct nk_text_edit *state) +{ + /* canonicalize the selection so start <= end */ + if (state->select_end < state->select_start) { + int temp = state->select_end; + state->select_end = state->select_start; + state->select_start = temp; + } +} +NK_INTERN void +nk_textedit_move_to_first(struct nk_text_edit *state) +{ + /* move cursor to first character of selection */ + if (NK_TEXT_HAS_SELECTION(state)) { + nk_textedit_sortselection(state); + state->cursor = state->select_start; + state->select_end = state->select_start; + state->has_preferred_x = 0; + } +} +NK_INTERN void +nk_textedit_move_to_last(struct nk_text_edit *state) +{ + /* move cursor to last character of selection */ + if (NK_TEXT_HAS_SELECTION(state)) { + nk_textedit_sortselection(state); + nk_textedit_clamp(state); + state->cursor = state->select_end; + state->select_start = state->select_end; + state->has_preferred_x = 0; + } +} +NK_INTERN int +nk_is_word_boundary( struct nk_text_edit *state, int idx) +{ + int len; + nk_rune c; + if (idx <= 0) return 1; + if (!nk_str_at_rune(&state->string, idx, &c, &len)) return 1; + return (c == ' ' || c == '\t' ||c == 0x3000 || c == ',' || c == ';' || + c == '(' || c == ')' || c == '{' || c == '}' || c == '[' || c == ']' || + c == '|'); +} +NK_INTERN int +nk_textedit_move_to_word_previous(struct nk_text_edit *state) +{ + int c = state->cursor - 1; + while( c >= 0 && !nk_is_word_boundary(state, c)) + --c; + + if( c < 0 ) + c = 0; + + return c; +} +NK_INTERN int +nk_textedit_move_to_word_next(struct nk_text_edit *state) +{ + const int len = state->string.len; + int c = state->cursor+1; + while( c < len && !nk_is_word_boundary(state, c)) + ++c; + + if( c > len ) + c = len; + + return c; +} +NK_INTERN void +nk_textedit_prep_selection_at_cursor(struct nk_text_edit *state) +{ + /* update selection and cursor to match each other */ + if (!NK_TEXT_HAS_SELECTION(state)) + state->select_start = state->select_end = state->cursor; + else state->cursor = state->select_end; +} +NK_API int +nk_textedit_cut(struct nk_text_edit *state) +{ + /* API cut: delete selection */ + if (state->mode == NK_TEXT_EDIT_MODE_VIEW) + return 0; + if (NK_TEXT_HAS_SELECTION(state)) { + nk_textedit_delete_selection(state); /* implicitly clamps */ + state->has_preferred_x = 0; + return 1; + } + return 0; +} +NK_API int +nk_textedit_paste(struct nk_text_edit *state, char const *ctext, int len) +{ + /* API paste: replace existing selection with passed-in text */ + int glyphs; + const char *text = (const char *) ctext; + if (state->mode == NK_TEXT_EDIT_MODE_VIEW) return 0; + + /* if there's a selection, the paste should delete it */ + nk_textedit_clamp(state); + nk_textedit_delete_selection(state); + + /* try to insert the characters */ + glyphs = nk_utf_len(ctext, len); + if (nk_str_insert_text_char(&state->string, state->cursor, text, len)) { + nk_textedit_makeundo_insert(state, state->cursor, glyphs); + state->cursor += len; + state->has_preferred_x = 0; + return 1; + } + /* remove the undo since we didn't actually insert the characters */ + if (state->undo.undo_point) + --state->undo.undo_point; + return 0; +} +NK_API void +nk_textedit_text(struct nk_text_edit *state, const char *text, int total_len) +{ + nk_rune unicode; + int glyph_len; + int text_len = 0; + + NK_ASSERT(state); + NK_ASSERT(text); + if (!text || !total_len || state->mode == NK_TEXT_EDIT_MODE_VIEW) return; + + glyph_len = nk_utf_decode(text, &unicode, total_len); + while ((text_len < total_len) && glyph_len) + { + /* don't insert a backward delete, just process the event */ + if (unicode == 127) goto next; + /* can't add newline in single-line mode */ + if (unicode == '\n' && state->single_line) goto next; + /* filter incoming text */ + if (state->filter && !state->filter(state, unicode)) goto next; + + if (!NK_TEXT_HAS_SELECTION(state) && + state->cursor < state->string.len) + { + if (state->mode == NK_TEXT_EDIT_MODE_REPLACE) { + nk_textedit_makeundo_replace(state, state->cursor, 1, 1); + nk_str_delete_runes(&state->string, state->cursor, 1); + } + if (nk_str_insert_text_utf8(&state->string, state->cursor, + text+text_len, 1)) + { + ++state->cursor; + state->has_preferred_x = 0; + } + } else { + nk_textedit_delete_selection(state); /* implicitly clamps */ + if (nk_str_insert_text_utf8(&state->string, state->cursor, + text+text_len, 1)) + { + nk_textedit_makeundo_insert(state, state->cursor, 1); + ++state->cursor; + state->has_preferred_x = 0; + } + } + next: + text_len += glyph_len; + glyph_len = nk_utf_decode(text + text_len, &unicode, total_len-text_len); + } +} +NK_LIB void +nk_textedit_key(struct nk_text_edit *state, enum nk_keys key, int shift_mod, + const struct nk_user_font *font, float row_height) +{ +retry: + switch (key) + { + case NK_KEY_NONE: + case NK_KEY_CTRL: + case NK_KEY_ENTER: + case NK_KEY_SHIFT: + case NK_KEY_TAB: + case NK_KEY_COPY: + case NK_KEY_CUT: + case NK_KEY_PASTE: + case NK_KEY_MAX: + default: break; + case NK_KEY_TEXT_UNDO: + nk_textedit_undo(state); + state->has_preferred_x = 0; + break; + + case NK_KEY_TEXT_REDO: + nk_textedit_redo(state); + state->has_preferred_x = 0; + break; + + case NK_KEY_TEXT_SELECT_ALL: + nk_textedit_select_all(state); + state->has_preferred_x = 0; + break; + + case NK_KEY_TEXT_INSERT_MODE: + if (state->mode == NK_TEXT_EDIT_MODE_VIEW) + state->mode = NK_TEXT_EDIT_MODE_INSERT; + break; + case NK_KEY_TEXT_REPLACE_MODE: + if (state->mode == NK_TEXT_EDIT_MODE_VIEW) + state->mode = NK_TEXT_EDIT_MODE_REPLACE; + break; + case NK_KEY_TEXT_RESET_MODE: + if (state->mode == NK_TEXT_EDIT_MODE_INSERT || + state->mode == NK_TEXT_EDIT_MODE_REPLACE) + state->mode = NK_TEXT_EDIT_MODE_VIEW; + break; + + case NK_KEY_LEFT: + if (shift_mod) { + nk_textedit_clamp(state); + nk_textedit_prep_selection_at_cursor(state); + /* move selection left */ + if (state->select_end > 0) + --state->select_end; + state->cursor = state->select_end; + state->has_preferred_x = 0; + } else { + /* if currently there's a selection, + * move cursor to start of selection */ + if (NK_TEXT_HAS_SELECTION(state)) + nk_textedit_move_to_first(state); + else if (state->cursor > 0) + --state->cursor; + state->has_preferred_x = 0; + } break; + + case NK_KEY_RIGHT: + if (shift_mod) { + nk_textedit_prep_selection_at_cursor(state); + /* move selection right */ + ++state->select_end; + nk_textedit_clamp(state); + state->cursor = state->select_end; + state->has_preferred_x = 0; + } else { + /* if currently there's a selection, + * move cursor to end of selection */ + if (NK_TEXT_HAS_SELECTION(state)) + nk_textedit_move_to_last(state); + else ++state->cursor; + nk_textedit_clamp(state); + state->has_preferred_x = 0; + } break; + + case NK_KEY_TEXT_WORD_LEFT: + if (shift_mod) { + if( !NK_TEXT_HAS_SELECTION( state ) ) + nk_textedit_prep_selection_at_cursor(state); + state->cursor = nk_textedit_move_to_word_previous(state); + state->select_end = state->cursor; + nk_textedit_clamp(state ); + } else { + if (NK_TEXT_HAS_SELECTION(state)) + nk_textedit_move_to_first(state); + else { + state->cursor = nk_textedit_move_to_word_previous(state); + nk_textedit_clamp(state ); + } + } break; + + case NK_KEY_TEXT_WORD_RIGHT: + if (shift_mod) { + if( !NK_TEXT_HAS_SELECTION( state ) ) + nk_textedit_prep_selection_at_cursor(state); + state->cursor = nk_textedit_move_to_word_next(state); + state->select_end = state->cursor; + nk_textedit_clamp(state); + } else { + if (NK_TEXT_HAS_SELECTION(state)) + nk_textedit_move_to_last(state); + else { + state->cursor = nk_textedit_move_to_word_next(state); + nk_textedit_clamp(state ); + } + } break; + + case NK_KEY_DOWN: { + struct nk_text_find find; + struct nk_text_edit_row row; + int i, sel = shift_mod; + + if (state->single_line) { + /* on windows, up&down in single-line behave like left&right */ + key = NK_KEY_RIGHT; + goto retry; + } + + if (sel) + nk_textedit_prep_selection_at_cursor(state); + else if (NK_TEXT_HAS_SELECTION(state)) + nk_textedit_move_to_last(state); + + /* compute current position of cursor point */ + nk_textedit_clamp(state); + nk_textedit_find_charpos(&find, state, state->cursor, state->single_line, + font, row_height); + + /* now find character position down a row */ + if (find.length) + { + float x; + float goal_x = state->has_preferred_x ? state->preferred_x : find.x; + int start = find.first_char + find.length; + + state->cursor = start; + nk_textedit_layout_row(&row, state, state->cursor, row_height, font); + x = row.x0; + + for (i=0; i < row.num_chars && x < row.x1; ++i) { + float dx = nk_textedit_get_width(state, start, i, font); + x += dx; + if (x > goal_x) + break; + ++state->cursor; + } + nk_textedit_clamp(state); + + state->has_preferred_x = 1; + state->preferred_x = goal_x; + if (sel) + state->select_end = state->cursor; + } + } break; + + case NK_KEY_UP: { + struct nk_text_find find; + struct nk_text_edit_row row; + int i, sel = shift_mod; + + if (state->single_line) { + /* on windows, up&down become left&right */ + key = NK_KEY_LEFT; + goto retry; + } + + if (sel) + nk_textedit_prep_selection_at_cursor(state); + else if (NK_TEXT_HAS_SELECTION(state)) + nk_textedit_move_to_first(state); + + /* compute current position of cursor point */ + nk_textedit_clamp(state); + nk_textedit_find_charpos(&find, state, state->cursor, state->single_line, + font, row_height); + + /* can only go up if there's a previous row */ + if (find.prev_first != find.first_char) { + /* now find character position up a row */ + float x; + float goal_x = state->has_preferred_x ? state->preferred_x : find.x; + + state->cursor = find.prev_first; + nk_textedit_layout_row(&row, state, state->cursor, row_height, font); + x = row.x0; + + for (i=0; i < row.num_chars && x < row.x1; ++i) { + float dx = nk_textedit_get_width(state, find.prev_first, i, font); + x += dx; + if (x > goal_x) + break; + ++state->cursor; + } + nk_textedit_clamp(state); + + state->has_preferred_x = 1; + state->preferred_x = goal_x; + if (sel) state->select_end = state->cursor; + } + } break; + + case NK_KEY_DEL: + if (state->mode == NK_TEXT_EDIT_MODE_VIEW) + break; + if (NK_TEXT_HAS_SELECTION(state)) + nk_textedit_delete_selection(state); + else { + int n = state->string.len; + if (state->cursor < n) + nk_textedit_delete(state, state->cursor, 1); + } + state->has_preferred_x = 0; + break; + + case NK_KEY_BACKSPACE: + if (state->mode == NK_TEXT_EDIT_MODE_VIEW) + break; + if (NK_TEXT_HAS_SELECTION(state)) + nk_textedit_delete_selection(state); + else { + nk_textedit_clamp(state); + if (state->cursor > 0) { + nk_textedit_delete(state, state->cursor-1, 1); + --state->cursor; + } + } + state->has_preferred_x = 0; + break; + + case NK_KEY_TEXT_START: + if (shift_mod) { + nk_textedit_prep_selection_at_cursor(state); + state->cursor = state->select_end = 0; + state->has_preferred_x = 0; + } else { + state->cursor = state->select_start = state->select_end = 0; + state->has_preferred_x = 0; + } + break; + + case NK_KEY_TEXT_END: + if (shift_mod) { + nk_textedit_prep_selection_at_cursor(state); + state->cursor = state->select_end = state->string.len; + state->has_preferred_x = 0; + } else { + state->cursor = state->string.len; + state->select_start = state->select_end = 0; + state->has_preferred_x = 0; + } + break; + + case NK_KEY_TEXT_LINE_START: { + if (shift_mod) { + struct nk_text_find find; + nk_textedit_clamp(state); + nk_textedit_prep_selection_at_cursor(state); + if (state->string.len && state->cursor == state->string.len) + --state->cursor; + nk_textedit_find_charpos(&find, state,state->cursor, state->single_line, + font, row_height); + state->cursor = state->select_end = find.first_char; + state->has_preferred_x = 0; + } else { + struct nk_text_find find; + if (state->string.len && state->cursor == state->string.len) + --state->cursor; + nk_textedit_clamp(state); + nk_textedit_move_to_first(state); + nk_textedit_find_charpos(&find, state, state->cursor, state->single_line, + font, row_height); + state->cursor = find.first_char; + state->has_preferred_x = 0; + } + } break; + + case NK_KEY_TEXT_LINE_END: { + if (shift_mod) { + struct nk_text_find find; + nk_textedit_clamp(state); + nk_textedit_prep_selection_at_cursor(state); + nk_textedit_find_charpos(&find, state, state->cursor, state->single_line, + font, row_height); + state->has_preferred_x = 0; + state->cursor = find.first_char + find.length; + if (find.length > 0 && nk_str_rune_at(&state->string, state->cursor-1) == '\n') + --state->cursor; + state->select_end = state->cursor; + } else { + struct nk_text_find find; + nk_textedit_clamp(state); + nk_textedit_move_to_first(state); + nk_textedit_find_charpos(&find, state, state->cursor, state->single_line, + font, row_height); + + state->has_preferred_x = 0; + state->cursor = find.first_char + find.length; + if (find.length > 0 && nk_str_rune_at(&state->string, state->cursor-1) == '\n') + --state->cursor; + }} break; + } +} +NK_INTERN void +nk_textedit_flush_redo(struct nk_text_undo_state *state) +{ + state->redo_point = NK_TEXTEDIT_UNDOSTATECOUNT; + state->redo_char_point = NK_TEXTEDIT_UNDOCHARCOUNT; +} +NK_INTERN void +nk_textedit_discard_undo(struct nk_text_undo_state *state) +{ + /* discard the oldest entry in the undo list */ + if (state->undo_point > 0) { + /* if the 0th undo state has characters, clean those up */ + if (state->undo_rec[0].char_storage >= 0) { + int n = state->undo_rec[0].insert_length, i; + /* delete n characters from all other records */ + state->undo_char_point = (short)(state->undo_char_point - n); + NK_MEMCPY(state->undo_char, state->undo_char + n, + (nk_size)state->undo_char_point*sizeof(nk_rune)); + for (i=0; i < state->undo_point; ++i) { + if (state->undo_rec[i].char_storage >= 0) + state->undo_rec[i].char_storage = (short) + (state->undo_rec[i].char_storage - n); + } + } + --state->undo_point; + NK_MEMCPY(state->undo_rec, state->undo_rec+1, + (nk_size)((nk_size)state->undo_point * sizeof(state->undo_rec[0]))); + } +} +NK_INTERN void +nk_textedit_discard_redo(struct nk_text_undo_state *state) +{ +/* discard the oldest entry in the redo list--it's bad if this + ever happens, but because undo & redo have to store the actual + characters in different cases, the redo character buffer can + fill up even though the undo buffer didn't */ + nk_size num; + int k = NK_TEXTEDIT_UNDOSTATECOUNT-1; + if (state->redo_point <= k) { + /* if the k'th undo state has characters, clean those up */ + if (state->undo_rec[k].char_storage >= 0) { + int n = state->undo_rec[k].insert_length, i; + /* delete n characters from all other records */ + state->redo_char_point = (short)(state->redo_char_point + n); + num = (nk_size)(NK_TEXTEDIT_UNDOCHARCOUNT - state->redo_char_point); + NK_MEMCPY(state->undo_char + state->redo_char_point, + state->undo_char + state->redo_char_point-n, num * sizeof(char)); + for (i = state->redo_point; i < k; ++i) { + if (state->undo_rec[i].char_storage >= 0) { + state->undo_rec[i].char_storage = (short) + (state->undo_rec[i].char_storage + n); + } + } + } + ++state->redo_point; + num = (nk_size)(NK_TEXTEDIT_UNDOSTATECOUNT - state->redo_point); + if (num) NK_MEMCPY(state->undo_rec + state->redo_point-1, + state->undo_rec + state->redo_point, num * sizeof(state->undo_rec[0])); + } +} +NK_INTERN struct nk_text_undo_record* +nk_textedit_create_undo_record(struct nk_text_undo_state *state, int numchars) +{ + /* any time we create a new undo record, we discard redo*/ + nk_textedit_flush_redo(state); + + /* if we have no free records, we have to make room, + * by sliding the existing records down */ + if (state->undo_point == NK_TEXTEDIT_UNDOSTATECOUNT) + nk_textedit_discard_undo(state); + + /* if the characters to store won't possibly fit in the buffer, + * we can't undo */ + if (numchars > NK_TEXTEDIT_UNDOCHARCOUNT) { + state->undo_point = 0; + state->undo_char_point = 0; + return 0; + } + + /* if we don't have enough free characters in the buffer, + * we have to make room */ + while (state->undo_char_point + numchars > NK_TEXTEDIT_UNDOCHARCOUNT) + nk_textedit_discard_undo(state); + return &state->undo_rec[state->undo_point++]; +} +NK_INTERN nk_rune* +nk_textedit_createundo(struct nk_text_undo_state *state, int pos, + int insert_len, int delete_len) +{ + struct nk_text_undo_record *r = nk_textedit_create_undo_record(state, insert_len); + if (r == 0) + return 0; + + r->where = pos; + r->insert_length = (short) insert_len; + r->delete_length = (short) delete_len; + + if (insert_len == 0) { + r->char_storage = -1; + return 0; + } else { + r->char_storage = state->undo_char_point; + state->undo_char_point = (short)(state->undo_char_point + insert_len); + return &state->undo_char[r->char_storage]; + } +} +NK_API void +nk_textedit_undo(struct nk_text_edit *state) +{ + struct nk_text_undo_state *s = &state->undo; + struct nk_text_undo_record u, *r; + if (s->undo_point == 0) + return; + + /* we need to do two things: apply the undo record, and create a redo record */ + u = s->undo_rec[s->undo_point-1]; + r = &s->undo_rec[s->redo_point-1]; + r->char_storage = -1; + + r->insert_length = u.delete_length; + r->delete_length = u.insert_length; + r->where = u.where; + + if (u.delete_length) + { + /* if the undo record says to delete characters, then the redo record will + need to re-insert the characters that get deleted, so we need to store + them. + there are three cases: + - there's enough room to store the characters + - characters stored for *redoing* don't leave room for redo + - characters stored for *undoing* don't leave room for redo + if the last is true, we have to bail */ + if (s->undo_char_point + u.delete_length >= NK_TEXTEDIT_UNDOCHARCOUNT) { + /* the undo records take up too much character space; there's no space + * to store the redo characters */ + r->insert_length = 0; + } else { + int i; + /* there's definitely room to store the characters eventually */ + while (s->undo_char_point + u.delete_length > s->redo_char_point) { + /* there's currently not enough room, so discard a redo record */ + nk_textedit_discard_redo(s); + /* should never happen: */ + if (s->redo_point == NK_TEXTEDIT_UNDOSTATECOUNT) + return; + } + + r = &s->undo_rec[s->redo_point-1]; + r->char_storage = (short)(s->redo_char_point - u.delete_length); + s->redo_char_point = (short)(s->redo_char_point - u.delete_length); + + /* now save the characters */ + for (i=0; i < u.delete_length; ++i) + s->undo_char[r->char_storage + i] = + nk_str_rune_at(&state->string, u.where + i); + } + /* now we can carry out the deletion */ + nk_str_delete_runes(&state->string, u.where, u.delete_length); + } + + /* check type of recorded action: */ + if (u.insert_length) { + /* easy case: was a deletion, so we need to insert n characters */ + nk_str_insert_text_runes(&state->string, u.where, + &s->undo_char[u.char_storage], u.insert_length); + s->undo_char_point = (short)(s->undo_char_point - u.insert_length); + } + state->cursor = (short)(u.where + u.insert_length); + + s->undo_point--; + s->redo_point--; +} +NK_API void +nk_textedit_redo(struct nk_text_edit *state) +{ + struct nk_text_undo_state *s = &state->undo; + struct nk_text_undo_record *u, r; + if (s->redo_point == NK_TEXTEDIT_UNDOSTATECOUNT) + return; + + /* we need to do two things: apply the redo record, and create an undo record */ + u = &s->undo_rec[s->undo_point]; + r = s->undo_rec[s->redo_point]; + + /* we KNOW there must be room for the undo record, because the redo record + was derived from an undo record */ + u->delete_length = r.insert_length; + u->insert_length = r.delete_length; + u->where = r.where; + u->char_storage = -1; + + if (r.delete_length) { + /* the redo record requires us to delete characters, so the undo record + needs to store the characters */ + if (s->undo_char_point + u->insert_length > s->redo_char_point) { + u->insert_length = 0; + u->delete_length = 0; + } else { + int i; + u->char_storage = s->undo_char_point; + s->undo_char_point = (short)(s->undo_char_point + u->insert_length); + + /* now save the characters */ + for (i=0; i < u->insert_length; ++i) { + s->undo_char[u->char_storage + i] = + nk_str_rune_at(&state->string, u->where + i); + } + } + nk_str_delete_runes(&state->string, r.where, r.delete_length); + } + + if (r.insert_length) { + /* easy case: need to insert n characters */ + nk_str_insert_text_runes(&state->string, r.where, + &s->undo_char[r.char_storage], r.insert_length); + } + state->cursor = r.where + r.insert_length; + + s->undo_point++; + s->redo_point++; +} +NK_INTERN void +nk_textedit_makeundo_insert(struct nk_text_edit *state, int where, int length) +{ + nk_textedit_createundo(&state->undo, where, 0, length); +} +NK_INTERN void +nk_textedit_makeundo_delete(struct nk_text_edit *state, int where, int length) +{ + int i; + nk_rune *p = nk_textedit_createundo(&state->undo, where, length, 0); + if (p) { + for (i=0; i < length; ++i) + p[i] = nk_str_rune_at(&state->string, where+i); + } +} +NK_INTERN void +nk_textedit_makeundo_replace(struct nk_text_edit *state, int where, + int old_length, int new_length) +{ + int i; + nk_rune *p = nk_textedit_createundo(&state->undo, where, old_length, new_length); + if (p) { + for (i=0; i < old_length; ++i) + p[i] = nk_str_rune_at(&state->string, where+i); + } +} +NK_LIB void +nk_textedit_clear_state(struct nk_text_edit *state, enum nk_text_edit_type type, + nk_plugin_filter filter) +{ + /* reset the state to default */ + state->undo.undo_point = 0; + state->undo.undo_char_point = 0; + state->undo.redo_point = NK_TEXTEDIT_UNDOSTATECOUNT; + state->undo.redo_char_point = NK_TEXTEDIT_UNDOCHARCOUNT; + state->select_end = state->select_start = 0; + state->cursor = 0; + state->has_preferred_x = 0; + state->preferred_x = 0; + state->cursor_at_end_of_line = 0; + state->initialized = 1; + state->single_line = (unsigned char)(type == NK_TEXT_EDIT_SINGLE_LINE); + state->mode = NK_TEXT_EDIT_MODE_VIEW; + state->filter = filter; + state->scrollbar = nk_vec2(0,0); +} +NK_API void +nk_textedit_init_fixed(struct nk_text_edit *state, void *memory, nk_size size) +{ + NK_ASSERT(state); + NK_ASSERT(memory); + if (!state || !memory || !size) return; + NK_MEMSET(state, 0, sizeof(struct nk_text_edit)); + nk_textedit_clear_state(state, NK_TEXT_EDIT_SINGLE_LINE, 0); + nk_str_init_fixed(&state->string, memory, size); +} +NK_API void +nk_textedit_init(struct nk_text_edit *state, struct nk_allocator *alloc, nk_size size) +{ + NK_ASSERT(state); + NK_ASSERT(alloc); + if (!state || !alloc) return; + NK_MEMSET(state, 0, sizeof(struct nk_text_edit)); + nk_textedit_clear_state(state, NK_TEXT_EDIT_SINGLE_LINE, 0); + nk_str_init(&state->string, alloc, size); +} +#ifdef NK_INCLUDE_DEFAULT_ALLOCATOR +NK_API void +nk_textedit_init_default(struct nk_text_edit *state) +{ + NK_ASSERT(state); + if (!state) return; + NK_MEMSET(state, 0, sizeof(struct nk_text_edit)); + nk_textedit_clear_state(state, NK_TEXT_EDIT_SINGLE_LINE, 0); + nk_str_init_default(&state->string); +} +#endif +NK_API void +nk_textedit_select_all(struct nk_text_edit *state) +{ + NK_ASSERT(state); + state->select_start = 0; + state->select_end = state->string.len; +} +NK_API void +nk_textedit_free(struct nk_text_edit *state) +{ + NK_ASSERT(state); + if (!state) return; + nk_str_free(&state->string); +} + + + + + +/* =============================================================== + * + * FILTER + * + * ===============================================================*/ +NK_API int +nk_filter_default(const struct nk_text_edit *box, nk_rune unicode) +{ + NK_UNUSED(unicode); + NK_UNUSED(box); + return nk_true; +} +NK_API int +nk_filter_ascii(const struct nk_text_edit *box, nk_rune unicode) +{ + NK_UNUSED(box); + if (unicode > 128) return nk_false; + else return nk_true; +} +NK_API int +nk_filter_float(const struct nk_text_edit *box, nk_rune unicode) +{ + NK_UNUSED(box); + if ((unicode < '0' || unicode > '9') && unicode != '.' && unicode != '-') + return nk_false; + else return nk_true; +} +NK_API int +nk_filter_decimal(const struct nk_text_edit *box, nk_rune unicode) +{ + NK_UNUSED(box); + if ((unicode < '0' || unicode > '9') && unicode != '-') + return nk_false; + else return nk_true; +} +NK_API int +nk_filter_hex(const struct nk_text_edit *box, nk_rune unicode) +{ + NK_UNUSED(box); + if ((unicode < '0' || unicode > '9') && + (unicode < 'a' || unicode > 'f') && + (unicode < 'A' || unicode > 'F')) + return nk_false; + else return nk_true; +} +NK_API int +nk_filter_oct(const struct nk_text_edit *box, nk_rune unicode) +{ + NK_UNUSED(box); + if (unicode < '0' || unicode > '7') + return nk_false; + else return nk_true; +} +NK_API int +nk_filter_binary(const struct nk_text_edit *box, nk_rune unicode) +{ + NK_UNUSED(box); + if (unicode != '0' && unicode != '1') + return nk_false; + else return nk_true; +} + +/* =============================================================== + * + * EDIT + * + * ===============================================================*/ +NK_LIB void +nk_edit_draw_text(struct nk_command_buffer *out, + const struct nk_style_edit *style, float pos_x, float pos_y, + float x_offset, const char *text, int byte_len, float row_height, + const struct nk_user_font *font, struct nk_color background, + struct nk_color foreground, int is_selected) +{ + NK_ASSERT(out); + NK_ASSERT(font); + NK_ASSERT(style); + if (!text || !byte_len || !out || !style) return; + + {int glyph_len = 0; + nk_rune unicode = 0; + int text_len = 0; + float line_width = 0; + float glyph_width; + const char *line = text; + float line_offset = 0; + int line_count = 0; + + struct nk_text txt; + txt.padding = nk_vec2(0,0); + txt.background = background; + txt.text = foreground; + + glyph_len = nk_utf_decode(text+text_len, &unicode, byte_len-text_len); + if (!glyph_len) return; + while ((text_len < byte_len) && glyph_len) + { + if (unicode == '\n') { + /* new line separator so draw previous line */ + struct nk_rect label; + label.y = pos_y + line_offset; + label.h = row_height; + label.w = line_width; + label.x = pos_x; + if (!line_count) + label.x += x_offset; + + if (is_selected) /* selection needs to draw different background color */ + nk_fill_rect(out, label, 0, background); + nk_widget_text(out, label, line, (int)((text + text_len) - line), + &txt, NK_TEXT_CENTERED, font); + + text_len++; + line_count++; + line_width = 0; + line = text + text_len; + line_offset += row_height; + glyph_len = nk_utf_decode(text + text_len, &unicode, (int)(byte_len-text_len)); + continue; + } + if (unicode == '\r') { + text_len++; + glyph_len = nk_utf_decode(text + text_len, &unicode, byte_len-text_len); + continue; + } + glyph_width = font->width(font->userdata, font->height, text+text_len, glyph_len); + line_width += (float)glyph_width; + text_len += glyph_len; + glyph_len = nk_utf_decode(text + text_len, &unicode, byte_len-text_len); + continue; + } + if (line_width > 0) { + /* draw last line */ + struct nk_rect label; + label.y = pos_y + line_offset; + label.h = row_height; + label.w = line_width; + label.x = pos_x; + if (!line_count) + label.x += x_offset; + + if (is_selected) + nk_fill_rect(out, label, 0, background); + nk_widget_text(out, label, line, (int)((text + text_len) - line), + &txt, NK_TEXT_LEFT, font); + }} +} +NK_LIB nk_flags +nk_do_edit(nk_flags *state, struct nk_command_buffer *out, + struct nk_rect bounds, nk_flags flags, nk_plugin_filter filter, + struct nk_text_edit *edit, const struct nk_style_edit *style, + struct nk_input *in, const struct nk_user_font *font) +{ + struct nk_rect area; + nk_flags ret = 0; + float row_height; + char prev_state = 0; + char is_hovered = 0; + char select_all = 0; + char cursor_follow = 0; + struct nk_rect old_clip; + struct nk_rect clip; + + NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(style); + if (!state || !out || !style) + return ret; + + /* visible text area calculation */ + area.x = bounds.x + style->padding.x + style->border; + area.y = bounds.y + style->padding.y + style->border; + area.w = bounds.w - (2.0f * style->padding.x + 2 * style->border); + area.h = bounds.h - (2.0f * style->padding.y + 2 * style->border); + if (flags & NK_EDIT_MULTILINE) + area.w = NK_MAX(0, area.w - style->scrollbar_size.x); + row_height = (flags & NK_EDIT_MULTILINE)? font->height + style->row_padding: area.h; + + /* calculate clipping rectangle */ + old_clip = out->clip; + nk_unify(&clip, &old_clip, area.x, area.y, area.x + area.w, area.y + area.h); + + /* update edit state */ + prev_state = (char)edit->active; + is_hovered = (char)nk_input_is_mouse_hovering_rect(in, bounds); + if (in && in->mouse.buttons[NK_BUTTON_LEFT].clicked && in->mouse.buttons[NK_BUTTON_LEFT].down) { + edit->active = NK_INBOX(in->mouse.pos.x, in->mouse.pos.y, + bounds.x, bounds.y, bounds.w, bounds.h); + } + + /* (de)activate text editor */ + if (!prev_state && edit->active) { + const enum nk_text_edit_type type = (flags & NK_EDIT_MULTILINE) ? + NK_TEXT_EDIT_MULTI_LINE: NK_TEXT_EDIT_SINGLE_LINE; + nk_textedit_clear_state(edit, type, filter); + if (flags & NK_EDIT_AUTO_SELECT) + select_all = nk_true; + if (flags & NK_EDIT_GOTO_END_ON_ACTIVATE) { + edit->cursor = edit->string.len; + in = 0; + } + } else if (!edit->active) edit->mode = NK_TEXT_EDIT_MODE_VIEW; + if (flags & NK_EDIT_READ_ONLY) + edit->mode = NK_TEXT_EDIT_MODE_VIEW; + else if (flags & NK_EDIT_ALWAYS_INSERT_MODE) + edit->mode = NK_TEXT_EDIT_MODE_INSERT; + + ret = (edit->active) ? NK_EDIT_ACTIVE: NK_EDIT_INACTIVE; + if (prev_state != edit->active) + ret |= (edit->active) ? NK_EDIT_ACTIVATED: NK_EDIT_DEACTIVATED; + + /* handle user input */ + if (edit->active && in) + { + int shift_mod = in->keyboard.keys[NK_KEY_SHIFT].down; + const float mouse_x = (in->mouse.pos.x - area.x) + edit->scrollbar.x; + const float mouse_y = (in->mouse.pos.y - area.y) + edit->scrollbar.y; + + /* mouse click handler */ + is_hovered = (char)nk_input_is_mouse_hovering_rect(in, area); + if (select_all) { + nk_textedit_select_all(edit); + } else if (is_hovered && in->mouse.buttons[NK_BUTTON_LEFT].down && + in->mouse.buttons[NK_BUTTON_LEFT].clicked) { + nk_textedit_click(edit, mouse_x, mouse_y, font, row_height); + } else if (is_hovered && in->mouse.buttons[NK_BUTTON_LEFT].down && + (in->mouse.delta.x != 0.0f || in->mouse.delta.y != 0.0f)) { + nk_textedit_drag(edit, mouse_x, mouse_y, font, row_height); + cursor_follow = nk_true; + } else if (is_hovered && in->mouse.buttons[NK_BUTTON_RIGHT].clicked && + in->mouse.buttons[NK_BUTTON_RIGHT].down) { + nk_textedit_key(edit, NK_KEY_TEXT_WORD_LEFT, nk_false, font, row_height); + nk_textedit_key(edit, NK_KEY_TEXT_WORD_RIGHT, nk_true, font, row_height); + cursor_follow = nk_true; + } + + {int i; /* keyboard input */ + int old_mode = edit->mode; + for (i = 0; i < NK_KEY_MAX; ++i) { + if (i == NK_KEY_ENTER || i == NK_KEY_TAB) continue; /* special case */ + if (nk_input_is_key_pressed(in, (enum nk_keys)i)) { + nk_textedit_key(edit, (enum nk_keys)i, shift_mod, font, row_height); + cursor_follow = nk_true; + } + } + if (old_mode != edit->mode) { + in->keyboard.text_len = 0; + }} + + /* text input */ + edit->filter = filter; + if (in->keyboard.text_len) { + nk_textedit_text(edit, in->keyboard.text, in->keyboard.text_len); + cursor_follow = nk_true; + in->keyboard.text_len = 0; + } + + /* enter key handler */ + if (nk_input_is_key_pressed(in, NK_KEY_ENTER)) { + cursor_follow = nk_true; + if (flags & NK_EDIT_CTRL_ENTER_NEWLINE && shift_mod) + nk_textedit_text(edit, "\n", 1); + else if (flags & NK_EDIT_SIG_ENTER) + ret |= NK_EDIT_COMMITED; + else nk_textedit_text(edit, "\n", 1); + } + + /* cut & copy handler */ + {int copy= nk_input_is_key_pressed(in, NK_KEY_COPY); + int cut = nk_input_is_key_pressed(in, NK_KEY_CUT); + if ((copy || cut) && (flags & NK_EDIT_CLIPBOARD)) + { + int glyph_len; + nk_rune unicode; + const char *text; + int b = edit->select_start; + int e = edit->select_end; + + int begin = NK_MIN(b, e); + int end = NK_MAX(b, e); + text = nk_str_at_const(&edit->string, begin, &unicode, &glyph_len); + if (edit->clip.copy) + edit->clip.copy(edit->clip.userdata, text, end - begin); + if (cut && !(flags & NK_EDIT_READ_ONLY)){ + nk_textedit_cut(edit); + cursor_follow = nk_true; + } + }} + + /* paste handler */ + {int paste = nk_input_is_key_pressed(in, NK_KEY_PASTE); + if (paste && (flags & NK_EDIT_CLIPBOARD) && edit->clip.paste) { + edit->clip.paste(edit->clip.userdata, edit); + cursor_follow = nk_true; + }} + + /* tab handler */ + {int tab = nk_input_is_key_pressed(in, NK_KEY_TAB); + if (tab && (flags & NK_EDIT_ALLOW_TAB)) { + nk_textedit_text(edit, " ", 4); + cursor_follow = nk_true; + }} + } + + /* set widget state */ + if (edit->active) + *state = NK_WIDGET_STATE_ACTIVE; + else nk_widget_state_reset(state); + + if (is_hovered) + *state |= NK_WIDGET_STATE_HOVERED; + + /* DRAW EDIT */ + {const char *text = nk_str_get_const(&edit->string); + int len = nk_str_len_char(&edit->string); + + {/* select background colors/images */ + const struct nk_style_item *background; + if (*state & NK_WIDGET_STATE_ACTIVED) + background = &style->active; + else if (*state & NK_WIDGET_STATE_HOVER) + background = &style->hover; + else background = &style->normal; + + /* draw background frame */ + if (background->type == NK_STYLE_ITEM_COLOR) { + nk_stroke_rect(out, bounds, style->rounding, style->border, style->border_color); + nk_fill_rect(out, bounds, style->rounding, background->data.color); + } else nk_draw_image(out, bounds, &background->data.image, nk_white);} + + area.w = NK_MAX(0, area.w - style->cursor_size); + if (edit->active) + { + int total_lines = 1; + struct nk_vec2 text_size = nk_vec2(0,0); + + /* text pointer positions */ + const char *cursor_ptr = 0; + const char *select_begin_ptr = 0; + const char *select_end_ptr = 0; + + /* 2D pixel positions */ + struct nk_vec2 cursor_pos = nk_vec2(0,0); + struct nk_vec2 selection_offset_start = nk_vec2(0,0); + struct nk_vec2 selection_offset_end = nk_vec2(0,0); + + int selection_begin = NK_MIN(edit->select_start, edit->select_end); + int selection_end = NK_MAX(edit->select_start, edit->select_end); + + /* calculate total line count + total space + cursor/selection position */ + float line_width = 0.0f; + if (text && len) + { + /* utf8 encoding */ + float glyph_width; + int glyph_len = 0; + nk_rune unicode = 0; + int text_len = 0; + int glyphs = 0; + int row_begin = 0; + + glyph_len = nk_utf_decode(text, &unicode, len); + glyph_width = font->width(font->userdata, font->height, text, glyph_len); + line_width = 0; + + /* iterate all lines */ + while ((text_len < len) && glyph_len) + { + /* set cursor 2D position and line */ + if (!cursor_ptr && glyphs == edit->cursor) + { + int glyph_offset; + struct nk_vec2 out_offset; + struct nk_vec2 row_size; + const char *remaining; + + /* calculate 2d position */ + cursor_pos.y = (float)(total_lines-1) * row_height; + row_size = nk_text_calculate_text_bounds(font, text+row_begin, + text_len-row_begin, row_height, &remaining, + &out_offset, &glyph_offset, NK_STOP_ON_NEW_LINE); + cursor_pos.x = row_size.x; + cursor_ptr = text + text_len; + } + + /* set start selection 2D position and line */ + if (!select_begin_ptr && edit->select_start != edit->select_end && + glyphs == selection_begin) + { + int glyph_offset; + struct nk_vec2 out_offset; + struct nk_vec2 row_size; + const char *remaining; + + /* calculate 2d position */ + selection_offset_start.y = (float)(NK_MAX(total_lines-1,0)) * row_height; + row_size = nk_text_calculate_text_bounds(font, text+row_begin, + text_len-row_begin, row_height, &remaining, + &out_offset, &glyph_offset, NK_STOP_ON_NEW_LINE); + selection_offset_start.x = row_size.x; + select_begin_ptr = text + text_len; + } + + /* set end selection 2D position and line */ + if (!select_end_ptr && edit->select_start != edit->select_end && + glyphs == selection_end) + { + int glyph_offset; + struct nk_vec2 out_offset; + struct nk_vec2 row_size; + const char *remaining; + + /* calculate 2d position */ + selection_offset_end.y = (float)(total_lines-1) * row_height; + row_size = nk_text_calculate_text_bounds(font, text+row_begin, + text_len-row_begin, row_height, &remaining, + &out_offset, &glyph_offset, NK_STOP_ON_NEW_LINE); + selection_offset_end.x = row_size.x; + select_end_ptr = text + text_len; + } + if (unicode == '\n') { + text_size.x = NK_MAX(text_size.x, line_width); + total_lines++; + line_width = 0; + text_len++; + glyphs++; + row_begin = text_len; + glyph_len = nk_utf_decode(text + text_len, &unicode, len-text_len); + glyph_width = font->width(font->userdata, font->height, text+text_len, glyph_len); + continue; + } + + glyphs++; + text_len += glyph_len; + line_width += (float)glyph_width; + + glyph_len = nk_utf_decode(text + text_len, &unicode, len-text_len); + glyph_width = font->width(font->userdata, font->height, + text+text_len, glyph_len); + continue; + } + text_size.y = (float)total_lines * row_height; + + /* handle case when cursor is at end of text buffer */ + if (!cursor_ptr && edit->cursor == edit->string.len) { + cursor_pos.x = line_width; + cursor_pos.y = text_size.y - row_height; + } + } + { + /* scrollbar */ + if (cursor_follow) + { + /* update scrollbar to follow cursor */ + if (!(flags & NK_EDIT_NO_HORIZONTAL_SCROLL)) { + /* horizontal scroll */ + const float scroll_increment = area.w * 0.25f; + if (cursor_pos.x < edit->scrollbar.x) + edit->scrollbar.x = (float)(int)NK_MAX(0.0f, cursor_pos.x - scroll_increment); + if (cursor_pos.x >= edit->scrollbar.x + area.w) + edit->scrollbar.x = (float)(int)NK_MAX(0.0f, edit->scrollbar.x + scroll_increment); + } else edit->scrollbar.x = 0; + + if (flags & NK_EDIT_MULTILINE) { + /* vertical scroll */ + if (cursor_pos.y < edit->scrollbar.y) + edit->scrollbar.y = NK_MAX(0.0f, cursor_pos.y - row_height); + if (cursor_pos.y >= edit->scrollbar.y + area.h) + edit->scrollbar.y = edit->scrollbar.y + row_height; + } else edit->scrollbar.y = 0; + } + + /* scrollbar widget */ + if (flags & NK_EDIT_MULTILINE) + { + nk_flags ws; + struct nk_rect scroll; + float scroll_target; + float scroll_offset; + float scroll_step; + float scroll_inc; + + scroll = area; + scroll.x = (bounds.x + bounds.w - style->border) - style->scrollbar_size.x; + scroll.w = style->scrollbar_size.x; + + scroll_offset = edit->scrollbar.y; + scroll_step = scroll.h * 0.10f; + scroll_inc = scroll.h * 0.01f; + scroll_target = text_size.y; + edit->scrollbar.y = nk_do_scrollbarv(&ws, out, scroll, 0, + scroll_offset, scroll_target, scroll_step, scroll_inc, + &style->scrollbar, in, font); + } + } + + /* draw text */ + {struct nk_color background_color; + struct nk_color text_color; + struct nk_color sel_background_color; + struct nk_color sel_text_color; + struct nk_color cursor_color; + struct nk_color cursor_text_color; + const struct nk_style_item *background; + nk_push_scissor(out, clip); + + /* select correct colors to draw */ + if (*state & NK_WIDGET_STATE_ACTIVED) { + background = &style->active; + text_color = style->text_active; + sel_text_color = style->selected_text_hover; + sel_background_color = style->selected_hover; + cursor_color = style->cursor_hover; + cursor_text_color = style->cursor_text_hover; + } else if (*state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + text_color = style->text_hover; + sel_text_color = style->selected_text_hover; + sel_background_color = style->selected_hover; + cursor_text_color = style->cursor_text_hover; + cursor_color = style->cursor_hover; + } else { + background = &style->normal; + text_color = style->text_normal; + sel_text_color = style->selected_text_normal; + sel_background_color = style->selected_normal; + cursor_color = style->cursor_normal; + cursor_text_color = style->cursor_text_normal; + } + if (background->type == NK_STYLE_ITEM_IMAGE) + background_color = nk_rgba(0,0,0,0); + else background_color = background->data.color; + + + if (edit->select_start == edit->select_end) { + /* no selection so just draw the complete text */ + const char *begin = nk_str_get_const(&edit->string); + int l = nk_str_len_char(&edit->string); + nk_edit_draw_text(out, style, area.x - edit->scrollbar.x, + area.y - edit->scrollbar.y, 0, begin, l, row_height, font, + background_color, text_color, nk_false); + } else { + /* edit has selection so draw 1-3 text chunks */ + if (edit->select_start != edit->select_end && selection_begin > 0){ + /* draw unselected text before selection */ + const char *begin = nk_str_get_const(&edit->string); + NK_ASSERT(select_begin_ptr); + nk_edit_draw_text(out, style, area.x - edit->scrollbar.x, + area.y - edit->scrollbar.y, 0, begin, (int)(select_begin_ptr - begin), + row_height, font, background_color, text_color, nk_false); + } + if (edit->select_start != edit->select_end) { + /* draw selected text */ + NK_ASSERT(select_begin_ptr); + if (!select_end_ptr) { + const char *begin = nk_str_get_const(&edit->string); + select_end_ptr = begin + nk_str_len_char(&edit->string); + } + nk_edit_draw_text(out, style, + area.x - edit->scrollbar.x, + area.y + selection_offset_start.y - edit->scrollbar.y, + selection_offset_start.x, + select_begin_ptr, (int)(select_end_ptr - select_begin_ptr), + row_height, font, sel_background_color, sel_text_color, nk_true); + } + if ((edit->select_start != edit->select_end && + selection_end < edit->string.len)) + { + /* draw unselected text after selected text */ + const char *begin = select_end_ptr; + const char *end = nk_str_get_const(&edit->string) + + nk_str_len_char(&edit->string); + NK_ASSERT(select_end_ptr); + nk_edit_draw_text(out, style, + area.x - edit->scrollbar.x, + area.y + selection_offset_end.y - edit->scrollbar.y, + selection_offset_end.x, + begin, (int)(end - begin), row_height, font, + background_color, text_color, nk_true); + } + } + + /* cursor */ + if (edit->select_start == edit->select_end) + { + if (edit->cursor >= nk_str_len(&edit->string) || + (cursor_ptr && *cursor_ptr == '\n')) { + /* draw cursor at end of line */ + struct nk_rect cursor; + cursor.w = style->cursor_size; + cursor.h = font->height; + cursor.x = area.x + cursor_pos.x - edit->scrollbar.x; + cursor.y = area.y + cursor_pos.y + row_height/2.0f - cursor.h/2.0f; + cursor.y -= edit->scrollbar.y; + nk_fill_rect(out, cursor, 0, cursor_color); + } else { + /* draw cursor inside text */ + int glyph_len; + struct nk_rect label; + struct nk_text txt; + + nk_rune unicode; + NK_ASSERT(cursor_ptr); + glyph_len = nk_utf_decode(cursor_ptr, &unicode, 4); + + label.x = area.x + cursor_pos.x - edit->scrollbar.x; + label.y = area.y + cursor_pos.y - edit->scrollbar.y; + label.w = font->width(font->userdata, font->height, cursor_ptr, glyph_len); + label.h = row_height; + + txt.padding = nk_vec2(0,0); + txt.background = cursor_color;; + txt.text = cursor_text_color; + nk_fill_rect(out, label, 0, cursor_color); + nk_widget_text(out, label, cursor_ptr, glyph_len, &txt, NK_TEXT_LEFT, font); + } + }} + } else { + /* not active so just draw text */ + int l = nk_str_len_char(&edit->string); + const char *begin = nk_str_get_const(&edit->string); + + const struct nk_style_item *background; + struct nk_color background_color; + struct nk_color text_color; + nk_push_scissor(out, clip); + if (*state & NK_WIDGET_STATE_ACTIVED) { + background = &style->active; + text_color = style->text_active; + } else if (*state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + text_color = style->text_hover; + } else { + background = &style->normal; + text_color = style->text_normal; + } + if (background->type == NK_STYLE_ITEM_IMAGE) + background_color = nk_rgba(0,0,0,0); + else background_color = background->data.color; + nk_edit_draw_text(out, style, area.x - edit->scrollbar.x, + area.y - edit->scrollbar.y, 0, begin, l, row_height, font, + background_color, text_color, nk_false); + } + nk_push_scissor(out, old_clip);} + return ret; +} +NK_API void +nk_edit_focus(struct nk_context *ctx, nk_flags flags) +{ + nk_hash hash; + struct nk_window *win; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return; + + win = ctx->current; + hash = win->edit.seq; + win->edit.active = nk_true; + win->edit.name = hash; + if (flags & NK_EDIT_ALWAYS_INSERT_MODE) + win->edit.mode = NK_TEXT_EDIT_MODE_INSERT; +} +NK_API void +nk_edit_unfocus(struct nk_context *ctx) +{ + struct nk_window *win; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return; + + win = ctx->current; + win->edit.active = nk_false; + win->edit.name = 0; +} +NK_API nk_flags +nk_edit_string(struct nk_context *ctx, nk_flags flags, + char *memory, int *len, int max, nk_plugin_filter filter) +{ + nk_hash hash; + nk_flags state; + struct nk_text_edit *edit; + struct nk_window *win; + + NK_ASSERT(ctx); + NK_ASSERT(memory); + NK_ASSERT(len); + if (!ctx || !memory || !len) + return 0; + + filter = (!filter) ? nk_filter_default: filter; + win = ctx->current; + hash = win->edit.seq; + edit = &ctx->text_edit; + nk_textedit_clear_state(&ctx->text_edit, (flags & NK_EDIT_MULTILINE)? + NK_TEXT_EDIT_MULTI_LINE: NK_TEXT_EDIT_SINGLE_LINE, filter); + + if (win->edit.active && hash == win->edit.name) { + if (flags & NK_EDIT_NO_CURSOR) + edit->cursor = nk_utf_len(memory, *len); + else edit->cursor = win->edit.cursor; + if (!(flags & NK_EDIT_SELECTABLE)) { + edit->select_start = win->edit.cursor; + edit->select_end = win->edit.cursor; + } else { + edit->select_start = win->edit.sel_start; + edit->select_end = win->edit.sel_end; + } + edit->mode = win->edit.mode; + edit->scrollbar.x = (float)win->edit.scrollbar.x; + edit->scrollbar.y = (float)win->edit.scrollbar.y; + edit->active = nk_true; + } else edit->active = nk_false; + + max = NK_MAX(1, max); + *len = NK_MIN(*len, max-1); + nk_str_init_fixed(&edit->string, memory, (nk_size)max); + edit->string.buffer.allocated = (nk_size)*len; + edit->string.len = nk_utf_len(memory, *len); + state = nk_edit_buffer(ctx, flags, edit, filter); + *len = (int)edit->string.buffer.allocated; + + if (edit->active) { + win->edit.cursor = edit->cursor; + win->edit.sel_start = edit->select_start; + win->edit.sel_end = edit->select_end; + win->edit.mode = edit->mode; + win->edit.scrollbar.x = (nk_uint)edit->scrollbar.x; + win->edit.scrollbar.y = (nk_uint)edit->scrollbar.y; + } return state; +} +NK_API nk_flags +nk_edit_buffer(struct nk_context *ctx, nk_flags flags, + struct nk_text_edit *edit, nk_plugin_filter filter) +{ + struct nk_window *win; + struct nk_style *style; + struct nk_input *in; + + enum nk_widget_layout_states state; + struct nk_rect bounds; + + nk_flags ret_flags = 0; + unsigned char prev_state; + nk_hash hash; + + /* make sure correct values */ + NK_ASSERT(ctx); + NK_ASSERT(edit); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + state = nk_widget(&bounds, ctx); + if (!state) return state; + in = (win->layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + + /* check if edit is currently hot item */ + hash = win->edit.seq++; + if (win->edit.active && hash == win->edit.name) { + if (flags & NK_EDIT_NO_CURSOR) + edit->cursor = edit->string.len; + if (!(flags & NK_EDIT_SELECTABLE)) { + edit->select_start = edit->cursor; + edit->select_end = edit->cursor; + } + if (flags & NK_EDIT_CLIPBOARD) + edit->clip = ctx->clip; + edit->active = (unsigned char)win->edit.active; + } else edit->active = nk_false; + edit->mode = win->edit.mode; + + filter = (!filter) ? nk_filter_default: filter; + prev_state = (unsigned char)edit->active; + in = (flags & NK_EDIT_READ_ONLY) ? 0: in; + ret_flags = nk_do_edit(&ctx->last_widget_state, &win->buffer, bounds, flags, + filter, edit, &style->edit, in, style->font); + + if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + ctx->style.cursor_active = ctx->style.cursors[NK_CURSOR_TEXT]; + if (edit->active && prev_state != edit->active) { + /* current edit is now hot */ + win->edit.active = nk_true; + win->edit.name = hash; + } else if (prev_state && !edit->active) { + /* current edit is now cold */ + win->edit.active = nk_false; + } return ret_flags; +} +NK_API nk_flags +nk_edit_string_zero_terminated(struct nk_context *ctx, nk_flags flags, + char *buffer, int max, nk_plugin_filter filter) +{ + nk_flags result; + int len = nk_strlen(buffer); + result = nk_edit_string(ctx, flags, buffer, &len, max, filter); + buffer[NK_MIN(NK_MAX(max-1,0), len)] = '\0'; + return result; +} + + + + + +/* =============================================================== + * + * PROPERTY + * + * ===============================================================*/ +NK_LIB void +nk_drag_behavior(nk_flags *state, const struct nk_input *in, + struct nk_rect drag, struct nk_property_variant *variant, + float inc_per_pixel) +{ + int left_mouse_down = in && in->mouse.buttons[NK_BUTTON_LEFT].down; + int left_mouse_click_in_cursor = in && + nk_input_has_mouse_click_down_in_rect(in, NK_BUTTON_LEFT, drag, nk_true); + + nk_widget_state_reset(state); + if (nk_input_is_mouse_hovering_rect(in, drag)) + *state = NK_WIDGET_STATE_HOVERED; + + if (left_mouse_down && left_mouse_click_in_cursor) { + float delta, pixels; + pixels = in->mouse.delta.x; + delta = pixels * inc_per_pixel; + switch (variant->kind) { + default: break; + case NK_PROPERTY_INT: + variant->value.i = variant->value.i + (int)delta; + variant->value.i = NK_CLAMP(variant->min_value.i, variant->value.i, variant->max_value.i); + break; + case NK_PROPERTY_FLOAT: + variant->value.f = variant->value.f + (float)delta; + variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f, variant->max_value.f); + break; + case NK_PROPERTY_DOUBLE: + variant->value.d = variant->value.d + (double)delta; + variant->value.d = NK_CLAMP(variant->min_value.d, variant->value.d, variant->max_value.d); + break; + } + *state = NK_WIDGET_STATE_ACTIVE; + } + if (*state & NK_WIDGET_STATE_HOVER && !nk_input_is_mouse_prev_hovering_rect(in, drag)) + *state |= NK_WIDGET_STATE_ENTERED; + else if (nk_input_is_mouse_prev_hovering_rect(in, drag)) + *state |= NK_WIDGET_STATE_LEFT; +} +NK_LIB void +nk_property_behavior(nk_flags *ws, const struct nk_input *in, + struct nk_rect property, struct nk_rect label, struct nk_rect edit, + struct nk_rect empty, int *state, struct nk_property_variant *variant, + float inc_per_pixel) +{ + if (in && *state == NK_PROPERTY_DEFAULT) { + if (nk_button_behavior(ws, edit, in, NK_BUTTON_DEFAULT)) + *state = NK_PROPERTY_EDIT; + else if (nk_input_is_mouse_click_down_in_rect(in, NK_BUTTON_LEFT, label, nk_true)) + *state = NK_PROPERTY_DRAG; + else if (nk_input_is_mouse_click_down_in_rect(in, NK_BUTTON_LEFT, empty, nk_true)) + *state = NK_PROPERTY_DRAG; + } + if (*state == NK_PROPERTY_DRAG) { + nk_drag_behavior(ws, in, property, variant, inc_per_pixel); + if (!(*ws & NK_WIDGET_STATE_ACTIVED)) *state = NK_PROPERTY_DEFAULT; + } +} +NK_LIB void +nk_draw_property(struct nk_command_buffer *out, const struct nk_style_property *style, + const struct nk_rect *bounds, const struct nk_rect *label, nk_flags state, + const char *name, int len, const struct nk_user_font *font) +{ + struct nk_text text; + const struct nk_style_item *background; + + /* select correct background and text color */ + if (state & NK_WIDGET_STATE_ACTIVED) { + background = &style->active; + text.text = style->label_active; + } else if (state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + text.text = style->label_hover; + } else { + background = &style->normal; + text.text = style->label_normal; + } + + /* draw background */ + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(out, *bounds, &background->data.image, nk_white); + text.background = nk_rgba(0,0,0,0); + } else { + text.background = background->data.color; + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, background->data.color); + } + + /* draw label */ + text.padding = nk_vec2(0,0); + nk_widget_text(out, *label, name, len, &text, NK_TEXT_CENTERED, font); +} +NK_LIB void +nk_do_property(nk_flags *ws, + struct nk_command_buffer *out, struct nk_rect property, + const char *name, struct nk_property_variant *variant, + float inc_per_pixel, char *buffer, int *len, + int *state, int *cursor, int *select_begin, int *select_end, + const struct nk_style_property *style, + enum nk_property_filter filter, struct nk_input *in, + const struct nk_user_font *font, struct nk_text_edit *text_edit, + enum nk_button_behavior behavior) +{ + const nk_plugin_filter filters[] = { + nk_filter_decimal, + nk_filter_float + }; + int active, old; + int num_len, name_len; + char string[NK_MAX_NUMBER_BUFFER]; + float size; + + char *dst = 0; + int *length; + + struct nk_rect left; + struct nk_rect right; + struct nk_rect label; + struct nk_rect edit; + struct nk_rect empty; + + /* left decrement button */ + left.h = font->height/2; + left.w = left.h; + left.x = property.x + style->border + style->padding.x; + left.y = property.y + style->border + property.h/2.0f - left.h/2; + + /* text label */ + name_len = nk_strlen(name); + size = font->width(font->userdata, font->height, name, name_len); + label.x = left.x + left.w + style->padding.x; + label.w = (float)size + 2 * style->padding.x; + label.y = property.y + style->border + style->padding.y; + label.h = property.h - (2 * style->border + 2 * style->padding.y); + + /* right increment button */ + right.y = left.y; + right.w = left.w; + right.h = left.h; + right.x = property.x + property.w - (right.w + style->padding.x); + + /* edit */ + if (*state == NK_PROPERTY_EDIT) { + size = font->width(font->userdata, font->height, buffer, *len); + size += style->edit.cursor_size; + length = len; + dst = buffer; + } else { + switch (variant->kind) { + default: break; + case NK_PROPERTY_INT: + nk_itoa(string, variant->value.i); + num_len = nk_strlen(string); + break; + case NK_PROPERTY_FLOAT: + NK_DTOA(string, (double)variant->value.f); + num_len = nk_string_float_limit(string, NK_MAX_FLOAT_PRECISION); + break; + case NK_PROPERTY_DOUBLE: + NK_DTOA(string, variant->value.d); + num_len = nk_string_float_limit(string, NK_MAX_FLOAT_PRECISION); + break; + } + size = font->width(font->userdata, font->height, string, num_len); + dst = string; + length = &num_len; + } + + edit.w = (float)size + 2 * style->padding.x; + edit.w = NK_MIN(edit.w, right.x - (label.x + label.w)); + edit.x = right.x - (edit.w + style->padding.x); + edit.y = property.y + style->border; + edit.h = property.h - (2 * style->border); + + /* empty left space activator */ + empty.w = edit.x - (label.x + label.w); + empty.x = label.x + label.w; + empty.y = property.y; + empty.h = property.h; + + /* update property */ + old = (*state == NK_PROPERTY_EDIT); + nk_property_behavior(ws, in, property, label, edit, empty, state, variant, inc_per_pixel); + + /* draw property */ + if (style->draw_begin) style->draw_begin(out, style->userdata); + nk_draw_property(out, style, &property, &label, *ws, name, name_len, font); + if (style->draw_end) style->draw_end(out, style->userdata); + + /* execute right button */ + if (nk_do_button_symbol(ws, out, left, style->sym_left, behavior, &style->dec_button, in, font)) { + switch (variant->kind) { + default: break; + case NK_PROPERTY_INT: + variant->value.i = NK_CLAMP(variant->min_value.i, variant->value.i - variant->step.i, variant->max_value.i); break; + case NK_PROPERTY_FLOAT: + variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f - variant->step.f, variant->max_value.f); break; + case NK_PROPERTY_DOUBLE: + variant->value.d = NK_CLAMP(variant->min_value.d, variant->value.d - variant->step.d, variant->max_value.d); break; + } + } + /* execute left button */ + if (nk_do_button_symbol(ws, out, right, style->sym_right, behavior, &style->inc_button, in, font)) { + switch (variant->kind) { + default: break; + case NK_PROPERTY_INT: + variant->value.i = NK_CLAMP(variant->min_value.i, variant->value.i + variant->step.i, variant->max_value.i); break; + case NK_PROPERTY_FLOAT: + variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f + variant->step.f, variant->max_value.f); break; + case NK_PROPERTY_DOUBLE: + variant->value.d = NK_CLAMP(variant->min_value.d, variant->value.d + variant->step.d, variant->max_value.d); break; + } + } + if (old != NK_PROPERTY_EDIT && (*state == NK_PROPERTY_EDIT)) { + /* property has been activated so setup buffer */ + NK_MEMCPY(buffer, dst, (nk_size)*length); + *cursor = nk_utf_len(buffer, *length); + *len = *length; + length = len; + dst = buffer; + active = 0; + } else active = (*state == NK_PROPERTY_EDIT); + + /* execute and run text edit field */ + nk_textedit_clear_state(text_edit, NK_TEXT_EDIT_SINGLE_LINE, filters[filter]); + text_edit->active = (unsigned char)active; + text_edit->string.len = *length; + text_edit->cursor = NK_CLAMP(0, *cursor, *length); + text_edit->select_start = NK_CLAMP(0,*select_begin, *length); + text_edit->select_end = NK_CLAMP(0,*select_end, *length); + text_edit->string.buffer.allocated = (nk_size)*length; + text_edit->string.buffer.memory.size = NK_MAX_NUMBER_BUFFER; + text_edit->string.buffer.memory.ptr = dst; + text_edit->string.buffer.size = NK_MAX_NUMBER_BUFFER; + text_edit->mode = NK_TEXT_EDIT_MODE_INSERT; + nk_do_edit(ws, out, edit, NK_EDIT_FIELD|NK_EDIT_AUTO_SELECT, + filters[filter], text_edit, &style->edit, (*state == NK_PROPERTY_EDIT) ? in: 0, font); + + *length = text_edit->string.len; + *cursor = text_edit->cursor; + *select_begin = text_edit->select_start; + *select_end = text_edit->select_end; + if (text_edit->active && nk_input_is_key_pressed(in, NK_KEY_ENTER)) + text_edit->active = nk_false; + + if (active && !text_edit->active) { + /* property is now not active so convert edit text to value*/ + *state = NK_PROPERTY_DEFAULT; + buffer[*len] = '\0'; + switch (variant->kind) { + default: break; + case NK_PROPERTY_INT: + variant->value.i = nk_strtoi(buffer, 0); + variant->value.i = NK_CLAMP(variant->min_value.i, variant->value.i, variant->max_value.i); + break; + case NK_PROPERTY_FLOAT: + nk_string_float_limit(buffer, NK_MAX_FLOAT_PRECISION); + variant->value.f = nk_strtof(buffer, 0); + variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f, variant->max_value.f); + break; + case NK_PROPERTY_DOUBLE: + nk_string_float_limit(buffer, NK_MAX_FLOAT_PRECISION); + variant->value.d = nk_strtod(buffer, 0); + variant->value.d = NK_CLAMP(variant->min_value.d, variant->value.d, variant->max_value.d); + break; + } + } +} +NK_LIB struct nk_property_variant +nk_property_variant_int(int value, int min_value, int max_value, int step) +{ + struct nk_property_variant result; + result.kind = NK_PROPERTY_INT; + result.value.i = value; + result.min_value.i = min_value; + result.max_value.i = max_value; + result.step.i = step; + return result; +} +NK_LIB struct nk_property_variant +nk_property_variant_float(float value, float min_value, float max_value, float step) +{ + struct nk_property_variant result; + result.kind = NK_PROPERTY_FLOAT; + result.value.f = value; + result.min_value.f = min_value; + result.max_value.f = max_value; + result.step.f = step; + return result; +} +NK_LIB struct nk_property_variant +nk_property_variant_double(double value, double min_value, double max_value, + double step) +{ + struct nk_property_variant result; + result.kind = NK_PROPERTY_DOUBLE; + result.value.d = value; + result.min_value.d = min_value; + result.max_value.d = max_value; + result.step.d = step; + return result; +} +NK_LIB void +nk_property(struct nk_context *ctx, const char *name, struct nk_property_variant *variant, + float inc_per_pixel, const enum nk_property_filter filter) +{ + struct nk_window *win; + struct nk_panel *layout; + struct nk_input *in; + const struct nk_style *style; + + struct nk_rect bounds; + enum nk_widget_layout_states s; + + int *state = 0; + nk_hash hash = 0; + char *buffer = 0; + int *len = 0; + int *cursor = 0; + int *select_begin = 0; + int *select_end = 0; + int old_state; + + char dummy_buffer[NK_MAX_NUMBER_BUFFER]; + int dummy_state = NK_PROPERTY_DEFAULT; + int dummy_length = 0; + int dummy_cursor = 0; + int dummy_select_begin = 0; + int dummy_select_end = 0; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return; + + win = ctx->current; + layout = win->layout; + style = &ctx->style; + s = nk_widget(&bounds, ctx); + if (!s) return; + + /* calculate hash from name */ + if (name[0] == '#') { + hash = nk_murmur_hash(name, (int)nk_strlen(name), win->property.seq++); + name++; /* special number hash */ + } else hash = nk_murmur_hash(name, (int)nk_strlen(name), 42); + + /* check if property is currently hot item */ + if (win->property.active && hash == win->property.name) { + buffer = win->property.buffer; + len = &win->property.length; + cursor = &win->property.cursor; + state = &win->property.state; + select_begin = &win->property.select_start; + select_end = &win->property.select_end; + } else { + buffer = dummy_buffer; + len = &dummy_length; + cursor = &dummy_cursor; + state = &dummy_state; + select_begin = &dummy_select_begin; + select_end = &dummy_select_end; + } + + /* execute property widget */ + old_state = *state; + ctx->text_edit.clip = ctx->clip; + in = ((s == NK_WIDGET_ROM && !win->property.active) || + layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + nk_do_property(&ctx->last_widget_state, &win->buffer, bounds, name, + variant, inc_per_pixel, buffer, len, state, cursor, select_begin, + select_end, &style->property, filter, in, style->font, &ctx->text_edit, + ctx->button_behavior); + + if (in && *state != NK_PROPERTY_DEFAULT && !win->property.active) { + /* current property is now hot */ + win->property.active = 1; + NK_MEMCPY(win->property.buffer, buffer, (nk_size)*len); + win->property.length = *len; + win->property.cursor = *cursor; + win->property.state = *state; + win->property.name = hash; + win->property.select_start = *select_begin; + win->property.select_end = *select_end; + if (*state == NK_PROPERTY_DRAG) { + ctx->input.mouse.grab = nk_true; + ctx->input.mouse.grabbed = nk_true; + } + } + /* check if previously active property is now inactive */ + if (*state == NK_PROPERTY_DEFAULT && old_state != NK_PROPERTY_DEFAULT) { + if (old_state == NK_PROPERTY_DRAG) { + ctx->input.mouse.grab = nk_false; + ctx->input.mouse.grabbed = nk_false; + ctx->input.mouse.ungrab = nk_true; + } + win->property.select_start = 0; + win->property.select_end = 0; + win->property.active = 0; + } +} +NK_API void +nk_property_int(struct nk_context *ctx, const char *name, + int min, int *val, int max, int step, float inc_per_pixel) +{ + struct nk_property_variant variant; + NK_ASSERT(ctx); + NK_ASSERT(name); + NK_ASSERT(val); + + if (!ctx || !ctx->current || !name || !val) return; + variant = nk_property_variant_int(*val, min, max, step); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_INT); + *val = variant.value.i; +} +NK_API void +nk_property_float(struct nk_context *ctx, const char *name, + float min, float *val, float max, float step, float inc_per_pixel) +{ + struct nk_property_variant variant; + NK_ASSERT(ctx); + NK_ASSERT(name); + NK_ASSERT(val); + + if (!ctx || !ctx->current || !name || !val) return; + variant = nk_property_variant_float(*val, min, max, step); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_FLOAT); + *val = variant.value.f; +} +NK_API void +nk_property_double(struct nk_context *ctx, const char *name, + double min, double *val, double max, double step, float inc_per_pixel) +{ + struct nk_property_variant variant; + NK_ASSERT(ctx); + NK_ASSERT(name); + NK_ASSERT(val); + + if (!ctx || !ctx->current || !name || !val) return; + variant = nk_property_variant_double(*val, min, max, step); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_FLOAT); + *val = variant.value.d; +} +NK_API int +nk_propertyi(struct nk_context *ctx, const char *name, int min, int val, + int max, int step, float inc_per_pixel) +{ + struct nk_property_variant variant; + NK_ASSERT(ctx); + NK_ASSERT(name); + + if (!ctx || !ctx->current || !name) return val; + variant = nk_property_variant_int(val, min, max, step); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_INT); + val = variant.value.i; + return val; +} +NK_API float +nk_propertyf(struct nk_context *ctx, const char *name, float min, + float val, float max, float step, float inc_per_pixel) +{ + struct nk_property_variant variant; + NK_ASSERT(ctx); + NK_ASSERT(name); + + if (!ctx || !ctx->current || !name) return val; + variant = nk_property_variant_float(val, min, max, step); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_FLOAT); + val = variant.value.f; + return val; +} +NK_API double +nk_propertyd(struct nk_context *ctx, const char *name, double min, + double val, double max, double step, float inc_per_pixel) +{ + struct nk_property_variant variant; + NK_ASSERT(ctx); + NK_ASSERT(name); + + if (!ctx || !ctx->current || !name) return val; + variant = nk_property_variant_double(val, min, max, step); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_FLOAT); + val = variant.value.d; + return val; +} + + + + + +/* ============================================================== + * + * CHART + * + * ===============================================================*/ +NK_API int +nk_chart_begin_colored(struct nk_context *ctx, enum nk_chart_type type, + struct nk_color color, struct nk_color highlight, + int count, float min_value, float max_value) +{ + struct nk_window *win; + struct nk_chart *chart; + const struct nk_style *config; + const struct nk_style_chart *style; + + const struct nk_style_item *background; + struct nk_rect bounds = {0, 0, 0, 0}; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + + if (!ctx || !ctx->current || !ctx->current->layout) return 0; + if (!nk_widget(&bounds, ctx)) { + chart = &ctx->current->layout->chart; + nk_zero(chart, sizeof(*chart)); + return 0; + } + + win = ctx->current; + config = &ctx->style; + chart = &win->layout->chart; + style = &config->chart; + + /* setup basic generic chart */ + nk_zero(chart, sizeof(*chart)); + chart->x = bounds.x + style->padding.x; + chart->y = bounds.y + style->padding.y; + chart->w = bounds.w - 2 * style->padding.x; + chart->h = bounds.h - 2 * style->padding.y; + chart->w = NK_MAX(chart->w, 2 * style->padding.x); + chart->h = NK_MAX(chart->h, 2 * style->padding.y); + + /* add first slot into chart */ + {struct nk_chart_slot *slot = &chart->slots[chart->slot++]; + slot->type = type; + slot->count = count; + slot->color = color; + slot->highlight = highlight; + slot->min = NK_MIN(min_value, max_value); + slot->max = NK_MAX(min_value, max_value); + slot->range = slot->max - slot->min;} + + /* draw chart background */ + background = &style->background; + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(&win->buffer, bounds, &background->data.image, nk_white); + } else { + nk_fill_rect(&win->buffer, bounds, style->rounding, style->border_color); + nk_fill_rect(&win->buffer, nk_shrink_rect(bounds, style->border), + style->rounding, style->background.data.color); + } + return 1; +} +NK_API int +nk_chart_begin(struct nk_context *ctx, const enum nk_chart_type type, + int count, float min_value, float max_value) +{ + return nk_chart_begin_colored(ctx, type, ctx->style.chart.color, + ctx->style.chart.selected_color, count, min_value, max_value); +} +NK_API void +nk_chart_add_slot_colored(struct nk_context *ctx, const enum nk_chart_type type, + struct nk_color color, struct nk_color highlight, + int count, float min_value, float max_value) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx->current->layout->chart.slot < NK_CHART_MAX_SLOT); + if (!ctx || !ctx->current || !ctx->current->layout) return; + if (ctx->current->layout->chart.slot >= NK_CHART_MAX_SLOT) return; + + /* add another slot into the graph */ + {struct nk_chart *chart = &ctx->current->layout->chart; + struct nk_chart_slot *slot = &chart->slots[chart->slot++]; + slot->type = type; + slot->count = count; + slot->color = color; + slot->highlight = highlight; + slot->min = NK_MIN(min_value, max_value); + slot->max = NK_MAX(min_value, max_value); + slot->range = slot->max - slot->min;} +} +NK_API void +nk_chart_add_slot(struct nk_context *ctx, const enum nk_chart_type type, + int count, float min_value, float max_value) +{ + nk_chart_add_slot_colored(ctx, type, ctx->style.chart.color, + ctx->style.chart.selected_color, count, min_value, max_value); +} +NK_INTERN nk_flags +nk_chart_push_line(struct nk_context *ctx, struct nk_window *win, + struct nk_chart *g, float value, int slot) +{ + struct nk_panel *layout = win->layout; + const struct nk_input *i = &ctx->input; + struct nk_command_buffer *out = &win->buffer; + + nk_flags ret = 0; + struct nk_vec2 cur; + struct nk_rect bounds; + struct nk_color color; + float step; + float range; + float ratio; + + NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); + step = g->w / (float)g->slots[slot].count; + range = g->slots[slot].max - g->slots[slot].min; + ratio = (value - g->slots[slot].min) / range; + + if (g->slots[slot].index == 0) { + /* first data point does not have a connection */ + g->slots[slot].last.x = g->x; + g->slots[slot].last.y = (g->y + g->h) - ratio * (float)g->h; + + bounds.x = g->slots[slot].last.x - 2; + bounds.y = g->slots[slot].last.y - 2; + bounds.w = bounds.h = 4; + + color = g->slots[slot].color; + if (!(layout->flags & NK_WINDOW_ROM) && + NK_INBOX(i->mouse.pos.x,i->mouse.pos.y, g->slots[slot].last.x-3, g->slots[slot].last.y-3, 6, 6)){ + ret = nk_input_is_mouse_hovering_rect(i, bounds) ? NK_CHART_HOVERING : 0; + ret |= (i->mouse.buttons[NK_BUTTON_LEFT].down && + i->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; + color = g->slots[slot].highlight; + } + nk_fill_rect(out, bounds, 0, color); + g->slots[slot].index += 1; + return ret; + } + + /* draw a line between the last data point and the new one */ + color = g->slots[slot].color; + cur.x = g->x + (float)(step * (float)g->slots[slot].index); + cur.y = (g->y + g->h) - (ratio * (float)g->h); + nk_stroke_line(out, g->slots[slot].last.x, g->slots[slot].last.y, cur.x, cur.y, 1.0f, color); + + bounds.x = cur.x - 3; + bounds.y = cur.y - 3; + bounds.w = bounds.h = 6; + + /* user selection of current data point */ + if (!(layout->flags & NK_WINDOW_ROM)) { + if (nk_input_is_mouse_hovering_rect(i, bounds)) { + ret = NK_CHART_HOVERING; + ret |= (!i->mouse.buttons[NK_BUTTON_LEFT].down && + i->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; + color = g->slots[slot].highlight; + } + } + nk_fill_rect(out, nk_rect(cur.x - 2, cur.y - 2, 4, 4), 0, color); + + /* save current data point position */ + g->slots[slot].last.x = cur.x; + g->slots[slot].last.y = cur.y; + g->slots[slot].index += 1; + return ret; +} +NK_INTERN nk_flags +nk_chart_push_column(const struct nk_context *ctx, struct nk_window *win, + struct nk_chart *chart, float value, int slot) +{ + struct nk_command_buffer *out = &win->buffer; + const struct nk_input *in = &ctx->input; + struct nk_panel *layout = win->layout; + + float ratio; + nk_flags ret = 0; + struct nk_color color; + struct nk_rect item = {0,0,0,0}; + + NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); + if (chart->slots[slot].index >= chart->slots[slot].count) + return nk_false; + if (chart->slots[slot].count) { + float padding = (float)(chart->slots[slot].count-1); + item.w = (chart->w - padding) / (float)(chart->slots[slot].count); + } + + /* calculate bounds of current bar chart entry */ + color = chart->slots[slot].color;; + item.h = chart->h * NK_ABS((value/chart->slots[slot].range)); + if (value >= 0) { + ratio = (value + NK_ABS(chart->slots[slot].min)) / NK_ABS(chart->slots[slot].range); + item.y = (chart->y + chart->h) - chart->h * ratio; + } else { + ratio = (value - chart->slots[slot].max) / chart->slots[slot].range; + item.y = chart->y + (chart->h * NK_ABS(ratio)) - item.h; + } + item.x = chart->x + ((float)chart->slots[slot].index * item.w); + item.x = item.x + ((float)chart->slots[slot].index); + + /* user chart bar selection */ + if (!(layout->flags & NK_WINDOW_ROM) && + NK_INBOX(in->mouse.pos.x,in->mouse.pos.y,item.x,item.y,item.w,item.h)) { + ret = NK_CHART_HOVERING; + ret |= (!in->mouse.buttons[NK_BUTTON_LEFT].down && + in->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; + color = chart->slots[slot].highlight; + } + nk_fill_rect(out, item, 0, color); + chart->slots[slot].index += 1; + return ret; +} +NK_API nk_flags +nk_chart_push_slot(struct nk_context *ctx, float value, int slot) +{ + nk_flags flags; + struct nk_window *win; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); + NK_ASSERT(slot < ctx->current->layout->chart.slot); + if (!ctx || !ctx->current || slot >= NK_CHART_MAX_SLOT) return nk_false; + if (slot >= ctx->current->layout->chart.slot) return nk_false; + + win = ctx->current; + if (win->layout->chart.slot < slot) return nk_false; + switch (win->layout->chart.slots[slot].type) { + case NK_CHART_LINES: + flags = nk_chart_push_line(ctx, win, &win->layout->chart, value, slot); break; + case NK_CHART_COLUMN: + flags = nk_chart_push_column(ctx, win, &win->layout->chart, value, slot); break; + default: + case NK_CHART_MAX: + flags = 0; + } + return flags; +} +NK_API nk_flags +nk_chart_push(struct nk_context *ctx, float value) +{ + return nk_chart_push_slot(ctx, value, 0); +} +NK_API void +nk_chart_end(struct nk_context *ctx) +{ + struct nk_window *win; + struct nk_chart *chart; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) + return; + + win = ctx->current; + chart = &win->layout->chart; + NK_MEMSET(chart, 0, sizeof(*chart)); + return; +} +NK_API void +nk_plot(struct nk_context *ctx, enum nk_chart_type type, const float *values, + int count, int offset) +{ + int i = 0; + float min_value; + float max_value; + + NK_ASSERT(ctx); + NK_ASSERT(values); + if (!ctx || !values || !count) return; + + min_value = values[offset]; + max_value = values[offset]; + for (i = 0; i < count; ++i) { + min_value = NK_MIN(values[i + offset], min_value); + max_value = NK_MAX(values[i + offset], max_value); + } + + if (nk_chart_begin(ctx, type, count, min_value, max_value)) { + for (i = 0; i < count; ++i) + nk_chart_push(ctx, values[i + offset]); + nk_chart_end(ctx); + } +} +NK_API void +nk_plot_function(struct nk_context *ctx, enum nk_chart_type type, void *userdata, + float(*value_getter)(void* user, int index), int count, int offset) +{ + int i = 0; + float min_value; + float max_value; + + NK_ASSERT(ctx); + NK_ASSERT(value_getter); + if (!ctx || !value_getter || !count) return; + + max_value = min_value = value_getter(userdata, offset); + for (i = 0; i < count; ++i) { + float value = value_getter(userdata, i + offset); + min_value = NK_MIN(value, min_value); + max_value = NK_MAX(value, max_value); + } + + if (nk_chart_begin(ctx, type, count, min_value, max_value)) { + for (i = 0; i < count; ++i) + nk_chart_push(ctx, value_getter(userdata, i + offset)); + nk_chart_end(ctx); + } +} + + + + + +/* ============================================================== + * + * COLOR PICKER + * + * ===============================================================*/ +NK_LIB int +nk_color_picker_behavior(nk_flags *state, + const struct nk_rect *bounds, const struct nk_rect *matrix, + const struct nk_rect *hue_bar, const struct nk_rect *alpha_bar, + struct nk_colorf *color, const struct nk_input *in) +{ + float hsva[4]; + int value_changed = 0; + int hsv_changed = 0; + + NK_ASSERT(state); + NK_ASSERT(matrix); + NK_ASSERT(hue_bar); + NK_ASSERT(color); + + /* color matrix */ + nk_colorf_hsva_fv(hsva, *color); + if (nk_button_behavior(state, *matrix, in, NK_BUTTON_REPEATER)) { + hsva[1] = NK_SATURATE((in->mouse.pos.x - matrix->x) / (matrix->w-1)); + hsva[2] = 1.0f - NK_SATURATE((in->mouse.pos.y - matrix->y) / (matrix->h-1)); + value_changed = hsv_changed = 1; + } + /* hue bar */ + if (nk_button_behavior(state, *hue_bar, in, NK_BUTTON_REPEATER)) { + hsva[0] = NK_SATURATE((in->mouse.pos.y - hue_bar->y) / (hue_bar->h-1)); + value_changed = hsv_changed = 1; + } + /* alpha bar */ + if (alpha_bar) { + if (nk_button_behavior(state, *alpha_bar, in, NK_BUTTON_REPEATER)) { + hsva[3] = 1.0f - NK_SATURATE((in->mouse.pos.y - alpha_bar->y) / (alpha_bar->h-1)); + value_changed = 1; + } + } + nk_widget_state_reset(state); + if (hsv_changed) { + *color = nk_hsva_colorfv(hsva); + *state = NK_WIDGET_STATE_ACTIVE; + } + if (value_changed) { + color->a = hsva[3]; + *state = NK_WIDGET_STATE_ACTIVE; + } + /* set color picker widget state */ + if (nk_input_is_mouse_hovering_rect(in, *bounds)) + *state = NK_WIDGET_STATE_HOVERED; + if (*state & NK_WIDGET_STATE_HOVER && !nk_input_is_mouse_prev_hovering_rect(in, *bounds)) + *state |= NK_WIDGET_STATE_ENTERED; + else if (nk_input_is_mouse_prev_hovering_rect(in, *bounds)) + *state |= NK_WIDGET_STATE_LEFT; + return value_changed; +} +NK_LIB void +nk_draw_color_picker(struct nk_command_buffer *o, const struct nk_rect *matrix, + const struct nk_rect *hue_bar, const struct nk_rect *alpha_bar, + struct nk_colorf col) +{ + NK_STORAGE const struct nk_color black = {0,0,0,255}; + NK_STORAGE const struct nk_color white = {255, 255, 255, 255}; + NK_STORAGE const struct nk_color black_trans = {0,0,0,0}; + + const float crosshair_size = 7.0f; + struct nk_color temp; + float hsva[4]; + float line_y; + int i; + + NK_ASSERT(o); + NK_ASSERT(matrix); + NK_ASSERT(hue_bar); + + /* draw hue bar */ + nk_colorf_hsva_fv(hsva, col); + for (i = 0; i < 6; ++i) { + NK_GLOBAL const struct nk_color hue_colors[] = { + {255, 0, 0, 255}, {255,255,0,255}, {0,255,0,255}, {0, 255,255,255}, + {0,0,255,255}, {255, 0, 255, 255}, {255, 0, 0, 255} + }; + nk_fill_rect_multi_color(o, + nk_rect(hue_bar->x, hue_bar->y + (float)i * (hue_bar->h/6.0f) + 0.5f, + hue_bar->w, (hue_bar->h/6.0f) + 0.5f), hue_colors[i], hue_colors[i], + hue_colors[i+1], hue_colors[i+1]); + } + line_y = (float)(int)(hue_bar->y + hsva[0] * matrix->h + 0.5f); + nk_stroke_line(o, hue_bar->x-1, line_y, hue_bar->x + hue_bar->w + 2, + line_y, 1, nk_rgb(255,255,255)); + + /* draw alpha bar */ + if (alpha_bar) { + float alpha = NK_SATURATE(col.a); + line_y = (float)(int)(alpha_bar->y + (1.0f - alpha) * matrix->h + 0.5f); + + nk_fill_rect_multi_color(o, *alpha_bar, white, white, black, black); + nk_stroke_line(o, alpha_bar->x-1, line_y, alpha_bar->x + alpha_bar->w + 2, + line_y, 1, nk_rgb(255,255,255)); + } + + /* draw color matrix */ + temp = nk_hsv_f(hsva[0], 1.0f, 1.0f); + nk_fill_rect_multi_color(o, *matrix, white, temp, temp, white); + nk_fill_rect_multi_color(o, *matrix, black_trans, black_trans, black, black); + + /* draw cross-hair */ + {struct nk_vec2 p; float S = hsva[1]; float V = hsva[2]; + p.x = (float)(int)(matrix->x + S * matrix->w); + p.y = (float)(int)(matrix->y + (1.0f - V) * matrix->h); + nk_stroke_line(o, p.x - crosshair_size, p.y, p.x-2, p.y, 1.0f, white); + nk_stroke_line(o, p.x + crosshair_size + 1, p.y, p.x+3, p.y, 1.0f, white); + nk_stroke_line(o, p.x, p.y + crosshair_size + 1, p.x, p.y+3, 1.0f, white); + nk_stroke_line(o, p.x, p.y - crosshair_size, p.x, p.y-2, 1.0f, white);} +} +NK_LIB int +nk_do_color_picker(nk_flags *state, + struct nk_command_buffer *out, struct nk_colorf *col, + enum nk_color_format fmt, struct nk_rect bounds, + struct nk_vec2 padding, const struct nk_input *in, + const struct nk_user_font *font) +{ + int ret = 0; + struct nk_rect matrix; + struct nk_rect hue_bar; + struct nk_rect alpha_bar; + float bar_w; + + NK_ASSERT(out); + NK_ASSERT(col); + NK_ASSERT(state); + NK_ASSERT(font); + if (!out || !col || !state || !font) + return ret; + + bar_w = font->height; + bounds.x += padding.x; + bounds.y += padding.x; + bounds.w -= 2 * padding.x; + bounds.h -= 2 * padding.y; + + matrix.x = bounds.x; + matrix.y = bounds.y; + matrix.h = bounds.h; + matrix.w = bounds.w - (3 * padding.x + 2 * bar_w); + + hue_bar.w = bar_w; + hue_bar.y = bounds.y; + hue_bar.h = matrix.h; + hue_bar.x = matrix.x + matrix.w + padding.x; + + alpha_bar.x = hue_bar.x + hue_bar.w + padding.x; + alpha_bar.y = bounds.y; + alpha_bar.w = bar_w; + alpha_bar.h = matrix.h; + + ret = nk_color_picker_behavior(state, &bounds, &matrix, &hue_bar, + (fmt == NK_RGBA) ? &alpha_bar:0, col, in); + nk_draw_color_picker(out, &matrix, &hue_bar, (fmt == NK_RGBA) ? &alpha_bar:0, *col); + return ret; +} +NK_API int +nk_color_pick(struct nk_context * ctx, struct nk_colorf *color, + enum nk_color_format fmt) +{ + struct nk_window *win; + struct nk_panel *layout; + const struct nk_style *config; + const struct nk_input *in; + + enum nk_widget_layout_states state; + struct nk_rect bounds; + + NK_ASSERT(ctx); + NK_ASSERT(color); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !color) + return 0; + + win = ctx->current; + config = &ctx->style; + layout = win->layout; + state = nk_widget(&bounds, ctx); + if (!state) return 0; + in = (state == NK_WIDGET_ROM || layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + return nk_do_color_picker(&ctx->last_widget_state, &win->buffer, color, fmt, bounds, + nk_vec2(0,0), in, config->font); +} +NK_API struct nk_colorf +nk_color_picker(struct nk_context *ctx, struct nk_colorf color, + enum nk_color_format fmt) +{ + nk_color_pick(ctx, &color, fmt); + return color; +} + + + + + +/* ============================================================== + * + * COMBO + * + * ===============================================================*/ +NK_INTERN int +nk_combo_begin(struct nk_context *ctx, struct nk_window *win, + struct nk_vec2 size, int is_clicked, struct nk_rect header) +{ + struct nk_window *popup; + int is_open = 0; + int is_active = 0; + struct nk_rect body; + nk_hash hash; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + popup = win->popup.win; + body.x = header.x; + body.w = size.x; + body.y = header.y + header.h-ctx->style.window.combo_border; + body.h = size.y; + + hash = win->popup.combo_count++; + is_open = (popup) ? nk_true:nk_false; + is_active = (popup && (win->popup.name == hash) && win->popup.type == NK_PANEL_COMBO); + if ((is_clicked && is_open && !is_active) || (is_open && !is_active) || + (!is_open && !is_active && !is_clicked)) return 0; + if (!nk_nonblock_begin(ctx, 0, body, + (is_clicked && is_open)?nk_rect(0,0,0,0):header, NK_PANEL_COMBO)) return 0; + + win->popup.type = NK_PANEL_COMBO; + win->popup.name = hash; + return 1; +} +NK_API int +nk_combo_begin_text(struct nk_context *ctx, const char *selected, int len, + struct nk_vec2 size) +{ + const struct nk_input *in; + struct nk_window *win; + struct nk_style *style; + + enum nk_widget_layout_states s; + int is_clicked = nk_false; + struct nk_rect header; + const struct nk_style_item *background; + struct nk_text text; + + NK_ASSERT(ctx); + NK_ASSERT(selected); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout || !selected) + return 0; + + win = ctx->current; + style = &ctx->style; + s = nk_widget(&header, ctx); + if (s == NK_WIDGET_INVALID) + return 0; + + in = (win->layout->flags & NK_WINDOW_ROM || s == NK_WIDGET_ROM)? 0: &ctx->input; + if (nk_button_behavior(&ctx->last_widget_state, header, in, NK_BUTTON_DEFAULT)) + is_clicked = nk_true; + + /* draw combo box header background and border */ + if (ctx->last_widget_state & NK_WIDGET_STATE_ACTIVED) { + background = &style->combo.active; + text.text = style->combo.label_active; + } else if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) { + background = &style->combo.hover; + text.text = style->combo.label_hover; + } else { + background = &style->combo.normal; + text.text = style->combo.label_normal; + } + if (background->type == NK_STYLE_ITEM_IMAGE) { + text.background = nk_rgba(0,0,0,0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + } else { + text.background = background->data.color; + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + } + { + /* print currently selected text item */ + struct nk_rect label; + struct nk_rect button; + struct nk_rect content; + + enum nk_symbol_type sym; + if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + sym = style->combo.sym_hover; + else if (is_clicked) + sym = style->combo.sym_active; + else sym = style->combo.sym_normal; + + /* calculate button */ + button.w = header.h - 2 * style->combo.button_padding.y; + button.x = (header.x + header.w - header.h) - style->combo.button_padding.x; + button.y = header.y + style->combo.button_padding.y; + button.h = button.w; + + content.x = button.x + style->combo.button.padding.x; + content.y = button.y + style->combo.button.padding.y; + content.w = button.w - 2 * style->combo.button.padding.x; + content.h = button.h - 2 * style->combo.button.padding.y; + + /* draw selected label */ + text.padding = nk_vec2(0,0); + label.x = header.x + style->combo.content_padding.x; + label.y = header.y + style->combo.content_padding.y; + label.w = button.x - (style->combo.content_padding.x + style->combo.spacing.x) - label.x;; + label.h = header.h - 2 * style->combo.content_padding.y; + nk_widget_text(&win->buffer, label, selected, len, &text, + NK_TEXT_LEFT, ctx->style.font); + + /* draw open/close button */ + nk_draw_button_symbol(&win->buffer, &button, &content, ctx->last_widget_state, + &ctx->style.combo.button, sym, style->font); + } + return nk_combo_begin(ctx, win, size, is_clicked, header); +} +NK_API int +nk_combo_begin_label(struct nk_context *ctx, const char *selected, struct nk_vec2 size) +{ + return nk_combo_begin_text(ctx, selected, nk_strlen(selected), size); +} +NK_API int +nk_combo_begin_color(struct nk_context *ctx, struct nk_color color, struct nk_vec2 size) +{ + struct nk_window *win; + struct nk_style *style; + const struct nk_input *in; + + struct nk_rect header; + int is_clicked = nk_false; + enum nk_widget_layout_states s; + const struct nk_style_item *background; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + s = nk_widget(&header, ctx); + if (s == NK_WIDGET_INVALID) + return 0; + + in = (win->layout->flags & NK_WINDOW_ROM || s == NK_WIDGET_ROM)? 0: &ctx->input; + if (nk_button_behavior(&ctx->last_widget_state, header, in, NK_BUTTON_DEFAULT)) + is_clicked = nk_true; + + /* draw combo box header background and border */ + if (ctx->last_widget_state & NK_WIDGET_STATE_ACTIVED) + background = &style->combo.active; + else if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + background = &style->combo.hover; + else background = &style->combo.normal; + + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(&win->buffer, header, &background->data.image,nk_white); + } else { + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + } + { + struct nk_rect content; + struct nk_rect button; + struct nk_rect bounds; + + enum nk_symbol_type sym; + if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + sym = style->combo.sym_hover; + else if (is_clicked) + sym = style->combo.sym_active; + else sym = style->combo.sym_normal; + + /* calculate button */ + button.w = header.h - 2 * style->combo.button_padding.y; + button.x = (header.x + header.w - header.h) - style->combo.button_padding.x; + button.y = header.y + style->combo.button_padding.y; + button.h = button.w; + + content.x = button.x + style->combo.button.padding.x; + content.y = button.y + style->combo.button.padding.y; + content.w = button.w - 2 * style->combo.button.padding.x; + content.h = button.h - 2 * style->combo.button.padding.y; + + /* draw color */ + bounds.h = header.h - 4 * style->combo.content_padding.y; + bounds.y = header.y + 2 * style->combo.content_padding.y; + bounds.x = header.x + 2 * style->combo.content_padding.x; + bounds.w = (button.x - (style->combo.content_padding.x + style->combo.spacing.x)) - bounds.x; + nk_fill_rect(&win->buffer, bounds, 0, color); + + /* draw open/close button */ + nk_draw_button_symbol(&win->buffer, &button, &content, ctx->last_widget_state, + &ctx->style.combo.button, sym, style->font); + } + return nk_combo_begin(ctx, win, size, is_clicked, header); +} +NK_API int +nk_combo_begin_symbol(struct nk_context *ctx, enum nk_symbol_type symbol, struct nk_vec2 size) +{ + struct nk_window *win; + struct nk_style *style; + const struct nk_input *in; + + struct nk_rect header; + int is_clicked = nk_false; + enum nk_widget_layout_states s; + const struct nk_style_item *background; + struct nk_color sym_background; + struct nk_color symbol_color; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + s = nk_widget(&header, ctx); + if (s == NK_WIDGET_INVALID) + return 0; + + in = (win->layout->flags & NK_WINDOW_ROM || s == NK_WIDGET_ROM)? 0: &ctx->input; + if (nk_button_behavior(&ctx->last_widget_state, header, in, NK_BUTTON_DEFAULT)) + is_clicked = nk_true; + + /* draw combo box header background and border */ + if (ctx->last_widget_state & NK_WIDGET_STATE_ACTIVED) { + background = &style->combo.active; + symbol_color = style->combo.symbol_active; + } else if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) { + background = &style->combo.hover; + symbol_color = style->combo.symbol_hover; + } else { + background = &style->combo.normal; + symbol_color = style->combo.symbol_hover; + } + + if (background->type == NK_STYLE_ITEM_IMAGE) { + sym_background = nk_rgba(0,0,0,0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + } else { + sym_background = background->data.color; + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + } + { + struct nk_rect bounds = {0,0,0,0}; + struct nk_rect content; + struct nk_rect button; + + enum nk_symbol_type sym; + if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + sym = style->combo.sym_hover; + else if (is_clicked) + sym = style->combo.sym_active; + else sym = style->combo.sym_normal; + + /* calculate button */ + button.w = header.h - 2 * style->combo.button_padding.y; + button.x = (header.x + header.w - header.h) - style->combo.button_padding.y; + button.y = header.y + style->combo.button_padding.y; + button.h = button.w; + + content.x = button.x + style->combo.button.padding.x; + content.y = button.y + style->combo.button.padding.y; + content.w = button.w - 2 * style->combo.button.padding.x; + content.h = button.h - 2 * style->combo.button.padding.y; + + /* draw symbol */ + bounds.h = header.h - 2 * style->combo.content_padding.y; + bounds.y = header.y + style->combo.content_padding.y; + bounds.x = header.x + style->combo.content_padding.x; + bounds.w = (button.x - style->combo.content_padding.y) - bounds.x; + nk_draw_symbol(&win->buffer, symbol, bounds, sym_background, symbol_color, + 1.0f, style->font); + + /* draw open/close button */ + nk_draw_button_symbol(&win->buffer, &bounds, &content, ctx->last_widget_state, + &ctx->style.combo.button, sym, style->font); + } + return nk_combo_begin(ctx, win, size, is_clicked, header); +} +NK_API int +nk_combo_begin_symbol_text(struct nk_context *ctx, const char *selected, int len, + enum nk_symbol_type symbol, struct nk_vec2 size) +{ + struct nk_window *win; + struct nk_style *style; + struct nk_input *in; + + struct nk_rect header; + int is_clicked = nk_false; + enum nk_widget_layout_states s; + const struct nk_style_item *background; + struct nk_color symbol_color; + struct nk_text text; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + s = nk_widget(&header, ctx); + if (!s) return 0; + + in = (win->layout->flags & NK_WINDOW_ROM || s == NK_WIDGET_ROM)? 0: &ctx->input; + if (nk_button_behavior(&ctx->last_widget_state, header, in, NK_BUTTON_DEFAULT)) + is_clicked = nk_true; + + /* draw combo box header background and border */ + if (ctx->last_widget_state & NK_WIDGET_STATE_ACTIVED) { + background = &style->combo.active; + symbol_color = style->combo.symbol_active; + text.text = style->combo.label_active; + } else if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) { + background = &style->combo.hover; + symbol_color = style->combo.symbol_hover; + text.text = style->combo.label_hover; + } else { + background = &style->combo.normal; + symbol_color = style->combo.symbol_normal; + text.text = style->combo.label_normal; + } + if (background->type == NK_STYLE_ITEM_IMAGE) { + text.background = nk_rgba(0,0,0,0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + } else { + text.background = background->data.color; + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + } + { + struct nk_rect content; + struct nk_rect button; + struct nk_rect label; + struct nk_rect image; + + enum nk_symbol_type sym; + if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + sym = style->combo.sym_hover; + else if (is_clicked) + sym = style->combo.sym_active; + else sym = style->combo.sym_normal; + + /* calculate button */ + button.w = header.h - 2 * style->combo.button_padding.y; + button.x = (header.x + header.w - header.h) - style->combo.button_padding.x; + button.y = header.y + style->combo.button_padding.y; + button.h = button.w; + + content.x = button.x + style->combo.button.padding.x; + content.y = button.y + style->combo.button.padding.y; + content.w = button.w - 2 * style->combo.button.padding.x; + content.h = button.h - 2 * style->combo.button.padding.y; + nk_draw_button_symbol(&win->buffer, &button, &content, ctx->last_widget_state, + &ctx->style.combo.button, sym, style->font); + + /* draw symbol */ + image.x = header.x + style->combo.content_padding.x; + image.y = header.y + style->combo.content_padding.y; + image.h = header.h - 2 * style->combo.content_padding.y; + image.w = image.h; + nk_draw_symbol(&win->buffer, symbol, image, text.background, symbol_color, + 1.0f, style->font); + + /* draw label */ + text.padding = nk_vec2(0,0); + label.x = image.x + image.w + style->combo.spacing.x + style->combo.content_padding.x; + label.y = header.y + style->combo.content_padding.y; + label.w = (button.x - style->combo.content_padding.x) - label.x; + label.h = header.h - 2 * style->combo.content_padding.y; + nk_widget_text(&win->buffer, label, selected, len, &text, NK_TEXT_LEFT, style->font); + } + return nk_combo_begin(ctx, win, size, is_clicked, header); +} +NK_API int +nk_combo_begin_image(struct nk_context *ctx, struct nk_image img, struct nk_vec2 size) +{ + struct nk_window *win; + struct nk_style *style; + const struct nk_input *in; + + struct nk_rect header; + int is_clicked = nk_false; + enum nk_widget_layout_states s; + const struct nk_style_item *background; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + s = nk_widget(&header, ctx); + if (s == NK_WIDGET_INVALID) + return 0; + + in = (win->layout->flags & NK_WINDOW_ROM || s == NK_WIDGET_ROM)? 0: &ctx->input; + if (nk_button_behavior(&ctx->last_widget_state, header, in, NK_BUTTON_DEFAULT)) + is_clicked = nk_true; + + /* draw combo box header background and border */ + if (ctx->last_widget_state & NK_WIDGET_STATE_ACTIVED) + background = &style->combo.active; + else if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + background = &style->combo.hover; + else background = &style->combo.normal; + + if (background->type == NK_STYLE_ITEM_IMAGE) { + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + } else { + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + } + { + struct nk_rect bounds = {0,0,0,0}; + struct nk_rect content; + struct nk_rect button; + + enum nk_symbol_type sym; + if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + sym = style->combo.sym_hover; + else if (is_clicked) + sym = style->combo.sym_active; + else sym = style->combo.sym_normal; + + /* calculate button */ + button.w = header.h - 2 * style->combo.button_padding.y; + button.x = (header.x + header.w - header.h) - style->combo.button_padding.y; + button.y = header.y + style->combo.button_padding.y; + button.h = button.w; + + content.x = button.x + style->combo.button.padding.x; + content.y = button.y + style->combo.button.padding.y; + content.w = button.w - 2 * style->combo.button.padding.x; + content.h = button.h - 2 * style->combo.button.padding.y; + + /* draw image */ + bounds.h = header.h - 2 * style->combo.content_padding.y; + bounds.y = header.y + style->combo.content_padding.y; + bounds.x = header.x + style->combo.content_padding.x; + bounds.w = (button.x - style->combo.content_padding.y) - bounds.x; + nk_draw_image(&win->buffer, bounds, &img, nk_white); + + /* draw open/close button */ + nk_draw_button_symbol(&win->buffer, &bounds, &content, ctx->last_widget_state, + &ctx->style.combo.button, sym, style->font); + } + return nk_combo_begin(ctx, win, size, is_clicked, header); +} +NK_API int +nk_combo_begin_image_text(struct nk_context *ctx, const char *selected, int len, + struct nk_image img, struct nk_vec2 size) +{ + struct nk_window *win; + struct nk_style *style; + struct nk_input *in; + + struct nk_rect header; + int is_clicked = nk_false; + enum nk_widget_layout_states s; + const struct nk_style_item *background; + struct nk_text text; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + win = ctx->current; + style = &ctx->style; + s = nk_widget(&header, ctx); + if (!s) return 0; + + in = (win->layout->flags & NK_WINDOW_ROM || s == NK_WIDGET_ROM)? 0: &ctx->input; + if (nk_button_behavior(&ctx->last_widget_state, header, in, NK_BUTTON_DEFAULT)) + is_clicked = nk_true; + + /* draw combo box header background and border */ + if (ctx->last_widget_state & NK_WIDGET_STATE_ACTIVED) { + background = &style->combo.active; + text.text = style->combo.label_active; + } else if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) { + background = &style->combo.hover; + text.text = style->combo.label_hover; + } else { + background = &style->combo.normal; + text.text = style->combo.label_normal; + } + if (background->type == NK_STYLE_ITEM_IMAGE) { + text.background = nk_rgba(0,0,0,0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + } else { + text.background = background->data.color; + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + } + { + struct nk_rect content; + struct nk_rect button; + struct nk_rect label; + struct nk_rect image; + + enum nk_symbol_type sym; + if (ctx->last_widget_state & NK_WIDGET_STATE_HOVER) + sym = style->combo.sym_hover; + else if (is_clicked) + sym = style->combo.sym_active; + else sym = style->combo.sym_normal; + + /* calculate button */ + button.w = header.h - 2 * style->combo.button_padding.y; + button.x = (header.x + header.w - header.h) - style->combo.button_padding.x; + button.y = header.y + style->combo.button_padding.y; + button.h = button.w; + + content.x = button.x + style->combo.button.padding.x; + content.y = button.y + style->combo.button.padding.y; + content.w = button.w - 2 * style->combo.button.padding.x; + content.h = button.h - 2 * style->combo.button.padding.y; + nk_draw_button_symbol(&win->buffer, &button, &content, ctx->last_widget_state, + &ctx->style.combo.button, sym, style->font); + + /* draw image */ + image.x = header.x + style->combo.content_padding.x; + image.y = header.y + style->combo.content_padding.y; + image.h = header.h - 2 * style->combo.content_padding.y; + image.w = image.h; + nk_draw_image(&win->buffer, image, &img, nk_white); + + /* draw label */ + text.padding = nk_vec2(0,0); + label.x = image.x + image.w + style->combo.spacing.x + style->combo.content_padding.x; + label.y = header.y + style->combo.content_padding.y; + label.w = (button.x - style->combo.content_padding.x) - label.x; + label.h = header.h - 2 * style->combo.content_padding.y; + nk_widget_text(&win->buffer, label, selected, len, &text, NK_TEXT_LEFT, style->font); + } + return nk_combo_begin(ctx, win, size, is_clicked, header); +} +NK_API int +nk_combo_begin_symbol_label(struct nk_context *ctx, + const char *selected, enum nk_symbol_type type, struct nk_vec2 size) +{ + return nk_combo_begin_symbol_text(ctx, selected, nk_strlen(selected), type, size); +} +NK_API int +nk_combo_begin_image_label(struct nk_context *ctx, + const char *selected, struct nk_image img, struct nk_vec2 size) +{ + return nk_combo_begin_image_text(ctx, selected, nk_strlen(selected), img, size); +} +NK_API int +nk_combo_item_text(struct nk_context *ctx, const char *text, int len,nk_flags align) +{ + return nk_contextual_item_text(ctx, text, len, align); +} +NK_API int +nk_combo_item_label(struct nk_context *ctx, const char *label, nk_flags align) +{ + return nk_contextual_item_label(ctx, label, align); +} +NK_API int +nk_combo_item_image_text(struct nk_context *ctx, struct nk_image img, const char *text, + int len, nk_flags alignment) +{ + return nk_contextual_item_image_text(ctx, img, text, len, alignment); +} +NK_API int +nk_combo_item_image_label(struct nk_context *ctx, struct nk_image img, + const char *text, nk_flags alignment) +{ + return nk_contextual_item_image_label(ctx, img, text, alignment); +} +NK_API int +nk_combo_item_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, + const char *text, int len, nk_flags alignment) +{ + return nk_contextual_item_symbol_text(ctx, sym, text, len, alignment); +} +NK_API int +nk_combo_item_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, + const char *label, nk_flags alignment) +{ + return nk_contextual_item_symbol_label(ctx, sym, label, alignment); +} +NK_API void nk_combo_end(struct nk_context *ctx) +{ + nk_contextual_end(ctx); +} +NK_API void nk_combo_close(struct nk_context *ctx) +{ + nk_contextual_close(ctx); +} +NK_API int +nk_combo(struct nk_context *ctx, const char **items, int count, + int selected, int item_height, struct nk_vec2 size) +{ + int i = 0; + int max_height; + struct nk_vec2 item_spacing; + struct nk_vec2 window_padding; + + NK_ASSERT(ctx); + NK_ASSERT(items); + NK_ASSERT(ctx->current); + if (!ctx || !items ||!count) + return selected; + + item_spacing = ctx->style.window.spacing; + window_padding = nk_panel_get_padding(&ctx->style, ctx->current->layout->type); + max_height = count * item_height + count * (int)item_spacing.y; + max_height += (int)item_spacing.y * 2 + (int)window_padding.y * 2; + size.y = NK_MIN(size.y, (float)max_height); + if (nk_combo_begin_label(ctx, items[selected], size)) { + nk_layout_row_dynamic(ctx, (float)item_height, 1); + for (i = 0; i < count; ++i) { + if (nk_combo_item_label(ctx, items[i], NK_TEXT_LEFT)) + selected = i; + } + nk_combo_end(ctx); + } + return selected; +} +NK_API int +nk_combo_separator(struct nk_context *ctx, const char *items_separated_by_separator, + int separator, int selected, int count, int item_height, struct nk_vec2 size) +{ + int i; + int max_height; + struct nk_vec2 item_spacing; + struct nk_vec2 window_padding; + const char *current_item; + const char *iter; + int length = 0; + + NK_ASSERT(ctx); + NK_ASSERT(items_separated_by_separator); + if (!ctx || !items_separated_by_separator) + return selected; + + /* calculate popup window */ + item_spacing = ctx->style.window.spacing; + window_padding = nk_panel_get_padding(&ctx->style, ctx->current->layout->type); + max_height = count * item_height + count * (int)item_spacing.y; + max_height += (int)item_spacing.y * 2 + (int)window_padding.y * 2; + size.y = NK_MIN(size.y, (float)max_height); + + /* find selected item */ + current_item = items_separated_by_separator; + for (i = 0; i < count; ++i) { + iter = current_item; + while (*iter && *iter != separator) iter++; + length = (int)(iter - current_item); + if (i == selected) break; + current_item = iter + 1; + } + + if (nk_combo_begin_text(ctx, current_item, length, size)) { + current_item = items_separated_by_separator; + nk_layout_row_dynamic(ctx, (float)item_height, 1); + for (i = 0; i < count; ++i) { + iter = current_item; + while (*iter && *iter != separator) iter++; + length = (int)(iter - current_item); + if (nk_combo_item_text(ctx, current_item, length, NK_TEXT_LEFT)) + selected = i; + current_item = current_item + length + 1; + } + nk_combo_end(ctx); + } + return selected; +} +NK_API int +nk_combo_string(struct nk_context *ctx, const char *items_separated_by_zeros, + int selected, int count, int item_height, struct nk_vec2 size) +{ + return nk_combo_separator(ctx, items_separated_by_zeros, '\0', selected, count, item_height, size); +} +NK_API int +nk_combo_callback(struct nk_context *ctx, void(*item_getter)(void*, int, const char**), + void *userdata, int selected, int count, int item_height, struct nk_vec2 size) +{ + int i; + int max_height; + struct nk_vec2 item_spacing; + struct nk_vec2 window_padding; + const char *item; + + NK_ASSERT(ctx); + NK_ASSERT(item_getter); + if (!ctx || !item_getter) + return selected; + + /* calculate popup window */ + item_spacing = ctx->style.window.spacing; + window_padding = nk_panel_get_padding(&ctx->style, ctx->current->layout->type); + max_height = count * item_height + count * (int)item_spacing.y; + max_height += (int)item_spacing.y * 2 + (int)window_padding.y * 2; + size.y = NK_MIN(size.y, (float)max_height); + + item_getter(userdata, selected, &item); + if (nk_combo_begin_label(ctx, item, size)) { + nk_layout_row_dynamic(ctx, (float)item_height, 1); + for (i = 0; i < count; ++i) { + item_getter(userdata, i, &item); + if (nk_combo_item_label(ctx, item, NK_TEXT_LEFT)) + selected = i; + } + nk_combo_end(ctx); + } return selected; +} +NK_API void +nk_combobox(struct nk_context *ctx, const char **items, int count, + int *selected, int item_height, struct nk_vec2 size) +{ + *selected = nk_combo(ctx, items, count, *selected, item_height, size); +} +NK_API void +nk_combobox_string(struct nk_context *ctx, const char *items_separated_by_zeros, + int *selected, int count, int item_height, struct nk_vec2 size) +{ + *selected = nk_combo_string(ctx, items_separated_by_zeros, *selected, count, item_height, size); +} +NK_API void +nk_combobox_separator(struct nk_context *ctx, const char *items_separated_by_separator, + int separator,int *selected, int count, int item_height, struct nk_vec2 size) +{ + *selected = nk_combo_separator(ctx, items_separated_by_separator, separator, + *selected, count, item_height, size); +} +NK_API void +nk_combobox_callback(struct nk_context *ctx, + void(*item_getter)(void* data, int id, const char **out_text), + void *userdata, int *selected, int count, int item_height, struct nk_vec2 size) +{ + *selected = nk_combo_callback(ctx, item_getter, userdata, *selected, count, item_height, size); +} + + + + + +/* =============================================================== + * + * TOOLTIP + * + * ===============================================================*/ +NK_API int +nk_tooltip_begin(struct nk_context *ctx, float width) +{ + int x,y,w,h; + struct nk_window *win; + const struct nk_input *in; + struct nk_rect bounds; + int ret; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + if (!ctx || !ctx->current || !ctx->current->layout) + return 0; + + /* make sure that no nonblocking popup is currently active */ + win = ctx->current; + in = &ctx->input; + if (win->popup.win && (win->popup.type & NK_PANEL_SET_NONBLOCK)) + return 0; + + w = nk_iceilf(width); + h = nk_iceilf(nk_null_rect.h); + x = nk_ifloorf(in->mouse.pos.x + 1) - (int)win->layout->clip.x; + y = nk_ifloorf(in->mouse.pos.y + 1) - (int)win->layout->clip.y; + + bounds.x = (float)x; + bounds.y = (float)y; + bounds.w = (float)w; + bounds.h = (float)h; + + ret = nk_popup_begin(ctx, NK_POPUP_DYNAMIC, + "__##Tooltip##__", NK_WINDOW_NO_SCROLLBAR|NK_WINDOW_BORDER, bounds); + if (ret) win->layout->flags &= ~(nk_flags)NK_WINDOW_ROM; + win->popup.type = NK_PANEL_TOOLTIP; + ctx->current->layout->type = NK_PANEL_TOOLTIP; + return ret; +} + +NK_API void +nk_tooltip_end(struct nk_context *ctx) +{ + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + if (!ctx || !ctx->current) return; + ctx->current->seq--; + nk_popup_close(ctx); + nk_popup_end(ctx); +} +NK_API void +nk_tooltip(struct nk_context *ctx, const char *text) +{ + const struct nk_style *style; + struct nk_vec2 padding; + + int text_len; + float text_width; + float text_height; + + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + NK_ASSERT(text); + if (!ctx || !ctx->current || !ctx->current->layout || !text) + return; + + /* fetch configuration data */ + style = &ctx->style; + padding = style->window.padding; + + /* calculate size of the text and tooltip */ + text_len = nk_strlen(text); + text_width = style->font->width(style->font->userdata, + style->font->height, text, text_len); + text_width += (4 * padding.x); + text_height = (style->font->height + 2 * padding.y); + + /* execute tooltip and fill with text */ + if (nk_tooltip_begin(ctx, (float)text_width)) { + nk_layout_row_dynamic(ctx, (float)text_height, 1); + nk_text(ctx, text, text_len, NK_TEXT_LEFT); + nk_tooltip_end(ctx); + } +} +#ifdef NK_INCLUDE_STANDARD_VARARGS +NK_API void +nk_tooltipf(struct nk_context *ctx, const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + nk_tooltipfv(ctx, fmt, args); + va_end(args); +} +NK_API void +nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) +{ + char buf[256]; + nk_strfmt(buf, NK_LEN(buf), fmt, args); + nk_tooltip(ctx, buf); +} +#endif + + + +#endif /* NK_IMPLEMENTATION */ + +/* +/// ## License +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~none +/// ------------------------------------------------------------------------------ +/// This software is available under 2 licenses -- choose whichever you prefer. +/// ------------------------------------------------------------------------------ +/// ALTERNATIVE A - MIT License +/// Copyright (c) 2016-2018 Micha Mettke +/// Permission is hereby granted, free of charge, to any person obtaining a copy of +/// this software and associated documentation files (the "Software"), to deal in +/// the Software without restriction, including without limitation the rights to +/// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +/// of the Software, and to permit persons to whom the Software is furnished to do +/// so, subject to the following conditions: +/// The above copyright notice and this permission notice shall be included in all +/// copies or substantial portions of the Software. +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +/// SOFTWARE. +/// ------------------------------------------------------------------------------ +/// ALTERNATIVE B - Public Domain (www.unlicense.org) +/// This is free and unencumbered software released into the public domain. +/// Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +/// software, either in source code form or as a compiled binary, for any purpose, +/// commercial or non-commercial, and by any means. +/// In jurisdictions that recognize copyright laws, the author or authors of this +/// software dedicate any and all copyright interest in the software to the public +/// domain. We make this dedication for the benefit of the public at large and to +/// the detriment of our heirs and successors. We intend this dedication to be an +/// overt act of relinquishment in perpetuity of all present and future rights to +/// this software under copyright law. +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +/// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +/// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +/// ------------------------------------------------------------------------------ +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +/// ## Changelog +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~none +/// [date][x.yy.zz]-[description] +/// -[date]: date on which the change has been pushed +/// -[x.yy.zz]: Numerical version string representation. Each version number on the right +/// resets back to zero if version on the left is incremented. +/// - [x]: Major version with API and library breaking changes +/// - [yy]: Minor version with non-breaking API and library changes +/// - [zz]: Bug fix version with no direct changes to API +/// +/// - 2019/09/20 (4.01.3) - Fixed a bug wherein combobox cannot be closed by clicking the header +/// when NK_BUTTON_TRIGGER_ON_RELEASE is defined. +/// - 2019/09/10 (4.01.2) - Fixed the nk_cos function, which deviated significantly. +/// - 2019/09/08 (4.01.1) - Fixed a bug wherein re-baking of fonts caused a segmentation +/// fault due to dst_font->glyph_count not being zeroed on subsequent +/// bakes of the same set of fonts. +/// - 2019/06/23 (4.01.0) - Added nk_***_get_scroll and nk_***_set_scroll for groups, windows, and popups. +/// - 2019/06/12 (4.00.3) - Fix panel background drawing bug. +/// - 2018/10/31 (4.00.2) - Added NK_KEYSTATE_BASED_INPUT to "fix" state based backends +/// like GLFW without breaking key repeat behavior on event based. +/// - 2018/04/01 (4.00.1) - Fixed calling `nk_convert` multiple time per single frame. +/// - 2018/04/01 (4.00.0) - BREAKING CHANGE: nk_draw_list_clear no longer tries to +/// clear provided buffers. So make sure to either free +/// or clear each passed buffer after calling nk_convert. +/// - 2018/02/23 (3.00.6) - Fixed slider dragging behavior. +/// - 2018/01/31 (3.00.5) - Fixed overcalculation of cursor data in font baking process. +/// - 2018/01/31 (3.00.4) - Removed name collision with stb_truetype. +/// - 2018/01/28 (3.00.3) - Fixed panel window border drawing bug. +/// - 2018/01/12 (3.00.2) - Added `nk_group_begin_titled` for separed group identifier and title. +/// - 2018/01/07 (3.00.1) - Started to change documentation style. +/// - 2018/01/05 (3.00.0) - BREAKING CHANGE: The previous color picker API was broken +/// because of conversions between float and byte color representation. +/// Color pickers now use floating point values to represent +/// HSV values. To get back the old behavior I added some additional +/// color conversion functions to cast between nk_color and +/// nk_colorf. +/// - 2017/12/23 (2.00.7) - Fixed small warning. +/// - 2017/12/23 (2.00.7) - Fixed `nk_edit_buffer` behavior if activated to allow input. +/// - 2017/12/23 (2.00.7) - Fixed modifyable progressbar dragging visuals and input behavior. +/// - 2017/12/04 (2.00.6) - Added formated string tooltip widget. +/// - 2017/11/18 (2.00.5) - Fixed window becoming hidden with flag `NK_WINDOW_NO_INPUT`. +/// - 2017/11/15 (2.00.4) - Fixed font merging. +/// - 2017/11/07 (2.00.3) - Fixed window size and position modifier functions. +/// - 2017/09/14 (2.00.2) - Fixed `nk_edit_buffer` and `nk_edit_focus` behavior. +/// - 2017/09/14 (2.00.1) - Fixed window closing behavior. +/// - 2017/09/14 (2.00.0) - BREAKING CHANGE: Modifing window position and size funtions now +/// require the name of the window and must happen outside the window +/// building process (between function call nk_begin and nk_end). +/// - 2017/09/11 (1.40.9) - Fixed window background flag if background window is declared last. +/// - 2017/08/27 (1.40.8) - Fixed `nk_item_is_any_active` for hidden windows. +/// - 2017/08/27 (1.40.7) - Fixed window background flag. +/// - 2017/07/07 (1.40.6) - Fixed missing clipping rect check for hovering/clicked +/// query for widgets. +/// - 2017/07/07 (1.40.5) - Fixed drawing bug for vertex output for lines and stroked +/// and filled rectangles. +/// - 2017/07/07 (1.40.4) - Fixed bug in nk_convert trying to add windows that are in +/// process of being destroyed. +/// - 2017/07/07 (1.40.3) - Fixed table internal bug caused by storing table size in +/// window instead of directly in table. +/// - 2017/06/30 (1.40.2) - Removed unneeded semicolon in C++ NK_ALIGNOF macro. +/// - 2017/06/30 (1.40.1) - Fixed drawing lines smaller or equal zero. +/// - 2017/06/08 (1.40.0) - Removed the breaking part of last commit. Auto layout now only +/// comes in effect if you pass in zero was row height argument. +/// - 2017/06/08 (1.40.0) - BREAKING CHANGE: while not directly API breaking it will change +/// how layouting works. From now there will be an internal minimum +/// row height derived from font height. If you need a row smaller than +/// that you can directly set it by `nk_layout_set_min_row_height` and +/// reset the value back by calling `nk_layout_reset_min_row_height. +/// - 2017/06/08 (1.39.1) - Fixed property text edit handling bug caused by past `nk_widget` fix. +/// - 2017/06/08 (1.39.0) - Added function to retrieve window space without calling a `nk_layout_xxx` function. +/// - 2017/06/06 (1.38.5) - Fixed `nk_convert` return flag for command buffer. +/// - 2017/05/23 (1.38.4) - Fixed activation behavior for widgets partially clipped. +/// - 2017/05/10 (1.38.3) - Fixed wrong min window size mouse scaling over boundries. +/// - 2017/05/09 (1.38.2) - Fixed vertical scrollbar drawing with not enough space. +/// - 2017/05/09 (1.38.1) - Fixed scaler dragging behavior if window size hits minimum size. +/// - 2017/05/06 (1.38.0) - Added platform double-click support. +/// - 2017/04/20 (1.37.1) - Fixed key repeat found inside glfw demo backends. +/// - 2017/04/20 (1.37.0) - Extended properties with selection and clipboard support. +/// - 2017/04/20 (1.36.2) - Fixed #405 overlapping rows with zero padding and spacing. +/// - 2017/04/09 (1.36.1) - Fixed #403 with another widget float error. +/// - 2017/04/09 (1.36.0) - Added window `NK_WINDOW_NO_INPUT` and `NK_WINDOW_NOT_INTERACTIVE` flags. +/// - 2017/04/09 (1.35.3) - Fixed buffer heap corruption. +/// - 2017/03/25 (1.35.2) - Fixed popup overlapping for `NK_WINDOW_BACKGROUND` windows. +/// - 2017/03/25 (1.35.1) - Fixed windows closing behavior. +/// - 2017/03/18 (1.35.0) - Added horizontal scroll requested in #377. +/// - 2017/03/18 (1.34.3) - Fixed long window header titles. +/// - 2017/03/04 (1.34.2) - Fixed text edit filtering. +/// - 2017/03/04 (1.34.1) - Fixed group closable flag. +/// - 2017/02/25 (1.34.0) - Added custom draw command for better language binding support. +/// - 2017/01/24 (1.33.0) - Added programatic way of remove edit focus. +/// - 2017/01/24 (1.32.3) - Fixed wrong define for basic type definitions for windows. +/// - 2017/01/21 (1.32.2) - Fixed input capture from hidden or closed windows. +/// - 2017/01/21 (1.32.1) - Fixed slider behavior and drawing. +/// - 2017/01/13 (1.32.0) - Added flag to put scaler into the bottom left corner. +/// - 2017/01/13 (1.31.0) - Added additional row layouting method to combine both +/// dynamic and static widgets. +/// - 2016/12/31 (1.30.0) - Extended scrollbar offset from 16-bit to 32-bit. +/// - 2016/12/31 (1.29.2) - Fixed closing window bug of minimized windows. +/// - 2016/12/03 (1.29.1) - Fixed wrapped text with no seperator and C89 error. +/// - 2016/12/03 (1.29.0) - Changed text wrapping to process words not characters. +/// - 2016/11/22 (1.28.6) - Fixed window minimized closing bug. +/// - 2016/11/19 (1.28.5) - Fixed abstract combo box closing behavior. +/// - 2016/11/19 (1.28.4) - Fixed tooltip flickering. +/// - 2016/11/19 (1.28.3) - Fixed memory leak caused by popup repeated closing. +/// - 2016/11/18 (1.28.2) - Fixed memory leak caused by popup panel allocation. +/// - 2016/11/10 (1.28.1) - Fixed some warnings and C++ error. +/// - 2016/11/10 (1.28.0) - Added additional `nk_button` versions which allows to directly +/// pass in a style struct to change buttons visual. +/// - 2016/11/10 (1.27.0) - Added additional `nk_tree` versions to support external state +/// storage. Just like last the `nk_group` commit the main +/// advantage is that you optionally can minimize nuklears runtime +/// memory consumption or handle hash collisions. +/// - 2016/11/09 (1.26.0) - Added additional `nk_group` version to support external scrollbar +/// offset storage. Main advantage is that you can externalize +/// the memory management for the offset. It could also be helpful +/// if you have a hash collision in `nk_group_begin` but really +/// want the name. In addition I added `nk_list_view` which allows +/// to draw big lists inside a group without actually having to +/// commit the whole list to nuklear (issue #269). +/// - 2016/10/30 (1.25.1) - Fixed clipping rectangle bug inside `nk_draw_list`. +/// - 2016/10/29 (1.25.0) - Pulled `nk_panel` memory management into nuklear and out of +/// the hands of the user. From now on users don't have to care +/// about panels unless they care about some information. If you +/// still need the panel just call `nk_window_get_panel`. +/// - 2016/10/21 (1.24.0) - Changed widget border drawing to stroked rectangle from filled +/// rectangle for less overdraw and widget background transparency. +/// - 2016/10/18 (1.23.0) - Added `nk_edit_focus` for manually edit widget focus control. +/// - 2016/09/29 (1.22.7) - Fixed deduction of basic type in non `` compilation. +/// - 2016/09/29 (1.22.6) - Fixed edit widget UTF-8 text cursor drawing bug. +/// - 2016/09/28 (1.22.5) - Fixed edit widget UTF-8 text appending/inserting/removing. +/// - 2016/09/28 (1.22.4) - Fixed drawing bug inside edit widgets which offset all text +/// text in every edit widget if one of them is scrolled. +/// - 2016/09/28 (1.22.3) - Fixed small bug in edit widgets if not active. The wrong +/// text length is passed. It should have been in bytes but +/// was passed as glyphes. +/// - 2016/09/20 (1.22.2) - Fixed color button size calculation. +/// - 2016/09/20 (1.22.1) - Fixed some `nk_vsnprintf` behavior bugs and removed `` +/// again from `NK_INCLUDE_STANDARD_VARARGS`. +/// - 2016/09/18 (1.22.0) - C89 does not support vsnprintf only C99 and newer as well +/// as C++11 and newer. In addition to use vsnprintf you have +/// to include . So just defining `NK_INCLUDE_STD_VAR_ARGS` +/// is not enough. That behavior is now fixed. By default if +/// both varargs as well as stdio is selected I try to use +/// vsnprintf if not possible I will revert to vsprintf. If +/// varargs but not stdio was defined I will use my own function. +/// - 2016/09/15 (1.21.2) - Fixed panel `close` behavior for deeper panel levels. +/// - 2016/09/15 (1.21.1) - Fixed C++ errors and wrong argument to `nk_panel_get_xxxx`. +/// - 2016/09/13 (1.21.0) - !BREAKING! Fixed nonblocking popup behavior in menu, combo, +/// and contextual which prevented closing in y-direction if +/// popup did not reach max height. +/// In addition the height parameter was changed into vec2 +/// for width and height to have more control over the popup size. +/// - 2016/09/13 (1.20.3) - Cleaned up and extended type selection. +/// - 2016/09/13 (1.20.2) - Fixed slider behavior hopefully for the last time. This time +/// all calculation are correct so no more hackery. +/// - 2016/09/13 (1.20.1) - Internal change to divide window/panel flags into panel flags and types. +/// Suprisinly spend years in C and still happened to confuse types +/// with flags. Probably something to take note. +/// - 2016/09/08 (1.20.0) - Added additional helper function to make it easier to just +/// take the produced buffers from `nk_convert` and unplug the +/// iteration process from `nk_context`. So now you can +/// just use the vertex,element and command buffer + two pointer +/// inside the command buffer retrieved by calls `nk__draw_begin` +/// and `nk__draw_end` and macro `nk_draw_foreach_bounded`. +/// - 2016/09/08 (1.19.0) - Added additional asserts to make sure every `nk_xxx_begin` call +/// for windows, popups, combobox, menu and contextual is guarded by +/// `if` condition and does not produce false drawing output. +/// - 2016/09/08 (1.18.0) - Changed confusing name for `NK_SYMBOL_RECT_FILLED`, `NK_SYMBOL_RECT` +/// to hopefully easier to understand `NK_SYMBOL_RECT_FILLED` and +/// `NK_SYMBOL_RECT_OUTLINE`. +/// - 2016/09/08 (1.17.0) - Changed confusing name for `NK_SYMBOL_CIRLCE_FILLED`, `NK_SYMBOL_CIRCLE` +/// to hopefully easier to understand `NK_SYMBOL_CIRCLE_FILLED` and +/// `NK_SYMBOL_CIRCLE_OUTLINE`. +/// - 2016/09/08 (1.16.0) - Added additional checks to select correct types if `NK_INCLUDE_FIXED_TYPES` +/// is not defined by supporting the biggest compiler GCC, clang and MSVC. +/// - 2016/09/07 (1.15.3) - Fixed `NK_INCLUDE_COMMAND_USERDATA` define to not cause an error. +/// - 2016/09/04 (1.15.2) - Fixed wrong combobox height calculation. +/// - 2016/09/03 (1.15.1) - Fixed gaps inside combo boxes in OpenGL. +/// - 2016/09/02 (1.15.0) - Changed nuklear to not have any default vertex layout and +/// instead made it user provided. The range of types to convert +/// to is quite limited at the moment, but I would be more than +/// happy to accept PRs to add additional. +/// - 2016/08/30 (1.14.2) - Removed unused variables. +/// - 2016/08/30 (1.14.1) - Fixed C++ build errors. +/// - 2016/08/30 (1.14.0) - Removed mouse dragging from SDL demo since it does not work correctly. +/// - 2016/08/30 (1.13.4) - Tweaked some default styling variables. +/// - 2016/08/30 (1.13.3) - Hopefully fixed drawing bug in slider, in general I would +/// refrain from using slider with a big number of steps. +/// - 2016/08/30 (1.13.2) - Fixed close and minimize button which would fire even if the +/// window was in Read Only Mode. +/// - 2016/08/30 (1.13.1) - Fixed popup panel padding handling which was previously just +/// a hack for combo box and menu. +/// - 2016/08/30 (1.13.0) - Removed `NK_WINDOW_DYNAMIC` flag from public API since +/// it is bugged and causes issues in window selection. +/// - 2016/08/30 (1.12.0) - Removed scaler size. The size of the scaler is now +/// determined by the scrollbar size. +/// - 2016/08/30 (1.11.2) - Fixed some drawing bugs caused by changes from 1.11.0. +/// - 2016/08/30 (1.11.1) - Fixed overlapping minimized window selection. +/// - 2016/08/30 (1.11.0) - Removed some internal complexity and overly complex code +/// handling panel padding and panel border. +/// - 2016/08/29 (1.10.0) - Added additional height parameter to `nk_combobox_xxx`. +/// - 2016/08/29 (1.10.0) - Fixed drawing bug in dynamic popups. +/// - 2016/08/29 (1.10.0) - Added experimental mouse scrolling to popups, menus and comboboxes. +/// - 2016/08/26 (1.10.0) - Added window name string prepresentation to account for +/// hash collisions. Currently limited to `NK_WINDOW_MAX_NAME` +/// which in term can be redefined if not big enough. +/// - 2016/08/26 (1.10.0) - Added stacks for temporary style/UI changes in code. +/// - 2016/08/25 (1.10.0) - Changed `nk_input_is_key_pressed` and 'nk_input_is_key_released' +/// to account for key press and release happening in one frame. +/// - 2016/08/25 (1.10.0) - Added additional nk_edit flag to directly jump to the end on activate. +/// - 2016/08/17 (1.09.6) - Removed invalid check for value zero in `nk_propertyx`. +/// - 2016/08/16 (1.09.5) - Fixed ROM mode for deeper levels of popup windows parents. +/// - 2016/08/15 (1.09.4) - Editbox are now still active if enter was pressed with flag +/// `NK_EDIT_SIG_ENTER`. Main reasoning is to be able to keep +/// typing after commiting. +/// - 2016/08/15 (1.09.4) - Removed redundant code. +/// - 2016/08/15 (1.09.4) - Fixed negative numbers in `nk_strtoi` and remove unused variable. +/// - 2016/08/15 (1.09.3) - Fixed `NK_WINDOW_BACKGROUND` flag behavior to select a background +/// window only as selected by hovering and not by clicking. +/// - 2016/08/14 (1.09.2) - Fixed a bug in font atlas which caused wrong loading +/// of glyphes for font with multiple ranges. +/// - 2016/08/12 (1.09.1) - Added additional function to check if window is currently +/// hidden and therefore not visible. +/// - 2016/08/12 (1.09.1) - nk_window_is_closed now queries the correct flag `NK_WINDOW_CLOSED` +/// instead of the old flag `NK_WINDOW_HIDDEN`. +/// - 2016/08/09 (1.09.0) - Added additional double version to nk_property and changed +/// the underlying implementation to not cast to float and instead +/// work directly on the given values. +/// - 2016/08/09 (1.08.0) - Added additional define to overwrite library internal +/// floating pointer number to string conversion for additional +/// precision. +/// - 2016/08/09 (1.08.0) - Added additional define to overwrite library internal +/// string to floating point number conversion for additional +/// precision. +/// - 2016/08/08 (1.07.2) - Fixed compiling error without define `NK_INCLUDE_FIXED_TYPE`. +/// - 2016/08/08 (1.07.1) - Fixed possible floating point error inside `nk_widget` leading +/// to wrong wiget width calculation which results in widgets falsly +/// becomming tagged as not inside window and cannot be accessed. +/// - 2016/08/08 (1.07.0) - Nuklear now differentiates between hiding a window (NK_WINDOW_HIDDEN) and +/// closing a window (NK_WINDOW_CLOSED). A window can be hidden/shown +/// by using `nk_window_show` and closed by either clicking the close +/// icon in a window or by calling `nk_window_close`. Only closed +/// windows get removed at the end of the frame while hidden windows +/// remain. +/// - 2016/08/08 (1.06.0) - Added `nk_edit_string_zero_terminated` as a second option to +/// `nk_edit_string` which takes, edits and outputs a '\0' terminated string. +/// - 2016/08/08 (1.05.4) - Fixed scrollbar auto hiding behavior. +/// - 2016/08/08 (1.05.3) - Fixed wrong panel padding selection in `nk_layout_widget_space`. +/// - 2016/08/07 (1.05.2) - Fixed old bug in dynamic immediate mode layout API, calculating +/// wrong item spacing and panel width. +/// - 2016/08/07 (1.05.1) - Hopefully finally fixed combobox popup drawing bug. +/// - 2016/08/07 (1.05.0) - Split varargs away from `NK_INCLUDE_STANDARD_IO` into own +/// define `NK_INCLUDE_STANDARD_VARARGS` to allow more fine +/// grained controlled over library includes. +/// - 2016/08/06 (1.04.5) - Changed memset calls to `NK_MEMSET`. +/// - 2016/08/04 (1.04.4) - Fixed fast window scaling behavior. +/// - 2016/08/04 (1.04.3) - Fixed window scaling, movement bug which appears if you +/// move/scale a window and another window is behind it. +/// If you are fast enough then the window behind gets activated +/// and the operation is blocked. I now require activating +/// by hovering only if mouse is not pressed. +/// - 2016/08/04 (1.04.2) - Fixed changing fonts. +/// - 2016/08/03 (1.04.1) - Fixed `NK_WINDOW_BACKGROUND` behavior. +/// - 2016/08/03 (1.04.0) - Added color parameter to `nk_draw_image`. +/// - 2016/08/03 (1.04.0) - Added additional window padding style attributes for +/// sub windows (combo, menu, ...). +/// - 2016/08/03 (1.04.0) - Added functions to show/hide software cursor. +/// - 2016/08/03 (1.04.0) - Added `NK_WINDOW_BACKGROUND` flag to force a window +/// to be always in the background of the screen. +/// - 2016/08/03 (1.03.2) - Removed invalid assert macro for NK_RGB color picker. +/// - 2016/08/01 (1.03.1) - Added helper macros into header include guard. +/// - 2016/07/29 (1.03.0) - Moved the window/table pool into the header part to +/// simplify memory management by removing the need to +/// allocate the pool. +/// - 2016/07/29 (1.02.0) - Added auto scrollbar hiding window flag which if enabled +/// will hide the window scrollbar after NK_SCROLLBAR_HIDING_TIMEOUT +/// seconds without window interaction. To make it work +/// you have to also set a delta time inside the `nk_context`. +/// - 2016/07/25 (1.01.1) - Fixed small panel and panel border drawing bugs. +/// - 2016/07/15 (1.01.0) - Added software cursor to `nk_style` and `nk_context`. +/// - 2016/07/15 (1.01.0) - Added const correctness to `nk_buffer_push' data argument. +/// - 2016/07/15 (1.01.0) - Removed internal font baking API and simplified +/// font atlas memory management by converting pointer +/// arrays for fonts and font configurations to lists. +/// - 2016/07/15 (1.00.0) - Changed button API to use context dependend button +/// behavior instead of passing it for every function call. +/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/// ## Gallery +/// ![Figure [blue]: Feature overview with blue color styling](https://cloud.githubusercontent.com/assets/8057201/13538240/acd96876-e249-11e5-9547-5ac0b19667a0.png) +/// ![Figure [red]: Feature overview with red color styling](https://cloud.githubusercontent.com/assets/8057201/13538243/b04acd4c-e249-11e5-8fd2-ad7744a5b446.png) +/// ![Figure [widgets]: Widget overview](https://cloud.githubusercontent.com/assets/8057201/11282359/3325e3c6-8eff-11e5-86cb-cf02b0596087.png) +/// ![Figure [blackwhite]: Black and white](https://cloud.githubusercontent.com/assets/8057201/11033668/59ab5d04-86e5-11e5-8091-c56f16411565.png) +/// ![Figure [filexp]: File explorer](https://cloud.githubusercontent.com/assets/8057201/10718115/02a9ba08-7b6b-11e5-950f-adacdd637739.png) +/// ![Figure [opengl]: OpenGL Editor](https://cloud.githubusercontent.com/assets/8057201/12779619/2a20d72c-ca69-11e5-95fe-4edecf820d5c.png) +/// ![Figure [nodedit]: Node Editor](https://cloud.githubusercontent.com/assets/8057201/9976995/e81ac04a-5ef7-11e5-872b-acd54fbeee03.gif) +/// ![Figure [skinning]: Using skinning in Nuklear](https://cloud.githubusercontent.com/assets/8057201/15991632/76494854-30b8-11e6-9555-a69840d0d50b.png) +/// ![Figure [bf]: Heavy modified version](https://cloud.githubusercontent.com/assets/8057201/14902576/339926a8-0d9c-11e6-9fee-a8b73af04473.png) +/// +/// ## Credits +/// Developed by Micha Mettke and every direct or indirect github contributor.

+/// +/// Embeds [stb_texedit](https://github.com/nothings/stb/blob/master/stb_textedit.h), [stb_truetype](https://github.com/nothings/stb/blob/master/stb_truetype.h) and [stb_rectpack](https://github.com/nothings/stb/blob/master/stb_rect_pack.h) by Sean Barret (public domain)
+/// Uses [stddoc.c](https://github.com/r-lyeh/stddoc.c) from r-lyeh@github.com for documentation generation

+/// Embeds ProggyClean.ttf font by Tristan Grimmer (MIT license).
+/// +/// Big thank you to Omar Cornut (ocornut@github) for his [imgui library](https://github.com/ocornut/imgui) and +/// giving me the inspiration for this library, Casey Muratori for handmade hero +/// and his original immediate mode graphical user interface idea and Sean +/// Barret for his amazing single header libraries which restored my faith +/// in libraries and brought me to create some of my own. Finally Apoorva Joshi +/// for his single header file packer. +*/ + diff --git a/lib/glfw/deps/nuklear_glfw_gl2.h b/lib/glfw/deps/nuklear_glfw_gl2.h new file mode 100644 index 0000000..a959b14 --- /dev/null +++ b/lib/glfw/deps/nuklear_glfw_gl2.h @@ -0,0 +1,381 @@ +/* + * Nuklear - v1.32.0 - public domain + * no warrenty implied; use at your own risk. + * authored from 2015-2017 by Micha Mettke + */ +/* + * ============================================================== + * + * API + * + * =============================================================== + */ +#ifndef NK_GLFW_GL2_H_ +#define NK_GLFW_GL2_H_ + +#include + +enum nk_glfw_init_state{ + NK_GLFW3_DEFAULT = 0, + NK_GLFW3_INSTALL_CALLBACKS +}; +NK_API struct nk_context* nk_glfw3_init(GLFWwindow *win, enum nk_glfw_init_state); +NK_API void nk_glfw3_font_stash_begin(struct nk_font_atlas **atlas); +NK_API void nk_glfw3_font_stash_end(void); + +NK_API void nk_glfw3_new_frame(void); +NK_API void nk_glfw3_render(enum nk_anti_aliasing); +NK_API void nk_glfw3_shutdown(void); + +NK_API void nk_glfw3_char_callback(GLFWwindow *win, unsigned int codepoint); +NK_API void nk_gflw3_scroll_callback(GLFWwindow *win, double xoff, double yoff); + +#endif + +/* + * ============================================================== + * + * IMPLEMENTATION + * + * =============================================================== + */ +#ifdef NK_GLFW_GL2_IMPLEMENTATION + +#ifndef NK_GLFW_TEXT_MAX +#define NK_GLFW_TEXT_MAX 256 +#endif +#ifndef NK_GLFW_DOUBLE_CLICK_LO +#define NK_GLFW_DOUBLE_CLICK_LO 0.02 +#endif +#ifndef NK_GLFW_DOUBLE_CLICK_HI +#define NK_GLFW_DOUBLE_CLICK_HI 0.2 +#endif + +struct nk_glfw_device { + struct nk_buffer cmds; + struct nk_draw_null_texture null; + GLuint font_tex; +}; + +struct nk_glfw_vertex { + float position[2]; + float uv[2]; + nk_byte col[4]; +}; + +static struct nk_glfw { + GLFWwindow *win; + int width, height; + int display_width, display_height; + struct nk_glfw_device ogl; + struct nk_context ctx; + struct nk_font_atlas atlas; + struct nk_vec2 fb_scale; + unsigned int text[NK_GLFW_TEXT_MAX]; + int text_len; + struct nk_vec2 scroll; + double last_button_click; + int is_double_click_down; + struct nk_vec2 double_click_pos; +} glfw; + +NK_INTERN void +nk_glfw3_device_upload_atlas(const void *image, int width, int height) +{ + struct nk_glfw_device *dev = &glfw.ogl; + glGenTextures(1, &dev->font_tex); + glBindTexture(GL_TEXTURE_2D, dev->font_tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)width, (GLsizei)height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image); +} + +NK_API void +nk_glfw3_render(enum nk_anti_aliasing AA) +{ + /* setup global state */ + struct nk_glfw_device *dev = &glfw.ogl; + glPushAttrib(GL_ENABLE_BIT|GL_COLOR_BUFFER_BIT|GL_TRANSFORM_BIT); + glDisable(GL_CULL_FACE); + glDisable(GL_DEPTH_TEST); + glEnable(GL_SCISSOR_TEST); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + /* setup viewport/project */ + glViewport(0,0,(GLsizei)glfw.display_width,(GLsizei)glfw.display_height); + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glOrtho(0.0f, glfw.width, glfw.height, 0.0f, -1.0f, 1.0f); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glEnableClientState(GL_COLOR_ARRAY); + { + GLsizei vs = sizeof(struct nk_glfw_vertex); + size_t vp = offsetof(struct nk_glfw_vertex, position); + size_t vt = offsetof(struct nk_glfw_vertex, uv); + size_t vc = offsetof(struct nk_glfw_vertex, col); + + /* convert from command queue into draw list and draw to screen */ + const struct nk_draw_command *cmd; + const nk_draw_index *offset = NULL; + struct nk_buffer vbuf, ebuf; + + /* fill convert configuration */ + struct nk_convert_config config; + static const struct nk_draw_vertex_layout_element vertex_layout[] = { + {NK_VERTEX_POSITION, NK_FORMAT_FLOAT, NK_OFFSETOF(struct nk_glfw_vertex, position)}, + {NK_VERTEX_TEXCOORD, NK_FORMAT_FLOAT, NK_OFFSETOF(struct nk_glfw_vertex, uv)}, + {NK_VERTEX_COLOR, NK_FORMAT_R8G8B8A8, NK_OFFSETOF(struct nk_glfw_vertex, col)}, + {NK_VERTEX_LAYOUT_END} + }; + NK_MEMSET(&config, 0, sizeof(config)); + config.vertex_layout = vertex_layout; + config.vertex_size = sizeof(struct nk_glfw_vertex); + config.vertex_alignment = NK_ALIGNOF(struct nk_glfw_vertex); + config.null = dev->null; + config.circle_segment_count = 22; + config.curve_segment_count = 22; + config.arc_segment_count = 22; + config.global_alpha = 1.0f; + config.shape_AA = AA; + config.line_AA = AA; + + /* convert shapes into vertexes */ + nk_buffer_init_default(&vbuf); + nk_buffer_init_default(&ebuf); + nk_convert(&glfw.ctx, &dev->cmds, &vbuf, &ebuf, &config); + + /* setup vertex buffer pointer */ + {const void *vertices = nk_buffer_memory_const(&vbuf); + glVertexPointer(2, GL_FLOAT, vs, (const void*)((const nk_byte*)vertices + vp)); + glTexCoordPointer(2, GL_FLOAT, vs, (const void*)((const nk_byte*)vertices + vt)); + glColorPointer(4, GL_UNSIGNED_BYTE, vs, (const void*)((const nk_byte*)vertices + vc));} + + /* iterate over and execute each draw command */ + offset = (const nk_draw_index*)nk_buffer_memory_const(&ebuf); + nk_draw_foreach(cmd, &glfw.ctx, &dev->cmds) + { + if (!cmd->elem_count) continue; + glBindTexture(GL_TEXTURE_2D, (GLuint)cmd->texture.id); + glScissor( + (GLint)(cmd->clip_rect.x * glfw.fb_scale.x), + (GLint)((glfw.height - (GLint)(cmd->clip_rect.y + cmd->clip_rect.h)) * glfw.fb_scale.y), + (GLint)(cmd->clip_rect.w * glfw.fb_scale.x), + (GLint)(cmd->clip_rect.h * glfw.fb_scale.y)); + glDrawElements(GL_TRIANGLES, (GLsizei)cmd->elem_count, GL_UNSIGNED_SHORT, offset); + offset += cmd->elem_count; + } + nk_clear(&glfw.ctx); + nk_buffer_free(&vbuf); + nk_buffer_free(&ebuf); + } + + /* default OpenGL state */ + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); + + glDisable(GL_CULL_FACE); + glDisable(GL_DEPTH_TEST); + glDisable(GL_SCISSOR_TEST); + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + + glBindTexture(GL_TEXTURE_2D, 0); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glPopAttrib(); +} + +NK_API void +nk_glfw3_char_callback(GLFWwindow *win, unsigned int codepoint) +{ + (void)win; + if (glfw.text_len < NK_GLFW_TEXT_MAX) + glfw.text[glfw.text_len++] = codepoint; +} + +NK_API void +nk_gflw3_scroll_callback(GLFWwindow *win, double xoff, double yoff) +{ + (void)win; (void)xoff; + glfw.scroll.x += (float)xoff; + glfw.scroll.y += (float)yoff; +} + +NK_API void +nk_glfw3_mouse_button_callback(GLFWwindow* window, int button, int action, int mods) +{ + double x, y; + if (button != GLFW_MOUSE_BUTTON_LEFT) return; + glfwGetCursorPos(window, &x, &y); + if (action == GLFW_PRESS) { + double dt = glfwGetTime() - glfw.last_button_click; + if (dt > NK_GLFW_DOUBLE_CLICK_LO && dt < NK_GLFW_DOUBLE_CLICK_HI) { + glfw.is_double_click_down = nk_true; + glfw.double_click_pos = nk_vec2((float)x, (float)y); + } + glfw.last_button_click = glfwGetTime(); + } else glfw.is_double_click_down = nk_false; +} + +NK_INTERN void +nk_glfw3_clipboard_paste(nk_handle usr, struct nk_text_edit *edit) +{ + const char *text = glfwGetClipboardString(glfw.win); + if (text) nk_textedit_paste(edit, text, nk_strlen(text)); + (void)usr; +} + +NK_INTERN void +nk_glfw3_clipboard_copy(nk_handle usr, const char *text, int len) +{ + char *str = 0; + (void)usr; + if (!len) return; + str = (char*)malloc((size_t)len+1); + if (!str) return; + NK_MEMCPY(str, text, (size_t)len); + str[len] = '\0'; + glfwSetClipboardString(glfw.win, str); + free(str); +} + +NK_API struct nk_context* +nk_glfw3_init(GLFWwindow *win, enum nk_glfw_init_state init_state) +{ + glfw.win = win; + if (init_state == NK_GLFW3_INSTALL_CALLBACKS) { + glfwSetScrollCallback(win, nk_gflw3_scroll_callback); + glfwSetCharCallback(win, nk_glfw3_char_callback); + glfwSetMouseButtonCallback(win, nk_glfw3_mouse_button_callback); + } + nk_init_default(&glfw.ctx, 0); + glfw.ctx.clip.copy = nk_glfw3_clipboard_copy; + glfw.ctx.clip.paste = nk_glfw3_clipboard_paste; + glfw.ctx.clip.userdata = nk_handle_ptr(0); + nk_buffer_init_default(&glfw.ogl.cmds); + + glfw.is_double_click_down = nk_false; + glfw.double_click_pos = nk_vec2(0, 0); + + return &glfw.ctx; +} + +NK_API void +nk_glfw3_font_stash_begin(struct nk_font_atlas **atlas) +{ + nk_font_atlas_init_default(&glfw.atlas); + nk_font_atlas_begin(&glfw.atlas); + *atlas = &glfw.atlas; +} + +NK_API void +nk_glfw3_font_stash_end(void) +{ + const void *image; int w, h; + image = nk_font_atlas_bake(&glfw.atlas, &w, &h, NK_FONT_ATLAS_RGBA32); + nk_glfw3_device_upload_atlas(image, w, h); + nk_font_atlas_end(&glfw.atlas, nk_handle_id((int)glfw.ogl.font_tex), &glfw.ogl.null); + if (glfw.atlas.default_font) + nk_style_set_font(&glfw.ctx, &glfw.atlas.default_font->handle); +} + +NK_API void +nk_glfw3_new_frame(void) +{ + int i; + double x, y; + struct nk_context *ctx = &glfw.ctx; + struct GLFWwindow *win = glfw.win; + + glfwGetWindowSize(win, &glfw.width, &glfw.height); + glfwGetFramebufferSize(win, &glfw.display_width, &glfw.display_height); + glfw.fb_scale.x = (float)glfw.display_width/(float)glfw.width; + glfw.fb_scale.y = (float)glfw.display_height/(float)glfw.height; + + nk_input_begin(ctx); + for (i = 0; i < glfw.text_len; ++i) + nk_input_unicode(ctx, glfw.text[i]); + + /* optional grabbing behavior */ + if (ctx->input.mouse.grab) + glfwSetInputMode(glfw.win, GLFW_CURSOR, GLFW_CURSOR_HIDDEN); + else if (ctx->input.mouse.ungrab) + glfwSetInputMode(glfw.win, GLFW_CURSOR, GLFW_CURSOR_NORMAL); + + nk_input_key(ctx, NK_KEY_DEL, glfwGetKey(win, GLFW_KEY_DELETE) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_ENTER, glfwGetKey(win, GLFW_KEY_ENTER) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TAB, glfwGetKey(win, GLFW_KEY_TAB) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_BACKSPACE, glfwGetKey(win, GLFW_KEY_BACKSPACE) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_UP, glfwGetKey(win, GLFW_KEY_UP) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_DOWN, glfwGetKey(win, GLFW_KEY_DOWN) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TEXT_START, glfwGetKey(win, GLFW_KEY_HOME) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TEXT_END, glfwGetKey(win, GLFW_KEY_END) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_SCROLL_START, glfwGetKey(win, GLFW_KEY_HOME) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_SCROLL_END, glfwGetKey(win, GLFW_KEY_END) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_SCROLL_DOWN, glfwGetKey(win, GLFW_KEY_PAGE_DOWN) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_SCROLL_UP, glfwGetKey(win, GLFW_KEY_PAGE_UP) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_SHIFT, glfwGetKey(win, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS|| + glfwGetKey(win, GLFW_KEY_RIGHT_SHIFT) == GLFW_PRESS); + + if (glfwGetKey(win, GLFW_KEY_LEFT_CONTROL) == GLFW_PRESS || + glfwGetKey(win, GLFW_KEY_RIGHT_CONTROL) == GLFW_PRESS) { + nk_input_key(ctx, NK_KEY_COPY, glfwGetKey(win, GLFW_KEY_C) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_PASTE, glfwGetKey(win, GLFW_KEY_V) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_CUT, glfwGetKey(win, GLFW_KEY_X) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TEXT_UNDO, glfwGetKey(win, GLFW_KEY_Z) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TEXT_REDO, glfwGetKey(win, GLFW_KEY_R) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TEXT_WORD_LEFT, glfwGetKey(win, GLFW_KEY_LEFT) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TEXT_WORD_RIGHT, glfwGetKey(win, GLFW_KEY_RIGHT) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TEXT_LINE_START, glfwGetKey(win, GLFW_KEY_B) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_TEXT_LINE_END, glfwGetKey(win, GLFW_KEY_E) == GLFW_PRESS); + } else { + nk_input_key(ctx, NK_KEY_LEFT, glfwGetKey(win, GLFW_KEY_LEFT) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_RIGHT, glfwGetKey(win, GLFW_KEY_RIGHT) == GLFW_PRESS); + nk_input_key(ctx, NK_KEY_COPY, 0); + nk_input_key(ctx, NK_KEY_PASTE, 0); + nk_input_key(ctx, NK_KEY_CUT, 0); + nk_input_key(ctx, NK_KEY_SHIFT, 0); + } + + glfwGetCursorPos(win, &x, &y); + nk_input_motion(ctx, (int)x, (int)y); + if (ctx->input.mouse.grabbed) { + glfwSetCursorPos(glfw.win, (double)ctx->input.mouse.prev.x, (double)ctx->input.mouse.prev.y); + ctx->input.mouse.pos.x = ctx->input.mouse.prev.x; + ctx->input.mouse.pos.y = ctx->input.mouse.prev.y; + } + + nk_input_button(ctx, NK_BUTTON_LEFT, (int)x, (int)y, glfwGetMouseButton(win, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS); + nk_input_button(ctx, NK_BUTTON_MIDDLE, (int)x, (int)y, glfwGetMouseButton(win, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS); + nk_input_button(ctx, NK_BUTTON_RIGHT, (int)x, (int)y, glfwGetMouseButton(win, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS); + nk_input_button(ctx, NK_BUTTON_DOUBLE, (int)glfw.double_click_pos.x, (int)glfw.double_click_pos.y, glfw.is_double_click_down); + nk_input_scroll(ctx, glfw.scroll); + nk_input_end(&glfw.ctx); + glfw.text_len = 0; + glfw.scroll = nk_vec2(0,0); +} + +NK_API +void nk_glfw3_shutdown(void) +{ + struct nk_glfw_device *dev = &glfw.ogl; + nk_font_atlas_clear(&glfw.atlas); + nk_free(&glfw.ctx); + glDeleteTextures(1, &dev->font_tex); + nk_buffer_free(&dev->cmds); + NK_MEMSET(&glfw, 0, sizeof(glfw)); +} + +#endif diff --git a/lib/glfw/deps/stb_image_write.h b/lib/glfw/deps/stb_image_write.h new file mode 100644 index 0000000..e4b32ed --- /dev/null +++ b/lib/glfw/deps/stb_image_write.h @@ -0,0 +1,1724 @@ +/* stb_image_write - v1.16 - public domain - http://nothings.org/stb + writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + +ABOUT: + + This header file is a library for writing images to C stdio or a callback. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation; though providing a custom + zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. + This library is designed for source code compactness and simplicity, + not optimal image file size or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can #define STBIW_MEMMOVE() to replace memmove() + You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function + for PNG compression (instead of the builtin one), it must have the following signature: + unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); + The returned data will be freed with STBIW_FREE() (free() by default), + so it must be heap allocated with STBIW_MALLOC() (malloc() by default), + +UNICODE: + + If compiling for Windows and you wish to use Unicode filenames, compile + with + #define STBIW_WINDOWS_UTF8 + and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert + Windows wchar_t filenames to utf8. + +USAGE: + + There are five functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically + + There are also five equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can configure it with these global variables: + int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE + int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression + int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode + + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + PNG allows you to set the deflate compression level by setting the global + variable 'stbi_write_png_compression_level' (it defaults to 8). + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + + JPEG does ignore alpha channels in input data; quality is between 1 and 100. + Higher quality looks better but results in a bigger image. + JPEG baseline (no JPEG progressive). + +CREDITS: + + + Sean Barrett - PNG/BMP/TGA + Baldur Karlsson - HDR + Jean-Sebastien Guay - TGA monochrome + Tim Kelsey - misc enhancements + Alan Hickman - TGA RLE + Emmanuel Julien - initial file IO callback implementation + Jon Olick - original jo_jpeg.cpp code + Daniel Gibson - integrate JPEG, allow external zlib + Aarni Koskela - allow choosing PNG filter + + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + github:xeekworx + Cap Petschulat + Simon Rodriguez + Ivan Tikhonov + github:ignotion + Adam Schackart + Andrew Kensler + +LICENSE + + See end of file for license information. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +#include + +// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' +#ifndef STBIWDEF +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#ifdef __cplusplus +#define STBIWDEF extern "C" +#else +#define STBIWDEF extern +#endif +#endif +#endif + +#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations +STBIWDEF int stbi_write_tga_with_rle; +STBIWDEF int stbi_write_png_compression_level; +STBIWDEF int stbi_write_force_png_filter; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); + +#ifdef STBIW_WINDOWS_UTF8 +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + +STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include +#endif // STBI_WRITE_NO_STDIO + +#include +#include +#include +#include + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi_write_png_compression_level = 8; +static int stbi_write_tga_with_rle = 1; +static int stbi_write_force_png_filter = -1; +#else +int stbi_write_png_compression_level = 8; +int stbi_write_tga_with_rle = 1; +int stbi_write_force_png_filter = -1; +#endif + +static int stbi__flip_vertically_on_write = 0; + +STBIWDEF void stbi_flip_vertically_on_write(int flag) +{ + stbi__flip_vertically_on_write = flag; +} + +typedef struct +{ + stbi_write_func *func; + void *context; + unsigned char buffer[64]; + int buf_used; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) +#ifdef __cplusplus +#define STBIW_EXTERN extern "C" +#else +#define STBIW_EXTERN extern +#endif +STBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); + +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbiw__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f = stbiw__fopen(filename, "wb"); + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__write_flush(stbi__write_context *s) +{ + if (s->buf_used) { + s->func(s->context, &s->buffer, s->buf_used); + s->buf_used = 0; + } +} + +static void stbiw__putc(stbi__write_context *s, unsigned char c) +{ + s->func(s->context, &c, 1); +} + +static void stbiw__write1(stbi__write_context *s, unsigned char a) +{ + if ((size_t)s->buf_used + 1 > sizeof(s->buffer)) + stbiw__write_flush(s); + s->buffer[s->buf_used++] = a; +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + int n; + if ((size_t)s->buf_used + 3 > sizeof(s->buffer)) + stbiw__write_flush(s); + n = s->buf_used; + s->buf_used = n+3; + s->buffer[n+0] = a; + s->buffer[n+1] = b; + s->buffer[n+2] = c; +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + stbiw__write1(s, d[comp - 1]); + + switch (comp) { + case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case + case 1: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + stbiw__write1(s, d[0]); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + stbiw__write1(s, d[comp - 1]); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (stbi__flip_vertically_on_write) + vdir *= -1; + + if (vdir < 0) { + j_end = -1; j = y-1; + } else { + j_end = y; j = 0; + } + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + stbiw__write_flush(s); + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + if (comp != 4) { + // write RGB bitmap + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header + } else { + // RGBA bitmaps need a v4 header + // use BI_BITFIELDS mode with 32bpp and alpha mask + // (straight BI_RGB with alpha mask doesn't work in most readers) + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *)data,1,0, + "11 4 22 4" "4 44 22 444444 4444 4 444 444 444 444", + 'B', 'M', 14+108+x*y*4, 0, 0, 14+108, // file header + 108, x,y, 1,32, 3,0,0,0,0,0, 0xff0000,0xff00,0xff,0xff000000u, 0, 0,0,0, 0,0,0, 0,0,0, 0,0,0); // bitmap V4 header + } +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif //!STBI_WRITE_NO_STDIO + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + int jend, jdir; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + if (stbi__flip_vertically_on_write) { + j = 0; + jend = y; + jdir = 1; + } else { + j = y-1; + jend = -1; + jdir = -1; + } + for (; j != jend; j += jdir) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + stbiw__write1(s, header); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + stbiw__write1(s, header); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + stbiw__write_flush(s); + } + return 1; +} + +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +#ifndef STBI_WRITE_NO_STDIO + +static void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +static void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +static void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +static void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + +#ifdef __STDC_LIB_EXT1__ + len = sprintf_s(buffer, sizeof(buffer), "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#else + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#endif + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)); + STBIW_FREE(scratch); + return 1; + } +} + +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +////////////////////////////////////////////////////////////////////////////// +// +// PNG writer +// + +#ifndef STBIW_ZLIB_COMPRESS +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (void *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +#endif // STBIW_ZLIB_COMPRESS + +STBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ +#ifdef STBIW_ZLIB_COMPRESS + // user provided a zlib compress implementation, use that + return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality); +#else // use builtin + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**)); + if (hash_table == NULL) + return NULL; + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) { best=d; bestloc=hlist[j]; } + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + // store uncompressed instead if compression was worse + if (stbiw__sbn(out) > data_len + 2 + ((data_len+32766)/32767)*5) { + stbiw__sbn(out) = 2; // truncate to DEFLATE 32K window and FLEVEL = 1 + for (j = 0; j < data_len;) { + int blocklen = data_len - j; + if (blocklen > 32767) blocklen = 32767; + stbiw__sbpush(out, data_len - j == blocklen); // BFINAL = ?, BTYPE = 0 -- no compression + stbiw__sbpush(out, STBIW_UCHAR(blocklen)); // LEN + stbiw__sbpush(out, STBIW_UCHAR(blocklen >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(~blocklen)); // NLEN + stbiw__sbpush(out, STBIW_UCHAR(~blocklen >> 8)); + memcpy(out+stbiw__sbn(out), data+j, blocklen); + stbiw__sbn(out) += blocklen; + j += blocklen; + } + } + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; } + s1 %= 65521; s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +#endif // STBIW_ZLIB_COMPRESS +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ +#ifdef STBIW_CRC32 + return STBIW_CRC32(buffer, len); +#else + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +#endif +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict +static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer) +{ + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = (y != 0) ? mapping : firstmap; + int i; + int type = mymap[filter_type]; + unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y); + int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes; + + if (type==0) { + memcpy(line_buffer, z, width*n); + return; + } + + // first loop isn't optimized since it's just one pixel + for (i = 0; i < n; ++i) { + switch (type) { + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + } + switch (type) { + case 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break; + case 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break; + case 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break; + case 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } +} + +STBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int force_filter = stbi_write_force_png_filter; + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int j,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + if (force_filter >= 5) { + force_filter = -1; + } + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + int filter_type; + if (force_filter > -1) { + filter_type = force_filter; + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer); + } else { // Estimate the best filter by running through all of them: + int best_filter = 0, best_filter_val = 0x7fffffff, est, i; + for (filter_type = 0; filter_type < 5; filter_type++) { + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer); + + // Estimate the entropy of the line using this filter; the less, the better. + est = 0; + for (i = 0; i < x*n; ++i) { + est += abs((signed char) line_buffer[i]); + } + if (est < best_filter_val) { + best_filter_val = est; + best_filter = filter_type; + } + } + if (filter_type != best_filter) { // If the last iteration already got us the best filter, don't redo it + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer); + filter_type = best_filter; + } + } + // when we get here, filter_type contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) filter_type; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level); + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + + f = stbiw__fopen(filename, "wb"); + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + + +/* *************************************************************************** + * + * JPEG writer + * + * This is based on Jon Olick's jo_jpeg.cpp: + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html + */ + +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, + 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; + +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { + int bitBuf = *bitBufP, bitCnt = *bitCntP; + bitCnt += bs[1]; + bitBuf |= bs[0] << (24 - bitCnt); + while(bitCnt >= 8) { + unsigned char c = (bitBuf >> 16) & 255; + stbiw__putc(s, c); + if(c == 255) { + stbiw__putc(s, 0); + } + bitBuf <<= 8; + bitCnt -= 8; + } + *bitBufP = bitBuf; + *bitCntP = bitCnt; +} + +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { + float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; + float z1, z2, z3, z4, z5, z11, z13; + + float tmp0 = d0 + d7; + float tmp7 = d0 - d7; + float tmp1 = d1 + d6; + float tmp6 = d1 - d6; + float tmp2 = d2 + d5; + float tmp5 = d2 - d5; + float tmp3 = d3 + d4; + float tmp4 = d3 - d4; + + // Even part + float tmp10 = tmp0 + tmp3; // phase 2 + float tmp13 = tmp0 - tmp3; + float tmp11 = tmp1 + tmp2; + float tmp12 = tmp1 - tmp2; + + d0 = tmp10 + tmp11; // phase 3 + d4 = tmp10 - tmp11; + + z1 = (tmp12 + tmp13) * 0.707106781f; // c4 + d2 = tmp13 + z1; // phase 5 + d6 = tmp13 - z1; + + // Odd part + tmp10 = tmp4 + tmp5; // phase 2 + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + // The rotator is modified from fig 4-8 to avoid extra negations. + z5 = (tmp10 - tmp12) * 0.382683433f; // c6 + z2 = tmp10 * 0.541196100f + z5; // c2-c6 + z4 = tmp12 * 1.306562965f + z5; // c2+c6 + z3 = tmp11 * 0.707106781f; // c4 + + z11 = tmp7 + z3; // phase 5 + z13 = tmp7 - z3; + + *d5p = z13 + z2; // phase 6 + *d3p = z13 - z2; + *d1p = z11 + z4; + *d7p = z11 - z4; + + *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; +} + +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { + int tmp1 = val < 0 ? -val : val; + val = val < 0 ? val-1 : val; + bits[1] = 1; + while(tmp1 >>= 1) { + ++bits[1]; + } + bits[0] = val & ((1<0)&&(DU[end0pos]==0); --end0pos) { + } + // end0pos = first element in reverse order !=0 + if(end0pos == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + return DU[0]; + } + for(i = 1; i <= end0pos; ++i) { + int startpos = i; + int nrzeroes; + unsigned short bits[2]; + for (; DU[i]==0 && i<=end0pos; ++i) { + } + nrzeroes = i-startpos; + if ( nrzeroes >= 16 ) { + int lng = nrzeroes>>4; + int nrmarker; + for (nrmarker=1; nrmarker <= lng; ++nrmarker) + stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); + nrzeroes &= 15; + } + stbiw__jpg_calcBits(DU[i], bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + if(end0pos != 63) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + } + return DU[0]; +} + +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { + // Constants that don't pollute global namespace + static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; + static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; + static const unsigned char std_ac_luminance_values[] = { + 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, + 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, + 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, + 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; + static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; + static const unsigned char std_ac_chrominance_values[] = { + 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, + 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, + 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + // Huffman tables + static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; + static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; + static const unsigned short YAC_HT[256][2] = { + {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const unsigned short UVAC_HT[256][2] = { + {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, + 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; + static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, + 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; + static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, + 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; + + int row, col, i, k, subsample; + float fdtbl_Y[64], fdtbl_UV[64]; + unsigned char YTable[64], UVTable[64]; + + if(!data || !width || !height || comp > 4 || comp < 1) { + return 0; + } + + quality = quality ? quality : 90; + subsample = quality <= 90 ? 1 : 0; + quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; + quality = quality < 50 ? 5000 / quality : 200 - quality * 2; + + for(i = 0; i < 64; ++i) { + int uvti, yti = (YQT[i]*quality+50)/100; + YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); + uvti = (UVQT[i]*quality+50)/100; + UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); + } + + for(row = 0, k = 0; row < 8; ++row) { + for(col = 0; col < 8; ++col, ++k) { + fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + } + } + + // Write Headers + { + static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; + static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; + const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width), + 3,1,(unsigned char)(subsample?0x22:0x11),0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; + s->func(s->context, (void*)head0, sizeof(head0)); + s->func(s->context, (void*)YTable, sizeof(YTable)); + stbiw__putc(s, 1); + s->func(s->context, UVTable, sizeof(UVTable)); + s->func(s->context, (void*)head1, sizeof(head1)); + s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); + s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); + stbiw__putc(s, 0x10); // HTYACinfo + s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); + s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); + stbiw__putc(s, 1); // HTUDCinfo + s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); + stbiw__putc(s, 0x11); // HTUACinfo + s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); + s->func(s->context, (void*)head2, sizeof(head2)); + } + + // Encode 8x8 macroblocks + { + static const unsigned short fillBits[] = {0x7F, 7}; + int DCY=0, DCU=0, DCV=0; + int bitBuf=0, bitCnt=0; + // comp == 2 is grey+alpha (alpha is ignored) + int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; + const unsigned char *dataR = (const unsigned char *)data; + const unsigned char *dataG = dataR + ofsG; + const unsigned char *dataB = dataR + ofsB; + int x, y, pos; + if(subsample) { + for(y = 0; y < height; y += 16) { + for(x = 0; x < width; x += 16) { + float Y[256], U[256], V[256]; + for(row = y, pos = 0; row < y+16; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+16; ++col, ++pos) { + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + float r = dataR[p], g = dataG[p], b = dataB[p]; + Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; + U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; + V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; + } + } + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+0, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+8, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+128, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+136, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + + // subsample U,V + { + float subU[64], subV[64]; + int yy, xx; + for(yy = 0, pos = 0; yy < 8; ++yy) { + for(xx = 0; xx < 8; ++xx, ++pos) { + int j = yy*32+xx*2; + subU[pos] = (U[j+0] + U[j+1] + U[j+16] + U[j+17]) * 0.25f; + subV[pos] = (V[j+0] + V[j+1] + V[j+16] + V[j+17]) * 0.25f; + } + } + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subU, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subV, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + } + } else { + for(y = 0; y < height; y += 8) { + for(x = 0; x < width; x += 8) { + float Y[64], U[64], V[64]; + for(row = y, pos = 0; row < y+8; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+8; ++col, ++pos) { + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + float r = dataR[p], g = dataG[p], b = dataB[p]; + Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; + U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; + V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; + } + } + + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y, 8, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, U, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, V, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + } + + // Do the bit alignment of the EOI marker + stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); + } + + // EOI + stbiw__putc(s, 0xFF); + stbiw__putc(s, 0xD9); + + return 1; +} + +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); +} + + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.16 (2021-07-11) + make Deflate code emit uncompressed blocks when it would otherwise expand + support writing BMPs with alpha channel + 1.15 (2020-07-13) unknown + 1.14 (2020-02-02) updated JPEG writer to downsample chroma channels + 1.13 + 1.12 + 1.11 (2019-08-11) + + 1.10 (2019-02-07) + support utf8 filenames in Windows; fix warnings and platform ifdefs + 1.09 (2018-02-11) + fix typo in zlib quality API, improve STB_I_W_STATIC in C++ + 1.08 (2018-01-29) + add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter + 1.07 (2017-07-24) + doc fix + 1.06 (2017-07-23) + writing JPEG (using Jon Olick's code) + 1.05 ??? + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/lib/glfw/deps/tinycthread.c b/lib/glfw/deps/tinycthread.c new file mode 100644 index 0000000..f9cea2e --- /dev/null +++ b/lib/glfw/deps/tinycthread.c @@ -0,0 +1,594 @@ +/* -*- mode: c; tab-width: 2; indent-tabs-mode: nil; -*- +Copyright (c) 2012 Marcus Geelnard + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +/* 2013-01-06 Camilla Löwy + * + * Added casts from time_t to DWORD to avoid warnings on VC++. + * Fixed time retrieval on POSIX systems. + */ + +#include "tinycthread.h" +#include + +/* Platform specific includes */ +#if defined(_TTHREAD_POSIX_) + #include + #include + #include + #include + #include +#elif defined(_TTHREAD_WIN32_) + #include + #include +#endif + +/* Standard, good-to-have defines */ +#ifndef NULL + #define NULL (void*)0 +#endif +#ifndef TRUE + #define TRUE 1 +#endif +#ifndef FALSE + #define FALSE 0 +#endif + +int mtx_init(mtx_t *mtx, int type) +{ +#if defined(_TTHREAD_WIN32_) + mtx->mAlreadyLocked = FALSE; + mtx->mRecursive = type & mtx_recursive; + InitializeCriticalSection(&mtx->mHandle); + return thrd_success; +#else + int ret; + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + if (type & mtx_recursive) + { + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + } + ret = pthread_mutex_init(mtx, &attr); + pthread_mutexattr_destroy(&attr); + return ret == 0 ? thrd_success : thrd_error; +#endif +} + +void mtx_destroy(mtx_t *mtx) +{ +#if defined(_TTHREAD_WIN32_) + DeleteCriticalSection(&mtx->mHandle); +#else + pthread_mutex_destroy(mtx); +#endif +} + +int mtx_lock(mtx_t *mtx) +{ +#if defined(_TTHREAD_WIN32_) + EnterCriticalSection(&mtx->mHandle); + if (!mtx->mRecursive) + { + while(mtx->mAlreadyLocked) Sleep(1000); /* Simulate deadlock... */ + mtx->mAlreadyLocked = TRUE; + } + return thrd_success; +#else + return pthread_mutex_lock(mtx) == 0 ? thrd_success : thrd_error; +#endif +} + +int mtx_timedlock(mtx_t *mtx, const struct timespec *ts) +{ + /* FIXME! */ + (void)mtx; + (void)ts; + return thrd_error; +} + +int mtx_trylock(mtx_t *mtx) +{ +#if defined(_TTHREAD_WIN32_) + int ret = TryEnterCriticalSection(&mtx->mHandle) ? thrd_success : thrd_busy; + if ((!mtx->mRecursive) && (ret == thrd_success) && mtx->mAlreadyLocked) + { + LeaveCriticalSection(&mtx->mHandle); + ret = thrd_busy; + } + return ret; +#else + return (pthread_mutex_trylock(mtx) == 0) ? thrd_success : thrd_busy; +#endif +} + +int mtx_unlock(mtx_t *mtx) +{ +#if defined(_TTHREAD_WIN32_) + mtx->mAlreadyLocked = FALSE; + LeaveCriticalSection(&mtx->mHandle); + return thrd_success; +#else + return pthread_mutex_unlock(mtx) == 0 ? thrd_success : thrd_error;; +#endif +} + +#if defined(_TTHREAD_WIN32_) +#define _CONDITION_EVENT_ONE 0 +#define _CONDITION_EVENT_ALL 1 +#endif + +int cnd_init(cnd_t *cond) +{ +#if defined(_TTHREAD_WIN32_) + cond->mWaitersCount = 0; + + /* Init critical section */ + InitializeCriticalSection(&cond->mWaitersCountLock); + + /* Init events */ + cond->mEvents[_CONDITION_EVENT_ONE] = CreateEvent(NULL, FALSE, FALSE, NULL); + if (cond->mEvents[_CONDITION_EVENT_ONE] == NULL) + { + cond->mEvents[_CONDITION_EVENT_ALL] = NULL; + return thrd_error; + } + cond->mEvents[_CONDITION_EVENT_ALL] = CreateEvent(NULL, TRUE, FALSE, NULL); + if (cond->mEvents[_CONDITION_EVENT_ALL] == NULL) + { + CloseHandle(cond->mEvents[_CONDITION_EVENT_ONE]); + cond->mEvents[_CONDITION_EVENT_ONE] = NULL; + return thrd_error; + } + + return thrd_success; +#else + return pthread_cond_init(cond, NULL) == 0 ? thrd_success : thrd_error; +#endif +} + +void cnd_destroy(cnd_t *cond) +{ +#if defined(_TTHREAD_WIN32_) + if (cond->mEvents[_CONDITION_EVENT_ONE] != NULL) + { + CloseHandle(cond->mEvents[_CONDITION_EVENT_ONE]); + } + if (cond->mEvents[_CONDITION_EVENT_ALL] != NULL) + { + CloseHandle(cond->mEvents[_CONDITION_EVENT_ALL]); + } + DeleteCriticalSection(&cond->mWaitersCountLock); +#else + pthread_cond_destroy(cond); +#endif +} + +int cnd_signal(cnd_t *cond) +{ +#if defined(_TTHREAD_WIN32_) + int haveWaiters; + + /* Are there any waiters? */ + EnterCriticalSection(&cond->mWaitersCountLock); + haveWaiters = (cond->mWaitersCount > 0); + LeaveCriticalSection(&cond->mWaitersCountLock); + + /* If we have any waiting threads, send them a signal */ + if(haveWaiters) + { + if (SetEvent(cond->mEvents[_CONDITION_EVENT_ONE]) == 0) + { + return thrd_error; + } + } + + return thrd_success; +#else + return pthread_cond_signal(cond) == 0 ? thrd_success : thrd_error; +#endif +} + +int cnd_broadcast(cnd_t *cond) +{ +#if defined(_TTHREAD_WIN32_) + int haveWaiters; + + /* Are there any waiters? */ + EnterCriticalSection(&cond->mWaitersCountLock); + haveWaiters = (cond->mWaitersCount > 0); + LeaveCriticalSection(&cond->mWaitersCountLock); + + /* If we have any waiting threads, send them a signal */ + if(haveWaiters) + { + if (SetEvent(cond->mEvents[_CONDITION_EVENT_ALL]) == 0) + { + return thrd_error; + } + } + + return thrd_success; +#else + return pthread_cond_signal(cond) == 0 ? thrd_success : thrd_error; +#endif +} + +#if defined(_TTHREAD_WIN32_) +static int _cnd_timedwait_win32(cnd_t *cond, mtx_t *mtx, DWORD timeout) +{ + int result, lastWaiter; + + /* Increment number of waiters */ + EnterCriticalSection(&cond->mWaitersCountLock); + ++ cond->mWaitersCount; + LeaveCriticalSection(&cond->mWaitersCountLock); + + /* Release the mutex while waiting for the condition (will decrease + the number of waiters when done)... */ + mtx_unlock(mtx); + + /* Wait for either event to become signaled due to cnd_signal() or + cnd_broadcast() being called */ + result = WaitForMultipleObjects(2, cond->mEvents, FALSE, timeout); + if (result == WAIT_TIMEOUT) + { + return thrd_timeout; + } + else if (result == (int)WAIT_FAILED) + { + return thrd_error; + } + + /* Check if we are the last waiter */ + EnterCriticalSection(&cond->mWaitersCountLock); + -- cond->mWaitersCount; + lastWaiter = (result == (WAIT_OBJECT_0 + _CONDITION_EVENT_ALL)) && + (cond->mWaitersCount == 0); + LeaveCriticalSection(&cond->mWaitersCountLock); + + /* If we are the last waiter to be notified to stop waiting, reset the event */ + if (lastWaiter) + { + if (ResetEvent(cond->mEvents[_CONDITION_EVENT_ALL]) == 0) + { + return thrd_error; + } + } + + /* Re-acquire the mutex */ + mtx_lock(mtx); + + return thrd_success; +} +#endif + +int cnd_wait(cnd_t *cond, mtx_t *mtx) +{ +#if defined(_TTHREAD_WIN32_) + return _cnd_timedwait_win32(cond, mtx, INFINITE); +#else + return pthread_cond_wait(cond, mtx) == 0 ? thrd_success : thrd_error; +#endif +} + +int cnd_timedwait(cnd_t *cond, mtx_t *mtx, const struct timespec *ts) +{ +#if defined(_TTHREAD_WIN32_) + struct timespec now; + if (clock_gettime(CLOCK_REALTIME, &now) == 0) + { + DWORD delta = (DWORD) ((ts->tv_sec - now.tv_sec) * 1000 + + (ts->tv_nsec - now.tv_nsec + 500000) / 1000000); + return _cnd_timedwait_win32(cond, mtx, delta); + } + else + return thrd_error; +#else + int ret; + ret = pthread_cond_timedwait(cond, mtx, ts); + if (ret == ETIMEDOUT) + { + return thrd_timeout; + } + return ret == 0 ? thrd_success : thrd_error; +#endif +} + + +/** Information to pass to the new thread (what to run). */ +typedef struct { + thrd_start_t mFunction; /**< Pointer to the function to be executed. */ + void * mArg; /**< Function argument for the thread function. */ +} _thread_start_info; + +/* Thread wrapper function. */ +#if defined(_TTHREAD_WIN32_) +static unsigned WINAPI _thrd_wrapper_function(void * aArg) +#elif defined(_TTHREAD_POSIX_) +static void * _thrd_wrapper_function(void * aArg) +#endif +{ + thrd_start_t fun; + void *arg; + int res; +#if defined(_TTHREAD_POSIX_) + void *pres; +#endif + + /* Get thread startup information */ + _thread_start_info *ti = (_thread_start_info *) aArg; + fun = ti->mFunction; + arg = ti->mArg; + + /* The thread is responsible for freeing the startup information */ + free((void *)ti); + + /* Call the actual client thread function */ + res = fun(arg); + +#if defined(_TTHREAD_WIN32_) + return res; +#else + pres = malloc(sizeof(int)); + if (pres != NULL) + { + *(int*)pres = res; + } + return pres; +#endif +} + +int thrd_create(thrd_t *thr, thrd_start_t func, void *arg) +{ + /* Fill out the thread startup information (passed to the thread wrapper, + which will eventually free it) */ + _thread_start_info* ti = (_thread_start_info*)malloc(sizeof(_thread_start_info)); + if (ti == NULL) + { + return thrd_nomem; + } + ti->mFunction = func; + ti->mArg = arg; + + /* Create the thread */ +#if defined(_TTHREAD_WIN32_) + *thr = (HANDLE)_beginthreadex(NULL, 0, _thrd_wrapper_function, (void *)ti, 0, NULL); +#elif defined(_TTHREAD_POSIX_) + if(pthread_create(thr, NULL, _thrd_wrapper_function, (void *)ti) != 0) + { + *thr = 0; + } +#endif + + /* Did we fail to create the thread? */ + if(!*thr) + { + free(ti); + return thrd_error; + } + + return thrd_success; +} + +thrd_t thrd_current(void) +{ +#if defined(_TTHREAD_WIN32_) + return GetCurrentThread(); +#else + return pthread_self(); +#endif +} + +int thrd_detach(thrd_t thr) +{ + /* FIXME! */ + (void)thr; + return thrd_error; +} + +int thrd_equal(thrd_t thr0, thrd_t thr1) +{ +#if defined(_TTHREAD_WIN32_) + return thr0 == thr1; +#else + return pthread_equal(thr0, thr1); +#endif +} + +void thrd_exit(int res) +{ +#if defined(_TTHREAD_WIN32_) + ExitThread(res); +#else + void *pres = malloc(sizeof(int)); + if (pres != NULL) + { + *(int*)pres = res; + } + pthread_exit(pres); +#endif +} + +int thrd_join(thrd_t thr, int *res) +{ +#if defined(_TTHREAD_WIN32_) + if (WaitForSingleObject(thr, INFINITE) == WAIT_FAILED) + { + return thrd_error; + } + if (res != NULL) + { + DWORD dwRes; + GetExitCodeThread(thr, &dwRes); + *res = dwRes; + } +#elif defined(_TTHREAD_POSIX_) + void *pres; + int ires = 0; + if (pthread_join(thr, &pres) != 0) + { + return thrd_error; + } + if (pres != NULL) + { + ires = *(int*)pres; + free(pres); + } + if (res != NULL) + { + *res = ires; + } +#endif + return thrd_success; +} + +int thrd_sleep(const struct timespec *time_point, struct timespec *remaining) +{ + struct timespec now; +#if defined(_TTHREAD_WIN32_) + DWORD delta; +#else + long delta; +#endif + + /* Get the current time */ + if (clock_gettime(CLOCK_REALTIME, &now) != 0) + return -2; // FIXME: Some specific error code? + +#if defined(_TTHREAD_WIN32_) + /* Delta in milliseconds */ + delta = (DWORD) ((time_point->tv_sec - now.tv_sec) * 1000 + + (time_point->tv_nsec - now.tv_nsec + 500000) / 1000000); + if (delta > 0) + { + Sleep(delta); + } +#else + /* Delta in microseconds */ + delta = (time_point->tv_sec - now.tv_sec) * 1000000L + + (time_point->tv_nsec - now.tv_nsec + 500L) / 1000L; + + /* On some systems, the usleep argument must be < 1000000 */ + while (delta > 999999L) + { + usleep(999999); + delta -= 999999L; + } + if (delta > 0L) + { + usleep((useconds_t)delta); + } +#endif + + /* We don't support waking up prematurely (yet) */ + if (remaining) + { + remaining->tv_sec = 0; + remaining->tv_nsec = 0; + } + return 0; +} + +void thrd_yield(void) +{ +#if defined(_TTHREAD_WIN32_) + Sleep(0); +#else + sched_yield(); +#endif +} + +int tss_create(tss_t *key, tss_dtor_t dtor) +{ +#if defined(_TTHREAD_WIN32_) + /* FIXME: The destructor function is not supported yet... */ + if (dtor != NULL) + { + return thrd_error; + } + *key = TlsAlloc(); + if (*key == TLS_OUT_OF_INDEXES) + { + return thrd_error; + } +#else + if (pthread_key_create(key, dtor) != 0) + { + return thrd_error; + } +#endif + return thrd_success; +} + +void tss_delete(tss_t key) +{ +#if defined(_TTHREAD_WIN32_) + TlsFree(key); +#else + pthread_key_delete(key); +#endif +} + +void *tss_get(tss_t key) +{ +#if defined(_TTHREAD_WIN32_) + return TlsGetValue(key); +#else + return pthread_getspecific(key); +#endif +} + +int tss_set(tss_t key, void *val) +{ +#if defined(_TTHREAD_WIN32_) + if (TlsSetValue(key, val) == 0) + { + return thrd_error; + } +#else + if (pthread_setspecific(key, val) != 0) + { + return thrd_error; + } +#endif + return thrd_success; +} + +#if defined(_TTHREAD_EMULATE_CLOCK_GETTIME_) +int _tthread_clock_gettime(clockid_t clk_id, struct timespec *ts) +{ +#if defined(_TTHREAD_WIN32_) + struct _timeb tb; + _ftime(&tb); + ts->tv_sec = (time_t)tb.time; + ts->tv_nsec = 1000000L * (long)tb.millitm; +#else + struct timeval tv; + gettimeofday(&tv, NULL); + ts->tv_sec = (time_t)tv.tv_sec; + ts->tv_nsec = 1000L * (long)tv.tv_usec; +#endif + return 0; +} +#endif // _TTHREAD_EMULATE_CLOCK_GETTIME_ + diff --git a/lib/glfw/deps/tinycthread.h b/lib/glfw/deps/tinycthread.h new file mode 100644 index 0000000..42958c3 --- /dev/null +++ b/lib/glfw/deps/tinycthread.h @@ -0,0 +1,443 @@ +/* -*- mode: c; tab-width: 2; indent-tabs-mode: nil; -*- +Copyright (c) 2012 Marcus Geelnard + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef _TINYCTHREAD_H_ +#define _TINYCTHREAD_H_ + +/** +* @file +* @mainpage TinyCThread API Reference +* +* @section intro_sec Introduction +* TinyCThread is a minimal, portable implementation of basic threading +* classes for C. +* +* They closely mimic the functionality and naming of the C11 standard, and +* should be easily replaceable with the corresponding standard variants. +* +* @section port_sec Portability +* The Win32 variant uses the native Win32 API for implementing the thread +* classes, while for other systems, the POSIX threads API (pthread) is used. +* +* @section misc_sec Miscellaneous +* The following special keywords are available: #_Thread_local. +* +* For more detailed information, browse the different sections of this +* documentation. A good place to start is: +* tinycthread.h. +*/ + +/* Which platform are we on? */ +#if !defined(_TTHREAD_PLATFORM_DEFINED_) + #if defined(_WIN32) || defined(__WIN32__) || defined(__WINDOWS__) + #define _TTHREAD_WIN32_ + #else + #define _TTHREAD_POSIX_ + #endif + #define _TTHREAD_PLATFORM_DEFINED_ +#endif + +/* Activate some POSIX functionality (e.g. clock_gettime and recursive mutexes) */ +#if defined(_TTHREAD_POSIX_) + #undef _FEATURES_H + #if !defined(_GNU_SOURCE) + #define _GNU_SOURCE + #endif + #if !defined(_POSIX_C_SOURCE) || ((_POSIX_C_SOURCE - 0) < 199309L) + #undef _POSIX_C_SOURCE + #define _POSIX_C_SOURCE 199309L + #endif + #if !defined(_XOPEN_SOURCE) || ((_XOPEN_SOURCE - 0) < 500) + #undef _XOPEN_SOURCE + #define _XOPEN_SOURCE 500 + #endif +#endif + +/* Generic includes */ +#include + +/* Platform specific includes */ +#if defined(_TTHREAD_POSIX_) + #include + #include +#elif defined(_TTHREAD_WIN32_) + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #define __UNDEF_LEAN_AND_MEAN + #endif + #include + #ifdef __UNDEF_LEAN_AND_MEAN + #undef WIN32_LEAN_AND_MEAN + #undef __UNDEF_LEAN_AND_MEAN + #endif +#endif + +/* Workaround for missing TIME_UTC: If time.h doesn't provide TIME_UTC, + it's quite likely that libc does not support it either. Hence, fall back to + the only other supported time specifier: CLOCK_REALTIME (and if that fails, + we're probably emulating clock_gettime anyway, so anything goes). */ +#ifndef TIME_UTC + #ifdef CLOCK_REALTIME + #define TIME_UTC CLOCK_REALTIME + #else + #define TIME_UTC 0 + #endif +#endif + +/* Workaround for missing clock_gettime (most Windows compilers, afaik) */ +#if defined(_TTHREAD_WIN32_) || defined(__APPLE_CC__) +#define _TTHREAD_EMULATE_CLOCK_GETTIME_ +/* Emulate struct timespec */ +#if defined(_TTHREAD_WIN32_) +struct _ttherad_timespec { + time_t tv_sec; + long tv_nsec; +}; +#define timespec _ttherad_timespec +#endif + +/* Emulate clockid_t */ +typedef int _tthread_clockid_t; +#define clockid_t _tthread_clockid_t + +/* Emulate clock_gettime */ +int _tthread_clock_gettime(clockid_t clk_id, struct timespec *ts); +#define clock_gettime _tthread_clock_gettime +#ifndef CLOCK_REALTIME + #define CLOCK_REALTIME 0 +#endif +#endif + + +/** TinyCThread version (major number). */ +#define TINYCTHREAD_VERSION_MAJOR 1 +/** TinyCThread version (minor number). */ +#define TINYCTHREAD_VERSION_MINOR 1 +/** TinyCThread version (full version). */ +#define TINYCTHREAD_VERSION (TINYCTHREAD_VERSION_MAJOR * 100 + TINYCTHREAD_VERSION_MINOR) + +/** +* @def _Thread_local +* Thread local storage keyword. +* A variable that is declared with the @c _Thread_local keyword makes the +* value of the variable local to each thread (known as thread-local storage, +* or TLS). Example usage: +* @code +* // This variable is local to each thread. +* _Thread_local int variable; +* @endcode +* @note The @c _Thread_local keyword is a macro that maps to the corresponding +* compiler directive (e.g. @c __declspec(thread)). +* @note This directive is currently not supported on Mac OS X (it will give +* a compiler error), since compile-time TLS is not supported in the Mac OS X +* executable format. Also, some older versions of MinGW (before GCC 4.x) do +* not support this directive. +* @hideinitializer +*/ + +/* FIXME: Check for a PROPER value of __STDC_VERSION__ to know if we have C11 */ +#if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201102L)) && !defined(_Thread_local) + #if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__SUNPRO_CC) || defined(__IBMCPP__) + #define _Thread_local __thread + #else + #define _Thread_local __declspec(thread) + #endif +#endif + +/* Macros */ +#define TSS_DTOR_ITERATIONS 0 + +/* Function return values */ +#define thrd_error 0 /**< The requested operation failed */ +#define thrd_success 1 /**< The requested operation succeeded */ +#define thrd_timeout 2 /**< The time specified in the call was reached without acquiring the requested resource */ +#define thrd_busy 3 /**< The requested operation failed because a tesource requested by a test and return function is already in use */ +#define thrd_nomem 4 /**< The requested operation failed because it was unable to allocate memory */ + +/* Mutex types */ +#define mtx_plain 1 +#define mtx_timed 2 +#define mtx_try 4 +#define mtx_recursive 8 + +/* Mutex */ +#if defined(_TTHREAD_WIN32_) +typedef struct { + CRITICAL_SECTION mHandle; /* Critical section handle */ + int mAlreadyLocked; /* TRUE if the mutex is already locked */ + int mRecursive; /* TRUE if the mutex is recursive */ +} mtx_t; +#else +typedef pthread_mutex_t mtx_t; +#endif + +/** Create a mutex object. +* @param mtx A mutex object. +* @param type Bit-mask that must have one of the following six values: +* @li @c mtx_plain for a simple non-recursive mutex +* @li @c mtx_timed for a non-recursive mutex that supports timeout +* @li @c mtx_try for a non-recursive mutex that supports test and return +* @li @c mtx_plain | @c mtx_recursive (same as @c mtx_plain, but recursive) +* @li @c mtx_timed | @c mtx_recursive (same as @c mtx_timed, but recursive) +* @li @c mtx_try | @c mtx_recursive (same as @c mtx_try, but recursive) +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int mtx_init(mtx_t *mtx, int type); + +/** Release any resources used by the given mutex. +* @param mtx A mutex object. +*/ +void mtx_destroy(mtx_t *mtx); + +/** Lock the given mutex. +* Blocks until the given mutex can be locked. If the mutex is non-recursive, and +* the calling thread already has a lock on the mutex, this call will block +* forever. +* @param mtx A mutex object. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int mtx_lock(mtx_t *mtx); + +/** NOT YET IMPLEMENTED. +*/ +int mtx_timedlock(mtx_t *mtx, const struct timespec *ts); + +/** Try to lock the given mutex. +* The specified mutex shall support either test and return or timeout. If the +* mutex is already locked, the function returns without blocking. +* @param mtx A mutex object. +* @return @ref thrd_success on success, or @ref thrd_busy if the resource +* requested is already in use, or @ref thrd_error if the request could not be +* honored. +*/ +int mtx_trylock(mtx_t *mtx); + +/** Unlock the given mutex. +* @param mtx A mutex object. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int mtx_unlock(mtx_t *mtx); + +/* Condition variable */ +#if defined(_TTHREAD_WIN32_) +typedef struct { + HANDLE mEvents[2]; /* Signal and broadcast event HANDLEs. */ + unsigned int mWaitersCount; /* Count of the number of waiters. */ + CRITICAL_SECTION mWaitersCountLock; /* Serialize access to mWaitersCount. */ +} cnd_t; +#else +typedef pthread_cond_t cnd_t; +#endif + +/** Create a condition variable object. +* @param cond A condition variable object. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int cnd_init(cnd_t *cond); + +/** Release any resources used by the given condition variable. +* @param cond A condition variable object. +*/ +void cnd_destroy(cnd_t *cond); + +/** Signal a condition variable. +* Unblocks one of the threads that are blocked on the given condition variable +* at the time of the call. If no threads are blocked on the condition variable +* at the time of the call, the function does nothing and return success. +* @param cond A condition variable object. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int cnd_signal(cnd_t *cond); + +/** Broadcast a condition variable. +* Unblocks all of the threads that are blocked on the given condition variable +* at the time of the call. If no threads are blocked on the condition variable +* at the time of the call, the function does nothing and return success. +* @param cond A condition variable object. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int cnd_broadcast(cnd_t *cond); + +/** Wait for a condition variable to become signaled. +* The function atomically unlocks the given mutex and endeavors to block until +* the given condition variable is signaled by a call to cnd_signal or to +* cnd_broadcast. When the calling thread becomes unblocked it locks the mutex +* before it returns. +* @param cond A condition variable object. +* @param mtx A mutex object. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int cnd_wait(cnd_t *cond, mtx_t *mtx); + +/** Wait for a condition variable to become signaled. +* The function atomically unlocks the given mutex and endeavors to block until +* the given condition variable is signaled by a call to cnd_signal or to +* cnd_broadcast, or until after the specified time. When the calling thread +* becomes unblocked it locks the mutex before it returns. +* @param cond A condition variable object. +* @param mtx A mutex object. +* @param xt A point in time at which the request will time out (absolute time). +* @return @ref thrd_success upon success, or @ref thrd_timeout if the time +* specified in the call was reached without acquiring the requested resource, or +* @ref thrd_error if the request could not be honored. +*/ +int cnd_timedwait(cnd_t *cond, mtx_t *mtx, const struct timespec *ts); + +/* Thread */ +#if defined(_TTHREAD_WIN32_) +typedef HANDLE thrd_t; +#else +typedef pthread_t thrd_t; +#endif + +/** Thread start function. +* Any thread that is started with the @ref thrd_create() function must be +* started through a function of this type. +* @param arg The thread argument (the @c arg argument of the corresponding +* @ref thrd_create() call). +* @return The thread return value, which can be obtained by another thread +* by using the @ref thrd_join() function. +*/ +typedef int (*thrd_start_t)(void *arg); + +/** Create a new thread. +* @param thr Identifier of the newly created thread. +* @param func A function pointer to the function that will be executed in +* the new thread. +* @param arg An argument to the thread function. +* @return @ref thrd_success on success, or @ref thrd_nomem if no memory could +* be allocated for the thread requested, or @ref thrd_error if the request +* could not be honored. +* @note A thread’s identifier may be reused for a different thread once the +* original thread has exited and either been detached or joined to another +* thread. +*/ +int thrd_create(thrd_t *thr, thrd_start_t func, void *arg); + +/** Identify the calling thread. +* @return The identifier of the calling thread. +*/ +thrd_t thrd_current(void); + +/** NOT YET IMPLEMENTED. +*/ +int thrd_detach(thrd_t thr); + +/** Compare two thread identifiers. +* The function determines if two thread identifiers refer to the same thread. +* @return Zero if the two thread identifiers refer to different threads. +* Otherwise a nonzero value is returned. +*/ +int thrd_equal(thrd_t thr0, thrd_t thr1); + +/** Terminate execution of the calling thread. +* @param res Result code of the calling thread. +*/ +void thrd_exit(int res); + +/** Wait for a thread to terminate. +* The function joins the given thread with the current thread by blocking +* until the other thread has terminated. +* @param thr The thread to join with. +* @param res If this pointer is not NULL, the function will store the result +* code of the given thread in the integer pointed to by @c res. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int thrd_join(thrd_t thr, int *res); + +/** Put the calling thread to sleep. +* Suspend execution of the calling thread. +* @param time_point A point in time at which the thread will resume (absolute time). +* @param remaining If non-NULL, this parameter will hold the remaining time until +* time_point upon return. This will typically be zero, but if +* the thread was woken up by a signal that is not ignored before +* time_point was reached @c remaining will hold a positive +* time. +* @return 0 (zero) on successful sleep, or -1 if an interrupt occurred. +*/ +int thrd_sleep(const struct timespec *time_point, struct timespec *remaining); + +/** Yield execution to another thread. +* Permit other threads to run, even if the current thread would ordinarily +* continue to run. +*/ +void thrd_yield(void); + +/* Thread local storage */ +#if defined(_TTHREAD_WIN32_) +typedef DWORD tss_t; +#else +typedef pthread_key_t tss_t; +#endif + +/** Destructor function for a thread-specific storage. +* @param val The value of the destructed thread-specific storage. +*/ +typedef void (*tss_dtor_t)(void *val); + +/** Create a thread-specific storage. +* @param key The unique key identifier that will be set if the function is +* successful. +* @param dtor Destructor function. This can be NULL. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +* @note The destructor function is not supported under Windows. If @c dtor is +* not NULL when calling this function under Windows, the function will fail +* and return @ref thrd_error. +*/ +int tss_create(tss_t *key, tss_dtor_t dtor); + +/** Delete a thread-specific storage. +* The function releases any resources used by the given thread-specific +* storage. +* @param key The key that shall be deleted. +*/ +void tss_delete(tss_t key); + +/** Get the value for a thread-specific storage. +* @param key The thread-specific storage identifier. +* @return The value for the current thread held in the given thread-specific +* storage. +*/ +void *tss_get(tss_t key); + +/** Set the value for a thread-specific storage. +* @param key The thread-specific storage identifier. +* @param val The value of the thread-specific storage to set for the current +* thread. +* @return @ref thrd_success on success, or @ref thrd_error if the request could +* not be honored. +*/ +int tss_set(tss_t key, void *val); + + +#endif /* _TINYTHREAD_H_ */ + diff --git a/lib/glfw/deps/vs2008/stdint.h b/lib/glfw/deps/vs2008/stdint.h new file mode 100644 index 0000000..d02608a --- /dev/null +++ b/lib/glfw/deps/vs2008/stdint.h @@ -0,0 +1,247 @@ +// ISO C9x compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2008 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. The name of the author may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include + +// For Visual Studio 6 in C++ mode and for many Visual Studio versions when +// compiling for ARM we should wrap include with 'extern "C++" {}' +// or compiler give many errors like this: +// error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#ifdef __cplusplus +extern "C" { +#endif +# include +#ifdef __cplusplus +} +#endif + +// Define _W64 macros to mark types changing their size, like intptr_t. +#ifndef _W64 +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif + + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types + +// Visual Studio 6 and Embedded Visual C++ 4 doesn't +// realize that, e.g. char has the same size as __int8 +// so we give up on __intX for them. +#if (_MSC_VER < 1300) + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; +#else + typedef signed __int8 int8_t; + typedef signed __int16 int16_t; + typedef signed __int32 int32_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; +#endif +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; + + +// 7.18.1.2 Minimum-width integer types +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ + typedef signed __int64 intptr_t; + typedef unsigned __int64 uintptr_t; +#else // _WIN64 ][ + typedef _W64 signed int intptr_t; + typedef _W64 unsigned int uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN ((int8_t)_I8_MIN) +#define INT8_MAX _I8_MAX +#define INT16_MIN ((int16_t)_I16_MIN) +#define INT16_MAX _I16_MAX +#define INT32_MIN ((int32_t)_I32_MIN) +#define INT32_MAX _I32_MAX +#define INT64_MIN ((int64_t)_I64_MIN) +#define INT64_MAX _I64_MAX +#define UINT8_MAX _UI8_MAX +#define UINT16_MAX _UI16_MAX +#define UINT32_MAX _UI32_MAX +#define UINT64_MAX _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +#else // _WIN64 ][ +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +# define PTRDIFF_MIN _I64_MIN +# define PTRDIFF_MAX _I64_MAX +#else // _WIN64 ][ +# define PTRDIFF_MIN _I32_MIN +# define PTRDIFF_MAX _I32_MAX +#endif // _WIN64 ] + +#define SIG_ATOMIC_MIN INT_MIN +#define SIG_ATOMIC_MAX INT_MAX + +#ifndef SIZE_MAX // [ +# ifdef _WIN64 // [ +# define SIZE_MAX _UI64_MAX +# else // _WIN64 ][ +# define SIZE_MAX _UI32_MAX +# endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in +#ifndef WCHAR_MIN // [ +# define WCHAR_MIN 0 +#endif // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +# define WCHAR_MAX _UI16_MAX +#endif // WCHAR_MAX ] + +#define WINT_MIN 0 +#define WINT_MAX _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +#define INTMAX_C INT64_C +#define UINTMAX_C UINT64_C + +#endif // __STDC_CONSTANT_MACROS ] + + +#endif // _MSC_STDINT_H_ ] diff --git a/lib/glfw/docs/CMakeLists.txt b/lib/glfw/docs/CMakeLists.txt new file mode 100644 index 0000000..79cad56 --- /dev/null +++ b/lib/glfw/docs/CMakeLists.txt @@ -0,0 +1,46 @@ + +# NOTE: The order of this list determines the order of items in the Guides +# (i.e. Pages) list in the generated documentation +set(source_files + main.dox + news.dox + quick.dox + moving.dox + compile.dox + build.dox + intro.dox + context.dox + monitor.dox + window.dox + input.dox + vulkan.dox + compat.dox + internal.dox) + +set(extra_files DoxygenLayout.xml header.html footer.html extra.css spaces.svg) + +set(header_paths + "${GLFW_SOURCE_DIR}/include/GLFW/glfw3.h" + "${GLFW_SOURCE_DIR}/include/GLFW/glfw3native.h") + +# Format the source list into a Doxyfile INPUT value that Doxygen can parse +foreach(path IN LISTS header_paths) + string(APPEND GLFW_DOXYGEN_INPUT " \\\n\"${path}\"") +endforeach() +foreach(file IN LISTS source_files) + string(APPEND GLFW_DOXYGEN_INPUT " \\\n\"${CMAKE_CURRENT_SOURCE_DIR}/${file}\"") +endforeach() + +configure_file(Doxyfile.in Doxyfile @ONLY) + +add_custom_command(OUTPUT "html/index.html" + COMMAND "${DOXYGEN_EXECUTABLE}" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + MAIN_DEPENDENCY Doxyfile + DEPENDS ${header_paths} ${source_files} ${extra_files} + COMMENT "Generating HTML documentation" + VERBATIM) + +add_custom_target(docs ALL SOURCES "html/index.html") +set_target_properties(docs PROPERTIES FOLDER "GLFW3") + diff --git a/lib/glfw/docs/CONTRIBUTING.md b/lib/glfw/docs/CONTRIBUTING.md new file mode 100644 index 0000000..050c1be --- /dev/null +++ b/lib/glfw/docs/CONTRIBUTING.md @@ -0,0 +1,391 @@ +# Contribution Guide + +## Contents + +- [Asking a question](#asking-a-question) +- [Reporting a bug](#reporting-a-bug) + - [Reporting a compile or link bug](#reporting-a-compile-or-link-bug) + - [Reporting a segfault or other crash bug](#reporting-a-segfault-or-other-crash-bug) + - [Reporting a context creation bug](#reporting-a-context-creation-bug) + - [Reporting a monitor or video mode bug](#reporting-a-monitor-or-video-mode-bug) + - [Reporting a window, input or event bug](#reporting-a-window-input-or-event-bug) + - [Reporting some other library bug](#reporting-some-other-library-bug) + - [Reporting a documentation bug](#reporting-a-documentation-bug) + - [Reporting a website bug](#reporting-a-website-bug) +- [Requesting a feature](#requesting-a-feature) +- [Contributing a bug fix](#contributing-a-bug-fix) +- [Contributing a feature](#contributing-a-feature) + + +## Asking a question + +Questions about how to use GLFW should be asked either in the [support +section](https://discourse.glfw.org/c/support) of the forum, under the [Stack +Overflow tag](https://stackoverflow.com/questions/tagged/glfw) or [Game +Development tag](https://gamedev.stackexchange.com/questions/tagged/glfw) on +Stack Exchange or in the IRC channel `#glfw` on +[Libera.Chat](https://libera.chat/). + +Questions about the design or implementation of GLFW or about future plans +should be asked in the [dev section](https://discourse.glfw.org/c/dev) of the +forum or in the IRC channel. Please don't open a GitHub issue to discuss design +questions without first checking with a maintainer. + + +## Reporting a bug + +If GLFW is behaving unexpectedly at run-time, start by setting an [error +callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling). +GLFW will often tell you the cause of an error via this callback. If it +doesn't, that might be a separate bug. + +If GLFW is crashing or triggering asserts, make sure that all your object +handles and other pointers are valid. + +For bugs where it makes sense, a short, self contained example is absolutely +invaluable. Just put it inline in the body text. Note that if the bug is +reproducible with one of the test programs that come with GLFW, just mention +that instead. + +__Don't worry about adding too much information__. Unimportant information can +be abbreviated or removed later, but missing information can stall bug fixing, +especially when your schedule doesn't align with that of the maintainer. + +__Please provide text as text, not as images__. This includes code, error +messages and any other text. Text in images cannot be found by other users +searching for the same problem and may have to be re-typed by maintainers when +debugging. + +You don't need to manually indent your code or other text to quote it with +GitHub Markdown; just surround it with triple backticks: + + ``` + Some quoted text. + ``` + +You can also add syntax highlighting by appending the common file extension: + + ```c + int five(void) + { + return 5; + } + ``` + +There are issue labels for both platforms and GPU manufacturers, so there is no +need to mention these in the subject line. If you do, it will be removed when +the issue is labeled. + +If your bug is already reported, please add any new information you have, or if +it already has everything, give it a :+1:. + + +### Reporting a compile or link bug + +__Note:__ GLFW needs many system APIs to do its job, which on some platforms +means linking to many system libraries. If you are using GLFW as a static +library, that means your application needs to link to these in addition to GLFW. + +__Note:__ Check the [Compiling +GLFW](https://www.glfw.org/docs/latest/compile.html) guide and or [Building +applications](https://www.glfw.org/docs/latest/build.html) guide for before +opening an issue of this kind. Most issues are caused by a missing package or +linker flag. + +Always include the __operating system name and version__ (e.g. `Windows +7 64-bit` or `Ubuntu 15.10`) and the __compiler name and version__ (e.g. `Visual +C++ 2015 Update 2`). If you are using an official release of GLFW, +include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the +__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. + +Please also include the __complete build log__ from your compiler and linker, +even if it's long. It can always be shortened later, if necessary. + + +#### Quick template + +``` +OS and version: +Compiler version: +Release or commit: +Build log: +``` + + +### Reporting a segfault or other crash bug + +Always include the __operating system name and version__ (e.g. `Windows +7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, +include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the +__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. + +Please also include any __error messages__ provided to your application via the +[error +callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and +the __full call stack__ of the crash, or if the crash does not occur in debug +mode, mention that instead. + + +#### Quick template + +``` +OS and version: +Release or commit: +Error messages: +Call stack: +``` + + +### Reporting a context creation bug + +__Note:__ Windows ships with graphics drivers that do not support OpenGL. If +GLFW says that your machine lacks support for OpenGL, it very likely does. +Install drivers from the computer manufacturer or graphics card manufacturer +([Nvidia](https://www.geforce.com/drivers), +[AMD](https://www.amd.com/en/support), +[Intel](https://www-ssl.intel.com/content/www/us/en/support/detect.html)) to +fix this. + +__Note:__ AMD only supports OpenGL ES on Windows via EGL. See the +[GLFW\_CONTEXT\_CREATION\_API](https://www.glfw.org/docs/latest/window_guide.html#window_hints_ctx) +hint for how to select EGL. + +Please verify that context creation also fails with the `glfwinfo` tool before +reporting it as a bug. This tool is included in the GLFW source tree as +`tests/glfwinfo.c` and is built along with the library. It has switches for all +GLFW context and framebuffer hints. Run `glfwinfo -h` for a complete list. + +Always include the __operating system name and version__ (e.g. `Windows +7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, +include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the +__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. + +If you are running your program in a virtual machine, please mention this and +include the __VM name and version__ (e.g. `VirtualBox 5.1`). + +Please also include the __GLFW version string__ (`3.2.0 X11 EGL clock_gettime +/dev/js`), as described +[here](https://www.glfw.org/docs/latest/intro.html#intro_version_string), the +__GPU model and driver version__ (e.g. `GeForce GTX660 with 352.79`), and the +__output of `glfwinfo`__ (with switches matching any hints you set in your +code) when reporting this kind of bug. If this tool doesn't run on the machine, +mention that instead. + + +#### Quick template + +``` +OS and version: +GPU and driver: +Release or commit: +Version string: +glfwinfo output: +``` + + +### Reporting a monitor or video mode bug + +__Note:__ On headless systems on some platforms, no monitors are reported. This +causes glfwGetPrimaryMonitor to return `NULL`, which not all applications are +prepared for. + +__Note:__ Some third-party tools report more video modes than are approved of +by the OS. For safety and compatibility, GLFW only reports video modes the OS +wants programs to use. This is not a bug. + +The `monitors` tool is included in the GLFW source tree as `tests/monitors.c` +and is built along with the library. It lists all information GLFW provides +about monitors it detects. + +Always include the __operating system name and version__ (e.g. `Windows +7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, +include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the +__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. + +If you are running your program in a virtual machine, please mention this and +include the __VM name and version__ (e.g. `VirtualBox 5.1`). + +Please also include any __error messages__ provided to your application via the +[error +callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and +the __output of `monitors`__ when reporting this kind of bug. If this tool +doesn't run on the machine, mention this instead. + + +#### Quick template + +``` +OS and version: +Release or commit: +Error messages: +monitors output: +``` + + +### Reporting a window, input or event bug + +__Note:__ The exact ordering of related window events will sometimes differ. + +__Note:__ Window moving and resizing (by the user) will block the main thread on +some platforms. This is not a bug. Set a [refresh +callback](https://www.glfw.org/docs/latest/window.html#window_refresh) if you +want to keep the window contents updated during a move or size operation. + +The `events` tool is included in the GLFW source tree as `tests/events.c` and is +built along with the library. It prints all information provided to every +callback supported by GLFW as events occur. Each event is listed with the time +and a unique number to make discussions about event logs easier. The tool has +command-line options for creating multiple windows and full screen windows. + +Always include the __operating system name and version__ (e.g. `Windows +7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, +include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the +__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. + +If you are running your program in a virtual machine, please mention this and +include the __VM name and version__ (e.g. `VirtualBox 5.1`). + +Please also include any __error messages__ provided to your application via the +[error +callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and +if relevant, the __output of `events`__ when reporting this kind of bug. If +this tool doesn't run on the machine, mention this instead. + +__X11:__ If possible, please include what desktop environment (e.g. GNOME, +Unity, KDE) and/or window manager (e.g. Openbox, dwm, Window Maker) you are +running. If the bug is related to keyboard input, please include any input +method (e.g. ibus, SCIM) you are using. + + +#### Quick template + +``` +OS and version: +Release or commit: +Error messages: +events output: +``` + + +### Reporting some other library bug + +Always include the __operating system name and version__ (e.g. `Windows +7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW, +include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the +__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git. + +Please also include any __error messages__ provided to your application via the +[error +callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling), if +relevant. + + +#### Quick template + +``` +OS and version: +Release or commit: +Error messages: +``` + + +### Reporting a documentation bug + +If you found a bug in the documentation, including this file, then it's fine to +just link to that web page or mention that source file. You don't need to match +the source to the output or vice versa. + + +### Reporting a website bug + +If the bug is in the documentation (anything under `/docs/`) then please see the +section above. Bugs in the rest of the site are reported to the [website +source repository](https://github.com/glfw/website/issues). + + +## Requesting a feature + +Please explain why you need the feature and how you intend to use it. If you +have a specific API design in mind, please add that as well. If you have or are +planning to write code for the feature, see the section below. + +If there already is a request for the feature you need, add your specific use +case unless it is already mentioned. If it is, give it a :+1:. + + +## Contributing a bug fix + +__Note:__ You must have all necessary [intellectual +property rights](https://en.wikipedia.org/wiki/Intellectual_property) to any +code you contribute. If you did not write the code yourself, you must explain +where it came from and under what license you received it. Even code using the +same license as GLFW may not be copied without attribution. + +__There is no preferred patch size__. A one character fix is just as welcome as +a thousand line one, if that is the appropriate size for the fix. + +In addition to the code, a complete bug fix includes: + +- Change log entry in `README.md`, describing the incorrect behavior +- Credits entries for all authors of the bug fix + +Bug fixes will not be rejected because they don't include all the above parts, +but please keep in mind that maintainer time is finite and that there are many +other bugs and features to work on. + +If the patch fixes a bug introduced after the last release, it should not get +a change log entry. + +If you haven't already, read the excellent article [How to Write a Git Commit +Message](https://chris.beams.io/posts/git-commit/). + + +## Contributing a feature + +__Note:__ You must have all necessary rights to any code you contribute. If you +did not write the code yourself, you must explain where it came from and under +what license. Even code using the same license as GLFW may not be copied +without attribution. + +__Note:__ If you haven't already implemented the feature, check first if there +already is an open issue for it and if it's already being developed in an +[experimental branch](https://github.com/glfw/glfw/branches/all). + +__There is no preferred patch size__. A one-character change is just as welcome +as one adding a thousand lines, if that is the appropriate size for the +feature. + +In addition to the code, a complete feature includes: + +- Change log entry in `README.md`, listing all new symbols +- News page entry, briefly describing the feature +- Guide documentation, with minimal examples, in the relevant guide +- Reference documentation, with all applicable tags +- Cross-references and mentions in appropriate places +- Credits entries for all authors of the feature + +If the feature requires platform-specific code, at minimum stubs must be added +for the new platform function to all supported and experimental platforms. + +If it adds a new callback, support for it must be added to `tests/event.c`. + +If it adds a new monitor property, support for it must be added to +`tests/monitor.c`. + +If it adds a new OpenGL, OpenGL ES or Vulkan option or extension, support +for it must be added to `tests/glfwinfo.c` and the behavior of the library when +the extension is missing documented in `docs/compat.dox`. + +If you haven't already, read the excellent article [How to Write a Git Commit +Message](https://chris.beams.io/posts/git-commit/). + +Features will not be rejected because they don't include all the above parts, +but please keep in mind that maintainer time is finite and that there are many +other features and bugs to work on. + +Please also keep in mind that any part of the public API that has been included +in a release cannot be changed until the next _major_ version. Features can be +added and existing parts can sometimes be overloaded (in the general sense of +doing more things, not in the C++ sense), but code written to the API of one +minor release should both compile and run on subsequent minor releases. + diff --git a/lib/glfw/docs/Doxyfile.in b/lib/glfw/docs/Doxyfile.in new file mode 100644 index 0000000..6505aa3 --- /dev/null +++ b/lib/glfw/docs/Doxyfile.in @@ -0,0 +1,2691 @@ +# Doxyfile 1.9.5 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "GLFW" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = @GLFW_VERSION@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "A multi-platform library for OpenGL, window and input" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = "@GLFW_BINARY_DIR@/docs" + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# numer of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = NO + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = "thread_safety=@par Thread safety^^" \ + "pointer_lifetime=@par Pointer lifetime^^" \ + "analysis=@par Analysis^^" \ + "reentrancy=@par Reentrancy^^" \ + "errors=@par Errors^^" \ + "callback_signature=@par Callback signature^^" \ + "glfw3=__GLFW 3:__" \ + "x11=__X11:__" \ + "wayland=__Wayland:__" \ + "win32=__Windows:__" \ + "macos=__macOS:__" \ + "linux=__Linux:__" + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = SYSTEM + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = YES + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = "@GLFW_SOURCE_DIR@/docs/DoxygenLayout.xml" + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = YES + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = "@GLFW_BINARY_DIR@/docs/warnings.txt" + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = @GLFW_DOXYGEN_INPUT@ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding +# "INPUT_ENCODING" for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, +# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C +# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.h *.dox + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = APIENTRY GLFWAPI + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = "@GLFW_SOURCE_DIR@/examples" + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = glfw GLFW_ + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = "@GLFW_SOURCE_DIR@/docs/header.html" + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = "@GLFW_SOURCE_DIR@/docs/footer.html" + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = "@GLFW_SOURCE_DIR@/docs/extra.css" + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = "@GLFW_SOURCE_DIR@/docs/spaces.svg" + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. Default setting AUTO_LIGHT +# enables light output unless the user preference is dark output. Other options +# are DARK to always use dark mode, LIGHT to always use light mode, AUTO_DARK to +# default to dark mode unless the user prefers light mode, and TOGGLE to let the +# user toggle between dark and light mode via a button. +# Possible values are: LIGHT Always generate light output., DARK Always generate +# dark output., AUTO_LIGHT Automatically set the mode according to the user +# preference, use light mode if no preference is set (the default)., AUTO_DARK +# Automatically set the mode according to the user preference, use dark mode if +# no preference is set. and TOGGLE Allow to user to switch between light and +# dark mode via a button.. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 300 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
Node, +# Edge and Graph Attributes specification You need to make sure dot is able +# to find the font, which can be done by putting it in a standard location or by +# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. Default graphviz fontsize is 14. +# The default value is: fontname=Helvetica,fontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" + +# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can +# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about +# arrows shapes. +# The default value is: labelfontname=Helvetica,labelfontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" + +# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes +# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification +# The default value is: shape=box,height=0.2,width=0.4. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" + +# You can set the path where dot can find font specified with fontname in +# DOT_COMMON_ATTR and others dot attributes. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a +# graph for each documented class showing the direct and indirect inheritance +# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, +# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set +# to TEXT the direct and indirect inheritance relations will be shown as texts / +# links. +# Possible values are: NO, YES, TEXT and GRAPH. +# The default value is: YES. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# graph for each documented class showing the direct and indirect implementation +# dependencies (inheritance, containment, and class references variables) of the +# class with other documented classes. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. See also the chapter Grouping +# in the manual. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside the +# class node. If there are many fields or methods and many nodes the graph may +# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the +# number of items for each type to make the size more manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag UML_LOOK is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS +# tag is set to YES, doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# will not generate fields with class member information in the UML graphs. The +# class diagrams will look similar to the default class diagrams but using UML +# notation for the relationships. +# Possible values are: NO, YES and NONE. +# The default value is: NO. +# This tag requires that the tag UML_LOOK is set to YES. + +DOT_UML_DETAILS = NO + +# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters +# to display on a single line. If the actual line length exceeds this threshold +# significantly it will wrapped across multiple lines. Some heuristics are apply +# to avoid ugly line breaks. +# Minimum value: 0, maximum value: 1000, default value: 17. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_WRAP_THRESHOLD = 17 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = NO + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to +# YES then doxygen will generate a graph for each documented file showing the +# direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# set to YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# dependencies a directory has on other directories in a graphical way. The +# dependency relations are determined by the #include relations between the +# files in the directories. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). +# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order +# to make the SVG files visible in IE 9+ (other browsers do not have this +# requirement). +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# +# Note that this requires a modern browser other than Internet Explorer. Tested +# and working are Firefox, Chrome, Safari, and Opera. +# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make +# the SVG files visible. Older versions of IE do not have SVG support. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the \dotfile +# command). +# This tag requires that the tag HAVE_DOT is set to YES. + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = + +# The DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file or to the filename of jar file +# to be used. If left blank, it is assumed PlantUML is not used or called during +# a preprocessing step. Doxygen will generate a warning when it encounters a +# \startuml command in this case and will not generate output for the diagram. + +PLANTUML_JAR_PATH = + +# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for plantuml. + +PLANTUML_CFG_FILE = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +PLANTUML_INCLUDE_PATH = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes +# that will be shown in the graph. If the number of nodes in a graph becomes +# larger than this value, doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that doxygen if the number of direct +# children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that +# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs +# generated by dot. A depth value of 3 means that only nodes reachable from the +# root by following a path via at most 3 edges will be shown. Nodes that lay +# further from the root node will be omitted. Note that setting this option to 1 +# or 2 may greatly reduce the computation time needed for large code bases. Also +# note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) support +# this, this feature is disabled by default. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# graphical representation for inheritance and collaboration diagrams is used. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate +# files that are used to generate the various graphs. +# +# Note: This setting is not only used for dot files but also for msc temporary +# files. +# The default value is: YES. + +DOT_CLEANUP = YES diff --git a/lib/glfw/docs/DoxygenLayout.xml b/lib/glfw/docs/DoxygenLayout.xml new file mode 100644 index 0000000..ab97172 --- /dev/null +++ b/lib/glfw/docs/DoxygenLayout.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/glfw/docs/SUPPORT.md b/lib/glfw/docs/SUPPORT.md new file mode 100644 index 0000000..79a45a8 --- /dev/null +++ b/lib/glfw/docs/SUPPORT.md @@ -0,0 +1,14 @@ +# Support resources + +See the [latest documentation](https://www.glfw.org/docs/latest/) for tutorials, +guides and the API reference. + +If you have questions about using GLFW, we have a +[forum](https://discourse.glfw.org/), and the `#glfw` IRC channel on +[Libera.Chat](https://libera.chat/). + +Bugs are reported to our [issue tracker](https://github.com/glfw/glfw/issues). +Please check the [contribution +guide](https://github.com/glfw/glfw/blob/master/docs/CONTRIBUTING.md) for +information on what to include when reporting a bug. + diff --git a/lib/glfw/docs/build.dox b/lib/glfw/docs/build.dox new file mode 100644 index 0000000..a1625d6 --- /dev/null +++ b/lib/glfw/docs/build.dox @@ -0,0 +1,338 @@ +/*! + +@page build_guide Building applications + +@tableofcontents + +This is about compiling and linking applications that use GLFW. For information on +how to write such applications, start with the +[introductory tutorial](@ref quick_guide). For information on how to compile +the GLFW library itself, see @ref compile_guide. + +This is not a tutorial on compilation or linking. It assumes basic +understanding of how to compile and link a C program as well as how to use the +specific compiler of your chosen development environment. The compilation +and linking process should be explained in your C programming material and in +the documentation for your development environment. + + +@section build_include Including the GLFW header file + +You should include the GLFW header in the source files where you use OpenGL or +GLFW. + +@code +#include +@endcode + +This header defines all the constants and declares all the types and function +prototypes of the GLFW API. By default, it also includes the OpenGL header from +your development environment. See [option macros](@ref build_macros) below for +how to select OpenGL ES headers and more. + +The GLFW header also defines any platform-specific macros needed by your OpenGL +header, so that it can be included without needing any window system headers. + +It does this only when needed, so if window system headers are included, the +GLFW header does not try to redefine those symbols. The reverse is not true, +i.e. `windows.h` cannot cope if any Win32 symbols have already been defined. + +In other words: + + - Use the GLFW header to include OpenGL or OpenGL ES headers portably + - Do not include window system headers unless you will use those APIs directly + - If you do need such headers, include them before the GLFW header + +If you are using an OpenGL extension loading library such as +[glad](https://github.com/Dav1dde/glad), the extension loader header should +be included before the GLFW one. GLFW attempts to detect any OpenGL or OpenGL +ES header or extension loader header included before it and will then disable +the inclusion of the default OpenGL header. Most extension loaders also define +macros that disable similar headers below it. + +@code +#include +#include +@endcode + +Both of these mechanisms depend on the extension loader header defining a known +macro. If yours doesn't or you don't know which one your users will pick, the +@ref GLFW_INCLUDE_NONE macro will explicitly prevent the GLFW header from +including the OpenGL header. This will also allow you to include the two +headers in any order. + +@code +#define GLFW_INCLUDE_NONE +#include +#include +@endcode + + +@subsection build_macros GLFW header option macros + +These macros may be defined before the inclusion of the GLFW header and affect +its behavior. + +@anchor GLFW_DLL +__GLFW_DLL__ is required on Windows when using the GLFW DLL, to tell the +compiler that the GLFW functions are defined in a DLL. + +The following macros control which OpenGL or OpenGL ES API header is included. +Only one of these may be defined at a time. + +@note GLFW does not provide any of the API headers mentioned below. They are +provided by your development environment or your OpenGL, OpenGL ES or Vulkan +SDK, and most of them can be downloaded from the +[Khronos Registry](https://www.khronos.org/registry/). + +@anchor GLFW_INCLUDE_GLCOREARB +__GLFW_INCLUDE_GLCOREARB__ makes the GLFW header include the modern +`GL/glcorearb.h` header (`OpenGL/gl3.h` on macOS) instead of the regular OpenGL +header. + +@anchor GLFW_INCLUDE_ES1 +__GLFW_INCLUDE_ES1__ makes the GLFW header include the OpenGL ES 1.x `GLES/gl.h` +header instead of the regular OpenGL header. + +@anchor GLFW_INCLUDE_ES2 +__GLFW_INCLUDE_ES2__ makes the GLFW header include the OpenGL ES 2.0 +`GLES2/gl2.h` header instead of the regular OpenGL header. + +@anchor GLFW_INCLUDE_ES3 +__GLFW_INCLUDE_ES3__ makes the GLFW header include the OpenGL ES 3.0 +`GLES3/gl3.h` header instead of the regular OpenGL header. + +@anchor GLFW_INCLUDE_ES31 +__GLFW_INCLUDE_ES31__ makes the GLFW header include the OpenGL ES 3.1 +`GLES3/gl31.h` header instead of the regular OpenGL header. + +@anchor GLFW_INCLUDE_ES32 +__GLFW_INCLUDE_ES32__ makes the GLFW header include the OpenGL ES 3.2 +`GLES3/gl32.h` header instead of the regular OpenGL header. + +@anchor GLFW_INCLUDE_NONE +__GLFW_INCLUDE_NONE__ makes the GLFW header not include any OpenGL or OpenGL ES +API header. This is useful in combination with an extension loading library. + +If none of the above inclusion macros are defined, the standard OpenGL `GL/gl.h` +header (`OpenGL/gl.h` on macOS) is included, unless GLFW detects the inclusion +guards of any OpenGL, OpenGL ES or extension loader header it knows about. + +The following macros control the inclusion of additional API headers. Any +number of these may be defined simultaneously, and/or together with one of the +above macros. + +@anchor GLFW_INCLUDE_VULKAN +__GLFW_INCLUDE_VULKAN__ makes the GLFW header include the Vulkan +`vulkan/vulkan.h` header in addition to any selected OpenGL or OpenGL ES header. + +@anchor GLFW_INCLUDE_GLEXT +__GLFW_INCLUDE_GLEXT__ makes the GLFW header include the appropriate extension +header for the OpenGL or OpenGL ES header selected above after and in addition +to that header. + +@anchor GLFW_INCLUDE_GLU +__GLFW_INCLUDE_GLU__ makes the header include the GLU header in addition to the +header selected above. This should only be used with the standard OpenGL header +and only for compatibility with legacy code. GLU has been deprecated and should +not be used in new code. + +@note None of these macros may be defined during the compilation of GLFW itself. +If your build includes GLFW and you define any these in your build files, make +sure they are not applied to the GLFW sources. + + +@section build_link Link with the right libraries + +GLFW is essentially a wrapper of various platform-specific APIs and therefore +needs to link against many different system libraries. If you are using GLFW as +a shared library / dynamic library / DLL then it takes care of these links. +However, if you are using GLFW as a static library then your executable will +need to link against these libraries. + +On Windows and macOS, the list of system libraries is static and can be +hard-coded into your build environment. See the section for your development +environment below. On Linux and other Unix-like operating systems, the list +varies but can be retrieved in various ways as described below. + +A good general introduction to linking is +[Beginner's Guide to Linkers](https://www.lurklurk.org/linkers/linkers.html) by +David Drysdale. + + +@subsection build_link_win32 With MinGW or Visual C++ on Windows + +The static version of the GLFW library is named `glfw3`. When using this +version, it is also necessary to link with some libraries that GLFW uses. + +When using MinGW to link an application with the static version of GLFW, you +must also explicitly link with `gdi32`. Other toolchains including MinGW-w64 +include it in the set of default libraries along with other dependencies like +`user32` and `kernel32`. + +The link library for the GLFW DLL is named `glfw3dll`. When compiling an +application that uses the DLL version of GLFW, you need to define the @ref +GLFW_DLL macro _before_ any inclusion of the GLFW header. This can be done +either with a compiler switch or by defining it in your source code. + + +@subsection build_link_cmake_source With CMake and GLFW source + +This section is about using CMake to compile and link GLFW along with your +application. If you want to use an installed binary instead, see @ref +build_link_cmake_package. + +With a few changes to your `CMakeLists.txt` you can have the GLFW source tree +built along with your application. + +Add the root directory of the GLFW source tree to your project. This will add +the `glfw` target to your project. + +@code{.cmake} +add_subdirectory(path/to/glfw) +@endcode + +Once GLFW has been added, link your application against the `glfw` target. +This adds the GLFW library and its link-time dependencies as it is currently +configured, the include directory for the GLFW header and, when applicable, the +@ref GLFW_DLL macro. + +@code{.cmake} +target_link_libraries(myapp glfw) +@endcode + +Note that the `glfw` target does not depend on OpenGL, as GLFW loads any OpenGL, +OpenGL ES or Vulkan libraries it needs at runtime. If your application calls +OpenGL directly, instead of using a modern +[extension loader library](@ref context_glext_auto), use the OpenGL CMake +package. + +@code{.cmake} +find_package(OpenGL REQUIRED) +@endcode + +If OpenGL is found, the `OpenGL::GL` target is added to your project, containing +library and include directory paths. Link against this like any other library. + +@code{.cmake} +target_link_libraries(myapp OpenGL::GL) +@endcode + +For a minimal example of a program and GLFW sources built with CMake, see the +[GLFW CMake Starter](https://github.com/juliettef/GLFW-CMake-starter) on GitHub. + + +@subsection build_link_cmake_package With CMake and installed GLFW binaries + +This section is about using CMake to link GLFW after it has been built and +installed. If you want to build it along with your application instead, see +@ref build_link_cmake_source. + +With a few changes to your `CMakeLists.txt` you can locate the package and +target files generated when GLFW is installed. + +@code{.cmake} +find_package(glfw3 3.4 REQUIRED) +@endcode + +Once GLFW has been added to the project, link against it with the `glfw` target. +This adds the GLFW library and its link-time dependencies, the include directory +for the GLFW header and, when applicable, the @ref GLFW_DLL macro. + +@code{.cmake} +target_link_libraries(myapp glfw) +@endcode + +Note that the `glfw` target does not depend on OpenGL, as GLFW loads any OpenGL, +OpenGL ES or Vulkan libraries it needs at runtime. If your application calls +OpenGL directly, instead of using a modern +[extension loader library](@ref context_glext_auto), use the OpenGL CMake +package. + +@code{.cmake} +find_package(OpenGL REQUIRED) +@endcode + +If OpenGL is found, the `OpenGL::GL` target is added to your project, containing +library and include directory paths. Link against this like any other library. + +@code{.cmake} +target_link_libraries(myapp OpenGL::GL) +@endcode + + +@subsection build_link_pkgconfig With makefiles and pkg-config on Unix + +GLFW supports [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/), +and the `glfw3.pc` pkg-config file is generated when the GLFW library is built +and is installed along with it. A pkg-config file describes all necessary +compile-time and link-time flags and dependencies needed to use a library. When +they are updated or if they differ between systems, you will get the correct +ones automatically. + +A typical compile and link command-line when using the static version of the +GLFW library may look like this: + +@code{.sh} +cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --static --libs glfw3) +@endcode + +If you are using the shared version of the GLFW library, omit the `--static` +flag. + +@code{.sh} +cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3) +@endcode + +You can also use the `glfw3.pc` file without installing it first, by using the +`PKG_CONFIG_PATH` environment variable. + +@code{.sh} +env PKG_CONFIG_PATH=path/to/glfw/src cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3) +@endcode + +The dependencies do not include OpenGL, as GLFW loads any OpenGL, OpenGL ES or +Vulkan libraries it needs at runtime. If your application calls OpenGL +directly, instead of using a modern +[extension loader library](@ref context_glext_auto), you should add the `gl` +pkg-config package. + +@code{.sh} +cc $(pkg-config --cflags glfw3 gl) -o myprog myprog.c $(pkg-config --libs glfw3 gl) +@endcode + + +@subsection build_link_xcode With Xcode on macOS + +If you are using the dynamic library version of GLFW, add it to the project +dependencies. + +If you are using the static library version of GLFW, add it and the Cocoa, +OpenGL and IOKit frameworks to the project as dependencies. They can all be +found in `/System/Library/Frameworks`. + + +@subsection build_link_osx With command-line on macOS + +It is recommended that you use [pkg-config](@ref build_link_pkgconfig) when +building from the command line on macOS. That way you will get any new +dependencies added automatically. If you still wish to build manually, you need +to add the required frameworks and libraries to your command-line yourself using +the `-l` and `-framework` switches. + +If you are using the dynamic GLFW library, which is named `libglfw.3.dylib`, do: + +@code{.sh} +cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL -framework IOKit +@endcode + +If you are using the static library, named `libglfw3.a`, substitute `-lglfw3` +for `-lglfw`. + +Note that you do not add the `.framework` extension to a framework when linking +against it from the command-line. + +@note Your machine may have `libGL.*.dylib` style OpenGL library, but that is +for the X Window System and will not work with the macOS native version of GLFW. + +*/ diff --git a/lib/glfw/docs/compat.dox b/lib/glfw/docs/compat.dox new file mode 100644 index 0000000..9437219 --- /dev/null +++ b/lib/glfw/docs/compat.dox @@ -0,0 +1,284 @@ +/*! + +@page compat_guide Standards conformance + +@tableofcontents + +This guide describes the various API extensions used by this version of GLFW. +It lists what are essentially implementation details, but which are nonetheless +vital knowledge for developers intending to deploy their applications on a wide +range of machines. + +The information in this guide is not a part of GLFW API, but merely +preconditions for some parts of the library to function on a given machine. Any +part of this information may change in future versions of GLFW and that will not +be considered a breaking API change. + + +@section compat_x11 X11 extensions, protocols and IPC standards + +As GLFW uses Xlib directly, without any intervening toolkit +library, it has sole responsibility for interacting well with the many and +varied window managers in use on Unix-like systems. In order for applications +and window managers to work well together, a number of standards and +conventions have been developed that regulate behavior outside the scope of the +X11 API; most importantly the +[Inter-Client Communication Conventions Manual](https://www.tronche.com/gui/x/icccm/) +(ICCCM) and +[Extended Window Manager Hints](https://standards.freedesktop.org/wm-spec/wm-spec-latest.html) +(EWMH) standards. + +GLFW uses the `_MOTIF_WM_HINTS` window property to support borderless windows. +If the running window manager does not support this property, the +`GLFW_DECORATED` hint will have no effect. + +GLFW uses the ICCCM `WM_DELETE_WINDOW` protocol to intercept the user +attempting to close the GLFW window. If the running window manager does not +support this protocol, the close callback will never be called. + +GLFW uses the EWMH `_NET_WM_PING` protocol, allowing the window manager notify +the user when the application has stopped responding, i.e. when it has ceased to +process events. If the running window manager does not support this protocol, +the user will not be notified if the application locks up. + +GLFW uses the EWMH `_NET_WM_STATE_FULLSCREEN` window state to tell the window +manager to make the GLFW window full screen. If the running window manager does +not support this state, full screen windows may not work properly. GLFW has +a fallback code path in case this state is unavailable, but every window manager +behaves slightly differently in this regard. + +GLFW uses the EWMH `_NET_WM_BYPASS_COMPOSITOR` window property to tell a +compositing window manager to un-redirect full screen GLFW windows. If the +running window manager uses compositing but does not support this property then +additional copying may be performed for each buffer swap of full screen windows. + +GLFW uses the +[clipboard manager protocol](https://www.freedesktop.org/wiki/ClipboardManager/) +to push a clipboard string (i.e. selection) owned by a GLFW window about to be +destroyed to the clipboard manager. If there is no running clipboard manager, +the clipboard string will be unavailable once the window has been destroyed. + +GLFW uses the +[X drag-and-drop protocol](https://www.freedesktop.org/wiki/Specifications/XDND/) +to provide file drop events. If the application originating the drag does not +support this protocol, drag and drop will not work. + +GLFW uses the XRandR 1.3 extension to provide multi-monitor support. If the +running X server does not support this version of this extension, multi-monitor +support will not function and only a single, desktop-spanning monitor will be +reported. + +GLFW uses the XRandR 1.3 and Xf86vidmode extensions to provide gamma ramp +support. If the running X server does not support either or both of these +extensions, gamma ramp support will not function. + +GLFW uses the Xkb extension and detectable auto-repeat to provide keyboard +input. If the running X server does not support this extension, a non-Xkb +fallback path is used. + +GLFW uses the XInput2 extension to provide raw, non-accelerated mouse motion +when the cursor is disabled. If the running X server does not support this +extension, regular accelerated mouse motion will be used. + +GLFW uses both the XRender extension and the compositing manager to support +transparent window framebuffers. If the running X server does not support this +extension or there is no running compositing manager, the +`GLFW_TRANSPARENT_FRAMEBUFFER` framebuffer hint will have no effect. + +GLFW uses both the Xcursor extension and the freedesktop cursor conventions to +provide an expanded set of standard cursor shapes. If the running X server does +not support this extension or the current cursor theme does not support the +conventions, the `GLFW_RESIZE_NWSE_CURSOR`, `GLFW_RESIZE_NESW_CURSOR` and +`GLFW_NOT_ALLOWED_CURSOR` shapes will not be available and other shapes may use +legacy images. + + +@section compat_wayland Wayland protocols and IPC standards + +As GLFW uses libwayland directly, without any intervening toolkit library, it +has sole responsibility for interacting well with every compositor in use on +Unix-like systems. Most of the features are provided by the core protocol, +while cursor support is provided by the libwayland-cursor helper library, EGL +integration by libwayland-egl, and keyboard handling by +[libxkbcommon](https://xkbcommon.org/). In addition, GLFW uses some protocols +from wayland-protocols to provide additional features if the compositor +supports them. + +GLFW uses xkbcommon 0.5.0 to provide key and text input support. Earlier +versions are not supported. + +GLFW uses the [xdg-shell +protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/xdg-shell/xdg-shell.xml) +to provide better window management. This protocol is part of +wayland-protocols 1.12, and is mandatory for GLFW to display a window. + +GLFW uses the [relative pointer +protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml) +alongside the [pointer constraints +protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml) +to implement disabled cursor. These two protocols are part of +wayland-protocols 1.1, and mandatory at build time. If the running compositor +does not support both of these protocols, disabling the cursor will have no +effect. + +GLFW uses the [idle inhibit +protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml) +to prohibit the screensaver from starting. This protocol is part of +wayland-protocols 1.6, and mandatory at build time. If the running compositor +does not support this protocol, the screensaver may start even for full screen +windows. + +GLFW uses the [xdg-decoration +protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml) +to request decorations to be drawn around its windows. This protocol is part +of wayland-protocols 1.15, and mandatory at build time. If the running +compositor does not support this protocol, a very simple frame will be drawn by +GLFW itself, using the [viewporter +protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/viewporter/viewporter.xml) +alongside +[subsurfaces](https://cgit.freedesktop.org/wayland/wayland/tree/protocol/wayland.xml#n2598). +This protocol is part of wayland-protocols 1.4, and mandatory at build time. +If the running compositor does not support this protocol either, no decorations +will be drawn around windows. + + +@section compat_glx GLX extensions + +The GLX API is the default API used to create OpenGL contexts on Unix-like +systems using the X Window System. + +GLFW uses the GLX 1.3 `GLXFBConfig` functions to enumerate and select framebuffer pixel +formats. If GLX 1.3 is not supported, @ref glfwInit will fail. + +GLFW uses the `GLX_MESA_swap_control,` `GLX_EXT_swap_control` and +`GLX_SGI_swap_control` extensions to provide vertical retrace synchronization +(or _vsync_), in that order of preference. When none of these extensions are +available, calling @ref glfwSwapInterval will have no effect. + +GLFW uses the `GLX_ARB_multisample` extension to create contexts with +multisampling anti-aliasing. Where this extension is unavailable, the +`GLFW_SAMPLES` hint will have no effect. + +GLFW uses the `GLX_ARB_create_context` extension when available, even when +creating OpenGL contexts of version 2.1 and below. Where this extension is +unavailable, the `GLFW_CONTEXT_VERSION_MAJOR` and `GLFW_CONTEXT_VERSION_MINOR` +hints will only be partially supported, the `GLFW_CONTEXT_DEBUG` hint will have +no effect, and setting the `GLFW_OPENGL_PROFILE` or `GLFW_OPENGL_FORWARD_COMPAT` +hints to `GLFW_TRUE` will cause @ref glfwCreateWindow to fail. + +GLFW uses the `GLX_ARB_create_context_profile` extension to provide support for +context profiles. Where this extension is unavailable, setting the +`GLFW_OPENGL_PROFILE` hint to anything but `GLFW_OPENGL_ANY_PROFILE`, or setting +`GLFW_CLIENT_API` to anything but `GLFW_OPENGL_API` or `GLFW_NO_API` will cause +@ref glfwCreateWindow to fail. + +GLFW uses the `GLX_ARB_context_flush_control` extension to provide control over +whether a context is flushed when it is released (made non-current). Where this +extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no +effect and the context will always be flushed when released. + +GLFW uses the `GLX_ARB_framebuffer_sRGB` and `GLX_EXT_framebuffer_sRGB` +extensions to provide support for sRGB framebuffers. Where both of these +extensions are unavailable, the `GLFW_SRGB_CAPABLE` hint will have no effect. + + +@section compat_wgl WGL extensions + +The WGL API is used to create OpenGL contexts on Microsoft Windows and other +implementations of the Win32 API, such as Wine. + +GLFW uses either the `WGL_EXT_extension_string` or the +`WGL_ARB_extension_string` extension to check for the presence of all other WGL +extensions listed below. If both are available, the EXT one is preferred. If +neither is available, no other extensions are used and many GLFW features +related to context creation will have no effect or cause errors when used. + +GLFW uses the `WGL_EXT_swap_control` extension to provide vertical retrace +synchronization (or _vsync_). Where this extension is unavailable, calling @ref +glfwSwapInterval will have no effect. + +GLFW uses the `WGL_ARB_pixel_format` and `WGL_ARB_multisample` extensions to +create contexts with multisampling anti-aliasing. Where these extensions are +unavailable, the `GLFW_SAMPLES` hint will have no effect. + +GLFW uses the `WGL_ARB_create_context` extension when available, even when +creating OpenGL contexts of version 2.1 and below. Where this extension is +unavailable, the `GLFW_CONTEXT_VERSION_MAJOR` and `GLFW_CONTEXT_VERSION_MINOR` +hints will only be partially supported, the `GLFW_CONTEXT_DEBUG` hint will have +no effect, and setting the `GLFW_OPENGL_PROFILE` or `GLFW_OPENGL_FORWARD_COMPAT` +hints to `GLFW_TRUE` will cause @ref glfwCreateWindow to fail. + +GLFW uses the `WGL_ARB_create_context_profile` extension to provide support for +context profiles. Where this extension is unavailable, setting the +`GLFW_OPENGL_PROFILE` hint to anything but `GLFW_OPENGL_ANY_PROFILE` will cause +@ref glfwCreateWindow to fail. + +GLFW uses the `WGL_ARB_context_flush_control` extension to provide control over +whether a context is flushed when it is released (made non-current). Where this +extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no +effect and the context will always be flushed when released. + +GLFW uses the `WGL_ARB_framebuffer_sRGB` and `WGL_EXT_framebuffer_sRGB` +extensions to provide support for sRGB framebuffers. When both of these +extensions are unavailable, the `GLFW_SRGB_CAPABLE` hint will have no effect. + + +@section compat_osx OpenGL on macOS + +Support for OpenGL 3.2 and above was introduced with OS X 10.7 and even then +only forward-compatible, core profile contexts are supported. Support for +OpenGL 4.1 was introduced with OS X 10.9, also limited to forward-compatible, +core profile contexts. There is also still no mechanism for requesting debug +contexts or no-error contexts. Versions of Mac OS X earlier than 10.7 support +at most OpenGL version 2.1. + +Because of this, on OS X 10.7 and later, the `GLFW_CONTEXT_VERSION_MAJOR` and +`GLFW_CONTEXT_VERSION_MINOR` hints will cause @ref glfwCreateWindow to fail if +given version 3.0 or 3.1. The `GLFW_OPENGL_PROFILE` hint must be set to +`GLFW_OPENGL_CORE_PROFILE` when creating OpenGL 3.2 and later contexts. The +`GLFW_CONTEXT_DEBUG` and `GLFW_CONTEXT_NO_ERROR` hints are ignored. + +Also, on Mac OS X 10.6 and below, the `GLFW_CONTEXT_VERSION_MAJOR` and +`GLFW_CONTEXT_VERSION_MINOR` hints will fail if given a version above 2.1, +setting the `GLFW_OPENGL_PROFILE` or `GLFW_OPENGL_FORWARD_COMPAT` hints to +a non-default value will cause @ref glfwCreateWindow to fail and the +`GLFW_CONTEXT_DEBUG` hint is ignored. + + +@section compat_vulkan Vulkan loader and API + +By default, GLFW uses the standard system-wide Vulkan loader to access the +Vulkan API on all platforms except macOS. This is installed by both graphics +drivers and Vulkan SDKs. If either the loader or at least one minimally +functional ICD is missing, @ref glfwVulkanSupported will return `GLFW_FALSE` and +all other Vulkan-related functions will fail with an @ref GLFW_API_UNAVAILABLE +error. + + +@section compat_wsi Vulkan WSI extensions + +The Vulkan WSI extensions are used to create Vulkan surfaces for GLFW windows on +all supported platforms. + +GLFW uses the `VK_KHR_surface` and `VK_KHR_win32_surface` extensions to create +surfaces on Microsoft Windows. If any of these extensions are not available, +@ref glfwGetRequiredInstanceExtensions will return an empty list and window +surface creation will fail. + +GLFW uses the `VK_KHR_surface` and either the `VK_MVK_macos_surface` or +`VK_EXT_metal_surface` extensions to create surfaces on macOS. If any of these +extensions are not available, @ref glfwGetRequiredInstanceExtensions will +return an empty list and window surface creation will fail. + +GLFW uses the `VK_KHR_surface` and either the `VK_KHR_xlib_surface` or +`VK_KHR_xcb_surface` extensions to create surfaces on X11. If `VK_KHR_surface` +or both `VK_KHR_xlib_surface` and `VK_KHR_xcb_surface` are not available, @ref +glfwGetRequiredInstanceExtensions will return an empty list and window surface +creation will fail. + +GLFW uses the `VK_KHR_surface` and `VK_KHR_wayland_surface` extensions to create +surfaces on Wayland. If any of these extensions are not available, @ref +glfwGetRequiredInstanceExtensions will return an empty list and window surface +creation will fail. + +*/ diff --git a/lib/glfw/docs/compile.dox b/lib/glfw/docs/compile.dox new file mode 100644 index 0000000..3490eb1 --- /dev/null +++ b/lib/glfw/docs/compile.dox @@ -0,0 +1,394 @@ +/*! + +@page compile_guide Compiling GLFW + +@tableofcontents + +This is about compiling the GLFW library itself. For information on how to +build applications that use GLFW, see @ref build_guide. + + +@section compile_cmake Using CMake + +GLFW behaves like most other libraries that use CMake so this guide mostly +describes the standard configure, generate and compile sequence. If you are already +familiar with this from other projects, you may want to focus on the @ref +compile_deps and @ref compile_options sections for GLFW-specific information. + +GLFW uses [CMake](https://cmake.org/) to generate project files or makefiles +for your chosen development environment. To compile GLFW, first generate these +files with CMake and then use them to compile the GLFW library. + +If you are on Windows and macOS you can +[download CMake](https://cmake.org/download/) from their site. + +If you are on a Unix-like system such as Linux, FreeBSD or Cygwin or have +a package system like Fink, MacPorts or Homebrew, you can install its CMake +package. + +CMake is a complex tool and this guide will only show a few of the possible ways +to set up and compile GLFW. The CMake project has their own much more detailed +[CMake user guide](https://cmake.org/cmake/help/latest/guide/user-interaction/) +that includes everything in this guide not specific to GLFW. It may be a useful +companion to this one. + + +@subsection compile_deps Installing dependencies + +The C/C++ development environments in Visual Studio, Xcode and MinGW come with +all necessary dependencies for compiling GLFW, but on Unix-like systems like +Linux and FreeBSD you will need a few extra packages. + + +@subsubsection compile_deps_x11 Dependencies for X11 + +To compile GLFW for X11, you need to have the X11 development packages +installed. They are not needed to build or run programs that use GLFW. + +On Debian and derivatives like Ubuntu and Linux Mint the `xorg-dev` meta-package +pulls in the development packages for all of X11. + +@code{.sh} +sudo apt install xorg-dev +@endcode + +On Fedora and derivatives like Red Hat the X11 extension packages +`libXcursor-devel`, `libXi-devel`, `libXinerama-devel` and `libXrandr-devel` +required by GLFW pull in all its other dependencies. + +@code{.sh} +sudo dnf install libXcursor-devel libXi-devel libXinerama-devel libXrandr-devel +@endcode + +On FreeBSD the X11 headers are installed along the end-user X11 packages, so if +you have an X server running you should have the headers as well. If not, +install the `xorgproto` package. + +@code{.sh} +pkg install xorgproto +@endcode + +On Cygwin the `libXcursor-devel`, `libXi-devel`, `libXinerama-devel`, +`libXrandr-devel` and `libXrender-devel` packages in the Libs section of the GUI +installer will install all the headers and other development related files GLFW +requires for X11. + +Once you have the required dependencies, move on to @ref compile_generate. + + +@subsubsection compile_deps_wayland Dependencies for Wayland and X11 + +To compile GLFW for both Wayland and X11, you need to have the X11, Wayland and xkbcommon +development packages installed. They are not needed to build or run programs that use +GLFW. You will also need to set the @ref GLFW_BUILD_WAYLAND CMake option in the next +step when generating build files. + +On Debian and derivatives like Ubuntu and Linux Mint you will need the `libwayland-dev`, +`libxkbcommon-dev` and `wayland-protocols` packages and the `xorg-dev` meta-package. +These will pull in all other dependencies. + +@code{.sh} +sudo apt install libwayland-dev libxkbcommon-dev wayland-protocols xorg-dev +@endcode + +On Fedora and derivatives like Red Hat you will need the `wayland-devel`, +`libxkbcommon-devel`, `wayland-protocols-devel`, `libXcursor-devel`, `libXi-devel`, +`libXinerama-devel` and `libXrandr-devel` packages. These will pull in all other +dependencies. + +@code{.sh} +sudo dnf install wayland-devel libxkbcommon-devel wayland-protocols-devel libXcursor-devel libXi-devel libXinerama-devel libXrandr-devel +@endcode + +On FreeBSD you will need the `wayland`, `libxkbcommon` and `wayland-protocols` packages. +The X11 headers are installed along the end-user X11 packages, so if you have an X server +running you should have the headers as well. If not, install the `xorgproto` package. + +@code{.sh} +pkg install wayland libxkbcommon wayland-protocols xorgproto +@endcode + +Once you have the required dependencies, move on to @ref compile_generate. + + +@subsection compile_generate Generating build files with CMake + +Once you have all necessary dependencies it is time to generate the project +files or makefiles for your development environment. CMake needs two paths for +this: + + - the path to the root directory of the GLFW source tree (not its `src` + subdirectory) + - the path to the directory where the generated build files and compiled + binaries will be placed + +If these are the same, it is called an in-tree build, otherwise it is called an +out-of-tree build. + +Out-of-tree builds are recommended as they avoid cluttering up the source tree. +They also allow you to have several build directories for different +configurations all using the same source tree. + +A common pattern when building a single configuration is to have a build +directory named `build` in the root of the source tree. + + +@subsubsection compile_generate_gui Generating with the CMake GUI + +Start the CMake GUI and set the paths to the source and build directories +described above. Then press _Configure_ and _Generate_. + +If you wish change any CMake variables in the list, press _Configure_ and then +_Generate_ to have the new values take effect. The variable list will be +populated after the first configure step. + +By default, GLFW will use X11 on Linux and other Unix-like systems other than macOS. To +include support for Wayland as well, set the @ref GLFW_BUILD_WAYLAND option in the GLFW +section of the variable list, then apply the new value as described above. + +Once you have generated the project files or makefiles for your chosen +development environment, move on to @ref compile_compile. + + +@subsubsection compile_generate_cli Generating with command-line CMake + +To make a build directory, pass the source and build directories to the `cmake` +command. These can be relative or absolute paths. The build directory is +created if it doesn't already exist. + +@code{.sh} +cmake -S path/to/glfw -B path/to/build +@endcode + +It is common to name the build directory `build` and place it in the root of the +source tree when only planning to build a single configuration. + +@code{.sh} +cd path/to/glfw +cmake -S . -B build +@endcode + +Without other flags these will generate Visual Studio project files on Windows +and makefiles on other platforms. You can choose other targets using the `-G` +flag. + +@code{.sh} +cmake -S path/to/glfw -B path/to/build -G Xcode +@endcode + +By default, GLFW will use X11 on Linux and other Unix-like systems other +than macOS. To also include support for Wayland, set the @ref GLFW_BUILD_WAYLAND CMake +option. + +@code{.sh} +cmake -S path/to/glfw -B path/to/build -D GLFW_BUILD_WAYLAND=1 +@endcode + +Once you have generated the project files or makefiles for your chosen +development environment, move on to @ref compile_compile. + + +@subsection compile_compile Compiling the library + +You should now have all required dependencies and the project files or makefiles +necessary to compile GLFW. Go ahead and compile the actual GLFW library with +these files as you would with any other project. + +With Visual Studio open `GLFW.sln` and use the Build menu. With Xcode open +`GLFW.xcodeproj` and use the Project menu. + +With Linux, macOS and other forms of Unix, run `make`. + +@code{.sh} +cd path/to/build +make +@endcode + +With MinGW, it is `mingw32-make`. + +@code{.sh} +cd path/to/build +mingw32-make +@endcode + +Any CMake build directory can also be built with the `cmake` command and the +`--build` flag. + +@code{.sh} +cmake --build path/to/build +@endcode + +This will run the platform specific build tool the directory was generated for. + +Once the GLFW library is compiled you are ready to build your application, +linking it to the GLFW library. See @ref build_guide for more information. + + +@section compile_options CMake options + +The CMake files for GLFW provide a number of options, although not all are +available on all supported platforms. Some of these are de facto standards +among projects using CMake and so have no `GLFW_` prefix. + +If you are using the GUI version of CMake, these are listed and can be changed +from there. If you are using the command-line version of CMake you can use the +`ccmake` ncurses GUI to set options. Some package systems like Ubuntu and other +distributions based on Debian GNU/Linux have this tool in a separate +`cmake-curses-gui` package. + +Finally, if you don't want to use any GUI, you can set options from the `cmake` +command-line with the `-D` flag. + +@code{.sh} +cmake -S path/to/glfw -B path/to/build -D BUILD_SHARED_LIBS=ON +@endcode + + +@subsection compile_options_shared Shared CMake options + +@anchor BUILD_SHARED_LIBS +__BUILD_SHARED_LIBS__ determines whether GLFW is built as a static library or as +a DLL / shared library / dynamic library. This is disabled by default, +producing a static GLFW library. This variable has no `GLFW_` prefix because it +is defined by CMake. If you want to change the library only for GLFW when it is +part of a larger project, see @ref GLFW_LIBRARY_TYPE. + +@anchor GLFW_LIBRARY_TYPE +__GLFW_LIBRARY_TYPE__ allows you to override @ref BUILD_SHARED_LIBS only for +GLFW, without affecting other libraries in a larger project. When set, the +value of this option must be a valid CMake library type. Set it to `STATIC` to +build GLFW as a static library, `SHARED` to build it as a shared library +/ dynamic library / DLL, or `OBJECT` to make GLFW a CMake object library. + +@anchor GLFW_BUILD_EXAMPLES +__GLFW_BUILD_EXAMPLES__ determines whether the GLFW examples are built +along with the library. This is enabled by default unless GLFW is being built +as a subproject of a larger CMake project. + +@anchor GLFW_BUILD_TESTS +__GLFW_BUILD_TESTS__ determines whether the GLFW test programs are +built along with the library. This is enabled by default unless GLFW is being +built as a subproject of a larger CMake project. + +@anchor GLFW_BUILD_DOCS +__GLFW_BUILD_DOCS__ determines whether the GLFW documentation is built along +with the library. This is enabled by default if +[Doxygen](https://www.doxygen.nl/) is found by CMake during configuration. + + +@subsection compile_options_win32 Win32 specific CMake options + +@anchor GLFW_BUILD_WIN32 +__GLFW_BUILD_WIN32__ determines whether to include support for Win32 when compiling the +library. This option is only available when compiling for Windows. This is enabled by +default. + +@anchor USE_MSVC_RUNTIME_LIBRARY_DLL +__USE_MSVC_RUNTIME_LIBRARY_DLL__ determines whether to use the DLL version or the +static library version of the Visual C++ runtime library. When enabled, the +DLL version of the Visual C++ library is used. This is enabled by default. + +On CMake 3.15 and later you can set the standard CMake +[CMAKE_MSVC_RUNTIME_LIBRARY](https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html) +variable instead of this GLFW-specific option. + +@anchor GLFW_USE_HYBRID_HPG +__GLFW_USE_HYBRID_HPG__ determines whether to export the `NvOptimusEnablement` and +`AmdPowerXpressRequestHighPerformance` symbols, which force the use of the +high-performance GPU on Nvidia Optimus and AMD PowerXpress systems. These symbols +need to be exported by the EXE to be detected by the driver, so the override +will not work if GLFW is built as a DLL. This is disabled by default, letting +the operating system and driver decide. + + +@subsection compile_options_macos macOS specific CMake options + +@anchor GLFW_BUILD_COCOA +__GLFW_BUILD_COCOA__ determines whether to include support for Cocoa when compiling the +library. This option is only available when compiling for macOS. This is enabled by +default. + + +@subsection compile_options_unix Unix-like system specific CMake options + +@anchor GLFW_BUILD_WAYLAND +__GLFW_BUILD_WAYLAND__ determines whether to include support for Wayland when compiling +the library. This option is only available when compiling for Linux and other Unix-like +systems other than macOS. This is disabled by default. + +@anchor GLFW_BUILD_X11 +__GLFW_BUILD_X11__ determines whether to include support for X11 when compiling the +library. This option is only available when compiling for Linux and other Unix-like +systems other than macOS. This is enabled by default. + + +@section compile_mingw_cross Cross-compilation with CMake and MinGW + +Both Cygwin and many Linux distributions have MinGW or MinGW-w64 packages. For +example, Cygwin has the `mingw64-i686-gcc` and `mingw64-x86_64-gcc` packages +for 32- and 64-bit version of MinGW-w64, while Debian GNU/Linux and derivatives +like Ubuntu have the `mingw-w64` package for both. + +GLFW has CMake toolchain files in the `CMake` subdirectory that set up +cross-compilation of Windows binaries. To use these files you set the +`CMAKE_TOOLCHAIN_FILE` CMake variable with the `-D` flag add an option when +configuring and generating the build files. + +@code{.sh} +cmake -S path/to/glfw -B path/to/build -D CMAKE_TOOLCHAIN_FILE=path/to/file +@endcode + +The exact toolchain file to use depends on the prefix used by the MinGW or +MinGW-w64 binaries on your system. You can usually see this in the /usr +directory. For example, both the Ubuntu and Cygwin MinGW-w64 packages have +`/usr/x86_64-w64-mingw32` for the 64-bit compilers, so the correct invocation +would be: + +@code{.sh} +cmake -S path/to/glfw -B path/to/build -D CMAKE_TOOLCHAIN_FILE=CMake/x86_64-w64-mingw32.cmake +@endcode + +The path to the toolchain file is relative to the path to the GLFW source tree +passed to the `-S` flag, not to the current directory. + +For more details see the +[CMake toolchain guide](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html). + + +@section compile_manual Compiling GLFW manually + +If you wish to compile GLFW without its CMake build environment then you will have to do +at least some platform-detection yourself. There are preprocessor macros for +enabling support for the platforms (window systems) available. There are also optional, +platform-specific macros for various features. + +When building, GLFW will expect the necessary configuration macros to be defined +on the command-line. The GLFW CMake files set these as private compile +definitions on the GLFW target but if you compile the GLFW sources manually you +will need to define them yourself. + +The window system is used to create windows, handle input, monitors, gamma ramps and +clipboard. The options are: + + - @b _GLFW_COCOA to use the Cocoa frameworks + - @b _GLFW_WIN32 to use the Win32 API + - @b _GLFW_X11 to use the X Window System + - @b _GLFW_WAYLAND to use the Wayland API (incomplete) + +The @b _GLFW_WAYLAND and @b _GLFW_X11 macros may be combined and produces a library that +attempts to detect the appropriate platform at initialization. + +If you are building GLFW as a shared library / dynamic library / DLL then you +must also define @b _GLFW_BUILD_DLL. Otherwise, you must not define it. + +If you are using a custom name for the Vulkan, EGL, GLX, OSMesa, OpenGL, GLESv1 +or GLESv2 library, you can override the default names by defining those you need +of @b _GLFW_VULKAN_LIBRARY, @b _GLFW_EGL_LIBRARY, @b _GLFW_GLX_LIBRARY, @b +_GLFW_OSMESA_LIBRARY, @b _GLFW_OPENGL_LIBRARY, @b _GLFW_GLESV1_LIBRARY and @b +_GLFW_GLESV2_LIBRARY. Otherwise, GLFW will use the built-in default names. + +@note None of the @ref build_macros may be defined during the compilation of +GLFW. If you define any of these in your build files, make sure they are not +applied to the GLFW sources. + +*/ diff --git a/lib/glfw/docs/context.dox b/lib/glfw/docs/context.dox new file mode 100644 index 0000000..c64a070 --- /dev/null +++ b/lib/glfw/docs/context.dox @@ -0,0 +1,342 @@ +/*! + +@page context_guide Context guide + +@tableofcontents + +This guide introduces the OpenGL and OpenGL ES context related functions of +GLFW. For details on a specific function in this category, see the @ref +context. There are also guides for the other areas of the GLFW API. + + - @ref intro_guide + - @ref window_guide + - @ref vulkan_guide + - @ref monitor_guide + - @ref input_guide + + +@section context_object Context objects + +A window object encapsulates both a top-level window and an OpenGL or OpenGL ES +context. It is created with @ref glfwCreateWindow and destroyed with @ref +glfwDestroyWindow or @ref glfwTerminate. See @ref window_creation for more +information. + +As the window and context are inseparably linked, the window object also serves +as the context handle. + +To test the creation of various kinds of contexts and see their properties, run +the `glfwinfo` test program. + +@note Vulkan does not have a context and the Vulkan instance is created via the +Vulkan API itself. If you will be using Vulkan to render to a window, disable +context creation by setting the [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) +hint to `GLFW_NO_API`. For more information, see the @ref vulkan_guide. + + +@subsection context_hints Context creation hints + +There are a number of hints, specified using @ref glfwWindowHint, related to +what kind of context is created. See +[context related hints](@ref window_hints_ctx) in the window guide. + + +@subsection context_sharing Context object sharing + +When creating a window and its OpenGL or OpenGL ES context with @ref +glfwCreateWindow, you can specify another window whose context the new one +should share its objects (textures, vertex and element buffers, etc.) with. + +@code +GLFWwindow* second_window = glfwCreateWindow(640, 480, "Second Window", NULL, first_window); +@endcode + +Object sharing is implemented by the operating system and graphics driver. On +platforms where it is possible to choose which types of objects are shared, GLFW +requests that all types are shared. + +See the relevant chapter of the [OpenGL](https://www.opengl.org/registry/) or +[OpenGL ES](https://www.khronos.org/opengles/) reference documents for more +information. The name and number of this chapter unfortunately varies between +versions and APIs, but has at times been named _Shared Objects and Multiple +Contexts_. + +GLFW comes with a bare-bones object sharing example program called `sharing`. + + +@subsection context_offscreen Offscreen contexts + +GLFW doesn't support creating contexts without an associated window. However, +contexts with hidden windows can be created with the +[GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window hint. + +@code +glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); + +GLFWwindow* offscreen_context = glfwCreateWindow(640, 480, "", NULL, NULL); +@endcode + +The window never needs to be shown and its context can be used as a plain +offscreen context. Depending on the window manager, the size of a hidden +window's framebuffer may not be usable or modifiable, so framebuffer +objects are recommended for rendering with such contexts. + +You should still [process events](@ref events) as long as you have at least one +window, even if none of them are visible. + + +@subsection context_less Windows without contexts + +You can disable context creation by setting the +[GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_NO_API`. Windows +without contexts must not be passed to @ref glfwMakeContextCurrent or @ref +glfwSwapBuffers. + + +@section context_current Current context + +Before you can make OpenGL or OpenGL ES calls, you need to have a current +context of the correct type. A context can only be current for a single thread +at a time, and a thread can only have a single context current at a time. + +When moving a context between threads, you must make it non-current on the old +thread before making it current on the new one. + +The context of a window is made current with @ref glfwMakeContextCurrent. + +@code +glfwMakeContextCurrent(window); +@endcode + +The window of the current context is returned by @ref glfwGetCurrentContext. + +@code +GLFWwindow* window = glfwGetCurrentContext(); +@endcode + +The following GLFW functions require a context to be current. Calling any these +functions without a current context will generate a @ref GLFW_NO_CURRENT_CONTEXT +error. + + - @ref glfwSwapInterval + - @ref glfwExtensionSupported + - @ref glfwGetProcAddress + + +@section context_swap Buffer swapping + +See @ref buffer_swap in the window guide. + + +@section context_glext OpenGL and OpenGL ES extensions + +One of the benefits of OpenGL and OpenGL ES is their extensibility. +Hardware vendors may include extensions in their implementations that extend the +API before that functionality is included in a new version of the OpenGL or +OpenGL ES specification, and some extensions are never included and remain +as extensions until they become obsolete. + +An extension is defined by: + +- An extension name (e.g. `GL_ARB_gl_spirv`) +- New OpenGL tokens (e.g. `GL_SPIR_V_BINARY_ARB`) +- New OpenGL functions (e.g. `glSpecializeShaderARB`) + +Note the `ARB` affix, which stands for Architecture Review Board and is used +for official extensions. The extension above was created by the ARB, but there +are many different affixes, like `NV` for Nvidia and `AMD` for, well, AMD. Any +group may also use the generic `EXT` affix. Lists of extensions, together with +their specifications, can be found at the +[OpenGL Registry](https://www.opengl.org/registry/) and +[OpenGL ES Registry](https://www.khronos.org/registry/gles/). + + +@subsection context_glext_auto Loading extension with a loader library + +An extension loader library is the easiest and best way to access both OpenGL and +OpenGL ES extensions and modern versions of the core OpenGL or OpenGL ES APIs. +They will take care of all the details of declaring and loading everything you +need. One such library is [glad](https://github.com/Dav1dde/glad) and there are +several others. + +The following example will use glad but all extension loader libraries work +similarly. + +First you need to generate the source files using the glad Python script. This +example generates a loader for any version of OpenGL, which is the default for +both GLFW and glad, but loaders for OpenGL ES, as well as loaders for specific +API versions and extension sets can be generated. The generated files are +written to the `output` directory. + +@code{.sh} +python main.py --generator c --no-loader --out-path output +@endcode + +The `--no-loader` option is added because GLFW already provides a function for +loading OpenGL and OpenGL ES function pointers, one that automatically uses the +selected context creation API, and glad can call this instead of having to +implement its own. There are several other command-line options as well. See +the glad documentation for details. + +Add the generated `output/src/glad.c`, `output/include/glad/glad.h` and +`output/include/KHR/khrplatform.h` files to your build. Then you need to +include the glad header file, which will replace the OpenGL header of your +development environment. By including the glad header before the GLFW header, +it suppresses the development environment's OpenGL or OpenGL ES header. + +@code +#include +#include +@endcode + +Finally, you need to initialize glad once you have a suitable current context. + +@code +window = glfwCreateWindow(640, 480, "My Window", NULL, NULL); +if (!window) +{ + ... +} + +glfwMakeContextCurrent(window); + +gladLoadGLLoader((GLADloadproc) glfwGetProcAddress); +@endcode + +Once glad has been loaded, you have access to all OpenGL core and extension +functions supported by both the context you created and the glad loader you +generated. After that, you are ready to start rendering. + +You can specify a minimum required OpenGL or OpenGL ES version with +[context hints](@ref window_hints_ctx). If your needs are more complex, you can +check the actual OpenGL or OpenGL ES version with +[context attributes](@ref window_attribs_ctx), or you can check whether +a specific version is supported by the current context with the +`GLAD_GL_VERSION_x_x` booleans. + +@code +if (GLAD_GL_VERSION_3_2) +{ + // Call OpenGL 3.2+ specific code +} +@endcode + +To check whether a specific extension is supported, use the `GLAD_GL_xxx` +booleans. + +@code +if (GLAD_GL_ARB_gl_spirv) +{ + // Use GL_ARB_gl_spirv +} +@endcode + + +@subsection context_glext_manual Loading extensions manually + +__Do not use this technique__ unless it is absolutely necessary. An +[extension loader library](@ref context_glext_auto) will save you a ton of +tedious, repetitive, error prone work. + +To use a certain extension, you must first check whether the context supports +that extension and then, if it introduces new functions, retrieve the pointers +to those functions. GLFW provides @ref glfwExtensionSupported and @ref +glfwGetProcAddress for manual loading of extensions and new API functions. + +This section will demonstrate manual loading of OpenGL extensions. The loading +of OpenGL ES extensions is identical except for the name of the extension header. + + +@subsubsection context_glext_header The glext.h header + +The `glext.h` extension header is a continually updated file that defines the +interfaces for all OpenGL extensions. The latest version of this can always be +found at the [OpenGL Registry](https://www.opengl.org/registry/). There are also +extension headers for the various versions of OpenGL ES at the +[OpenGL ES Registry](https://www.khronos.org/registry/gles/). It it strongly +recommended that you use your own copy of the extension header, as the one +included in your development environment may be several years out of date and +may not include the extensions you wish to use. + +The header defines function pointer types for all functions of all extensions it +supports. These have names like `PFNGLSPECIALIZESHADERARBPROC` (for +`glSpecializeShaderARB`), i.e. the name is made uppercase and `PFN` (pointer +to function) and `PROC` (procedure) are added to the ends. + +To include the extension header, define @ref GLFW_INCLUDE_GLEXT before including +the GLFW header. + +@code +#define GLFW_INCLUDE_GLEXT +#include +@endcode + + +@subsubsection context_glext_string Checking for extensions + +A given machine may not actually support the extension (it may have older +drivers or a graphics card that lacks the necessary hardware features), so it +is necessary to check at run-time whether the context supports the extension. +This is done with @ref glfwExtensionSupported. + +@code +if (glfwExtensionSupported("GL_ARB_gl_spirv")) +{ + // The extension is supported by the current context +} +@endcode + +The argument is a null terminated ASCII string with the extension name. If the +extension is supported, @ref glfwExtensionSupported returns `GLFW_TRUE`, +otherwise it returns `GLFW_FALSE`. + + +@subsubsection context_glext_proc Fetching function pointers + +Many extensions, though not all, require the use of new OpenGL functions. +These functions often do not have entry points in the client API libraries of +your operating system, making it necessary to fetch them at run time. You can +retrieve pointers to these functions with @ref glfwGetProcAddress. + +@code +PFNGLSPECIALIZESHADERARBPROC pfnSpecializeShaderARB = glfwGetProcAddress("glSpecializeShaderARB"); +@endcode + +In general, you should avoid giving the function pointer variables the (exact) +same name as the function, as this may confuse your linker. Instead, you can +use a different prefix, like above, or some other naming scheme. + +Now that all the pieces have been introduced, here is what they might look like +when used together. + +@code +#define GLFW_INCLUDE_GLEXT +#include + +#define glSpecializeShaderARB pfnSpecializeShaderARB +PFNGLSPECIALIZESHADERARBPROC pfnSpecializeShaderARB; + +// Flag indicating whether the extension is supported +int has_ARB_gl_spirv = 0; + +void load_extensions(void) +{ + if (glfwExtensionSupported("GL_ARB_gl_spirv")) + { + pfnSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC) + glfwGetProcAddress("glSpecializeShaderARB"); + has_ARB_gl_spirv = 1; + } +} + +void some_function(void) +{ + if (has_ARB_gl_spirv) + { + // Now the extension function can be called as usual + glSpecializeShaderARB(...); + } +} +@endcode + +*/ diff --git a/lib/glfw/docs/extra.css b/lib/glfw/docs/extra.css new file mode 100644 index 0000000..1a28734 --- /dev/null +++ b/lib/glfw/docs/extra.css @@ -0,0 +1,2 @@ +.sm-dox,.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted,.sm-dox ul a:hover{background:none;text-shadow:none}.sm-dox a span.sub-arrow{border-color:#f2f2f2 transparent transparent transparent}.sm-dox a span.sub-arrow:active,.sm-dox a span.sub-arrow:focus,.sm-dox a span.sub-arrow:hover,.sm-dox a:hover span.sub-arrow{border-color:#f60 transparent transparent transparent}.sm-dox ul a span.sub-arrow:active,.sm-dox ul a span.sub-arrow:focus,.sm-dox ul a span.sub-arrow:hover,.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #f60}.sm-dox ul a:hover{background:#666;text-shadow:none}.sm-dox ul.sm-nowrap a{color:#4d4d4d;text-shadow:none}#main-nav,#main-menu,#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code,.markdownTable code{background:none}#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,table.markdownTable td,table.markdownTable th,hr,.memSeparator{border:none}#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.reflist dt a.el,.levels span,.directory .levels span{text-shadow:none}.memdoc,dl.reflist dd{box-shadow:none}div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code,table.markdownTable code{padding:0}#nav-path,.directory .levels,span.lineno{display:none}html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),tr.markdownTableBody:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code,.markdownTableRowEven{background:#f2f2f2}body{color:#4d4d4d}div.title{font-size:170%;margin:1em 0 0.5em 0}h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em{color:#1a1a1a;border-bottom:none}h1{padding-top:0.5em;font-size:150%}h2{padding-top:0.5em;margin-bottom:0;font-size:130%}h3{padding-top:0.5em;margin-bottom:0;font-size:110%}.glfwheader{font-size:16px;min-height:64px;max-width:920px;padding:0 32px;margin:0 auto;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;align-content:stretch}#glfwhome{line-height:64px;padding-right:48px;color:#666;font-size:2.5em;background:url("https://www.glfw.org/css/arrow.png") no-repeat right}.glfwnavbar{list-style-type:none;margin:0 0 0 auto;float:right}#glfwhome,.glfwnavbar li{float:left}.glfwnavbar a,.glfwnavbar a:visited{line-height:64px;margin-left:2em;display:block;color:#666}.glfwnavbar{padding-left:0}#glfwhome,.glfwnavbar a,.glfwnavbar a:visited{transition:.35s ease}#titlearea,.footer{color:#666}address.footer{text-align:center;padding:2em;margin-top:3em}#top{background:#666}#main-nav{max-width:960px;margin:0 auto;font-size:13px}#main-menu{max-width:920px;margin:0 auto;font-size:13px}.memtitle{display:none}.memproto,.memname{font-weight:bold;text-shadow:none}#main-menu{min-height:36px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;align-content:stretch}#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li{color:#f2f2f2}#main-menu li ul.sm-nowrap li a{color:#4d4d4d}#main-menu li ul.sm-nowrap li a:hover{color:#f60}#main-menu>li:last-child{margin:0 0 0 auto}.contents{min-height:590px}div.contents,div.header{max-width:920px;margin:0 auto;padding:0 32px;background:#fff none}table.doxtable th,table.markdownTable th,dl.reflist dt{background:linear-gradient(to bottom, #ffa733 0%, #f60 100%);box-shadow:inset 0 0 32px #f60;text-shadow:0 -1px 1px #b34700;text-align:left;color:#fff}dl.reflist dt a.el{color:#f60;padding:.2em;border-radius:4px;background-color:#ffe0cc}div.toc{float:right;width:35%}@media screen and (max-width: 600px){div.toc{float:none;width:inherit;margin:0}}div.toc h3{font-size:1.17em}div.toc ul{padding-left:1.5em}div.toc li{font-size:1em;padding-left:0;list-style-type:disc}div.toc li.level2,div.toc li.level3{margin-left:0.5em}div.toc,.memproto,div.qindex,div.ah{background:linear-gradient(to bottom, #f2f2f2 0%, #e6e6e6 100%);box-shadow:inset 0 0 32px #e6e6e6;text-shadow:0 1px 1px #fff;color:#1a1a1a;border:2px solid #e6e6e6;border-radius:4px}.paramname{color:#803300}dl.reflist dt{border:2px solid #f60;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:none}dl.reflist dd{border:2px solid #f60;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none}table.doxtable,table.markdownTable{border-collapse:inherit;border-spacing:0;border:2px solid #f60;border-radius:4px}a,a:hover,a:visited,a:visited:hover,.contents a:visited,.el,a.el:visited,#glfwhome:hover,#main-menu a:hover,span.lineno a:hover{color:#f60;text-decoration:none}div.directory{border-collapse:inherit;border-spacing:0;border:2px solid #f60;border-radius:4px}hr,.memSeparator{height:2px;background:linear-gradient(to right, #f2f2f2 0%, #d9d9d9 50%, #f2f2f2 100%)}dl.note,dl.pre,dl.post,dl.invariant{background:linear-gradient(to bottom, #ddfad1 0%, #cbf7ba 100%);box-shadow:inset 0 0 32px #baf5a3;color:#1e5309;border:2px solid #afe699}dl.warning,dl.attention{background:linear-gradient(to bottom, #fae8d1 0%, #f7ddba 100%);box-shadow:inset 0 0 32px #f5d1a3;color:#533309;border:2px solid #e6c499}dl.deprecated,dl.bug{background:linear-gradient(to bottom, #fad1e3 0%, #f7bad6 100%);box-shadow:inset 0 0 32px #f5a3c8;color:#53092a;border:2px solid #e699bb}dl.todo,dl.test{background:linear-gradient(to bottom, #d1ecfa 0%, #bae3f7 100%);box-shadow:inset 0 0 32px #a3daf5;color:#093a53;border:2px solid #99cce6}dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test{border-radius:4px;padding:1em;text-shadow:0 1px 1px #fff;margin:1em 0}.note a,.pre a,.post a,.invariant a,.warning a,.attention a,.deprecated a,.bug a,.todo a,.test a,.note a:visited,.pre a:visited,.post a:visited,.invariant a:visited,.warning a:visited,.attention a:visited,.deprecated a:visited,.bug a:visited,.todo a:visited,.test a:visited{color:inherit}div.line{line-height:inherit}div.fragment,pre.fragment{background:#f2f2f2;border-radius:4px;border:none;padding:1em;overflow:auto;border-left:4px solid #ccc;margin:1em 0}.lineno a,.lineno a:visited,.line,pre.fragment{color:#4d4d4d}span.preprocessor,span.comment{color:#007899}a.code,a.code:visited{color:#e64500}span.keyword,span.keywordtype,span.keywordflow{color:#404040;font-weight:bold}span.stringliteral{color:#360099}code{padding:.1em;border-radius:4px} +/*# sourceMappingURL=extra.css.map */ diff --git a/lib/glfw/docs/extra.scss b/lib/glfw/docs/extra.scss new file mode 100644 index 0000000..43fe983 --- /dev/null +++ b/lib/glfw/docs/extra.scss @@ -0,0 +1,449 @@ +// NOTE: Please use this file to perform modifications on default style sheets. +// +// You need to install the official Sass CLI tool: +// npm install -g sass +// +// Run this command to regenerate extra.css after you're finished with changes: +// sass --style=compressed extra.scss extra.css +// +// Alternatively you can use online services to regenerate extra.css. + + +// Default text color for page contents +$default-text-color: hsl(0,0%,30%); + +// Page header, footer, table rows, inline codes and definition lists +$header-footer-background-color: hsl(0,0%,95%); + +// Page header, footer links and navigation bar background +$header-footer-link-color: hsl(0,0%,40%); + +// Doxygen navigation bar links +$navbar-link-color: $header-footer-background-color; + +// Page content background color +$content-background-color: hsl(0,0%,100%); + +// Bold, italic, h1, h2, ... and table of contents +$heading-color: hsl(0,0%,10%); + +// Function, enum and macro definition separator +$def-separator-color: $header-footer-background-color; + +// Base color hue +$base-hue: 24; + +// Default color used for links +$default-link-color: hsl($base-hue,100%,50%); + +// Doxygen navigation bar active tab +$tab-text-color: hsl(0,0%,100%); +$tab-background-color1: $default-link-color; +$tab-background-color2: lighten(adjust-hue($tab-background-color1, 10), 10%); + +// Table borders +$default-border-color: $default-link-color; + +// Table header +$table-text-color: $tab-text-color; +$table-background-color1: $tab-background-color1; +$table-background-color2: $tab-background-color2; + +// Table of contents, data structure index and prototypes +$toc-background-color1: hsl(0,0%,90%); +$toc-background-color2: lighten($toc-background-color1, 5%); + +// Function prototype parameters color +$prototype-param-color: darken($default-link-color, 25%); + +// Message box color: note, pre, post and invariant +$box-note-color: hsl(103,80%,85%); + +// Message box color: warning and attention +$box-warning-color: hsl(34,80%,85%); + +// Message box color: deprecated and bug +$box-bug-color: hsl(333,80%,85%); + +// Message box color: todo and test +$box-todo-color: hsl(200,80%,85%); + +// Message box helper function +@mixin message-box($base-color){ + background:linear-gradient(to bottom,lighten($base-color, 5%) 0%,$base-color 100%); + box-shadow:inset 0 0 32px darken($base-color, 5%); + color:darken($base-color, 67%); + border:2px solid desaturate(darken($base-color, 10%), 20%); +} + +.sm-dox,.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted,.sm-dox ul a:hover { + background:none; + text-shadow:none; +} + +.sm-dox a span.sub-arrow { + border-color:$navbar-link-color transparent transparent transparent; +} + +.sm-dox a span.sub-arrow:active,.sm-dox a span.sub-arrow:focus,.sm-dox a span.sub-arrow:hover,.sm-dox a:hover span.sub-arrow { + border-color:$default-link-color transparent transparent transparent; +} + +.sm-dox ul a span.sub-arrow:active,.sm-dox ul a span.sub-arrow:focus,.sm-dox ul a span.sub-arrow:hover,.sm-dox ul a:hover span.sub-arrow { + border-color:transparent transparent transparent $default-link-color; +} + +.sm-dox ul a:hover { + background:$header-footer-link-color; + text-shadow:none; +} + +.sm-dox ul.sm-nowrap a { + color:$default-text-color; + text-shadow:none; +} + +#main-nav,#main-menu,#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code,.markdownTable code { + background:none; +} + +#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,table.markdownTable td,table.markdownTable th,hr,.memSeparator { + border:none; +} + +#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.reflist dt a.el,.levels span,.directory .levels span { + text-shadow:none; +} + +.memdoc,dl.reflist dd { + box-shadow:none; +} + +div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code,table.markdownTable code { + padding:0; +} + +#nav-path,.directory .levels,span.lineno { + display:none; +} + +html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),tr.markdownTableBody:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code,.markdownTableRowEven { + background:$header-footer-background-color; +} + +body { + color:$default-text-color; +} + +div.title { + font-size: 170%; + margin: 1em 0 0.5em 0; +} + +h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em { + color:$heading-color; + border-bottom:none; +} + +h1 { + padding-top:0.5em; + font-size:150%; +} + +h2 { + padding-top:0.5em; + margin-bottom:0; + font-size:130%; +} + +h3 { + padding-top:0.5em; + margin-bottom:0; + font-size:110%; +} + +.glfwheader { + font-size:16px; + min-height:64px; + max-width:920px; + padding:0 32px; + margin:0 auto; + + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + align-items: center; + align-content: stretch; +} + +#glfwhome { + line-height:64px; + padding-right:48px; + color:$header-footer-link-color; + font-size:2.5em; + background:url("https://www.glfw.org/css/arrow.png") no-repeat right; +} + +.glfwnavbar { + list-style-type:none; + margin:0 0 0 auto; + float:right; +} + +#glfwhome,.glfwnavbar li { + float:left; +} + +.glfwnavbar a,.glfwnavbar a:visited { + line-height:64px; + margin-left:2em; + display:block; + color:$header-footer-link-color; +} + +.glfwnavbar { + padding-left: 0; +} + +#glfwhome,.glfwnavbar a,.glfwnavbar a:visited { + transition:.35s ease; +} + +#titlearea,.footer { + color:$header-footer-link-color; +} + +address.footer { + text-align:center; + padding:2em; + margin-top:3em; +} + +#top { + background:$header-footer-link-color; +} + +#main-nav { + max-width:960px; + margin:0 auto; + font-size:13px; +} + +#main-menu { + max-width:920px; + margin:0 auto; + font-size:13px; +} + +.memtitle { + display:none; +} + +.memproto,.memname { + font-weight:bold; + text-shadow:none; +} + +#main-menu { + min-height:36px; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + align-items: center; + align-content: stretch; +} + +#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li { + color:$navbar-link-color; +} + +#main-menu li ul.sm-nowrap li a { + color:$default-text-color; +} + +#main-menu li ul.sm-nowrap li a:hover { + color:$default-link-color; +} + +#main-menu > li:last-child { + margin: 0 0 0 auto; +} + +.contents { + min-height:590px; +} + +div.contents,div.header { + max-width:920px; + margin:0 auto; + padding:0 32px; + background:$content-background-color none; +} + +table.doxtable th,table.markdownTable th,dl.reflist dt { + background:linear-gradient(to bottom,$table-background-color2 0%,$table-background-color1 100%); + box-shadow:inset 0 0 32px $table-background-color1; + text-shadow:0 -1px 1px darken($table-background-color1, 15%); + text-align:left; + color:$table-text-color; +} + +dl.reflist dt a.el { + color:$default-link-color; + padding:.2em; + border-radius:4px; + background-color:lighten($default-link-color, 40%); +} + +div.toc { + float:right; + width:35%; +} + +@media screen and (max-width:600px) { + div.toc { + float:none; + width:inherit; + margin:0; + } +} + +div.toc h3 { + font-size:1.17em; +} + +div.toc ul { + padding-left:1.5em; +} + +div.toc li { + font-size:1em; + padding-left:0; + list-style-type:disc; +} + +div.toc { + li.level2, li.level3 { + margin-left:0.5em; + } +} + +div.toc,.memproto,div.qindex,div.ah { + background:linear-gradient(to bottom,$toc-background-color2 0%,$toc-background-color1 100%); + box-shadow:inset 0 0 32px $toc-background-color1; + text-shadow:0 1px 1px lighten($toc-background-color2, 10%); + color:$heading-color; + border:2px solid $toc-background-color1; + border-radius:4px; +} + +.paramname { + color:$prototype-param-color; +} + +dl.reflist dt { + border:2px solid $default-border-color; + border-top-left-radius:4px; + border-top-right-radius:4px; + border-bottom:none; +} + +dl.reflist dd { + border:2px solid $default-border-color; + border-bottom-right-radius:4px; + border-bottom-left-radius:4px; + border-top:none; +} + +table.doxtable,table.markdownTable { + border-collapse:inherit; + border-spacing:0; + border:2px solid $default-border-color; + border-radius:4px; +} + +a,a:hover,a:visited,a:visited:hover,.contents a:visited,.el,a.el:visited,#glfwhome:hover,#main-menu a:hover,span.lineno a:hover { + color:$default-link-color; + text-decoration:none; +} + +div.directory { + border-collapse:inherit; + border-spacing:0; + border:2px solid $default-border-color; + border-radius:4px; +} + +hr,.memSeparator { + height:2px; + background:linear-gradient(to right,$def-separator-color 0%,darken($def-separator-color, 10%) 50%,$def-separator-color 100%); +} + +dl.note,dl.pre,dl.post,dl.invariant { + @include message-box($box-note-color); +} + +dl.warning,dl.attention { + @include message-box($box-warning-color); +} + +dl.deprecated,dl.bug { + @include message-box($box-bug-color); +} + +dl.todo,dl.test { + @include message-box($box-todo-color); +} + +dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test { + border-radius:4px; + padding:1em; + text-shadow:0 1px 1px hsl(0,0%,100%); + margin:1em 0; +} + +.note a,.pre a,.post a,.invariant a,.warning a,.attention a,.deprecated a,.bug a,.todo a,.test a,.note a:visited,.pre a:visited,.post a:visited,.invariant a:visited,.warning a:visited,.attention a:visited,.deprecated a:visited,.bug a:visited,.todo a:visited,.test a:visited { + color:inherit; +} + +div.line { + line-height:inherit; +} + +div.fragment,pre.fragment { + background:hsl(0,0%,95%); + border-radius:4px; + border:none; + padding:1em; + overflow:auto; + border-left:4px solid hsl(0,0%,80%); + margin:1em 0; +} + +.lineno a,.lineno a:visited,.line,pre.fragment { + color:$default-text-color; +} + +span.preprocessor,span.comment { + color:hsl(193,100%,30%); +} + +a.code,a.code:visited { + color:hsl(18,100%,45%); +} + +span.keyword,span.keywordtype,span.keywordflow { + color:darken($default-text-color, 5%); + font-weight:bold; +} + +span.stringliteral { + color:hsl(261,100%,30%); +} + +code { + padding:.1em; + border-radius:4px; +} diff --git a/lib/glfw/docs/footer.html b/lib/glfw/docs/footer.html new file mode 100644 index 0000000..b0434ca --- /dev/null +++ b/lib/glfw/docs/footer.html @@ -0,0 +1,7 @@ + + + diff --git a/lib/glfw/docs/header.html b/lib/glfw/docs/header.html new file mode 100644 index 0000000..4cefa3d --- /dev/null +++ b/lib/glfw/docs/header.html @@ -0,0 +1,34 @@ + + + + + + + +$projectname: $title +$title + + + +$treeview +$search +$mathjax + +$extrastylesheet + + +
+ + + + + diff --git a/lib/glfw/docs/input.dox b/lib/glfw/docs/input.dox new file mode 100644 index 0000000..d3904f4 --- /dev/null +++ b/lib/glfw/docs/input.dox @@ -0,0 +1,977 @@ +/*! + +@page input_guide Input guide + +@tableofcontents + +This guide introduces the input related functions of GLFW. For details on +a specific function in this category, see the @ref input. There are also guides +for the other areas of GLFW. + + - @ref intro_guide + - @ref window_guide + - @ref context_guide + - @ref vulkan_guide + - @ref monitor_guide + +GLFW provides many kinds of input. While some can only be polled, like time, or +only received via callbacks, like scrolling, many provide both callbacks and +polling. Callbacks are more work to use than polling but is less CPU intensive +and guarantees that you do not miss state changes. + +All input callbacks receive a window handle. By using the +[window user pointer](@ref window_userptr), you can access non-global structures +or objects from your callbacks. + +To get a better feel for how the various events callbacks behave, run the +`events` test program. It registers every callback supported by GLFW and prints +out all arguments provided for every event, along with time and sequence +information. + + +@section events Event processing + +GLFW needs to poll the window system for events both to provide input to the +application and to prove to the window system that the application hasn't locked +up. Event processing is normally done each frame after +[buffer swapping](@ref buffer_swap). Even when you have no windows, event +polling needs to be done in order to receive monitor and joystick connection +events. + +There are three functions for processing pending events. @ref glfwPollEvents, +processes only those events that have already been received and then returns +immediately. + +@code +glfwPollEvents(); +@endcode + +This is the best choice when rendering continuously, like most games do. + +If you only need to update the contents of the window when you receive new +input, @ref glfwWaitEvents is a better choice. + +@code +glfwWaitEvents(); +@endcode + +It puts the thread to sleep until at least one event has been received and then +processes all received events. This saves a great deal of CPU cycles and is +useful for, for example, editing tools. + +If you want to wait for events but have UI elements or other tasks that need +periodic updates, @ref glfwWaitEventsTimeout lets you specify a timeout. + +@code +glfwWaitEventsTimeout(0.7); +@endcode + +It puts the thread to sleep until at least one event has been received, or until +the specified number of seconds have elapsed. It then processes any received +events. + +If the main thread is sleeping in @ref glfwWaitEvents, you can wake it from +another thread by posting an empty event to the event queue with @ref +glfwPostEmptyEvent. + +@code +glfwPostEmptyEvent(); +@endcode + +Do not assume that callbacks will _only_ be called in response to the above +functions. While it is necessary to process events in one or more of the ways +above, window systems that require GLFW to register callbacks of its own can +pass events to GLFW in response to many window system function calls. GLFW will +pass those events on to the application callbacks before returning. + +For example, on Windows the system function that @ref glfwSetWindowSize is +implemented with will send window size events directly to the event callback +that every window has and that GLFW implements for its windows. If you have set +a [window size callback](@ref window_size) GLFW will call it in turn with the +new size before everything returns back out of the @ref glfwSetWindowSize call. + + +@section input_keyboard Keyboard input + +GLFW divides keyboard input into two categories; key events and character +events. Key events relate to actual physical keyboard keys, whereas character +events relate to the Unicode code points generated by pressing some of them. + +Keys and characters do not map 1:1. A single key press may produce several +characters, and a single character may require several keys to produce. This +may not be the case on your machine, but your users are likely not all using the +same keyboard layout, input method or even operating system as you. + + +@subsection input_key Key input + +If you wish to be notified when a physical key is pressed or released or when it +repeats, set a key callback. + +@code +glfwSetKeyCallback(window, key_callback); +@endcode + +The callback function receives the [keyboard key](@ref keys), platform-specific +scancode, key action and [modifier bits](@ref mods). + +@code +void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_E && action == GLFW_PRESS) + activate_airship(); +} +@endcode + +The action is one of `GLFW_PRESS`, `GLFW_REPEAT` or `GLFW_RELEASE`. Events with +`GLFW_PRESS` and `GLFW_RELEASE` actions are emitted for every key press. Most +keys will also emit events with `GLFW_REPEAT` actions while a key is held down. + +Key events with `GLFW_REPEAT` actions are intended for text input. They are +emitted at the rate set in the user's keyboard settings. At most one key is +repeated even if several keys are held down. `GLFW_REPEAT` actions should not +be relied on to know which keys are being held down or to drive animation. +Instead you should either save the state of relevant keys based on `GLFW_PRESS` +and `GLFW_RELEASE` actions, or call @ref glfwGetKey, which provides basic cached +key state. + +The key will be one of the existing [key tokens](@ref keys), or +`GLFW_KEY_UNKNOWN` if GLFW lacks a token for it, for example _E-mail_ and _Play_ +keys. + +The scancode is unique for every key, regardless of whether it has a key token. +Scancodes are platform-specific but consistent over time, so keys will have +different scancodes depending on the platform but they are safe to save to disk. +You can query the scancode for any [named key](@ref keys) on the current +platform with @ref glfwGetKeyScancode. + +@code +const int scancode = glfwGetKeyScancode(GLFW_KEY_X); +set_key_mapping(scancode, swap_weapons); +@endcode + +The last reported state for every [named key](@ref keys) is also saved in +per-window state arrays that can be polled with @ref glfwGetKey. + +@code +int state = glfwGetKey(window, GLFW_KEY_E); +if (state == GLFW_PRESS) +{ + activate_airship(); +} +@endcode + +The returned state is one of `GLFW_PRESS` or `GLFW_RELEASE`. + +This function only returns cached key event state. It does not poll the +system for the current physical state of the key. + +@anchor GLFW_STICKY_KEYS +Whenever you poll state, you risk missing the state change you are looking for. +If a pressed key is released again before you poll its state, you will have +missed the key press. The recommended solution for this is to use a +key callback, but there is also the `GLFW_STICKY_KEYS` input mode. + +@code +glfwSetInputMode(window, GLFW_STICKY_KEYS, GLFW_TRUE); +@endcode + +When sticky keys mode is enabled, the pollable state of a key will remain +`GLFW_PRESS` until the state of that key is polled with @ref glfwGetKey. Once +it has been polled, if a key release event had been processed in the meantime, +the state will reset to `GLFW_RELEASE`, otherwise it will remain `GLFW_PRESS`. + +@anchor GLFW_LOCK_KEY_MODS +If you wish to know what the state of the Caps Lock and Num Lock keys was when +input events were generated, set the `GLFW_LOCK_KEY_MODS` input mode. + +@code +glfwSetInputMode(window, GLFW_LOCK_KEY_MODS, GLFW_TRUE); +@endcode + +When this input mode is enabled, any callback that receives +[modifier bits](@ref mods) will have the @ref GLFW_MOD_CAPS_LOCK bit set if Caps +Lock was on when the event occurred and the @ref GLFW_MOD_NUM_LOCK bit set if +Num Lock was on. + +The `GLFW_KEY_LAST` constant holds the highest value of any +[named key](@ref keys). + + +@subsection input_char Text input + +GLFW supports text input in the form of a stream of +[Unicode code points](https://en.wikipedia.org/wiki/Unicode), as produced by the +operating system text input system. Unlike key input, text input obeys keyboard +layouts and modifier keys and supports composing characters using +[dead keys](https://en.wikipedia.org/wiki/Dead_key). Once received, you can +encode the code points into UTF-8 or any other encoding you prefer. + +Because an `unsigned int` is 32 bits long on all platforms supported by GLFW, +you can treat the code point argument as native endian UTF-32. + +If you wish to offer regular text input, set a character callback. + +@code +glfwSetCharCallback(window, character_callback); +@endcode + +The callback function receives Unicode code points for key events that would +have led to regular text input and generally behaves as a standard text field on +that platform. + +@code +void character_callback(GLFWwindow* window, unsigned int codepoint) +{ +} +@endcode + + +@subsection input_key_name Key names + +If you wish to refer to keys by name, you can query the keyboard layout +dependent name of printable keys with @ref glfwGetKeyName. + +@code +const char* key_name = glfwGetKeyName(GLFW_KEY_W, 0); +show_tutorial_hint("Press %s to move forward", key_name); +@endcode + +This function can handle both [keys and scancodes](@ref input_key). If the +specified key is `GLFW_KEY_UNKNOWN` then the scancode is used, otherwise it is +ignored. This matches the behavior of the key callback, meaning the callback +arguments can always be passed unmodified to this function. + + +@section input_mouse Mouse input + +Mouse input comes in many forms, including mouse motion, button presses and +scrolling offsets. The cursor appearance can also be changed, either to +a custom image or a standard cursor shape from the system theme. + + +@subsection cursor_pos Cursor position + +If you wish to be notified when the cursor moves over the window, set a cursor +position callback. + +@code +glfwSetCursorPosCallback(window, cursor_position_callback); +@endcode + +The callback functions receives the cursor position, measured in screen +coordinates but relative to the top-left corner of the window content area. On +platforms that provide it, the full sub-pixel cursor position is passed on. + +@code +static void cursor_position_callback(GLFWwindow* window, double xpos, double ypos) +{ +} +@endcode + +The cursor position is also saved per-window and can be polled with @ref +glfwGetCursorPos. + +@code +double xpos, ypos; +glfwGetCursorPos(window, &xpos, &ypos); +@endcode + + +@subsection cursor_mode Cursor mode + +@anchor GLFW_CURSOR +The `GLFW_CURSOR` input mode provides several cursor modes for special forms of +mouse motion input. By default, the cursor mode is `GLFW_CURSOR_NORMAL`, +meaning the regular arrow cursor (or another cursor set with @ref glfwSetCursor) +is used and cursor motion is not limited. + +If you wish to implement mouse motion based camera controls or other input +schemes that require unlimited mouse movement, set the cursor mode to +`GLFW_CURSOR_DISABLED`. + +@code +glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); +@endcode + +This will hide the cursor and lock it to the specified window. GLFW will then +take care of all the details of cursor re-centering and offset calculation and +providing the application with a virtual cursor position. This virtual position +is provided normally via both the cursor position callback and through polling. + +@note You should not implement your own version of this functionality using +other features of GLFW. It is not supported and will not work as robustly as +`GLFW_CURSOR_DISABLED`. + +If you only wish the cursor to become hidden when it is over a window but still +want it to behave normally, set the cursor mode to `GLFW_CURSOR_HIDDEN`. + +@code +glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN); +@endcode + +This mode puts no limit on the motion of the cursor. + +If you wish the cursor to be visible but confined to the content area of the +window, set the cursor mode to `GLFW_CURSOR_CAPTURED`. + +@code +glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_CAPTURED); +@endcode + +The cursor will behave normally inside the content area but will not be able to +leave unless the window loses focus. + +To exit out of either of these special modes, restore the `GLFW_CURSOR_NORMAL` +cursor mode. + +@code +glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); +@endcode + +If the cursor was disabled, this will move it back to its last visible position. + + +@anchor GLFW_RAW_MOUSE_MOTION +@subsection raw_mouse_motion Raw mouse motion + +When the cursor is disabled, raw (unscaled and unaccelerated) mouse motion can +be enabled if available. + +Raw mouse motion is closer to the actual motion of the mouse across a surface. +It is not affected by the scaling and acceleration applied to the motion of the +desktop cursor. That processing is suitable for a cursor while raw motion is +better for controlling for example a 3D camera. Because of this, raw mouse +motion is only provided when the cursor is disabled. + +Call @ref glfwRawMouseMotionSupported to check if the current machine provides +raw motion and set the `GLFW_RAW_MOUSE_MOTION` input mode to enable it. It is +disabled by default. + +@code +if (glfwRawMouseMotionSupported()) + glfwSetInputMode(window, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE); +@endcode + +If supported, raw mouse motion can be enabled or disabled per-window and at any +time but it will only be provided when the cursor is disabled. + + +@subsection cursor_object Cursor objects + +GLFW supports creating both custom and system theme cursor images, encapsulated +as @ref GLFWcursor objects. They are created with @ref glfwCreateCursor or @ref +glfwCreateStandardCursor and destroyed with @ref glfwDestroyCursor, or @ref +glfwTerminate, if any remain. + + +@subsubsection cursor_custom Custom cursor creation + +A custom cursor is created with @ref glfwCreateCursor, which returns a handle to +the created cursor object. For example, this creates a 16x16 white square +cursor with the hot-spot in the upper-left corner: + +@code +unsigned char pixels[16 * 16 * 4]; +memset(pixels, 0xff, sizeof(pixels)); + +GLFWimage image; +image.width = 16; +image.height = 16; +image.pixels = pixels; + +GLFWcursor* cursor = glfwCreateCursor(&image, 0, 0); +@endcode + +If cursor creation fails, `NULL` will be returned, so it is necessary to check +the return value. + +The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits +per channel with the red channel first. The pixels are arranged canonically as +sequential rows, starting from the top-left corner. + + +@subsubsection cursor_standard Standard cursor creation + +A cursor with a [standard shape](@ref shapes) from the current system cursor +theme can be created with @ref glfwCreateStandardCursor. + +@code +GLFWcursor* url_cursor = glfwCreateStandardCursor(GLFW_POINTING_HAND_CURSOR); +@endcode + +These cursor objects behave in the exact same way as those created with @ref +glfwCreateCursor except that the system cursor theme provides the actual image. + +A few of these shapes are not available everywhere. If a shape is unavailable, +`NULL` is returned. See @ref glfwCreateStandardCursor for details. + + +@subsubsection cursor_destruction Cursor destruction + +When a cursor is no longer needed, destroy it with @ref glfwDestroyCursor. + +@code +glfwDestroyCursor(cursor); +@endcode + +Cursor destruction always succeeds. If the cursor is current for any window, +that window will revert to the default cursor. This does not affect the cursor +mode. All remaining cursors are destroyed when @ref glfwTerminate is called. + + +@subsubsection cursor_set Cursor setting + +A cursor can be set as current for a window with @ref glfwSetCursor. + +@code +glfwSetCursor(window, cursor); +@endcode + +Once set, the cursor image will be used as long as the system cursor is over the +content area of the window and the [cursor mode](@ref cursor_mode) is set +to `GLFW_CURSOR_NORMAL`. + +A single cursor may be set for any number of windows. + +To revert to the default cursor, set the cursor of that window to `NULL`. + +@code +glfwSetCursor(window, NULL); +@endcode + +When a cursor is destroyed, any window that has it set will revert to the +default cursor. This does not affect the cursor mode. + + +@subsection cursor_enter Cursor enter/leave events + +If you wish to be notified when the cursor enters or leaves the content area of +a window, set a cursor enter/leave callback. + +@code +glfwSetCursorEnterCallback(window, cursor_enter_callback); +@endcode + +The callback function receives the new classification of the cursor. + +@code +void cursor_enter_callback(GLFWwindow* window, int entered) +{ + if (entered) + { + // The cursor entered the content area of the window + } + else + { + // The cursor left the content area of the window + } +} +@endcode + +You can query whether the cursor is currently inside the content area of the +window with the [GLFW_HOVERED](@ref GLFW_HOVERED_attrib) window attribute. + +@code +if (glfwGetWindowAttrib(window, GLFW_HOVERED)) +{ + highlight_interface(); +} +@endcode + + +@subsection input_mouse_button Mouse button input + +If you wish to be notified when a mouse button is pressed or released, set +a mouse button callback. + +@code +glfwSetMouseButtonCallback(window, mouse_button_callback); +@endcode + +The callback function receives the [mouse button](@ref buttons), button action +and [modifier bits](@ref mods). + +@code +void mouse_button_callback(GLFWwindow* window, int button, int action, int mods) +{ + if (button == GLFW_MOUSE_BUTTON_RIGHT && action == GLFW_PRESS) + popup_menu(); +} +@endcode + +The action is one of `GLFW_PRESS` or `GLFW_RELEASE`. + +Mouse button states for [named buttons](@ref buttons) are also saved in +per-window state arrays that can be polled with @ref glfwGetMouseButton. + +@code +int state = glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT); +if (state == GLFW_PRESS) +{ + upgrade_cow(); +} +@endcode + +The returned state is one of `GLFW_PRESS` or `GLFW_RELEASE`. + +This function only returns cached mouse button event state. It does not poll +the system for the current state of the mouse button. + +@anchor GLFW_STICKY_MOUSE_BUTTONS +Whenever you poll state, you risk missing the state change you are looking for. +If a pressed mouse button is released again before you poll its state, you will have +missed the button press. The recommended solution for this is to use a +mouse button callback, but there is also the `GLFW_STICKY_MOUSE_BUTTONS` +input mode. + +@code +glfwSetInputMode(window, GLFW_STICKY_MOUSE_BUTTONS, GLFW_TRUE); +@endcode + +When sticky mouse buttons mode is enabled, the pollable state of a mouse button +will remain `GLFW_PRESS` until the state of that button is polled with @ref +glfwGetMouseButton. Once it has been polled, if a mouse button release event +had been processed in the meantime, the state will reset to `GLFW_RELEASE`, +otherwise it will remain `GLFW_PRESS`. + +The `GLFW_MOUSE_BUTTON_LAST` constant holds the highest value of any +[named button](@ref buttons). + + +@subsection scrolling Scroll input + +If you wish to be notified when the user scrolls, whether with a mouse wheel or +touchpad gesture, set a scroll callback. + +@code +glfwSetScrollCallback(window, scroll_callback); +@endcode + +The callback function receives two-dimensional scroll offsets. + +@code +void scroll_callback(GLFWwindow* window, double xoffset, double yoffset) +{ +} +@endcode + +A normal mouse wheel, being vertical, provides offsets along the Y-axis. + + +@section joystick Joystick input + +The joystick functions expose connected joysticks and controllers, with both +referred to as joysticks. It supports up to sixteen joysticks, ranging from +`GLFW_JOYSTICK_1`, `GLFW_JOYSTICK_2` up to and including `GLFW_JOYSTICK_16` or +`GLFW_JOYSTICK_LAST`. You can test whether a [joystick](@ref joysticks) is +present with @ref glfwJoystickPresent. + +@code +int present = glfwJoystickPresent(GLFW_JOYSTICK_1); +@endcode + +Each joystick has zero or more axes, zero or more buttons, zero or more hats, +a human-readable name, a user pointer and an SDL compatible GUID. + +Detected joysticks are added to the beginning of the array. Once a joystick is +detected, it keeps its assigned ID until it is disconnected or the library is +terminated, so as joysticks are connected and disconnected, there may appear +gaps in the IDs. + +Joystick axis, button and hat state is updated when polled and does not require +a window to be created or events to be processed. However, if you want joystick +connection and disconnection events reliably delivered to the +[joystick callback](@ref joystick_event) then you must +[process events](@ref events). + +To see all the properties of all connected joysticks in real-time, run the +`joysticks` test program. + + +@subsection joystick_axis Joystick axis states + +The positions of all axes of a joystick are returned by @ref +glfwGetJoystickAxes. See the reference documentation for the lifetime of the +returned array. + +@code +int count; +const float* axes = glfwGetJoystickAxes(GLFW_JOYSTICK_5, &count); +@endcode + +Each element in the returned array is a value between -1.0 and 1.0. + + +@subsection joystick_button Joystick button states + +The states of all buttons of a joystick are returned by @ref +glfwGetJoystickButtons. See the reference documentation for the lifetime of the +returned array. + +@code +int count; +const unsigned char* buttons = glfwGetJoystickButtons(GLFW_JOYSTICK_3, &count); +@endcode + +Each element in the returned array is either `GLFW_PRESS` or `GLFW_RELEASE`. + +For backward compatibility with earlier versions that did not have @ref +glfwGetJoystickHats, the button array by default also includes all hats. See +the reference documentation for @ref glfwGetJoystickButtons for details. + + +@subsection joystick_hat Joystick hat states + +The states of all hats are returned by @ref glfwGetJoystickHats. See the +reference documentation for the lifetime of the returned array. + +@code +int count; +const unsigned char* hats = glfwGetJoystickHats(GLFW_JOYSTICK_7, &count); +@endcode + +Each element in the returned array is one of the following: + +Name | Value +---- | ----- +`GLFW_HAT_CENTERED` | 0 +`GLFW_HAT_UP` | 1 +`GLFW_HAT_RIGHT` | 2 +`GLFW_HAT_DOWN` | 4 +`GLFW_HAT_LEFT` | 8 +`GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` +`GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` +`GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` +`GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` + +The diagonal directions are bitwise combinations of the primary (up, right, down +and left) directions and you can test for these individually by ANDing it with +the corresponding direction. + +@code +if (hats[2] & GLFW_HAT_RIGHT) +{ + // State of hat 2 could be right-up, right or right-down +} +@endcode + +For backward compatibility with earlier versions that did not have @ref +glfwGetJoystickHats, all hats are by default also included in the button array. +See the reference documentation for @ref glfwGetJoystickButtons for details. + + +@subsection joystick_name Joystick name + +The human-readable, UTF-8 encoded name of a joystick is returned by @ref +glfwGetJoystickName. See the reference documentation for the lifetime of the +returned string. + +@code +const char* name = glfwGetJoystickName(GLFW_JOYSTICK_4); +@endcode + +Joystick names are not guaranteed to be unique. Two joysticks of the same model +and make may have the same name. Only the [joystick ID](@ref joysticks) is +guaranteed to be unique, and only until that joystick is disconnected. + + +@subsection joystick_userptr Joystick user pointer + +Each joystick has a user pointer that can be set with @ref +glfwSetJoystickUserPointer and queried with @ref glfwGetJoystickUserPointer. +This can be used for any purpose you need and will not be modified by GLFW. The +value will be kept until the joystick is disconnected or until the library is +terminated. + +The initial value of the pointer is `NULL`. + + +@subsection joystick_event Joystick configuration changes + +If you wish to be notified when a joystick is connected or disconnected, set +a joystick callback. + +@code +glfwSetJoystickCallback(joystick_callback); +@endcode + +The callback function receives the ID of the joystick that has been connected +and disconnected and the event that occurred. + +@code +void joystick_callback(int jid, int event) +{ + if (event == GLFW_CONNECTED) + { + // The joystick was connected + } + else if (event == GLFW_DISCONNECTED) + { + // The joystick was disconnected + } +} +@endcode + +For joystick connection and disconnection events to be delivered on all +platforms, you need to call one of the [event processing](@ref events) +functions. Joystick disconnection may also be detected and the callback +called by joystick functions. The function will then return whatever it +returns for a disconnected joystick. + +Only @ref glfwGetJoystickName and @ref glfwGetJoystickUserPointer will return +useful values for a disconnected joystick and only before the monitor callback +returns. + + +@subsection gamepad Gamepad input + +The joystick functions provide unlabeled axes, buttons and hats, with no +indication of where they are located on the device. Their order may also vary +between platforms even with the same device. + +To solve this problem the SDL community crowdsourced the +[SDL_GameControllerDB](https://github.com/gabomdq/SDL_GameControllerDB) project, +a database of mappings from many different devices to an Xbox-like gamepad. + +GLFW supports this mapping format and contains a copy of the mappings +available at the time of release. See @ref gamepad_mapping for how to update +this at runtime. Mappings will be assigned to joysticks automatically any time +a joystick is connected or the mappings are updated. + +You can check whether a joystick is both present and has a gamepad mapping with +@ref glfwJoystickIsGamepad. + +@code +if (glfwJoystickIsGamepad(GLFW_JOYSTICK_2)) +{ + // Use as gamepad +} +@endcode + +If you are only interested in gamepad input you can use this function instead of +@ref glfwJoystickPresent. + +You can query the human-readable name provided by the gamepad mapping with @ref +glfwGetGamepadName. This may or may not be the same as the +[joystick name](@ref joystick_name). + +@code +const char* name = glfwGetGamepadName(GLFW_JOYSTICK_7); +@endcode + +To retrieve the gamepad state of a joystick, call @ref glfwGetGamepadState. + +@code +GLFWgamepadstate state; + +if (glfwGetGamepadState(GLFW_JOYSTICK_3, &state)) +{ + if (state.buttons[GLFW_GAMEPAD_BUTTON_A]) + { + input_jump(); + } + + input_speed(state.axes[GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER]); +} +@endcode + +The @ref GLFWgamepadstate struct has two arrays; one for button states and one +for axis states. The values for each button and axis are the same as for the +@ref glfwGetJoystickButtons and @ref glfwGetJoystickAxes functions, i.e. +`GLFW_PRESS` or `GLFW_RELEASE` for buttons and -1.0 to 1.0 inclusive for axes. + +The sizes of the arrays and the positions within each array are fixed. + +The [button indices](@ref gamepad_buttons) are `GLFW_GAMEPAD_BUTTON_A`, +`GLFW_GAMEPAD_BUTTON_B`, `GLFW_GAMEPAD_BUTTON_X`, `GLFW_GAMEPAD_BUTTON_Y`, +`GLFW_GAMEPAD_BUTTON_LEFT_BUMPER`, `GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER`, +`GLFW_GAMEPAD_BUTTON_BACK`, `GLFW_GAMEPAD_BUTTON_START`, +`GLFW_GAMEPAD_BUTTON_GUIDE`, `GLFW_GAMEPAD_BUTTON_LEFT_THUMB`, +`GLFW_GAMEPAD_BUTTON_RIGHT_THUMB`, `GLFW_GAMEPAD_BUTTON_DPAD_UP`, +`GLFW_GAMEPAD_BUTTON_DPAD_RIGHT`, `GLFW_GAMEPAD_BUTTON_DPAD_DOWN` and +`GLFW_GAMEPAD_BUTTON_DPAD_LEFT`. + +For those who prefer, there are also the `GLFW_GAMEPAD_BUTTON_CROSS`, +`GLFW_GAMEPAD_BUTTON_CIRCLE`, `GLFW_GAMEPAD_BUTTON_SQUARE` and +`GLFW_GAMEPAD_BUTTON_TRIANGLE` aliases for the A, B, X and Y button indices. + +The [axis indices](@ref gamepad_axes) are `GLFW_GAMEPAD_AXIS_LEFT_X`, +`GLFW_GAMEPAD_AXIS_LEFT_Y`, `GLFW_GAMEPAD_AXIS_RIGHT_X`, +`GLFW_GAMEPAD_AXIS_RIGHT_Y`, `GLFW_GAMEPAD_AXIS_LEFT_TRIGGER` and +`GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER`. + +The `GLFW_GAMEPAD_BUTTON_LAST` and `GLFW_GAMEPAD_AXIS_LAST` constants equal +the largest available index for each array. + + +@subsection gamepad_mapping Gamepad mappings + +GLFW contains a copy of the mappings available in +[SDL_GameControllerDB](https://github.com/gabomdq/SDL_GameControllerDB) at the +time of release. Newer ones can be added at runtime with @ref +glfwUpdateGamepadMappings. + +@code +const char* mappings = load_file_contents("game/data/gamecontrollerdb.txt"); + +glfwUpdateGamepadMappings(mappings); +@endcode + +This function supports everything from single lines up to and including the +unmodified contents of the whole `gamecontrollerdb.txt` file. + +If you are compiling GLFW from source with CMake you can update the built-in mappings by +building the _update_mappings_ target. This runs the `GenerateMappings.cmake` CMake +script, which downloads `gamecontrollerdb.txt` and regenerates the `mappings.h` header +file. + +Below is a description of the mapping format. Please keep in mind that __this +description is not authoritative__. The format is defined by the SDL and +SDL_GameControllerDB projects and their documentation and code takes precedence. + +Each mapping is a single line of comma-separated values describing the GUID, +name and layout of the gamepad. Lines that do not begin with a hexadecimal +digit are ignored. + +The first value is always the gamepad GUID, a 32 character long hexadecimal +string that typically identifies its make, model, revision and the type of +connection to the computer. When this information is not available, the GUID is +generated using the gamepad name. GLFW uses the SDL 2.0.5+ GUID format but can +convert from the older formats. + +The second value is always the human-readable name of the gamepad. + +All subsequent values are in the form `:` and describe the layout +of the mapping. These fields may not all be present and may occur in any order. + +The button fields are `a`, `b`, `x`, `y`, `back`, `start`, `guide`, `dpup`, +`dpright`, `dpdown`, `dpleft`, `leftshoulder`, `rightshoulder`, `leftstick` and +`rightstick`. + +The axis fields are `leftx`, `lefty`, `rightx`, `righty`, `lefttrigger` and +`righttrigger`. + +The value of an axis or button field can be a joystick button, a joystick axis, +a hat bitmask or empty. Joystick buttons are specified as `bN`, for example +`b2` for the third button. Joystick axes are specified as `aN`, for example +`a7` for the eighth button. Joystick hat bit masks are specified as `hN.N`, for +example `h0.8` for left on the first hat. More than one bit may be set in the +mask. + +Before an axis there may be a `+` or `-` range modifier, for example `+a3` for +the positive half of the fourth axis. This restricts input to only the positive +or negative halves of the joystick axis. After an axis or half-axis there may +be the `~` inversion modifier, for example `a2~` or `-a7~`. This negates the +values of the gamepad axis. + +The hat bit mask match the [hat states](@ref hat_state) in the joystick +functions. + +There is also the special `platform` field that specifies which platform the +mapping is valid for. Possible values are `Windows`, `Mac OS X` and `Linux`. + +Below is an example of what a gamepad mapping might look like. It is the +one built into GLFW for Xbox controllers accessed via the XInput API on Windows. +This example has been broken into several lines to fit on the page, but real +gamepad mappings must be a single line. + +@code{.unparsed} +78696e70757401000000000000000000,XInput Gamepad (GLFW),platform:Windows,a:b0, +b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8, +rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4, +righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8, +@endcode + +@note GLFW does not yet support the output range and modifiers `+` and `-` that +were recently added to SDL. The input modifiers `+`, `-` and `~` are supported +and described above. + + +@section time Time input + +GLFW provides high-resolution time input, in seconds, with @ref glfwGetTime. + +@code +double seconds = glfwGetTime(); +@endcode + +It returns the number of seconds since the library was initialized with @ref +glfwInit. The platform-specific time sources used typically have micro- or +nanosecond resolution. + +You can modify the base time with @ref glfwSetTime. + +@code +glfwSetTime(4.0); +@endcode + +This sets the time to the specified time, in seconds, and it continues to count +from there. + +You can also access the raw timer used to implement the functions above, +with @ref glfwGetTimerValue. + +@code +uint64_t value = glfwGetTimerValue(); +@endcode + +This value is in 1 / frequency seconds. The frequency of the raw +timer varies depending on the operating system and hardware. You can query the +frequency, in Hz, with @ref glfwGetTimerFrequency. + +@code +uint64_t frequency = glfwGetTimerFrequency(); +@endcode + + +@section clipboard Clipboard input and output + +If the system clipboard contains a UTF-8 encoded string or if it can be +converted to one, you can retrieve it with @ref glfwGetClipboardString. See the +reference documentation for the lifetime of the returned string. + +@code +const char* text = glfwGetClipboardString(NULL); +if (text) +{ + insert_text(text); +} +@endcode + +If the clipboard is empty or if its contents could not be converted, `NULL` is +returned. + +The contents of the system clipboard can be set to a UTF-8 encoded string with +@ref glfwSetClipboardString. + +@code +glfwSetClipboardString(NULL, "A string with words in it"); +@endcode + + +@section path_drop Path drop input + +If you wish to receive the paths of files and/or directories dropped on +a window, set a file drop callback. + +@code +glfwSetDropCallback(window, drop_callback); +@endcode + +The callback function receives an array of paths encoded as UTF-8. + +@code +void drop_callback(GLFWwindow* window, int count, const char** paths) +{ + int i; + for (i = 0; i < count; i++) + handle_dropped_file(paths[i]); +} +@endcode + +The path array and its strings are only valid until the file drop callback +returns, as they may have been generated specifically for that event. You need +to make a deep copy of the array if you want to keep the paths. + +*/ diff --git a/lib/glfw/docs/internal.dox b/lib/glfw/docs/internal.dox new file mode 100644 index 0000000..6922756 --- /dev/null +++ b/lib/glfw/docs/internal.dox @@ -0,0 +1,123 @@ +/*! + +@page internals_guide Internal structure + +@tableofcontents + +There are several interfaces inside GLFW. Each interface has its own area of +responsibility and its own naming conventions. + + +@section internals_public Public interface + +The most well-known is the public interface, described in the glfw3.h header +file. This is implemented in source files shared by all platforms and these +files contain no platform-specific code. This code usually ends up calling the +platform and internal interfaces to do the actual work. + +The public interface uses the OpenGL naming conventions except with GLFW and +glfw instead of GL and gl. For struct members, where OpenGL sets no precedent, +it use headless camel case. + +Examples: `glfwCreateWindow`, `GLFWwindow`, `GLFW_RED_BITS` + + +@section internals_native Native interface + +The [native interface](@ref native) is a small set of publicly available +but platform-specific functions, described in the glfw3native.h header file and +used to gain access to the underlying window, context and (on some platforms) +display handles used by the platform interface. + +The function names of the native interface are similar to those of the public +interface, but embeds the name of the interface that the returned handle is +from. + +Examples: `glfwGetX11Window`, `glfwGetWGLContext` + + +@section internals_internal Internal interface + +The internal interface consists of utility functions used by all other +interfaces. It is shared code implemented in the same shared source files as +the public and event interfaces. The internal interface is described in the +internal.h header file. + +The internal interface is in charge of GLFW's global data, which it stores in +a `_GLFWlibrary` struct named `_glfw`. + +The internal interface uses the same style as the public interface, except all +global names have a leading underscore. + +Examples: `_glfwIsValidContextConfig`, `_GLFWwindow`, `_glfw.monitorCount` + + +@section internals_platform Platform interface + +The platform interface implements all platform-specific operations as a service +to the public interface. This includes event processing. The platform +interface is never directly called by application code and never directly calls +application-provided callbacks. It is also prohibited from modifying the +platform-independent part of the internal structs. Instead, it calls the event +interface when events interesting to GLFW are received. + +The platform interface mostly mirrors those parts of the public interface that needs to +perform platform-specific operations on some or all platforms. + +The window system bits of the platform API is called through the `_GLFWplatform` struct of +function pointers, to allow runtime selection of platform. This includes the window and +context creation, input and event processing, monitor and Vulkan surface creation parts of +GLFW. This is located in the global `_glfw` struct. + +Examples: `_glfw.platform.createWindow` + +The timer, threading and module loading bits of the platform API are plain functions with +a `_glfwPlatform` prefix, as these things are independent of what window system is being +used. + +Examples: `_glfwPlatformGetTimerValue` + +The platform interface also defines structs that contain platform-specific +global and per-object state. Their names mirror those of the internal +interface, except that an interface-specific suffix is added. + +Examples: `_GLFWwindowX11`, `_GLFWcontextWGL` + +These structs are incorporated as members into the internal interface structs +using special macros that name them after the specific interface used. This +prevents shared code from accidentally using these members. + +Examples: `window->win32.handle`, `_glfw.x11.display` + + +@section internals_event Event interface + +The event interface is implemented in the same shared source files as the public +interface and is responsible for delivering the events it receives to the +application, either via callbacks, via window state changes or both. + +The function names of the event interface use a `_glfwInput` prefix and the +ObjectEvent pattern. + +Examples: `_glfwInputWindowFocus`, `_glfwInputCursorPos` + + +@section internals_static Static functions + +Static functions may be used by any interface and have no prefixes or suffixes. +These use headless camel case. + +Examples: `isValidElementForJoystick` + + +@section internals_config Configuration macros + +GLFW uses a number of configuration macros to select at compile time which +interfaces and code paths to use. They are defined in the GLFW CMake target. + +Configuration macros the same style as tokens in the public interface, except +with a leading underscore. + +Examples: `_GLFW_WIN32`, `_GLFW_BUILD_DLL` + +*/ diff --git a/lib/glfw/docs/intro.dox b/lib/glfw/docs/intro.dox new file mode 100644 index 0000000..7934832 --- /dev/null +++ b/lib/glfw/docs/intro.dox @@ -0,0 +1,619 @@ +/*! + +@page intro_guide Introduction to the API + +@tableofcontents + +This guide introduces the basic concepts of GLFW and describes initialization, +error handling and API guarantees and limitations. For a broad but shallow +tutorial, see @ref quick_guide instead. For details on a specific function in +this category, see the @ref init. + +There are also guides for the other areas of GLFW. + + - @ref window_guide + - @ref context_guide + - @ref vulkan_guide + - @ref monitor_guide + - @ref input_guide + + +@section intro_init Initialization and termination + +Before most GLFW functions may be called, the library must be initialized. +This initialization checks what features are available on the machine, +enumerates monitors, initializes the timer and performs any required +platform-specific initialization. + +Only the following functions may be called before the library has been +successfully initialized, and only from the main thread. + + - @ref glfwGetVersion + - @ref glfwGetVersionString + - @ref glfwPlatformSupported + - @ref glfwGetError + - @ref glfwSetErrorCallback + - @ref glfwInitHint + - @ref glfwInitAllocator + - @ref glfwInitVulkanLoader + - @ref glfwInit + - @ref glfwTerminate + +Calling any other function before successful initialization will cause a @ref +GLFW_NOT_INITIALIZED error. + + +@subsection intro_init_init Initializing GLFW + +The library is initialized with @ref glfwInit, which returns `GLFW_FALSE` if an +error occurred. + +@code +if (!glfwInit()) +{ + // Handle initialization failure +} +@endcode + +If any part of initialization fails, any parts that succeeded are terminated as +if @ref glfwTerminate had been called. The library only needs to be initialized +once and additional calls to an already initialized library will return +`GLFW_TRUE` immediately. + +Once the library has been successfully initialized, it should be terminated +before the application exits. Modern systems are very good at freeing resources +allocated by programs that exit, but GLFW sometimes has to change global system +settings and these might not be restored without termination. + +@macos When the library is initialized the main menu and dock icon are created. +These are not desirable for a command-line only program. The creation of the +main menu and dock icon can be disabled with the @ref GLFW_COCOA_MENUBAR init +hint. + + +@subsection init_hints Initialization hints + +Initialization hints are set before @ref glfwInit and affect how the library +behaves until termination. Hints are set with @ref glfwInitHint. + +@code +glfwInitHint(GLFW_JOYSTICK_HAT_BUTTONS, GLFW_FALSE); +@endcode + +The values you set hints to are never reset by GLFW, but they only take effect +during initialization. Once GLFW has been initialized, any values you set will +be ignored until the library is terminated and initialized again. + +Some hints are platform specific. These may be set on any platform but they +will only affect their specific platform. Other platforms will ignore them. +Setting these hints requires no platform specific headers or functions. + + +@subsubsection init_hints_shared Shared init hints + +@anchor GLFW_PLATFORM +__GLFW_PLATFORM__ specifies the platform to use for windowing and input. +Possible values are `GLFW_ANY_PLATFORM`, `GLFW_PLATFORM_WIN32`, +`GLFW_PLATFORM_COCOA`, `GLFW_PLATFORM_X11`, `GLFW_PLATFORM_WAYLAND` and +`GLFW_PLATFORM_NULL`. The default value is `GLFW_ANY_PLATFORM`, which will +choose any platform the library includes support for except for the Null +backend. + + +@anchor GLFW_JOYSTICK_HAT_BUTTONS +__GLFW_JOYSTICK_HAT_BUTTONS__ specifies whether to also expose joystick hats as +buttons, for compatibility with earlier versions of GLFW that did not have @ref +glfwGetJoystickHats. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. + +@anchor GLFW_ANGLE_PLATFORM_TYPE_hint +__GLFW_ANGLE_PLATFORM_TYPE__ specifies the platform type (rendering backend) to +request when using OpenGL ES and EGL via +[ANGLE](https://chromium.googlesource.com/angle/angle/). If the requested +platform type is unavailable, ANGLE will use its default. Possible values are +one of `GLFW_ANGLE_PLATFORM_TYPE_NONE`, `GLFW_ANGLE_PLATFORM_TYPE_OPENGL`, +`GLFW_ANGLE_PLATFORM_TYPE_OPENGLES`, `GLFW_ANGLE_PLATFORM_TYPE_D3D9`, +`GLFW_ANGLE_PLATFORM_TYPE_D3D11`, `GLFW_ANGLE_PLATFORM_TYPE_VULKAN` and +`GLFW_ANGLE_PLATFORM_TYPE_METAL`. + +The ANGLE platform type is specified via the `EGL_ANGLE_platform_angle` +extension. This extension is not used if this hint is +`GLFW_ANGLE_PLATFORM_TYPE_NONE`, which is the default value. + + +@subsubsection init_hints_osx macOS specific init hints + +@anchor GLFW_COCOA_CHDIR_RESOURCES_hint +__GLFW_COCOA_CHDIR_RESOURCES__ specifies whether to set the current directory to +the application to the `Contents/Resources` subdirectory of the application's +bundle, if present. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This is +ignored on other platforms. + +@anchor GLFW_COCOA_MENUBAR_hint +__GLFW_COCOA_MENUBAR__ specifies whether to create the menu bar and dock icon +when GLFW is initialized. This applies whether the menu bar is created from +a nib or manually by GLFW. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. +This is ignored on other platforms. + + +@subsubsection init_hints_x11 X11 specific init hints + +@anchor GLFW_X11_XCB_VULKAN_SURFACE_hint +__GLFW_X11_XCB_VULKAN_SURFACE__ specifies whether to prefer the +`VK_KHR_xcb_surface` extension for creating Vulkan surfaces, or whether to use +the `VK_KHR_xlib_surface` extension. Possible values are `GLFW_TRUE` and +`GLFW_FALSE`. This is ignored on other platforms. + + +@subsubsection init_hints_values Supported and default values + +Initialization hint | Default value | Supported values +-------------------------------- | ------------------------------- | ---------------- +@ref GLFW_PLATFORM | `GLFW_ANY_PLATFORM` | `GLFW_ANY_PLATFORM`, `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, `GLFW_PLATFORM_X11`, `GLFW_PLATFORM_WAYLAND` or `GLFW_PLATFORM_NULL` +@ref GLFW_JOYSTICK_HAT_BUTTONS | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +@ref GLFW_ANGLE_PLATFORM_TYPE | `GLFW_ANGLE_PLATFORM_TYPE_NONE` | `GLFW_ANGLE_PLATFORM_TYPE_NONE`, `GLFW_ANGLE_PLATFORM_TYPE_OPENGL`, `GLFW_ANGLE_PLATFORM_TYPE_OPENGLES`, `GLFW_ANGLE_PLATFORM_TYPE_D3D9`, `GLFW_ANGLE_PLATFORM_TYPE_D3D11`, `GLFW_ANGLE_PLATFORM_TYPE_VULKAN` or `GLFW_ANGLE_PLATFORM_TYPE_METAL` +@ref GLFW_COCOA_CHDIR_RESOURCES | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +@ref GLFW_COCOA_MENUBAR | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +@ref GLFW_X11_XCB_VULKAN_SURFACE | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` + + +@subsection platform Runtime platform selection + +GLFW can be compiled for more than one platform (window system) at once. This lets +a single library binary support both X11 and Wayland on Linux and other Unix-like systems. + +You can control platform selection via the @ref GLFW_PLATFORM initialization hint. By +default, this is set to @ref GLFW_ANY_PLATFORM, which will look for supported window +systems in order of priority and select the first one it finds. It can also be set to any +specific platform to have GLFW only look for that one. + +@code +glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_X11); +@endcode + +This mechanism also provides the Null platform, which is always supported but needs to be +explicitly requested. This platform is effectively a stub, emulating a window system on +a single 1080p monitor, but will not interact with any actual window system. + +@code +glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_NULL); +@endcode + +You can test whether a library binary was compiled with support for a specific platform +with @ref glfwPlatformSupported. + +@code +if (glfwPlatformSupported(GLFW_PLATFORM_WAYLAND)) + glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_WAYLAND); +@endcode + +Once GLFW has been initialized, you can query which platform was selected with @ref +glfwGetPlatform. + +@code +int platform = glfwGetPlatform(); +@endcode + +If you are using any [native access functions](@ref native), especially on Linux and other +Unix-like systems, then you may need to check that you are calling the ones matching the +selected platform. + + +@subsection init_allocator Custom heap memory allocator + +The heap memory allocator can be customized before initialization with @ref +glfwInitAllocator. + +@code +GLFWallocator allocator; +allocator.allocate = my_malloc; +allocator.reallocate = my_realloc; +allocator.deallocate = my_free; +allocator.user = NULL; + +glfwInitAllocator(&allocator); +@endcode + +The allocator will be picked up at the beginning of initialization and will be +used until GLFW has been fully terminated. Any allocator set after +initialization will be picked up only at the next initialization. + +The allocator will only be used for allocations that would have been made with +the C standard library. Memory allocations that must be made with platform +specific APIs will still use those. + +The allocation function must have a signature matching @ref GLFWallocatefun. It receives +the desired size, in bytes, and the user pointer passed to @ref glfwInitAllocator and +returns the address to the allocated memory block. + +@code +void* my_malloc(size_t size, void* user) +{ + ... +} +@endcode + +The reallocation function must have a function signature matching @ref GLFWreallocatefun. +It receives the memory block to be reallocated, the new desired size, in bytes, and the user +pointer passed to @ref glfwInitAllocator and returns the address to the resized memory +block. + +@code +void* my_realloc(void* block, size_t size, void* user) +{ + ... +} +@endcode + +The deallocation function must have a function signature matching @ref GLFWdeallocatefun. +It receives the memory block to be deallocated and the user pointer passed to @ref +glfwInitAllocator. + +@code +void my_free(void* block, void* user) +{ + ... +} +@endcode + + +@subsection intro_init_terminate Terminating GLFW + +Before your application exits, you should terminate the GLFW library if it has +been initialized. This is done with @ref glfwTerminate. + +@code +glfwTerminate(); +@endcode + +This will destroy any remaining window, monitor and cursor objects, restore any +modified gamma ramps, re-enable the screensaver if it had been disabled and free +any other resources allocated by GLFW. + +Once the library is terminated, it is as if it had never been initialized, therefore +you will need to initialize it again before being able to use GLFW. If the +library was not initialized or had already been terminated, it returns +immediately. + + +@section error_handling Error handling + +Some GLFW functions have return values that indicate an error, but this is often +not very helpful when trying to figure out what happened or why it occurred. +Other functions have no return value reserved for errors, so error notification +needs a separate channel. Finally, far from all GLFW functions have return +values. + +The last [error code](@ref errors) for the calling thread can be queried at any +time with @ref glfwGetError. + +@code +int code = glfwGetError(NULL); + +if (code != GLFW_NO_ERROR) + handle_error(code); +@endcode + +If no error has occurred since the last call, @ref GLFW_NO_ERROR (zero) is +returned. The error is cleared before the function returns. + +The error code indicates the general category of the error. Some error codes, +such as @ref GLFW_NOT_INITIALIZED has only a single meaning, whereas others like +@ref GLFW_PLATFORM_ERROR are used for many different errors. + +GLFW often has more information about an error than its general category. You +can retrieve a UTF-8 encoded human-readable description along with the error +code. If no error has occurred since the last call, the description is set to +`NULL`. + +@code +const char* description; +int code = glfwGetError(&description); + +if (description) + display_error_message(code, description); +@endcode + +The retrieved description string is only valid until the next error occurs. +This means you must make a copy of it if you want to keep it. + +You can also set an error callback, which will be called each time an error +occurs. It is set with @ref glfwSetErrorCallback. + +@code +glfwSetErrorCallback(error_callback); +@endcode + +The error callback receives the same error code and human-readable description +returned by @ref glfwGetError. + +@code +void error_callback(int code, const char* description) +{ + display_error_message(code, description); +} +@endcode + +The error callback is called after the error is stored, so calling @ref +glfwGetError from within the error callback returns the same values as the +callback argument. + +The description string passed to the callback is only valid until the error +callback returns. This means you must make a copy of it if you want to keep it. + +__Reported errors are never fatal.__ As long as GLFW was successfully +initialized, it will remain initialized and in a safe state until terminated +regardless of how many errors occur. If an error occurs during initialization +that causes @ref glfwInit to fail, any part of the library that was initialized +will be safely terminated. + +Do not rely on a currently invalid call to generate a specific error, as in the +future that same call may generate a different error or become valid. + + +@section coordinate_systems Coordinate systems + +GLFW has two primary coordinate systems: the _virtual screen_ and the window +_content area_ or _content area_. Both use the same unit: _virtual screen +coordinates_, or just _screen coordinates_, which don't necessarily correspond +to pixels. + + + +Both the virtual screen and the content area coordinate systems have the X-axis +pointing to the right and the Y-axis pointing down. + +Window and monitor positions are specified as the position of the upper-left +corners of their content areas relative to the virtual screen, while cursor +positions are specified relative to a window's content area. + +Because the origin of the window's content area coordinate system is also the +point from which the window position is specified, you can translate content +area coordinates to the virtual screen by adding the window position. The +window frame, when present, extends out from the content area but does not +affect the window position. + +Almost all positions and sizes in GLFW are measured in screen coordinates +relative to one of the two origins above. This includes cursor positions, +window positions and sizes, window frame sizes, monitor positions and video mode +resolutions. + +Two exceptions are the [monitor physical size](@ref monitor_size), which is +measured in millimetres, and [framebuffer size](@ref window_fbsize), which is +measured in pixels. + +Pixels and screen coordinates may map 1:1 on your machine, but they won't on +every other machine, for example on a Mac with a Retina display. The ratio +between screen coordinates and pixels may also change at run-time depending on +which monitor the window is currently considered to be on. + + +@section guarantees_limitations Guarantees and limitations + +This section describes the conditions under which GLFW can be expected to +function, barring bugs in the operating system or drivers. Use of GLFW outside +these limits may work on some platforms, or on some machines, or some of the +time, or on some versions of GLFW, but it may break at any time and this will +not be considered a bug. + + +@subsection lifetime Pointer lifetimes + +GLFW will never free any pointer you provide to it, and you must never free any +pointer it provides to you. + +Many GLFW functions return pointers to dynamically allocated structures, strings +or arrays, and some callbacks are provided with strings or arrays. These are +always managed by GLFW and should never be freed by the application. The +lifetime of these pointers is documented for each GLFW function and callback. +If you need to keep this data, you must copy it before its lifetime expires. + +Many GLFW functions accept pointers to structures or strings allocated by the +application. These are never freed by GLFW and are always the responsibility of +the application. If GLFW needs to keep the data in these structures or strings, +it is copied before the function returns. + +Pointer lifetimes are guaranteed not to be shortened in future minor or patch +releases. + + +@subsection reentrancy Reentrancy + +GLFW event processing and object destruction are not reentrant. This means that +the following functions must not be called from any callback function: + + - @ref glfwDestroyWindow + - @ref glfwDestroyCursor + - @ref glfwPollEvents + - @ref glfwWaitEvents + - @ref glfwWaitEventsTimeout + - @ref glfwTerminate + +These functions may be made reentrant in future minor or patch releases, but +functions not on this list will not be made non-reentrant. + + +@subsection thread_safety Thread safety + +Most GLFW functions must only be called from the main thread (the thread that +calls main), but some may be called from any thread once the library has been +initialized. Before initialization the whole library is thread-unsafe. + +The reference documentation for every GLFW function states whether it is limited +to the main thread. + +Initialization, termination, event processing and the creation and +destruction of windows, cursors and OpenGL and OpenGL ES contexts are all +restricted to the main thread due to limitations of one or several platforms. + +Because event processing must be performed on the main thread, all callbacks +except for the error callback will only be called on that thread. The error +callback may be called on any thread, as any GLFW function may generate errors. + +The error code and description may be queried from any thread. + + - @ref glfwGetError + +Empty events may be posted from any thread. + + - @ref glfwPostEmptyEvent + +The window user pointer and close flag may be read and written from any thread, +but this is not synchronized by GLFW. + + - @ref glfwGetWindowUserPointer + - @ref glfwSetWindowUserPointer + - @ref glfwWindowShouldClose + - @ref glfwSetWindowShouldClose + +These functions for working with OpenGL and OpenGL ES contexts may be called +from any thread, but the window object is not synchronized by GLFW. + + - @ref glfwMakeContextCurrent + - @ref glfwGetCurrentContext + - @ref glfwSwapBuffers + - @ref glfwSwapInterval + - @ref glfwExtensionSupported + - @ref glfwGetProcAddress + +The raw timer functions may be called from any thread. + + - @ref glfwGetTimerFrequency + - @ref glfwGetTimerValue + +The regular timer may be used from any thread, but reading and writing the timer +offset is not synchronized by GLFW. + + - @ref glfwGetTime + - @ref glfwSetTime + +Library version information may be queried from any thread. + + - @ref glfwGetVersion + - @ref glfwGetVersionString + +Platform information may be queried from any thread. + + - @ref glfwPlatformSupported + - @ref glfwGetPlatform + +All Vulkan related functions may be called from any thread. + + - @ref glfwVulkanSupported + - @ref glfwGetRequiredInstanceExtensions + - @ref glfwGetInstanceProcAddress + - @ref glfwGetPhysicalDevicePresentationSupport + - @ref glfwCreateWindowSurface + +GLFW uses synchronization objects internally only to manage the per-thread +context and error states. Additional synchronization is left to the +application. + +Functions that may currently be called from any thread will always remain so, +but functions that are currently limited to the main thread may be updated to +allow calls from any thread in future releases. + + +@subsection compatibility Version compatibility + +GLFW uses [Semantic Versioning](https://semver.org/). This guarantees source +and binary backward compatibility with earlier minor versions of the API. This +means that you can drop in a newer version of the library and existing programs +will continue to compile and existing binaries will continue to run. + +Once a function or constant has been added, the signature of that function or +value of that constant will remain unchanged until the next major version of +GLFW. No compatibility of any kind is guaranteed between major versions. + +Undocumented behavior, i.e. behavior that is not described in the documentation, +may change at any time until it is documented. + +If the reference documentation and the implementation differ, the reference +documentation will almost always take precedence and the implementation will be +fixed in the next release. The reference documentation will also take +precedence over anything stated in a guide. + + +@subsection event_order Event order + +The order of arrival of related events is not guaranteed to be consistent +across platforms. The exception is synthetic key and mouse button release +events, which are always delivered after the window defocus event. + + +@section intro_version Version management + +GLFW provides mechanisms for identifying what version of GLFW your application +was compiled against as well as what version it is currently running against. +If you are loading GLFW dynamically (not just linking dynamically), you can use +this to verify that the library binary is compatible with your application. + + +@subsection intro_version_compile Compile-time version + +The compile-time version of GLFW is provided by the GLFW header with the +`GLFW_VERSION_MAJOR`, `GLFW_VERSION_MINOR` and `GLFW_VERSION_REVISION` macros. + +@code +printf("Compiled against GLFW %i.%i.%i\n", + GLFW_VERSION_MAJOR, + GLFW_VERSION_MINOR, + GLFW_VERSION_REVISION); +@endcode + + +@subsection intro_version_runtime Run-time version + +The run-time version can be retrieved with @ref glfwGetVersion, a function that +may be called regardless of whether GLFW is initialized. + +@code +int major, minor, revision; +glfwGetVersion(&major, &minor, &revision); + +printf("Running against GLFW %i.%i.%i\n", major, minor, revision); +@endcode + + +@subsection intro_version_string Version string + +GLFW 3 also provides a compile-time generated version string that describes the +version, platform, compiler and any platform-specific compile-time options. +This is primarily intended for submitting bug reports, to allow developers to +see which code paths are enabled in a binary. + +The version string is returned by @ref glfwGetVersionString, a function that may +be called regardless of whether GLFW is initialized. + +__Do not use the version string__ to parse the GLFW library version. The @ref +glfwGetVersion function already provides the version of the running library +binary. + +__Do not use the version string__ to parse what platforms are supported. The @ref +glfwPlatformSupported function lets you query platform support. + +__GLFW 3.4:__ The format of this string was changed to support the addition of +[runtime platform selection](@ref platform). + +The format of the string is as follows: + - The version of GLFW + - For each supported platform: + - The name of the window system API + - The name of the window system specific context creation API, if applicable + - The names of the always supported context creation APIs EGL and OSMesa + - Any additional compile-time options, APIs and (on Windows) what compiler was used + +For example, compiling GLFW 3.4 with MinGW as a DLL for Windows, may result in a version string +like this: + +@code +3.4.0 Win32 WGL Null EGL OSMesa MinGW DLL +@endcode + +Compiling GLFW as a static library for Linux, with both Wayland and X11 enabled, may +result in a version string like this: + +@code +3.4.0 Wayland X11 GLX Null EGL OSMesa monotonic +@endcode + +*/ diff --git a/lib/glfw/docs/main.dox b/lib/glfw/docs/main.dox new file mode 100644 index 0000000..995c2f5 --- /dev/null +++ b/lib/glfw/docs/main.dox @@ -0,0 +1,46 @@ +/*! + +@mainpage notitle + +@section main_intro Introduction + +GLFW is a free, Open Source, multi-platform library for OpenGL, OpenGL ES and +Vulkan application development. It provides a simple, platform-independent API +for creating windows, contexts and surfaces, reading input, handling events, etc. + +@ref news_34 list new features, caveats and deprecations. + +@ref quick_guide is a guide for users new to GLFW. It takes you through how to +write a small but complete program. + +There are guides for each section of the API: + + - @ref intro_guide – initialization, error handling and high-level design + - @ref window_guide – creating and working with windows and framebuffers + - @ref context_guide – working with OpenGL and OpenGL ES contexts + - @ref vulkan_guide - working with Vulkan objects and extensions + - @ref monitor_guide – enumerating and working with monitors and video modes + - @ref input_guide – receiving events, polling and processing input + +Once you have written a program, see @ref compile_guide and @ref build_guide. + +The [reference documentation](modules.html) provides more detailed information +about specific functions. + +@ref moving_guide explains what has changed and how to update existing code to +use the new API. + +There is a section on @ref guarantees_limitations for pointer lifetimes, +reentrancy, thread safety, event order and backward and forward compatibility. + +The [FAQ](https://www.glfw.org/faq.html) answers many common questions about the +design, implementation and use of GLFW. + +Finally, @ref compat_guide explains what APIs, standards and protocols GLFW uses +and what happens when they are not present on a given machine. + +This documentation was generated with Doxygen. The sources for it are available +in both the [source distribution](https://www.glfw.org/download.html) and +[GitHub repository](https://github.com/glfw/glfw). + +*/ diff --git a/lib/glfw/docs/monitor.dox b/lib/glfw/docs/monitor.dox new file mode 100644 index 0000000..b4099db --- /dev/null +++ b/lib/glfw/docs/monitor.dox @@ -0,0 +1,268 @@ +/*! + +@page monitor_guide Monitor guide + +@tableofcontents + +This guide introduces the monitor related functions of GLFW. For details on +a specific function in this category, see the @ref monitor. There are also +guides for the other areas of GLFW. + + - @ref intro_guide + - @ref window_guide + - @ref context_guide + - @ref vulkan_guide + - @ref input_guide + + +@section monitor_object Monitor objects + +A monitor object represents a currently connected monitor and is represented as +a pointer to the [opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type +@ref GLFWmonitor. Monitor objects cannot be created or destroyed by the +application and retain their addresses until the monitors they represent are +disconnected or until the library is [terminated](@ref intro_init_terminate). + +Each monitor has a current video mode, a list of supported video modes, +a virtual position, a human-readable name, an estimated physical size and +a gamma ramp. One of the monitors is the primary monitor. + +The virtual position of a monitor is in +[screen coordinates](@ref coordinate_systems) and, together with the current +video mode, describes the viewports that the connected monitors provide into the +virtual desktop that spans them. + +To see how GLFW views your monitor setup and its available video modes, run the +`monitors` test program. + + +@subsection monitor_monitors Retrieving monitors + +The primary monitor is returned by @ref glfwGetPrimaryMonitor. It is the user's +preferred monitor and is usually the one with global UI elements like task bar +or menu bar. + +@code +GLFWmonitor* primary = glfwGetPrimaryMonitor(); +@endcode + +You can retrieve all currently connected monitors with @ref glfwGetMonitors. +See the reference documentation for the lifetime of the returned array. + +@code +int count; +GLFWmonitor** monitors = glfwGetMonitors(&count); +@endcode + +The primary monitor is always the first monitor in the returned array, but other +monitors may be moved to a different index when a monitor is connected or +disconnected. + + +@subsection monitor_event Monitor configuration changes + +If you wish to be notified when a monitor is connected or disconnected, set +a monitor callback. + +@code +glfwSetMonitorCallback(monitor_callback); +@endcode + +The callback function receives the handle for the monitor that has been +connected or disconnected and the event that occurred. + +@code +void monitor_callback(GLFWmonitor* monitor, int event) +{ + if (event == GLFW_CONNECTED) + { + // The monitor was connected + } + else if (event == GLFW_DISCONNECTED) + { + // The monitor was disconnected + } +} +@endcode + +If a monitor is disconnected, all windows that are full screen on it will be +switched to windowed mode before the callback is called. Only @ref +glfwGetMonitorName and @ref glfwGetMonitorUserPointer will return useful values +for a disconnected monitor and only before the monitor callback returns. + + +@section monitor_properties Monitor properties + +Each monitor has a current video mode, a list of supported video modes, +a virtual position, a content scale, a human-readable name, a user pointer, an +estimated physical size and a gamma ramp. + + +@subsection monitor_modes Video modes + +GLFW generally does a good job selecting a suitable video mode when you create +a full screen window, change its video mode or make a windowed one full +screen, but it is sometimes useful to know exactly which video modes are +supported. + +Video modes are represented as @ref GLFWvidmode structures. You can get an +array of the video modes supported by a monitor with @ref glfwGetVideoModes. +See the reference documentation for the lifetime of the returned array. + +@code +int count; +GLFWvidmode* modes = glfwGetVideoModes(monitor, &count); +@endcode + +To get the current video mode of a monitor call @ref glfwGetVideoMode. See the +reference documentation for the lifetime of the returned pointer. + +@code +const GLFWvidmode* mode = glfwGetVideoMode(monitor); +@endcode + +The resolution of a video mode is specified in +[screen coordinates](@ref coordinate_systems), not pixels. + + +@subsection monitor_size Physical size + +The physical size of a monitor in millimetres, or an estimation of it, can be +retrieved with @ref glfwGetMonitorPhysicalSize. This has no relation to its +current _resolution_, i.e. the width and height of its current +[video mode](@ref monitor_modes). + +@code +int width_mm, height_mm; +glfwGetMonitorPhysicalSize(monitor, &width_mm, &height_mm); +@endcode + +While this can be used to calculate the raw DPI of a monitor, this is often not +useful. Instead, use the [monitor content scale](@ref monitor_scale) and +[window content scale](@ref window_scale) to scale your content. + + +@subsection monitor_scale Content scale + +The content scale for a monitor can be retrieved with @ref +glfwGetMonitorContentScale. + +@code +float xscale, yscale; +glfwGetMonitorContentScale(monitor, &xscale, &yscale); +@endcode + +The content scale is the ratio between the current DPI and the platform's +default DPI. This is especially important for text and any UI elements. If the +pixel dimensions of your UI scaled by this look appropriate on your machine then +it should appear at a reasonable size on other machines regardless of their DPI +and scaling settings. This relies on the system DPI and scaling settings being +somewhat correct. + +The content scale may depend on both the monitor resolution and pixel density +and on user settings. It may be very different from the raw DPI calculated from +the physical size and current resolution. + + +@subsection monitor_pos Virtual position + +The position of the monitor on the virtual desktop, in +[screen coordinates](@ref coordinate_systems), can be retrieved with @ref +glfwGetMonitorPos. + +@code +int xpos, ypos; +glfwGetMonitorPos(monitor, &xpos, &ypos); +@endcode + + +@subsection monitor_workarea Work area + +The area of a monitor not occupied by global task bars or menu bars is the work +area. This is specified in [screen coordinates](@ref coordinate_systems) and +can be retrieved with @ref glfwGetMonitorWorkarea. + +@code +int xpos, ypos, width, height; +glfwGetMonitorWorkarea(monitor, &xpos, &ypos, &width, &height); +@endcode + + +@subsection monitor_name Human-readable name + +The human-readable, UTF-8 encoded name of a monitor is returned by @ref +glfwGetMonitorName. See the reference documentation for the lifetime of the +returned string. + +@code +const char* name = glfwGetMonitorName(monitor); +@endcode + +Monitor names are not guaranteed to be unique. Two monitors of the same model +and make may have the same name. Only the monitor handle is guaranteed to be +unique, and only until that monitor is disconnected. + + +@subsection monitor_userptr User pointer + +Each monitor has a user pointer that can be set with @ref +glfwSetMonitorUserPointer and queried with @ref glfwGetMonitorUserPointer. This +can be used for any purpose you need and will not be modified by GLFW. The +value will be kept until the monitor is disconnected or until the library is +terminated. + +The initial value of the pointer is `NULL`. + + +@subsection monitor_gamma Gamma ramp + +The gamma ramp of a monitor can be set with @ref glfwSetGammaRamp, which accepts +a monitor handle and a pointer to a @ref GLFWgammaramp structure. + +@code +GLFWgammaramp ramp; +unsigned short red[256], green[256], blue[256]; + +ramp.size = 256; +ramp.red = red; +ramp.green = green; +ramp.blue = blue; + +for (i = 0; i < ramp.size; i++) +{ + // Fill out gamma ramp arrays as desired +} + +glfwSetGammaRamp(monitor, &ramp); +@endcode + +The gamma ramp data is copied before the function returns, so there is no need +to keep it around once the ramp has been set. + +It is recommended that your gamma ramp have the same size as the current gamma +ramp for that monitor. + +The current gamma ramp for a monitor is returned by @ref glfwGetGammaRamp. See +the reference documentation for the lifetime of the returned structure. + +@code +const GLFWgammaramp* ramp = glfwGetGammaRamp(monitor); +@endcode + +If you wish to set a regular gamma ramp, you can have GLFW calculate it for you +from the desired exponent with @ref glfwSetGamma, which in turn calls @ref +glfwSetGammaRamp with the resulting ramp. + +@code +glfwSetGamma(monitor, 1.0); +@endcode + +To experiment with gamma correction via the @ref glfwSetGamma function, run the +`gamma` test program. + +@note The software controlled gamma ramp is applied _in addition_ to the +hardware gamma correction, which today is typically an approximation of sRGB +gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will +produce the default (usually sRGB-like) behavior. + +*/ diff --git a/lib/glfw/docs/moving.dox b/lib/glfw/docs/moving.dox new file mode 100644 index 0000000..705b4fa --- /dev/null +++ b/lib/glfw/docs/moving.dox @@ -0,0 +1,513 @@ +/*! + +@page moving_guide Moving from GLFW 2 to 3 + +@tableofcontents + +This is a transition guide for moving from GLFW 2 to 3. It describes what has +changed or been removed, but does _not_ include +[new features](@ref news) unless they are required when moving an existing code +base onto the new API. For example, the new multi-monitor functions are +required to create full screen windows with GLFW 3. + + +@section moving_removed Changed and removed features + +@subsection moving_renamed_files Renamed library and header file + +The GLFW 3 header is named @ref glfw3.h and moved to the `GLFW` directory, to +avoid collisions with the headers of other major versions. Similarly, the GLFW +3 library is named `glfw3,` except when it's installed as a shared library on +Unix-like systems, where it uses the +[soname](https://en.wikipedia.org/wiki/soname) `libglfw.so.3`. + +@par Old syntax +@code +#include +@endcode + +@par New syntax +@code +#include +@endcode + + +@subsection moving_threads Removal of threading functions + +The threading functions have been removed, including the per-thread sleep +function. They were fairly primitive, under-used, poorly integrated and took +time away from the focus of GLFW (i.e. context, input and window). There are +better threading libraries available and native threading support is available +in both [C++11](https://en.cppreference.com/w/cpp/thread) and +[C11](https://en.cppreference.com/w/c/thread), both of which are gaining +traction. + +If you wish to use the C++11 or C11 facilities but your compiler doesn't yet +support them, see the +[TinyThread++](https://gitorious.org/tinythread/tinythreadpp) and +[TinyCThread](https://github.com/tinycthread/tinycthread) projects created by +the original author of GLFW. These libraries implement a usable subset of the +threading APIs in C++11 and C11, and in fact some GLFW 3 test programs use +TinyCThread. + +However, GLFW 3 has better support for _use from multiple threads_ than GLFW +2 had. Contexts can be made current on any thread, although only a single +thread at a time, and the documentation explicitly states which functions may be +used from any thread and which must only be used from the main thread. + +@par Removed functions +`glfwSleep`, `glfwCreateThread`, `glfwDestroyThread`, `glfwWaitThread`, +`glfwGetThreadID`, `glfwCreateMutex`, `glfwDestroyMutex`, `glfwLockMutex`, +`glfwUnlockMutex`, `glfwCreateCond`, `glfwDestroyCond`, `glfwWaitCond`, +`glfwSignalCond`, `glfwBroadcastCond` and `glfwGetNumberOfProcessors`. + +@par Removed types +`GLFWthreadfun` + + +@subsection moving_image Removal of image and texture loading + +The image and texture loading functions have been removed. They only supported +the Targa image format, making them mostly useful for beginner level examples. +To become of sufficiently high quality to warrant keeping them in GLFW 3, they +would need not only to support other formats, but also modern extensions to +OpenGL texturing. This would either add a number of external +dependencies (libjpeg, libpng, etc.), or force GLFW to ship with inline versions +of these libraries. + +As there already are libraries doing this, it is unnecessary both to duplicate +the work and to tie the duplicate to GLFW. The resulting library would also be +platform-independent, as both OpenGL and stdio are available wherever GLFW is. + +@par Removed functions +`glfwReadImage`, `glfwReadMemoryImage`, `glfwFreeImage`, `glfwLoadTexture2D`, +`glfwLoadMemoryTexture2D` and `glfwLoadTextureImage2D`. + + +@subsection moving_stdcall Removal of GLFWCALL macro + +The `GLFWCALL` macro, which made callback functions use +[__stdcall](https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx) on Windows, +has been removed. GLFW is written in C, not Pascal. Removing this macro means +there's one less thing for application programmers to remember, i.e. the +requirement to mark all callback functions with `GLFWCALL`. It also simplifies +the creation of DLLs and DLL link libraries, as there's no need to explicitly +disable `@n` entry point suffixes. + +@par Old syntax +@code +void GLFWCALL callback_function(...); +@endcode + +@par New syntax +@code +void callback_function(...); +@endcode + + +@subsection moving_window_handles Window handle parameters + +Because GLFW 3 supports multiple windows, window handle parameters have been +added to all window-related GLFW functions and callbacks. The handle of +a newly created window is returned by @ref glfwCreateWindow (formerly +`glfwOpenWindow`). Window handles are pointers to the +[opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type @ref GLFWwindow. + +@par Old syntax +@code +glfwSetWindowTitle("New Window Title"); +@endcode + +@par New syntax +@code +glfwSetWindowTitle(window, "New Window Title"); +@endcode + + +@subsection moving_monitor Explicit monitor selection + +GLFW 3 provides support for multiple monitors. To request a full screen mode window, +instead of passing `GLFW_FULLSCREEN` you specify which monitor you wish the +window to use. The @ref glfwGetPrimaryMonitor function returns the monitor that +GLFW 2 would have selected, but there are many other +[monitor functions](@ref monitor_guide). Monitor handles are pointers to the +[opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type @ref GLFWmonitor. + +@par Old basic full screen +@code +glfwOpenWindow(640, 480, 8, 8, 8, 0, 24, 0, GLFW_FULLSCREEN); +@endcode + +@par New basic full screen +@code +window = glfwCreateWindow(640, 480, "My Window", glfwGetPrimaryMonitor(), NULL); +@endcode + +@note The framebuffer bit depth parameters of `glfwOpenWindow` have been turned +into [window hints](@ref window_hints), but as they have been given +[sane defaults](@ref window_hints_values) you rarely need to set these hints. + + +@subsection moving_autopoll Removal of automatic event polling + +GLFW 3 does not automatically poll for events in @ref glfwSwapBuffers, meaning +you need to call @ref glfwPollEvents or @ref glfwWaitEvents yourself. Unlike +buffer swap, which acts on a single window, the event processing functions act +on all windows at once. + +@par Old basic main loop +@code +while (...) +{ + // Process input + // Render output + glfwSwapBuffers(); +} +@endcode + +@par New basic main loop +@code +while (...) +{ + // Process input + // Render output + glfwSwapBuffers(window); + glfwPollEvents(); +} +@endcode + + +@subsection moving_context Explicit context management + +Each GLFW 3 window has its own OpenGL context and only you, the application +programmer, can know which context should be current on which thread at any +given time. Therefore, GLFW 3 leaves that decision to you. + +This means that you need to call @ref glfwMakeContextCurrent after creating +a window before you can call any OpenGL functions. + + +@subsection moving_hidpi Separation of window and framebuffer sizes + +Window positions and sizes now use screen coordinates, which may not be the same +as pixels on machines with high-DPI monitors. This is important as OpenGL uses +pixels, not screen coordinates. For example, the rectangle specified with +`glViewport` needs to use pixels. Therefore, framebuffer size functions have +been added. You can retrieve the size of the framebuffer of a window with @ref +glfwGetFramebufferSize function. A framebuffer size callback has also been +added, which can be set with @ref glfwSetFramebufferSizeCallback. + +@par Old basic viewport setup +@code +glfwGetWindowSize(&width, &height); +glViewport(0, 0, width, height); +@endcode + +@par New basic viewport setup +@code +glfwGetFramebufferSize(window, &width, &height); +glViewport(0, 0, width, height); +@endcode + + +@subsection moving_window_close Window closing changes + +The `GLFW_OPENED` window parameter has been removed. As long as the window has +not been destroyed, whether through @ref glfwDestroyWindow or @ref +glfwTerminate, the window is "open". + +A user attempting to close a window is now just an event like any other. Unlike +GLFW 2, windows and contexts created with GLFW 3 will never be destroyed unless +you choose them to be. Each window now has a close flag that is set to +`GLFW_TRUE` when the user attempts to close that window. By default, nothing else +happens and the window stays visible. It is then up to you to either destroy +the window, take some other action or ignore the request. + +You can query the close flag at any time with @ref glfwWindowShouldClose and set +it at any time with @ref glfwSetWindowShouldClose. + +@par Old basic main loop +@code +while (glfwGetWindowParam(GLFW_OPENED)) +{ + ... +} +@endcode + +@par New basic main loop +@code +while (!glfwWindowShouldClose(window)) +{ + ... +} +@endcode + +The close callback no longer returns a value. Instead, it is called after the +close flag has been set, so it can optionally override its value, before +event processing completes. You may however not call @ref glfwDestroyWindow +from the close callback (or any other window related callback). + +@par Old syntax +@code +int GLFWCALL window_close_callback(void); +@endcode + +@par New syntax +@code +void window_close_callback(GLFWwindow* window); +@endcode + +@note GLFW never clears the close flag to `GLFW_FALSE`, meaning you can use it +for other reasons to close the window as well, for example the user choosing +Quit from an in-game menu. + + +@subsection moving_hints Persistent window hints + +The `glfwOpenWindowHint` function has been renamed to @ref glfwWindowHint. + +Window hints are no longer reset to their default values on window creation, but +instead retain their values until modified by @ref glfwWindowHint or @ref +glfwDefaultWindowHints, or until the library is terminated and re-initialized. + + +@subsection moving_video_modes Video mode enumeration + +Video mode enumeration is now per-monitor. The @ref glfwGetVideoModes function +now returns all available modes for a specific monitor instead of requiring you +to guess how large an array you need. The `glfwGetDesktopMode` function, which +had poorly defined behavior, has been replaced by @ref glfwGetVideoMode, which +returns the current mode of a monitor. + + +@subsection moving_char_up Removal of character actions + +The action parameter of the [character callback](@ref GLFWcharfun) has been +removed. This was an artefact of the origin of GLFW, i.e. being developed in +English by a Swede. However, many keyboard layouts require more than one key to +produce characters with diacritical marks. Even the Swedish keyboard layout +requires this for uncommon cases like ü. + +@par Old syntax +@code +void GLFWCALL character_callback(int character, int action); +@endcode + +@par New syntax +@code +void character_callback(GLFWwindow* window, int character); +@endcode + + +@subsection moving_cursorpos Cursor position changes + +The `glfwGetMousePos` function has been renamed to @ref glfwGetCursorPos, +`glfwSetMousePos` to @ref glfwSetCursorPos and `glfwSetMousePosCallback` to @ref +glfwSetCursorPosCallback. + +The cursor position is now `double` instead of `int`, both for the direct +functions and for the callback. Some platforms can provide sub-pixel cursor +movement and this data is now passed on to the application where available. On +platforms where this is not provided, the decimal part is zero. + +GLFW 3 only allows you to position the cursor within a window using @ref +glfwSetCursorPos (formerly `glfwSetMousePos`) when that window is active. +Unless the window is active, the function fails silently. + + +@subsection moving_wheel Wheel position replaced by scroll offsets + +The `glfwGetMouseWheel` function has been removed. Scrolling is the input of +offsets and has no absolute position. The mouse wheel callback has been +replaced by a [scroll callback](@ref GLFWscrollfun) that receives +two-dimensional floating point scroll offsets. This allows you to receive +precise scroll data from for example modern touchpads. + +@par Old syntax +@code +void GLFWCALL mouse_wheel_callback(int position); +@endcode + +@par New syntax +@code +void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); +@endcode + +@par Removed functions +`glfwGetMouseWheel` + + +@subsection moving_repeat Key repeat action + +The `GLFW_KEY_REPEAT` enable has been removed and key repeat is always enabled +for both keys and characters. A new key action, `GLFW_REPEAT`, has been added +to allow the [key callback](@ref GLFWkeyfun) to distinguish an initial key press +from a repeat. Note that @ref glfwGetKey still returns only `GLFW_PRESS` or +`GLFW_RELEASE`. + + +@subsection moving_keys Physical key input + +GLFW 3 key tokens map to physical keys, unlike in GLFW 2 where they mapped to +the values generated by the current keyboard layout. The tokens are named +according to the values they would have in the standard US layout, but this +is only a convenience, as most programmers are assumed to know that layout. +This means that (for example) `GLFW_KEY_LEFT_BRACKET` is always a single key and +is the same key in the same place regardless of what keyboard layouts the users +of your program have. + +The key input facility was never meant for text input, although using it that +way worked slightly better in GLFW 2. If you were using it to input text, you +should be using the character callback instead, on both GLFW 2 and 3. This will +give you the characters being input, as opposed to the keys being pressed. + +GLFW 3 has key tokens for all keys on a standard 105 key keyboard, so instead of +having to remember whether to check for `a` or `A`, you now check for +@ref GLFW_KEY_A. + + +@subsection moving_joystick Joystick function changes + +The `glfwGetJoystickPos` function has been renamed to @ref glfwGetJoystickAxes. + +The `glfwGetJoystickParam` function and the `GLFW_PRESENT`, `GLFW_AXES` and +`GLFW_BUTTONS` tokens have been replaced by the @ref glfwJoystickPresent +function as well as axis and button counts returned by the @ref +glfwGetJoystickAxes and @ref glfwGetJoystickButtons functions. + + +@subsection moving_mbcs Win32 MBCS support + +The Win32 port of GLFW 3 will not compile in +[MBCS mode](https://msdn.microsoft.com/en-us/library/5z097dxa.aspx). +However, because the use of the Unicode version of the Win32 API doesn't affect +the process as a whole, but only those windows created using it, it's perfectly +possible to call MBCS functions from other parts of the same application. +Therefore, even if an application using GLFW has MBCS mode code, there's no need +for GLFW itself to support it. + + +@subsection moving_windows Support for versions of Windows older than XP + +All explicit support for version of Windows older than XP has been removed. +There is no code that actively prevents GLFW 3 from running on these earlier +versions, but it uses Win32 functions that those versions lack. + +Windows XP was released in 2001, and by now (January 2015) it has not only +replaced almost all earlier versions of Windows, but is itself rapidly being +replaced by Windows 7 and 8. The MSDN library doesn't even provide +documentation for version older than Windows 2000, making it difficult to +maintain compatibility with these versions even if it was deemed worth the +effort. + +The Win32 API has also not stood still, and GLFW 3 uses many functions only +present on Windows XP or later. Even supporting an OS as new as XP (new +from the perspective of GLFW 2, which still supports Windows 95) requires +runtime checking for a number of functions that are present only on modern +version of Windows. + + +@subsection moving_syskeys Capture of system-wide hotkeys + +The ability to disable and capture system-wide hotkeys like Alt+Tab has been +removed. Modern applications, whether they're games, scientific visualisations +or something else, are nowadays expected to be good desktop citizens and allow +these hotkeys to function even when running in full screen mode. + + +@subsection moving_terminate Automatic termination + +GLFW 3 does not register @ref glfwTerminate with `atexit` at initialization, +because `exit` calls registered functions from the calling thread and while it +is permitted to call `exit` from any thread, @ref glfwTerminate must only be +called from the main thread. + +To release all resources allocated by GLFW, you should call @ref glfwTerminate +yourself, from the main thread, before the program terminates. Note that this +destroys all windows not already destroyed with @ref glfwDestroyWindow, +invalidating any window handles you may still have. + + +@subsection moving_glu GLU header inclusion + +GLFW 3 does not by default include the GLU header and GLU itself has been +deprecated by [Khronos](https://en.wikipedia.org/wiki/Khronos_Group). __New +projects should not use GLU__, but if you need it for legacy code that +has been moved to GLFW 3, you can request that the GLFW header includes it by +defining @ref GLFW_INCLUDE_GLU before the inclusion of the GLFW header. + +@par Old syntax +@code +#include +@endcode + +@par New syntax +@code +#define GLFW_INCLUDE_GLU +#include +@endcode + +There are many libraries that offer replacements for the functionality offered +by GLU. For the matrix helper functions, see math libraries like +[GLM](https://github.com/g-truc/glm) (for C++), +[linmath.h](https://github.com/datenwolf/linmath.h) (for C) and others. For the +tessellation functions, see for example +[libtess2](https://github.com/memononen/libtess2). + + +@section moving_tables Name change tables + + +@subsection moving_renamed_functions Renamed functions + +| GLFW 2 | GLFW 3 | Notes | +| --------------------------- | ----------------------------- | ----- | +| `glfwOpenWindow` | @ref glfwCreateWindow | All channel bit depths are now hints +| `glfwCloseWindow` | @ref glfwDestroyWindow | | +| `glfwOpenWindowHint` | @ref glfwWindowHint | Now accepts all `GLFW_*_BITS` tokens | +| `glfwEnable` | @ref glfwSetInputMode | | +| `glfwDisable` | @ref glfwSetInputMode | | +| `glfwGetMousePos` | @ref glfwGetCursorPos | | +| `glfwSetMousePos` | @ref glfwSetCursorPos | | +| `glfwSetMousePosCallback` | @ref glfwSetCursorPosCallback | | +| `glfwSetMouseWheelCallback` | @ref glfwSetScrollCallback | Accepts two-dimensional scroll offsets as doubles | +| `glfwGetJoystickPos` | @ref glfwGetJoystickAxes | | +| `glfwGetWindowParam` | @ref glfwGetWindowAttrib | | +| `glfwGetGLVersion` | @ref glfwGetWindowAttrib | Use `GLFW_CONTEXT_VERSION_MAJOR`, `GLFW_CONTEXT_VERSION_MINOR` and `GLFW_CONTEXT_REVISION` | +| `glfwGetDesktopMode` | @ref glfwGetVideoMode | Returns the current mode of a monitor | +| `glfwGetJoystickParam` | @ref glfwJoystickPresent | The axis and button counts are provided by @ref glfwGetJoystickAxes and @ref glfwGetJoystickButtons | + + +@subsection moving_renamed_types Renamed types + +| GLFW 2 | GLFW 3 | Notes | +| ------------------- | --------------------- | | +| `GLFWmousewheelfun` | @ref GLFWscrollfun | | +| `GLFWmouseposfun` | @ref GLFWcursorposfun | | + + +@subsection moving_renamed_tokens Renamed tokens + +| GLFW 2 | GLFW 3 | Notes | +| --------------------------- | ---------------------------- | ----- | +| `GLFW_OPENGL_VERSION_MAJOR` | `GLFW_CONTEXT_VERSION_MAJOR` | Renamed as it applies to OpenGL ES as well | +| `GLFW_OPENGL_VERSION_MINOR` | `GLFW_CONTEXT_VERSION_MINOR` | Renamed as it applies to OpenGL ES as well | +| `GLFW_FSAA_SAMPLES` | `GLFW_SAMPLES` | Renamed to match the OpenGL API | +| `GLFW_ACTIVE` | `GLFW_FOCUSED` | Renamed to match the window focus callback | +| `GLFW_WINDOW_NO_RESIZE` | `GLFW_RESIZABLE` | The default has been inverted | +| `GLFW_MOUSE_CURSOR` | `GLFW_CURSOR` | Used with @ref glfwSetInputMode | +| `GLFW_KEY_ESC` | `GLFW_KEY_ESCAPE` | | +| `GLFW_KEY_DEL` | `GLFW_KEY_DELETE` | | +| `GLFW_KEY_PAGEUP` | `GLFW_KEY_PAGE_UP` | | +| `GLFW_KEY_PAGEDOWN` | `GLFW_KEY_PAGE_DOWN` | | +| `GLFW_KEY_KP_NUM_LOCK` | `GLFW_KEY_NUM_LOCK` | | +| `GLFW_KEY_LCTRL` | `GLFW_KEY_LEFT_CONTROL` | | +| `GLFW_KEY_LSHIFT` | `GLFW_KEY_LEFT_SHIFT` | | +| `GLFW_KEY_LALT` | `GLFW_KEY_LEFT_ALT` | | +| `GLFW_KEY_LSUPER` | `GLFW_KEY_LEFT_SUPER` | | +| `GLFW_KEY_RCTRL` | `GLFW_KEY_RIGHT_CONTROL` | | +| `GLFW_KEY_RSHIFT` | `GLFW_KEY_RIGHT_SHIFT` | | +| `GLFW_KEY_RALT` | `GLFW_KEY_RIGHT_ALT` | | +| `GLFW_KEY_RSUPER` | `GLFW_KEY_RIGHT_SUPER` | | + +*/ diff --git a/lib/glfw/docs/news.dox b/lib/glfw/docs/news.dox new file mode 100644 index 0000000..b8854a0 --- /dev/null +++ b/lib/glfw/docs/news.dox @@ -0,0 +1,279 @@ +/*! + +@page news Release notes + +@tableofcontents + + +@section news_34 Release notes for version 3.4 + +@subsection features_34 New features in version 3.4 + +@subsubsection runtime_platform_34 Runtime platform selection + +GLFW now supports being compiled for multiple backends and selecting between +them at runtime with the @ref GLFW_PLATFORM init hint. After initialization the +selected platform can be queried with @ref glfwGetPlatform. You can check if +support for a given platform is compiled in with @ref glfwPlatformSupported. + + +@subsubsection standard_cursors_34 More standard cursors + +GLFW now provides the standard cursor shapes @ref GLFW_RESIZE_NWSE_CURSOR and +@ref GLFW_RESIZE_NESW_CURSOR for diagonal resizing, @ref GLFW_RESIZE_ALL_CURSOR +for omnidirectional resizing and @ref GLFW_NOT_ALLOWED_CURSOR for showing an +action is not allowed. + +Unlike the original set, these shapes may not be available everywhere and +creation will then fail with the new @ref GLFW_CURSOR_UNAVAILABLE error. + +The cursors for horizontal and vertical resizing are now referred to as @ref +GLFW_RESIZE_EW_CURSOR and @ref GLFW_RESIZE_NS_CURSOR, and the pointing hand +cursor is now referred to as @ref GLFW_POINTING_HAND_CURSOR. The older names +are still available. + +For more information see @ref cursor_standard. + + +@subsubsection mouse_passthrough_34 Mouse event passthrough + +GLFW now provides the [GLFW_MOUSE_PASSTHROUGH](@ref GLFW_MOUSE_PASSTHROUGH_hint) +window hint for making a window transparent to mouse input, lettings events pass +to whatever window is behind it. This can also be changed after window +creation with the matching [window attribute](@ref GLFW_MOUSE_PASSTHROUGH_attrib). + + +@subsubsection wayland_app_id_34 Wayland app_id specification + +GLFW now supports specifying the app_id for a Wayland window using the +[GLFW_WAYLAND_APP_ID](@ref GLFW_WAYLAND_APP_ID_hint) window hint string. + + +@subsubsection features_34_angle_backend Support for ANGLE rendering backend selection + +GLFW now provides the +[GLFW_ANGLE_PLATFORM_TYPE](@ref GLFW_ANGLE_PLATFORM_TYPE_hint) init hint for +requesting a specific rendering backend when using +[ANGLE](https://chromium.googlesource.com/angle/angle/) to create OpenGL ES +contexts. + + +@subsubsection captured_cursor_34 Captured cursor mode + +GLFW now supports confining the cursor to the window content area with the @ref +GLFW_CURSOR_CAPTURED cursor mode. + +For more information see @ref cursor_mode. + + +@subsubsection features_34_init_allocator Support for custom memory allocator + +GLFW now supports plugging a custom memory allocator at initialization with @ref +glfwInitAllocator. The allocator is a struct of type @ref GLFWallocator with +function pointers corresponding to the standard library functions `malloc`, +`realloc` and `free`. + +For more information see @ref init_allocator. + + +@subsubsection features_34_position_hint Window hints for initial position + +GLFW now provides the @ref GLFW_POSITION_X and @ref GLFW_POSITION_Y window hints for +specifying the initial position of the window. This removes the need to create a hidden +window, move it and then show it. The default value of these hints is +`GLFW_ANY_POSITION`, which selects the previous behavior. + + +@subsubsection features_34_win32_keymenu Support for keyboard access to Windows window menu + +GLFW now provides the +[GLFW_WIN32_KEYBOARD_MENU](@ref GLFW_WIN32_KEYBOARD_MENU_hint) window hint for +enabling keyboard access to the window menu via the Alt+Space and +Alt-and-then-Space shortcuts. This may be useful for more GUI-oriented +applications. + + +@subsection caveats Caveats for version 3.4 + +@subsubsection native_34 Multiple sets of native access functions + +Because GLFW now supports runtime selection of platform (window system), a library binary +may export native access functions for multiple platforms. Starting with version 3.4 you +must not assume that GLFW is running on a platform just because it exports native access +functions for it. After initialization, you can query the selected platform with @ref +glfwGetPlatform. + + +@subsubsection version_string_34 Version string format has been changed + +Because GLFW now supports runtime selection of platform (window system), the version +string returned by @ref glfwGetVersionString has been expanded. It now contains the names +of all APIs for all the platforms that the library binary supports. + + +@subsubsection joysticks_34 Joystick support is initialized on demand + +The joystick part of GLFW is now initialized when first used, primarily to work +around faulty Windows drivers that cause DirectInput to take up to several +seconds to enumerate devices. + +This change will usually not be observable. However, if your application waits +for events without having first called any joystick function or created any +visible windows, the wait may never unblock as GLFW may not yet have subscribed +to joystick related OS events. + +To work around this, call any joystick function before waiting for events, for +example by setting a [joystick callback](@ref joystick_event). + + +@subsubsection wayland_alpha_34 Frambuffer may lack alpha channel on older Wayland systems + +On Wayland, when creating an EGL context on a machine lacking the new +`EGL_EXT_present_opaque` extension, the @ref GLFW_ALPHA_BITS window hint will be +ignored and the framebuffer will have no alpha channel. This is because some +Wayland compositors treat any buffer with an alpha channel as per-pixel +transparent. + +If you want a per-pixel transparent window, see the +[GLFW_TRANSPARENT_FRAMEBUFFER](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) window +hint. + + +@subsubsection standalone_34 Tests and examples are disabled when built as a subproject + +GLFW now does not build the tests and examples when it is added as +a subdirectory of another CMake project. To enable these, set the @ref +GLFW_BUILD_TESTS and @ref GLFW_BUILD_EXAMPLES cache variables before adding the +GLFW subdirectory. + +@code{.cmake} +set(GLFW_BUILD_EXAMPLES ON CACHE BOOL "" FORCE) +set(GLFW_BUILD_TESTS ON CACHE BOOL "" FORCE) +add_subdirectory(path/to/glfw) +@endcode + + +@subsubsection initmenu_34 macOS main menu now created at initialization + +GLFW now creates the main menu and completes the initialization of NSApplication +during initialization. Programs that do not want a main menu can disable it +with the [GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint) init hint. + + +@subsubsection corevideo_34 CoreVideo dependency has been removed + +GLFW no longer depends on the CoreVideo framework on macOS and it no longer +needs to be specified during compilation or linking. + + +@subsubsection caveat_fbtransparency_34 Framebuffer transparency requires DWM transparency + +GLFW no longer supports framebuffer transparency enabled via @ref +GLFW_TRANSPARENT_FRAMEBUFFER on Windows 7 if DWM transparency is off +(the Transparency setting under Personalization > Window Color). + + +@subsubsection emptyevents_34 Empty events on X11 no longer round-trip to server + +Events posted with @ref glfwPostEmptyEvent now use a separate unnamed pipe +instead of sending an X11 client event to the helper window. + + +@subsection deprecations_34 Deprecations in version 3.4 + +@subsection removals_34 Removals in 3.4 + +@subsubsection vulkan_static_34 GLFW_VULKAN_STATIC CMake option has been removed + +This option was used to compile GLFW directly linked with the Vulkan loader, instead of +using dynamic loading to get hold of `vkGetInstanceProcAddr` at initialization. This is +now done by calling the @ref glfwInitVulkanLoader function before initialization. + +If you need backward compatibility, this macro can still be defined for GLFW 3.4 and will +have no effect. The call to @ref glfwInitVulkanLoader can be conditionally enabled in +your code by checking the @ref GLFW_VERSION_MAJOR and @ref GLFW_VERSION_MINOR macros. + + +@subsubsection osmesa_option_34 GLFW_USE_OSMESA CMake option has been removed + +This option was used to compile GLFW for the Null platform. The Null platform is now +always supported. To produce a library binary that only supports this platform, the way +this CMake option used to do, you will instead need to disable the default platform for +the target OS. This means setting the @ref GLFW_BUILD_WIN32, @ref GLFW_BUILD_COCOA or +@ref GLFW_BUILD_X11 CMake option to false. + +You can set all of them to false and the ones that don't apply for the target OS will be +ignored. + + +@subsubsection wl_shell_34 Support for the wl_shell protocol has been removed + +Support for the wl_shell protocol has been removed and GLFW now only supports +the XDG-Shell protocol. If your Wayland compositor does not support XDG-Shell +then GLFW will fail to initialize. + + +@subsection symbols_34 New symbols in version 3.4 + +@subsubsection functions_34 New functions in version 3.4 + + - @ref glfwInitAllocator + - @ref glfwGetPlatform + - @ref glfwPlatformSupported + - @ref glfwInitVulkanLoader + + +@subsubsection types_34 New types in version 3.4 + + - @ref GLFWallocator + - @ref GLFWallocatefun + - @ref GLFWreallocatefun + - @ref GLFWdeallocatefun + + +@subsubsection constants_34 New constants in version 3.4 + + - @ref GLFW_PLATFORM + - @ref GLFW_ANY_PLATFORM + - @ref GLFW_PLATFORM_WIN32 + - @ref GLFW_PLATFORM_COCOA + - @ref GLFW_PLATFORM_WAYLAND + - @ref GLFW_PLATFORM_X11 + - @ref GLFW_PLATFORM_NULL + - @ref GLFW_PLATFORM_UNAVAILABLE + - @ref GLFW_POINTING_HAND_CURSOR + - @ref GLFW_RESIZE_EW_CURSOR + - @ref GLFW_RESIZE_NS_CURSOR + - @ref GLFW_RESIZE_NWSE_CURSOR + - @ref GLFW_RESIZE_NESW_CURSOR + - @ref GLFW_RESIZE_ALL_CURSOR + - @ref GLFW_MOUSE_PASSTHROUGH + - @ref GLFW_NOT_ALLOWED_CURSOR + - @ref GLFW_CURSOR_UNAVAILABLE + - @ref GLFW_WIN32_KEYBOARD_MENU + - @ref GLFW_CONTEXT_DEBUG + - @ref GLFW_FEATURE_UNAVAILABLE + - @ref GLFW_FEATURE_UNIMPLEMENTED + - @ref GLFW_ANGLE_PLATFORM_TYPE + - @ref GLFW_ANGLE_PLATFORM_TYPE_NONE + - @ref GLFW_ANGLE_PLATFORM_TYPE_OPENGL + - @ref GLFW_ANGLE_PLATFORM_TYPE_OPENGLES + - @ref GLFW_ANGLE_PLATFORM_TYPE_D3D9 + - @ref GLFW_ANGLE_PLATFORM_TYPE_D3D11 + - @ref GLFW_ANGLE_PLATFORM_TYPE_VULKAN + - @ref GLFW_ANGLE_PLATFORM_TYPE_METAL + - @ref GLFW_X11_XCB_VULKAN_SURFACE + - @ref GLFW_CURSOR_CAPTURED + - @ref GLFW_POSITION_X + - @ref GLFW_POSITION_Y + - @ref GLFW_ANY_POSITION + + +@section news_archive Release notes for earlier versions + +- [Release notes for 3.3](https://www.glfw.org/docs/3.3/news.html) +- [Release notes for 3.2](https://www.glfw.org/docs/3.2/news.html) +- [Release notes for 3.1](https://www.glfw.org/docs/3.1/news.html) +- [Release notes for 3.0](https://www.glfw.org/docs/3.0/news.html) + +*/ diff --git a/lib/glfw/docs/quick.dox b/lib/glfw/docs/quick.dox new file mode 100644 index 0000000..8824ff5 --- /dev/null +++ b/lib/glfw/docs/quick.dox @@ -0,0 +1,367 @@ +/*! + +@page quick_guide Getting started + +@tableofcontents + +This guide takes you through writing a small application using GLFW 3. The +application will create a window and OpenGL context, render a rotating triangle +and exit when the user closes the window or presses _Escape_. This guide will +introduce a few of the most commonly used functions, but there are many more. + +This guide assumes no experience with earlier versions of GLFW. If you +have used GLFW 2 in the past, read @ref moving_guide, as some functions +behave differently in GLFW 3. + + +@section quick_steps Step by step + +@subsection quick_include Including the GLFW header + +In the source files of your application where you use GLFW, you need to include +its header file. + +@code +#include +@endcode + +This header provides all the constants, types and function prototypes of the +GLFW API. + +By default it also includes the OpenGL header from your development environment. +On some platforms this header only supports older versions of OpenGL. The most +extreme case is Windows, where it typically only supports OpenGL 1.2. + +Most programs will instead use an +[extension loader library](@ref context_glext_auto) and include its header. +This example uses files generated by [glad](https://gen.glad.sh/). The GLFW +header can detect most such headers if they are included first and will then not +include the one from your development environment. + +@code +#include +#include +@endcode + +To make sure there will be no header conflicts, you can define @ref +GLFW_INCLUDE_NONE before the GLFW header to explicitly disable inclusion of the +development environment header. This also allows the two headers to be included +in any order. + +@code +#define GLFW_INCLUDE_NONE +#include +#include +@endcode + + +@subsection quick_init_term Initializing and terminating GLFW + +Before you can use most GLFW functions, the library must be initialized. On +successful initialization, `GLFW_TRUE` is returned. If an error occurred, +`GLFW_FALSE` is returned. + +@code +if (!glfwInit()) +{ + // Initialization failed +} +@endcode + +Note that `GLFW_TRUE` and `GLFW_FALSE` are and will always be one and zero. + +When you are done using GLFW, typically just before the application exits, you +need to terminate GLFW. + +@code +glfwTerminate(); +@endcode + +This destroys any remaining windows and releases any other resources allocated by +GLFW. After this call, you must initialize GLFW again before using any GLFW +functions that require it. + + +@subsection quick_capture_error Setting an error callback + +Most events are reported through callbacks, whether it's a key being pressed, +a GLFW window being moved, or an error occurring. Callbacks are C functions (or +C++ static methods) that are called by GLFW with arguments describing the event. + +In case a GLFW function fails, an error is reported to the GLFW error callback. +You can receive these reports with an error callback. This function must have +the signature below but may do anything permitted in other callbacks. + +@code +void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} +@endcode + +Callback functions must be set, so GLFW knows to call them. The function to set +the error callback is one of the few GLFW functions that may be called before +initialization, which lets you be notified of errors both during and after +initialization. + +@code +glfwSetErrorCallback(error_callback); +@endcode + + +@subsection quick_create_window Creating a window and context + +The window and its OpenGL context are created with a single call to @ref +glfwCreateWindow, which returns a handle to the created combined window and +context object + +@code +GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL); +if (!window) +{ + // Window or OpenGL context creation failed +} +@endcode + +This creates a 640 by 480 windowed mode window with an OpenGL context. If +window or OpenGL context creation fails, `NULL` will be returned. You should +always check the return value. While window creation rarely fails, context +creation depends on properly installed drivers and may fail even on machines +with the necessary hardware. + +By default, the OpenGL context GLFW creates may have any version. You can +require a minimum OpenGL version by setting the `GLFW_CONTEXT_VERSION_MAJOR` and +`GLFW_CONTEXT_VERSION_MINOR` hints _before_ creation. If the required minimum +version is not supported on the machine, context (and window) creation fails. + +You can select the OpenGL profile by setting the `GLFW_OPENGL_PROFILE` hint. +This program uses the core profile as that is the only profile macOS supports +for OpenGL 3.x and 4.x. + +@code +glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); +glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); +glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); +GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL); +if (!window) +{ + // Window or context creation failed +} +@endcode + +When a window and context is no longer needed, destroy it. + +@code +glfwDestroyWindow(window); +@endcode + +Once this function is called, no more events will be delivered for that window +and its handle becomes invalid. + + +@subsection quick_context_current Making the OpenGL context current + +Before you can use the OpenGL API, you must have a current OpenGL context. + +@code +glfwMakeContextCurrent(window); +@endcode + +The context will remain current until you make another context current or until +the window owning the current context is destroyed. + +If you are using an [extension loader library](@ref context_glext_auto) to +access modern OpenGL then this is when to initialize it, as the loader needs +a current context to load from. This example uses +[glad](https://github.com/Dav1dde/glad), but the same rule applies to all such +libraries. + +@code +gladLoadGL(glfwGetProcAddress); +@endcode + + +@subsection quick_window_close Checking the window close flag + +Each window has a flag indicating whether the window should be closed. + +When the user attempts to close the window, either by pressing the close widget +in the title bar or using a key combination like Alt+F4, this flag is set to 1. +Note that __the window isn't actually closed__, so you are expected to monitor +this flag and either destroy the window or give some kind of feedback to the +user. + +@code +while (!glfwWindowShouldClose(window)) +{ + // Keep running +} +@endcode + +You can be notified when the user is attempting to close the window by setting +a close callback with @ref glfwSetWindowCloseCallback. The callback will be +called immediately after the close flag has been set. + +You can also set it yourself with @ref glfwSetWindowShouldClose. This can be +useful if you want to interpret other kinds of input as closing the window, like +for example pressing the _Escape_ key. + + +@subsection quick_key_input Receiving input events + +Each window has a large number of callbacks that can be set to receive all the +various kinds of events. To receive key press and release events, create a key +callback function. + +@code +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} +@endcode + +The key callback, like other window related callbacks, are set per-window. + +@code +glfwSetKeyCallback(window, key_callback); +@endcode + +In order for event callbacks to be called when events occur, you need to process +events as described below. + + +@subsection quick_render Rendering with OpenGL + +Once you have a current OpenGL context, you can use OpenGL normally. In this +tutorial, a multicolored rotating triangle will be rendered. The framebuffer +size needs to be retrieved for `glViewport`. + +@code +int width, height; +glfwGetFramebufferSize(window, &width, &height); +glViewport(0, 0, width, height); +@endcode + +You can also set a framebuffer size callback using @ref +glfwSetFramebufferSizeCallback and be notified when the size changes. + +The details of how to render with OpenGL is outside the scope of this tutorial, +but there are many excellent resources for learning modern OpenGL. Here are +a few of them: + + - [Anton's OpenGL 4 Tutorials](https://antongerdelan.net/opengl/) + - [Learn OpenGL](https://learnopengl.com/) + - [Open.GL](https://open.gl/) + +These all happen to use GLFW, but OpenGL itself works the same whatever API you +use to create the window and context. + + +@subsection quick_timer Reading the timer + +To create smooth animation, a time source is needed. GLFW provides a timer that +returns the number of seconds since initialization. The time source used is the +most accurate on each platform and generally has micro- or nanosecond +resolution. + +@code +double time = glfwGetTime(); +@endcode + + +@subsection quick_swap_buffers Swapping buffers + +GLFW windows by default use double buffering. That means that each window has +two rendering buffers; a front buffer and a back buffer. The front buffer is +the one being displayed and the back buffer the one you render to. + +When the entire frame has been rendered, the buffers need to be swapped with one +another, so the back buffer becomes the front buffer and vice versa. + +@code +glfwSwapBuffers(window); +@endcode + +The swap interval indicates how many frames to wait until swapping the buffers, +commonly known as _vsync_. By default, the swap interval is zero, meaning +buffer swapping will occur immediately. On fast machines, many of those frames +will never be seen, as the screen is still only updated typically 60-75 times +per second, so this wastes a lot of CPU and GPU cycles. + +Also, because the buffers will be swapped in the middle the screen update, +leading to [screen tearing](https://en.wikipedia.org/wiki/Screen_tearing). + +For these reasons, applications will typically want to set the swap interval to +one. It can be set to higher values, but this is usually not recommended, +because of the input latency it leads to. + +@code +glfwSwapInterval(1); +@endcode + +This function acts on the current context and will fail unless a context is +current. + + +@subsection quick_process_events Processing events + +GLFW needs to communicate regularly with the window system both in order to +receive events and to show that the application hasn't locked up. Event +processing must be done regularly while you have visible windows and is normally +done each frame after buffer swapping. + +There are two methods for processing pending events; polling and waiting. This +example will use event polling, which processes only those events that have +already been received and then returns immediately. + +@code +glfwPollEvents(); +@endcode + +This is the best choice when rendering continually, like most games do. If +instead you only need to update your rendering once you have received new input, +@ref glfwWaitEvents is a better choice. It waits until at least one event has +been received, putting the thread to sleep in the meantime, and then processes +all received events. This saves a great deal of CPU cycles and is useful for, +for example, many kinds of editing tools. + + +@section quick_example Putting it together + +Now that you know how to initialize GLFW, create a window and poll for +keyboard input, it's possible to create a small program. + +This program creates a 640 by 480 windowed mode window and starts a loop that +clears the screen, renders a triangle and processes events until the user either +presses _Escape_ or closes the window. + +@snippet triangle-opengl.c code + +The program above can be found in the +[source package](https://www.glfw.org/download.html) as +`examples/triangle-opengl.c` and is compiled along with all other examples when +you build GLFW. If you built GLFW from the source package then you already have +this as `triangle-opengl.exe` on Windows, `triangle-opengl` on Linux or +`triangle-opengl.app` on macOS. + +This tutorial used only a few of the many functions GLFW provides. There are +guides for each of the areas covered by GLFW. Each guide will introduce all the +functions for that category. + + - @ref intro_guide + - @ref window_guide + - @ref context_guide + - @ref monitor_guide + - @ref input_guide + +You can access reference documentation for any GLFW function by clicking it and +the reference for each function links to related functions and guide sections. + +The tutorial ends here. Once you have written a program that uses GLFW, you +will need to compile and link it. How to do that depends on the development +environment you are using and is best explained by the documentation for that +environment. To learn about the details that are specific to GLFW, see +@ref build_guide. + +*/ diff --git a/lib/glfw/docs/spaces.svg b/lib/glfw/docs/spaces.svg new file mode 100644 index 0000000..5b32646 --- /dev/null +++ b/lib/glfw/docs/spaces.svg @@ -0,0 +1,877 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/glfw/docs/vulkan.dox b/lib/glfw/docs/vulkan.dox new file mode 100644 index 0000000..5e38c01 --- /dev/null +++ b/lib/glfw/docs/vulkan.dox @@ -0,0 +1,253 @@ +/*! + +@page vulkan_guide Vulkan guide + +@tableofcontents + +This guide is intended to fill the gaps between the official [Vulkan +resources](https://www.khronos.org/vulkan/) and the rest of the GLFW +documentation and is not a replacement for either. It assumes some familiarity +with Vulkan concepts like loaders, devices, queues and surfaces and leaves it to +the Vulkan documentation to explain the details of Vulkan functions. + +To develop for Vulkan you should download the [LunarG Vulkan +SDK](https://vulkan.lunarg.com/) for your platform. Apart from headers and link +libraries, they also provide the validation layers necessary for development. + +The [Vulkan Tutorial](https://vulkan-tutorial.com/) has more information on how +to use GLFW and Vulkan. The [Khronos Vulkan +Samples](https://github.com/KhronosGroup/Vulkan-Samples) also use GLFW, although +with a small framework in between. + +For details on a specific Vulkan support function, see the @ref vulkan. There +are also guides for the other areas of the GLFW API. + + - @ref intro_guide + - @ref window_guide + - @ref context_guide + - @ref monitor_guide + - @ref input_guide + + +@section vulkan_loader Finding the Vulkan loader + +GLFW itself does not ever need to be linked against the Vulkan loader. + +By default, GLFW will load the Vulkan loader dynamically at runtime via its standard name: +`vulkan-1.dll` on Windows, `libvulkan.so.1` on Linux and other Unix-like systems and +`libvulkan.1.dylib` on macOS. + +@macos GLFW will also look up and search the `Frameworks` subdirectory of your +application bundle. + +If your code is using a Vulkan loader with a different name or in a non-standard location +you will need to direct GLFW to it. Pass your version of `vkGetInstanceProcAddr` to @ref +glfwInitVulkanLoader before initializing GLFW and it will use that function for all Vulkan +entry point retrieval. This prevents GLFW from dynamically loading the Vulkan loader. + +@code +glfwInitVulkanLoader(vkGetInstanceProcAddr); +@endcode + +@macos To make your application be redistributable you will need to set up the application +bundle according to the LunarG SDK documentation. This is explained in more detail in the +[SDK documentation for macOS](https://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html). + + +@section vulkan_include Including the Vulkan header file + +To have GLFW include the Vulkan header, define @ref GLFW_INCLUDE_VULKAN before including +the GLFW header. + +@code +#define GLFW_INCLUDE_VULKAN +#include +@endcode + +If you instead want to include the Vulkan header from a custom location or use +your own custom Vulkan header then do this before the GLFW header. + +@code +#include +#include +@endcode + +Unless a Vulkan header is included, either by the GLFW header or above it, the following +GLFW functions will not be declared, as depend on Vulkan types. + + - @ref glfwInitVulkanLoader + - @ref glfwGetInstanceProcAddress + - @ref glfwGetPhysicalDevicePresentationSupport + - @ref glfwCreateWindowSurface + +The `VK_USE_PLATFORM_*_KHR` macros do not need to be defined for the Vulkan part +of GLFW to work. Define them only if you are using these extensions directly. + + +@section vulkan_support Querying for Vulkan support + +If you are linking directly against the Vulkan loader then you can skip this +section. The canonical desktop loader library exports all Vulkan core and +Khronos extension functions, allowing them to be called directly. + +If you are loading the Vulkan loader dynamically instead of linking directly +against it, you can check for the availability of a loader and ICD with @ref +glfwVulkanSupported. + +@code +if (glfwVulkanSupported()) +{ + // Vulkan is available, at least for compute +} +@endcode + +This function returns `GLFW_TRUE` if the Vulkan loader and any minimally +functional ICD was found. + +If one or both were not found, calling any other Vulkan related GLFW function +will generate a @ref GLFW_API_UNAVAILABLE error. + + +@subsection vulkan_proc Querying Vulkan function pointers + +To load any Vulkan core or extension function from the found loader, call @ref +glfwGetInstanceProcAddress. To load functions needed for instance creation, +pass `NULL` as the instance. + +@code +PFN_vkCreateInstance pfnCreateInstance = (PFN_vkCreateInstance) + glfwGetInstanceProcAddress(NULL, "vkCreateInstance"); +@endcode + +Once you have created an instance, you can load from it all other Vulkan core +functions and functions from any instance extensions you enabled. + +@code +PFN_vkCreateDevice pfnCreateDevice = (PFN_vkCreateDevice) + glfwGetInstanceProcAddress(instance, "vkCreateDevice"); +@endcode + +This function in turn calls `vkGetInstanceProcAddr`. If that fails, the +function falls back to a platform-specific query of the Vulkan loader (i.e. +`dlsym` or `GetProcAddress`). If that also fails, the function returns `NULL`. +For more information about `vkGetInstanceProcAddr`, see the Vulkan +documentation. + +Vulkan also provides `vkGetDeviceProcAddr` for loading device-specific versions +of Vulkan function. This function can be retrieved from an instance with @ref +glfwGetInstanceProcAddress. + +@code +PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr) + glfwGetInstanceProcAddress(instance, "vkGetDeviceProcAddr"); +@endcode + +Device-specific functions may execute a little faster, due to not having to +dispatch internally based on the device passed to them. For more information +about `vkGetDeviceProcAddr`, see the Vulkan documentation. + + +@section vulkan_ext Querying required Vulkan extensions + +To do anything useful with Vulkan you need to create an instance. If you want +to use Vulkan to render to a window, you must enable the instance extensions +GLFW requires to create Vulkan surfaces. + +To query the instance extensions required, call @ref +glfwGetRequiredInstanceExtensions. + +@code +uint32_t count; +const char** extensions = glfwGetRequiredInstanceExtensions(&count); +@endcode + +These extensions must all be enabled when creating instances that are going to +be passed to @ref glfwGetPhysicalDevicePresentationSupport and @ref +glfwCreateWindowSurface. The set of extensions will vary depending on platform +and may also vary depending on graphics drivers and other factors. + +If it fails it will return `NULL` and GLFW will not be able to create Vulkan +window surfaces. You can still use Vulkan for off-screen rendering and compute +work. + +If successful the returned array will always include `VK_KHR_surface`, so if +you don't require any additional extensions you can pass this list directly to +the `VkInstanceCreateInfo` struct. + +@code +VkInstanceCreateInfo ici; + +memset(&ici, 0, sizeof(ici)); +ici.enabledExtensionCount = count; +ici.ppEnabledExtensionNames = extensions; +... +@endcode + +Additional extensions may be required by future versions of GLFW. You should +check whether any extensions you wish to enable are already in the returned +array, as it is an error to specify an extension more than once in the +`VkInstanceCreateInfo` struct. + +@macos MoltenVK is (as of July 2022) not yet a fully conformant implementation +of Vulkan. As of Vulkan SDK 1.3.216.0, this means you must also enable the +`VK_KHR_portability_enumeration` instance extension and set the +`VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR` bit in the instance creation +info flags for MoltenVK to show up in the list of physical devices. For more +information, see the Vulkan and MoltenVK documentation. + + +@section vulkan_present Querying for Vulkan presentation support + +Not every queue family of every Vulkan device can present images to surfaces. +To check whether a specific queue family of a physical device supports image +presentation without first having to create a window and surface, call @ref +glfwGetPhysicalDevicePresentationSupport. + +@code +if (glfwGetPhysicalDevicePresentationSupport(instance, physical_device, queue_family_index)) +{ + // Queue family supports image presentation +} +@endcode + +The `VK_KHR_surface` extension additionally provides the +`vkGetPhysicalDeviceSurfaceSupportKHR` function, which performs the same test on +an existing Vulkan surface. + + +@section vulkan_window Creating the window + +Unless you will be using OpenGL or OpenGL ES with the same window as Vulkan, +there is no need to create a context. You can disable context creation with the +[GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint. + +@code +glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); +GLFWwindow* window = glfwCreateWindow(640, 480, "Window Title", NULL, NULL); +@endcode + +See @ref context_less for more information. + + +@section vulkan_surface Creating a Vulkan window surface + +You can create a Vulkan surface (as defined by the `VK_KHR_surface` extension) +for a GLFW window with @ref glfwCreateWindowSurface. + +@code +VkSurfaceKHR surface; +VkResult err = glfwCreateWindowSurface(instance, window, NULL, &surface); +if (err) +{ + // Window surface creation failed +} +@endcode + +If an OpenGL or OpenGL ES context was created on the window, the context has +ownership of the presentation on the window and a Vulkan surface cannot be +created. + +It is your responsibility to destroy the surface. GLFW does not destroy it for +you. Call `vkDestroySurfaceKHR` function from the same extension to destroy it. + +*/ diff --git a/lib/glfw/docs/window.dox b/lib/glfw/docs/window.dox new file mode 100644 index 0000000..3cec635 --- /dev/null +++ b/lib/glfw/docs/window.dox @@ -0,0 +1,1489 @@ +/*! + +@page window_guide Window guide + +@tableofcontents + +This guide introduces the window related functions of GLFW. For details on +a specific function in this category, see the @ref window. There are also +guides for the other areas of GLFW. + + - @ref intro_guide + - @ref context_guide + - @ref vulkan_guide + - @ref monitor_guide + - @ref input_guide + + +@section window_object Window objects + +The @ref GLFWwindow object encapsulates both a window and a context. They are +created with @ref glfwCreateWindow and destroyed with @ref glfwDestroyWindow, or +@ref glfwTerminate, if any remain. As the window and context are inseparably +linked, the object pointer is used as both a context and window handle. + +To see the event stream provided to the various window related callbacks, run +the `events` test program. + + +@subsection window_creation Window creation + +A window and its OpenGL or OpenGL ES context are created with @ref +glfwCreateWindow, which returns a handle to the created window object. For +example, this creates a 640 by 480 windowed mode window: + +@code +GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL); +@endcode + +If window creation fails, `NULL` will be returned, so it is necessary to check +the return value. + +The window handle is passed to all window related functions and is provided to +along with all input events, so event handlers can tell which window received +the event. + + +@subsubsection window_full_screen Full screen windows + +To create a full screen window, you need to specify which monitor the window +should use. In most cases, the user's primary monitor is a good choice. +For more information about retrieving monitors, see @ref monitor_monitors. + +@code +GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", glfwGetPrimaryMonitor(), NULL); +@endcode + +Full screen windows cover the entire display area of a monitor, have no border +or decorations. + +Windowed mode windows can be made full screen by setting a monitor with @ref +glfwSetWindowMonitor, and full screen ones can be made windowed by unsetting it +with the same function. + +Each field of the @ref GLFWvidmode structure corresponds to a function parameter +or window hint and combine to form the _desired video mode_ for that window. +The supported video mode most closely matching the desired video mode will be +set for the chosen monitor as long as the window has input focus. For more +information about retrieving video modes, see @ref monitor_modes. + +Video mode field | Corresponds to +---------------- | -------------- +GLFWvidmode.width | `width` parameter of @ref glfwCreateWindow +GLFWvidmode.height | `height` parameter of @ref glfwCreateWindow +GLFWvidmode.redBits | @ref GLFW_RED_BITS hint +GLFWvidmode.greenBits | @ref GLFW_GREEN_BITS hint +GLFWvidmode.blueBits | @ref GLFW_BLUE_BITS hint +GLFWvidmode.refreshRate | @ref GLFW_REFRESH_RATE hint + +Once you have a full screen window, you can change its resolution, refresh rate +and monitor with @ref glfwSetWindowMonitor. If you only need change its +resolution you can also call @ref glfwSetWindowSize. In all cases, the new +video mode will be selected the same way as the video mode chosen by @ref +glfwCreateWindow. If the window has an OpenGL or OpenGL ES context, it will be +unaffected. + +By default, the original video mode of the monitor will be restored and the +window iconified if it loses input focus, to allow the user to switch back to +the desktop. This behavior can be disabled with the +[GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint, for example if you +wish to simultaneously cover multiple monitors with full screen windows. + +If a monitor is disconnected, all windows that are full screen on that monitor +will be switched to windowed mode. See @ref monitor_event for more information. + + +@subsubsection window_windowed_full_screen "Windowed full screen" windows + +If the closest match for the desired video mode is the current one, the video +mode will not be changed, making window creation faster and application +switching much smoother. This is sometimes called _windowed full screen_ or +_borderless full screen_ window and counts as a full screen window. To create +such a window, request the current video mode. + +@code +const GLFWvidmode* mode = glfwGetVideoMode(monitor); + +glfwWindowHint(GLFW_RED_BITS, mode->redBits); +glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits); +glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits); +glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate); + +GLFWwindow* window = glfwCreateWindow(mode->width, mode->height, "My Title", monitor, NULL); +@endcode + +This also works for windowed mode windows that are made full screen. + +@code +const GLFWvidmode* mode = glfwGetVideoMode(monitor); + +glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate); +@endcode + +Note that @ref glfwGetVideoMode returns the _current_ video mode of a monitor, +so if you already have a full screen window on that monitor that you want to +make windowed full screen, you need to have saved the desktop resolution before. + + +@subsection window_destruction Window destruction + +When a window is no longer needed, destroy it with @ref glfwDestroyWindow. + +@code +glfwDestroyWindow(window); +@endcode + +Window destruction always succeeds. Before the actual destruction, all +callbacks are removed so no further events will be delivered for the window. +All windows remaining when @ref glfwTerminate is called are destroyed as well. + +When a full screen window is destroyed, the original video mode of its monitor +is restored, but the gamma ramp is left untouched. + + +@subsection window_hints Window creation hints + +There are a number of hints that can be set before the creation of a window and +context. Some affect the window itself, others affect the framebuffer or +context. These hints are set to their default values each time the library is +initialized with @ref glfwInit. Integer value hints can be set individually +with @ref glfwWindowHint and string value hints with @ref glfwWindowHintString. +You can reset all at once to their defaults with @ref glfwDefaultWindowHints. + +Some hints are platform specific. These are always valid to set on any +platform but they will only affect their specific platform. Other platforms +will ignore them. Setting these hints requires no platform specific headers or +calls. + +@note Window hints need to be set before the creation of the window and context +you wish to have the specified attributes. They function as additional +arguments to @ref glfwCreateWindow. + + +@subsubsection window_hints_hard Hard and soft constraints + +Some window hints are hard constraints. These must match the available +capabilities _exactly_ for window and context creation to succeed. Hints +that are not hard constraints are matched as closely as possible, but the +resulting context and framebuffer may differ from what these hints requested. + +The following hints are always hard constraints: +- @ref GLFW_STEREO +- @ref GLFW_DOUBLEBUFFER +- [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) +- [GLFW_CONTEXT_CREATION_API](@ref GLFW_CONTEXT_CREATION_API_hint) + +The following additional hints are hard constraints when requesting an OpenGL +context, but are ignored when requesting an OpenGL ES context: +- [GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) +- [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) + + +@subsubsection window_hints_wnd Window related hints + +@anchor GLFW_RESIZABLE_hint +__GLFW_RESIZABLE__ specifies whether the windowed mode window will be resizable +_by the user_. The window will still be resizable using the @ref +glfwSetWindowSize function. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. +This hint is ignored for full screen and undecorated windows. + +@anchor GLFW_VISIBLE_hint +__GLFW_VISIBLE__ specifies whether the windowed mode window will be initially +visible. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This hint is +ignored for full screen windows. + +@anchor GLFW_DECORATED_hint +__GLFW_DECORATED__ specifies whether the windowed mode window will have window +decorations such as a border, a close widget, etc. An undecorated window will +not be resizable by the user but will still allow the user to generate close +events on some platforms. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. +This hint is ignored for full screen windows. + +@anchor GLFW_FOCUSED_hint +__GLFW_FOCUSED__ specifies whether the windowed mode window will be given input +focus when created. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This +hint is ignored for full screen and initially hidden windows. + +@anchor GLFW_AUTO_ICONIFY_hint +__GLFW_AUTO_ICONIFY__ specifies whether the full screen window will +automatically iconify and restore the previous video mode on input focus loss. +Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This hint is ignored for +windowed mode windows. + +@anchor GLFW_FLOATING_hint +__GLFW_FLOATING__ specifies whether the windowed mode window will be floating +above other regular windows, also called topmost or always-on-top. This is +intended primarily for debugging purposes and cannot be used to implement proper +full screen windows. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This +hint is ignored for full screen windows. + +@anchor GLFW_MAXIMIZED_hint +__GLFW_MAXIMIZED__ specifies whether the windowed mode window will be maximized +when created. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This hint is +ignored for full screen windows. + +@anchor GLFW_CENTER_CURSOR_hint +__GLFW_CENTER_CURSOR__ specifies whether the cursor should be centered over +newly created full screen windows. Possible values are `GLFW_TRUE` and +`GLFW_FALSE`. This hint is ignored for windowed mode windows. + +@anchor GLFW_TRANSPARENT_FRAMEBUFFER_hint +__GLFW_TRANSPARENT_FRAMEBUFFER__ specifies whether the window framebuffer will +be transparent. If enabled and supported by the system, the window framebuffer +alpha channel will be used to combine the framebuffer with the background. This +does not affect window decorations. Possible values are `GLFW_TRUE` and +`GLFW_FALSE`. + +@anchor GLFW_FOCUS_ON_SHOW_hint +__GLFW_FOCUS_ON_SHOW__ specifies whether the window will be given input +focus when @ref glfwShowWindow is called. Possible values are `GLFW_TRUE` and +`GLFW_FALSE`. + +@anchor GLFW_SCALE_TO_MONITOR +__GLFW_SCALE_TO_MONITOR__ specified whether the window content area should be +resized based on the [monitor content scale](@ref monitor_scale) of any monitor +it is placed on. This includes the initial placement when the window is +created. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. + +This hint only has an effect on platforms where screen coordinates and pixels +always map 1:1 such as Windows and X11. On platforms like macOS the resolution +of the framebuffer is changed independently of the window size. + +@anchor GLFW_MOUSE_PASSTHROUGH_hint +__GLFW_MOUSE_PASSTHROUGH__ specifies whether the window is transparent to mouse +input, letting any mouse events pass through to whatever window is behind it. +This is only supported for undecorated windows. Decorated windows with this +enabled will behave differently between platforms. Possible values are +`GLFW_TRUE` and `GLFW_FALSE`. + +@anchor GLFW_POSITION_X +@anchor GLFW_POSITION_Y +__GLFW_POSITION_X__ and __GLFW_POSITION_Y__ specify the desired initial position +of the window. The window manager may modify or ignore these coordinates. If +either or both of these hints are set to `GLFW_ANY_POSITION` then the window +manager will position the window where it thinks the user will prefer it. +Possible values are any valid screen coordinates and `GLFW_ANY_POSITION`. + + +@subsubsection window_hints_fb Framebuffer related hints + +@anchor GLFW_RED_BITS +@anchor GLFW_GREEN_BITS +@anchor GLFW_BLUE_BITS +@anchor GLFW_ALPHA_BITS +@anchor GLFW_DEPTH_BITS +@anchor GLFW_STENCIL_BITS +__GLFW_RED_BITS__, __GLFW_GREEN_BITS__, __GLFW_BLUE_BITS__, __GLFW_ALPHA_BITS__, +__GLFW_DEPTH_BITS__ and __GLFW_STENCIL_BITS__ specify the desired bit depths of +the various components of the default framebuffer. A value of `GLFW_DONT_CARE` +means the application has no preference. + +@anchor GLFW_ACCUM_RED_BITS +@anchor GLFW_ACCUM_GREEN_BITS +@anchor GLFW_ACCUM_BLUE_BITS +@anchor GLFW_ACCUM_ALPHA_BITS +__GLFW_ACCUM_RED_BITS__, __GLFW_ACCUM_GREEN_BITS__, __GLFW_ACCUM_BLUE_BITS__ and +__GLFW_ACCUM_ALPHA_BITS__ specify the desired bit depths of the various +components of the accumulation buffer. A value of `GLFW_DONT_CARE` means the +application has no preference. + +Accumulation buffers are a legacy OpenGL feature and should not be used in new +code. + +@anchor GLFW_AUX_BUFFERS +__GLFW_AUX_BUFFERS__ specifies the desired number of auxiliary buffers. A value +of `GLFW_DONT_CARE` means the application has no preference. + +Auxiliary buffers are a legacy OpenGL feature and should not be used in new +code. + +@anchor GLFW_STEREO +__GLFW_STEREO__ specifies whether to use OpenGL stereoscopic rendering. +Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This is a hard constraint. + +@anchor GLFW_SAMPLES +__GLFW_SAMPLES__ specifies the desired number of samples to use for +multisampling. Zero disables multisampling. A value of `GLFW_DONT_CARE` means +the application has no preference. + +@anchor GLFW_SRGB_CAPABLE +__GLFW_SRGB_CAPABLE__ specifies whether the framebuffer should be sRGB capable. +Possible values are `GLFW_TRUE` and `GLFW_FALSE`. + +@note __OpenGL:__ If enabled and supported by the system, the +`GL_FRAMEBUFFER_SRGB` enable will control sRGB rendering. By default, sRGB +rendering will be disabled. + +@note __OpenGL ES:__ If enabled and supported by the system, the context will +always have sRGB rendering enabled. + +@anchor GLFW_DOUBLEBUFFER +@anchor GLFW_DOUBLEBUFFER_hint +__GLFW_DOUBLEBUFFER__ specifies whether the framebuffer should be double +buffered. You nearly always want to use double buffering. This is a hard +constraint. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. + + +@subsubsection window_hints_mtr Monitor related hints + +@anchor GLFW_REFRESH_RATE +__GLFW_REFRESH_RATE__ specifies the desired refresh rate for full screen +windows. A value of `GLFW_DONT_CARE` means the highest available refresh rate +will be used. This hint is ignored for windowed mode windows. + + +@subsubsection window_hints_ctx Context related hints + +@anchor GLFW_CLIENT_API_hint +__GLFW_CLIENT_API__ specifies which client API to create the context for. +Possible values are `GLFW_OPENGL_API`, `GLFW_OPENGL_ES_API` and `GLFW_NO_API`. +This is a hard constraint. + +@anchor GLFW_CONTEXT_CREATION_API_hint +__GLFW_CONTEXT_CREATION_API__ specifies which context creation API to use to +create the context. Possible values are `GLFW_NATIVE_CONTEXT_API`, +`GLFW_EGL_CONTEXT_API` and `GLFW_OSMESA_CONTEXT_API`. This is a hard +constraint. If no client API is requested, this hint is ignored. + +An [extension loader library](@ref context_glext_auto) that assumes it knows +which API was used to create the current context may fail if you change this +hint. This can be resolved by having it load functions via @ref +glfwGetProcAddress. + +@note @wayland The EGL API _is_ the native context creation API, so this hint +will have no effect. + +@note @x11 On some Linux systems, creating contexts via both the native and EGL +APIs in a single process will cause the application to segfault. Stick to one +API or the other on Linux for now. + +@note __OSMesa:__ As its name implies, an OpenGL context created with OSMesa +does not update the window contents when its buffers are swapped. Use OpenGL +functions or the OSMesa native access functions @ref glfwGetOSMesaColorBuffer +and @ref glfwGetOSMesaDepthBuffer to retrieve the framebuffer contents. + +@anchor GLFW_CONTEXT_VERSION_MAJOR_hint +@anchor GLFW_CONTEXT_VERSION_MINOR_hint +__GLFW_CONTEXT_VERSION_MAJOR__ and __GLFW_CONTEXT_VERSION_MINOR__ specify the +client API version that the created context must be compatible with. The exact +behavior of these hints depend on the requested client API. + +While there is no way to ask the driver for a context of the highest supported +version, GLFW will attempt to provide this when you ask for a version 1.0 +context, which is the default for these hints. + +Do not confuse these hints with @ref GLFW_VERSION_MAJOR and @ref +GLFW_VERSION_MINOR, which provide the API version of the GLFW header. + +@note __OpenGL:__ These hints are not hard constraints, but creation will fail +if the OpenGL version of the created context is less than the one requested. It +is therefore perfectly safe to use the default of version 1.0 for legacy code +and you will still get backwards-compatible contexts of version 3.0 and above +when available. + +@note __OpenGL ES:__ These hints are not hard constraints, but creation will +fail if the OpenGL ES version of the created context is less than the one +requested. Additionally, OpenGL ES 1.x cannot be returned if 2.0 or later was +requested, and vice versa. This is because OpenGL ES 3.x is backward compatible +with 2.0, but OpenGL ES 2.0 is not backward compatible with 1.x. + +@note @macos The OS only supports core profile contexts for OpenGL versions 3.2 +and later. Before creating an OpenGL context of version 3.2 or later you must +set the [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) hint accordingly. +OpenGL 3.0 and 3.1 contexts are not supported at all on macOS. + +@anchor GLFW_OPENGL_FORWARD_COMPAT_hint +__GLFW_OPENGL_FORWARD_COMPAT__ specifies whether the OpenGL context should be +forward-compatible, i.e. one where all functionality deprecated in the requested +version of OpenGL is removed. This must only be used if the requested OpenGL +version is 3.0 or above. If OpenGL ES is requested, this hint is ignored. + +Forward-compatibility is described in detail in the +[OpenGL Reference Manual](https://www.opengl.org/registry/). + +@anchor GLFW_CONTEXT_DEBUG_hint +@anchor GLFW_OPENGL_DEBUG_CONTEXT_hint +__GLFW_CONTEXT_DEBUG__ specifies whether the context should be created in debug +mode, which may provide additional error and diagnostic reporting functionality. +Possible values are `GLFW_TRUE` and `GLFW_FALSE`. + +Debug contexts for OpenGL and OpenGL ES are described in detail by the +[GL_KHR_debug](https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt) +extension. + +@note `GLFW_CONTEXT_DEBUG` is the new name introduced in GLFW 3.4. The older +`GLFW_OPENGL_DEBUG_CONTEXT` name is also available for compatibility. + +@anchor GLFW_OPENGL_PROFILE_hint +__GLFW_OPENGL_PROFILE__ specifies which OpenGL profile to create the context +for. Possible values are one of `GLFW_OPENGL_CORE_PROFILE` or +`GLFW_OPENGL_COMPAT_PROFILE`, or `GLFW_OPENGL_ANY_PROFILE` to not request +a specific profile. If requesting an OpenGL version below 3.2, +`GLFW_OPENGL_ANY_PROFILE` must be used. If OpenGL ES is requested, this hint +is ignored. + +OpenGL profiles are described in detail in the +[OpenGL Reference Manual](https://www.opengl.org/registry/). + +@anchor GLFW_CONTEXT_ROBUSTNESS_hint +__GLFW_CONTEXT_ROBUSTNESS__ specifies the robustness strategy to be used by the +context. This can be one of `GLFW_NO_RESET_NOTIFICATION` or +`GLFW_LOSE_CONTEXT_ON_RESET`, or `GLFW_NO_ROBUSTNESS` to not request +a robustness strategy. + +@anchor GLFW_CONTEXT_RELEASE_BEHAVIOR_hint +__GLFW_CONTEXT_RELEASE_BEHAVIOR__ specifies the release behavior to be +used by the context. Possible values are one of `GLFW_ANY_RELEASE_BEHAVIOR`, +`GLFW_RELEASE_BEHAVIOR_FLUSH` or `GLFW_RELEASE_BEHAVIOR_NONE`. If the +behavior is `GLFW_ANY_RELEASE_BEHAVIOR`, the default behavior of the context +creation API will be used. If the behavior is `GLFW_RELEASE_BEHAVIOR_FLUSH`, +the pipeline will be flushed whenever the context is released from being the +current one. If the behavior is `GLFW_RELEASE_BEHAVIOR_NONE`, the pipeline will +not be flushed on release. + +Context release behaviors are described in detail by the +[GL_KHR_context_flush_control](https://www.opengl.org/registry/specs/KHR/context_flush_control.txt) +extension. + +@anchor GLFW_CONTEXT_NO_ERROR_hint +__GLFW_CONTEXT_NO_ERROR__ specifies whether errors should be generated by the +context. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. If enabled, +situations that would have generated errors instead cause undefined behavior. + +The no error mode for OpenGL and OpenGL ES is described in detail by the +[GL_KHR_no_error](https://www.opengl.org/registry/specs/KHR/no_error.txt) +extension. + + +@subsubsection window_hints_win32 Win32 specific hints + +@anchor GLFW_WIN32_KEYBOARD_MENU_hint +__GLFW_WIN32_KEYBOARD_MENU__ specifies whether to allow access to the window +menu via the Alt+Space and Alt-and-then-Space keyboard shortcuts. This is +ignored on other platforms. + + +@subsubsection window_hints_osx macOS specific hints + +@anchor GLFW_COCOA_RETINA_FRAMEBUFFER_hint +__GLFW_COCOA_RETINA_FRAMEBUFFER__ specifies whether to use full resolution +framebuffers on Retina displays. Possible values are `GLFW_TRUE` and +`GLFW_FALSE`. This is ignored on other platforms. + +@anchor GLFW_COCOA_FRAME_NAME_hint +__GLFW_COCOA_FRAME_NAME__ specifies the UTF-8 encoded name to use for autosaving +the window frame, or if empty disables frame autosaving for the window. This is +ignored on other platforms. This is set with @ref glfwWindowHintString. + +@anchor GLFW_COCOA_GRAPHICS_SWITCHING_hint +__GLFW_COCOA_GRAPHICS_SWITCHING__ specifies whether to in Automatic Graphics +Switching, i.e. to allow the system to choose the integrated GPU for the OpenGL +context and move it between GPUs if necessary or whether to force it to always +run on the discrete GPU. This only affects systems with both integrated and +discrete GPUs. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This is +ignored on other platforms. + +Simpler programs and tools may want to enable this to save power, while games +and other applications performing advanced rendering will want to leave it +disabled. + +A bundled application that wishes to participate in Automatic Graphics Switching +should also declare this in its `Info.plist` by setting the +`NSSupportsAutomaticGraphicsSwitching` key to `true`. + + +@subsubsection window_hints_x11 X11 specific window hints + +@anchor GLFW_X11_CLASS_NAME_hint +@anchor GLFW_X11_INSTANCE_NAME_hint +__GLFW_X11_CLASS_NAME__ and __GLFW_X11_INSTANCE_NAME__ specifies the desired +ASCII encoded class and instance parts of the ICCCM `WM_CLASS` window property. Both +hints need to be set to something other than an empty string for them to take effect. +These are set with @ref glfwWindowHintString. + +@subsubsection window_hints_wayland Wayland specific window hints + +@anchor GLFW_WAYLAND_APP_ID_hint +__GLFW_WAYLAND_APP_ID__ specifies the Wayland app_id for a window, used +by window managers to identify types of windows. This is set with +@ref glfwWindowHintString. + + +@subsubsection window_hints_values Supported and default values + +Window hint | Default value | Supported values +----------------------------- | --------------------------- | ---------------- +GLFW_RESIZABLE | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_VISIBLE | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_DECORATED | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_FOCUSED | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_AUTO_ICONIFY | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_FLOATING | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_MAXIMIZED | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_CENTER_CURSOR | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_TRANSPARENT_FRAMEBUFFER | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_FOCUS_ON_SHOW | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_SCALE_TO_MONITOR | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_MOUSE_PASSTHROUGH | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_POSITION_X | `GLFW_ANY_POSITION` | Any valid screen x-coordinate or `GLFW_ANY_POSITION` +GLFW_POSITION_Y | `GLFW_ANY_POSITION` | Any valid screen y-coordinate or `GLFW_ANY_POSITION` +GLFW_RED_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_GREEN_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_BLUE_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_ALPHA_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_DEPTH_BITS | 24 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_STENCIL_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_ACCUM_RED_BITS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_ACCUM_GREEN_BITS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_ACCUM_BLUE_BITS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_ACCUM_ALPHA_BITS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_AUX_BUFFERS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_SAMPLES | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_REFRESH_RATE | `GLFW_DONT_CARE` | 0 to `INT_MAX` or `GLFW_DONT_CARE` +GLFW_STEREO | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_SRGB_CAPABLE | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_DOUBLEBUFFER | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_CLIENT_API | `GLFW_OPENGL_API` | `GLFW_OPENGL_API`, `GLFW_OPENGL_ES_API` or `GLFW_NO_API` +GLFW_CONTEXT_CREATION_API | `GLFW_NATIVE_CONTEXT_API` | `GLFW_NATIVE_CONTEXT_API`, `GLFW_EGL_CONTEXT_API` or `GLFW_OSMESA_CONTEXT_API` +GLFW_CONTEXT_VERSION_MAJOR | 1 | Any valid major version number of the chosen client API +GLFW_CONTEXT_VERSION_MINOR | 0 | Any valid minor version number of the chosen client API +GLFW_CONTEXT_ROBUSTNESS | `GLFW_NO_ROBUSTNESS` | `GLFW_NO_ROBUSTNESS`, `GLFW_NO_RESET_NOTIFICATION` or `GLFW_LOSE_CONTEXT_ON_RESET` +GLFW_CONTEXT_RELEASE_BEHAVIOR | `GLFW_ANY_RELEASE_BEHAVIOR` | `GLFW_ANY_RELEASE_BEHAVIOR`, `GLFW_RELEASE_BEHAVIOR_FLUSH` or `GLFW_RELEASE_BEHAVIOR_NONE` +GLFW_OPENGL_FORWARD_COMPAT | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_CONTEXT_DEBUG | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_OPENGL_PROFILE | `GLFW_OPENGL_ANY_PROFILE` | `GLFW_OPENGL_ANY_PROFILE`, `GLFW_OPENGL_COMPAT_PROFILE` or `GLFW_OPENGL_CORE_PROFILE` +GLFW_WIN32_KEYBOARD_MENU | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_COCOA_RETINA_FRAMEBUFFER | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_COCOA_FRAME_NAME | `""` | A UTF-8 encoded frame autosave name +GLFW_COCOA_GRAPHICS_SWITCHING | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +GLFW_X11_CLASS_NAME | `""` | An ASCII encoded `WM_CLASS` class name +GLFW_X11_INSTANCE_NAME | `""` | An ASCII encoded `WM_CLASS` instance name +GLFW_WAYLAND_APP_ID | `""` | An ASCII encoded Wayland `app_id` name + + +@section window_events Window event processing + +See @ref events. + + +@section window_properties Window properties and events + +@subsection window_userptr User pointer + +Each window has a user pointer that can be set with @ref +glfwSetWindowUserPointer and queried with @ref glfwGetWindowUserPointer. This +can be used for any purpose you need and will not be modified by GLFW throughout +the life-time of the window. + +The initial value of the pointer is `NULL`. + + +@subsection window_close Window closing and close flag + +When the user attempts to close the window, for example by clicking the close +widget or using a key chord like Alt+F4, the _close flag_ of the window is set. +The window is however not actually destroyed and, unless you watch for this +state change, nothing further happens. + +The current state of the close flag is returned by @ref glfwWindowShouldClose +and can be set or cleared directly with @ref glfwSetWindowShouldClose. A common +pattern is to use the close flag as a main loop condition. + +@code +while (!glfwWindowShouldClose(window)) +{ + render(window); + + glfwSwapBuffers(window); + glfwPollEvents(); +} +@endcode + +If you wish to be notified when the user attempts to close a window, set a close +callback. + +@code +glfwSetWindowCloseCallback(window, window_close_callback); +@endcode + +The callback function is called directly _after_ the close flag has been set. +It can be used for example to filter close requests and clear the close flag +again unless certain conditions are met. + +@code +void window_close_callback(GLFWwindow* window) +{ + if (!time_to_close) + glfwSetWindowShouldClose(window, GLFW_FALSE); +} +@endcode + + +@subsection window_size Window size + +The size of a window can be changed with @ref glfwSetWindowSize. For windowed +mode windows, this sets the size, in +[screen coordinates](@ref coordinate_systems) of the _content area_ or _content +area_ of the window. The window system may impose limits on window size. + +@code +glfwSetWindowSize(window, 640, 480); +@endcode + +For full screen windows, the specified size becomes the new resolution of the +window's desired video mode. The video mode most closely matching the new +desired video mode is set immediately. The window is resized to fit the +resolution of the set video mode. + +If you wish to be notified when a window is resized, whether by the user, the +system or your own code, set a size callback. + +@code +glfwSetWindowSizeCallback(window, window_size_callback); +@endcode + +The callback function receives the new size, in screen coordinates, of the +content area of the window when the window is resized. + +@code +void window_size_callback(GLFWwindow* window, int width, int height) +{ +} +@endcode + +There is also @ref glfwGetWindowSize for directly retrieving the current size of +a window. + +@code +int width, height; +glfwGetWindowSize(window, &width, &height); +@endcode + +@note Do not pass the window size to `glViewport` or other pixel-based OpenGL +calls. The window size is in screen coordinates, not pixels. Use the +[framebuffer size](@ref window_fbsize), which is in pixels, for pixel-based +calls. + +The above functions work with the size of the content area, but decorated +windows typically have title bars and window frames around this rectangle. You +can retrieve the extents of these with @ref glfwGetWindowFrameSize. + +@code +int left, top, right, bottom; +glfwGetWindowFrameSize(window, &left, &top, &right, &bottom); +@endcode + +The returned values are the distances, in screen coordinates, from the edges of +the content area to the corresponding edges of the full window. As they are +distances and not coordinates, they are always zero or positive. + + +@subsection window_fbsize Framebuffer size + +While the size of a window is measured in screen coordinates, OpenGL works with +pixels. The size you pass into `glViewport`, for example, should be in pixels. +On some machines screen coordinates and pixels are the same, but on others they +will not be. There is a second set of functions to retrieve the size, in +pixels, of the framebuffer of a window. + +If you wish to be notified when the framebuffer of a window is resized, whether +by the user or the system, set a size callback. + +@code +glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); +@endcode + +The callback function receives the new size of the framebuffer when it is +resized, which can for example be used to update the OpenGL viewport. + +@code +void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + glViewport(0, 0, width, height); +} +@endcode + +There is also @ref glfwGetFramebufferSize for directly retrieving the current +size of the framebuffer of a window. + +@code +int width, height; +glfwGetFramebufferSize(window, &width, &height); +glViewport(0, 0, width, height); +@endcode + +The size of a framebuffer may change independently of the size of a window, for +example if the window is dragged between a regular monitor and a high-DPI one. + + +@subsection window_scale Window content scale + +The content scale for a window can be retrieved with @ref +glfwGetWindowContentScale. + +@code +float xscale, yscale; +glfwGetWindowContentScale(window, &xscale, &yscale); +@endcode + +The content scale is the ratio between the current DPI and the platform's +default DPI. This is especially important for text and any UI elements. If the +pixel dimensions of your UI scaled by this look appropriate on your machine then +it should appear at a reasonable size on other machines regardless of their DPI +and scaling settings. This relies on the system DPI and scaling settings being +somewhat correct. + +On systems where each monitors can have its own content scale, the window +content scale will depend on which monitor the system considers the window to be +on. + +If you wish to be notified when the content scale of a window changes, whether +because of a system setting change or because it was moved to a monitor with +a different scale, set a content scale callback. + +@code +glfwSetWindowContentScaleCallback(window, window_content_scale_callback); +@endcode + +The callback function receives the new content scale of the window. + +@code +void window_content_scale_callback(GLFWwindow* window, float xscale, float yscale) +{ + set_interface_scale(xscale, yscale); +} +@endcode + +On platforms where pixels and screen coordinates always map 1:1, the window +will need to be resized to appear the same size when it is moved to a monitor +with a different content scale. To have this done automatically both when the +window is created and when its content scale later changes, set the @ref +GLFW_SCALE_TO_MONITOR window hint. + + +@subsection window_sizelimits Window size limits + +The minimum and maximum size of the content area of a windowed mode window can +be enforced with @ref glfwSetWindowSizeLimits. The user may resize the window +to any size and aspect ratio within the specified limits, unless the aspect +ratio is also set. + +@code +glfwSetWindowSizeLimits(window, 200, 200, 400, 400); +@endcode + +To specify only a minimum size or only a maximum one, set the other pair to +`GLFW_DONT_CARE`. + +@code +glfwSetWindowSizeLimits(window, 640, 480, GLFW_DONT_CARE, GLFW_DONT_CARE); +@endcode + +To disable size limits for a window, set them all to `GLFW_DONT_CARE`. + +The aspect ratio of the content area of a windowed mode window can be enforced +with @ref glfwSetWindowAspectRatio. The user may resize the window freely +unless size limits are also set, but the size will be constrained to maintain +the aspect ratio. + +@code +glfwSetWindowAspectRatio(window, 16, 9); +@endcode + +The aspect ratio is specified as a numerator and denominator, corresponding to +the width and height, respectively. If you want a window to maintain its +current aspect ratio, use its current size as the ratio. + +@code +int width, height; +glfwGetWindowSize(window, &width, &height); +glfwSetWindowAspectRatio(window, width, height); +@endcode + +To disable the aspect ratio limit for a window, set both terms to +`GLFW_DONT_CARE`. + +You can have both size limits and aspect ratio set for a window, but the results +are undefined if they conflict. + + +@subsection window_pos Window position + +By default, the window manager chooses the position of new windowed mode +windows, based on its size and which monitor the user appears to be working on. +This is most often the right choice. If you need to create a window at +a specific position, you can set the desired position with the @ref +GLFW_POSITION_X and @ref GLFW_POSITION_Y window hints. + +@code +glfwWindowHint(GLFW_POSITION_X, 70); +glfwWindowHint(GLFW_POSITION_Y, 83); +@endcode + +To restore the previous behavior, set these hints to `GLFW_ANY_POSITION`. + +The position of a windowed mode window can be changed with @ref +glfwSetWindowPos. This moves the window so that the upper-left corner of its +content area has the specified [screen coordinates](@ref coordinate_systems). +The window system may put limitations on window placement. + +@code +glfwSetWindowPos(window, 100, 100); +@endcode + +If you wish to be notified when a window is moved, whether by the user, the +system or your own code, set a position callback. + +@code +glfwSetWindowPosCallback(window, window_pos_callback); +@endcode + +The callback function receives the new position, in screen coordinates, of the +upper-left corner of the content area when the window is moved. + +@code +void window_pos_callback(GLFWwindow* window, int xpos, int ypos) +{ +} +@endcode + +There is also @ref glfwGetWindowPos for directly retrieving the current position +of the content area of the window. + +@code +int xpos, ypos; +glfwGetWindowPos(window, &xpos, &ypos); +@endcode + + +@subsection window_title Window title + +All GLFW windows have a title, although undecorated or full screen windows may +not display it or only display it in a task bar or similar interface. You can +set a UTF-8 encoded window title with @ref glfwSetWindowTitle. + +@code +glfwSetWindowTitle(window, "My Window"); +@endcode + +The specified string is copied before the function returns, so there is no need +to keep it around. + +As long as your source file is encoded as UTF-8, you can use any Unicode +characters directly in the source. + +@code +glfwSetWindowTitle(window, "ラストエグザイル"); +@endcode + +If you are using C++11 or C11, you can use a UTF-8 string literal. + +@code +glfwSetWindowTitle(window, u8"This is always a UTF-8 string"); +@endcode + + +@subsection window_icon Window icon + +Decorated windows have icons on some platforms. You can set this icon by +specifying a list of candidate images with @ref glfwSetWindowIcon. + +@code +GLFWimage images[2]; +images[0] = load_icon("my_icon.png"); +images[1] = load_icon("my_icon_small.png"); + +glfwSetWindowIcon(window, 2, images); +@endcode + +The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits +per channel with the red channel first. The pixels are arranged canonically as +sequential rows, starting from the top-left corner. + +To revert to the default window icon, pass in an empty image array. + +@code +glfwSetWindowIcon(window, 0, NULL); +@endcode + + +@subsection window_monitor Window monitor + +Full screen windows are associated with a specific monitor. You can get the +handle for this monitor with @ref glfwGetWindowMonitor. + +@code +GLFWmonitor* monitor = glfwGetWindowMonitor(window); +@endcode + +This monitor handle is one of those returned by @ref glfwGetMonitors. + +For windowed mode windows, this function returns `NULL`. This is how to tell +full screen windows from windowed mode windows. + +You can move windows between monitors or between full screen and windowed mode +with @ref glfwSetWindowMonitor. When making a window full screen on the same or +on a different monitor, specify the desired monitor, resolution and refresh +rate. The position arguments are ignored. + +@code +const GLFWvidmode* mode = glfwGetVideoMode(monitor); + +glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate); +@endcode + +When making the window windowed, specify the desired position and size. The +refresh rate argument is ignored. + +@code +glfwSetWindowMonitor(window, NULL, xpos, ypos, width, height, 0); +@endcode + +This restores any previous window settings such as whether it is decorated, +floating, resizable, has size or aspect ratio limits, etc.. To restore a window +that was originally windowed to its original size and position, save these +before making it full screen and then pass them in as above. + + +@subsection window_iconify Window iconification + +Windows can be iconified (i.e. minimized) with @ref glfwIconifyWindow. + +@code +glfwIconifyWindow(window); +@endcode + +When a full screen window is iconified, the original video mode of its monitor +is restored until the user or application restores the window. + +Iconified windows can be restored with @ref glfwRestoreWindow. This function +also restores windows from maximization. + +@code +glfwRestoreWindow(window); +@endcode + +When a full screen window is restored, the desired video mode is restored to its +monitor as well. + +If you wish to be notified when a window is iconified or restored, whether by +the user, system or your own code, set an iconify callback. + +@code +glfwSetWindowIconifyCallback(window, window_iconify_callback); +@endcode + +The callback function receives changes in the iconification state of the window. + +@code +void window_iconify_callback(GLFWwindow* window, int iconified) +{ + if (iconified) + { + // The window was iconified + } + else + { + // The window was restored + } +} +@endcode + +You can also get the current iconification state with @ref glfwGetWindowAttrib. + +@code +int iconified = glfwGetWindowAttrib(window, GLFW_ICONIFIED); +@endcode + + +@subsection window_maximize Window maximization + +Windows can be maximized (i.e. zoomed) with @ref glfwMaximizeWindow. + +@code +glfwMaximizeWindow(window); +@endcode + +Full screen windows cannot be maximized and passing a full screen window to this +function does nothing. + +Maximized windows can be restored with @ref glfwRestoreWindow. This function +also restores windows from iconification. + +@code +glfwRestoreWindow(window); +@endcode + +If you wish to be notified when a window is maximized or restored, whether by +the user, system or your own code, set a maximize callback. + +@code +glfwSetWindowMaximizeCallback(window, window_maximize_callback); +@endcode + +The callback function receives changes in the maximization state of the window. + +@code +void window_maximize_callback(GLFWwindow* window, int maximized) +{ + if (maximized) + { + // The window was maximized + } + else + { + // The window was restored + } +} +@endcode + +You can also get the current maximization state with @ref glfwGetWindowAttrib. + +@code +int maximized = glfwGetWindowAttrib(window, GLFW_MAXIMIZED); +@endcode + +By default, newly created windows are not maximized. You can change this +behavior by setting the [GLFW_MAXIMIZED](@ref GLFW_MAXIMIZED_hint) window hint +before creating the window. + +@code +glfwWindowHint(GLFW_MAXIMIZED, GLFW_TRUE); +@endcode + + +@subsection window_hide Window visibility + +Windowed mode windows can be hidden with @ref glfwHideWindow. + +@code +glfwHideWindow(window); +@endcode + +This makes the window completely invisible to the user, including removing it +from the task bar, dock or window list. Full screen windows cannot be hidden +and calling @ref glfwHideWindow on a full screen window does nothing. + +Hidden windows can be shown with @ref glfwShowWindow. + +@code +glfwShowWindow(window); +@endcode + +By default, this function will also set the input focus to that window. Set +the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint to change +this behavior for all newly created windows, or change the behavior for an +existing window with @ref glfwSetWindowAttrib. + +You can also get the current visibility state with @ref glfwGetWindowAttrib. + +@code +int visible = glfwGetWindowAttrib(window, GLFW_VISIBLE); +@endcode + +By default, newly created windows are visible. You can change this behavior by +setting the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window hint before creating +the window. + +@code +glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); +@endcode + +Windows created hidden are completely invisible to the user until shown. This +can be useful if you need to set up your window further before showing it, for +example moving it to a specific location. + + +@subsection window_focus Window input focus + +Windows can be given input focus and brought to the front with @ref +glfwFocusWindow. + +@code +glfwFocusWindow(window); +@endcode + +Keep in mind that it can be very disruptive to the user when a window is forced +to the top. For a less disruptive way of getting the user's attention, see +[attention requests](@ref window_attention). + +If you wish to be notified when a window gains or loses input focus, whether by +the user, system or your own code, set a focus callback. + +@code +glfwSetWindowFocusCallback(window, window_focus_callback); +@endcode + +The callback function receives changes in the input focus state of the window. + +@code +void window_focus_callback(GLFWwindow* window, int focused) +{ + if (focused) + { + // The window gained input focus + } + else + { + // The window lost input focus + } +} +@endcode + +You can also get the current input focus state with @ref glfwGetWindowAttrib. + +@code +int focused = glfwGetWindowAttrib(window, GLFW_FOCUSED); +@endcode + +By default, newly created windows are given input focus. You can change this +behavior by setting the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) window hint +before creating the window. + +@code +glfwWindowHint(GLFW_FOCUSED, GLFW_FALSE); +@endcode + + +@subsection window_attention Window attention request + +If you wish to notify the user of an event without interrupting, you can request +attention with @ref glfwRequestWindowAttention. + +@code +glfwRequestWindowAttention(window); +@endcode + +The system will highlight the specified window, or on platforms where this is +not supported, the application as a whole. Once the user has given it +attention, the system will automatically end the request. + + +@subsection window_refresh Window damage and refresh + +If you wish to be notified when the contents of a window is damaged and needs +to be refreshed, set a window refresh callback. + +@code +glfwSetWindowRefreshCallback(m_handle, window_refresh_callback); +@endcode + +The callback function is called when the contents of the window needs to be +refreshed. + +@code +void window_refresh_callback(GLFWwindow* window) +{ + draw_editor_ui(window); + glfwSwapBuffers(window); +} +@endcode + +@note On compositing window systems such as Aero, Compiz or Aqua, where the +window contents are saved off-screen, this callback might only be called when +the window or framebuffer is resized. + + +@subsection window_transparency Window transparency + +GLFW supports two kinds of transparency for windows; framebuffer transparency +and whole window transparency. A single window may not use both methods. The +results of doing this are undefined. + +Both methods require the platform to support it and not every version of every +platform GLFW supports does this, so there are mechanisms to check whether the +window really is transparent. + +Window framebuffers can be made transparent on a per-pixel per-frame basis with +the [GLFW_TRANSPARENT_FRAMEBUFFER](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) +window hint. + +@code +glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE); +@endcode + +If supported by the system, the window content area will be composited with the +background using the framebuffer per-pixel alpha channel. This requires desktop +compositing to be enabled on the system. It does not affect window decorations. + +You can check whether the window framebuffer was successfully made transparent +with the +[GLFW_TRANSPARENT_FRAMEBUFFER](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib) +window attribute. + +@code +if (glfwGetWindowAttrib(window, GLFW_TRANSPARENT_FRAMEBUFFER)) +{ + // window framebuffer is currently transparent +} +@endcode + +GLFW comes with an example that enabled framebuffer transparency called `gears`. + +The opacity of the whole window, including any decorations, can be set with @ref +glfwSetWindowOpacity. + +@code +glfwSetWindowOpacity(window, 0.5f); +@endcode + +The opacity (or alpha) value is a positive finite number between zero and one, +where 0 (zero) is fully transparent and 1 (one) is fully opaque. The initial +opacity value for newly created windows is 1. + +The current opacity of a window can be queried with @ref glfwGetWindowOpacity. + +@code +float opacity = glfwGetWindowOpacity(window); +@endcode + +If the system does not support whole window transparency, this function always +returns one. + +GLFW comes with a test program that lets you control whole window transparency +at run-time called `window`. + +If you want to use either of these transparency methods to display a temporary +overlay like for example a notification, the @ref GLFW_FLOATING and @ref +GLFW_MOUSE_PASSTHROUGH window hints and attributes may be useful. + + +@subsection window_attribs Window attributes + +Windows have a number of attributes that can be returned using @ref +glfwGetWindowAttrib. Some reflect state that may change as a result of user +interaction, (e.g. whether it has input focus), while others reflect inherent +properties of the window (e.g. what kind of border it has). Some are related to +the window and others to its OpenGL or OpenGL ES context. + +@code +if (glfwGetWindowAttrib(window, GLFW_FOCUSED)) +{ + // window has input focus +} +@endcode + +The [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), +[GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), +[GLFW_FLOATING](@ref GLFW_FLOATING_attrib), +[GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and +[GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib) window attributes can be +changed with @ref glfwSetWindowAttrib. + +@code +glfwSetWindowAttrib(window, GLFW_RESIZABLE, GLFW_FALSE); +@endcode + + + +@subsubsection window_attribs_wnd Window related attributes + +@anchor GLFW_FOCUSED_attrib +__GLFW_FOCUSED__ indicates whether the specified window has input focus. See +@ref window_focus for details. + +@anchor GLFW_ICONIFIED_attrib +__GLFW_ICONIFIED__ indicates whether the specified window is iconified. +See @ref window_iconify for details. + +@anchor GLFW_MAXIMIZED_attrib +__GLFW_MAXIMIZED__ indicates whether the specified window is maximized. See +@ref window_maximize for details. + +@anchor GLFW_HOVERED_attrib +__GLFW_HOVERED__ indicates whether the cursor is currently directly over the +content area of the window, with no other windows between. See @ref +cursor_enter for details. + +@anchor GLFW_VISIBLE_attrib +__GLFW_VISIBLE__ indicates whether the specified window is visible. See @ref +window_hide for details. + +@anchor GLFW_RESIZABLE_attrib +__GLFW_RESIZABLE__ indicates whether the specified window is resizable _by the +user_. This can be set before creation with the +[GLFW_RESIZABLE](@ref GLFW_RESIZABLE_hint) window hint or after with @ref +glfwSetWindowAttrib. + +@anchor GLFW_DECORATED_attrib +__GLFW_DECORATED__ indicates whether the specified window has decorations such +as a border, a close widget, etc. This can be set before creation with the +[GLFW_DECORATED](@ref GLFW_DECORATED_hint) window hint or after with @ref +glfwSetWindowAttrib. + +@anchor GLFW_AUTO_ICONIFY_attrib +__GLFW_AUTO_ICONIFY__ indicates whether the specified full screen window is +iconified on focus loss, a close widget, etc. This can be set before creation +with the [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint or after +with @ref glfwSetWindowAttrib. + +@anchor GLFW_FLOATING_attrib +__GLFW_FLOATING__ indicates whether the specified window is floating, also +called topmost or always-on-top. This can be set before creation with the +[GLFW_FLOATING](@ref GLFW_FLOATING_hint) window hint or after with @ref +glfwSetWindowAttrib. + +@anchor GLFW_TRANSPARENT_FRAMEBUFFER_attrib +__GLFW_TRANSPARENT_FRAMEBUFFER__ indicates whether the specified window has +a transparent framebuffer, i.e. the window contents is composited with the +background using the window framebuffer alpha channel. See @ref +window_transparency for details. + +@anchor GLFW_FOCUS_ON_SHOW_attrib +__GLFW_FOCUS_ON_SHOW__ specifies whether the window will be given input +focus when @ref glfwShowWindow is called. This can be set before creation +with the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint or +after with @ref glfwSetWindowAttrib. + +@anchor GLFW_MOUSE_PASSTHROUGH_attrib +__GLFW_MOUSE_PASSTHROUGH__ specifies whether the window is transparent to mouse +input, letting any mouse events pass through to whatever window is behind it. +This can be set before creation with the +[GLFW_MOUSE_PASSTHROUGH](@ref GLFW_MOUSE_PASSTHROUGH_hint) window hint or after +with @ref glfwSetWindowAttrib. This is only supported for undecorated windows. +Decorated windows with this enabled will behave differently between platforms. + + +@subsubsection window_attribs_ctx Context related attributes + +@anchor GLFW_CLIENT_API_attrib +__GLFW_CLIENT_API__ indicates the client API provided by the window's context; +either `GLFW_OPENGL_API`, `GLFW_OPENGL_ES_API` or `GLFW_NO_API`. + +@anchor GLFW_CONTEXT_CREATION_API_attrib +__GLFW_CONTEXT_CREATION_API__ indicates the context creation API used to create +the window's context; either `GLFW_NATIVE_CONTEXT_API`, `GLFW_EGL_CONTEXT_API` +or `GLFW_OSMESA_CONTEXT_API`. + +@anchor GLFW_CONTEXT_VERSION_MAJOR_attrib +@anchor GLFW_CONTEXT_VERSION_MINOR_attrib +@anchor GLFW_CONTEXT_REVISION_attrib +__GLFW_CONTEXT_VERSION_MAJOR__, __GLFW_CONTEXT_VERSION_MINOR__ and +__GLFW_CONTEXT_REVISION__ indicate the client API version of the window's +context. + +@note Do not confuse these attributes with `GLFW_VERSION_MAJOR`, +`GLFW_VERSION_MINOR` and `GLFW_VERSION_REVISION` which provide the API version +of the GLFW header. + +@anchor GLFW_OPENGL_FORWARD_COMPAT_attrib +__GLFW_OPENGL_FORWARD_COMPAT__ is `GLFW_TRUE` if the window's context is an +OpenGL forward-compatible one, or `GLFW_FALSE` otherwise. + +@anchor GLFW_CONTEXT_DEBUG_attrib +@anchor GLFW_OPENGL_DEBUG_CONTEXT_attrib +__GLFW_CONTEXT_DEBUG__ is `GLFW_TRUE` if the window's context is in debug +mode, or `GLFW_FALSE` otherwise. + +@par +This is the new name, introduced in GLFW 3.4. The older +`GLFW_OPENGL_DEBUG_CONTEXT` name is also available for compatibility. + +@anchor GLFW_OPENGL_PROFILE_attrib +__GLFW_OPENGL_PROFILE__ indicates the OpenGL profile used by the context. This +is `GLFW_OPENGL_CORE_PROFILE` or `GLFW_OPENGL_COMPAT_PROFILE` if the context +uses a known profile, or `GLFW_OPENGL_ANY_PROFILE` if the OpenGL profile is +unknown or the context is an OpenGL ES context. Note that the returned profile +may not match the profile bits of the context flags, as GLFW will try other +means of detecting the profile when no bits are set. + +@anchor GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib +__GLFW_CONTEXT_RELEASE_BEHAVIOR__ indicates the release used by the context. +Possible values are one of `GLFW_ANY_RELEASE_BEHAVIOR`, +`GLFW_RELEASE_BEHAVIOR_FLUSH` or `GLFW_RELEASE_BEHAVIOR_NONE`. If the +behavior is `GLFW_ANY_RELEASE_BEHAVIOR`, the default behavior of the context +creation API will be used. If the behavior is `GLFW_RELEASE_BEHAVIOR_FLUSH`, +the pipeline will be flushed whenever the context is released from being the +current one. If the behavior is `GLFW_RELEASE_BEHAVIOR_NONE`, the pipeline will +not be flushed on release. + +@anchor GLFW_CONTEXT_NO_ERROR_attrib +__GLFW_CONTEXT_NO_ERROR__ indicates whether errors are generated by the context. +Possible values are `GLFW_TRUE` and `GLFW_FALSE`. If enabled, situations that +would have generated errors instead cause undefined behavior. + +@anchor GLFW_CONTEXT_ROBUSTNESS_attrib +__GLFW_CONTEXT_ROBUSTNESS__ indicates the robustness strategy used by the +context. This is `GLFW_LOSE_CONTEXT_ON_RESET` or `GLFW_NO_RESET_NOTIFICATION` +if the window's context supports robustness, or `GLFW_NO_ROBUSTNESS` otherwise. + + +@subsubsection window_attribs_fb Framebuffer related attributes + +GLFW does not expose most attributes of the default framebuffer (i.e. the +framebuffer attached to the window) as these can be queried directly with either +OpenGL, OpenGL ES or Vulkan. The one exception is +[GLFW_DOUBLEBUFFER](@ref GLFW_DOUBLEBUFFER_attrib), as this is not provided by +OpenGL ES. + +If you are using version 3.0 or later of OpenGL or OpenGL ES, the +`glGetFramebufferAttachmentParameteriv` function can be used to retrieve the +number of bits for the red, green, blue, alpha, depth and stencil buffer +channels. Otherwise, the `glGetIntegerv` function can be used. + +The number of MSAA samples are always retrieved with `glGetIntegerv`. For +contexts supporting framebuffer objects, the number of samples of the currently +bound framebuffer is returned. + +Attribute | glGetIntegerv | glGetFramebufferAttachmentParameteriv +------------ | ----------------- | ------------------------------------- +Red bits | `GL_RED_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE` +Green bits | `GL_GREEN_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE` +Blue bits | `GL_BLUE_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE` +Alpha bits | `GL_ALPHA_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE` +Depth bits | `GL_DEPTH_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE` +Stencil bits | `GL_STENCIL_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE` +MSAA samples | `GL_SAMPLES` | _Not provided by this function_ + +When calling `glGetFramebufferAttachmentParameteriv`, the red, green, blue and +alpha sizes are queried from the `GL_BACK_LEFT`, while the depth and stencil +sizes are queried from the `GL_DEPTH` and `GL_STENCIL` attachments, +respectively. + +@anchor GLFW_DOUBLEBUFFER_attrib +__GLFW_DOUBLEBUFFER__ indicates whether the specified window is double-buffered +when rendering with OpenGL or OpenGL ES. This can be set before creation with +the [GLFW_DOUBLEBUFFER](@ref GLFW_DOUBLEBUFFER_hint) window hint. + + +@section buffer_swap Buffer swapping + +GLFW windows are by default double buffered. That means that you have two +rendering buffers; a front buffer and a back buffer. The front buffer is +the one being displayed and the back buffer the one you render to. + +When the entire frame has been rendered, it is time to swap the back and the +front buffers in order to display what has been rendered and begin rendering +a new frame. This is done with @ref glfwSwapBuffers. + +@code +glfwSwapBuffers(window); +@endcode + +Sometimes it can be useful to select when the buffer swap will occur. With the +function @ref glfwSwapInterval it is possible to select the minimum number of +monitor refreshes the driver should wait from the time @ref glfwSwapBuffers was +called before swapping the buffers: + +@code +glfwSwapInterval(1); +@endcode + +If the interval is zero, the swap will take place immediately when @ref +glfwSwapBuffers is called without waiting for a refresh. Otherwise at least +interval retraces will pass between each buffer swap. Using a swap interval of +zero can be useful for benchmarking purposes, when it is not desirable to +measure the time it takes to wait for the vertical retrace. However, a swap +interval of one lets you avoid tearing. + +Note that this may not work on all machines, as some drivers have +user-controlled settings that override any swap interval the application +requests. + +A context that supports either the `WGL_EXT_swap_control_tear` or the +`GLX_EXT_swap_control_tear` extension also accepts _negative_ swap intervals, +which allows the driver to swap immediately even if a frame arrives a little bit +late. This trades the risk of visible tears for greater framerate stability. +You can check for these extensions with @ref glfwExtensionSupported. + +*/ diff --git a/lib/glfw/examples/CMakeLists.txt b/lib/glfw/examples/CMakeLists.txt new file mode 100644 index 0000000..e7a0379 --- /dev/null +++ b/lib/glfw/examples/CMakeLists.txt @@ -0,0 +1,83 @@ + +link_libraries(glfw) + +include_directories("${GLFW_SOURCE_DIR}/deps") + +if (MATH_LIBRARY) + link_libraries("${MATH_LIBRARY}") +endif() + +# Workaround for the MS CRT deprecating parts of the standard library +if (MSVC OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC") + add_definitions(-D_CRT_SECURE_NO_WARNINGS) +endif() + +if (WIN32) + set(ICON glfw.rc) +elseif (APPLE) + set(ICON glfw.icns) +endif() + +set(GLAD_GL "${GLFW_SOURCE_DIR}/deps/glad/gl.h") +set(GLAD_GLES2 "${GLFW_SOURCE_DIR}/deps/glad/gles2.h") +set(GETOPT "${GLFW_SOURCE_DIR}/deps/getopt.h" + "${GLFW_SOURCE_DIR}/deps/getopt.c") +set(TINYCTHREAD "${GLFW_SOURCE_DIR}/deps/tinycthread.h" + "${GLFW_SOURCE_DIR}/deps/tinycthread.c") + +add_executable(boing WIN32 MACOSX_BUNDLE boing.c ${ICON} ${GLAD_GL}) +add_executable(gears WIN32 MACOSX_BUNDLE gears.c ${ICON} ${GLAD_GL}) +add_executable(heightmap WIN32 MACOSX_BUNDLE heightmap.c ${ICON} ${GLAD_GL}) +add_executable(offscreen offscreen.c ${ICON} ${GLAD_GL}) +add_executable(particles WIN32 MACOSX_BUNDLE particles.c ${ICON} ${TINYCTHREAD} ${GETOPT} ${GLAD_GL}) +add_executable(sharing WIN32 MACOSX_BUNDLE sharing.c ${ICON} ${GLAD_GL}) +add_executable(splitview WIN32 MACOSX_BUNDLE splitview.c ${ICON} ${GLAD_GL}) +add_executable(triangle-opengl WIN32 MACOSX_BUNDLE triangle-opengl.c ${ICON} ${GLAD_GL}) +add_executable(triangle-opengles WIN32 MACOSX_BUNDLE triangle-opengles.c ${ICON} ${GLAD_GLES2}) +add_executable(wave WIN32 MACOSX_BUNDLE wave.c ${ICON} ${GLAD_GL}) +add_executable(windows WIN32 MACOSX_BUNDLE windows.c ${ICON} ${GLAD_GL}) + +target_link_libraries(particles Threads::Threads) +if (RT_LIBRARY) + target_link_libraries(particles "${RT_LIBRARY}") +endif() + +set(GUI_ONLY_BINARIES boing gears heightmap particles sharing splitview + triangle-opengl triangle-opengles wave windows) +set(CONSOLE_BINARIES offscreen) + +set_target_properties(${GUI_ONLY_BINARIES} ${CONSOLE_BINARIES} PROPERTIES + C_STANDARD 99 + FOLDER "GLFW3/Examples") + +if (MSVC) + # Tell MSVC to use main instead of WinMain + set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES + LINK_FLAGS "/ENTRY:mainCRTStartup") +elseif (CMAKE_C_SIMULATE_ID STREQUAL "MSVC") + # Tell Clang using MS CRT to use main instead of WinMain + set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES + LINK_FLAGS "-Wl,/entry:mainCRTStartup") +endif() + +if (APPLE) + set_target_properties(boing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Boing") + set_target_properties(gears PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Gears") + set_target_properties(heightmap PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Heightmap") + set_target_properties(particles PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Particles") + set_target_properties(sharing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Sharing") + set_target_properties(triangle-opengl PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "OpenGL Triangle") + set_target_properties(triangle-opengles PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "OpenGL ES Triangle") + set_target_properties(splitview PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "SplitView") + set_target_properties(wave PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Wave") + set_target_properties(windows PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Windows") + + set_source_files_properties(glfw.icns PROPERTIES + MACOSX_PACKAGE_LOCATION "Resources") + set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES + MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION} + MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION} + MACOSX_BUNDLE_ICON_FILE glfw.icns + MACOSX_BUNDLE_INFO_PLIST "${GLFW_SOURCE_DIR}/CMake/Info.plist.in") +endif() + diff --git a/lib/glfw/examples/boing.c b/lib/glfw/examples/boing.c new file mode 100644 index 0000000..ec118a3 --- /dev/null +++ b/lib/glfw/examples/boing.c @@ -0,0 +1,680 @@ +/***************************************************************************** + * Title: GLBoing + * Desc: Tribute to Amiga Boing. + * Author: Jim Brooks + * Original Amiga authors were R.J. Mical and Dale Luck. + * GLFW conversion by Marcus Geelnard + * Notes: - 360' = 2*PI [radian] + * + * - Distances between objects are created by doing a relative + * Z translations. + * + * - Although OpenGL enticingly supports alpha-blending, + * the shadow of the original Boing didn't affect the color + * of the grid. + * + * - [Marcus] Changed timing scheme from interval driven to frame- + * time based animation steps (which results in much smoother + * movement) + * + * History of Amiga Boing: + * + * Boing was demonstrated on the prototype Amiga (codenamed "Lorraine") in + * 1985. According to legend, it was written ad-hoc in one night by + * R. J. Mical and Dale Luck. Because the bouncing ball animation was so fast + * and smooth, attendees did not believe the Amiga prototype was really doing + * the rendering. Suspecting a trick, they began looking around the booth for + * a hidden computer or VCR. + *****************************************************************************/ + +#if defined(_MSC_VER) + // Make MS math.h define M_PI + #define _USE_MATH_DEFINES +#endif + +#include +#include +#include + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include + + +/***************************************************************************** + * Various declarations and macros + *****************************************************************************/ + +/* Prototypes */ +void init( void ); +void display( void ); +void reshape( GLFWwindow* window, int w, int h ); +void key_callback( GLFWwindow* window, int key, int scancode, int action, int mods ); +void mouse_button_callback( GLFWwindow* window, int button, int action, int mods ); +void cursor_position_callback( GLFWwindow* window, double x, double y ); +void DrawBoingBall( void ); +void BounceBall( double dt ); +void DrawBoingBallBand( GLfloat long_lo, GLfloat long_hi ); +void DrawGrid( void ); + +#define RADIUS 70.f +#define STEP_LONGITUDE 22.5f /* 22.5 makes 8 bands like original Boing */ +#define STEP_LATITUDE 22.5f + +#define DIST_BALL (RADIUS * 2.f + RADIUS * 0.1f) + +#define VIEW_SCENE_DIST (DIST_BALL * 3.f + 200.f)/* distance from viewer to middle of boing area */ +#define GRID_SIZE (RADIUS * 4.5f) /* length (width) of grid */ +#define BOUNCE_HEIGHT (RADIUS * 2.1f) +#define BOUNCE_WIDTH (RADIUS * 2.1f) + +#define SHADOW_OFFSET_X -20.f +#define SHADOW_OFFSET_Y 10.f +#define SHADOW_OFFSET_Z 0.f + +#define WALL_L_OFFSET 0.f +#define WALL_R_OFFSET 5.f + +/* Animation speed (50.0 mimics the original GLUT demo speed) */ +#define ANIMATION_SPEED 50.f + +/* Maximum allowed delta time per physics iteration */ +#define MAX_DELTA_T 0.02f + +/* Draw ball, or its shadow */ +typedef enum { DRAW_BALL, DRAW_BALL_SHADOW } DRAW_BALL_ENUM; + +/* Vertex type */ +typedef struct {float x; float y; float z;} vertex_t; + +/* Global vars */ +int windowed_xpos, windowed_ypos, windowed_width, windowed_height; +int width, height; +GLfloat deg_rot_y = 0.f; +GLfloat deg_rot_y_inc = 2.f; +int override_pos = GLFW_FALSE; +GLfloat cursor_x = 0.f; +GLfloat cursor_y = 0.f; +GLfloat ball_x = -RADIUS; +GLfloat ball_y = -RADIUS; +GLfloat ball_x_inc = 1.f; +GLfloat ball_y_inc = 2.f; +DRAW_BALL_ENUM drawBallHow; +double t; +double t_old = 0.f; +double dt; + +/* Random number generator */ +#ifndef RAND_MAX + #define RAND_MAX 4095 +#endif + + +/***************************************************************************** + * Truncate a degree. + *****************************************************************************/ +GLfloat TruncateDeg( GLfloat deg ) +{ + if ( deg >= 360.f ) + return (deg - 360.f); + else + return deg; +} + +/***************************************************************************** + * Convert a degree (360-based) into a radian. + * 360' = 2 * PI + *****************************************************************************/ +double deg2rad( double deg ) +{ + return deg / 360 * (2 * M_PI); +} + +/***************************************************************************** + * 360' sin(). + *****************************************************************************/ +double sin_deg( double deg ) +{ + return sin( deg2rad( deg ) ); +} + +/***************************************************************************** + * 360' cos(). + *****************************************************************************/ +double cos_deg( double deg ) +{ + return cos( deg2rad( deg ) ); +} + +/***************************************************************************** + * Compute a cross product (for a normal vector). + * + * c = a x b + *****************************************************************************/ +void CrossProduct( vertex_t a, vertex_t b, vertex_t c, vertex_t *n ) +{ + GLfloat u1, u2, u3; + GLfloat v1, v2, v3; + + u1 = b.x - a.x; + u2 = b.y - a.y; + u3 = b.y - a.z; + + v1 = c.x - a.x; + v2 = c.y - a.y; + v3 = c.z - a.z; + + n->x = u2 * v3 - v2 * u3; + n->y = u3 * v1 - v3 * u1; + n->z = u1 * v2 - v1 * u2; +} + + +#define BOING_DEBUG 0 + + +/***************************************************************************** + * init() + *****************************************************************************/ +void init( void ) +{ + /* + * Clear background. + */ + glClearColor( 0.55f, 0.55f, 0.55f, 0.f ); + + glShadeModel( GL_FLAT ); +} + + +/***************************************************************************** + * display() + *****************************************************************************/ +void display(void) +{ + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + glPushMatrix(); + + drawBallHow = DRAW_BALL_SHADOW; + DrawBoingBall(); + + DrawGrid(); + + drawBallHow = DRAW_BALL; + DrawBoingBall(); + + glPopMatrix(); + glFlush(); +} + + +/***************************************************************************** + * reshape() + *****************************************************************************/ +void reshape( GLFWwindow* window, int w, int h ) +{ + mat4x4 projection, view; + + glViewport( 0, 0, (GLsizei)w, (GLsizei)h ); + + glMatrixMode( GL_PROJECTION ); + mat4x4_perspective( projection, + 2.f * (float) atan2( RADIUS, 200.f ), + (float)w / (float)h, + 1.f, VIEW_SCENE_DIST ); + glLoadMatrixf((const GLfloat*) projection); + + glMatrixMode( GL_MODELVIEW ); + { + vec3 eye = { 0.f, 0.f, VIEW_SCENE_DIST }; + vec3 center = { 0.f, 0.f, 0.f }; + vec3 up = { 0.f, -1.f, 0.f }; + mat4x4_look_at( view, eye, center, up ); + } + glLoadMatrixf((const GLfloat*) view); +} + +void key_callback( GLFWwindow* window, int key, int scancode, int action, int mods ) +{ + if (action != GLFW_PRESS) + return; + + if (key == GLFW_KEY_ESCAPE && mods == 0) + glfwSetWindowShouldClose(window, GLFW_TRUE); + if ((key == GLFW_KEY_ENTER && mods == GLFW_MOD_ALT) || + (key == GLFW_KEY_F11 && mods == GLFW_MOD_ALT)) + { + if (glfwGetWindowMonitor(window)) + { + glfwSetWindowMonitor(window, NULL, + windowed_xpos, windowed_ypos, + windowed_width, windowed_height, 0); + } + else + { + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); + if (monitor) + { + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + glfwGetWindowPos(window, &windowed_xpos, &windowed_ypos); + glfwGetWindowSize(window, &windowed_width, &windowed_height); + glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate); + } + } + } +} + +static void set_ball_pos ( GLfloat x, GLfloat y ) +{ + ball_x = (width / 2) - x; + ball_y = y - (height / 2); +} + +void mouse_button_callback( GLFWwindow* window, int button, int action, int mods ) +{ + if (button != GLFW_MOUSE_BUTTON_LEFT) + return; + + if (action == GLFW_PRESS) + { + override_pos = GLFW_TRUE; + set_ball_pos(cursor_x, cursor_y); + } + else + { + override_pos = GLFW_FALSE; + } +} + +void cursor_position_callback( GLFWwindow* window, double x, double y ) +{ + cursor_x = (float) x; + cursor_y = (float) y; + + if ( override_pos ) + set_ball_pos(cursor_x, cursor_y); +} + +/***************************************************************************** + * Draw the Boing ball. + * + * The Boing ball is sphere in which each facet is a rectangle. + * Facet colors alternate between red and white. + * The ball is built by stacking latitudinal circles. Each circle is composed + * of a widely-separated set of points, so that each facet is noticeably large. + *****************************************************************************/ +void DrawBoingBall( void ) +{ + GLfloat lon_deg; /* degree of longitude */ + double dt_total, dt2; + + glPushMatrix(); + glMatrixMode( GL_MODELVIEW ); + + /* + * Another relative Z translation to separate objects. + */ + glTranslatef( 0.0, 0.0, DIST_BALL ); + + /* Update ball position and rotation (iterate if necessary) */ + dt_total = dt; + while( dt_total > 0.0 ) + { + dt2 = dt_total > MAX_DELTA_T ? MAX_DELTA_T : dt_total; + dt_total -= dt2; + BounceBall( dt2 ); + deg_rot_y = TruncateDeg( deg_rot_y + deg_rot_y_inc*((float)dt2*ANIMATION_SPEED) ); + } + + /* Set ball position */ + glTranslatef( ball_x, ball_y, 0.0 ); + + /* + * Offset the shadow. + */ + if ( drawBallHow == DRAW_BALL_SHADOW ) + { + glTranslatef( SHADOW_OFFSET_X, + SHADOW_OFFSET_Y, + SHADOW_OFFSET_Z ); + } + + /* + * Tilt the ball. + */ + glRotatef( -20.0, 0.0, 0.0, 1.0 ); + + /* + * Continually rotate ball around Y axis. + */ + glRotatef( deg_rot_y, 0.0, 1.0, 0.0 ); + + /* + * Set OpenGL state for Boing ball. + */ + glCullFace( GL_FRONT ); + glEnable( GL_CULL_FACE ); + glEnable( GL_NORMALIZE ); + + /* + * Build a faceted latitude slice of the Boing ball, + * stepping same-sized vertical bands of the sphere. + */ + for ( lon_deg = 0; + lon_deg < 180; + lon_deg += STEP_LONGITUDE ) + { + /* + * Draw a latitude circle at this longitude. + */ + DrawBoingBallBand( lon_deg, + lon_deg + STEP_LONGITUDE ); + } + + glPopMatrix(); + + return; +} + + +/***************************************************************************** + * Bounce the ball. + *****************************************************************************/ +void BounceBall( double delta_t ) +{ + GLfloat sign; + GLfloat deg; + + if ( override_pos ) + return; + + /* Bounce on walls */ + if ( ball_x > (BOUNCE_WIDTH/2 + WALL_R_OFFSET ) ) + { + ball_x_inc = -0.5f - 0.75f * (GLfloat)rand() / (GLfloat)RAND_MAX; + deg_rot_y_inc = -deg_rot_y_inc; + } + if ( ball_x < -(BOUNCE_HEIGHT/2 + WALL_L_OFFSET) ) + { + ball_x_inc = 0.5f + 0.75f * (GLfloat)rand() / (GLfloat)RAND_MAX; + deg_rot_y_inc = -deg_rot_y_inc; + } + + /* Bounce on floor / roof */ + if ( ball_y > BOUNCE_HEIGHT/2 ) + { + ball_y_inc = -0.75f - 1.f * (GLfloat)rand() / (GLfloat)RAND_MAX; + } + if ( ball_y < -BOUNCE_HEIGHT/2*0.85 ) + { + ball_y_inc = 0.75f + 1.f * (GLfloat)rand() / (GLfloat)RAND_MAX; + } + + /* Update ball position */ + ball_x += ball_x_inc * ((float)delta_t*ANIMATION_SPEED); + ball_y += ball_y_inc * ((float)delta_t*ANIMATION_SPEED); + + /* + * Simulate the effects of gravity on Y movement. + */ + if ( ball_y_inc < 0 ) sign = -1.0; else sign = 1.0; + + deg = (ball_y + BOUNCE_HEIGHT/2) * 90 / BOUNCE_HEIGHT; + if ( deg > 80 ) deg = 80; + if ( deg < 10 ) deg = 10; + + ball_y_inc = sign * 4.f * (float) sin_deg( deg ); +} + + +/***************************************************************************** + * Draw a faceted latitude band of the Boing ball. + * + * Parms: long_lo, long_hi + * Low and high longitudes of slice, resp. + *****************************************************************************/ +void DrawBoingBallBand( GLfloat long_lo, + GLfloat long_hi ) +{ + vertex_t vert_ne; /* "ne" means south-east, so on */ + vertex_t vert_nw; + vertex_t vert_sw; + vertex_t vert_se; + vertex_t vert_norm; + GLfloat lat_deg; + static int colorToggle = 0; + + /* + * Iterate through the points of a latitude circle. + * A latitude circle is a 2D set of X,Z points. + */ + for ( lat_deg = 0; + lat_deg <= (360 - STEP_LATITUDE); + lat_deg += STEP_LATITUDE ) + { + /* + * Color this polygon with red or white. + */ + if ( colorToggle ) + glColor3f( 0.8f, 0.1f, 0.1f ); + else + glColor3f( 0.95f, 0.95f, 0.95f ); +#if 0 + if ( lat_deg >= 180 ) + if ( colorToggle ) + glColor3f( 0.1f, 0.8f, 0.1f ); + else + glColor3f( 0.5f, 0.5f, 0.95f ); +#endif + colorToggle = ! colorToggle; + + /* + * Change color if drawing shadow. + */ + if ( drawBallHow == DRAW_BALL_SHADOW ) + glColor3f( 0.35f, 0.35f, 0.35f ); + + /* + * Assign each Y. + */ + vert_ne.y = vert_nw.y = (float) cos_deg(long_hi) * RADIUS; + vert_sw.y = vert_se.y = (float) cos_deg(long_lo) * RADIUS; + + /* + * Assign each X,Z with sin,cos values scaled by latitude radius indexed by longitude. + * Eg, long=0 and long=180 are at the poles, so zero scale is sin(longitude), + * while long=90 (sin(90)=1) is at equator. + */ + vert_ne.x = (float) cos_deg( lat_deg ) * (RADIUS * (float) sin_deg( long_lo + STEP_LONGITUDE )); + vert_se.x = (float) cos_deg( lat_deg ) * (RADIUS * (float) sin_deg( long_lo )); + vert_nw.x = (float) cos_deg( lat_deg + STEP_LATITUDE ) * (RADIUS * (float) sin_deg( long_lo + STEP_LONGITUDE )); + vert_sw.x = (float) cos_deg( lat_deg + STEP_LATITUDE ) * (RADIUS * (float) sin_deg( long_lo )); + + vert_ne.z = (float) sin_deg( lat_deg ) * (RADIUS * (float) sin_deg( long_lo + STEP_LONGITUDE )); + vert_se.z = (float) sin_deg( lat_deg ) * (RADIUS * (float) sin_deg( long_lo )); + vert_nw.z = (float) sin_deg( lat_deg + STEP_LATITUDE ) * (RADIUS * (float) sin_deg( long_lo + STEP_LONGITUDE )); + vert_sw.z = (float) sin_deg( lat_deg + STEP_LATITUDE ) * (RADIUS * (float) sin_deg( long_lo )); + + /* + * Draw the facet. + */ + glBegin( GL_POLYGON ); + + CrossProduct( vert_ne, vert_nw, vert_sw, &vert_norm ); + glNormal3f( vert_norm.x, vert_norm.y, vert_norm.z ); + + glVertex3f( vert_ne.x, vert_ne.y, vert_ne.z ); + glVertex3f( vert_nw.x, vert_nw.y, vert_nw.z ); + glVertex3f( vert_sw.x, vert_sw.y, vert_sw.z ); + glVertex3f( vert_se.x, vert_se.y, vert_se.z ); + + glEnd(); + +#if BOING_DEBUG + printf( "----------------------------------------------------------- \n" ); + printf( "lat = %f long_lo = %f long_hi = %f \n", lat_deg, long_lo, long_hi ); + printf( "vert_ne x = %.8f y = %.8f z = %.8f \n", vert_ne.x, vert_ne.y, vert_ne.z ); + printf( "vert_nw x = %.8f y = %.8f z = %.8f \n", vert_nw.x, vert_nw.y, vert_nw.z ); + printf( "vert_se x = %.8f y = %.8f z = %.8f \n", vert_se.x, vert_se.y, vert_se.z ); + printf( "vert_sw x = %.8f y = %.8f z = %.8f \n", vert_sw.x, vert_sw.y, vert_sw.z ); +#endif + + } + + /* + * Toggle color so that next band will opposite red/white colors than this one. + */ + colorToggle = ! colorToggle; + + /* + * This circular band is done. + */ + return; +} + + +/***************************************************************************** + * Draw the purple grid of lines, behind the Boing ball. + * When the Workbench is dropped to the bottom, Boing shows 12 rows. + *****************************************************************************/ +void DrawGrid( void ) +{ + int row, col; + const int rowTotal = 12; /* must be divisible by 2 */ + const int colTotal = rowTotal; /* must be same as rowTotal */ + const GLfloat widthLine = 2.0; /* should be divisible by 2 */ + const GLfloat sizeCell = GRID_SIZE / rowTotal; + const GLfloat z_offset = -40.0; + GLfloat xl, xr; + GLfloat yt, yb; + + glPushMatrix(); + glDisable( GL_CULL_FACE ); + + /* + * Another relative Z translation to separate objects. + */ + glTranslatef( 0.0, 0.0, DIST_BALL ); + + /* + * Draw vertical lines (as skinny 3D rectangles). + */ + for ( col = 0; col <= colTotal; col++ ) + { + /* + * Compute co-ords of line. + */ + xl = -GRID_SIZE / 2 + col * sizeCell; + xr = xl + widthLine; + + yt = GRID_SIZE / 2; + yb = -GRID_SIZE / 2 - widthLine; + + glBegin( GL_POLYGON ); + + glColor3f( 0.6f, 0.1f, 0.6f ); /* purple */ + + glVertex3f( xr, yt, z_offset ); /* NE */ + glVertex3f( xl, yt, z_offset ); /* NW */ + glVertex3f( xl, yb, z_offset ); /* SW */ + glVertex3f( xr, yb, z_offset ); /* SE */ + + glEnd(); + } + + /* + * Draw horizontal lines (as skinny 3D rectangles). + */ + for ( row = 0; row <= rowTotal; row++ ) + { + /* + * Compute co-ords of line. + */ + yt = GRID_SIZE / 2 - row * sizeCell; + yb = yt - widthLine; + + xl = -GRID_SIZE / 2; + xr = GRID_SIZE / 2 + widthLine; + + glBegin( GL_POLYGON ); + + glColor3f( 0.6f, 0.1f, 0.6f ); /* purple */ + + glVertex3f( xr, yt, z_offset ); /* NE */ + glVertex3f( xl, yt, z_offset ); /* NW */ + glVertex3f( xl, yb, z_offset ); /* SW */ + glVertex3f( xr, yb, z_offset ); /* SE */ + + glEnd(); + } + + glPopMatrix(); + + return; +} + + +/*======================================================================* + * main() + *======================================================================*/ + +int main( void ) +{ + GLFWwindow* window; + + /* Init GLFW */ + if( !glfwInit() ) + exit( EXIT_FAILURE ); + + window = glfwCreateWindow( 400, 400, "Boing (classic Amiga demo)", NULL, NULL ); + if (!window) + { + glfwTerminate(); + exit( EXIT_FAILURE ); + } + + glfwSetWindowAspectRatio(window, 1, 1); + + glfwSetFramebufferSizeCallback(window, reshape); + glfwSetKeyCallback(window, key_callback); + glfwSetMouseButtonCallback(window, mouse_button_callback); + glfwSetCursorPosCallback(window, cursor_position_callback); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval( 1 ); + + glfwGetFramebufferSize(window, &width, &height); + reshape(window, width, height); + + glfwSetTime( 0.0 ); + + init(); + + /* Main loop */ + for (;;) + { + /* Timing */ + t = glfwGetTime(); + dt = t - t_old; + t_old = t; + + /* Draw one frame */ + display(); + + /* Swap buffers */ + glfwSwapBuffers(window); + glfwPollEvents(); + + /* Check if we are still running */ + if (glfwWindowShouldClose(window)) + break; + } + + glfwTerminate(); + exit( EXIT_SUCCESS ); +} + diff --git a/lib/glfw/examples/gears.c b/lib/glfw/examples/gears.c new file mode 100644 index 0000000..3d63013 --- /dev/null +++ b/lib/glfw/examples/gears.c @@ -0,0 +1,361 @@ +/* + * 3-D gear wheels. This program is in the public domain. + * + * Command line options: + * -info print GL implementation information + * -exit automatically exit after 30 seconds + * + * + * Brian Paul + * + * + * Marcus Geelnard: + * - Conversion to GLFW + * - Time based rendering (frame rate independent) + * - Slightly modified camera that should work better for stereo viewing + * + * + * Camilla Löwy: + * - Removed FPS counter (this is not a benchmark) + * - Added a few comments + * - Enabled vsync + */ + +#if defined(_MSC_VER) + // Make MS math.h define M_PI + #define _USE_MATH_DEFINES +#endif + +#include +#include +#include +#include + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +/** + + Draw a gear wheel. You'll probably want to call this function when + building a display list since we do a lot of trig here. + + Input: inner_radius - radius of hole at center + outer_radius - radius at center of teeth + width - width of gear teeth - number of teeth + tooth_depth - depth of tooth + + **/ + +static void +gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, + GLint teeth, GLfloat tooth_depth) +{ + GLint i; + GLfloat r0, r1, r2; + GLfloat angle, da; + GLfloat u, v, len; + + r0 = inner_radius; + r1 = outer_radius - tooth_depth / 2.f; + r2 = outer_radius + tooth_depth / 2.f; + + da = 2.f * (float) M_PI / teeth / 4.f; + + glShadeModel(GL_FLAT); + + glNormal3f(0.f, 0.f, 1.f); + + /* draw front face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.f * (float) M_PI / teeth; + glVertex3f(r0 * (float) cos(angle), r0 * (float) sin(angle), width * 0.5f); + glVertex3f(r1 * (float) cos(angle), r1 * (float) sin(angle), width * 0.5f); + if (i < teeth) { + glVertex3f(r0 * (float) cos(angle), r0 * (float) sin(angle), width * 0.5f); + glVertex3f(r1 * (float) cos(angle + 3 * da), r1 * (float) sin(angle + 3 * da), width * 0.5f); + } + } + glEnd(); + + /* draw front sides of teeth */ + glBegin(GL_QUADS); + da = 2.f * (float) M_PI / teeth / 4.f; + for (i = 0; i < teeth; i++) { + angle = i * 2.f * (float) M_PI / teeth; + + glVertex3f(r1 * (float) cos(angle), r1 * (float) sin(angle), width * 0.5f); + glVertex3f(r2 * (float) cos(angle + da), r2 * (float) sin(angle + da), width * 0.5f); + glVertex3f(r2 * (float) cos(angle + 2 * da), r2 * (float) sin(angle + 2 * da), width * 0.5f); + glVertex3f(r1 * (float) cos(angle + 3 * da), r1 * (float) sin(angle + 3 * da), width * 0.5f); + } + glEnd(); + + glNormal3f(0.0, 0.0, -1.0); + + /* draw back face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.f * (float) M_PI / teeth; + glVertex3f(r1 * (float) cos(angle), r1 * (float) sin(angle), -width * 0.5f); + glVertex3f(r0 * (float) cos(angle), r0 * (float) sin(angle), -width * 0.5f); + if (i < teeth) { + glVertex3f(r1 * (float) cos(angle + 3 * da), r1 * (float) sin(angle + 3 * da), -width * 0.5f); + glVertex3f(r0 * (float) cos(angle), r0 * (float) sin(angle), -width * 0.5f); + } + } + glEnd(); + + /* draw back sides of teeth */ + glBegin(GL_QUADS); + da = 2.f * (float) M_PI / teeth / 4.f; + for (i = 0; i < teeth; i++) { + angle = i * 2.f * (float) M_PI / teeth; + + glVertex3f(r1 * (float) cos(angle + 3 * da), r1 * (float) sin(angle + 3 * da), -width * 0.5f); + glVertex3f(r2 * (float) cos(angle + 2 * da), r2 * (float) sin(angle + 2 * da), -width * 0.5f); + glVertex3f(r2 * (float) cos(angle + da), r2 * (float) sin(angle + da), -width * 0.5f); + glVertex3f(r1 * (float) cos(angle), r1 * (float) sin(angle), -width * 0.5f); + } + glEnd(); + + /* draw outward faces of teeth */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i < teeth; i++) { + angle = i * 2.f * (float) M_PI / teeth; + + glVertex3f(r1 * (float) cos(angle), r1 * (float) sin(angle), width * 0.5f); + glVertex3f(r1 * (float) cos(angle), r1 * (float) sin(angle), -width * 0.5f); + u = r2 * (float) cos(angle + da) - r1 * (float) cos(angle); + v = r2 * (float) sin(angle + da) - r1 * (float) sin(angle); + len = (float) sqrt(u * u + v * v); + u /= len; + v /= len; + glNormal3f(v, -u, 0.0); + glVertex3f(r2 * (float) cos(angle + da), r2 * (float) sin(angle + da), width * 0.5f); + glVertex3f(r2 * (float) cos(angle + da), r2 * (float) sin(angle + da), -width * 0.5f); + glNormal3f((float) cos(angle), (float) sin(angle), 0.f); + glVertex3f(r2 * (float) cos(angle + 2 * da), r2 * (float) sin(angle + 2 * da), width * 0.5f); + glVertex3f(r2 * (float) cos(angle + 2 * da), r2 * (float) sin(angle + 2 * da), -width * 0.5f); + u = r1 * (float) cos(angle + 3 * da) - r2 * (float) cos(angle + 2 * da); + v = r1 * (float) sin(angle + 3 * da) - r2 * (float) sin(angle + 2 * da); + glNormal3f(v, -u, 0.f); + glVertex3f(r1 * (float) cos(angle + 3 * da), r1 * (float) sin(angle + 3 * da), width * 0.5f); + glVertex3f(r1 * (float) cos(angle + 3 * da), r1 * (float) sin(angle + 3 * da), -width * 0.5f); + glNormal3f((float) cos(angle), (float) sin(angle), 0.f); + } + + glVertex3f(r1 * (float) cos(0), r1 * (float) sin(0), width * 0.5f); + glVertex3f(r1 * (float) cos(0), r1 * (float) sin(0), -width * 0.5f); + + glEnd(); + + glShadeModel(GL_SMOOTH); + + /* draw inside radius cylinder */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.f * (float) M_PI / teeth; + glNormal3f(-(float) cos(angle), -(float) sin(angle), 0.f); + glVertex3f(r0 * (float) cos(angle), r0 * (float) sin(angle), -width * 0.5f); + glVertex3f(r0 * (float) cos(angle), r0 * (float) sin(angle), width * 0.5f); + } + glEnd(); + +} + + +static GLfloat view_rotx = 20.f, view_roty = 30.f, view_rotz = 0.f; +static GLint gear1, gear2, gear3; +static GLfloat angle = 0.f; + +/* OpenGL draw function & timing */ +static void draw(void) +{ + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glRotatef(view_rotx, 1.0, 0.0, 0.0); + glRotatef(view_roty, 0.0, 1.0, 0.0); + glRotatef(view_rotz, 0.0, 0.0, 1.0); + + glPushMatrix(); + glTranslatef(-3.0, -2.0, 0.0); + glRotatef(angle, 0.0, 0.0, 1.0); + glCallList(gear1); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(3.1f, -2.f, 0.f); + glRotatef(-2.f * angle - 9.f, 0.f, 0.f, 1.f); + glCallList(gear2); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(-3.1f, 4.2f, 0.f); + glRotatef(-2.f * angle - 25.f, 0.f, 0.f, 1.f); + glCallList(gear3); + glPopMatrix(); + + glPopMatrix(); +} + + +/* update animation parameters */ +static void animate(void) +{ + angle = 100.f * (float) glfwGetTime(); +} + + +/* change view angle, exit upon ESC */ +void key( GLFWwindow* window, int k, int s, int action, int mods ) +{ + if( action != GLFW_PRESS ) return; + + switch (k) { + case GLFW_KEY_Z: + if( mods & GLFW_MOD_SHIFT ) + view_rotz -= 5.0; + else + view_rotz += 5.0; + break; + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + case GLFW_KEY_UP: + view_rotx += 5.0; + break; + case GLFW_KEY_DOWN: + view_rotx -= 5.0; + break; + case GLFW_KEY_LEFT: + view_roty += 5.0; + break; + case GLFW_KEY_RIGHT: + view_roty -= 5.0; + break; + default: + return; + } +} + + +/* new window size */ +void reshape( GLFWwindow* window, int width, int height ) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + GLfloat xmax, znear, zfar; + + znear = 5.0f; + zfar = 30.0f; + xmax = znear * 0.5f; + + glViewport( 0, 0, (GLint) width, (GLint) height ); + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + glFrustum( -xmax, xmax, -xmax*h, xmax*h, znear, zfar ); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + glTranslatef( 0.0, 0.0, -20.0 ); +} + + +/* program & OpenGL initialization */ +static void init(void) +{ + static GLfloat pos[4] = {5.f, 5.f, 10.f, 0.f}; + static GLfloat red[4] = {0.8f, 0.1f, 0.f, 1.f}; + static GLfloat green[4] = {0.f, 0.8f, 0.2f, 1.f}; + static GLfloat blue[4] = {0.2f, 0.2f, 1.f, 1.f}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + + /* make the gears */ + gear1 = glGenLists(1); + glNewList(gear1, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); + gear(1.f, 4.f, 1.f, 20, 0.7f); + glEndList(); + + gear2 = glGenLists(1); + glNewList(gear2, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); + gear(0.5f, 2.f, 2.f, 10, 0.7f); + glEndList(); + + gear3 = glGenLists(1); + glNewList(gear3, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); + gear(1.3f, 2.f, 0.5f, 10, 0.7f); + glEndList(); + + glEnable(GL_NORMALIZE); +} + + +/* program entry */ +int main(int argc, char *argv[]) +{ + GLFWwindow* window; + int width, height; + + if( !glfwInit() ) + { + fprintf( stderr, "Failed to initialize GLFW\n" ); + exit( EXIT_FAILURE ); + } + + glfwWindowHint(GLFW_DEPTH_BITS, 16); + glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE); + + window = glfwCreateWindow( 300, 300, "Gears", NULL, NULL ); + if (!window) + { + fprintf( stderr, "Failed to open GLFW window\n" ); + glfwTerminate(); + exit( EXIT_FAILURE ); + } + + // Set callback functions + glfwSetFramebufferSizeCallback(window, reshape); + glfwSetKeyCallback(window, key); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval( 1 ); + + glfwGetFramebufferSize(window, &width, &height); + reshape(window, width, height); + + // Parse command-line options + init(); + + // Main loop + while( !glfwWindowShouldClose(window) ) + { + // Draw gears + draw(); + + // Update animation + animate(); + + // Swap buffers + glfwSwapBuffers(window); + glfwPollEvents(); + } + + // Terminate GLFW + glfwTerminate(); + + // Exit program + exit( EXIT_SUCCESS ); +} + diff --git a/lib/glfw/examples/glfw.icns b/lib/glfw/examples/glfw.icns new file mode 100644 index 0000000..ad98f39 Binary files /dev/null and b/lib/glfw/examples/glfw.icns differ diff --git a/lib/glfw/examples/glfw.ico b/lib/glfw/examples/glfw.ico new file mode 100644 index 0000000..882a660 Binary files /dev/null and b/lib/glfw/examples/glfw.ico differ diff --git a/lib/glfw/examples/glfw.rc b/lib/glfw/examples/glfw.rc new file mode 100644 index 0000000..f2b62f6 --- /dev/null +++ b/lib/glfw/examples/glfw.rc @@ -0,0 +1,3 @@ + +GLFW_ICON ICON "glfw.ico" + diff --git a/lib/glfw/examples/heightmap.c b/lib/glfw/examples/heightmap.c new file mode 100644 index 0000000..ad5d47c --- /dev/null +++ b/lib/glfw/examples/heightmap.c @@ -0,0 +1,513 @@ +//======================================================================== +// Heightmap example program using OpenGL 3 core profile +// Copyright (c) 2010 Olivier Delannoy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include +#include +#include +#include +#include + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +/* Map height updates */ +#define MAX_CIRCLE_SIZE (5.0f) +#define MAX_DISPLACEMENT (1.0f) +#define DISPLACEMENT_SIGN_LIMIT (0.3f) +#define MAX_ITER (200) +#define NUM_ITER_AT_A_TIME (1) + +/* Map general information */ +#define MAP_SIZE (10.0f) +#define MAP_NUM_VERTICES (80) +#define MAP_NUM_TOTAL_VERTICES (MAP_NUM_VERTICES*MAP_NUM_VERTICES) +#define MAP_NUM_LINES (3* (MAP_NUM_VERTICES - 1) * (MAP_NUM_VERTICES - 1) + \ + 2 * (MAP_NUM_VERTICES - 1)) + + +/********************************************************************** + * Default shader programs + *********************************************************************/ + +static const char* vertex_shader_text = +"#version 150\n" +"uniform mat4 project;\n" +"uniform mat4 modelview;\n" +"in float x;\n" +"in float y;\n" +"in float z;\n" +"\n" +"void main()\n" +"{\n" +" gl_Position = project * modelview * vec4(x, y, z, 1.0);\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 150\n" +"out vec4 color;\n" +"void main()\n" +"{\n" +" color = vec4(0.2, 1.0, 0.2, 1.0); \n" +"}\n"; + +/********************************************************************** + * Values for shader uniforms + *********************************************************************/ + +/* Frustum configuration */ +static GLfloat view_angle = 45.0f; +static GLfloat aspect_ratio = 4.0f/3.0f; +static GLfloat z_near = 1.0f; +static GLfloat z_far = 100.f; + +/* Projection matrix */ +static GLfloat projection_matrix[16] = { + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f +}; + +/* Model view matrix */ +static GLfloat modelview_matrix[16] = { + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f +}; + +/********************************************************************** + * Heightmap vertex and index data + *********************************************************************/ + +static GLfloat map_vertices[3][MAP_NUM_TOTAL_VERTICES]; +static GLuint map_line_indices[2*MAP_NUM_LINES]; + +/* Store uniform location for the shaders + * Those values are setup as part of the process of creating + * the shader program. They should not be used before creating + * the program. + */ +static GLuint mesh; +static GLuint mesh_vbo[4]; + +/********************************************************************** + * OpenGL helper functions + *********************************************************************/ + +/* Creates a shader object of the specified type using the specified text + */ +static GLuint make_shader(GLenum type, const char* text) +{ + GLuint shader; + GLint shader_ok; + GLsizei log_length; + char info_log[8192]; + + shader = glCreateShader(type); + if (shader != 0) + { + glShaderSource(shader, 1, (const GLchar**)&text, NULL); + glCompileShader(shader); + glGetShaderiv(shader, GL_COMPILE_STATUS, &shader_ok); + if (shader_ok != GL_TRUE) + { + fprintf(stderr, "ERROR: Failed to compile %s shader\n", (type == GL_FRAGMENT_SHADER) ? "fragment" : "vertex" ); + glGetShaderInfoLog(shader, 8192, &log_length,info_log); + fprintf(stderr, "ERROR: \n%s\n\n", info_log); + glDeleteShader(shader); + shader = 0; + } + } + return shader; +} + +/* Creates a program object using the specified vertex and fragment text + */ +static GLuint make_shader_program(const char* vs_text, const char* fs_text) +{ + GLuint program = 0u; + GLint program_ok; + GLuint vertex_shader = 0u; + GLuint fragment_shader = 0u; + GLsizei log_length; + char info_log[8192]; + + vertex_shader = make_shader(GL_VERTEX_SHADER, vs_text); + if (vertex_shader != 0u) + { + fragment_shader = make_shader(GL_FRAGMENT_SHADER, fs_text); + if (fragment_shader != 0u) + { + /* make the program that connect the two shader and link it */ + program = glCreateProgram(); + if (program != 0u) + { + /* attach both shader and link */ + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &program_ok); + + if (program_ok != GL_TRUE) + { + fprintf(stderr, "ERROR, failed to link shader program\n"); + glGetProgramInfoLog(program, 8192, &log_length, info_log); + fprintf(stderr, "ERROR: \n%s\n\n", info_log); + glDeleteProgram(program); + glDeleteShader(fragment_shader); + glDeleteShader(vertex_shader); + program = 0u; + } + } + } + else + { + fprintf(stderr, "ERROR: Unable to load fragment shader\n"); + glDeleteShader(vertex_shader); + } + } + else + { + fprintf(stderr, "ERROR: Unable to load vertex shader\n"); + } + return program; +} + +/********************************************************************** + * Geometry creation functions + *********************************************************************/ + +/* Generate vertices and indices for the heightmap + */ +static void init_map(void) +{ + int i; + int j; + int k; + GLfloat step = MAP_SIZE / (MAP_NUM_VERTICES - 1); + GLfloat x = 0.0f; + GLfloat z = 0.0f; + /* Create a flat grid */ + k = 0; + for (i = 0 ; i < MAP_NUM_VERTICES ; ++i) + { + for (j = 0 ; j < MAP_NUM_VERTICES ; ++j) + { + map_vertices[0][k] = x; + map_vertices[1][k] = 0.0f; + map_vertices[2][k] = z; + z += step; + ++k; + } + x += step; + z = 0.0f; + } +#if DEBUG_ENABLED + for (i = 0 ; i < MAP_NUM_TOTAL_VERTICES ; ++i) + { + printf ("Vertice %d (%f, %f, %f)\n", + i, map_vertices[0][i], map_vertices[1][i], map_vertices[2][i]); + + } +#endif + /* create indices */ + /* line fan based on i + * i+1 + * | / i + n + 1 + * | / + * |/ + * i --- i + n + */ + + /* close the top of the square */ + k = 0; + for (i = 0 ; i < MAP_NUM_VERTICES -1 ; ++i) + { + map_line_indices[k++] = (i + 1) * MAP_NUM_VERTICES -1; + map_line_indices[k++] = (i + 2) * MAP_NUM_VERTICES -1; + } + /* close the right of the square */ + for (i = 0 ; i < MAP_NUM_VERTICES -1 ; ++i) + { + map_line_indices[k++] = (MAP_NUM_VERTICES - 1) * MAP_NUM_VERTICES + i; + map_line_indices[k++] = (MAP_NUM_VERTICES - 1) * MAP_NUM_VERTICES + i + 1; + } + + for (i = 0 ; i < (MAP_NUM_VERTICES - 1) ; ++i) + { + for (j = 0 ; j < (MAP_NUM_VERTICES - 1) ; ++j) + { + int ref = i * (MAP_NUM_VERTICES) + j; + map_line_indices[k++] = ref; + map_line_indices[k++] = ref + 1; + + map_line_indices[k++] = ref; + map_line_indices[k++] = ref + MAP_NUM_VERTICES; + + map_line_indices[k++] = ref; + map_line_indices[k++] = ref + MAP_NUM_VERTICES + 1; + } + } + +#ifdef DEBUG_ENABLED + for (k = 0 ; k < 2 * MAP_NUM_LINES ; k += 2) + { + int beg, end; + beg = map_line_indices[k]; + end = map_line_indices[k+1]; + printf ("Line %d: %d -> %d (%f, %f, %f) -> (%f, %f, %f)\n", + k / 2, beg, end, + map_vertices[0][beg], map_vertices[1][beg], map_vertices[2][beg], + map_vertices[0][end], map_vertices[1][end], map_vertices[2][end]); + } +#endif +} + +static void generate_heightmap__circle(float* center_x, float* center_y, + float* size, float* displacement) +{ + float sign; + /* random value for element in between [0-1.0] */ + *center_x = (MAP_SIZE * rand()) / (float) RAND_MAX; + *center_y = (MAP_SIZE * rand()) / (float) RAND_MAX; + *size = (MAX_CIRCLE_SIZE * rand()) / (float) RAND_MAX; + sign = (1.0f * rand()) / (float) RAND_MAX; + sign = (sign < DISPLACEMENT_SIGN_LIMIT) ? -1.0f : 1.0f; + *displacement = (sign * (MAX_DISPLACEMENT * rand())) / (float) RAND_MAX; +} + +/* Run the specified number of iterations of the generation process for the + * heightmap + */ +static void update_map(int num_iter) +{ + assert(num_iter > 0); + while(num_iter) + { + /* center of the circle */ + float center_x; + float center_z; + float circle_size; + float disp; + size_t ii; + generate_heightmap__circle(¢er_x, ¢er_z, &circle_size, &disp); + disp = disp / 2.0f; + for (ii = 0u ; ii < MAP_NUM_TOTAL_VERTICES ; ++ii) + { + GLfloat dx = center_x - map_vertices[0][ii]; + GLfloat dz = center_z - map_vertices[2][ii]; + GLfloat pd = (2.0f * (float) sqrt((dx * dx) + (dz * dz))) / circle_size; + if (fabs(pd) <= 1.0f) + { + /* tx,tz is within the circle */ + GLfloat new_height = disp + (float) (cos(pd*3.14f)*disp); + map_vertices[1][ii] += new_height; + } + } + --num_iter; + } +} + +/********************************************************************** + * OpenGL helper functions + *********************************************************************/ + +/* Create VBO, IBO and VAO objects for the heightmap geometry and bind them to + * the specified program object + */ +static void make_mesh(GLuint program) +{ + GLuint attrloc; + + glGenVertexArrays(1, &mesh); + glGenBuffers(4, mesh_vbo); + glBindVertexArray(mesh); + /* Prepare the data for drawing through a buffer inidices */ + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mesh_vbo[3]); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint)* MAP_NUM_LINES * 2, map_line_indices, GL_STATIC_DRAW); + + /* Prepare the attributes for rendering */ + attrloc = glGetAttribLocation(program, "x"); + glBindBuffer(GL_ARRAY_BUFFER, mesh_vbo[0]); + glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * MAP_NUM_TOTAL_VERTICES, &map_vertices[0][0], GL_STATIC_DRAW); + glEnableVertexAttribArray(attrloc); + glVertexAttribPointer(attrloc, 1, GL_FLOAT, GL_FALSE, 0, 0); + + attrloc = glGetAttribLocation(program, "z"); + glBindBuffer(GL_ARRAY_BUFFER, mesh_vbo[2]); + glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * MAP_NUM_TOTAL_VERTICES, &map_vertices[2][0], GL_STATIC_DRAW); + glEnableVertexAttribArray(attrloc); + glVertexAttribPointer(attrloc, 1, GL_FLOAT, GL_FALSE, 0, 0); + + attrloc = glGetAttribLocation(program, "y"); + glBindBuffer(GL_ARRAY_BUFFER, mesh_vbo[1]); + glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * MAP_NUM_TOTAL_VERTICES, &map_vertices[1][0], GL_DYNAMIC_DRAW); + glEnableVertexAttribArray(attrloc); + glVertexAttribPointer(attrloc, 1, GL_FLOAT, GL_FALSE, 0, 0); +} + +/* Update VBO vertices from source data + */ +static void update_mesh(void) +{ + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * MAP_NUM_TOTAL_VERTICES, &map_vertices[1][0]); +} + +/********************************************************************** + * GLFW callback functions + *********************************************************************/ + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + switch(key) + { + case GLFW_KEY_ESCAPE: + /* Exit program on Escape */ + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + } +} + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +int main(int argc, char** argv) +{ + GLFWwindow* window; + int iter; + double dt; + double last_update_time; + int frame; + float f; + GLint uloc_modelview; + GLint uloc_project; + int width, height; + + GLuint shader_program; + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE); + + window = glfwCreateWindow(800, 600, "GLFW OpenGL3 Heightmap demo", NULL, NULL); + if (! window ) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + /* Register events callback */ + glfwSetKeyCallback(window, key_callback); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + + /* Prepare opengl resources for rendering */ + shader_program = make_shader_program(vertex_shader_text, fragment_shader_text); + + if (shader_program == 0u) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glUseProgram(shader_program); + uloc_project = glGetUniformLocation(shader_program, "project"); + uloc_modelview = glGetUniformLocation(shader_program, "modelview"); + + /* Compute the projection matrix */ + f = 1.0f / tanf(view_angle / 2.0f); + projection_matrix[0] = f / aspect_ratio; + projection_matrix[5] = f; + projection_matrix[10] = (z_far + z_near)/ (z_near - z_far); + projection_matrix[11] = -1.0f; + projection_matrix[14] = 2.0f * (z_far * z_near) / (z_near - z_far); + glUniformMatrix4fv(uloc_project, 1, GL_FALSE, projection_matrix); + + /* Set the camera position */ + modelview_matrix[12] = -5.0f; + modelview_matrix[13] = -5.0f; + modelview_matrix[14] = -20.0f; + glUniformMatrix4fv(uloc_modelview, 1, GL_FALSE, modelview_matrix); + + /* Create mesh data */ + init_map(); + make_mesh(shader_program); + + /* Create vao + vbo to store the mesh */ + /* Create the vbo to store all the information for the grid and the height */ + + /* setup the scene ready for rendering */ + glfwGetFramebufferSize(window, &width, &height); + glViewport(0, 0, width, height); + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + + /* main loop */ + frame = 0; + iter = 0; + last_update_time = glfwGetTime(); + + while (!glfwWindowShouldClose(window)) + { + ++frame; + /* render the next frame */ + glClear(GL_COLOR_BUFFER_BIT); + glDrawElements(GL_LINES, 2* MAP_NUM_LINES , GL_UNSIGNED_INT, 0); + + /* display and process events through callbacks */ + glfwSwapBuffers(window); + glfwPollEvents(); + /* Check the frame rate and update the heightmap if needed */ + dt = glfwGetTime(); + if ((dt - last_update_time) > 0.2) + { + /* generate the next iteration of the heightmap */ + if (iter < MAX_ITER) + { + update_map(NUM_ITER_AT_A_TIME); + update_mesh(); + iter += NUM_ITER_AT_A_TIME; + } + last_update_time = dt; + frame = 0; + } + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/examples/offscreen.c b/lib/glfw/examples/offscreen.c new file mode 100644 index 0000000..e285286 --- /dev/null +++ b/lib/glfw/examples/offscreen.c @@ -0,0 +1,165 @@ +//======================================================================== +// Offscreen rendering example +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include "linmath.h" + +#include +#include + +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include + +static const struct +{ + float x, y; + float r, g, b; +} vertices[3] = +{ + { -0.6f, -0.4f, 1.f, 0.f, 0.f }, + { 0.6f, -0.4f, 0.f, 1.f, 0.f }, + { 0.f, 0.6f, 0.f, 0.f, 1.f } +}; + +static const char* vertex_shader_text = +"#version 110\n" +"uniform mat4 MVP;\n" +"attribute vec3 vCol;\n" +"attribute vec2 vPos;\n" +"varying vec3 color;\n" +"void main()\n" +"{\n" +" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n" +" color = vCol;\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 110\n" +"varying vec3 color;\n" +"void main()\n" +"{\n" +" gl_FragColor = vec4(color, 1.0);\n" +"}\n"; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +int main(void) +{ + GLFWwindow* window; + GLuint vertex_buffer, vertex_shader, fragment_shader, program; + GLint mvp_location, vpos_location, vcol_location; + float ratio; + int width, height; + mat4x4 mvp; + char* buffer; + + glfwSetErrorCallback(error_callback); + + glfwInitHint(GLFW_COCOA_MENUBAR, GLFW_FALSE); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); + + window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + + // NOTE: OpenGL error checks have been omitted for brevity + + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); + glCompileShader(vertex_shader); + + fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); + glCompileShader(fragment_shader); + + program = glCreateProgram(); + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + + mvp_location = glGetUniformLocation(program, "MVP"); + vpos_location = glGetAttribLocation(program, "vPos"); + vcol_location = glGetAttribLocation(program, "vCol"); + + glEnableVertexAttribArray(vpos_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(vertices[0]), (void*) 0); + glEnableVertexAttribArray(vcol_location); + glVertexAttribPointer(vcol_location, 3, GL_FLOAT, GL_FALSE, + sizeof(vertices[0]), (void*) (sizeof(float) * 2)); + + glfwGetFramebufferSize(window, &width, &height); + ratio = width / (float) height; + + glViewport(0, 0, width, height); + glClear(GL_COLOR_BUFFER_BIT); + + mat4x4_ortho(mvp, -ratio, ratio, -1.f, 1.f, 1.f, -1.f); + + glUseProgram(program); + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp); + glDrawArrays(GL_TRIANGLES, 0, 3); + glFinish(); + + buffer = calloc(4, width * height); + glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); + + // Write image Y-flipped because OpenGL + stbi_write_png("offscreen.png", + width, height, 4, + buffer + (width * 4 * (height - 1)), + -width * 4); + + free(buffer); + + glfwDestroyWindow(window); + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/examples/particles.c b/lib/glfw/examples/particles.c new file mode 100644 index 0000000..baafe82 --- /dev/null +++ b/lib/glfw/examples/particles.c @@ -0,0 +1,1074 @@ +//======================================================================== +// A simple particle engine with threaded physics +// Copyright (c) Marcus Geelnard +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#if defined(_MSC_VER) + // Make MS math.h define M_PI + #define _USE_MATH_DEFINES +#endif + +#include +#include +#include +#include +#include + +#include +#include +#include + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +// Define tokens for GL_EXT_separate_specular_color if not already defined +#ifndef GL_EXT_separate_specular_color +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#endif // GL_EXT_separate_specular_color + + +//======================================================================== +// Type definitions +//======================================================================== + +typedef struct +{ + float x, y, z; +} Vec3; + +// This structure is used for interleaved vertex arrays (see the +// draw_particles function) +// +// NOTE: This structure SHOULD be packed on most systems. It uses 32-bit fields +// on 32-bit boundaries, and is a multiple of 64 bits in total (6x32=3x64). If +// it does not work, try using pragmas or whatever to force the structure to be +// packed. +typedef struct +{ + GLfloat s, t; // Texture coordinates + GLuint rgba; // Color (four ubytes packed into an uint) + GLfloat x, y, z; // Vertex coordinates +} Vertex; + + +//======================================================================== +// Program control global variables +//======================================================================== + +// Window dimensions +float aspect_ratio; + +// "wireframe" flag (true if we use wireframe view) +int wireframe; + +// Thread synchronization +struct { + double t; // Time (s) + float dt; // Time since last frame (s) + int p_frame; // Particle physics frame number + int d_frame; // Particle draw frame number + cnd_t p_done; // Condition: particle physics done + cnd_t d_done; // Condition: particle draw done + mtx_t particles_lock; // Particles data sharing mutex +} thread_sync; + + +//======================================================================== +// Texture declarations (we hard-code them into the source code, since +// they are so simple) +//======================================================================== + +#define P_TEX_WIDTH 8 // Particle texture dimensions +#define P_TEX_HEIGHT 8 +#define F_TEX_WIDTH 16 // Floor texture dimensions +#define F_TEX_HEIGHT 16 + +// Texture object IDs +GLuint particle_tex_id, floor_tex_id; + +// Particle texture (a simple spot) +const unsigned char particle_texture[ P_TEX_WIDTH * P_TEX_HEIGHT ] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x11, 0x22, 0x22, 0x11, 0x00, 0x00, + 0x00, 0x11, 0x33, 0x88, 0x77, 0x33, 0x11, 0x00, + 0x00, 0x22, 0x88, 0xff, 0xee, 0x77, 0x22, 0x00, + 0x00, 0x22, 0x77, 0xee, 0xff, 0x88, 0x22, 0x00, + 0x00, 0x11, 0x33, 0x77, 0x88, 0x33, 0x11, 0x00, + 0x00, 0x00, 0x11, 0x33, 0x22, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +// Floor texture (your basic checkered floor) +const unsigned char floor_texture[ F_TEX_WIDTH * F_TEX_HEIGHT ] = { + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0xff, 0xf0, 0xcc, 0xf0, 0xf0, 0xf0, 0xff, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0xf0, 0xcc, 0xee, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x30, 0x66, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xee, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0xf0, 0xf0, 0xf0, 0xf0, 0xcc, 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0x55, 0x30, 0x30, 0x44, 0x30, 0x30, + 0xf0, 0xdd, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x30, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x33, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x30, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0xf0, 0xff, 0xf0, 0xf0, 0xdd, 0xf0, 0xf0, 0xff, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x55, 0x33, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xf0, 0xf0, + 0x30, 0x44, 0x66, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0xaa, 0xf0, 0xf0, 0xcc, 0xf0, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xf0, 0xdd, 0xf0, + 0x30, 0x30, 0x30, 0x77, 0x30, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +}; + + +//======================================================================== +// These are fixed constants that control the particle engine. In a +// modular world, these values should be variables... +//======================================================================== + +// Maximum number of particles +#define MAX_PARTICLES 3000 + +// Life span of a particle (in seconds) +#define LIFE_SPAN 8.f + +// A new particle is born every [BIRTH_INTERVAL] second +#define BIRTH_INTERVAL (LIFE_SPAN/(float)MAX_PARTICLES) + +// Particle size (meters) +#define PARTICLE_SIZE 0.7f + +// Gravitational constant (m/s^2) +#define GRAVITY 9.8f + +// Base initial velocity (m/s) +#define VELOCITY 8.f + +// Bounce friction (1.0 = no friction, 0.0 = maximum friction) +#define FRICTION 0.75f + +// "Fountain" height (m) +#define FOUNTAIN_HEIGHT 3.f + +// Fountain radius (m) +#define FOUNTAIN_RADIUS 1.6f + +// Minimum delta-time for particle phisics (s) +#define MIN_DELTA_T (BIRTH_INTERVAL * 0.5f) + + +//======================================================================== +// Particle system global variables +//======================================================================== + +// This structure holds all state for a single particle +typedef struct { + float x,y,z; // Position in space + float vx,vy,vz; // Velocity vector + float r,g,b; // Color of particle + float life; // Life of particle (1.0 = newborn, < 0.0 = dead) + int active; // Tells if this particle is active +} PARTICLE; + +// Global vectors holding all particles. We use two vectors for double +// buffering. +static PARTICLE particles[MAX_PARTICLES]; + +// Global variable holding the age of the youngest particle +static float min_age; + +// Color of latest born particle (used for fountain lighting) +static float glow_color[4]; + +// Position of latest born particle (used for fountain lighting) +static float glow_pos[4]; + + +//======================================================================== +// Object material and fog configuration constants +//======================================================================== + +const GLfloat fountain_diffuse[4] = { 0.7f, 1.f, 1.f, 1.f }; +const GLfloat fountain_specular[4] = { 1.f, 1.f, 1.f, 1.f }; +const GLfloat fountain_shininess = 12.f; +const GLfloat floor_diffuse[4] = { 1.f, 0.6f, 0.6f, 1.f }; +const GLfloat floor_specular[4] = { 0.6f, 0.6f, 0.6f, 1.f }; +const GLfloat floor_shininess = 18.f; +const GLfloat fog_color[4] = { 0.1f, 0.1f, 0.1f, 1.f }; + + +//======================================================================== +// Print usage information +//======================================================================== + +static void usage(void) +{ + printf("Usage: particles [-bfhs]\n"); + printf("Options:\n"); + printf(" -f Run in full screen\n"); + printf(" -h Display this help\n"); + printf(" -s Run program as single thread (default is to use two threads)\n"); + printf("\n"); + printf("Program runtime controls:\n"); + printf(" W Toggle wireframe mode\n"); + printf(" Esc Exit program\n"); +} + + +//======================================================================== +// Initialize a new particle +//======================================================================== + +static void init_particle(PARTICLE *p, double t) +{ + float xy_angle, velocity; + + // Start position of particle is at the fountain blow-out + p->x = 0.f; + p->y = 0.f; + p->z = FOUNTAIN_HEIGHT; + + // Start velocity is up (Z)... + p->vz = 0.7f + (0.3f / 4096.f) * (float) (rand() & 4095); + + // ...and a randomly chosen X/Y direction + xy_angle = (2.f * (float) M_PI / 4096.f) * (float) (rand() & 4095); + p->vx = 0.4f * (float) cos(xy_angle); + p->vy = 0.4f * (float) sin(xy_angle); + + // Scale velocity vector according to a time-varying velocity + velocity = VELOCITY * (0.8f + 0.1f * (float) (sin(0.5 * t) + sin(1.31 * t))); + p->vx *= velocity; + p->vy *= velocity; + p->vz *= velocity; + + // Color is time-varying + p->r = 0.7f + 0.3f * (float) sin(0.34 * t + 0.1); + p->g = 0.6f + 0.4f * (float) sin(0.63 * t + 1.1); + p->b = 0.6f + 0.4f * (float) sin(0.91 * t + 2.1); + + // Store settings for fountain glow lighting + glow_pos[0] = 0.4f * (float) sin(1.34 * t); + glow_pos[1] = 0.4f * (float) sin(3.11 * t); + glow_pos[2] = FOUNTAIN_HEIGHT + 1.f; + glow_pos[3] = 1.f; + glow_color[0] = p->r; + glow_color[1] = p->g; + glow_color[2] = p->b; + glow_color[3] = 1.f; + + // The particle is new-born and active + p->life = 1.f; + p->active = 1; +} + + +//======================================================================== +// Update a particle +//======================================================================== + +#define FOUNTAIN_R2 (FOUNTAIN_RADIUS+PARTICLE_SIZE/2)*(FOUNTAIN_RADIUS+PARTICLE_SIZE/2) + +static void update_particle(PARTICLE *p, float dt) +{ + // If the particle is not active, we need not do anything + if (!p->active) + return; + + // The particle is getting older... + p->life -= dt * (1.f / LIFE_SPAN); + + // Did the particle die? + if (p->life <= 0.f) + { + p->active = 0; + return; + } + + // Apply gravity + p->vz = p->vz - GRAVITY * dt; + + // Update particle position + p->x = p->x + p->vx * dt; + p->y = p->y + p->vy * dt; + p->z = p->z + p->vz * dt; + + // Simple collision detection + response + if (p->vz < 0.f) + { + // Particles should bounce on the fountain (with friction) + if ((p->x * p->x + p->y * p->y) < FOUNTAIN_R2 && + p->z < (FOUNTAIN_HEIGHT + PARTICLE_SIZE / 2)) + { + p->vz = -FRICTION * p->vz; + p->z = FOUNTAIN_HEIGHT + PARTICLE_SIZE / 2 + + FRICTION * (FOUNTAIN_HEIGHT + + PARTICLE_SIZE / 2 - p->z); + } + + // Particles should bounce on the floor (with friction) + else if (p->z < PARTICLE_SIZE / 2) + { + p->vz = -FRICTION * p->vz; + p->z = PARTICLE_SIZE / 2 + + FRICTION * (PARTICLE_SIZE / 2 - p->z); + } + } +} + + +//======================================================================== +// The main frame for the particle engine. Called once per frame. +//======================================================================== + +static void particle_engine(double t, float dt) +{ + int i; + float dt2; + + // Update particles (iterated several times per frame if dt is too large) + while (dt > 0.f) + { + // Calculate delta time for this iteration + dt2 = dt < MIN_DELTA_T ? dt : MIN_DELTA_T; + + for (i = 0; i < MAX_PARTICLES; i++) + update_particle(&particles[i], dt2); + + min_age += dt2; + + // Should we create any new particle(s)? + while (min_age >= BIRTH_INTERVAL) + { + min_age -= BIRTH_INTERVAL; + + // Find a dead particle to replace with a new one + for (i = 0; i < MAX_PARTICLES; i++) + { + if (!particles[i].active) + { + init_particle(&particles[i], t + min_age); + update_particle(&particles[i], min_age); + break; + } + } + } + + dt -= dt2; + } +} + + +//======================================================================== +// Draw all active particles. We use OpenGL 1.1 vertex +// arrays for this in order to accelerate the drawing. +//======================================================================== + +#define BATCH_PARTICLES 70 // Number of particles to draw in each batch + // (70 corresponds to 7.5 KB = will not blow + // the L1 data cache on most CPUs) +#define PARTICLE_VERTS 4 // Number of vertices per particle + +static void draw_particles(GLFWwindow* window, double t, float dt) +{ + int i, particle_count; + Vertex vertex_array[BATCH_PARTICLES * PARTICLE_VERTS]; + Vertex* vptr; + float alpha; + GLuint rgba; + Vec3 quad_lower_left, quad_lower_right; + GLfloat mat[16]; + PARTICLE* pptr; + + // Here comes the real trick with flat single primitive objects (s.c. + // "billboards"): We must rotate the textured primitive so that it + // always faces the viewer (is coplanar with the view-plane). + // We: + // 1) Create the primitive around origo (0,0,0) + // 2) Rotate it so that it is coplanar with the view plane + // 3) Translate it according to the particle position + // Note that 1) and 2) is the same for all particles (done only once). + + // Get modelview matrix. We will only use the upper left 3x3 part of + // the matrix, which represents the rotation. + glGetFloatv(GL_MODELVIEW_MATRIX, mat); + + // 1) & 2) We do it in one swift step: + // Although not obvious, the following six lines represent two matrix/ + // vector multiplications. The matrix is the inverse 3x3 rotation + // matrix (i.e. the transpose of the same matrix), and the two vectors + // represent the lower left corner of the quad, PARTICLE_SIZE/2 * + // (-1,-1,0), and the lower right corner, PARTICLE_SIZE/2 * (1,-1,0). + // The upper left/right corners of the quad is always the negative of + // the opposite corners (regardless of rotation). + quad_lower_left.x = (-PARTICLE_SIZE / 2) * (mat[0] + mat[1]); + quad_lower_left.y = (-PARTICLE_SIZE / 2) * (mat[4] + mat[5]); + quad_lower_left.z = (-PARTICLE_SIZE / 2) * (mat[8] + mat[9]); + quad_lower_right.x = (PARTICLE_SIZE / 2) * (mat[0] - mat[1]); + quad_lower_right.y = (PARTICLE_SIZE / 2) * (mat[4] - mat[5]); + quad_lower_right.z = (PARTICLE_SIZE / 2) * (mat[8] - mat[9]); + + // Don't update z-buffer, since all particles are transparent! + glDepthMask(GL_FALSE); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + + // Select particle texture + if (!wireframe) + { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, particle_tex_id); + } + + // Set up vertex arrays. We use interleaved arrays, which is easier to + // handle (in most situations) and it gives a linear memory access + // access pattern (which may give better performance in some + // situations). GL_T2F_C4UB_V3F means: 2 floats for texture coords, + // 4 ubytes for color and 3 floats for vertex coord (in that order). + // Most OpenGL cards / drivers are optimized for this format. + glInterleavedArrays(GL_T2F_C4UB_V3F, 0, vertex_array); + + // Wait for particle physics thread to be done + mtx_lock(&thread_sync.particles_lock); + while (!glfwWindowShouldClose(window) && + thread_sync.p_frame <= thread_sync.d_frame) + { + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_nsec += 100 * 1000 * 1000; + ts.tv_sec += ts.tv_nsec / (1000 * 1000 * 1000); + ts.tv_nsec %= 1000 * 1000 * 1000; + cnd_timedwait(&thread_sync.p_done, &thread_sync.particles_lock, &ts); + } + + // Store the frame time and delta time for the physics thread + thread_sync.t = t; + thread_sync.dt = dt; + + // Update frame counter + thread_sync.d_frame++; + + // Loop through all particles and build vertex arrays. + particle_count = 0; + vptr = vertex_array; + pptr = particles; + + for (i = 0; i < MAX_PARTICLES; i++) + { + if (pptr->active) + { + // Calculate particle intensity (we set it to max during 75% + // of its life, then it fades out) + alpha = 4.f * pptr->life; + if (alpha > 1.f) + alpha = 1.f; + + // Convert color from float to 8-bit (store it in a 32-bit + // integer using endian independent type casting) + ((GLubyte*) &rgba)[0] = (GLubyte)(pptr->r * 255.f); + ((GLubyte*) &rgba)[1] = (GLubyte)(pptr->g * 255.f); + ((GLubyte*) &rgba)[2] = (GLubyte)(pptr->b * 255.f); + ((GLubyte*) &rgba)[3] = (GLubyte)(alpha * 255.f); + + // 3) Translate the quad to the correct position in modelview + // space and store its parameters in vertex arrays (we also + // store texture coord and color information for each vertex). + + // Lower left corner + vptr->s = 0.f; + vptr->t = 0.f; + vptr->rgba = rgba; + vptr->x = pptr->x + quad_lower_left.x; + vptr->y = pptr->y + quad_lower_left.y; + vptr->z = pptr->z + quad_lower_left.z; + vptr ++; + + // Lower right corner + vptr->s = 1.f; + vptr->t = 0.f; + vptr->rgba = rgba; + vptr->x = pptr->x + quad_lower_right.x; + vptr->y = pptr->y + quad_lower_right.y; + vptr->z = pptr->z + quad_lower_right.z; + vptr ++; + + // Upper right corner + vptr->s = 1.f; + vptr->t = 1.f; + vptr->rgba = rgba; + vptr->x = pptr->x - quad_lower_left.x; + vptr->y = pptr->y - quad_lower_left.y; + vptr->z = pptr->z - quad_lower_left.z; + vptr ++; + + // Upper left corner + vptr->s = 0.f; + vptr->t = 1.f; + vptr->rgba = rgba; + vptr->x = pptr->x - quad_lower_right.x; + vptr->y = pptr->y - quad_lower_right.y; + vptr->z = pptr->z - quad_lower_right.z; + vptr ++; + + // Increase count of drawable particles + particle_count ++; + } + + // If we have filled up one batch of particles, draw it as a set + // of quads using glDrawArrays. + if (particle_count >= BATCH_PARTICLES) + { + // The first argument tells which primitive type we use (QUAD) + // The second argument tells the index of the first vertex (0) + // The last argument is the vertex count + glDrawArrays(GL_QUADS, 0, PARTICLE_VERTS * particle_count); + particle_count = 0; + vptr = vertex_array; + } + + // Next particle + pptr++; + } + + // We are done with the particle data + mtx_unlock(&thread_sync.particles_lock); + cnd_signal(&thread_sync.d_done); + + // Draw final batch of particles (if any) + glDrawArrays(GL_QUADS, 0, PARTICLE_VERTS * particle_count); + + // Disable vertex arrays (Note: glInterleavedArrays implicitly called + // glEnableClientState for vertex, texture coord and color arrays) + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); + + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + + glDepthMask(GL_TRUE); +} + + +//======================================================================== +// Fountain geometry specification +//======================================================================== + +#define FOUNTAIN_SIDE_POINTS 14 +#define FOUNTAIN_SWEEP_STEPS 32 + +static const float fountain_side[FOUNTAIN_SIDE_POINTS * 2] = +{ + 1.2f, 0.f, 1.f, 0.2f, 0.41f, 0.3f, 0.4f, 0.35f, + 0.4f, 1.95f, 0.41f, 2.f, 0.8f, 2.2f, 1.2f, 2.4f, + 1.5f, 2.7f, 1.55f,2.95f, 1.6f, 3.f, 1.f, 3.f, + 0.5f, 3.f, 0.f, 3.f +}; + +static const float fountain_normal[FOUNTAIN_SIDE_POINTS * 2] = +{ + 1.0000f, 0.0000f, 0.6428f, 0.7660f, 0.3420f, 0.9397f, 1.0000f, 0.0000f, + 1.0000f, 0.0000f, 0.3420f,-0.9397f, 0.4226f,-0.9063f, 0.5000f,-0.8660f, + 0.7660f,-0.6428f, 0.9063f,-0.4226f, 0.0000f,1.00000f, 0.0000f,1.00000f, + 0.0000f,1.00000f, 0.0000f,1.00000f +}; + + +//======================================================================== +// Draw a fountain +//======================================================================== + +static void draw_fountain(void) +{ + static GLuint fountain_list = 0; + double angle; + float x, y; + int m, n; + + // The first time, we build the fountain display list + if (!fountain_list) + { + fountain_list = glGenLists(1); + glNewList(fountain_list, GL_COMPILE_AND_EXECUTE); + + glMaterialfv(GL_FRONT, GL_DIFFUSE, fountain_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, fountain_specular); + glMaterialf(GL_FRONT, GL_SHININESS, fountain_shininess); + + // Build fountain using triangle strips + for (n = 0; n < FOUNTAIN_SIDE_POINTS - 1; n++) + { + glBegin(GL_TRIANGLE_STRIP); + for (m = 0; m <= FOUNTAIN_SWEEP_STEPS; m++) + { + angle = (double) m * (2.0 * M_PI / (double) FOUNTAIN_SWEEP_STEPS); + x = (float) cos(angle); + y = (float) sin(angle); + + // Draw triangle strip + glNormal3f(x * fountain_normal[n * 2 + 2], + y * fountain_normal[n * 2 + 2], + fountain_normal[n * 2 + 3]); + glVertex3f(x * fountain_side[n * 2 + 2], + y * fountain_side[n * 2 + 2], + fountain_side[n * 2 +3 ]); + glNormal3f(x * fountain_normal[n * 2], + y * fountain_normal[n * 2], + fountain_normal[n * 2 + 1]); + glVertex3f(x * fountain_side[n * 2], + y * fountain_side[n * 2], + fountain_side[n * 2 + 1]); + } + + glEnd(); + } + + glEndList(); + } + else + glCallList(fountain_list); +} + + +//======================================================================== +// Recursive function for building variable tessellated floor +//======================================================================== + +static void tessellate_floor(float x1, float y1, float x2, float y2, int depth) +{ + float delta, x, y; + + // Last recursion? + if (depth >= 5) + delta = 999999.f; + else + { + x = (float) (fabs(x1) < fabs(x2) ? fabs(x1) : fabs(x2)); + y = (float) (fabs(y1) < fabs(y2) ? fabs(y1) : fabs(y2)); + delta = x*x + y*y; + } + + // Recurse further? + if (delta < 0.1f) + { + x = (x1 + x2) * 0.5f; + y = (y1 + y2) * 0.5f; + tessellate_floor(x1, y1, x, y, depth + 1); + tessellate_floor(x, y1, x2, y, depth + 1); + tessellate_floor(x1, y, x, y2, depth + 1); + tessellate_floor(x, y, x2, y2, depth + 1); + } + else + { + glTexCoord2f(x1 * 30.f, y1 * 30.f); + glVertex3f( x1 * 80.f, y1 * 80.f, 0.f); + glTexCoord2f(x2 * 30.f, y1 * 30.f); + glVertex3f( x2 * 80.f, y1 * 80.f, 0.f); + glTexCoord2f(x2 * 30.f, y2 * 30.f); + glVertex3f( x2 * 80.f, y2 * 80.f, 0.f); + glTexCoord2f(x1 * 30.f, y2 * 30.f); + glVertex3f( x1 * 80.f, y2 * 80.f, 0.f); + } +} + + +//======================================================================== +// Draw floor. We build the floor recursively and let the tessellation in the +// center (near x,y=0,0) be high, while the tessellation around the edges be +// low. +//======================================================================== + +static void draw_floor(void) +{ + static GLuint floor_list = 0; + + if (!wireframe) + { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, floor_tex_id); + } + + // The first time, we build the floor display list + if (!floor_list) + { + floor_list = glGenLists(1); + glNewList(floor_list, GL_COMPILE_AND_EXECUTE); + + glMaterialfv(GL_FRONT, GL_DIFFUSE, floor_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, floor_specular); + glMaterialf(GL_FRONT, GL_SHININESS, floor_shininess); + + // Draw floor as a bunch of triangle strips (high tessellation + // improves lighting) + glNormal3f(0.f, 0.f, 1.f); + glBegin(GL_QUADS); + tessellate_floor(-1.f, -1.f, 0.f, 0.f, 0); + tessellate_floor( 0.f, -1.f, 1.f, 0.f, 0); + tessellate_floor( 0.f, 0.f, 1.f, 1.f, 0); + tessellate_floor(-1.f, 0.f, 0.f, 1.f, 0); + glEnd(); + + glEndList(); + } + else + glCallList(floor_list); + + glDisable(GL_TEXTURE_2D); + +} + + +//======================================================================== +// Position and configure light sources +//======================================================================== + +static void setup_lights(void) +{ + float l1pos[4], l1amb[4], l1dif[4], l1spec[4]; + float l2pos[4], l2amb[4], l2dif[4], l2spec[4]; + + // Set light source 1 parameters + l1pos[0] = 0.f; l1pos[1] = -9.f; l1pos[2] = 8.f; l1pos[3] = 1.f; + l1amb[0] = 0.2f; l1amb[1] = 0.2f; l1amb[2] = 0.2f; l1amb[3] = 1.f; + l1dif[0] = 0.8f; l1dif[1] = 0.4f; l1dif[2] = 0.2f; l1dif[3] = 1.f; + l1spec[0] = 1.f; l1spec[1] = 0.6f; l1spec[2] = 0.2f; l1spec[3] = 0.f; + + // Set light source 2 parameters + l2pos[0] = -15.f; l2pos[1] = 12.f; l2pos[2] = 1.5f; l2pos[3] = 1.f; + l2amb[0] = 0.f; l2amb[1] = 0.f; l2amb[2] = 0.f; l2amb[3] = 1.f; + l2dif[0] = 0.2f; l2dif[1] = 0.4f; l2dif[2] = 0.8f; l2dif[3] = 1.f; + l2spec[0] = 0.2f; l2spec[1] = 0.6f; l2spec[2] = 1.f; l2spec[3] = 0.f; + + glLightfv(GL_LIGHT1, GL_POSITION, l1pos); + glLightfv(GL_LIGHT1, GL_AMBIENT, l1amb); + glLightfv(GL_LIGHT1, GL_DIFFUSE, l1dif); + glLightfv(GL_LIGHT1, GL_SPECULAR, l1spec); + glLightfv(GL_LIGHT2, GL_POSITION, l2pos); + glLightfv(GL_LIGHT2, GL_AMBIENT, l2amb); + glLightfv(GL_LIGHT2, GL_DIFFUSE, l2dif); + glLightfv(GL_LIGHT2, GL_SPECULAR, l2spec); + glLightfv(GL_LIGHT3, GL_POSITION, glow_pos); + glLightfv(GL_LIGHT3, GL_DIFFUSE, glow_color); + glLightfv(GL_LIGHT3, GL_SPECULAR, glow_color); + + glEnable(GL_LIGHT1); + glEnable(GL_LIGHT2); + glEnable(GL_LIGHT3); +} + + +//======================================================================== +// Main rendering function +//======================================================================== + +static void draw_scene(GLFWwindow* window, double t) +{ + double xpos, ypos, zpos, angle_x, angle_y, angle_z; + static double t_old = 0.0; + float dt; + mat4x4 projection; + + // Calculate frame-to-frame delta time + dt = (float) (t - t_old); + t_old = t; + + mat4x4_perspective(projection, + 65.f * (float) M_PI / 180.f, + aspect_ratio, + 1.0, 60.0); + + glClearColor(0.1f, 0.1f, 0.1f, 1.f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_PROJECTION); + glLoadMatrixf((const GLfloat*) projection); + + // Setup camera + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + // Rotate camera + angle_x = 90.0 - 10.0; + angle_y = 10.0 * sin(0.3 * t); + angle_z = 10.0 * t; + glRotated(-angle_x, 1.0, 0.0, 0.0); + glRotated(-angle_y, 0.0, 1.0, 0.0); + glRotated(-angle_z, 0.0, 0.0, 1.0); + + // Translate camera + xpos = 15.0 * sin((M_PI / 180.0) * angle_z) + + 2.0 * sin((M_PI / 180.0) * 3.1 * t); + ypos = -15.0 * cos((M_PI / 180.0) * angle_z) + + 2.0 * cos((M_PI / 180.0) * 2.9 * t); + zpos = 4.0 + 2.0 * cos((M_PI / 180.0) * 4.9 * t); + glTranslated(-xpos, -ypos, -zpos); + + glFrontFace(GL_CCW); + glCullFace(GL_BACK); + glEnable(GL_CULL_FACE); + + setup_lights(); + glEnable(GL_LIGHTING); + + glEnable(GL_FOG); + glFogi(GL_FOG_MODE, GL_EXP); + glFogf(GL_FOG_DENSITY, 0.05f); + glFogfv(GL_FOG_COLOR, fog_color); + + draw_floor(); + + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LEQUAL); + glDepthMask(GL_TRUE); + + draw_fountain(); + + glDisable(GL_LIGHTING); + glDisable(GL_FOG); + + // Particles must be drawn after all solid objects have been drawn + draw_particles(window, t, dt); + + // Z-buffer not needed anymore + glDisable(GL_DEPTH_TEST); +} + + +//======================================================================== +// Window resize callback function +//======================================================================== + +static void resize_callback(GLFWwindow* window, int width, int height) +{ + glViewport(0, 0, width, height); + aspect_ratio = height ? width / (float) height : 1.f; +} + + +//======================================================================== +// Key callback functions +//======================================================================== + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action == GLFW_PRESS) + { + switch (key) + { + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + case GLFW_KEY_W: + wireframe = !wireframe; + glPolygonMode(GL_FRONT_AND_BACK, + wireframe ? GL_LINE : GL_FILL); + break; + default: + break; + } + } +} + + +//======================================================================== +// Thread for updating particle physics +//======================================================================== + +static int physics_thread_main(void* arg) +{ + GLFWwindow* window = arg; + + for (;;) + { + mtx_lock(&thread_sync.particles_lock); + + // Wait for particle drawing to be done + while (!glfwWindowShouldClose(window) && + thread_sync.p_frame > thread_sync.d_frame) + { + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_nsec += 100 * 1000 * 1000; + ts.tv_sec += ts.tv_nsec / (1000 * 1000 * 1000); + ts.tv_nsec %= 1000 * 1000 * 1000; + cnd_timedwait(&thread_sync.d_done, &thread_sync.particles_lock, &ts); + } + + if (glfwWindowShouldClose(window)) + break; + + // Update particles + particle_engine(thread_sync.t, thread_sync.dt); + + // Update frame counter + thread_sync.p_frame++; + + // Unlock mutex and signal drawing thread + mtx_unlock(&thread_sync.particles_lock); + cnd_signal(&thread_sync.p_done); + } + + return 0; +} + + +//======================================================================== +// main +//======================================================================== + +int main(int argc, char** argv) +{ + int ch, width, height; + thrd_t physics_thread = 0; + GLFWwindow* window; + GLFWmonitor* monitor = NULL; + + if (!glfwInit()) + { + fprintf(stderr, "Failed to initialize GLFW\n"); + exit(EXIT_FAILURE); + } + + while ((ch = getopt(argc, argv, "fh")) != -1) + { + switch (ch) + { + case 'f': + monitor = glfwGetPrimaryMonitor(); + break; + case 'h': + usage(); + exit(EXIT_SUCCESS); + } + } + + if (monitor) + { + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + + glfwWindowHint(GLFW_RED_BITS, mode->redBits); + glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits); + glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits); + glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate); + + width = mode->width; + height = mode->height; + } + else + { + width = 640; + height = 480; + } + + window = glfwCreateWindow(width, height, "Particle Engine", monitor, NULL); + if (!window) + { + fprintf(stderr, "Failed to create GLFW window\n"); + glfwTerminate(); + exit(EXIT_FAILURE); + } + + if (monitor) + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + glfwSetFramebufferSizeCallback(window, resize_callback); + glfwSetKeyCallback(window, key_callback); + + // Set initial aspect ratio + glfwGetFramebufferSize(window, &width, &height); + resize_callback(window, width, height); + + // Upload particle texture + glGenTextures(1, &particle_tex_id); + glBindTexture(GL_TEXTURE_2D, particle_tex_id); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, P_TEX_WIDTH, P_TEX_HEIGHT, + 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, particle_texture); + + // Upload floor texture + glGenTextures(1, &floor_tex_id); + glBindTexture(GL_TEXTURE_2D, floor_tex_id); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, F_TEX_WIDTH, F_TEX_HEIGHT, + 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, floor_texture); + + if (glfwExtensionSupported("GL_EXT_separate_specular_color")) + { + glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, + GL_SEPARATE_SPECULAR_COLOR_EXT); + } + + // Set filled polygon mode as default (not wireframe) + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + wireframe = 0; + + // Set initial times + thread_sync.t = 0.0; + thread_sync.dt = 0.001f; + thread_sync.p_frame = 0; + thread_sync.d_frame = 0; + + mtx_init(&thread_sync.particles_lock, mtx_timed); + cnd_init(&thread_sync.p_done); + cnd_init(&thread_sync.d_done); + + if (thrd_create(&physics_thread, physics_thread_main, window) != thrd_success) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwSetTime(0.0); + + while (!glfwWindowShouldClose(window)) + { + draw_scene(window, glfwGetTime()); + + glfwSwapBuffers(window); + glfwPollEvents(); + } + + thrd_join(physics_thread, NULL); + + glfwDestroyWindow(window); + glfwTerminate(); + + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/examples/sharing.c b/lib/glfw/examples/sharing.c new file mode 100644 index 0000000..d840c58 --- /dev/null +++ b/lib/glfw/examples/sharing.c @@ -0,0 +1,235 @@ +//======================================================================== +// Context sharing example +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include + +#include "getopt.h" +#include "linmath.h" + +static const char* vertex_shader_text = +"#version 110\n" +"uniform mat4 MVP;\n" +"attribute vec2 vPos;\n" +"varying vec2 texcoord;\n" +"void main()\n" +"{\n" +" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n" +" texcoord = vPos;\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 110\n" +"uniform sampler2D texture;\n" +"uniform vec3 color;\n" +"varying vec2 texcoord;\n" +"void main()\n" +"{\n" +" gl_FragColor = vec4(color * texture2D(texture, texcoord).rgb, 1.0);\n" +"}\n"; + +static const vec2 vertices[4] = +{ + { 0.f, 0.f }, + { 1.f, 0.f }, + { 1.f, 1.f }, + { 0.f, 1.f } +}; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action == GLFW_PRESS && key == GLFW_KEY_ESCAPE) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +int main(int argc, char** argv) +{ + GLFWwindow* windows[2]; + GLuint texture, program, vertex_buffer; + GLint mvp_location, vpos_location, color_location, texture_location; + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + + windows[0] = glfwCreateWindow(400, 400, "First", NULL, NULL); + if (!windows[0]) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwSetKeyCallback(windows[0], key_callback); + + glfwMakeContextCurrent(windows[0]); + + // Only enable vsync for the first of the windows to be swapped to + // avoid waiting out the interval for each window + glfwSwapInterval(1); + + // The contexts are created with the same APIs so the function + // pointers should be re-usable between them + gladLoadGL(glfwGetProcAddress); + + // Create the OpenGL objects inside the first context, created above + // All objects will be shared with the second context, created below + { + int x, y; + char pixels[16 * 16]; + GLuint vertex_shader, fragment_shader; + + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + + srand((unsigned int) glfwGetTimerValue()); + + for (y = 0; y < 16; y++) + { + for (x = 0; x < 16; x++) + pixels[y * 16 + x] = rand() % 256; + } + + glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 16, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, pixels); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); + glCompileShader(vertex_shader); + + fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); + glCompileShader(fragment_shader); + + program = glCreateProgram(); + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + + mvp_location = glGetUniformLocation(program, "MVP"); + color_location = glGetUniformLocation(program, "color"); + texture_location = glGetUniformLocation(program, "texture"); + vpos_location = glGetAttribLocation(program, "vPos"); + + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + } + + glUseProgram(program); + glUniform1i(texture_location, 0); + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, texture); + + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glEnableVertexAttribArray(vpos_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(vertices[0]), (void*) 0); + + windows[1] = glfwCreateWindow(400, 400, "Second", NULL, windows[0]); + if (!windows[1]) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + // Place the second window to the right of the first + { + int xpos, ypos, left, right, width; + + glfwGetWindowSize(windows[0], &width, NULL); + glfwGetWindowFrameSize(windows[0], &left, NULL, &right, NULL); + glfwGetWindowPos(windows[0], &xpos, &ypos); + + glfwSetWindowPos(windows[1], xpos + width + left + right, ypos); + } + + glfwSetKeyCallback(windows[1], key_callback); + + glfwMakeContextCurrent(windows[1]); + + // While objects are shared, the global context state is not and will + // need to be set up for each context + + glUseProgram(program); + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, texture); + + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glEnableVertexAttribArray(vpos_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(vertices[0]), (void*) 0); + + while (!glfwWindowShouldClose(windows[0]) && + !glfwWindowShouldClose(windows[1])) + { + int i; + const vec3 colors[2] = + { + { 0.8f, 0.4f, 1.f }, + { 0.3f, 0.4f, 1.f } + }; + + for (i = 0; i < 2; i++) + { + int width, height; + mat4x4 mvp; + + glfwGetFramebufferSize(windows[i], &width, &height); + glfwMakeContextCurrent(windows[i]); + + glViewport(0, 0, width, height); + + mat4x4_ortho(mvp, 0.f, 1.f, 0.f, 1.f, 0.f, 1.f); + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp); + glUniform3fv(color_location, 1, colors[i]); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + + glfwSwapBuffers(windows[i]); + } + + glfwWaitEvents(); + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/examples/splitview.c b/lib/glfw/examples/splitview.c new file mode 100644 index 0000000..990df12 --- /dev/null +++ b/lib/glfw/examples/splitview.c @@ -0,0 +1,547 @@ +//======================================================================== +// This is an example program for the GLFW library +// +// The program uses a "split window" view, rendering four views of the +// same scene in one window (e.g. useful for 3D modelling software). This +// demo uses scissors to separate the four different rendering areas from +// each other. +// +// (If the code seems a little bit strange here and there, it may be +// because I am not a friend of orthogonal projections) +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#if defined(_MSC_VER) + // Make MS math.h define M_PI + #define _USE_MATH_DEFINES +#endif + +#include +#include +#include + +#include + + +//======================================================================== +// Global variables +//======================================================================== + +// Mouse position +static double xpos = 0, ypos = 0; + +// Window size +static int width, height; + +// Active view: 0 = none, 1 = upper left, 2 = upper right, 3 = lower left, +// 4 = lower right +static int active_view = 0; + +// Rotation around each axis +static int rot_x = 0, rot_y = 0, rot_z = 0; + +// Do redraw? +static int do_redraw = 1; + + +//======================================================================== +// Draw a solid torus (use a display list for the model) +//======================================================================== + +#define TORUS_MAJOR 1.5 +#define TORUS_MINOR 0.5 +#define TORUS_MAJOR_RES 32 +#define TORUS_MINOR_RES 32 + +static void drawTorus(void) +{ + static GLuint torus_list = 0; + int i, j, k; + double s, t, x, y, z, nx, ny, nz, scale, twopi; + + if (!torus_list) + { + // Start recording displaylist + torus_list = glGenLists(1); + glNewList(torus_list, GL_COMPILE_AND_EXECUTE); + + // Draw torus + twopi = 2.0 * M_PI; + for (i = 0; i < TORUS_MINOR_RES; i++) + { + glBegin(GL_QUAD_STRIP); + for (j = 0; j <= TORUS_MAJOR_RES; j++) + { + for (k = 1; k >= 0; k--) + { + s = (i + k) % TORUS_MINOR_RES + 0.5; + t = j % TORUS_MAJOR_RES; + + // Calculate point on surface + x = (TORUS_MAJOR + TORUS_MINOR * cos(s * twopi / TORUS_MINOR_RES)) * cos(t * twopi / TORUS_MAJOR_RES); + y = TORUS_MINOR * sin(s * twopi / TORUS_MINOR_RES); + z = (TORUS_MAJOR + TORUS_MINOR * cos(s * twopi / TORUS_MINOR_RES)) * sin(t * twopi / TORUS_MAJOR_RES); + + // Calculate surface normal + nx = x - TORUS_MAJOR * cos(t * twopi / TORUS_MAJOR_RES); + ny = y; + nz = z - TORUS_MAJOR * sin(t * twopi / TORUS_MAJOR_RES); + scale = 1.0 / sqrt(nx*nx + ny*ny + nz*nz); + nx *= scale; + ny *= scale; + nz *= scale; + + glNormal3f((float) nx, (float) ny, (float) nz); + glVertex3f((float) x, (float) y, (float) z); + } + } + + glEnd(); + } + + // Stop recording displaylist + glEndList(); + } + else + { + // Playback displaylist + glCallList(torus_list); + } +} + + +//======================================================================== +// Draw the scene (a rotating torus) +//======================================================================== + +static void drawScene(void) +{ + const GLfloat model_diffuse[4] = {1.0f, 0.8f, 0.8f, 1.0f}; + const GLfloat model_specular[4] = {0.6f, 0.6f, 0.6f, 1.0f}; + const GLfloat model_shininess = 20.0f; + + glPushMatrix(); + + // Rotate the object + glRotatef((GLfloat) rot_x * 0.5f, 1.0f, 0.0f, 0.0f); + glRotatef((GLfloat) rot_y * 0.5f, 0.0f, 1.0f, 0.0f); + glRotatef((GLfloat) rot_z * 0.5f, 0.0f, 0.0f, 1.0f); + + // Set model color (used for orthogonal views, lighting disabled) + glColor4fv(model_diffuse); + + // Set model material (used for perspective view, lighting enabled) + glMaterialfv(GL_FRONT, GL_DIFFUSE, model_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, model_specular); + glMaterialf(GL_FRONT, GL_SHININESS, model_shininess); + + // Draw torus + drawTorus(); + + glPopMatrix(); +} + + +//======================================================================== +// Draw a 2D grid (used for orthogonal views) +//======================================================================== + +static void drawGrid(float scale, int steps) +{ + int i; + float x, y; + mat4x4 view; + + glPushMatrix(); + + // Set background to some dark bluish grey + glClearColor(0.05f, 0.05f, 0.2f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + + // Setup modelview matrix (flat XY view) + { + vec3 eye = { 0.f, 0.f, 1.f }; + vec3 center = { 0.f, 0.f, 0.f }; + vec3 up = { 0.f, 1.f, 0.f }; + mat4x4_look_at(view, eye, center, up); + } + glLoadMatrixf((const GLfloat*) view); + + // We don't want to update the Z-buffer + glDepthMask(GL_FALSE); + + // Set grid color + glColor3f(0.0f, 0.5f, 0.5f); + + glBegin(GL_LINES); + + // Horizontal lines + x = scale * 0.5f * (float) (steps - 1); + y = -scale * 0.5f * (float) (steps - 1); + for (i = 0; i < steps; i++) + { + glVertex3f(-x, y, 0.0f); + glVertex3f(x, y, 0.0f); + y += scale; + } + + // Vertical lines + x = -scale * 0.5f * (float) (steps - 1); + y = scale * 0.5f * (float) (steps - 1); + for (i = 0; i < steps; i++) + { + glVertex3f(x, -y, 0.0f); + glVertex3f(x, y, 0.0f); + x += scale; + } + + glEnd(); + + // Enable Z-buffer writing again + glDepthMask(GL_TRUE); + + glPopMatrix(); +} + + +//======================================================================== +// Draw all views +//======================================================================== + +static void drawAllViews(void) +{ + const GLfloat light_position[4] = {0.0f, 8.0f, 8.0f, 1.0f}; + const GLfloat light_diffuse[4] = {1.0f, 1.0f, 1.0f, 1.0f}; + const GLfloat light_specular[4] = {1.0f, 1.0f, 1.0f, 1.0f}; + const GLfloat light_ambient[4] = {0.2f, 0.2f, 0.3f, 1.0f}; + float aspect; + mat4x4 view, projection; + + // Calculate aspect of window + if (height > 0) + aspect = (float) width / (float) height; + else + aspect = 1.f; + + // Clear screen + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // Enable scissor test + glEnable(GL_SCISSOR_TEST); + + // Enable depth test + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LEQUAL); + + // ** ORTHOGONAL VIEWS ** + + // For orthogonal views, use wireframe rendering + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + + // Enable line anti-aliasing + glEnable(GL_LINE_SMOOTH); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + // Setup orthogonal projection matrix + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-3.0 * aspect, 3.0 * aspect, -3.0, 3.0, 1.0, 50.0); + + // Upper left view (TOP VIEW) + glViewport(0, height / 2, width / 2, height / 2); + glScissor(0, height / 2, width / 2, height / 2); + glMatrixMode(GL_MODELVIEW); + { + vec3 eye = { 0.f, 10.f, 1e-3f }; + vec3 center = { 0.f, 0.f, 0.f }; + vec3 up = { 0.f, 1.f, 0.f }; + mat4x4_look_at( view, eye, center, up ); + } + glLoadMatrixf((const GLfloat*) view); + drawGrid(0.5, 12); + drawScene(); + + // Lower left view (FRONT VIEW) + glViewport(0, 0, width / 2, height / 2); + glScissor(0, 0, width / 2, height / 2); + glMatrixMode(GL_MODELVIEW); + { + vec3 eye = { 0.f, 0.f, 10.f }; + vec3 center = { 0.f, 0.f, 0.f }; + vec3 up = { 0.f, 1.f, 0.f }; + mat4x4_look_at( view, eye, center, up ); + } + glLoadMatrixf((const GLfloat*) view); + drawGrid(0.5, 12); + drawScene(); + + // Lower right view (SIDE VIEW) + glViewport(width / 2, 0, width / 2, height / 2); + glScissor(width / 2, 0, width / 2, height / 2); + glMatrixMode(GL_MODELVIEW); + { + vec3 eye = { 10.f, 0.f, 0.f }; + vec3 center = { 0.f, 0.f, 0.f }; + vec3 up = { 0.f, 1.f, 0.f }; + mat4x4_look_at( view, eye, center, up ); + } + glLoadMatrixf((const GLfloat*) view); + drawGrid(0.5, 12); + drawScene(); + + // Disable line anti-aliasing + glDisable(GL_LINE_SMOOTH); + glDisable(GL_BLEND); + + // ** PERSPECTIVE VIEW ** + + // For perspective view, use solid rendering + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + // Enable face culling (faster rendering) + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + glFrontFace(GL_CW); + + // Setup perspective projection matrix + glMatrixMode(GL_PROJECTION); + mat4x4_perspective(projection, + 65.f * (float) M_PI / 180.f, + aspect, + 1.f, 50.f); + glLoadMatrixf((const GLfloat*) projection); + + // Upper right view (PERSPECTIVE VIEW) + glViewport(width / 2, height / 2, width / 2, height / 2); + glScissor(width / 2, height / 2, width / 2, height / 2); + glMatrixMode(GL_MODELVIEW); + { + vec3 eye = { 3.f, 1.5f, 3.f }; + vec3 center = { 0.f, 0.f, 0.f }; + vec3 up = { 0.f, 1.f, 0.f }; + mat4x4_look_at( view, eye, center, up ); + } + glLoadMatrixf((const GLfloat*) view); + + // Configure and enable light source 1 + glLightfv(GL_LIGHT1, GL_POSITION, light_position); + glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular); + glEnable(GL_LIGHT1); + glEnable(GL_LIGHTING); + + // Draw scene + drawScene(); + + // Disable lighting + glDisable(GL_LIGHTING); + + // Disable face culling + glDisable(GL_CULL_FACE); + + // Disable depth test + glDisable(GL_DEPTH_TEST); + + // Disable scissor test + glDisable(GL_SCISSOR_TEST); + + // Draw a border around the active view + if (active_view > 0 && active_view != 2) + { + glViewport(0, 0, width, height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0.0, 2.0, 0.0, 2.0, 0.0, 1.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef((GLfloat) ((active_view - 1) & 1), (GLfloat) (1 - (active_view - 1) / 2), 0.0f); + + glColor3f(1.0f, 1.0f, 0.6f); + + glBegin(GL_LINE_STRIP); + glVertex2i(0, 0); + glVertex2i(1, 0); + glVertex2i(1, 1); + glVertex2i(0, 1); + glVertex2i(0, 0); + glEnd(); + } +} + + +//======================================================================== +// Framebuffer size callback function +//======================================================================== + +static void framebufferSizeFun(GLFWwindow* window, int w, int h) +{ + width = w; + height = h > 0 ? h : 1; + do_redraw = 1; +} + + +//======================================================================== +// Window refresh callback function +//======================================================================== + +static void windowRefreshFun(GLFWwindow* window) +{ + drawAllViews(); + glfwSwapBuffers(window); + do_redraw = 0; +} + + +//======================================================================== +// Mouse position callback function +//======================================================================== + +static void cursorPosFun(GLFWwindow* window, double x, double y) +{ + int wnd_width, wnd_height, fb_width, fb_height; + double scale; + + glfwGetWindowSize(window, &wnd_width, &wnd_height); + glfwGetFramebufferSize(window, &fb_width, &fb_height); + + scale = (double) fb_width / (double) wnd_width; + + x *= scale; + y *= scale; + + // Depending on which view was selected, rotate around different axes + switch (active_view) + { + case 1: + rot_x += (int) (y - ypos); + rot_z += (int) (x - xpos); + do_redraw = 1; + break; + case 3: + rot_x += (int) (y - ypos); + rot_y += (int) (x - xpos); + do_redraw = 1; + break; + case 4: + rot_y += (int) (x - xpos); + rot_z += (int) (y - ypos); + do_redraw = 1; + break; + default: + // Do nothing for perspective view, or if no view is selected + break; + } + + // Remember cursor position + xpos = x; + ypos = y; +} + + +//======================================================================== +// Mouse button callback function +//======================================================================== + +static void mouseButtonFun(GLFWwindow* window, int button, int action, int mods) +{ + if ((button == GLFW_MOUSE_BUTTON_LEFT) && action == GLFW_PRESS) + { + // Detect which of the four views was clicked + active_view = 1; + if (xpos >= width / 2) + active_view += 1; + if (ypos >= height / 2) + active_view += 2; + } + else if (button == GLFW_MOUSE_BUTTON_LEFT) + { + // Deselect any previously selected view + active_view = 0; + } + + do_redraw = 1; +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + + +//======================================================================== +// main +//======================================================================== + +int main(void) +{ + GLFWwindow* window; + + // Initialise GLFW + if (!glfwInit()) + { + fprintf(stderr, "Failed to initialize GLFW\n"); + exit(EXIT_FAILURE); + } + + glfwWindowHint(GLFW_SAMPLES, 4); + + // Open OpenGL window + window = glfwCreateWindow(500, 500, "Split view demo", NULL, NULL); + if (!window) + { + fprintf(stderr, "Failed to open GLFW window\n"); + + glfwTerminate(); + exit(EXIT_FAILURE); + } + + // Set callback functions + glfwSetFramebufferSizeCallback(window, framebufferSizeFun); + glfwSetWindowRefreshCallback(window, windowRefreshFun); + glfwSetCursorPosCallback(window, cursorPosFun); + glfwSetMouseButtonCallback(window, mouseButtonFun); + glfwSetKeyCallback(window, key_callback); + + // Enable vsync + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + if (GLAD_GL_ARB_multisample || GLAD_GL_VERSION_1_3) + glEnable(GL_MULTISAMPLE_ARB); + + glfwGetFramebufferSize(window, &width, &height); + framebufferSizeFun(window, width, height); + + // Main loop + for (;;) + { + // Only redraw if we need to + if (do_redraw) + windowRefreshFun(window); + + // Wait for new events + glfwWaitEvents(); + + // Check if the window should be closed + if (glfwWindowShouldClose(window)) + break; + } + + // Close OpenGL window and terminate GLFW + glfwTerminate(); + + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/examples/triangle-opengl.c b/lib/glfw/examples/triangle-opengl.c new file mode 100644 index 0000000..ff9e7d3 --- /dev/null +++ b/lib/glfw/examples/triangle-opengl.c @@ -0,0 +1,171 @@ +//======================================================================== +// OpenGL triangle example +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +//! [code] + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include "linmath.h" + +#include +#include +#include + +typedef struct Vertex +{ + vec2 pos; + vec3 col; +} Vertex; + +static const Vertex vertices[3] = +{ + { { -0.6f, -0.4f }, { 1.f, 0.f, 0.f } }, + { { 0.6f, -0.4f }, { 0.f, 1.f, 0.f } }, + { { 0.f, 0.6f }, { 0.f, 0.f, 1.f } } +}; + +static const char* vertex_shader_text = +"#version 330\n" +"uniform mat4 MVP;\n" +"in vec3 vCol;\n" +"in vec2 vPos;\n" +"out vec3 color;\n" +"void main()\n" +"{\n" +" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n" +" color = vCol;\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 330\n" +"in vec3 color;\n" +"out vec4 fragment;\n" +"void main()\n" +"{\n" +" fragment = vec4(color, 1.0);\n" +"}\n"; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +int main(void) +{ + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + + GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGL Triangle", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwSetKeyCallback(window, key_callback); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + // NOTE: OpenGL error checks have been omitted for brevity + + GLuint vertex_buffer; + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + const GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); + glCompileShader(vertex_shader); + + const GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); + glCompileShader(fragment_shader); + + const GLuint program = glCreateProgram(); + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + + const GLint mvp_location = glGetUniformLocation(program, "MVP"); + const GLint vpos_location = glGetAttribLocation(program, "vPos"); + const GLint vcol_location = glGetAttribLocation(program, "vCol"); + + GLuint vertex_array; + glGenVertexArrays(1, &vertex_array); + glBindVertexArray(vertex_array); + glEnableVertexAttribArray(vpos_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(Vertex), (void*) offsetof(Vertex, pos)); + glEnableVertexAttribArray(vcol_location); + glVertexAttribPointer(vcol_location, 3, GL_FLOAT, GL_FALSE, + sizeof(Vertex), (void*) offsetof(Vertex, col)); + + while (!glfwWindowShouldClose(window)) + { + int width, height; + glfwGetFramebufferSize(window, &width, &height); + const float ratio = width / (float) height; + + glViewport(0, 0, width, height); + glClear(GL_COLOR_BUFFER_BIT); + + mat4x4 m, p, mvp; + mat4x4_identity(m); + mat4x4_rotate_Z(m, m, (float) glfwGetTime()); + mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f); + mat4x4_mul(mvp, p, m); + + glUseProgram(program); + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) &mvp); + glBindVertexArray(vertex_array); + glDrawArrays(GL_TRIANGLES, 0, 3); + + glfwSwapBuffers(window); + glfwPollEvents(); + } + + glfwDestroyWindow(window); + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + +//! [code] diff --git a/lib/glfw/examples/triangle-opengles b/lib/glfw/examples/triangle-opengles new file mode 100755 index 0000000..4690630 Binary files /dev/null and b/lib/glfw/examples/triangle-opengles differ diff --git a/lib/glfw/examples/triangle-opengles.c b/lib/glfw/examples/triangle-opengles.c new file mode 100644 index 0000000..03eb026 --- /dev/null +++ b/lib/glfw/examples/triangle-opengles.c @@ -0,0 +1,170 @@ +//======================================================================== +// OpenGL ES 2.0 triangle example +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLAD_GLES2_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include "linmath.h" + +#include +#include +#include + +typedef struct Vertex +{ + vec2 pos; + vec3 col; +} Vertex; + +static const Vertex vertices[3] = +{ + { { -0.6f, -0.4f }, { 1.f, 0.f, 0.f } }, + { { 0.6f, -0.4f }, { 0.f, 1.f, 0.f } }, + { { 0.f, 0.6f }, { 0.f, 0.f, 1.f } } +}; + +static const char* vertex_shader_text = +"#version 100\n" +"precision mediump float;\n" +"uniform mat4 MVP;\n" +"attribute vec3 vCol;\n" +"attribute vec2 vPos;\n" +"varying vec3 color;\n" +"void main()\n" +"{\n" +" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n" +" color = vCol;\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 100\n" +"precision mediump float;\n" +"varying vec3 color;\n" +"void main()\n" +"{\n" +" gl_FragColor = vec4(color, 1.0);\n" +"}\n"; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "GLFW Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +int main(void) +{ + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_EGL_CONTEXT_API); + + GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGL ES 2.0 Triangle (EGL)", NULL, NULL); + if (!window) + { + glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_NATIVE_CONTEXT_API); + window = glfwCreateWindow(640, 480, "OpenGL ES 2.0 Triangle", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + } + + glfwSetKeyCallback(window, key_callback); + + glfwMakeContextCurrent(window); + gladLoadGLES2(glfwGetProcAddress); + glfwSwapInterval(1); + + GLuint vertex_buffer; + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + const GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); + glCompileShader(vertex_shader); + + const GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); + glCompileShader(fragment_shader); + + const GLuint program = glCreateProgram(); + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + + const GLint mvp_location = glGetUniformLocation(program, "MVP"); + const GLint vpos_location = glGetAttribLocation(program, "vPos"); + const GLint vcol_location = glGetAttribLocation(program, "vCol"); + + glEnableVertexAttribArray(vpos_location); + glEnableVertexAttribArray(vcol_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(Vertex), (void*) offsetof(Vertex, pos)); + glVertexAttribPointer(vcol_location, 3, GL_FLOAT, GL_FALSE, + sizeof(Vertex), (void*) offsetof(Vertex, col)); + + while (!glfwWindowShouldClose(window)) + { + int width, height; + glfwGetFramebufferSize(window, &width, &height); + const float ratio = width / (float) height; + + glViewport(0, 0, width, height); + glClear(GL_COLOR_BUFFER_BIT); + + mat4x4 m, p, mvp; + mat4x4_identity(m); + mat4x4_rotate_Z(m, m, (float) glfwGetTime()); + mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f); + mat4x4_mul(mvp, p, m); + + glUseProgram(program); + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) &mvp); + glDrawArrays(GL_TRIANGLES, 0, 3); + + glfwSwapBuffers(window); + glfwPollEvents(); + } + + glfwDestroyWindow(window); + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/examples/wave.c b/lib/glfw/examples/wave.c new file mode 100644 index 0000000..d7ead49 --- /dev/null +++ b/lib/glfw/examples/wave.c @@ -0,0 +1,463 @@ +/***************************************************************************** + * Wave Simulation in OpenGL + * (C) 2002 Jakob Thomsen + * http://home.in.tum.de/~thomsen + * Modified for GLFW by Sylvain Hellegouarch - sh@programmationworld.com + * Modified for variable frame rate by Marcus Geelnard + * 2003-Jan-31: Minor cleanups and speedups / MG + * 2010-10-24: Formatting and cleanup - Camilla Löwy + *****************************************************************************/ + +#if defined(_MSC_VER) + // Make MS math.h define M_PI + #define _USE_MATH_DEFINES +#endif + +#include +#include +#include + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include + +// Maximum delta T to allow for differential calculations +#define MAX_DELTA_T 0.01 + +// Animation speed (10.0 looks good) +#define ANIMATION_SPEED 10.0 + +GLfloat alpha = 210.f, beta = -70.f; +GLfloat zoom = 2.f; + +double cursorX; +double cursorY; + +struct Vertex +{ + GLfloat x, y, z; + GLfloat r, g, b; +}; + +#define GRIDW 50 +#define GRIDH 50 +#define VERTEXNUM (GRIDW*GRIDH) + +#define QUADW (GRIDW - 1) +#define QUADH (GRIDH - 1) +#define QUADNUM (QUADW*QUADH) + +GLuint quad[4 * QUADNUM]; +struct Vertex vertex[VERTEXNUM]; + +/* The grid will look like this: + * + * 3 4 5 + * *---*---* + * | | | + * | 0 | 1 | + * | | | + * *---*---* + * 0 1 2 + */ + +//======================================================================== +// Initialize grid geometry +//======================================================================== + +void init_vertices(void) +{ + int x, y, p; + + // Place the vertices in a grid + for (y = 0; y < GRIDH; y++) + { + for (x = 0; x < GRIDW; x++) + { + p = y * GRIDW + x; + + vertex[p].x = (GLfloat) (x - GRIDW / 2) / (GLfloat) (GRIDW / 2); + vertex[p].y = (GLfloat) (y - GRIDH / 2) / (GLfloat) (GRIDH / 2); + vertex[p].z = 0; + + if ((x % 4 < 2) ^ (y % 4 < 2)) + vertex[p].r = 0.0; + else + vertex[p].r = 1.0; + + vertex[p].g = (GLfloat) y / (GLfloat) GRIDH; + vertex[p].b = 1.f - ((GLfloat) x / (GLfloat) GRIDW + (GLfloat) y / (GLfloat) GRIDH) / 2.f; + } + } + + for (y = 0; y < QUADH; y++) + { + for (x = 0; x < QUADW; x++) + { + p = 4 * (y * QUADW + x); + + quad[p + 0] = y * GRIDW + x; // Some point + quad[p + 1] = y * GRIDW + x + 1; // Neighbor at the right side + quad[p + 2] = (y + 1) * GRIDW + x + 1; // Upper right neighbor + quad[p + 3] = (y + 1) * GRIDW + x; // Upper neighbor + } + } +} + +double dt; +double p[GRIDW][GRIDH]; +double vx[GRIDW][GRIDH], vy[GRIDW][GRIDH]; +double ax[GRIDW][GRIDH], ay[GRIDW][GRIDH]; + +//======================================================================== +// Initialize grid +//======================================================================== + +void init_grid(void) +{ + int x, y; + double dx, dy, d; + + for (y = 0; y < GRIDH; y++) + { + for (x = 0; x < GRIDW; x++) + { + dx = (double) (x - GRIDW / 2); + dy = (double) (y - GRIDH / 2); + d = sqrt(dx * dx + dy * dy); + if (d < 0.1 * (double) (GRIDW / 2)) + { + d = d * 10.0; + p[x][y] = -cos(d * (M_PI / (double)(GRIDW * 4))) * 100.0; + } + else + p[x][y] = 0.0; + + vx[x][y] = 0.0; + vy[x][y] = 0.0; + } + } +} + + +//======================================================================== +// Draw scene +//======================================================================== + +void draw_scene(GLFWwindow* window) +{ + // Clear the color and depth buffers + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // We don't want to modify the projection matrix + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + // Move back + glTranslatef(0.0, 0.0, -zoom); + // Rotate the view + glRotatef(beta, 1.0, 0.0, 0.0); + glRotatef(alpha, 0.0, 0.0, 1.0); + + glDrawElements(GL_QUADS, 4 * QUADNUM, GL_UNSIGNED_INT, quad); + + glfwSwapBuffers(window); +} + + +//======================================================================== +// Initialize Miscellaneous OpenGL state +//======================================================================== + +void init_opengl(void) +{ + // Use Gouraud (smooth) shading + glShadeModel(GL_SMOOTH); + + // Switch on the z-buffer + glEnable(GL_DEPTH_TEST); + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_COLOR_ARRAY); + glVertexPointer(3, GL_FLOAT, sizeof(struct Vertex), vertex); + glColorPointer(3, GL_FLOAT, sizeof(struct Vertex), &vertex[0].r); // Pointer to the first color + + glPointSize(2.0); + + // Background color is black + glClearColor(0, 0, 0, 0); +} + + +//======================================================================== +// Modify the height of each vertex according to the pressure +//======================================================================== + +void adjust_grid(void) +{ + int pos; + int x, y; + + for (y = 0; y < GRIDH; y++) + { + for (x = 0; x < GRIDW; x++) + { + pos = y * GRIDW + x; + vertex[pos].z = (float) (p[x][y] * (1.0 / 50.0)); + } + } +} + + +//======================================================================== +// Calculate wave propagation +//======================================================================== + +void calc_grid(void) +{ + int x, y, x2, y2; + double time_step = dt * ANIMATION_SPEED; + + // Compute accelerations + for (x = 0; x < GRIDW; x++) + { + x2 = (x + 1) % GRIDW; + for(y = 0; y < GRIDH; y++) + ax[x][y] = p[x][y] - p[x2][y]; + } + + for (y = 0; y < GRIDH; y++) + { + y2 = (y + 1) % GRIDH; + for(x = 0; x < GRIDW; x++) + ay[x][y] = p[x][y] - p[x][y2]; + } + + // Compute speeds + for (x = 0; x < GRIDW; x++) + { + for (y = 0; y < GRIDH; y++) + { + vx[x][y] = vx[x][y] + ax[x][y] * time_step; + vy[x][y] = vy[x][y] + ay[x][y] * time_step; + } + } + + // Compute pressure + for (x = 1; x < GRIDW; x++) + { + x2 = x - 1; + for (y = 1; y < GRIDH; y++) + { + y2 = y - 1; + p[x][y] = p[x][y] + (vx[x2][y] - vx[x][y] + vy[x][y2] - vy[x][y]) * time_step; + } + } +} + + +//======================================================================== +// Print errors +//======================================================================== + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + + +//======================================================================== +// Handle key strokes +//======================================================================== + +void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + case GLFW_KEY_SPACE: + init_grid(); + break; + case GLFW_KEY_LEFT: + alpha += 5; + break; + case GLFW_KEY_RIGHT: + alpha -= 5; + break; + case GLFW_KEY_UP: + beta -= 5; + break; + case GLFW_KEY_DOWN: + beta += 5; + break; + case GLFW_KEY_PAGE_UP: + zoom -= 0.25f; + if (zoom < 0.f) + zoom = 0.f; + break; + case GLFW_KEY_PAGE_DOWN: + zoom += 0.25f; + break; + default: + break; + } +} + + +//======================================================================== +// Callback function for mouse button events +//======================================================================== + +void mouse_button_callback(GLFWwindow* window, int button, int action, int mods) +{ + if (button != GLFW_MOUSE_BUTTON_LEFT) + return; + + if (action == GLFW_PRESS) + { + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); + glfwGetCursorPos(window, &cursorX, &cursorY); + } + else + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); +} + + +//======================================================================== +// Callback function for cursor motion events +//======================================================================== + +void cursor_position_callback(GLFWwindow* window, double x, double y) +{ + if (glfwGetInputMode(window, GLFW_CURSOR) == GLFW_CURSOR_DISABLED) + { + alpha += (GLfloat) (x - cursorX) / 10.f; + beta += (GLfloat) (y - cursorY) / 10.f; + + cursorX = x; + cursorY = y; + } +} + + +//======================================================================== +// Callback function for scroll events +//======================================================================== + +void scroll_callback(GLFWwindow* window, double x, double y) +{ + zoom += (float) y / 4.f; + if (zoom < 0) + zoom = 0; +} + + +//======================================================================== +// Callback function for framebuffer resize events +//======================================================================== + +void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + float ratio = 1.f; + mat4x4 projection; + + if (height > 0) + ratio = (float) width / (float) height; + + // Setup viewport + glViewport(0, 0, width, height); + + // Change to the projection matrix and set our viewing volume + glMatrixMode(GL_PROJECTION); + mat4x4_perspective(projection, + 60.f * (float) M_PI / 180.f, + ratio, + 1.f, 1024.f); + glLoadMatrixf((const GLfloat*) projection); +} + + +//======================================================================== +// main +//======================================================================== + +int main(int argc, char* argv[]) +{ + GLFWwindow* window; + double t, dt_total, t_old; + int width, height; + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + window = glfwCreateWindow(640, 480, "Wave Simulation", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwSetKeyCallback(window, key_callback); + glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); + glfwSetMouseButtonCallback(window, mouse_button_callback); + glfwSetCursorPosCallback(window, cursor_position_callback); + glfwSetScrollCallback(window, scroll_callback); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + glfwGetFramebufferSize(window, &width, &height); + framebuffer_size_callback(window, width, height); + + // Initialize OpenGL + init_opengl(); + + // Initialize simulation + init_vertices(); + init_grid(); + adjust_grid(); + + // Initialize timer + t_old = glfwGetTime() - 0.01; + + while (!glfwWindowShouldClose(window)) + { + t = glfwGetTime(); + dt_total = t - t_old; + t_old = t; + + // Safety - iterate if dt_total is too large + while (dt_total > 0.f) + { + // Select iteration time step + dt = dt_total > MAX_DELTA_T ? MAX_DELTA_T : dt_total; + dt_total -= dt; + + // Calculate wave propagation + calc_grid(); + } + + // Compute height of each vertex + adjust_grid(); + + // Draw wave grid to OpenGL display + draw_scene(window); + + glfwPollEvents(); + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/examples/windows.c b/lib/glfw/examples/windows.c new file mode 100644 index 0000000..1589ffb --- /dev/null +++ b/lib/glfw/examples/windows.c @@ -0,0 +1,106 @@ +//======================================================================== +// Simple multi-window example +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include + +int main(int argc, char** argv) +{ + int xpos, ypos, height; + const char* description; + GLFWwindow* windows[4]; + + if (!glfwInit()) + { + glfwGetError(&description); + printf("Error: %s\n", description); + exit(EXIT_FAILURE); + } + + glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); + + glfwGetMonitorWorkarea(glfwGetPrimaryMonitor(), &xpos, &ypos, NULL, &height); + + for (int i = 0; i < 4; i++) + { + const int size = height / 5; + const struct + { + float r, g, b; + } colors[] = + { + { 0.95f, 0.32f, 0.11f }, + { 0.50f, 0.80f, 0.16f }, + { 0.f, 0.68f, 0.94f }, + { 0.98f, 0.74f, 0.04f } + }; + + if (i > 0) + glfwWindowHint(GLFW_FOCUS_ON_SHOW, GLFW_FALSE); + + glfwWindowHint(GLFW_POSITION_X, xpos + size * (1 + (i & 1))); + glfwWindowHint(GLFW_POSITION_Y, ypos + size * (1 + (i >> 1))); + + windows[i] = glfwCreateWindow(size, size, "Multi-Window Example", NULL, NULL); + if (!windows[i]) + { + glfwGetError(&description); + printf("Error: %s\n", description); + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwSetInputMode(windows[i], GLFW_STICKY_KEYS, GLFW_TRUE); + + glfwMakeContextCurrent(windows[i]); + gladLoadGL(glfwGetProcAddress); + glClearColor(colors[i].r, colors[i].g, colors[i].b, 1.f); + } + + for (;;) + { + for (int i = 0; i < 4; i++) + { + glfwMakeContextCurrent(windows[i]); + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(windows[i]); + + if (glfwWindowShouldClose(windows[i]) || + glfwGetKey(windows[i], GLFW_KEY_ESCAPE)) + { + glfwTerminate(); + exit(EXIT_SUCCESS); + } + } + + glfwWaitEvents(); + } +} + diff --git a/lib/glfw/include/GLFW/glfw3.h b/lib/glfw/include/GLFW/glfw3.h new file mode 100644 index 0000000..d4b40dd --- /dev/null +++ b/lib/glfw/include/GLFW/glfw3.h @@ -0,0 +1,6424 @@ +/************************************************************************* + * GLFW 3.4 - www.glfw.org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2019 Camilla Löwy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_h_ +#define _glfw3_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3.h + * @brief The header of the GLFW 3 API. + * + * This is the header file of the GLFW 3 API. It defines all its types and + * declares all its functions. + * + * For more information about how to use this file, see @ref build_include. + */ +/*! @defgroup context Context reference + * @brief Functions and types related to OpenGL and OpenGL ES contexts. + * + * This is the reference documentation for OpenGL and OpenGL ES context related + * functions. For more task-oriented information, see the @ref context_guide. + */ +/*! @defgroup vulkan Vulkan support reference + * @brief Functions and types related to Vulkan. + * + * This is the reference documentation for Vulkan related functions and types. + * For more task-oriented information, see the @ref vulkan_guide. + */ +/*! @defgroup init Initialization, version and error reference + * @brief Functions and types related to initialization and error handling. + * + * This is the reference documentation for initialization and termination of + * the library, version management and error handling. For more task-oriented + * information, see the @ref intro_guide. + */ +/*! @defgroup input Input reference + * @brief Functions and types related to input handling. + * + * This is the reference documentation for input related functions and types. + * For more task-oriented information, see the @ref input_guide. + */ +/*! @defgroup monitor Monitor reference + * @brief Functions and types related to monitors. + * + * This is the reference documentation for monitor related functions and types. + * For more task-oriented information, see the @ref monitor_guide. + */ +/*! @defgroup window Window reference + * @brief Functions and types related to windows. + * + * This is the reference documentation for window related functions and types, + * including creation, deletion and event polling. For more task-oriented + * information, see the @ref window_guide. + */ + + +/************************************************************************* + * Compiler- and platform-specific preprocessor work + *************************************************************************/ + +/* If we are we on Windows, we want a single define for it. + */ +#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) + #define _WIN32 +#endif /* _WIN32 */ + +/* Include because most Windows GLU headers need wchar_t and + * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +/* Include because it is needed by Vulkan and related functions. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +#if defined(GLFW_INCLUDE_VULKAN) + #include +#endif /* Vulkan header */ + +/* The Vulkan header may have indirectly included windows.h (because of + * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. + */ + +/* It is customary to use APIENTRY for OpenGL function pointer declarations on + * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. + */ +#if !defined(APIENTRY) + #if defined(_WIN32) + #define APIENTRY __stdcall + #else + #define APIENTRY + #endif + #define GLFW_APIENTRY_DEFINED +#endif /* APIENTRY */ + +/* Some Windows OpenGL headers need this. + */ +#if !defined(WINGDIAPI) && defined(_WIN32) + #define WINGDIAPI __declspec(dllimport) + #define GLFW_WINGDIAPI_DEFINED +#endif /* WINGDIAPI */ + +/* Some Windows GLU headers need this. + */ +#if !defined(CALLBACK) && defined(_WIN32) + #define CALLBACK __stdcall + #define GLFW_CALLBACK_DEFINED +#endif /* CALLBACK */ + +/* Include the chosen OpenGL or OpenGL ES headers. + */ +#if defined(GLFW_INCLUDE_ES1) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES2) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES3) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES31) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES32) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_GLCOREARB) + + #if defined(__APPLE__) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif /*GLFW_INCLUDE_GLEXT*/ + + #else /*__APPLE__*/ + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + + #endif /*__APPLE__*/ + +#elif defined(GLFW_INCLUDE_GLU) + + #if defined(__APPLE__) + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #else /*__APPLE__*/ + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #endif /*__APPLE__*/ + +#elif !defined(GLFW_INCLUDE_NONE) && \ + !defined(__gl_h_) && \ + !defined(__gles1_gl_h_) && \ + !defined(__gles2_gl2_h_) && \ + !defined(__gles2_gl3_h_) && \ + !defined(__gles2_gl31_h_) && \ + !defined(__gles2_gl32_h_) && \ + !defined(__gl_glcorearb_h_) && \ + !defined(__gl2_h_) /*legacy*/ && \ + !defined(__gl3_h_) /*legacy*/ && \ + !defined(__gl31_h_) /*legacy*/ && \ + !defined(__gl32_h_) /*legacy*/ && \ + !defined(__glcorearb_h_) /*legacy*/ && \ + !defined(__GL_H__) /*non-standard*/ && \ + !defined(__gltypes_h_) /*non-standard*/ && \ + !defined(__glee_h_) /*non-standard*/ + + #if defined(__APPLE__) + + #if !defined(GLFW_INCLUDE_GLEXT) + #define GL_GLEXT_LEGACY + #endif + #include + + #else /*__APPLE__*/ + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + + #endif /*__APPLE__*/ + +#endif /* OpenGL and OpenGL ES headers */ + +#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) + /* GLFW_DLL must be defined by applications that are linking against the DLL + * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW + * configuration header when compiling the DLL version of the library. + */ + #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" +#endif + +/* GLFWAPI is used to declare public API functions for export + * from the DLL / shared library / dynamic library. + */ +#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Win32 DLL */ + #define GLFWAPI __declspec(dllexport) +#elif defined(_WIN32) && defined(GLFW_DLL) + /* We are calling a GLFW Win32 DLL */ + #define GLFWAPI __declspec(dllimport) +#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Unix shared library */ + #define GLFWAPI __attribute__((visibility("default"))) +#else + #define GLFWAPI +#endif + + +/************************************************************************* + * GLFW API tokens + *************************************************************************/ + +/*! @name GLFW version macros + * @{ */ +/*! @brief The major version number of the GLFW header. + * + * The major version number of the GLFW header. This is incremented when the + * API is changed in non-compatible ways. + * @ingroup init + */ +#define GLFW_VERSION_MAJOR 3 +/*! @brief The minor version number of the GLFW header. + * + * The minor version number of the GLFW header. This is incremented when + * features are added to the API but it remains backward-compatible. + * @ingroup init + */ +#define GLFW_VERSION_MINOR 4 +/*! @brief The revision number of the GLFW header. + * + * The revision number of the GLFW header. This is incremented when a bug fix + * release is made that does not contain any API changes. + * @ingroup init + */ +#define GLFW_VERSION_REVISION 0 +/*! @} */ + +/*! @brief One. + * + * This is only semantic sugar for the number 1. You can instead use `1` or + * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal + * to one. + * + * @ingroup init + */ +#define GLFW_TRUE 1 +/*! @brief Zero. + * + * This is only semantic sugar for the number 0. You can instead use `0` or + * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is + * equal to zero. + * + * @ingroup init + */ +#define GLFW_FALSE 0 + +/*! @name Key and button actions + * @{ */ +/*! @brief The key or mouse button was released. + * + * The key or mouse button was released. + * + * @ingroup input + */ +#define GLFW_RELEASE 0 +/*! @brief The key or mouse button was pressed. + * + * The key or mouse button was pressed. + * + * @ingroup input + */ +#define GLFW_PRESS 1 +/*! @brief The key was held down until it repeated. + * + * The key was held down until it repeated. + * + * @ingroup input + */ +#define GLFW_REPEAT 2 +/*! @} */ + +/*! @defgroup hat_state Joystick hat states + * @brief Joystick hat states. + * + * See [joystick hat input](@ref joystick_hat) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_HAT_CENTERED 0 +#define GLFW_HAT_UP 1 +#define GLFW_HAT_RIGHT 2 +#define GLFW_HAT_DOWN 4 +#define GLFW_HAT_LEFT 8 +#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) +#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) +#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) +#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) +/*! @} */ + +/*! @defgroup keys Keyboard keys + * @brief Keyboard key IDs. + * + * See [key input](@ref input_key) for how these are used. + * + * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), + * but re-arranged to map to 7-bit ASCII for printable keys (function keys are + * put in the 256+ range). + * + * The naming of the key codes follow these rules: + * - The US keyboard layout is used + * - Names of printable alphanumeric characters are used (e.g. "A", "R", + * "3", etc.) + * - For non-alphanumeric characters, Unicode:ish names are used (e.g. + * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not + * correspond to the Unicode standard (usually for brevity) + * - Keys that lack a clear US mapping are named "WORLD_x" + * - For non-printable keys, custom names are used (e.g. "F4", + * "BACKSPACE", etc.) + * + * @ingroup input + * @{ + */ + +/* The unknown key */ +#define GLFW_KEY_UNKNOWN -1 + +/* Printable keys */ +#define GLFW_KEY_SPACE 32 +#define GLFW_KEY_APOSTROPHE 39 /* ' */ +#define GLFW_KEY_COMMA 44 /* , */ +#define GLFW_KEY_MINUS 45 /* - */ +#define GLFW_KEY_PERIOD 46 /* . */ +#define GLFW_KEY_SLASH 47 /* / */ +#define GLFW_KEY_0 48 +#define GLFW_KEY_1 49 +#define GLFW_KEY_2 50 +#define GLFW_KEY_3 51 +#define GLFW_KEY_4 52 +#define GLFW_KEY_5 53 +#define GLFW_KEY_6 54 +#define GLFW_KEY_7 55 +#define GLFW_KEY_8 56 +#define GLFW_KEY_9 57 +#define GLFW_KEY_SEMICOLON 59 /* ; */ +#define GLFW_KEY_EQUAL 61 /* = */ +#define GLFW_KEY_A 65 +#define GLFW_KEY_B 66 +#define GLFW_KEY_C 67 +#define GLFW_KEY_D 68 +#define GLFW_KEY_E 69 +#define GLFW_KEY_F 70 +#define GLFW_KEY_G 71 +#define GLFW_KEY_H 72 +#define GLFW_KEY_I 73 +#define GLFW_KEY_J 74 +#define GLFW_KEY_K 75 +#define GLFW_KEY_L 76 +#define GLFW_KEY_M 77 +#define GLFW_KEY_N 78 +#define GLFW_KEY_O 79 +#define GLFW_KEY_P 80 +#define GLFW_KEY_Q 81 +#define GLFW_KEY_R 82 +#define GLFW_KEY_S 83 +#define GLFW_KEY_T 84 +#define GLFW_KEY_U 85 +#define GLFW_KEY_V 86 +#define GLFW_KEY_W 87 +#define GLFW_KEY_X 88 +#define GLFW_KEY_Y 89 +#define GLFW_KEY_Z 90 +#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ +#define GLFW_KEY_BACKSLASH 92 /* \ */ +#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ +#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ +#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ +#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ + +/* Function keys */ +#define GLFW_KEY_ESCAPE 256 +#define GLFW_KEY_ENTER 257 +#define GLFW_KEY_TAB 258 +#define GLFW_KEY_BACKSPACE 259 +#define GLFW_KEY_INSERT 260 +#define GLFW_KEY_DELETE 261 +#define GLFW_KEY_RIGHT 262 +#define GLFW_KEY_LEFT 263 +#define GLFW_KEY_DOWN 264 +#define GLFW_KEY_UP 265 +#define GLFW_KEY_PAGE_UP 266 +#define GLFW_KEY_PAGE_DOWN 267 +#define GLFW_KEY_HOME 268 +#define GLFW_KEY_END 269 +#define GLFW_KEY_CAPS_LOCK 280 +#define GLFW_KEY_SCROLL_LOCK 281 +#define GLFW_KEY_NUM_LOCK 282 +#define GLFW_KEY_PRINT_SCREEN 283 +#define GLFW_KEY_PAUSE 284 +#define GLFW_KEY_F1 290 +#define GLFW_KEY_F2 291 +#define GLFW_KEY_F3 292 +#define GLFW_KEY_F4 293 +#define GLFW_KEY_F5 294 +#define GLFW_KEY_F6 295 +#define GLFW_KEY_F7 296 +#define GLFW_KEY_F8 297 +#define GLFW_KEY_F9 298 +#define GLFW_KEY_F10 299 +#define GLFW_KEY_F11 300 +#define GLFW_KEY_F12 301 +#define GLFW_KEY_F13 302 +#define GLFW_KEY_F14 303 +#define GLFW_KEY_F15 304 +#define GLFW_KEY_F16 305 +#define GLFW_KEY_F17 306 +#define GLFW_KEY_F18 307 +#define GLFW_KEY_F19 308 +#define GLFW_KEY_F20 309 +#define GLFW_KEY_F21 310 +#define GLFW_KEY_F22 311 +#define GLFW_KEY_F23 312 +#define GLFW_KEY_F24 313 +#define GLFW_KEY_F25 314 +#define GLFW_KEY_KP_0 320 +#define GLFW_KEY_KP_1 321 +#define GLFW_KEY_KP_2 322 +#define GLFW_KEY_KP_3 323 +#define GLFW_KEY_KP_4 324 +#define GLFW_KEY_KP_5 325 +#define GLFW_KEY_KP_6 326 +#define GLFW_KEY_KP_7 327 +#define GLFW_KEY_KP_8 328 +#define GLFW_KEY_KP_9 329 +#define GLFW_KEY_KP_DECIMAL 330 +#define GLFW_KEY_KP_DIVIDE 331 +#define GLFW_KEY_KP_MULTIPLY 332 +#define GLFW_KEY_KP_SUBTRACT 333 +#define GLFW_KEY_KP_ADD 334 +#define GLFW_KEY_KP_ENTER 335 +#define GLFW_KEY_KP_EQUAL 336 +#define GLFW_KEY_LEFT_SHIFT 340 +#define GLFW_KEY_LEFT_CONTROL 341 +#define GLFW_KEY_LEFT_ALT 342 +#define GLFW_KEY_LEFT_SUPER 343 +#define GLFW_KEY_RIGHT_SHIFT 344 +#define GLFW_KEY_RIGHT_CONTROL 345 +#define GLFW_KEY_RIGHT_ALT 346 +#define GLFW_KEY_RIGHT_SUPER 347 +#define GLFW_KEY_MENU 348 + +#define GLFW_KEY_LAST GLFW_KEY_MENU + +/*! @} */ + +/*! @defgroup mods Modifier key flags + * @brief Modifier key flags. + * + * See [key input](@ref input_key) for how these are used. + * + * @ingroup input + * @{ */ + +/*! @brief If this bit is set one or more Shift keys were held down. + * + * If this bit is set one or more Shift keys were held down. + */ +#define GLFW_MOD_SHIFT 0x0001 +/*! @brief If this bit is set one or more Control keys were held down. + * + * If this bit is set one or more Control keys were held down. + */ +#define GLFW_MOD_CONTROL 0x0002 +/*! @brief If this bit is set one or more Alt keys were held down. + * + * If this bit is set one or more Alt keys were held down. + */ +#define GLFW_MOD_ALT 0x0004 +/*! @brief If this bit is set one or more Super keys were held down. + * + * If this bit is set one or more Super keys were held down. + */ +#define GLFW_MOD_SUPER 0x0008 +/*! @brief If this bit is set the Caps Lock key is enabled. + * + * If this bit is set the Caps Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_CAPS_LOCK 0x0010 +/*! @brief If this bit is set the Num Lock key is enabled. + * + * If this bit is set the Num Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_NUM_LOCK 0x0020 + +/*! @} */ + +/*! @defgroup buttons Mouse buttons + * @brief Mouse button IDs. + * + * See [mouse button input](@ref input_mouse_button) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_MOUSE_BUTTON_1 0 +#define GLFW_MOUSE_BUTTON_2 1 +#define GLFW_MOUSE_BUTTON_3 2 +#define GLFW_MOUSE_BUTTON_4 3 +#define GLFW_MOUSE_BUTTON_5 4 +#define GLFW_MOUSE_BUTTON_6 5 +#define GLFW_MOUSE_BUTTON_7 6 +#define GLFW_MOUSE_BUTTON_8 7 +#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 +#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 +#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 +#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 +/*! @} */ + +/*! @defgroup joysticks Joysticks + * @brief Joystick IDs. + * + * See [joystick input](@ref joystick) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_JOYSTICK_1 0 +#define GLFW_JOYSTICK_2 1 +#define GLFW_JOYSTICK_3 2 +#define GLFW_JOYSTICK_4 3 +#define GLFW_JOYSTICK_5 4 +#define GLFW_JOYSTICK_6 5 +#define GLFW_JOYSTICK_7 6 +#define GLFW_JOYSTICK_8 7 +#define GLFW_JOYSTICK_9 8 +#define GLFW_JOYSTICK_10 9 +#define GLFW_JOYSTICK_11 10 +#define GLFW_JOYSTICK_12 11 +#define GLFW_JOYSTICK_13 12 +#define GLFW_JOYSTICK_14 13 +#define GLFW_JOYSTICK_15 14 +#define GLFW_JOYSTICK_16 15 +#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 +/*! @} */ + +/*! @defgroup gamepad_buttons Gamepad buttons + * @brief Gamepad buttons. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_BUTTON_A 0 +#define GLFW_GAMEPAD_BUTTON_B 1 +#define GLFW_GAMEPAD_BUTTON_X 2 +#define GLFW_GAMEPAD_BUTTON_Y 3 +#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 +#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 +#define GLFW_GAMEPAD_BUTTON_BACK 6 +#define GLFW_GAMEPAD_BUTTON_START 7 +#define GLFW_GAMEPAD_BUTTON_GUIDE 8 +#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 +#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 +#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 +#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 +#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 +#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 +#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT + +#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A +#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B +#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X +#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y +/*! @} */ + +/*! @defgroup gamepad_axes Gamepad axes + * @brief Gamepad axes. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_AXIS_LEFT_X 0 +#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 +#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 +#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 +#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 +#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 +#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER +/*! @} */ + +/*! @defgroup errors Error codes + * @brief Error codes. + * + * See [error handling](@ref error_handling) for how these are used. + * + * @ingroup init + * @{ */ +/*! @brief No error has occurred. + * + * No error has occurred. + * + * @analysis Yay. + */ +#define GLFW_NO_ERROR 0 +/*! @brief GLFW has not been initialized. + * + * This occurs if a GLFW function was called that must not be called unless the + * library is [initialized](@ref intro_init). + * + * @analysis Application programmer error. Initialize GLFW before calling any + * function that requires initialization. + */ +#define GLFW_NOT_INITIALIZED 0x00010001 +/*! @brief No context is current for this thread. + * + * This occurs if a GLFW function was called that needs and operates on the + * current OpenGL or OpenGL ES context but no context is current on the calling + * thread. One such function is @ref glfwSwapInterval. + * + * @analysis Application programmer error. Ensure a context is current before + * calling functions that require a current context. + */ +#define GLFW_NO_CURRENT_CONTEXT 0x00010002 +/*! @brief One of the arguments to the function was an invalid enum value. + * + * One of the arguments to the function was an invalid enum value, for example + * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_ENUM 0x00010003 +/*! @brief One of the arguments to the function was an invalid value. + * + * One of the arguments to the function was an invalid value, for example + * requesting a non-existent OpenGL or OpenGL ES version like 2.7. + * + * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead + * result in a @ref GLFW_VERSION_UNAVAILABLE error. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_VALUE 0x00010004 +/*! @brief A memory allocation failed. + * + * A memory allocation failed. + * + * @analysis A bug in GLFW or the underlying operating system. Report the bug + * to our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_OUT_OF_MEMORY 0x00010005 +/*! @brief GLFW could not find support for the requested API on the system. + * + * GLFW could not find support for the requested API on the system. + * + * @analysis The installed graphics driver does not support the requested + * API, or does not support it via the chosen context creation API. + * Below are a few examples. + * + * @par + * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only + * supports OpenGL ES via EGL, while Nvidia and Intel only support it via + * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa + * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary + * driver. Older graphics drivers do not support Vulkan. + */ +#define GLFW_API_UNAVAILABLE 0x00010006 +/*! @brief The requested OpenGL or OpenGL ES version is not available. + * + * The requested OpenGL or OpenGL ES version (including any requested context + * or framebuffer hints) is not available on this machine. + * + * @analysis The machine does not support your requirements. If your + * application is sufficiently flexible, downgrade your requirements and try + * again. Otherwise, inform the user that their machine does not match your + * requirements. + * + * @par + * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 + * comes out before the 4.x series gets that far, also fail with this error and + * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions + * will exist. + */ +#define GLFW_VERSION_UNAVAILABLE 0x00010007 +/*! @brief A platform-specific error occurred that does not match any of the + * more specific categories. + * + * A platform-specific error occurred that does not match any of the more + * specific categories. + * + * @analysis A bug or configuration error in GLFW, the underlying operating + * system or its drivers, or a lack of required resources. Report the issue to + * our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_PLATFORM_ERROR 0x00010008 +/*! @brief The requested format is not supported or available. + * + * If emitted during window creation, the requested pixel format is not + * supported. + * + * If emitted when querying the clipboard, the contents of the clipboard could + * not be converted to the requested format. + * + * @analysis If emitted during window creation, one or more + * [hard constraints](@ref window_hints_hard) did not match any of the + * available pixel formats. If your application is sufficiently flexible, + * downgrade your requirements and try again. Otherwise, inform the user that + * their machine does not match your requirements. + * + * @par + * If emitted when querying the clipboard, ignore the error or report it to + * the user, as appropriate. + */ +#define GLFW_FORMAT_UNAVAILABLE 0x00010009 +/*! @brief The specified window does not have an OpenGL or OpenGL ES context. + * + * A window that does not have an OpenGL or OpenGL ES context was passed to + * a function that requires it to have one. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_NO_WINDOW_CONTEXT 0x0001000A +/*! @brief The specified cursor shape is not available. + * + * The specified standard cursor shape is not available, either because the + * current platform cursor theme does not provide it or because it is not + * available on the platform. + * + * @analysis Platform or system settings limitation. Pick another + * [standard cursor shape](@ref shapes) or create a + * [custom cursor](@ref cursor_custom). + */ +#define GLFW_CURSOR_UNAVAILABLE 0x0001000B +/*! @brief The requested feature is not provided by the platform. + * + * The requested feature is not provided by the platform, so GLFW is unable to + * implement it. The documentation for each function notes if it could emit + * this error. + * + * @analysis Platform or platform version limitation. The error can be ignored + * unless the feature is critical to the application. + * + * @par + * A function call that emits this error has no effect other than the error and + * updating any existing out parameters. + */ +#define GLFW_FEATURE_UNAVAILABLE 0x0001000C +/*! @brief The requested feature is not implemented for the platform. + * + * The requested feature has not yet been implemented in GLFW for this platform. + * + * @analysis An incomplete implementation of GLFW for this platform, hopefully + * fixed in a future release. The error can be ignored unless the feature is + * critical to the application. + * + * @par + * A function call that emits this error has no effect other than the error and + * updating any existing out parameters. + */ +#define GLFW_FEATURE_UNIMPLEMENTED 0x0001000D +/*! @brief Platform unavailable or no matching platform was found. + * + * If emitted during initialization, no matching platform was found. If @ref + * GLFW_PLATFORM is set to `GLFW_ANY_PLATFORM`, GLFW could not detect any of the + * platforms supported by this library binary, except for the Null platform. If set to + * a specific platform, it is either not supported by this library binary or GLFW was not + * able to detect it. + * + * If emitted by a native access function, GLFW was initialized for a different platform + * than the function is for. + * + * @analysis Failure to detect any platform usually only happens on non-macOS Unix + * systems, either when no window system is running or the program was run from + * a terminal that does not have the necessary environment variables. Fall back to + * a different platform if possible or notify the user that no usable platform was + * detected. + * + * Failure to detect a specific platform may have the same cause as above or be because + * support for that platform was not compiled in. Call @ref glfwPlatformSupported to + * check whether a specific platform is supported by a library binary. + */ +#define GLFW_PLATFORM_UNAVAILABLE 0x0001000E +/*! @} */ + +/*! @addtogroup window + * @{ */ +/*! @brief Input focus window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUSED_hint) or + * [window attribute](@ref GLFW_FOCUSED_attrib). + */ +#define GLFW_FOCUSED 0x00020001 +/*! @brief Window iconification window attribute + * + * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). + */ +#define GLFW_ICONIFIED 0x00020002 +/*! @brief Window resize-ability window hint and attribute + * + * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and + * [window attribute](@ref GLFW_RESIZABLE_attrib). + */ +#define GLFW_RESIZABLE 0x00020003 +/*! @brief Window visibility window hint and attribute + * + * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and + * [window attribute](@ref GLFW_VISIBLE_attrib). + */ +#define GLFW_VISIBLE 0x00020004 +/*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_DECORATED_hint) and + * [window attribute](@ref GLFW_DECORATED_attrib). + */ +#define GLFW_DECORATED 0x00020005 +/*! @brief Window auto-iconification window hint and attribute + * + * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and + * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). + */ +#define GLFW_AUTO_ICONIFY 0x00020006 +/*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_FLOATING_hint) and + * [window attribute](@ref GLFW_FLOATING_attrib). + */ +#define GLFW_FLOATING 0x00020007 +/*! @brief Window maximization window hint and attribute + * + * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and + * [window attribute](@ref GLFW_MAXIMIZED_attrib). + */ +#define GLFW_MAXIMIZED 0x00020008 +/*! @brief Cursor centering window hint + * + * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). + */ +#define GLFW_CENTER_CURSOR 0x00020009 +/*! @brief Window framebuffer transparency hint and attribute + * + * Window framebuffer transparency + * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and + * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). + */ +#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A +/*! @brief Mouse cursor hover window attribute. + * + * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). + */ +#define GLFW_HOVERED 0x0002000B +/*! @brief Input focus on calling show window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or + * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). + */ +#define GLFW_FOCUS_ON_SHOW 0x0002000C + +/*! @brief Mouse input transparency window hint and attribute + * + * Mouse input transparency [window hint](@ref GLFW_MOUSE_PASSTHROUGH_hint) or + * [window attribute](@ref GLFW_MOUSE_PASSTHROUGH_attrib). + */ +#define GLFW_MOUSE_PASSTHROUGH 0x0002000D + +/*! @brief Initial position x-coordinate window hint. + * + * Initial position x-coordinate [window hint](@ref GLFW_POSITION_X). + */ +#define GLFW_POSITION_X 0x0002000E + +/*! @brief Initial position y-coordinate window hint. + * + * Initial position y-coordinate [window hint](@ref GLFW_POSITION_Y). + */ +#define GLFW_POSITION_Y 0x0002000F + +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). + */ +#define GLFW_RED_BITS 0x00021001 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). + */ +#define GLFW_GREEN_BITS 0x00021002 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). + */ +#define GLFW_BLUE_BITS 0x00021003 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). + */ +#define GLFW_ALPHA_BITS 0x00021004 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). + */ +#define GLFW_DEPTH_BITS 0x00021005 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). + */ +#define GLFW_STENCIL_BITS 0x00021006 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). + */ +#define GLFW_ACCUM_RED_BITS 0x00021007 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). + */ +#define GLFW_ACCUM_GREEN_BITS 0x00021008 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). + */ +#define GLFW_ACCUM_BLUE_BITS 0x00021009 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). + */ +#define GLFW_ACCUM_ALPHA_BITS 0x0002100A +/*! @brief Framebuffer auxiliary buffer hint. + * + * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). + */ +#define GLFW_AUX_BUFFERS 0x0002100B +/*! @brief OpenGL stereoscopic rendering hint. + * + * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). + */ +#define GLFW_STEREO 0x0002100C +/*! @brief Framebuffer MSAA samples hint. + * + * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). + */ +#define GLFW_SAMPLES 0x0002100D +/*! @brief Framebuffer sRGB hint. + * + * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). + */ +#define GLFW_SRGB_CAPABLE 0x0002100E +/*! @brief Monitor refresh rate hint. + * + * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). + */ +#define GLFW_REFRESH_RATE 0x0002100F +/*! @brief Framebuffer double buffering hint and attribute. + * + * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER_hint) and + * [attribute](@ref GLFW_DOUBLEBUFFER_attrib). + */ +#define GLFW_DOUBLEBUFFER 0x00021010 + +/*! @brief Context client API hint and attribute. + * + * Context client API [hint](@ref GLFW_CLIENT_API_hint) and + * [attribute](@ref GLFW_CLIENT_API_attrib). + */ +#define GLFW_CLIENT_API 0x00022001 +/*! @brief Context client API major version hint and attribute. + * + * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 +/*! @brief Context client API minor version hint and attribute. + * + * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 +/*! @brief Context client API revision number attribute. + * + * Context client API revision number + * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). + */ +#define GLFW_CONTEXT_REVISION 0x00022004 +/*! @brief Context robustness hint and attribute. + * + * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) + * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). + */ +#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 +/*! @brief OpenGL forward-compatibility hint and attribute. + * + * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) + * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). + */ +#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 +/*! @brief Debug mode context hint and attribute. + * + * Debug mode context [hint](@ref GLFW_CONTEXT_DEBUG_hint) and + * [attribute](@ref GLFW_CONTEXT_DEBUG_attrib). + */ +#define GLFW_CONTEXT_DEBUG 0x00022007 +/*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_OPENGL_DEBUG_CONTEXT GLFW_CONTEXT_DEBUG +/*! @brief OpenGL profile hint and attribute. + * + * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and + * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). + */ +#define GLFW_OPENGL_PROFILE 0x00022008 +/*! @brief Context flush-on-release hint and attribute. + * + * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and + * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). + */ +#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 +/*! @brief Context error suppression hint and attribute. + * + * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and + * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). + */ +#define GLFW_CONTEXT_NO_ERROR 0x0002200A +/*! @brief Context creation API hint and attribute. + * + * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and + * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). + */ +#define GLFW_CONTEXT_CREATION_API 0x0002200B +/*! @brief Window content area scaling window + * [window hint](@ref GLFW_SCALE_TO_MONITOR). + */ +#define GLFW_SCALE_TO_MONITOR 0x0002200C +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). + */ +#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). + */ +#define GLFW_COCOA_FRAME_NAME 0x00023002 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). + */ +#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_CLASS_NAME 0x00024001 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_INSTANCE_NAME 0x00024002 +#define GLFW_WIN32_KEYBOARD_MENU 0x00025001 +/*! @brief Wayland specific + * [window hint](@ref GLFW_WAYLAND_APP_ID_hint). + * + * Allows specification of the Wayland app_id. + */ +#define GLFW_WAYLAND_APP_ID 0x00026001 +/*! @} */ + +#define GLFW_NO_API 0 +#define GLFW_OPENGL_API 0x00030001 +#define GLFW_OPENGL_ES_API 0x00030002 + +#define GLFW_NO_ROBUSTNESS 0 +#define GLFW_NO_RESET_NOTIFICATION 0x00031001 +#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 + +#define GLFW_OPENGL_ANY_PROFILE 0 +#define GLFW_OPENGL_CORE_PROFILE 0x00032001 +#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 + +#define GLFW_CURSOR 0x00033001 +#define GLFW_STICKY_KEYS 0x00033002 +#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 +#define GLFW_LOCK_KEY_MODS 0x00033004 +#define GLFW_RAW_MOUSE_MOTION 0x00033005 + +#define GLFW_CURSOR_NORMAL 0x00034001 +#define GLFW_CURSOR_HIDDEN 0x00034002 +#define GLFW_CURSOR_DISABLED 0x00034003 +#define GLFW_CURSOR_CAPTURED 0x00034004 + +#define GLFW_ANY_RELEASE_BEHAVIOR 0 +#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 +#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 + +#define GLFW_NATIVE_CONTEXT_API 0x00036001 +#define GLFW_EGL_CONTEXT_API 0x00036002 +#define GLFW_OSMESA_CONTEXT_API 0x00036003 + +#define GLFW_ANGLE_PLATFORM_TYPE_NONE 0x00037001 +#define GLFW_ANGLE_PLATFORM_TYPE_OPENGL 0x00037002 +#define GLFW_ANGLE_PLATFORM_TYPE_OPENGLES 0x00037003 +#define GLFW_ANGLE_PLATFORM_TYPE_D3D9 0x00037004 +#define GLFW_ANGLE_PLATFORM_TYPE_D3D11 0x00037005 +#define GLFW_ANGLE_PLATFORM_TYPE_VULKAN 0x00037007 +#define GLFW_ANGLE_PLATFORM_TYPE_METAL 0x00037008 + +#define GLFW_ANY_POSITION 0x80000000 + +/*! @defgroup shapes Standard cursor shapes + * @brief Standard system cursor shapes. + * + * These are the [standard cursor shapes](@ref cursor_standard) that can be + * requested from the platform (window system). + * + * @ingroup input + * @{ */ + +/*! @brief The regular arrow cursor shape. + * + * The regular arrow cursor shape. + */ +#define GLFW_ARROW_CURSOR 0x00036001 +/*! @brief The text input I-beam cursor shape. + * + * The text input I-beam cursor shape. + */ +#define GLFW_IBEAM_CURSOR 0x00036002 +/*! @brief The crosshair cursor shape. + * + * The crosshair cursor shape. + */ +#define GLFW_CROSSHAIR_CURSOR 0x00036003 +/*! @brief The pointing hand cursor shape. + * + * The pointing hand cursor shape. + */ +#define GLFW_POINTING_HAND_CURSOR 0x00036004 +/*! @brief The horizontal resize/move arrow shape. + * + * The horizontal resize/move arrow shape. This is usually a horizontal + * double-headed arrow. + */ +#define GLFW_RESIZE_EW_CURSOR 0x00036005 +/*! @brief The vertical resize/move arrow shape. + * + * The vertical resize/move shape. This is usually a vertical double-headed + * arrow. + */ +#define GLFW_RESIZE_NS_CURSOR 0x00036006 +/*! @brief The top-left to bottom-right diagonal resize/move arrow shape. + * + * The top-left to bottom-right diagonal resize/move shape. This is usually + * a diagonal double-headed arrow. + * + * @note @macos This shape is provided by a private system API and may fail + * with @ref GLFW_CURSOR_UNAVAILABLE in the future. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_RESIZE_NWSE_CURSOR 0x00036007 +/*! @brief The top-right to bottom-left diagonal resize/move arrow shape. + * + * The top-right to bottom-left diagonal resize/move shape. This is usually + * a diagonal double-headed arrow. + * + * @note @macos This shape is provided by a private system API and may fail + * with @ref GLFW_CURSOR_UNAVAILABLE in the future. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_RESIZE_NESW_CURSOR 0x00036008 +/*! @brief The omni-directional resize/move cursor shape. + * + * The omni-directional resize cursor/move shape. This is usually either + * a combined horizontal and vertical double-headed arrow or a grabbing hand. + */ +#define GLFW_RESIZE_ALL_CURSOR 0x00036009 +/*! @brief The operation-not-allowed shape. + * + * The operation-not-allowed shape. This is usually a circle with a diagonal + * line through it. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_NOT_ALLOWED_CURSOR 0x0003600A +/*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_HRESIZE_CURSOR GLFW_RESIZE_EW_CURSOR +/*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_VRESIZE_CURSOR GLFW_RESIZE_NS_CURSOR +/*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_HAND_CURSOR GLFW_POINTING_HAND_CURSOR +/*! @} */ + +#define GLFW_CONNECTED 0x00040001 +#define GLFW_DISCONNECTED 0x00040002 + +/*! @addtogroup init + * @{ */ +/*! @brief Joystick hat buttons init hint. + * + * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). + */ +#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 +/*! @brief ANGLE rendering backend init hint. + * + * ANGLE rendering backend [init hint](@ref GLFW_ANGLE_PLATFORM_TYPE_hint). + */ +#define GLFW_ANGLE_PLATFORM_TYPE 0x00050002 +/*! @brief Platform selection init hint. + * + * Platform selection [init hint](@ref GLFW_PLATFORM). + */ +#define GLFW_PLATFORM 0x00050003 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). + */ +#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). + */ +#define GLFW_COCOA_MENUBAR 0x00051002 +/*! @brief X11 specific init hint. + * + * X11 specific [init hint](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint). + */ +#define GLFW_X11_XCB_VULKAN_SURFACE 0x00052001 +/*! @} */ + +/*! @addtogroup init + * @{ */ +/*! @brief Hint value that enables automatic platform selection. + * + * Hint value for @ref GLFW_PLATFORM that enables automatic platform selection. + */ +#define GLFW_ANY_PLATFORM 0x00060000 +#define GLFW_PLATFORM_WIN32 0x00060001 +#define GLFW_PLATFORM_COCOA 0x00060002 +#define GLFW_PLATFORM_WAYLAND 0x00060003 +#define GLFW_PLATFORM_X11 0x00060004 +#define GLFW_PLATFORM_NULL 0x00060005 +/*! @} */ + +#define GLFW_DONT_CARE -1 + + +/************************************************************************* + * GLFW API types + *************************************************************************/ + +/*! @brief Client API function pointer type. + * + * Generic function pointer used for returning client API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 3.0. + * + * @ingroup context + */ +typedef void (*GLFWglproc)(void); + +/*! @brief Vulkan API function pointer type. + * + * Generic function pointer used for returning Vulkan API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref vulkan_proc + * @sa @ref glfwGetInstanceProcAddress + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +typedef void (*GLFWvkproc)(void); + +/*! @brief Opaque monitor object. + * + * Opaque monitor object. + * + * @see @ref monitor_object + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef struct GLFWmonitor GLFWmonitor; + +/*! @brief Opaque window object. + * + * Opaque window object. + * + * @see @ref window_object + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef struct GLFWwindow GLFWwindow; + +/*! @brief Opaque cursor object. + * + * Opaque cursor object. + * + * @see @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef struct GLFWcursor GLFWcursor; + +/*! @brief The function pointer type for memory allocation callbacks. + * + * This is the function pointer type for memory allocation callbacks. A memory + * allocation callback function has the following signature: + * @code + * void* function_name(size_t size, void* user) + * @endcode + * + * This function must return either a memory block at least `size` bytes long, + * or `NULL` if allocation failed. Note that not all parts of GLFW handle allocation + * failures gracefully yet. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * Any memory allocated by this function will be deallocated during library + * termination or earlier. + * + * The size will always be greater than zero. Allocations of size zero are filtered out + * before reaching the custom allocator. + * + * @param[in] size The minimum size, in bytes, of the memory block. + * @param[in] user The user-defined pointer from the allocator. + * @return The address of the newly allocated memory block, or `NULL` if an + * error occurred. + * + * @pointer_lifetime The returned memory block must be valid at least until it + * is deallocated. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ +typedef void* (* GLFWallocatefun)(size_t size, void* user); + +/*! @brief The function pointer type for memory reallocation callbacks. + * + * This is the function pointer type for memory reallocation callbacks. + * A memory reallocation callback function has the following signature: + * @code + * void* function_name(void* block, size_t size, void* user) + * @endcode + * + * This function must return a memory block at least `size` bytes long, or + * `NULL` if allocation failed. Note that not all parts of GLFW handle allocation + * failures gracefully yet. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * Any memory allocated by this function will be deallocated during library + * termination or earlier. + * + * The block address will never be `NULL` and the size will always be greater than zero. + * Reallocations of a block to size zero are converted into deallocations. Reallocations + * of `NULL` to a non-zero size are converted into regular allocations. + * + * @param[in] block The address of the memory block to reallocate. + * @param[in] size The new minimum size, in bytes, of the memory block. + * @param[in] user The user-defined pointer from the allocator. + * @return The address of the newly allocated or resized memory block, or + * `NULL` if an error occurred. + * + * @pointer_lifetime The returned memory block must be valid at least until it + * is deallocated. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ +typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user); + +/*! @brief The function pointer type for memory deallocation callbacks. + * + * This is the function pointer type for memory deallocation callbacks. + * A memory deallocation callback function has the following signature: + * @code + * void function_name(void* block, void* user) + * @endcode + * + * This function may deallocate the specified memory block. This memory block + * will have been allocated with the same allocator. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * The block address will never be `NULL`. Deallocations of `NULL` are filtered out + * before reaching the custom allocator. + * + * @param[in] block The address of the memory block to deallocate. + * @param[in] user The user-defined pointer from the allocator. + * + * @pointer_lifetime The specified memory block will not be accessed by GLFW + * after this function is called. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ +typedef void (* GLFWdeallocatefun)(void* block, void* user); + +/*! @brief The function pointer type for error callbacks. + * + * This is the function pointer type for error callbacks. An error callback + * function has the following signature: + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * + * @param[in] error_code An [error code](@ref errors). Future releases may add + * more error codes. + * @param[in] description A UTF-8 encoded string describing the error. + * + * @pointer_lifetime The error description string is valid until the callback + * function returns. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.0. + * + * @ingroup init + */ +typedef void (* GLFWerrorfun)(int error_code, const char* description); + +/*! @brief The function pointer type for window position callbacks. + * + * This is the function pointer type for window position callbacks. A window + * position callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * + * @param[in] window The window that was moved. + * @param[in] xpos The new x-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * @param[in] ypos The new y-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPosCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowposfun)(GLFWwindow* window, int xpos, int ypos); + +/*! @brief The function pointer type for window size callbacks. + * + * This is the function pointer type for window size callbacks. A window size + * callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window that was resized. + * @param[in] width The new width, in screen coordinates, of the window. + * @param[in] height The new height, in screen coordinates, of the window. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSizeCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowsizefun)(GLFWwindow* window, int width, int height); + +/*! @brief The function pointer type for window close callbacks. + * + * This is the function pointer type for window close callbacks. A window + * close callback function has the following signature: + * @code + * void function_name(GLFWwindow* window) + * @endcode + * + * @param[in] window The window that the user attempted to close. + * + * @sa @ref window_close + * @sa @ref glfwSetWindowCloseCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowclosefun)(GLFWwindow* window); + +/*! @brief The function pointer type for window content refresh callbacks. + * + * This is the function pointer type for window content refresh callbacks. + * A window content refresh callback function has the following signature: + * @code + * void function_name(GLFWwindow* window); + * @endcode + * + * @param[in] window The window whose content needs to be refreshed. + * + * @sa @ref window_refresh + * @sa @ref glfwSetWindowRefreshCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowrefreshfun)(GLFWwindow* window); + +/*! @brief The function pointer type for window focus callbacks. + * + * This is the function pointer type for window focus callbacks. A window + * focus callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * + * @param[in] window The window that gained or lost input focus. + * @param[in] focused `GLFW_TRUE` if the window was given input focus, or + * `GLFW_FALSE` if it lost it. + * + * @sa @ref window_focus + * @sa @ref glfwSetWindowFocusCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowfocusfun)(GLFWwindow* window, int focused); + +/*! @brief The function pointer type for window iconify callbacks. + * + * This is the function pointer type for window iconify callbacks. A window + * iconify callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * + * @param[in] window The window that was iconified or restored. + * @param[in] iconified `GLFW_TRUE` if the window was iconified, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_iconify + * @sa @ref glfwSetWindowIconifyCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowiconifyfun)(GLFWwindow* window, int iconified); + +/*! @brief The function pointer type for window maximize callbacks. + * + * This is the function pointer type for window maximize callbacks. A window + * maximize callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * + * @param[in] window The window that was maximized or restored. + * @param[in] maximized `GLFW_TRUE` if the window was maximized, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_maximize + * @sa glfwSetWindowMaximizeCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ +typedef void (* GLFWwindowmaximizefun)(GLFWwindow* window, int maximized); + +/*! @brief The function pointer type for framebuffer size callbacks. + * + * This is the function pointer type for framebuffer size callbacks. + * A framebuffer size callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window whose framebuffer was resized. + * @param[in] width The new width, in pixels, of the framebuffer. + * @param[in] height The new height, in pixels, of the framebuffer. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWframebuffersizefun)(GLFWwindow* window, int width, int height); + +/*! @brief The function pointer type for window content scale callbacks. + * + * This is the function pointer type for window content scale callbacks. + * A window content scale callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * + * @param[in] window The window whose content scale changed. + * @param[in] xscale The new x-axis content scale of the window. + * @param[in] yscale The new y-axis content scale of the window. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ +typedef void (* GLFWwindowcontentscalefun)(GLFWwindow* window, float xscale, float yscale); + +/*! @brief The function pointer type for mouse button callbacks. + * + * This is the function pointer type for mouse button callback functions. + * A mouse button callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] button The [mouse button](@ref buttons) that was pressed or + * released. + * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases + * may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_mouse_button + * @sa @ref glfwSetMouseButtonCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle and modifier mask parameters. + * + * @ingroup input + */ +typedef void (* GLFWmousebuttonfun)(GLFWwindow* window, int button, int action, int mods); + +/*! @brief The function pointer type for cursor position callbacks. + * + * This is the function pointer type for cursor position callbacks. A cursor + * position callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xpos The new cursor x-coordinate, relative to the left edge of + * the content area. + * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the + * content area. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPosCallback + * + * @since Added in version 3.0. Replaces `GLFWmouseposfun`. + * + * @ingroup input + */ +typedef void (* GLFWcursorposfun)(GLFWwindow* window, double xpos, double ypos); + +/*! @brief The function pointer type for cursor enter/leave callbacks. + * + * This is the function pointer type for cursor enter/leave callbacks. + * A cursor enter/leave callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content + * area, or `GLFW_FALSE` if it left it. + * + * @sa @ref cursor_enter + * @sa @ref glfwSetCursorEnterCallback + * + * @since Added in version 3.0. + * + * @ingroup input + */ +typedef void (* GLFWcursorenterfun)(GLFWwindow* window, int entered); + +/*! @brief The function pointer type for scroll callbacks. + * + * This is the function pointer type for scroll callbacks. A scroll callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xoffset The scroll offset along the x-axis. + * @param[in] yoffset The scroll offset along the y-axis. + * + * @sa @ref scrolling + * @sa @ref glfwSetScrollCallback + * + * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. + * + * @ingroup input + */ +typedef void (* GLFWscrollfun)(GLFWwindow* window, double xoffset, double yoffset); + +/*! @brief The function pointer type for keyboard key callbacks. + * + * This is the function pointer type for keyboard key callbacks. A keyboard + * key callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] key The [keyboard key](@ref keys) that was pressed or released. + * @param[in] scancode The platform-specific scancode of the key. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future + * releases may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_key + * @sa @ref glfwSetKeyCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle, scancode and modifier mask parameters. + * + * @ingroup input + */ +typedef void (* GLFWkeyfun)(GLFWwindow* window, int key, int scancode, int action, int mods); + +/*! @brief The function pointer type for Unicode character callbacks. + * + * This is the function pointer type for Unicode character callbacks. + * A Unicode character callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * + * @sa @ref input_char + * @sa @ref glfwSetCharCallback + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +typedef void (* GLFWcharfun)(GLFWwindow* window, unsigned int codepoint); + +/*! @brief The function pointer type for Unicode character with modifiers + * callbacks. + * + * This is the function pointer type for Unicode character with modifiers + * callbacks. It is called for each input character, regardless of what + * modifier keys are held down. A Unicode character with modifiers callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_char + * @sa @ref glfwSetCharModsCallback + * + * @deprecated Scheduled for removal in version 4.0. + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef void (* GLFWcharmodsfun)(GLFWwindow* window, unsigned int codepoint, int mods); + +/*! @brief The function pointer type for path drop callbacks. + * + * This is the function pointer type for path drop callbacks. A path drop + * callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] path_count The number of dropped paths. + * @param[in] paths The UTF-8 encoded file and/or directory path names. + * + * @pointer_lifetime The path array and its strings are valid until the + * callback function returns. + * + * @sa @ref path_drop + * @sa @ref glfwSetDropCallback + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef void (* GLFWdropfun)(GLFWwindow* window, int path_count, const char* paths[]); + +/*! @brief The function pointer type for monitor configuration callbacks. + * + * This is the function pointer type for monitor configuration callbacks. + * A monitor callback function has the following signature: + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * + * @param[in] monitor The monitor that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref monitor_event + * @sa @ref glfwSetMonitorCallback + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef void (* GLFWmonitorfun)(GLFWmonitor* monitor, int event); + +/*! @brief The function pointer type for joystick configuration callbacks. + * + * This is the function pointer type for joystick configuration callbacks. + * A joystick configuration callback function has the following signature: + * @code + * void function_name(int jid, int event) + * @endcode + * + * @param[in] jid The joystick that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref joystick_event + * @sa @ref glfwSetJoystickCallback + * + * @since Added in version 3.2. + * + * @ingroup input + */ +typedef void (* GLFWjoystickfun)(int jid, int event); + +/*! @brief Video mode type. + * + * This describes a single video mode. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * @sa @ref glfwGetVideoModes + * + * @since Added in version 1.0. + * @glfw3 Added refresh rate member. + * + * @ingroup monitor + */ +typedef struct GLFWvidmode +{ + /*! The width, in screen coordinates, of the video mode. + */ + int width; + /*! The height, in screen coordinates, of the video mode. + */ + int height; + /*! The bit depth of the red channel of the video mode. + */ + int redBits; + /*! The bit depth of the green channel of the video mode. + */ + int greenBits; + /*! The bit depth of the blue channel of the video mode. + */ + int blueBits; + /*! The refresh rate, in Hz, of the video mode. + */ + int refreshRate; +} GLFWvidmode; + +/*! @brief Gamma ramp. + * + * This describes the gamma ramp for a monitor. + * + * @sa @ref monitor_gamma + * @sa @ref glfwGetGammaRamp + * @sa @ref glfwSetGammaRamp + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef struct GLFWgammaramp +{ + /*! An array of value describing the response of the red channel. + */ + unsigned short* red; + /*! An array of value describing the response of the green channel. + */ + unsigned short* green; + /*! An array of value describing the response of the blue channel. + */ + unsigned short* blue; + /*! The number of elements in each array. + */ + unsigned int size; +} GLFWgammaramp; + +/*! @brief Image data. + * + * This describes a single 2D image. See the documentation for each related + * function what the expected pixel format is. + * + * @sa @ref cursor_custom + * @sa @ref window_icon + * + * @since Added in version 2.1. + * @glfw3 Removed format and bytes-per-pixel members. + * + * @ingroup window + */ +typedef struct GLFWimage +{ + /*! The width, in pixels, of this image. + */ + int width; + /*! The height, in pixels, of this image. + */ + int height; + /*! The pixel data of this image, arranged left-to-right, top-to-bottom. + */ + unsigned char* pixels; +} GLFWimage; + +/*! @brief Gamepad input state + * + * This describes the input state of a gamepad. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ +typedef struct GLFWgamepadstate +{ + /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` + * or `GLFW_RELEASE`. + */ + unsigned char buttons[15]; + /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 + * to 1.0 inclusive. + */ + float axes[6]; +} GLFWgamepadstate; + +/*! @brief + * + * @sa @ref init_allocator + * @sa @ref glfwInitAllocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ +typedef struct GLFWallocator +{ + GLFWallocatefun allocate; + GLFWreallocatefun reallocate; + GLFWdeallocatefun deallocate; + void* user; +} GLFWallocator; + + +/************************************************************************* + * GLFW API functions + *************************************************************************/ + +/*! @brief Initializes the GLFW library. + * + * This function initializes the GLFW library. Before most GLFW functions can + * be used, GLFW must be initialized, and before an application terminates GLFW + * should be terminated in order to free any resources allocated during or + * after initialization. + * + * If this function fails, it calls @ref glfwTerminate before returning. If it + * succeeds, you should call @ref glfwTerminate before the application exits. + * + * Additional calls to this function after successful initialization but before + * termination will return `GLFW_TRUE` immediately. + * + * The @ref GLFW_PLATFORM init hint controls which platforms are considered during + * initialization. This also depends on which platforms the library was compiled to + * support. + * + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_PLATFORM_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos This function will change the current directory of the + * application to the `Contents/Resources` subdirectory of the application's + * bundle, if present. This can be disabled with the @ref + * GLFW_COCOA_CHDIR_RESOURCES init hint. + * + * @remark @macos This function will create the main menu and dock icon for the + * application. If GLFW finds a `MainMenu.nib` it is loaded and assumed to + * contain a menu bar. Otherwise a minimal menu bar is created manually with + * common commands like Hide, Quit and About. The About entry opens a minimal + * about dialog with information from the application's bundle. The menu bar + * and dock icon can be disabled entirely with the @ref GLFW_COCOA_MENUBAR init + * hint. + * + * @remark @x11 This function will set the `LC_CTYPE` category of the + * application locale according to the current environment if that category is + * still "C". This is because the "C" locale breaks Unicode text input. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInitHint + * @sa @ref glfwInitAllocator + * @sa @ref glfwTerminate + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI int glfwInit(void); + +/*! @brief Terminates the GLFW library. + * + * This function destroys all remaining windows and cursors, restores any + * modified gamma ramps and frees any other allocated resources. Once this + * function is called, you must again call @ref glfwInit successfully before + * you will be able to use most GLFW functions. + * + * If GLFW has been successfully initialized, this function should be called + * before the application exits. If initialization fails, there is no need to + * call this function, as it is called by @ref glfwInit before it returns + * failure. + * + * This function has no effect if GLFW is not initialized. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark This function may be called before @ref glfwInit. + * + * @warning The contexts of any remaining windows must not be current on any + * other thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInit + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI void glfwTerminate(void); + +/*! @brief Sets the specified init hint to the desired value. + * + * This function sets hints for the next initialization of GLFW. + * + * The values you set hints to are never reset by GLFW, but they only take + * effect during initialization. Once GLFW has been initialized, any values + * you set will be ignored until the library is terminated and initialized + * again. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [init hint](@ref init_hints) to set. + * @param[in] value The new value of the init hint. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref + * GLFW_INVALID_VALUE. + * + * @remarks This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa init_hints + * @sa glfwInit + * + * @since Added in version 3.3. + * + * @ingroup init + */ +GLFWAPI void glfwInitHint(int hint, int value); + +/*! @brief Sets the init allocator to the desired value. + * + * To use the default allocator, call this function with a `NULL` argument. + * + * If you specify an allocator struct, every member must be a valid function + * pointer. If any member is `NULL`, this function emits @ref + * GLFW_INVALID_VALUE and the init allocator is unchanged. + * + * @param[in] allocator The allocator to use at the next initialization, or + * `NULL` to use the default one. + * + * @errors Possible errors include @ref GLFW_INVALID_VALUE. + * + * @pointer_lifetime The specified allocator is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref init_allocator + * @sa @ref glfwInit + * + * @since Added in version 3.4. + * + * @ingroup init + */ +GLFWAPI void glfwInitAllocator(const GLFWallocator* allocator); + +#if defined(VK_VERSION_1_0) + +/*! @brief Sets the desired Vulkan `vkGetInstanceProcAddr` function. + * + * This function sets the `vkGetInstanceProcAddr` function that GLFW will use for all + * Vulkan related entry point queries. + * + * This feature is mostly useful on macOS, if your copy of the Vulkan loader is in + * a location where GLFW cannot find it through dynamic loading, or if you are still + * using the static library version of the loader. + * + * If set to `NULL`, GLFW will try to load the Vulkan loader dynamically by its standard + * name and get this function from there. This is the default behavior. + * + * The standard name of the loader is `vulkan-1.dll` on Windows, `libvulkan.so.1` on + * Linux and other Unix-like systems and `libvulkan.1.dylib` on macOS. If your code is + * also loading it via these names then you probably don't need to use this function. + * + * The function address you set is never reset by GLFW, but it only takes effect during + * initialization. Once GLFW has been initialized, any updates will be ignored until the + * library is terminated and initialized again. + * + * @param[in] loader The address of the function to use, or `NULL`. + * + * @par Loader function signature + * @code + * PFN_vkVoidFunction vkGetInstanceProcAddr(VkInstance instance, const char* name) + * @endcode + * For more information about this function, see the + * [Vulkan Registry](https://www.khronos.org/registry/vulkan/). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref vulkan_loader + * @sa @ref glfwInit + * + * @since Added in version 3.4. + * + * @ingroup init + */ +GLFWAPI void glfwInitVulkanLoader(PFN_vkGetInstanceProcAddr loader); + +#endif /*VK_VERSION_1_0*/ + +/*! @brief Retrieves the version of the GLFW library. + * + * This function retrieves the major, minor and revision numbers of the GLFW + * library. It is intended for when you are using GLFW as a shared library and + * want to ensure that you are using the minimum required version. + * + * Any or all of the version arguments may be `NULL`. + * + * @param[out] major Where to store the major version number, or `NULL`. + * @param[out] minor Where to store the minor version number, or `NULL`. + * @param[out] rev Where to store the revision number, or `NULL`. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersionString + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); + +/*! @brief Returns a string describing the compile-time configuration. + * + * This function returns the compile-time generated + * [version string](@ref intro_version_string) of the GLFW library binary. It describes + * the version, platforms, compiler and any platform or operating system specific + * compile-time options. It should not be confused with the OpenGL or OpenGL ES version + * string, queried with `glGetString`. + * + * __Do not use the version string__ to parse the GLFW library version. The + * @ref glfwGetVersion function provides the version of the running library + * binary in numerical format. + * + * __Do not use the version string__ to parse what platforms are supported. The @ref + * glfwPlatformSupported function lets you query platform support. + * + * @return The ASCII encoded GLFW version string. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @pointer_lifetime The returned string is static and compile-time generated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersion + * + * @since Added in version 3.0. + * + * @ingroup init + */ +GLFWAPI const char* glfwGetVersionString(void); + +/*! @brief Returns and clears the last error for the calling thread. + * + * This function returns and clears the [error code](@ref errors) of the last + * error that occurred on the calling thread, and optionally a UTF-8 encoded + * human-readable description of it. If no error has occurred since the last + * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is + * set to `NULL`. + * + * @param[in] description Where to store the error description pointer, or `NULL`. + * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR + * (zero). + * + * @errors None. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * next error occurs or the library is terminated. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.3. + * + * @ingroup init + */ +GLFWAPI int glfwGetError(const char** description); + +/*! @brief Sets the error callback. + * + * This function sets the error callback, which is called with an error code + * and a human-readable description each time a GLFW error occurs. + * + * The error code is set before the callback is called. Calling @ref + * glfwGetError from the error callback will return the same value as the error + * code argument. + * + * The error callback is called on the thread where the error occurred. If you + * are using GLFW from multiple threads, your error callback needs to be + * written accordingly. + * + * Because the description string may have been generated specifically for that + * error, it is not guaranteed to be valid after the callback has returned. If + * you wish to use it after the callback returns, you need to make a copy. + * + * Once set, the error callback remains set even after the library has been + * terminated. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set. + * + * @callback_signature + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * For more information about the callback parameters, see the + * [callback pointer type](@ref GLFWerrorfun). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref error_handling + * @sa @ref glfwGetError + * + * @since Added in version 3.0. + * + * @ingroup init + */ +GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); + +/*! @brief Returns the currently selected platform. + * + * This function returns the platform that was selected during initialization. The + * returned value will be one of `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, + * `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` or `GLFW_PLATFORM_NULL`. + * + * @return The currently selected platform, or zero if an error occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref platform + * @sa @ref glfwPlatformSupported + * + * @since Added in version 3.4. + * + * @ingroup init + */ +GLFWAPI int glfwGetPlatform(void); + +/*! @brief Returns whether the library includes support for the specified platform. + * + * This function returns whether the library was compiled with support for the specified + * platform. The platform must be one of `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, + * `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` or `GLFW_PLATFORM_NULL`. + * + * @param[in] platform The platform to query. + * @return `GLFW_TRUE` if the platform is supported, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref platform + * @sa @ref glfwGetPlatform + * + * @since Added in version 3.4. + * + * @ingroup init + */ +GLFWAPI int glfwPlatformSupported(int platform); + +/*! @brief Returns the currently connected monitors. + * + * This function returns an array of handles for all currently connected + * monitors. The primary monitor is always first in the returned array. If no + * monitors were found, this function returns `NULL`. + * + * @param[out] count Where to store the number of monitors in the returned + * array. This is set to zero if an error occurred. + * @return An array of monitor handles, or `NULL` if no monitors were found or + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * monitor configuration changes or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_monitors + * @sa @ref monitor_event + * @sa @ref glfwGetPrimaryMonitor + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); + +/*! @brief Returns the primary monitor. + * + * This function returns the primary monitor. This is usually the monitor + * where elements like the task bar or global menu bar are located. + * + * @return The primary monitor, or `NULL` if no monitors were found or if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @remark The primary monitor is always first in the array returned by @ref + * glfwGetMonitors. + * + * @sa @ref monitor_monitors + * @sa @ref glfwGetMonitors + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); + +/*! @brief Returns the position of the monitor's viewport on the virtual screen. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the specified monitor. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); + +/*! @brief Retrieves the work area of the monitor. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the work area of the specified monitor along with the work area + * size in screen coordinates. The work area is defined as the area of the + * monitor not occluded by the window system task bar where present. If no + * task bar exists then the work area is the monitor resolution in screen + * coordinates. + * + * Any or all of the position and size arguments may be `NULL`. If an error + * occurs, all non-`NULL` position and size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * @param[out] width Where to store the monitor width, or `NULL`. + * @param[out] height Where to store the monitor height, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_workarea + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); + +/*! @brief Returns the physical size of the monitor. + * + * This function returns the size, in millimetres, of the display area of the + * specified monitor. + * + * Some platforms do not provide accurate monitor size information, either + * because the monitor + * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) + * data is incorrect or because the driver does not report it accurately. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] widthMM Where to store the width, in millimetres, of the + * monitor's display area, or `NULL`. + * @param[out] heightMM Where to store the height, in millimetres, of the + * monitor's display area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @win32 On Windows 8 and earlier the physical size is calculated from + * the current resolution and system DPI instead of querying the monitor EDID data. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); + +/*! @brief Retrieves the content scale for the specified monitor. + * + * This function retrieves the content scale for the specified monitor. The + * content scale is the ratio between the current DPI and the platform's + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. + * + * The content scale may depend on both the monitor resolution and pixel + * density and on user settings. It may be very different from the raw DPI + * calculated from the physical size and current resolution. + * + * @param[in] monitor The monitor to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); + +/*! @brief Returns the name of the specified monitor. + * + * This function returns a human-readable name, encoded as UTF-8, of the + * specified monitor. The name typically reflects the make and model of the + * monitor and is not guaranteed to be unique among the connected monitors. + * + * @param[in] monitor The monitor to query. + * @return The UTF-8 encoded name of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); + +/*! @brief Sets the user pointer of the specified monitor. + * + * This function sets the user-defined pointer of the specified monitor. The + * current value is retained until the monitor is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwGetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); + +/*! @brief Returns the user pointer of the specified monitor. + * + * This function returns the current value of the user-defined pointer of the + * specified monitor. The initial value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwSetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); + +/*! @brief Sets the monitor configuration callback. + * + * This function sets the monitor configuration callback, or removes the + * currently set callback. This is called when a monitor is connected to or + * disconnected from the system. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmonitorfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_event + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); + +/*! @brief Returns the available video modes for the specified monitor. + * + * This function returns an array of all video modes supported by the specified + * monitor. The returned array is sorted in ascending order, first by color + * bit depth (the sum of all channel depths), then by resolution area (the + * product of width and height), then resolution width and finally by refresh + * rate. + * + * @param[in] monitor The monitor to query. + * @param[out] count Where to store the number of video modes in the returned + * array. This is set to zero if an error occurred. + * @return An array of video modes, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected, this function is called again for that monitor or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * + * @since Added in version 1.0. + * @glfw3 Changed to return an array of modes for a specific monitor. + * + * @ingroup monitor + */ +GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); + +/*! @brief Returns the current mode of the specified monitor. + * + * This function returns the current video mode of the specified monitor. If + * you have created a full screen window for that monitor, the return value + * will depend on whether that window is iconified. + * + * @param[in] monitor The monitor to query. + * @return The current mode of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoModes + * + * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. + * + * @ingroup monitor + */ +GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); + +/*! @brief Generates a gamma ramp and sets it for the specified monitor. + * + * This function generates an appropriately sized gamma ramp from the specified + * exponent and then calls @ref glfwSetGammaRamp with it. The value must be + * a finite number greater than zero. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] gamma The desired exponent. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_INVALID_VALUE, + * @ref GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); + +/*! @brief Returns the current gamma ramp for the specified monitor. + * + * This function returns the current gamma ramp of the specified monitor. + * + * @param[in] monitor The monitor to query. + * @return The current gamma ramp, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR + * and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE while + * returning `NULL`. + * + * @pointer_lifetime The returned structure and its arrays are allocated and + * freed by GLFW. You should not free them yourself. They are valid until the + * specified monitor is disconnected, this function is called again for that + * monitor or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); + +/*! @brief Sets the current gamma ramp for the specified monitor. + * + * This function sets the current gamma ramp for the specified monitor. The + * original gamma ramp for that monitor is saved by GLFW the first time this + * function is called and is restored by @ref glfwTerminate. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] ramp The gamma ramp to use. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR + * and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark The size of the specified gamma ramp should match the size of the + * current ramp for that monitor. + * + * @remark @win32 The gamma ramp size must be 256. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE. + * + * @pointer_lifetime The specified gamma ramp is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +/*! @brief Resets all window hints to their default values. + * + * This function resets all window hints to their + * [default values](@ref window_hints_values). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwWindowHintString + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwDefaultWindowHints(void); + +/*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only integer value hints can be set with this function. String value hints + * are set with @ref glfwWindowHintString. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHintString + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. + * + * @ingroup window + */ +GLFWAPI void glfwWindowHint(int hint, int value); + +/*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only string type hints can be set with this function. Integer value hints + * are set with @ref glfwWindowHint. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwWindowHintString(int hint, const char* value); + +/*! @brief Creates a window and its associated context. + * + * This function creates a window and its associated OpenGL or OpenGL ES + * context. Most of the options controlling how the window and its context + * should be created are specified with [window hints](@ref window_hints). + * + * Successful creation does not change which context is current. Before you + * can use the newly created context, you need to + * [make it current](@ref context_current). For information about the `share` + * parameter, see @ref context_sharing. + * + * The created window, framebuffer and context may differ from what you + * requested, as not all parameters and hints are + * [hard constraints](@ref window_hints_hard). This includes the size of the + * window, especially for full screen windows. To query the actual attributes + * of the created window, framebuffer and context, see @ref + * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. + * + * To create a full screen window, you need to specify the monitor the window + * will cover. If no monitor is specified, the window will be windowed mode. + * Unless you have a way for the user to choose a specific monitor, it is + * recommended that you pick the primary monitor. For more information on how + * to query connected monitors, see @ref monitor_monitors. + * + * For full screen windows, the specified size becomes the resolution of the + * window's _desired video mode_. As long as a full screen window is not + * iconified, the supported video mode most closely matching the desired video + * mode is set for the specified monitor. For more information about full + * screen windows, including the creation of so called _windowed full screen_ + * or _borderless full screen_ windows, see @ref window_windowed_full_screen. + * + * Once you have created the window, you can switch it between windowed and + * full screen mode with @ref glfwSetWindowMonitor. This will not affect its + * OpenGL or OpenGL ES context. + * + * By default, newly created windows use the placement recommended by the + * window system. To create the window at a specific position, set the @ref + * GLFW_POSITION_X and @ref GLFW_POSITION_Y window hints before creation. To + * restore the default behavior, set either or both hints back to + * `GLFW_ANY_POSITION`. + * + * As long as at least one full screen window is not iconified, the screensaver + * is prohibited from starting. + * + * Window systems put limits on window sizes. Very large or very small window + * dimensions may be overridden by the window system on creation. Check the + * actual [size](@ref window_size) after creation. + * + * The [swap interval](@ref buffer_swap) is not set during window creation and + * the initial value may vary depending on driver settings and defaults. + * + * @param[in] width The desired width, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] height The desired height, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] title The initial, UTF-8 encoded window title. + * @param[in] monitor The monitor to use for full screen mode, or `NULL` for + * windowed mode. + * @param[in] share The window whose context to share resources with, or `NULL` + * to not share resources. + * @return The handle of the created window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref + * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @win32 Window creation will fail if the Microsoft GDI software + * OpenGL implementation is the only one available. + * + * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it + * will be set as the initial icon for the window. If no such icon is present, + * the `IDI_APPLICATION` icon will be used instead. To set a different icon, + * see @ref glfwSetWindowIcon. + * + * @remark @win32 The context to share resources with must not be current on + * any other thread. + * + * @remark @macos The OS only supports core profile contexts for OpenGL + * versions 3.2 and later. Before creating an OpenGL context of version 3.2 or + * later you must set the [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) + * hint accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all + * on macOS. + * + * @remark @macos The GLFW window has no icon, as it is not a document + * window, but the dock icon will be the same as the application bundle's icon. + * For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @macos On OS X 10.10 and later the window frame will not be rendered + * at full resolution on Retina displays unless the + * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) + * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the + * application bundle's `Info.plist`. For more information, see + * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) + * in the Mac Developer Library. The GLFW test and example programs use + * a custom `Info.plist` template for this, which can be found as + * `CMake/Info.plist.in` in the source tree. + * + * @remark @macos When activating frame autosaving with + * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified + * window size and position may be overridden by previously saved values. + * + * @remark @x11 Some window managers will not respect the placement of + * initially hidden windows. + * + * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for + * a window to reach its requested state. This means you may not be able to + * query the final size, position or other attributes directly after window + * creation. + * + * @remark @x11 The class part of the `WM_CLASS` window property will by + * default be set to the window title passed to this function. The instance + * part will use the contents of the `RESOURCE_NAME` environment variable, if + * present and not empty, or fall back to the window title. Set the + * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and + * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to + * override this. + * + * @remark @wayland Compositors should implement the xdg-decoration protocol + * for GLFW to decorate the window properly. If this protocol isn't + * supported, or if the compositor prefers client-side decorations, a very + * simple fallback frame will be drawn using the wp_viewporter protocol. A + * compositor can still emit close, maximize or fullscreen events, using for + * instance a keybind mechanism. If neither of these protocols is supported, + * the window won't be decorated. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size or refresh rate. + * + * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol + * to be implemented in the user's compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwDestroyWindow + * + * @since Added in version 3.0. Replaces `glfwOpenWindow`. + * + * @ingroup window + */ +GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); + +/*! @brief Destroys the specified window and its context. + * + * This function destroys the specified window and its context. On calling + * this function, no further callbacks will be called for that window. + * + * If the context of the specified window is current on the main thread, it is + * detached before being destroyed. + * + * @param[in] window The window to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @note The context of the specified window must not be current on any other + * thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwCreateWindow + * + * @since Added in version 3.0. Replaces `glfwCloseWindow`. + * + * @ingroup window + */ +GLFWAPI void glfwDestroyWindow(GLFWwindow* window); + +/*! @brief Checks the close flag of the specified window. + * + * This function returns the value of the close flag of the specified window. + * + * @param[in] window The window to query. + * @return The value of the close flag. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); + +/*! @brief Sets the close flag of the specified window. + * + * This function sets the value of the close flag of the specified window. + * This can be used to override the user's attempt to close the window, or + * to signal that it should be closed. + * + * @param[in] window The window whose flag to change. + * @param[in] value The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); + +/*! @brief Sets the title of the specified window. + * + * This function sets the window title, encoded as UTF-8, of the specified + * window. + * + * @param[in] window The window whose title to change. + * @param[in] title The UTF-8 encoded window title. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos The window title will not be updated until the next time you + * process events. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_title + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); + +/*! @brief Sets the icon for the specified window. + * + * This function sets the icon of the specified window. If passed an array of + * candidate images, those of or closest to the sizes desired by the system are + * selected. If no images are specified, the window reverts to its default + * icon. + * + * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight + * bits per channel with the red channel first. They are arranged canonically + * as packed sequential rows, starting from the top-left corner. + * + * The desired image sizes varies depending on platform and system settings. + * The selected images will be rescaled as needed. Good sizes include 16x16, + * 32x32 and 48x48. + * + * @param[in] window The window whose icon to set. + * @param[in] count The number of images in the specified array, or zero to + * revert to the default window icon. + * @param[in] images The images to create the icon from. This is ignored if + * count is zero. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @remark @macos Regular windows do not have icons on macOS. This function + * will emit @ref GLFW_FEATURE_UNAVAILABLE. The dock icon will be the same as + * the application bundle's icon. For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @wayland There is no existing protocol to change an icon, the + * window will thus inherit the one defined in the application's desktop file. + * This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_icon + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); + +/*! @brief Retrieves the position of the content area of the specified window. + * + * This function retrieves the position, in screen coordinates, of the + * upper-left corner of the content area of the specified window. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The window to query. + * @param[out] xpos Where to store the x-coordinate of the upper-left corner of + * the content area, or `NULL`. + * @param[out] ypos Where to store the y-coordinate of the upper-left corner of + * the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way for an application to retrieve the global + * position of its windows. This function will emit @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPos + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); + +/*! @brief Sets the position of the content area of the specified window. + * + * This function sets the position, in screen coordinates, of the upper-left + * corner of the content area of the specified windowed mode window. If the + * window is a full screen window, this function does nothing. + * + * __Do not use this function__ to move an already visible window unless you + * have very good reasons for doing so, as it will confuse and annoy the user. + * + * The window manager may put limits on what positions are allowed. GLFW + * cannot and should not override these limits. + * + * @param[in] window The window to query. + * @param[in] xpos The x-coordinate of the upper-left corner of the content area. + * @param[in] ypos The y-coordinate of the upper-left corner of the content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way for an application to set the global + * position of its windows. This function will emit @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwGetWindowPos + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); + +/*! @brief Retrieves the size of the content area of the specified window. + * + * This function retrieves the size, in screen coordinates, of the content area + * of the specified window. If you wish to retrieve the size of the + * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose size to retrieve. + * @param[out] width Where to store the width, in screen coordinates, of the + * content area, or `NULL`. + * @param[out] height Where to store the height, in screen coordinates, of the + * content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSize + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); + +/*! @brief Sets the size limits of the specified window. + * + * This function sets the size limits of the content area of the specified + * window. If the window is full screen, the size limits only take effect + * once it is made windowed. If the window is not resizable, this function + * does nothing. + * + * The size limits are applied immediately to a windowed mode window and may + * cause it to be resized. + * + * The maximum dimensions must be greater than or equal to the minimum + * dimensions and all must be greater than or equal to zero. + * + * @param[in] window The window to set limits for. + * @param[in] minwidth The minimum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] minheight The minimum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * @param[in] maxwidth The maximum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] maxheight The maximum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The size limits will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowAspectRatio + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); + +/*! @brief Sets the aspect ratio of the specified window. + * + * This function sets the required aspect ratio of the content area of the + * specified window. If the window is full screen, the aspect ratio only takes + * effect once it is made windowed. If the window is not resizable, this + * function does nothing. + * + * The aspect ratio is specified as a numerator and a denominator and both + * values must be greater than zero. For example, the common 16:9 aspect ratio + * is specified as 16 and 9, respectively. + * + * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect + * ratio limit is disabled. + * + * The aspect ratio is applied immediately to a windowed mode window and may + * cause it to be resized. + * + * @param[in] window The window to set limits for. + * @param[in] numer The numerator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * @param[in] denom The denominator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The aspect ratio will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowSizeLimits + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); + +/*! @brief Sets the size of the content area of the specified window. + * + * This function sets the size, in screen coordinates, of the content area of + * the specified window. + * + * For full screen windows, this function updates the resolution of its desired + * video mode and switches to the video mode closest to it, without affecting + * the window's context. As the context is unaffected, the bit depths of the + * framebuffer remain unchanged. + * + * If you wish to update the refresh rate of the desired video mode in addition + * to its resolution, see @ref glfwSetWindowMonitor. + * + * The window manager may put limits on what sizes are allowed. GLFW cannot + * and should not override these limits. + * + * @param[in] window The window to resize. + * @param[in] width The desired width, in screen coordinates, of the window + * content area. + * @param[in] height The desired height, in screen coordinates, of the window + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwGetWindowSize + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); + +/*! @brief Retrieves the size of the framebuffer of the specified window. + * + * This function retrieves the size, in pixels, of the framebuffer of the + * specified window. If you wish to retrieve the size of the window in screen + * coordinates, see @ref glfwGetWindowSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose framebuffer to query. + * @param[out] width Where to store the width, in pixels, of the framebuffer, + * or `NULL`. + * @param[out] height Where to store the height, in pixels, of the framebuffer, + * or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); + +/*! @brief Retrieves the size of the frame of the window. + * + * This function retrieves the size, in screen coordinates, of each edge of the + * frame of the specified window. This size includes the title bar, if the + * window has one. The size of the frame may vary depending on the + * [window-related hints](@ref window_hints_wnd) used to create it. + * + * Because this function retrieves the size of each window frame edge and not + * the offset along a particular coordinate axis, the retrieved values will + * always be zero or positive. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose frame size to query. + * @param[out] left Where to store the size, in screen coordinates, of the left + * edge of the window frame, or `NULL`. + * @param[out] top Where to store the size, in screen coordinates, of the top + * edge of the window frame, or `NULL`. + * @param[out] right Where to store the size, in screen coordinates, of the + * right edge of the window frame, or `NULL`. + * @param[out] bottom Where to store the size, in screen coordinates, of the + * bottom edge of the window frame, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); + +/*! @brief Retrieves the content scale for the specified window. + * + * This function retrieves the content scale for the specified window. The + * content scale is the ratio between the current DPI and the platform's + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. + * + * On platforms where each monitors can have its own content scale, the window + * content scale will depend on which monitor the system considers the window + * to be on. + * + * @param[in] window The window to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * @sa @ref glfwGetMonitorContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); + +/*! @brief Returns the opacity of the whole window. + * + * This function returns the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. If the system + * does not support whole window transparency, this function always returns one. + * + * The initial opacity value for newly created windows is one. + * + * @param[in] window The window to query. + * @return The opacity value of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwSetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window); + +/*! @brief Sets the opacity of the whole window. + * + * This function sets the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. + * + * The initial opacity value for newly created windows is one. + * + * A window created with framebuffer transparency may not use whole window + * transparency. The results of doing this are undefined. + * + * @param[in] window The window to set the opacity for. + * @param[in] opacity The desired opacity of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way to set an opacity factor for a window. + * This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwGetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); + +/*! @brief Iconifies the specified window. + * + * This function iconifies (minimizes) the specified window if it was + * previously restored. If the window is already iconified, this function does + * nothing. + * + * If the specified window is a full screen window, GLFW restores the original + * video mode of the monitor. The window's desired video mode is set again + * when the window is restored. + * + * @param[in] window The window to iconify. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Once a window is iconified, @ref glfwRestoreWindow won’t + * be able to restore it. This is a design decision of the xdg-shell + * protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwRestoreWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwIconifyWindow(GLFWwindow* window); + +/*! @brief Restores the specified window. + * + * This function restores the specified window if it was previously iconified + * (minimized) or maximized. If the window is already restored, this function + * does nothing. + * + * If the specified window is an iconified full screen window, its desired + * video mode is set again for its monitor when the window is restored. + * + * @param[in] window The window to restore. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwRestoreWindow(GLFWwindow* window); + +/*! @brief Maximizes the specified window. + * + * This function maximizes the specified window if it was previously not + * maximized. If the window is already maximized, this function does nothing. + * + * If the specified window is a full screen window, this function does nothing. + * + * @param[in] window The window to maximize. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwRestoreWindow + * + * @since Added in GLFW 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwMaximizeWindow(GLFWwindow* window); + +/*! @brief Makes the specified window visible. + * + * This function makes the specified window visible if it was previously + * hidden. If the window is already visible or is in full screen mode, this + * function does nothing. + * + * By default, windowed mode windows are focused when shown + * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint + * to change this behavior for all newly created windows, or change the + * behavior for an existing window with @ref glfwSetWindowAttrib. + * + * @param[in] window The window to make visible. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Because Wayland wants every frame of the desktop to be + * complete, this function does not immediately make the window visible. + * Instead it will become visible the next time the window framebuffer is + * updated after this call. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwHideWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwShowWindow(GLFWwindow* window); + +/*! @brief Hides the specified window. + * + * This function hides the specified window if it was previously visible. If + * the window is already hidden or is in full screen mode, this function does + * nothing. + * + * @param[in] window The window to hide. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwShowWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwHideWindow(GLFWwindow* window); + +/*! @brief Brings the specified window to front and sets input focus. + * + * This function brings the specified window to front and sets input focus. + * The window should already be visible and not iconified. + * + * By default, both windowed and full screen mode windows are focused when + * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to + * disable this behavior. + * + * Also by default, windowed mode windows are focused when shown + * with @ref glfwShowWindow. Set the + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. + * + * __Do not use this function__ to steal focus from other applications unless + * you are certain that is what the user wants. Focus stealing can be + * extremely disruptive. + * + * For a less disruptive way of getting the user's attention, see + * [attention requests](@ref window_attention). + * + * @param[in] window The window to give input focus. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland It is not possible for an application to set the input + * focus. This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * @sa @ref window_attention + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwFocusWindow(GLFWwindow* window); + +/*! @brief Requests user attention to the specified window. + * + * This function requests user attention to the specified window. On + * platforms where this is not supported, attention is requested to the + * application as a whole. + * + * Once the user has given attention, usually by focusing the window or + * application, the system will end the request automatically. + * + * @param[in] window The window to request attention to. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos Attention is requested to the application as a whole, not the + * specific window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attention + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window); + +/*! @brief Returns the monitor that the window uses for full screen mode. + * + * This function returns the handle of the monitor that the specified window is + * in full screen on. + * + * @param[in] window The window to query. + * @return The monitor, or `NULL` if the window is in windowed mode or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); + +/*! @brief Sets the mode, monitor, video mode and placement of a window. + * + * This function sets the monitor that the window uses for full screen mode or, + * if the monitor is `NULL`, makes it windowed mode. + * + * When setting a monitor, this function updates the width, height and refresh + * rate of the desired video mode and switches to the video mode closest to it. + * The window position is ignored when setting a monitor. + * + * When the monitor is `NULL`, the position, width and height are used to + * place the window content area. The refresh rate is ignored when no monitor + * is specified. + * + * If you only wish to update the resolution of a full screen window or the + * size of a windowed mode window, see @ref glfwSetWindowSize. + * + * When a window transitions from full screen to windowed mode, this function + * restores any previous window settings such as whether it is decorated, + * floating, resizable, has size or aspect ratio limits, etc. + * + * @param[in] window The window whose monitor, size or video mode to set. + * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. + * @param[in] xpos The desired x-coordinate of the upper-left corner of the + * content area. + * @param[in] ypos The desired y-coordinate of the upper-left corner of the + * content area. + * @param[in] width The desired with, in screen coordinates, of the content + * area or video mode. + * @param[in] height The desired height, in screen coordinates, of the content + * area or video mode. + * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, + * or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise + * affected by any resizing or mode switching, although you may need to update + * your viewport if the framebuffer size has changed. + * + * @remark @wayland The desired window position is ignored, as there is no way + * for an application to set this property. + * + * @remark @wayland Setting the window to full screen will not attempt to + * change the mode, no matter what the requested size or refresh rate. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref window_full_screen + * @sa @ref glfwGetWindowMonitor + * @sa @ref glfwSetWindowSize + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); + +/*! @brief Returns an attribute of the specified window. + * + * This function returns the value of an attribute of the specified window or + * its OpenGL or OpenGL ES context. + * + * @param[in] window The window to query. + * @param[in] attrib The [window attribute](@ref window_attribs) whose value to + * return. + * @return The value of the attribute, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @remark Framebuffer related hints are not window attributes. See @ref + * window_attribs_fb for more information. + * + * @remark Zero is a valid value for many window and context related + * attributes so you cannot use a return value of zero as an indication of + * errors. However, this function should not fail as long as it is passed + * valid arguments and the library has been [initialized](@ref intro_init). + * + * @remark @wayland The Wayland protocol provides no way to check whether a + * window is iconfied, so @ref GLFW_ICONIFIED always returns `GLFW_FALSE`. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwSetWindowAttrib + * + * @since Added in version 3.0. Replaces `glfwGetWindowParam` and + * `glfwGetGLVersion`. + * + * @ingroup window + */ +GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); + +/*! @brief Sets an attribute of the specified window. + * + * This function sets the value of an attribute of the specified window. + * + * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), + * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), + * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib), + * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib). + * [GLFW_MOUSE_PASSTHROUGH](@ref GLFW_MOUSE_PASSTHROUGH_attrib) + * + * Some of these attributes are ignored for full screen windows. The new + * value will take effect if the window is later made windowed. + * + * Some of these attributes are ignored for windowed mode windows. The new + * value will take effect if the window is later made full screen. + * + * @param[in] window The window to set the attribute for. + * @param[in] attrib A supported window attribute. + * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @remark Calling @ref glfwGetWindowAttrib will always return the latest + * value, even if that value is ignored by the current mode of the window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwGetWindowAttrib + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); + +/*! @brief Sets the user pointer of the specified window. + * + * This function sets the user-defined pointer of the specified window. The + * current value is retained until the window is destroyed. The initial value + * is `NULL`. + * + * @param[in] window The window whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwGetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); + +/*! @brief Returns the user pointer of the specified window. + * + * This function returns the current value of the user-defined pointer of the + * specified window. The initial value is `NULL`. + * + * @param[in] window The window whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwSetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); + +/*! @brief Sets the position callback for the specified window. + * + * This function sets the position callback of the specified window, which is + * called when the window is moved. The callback is provided with the + * position, in screen coordinates, of the upper-left corner of the content + * area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland This callback will never be called, as there is no way for + * an application to know its global position. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); + +/*! @brief Sets the size callback for the specified window. + * + * This function sets the size callback of the specified window, which is + * called when the window is resized. The callback is provided with the size, + * in screen coordinates, of the content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowsizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); + +/*! @brief Sets the close callback for the specified window. + * + * This function sets the close callback of the specified window, which is + * called when the user attempts to close the window, for example by clicking + * the close widget in the title bar. + * + * The close flag is set before this callback is called, but you can modify it + * at any time with @ref glfwSetWindowShouldClose. + * + * The close callback is not triggered by @ref glfwDestroyWindow. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowclosefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @macos Selecting Quit from the application menu will trigger the + * close callback for all windows. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_close + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); + +/*! @brief Sets the refresh callback for the specified window. + * + * This function sets the refresh callback of the specified window, which is + * called when the content area of the window needs to be redrawn, for example + * if the window has been exposed after having been covered by another window. + * + * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where + * the window contents are saved off-screen, this callback may be called only + * very infrequently or never at all. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowrefreshfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_refresh + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); + +/*! @brief Sets the focus callback for the specified window. + * + * This function sets the focus callback of the specified window, which is + * called when the window gains or loses input focus. + * + * After the focus callback is called for a window that lost input focus, + * synthetic key and mouse button release events will be generated for all such + * that had been pressed. For more information, see @ref glfwSetKeyCallback + * and @ref glfwSetMouseButtonCallback. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowfocusfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); + +/*! @brief Sets the iconify callback for the specified window. + * + * This function sets the iconification callback of the specified window, which + * is called when the window is iconified or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowiconifyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); + +/*! @brief Sets the maximize callback for the specified window. + * + * This function sets the maximization callback of the specified window, which + * is called when the window is maximized or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowmaximizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_maximize + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); + +/*! @brief Sets the framebuffer resize callback for the specified window. + * + * This function sets the framebuffer resize callback of the specified window, + * which is called when the framebuffer of the specified window is resized. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWframebuffersizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); + +/*! @brief Sets the window content scale callback for the specified window. + * + * This function sets the window content scale callback of the specified window, + * which is called when the content scale of the specified window changes. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowcontentscalefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); + +/*! @brief Processes all pending events. + * + * This function processes only those events that are already in the event + * queue and then returns immediately. Processing events will cause the window + * and input callbacks associated with those events to be called. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 1.0. + * + * @ingroup window + */ +GLFWAPI void glfwPollEvents(void); + +/*! @brief Waits until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue. Once one or more events are available, + * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue + * are processed and the function then returns immediately. Processing events + * will cause the window and input callbacks associated with those events to be + * called. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 2.5. + * + * @ingroup window + */ +GLFWAPI void glfwWaitEvents(void); + +/*! @brief Waits with timeout until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue, or until the specified timeout is reached. If + * one or more events are available, it behaves exactly like @ref + * glfwPollEvents, i.e. the events in the queue are processed and the function + * then returns immediately. Processing events will cause the window and input + * callbacks associated with those events to be called. + * + * The timeout value must be a positive finite number. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @param[in] timeout The maximum amount of time, in seconds, to wait. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEvents + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwWaitEventsTimeout(double timeout); + +/*! @brief Posts an empty event to the event queue. + * + * This function posts an empty event from the current thread to the event + * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwPostEmptyEvent(void); + +/*! @brief Returns the value of an input option for the specified window. + * + * This function returns the value of an input option for the specified window. + * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * @param[in] window The window to query. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); + +/*! @brief Sets an input option for the specified window. + * + * This function sets an input mode option for the specified window. The mode + * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor + * modes: + * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. + * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the + * content area of the window but does not restrict the cursor from leaving. + * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual + * and unlimited cursor movement. This is useful for implementing for + * example 3D camera controls. + * - `GLFW_CURSOR_CAPTURED` makes the cursor visible and confines it to the + * content area of the window. + * + * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to + * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are + * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` + * the next time it is called even if the key had been released before the + * call. This is useful when you are only interested in whether keys have been + * pressed but not when or in which order. + * + * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either + * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. + * If sticky mouse buttons are enabled, a mouse button press will ensure that + * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even + * if the mouse button had been released before the call. This is useful when + * you are only interested in whether mouse buttons have been pressed but not + * when or in which order. + * + * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to + * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, + * callbacks that receive modifier bits will also have the @ref + * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, + * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. + * + * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` + * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is + * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, + * attempting to set this will emit @ref GLFW_FEATURE_UNAVAILABLE. Call @ref + * glfwRawMouseMotionSupported to check for support. + * + * @param[in] window The window whose input mode to set. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * @param[in] value The new value of the specified input mode. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE (see above). + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwGetInputMode + * + * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. + * + * @ingroup input + */ +GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); + +/*! @brief Returns whether raw mouse motion is supported. + * + * This function returns whether raw mouse motion is supported on the current + * system. This status does not change after GLFW has been initialized so you + * only need to check this once. If you attempt to enable raw motion on + * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. + * + * Raw mouse motion is closer to the actual motion of the mouse across + * a surface. It is not affected by the scaling and acceleration applied to + * the motion of the desktop cursor. That processing is suitable for a cursor + * while raw motion is better for controlling for example a 3D camera. Because + * of this, raw mouse motion is only provided when the cursor is disabled. + * + * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref raw_mouse_motion + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwRawMouseMotionSupported(void); + +/*! @brief Returns the layout-specific name of the specified printable key. + * + * This function returns the name of the specified printable key, encoded as + * UTF-8. This is typically the character that key would produce without any + * modifier keys, intended for displaying key bindings to the user. For dead + * keys, it is typically the diacritic it would add to a character. + * + * __Do not use this function__ for [text input](@ref input_char). You will + * break text input for many languages even if it happens to work for yours. + * + * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, + * otherwise the scancode is ignored. If you specify a non-printable key, or + * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this + * function returns `NULL` but does not emit an error. + * + * This behavior allows you to always pass in the arguments in the + * [key callback](@ref input_key) without modification. + * + * The printable keys are: + * - `GLFW_KEY_APOSTROPHE` + * - `GLFW_KEY_COMMA` + * - `GLFW_KEY_MINUS` + * - `GLFW_KEY_PERIOD` + * - `GLFW_KEY_SLASH` + * - `GLFW_KEY_SEMICOLON` + * - `GLFW_KEY_EQUAL` + * - `GLFW_KEY_LEFT_BRACKET` + * - `GLFW_KEY_RIGHT_BRACKET` + * - `GLFW_KEY_BACKSLASH` + * - `GLFW_KEY_WORLD_1` + * - `GLFW_KEY_WORLD_2` + * - `GLFW_KEY_0` to `GLFW_KEY_9` + * - `GLFW_KEY_A` to `GLFW_KEY_Z` + * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` + * - `GLFW_KEY_KP_DECIMAL` + * - `GLFW_KEY_KP_DIVIDE` + * - `GLFW_KEY_KP_MULTIPLY` + * - `GLFW_KEY_KP_SUBTRACT` + * - `GLFW_KEY_KP_ADD` + * - `GLFW_KEY_KP_EQUAL` + * + * Names for printable keys depend on keyboard layout, while names for + * non-printable keys are the same across layouts but depend on the application + * language and should be localized along with other user interface text. + * + * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. + * @param[in] scancode The scancode of the key to query. + * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The contents of the returned string may change when a keyboard + * layout change event is received. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key_name + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetKeyName(int key, int scancode); + +/*! @brief Returns the platform-specific scancode of the specified key. + * + * This function returns the platform-specific scancode of the specified key. + * + * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this + * method will return `-1`. + * + * @param[in] key Any [named key](@ref keys). + * @return The platform-specific scancode for the key, or `-1` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref input_key + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwGetKeyScancode(int key); + +/*! @brief Returns the last reported state of a keyboard key for the specified + * window. + * + * This function returns the last state reported for the specified key to the + * specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. The action `GLFW_REPEAT` is only reported to the key callback. + * + * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns + * `GLFW_PRESS` the first time you call it for a key that was pressed, even if + * that key has already been released. + * + * The key functions deal with physical keys, with [key tokens](@ref keys) + * named after their use on the standard US keyboard layout. If you want to + * input text, use the Unicode character callback instead. + * + * The [modifier key bit masks](@ref mods) are not key tokens and cannot be + * used with this function. + * + * __Do not use this function__ to implement [text input](@ref input_char). + * + * @param[in] window The desired window. + * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is + * not a valid key for this function. + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +GLFWAPI int glfwGetKey(GLFWwindow* window, int key); + +/*! @brief Returns the last reported state of a mouse button for the specified + * window. + * + * This function returns the last state reported for the specified mouse button + * to the specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. + * + * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function + * returns `GLFW_PRESS` the first time you call it for a mouse button that was + * pressed, even if that mouse button has already been released. + * + * @param[in] window The desired window. + * @param[in] button The desired [mouse button](@ref buttons). + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); + +/*! @brief Retrieves the position of the cursor relative to the content area of + * the window. + * + * This function returns the position of the cursor, in screen coordinates, + * relative to the upper-left corner of the content area of the specified + * window. + * + * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor + * position is unbounded and limited only by the minimum and maximum values of + * a `double`. + * + * The coordinate can be converted to their integer equivalents with the + * `floor` function. Casting directly to an integer type works for positive + * coordinates, but fails for negative ones. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The desired window. + * @param[out] xpos Where to store the cursor x-coordinate, relative to the + * left edge of the content area, or `NULL`. + * @param[out] ypos Where to store the cursor y-coordinate, relative to the to + * top edge of the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPos + * + * @since Added in version 3.0. Replaces `glfwGetMousePos`. + * + * @ingroup input + */ +GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); + +/*! @brief Sets the position of the cursor, relative to the content area of the + * window. + * + * This function sets the position, in screen coordinates, of the cursor + * relative to the upper-left corner of the content area of the specified + * window. The window must have input focus. If the window does not have + * input focus when this function is called, it fails silently. + * + * __Do not use this function__ to implement things like camera controls. GLFW + * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the + * cursor, transparently re-centers it and provides unconstrained cursor + * motion. See @ref glfwSetInputMode for more information. + * + * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is + * unconstrained and limited only by the minimum and maximum values of + * a `double`. + * + * @param[in] window The desired window. + * @param[in] xpos The desired x-coordinate, relative to the left edge of the + * content area. + * @param[in] ypos The desired y-coordinate, relative to the top edge of the + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland This function will only work when the cursor mode is + * `GLFW_CURSOR_DISABLED`, otherwise it will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwGetCursorPos + * + * @since Added in version 3.0. Replaces `glfwSetMousePos`. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); + +/*! @brief Creates a custom cursor. + * + * Creates a new custom cursor image that can be set for a window with @ref + * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. + * Any remaining cursors are destroyed by @ref glfwTerminate. + * + * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight + * bits per channel with the red channel first. They are arranged canonically + * as packed sequential rows, starting from the top-left corner. + * + * The cursor hotspot is specified in pixels, relative to the upper-left corner + * of the cursor image. Like all other coordinate systems in GLFW, the X-axis + * points to the right and the Y-axis points down. + * + * @param[in] image The desired cursor image. + * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. + * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. + * @return The handle of the created cursor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwDestroyCursor + * @sa @ref glfwCreateStandardCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); + +/*! @brief Creates a cursor with a standard shape. + * + * Returns a cursor with a standard shape, that can be set for a window with + * @ref glfwSetCursor. The images for these cursors come from the system + * cursor theme and their exact appearance will vary between platforms. + * + * Most of these shapes are guaranteed to exist on every supported platform but + * a few may not be present. See the table below for details. + * + * Cursor shape | Windows | macOS | X11 | Wayland + * ------------------------------ | ------- | ----- | ------ | ------- + * @ref GLFW_ARROW_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_IBEAM_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_CROSSHAIR_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_POINTING_HAND_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_EW_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_NS_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_NWSE_CURSOR | Yes | Yes1 | Maybe2 | Maybe2 + * @ref GLFW_RESIZE_NESW_CURSOR | Yes | Yes1 | Maybe2 | Maybe2 + * @ref GLFW_RESIZE_ALL_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_NOT_ALLOWED_CURSOR | Yes | Yes | Maybe2 | Maybe2 + * + * 1) This uses a private system API and may fail in the future. + * + * 2) This uses a newer standard that not all cursor themes support. + * + * If the requested shape is not available, this function emits a @ref + * GLFW_CURSOR_UNAVAILABLE error and returns `NULL`. + * + * @param[in] shape One of the [standard shapes](@ref shapes). + * @return A new cursor ready to use or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_CURSOR_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_standard + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); + +/*! @brief Destroys a cursor. + * + * This function destroys a cursor previously created with @ref + * glfwCreateCursor. Any remaining cursors will be destroyed by @ref + * glfwTerminate. + * + * If the specified cursor is current for any window, that window will be + * reverted to the default cursor. This does not affect the cursor mode. + * + * @param[in] cursor The cursor object to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); + +/*! @brief Sets the cursor for the window. + * + * This function sets the cursor image to be used when the cursor is over the + * content area of the specified window. The set cursor will only be visible + * when the [cursor mode](@ref cursor_mode) of the window is + * `GLFW_CURSOR_NORMAL`. + * + * On some platforms, the set cursor may not be visible unless the window also + * has input focus. + * + * @param[in] window The window to set the cursor for. + * @param[in] cursor The cursor to set, or `NULL` to switch back to the default + * arrow cursor. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); + +/*! @brief Sets the key callback. + * + * This function sets the key callback of the specified window, which is called + * when a key is pressed, repeated or released. + * + * The key functions deal with physical keys, with layout independent + * [key tokens](@ref keys) named after their values in the standard US keyboard + * layout. If you want to input text, use the + * [character callback](@ref glfwSetCharCallback) instead. + * + * When a window loses input focus, it will generate synthetic key release + * events for all pressed keys. You can tell these events from user-generated + * events by the fact that the synthetic ones are generated after the focus + * loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * The scancode of a key is specific to that platform or sometimes even to that + * machine. Scancodes are intended to allow users to bind keys that don't have + * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their + * state is not saved and so it cannot be queried with @ref glfwGetKey. + * + * Sometimes GLFW needs to generate synthetic key events, in which case the + * scancode may be zero. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new key callback, or `NULL` to remove the currently + * set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWkeyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); + +/*! @brief Sets the Unicode character callback. + * + * This function sets the character callback of the specified window, which is + * called when a Unicode character is input. + * + * The character callback is intended for Unicode text input. As it deals with + * characters, it is keyboard layout dependent, whereas the + * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 + * to physical keys, as a key may produce zero, one or more characters. If you + * want to know whether a specific physical key was pressed or released, see + * the key callback instead. + * + * The character callback behaves as system text input normally does and will + * not be called if modifier keys are held down that would prevent normal text + * input on that platform, for example a Super (Command) key on macOS or Alt key + * on Windows. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); + +/*! @brief Sets the Unicode character with modifiers callback. + * + * This function sets the character with modifiers callback of the specified + * window, which is called when a Unicode character is input regardless of what + * modifier keys are used. + * + * The character with modifiers callback is intended for implementing custom + * Unicode character input. For regular Unicode text input, see the + * [character callback](@ref glfwSetCharCallback). Like the character + * callback, the character with modifiers callback deals with characters and is + * keyboard layout dependent. Characters do not map 1:1 to physical keys, as + * a key may produce zero, one or more characters. If you want to know whether + * a specific physical key was pressed or released, see the + * [key callback](@ref glfwSetKeyCallback) instead. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or an + * [error](@ref error_handling) occurred. + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharmodsfun). + * + * @deprecated Scheduled for removal in version 4.0. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); + +/*! @brief Sets the mouse button callback. + * + * This function sets the mouse button callback of the specified window, which + * is called when a mouse button is pressed or released. + * + * When a window loses input focus, it will generate synthetic mouse button + * release events for all pressed mouse buttons. You can tell these events + * from user-generated events by the fact that the synthetic ones are generated + * after the focus loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmousebuttonfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); + +/*! @brief Sets the cursor position callback. + * + * This function sets the cursor position callback of the specified window, + * which is called when the cursor is moved. The callback is provided with the + * position, in screen coordinates, relative to the upper-left corner of the + * content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * + * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. + * + * @ingroup input + */ +GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); + +/*! @brief Sets the cursor enter/leave callback. + * + * This function sets the cursor boundary crossing callback of the specified + * window, which is called when the cursor enters or leaves the content area of + * the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorenterfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_enter + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); + +/*! @brief Sets the scroll callback. + * + * This function sets the scroll callback of the specified window, which is + * called when a scrolling device is used, such as a mouse wheel or scrolling + * area of a touchpad. + * + * The scroll callback receives all scrolling input, like that from a mouse + * wheel or a touchpad scrolling area. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new scroll callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWscrollfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref scrolling + * + * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. + * + * @ingroup input + */ +GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); + +/*! @brief Sets the path drop callback. + * + * This function sets the path drop callback of the specified window, which is + * called when one or more dragged paths are dropped on the window. + * + * Because the path array and its strings may have been generated specifically + * for that event, they are not guaranteed to be valid after the callback has + * returned. If you wish to use them after the callback returns, you need to + * make a deep copy. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new file drop callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWdropfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland File drop is currently unimplemented. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref path_drop + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); + +/*! @brief Returns whether the specified joystick is present. + * + * This function returns whether the specified joystick is present. + * + * There is no need to call this function before other functions that accept + * a joystick ID, as they all check for presence before performing any other + * work. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick + * + * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. + * + * @ingroup input + */ +GLFWAPI int glfwJoystickPresent(int jid); + +/*! @brief Returns the values of all axes of the specified joystick. + * + * This function returns the values of all axes of the specified joystick. + * Each element in the array is a value between -1.0 and 1.0. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of axis values in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of axis values, or `NULL` if the joystick is not present or + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_axis + * + * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. + * + * @ingroup input + */ +GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count); + +/*! @brief Returns the state of all buttons of the specified joystick. + * + * This function returns the state of all buttons of the specified joystick. + * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. + * + * For backward compatibility with earlier versions that did not have @ref + * glfwGetJoystickHats, the button array also includes all hats, each + * represented as four buttons. The hats are in the same order as returned by + * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and + * _left_. To disable these extra buttons, set the @ref + * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of button states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of button states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_button + * + * @since Added in version 2.2. + * @glfw3 Changed to return a dynamic array. + * + * @ingroup input + */ +GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); + +/*! @brief Returns the state of all hats of the specified joystick. + * + * This function returns the state of all hats of the specified joystick. + * Each element in the array is one of the following values: + * + * Name | Value + * ---- | ----- + * `GLFW_HAT_CENTERED` | 0 + * `GLFW_HAT_UP` | 1 + * `GLFW_HAT_RIGHT` | 2 + * `GLFW_HAT_DOWN` | 4 + * `GLFW_HAT_LEFT` | 8 + * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` + * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` + * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` + * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` + * + * The diagonal directions are bitwise combinations of the primary (up, right, + * down and left) directions and you can test for these individually by ANDing + * it with the corresponding direction. + * + * @code + * if (hats[2] & GLFW_HAT_RIGHT) + * { + * // State of hat 2 could be right-up, right or right-down + * } + * @endcode + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of hat states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of hat states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, this function is called again for that joystick or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_hat + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); + +/*! @brief Returns the name of the specified joystick. + * + * This function returns the name, encoded as UTF-8, of the specified joystick. + * The returned string is allocated and freed by GLFW. You should not free it + * yourself. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_name + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetJoystickName(int jid); + +/*! @brief Returns the SDL compatible GUID of the specified joystick. + * + * This function returns the SDL compatible GUID, as a UTF-8 encoded + * hexadecimal string, of the specified joystick. The returned string is + * allocated and freed by GLFW. You should not free it yourself. + * + * The GUID is what connects a joystick to a gamepad mapping. A connected + * joystick will always have a GUID even if there is no gamepad mapping + * assigned to it. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to + * uniquely identify the make and model of a joystick but does not identify + * a specific unit, e.g. all wired Xbox 360 controllers will have the same + * GUID on that platform. The GUID for a unit may vary between platforms + * depending on what hardware information the platform specific APIs provide. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetJoystickGUID(int jid); + +/*! @brief Sets the user pointer of the specified joystick. + * + * This function sets the user-defined pointer of the specified joystick. The + * current value is retained until the joystick is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwGetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer); + +/*! @brief Returns the user pointer of the specified joystick. + * + * This function returns the current value of the user-defined pointer of the + * specified joystick. The initial value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwSetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI void* glfwGetJoystickUserPointer(int jid); + +/*! @brief Returns whether the specified joystick has a gamepad mapping. + * + * This function returns whether the specified joystick is both present and has + * a gamepad mapping. + * + * If the specified joystick is present but does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check if a joystick is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwJoystickIsGamepad(int jid); + +/*! @brief Sets the joystick configuration callback. + * + * This function sets the joystick configuration callback, or removes the + * currently set callback. This is called when a joystick is connected to or + * disconnected from the system. + * + * For joystick connection and disconnection events to be delivered on all + * platforms, you need to call one of the [event processing](@ref events) + * functions. Joystick disconnection may also be detected and the callback + * called by joystick functions. The function will then return whatever it + * returns if the joystick is not present. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(int jid, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWjoystickfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_event + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); + +/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. + * + * This function parses the specified ASCII encoded string and updates the + * internal list with any gamepad mappings it finds. This string may + * contain either a single gamepad mapping or many mappings separated by + * newlines. The parser supports the full format of the `gamecontrollerdb.txt` + * source file including empty lines and comments. + * + * See @ref gamepad_mapping for a description of the format. + * + * If there is already a gamepad mapping for a given GUID in the internal list, + * it will be replaced by the one passed to this function. If the library is + * terminated and re-initialized the internal list will revert to the built-in + * default. + * + * @param[in] string The string containing the gamepad mappings. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * @sa @ref glfwGetGamepadName + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwUpdateGamepadMappings(const char* string); + +/*! @brief Returns the human-readable gamepad name for the specified joystick. + * + * This function returns the human-readable name of the gamepad from the + * gamepad mapping assigned to the specified joystick. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `NULL` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the gamepad, or `NULL` if the + * joystick is not present, does not have a mapping or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref GLFW_INVALID_ENUM. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, the gamepad mappings are updated or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetGamepadName(int jid); + +/*! @brief Retrieves the state of the specified joystick remapped as a gamepad. + * + * This function retrieves the state of the specified joystick remapped to + * an Xbox-like gamepad. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * The Guide button may not be available for input as it is often hooked by the + * system or the Steam client. + * + * Not all devices have all the buttons or axes provided by @ref + * GLFWgamepadstate. Unavailable buttons and axes will always report + * `GLFW_RELEASE` and 0.0 respectively. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] state The gamepad input state of the joystick. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is + * connected, it has no gamepad mapping or an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwUpdateGamepadMappings + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); + +/*! @brief Sets the clipboard to the specified string. + * + * This function sets the system clipboard to the specified, UTF-8 encoded + * string. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwGetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); + +/*! @brief Returns the contents of the clipboard as a string. + * + * This function returns the contents of the system clipboard, if it contains + * or is convertible to a UTF-8 encoded string. If the clipboard is empty or + * if its contents cannot be converted, `NULL` is returned and a @ref + * GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_FORMAT_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwSetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); + +/*! @brief Returns the GLFW time. + * + * This function returns the current GLFW time, in seconds. Unless the time + * has been set using @ref glfwSetTime it measures time elapsed since GLFW was + * initialized. + * + * This function and @ref glfwSetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * The resolution of the timer is system dependent, but is usually on the order + * of a few micro- or nanoseconds. It uses the highest-resolution monotonic + * time source on each operating system. + * + * @return The current time, in seconds, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwSetTime. + * + * @sa @ref time + * + * @since Added in version 1.0. + * + * @ingroup input + */ +GLFWAPI double glfwGetTime(void); + +/*! @brief Sets the GLFW time. + * + * This function sets the current GLFW time, in seconds. The value must be + * a positive finite number less than or equal to 18446744073.0, which is + * approximately 584.5 years. + * + * This function and @ref glfwGetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * @param[in] time The new value, in seconds. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @remark The upper limit of GLFW time is calculated as + * floor((264 - 1) / 109) and is due to implementations + * storing nanoseconds in 64 bits. The limit may be increased in the future. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwGetTime. + * + * @sa @ref time + * + * @since Added in version 2.2. + * + * @ingroup input + */ +GLFWAPI void glfwSetTime(double time); + +/*! @brief Returns the current value of the raw timer. + * + * This function returns the current value of the raw timer, measured in + * 1 / frequency seconds. To get the frequency, call @ref + * glfwGetTimerFrequency. + * + * @return The value of the timer, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerFrequency + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI uint64_t glfwGetTimerValue(void); + +/*! @brief Returns the frequency, in Hz, of the raw timer. + * + * This function returns the frequency, in Hz, of the raw timer. + * + * @return The frequency of the timer, in Hz, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerValue + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI uint64_t glfwGetTimerFrequency(void); + +/*! @brief Makes the context of the specified window current for the calling + * thread. + * + * This function makes the OpenGL or OpenGL ES context of the specified window + * current on the calling thread. A context must only be made current on + * a single thread at a time and each thread can have only a single current + * context at a time. + * + * When moving a context between threads, you must make it non-current on the + * old thread before making it current on the new one. + * + * By default, making a context non-current implicitly forces a pipeline flush. + * On machines that support `GL_KHR_context_flush_control`, you can control + * whether a context performs this flush by setting the + * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) + * hint. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * @param[in] window The window whose context to make current, or `NULL` to + * detach the current context. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwGetCurrentContext + * + * @since Added in version 3.0. + * + * @ingroup context + */ +GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); + +/*! @brief Returns the window whose context is current on the calling thread. + * + * This function returns the window whose OpenGL or OpenGL ES context is + * current on the calling thread. + * + * @return The window whose context is current, or `NULL` if no window's + * context is current. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwMakeContextCurrent + * + * @since Added in version 3.0. + * + * @ingroup context + */ +GLFWAPI GLFWwindow* glfwGetCurrentContext(void); + +/*! @brief Swaps the front and back buffers of the specified window. + * + * This function swaps the front and back buffers of the specified window when + * rendering with OpenGL or OpenGL ES. If the swap interval is greater than + * zero, the GPU driver waits the specified number of screen updates before + * swapping the buffers. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see `vkQueuePresentKHR` instead. + * + * @param[in] window The window whose buffers to swap. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark __EGL:__ The context of the specified window must be current on the + * calling thread. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapInterval + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSwapBuffers(GLFWwindow* window); + +/*! @brief Sets the swap interval for the current context. + * + * This function sets the swap interval for the current OpenGL or OpenGL ES + * context, i.e. the number of screen updates to wait from the time @ref + * glfwSwapBuffers was called before swapping the buffers and returning. This + * is sometimes called _vertical synchronization_, _vertical retrace + * synchronization_ or just _vsync_. + * + * A context that supports either of the `WGL_EXT_swap_control_tear` and + * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap + * intervals, which allows the driver to swap immediately even if a frame + * arrives a little bit late. You can check for these extensions with @ref + * glfwExtensionSupported. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see the present mode of your swapchain instead. + * + * @param[in] interval The minimum number of screen updates to wait for + * until the buffers are swapped by @ref glfwSwapBuffers. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark This function is not called during context creation, leaving the + * swap interval set to whatever is the default for that API. This is done + * because some swap interval extensions used by GLFW do not allow the swap + * interval to be reset to zero once it has been set to a non-zero value. + * + * @remark Some GPU drivers do not honor the requested swap interval, either + * because of a user setting that overrides the application's request or due to + * bugs in the driver. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapBuffers + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI void glfwSwapInterval(int interval); + +/*! @brief Returns whether the specified extension is available. + * + * This function returns whether the specified + * [API extension](@ref context_glext) is supported by the current OpenGL or + * OpenGL ES context. It searches both for client API extension and context + * creation API extensions. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * As this functions retrieves and searches one or more extension strings each + * call, it is recommended that you cache its results if it is going to be used + * frequently. The extension strings will not change during the lifetime of + * a context, so there is no danger in doing this. + * + * This function does not apply to Vulkan. If you are using Vulkan, see @ref + * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` + * and `vkEnumerateDeviceExtensionProperties` instead. + * + * @param[in] extension The ASCII encoded name of the extension. + * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI int glfwExtensionSupported(const char* extension); + +/*! @brief Returns the address of the specified function for the current + * context. + * + * This function returns the address of the specified OpenGL or OpenGL ES + * [core or extension function](@ref context_glext), if it is supported + * by the current context. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and + * `vkGetDeviceProcAddr` instead. + * + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark The address of a given function is not guaranteed to be the same + * between contexts. + * + * @remark This function may return a non-`NULL` address despite the + * associated version or extension not being available. Always check the + * context version or extension string first. + * + * @pointer_lifetime The returned function pointer is valid until the context + * is destroyed or the library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwExtensionSupported + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); + +/*! @brief Returns whether the Vulkan loader and an ICD have been found. + * + * This function returns whether the Vulkan loader and any minimally functional + * ICD have been found. + * + * The availability of a Vulkan loader and even an ICD does not by itself guarantee that + * surface creation or even instance creation is possible. Call @ref + * glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan + * surface creation are available and @ref glfwGetPhysicalDevicePresentationSupport to + * check whether a queue family of a physical device supports image presentation. + * + * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_support + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI int glfwVulkanSupported(void); + +/*! @brief Returns the Vulkan instance extensions required by GLFW. + * + * This function returns an array of names of Vulkan instance extensions required + * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the + * list will always contain `VK_KHR_surface`, so if you don't require any + * additional extensions you can pass this list directly to the + * `VkInstanceCreateInfo` struct. + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * If Vulkan is available but no set of extensions allowing window surface + * creation was found, this function returns `NULL`. You may still use Vulkan + * for off-screen rendering and compute work. + * + * @param[out] count Where to store the number of extensions in the returned + * array. This is set to zero if an error occurred. + * @return An array of ASCII encoded extension names, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @remark Additional extensions may be required by future versions of GLFW. + * You should check if any extensions you wish to enable are already in the + * returned array, as it is an error to specify an extension more than once in + * the `VkInstanceCreateInfo` struct. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_ext + * @sa @ref glfwCreateWindowSurface + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); + +#if defined(VK_VERSION_1_0) + +/*! @brief Returns the address of the specified Vulkan instance function. + * + * This function returns the address of the specified Vulkan core or extension + * function for the specified instance. If instance is set to `NULL` it can + * return any function exported from the Vulkan loader, including at least the + * following functions: + * + * - `vkEnumerateInstanceExtensionProperties` + * - `vkEnumerateInstanceLayerProperties` + * - `vkCreateInstance` + * - `vkGetInstanceProcAddr` + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * This function is equivalent to calling `vkGetInstanceProcAddr` with + * a platform-specific query of the Vulkan loader as a fallback. + * + * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve + * functions related to instance creation. + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @pointer_lifetime The returned function pointer is valid until the library + * is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_proc + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); + +/*! @brief Returns whether the specified queue family can present images. + * + * This function returns whether the specified queue family of the specified + * physical device supports presentation to the platform GLFW was built for. + * + * If Vulkan or the required window surface creation instance extensions are + * not available on the machine, or if the specified instance was not created + * with the required extensions, this function returns `GLFW_FALSE` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available and @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * @param[in] instance The instance that the physical device belongs to. + * @param[in] device The physical device that the queue family belongs to. + * @param[in] queuefamily The index of the queue family to query. + * @return `GLFW_TRUE` if the queue family supports presentation, or + * `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function currently always returns `GLFW_TRUE`, as the + * `VK_MVK_macos_surface` and `VK_EXT_metal_surface` extensions do not provide + * a `vkGetPhysicalDevice*PresentationSupport` type function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_present + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); + +/*! @brief Creates a Vulkan surface for the specified window. + * + * This function creates a Vulkan surface for the specified window. + * + * If the Vulkan loader or at least one minimally functional ICD were not found, + * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref + * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether + * Vulkan is at least minimally available. + * + * If the required window surface creation instance extensions are not + * available or if the specified instance was not created with these extensions + * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * The window surface cannot be shared with another API so the window must + * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) + * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error + * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. + * + * The window surface must be destroyed before the specified Vulkan instance. + * It is the responsibility of the caller to destroy the window surface. GLFW + * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the + * surface. + * + * @param[in] instance The Vulkan instance to create the surface in. + * @param[in] window The window to create the surface for. + * @param[in] allocator The allocator to use, or `NULL` to use the default + * allocator. + * @param[out] surface Where to store the handle of the surface. This is set + * to `VK_NULL_HANDLE` if an error occurred. + * @return `VK_SUCCESS` if successful, or a Vulkan error code if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE + * + * @remark If an error occurs before the creation call is made, GLFW returns + * the Vulkan error code most appropriate for the error. Appropriate use of + * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should + * eliminate almost all occurrences of these errors. + * + * @remark @macos GLFW prefers the `VK_EXT_metal_surface` extension, with the + * `VK_MVK_macos_surface` extension as a fallback. The name of the selected + * extension, if any, is included in the array returned by @ref + * glfwGetRequiredInstanceExtensions. + * + * @remark @macos This function creates and sets a `CAMetalLayer` instance for + * the window content view, which is required for MoltenVK to function. + * + * @remark @x11 By default GLFW prefers the `VK_KHR_xcb_surface` extension, + * with the `VK_KHR_xlib_surface` extension as a fallback. You can make + * `VK_KHR_xlib_surface` the preferred extension by setting the + * [GLFW_X11_XCB_VULKAN_SURFACE](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint) init + * hint. The name of the selected extension, if any, is included in the array + * returned by @ref glfwGetRequiredInstanceExtensions. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_surface + * @sa @ref glfwGetRequiredInstanceExtensions + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +#endif /*VK_VERSION_1_0*/ + + +/************************************************************************* + * Global definition cleanup + *************************************************************************/ + +/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ + +#ifdef GLFW_WINGDIAPI_DEFINED + #undef WINGDIAPI + #undef GLFW_WINGDIAPI_DEFINED +#endif + +#ifdef GLFW_CALLBACK_DEFINED + #undef CALLBACK + #undef GLFW_CALLBACK_DEFINED +#endif + +/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally + * defined by some gl.h variants (OpenBSD) so define it after if needed. + */ +#ifndef GLAPIENTRY + #define GLAPIENTRY APIENTRY + #define GLFW_GLAPIENTRY_DEFINED +#endif + +/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_h_ */ + diff --git a/lib/glfw/include/GLFW/glfw3native.h b/lib/glfw/include/GLFW/glfw3native.h new file mode 100644 index 0000000..171abe3 --- /dev/null +++ b/lib/glfw/include/GLFW/glfw3native.h @@ -0,0 +1,634 @@ +/************************************************************************* + * GLFW 3.4 - www.glfw.org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2018 Camilla Löwy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_native_h_ +#define _glfw3_native_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3native.h + * @brief The header of the native access functions. + * + * This is the header file of the native access functions. See @ref native for + * more information. + */ +/*! @defgroup native Native access + * @brief Functions related to accessing native handles. + * + * **By using the native access functions you assert that you know what you're + * doing and how to fix problems caused by using them. If you don't, you + * shouldn't be using them.** + * + * Before the inclusion of @ref glfw3native.h, you may define zero or more + * window system API macro and zero or more context creation API macros. + * + * The chosen backends must match those the library was compiled for. Failure + * to do this will cause a link-time error. + * + * The available window API macros are: + * * `GLFW_EXPOSE_NATIVE_WIN32` + * * `GLFW_EXPOSE_NATIVE_COCOA` + * * `GLFW_EXPOSE_NATIVE_X11` + * * `GLFW_EXPOSE_NATIVE_WAYLAND` + * + * The available context API macros are: + * * `GLFW_EXPOSE_NATIVE_WGL` + * * `GLFW_EXPOSE_NATIVE_NSGL` + * * `GLFW_EXPOSE_NATIVE_GLX` + * * `GLFW_EXPOSE_NATIVE_EGL` + * * `GLFW_EXPOSE_NATIVE_OSMESA` + * + * These macros select which of the native access functions that are declared + * and which platform-specific headers to include. It is then up your (by + * definition platform-specific) code to handle which of these should be + * defined. + * + * If you do not want the platform-specific headers to be included, define + * `GLFW_NATIVE_INCLUDE_NONE` before including the @ref glfw3native.h header. + * + * @code + * #define GLFW_EXPOSE_NATIVE_WIN32 + * #define GLFW_EXPOSE_NATIVE_WGL + * #define GLFW_NATIVE_INCLUDE_NONE + * #include + * @endcode + */ + + +/************************************************************************* + * System headers and types + *************************************************************************/ + +#if !defined(GLFW_NATIVE_INCLUDE_NONE) + + #if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) + /* This is a workaround for the fact that glfw3.h needs to export APIENTRY (for + * example to allow applications to correctly declare a GL_KHR_debug callback) + * but windows.h assumes no one will define APIENTRY before it does + */ + #if defined(GLFW_APIENTRY_DEFINED) + #undef APIENTRY + #undef GLFW_APIENTRY_DEFINED + #endif + #include + #endif + + #if defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) + #if defined(__OBJC__) + #import + #else + #include + #include + #endif + #endif + + #if defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) + #include + #include + #endif + + #if defined(GLFW_EXPOSE_NATIVE_WAYLAND) + #include + #endif + + #if defined(GLFW_EXPOSE_NATIVE_WGL) + /* WGL is declared by windows.h */ + #endif + #if defined(GLFW_EXPOSE_NATIVE_NSGL) + /* NSGL is declared by Cocoa.h */ + #endif + #if defined(GLFW_EXPOSE_NATIVE_GLX) + /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by + * default it also acts as an OpenGL header + * However, glx.h will include gl.h, which will define it unconditionally + */ + #if defined(GLFW_GLAPIENTRY_DEFINED) + #undef GLAPIENTRY + #undef GLFW_GLAPIENTRY_DEFINED + #endif + #include + #endif + #if defined(GLFW_EXPOSE_NATIVE_EGL) + #include + #endif + #if defined(GLFW_EXPOSE_NATIVE_OSMESA) + /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by + * default it also acts as an OpenGL header + * However, osmesa.h will include gl.h, which will define it unconditionally + */ + #if defined(GLFW_GLAPIENTRY_DEFINED) + #undef GLAPIENTRY + #undef GLFW_GLAPIENTRY_DEFINED + #endif + #include + #endif + +#endif /*GLFW_NATIVE_INCLUDE_NONE*/ + + +/************************************************************************* + * Functions + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) +/*! @brief Returns the adapter device name of the specified monitor. + * + * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) + * of the specified monitor, or `NULL` if an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the display device name of the specified monitor. + * + * @return The UTF-8 encoded display device name (for example + * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); + +/*! @brief Returns the `HWND` of the specified window. + * + * @return The `HWND` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) +/*! @brief Returns the `HGLRC` of the specified window. + * + * @return The `HGLRC` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_COCOA) +/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. + * + * @return The `CGDirectDisplayID` of the specified monitor, or + * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); + +/*! @brief Returns the `NSWindow` of the specified window. + * + * @return The `NSWindow` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_NSGL) +/*! @brief Returns the `NSOpenGLContext` of the specified window. + * + * @return The `NSOpenGLContext` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_X11) +/*! @brief Returns the `Display` used by GLFW. + * + * @return The `Display` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI Display* glfwGetX11Display(void); + +/*! @brief Returns the `RRCrtc` of the specified monitor. + * + * @return The `RRCrtc` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the `RROutput` of the specified monitor. + * + * @return The `RROutput` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); + +/*! @brief Returns the `Window` of the specified window. + * + * @return The `Window` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI Window glfwGetX11Window(GLFWwindow* window); + +/*! @brief Sets the current primary selection to the specified string. + * + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwGetX11SelectionString + * @sa glfwSetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI void glfwSetX11SelectionString(const char* string); + +/*! @brief Returns the contents of the current primary selection as a string. + * + * If the selection is empty or if its contents cannot be converted, `NULL` + * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @return The contents of the selection as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the + * library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwSetX11SelectionString + * @sa glfwGetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetX11SelectionString(void); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_GLX) +/*! @brief Returns the `GLXContext` of the specified window. + * + * @return The `GLXContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); + +/*! @brief Returns the `GLXWindow` of the specified window. + * + * @return The `GLXWindow` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) +/*! @brief Returns the `struct wl_display*` used by GLFW. + * + * @return The `struct wl_display*` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); + +/*! @brief Returns the `struct wl_output*` of the specified monitor. + * + * @return The `struct wl_output*` of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); + +/*! @brief Returns the main `struct wl_surface*` of the specified window. + * + * @return The main `struct wl_surface*` of the specified window, or `NULL` if + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_EGL) +/*! @brief Returns the `EGLDisplay` used by GLFW. + * + * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark Because EGL is initialized on demand, this function will return + * `EGL_NO_DISPLAY` until the first context has been created via EGL. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLDisplay glfwGetEGLDisplay(void); + +/*! @brief Returns the `EGLContext` of the specified window. + * + * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); + +/*! @brief Returns the `EGLSurface` of the specified window. + * + * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) +/*! @brief Retrieves the color buffer associated with the specified window. + * + * @param[in] window The window whose color buffer to retrieve. + * @param[out] width Where to store the width of the color buffer, or `NULL`. + * @param[out] height Where to store the height of the color buffer, or `NULL`. + * @param[out] format Where to store the OSMesa pixel format of the color + * buffer, or `NULL`. + * @param[out] buffer Where to store the address of the color buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); + +/*! @brief Retrieves the depth buffer associated with the specified window. + * + * @param[in] window The window whose depth buffer to retrieve. + * @param[out] width Where to store the width of the depth buffer, or `NULL`. + * @param[out] height Where to store the height of the depth buffer, or `NULL`. + * @param[out] bytesPerValue Where to store the number of bytes per depth + * buffer element, or `NULL`. + * @param[out] buffer Where to store the address of the depth buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); + +/*! @brief Returns the `OSMesaContext` of the specified window. + * + * @return The `OSMesaContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_native_h_ */ + diff --git a/lib/glfw/src/CMakeLists.txt b/lib/glfw/src/CMakeLists.txt new file mode 100644 index 0000000..01f191c --- /dev/null +++ b/lib/glfw/src/CMakeLists.txt @@ -0,0 +1,400 @@ + +add_library(glfw ${GLFW_LIBRARY_TYPE} + "${GLFW_SOURCE_DIR}/include/GLFW/glfw3.h" + "${GLFW_SOURCE_DIR}/include/GLFW/glfw3native.h" + internal.h platform.h mappings.h + context.c init.c input.c monitor.c platform.c vulkan.c window.c + egl_context.c osmesa_context.c null_platform.h null_joystick.h + null_init.c null_monitor.c null_window.c null_joystick.c) + +# The time, thread and module code is shared between all backends on a given OS, +# including the null backend, which still needs those bits to be functional +if (APPLE) + target_sources(glfw PRIVATE cocoa_time.h cocoa_time.c posix_thread.h + posix_module.c posix_thread.c) +elseif (WIN32) + target_sources(glfw PRIVATE win32_time.h win32_thread.h win32_module.c + win32_time.c win32_thread.c) +else() + target_sources(glfw PRIVATE posix_time.h posix_thread.h posix_module.c + posix_time.c posix_thread.c) +endif() + +add_custom_target(update_mappings + COMMAND "${CMAKE_COMMAND}" -P "${GLFW_SOURCE_DIR}/CMake/GenerateMappings.cmake" mappings.h.in mappings.h + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Updating gamepad mappings from upstream repository" + SOURCES mappings.h.in "${GLFW_SOURCE_DIR}/CMake/GenerateMappings.cmake" + VERBATIM) + +set_target_properties(update_mappings PROPERTIES FOLDER "GLFW3") + +if (GLFW_BUILD_COCOA) + target_compile_definitions(glfw PRIVATE _GLFW_COCOA) + target_sources(glfw PRIVATE cocoa_platform.h cocoa_joystick.h cocoa_init.m + cocoa_joystick.m cocoa_monitor.m cocoa_window.m + nsgl_context.m) +endif() + +if (GLFW_BUILD_WIN32) + target_compile_definitions(glfw PRIVATE _GLFW_WIN32) + target_sources(glfw PRIVATE win32_platform.h win32_joystick.h win32_init.c + win32_joystick.c win32_monitor.c win32_window.c + wgl_context.c) +endif() + +if (GLFW_BUILD_X11) + target_compile_definitions(glfw PRIVATE _GLFW_X11) + target_sources(glfw PRIVATE x11_platform.h xkb_unicode.h x11_init.c + x11_monitor.c x11_window.c xkb_unicode.c + glx_context.c) +endif() + +if (GLFW_BUILD_WAYLAND) + target_compile_definitions(glfw PRIVATE _GLFW_WAYLAND) + target_sources(glfw PRIVATE wl_platform.h xkb_unicode.h wl_init.c + wl_monitor.c wl_window.c xkb_unicode.c) +endif() + +if (GLFW_BUILD_X11 OR GLFW_BUILD_WAYLAND) + if (CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_sources(glfw PRIVATE linux_joystick.h linux_joystick.c) + endif() + target_sources(glfw PRIVATE posix_poll.h posix_poll.c) +endif() + +if (GLFW_BUILD_WAYLAND) + include(CheckIncludeFiles) + include(CheckFunctionExists) + check_function_exists(memfd_create HAVE_MEMFD_CREATE) + if (HAVE_MEMFD_CREATE) + target_compile_definitions(glfw PRIVATE HAVE_MEMFD_CREATE) + endif() + + find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner) + + include(FindPkgConfig) + pkg_check_modules(WAYLAND_PROTOCOLS REQUIRED wayland-protocols>=1.15) + pkg_get_variable(WAYLAND_PROTOCOLS_BASE wayland-protocols pkgdatadir) + pkg_get_variable(WAYLAND_CLIENT_PKGDATADIR wayland-client pkgdatadir) + + macro(wayland_generate protocol_file output_file) + add_custom_command(OUTPUT "${output_file}.h" + COMMAND "${WAYLAND_SCANNER_EXECUTABLE}" client-header "${protocol_file}" "${output_file}.h" + DEPENDS "${protocol_file}" + VERBATIM) + + add_custom_command(OUTPUT "${output_file}-code.h" + COMMAND "${WAYLAND_SCANNER_EXECUTABLE}" private-code "${protocol_file}" "${output_file}-code.h" + DEPENDS "${protocol_file}" + VERBATIM) + + target_sources(glfw PRIVATE "${output_file}.h" "${output_file}-code.h") + endmacro() + + wayland_generate( + "${WAYLAND_CLIENT_PKGDATADIR}/wayland.xml" + "${GLFW_BINARY_DIR}/src/wayland-client-protocol") + wayland_generate( + "${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml" + "${GLFW_BINARY_DIR}/src/wayland-xdg-shell-client-protocol") + wayland_generate( + "${WAYLAND_PROTOCOLS_BASE}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml" + "${GLFW_BINARY_DIR}/src/wayland-xdg-decoration-client-protocol") + wayland_generate( + "${WAYLAND_PROTOCOLS_BASE}/stable/viewporter/viewporter.xml" + "${GLFW_BINARY_DIR}/src/wayland-viewporter-client-protocol") + wayland_generate( + "${WAYLAND_PROTOCOLS_BASE}/unstable/relative-pointer/relative-pointer-unstable-v1.xml" + "${GLFW_BINARY_DIR}/src/wayland-relative-pointer-unstable-v1-client-protocol") + wayland_generate( + "${WAYLAND_PROTOCOLS_BASE}/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml" + "${GLFW_BINARY_DIR}/src/wayland-pointer-constraints-unstable-v1-client-protocol") + wayland_generate( + "${WAYLAND_PROTOCOLS_BASE}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml" + "${GLFW_BINARY_DIR}/src/wayland-idle-inhibit-unstable-v1-client-protocol") +endif() + +if (WIN32 AND GLFW_BUILD_SHARED_LIBRARY) + configure_file(glfw.rc.in glfw.rc @ONLY) + target_sources(glfw PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/glfw.rc") +endif() + +if (UNIX AND GLFW_BUILD_SHARED_LIBRARY) + # On Unix-like systems, shared libraries can use the soname system. + set(GLFW_LIB_NAME glfw) +else() + set(GLFW_LIB_NAME glfw3) +endif() + +set_target_properties(glfw PROPERTIES + OUTPUT_NAME ${GLFW_LIB_NAME} + VERSION ${GLFW_VERSION_MAJOR}.${GLFW_VERSION_MINOR} + SOVERSION ${GLFW_VERSION_MAJOR} + POSITION_INDEPENDENT_CODE ON + C_STANDARD 99 + C_EXTENSIONS OFF + DEFINE_SYMBOL _GLFW_BUILD_DLL + FOLDER "GLFW3") + +target_include_directories(glfw PUBLIC + "$" + "$") +target_include_directories(glfw PRIVATE + "${GLFW_SOURCE_DIR}/src" + "${GLFW_BINARY_DIR}/src") +target_link_libraries(glfw PRIVATE Threads::Threads) + +# Workaround for CMake not knowing about .m files before version 3.16 +if (CMAKE_VERSION VERSION_LESS "3.16" AND APPLE) + set_source_files_properties(cocoa_init.m cocoa_joystick.m cocoa_monitor.m + cocoa_window.m nsgl_context.m PROPERTIES + LANGUAGE C) +endif() + +if (GLFW_BUILD_WIN32) + list(APPEND glfw_PKG_LIBS "-lgdi32") +endif() + +if (GLFW_BUILD_COCOA) + target_link_libraries(glfw PRIVATE "-framework Cocoa" + "-framework IOKit" + "-framework CoreFoundation") + + set(glfw_PKG_DEPS "") + set(glfw_PKG_LIBS "-framework Cocoa -framework IOKit -framework CoreFoundation") +endif() + +if (GLFW_BUILD_WAYLAND) + pkg_check_modules(Wayland REQUIRED + wayland-client>=0.2.7 + wayland-cursor>=0.2.7 + wayland-egl>=0.2.7 + xkbcommon>=0.5.0) + + target_include_directories(glfw PRIVATE ${Wayland_INCLUDE_DIRS}) + + if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux") + find_package(EpollShim) + if (EPOLLSHIM_FOUND) + target_include_directories(glfw PRIVATE ${EPOLLSHIM_INCLUDE_DIRS}) + target_link_libraries(glfw PRIVATE ${EPOLLSHIM_LIBRARIES}) + endif() + endif() +endif() + +if (GLFW_BUILD_X11) + find_package(X11 REQUIRED) + target_include_directories(glfw PRIVATE "${X11_X11_INCLUDE_PATH}") + + # Check for XRandR (modern resolution switching and gamma control) + if (NOT X11_Xrandr_INCLUDE_PATH) + message(FATAL_ERROR "RandR headers not found; install libxrandr development package") + endif() + target_include_directories(glfw PRIVATE "${X11_Xrandr_INCLUDE_PATH}") + + # Check for Xinerama (legacy multi-monitor support) + if (NOT X11_Xinerama_INCLUDE_PATH) + message(FATAL_ERROR "Xinerama headers not found; install libxinerama development package") + endif() + target_include_directories(glfw PRIVATE "${X11_Xinerama_INCLUDE_PATH}") + + # Check for Xkb (X keyboard extension) + if (NOT X11_Xkb_INCLUDE_PATH) + message(FATAL_ERROR "XKB headers not found; install X11 development package") + endif() + target_include_directories(glfw PRIVATE "${X11_Xkb_INCLUDE_PATH}") + + # Check for Xcursor (cursor creation from RGBA images) + if (NOT X11_Xcursor_INCLUDE_PATH) + message(FATAL_ERROR "Xcursor headers not found; install libxcursor development package") + endif() + target_include_directories(glfw PRIVATE "${X11_Xcursor_INCLUDE_PATH}") + + # Check for XInput (modern HID input) + if (NOT X11_Xi_INCLUDE_PATH) + message(FATAL_ERROR "XInput headers not found; install libxi development package") + endif() + target_include_directories(glfw PRIVATE "${X11_Xi_INCLUDE_PATH}") + + # Check for X Shape (custom window input shape) + if (NOT X11_Xshape_INCLUDE_PATH) + message(FATAL_ERROR "X Shape headers not found; install libxext development package") + endif() + target_include_directories(glfw PRIVATE "${X11_Xshape_INCLUDE_PATH}") +endif() + +if (UNIX AND NOT APPLE) + find_library(RT_LIBRARY rt) + mark_as_advanced(RT_LIBRARY) + if (RT_LIBRARY) + target_link_libraries(glfw PRIVATE "${RT_LIBRARY}") + list(APPEND glfw_PKG_LIBS "-lrt") + endif() + + find_library(MATH_LIBRARY m) + mark_as_advanced(MATH_LIBRARY) + if (MATH_LIBRARY) + target_link_libraries(glfw PRIVATE "${MATH_LIBRARY}") + list(APPEND glfw_PKG_LIBS "-lm") + endif() + + if (CMAKE_DL_LIBS) + target_link_libraries(glfw PRIVATE "${CMAKE_DL_LIBS}") + list(APPEND glfw_PKG_LIBS "-l${CMAKE_DL_LIBS}") + endif() +endif() + +# Make GCC warn about declarations that VS 2010 and 2012 won't accept for all +# source files that VS will build (Clang ignores this because we set -std=c99) +if (CMAKE_C_COMPILER_ID STREQUAL "GNU") + set_source_files_properties(context.c init.c input.c monitor.c platform.c vulkan.c + window.c null_init.c null_joystick.c null_monitor.c + null_window.c win32_init.c win32_joystick.c win32_module.c + win32_monitor.c win32_time.c win32_thread.c win32_window.c + wgl_context.c egl_context.c osmesa_context.c PROPERTIES + COMPILE_FLAGS -Wdeclaration-after-statement) +endif() + +if (WIN32) + if (GLFW_USE_HYBRID_HPG) + target_compile_definitions(glfw PRIVATE _GLFW_USE_HYBRID_HPG) + endif() +endif() + +# Enable a reasonable set of warnings +# NOTE: The order matters here, Clang-CL matches both MSVC and Clang +if (MSVC) + target_compile_options(glfw PRIVATE "/W3") +elseif (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR + CMAKE_C_COMPILER_ID STREQUAL "Clang" OR + CMAKE_C_COMPILER_ID STREQUAL "AppleClang") + + target_compile_options(glfw PRIVATE "-Wall") +endif() + +if (GLFW_BUILD_WIN32) + target_compile_definitions(glfw PRIVATE UNICODE _UNICODE) +endif() + +# HACK: When building on MinGW, WINVER and UNICODE need to be defined before +# the inclusion of stddef.h (by glfw3.h), which is itself included before +# win32_platform.h. We define them here until a saner solution can be found +# NOTE: MinGW-w64 and Visual C++ do /not/ need this hack. +if (MINGW) + target_compile_definitions(glfw PRIVATE WINVER=0x0501) +endif() + +# Workaround for legacy MinGW not providing XInput and DirectInput +if (MINGW) + include(CheckIncludeFile) + check_include_file(dinput.h DINPUT_H_FOUND) + check_include_file(xinput.h XINPUT_H_FOUND) + if (NOT DINPUT_H_FOUND OR NOT XINPUT_H_FOUND) + target_include_directories(glfw PRIVATE "${GLFW_SOURCE_DIR}/deps/mingw") + endif() +endif() + +# Workaround for the MS CRT deprecating parts of the standard library +if (MSVC OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC") + target_compile_definitions(glfw PRIVATE _CRT_SECURE_NO_WARNINGS) +endif() + +# Workaround for VS 2008 not shipping with stdint.h +if (MSVC90) + target_include_directories(glfw PUBLIC "${GLFW_SOURCE_DIR}/deps/vs2008") +endif() + +# Check for the DirectX 9 SDK as it is not included with VS 2008 +if (MSVC90) + include(CheckIncludeFile) + check_include_file(dinput.h DINPUT_H_FOUND) + if (NOT DINPUT_H_FOUND) + message(FATAL_ERROR "DirectX 9 headers not found; install DirectX 9 SDK") + endif() +endif() + +# Workaround for -std=c99 on Linux disabling _DEFAULT_SOURCE (POSIX 2008 and more) +if (GLFW_BUILD_X11 OR GLFW_BUILD_WAYLAND) + if (CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_compile_definitions(glfw PRIVATE _DEFAULT_SOURCE) + endif() +endif() + +if (GLFW_BUILD_SHARED_LIBRARY) + if (WIN32) + if (MINGW) + # Remove the dependency on the shared version of libgcc + # NOTE: MinGW-w64 has the correct default but MinGW needs this + target_link_libraries(glfw PRIVATE "-static-libgcc") + + # Remove the lib prefix on the DLL (but not the import library) + set_target_properties(glfw PROPERTIES PREFIX "") + + # Add a suffix to the import library to avoid naming conflicts + set_target_properties(glfw PROPERTIES IMPORT_SUFFIX "dll.a") + else() + # Add a suffix to the import library to avoid naming conflicts + set_target_properties(glfw PROPERTIES IMPORT_SUFFIX "dll.lib") + endif() + + target_compile_definitions(glfw INTERFACE GLFW_DLL) + endif() + + if (MINGW) + # Enable link-time exploit mitigation features enabled by default on MSVC + include(CheckCCompilerFlag) + + # Compatibility with data execution prevention (DEP) + set(CMAKE_REQUIRED_FLAGS "-Wl,--nxcompat") + check_c_compiler_flag("" _GLFW_HAS_DEP) + if (_GLFW_HAS_DEP) + target_link_libraries(glfw PRIVATE "-Wl,--nxcompat") + endif() + + # Compatibility with address space layout randomization (ASLR) + set(CMAKE_REQUIRED_FLAGS "-Wl,--dynamicbase") + check_c_compiler_flag("" _GLFW_HAS_ASLR) + if (_GLFW_HAS_ASLR) + target_link_libraries(glfw PRIVATE "-Wl,--dynamicbase") + endif() + + # Compatibility with 64-bit address space layout randomization (ASLR) + set(CMAKE_REQUIRED_FLAGS "-Wl,--high-entropy-va") + check_c_compiler_flag("" _GLFW_HAS_64ASLR) + if (_GLFW_HAS_64ASLR) + target_link_libraries(glfw PRIVATE "-Wl,--high-entropy-va") + endif() + + # Clear flags again to avoid breaking later tests + set(CMAKE_REQUIRED_FLAGS) + endif() + + if (UNIX) + # Hide symbols not explicitly tagged for export from the shared library + target_compile_options(glfw PRIVATE "-fvisibility=hidden") + endif() +endif() + +foreach(arg ${glfw_PKG_DEPS}) + string(APPEND deps " ${arg}") +endforeach() +foreach(arg ${glfw_PKG_LIBS}) + string(APPEND libs " ${arg}") +endforeach() + +set(GLFW_PKG_CONFIG_REQUIRES_PRIVATE "${deps}" CACHE INTERNAL + "GLFW pkg-config Requires.private") +set(GLFW_PKG_CONFIG_LIBS_PRIVATE "${libs}" CACHE INTERNAL + "GLFW pkg-config Libs.private") + +configure_file("${GLFW_SOURCE_DIR}/CMake/glfw3.pc.in" glfw3.pc @ONLY) + +if (GLFW_INSTALL) + install(TARGETS glfw + EXPORT glfwTargets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") +endif() + diff --git a/lib/glfw/src/cocoa_init.m b/lib/glfw/src/cocoa_init.m new file mode 100644 index 0000000..b3831df --- /dev/null +++ b/lib/glfw/src/cocoa_init.m @@ -0,0 +1,697 @@ +//======================================================================== +// GLFW 3.4 macOS - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2009-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_COCOA) + +#include // For MAXPATHLEN + +// Needed for _NSGetProgname +#include + +// Change to our application bundle's resources directory, if present +// +static void changeToResourcesDirectory(void) +{ + char resourcesPath[MAXPATHLEN]; + + CFBundleRef bundle = CFBundleGetMainBundle(); + if (!bundle) + return; + + CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(bundle); + + CFStringRef last = CFURLCopyLastPathComponent(resourcesURL); + if (CFStringCompare(CFSTR("Resources"), last, 0) != kCFCompareEqualTo) + { + CFRelease(last); + CFRelease(resourcesURL); + return; + } + + CFRelease(last); + + if (!CFURLGetFileSystemRepresentation(resourcesURL, + true, + (UInt8*) resourcesPath, + MAXPATHLEN)) + { + CFRelease(resourcesURL); + return; + } + + CFRelease(resourcesURL); + + chdir(resourcesPath); +} + +// Set up the menu bar (manually) +// This is nasty, nasty stuff -- calls to undocumented semi-private APIs that +// could go away at any moment, lots of stuff that really should be +// localize(d|able), etc. Add a nib to save us this horror. +// +static void createMenuBar(void) +{ + NSString* appName = nil; + NSDictionary* bundleInfo = [[NSBundle mainBundle] infoDictionary]; + NSString* nameKeys[] = + { + @"CFBundleDisplayName", + @"CFBundleName", + @"CFBundleExecutable", + }; + + // Try to figure out what the calling application is called + + for (size_t i = 0; i < sizeof(nameKeys) / sizeof(nameKeys[0]); i++) + { + id name = bundleInfo[nameKeys[i]]; + if (name && + [name isKindOfClass:[NSString class]] && + ![name isEqualToString:@""]) + { + appName = name; + break; + } + } + + if (!appName) + { + char** progname = _NSGetProgname(); + if (progname && *progname) + appName = @(*progname); + else + appName = @"GLFW Application"; + } + + NSMenu* bar = [[NSMenu alloc] init]; + [NSApp setMainMenu:bar]; + + NSMenuItem* appMenuItem = + [bar addItemWithTitle:@"" action:NULL keyEquivalent:@""]; + NSMenu* appMenu = [[NSMenu alloc] init]; + [appMenuItem setSubmenu:appMenu]; + + [appMenu addItemWithTitle:[NSString stringWithFormat:@"About %@", appName] + action:@selector(orderFrontStandardAboutPanel:) + keyEquivalent:@""]; + [appMenu addItem:[NSMenuItem separatorItem]]; + NSMenu* servicesMenu = [[NSMenu alloc] init]; + [NSApp setServicesMenu:servicesMenu]; + [[appMenu addItemWithTitle:@"Services" + action:NULL + keyEquivalent:@""] setSubmenu:servicesMenu]; + [servicesMenu release]; + [appMenu addItem:[NSMenuItem separatorItem]]; + [appMenu addItemWithTitle:[NSString stringWithFormat:@"Hide %@", appName] + action:@selector(hide:) + keyEquivalent:@"h"]; + [[appMenu addItemWithTitle:@"Hide Others" + action:@selector(hideOtherApplications:) + keyEquivalent:@"h"] + setKeyEquivalentModifierMask:NSEventModifierFlagOption | NSEventModifierFlagCommand]; + [appMenu addItemWithTitle:@"Show All" + action:@selector(unhideAllApplications:) + keyEquivalent:@""]; + [appMenu addItem:[NSMenuItem separatorItem]]; + [appMenu addItemWithTitle:[NSString stringWithFormat:@"Quit %@", appName] + action:@selector(terminate:) + keyEquivalent:@"q"]; + + NSMenuItem* windowMenuItem = + [bar addItemWithTitle:@"" action:NULL keyEquivalent:@""]; + [bar release]; + NSMenu* windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; + [NSApp setWindowsMenu:windowMenu]; + [windowMenuItem setSubmenu:windowMenu]; + + [windowMenu addItemWithTitle:@"Minimize" + action:@selector(performMiniaturize:) + keyEquivalent:@"m"]; + [windowMenu addItemWithTitle:@"Zoom" + action:@selector(performZoom:) + keyEquivalent:@""]; + [windowMenu addItem:[NSMenuItem separatorItem]]; + [windowMenu addItemWithTitle:@"Bring All to Front" + action:@selector(arrangeInFront:) + keyEquivalent:@""]; + + // TODO: Make this appear at the bottom of the menu (for consistency) + [windowMenu addItem:[NSMenuItem separatorItem]]; + [[windowMenu addItemWithTitle:@"Enter Full Screen" + action:@selector(toggleFullScreen:) + keyEquivalent:@"f"] + setKeyEquivalentModifierMask:NSEventModifierFlagControl | NSEventModifierFlagCommand]; + + // Prior to Snow Leopard, we need to use this oddly-named semi-private API + // to get the application menu working properly. + SEL setAppleMenuSelector = NSSelectorFromString(@"setAppleMenu:"); + [NSApp performSelector:setAppleMenuSelector withObject:appMenu]; +} + +// Create key code translation tables +// +static void createKeyTables(void) +{ + memset(_glfw.ns.keycodes, -1, sizeof(_glfw.ns.keycodes)); + memset(_glfw.ns.scancodes, -1, sizeof(_glfw.ns.scancodes)); + + _glfw.ns.keycodes[0x1D] = GLFW_KEY_0; + _glfw.ns.keycodes[0x12] = GLFW_KEY_1; + _glfw.ns.keycodes[0x13] = GLFW_KEY_2; + _glfw.ns.keycodes[0x14] = GLFW_KEY_3; + _glfw.ns.keycodes[0x15] = GLFW_KEY_4; + _glfw.ns.keycodes[0x17] = GLFW_KEY_5; + _glfw.ns.keycodes[0x16] = GLFW_KEY_6; + _glfw.ns.keycodes[0x1A] = GLFW_KEY_7; + _glfw.ns.keycodes[0x1C] = GLFW_KEY_8; + _glfw.ns.keycodes[0x19] = GLFW_KEY_9; + _glfw.ns.keycodes[0x00] = GLFW_KEY_A; + _glfw.ns.keycodes[0x0B] = GLFW_KEY_B; + _glfw.ns.keycodes[0x08] = GLFW_KEY_C; + _glfw.ns.keycodes[0x02] = GLFW_KEY_D; + _glfw.ns.keycodes[0x0E] = GLFW_KEY_E; + _glfw.ns.keycodes[0x03] = GLFW_KEY_F; + _glfw.ns.keycodes[0x05] = GLFW_KEY_G; + _glfw.ns.keycodes[0x04] = GLFW_KEY_H; + _glfw.ns.keycodes[0x22] = GLFW_KEY_I; + _glfw.ns.keycodes[0x26] = GLFW_KEY_J; + _glfw.ns.keycodes[0x28] = GLFW_KEY_K; + _glfw.ns.keycodes[0x25] = GLFW_KEY_L; + _glfw.ns.keycodes[0x2E] = GLFW_KEY_M; + _glfw.ns.keycodes[0x2D] = GLFW_KEY_N; + _glfw.ns.keycodes[0x1F] = GLFW_KEY_O; + _glfw.ns.keycodes[0x23] = GLFW_KEY_P; + _glfw.ns.keycodes[0x0C] = GLFW_KEY_Q; + _glfw.ns.keycodes[0x0F] = GLFW_KEY_R; + _glfw.ns.keycodes[0x01] = GLFW_KEY_S; + _glfw.ns.keycodes[0x11] = GLFW_KEY_T; + _glfw.ns.keycodes[0x20] = GLFW_KEY_U; + _glfw.ns.keycodes[0x09] = GLFW_KEY_V; + _glfw.ns.keycodes[0x0D] = GLFW_KEY_W; + _glfw.ns.keycodes[0x07] = GLFW_KEY_X; + _glfw.ns.keycodes[0x10] = GLFW_KEY_Y; + _glfw.ns.keycodes[0x06] = GLFW_KEY_Z; + + _glfw.ns.keycodes[0x27] = GLFW_KEY_APOSTROPHE; + _glfw.ns.keycodes[0x2A] = GLFW_KEY_BACKSLASH; + _glfw.ns.keycodes[0x2B] = GLFW_KEY_COMMA; + _glfw.ns.keycodes[0x18] = GLFW_KEY_EQUAL; + _glfw.ns.keycodes[0x32] = GLFW_KEY_GRAVE_ACCENT; + _glfw.ns.keycodes[0x21] = GLFW_KEY_LEFT_BRACKET; + _glfw.ns.keycodes[0x1B] = GLFW_KEY_MINUS; + _glfw.ns.keycodes[0x2F] = GLFW_KEY_PERIOD; + _glfw.ns.keycodes[0x1E] = GLFW_KEY_RIGHT_BRACKET; + _glfw.ns.keycodes[0x29] = GLFW_KEY_SEMICOLON; + _glfw.ns.keycodes[0x2C] = GLFW_KEY_SLASH; + _glfw.ns.keycodes[0x0A] = GLFW_KEY_WORLD_1; + + _glfw.ns.keycodes[0x33] = GLFW_KEY_BACKSPACE; + _glfw.ns.keycodes[0x39] = GLFW_KEY_CAPS_LOCK; + _glfw.ns.keycodes[0x75] = GLFW_KEY_DELETE; + _glfw.ns.keycodes[0x7D] = GLFW_KEY_DOWN; + _glfw.ns.keycodes[0x77] = GLFW_KEY_END; + _glfw.ns.keycodes[0x24] = GLFW_KEY_ENTER; + _glfw.ns.keycodes[0x35] = GLFW_KEY_ESCAPE; + _glfw.ns.keycodes[0x7A] = GLFW_KEY_F1; + _glfw.ns.keycodes[0x78] = GLFW_KEY_F2; + _glfw.ns.keycodes[0x63] = GLFW_KEY_F3; + _glfw.ns.keycodes[0x76] = GLFW_KEY_F4; + _glfw.ns.keycodes[0x60] = GLFW_KEY_F5; + _glfw.ns.keycodes[0x61] = GLFW_KEY_F6; + _glfw.ns.keycodes[0x62] = GLFW_KEY_F7; + _glfw.ns.keycodes[0x64] = GLFW_KEY_F8; + _glfw.ns.keycodes[0x65] = GLFW_KEY_F9; + _glfw.ns.keycodes[0x6D] = GLFW_KEY_F10; + _glfw.ns.keycodes[0x67] = GLFW_KEY_F11; + _glfw.ns.keycodes[0x6F] = GLFW_KEY_F12; + _glfw.ns.keycodes[0x69] = GLFW_KEY_PRINT_SCREEN; + _glfw.ns.keycodes[0x6B] = GLFW_KEY_F14; + _glfw.ns.keycodes[0x71] = GLFW_KEY_F15; + _glfw.ns.keycodes[0x6A] = GLFW_KEY_F16; + _glfw.ns.keycodes[0x40] = GLFW_KEY_F17; + _glfw.ns.keycodes[0x4F] = GLFW_KEY_F18; + _glfw.ns.keycodes[0x50] = GLFW_KEY_F19; + _glfw.ns.keycodes[0x5A] = GLFW_KEY_F20; + _glfw.ns.keycodes[0x73] = GLFW_KEY_HOME; + _glfw.ns.keycodes[0x72] = GLFW_KEY_INSERT; + _glfw.ns.keycodes[0x7B] = GLFW_KEY_LEFT; + _glfw.ns.keycodes[0x3A] = GLFW_KEY_LEFT_ALT; + _glfw.ns.keycodes[0x3B] = GLFW_KEY_LEFT_CONTROL; + _glfw.ns.keycodes[0x38] = GLFW_KEY_LEFT_SHIFT; + _glfw.ns.keycodes[0x37] = GLFW_KEY_LEFT_SUPER; + _glfw.ns.keycodes[0x6E] = GLFW_KEY_MENU; + _glfw.ns.keycodes[0x47] = GLFW_KEY_NUM_LOCK; + _glfw.ns.keycodes[0x79] = GLFW_KEY_PAGE_DOWN; + _glfw.ns.keycodes[0x74] = GLFW_KEY_PAGE_UP; + _glfw.ns.keycodes[0x7C] = GLFW_KEY_RIGHT; + _glfw.ns.keycodes[0x3D] = GLFW_KEY_RIGHT_ALT; + _glfw.ns.keycodes[0x3E] = GLFW_KEY_RIGHT_CONTROL; + _glfw.ns.keycodes[0x3C] = GLFW_KEY_RIGHT_SHIFT; + _glfw.ns.keycodes[0x36] = GLFW_KEY_RIGHT_SUPER; + _glfw.ns.keycodes[0x31] = GLFW_KEY_SPACE; + _glfw.ns.keycodes[0x30] = GLFW_KEY_TAB; + _glfw.ns.keycodes[0x7E] = GLFW_KEY_UP; + + _glfw.ns.keycodes[0x52] = GLFW_KEY_KP_0; + _glfw.ns.keycodes[0x53] = GLFW_KEY_KP_1; + _glfw.ns.keycodes[0x54] = GLFW_KEY_KP_2; + _glfw.ns.keycodes[0x55] = GLFW_KEY_KP_3; + _glfw.ns.keycodes[0x56] = GLFW_KEY_KP_4; + _glfw.ns.keycodes[0x57] = GLFW_KEY_KP_5; + _glfw.ns.keycodes[0x58] = GLFW_KEY_KP_6; + _glfw.ns.keycodes[0x59] = GLFW_KEY_KP_7; + _glfw.ns.keycodes[0x5B] = GLFW_KEY_KP_8; + _glfw.ns.keycodes[0x5C] = GLFW_KEY_KP_9; + _glfw.ns.keycodes[0x45] = GLFW_KEY_KP_ADD; + _glfw.ns.keycodes[0x41] = GLFW_KEY_KP_DECIMAL; + _glfw.ns.keycodes[0x4B] = GLFW_KEY_KP_DIVIDE; + _glfw.ns.keycodes[0x4C] = GLFW_KEY_KP_ENTER; + _glfw.ns.keycodes[0x51] = GLFW_KEY_KP_EQUAL; + _glfw.ns.keycodes[0x43] = GLFW_KEY_KP_MULTIPLY; + _glfw.ns.keycodes[0x4E] = GLFW_KEY_KP_SUBTRACT; + + for (int scancode = 0; scancode < 256; scancode++) + { + // Store the reverse translation for faster key name lookup + if (_glfw.ns.keycodes[scancode] >= 0) + _glfw.ns.scancodes[_glfw.ns.keycodes[scancode]] = scancode; + } +} + +// Retrieve Unicode data for the current keyboard layout +// +static GLFWbool updateUnicodeData(void) +{ + if (_glfw.ns.inputSource) + { + CFRelease(_glfw.ns.inputSource); + _glfw.ns.inputSource = NULL; + _glfw.ns.unicodeData = nil; + } + + _glfw.ns.inputSource = TISCopyCurrentKeyboardLayoutInputSource(); + if (!_glfw.ns.inputSource) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to retrieve keyboard layout input source"); + return GLFW_FALSE; + } + + _glfw.ns.unicodeData = + TISGetInputSourceProperty(_glfw.ns.inputSource, + kTISPropertyUnicodeKeyLayoutData); + if (!_glfw.ns.unicodeData) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to retrieve keyboard layout Unicode data"); + return GLFW_FALSE; + } + + return GLFW_TRUE; +} + +// Load HIToolbox.framework and the TIS symbols we need from it +// +static GLFWbool initializeTIS(void) +{ + // This works only because Cocoa has already loaded it properly + _glfw.ns.tis.bundle = + CFBundleGetBundleWithIdentifier(CFSTR("com.apple.HIToolbox")); + if (!_glfw.ns.tis.bundle) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to load HIToolbox.framework"); + return GLFW_FALSE; + } + + CFStringRef* kPropertyUnicodeKeyLayoutData = + CFBundleGetDataPointerForName(_glfw.ns.tis.bundle, + CFSTR("kTISPropertyUnicodeKeyLayoutData")); + _glfw.ns.tis.CopyCurrentKeyboardLayoutInputSource = + CFBundleGetFunctionPointerForName(_glfw.ns.tis.bundle, + CFSTR("TISCopyCurrentKeyboardLayoutInputSource")); + _glfw.ns.tis.GetInputSourceProperty = + CFBundleGetFunctionPointerForName(_glfw.ns.tis.bundle, + CFSTR("TISGetInputSourceProperty")); + _glfw.ns.tis.GetKbdType = + CFBundleGetFunctionPointerForName(_glfw.ns.tis.bundle, + CFSTR("LMGetKbdType")); + + if (!kPropertyUnicodeKeyLayoutData || + !TISCopyCurrentKeyboardLayoutInputSource || + !TISGetInputSourceProperty || + !LMGetKbdType) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to load TIS API symbols"); + return GLFW_FALSE; + } + + _glfw.ns.tis.kPropertyUnicodeKeyLayoutData = + *kPropertyUnicodeKeyLayoutData; + + return updateUnicodeData(); +} + +@interface GLFWHelper : NSObject +@end + +@implementation GLFWHelper + +- (void)selectedKeyboardInputSourceChanged:(NSObject* )object +{ + updateUnicodeData(); +} + +- (void)doNothing:(id)object +{ +} + +@end // GLFWHelper + +@interface GLFWApplicationDelegate : NSObject +@end + +@implementation GLFWApplicationDelegate + +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender +{ + for (_GLFWwindow* window = _glfw.windowListHead; window; window = window->next) + _glfwInputWindowCloseRequest(window); + + return NSTerminateCancel; +} + +- (void)applicationDidChangeScreenParameters:(NSNotification *) notification +{ + for (_GLFWwindow* window = _glfw.windowListHead; window; window = window->next) + { + if (window->context.client != GLFW_NO_API) + [window->context.nsgl.object update]; + } + + _glfwPollMonitorsCocoa(); +} + +- (void)applicationWillFinishLaunching:(NSNotification *)notification +{ + if (_glfw.hints.init.ns.menubar) + { + // Menu bar setup must go between sharedApplication and finishLaunching + // in order to properly emulate the behavior of NSApplicationMain + + if ([[NSBundle mainBundle] pathForResource:@"MainMenu" ofType:@"nib"]) + { + [[NSBundle mainBundle] loadNibNamed:@"MainMenu" + owner:NSApp + topLevelObjects:&_glfw.ns.nibObjects]; + } + else + createMenuBar(); + } +} + +- (void)applicationDidFinishLaunching:(NSNotification *)notification +{ + _glfwPostEmptyEventCocoa(); + [NSApp stop:nil]; +} + +- (void)applicationDidHide:(NSNotification *)notification +{ + for (int i = 0; i < _glfw.monitorCount; i++) + _glfwRestoreVideoModeCocoa(_glfw.monitors[i]); +} + +@end // GLFWApplicationDelegate + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +void* _glfwLoadLocalVulkanLoaderCocoa(void) +{ + CFBundleRef bundle = CFBundleGetMainBundle(); + if (!bundle) + return NULL; + + CFURLRef frameworksUrl = CFBundleCopyPrivateFrameworksURL(bundle); + if (!frameworksUrl) + return NULL; + + CFURLRef loaderUrl = CFURLCreateCopyAppendingPathComponent( + kCFAllocatorDefault, frameworksUrl, CFSTR("libvulkan.1.dylib"), false); + if (!loaderUrl) + { + CFRelease(frameworksUrl); + return NULL; + } + + char path[PATH_MAX]; + void* handle = NULL; + + if (CFURLGetFileSystemRepresentation(loaderUrl, true, (UInt8*) path, sizeof(path) - 1)) + handle = _glfwPlatformLoadModule(path); + + CFRelease(loaderUrl); + CFRelease(frameworksUrl); + return handle; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwConnectCocoa(int platformID, _GLFWplatform* platform) +{ + const _GLFWplatform cocoa = + { + GLFW_PLATFORM_COCOA, + _glfwInitCocoa, + _glfwTerminateCocoa, + _glfwGetCursorPosCocoa, + _glfwSetCursorPosCocoa, + _glfwSetCursorModeCocoa, + _glfwSetRawMouseMotionCocoa, + _glfwRawMouseMotionSupportedCocoa, + _glfwCreateCursorCocoa, + _glfwCreateStandardCursorCocoa, + _glfwDestroyCursorCocoa, + _glfwSetCursorCocoa, + _glfwGetScancodeNameCocoa, + _glfwGetKeyScancodeCocoa, + _glfwSetClipboardStringCocoa, + _glfwGetClipboardStringCocoa, + _glfwInitJoysticksCocoa, + _glfwTerminateJoysticksCocoa, + _glfwPollJoystickCocoa, + _glfwGetMappingNameCocoa, + _glfwUpdateGamepadGUIDCocoa, + _glfwFreeMonitorCocoa, + _glfwGetMonitorPosCocoa, + _glfwGetMonitorContentScaleCocoa, + _glfwGetMonitorWorkareaCocoa, + _glfwGetVideoModesCocoa, + _glfwGetVideoModeCocoa, + _glfwGetGammaRampCocoa, + _glfwSetGammaRampCocoa, + _glfwCreateWindowCocoa, + _glfwDestroyWindowCocoa, + _glfwSetWindowTitleCocoa, + _glfwSetWindowIconCocoa, + _glfwGetWindowPosCocoa, + _glfwSetWindowPosCocoa, + _glfwGetWindowSizeCocoa, + _glfwSetWindowSizeCocoa, + _glfwSetWindowSizeLimitsCocoa, + _glfwSetWindowAspectRatioCocoa, + _glfwGetFramebufferSizeCocoa, + _glfwGetWindowFrameSizeCocoa, + _glfwGetWindowContentScaleCocoa, + _glfwIconifyWindowCocoa, + _glfwRestoreWindowCocoa, + _glfwMaximizeWindowCocoa, + _glfwShowWindowCocoa, + _glfwHideWindowCocoa, + _glfwRequestWindowAttentionCocoa, + _glfwFocusWindowCocoa, + _glfwSetWindowMonitorCocoa, + _glfwWindowFocusedCocoa, + _glfwWindowIconifiedCocoa, + _glfwWindowVisibleCocoa, + _glfwWindowMaximizedCocoa, + _glfwWindowHoveredCocoa, + _glfwFramebufferTransparentCocoa, + _glfwGetWindowOpacityCocoa, + _glfwSetWindowResizableCocoa, + _glfwSetWindowDecoratedCocoa, + _glfwSetWindowFloatingCocoa, + _glfwSetWindowOpacityCocoa, + _glfwSetWindowMousePassthroughCocoa, + _glfwPollEventsCocoa, + _glfwWaitEventsCocoa, + _glfwWaitEventsTimeoutCocoa, + _glfwPostEmptyEventCocoa, + _glfwGetEGLPlatformCocoa, + _glfwGetEGLNativeDisplayCocoa, + _glfwGetEGLNativeWindowCocoa, + _glfwGetRequiredInstanceExtensionsCocoa, + _glfwGetPhysicalDevicePresentationSupportCocoa, + _glfwCreateWindowSurfaceCocoa, + }; + + *platform = cocoa; + return GLFW_TRUE; +} + +int _glfwInitCocoa(void) +{ + @autoreleasepool { + + _glfw.ns.helper = [[GLFWHelper alloc] init]; + + [NSThread detachNewThreadSelector:@selector(doNothing:) + toTarget:_glfw.ns.helper + withObject:nil]; + + [NSApplication sharedApplication]; + + _glfw.ns.delegate = [[GLFWApplicationDelegate alloc] init]; + if (_glfw.ns.delegate == nil) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to create application delegate"); + return GLFW_FALSE; + } + + [NSApp setDelegate:_glfw.ns.delegate]; + + NSEvent* (^block)(NSEvent*) = ^ NSEvent* (NSEvent* event) + { + if ([event modifierFlags] & NSEventModifierFlagCommand) + [[NSApp keyWindow] sendEvent:event]; + + return event; + }; + + _glfw.ns.keyUpMonitor = + [NSEvent addLocalMonitorForEventsMatchingMask:NSEventMaskKeyUp + handler:block]; + + if (_glfw.hints.init.ns.chdir) + changeToResourcesDirectory(); + + // Press and Hold prevents some keys from emitting repeated characters + NSDictionary* defaults = @{@"ApplePressAndHoldEnabled":@NO}; + [[NSUserDefaults standardUserDefaults] registerDefaults:defaults]; + + [[NSNotificationCenter defaultCenter] + addObserver:_glfw.ns.helper + selector:@selector(selectedKeyboardInputSourceChanged:) + name:NSTextInputContextKeyboardSelectionDidChangeNotification + object:nil]; + + createKeyTables(); + + _glfw.ns.eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState); + if (!_glfw.ns.eventSource) + return GLFW_FALSE; + + CGEventSourceSetLocalEventsSuppressionInterval(_glfw.ns.eventSource, 0.0); + + if (!initializeTIS()) + return GLFW_FALSE; + + _glfwPollMonitorsCocoa(); + + if (![[NSRunningApplication currentApplication] isFinishedLaunching]) + [NSApp run]; + + // In case we are unbundled, make us a proper UI application + if (_glfw.hints.init.ns.menubar) + [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; + + return GLFW_TRUE; + + } // autoreleasepool +} + +void _glfwTerminateCocoa(void) +{ + @autoreleasepool { + + if (_glfw.ns.inputSource) + { + CFRelease(_glfw.ns.inputSource); + _glfw.ns.inputSource = NULL; + _glfw.ns.unicodeData = nil; + } + + if (_glfw.ns.eventSource) + { + CFRelease(_glfw.ns.eventSource); + _glfw.ns.eventSource = NULL; + } + + if (_glfw.ns.delegate) + { + [NSApp setDelegate:nil]; + [_glfw.ns.delegate release]; + _glfw.ns.delegate = nil; + } + + if (_glfw.ns.helper) + { + [[NSNotificationCenter defaultCenter] + removeObserver:_glfw.ns.helper + name:NSTextInputContextKeyboardSelectionDidChangeNotification + object:nil]; + [[NSNotificationCenter defaultCenter] + removeObserver:_glfw.ns.helper]; + [_glfw.ns.helper release]; + _glfw.ns.helper = nil; + } + + if (_glfw.ns.keyUpMonitor) + [NSEvent removeMonitor:_glfw.ns.keyUpMonitor]; + + _glfw_free(_glfw.ns.clipboardString); + + _glfwTerminateNSGL(); + _glfwTerminateEGL(); + _glfwTerminateOSMesa(); + + } // autoreleasepool +} + +#endif // _GLFW_COCOA + diff --git a/lib/glfw/src/cocoa_joystick.h b/lib/glfw/src/cocoa_joystick.h new file mode 100644 index 0000000..2f46dfc --- /dev/null +++ b/lib/glfw/src/cocoa_joystick.h @@ -0,0 +1,49 @@ +//======================================================================== +// GLFW 3.4 Cocoa - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include +#include +#include + +#define GLFW_COCOA_JOYSTICK_STATE _GLFWjoystickNS ns; +#define GLFW_COCOA_LIBRARY_JOYSTICK_STATE + +// Cocoa-specific per-joystick data +// +typedef struct _GLFWjoystickNS +{ + IOHIDDeviceRef device; + CFMutableArrayRef axes; + CFMutableArrayRef buttons; + CFMutableArrayRef hats; +} _GLFWjoystickNS; + +GLFWbool _glfwInitJoysticksCocoa(void); +void _glfwTerminateJoysticksCocoa(void); +GLFWbool _glfwPollJoystickCocoa(_GLFWjoystick* js, int mode); +const char* _glfwGetMappingNameCocoa(void); +void _glfwUpdateGamepadGUIDCocoa(char* guid); + diff --git a/lib/glfw/src/cocoa_joystick.m b/lib/glfw/src/cocoa_joystick.m new file mode 100644 index 0000000..865adac --- /dev/null +++ b/lib/glfw/src/cocoa_joystick.m @@ -0,0 +1,482 @@ +//======================================================================== +// GLFW 3.4 Cocoa - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2009-2019 Camilla Löwy +// Copyright (c) 2012 Torsten Walluhn +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_COCOA) + +#include +#include +#include + +#include +#include + +#include +#include + + +// Joystick element information +// +typedef struct _GLFWjoyelementNS +{ + IOHIDElementRef native; + uint32_t usage; + int index; + long minimum; + long maximum; + +} _GLFWjoyelementNS; + + +// Returns the value of the specified element of the specified joystick +// +static long getElementValue(_GLFWjoystick* js, _GLFWjoyelementNS* element) +{ + IOHIDValueRef valueRef; + long value = 0; + + if (js->ns.device) + { + if (IOHIDDeviceGetValue(js->ns.device, + element->native, + &valueRef) == kIOReturnSuccess) + { + value = IOHIDValueGetIntegerValue(valueRef); + } + } + + return value; +} + +// Comparison function for matching the SDL element order +// +static CFComparisonResult compareElements(const void* fp, + const void* sp, + void* user) +{ + const _GLFWjoyelementNS* fe = fp; + const _GLFWjoyelementNS* se = sp; + if (fe->usage < se->usage) + return kCFCompareLessThan; + if (fe->usage > se->usage) + return kCFCompareGreaterThan; + if (fe->index < se->index) + return kCFCompareLessThan; + if (fe->index > se->index) + return kCFCompareGreaterThan; + return kCFCompareEqualTo; +} + +// Removes the specified joystick +// +static void closeJoystick(_GLFWjoystick* js) +{ + _glfwInputJoystick(js, GLFW_DISCONNECTED); + + for (int i = 0; i < CFArrayGetCount(js->ns.axes); i++) + _glfw_free((void*) CFArrayGetValueAtIndex(js->ns.axes, i)); + CFRelease(js->ns.axes); + + for (int i = 0; i < CFArrayGetCount(js->ns.buttons); i++) + _glfw_free((void*) CFArrayGetValueAtIndex(js->ns.buttons, i)); + CFRelease(js->ns.buttons); + + for (int i = 0; i < CFArrayGetCount(js->ns.hats); i++) + _glfw_free((void*) CFArrayGetValueAtIndex(js->ns.hats, i)); + CFRelease(js->ns.hats); + + _glfwFreeJoystick(js); +} + +// Callback for user-initiated joystick addition +// +static void matchCallback(void* context, + IOReturn result, + void* sender, + IOHIDDeviceRef device) +{ + int jid; + char name[256]; + char guid[33]; + CFTypeRef property; + uint32_t vendor = 0, product = 0, version = 0; + _GLFWjoystick* js; + CFMutableArrayRef axes, buttons, hats; + + for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + if (_glfw.joysticks[jid].ns.device == device) + return; + } + + axes = CFArrayCreateMutable(NULL, 0, NULL); + buttons = CFArrayCreateMutable(NULL, 0, NULL); + hats = CFArrayCreateMutable(NULL, 0, NULL); + + property = IOHIDDeviceGetProperty(device, CFSTR(kIOHIDProductKey)); + if (property) + { + CFStringGetCString(property, + name, + sizeof(name), + kCFStringEncodingUTF8); + } + else + strncpy(name, "Unknown", sizeof(name)); + + property = IOHIDDeviceGetProperty(device, CFSTR(kIOHIDVendorIDKey)); + if (property) + CFNumberGetValue(property, kCFNumberSInt32Type, &vendor); + + property = IOHIDDeviceGetProperty(device, CFSTR(kIOHIDProductIDKey)); + if (property) + CFNumberGetValue(property, kCFNumberSInt32Type, &product); + + property = IOHIDDeviceGetProperty(device, CFSTR(kIOHIDVersionNumberKey)); + if (property) + CFNumberGetValue(property, kCFNumberSInt32Type, &version); + + // Generate a joystick GUID that matches the SDL 2.0.5+ one + if (vendor && product) + { + sprintf(guid, "03000000%02x%02x0000%02x%02x0000%02x%02x0000", + (uint8_t) vendor, (uint8_t) (vendor >> 8), + (uint8_t) product, (uint8_t) (product >> 8), + (uint8_t) version, (uint8_t) (version >> 8)); + } + else + { + sprintf(guid, "05000000%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x00", + name[0], name[1], name[2], name[3], + name[4], name[5], name[6], name[7], + name[8], name[9], name[10]); + } + + CFArrayRef elements = + IOHIDDeviceCopyMatchingElements(device, NULL, kIOHIDOptionsTypeNone); + + for (CFIndex i = 0; i < CFArrayGetCount(elements); i++) + { + IOHIDElementRef native = (IOHIDElementRef) + CFArrayGetValueAtIndex(elements, i); + if (CFGetTypeID(native) != IOHIDElementGetTypeID()) + continue; + + const IOHIDElementType type = IOHIDElementGetType(native); + if ((type != kIOHIDElementTypeInput_Axis) && + (type != kIOHIDElementTypeInput_Button) && + (type != kIOHIDElementTypeInput_Misc)) + { + continue; + } + + CFMutableArrayRef target = NULL; + + const uint32_t usage = IOHIDElementGetUsage(native); + const uint32_t page = IOHIDElementGetUsagePage(native); + if (page == kHIDPage_GenericDesktop) + { + switch (usage) + { + case kHIDUsage_GD_X: + case kHIDUsage_GD_Y: + case kHIDUsage_GD_Z: + case kHIDUsage_GD_Rx: + case kHIDUsage_GD_Ry: + case kHIDUsage_GD_Rz: + case kHIDUsage_GD_Slider: + case kHIDUsage_GD_Dial: + case kHIDUsage_GD_Wheel: + target = axes; + break; + case kHIDUsage_GD_Hatswitch: + target = hats; + break; + case kHIDUsage_GD_DPadUp: + case kHIDUsage_GD_DPadRight: + case kHIDUsage_GD_DPadDown: + case kHIDUsage_GD_DPadLeft: + case kHIDUsage_GD_SystemMainMenu: + case kHIDUsage_GD_Select: + case kHIDUsage_GD_Start: + target = buttons; + break; + } + } + else if (page == kHIDPage_Simulation) + { + switch (usage) + { + case kHIDUsage_Sim_Accelerator: + case kHIDUsage_Sim_Brake: + case kHIDUsage_Sim_Throttle: + case kHIDUsage_Sim_Rudder: + case kHIDUsage_Sim_Steering: + target = axes; + break; + } + } + else if (page == kHIDPage_Button || page == kHIDPage_Consumer) + target = buttons; + + if (target) + { + _GLFWjoyelementNS* element = _glfw_calloc(1, sizeof(_GLFWjoyelementNS)); + element->native = native; + element->usage = usage; + element->index = (int) CFArrayGetCount(target); + element->minimum = IOHIDElementGetLogicalMin(native); + element->maximum = IOHIDElementGetLogicalMax(native); + CFArrayAppendValue(target, element); + } + } + + CFRelease(elements); + + CFArraySortValues(axes, CFRangeMake(0, CFArrayGetCount(axes)), + compareElements, NULL); + CFArraySortValues(buttons, CFRangeMake(0, CFArrayGetCount(buttons)), + compareElements, NULL); + CFArraySortValues(hats, CFRangeMake(0, CFArrayGetCount(hats)), + compareElements, NULL); + + js = _glfwAllocJoystick(name, guid, + (int) CFArrayGetCount(axes), + (int) CFArrayGetCount(buttons), + (int) CFArrayGetCount(hats)); + + js->ns.device = device; + js->ns.axes = axes; + js->ns.buttons = buttons; + js->ns.hats = hats; + + _glfwInputJoystick(js, GLFW_CONNECTED); +} + +// Callback for user-initiated joystick removal +// +static void removeCallback(void* context, + IOReturn result, + void* sender, + IOHIDDeviceRef device) +{ + for (int jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + if (_glfw.joysticks[jid].connected && _glfw.joysticks[jid].ns.device == device) + { + closeJoystick(&_glfw.joysticks[jid]); + break; + } + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwInitJoysticksCocoa(void) +{ + CFMutableArrayRef matching; + const long usages[] = + { + kHIDUsage_GD_Joystick, + kHIDUsage_GD_GamePad, + kHIDUsage_GD_MultiAxisController + }; + + _glfw.ns.hidManager = IOHIDManagerCreate(kCFAllocatorDefault, + kIOHIDOptionsTypeNone); + + matching = CFArrayCreateMutable(kCFAllocatorDefault, + 0, + &kCFTypeArrayCallBacks); + if (!matching) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "Cocoa: Failed to create array"); + return GLFW_FALSE; + } + + for (size_t i = 0; i < sizeof(usages) / sizeof(long); i++) + { + const long page = kHIDPage_GenericDesktop; + + CFMutableDictionaryRef dict = + CFDictionaryCreateMutable(kCFAllocatorDefault, + 0, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + if (!dict) + continue; + + CFNumberRef pageRef = CFNumberCreate(kCFAllocatorDefault, + kCFNumberLongType, + &page); + CFNumberRef usageRef = CFNumberCreate(kCFAllocatorDefault, + kCFNumberLongType, + &usages[i]); + if (pageRef && usageRef) + { + CFDictionarySetValue(dict, + CFSTR(kIOHIDDeviceUsagePageKey), + pageRef); + CFDictionarySetValue(dict, + CFSTR(kIOHIDDeviceUsageKey), + usageRef); + CFArrayAppendValue(matching, dict); + } + + if (pageRef) + CFRelease(pageRef); + if (usageRef) + CFRelease(usageRef); + + CFRelease(dict); + } + + IOHIDManagerSetDeviceMatchingMultiple(_glfw.ns.hidManager, matching); + CFRelease(matching); + + IOHIDManagerRegisterDeviceMatchingCallback(_glfw.ns.hidManager, + &matchCallback, NULL); + IOHIDManagerRegisterDeviceRemovalCallback(_glfw.ns.hidManager, + &removeCallback, NULL); + IOHIDManagerScheduleWithRunLoop(_glfw.ns.hidManager, + CFRunLoopGetMain(), + kCFRunLoopDefaultMode); + IOHIDManagerOpen(_glfw.ns.hidManager, kIOHIDOptionsTypeNone); + + // Execute the run loop once in order to register any initially-attached + // joysticks + CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, false); + return GLFW_TRUE; +} + +void _glfwTerminateJoysticksCocoa(void) +{ + for (int jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + if (_glfw.joysticks[jid].connected) + closeJoystick(&_glfw.joysticks[jid]); + } + + if (_glfw.ns.hidManager) + { + CFRelease(_glfw.ns.hidManager); + _glfw.ns.hidManager = NULL; + } +} + + +GLFWbool _glfwPollJoystickCocoa(_GLFWjoystick* js, int mode) +{ + if (mode & _GLFW_POLL_AXES) + { + for (CFIndex i = 0; i < CFArrayGetCount(js->ns.axes); i++) + { + _GLFWjoyelementNS* axis = (_GLFWjoyelementNS*) + CFArrayGetValueAtIndex(js->ns.axes, i); + + const long raw = getElementValue(js, axis); + // Perform auto calibration + if (raw < axis->minimum) + axis->minimum = raw; + if (raw > axis->maximum) + axis->maximum = raw; + + const long size = axis->maximum - axis->minimum; + if (size == 0) + _glfwInputJoystickAxis(js, (int) i, 0.f); + else + { + const float value = (2.f * (raw - axis->minimum) / size) - 1.f; + _glfwInputJoystickAxis(js, (int) i, value); + } + } + } + + if (mode & _GLFW_POLL_BUTTONS) + { + for (CFIndex i = 0; i < CFArrayGetCount(js->ns.buttons); i++) + { + _GLFWjoyelementNS* button = (_GLFWjoyelementNS*) + CFArrayGetValueAtIndex(js->ns.buttons, i); + const char value = getElementValue(js, button) - button->minimum; + const int state = (value > 0) ? GLFW_PRESS : GLFW_RELEASE; + _glfwInputJoystickButton(js, (int) i, state); + } + + for (CFIndex i = 0; i < CFArrayGetCount(js->ns.hats); i++) + { + const int states[9] = + { + GLFW_HAT_UP, + GLFW_HAT_RIGHT_UP, + GLFW_HAT_RIGHT, + GLFW_HAT_RIGHT_DOWN, + GLFW_HAT_DOWN, + GLFW_HAT_LEFT_DOWN, + GLFW_HAT_LEFT, + GLFW_HAT_LEFT_UP, + GLFW_HAT_CENTERED + }; + + _GLFWjoyelementNS* hat = (_GLFWjoyelementNS*) + CFArrayGetValueAtIndex(js->ns.hats, i); + long state = getElementValue(js, hat) - hat->minimum; + if (state < 0 || state > 8) + state = 8; + + _glfwInputJoystickHat(js, (int) i, states[state]); + } + } + + return js->connected; +} + +const char* _glfwGetMappingNameCocoa(void) +{ + return "Mac OS X"; +} + +void _glfwUpdateGamepadGUIDCocoa(char* guid) +{ + if ((strncmp(guid + 4, "000000000000", 12) == 0) && + (strncmp(guid + 20, "000000000000", 12) == 0)) + { + char original[33]; + strncpy(original, guid, sizeof(original) - 1); + sprintf(guid, "03000000%.4s0000%.4s000000000000", + original, original + 16); + } +} + +#endif // _GLFW_COCOA + diff --git a/lib/glfw/src/cocoa_monitor.m b/lib/glfw/src/cocoa_monitor.m new file mode 100644 index 0000000..6c7315b --- /dev/null +++ b/lib/glfw/src/cocoa_monitor.m @@ -0,0 +1,631 @@ +//======================================================================== +// GLFW 3.4 macOS - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_COCOA) + +#include +#include +#include + +#include +#include + + +// Get the name of the specified display, or NULL +// +static char* getMonitorName(CGDirectDisplayID displayID, NSScreen* screen) +{ + // IOKit doesn't work on Apple Silicon anymore + // Luckily, 10.15 introduced -[NSScreen localizedName]. + // Use it if available, and fall back to IOKit otherwise. + if (screen) + { + if ([screen respondsToSelector:@selector(localizedName)]) + { + NSString* name = [screen valueForKey:@"localizedName"]; + if (name) + return _glfw_strdup([name UTF8String]); + } + } + + io_iterator_t it; + io_service_t service; + CFDictionaryRef info; + + if (IOServiceGetMatchingServices(MACH_PORT_NULL, + IOServiceMatching("IODisplayConnect"), + &it) != 0) + { + // This may happen if a desktop Mac is running headless + return _glfw_strdup("Display"); + } + + while ((service = IOIteratorNext(it)) != 0) + { + info = IODisplayCreateInfoDictionary(service, + kIODisplayOnlyPreferredName); + + CFNumberRef vendorIDRef = + CFDictionaryGetValue(info, CFSTR(kDisplayVendorID)); + CFNumberRef productIDRef = + CFDictionaryGetValue(info, CFSTR(kDisplayProductID)); + if (!vendorIDRef || !productIDRef) + { + CFRelease(info); + continue; + } + + unsigned int vendorID, productID; + CFNumberGetValue(vendorIDRef, kCFNumberIntType, &vendorID); + CFNumberGetValue(productIDRef, kCFNumberIntType, &productID); + + if (CGDisplayVendorNumber(displayID) == vendorID && + CGDisplayModelNumber(displayID) == productID) + { + // Info dictionary is used and freed below + break; + } + + CFRelease(info); + } + + IOObjectRelease(it); + + if (!service) + return _glfw_strdup("Display"); + + CFDictionaryRef names = + CFDictionaryGetValue(info, CFSTR(kDisplayProductName)); + + CFStringRef nameRef; + + if (!names || !CFDictionaryGetValueIfPresent(names, CFSTR("en_US"), + (const void**) &nameRef)) + { + // This may happen if a desktop Mac is running headless + CFRelease(info); + return _glfw_strdup("Display"); + } + + const CFIndex size = + CFStringGetMaximumSizeForEncoding(CFStringGetLength(nameRef), + kCFStringEncodingUTF8); + char* name = _glfw_calloc(size + 1, 1); + CFStringGetCString(nameRef, name, size, kCFStringEncodingUTF8); + + CFRelease(info); + return name; +} + +// Check whether the display mode should be included in enumeration +// +static GLFWbool modeIsGood(CGDisplayModeRef mode) +{ + uint32_t flags = CGDisplayModeGetIOFlags(mode); + + if (!(flags & kDisplayModeValidFlag) || !(flags & kDisplayModeSafeFlag)) + return GLFW_FALSE; + if (flags & kDisplayModeInterlacedFlag) + return GLFW_FALSE; + if (flags & kDisplayModeStretchedFlag) + return GLFW_FALSE; + +#if MAC_OS_X_VERSION_MAX_ALLOWED <= 101100 + CFStringRef format = CGDisplayModeCopyPixelEncoding(mode); + if (CFStringCompare(format, CFSTR(IO16BitDirectPixels), 0) && + CFStringCompare(format, CFSTR(IO32BitDirectPixels), 0)) + { + CFRelease(format); + return GLFW_FALSE; + } + + CFRelease(format); +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ + return GLFW_TRUE; +} + +// Convert Core Graphics display mode to GLFW video mode +// +static GLFWvidmode vidmodeFromCGDisplayMode(CGDisplayModeRef mode, + double fallbackRefreshRate) +{ + GLFWvidmode result; + result.width = (int) CGDisplayModeGetWidth(mode); + result.height = (int) CGDisplayModeGetHeight(mode); + result.refreshRate = (int) round(CGDisplayModeGetRefreshRate(mode)); + + if (result.refreshRate == 0) + result.refreshRate = (int) round(fallbackRefreshRate); + +#if MAC_OS_X_VERSION_MAX_ALLOWED <= 101100 + CFStringRef format = CGDisplayModeCopyPixelEncoding(mode); + if (CFStringCompare(format, CFSTR(IO16BitDirectPixels), 0) == 0) + { + result.redBits = 5; + result.greenBits = 5; + result.blueBits = 5; + } + else +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ + { + result.redBits = 8; + result.greenBits = 8; + result.blueBits = 8; + } + +#if MAC_OS_X_VERSION_MAX_ALLOWED <= 101100 + CFRelease(format); +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ + return result; +} + +// Starts reservation for display fading +// +static CGDisplayFadeReservationToken beginFadeReservation(void) +{ + CGDisplayFadeReservationToken token = kCGDisplayFadeReservationInvalidToken; + + if (CGAcquireDisplayFadeReservation(5, &token) == kCGErrorSuccess) + { + CGDisplayFade(token, 0.3, + kCGDisplayBlendNormal, + kCGDisplayBlendSolidColor, + 0.0, 0.0, 0.0, + TRUE); + } + + return token; +} + +// Ends reservation for display fading +// +static void endFadeReservation(CGDisplayFadeReservationToken token) +{ + if (token != kCGDisplayFadeReservationInvalidToken) + { + CGDisplayFade(token, 0.5, + kCGDisplayBlendSolidColor, + kCGDisplayBlendNormal, + 0.0, 0.0, 0.0, + FALSE); + CGReleaseDisplayFadeReservation(token); + } +} + +// Returns the display refresh rate queried from the I/O registry +// +static double getFallbackRefreshRate(CGDirectDisplayID displayID) +{ + double refreshRate = 60.0; + + io_iterator_t it; + io_service_t service; + + if (IOServiceGetMatchingServices(MACH_PORT_NULL, + IOServiceMatching("IOFramebuffer"), + &it) != 0) + { + return refreshRate; + } + + while ((service = IOIteratorNext(it)) != 0) + { + const CFNumberRef indexRef = + IORegistryEntryCreateCFProperty(service, + CFSTR("IOFramebufferOpenGLIndex"), + kCFAllocatorDefault, + kNilOptions); + if (!indexRef) + continue; + + uint32_t index = 0; + CFNumberGetValue(indexRef, kCFNumberIntType, &index); + CFRelease(indexRef); + + if (CGOpenGLDisplayMaskToDisplayID(1 << index) != displayID) + continue; + + const CFNumberRef clockRef = + IORegistryEntryCreateCFProperty(service, + CFSTR("IOFBCurrentPixelClock"), + kCFAllocatorDefault, + kNilOptions); + const CFNumberRef countRef = + IORegistryEntryCreateCFProperty(service, + CFSTR("IOFBCurrentPixelCount"), + kCFAllocatorDefault, + kNilOptions); + + uint32_t clock = 0, count = 0; + + if (clockRef) + { + CFNumberGetValue(clockRef, kCFNumberIntType, &clock); + CFRelease(clockRef); + } + + if (countRef) + { + CFNumberGetValue(countRef, kCFNumberIntType, &count); + CFRelease(countRef); + } + + if (clock > 0 && count > 0) + refreshRate = clock / (double) count; + + break; + } + + IOObjectRelease(it); + return refreshRate; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Poll for changes in the set of connected monitors +// +void _glfwPollMonitorsCocoa(void) +{ + uint32_t displayCount; + CGGetOnlineDisplayList(0, NULL, &displayCount); + CGDirectDisplayID* displays = _glfw_calloc(displayCount, sizeof(CGDirectDisplayID)); + CGGetOnlineDisplayList(displayCount, displays, &displayCount); + + for (int i = 0; i < _glfw.monitorCount; i++) + _glfw.monitors[i]->ns.screen = nil; + + _GLFWmonitor** disconnected = NULL; + uint32_t disconnectedCount = _glfw.monitorCount; + if (disconnectedCount) + { + disconnected = _glfw_calloc(_glfw.monitorCount, sizeof(_GLFWmonitor*)); + memcpy(disconnected, + _glfw.monitors, + _glfw.monitorCount * sizeof(_GLFWmonitor*)); + } + + for (uint32_t i = 0; i < displayCount; i++) + { + if (CGDisplayIsAsleep(displays[i])) + continue; + + const uint32_t unitNumber = CGDisplayUnitNumber(displays[i]); + NSScreen* screen = nil; + + for (screen in [NSScreen screens]) + { + NSNumber* screenNumber = [screen deviceDescription][@"NSScreenNumber"]; + + // HACK: Compare unit numbers instead of display IDs to work around + // display replacement on machines with automatic graphics + // switching + if (CGDisplayUnitNumber([screenNumber unsignedIntValue]) == unitNumber) + break; + } + + // HACK: Compare unit numbers instead of display IDs to work around + // display replacement on machines with automatic graphics + // switching + uint32_t j; + for (j = 0; j < disconnectedCount; j++) + { + if (disconnected[j] && disconnected[j]->ns.unitNumber == unitNumber) + { + disconnected[j]->ns.screen = screen; + disconnected[j] = NULL; + break; + } + } + + if (j < disconnectedCount) + continue; + + const CGSize size = CGDisplayScreenSize(displays[i]); + char* name = getMonitorName(displays[i], screen); + if (!name) + continue; + + _GLFWmonitor* monitor = _glfwAllocMonitor(name, size.width, size.height); + monitor->ns.displayID = displays[i]; + monitor->ns.unitNumber = unitNumber; + monitor->ns.screen = screen; + + _glfw_free(name); + + CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displays[i]); + if (CGDisplayModeGetRefreshRate(mode) == 0.0) + monitor->ns.fallbackRefreshRate = getFallbackRefreshRate(displays[i]); + CGDisplayModeRelease(mode); + + _glfwInputMonitor(monitor, GLFW_CONNECTED, _GLFW_INSERT_LAST); + } + + for (uint32_t i = 0; i < disconnectedCount; i++) + { + if (disconnected[i]) + _glfwInputMonitor(disconnected[i], GLFW_DISCONNECTED, 0); + } + + _glfw_free(disconnected); + _glfw_free(displays); +} + +// Change the current video mode +// +void _glfwSetVideoModeCocoa(_GLFWmonitor* monitor, const GLFWvidmode* desired) +{ + GLFWvidmode current; + _glfwGetVideoModeCocoa(monitor, ¤t); + + const GLFWvidmode* best = _glfwChooseVideoMode(monitor, desired); + if (_glfwCompareVideoModes(¤t, best) == 0) + return; + + CFArrayRef modes = CGDisplayCopyAllDisplayModes(monitor->ns.displayID, NULL); + const CFIndex count = CFArrayGetCount(modes); + CGDisplayModeRef native = NULL; + + for (CFIndex i = 0; i < count; i++) + { + CGDisplayModeRef dm = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); + if (!modeIsGood(dm)) + continue; + + const GLFWvidmode mode = + vidmodeFromCGDisplayMode(dm, monitor->ns.fallbackRefreshRate); + if (_glfwCompareVideoModes(best, &mode) == 0) + { + native = dm; + break; + } + } + + if (native) + { + if (monitor->ns.previousMode == NULL) + monitor->ns.previousMode = CGDisplayCopyDisplayMode(monitor->ns.displayID); + + CGDisplayFadeReservationToken token = beginFadeReservation(); + CGDisplaySetDisplayMode(monitor->ns.displayID, native, NULL); + endFadeReservation(token); + } + + CFRelease(modes); +} + +// Restore the previously saved (original) video mode +// +void _glfwRestoreVideoModeCocoa(_GLFWmonitor* monitor) +{ + if (monitor->ns.previousMode) + { + CGDisplayFadeReservationToken token = beginFadeReservation(); + CGDisplaySetDisplayMode(monitor->ns.displayID, + monitor->ns.previousMode, NULL); + endFadeReservation(token); + + CGDisplayModeRelease(monitor->ns.previousMode); + monitor->ns.previousMode = NULL; + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwFreeMonitorCocoa(_GLFWmonitor* monitor) +{ +} + +void _glfwGetMonitorPosCocoa(_GLFWmonitor* monitor, int* xpos, int* ypos) +{ + @autoreleasepool { + + const CGRect bounds = CGDisplayBounds(monitor->ns.displayID); + + if (xpos) + *xpos = (int) bounds.origin.x; + if (ypos) + *ypos = (int) bounds.origin.y; + + } // autoreleasepool +} + +void _glfwGetMonitorContentScaleCocoa(_GLFWmonitor* monitor, + float* xscale, float* yscale) +{ + @autoreleasepool { + + if (!monitor->ns.screen) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Cannot query content scale without screen"); + } + + const NSRect points = [monitor->ns.screen frame]; + const NSRect pixels = [monitor->ns.screen convertRectToBacking:points]; + + if (xscale) + *xscale = (float) (pixels.size.width / points.size.width); + if (yscale) + *yscale = (float) (pixels.size.height / points.size.height); + + } // autoreleasepool +} + +void _glfwGetMonitorWorkareaCocoa(_GLFWmonitor* monitor, + int* xpos, int* ypos, + int* width, int* height) +{ + @autoreleasepool { + + if (!monitor->ns.screen) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Cannot query workarea without screen"); + } + + const NSRect frameRect = [monitor->ns.screen visibleFrame]; + + if (xpos) + *xpos = frameRect.origin.x; + if (ypos) + *ypos = _glfwTransformYCocoa(frameRect.origin.y + frameRect.size.height - 1); + if (width) + *width = frameRect.size.width; + if (height) + *height = frameRect.size.height; + + } // autoreleasepool +} + +GLFWvidmode* _glfwGetVideoModesCocoa(_GLFWmonitor* monitor, int* count) +{ + @autoreleasepool { + + *count = 0; + + CFArrayRef modes = CGDisplayCopyAllDisplayModes(monitor->ns.displayID, NULL); + const CFIndex found = CFArrayGetCount(modes); + GLFWvidmode* result = _glfw_calloc(found, sizeof(GLFWvidmode)); + + for (CFIndex i = 0; i < found; i++) + { + CGDisplayModeRef dm = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); + if (!modeIsGood(dm)) + continue; + + const GLFWvidmode mode = + vidmodeFromCGDisplayMode(dm, monitor->ns.fallbackRefreshRate); + CFIndex j; + + for (j = 0; j < *count; j++) + { + if (_glfwCompareVideoModes(result + j, &mode) == 0) + break; + } + + // Skip duplicate modes + if (j < *count) + continue; + + (*count)++; + result[*count - 1] = mode; + } + + CFRelease(modes); + return result; + + } // autoreleasepool +} + +void _glfwGetVideoModeCocoa(_GLFWmonitor* monitor, GLFWvidmode *mode) +{ + @autoreleasepool { + + CGDisplayModeRef native = CGDisplayCopyDisplayMode(monitor->ns.displayID); + *mode = vidmodeFromCGDisplayMode(native, monitor->ns.fallbackRefreshRate); + CGDisplayModeRelease(native); + + } // autoreleasepool +} + +GLFWbool _glfwGetGammaRampCocoa(_GLFWmonitor* monitor, GLFWgammaramp* ramp) +{ + @autoreleasepool { + + uint32_t size = CGDisplayGammaTableCapacity(monitor->ns.displayID); + CGGammaValue* values = _glfw_calloc(size * 3, sizeof(CGGammaValue)); + + CGGetDisplayTransferByTable(monitor->ns.displayID, + size, + values, + values + size, + values + size * 2, + &size); + + _glfwAllocGammaArrays(ramp, size); + + for (uint32_t i = 0; i < size; i++) + { + ramp->red[i] = (unsigned short) (values[i] * 65535); + ramp->green[i] = (unsigned short) (values[i + size] * 65535); + ramp->blue[i] = (unsigned short) (values[i + size * 2] * 65535); + } + + _glfw_free(values); + return GLFW_TRUE; + + } // autoreleasepool +} + +void _glfwSetGammaRampCocoa(_GLFWmonitor* monitor, const GLFWgammaramp* ramp) +{ + @autoreleasepool { + + CGGammaValue* values = _glfw_calloc(ramp->size * 3, sizeof(CGGammaValue)); + + for (unsigned int i = 0; i < ramp->size; i++) + { + values[i] = ramp->red[i] / 65535.f; + values[i + ramp->size] = ramp->green[i] / 65535.f; + values[i + ramp->size * 2] = ramp->blue[i] / 65535.f; + } + + CGSetDisplayTransferByTable(monitor->ns.displayID, + ramp->size, + values, + values + ramp->size, + values + ramp->size * 2); + + _glfw_free(values); + + } // autoreleasepool +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(kCGNullDirectDisplay); + return monitor->ns.displayID; +} + +#endif // _GLFW_COCOA + diff --git a/lib/glfw/src/cocoa_platform.h b/lib/glfw/src/cocoa_platform.h new file mode 100644 index 0000000..9f7d191 --- /dev/null +++ b/lib/glfw/src/cocoa_platform.h @@ -0,0 +1,302 @@ +//======================================================================== +// GLFW 3.4 macOS - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2009-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include + +#include +#include + +// NOTE: All of NSGL was deprecated in the 10.14 SDK +// This disables the pointless warnings for every symbol we use +#ifndef GL_SILENCE_DEPRECATION +#define GL_SILENCE_DEPRECATION +#endif + +#if defined(__OBJC__) +#import +#else +typedef void* id; +#endif + +// NOTE: Many Cocoa enum values have been renamed and we need to build across +// SDK versions where one is unavailable or deprecated. +// We use the newer names in code and replace them with the older names if +// the base SDK does not provide the newer names. + +#if MAC_OS_X_VERSION_MAX_ALLOWED < 101400 + #define NSOpenGLContextParameterSwapInterval NSOpenGLCPSwapInterval + #define NSOpenGLContextParameterSurfaceOpacity NSOpenGLCPSurfaceOpacity +#endif + +#if MAC_OS_X_VERSION_MAX_ALLOWED < 101200 + #define NSBitmapFormatAlphaNonpremultiplied NSAlphaNonpremultipliedBitmapFormat + #define NSEventMaskAny NSAnyEventMask + #define NSEventMaskKeyUp NSKeyUpMask + #define NSEventModifierFlagCapsLock NSAlphaShiftKeyMask + #define NSEventModifierFlagCommand NSCommandKeyMask + #define NSEventModifierFlagControl NSControlKeyMask + #define NSEventModifierFlagDeviceIndependentFlagsMask NSDeviceIndependentModifierFlagsMask + #define NSEventModifierFlagOption NSAlternateKeyMask + #define NSEventModifierFlagShift NSShiftKeyMask + #define NSEventTypeApplicationDefined NSApplicationDefined + #define NSWindowStyleMaskBorderless NSBorderlessWindowMask + #define NSWindowStyleMaskClosable NSClosableWindowMask + #define NSWindowStyleMaskMiniaturizable NSMiniaturizableWindowMask + #define NSWindowStyleMaskResizable NSResizableWindowMask + #define NSWindowStyleMaskTitled NSTitledWindowMask +#endif + +// NOTE: Many Cocoa dynamically linked constants have been renamed and we need +// to build across SDK versions where one is unavailable or deprecated. +// We use the newer names in code and replace them with the older names if +// the deployment target is older than the newer names. + +#if MAC_OS_X_VERSION_MIN_REQUIRED < 101300 + #define NSPasteboardTypeURL NSURLPboardType +#endif + +typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; +typedef VkFlags VkMetalSurfaceCreateFlagsEXT; + +typedef struct VkMacOSSurfaceCreateInfoMVK +{ + VkStructureType sType; + const void* pNext; + VkMacOSSurfaceCreateFlagsMVK flags; + const void* pView; +} VkMacOSSurfaceCreateInfoMVK; + +typedef struct VkMetalSurfaceCreateInfoEXT +{ + VkStructureType sType; + const void* pNext; + VkMetalSurfaceCreateFlagsEXT flags; + const void* pLayer; +} VkMetalSurfaceCreateInfoEXT; + +typedef VkResult (APIENTRY *PFN_vkCreateMacOSSurfaceMVK)(VkInstance,const VkMacOSSurfaceCreateInfoMVK*,const VkAllocationCallbacks*,VkSurfaceKHR*); +typedef VkResult (APIENTRY *PFN_vkCreateMetalSurfaceEXT)(VkInstance,const VkMetalSurfaceCreateInfoEXT*,const VkAllocationCallbacks*,VkSurfaceKHR*); + +#define GLFW_COCOA_WINDOW_STATE _GLFWwindowNS ns; +#define GLFW_COCOA_LIBRARY_WINDOW_STATE _GLFWlibraryNS ns; +#define GLFW_COCOA_MONITOR_STATE _GLFWmonitorNS ns; +#define GLFW_COCOA_CURSOR_STATE _GLFWcursorNS ns; + +#define GLFW_NSGL_CONTEXT_STATE _GLFWcontextNSGL nsgl; +#define GLFW_NSGL_LIBRARY_CONTEXT_STATE _GLFWlibraryNSGL nsgl; + +// HIToolbox.framework pointer typedefs +#define kTISPropertyUnicodeKeyLayoutData _glfw.ns.tis.kPropertyUnicodeKeyLayoutData +typedef TISInputSourceRef (*PFN_TISCopyCurrentKeyboardLayoutInputSource)(void); +#define TISCopyCurrentKeyboardLayoutInputSource _glfw.ns.tis.CopyCurrentKeyboardLayoutInputSource +typedef void* (*PFN_TISGetInputSourceProperty)(TISInputSourceRef,CFStringRef); +#define TISGetInputSourceProperty _glfw.ns.tis.GetInputSourceProperty +typedef UInt8 (*PFN_LMGetKbdType)(void); +#define LMGetKbdType _glfw.ns.tis.GetKbdType + + +// NSGL-specific per-context data +// +typedef struct _GLFWcontextNSGL +{ + id pixelFormat; + id object; +} _GLFWcontextNSGL; + +// NSGL-specific global data +// +typedef struct _GLFWlibraryNSGL +{ + // dlopen handle for OpenGL.framework (for glfwGetProcAddress) + CFBundleRef framework; +} _GLFWlibraryNSGL; + +// Cocoa-specific per-window data +// +typedef struct _GLFWwindowNS +{ + id object; + id delegate; + id view; + id layer; + + GLFWbool maximized; + GLFWbool occluded; + GLFWbool retina; + + // Cached window properties to filter out duplicate events + int width, height; + int fbWidth, fbHeight; + float xscale, yscale; + + // The total sum of the distances the cursor has been warped + // since the last cursor motion event was processed + // This is kept to counteract Cocoa doing the same internally + double cursorWarpDeltaX, cursorWarpDeltaY; +} _GLFWwindowNS; + +// Cocoa-specific global data +// +typedef struct _GLFWlibraryNS +{ + CGEventSourceRef eventSource; + id delegate; + GLFWbool cursorHidden; + TISInputSourceRef inputSource; + IOHIDManagerRef hidManager; + id unicodeData; + id helper; + id keyUpMonitor; + id nibObjects; + + char keynames[GLFW_KEY_LAST + 1][17]; + short int keycodes[256]; + short int scancodes[GLFW_KEY_LAST + 1]; + char* clipboardString; + CGPoint cascadePoint; + // Where to place the cursor when re-enabled + double restoreCursorPosX, restoreCursorPosY; + // The window whose disabled cursor mode is active + _GLFWwindow* disabledCursorWindow; + + struct { + CFBundleRef bundle; + PFN_TISCopyCurrentKeyboardLayoutInputSource CopyCurrentKeyboardLayoutInputSource; + PFN_TISGetInputSourceProperty GetInputSourceProperty; + PFN_LMGetKbdType GetKbdType; + CFStringRef kPropertyUnicodeKeyLayoutData; + } tis; +} _GLFWlibraryNS; + +// Cocoa-specific per-monitor data +// +typedef struct _GLFWmonitorNS +{ + CGDirectDisplayID displayID; + CGDisplayModeRef previousMode; + uint32_t unitNumber; + id screen; + double fallbackRefreshRate; +} _GLFWmonitorNS; + +// Cocoa-specific per-cursor data +// +typedef struct _GLFWcursorNS +{ + id object; +} _GLFWcursorNS; + + +GLFWbool _glfwConnectCocoa(int platformID, _GLFWplatform* platform); +int _glfwInitCocoa(void); +void _glfwTerminateCocoa(void); + +GLFWbool _glfwCreateWindowCocoa(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig); +void _glfwDestroyWindowCocoa(_GLFWwindow* window); +void _glfwSetWindowTitleCocoa(_GLFWwindow* window, const char* title); +void _glfwSetWindowIconCocoa(_GLFWwindow* window, int count, const GLFWimage* images); +void _glfwGetWindowPosCocoa(_GLFWwindow* window, int* xpos, int* ypos); +void _glfwSetWindowPosCocoa(_GLFWwindow* window, int xpos, int ypos); +void _glfwGetWindowSizeCocoa(_GLFWwindow* window, int* width, int* height); +void _glfwSetWindowSizeCocoa(_GLFWwindow* window, int width, int height); +void _glfwSetWindowSizeLimitsCocoa(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); +void _glfwSetWindowAspectRatioCocoa(_GLFWwindow* window, int numer, int denom); +void _glfwGetFramebufferSizeCocoa(_GLFWwindow* window, int* width, int* height); +void _glfwGetWindowFrameSizeCocoa(_GLFWwindow* window, int* left, int* top, int* right, int* bottom); +void _glfwGetWindowContentScaleCocoa(_GLFWwindow* window, float* xscale, float* yscale); +void _glfwIconifyWindowCocoa(_GLFWwindow* window); +void _glfwRestoreWindowCocoa(_GLFWwindow* window); +void _glfwMaximizeWindowCocoa(_GLFWwindow* window); +void _glfwShowWindowCocoa(_GLFWwindow* window); +void _glfwHideWindowCocoa(_GLFWwindow* window); +void _glfwRequestWindowAttentionCocoa(_GLFWwindow* window); +void _glfwFocusWindowCocoa(_GLFWwindow* window); +void _glfwSetWindowMonitorCocoa(_GLFWwindow* window, _GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); +GLFWbool _glfwWindowFocusedCocoa(_GLFWwindow* window); +GLFWbool _glfwWindowIconifiedCocoa(_GLFWwindow* window); +GLFWbool _glfwWindowVisibleCocoa(_GLFWwindow* window); +GLFWbool _glfwWindowMaximizedCocoa(_GLFWwindow* window); +GLFWbool _glfwWindowHoveredCocoa(_GLFWwindow* window); +GLFWbool _glfwFramebufferTransparentCocoa(_GLFWwindow* window); +void _glfwSetWindowResizableCocoa(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowDecoratedCocoa(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowFloatingCocoa(_GLFWwindow* window, GLFWbool enabled); +float _glfwGetWindowOpacityCocoa(_GLFWwindow* window); +void _glfwSetWindowOpacityCocoa(_GLFWwindow* window, float opacity); +void _glfwSetWindowMousePassthroughCocoa(_GLFWwindow* window, GLFWbool enabled); + +void _glfwSetRawMouseMotionCocoa(_GLFWwindow *window, GLFWbool enabled); +GLFWbool _glfwRawMouseMotionSupportedCocoa(void); + +void _glfwPollEventsCocoa(void); +void _glfwWaitEventsCocoa(void); +void _glfwWaitEventsTimeoutCocoa(double timeout); +void _glfwPostEmptyEventCocoa(void); + +void _glfwGetCursorPosCocoa(_GLFWwindow* window, double* xpos, double* ypos); +void _glfwSetCursorPosCocoa(_GLFWwindow* window, double xpos, double ypos); +void _glfwSetCursorModeCocoa(_GLFWwindow* window, int mode); +const char* _glfwGetScancodeNameCocoa(int scancode); +int _glfwGetKeyScancodeCocoa(int key); +GLFWbool _glfwCreateCursorCocoa(_GLFWcursor* cursor, const GLFWimage* image, int xhot, int yhot); +GLFWbool _glfwCreateStandardCursorCocoa(_GLFWcursor* cursor, int shape); +void _glfwDestroyCursorCocoa(_GLFWcursor* cursor); +void _glfwSetCursorCocoa(_GLFWwindow* window, _GLFWcursor* cursor); +void _glfwSetClipboardStringCocoa(const char* string); +const char* _glfwGetClipboardStringCocoa(void); + +EGLenum _glfwGetEGLPlatformCocoa(EGLint** attribs); +EGLNativeDisplayType _glfwGetEGLNativeDisplayCocoa(void); +EGLNativeWindowType _glfwGetEGLNativeWindowCocoa(_GLFWwindow* window); + +void _glfwGetRequiredInstanceExtensionsCocoa(char** extensions); +GLFWbool _glfwGetPhysicalDevicePresentationSupportCocoa(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); +VkResult _glfwCreateWindowSurfaceCocoa(VkInstance instance, _GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +void _glfwFreeMonitorCocoa(_GLFWmonitor* monitor); +void _glfwGetMonitorPosCocoa(_GLFWmonitor* monitor, int* xpos, int* ypos); +void _glfwGetMonitorContentScaleCocoa(_GLFWmonitor* monitor, float* xscale, float* yscale); +void _glfwGetMonitorWorkareaCocoa(_GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); +GLFWvidmode* _glfwGetVideoModesCocoa(_GLFWmonitor* monitor, int* count); +void _glfwGetVideoModeCocoa(_GLFWmonitor* monitor, GLFWvidmode* mode); +GLFWbool _glfwGetGammaRampCocoa(_GLFWmonitor* monitor, GLFWgammaramp* ramp); +void _glfwSetGammaRampCocoa(_GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +void _glfwPollMonitorsCocoa(void); +void _glfwSetVideoModeCocoa(_GLFWmonitor* monitor, const GLFWvidmode* desired); +void _glfwRestoreVideoModeCocoa(_GLFWmonitor* monitor); + +float _glfwTransformYCocoa(float y); + +void* _glfwLoadLocalVulkanLoaderCocoa(void); + +GLFWbool _glfwInitNSGL(void); +void _glfwTerminateNSGL(void); +GLFWbool _glfwCreateContextNSGL(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig); +void _glfwDestroyContextNSGL(_GLFWwindow* window); + diff --git a/lib/glfw/src/cocoa_time.c b/lib/glfw/src/cocoa_time.c new file mode 100644 index 0000000..8da367a --- /dev/null +++ b/lib/glfw/src/cocoa_time.c @@ -0,0 +1,59 @@ +//======================================================================== +// GLFW 3.4 macOS - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2009-2016 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(GLFW_BUILD_COCOA_TIMER) + +#include + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwPlatformInitTimer(void) +{ + mach_timebase_info_data_t info; + mach_timebase_info(&info); + + _glfw.timer.ns.frequency = (info.denom * 1e9) / info.numer; +} + +uint64_t _glfwPlatformGetTimerValue(void) +{ + return mach_absolute_time(); +} + +uint64_t _glfwPlatformGetTimerFrequency(void) +{ + return _glfw.timer.ns.frequency; +} + +#endif // GLFW_BUILD_COCOA_TIMER + diff --git a/lib/glfw/src/cocoa_time.h b/lib/glfw/src/cocoa_time.h new file mode 100644 index 0000000..3512e8b --- /dev/null +++ b/lib/glfw/src/cocoa_time.h @@ -0,0 +1,35 @@ +//======================================================================== +// GLFW 3.4 macOS - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2009-2021 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLFW_COCOA_LIBRARY_TIMER_STATE _GLFWtimerNS ns; + +// Cocoa-specific global timer data +// +typedef struct _GLFWtimerNS +{ + uint64_t frequency; +} _GLFWtimerNS; + diff --git a/lib/glfw/src/cocoa_window.m b/lib/glfw/src/cocoa_window.m new file mode 100644 index 0000000..6f8aa97 --- /dev/null +++ b/lib/glfw/src/cocoa_window.m @@ -0,0 +1,2053 @@ +//======================================================================== +// GLFW 3.4 macOS - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2009-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_COCOA) + +#include +#include + +// HACK: This enum value is missing from framework headers on OS X 10.11 despite +// having been (according to documentation) added in Mac OS X 10.7 +#define NSWindowCollectionBehaviorFullScreenNone (1 << 9) + +// Returns whether the cursor is in the content area of the specified window +// +static GLFWbool cursorInContentArea(_GLFWwindow* window) +{ + const NSPoint pos = [window->ns.object mouseLocationOutsideOfEventStream]; + return [window->ns.view mouse:pos inRect:[window->ns.view frame]]; +} + +// Hides the cursor if not already hidden +// +static void hideCursor(_GLFWwindow* window) +{ + if (!_glfw.ns.cursorHidden) + { + [NSCursor hide]; + _glfw.ns.cursorHidden = GLFW_TRUE; + } +} + +// Shows the cursor if not already shown +// +static void showCursor(_GLFWwindow* window) +{ + if (_glfw.ns.cursorHidden) + { + [NSCursor unhide]; + _glfw.ns.cursorHidden = GLFW_FALSE; + } +} + +// Updates the cursor image according to its cursor mode +// +static void updateCursorImage(_GLFWwindow* window) +{ + if (window->cursorMode == GLFW_CURSOR_NORMAL) + { + showCursor(window); + + if (window->cursor) + [(NSCursor*) window->cursor->ns.object set]; + else + [[NSCursor arrowCursor] set]; + } + else + hideCursor(window); +} + +// Apply chosen cursor mode to a focused window +// +static void updateCursorMode(_GLFWwindow* window) +{ + if (window->cursorMode == GLFW_CURSOR_DISABLED) + { + _glfw.ns.disabledCursorWindow = window; + _glfwGetCursorPosCocoa(window, + &_glfw.ns.restoreCursorPosX, + &_glfw.ns.restoreCursorPosY); + _glfwCenterCursorInContentArea(window); + CGAssociateMouseAndMouseCursorPosition(false); + } + else if (_glfw.ns.disabledCursorWindow == window) + { + _glfw.ns.disabledCursorWindow = NULL; + _glfwSetCursorPosCocoa(window, + _glfw.ns.restoreCursorPosX, + _glfw.ns.restoreCursorPosY); + // NOTE: The matching CGAssociateMouseAndMouseCursorPosition call is + // made in _glfwSetCursorPosCocoa as part of a workaround + } + + if (cursorInContentArea(window)) + updateCursorImage(window); +} + +// Make the specified window and its video mode active on its monitor +// +static void acquireMonitor(_GLFWwindow* window) +{ + _glfwSetVideoModeCocoa(window->monitor, &window->videoMode); + const CGRect bounds = CGDisplayBounds(window->monitor->ns.displayID); + const NSRect frame = NSMakeRect(bounds.origin.x, + _glfwTransformYCocoa(bounds.origin.y + bounds.size.height - 1), + bounds.size.width, + bounds.size.height); + + [window->ns.object setFrame:frame display:YES]; + + _glfwInputMonitorWindow(window->monitor, window); +} + +// Remove the window and restore the original video mode +// +static void releaseMonitor(_GLFWwindow* window) +{ + if (window->monitor->window != window) + return; + + _glfwInputMonitorWindow(window->monitor, NULL); + _glfwRestoreVideoModeCocoa(window->monitor); +} + +// Translates macOS key modifiers into GLFW ones +// +static int translateFlags(NSUInteger flags) +{ + int mods = 0; + + if (flags & NSEventModifierFlagShift) + mods |= GLFW_MOD_SHIFT; + if (flags & NSEventModifierFlagControl) + mods |= GLFW_MOD_CONTROL; + if (flags & NSEventModifierFlagOption) + mods |= GLFW_MOD_ALT; + if (flags & NSEventModifierFlagCommand) + mods |= GLFW_MOD_SUPER; + if (flags & NSEventModifierFlagCapsLock) + mods |= GLFW_MOD_CAPS_LOCK; + + return mods; +} + +// Translates a macOS keycode to a GLFW keycode +// +static int translateKey(unsigned int key) +{ + if (key >= sizeof(_glfw.ns.keycodes) / sizeof(_glfw.ns.keycodes[0])) + return GLFW_KEY_UNKNOWN; + + return _glfw.ns.keycodes[key]; +} + +// Translate a GLFW keycode to a Cocoa modifier flag +// +static NSUInteger translateKeyToModifierFlag(int key) +{ + switch (key) + { + case GLFW_KEY_LEFT_SHIFT: + case GLFW_KEY_RIGHT_SHIFT: + return NSEventModifierFlagShift; + case GLFW_KEY_LEFT_CONTROL: + case GLFW_KEY_RIGHT_CONTROL: + return NSEventModifierFlagControl; + case GLFW_KEY_LEFT_ALT: + case GLFW_KEY_RIGHT_ALT: + return NSEventModifierFlagOption; + case GLFW_KEY_LEFT_SUPER: + case GLFW_KEY_RIGHT_SUPER: + return NSEventModifierFlagCommand; + case GLFW_KEY_CAPS_LOCK: + return NSEventModifierFlagCapsLock; + } + + return 0; +} + +// Defines a constant for empty ranges in NSTextInputClient +// +static const NSRange kEmptyRange = { NSNotFound, 0 }; + + +//------------------------------------------------------------------------ +// Delegate for window related notifications +//------------------------------------------------------------------------ + +@interface GLFWWindowDelegate : NSObject +{ + _GLFWwindow* window; +} + +- (instancetype)initWithGlfwWindow:(_GLFWwindow *)initWindow; + +@end + +@implementation GLFWWindowDelegate + +- (instancetype)initWithGlfwWindow:(_GLFWwindow *)initWindow +{ + self = [super init]; + if (self != nil) + window = initWindow; + + return self; +} + +- (BOOL)windowShouldClose:(id)sender +{ + _glfwInputWindowCloseRequest(window); + return NO; +} + +- (void)windowDidResize:(NSNotification *)notification +{ + if (window->context.source == GLFW_NATIVE_CONTEXT_API) + [window->context.nsgl.object update]; + + if (_glfw.ns.disabledCursorWindow == window) + _glfwCenterCursorInContentArea(window); + + const int maximized = [window->ns.object isZoomed]; + if (window->ns.maximized != maximized) + { + window->ns.maximized = maximized; + _glfwInputWindowMaximize(window, maximized); + } + + const NSRect contentRect = [window->ns.view frame]; + const NSRect fbRect = [window->ns.view convertRectToBacking:contentRect]; + + if (fbRect.size.width != window->ns.fbWidth || + fbRect.size.height != window->ns.fbHeight) + { + window->ns.fbWidth = fbRect.size.width; + window->ns.fbHeight = fbRect.size.height; + _glfwInputFramebufferSize(window, fbRect.size.width, fbRect.size.height); + } + + if (contentRect.size.width != window->ns.width || + contentRect.size.height != window->ns.height) + { + window->ns.width = contentRect.size.width; + window->ns.height = contentRect.size.height; + _glfwInputWindowSize(window, contentRect.size.width, contentRect.size.height); + } +} + +- (void)windowDidMove:(NSNotification *)notification +{ + if (window->context.source == GLFW_NATIVE_CONTEXT_API) + [window->context.nsgl.object update]; + + if (_glfw.ns.disabledCursorWindow == window) + _glfwCenterCursorInContentArea(window); + + int x, y; + _glfwGetWindowPosCocoa(window, &x, &y); + _glfwInputWindowPos(window, x, y); +} + +- (void)windowDidMiniaturize:(NSNotification *)notification +{ + if (window->monitor) + releaseMonitor(window); + + _glfwInputWindowIconify(window, GLFW_TRUE); +} + +- (void)windowDidDeminiaturize:(NSNotification *)notification +{ + if (window->monitor) + acquireMonitor(window); + + _glfwInputWindowIconify(window, GLFW_FALSE); +} + +- (void)windowDidBecomeKey:(NSNotification *)notification +{ + if (_glfw.ns.disabledCursorWindow == window) + _glfwCenterCursorInContentArea(window); + + _glfwInputWindowFocus(window, GLFW_TRUE); + updateCursorMode(window); +} + +- (void)windowDidResignKey:(NSNotification *)notification +{ + if (window->monitor && window->autoIconify) + _glfwIconifyWindowCocoa(window); + + _glfwInputWindowFocus(window, GLFW_FALSE); +} + +- (void)windowDidChangeOcclusionState:(NSNotification* )notification +{ + if ([window->ns.object occlusionState] & NSWindowOcclusionStateVisible) + window->ns.occluded = GLFW_FALSE; + else + window->ns.occluded = GLFW_TRUE; +} + +@end + + +//------------------------------------------------------------------------ +// Content view class for the GLFW window +//------------------------------------------------------------------------ + +@interface GLFWContentView : NSView +{ + _GLFWwindow* window; + NSTrackingArea* trackingArea; + NSMutableAttributedString* markedText; +} + +- (instancetype)initWithGlfwWindow:(_GLFWwindow *)initWindow; + +@end + +@implementation GLFWContentView + +- (instancetype)initWithGlfwWindow:(_GLFWwindow *)initWindow +{ + self = [super init]; + if (self != nil) + { + window = initWindow; + trackingArea = nil; + markedText = [[NSMutableAttributedString alloc] init]; + + [self updateTrackingAreas]; + [self registerForDraggedTypes:@[NSPasteboardTypeURL]]; + } + + return self; +} + +- (void)dealloc +{ + [trackingArea release]; + [markedText release]; + [super dealloc]; +} + +- (BOOL)isOpaque +{ + return [window->ns.object isOpaque]; +} + +- (BOOL)canBecomeKeyView +{ + return YES; +} + +- (BOOL)acceptsFirstResponder +{ + return YES; +} + +- (BOOL)wantsUpdateLayer +{ + return YES; +} + +- (void)updateLayer +{ + if (window->context.source == GLFW_NATIVE_CONTEXT_API) + [window->context.nsgl.object update]; + + _glfwInputWindowDamage(window); +} + +- (void)cursorUpdate:(NSEvent *)event +{ + updateCursorImage(window); +} + +- (BOOL)acceptsFirstMouse:(NSEvent *)event +{ + return YES; +} + +- (void)mouseDown:(NSEvent *)event +{ + _glfwInputMouseClick(window, + GLFW_MOUSE_BUTTON_LEFT, + GLFW_PRESS, + translateFlags([event modifierFlags])); +} + +- (void)mouseDragged:(NSEvent *)event +{ + [self mouseMoved:event]; +} + +- (void)mouseUp:(NSEvent *)event +{ + _glfwInputMouseClick(window, + GLFW_MOUSE_BUTTON_LEFT, + GLFW_RELEASE, + translateFlags([event modifierFlags])); +} + +- (void)mouseMoved:(NSEvent *)event +{ + if (window->cursorMode == GLFW_CURSOR_DISABLED) + { + const double dx = [event deltaX] - window->ns.cursorWarpDeltaX; + const double dy = [event deltaY] - window->ns.cursorWarpDeltaY; + + _glfwInputCursorPos(window, + window->virtualCursorPosX + dx, + window->virtualCursorPosY + dy); + } + else + { + const NSRect contentRect = [window->ns.view frame]; + // NOTE: The returned location uses base 0,1 not 0,0 + const NSPoint pos = [event locationInWindow]; + + _glfwInputCursorPos(window, pos.x, contentRect.size.height - pos.y); + } + + window->ns.cursorWarpDeltaX = 0; + window->ns.cursorWarpDeltaY = 0; +} + +- (void)rightMouseDown:(NSEvent *)event +{ + _glfwInputMouseClick(window, + GLFW_MOUSE_BUTTON_RIGHT, + GLFW_PRESS, + translateFlags([event modifierFlags])); +} + +- (void)rightMouseDragged:(NSEvent *)event +{ + [self mouseMoved:event]; +} + +- (void)rightMouseUp:(NSEvent *)event +{ + _glfwInputMouseClick(window, + GLFW_MOUSE_BUTTON_RIGHT, + GLFW_RELEASE, + translateFlags([event modifierFlags])); +} + +- (void)otherMouseDown:(NSEvent *)event +{ + _glfwInputMouseClick(window, + (int) [event buttonNumber], + GLFW_PRESS, + translateFlags([event modifierFlags])); +} + +- (void)otherMouseDragged:(NSEvent *)event +{ + [self mouseMoved:event]; +} + +- (void)otherMouseUp:(NSEvent *)event +{ + _glfwInputMouseClick(window, + (int) [event buttonNumber], + GLFW_RELEASE, + translateFlags([event modifierFlags])); +} + +- (void)mouseExited:(NSEvent *)event +{ + if (window->cursorMode == GLFW_CURSOR_HIDDEN) + showCursor(window); + + _glfwInputCursorEnter(window, GLFW_FALSE); +} + +- (void)mouseEntered:(NSEvent *)event +{ + if (window->cursorMode == GLFW_CURSOR_HIDDEN) + hideCursor(window); + + _glfwInputCursorEnter(window, GLFW_TRUE); +} + +- (void)viewDidChangeBackingProperties +{ + const NSRect contentRect = [window->ns.view frame]; + const NSRect fbRect = [window->ns.view convertRectToBacking:contentRect]; + const float xscale = fbRect.size.width / contentRect.size.width; + const float yscale = fbRect.size.height / contentRect.size.height; + + if (xscale != window->ns.xscale || yscale != window->ns.yscale) + { + if (window->ns.retina && window->ns.layer) + [window->ns.layer setContentsScale:[window->ns.object backingScaleFactor]]; + + window->ns.xscale = xscale; + window->ns.yscale = yscale; + _glfwInputWindowContentScale(window, xscale, yscale); + } + + if (fbRect.size.width != window->ns.fbWidth || + fbRect.size.height != window->ns.fbHeight) + { + window->ns.fbWidth = fbRect.size.width; + window->ns.fbHeight = fbRect.size.height; + _glfwInputFramebufferSize(window, fbRect.size.width, fbRect.size.height); + } +} + +- (void)drawRect:(NSRect)rect +{ + _glfwInputWindowDamage(window); +} + +- (void)updateTrackingAreas +{ + if (trackingArea != nil) + { + [self removeTrackingArea:trackingArea]; + [trackingArea release]; + } + + const NSTrackingAreaOptions options = NSTrackingMouseEnteredAndExited | + NSTrackingActiveInKeyWindow | + NSTrackingEnabledDuringMouseDrag | + NSTrackingCursorUpdate | + NSTrackingInVisibleRect | + NSTrackingAssumeInside; + + trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] + options:options + owner:self + userInfo:nil]; + + [self addTrackingArea:trackingArea]; + [super updateTrackingAreas]; +} + +- (void)keyDown:(NSEvent *)event +{ + const int key = translateKey([event keyCode]); + const int mods = translateFlags([event modifierFlags]); + + _glfwInputKey(window, key, [event keyCode], GLFW_PRESS, mods); + + [self interpretKeyEvents:@[event]]; +} + +- (void)flagsChanged:(NSEvent *)event +{ + int action; + const unsigned int modifierFlags = + [event modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask; + const int key = translateKey([event keyCode]); + const int mods = translateFlags(modifierFlags); + const NSUInteger keyFlag = translateKeyToModifierFlag(key); + + if (keyFlag & modifierFlags) + { + if (window->keys[key] == GLFW_PRESS) + action = GLFW_RELEASE; + else + action = GLFW_PRESS; + } + else + action = GLFW_RELEASE; + + _glfwInputKey(window, key, [event keyCode], action, mods); +} + +- (void)keyUp:(NSEvent *)event +{ + const int key = translateKey([event keyCode]); + const int mods = translateFlags([event modifierFlags]); + _glfwInputKey(window, key, [event keyCode], GLFW_RELEASE, mods); +} + +- (void)scrollWheel:(NSEvent *)event +{ + double deltaX = [event scrollingDeltaX]; + double deltaY = [event scrollingDeltaY]; + + if ([event hasPreciseScrollingDeltas]) + { + deltaX *= 0.1; + deltaY *= 0.1; + } + + if (fabs(deltaX) > 0.0 || fabs(deltaY) > 0.0) + _glfwInputScroll(window, deltaX, deltaY); +} + +- (NSDragOperation)draggingEntered:(id )sender +{ + // HACK: We don't know what to say here because we don't know what the + // application wants to do with the paths + return NSDragOperationGeneric; +} + +- (BOOL)performDragOperation:(id )sender +{ + const NSRect contentRect = [window->ns.view frame]; + // NOTE: The returned location uses base 0,1 not 0,0 + const NSPoint pos = [sender draggingLocation]; + _glfwInputCursorPos(window, pos.x, contentRect.size.height - pos.y); + + NSPasteboard* pasteboard = [sender draggingPasteboard]; + NSDictionary* options = @{NSPasteboardURLReadingFileURLsOnlyKey:@YES}; + NSArray* urls = [pasteboard readObjectsForClasses:@[[NSURL class]] + options:options]; + const NSUInteger count = [urls count]; + if (count) + { + char** paths = _glfw_calloc(count, sizeof(char*)); + + for (NSUInteger i = 0; i < count; i++) + paths[i] = _glfw_strdup([urls[i] fileSystemRepresentation]); + + _glfwInputDrop(window, (int) count, (const char**) paths); + + for (NSUInteger i = 0; i < count; i++) + _glfw_free(paths[i]); + _glfw_free(paths); + } + + return YES; +} + +- (BOOL)hasMarkedText +{ + return [markedText length] > 0; +} + +- (NSRange)markedRange +{ + if ([markedText length] > 0) + return NSMakeRange(0, [markedText length] - 1); + else + return kEmptyRange; +} + +- (NSRange)selectedRange +{ + return kEmptyRange; +} + +- (void)setMarkedText:(id)string + selectedRange:(NSRange)selectedRange + replacementRange:(NSRange)replacementRange +{ + [markedText release]; + if ([string isKindOfClass:[NSAttributedString class]]) + markedText = [[NSMutableAttributedString alloc] initWithAttributedString:string]; + else + markedText = [[NSMutableAttributedString alloc] initWithString:string]; +} + +- (void)unmarkText +{ + [[markedText mutableString] setString:@""]; +} + +- (NSArray*)validAttributesForMarkedText +{ + return [NSArray array]; +} + +- (NSAttributedString*)attributedSubstringForProposedRange:(NSRange)range + actualRange:(NSRangePointer)actualRange +{ + return nil; +} + +- (NSUInteger)characterIndexForPoint:(NSPoint)point +{ + return 0; +} + +- (NSRect)firstRectForCharacterRange:(NSRange)range + actualRange:(NSRangePointer)actualRange +{ + const NSRect frame = [window->ns.view frame]; + return NSMakeRect(frame.origin.x, frame.origin.y, 0.0, 0.0); +} + +- (void)insertText:(id)string replacementRange:(NSRange)replacementRange +{ + NSString* characters; + NSEvent* event = [NSApp currentEvent]; + const int mods = translateFlags([event modifierFlags]); + const int plain = !(mods & GLFW_MOD_SUPER); + + if ([string isKindOfClass:[NSAttributedString class]]) + characters = [string string]; + else + characters = (NSString*) string; + + NSRange range = NSMakeRange(0, [characters length]); + while (range.length) + { + uint32_t codepoint = 0; + + if ([characters getBytes:&codepoint + maxLength:sizeof(codepoint) + usedLength:NULL + encoding:NSUTF32StringEncoding + options:0 + range:range + remainingRange:&range]) + { + if (codepoint >= 0xf700 && codepoint <= 0xf7ff) + continue; + + _glfwInputChar(window, codepoint, mods, plain); + } + } +} + +- (void)doCommandBySelector:(SEL)selector +{ +} + +@end + + +//------------------------------------------------------------------------ +// GLFW window class +//------------------------------------------------------------------------ + +@interface GLFWWindow : NSWindow {} +@end + +@implementation GLFWWindow + +- (BOOL)canBecomeKeyWindow +{ + // Required for NSWindowStyleMaskBorderless windows + return YES; +} + +- (BOOL)canBecomeMainWindow +{ + return YES; +} + +@end + + +// Create the Cocoa window +// +static GLFWbool createNativeWindow(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWfbconfig* fbconfig) +{ + window->ns.delegate = [[GLFWWindowDelegate alloc] initWithGlfwWindow:window]; + if (window->ns.delegate == nil) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to create window delegate"); + return GLFW_FALSE; + } + + NSRect contentRect; + + if (window->monitor) + { + GLFWvidmode mode; + int xpos, ypos; + + _glfwGetVideoModeCocoa(window->monitor, &mode); + _glfwGetMonitorPosCocoa(window->monitor, &xpos, &ypos); + + contentRect = NSMakeRect(xpos, ypos, mode.width, mode.height); + } + else + { + if (wndconfig->xpos == GLFW_ANY_POSITION || + wndconfig->ypos == GLFW_ANY_POSITION) + { + contentRect = NSMakeRect(0, 0, wndconfig->width, wndconfig->height); + } + else + { + const int xpos = wndconfig->xpos; + const int ypos = _glfwTransformYCocoa(wndconfig->ypos + wndconfig->height - 1); + contentRect = NSMakeRect(xpos, ypos, wndconfig->width, wndconfig->height); + } + } + + NSUInteger styleMask = NSWindowStyleMaskMiniaturizable; + + if (window->monitor || !window->decorated) + styleMask |= NSWindowStyleMaskBorderless; + else + { + styleMask |= (NSWindowStyleMaskTitled | NSWindowStyleMaskClosable); + + if (window->resizable) + styleMask |= NSWindowStyleMaskResizable; + } + + window->ns.object = [[GLFWWindow alloc] + initWithContentRect:contentRect + styleMask:styleMask + backing:NSBackingStoreBuffered + defer:NO]; + + if (window->ns.object == nil) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "Cocoa: Failed to create window"); + return GLFW_FALSE; + } + + if (window->monitor) + [window->ns.object setLevel:NSMainMenuWindowLevel + 1]; + else + { + if (wndconfig->xpos == GLFW_ANY_POSITION || + wndconfig->ypos == GLFW_ANY_POSITION) + { + [(NSWindow*) window->ns.object center]; + _glfw.ns.cascadePoint = + NSPointToCGPoint([window->ns.object cascadeTopLeftFromPoint: + NSPointFromCGPoint(_glfw.ns.cascadePoint)]); + } + + if (wndconfig->resizable) + { + const NSWindowCollectionBehavior behavior = + NSWindowCollectionBehaviorFullScreenPrimary | + NSWindowCollectionBehaviorManaged; + [window->ns.object setCollectionBehavior:behavior]; + } + else + { + const NSWindowCollectionBehavior behavior = + NSWindowCollectionBehaviorFullScreenNone; + [window->ns.object setCollectionBehavior:behavior]; + } + + if (wndconfig->floating) + [window->ns.object setLevel:NSFloatingWindowLevel]; + + if (wndconfig->maximized) + [window->ns.object zoom:nil]; + } + + if (strlen(wndconfig->ns.frameName)) + [window->ns.object setFrameAutosaveName:@(wndconfig->ns.frameName)]; + + window->ns.view = [[GLFWContentView alloc] initWithGlfwWindow:window]; + window->ns.retina = wndconfig->ns.retina; + + if (fbconfig->transparent) + { + [window->ns.object setOpaque:NO]; + [window->ns.object setHasShadow:NO]; + [window->ns.object setBackgroundColor:[NSColor clearColor]]; + } + + [window->ns.object setContentView:window->ns.view]; + [window->ns.object makeFirstResponder:window->ns.view]; + [window->ns.object setTitle:@(wndconfig->title)]; + [window->ns.object setDelegate:window->ns.delegate]; + [window->ns.object setAcceptsMouseMovedEvents:YES]; + [window->ns.object setRestorable:NO]; + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 + if ([window->ns.object respondsToSelector:@selector(setTabbingMode:)]) + [window->ns.object setTabbingMode:NSWindowTabbingModeDisallowed]; +#endif + + _glfwGetWindowSizeCocoa(window, &window->ns.width, &window->ns.height); + _glfwGetFramebufferSizeCocoa(window, &window->ns.fbWidth, &window->ns.fbHeight); + + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Transforms a y-coordinate between the CG display and NS screen spaces +// +float _glfwTransformYCocoa(float y) +{ + return CGDisplayBounds(CGMainDisplayID()).size.height - y - 1; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwCreateWindowCocoa(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + @autoreleasepool { + + if (!createNativeWindow(window, wndconfig, fbconfig)) + return GLFW_FALSE; + + if (ctxconfig->client != GLFW_NO_API) + { + if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API) + { + if (!_glfwInitNSGL()) + return GLFW_FALSE; + if (!_glfwCreateContextNSGL(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_EGL_CONTEXT_API) + { + // EGL implementation on macOS use CALayer* EGLNativeWindowType so we + // need to get the layer for EGL window surface creation. + [window->ns.view setWantsLayer:YES]; + window->ns.layer = [window->ns.view layer]; + + if (!_glfwInitEGL()) + return GLFW_FALSE; + if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API) + { + if (!_glfwInitOSMesa()) + return GLFW_FALSE; + if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + + if (!_glfwRefreshContextAttribs(window, ctxconfig)) + return GLFW_FALSE; + } + + if (wndconfig->mousePassthrough) + _glfwSetWindowMousePassthroughCocoa(window, GLFW_TRUE); + + if (window->monitor) + { + _glfwShowWindowCocoa(window); + _glfwFocusWindowCocoa(window); + acquireMonitor(window); + + if (wndconfig->centerCursor) + _glfwCenterCursorInContentArea(window); + } + else + { + if (wndconfig->visible) + { + _glfwShowWindowCocoa(window); + if (wndconfig->focused) + _glfwFocusWindowCocoa(window); + } + } + + return GLFW_TRUE; + + } // autoreleasepool +} + +void _glfwDestroyWindowCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + + if (_glfw.ns.disabledCursorWindow == window) + _glfw.ns.disabledCursorWindow = NULL; + + [window->ns.object orderOut:nil]; + + if (window->monitor) + releaseMonitor(window); + + if (window->context.destroy) + window->context.destroy(window); + + [window->ns.object setDelegate:nil]; + [window->ns.delegate release]; + window->ns.delegate = nil; + + [window->ns.view release]; + window->ns.view = nil; + + [window->ns.object close]; + window->ns.object = nil; + + // HACK: Allow Cocoa to catch up before returning + _glfwPollEventsCocoa(); + + } // autoreleasepool +} + +void _glfwSetWindowTitleCocoa(_GLFWwindow* window, const char* title) +{ + @autoreleasepool { + NSString* string = @(title); + [window->ns.object setTitle:string]; + // HACK: Set the miniwindow title explicitly as setTitle: doesn't update it + // if the window lacks NSWindowStyleMaskTitled + [window->ns.object setMiniwindowTitle:string]; + } // autoreleasepool +} + +void _glfwSetWindowIconCocoa(_GLFWwindow* window, + int count, const GLFWimage* images) +{ + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Cocoa: Regular windows do not have icons on macOS"); +} + +void _glfwGetWindowPosCocoa(_GLFWwindow* window, int* xpos, int* ypos) +{ + @autoreleasepool { + + const NSRect contentRect = + [window->ns.object contentRectForFrameRect:[window->ns.object frame]]; + + if (xpos) + *xpos = contentRect.origin.x; + if (ypos) + *ypos = _glfwTransformYCocoa(contentRect.origin.y + contentRect.size.height - 1); + + } // autoreleasepool +} + +void _glfwSetWindowPosCocoa(_GLFWwindow* window, int x, int y) +{ + @autoreleasepool { + + const NSRect contentRect = [window->ns.view frame]; + const NSRect dummyRect = NSMakeRect(x, _glfwTransformYCocoa(y + contentRect.size.height - 1), 0, 0); + const NSRect frameRect = [window->ns.object frameRectForContentRect:dummyRect]; + [window->ns.object setFrameOrigin:frameRect.origin]; + + } // autoreleasepool +} + +void _glfwGetWindowSizeCocoa(_GLFWwindow* window, int* width, int* height) +{ + @autoreleasepool { + + const NSRect contentRect = [window->ns.view frame]; + + if (width) + *width = contentRect.size.width; + if (height) + *height = contentRect.size.height; + + } // autoreleasepool +} + +void _glfwSetWindowSizeCocoa(_GLFWwindow* window, int width, int height) +{ + @autoreleasepool { + + if (window->monitor) + { + if (window->monitor->window == window) + acquireMonitor(window); + } + else + { + NSRect contentRect = + [window->ns.object contentRectForFrameRect:[window->ns.object frame]]; + contentRect.origin.y += contentRect.size.height - height; + contentRect.size = NSMakeSize(width, height); + [window->ns.object setFrame:[window->ns.object frameRectForContentRect:contentRect] + display:YES]; + } + + } // autoreleasepool +} + +void _glfwSetWindowSizeLimitsCocoa(_GLFWwindow* window, + int minwidth, int minheight, + int maxwidth, int maxheight) +{ + @autoreleasepool { + + if (minwidth == GLFW_DONT_CARE || minheight == GLFW_DONT_CARE) + [window->ns.object setContentMinSize:NSMakeSize(0, 0)]; + else + [window->ns.object setContentMinSize:NSMakeSize(minwidth, minheight)]; + + if (maxwidth == GLFW_DONT_CARE || maxheight == GLFW_DONT_CARE) + [window->ns.object setContentMaxSize:NSMakeSize(DBL_MAX, DBL_MAX)]; + else + [window->ns.object setContentMaxSize:NSMakeSize(maxwidth, maxheight)]; + + } // autoreleasepool +} + +void _glfwSetWindowAspectRatioCocoa(_GLFWwindow* window, int numer, int denom) +{ + @autoreleasepool { + if (numer == GLFW_DONT_CARE || denom == GLFW_DONT_CARE) + [window->ns.object setResizeIncrements:NSMakeSize(1.0, 1.0)]; + else + [window->ns.object setContentAspectRatio:NSMakeSize(numer, denom)]; + } // autoreleasepool +} + +void _glfwGetFramebufferSizeCocoa(_GLFWwindow* window, int* width, int* height) +{ + @autoreleasepool { + + const NSRect contentRect = [window->ns.view frame]; + const NSRect fbRect = [window->ns.view convertRectToBacking:contentRect]; + + if (width) + *width = (int) fbRect.size.width; + if (height) + *height = (int) fbRect.size.height; + + } // autoreleasepool +} + +void _glfwGetWindowFrameSizeCocoa(_GLFWwindow* window, + int* left, int* top, + int* right, int* bottom) +{ + @autoreleasepool { + + const NSRect contentRect = [window->ns.view frame]; + const NSRect frameRect = [window->ns.object frameRectForContentRect:contentRect]; + + if (left) + *left = contentRect.origin.x - frameRect.origin.x; + if (top) + *top = frameRect.origin.y + frameRect.size.height - + contentRect.origin.y - contentRect.size.height; + if (right) + *right = frameRect.origin.x + frameRect.size.width - + contentRect.origin.x - contentRect.size.width; + if (bottom) + *bottom = contentRect.origin.y - frameRect.origin.y; + + } // autoreleasepool +} + +void _glfwGetWindowContentScaleCocoa(_GLFWwindow* window, + float* xscale, float* yscale) +{ + @autoreleasepool { + + const NSRect points = [window->ns.view frame]; + const NSRect pixels = [window->ns.view convertRectToBacking:points]; + + if (xscale) + *xscale = (float) (pixels.size.width / points.size.width); + if (yscale) + *yscale = (float) (pixels.size.height / points.size.height); + + } // autoreleasepool +} + +void _glfwIconifyWindowCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + [window->ns.object miniaturize:nil]; + } // autoreleasepool +} + +void _glfwRestoreWindowCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + if ([window->ns.object isMiniaturized]) + [window->ns.object deminiaturize:nil]; + else if ([window->ns.object isZoomed]) + [window->ns.object zoom:nil]; + } // autoreleasepool +} + +void _glfwMaximizeWindowCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + if (![window->ns.object isZoomed]) + [window->ns.object zoom:nil]; + } // autoreleasepool +} + +void _glfwShowWindowCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + [window->ns.object orderFront:nil]; + } // autoreleasepool +} + +void _glfwHideWindowCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + [window->ns.object orderOut:nil]; + } // autoreleasepool +} + +void _glfwRequestWindowAttentionCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + [NSApp requestUserAttention:NSInformationalRequest]; + } // autoreleasepool +} + +void _glfwFocusWindowCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + // Make us the active application + // HACK: This is here to prevent applications using only hidden windows from + // being activated, but should probably not be done every time any + // window is shown + [NSApp activateIgnoringOtherApps:YES]; + [window->ns.object makeKeyAndOrderFront:nil]; + } // autoreleasepool +} + +void _glfwSetWindowMonitorCocoa(_GLFWwindow* window, + _GLFWmonitor* monitor, + int xpos, int ypos, + int width, int height, + int refreshRate) +{ + @autoreleasepool { + + if (window->monitor == monitor) + { + if (monitor) + { + if (monitor->window == window) + acquireMonitor(window); + } + else + { + const NSRect contentRect = + NSMakeRect(xpos, _glfwTransformYCocoa(ypos + height - 1), width, height); + const NSUInteger styleMask = [window->ns.object styleMask]; + const NSRect frameRect = + [window->ns.object frameRectForContentRect:contentRect + styleMask:styleMask]; + + [window->ns.object setFrame:frameRect display:YES]; + } + + return; + } + + if (window->monitor) + releaseMonitor(window); + + _glfwInputWindowMonitor(window, monitor); + + // HACK: Allow the state cached in Cocoa to catch up to reality + // TODO: Solve this in a less terrible way + _glfwPollEventsCocoa(); + + NSUInteger styleMask = [window->ns.object styleMask]; + + if (window->monitor) + { + styleMask &= ~(NSWindowStyleMaskTitled | NSWindowStyleMaskClosable); + styleMask |= NSWindowStyleMaskBorderless; + } + else + { + if (window->decorated) + { + styleMask &= ~NSWindowStyleMaskBorderless; + styleMask |= (NSWindowStyleMaskTitled | NSWindowStyleMaskClosable); + } + + if (window->resizable) + styleMask |= NSWindowStyleMaskResizable; + else + styleMask &= ~NSWindowStyleMaskResizable; + } + + [window->ns.object setStyleMask:styleMask]; + // HACK: Changing the style mask can cause the first responder to be cleared + [window->ns.object makeFirstResponder:window->ns.view]; + + if (window->monitor) + { + [window->ns.object setLevel:NSMainMenuWindowLevel + 1]; + [window->ns.object setHasShadow:NO]; + + acquireMonitor(window); + } + else + { + NSRect contentRect = NSMakeRect(xpos, _glfwTransformYCocoa(ypos + height - 1), + width, height); + NSRect frameRect = [window->ns.object frameRectForContentRect:contentRect + styleMask:styleMask]; + [window->ns.object setFrame:frameRect display:YES]; + + if (window->numer != GLFW_DONT_CARE && + window->denom != GLFW_DONT_CARE) + { + [window->ns.object setContentAspectRatio:NSMakeSize(window->numer, + window->denom)]; + } + + if (window->minwidth != GLFW_DONT_CARE && + window->minheight != GLFW_DONT_CARE) + { + [window->ns.object setContentMinSize:NSMakeSize(window->minwidth, + window->minheight)]; + } + + if (window->maxwidth != GLFW_DONT_CARE && + window->maxheight != GLFW_DONT_CARE) + { + [window->ns.object setContentMaxSize:NSMakeSize(window->maxwidth, + window->maxheight)]; + } + + if (window->floating) + [window->ns.object setLevel:NSFloatingWindowLevel]; + else + [window->ns.object setLevel:NSNormalWindowLevel]; + + if (window->resizable) + { + const NSWindowCollectionBehavior behavior = + NSWindowCollectionBehaviorFullScreenPrimary | + NSWindowCollectionBehaviorManaged; + [window->ns.object setCollectionBehavior:behavior]; + } + else + { + const NSWindowCollectionBehavior behavior = + NSWindowCollectionBehaviorFullScreenNone; + [window->ns.object setCollectionBehavior:behavior]; + } + + [window->ns.object setHasShadow:YES]; + // HACK: Clearing NSWindowStyleMaskTitled resets and disables the window + // title property but the miniwindow title property is unaffected + [window->ns.object setTitle:[window->ns.object miniwindowTitle]]; + } + + } // autoreleasepool +} + +GLFWbool _glfwWindowFocusedCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + return [window->ns.object isKeyWindow]; + } // autoreleasepool +} + +GLFWbool _glfwWindowIconifiedCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + return [window->ns.object isMiniaturized]; + } // autoreleasepool +} + +GLFWbool _glfwWindowVisibleCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + return [window->ns.object isVisible]; + } // autoreleasepool +} + +GLFWbool _glfwWindowMaximizedCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + + if (window->resizable) + return [window->ns.object isZoomed]; + else + return GLFW_FALSE; + + } // autoreleasepool +} + +GLFWbool _glfwWindowHoveredCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + + const NSPoint point = [NSEvent mouseLocation]; + + if ([NSWindow windowNumberAtPoint:point belowWindowWithWindowNumber:0] != + [window->ns.object windowNumber]) + { + return GLFW_FALSE; + } + + return NSMouseInRect(point, + [window->ns.object convertRectToScreen:[window->ns.view frame]], NO); + + } // autoreleasepool +} + +GLFWbool _glfwFramebufferTransparentCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + return ![window->ns.object isOpaque] && ![window->ns.view isOpaque]; + } // autoreleasepool +} + +void _glfwSetWindowResizableCocoa(_GLFWwindow* window, GLFWbool enabled) +{ + @autoreleasepool { + + const NSUInteger styleMask = [window->ns.object styleMask]; + if (enabled) + { + [window->ns.object setStyleMask:(styleMask | NSWindowStyleMaskResizable)]; + const NSWindowCollectionBehavior behavior = + NSWindowCollectionBehaviorFullScreenPrimary | + NSWindowCollectionBehaviorManaged; + [window->ns.object setCollectionBehavior:behavior]; + } + else + { + [window->ns.object setStyleMask:(styleMask & ~NSWindowStyleMaskResizable)]; + const NSWindowCollectionBehavior behavior = + NSWindowCollectionBehaviorFullScreenNone; + [window->ns.object setCollectionBehavior:behavior]; + } + + } // autoreleasepool +} + +void _glfwSetWindowDecoratedCocoa(_GLFWwindow* window, GLFWbool enabled) +{ + @autoreleasepool { + + NSUInteger styleMask = [window->ns.object styleMask]; + if (enabled) + { + styleMask |= (NSWindowStyleMaskTitled | NSWindowStyleMaskClosable); + styleMask &= ~NSWindowStyleMaskBorderless; + } + else + { + styleMask |= NSWindowStyleMaskBorderless; + styleMask &= ~(NSWindowStyleMaskTitled | NSWindowStyleMaskClosable); + } + + [window->ns.object setStyleMask:styleMask]; + [window->ns.object makeFirstResponder:window->ns.view]; + + } // autoreleasepool +} + +void _glfwSetWindowFloatingCocoa(_GLFWwindow* window, GLFWbool enabled) +{ + @autoreleasepool { + if (enabled) + [window->ns.object setLevel:NSFloatingWindowLevel]; + else + [window->ns.object setLevel:NSNormalWindowLevel]; + } // autoreleasepool +} + +void _glfwSetWindowMousePassthroughCocoa(_GLFWwindow* window, GLFWbool enabled) +{ + @autoreleasepool { + [window->ns.object setIgnoresMouseEvents:enabled]; + } +} + +float _glfwGetWindowOpacityCocoa(_GLFWwindow* window) +{ + @autoreleasepool { + return (float) [window->ns.object alphaValue]; + } // autoreleasepool +} + +void _glfwSetWindowOpacityCocoa(_GLFWwindow* window, float opacity) +{ + @autoreleasepool { + [window->ns.object setAlphaValue:opacity]; + } // autoreleasepool +} + +void _glfwSetRawMouseMotionCocoa(_GLFWwindow *window, GLFWbool enabled) +{ + _glfwInputError(GLFW_FEATURE_UNIMPLEMENTED, + "Cocoa: Raw mouse motion not yet implemented"); +} + +GLFWbool _glfwRawMouseMotionSupportedCocoa(void) +{ + return GLFW_FALSE; +} + +void _glfwPollEventsCocoa(void) +{ + @autoreleasepool { + + for (;;) + { + NSEvent* event = [NSApp nextEventMatchingMask:NSEventMaskAny + untilDate:[NSDate distantPast] + inMode:NSDefaultRunLoopMode + dequeue:YES]; + if (event == nil) + break; + + [NSApp sendEvent:event]; + } + + } // autoreleasepool +} + +void _glfwWaitEventsCocoa(void) +{ + @autoreleasepool { + + // I wanted to pass NO to dequeue:, and rely on PollEvents to + // dequeue and send. For reasons not at all clear to me, passing + // NO to dequeue: causes this method never to return. + NSEvent *event = [NSApp nextEventMatchingMask:NSEventMaskAny + untilDate:[NSDate distantFuture] + inMode:NSDefaultRunLoopMode + dequeue:YES]; + [NSApp sendEvent:event]; + + _glfwPollEventsCocoa(); + + } // autoreleasepool +} + +void _glfwWaitEventsTimeoutCocoa(double timeout) +{ + @autoreleasepool { + + NSDate* date = [NSDate dateWithTimeIntervalSinceNow:timeout]; + NSEvent* event = [NSApp nextEventMatchingMask:NSEventMaskAny + untilDate:date + inMode:NSDefaultRunLoopMode + dequeue:YES]; + if (event) + [NSApp sendEvent:event]; + + _glfwPollEventsCocoa(); + + } // autoreleasepool +} + +void _glfwPostEmptyEventCocoa(void) +{ + @autoreleasepool { + + NSEvent* event = [NSEvent otherEventWithType:NSEventTypeApplicationDefined + location:NSMakePoint(0, 0) + modifierFlags:0 + timestamp:0 + windowNumber:0 + context:nil + subtype:0 + data1:0 + data2:0]; + [NSApp postEvent:event atStart:YES]; + + } // autoreleasepool +} + +void _glfwGetCursorPosCocoa(_GLFWwindow* window, double* xpos, double* ypos) +{ + @autoreleasepool { + + const NSRect contentRect = [window->ns.view frame]; + // NOTE: The returned location uses base 0,1 not 0,0 + const NSPoint pos = [window->ns.object mouseLocationOutsideOfEventStream]; + + if (xpos) + *xpos = pos.x; + if (ypos) + *ypos = contentRect.size.height - pos.y; + + } // autoreleasepool +} + +void _glfwSetCursorPosCocoa(_GLFWwindow* window, double x, double y) +{ + @autoreleasepool { + + updateCursorImage(window); + + const NSRect contentRect = [window->ns.view frame]; + // NOTE: The returned location uses base 0,1 not 0,0 + const NSPoint pos = [window->ns.object mouseLocationOutsideOfEventStream]; + + window->ns.cursorWarpDeltaX += x - pos.x; + window->ns.cursorWarpDeltaY += y - contentRect.size.height + pos.y; + + if (window->monitor) + { + CGDisplayMoveCursorToPoint(window->monitor->ns.displayID, + CGPointMake(x, y)); + } + else + { + const NSRect localRect = NSMakeRect(x, contentRect.size.height - y - 1, 0, 0); + const NSRect globalRect = [window->ns.object convertRectToScreen:localRect]; + const NSPoint globalPoint = globalRect.origin; + + CGWarpMouseCursorPosition(CGPointMake(globalPoint.x, + _glfwTransformYCocoa(globalPoint.y))); + } + + // HACK: Calling this right after setting the cursor position prevents macOS + // from freezing the cursor for a fraction of a second afterwards + if (window->cursorMode != GLFW_CURSOR_DISABLED) + CGAssociateMouseAndMouseCursorPosition(true); + + } // autoreleasepool +} + +void _glfwSetCursorModeCocoa(_GLFWwindow* window, int mode) +{ + @autoreleasepool { + + if (mode == GLFW_CURSOR_CAPTURED) + { + _glfwInputError(GLFW_FEATURE_UNIMPLEMENTED, + "Cocoa: Captured cursor mode not yet implemented"); + } + + if (_glfwWindowFocusedCocoa(window)) + updateCursorMode(window); + + } // autoreleasepool +} + +const char* _glfwGetScancodeNameCocoa(int scancode) +{ + @autoreleasepool { + + if (scancode < 0 || scancode > 0xff || + _glfw.ns.keycodes[scancode] == GLFW_KEY_UNKNOWN) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid scancode %i", scancode); + return NULL; + } + + const int key = _glfw.ns.keycodes[scancode]; + + UInt32 deadKeyState = 0; + UniChar characters[4]; + UniCharCount characterCount = 0; + + if (UCKeyTranslate([(NSData*) _glfw.ns.unicodeData bytes], + scancode, + kUCKeyActionDisplay, + 0, + LMGetKbdType(), + kUCKeyTranslateNoDeadKeysBit, + &deadKeyState, + sizeof(characters) / sizeof(characters[0]), + &characterCount, + characters) != noErr) + { + return NULL; + } + + if (!characterCount) + return NULL; + + CFStringRef string = CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, + characters, + characterCount, + kCFAllocatorNull); + CFStringGetCString(string, + _glfw.ns.keynames[key], + sizeof(_glfw.ns.keynames[key]), + kCFStringEncodingUTF8); + CFRelease(string); + + return _glfw.ns.keynames[key]; + + } // autoreleasepool +} + +int _glfwGetKeyScancodeCocoa(int key) +{ + return _glfw.ns.scancodes[key]; +} + +GLFWbool _glfwCreateCursorCocoa(_GLFWcursor* cursor, + const GLFWimage* image, + int xhot, int yhot) +{ + @autoreleasepool { + + NSImage* native; + NSBitmapImageRep* rep; + + rep = [[NSBitmapImageRep alloc] + initWithBitmapDataPlanes:NULL + pixelsWide:image->width + pixelsHigh:image->height + bitsPerSample:8 + samplesPerPixel:4 + hasAlpha:YES + isPlanar:NO + colorSpaceName:NSCalibratedRGBColorSpace + bitmapFormat:NSBitmapFormatAlphaNonpremultiplied + bytesPerRow:image->width * 4 + bitsPerPixel:32]; + + if (rep == nil) + return GLFW_FALSE; + + memcpy([rep bitmapData], image->pixels, image->width * image->height * 4); + + native = [[NSImage alloc] initWithSize:NSMakeSize(image->width, image->height)]; + [native addRepresentation:rep]; + + cursor->ns.object = [[NSCursor alloc] initWithImage:native + hotSpot:NSMakePoint(xhot, yhot)]; + + [native release]; + [rep release]; + + if (cursor->ns.object == nil) + return GLFW_FALSE; + + return GLFW_TRUE; + + } // autoreleasepool +} + +GLFWbool _glfwCreateStandardCursorCocoa(_GLFWcursor* cursor, int shape) +{ + @autoreleasepool { + + SEL cursorSelector = NULL; + + // HACK: Try to use a private message + switch (shape) + { + case GLFW_RESIZE_EW_CURSOR: + cursorSelector = NSSelectorFromString(@"_windowResizeEastWestCursor"); + break; + case GLFW_RESIZE_NS_CURSOR: + cursorSelector = NSSelectorFromString(@"_windowResizeNorthSouthCursor"); + break; + case GLFW_RESIZE_NWSE_CURSOR: + cursorSelector = NSSelectorFromString(@"_windowResizeNorthWestSouthEastCursor"); + break; + case GLFW_RESIZE_NESW_CURSOR: + cursorSelector = NSSelectorFromString(@"_windowResizeNorthEastSouthWestCursor"); + break; + } + + if (cursorSelector && [NSCursor respondsToSelector:cursorSelector]) + { + id object = [NSCursor performSelector:cursorSelector]; + if ([object isKindOfClass:[NSCursor class]]) + cursor->ns.object = object; + } + + if (!cursor->ns.object) + { + switch (shape) + { + case GLFW_ARROW_CURSOR: + cursor->ns.object = [NSCursor arrowCursor]; + break; + case GLFW_IBEAM_CURSOR: + cursor->ns.object = [NSCursor IBeamCursor]; + break; + case GLFW_CROSSHAIR_CURSOR: + cursor->ns.object = [NSCursor crosshairCursor]; + break; + case GLFW_POINTING_HAND_CURSOR: + cursor->ns.object = [NSCursor pointingHandCursor]; + break; + case GLFW_RESIZE_EW_CURSOR: + cursor->ns.object = [NSCursor resizeLeftRightCursor]; + break; + case GLFW_RESIZE_NS_CURSOR: + cursor->ns.object = [NSCursor resizeUpDownCursor]; + break; + case GLFW_RESIZE_ALL_CURSOR: + cursor->ns.object = [NSCursor closedHandCursor]; + break; + case GLFW_NOT_ALLOWED_CURSOR: + cursor->ns.object = [NSCursor operationNotAllowedCursor]; + break; + } + } + + if (!cursor->ns.object) + { + _glfwInputError(GLFW_CURSOR_UNAVAILABLE, + "Cocoa: Standard cursor shape unavailable"); + return GLFW_FALSE; + } + + [cursor->ns.object retain]; + return GLFW_TRUE; + + } // autoreleasepool +} + +void _glfwDestroyCursorCocoa(_GLFWcursor* cursor) +{ + @autoreleasepool { + if (cursor->ns.object) + [(NSCursor*) cursor->ns.object release]; + } // autoreleasepool +} + +void _glfwSetCursorCocoa(_GLFWwindow* window, _GLFWcursor* cursor) +{ + @autoreleasepool { + if (cursorInContentArea(window)) + updateCursorImage(window); + } // autoreleasepool +} + +void _glfwSetClipboardStringCocoa(const char* string) +{ + @autoreleasepool { + NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; + [pasteboard declareTypes:@[NSPasteboardTypeString] owner:nil]; + [pasteboard setString:@(string) forType:NSPasteboardTypeString]; + } // autoreleasepool +} + +const char* _glfwGetClipboardStringCocoa(void) +{ + @autoreleasepool { + + NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; + + if (![[pasteboard types] containsObject:NSPasteboardTypeString]) + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "Cocoa: Failed to retrieve string from pasteboard"); + return NULL; + } + + NSString* object = [pasteboard stringForType:NSPasteboardTypeString]; + if (!object) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to retrieve object from pasteboard"); + return NULL; + } + + _glfw_free(_glfw.ns.clipboardString); + _glfw.ns.clipboardString = _glfw_strdup([object UTF8String]); + + return _glfw.ns.clipboardString; + + } // autoreleasepool +} + +EGLenum _glfwGetEGLPlatformCocoa(EGLint** attribs) +{ + if (_glfw.egl.ANGLE_platform_angle) + { + int type = 0; + + if (_glfw.egl.ANGLE_platform_angle_opengl) + { + if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_OPENGL) + type = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; + } + + if (_glfw.egl.ANGLE_platform_angle_metal) + { + if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_METAL) + type = EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE; + } + + if (type) + { + *attribs = _glfw_calloc(3, sizeof(EGLint)); + (*attribs)[0] = EGL_PLATFORM_ANGLE_TYPE_ANGLE; + (*attribs)[1] = type; + (*attribs)[2] = EGL_NONE; + return EGL_PLATFORM_ANGLE_ANGLE; + } + } + + return 0; +} + +EGLNativeDisplayType _glfwGetEGLNativeDisplayCocoa(void) +{ + return EGL_DEFAULT_DISPLAY; +} + +EGLNativeWindowType _glfwGetEGLNativeWindowCocoa(_GLFWwindow* window) +{ + return window->ns.layer; +} + +void _glfwGetRequiredInstanceExtensionsCocoa(char** extensions) +{ + if (_glfw.vk.KHR_surface && _glfw.vk.EXT_metal_surface) + { + extensions[0] = "VK_KHR_surface"; + extensions[1] = "VK_EXT_metal_surface"; + } + else if (_glfw.vk.KHR_surface && _glfw.vk.MVK_macos_surface) + { + extensions[0] = "VK_KHR_surface"; + extensions[1] = "VK_MVK_macos_surface"; + } +} + +GLFWbool _glfwGetPhysicalDevicePresentationSupportCocoa(VkInstance instance, + VkPhysicalDevice device, + uint32_t queuefamily) +{ + return GLFW_TRUE; +} + +VkResult _glfwCreateWindowSurfaceCocoa(VkInstance instance, + _GLFWwindow* window, + const VkAllocationCallbacks* allocator, + VkSurfaceKHR* surface) +{ + @autoreleasepool { + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101100 + // HACK: Dynamically load Core Animation to avoid adding an extra + // dependency for the majority who don't use MoltenVK + NSBundle* bundle = [NSBundle bundleWithPath:@"/System/Library/Frameworks/QuartzCore.framework"]; + if (!bundle) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to find QuartzCore.framework"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + // NOTE: Create the layer here as makeBackingLayer should not return nil + window->ns.layer = [[bundle classNamed:@"CAMetalLayer"] layer]; + if (!window->ns.layer) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to create layer for view"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + if (window->ns.retina) + [window->ns.layer setContentsScale:[window->ns.object backingScaleFactor]]; + + [window->ns.view setLayer:window->ns.layer]; + [window->ns.view setWantsLayer:YES]; + + VkResult err; + + if (_glfw.vk.EXT_metal_surface) + { + VkMetalSurfaceCreateInfoEXT sci; + + PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT; + vkCreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT) + vkGetInstanceProcAddr(instance, "vkCreateMetalSurfaceEXT"); + if (!vkCreateMetalSurfaceEXT) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Cocoa: Vulkan instance missing VK_EXT_metal_surface extension"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + memset(&sci, 0, sizeof(sci)); + sci.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT; + sci.pLayer = window->ns.layer; + + err = vkCreateMetalSurfaceEXT(instance, &sci, allocator, surface); + } + else + { + VkMacOSSurfaceCreateInfoMVK sci; + + PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK; + vkCreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK) + vkGetInstanceProcAddr(instance, "vkCreateMacOSSurfaceMVK"); + if (!vkCreateMacOSSurfaceMVK) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Cocoa: Vulkan instance missing VK_MVK_macos_surface extension"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + memset(&sci, 0, sizeof(sci)); + sci.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK; + sci.pView = window->ns.view; + + err = vkCreateMacOSSurfaceMVK(instance, &sci, allocator, surface); + } + + if (err) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Cocoa: Failed to create Vulkan surface: %s", + _glfwGetVulkanResultString(err)); + } + + return err; +#else + return VK_ERROR_EXTENSION_NOT_PRESENT; +#endif + + } // autoreleasepool +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI id glfwGetCocoaWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(nil); + + if (_glfw.platform.platformID != GLFW_PLATFORM_COCOA) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, + "Cocoa: Platform not initialized"); + return NULL; + } + + return window->ns.object; +} + +#endif // _GLFW_COCOA + diff --git a/lib/glfw/src/context.c b/lib/glfw/src/context.c new file mode 100644 index 0000000..33b399c --- /dev/null +++ b/lib/glfw/src/context.c @@ -0,0 +1,765 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2016 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#include +#include +#include +#include +#include + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Checks whether the desired context attributes are valid +// +// This function checks things like whether the specified client API version +// exists and whether all relevant options have supported and non-conflicting +// values +// +GLFWbool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig) +{ + if (ctxconfig->source != GLFW_NATIVE_CONTEXT_API && + ctxconfig->source != GLFW_EGL_CONTEXT_API && + ctxconfig->source != GLFW_OSMESA_CONTEXT_API) + { + _glfwInputError(GLFW_INVALID_ENUM, + "Invalid context creation API 0x%08X", + ctxconfig->source); + return GLFW_FALSE; + } + + if (ctxconfig->client != GLFW_NO_API && + ctxconfig->client != GLFW_OPENGL_API && + ctxconfig->client != GLFW_OPENGL_ES_API) + { + _glfwInputError(GLFW_INVALID_ENUM, + "Invalid client API 0x%08X", + ctxconfig->client); + return GLFW_FALSE; + } + + if (ctxconfig->share) + { + if (ctxconfig->client == GLFW_NO_API || + ctxconfig->share->context.client == GLFW_NO_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return GLFW_FALSE; + } + + if (ctxconfig->source != ctxconfig->share->context.source) + { + _glfwInputError(GLFW_INVALID_ENUM, + "Context creation APIs do not match between contexts"); + return GLFW_FALSE; + } + } + + if (ctxconfig->client == GLFW_OPENGL_API) + { + if ((ctxconfig->major < 1 || ctxconfig->minor < 0) || + (ctxconfig->major == 1 && ctxconfig->minor > 5) || + (ctxconfig->major == 2 && ctxconfig->minor > 1) || + (ctxconfig->major == 3 && ctxconfig->minor > 3)) + { + // OpenGL 1.0 is the smallest valid version + // OpenGL 1.x series ended with version 1.5 + // OpenGL 2.x series ended with version 2.1 + // OpenGL 3.x series ended with version 3.3 + // For now, let everything else through + + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid OpenGL version %i.%i", + ctxconfig->major, ctxconfig->minor); + return GLFW_FALSE; + } + + if (ctxconfig->profile) + { + if (ctxconfig->profile != GLFW_OPENGL_CORE_PROFILE && + ctxconfig->profile != GLFW_OPENGL_COMPAT_PROFILE) + { + _glfwInputError(GLFW_INVALID_ENUM, + "Invalid OpenGL profile 0x%08X", + ctxconfig->profile); + return GLFW_FALSE; + } + + if (ctxconfig->major <= 2 || + (ctxconfig->major == 3 && ctxconfig->minor < 2)) + { + // Desktop OpenGL context profiles are only defined for version 3.2 + // and above + + _glfwInputError(GLFW_INVALID_VALUE, + "Context profiles are only defined for OpenGL version 3.2 and above"); + return GLFW_FALSE; + } + } + + if (ctxconfig->forward && ctxconfig->major <= 2) + { + // Forward-compatible contexts are only defined for OpenGL version 3.0 and above + _glfwInputError(GLFW_INVALID_VALUE, + "Forward-compatibility is only defined for OpenGL version 3.0 and above"); + return GLFW_FALSE; + } + } + else if (ctxconfig->client == GLFW_OPENGL_ES_API) + { + if (ctxconfig->major < 1 || ctxconfig->minor < 0 || + (ctxconfig->major == 1 && ctxconfig->minor > 1) || + (ctxconfig->major == 2 && ctxconfig->minor > 0)) + { + // OpenGL ES 1.0 is the smallest valid version + // OpenGL ES 1.x series ended with version 1.1 + // OpenGL ES 2.x series ended with version 2.0 + // For now, let everything else through + + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid OpenGL ES version %i.%i", + ctxconfig->major, ctxconfig->minor); + return GLFW_FALSE; + } + } + + if (ctxconfig->robustness) + { + if (ctxconfig->robustness != GLFW_NO_RESET_NOTIFICATION && + ctxconfig->robustness != GLFW_LOSE_CONTEXT_ON_RESET) + { + _glfwInputError(GLFW_INVALID_ENUM, + "Invalid context robustness mode 0x%08X", + ctxconfig->robustness); + return GLFW_FALSE; + } + } + + if (ctxconfig->release) + { + if (ctxconfig->release != GLFW_RELEASE_BEHAVIOR_NONE && + ctxconfig->release != GLFW_RELEASE_BEHAVIOR_FLUSH) + { + _glfwInputError(GLFW_INVALID_ENUM, + "Invalid context release behavior 0x%08X", + ctxconfig->release); + return GLFW_FALSE; + } + } + + return GLFW_TRUE; +} + +// Chooses the framebuffer config that best matches the desired one +// +const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired, + const _GLFWfbconfig* alternatives, + unsigned int count) +{ + unsigned int i; + unsigned int missing, leastMissing = UINT_MAX; + unsigned int colorDiff, leastColorDiff = UINT_MAX; + unsigned int extraDiff, leastExtraDiff = UINT_MAX; + const _GLFWfbconfig* current; + const _GLFWfbconfig* closest = NULL; + + for (i = 0; i < count; i++) + { + current = alternatives + i; + + if (desired->stereo > 0 && current->stereo == 0) + { + // Stereo is a hard constraint + continue; + } + + // Count number of missing buffers + { + missing = 0; + + if (desired->alphaBits > 0 && current->alphaBits == 0) + missing++; + + if (desired->depthBits > 0 && current->depthBits == 0) + missing++; + + if (desired->stencilBits > 0 && current->stencilBits == 0) + missing++; + + if (desired->auxBuffers > 0 && + current->auxBuffers < desired->auxBuffers) + { + missing += desired->auxBuffers - current->auxBuffers; + } + + if (desired->samples > 0 && current->samples == 0) + { + // Technically, several multisampling buffers could be + // involved, but that's a lower level implementation detail and + // not important to us here, so we count them as one + missing++; + } + + if (desired->transparent != current->transparent) + missing++; + } + + // These polynomials make many small channel size differences matter + // less than one large channel size difference + + // Calculate color channel size difference value + { + colorDiff = 0; + + if (desired->redBits != GLFW_DONT_CARE) + { + colorDiff += (desired->redBits - current->redBits) * + (desired->redBits - current->redBits); + } + + if (desired->greenBits != GLFW_DONT_CARE) + { + colorDiff += (desired->greenBits - current->greenBits) * + (desired->greenBits - current->greenBits); + } + + if (desired->blueBits != GLFW_DONT_CARE) + { + colorDiff += (desired->blueBits - current->blueBits) * + (desired->blueBits - current->blueBits); + } + } + + // Calculate non-color channel size difference value + { + extraDiff = 0; + + if (desired->alphaBits != GLFW_DONT_CARE) + { + extraDiff += (desired->alphaBits - current->alphaBits) * + (desired->alphaBits - current->alphaBits); + } + + if (desired->depthBits != GLFW_DONT_CARE) + { + extraDiff += (desired->depthBits - current->depthBits) * + (desired->depthBits - current->depthBits); + } + + if (desired->stencilBits != GLFW_DONT_CARE) + { + extraDiff += (desired->stencilBits - current->stencilBits) * + (desired->stencilBits - current->stencilBits); + } + + if (desired->accumRedBits != GLFW_DONT_CARE) + { + extraDiff += (desired->accumRedBits - current->accumRedBits) * + (desired->accumRedBits - current->accumRedBits); + } + + if (desired->accumGreenBits != GLFW_DONT_CARE) + { + extraDiff += (desired->accumGreenBits - current->accumGreenBits) * + (desired->accumGreenBits - current->accumGreenBits); + } + + if (desired->accumBlueBits != GLFW_DONT_CARE) + { + extraDiff += (desired->accumBlueBits - current->accumBlueBits) * + (desired->accumBlueBits - current->accumBlueBits); + } + + if (desired->accumAlphaBits != GLFW_DONT_CARE) + { + extraDiff += (desired->accumAlphaBits - current->accumAlphaBits) * + (desired->accumAlphaBits - current->accumAlphaBits); + } + + if (desired->samples != GLFW_DONT_CARE) + { + extraDiff += (desired->samples - current->samples) * + (desired->samples - current->samples); + } + + if (desired->sRGB && !current->sRGB) + extraDiff++; + } + + // Figure out if the current one is better than the best one found so far + // Least number of missing buffers is the most important heuristic, + // then color buffer size match and lastly size match for other buffers + + if (missing < leastMissing) + closest = current; + else if (missing == leastMissing) + { + if ((colorDiff < leastColorDiff) || + (colorDiff == leastColorDiff && extraDiff < leastExtraDiff)) + { + closest = current; + } + } + + if (current == closest) + { + leastMissing = missing; + leastColorDiff = colorDiff; + leastExtraDiff = extraDiff; + } + } + + return closest; +} + +// Retrieves the attributes of the current context +// +GLFWbool _glfwRefreshContextAttribs(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig) +{ + int i; + _GLFWwindow* previous; + const char* version; + const char* prefixes[] = + { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + NULL + }; + + window->context.source = ctxconfig->source; + window->context.client = GLFW_OPENGL_API; + + previous = _glfwPlatformGetTls(&_glfw.contextSlot); + glfwMakeContextCurrent((GLFWwindow*) window); + + window->context.GetIntegerv = (PFNGLGETINTEGERVPROC) + window->context.getProcAddress("glGetIntegerv"); + window->context.GetString = (PFNGLGETSTRINGPROC) + window->context.getProcAddress("glGetString"); + if (!window->context.GetIntegerv || !window->context.GetString) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "Entry point retrieval is broken"); + glfwMakeContextCurrent((GLFWwindow*) previous); + return GLFW_FALSE; + } + + version = (const char*) window->context.GetString(GL_VERSION); + if (!version) + { + if (ctxconfig->client == GLFW_OPENGL_API) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "OpenGL version string retrieval is broken"); + } + else + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "OpenGL ES version string retrieval is broken"); + } + + glfwMakeContextCurrent((GLFWwindow*) previous); + return GLFW_FALSE; + } + + for (i = 0; prefixes[i]; i++) + { + const size_t length = strlen(prefixes[i]); + + if (strncmp(version, prefixes[i], length) == 0) + { + version += length; + window->context.client = GLFW_OPENGL_ES_API; + break; + } + } + + if (!sscanf(version, "%d.%d.%d", + &window->context.major, + &window->context.minor, + &window->context.revision)) + { + if (window->context.client == GLFW_OPENGL_API) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "No version found in OpenGL version string"); + } + else + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "No version found in OpenGL ES version string"); + } + + glfwMakeContextCurrent((GLFWwindow*) previous); + return GLFW_FALSE; + } + + if (window->context.major < ctxconfig->major || + (window->context.major == ctxconfig->major && + window->context.minor < ctxconfig->minor)) + { + // The desired OpenGL version is greater than the actual version + // This only happens if the machine lacks {GLX|WGL}_ARB_create_context + // /and/ the user has requested an OpenGL version greater than 1.0 + + // For API consistency, we emulate the behavior of the + // {GLX|WGL}_ARB_create_context extension and fail here + + if (window->context.client == GLFW_OPENGL_API) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "Requested OpenGL version %i.%i, got version %i.%i", + ctxconfig->major, ctxconfig->minor, + window->context.major, window->context.minor); + } + else + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "Requested OpenGL ES version %i.%i, got version %i.%i", + ctxconfig->major, ctxconfig->minor, + window->context.major, window->context.minor); + } + + glfwMakeContextCurrent((GLFWwindow*) previous); + return GLFW_FALSE; + } + + if (window->context.major >= 3) + { + // OpenGL 3.0+ uses a different function for extension string retrieval + // We cache it here instead of in glfwExtensionSupported mostly to alert + // users as early as possible that their build may be broken + + window->context.GetStringi = (PFNGLGETSTRINGIPROC) + window->context.getProcAddress("glGetStringi"); + if (!window->context.GetStringi) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Entry point retrieval is broken"); + glfwMakeContextCurrent((GLFWwindow*) previous); + return GLFW_FALSE; + } + } + + if (window->context.client == GLFW_OPENGL_API) + { + // Read back context flags (OpenGL 3.0 and above) + if (window->context.major >= 3) + { + GLint flags; + window->context.GetIntegerv(GL_CONTEXT_FLAGS, &flags); + + if (flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT) + window->context.forward = GLFW_TRUE; + + if (flags & GL_CONTEXT_FLAG_DEBUG_BIT) + window->context.debug = GLFW_TRUE; + else if (glfwExtensionSupported("GL_ARB_debug_output") && + ctxconfig->debug) + { + // HACK: This is a workaround for older drivers (pre KHR_debug) + // not setting the debug bit in the context flags for + // debug contexts + window->context.debug = GLFW_TRUE; + } + + if (flags & GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR) + window->context.noerror = GLFW_TRUE; + } + + // Read back OpenGL context profile (OpenGL 3.2 and above) + if (window->context.major >= 4 || + (window->context.major == 3 && window->context.minor >= 2)) + { + GLint mask; + window->context.GetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask); + + if (mask & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) + window->context.profile = GLFW_OPENGL_COMPAT_PROFILE; + else if (mask & GL_CONTEXT_CORE_PROFILE_BIT) + window->context.profile = GLFW_OPENGL_CORE_PROFILE; + else if (glfwExtensionSupported("GL_ARB_compatibility")) + { + // HACK: This is a workaround for the compatibility profile bit + // not being set in the context flags if an OpenGL 3.2+ + // context was created without having requested a specific + // version + window->context.profile = GLFW_OPENGL_COMPAT_PROFILE; + } + } + + // Read back robustness strategy + if (glfwExtensionSupported("GL_ARB_robustness")) + { + // NOTE: We avoid using the context flags for detection, as they are + // only present from 3.0 while the extension applies from 1.1 + + GLint strategy; + window->context.GetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB, + &strategy); + + if (strategy == GL_LOSE_CONTEXT_ON_RESET_ARB) + window->context.robustness = GLFW_LOSE_CONTEXT_ON_RESET; + else if (strategy == GL_NO_RESET_NOTIFICATION_ARB) + window->context.robustness = GLFW_NO_RESET_NOTIFICATION; + } + } + else + { + // Read back robustness strategy + if (glfwExtensionSupported("GL_EXT_robustness")) + { + // NOTE: The values of these constants match those of the OpenGL ARB + // one, so we can reuse them here + + GLint strategy; + window->context.GetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB, + &strategy); + + if (strategy == GL_LOSE_CONTEXT_ON_RESET_ARB) + window->context.robustness = GLFW_LOSE_CONTEXT_ON_RESET; + else if (strategy == GL_NO_RESET_NOTIFICATION_ARB) + window->context.robustness = GLFW_NO_RESET_NOTIFICATION; + } + } + + if (glfwExtensionSupported("GL_KHR_context_flush_control")) + { + GLint behavior; + window->context.GetIntegerv(GL_CONTEXT_RELEASE_BEHAVIOR, &behavior); + + if (behavior == GL_NONE) + window->context.release = GLFW_RELEASE_BEHAVIOR_NONE; + else if (behavior == GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH) + window->context.release = GLFW_RELEASE_BEHAVIOR_FLUSH; + } + + // Clearing the front buffer to black to avoid garbage pixels left over from + // previous uses of our bit of VRAM + { + PFNGLCLEARPROC glClear = (PFNGLCLEARPROC) + window->context.getProcAddress("glClear"); + glClear(GL_COLOR_BUFFER_BIT); + + if (window->doublebuffer) + window->context.swapBuffers(window); + } + + glfwMakeContextCurrent((GLFWwindow*) previous); + return GLFW_TRUE; +} + +// Searches an extension string for the specified extension +// +GLFWbool _glfwStringInExtensionString(const char* string, const char* extensions) +{ + const char* start = extensions; + + for (;;) + { + const char* where; + const char* terminator; + + where = strstr(start, string); + if (!where) + return GLFW_FALSE; + + terminator = where + strlen(string); + if (where == start || *(where - 1) == ' ') + { + if (*terminator == ' ' || *terminator == '\0') + break; + } + + start = terminator; + } + + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW public API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI void glfwMakeContextCurrent(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFWwindow* previous; + + _GLFW_REQUIRE_INIT(); + + previous = _glfwPlatformGetTls(&_glfw.contextSlot); + + if (window && window->context.client == GLFW_NO_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, + "Cannot make current with a window that has no OpenGL or OpenGL ES context"); + return; + } + + if (previous) + { + if (!window || window->context.source != previous->context.source) + previous->context.makeCurrent(NULL); + } + + if (window) + window->context.makeCurrent(window); +} + +GLFWAPI GLFWwindow* glfwGetCurrentContext(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return _glfwPlatformGetTls(&_glfw.contextSlot); +} + +GLFWAPI void glfwSwapBuffers(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + if (window->context.client == GLFW_NO_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, + "Cannot swap buffers of a window that has no OpenGL or OpenGL ES context"); + return; + } + + window->context.swapBuffers(window); +} + +GLFWAPI void glfwSwapInterval(int interval) +{ + _GLFWwindow* window; + + _GLFW_REQUIRE_INIT(); + + window = _glfwPlatformGetTls(&_glfw.contextSlot); + if (!window) + { + _glfwInputError(GLFW_NO_CURRENT_CONTEXT, + "Cannot set swap interval without a current OpenGL or OpenGL ES context"); + return; + } + + window->context.swapInterval(interval); +} + +GLFWAPI int glfwExtensionSupported(const char* extension) +{ + _GLFWwindow* window; + assert(extension != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + + window = _glfwPlatformGetTls(&_glfw.contextSlot); + if (!window) + { + _glfwInputError(GLFW_NO_CURRENT_CONTEXT, + "Cannot query extension without a current OpenGL or OpenGL ES context"); + return GLFW_FALSE; + } + + if (*extension == '\0') + { + _glfwInputError(GLFW_INVALID_VALUE, "Extension name cannot be an empty string"); + return GLFW_FALSE; + } + + if (window->context.major >= 3) + { + int i; + GLint count; + + // Check if extension is in the modern OpenGL extensions string list + + window->context.GetIntegerv(GL_NUM_EXTENSIONS, &count); + + for (i = 0; i < count; i++) + { + const char* en = (const char*) + window->context.GetStringi(GL_EXTENSIONS, i); + if (!en) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Extension string retrieval is broken"); + return GLFW_FALSE; + } + + if (strcmp(en, extension) == 0) + return GLFW_TRUE; + } + } + else + { + // Check if extension is in the old style OpenGL extensions string + + const char* extensions = (const char*) + window->context.GetString(GL_EXTENSIONS); + if (!extensions) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Extension string retrieval is broken"); + return GLFW_FALSE; + } + + if (_glfwStringInExtensionString(extension, extensions)) + return GLFW_TRUE; + } + + // Check if extension is in the platform-specific string + return window->context.extensionSupported(extension); +} + +GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname) +{ + _GLFWwindow* window; + assert(procname != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + window = _glfwPlatformGetTls(&_glfw.contextSlot); + if (!window) + { + _glfwInputError(GLFW_NO_CURRENT_CONTEXT, + "Cannot query entry point without a current OpenGL or OpenGL ES context"); + return NULL; + } + + return window->context.getProcAddress(procname); +} + diff --git a/lib/glfw/src/egl_context.c b/lib/glfw/src/egl_context.c new file mode 100644 index 0000000..64dcdd6 --- /dev/null +++ b/lib/glfw/src/egl_context.c @@ -0,0 +1,909 @@ +//======================================================================== +// GLFW 3.4 EGL - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#include +#include +#include +#include + + +// Return a description of the specified EGL error +// +static const char* getEGLErrorString(EGLint error) +{ + switch (error) + { + case EGL_SUCCESS: + return "Success"; + case EGL_NOT_INITIALIZED: + return "EGL is not or could not be initialized"; + case EGL_BAD_ACCESS: + return "EGL cannot access a requested resource"; + case EGL_BAD_ALLOC: + return "EGL failed to allocate resources for the requested operation"; + case EGL_BAD_ATTRIBUTE: + return "An unrecognized attribute or attribute value was passed in the attribute list"; + case EGL_BAD_CONTEXT: + return "An EGLContext argument does not name a valid EGL rendering context"; + case EGL_BAD_CONFIG: + return "An EGLConfig argument does not name a valid EGL frame buffer configuration"; + case EGL_BAD_CURRENT_SURFACE: + return "The current surface of the calling thread is a window, pixel buffer or pixmap that is no longer valid"; + case EGL_BAD_DISPLAY: + return "An EGLDisplay argument does not name a valid EGL display connection"; + case EGL_BAD_SURFACE: + return "An EGLSurface argument does not name a valid surface configured for GL rendering"; + case EGL_BAD_MATCH: + return "Arguments are inconsistent"; + case EGL_BAD_PARAMETER: + return "One or more argument values are invalid"; + case EGL_BAD_NATIVE_PIXMAP: + return "A NativePixmapType argument does not refer to a valid native pixmap"; + case EGL_BAD_NATIVE_WINDOW: + return "A NativeWindowType argument does not refer to a valid native window"; + case EGL_CONTEXT_LOST: + return "The application must destroy all contexts and reinitialise"; + default: + return "ERROR: UNKNOWN EGL ERROR"; + } +} + +// Returns the specified attribute of the specified EGLConfig +// +static int getEGLConfigAttrib(EGLConfig config, int attrib) +{ + int value; + eglGetConfigAttrib(_glfw.egl.display, config, attrib, &value); + return value; +} + +// Return the EGLConfig most closely matching the specified hints +// +static GLFWbool chooseEGLConfig(const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig, + EGLConfig* result) +{ + EGLConfig* nativeConfigs; + _GLFWfbconfig* usableConfigs; + const _GLFWfbconfig* closest; + int i, nativeCount, usableCount, apiBit; + GLFWbool wrongApiAvailable = GLFW_FALSE; + + if (ctxconfig->client == GLFW_OPENGL_ES_API) + { + if (ctxconfig->major == 1) + apiBit = EGL_OPENGL_ES_BIT; + else + apiBit = EGL_OPENGL_ES2_BIT; + } + else + apiBit = EGL_OPENGL_BIT; + + if (fbconfig->stereo) + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, "EGL: Stereo rendering not supported"); + return GLFW_FALSE; + } + + eglGetConfigs(_glfw.egl.display, NULL, 0, &nativeCount); + if (!nativeCount) + { + _glfwInputError(GLFW_API_UNAVAILABLE, "EGL: No EGLConfigs returned"); + return GLFW_FALSE; + } + + nativeConfigs = _glfw_calloc(nativeCount, sizeof(EGLConfig)); + eglGetConfigs(_glfw.egl.display, nativeConfigs, nativeCount, &nativeCount); + + usableConfigs = _glfw_calloc(nativeCount, sizeof(_GLFWfbconfig)); + usableCount = 0; + + for (i = 0; i < nativeCount; i++) + { + const EGLConfig n = nativeConfigs[i]; + _GLFWfbconfig* u = usableConfigs + usableCount; + + // Only consider RGB(A) EGLConfigs + if (getEGLConfigAttrib(n, EGL_COLOR_BUFFER_TYPE) != EGL_RGB_BUFFER) + continue; + + // Only consider window EGLConfigs + if (!(getEGLConfigAttrib(n, EGL_SURFACE_TYPE) & EGL_WINDOW_BIT)) + continue; + +#if defined(_GLFW_X11) + if (_glfw.platform.platformID == GLFW_PLATFORM_X11) + { + XVisualInfo vi = {0}; + + // Only consider EGLConfigs with associated Visuals + vi.visualid = getEGLConfigAttrib(n, EGL_NATIVE_VISUAL_ID); + if (!vi.visualid) + continue; + + if (fbconfig->transparent) + { + int count; + XVisualInfo* vis = + XGetVisualInfo(_glfw.x11.display, VisualIDMask, &vi, &count); + if (vis) + { + u->transparent = _glfwIsVisualTransparentX11(vis[0].visual); + XFree(vis); + } + } + } +#endif // _GLFW_X11 + + if (!(getEGLConfigAttrib(n, EGL_RENDERABLE_TYPE) & apiBit)) + { + wrongApiAvailable = GLFW_TRUE; + continue; + } + + u->redBits = getEGLConfigAttrib(n, EGL_RED_SIZE); + u->greenBits = getEGLConfigAttrib(n, EGL_GREEN_SIZE); + u->blueBits = getEGLConfigAttrib(n, EGL_BLUE_SIZE); + + u->alphaBits = getEGLConfigAttrib(n, EGL_ALPHA_SIZE); + u->depthBits = getEGLConfigAttrib(n, EGL_DEPTH_SIZE); + u->stencilBits = getEGLConfigAttrib(n, EGL_STENCIL_SIZE); + +#if defined(_GLFW_WAYLAND) + if (_glfw.platform.platformID == GLFW_PLATFORM_WAYLAND) + { + // NOTE: The wl_surface opaque region is no guarantee that its buffer + // is presented as opaque, if it also has an alpha channel + // HACK: If EGL_EXT_present_opaque is unavailable, ignore any config + // with an alpha channel to ensure the buffer is opaque + if (!_glfw.egl.EXT_present_opaque) + { + if (!fbconfig->transparent && u->alphaBits > 0) + continue; + } + } +#endif // _GLFW_WAYLAND + + u->samples = getEGLConfigAttrib(n, EGL_SAMPLES); + u->doublebuffer = fbconfig->doublebuffer; + + u->handle = (uintptr_t) n; + usableCount++; + } + + closest = _glfwChooseFBConfig(fbconfig, usableConfigs, usableCount); + if (closest) + *result = (EGLConfig) closest->handle; + else + { + if (wrongApiAvailable) + { + if (ctxconfig->client == GLFW_OPENGL_ES_API) + { + if (ctxconfig->major == 1) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "EGL: Failed to find support for OpenGL ES 1.x"); + } + else + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "EGL: Failed to find support for OpenGL ES 2 or later"); + } + } + else + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "EGL: Failed to find support for OpenGL"); + } + } + else + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "EGL: Failed to find a suitable EGLConfig"); + } + } + + _glfw_free(nativeConfigs); + _glfw_free(usableConfigs); + + return closest != NULL; +} + +static void makeContextCurrentEGL(_GLFWwindow* window) +{ + if (window) + { + if (!eglMakeCurrent(_glfw.egl.display, + window->context.egl.surface, + window->context.egl.surface, + window->context.egl.handle)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "EGL: Failed to make context current: %s", + getEGLErrorString(eglGetError())); + return; + } + } + else + { + if (!eglMakeCurrent(_glfw.egl.display, + EGL_NO_SURFACE, + EGL_NO_SURFACE, + EGL_NO_CONTEXT)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "EGL: Failed to clear current context: %s", + getEGLErrorString(eglGetError())); + return; + } + } + + _glfwPlatformSetTls(&_glfw.contextSlot, window); +} + +static void swapBuffersEGL(_GLFWwindow* window) +{ + if (window != _glfwPlatformGetTls(&_glfw.contextSlot)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "EGL: The context must be current on the calling thread when swapping buffers"); + return; + } + +#if defined(_GLFW_WAYLAND) + if (_glfw.platform.platformID == GLFW_PLATFORM_WAYLAND) + { + // NOTE: Swapping buffers on a hidden window on Wayland makes it visible + if (!window->wl.visible) + return; + } +#endif + + eglSwapBuffers(_glfw.egl.display, window->context.egl.surface); +} + +static void swapIntervalEGL(int interval) +{ + eglSwapInterval(_glfw.egl.display, interval); +} + +static int extensionSupportedEGL(const char* extension) +{ + const char* extensions = eglQueryString(_glfw.egl.display, EGL_EXTENSIONS); + if (extensions) + { + if (_glfwStringInExtensionString(extension, extensions)) + return GLFW_TRUE; + } + + return GLFW_FALSE; +} + +static GLFWglproc getProcAddressEGL(const char* procname) +{ + _GLFWwindow* window = _glfwPlatformGetTls(&_glfw.contextSlot); + + if (window->context.egl.client) + { + GLFWglproc proc = (GLFWglproc) + _glfwPlatformGetModuleSymbol(window->context.egl.client, procname); + if (proc) + return proc; + } + + return eglGetProcAddress(procname); +} + +static void destroyContextEGL(_GLFWwindow* window) +{ + // NOTE: Do not unload libGL.so.1 while the X11 display is still open, + // as it will make XCloseDisplay segfault + if (_glfw.platform.platformID != GLFW_PLATFORM_X11 || + window->context.client != GLFW_OPENGL_API) + { + if (window->context.egl.client) + { + _glfwPlatformFreeModule(window->context.egl.client); + window->context.egl.client = NULL; + } + } + + if (window->context.egl.surface) + { + eglDestroySurface(_glfw.egl.display, window->context.egl.surface); + window->context.egl.surface = EGL_NO_SURFACE; + } + + if (window->context.egl.handle) + { + eglDestroyContext(_glfw.egl.display, window->context.egl.handle); + window->context.egl.handle = EGL_NO_CONTEXT; + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Initialize EGL +// +GLFWbool _glfwInitEGL(void) +{ + int i; + EGLint* attribs = NULL; + const char* extensions; + const char* sonames[] = + { +#if defined(_GLFW_EGL_LIBRARY) + _GLFW_EGL_LIBRARY, +#elif defined(_GLFW_WIN32) + "libEGL.dll", + "EGL.dll", +#elif defined(_GLFW_COCOA) + "libEGL.dylib", +#elif defined(__CYGWIN__) + "libEGL-1.so", +#elif defined(__OpenBSD__) || defined(__NetBSD__) + "libEGL.so", +#else + "libEGL.so.1", +#endif + NULL + }; + + if (_glfw.egl.handle) + return GLFW_TRUE; + + for (i = 0; sonames[i]; i++) + { + _glfw.egl.handle = _glfwPlatformLoadModule(sonames[i]); + if (_glfw.egl.handle) + break; + } + + if (!_glfw.egl.handle) + { + _glfwInputError(GLFW_API_UNAVAILABLE, "EGL: Library not found"); + return GLFW_FALSE; + } + + _glfw.egl.prefix = (strncmp(sonames[i], "lib", 3) == 0); + + _glfw.egl.GetConfigAttrib = (PFN_eglGetConfigAttrib) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetConfigAttrib"); + _glfw.egl.GetConfigs = (PFN_eglGetConfigs) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetConfigs"); + _glfw.egl.GetDisplay = (PFN_eglGetDisplay) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetDisplay"); + _glfw.egl.GetError = (PFN_eglGetError) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetError"); + _glfw.egl.Initialize = (PFN_eglInitialize) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglInitialize"); + _glfw.egl.Terminate = (PFN_eglTerminate) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglTerminate"); + _glfw.egl.BindAPI = (PFN_eglBindAPI) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglBindAPI"); + _glfw.egl.CreateContext = (PFN_eglCreateContext) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglCreateContext"); + _glfw.egl.DestroySurface = (PFN_eglDestroySurface) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglDestroySurface"); + _glfw.egl.DestroyContext = (PFN_eglDestroyContext) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglDestroyContext"); + _glfw.egl.CreateWindowSurface = (PFN_eglCreateWindowSurface) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglCreateWindowSurface"); + _glfw.egl.MakeCurrent = (PFN_eglMakeCurrent) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglMakeCurrent"); + _glfw.egl.SwapBuffers = (PFN_eglSwapBuffers) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglSwapBuffers"); + _glfw.egl.SwapInterval = (PFN_eglSwapInterval) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglSwapInterval"); + _glfw.egl.QueryString = (PFN_eglQueryString) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglQueryString"); + _glfw.egl.GetProcAddress = (PFN_eglGetProcAddress) + _glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetProcAddress"); + + if (!_glfw.egl.GetConfigAttrib || + !_glfw.egl.GetConfigs || + !_glfw.egl.GetDisplay || + !_glfw.egl.GetError || + !_glfw.egl.Initialize || + !_glfw.egl.Terminate || + !_glfw.egl.BindAPI || + !_glfw.egl.CreateContext || + !_glfw.egl.DestroySurface || + !_glfw.egl.DestroyContext || + !_glfw.egl.CreateWindowSurface || + !_glfw.egl.MakeCurrent || + !_glfw.egl.SwapBuffers || + !_glfw.egl.SwapInterval || + !_glfw.egl.QueryString || + !_glfw.egl.GetProcAddress) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "EGL: Failed to load required entry points"); + + _glfwTerminateEGL(); + return GLFW_FALSE; + } + + extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS); + if (extensions && eglGetError() == EGL_SUCCESS) + _glfw.egl.EXT_client_extensions = GLFW_TRUE; + + if (_glfw.egl.EXT_client_extensions) + { + _glfw.egl.EXT_platform_base = + _glfwStringInExtensionString("EGL_EXT_platform_base", extensions); + _glfw.egl.EXT_platform_x11 = + _glfwStringInExtensionString("EGL_EXT_platform_x11", extensions); + _glfw.egl.EXT_platform_wayland = + _glfwStringInExtensionString("EGL_EXT_platform_wayland", extensions); + _glfw.egl.ANGLE_platform_angle = + _glfwStringInExtensionString("EGL_ANGLE_platform_angle", extensions); + _glfw.egl.ANGLE_platform_angle_opengl = + _glfwStringInExtensionString("EGL_ANGLE_platform_angle_opengl", extensions); + _glfw.egl.ANGLE_platform_angle_d3d = + _glfwStringInExtensionString("EGL_ANGLE_platform_angle_d3d", extensions); + _glfw.egl.ANGLE_platform_angle_vulkan = + _glfwStringInExtensionString("EGL_ANGLE_platform_angle_vulkan", extensions); + _glfw.egl.ANGLE_platform_angle_metal = + _glfwStringInExtensionString("EGL_ANGLE_platform_angle_metal", extensions); + } + + if (_glfw.egl.EXT_platform_base) + { + _glfw.egl.GetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC) + eglGetProcAddress("eglGetPlatformDisplayEXT"); + _glfw.egl.CreatePlatformWindowSurfaceEXT = (PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) + eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT"); + } + + _glfw.egl.platform = _glfw.platform.getEGLPlatform(&attribs); + if (_glfw.egl.platform) + { + _glfw.egl.display = + eglGetPlatformDisplayEXT(_glfw.egl.platform, + _glfw.platform.getEGLNativeDisplay(), + attribs); + } + else + _glfw.egl.display = eglGetDisplay(_glfw.platform.getEGLNativeDisplay()); + + _glfw_free(attribs); + + if (_glfw.egl.display == EGL_NO_DISPLAY) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "EGL: Failed to get EGL display: %s", + getEGLErrorString(eglGetError())); + + _glfwTerminateEGL(); + return GLFW_FALSE; + } + + if (!eglInitialize(_glfw.egl.display, &_glfw.egl.major, &_glfw.egl.minor)) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "EGL: Failed to initialize EGL: %s", + getEGLErrorString(eglGetError())); + + _glfwTerminateEGL(); + return GLFW_FALSE; + } + + _glfw.egl.KHR_create_context = + extensionSupportedEGL("EGL_KHR_create_context"); + _glfw.egl.KHR_create_context_no_error = + extensionSupportedEGL("EGL_KHR_create_context_no_error"); + _glfw.egl.KHR_gl_colorspace = + extensionSupportedEGL("EGL_KHR_gl_colorspace"); + _glfw.egl.KHR_get_all_proc_addresses = + extensionSupportedEGL("EGL_KHR_get_all_proc_addresses"); + _glfw.egl.KHR_context_flush_control = + extensionSupportedEGL("EGL_KHR_context_flush_control"); + _glfw.egl.EXT_present_opaque = + extensionSupportedEGL("EGL_EXT_present_opaque"); + + return GLFW_TRUE; +} + +// Terminate EGL +// +void _glfwTerminateEGL(void) +{ + if (_glfw.egl.display) + { + eglTerminate(_glfw.egl.display); + _glfw.egl.display = EGL_NO_DISPLAY; + } + + if (_glfw.egl.handle) + { + _glfwPlatformFreeModule(_glfw.egl.handle); + _glfw.egl.handle = NULL; + } +} + +#define SET_ATTRIB(a, v) \ +{ \ + assert(((size_t) index + 1) < sizeof(attribs) / sizeof(attribs[0])); \ + attribs[index++] = a; \ + attribs[index++] = v; \ +} + +// Create the OpenGL or OpenGL ES context +// +GLFWbool _glfwCreateContextEGL(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + EGLint attribs[40]; + EGLConfig config; + EGLContext share = NULL; + EGLNativeWindowType native; + int index = 0; + + if (!_glfw.egl.display) + { + _glfwInputError(GLFW_API_UNAVAILABLE, "EGL: API not available"); + return GLFW_FALSE; + } + + if (ctxconfig->share) + share = ctxconfig->share->context.egl.handle; + + if (!chooseEGLConfig(ctxconfig, fbconfig, &config)) + return GLFW_FALSE; + + if (ctxconfig->client == GLFW_OPENGL_ES_API) + { + if (!eglBindAPI(EGL_OPENGL_ES_API)) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "EGL: Failed to bind OpenGL ES: %s", + getEGLErrorString(eglGetError())); + return GLFW_FALSE; + } + } + else + { + if (!eglBindAPI(EGL_OPENGL_API)) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "EGL: Failed to bind OpenGL: %s", + getEGLErrorString(eglGetError())); + return GLFW_FALSE; + } + } + + if (_glfw.egl.KHR_create_context) + { + int mask = 0, flags = 0; + + if (ctxconfig->client == GLFW_OPENGL_API) + { + if (ctxconfig->forward) + flags |= EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR; + + if (ctxconfig->profile == GLFW_OPENGL_CORE_PROFILE) + mask |= EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR; + else if (ctxconfig->profile == GLFW_OPENGL_COMPAT_PROFILE) + mask |= EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; + } + + if (ctxconfig->debug) + flags |= EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR; + + if (ctxconfig->robustness) + { + if (ctxconfig->robustness == GLFW_NO_RESET_NOTIFICATION) + { + SET_ATTRIB(EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, + EGL_NO_RESET_NOTIFICATION_KHR); + } + else if (ctxconfig->robustness == GLFW_LOSE_CONTEXT_ON_RESET) + { + SET_ATTRIB(EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, + EGL_LOSE_CONTEXT_ON_RESET_KHR); + } + + flags |= EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR; + } + + if (ctxconfig->noerror) + { + if (_glfw.egl.KHR_create_context_no_error) + SET_ATTRIB(EGL_CONTEXT_OPENGL_NO_ERROR_KHR, GLFW_TRUE); + } + + if (ctxconfig->major != 1 || ctxconfig->minor != 0) + { + SET_ATTRIB(EGL_CONTEXT_MAJOR_VERSION_KHR, ctxconfig->major); + SET_ATTRIB(EGL_CONTEXT_MINOR_VERSION_KHR, ctxconfig->minor); + } + + if (mask) + SET_ATTRIB(EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, mask); + + if (flags) + SET_ATTRIB(EGL_CONTEXT_FLAGS_KHR, flags); + } + else + { + if (ctxconfig->client == GLFW_OPENGL_ES_API) + SET_ATTRIB(EGL_CONTEXT_CLIENT_VERSION, ctxconfig->major); + } + + if (_glfw.egl.KHR_context_flush_control) + { + if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_NONE) + { + SET_ATTRIB(EGL_CONTEXT_RELEASE_BEHAVIOR_KHR, + EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR); + } + else if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_FLUSH) + { + SET_ATTRIB(EGL_CONTEXT_RELEASE_BEHAVIOR_KHR, + EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR); + } + } + + SET_ATTRIB(EGL_NONE, EGL_NONE); + + window->context.egl.handle = eglCreateContext(_glfw.egl.display, + config, share, attribs); + + if (window->context.egl.handle == EGL_NO_CONTEXT) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "EGL: Failed to create context: %s", + getEGLErrorString(eglGetError())); + return GLFW_FALSE; + } + + // Set up attributes for surface creation + index = 0; + + if (fbconfig->sRGB) + { + if (_glfw.egl.KHR_gl_colorspace) + SET_ATTRIB(EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_SRGB_KHR); + } + + if (!fbconfig->doublebuffer) + SET_ATTRIB(EGL_RENDER_BUFFER, EGL_SINGLE_BUFFER); + + if (_glfw.egl.EXT_present_opaque) + SET_ATTRIB(EGL_PRESENT_OPAQUE_EXT, !fbconfig->transparent); + + SET_ATTRIB(EGL_NONE, EGL_NONE); + + native = _glfw.platform.getEGLNativeWindow(window); + // HACK: ANGLE does not implement eglCreatePlatformWindowSurfaceEXT + // despite reporting EGL_EXT_platform_base + if (_glfw.egl.platform && _glfw.egl.platform != EGL_PLATFORM_ANGLE_ANGLE) + { + window->context.egl.surface = + eglCreatePlatformWindowSurfaceEXT(_glfw.egl.display, config, native, attribs); + } + else + { + window->context.egl.surface = + eglCreateWindowSurface(_glfw.egl.display, config, native, attribs); + } + + if (window->context.egl.surface == EGL_NO_SURFACE) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "EGL: Failed to create window surface: %s", + getEGLErrorString(eglGetError())); + return GLFW_FALSE; + } + + window->context.egl.config = config; + + // Load the appropriate client library + if (!_glfw.egl.KHR_get_all_proc_addresses) + { + int i; + const char** sonames; + const char* es1sonames[] = + { +#if defined(_GLFW_GLESV1_LIBRARY) + _GLFW_GLESV1_LIBRARY, +#elif defined(_GLFW_WIN32) + "GLESv1_CM.dll", + "libGLES_CM.dll", +#elif defined(_GLFW_COCOA) + "libGLESv1_CM.dylib", +#elif defined(__OpenBSD__) || defined(__NetBSD__) + "libGLESv1_CM.so", +#else + "libGLESv1_CM.so.1", + "libGLES_CM.so.1", +#endif + NULL + }; + const char* es2sonames[] = + { +#if defined(_GLFW_GLESV2_LIBRARY) + _GLFW_GLESV2_LIBRARY, +#elif defined(_GLFW_WIN32) + "GLESv2.dll", + "libGLESv2.dll", +#elif defined(_GLFW_COCOA) + "libGLESv2.dylib", +#elif defined(__CYGWIN__) + "libGLESv2-2.so", +#elif defined(__OpenBSD__) || defined(__NetBSD__) + "libGLESv2.so", +#else + "libGLESv2.so.2", +#endif + NULL + }; + const char* glsonames[] = + { +#if defined(_GLFW_OPENGL_LIBRARY) + _GLFW_OPENGL_LIBRARY, +#elif defined(_GLFW_WIN32) +#elif defined(_GLFW_COCOA) +#elif defined(__OpenBSD__) || defined(__NetBSD__) + "libGL.so", +#else + "libOpenGL.so.0", + "libGL.so.1", +#endif + NULL + }; + + if (ctxconfig->client == GLFW_OPENGL_ES_API) + { + if (ctxconfig->major == 1) + sonames = es1sonames; + else + sonames = es2sonames; + } + else + sonames = glsonames; + + for (i = 0; sonames[i]; i++) + { + // HACK: Match presence of lib prefix to increase chance of finding + // a matching pair in the jungle that is Win32 EGL/GLES + if (_glfw.egl.prefix != (strncmp(sonames[i], "lib", 3) == 0)) + continue; + + window->context.egl.client = _glfwPlatformLoadModule(sonames[i]); + if (window->context.egl.client) + break; + } + + if (!window->context.egl.client) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "EGL: Failed to load client library"); + return GLFW_FALSE; + } + } + + window->context.makeCurrent = makeContextCurrentEGL; + window->context.swapBuffers = swapBuffersEGL; + window->context.swapInterval = swapIntervalEGL; + window->context.extensionSupported = extensionSupportedEGL; + window->context.getProcAddress = getProcAddressEGL; + window->context.destroy = destroyContextEGL; + + return GLFW_TRUE; +} + +#undef SET_ATTRIB + +// Returns the Visual and depth of the chosen EGLConfig +// +#if defined(_GLFW_X11) +GLFWbool _glfwChooseVisualEGL(const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig, + Visual** visual, int* depth) +{ + XVisualInfo* result; + XVisualInfo desired; + EGLConfig native; + EGLint visualID = 0, count = 0; + const long vimask = VisualScreenMask | VisualIDMask; + + if (!chooseEGLConfig(ctxconfig, fbconfig, &native)) + return GLFW_FALSE; + + eglGetConfigAttrib(_glfw.egl.display, native, + EGL_NATIVE_VISUAL_ID, &visualID); + + desired.screen = _glfw.x11.screen; + desired.visualid = visualID; + + result = XGetVisualInfo(_glfw.x11.display, vimask, &desired, &count); + if (!result) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "EGL: Failed to retrieve Visual for EGLConfig"); + return GLFW_FALSE; + } + + *visual = result->visual; + *depth = result->depth; + + XFree(result); + return GLFW_TRUE; +} +#endif // _GLFW_X11 + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI EGLDisplay glfwGetEGLDisplay(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(EGL_NO_DISPLAY); + return _glfw.egl.display; +} + +GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(EGL_NO_CONTEXT); + + if (window->context.source != GLFW_EGL_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return EGL_NO_CONTEXT; + } + + return window->context.egl.handle; +} + +GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(EGL_NO_SURFACE); + + if (window->context.source != GLFW_EGL_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return EGL_NO_SURFACE; + } + + return window->context.egl.surface; +} + diff --git a/lib/glfw/src/glfw.rc.in b/lib/glfw/src/glfw.rc.in new file mode 100644 index 0000000..ac3460a --- /dev/null +++ b/lib/glfw/src/glfw.rc.in @@ -0,0 +1,30 @@ + +#include + +VS_VERSION_INFO VERSIONINFO +FILEVERSION @GLFW_VERSION_MAJOR@,@GLFW_VERSION_MINOR@,@GLFW_VERSION_PATCH@,0 +PRODUCTVERSION @GLFW_VERSION_MAJOR@,@GLFW_VERSION_MINOR@,@GLFW_VERSION_PATCH@,0 +FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +FILEFLAGS 0 +FILEOS VOS_NT_WINDOWS32 +FILETYPE VFT_DLL +FILESUBTYPE 0 +{ + BLOCK "StringFileInfo" + { + BLOCK "040904B0" + { + VALUE "CompanyName", "GLFW" + VALUE "FileDescription", "GLFW @GLFW_VERSION@ DLL" + VALUE "FileVersion", "@GLFW_VERSION@" + VALUE "OriginalFilename", "glfw3.dll" + VALUE "ProductName", "GLFW" + VALUE "ProductVersion", "@GLFW_VERSION@" + } + } + BLOCK "VarFileInfo" + { + VALUE "Translation", 0x409, 1200 + } +} + diff --git a/lib/glfw/src/glx_context.c b/lib/glfw/src/glx_context.c new file mode 100644 index 0000000..4406dfd --- /dev/null +++ b/lib/glfw/src/glx_context.c @@ -0,0 +1,720 @@ +//======================================================================== +// GLFW 3.4 GLX - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_X11) + +#include +#include +#include + +#ifndef GLXBadProfileARB + #define GLXBadProfileARB 13 +#endif + + +// Returns the specified attribute of the specified GLXFBConfig +// +static int getGLXFBConfigAttrib(GLXFBConfig fbconfig, int attrib) +{ + int value; + glXGetFBConfigAttrib(_glfw.x11.display, fbconfig, attrib, &value); + return value; +} + +// Return the GLXFBConfig most closely matching the specified hints +// +static GLFWbool chooseGLXFBConfig(const _GLFWfbconfig* desired, + GLXFBConfig* result) +{ + GLXFBConfig* nativeConfigs; + _GLFWfbconfig* usableConfigs; + const _GLFWfbconfig* closest; + int nativeCount, usableCount; + const char* vendor; + GLFWbool trustWindowBit = GLFW_TRUE; + + // HACK: This is a (hopefully temporary) workaround for Chromium + // (VirtualBox GL) not setting the window bit on any GLXFBConfigs + vendor = glXGetClientString(_glfw.x11.display, GLX_VENDOR); + if (vendor && strcmp(vendor, "Chromium") == 0) + trustWindowBit = GLFW_FALSE; + + nativeConfigs = + glXGetFBConfigs(_glfw.x11.display, _glfw.x11.screen, &nativeCount); + if (!nativeConfigs || !nativeCount) + { + _glfwInputError(GLFW_API_UNAVAILABLE, "GLX: No GLXFBConfigs returned"); + return GLFW_FALSE; + } + + usableConfigs = _glfw_calloc(nativeCount, sizeof(_GLFWfbconfig)); + usableCount = 0; + + for (int i = 0; i < nativeCount; i++) + { + const GLXFBConfig n = nativeConfigs[i]; + _GLFWfbconfig* u = usableConfigs + usableCount; + + // Only consider RGBA GLXFBConfigs + if (!(getGLXFBConfigAttrib(n, GLX_RENDER_TYPE) & GLX_RGBA_BIT)) + continue; + + // Only consider window GLXFBConfigs + if (!(getGLXFBConfigAttrib(n, GLX_DRAWABLE_TYPE) & GLX_WINDOW_BIT)) + { + if (trustWindowBit) + continue; + } + + if (getGLXFBConfigAttrib(n, GLX_DOUBLEBUFFER) != desired->doublebuffer) + continue; + + if (desired->transparent) + { + XVisualInfo* vi = glXGetVisualFromFBConfig(_glfw.x11.display, n); + if (vi) + { + u->transparent = _glfwIsVisualTransparentX11(vi->visual); + XFree(vi); + } + } + + u->redBits = getGLXFBConfigAttrib(n, GLX_RED_SIZE); + u->greenBits = getGLXFBConfigAttrib(n, GLX_GREEN_SIZE); + u->blueBits = getGLXFBConfigAttrib(n, GLX_BLUE_SIZE); + + u->alphaBits = getGLXFBConfigAttrib(n, GLX_ALPHA_SIZE); + u->depthBits = getGLXFBConfigAttrib(n, GLX_DEPTH_SIZE); + u->stencilBits = getGLXFBConfigAttrib(n, GLX_STENCIL_SIZE); + + u->accumRedBits = getGLXFBConfigAttrib(n, GLX_ACCUM_RED_SIZE); + u->accumGreenBits = getGLXFBConfigAttrib(n, GLX_ACCUM_GREEN_SIZE); + u->accumBlueBits = getGLXFBConfigAttrib(n, GLX_ACCUM_BLUE_SIZE); + u->accumAlphaBits = getGLXFBConfigAttrib(n, GLX_ACCUM_ALPHA_SIZE); + + u->auxBuffers = getGLXFBConfigAttrib(n, GLX_AUX_BUFFERS); + + if (getGLXFBConfigAttrib(n, GLX_STEREO)) + u->stereo = GLFW_TRUE; + + if (_glfw.glx.ARB_multisample) + u->samples = getGLXFBConfigAttrib(n, GLX_SAMPLES); + + if (_glfw.glx.ARB_framebuffer_sRGB || _glfw.glx.EXT_framebuffer_sRGB) + u->sRGB = getGLXFBConfigAttrib(n, GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB); + + u->handle = (uintptr_t) n; + usableCount++; + } + + closest = _glfwChooseFBConfig(desired, usableConfigs, usableCount); + if (closest) + *result = (GLXFBConfig) closest->handle; + + XFree(nativeConfigs); + _glfw_free(usableConfigs); + + return closest != NULL; +} + +// Create the OpenGL context using legacy API +// +static GLXContext createLegacyContextGLX(_GLFWwindow* window, + GLXFBConfig fbconfig, + GLXContext share) +{ + return glXCreateNewContext(_glfw.x11.display, + fbconfig, + GLX_RGBA_TYPE, + share, + True); +} + +static void makeContextCurrentGLX(_GLFWwindow* window) +{ + if (window) + { + if (!glXMakeCurrent(_glfw.x11.display, + window->context.glx.window, + window->context.glx.handle)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "GLX: Failed to make context current"); + return; + } + } + else + { + if (!glXMakeCurrent(_glfw.x11.display, None, NULL)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "GLX: Failed to clear current context"); + return; + } + } + + _glfwPlatformSetTls(&_glfw.contextSlot, window); +} + +static void swapBuffersGLX(_GLFWwindow* window) +{ + glXSwapBuffers(_glfw.x11.display, window->context.glx.window); +} + +static void swapIntervalGLX(int interval) +{ + _GLFWwindow* window = _glfwPlatformGetTls(&_glfw.contextSlot); + + if (_glfw.glx.EXT_swap_control) + { + _glfw.glx.SwapIntervalEXT(_glfw.x11.display, + window->context.glx.window, + interval); + } + else if (_glfw.glx.MESA_swap_control) + _glfw.glx.SwapIntervalMESA(interval); + else if (_glfw.glx.SGI_swap_control) + { + if (interval > 0) + _glfw.glx.SwapIntervalSGI(interval); + } +} + +static int extensionSupportedGLX(const char* extension) +{ + const char* extensions = + glXQueryExtensionsString(_glfw.x11.display, _glfw.x11.screen); + if (extensions) + { + if (_glfwStringInExtensionString(extension, extensions)) + return GLFW_TRUE; + } + + return GLFW_FALSE; +} + +static GLFWglproc getProcAddressGLX(const char* procname) +{ + if (_glfw.glx.GetProcAddress) + return _glfw.glx.GetProcAddress((const GLubyte*) procname); + else if (_glfw.glx.GetProcAddressARB) + return _glfw.glx.GetProcAddressARB((const GLubyte*) procname); + else + { + // NOTE: glvnd provides GLX 1.4, so this can only happen with libGL + return _glfwPlatformGetModuleSymbol(_glfw.glx.handle, procname); + } +} + +static void destroyContextGLX(_GLFWwindow* window) +{ + if (window->context.glx.window) + { + glXDestroyWindow(_glfw.x11.display, window->context.glx.window); + window->context.glx.window = None; + } + + if (window->context.glx.handle) + { + glXDestroyContext(_glfw.x11.display, window->context.glx.handle); + window->context.glx.handle = NULL; + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Initialize GLX +// +GLFWbool _glfwInitGLX(void) +{ + const char* sonames[] = + { +#if defined(_GLFW_GLX_LIBRARY) + _GLFW_GLX_LIBRARY, +#elif defined(__CYGWIN__) + "libGL-1.so", +#elif defined(__OpenBSD__) || defined(__NetBSD__) + "libGL.so", +#else + "libGLX.so.0", + "libGL.so.1", + "libGL.so", +#endif + NULL + }; + + if (_glfw.glx.handle) + return GLFW_TRUE; + + for (int i = 0; sonames[i]; i++) + { + _glfw.glx.handle = _glfwPlatformLoadModule(sonames[i]); + if (_glfw.glx.handle) + break; + } + + if (!_glfw.glx.handle) + { + _glfwInputError(GLFW_API_UNAVAILABLE, "GLX: Failed to load GLX"); + return GLFW_FALSE; + } + + _glfw.glx.GetFBConfigs = (PFNGLXGETFBCONFIGSPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXGetFBConfigs"); + _glfw.glx.GetFBConfigAttrib = (PFNGLXGETFBCONFIGATTRIBPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXGetFBConfigAttrib"); + _glfw.glx.GetClientString = (PFNGLXGETCLIENTSTRINGPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXGetClientString"); + _glfw.glx.QueryExtension = (PFNGLXQUERYEXTENSIONPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXQueryExtension"); + _glfw.glx.QueryVersion = (PFNGLXQUERYVERSIONPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXQueryVersion"); + _glfw.glx.DestroyContext = (PFNGLXDESTROYCONTEXTPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXDestroyContext"); + _glfw.glx.MakeCurrent = (PFNGLXMAKECURRENTPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXMakeCurrent"); + _glfw.glx.SwapBuffers = (PFNGLXSWAPBUFFERSPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXSwapBuffers"); + _glfw.glx.QueryExtensionsString = (PFNGLXQUERYEXTENSIONSSTRINGPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXQueryExtensionsString"); + _glfw.glx.CreateNewContext = (PFNGLXCREATENEWCONTEXTPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXCreateNewContext"); + _glfw.glx.CreateWindow = (PFNGLXCREATEWINDOWPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXCreateWindow"); + _glfw.glx.DestroyWindow = (PFNGLXDESTROYWINDOWPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXDestroyWindow"); + _glfw.glx.GetVisualFromFBConfig = (PFNGLXGETVISUALFROMFBCONFIGPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXGetVisualFromFBConfig"); + + if (!_glfw.glx.GetFBConfigs || + !_glfw.glx.GetFBConfigAttrib || + !_glfw.glx.GetClientString || + !_glfw.glx.QueryExtension || + !_glfw.glx.QueryVersion || + !_glfw.glx.DestroyContext || + !_glfw.glx.MakeCurrent || + !_glfw.glx.SwapBuffers || + !_glfw.glx.QueryExtensionsString || + !_glfw.glx.CreateNewContext || + !_glfw.glx.CreateWindow || + !_glfw.glx.DestroyWindow || + !_glfw.glx.GetVisualFromFBConfig) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "GLX: Failed to load required entry points"); + return GLFW_FALSE; + } + + // NOTE: Unlike GLX 1.3 entry points these are not required to be present + _glfw.glx.GetProcAddress = (PFNGLXGETPROCADDRESSPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXGetProcAddress"); + _glfw.glx.GetProcAddressARB = (PFNGLXGETPROCADDRESSPROC) + _glfwPlatformGetModuleSymbol(_glfw.glx.handle, "glXGetProcAddressARB"); + + if (!glXQueryExtension(_glfw.x11.display, + &_glfw.glx.errorBase, + &_glfw.glx.eventBase)) + { + _glfwInputError(GLFW_API_UNAVAILABLE, "GLX: GLX extension not found"); + return GLFW_FALSE; + } + + if (!glXQueryVersion(_glfw.x11.display, &_glfw.glx.major, &_glfw.glx.minor)) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "GLX: Failed to query GLX version"); + return GLFW_FALSE; + } + + if (_glfw.glx.major == 1 && _glfw.glx.minor < 3) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "GLX: GLX version 1.3 is required"); + return GLFW_FALSE; + } + + if (extensionSupportedGLX("GLX_EXT_swap_control")) + { + _glfw.glx.SwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC) + getProcAddressGLX("glXSwapIntervalEXT"); + + if (_glfw.glx.SwapIntervalEXT) + _glfw.glx.EXT_swap_control = GLFW_TRUE; + } + + if (extensionSupportedGLX("GLX_SGI_swap_control")) + { + _glfw.glx.SwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC) + getProcAddressGLX("glXSwapIntervalSGI"); + + if (_glfw.glx.SwapIntervalSGI) + _glfw.glx.SGI_swap_control = GLFW_TRUE; + } + + if (extensionSupportedGLX("GLX_MESA_swap_control")) + { + _glfw.glx.SwapIntervalMESA = (PFNGLXSWAPINTERVALMESAPROC) + getProcAddressGLX("glXSwapIntervalMESA"); + + if (_glfw.glx.SwapIntervalMESA) + _glfw.glx.MESA_swap_control = GLFW_TRUE; + } + + if (extensionSupportedGLX("GLX_ARB_multisample")) + _glfw.glx.ARB_multisample = GLFW_TRUE; + + if (extensionSupportedGLX("GLX_ARB_framebuffer_sRGB")) + _glfw.glx.ARB_framebuffer_sRGB = GLFW_TRUE; + + if (extensionSupportedGLX("GLX_EXT_framebuffer_sRGB")) + _glfw.glx.EXT_framebuffer_sRGB = GLFW_TRUE; + + if (extensionSupportedGLX("GLX_ARB_create_context")) + { + _glfw.glx.CreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC) + getProcAddressGLX("glXCreateContextAttribsARB"); + + if (_glfw.glx.CreateContextAttribsARB) + _glfw.glx.ARB_create_context = GLFW_TRUE; + } + + if (extensionSupportedGLX("GLX_ARB_create_context_robustness")) + _glfw.glx.ARB_create_context_robustness = GLFW_TRUE; + + if (extensionSupportedGLX("GLX_ARB_create_context_profile")) + _glfw.glx.ARB_create_context_profile = GLFW_TRUE; + + if (extensionSupportedGLX("GLX_EXT_create_context_es2_profile")) + _glfw.glx.EXT_create_context_es2_profile = GLFW_TRUE; + + if (extensionSupportedGLX("GLX_ARB_create_context_no_error")) + _glfw.glx.ARB_create_context_no_error = GLFW_TRUE; + + if (extensionSupportedGLX("GLX_ARB_context_flush_control")) + _glfw.glx.ARB_context_flush_control = GLFW_TRUE; + + return GLFW_TRUE; +} + +// Terminate GLX +// +void _glfwTerminateGLX(void) +{ + // NOTE: This function must not call any X11 functions, as it is called + // after XCloseDisplay (see _glfwTerminateX11 for details) + + if (_glfw.glx.handle) + { + _glfwPlatformFreeModule(_glfw.glx.handle); + _glfw.glx.handle = NULL; + } +} + +#define SET_ATTRIB(a, v) \ +{ \ + assert(((size_t) index + 1) < sizeof(attribs) / sizeof(attribs[0])); \ + attribs[index++] = a; \ + attribs[index++] = v; \ +} + +// Create the OpenGL or OpenGL ES context +// +GLFWbool _glfwCreateContextGLX(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + int attribs[40]; + GLXFBConfig native = NULL; + GLXContext share = NULL; + + if (ctxconfig->share) + share = ctxconfig->share->context.glx.handle; + + if (!chooseGLXFBConfig(fbconfig, &native)) + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "GLX: Failed to find a suitable GLXFBConfig"); + return GLFW_FALSE; + } + + if (ctxconfig->client == GLFW_OPENGL_ES_API) + { + if (!_glfw.glx.ARB_create_context || + !_glfw.glx.ARB_create_context_profile || + !_glfw.glx.EXT_create_context_es2_profile) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "GLX: OpenGL ES requested but GLX_EXT_create_context_es2_profile is unavailable"); + return GLFW_FALSE; + } + } + + if (ctxconfig->forward) + { + if (!_glfw.glx.ARB_create_context) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "GLX: Forward compatibility requested but GLX_ARB_create_context_profile is unavailable"); + return GLFW_FALSE; + } + } + + if (ctxconfig->profile) + { + if (!_glfw.glx.ARB_create_context || + !_glfw.glx.ARB_create_context_profile) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "GLX: An OpenGL profile requested but GLX_ARB_create_context_profile is unavailable"); + return GLFW_FALSE; + } + } + + _glfwGrabErrorHandlerX11(); + + if (_glfw.glx.ARB_create_context) + { + int index = 0, mask = 0, flags = 0; + + if (ctxconfig->client == GLFW_OPENGL_API) + { + if (ctxconfig->forward) + flags |= GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB; + + if (ctxconfig->profile == GLFW_OPENGL_CORE_PROFILE) + mask |= GLX_CONTEXT_CORE_PROFILE_BIT_ARB; + else if (ctxconfig->profile == GLFW_OPENGL_COMPAT_PROFILE) + mask |= GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB; + } + else + mask |= GLX_CONTEXT_ES2_PROFILE_BIT_EXT; + + if (ctxconfig->debug) + flags |= GLX_CONTEXT_DEBUG_BIT_ARB; + + if (ctxconfig->robustness) + { + if (_glfw.glx.ARB_create_context_robustness) + { + if (ctxconfig->robustness == GLFW_NO_RESET_NOTIFICATION) + { + SET_ATTRIB(GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, + GLX_NO_RESET_NOTIFICATION_ARB); + } + else if (ctxconfig->robustness == GLFW_LOSE_CONTEXT_ON_RESET) + { + SET_ATTRIB(GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, + GLX_LOSE_CONTEXT_ON_RESET_ARB); + } + + flags |= GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB; + } + } + + if (ctxconfig->release) + { + if (_glfw.glx.ARB_context_flush_control) + { + if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_NONE) + { + SET_ATTRIB(GLX_CONTEXT_RELEASE_BEHAVIOR_ARB, + GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB); + } + else if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_FLUSH) + { + SET_ATTRIB(GLX_CONTEXT_RELEASE_BEHAVIOR_ARB, + GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB); + } + } + } + + if (ctxconfig->noerror) + { + if (_glfw.glx.ARB_create_context_no_error) + SET_ATTRIB(GLX_CONTEXT_OPENGL_NO_ERROR_ARB, GLFW_TRUE); + } + + // NOTE: Only request an explicitly versioned context when necessary, as + // explicitly requesting version 1.0 does not always return the + // highest version supported by the driver + if (ctxconfig->major != 1 || ctxconfig->minor != 0) + { + SET_ATTRIB(GLX_CONTEXT_MAJOR_VERSION_ARB, ctxconfig->major); + SET_ATTRIB(GLX_CONTEXT_MINOR_VERSION_ARB, ctxconfig->minor); + } + + if (mask) + SET_ATTRIB(GLX_CONTEXT_PROFILE_MASK_ARB, mask); + + if (flags) + SET_ATTRIB(GLX_CONTEXT_FLAGS_ARB, flags); + + SET_ATTRIB(None, None); + + window->context.glx.handle = + _glfw.glx.CreateContextAttribsARB(_glfw.x11.display, + native, + share, + True, + attribs); + + // HACK: This is a fallback for broken versions of the Mesa + // implementation of GLX_ARB_create_context_profile that fail + // default 1.0 context creation with a GLXBadProfileARB error in + // violation of the extension spec + if (!window->context.glx.handle) + { + if (_glfw.x11.errorCode == _glfw.glx.errorBase + GLXBadProfileARB && + ctxconfig->client == GLFW_OPENGL_API && + ctxconfig->profile == GLFW_OPENGL_ANY_PROFILE && + ctxconfig->forward == GLFW_FALSE) + { + window->context.glx.handle = + createLegacyContextGLX(window, native, share); + } + } + } + else + { + window->context.glx.handle = + createLegacyContextGLX(window, native, share); + } + + _glfwReleaseErrorHandlerX11(); + + if (!window->context.glx.handle) + { + _glfwInputErrorX11(GLFW_VERSION_UNAVAILABLE, "GLX: Failed to create context"); + return GLFW_FALSE; + } + + window->context.glx.window = + glXCreateWindow(_glfw.x11.display, native, window->x11.handle, NULL); + if (!window->context.glx.window) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "GLX: Failed to create window"); + return GLFW_FALSE; + } + + window->context.makeCurrent = makeContextCurrentGLX; + window->context.swapBuffers = swapBuffersGLX; + window->context.swapInterval = swapIntervalGLX; + window->context.extensionSupported = extensionSupportedGLX; + window->context.getProcAddress = getProcAddressGLX; + window->context.destroy = destroyContextGLX; + + return GLFW_TRUE; +} + +#undef SET_ATTRIB + +// Returns the Visual and depth of the chosen GLXFBConfig +// +GLFWbool _glfwChooseVisualGLX(const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig, + Visual** visual, int* depth) +{ + GLXFBConfig native; + XVisualInfo* result; + + if (!chooseGLXFBConfig(fbconfig, &native)) + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "GLX: Failed to find a suitable GLXFBConfig"); + return GLFW_FALSE; + } + + result = glXGetVisualFromFBConfig(_glfw.x11.display, native); + if (!result) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "GLX: Failed to retrieve Visual for GLXFBConfig"); + return GLFW_FALSE; + } + + *visual = result->visual; + *depth = result->depth; + + XFree(result); + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (_glfw.platform.platformID != GLFW_PLATFORM_X11) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "GLX: Platform not initialized"); + return NULL; + } + + if (window->context.source != GLFW_NATIVE_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return NULL; + } + + return window->context.glx.handle; +} + +GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(None); + + if (_glfw.platform.platformID != GLFW_PLATFORM_X11) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "GLX: Platform not initialized"); + return None; + } + + if (window->context.source != GLFW_NATIVE_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return None; + } + + return window->context.glx.window; +} + +#endif // _GLFW_X11 + diff --git a/lib/glfw/src/init.c b/lib/glfw/src/init.c new file mode 100644 index 0000000..d07a492 --- /dev/null +++ b/lib/glfw/src/init.c @@ -0,0 +1,545 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2018 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#include +#include +#include +#include +#include + + +// NOTE: The global variables below comprise all mutable global data in GLFW +// Any other mutable global variable is a bug + +// This contains all mutable state shared between compilation units of GLFW +// +_GLFWlibrary _glfw = { GLFW_FALSE }; + +// These are outside of _glfw so they can be used before initialization and +// after termination without special handling when _glfw is cleared to zero +// +static _GLFWerror _glfwMainThreadError; +static GLFWerrorfun _glfwErrorCallback; +static GLFWallocator _glfwInitAllocator; +static _GLFWinitconfig _glfwInitHints = +{ + GLFW_TRUE, // hat buttons + GLFW_ANGLE_PLATFORM_TYPE_NONE, // ANGLE backend + GLFW_ANY_PLATFORM, // preferred platform + NULL, // vkGetInstanceProcAddr function + { + GLFW_TRUE, // macOS menu bar + GLFW_TRUE // macOS bundle chdir + }, + { + GLFW_TRUE, // X11 XCB Vulkan surface + }, +}; + +// The allocation function used when no custom allocator is set +// +static void* defaultAllocate(size_t size, void* user) +{ + return malloc(size); +} + +// The deallocation function used when no custom allocator is set +// +static void defaultDeallocate(void* block, void* user) +{ + free(block); +} + +// The reallocation function used when no custom allocator is set +// +static void* defaultReallocate(void* block, size_t size, void* user) +{ + return realloc(block, size); +} + +// Terminate the library +// +static void terminate(void) +{ + int i; + + memset(&_glfw.callbacks, 0, sizeof(_glfw.callbacks)); + + while (_glfw.windowListHead) + glfwDestroyWindow((GLFWwindow*) _glfw.windowListHead); + + while (_glfw.cursorListHead) + glfwDestroyCursor((GLFWcursor*) _glfw.cursorListHead); + + for (i = 0; i < _glfw.monitorCount; i++) + { + _GLFWmonitor* monitor = _glfw.monitors[i]; + if (monitor->originalRamp.size) + _glfw.platform.setGammaRamp(monitor, &monitor->originalRamp); + _glfwFreeMonitor(monitor); + } + + _glfw_free(_glfw.monitors); + _glfw.monitors = NULL; + _glfw.monitorCount = 0; + + _glfw_free(_glfw.mappings); + _glfw.mappings = NULL; + _glfw.mappingCount = 0; + + _glfwTerminateVulkan(); + _glfw.platform.terminateJoysticks(); + _glfw.platform.terminate(); + + _glfw.initialized = GLFW_FALSE; + + while (_glfw.errorListHead) + { + _GLFWerror* error = _glfw.errorListHead; + _glfw.errorListHead = error->next; + _glfw_free(error); + } + + _glfwPlatformDestroyTls(&_glfw.contextSlot); + _glfwPlatformDestroyTls(&_glfw.errorSlot); + _glfwPlatformDestroyMutex(&_glfw.errorLock); + + memset(&_glfw, 0, sizeof(_glfw)); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Encode a Unicode code point to a UTF-8 stream +// Based on cutef8 by Jeff Bezanson (Public Domain) +// +size_t _glfwEncodeUTF8(char* s, uint32_t codepoint) +{ + size_t count = 0; + + if (codepoint < 0x80) + s[count++] = (char) codepoint; + else if (codepoint < 0x800) + { + s[count++] = (codepoint >> 6) | 0xc0; + s[count++] = (codepoint & 0x3f) | 0x80; + } + else if (codepoint < 0x10000) + { + s[count++] = (codepoint >> 12) | 0xe0; + s[count++] = ((codepoint >> 6) & 0x3f) | 0x80; + s[count++] = (codepoint & 0x3f) | 0x80; + } + else if (codepoint < 0x110000) + { + s[count++] = (codepoint >> 18) | 0xf0; + s[count++] = ((codepoint >> 12) & 0x3f) | 0x80; + s[count++] = ((codepoint >> 6) & 0x3f) | 0x80; + s[count++] = (codepoint & 0x3f) | 0x80; + } + + return count; +} + +// Splits and translates a text/uri-list into separate file paths +// NOTE: This function destroys the provided string +// +char** _glfwParseUriList(char* text, int* count) +{ + const char* prefix = "file://"; + char** paths = NULL; + char* line; + + *count = 0; + + while ((line = strtok(text, "\r\n"))) + { + char* path; + + text = NULL; + + if (line[0] == '#') + continue; + + if (strncmp(line, prefix, strlen(prefix)) == 0) + { + line += strlen(prefix); + // TODO: Validate hostname + while (*line != '/') + line++; + } + + (*count)++; + + path = _glfw_calloc(strlen(line) + 1, 1); + paths = _glfw_realloc(paths, *count * sizeof(char*)); + paths[*count - 1] = path; + + while (*line) + { + if (line[0] == '%' && line[1] && line[2]) + { + const char digits[3] = { line[1], line[2], '\0' }; + *path = (char) strtol(digits, NULL, 16); + line += 2; + } + else + *path = *line; + + path++; + line++; + } + } + + return paths; +} + +char* _glfw_strdup(const char* source) +{ + const size_t length = strlen(source); + char* result = _glfw_calloc(length + 1, 1); + strcpy(result, source); + return result; +} + +int _glfw_min(int a, int b) +{ + return a < b ? a : b; +} + +int _glfw_max(int a, int b) +{ + return a > b ? a : b; +} + +float _glfw_fminf(float a, float b) +{ + if (a != a) + return b; + else if (b != b) + return a; + else if (a < b) + return a; + else + return b; +} + +float _glfw_fmaxf(float a, float b) +{ + if (a != a) + return b; + else if (b != b) + return a; + else if (a > b) + return a; + else + return b; +} + +void* _glfw_calloc(size_t count, size_t size) +{ + if (count && size) + { + void* block; + + if (count > SIZE_MAX / size) + { + _glfwInputError(GLFW_INVALID_VALUE, "Allocation size overflow"); + return NULL; + } + + block = _glfw.allocator.allocate(count * size, _glfw.allocator.user); + if (block) + return memset(block, 0, count * size); + else + { + _glfwInputError(GLFW_OUT_OF_MEMORY, NULL); + return NULL; + } + } + else + return NULL; +} + +void* _glfw_realloc(void* block, size_t size) +{ + if (block && size) + { + void* resized = _glfw.allocator.reallocate(block, size, _glfw.allocator.user); + if (resized) + return resized; + else + { + _glfwInputError(GLFW_OUT_OF_MEMORY, NULL); + return NULL; + } + } + else if (block) + { + _glfw_free(block); + return NULL; + } + else + return _glfw_calloc(1, size); +} + +void _glfw_free(void* block) +{ + if (block) + _glfw.allocator.deallocate(block, _glfw.allocator.user); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW event API ////// +////////////////////////////////////////////////////////////////////////// + +// Notifies shared code of an error +// +void _glfwInputError(int code, const char* format, ...) +{ + _GLFWerror* error; + char description[_GLFW_MESSAGE_SIZE]; + + if (format) + { + va_list vl; + + va_start(vl, format); + vsnprintf(description, sizeof(description), format, vl); + va_end(vl); + + description[sizeof(description) - 1] = '\0'; + } + else + { + if (code == GLFW_NOT_INITIALIZED) + strcpy(description, "The GLFW library is not initialized"); + else if (code == GLFW_NO_CURRENT_CONTEXT) + strcpy(description, "There is no current context"); + else if (code == GLFW_INVALID_ENUM) + strcpy(description, "Invalid argument for enum parameter"); + else if (code == GLFW_INVALID_VALUE) + strcpy(description, "Invalid value for parameter"); + else if (code == GLFW_OUT_OF_MEMORY) + strcpy(description, "Out of memory"); + else if (code == GLFW_API_UNAVAILABLE) + strcpy(description, "The requested API is unavailable"); + else if (code == GLFW_VERSION_UNAVAILABLE) + strcpy(description, "The requested API version is unavailable"); + else if (code == GLFW_PLATFORM_ERROR) + strcpy(description, "A platform-specific error occurred"); + else if (code == GLFW_FORMAT_UNAVAILABLE) + strcpy(description, "The requested format is unavailable"); + else if (code == GLFW_NO_WINDOW_CONTEXT) + strcpy(description, "The specified window has no context"); + else if (code == GLFW_CURSOR_UNAVAILABLE) + strcpy(description, "The specified cursor shape is unavailable"); + else if (code == GLFW_FEATURE_UNAVAILABLE) + strcpy(description, "The requested feature cannot be implemented for this platform"); + else if (code == GLFW_FEATURE_UNIMPLEMENTED) + strcpy(description, "The requested feature has not yet been implemented for this platform"); + else if (code == GLFW_PLATFORM_UNAVAILABLE) + strcpy(description, "The requested platform is unavailable"); + else + strcpy(description, "ERROR: UNKNOWN GLFW ERROR"); + } + + if (_glfw.initialized) + { + error = _glfwPlatformGetTls(&_glfw.errorSlot); + if (!error) + { + error = _glfw_calloc(1, sizeof(_GLFWerror)); + _glfwPlatformSetTls(&_glfw.errorSlot, error); + _glfwPlatformLockMutex(&_glfw.errorLock); + error->next = _glfw.errorListHead; + _glfw.errorListHead = error; + _glfwPlatformUnlockMutex(&_glfw.errorLock); + } + } + else + error = &_glfwMainThreadError; + + error->code = code; + strcpy(error->description, description); + + if (_glfwErrorCallback) + _glfwErrorCallback(code, description); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW public API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI int glfwInit(void) +{ + if (_glfw.initialized) + return GLFW_TRUE; + + memset(&_glfw, 0, sizeof(_glfw)); + _glfw.hints.init = _glfwInitHints; + + _glfw.allocator = _glfwInitAllocator; + if (!_glfw.allocator.allocate) + { + _glfw.allocator.allocate = defaultAllocate; + _glfw.allocator.reallocate = defaultReallocate; + _glfw.allocator.deallocate = defaultDeallocate; + } + + if (!_glfwSelectPlatform(_glfw.hints.init.platformID, &_glfw.platform)) + return GLFW_FALSE; + + if (!_glfw.platform.init()) + { + terminate(); + return GLFW_FALSE; + } + + if (!_glfwPlatformCreateMutex(&_glfw.errorLock) || + !_glfwPlatformCreateTls(&_glfw.errorSlot) || + !_glfwPlatformCreateTls(&_glfw.contextSlot)) + { + terminate(); + return GLFW_FALSE; + } + + _glfwPlatformSetTls(&_glfw.errorSlot, &_glfwMainThreadError); + + _glfwInitGamepadMappings(); + + _glfwPlatformInitTimer(); + _glfw.timer.offset = _glfwPlatformGetTimerValue(); + + _glfw.initialized = GLFW_TRUE; + + glfwDefaultWindowHints(); + return GLFW_TRUE; +} + +GLFWAPI void glfwTerminate(void) +{ + if (!_glfw.initialized) + return; + + terminate(); +} + +GLFWAPI void glfwInitHint(int hint, int value) +{ + switch (hint) + { + case GLFW_JOYSTICK_HAT_BUTTONS: + _glfwInitHints.hatButtons = value; + return; + case GLFW_ANGLE_PLATFORM_TYPE: + _glfwInitHints.angleType = value; + return; + case GLFW_PLATFORM: + _glfwInitHints.platformID = value; + return; + case GLFW_COCOA_CHDIR_RESOURCES: + _glfwInitHints.ns.chdir = value; + return; + case GLFW_COCOA_MENUBAR: + _glfwInitHints.ns.menubar = value; + return; + case GLFW_X11_XCB_VULKAN_SURFACE: + _glfwInitHints.x11.xcbVulkanSurface = value; + return; + } + + _glfwInputError(GLFW_INVALID_ENUM, + "Invalid init hint 0x%08X", hint); +} + +GLFWAPI void glfwInitAllocator(const GLFWallocator* allocator) +{ + if (allocator) + { + if (allocator->allocate && allocator->reallocate && allocator->deallocate) + _glfwInitAllocator = *allocator; + else + _glfwInputError(GLFW_INVALID_VALUE, "Missing function in allocator"); + } + else + memset(&_glfwInitAllocator, 0, sizeof(GLFWallocator)); +} + +GLFWAPI void glfwInitVulkanLoader(PFN_vkGetInstanceProcAddr loader) +{ + _glfwInitHints.vulkanLoader = loader; +} + +GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev) +{ + if (major != NULL) + *major = GLFW_VERSION_MAJOR; + if (minor != NULL) + *minor = GLFW_VERSION_MINOR; + if (rev != NULL) + *rev = GLFW_VERSION_REVISION; +} + +GLFWAPI int glfwGetError(const char** description) +{ + _GLFWerror* error; + int code = GLFW_NO_ERROR; + + if (description) + *description = NULL; + + if (_glfw.initialized) + error = _glfwPlatformGetTls(&_glfw.errorSlot); + else + error = &_glfwMainThreadError; + + if (error) + { + code = error->code; + error->code = GLFW_NO_ERROR; + if (description && code) + *description = error->description; + } + + return code; +} + +GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun) +{ + _GLFW_SWAP(GLFWerrorfun, _glfwErrorCallback, cbfun); + return cbfun; +} + diff --git a/lib/glfw/src/input.c b/lib/glfw/src/input.c new file mode 100644 index 0000000..36128e1 --- /dev/null +++ b/lib/glfw/src/input.c @@ -0,0 +1,1500 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" +#include "mappings.h" + +#include +#include +#include +#include +#include + +// Internal key state used for sticky keys +#define _GLFW_STICK 3 + +// Internal constants for gamepad mapping source types +#define _GLFW_JOYSTICK_AXIS 1 +#define _GLFW_JOYSTICK_BUTTON 2 +#define _GLFW_JOYSTICK_HATBIT 3 + +#define GLFW_MOD_MASK (GLFW_MOD_SHIFT | \ + GLFW_MOD_CONTROL | \ + GLFW_MOD_ALT | \ + GLFW_MOD_SUPER | \ + GLFW_MOD_CAPS_LOCK | \ + GLFW_MOD_NUM_LOCK) + +// Initializes the platform joystick API if it has not been already +// +static GLFWbool initJoysticks(void) +{ + if (!_glfw.joysticksInitialized) + { + if (!_glfw.platform.initJoysticks()) + { + _glfw.platform.terminateJoysticks(); + return GLFW_FALSE; + } + } + + return _glfw.joysticksInitialized = GLFW_TRUE; +} + +// Finds a mapping based on joystick GUID +// +static _GLFWmapping* findMapping(const char* guid) +{ + int i; + + for (i = 0; i < _glfw.mappingCount; i++) + { + if (strcmp(_glfw.mappings[i].guid, guid) == 0) + return _glfw.mappings + i; + } + + return NULL; +} + +// Checks whether a gamepad mapping element is present in the hardware +// +static GLFWbool isValidElementForJoystick(const _GLFWmapelement* e, + const _GLFWjoystick* js) +{ + if (e->type == _GLFW_JOYSTICK_HATBIT && (e->index >> 4) >= js->hatCount) + return GLFW_FALSE; + else if (e->type == _GLFW_JOYSTICK_BUTTON && e->index >= js->buttonCount) + return GLFW_FALSE; + else if (e->type == _GLFW_JOYSTICK_AXIS && e->index >= js->axisCount) + return GLFW_FALSE; + + return GLFW_TRUE; +} + +// Finds a mapping based on joystick GUID and verifies element indices +// +static _GLFWmapping* findValidMapping(const _GLFWjoystick* js) +{ + _GLFWmapping* mapping = findMapping(js->guid); + if (mapping) + { + int i; + + for (i = 0; i <= GLFW_GAMEPAD_BUTTON_LAST; i++) + { + if (!isValidElementForJoystick(mapping->buttons + i, js)) + return NULL; + } + + for (i = 0; i <= GLFW_GAMEPAD_AXIS_LAST; i++) + { + if (!isValidElementForJoystick(mapping->axes + i, js)) + return NULL; + } + } + + return mapping; +} + +// Parses an SDL_GameControllerDB line and adds it to the mapping list +// +static GLFWbool parseMapping(_GLFWmapping* mapping, const char* string) +{ + const char* c = string; + size_t i, length; + struct + { + const char* name; + _GLFWmapelement* element; + } fields[] = + { + { "platform", NULL }, + { "a", mapping->buttons + GLFW_GAMEPAD_BUTTON_A }, + { "b", mapping->buttons + GLFW_GAMEPAD_BUTTON_B }, + { "x", mapping->buttons + GLFW_GAMEPAD_BUTTON_X }, + { "y", mapping->buttons + GLFW_GAMEPAD_BUTTON_Y }, + { "back", mapping->buttons + GLFW_GAMEPAD_BUTTON_BACK }, + { "start", mapping->buttons + GLFW_GAMEPAD_BUTTON_START }, + { "guide", mapping->buttons + GLFW_GAMEPAD_BUTTON_GUIDE }, + { "leftshoulder", mapping->buttons + GLFW_GAMEPAD_BUTTON_LEFT_BUMPER }, + { "rightshoulder", mapping->buttons + GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER }, + { "leftstick", mapping->buttons + GLFW_GAMEPAD_BUTTON_LEFT_THUMB }, + { "rightstick", mapping->buttons + GLFW_GAMEPAD_BUTTON_RIGHT_THUMB }, + { "dpup", mapping->buttons + GLFW_GAMEPAD_BUTTON_DPAD_UP }, + { "dpright", mapping->buttons + GLFW_GAMEPAD_BUTTON_DPAD_RIGHT }, + { "dpdown", mapping->buttons + GLFW_GAMEPAD_BUTTON_DPAD_DOWN }, + { "dpleft", mapping->buttons + GLFW_GAMEPAD_BUTTON_DPAD_LEFT }, + { "lefttrigger", mapping->axes + GLFW_GAMEPAD_AXIS_LEFT_TRIGGER }, + { "righttrigger", mapping->axes + GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER }, + { "leftx", mapping->axes + GLFW_GAMEPAD_AXIS_LEFT_X }, + { "lefty", mapping->axes + GLFW_GAMEPAD_AXIS_LEFT_Y }, + { "rightx", mapping->axes + GLFW_GAMEPAD_AXIS_RIGHT_X }, + { "righty", mapping->axes + GLFW_GAMEPAD_AXIS_RIGHT_Y } + }; + + length = strcspn(c, ","); + if (length != 32 || c[length] != ',') + { + _glfwInputError(GLFW_INVALID_VALUE, NULL); + return GLFW_FALSE; + } + + memcpy(mapping->guid, c, length); + c += length + 1; + + length = strcspn(c, ","); + if (length >= sizeof(mapping->name) || c[length] != ',') + { + _glfwInputError(GLFW_INVALID_VALUE, NULL); + return GLFW_FALSE; + } + + memcpy(mapping->name, c, length); + c += length + 1; + + while (*c) + { + // TODO: Implement output modifiers + if (*c == '+' || *c == '-') + return GLFW_FALSE; + + for (i = 0; i < sizeof(fields) / sizeof(fields[0]); i++) + { + length = strlen(fields[i].name); + if (strncmp(c, fields[i].name, length) != 0 || c[length] != ':') + continue; + + c += length + 1; + + if (fields[i].element) + { + _GLFWmapelement* e = fields[i].element; + int8_t minimum = -1; + int8_t maximum = 1; + + if (*c == '+') + { + minimum = 0; + c += 1; + } + else if (*c == '-') + { + maximum = 0; + c += 1; + } + + if (*c == 'a') + e->type = _GLFW_JOYSTICK_AXIS; + else if (*c == 'b') + e->type = _GLFW_JOYSTICK_BUTTON; + else if (*c == 'h') + e->type = _GLFW_JOYSTICK_HATBIT; + else + break; + + if (e->type == _GLFW_JOYSTICK_HATBIT) + { + const unsigned long hat = strtoul(c + 1, (char**) &c, 10); + const unsigned long bit = strtoul(c + 1, (char**) &c, 10); + e->index = (uint8_t) ((hat << 4) | bit); + } + else + e->index = (uint8_t) strtoul(c + 1, (char**) &c, 10); + + if (e->type == _GLFW_JOYSTICK_AXIS) + { + e->axisScale = 2 / (maximum - minimum); + e->axisOffset = -(maximum + minimum); + + if (*c == '~') + { + e->axisScale = -e->axisScale; + e->axisOffset = -e->axisOffset; + } + } + } + else + { + const char* name = _glfw.platform.getMappingName(); + length = strlen(name); + if (strncmp(c, name, length) != 0) + return GLFW_FALSE; + } + + break; + } + + c += strcspn(c, ","); + c += strspn(c, ","); + } + + for (i = 0; i < 32; i++) + { + if (mapping->guid[i] >= 'A' && mapping->guid[i] <= 'F') + mapping->guid[i] += 'a' - 'A'; + } + + _glfw.platform.updateGamepadGUID(mapping->guid); + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW event API ////// +////////////////////////////////////////////////////////////////////////// + +// Notifies shared code of a physical key event +// +void _glfwInputKey(_GLFWwindow* window, int key, int scancode, int action, int mods) +{ + assert(window != NULL); + assert(key >= 0 || key == GLFW_KEY_UNKNOWN); + assert(key <= GLFW_KEY_LAST); + assert(action == GLFW_PRESS || action == GLFW_RELEASE); + assert(mods == (mods & GLFW_MOD_MASK)); + + if (key >= 0 && key <= GLFW_KEY_LAST) + { + GLFWbool repeated = GLFW_FALSE; + + if (action == GLFW_RELEASE && window->keys[key] == GLFW_RELEASE) + return; + + if (action == GLFW_PRESS && window->keys[key] == GLFW_PRESS) + repeated = GLFW_TRUE; + + if (action == GLFW_RELEASE && window->stickyKeys) + window->keys[key] = _GLFW_STICK; + else + window->keys[key] = (char) action; + + if (repeated) + action = GLFW_REPEAT; + } + + if (!window->lockKeyMods) + mods &= ~(GLFW_MOD_CAPS_LOCK | GLFW_MOD_NUM_LOCK); + + if (window->callbacks.key) + window->callbacks.key((GLFWwindow*) window, key, scancode, action, mods); +} + +// Notifies shared code of a Unicode codepoint input event +// The 'plain' parameter determines whether to emit a regular character event +// +void _glfwInputChar(_GLFWwindow* window, uint32_t codepoint, int mods, GLFWbool plain) +{ + assert(window != NULL); + assert(mods == (mods & GLFW_MOD_MASK)); + assert(plain == GLFW_TRUE || plain == GLFW_FALSE); + + if (codepoint < 32 || (codepoint > 126 && codepoint < 160)) + return; + + if (!window->lockKeyMods) + mods &= ~(GLFW_MOD_CAPS_LOCK | GLFW_MOD_NUM_LOCK); + + if (window->callbacks.charmods) + window->callbacks.charmods((GLFWwindow*) window, codepoint, mods); + + if (plain) + { + if (window->callbacks.character) + window->callbacks.character((GLFWwindow*) window, codepoint); + } +} + +// Notifies shared code of a scroll event +// +void _glfwInputScroll(_GLFWwindow* window, double xoffset, double yoffset) +{ + assert(window != NULL); + assert(xoffset > -FLT_MAX); + assert(xoffset < FLT_MAX); + assert(yoffset > -FLT_MAX); + assert(yoffset < FLT_MAX); + + if (window->callbacks.scroll) + window->callbacks.scroll((GLFWwindow*) window, xoffset, yoffset); +} + +// Notifies shared code of a mouse button click event +// +void _glfwInputMouseClick(_GLFWwindow* window, int button, int action, int mods) +{ + assert(window != NULL); + assert(button >= 0); + assert(button <= GLFW_MOUSE_BUTTON_LAST); + assert(action == GLFW_PRESS || action == GLFW_RELEASE); + assert(mods == (mods & GLFW_MOD_MASK)); + + if (button < 0 || button > GLFW_MOUSE_BUTTON_LAST) + return; + + if (!window->lockKeyMods) + mods &= ~(GLFW_MOD_CAPS_LOCK | GLFW_MOD_NUM_LOCK); + + if (action == GLFW_RELEASE && window->stickyMouseButtons) + window->mouseButtons[button] = _GLFW_STICK; + else + window->mouseButtons[button] = (char) action; + + if (window->callbacks.mouseButton) + window->callbacks.mouseButton((GLFWwindow*) window, button, action, mods); +} + +// Notifies shared code of a cursor motion event +// The position is specified in content area relative screen coordinates +// +void _glfwInputCursorPos(_GLFWwindow* window, double xpos, double ypos) +{ + assert(window != NULL); + assert(xpos > -FLT_MAX); + assert(xpos < FLT_MAX); + assert(ypos > -FLT_MAX); + assert(ypos < FLT_MAX); + + if (window->virtualCursorPosX == xpos && window->virtualCursorPosY == ypos) + return; + + window->virtualCursorPosX = xpos; + window->virtualCursorPosY = ypos; + + if (window->callbacks.cursorPos) + window->callbacks.cursorPos((GLFWwindow*) window, xpos, ypos); +} + +// Notifies shared code of a cursor enter/leave event +// +void _glfwInputCursorEnter(_GLFWwindow* window, GLFWbool entered) +{ + assert(window != NULL); + assert(entered == GLFW_TRUE || entered == GLFW_FALSE); + + if (window->callbacks.cursorEnter) + window->callbacks.cursorEnter((GLFWwindow*) window, entered); +} + +// Notifies shared code of files or directories dropped on a window +// +void _glfwInputDrop(_GLFWwindow* window, int count, const char** paths) +{ + assert(window != NULL); + assert(count > 0); + assert(paths != NULL); + + if (window->callbacks.drop) + window->callbacks.drop((GLFWwindow*) window, count, paths); +} + +// Notifies shared code of a joystick connection or disconnection +// +void _glfwInputJoystick(_GLFWjoystick* js, int event) +{ + assert(js != NULL); + assert(event == GLFW_CONNECTED || event == GLFW_DISCONNECTED); + + if (event == GLFW_CONNECTED) + js->connected = GLFW_TRUE; + else if (event == GLFW_DISCONNECTED) + js->connected = GLFW_FALSE; + + if (_glfw.callbacks.joystick) + _glfw.callbacks.joystick((int) (js - _glfw.joysticks), event); +} + +// Notifies shared code of the new value of a joystick axis +// +void _glfwInputJoystickAxis(_GLFWjoystick* js, int axis, float value) +{ + assert(js != NULL); + assert(axis >= 0); + assert(axis < js->axisCount); + + js->axes[axis] = value; +} + +// Notifies shared code of the new value of a joystick button +// +void _glfwInputJoystickButton(_GLFWjoystick* js, int button, char value) +{ + assert(js != NULL); + assert(button >= 0); + assert(button < js->buttonCount); + assert(value == GLFW_PRESS || value == GLFW_RELEASE); + + js->buttons[button] = value; +} + +// Notifies shared code of the new value of a joystick hat +// +void _glfwInputJoystickHat(_GLFWjoystick* js, int hat, char value) +{ + int base; + + assert(js != NULL); + assert(hat >= 0); + assert(hat < js->hatCount); + + // Valid hat values only use the least significant nibble and have at most two bits + // set, which can be considered adjacent plus an arbitrary rotation within the nibble + assert((value & 0xf0) == 0); + assert((value & ((value << 2) | (value >> 2))) == 0); + + base = js->buttonCount + hat * 4; + + js->buttons[base + 0] = (value & 0x01) ? GLFW_PRESS : GLFW_RELEASE; + js->buttons[base + 1] = (value & 0x02) ? GLFW_PRESS : GLFW_RELEASE; + js->buttons[base + 2] = (value & 0x04) ? GLFW_PRESS : GLFW_RELEASE; + js->buttons[base + 3] = (value & 0x08) ? GLFW_PRESS : GLFW_RELEASE; + + js->hats[hat] = value; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Adds the built-in set of gamepad mappings +// +void _glfwInitGamepadMappings(void) +{ + size_t i; + const size_t count = sizeof(_glfwDefaultMappings) / sizeof(char*); + _glfw.mappings = _glfw_calloc(count, sizeof(_GLFWmapping)); + + for (i = 0; i < count; i++) + { + if (parseMapping(&_glfw.mappings[_glfw.mappingCount], _glfwDefaultMappings[i])) + _glfw.mappingCount++; + } +} + +// Returns an available joystick object with arrays and name allocated +// +_GLFWjoystick* _glfwAllocJoystick(const char* name, + const char* guid, + int axisCount, + int buttonCount, + int hatCount) +{ + int jid; + _GLFWjoystick* js; + + for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + if (!_glfw.joysticks[jid].allocated) + break; + } + + if (jid > GLFW_JOYSTICK_LAST) + return NULL; + + js = _glfw.joysticks + jid; + js->allocated = GLFW_TRUE; + js->axes = _glfw_calloc(axisCount, sizeof(float)); + js->buttons = _glfw_calloc(buttonCount + (size_t) hatCount * 4, 1); + js->hats = _glfw_calloc(hatCount, 1); + js->axisCount = axisCount; + js->buttonCount = buttonCount; + js->hatCount = hatCount; + + strncpy(js->name, name, sizeof(js->name) - 1); + strncpy(js->guid, guid, sizeof(js->guid) - 1); + js->mapping = findValidMapping(js); + + return js; +} + +// Frees arrays and name and flags the joystick object as unused +// +void _glfwFreeJoystick(_GLFWjoystick* js) +{ + _glfw_free(js->axes); + _glfw_free(js->buttons); + _glfw_free(js->hats); + memset(js, 0, sizeof(_GLFWjoystick)); +} + +// Center the cursor in the content area of the specified window +// +void _glfwCenterCursorInContentArea(_GLFWwindow* window) +{ + int width, height; + + _glfw.platform.getWindowSize(window, &width, &height); + _glfw.platform.setCursorPos(window, width / 2.0, height / 2.0); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW public API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI int glfwGetInputMode(GLFWwindow* handle, int mode) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(0); + + switch (mode) + { + case GLFW_CURSOR: + return window->cursorMode; + case GLFW_STICKY_KEYS: + return window->stickyKeys; + case GLFW_STICKY_MOUSE_BUTTONS: + return window->stickyMouseButtons; + case GLFW_LOCK_KEY_MODS: + return window->lockKeyMods; + case GLFW_RAW_MOUSE_MOTION: + return window->rawMouseMotion; + } + + _glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode); + return 0; +} + +GLFWAPI void glfwSetInputMode(GLFWwindow* handle, int mode, int value) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + switch (mode) + { + case GLFW_CURSOR: + { + if (value != GLFW_CURSOR_NORMAL && + value != GLFW_CURSOR_HIDDEN && + value != GLFW_CURSOR_DISABLED && + value != GLFW_CURSOR_CAPTURED) + { + _glfwInputError(GLFW_INVALID_ENUM, + "Invalid cursor mode 0x%08X", + value); + return; + } + + if (window->cursorMode == value) + return; + + window->cursorMode = value; + + _glfw.platform.getCursorPos(window, + &window->virtualCursorPosX, + &window->virtualCursorPosY); + _glfw.platform.setCursorMode(window, value); + return; + } + + case GLFW_STICKY_KEYS: + { + value = value ? GLFW_TRUE : GLFW_FALSE; + if (window->stickyKeys == value) + return; + + if (!value) + { + int i; + + // Release all sticky keys + for (i = 0; i <= GLFW_KEY_LAST; i++) + { + if (window->keys[i] == _GLFW_STICK) + window->keys[i] = GLFW_RELEASE; + } + } + + window->stickyKeys = value; + return; + } + + case GLFW_STICKY_MOUSE_BUTTONS: + { + value = value ? GLFW_TRUE : GLFW_FALSE; + if (window->stickyMouseButtons == value) + return; + + if (!value) + { + int i; + + // Release all sticky mouse buttons + for (i = 0; i <= GLFW_MOUSE_BUTTON_LAST; i++) + { + if (window->mouseButtons[i] == _GLFW_STICK) + window->mouseButtons[i] = GLFW_RELEASE; + } + } + + window->stickyMouseButtons = value; + return; + } + + case GLFW_LOCK_KEY_MODS: + { + window->lockKeyMods = value ? GLFW_TRUE : GLFW_FALSE; + return; + } + + case GLFW_RAW_MOUSE_MOTION: + { + if (!_glfw.platform.rawMouseMotionSupported()) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Raw mouse motion is not supported on this system"); + return; + } + + value = value ? GLFW_TRUE : GLFW_FALSE; + if (window->rawMouseMotion == value) + return; + + window->rawMouseMotion = value; + _glfw.platform.setRawMouseMotion(window, value); + return; + } + } + + _glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode); +} + +GLFWAPI int glfwRawMouseMotionSupported(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + return _glfw.platform.rawMouseMotionSupported(); +} + +GLFWAPI const char* glfwGetKeyName(int key, int scancode) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (key != GLFW_KEY_UNKNOWN) + { + if (key != GLFW_KEY_KP_EQUAL && + (key < GLFW_KEY_KP_0 || key > GLFW_KEY_KP_ADD) && + (key < GLFW_KEY_APOSTROPHE || key > GLFW_KEY_WORLD_2)) + { + return NULL; + } + + scancode = _glfw.platform.getKeyScancode(key); + } + + return _glfw.platform.getScancodeName(scancode); +} + +GLFWAPI int glfwGetKeyScancode(int key) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(-1); + + if (key < GLFW_KEY_SPACE || key > GLFW_KEY_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid key %i", key); + return GLFW_RELEASE; + } + + return _glfw.platform.getKeyScancode(key); +} + +GLFWAPI int glfwGetKey(GLFWwindow* handle, int key) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_RELEASE); + + if (key < GLFW_KEY_SPACE || key > GLFW_KEY_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid key %i", key); + return GLFW_RELEASE; + } + + if (window->keys[key] == _GLFW_STICK) + { + // Sticky mode: release key now + window->keys[key] = GLFW_RELEASE; + return GLFW_PRESS; + } + + return (int) window->keys[key]; +} + +GLFWAPI int glfwGetMouseButton(GLFWwindow* handle, int button) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_RELEASE); + + if (button < GLFW_MOUSE_BUTTON_1 || button > GLFW_MOUSE_BUTTON_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid mouse button %i", button); + return GLFW_RELEASE; + } + + if (window->mouseButtons[button] == _GLFW_STICK) + { + // Sticky mode: release mouse button now + window->mouseButtons[button] = GLFW_RELEASE; + return GLFW_PRESS; + } + + return (int) window->mouseButtons[button]; +} + +GLFWAPI void glfwGetCursorPos(GLFWwindow* handle, double* xpos, double* ypos) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + if (xpos) + *xpos = 0; + if (ypos) + *ypos = 0; + + _GLFW_REQUIRE_INIT(); + + if (window->cursorMode == GLFW_CURSOR_DISABLED) + { + if (xpos) + *xpos = window->virtualCursorPosX; + if (ypos) + *ypos = window->virtualCursorPosY; + } + else + _glfw.platform.getCursorPos(window, xpos, ypos); +} + +GLFWAPI void glfwSetCursorPos(GLFWwindow* handle, double xpos, double ypos) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + if (xpos != xpos || xpos < -DBL_MAX || xpos > DBL_MAX || + ypos != ypos || ypos < -DBL_MAX || ypos > DBL_MAX) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid cursor position %f %f", + xpos, ypos); + return; + } + + if (!_glfw.platform.windowFocused(window)) + return; + + if (window->cursorMode == GLFW_CURSOR_DISABLED) + { + // Only update the accumulated position if the cursor is disabled + window->virtualCursorPosX = xpos; + window->virtualCursorPosY = ypos; + } + else + { + // Update system cursor position + _glfw.platform.setCursorPos(window, xpos, ypos); + } +} + +GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot) +{ + _GLFWcursor* cursor; + + assert(image != NULL); + assert(image->pixels != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (image->width <= 0 || image->height <= 0) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid image dimensions for cursor"); + return NULL; + } + + cursor = _glfw_calloc(1, sizeof(_GLFWcursor)); + cursor->next = _glfw.cursorListHead; + _glfw.cursorListHead = cursor; + + if (!_glfw.platform.createCursor(cursor, image, xhot, yhot)) + { + glfwDestroyCursor((GLFWcursor*) cursor); + return NULL; + } + + return (GLFWcursor*) cursor; +} + +GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape) +{ + _GLFWcursor* cursor; + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (shape != GLFW_ARROW_CURSOR && + shape != GLFW_IBEAM_CURSOR && + shape != GLFW_CROSSHAIR_CURSOR && + shape != GLFW_POINTING_HAND_CURSOR && + shape != GLFW_RESIZE_EW_CURSOR && + shape != GLFW_RESIZE_NS_CURSOR && + shape != GLFW_RESIZE_NWSE_CURSOR && + shape != GLFW_RESIZE_NESW_CURSOR && + shape != GLFW_RESIZE_ALL_CURSOR && + shape != GLFW_NOT_ALLOWED_CURSOR) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid standard cursor 0x%08X", shape); + return NULL; + } + + cursor = _glfw_calloc(1, sizeof(_GLFWcursor)); + cursor->next = _glfw.cursorListHead; + _glfw.cursorListHead = cursor; + + if (!_glfw.platform.createStandardCursor(cursor, shape)) + { + glfwDestroyCursor((GLFWcursor*) cursor); + return NULL; + } + + return (GLFWcursor*) cursor; +} + +GLFWAPI void glfwDestroyCursor(GLFWcursor* handle) +{ + _GLFWcursor* cursor = (_GLFWcursor*) handle; + + _GLFW_REQUIRE_INIT(); + + if (cursor == NULL) + return; + + // Make sure the cursor is not being used by any window + { + _GLFWwindow* window; + + for (window = _glfw.windowListHead; window; window = window->next) + { + if (window->cursor == cursor) + glfwSetCursor((GLFWwindow*) window, NULL); + } + } + + _glfw.platform.destroyCursor(cursor); + + // Unlink cursor from global linked list + { + _GLFWcursor** prev = &_glfw.cursorListHead; + + while (*prev != cursor) + prev = &((*prev)->next); + + *prev = cursor->next; + } + + _glfw_free(cursor); +} + +GLFWAPI void glfwSetCursor(GLFWwindow* windowHandle, GLFWcursor* cursorHandle) +{ + _GLFWwindow* window = (_GLFWwindow*) windowHandle; + _GLFWcursor* cursor = (_GLFWcursor*) cursorHandle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + window->cursor = cursor; + + _glfw.platform.setCursor(window, cursor); +} + +GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* handle, GLFWkeyfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWkeyfun, window->callbacks.key, cbfun); + return cbfun; +} + +GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* handle, GLFWcharfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWcharfun, window->callbacks.character, cbfun); + return cbfun; +} + +GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* handle, GLFWcharmodsfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWcharmodsfun, window->callbacks.charmods, cbfun); + return cbfun; +} + +GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* handle, + GLFWmousebuttonfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWmousebuttonfun, window->callbacks.mouseButton, cbfun); + return cbfun; +} + +GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* handle, + GLFWcursorposfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWcursorposfun, window->callbacks.cursorPos, cbfun); + return cbfun; +} + +GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* handle, + GLFWcursorenterfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWcursorenterfun, window->callbacks.cursorEnter, cbfun); + return cbfun; +} + +GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* handle, + GLFWscrollfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWscrollfun, window->callbacks.scroll, cbfun); + return cbfun; +} + +GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* handle, GLFWdropfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWdropfun, window->callbacks.drop, cbfun); + return cbfun; +} + +GLFWAPI int glfwJoystickPresent(int jid) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return GLFW_FALSE; + } + + if (!initJoysticks()) + return GLFW_FALSE; + + js = _glfw.joysticks + jid; + if (!js->connected) + return GLFW_FALSE; + + return _glfw.platform.pollJoystick(js, _GLFW_POLL_PRESENCE); +} + +GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + assert(count != NULL); + + *count = 0; + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return NULL; + } + + if (!initJoysticks()) + return NULL; + + js = _glfw.joysticks + jid; + if (!js->connected) + return NULL; + + if (!_glfw.platform.pollJoystick(js, _GLFW_POLL_AXES)) + return NULL; + + *count = js->axisCount; + return js->axes; +} + +GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + assert(count != NULL); + + *count = 0; + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return NULL; + } + + if (!initJoysticks()) + return NULL; + + js = _glfw.joysticks + jid; + if (!js->connected) + return NULL; + + if (!_glfw.platform.pollJoystick(js, _GLFW_POLL_BUTTONS)) + return NULL; + + if (_glfw.hints.init.hatButtons) + *count = js->buttonCount + js->hatCount * 4; + else + *count = js->buttonCount; + + return js->buttons; +} + +GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + assert(count != NULL); + + *count = 0; + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return NULL; + } + + if (!initJoysticks()) + return NULL; + + js = _glfw.joysticks + jid; + if (!js->connected) + return NULL; + + if (!_glfw.platform.pollJoystick(js, _GLFW_POLL_BUTTONS)) + return NULL; + + *count = js->hatCount; + return js->hats; +} + +GLFWAPI const char* glfwGetJoystickName(int jid) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return NULL; + } + + if (!initJoysticks()) + return NULL; + + js = _glfw.joysticks + jid; + if (!js->connected) + return NULL; + + if (!_glfw.platform.pollJoystick(js, _GLFW_POLL_PRESENCE)) + return NULL; + + return js->name; +} + +GLFWAPI const char* glfwGetJoystickGUID(int jid) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return NULL; + } + + if (!initJoysticks()) + return NULL; + + js = _glfw.joysticks + jid; + if (!js->connected) + return NULL; + + if (!_glfw.platform.pollJoystick(js, _GLFW_POLL_PRESENCE)) + return NULL; + + return js->guid; +} + +GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + + _GLFW_REQUIRE_INIT(); + + js = _glfw.joysticks + jid; + if (!js->allocated) + return; + + js->userPointer = pointer; +} + +GLFWAPI void* glfwGetJoystickUserPointer(int jid) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + js = _glfw.joysticks + jid; + if (!js->allocated) + return NULL; + + return js->userPointer; +} + +GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (!initJoysticks()) + return NULL; + + _GLFW_SWAP(GLFWjoystickfun, _glfw.callbacks.joystick, cbfun); + return cbfun; +} + +GLFWAPI int glfwUpdateGamepadMappings(const char* string) +{ + int jid; + const char* c = string; + + assert(string != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + + while (*c) + { + if ((*c >= '0' && *c <= '9') || + (*c >= 'a' && *c <= 'f') || + (*c >= 'A' && *c <= 'F')) + { + char line[1024]; + + const size_t length = strcspn(c, "\r\n"); + if (length < sizeof(line)) + { + _GLFWmapping mapping = {{0}}; + + memcpy(line, c, length); + line[length] = '\0'; + + if (parseMapping(&mapping, line)) + { + _GLFWmapping* previous = findMapping(mapping.guid); + if (previous) + *previous = mapping; + else + { + _glfw.mappingCount++; + _glfw.mappings = + _glfw_realloc(_glfw.mappings, + sizeof(_GLFWmapping) * _glfw.mappingCount); + _glfw.mappings[_glfw.mappingCount - 1] = mapping; + } + } + } + + c += length; + } + else + { + c += strcspn(c, "\r\n"); + c += strspn(c, "\r\n"); + } + } + + for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + _GLFWjoystick* js = _glfw.joysticks + jid; + if (js->connected) + js->mapping = findValidMapping(js); + } + + return GLFW_TRUE; +} + +GLFWAPI int glfwJoystickIsGamepad(int jid) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return GLFW_FALSE; + } + + if (!initJoysticks()) + return GLFW_FALSE; + + js = _glfw.joysticks + jid; + if (!js->connected) + return GLFW_FALSE; + + if (!_glfw.platform.pollJoystick(js, _GLFW_POLL_PRESENCE)) + return GLFW_FALSE; + + return js->mapping != NULL; +} + +GLFWAPI const char* glfwGetGamepadName(int jid) +{ + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return NULL; + } + + if (!initJoysticks()) + return NULL; + + js = _glfw.joysticks + jid; + if (!js->connected) + return NULL; + + if (!_glfw.platform.pollJoystick(js, _GLFW_POLL_PRESENCE)) + return NULL; + + if (!js->mapping) + return NULL; + + return js->mapping->name; +} + +GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state) +{ + int i; + _GLFWjoystick* js; + + assert(jid >= GLFW_JOYSTICK_1); + assert(jid <= GLFW_JOYSTICK_LAST); + assert(state != NULL); + + memset(state, 0, sizeof(GLFWgamepadstate)); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + + if (jid < 0 || jid > GLFW_JOYSTICK_LAST) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid); + return GLFW_FALSE; + } + + if (!initJoysticks()) + return GLFW_FALSE; + + js = _glfw.joysticks + jid; + if (!js->connected) + return GLFW_FALSE; + + if (!_glfw.platform.pollJoystick(js, _GLFW_POLL_ALL)) + return GLFW_FALSE; + + if (!js->mapping) + return GLFW_FALSE; + + for (i = 0; i <= GLFW_GAMEPAD_BUTTON_LAST; i++) + { + const _GLFWmapelement* e = js->mapping->buttons + i; + if (e->type == _GLFW_JOYSTICK_AXIS) + { + const float value = js->axes[e->index] * e->axisScale + e->axisOffset; + // HACK: This should be baked into the value transform + // TODO: Bake into transform when implementing output modifiers + if (e->axisOffset < 0 || (e->axisOffset == 0 && e->axisScale > 0)) + { + if (value >= 0.f) + state->buttons[i] = GLFW_PRESS; + } + else + { + if (value <= 0.f) + state->buttons[i] = GLFW_PRESS; + } + } + else if (e->type == _GLFW_JOYSTICK_HATBIT) + { + const unsigned int hat = e->index >> 4; + const unsigned int bit = e->index & 0xf; + if (js->hats[hat] & bit) + state->buttons[i] = GLFW_PRESS; + } + else if (e->type == _GLFW_JOYSTICK_BUTTON) + state->buttons[i] = js->buttons[e->index]; + } + + for (i = 0; i <= GLFW_GAMEPAD_AXIS_LAST; i++) + { + const _GLFWmapelement* e = js->mapping->axes + i; + if (e->type == _GLFW_JOYSTICK_AXIS) + { + const float value = js->axes[e->index] * e->axisScale + e->axisOffset; + state->axes[i] = _glfw_fminf(_glfw_fmaxf(value, -1.f), 1.f); + } + else if (e->type == _GLFW_JOYSTICK_HATBIT) + { + const unsigned int hat = e->index >> 4; + const unsigned int bit = e->index & 0xf; + if (js->hats[hat] & bit) + state->axes[i] = 1.f; + else + state->axes[i] = -1.f; + } + else if (e->type == _GLFW_JOYSTICK_BUTTON) + state->axes[i] = js->buttons[e->index] * 2.f - 1.f; + } + + return GLFW_TRUE; +} + +GLFWAPI void glfwSetClipboardString(GLFWwindow* handle, const char* string) +{ + assert(string != NULL); + + _GLFW_REQUIRE_INIT(); + _glfw.platform.setClipboardString(string); +} + +GLFWAPI const char* glfwGetClipboardString(GLFWwindow* handle) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return _glfw.platform.getClipboardString(); +} + +GLFWAPI double glfwGetTime(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(0.0); + return (double) (_glfwPlatformGetTimerValue() - _glfw.timer.offset) / + _glfwPlatformGetTimerFrequency(); +} + +GLFWAPI void glfwSetTime(double time) +{ + _GLFW_REQUIRE_INIT(); + + if (time != time || time < 0.0 || time > 18446744073.0) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid time %f", time); + return; + } + + _glfw.timer.offset = _glfwPlatformGetTimerValue() - + (uint64_t) (time * _glfwPlatformGetTimerFrequency()); +} + +GLFWAPI uint64_t glfwGetTimerValue(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(0); + return _glfwPlatformGetTimerValue(); +} + +GLFWAPI uint64_t glfwGetTimerFrequency(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(0); + return _glfwPlatformGetTimerFrequency(); +} + diff --git a/lib/glfw/src/internal.h b/lib/glfw/src/internal.h new file mode 100644 index 0000000..781c8cd --- /dev/null +++ b/lib/glfw/src/internal.h @@ -0,0 +1,1009 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#pragma once + +#if defined(_GLFW_USE_CONFIG_H) + #include "glfw_config.h" +#endif + +#if defined(GLFW_INCLUDE_GLCOREARB) || \ + defined(GLFW_INCLUDE_ES1) || \ + defined(GLFW_INCLUDE_ES2) || \ + defined(GLFW_INCLUDE_ES3) || \ + defined(GLFW_INCLUDE_ES31) || \ + defined(GLFW_INCLUDE_ES32) || \ + defined(GLFW_INCLUDE_NONE) || \ + defined(GLFW_INCLUDE_GLEXT) || \ + defined(GLFW_INCLUDE_GLU) || \ + defined(GLFW_INCLUDE_VULKAN) || \ + defined(GLFW_DLL) + #error "You must not define any header option macros when compiling GLFW" +#endif + +#define GLFW_INCLUDE_NONE +#include "../include/GLFW/glfw3.h" + +#define _GLFW_INSERT_FIRST 0 +#define _GLFW_INSERT_LAST 1 + +#define _GLFW_POLL_PRESENCE 0 +#define _GLFW_POLL_AXES 1 +#define _GLFW_POLL_BUTTONS 2 +#define _GLFW_POLL_ALL (_GLFW_POLL_AXES | _GLFW_POLL_BUTTONS) + +#define _GLFW_MESSAGE_SIZE 1024 + +typedef int GLFWbool; +typedef void (*GLFWproc)(void); + +typedef struct _GLFWerror _GLFWerror; +typedef struct _GLFWinitconfig _GLFWinitconfig; +typedef struct _GLFWwndconfig _GLFWwndconfig; +typedef struct _GLFWctxconfig _GLFWctxconfig; +typedef struct _GLFWfbconfig _GLFWfbconfig; +typedef struct _GLFWcontext _GLFWcontext; +typedef struct _GLFWwindow _GLFWwindow; +typedef struct _GLFWplatform _GLFWplatform; +typedef struct _GLFWlibrary _GLFWlibrary; +typedef struct _GLFWmonitor _GLFWmonitor; +typedef struct _GLFWcursor _GLFWcursor; +typedef struct _GLFWmapelement _GLFWmapelement; +typedef struct _GLFWmapping _GLFWmapping; +typedef struct _GLFWjoystick _GLFWjoystick; +typedef struct _GLFWtls _GLFWtls; +typedef struct _GLFWmutex _GLFWmutex; + +#define GL_VERSION 0x1f02 +#define GL_NONE 0 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_EXTENSIONS 0x1f03 +#define GL_NUM_EXTENSIONS 0x821d +#define GL_CONTEXT_FLAGS 0x821e +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82fb +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82fc +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 + +typedef int GLint; +typedef unsigned int GLuint; +typedef unsigned int GLenum; +typedef unsigned int GLbitfield; +typedef unsigned char GLubyte; + +typedef void (APIENTRY * PFNGLCLEARPROC)(GLbitfield); +typedef const GLubyte* (APIENTRY * PFNGLGETSTRINGPROC)(GLenum); +typedef void (APIENTRY * PFNGLGETINTEGERVPROC)(GLenum,GLint*); +typedef const GLubyte* (APIENTRY * PFNGLGETSTRINGIPROC)(GLenum,GLuint); + +#if defined(_GLFW_WIN32) + #define EGLAPIENTRY __stdcall +#else + #define EGLAPIENTRY +#endif + +#define EGL_SUCCESS 0x3000 +#define EGL_NOT_INITIALIZED 0x3001 +#define EGL_BAD_ACCESS 0x3002 +#define EGL_BAD_ALLOC 0x3003 +#define EGL_BAD_ATTRIBUTE 0x3004 +#define EGL_BAD_CONFIG 0x3005 +#define EGL_BAD_CONTEXT 0x3006 +#define EGL_BAD_CURRENT_SURFACE 0x3007 +#define EGL_BAD_DISPLAY 0x3008 +#define EGL_BAD_MATCH 0x3009 +#define EGL_BAD_NATIVE_PIXMAP 0x300a +#define EGL_BAD_NATIVE_WINDOW 0x300b +#define EGL_BAD_PARAMETER 0x300c +#define EGL_BAD_SURFACE 0x300d +#define EGL_CONTEXT_LOST 0x300e +#define EGL_COLOR_BUFFER_TYPE 0x303f +#define EGL_RGB_BUFFER 0x308e +#define EGL_SURFACE_TYPE 0x3033 +#define EGL_WINDOW_BIT 0x0004 +#define EGL_RENDERABLE_TYPE 0x3040 +#define EGL_OPENGL_ES_BIT 0x0001 +#define EGL_OPENGL_ES2_BIT 0x0004 +#define EGL_OPENGL_BIT 0x0008 +#define EGL_ALPHA_SIZE 0x3021 +#define EGL_BLUE_SIZE 0x3022 +#define EGL_GREEN_SIZE 0x3023 +#define EGL_RED_SIZE 0x3024 +#define EGL_DEPTH_SIZE 0x3025 +#define EGL_STENCIL_SIZE 0x3026 +#define EGL_SAMPLES 0x3031 +#define EGL_OPENGL_ES_API 0x30a0 +#define EGL_OPENGL_API 0x30a2 +#define EGL_NONE 0x3038 +#define EGL_RENDER_BUFFER 0x3086 +#define EGL_SINGLE_BUFFER 0x3085 +#define EGL_EXTENSIONS 0x3055 +#define EGL_CONTEXT_CLIENT_VERSION 0x3098 +#define EGL_NATIVE_VISUAL_ID 0x302e +#define EGL_NO_SURFACE ((EGLSurface) 0) +#define EGL_NO_DISPLAY ((EGLDisplay) 0) +#define EGL_NO_CONTEXT ((EGLContext) 0) +#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType) 0) + +#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 +#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001 +#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002 +#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 +#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31bd +#define EGL_NO_RESET_NOTIFICATION_KHR 0x31be +#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31bf +#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 +#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098 +#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30fb +#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30fd +#define EGL_CONTEXT_FLAGS_KHR 0x30fc +#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31b3 +#define EGL_GL_COLORSPACE_KHR 0x309d +#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089 +#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097 +#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0 +#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098 +#define EGL_PLATFORM_X11_EXT 0x31d5 +#define EGL_PLATFORM_WAYLAND_EXT 0x31d8 +#define EGL_PRESENT_OPAQUE_EXT 0x31df +#define EGL_PLATFORM_ANGLE_ANGLE 0x3202 +#define EGL_PLATFORM_ANGLE_TYPE_ANGLE 0x3203 +#define EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE 0x320d +#define EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE 0x320e +#define EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE 0x3207 +#define EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 0x3208 +#define EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE 0x3450 +#define EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE 0x3489 +#define EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE 0x348f + +typedef int EGLint; +typedef unsigned int EGLBoolean; +typedef unsigned int EGLenum; +typedef void* EGLConfig; +typedef void* EGLContext; +typedef void* EGLDisplay; +typedef void* EGLSurface; + +typedef void* EGLNativeDisplayType; +typedef void* EGLNativeWindowType; + +// EGL function pointer typedefs +typedef EGLBoolean (EGLAPIENTRY * PFN_eglGetConfigAttrib)(EGLDisplay,EGLConfig,EGLint,EGLint*); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglGetConfigs)(EGLDisplay,EGLConfig*,EGLint,EGLint*); +typedef EGLDisplay (EGLAPIENTRY * PFN_eglGetDisplay)(EGLNativeDisplayType); +typedef EGLint (EGLAPIENTRY * PFN_eglGetError)(void); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglInitialize)(EGLDisplay,EGLint*,EGLint*); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglTerminate)(EGLDisplay); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglBindAPI)(EGLenum); +typedef EGLContext (EGLAPIENTRY * PFN_eglCreateContext)(EGLDisplay,EGLConfig,EGLContext,const EGLint*); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglDestroySurface)(EGLDisplay,EGLSurface); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglDestroyContext)(EGLDisplay,EGLContext); +typedef EGLSurface (EGLAPIENTRY * PFN_eglCreateWindowSurface)(EGLDisplay,EGLConfig,EGLNativeWindowType,const EGLint*); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglMakeCurrent)(EGLDisplay,EGLSurface,EGLSurface,EGLContext); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglSwapBuffers)(EGLDisplay,EGLSurface); +typedef EGLBoolean (EGLAPIENTRY * PFN_eglSwapInterval)(EGLDisplay,EGLint); +typedef const char* (EGLAPIENTRY * PFN_eglQueryString)(EGLDisplay,EGLint); +typedef GLFWglproc (EGLAPIENTRY * PFN_eglGetProcAddress)(const char*); +#define eglGetConfigAttrib _glfw.egl.GetConfigAttrib +#define eglGetConfigs _glfw.egl.GetConfigs +#define eglGetDisplay _glfw.egl.GetDisplay +#define eglGetError _glfw.egl.GetError +#define eglInitialize _glfw.egl.Initialize +#define eglTerminate _glfw.egl.Terminate +#define eglBindAPI _glfw.egl.BindAPI +#define eglCreateContext _glfw.egl.CreateContext +#define eglDestroySurface _glfw.egl.DestroySurface +#define eglDestroyContext _glfw.egl.DestroyContext +#define eglCreateWindowSurface _glfw.egl.CreateWindowSurface +#define eglMakeCurrent _glfw.egl.MakeCurrent +#define eglSwapBuffers _glfw.egl.SwapBuffers +#define eglSwapInterval _glfw.egl.SwapInterval +#define eglQueryString _glfw.egl.QueryString +#define eglGetProcAddress _glfw.egl.GetProcAddress + +typedef EGLDisplay (EGLAPIENTRY * PFNEGLGETPLATFORMDISPLAYEXTPROC)(EGLenum,void*,const EGLint*); +typedef EGLSurface (EGLAPIENTRY * PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)(EGLDisplay,EGLConfig,void*,const EGLint*); +#define eglGetPlatformDisplayEXT _glfw.egl.GetPlatformDisplayEXT +#define eglCreatePlatformWindowSurfaceEXT _glfw.egl.CreatePlatformWindowSurfaceEXT + +#define OSMESA_RGBA 0x1908 +#define OSMESA_FORMAT 0x22 +#define OSMESA_DEPTH_BITS 0x30 +#define OSMESA_STENCIL_BITS 0x31 +#define OSMESA_ACCUM_BITS 0x32 +#define OSMESA_PROFILE 0x33 +#define OSMESA_CORE_PROFILE 0x34 +#define OSMESA_COMPAT_PROFILE 0x35 +#define OSMESA_CONTEXT_MAJOR_VERSION 0x36 +#define OSMESA_CONTEXT_MINOR_VERSION 0x37 + +typedef void* OSMesaContext; +typedef void (*OSMESAproc)(void); + +typedef OSMesaContext (GLAPIENTRY * PFN_OSMesaCreateContextExt)(GLenum,GLint,GLint,GLint,OSMesaContext); +typedef OSMesaContext (GLAPIENTRY * PFN_OSMesaCreateContextAttribs)(const int*,OSMesaContext); +typedef void (GLAPIENTRY * PFN_OSMesaDestroyContext)(OSMesaContext); +typedef int (GLAPIENTRY * PFN_OSMesaMakeCurrent)(OSMesaContext,void*,int,int,int); +typedef int (GLAPIENTRY * PFN_OSMesaGetColorBuffer)(OSMesaContext,int*,int*,int*,void**); +typedef int (GLAPIENTRY * PFN_OSMesaGetDepthBuffer)(OSMesaContext,int*,int*,int*,void**); +typedef GLFWglproc (GLAPIENTRY * PFN_OSMesaGetProcAddress)(const char*); +#define OSMesaCreateContextExt _glfw.osmesa.CreateContextExt +#define OSMesaCreateContextAttribs _glfw.osmesa.CreateContextAttribs +#define OSMesaDestroyContext _glfw.osmesa.DestroyContext +#define OSMesaMakeCurrent _glfw.osmesa.MakeCurrent +#define OSMesaGetColorBuffer _glfw.osmesa.GetColorBuffer +#define OSMesaGetDepthBuffer _glfw.osmesa.GetDepthBuffer +#define OSMesaGetProcAddress _glfw.osmesa.GetProcAddress + +#define VK_NULL_HANDLE 0 + +typedef void* VkInstance; +typedef void* VkPhysicalDevice; +typedef uint64_t VkSurfaceKHR; +typedef uint32_t VkFlags; +typedef uint32_t VkBool32; + +typedef enum VkStructureType +{ + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, + VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkStructureType; + +typedef enum VkResult +{ + VK_SUCCESS = 0, + VK_NOT_READY = 1, + VK_TIMEOUT = 2, + VK_EVENT_SET = 3, + VK_EVENT_RESET = 4, + VK_INCOMPLETE = 5, + VK_ERROR_OUT_OF_HOST_MEMORY = -1, + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2, + VK_ERROR_INITIALIZATION_FAILED = -3, + VK_ERROR_DEVICE_LOST = -4, + VK_ERROR_MEMORY_MAP_FAILED = -5, + VK_ERROR_LAYER_NOT_PRESENT = -6, + VK_ERROR_EXTENSION_NOT_PRESENT = -7, + VK_ERROR_FEATURE_NOT_PRESENT = -8, + VK_ERROR_INCOMPATIBLE_DRIVER = -9, + VK_ERROR_TOO_MANY_OBJECTS = -10, + VK_ERROR_FORMAT_NOT_SUPPORTED = -11, + VK_ERROR_SURFACE_LOST_KHR = -1000000000, + VK_SUBOPTIMAL_KHR = 1000001003, + VK_ERROR_OUT_OF_DATE_KHR = -1000001004, + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, + VK_RESULT_MAX_ENUM = 0x7FFFFFFF +} VkResult; + +typedef struct VkAllocationCallbacks VkAllocationCallbacks; + +typedef struct VkExtensionProperties +{ + char extensionName[256]; + uint32_t specVersion; +} VkExtensionProperties; + +typedef void (APIENTRY * PFN_vkVoidFunction)(void); + +typedef PFN_vkVoidFunction (APIENTRY * PFN_vkGetInstanceProcAddr)(VkInstance,const char*); +typedef VkResult (APIENTRY * PFN_vkEnumerateInstanceExtensionProperties)(const char*,uint32_t*,VkExtensionProperties*); +#define vkGetInstanceProcAddr _glfw.vk.GetInstanceProcAddr + +#include "platform.h" + +// Checks for whether the library has been initialized +#define _GLFW_REQUIRE_INIT() \ + if (!_glfw.initialized) \ + { \ + _glfwInputError(GLFW_NOT_INITIALIZED, NULL); \ + return; \ + } +#define _GLFW_REQUIRE_INIT_OR_RETURN(x) \ + if (!_glfw.initialized) \ + { \ + _glfwInputError(GLFW_NOT_INITIALIZED, NULL); \ + return x; \ + } + +// Swaps the provided pointers +#define _GLFW_SWAP(type, x, y) \ + { \ + type t; \ + t = x; \ + x = y; \ + y = t; \ + } + +// Per-thread error structure +// +struct _GLFWerror +{ + _GLFWerror* next; + int code; + char description[_GLFW_MESSAGE_SIZE]; +}; + +// Initialization configuration +// +// Parameters relating to the initialization of the library +// +struct _GLFWinitconfig +{ + GLFWbool hatButtons; + int angleType; + int platformID; + PFN_vkGetInstanceProcAddr vulkanLoader; + struct { + GLFWbool menubar; + GLFWbool chdir; + } ns; + struct { + GLFWbool xcbVulkanSurface; + } x11; +}; + +// Window configuration +// +// Parameters relating to the creation of the window but not directly related +// to the framebuffer. This is used to pass window creation parameters from +// shared code to the platform API. +// +struct _GLFWwndconfig +{ + int xpos; + int ypos; + int width; + int height; + const char* title; + GLFWbool resizable; + GLFWbool visible; + GLFWbool decorated; + GLFWbool focused; + GLFWbool autoIconify; + GLFWbool floating; + GLFWbool maximized; + GLFWbool centerCursor; + GLFWbool focusOnShow; + GLFWbool mousePassthrough; + GLFWbool scaleToMonitor; + struct { + GLFWbool retina; + char frameName[256]; + } ns; + struct { + char className[256]; + char instanceName[256]; + } x11; + struct { + GLFWbool keymenu; + } win32; + struct { + char appId[256]; + } wl; +}; + +// Context configuration +// +// Parameters relating to the creation of the context but not directly related +// to the framebuffer. This is used to pass context creation parameters from +// shared code to the platform API. +// +struct _GLFWctxconfig +{ + int client; + int source; + int major; + int minor; + GLFWbool forward; + GLFWbool debug; + GLFWbool noerror; + int profile; + int robustness; + int release; + _GLFWwindow* share; + struct { + GLFWbool offline; + } nsgl; +}; + +// Framebuffer configuration +// +// This describes buffers and their sizes. It also contains +// a platform-specific ID used to map back to the backend API object. +// +// It is used to pass framebuffer parameters from shared code to the platform +// API and also to enumerate and select available framebuffer configs. +// +struct _GLFWfbconfig +{ + int redBits; + int greenBits; + int blueBits; + int alphaBits; + int depthBits; + int stencilBits; + int accumRedBits; + int accumGreenBits; + int accumBlueBits; + int accumAlphaBits; + int auxBuffers; + GLFWbool stereo; + int samples; + GLFWbool sRGB; + GLFWbool doublebuffer; + GLFWbool transparent; + uintptr_t handle; +}; + +// Context structure +// +struct _GLFWcontext +{ + int client; + int source; + int major, minor, revision; + GLFWbool forward, debug, noerror; + int profile; + int robustness; + int release; + + PFNGLGETSTRINGIPROC GetStringi; + PFNGLGETINTEGERVPROC GetIntegerv; + PFNGLGETSTRINGPROC GetString; + + void (*makeCurrent)(_GLFWwindow*); + void (*swapBuffers)(_GLFWwindow*); + void (*swapInterval)(int); + int (*extensionSupported)(const char*); + GLFWglproc (*getProcAddress)(const char*); + void (*destroy)(_GLFWwindow*); + + struct { + EGLConfig config; + EGLContext handle; + EGLSurface surface; + void* client; + } egl; + + struct { + OSMesaContext handle; + int width; + int height; + void* buffer; + } osmesa; + + // This is defined in platform.h + GLFW_PLATFORM_CONTEXT_STATE +}; + +// Window and context structure +// +struct _GLFWwindow +{ + struct _GLFWwindow* next; + + // Window settings and state + GLFWbool resizable; + GLFWbool decorated; + GLFWbool autoIconify; + GLFWbool floating; + GLFWbool focusOnShow; + GLFWbool mousePassthrough; + GLFWbool shouldClose; + void* userPointer; + GLFWbool doublebuffer; + GLFWvidmode videoMode; + _GLFWmonitor* monitor; + _GLFWcursor* cursor; + + int minwidth, minheight; + int maxwidth, maxheight; + int numer, denom; + + GLFWbool stickyKeys; + GLFWbool stickyMouseButtons; + GLFWbool lockKeyMods; + int cursorMode; + char mouseButtons[GLFW_MOUSE_BUTTON_LAST + 1]; + char keys[GLFW_KEY_LAST + 1]; + // Virtual cursor position when cursor is disabled + double virtualCursorPosX, virtualCursorPosY; + GLFWbool rawMouseMotion; + + _GLFWcontext context; + + struct { + GLFWwindowposfun pos; + GLFWwindowsizefun size; + GLFWwindowclosefun close; + GLFWwindowrefreshfun refresh; + GLFWwindowfocusfun focus; + GLFWwindowiconifyfun iconify; + GLFWwindowmaximizefun maximize; + GLFWframebuffersizefun fbsize; + GLFWwindowcontentscalefun scale; + GLFWmousebuttonfun mouseButton; + GLFWcursorposfun cursorPos; + GLFWcursorenterfun cursorEnter; + GLFWscrollfun scroll; + GLFWkeyfun key; + GLFWcharfun character; + GLFWcharmodsfun charmods; + GLFWdropfun drop; + } callbacks; + + // This is defined in platform.h + GLFW_PLATFORM_WINDOW_STATE +}; + +// Monitor structure +// +struct _GLFWmonitor +{ + char name[128]; + void* userPointer; + + // Physical dimensions in millimeters. + int widthMM, heightMM; + + // The window whose video mode is current on this monitor + _GLFWwindow* window; + + GLFWvidmode* modes; + int modeCount; + GLFWvidmode currentMode; + + GLFWgammaramp originalRamp; + GLFWgammaramp currentRamp; + + // This is defined in platform.h + GLFW_PLATFORM_MONITOR_STATE +}; + +// Cursor structure +// +struct _GLFWcursor +{ + _GLFWcursor* next; + // This is defined in platform.h + GLFW_PLATFORM_CURSOR_STATE +}; + +// Gamepad mapping element structure +// +struct _GLFWmapelement +{ + uint8_t type; + uint8_t index; + int8_t axisScale; + int8_t axisOffset; +}; + +// Gamepad mapping structure +// +struct _GLFWmapping +{ + char name[128]; + char guid[33]; + _GLFWmapelement buttons[15]; + _GLFWmapelement axes[6]; +}; + +// Joystick structure +// +struct _GLFWjoystick +{ + GLFWbool allocated; + GLFWbool connected; + float* axes; + int axisCount; + unsigned char* buttons; + int buttonCount; + unsigned char* hats; + int hatCount; + char name[128]; + void* userPointer; + char guid[33]; + _GLFWmapping* mapping; + + // This is defined in platform.h + GLFW_PLATFORM_JOYSTICK_STATE +}; + +// Thread local storage structure +// +struct _GLFWtls +{ + // This is defined in platform.h + GLFW_PLATFORM_TLS_STATE +}; + +// Mutex structure +// +struct _GLFWmutex +{ + // This is defined in platform.h + GLFW_PLATFORM_MUTEX_STATE +}; + +// Platform API structure +// +struct _GLFWplatform +{ + int platformID; + // init + GLFWbool (*init)(void); + void (*terminate)(void); + // input + void (*getCursorPos)(_GLFWwindow*,double*,double*); + void (*setCursorPos)(_GLFWwindow*,double,double); + void (*setCursorMode)(_GLFWwindow*,int); + void (*setRawMouseMotion)(_GLFWwindow*,GLFWbool); + GLFWbool (*rawMouseMotionSupported)(void); + GLFWbool (*createCursor)(_GLFWcursor*,const GLFWimage*,int,int); + GLFWbool (*createStandardCursor)(_GLFWcursor*,int); + void (*destroyCursor)(_GLFWcursor*); + void (*setCursor)(_GLFWwindow*,_GLFWcursor*); + const char* (*getScancodeName)(int); + int (*getKeyScancode)(int); + void (*setClipboardString)(const char*); + const char* (*getClipboardString)(void); + GLFWbool (*initJoysticks)(void); + void (*terminateJoysticks)(void); + GLFWbool (*pollJoystick)(_GLFWjoystick*,int); + const char* (*getMappingName)(void); + void (*updateGamepadGUID)(char*); + // monitor + void (*freeMonitor)(_GLFWmonitor*); + void (*getMonitorPos)(_GLFWmonitor*,int*,int*); + void (*getMonitorContentScale)(_GLFWmonitor*,float*,float*); + void (*getMonitorWorkarea)(_GLFWmonitor*,int*,int*,int*,int*); + GLFWvidmode* (*getVideoModes)(_GLFWmonitor*,int*); + void (*getVideoMode)(_GLFWmonitor*,GLFWvidmode*); + GLFWbool (*getGammaRamp)(_GLFWmonitor*,GLFWgammaramp*); + void (*setGammaRamp)(_GLFWmonitor*,const GLFWgammaramp*); + // window + GLFWbool (*createWindow)(_GLFWwindow*,const _GLFWwndconfig*,const _GLFWctxconfig*,const _GLFWfbconfig*); + void (*destroyWindow)(_GLFWwindow*); + void (*setWindowTitle)(_GLFWwindow*,const char*); + void (*setWindowIcon)(_GLFWwindow*,int,const GLFWimage*); + void (*getWindowPos)(_GLFWwindow*,int*,int*); + void (*setWindowPos)(_GLFWwindow*,int,int); + void (*getWindowSize)(_GLFWwindow*,int*,int*); + void (*setWindowSize)(_GLFWwindow*,int,int); + void (*setWindowSizeLimits)(_GLFWwindow*,int,int,int,int); + void (*setWindowAspectRatio)(_GLFWwindow*,int,int); + void (*getFramebufferSize)(_GLFWwindow*,int*,int*); + void (*getWindowFrameSize)(_GLFWwindow*,int*,int*,int*,int*); + void (*getWindowContentScale)(_GLFWwindow*,float*,float*); + void (*iconifyWindow)(_GLFWwindow*); + void (*restoreWindow)(_GLFWwindow*); + void (*maximizeWindow)(_GLFWwindow*); + void (*showWindow)(_GLFWwindow*); + void (*hideWindow)(_GLFWwindow*); + void (*requestWindowAttention)(_GLFWwindow*); + void (*focusWindow)(_GLFWwindow*); + void (*setWindowMonitor)(_GLFWwindow*,_GLFWmonitor*,int,int,int,int,int); + GLFWbool (*windowFocused)(_GLFWwindow*); + GLFWbool (*windowIconified)(_GLFWwindow*); + GLFWbool (*windowVisible)(_GLFWwindow*); + GLFWbool (*windowMaximized)(_GLFWwindow*); + GLFWbool (*windowHovered)(_GLFWwindow*); + GLFWbool (*framebufferTransparent)(_GLFWwindow*); + float (*getWindowOpacity)(_GLFWwindow*); + void (*setWindowResizable)(_GLFWwindow*,GLFWbool); + void (*setWindowDecorated)(_GLFWwindow*,GLFWbool); + void (*setWindowFloating)(_GLFWwindow*,GLFWbool); + void (*setWindowOpacity)(_GLFWwindow*,float); + void (*setWindowMousePassthrough)(_GLFWwindow*,GLFWbool); + void (*pollEvents)(void); + void (*waitEvents)(void); + void (*waitEventsTimeout)(double); + void (*postEmptyEvent)(void); + // EGL + EGLenum (*getEGLPlatform)(EGLint**); + EGLNativeDisplayType (*getEGLNativeDisplay)(void); + EGLNativeWindowType (*getEGLNativeWindow)(_GLFWwindow*); + // vulkan + void (*getRequiredInstanceExtensions)(char**); + GLFWbool (*getPhysicalDevicePresentationSupport)(VkInstance,VkPhysicalDevice,uint32_t); + VkResult (*createWindowSurface)(VkInstance,_GLFWwindow*,const VkAllocationCallbacks*,VkSurfaceKHR*); +}; + +// Library global data +// +struct _GLFWlibrary +{ + GLFWbool initialized; + GLFWallocator allocator; + + _GLFWplatform platform; + + struct { + _GLFWinitconfig init; + _GLFWfbconfig framebuffer; + _GLFWwndconfig window; + _GLFWctxconfig context; + int refreshRate; + } hints; + + _GLFWerror* errorListHead; + _GLFWcursor* cursorListHead; + _GLFWwindow* windowListHead; + + _GLFWmonitor** monitors; + int monitorCount; + + GLFWbool joysticksInitialized; + _GLFWjoystick joysticks[GLFW_JOYSTICK_LAST + 1]; + _GLFWmapping* mappings; + int mappingCount; + + _GLFWtls errorSlot; + _GLFWtls contextSlot; + _GLFWmutex errorLock; + + struct { + uint64_t offset; + // This is defined in platform.h + GLFW_PLATFORM_LIBRARY_TIMER_STATE + } timer; + + struct { + EGLenum platform; + EGLDisplay display; + EGLint major, minor; + GLFWbool prefix; + + GLFWbool KHR_create_context; + GLFWbool KHR_create_context_no_error; + GLFWbool KHR_gl_colorspace; + GLFWbool KHR_get_all_proc_addresses; + GLFWbool KHR_context_flush_control; + GLFWbool EXT_client_extensions; + GLFWbool EXT_platform_base; + GLFWbool EXT_platform_x11; + GLFWbool EXT_platform_wayland; + GLFWbool EXT_present_opaque; + GLFWbool ANGLE_platform_angle; + GLFWbool ANGLE_platform_angle_opengl; + GLFWbool ANGLE_platform_angle_d3d; + GLFWbool ANGLE_platform_angle_vulkan; + GLFWbool ANGLE_platform_angle_metal; + + void* handle; + + PFN_eglGetConfigAttrib GetConfigAttrib; + PFN_eglGetConfigs GetConfigs; + PFN_eglGetDisplay GetDisplay; + PFN_eglGetError GetError; + PFN_eglInitialize Initialize; + PFN_eglTerminate Terminate; + PFN_eglBindAPI BindAPI; + PFN_eglCreateContext CreateContext; + PFN_eglDestroySurface DestroySurface; + PFN_eglDestroyContext DestroyContext; + PFN_eglCreateWindowSurface CreateWindowSurface; + PFN_eglMakeCurrent MakeCurrent; + PFN_eglSwapBuffers SwapBuffers; + PFN_eglSwapInterval SwapInterval; + PFN_eglQueryString QueryString; + PFN_eglGetProcAddress GetProcAddress; + + PFNEGLGETPLATFORMDISPLAYEXTPROC GetPlatformDisplayEXT; + PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC CreatePlatformWindowSurfaceEXT; + } egl; + + struct { + void* handle; + + PFN_OSMesaCreateContextExt CreateContextExt; + PFN_OSMesaCreateContextAttribs CreateContextAttribs; + PFN_OSMesaDestroyContext DestroyContext; + PFN_OSMesaMakeCurrent MakeCurrent; + PFN_OSMesaGetColorBuffer GetColorBuffer; + PFN_OSMesaGetDepthBuffer GetDepthBuffer; + PFN_OSMesaGetProcAddress GetProcAddress; + + } osmesa; + + struct { + GLFWbool available; + void* handle; + char* extensions[2]; + PFN_vkGetInstanceProcAddr GetInstanceProcAddr; + GLFWbool KHR_surface; + GLFWbool KHR_win32_surface; + GLFWbool MVK_macos_surface; + GLFWbool EXT_metal_surface; + GLFWbool KHR_xlib_surface; + GLFWbool KHR_xcb_surface; + GLFWbool KHR_wayland_surface; + } vk; + + struct { + GLFWmonitorfun monitor; + GLFWjoystickfun joystick; + } callbacks; + + // These are defined in platform.h + GLFW_PLATFORM_LIBRARY_WINDOW_STATE + GLFW_PLATFORM_LIBRARY_CONTEXT_STATE + GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE +}; + +// Global state shared between compilation units of GLFW +// +extern _GLFWlibrary _glfw; + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwPlatformInitTimer(void); +uint64_t _glfwPlatformGetTimerValue(void); +uint64_t _glfwPlatformGetTimerFrequency(void); + +GLFWbool _glfwPlatformCreateTls(_GLFWtls* tls); +void _glfwPlatformDestroyTls(_GLFWtls* tls); +void* _glfwPlatformGetTls(_GLFWtls* tls); +void _glfwPlatformSetTls(_GLFWtls* tls, void* value); + +GLFWbool _glfwPlatformCreateMutex(_GLFWmutex* mutex); +void _glfwPlatformDestroyMutex(_GLFWmutex* mutex); +void _glfwPlatformLockMutex(_GLFWmutex* mutex); +void _glfwPlatformUnlockMutex(_GLFWmutex* mutex); + +void* _glfwPlatformLoadModule(const char* path); +void _glfwPlatformFreeModule(void* module); +GLFWproc _glfwPlatformGetModuleSymbol(void* module, const char* name); + + +////////////////////////////////////////////////////////////////////////// +////// GLFW event API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwInputWindowFocus(_GLFWwindow* window, GLFWbool focused); +void _glfwInputWindowPos(_GLFWwindow* window, int xpos, int ypos); +void _glfwInputWindowSize(_GLFWwindow* window, int width, int height); +void _glfwInputFramebufferSize(_GLFWwindow* window, int width, int height); +void _glfwInputWindowContentScale(_GLFWwindow* window, + float xscale, float yscale); +void _glfwInputWindowIconify(_GLFWwindow* window, GLFWbool iconified); +void _glfwInputWindowMaximize(_GLFWwindow* window, GLFWbool maximized); +void _glfwInputWindowDamage(_GLFWwindow* window); +void _glfwInputWindowCloseRequest(_GLFWwindow* window); +void _glfwInputWindowMonitor(_GLFWwindow* window, _GLFWmonitor* monitor); + +void _glfwInputKey(_GLFWwindow* window, + int key, int scancode, int action, int mods); +void _glfwInputChar(_GLFWwindow* window, + uint32_t codepoint, int mods, GLFWbool plain); +void _glfwInputScroll(_GLFWwindow* window, double xoffset, double yoffset); +void _glfwInputMouseClick(_GLFWwindow* window, int button, int action, int mods); +void _glfwInputCursorPos(_GLFWwindow* window, double xpos, double ypos); +void _glfwInputCursorEnter(_GLFWwindow* window, GLFWbool entered); +void _glfwInputDrop(_GLFWwindow* window, int count, const char** names); +void _glfwInputJoystick(_GLFWjoystick* js, int event); +void _glfwInputJoystickAxis(_GLFWjoystick* js, int axis, float value); +void _glfwInputJoystickButton(_GLFWjoystick* js, int button, char value); +void _glfwInputJoystickHat(_GLFWjoystick* js, int hat, char value); + +void _glfwInputMonitor(_GLFWmonitor* monitor, int action, int placement); +void _glfwInputMonitorWindow(_GLFWmonitor* monitor, _GLFWwindow* window); + +#if defined(__GNUC__) +void _glfwInputError(int code, const char* format, ...) + __attribute__((format(printf, 2, 3))); +#else +void _glfwInputError(int code, const char* format, ...); +#endif + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwSelectPlatform(int platformID, _GLFWplatform* platform); + +GLFWbool _glfwStringInExtensionString(const char* string, const char* extensions); +const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired, + const _GLFWfbconfig* alternatives, + unsigned int count); +GLFWbool _glfwRefreshContextAttribs(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig); +GLFWbool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig); + +const GLFWvidmode* _glfwChooseVideoMode(_GLFWmonitor* monitor, + const GLFWvidmode* desired); +int _glfwCompareVideoModes(const GLFWvidmode* first, const GLFWvidmode* second); +_GLFWmonitor* _glfwAllocMonitor(const char* name, int widthMM, int heightMM); +void _glfwFreeMonitor(_GLFWmonitor* monitor); +void _glfwAllocGammaArrays(GLFWgammaramp* ramp, unsigned int size); +void _glfwFreeGammaArrays(GLFWgammaramp* ramp); +void _glfwSplitBPP(int bpp, int* red, int* green, int* blue); + +void _glfwInitGamepadMappings(void); +_GLFWjoystick* _glfwAllocJoystick(const char* name, + const char* guid, + int axisCount, + int buttonCount, + int hatCount); +void _glfwFreeJoystick(_GLFWjoystick* js); +void _glfwCenterCursorInContentArea(_GLFWwindow* window); + +GLFWbool _glfwInitEGL(void); +void _glfwTerminateEGL(void); +GLFWbool _glfwCreateContextEGL(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig); +#if defined(_GLFW_X11) +GLFWbool _glfwChooseVisualEGL(const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig, + Visual** visual, int* depth); +#endif /*_GLFW_X11*/ + +GLFWbool _glfwInitOSMesa(void); +void _glfwTerminateOSMesa(void); +GLFWbool _glfwCreateContextOSMesa(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig); + +GLFWbool _glfwInitVulkan(int mode); +void _glfwTerminateVulkan(void); +const char* _glfwGetVulkanResultString(VkResult result); + +size_t _glfwEncodeUTF8(char* s, uint32_t codepoint); +char** _glfwParseUriList(char* text, int* count); + +char* _glfw_strdup(const char* source); +int _glfw_min(int a, int b); +int _glfw_max(int a, int b); +float _glfw_fminf(float a, float b); +float _glfw_fmaxf(float a, float b); + +void* _glfw_calloc(size_t count, size_t size); +void* _glfw_realloc(void* pointer, size_t size); +void _glfw_free(void* pointer); + diff --git a/lib/glfw/src/linux_joystick.c b/lib/glfw/src/linux_joystick.c new file mode 100644 index 0000000..26db853 --- /dev/null +++ b/lib/glfw/src/linux_joystick.c @@ -0,0 +1,435 @@ +//======================================================================== +// GLFW 3.4 Linux - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(GLFW_BUILD_LINUX_JOYSTICK) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef SYN_DROPPED // < v2.6.39 kernel headers +// Workaround for CentOS-6, which is supported till 2020-11-30, but still on v2.6.32 +#define SYN_DROPPED 3 +#endif + +// Apply an EV_KEY event to the specified joystick +// +static void handleKeyEvent(_GLFWjoystick* js, int code, int value) +{ + _glfwInputJoystickButton(js, + js->linjs.keyMap[code - BTN_MISC], + value ? GLFW_PRESS : GLFW_RELEASE); +} + +// Apply an EV_ABS event to the specified joystick +// +static void handleAbsEvent(_GLFWjoystick* js, int code, int value) +{ + const int index = js->linjs.absMap[code]; + + if (code >= ABS_HAT0X && code <= ABS_HAT3Y) + { + static const char stateMap[3][3] = + { + { GLFW_HAT_CENTERED, GLFW_HAT_UP, GLFW_HAT_DOWN }, + { GLFW_HAT_LEFT, GLFW_HAT_LEFT_UP, GLFW_HAT_LEFT_DOWN }, + { GLFW_HAT_RIGHT, GLFW_HAT_RIGHT_UP, GLFW_HAT_RIGHT_DOWN }, + }; + + const int hat = (code - ABS_HAT0X) / 2; + const int axis = (code - ABS_HAT0X) % 2; + int* state = js->linjs.hats[hat]; + + // NOTE: Looking at several input drivers, it seems all hat events use + // -1 for left / up, 0 for centered and 1 for right / down + if (value == 0) + state[axis] = 0; + else if (value < 0) + state[axis] = 1; + else if (value > 0) + state[axis] = 2; + + _glfwInputJoystickHat(js, index, stateMap[state[0]][state[1]]); + } + else + { + const struct input_absinfo* info = &js->linjs.absInfo[code]; + float normalized = value; + + const int range = info->maximum - info->minimum; + if (range) + { + // Normalize to 0.0 -> 1.0 + normalized = (normalized - info->minimum) / range; + // Normalize to -1.0 -> 1.0 + normalized = normalized * 2.0f - 1.0f; + } + + _glfwInputJoystickAxis(js, index, normalized); + } +} + +// Poll state of absolute axes +// +static void pollAbsState(_GLFWjoystick* js) +{ + for (int code = 0; code < ABS_CNT; code++) + { + if (js->linjs.absMap[code] < 0) + continue; + + struct input_absinfo* info = &js->linjs.absInfo[code]; + + if (ioctl(js->linjs.fd, EVIOCGABS(code), info) < 0) + continue; + + handleAbsEvent(js, code, info->value); + } +} + +#define isBitSet(bit, arr) (arr[(bit) / 8] & (1 << ((bit) % 8))) + +// Attempt to open the specified joystick device +// +static GLFWbool openJoystickDevice(const char* path) +{ + for (int jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + if (!_glfw.joysticks[jid].connected) + continue; + if (strcmp(_glfw.joysticks[jid].linjs.path, path) == 0) + return GLFW_FALSE; + } + + _GLFWjoystickLinux linjs = {0}; + linjs.fd = open(path, O_RDONLY | O_NONBLOCK); + if (linjs.fd == -1) + return GLFW_FALSE; + + char evBits[(EV_CNT + 7) / 8] = {0}; + char keyBits[(KEY_CNT + 7) / 8] = {0}; + char absBits[(ABS_CNT + 7) / 8] = {0}; + struct input_id id; + + if (ioctl(linjs.fd, EVIOCGBIT(0, sizeof(evBits)), evBits) < 0 || + ioctl(linjs.fd, EVIOCGBIT(EV_KEY, sizeof(keyBits)), keyBits) < 0 || + ioctl(linjs.fd, EVIOCGBIT(EV_ABS, sizeof(absBits)), absBits) < 0 || + ioctl(linjs.fd, EVIOCGID, &id) < 0) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Linux: Failed to query input device: %s", + strerror(errno)); + close(linjs.fd); + return GLFW_FALSE; + } + + // Ensure this device supports the events expected of a joystick + if (!isBitSet(EV_ABS, evBits)) + { + close(linjs.fd); + return GLFW_FALSE; + } + + char name[256] = ""; + + if (ioctl(linjs.fd, EVIOCGNAME(sizeof(name)), name) < 0) + strncpy(name, "Unknown", sizeof(name)); + + char guid[33] = ""; + + // Generate a joystick GUID that matches the SDL 2.0.5+ one + if (id.vendor && id.product && id.version) + { + sprintf(guid, "%02x%02x0000%02x%02x0000%02x%02x0000%02x%02x0000", + id.bustype & 0xff, id.bustype >> 8, + id.vendor & 0xff, id.vendor >> 8, + id.product & 0xff, id.product >> 8, + id.version & 0xff, id.version >> 8); + } + else + { + sprintf(guid, "%02x%02x0000%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x00", + id.bustype & 0xff, id.bustype >> 8, + name[0], name[1], name[2], name[3], + name[4], name[5], name[6], name[7], + name[8], name[9], name[10]); + } + + int axisCount = 0, buttonCount = 0, hatCount = 0; + + for (int code = BTN_MISC; code < KEY_CNT; code++) + { + if (!isBitSet(code, keyBits)) + continue; + + linjs.keyMap[code - BTN_MISC] = buttonCount; + buttonCount++; + } + + for (int code = 0; code < ABS_CNT; code++) + { + linjs.absMap[code] = -1; + if (!isBitSet(code, absBits)) + continue; + + if (code >= ABS_HAT0X && code <= ABS_HAT3Y) + { + linjs.absMap[code] = hatCount; + hatCount++; + // Skip the Y axis + code++; + } + else + { + if (ioctl(linjs.fd, EVIOCGABS(code), &linjs.absInfo[code]) < 0) + continue; + + linjs.absMap[code] = axisCount; + axisCount++; + } + } + + _GLFWjoystick* js = + _glfwAllocJoystick(name, guid, axisCount, buttonCount, hatCount); + if (!js) + { + close(linjs.fd); + return GLFW_FALSE; + } + + strncpy(linjs.path, path, sizeof(linjs.path) - 1); + memcpy(&js->linjs, &linjs, sizeof(linjs)); + + pollAbsState(js); + + _glfwInputJoystick(js, GLFW_CONNECTED); + return GLFW_TRUE; +} + +#undef isBitSet + +// Frees all resources associated with the specified joystick +// +static void closeJoystick(_GLFWjoystick* js) +{ + _glfwInputJoystick(js, GLFW_DISCONNECTED); + close(js->linjs.fd); + _glfwFreeJoystick(js); +} + +// Lexically compare joysticks by name; used by qsort +// +static int compareJoysticks(const void* fp, const void* sp) +{ + const _GLFWjoystick* fj = fp; + const _GLFWjoystick* sj = sp; + return strcmp(fj->linjs.path, sj->linjs.path); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwDetectJoystickConnectionLinux(void) +{ + if (_glfw.linjs.inotify <= 0) + return; + + ssize_t offset = 0; + char buffer[16384]; + const ssize_t size = read(_glfw.linjs.inotify, buffer, sizeof(buffer)); + + while (size > offset) + { + regmatch_t match; + const struct inotify_event* e = (struct inotify_event*) (buffer + offset); + + offset += sizeof(struct inotify_event) + e->len; + + if (regexec(&_glfw.linjs.regex, e->name, 1, &match, 0) != 0) + continue; + + char path[PATH_MAX]; + snprintf(path, sizeof(path), "/dev/input/%s", e->name); + + if (e->mask & (IN_CREATE | IN_ATTRIB)) + openJoystickDevice(path); + else if (e->mask & IN_DELETE) + { + for (int jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + if (strcmp(_glfw.joysticks[jid].linjs.path, path) == 0) + { + closeJoystick(_glfw.joysticks + jid); + break; + } + } + } + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwInitJoysticksLinux(void) +{ + const char* dirname = "/dev/input"; + + _glfw.linjs.inotify = inotify_init1(IN_NONBLOCK | IN_CLOEXEC); + if (_glfw.linjs.inotify > 0) + { + // HACK: Register for IN_ATTRIB to get notified when udev is done + // This works well in practice but the true way is libudev + + _glfw.linjs.watch = inotify_add_watch(_glfw.linjs.inotify, + dirname, + IN_CREATE | IN_ATTRIB | IN_DELETE); + } + + // Continue without device connection notifications if inotify fails + + if (regcomp(&_glfw.linjs.regex, "^event[0-9]\\+$", 0) != 0) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "Linux: Failed to compile regex"); + return GLFW_FALSE; + } + + int count = 0; + + DIR* dir = opendir(dirname); + if (dir) + { + struct dirent* entry; + + while ((entry = readdir(dir))) + { + regmatch_t match; + + if (regexec(&_glfw.linjs.regex, entry->d_name, 1, &match, 0) != 0) + continue; + + char path[PATH_MAX]; + + snprintf(path, sizeof(path), "%s/%s", dirname, entry->d_name); + + if (openJoystickDevice(path)) + count++; + } + + closedir(dir); + } + + // Continue with no joysticks if enumeration fails + + qsort(_glfw.joysticks, count, sizeof(_GLFWjoystick), compareJoysticks); + return GLFW_TRUE; +} + +void _glfwTerminateJoysticksLinux(void) +{ + for (int jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + _GLFWjoystick* js = _glfw.joysticks + jid; + if (js->connected) + closeJoystick(js); + } + + if (_glfw.linjs.inotify > 0) + { + if (_glfw.linjs.watch > 0) + inotify_rm_watch(_glfw.linjs.inotify, _glfw.linjs.watch); + + close(_glfw.linjs.inotify); + regfree(&_glfw.linjs.regex); + } +} + +GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode) +{ + // Read all queued events (non-blocking) + for (;;) + { + struct input_event e; + + errno = 0; + if (read(js->linjs.fd, &e, sizeof(e)) < 0) + { + // Reset the joystick slot if the device was disconnected + if (errno == ENODEV) + closeJoystick(js); + + break; + } + + if (e.type == EV_SYN) + { + if (e.code == SYN_DROPPED) + _glfw.linjs.dropped = GLFW_TRUE; + else if (e.code == SYN_REPORT) + { + _glfw.linjs.dropped = GLFW_FALSE; + pollAbsState(js); + } + } + + if (_glfw.linjs.dropped) + continue; + + if (e.type == EV_KEY) + handleKeyEvent(js, e.code, e.value); + else if (e.type == EV_ABS) + handleAbsEvent(js, e.code, e.value); + } + + return js->connected; +} + +const char* _glfwGetMappingNameLinux(void) +{ + return "Linux"; +} + +void _glfwUpdateGamepadGUIDLinux(char* guid) +{ +} + +#endif // GLFW_BUILD_LINUX_JOYSTICK + diff --git a/lib/glfw/src/linux_joystick.h b/lib/glfw/src/linux_joystick.h new file mode 100644 index 0000000..df605e7 --- /dev/null +++ b/lib/glfw/src/linux_joystick.h @@ -0,0 +1,63 @@ +//======================================================================== +// GLFW 3.4 Linux - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2014 Jonas Ådahl +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include +#include +#include + +#define GLFW_LINUX_JOYSTICK_STATE _GLFWjoystickLinux linjs; +#define GLFW_LINUX_LIBRARY_JOYSTICK_STATE _GLFWlibraryLinux linjs; + +// Linux-specific joystick data +// +typedef struct _GLFWjoystickLinux +{ + int fd; + char path[PATH_MAX]; + int keyMap[KEY_CNT - BTN_MISC]; + int absMap[ABS_CNT]; + struct input_absinfo absInfo[ABS_CNT]; + int hats[4][2]; +} _GLFWjoystickLinux; + +// Linux-specific joystick API data +// +typedef struct _GLFWlibraryLinux +{ + int inotify; + int watch; + regex_t regex; + GLFWbool dropped; +} _GLFWlibraryLinux; + +void _glfwDetectJoystickConnectionLinux(void); + +GLFWbool _glfwInitJoysticksLinux(void); +void _glfwTerminateJoysticksLinux(void); +GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode); +const char* _glfwGetMappingNameLinux(void); +void _glfwUpdateGamepadGUIDLinux(char* guid); + diff --git a/lib/glfw/src/mappings.h b/lib/glfw/src/mappings.h new file mode 100644 index 0000000..270fa4c --- /dev/null +++ b/lib/glfw/src/mappings.h @@ -0,0 +1,1001 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2006-2018 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// As mappings.h.in, this file is used by CMake to produce the mappings.h +// header file. If you are adding a GLFW specific gamepad mapping, this is +// where to put it. +//======================================================================== +// As mappings.h, this provides all pre-defined gamepad mappings, including +// all available in SDL_GameControllerDB. Do not edit this file. Any gamepad +// mappings not specific to GLFW should be submitted to SDL_GameControllerDB. +// This file can be re-generated from mappings.h.in and the upstream +// gamecontrollerdb.txt with the 'update_mappings' CMake target. +//======================================================================== + +// All gamepad mappings not labeled GLFW are copied from the +// SDL_GameControllerDB project under the following license: +// +// Simple DirectMedia Layer +// Copyright (C) 1997-2013 Sam Lantinga +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the +// use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. + +const char* _glfwDefaultMappings[] = +{ +#if defined(_GLFW_WIN32) +"03000000fa2d00000100000000000000,3DRUDDER,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows,", +"03000000c82d00002038000000000000,8bitdo,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000951000000000000,8BitDo Dogbone Modkit,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Windows,", +"03000000c82d000011ab000000000000,8BitDo F30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00001038000000000000,8BitDo F30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000650000000000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00005106000000000000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000151000000000000,8BitDo M30 ModKit,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000310000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00002028000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00008010000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000451000000000000,8BitDo N30 Modkit,a:b1,b:b0,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,start:b11,platform:Windows,", +"03000000c82d00000190000000000000,8BitDo N30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000022000000090000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000203800000900000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000360000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00002867000000000000,8BitDo S30 Modkit,a:b0,b:b1,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b8,lefttrigger:b9,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000130000000000000,8BitDo SF30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000060000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000061000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d000021ab000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000102800000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00003028000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000030000000000000,8BitDo SN30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00001290000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d000020ab000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00004028000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00006228000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000351000000000000,8BitDo SN30 Modkit,a:b1,b:b0,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000121000000000000,8BitDo SN30 Pro for Android,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000260000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000261000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000031000000000000,8BitDo Wireless Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001890000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00003032000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000a00500003232000000000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000a30c00002700000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000a30c00002800000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"030000008f0e00001200000000000000,Acme GA-02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", +"03000000c01100000355000011010000,ACRUX USB GAME PAD,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000fa190000f0ff000000000000,Acteck AGJ-3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"030000006f0e00001413000000000000,Afterglow,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00001401000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00001402000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d62000001d57000000000000,Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000491900001904000000000000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000710100001904000000000000,Amazon Luna Controller,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b8,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b4,rightstick:b7,rightx:a3,righty:a4,start:b6,x:b3,y:b2,platform:Windows,", +"03000000ef0500000300000000000000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows,", +"03000000d6200000e557000000000000,Batarang,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows,", +"030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000bc2000000055000000000000,Betop BFM Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000bc2000006312000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000bc2000006321000000000000,BETOP CONTROLLER,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000bc2000006412000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000c01100000555000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000c01100000655000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000790000000700000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"03000000808300000300000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", +"03000000120c0000210e000000000000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"0300000066f700000500000000000000,BrutalLegendTest,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d81d00000b00000000000000,BUFFALO BSGP1601 Series ,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows,", +"03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000457500000401000000000000,Cobra,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000005e0400008e02000000000000,Controller (XBOX 360 For Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000a102000000000000,Controller (Xbox 360 Wireless Receiver for Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000ff02000000000000,Controller (Xbox One For Windows) - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000ea02000000000000,Controller (Xbox One For Windows) - Wireless,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Windows,", +"03000000a306000022f6000000000000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000007d0400000840000000000000,Destroyer Tiltpad,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,x:b0,y:b3,platform:Windows,", +"03000000791d00000103000000000000,Dual Box WII,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000bd12000002e0000000000000,Dual USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows,", +"030000008f0e00000910000000000000,DualShock 2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows,", +"030000006f0e00003001000000000000,EA SPORTS PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,", +"03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,", +"03000000120c0000f61c000000000000,Elite,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", +"03000000341a00000108000000000000,EXEQ RF USB Gamepad 8206,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000006f0e00008401000000000000,Faceoff Deluxe+ Audio Wired Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00008001000000000000,Faceoff Wired Pro Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000852100000201000000000000,FF-GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008500000000000000,Fighting Commander 2016 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008400000000000000,Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008700000000000000,Fighting Stick mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008800000000000000,Fighting Stick mini 4,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows,", +"030000000d0f00002700000000000000,FIGHTING STICK V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"78696e70757403000000000000000000,Fightstick TES,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000790000002201000000000000,Game Controller for PC,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"0300000066f700000100000000000000,Game VIB Joystick,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows,", +"03000000260900002625000000000000,Gamecube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows,", +"03000000790000004618000000000000,GameCube Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", +"030000008f0e00000d31000000000000,GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000280400000140000000000000,GamePad Pro USB,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ac0500003d03000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000ac0500004d04000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000ffff00000000000000000000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000009b2800003200000000000000,GC/N64 to USB v3.4,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,", +"030000009b2800006000000000000000,GC/N64 to USB v3.6,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,", +"030000008305000009a0000000000000,Genius,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000008305000031b0000000000000,Genius Maxfire Blaze 3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000451300000010000000000000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000005c1a00003330000000000000,Genius MaxFire Grandias 12V,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", +"03000000300f00000b01000000000000,GGE909 Recoil Pad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000f0250000c283000000000000,Gioteck,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000f025000021c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000f0250000c383000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000f0250000c483000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"030000007d0400000540000000000000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00004900000000000000,Hatsune Miku Sho Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000001008000001e1000000000000,Havit HV-G60,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d81400000862000000000000,HitBox Edition Cthulhu+,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", +"03000000632500002605000000000000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"030000000d0f00002d00000000000000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005f00000000000000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005e00000000000000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00004000000000000000,Hori Fighting Stick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00001600000000007803,HORI Real Arcade Pro EX-SE (Xbox 360),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00009c00000000000000,Hori TAC Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000c100000000000000,Horipad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006e00000000000000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006600000000000000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005500000000000000,Horipad 4 FPS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000ee00000000000000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000250900000017000000000000,HRAP2 on PS/SS/N64 Joypad to USB BOX,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows,", +"030000008f0e00001330000000000000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d81d00000f00000000000000,iBUFFALO BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d81d00001000000000000000,iBUFFALO BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000830500006020000000000000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Windows,", +"03000000b50700001403000000000000,Impact Black,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"030000006f0e00002401000000000000,INJUSTICE FightStick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ac0500002c02000000000000,IPEGA,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000491900000204000000000000,Ipega PG-9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000491900000304000000000000,Ipega PG-9087 - Bluetooth Gamepad,+righty:+a5,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows,", +"030000006e0500000a20000000000000,JC-DUX60 ELECOM MMO Gamepad,a:b2,b:b3,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b14,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b15,righttrigger:b13,rightx:a3,righty:a4,start:b20,x:b0,y:b1,platform:Windows,", +"030000006e0500000520000000000000,JC-P301U,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", +"030000006e0500000320000000000000,JC-U3613M (DInput),a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", +"030000006e0500000720000000000000,JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,", +"030000007e0500000620000000000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows,", +"030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows,", +"030000007e0500000720000000000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", +"030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", +"03000000bd12000003c0000010010000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000bd12000003c0000000000000,JY-P70UR,a:b1,b:b0,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b11,righttrigger:b9,rightx:a3,righty:a2,start:b4,x:b3,y:b2,platform:Windows,", +"03000000242f00002d00000000000000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000242f00008a00000000000000,JYS Wireless Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,", +"03000000790000000200000000000000,King PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows,", +"030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d04000018c2000000000000,Logitech F510 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d04000019c2000000000000,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d0400001ac2000000000000,Logitech Precision Gamepad,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d0400000ac2000000000000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows,", +"03000000380700006652000000000000,Mad Catz C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700005032000000000000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700005082000000000000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008433000000000000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008483000000000000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008134000000000000,Mad Catz FightStick TE2+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008184000000000000,Mad Catz FightStick TE2+ PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700006252000000000000,Mad Catz Micro C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008532000000000000,Madcatz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700003888000000000000,Madcatz Arcade Fightstick TE S+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700001888000000000000,MadCatz SFIV FightStick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000380700008081000000000000,MADCATZ SFV Arcade FightStick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows,", +"030000009f000000adbb000000000000,MaxJoypad Virtual Controller,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows,", +"03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,back:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b0,leftshoulder:b4,leftstick:b0,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", +"03000000242f00007300000000000000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,", +"0300000079000000d218000000000000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d620000010a7000000000000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000008f0e00001030000000000000,Mayflash USB Adapter for original Sega Saturn controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,rightshoulder:b2,righttrigger:b7,start:b9,x:b3,y:b4,platform:Windows,", +"0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", +"03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000002418000000000000,Mega Drive,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b2,start:b9,x:b3,y:b4,platform:Windows,", +"03000000380700006382000000000000,MLG GamePad PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000c62400002a89000000000000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c62400002b89000000000000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c62400001a89000000000000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c62400001b89000000000000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000efbe0000edfe000000000000,Monect Virtual Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"030000006b140000010c000000000000,NACON GC-400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000921200004b46000000000000,NES 2-port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Windows,", +"03000000790000004518000000000000,NEXILUX GAMECUBE Controller Adapter,platform:Windows,a:b1,b:b0,x:b2,y:b3,start:b9,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,", +"030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Windows,", +"03000000152000000182000000000000,NGDS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"03000000bd12000015d0000000000000,Nintendo Retrolink USB Super SNES Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows,", +"030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Windows,", +"03000000550900001472000000000000,NVIDIA Controller v01.04,a:b11,b:b10,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b5,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b4,righttrigger:a5,rightx:a3,righty:a6,start:b3,x:b9,y:b8,platform:Windows,", +"030000004b120000014d000000000000,NYKO AIRFLO,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a3,leftstick:a0,lefttrigger:b6,rightshoulder:b5,rightstick:a2,righttrigger:b7,start:b9,x:b2,y:b3,platform:Windows,", +"03000000d620000013a7000000000000,NSW wired controller,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", +"03000000782300000a10000000000000,Onlive Wireless Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,platform:Windows,", +"03000000d62000006d57000000000000,OPP PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006b14000001a1000000000000,Orange Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", +"03000000362800000100000000000000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,x:b1,y:b2,platform:Windows,", +"03000000120c0000f60e000000000000,P4 Wired Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00000901000000000000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"030000004c050000da0c000000000000,PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"030000004c0500003713000000000000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d62000006dca000000000000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d62000009557000000000000,Pro Elite PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d62000009f31000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d6200000c757000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000632500002306000000000000,PS Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows,", +"03000000e30500009605000000000000,PS to USB convert cable,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000100800000100000000000000,PS1 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"030000008f0e00007530000000000000,PS1 Controller,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000100800000300000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000666600006706000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Windows,", +"030000006b1400000303000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000009d0d00001330000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000250900000500000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows,", +"030000004c0500006802000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b10,lefttrigger:a3~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:a4~,rightx:a2,righty:a5,start:b8,x:b3,y:b0,platform:Windows,", +"03000000632500007505000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,", +"030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000003807000056a8000000000000,PS3 RF pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000100000008200000000000000,PS360+ v1.66,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:h0.4,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ff000000cb01000000000000,PSP,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000300f00000011000000000000,QanBa Arcade JoyStick 1008,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b10,x:b0,y:b3,platform:Windows,", +"03000000300f00001611000000000000,QanBa Arcade JoyStick 4018,a:b1,b:b2,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows,", +"03000000222c00000020000000000000,QANBA DRONE ARCADE JOYSTICK,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001210000000000000,QanBa Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", +"03000000341a00000104000000000000,QanBa Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,platform:Windows,", +"03000000222c00000223000000000000,Qanba Obsidian Arcade Joystick PS3 Mode,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000222c00000023000000000000,Qanba Obsidian Arcade Joystick PS4 Mode,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000321500000204000000000000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000104000000000000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000321500000011000000000000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000009000000000000,Razer Serval,+lefty:+a2,-lefty:-a1,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,leftx:a0,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00001100000000000000,REAL ARCADE PRO.3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00007000000000000000,REAL ARCADE PRO.4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00002200000000000000,REAL ARCADE Pro.V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005b00000000000000,Real Arcade Pro.V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005c00000000000000,Real Arcade Pro.V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000001100000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000bd12000013d0000000000000,Retrolink USB SEGA Saturn Classic,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,lefttrigger:b6,rightshoulder:b2,righttrigger:b7,start:b8,x:b3,y:b4,platform:Windows,", +"0300000000f000000300000000000000,RetroUSB.com RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows,", +"0300000000f00000f100000000000000,RetroUSB.com Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows,", +"030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000006b140000020d000000000000,Revolution Pro Controller 2(1/2),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000006b140000130d000000000000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f04000003d0000000000000,run'n'drive,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000a30600001af5000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000a306000023f6000000000000,Saitek Cyborg V.1 Game pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001201000000000000,Saitek Dual Analog Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000a30600000701000000000000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Windows,", +"03000000a30600000cff000000000000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b0,y:b1,platform:Windows,", +"03000000a30600000c04000000000000,Saitek P2900,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001001000000000000,Saitek P480 Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000a30600000b04000000000000,Saitek P990,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", +"03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Windows,", +"03000000a30600002106000000000000,Saitek PS1000,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000a306000020f6000000000000,Saitek PS2700,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001101000000000000,Saitek Rumble Pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000730700000401000000000000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Windows,", +"0300000000050000289b000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,", +"030000009b2800000500000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000a30c00002500000000000000,Sega Genesis Mini 3B controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Windows,", +"03000000a30c00002400000000000000,Sega Mega Drive Mini 6B controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000341a00000208000000000000,SL-6555-SBK,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,platform:Windows,", +"03000000341a00000908000000000000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000008f0e00000800000000000000,SpeedLink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d11800000094000000000000,Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows,", +"03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000381000001214000000000000,SteelSeries Free,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows,", +"03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,platform:Windows,", +"03000000790000001c18000000000000,STK-7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000ff1100003133000000000000,SVEN X-PAD,a:b2,b:b3,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a4,start:b5,x:b0,y:b1,platform:Windows,", +"03000000d620000011a7000000000000,Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000457500002211000000000000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f04000007d0000000000000,T Mini Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f0400000ab1000000000000,T.16000M,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b10,x:b2,y:b3,platform:Windows,", +"03000000fa1900000706000000000000,Team 5,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000b50700001203000000000000,Techmobility X6-38V,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"030000004f04000015b3000000000000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", +"030000004f04000023b3000000000000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f0400000ed0000000000000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Windows,", +"030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", +"03000000666600000488000000000000,TigerGame PS/PS2 Game Controller Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000d62000006000000000000000,Tournament PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"030000004f04000087b6000000000000,TWCS Throttle,dpdown:b8,dpleft:b9,dpright:b7,dpup:b6,leftstick:b5,lefttrigger:-a5,leftx:a0,lefty:a1,righttrigger:+a5,platform:Windows,", +"03000000d90400000200000000000000,TwinShock PS2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"030000006e0500001320000000000000,U4113,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000300f00000701000000000000,USB 4-Axis 12-Button Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000341a00002308000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000005509000000b4000000000000,USB gamepad,a:b10,b:b11,back:b5,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,guide:b14,leftshoulder:b8,leftstick:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b4,x:b12,y:b13,platform:Windows,", +"030000006b1400000203000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000790000000a00000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"03000000f0250000c183000000000000,USB gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ff1100004133000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000632500002305000000000000,USB Vibration Joystick (BM),a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000790000001a18000000000000,Venom,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00000302000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00000702000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"0300000034120000adbe000000000000,vJoy Device,a:b0,b:b1,back:b15,dpdown:b6,dpleft:b7,dpright:b8,dpup:b5,guide:b16,leftshoulder:b9,leftstick:b13,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b14,righttrigger:b12,rightx:a3,righty:a4,start:b4,x:b2,y:b3,platform:Windows,", +"030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000130b000000000000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000450c00002043000000000000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000ac0500005b05000000000000,Xiaoji Gamesir-G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000172700004431000000000000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000786901006e70000000000000,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000790000004f18000000000000,ZD-T Android,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000120c0000101e000000000000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"78696e70757401000000000000000000,XInput Gamepad (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757402000000000000000000,XInput Wheel (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757403000000000000000000,XInput Arcade Stick (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757404000000000000000000,XInput Flight Stick (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757405000000000000000000,XInput Dance Pad (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757406000000000000000000,XInput Guitar (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757408000000000000000000,XInput Drum Kit (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +#endif // _GLFW_WIN32 + +#if defined(_GLFW_COCOA) +"030000008f0e00000300000009010000,2In1 USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000c82d00000090000001000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000650000001000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00005106000000010000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00001590000001000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"030000003512000012ab000001000000,8BitDo NES30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000022000000090000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000190000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000102800000900000000000000,8Bitdo SFC30 GamePad Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00001290000001000000,8BitDo SN30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00004028000000010000,8Bitdo SN30 GamePad,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,dpup:-a1,dpdown:+a1,dpleft:-a0,dpright:+a0,platform:Mac OS X,", +"03000000c82d00000160000001000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000260000001000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000031000001000000,8BitDo Wireless Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001890000001000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a31,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000a00500003232000009010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000a30c00002700000003030000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000a30c00002800000003030000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000ef0500000300000000020000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Mac OS X,", +"03000000491900001904000001010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Mac OS X,", +"03000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X,", +"03000000c62400001a89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X,", +"03000000c62400001b89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000120c0000200e000000010000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000120c0000210e000000010000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X,", +"03000000a306000022f6000001030000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000790000004618000000010000,GameCube Controller Adapter,a:b4,b:b0,dpdown:b56,dpleft:b60,dpright:b52,dpup:b48,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X,", +"03000000ad1b000001f9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006f0e00000102000000000000,GameStop Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000007d0400000540000001010000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000280400000140000000020000,Gravis Gamepad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000008f0e00000300000007010000,GreenAsia Inc. USB Joystick,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Mac OS X,", +"030000000d0f00002d00000000100000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00005f00000000010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00005e00000000010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00005f00000000000000,HORI Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00005e00000000000000,HORI Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00004d00000000000000,HORI Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00009200000000010000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00006e00000000010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00006600000000010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00006600000000000000,HORIPAD FPS PLUS 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f0000ee00000000010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000008f0e00001330000011010000,HuiJia SNES Controller,a:b4,b:b2,back:b16,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b12,rightshoulder:b14,start:b18,x:b6,y:b0,platform:Mac OS X,", +"03000000830500006020000000010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X,", +"03000000830500006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X,", +"030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000242f00002d00000007010000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000006d04000016c2000000020000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d04000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d04000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d04000019c2000005030000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d0400001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000006d04000018c2000000010000,Logitech RumblePad 2 USB,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d04000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000380700005032000000010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000380700005082000000010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000380700008433000000010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000380700008483000000010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000790000000600000007010000,Marvo GT-004,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,", +"03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000242f00007300000000020000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Mac OS X,", +"0300000079000000d218000026010000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000d620000010a7000003010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X,", +"03000000790000000018000000010000,Mayflash Wii U Pro Controller Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X,", +"03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X,", +"03000000d8140000cecf000000000000,MC Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000005e0400002700000001010000,Microsoft SideWinder Plug & Play Game Pad,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,leftx:a0,lefty:a1,righttrigger:b5,x:b2,y:b3,platform:Mac OS X,", +"03000000d62000007162000001000000,Moga Pro 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X,", +"03000000c62400002a89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c62400002b89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000632500007505000000020000,NEOGEO mini PAD Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000921200004b46000003020000,NES 2-port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Mac OS X,", +"030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000d620000011a7000000020000,Nintendo Switch Core (Plus) Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000d620000011a7000010050000,Nintendo Switch PowerA Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", +"030000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000550900001472000025050000,NVIDIA Controller v01.04,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Mac OS X,", +"030000006f0e00000901000002010000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000004c050000da0c000000010000,Playstation Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000004c0500003713000000010000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000d62000006dca000000010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000100800000300000006010000,PS2 Adapter,a:b2,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,", +"030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,", +"030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000321500000204000000010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000321500000104000000010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000321500000010000000010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000321500000011000000010000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,", +"0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000790000001100000000000000,Retrolink Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a3,lefty:a4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006b140000130d000000010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000c6240000fefa000000000000,Rock Candy Gamepad for PS3,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000730700000401000000010000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Mac OS X,", +"03000000811700007e05000000000000,Sega Saturn,a:b2,b:b4,dpdown:b16,dpleft:b15,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,leftx:a0,lefty:a2,rightshoulder:b9,righttrigger:a4,start:b13,x:b0,y:b6,platform:Mac OS X,", +"03000000b40400000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X,", +"030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"0300000000f00000f100000000000000,SNES RetroPort,a:b2,b:b3,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,rightshoulder:b7,start:b6,x:b0,y:b1,platform:Mac OS X,", +"030000004c050000e60c000000010000,Sony DualSense,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000a00b000000000000,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000d11800000094000000010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,platform:Mac OS X,", +"03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X,", +"03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X,", +"050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X,", +"03000000110100001714000000000000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X,", +"03000000110100001714000020010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X,", +"03000000457500002211000000010000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004f04000015b3000000000000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Mac OS X,", +"030000004f0400000ed0000000020000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Mac OS X,", +"03000000bd12000015d0000000000000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000bd12000015d0000000010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,platform:Mac OS X,", +"030000006f0e00000302000025040000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006f0e00000702000003060000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000791d00000103000009010000,Wii Classic Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,platform:Mac OS X,", +"050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,platform:Mac OS X,", +"030000005e0400008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000006f0e00000104000000000000,Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000c6240000045d000000000000,Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000050b000003090000,Xbox Elite Wireless Controller Series 2,a:b0,b:b1,back:b31,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b53,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c62400003a54000000000000,Xbox One PowerA Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000d102000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000dd02000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000e302000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000e002000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000e002000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000ea02000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000fd02000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000120c0000100e000000010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000120c0000101e000000010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +#endif // _GLFW_COCOA + +#if defined(GLFW_BUILD_LINUX_JOYSTICK) +"03000000c82d00000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00001038000000010000,8Bitdo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00005106000000010000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000310000011010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux,", +"05000000c82d00008010000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux,", +"03000000022000000090000011010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00002038000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000190000011010000,8Bitdo NES30 Pro 8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00000060000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00000061000000010000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"030000003512000012ab000010010000,8Bitdo SFC30 GamePad,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux,", +"05000000102800000900000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00003028000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00001290000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00006228000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000260000011010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000202800000900000000010000,8BitDo SNES30 Gamepad,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000031000011010000,8BitDo Wireless Adapter (DInput),a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000005e0400008e02000020010000,8BitDo Wireless Adapter (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c82d00001890000011010000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"050000005e040000e002000030110000,8BitDo Zero 2 (XInput),a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux,", +"05000000a00500003232000001000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux,", +"05000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c01100000355000011010000,ACRUX USB GAME PAD,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00001302000000010000,Afterglow,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00003901000020060000,Afterglow Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00003901000013020000,Afterglow Prismatic Wired Controller 048-007-NA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000100000008200000011010000,Akishop Customs PS360+ v1.66,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000007c1800000006000010010000,Alienware Dual Compatible Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", +"05000000491900000204000021000000,Amazon Fire Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000491900001904000011010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux,", +"05000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", +"03000000790000003018000011010000,Arcade Fightstick F300,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"03000000a30c00002700000011010000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", +"03000000a30c00002800000011010000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", +"05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux,", +"05000000050b00000045000040000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux,", +"03000000503200000110000000000000,Atari Classic Controller,a:b0,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,x:b1,platform:Linux,", +"05000000503200000110000000000000,Atari Classic Controller,a:b0,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,x:b1,platform:Linux,", +"03000000503200000210000000000000,Atari Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", +"05000000503200000210000000000000,Atari Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", +"03000000120c00000500000010010000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux,", +"03000000ef0500000300000000010000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux,", +"03000000c62400001b89000011010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000c21100000791000011010000,Be1 GC101 Controller 1.03 mode,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000c31100000791000011010000,Be1 GC101 GAMEPAD 1.03 mode,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000005e0400008e02000003030000,Be1 GC101 Xbox 360 Controller mode,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"05000000bc2000000055000001000000,BETOP AX1 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000666600006706000000010000,boom PSX to PC Converter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux,", +"03000000120c0000200e000011010000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000120c0000210e000011010000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000120c0000f70e000011010000,Brook Universal Fighting Board,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"03000000ffff0000ffff000000010000,Chinese-made Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000000b0400003365000000010000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Linux,", +"03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Linux,", +"03000000a306000022f6000011010000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"03000000b40400000a01000000010000,CYPRESS USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux,", +"03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux,", +"030000004f04000004b3000010010000,Dual Power 2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", +"03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000008f0e00000800000010010000,Gasia Co. Ltd PS(R) Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000006f0e00001304000000010000,Generic X-Box pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000451300000010000010010000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000007d0400000540000000010000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"03000000280400000140000000010000,Gravis GamePad Pro USB ,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000008f0e00000610000000010000,GreenAsia Electronics 4Axes 12Keys GamePad ,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux,", +"030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000f0250000c383000010010000,GT VX2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"06000000adde0000efbe000002010000,Hidromancer Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,a:b1,b:b2,back:b8,guide:b9,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux,", +"03000000c9110000f055000011010000,HJC Game GAMEPAD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000632500002605000010010000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000000d0f00000d00000000010000,hori,a:b0,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftx:b4,lefty:b5,rightshoulder:b7,start:b9,x:b1,y:b2,platform:Linux,", +"030000000d0f00001000000011010000,HORI CO. LTD. FIGHTING STICK 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f0000c100000011010000,HORI CO. LTD. HORIPAD S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00006a00000011010000,HORI CO. LTD. Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00006b00000011010000,HORI CO. LTD. Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00002200000011010000,HORI CO. LTD. REAL ARCADE Pro.V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00008500000010010000,HORI Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00008600000002010000,Hori Fighting Commander,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000000d0f00005f00000011010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00005e00000011010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000000d0f00009200000011010000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f0000aa00000011010000,HORI Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000000d0f0000d800000072056800,HORI Real Arcade Pro S,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", +"030000000d0f00001600000000010000,Hori Real Arcade Pro.EX-SE (Xbox 360),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux,", +"030000000d0f00006e00000011010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00006600000011010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f0000ee00000011010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00006700000001010000,HORIPAD ONE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000008f0e00001330000010010000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Linux,", +"03000000242e00008816000001010000,Hyperkin X91,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux,", +"050000006964726f69643a636f6e0000,idroid:con,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000b50700001503000010010000,impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", +"03000000d80400008200000003000000,IMS PCU#0 Gamepad Interface,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,platform:Linux,", +"03000000fd0500000030000000010000,InterAct GoPad I-73000 (Fighting Game Layout),a:b3,b:b4,back:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b7,x:b0,y:b1,platform:Linux,", +"0500000049190000020400001b010000,Ipega PG-9069 - Bluetooth Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b161,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000632500007505000011010000,Ipega PG-9099 - Bluetooth Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux,", +"03000000300f00001001000010010000,Jess Tech Dual Analog Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", +"03000000300f00000b01000010010000,Jess Tech GGE909 PC Recoil Pad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux,", +"050000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux,", +"030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux,", +"050000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux,", +"03000000bd12000003c0000010010000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000242f00002d00000011010000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000242f00008a00000011010000,JYS Wireless Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux,", +"030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d0400001ec2000019200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d0400000ac2000010010000,Logitech Inc. WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux,", +"030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux,", +"050000004d4f435554452d3035305800,M54-PC,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000380700006652000025010000,Mad Catz C.T.R.L.R ,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700005032000011010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700005082000011010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux,", +"03000000380700008034000011010000,Mad Catz fightstick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700008084000011010000,Mad Catz fightstick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700008433000011010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700008483000011010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700001647000010040000,Mad Catz Wired Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000380700003847000090040000,Mad Catz Wired Xbox 360 Controller (SFIV),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000380700001888000010010000,MadCatz PC USB Wired Stick 8818,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700003888000010010000,MadCatz PC USB Wired Stick 8838,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000242f0000f700000001010000,Magic-S Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000120c00000500000000010000,Manta Dualshock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"03000000790000004318000010010000,Mayflash GameCube Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", +"03000000242f00007300000011010000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux,", +"0300000079000000d218000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000d620000010a7000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"0300000025090000e803000001010000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", +"03000000780000000600000010010000,Microntek USB Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", +"030000005e0400000e00000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux,", +"030000005e0400008e02000004010000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000062230000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000050b000003090000,Microsoft X-Box One Elite 2 pad,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000005e040000e302000003020000,Microsoft X-Box One Elite pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000d102000001010000,Microsoft X-Box One pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000dd02000003020000,Microsoft X-Box One pad (Firmware 2015),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000d102000003020000,Microsoft X-Box One pad v2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008502000000010000,Microsoft X-Box pad (Japan),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"030000005e040000000b000008040000,Microsoft Xbox One Elite 2 pad - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000ea02000008040000,Microsoft Xbox One S pad - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c62400001a53000000010000,Mini PE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000030000000300000002000000,Miroof,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux,", +"05000000d6200000e589000001000000,Moga 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", +"05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", +"05000000d62000007162000001000000,Moga Pro 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", +"03000000c62400002b89000011010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000c62400002a89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000c62400001a89000000010000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000250900006688000000010000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,", +"030000006b140000010c000010010000,NACON GC-400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000000d0f00000900000010010000,Natec Genesis P44,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000790000004518000010010000,NEXILUX GAMECUBE Controller Adapter,a:b1,b:b0,x:b2,y:b3,start:b9,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,platform:Linux,", +"030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Linux,", +"060000007e0500003713000000000000,Nintendo 3DS,a:b0,b:b1,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", +"060000007e0500000820000000000000,Nintendo Combined Joy-Cons (joycond),a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", +"030000007e0500003703000000016800,Nintendo GameCube Controller,a:b0,b:b2,dpdown:b6,dpleft:b4,dpright:b5,dpup:b7,lefttrigger:a4,leftx:a0,lefty:a1~,rightshoulder:b9,righttrigger:a5,rightx:a2,righty:a3~,start:b8,x:b1,y:b3,platform:Linux,", +"03000000790000004618000010010000,Nintendo GameCube Controller Adapter,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5~,righty:a2~,start:b9,x:b2,y:b3,platform:Linux,", +"050000007e0500000620000001800000,Nintendo Switch Left Joy-Con,a:b9,b:b8,back:b5,leftshoulder:b2,leftstick:b6,leftx:a1,lefty:a0~,rightshoulder:b4,start:b0,x:b7,y:b10,platform:Linux,", +"030000007e0500000920000011810000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", +"050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", +"050000007e0500000720000001800000,Nintendo Switch Right Joy-Con,a:b1,b:b2,back:b9,leftshoulder:b4,leftstick:b10,leftx:a1~,lefty:a0~,rightshoulder:b6,start:b8,x:b0,y:b3,platform:Linux,", +"050000007e0500001720000001000000,Nintendo Switch SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux,", +"050000007e0500003003000001000000,Nintendo Wii Remote Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", +"05000000010000000100000003000000,Nintendo Wiimote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000000d0500000308000010010000,Nostromo n45 Dual Analog Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux,", +"03000000550900001072000011010000,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000550900001472000011010000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux,", +"05000000550900001472000001000000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux,", +"03000000451300000830000010010000,NYKO CORE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"19000000010000000100000001010000,odroidgo2_joypad,a:b1,b:b0,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,guide:b10,leftshoulder:b4,leftstick:b12,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b14,start:b15,x:b2,y:b3,platform:Linux,", +"19000000010000000200000011000000,odroidgo2_joypad_v11,a:b1,b:b0,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b12,leftshoulder:b4,leftstick:b14,lefttrigger:b13,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b16,start:b17,x:b2,y:b3,platform:Linux,", +"030000005e0400000202000000010000,Old Xbox pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"03000000c0160000dc27000001010000,OnyxSoft Dual JoyDivision,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:Linux,", +"05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux,", +"05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux,", +"03000000830500005020000010010000,Padix Co. Ltd. Rockfire PSX/USB Bridge,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Linux,", +"03000000790000001c18000011010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000006f0e0000b802000001010000,PDP AFTERGLOW Wired Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e0000b802000013020000,PDP AFTERGLOW Wired Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00008001000011010000,PDP CO. LTD. Faceoff Wired Pro Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00003101000000010000,PDP EA Sports Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e0000c802000012010000,PDP Kingdom Hearts Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00008701000011010000,PDP Rock Candy Wired Controller for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000006f0e00000901000011010000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e0000a802000023020000,PDP Wired Controller for Xbox One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000006f0e00008501000011010000,PDP Wired Fight Pad Pro for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"0500000049190000030400001b010000,PG-9099,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000491900000204000000000000,PG-9118,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000004c050000da0c000011010000,Playstation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", +"030000004c0500003713000011010000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c62400003a54000001010000,PowerA 1428124-01,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d62000006dca000011010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000d62000000228000001010000,PowerA Wired Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c62400001a58000001010000,PowerA Xbox One Cabled,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c62400001a54000001010000,PowerA Xbox One Mini Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", +"03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", +"030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", +"030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"050000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", +"050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", +"050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", +"060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", +"030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"050000004c050000c405000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"030000004c050000e60c000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000ff000000cb01000010010000,PSP,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux,", +"03000000300f00001211000011010000,QanBa Arcade JoyStick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux,", +"030000009b2800004200000001010000,Raphnet Technologies Dual NES to USB v2.0,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Linux,", +"030000009b2800003200000001010000,Raphnet Technologies GC/N64 to USB v3.4,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,", +"030000009b2800006000000001010000,Raphnet Technologies GC/N64 to USB v3.6,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,", +"030000009b2800000300000001010000,raphnet.net 4nes4snes v1.5,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux,", +"030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000008916000000fd000024010000,Razer Onza Tournament Edition,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000321500000204000011010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000321500000104000011010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000321500000810000011010000,Razer Panthera Evo Arcade Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000321500000010000011010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000321500000011000011010000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000790000001100000010010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux,", +"0300000081170000990a000001010000,Retronic Adapter,a:b0,leftx:a0,lefty:a1,platform:Linux,", +"0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux,", +"030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000006b140000130d000011010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00001e01000011010000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00004601000001010000,Rock Candy Xbox One Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"03000000a30600001005000000010000,Saitek P150,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b2,righttrigger:b5,x:b3,y:b4,platform:Linux,", +"03000000a30600000701000000010000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Linux,", +"03000000a30600000cff000010010000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b0,y:b1,platform:Linux,", +"03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux,", +"03000000300f00001201000010010000,Saitek P380,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", +"03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux,", +"03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux,", +"03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"03000000a306000020f6000011010000,Saitek PS2700 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"03000000d81d00000e00000010010000,Savior,a:b0,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b9,x:b4,y:b5,platform:Linux,", +"03000000f025000021c1000010010000,ShanWan Gioteck PS3 Wired Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000632500007505000010010000,SHANWAN PS3/PC Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000bc2000000055000010010000,ShanWan PS3/PC Wired GamePad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000005f140000c501000010010000,SHANWAN Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000632500002305000010010000,ShanWan USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000341a00000908000010010000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000004c050000e60c000011810000,Sony DualSense,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"050000004c050000e60c000000810000,Sony DualSense ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,", +"030000005e0400008e02000073050000,Speedlink TORID Wireless Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d11800000094000011010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000de2800000211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,", +"03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000de2800004211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,", +"03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", +"05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", +"05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000381000003014000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000381000003114000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"0500000011010000311400001b010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b32,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000110100001914000009010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000ad1b000038f0000090040000,Street Fighter IV FightStick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000003b07000004a1000000010000,Suncom SFX Plus for USB,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Linux,", +"03000000666600000488000000010000,Super Joy Box 5 Pro,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,", +"0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux,", +"03000000457500002211000010010000,SZMY-POWER CO. LTD. GAMEPAD,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000008f0e00000d31000010010000,SZMY-POWER CO. LTD. GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000008f0e00001431000010010000,SZMY-POWER CO. LTD. PS3 gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f0400000ed0000011010000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000b50700000399000000010000,Thrustmaster Firestorm Digital 2,a:b2,b:b4,back:b11,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b0,righttrigger:b9,start:b1,x:b3,y:b5,platform:Linux,", +"030000004f04000003b3000010010000,Thrustmaster Firestorm Dual Analog 2,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b9,rightx:a2,righty:a3,x:b1,y:b3,platform:Linux,", +"030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Linux,", +"030000004f04000026b3000002040000,Thrustmaster Gamepad GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c6240000025b000002020000,Thrustmaster GPX Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f04000007d0000000010000,Thrustmaster T Mini Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f04000012b3000010010000,Thrustmaster vibrating gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"03000000bd12000015d0000010010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux,", +"03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux,", +"030000005e0400008e02000070050000,Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c01100000591000011010000,Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux,", +"03000000790000001100000000010000,USB Gamepad1,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux,", +"030000006f0e00000302000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00000702000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"05000000ac0500003232000001000000,VR-BOX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"03000000791d00000103000010010000,Wii Classic Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"050000000d0f0000f600000001000000,Wireless HORIPAD Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000a102000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000a102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"0000000058626f782033363020576900,Xbox 360 Wireless Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux,", +"030000005e040000a102000014010000,Xbox 360 Wireless Receiver (XBOX),a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000d102000002010000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000fd02000030110000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000050b000002090000,Xbox One Elite Series 2,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000005e040000ea02000000000000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000e002000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000fd02000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000005e040000ea02000001030000,Xbox One Wireless Controller (Model 1708),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000001050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000005e040000120b000005050000,XBox Series pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000000010000,xbox360 Wireless EasySMX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000450c00002043000010010000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000ac0500005b05000010010000,Xiaoji Gamesir-G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"05000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c0160000e105000001010000,Xin-Mo Xin-Mo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux,", +"03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000120c0000101e000011010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +#endif // GLFW_BUILD_LINUX_JOYSTICK +}; + diff --git a/lib/glfw/src/mappings.h.in b/lib/glfw/src/mappings.h.in new file mode 100644 index 0000000..ed62368 --- /dev/null +++ b/lib/glfw/src/mappings.h.in @@ -0,0 +1,82 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2006-2018 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// As mappings.h.in, this file is used by CMake to produce the mappings.h +// header file. If you are adding a GLFW specific gamepad mapping, this is +// where to put it. +//======================================================================== +// As mappings.h, this provides all pre-defined gamepad mappings, including +// all available in SDL_GameControllerDB. Do not edit this file. Any gamepad +// mappings not specific to GLFW should be submitted to SDL_GameControllerDB. +// This file can be re-generated from mappings.h.in and the upstream +// gamecontrollerdb.txt with the 'update_mappings' CMake target. +//======================================================================== + +// All gamepad mappings not labeled GLFW are copied from the +// SDL_GameControllerDB project under the following license: +// +// Simple DirectMedia Layer +// Copyright (C) 1997-2013 Sam Lantinga +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the +// use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. + +const char* _glfwDefaultMappings[] = +{ +#if defined(_GLFW_WIN32) +@GLFW_WIN32_MAPPINGS@ +"78696e70757401000000000000000000,XInput Gamepad (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757402000000000000000000,XInput Wheel (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757403000000000000000000,XInput Arcade Stick (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757404000000000000000000,XInput Flight Stick (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757405000000000000000000,XInput Dance Pad (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757406000000000000000000,XInput Guitar (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +"78696e70757408000000000000000000,XInput Drum Kit (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", +#endif // _GLFW_WIN32 + +#if defined(_GLFW_COCOA) +@GLFW_COCOA_MAPPINGS@ +#endif // _GLFW_COCOA + +#if defined(GLFW_BUILD_LINUX_JOYSTICK) +@GLFW_LINUX_MAPPINGS@ +#endif // GLFW_BUILD_LINUX_JOYSTICK +}; + diff --git a/lib/glfw/src/monitor.c b/lib/glfw/src/monitor.c new file mode 100644 index 0000000..6429493 --- /dev/null +++ b/lib/glfw/src/monitor.c @@ -0,0 +1,548 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#include +#include +#include +#include +#include +#include + + +// Lexically compare video modes, used by qsort +// +static int compareVideoModes(const void* fp, const void* sp) +{ + const GLFWvidmode* fm = fp; + const GLFWvidmode* sm = sp; + const int fbpp = fm->redBits + fm->greenBits + fm->blueBits; + const int sbpp = sm->redBits + sm->greenBits + sm->blueBits; + const int farea = fm->width * fm->height; + const int sarea = sm->width * sm->height; + + // First sort on color bits per pixel + if (fbpp != sbpp) + return fbpp - sbpp; + + // Then sort on screen area + if (farea != sarea) + return farea - sarea; + + // Then sort on width + if (fm->width != sm->width) + return fm->width - sm->width; + + // Lastly sort on refresh rate + return fm->refreshRate - sm->refreshRate; +} + +// Retrieves the available modes for the specified monitor +// +static GLFWbool refreshVideoModes(_GLFWmonitor* monitor) +{ + int modeCount; + GLFWvidmode* modes; + + if (monitor->modes) + return GLFW_TRUE; + + modes = _glfw.platform.getVideoModes(monitor, &modeCount); + if (!modes) + return GLFW_FALSE; + + qsort(modes, modeCount, sizeof(GLFWvidmode), compareVideoModes); + + _glfw_free(monitor->modes); + monitor->modes = modes; + monitor->modeCount = modeCount; + + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW event API ////// +////////////////////////////////////////////////////////////////////////// + +// Notifies shared code of a monitor connection or disconnection +// +void _glfwInputMonitor(_GLFWmonitor* monitor, int action, int placement) +{ + assert(monitor != NULL); + assert(action == GLFW_CONNECTED || action == GLFW_DISCONNECTED); + assert(placement == _GLFW_INSERT_FIRST || placement == _GLFW_INSERT_LAST); + + if (action == GLFW_CONNECTED) + { + _glfw.monitorCount++; + _glfw.monitors = + _glfw_realloc(_glfw.monitors, + sizeof(_GLFWmonitor*) * _glfw.monitorCount); + + if (placement == _GLFW_INSERT_FIRST) + { + memmove(_glfw.monitors + 1, + _glfw.monitors, + ((size_t) _glfw.monitorCount - 1) * sizeof(_GLFWmonitor*)); + _glfw.monitors[0] = monitor; + } + else + _glfw.monitors[_glfw.monitorCount - 1] = monitor; + } + else if (action == GLFW_DISCONNECTED) + { + int i; + _GLFWwindow* window; + + for (window = _glfw.windowListHead; window; window = window->next) + { + if (window->monitor == monitor) + { + int width, height, xoff, yoff; + _glfw.platform.getWindowSize(window, &width, &height); + _glfw.platform.setWindowMonitor(window, NULL, 0, 0, width, height, 0); + _glfw.platform.getWindowFrameSize(window, &xoff, &yoff, NULL, NULL); + _glfw.platform.setWindowPos(window, xoff, yoff); + } + } + + for (i = 0; i < _glfw.monitorCount; i++) + { + if (_glfw.monitors[i] == monitor) + { + _glfw.monitorCount--; + memmove(_glfw.monitors + i, + _glfw.monitors + i + 1, + ((size_t) _glfw.monitorCount - i) * sizeof(_GLFWmonitor*)); + break; + } + } + } + + if (_glfw.callbacks.monitor) + _glfw.callbacks.monitor((GLFWmonitor*) monitor, action); + + if (action == GLFW_DISCONNECTED) + _glfwFreeMonitor(monitor); +} + +// Notifies shared code that a full screen window has acquired or released +// a monitor +// +void _glfwInputMonitorWindow(_GLFWmonitor* monitor, _GLFWwindow* window) +{ + assert(monitor != NULL); + monitor->window = window; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Allocates and returns a monitor object with the specified name and dimensions +// +_GLFWmonitor* _glfwAllocMonitor(const char* name, int widthMM, int heightMM) +{ + _GLFWmonitor* monitor = _glfw_calloc(1, sizeof(_GLFWmonitor)); + monitor->widthMM = widthMM; + monitor->heightMM = heightMM; + + strncpy(monitor->name, name, sizeof(monitor->name) - 1); + + return monitor; +} + +// Frees a monitor object and any data associated with it +// +void _glfwFreeMonitor(_GLFWmonitor* monitor) +{ + if (monitor == NULL) + return; + + _glfw.platform.freeMonitor(monitor); + + _glfwFreeGammaArrays(&monitor->originalRamp); + _glfwFreeGammaArrays(&monitor->currentRamp); + + _glfw_free(monitor->modes); + _glfw_free(monitor); +} + +// Allocates red, green and blue value arrays of the specified size +// +void _glfwAllocGammaArrays(GLFWgammaramp* ramp, unsigned int size) +{ + ramp->red = _glfw_calloc(size, sizeof(unsigned short)); + ramp->green = _glfw_calloc(size, sizeof(unsigned short)); + ramp->blue = _glfw_calloc(size, sizeof(unsigned short)); + ramp->size = size; +} + +// Frees the red, green and blue value arrays and clears the struct +// +void _glfwFreeGammaArrays(GLFWgammaramp* ramp) +{ + _glfw_free(ramp->red); + _glfw_free(ramp->green); + _glfw_free(ramp->blue); + + memset(ramp, 0, sizeof(GLFWgammaramp)); +} + +// Chooses the video mode most closely matching the desired one +// +const GLFWvidmode* _glfwChooseVideoMode(_GLFWmonitor* monitor, + const GLFWvidmode* desired) +{ + int i; + unsigned int sizeDiff, leastSizeDiff = UINT_MAX; + unsigned int rateDiff, leastRateDiff = UINT_MAX; + unsigned int colorDiff, leastColorDiff = UINT_MAX; + const GLFWvidmode* current; + const GLFWvidmode* closest = NULL; + + if (!refreshVideoModes(monitor)) + return NULL; + + for (i = 0; i < monitor->modeCount; i++) + { + current = monitor->modes + i; + + colorDiff = 0; + + if (desired->redBits != GLFW_DONT_CARE) + colorDiff += abs(current->redBits - desired->redBits); + if (desired->greenBits != GLFW_DONT_CARE) + colorDiff += abs(current->greenBits - desired->greenBits); + if (desired->blueBits != GLFW_DONT_CARE) + colorDiff += abs(current->blueBits - desired->blueBits); + + sizeDiff = abs((current->width - desired->width) * + (current->width - desired->width) + + (current->height - desired->height) * + (current->height - desired->height)); + + if (desired->refreshRate != GLFW_DONT_CARE) + rateDiff = abs(current->refreshRate - desired->refreshRate); + else + rateDiff = UINT_MAX - current->refreshRate; + + if ((colorDiff < leastColorDiff) || + (colorDiff == leastColorDiff && sizeDiff < leastSizeDiff) || + (colorDiff == leastColorDiff && sizeDiff == leastSizeDiff && rateDiff < leastRateDiff)) + { + closest = current; + leastSizeDiff = sizeDiff; + leastRateDiff = rateDiff; + leastColorDiff = colorDiff; + } + } + + return closest; +} + +// Performs lexical comparison between two @ref GLFWvidmode structures +// +int _glfwCompareVideoModes(const GLFWvidmode* fm, const GLFWvidmode* sm) +{ + return compareVideoModes(fm, sm); +} + +// Splits a color depth into red, green and blue bit depths +// +void _glfwSplitBPP(int bpp, int* red, int* green, int* blue) +{ + int delta; + + // We assume that by 32 the user really meant 24 + if (bpp == 32) + bpp = 24; + + // Convert "bits per pixel" to red, green & blue sizes + + *red = *green = *blue = bpp / 3; + delta = bpp - (*red * 3); + if (delta >= 1) + *green = *green + 1; + + if (delta == 2) + *red = *red + 1; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW public API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI GLFWmonitor** glfwGetMonitors(int* count) +{ + assert(count != NULL); + + *count = 0; + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + *count = _glfw.monitorCount; + return (GLFWmonitor**) _glfw.monitors; +} + +GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (!_glfw.monitorCount) + return NULL; + + return (GLFWmonitor*) _glfw.monitors[0]; +} + +GLFWAPI void glfwGetMonitorPos(GLFWmonitor* handle, int* xpos, int* ypos) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + if (xpos) + *xpos = 0; + if (ypos) + *ypos = 0; + + _GLFW_REQUIRE_INIT(); + + _glfw.platform.getMonitorPos(monitor, xpos, ypos); +} + +GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* handle, + int* xpos, int* ypos, + int* width, int* height) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + if (xpos) + *xpos = 0; + if (ypos) + *ypos = 0; + if (width) + *width = 0; + if (height) + *height = 0; + + _GLFW_REQUIRE_INIT(); + + _glfw.platform.getMonitorWorkarea(monitor, xpos, ypos, width, height); +} + +GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* handle, int* widthMM, int* heightMM) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + if (widthMM) + *widthMM = 0; + if (heightMM) + *heightMM = 0; + + _GLFW_REQUIRE_INIT(); + + if (widthMM) + *widthMM = monitor->widthMM; + if (heightMM) + *heightMM = monitor->heightMM; +} + +GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* handle, + float* xscale, float* yscale) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + if (xscale) + *xscale = 0.f; + if (yscale) + *yscale = 0.f; + + _GLFW_REQUIRE_INIT(); + _glfw.platform.getMonitorContentScale(monitor, xscale, yscale); +} + +GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return monitor->name; +} + +GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* handle, void* pointer) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + _GLFW_REQUIRE_INIT(); + monitor->userPointer = pointer; +} + +GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return monitor->userPointer; +} + +GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWmonitorfun, _glfw.callbacks.monitor, cbfun); + return cbfun; +} + +GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* handle, int* count) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + assert(count != NULL); + + *count = 0; + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (!refreshVideoModes(monitor)) + return NULL; + + *count = monitor->modeCount; + return monitor->modes; +} + +GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + _glfw.platform.getVideoMode(monitor, &monitor->currentMode); + return &monitor->currentMode; +} + +GLFWAPI void glfwSetGamma(GLFWmonitor* handle, float gamma) +{ + unsigned int i; + unsigned short* values; + GLFWgammaramp ramp; + const GLFWgammaramp* original; + assert(handle != NULL); + assert(gamma > 0.f); + assert(gamma <= FLT_MAX); + + _GLFW_REQUIRE_INIT(); + + if (gamma != gamma || gamma <= 0.f || gamma > FLT_MAX) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid gamma value %f", gamma); + return; + } + + original = glfwGetGammaRamp(handle); + if (!original) + return; + + values = _glfw_calloc(original->size, sizeof(unsigned short)); + + for (i = 0; i < original->size; i++) + { + float value; + + // Calculate intensity + value = i / (float) (original->size - 1); + // Apply gamma curve + value = powf(value, 1.f / gamma) * 65535.f + 0.5f; + // Clamp to value range + value = _glfw_fminf(value, 65535.f); + + values[i] = (unsigned short) value; + } + + ramp.red = values; + ramp.green = values; + ramp.blue = values; + ramp.size = original->size; + + glfwSetGammaRamp(handle, &ramp); + _glfw_free(values); +} + +GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + _glfwFreeGammaArrays(&monitor->currentRamp); + if (!_glfw.platform.getGammaRamp(monitor, &monitor->currentRamp)) + return NULL; + + return &monitor->currentRamp; +} + +GLFWAPI void glfwSetGammaRamp(GLFWmonitor* handle, const GLFWgammaramp* ramp) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + assert(monitor != NULL); + assert(ramp != NULL); + assert(ramp->size > 0); + assert(ramp->red != NULL); + assert(ramp->green != NULL); + assert(ramp->blue != NULL); + + _GLFW_REQUIRE_INIT(); + + if (ramp->size <= 0) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid gamma ramp size %i", + ramp->size); + return; + } + + if (!monitor->originalRamp.size) + { + if (!_glfw.platform.getGammaRamp(monitor, &monitor->originalRamp)) + return; + } + + _glfw.platform.setGammaRamp(monitor, ramp); +} + diff --git a/lib/glfw/src/nsgl_context.m b/lib/glfw/src/nsgl_context.m new file mode 100644 index 0000000..878f32e --- /dev/null +++ b/lib/glfw/src/nsgl_context.m @@ -0,0 +1,380 @@ +//======================================================================== +// GLFW 3.4 macOS - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2009-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_COCOA) + +#include +#include + +static void makeContextCurrentNSGL(_GLFWwindow* window) +{ + @autoreleasepool { + + if (window) + [window->context.nsgl.object makeCurrentContext]; + else + [NSOpenGLContext clearCurrentContext]; + + _glfwPlatformSetTls(&_glfw.contextSlot, window); + + } // autoreleasepool +} + +static void swapBuffersNSGL(_GLFWwindow* window) +{ + @autoreleasepool { + + // HACK: Simulate vsync with usleep as NSGL swap interval does not apply to + // windows with a non-visible occlusion state + if (window->ns.occluded) + { + int interval = 0; + [window->context.nsgl.object getValues:&interval + forParameter:NSOpenGLContextParameterSwapInterval]; + + if (interval > 0) + { + const double framerate = 60.0; + const uint64_t frequency = _glfwPlatformGetTimerFrequency(); + const uint64_t value = _glfwPlatformGetTimerValue(); + + const double elapsed = value / (double) frequency; + const double period = 1.0 / framerate; + const double delay = period - fmod(elapsed, period); + + usleep(floorl(delay * 1e6)); + } + } + + [window->context.nsgl.object flushBuffer]; + + } // autoreleasepool +} + +static void swapIntervalNSGL(int interval) +{ + @autoreleasepool { + + _GLFWwindow* window = _glfwPlatformGetTls(&_glfw.contextSlot); + if (window) + { + [window->context.nsgl.object setValues:&interval + forParameter:NSOpenGLContextParameterSwapInterval]; + } + + } // autoreleasepool +} + +static int extensionSupportedNSGL(const char* extension) +{ + // There are no NSGL extensions + return GLFW_FALSE; +} + +static GLFWglproc getProcAddressNSGL(const char* procname) +{ + CFStringRef symbolName = CFStringCreateWithCString(kCFAllocatorDefault, + procname, + kCFStringEncodingASCII); + + GLFWglproc symbol = CFBundleGetFunctionPointerForName(_glfw.nsgl.framework, + symbolName); + + CFRelease(symbolName); + + return symbol; +} + +static void destroyContextNSGL(_GLFWwindow* window) +{ + @autoreleasepool { + + [window->context.nsgl.pixelFormat release]; + window->context.nsgl.pixelFormat = nil; + + [window->context.nsgl.object release]; + window->context.nsgl.object = nil; + + } // autoreleasepool +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Initialize OpenGL support +// +GLFWbool _glfwInitNSGL(void) +{ + if (_glfw.nsgl.framework) + return GLFW_TRUE; + + _glfw.nsgl.framework = + CFBundleGetBundleWithIdentifier(CFSTR("com.apple.opengl")); + if (_glfw.nsgl.framework == NULL) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "NSGL: Failed to locate OpenGL framework"); + return GLFW_FALSE; + } + + return GLFW_TRUE; +} + +// Terminate OpenGL support +// +void _glfwTerminateNSGL(void) +{ +} + +// Create the OpenGL context +// +GLFWbool _glfwCreateContextNSGL(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + if (ctxconfig->client == GLFW_OPENGL_ES_API) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "NSGL: OpenGL ES is not available on macOS"); + return GLFW_FALSE; + } + + if (ctxconfig->major > 2) + { + if (ctxconfig->major == 3 && ctxconfig->minor < 2) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "NSGL: The targeted version of macOS does not support OpenGL 3.0 or 3.1 but may support 3.2 and above"); + return GLFW_FALSE; + } + } + + // Context robustness modes (GL_KHR_robustness) are not yet supported by + // macOS but are not a hard constraint, so ignore and continue + + // Context release behaviors (GL_KHR_context_flush_control) are not yet + // supported by macOS but are not a hard constraint, so ignore and continue + + // Debug contexts (GL_KHR_debug) are not yet supported by macOS but are not + // a hard constraint, so ignore and continue + + // No-error contexts (GL_KHR_no_error) are not yet supported by macOS but + // are not a hard constraint, so ignore and continue + +#define ADD_ATTRIB(a) \ +{ \ + assert((size_t) index < sizeof(attribs) / sizeof(attribs[0])); \ + attribs[index++] = a; \ +} +#define SET_ATTRIB(a, v) { ADD_ATTRIB(a); ADD_ATTRIB(v); } + + NSOpenGLPixelFormatAttribute attribs[40]; + int index = 0; + + ADD_ATTRIB(NSOpenGLPFAAccelerated); + ADD_ATTRIB(NSOpenGLPFAClosestPolicy); + + if (ctxconfig->nsgl.offline) + { + ADD_ATTRIB(NSOpenGLPFAAllowOfflineRenderers); + // NOTE: This replaces the NSSupportsAutomaticGraphicsSwitching key in + // Info.plist for unbundled applications + // HACK: This assumes that NSOpenGLPixelFormat will remain + // a straightforward wrapper of its CGL counterpart + ADD_ATTRIB(kCGLPFASupportsAutomaticGraphicsSwitching); + } + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101000 + if (ctxconfig->major >= 4) + { + SET_ATTRIB(NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core); + } + else +#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/ + if (ctxconfig->major >= 3) + { + SET_ATTRIB(NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core); + } + + if (ctxconfig->major <= 2) + { + if (fbconfig->auxBuffers != GLFW_DONT_CARE) + SET_ATTRIB(NSOpenGLPFAAuxBuffers, fbconfig->auxBuffers); + + if (fbconfig->accumRedBits != GLFW_DONT_CARE && + fbconfig->accumGreenBits != GLFW_DONT_CARE && + fbconfig->accumBlueBits != GLFW_DONT_CARE && + fbconfig->accumAlphaBits != GLFW_DONT_CARE) + { + const int accumBits = fbconfig->accumRedBits + + fbconfig->accumGreenBits + + fbconfig->accumBlueBits + + fbconfig->accumAlphaBits; + + SET_ATTRIB(NSOpenGLPFAAccumSize, accumBits); + } + } + + if (fbconfig->redBits != GLFW_DONT_CARE && + fbconfig->greenBits != GLFW_DONT_CARE && + fbconfig->blueBits != GLFW_DONT_CARE) + { + int colorBits = fbconfig->redBits + + fbconfig->greenBits + + fbconfig->blueBits; + + // macOS needs non-zero color size, so set reasonable values + if (colorBits == 0) + colorBits = 24; + else if (colorBits < 15) + colorBits = 15; + + SET_ATTRIB(NSOpenGLPFAColorSize, colorBits); + } + + if (fbconfig->alphaBits != GLFW_DONT_CARE) + SET_ATTRIB(NSOpenGLPFAAlphaSize, fbconfig->alphaBits); + + if (fbconfig->depthBits != GLFW_DONT_CARE) + SET_ATTRIB(NSOpenGLPFADepthSize, fbconfig->depthBits); + + if (fbconfig->stencilBits != GLFW_DONT_CARE) + SET_ATTRIB(NSOpenGLPFAStencilSize, fbconfig->stencilBits); + + if (fbconfig->stereo) + { +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "NSGL: Stereo rendering is deprecated"); + return GLFW_FALSE; +#else + ADD_ATTRIB(NSOpenGLPFAStereo); +#endif + } + + if (fbconfig->doublebuffer) + ADD_ATTRIB(NSOpenGLPFADoubleBuffer); + + if (fbconfig->samples != GLFW_DONT_CARE) + { + if (fbconfig->samples == 0) + { + SET_ATTRIB(NSOpenGLPFASampleBuffers, 0); + } + else + { + SET_ATTRIB(NSOpenGLPFASampleBuffers, 1); + SET_ATTRIB(NSOpenGLPFASamples, fbconfig->samples); + } + } + + // NOTE: All NSOpenGLPixelFormats on the relevant cards support sRGB + // framebuffer, so there's no need (and no way) to request it + + ADD_ATTRIB(0); + +#undef ADD_ATTRIB +#undef SET_ATTRIB + + window->context.nsgl.pixelFormat = + [[NSOpenGLPixelFormat alloc] initWithAttributes:attribs]; + if (window->context.nsgl.pixelFormat == nil) + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "NSGL: Failed to find a suitable pixel format"); + return GLFW_FALSE; + } + + NSOpenGLContext* share = nil; + + if (ctxconfig->share) + share = ctxconfig->share->context.nsgl.object; + + window->context.nsgl.object = + [[NSOpenGLContext alloc] initWithFormat:window->context.nsgl.pixelFormat + shareContext:share]; + if (window->context.nsgl.object == nil) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "NSGL: Failed to create OpenGL context"); + return GLFW_FALSE; + } + + if (fbconfig->transparent) + { + GLint opaque = 0; + [window->context.nsgl.object setValues:&opaque + forParameter:NSOpenGLContextParameterSurfaceOpacity]; + } + + [window->ns.view setWantsBestResolutionOpenGLSurface:window->ns.retina]; + + [window->context.nsgl.object setView:window->ns.view]; + + window->context.makeCurrent = makeContextCurrentNSGL; + window->context.swapBuffers = swapBuffersNSGL; + window->context.swapInterval = swapIntervalNSGL; + window->context.extensionSupported = extensionSupportedNSGL; + window->context.getProcAddress = getProcAddressNSGL; + window->context.destroy = destroyContextNSGL; + + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI id glfwGetNSGLContext(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(nil); + + if (_glfw.platform.platformID != GLFW_PLATFORM_COCOA) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, + "NSGL: Platform not initialized"); + return nil; + } + + if (window->context.source != GLFW_NATIVE_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return nil; + } + + return window->context.nsgl.object; +} + +#endif // _GLFW_COCOA + diff --git a/lib/glfw/src/null_init.c b/lib/glfw/src/null_init.c new file mode 100644 index 0000000..de4b28f --- /dev/null +++ b/lib/glfw/src/null_init.c @@ -0,0 +1,133 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2016 Google Inc. +// Copyright (c) 2016-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#include + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwConnectNull(int platformID, _GLFWplatform* platform) +{ + const _GLFWplatform null = + { + GLFW_PLATFORM_NULL, + _glfwInitNull, + _glfwTerminateNull, + _glfwGetCursorPosNull, + _glfwSetCursorPosNull, + _glfwSetCursorModeNull, + _glfwSetRawMouseMotionNull, + _glfwRawMouseMotionSupportedNull, + _glfwCreateCursorNull, + _glfwCreateStandardCursorNull, + _glfwDestroyCursorNull, + _glfwSetCursorNull, + _glfwGetScancodeNameNull, + _glfwGetKeyScancodeNull, + _glfwSetClipboardStringNull, + _glfwGetClipboardStringNull, + _glfwInitJoysticksNull, + _glfwTerminateJoysticksNull, + _glfwPollJoystickNull, + _glfwGetMappingNameNull, + _glfwUpdateGamepadGUIDNull, + _glfwFreeMonitorNull, + _glfwGetMonitorPosNull, + _glfwGetMonitorContentScaleNull, + _glfwGetMonitorWorkareaNull, + _glfwGetVideoModesNull, + _glfwGetVideoModeNull, + _glfwGetGammaRampNull, + _glfwSetGammaRampNull, + _glfwCreateWindowNull, + _glfwDestroyWindowNull, + _glfwSetWindowTitleNull, + _glfwSetWindowIconNull, + _glfwGetWindowPosNull, + _glfwSetWindowPosNull, + _glfwGetWindowSizeNull, + _glfwSetWindowSizeNull, + _glfwSetWindowSizeLimitsNull, + _glfwSetWindowAspectRatioNull, + _glfwGetFramebufferSizeNull, + _glfwGetWindowFrameSizeNull, + _glfwGetWindowContentScaleNull, + _glfwIconifyWindowNull, + _glfwRestoreWindowNull, + _glfwMaximizeWindowNull, + _glfwShowWindowNull, + _glfwHideWindowNull, + _glfwRequestWindowAttentionNull, + _glfwFocusWindowNull, + _glfwSetWindowMonitorNull, + _glfwWindowFocusedNull, + _glfwWindowIconifiedNull, + _glfwWindowVisibleNull, + _glfwWindowMaximizedNull, + _glfwWindowHoveredNull, + _glfwFramebufferTransparentNull, + _glfwGetWindowOpacityNull, + _glfwSetWindowResizableNull, + _glfwSetWindowDecoratedNull, + _glfwSetWindowFloatingNull, + _glfwSetWindowOpacityNull, + _glfwSetWindowMousePassthroughNull, + _glfwPollEventsNull, + _glfwWaitEventsNull, + _glfwWaitEventsTimeoutNull, + _glfwPostEmptyEventNull, + _glfwGetEGLPlatformNull, + _glfwGetEGLNativeDisplayNull, + _glfwGetEGLNativeWindowNull, + _glfwGetRequiredInstanceExtensionsNull, + _glfwGetPhysicalDevicePresentationSupportNull, + _glfwCreateWindowSurfaceNull, + }; + + *platform = null; + return GLFW_TRUE; +} + +int _glfwInitNull(void) +{ + _glfwPollMonitorsNull(); + return GLFW_TRUE; +} + +void _glfwTerminateNull(void) +{ + free(_glfw.null.clipboardString); + _glfwTerminateOSMesa(); + _glfwTerminateEGL(); +} + diff --git a/lib/glfw/src/null_joystick.c b/lib/glfw/src/null_joystick.c new file mode 100644 index 0000000..1fe5072 --- /dev/null +++ b/lib/glfw/src/null_joystick.c @@ -0,0 +1,58 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2016-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwInitJoysticksNull(void) +{ + return GLFW_TRUE; +} + +void _glfwTerminateJoysticksNull(void) +{ +} + +GLFWbool _glfwPollJoystickNull(_GLFWjoystick* js, int mode) +{ + return GLFW_FALSE; +} + +const char* _glfwGetMappingNameNull(void) +{ + return ""; +} + +void _glfwUpdateGamepadGUIDNull(char* guid) +{ +} + diff --git a/lib/glfw/src/null_joystick.h b/lib/glfw/src/null_joystick.h new file mode 100644 index 0000000..a2199c5 --- /dev/null +++ b/lib/glfw/src/null_joystick.h @@ -0,0 +1,32 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +GLFWbool _glfwInitJoysticksNull(void); +void _glfwTerminateJoysticksNull(void); +GLFWbool _glfwPollJoystickNull(_GLFWjoystick* js, int mode); +const char* _glfwGetMappingNameNull(void); +void _glfwUpdateGamepadGUIDNull(char* guid); + diff --git a/lib/glfw/src/null_monitor.c b/lib/glfw/src/null_monitor.c new file mode 100644 index 0000000..63a1cd2 --- /dev/null +++ b/lib/glfw/src/null_monitor.c @@ -0,0 +1,161 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2016 Google Inc. +// Copyright (c) 2016-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#include +#include +#include + +// The the sole (fake) video mode of our (sole) fake monitor +// +static GLFWvidmode getVideoMode(void) +{ + GLFWvidmode mode; + mode.width = 1920; + mode.height = 1080; + mode.redBits = 8; + mode.greenBits = 8; + mode.blueBits = 8; + mode.refreshRate = 60; + return mode; +} + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwPollMonitorsNull(void) +{ + const float dpi = 141.f; + const GLFWvidmode mode = getVideoMode(); + _GLFWmonitor* monitor = _glfwAllocMonitor("Null SuperNoop 0", + (int) (mode.width * 25.4f / dpi), + (int) (mode.height * 25.4f / dpi)); + _glfwInputMonitor(monitor, GLFW_CONNECTED, _GLFW_INSERT_FIRST); +} + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwFreeMonitorNull(_GLFWmonitor* monitor) +{ + _glfwFreeGammaArrays(&monitor->null.ramp); +} + +void _glfwGetMonitorPosNull(_GLFWmonitor* monitor, int* xpos, int* ypos) +{ + if (xpos) + *xpos = 0; + if (ypos) + *ypos = 0; +} + +void _glfwGetMonitorContentScaleNull(_GLFWmonitor* monitor, + float* xscale, float* yscale) +{ + if (xscale) + *xscale = 1.f; + if (yscale) + *yscale = 1.f; +} + +void _glfwGetMonitorWorkareaNull(_GLFWmonitor* monitor, + int* xpos, int* ypos, + int* width, int* height) +{ + const GLFWvidmode mode = getVideoMode(); + + if (xpos) + *xpos = 0; + if (ypos) + *ypos = 10; + if (width) + *width = mode.width; + if (height) + *height = mode.height - 10; +} + +GLFWvidmode* _glfwGetVideoModesNull(_GLFWmonitor* monitor, int* found) +{ + GLFWvidmode* mode = _glfw_calloc(1, sizeof(GLFWvidmode)); + *mode = getVideoMode(); + *found = 1; + return mode; +} + +void _glfwGetVideoModeNull(_GLFWmonitor* monitor, GLFWvidmode* mode) +{ + *mode = getVideoMode(); +} + +GLFWbool _glfwGetGammaRampNull(_GLFWmonitor* monitor, GLFWgammaramp* ramp) +{ + if (!monitor->null.ramp.size) + { + unsigned int i; + + _glfwAllocGammaArrays(&monitor->null.ramp, 256); + + for (i = 0; i < monitor->null.ramp.size; i++) + { + const float gamma = 2.2f; + float value; + value = i / (float) (monitor->null.ramp.size - 1); + value = powf(value, 1.f / gamma) * 65535.f + 0.5f; + value = _glfw_fminf(value, 65535.f); + + monitor->null.ramp.red[i] = (unsigned short) value; + monitor->null.ramp.green[i] = (unsigned short) value; + monitor->null.ramp.blue[i] = (unsigned short) value; + } + } + + _glfwAllocGammaArrays(ramp, monitor->null.ramp.size); + memcpy(ramp->red, monitor->null.ramp.red, sizeof(short) * ramp->size); + memcpy(ramp->green, monitor->null.ramp.green, sizeof(short) * ramp->size); + memcpy(ramp->blue, monitor->null.ramp.blue, sizeof(short) * ramp->size); + return GLFW_TRUE; +} + +void _glfwSetGammaRampNull(_GLFWmonitor* monitor, const GLFWgammaramp* ramp) +{ + if (monitor->null.ramp.size != ramp->size) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Null: Gamma ramp size must match current ramp size"); + return; + } + + memcpy(monitor->null.ramp.red, ramp->red, sizeof(short) * ramp->size); + memcpy(monitor->null.ramp.green, ramp->green, sizeof(short) * ramp->size); + memcpy(monitor->null.ramp.blue, ramp->blue, sizeof(short) * ramp->size); +} + diff --git a/lib/glfw/src/null_platform.h b/lib/glfw/src/null_platform.h new file mode 100644 index 0000000..b646acb --- /dev/null +++ b/lib/glfw/src/null_platform.h @@ -0,0 +1,149 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2016 Google Inc. +// Copyright (c) 2016-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLFW_NULL_WINDOW_STATE _GLFWwindowNull null; +#define GLFW_NULL_LIBRARY_WINDOW_STATE _GLFWlibraryNull null; +#define GLFW_NULL_MONITOR_STATE _GLFWmonitorNull null; + +#define GLFW_NULL_CONTEXT_STATE +#define GLFW_NULL_CURSOR_STATE +#define GLFW_NULL_LIBRARY_CONTEXT_STATE + + +// Null-specific per-window data +// +typedef struct _GLFWwindowNull +{ + int xpos; + int ypos; + int width; + int height; + char* title; + GLFWbool visible; + GLFWbool iconified; + GLFWbool maximized; + GLFWbool resizable; + GLFWbool decorated; + GLFWbool floating; + GLFWbool transparent; + float opacity; +} _GLFWwindowNull; + +// Null-specific per-monitor data +// +typedef struct _GLFWmonitorNull +{ + GLFWgammaramp ramp; +} _GLFWmonitorNull; + +// Null-specific global data +// +typedef struct _GLFWlibraryNull +{ + int xcursor; + int ycursor; + char* clipboardString; + _GLFWwindow* focusedWindow; +} _GLFWlibraryNull; + +void _glfwPollMonitorsNull(void); + +GLFWbool _glfwConnectNull(int platformID, _GLFWplatform* platform); +int _glfwInitNull(void); +void _glfwTerminateNull(void); + +void _glfwFreeMonitorNull(_GLFWmonitor* monitor); +void _glfwGetMonitorPosNull(_GLFWmonitor* monitor, int* xpos, int* ypos); +void _glfwGetMonitorContentScaleNull(_GLFWmonitor* monitor, float* xscale, float* yscale); +void _glfwGetMonitorWorkareaNull(_GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); +GLFWvidmode* _glfwGetVideoModesNull(_GLFWmonitor* monitor, int* found); +void _glfwGetVideoModeNull(_GLFWmonitor* monitor, GLFWvidmode* mode); +GLFWbool _glfwGetGammaRampNull(_GLFWmonitor* monitor, GLFWgammaramp* ramp); +void _glfwSetGammaRampNull(_GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +GLFWbool _glfwCreateWindowNull(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig); +void _glfwDestroyWindowNull(_GLFWwindow* window); +void _glfwSetWindowTitleNull(_GLFWwindow* window, const char* title); +void _glfwSetWindowIconNull(_GLFWwindow* window, int count, const GLFWimage* images); +void _glfwSetWindowMonitorNull(_GLFWwindow* window, _GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); +void _glfwGetWindowPosNull(_GLFWwindow* window, int* xpos, int* ypos); +void _glfwSetWindowPosNull(_GLFWwindow* window, int xpos, int ypos); +void _glfwGetWindowSizeNull(_GLFWwindow* window, int* width, int* height); +void _glfwSetWindowSizeNull(_GLFWwindow* window, int width, int height); +void _glfwSetWindowSizeLimitsNull(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); +void _glfwSetWindowAspectRatioNull(_GLFWwindow* window, int n, int d); +void _glfwGetFramebufferSizeNull(_GLFWwindow* window, int* width, int* height); +void _glfwGetWindowFrameSizeNull(_GLFWwindow* window, int* left, int* top, int* right, int* bottom); +void _glfwGetWindowContentScaleNull(_GLFWwindow* window, float* xscale, float* yscale); +void _glfwIconifyWindowNull(_GLFWwindow* window); +void _glfwRestoreWindowNull(_GLFWwindow* window); +void _glfwMaximizeWindowNull(_GLFWwindow* window); +GLFWbool _glfwWindowMaximizedNull(_GLFWwindow* window); +GLFWbool _glfwWindowHoveredNull(_GLFWwindow* window); +GLFWbool _glfwFramebufferTransparentNull(_GLFWwindow* window); +void _glfwSetWindowResizableNull(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowDecoratedNull(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowFloatingNull(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowMousePassthroughNull(_GLFWwindow* window, GLFWbool enabled); +float _glfwGetWindowOpacityNull(_GLFWwindow* window); +void _glfwSetWindowOpacityNull(_GLFWwindow* window, float opacity); +void _glfwSetRawMouseMotionNull(_GLFWwindow *window, GLFWbool enabled); +GLFWbool _glfwRawMouseMotionSupportedNull(void); +void _glfwShowWindowNull(_GLFWwindow* window); +void _glfwRequestWindowAttentionNull(_GLFWwindow* window); +void _glfwRequestWindowAttentionNull(_GLFWwindow* window); +void _glfwHideWindowNull(_GLFWwindow* window); +void _glfwFocusWindowNull(_GLFWwindow* window); +GLFWbool _glfwWindowFocusedNull(_GLFWwindow* window); +GLFWbool _glfwWindowIconifiedNull(_GLFWwindow* window); +GLFWbool _glfwWindowVisibleNull(_GLFWwindow* window); +void _glfwPollEventsNull(void); +void _glfwWaitEventsNull(void); +void _glfwWaitEventsTimeoutNull(double timeout); +void _glfwPostEmptyEventNull(void); +void _glfwGetCursorPosNull(_GLFWwindow* window, double* xpos, double* ypos); +void _glfwSetCursorPosNull(_GLFWwindow* window, double x, double y); +void _glfwSetCursorModeNull(_GLFWwindow* window, int mode); +GLFWbool _glfwCreateCursorNull(_GLFWcursor* cursor, const GLFWimage* image, int xhot, int yhot); +GLFWbool _glfwCreateStandardCursorNull(_GLFWcursor* cursor, int shape); +void _glfwDestroyCursorNull(_GLFWcursor* cursor); +void _glfwSetCursorNull(_GLFWwindow* window, _GLFWcursor* cursor); +void _glfwSetClipboardStringNull(const char* string); +const char* _glfwGetClipboardStringNull(void); +const char* _glfwGetScancodeNameNull(int scancode); +int _glfwGetKeyScancodeNull(int key); + +EGLenum _glfwGetEGLPlatformNull(EGLint** attribs); +EGLNativeDisplayType _glfwGetEGLNativeDisplayNull(void); +EGLNativeWindowType _glfwGetEGLNativeWindowNull(_GLFWwindow* window); + +void _glfwGetRequiredInstanceExtensionsNull(char** extensions); +GLFWbool _glfwGetPhysicalDevicePresentationSupportNull(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); +VkResult _glfwCreateWindowSurfaceNull(VkInstance instance, _GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +void _glfwPollMonitorsNull(void); + diff --git a/lib/glfw/src/null_window.c b/lib/glfw/src/null_window.c new file mode 100644 index 0000000..5cdf3e2 --- /dev/null +++ b/lib/glfw/src/null_window.c @@ -0,0 +1,720 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2016 Google Inc. +// Copyright (c) 2016-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#include + +static void applySizeLimits(_GLFWwindow* window, int* width, int* height) +{ + if (window->numer != GLFW_DONT_CARE && window->denom != GLFW_DONT_CARE) + { + const float ratio = (float) window->numer / (float) window->denom; + *height = (int) (*width / ratio); + } + + if (window->minwidth != GLFW_DONT_CARE) + *width = _glfw_max(*width, window->minwidth); + else if (window->maxwidth != GLFW_DONT_CARE) + *width = _glfw_min(*width, window->maxwidth); + + if (window->minheight != GLFW_DONT_CARE) + *height = _glfw_min(*height, window->minheight); + else if (window->maxheight != GLFW_DONT_CARE) + *height = _glfw_max(*height, window->maxheight); +} + +static void fitToMonitor(_GLFWwindow* window) +{ + GLFWvidmode mode; + _glfwGetVideoModeNull(window->monitor, &mode); + _glfwGetMonitorPosNull(window->monitor, + &window->null.xpos, + &window->null.ypos); + window->null.width = mode.width; + window->null.height = mode.height; +} + +static void acquireMonitor(_GLFWwindow* window) +{ + _glfwInputMonitorWindow(window->monitor, window); +} + +static void releaseMonitor(_GLFWwindow* window) +{ + if (window->monitor->window != window) + return; + + _glfwInputMonitorWindow(window->monitor, NULL); +} + +static int createNativeWindow(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWfbconfig* fbconfig) +{ + if (window->monitor) + fitToMonitor(window); + else + { + if (wndconfig->xpos == GLFW_ANY_POSITION && wndconfig->ypos == GLFW_ANY_POSITION) + { + window->null.xpos = 17; + window->null.ypos = 17; + } + else + { + window->null.xpos = wndconfig->xpos; + window->null.ypos = wndconfig->ypos; + } + + window->null.width = wndconfig->width; + window->null.height = wndconfig->height; + } + + window->null.visible = wndconfig->visible; + window->null.decorated = wndconfig->decorated; + window->null.maximized = wndconfig->maximized; + window->null.floating = wndconfig->floating; + window->null.transparent = fbconfig->transparent; + window->null.opacity = 1.f; + + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwCreateWindowNull(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + if (!createNativeWindow(window, wndconfig, fbconfig)) + return GLFW_FALSE; + + if (ctxconfig->client != GLFW_NO_API) + { + if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API || + ctxconfig->source == GLFW_OSMESA_CONTEXT_API) + { + if (!_glfwInitOSMesa()) + return GLFW_FALSE; + if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_EGL_CONTEXT_API) + { + if (!_glfwInitEGL()) + return GLFW_FALSE; + if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + + if (!_glfwRefreshContextAttribs(window, ctxconfig)) + return GLFW_FALSE; + } + + if (wndconfig->mousePassthrough) + _glfwSetWindowMousePassthroughNull(window, GLFW_TRUE); + + if (window->monitor) + { + _glfwShowWindowNull(window); + _glfwFocusWindowNull(window); + acquireMonitor(window); + + if (wndconfig->centerCursor) + _glfwCenterCursorInContentArea(window); + } + else + { + if (wndconfig->visible) + { + _glfwShowWindowNull(window); + if (wndconfig->focused) + _glfwFocusWindowNull(window); + } + } + + return GLFW_TRUE; +} + +void _glfwDestroyWindowNull(_GLFWwindow* window) +{ + if (window->monitor) + releaseMonitor(window); + + if (_glfw.null.focusedWindow == window) + _glfw.null.focusedWindow = NULL; + + if (window->context.destroy) + window->context.destroy(window); +} + +void _glfwSetWindowTitleNull(_GLFWwindow* window, const char* title) +{ +} + +void _glfwSetWindowIconNull(_GLFWwindow* window, int count, const GLFWimage* images) +{ +} + +void _glfwSetWindowMonitorNull(_GLFWwindow* window, + _GLFWmonitor* monitor, + int xpos, int ypos, + int width, int height, + int refreshRate) +{ + if (window->monitor == monitor) + { + if (!monitor) + { + _glfwSetWindowPosNull(window, xpos, ypos); + _glfwSetWindowSizeNull(window, width, height); + } + + return; + } + + if (window->monitor) + releaseMonitor(window); + + _glfwInputWindowMonitor(window, monitor); + + if (window->monitor) + { + window->null.visible = GLFW_TRUE; + acquireMonitor(window); + fitToMonitor(window); + } + else + { + _glfwSetWindowPosNull(window, xpos, ypos); + _glfwSetWindowSizeNull(window, width, height); + } +} + +void _glfwGetWindowPosNull(_GLFWwindow* window, int* xpos, int* ypos) +{ + if (xpos) + *xpos = window->null.xpos; + if (ypos) + *ypos = window->null.ypos; +} + +void _glfwSetWindowPosNull(_GLFWwindow* window, int xpos, int ypos) +{ + if (window->monitor) + return; + + if (window->null.xpos != xpos || window->null.ypos != ypos) + { + window->null.xpos = xpos; + window->null.ypos = ypos; + _glfwInputWindowPos(window, xpos, ypos); + } +} + +void _glfwGetWindowSizeNull(_GLFWwindow* window, int* width, int* height) +{ + if (width) + *width = window->null.width; + if (height) + *height = window->null.height; +} + +void _glfwSetWindowSizeNull(_GLFWwindow* window, int width, int height) +{ + if (window->monitor) + return; + + if (window->null.width != width || window->null.height != height) + { + window->null.width = width; + window->null.height = height; + _glfwInputWindowSize(window, width, height); + _glfwInputFramebufferSize(window, width, height); + } +} + +void _glfwSetWindowSizeLimitsNull(_GLFWwindow* window, + int minwidth, int minheight, + int maxwidth, int maxheight) +{ + int width = window->null.width; + int height = window->null.height; + applySizeLimits(window, &width, &height); + _glfwSetWindowSizeNull(window, width, height); +} + +void _glfwSetWindowAspectRatioNull(_GLFWwindow* window, int n, int d) +{ + int width = window->null.width; + int height = window->null.height; + applySizeLimits(window, &width, &height); + _glfwSetWindowSizeNull(window, width, height); +} + +void _glfwGetFramebufferSizeNull(_GLFWwindow* window, int* width, int* height) +{ + if (width) + *width = window->null.width; + if (height) + *height = window->null.height; +} + +void _glfwGetWindowFrameSizeNull(_GLFWwindow* window, + int* left, int* top, + int* right, int* bottom) +{ + if (window->null.decorated && !window->monitor) + { + if (left) + *left = 1; + if (top) + *top = 10; + if (right) + *right = 1; + if (bottom) + *bottom = 1; + } + else + { + if (left) + *left = 0; + if (top) + *top = 0; + if (right) + *right = 0; + if (bottom) + *bottom = 0; + } +} + +void _glfwGetWindowContentScaleNull(_GLFWwindow* window, float* xscale, float* yscale) +{ + if (xscale) + *xscale = 1.f; + if (yscale) + *yscale = 1.f; +} + +void _glfwIconifyWindowNull(_GLFWwindow* window) +{ + if (_glfw.null.focusedWindow == window) + { + _glfw.null.focusedWindow = NULL; + _glfwInputWindowFocus(window, GLFW_FALSE); + } + + if (!window->null.iconified) + { + window->null.iconified = GLFW_TRUE; + _glfwInputWindowIconify(window, GLFW_TRUE); + + if (window->monitor) + releaseMonitor(window); + } +} + +void _glfwRestoreWindowNull(_GLFWwindow* window) +{ + if (window->null.iconified) + { + window->null.iconified = GLFW_FALSE; + _glfwInputWindowIconify(window, GLFW_FALSE); + + if (window->monitor) + acquireMonitor(window); + } + else if (window->null.maximized) + { + window->null.maximized = GLFW_FALSE; + _glfwInputWindowMaximize(window, GLFW_FALSE); + } +} + +void _glfwMaximizeWindowNull(_GLFWwindow* window) +{ + if (!window->null.maximized) + { + window->null.maximized = GLFW_TRUE; + _glfwInputWindowMaximize(window, GLFW_TRUE); + } +} + +GLFWbool _glfwWindowMaximizedNull(_GLFWwindow* window) +{ + return window->null.maximized; +} + +GLFWbool _glfwWindowHoveredNull(_GLFWwindow* window) +{ + return _glfw.null.xcursor >= window->null.xpos && + _glfw.null.ycursor >= window->null.ypos && + _glfw.null.xcursor <= window->null.xpos + window->null.width - 1 && + _glfw.null.ycursor <= window->null.ypos + window->null.height - 1; +} + +GLFWbool _glfwFramebufferTransparentNull(_GLFWwindow* window) +{ + return window->null.transparent; +} + +void _glfwSetWindowResizableNull(_GLFWwindow* window, GLFWbool enabled) +{ + window->null.resizable = enabled; +} + +void _glfwSetWindowDecoratedNull(_GLFWwindow* window, GLFWbool enabled) +{ + window->null.decorated = enabled; +} + +void _glfwSetWindowFloatingNull(_GLFWwindow* window, GLFWbool enabled) +{ + window->null.floating = enabled; +} + +void _glfwSetWindowMousePassthroughNull(_GLFWwindow* window, GLFWbool enabled) +{ +} + +float _glfwGetWindowOpacityNull(_GLFWwindow* window) +{ + return window->null.opacity; +} + +void _glfwSetWindowOpacityNull(_GLFWwindow* window, float opacity) +{ + window->null.opacity = opacity; +} + +void _glfwSetRawMouseMotionNull(_GLFWwindow *window, GLFWbool enabled) +{ +} + +GLFWbool _glfwRawMouseMotionSupportedNull(void) +{ + return GLFW_TRUE; +} + +void _glfwShowWindowNull(_GLFWwindow* window) +{ + window->null.visible = GLFW_TRUE; +} + +void _glfwRequestWindowAttentionNull(_GLFWwindow* window) +{ +} + +void _glfwHideWindowNull(_GLFWwindow* window) +{ + if (_glfw.null.focusedWindow == window) + { + _glfw.null.focusedWindow = NULL; + _glfwInputWindowFocus(window, GLFW_FALSE); + } + + window->null.visible = GLFW_FALSE; +} + +void _glfwFocusWindowNull(_GLFWwindow* window) +{ + _GLFWwindow* previous; + + if (_glfw.null.focusedWindow == window) + return; + + if (!window->null.visible) + return; + + previous = _glfw.null.focusedWindow; + _glfw.null.focusedWindow = window; + + if (previous) + { + _glfwInputWindowFocus(previous, GLFW_FALSE); + if (previous->monitor && previous->autoIconify) + _glfwIconifyWindowNull(previous); + } + + _glfwInputWindowFocus(window, GLFW_TRUE); +} + +GLFWbool _glfwWindowFocusedNull(_GLFWwindow* window) +{ + return _glfw.null.focusedWindow == window; +} + +GLFWbool _glfwWindowIconifiedNull(_GLFWwindow* window) +{ + return window->null.iconified; +} + +GLFWbool _glfwWindowVisibleNull(_GLFWwindow* window) +{ + return window->null.visible; +} + +void _glfwPollEventsNull(void) +{ +} + +void _glfwWaitEventsNull(void) +{ +} + +void _glfwWaitEventsTimeoutNull(double timeout) +{ +} + +void _glfwPostEmptyEventNull(void) +{ +} + +void _glfwGetCursorPosNull(_GLFWwindow* window, double* xpos, double* ypos) +{ + if (xpos) + *xpos = _glfw.null.xcursor - window->null.xpos; + if (ypos) + *ypos = _glfw.null.ycursor - window->null.ypos; +} + +void _glfwSetCursorPosNull(_GLFWwindow* window, double x, double y) +{ + _glfw.null.xcursor = window->null.xpos + (int) x; + _glfw.null.ycursor = window->null.ypos + (int) y; +} + +void _glfwSetCursorModeNull(_GLFWwindow* window, int mode) +{ +} + +GLFWbool _glfwCreateCursorNull(_GLFWcursor* cursor, + const GLFWimage* image, + int xhot, int yhot) +{ + return GLFW_TRUE; +} + +GLFWbool _glfwCreateStandardCursorNull(_GLFWcursor* cursor, int shape) +{ + return GLFW_TRUE; +} + +void _glfwDestroyCursorNull(_GLFWcursor* cursor) +{ +} + +void _glfwSetCursorNull(_GLFWwindow* window, _GLFWcursor* cursor) +{ +} + +void _glfwSetClipboardStringNull(const char* string) +{ + char* copy = _glfw_strdup(string); + _glfw_free(_glfw.null.clipboardString); + _glfw.null.clipboardString = copy; +} + +const char* _glfwGetClipboardStringNull(void) +{ + return _glfw.null.clipboardString; +} + +EGLenum _glfwGetEGLPlatformNull(EGLint** attribs) +{ + return 0; +} + +EGLNativeDisplayType _glfwGetEGLNativeDisplayNull(void) +{ + return 0; +} + +EGLNativeWindowType _glfwGetEGLNativeWindowNull(_GLFWwindow* window) +{ + return 0; +} + +const char* _glfwGetScancodeNameNull(int scancode) +{ + if (scancode < GLFW_KEY_SPACE || scancode > GLFW_KEY_LAST) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid scancode %i", scancode); + return NULL; + } + + switch (scancode) + { + case GLFW_KEY_APOSTROPHE: + return "'"; + case GLFW_KEY_COMMA: + return ","; + case GLFW_KEY_MINUS: + case GLFW_KEY_KP_SUBTRACT: + return "-"; + case GLFW_KEY_PERIOD: + case GLFW_KEY_KP_DECIMAL: + return "."; + case GLFW_KEY_SLASH: + case GLFW_KEY_KP_DIVIDE: + return "/"; + case GLFW_KEY_SEMICOLON: + return ";"; + case GLFW_KEY_EQUAL: + case GLFW_KEY_KP_EQUAL: + return "="; + case GLFW_KEY_LEFT_BRACKET: + return "["; + case GLFW_KEY_RIGHT_BRACKET: + return "]"; + case GLFW_KEY_KP_MULTIPLY: + return "*"; + case GLFW_KEY_KP_ADD: + return "+"; + case GLFW_KEY_BACKSLASH: + case GLFW_KEY_WORLD_1: + case GLFW_KEY_WORLD_2: + return "\\"; + case GLFW_KEY_0: + case GLFW_KEY_KP_0: + return "0"; + case GLFW_KEY_1: + case GLFW_KEY_KP_1: + return "1"; + case GLFW_KEY_2: + case GLFW_KEY_KP_2: + return "2"; + case GLFW_KEY_3: + case GLFW_KEY_KP_3: + return "3"; + case GLFW_KEY_4: + case GLFW_KEY_KP_4: + return "4"; + case GLFW_KEY_5: + case GLFW_KEY_KP_5: + return "5"; + case GLFW_KEY_6: + case GLFW_KEY_KP_6: + return "6"; + case GLFW_KEY_7: + case GLFW_KEY_KP_7: + return "7"; + case GLFW_KEY_8: + case GLFW_KEY_KP_8: + return "8"; + case GLFW_KEY_9: + case GLFW_KEY_KP_9: + return "9"; + case GLFW_KEY_A: + return "a"; + case GLFW_KEY_B: + return "b"; + case GLFW_KEY_C: + return "c"; + case GLFW_KEY_D: + return "d"; + case GLFW_KEY_E: + return "e"; + case GLFW_KEY_F: + return "f"; + case GLFW_KEY_G: + return "g"; + case GLFW_KEY_H: + return "h"; + case GLFW_KEY_I: + return "i"; + case GLFW_KEY_J: + return "j"; + case GLFW_KEY_K: + return "k"; + case GLFW_KEY_L: + return "l"; + case GLFW_KEY_M: + return "m"; + case GLFW_KEY_N: + return "n"; + case GLFW_KEY_O: + return "o"; + case GLFW_KEY_P: + return "p"; + case GLFW_KEY_Q: + return "q"; + case GLFW_KEY_R: + return "r"; + case GLFW_KEY_S: + return "s"; + case GLFW_KEY_T: + return "t"; + case GLFW_KEY_U: + return "u"; + case GLFW_KEY_V: + return "v"; + case GLFW_KEY_W: + return "w"; + case GLFW_KEY_X: + return "x"; + case GLFW_KEY_Y: + return "y"; + case GLFW_KEY_Z: + return "z"; + } + + return NULL; +} + +int _glfwGetKeyScancodeNull(int key) +{ + return key; +} + +void _glfwGetRequiredInstanceExtensionsNull(char** extensions) +{ +} + +GLFWbool _glfwGetPhysicalDevicePresentationSupportNull(VkInstance instance, + VkPhysicalDevice device, + uint32_t queuefamily) +{ + return GLFW_FALSE; +} + +VkResult _glfwCreateWindowSurfaceNull(VkInstance instance, + _GLFWwindow* window, + const VkAllocationCallbacks* allocator, + VkSurfaceKHR* surface) +{ + // This seems like the most appropriate error to return here + return VK_ERROR_EXTENSION_NOT_PRESENT; +} + diff --git a/lib/glfw/src/osmesa_context.c b/lib/glfw/src/osmesa_context.c new file mode 100644 index 0000000..38adabb --- /dev/null +++ b/lib/glfw/src/osmesa_context.c @@ -0,0 +1,386 @@ +//======================================================================== +// GLFW 3.4 OSMesa - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2016 Google Inc. +// Copyright (c) 2016-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include +#include +#include + +#include "internal.h" + + +static void makeContextCurrentOSMesa(_GLFWwindow* window) +{ + if (window) + { + int width, height; + _glfw.platform.getFramebufferSize(window, &width, &height); + + // Check to see if we need to allocate a new buffer + if ((window->context.osmesa.buffer == NULL) || + (width != window->context.osmesa.width) || + (height != window->context.osmesa.height)) + { + _glfw_free(window->context.osmesa.buffer); + + // Allocate the new buffer (width * height * 8-bit RGBA) + window->context.osmesa.buffer = _glfw_calloc(4, (size_t) width * height); + window->context.osmesa.width = width; + window->context.osmesa.height = height; + } + + if (!OSMesaMakeCurrent(window->context.osmesa.handle, + window->context.osmesa.buffer, + GL_UNSIGNED_BYTE, + width, height)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "OSMesa: Failed to make context current"); + return; + } + } + + _glfwPlatformSetTls(&_glfw.contextSlot, window); +} + +static GLFWglproc getProcAddressOSMesa(const char* procname) +{ + return (GLFWglproc) OSMesaGetProcAddress(procname); +} + +static void destroyContextOSMesa(_GLFWwindow* window) +{ + if (window->context.osmesa.handle) + { + OSMesaDestroyContext(window->context.osmesa.handle); + window->context.osmesa.handle = NULL; + } + + if (window->context.osmesa.buffer) + { + _glfw_free(window->context.osmesa.buffer); + window->context.osmesa.width = 0; + window->context.osmesa.height = 0; + } +} + +static void swapBuffersOSMesa(_GLFWwindow* window) +{ + // No double buffering on OSMesa +} + +static void swapIntervalOSMesa(int interval) +{ + // No swap interval on OSMesa +} + +static int extensionSupportedOSMesa(const char* extension) +{ + // OSMesa does not have extensions + return GLFW_FALSE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwInitOSMesa(void) +{ + int i; + const char* sonames[] = + { +#if defined(_GLFW_OSMESA_LIBRARY) + _GLFW_OSMESA_LIBRARY, +#elif defined(_WIN32) + "libOSMesa.dll", + "OSMesa.dll", +#elif defined(__APPLE__) + "libOSMesa.8.dylib", +#elif defined(__CYGWIN__) + "libOSMesa-8.so", +#elif defined(__OpenBSD__) || defined(__NetBSD__) + "libOSMesa.so", +#else + "libOSMesa.so.8", + "libOSMesa.so.6", +#endif + NULL + }; + + if (_glfw.osmesa.handle) + return GLFW_TRUE; + + for (i = 0; sonames[i]; i++) + { + _glfw.osmesa.handle = _glfwPlatformLoadModule(sonames[i]); + if (_glfw.osmesa.handle) + break; + } + + if (!_glfw.osmesa.handle) + { + _glfwInputError(GLFW_API_UNAVAILABLE, "OSMesa: Library not found"); + return GLFW_FALSE; + } + + _glfw.osmesa.CreateContextExt = (PFN_OSMesaCreateContextExt) + _glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaCreateContextExt"); + _glfw.osmesa.CreateContextAttribs = (PFN_OSMesaCreateContextAttribs) + _glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaCreateContextAttribs"); + _glfw.osmesa.DestroyContext = (PFN_OSMesaDestroyContext) + _glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaDestroyContext"); + _glfw.osmesa.MakeCurrent = (PFN_OSMesaMakeCurrent) + _glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaMakeCurrent"); + _glfw.osmesa.GetColorBuffer = (PFN_OSMesaGetColorBuffer) + _glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaGetColorBuffer"); + _glfw.osmesa.GetDepthBuffer = (PFN_OSMesaGetDepthBuffer) + _glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaGetDepthBuffer"); + _glfw.osmesa.GetProcAddress = (PFN_OSMesaGetProcAddress) + _glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaGetProcAddress"); + + if (!_glfw.osmesa.CreateContextExt || + !_glfw.osmesa.DestroyContext || + !_glfw.osmesa.MakeCurrent || + !_glfw.osmesa.GetColorBuffer || + !_glfw.osmesa.GetDepthBuffer || + !_glfw.osmesa.GetProcAddress) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "OSMesa: Failed to load required entry points"); + + _glfwTerminateOSMesa(); + return GLFW_FALSE; + } + + return GLFW_TRUE; +} + +void _glfwTerminateOSMesa(void) +{ + if (_glfw.osmesa.handle) + { + _glfwPlatformFreeModule(_glfw.osmesa.handle); + _glfw.osmesa.handle = NULL; + } +} + +#define SET_ATTRIB(a, v) \ +{ \ + assert(((size_t) index + 1) < sizeof(attribs) / sizeof(attribs[0])); \ + attribs[index++] = a; \ + attribs[index++] = v; \ +} + +GLFWbool _glfwCreateContextOSMesa(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + OSMesaContext share = NULL; + const int accumBits = fbconfig->accumRedBits + + fbconfig->accumGreenBits + + fbconfig->accumBlueBits + + fbconfig->accumAlphaBits; + + if (ctxconfig->client == GLFW_OPENGL_ES_API) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "OSMesa: OpenGL ES is not available on OSMesa"); + return GLFW_FALSE; + } + + if (ctxconfig->share) + share = ctxconfig->share->context.osmesa.handle; + + if (OSMesaCreateContextAttribs) + { + int index = 0, attribs[40]; + + SET_ATTRIB(OSMESA_FORMAT, OSMESA_RGBA); + SET_ATTRIB(OSMESA_DEPTH_BITS, fbconfig->depthBits); + SET_ATTRIB(OSMESA_STENCIL_BITS, fbconfig->stencilBits); + SET_ATTRIB(OSMESA_ACCUM_BITS, accumBits); + + if (ctxconfig->profile == GLFW_OPENGL_CORE_PROFILE) + { + SET_ATTRIB(OSMESA_PROFILE, OSMESA_CORE_PROFILE); + } + else if (ctxconfig->profile == GLFW_OPENGL_COMPAT_PROFILE) + { + SET_ATTRIB(OSMESA_PROFILE, OSMESA_COMPAT_PROFILE); + } + + if (ctxconfig->major != 1 || ctxconfig->minor != 0) + { + SET_ATTRIB(OSMESA_CONTEXT_MAJOR_VERSION, ctxconfig->major); + SET_ATTRIB(OSMESA_CONTEXT_MINOR_VERSION, ctxconfig->minor); + } + + if (ctxconfig->forward) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "OSMesa: Forward-compatible contexts not supported"); + return GLFW_FALSE; + } + + SET_ATTRIB(0, 0); + + window->context.osmesa.handle = + OSMesaCreateContextAttribs(attribs, share); + } + else + { + if (ctxconfig->profile) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "OSMesa: OpenGL profiles unavailable"); + return GLFW_FALSE; + } + + window->context.osmesa.handle = + OSMesaCreateContextExt(OSMESA_RGBA, + fbconfig->depthBits, + fbconfig->stencilBits, + accumBits, + share); + } + + if (window->context.osmesa.handle == NULL) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "OSMesa: Failed to create context"); + return GLFW_FALSE; + } + + window->context.makeCurrent = makeContextCurrentOSMesa; + window->context.swapBuffers = swapBuffersOSMesa; + window->context.swapInterval = swapIntervalOSMesa; + window->context.extensionSupported = extensionSupportedOSMesa; + window->context.getProcAddress = getProcAddressOSMesa; + window->context.destroy = destroyContextOSMesa; + + return GLFW_TRUE; +} + +#undef SET_ATTRIB + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* handle, int* width, + int* height, int* format, void** buffer) +{ + void* mesaBuffer; + GLint mesaWidth, mesaHeight, mesaFormat; + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + + if (window->context.source != GLFW_OSMESA_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return GLFW_FALSE; + } + + if (!OSMesaGetColorBuffer(window->context.osmesa.handle, + &mesaWidth, &mesaHeight, + &mesaFormat, &mesaBuffer)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "OSMesa: Failed to retrieve color buffer"); + return GLFW_FALSE; + } + + if (width) + *width = mesaWidth; + if (height) + *height = mesaHeight; + if (format) + *format = mesaFormat; + if (buffer) + *buffer = mesaBuffer; + + return GLFW_TRUE; +} + +GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* handle, + int* width, int* height, + int* bytesPerValue, + void** buffer) +{ + void* mesaBuffer; + GLint mesaWidth, mesaHeight, mesaBytes; + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + + if (window->context.source != GLFW_OSMESA_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return GLFW_FALSE; + } + + if (!OSMesaGetDepthBuffer(window->context.osmesa.handle, + &mesaWidth, &mesaHeight, + &mesaBytes, &mesaBuffer)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "OSMesa: Failed to retrieve depth buffer"); + return GLFW_FALSE; + } + + if (width) + *width = mesaWidth; + if (height) + *height = mesaHeight; + if (bytesPerValue) + *bytesPerValue = mesaBytes; + if (buffer) + *buffer = mesaBuffer; + + return GLFW_TRUE; +} + +GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (window->context.source != GLFW_OSMESA_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return NULL; + } + + return window->context.osmesa.handle; +} + diff --git a/lib/glfw/src/platform.c b/lib/glfw/src/platform.c new file mode 100644 index 0000000..c5966ae --- /dev/null +++ b/lib/glfw/src/platform.c @@ -0,0 +1,195 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2018 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +// These construct a string literal from individual numeric constants +#define _GLFW_CONCAT_VERSION(m, n, r) #m "." #n "." #r +#define _GLFW_MAKE_VERSION(m, n, r) _GLFW_CONCAT_VERSION(m, n, r) + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +static const struct +{ + int ID; + GLFWbool (*connect)(int,_GLFWplatform*); +} supportedPlatforms[] = +{ +#if defined(_GLFW_WIN32) + { GLFW_PLATFORM_WIN32, _glfwConnectWin32 }, +#endif +#if defined(_GLFW_COCOA) + { GLFW_PLATFORM_COCOA, _glfwConnectCocoa }, +#endif +#if defined(_GLFW_X11) + { GLFW_PLATFORM_X11, _glfwConnectX11 }, +#endif +#if defined(_GLFW_WAYLAND) + { GLFW_PLATFORM_WAYLAND, _glfwConnectWayland }, +#endif +}; + +GLFWbool _glfwSelectPlatform(int desiredID, _GLFWplatform* platform) +{ + const size_t count = sizeof(supportedPlatforms) / sizeof(supportedPlatforms[0]); + size_t i; + + if (desiredID != GLFW_ANY_PLATFORM && + desiredID != GLFW_PLATFORM_WIN32 && + desiredID != GLFW_PLATFORM_COCOA && + desiredID != GLFW_PLATFORM_WAYLAND && + desiredID != GLFW_PLATFORM_X11 && + desiredID != GLFW_PLATFORM_NULL) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid platform ID 0x%08X", desiredID); + return GLFW_FALSE; + } + + // Only allow the Null platform if specifically requested + if (desiredID == GLFW_PLATFORM_NULL) + return _glfwConnectNull(desiredID, platform); + else if (count == 0) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "This binary only supports the Null platform"); + return GLFW_FALSE; + } + + if (desiredID == GLFW_ANY_PLATFORM) + { + // If there is exactly one platform available for auto-selection, let it emit the + // error on failure as the platform-specific error description may be more helpful + if (count == 1) + return supportedPlatforms[0].connect(supportedPlatforms[0].ID, platform); + + for (i = 0; i < count; i++) + { + if (supportedPlatforms[i].connect(desiredID, platform)) + return GLFW_TRUE; + } + + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "Failed to detect any supported platform"); + } + else + { + for (i = 0; i < count; i++) + { + if (supportedPlatforms[i].ID == desiredID) + return supportedPlatforms[i].connect(desiredID, platform); + } + + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "The requested platform is not supported"); + } + + return GLFW_FALSE; +} + +////////////////////////////////////////////////////////////////////////// +////// GLFW public API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI int glfwGetPlatform(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(0); + return _glfw.platform.platformID; +} + +GLFWAPI int glfwPlatformSupported(int platformID) +{ + const size_t count = sizeof(supportedPlatforms) / sizeof(supportedPlatforms[0]); + size_t i; + + if (platformID != GLFW_PLATFORM_WIN32 && + platformID != GLFW_PLATFORM_COCOA && + platformID != GLFW_PLATFORM_WAYLAND && + platformID != GLFW_PLATFORM_X11 && + platformID != GLFW_PLATFORM_NULL) + { + _glfwInputError(GLFW_INVALID_ENUM, "Invalid platform ID 0x%08X", platformID); + return GLFW_FALSE; + } + + if (platformID == GLFW_PLATFORM_NULL) + return GLFW_TRUE; + + for (i = 0; i < count; i++) + { + if (platformID == supportedPlatforms[i].ID) + return GLFW_TRUE; + } + + return GLFW_FALSE; +} + +GLFWAPI const char* glfwGetVersionString(void) +{ + return _GLFW_MAKE_VERSION(GLFW_VERSION_MAJOR, + GLFW_VERSION_MINOR, + GLFW_VERSION_REVISION) +#if defined(_GLFW_WIN32) + " Win32 WGL" +#endif +#if defined(_GLFW_COCOA) + " Cocoa NSGL" +#endif +#if defined(_GLFW_WAYLAND) + " Wayland" +#endif +#if defined(_GLFW_X11) + " X11 GLX" +#endif + " Null" + " EGL" + " OSMesa" +#if defined(__MINGW64_VERSION_MAJOR) + " MinGW-w64" +#elif defined(__MINGW32__) + " MinGW" +#elif defined(_MSC_VER) + " VisualC" +#endif +#if defined(_GLFW_USE_HYBRID_HPG) || defined(_GLFW_USE_OPTIMUS_HPG) + " hybrid-GPU" +#endif +#if defined(_POSIX_MONOTONIC_CLOCK) + " monotonic" +#endif +#if defined(_GLFW_BUILD_DLL) +#if defined(_WIN32) + " DLL" +#elif defined(__APPLE__) + " dynamic" +#else + " shared" +#endif +#endif + ; +} + diff --git a/lib/glfw/src/platform.h b/lib/glfw/src/platform.h new file mode 100644 index 0000000..4e924a6 --- /dev/null +++ b/lib/glfw/src/platform.h @@ -0,0 +1,203 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2018 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#if defined(GLFW_BUILD_WIN32_TIMER) || \ + defined(GLFW_BUILD_WIN32_MODULE) || \ + defined(GLFW_BUILD_WIN32_THREAD) || \ + defined(GLFW_BUILD_COCOA_TIMER) || \ + defined(GLFW_BUILD_POSIX_TIMER) || \ + defined(GLFW_BUILD_POSIX_MODULE) || \ + defined(GLFW_BUILD_POSIX_THREAD) || \ + defined(GLFW_BUILD_POSIX_POLL) || \ + defined(GLFW_BUILD_LINUX_JOYSTICK) + #error "You must not define these; define zero or more _GLFW_ macros instead" +#endif + +#include "null_platform.h" + +#if defined(_GLFW_WIN32) + #include "win32_platform.h" +#else + #define GLFW_WIN32_WINDOW_STATE + #define GLFW_WIN32_MONITOR_STATE + #define GLFW_WIN32_CURSOR_STATE + #define GLFW_WIN32_LIBRARY_WINDOW_STATE + #define GLFW_WGL_CONTEXT_STATE + #define GLFW_WGL_LIBRARY_CONTEXT_STATE +#endif + +#if defined(_GLFW_COCOA) + #include "cocoa_platform.h" +#else + #define GLFW_COCOA_WINDOW_STATE + #define GLFW_COCOA_MONITOR_STATE + #define GLFW_COCOA_CURSOR_STATE + #define GLFW_COCOA_LIBRARY_WINDOW_STATE + #define GLFW_NSGL_CONTEXT_STATE + #define GLFW_NSGL_LIBRARY_CONTEXT_STATE +#endif + +#if defined(_GLFW_WAYLAND) + #include "wl_platform.h" +#else + #define GLFW_WAYLAND_WINDOW_STATE + #define GLFW_WAYLAND_MONITOR_STATE + #define GLFW_WAYLAND_CURSOR_STATE + #define GLFW_WAYLAND_LIBRARY_WINDOW_STATE +#endif + +#if defined(_GLFW_X11) + #include "x11_platform.h" +#else + #define GLFW_X11_WINDOW_STATE + #define GLFW_X11_MONITOR_STATE + #define GLFW_X11_CURSOR_STATE + #define GLFW_X11_LIBRARY_WINDOW_STATE + #define GLFW_GLX_CONTEXT_STATE + #define GLFW_GLX_LIBRARY_CONTEXT_STATE +#endif + +#include "null_joystick.h" + +#if defined(_GLFW_WIN32) + #include "win32_joystick.h" +#else + #define GLFW_WIN32_JOYSTICK_STATE + #define GLFW_WIN32_LIBRARY_JOYSTICK_STATE +#endif + +#if defined(_GLFW_COCOA) + #include "cocoa_joystick.h" +#else + #define GLFW_COCOA_JOYSTICK_STATE + #define GLFW_COCOA_LIBRARY_JOYSTICK_STATE +#endif + +#if (defined(_GLFW_X11) || defined(_GLFW_WAYLAND)) && defined(__linux__) + #define GLFW_BUILD_LINUX_JOYSTICK +#endif + +#if defined(GLFW_BUILD_LINUX_JOYSTICK) + #include "linux_joystick.h" +#else + #define GLFW_LINUX_JOYSTICK_STATE + #define GLFW_LINUX_LIBRARY_JOYSTICK_STATE +#endif + +#define GLFW_PLATFORM_WINDOW_STATE \ + GLFW_WIN32_WINDOW_STATE \ + GLFW_COCOA_WINDOW_STATE \ + GLFW_WAYLAND_WINDOW_STATE \ + GLFW_X11_WINDOW_STATE \ + GLFW_NULL_WINDOW_STATE \ + +#define GLFW_PLATFORM_MONITOR_STATE \ + GLFW_WIN32_MONITOR_STATE \ + GLFW_COCOA_MONITOR_STATE \ + GLFW_WAYLAND_MONITOR_STATE \ + GLFW_X11_MONITOR_STATE \ + GLFW_NULL_MONITOR_STATE \ + +#define GLFW_PLATFORM_CURSOR_STATE \ + GLFW_WIN32_CURSOR_STATE \ + GLFW_COCOA_CURSOR_STATE \ + GLFW_WAYLAND_CURSOR_STATE \ + GLFW_X11_CURSOR_STATE \ + GLFW_NULL_CURSOR_STATE \ + +#define GLFW_PLATFORM_JOYSTICK_STATE \ + GLFW_WIN32_JOYSTICK_STATE \ + GLFW_COCOA_JOYSTICK_STATE \ + GLFW_LINUX_JOYSTICK_STATE + +#define GLFW_PLATFORM_LIBRARY_WINDOW_STATE \ + GLFW_WIN32_LIBRARY_WINDOW_STATE \ + GLFW_COCOA_LIBRARY_WINDOW_STATE \ + GLFW_WAYLAND_LIBRARY_WINDOW_STATE \ + GLFW_X11_LIBRARY_WINDOW_STATE \ + GLFW_NULL_LIBRARY_WINDOW_STATE \ + +#define GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE \ + GLFW_WIN32_LIBRARY_JOYSTICK_STATE \ + GLFW_COCOA_LIBRARY_JOYSTICK_STATE \ + GLFW_LINUX_LIBRARY_JOYSTICK_STATE + +#define GLFW_PLATFORM_CONTEXT_STATE \ + GLFW_WGL_CONTEXT_STATE \ + GLFW_NSGL_CONTEXT_STATE \ + GLFW_GLX_CONTEXT_STATE + +#define GLFW_PLATFORM_LIBRARY_CONTEXT_STATE \ + GLFW_WGL_LIBRARY_CONTEXT_STATE \ + GLFW_NSGL_LIBRARY_CONTEXT_STATE \ + GLFW_GLX_LIBRARY_CONTEXT_STATE + +#if defined(_WIN32) + #define GLFW_BUILD_WIN32_THREAD +#else + #define GLFW_BUILD_POSIX_THREAD +#endif + +#if defined(GLFW_BUILD_WIN32_THREAD) + #include "win32_thread.h" + #define GLFW_PLATFORM_TLS_STATE GLFW_WIN32_TLS_STATE + #define GLFW_PLATFORM_MUTEX_STATE GLFW_WIN32_MUTEX_STATE +#elif defined(GLFW_BUILD_POSIX_THREAD) + #include "posix_thread.h" + #define GLFW_PLATFORM_TLS_STATE GLFW_POSIX_TLS_STATE + #define GLFW_PLATFORM_MUTEX_STATE GLFW_POSIX_MUTEX_STATE +#endif + +#if defined(_WIN32) + #define GLFW_BUILD_WIN32_TIMER +#elif defined(__APPLE__) + #define GLFW_BUILD_COCOA_TIMER +#else + #define GLFW_BUILD_POSIX_TIMER +#endif + +#if defined(GLFW_BUILD_WIN32_TIMER) + #include "win32_time.h" + #define GLFW_PLATFORM_LIBRARY_TIMER_STATE GLFW_WIN32_LIBRARY_TIMER_STATE +#elif defined(GLFW_BUILD_COCOA_TIMER) + #include "cocoa_time.h" + #define GLFW_PLATFORM_LIBRARY_TIMER_STATE GLFW_COCOA_LIBRARY_TIMER_STATE +#elif defined(GLFW_BUILD_POSIX_TIMER) + #include "posix_time.h" + #define GLFW_PLATFORM_LIBRARY_TIMER_STATE GLFW_POSIX_LIBRARY_TIMER_STATE +#endif + +#if defined(_WIN32) + #define GLFW_BUILD_WIN32_MODULE +#else + #define GLFW_BUILD_POSIX_MODULE +#endif + +#if defined(_GLFW_WAYLAND) || defined(_GLFW_X11) + #define GLFW_BUILD_POSIX_POLL +#endif + diff --git a/lib/glfw/src/posix_module.c b/lib/glfw/src/posix_module.c new file mode 100644 index 0000000..ba5024a --- /dev/null +++ b/lib/glfw/src/posix_module.c @@ -0,0 +1,55 @@ +//======================================================================== +// GLFW 3.4 POSIX - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2021 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(GLFW_BUILD_POSIX_MODULE) + +#include + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void* _glfwPlatformLoadModule(const char* path) +{ + return dlopen(path, RTLD_LAZY | RTLD_LOCAL); +} + +void _glfwPlatformFreeModule(void* module) +{ + dlclose(module); +} + +GLFWproc _glfwPlatformGetModuleSymbol(void* module, const char* name) +{ + return dlsym(module, name); +} + +#endif // GLFW_BUILD_POSIX_MODULE + diff --git a/lib/glfw/src/posix_poll.c b/lib/glfw/src/posix_poll.c new file mode 100644 index 0000000..a5016a1 --- /dev/null +++ b/lib/glfw/src/posix_poll.c @@ -0,0 +1,85 @@ +//======================================================================== +// GLFW 3.4 POSIX - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2022 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#define _GNU_SOURCE + +#include "internal.h" + +#if defined(GLFW_BUILD_POSIX_POLL) + +#include +#include +#include + +GLFWbool _glfwPollPOSIX(struct pollfd* fds, nfds_t count, double* timeout) +{ + for (;;) + { + if (timeout) + { + const uint64_t base = _glfwPlatformGetTimerValue(); + +#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__CYGWIN__) + const time_t seconds = (time_t) *timeout; + const long nanoseconds = (long) ((*timeout - seconds) * 1e9); + const struct timespec ts = { seconds, nanoseconds }; + const int result = ppoll(fds, count, &ts, NULL); +#elif defined(__NetBSD__) + const time_t seconds = (time_t) *timeout; + const long nanoseconds = (long) ((*timeout - seconds) * 1e9); + const struct timespec ts = { seconds, nanoseconds }; + const int result = pollts(fds, count, &ts, NULL); +#else + const int milliseconds = (int) (*timeout * 1e3); + const int result = poll(fds, count, milliseconds); +#endif + const int error = errno; // clock_gettime may overwrite our error + + *timeout -= (_glfwPlatformGetTimerValue() - base) / + (double) _glfwPlatformGetTimerFrequency(); + + if (result > 0) + return GLFW_TRUE; + else if (result == -1 && error != EINTR && error != EAGAIN) + return GLFW_FALSE; + else if (*timeout <= 0.0) + return GLFW_FALSE; + } + else + { + const int result = poll(fds, count, -1); + if (result > 0) + return GLFW_TRUE; + else if (result == -1 && errno != EINTR && errno != EAGAIN) + return GLFW_FALSE; + } + } +} + +#endif // GLFW_BUILD_POSIX_POLL + diff --git a/lib/glfw/src/posix_poll.h b/lib/glfw/src/posix_poll.h new file mode 100644 index 0000000..1effd1c --- /dev/null +++ b/lib/glfw/src/posix_poll.h @@ -0,0 +1,32 @@ +//======================================================================== +// GLFW 3.4 POSIX - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2022 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include + +GLFWbool _glfwPollPOSIX(struct pollfd* fds, nfds_t count, double* timeout); + diff --git a/lib/glfw/src/posix_thread.c b/lib/glfw/src/posix_thread.c new file mode 100644 index 0000000..4ce5552 --- /dev/null +++ b/lib/glfw/src/posix_thread.c @@ -0,0 +1,109 @@ +//======================================================================== +// GLFW 3.4 POSIX - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(GLFW_BUILD_POSIX_THREAD) + +#include +#include + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwPlatformCreateTls(_GLFWtls* tls) +{ + assert(tls->posix.allocated == GLFW_FALSE); + + if (pthread_key_create(&tls->posix.key, NULL) != 0) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "POSIX: Failed to create context TLS"); + return GLFW_FALSE; + } + + tls->posix.allocated = GLFW_TRUE; + return GLFW_TRUE; +} + +void _glfwPlatformDestroyTls(_GLFWtls* tls) +{ + if (tls->posix.allocated) + pthread_key_delete(tls->posix.key); + memset(tls, 0, sizeof(_GLFWtls)); +} + +void* _glfwPlatformGetTls(_GLFWtls* tls) +{ + assert(tls->posix.allocated == GLFW_TRUE); + return pthread_getspecific(tls->posix.key); +} + +void _glfwPlatformSetTls(_GLFWtls* tls, void* value) +{ + assert(tls->posix.allocated == GLFW_TRUE); + pthread_setspecific(tls->posix.key, value); +} + +GLFWbool _glfwPlatformCreateMutex(_GLFWmutex* mutex) +{ + assert(mutex->posix.allocated == GLFW_FALSE); + + if (pthread_mutex_init(&mutex->posix.handle, NULL) != 0) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "POSIX: Failed to create mutex"); + return GLFW_FALSE; + } + + return mutex->posix.allocated = GLFW_TRUE; +} + +void _glfwPlatformDestroyMutex(_GLFWmutex* mutex) +{ + if (mutex->posix.allocated) + pthread_mutex_destroy(&mutex->posix.handle); + memset(mutex, 0, sizeof(_GLFWmutex)); +} + +void _glfwPlatformLockMutex(_GLFWmutex* mutex) +{ + assert(mutex->posix.allocated == GLFW_TRUE); + pthread_mutex_lock(&mutex->posix.handle); +} + +void _glfwPlatformUnlockMutex(_GLFWmutex* mutex) +{ + assert(mutex->posix.allocated == GLFW_TRUE); + pthread_mutex_unlock(&mutex->posix.handle); +} + +#endif // GLFW_BUILD_POSIX_THREAD + diff --git a/lib/glfw/src/posix_thread.h b/lib/glfw/src/posix_thread.h new file mode 100644 index 0000000..5a5d7b7 --- /dev/null +++ b/lib/glfw/src/posix_thread.h @@ -0,0 +1,49 @@ +//======================================================================== +// GLFW 3.4 POSIX - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include + +#define GLFW_POSIX_TLS_STATE _GLFWtlsPOSIX posix; +#define GLFW_POSIX_MUTEX_STATE _GLFWmutexPOSIX posix; + + +// POSIX-specific thread local storage data +// +typedef struct _GLFWtlsPOSIX +{ + GLFWbool allocated; + pthread_key_t key; +} _GLFWtlsPOSIX; + +// POSIX-specific mutex data +// +typedef struct _GLFWmutexPOSIX +{ + GLFWbool allocated; + pthread_mutex_t handle; +} _GLFWmutexPOSIX; + diff --git a/lib/glfw/src/posix_time.c b/lib/glfw/src/posix_time.c new file mode 100644 index 0000000..caed678 --- /dev/null +++ b/lib/glfw/src/posix_time.c @@ -0,0 +1,67 @@ +//======================================================================== +// GLFW 3.4 POSIX - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(GLFW_BUILD_POSIX_TIMER) + +#include +#include + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwPlatformInitTimer(void) +{ + _glfw.timer.posix.clock = CLOCK_REALTIME; + _glfw.timer.posix.frequency = 1000000000; + +#if defined(_POSIX_MONOTONIC_CLOCK) + struct timespec ts; + if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) + _glfw.timer.posix.clock = CLOCK_MONOTONIC; +#endif +} + +uint64_t _glfwPlatformGetTimerValue(void) +{ + struct timespec ts; + clock_gettime(_glfw.timer.posix.clock, &ts); + return (uint64_t) ts.tv_sec * _glfw.timer.posix.frequency + (uint64_t) ts.tv_nsec; +} + +uint64_t _glfwPlatformGetTimerFrequency(void) +{ + return _glfw.timer.posix.frequency; +} + +#endif // GLFW_BUILD_POSIX_TIMER + diff --git a/lib/glfw/src/posix_time.h b/lib/glfw/src/posix_time.h new file mode 100644 index 0000000..94374ad --- /dev/null +++ b/lib/glfw/src/posix_time.h @@ -0,0 +1,41 @@ +//======================================================================== +// GLFW 3.4 POSIX - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLFW_POSIX_LIBRARY_TIMER_STATE _GLFWtimerPOSIX posix; + +#include +#include + + +// POSIX-specific global timer data +// +typedef struct _GLFWtimerPOSIX +{ + clockid_t clock; + uint64_t frequency; +} _GLFWtimerPOSIX; + diff --git a/lib/glfw/src/vulkan.c b/lib/glfw/src/vulkan.c new file mode 100644 index 0000000..64a4650 --- /dev/null +++ b/lib/glfw/src/vulkan.c @@ -0,0 +1,330 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2018 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#include +#include +#include + +#define _GLFW_FIND_LOADER 1 +#define _GLFW_REQUIRE_LOADER 2 + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwInitVulkan(int mode) +{ + VkResult err; + VkExtensionProperties* ep; + PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; + uint32_t i, count; + + if (_glfw.vk.available) + return GLFW_TRUE; + + if (_glfw.hints.init.vulkanLoader) + _glfw.vk.GetInstanceProcAddr = _glfw.hints.init.vulkanLoader; + else + { +#if defined(_GLFW_VULKAN_LIBRARY) + _glfw.vk.handle = _glfwPlatformLoadModule(_GLFW_VULKAN_LIBRARY); +#elif defined(_GLFW_WIN32) + _glfw.vk.handle = _glfwPlatformLoadModule("vulkan-1.dll"); +#elif defined(_GLFW_COCOA) + _glfw.vk.handle = _glfwPlatformLoadModule("libvulkan.1.dylib"); + if (!_glfw.vk.handle) + _glfw.vk.handle = _glfwLoadLocalVulkanLoaderCocoa(); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.vk.handle = _glfwPlatformLoadModule("libvulkan.so"); +#else + _glfw.vk.handle = _glfwPlatformLoadModule("libvulkan.so.1"); +#endif + if (!_glfw.vk.handle) + { + if (mode == _GLFW_REQUIRE_LOADER) + _glfwInputError(GLFW_API_UNAVAILABLE, "Vulkan: Loader not found"); + + return GLFW_FALSE; + } + + _glfw.vk.GetInstanceProcAddr = (PFN_vkGetInstanceProcAddr) + _glfwPlatformGetModuleSymbol(_glfw.vk.handle, "vkGetInstanceProcAddr"); + if (!_glfw.vk.GetInstanceProcAddr) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Vulkan: Loader does not export vkGetInstanceProcAddr"); + + _glfwTerminateVulkan(); + return GLFW_FALSE; + } + } + + vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties) + vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceExtensionProperties"); + if (!vkEnumerateInstanceExtensionProperties) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Vulkan: Failed to retrieve vkEnumerateInstanceExtensionProperties"); + + _glfwTerminateVulkan(); + return GLFW_FALSE; + } + + err = vkEnumerateInstanceExtensionProperties(NULL, &count, NULL); + if (err) + { + // NOTE: This happens on systems with a loader but without any Vulkan ICD + if (mode == _GLFW_REQUIRE_LOADER) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Vulkan: Failed to query instance extension count: %s", + _glfwGetVulkanResultString(err)); + } + + _glfwTerminateVulkan(); + return GLFW_FALSE; + } + + ep = _glfw_calloc(count, sizeof(VkExtensionProperties)); + + err = vkEnumerateInstanceExtensionProperties(NULL, &count, ep); + if (err) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Vulkan: Failed to query instance extensions: %s", + _glfwGetVulkanResultString(err)); + + _glfw_free(ep); + _glfwTerminateVulkan(); + return GLFW_FALSE; + } + + for (i = 0; i < count; i++) + { + if (strcmp(ep[i].extensionName, "VK_KHR_surface") == 0) + _glfw.vk.KHR_surface = GLFW_TRUE; + else if (strcmp(ep[i].extensionName, "VK_KHR_win32_surface") == 0) + _glfw.vk.KHR_win32_surface = GLFW_TRUE; + else if (strcmp(ep[i].extensionName, "VK_MVK_macos_surface") == 0) + _glfw.vk.MVK_macos_surface = GLFW_TRUE; + else if (strcmp(ep[i].extensionName, "VK_EXT_metal_surface") == 0) + _glfw.vk.EXT_metal_surface = GLFW_TRUE; + else if (strcmp(ep[i].extensionName, "VK_KHR_xlib_surface") == 0) + _glfw.vk.KHR_xlib_surface = GLFW_TRUE; + else if (strcmp(ep[i].extensionName, "VK_KHR_xcb_surface") == 0) + _glfw.vk.KHR_xcb_surface = GLFW_TRUE; + else if (strcmp(ep[i].extensionName, "VK_KHR_wayland_surface") == 0) + _glfw.vk.KHR_wayland_surface = GLFW_TRUE; + } + + _glfw_free(ep); + + _glfw.vk.available = GLFW_TRUE; + + _glfw.platform.getRequiredInstanceExtensions(_glfw.vk.extensions); + + return GLFW_TRUE; +} + +void _glfwTerminateVulkan(void) +{ + if (_glfw.vk.handle) + _glfwPlatformFreeModule(_glfw.vk.handle); +} + +const char* _glfwGetVulkanResultString(VkResult result) +{ + switch (result) + { + case VK_SUCCESS: + return "Success"; + case VK_NOT_READY: + return "A fence or query has not yet completed"; + case VK_TIMEOUT: + return "A wait operation has not completed in the specified time"; + case VK_EVENT_SET: + return "An event is signaled"; + case VK_EVENT_RESET: + return "An event is unsignaled"; + case VK_INCOMPLETE: + return "A return array was too small for the result"; + case VK_ERROR_OUT_OF_HOST_MEMORY: + return "A host memory allocation has failed"; + case VK_ERROR_OUT_OF_DEVICE_MEMORY: + return "A device memory allocation has failed"; + case VK_ERROR_INITIALIZATION_FAILED: + return "Initialization of an object could not be completed for implementation-specific reasons"; + case VK_ERROR_DEVICE_LOST: + return "The logical or physical device has been lost"; + case VK_ERROR_MEMORY_MAP_FAILED: + return "Mapping of a memory object has failed"; + case VK_ERROR_LAYER_NOT_PRESENT: + return "A requested layer is not present or could not be loaded"; + case VK_ERROR_EXTENSION_NOT_PRESENT: + return "A requested extension is not supported"; + case VK_ERROR_FEATURE_NOT_PRESENT: + return "A requested feature is not supported"; + case VK_ERROR_INCOMPATIBLE_DRIVER: + return "The requested version of Vulkan is not supported by the driver or is otherwise incompatible"; + case VK_ERROR_TOO_MANY_OBJECTS: + return "Too many objects of the type have already been created"; + case VK_ERROR_FORMAT_NOT_SUPPORTED: + return "A requested format is not supported on this device"; + case VK_ERROR_SURFACE_LOST_KHR: + return "A surface is no longer available"; + case VK_SUBOPTIMAL_KHR: + return "A swapchain no longer matches the surface properties exactly, but can still be used"; + case VK_ERROR_OUT_OF_DATE_KHR: + return "A surface has changed in such a way that it is no longer compatible with the swapchain"; + case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: + return "The display used by a swapchain does not use the same presentable image layout"; + case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: + return "The requested window is already connected to a VkSurfaceKHR, or to some other non-Vulkan API"; + case VK_ERROR_VALIDATION_FAILED_EXT: + return "A validation layer found an error"; + default: + return "ERROR: UNKNOWN VULKAN ERROR"; + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW public API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI int glfwVulkanSupported(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + return _glfwInitVulkan(_GLFW_FIND_LOADER); +} + +GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count) +{ + assert(count != NULL); + + *count = 0; + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER)) + return NULL; + + if (!_glfw.vk.extensions[0]) + return NULL; + + *count = 2; + return (const char**) _glfw.vk.extensions; +} + +GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, + const char* procname) +{ + GLFWvkproc proc; + assert(procname != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER)) + return NULL; + + // NOTE: Vulkan 1.0 and 1.1 vkGetInstanceProcAddr cannot return itself + if (strcmp(procname, "vkGetInstanceProcAddr") == 0) + return (GLFWvkproc) vkGetInstanceProcAddr; + + proc = (GLFWvkproc) vkGetInstanceProcAddr(instance, procname); + if (!proc) + { + if (_glfw.vk.handle) + proc = (GLFWvkproc) _glfwPlatformGetModuleSymbol(_glfw.vk.handle, procname); + } + + return proc; +} + +GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, + VkPhysicalDevice device, + uint32_t queuefamily) +{ + assert(instance != VK_NULL_HANDLE); + assert(device != VK_NULL_HANDLE); + + _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); + + if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER)) + return GLFW_FALSE; + + if (!_glfw.vk.extensions[0]) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Vulkan: Window surface creation extensions not found"); + return GLFW_FALSE; + } + + return _glfw.platform.getPhysicalDevicePresentationSupport(instance, + device, + queuefamily); +} + +GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, + GLFWwindow* handle, + const VkAllocationCallbacks* allocator, + VkSurfaceKHR* surface) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(instance != VK_NULL_HANDLE); + assert(window != NULL); + assert(surface != NULL); + + *surface = VK_NULL_HANDLE; + + _GLFW_REQUIRE_INIT_OR_RETURN(VK_ERROR_INITIALIZATION_FAILED); + + if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER)) + return VK_ERROR_INITIALIZATION_FAILED; + + if (!_glfw.vk.extensions[0]) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Vulkan: Window surface creation extensions not found"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + if (window->context.client != GLFW_NO_API) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Vulkan: Window surface creation requires the window to have the client API set to GLFW_NO_API"); + return VK_ERROR_NATIVE_WINDOW_IN_USE_KHR; + } + + return _glfw.platform.createWindowSurface(instance, window, allocator, surface); +} + diff --git a/lib/glfw/src/wgl_context.c b/lib/glfw/src/wgl_context.c new file mode 100644 index 0000000..cfe24b2 --- /dev/null +++ b/lib/glfw/src/wgl_context.c @@ -0,0 +1,782 @@ +//======================================================================== +// GLFW 3.4 WGL - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_WIN32) + +#include +#include + +// Return the value corresponding to the specified attribute +// +static int findPixelFormatAttribValueWGL(const int* attribs, + int attribCount, + const int* values, + int attrib) +{ + int i; + + for (i = 0; i < attribCount; i++) + { + if (attribs[i] == attrib) + return values[i]; + } + + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Unknown pixel format attribute requested"); + return 0; +} + +#define ADD_ATTRIB(a) \ +{ \ + assert((size_t) attribCount < sizeof(attribs) / sizeof(attribs[0])); \ + attribs[attribCount++] = a; \ +} +#define FIND_ATTRIB_VALUE(a) \ + findPixelFormatAttribValueWGL(attribs, attribCount, values, a) + +// Return a list of available and usable framebuffer configs +// +static int choosePixelFormatWGL(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + _GLFWfbconfig* usableConfigs; + const _GLFWfbconfig* closest; + int i, pixelFormat, nativeCount, usableCount = 0, attribCount = 0; + int attribs[40]; + int values[sizeof(attribs) / sizeof(attribs[0])]; + + nativeCount = DescribePixelFormat(window->context.wgl.dc, + 1, + sizeof(PIXELFORMATDESCRIPTOR), + NULL); + + if (_glfw.wgl.ARB_pixel_format) + { + ADD_ATTRIB(WGL_SUPPORT_OPENGL_ARB); + ADD_ATTRIB(WGL_DRAW_TO_WINDOW_ARB); + ADD_ATTRIB(WGL_PIXEL_TYPE_ARB); + ADD_ATTRIB(WGL_ACCELERATION_ARB); + ADD_ATTRIB(WGL_RED_BITS_ARB); + ADD_ATTRIB(WGL_RED_SHIFT_ARB); + ADD_ATTRIB(WGL_GREEN_BITS_ARB); + ADD_ATTRIB(WGL_GREEN_SHIFT_ARB); + ADD_ATTRIB(WGL_BLUE_BITS_ARB); + ADD_ATTRIB(WGL_BLUE_SHIFT_ARB); + ADD_ATTRIB(WGL_ALPHA_BITS_ARB); + ADD_ATTRIB(WGL_ALPHA_SHIFT_ARB); + ADD_ATTRIB(WGL_DEPTH_BITS_ARB); + ADD_ATTRIB(WGL_STENCIL_BITS_ARB); + ADD_ATTRIB(WGL_ACCUM_BITS_ARB); + ADD_ATTRIB(WGL_ACCUM_RED_BITS_ARB); + ADD_ATTRIB(WGL_ACCUM_GREEN_BITS_ARB); + ADD_ATTRIB(WGL_ACCUM_BLUE_BITS_ARB); + ADD_ATTRIB(WGL_ACCUM_ALPHA_BITS_ARB); + ADD_ATTRIB(WGL_AUX_BUFFERS_ARB); + ADD_ATTRIB(WGL_STEREO_ARB); + ADD_ATTRIB(WGL_DOUBLE_BUFFER_ARB); + + if (_glfw.wgl.ARB_multisample) + ADD_ATTRIB(WGL_SAMPLES_ARB); + + if (ctxconfig->client == GLFW_OPENGL_API) + { + if (_glfw.wgl.ARB_framebuffer_sRGB || _glfw.wgl.EXT_framebuffer_sRGB) + ADD_ATTRIB(WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB); + } + else + { + if (_glfw.wgl.EXT_colorspace) + ADD_ATTRIB(WGL_COLORSPACE_EXT); + } + } + + usableConfigs = _glfw_calloc(nativeCount, sizeof(_GLFWfbconfig)); + + for (i = 0; i < nativeCount; i++) + { + _GLFWfbconfig* u = usableConfigs + usableCount; + pixelFormat = i + 1; + + if (_glfw.wgl.ARB_pixel_format) + { + // Get pixel format attributes through "modern" extension + + if (!wglGetPixelFormatAttribivARB(window->context.wgl.dc, + pixelFormat, 0, + attribCount, + attribs, values)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to retrieve pixel format attributes"); + + _glfw_free(usableConfigs); + return 0; + } + + if (!FIND_ATTRIB_VALUE(WGL_SUPPORT_OPENGL_ARB) || + !FIND_ATTRIB_VALUE(WGL_DRAW_TO_WINDOW_ARB)) + { + continue; + } + + if (FIND_ATTRIB_VALUE(WGL_PIXEL_TYPE_ARB) != WGL_TYPE_RGBA_ARB) + continue; + + if (FIND_ATTRIB_VALUE(WGL_ACCELERATION_ARB) == WGL_NO_ACCELERATION_ARB) + continue; + + if (FIND_ATTRIB_VALUE(WGL_DOUBLE_BUFFER_ARB) != fbconfig->doublebuffer) + continue; + + u->redBits = FIND_ATTRIB_VALUE(WGL_RED_BITS_ARB); + u->greenBits = FIND_ATTRIB_VALUE(WGL_GREEN_BITS_ARB); + u->blueBits = FIND_ATTRIB_VALUE(WGL_BLUE_BITS_ARB); + u->alphaBits = FIND_ATTRIB_VALUE(WGL_ALPHA_BITS_ARB); + + u->depthBits = FIND_ATTRIB_VALUE(WGL_DEPTH_BITS_ARB); + u->stencilBits = FIND_ATTRIB_VALUE(WGL_STENCIL_BITS_ARB); + + u->accumRedBits = FIND_ATTRIB_VALUE(WGL_ACCUM_RED_BITS_ARB); + u->accumGreenBits = FIND_ATTRIB_VALUE(WGL_ACCUM_GREEN_BITS_ARB); + u->accumBlueBits = FIND_ATTRIB_VALUE(WGL_ACCUM_BLUE_BITS_ARB); + u->accumAlphaBits = FIND_ATTRIB_VALUE(WGL_ACCUM_ALPHA_BITS_ARB); + + u->auxBuffers = FIND_ATTRIB_VALUE(WGL_AUX_BUFFERS_ARB); + + if (FIND_ATTRIB_VALUE(WGL_STEREO_ARB)) + u->stereo = GLFW_TRUE; + + if (_glfw.wgl.ARB_multisample) + u->samples = FIND_ATTRIB_VALUE(WGL_SAMPLES_ARB); + + if (ctxconfig->client == GLFW_OPENGL_API) + { + if (_glfw.wgl.ARB_framebuffer_sRGB || + _glfw.wgl.EXT_framebuffer_sRGB) + { + if (FIND_ATTRIB_VALUE(WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB)) + u->sRGB = GLFW_TRUE; + } + } + else + { + if (_glfw.wgl.EXT_colorspace) + { + if (FIND_ATTRIB_VALUE(WGL_COLORSPACE_EXT) == WGL_COLORSPACE_SRGB_EXT) + u->sRGB = GLFW_TRUE; + } + } + } + else + { + // Get pixel format attributes through legacy PFDs + + PIXELFORMATDESCRIPTOR pfd; + + if (!DescribePixelFormat(window->context.wgl.dc, + pixelFormat, + sizeof(PIXELFORMATDESCRIPTOR), + &pfd)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to describe pixel format"); + + _glfw_free(usableConfigs); + return 0; + } + + if (!(pfd.dwFlags & PFD_DRAW_TO_WINDOW) || + !(pfd.dwFlags & PFD_SUPPORT_OPENGL)) + { + continue; + } + + if (!(pfd.dwFlags & PFD_GENERIC_ACCELERATED) && + (pfd.dwFlags & PFD_GENERIC_FORMAT)) + { + continue; + } + + if (pfd.iPixelType != PFD_TYPE_RGBA) + continue; + + if (!!(pfd.dwFlags & PFD_DOUBLEBUFFER) != fbconfig->doublebuffer) + continue; + + u->redBits = pfd.cRedBits; + u->greenBits = pfd.cGreenBits; + u->blueBits = pfd.cBlueBits; + u->alphaBits = pfd.cAlphaBits; + + u->depthBits = pfd.cDepthBits; + u->stencilBits = pfd.cStencilBits; + + u->accumRedBits = pfd.cAccumRedBits; + u->accumGreenBits = pfd.cAccumGreenBits; + u->accumBlueBits = pfd.cAccumBlueBits; + u->accumAlphaBits = pfd.cAccumAlphaBits; + + u->auxBuffers = pfd.cAuxBuffers; + + if (pfd.dwFlags & PFD_STEREO) + u->stereo = GLFW_TRUE; + } + + u->handle = pixelFormat; + usableCount++; + } + + if (!usableCount) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "WGL: The driver does not appear to support OpenGL"); + + _glfw_free(usableConfigs); + return 0; + } + + closest = _glfwChooseFBConfig(fbconfig, usableConfigs, usableCount); + if (!closest) + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "WGL: Failed to find a suitable pixel format"); + + _glfw_free(usableConfigs); + return 0; + } + + pixelFormat = (int) closest->handle; + _glfw_free(usableConfigs); + + return pixelFormat; +} + +#undef ADD_ATTRIB +#undef FIND_ATTRIB_VALUE + +static void makeContextCurrentWGL(_GLFWwindow* window) +{ + if (window) + { + if (wglMakeCurrent(window->context.wgl.dc, window->context.wgl.handle)) + _glfwPlatformSetTls(&_glfw.contextSlot, window); + else + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to make context current"); + _glfwPlatformSetTls(&_glfw.contextSlot, NULL); + } + } + else + { + if (!wglMakeCurrent(NULL, NULL)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to clear current context"); + } + + _glfwPlatformSetTls(&_glfw.contextSlot, NULL); + } +} + +static void swapBuffersWGL(_GLFWwindow* window) +{ + if (!window->monitor) + { + // HACK: Use DwmFlush when desktop composition is enabled on Windows Vista and 7 + if (!IsWindows8OrGreater() && IsWindowsVistaOrGreater()) + { + BOOL enabled = FALSE; + + if (SUCCEEDED(DwmIsCompositionEnabled(&enabled)) && enabled) + { + int count = abs(window->context.wgl.interval); + while (count--) + DwmFlush(); + } + } + } + + SwapBuffers(window->context.wgl.dc); +} + +static void swapIntervalWGL(int interval) +{ + _GLFWwindow* window = _glfwPlatformGetTls(&_glfw.contextSlot); + + window->context.wgl.interval = interval; + + if (!window->monitor) + { + // HACK: Disable WGL swap interval when desktop composition is enabled on Windows + // Vista and 7 to avoid interfering with DWM vsync + if (!IsWindows8OrGreater() && IsWindowsVistaOrGreater()) + { + BOOL enabled = FALSE; + + if (SUCCEEDED(DwmIsCompositionEnabled(&enabled)) && enabled) + interval = 0; + } + } + + if (_glfw.wgl.EXT_swap_control) + wglSwapIntervalEXT(interval); +} + +static int extensionSupportedWGL(const char* extension) +{ + const char* extensions = NULL; + + if (_glfw.wgl.GetExtensionsStringARB) + extensions = wglGetExtensionsStringARB(wglGetCurrentDC()); + else if (_glfw.wgl.GetExtensionsStringEXT) + extensions = wglGetExtensionsStringEXT(); + + if (!extensions) + return GLFW_FALSE; + + return _glfwStringInExtensionString(extension, extensions); +} + +static GLFWglproc getProcAddressWGL(const char* procname) +{ + const GLFWglproc proc = (GLFWglproc) wglGetProcAddress(procname); + if (proc) + return proc; + + return (GLFWglproc) _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, procname); +} + +static void destroyContextWGL(_GLFWwindow* window) +{ + if (window->context.wgl.handle) + { + wglDeleteContext(window->context.wgl.handle); + window->context.wgl.handle = NULL; + } +} + +// Initialize WGL +// +GLFWbool _glfwInitWGL(void) +{ + PIXELFORMATDESCRIPTOR pfd; + HGLRC prc, rc; + HDC pdc, dc; + + if (_glfw.wgl.instance) + return GLFW_TRUE; + + _glfw.wgl.instance = _glfwPlatformLoadModule("opengl32.dll"); + if (!_glfw.wgl.instance) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to load opengl32.dll"); + return GLFW_FALSE; + } + + _glfw.wgl.CreateContext = (PFN_wglCreateContext) + _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglCreateContext"); + _glfw.wgl.DeleteContext = (PFN_wglDeleteContext) + _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglDeleteContext"); + _glfw.wgl.GetProcAddress = (PFN_wglGetProcAddress) + _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglGetProcAddress"); + _glfw.wgl.GetCurrentDC = (PFN_wglGetCurrentDC) + _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglGetCurrentDC"); + _glfw.wgl.GetCurrentContext = (PFN_wglGetCurrentContext) + _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglGetCurrentContext"); + _glfw.wgl.MakeCurrent = (PFN_wglMakeCurrent) + _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglMakeCurrent"); + _glfw.wgl.ShareLists = (PFN_wglShareLists) + _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglShareLists"); + + // NOTE: A dummy context has to be created for opengl32.dll to load the + // OpenGL ICD, from which we can then query WGL extensions + // NOTE: This code will accept the Microsoft GDI ICD; accelerated context + // creation failure occurs during manual pixel format enumeration + + dc = GetDC(_glfw.win32.helperWindowHandle); + + ZeroMemory(&pfd, sizeof(pfd)); + pfd.nSize = sizeof(pfd); + pfd.nVersion = 1; + pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; + pfd.iPixelType = PFD_TYPE_RGBA; + pfd.cColorBits = 24; + + if (!SetPixelFormat(dc, ChoosePixelFormat(dc, &pfd), &pfd)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to set pixel format for dummy context"); + return GLFW_FALSE; + } + + rc = wglCreateContext(dc); + if (!rc) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to create dummy context"); + return GLFW_FALSE; + } + + pdc = wglGetCurrentDC(); + prc = wglGetCurrentContext(); + + if (!wglMakeCurrent(dc, rc)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to make dummy context current"); + wglMakeCurrent(pdc, prc); + wglDeleteContext(rc); + return GLFW_FALSE; + } + + // NOTE: Functions must be loaded first as they're needed to retrieve the + // extension string that tells us whether the functions are supported + _glfw.wgl.GetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC) + wglGetProcAddress("wglGetExtensionsStringEXT"); + _glfw.wgl.GetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) + wglGetProcAddress("wglGetExtensionsStringARB"); + _glfw.wgl.CreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC) + wglGetProcAddress("wglCreateContextAttribsARB"); + _glfw.wgl.SwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) + wglGetProcAddress("wglSwapIntervalEXT"); + _glfw.wgl.GetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC) + wglGetProcAddress("wglGetPixelFormatAttribivARB"); + + // NOTE: WGL_ARB_extensions_string and WGL_EXT_extensions_string are not + // checked below as we are already using them + _glfw.wgl.ARB_multisample = + extensionSupportedWGL("WGL_ARB_multisample"); + _glfw.wgl.ARB_framebuffer_sRGB = + extensionSupportedWGL("WGL_ARB_framebuffer_sRGB"); + _glfw.wgl.EXT_framebuffer_sRGB = + extensionSupportedWGL("WGL_EXT_framebuffer_sRGB"); + _glfw.wgl.ARB_create_context = + extensionSupportedWGL("WGL_ARB_create_context"); + _glfw.wgl.ARB_create_context_profile = + extensionSupportedWGL("WGL_ARB_create_context_profile"); + _glfw.wgl.EXT_create_context_es2_profile = + extensionSupportedWGL("WGL_EXT_create_context_es2_profile"); + _glfw.wgl.ARB_create_context_robustness = + extensionSupportedWGL("WGL_ARB_create_context_robustness"); + _glfw.wgl.ARB_create_context_no_error = + extensionSupportedWGL("WGL_ARB_create_context_no_error"); + _glfw.wgl.EXT_swap_control = + extensionSupportedWGL("WGL_EXT_swap_control"); + _glfw.wgl.EXT_colorspace = + extensionSupportedWGL("WGL_EXT_colorspace"); + _glfw.wgl.ARB_pixel_format = + extensionSupportedWGL("WGL_ARB_pixel_format"); + _glfw.wgl.ARB_context_flush_control = + extensionSupportedWGL("WGL_ARB_context_flush_control"); + + wglMakeCurrent(pdc, prc); + wglDeleteContext(rc); + return GLFW_TRUE; +} + +// Terminate WGL +// +void _glfwTerminateWGL(void) +{ + if (_glfw.wgl.instance) + _glfwPlatformFreeModule(_glfw.wgl.instance); +} + +#define SET_ATTRIB(a, v) \ +{ \ + assert(((size_t) index + 1) < sizeof(attribs) / sizeof(attribs[0])); \ + attribs[index++] = a; \ + attribs[index++] = v; \ +} + +// Create the OpenGL or OpenGL ES context +// +GLFWbool _glfwCreateContextWGL(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + int attribs[40]; + int pixelFormat; + PIXELFORMATDESCRIPTOR pfd; + HGLRC share = NULL; + + if (ctxconfig->share) + share = ctxconfig->share->context.wgl.handle; + + window->context.wgl.dc = GetDC(window->win32.handle); + if (!window->context.wgl.dc) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "WGL: Failed to retrieve DC for window"); + return GLFW_FALSE; + } + + pixelFormat = choosePixelFormatWGL(window, ctxconfig, fbconfig); + if (!pixelFormat) + return GLFW_FALSE; + + if (!DescribePixelFormat(window->context.wgl.dc, + pixelFormat, sizeof(pfd), &pfd)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to retrieve PFD for selected pixel format"); + return GLFW_FALSE; + } + + if (!SetPixelFormat(window->context.wgl.dc, pixelFormat, &pfd)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to set selected pixel format"); + return GLFW_FALSE; + } + + if (ctxconfig->client == GLFW_OPENGL_API) + { + if (ctxconfig->forward) + { + if (!_glfw.wgl.ARB_create_context) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "WGL: A forward compatible OpenGL context requested but WGL_ARB_create_context is unavailable"); + return GLFW_FALSE; + } + } + + if (ctxconfig->profile) + { + if (!_glfw.wgl.ARB_create_context_profile) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "WGL: OpenGL profile requested but WGL_ARB_create_context_profile is unavailable"); + return GLFW_FALSE; + } + } + } + else + { + if (!_glfw.wgl.ARB_create_context || + !_glfw.wgl.ARB_create_context_profile || + !_glfw.wgl.EXT_create_context_es2_profile) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "WGL: OpenGL ES requested but WGL_ARB_create_context_es2_profile is unavailable"); + return GLFW_FALSE; + } + } + + if (_glfw.wgl.ARB_create_context) + { + int index = 0, mask = 0, flags = 0; + + if (ctxconfig->client == GLFW_OPENGL_API) + { + if (ctxconfig->forward) + flags |= WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB; + + if (ctxconfig->profile == GLFW_OPENGL_CORE_PROFILE) + mask |= WGL_CONTEXT_CORE_PROFILE_BIT_ARB; + else if (ctxconfig->profile == GLFW_OPENGL_COMPAT_PROFILE) + mask |= WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB; + } + else + mask |= WGL_CONTEXT_ES2_PROFILE_BIT_EXT; + + if (ctxconfig->debug) + flags |= WGL_CONTEXT_DEBUG_BIT_ARB; + + if (ctxconfig->robustness) + { + if (_glfw.wgl.ARB_create_context_robustness) + { + if (ctxconfig->robustness == GLFW_NO_RESET_NOTIFICATION) + { + SET_ATTRIB(WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, + WGL_NO_RESET_NOTIFICATION_ARB); + } + else if (ctxconfig->robustness == GLFW_LOSE_CONTEXT_ON_RESET) + { + SET_ATTRIB(WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, + WGL_LOSE_CONTEXT_ON_RESET_ARB); + } + + flags |= WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB; + } + } + + if (ctxconfig->release) + { + if (_glfw.wgl.ARB_context_flush_control) + { + if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_NONE) + { + SET_ATTRIB(WGL_CONTEXT_RELEASE_BEHAVIOR_ARB, + WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB); + } + else if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_FLUSH) + { + SET_ATTRIB(WGL_CONTEXT_RELEASE_BEHAVIOR_ARB, + WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB); + } + } + } + + if (ctxconfig->noerror) + { + if (_glfw.wgl.ARB_create_context_no_error) + SET_ATTRIB(WGL_CONTEXT_OPENGL_NO_ERROR_ARB, GLFW_TRUE); + } + + // NOTE: Only request an explicitly versioned context when necessary, as + // explicitly requesting version 1.0 does not always return the + // highest version supported by the driver + if (ctxconfig->major != 1 || ctxconfig->minor != 0) + { + SET_ATTRIB(WGL_CONTEXT_MAJOR_VERSION_ARB, ctxconfig->major); + SET_ATTRIB(WGL_CONTEXT_MINOR_VERSION_ARB, ctxconfig->minor); + } + + if (flags) + SET_ATTRIB(WGL_CONTEXT_FLAGS_ARB, flags); + + if (mask) + SET_ATTRIB(WGL_CONTEXT_PROFILE_MASK_ARB, mask); + + SET_ATTRIB(0, 0); + + window->context.wgl.handle = + wglCreateContextAttribsARB(window->context.wgl.dc, share, attribs); + if (!window->context.wgl.handle) + { + const DWORD error = GetLastError(); + + if (error == (0xc0070000 | ERROR_INVALID_VERSION_ARB)) + { + if (ctxconfig->client == GLFW_OPENGL_API) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "WGL: Driver does not support OpenGL version %i.%i", + ctxconfig->major, + ctxconfig->minor); + } + else + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "WGL: Driver does not support OpenGL ES version %i.%i", + ctxconfig->major, + ctxconfig->minor); + } + } + else if (error == (0xc0070000 | ERROR_INVALID_PROFILE_ARB)) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "WGL: Driver does not support the requested OpenGL profile"); + } + else if (error == (0xc0070000 | ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB)) + { + _glfwInputError(GLFW_INVALID_VALUE, + "WGL: The share context is not compatible with the requested context"); + } + else + { + if (ctxconfig->client == GLFW_OPENGL_API) + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "WGL: Failed to create OpenGL context"); + } + else + { + _glfwInputError(GLFW_VERSION_UNAVAILABLE, + "WGL: Failed to create OpenGL ES context"); + } + } + + return GLFW_FALSE; + } + } + else + { + window->context.wgl.handle = wglCreateContext(window->context.wgl.dc); + if (!window->context.wgl.handle) + { + _glfwInputErrorWin32(GLFW_VERSION_UNAVAILABLE, + "WGL: Failed to create OpenGL context"); + return GLFW_FALSE; + } + + if (share) + { + if (!wglShareLists(share, window->context.wgl.handle)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WGL: Failed to enable sharing with specified OpenGL context"); + return GLFW_FALSE; + } + } + } + + window->context.makeCurrent = makeContextCurrentWGL; + window->context.swapBuffers = swapBuffersWGL; + window->context.swapInterval = swapIntervalWGL; + window->context.extensionSupported = extensionSupportedWGL; + window->context.getProcAddress = getProcAddressWGL; + window->context.destroy = destroyContextWGL; + + return GLFW_TRUE; +} + +#undef SET_ATTRIB + +GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (_glfw.platform.platformID != GLFW_PLATFORM_WIN32) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, + "WGL: Platform not initialized"); + return NULL; + } + + if (window->context.source != GLFW_NATIVE_CONTEXT_API) + { + _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); + return NULL; + } + + return window->context.wgl.handle; +} + +#endif // _GLFW_WIN32 + diff --git a/lib/glfw/src/win32_init.c b/lib/glfw/src/win32_init.c new file mode 100644 index 0000000..64393e7 --- /dev/null +++ b/lib/glfw/src/win32_init.c @@ -0,0 +1,731 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_WIN32) + +#include + +static const GUID _glfw_GUID_DEVINTERFACE_HID = + {0x4d1e55b2,0xf16f,0x11cf,{0x88,0xcb,0x00,0x11,0x11,0x00,0x00,0x30}}; + +#define GUID_DEVINTERFACE_HID _glfw_GUID_DEVINTERFACE_HID + +#if defined(_GLFW_USE_HYBRID_HPG) || defined(_GLFW_USE_OPTIMUS_HPG) + +#if defined(_GLFW_BUILD_DLL) + #pragma message("These symbols must be exported by the executable and have no effect in a DLL") +#endif + +// Executables (but not DLLs) exporting this symbol with this value will be +// automatically directed to the high-performance GPU on Nvidia Optimus systems +// with up-to-date drivers +// +__declspec(dllexport) DWORD NvOptimusEnablement = 1; + +// Executables (but not DLLs) exporting this symbol with this value will be +// automatically directed to the high-performance GPU on AMD PowerXpress systems +// with up-to-date drivers +// +__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; + +#endif // _GLFW_USE_HYBRID_HPG + +#if defined(_GLFW_BUILD_DLL) + +// GLFW DLL entry point +// +BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) +{ + return TRUE; +} + +#endif // _GLFW_BUILD_DLL + +// Load necessary libraries (DLLs) +// +static GLFWbool loadLibraries(void) +{ + if (!GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, + (const WCHAR*) &_glfw, + (HMODULE*) &_glfw.win32.instance)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to retrieve own module handle"); + return GLFW_FALSE; + } + + _glfw.win32.user32.instance = _glfwPlatformLoadModule("user32.dll"); + if (!_glfw.win32.user32.instance) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to load user32.dll"); + return GLFW_FALSE; + } + + _glfw.win32.user32.SetProcessDPIAware_ = (PFN_SetProcessDPIAware) + _glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "SetProcessDPIAware"); + _glfw.win32.user32.ChangeWindowMessageFilterEx_ = (PFN_ChangeWindowMessageFilterEx) + _glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "ChangeWindowMessageFilterEx"); + _glfw.win32.user32.EnableNonClientDpiScaling_ = (PFN_EnableNonClientDpiScaling) + _glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "EnableNonClientDpiScaling"); + _glfw.win32.user32.SetProcessDpiAwarenessContext_ = (PFN_SetProcessDpiAwarenessContext) + _glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "SetProcessDpiAwarenessContext"); + _glfw.win32.user32.GetDpiForWindow_ = (PFN_GetDpiForWindow) + _glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "GetDpiForWindow"); + _glfw.win32.user32.AdjustWindowRectExForDpi_ = (PFN_AdjustWindowRectExForDpi) + _glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "AdjustWindowRectExForDpi"); + _glfw.win32.user32.GetSystemMetricsForDpi_ = (PFN_GetSystemMetricsForDpi) + _glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "GetSystemMetricsForDpi"); + + _glfw.win32.dinput8.instance = _glfwPlatformLoadModule("dinput8.dll"); + if (_glfw.win32.dinput8.instance) + { + _glfw.win32.dinput8.Create = (PFN_DirectInput8Create) + _glfwPlatformGetModuleSymbol(_glfw.win32.dinput8.instance, "DirectInput8Create"); + } + + { + int i; + const char* names[] = + { + "xinput1_4.dll", + "xinput1_3.dll", + "xinput9_1_0.dll", + "xinput1_2.dll", + "xinput1_1.dll", + NULL + }; + + for (i = 0; names[i]; i++) + { + _glfw.win32.xinput.instance = _glfwPlatformLoadModule(names[i]); + if (_glfw.win32.xinput.instance) + { + _glfw.win32.xinput.GetCapabilities = (PFN_XInputGetCapabilities) + _glfwPlatformGetModuleSymbol(_glfw.win32.xinput.instance, "XInputGetCapabilities"); + _glfw.win32.xinput.GetState = (PFN_XInputGetState) + _glfwPlatformGetModuleSymbol(_glfw.win32.xinput.instance, "XInputGetState"); + + break; + } + } + } + + _glfw.win32.dwmapi.instance = _glfwPlatformLoadModule("dwmapi.dll"); + if (_glfw.win32.dwmapi.instance) + { + _glfw.win32.dwmapi.IsCompositionEnabled = (PFN_DwmIsCompositionEnabled) + _glfwPlatformGetModuleSymbol(_glfw.win32.dwmapi.instance, "DwmIsCompositionEnabled"); + _glfw.win32.dwmapi.Flush = (PFN_DwmFlush) + _glfwPlatformGetModuleSymbol(_glfw.win32.dwmapi.instance, "DwmFlush"); + _glfw.win32.dwmapi.EnableBlurBehindWindow = (PFN_DwmEnableBlurBehindWindow) + _glfwPlatformGetModuleSymbol(_glfw.win32.dwmapi.instance, "DwmEnableBlurBehindWindow"); + _glfw.win32.dwmapi.GetColorizationColor = (PFN_DwmGetColorizationColor) + _glfwPlatformGetModuleSymbol(_glfw.win32.dwmapi.instance, "DwmGetColorizationColor"); + } + + _glfw.win32.shcore.instance = _glfwPlatformLoadModule("shcore.dll"); + if (_glfw.win32.shcore.instance) + { + _glfw.win32.shcore.SetProcessDpiAwareness_ = (PFN_SetProcessDpiAwareness) + _glfwPlatformGetModuleSymbol(_glfw.win32.shcore.instance, "SetProcessDpiAwareness"); + _glfw.win32.shcore.GetDpiForMonitor_ = (PFN_GetDpiForMonitor) + _glfwPlatformGetModuleSymbol(_glfw.win32.shcore.instance, "GetDpiForMonitor"); + } + + _glfw.win32.ntdll.instance = _glfwPlatformLoadModule("ntdll.dll"); + if (_glfw.win32.ntdll.instance) + { + _glfw.win32.ntdll.RtlVerifyVersionInfo_ = (PFN_RtlVerifyVersionInfo) + _glfwPlatformGetModuleSymbol(_glfw.win32.ntdll.instance, "RtlVerifyVersionInfo"); + } + + return GLFW_TRUE; +} + +// Unload used libraries (DLLs) +// +static void freeLibraries(void) +{ + if (_glfw.win32.xinput.instance) + _glfwPlatformFreeModule(_glfw.win32.xinput.instance); + + if (_glfw.win32.dinput8.instance) + _glfwPlatformFreeModule(_glfw.win32.dinput8.instance); + + if (_glfw.win32.user32.instance) + _glfwPlatformFreeModule(_glfw.win32.user32.instance); + + if (_glfw.win32.dwmapi.instance) + _glfwPlatformFreeModule(_glfw.win32.dwmapi.instance); + + if (_glfw.win32.shcore.instance) + _glfwPlatformFreeModule(_glfw.win32.shcore.instance); + + if (_glfw.win32.ntdll.instance) + _glfwPlatformFreeModule(_glfw.win32.ntdll.instance); +} + +// Create key code translation tables +// +static void createKeyTables(void) +{ + int scancode; + + memset(_glfw.win32.keycodes, -1, sizeof(_glfw.win32.keycodes)); + memset(_glfw.win32.scancodes, -1, sizeof(_glfw.win32.scancodes)); + + _glfw.win32.keycodes[0x00B] = GLFW_KEY_0; + _glfw.win32.keycodes[0x002] = GLFW_KEY_1; + _glfw.win32.keycodes[0x003] = GLFW_KEY_2; + _glfw.win32.keycodes[0x004] = GLFW_KEY_3; + _glfw.win32.keycodes[0x005] = GLFW_KEY_4; + _glfw.win32.keycodes[0x006] = GLFW_KEY_5; + _glfw.win32.keycodes[0x007] = GLFW_KEY_6; + _glfw.win32.keycodes[0x008] = GLFW_KEY_7; + _glfw.win32.keycodes[0x009] = GLFW_KEY_8; + _glfw.win32.keycodes[0x00A] = GLFW_KEY_9; + _glfw.win32.keycodes[0x01E] = GLFW_KEY_A; + _glfw.win32.keycodes[0x030] = GLFW_KEY_B; + _glfw.win32.keycodes[0x02E] = GLFW_KEY_C; + _glfw.win32.keycodes[0x020] = GLFW_KEY_D; + _glfw.win32.keycodes[0x012] = GLFW_KEY_E; + _glfw.win32.keycodes[0x021] = GLFW_KEY_F; + _glfw.win32.keycodes[0x022] = GLFW_KEY_G; + _glfw.win32.keycodes[0x023] = GLFW_KEY_H; + _glfw.win32.keycodes[0x017] = GLFW_KEY_I; + _glfw.win32.keycodes[0x024] = GLFW_KEY_J; + _glfw.win32.keycodes[0x025] = GLFW_KEY_K; + _glfw.win32.keycodes[0x026] = GLFW_KEY_L; + _glfw.win32.keycodes[0x032] = GLFW_KEY_M; + _glfw.win32.keycodes[0x031] = GLFW_KEY_N; + _glfw.win32.keycodes[0x018] = GLFW_KEY_O; + _glfw.win32.keycodes[0x019] = GLFW_KEY_P; + _glfw.win32.keycodes[0x010] = GLFW_KEY_Q; + _glfw.win32.keycodes[0x013] = GLFW_KEY_R; + _glfw.win32.keycodes[0x01F] = GLFW_KEY_S; + _glfw.win32.keycodes[0x014] = GLFW_KEY_T; + _glfw.win32.keycodes[0x016] = GLFW_KEY_U; + _glfw.win32.keycodes[0x02F] = GLFW_KEY_V; + _glfw.win32.keycodes[0x011] = GLFW_KEY_W; + _glfw.win32.keycodes[0x02D] = GLFW_KEY_X; + _glfw.win32.keycodes[0x015] = GLFW_KEY_Y; + _glfw.win32.keycodes[0x02C] = GLFW_KEY_Z; + + _glfw.win32.keycodes[0x028] = GLFW_KEY_APOSTROPHE; + _glfw.win32.keycodes[0x02B] = GLFW_KEY_BACKSLASH; + _glfw.win32.keycodes[0x033] = GLFW_KEY_COMMA; + _glfw.win32.keycodes[0x00D] = GLFW_KEY_EQUAL; + _glfw.win32.keycodes[0x029] = GLFW_KEY_GRAVE_ACCENT; + _glfw.win32.keycodes[0x01A] = GLFW_KEY_LEFT_BRACKET; + _glfw.win32.keycodes[0x00C] = GLFW_KEY_MINUS; + _glfw.win32.keycodes[0x034] = GLFW_KEY_PERIOD; + _glfw.win32.keycodes[0x01B] = GLFW_KEY_RIGHT_BRACKET; + _glfw.win32.keycodes[0x027] = GLFW_KEY_SEMICOLON; + _glfw.win32.keycodes[0x035] = GLFW_KEY_SLASH; + _glfw.win32.keycodes[0x056] = GLFW_KEY_WORLD_2; + + _glfw.win32.keycodes[0x00E] = GLFW_KEY_BACKSPACE; + _glfw.win32.keycodes[0x153] = GLFW_KEY_DELETE; + _glfw.win32.keycodes[0x14F] = GLFW_KEY_END; + _glfw.win32.keycodes[0x01C] = GLFW_KEY_ENTER; + _glfw.win32.keycodes[0x001] = GLFW_KEY_ESCAPE; + _glfw.win32.keycodes[0x147] = GLFW_KEY_HOME; + _glfw.win32.keycodes[0x152] = GLFW_KEY_INSERT; + _glfw.win32.keycodes[0x15D] = GLFW_KEY_MENU; + _glfw.win32.keycodes[0x151] = GLFW_KEY_PAGE_DOWN; + _glfw.win32.keycodes[0x149] = GLFW_KEY_PAGE_UP; + _glfw.win32.keycodes[0x045] = GLFW_KEY_PAUSE; + _glfw.win32.keycodes[0x039] = GLFW_KEY_SPACE; + _glfw.win32.keycodes[0x00F] = GLFW_KEY_TAB; + _glfw.win32.keycodes[0x03A] = GLFW_KEY_CAPS_LOCK; + _glfw.win32.keycodes[0x145] = GLFW_KEY_NUM_LOCK; + _glfw.win32.keycodes[0x046] = GLFW_KEY_SCROLL_LOCK; + _glfw.win32.keycodes[0x03B] = GLFW_KEY_F1; + _glfw.win32.keycodes[0x03C] = GLFW_KEY_F2; + _glfw.win32.keycodes[0x03D] = GLFW_KEY_F3; + _glfw.win32.keycodes[0x03E] = GLFW_KEY_F4; + _glfw.win32.keycodes[0x03F] = GLFW_KEY_F5; + _glfw.win32.keycodes[0x040] = GLFW_KEY_F6; + _glfw.win32.keycodes[0x041] = GLFW_KEY_F7; + _glfw.win32.keycodes[0x042] = GLFW_KEY_F8; + _glfw.win32.keycodes[0x043] = GLFW_KEY_F9; + _glfw.win32.keycodes[0x044] = GLFW_KEY_F10; + _glfw.win32.keycodes[0x057] = GLFW_KEY_F11; + _glfw.win32.keycodes[0x058] = GLFW_KEY_F12; + _glfw.win32.keycodes[0x064] = GLFW_KEY_F13; + _glfw.win32.keycodes[0x065] = GLFW_KEY_F14; + _glfw.win32.keycodes[0x066] = GLFW_KEY_F15; + _glfw.win32.keycodes[0x067] = GLFW_KEY_F16; + _glfw.win32.keycodes[0x068] = GLFW_KEY_F17; + _glfw.win32.keycodes[0x069] = GLFW_KEY_F18; + _glfw.win32.keycodes[0x06A] = GLFW_KEY_F19; + _glfw.win32.keycodes[0x06B] = GLFW_KEY_F20; + _glfw.win32.keycodes[0x06C] = GLFW_KEY_F21; + _glfw.win32.keycodes[0x06D] = GLFW_KEY_F22; + _glfw.win32.keycodes[0x06E] = GLFW_KEY_F23; + _glfw.win32.keycodes[0x076] = GLFW_KEY_F24; + _glfw.win32.keycodes[0x038] = GLFW_KEY_LEFT_ALT; + _glfw.win32.keycodes[0x01D] = GLFW_KEY_LEFT_CONTROL; + _glfw.win32.keycodes[0x02A] = GLFW_KEY_LEFT_SHIFT; + _glfw.win32.keycodes[0x15B] = GLFW_KEY_LEFT_SUPER; + _glfw.win32.keycodes[0x137] = GLFW_KEY_PRINT_SCREEN; + _glfw.win32.keycodes[0x138] = GLFW_KEY_RIGHT_ALT; + _glfw.win32.keycodes[0x11D] = GLFW_KEY_RIGHT_CONTROL; + _glfw.win32.keycodes[0x036] = GLFW_KEY_RIGHT_SHIFT; + _glfw.win32.keycodes[0x15C] = GLFW_KEY_RIGHT_SUPER; + _glfw.win32.keycodes[0x150] = GLFW_KEY_DOWN; + _glfw.win32.keycodes[0x14B] = GLFW_KEY_LEFT; + _glfw.win32.keycodes[0x14D] = GLFW_KEY_RIGHT; + _glfw.win32.keycodes[0x148] = GLFW_KEY_UP; + + _glfw.win32.keycodes[0x052] = GLFW_KEY_KP_0; + _glfw.win32.keycodes[0x04F] = GLFW_KEY_KP_1; + _glfw.win32.keycodes[0x050] = GLFW_KEY_KP_2; + _glfw.win32.keycodes[0x051] = GLFW_KEY_KP_3; + _glfw.win32.keycodes[0x04B] = GLFW_KEY_KP_4; + _glfw.win32.keycodes[0x04C] = GLFW_KEY_KP_5; + _glfw.win32.keycodes[0x04D] = GLFW_KEY_KP_6; + _glfw.win32.keycodes[0x047] = GLFW_KEY_KP_7; + _glfw.win32.keycodes[0x048] = GLFW_KEY_KP_8; + _glfw.win32.keycodes[0x049] = GLFW_KEY_KP_9; + _glfw.win32.keycodes[0x04E] = GLFW_KEY_KP_ADD; + _glfw.win32.keycodes[0x053] = GLFW_KEY_KP_DECIMAL; + _glfw.win32.keycodes[0x135] = GLFW_KEY_KP_DIVIDE; + _glfw.win32.keycodes[0x11C] = GLFW_KEY_KP_ENTER; + _glfw.win32.keycodes[0x059] = GLFW_KEY_KP_EQUAL; + _glfw.win32.keycodes[0x037] = GLFW_KEY_KP_MULTIPLY; + _glfw.win32.keycodes[0x04A] = GLFW_KEY_KP_SUBTRACT; + + for (scancode = 0; scancode < 512; scancode++) + { + if (_glfw.win32.keycodes[scancode] > 0) + _glfw.win32.scancodes[_glfw.win32.keycodes[scancode]] = scancode; + } +} + +// Window procedure for the hidden helper window +// +static LRESULT CALLBACK helperWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch (uMsg) + { + case WM_DISPLAYCHANGE: + _glfwPollMonitorsWin32(); + break; + + case WM_DEVICECHANGE: + { + if (!_glfw.joysticksInitialized) + break; + + if (wParam == DBT_DEVICEARRIVAL) + { + DEV_BROADCAST_HDR* dbh = (DEV_BROADCAST_HDR*) lParam; + if (dbh && dbh->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) + _glfwDetectJoystickConnectionWin32(); + } + else if (wParam == DBT_DEVICEREMOVECOMPLETE) + { + DEV_BROADCAST_HDR* dbh = (DEV_BROADCAST_HDR*) lParam; + if (dbh && dbh->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) + _glfwDetectJoystickDisconnectionWin32(); + } + + break; + } + } + + return DefWindowProcW(hWnd, uMsg, wParam, lParam); +} + +// Creates a dummy window for behind-the-scenes work +// +static GLFWbool createHelperWindow(void) +{ + MSG msg; + WNDCLASSEXW wc = { sizeof(wc) }; + + wc.style = CS_OWNDC; + wc.lpfnWndProc = (WNDPROC) helperWindowProc; + wc.hInstance = _glfw.win32.instance; + wc.lpszClassName = L"GLFW3 Helper"; + + _glfw.win32.helperWindowClass = RegisterClassExW(&wc); + if (!_glfw.win32.helperWindowClass) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "WIn32: Failed to register helper window class"); + return GLFW_FALSE; + } + + _glfw.win32.helperWindowHandle = + CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, + MAKEINTATOM(_glfw.win32.helperWindowClass), + L"GLFW message window", + WS_CLIPSIBLINGS | WS_CLIPCHILDREN, + 0, 0, 1, 1, + NULL, NULL, + _glfw.win32.instance, + NULL); + + if (!_glfw.win32.helperWindowHandle) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to create helper window"); + return GLFW_FALSE; + } + + // HACK: The command to the first ShowWindow call is ignored if the parent + // process passed along a STARTUPINFO, so clear that with a no-op call + ShowWindow(_glfw.win32.helperWindowHandle, SW_HIDE); + + // Register for HID device notifications + { + DEV_BROADCAST_DEVICEINTERFACE_W dbi; + ZeroMemory(&dbi, sizeof(dbi)); + dbi.dbcc_size = sizeof(dbi); + dbi.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; + dbi.dbcc_classguid = GUID_DEVINTERFACE_HID; + + _glfw.win32.deviceNotificationHandle = + RegisterDeviceNotificationW(_glfw.win32.helperWindowHandle, + (DEV_BROADCAST_HDR*) &dbi, + DEVICE_NOTIFY_WINDOW_HANDLE); + } + + while (PeekMessageW(&msg, _glfw.win32.helperWindowHandle, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessageW(&msg); + } + + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Returns a wide string version of the specified UTF-8 string +// +WCHAR* _glfwCreateWideStringFromUTF8Win32(const char* source) +{ + WCHAR* target; + int count; + + count = MultiByteToWideChar(CP_UTF8, 0, source, -1, NULL, 0); + if (!count) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to convert string from UTF-8"); + return NULL; + } + + target = _glfw_calloc(count, sizeof(WCHAR)); + + if (!MultiByteToWideChar(CP_UTF8, 0, source, -1, target, count)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to convert string from UTF-8"); + _glfw_free(target); + return NULL; + } + + return target; +} + +// Returns a UTF-8 string version of the specified wide string +// +char* _glfwCreateUTF8FromWideStringWin32(const WCHAR* source) +{ + char* target; + int size; + + size = WideCharToMultiByte(CP_UTF8, 0, source, -1, NULL, 0, NULL, NULL); + if (!size) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to convert string to UTF-8"); + return NULL; + } + + target = _glfw_calloc(size, 1); + + if (!WideCharToMultiByte(CP_UTF8, 0, source, -1, target, size, NULL, NULL)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to convert string to UTF-8"); + _glfw_free(target); + return NULL; + } + + return target; +} + +// Reports the specified error, appending information about the last Win32 error +// +void _glfwInputErrorWin32(int error, const char* description) +{ + WCHAR buffer[_GLFW_MESSAGE_SIZE] = L""; + char message[_GLFW_MESSAGE_SIZE] = ""; + + FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + NULL, + GetLastError() & 0xffff, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + buffer, + sizeof(buffer) / sizeof(WCHAR), + NULL); + WideCharToMultiByte(CP_UTF8, 0, buffer, -1, message, sizeof(message), NULL, NULL); + + _glfwInputError(error, "%s: %s", description, message); +} + +// Updates key names according to the current keyboard layout +// +void _glfwUpdateKeyNamesWin32(void) +{ + int key; + BYTE state[256] = {0}; + + memset(_glfw.win32.keynames, 0, sizeof(_glfw.win32.keynames)); + + for (key = GLFW_KEY_SPACE; key <= GLFW_KEY_LAST; key++) + { + UINT vk; + int scancode, length; + WCHAR chars[16]; + + scancode = _glfw.win32.scancodes[key]; + if (scancode == -1) + continue; + + if (key >= GLFW_KEY_KP_0 && key <= GLFW_KEY_KP_ADD) + { + const UINT vks[] = { + VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, + VK_NUMPAD4, VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7, + VK_NUMPAD8, VK_NUMPAD9, VK_DECIMAL, VK_DIVIDE, + VK_MULTIPLY, VK_SUBTRACT, VK_ADD + }; + + vk = vks[key - GLFW_KEY_KP_0]; + } + else + vk = MapVirtualKeyW(scancode, MAPVK_VSC_TO_VK); + + length = ToUnicode(vk, scancode, state, + chars, sizeof(chars) / sizeof(WCHAR), + 0); + + if (length == -1) + { + // This is a dead key, so we need a second simulated key press + // to make it output its own character (usually a diacritic) + length = ToUnicode(vk, scancode, state, + chars, sizeof(chars) / sizeof(WCHAR), + 0); + } + + if (length < 1) + continue; + + WideCharToMultiByte(CP_UTF8, 0, chars, 1, + _glfw.win32.keynames[key], + sizeof(_glfw.win32.keynames[key]), + NULL, NULL); + } +} + +// Replacement for IsWindowsVersionOrGreater, as we cannot rely on the +// application having a correct embedded manifest +// +BOOL _glfwIsWindowsVersionOrGreaterWin32(WORD major, WORD minor, WORD sp) +{ + OSVERSIONINFOEXW osvi = { sizeof(osvi), major, minor, 0, 0, {0}, sp }; + DWORD mask = VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR; + ULONGLONG cond = VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL); + cond = VerSetConditionMask(cond, VER_MINORVERSION, VER_GREATER_EQUAL); + cond = VerSetConditionMask(cond, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); + // HACK: Use RtlVerifyVersionInfo instead of VerifyVersionInfoW as the + // latter lies unless the user knew to embed a non-default manifest + // announcing support for Windows 10 via supportedOS GUID + return RtlVerifyVersionInfo(&osvi, mask, cond) == 0; +} + +// Checks whether we are on at least the specified build of Windows 10 +// +BOOL _glfwIsWindows10BuildOrGreaterWin32(WORD build) +{ + OSVERSIONINFOEXW osvi = { sizeof(osvi), 10, 0, build }; + DWORD mask = VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER; + ULONGLONG cond = VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL); + cond = VerSetConditionMask(cond, VER_MINORVERSION, VER_GREATER_EQUAL); + cond = VerSetConditionMask(cond, VER_BUILDNUMBER, VER_GREATER_EQUAL); + // HACK: Use RtlVerifyVersionInfo instead of VerifyVersionInfoW as the + // latter lies unless the user knew to embed a non-default manifest + // announcing support for Windows 10 via supportedOS GUID + return RtlVerifyVersionInfo(&osvi, mask, cond) == 0; +} + +GLFWbool _glfwConnectWin32(int platformID, _GLFWplatform* platform) +{ + const _GLFWplatform win32 = + { + GLFW_PLATFORM_WIN32, + _glfwInitWin32, + _glfwTerminateWin32, + _glfwGetCursorPosWin32, + _glfwSetCursorPosWin32, + _glfwSetCursorModeWin32, + _glfwSetRawMouseMotionWin32, + _glfwRawMouseMotionSupportedWin32, + _glfwCreateCursorWin32, + _glfwCreateStandardCursorWin32, + _glfwDestroyCursorWin32, + _glfwSetCursorWin32, + _glfwGetScancodeNameWin32, + _glfwGetKeyScancodeWin32, + _glfwSetClipboardStringWin32, + _glfwGetClipboardStringWin32, + _glfwInitJoysticksWin32, + _glfwTerminateJoysticksWin32, + _glfwPollJoystickWin32, + _glfwGetMappingNameWin32, + _glfwUpdateGamepadGUIDWin32, + _glfwFreeMonitorWin32, + _glfwGetMonitorPosWin32, + _glfwGetMonitorContentScaleWin32, + _glfwGetMonitorWorkareaWin32, + _glfwGetVideoModesWin32, + _glfwGetVideoModeWin32, + _glfwGetGammaRampWin32, + _glfwSetGammaRampWin32, + _glfwCreateWindowWin32, + _glfwDestroyWindowWin32, + _glfwSetWindowTitleWin32, + _glfwSetWindowIconWin32, + _glfwGetWindowPosWin32, + _glfwSetWindowPosWin32, + _glfwGetWindowSizeWin32, + _glfwSetWindowSizeWin32, + _glfwSetWindowSizeLimitsWin32, + _glfwSetWindowAspectRatioWin32, + _glfwGetFramebufferSizeWin32, + _glfwGetWindowFrameSizeWin32, + _glfwGetWindowContentScaleWin32, + _glfwIconifyWindowWin32, + _glfwRestoreWindowWin32, + _glfwMaximizeWindowWin32, + _glfwShowWindowWin32, + _glfwHideWindowWin32, + _glfwRequestWindowAttentionWin32, + _glfwFocusWindowWin32, + _glfwSetWindowMonitorWin32, + _glfwWindowFocusedWin32, + _glfwWindowIconifiedWin32, + _glfwWindowVisibleWin32, + _glfwWindowMaximizedWin32, + _glfwWindowHoveredWin32, + _glfwFramebufferTransparentWin32, + _glfwGetWindowOpacityWin32, + _glfwSetWindowResizableWin32, + _glfwSetWindowDecoratedWin32, + _glfwSetWindowFloatingWin32, + _glfwSetWindowOpacityWin32, + _glfwSetWindowMousePassthroughWin32, + _glfwPollEventsWin32, + _glfwWaitEventsWin32, + _glfwWaitEventsTimeoutWin32, + _glfwPostEmptyEventWin32, + _glfwGetEGLPlatformWin32, + _glfwGetEGLNativeDisplayWin32, + _glfwGetEGLNativeWindowWin32, + _glfwGetRequiredInstanceExtensionsWin32, + _glfwGetPhysicalDevicePresentationSupportWin32, + _glfwCreateWindowSurfaceWin32, + }; + + *platform = win32; + return GLFW_TRUE; +} + +int _glfwInitWin32(void) +{ + if (!loadLibraries()) + return GLFW_FALSE; + + createKeyTables(); + _glfwUpdateKeyNamesWin32(); + + if (_glfwIsWindows10Version1703OrGreaterWin32()) + SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); + else if (IsWindows8Point1OrGreater()) + SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE); + else if (IsWindowsVistaOrGreater()) + SetProcessDPIAware(); + + if (!createHelperWindow()) + return GLFW_FALSE; + + _glfwPollMonitorsWin32(); + return GLFW_TRUE; +} + +void _glfwTerminateWin32(void) +{ + if (_glfw.win32.deviceNotificationHandle) + UnregisterDeviceNotification(_glfw.win32.deviceNotificationHandle); + + if (_glfw.win32.helperWindowHandle) + DestroyWindow(_glfw.win32.helperWindowHandle); + if (_glfw.win32.helperWindowClass) + UnregisterClassW(MAKEINTATOM(_glfw.win32.helperWindowClass), _glfw.win32.instance); + if (_glfw.win32.mainWindowClass) + UnregisterClassW(MAKEINTATOM(_glfw.win32.mainWindowClass), _glfw.win32.instance); + + _glfw_free(_glfw.win32.clipboardString); + _glfw_free(_glfw.win32.rawInput); + + _glfwTerminateWGL(); + _glfwTerminateEGL(); + _glfwTerminateOSMesa(); + + freeLibraries(); +} + +#endif // _GLFW_WIN32 + diff --git a/lib/glfw/src/win32_joystick.c b/lib/glfw/src/win32_joystick.c new file mode 100644 index 0000000..4e83577 --- /dev/null +++ b/lib/glfw/src/win32_joystick.c @@ -0,0 +1,762 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_WIN32) + +#include +#include + +#define _GLFW_TYPE_AXIS 0 +#define _GLFW_TYPE_SLIDER 1 +#define _GLFW_TYPE_BUTTON 2 +#define _GLFW_TYPE_POV 3 + +// Data produced with DirectInput device object enumeration +// +typedef struct _GLFWobjenumWin32 +{ + IDirectInputDevice8W* device; + _GLFWjoyobjectWin32* objects; + int objectCount; + int axisCount; + int sliderCount; + int buttonCount; + int povCount; +} _GLFWobjenumWin32; + +// Define local copies of the necessary GUIDs +// +static const GUID _glfw_IID_IDirectInput8W = + {0xbf798031,0x483a,0x4da2,{0xaa,0x99,0x5d,0x64,0xed,0x36,0x97,0x00}}; +static const GUID _glfw_GUID_XAxis = + {0xa36d02e0,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}}; +static const GUID _glfw_GUID_YAxis = + {0xa36d02e1,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}}; +static const GUID _glfw_GUID_ZAxis = + {0xa36d02e2,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}}; +static const GUID _glfw_GUID_RxAxis = + {0xa36d02f4,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}}; +static const GUID _glfw_GUID_RyAxis = + {0xa36d02f5,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}}; +static const GUID _glfw_GUID_RzAxis = + {0xa36d02e3,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}}; +static const GUID _glfw_GUID_Slider = + {0xa36d02e4,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}}; +static const GUID _glfw_GUID_POV = + {0xa36d02f2,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}}; + +#define IID_IDirectInput8W _glfw_IID_IDirectInput8W +#define GUID_XAxis _glfw_GUID_XAxis +#define GUID_YAxis _glfw_GUID_YAxis +#define GUID_ZAxis _glfw_GUID_ZAxis +#define GUID_RxAxis _glfw_GUID_RxAxis +#define GUID_RyAxis _glfw_GUID_RyAxis +#define GUID_RzAxis _glfw_GUID_RzAxis +#define GUID_Slider _glfw_GUID_Slider +#define GUID_POV _glfw_GUID_POV + +// Object data array for our clone of c_dfDIJoystick +// Generated with https://github.com/elmindreda/c_dfDIJoystick2 +// +static DIOBJECTDATAFORMAT _glfwObjectDataFormats[] = +{ + { &GUID_XAxis,DIJOFS_X,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION }, + { &GUID_YAxis,DIJOFS_Y,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION }, + { &GUID_ZAxis,DIJOFS_Z,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION }, + { &GUID_RxAxis,DIJOFS_RX,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION }, + { &GUID_RyAxis,DIJOFS_RY,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION }, + { &GUID_RzAxis,DIJOFS_RZ,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION }, + { &GUID_Slider,DIJOFS_SLIDER(0),DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION }, + { &GUID_Slider,DIJOFS_SLIDER(1),DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION }, + { &GUID_POV,DIJOFS_POV(0),DIDFT_POV|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { &GUID_POV,DIJOFS_POV(1),DIDFT_POV|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { &GUID_POV,DIJOFS_POV(2),DIDFT_POV|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { &GUID_POV,DIJOFS_POV(3),DIDFT_POV|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(0),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(1),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(2),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(3),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(4),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(5),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(6),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(7),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(8),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(9),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(10),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(11),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(12),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(13),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(14),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(15),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(16),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(17),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(18),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(19),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(20),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(21),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(22),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(23),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(24),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(25),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(26),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(27),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(28),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(29),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(30),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, + { NULL,DIJOFS_BUTTON(31),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 }, +}; + +// Our clone of c_dfDIJoystick +// +static const DIDATAFORMAT _glfwDataFormat = +{ + sizeof(DIDATAFORMAT), + sizeof(DIOBJECTDATAFORMAT), + DIDFT_ABSAXIS, + sizeof(DIJOYSTATE), + sizeof(_glfwObjectDataFormats) / sizeof(DIOBJECTDATAFORMAT), + _glfwObjectDataFormats +}; + +// Returns a description fitting the specified XInput capabilities +// +static const char* getDeviceDescription(const XINPUT_CAPABILITIES* xic) +{ + switch (xic->SubType) + { + case XINPUT_DEVSUBTYPE_WHEEL: + return "XInput Wheel"; + case XINPUT_DEVSUBTYPE_ARCADE_STICK: + return "XInput Arcade Stick"; + case XINPUT_DEVSUBTYPE_FLIGHT_STICK: + return "XInput Flight Stick"; + case XINPUT_DEVSUBTYPE_DANCE_PAD: + return "XInput Dance Pad"; + case XINPUT_DEVSUBTYPE_GUITAR: + return "XInput Guitar"; + case XINPUT_DEVSUBTYPE_DRUM_KIT: + return "XInput Drum Kit"; + case XINPUT_DEVSUBTYPE_GAMEPAD: + { + if (xic->Flags & XINPUT_CAPS_WIRELESS) + return "Wireless Xbox Controller"; + else + return "Xbox Controller"; + } + } + + return "Unknown XInput Device"; +} + +// Lexically compare device objects +// +static int compareJoystickObjects(const void* first, const void* second) +{ + const _GLFWjoyobjectWin32* fo = first; + const _GLFWjoyobjectWin32* so = second; + + if (fo->type != so->type) + return fo->type - so->type; + + return fo->offset - so->offset; +} + +// Checks whether the specified device supports XInput +// Technique from FDInputJoystickManager::IsXInputDeviceFast in ZDoom +// +static GLFWbool supportsXInput(const GUID* guid) +{ + UINT i, count = 0; + RAWINPUTDEVICELIST* ridl; + GLFWbool result = GLFW_FALSE; + + if (GetRawInputDeviceList(NULL, &count, sizeof(RAWINPUTDEVICELIST)) != 0) + return GLFW_FALSE; + + ridl = _glfw_calloc(count, sizeof(RAWINPUTDEVICELIST)); + + if (GetRawInputDeviceList(ridl, &count, sizeof(RAWINPUTDEVICELIST)) == (UINT) -1) + { + _glfw_free(ridl); + return GLFW_FALSE; + } + + for (i = 0; i < count; i++) + { + RID_DEVICE_INFO rdi; + char name[256]; + UINT size; + + if (ridl[i].dwType != RIM_TYPEHID) + continue; + + ZeroMemory(&rdi, sizeof(rdi)); + rdi.cbSize = sizeof(rdi); + size = sizeof(rdi); + + if ((INT) GetRawInputDeviceInfoA(ridl[i].hDevice, + RIDI_DEVICEINFO, + &rdi, &size) == -1) + { + continue; + } + + if (MAKELONG(rdi.hid.dwVendorId, rdi.hid.dwProductId) != (LONG) guid->Data1) + continue; + + memset(name, 0, sizeof(name)); + size = sizeof(name); + + if ((INT) GetRawInputDeviceInfoA(ridl[i].hDevice, + RIDI_DEVICENAME, + name, &size) == -1) + { + break; + } + + name[sizeof(name) - 1] = '\0'; + if (strstr(name, "IG_")) + { + result = GLFW_TRUE; + break; + } + } + + _glfw_free(ridl); + return result; +} + +// Frees all resources associated with the specified joystick +// +static void closeJoystick(_GLFWjoystick* js) +{ + _glfwInputJoystick(js, GLFW_DISCONNECTED); + + if (js->win32.device) + { + IDirectInputDevice8_Unacquire(js->win32.device); + IDirectInputDevice8_Release(js->win32.device); + } + + _glfw_free(js->win32.objects); + _glfwFreeJoystick(js); +} + +// DirectInput device object enumeration callback +// Insights gleaned from SDL +// +static BOOL CALLBACK deviceObjectCallback(const DIDEVICEOBJECTINSTANCEW* doi, + void* user) +{ + _GLFWobjenumWin32* data = user; + _GLFWjoyobjectWin32* object = data->objects + data->objectCount; + + if (DIDFT_GETTYPE(doi->dwType) & DIDFT_AXIS) + { + DIPROPRANGE dipr; + + if (memcmp(&doi->guidType, &GUID_Slider, sizeof(GUID)) == 0) + object->offset = DIJOFS_SLIDER(data->sliderCount); + else if (memcmp(&doi->guidType, &GUID_XAxis, sizeof(GUID)) == 0) + object->offset = DIJOFS_X; + else if (memcmp(&doi->guidType, &GUID_YAxis, sizeof(GUID)) == 0) + object->offset = DIJOFS_Y; + else if (memcmp(&doi->guidType, &GUID_ZAxis, sizeof(GUID)) == 0) + object->offset = DIJOFS_Z; + else if (memcmp(&doi->guidType, &GUID_RxAxis, sizeof(GUID)) == 0) + object->offset = DIJOFS_RX; + else if (memcmp(&doi->guidType, &GUID_RyAxis, sizeof(GUID)) == 0) + object->offset = DIJOFS_RY; + else if (memcmp(&doi->guidType, &GUID_RzAxis, sizeof(GUID)) == 0) + object->offset = DIJOFS_RZ; + else + return DIENUM_CONTINUE; + + ZeroMemory(&dipr, sizeof(dipr)); + dipr.diph.dwSize = sizeof(dipr); + dipr.diph.dwHeaderSize = sizeof(dipr.diph); + dipr.diph.dwObj = doi->dwType; + dipr.diph.dwHow = DIPH_BYID; + dipr.lMin = -32768; + dipr.lMax = 32767; + + if (FAILED(IDirectInputDevice8_SetProperty(data->device, + DIPROP_RANGE, + &dipr.diph))) + { + return DIENUM_CONTINUE; + } + + if (memcmp(&doi->guidType, &GUID_Slider, sizeof(GUID)) == 0) + { + object->type = _GLFW_TYPE_SLIDER; + data->sliderCount++; + } + else + { + object->type = _GLFW_TYPE_AXIS; + data->axisCount++; + } + } + else if (DIDFT_GETTYPE(doi->dwType) & DIDFT_BUTTON) + { + object->offset = DIJOFS_BUTTON(data->buttonCount); + object->type = _GLFW_TYPE_BUTTON; + data->buttonCount++; + } + else if (DIDFT_GETTYPE(doi->dwType) & DIDFT_POV) + { + object->offset = DIJOFS_POV(data->povCount); + object->type = _GLFW_TYPE_POV; + data->povCount++; + } + + data->objectCount++; + return DIENUM_CONTINUE; +} + +// DirectInput device enumeration callback +// +static BOOL CALLBACK deviceCallback(const DIDEVICEINSTANCE* di, void* user) +{ + int jid = 0; + DIDEVCAPS dc; + DIPROPDWORD dipd; + IDirectInputDevice8* device; + _GLFWobjenumWin32 data; + _GLFWjoystick* js; + char guid[33]; + char name[256]; + + for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + js = _glfw.joysticks + jid; + if (js->connected) + { + if (memcmp(&js->win32.guid, &di->guidInstance, sizeof(GUID)) == 0) + return DIENUM_CONTINUE; + } + } + + if (supportsXInput(&di->guidProduct)) + return DIENUM_CONTINUE; + + if (FAILED(IDirectInput8_CreateDevice(_glfw.win32.dinput8.api, + &di->guidInstance, + &device, + NULL))) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Failed to create device"); + return DIENUM_CONTINUE; + } + + if (FAILED(IDirectInputDevice8_SetDataFormat(device, &_glfwDataFormat))) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to set device data format"); + + IDirectInputDevice8_Release(device); + return DIENUM_CONTINUE; + } + + ZeroMemory(&dc, sizeof(dc)); + dc.dwSize = sizeof(dc); + + if (FAILED(IDirectInputDevice8_GetCapabilities(device, &dc))) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to query device capabilities"); + + IDirectInputDevice8_Release(device); + return DIENUM_CONTINUE; + } + + ZeroMemory(&dipd, sizeof(dipd)); + dipd.diph.dwSize = sizeof(dipd); + dipd.diph.dwHeaderSize = sizeof(dipd.diph); + dipd.diph.dwHow = DIPH_DEVICE; + dipd.dwData = DIPROPAXISMODE_ABS; + + if (FAILED(IDirectInputDevice8_SetProperty(device, + DIPROP_AXISMODE, + &dipd.diph))) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to set device axis mode"); + + IDirectInputDevice8_Release(device); + return DIENUM_CONTINUE; + } + + memset(&data, 0, sizeof(data)); + data.device = device; + data.objects = _glfw_calloc(dc.dwAxes + (size_t) dc.dwButtons + dc.dwPOVs, + sizeof(_GLFWjoyobjectWin32)); + + if (FAILED(IDirectInputDevice8_EnumObjects(device, + deviceObjectCallback, + &data, + DIDFT_AXIS | DIDFT_BUTTON | DIDFT_POV))) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to enumerate device objects"); + + IDirectInputDevice8_Release(device); + _glfw_free(data.objects); + return DIENUM_CONTINUE; + } + + qsort(data.objects, data.objectCount, + sizeof(_GLFWjoyobjectWin32), + compareJoystickObjects); + + if (!WideCharToMultiByte(CP_UTF8, 0, + di->tszInstanceName, -1, + name, sizeof(name), + NULL, NULL)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to convert joystick name to UTF-8"); + + IDirectInputDevice8_Release(device); + _glfw_free(data.objects); + return DIENUM_STOP; + } + + // Generate a joystick GUID that matches the SDL 2.0.5+ one + if (memcmp(&di->guidProduct.Data4[2], "PIDVID", 6) == 0) + { + sprintf(guid, "03000000%02x%02x0000%02x%02x000000000000", + (uint8_t) di->guidProduct.Data1, + (uint8_t) (di->guidProduct.Data1 >> 8), + (uint8_t) (di->guidProduct.Data1 >> 16), + (uint8_t) (di->guidProduct.Data1 >> 24)); + } + else + { + sprintf(guid, "05000000%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x00", + name[0], name[1], name[2], name[3], + name[4], name[5], name[6], name[7], + name[8], name[9], name[10]); + } + + js = _glfwAllocJoystick(name, guid, + data.axisCount + data.sliderCount, + data.buttonCount, + data.povCount); + if (!js) + { + IDirectInputDevice8_Release(device); + _glfw_free(data.objects); + return DIENUM_STOP; + } + + js->win32.device = device; + js->win32.guid = di->guidInstance; + js->win32.objects = data.objects; + js->win32.objectCount = data.objectCount; + + _glfwInputJoystick(js, GLFW_CONNECTED); + return DIENUM_CONTINUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Checks for new joysticks after DBT_DEVICEARRIVAL +// +void _glfwDetectJoystickConnectionWin32(void) +{ + if (_glfw.win32.xinput.instance) + { + DWORD index; + + for (index = 0; index < XUSER_MAX_COUNT; index++) + { + int jid; + char guid[33]; + XINPUT_CAPABILITIES xic; + _GLFWjoystick* js; + + for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + if (_glfw.joysticks[jid].connected && + _glfw.joysticks[jid].win32.device == NULL && + _glfw.joysticks[jid].win32.index == index) + { + break; + } + } + + if (jid <= GLFW_JOYSTICK_LAST) + continue; + + if (XInputGetCapabilities(index, 0, &xic) != ERROR_SUCCESS) + continue; + + // Generate a joystick GUID that matches the SDL 2.0.5+ one + sprintf(guid, "78696e707574%02x000000000000000000", + xic.SubType & 0xff); + + js = _glfwAllocJoystick(getDeviceDescription(&xic), guid, 6, 10, 1); + if (!js) + continue; + + js->win32.index = index; + + _glfwInputJoystick(js, GLFW_CONNECTED); + } + } + + if (_glfw.win32.dinput8.api) + { + if (FAILED(IDirectInput8_EnumDevices(_glfw.win32.dinput8.api, + DI8DEVCLASS_GAMECTRL, + deviceCallback, + NULL, + DIEDFL_ALLDEVICES))) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Failed to enumerate DirectInput8 devices"); + return; + } + } +} + +// Checks for joystick disconnection after DBT_DEVICEREMOVECOMPLETE +// +void _glfwDetectJoystickDisconnectionWin32(void) +{ + int jid; + + for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + { + _GLFWjoystick* js = _glfw.joysticks + jid; + if (js->connected) + _glfwPollJoystickWin32(js, _GLFW_POLL_PRESENCE); + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwInitJoysticksWin32(void) +{ + if (_glfw.win32.dinput8.instance) + { + if (FAILED(DirectInput8Create(_glfw.win32.instance, + DIRECTINPUT_VERSION, + &IID_IDirectInput8W, + (void**) &_glfw.win32.dinput8.api, + NULL))) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to create interface"); + return GLFW_FALSE; + } + } + + _glfwDetectJoystickConnectionWin32(); + return GLFW_TRUE; +} + +void _glfwTerminateJoysticksWin32(void) +{ + int jid; + + for (jid = GLFW_JOYSTICK_1; jid <= GLFW_JOYSTICK_LAST; jid++) + closeJoystick(_glfw.joysticks + jid); + + if (_glfw.win32.dinput8.api) + IDirectInput8_Release(_glfw.win32.dinput8.api); +} + +GLFWbool _glfwPollJoystickWin32(_GLFWjoystick* js, int mode) +{ + if (js->win32.device) + { + int i, ai = 0, bi = 0, pi = 0; + HRESULT result; + DIJOYSTATE state = {0}; + + IDirectInputDevice8_Poll(js->win32.device); + result = IDirectInputDevice8_GetDeviceState(js->win32.device, + sizeof(state), + &state); + if (result == DIERR_NOTACQUIRED || result == DIERR_INPUTLOST) + { + IDirectInputDevice8_Acquire(js->win32.device); + IDirectInputDevice8_Poll(js->win32.device); + result = IDirectInputDevice8_GetDeviceState(js->win32.device, + sizeof(state), + &state); + } + + if (FAILED(result)) + { + closeJoystick(js); + return GLFW_FALSE; + } + + if (mode == _GLFW_POLL_PRESENCE) + return GLFW_TRUE; + + for (i = 0; i < js->win32.objectCount; i++) + { + const void* data = (char*) &state + js->win32.objects[i].offset; + + switch (js->win32.objects[i].type) + { + case _GLFW_TYPE_AXIS: + case _GLFW_TYPE_SLIDER: + { + const float value = (*((LONG*) data) + 0.5f) / 32767.5f; + _glfwInputJoystickAxis(js, ai, value); + ai++; + break; + } + + case _GLFW_TYPE_BUTTON: + { + const char value = (*((BYTE*) data) & 0x80) != 0; + _glfwInputJoystickButton(js, bi, value); + bi++; + break; + } + + case _GLFW_TYPE_POV: + { + const int states[9] = + { + GLFW_HAT_UP, + GLFW_HAT_RIGHT_UP, + GLFW_HAT_RIGHT, + GLFW_HAT_RIGHT_DOWN, + GLFW_HAT_DOWN, + GLFW_HAT_LEFT_DOWN, + GLFW_HAT_LEFT, + GLFW_HAT_LEFT_UP, + GLFW_HAT_CENTERED + }; + + // Screams of horror are appropriate at this point + int stateIndex = LOWORD(*(DWORD*) data) / (45 * DI_DEGREES); + if (stateIndex < 0 || stateIndex > 8) + stateIndex = 8; + + _glfwInputJoystickHat(js, pi, states[stateIndex]); + pi++; + break; + } + } + } + } + else + { + int i, dpad = 0; + DWORD result; + XINPUT_STATE xis; + const WORD buttons[10] = + { + XINPUT_GAMEPAD_A, + XINPUT_GAMEPAD_B, + XINPUT_GAMEPAD_X, + XINPUT_GAMEPAD_Y, + XINPUT_GAMEPAD_LEFT_SHOULDER, + XINPUT_GAMEPAD_RIGHT_SHOULDER, + XINPUT_GAMEPAD_BACK, + XINPUT_GAMEPAD_START, + XINPUT_GAMEPAD_LEFT_THUMB, + XINPUT_GAMEPAD_RIGHT_THUMB + }; + + result = XInputGetState(js->win32.index, &xis); + if (result != ERROR_SUCCESS) + { + if (result == ERROR_DEVICE_NOT_CONNECTED) + closeJoystick(js); + + return GLFW_FALSE; + } + + if (mode == _GLFW_POLL_PRESENCE) + return GLFW_TRUE; + + _glfwInputJoystickAxis(js, 0, (xis.Gamepad.sThumbLX + 0.5f) / 32767.5f); + _glfwInputJoystickAxis(js, 1, -(xis.Gamepad.sThumbLY + 0.5f) / 32767.5f); + _glfwInputJoystickAxis(js, 2, (xis.Gamepad.sThumbRX + 0.5f) / 32767.5f); + _glfwInputJoystickAxis(js, 3, -(xis.Gamepad.sThumbRY + 0.5f) / 32767.5f); + _glfwInputJoystickAxis(js, 4, xis.Gamepad.bLeftTrigger / 127.5f - 1.f); + _glfwInputJoystickAxis(js, 5, xis.Gamepad.bRightTrigger / 127.5f - 1.f); + + for (i = 0; i < 10; i++) + { + const char value = (xis.Gamepad.wButtons & buttons[i]) ? 1 : 0; + _glfwInputJoystickButton(js, i, value); + } + + if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP) + dpad |= GLFW_HAT_UP; + if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) + dpad |= GLFW_HAT_RIGHT; + if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN) + dpad |= GLFW_HAT_DOWN; + if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT) + dpad |= GLFW_HAT_LEFT; + + _glfwInputJoystickHat(js, 0, dpad); + } + + return GLFW_TRUE; +} + +const char* _glfwGetMappingNameWin32(void) +{ + return "Windows"; +} + +void _glfwUpdateGamepadGUIDWin32(char* guid) +{ + if (strcmp(guid + 20, "504944564944") == 0) + { + char original[33]; + strncpy(original, guid, sizeof(original) - 1); + sprintf(guid, "03000000%.4s0000%.4s000000000000", + original, original + 4); + } +} + +#endif // _GLFW_WIN32 + diff --git a/lib/glfw/src/win32_joystick.h b/lib/glfw/src/win32_joystick.h new file mode 100644 index 0000000..9ab6438 --- /dev/null +++ b/lib/glfw/src/win32_joystick.h @@ -0,0 +1,51 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLFW_WIN32_JOYSTICK_STATE _GLFWjoystickWin32 win32; +#define GLFW_WIN32_LIBRARY_JOYSTICK_STATE + +// Joystick element (axis, button or slider) +// +typedef struct _GLFWjoyobjectWin32 +{ + int offset; + int type; +} _GLFWjoyobjectWin32; + +// Win32-specific per-joystick data +// +typedef struct _GLFWjoystickWin32 +{ + _GLFWjoyobjectWin32* objects; + int objectCount; + IDirectInputDevice8W* device; + DWORD index; + GUID guid; +} _GLFWjoystickWin32; + +void _glfwDetectJoystickConnectionWin32(void); +void _glfwDetectJoystickDisconnectionWin32(void); + diff --git a/lib/glfw/src/win32_module.c b/lib/glfw/src/win32_module.c new file mode 100644 index 0000000..9c2b6d2 --- /dev/null +++ b/lib/glfw/src/win32_module.c @@ -0,0 +1,53 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2021 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#if defined(GLFW_BUILD_WIN32_MODULE) + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void* _glfwPlatformLoadModule(const char* path) +{ + return LoadLibraryA(path); +} + +void _glfwPlatformFreeModule(void* module) +{ + FreeLibrary((HMODULE) module); +} + +GLFWproc _glfwPlatformGetModuleSymbol(void* module, const char* name) +{ + return (GLFWproc) GetProcAddress((HMODULE) module, name); +} + +#endif // GLFW_BUILD_WIN32_MODULE + diff --git a/lib/glfw/src/win32_monitor.c b/lib/glfw/src/win32_monitor.c new file mode 100644 index 0000000..2935ac2 --- /dev/null +++ b/lib/glfw/src/win32_monitor.c @@ -0,0 +1,551 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_WIN32) + +#include +#include +#include +#include + + +// Callback for EnumDisplayMonitors in createMonitor +// +static BOOL CALLBACK monitorCallback(HMONITOR handle, + HDC dc, + RECT* rect, + LPARAM data) +{ + MONITORINFOEXW mi; + ZeroMemory(&mi, sizeof(mi)); + mi.cbSize = sizeof(mi); + + if (GetMonitorInfoW(handle, (MONITORINFO*) &mi)) + { + _GLFWmonitor* monitor = (_GLFWmonitor*) data; + if (wcscmp(mi.szDevice, monitor->win32.adapterName) == 0) + monitor->win32.handle = handle; + } + + return TRUE; +} + +// Create monitor from an adapter and (optionally) a display +// +static _GLFWmonitor* createMonitor(DISPLAY_DEVICEW* adapter, + DISPLAY_DEVICEW* display) +{ + _GLFWmonitor* monitor; + int widthMM, heightMM; + char* name; + HDC dc; + DEVMODEW dm; + RECT rect; + + if (display) + name = _glfwCreateUTF8FromWideStringWin32(display->DeviceString); + else + name = _glfwCreateUTF8FromWideStringWin32(adapter->DeviceString); + if (!name) + return NULL; + + ZeroMemory(&dm, sizeof(dm)); + dm.dmSize = sizeof(dm); + EnumDisplaySettingsW(adapter->DeviceName, ENUM_CURRENT_SETTINGS, &dm); + + dc = CreateDCW(L"DISPLAY", adapter->DeviceName, NULL, NULL); + + if (IsWindows8Point1OrGreater()) + { + widthMM = GetDeviceCaps(dc, HORZSIZE); + heightMM = GetDeviceCaps(dc, VERTSIZE); + } + else + { + widthMM = (int) (dm.dmPelsWidth * 25.4f / GetDeviceCaps(dc, LOGPIXELSX)); + heightMM = (int) (dm.dmPelsHeight * 25.4f / GetDeviceCaps(dc, LOGPIXELSY)); + } + + DeleteDC(dc); + + monitor = _glfwAllocMonitor(name, widthMM, heightMM); + _glfw_free(name); + + if (adapter->StateFlags & DISPLAY_DEVICE_MODESPRUNED) + monitor->win32.modesPruned = GLFW_TRUE; + + wcscpy(monitor->win32.adapterName, adapter->DeviceName); + WideCharToMultiByte(CP_UTF8, 0, + adapter->DeviceName, -1, + monitor->win32.publicAdapterName, + sizeof(monitor->win32.publicAdapterName), + NULL, NULL); + + if (display) + { + wcscpy(monitor->win32.displayName, display->DeviceName); + WideCharToMultiByte(CP_UTF8, 0, + display->DeviceName, -1, + monitor->win32.publicDisplayName, + sizeof(monitor->win32.publicDisplayName), + NULL, NULL); + } + + rect.left = dm.dmPosition.x; + rect.top = dm.dmPosition.y; + rect.right = dm.dmPosition.x + dm.dmPelsWidth; + rect.bottom = dm.dmPosition.y + dm.dmPelsHeight; + + EnumDisplayMonitors(NULL, &rect, monitorCallback, (LPARAM) monitor); + return monitor; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Poll for changes in the set of connected monitors +// +void _glfwPollMonitorsWin32(void) +{ + int i, disconnectedCount; + _GLFWmonitor** disconnected = NULL; + DWORD adapterIndex, displayIndex; + DISPLAY_DEVICEW adapter, display; + _GLFWmonitor* monitor; + + disconnectedCount = _glfw.monitorCount; + if (disconnectedCount) + { + disconnected = _glfw_calloc(_glfw.monitorCount, sizeof(_GLFWmonitor*)); + memcpy(disconnected, + _glfw.monitors, + _glfw.monitorCount * sizeof(_GLFWmonitor*)); + } + + for (adapterIndex = 0; ; adapterIndex++) + { + int type = _GLFW_INSERT_LAST; + + ZeroMemory(&adapter, sizeof(adapter)); + adapter.cb = sizeof(adapter); + + if (!EnumDisplayDevicesW(NULL, adapterIndex, &adapter, 0)) + break; + + if (!(adapter.StateFlags & DISPLAY_DEVICE_ACTIVE)) + continue; + + if (adapter.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) + type = _GLFW_INSERT_FIRST; + + for (displayIndex = 0; ; displayIndex++) + { + ZeroMemory(&display, sizeof(display)); + display.cb = sizeof(display); + + if (!EnumDisplayDevicesW(adapter.DeviceName, displayIndex, &display, 0)) + break; + + if (!(display.StateFlags & DISPLAY_DEVICE_ACTIVE)) + continue; + + for (i = 0; i < disconnectedCount; i++) + { + if (disconnected[i] && + wcscmp(disconnected[i]->win32.displayName, + display.DeviceName) == 0) + { + disconnected[i] = NULL; + // handle may have changed, update + EnumDisplayMonitors(NULL, NULL, monitorCallback, (LPARAM) _glfw.monitors[i]); + break; + } + } + + if (i < disconnectedCount) + continue; + + monitor = createMonitor(&adapter, &display); + if (!monitor) + { + _glfw_free(disconnected); + return; + } + + _glfwInputMonitor(monitor, GLFW_CONNECTED, type); + + type = _GLFW_INSERT_LAST; + } + + // HACK: If an active adapter does not have any display devices + // (as sometimes happens), add it directly as a monitor + if (displayIndex == 0) + { + for (i = 0; i < disconnectedCount; i++) + { + if (disconnected[i] && + wcscmp(disconnected[i]->win32.adapterName, + adapter.DeviceName) == 0) + { + disconnected[i] = NULL; + break; + } + } + + if (i < disconnectedCount) + continue; + + monitor = createMonitor(&adapter, NULL); + if (!monitor) + { + _glfw_free(disconnected); + return; + } + + _glfwInputMonitor(monitor, GLFW_CONNECTED, type); + } + } + + for (i = 0; i < disconnectedCount; i++) + { + if (disconnected[i]) + _glfwInputMonitor(disconnected[i], GLFW_DISCONNECTED, 0); + } + + _glfw_free(disconnected); +} + +// Change the current video mode +// +void _glfwSetVideoModeWin32(_GLFWmonitor* monitor, const GLFWvidmode* desired) +{ + GLFWvidmode current; + const GLFWvidmode* best; + DEVMODEW dm; + LONG result; + + best = _glfwChooseVideoMode(monitor, desired); + _glfwGetVideoModeWin32(monitor, ¤t); + if (_glfwCompareVideoModes(¤t, best) == 0) + return; + + ZeroMemory(&dm, sizeof(dm)); + dm.dmSize = sizeof(dm); + dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | + DM_DISPLAYFREQUENCY; + dm.dmPelsWidth = best->width; + dm.dmPelsHeight = best->height; + dm.dmBitsPerPel = best->redBits + best->greenBits + best->blueBits; + dm.dmDisplayFrequency = best->refreshRate; + + if (dm.dmBitsPerPel < 15 || dm.dmBitsPerPel >= 24) + dm.dmBitsPerPel = 32; + + result = ChangeDisplaySettingsExW(monitor->win32.adapterName, + &dm, + NULL, + CDS_FULLSCREEN, + NULL); + if (result == DISP_CHANGE_SUCCESSFUL) + monitor->win32.modeChanged = GLFW_TRUE; + else + { + const char* description = "Unknown error"; + + if (result == DISP_CHANGE_BADDUALVIEW) + description = "The system uses DualView"; + else if (result == DISP_CHANGE_BADFLAGS) + description = "Invalid flags"; + else if (result == DISP_CHANGE_BADMODE) + description = "Graphics mode not supported"; + else if (result == DISP_CHANGE_BADPARAM) + description = "Invalid parameter"; + else if (result == DISP_CHANGE_FAILED) + description = "Graphics mode failed"; + else if (result == DISP_CHANGE_NOTUPDATED) + description = "Failed to write to registry"; + else if (result == DISP_CHANGE_RESTART) + description = "Computer restart required"; + + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to set video mode: %s", + description); + } +} + +// Restore the previously saved (original) video mode +// +void _glfwRestoreVideoModeWin32(_GLFWmonitor* monitor) +{ + if (monitor->win32.modeChanged) + { + ChangeDisplaySettingsExW(monitor->win32.adapterName, + NULL, NULL, CDS_FULLSCREEN, NULL); + monitor->win32.modeChanged = GLFW_FALSE; + } +} + +void _glfwGetHMONITORContentScaleWin32(HMONITOR handle, float* xscale, float* yscale) +{ + UINT xdpi, ydpi; + + if (xscale) + *xscale = 0.f; + if (yscale) + *yscale = 0.f; + + if (IsWindows8Point1OrGreater()) + { + if (GetDpiForMonitor(handle, MDT_EFFECTIVE_DPI, &xdpi, &ydpi) != S_OK) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Failed to query monitor DPI"); + return; + } + } + else + { + const HDC dc = GetDC(NULL); + xdpi = GetDeviceCaps(dc, LOGPIXELSX); + ydpi = GetDeviceCaps(dc, LOGPIXELSY); + ReleaseDC(NULL, dc); + } + + if (xscale) + *xscale = xdpi / (float) USER_DEFAULT_SCREEN_DPI; + if (yscale) + *yscale = ydpi / (float) USER_DEFAULT_SCREEN_DPI; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwFreeMonitorWin32(_GLFWmonitor* monitor) +{ +} + +void _glfwGetMonitorPosWin32(_GLFWmonitor* monitor, int* xpos, int* ypos) +{ + DEVMODEW dm; + ZeroMemory(&dm, sizeof(dm)); + dm.dmSize = sizeof(dm); + + EnumDisplaySettingsExW(monitor->win32.adapterName, + ENUM_CURRENT_SETTINGS, + &dm, + EDS_ROTATEDMODE); + + if (xpos) + *xpos = dm.dmPosition.x; + if (ypos) + *ypos = dm.dmPosition.y; +} + +void _glfwGetMonitorContentScaleWin32(_GLFWmonitor* monitor, + float* xscale, float* yscale) +{ + _glfwGetHMONITORContentScaleWin32(monitor->win32.handle, xscale, yscale); +} + +void _glfwGetMonitorWorkareaWin32(_GLFWmonitor* monitor, + int* xpos, int* ypos, + int* width, int* height) +{ + MONITORINFO mi = { sizeof(mi) }; + GetMonitorInfoW(monitor->win32.handle, &mi); + + if (xpos) + *xpos = mi.rcWork.left; + if (ypos) + *ypos = mi.rcWork.top; + if (width) + *width = mi.rcWork.right - mi.rcWork.left; + if (height) + *height = mi.rcWork.bottom - mi.rcWork.top; +} + +GLFWvidmode* _glfwGetVideoModesWin32(_GLFWmonitor* monitor, int* count) +{ + int modeIndex = 0, size = 0; + GLFWvidmode* result = NULL; + + *count = 0; + + for (;;) + { + int i; + GLFWvidmode mode; + DEVMODEW dm; + + ZeroMemory(&dm, sizeof(dm)); + dm.dmSize = sizeof(dm); + + if (!EnumDisplaySettingsW(monitor->win32.adapterName, modeIndex, &dm)) + break; + + modeIndex++; + + // Skip modes with less than 15 BPP + if (dm.dmBitsPerPel < 15) + continue; + + mode.width = dm.dmPelsWidth; + mode.height = dm.dmPelsHeight; + mode.refreshRate = dm.dmDisplayFrequency; + _glfwSplitBPP(dm.dmBitsPerPel, + &mode.redBits, + &mode.greenBits, + &mode.blueBits); + + for (i = 0; i < *count; i++) + { + if (_glfwCompareVideoModes(result + i, &mode) == 0) + break; + } + + // Skip duplicate modes + if (i < *count) + continue; + + if (monitor->win32.modesPruned) + { + // Skip modes not supported by the connected displays + if (ChangeDisplaySettingsExW(monitor->win32.adapterName, + &dm, + NULL, + CDS_TEST, + NULL) != DISP_CHANGE_SUCCESSFUL) + { + continue; + } + } + + if (*count == size) + { + size += 128; + result = (GLFWvidmode*) _glfw_realloc(result, size * sizeof(GLFWvidmode)); + } + + (*count)++; + result[*count - 1] = mode; + } + + if (!*count) + { + // HACK: Report the current mode if no valid modes were found + result = _glfw_calloc(1, sizeof(GLFWvidmode)); + _glfwGetVideoModeWin32(monitor, result); + *count = 1; + } + + return result; +} + +void _glfwGetVideoModeWin32(_GLFWmonitor* monitor, GLFWvidmode* mode) +{ + DEVMODEW dm; + ZeroMemory(&dm, sizeof(dm)); + dm.dmSize = sizeof(dm); + + EnumDisplaySettingsW(monitor->win32.adapterName, ENUM_CURRENT_SETTINGS, &dm); + + mode->width = dm.dmPelsWidth; + mode->height = dm.dmPelsHeight; + mode->refreshRate = dm.dmDisplayFrequency; + _glfwSplitBPP(dm.dmBitsPerPel, + &mode->redBits, + &mode->greenBits, + &mode->blueBits); +} + +GLFWbool _glfwGetGammaRampWin32(_GLFWmonitor* monitor, GLFWgammaramp* ramp) +{ + HDC dc; + WORD values[3][256]; + + dc = CreateDCW(L"DISPLAY", monitor->win32.adapterName, NULL, NULL); + GetDeviceGammaRamp(dc, values); + DeleteDC(dc); + + _glfwAllocGammaArrays(ramp, 256); + + memcpy(ramp->red, values[0], sizeof(values[0])); + memcpy(ramp->green, values[1], sizeof(values[1])); + memcpy(ramp->blue, values[2], sizeof(values[2])); + + return GLFW_TRUE; +} + +void _glfwSetGammaRampWin32(_GLFWmonitor* monitor, const GLFWgammaramp* ramp) +{ + HDC dc; + WORD values[3][256]; + + if (ramp->size != 256) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Gamma ramp size must be 256"); + return; + } + + memcpy(values[0], ramp->red, sizeof(values[0])); + memcpy(values[1], ramp->green, sizeof(values[1])); + memcpy(values[2], ramp->blue, sizeof(values[2])); + + dc = CreateDCW(L"DISPLAY", monitor->win32.adapterName, NULL, NULL); + SetDeviceGammaRamp(dc, values); + DeleteDC(dc); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return monitor->win32.publicAdapterName; +} + +GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return monitor->win32.publicDisplayName; +} + +#endif // _GLFW_WIN32 + diff --git a/lib/glfw/src/win32_platform.h b/lib/glfw/src/win32_platform.h new file mode 100644 index 0000000..82b34bb --- /dev/null +++ b/lib/glfw/src/win32_platform.h @@ -0,0 +1,624 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +// We don't need all the fancy stuff +#ifndef NOMINMAX + #define NOMINMAX +#endif + +#ifndef VC_EXTRALEAN + #define VC_EXTRALEAN +#endif + +#ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN +#endif + +// This is a workaround for the fact that glfw3.h needs to export APIENTRY (for +// example to allow applications to correctly declare a GL_KHR_debug callback) +// but windows.h assumes no one will define APIENTRY before it does +#undef APIENTRY + +// GLFW on Windows is Unicode only and does not work in MBCS mode +#ifndef UNICODE + #define UNICODE +#endif + +// GLFW requires Windows XP or later +#if WINVER < 0x0501 + #undef WINVER + #define WINVER 0x0501 +#endif +#if _WIN32_WINNT < 0x0501 + #undef _WIN32_WINNT + #define _WIN32_WINNT 0x0501 +#endif + +// GLFW uses DirectInput8 interfaces +#define DIRECTINPUT_VERSION 0x0800 + +// GLFW uses OEM cursor resources +#define OEMRESOURCE + +#include +#include +#include +#include +#include + +// HACK: Define macros that some windows.h variants don't +#ifndef WM_MOUSEHWHEEL + #define WM_MOUSEHWHEEL 0x020E +#endif +#ifndef WM_DWMCOMPOSITIONCHANGED + #define WM_DWMCOMPOSITIONCHANGED 0x031E +#endif +#ifndef WM_DWMCOLORIZATIONCOLORCHANGED + #define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320 +#endif +#ifndef WM_COPYGLOBALDATA + #define WM_COPYGLOBALDATA 0x0049 +#endif +#ifndef WM_UNICHAR + #define WM_UNICHAR 0x0109 +#endif +#ifndef UNICODE_NOCHAR + #define UNICODE_NOCHAR 0xFFFF +#endif +#ifndef WM_DPICHANGED + #define WM_DPICHANGED 0x02E0 +#endif +#ifndef GET_XBUTTON_WPARAM + #define GET_XBUTTON_WPARAM(w) (HIWORD(w)) +#endif +#ifndef EDS_ROTATEDMODE + #define EDS_ROTATEDMODE 0x00000004 +#endif +#ifndef DISPLAY_DEVICE_ACTIVE + #define DISPLAY_DEVICE_ACTIVE 0x00000001 +#endif +#ifndef _WIN32_WINNT_WINBLUE + #define _WIN32_WINNT_WINBLUE 0x0603 +#endif +#ifndef _WIN32_WINNT_WIN8 + #define _WIN32_WINNT_WIN8 0x0602 +#endif +#ifndef WM_GETDPISCALEDSIZE + #define WM_GETDPISCALEDSIZE 0x02e4 +#endif +#ifndef USER_DEFAULT_SCREEN_DPI + #define USER_DEFAULT_SCREEN_DPI 96 +#endif +#ifndef OCR_HAND + #define OCR_HAND 32649 +#endif + +#if WINVER < 0x0601 +typedef struct +{ + DWORD cbSize; + DWORD ExtStatus; +} CHANGEFILTERSTRUCT; +#ifndef MSGFLT_ALLOW + #define MSGFLT_ALLOW 1 +#endif +#endif /*Windows 7*/ + +#if WINVER < 0x0600 +#define DWM_BB_ENABLE 0x00000001 +#define DWM_BB_BLURREGION 0x00000002 +typedef struct +{ + DWORD dwFlags; + BOOL fEnable; + HRGN hRgnBlur; + BOOL fTransitionOnMaximized; +} DWM_BLURBEHIND; +#else + #include +#endif /*Windows Vista*/ + +#ifndef DPI_ENUMS_DECLARED +typedef enum +{ + PROCESS_DPI_UNAWARE = 0, + PROCESS_SYSTEM_DPI_AWARE = 1, + PROCESS_PER_MONITOR_DPI_AWARE = 2 +} PROCESS_DPI_AWARENESS; +typedef enum +{ + MDT_EFFECTIVE_DPI = 0, + MDT_ANGULAR_DPI = 1, + MDT_RAW_DPI = 2, + MDT_DEFAULT = MDT_EFFECTIVE_DPI +} MONITOR_DPI_TYPE; +#endif /*DPI_ENUMS_DECLARED*/ + +#ifndef DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 +#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((HANDLE) -4) +#endif /*DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2*/ + +// Replacement for versionhelpers.h macros, as we cannot rely on the +// application having a correct embedded manifest +// +#define IsWindowsVistaOrGreater() \ + _glfwIsWindowsVersionOrGreaterWin32(HIBYTE(_WIN32_WINNT_VISTA), \ + LOBYTE(_WIN32_WINNT_VISTA), 0) +#define IsWindows7OrGreater() \ + _glfwIsWindowsVersionOrGreaterWin32(HIBYTE(_WIN32_WINNT_WIN7), \ + LOBYTE(_WIN32_WINNT_WIN7), 0) +#define IsWindows8OrGreater() \ + _glfwIsWindowsVersionOrGreaterWin32(HIBYTE(_WIN32_WINNT_WIN8), \ + LOBYTE(_WIN32_WINNT_WIN8), 0) +#define IsWindows8Point1OrGreater() \ + _glfwIsWindowsVersionOrGreaterWin32(HIBYTE(_WIN32_WINNT_WINBLUE), \ + LOBYTE(_WIN32_WINNT_WINBLUE), 0) + +// Windows 10 Anniversary Update +#define _glfwIsWindows10Version1607OrGreaterWin32() \ + _glfwIsWindows10BuildOrGreaterWin32(14393) +// Windows 10 Creators Update +#define _glfwIsWindows10Version1703OrGreaterWin32() \ + _glfwIsWindows10BuildOrGreaterWin32(15063) + +// HACK: Define macros that some xinput.h variants don't +#ifndef XINPUT_CAPS_WIRELESS + #define XINPUT_CAPS_WIRELESS 0x0002 +#endif +#ifndef XINPUT_DEVSUBTYPE_WHEEL + #define XINPUT_DEVSUBTYPE_WHEEL 0x02 +#endif +#ifndef XINPUT_DEVSUBTYPE_ARCADE_STICK + #define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03 +#endif +#ifndef XINPUT_DEVSUBTYPE_FLIGHT_STICK + #define XINPUT_DEVSUBTYPE_FLIGHT_STICK 0x04 +#endif +#ifndef XINPUT_DEVSUBTYPE_DANCE_PAD + #define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05 +#endif +#ifndef XINPUT_DEVSUBTYPE_GUITAR + #define XINPUT_DEVSUBTYPE_GUITAR 0x06 +#endif +#ifndef XINPUT_DEVSUBTYPE_DRUM_KIT + #define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08 +#endif +#ifndef XINPUT_DEVSUBTYPE_ARCADE_PAD + #define XINPUT_DEVSUBTYPE_ARCADE_PAD 0x13 +#endif +#ifndef XUSER_MAX_COUNT + #define XUSER_MAX_COUNT 4 +#endif + +// HACK: Define macros that some dinput.h variants don't +#ifndef DIDFT_OPTIONAL + #define DIDFT_OPTIONAL 0x80000000 +#endif + +#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 +#define WGL_SUPPORT_OPENGL_ARB 0x2010 +#define WGL_DRAW_TO_WINDOW_ARB 0x2001 +#define WGL_PIXEL_TYPE_ARB 0x2013 +#define WGL_TYPE_RGBA_ARB 0x202b +#define WGL_ACCELERATION_ARB 0x2003 +#define WGL_NO_ACCELERATION_ARB 0x2025 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_RED_SHIFT_ARB 0x2016 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_GREEN_SHIFT_ARB 0x2018 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_BLUE_SHIFT_ARB 0x201a +#define WGL_ALPHA_BITS_ARB 0x201b +#define WGL_ALPHA_SHIFT_ARB 0x201c +#define WGL_ACCUM_BITS_ARB 0x201d +#define WGL_ACCUM_RED_BITS_ARB 0x201e +#define WGL_ACCUM_GREEN_BITS_ARB 0x201f +#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 +#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 +#define WGL_DEPTH_BITS_ARB 0x2022 +#define WGL_STENCIL_BITS_ARB 0x2023 +#define WGL_AUX_BUFFERS_ARB 0x2024 +#define WGL_STEREO_ARB 0x2012 +#define WGL_DOUBLE_BUFFER_ARB 0x2011 +#define WGL_SAMPLES_ARB 0x2042 +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20a9 +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 +#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 +#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31b3 +#define WGL_COLORSPACE_EXT 0x309d +#define WGL_COLORSPACE_SRGB_EXT 0x3089 + +#define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_INVALID_PROFILE_ARB 0x2096 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 + +// xinput.dll function pointer typedefs +typedef DWORD (WINAPI * PFN_XInputGetCapabilities)(DWORD,DWORD,XINPUT_CAPABILITIES*); +typedef DWORD (WINAPI * PFN_XInputGetState)(DWORD,XINPUT_STATE*); +#define XInputGetCapabilities _glfw.win32.xinput.GetCapabilities +#define XInputGetState _glfw.win32.xinput.GetState + +// dinput8.dll function pointer typedefs +typedef HRESULT (WINAPI * PFN_DirectInput8Create)(HINSTANCE,DWORD,REFIID,LPVOID*,LPUNKNOWN); +#define DirectInput8Create _glfw.win32.dinput8.Create + +// user32.dll function pointer typedefs +typedef BOOL (WINAPI * PFN_SetProcessDPIAware)(void); +typedef BOOL (WINAPI * PFN_ChangeWindowMessageFilterEx)(HWND,UINT,DWORD,CHANGEFILTERSTRUCT*); +typedef BOOL (WINAPI * PFN_EnableNonClientDpiScaling)(HWND); +typedef BOOL (WINAPI * PFN_SetProcessDpiAwarenessContext)(HANDLE); +typedef UINT (WINAPI * PFN_GetDpiForWindow)(HWND); +typedef BOOL (WINAPI * PFN_AdjustWindowRectExForDpi)(LPRECT,DWORD,BOOL,DWORD,UINT); +typedef int (WINAPI * PFN_GetSystemMetricsForDpi)(int,UINT); +#define SetProcessDPIAware _glfw.win32.user32.SetProcessDPIAware_ +#define ChangeWindowMessageFilterEx _glfw.win32.user32.ChangeWindowMessageFilterEx_ +#define EnableNonClientDpiScaling _glfw.win32.user32.EnableNonClientDpiScaling_ +#define SetProcessDpiAwarenessContext _glfw.win32.user32.SetProcessDpiAwarenessContext_ +#define GetDpiForWindow _glfw.win32.user32.GetDpiForWindow_ +#define AdjustWindowRectExForDpi _glfw.win32.user32.AdjustWindowRectExForDpi_ +#define GetSystemMetricsForDpi _glfw.win32.user32.GetSystemMetricsForDpi_ + +// dwmapi.dll function pointer typedefs +typedef HRESULT (WINAPI * PFN_DwmIsCompositionEnabled)(BOOL*); +typedef HRESULT (WINAPI * PFN_DwmFlush)(VOID); +typedef HRESULT(WINAPI * PFN_DwmEnableBlurBehindWindow)(HWND,const DWM_BLURBEHIND*); +typedef HRESULT (WINAPI * PFN_DwmGetColorizationColor)(DWORD*,BOOL*); +#define DwmIsCompositionEnabled _glfw.win32.dwmapi.IsCompositionEnabled +#define DwmFlush _glfw.win32.dwmapi.Flush +#define DwmEnableBlurBehindWindow _glfw.win32.dwmapi.EnableBlurBehindWindow +#define DwmGetColorizationColor _glfw.win32.dwmapi.GetColorizationColor + +// shcore.dll function pointer typedefs +typedef HRESULT (WINAPI * PFN_SetProcessDpiAwareness)(PROCESS_DPI_AWARENESS); +typedef HRESULT (WINAPI * PFN_GetDpiForMonitor)(HMONITOR,MONITOR_DPI_TYPE,UINT*,UINT*); +#define SetProcessDpiAwareness _glfw.win32.shcore.SetProcessDpiAwareness_ +#define GetDpiForMonitor _glfw.win32.shcore.GetDpiForMonitor_ + +// ntdll.dll function pointer typedefs +typedef LONG (WINAPI * PFN_RtlVerifyVersionInfo)(OSVERSIONINFOEXW*,ULONG,ULONGLONG); +#define RtlVerifyVersionInfo _glfw.win32.ntdll.RtlVerifyVersionInfo_ + +// WGL extension pointer typedefs +typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC)(int); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC)(HDC,int,int,UINT,const int*,int*); +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void); +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC); +typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC,HGLRC,const int*); +#define wglSwapIntervalEXT _glfw.wgl.SwapIntervalEXT +#define wglGetPixelFormatAttribivARB _glfw.wgl.GetPixelFormatAttribivARB +#define wglGetExtensionsStringEXT _glfw.wgl.GetExtensionsStringEXT +#define wglGetExtensionsStringARB _glfw.wgl.GetExtensionsStringARB +#define wglCreateContextAttribsARB _glfw.wgl.CreateContextAttribsARB + +// opengl32.dll function pointer typedefs +typedef HGLRC (WINAPI * PFN_wglCreateContext)(HDC); +typedef BOOL (WINAPI * PFN_wglDeleteContext)(HGLRC); +typedef PROC (WINAPI * PFN_wglGetProcAddress)(LPCSTR); +typedef HDC (WINAPI * PFN_wglGetCurrentDC)(void); +typedef HGLRC (WINAPI * PFN_wglGetCurrentContext)(void); +typedef BOOL (WINAPI * PFN_wglMakeCurrent)(HDC,HGLRC); +typedef BOOL (WINAPI * PFN_wglShareLists)(HGLRC,HGLRC); +#define wglCreateContext _glfw.wgl.CreateContext +#define wglDeleteContext _glfw.wgl.DeleteContext +#define wglGetProcAddress _glfw.wgl.GetProcAddress +#define wglGetCurrentDC _glfw.wgl.GetCurrentDC +#define wglGetCurrentContext _glfw.wgl.GetCurrentContext +#define wglMakeCurrent _glfw.wgl.MakeCurrent +#define wglShareLists _glfw.wgl.ShareLists + +typedef VkFlags VkWin32SurfaceCreateFlagsKHR; + +typedef struct VkWin32SurfaceCreateInfoKHR +{ + VkStructureType sType; + const void* pNext; + VkWin32SurfaceCreateFlagsKHR flags; + HINSTANCE hinstance; + HWND hwnd; +} VkWin32SurfaceCreateInfoKHR; + +typedef VkResult (APIENTRY *PFN_vkCreateWin32SurfaceKHR)(VkInstance,const VkWin32SurfaceCreateInfoKHR*,const VkAllocationCallbacks*,VkSurfaceKHR*); +typedef VkBool32 (APIENTRY *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice,uint32_t); + +#define GLFW_WIN32_WINDOW_STATE _GLFWwindowWin32 win32; +#define GLFW_WIN32_LIBRARY_WINDOW_STATE _GLFWlibraryWin32 win32; +#define GLFW_WIN32_MONITOR_STATE _GLFWmonitorWin32 win32; +#define GLFW_WIN32_CURSOR_STATE _GLFWcursorWin32 win32; + +#define GLFW_WGL_CONTEXT_STATE _GLFWcontextWGL wgl; +#define GLFW_WGL_LIBRARY_CONTEXT_STATE _GLFWlibraryWGL wgl; + + +// WGL-specific per-context data +// +typedef struct _GLFWcontextWGL +{ + HDC dc; + HGLRC handle; + int interval; +} _GLFWcontextWGL; + +// WGL-specific global data +// +typedef struct _GLFWlibraryWGL +{ + HINSTANCE instance; + PFN_wglCreateContext CreateContext; + PFN_wglDeleteContext DeleteContext; + PFN_wglGetProcAddress GetProcAddress; + PFN_wglGetCurrentDC GetCurrentDC; + PFN_wglGetCurrentContext GetCurrentContext; + PFN_wglMakeCurrent MakeCurrent; + PFN_wglShareLists ShareLists; + + PFNWGLSWAPINTERVALEXTPROC SwapIntervalEXT; + PFNWGLGETPIXELFORMATATTRIBIVARBPROC GetPixelFormatAttribivARB; + PFNWGLGETEXTENSIONSSTRINGEXTPROC GetExtensionsStringEXT; + PFNWGLGETEXTENSIONSSTRINGARBPROC GetExtensionsStringARB; + PFNWGLCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB; + GLFWbool EXT_swap_control; + GLFWbool EXT_colorspace; + GLFWbool ARB_multisample; + GLFWbool ARB_framebuffer_sRGB; + GLFWbool EXT_framebuffer_sRGB; + GLFWbool ARB_pixel_format; + GLFWbool ARB_create_context; + GLFWbool ARB_create_context_profile; + GLFWbool EXT_create_context_es2_profile; + GLFWbool ARB_create_context_robustness; + GLFWbool ARB_create_context_no_error; + GLFWbool ARB_context_flush_control; +} _GLFWlibraryWGL; + +// Win32-specific per-window data +// +typedef struct _GLFWwindowWin32 +{ + HWND handle; + HICON bigIcon; + HICON smallIcon; + + GLFWbool cursorTracked; + GLFWbool frameAction; + GLFWbool iconified; + GLFWbool maximized; + // Whether to enable framebuffer transparency on DWM + GLFWbool transparent; + GLFWbool scaleToMonitor; + GLFWbool keymenu; + + // Cached size used to filter out duplicate events + int width, height; + + // The last received cursor position, regardless of source + int lastCursorPosX, lastCursorPosY; + // The last received high surrogate when decoding pairs of UTF-16 messages + WCHAR highSurrogate; +} _GLFWwindowWin32; + +// Win32-specific global data +// +typedef struct _GLFWlibraryWin32 +{ + HINSTANCE instance; + HWND helperWindowHandle; + ATOM helperWindowClass; + ATOM mainWindowClass; + HDEVNOTIFY deviceNotificationHandle; + int acquiredMonitorCount; + char* clipboardString; + short int keycodes[512]; + short int scancodes[GLFW_KEY_LAST + 1]; + char keynames[GLFW_KEY_LAST + 1][5]; + // Where to place the cursor when re-enabled + double restoreCursorPosX, restoreCursorPosY; + // The window whose disabled cursor mode is active + _GLFWwindow* disabledCursorWindow; + // The window the cursor is captured in + _GLFWwindow* capturedCursorWindow; + RAWINPUT* rawInput; + int rawInputSize; + UINT mouseTrailSize; + + struct { + HINSTANCE instance; + PFN_DirectInput8Create Create; + IDirectInput8W* api; + } dinput8; + + struct { + HINSTANCE instance; + PFN_XInputGetCapabilities GetCapabilities; + PFN_XInputGetState GetState; + } xinput; + + struct { + HINSTANCE instance; + PFN_SetProcessDPIAware SetProcessDPIAware_; + PFN_ChangeWindowMessageFilterEx ChangeWindowMessageFilterEx_; + PFN_EnableNonClientDpiScaling EnableNonClientDpiScaling_; + PFN_SetProcessDpiAwarenessContext SetProcessDpiAwarenessContext_; + PFN_GetDpiForWindow GetDpiForWindow_; + PFN_AdjustWindowRectExForDpi AdjustWindowRectExForDpi_; + PFN_GetSystemMetricsForDpi GetSystemMetricsForDpi_; + } user32; + + struct { + HINSTANCE instance; + PFN_DwmIsCompositionEnabled IsCompositionEnabled; + PFN_DwmFlush Flush; + PFN_DwmEnableBlurBehindWindow EnableBlurBehindWindow; + PFN_DwmGetColorizationColor GetColorizationColor; + } dwmapi; + + struct { + HINSTANCE instance; + PFN_SetProcessDpiAwareness SetProcessDpiAwareness_; + PFN_GetDpiForMonitor GetDpiForMonitor_; + } shcore; + + struct { + HINSTANCE instance; + PFN_RtlVerifyVersionInfo RtlVerifyVersionInfo_; + } ntdll; +} _GLFWlibraryWin32; + +// Win32-specific per-monitor data +// +typedef struct _GLFWmonitorWin32 +{ + HMONITOR handle; + // This size matches the static size of DISPLAY_DEVICE.DeviceName + WCHAR adapterName[32]; + WCHAR displayName[32]; + char publicAdapterName[32]; + char publicDisplayName[32]; + GLFWbool modesPruned; + GLFWbool modeChanged; +} _GLFWmonitorWin32; + +// Win32-specific per-cursor data +// +typedef struct _GLFWcursorWin32 +{ + HCURSOR handle; +} _GLFWcursorWin32; + + +GLFWbool _glfwConnectWin32(int platformID, _GLFWplatform* platform); +int _glfwInitWin32(void); +void _glfwTerminateWin32(void); + +WCHAR* _glfwCreateWideStringFromUTF8Win32(const char* source); +char* _glfwCreateUTF8FromWideStringWin32(const WCHAR* source); +BOOL _glfwIsWindowsVersionOrGreaterWin32(WORD major, WORD minor, WORD sp); +BOOL _glfwIsWindows10BuildOrGreaterWin32(WORD build); +void _glfwInputErrorWin32(int error, const char* description); +void _glfwUpdateKeyNamesWin32(void); + +void _glfwPollMonitorsWin32(void); +void _glfwSetVideoModeWin32(_GLFWmonitor* monitor, const GLFWvidmode* desired); +void _glfwRestoreVideoModeWin32(_GLFWmonitor* monitor); +void _glfwGetHMONITORContentScaleWin32(HMONITOR handle, float* xscale, float* yscale); + +GLFWbool _glfwCreateWindowWin32(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig); +void _glfwDestroyWindowWin32(_GLFWwindow* window); +void _glfwSetWindowTitleWin32(_GLFWwindow* window, const char* title); +void _glfwSetWindowIconWin32(_GLFWwindow* window, int count, const GLFWimage* images); +void _glfwGetWindowPosWin32(_GLFWwindow* window, int* xpos, int* ypos); +void _glfwSetWindowPosWin32(_GLFWwindow* window, int xpos, int ypos); +void _glfwGetWindowSizeWin32(_GLFWwindow* window, int* width, int* height); +void _glfwSetWindowSizeWin32(_GLFWwindow* window, int width, int height); +void _glfwSetWindowSizeLimitsWin32(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); +void _glfwSetWindowAspectRatioWin32(_GLFWwindow* window, int numer, int denom); +void _glfwGetFramebufferSizeWin32(_GLFWwindow* window, int* width, int* height); +void _glfwGetWindowFrameSizeWin32(_GLFWwindow* window, int* left, int* top, int* right, int* bottom); +void _glfwGetWindowContentScaleWin32(_GLFWwindow* window, float* xscale, float* yscale); +void _glfwIconifyWindowWin32(_GLFWwindow* window); +void _glfwRestoreWindowWin32(_GLFWwindow* window); +void _glfwMaximizeWindowWin32(_GLFWwindow* window); +void _glfwShowWindowWin32(_GLFWwindow* window); +void _glfwHideWindowWin32(_GLFWwindow* window); +void _glfwRequestWindowAttentionWin32(_GLFWwindow* window); +void _glfwFocusWindowWin32(_GLFWwindow* window); +void _glfwSetWindowMonitorWin32(_GLFWwindow* window, _GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); +GLFWbool _glfwWindowFocusedWin32(_GLFWwindow* window); +GLFWbool _glfwWindowIconifiedWin32(_GLFWwindow* window); +GLFWbool _glfwWindowVisibleWin32(_GLFWwindow* window); +GLFWbool _glfwWindowMaximizedWin32(_GLFWwindow* window); +GLFWbool _glfwWindowHoveredWin32(_GLFWwindow* window); +GLFWbool _glfwFramebufferTransparentWin32(_GLFWwindow* window); +void _glfwSetWindowResizableWin32(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowDecoratedWin32(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowFloatingWin32(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowMousePassthroughWin32(_GLFWwindow* window, GLFWbool enabled); +float _glfwGetWindowOpacityWin32(_GLFWwindow* window); +void _glfwSetWindowOpacityWin32(_GLFWwindow* window, float opacity); + +void _glfwSetRawMouseMotionWin32(_GLFWwindow *window, GLFWbool enabled); +GLFWbool _glfwRawMouseMotionSupportedWin32(void); + +void _glfwPollEventsWin32(void); +void _glfwWaitEventsWin32(void); +void _glfwWaitEventsTimeoutWin32(double timeout); +void _glfwPostEmptyEventWin32(void); + +void _glfwGetCursorPosWin32(_GLFWwindow* window, double* xpos, double* ypos); +void _glfwSetCursorPosWin32(_GLFWwindow* window, double xpos, double ypos); +void _glfwSetCursorModeWin32(_GLFWwindow* window, int mode); +const char* _glfwGetScancodeNameWin32(int scancode); +int _glfwGetKeyScancodeWin32(int key); +GLFWbool _glfwCreateCursorWin32(_GLFWcursor* cursor, const GLFWimage* image, int xhot, int yhot); +GLFWbool _glfwCreateStandardCursorWin32(_GLFWcursor* cursor, int shape); +void _glfwDestroyCursorWin32(_GLFWcursor* cursor); +void _glfwSetCursorWin32(_GLFWwindow* window, _GLFWcursor* cursor); +void _glfwSetClipboardStringWin32(const char* string); +const char* _glfwGetClipboardStringWin32(void); + +EGLenum _glfwGetEGLPlatformWin32(EGLint** attribs); +EGLNativeDisplayType _glfwGetEGLNativeDisplayWin32(void); +EGLNativeWindowType _glfwGetEGLNativeWindowWin32(_GLFWwindow* window); + +void _glfwGetRequiredInstanceExtensionsWin32(char** extensions); +GLFWbool _glfwGetPhysicalDevicePresentationSupportWin32(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); +VkResult _glfwCreateWindowSurfaceWin32(VkInstance instance, _GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +void _glfwFreeMonitorWin32(_GLFWmonitor* monitor); +void _glfwGetMonitorPosWin32(_GLFWmonitor* monitor, int* xpos, int* ypos); +void _glfwGetMonitorContentScaleWin32(_GLFWmonitor* monitor, float* xscale, float* yscale); +void _glfwGetMonitorWorkareaWin32(_GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); +GLFWvidmode* _glfwGetVideoModesWin32(_GLFWmonitor* monitor, int* count); +void _glfwGetVideoModeWin32(_GLFWmonitor* monitor, GLFWvidmode* mode); +GLFWbool _glfwGetGammaRampWin32(_GLFWmonitor* monitor, GLFWgammaramp* ramp); +void _glfwSetGammaRampWin32(_GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +GLFWbool _glfwInitJoysticksWin32(void); +void _glfwTerminateJoysticksWin32(void); +GLFWbool _glfwPollJoystickWin32(_GLFWjoystick* js, int mode); +const char* _glfwGetMappingNameWin32(void); +void _glfwUpdateGamepadGUIDWin32(char* guid); + +GLFWbool _glfwInitWGL(void); +void _glfwTerminateWGL(void); +GLFWbool _glfwCreateContextWGL(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig); + diff --git a/lib/glfw/src/win32_thread.c b/lib/glfw/src/win32_thread.c new file mode 100644 index 0000000..db99791 --- /dev/null +++ b/lib/glfw/src/win32_thread.c @@ -0,0 +1,102 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#if defined(GLFW_BUILD_WIN32_THREAD) + +#include + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwPlatformCreateTls(_GLFWtls* tls) +{ + assert(tls->win32.allocated == GLFW_FALSE); + + tls->win32.index = TlsAlloc(); + if (tls->win32.index == TLS_OUT_OF_INDEXES) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Failed to allocate TLS index"); + return GLFW_FALSE; + } + + tls->win32.allocated = GLFW_TRUE; + return GLFW_TRUE; +} + +void _glfwPlatformDestroyTls(_GLFWtls* tls) +{ + if (tls->win32.allocated) + TlsFree(tls->win32.index); + memset(tls, 0, sizeof(_GLFWtls)); +} + +void* _glfwPlatformGetTls(_GLFWtls* tls) +{ + assert(tls->win32.allocated == GLFW_TRUE); + return TlsGetValue(tls->win32.index); +} + +void _glfwPlatformSetTls(_GLFWtls* tls, void* value) +{ + assert(tls->win32.allocated == GLFW_TRUE); + TlsSetValue(tls->win32.index, value); +} + +GLFWbool _glfwPlatformCreateMutex(_GLFWmutex* mutex) +{ + assert(mutex->win32.allocated == GLFW_FALSE); + InitializeCriticalSection(&mutex->win32.section); + return mutex->win32.allocated = GLFW_TRUE; +} + +void _glfwPlatformDestroyMutex(_GLFWmutex* mutex) +{ + if (mutex->win32.allocated) + DeleteCriticalSection(&mutex->win32.section); + memset(mutex, 0, sizeof(_GLFWmutex)); +} + +void _glfwPlatformLockMutex(_GLFWmutex* mutex) +{ + assert(mutex->win32.allocated == GLFW_TRUE); + EnterCriticalSection(&mutex->win32.section); +} + +void _glfwPlatformUnlockMutex(_GLFWmutex* mutex) +{ + assert(mutex->win32.allocated == GLFW_TRUE); + LeaveCriticalSection(&mutex->win32.section); +} + +#endif // GLFW_BUILD_WIN32_THREAD + diff --git a/lib/glfw/src/win32_thread.h b/lib/glfw/src/win32_thread.h new file mode 100644 index 0000000..4b5a696 --- /dev/null +++ b/lib/glfw/src/win32_thread.h @@ -0,0 +1,48 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include + +#define GLFW_WIN32_TLS_STATE _GLFWtlsWin32 win32; +#define GLFW_WIN32_MUTEX_STATE _GLFWmutexWin32 win32; + +// Win32-specific thread local storage data +// +typedef struct _GLFWtlsWin32 +{ + GLFWbool allocated; + DWORD index; +} _GLFWtlsWin32; + +// Win32-specific mutex data +// +typedef struct _GLFWmutexWin32 +{ + GLFWbool allocated; + CRITICAL_SECTION section; +} _GLFWmutexWin32; + diff --git a/lib/glfw/src/win32_time.c b/lib/glfw/src/win32_time.c new file mode 100644 index 0000000..fcfe200 --- /dev/null +++ b/lib/glfw/src/win32_time.c @@ -0,0 +1,56 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#if defined(GLFW_BUILD_WIN32_TIMER) + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwPlatformInitTimer(void) +{ + QueryPerformanceFrequency((LARGE_INTEGER*) &_glfw.timer.win32.frequency); +} + +uint64_t _glfwPlatformGetTimerValue(void) +{ + uint64_t value; + QueryPerformanceCounter((LARGE_INTEGER*) &value); + return value; +} + +uint64_t _glfwPlatformGetTimerFrequency(void) +{ + return _glfw.timer.win32.frequency; +} + +#endif // GLFW_BUILD_WIN32_TIMER + diff --git a/lib/glfw/src/win32_time.h b/lib/glfw/src/win32_time.h new file mode 100644 index 0000000..da5afa4 --- /dev/null +++ b/lib/glfw/src/win32_time.h @@ -0,0 +1,38 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include + +#define GLFW_WIN32_LIBRARY_TIMER_STATE _GLFWtimerWin32 win32; + +// Win32-specific global timer data +// +typedef struct _GLFWtimerWin32 +{ + uint64_t frequency; +} _GLFWtimerWin32; + diff --git a/lib/glfw/src/win32_window.c b/lib/glfw/src/win32_window.c new file mode 100644 index 0000000..676640b --- /dev/null +++ b/lib/glfw/src/win32_window.c @@ -0,0 +1,2504 @@ +//======================================================================== +// GLFW 3.4 Win32 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_WIN32) + +#include +#include +#include +#include +#include + +// Returns the window style for the specified window +// +static DWORD getWindowStyle(const _GLFWwindow* window) +{ + DWORD style = WS_CLIPSIBLINGS | WS_CLIPCHILDREN; + + if (window->monitor) + style |= WS_POPUP; + else + { + style |= WS_SYSMENU | WS_MINIMIZEBOX; + + if (window->decorated) + { + style |= WS_CAPTION; + + if (window->resizable) + style |= WS_MAXIMIZEBOX | WS_THICKFRAME; + } + else + style |= WS_POPUP; + } + + return style; +} + +// Returns the extended window style for the specified window +// +static DWORD getWindowExStyle(const _GLFWwindow* window) +{ + DWORD style = WS_EX_APPWINDOW; + + if (window->monitor || window->floating) + style |= WS_EX_TOPMOST; + + return style; +} + +// Returns the image whose area most closely matches the desired one +// +static const GLFWimage* chooseImage(int count, const GLFWimage* images, + int width, int height) +{ + int i, leastDiff = INT_MAX; + const GLFWimage* closest = NULL; + + for (i = 0; i < count; i++) + { + const int currDiff = abs(images[i].width * images[i].height - + width * height); + if (currDiff < leastDiff) + { + closest = images + i; + leastDiff = currDiff; + } + } + + return closest; +} + +// Creates an RGBA icon or cursor +// +static HICON createIcon(const GLFWimage* image, int xhot, int yhot, GLFWbool icon) +{ + int i; + HDC dc; + HICON handle; + HBITMAP color, mask; + BITMAPV5HEADER bi; + ICONINFO ii; + unsigned char* target = NULL; + unsigned char* source = image->pixels; + + ZeroMemory(&bi, sizeof(bi)); + bi.bV5Size = sizeof(bi); + bi.bV5Width = image->width; + bi.bV5Height = -image->height; + bi.bV5Planes = 1; + bi.bV5BitCount = 32; + bi.bV5Compression = BI_BITFIELDS; + bi.bV5RedMask = 0x00ff0000; + bi.bV5GreenMask = 0x0000ff00; + bi.bV5BlueMask = 0x000000ff; + bi.bV5AlphaMask = 0xff000000; + + dc = GetDC(NULL); + color = CreateDIBSection(dc, + (BITMAPINFO*) &bi, + DIB_RGB_COLORS, + (void**) &target, + NULL, + (DWORD) 0); + ReleaseDC(NULL, dc); + + if (!color) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to create RGBA bitmap"); + return NULL; + } + + mask = CreateBitmap(image->width, image->height, 1, 1, NULL); + if (!mask) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to create mask bitmap"); + DeleteObject(color); + return NULL; + } + + for (i = 0; i < image->width * image->height; i++) + { + target[0] = source[2]; + target[1] = source[1]; + target[2] = source[0]; + target[3] = source[3]; + target += 4; + source += 4; + } + + ZeroMemory(&ii, sizeof(ii)); + ii.fIcon = icon; + ii.xHotspot = xhot; + ii.yHotspot = yhot; + ii.hbmMask = mask; + ii.hbmColor = color; + + handle = CreateIconIndirect(&ii); + + DeleteObject(color); + DeleteObject(mask); + + if (!handle) + { + if (icon) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to create icon"); + } + else + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to create cursor"); + } + } + + return handle; +} + +// Enforce the content area aspect ratio based on which edge is being dragged +// +static void applyAspectRatio(_GLFWwindow* window, int edge, RECT* area) +{ + RECT frame = {0}; + const float ratio = (float) window->numer / (float) window->denom; + const DWORD style = getWindowStyle(window); + const DWORD exStyle = getWindowExStyle(window); + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&frame, style, FALSE, exStyle, + GetDpiForWindow(window->win32.handle)); + } + else + AdjustWindowRectEx(&frame, style, FALSE, exStyle); + + if (edge == WMSZ_LEFT || edge == WMSZ_BOTTOMLEFT || + edge == WMSZ_RIGHT || edge == WMSZ_BOTTOMRIGHT) + { + area->bottom = area->top + (frame.bottom - frame.top) + + (int) (((area->right - area->left) - (frame.right - frame.left)) / ratio); + } + else if (edge == WMSZ_TOPLEFT || edge == WMSZ_TOPRIGHT) + { + area->top = area->bottom - (frame.bottom - frame.top) - + (int) (((area->right - area->left) - (frame.right - frame.left)) / ratio); + } + else if (edge == WMSZ_TOP || edge == WMSZ_BOTTOM) + { + area->right = area->left + (frame.right - frame.left) + + (int) (((area->bottom - area->top) - (frame.bottom - frame.top)) * ratio); + } +} + +// Updates the cursor image according to its cursor mode +// +static void updateCursorImage(_GLFWwindow* window) +{ + if (window->cursorMode == GLFW_CURSOR_NORMAL || + window->cursorMode == GLFW_CURSOR_CAPTURED) + { + if (window->cursor) + SetCursor(window->cursor->win32.handle); + else + SetCursor(LoadCursorW(NULL, IDC_ARROW)); + } + else + SetCursor(NULL); +} + +// Sets the cursor clip rect to the window content area +// +static void captureCursor(_GLFWwindow* window) +{ + RECT clipRect; + GetClientRect(window->win32.handle, &clipRect); + ClientToScreen(window->win32.handle, (POINT*) &clipRect.left); + ClientToScreen(window->win32.handle, (POINT*) &clipRect.right); + ClipCursor(&clipRect); + _glfw.win32.capturedCursorWindow = window; +} + +// Disabled clip cursor +// +static void releaseCursor(void) +{ + ClipCursor(NULL); + _glfw.win32.capturedCursorWindow = NULL; +} + +// Enables WM_INPUT messages for the mouse for the specified window +// +static void enableRawMouseMotion(_GLFWwindow* window) +{ + const RAWINPUTDEVICE rid = { 0x01, 0x02, 0, window->win32.handle }; + + if (!RegisterRawInputDevices(&rid, 1, sizeof(rid))) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to register raw input device"); + } +} + +// Disables WM_INPUT messages for the mouse +// +static void disableRawMouseMotion(_GLFWwindow* window) +{ + const RAWINPUTDEVICE rid = { 0x01, 0x02, RIDEV_REMOVE, NULL }; + + if (!RegisterRawInputDevices(&rid, 1, sizeof(rid))) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to remove raw input device"); + } +} + +// Apply disabled cursor mode to a focused window +// +static void disableCursor(_GLFWwindow* window) +{ + _glfw.win32.disabledCursorWindow = window; + _glfwGetCursorPosWin32(window, + &_glfw.win32.restoreCursorPosX, + &_glfw.win32.restoreCursorPosY); + updateCursorImage(window); + _glfwCenterCursorInContentArea(window); + captureCursor(window); + + if (window->rawMouseMotion) + enableRawMouseMotion(window); +} + +// Exit disabled cursor mode for the specified window +// +static void enableCursor(_GLFWwindow* window) +{ + if (window->rawMouseMotion) + disableRawMouseMotion(window); + + _glfw.win32.disabledCursorWindow = NULL; + releaseCursor(); + _glfwSetCursorPosWin32(window, + _glfw.win32.restoreCursorPosX, + _glfw.win32.restoreCursorPosY); + updateCursorImage(window); +} + +// Returns whether the cursor is in the content area of the specified window +// +static GLFWbool cursorInContentArea(_GLFWwindow* window) +{ + RECT area; + POINT pos; + + if (!GetCursorPos(&pos)) + return GLFW_FALSE; + + if (WindowFromPoint(pos) != window->win32.handle) + return GLFW_FALSE; + + GetClientRect(window->win32.handle, &area); + ClientToScreen(window->win32.handle, (POINT*) &area.left); + ClientToScreen(window->win32.handle, (POINT*) &area.right); + + return PtInRect(&area, pos); +} + +// Update native window styles to match attributes +// +static void updateWindowStyles(const _GLFWwindow* window) +{ + RECT rect; + DWORD style = GetWindowLongW(window->win32.handle, GWL_STYLE); + style &= ~(WS_OVERLAPPEDWINDOW | WS_POPUP); + style |= getWindowStyle(window); + + GetClientRect(window->win32.handle, &rect); + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&rect, style, FALSE, + getWindowExStyle(window), + GetDpiForWindow(window->win32.handle)); + } + else + AdjustWindowRectEx(&rect, style, FALSE, getWindowExStyle(window)); + + ClientToScreen(window->win32.handle, (POINT*) &rect.left); + ClientToScreen(window->win32.handle, (POINT*) &rect.right); + SetWindowLongW(window->win32.handle, GWL_STYLE, style); + SetWindowPos(window->win32.handle, HWND_TOP, + rect.left, rect.top, + rect.right - rect.left, rect.bottom - rect.top, + SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOZORDER); +} + +// Update window framebuffer transparency +// +static void updateFramebufferTransparency(const _GLFWwindow* window) +{ + BOOL composition, opaque; + DWORD color; + + if (!IsWindowsVistaOrGreater()) + return; + + if (FAILED(DwmIsCompositionEnabled(&composition)) || !composition) + return; + + if (IsWindows8OrGreater() || + (SUCCEEDED(DwmGetColorizationColor(&color, &opaque)) && !opaque)) + { + HRGN region = CreateRectRgn(0, 0, -1, -1); + DWM_BLURBEHIND bb = {0}; + bb.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION; + bb.hRgnBlur = region; + bb.fEnable = TRUE; + + DwmEnableBlurBehindWindow(window->win32.handle, &bb); + DeleteObject(region); + } + else + { + // HACK: Disable framebuffer transparency on Windows 7 when the + // colorization color is opaque, because otherwise the window + // contents is blended additively with the previous frame instead + // of replacing it + DWM_BLURBEHIND bb = {0}; + bb.dwFlags = DWM_BB_ENABLE; + DwmEnableBlurBehindWindow(window->win32.handle, &bb); + } +} + +// Retrieves and translates modifier keys +// +static int getKeyMods(void) +{ + int mods = 0; + + if (GetKeyState(VK_SHIFT) & 0x8000) + mods |= GLFW_MOD_SHIFT; + if (GetKeyState(VK_CONTROL) & 0x8000) + mods |= GLFW_MOD_CONTROL; + if (GetKeyState(VK_MENU) & 0x8000) + mods |= GLFW_MOD_ALT; + if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x8000) + mods |= GLFW_MOD_SUPER; + if (GetKeyState(VK_CAPITAL) & 1) + mods |= GLFW_MOD_CAPS_LOCK; + if (GetKeyState(VK_NUMLOCK) & 1) + mods |= GLFW_MOD_NUM_LOCK; + + return mods; +} + +static void fitToMonitor(_GLFWwindow* window) +{ + MONITORINFO mi = { sizeof(mi) }; + GetMonitorInfoW(window->monitor->win32.handle, &mi); + SetWindowPos(window->win32.handle, HWND_TOPMOST, + mi.rcMonitor.left, + mi.rcMonitor.top, + mi.rcMonitor.right - mi.rcMonitor.left, + mi.rcMonitor.bottom - mi.rcMonitor.top, + SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS); +} + +// Make the specified window and its video mode active on its monitor +// +static void acquireMonitor(_GLFWwindow* window) +{ + if (!_glfw.win32.acquiredMonitorCount) + { + SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED); + + // HACK: When mouse trails are enabled the cursor becomes invisible when + // the OpenGL ICD switches to page flipping + SystemParametersInfoW(SPI_GETMOUSETRAILS, 0, &_glfw.win32.mouseTrailSize, 0); + SystemParametersInfoW(SPI_SETMOUSETRAILS, 0, 0, 0); + } + + if (!window->monitor->window) + _glfw.win32.acquiredMonitorCount++; + + _glfwSetVideoModeWin32(window->monitor, &window->videoMode); + _glfwInputMonitorWindow(window->monitor, window); +} + +// Remove the window and restore the original video mode +// +static void releaseMonitor(_GLFWwindow* window) +{ + if (window->monitor->window != window) + return; + + _glfw.win32.acquiredMonitorCount--; + if (!_glfw.win32.acquiredMonitorCount) + { + SetThreadExecutionState(ES_CONTINUOUS); + + // HACK: Restore mouse trail length saved in acquireMonitor + SystemParametersInfoW(SPI_SETMOUSETRAILS, _glfw.win32.mouseTrailSize, 0, 0); + } + + _glfwInputMonitorWindow(window->monitor, NULL); + _glfwRestoreVideoModeWin32(window->monitor); +} + +// Manually maximize the window, for when SW_MAXIMIZE cannot be used +// +static void maximizeWindowManually(_GLFWwindow* window) +{ + RECT rect; + DWORD style; + MONITORINFO mi = { sizeof(mi) }; + + GetMonitorInfoW(MonitorFromWindow(window->win32.handle, + MONITOR_DEFAULTTONEAREST), &mi); + + rect = mi.rcWork; + + if (window->maxwidth != GLFW_DONT_CARE && window->maxheight != GLFW_DONT_CARE) + { + rect.right = _glfw_min(rect.right, rect.left + window->maxwidth); + rect.bottom = _glfw_min(rect.bottom, rect.top + window->maxheight); + } + + style = GetWindowLongW(window->win32.handle, GWL_STYLE); + style |= WS_MAXIMIZE; + SetWindowLongW(window->win32.handle, GWL_STYLE, style); + + if (window->decorated) + { + const DWORD exStyle = GetWindowLongW(window->win32.handle, GWL_EXSTYLE); + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + const UINT dpi = GetDpiForWindow(window->win32.handle); + AdjustWindowRectExForDpi(&rect, style, FALSE, exStyle, dpi); + OffsetRect(&rect, 0, GetSystemMetricsForDpi(SM_CYCAPTION, dpi)); + } + else + { + AdjustWindowRectEx(&rect, style, FALSE, exStyle); + OffsetRect(&rect, 0, GetSystemMetrics(SM_CYCAPTION)); + } + + rect.bottom = _glfw_min(rect.bottom, mi.rcWork.bottom); + } + + SetWindowPos(window->win32.handle, HWND_TOP, + rect.left, + rect.top, + rect.right - rect.left, + rect.bottom - rect.top, + SWP_NOACTIVATE | SWP_NOZORDER | SWP_FRAMECHANGED); +} + +// Window procedure for user-created windows +// +static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + _GLFWwindow* window = GetPropW(hWnd, L"GLFW"); + if (!window) + { + if (uMsg == WM_NCCREATE) + { + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + const CREATESTRUCTW* cs = (const CREATESTRUCTW*) lParam; + const _GLFWwndconfig* wndconfig = cs->lpCreateParams; + + // On per-monitor DPI aware V1 systems, only enable + // non-client scaling for windows that scale the client area + // We need WM_GETDPISCALEDSIZE from V2 to keep the client + // area static when the non-client area is scaled + if (wndconfig && wndconfig->scaleToMonitor) + EnableNonClientDpiScaling(hWnd); + } + } + + return DefWindowProcW(hWnd, uMsg, wParam, lParam); + } + + switch (uMsg) + { + case WM_MOUSEACTIVATE: + { + // HACK: Postpone cursor disabling when the window was activated by + // clicking a caption button + if (HIWORD(lParam) == WM_LBUTTONDOWN) + { + if (LOWORD(lParam) != HTCLIENT) + window->win32.frameAction = GLFW_TRUE; + } + + break; + } + + case WM_CAPTURECHANGED: + { + // HACK: Disable the cursor once the caption button action has been + // completed or cancelled + if (lParam == 0 && window->win32.frameAction) + { + if (window->cursorMode == GLFW_CURSOR_DISABLED) + disableCursor(window); + else if (window->cursorMode == GLFW_CURSOR_CAPTURED) + captureCursor(window); + + window->win32.frameAction = GLFW_FALSE; + } + + break; + } + + case WM_SETFOCUS: + { + _glfwInputWindowFocus(window, GLFW_TRUE); + + // HACK: Do not disable cursor while the user is interacting with + // a caption button + if (window->win32.frameAction) + break; + + if (window->cursorMode == GLFW_CURSOR_DISABLED) + disableCursor(window); + else if (window->cursorMode == GLFW_CURSOR_CAPTURED) + captureCursor(window); + + return 0; + } + + case WM_KILLFOCUS: + { + if (window->cursorMode == GLFW_CURSOR_DISABLED) + enableCursor(window); + else if (window->cursorMode == GLFW_CURSOR_CAPTURED) + releaseCursor(); + + if (window->monitor && window->autoIconify) + _glfwIconifyWindowWin32(window); + + _glfwInputWindowFocus(window, GLFW_FALSE); + return 0; + } + + case WM_SYSCOMMAND: + { + switch (wParam & 0xfff0) + { + case SC_SCREENSAVE: + case SC_MONITORPOWER: + { + if (window->monitor) + { + // We are running in full screen mode, so disallow + // screen saver and screen blanking + return 0; + } + else + break; + } + + // User trying to access application menu using ALT? + case SC_KEYMENU: + { + if (!window->win32.keymenu) + return 0; + + break; + } + } + break; + } + + case WM_CLOSE: + { + _glfwInputWindowCloseRequest(window); + return 0; + } + + case WM_INPUTLANGCHANGE: + { + _glfwUpdateKeyNamesWin32(); + break; + } + + case WM_CHAR: + case WM_SYSCHAR: + { + if (wParam >= 0xd800 && wParam <= 0xdbff) + window->win32.highSurrogate = (WCHAR) wParam; + else + { + uint32_t codepoint = 0; + + if (wParam >= 0xdc00 && wParam <= 0xdfff) + { + if (window->win32.highSurrogate) + { + codepoint += (window->win32.highSurrogate - 0xd800) << 10; + codepoint += (WCHAR) wParam - 0xdc00; + codepoint += 0x10000; + } + } + else + codepoint = (WCHAR) wParam; + + window->win32.highSurrogate = 0; + _glfwInputChar(window, codepoint, getKeyMods(), uMsg != WM_SYSCHAR); + } + + if (uMsg == WM_SYSCHAR && window->win32.keymenu) + break; + + return 0; + } + + case WM_UNICHAR: + { + if (wParam == UNICODE_NOCHAR) + { + // WM_UNICHAR is not sent by Windows, but is sent by some + // third-party input method engine + // Returning TRUE here announces support for this message + return TRUE; + } + + _glfwInputChar(window, (uint32_t) wParam, getKeyMods(), GLFW_TRUE); + return 0; + } + + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + case WM_KEYUP: + case WM_SYSKEYUP: + { + int key, scancode; + const int action = (HIWORD(lParam) & KF_UP) ? GLFW_RELEASE : GLFW_PRESS; + const int mods = getKeyMods(); + + scancode = (HIWORD(lParam) & (KF_EXTENDED | 0xff)); + if (!scancode) + { + // NOTE: Some synthetic key messages have a scancode of zero + // HACK: Map the virtual key back to a usable scancode + scancode = MapVirtualKeyW((UINT) wParam, MAPVK_VK_TO_VSC); + } + + // HACK: Alt+PrtSc has a different scancode than just PrtSc + if (scancode == 0x54) + scancode = 0x137; + + // HACK: Ctrl+Pause has a different scancode than just Pause + if (scancode == 0x146) + scancode = 0x45; + + // HACK: CJK IME sets the extended bit for right Shift + if (scancode == 0x136) + scancode = 0x36; + + key = _glfw.win32.keycodes[scancode]; + + // The Ctrl keys require special handling + if (wParam == VK_CONTROL) + { + if (HIWORD(lParam) & KF_EXTENDED) + { + // Right side keys have the extended key bit set + key = GLFW_KEY_RIGHT_CONTROL; + } + else + { + // NOTE: Alt Gr sends Left Ctrl followed by Right Alt + // HACK: We only want one event for Alt Gr, so if we detect + // this sequence we discard this Left Ctrl message now + // and later report Right Alt normally + MSG next; + const DWORD time = GetMessageTime(); + + if (PeekMessageW(&next, NULL, 0, 0, PM_NOREMOVE)) + { + if (next.message == WM_KEYDOWN || + next.message == WM_SYSKEYDOWN || + next.message == WM_KEYUP || + next.message == WM_SYSKEYUP) + { + if (next.wParam == VK_MENU && + (HIWORD(next.lParam) & KF_EXTENDED) && + next.time == time) + { + // Next message is Right Alt down so discard this + break; + } + } + } + + // This is a regular Left Ctrl message + key = GLFW_KEY_LEFT_CONTROL; + } + } + else if (wParam == VK_PROCESSKEY) + { + // IME notifies that keys have been filtered by setting the + // virtual key-code to VK_PROCESSKEY + break; + } + + if (action == GLFW_RELEASE && wParam == VK_SHIFT) + { + // HACK: Release both Shift keys on Shift up event, as when both + // are pressed the first release does not emit any event + // NOTE: The other half of this is in _glfwPollEventsWin32 + _glfwInputKey(window, GLFW_KEY_LEFT_SHIFT, scancode, action, mods); + _glfwInputKey(window, GLFW_KEY_RIGHT_SHIFT, scancode, action, mods); + } + else if (wParam == VK_SNAPSHOT) + { + // HACK: Key down is not reported for the Print Screen key + _glfwInputKey(window, key, scancode, GLFW_PRESS, mods); + _glfwInputKey(window, key, scancode, GLFW_RELEASE, mods); + } + else + _glfwInputKey(window, key, scancode, action, mods); + + break; + } + + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_XBUTTONDOWN: + case WM_LBUTTONUP: + case WM_RBUTTONUP: + case WM_MBUTTONUP: + case WM_XBUTTONUP: + { + int i, button, action; + + if (uMsg == WM_LBUTTONDOWN || uMsg == WM_LBUTTONUP) + button = GLFW_MOUSE_BUTTON_LEFT; + else if (uMsg == WM_RBUTTONDOWN || uMsg == WM_RBUTTONUP) + button = GLFW_MOUSE_BUTTON_RIGHT; + else if (uMsg == WM_MBUTTONDOWN || uMsg == WM_MBUTTONUP) + button = GLFW_MOUSE_BUTTON_MIDDLE; + else if (GET_XBUTTON_WPARAM(wParam) == XBUTTON1) + button = GLFW_MOUSE_BUTTON_4; + else + button = GLFW_MOUSE_BUTTON_5; + + if (uMsg == WM_LBUTTONDOWN || uMsg == WM_RBUTTONDOWN || + uMsg == WM_MBUTTONDOWN || uMsg == WM_XBUTTONDOWN) + { + action = GLFW_PRESS; + } + else + action = GLFW_RELEASE; + + for (i = 0; i <= GLFW_MOUSE_BUTTON_LAST; i++) + { + if (window->mouseButtons[i] == GLFW_PRESS) + break; + } + + if (i > GLFW_MOUSE_BUTTON_LAST) + SetCapture(hWnd); + + _glfwInputMouseClick(window, button, action, getKeyMods()); + + for (i = 0; i <= GLFW_MOUSE_BUTTON_LAST; i++) + { + if (window->mouseButtons[i] == GLFW_PRESS) + break; + } + + if (i > GLFW_MOUSE_BUTTON_LAST) + ReleaseCapture(); + + if (uMsg == WM_XBUTTONDOWN || uMsg == WM_XBUTTONUP) + return TRUE; + + return 0; + } + + case WM_MOUSEMOVE: + { + const int x = GET_X_LPARAM(lParam); + const int y = GET_Y_LPARAM(lParam); + + if (!window->win32.cursorTracked) + { + TRACKMOUSEEVENT tme; + ZeroMemory(&tme, sizeof(tme)); + tme.cbSize = sizeof(tme); + tme.dwFlags = TME_LEAVE; + tme.hwndTrack = window->win32.handle; + TrackMouseEvent(&tme); + + window->win32.cursorTracked = GLFW_TRUE; + _glfwInputCursorEnter(window, GLFW_TRUE); + } + + if (window->cursorMode == GLFW_CURSOR_DISABLED) + { + const int dx = x - window->win32.lastCursorPosX; + const int dy = y - window->win32.lastCursorPosY; + + if (_glfw.win32.disabledCursorWindow != window) + break; + if (window->rawMouseMotion) + break; + + _glfwInputCursorPos(window, + window->virtualCursorPosX + dx, + window->virtualCursorPosY + dy); + } + else + _glfwInputCursorPos(window, x, y); + + window->win32.lastCursorPosX = x; + window->win32.lastCursorPosY = y; + + return 0; + } + + case WM_INPUT: + { + UINT size = 0; + HRAWINPUT ri = (HRAWINPUT) lParam; + RAWINPUT* data = NULL; + int dx, dy; + + if (_glfw.win32.disabledCursorWindow != window) + break; + if (!window->rawMouseMotion) + break; + + GetRawInputData(ri, RID_INPUT, NULL, &size, sizeof(RAWINPUTHEADER)); + if (size > (UINT) _glfw.win32.rawInputSize) + { + _glfw_free(_glfw.win32.rawInput); + _glfw.win32.rawInput = _glfw_calloc(size, 1); + _glfw.win32.rawInputSize = size; + } + + size = _glfw.win32.rawInputSize; + if (GetRawInputData(ri, RID_INPUT, + _glfw.win32.rawInput, &size, + sizeof(RAWINPUTHEADER)) == (UINT) -1) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to retrieve raw input data"); + break; + } + + data = _glfw.win32.rawInput; + if (data->data.mouse.usFlags & MOUSE_MOVE_ABSOLUTE) + { + dx = data->data.mouse.lLastX - window->win32.lastCursorPosX; + dy = data->data.mouse.lLastY - window->win32.lastCursorPosY; + } + else + { + dx = data->data.mouse.lLastX; + dy = data->data.mouse.lLastY; + } + + _glfwInputCursorPos(window, + window->virtualCursorPosX + dx, + window->virtualCursorPosY + dy); + + window->win32.lastCursorPosX += dx; + window->win32.lastCursorPosY += dy; + break; + } + + case WM_MOUSELEAVE: + { + window->win32.cursorTracked = GLFW_FALSE; + _glfwInputCursorEnter(window, GLFW_FALSE); + return 0; + } + + case WM_MOUSEWHEEL: + { + _glfwInputScroll(window, 0.0, (SHORT) HIWORD(wParam) / (double) WHEEL_DELTA); + return 0; + } + + case WM_MOUSEHWHEEL: + { + // This message is only sent on Windows Vista and later + // NOTE: The X-axis is inverted for consistency with macOS and X11 + _glfwInputScroll(window, -((SHORT) HIWORD(wParam) / (double) WHEEL_DELTA), 0.0); + return 0; + } + + case WM_ENTERSIZEMOVE: + case WM_ENTERMENULOOP: + { + if (window->win32.frameAction) + break; + + // HACK: Enable the cursor while the user is moving or + // resizing the window or using the window menu + if (window->cursorMode == GLFW_CURSOR_DISABLED) + enableCursor(window); + else if (window->cursorMode == GLFW_CURSOR_CAPTURED) + releaseCursor(); + + break; + } + + case WM_EXITSIZEMOVE: + case WM_EXITMENULOOP: + { + if (window->win32.frameAction) + break; + + // HACK: Disable the cursor once the user is done moving or + // resizing the window or using the menu + if (window->cursorMode == GLFW_CURSOR_DISABLED) + disableCursor(window); + else if (window->cursorMode == GLFW_CURSOR_CAPTURED) + captureCursor(window); + + break; + } + + case WM_SIZE: + { + const int width = LOWORD(lParam); + const int height = HIWORD(lParam); + const GLFWbool iconified = wParam == SIZE_MINIMIZED; + const GLFWbool maximized = wParam == SIZE_MAXIMIZED || + (window->win32.maximized && + wParam != SIZE_RESTORED); + + if (_glfw.win32.capturedCursorWindow == window) + captureCursor(window); + + if (window->win32.iconified != iconified) + _glfwInputWindowIconify(window, iconified); + + if (window->win32.maximized != maximized) + _glfwInputWindowMaximize(window, maximized); + + if (width != window->win32.width || height != window->win32.height) + { + window->win32.width = width; + window->win32.height = height; + + _glfwInputFramebufferSize(window, width, height); + _glfwInputWindowSize(window, width, height); + } + + if (window->monitor && window->win32.iconified != iconified) + { + if (iconified) + releaseMonitor(window); + else + { + acquireMonitor(window); + fitToMonitor(window); + } + } + + window->win32.iconified = iconified; + window->win32.maximized = maximized; + return 0; + } + + case WM_MOVE: + { + if (_glfw.win32.capturedCursorWindow == window) + captureCursor(window); + + // NOTE: This cannot use LOWORD/HIWORD recommended by MSDN, as + // those macros do not handle negative window positions correctly + _glfwInputWindowPos(window, + GET_X_LPARAM(lParam), + GET_Y_LPARAM(lParam)); + return 0; + } + + case WM_SIZING: + { + if (window->numer == GLFW_DONT_CARE || + window->denom == GLFW_DONT_CARE) + { + break; + } + + applyAspectRatio(window, (int) wParam, (RECT*) lParam); + return TRUE; + } + + case WM_GETMINMAXINFO: + { + RECT frame = {0}; + MINMAXINFO* mmi = (MINMAXINFO*) lParam; + const DWORD style = getWindowStyle(window); + const DWORD exStyle = getWindowExStyle(window); + + if (window->monitor) + break; + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&frame, style, FALSE, exStyle, + GetDpiForWindow(window->win32.handle)); + } + else + AdjustWindowRectEx(&frame, style, FALSE, exStyle); + + if (window->minwidth != GLFW_DONT_CARE && + window->minheight != GLFW_DONT_CARE) + { + mmi->ptMinTrackSize.x = window->minwidth + frame.right - frame.left; + mmi->ptMinTrackSize.y = window->minheight + frame.bottom - frame.top; + } + + if (window->maxwidth != GLFW_DONT_CARE && + window->maxheight != GLFW_DONT_CARE) + { + mmi->ptMaxTrackSize.x = window->maxwidth + frame.right - frame.left; + mmi->ptMaxTrackSize.y = window->maxheight + frame.bottom - frame.top; + } + + if (!window->decorated) + { + MONITORINFO mi; + const HMONITOR mh = MonitorFromWindow(window->win32.handle, + MONITOR_DEFAULTTONEAREST); + + ZeroMemory(&mi, sizeof(mi)); + mi.cbSize = sizeof(mi); + GetMonitorInfoW(mh, &mi); + + mmi->ptMaxPosition.x = mi.rcWork.left - mi.rcMonitor.left; + mmi->ptMaxPosition.y = mi.rcWork.top - mi.rcMonitor.top; + mmi->ptMaxSize.x = mi.rcWork.right - mi.rcWork.left; + mmi->ptMaxSize.y = mi.rcWork.bottom - mi.rcWork.top; + } + + return 0; + } + + case WM_PAINT: + { + _glfwInputWindowDamage(window); + break; + } + + case WM_ERASEBKGND: + { + return TRUE; + } + + case WM_NCACTIVATE: + case WM_NCPAINT: + { + // Prevent title bar from being drawn after restoring a minimized + // undecorated window + if (!window->decorated) + return TRUE; + + break; + } + + case WM_DWMCOMPOSITIONCHANGED: + case WM_DWMCOLORIZATIONCOLORCHANGED: + { + if (window->win32.transparent) + updateFramebufferTransparency(window); + return 0; + } + + case WM_GETDPISCALEDSIZE: + { + if (window->win32.scaleToMonitor) + break; + + // Adjust the window size to keep the content area size constant + if (_glfwIsWindows10Version1703OrGreaterWin32()) + { + RECT source = {0}, target = {0}; + SIZE* size = (SIZE*) lParam; + + AdjustWindowRectExForDpi(&source, getWindowStyle(window), + FALSE, getWindowExStyle(window), + GetDpiForWindow(window->win32.handle)); + AdjustWindowRectExForDpi(&target, getWindowStyle(window), + FALSE, getWindowExStyle(window), + LOWORD(wParam)); + + size->cx += (target.right - target.left) - + (source.right - source.left); + size->cy += (target.bottom - target.top) - + (source.bottom - source.top); + return TRUE; + } + + break; + } + + case WM_DPICHANGED: + { + const float xscale = HIWORD(wParam) / (float) USER_DEFAULT_SCREEN_DPI; + const float yscale = LOWORD(wParam) / (float) USER_DEFAULT_SCREEN_DPI; + + // Resize windowed mode windows that either permit rescaling or that + // need it to compensate for non-client area scaling + if (!window->monitor && + (window->win32.scaleToMonitor || + _glfwIsWindows10Version1703OrGreaterWin32())) + { + RECT* suggested = (RECT*) lParam; + SetWindowPos(window->win32.handle, HWND_TOP, + suggested->left, + suggested->top, + suggested->right - suggested->left, + suggested->bottom - suggested->top, + SWP_NOACTIVATE | SWP_NOZORDER); + } + + _glfwInputWindowContentScale(window, xscale, yscale); + break; + } + + case WM_SETCURSOR: + { + if (LOWORD(lParam) == HTCLIENT) + { + updateCursorImage(window); + return TRUE; + } + + break; + } + + case WM_DROPFILES: + { + HDROP drop = (HDROP) wParam; + POINT pt; + int i; + + const int count = DragQueryFileW(drop, 0xffffffff, NULL, 0); + char** paths = _glfw_calloc(count, sizeof(char*)); + + // Move the mouse to the position of the drop + DragQueryPoint(drop, &pt); + _glfwInputCursorPos(window, pt.x, pt.y); + + for (i = 0; i < count; i++) + { + const UINT length = DragQueryFileW(drop, i, NULL, 0); + WCHAR* buffer = _glfw_calloc((size_t) length + 1, sizeof(WCHAR)); + + DragQueryFileW(drop, i, buffer, length + 1); + paths[i] = _glfwCreateUTF8FromWideStringWin32(buffer); + + _glfw_free(buffer); + } + + _glfwInputDrop(window, count, (const char**) paths); + + for (i = 0; i < count; i++) + _glfw_free(paths[i]); + _glfw_free(paths); + + DragFinish(drop); + return 0; + } + } + + return DefWindowProcW(hWnd, uMsg, wParam, lParam); +} + +// Creates the GLFW window +// +static int createNativeWindow(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWfbconfig* fbconfig) +{ + int frameX, frameY, frameWidth, frameHeight; + WCHAR* wideTitle; + DWORD style = getWindowStyle(window); + DWORD exStyle = getWindowExStyle(window); + + if (!_glfw.win32.mainWindowClass) + { + WNDCLASSEXW wc = { sizeof(wc) }; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.lpfnWndProc = windowProc; + wc.hInstance = _glfw.win32.instance; + wc.hCursor = LoadCursorW(NULL, IDC_ARROW); +#if defined(_GLFW_WNDCLASSNAME) + wc.lpszClassName = _GLFW_WNDCLASSNAME; +#else + wc.lpszClassName = L"GLFW30"; +#endif + // Load user-provided icon if available + wc.hIcon = LoadImageW(GetModuleHandleW(NULL), + L"GLFW_ICON", IMAGE_ICON, + 0, 0, LR_DEFAULTSIZE | LR_SHARED); + if (!wc.hIcon) + { + // No user-provided icon found, load default icon + wc.hIcon = LoadImageW(NULL, + IDI_APPLICATION, IMAGE_ICON, + 0, 0, LR_DEFAULTSIZE | LR_SHARED); + } + + _glfw.win32.mainWindowClass = RegisterClassExW(&wc); + if (!_glfw.win32.mainWindowClass) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to register window class"); + return GLFW_FALSE; + } + } + + if (window->monitor) + { + MONITORINFO mi = { sizeof(mi) }; + GetMonitorInfoW(window->monitor->win32.handle, &mi); + + // NOTE: This window placement is temporary and approximate, as the + // correct position and size cannot be known until the monitor + // video mode has been picked in _glfwSetVideoModeWin32 + frameX = mi.rcMonitor.left; + frameY = mi.rcMonitor.top; + frameWidth = mi.rcMonitor.right - mi.rcMonitor.left; + frameHeight = mi.rcMonitor.bottom - mi.rcMonitor.top; + } + else + { + RECT rect = { 0, 0, wndconfig->width, wndconfig->height }; + + window->win32.maximized = wndconfig->maximized; + if (wndconfig->maximized) + style |= WS_MAXIMIZE; + + AdjustWindowRectEx(&rect, style, FALSE, exStyle); + + if (wndconfig->xpos == GLFW_ANY_POSITION && wndconfig->ypos == GLFW_ANY_POSITION) + { + frameX = CW_USEDEFAULT; + frameY = CW_USEDEFAULT; + } + else + { + frameX = wndconfig->xpos + rect.left; + frameY = wndconfig->ypos + rect.top; + } + + frameWidth = rect.right - rect.left; + frameHeight = rect.bottom - rect.top; + } + + wideTitle = _glfwCreateWideStringFromUTF8Win32(wndconfig->title); + if (!wideTitle) + return GLFW_FALSE; + + window->win32.handle = CreateWindowExW(exStyle, + MAKEINTATOM(_glfw.win32.mainWindowClass), + wideTitle, + style, + frameX, frameY, + frameWidth, frameHeight, + NULL, // No parent window + NULL, // No window menu + _glfw.win32.instance, + (LPVOID) wndconfig); + + _glfw_free(wideTitle); + + if (!window->win32.handle) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to create window"); + return GLFW_FALSE; + } + + SetPropW(window->win32.handle, L"GLFW", window); + + if (IsWindows7OrGreater()) + { + ChangeWindowMessageFilterEx(window->win32.handle, + WM_DROPFILES, MSGFLT_ALLOW, NULL); + ChangeWindowMessageFilterEx(window->win32.handle, + WM_COPYDATA, MSGFLT_ALLOW, NULL); + ChangeWindowMessageFilterEx(window->win32.handle, + WM_COPYGLOBALDATA, MSGFLT_ALLOW, NULL); + } + + window->win32.scaleToMonitor = wndconfig->scaleToMonitor; + window->win32.keymenu = wndconfig->win32.keymenu; + + if (!window->monitor) + { + RECT rect = { 0, 0, wndconfig->width, wndconfig->height }; + WINDOWPLACEMENT wp = { sizeof(wp) }; + const HMONITOR mh = MonitorFromWindow(window->win32.handle, + MONITOR_DEFAULTTONEAREST); + + // Adjust window rect to account for DPI scaling of the window frame and + // (if enabled) DPI scaling of the content area + // This cannot be done until we know what monitor the window was placed on + // Only update the restored window rect as the window may be maximized + + if (wndconfig->scaleToMonitor) + { + float xscale, yscale; + _glfwGetHMONITORContentScaleWin32(mh, &xscale, &yscale); + + if (xscale > 0.f && yscale > 0.f) + { + rect.right = (int) (rect.right * xscale); + rect.bottom = (int) (rect.bottom * yscale); + } + } + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&rect, style, FALSE, exStyle, + GetDpiForWindow(window->win32.handle)); + } + else + AdjustWindowRectEx(&rect, style, FALSE, exStyle); + + GetWindowPlacement(window->win32.handle, &wp); + OffsetRect(&rect, + wp.rcNormalPosition.left - rect.left, + wp.rcNormalPosition.top - rect.top); + + wp.rcNormalPosition = rect; + wp.showCmd = SW_HIDE; + SetWindowPlacement(window->win32.handle, &wp); + + // Adjust rect of maximized undecorated window, because by default Windows will + // make such a window cover the whole monitor instead of its workarea + + if (wndconfig->maximized && !wndconfig->decorated) + { + MONITORINFO mi = { sizeof(mi) }; + GetMonitorInfoW(mh, &mi); + + SetWindowPos(window->win32.handle, HWND_TOP, + mi.rcWork.left, + mi.rcWork.top, + mi.rcWork.right - mi.rcWork.left, + mi.rcWork.bottom - mi.rcWork.top, + SWP_NOACTIVATE | SWP_NOZORDER); + } + } + + DragAcceptFiles(window->win32.handle, TRUE); + + if (fbconfig->transparent) + { + updateFramebufferTransparency(window); + window->win32.transparent = GLFW_TRUE; + } + + _glfwGetWindowSizeWin32(window, &window->win32.width, &window->win32.height); + + return GLFW_TRUE; +} + +GLFWbool _glfwCreateWindowWin32(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + if (!createNativeWindow(window, wndconfig, fbconfig)) + return GLFW_FALSE; + + if (ctxconfig->client != GLFW_NO_API) + { + if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API) + { + if (!_glfwInitWGL()) + return GLFW_FALSE; + if (!_glfwCreateContextWGL(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_EGL_CONTEXT_API) + { + if (!_glfwInitEGL()) + return GLFW_FALSE; + if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API) + { + if (!_glfwInitOSMesa()) + return GLFW_FALSE; + if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + + if (!_glfwRefreshContextAttribs(window, ctxconfig)) + return GLFW_FALSE; + } + + if (wndconfig->mousePassthrough) + _glfwSetWindowMousePassthroughWin32(window, GLFW_TRUE); + + if (window->monitor) + { + _glfwShowWindowWin32(window); + _glfwFocusWindowWin32(window); + acquireMonitor(window); + fitToMonitor(window); + + if (wndconfig->centerCursor) + _glfwCenterCursorInContentArea(window); + } + else + { + if (wndconfig->visible) + { + _glfwShowWindowWin32(window); + if (wndconfig->focused) + _glfwFocusWindowWin32(window); + } + } + + return GLFW_TRUE; +} + +void _glfwDestroyWindowWin32(_GLFWwindow* window) +{ + if (window->monitor) + releaseMonitor(window); + + if (window->context.destroy) + window->context.destroy(window); + + if (_glfw.win32.disabledCursorWindow == window) + enableCursor(window); + + if (_glfw.win32.capturedCursorWindow == window) + releaseCursor(); + + if (window->win32.handle) + { + RemovePropW(window->win32.handle, L"GLFW"); + DestroyWindow(window->win32.handle); + window->win32.handle = NULL; + } + + if (window->win32.bigIcon) + DestroyIcon(window->win32.bigIcon); + + if (window->win32.smallIcon) + DestroyIcon(window->win32.smallIcon); +} + +void _glfwSetWindowTitleWin32(_GLFWwindow* window, const char* title) +{ + WCHAR* wideTitle = _glfwCreateWideStringFromUTF8Win32(title); + if (!wideTitle) + return; + + SetWindowTextW(window->win32.handle, wideTitle); + _glfw_free(wideTitle); +} + +void _glfwSetWindowIconWin32(_GLFWwindow* window, int count, const GLFWimage* images) +{ + HICON bigIcon = NULL, smallIcon = NULL; + + if (count) + { + const GLFWimage* bigImage = chooseImage(count, images, + GetSystemMetrics(SM_CXICON), + GetSystemMetrics(SM_CYICON)); + const GLFWimage* smallImage = chooseImage(count, images, + GetSystemMetrics(SM_CXSMICON), + GetSystemMetrics(SM_CYSMICON)); + + bigIcon = createIcon(bigImage, 0, 0, GLFW_TRUE); + smallIcon = createIcon(smallImage, 0, 0, GLFW_TRUE); + } + else + { + bigIcon = (HICON) GetClassLongPtrW(window->win32.handle, GCLP_HICON); + smallIcon = (HICON) GetClassLongPtrW(window->win32.handle, GCLP_HICONSM); + } + + SendMessageW(window->win32.handle, WM_SETICON, ICON_BIG, (LPARAM) bigIcon); + SendMessageW(window->win32.handle, WM_SETICON, ICON_SMALL, (LPARAM) smallIcon); + + if (window->win32.bigIcon) + DestroyIcon(window->win32.bigIcon); + + if (window->win32.smallIcon) + DestroyIcon(window->win32.smallIcon); + + if (count) + { + window->win32.bigIcon = bigIcon; + window->win32.smallIcon = smallIcon; + } +} + +void _glfwGetWindowPosWin32(_GLFWwindow* window, int* xpos, int* ypos) +{ + POINT pos = { 0, 0 }; + ClientToScreen(window->win32.handle, &pos); + + if (xpos) + *xpos = pos.x; + if (ypos) + *ypos = pos.y; +} + +void _glfwSetWindowPosWin32(_GLFWwindow* window, int xpos, int ypos) +{ + RECT rect = { xpos, ypos, xpos, ypos }; + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window), + GetDpiForWindow(window->win32.handle)); + } + else + { + AdjustWindowRectEx(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window)); + } + + SetWindowPos(window->win32.handle, NULL, rect.left, rect.top, 0, 0, + SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOSIZE); +} + +void _glfwGetWindowSizeWin32(_GLFWwindow* window, int* width, int* height) +{ + RECT area; + GetClientRect(window->win32.handle, &area); + + if (width) + *width = area.right; + if (height) + *height = area.bottom; +} + +void _glfwSetWindowSizeWin32(_GLFWwindow* window, int width, int height) +{ + if (window->monitor) + { + if (window->monitor->window == window) + { + acquireMonitor(window); + fitToMonitor(window); + } + } + else + { + RECT rect = { 0, 0, width, height }; + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window), + GetDpiForWindow(window->win32.handle)); + } + else + { + AdjustWindowRectEx(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window)); + } + + SetWindowPos(window->win32.handle, HWND_TOP, + 0, 0, rect.right - rect.left, rect.bottom - rect.top, + SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_NOZORDER); + } +} + +void _glfwSetWindowSizeLimitsWin32(_GLFWwindow* window, + int minwidth, int minheight, + int maxwidth, int maxheight) +{ + RECT area; + + if ((minwidth == GLFW_DONT_CARE || minheight == GLFW_DONT_CARE) && + (maxwidth == GLFW_DONT_CARE || maxheight == GLFW_DONT_CARE)) + { + return; + } + + GetWindowRect(window->win32.handle, &area); + MoveWindow(window->win32.handle, + area.left, area.top, + area.right - area.left, + area.bottom - area.top, TRUE); +} + +void _glfwSetWindowAspectRatioWin32(_GLFWwindow* window, int numer, int denom) +{ + RECT area; + + if (numer == GLFW_DONT_CARE || denom == GLFW_DONT_CARE) + return; + + GetWindowRect(window->win32.handle, &area); + applyAspectRatio(window, WMSZ_BOTTOMRIGHT, &area); + MoveWindow(window->win32.handle, + area.left, area.top, + area.right - area.left, + area.bottom - area.top, TRUE); +} + +void _glfwGetFramebufferSizeWin32(_GLFWwindow* window, int* width, int* height) +{ + _glfwGetWindowSizeWin32(window, width, height); +} + +void _glfwGetWindowFrameSizeWin32(_GLFWwindow* window, + int* left, int* top, + int* right, int* bottom) +{ + RECT rect; + int width, height; + + _glfwGetWindowSizeWin32(window, &width, &height); + SetRect(&rect, 0, 0, width, height); + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window), + GetDpiForWindow(window->win32.handle)); + } + else + { + AdjustWindowRectEx(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window)); + } + + if (left) + *left = -rect.left; + if (top) + *top = -rect.top; + if (right) + *right = rect.right - width; + if (bottom) + *bottom = rect.bottom - height; +} + +void _glfwGetWindowContentScaleWin32(_GLFWwindow* window, float* xscale, float* yscale) +{ + const HANDLE handle = MonitorFromWindow(window->win32.handle, + MONITOR_DEFAULTTONEAREST); + _glfwGetHMONITORContentScaleWin32(handle, xscale, yscale); +} + +void _glfwIconifyWindowWin32(_GLFWwindow* window) +{ + ShowWindow(window->win32.handle, SW_MINIMIZE); +} + +void _glfwRestoreWindowWin32(_GLFWwindow* window) +{ + ShowWindow(window->win32.handle, SW_RESTORE); +} + +void _glfwMaximizeWindowWin32(_GLFWwindow* window) +{ + if (IsWindowVisible(window->win32.handle)) + ShowWindow(window->win32.handle, SW_MAXIMIZE); + else + maximizeWindowManually(window); +} + +void _glfwShowWindowWin32(_GLFWwindow* window) +{ + ShowWindow(window->win32.handle, SW_SHOWNA); +} + +void _glfwHideWindowWin32(_GLFWwindow* window) +{ + ShowWindow(window->win32.handle, SW_HIDE); +} + +void _glfwRequestWindowAttentionWin32(_GLFWwindow* window) +{ + FlashWindow(window->win32.handle, TRUE); +} + +void _glfwFocusWindowWin32(_GLFWwindow* window) +{ + BringWindowToTop(window->win32.handle); + SetForegroundWindow(window->win32.handle); + SetFocus(window->win32.handle); +} + +void _glfwSetWindowMonitorWin32(_GLFWwindow* window, + _GLFWmonitor* monitor, + int xpos, int ypos, + int width, int height, + int refreshRate) +{ + if (window->monitor == monitor) + { + if (monitor) + { + if (monitor->window == window) + { + acquireMonitor(window); + fitToMonitor(window); + } + } + else + { + RECT rect = { xpos, ypos, xpos + width, ypos + height }; + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window), + GetDpiForWindow(window->win32.handle)); + } + else + { + AdjustWindowRectEx(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window)); + } + + SetWindowPos(window->win32.handle, HWND_TOP, + rect.left, rect.top, + rect.right - rect.left, rect.bottom - rect.top, + SWP_NOCOPYBITS | SWP_NOACTIVATE | SWP_NOZORDER); + } + + return; + } + + if (window->monitor) + releaseMonitor(window); + + _glfwInputWindowMonitor(window, monitor); + + if (window->monitor) + { + MONITORINFO mi = { sizeof(mi) }; + UINT flags = SWP_SHOWWINDOW | SWP_NOACTIVATE | SWP_NOCOPYBITS; + + if (window->decorated) + { + DWORD style = GetWindowLongW(window->win32.handle, GWL_STYLE); + style &= ~WS_OVERLAPPEDWINDOW; + style |= getWindowStyle(window); + SetWindowLongW(window->win32.handle, GWL_STYLE, style); + flags |= SWP_FRAMECHANGED; + } + + acquireMonitor(window); + + GetMonitorInfoW(window->monitor->win32.handle, &mi); + SetWindowPos(window->win32.handle, HWND_TOPMOST, + mi.rcMonitor.left, + mi.rcMonitor.top, + mi.rcMonitor.right - mi.rcMonitor.left, + mi.rcMonitor.bottom - mi.rcMonitor.top, + flags); + } + else + { + HWND after; + RECT rect = { xpos, ypos, xpos + width, ypos + height }; + DWORD style = GetWindowLongW(window->win32.handle, GWL_STYLE); + UINT flags = SWP_NOACTIVATE | SWP_NOCOPYBITS; + + if (window->decorated) + { + style &= ~WS_POPUP; + style |= getWindowStyle(window); + SetWindowLongW(window->win32.handle, GWL_STYLE, style); + + flags |= SWP_FRAMECHANGED; + } + + if (window->floating) + after = HWND_TOPMOST; + else + after = HWND_NOTOPMOST; + + if (_glfwIsWindows10Version1607OrGreaterWin32()) + { + AdjustWindowRectExForDpi(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window), + GetDpiForWindow(window->win32.handle)); + } + else + { + AdjustWindowRectEx(&rect, getWindowStyle(window), + FALSE, getWindowExStyle(window)); + } + + SetWindowPos(window->win32.handle, after, + rect.left, rect.top, + rect.right - rect.left, rect.bottom - rect.top, + flags); + } +} + +GLFWbool _glfwWindowFocusedWin32(_GLFWwindow* window) +{ + return window->win32.handle == GetActiveWindow(); +} + +GLFWbool _glfwWindowIconifiedWin32(_GLFWwindow* window) +{ + return IsIconic(window->win32.handle); +} + +GLFWbool _glfwWindowVisibleWin32(_GLFWwindow* window) +{ + return IsWindowVisible(window->win32.handle); +} + +GLFWbool _glfwWindowMaximizedWin32(_GLFWwindow* window) +{ + return IsZoomed(window->win32.handle); +} + +GLFWbool _glfwWindowHoveredWin32(_GLFWwindow* window) +{ + return cursorInContentArea(window); +} + +GLFWbool _glfwFramebufferTransparentWin32(_GLFWwindow* window) +{ + BOOL composition, opaque; + DWORD color; + + if (!window->win32.transparent) + return GLFW_FALSE; + + if (!IsWindowsVistaOrGreater()) + return GLFW_FALSE; + + if (FAILED(DwmIsCompositionEnabled(&composition)) || !composition) + return GLFW_FALSE; + + if (!IsWindows8OrGreater()) + { + // HACK: Disable framebuffer transparency on Windows 7 when the + // colorization color is opaque, because otherwise the window + // contents is blended additively with the previous frame instead + // of replacing it + if (FAILED(DwmGetColorizationColor(&color, &opaque)) || opaque) + return GLFW_FALSE; + } + + return GLFW_TRUE; +} + +void _glfwSetWindowResizableWin32(_GLFWwindow* window, GLFWbool enabled) +{ + updateWindowStyles(window); +} + +void _glfwSetWindowDecoratedWin32(_GLFWwindow* window, GLFWbool enabled) +{ + updateWindowStyles(window); +} + +void _glfwSetWindowFloatingWin32(_GLFWwindow* window, GLFWbool enabled) +{ + const HWND after = enabled ? HWND_TOPMOST : HWND_NOTOPMOST; + SetWindowPos(window->win32.handle, after, 0, 0, 0, 0, + SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE); +} + +void _glfwSetWindowMousePassthroughWin32(_GLFWwindow* window, GLFWbool enabled) +{ + COLORREF key = 0; + BYTE alpha = 0; + DWORD flags = 0; + DWORD exStyle = GetWindowLongW(window->win32.handle, GWL_EXSTYLE); + + if (exStyle & WS_EX_LAYERED) + GetLayeredWindowAttributes(window->win32.handle, &key, &alpha, &flags); + + if (enabled) + exStyle |= (WS_EX_TRANSPARENT | WS_EX_LAYERED); + else + { + exStyle &= ~WS_EX_TRANSPARENT; + // NOTE: Window opacity also needs the layered window style so do not + // remove it if the window is alpha blended + if (exStyle & WS_EX_LAYERED) + { + if (!(flags & LWA_ALPHA)) + exStyle &= ~WS_EX_LAYERED; + } + } + + SetWindowLongW(window->win32.handle, GWL_EXSTYLE, exStyle); + + if (enabled) + SetLayeredWindowAttributes(window->win32.handle, key, alpha, flags); +} + +float _glfwGetWindowOpacityWin32(_GLFWwindow* window) +{ + BYTE alpha; + DWORD flags; + + if ((GetWindowLongW(window->win32.handle, GWL_EXSTYLE) & WS_EX_LAYERED) && + GetLayeredWindowAttributes(window->win32.handle, NULL, &alpha, &flags)) + { + if (flags & LWA_ALPHA) + return alpha / 255.f; + } + + return 1.f; +} + +void _glfwSetWindowOpacityWin32(_GLFWwindow* window, float opacity) +{ + LONG exStyle = GetWindowLongW(window->win32.handle, GWL_EXSTYLE); + if (opacity < 1.f || (exStyle & WS_EX_TRANSPARENT)) + { + const BYTE alpha = (BYTE) (255 * opacity); + exStyle |= WS_EX_LAYERED; + SetWindowLongW(window->win32.handle, GWL_EXSTYLE, exStyle); + SetLayeredWindowAttributes(window->win32.handle, 0, alpha, LWA_ALPHA); + } + else if (exStyle & WS_EX_TRANSPARENT) + { + SetLayeredWindowAttributes(window->win32.handle, 0, 0, 0); + } + else + { + exStyle &= ~WS_EX_LAYERED; + SetWindowLongW(window->win32.handle, GWL_EXSTYLE, exStyle); + } +} + +void _glfwSetRawMouseMotionWin32(_GLFWwindow *window, GLFWbool enabled) +{ + if (_glfw.win32.disabledCursorWindow != window) + return; + + if (enabled) + enableRawMouseMotion(window); + else + disableRawMouseMotion(window); +} + +GLFWbool _glfwRawMouseMotionSupportedWin32(void) +{ + return GLFW_TRUE; +} + +void _glfwPollEventsWin32(void) +{ + MSG msg; + HWND handle; + _GLFWwindow* window; + + while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) + { + if (msg.message == WM_QUIT) + { + // NOTE: While GLFW does not itself post WM_QUIT, other processes + // may post it to this one, for example Task Manager + // HACK: Treat WM_QUIT as a close on all windows + + window = _glfw.windowListHead; + while (window) + { + _glfwInputWindowCloseRequest(window); + window = window->next; + } + } + else + { + TranslateMessage(&msg); + DispatchMessageW(&msg); + } + } + + // HACK: Release modifier keys that the system did not emit KEYUP for + // NOTE: Shift keys on Windows tend to "stick" when both are pressed as + // no key up message is generated by the first key release + // NOTE: Windows key is not reported as released by the Win+V hotkey + // Other Win hotkeys are handled implicitly by _glfwInputWindowFocus + // because they change the input focus + // NOTE: The other half of this is in the WM_*KEY* handler in windowProc + handle = GetActiveWindow(); + if (handle) + { + window = GetPropW(handle, L"GLFW"); + if (window) + { + int i; + const int keys[4][2] = + { + { VK_LSHIFT, GLFW_KEY_LEFT_SHIFT }, + { VK_RSHIFT, GLFW_KEY_RIGHT_SHIFT }, + { VK_LWIN, GLFW_KEY_LEFT_SUPER }, + { VK_RWIN, GLFW_KEY_RIGHT_SUPER } + }; + + for (i = 0; i < 4; i++) + { + const int vk = keys[i][0]; + const int key = keys[i][1]; + const int scancode = _glfw.win32.scancodes[key]; + + if ((GetKeyState(vk) & 0x8000)) + continue; + if (window->keys[key] != GLFW_PRESS) + continue; + + _glfwInputKey(window, key, scancode, GLFW_RELEASE, getKeyMods()); + } + } + } + + window = _glfw.win32.disabledCursorWindow; + if (window) + { + int width, height; + _glfwGetWindowSizeWin32(window, &width, &height); + + // NOTE: Re-center the cursor only if it has moved since the last call, + // to avoid breaking glfwWaitEvents with WM_MOUSEMOVE + if (window->win32.lastCursorPosX != width / 2 || + window->win32.lastCursorPosY != height / 2) + { + _glfwSetCursorPosWin32(window, width / 2, height / 2); + } + } +} + +void _glfwWaitEventsWin32(void) +{ + WaitMessage(); + + _glfwPollEventsWin32(); +} + +void _glfwWaitEventsTimeoutWin32(double timeout) +{ + MsgWaitForMultipleObjects(0, NULL, FALSE, (DWORD) (timeout * 1e3), QS_ALLEVENTS); + + _glfwPollEventsWin32(); +} + +void _glfwPostEmptyEventWin32(void) +{ + PostMessageW(_glfw.win32.helperWindowHandle, WM_NULL, 0, 0); +} + +void _glfwGetCursorPosWin32(_GLFWwindow* window, double* xpos, double* ypos) +{ + POINT pos; + + if (GetCursorPos(&pos)) + { + ScreenToClient(window->win32.handle, &pos); + + if (xpos) + *xpos = pos.x; + if (ypos) + *ypos = pos.y; + } +} + +void _glfwSetCursorPosWin32(_GLFWwindow* window, double xpos, double ypos) +{ + POINT pos = { (int) xpos, (int) ypos }; + + // Store the new position so it can be recognized later + window->win32.lastCursorPosX = pos.x; + window->win32.lastCursorPosY = pos.y; + + ClientToScreen(window->win32.handle, &pos); + SetCursorPos(pos.x, pos.y); +} + +void _glfwSetCursorModeWin32(_GLFWwindow* window, int mode) +{ + if (_glfwWindowFocusedWin32(window)) + { + if (mode == GLFW_CURSOR_DISABLED) + { + _glfwGetCursorPosWin32(window, + &_glfw.win32.restoreCursorPosX, + &_glfw.win32.restoreCursorPosY); + _glfwCenterCursorInContentArea(window); + if (window->rawMouseMotion) + enableRawMouseMotion(window); + } + else if (_glfw.win32.disabledCursorWindow == window) + { + if (window->rawMouseMotion) + disableRawMouseMotion(window); + } + + if (mode == GLFW_CURSOR_DISABLED || mode == GLFW_CURSOR_CAPTURED) + captureCursor(window); + else + releaseCursor(); + + if (mode == GLFW_CURSOR_DISABLED) + _glfw.win32.disabledCursorWindow = window; + else if (_glfw.win32.disabledCursorWindow == window) + { + _glfw.win32.disabledCursorWindow = NULL; + _glfwSetCursorPosWin32(window, + _glfw.win32.restoreCursorPosX, + _glfw.win32.restoreCursorPosY); + } + } + + if (cursorInContentArea(window)) + updateCursorImage(window); +} + +const char* _glfwGetScancodeNameWin32(int scancode) +{ + if (scancode < 0 || scancode > (KF_EXTENDED | 0xff) || + _glfw.win32.keycodes[scancode] == GLFW_KEY_UNKNOWN) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid scancode %i", scancode); + return NULL; + } + + return _glfw.win32.keynames[_glfw.win32.keycodes[scancode]]; +} + +int _glfwGetKeyScancodeWin32(int key) +{ + return _glfw.win32.scancodes[key]; +} + +GLFWbool _glfwCreateCursorWin32(_GLFWcursor* cursor, + const GLFWimage* image, + int xhot, int yhot) +{ + cursor->win32.handle = (HCURSOR) createIcon(image, xhot, yhot, GLFW_FALSE); + if (!cursor->win32.handle) + return GLFW_FALSE; + + return GLFW_TRUE; +} + +GLFWbool _glfwCreateStandardCursorWin32(_GLFWcursor* cursor, int shape) +{ + int id = 0; + + switch (shape) + { + case GLFW_ARROW_CURSOR: + id = OCR_NORMAL; + break; + case GLFW_IBEAM_CURSOR: + id = OCR_IBEAM; + break; + case GLFW_CROSSHAIR_CURSOR: + id = OCR_CROSS; + break; + case GLFW_POINTING_HAND_CURSOR: + id = OCR_HAND; + break; + case GLFW_RESIZE_EW_CURSOR: + id = OCR_SIZEWE; + break; + case GLFW_RESIZE_NS_CURSOR: + id = OCR_SIZENS; + break; + case GLFW_RESIZE_NWSE_CURSOR: + id = OCR_SIZENWSE; + break; + case GLFW_RESIZE_NESW_CURSOR: + id = OCR_SIZENESW; + break; + case GLFW_RESIZE_ALL_CURSOR: + id = OCR_SIZEALL; + break; + case GLFW_NOT_ALLOWED_CURSOR: + id = OCR_NO; + break; + default: + _glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Unknown standard cursor"); + return GLFW_FALSE; + } + + cursor->win32.handle = LoadImageW(NULL, + MAKEINTRESOURCEW(id), IMAGE_CURSOR, 0, 0, + LR_DEFAULTSIZE | LR_SHARED); + if (!cursor->win32.handle) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to create standard cursor"); + return GLFW_FALSE; + } + + return GLFW_TRUE; +} + +void _glfwDestroyCursorWin32(_GLFWcursor* cursor) +{ + if (cursor->win32.handle) + DestroyIcon((HICON) cursor->win32.handle); +} + +void _glfwSetCursorWin32(_GLFWwindow* window, _GLFWcursor* cursor) +{ + if (cursorInContentArea(window)) + updateCursorImage(window); +} + +void _glfwSetClipboardStringWin32(const char* string) +{ + int characterCount; + HANDLE object; + WCHAR* buffer; + + characterCount = MultiByteToWideChar(CP_UTF8, 0, string, -1, NULL, 0); + if (!characterCount) + return; + + object = GlobalAlloc(GMEM_MOVEABLE, characterCount * sizeof(WCHAR)); + if (!object) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to allocate global handle for clipboard"); + return; + } + + buffer = GlobalLock(object); + if (!buffer) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to lock global handle"); + GlobalFree(object); + return; + } + + MultiByteToWideChar(CP_UTF8, 0, string, -1, buffer, characterCount); + GlobalUnlock(object); + + if (!OpenClipboard(_glfw.win32.helperWindowHandle)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to open clipboard"); + GlobalFree(object); + return; + } + + EmptyClipboard(); + SetClipboardData(CF_UNICODETEXT, object); + CloseClipboard(); +} + +const char* _glfwGetClipboardStringWin32(void) +{ + HANDLE object; + WCHAR* buffer; + + if (!OpenClipboard(_glfw.win32.helperWindowHandle)) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to open clipboard"); + return NULL; + } + + object = GetClipboardData(CF_UNICODETEXT); + if (!object) + { + _glfwInputErrorWin32(GLFW_FORMAT_UNAVAILABLE, + "Win32: Failed to convert clipboard to string"); + CloseClipboard(); + return NULL; + } + + buffer = GlobalLock(object); + if (!buffer) + { + _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, + "Win32: Failed to lock global handle"); + CloseClipboard(); + return NULL; + } + + _glfw_free(_glfw.win32.clipboardString); + _glfw.win32.clipboardString = _glfwCreateUTF8FromWideStringWin32(buffer); + + GlobalUnlock(object); + CloseClipboard(); + + return _glfw.win32.clipboardString; +} + +EGLenum _glfwGetEGLPlatformWin32(EGLint** attribs) +{ + if (_glfw.egl.ANGLE_platform_angle) + { + int type = 0; + + if (_glfw.egl.ANGLE_platform_angle_opengl) + { + if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_OPENGL) + type = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; + else if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_OPENGLES) + type = EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE; + } + + if (_glfw.egl.ANGLE_platform_angle_d3d) + { + if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_D3D9) + type = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE; + else if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_D3D11) + type = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; + } + + if (_glfw.egl.ANGLE_platform_angle_vulkan) + { + if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_VULKAN) + type = EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE; + } + + if (type) + { + *attribs = _glfw_calloc(3, sizeof(EGLint)); + (*attribs)[0] = EGL_PLATFORM_ANGLE_TYPE_ANGLE; + (*attribs)[1] = type; + (*attribs)[2] = EGL_NONE; + return EGL_PLATFORM_ANGLE_ANGLE; + } + } + + return 0; +} + +EGLNativeDisplayType _glfwGetEGLNativeDisplayWin32(void) +{ + return GetDC(_glfw.win32.helperWindowHandle); +} + +EGLNativeWindowType _glfwGetEGLNativeWindowWin32(_GLFWwindow* window) +{ + return window->win32.handle; +} + +void _glfwGetRequiredInstanceExtensionsWin32(char** extensions) +{ + if (!_glfw.vk.KHR_surface || !_glfw.vk.KHR_win32_surface) + return; + + extensions[0] = "VK_KHR_surface"; + extensions[1] = "VK_KHR_win32_surface"; +} + +GLFWbool _glfwGetPhysicalDevicePresentationSupportWin32(VkInstance instance, + VkPhysicalDevice device, + uint32_t queuefamily) +{ + PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR + vkGetPhysicalDeviceWin32PresentationSupportKHR = + (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR) + vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR"); + if (!vkGetPhysicalDeviceWin32PresentationSupportKHR) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Win32: Vulkan instance missing VK_KHR_win32_surface extension"); + return GLFW_FALSE; + } + + return vkGetPhysicalDeviceWin32PresentationSupportKHR(device, queuefamily); +} + +VkResult _glfwCreateWindowSurfaceWin32(VkInstance instance, + _GLFWwindow* window, + const VkAllocationCallbacks* allocator, + VkSurfaceKHR* surface) +{ + VkResult err; + VkWin32SurfaceCreateInfoKHR sci; + PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; + + vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR) + vkGetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR"); + if (!vkCreateWin32SurfaceKHR) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Win32: Vulkan instance missing VK_KHR_win32_surface extension"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + memset(&sci, 0, sizeof(sci)); + sci.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR; + sci.hinstance = _glfw.win32.instance; + sci.hwnd = window->win32.handle; + + err = vkCreateWin32SurfaceKHR(instance, &sci, allocator, surface); + if (err) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Win32: Failed to create Vulkan surface: %s", + _glfwGetVulkanResultString(err)); + } + + return err; +} + +GLFWAPI HWND glfwGetWin32Window(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (_glfw.platform.platformID != GLFW_PLATFORM_WIN32) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, + "Win32: Platform not initialized"); + return NULL; + } + + return window->win32.handle; +} + +#endif // _GLFW_WIN32 + diff --git a/lib/glfw/src/window.c b/lib/glfw/src/window.c new file mode 100644 index 0000000..1c8519f --- /dev/null +++ b/lib/glfw/src/window.c @@ -0,0 +1,1155 @@ +//======================================================================== +// GLFW 3.4 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// Copyright (c) 2012 Torsten Walluhn +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== + +#include "internal.h" + +#include +#include +#include +#include + + +////////////////////////////////////////////////////////////////////////// +////// GLFW event API ////// +////////////////////////////////////////////////////////////////////////// + +// Notifies shared code that a window has lost or received input focus +// +void _glfwInputWindowFocus(_GLFWwindow* window, GLFWbool focused) +{ + assert(window != NULL); + assert(focused == GLFW_TRUE || focused == GLFW_FALSE); + + if (window->callbacks.focus) + window->callbacks.focus((GLFWwindow*) window, focused); + + if (!focused) + { + int key, button; + + for (key = 0; key <= GLFW_KEY_LAST; key++) + { + if (window->keys[key] == GLFW_PRESS) + { + const int scancode = _glfw.platform.getKeyScancode(key); + _glfwInputKey(window, key, scancode, GLFW_RELEASE, 0); + } + } + + for (button = 0; button <= GLFW_MOUSE_BUTTON_LAST; button++) + { + if (window->mouseButtons[button] == GLFW_PRESS) + _glfwInputMouseClick(window, button, GLFW_RELEASE, 0); + } + } +} + +// Notifies shared code that a window has moved +// The position is specified in content area relative screen coordinates +// +void _glfwInputWindowPos(_GLFWwindow* window, int x, int y) +{ + assert(window != NULL); + + if (window->callbacks.pos) + window->callbacks.pos((GLFWwindow*) window, x, y); +} + +// Notifies shared code that a window has been resized +// The size is specified in screen coordinates +// +void _glfwInputWindowSize(_GLFWwindow* window, int width, int height) +{ + assert(window != NULL); + assert(width >= 0); + assert(height >= 0); + + if (window->callbacks.size) + window->callbacks.size((GLFWwindow*) window, width, height); +} + +// Notifies shared code that a window has been iconified or restored +// +void _glfwInputWindowIconify(_GLFWwindow* window, GLFWbool iconified) +{ + assert(window != NULL); + assert(iconified == GLFW_TRUE || iconified == GLFW_FALSE); + + if (window->callbacks.iconify) + window->callbacks.iconify((GLFWwindow*) window, iconified); +} + +// Notifies shared code that a window has been maximized or restored +// +void _glfwInputWindowMaximize(_GLFWwindow* window, GLFWbool maximized) +{ + assert(window != NULL); + assert(maximized == GLFW_TRUE || maximized == GLFW_FALSE); + + if (window->callbacks.maximize) + window->callbacks.maximize((GLFWwindow*) window, maximized); +} + +// Notifies shared code that a window framebuffer has been resized +// The size is specified in pixels +// +void _glfwInputFramebufferSize(_GLFWwindow* window, int width, int height) +{ + assert(window != NULL); + assert(width >= 0); + assert(height >= 0); + + if (window->callbacks.fbsize) + window->callbacks.fbsize((GLFWwindow*) window, width, height); +} + +// Notifies shared code that a window content scale has changed +// The scale is specified as the ratio between the current and default DPI +// +void _glfwInputWindowContentScale(_GLFWwindow* window, float xscale, float yscale) +{ + assert(window != NULL); + assert(xscale > 0.f); + assert(xscale < FLT_MAX); + assert(yscale > 0.f); + assert(yscale < FLT_MAX); + + if (window->callbacks.scale) + window->callbacks.scale((GLFWwindow*) window, xscale, yscale); +} + +// Notifies shared code that the window contents needs updating +// +void _glfwInputWindowDamage(_GLFWwindow* window) +{ + assert(window != NULL); + + if (window->callbacks.refresh) + window->callbacks.refresh((GLFWwindow*) window); +} + +// Notifies shared code that the user wishes to close a window +// +void _glfwInputWindowCloseRequest(_GLFWwindow* window) +{ + assert(window != NULL); + + window->shouldClose = GLFW_TRUE; + + if (window->callbacks.close) + window->callbacks.close((GLFWwindow*) window); +} + +// Notifies shared code that a window has changed its desired monitor +// +void _glfwInputWindowMonitor(_GLFWwindow* window, _GLFWmonitor* monitor) +{ + assert(window != NULL); + window->monitor = monitor; +} + +////////////////////////////////////////////////////////////////////////// +////// GLFW public API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, + const char* title, + GLFWmonitor* monitor, + GLFWwindow* share) +{ + _GLFWfbconfig fbconfig; + _GLFWctxconfig ctxconfig; + _GLFWwndconfig wndconfig; + _GLFWwindow* window; + + assert(title != NULL); + assert(width >= 0); + assert(height >= 0); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (width <= 0 || height <= 0) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid window size %ix%i", + width, height); + + return NULL; + } + + fbconfig = _glfw.hints.framebuffer; + ctxconfig = _glfw.hints.context; + wndconfig = _glfw.hints.window; + + wndconfig.width = width; + wndconfig.height = height; + wndconfig.title = title; + ctxconfig.share = (_GLFWwindow*) share; + + if (!_glfwIsValidContextConfig(&ctxconfig)) + return NULL; + + window = _glfw_calloc(1, sizeof(_GLFWwindow)); + window->next = _glfw.windowListHead; + _glfw.windowListHead = window; + + window->videoMode.width = width; + window->videoMode.height = height; + window->videoMode.redBits = fbconfig.redBits; + window->videoMode.greenBits = fbconfig.greenBits; + window->videoMode.blueBits = fbconfig.blueBits; + window->videoMode.refreshRate = _glfw.hints.refreshRate; + + window->monitor = (_GLFWmonitor*) monitor; + window->resizable = wndconfig.resizable; + window->decorated = wndconfig.decorated; + window->autoIconify = wndconfig.autoIconify; + window->floating = wndconfig.floating; + window->focusOnShow = wndconfig.focusOnShow; + window->mousePassthrough = wndconfig.mousePassthrough; + window->cursorMode = GLFW_CURSOR_NORMAL; + + window->doublebuffer = fbconfig.doublebuffer; + + window->minwidth = GLFW_DONT_CARE; + window->minheight = GLFW_DONT_CARE; + window->maxwidth = GLFW_DONT_CARE; + window->maxheight = GLFW_DONT_CARE; + window->numer = GLFW_DONT_CARE; + window->denom = GLFW_DONT_CARE; + + if (!_glfw.platform.createWindow(window, &wndconfig, &ctxconfig, &fbconfig)) + { + glfwDestroyWindow((GLFWwindow*) window); + return NULL; + } + + return (GLFWwindow*) window; +} + +void glfwDefaultWindowHints(void) +{ + _GLFW_REQUIRE_INIT(); + + // The default is OpenGL with minimum version 1.0 + memset(&_glfw.hints.context, 0, sizeof(_glfw.hints.context)); + _glfw.hints.context.client = GLFW_OPENGL_API; + _glfw.hints.context.source = GLFW_NATIVE_CONTEXT_API; + _glfw.hints.context.major = 1; + _glfw.hints.context.minor = 0; + + // The default is a focused, visible, resizable window with decorations + memset(&_glfw.hints.window, 0, sizeof(_glfw.hints.window)); + _glfw.hints.window.resizable = GLFW_TRUE; + _glfw.hints.window.visible = GLFW_TRUE; + _glfw.hints.window.decorated = GLFW_TRUE; + _glfw.hints.window.focused = GLFW_TRUE; + _glfw.hints.window.autoIconify = GLFW_TRUE; + _glfw.hints.window.centerCursor = GLFW_TRUE; + _glfw.hints.window.focusOnShow = GLFW_TRUE; + _glfw.hints.window.xpos = GLFW_ANY_POSITION; + _glfw.hints.window.ypos = GLFW_ANY_POSITION; + + // The default is 24 bits of color, 24 bits of depth and 8 bits of stencil, + // double buffered + memset(&_glfw.hints.framebuffer, 0, sizeof(_glfw.hints.framebuffer)); + _glfw.hints.framebuffer.redBits = 8; + _glfw.hints.framebuffer.greenBits = 8; + _glfw.hints.framebuffer.blueBits = 8; + _glfw.hints.framebuffer.alphaBits = 8; + _glfw.hints.framebuffer.depthBits = 24; + _glfw.hints.framebuffer.stencilBits = 8; + _glfw.hints.framebuffer.doublebuffer = GLFW_TRUE; + + // The default is to select the highest available refresh rate + _glfw.hints.refreshRate = GLFW_DONT_CARE; + + // The default is to use full Retina resolution framebuffers + _glfw.hints.window.ns.retina = GLFW_TRUE; +} + +GLFWAPI void glfwWindowHint(int hint, int value) +{ + _GLFW_REQUIRE_INIT(); + + switch (hint) + { + case GLFW_RED_BITS: + _glfw.hints.framebuffer.redBits = value; + return; + case GLFW_GREEN_BITS: + _glfw.hints.framebuffer.greenBits = value; + return; + case GLFW_BLUE_BITS: + _glfw.hints.framebuffer.blueBits = value; + return; + case GLFW_ALPHA_BITS: + _glfw.hints.framebuffer.alphaBits = value; + return; + case GLFW_DEPTH_BITS: + _glfw.hints.framebuffer.depthBits = value; + return; + case GLFW_STENCIL_BITS: + _glfw.hints.framebuffer.stencilBits = value; + return; + case GLFW_ACCUM_RED_BITS: + _glfw.hints.framebuffer.accumRedBits = value; + return; + case GLFW_ACCUM_GREEN_BITS: + _glfw.hints.framebuffer.accumGreenBits = value; + return; + case GLFW_ACCUM_BLUE_BITS: + _glfw.hints.framebuffer.accumBlueBits = value; + return; + case GLFW_ACCUM_ALPHA_BITS: + _glfw.hints.framebuffer.accumAlphaBits = value; + return; + case GLFW_AUX_BUFFERS: + _glfw.hints.framebuffer.auxBuffers = value; + return; + case GLFW_STEREO: + _glfw.hints.framebuffer.stereo = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_DOUBLEBUFFER: + _glfw.hints.framebuffer.doublebuffer = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_TRANSPARENT_FRAMEBUFFER: + _glfw.hints.framebuffer.transparent = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_SAMPLES: + _glfw.hints.framebuffer.samples = value; + return; + case GLFW_SRGB_CAPABLE: + _glfw.hints.framebuffer.sRGB = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_RESIZABLE: + _glfw.hints.window.resizable = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_DECORATED: + _glfw.hints.window.decorated = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_FOCUSED: + _glfw.hints.window.focused = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_AUTO_ICONIFY: + _glfw.hints.window.autoIconify = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_FLOATING: + _glfw.hints.window.floating = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_MAXIMIZED: + _glfw.hints.window.maximized = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_VISIBLE: + _glfw.hints.window.visible = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_POSITION_X: + _glfw.hints.window.xpos = value; + return; + case GLFW_POSITION_Y: + _glfw.hints.window.ypos = value; + return; + case GLFW_COCOA_RETINA_FRAMEBUFFER: + _glfw.hints.window.ns.retina = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_WIN32_KEYBOARD_MENU: + _glfw.hints.window.win32.keymenu = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_COCOA_GRAPHICS_SWITCHING: + _glfw.hints.context.nsgl.offline = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_SCALE_TO_MONITOR: + _glfw.hints.window.scaleToMonitor = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_CENTER_CURSOR: + _glfw.hints.window.centerCursor = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_FOCUS_ON_SHOW: + _glfw.hints.window.focusOnShow = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_MOUSE_PASSTHROUGH: + _glfw.hints.window.mousePassthrough = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_CLIENT_API: + _glfw.hints.context.client = value; + return; + case GLFW_CONTEXT_CREATION_API: + _glfw.hints.context.source = value; + return; + case GLFW_CONTEXT_VERSION_MAJOR: + _glfw.hints.context.major = value; + return; + case GLFW_CONTEXT_VERSION_MINOR: + _glfw.hints.context.minor = value; + return; + case GLFW_CONTEXT_ROBUSTNESS: + _glfw.hints.context.robustness = value; + return; + case GLFW_OPENGL_FORWARD_COMPAT: + _glfw.hints.context.forward = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_CONTEXT_DEBUG: + _glfw.hints.context.debug = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_CONTEXT_NO_ERROR: + _glfw.hints.context.noerror = value ? GLFW_TRUE : GLFW_FALSE; + return; + case GLFW_OPENGL_PROFILE: + _glfw.hints.context.profile = value; + return; + case GLFW_CONTEXT_RELEASE_BEHAVIOR: + _glfw.hints.context.release = value; + return; + case GLFW_REFRESH_RATE: + _glfw.hints.refreshRate = value; + return; + } + + _glfwInputError(GLFW_INVALID_ENUM, "Invalid window hint 0x%08X", hint); +} + +GLFWAPI void glfwWindowHintString(int hint, const char* value) +{ + assert(value != NULL); + + _GLFW_REQUIRE_INIT(); + + switch (hint) + { + case GLFW_COCOA_FRAME_NAME: + strncpy(_glfw.hints.window.ns.frameName, value, + sizeof(_glfw.hints.window.ns.frameName) - 1); + return; + case GLFW_X11_CLASS_NAME: + strncpy(_glfw.hints.window.x11.className, value, + sizeof(_glfw.hints.window.x11.className) - 1); + return; + case GLFW_X11_INSTANCE_NAME: + strncpy(_glfw.hints.window.x11.instanceName, value, + sizeof(_glfw.hints.window.x11.instanceName) - 1); + return; + case GLFW_WAYLAND_APP_ID: + strncpy(_glfw.hints.window.wl.appId, value, + sizeof(_glfw.hints.window.wl.appId) - 1); + return; + } + + _glfwInputError(GLFW_INVALID_ENUM, "Invalid window hint string 0x%08X", hint); +} + +GLFWAPI void glfwDestroyWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + + _GLFW_REQUIRE_INIT(); + + // Allow closing of NULL (to match the behavior of free) + if (window == NULL) + return; + + // Clear all callbacks to avoid exposing a half torn-down window object + memset(&window->callbacks, 0, sizeof(window->callbacks)); + + // The window's context must not be current on another thread when the + // window is destroyed + if (window == _glfwPlatformGetTls(&_glfw.contextSlot)) + glfwMakeContextCurrent(NULL); + + _glfw.platform.destroyWindow(window); + + // Unlink window from global linked list + { + _GLFWwindow** prev = &_glfw.windowListHead; + + while (*prev != window) + prev = &((*prev)->next); + + *prev = window->next; + } + + _glfw_free(window); +} + +GLFWAPI int glfwWindowShouldClose(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(0); + return window->shouldClose; +} + +GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* handle, int value) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + window->shouldClose = value; +} + +GLFWAPI void glfwSetWindowTitle(GLFWwindow* handle, const char* title) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + assert(title != NULL); + + _GLFW_REQUIRE_INIT(); + _glfw.platform.setWindowTitle(window, title); +} + +GLFWAPI void glfwSetWindowIcon(GLFWwindow* handle, + int count, const GLFWimage* images) +{ + int i; + _GLFWwindow* window = (_GLFWwindow*) handle; + + assert(window != NULL); + assert(count >= 0); + assert(count == 0 || images != NULL); + + _GLFW_REQUIRE_INIT(); + + if (count < 0) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid image count for window icon"); + return; + } + + for (i = 0; i < count; i++) + { + assert(images[i].pixels != NULL); + + if (images[i].width <= 0 || images[i].height <= 0) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid image dimensions for window icon"); + return; + } + } + + _glfw.platform.setWindowIcon(window, count, images); +} + +GLFWAPI void glfwGetWindowPos(GLFWwindow* handle, int* xpos, int* ypos) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + if (xpos) + *xpos = 0; + if (ypos) + *ypos = 0; + + _GLFW_REQUIRE_INIT(); + _glfw.platform.getWindowPos(window, xpos, ypos); +} + +GLFWAPI void glfwSetWindowPos(GLFWwindow* handle, int xpos, int ypos) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + if (window->monitor) + return; + + _glfw.platform.setWindowPos(window, xpos, ypos); +} + +GLFWAPI void glfwGetWindowSize(GLFWwindow* handle, int* width, int* height) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + if (width) + *width = 0; + if (height) + *height = 0; + + _GLFW_REQUIRE_INIT(); + _glfw.platform.getWindowSize(window, width, height); +} + +GLFWAPI void glfwSetWindowSize(GLFWwindow* handle, int width, int height) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + assert(width >= 0); + assert(height >= 0); + + _GLFW_REQUIRE_INIT(); + + window->videoMode.width = width; + window->videoMode.height = height; + + _glfw.platform.setWindowSize(window, width, height); +} + +GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* handle, + int minwidth, int minheight, + int maxwidth, int maxheight) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + if (minwidth != GLFW_DONT_CARE && minheight != GLFW_DONT_CARE) + { + if (minwidth < 0 || minheight < 0) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid window minimum size %ix%i", + minwidth, minheight); + return; + } + } + + if (maxwidth != GLFW_DONT_CARE && maxheight != GLFW_DONT_CARE) + { + if (maxwidth < 0 || maxheight < 0 || + maxwidth < minwidth || maxheight < minheight) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid window maximum size %ix%i", + maxwidth, maxheight); + return; + } + } + + window->minwidth = minwidth; + window->minheight = minheight; + window->maxwidth = maxwidth; + window->maxheight = maxheight; + + if (window->monitor || !window->resizable) + return; + + _glfw.platform.setWindowSizeLimits(window, + minwidth, minheight, + maxwidth, maxheight); +} + +GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* handle, int numer, int denom) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + assert(numer != 0); + assert(denom != 0); + + _GLFW_REQUIRE_INIT(); + + if (numer != GLFW_DONT_CARE && denom != GLFW_DONT_CARE) + { + if (numer <= 0 || denom <= 0) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid window aspect ratio %i:%i", + numer, denom); + return; + } + } + + window->numer = numer; + window->denom = denom; + + if (window->monitor || !window->resizable) + return; + + _glfw.platform.setWindowAspectRatio(window, numer, denom); +} + +GLFWAPI void glfwGetFramebufferSize(GLFWwindow* handle, int* width, int* height) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + if (width) + *width = 0; + if (height) + *height = 0; + + _GLFW_REQUIRE_INIT(); + _glfw.platform.getFramebufferSize(window, width, height); +} + +GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* handle, + int* left, int* top, + int* right, int* bottom) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + if (left) + *left = 0; + if (top) + *top = 0; + if (right) + *right = 0; + if (bottom) + *bottom = 0; + + _GLFW_REQUIRE_INIT(); + _glfw.platform.getWindowFrameSize(window, left, top, right, bottom); +} + +GLFWAPI void glfwGetWindowContentScale(GLFWwindow* handle, + float* xscale, float* yscale) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + if (xscale) + *xscale = 0.f; + if (yscale) + *yscale = 0.f; + + _GLFW_REQUIRE_INIT(); + _glfw.platform.getWindowContentScale(window, xscale, yscale); +} + +GLFWAPI float glfwGetWindowOpacity(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(1.f); + return _glfw.platform.getWindowOpacity(window); +} + +GLFWAPI void glfwSetWindowOpacity(GLFWwindow* handle, float opacity) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + assert(opacity == opacity); + assert(opacity >= 0.f); + assert(opacity <= 1.f); + + _GLFW_REQUIRE_INIT(); + + if (opacity != opacity || opacity < 0.f || opacity > 1.f) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid window opacity %f", opacity); + return; + } + + _glfw.platform.setWindowOpacity(window, opacity); +} + +GLFWAPI void glfwIconifyWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + _glfw.platform.iconifyWindow(window); +} + +GLFWAPI void glfwRestoreWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + _glfw.platform.restoreWindow(window); +} + +GLFWAPI void glfwMaximizeWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + if (window->monitor) + return; + + _glfw.platform.maximizeWindow(window); +} + +GLFWAPI void glfwShowWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + if (window->monitor) + return; + + _glfw.platform.showWindow(window); + + if (window->focusOnShow) + _glfw.platform.focusWindow(window); +} + +GLFWAPI void glfwRequestWindowAttention(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + _glfw.platform.requestWindowAttention(window); +} + +GLFWAPI void glfwHideWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + if (window->monitor) + return; + + _glfw.platform.hideWindow(window); +} + +GLFWAPI void glfwFocusWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + _glfw.platform.focusWindow(window); +} + +GLFWAPI int glfwGetWindowAttrib(GLFWwindow* handle, int attrib) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(0); + + switch (attrib) + { + case GLFW_FOCUSED: + return _glfw.platform.windowFocused(window); + case GLFW_ICONIFIED: + return _glfw.platform.windowIconified(window); + case GLFW_VISIBLE: + return _glfw.platform.windowVisible(window); + case GLFW_MAXIMIZED: + return _glfw.platform.windowMaximized(window); + case GLFW_HOVERED: + return _glfw.platform.windowHovered(window); + case GLFW_FOCUS_ON_SHOW: + return window->focusOnShow; + case GLFW_MOUSE_PASSTHROUGH: + return window->mousePassthrough; + case GLFW_TRANSPARENT_FRAMEBUFFER: + return _glfw.platform.framebufferTransparent(window); + case GLFW_RESIZABLE: + return window->resizable; + case GLFW_DECORATED: + return window->decorated; + case GLFW_FLOATING: + return window->floating; + case GLFW_AUTO_ICONIFY: + return window->autoIconify; + case GLFW_DOUBLEBUFFER: + return window->doublebuffer; + case GLFW_CLIENT_API: + return window->context.client; + case GLFW_CONTEXT_CREATION_API: + return window->context.source; + case GLFW_CONTEXT_VERSION_MAJOR: + return window->context.major; + case GLFW_CONTEXT_VERSION_MINOR: + return window->context.minor; + case GLFW_CONTEXT_REVISION: + return window->context.revision; + case GLFW_CONTEXT_ROBUSTNESS: + return window->context.robustness; + case GLFW_OPENGL_FORWARD_COMPAT: + return window->context.forward; + case GLFW_CONTEXT_DEBUG: + return window->context.debug; + case GLFW_OPENGL_PROFILE: + return window->context.profile; + case GLFW_CONTEXT_RELEASE_BEHAVIOR: + return window->context.release; + case GLFW_CONTEXT_NO_ERROR: + return window->context.noerror; + } + + _glfwInputError(GLFW_INVALID_ENUM, "Invalid window attribute 0x%08X", attrib); + return 0; +} + +GLFWAPI void glfwSetWindowAttrib(GLFWwindow* handle, int attrib, int value) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + + value = value ? GLFW_TRUE : GLFW_FALSE; + + switch (attrib) + { + case GLFW_AUTO_ICONIFY: + window->autoIconify = value; + return; + + case GLFW_RESIZABLE: + window->resizable = value; + if (!window->monitor) + _glfw.platform.setWindowResizable(window, value); + return; + + case GLFW_DECORATED: + window->decorated = value; + if (!window->monitor) + _glfw.platform.setWindowDecorated(window, value); + return; + + case GLFW_FLOATING: + window->floating = value; + if (!window->monitor) + _glfw.platform.setWindowFloating(window, value); + return; + + case GLFW_FOCUS_ON_SHOW: + window->focusOnShow = value; + return; + + case GLFW_MOUSE_PASSTHROUGH: + window->mousePassthrough = value; + _glfw.platform.setWindowMousePassthrough(window, value); + return; + } + + _glfwInputError(GLFW_INVALID_ENUM, "Invalid window attribute 0x%08X", attrib); +} + +GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return (GLFWmonitor*) window->monitor; +} + +GLFWAPI void glfwSetWindowMonitor(GLFWwindow* wh, + GLFWmonitor* mh, + int xpos, int ypos, + int width, int height, + int refreshRate) +{ + _GLFWwindow* window = (_GLFWwindow*) wh; + _GLFWmonitor* monitor = (_GLFWmonitor*) mh; + assert(window != NULL); + assert(width >= 0); + assert(height >= 0); + + _GLFW_REQUIRE_INIT(); + + if (width <= 0 || height <= 0) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid window size %ix%i", + width, height); + return; + } + + if (refreshRate < 0 && refreshRate != GLFW_DONT_CARE) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Invalid refresh rate %i", + refreshRate); + return; + } + + window->videoMode.width = width; + window->videoMode.height = height; + window->videoMode.refreshRate = refreshRate; + + _glfw.platform.setWindowMonitor(window, monitor, + xpos, ypos, width, height, + refreshRate); +} + +GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* handle, void* pointer) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT(); + window->userPointer = pointer; +} + +GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return window->userPointer; +} + +GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* handle, + GLFWwindowposfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWwindowposfun, window->callbacks.pos, cbfun); + return cbfun; +} + +GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* handle, + GLFWwindowsizefun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWwindowsizefun, window->callbacks.size, cbfun); + return cbfun; +} + +GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* handle, + GLFWwindowclosefun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWwindowclosefun, window->callbacks.close, cbfun); + return cbfun; +} + +GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* handle, + GLFWwindowrefreshfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWwindowrefreshfun, window->callbacks.refresh, cbfun); + return cbfun; +} + +GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* handle, + GLFWwindowfocusfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWwindowfocusfun, window->callbacks.focus, cbfun); + return cbfun; +} + +GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* handle, + GLFWwindowiconifyfun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWwindowiconifyfun, window->callbacks.iconify, cbfun); + return cbfun; +} + +GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* handle, + GLFWwindowmaximizefun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWwindowmaximizefun, window->callbacks.maximize, cbfun); + return cbfun; +} + +GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* handle, + GLFWframebuffersizefun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWframebuffersizefun, window->callbacks.fbsize, cbfun); + return cbfun; +} + +GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* handle, + GLFWwindowcontentscalefun cbfun) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + assert(window != NULL); + + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + _GLFW_SWAP(GLFWwindowcontentscalefun, window->callbacks.scale, cbfun); + return cbfun; +} + +GLFWAPI void glfwPollEvents(void) +{ + _GLFW_REQUIRE_INIT(); + _glfw.platform.pollEvents(); +} + +GLFWAPI void glfwWaitEvents(void) +{ + _GLFW_REQUIRE_INIT(); + _glfw.platform.waitEvents(); +} + +GLFWAPI void glfwWaitEventsTimeout(double timeout) +{ + _GLFW_REQUIRE_INIT(); + assert(timeout == timeout); + assert(timeout >= 0.0); + assert(timeout <= DBL_MAX); + + if (timeout != timeout || timeout < 0.0 || timeout > DBL_MAX) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid time %f", timeout); + return; + } + + _glfw.platform.waitEventsTimeout(timeout); +} + +GLFWAPI void glfwPostEmptyEvent(void) +{ + _GLFW_REQUIRE_INIT(); + _glfw.platform.postEmptyEvent(); +} + diff --git a/lib/glfw/src/wl_init.c b/lib/glfw/src/wl_init.c new file mode 100644 index 0000000..4e6b429 --- /dev/null +++ b/lib/glfw/src/wl_init.c @@ -0,0 +1,797 @@ +//======================================================================== +// GLFW 3.4 Wayland - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2014 Jonas Ådahl +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_WAYLAND) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wayland-client-protocol.h" +#include "wayland-xdg-shell-client-protocol.h" +#include "wayland-xdg-decoration-client-protocol.h" +#include "wayland-viewporter-client-protocol.h" +#include "wayland-relative-pointer-unstable-v1-client-protocol.h" +#include "wayland-pointer-constraints-unstable-v1-client-protocol.h" +#include "wayland-idle-inhibit-unstable-v1-client-protocol.h" + +// NOTE: Versions of wayland-scanner prior to 1.17.91 named every global array of +// wl_interface pointers 'types', making it impossible to combine several unmodified +// private-code files into a single compilation unit +// HACK: We override this name with a macro for each file, allowing them to coexist + +#define types _glfw_wayland_types +#include "wayland-client-protocol-code.h" +#undef types + +#define types _glfw_xdg_shell_types +#include "wayland-xdg-shell-client-protocol-code.h" +#undef types + +#define types _glfw_xdg_decoration_types +#include "wayland-xdg-decoration-client-protocol-code.h" +#undef types + +#define types _glfw_viewporter_types +#include "wayland-viewporter-client-protocol-code.h" +#undef types + +#define types _glfw_relative_pointer_types +#include "wayland-relative-pointer-unstable-v1-client-protocol-code.h" +#undef types + +#define types _glfw_pointer_constraints_types +#include "wayland-pointer-constraints-unstable-v1-client-protocol-code.h" +#undef types + +#define types _glfw_idle_inhibit_types +#include "wayland-idle-inhibit-unstable-v1-client-protocol-code.h" +#undef types + +static void wmBaseHandlePing(void* userData, + struct xdg_wm_base* wmBase, + uint32_t serial) +{ + xdg_wm_base_pong(wmBase, serial); +} + +static const struct xdg_wm_base_listener wmBaseListener = +{ + wmBaseHandlePing +}; + +static void registryHandleGlobal(void* userData, + struct wl_registry* registry, + uint32_t name, + const char* interface, + uint32_t version) +{ + if (strcmp(interface, "wl_compositor") == 0) + { + _glfw.wl.compositorVersion = _glfw_min(3, version); + _glfw.wl.compositor = + wl_registry_bind(registry, name, &wl_compositor_interface, + _glfw.wl.compositorVersion); + } + else if (strcmp(interface, "wl_subcompositor") == 0) + { + _glfw.wl.subcompositor = + wl_registry_bind(registry, name, &wl_subcompositor_interface, 1); + } + else if (strcmp(interface, "wl_shm") == 0) + { + _glfw.wl.shm = + wl_registry_bind(registry, name, &wl_shm_interface, 1); + } + else if (strcmp(interface, "wl_output") == 0) + { + _glfwAddOutputWayland(name, version); + } + else if (strcmp(interface, "wl_seat") == 0) + { + if (!_glfw.wl.seat) + { + _glfw.wl.seatVersion = _glfw_min(4, version); + _glfw.wl.seat = + wl_registry_bind(registry, name, &wl_seat_interface, + _glfw.wl.seatVersion); + _glfwAddSeatListenerWayland(_glfw.wl.seat); + } + } + else if (strcmp(interface, "wl_data_device_manager") == 0) + { + if (!_glfw.wl.dataDeviceManager) + { + _glfw.wl.dataDeviceManager = + wl_registry_bind(registry, name, + &wl_data_device_manager_interface, 1); + } + } + else if (strcmp(interface, "xdg_wm_base") == 0) + { + _glfw.wl.wmBase = + wl_registry_bind(registry, name, &xdg_wm_base_interface, 1); + xdg_wm_base_add_listener(_glfw.wl.wmBase, &wmBaseListener, NULL); + } + else if (strcmp(interface, "zxdg_decoration_manager_v1") == 0) + { + _glfw.wl.decorationManager = + wl_registry_bind(registry, name, + &zxdg_decoration_manager_v1_interface, + 1); + } + else if (strcmp(interface, "wp_viewporter") == 0) + { + _glfw.wl.viewporter = + wl_registry_bind(registry, name, &wp_viewporter_interface, 1); + } + else if (strcmp(interface, "zwp_relative_pointer_manager_v1") == 0) + { + _glfw.wl.relativePointerManager = + wl_registry_bind(registry, name, + &zwp_relative_pointer_manager_v1_interface, + 1); + } + else if (strcmp(interface, "zwp_pointer_constraints_v1") == 0) + { + _glfw.wl.pointerConstraints = + wl_registry_bind(registry, name, + &zwp_pointer_constraints_v1_interface, + 1); + } + else if (strcmp(interface, "zwp_idle_inhibit_manager_v1") == 0) + { + _glfw.wl.idleInhibitManager = + wl_registry_bind(registry, name, + &zwp_idle_inhibit_manager_v1_interface, + 1); + } +} + +static void registryHandleGlobalRemove(void* userData, + struct wl_registry* registry, + uint32_t name) +{ + for (int i = 0; i < _glfw.monitorCount; ++i) + { + _GLFWmonitor* monitor = _glfw.monitors[i]; + if (monitor->wl.name == name) + { + _glfwInputMonitor(monitor, GLFW_DISCONNECTED, 0); + return; + } + } +} + + +static const struct wl_registry_listener registryListener = +{ + registryHandleGlobal, + registryHandleGlobalRemove +}; + +// Create key code translation tables +// +static void createKeyTables(void) +{ + memset(_glfw.wl.keycodes, -1, sizeof(_glfw.wl.keycodes)); + memset(_glfw.wl.scancodes, -1, sizeof(_glfw.wl.scancodes)); + + _glfw.wl.keycodes[KEY_GRAVE] = GLFW_KEY_GRAVE_ACCENT; + _glfw.wl.keycodes[KEY_1] = GLFW_KEY_1; + _glfw.wl.keycodes[KEY_2] = GLFW_KEY_2; + _glfw.wl.keycodes[KEY_3] = GLFW_KEY_3; + _glfw.wl.keycodes[KEY_4] = GLFW_KEY_4; + _glfw.wl.keycodes[KEY_5] = GLFW_KEY_5; + _glfw.wl.keycodes[KEY_6] = GLFW_KEY_6; + _glfw.wl.keycodes[KEY_7] = GLFW_KEY_7; + _glfw.wl.keycodes[KEY_8] = GLFW_KEY_8; + _glfw.wl.keycodes[KEY_9] = GLFW_KEY_9; + _glfw.wl.keycodes[KEY_0] = GLFW_KEY_0; + _glfw.wl.keycodes[KEY_SPACE] = GLFW_KEY_SPACE; + _glfw.wl.keycodes[KEY_MINUS] = GLFW_KEY_MINUS; + _glfw.wl.keycodes[KEY_EQUAL] = GLFW_KEY_EQUAL; + _glfw.wl.keycodes[KEY_Q] = GLFW_KEY_Q; + _glfw.wl.keycodes[KEY_W] = GLFW_KEY_W; + _glfw.wl.keycodes[KEY_E] = GLFW_KEY_E; + _glfw.wl.keycodes[KEY_R] = GLFW_KEY_R; + _glfw.wl.keycodes[KEY_T] = GLFW_KEY_T; + _glfw.wl.keycodes[KEY_Y] = GLFW_KEY_Y; + _glfw.wl.keycodes[KEY_U] = GLFW_KEY_U; + _glfw.wl.keycodes[KEY_I] = GLFW_KEY_I; + _glfw.wl.keycodes[KEY_O] = GLFW_KEY_O; + _glfw.wl.keycodes[KEY_P] = GLFW_KEY_P; + _glfw.wl.keycodes[KEY_LEFTBRACE] = GLFW_KEY_LEFT_BRACKET; + _glfw.wl.keycodes[KEY_RIGHTBRACE] = GLFW_KEY_RIGHT_BRACKET; + _glfw.wl.keycodes[KEY_A] = GLFW_KEY_A; + _glfw.wl.keycodes[KEY_S] = GLFW_KEY_S; + _glfw.wl.keycodes[KEY_D] = GLFW_KEY_D; + _glfw.wl.keycodes[KEY_F] = GLFW_KEY_F; + _glfw.wl.keycodes[KEY_G] = GLFW_KEY_G; + _glfw.wl.keycodes[KEY_H] = GLFW_KEY_H; + _glfw.wl.keycodes[KEY_J] = GLFW_KEY_J; + _glfw.wl.keycodes[KEY_K] = GLFW_KEY_K; + _glfw.wl.keycodes[KEY_L] = GLFW_KEY_L; + _glfw.wl.keycodes[KEY_SEMICOLON] = GLFW_KEY_SEMICOLON; + _glfw.wl.keycodes[KEY_APOSTROPHE] = GLFW_KEY_APOSTROPHE; + _glfw.wl.keycodes[KEY_Z] = GLFW_KEY_Z; + _glfw.wl.keycodes[KEY_X] = GLFW_KEY_X; + _glfw.wl.keycodes[KEY_C] = GLFW_KEY_C; + _glfw.wl.keycodes[KEY_V] = GLFW_KEY_V; + _glfw.wl.keycodes[KEY_B] = GLFW_KEY_B; + _glfw.wl.keycodes[KEY_N] = GLFW_KEY_N; + _glfw.wl.keycodes[KEY_M] = GLFW_KEY_M; + _glfw.wl.keycodes[KEY_COMMA] = GLFW_KEY_COMMA; + _glfw.wl.keycodes[KEY_DOT] = GLFW_KEY_PERIOD; + _glfw.wl.keycodes[KEY_SLASH] = GLFW_KEY_SLASH; + _glfw.wl.keycodes[KEY_BACKSLASH] = GLFW_KEY_BACKSLASH; + _glfw.wl.keycodes[KEY_ESC] = GLFW_KEY_ESCAPE; + _glfw.wl.keycodes[KEY_TAB] = GLFW_KEY_TAB; + _glfw.wl.keycodes[KEY_LEFTSHIFT] = GLFW_KEY_LEFT_SHIFT; + _glfw.wl.keycodes[KEY_RIGHTSHIFT] = GLFW_KEY_RIGHT_SHIFT; + _glfw.wl.keycodes[KEY_LEFTCTRL] = GLFW_KEY_LEFT_CONTROL; + _glfw.wl.keycodes[KEY_RIGHTCTRL] = GLFW_KEY_RIGHT_CONTROL; + _glfw.wl.keycodes[KEY_LEFTALT] = GLFW_KEY_LEFT_ALT; + _glfw.wl.keycodes[KEY_RIGHTALT] = GLFW_KEY_RIGHT_ALT; + _glfw.wl.keycodes[KEY_LEFTMETA] = GLFW_KEY_LEFT_SUPER; + _glfw.wl.keycodes[KEY_RIGHTMETA] = GLFW_KEY_RIGHT_SUPER; + _glfw.wl.keycodes[KEY_COMPOSE] = GLFW_KEY_MENU; + _glfw.wl.keycodes[KEY_NUMLOCK] = GLFW_KEY_NUM_LOCK; + _glfw.wl.keycodes[KEY_CAPSLOCK] = GLFW_KEY_CAPS_LOCK; + _glfw.wl.keycodes[KEY_PRINT] = GLFW_KEY_PRINT_SCREEN; + _glfw.wl.keycodes[KEY_SCROLLLOCK] = GLFW_KEY_SCROLL_LOCK; + _glfw.wl.keycodes[KEY_PAUSE] = GLFW_KEY_PAUSE; + _glfw.wl.keycodes[KEY_DELETE] = GLFW_KEY_DELETE; + _glfw.wl.keycodes[KEY_BACKSPACE] = GLFW_KEY_BACKSPACE; + _glfw.wl.keycodes[KEY_ENTER] = GLFW_KEY_ENTER; + _glfw.wl.keycodes[KEY_HOME] = GLFW_KEY_HOME; + _glfw.wl.keycodes[KEY_END] = GLFW_KEY_END; + _glfw.wl.keycodes[KEY_PAGEUP] = GLFW_KEY_PAGE_UP; + _glfw.wl.keycodes[KEY_PAGEDOWN] = GLFW_KEY_PAGE_DOWN; + _glfw.wl.keycodes[KEY_INSERT] = GLFW_KEY_INSERT; + _glfw.wl.keycodes[KEY_LEFT] = GLFW_KEY_LEFT; + _glfw.wl.keycodes[KEY_RIGHT] = GLFW_KEY_RIGHT; + _glfw.wl.keycodes[KEY_DOWN] = GLFW_KEY_DOWN; + _glfw.wl.keycodes[KEY_UP] = GLFW_KEY_UP; + _glfw.wl.keycodes[KEY_F1] = GLFW_KEY_F1; + _glfw.wl.keycodes[KEY_F2] = GLFW_KEY_F2; + _glfw.wl.keycodes[KEY_F3] = GLFW_KEY_F3; + _glfw.wl.keycodes[KEY_F4] = GLFW_KEY_F4; + _glfw.wl.keycodes[KEY_F5] = GLFW_KEY_F5; + _glfw.wl.keycodes[KEY_F6] = GLFW_KEY_F6; + _glfw.wl.keycodes[KEY_F7] = GLFW_KEY_F7; + _glfw.wl.keycodes[KEY_F8] = GLFW_KEY_F8; + _glfw.wl.keycodes[KEY_F9] = GLFW_KEY_F9; + _glfw.wl.keycodes[KEY_F10] = GLFW_KEY_F10; + _glfw.wl.keycodes[KEY_F11] = GLFW_KEY_F11; + _glfw.wl.keycodes[KEY_F12] = GLFW_KEY_F12; + _glfw.wl.keycodes[KEY_F13] = GLFW_KEY_F13; + _glfw.wl.keycodes[KEY_F14] = GLFW_KEY_F14; + _glfw.wl.keycodes[KEY_F15] = GLFW_KEY_F15; + _glfw.wl.keycodes[KEY_F16] = GLFW_KEY_F16; + _glfw.wl.keycodes[KEY_F17] = GLFW_KEY_F17; + _glfw.wl.keycodes[KEY_F18] = GLFW_KEY_F18; + _glfw.wl.keycodes[KEY_F19] = GLFW_KEY_F19; + _glfw.wl.keycodes[KEY_F20] = GLFW_KEY_F20; + _glfw.wl.keycodes[KEY_F21] = GLFW_KEY_F21; + _glfw.wl.keycodes[KEY_F22] = GLFW_KEY_F22; + _glfw.wl.keycodes[KEY_F23] = GLFW_KEY_F23; + _glfw.wl.keycodes[KEY_F24] = GLFW_KEY_F24; + _glfw.wl.keycodes[KEY_KPSLASH] = GLFW_KEY_KP_DIVIDE; + _glfw.wl.keycodes[KEY_KPASTERISK] = GLFW_KEY_KP_MULTIPLY; + _glfw.wl.keycodes[KEY_KPMINUS] = GLFW_KEY_KP_SUBTRACT; + _glfw.wl.keycodes[KEY_KPPLUS] = GLFW_KEY_KP_ADD; + _glfw.wl.keycodes[KEY_KP0] = GLFW_KEY_KP_0; + _glfw.wl.keycodes[KEY_KP1] = GLFW_KEY_KP_1; + _glfw.wl.keycodes[KEY_KP2] = GLFW_KEY_KP_2; + _glfw.wl.keycodes[KEY_KP3] = GLFW_KEY_KP_3; + _glfw.wl.keycodes[KEY_KP4] = GLFW_KEY_KP_4; + _glfw.wl.keycodes[KEY_KP5] = GLFW_KEY_KP_5; + _glfw.wl.keycodes[KEY_KP6] = GLFW_KEY_KP_6; + _glfw.wl.keycodes[KEY_KP7] = GLFW_KEY_KP_7; + _glfw.wl.keycodes[KEY_KP8] = GLFW_KEY_KP_8; + _glfw.wl.keycodes[KEY_KP9] = GLFW_KEY_KP_9; + _glfw.wl.keycodes[KEY_KPDOT] = GLFW_KEY_KP_DECIMAL; + _glfw.wl.keycodes[KEY_KPEQUAL] = GLFW_KEY_KP_EQUAL; + _glfw.wl.keycodes[KEY_KPENTER] = GLFW_KEY_KP_ENTER; + _glfw.wl.keycodes[KEY_102ND] = GLFW_KEY_WORLD_2; + + for (int scancode = 0; scancode < 256; scancode++) + { + if (_glfw.wl.keycodes[scancode] > 0) + _glfw.wl.scancodes[_glfw.wl.keycodes[scancode]] = scancode; + } +} + +static GLFWbool loadCursorTheme(void) +{ + int cursorSize = 32; + + const char* sizeString = getenv("XCURSOR_SIZE"); + if (sizeString) + { + errno = 0; + const long cursorSizeLong = strtol(sizeString, NULL, 10); + if (errno == 0 && cursorSizeLong > 0 && cursorSizeLong < INT_MAX) + cursorSize = (int) cursorSizeLong; + } + + const char* themeName = getenv("XCURSOR_THEME"); + + _glfw.wl.cursorTheme = wl_cursor_theme_load(themeName, cursorSize, _glfw.wl.shm); + if (!_glfw.wl.cursorTheme) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to load default cursor theme"); + return GLFW_FALSE; + } + + // If this happens to be NULL, we just fallback to the scale=1 version. + _glfw.wl.cursorThemeHiDPI = + wl_cursor_theme_load(themeName, cursorSize * 2, _glfw.wl.shm); + + _glfw.wl.cursorSurface = wl_compositor_create_surface(_glfw.wl.compositor); + _glfw.wl.cursorTimerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK); + return GLFW_TRUE; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwConnectWayland(int platformID, _GLFWplatform* platform) +{ + const _GLFWplatform wayland = + { + GLFW_PLATFORM_WAYLAND, + _glfwInitWayland, + _glfwTerminateWayland, + _glfwGetCursorPosWayland, + _glfwSetCursorPosWayland, + _glfwSetCursorModeWayland, + _glfwSetRawMouseMotionWayland, + _glfwRawMouseMotionSupportedWayland, + _glfwCreateCursorWayland, + _glfwCreateStandardCursorWayland, + _glfwDestroyCursorWayland, + _glfwSetCursorWayland, + _glfwGetScancodeNameWayland, + _glfwGetKeyScancodeWayland, + _glfwSetClipboardStringWayland, + _glfwGetClipboardStringWayland, +#if defined(_GLFW_LINUX_JOYSTICK) + _glfwInitJoysticksLinux, + _glfwTerminateJoysticksLinux, + _glfwPollJoystickLinux, + _glfwGetMappingNameLinux, + _glfwUpdateGamepadGUIDLinux, +#else + _glfwInitJoysticksNull, + _glfwTerminateJoysticksNull, + _glfwPollJoystickNull, + _glfwGetMappingNameNull, + _glfwUpdateGamepadGUIDNull, +#endif + _glfwFreeMonitorWayland, + _glfwGetMonitorPosWayland, + _glfwGetMonitorContentScaleWayland, + _glfwGetMonitorWorkareaWayland, + _glfwGetVideoModesWayland, + _glfwGetVideoModeWayland, + _glfwGetGammaRampWayland, + _glfwSetGammaRampWayland, + _glfwCreateWindowWayland, + _glfwDestroyWindowWayland, + _glfwSetWindowTitleWayland, + _glfwSetWindowIconWayland, + _glfwGetWindowPosWayland, + _glfwSetWindowPosWayland, + _glfwGetWindowSizeWayland, + _glfwSetWindowSizeWayland, + _glfwSetWindowSizeLimitsWayland, + _glfwSetWindowAspectRatioWayland, + _glfwGetFramebufferSizeWayland, + _glfwGetWindowFrameSizeWayland, + _glfwGetWindowContentScaleWayland, + _glfwIconifyWindowWayland, + _glfwRestoreWindowWayland, + _glfwMaximizeWindowWayland, + _glfwShowWindowWayland, + _glfwHideWindowWayland, + _glfwRequestWindowAttentionWayland, + _glfwFocusWindowWayland, + _glfwSetWindowMonitorWayland, + _glfwWindowFocusedWayland, + _glfwWindowIconifiedWayland, + _glfwWindowVisibleWayland, + _glfwWindowMaximizedWayland, + _glfwWindowHoveredWayland, + _glfwFramebufferTransparentWayland, + _glfwGetWindowOpacityWayland, + _glfwSetWindowResizableWayland, + _glfwSetWindowDecoratedWayland, + _glfwSetWindowFloatingWayland, + _glfwSetWindowOpacityWayland, + _glfwSetWindowMousePassthroughWayland, + _glfwPollEventsWayland, + _glfwWaitEventsWayland, + _glfwWaitEventsTimeoutWayland, + _glfwPostEmptyEventWayland, + _glfwGetEGLPlatformWayland, + _glfwGetEGLNativeDisplayWayland, + _glfwGetEGLNativeWindowWayland, + _glfwGetRequiredInstanceExtensionsWayland, + _glfwGetPhysicalDevicePresentationSupportWayland, + _glfwCreateWindowSurfaceWayland, + }; + + void* module = _glfwPlatformLoadModule("libwayland-client.so.0"); + if (!module) + { + if (platformID == GLFW_PLATFORM_WAYLAND) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to load libwayland-client"); + } + + return GLFW_FALSE; + } + + PFN_wl_display_connect wl_display_connect = (PFN_wl_display_connect) + _glfwPlatformGetModuleSymbol(module, "wl_display_connect"); + if (!wl_display_connect) + { + if (platformID == GLFW_PLATFORM_WAYLAND) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to load libwayland-client entry point"); + } + + _glfwPlatformFreeModule(module); + return GLFW_FALSE; + } + + struct wl_display* display = wl_display_connect(NULL); + if (!display) + { + if (platformID == GLFW_PLATFORM_WAYLAND) + _glfwInputError(GLFW_PLATFORM_ERROR, "Wayland: Failed to connect to display"); + + _glfwPlatformFreeModule(module); + return GLFW_FALSE; + } + + _glfw.wl.display = display; + _glfw.wl.client.handle = module; + + *platform = wayland; + return GLFW_TRUE; +} + +int _glfwInitWayland(void) +{ + // These must be set before any failure checks + _glfw.wl.keyRepeatTimerfd = -1; + _glfw.wl.cursorTimerfd = -1; + + _glfw.wl.client.display_flush = (PFN_wl_display_flush) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_flush"); + _glfw.wl.client.display_cancel_read = (PFN_wl_display_cancel_read) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_cancel_read"); + _glfw.wl.client.display_dispatch_pending = (PFN_wl_display_dispatch_pending) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_dispatch_pending"); + _glfw.wl.client.display_read_events = (PFN_wl_display_read_events) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_read_events"); + _glfw.wl.client.display_disconnect = (PFN_wl_display_disconnect) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_disconnect"); + _glfw.wl.client.display_roundtrip = (PFN_wl_display_roundtrip) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_roundtrip"); + _glfw.wl.client.display_get_fd = (PFN_wl_display_get_fd) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_get_fd"); + _glfw.wl.client.display_prepare_read = (PFN_wl_display_prepare_read) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_prepare_read"); + _glfw.wl.client.proxy_marshal = (PFN_wl_proxy_marshal) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_marshal"); + _glfw.wl.client.proxy_add_listener = (PFN_wl_proxy_add_listener) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_add_listener"); + _glfw.wl.client.proxy_destroy = (PFN_wl_proxy_destroy) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_destroy"); + _glfw.wl.client.proxy_marshal_constructor = (PFN_wl_proxy_marshal_constructor) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_marshal_constructor"); + _glfw.wl.client.proxy_marshal_constructor_versioned = (PFN_wl_proxy_marshal_constructor_versioned) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_marshal_constructor_versioned"); + _glfw.wl.client.proxy_get_user_data = (PFN_wl_proxy_get_user_data) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_get_user_data"); + _glfw.wl.client.proxy_set_user_data = (PFN_wl_proxy_set_user_data) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_set_user_data"); + _glfw.wl.client.proxy_get_version = (PFN_wl_proxy_get_version) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_get_version"); + _glfw.wl.client.proxy_marshal_flags = (PFN_wl_proxy_marshal_flags) + _glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_marshal_flags"); + + if (!_glfw.wl.client.display_flush || + !_glfw.wl.client.display_cancel_read || + !_glfw.wl.client.display_dispatch_pending || + !_glfw.wl.client.display_read_events || + !_glfw.wl.client.display_disconnect || + !_glfw.wl.client.display_roundtrip || + !_glfw.wl.client.display_get_fd || + !_glfw.wl.client.display_prepare_read || + !_glfw.wl.client.proxy_marshal || + !_glfw.wl.client.proxy_add_listener || + !_glfw.wl.client.proxy_destroy || + !_glfw.wl.client.proxy_marshal_constructor || + !_glfw.wl.client.proxy_marshal_constructor_versioned || + !_glfw.wl.client.proxy_get_user_data || + !_glfw.wl.client.proxy_set_user_data) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to load libwayland-client entry point"); + return GLFW_FALSE; + } + + _glfw.wl.cursor.handle = _glfwPlatformLoadModule("libwayland-cursor.so.0"); + if (!_glfw.wl.cursor.handle) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to load libwayland-cursor"); + return GLFW_FALSE; + } + + _glfw.wl.cursor.theme_load = (PFN_wl_cursor_theme_load) + _glfwPlatformGetModuleSymbol(_glfw.wl.cursor.handle, "wl_cursor_theme_load"); + _glfw.wl.cursor.theme_destroy = (PFN_wl_cursor_theme_destroy) + _glfwPlatformGetModuleSymbol(_glfw.wl.cursor.handle, "wl_cursor_theme_destroy"); + _glfw.wl.cursor.theme_get_cursor = (PFN_wl_cursor_theme_get_cursor) + _glfwPlatformGetModuleSymbol(_glfw.wl.cursor.handle, "wl_cursor_theme_get_cursor"); + _glfw.wl.cursor.image_get_buffer = (PFN_wl_cursor_image_get_buffer) + _glfwPlatformGetModuleSymbol(_glfw.wl.cursor.handle, "wl_cursor_image_get_buffer"); + + _glfw.wl.egl.handle = _glfwPlatformLoadModule("libwayland-egl.so.1"); + if (!_glfw.wl.egl.handle) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to load libwayland-egl"); + return GLFW_FALSE; + } + + _glfw.wl.egl.window_create = (PFN_wl_egl_window_create) + _glfwPlatformGetModuleSymbol(_glfw.wl.egl.handle, "wl_egl_window_create"); + _glfw.wl.egl.window_destroy = (PFN_wl_egl_window_destroy) + _glfwPlatformGetModuleSymbol(_glfw.wl.egl.handle, "wl_egl_window_destroy"); + _glfw.wl.egl.window_resize = (PFN_wl_egl_window_resize) + _glfwPlatformGetModuleSymbol(_glfw.wl.egl.handle, "wl_egl_window_resize"); + + _glfw.wl.xkb.handle = _glfwPlatformLoadModule("libxkbcommon.so.0"); + if (!_glfw.wl.xkb.handle) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to load libxkbcommon"); + return GLFW_FALSE; + } + + _glfw.wl.xkb.context_new = (PFN_xkb_context_new) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_context_new"); + _glfw.wl.xkb.context_unref = (PFN_xkb_context_unref) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_context_unref"); + _glfw.wl.xkb.keymap_new_from_string = (PFN_xkb_keymap_new_from_string) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_keymap_new_from_string"); + _glfw.wl.xkb.keymap_unref = (PFN_xkb_keymap_unref) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_keymap_unref"); + _glfw.wl.xkb.keymap_mod_get_index = (PFN_xkb_keymap_mod_get_index) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_keymap_mod_get_index"); + _glfw.wl.xkb.keymap_key_repeats = (PFN_xkb_keymap_key_repeats) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_keymap_key_repeats"); + _glfw.wl.xkb.keymap_key_get_syms_by_level = (PFN_xkb_keymap_key_get_syms_by_level) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_keymap_key_get_syms_by_level"); + _glfw.wl.xkb.state_new = (PFN_xkb_state_new) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_state_new"); + _glfw.wl.xkb.state_unref = (PFN_xkb_state_unref) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_state_unref"); + _glfw.wl.xkb.state_key_get_syms = (PFN_xkb_state_key_get_syms) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_state_key_get_syms"); + _glfw.wl.xkb.state_update_mask = (PFN_xkb_state_update_mask) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_state_update_mask"); + _glfw.wl.xkb.state_key_get_layout = (PFN_xkb_state_key_get_layout) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_state_key_get_layout"); + _glfw.wl.xkb.state_mod_index_is_active = (PFN_xkb_state_mod_index_is_active) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_state_mod_index_is_active"); + _glfw.wl.xkb.compose_table_new_from_locale = (PFN_xkb_compose_table_new_from_locale) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_compose_table_new_from_locale"); + _glfw.wl.xkb.compose_table_unref = (PFN_xkb_compose_table_unref) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_compose_table_unref"); + _glfw.wl.xkb.compose_state_new = (PFN_xkb_compose_state_new) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_compose_state_new"); + _glfw.wl.xkb.compose_state_unref = (PFN_xkb_compose_state_unref) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_compose_state_unref"); + _glfw.wl.xkb.compose_state_feed = (PFN_xkb_compose_state_feed) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_compose_state_feed"); + _glfw.wl.xkb.compose_state_get_status = (PFN_xkb_compose_state_get_status) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_compose_state_get_status"); + _glfw.wl.xkb.compose_state_get_one_sym = (PFN_xkb_compose_state_get_one_sym) + _glfwPlatformGetModuleSymbol(_glfw.wl.xkb.handle, "xkb_compose_state_get_one_sym"); + + _glfw.wl.registry = wl_display_get_registry(_glfw.wl.display); + wl_registry_add_listener(_glfw.wl.registry, ®istryListener, NULL); + + createKeyTables(); + + _glfw.wl.xkb.context = xkb_context_new(0); + if (!_glfw.wl.xkb.context) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to initialize xkb context"); + return GLFW_FALSE; + } + + // Sync so we got all registry objects + wl_display_roundtrip(_glfw.wl.display); + + // Sync so we got all initial output events + wl_display_roundtrip(_glfw.wl.display); + +#ifdef WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION + if (_glfw.wl.seatVersion >= WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION) + { + _glfw.wl.keyRepeatTimerfd = + timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK); + } +#endif + + if (!_glfw.wl.wmBase) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to find xdg-shell in your compositor"); + return GLFW_FALSE; + } + + if (!_glfw.wl.shm) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to find wl_shm in your compositor"); + return GLFW_FALSE; + } + + if (!loadCursorTheme()) + return GLFW_FALSE; + + if (_glfw.wl.seat && _glfw.wl.dataDeviceManager) + { + _glfw.wl.dataDevice = + wl_data_device_manager_get_data_device(_glfw.wl.dataDeviceManager, + _glfw.wl.seat); + _glfwAddDataDeviceListenerWayland(_glfw.wl.dataDevice); + } + + return GLFW_TRUE; +} + +void _glfwTerminateWayland(void) +{ + _glfwTerminateEGL(); + _glfwTerminateOSMesa(); + + if (_glfw.wl.egl.handle) + { + _glfwPlatformFreeModule(_glfw.wl.egl.handle); + _glfw.wl.egl.handle = NULL; + } + + if (_glfw.wl.xkb.composeState) + xkb_compose_state_unref(_glfw.wl.xkb.composeState); + if (_glfw.wl.xkb.keymap) + xkb_keymap_unref(_glfw.wl.xkb.keymap); + if (_glfw.wl.xkb.state) + xkb_state_unref(_glfw.wl.xkb.state); + if (_glfw.wl.xkb.context) + xkb_context_unref(_glfw.wl.xkb.context); + if (_glfw.wl.xkb.handle) + { + _glfwPlatformFreeModule(_glfw.wl.xkb.handle); + _glfw.wl.xkb.handle = NULL; + } + + if (_glfw.wl.cursorTheme) + wl_cursor_theme_destroy(_glfw.wl.cursorTheme); + if (_glfw.wl.cursorThemeHiDPI) + wl_cursor_theme_destroy(_glfw.wl.cursorThemeHiDPI); + if (_glfw.wl.cursor.handle) + { + _glfwPlatformFreeModule(_glfw.wl.cursor.handle); + _glfw.wl.cursor.handle = NULL; + } + + for (unsigned int i = 0; i < _glfw.wl.offerCount; i++) + wl_data_offer_destroy(_glfw.wl.offers[i].offer); + + _glfw_free(_glfw.wl.offers); + + if (_glfw.wl.cursorSurface) + wl_surface_destroy(_glfw.wl.cursorSurface); + if (_glfw.wl.subcompositor) + wl_subcompositor_destroy(_glfw.wl.subcompositor); + if (_glfw.wl.compositor) + wl_compositor_destroy(_glfw.wl.compositor); + if (_glfw.wl.shm) + wl_shm_destroy(_glfw.wl.shm); + if (_glfw.wl.viewporter) + wp_viewporter_destroy(_glfw.wl.viewporter); + if (_glfw.wl.decorationManager) + zxdg_decoration_manager_v1_destroy(_glfw.wl.decorationManager); + if (_glfw.wl.wmBase) + xdg_wm_base_destroy(_glfw.wl.wmBase); + if (_glfw.wl.selectionOffer) + wl_data_offer_destroy(_glfw.wl.selectionOffer); + if (_glfw.wl.dragOffer) + wl_data_offer_destroy(_glfw.wl.dragOffer); + if (_glfw.wl.selectionSource) + wl_data_source_destroy(_glfw.wl.selectionSource); + if (_glfw.wl.dataDevice) + wl_data_device_destroy(_glfw.wl.dataDevice); + if (_glfw.wl.dataDeviceManager) + wl_data_device_manager_destroy(_glfw.wl.dataDeviceManager); + if (_glfw.wl.pointer) + wl_pointer_destroy(_glfw.wl.pointer); + if (_glfw.wl.keyboard) + wl_keyboard_destroy(_glfw.wl.keyboard); + if (_glfw.wl.seat) + wl_seat_destroy(_glfw.wl.seat); + if (_glfw.wl.relativePointerManager) + zwp_relative_pointer_manager_v1_destroy(_glfw.wl.relativePointerManager); + if (_glfw.wl.pointerConstraints) + zwp_pointer_constraints_v1_destroy(_glfw.wl.pointerConstraints); + if (_glfw.wl.idleInhibitManager) + zwp_idle_inhibit_manager_v1_destroy(_glfw.wl.idleInhibitManager); + if (_glfw.wl.registry) + wl_registry_destroy(_glfw.wl.registry); + if (_glfw.wl.display) + { + wl_display_flush(_glfw.wl.display); + wl_display_disconnect(_glfw.wl.display); + } + + if (_glfw.wl.keyRepeatTimerfd >= 0) + close(_glfw.wl.keyRepeatTimerfd); + if (_glfw.wl.cursorTimerfd >= 0) + close(_glfw.wl.cursorTimerfd); + + _glfw_free(_glfw.wl.clipboardString); +} + +#endif // _GLFW_WAYLAND + diff --git a/lib/glfw/src/wl_monitor.c b/lib/glfw/src/wl_monitor.c new file mode 100644 index 0000000..3d4fcbb --- /dev/null +++ b/lib/glfw/src/wl_monitor.c @@ -0,0 +1,276 @@ +//======================================================================== +// GLFW 3.4 Wayland - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2014 Jonas Ådahl +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_WAYLAND) + +#include +#include +#include +#include +#include + +#include "wayland-client-protocol.h" + + +static void outputHandleGeometry(void* userData, + struct wl_output* output, + int32_t x, + int32_t y, + int32_t physicalWidth, + int32_t physicalHeight, + int32_t subpixel, + const char* make, + const char* model, + int32_t transform) +{ + struct _GLFWmonitor* monitor = userData; + + monitor->wl.x = x; + monitor->wl.y = y; + monitor->widthMM = physicalWidth; + monitor->heightMM = physicalHeight; + + if (strlen(monitor->name) == 0) + snprintf(monitor->name, sizeof(monitor->name), "%s %s", make, model); +} + +static void outputHandleMode(void* userData, + struct wl_output* output, + uint32_t flags, + int32_t width, + int32_t height, + int32_t refresh) +{ + struct _GLFWmonitor* monitor = userData; + GLFWvidmode mode; + + mode.width = width; + mode.height = height; + mode.redBits = 8; + mode.greenBits = 8; + mode.blueBits = 8; + mode.refreshRate = (int) round(refresh / 1000.0); + + monitor->modeCount++; + monitor->modes = + _glfw_realloc(monitor->modes, monitor->modeCount * sizeof(GLFWvidmode)); + monitor->modes[monitor->modeCount - 1] = mode; + + if (flags & WL_OUTPUT_MODE_CURRENT) + monitor->wl.currentMode = monitor->modeCount - 1; +} + +static void outputHandleDone(void* userData, struct wl_output* output) +{ + struct _GLFWmonitor* monitor = userData; + + if (monitor->widthMM <= 0 || monitor->heightMM <= 0) + { + // If Wayland does not provide a physical size, assume the default 96 DPI + const GLFWvidmode* mode = &monitor->modes[monitor->wl.currentMode]; + monitor->widthMM = (int) (mode->width * 25.4f / 96.f); + monitor->heightMM = (int) (mode->height * 25.4f / 96.f); + } + + for (int i = 0; i < _glfw.monitorCount; i++) + { + if (_glfw.monitors[i] == monitor) + return; + } + + _glfwInputMonitor(monitor, GLFW_CONNECTED, _GLFW_INSERT_LAST); +} + +static void outputHandleScale(void* userData, + struct wl_output* output, + int32_t factor) +{ + struct _GLFWmonitor* monitor = userData; + + monitor->wl.scale = factor; + + for (_GLFWwindow* window = _glfw.windowListHead; window; window = window->next) + { + for (int i = 0; i < window->wl.monitorsCount; i++) + { + if (window->wl.monitors[i] == monitor) + { + _glfwUpdateContentScaleWayland(window); + break; + } + } + } +} + +#ifdef WL_OUTPUT_NAME_SINCE_VERSION + +void outputHandleName(void* userData, struct wl_output* wl_output, const char* name) +{ + struct _GLFWmonitor* monitor = userData; + + strncpy(monitor->name, name, sizeof(monitor->name) - 1); +} + +void outputHandleDescription(void* userData, + struct wl_output* wl_output, + const char* description) +{ +} + +#endif // WL_OUTPUT_NAME_SINCE_VERSION + +static const struct wl_output_listener outputListener = +{ + outputHandleGeometry, + outputHandleMode, + outputHandleDone, + outputHandleScale, +#ifdef WL_OUTPUT_NAME_SINCE_VERSION + outputHandleName, + outputHandleDescription, +#endif +}; + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwAddOutputWayland(uint32_t name, uint32_t version) +{ + if (version < 2) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Unsupported output interface version"); + return; + } + +#ifdef WL_OUTPUT_NAME_SINCE_VERSION + version = _glfw_min(version, WL_OUTPUT_NAME_SINCE_VERSION); +#else + version = 2; +#endif + + struct wl_output* output = wl_registry_bind(_glfw.wl.registry, + name, + &wl_output_interface, + version); + if (!output) + return; + + // The actual name of this output will be set in the geometry handler + _GLFWmonitor* monitor = _glfwAllocMonitor("", 0, 0); + monitor->wl.scale = 1; + monitor->wl.output = output; + monitor->wl.name = name; + + wl_output_add_listener(output, &outputListener, monitor); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwFreeMonitorWayland(_GLFWmonitor* monitor) +{ + if (monitor->wl.output) + wl_output_destroy(monitor->wl.output); +} + +void _glfwGetMonitorPosWayland(_GLFWmonitor* monitor, int* xpos, int* ypos) +{ + if (xpos) + *xpos = monitor->wl.x; + if (ypos) + *ypos = monitor->wl.y; +} + +void _glfwGetMonitorContentScaleWayland(_GLFWmonitor* monitor, + float* xscale, float* yscale) +{ + if (xscale) + *xscale = (float) monitor->wl.scale; + if (yscale) + *yscale = (float) monitor->wl.scale; +} + +void _glfwGetMonitorWorkareaWayland(_GLFWmonitor* monitor, + int* xpos, int* ypos, + int* width, int* height) +{ + if (xpos) + *xpos = monitor->wl.x; + if (ypos) + *ypos = monitor->wl.y; + if (width) + *width = monitor->modes[monitor->wl.currentMode].width; + if (height) + *height = monitor->modes[monitor->wl.currentMode].height; +} + +GLFWvidmode* _glfwGetVideoModesWayland(_GLFWmonitor* monitor, int* found) +{ + *found = monitor->modeCount; + return monitor->modes; +} + +void _glfwGetVideoModeWayland(_GLFWmonitor* monitor, GLFWvidmode* mode) +{ + *mode = monitor->modes[monitor->wl.currentMode]; +} + +GLFWbool _glfwGetGammaRampWayland(_GLFWmonitor* monitor, GLFWgammaramp* ramp) +{ + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: Gamma ramp access is not available"); + return GLFW_FALSE; +} + +void _glfwSetGammaRampWayland(_GLFWmonitor* monitor, const GLFWgammaramp* ramp) +{ + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: Gamma ramp access is not available"); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + return monitor->wl.output; +} + +#endif // _GLFW_WAYLAND + diff --git a/lib/glfw/src/wl_platform.h b/lib/glfw/src/wl_platform.h new file mode 100644 index 0000000..238e1ed --- /dev/null +++ b/lib/glfw/src/wl_platform.h @@ -0,0 +1,521 @@ +//======================================================================== +// GLFW 3.4 Wayland - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2014 Jonas Ådahl +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include +#include +#include + +typedef VkFlags VkWaylandSurfaceCreateFlagsKHR; + +typedef struct VkWaylandSurfaceCreateInfoKHR +{ + VkStructureType sType; + const void* pNext; + VkWaylandSurfaceCreateFlagsKHR flags; + struct wl_display* display; + struct wl_surface* surface; +} VkWaylandSurfaceCreateInfoKHR; + +typedef VkResult (APIENTRY *PFN_vkCreateWaylandSurfaceKHR)(VkInstance,const VkWaylandSurfaceCreateInfoKHR*,const VkAllocationCallbacks*,VkSurfaceKHR*); +typedef VkBool32 (APIENTRY *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice,uint32_t,struct wl_display*); + +#include "xkb_unicode.h" +#include "posix_poll.h" + +typedef int (* PFN_wl_display_flush)(struct wl_display* display); +typedef void (* PFN_wl_display_cancel_read)(struct wl_display* display); +typedef int (* PFN_wl_display_dispatch_pending)(struct wl_display* display); +typedef int (* PFN_wl_display_read_events)(struct wl_display* display); +typedef struct wl_display* (* PFN_wl_display_connect)(const char*); +typedef void (* PFN_wl_display_disconnect)(struct wl_display*); +typedef int (* PFN_wl_display_roundtrip)(struct wl_display*); +typedef int (* PFN_wl_display_get_fd)(struct wl_display*); +typedef int (* PFN_wl_display_prepare_read)(struct wl_display*); +typedef void (* PFN_wl_proxy_marshal)(struct wl_proxy*,uint32_t,...); +typedef int (* PFN_wl_proxy_add_listener)(struct wl_proxy*,void(**)(void),void*); +typedef void (* PFN_wl_proxy_destroy)(struct wl_proxy*); +typedef struct wl_proxy* (* PFN_wl_proxy_marshal_constructor)(struct wl_proxy*,uint32_t,const struct wl_interface*,...); +typedef struct wl_proxy* (* PFN_wl_proxy_marshal_constructor_versioned)(struct wl_proxy*,uint32_t,const struct wl_interface*,uint32_t,...); +typedef void* (* PFN_wl_proxy_get_user_data)(struct wl_proxy*); +typedef void (* PFN_wl_proxy_set_user_data)(struct wl_proxy*,void*); +typedef uint32_t (* PFN_wl_proxy_get_version)(struct wl_proxy*); +typedef struct wl_proxy* (* PFN_wl_proxy_marshal_flags)(struct wl_proxy*,uint32_t,const struct wl_interface*,uint32_t,uint32_t,...); +#define wl_display_flush _glfw.wl.client.display_flush +#define wl_display_cancel_read _glfw.wl.client.display_cancel_read +#define wl_display_dispatch_pending _glfw.wl.client.display_dispatch_pending +#define wl_display_read_events _glfw.wl.client.display_read_events +#define wl_display_disconnect _glfw.wl.client.display_disconnect +#define wl_display_roundtrip _glfw.wl.client.display_roundtrip +#define wl_display_get_fd _glfw.wl.client.display_get_fd +#define wl_display_prepare_read _glfw.wl.client.display_prepare_read +#define wl_proxy_marshal _glfw.wl.client.proxy_marshal +#define wl_proxy_add_listener _glfw.wl.client.proxy_add_listener +#define wl_proxy_destroy _glfw.wl.client.proxy_destroy +#define wl_proxy_marshal_constructor _glfw.wl.client.proxy_marshal_constructor +#define wl_proxy_marshal_constructor_versioned _glfw.wl.client.proxy_marshal_constructor_versioned +#define wl_proxy_get_user_data _glfw.wl.client.proxy_get_user_data +#define wl_proxy_set_user_data _glfw.wl.client.proxy_set_user_data +#define wl_proxy_get_version _glfw.wl.client.proxy_get_version +#define wl_proxy_marshal_flags _glfw.wl.client.proxy_marshal_flags + +struct wl_shm; + +#define wl_display_interface _glfw_wl_display_interface +#define wl_subcompositor_interface _glfw_wl_subcompositor_interface +#define wl_compositor_interface _glfw_wl_compositor_interface +#define wl_shm_interface _glfw_wl_shm_interface +#define wl_data_device_manager_interface _glfw_wl_data_device_manager_interface +#define wl_shell_interface _glfw_wl_shell_interface +#define wl_buffer_interface _glfw_wl_buffer_interface +#define wl_callback_interface _glfw_wl_callback_interface +#define wl_data_device_interface _glfw_wl_data_device_interface +#define wl_data_offer_interface _glfw_wl_data_offer_interface +#define wl_data_source_interface _glfw_wl_data_source_interface +#define wl_keyboard_interface _glfw_wl_keyboard_interface +#define wl_output_interface _glfw_wl_output_interface +#define wl_pointer_interface _glfw_wl_pointer_interface +#define wl_region_interface _glfw_wl_region_interface +#define wl_registry_interface _glfw_wl_registry_interface +#define wl_seat_interface _glfw_wl_seat_interface +#define wl_shell_surface_interface _glfw_wl_shell_surface_interface +#define wl_shm_pool_interface _glfw_wl_shm_pool_interface +#define wl_subsurface_interface _glfw_wl_subsurface_interface +#define wl_surface_interface _glfw_wl_surface_interface +#define wl_touch_interface _glfw_wl_touch_interface +#define zwp_idle_inhibitor_v1_interface _glfw_zwp_idle_inhibitor_v1_interface +#define zwp_idle_inhibit_manager_v1_interface _glfw_zwp_idle_inhibit_manager_v1_interface +#define zwp_confined_pointer_v1_interface _glfw_zwp_confined_pointer_v1_interface +#define zwp_locked_pointer_v1_interface _glfw_zwp_locked_pointer_v1_interface +#define zwp_pointer_constraints_v1_interface _glfw_zwp_pointer_constraints_v1_interface +#define zwp_relative_pointer_v1_interface _glfw_zwp_relative_pointer_v1_interface +#define zwp_relative_pointer_manager_v1_interface _glfw_zwp_relative_pointer_manager_v1_interface +#define wp_viewport_interface _glfw_wp_viewport_interface +#define wp_viewporter_interface _glfw_wp_viewporter_interface +#define xdg_toplevel_interface _glfw_xdg_toplevel_interface +#define zxdg_toplevel_decoration_v1_interface _glfw_zxdg_toplevel_decoration_v1_interface +#define zxdg_decoration_manager_v1_interface _glfw_zxdg_decoration_manager_v1_interface +#define xdg_popup_interface _glfw_xdg_popup_interface +#define xdg_positioner_interface _glfw_xdg_positioner_interface +#define xdg_surface_interface _glfw_xdg_surface_interface +#define xdg_toplevel_interface _glfw_xdg_toplevel_interface +#define xdg_wm_base_interface _glfw_xdg_wm_base_interface + +#define GLFW_WAYLAND_WINDOW_STATE _GLFWwindowWayland wl; +#define GLFW_WAYLAND_LIBRARY_WINDOW_STATE _GLFWlibraryWayland wl; +#define GLFW_WAYLAND_MONITOR_STATE _GLFWmonitorWayland wl; +#define GLFW_WAYLAND_CURSOR_STATE _GLFWcursorWayland wl; + +struct wl_cursor_image { + uint32_t width; + uint32_t height; + uint32_t hotspot_x; + uint32_t hotspot_y; + uint32_t delay; +}; +struct wl_cursor { + unsigned int image_count; + struct wl_cursor_image** images; + char* name; +}; +typedef struct wl_cursor_theme* (* PFN_wl_cursor_theme_load)(const char*, int, struct wl_shm*); +typedef void (* PFN_wl_cursor_theme_destroy)(struct wl_cursor_theme*); +typedef struct wl_cursor* (* PFN_wl_cursor_theme_get_cursor)(struct wl_cursor_theme*, const char*); +typedef struct wl_buffer* (* PFN_wl_cursor_image_get_buffer)(struct wl_cursor_image*); +#define wl_cursor_theme_load _glfw.wl.cursor.theme_load +#define wl_cursor_theme_destroy _glfw.wl.cursor.theme_destroy +#define wl_cursor_theme_get_cursor _glfw.wl.cursor.theme_get_cursor +#define wl_cursor_image_get_buffer _glfw.wl.cursor.image_get_buffer + +typedef struct wl_egl_window* (* PFN_wl_egl_window_create)(struct wl_surface*, int, int); +typedef void (* PFN_wl_egl_window_destroy)(struct wl_egl_window*); +typedef void (* PFN_wl_egl_window_resize)(struct wl_egl_window*, int, int, int, int); +#define wl_egl_window_create _glfw.wl.egl.window_create +#define wl_egl_window_destroy _glfw.wl.egl.window_destroy +#define wl_egl_window_resize _glfw.wl.egl.window_resize + +typedef struct xkb_context* (* PFN_xkb_context_new)(enum xkb_context_flags); +typedef void (* PFN_xkb_context_unref)(struct xkb_context*); +typedef struct xkb_keymap* (* PFN_xkb_keymap_new_from_string)(struct xkb_context*, const char*, enum xkb_keymap_format, enum xkb_keymap_compile_flags); +typedef void (* PFN_xkb_keymap_unref)(struct xkb_keymap*); +typedef xkb_mod_index_t (* PFN_xkb_keymap_mod_get_index)(struct xkb_keymap*, const char*); +typedef int (* PFN_xkb_keymap_key_repeats)(struct xkb_keymap*, xkb_keycode_t); +typedef int (* PFN_xkb_keymap_key_get_syms_by_level)(struct xkb_keymap*,xkb_keycode_t,xkb_layout_index_t,xkb_level_index_t,const xkb_keysym_t**); +typedef struct xkb_state* (* PFN_xkb_state_new)(struct xkb_keymap*); +typedef void (* PFN_xkb_state_unref)(struct xkb_state*); +typedef int (* PFN_xkb_state_key_get_syms)(struct xkb_state*, xkb_keycode_t, const xkb_keysym_t**); +typedef enum xkb_state_component (* PFN_xkb_state_update_mask)(struct xkb_state*, xkb_mod_mask_t, xkb_mod_mask_t, xkb_mod_mask_t, xkb_layout_index_t, xkb_layout_index_t, xkb_layout_index_t); +typedef xkb_layout_index_t (* PFN_xkb_state_key_get_layout)(struct xkb_state*,xkb_keycode_t); +typedef int (* PFN_xkb_state_mod_index_is_active)(struct xkb_state*,xkb_mod_index_t,enum xkb_state_component); +#define xkb_context_new _glfw.wl.xkb.context_new +#define xkb_context_unref _glfw.wl.xkb.context_unref +#define xkb_keymap_new_from_string _glfw.wl.xkb.keymap_new_from_string +#define xkb_keymap_unref _glfw.wl.xkb.keymap_unref +#define xkb_keymap_mod_get_index _glfw.wl.xkb.keymap_mod_get_index +#define xkb_keymap_key_repeats _glfw.wl.xkb.keymap_key_repeats +#define xkb_keymap_key_get_syms_by_level _glfw.wl.xkb.keymap_key_get_syms_by_level +#define xkb_state_new _glfw.wl.xkb.state_new +#define xkb_state_unref _glfw.wl.xkb.state_unref +#define xkb_state_key_get_syms _glfw.wl.xkb.state_key_get_syms +#define xkb_state_update_mask _glfw.wl.xkb.state_update_mask +#define xkb_state_key_get_layout _glfw.wl.xkb.state_key_get_layout +#define xkb_state_mod_index_is_active _glfw.wl.xkb.state_mod_index_is_active + +typedef struct xkb_compose_table* (* PFN_xkb_compose_table_new_from_locale)(struct xkb_context*, const char*, enum xkb_compose_compile_flags); +typedef void (* PFN_xkb_compose_table_unref)(struct xkb_compose_table*); +typedef struct xkb_compose_state* (* PFN_xkb_compose_state_new)(struct xkb_compose_table*, enum xkb_compose_state_flags); +typedef void (* PFN_xkb_compose_state_unref)(struct xkb_compose_state*); +typedef enum xkb_compose_feed_result (* PFN_xkb_compose_state_feed)(struct xkb_compose_state*, xkb_keysym_t); +typedef enum xkb_compose_status (* PFN_xkb_compose_state_get_status)(struct xkb_compose_state*); +typedef xkb_keysym_t (* PFN_xkb_compose_state_get_one_sym)(struct xkb_compose_state*); +#define xkb_compose_table_new_from_locale _glfw.wl.xkb.compose_table_new_from_locale +#define xkb_compose_table_unref _glfw.wl.xkb.compose_table_unref +#define xkb_compose_state_new _glfw.wl.xkb.compose_state_new +#define xkb_compose_state_unref _glfw.wl.xkb.compose_state_unref +#define xkb_compose_state_feed _glfw.wl.xkb.compose_state_feed +#define xkb_compose_state_get_status _glfw.wl.xkb.compose_state_get_status +#define xkb_compose_state_get_one_sym _glfw.wl.xkb.compose_state_get_one_sym + +typedef enum _GLFWdecorationSideWayland +{ + mainWindow, + topDecoration, + leftDecoration, + rightDecoration, + bottomDecoration, +} _GLFWdecorationSideWayland; + +typedef struct _GLFWdecorationWayland +{ + struct wl_surface* surface; + struct wl_subsurface* subsurface; + struct wp_viewport* viewport; +} _GLFWdecorationWayland; + +typedef struct _GLFWofferWayland +{ + struct wl_data_offer* offer; + GLFWbool text_plain_utf8; + GLFWbool text_uri_list; +} _GLFWofferWayland; + +// Wayland-specific per-window data +// +typedef struct _GLFWwindowWayland +{ + int width, height; + GLFWbool visible; + GLFWbool maximized; + GLFWbool activated; + GLFWbool fullscreen; + GLFWbool hovered; + GLFWbool transparent; + struct wl_surface* surface; + struct wl_callback* callback; + + struct { + struct wl_egl_window* window; + } egl; + + struct { + int width, height; + GLFWbool maximized; + GLFWbool iconified; + GLFWbool activated; + GLFWbool fullscreen; + } pending; + + struct { + struct xdg_surface* surface; + struct xdg_toplevel* toplevel; + struct zxdg_toplevel_decoration_v1* decoration; + uint32_t decorationMode; + } xdg; + + _GLFWcursor* currentCursor; + double cursorPosX, cursorPosY; + + char* title; + char* appId; + + // We need to track the monitors the window spans on to calculate the + // optimal scaling factor. + int scale; + _GLFWmonitor** monitors; + int monitorsCount; + int monitorsSize; + + struct zwp_relative_pointer_v1* relativePointer; + struct zwp_locked_pointer_v1* lockedPointer; + struct zwp_confined_pointer_v1* confinedPointer; + + struct zwp_idle_inhibitor_v1* idleInhibitor; + + struct { + struct wl_buffer* buffer; + _GLFWdecorationWayland top, left, right, bottom; + _GLFWdecorationSideWayland focus; + } decorations; +} _GLFWwindowWayland; + +// Wayland-specific global data +// +typedef struct _GLFWlibraryWayland +{ + struct wl_display* display; + struct wl_registry* registry; + struct wl_compositor* compositor; + struct wl_subcompositor* subcompositor; + struct wl_shm* shm; + struct wl_seat* seat; + struct wl_pointer* pointer; + struct wl_keyboard* keyboard; + struct wl_data_device_manager* dataDeviceManager; + struct wl_data_device* dataDevice; + struct xdg_wm_base* wmBase; + struct zxdg_decoration_manager_v1* decorationManager; + struct wp_viewporter* viewporter; + struct zwp_relative_pointer_manager_v1* relativePointerManager; + struct zwp_pointer_constraints_v1* pointerConstraints; + struct zwp_idle_inhibit_manager_v1* idleInhibitManager; + + _GLFWofferWayland* offers; + unsigned int offerCount; + + struct wl_data_offer* selectionOffer; + struct wl_data_source* selectionSource; + + struct wl_data_offer* dragOffer; + _GLFWwindow* dragFocus; + uint32_t dragSerial; + + int compositorVersion; + int seatVersion; + + struct wl_cursor_theme* cursorTheme; + struct wl_cursor_theme* cursorThemeHiDPI; + struct wl_surface* cursorSurface; + const char* cursorPreviousName; + int cursorTimerfd; + uint32_t serial; + uint32_t pointerEnterSerial; + + int keyRepeatTimerfd; + int32_t keyRepeatRate; + int32_t keyRepeatDelay; + int keyRepeatScancode; + + char* clipboardString; + short int keycodes[256]; + short int scancodes[GLFW_KEY_LAST + 1]; + char keynames[GLFW_KEY_LAST + 1][5]; + + struct { + void* handle; + struct xkb_context* context; + struct xkb_keymap* keymap; + struct xkb_state* state; + + struct xkb_compose_state* composeState; + + xkb_mod_index_t controlIndex; + xkb_mod_index_t altIndex; + xkb_mod_index_t shiftIndex; + xkb_mod_index_t superIndex; + xkb_mod_index_t capsLockIndex; + xkb_mod_index_t numLockIndex; + unsigned int modifiers; + + PFN_xkb_context_new context_new; + PFN_xkb_context_unref context_unref; + PFN_xkb_keymap_new_from_string keymap_new_from_string; + PFN_xkb_keymap_unref keymap_unref; + PFN_xkb_keymap_mod_get_index keymap_mod_get_index; + PFN_xkb_keymap_key_repeats keymap_key_repeats; + PFN_xkb_keymap_key_get_syms_by_level keymap_key_get_syms_by_level; + PFN_xkb_state_new state_new; + PFN_xkb_state_unref state_unref; + PFN_xkb_state_key_get_syms state_key_get_syms; + PFN_xkb_state_update_mask state_update_mask; + PFN_xkb_state_key_get_layout state_key_get_layout; + PFN_xkb_state_mod_index_is_active state_mod_index_is_active; + + PFN_xkb_compose_table_new_from_locale compose_table_new_from_locale; + PFN_xkb_compose_table_unref compose_table_unref; + PFN_xkb_compose_state_new compose_state_new; + PFN_xkb_compose_state_unref compose_state_unref; + PFN_xkb_compose_state_feed compose_state_feed; + PFN_xkb_compose_state_get_status compose_state_get_status; + PFN_xkb_compose_state_get_one_sym compose_state_get_one_sym; + } xkb; + + _GLFWwindow* pointerFocus; + _GLFWwindow* keyboardFocus; + + struct { + void* handle; + PFN_wl_display_flush display_flush; + PFN_wl_display_cancel_read display_cancel_read; + PFN_wl_display_dispatch_pending display_dispatch_pending; + PFN_wl_display_read_events display_read_events; + PFN_wl_display_disconnect display_disconnect; + PFN_wl_display_roundtrip display_roundtrip; + PFN_wl_display_get_fd display_get_fd; + PFN_wl_display_prepare_read display_prepare_read; + PFN_wl_proxy_marshal proxy_marshal; + PFN_wl_proxy_add_listener proxy_add_listener; + PFN_wl_proxy_destroy proxy_destroy; + PFN_wl_proxy_marshal_constructor proxy_marshal_constructor; + PFN_wl_proxy_marshal_constructor_versioned proxy_marshal_constructor_versioned; + PFN_wl_proxy_get_user_data proxy_get_user_data; + PFN_wl_proxy_set_user_data proxy_set_user_data; + PFN_wl_proxy_get_version proxy_get_version; + PFN_wl_proxy_marshal_flags proxy_marshal_flags; + } client; + + struct { + void* handle; + + PFN_wl_cursor_theme_load theme_load; + PFN_wl_cursor_theme_destroy theme_destroy; + PFN_wl_cursor_theme_get_cursor theme_get_cursor; + PFN_wl_cursor_image_get_buffer image_get_buffer; + } cursor; + + struct { + void* handle; + + PFN_wl_egl_window_create window_create; + PFN_wl_egl_window_destroy window_destroy; + PFN_wl_egl_window_resize window_resize; + } egl; +} _GLFWlibraryWayland; + +// Wayland-specific per-monitor data +// +typedef struct _GLFWmonitorWayland +{ + struct wl_output* output; + uint32_t name; + int currentMode; + + int x; + int y; + int scale; +} _GLFWmonitorWayland; + +// Wayland-specific per-cursor data +// +typedef struct _GLFWcursorWayland +{ + struct wl_cursor* cursor; + struct wl_cursor* cursorHiDPI; + struct wl_buffer* buffer; + int width, height; + int xhot, yhot; + int currentImage; +} _GLFWcursorWayland; + +GLFWbool _glfwConnectWayland(int platformID, _GLFWplatform* platform); +int _glfwInitWayland(void); +void _glfwTerminateWayland(void); + +GLFWbool _glfwCreateWindowWayland(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig); +void _glfwDestroyWindowWayland(_GLFWwindow* window); +void _glfwSetWindowTitleWayland(_GLFWwindow* window, const char* title); +void _glfwSetWindowIconWayland(_GLFWwindow* window, int count, const GLFWimage* images); +void _glfwGetWindowPosWayland(_GLFWwindow* window, int* xpos, int* ypos); +void _glfwSetWindowPosWayland(_GLFWwindow* window, int xpos, int ypos); +void _glfwGetWindowSizeWayland(_GLFWwindow* window, int* width, int* height); +void _glfwSetWindowSizeWayland(_GLFWwindow* window, int width, int height); +void _glfwSetWindowSizeLimitsWayland(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); +void _glfwSetWindowAspectRatioWayland(_GLFWwindow* window, int numer, int denom); +void _glfwGetFramebufferSizeWayland(_GLFWwindow* window, int* width, int* height); +void _glfwGetWindowFrameSizeWayland(_GLFWwindow* window, int* left, int* top, int* right, int* bottom); +void _glfwGetWindowContentScaleWayland(_GLFWwindow* window, float* xscale, float* yscale); +void _glfwIconifyWindowWayland(_GLFWwindow* window); +void _glfwRestoreWindowWayland(_GLFWwindow* window); +void _glfwMaximizeWindowWayland(_GLFWwindow* window); +void _glfwShowWindowWayland(_GLFWwindow* window); +void _glfwHideWindowWayland(_GLFWwindow* window); +void _glfwRequestWindowAttentionWayland(_GLFWwindow* window); +void _glfwFocusWindowWayland(_GLFWwindow* window); +void _glfwSetWindowMonitorWayland(_GLFWwindow* window, _GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); +GLFWbool _glfwWindowFocusedWayland(_GLFWwindow* window); +GLFWbool _glfwWindowIconifiedWayland(_GLFWwindow* window); +GLFWbool _glfwWindowVisibleWayland(_GLFWwindow* window); +GLFWbool _glfwWindowMaximizedWayland(_GLFWwindow* window); +GLFWbool _glfwWindowHoveredWayland(_GLFWwindow* window); +GLFWbool _glfwFramebufferTransparentWayland(_GLFWwindow* window); +void _glfwSetWindowResizableWayland(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowDecoratedWayland(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowFloatingWayland(_GLFWwindow* window, GLFWbool enabled); +float _glfwGetWindowOpacityWayland(_GLFWwindow* window); +void _glfwSetWindowOpacityWayland(_GLFWwindow* window, float opacity); +void _glfwSetWindowMousePassthroughWayland(_GLFWwindow* window, GLFWbool enabled); + +void _glfwSetRawMouseMotionWayland(_GLFWwindow* window, GLFWbool enabled); +GLFWbool _glfwRawMouseMotionSupportedWayland(void); + +void _glfwPollEventsWayland(void); +void _glfwWaitEventsWayland(void); +void _glfwWaitEventsTimeoutWayland(double timeout); +void _glfwPostEmptyEventWayland(void); + +void _glfwGetCursorPosWayland(_GLFWwindow* window, double* xpos, double* ypos); +void _glfwSetCursorPosWayland(_GLFWwindow* window, double xpos, double ypos); +void _glfwSetCursorModeWayland(_GLFWwindow* window, int mode); +const char* _glfwGetScancodeNameWayland(int scancode); +int _glfwGetKeyScancodeWayland(int key); +GLFWbool _glfwCreateCursorWayland(_GLFWcursor* cursor, const GLFWimage* image, int xhot, int yhot); +GLFWbool _glfwCreateStandardCursorWayland(_GLFWcursor* cursor, int shape); +void _glfwDestroyCursorWayland(_GLFWcursor* cursor); +void _glfwSetCursorWayland(_GLFWwindow* window, _GLFWcursor* cursor); +void _glfwSetClipboardStringWayland(const char* string); +const char* _glfwGetClipboardStringWayland(void); + +EGLenum _glfwGetEGLPlatformWayland(EGLint** attribs); +EGLNativeDisplayType _glfwGetEGLNativeDisplayWayland(void); +EGLNativeWindowType _glfwGetEGLNativeWindowWayland(_GLFWwindow* window); + +void _glfwGetRequiredInstanceExtensionsWayland(char** extensions); +GLFWbool _glfwGetPhysicalDevicePresentationSupportWayland(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); +VkResult _glfwCreateWindowSurfaceWayland(VkInstance instance, _GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +void _glfwFreeMonitorWayland(_GLFWmonitor* monitor); +void _glfwGetMonitorPosWayland(_GLFWmonitor* monitor, int* xpos, int* ypos); +void _glfwGetMonitorContentScaleWayland(_GLFWmonitor* monitor, float* xscale, float* yscale); +void _glfwGetMonitorWorkareaWayland(_GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); +GLFWvidmode* _glfwGetVideoModesWayland(_GLFWmonitor* monitor, int* count); +void _glfwGetVideoModeWayland(_GLFWmonitor* monitor, GLFWvidmode* mode); +GLFWbool _glfwGetGammaRampWayland(_GLFWmonitor* monitor, GLFWgammaramp* ramp); +void _glfwSetGammaRampWayland(_GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +void _glfwAddOutputWayland(uint32_t name, uint32_t version); +void _glfwUpdateContentScaleWayland(_GLFWwindow* window); + +void _glfwAddSeatListenerWayland(struct wl_seat* seat); +void _glfwAddDataDeviceListenerWayland(struct wl_data_device* device); + diff --git a/lib/glfw/src/wl_window.c b/lib/glfw/src/wl_window.c new file mode 100644 index 0000000..c4d097b --- /dev/null +++ b/lib/glfw/src/wl_window.c @@ -0,0 +1,2893 @@ +//======================================================================== +// GLFW 3.4 Wayland - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2014 Jonas Ådahl +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#define _GNU_SOURCE + +#include "internal.h" + +#if defined(_GLFW_WAYLAND) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wayland-client-protocol.h" +#include "wayland-xdg-shell-client-protocol.h" +#include "wayland-xdg-decoration-client-protocol.h" +#include "wayland-viewporter-client-protocol.h" +#include "wayland-relative-pointer-unstable-v1-client-protocol.h" +#include "wayland-pointer-constraints-unstable-v1-client-protocol.h" +#include "wayland-idle-inhibit-unstable-v1-client-protocol.h" + +#define GLFW_BORDER_SIZE 4 +#define GLFW_CAPTION_HEIGHT 24 + +static int createTmpfileCloexec(char* tmpname) +{ + int fd; + + fd = mkostemp(tmpname, O_CLOEXEC); + if (fd >= 0) + unlink(tmpname); + + return fd; +} + +/* + * Create a new, unique, anonymous file of the given size, and + * return the file descriptor for it. The file descriptor is set + * CLOEXEC. The file is immediately suitable for mmap()'ing + * the given size at offset zero. + * + * The file should not have a permanent backing store like a disk, + * but may have if XDG_RUNTIME_DIR is not properly implemented in OS. + * + * The file name is deleted from the file system. + * + * The file is suitable for buffer sharing between processes by + * transmitting the file descriptor over Unix sockets using the + * SCM_RIGHTS methods. + * + * posix_fallocate() is used to guarantee that disk space is available + * for the file at the given size. If disk space is insufficient, errno + * is set to ENOSPC. If posix_fallocate() is not supported, program may + * receive SIGBUS on accessing mmap()'ed file contents instead. + */ +static int createAnonymousFile(off_t size) +{ + static const char template[] = "/glfw-shared-XXXXXX"; + const char* path; + char* name; + int fd; + int ret; + +#ifdef HAVE_MEMFD_CREATE + fd = memfd_create("glfw-shared", MFD_CLOEXEC | MFD_ALLOW_SEALING); + if (fd >= 0) + { + // We can add this seal before calling posix_fallocate(), as the file + // is currently zero-sized anyway. + // + // There is also no need to check for the return value, we couldn’t do + // anything with it anyway. + fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL); + } + else +#elif defined(SHM_ANON) + fd = shm_open(SHM_ANON, O_RDWR | O_CLOEXEC, 0600); + if (fd < 0) +#endif + { + path = getenv("XDG_RUNTIME_DIR"); + if (!path) + { + errno = ENOENT; + return -1; + } + + name = _glfw_calloc(strlen(path) + sizeof(template), 1); + strcpy(name, path); + strcat(name, template); + + fd = createTmpfileCloexec(name); + _glfw_free(name); + if (fd < 0) + return -1; + } + +#if defined(SHM_ANON) + // posix_fallocate does not work on SHM descriptors + ret = ftruncate(fd, size); +#else + ret = posix_fallocate(fd, 0, size); +#endif + if (ret != 0) + { + close(fd); + errno = ret; + return -1; + } + return fd; +} + +static struct wl_buffer* createShmBuffer(const GLFWimage* image) +{ + const int stride = image->width * 4; + const int length = image->width * image->height * 4; + + const int fd = createAnonymousFile(length); + if (fd < 0) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create buffer file of size %d: %s", + length, strerror(errno)); + return NULL; + } + + void* data = mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (data == MAP_FAILED) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to map file: %s", strerror(errno)); + close(fd); + return NULL; + } + + struct wl_shm_pool* pool = wl_shm_create_pool(_glfw.wl.shm, fd, length); + + close(fd); + + unsigned char* source = (unsigned char*) image->pixels; + unsigned char* target = data; + for (int i = 0; i < image->width * image->height; i++, source += 4) + { + unsigned int alpha = source[3]; + + *target++ = (unsigned char) ((source[2] * alpha) / 255); + *target++ = (unsigned char) ((source[1] * alpha) / 255); + *target++ = (unsigned char) ((source[0] * alpha) / 255); + *target++ = (unsigned char) alpha; + } + + struct wl_buffer* buffer = + wl_shm_pool_create_buffer(pool, 0, + image->width, + image->height, + stride, WL_SHM_FORMAT_ARGB8888); + munmap(data, length); + wl_shm_pool_destroy(pool); + + return buffer; +} + +static void createFallbackDecoration(_GLFWdecorationWayland* decoration, + struct wl_surface* parent, + struct wl_buffer* buffer, + int x, int y, + int width, int height) +{ + decoration->surface = wl_compositor_create_surface(_glfw.wl.compositor); + decoration->subsurface = + wl_subcompositor_get_subsurface(_glfw.wl.subcompositor, + decoration->surface, parent); + wl_subsurface_set_position(decoration->subsurface, x, y); + decoration->viewport = wp_viewporter_get_viewport(_glfw.wl.viewporter, + decoration->surface); + wp_viewport_set_destination(decoration->viewport, width, height); + wl_surface_attach(decoration->surface, buffer, 0, 0); + + struct wl_region* region = wl_compositor_create_region(_glfw.wl.compositor); + wl_region_add(region, 0, 0, width, height); + wl_surface_set_opaque_region(decoration->surface, region); + wl_surface_commit(decoration->surface); + wl_region_destroy(region); +} + +static void createFallbackDecorations(_GLFWwindow* window) +{ + unsigned char data[] = { 224, 224, 224, 255 }; + const GLFWimage image = { 1, 1, data }; + + if (!_glfw.wl.viewporter) + return; + + if (!window->wl.decorations.buffer) + window->wl.decorations.buffer = createShmBuffer(&image); + if (!window->wl.decorations.buffer) + return; + + createFallbackDecoration(&window->wl.decorations.top, window->wl.surface, + window->wl.decorations.buffer, + 0, -GLFW_CAPTION_HEIGHT, + window->wl.width, GLFW_CAPTION_HEIGHT); + createFallbackDecoration(&window->wl.decorations.left, window->wl.surface, + window->wl.decorations.buffer, + -GLFW_BORDER_SIZE, -GLFW_CAPTION_HEIGHT, + GLFW_BORDER_SIZE, window->wl.height + GLFW_CAPTION_HEIGHT); + createFallbackDecoration(&window->wl.decorations.right, window->wl.surface, + window->wl.decorations.buffer, + window->wl.width, -GLFW_CAPTION_HEIGHT, + GLFW_BORDER_SIZE, window->wl.height + GLFW_CAPTION_HEIGHT); + createFallbackDecoration(&window->wl.decorations.bottom, window->wl.surface, + window->wl.decorations.buffer, + -GLFW_BORDER_SIZE, window->wl.height, + window->wl.width + GLFW_BORDER_SIZE * 2, GLFW_BORDER_SIZE); +} + +static void destroyFallbackDecoration(_GLFWdecorationWayland* decoration) +{ + if (decoration->subsurface) + wl_subsurface_destroy(decoration->subsurface); + if (decoration->surface) + wl_surface_destroy(decoration->surface); + if (decoration->viewport) + wp_viewport_destroy(decoration->viewport); + decoration->surface = NULL; + decoration->subsurface = NULL; + decoration->viewport = NULL; +} + +static void destroyFallbackDecorations(_GLFWwindow* window) +{ + destroyFallbackDecoration(&window->wl.decorations.top); + destroyFallbackDecoration(&window->wl.decorations.left); + destroyFallbackDecoration(&window->wl.decorations.right); + destroyFallbackDecoration(&window->wl.decorations.bottom); +} + +static void xdgDecorationHandleConfigure(void* userData, + struct zxdg_toplevel_decoration_v1* decoration, + uint32_t mode) +{ + _GLFWwindow* window = userData; + + window->wl.xdg.decorationMode = mode; + + if (mode == ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE) + { + if (window->decorated && !window->monitor) + createFallbackDecorations(window); + } + else + destroyFallbackDecorations(window); +} + +static const struct zxdg_toplevel_decoration_v1_listener xdgDecorationListener = +{ + xdgDecorationHandleConfigure, +}; + +// Makes the surface considered as XRGB instead of ARGB. +static void setContentAreaOpaque(_GLFWwindow* window) +{ + struct wl_region* region; + + region = wl_compositor_create_region(_glfw.wl.compositor); + if (!region) + return; + + wl_region_add(region, 0, 0, window->wl.width, window->wl.height); + wl_surface_set_opaque_region(window->wl.surface, region); + wl_region_destroy(region); +} + + +static void resizeWindow(_GLFWwindow* window) +{ + int scale = window->wl.scale; + int scaledWidth = window->wl.width * scale; + int scaledHeight = window->wl.height * scale; + + if (window->wl.egl.window) + wl_egl_window_resize(window->wl.egl.window, scaledWidth, scaledHeight, 0, 0); + if (!window->wl.transparent) + setContentAreaOpaque(window); + _glfwInputFramebufferSize(window, scaledWidth, scaledHeight); + + if (!window->wl.decorations.top.surface) + return; + + wp_viewport_set_destination(window->wl.decorations.top.viewport, + window->wl.width, GLFW_CAPTION_HEIGHT); + wl_surface_commit(window->wl.decorations.top.surface); + + wp_viewport_set_destination(window->wl.decorations.left.viewport, + GLFW_BORDER_SIZE, window->wl.height + GLFW_CAPTION_HEIGHT); + wl_surface_commit(window->wl.decorations.left.surface); + + wl_subsurface_set_position(window->wl.decorations.right.subsurface, + window->wl.width, -GLFW_CAPTION_HEIGHT); + wp_viewport_set_destination(window->wl.decorations.right.viewport, + GLFW_BORDER_SIZE, window->wl.height + GLFW_CAPTION_HEIGHT); + wl_surface_commit(window->wl.decorations.right.surface); + + wl_subsurface_set_position(window->wl.decorations.bottom.subsurface, + -GLFW_BORDER_SIZE, window->wl.height); + wp_viewport_set_destination(window->wl.decorations.bottom.viewport, + window->wl.width + GLFW_BORDER_SIZE * 2, GLFW_BORDER_SIZE); + wl_surface_commit(window->wl.decorations.bottom.surface); +} + +void _glfwUpdateContentScaleWayland(_GLFWwindow* window) +{ + if (_glfw.wl.compositorVersion < WL_SURFACE_SET_BUFFER_SCALE_SINCE_VERSION) + return; + + // Get the scale factor from the highest scale monitor. + int maxScale = 1; + + for (int i = 0; i < window->wl.monitorsCount; i++) + maxScale = _glfw_max(window->wl.monitors[i]->wl.scale, maxScale); + + // Only change the framebuffer size if the scale changed. + if (window->wl.scale != maxScale) + { + window->wl.scale = maxScale; + wl_surface_set_buffer_scale(window->wl.surface, maxScale); + _glfwInputWindowContentScale(window, maxScale, maxScale); + resizeWindow(window); + } +} + +static void surfaceHandleEnter(void* userData, + struct wl_surface* surface, + struct wl_output* output) +{ + _GLFWwindow* window = userData; + _GLFWmonitor* monitor = wl_output_get_user_data(output); + + if (window->wl.monitorsCount + 1 > window->wl.monitorsSize) + { + ++window->wl.monitorsSize; + window->wl.monitors = + _glfw_realloc(window->wl.monitors, + window->wl.monitorsSize * sizeof(_GLFWmonitor*)); + } + + window->wl.monitors[window->wl.monitorsCount++] = monitor; + + _glfwUpdateContentScaleWayland(window); +} + +static void surfaceHandleLeave(void* userData, + struct wl_surface* surface, + struct wl_output* output) +{ + _GLFWwindow* window = userData; + _GLFWmonitor* monitor = wl_output_get_user_data(output); + GLFWbool found = GLFW_FALSE; + + for (int i = 0; i < window->wl.monitorsCount - 1; ++i) + { + if (monitor == window->wl.monitors[i]) + found = GLFW_TRUE; + if (found) + window->wl.monitors[i] = window->wl.monitors[i + 1]; + } + window->wl.monitors[--window->wl.monitorsCount] = NULL; + + _glfwUpdateContentScaleWayland(window); +} + +static const struct wl_surface_listener surfaceListener = +{ + surfaceHandleEnter, + surfaceHandleLeave +}; + +static void setIdleInhibitor(_GLFWwindow* window, GLFWbool enable) +{ + if (enable && !window->wl.idleInhibitor && _glfw.wl.idleInhibitManager) + { + window->wl.idleInhibitor = + zwp_idle_inhibit_manager_v1_create_inhibitor( + _glfw.wl.idleInhibitManager, window->wl.surface); + if (!window->wl.idleInhibitor) + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create idle inhibitor"); + } + else if (!enable && window->wl.idleInhibitor) + { + zwp_idle_inhibitor_v1_destroy(window->wl.idleInhibitor); + window->wl.idleInhibitor = NULL; + } +} + +// Make the specified window and its video mode active on its monitor +// +static void acquireMonitor(_GLFWwindow* window) +{ + if (window->wl.xdg.toplevel) + { + xdg_toplevel_set_fullscreen(window->wl.xdg.toplevel, + window->monitor->wl.output); + } + + setIdleInhibitor(window, GLFW_TRUE); + + if (window->wl.decorations.top.surface) + destroyFallbackDecorations(window); +} + +// Remove the window and restore the original video mode +// +static void releaseMonitor(_GLFWwindow* window) +{ + if (window->wl.xdg.toplevel) + xdg_toplevel_unset_fullscreen(window->wl.xdg.toplevel); + + setIdleInhibitor(window, GLFW_FALSE); + + if (window->wl.xdg.decorationMode != ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE) + { + if (window->decorated) + createFallbackDecorations(window); + } +} + +static void xdgToplevelHandleConfigure(void* userData, + struct xdg_toplevel* toplevel, + int32_t width, + int32_t height, + struct wl_array* states) +{ + _GLFWwindow* window = userData; + uint32_t* state; + + window->wl.pending.activated = GLFW_FALSE; + window->wl.pending.maximized = GLFW_FALSE; + window->wl.pending.fullscreen = GLFW_FALSE; + + wl_array_for_each(state, states) + { + switch (*state) + { + case XDG_TOPLEVEL_STATE_MAXIMIZED: + window->wl.pending.maximized = GLFW_TRUE; + break; + case XDG_TOPLEVEL_STATE_FULLSCREEN: + window->wl.pending.fullscreen = GLFW_TRUE; + break; + case XDG_TOPLEVEL_STATE_RESIZING: + break; + case XDG_TOPLEVEL_STATE_ACTIVATED: + window->wl.pending.activated = GLFW_TRUE; + break; + } + } + + if (width && height) + { + if (window->wl.decorations.top.surface) + { + window->wl.pending.width = _glfw_max(0, width - GLFW_BORDER_SIZE * 2); + window->wl.pending.height = + _glfw_max(0, height - GLFW_BORDER_SIZE - GLFW_CAPTION_HEIGHT); + } + else + { + window->wl.pending.width = width; + window->wl.pending.height = height; + } + } + else + { + window->wl.pending.width = window->wl.width; + window->wl.pending.height = window->wl.height; + } +} + +static void xdgToplevelHandleClose(void* userData, + struct xdg_toplevel* toplevel) +{ + _GLFWwindow* window = userData; + _glfwInputWindowCloseRequest(window); +} + +static const struct xdg_toplevel_listener xdgToplevelListener = +{ + xdgToplevelHandleConfigure, + xdgToplevelHandleClose +}; + +static void xdgSurfaceHandleConfigure(void* userData, + struct xdg_surface* surface, + uint32_t serial) +{ + _GLFWwindow* window = userData; + + xdg_surface_ack_configure(surface, serial); + + if (window->wl.activated != window->wl.pending.activated) + { + window->wl.activated = window->wl.pending.activated; + if (!window->wl.activated) + { + if (window->monitor && window->autoIconify) + xdg_toplevel_set_minimized(window->wl.xdg.toplevel); + } + } + + if (window->wl.maximized != window->wl.pending.maximized) + { + window->wl.maximized = window->wl.pending.maximized; + _glfwInputWindowMaximize(window, window->wl.maximized); + } + + window->wl.fullscreen = window->wl.pending.fullscreen; + + int width = window->wl.pending.width; + int height = window->wl.pending.height; + + if (!window->wl.maximized && !window->wl.fullscreen) + { + if (window->numer != GLFW_DONT_CARE && window->denom != GLFW_DONT_CARE) + { + const float aspectRatio = (float) width / (float) height; + const float targetRatio = (float) window->numer / (float) window->denom; + if (aspectRatio < targetRatio) + height = width / targetRatio; + else if (aspectRatio > targetRatio) + width = height * targetRatio; + } + } + + if (width != window->wl.width || height != window->wl.height) + { + window->wl.width = width; + window->wl.height = height; + resizeWindow(window); + + _glfwInputWindowSize(window, width, height); + + if (window->wl.visible) + _glfwInputWindowDamage(window); + } + + if (!window->wl.visible) + { + // Allow the window to be mapped only if it either has no XDG + // decorations or they have already received a configure event + if (!window->wl.xdg.decoration || window->wl.xdg.decorationMode) + { + window->wl.visible = GLFW_TRUE; + _glfwInputWindowDamage(window); + } + } +} + +static const struct xdg_surface_listener xdgSurfaceListener = +{ + xdgSurfaceHandleConfigure +}; + +static GLFWbool createShellObjects(_GLFWwindow* window) +{ + window->wl.xdg.surface = xdg_wm_base_get_xdg_surface(_glfw.wl.wmBase, + window->wl.surface); + if (!window->wl.xdg.surface) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create xdg-surface for window"); + return GLFW_FALSE; + } + + xdg_surface_add_listener(window->wl.xdg.surface, &xdgSurfaceListener, window); + + window->wl.xdg.toplevel = xdg_surface_get_toplevel(window->wl.xdg.surface); + if (!window->wl.xdg.toplevel) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create xdg-toplevel for window"); + return GLFW_FALSE; + } + + xdg_toplevel_add_listener(window->wl.xdg.toplevel, &xdgToplevelListener, window); + + if (window->wl.appId) + xdg_toplevel_set_app_id(window->wl.xdg.toplevel, window->wl.appId); + + if (window->wl.title) + xdg_toplevel_set_title(window->wl.xdg.toplevel, window->wl.title); + + if (window->monitor) + { + xdg_toplevel_set_fullscreen(window->wl.xdg.toplevel, window->monitor->wl.output); + setIdleInhibitor(window, GLFW_TRUE); + } + else + { + if (window->wl.maximized) + xdg_toplevel_set_maximized(window->wl.xdg.toplevel); + + setIdleInhibitor(window, GLFW_FALSE); + + if (_glfw.wl.decorationManager) + { + window->wl.xdg.decoration = + zxdg_decoration_manager_v1_get_toplevel_decoration( + _glfw.wl.decorationManager, window->wl.xdg.toplevel); + zxdg_toplevel_decoration_v1_add_listener(window->wl.xdg.decoration, + &xdgDecorationListener, + window); + + uint32_t mode; + + if (window->decorated) + mode = ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE; + else + mode = ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE; + + zxdg_toplevel_decoration_v1_set_mode(window->wl.xdg.decoration, mode); + } + else + { + if (window->decorated) + createFallbackDecorations(window); + } + } + + if (window->minwidth != GLFW_DONT_CARE && window->minheight != GLFW_DONT_CARE) + { + int minwidth = window->minwidth; + int minheight = window->minheight; + + if (window->wl.decorations.top.surface) + { + minwidth += GLFW_BORDER_SIZE * 2; + minheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE; + } + + xdg_toplevel_set_min_size(window->wl.xdg.toplevel, minwidth, minheight); + } + + if (window->maxwidth != GLFW_DONT_CARE && window->maxheight != GLFW_DONT_CARE) + { + int maxwidth = window->maxwidth; + int maxheight = window->maxheight; + + if (window->wl.decorations.top.surface) + { + maxwidth += GLFW_BORDER_SIZE * 2; + maxheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE; + } + + xdg_toplevel_set_max_size(window->wl.xdg.toplevel, maxwidth, maxheight); + } + + wl_surface_commit(window->wl.surface); + wl_display_roundtrip(_glfw.wl.display); + + return GLFW_TRUE; +} + +static void destroyShellObjects(_GLFWwindow* window) +{ + destroyFallbackDecorations(window); + + if (window->wl.xdg.decoration) + zxdg_toplevel_decoration_v1_destroy(window->wl.xdg.decoration); + + if (window->wl.xdg.toplevel) + xdg_toplevel_destroy(window->wl.xdg.toplevel); + + if (window->wl.xdg.surface) + xdg_surface_destroy(window->wl.xdg.surface); + + window->wl.xdg.decoration = NULL; + window->wl.xdg.decorationMode = 0; + window->wl.xdg.toplevel = NULL; + window->wl.xdg.surface = NULL; +} + +static GLFWbool createNativeSurface(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWfbconfig* fbconfig) +{ + window->wl.surface = wl_compositor_create_surface(_glfw.wl.compositor); + if (!window->wl.surface) + { + _glfwInputError(GLFW_PLATFORM_ERROR, "Wayland: Failed to create window surface"); + return GLFW_FALSE; + } + + wl_surface_add_listener(window->wl.surface, + &surfaceListener, + window); + + wl_surface_set_user_data(window->wl.surface, window); + + window->wl.width = wndconfig->width; + window->wl.height = wndconfig->height; + window->wl.scale = 1; + window->wl.title = _glfw_strdup(wndconfig->title); + window->wl.appId = _glfw_strdup(wndconfig->wl.appId); + + window->wl.maximized = wndconfig->maximized; + + window->wl.transparent = fbconfig->transparent; + if (!window->wl.transparent) + setContentAreaOpaque(window); + + return GLFW_TRUE; +} + +static void setCursorImage(_GLFWwindow* window, + _GLFWcursorWayland* cursorWayland) +{ + struct itimerspec timer = {0}; + struct wl_cursor* wlCursor = cursorWayland->cursor; + struct wl_cursor_image* image; + struct wl_buffer* buffer; + struct wl_surface* surface = _glfw.wl.cursorSurface; + int scale = 1; + + if (!wlCursor) + buffer = cursorWayland->buffer; + else + { + if (window->wl.scale > 1 && cursorWayland->cursorHiDPI) + { + wlCursor = cursorWayland->cursorHiDPI; + scale = 2; + } + + image = wlCursor->images[cursorWayland->currentImage]; + buffer = wl_cursor_image_get_buffer(image); + if (!buffer) + return; + + timer.it_value.tv_sec = image->delay / 1000; + timer.it_value.tv_nsec = (image->delay % 1000) * 1000000; + timerfd_settime(_glfw.wl.cursorTimerfd, 0, &timer, NULL); + + cursorWayland->width = image->width; + cursorWayland->height = image->height; + cursorWayland->xhot = image->hotspot_x; + cursorWayland->yhot = image->hotspot_y; + } + + wl_pointer_set_cursor(_glfw.wl.pointer, _glfw.wl.pointerEnterSerial, + surface, + cursorWayland->xhot / scale, + cursorWayland->yhot / scale); + wl_surface_set_buffer_scale(surface, scale); + wl_surface_attach(surface, buffer, 0, 0); + wl_surface_damage(surface, 0, 0, + cursorWayland->width, cursorWayland->height); + wl_surface_commit(surface); +} + +static void incrementCursorImage(_GLFWwindow* window) +{ + _GLFWcursor* cursor; + + if (!window || window->wl.decorations.focus != mainWindow) + return; + + cursor = window->wl.currentCursor; + if (cursor && cursor->wl.cursor) + { + cursor->wl.currentImage += 1; + cursor->wl.currentImage %= cursor->wl.cursor->image_count; + setCursorImage(window, &cursor->wl); + } +} + +static GLFWbool flushDisplay(void) +{ + while (wl_display_flush(_glfw.wl.display) == -1) + { + if (errno != EAGAIN) + return GLFW_FALSE; + + struct pollfd fd = { wl_display_get_fd(_glfw.wl.display), POLLOUT }; + + while (poll(&fd, 1, -1) == -1) + { + if (errno != EINTR && errno != EAGAIN) + return GLFW_FALSE; + } + } + + return GLFW_TRUE; +} + +static int translateKey(uint32_t scancode) +{ + if (scancode < sizeof(_glfw.wl.keycodes) / sizeof(_glfw.wl.keycodes[0])) + return _glfw.wl.keycodes[scancode]; + + return GLFW_KEY_UNKNOWN; +} + +static xkb_keysym_t composeSymbol(xkb_keysym_t sym) +{ + if (sym == XKB_KEY_NoSymbol || !_glfw.wl.xkb.composeState) + return sym; + if (xkb_compose_state_feed(_glfw.wl.xkb.composeState, sym) + != XKB_COMPOSE_FEED_ACCEPTED) + return sym; + switch (xkb_compose_state_get_status(_glfw.wl.xkb.composeState)) + { + case XKB_COMPOSE_COMPOSED: + return xkb_compose_state_get_one_sym(_glfw.wl.xkb.composeState); + case XKB_COMPOSE_COMPOSING: + case XKB_COMPOSE_CANCELLED: + return XKB_KEY_NoSymbol; + case XKB_COMPOSE_NOTHING: + default: + return sym; + } +} + +static void inputText(_GLFWwindow* window, uint32_t scancode) +{ + const xkb_keysym_t* keysyms; + const xkb_keycode_t keycode = scancode + 8; + + if (xkb_state_key_get_syms(_glfw.wl.xkb.state, keycode, &keysyms) == 1) + { + const xkb_keysym_t keysym = composeSymbol(keysyms[0]); + const uint32_t codepoint = _glfwKeySym2Unicode(keysym); + if (codepoint != GLFW_INVALID_CODEPOINT) + { + const int mods = _glfw.wl.xkb.modifiers; + const int plain = !(mods & (GLFW_MOD_CONTROL | GLFW_MOD_ALT)); + _glfwInputChar(window, codepoint, mods, plain); + } + } +} + +static void handleEvents(double* timeout) +{ + GLFWbool event = GLFW_FALSE; + struct pollfd fds[] = + { + { wl_display_get_fd(_glfw.wl.display), POLLIN }, + { _glfw.wl.keyRepeatTimerfd, POLLIN }, + { _glfw.wl.cursorTimerfd, POLLIN }, + }; + + while (!event) + { + while (wl_display_prepare_read(_glfw.wl.display) != 0) + wl_display_dispatch_pending(_glfw.wl.display); + + // If an error other than EAGAIN happens, we have likely been disconnected + // from the Wayland session; try to handle that the best we can. + if (!flushDisplay()) + { + wl_display_cancel_read(_glfw.wl.display); + + _GLFWwindow* window = _glfw.windowListHead; + while (window) + { + _glfwInputWindowCloseRequest(window); + window = window->next; + } + + return; + } + + if (!_glfwPollPOSIX(fds, 3, timeout)) + { + wl_display_cancel_read(_glfw.wl.display); + return; + } + + if (fds[0].revents & POLLIN) + { + wl_display_read_events(_glfw.wl.display); + if (wl_display_dispatch_pending(_glfw.wl.display) > 0) + event = GLFW_TRUE; + } + else + wl_display_cancel_read(_glfw.wl.display); + + if (fds[1].revents & POLLIN) + { + uint64_t repeats; + + if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8) + { + for (uint64_t i = 0; i < repeats; i++) + { + _glfwInputKey(_glfw.wl.keyboardFocus, + translateKey(_glfw.wl.keyRepeatScancode), + _glfw.wl.keyRepeatScancode, + GLFW_PRESS, + _glfw.wl.xkb.modifiers); + inputText(_glfw.wl.keyboardFocus, _glfw.wl.keyRepeatScancode); + } + + event = GLFW_TRUE; + } + } + + if (fds[2].revents & POLLIN) + { + uint64_t repeats; + + if (read(_glfw.wl.cursorTimerfd, &repeats, sizeof(repeats)) == 8) + { + incrementCursorImage(_glfw.wl.pointerFocus); + event = GLFW_TRUE; + } + } + } +} + +// Reads the specified data offer as the specified MIME type +// +static char* readDataOfferAsString(struct wl_data_offer* offer, const char* mimeType) +{ + int fds[2]; + + if (pipe2(fds, O_CLOEXEC) == -1) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create pipe for data offer: %s", + strerror(errno)); + return NULL; + } + + wl_data_offer_receive(offer, mimeType, fds[1]); + flushDisplay(); + close(fds[1]); + + char* string = NULL; + size_t size = 0; + size_t length = 0; + + for (;;) + { + const size_t readSize = 4096; + const size_t requiredSize = length + readSize + 1; + if (requiredSize > size) + { + char* longer = _glfw_realloc(string, requiredSize); + if (!longer) + { + _glfwInputError(GLFW_OUT_OF_MEMORY, NULL); + close(fds[0]); + return NULL; + } + + string = longer; + size = requiredSize; + } + + const ssize_t result = read(fds[0], string + length, readSize); + if (result == 0) + break; + else if (result == -1) + { + if (errno == EINTR) + continue; + + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to read from data offer pipe: %s", + strerror(errno)); + close(fds[0]); + return NULL; + } + + length += result; + } + + close(fds[0]); + + string[length] = '\0'; + return string; +} + +static _GLFWwindow* findWindowFromDecorationSurface(struct wl_surface* surface, + _GLFWdecorationSideWayland* which) +{ + _GLFWdecorationSideWayland focus; + _GLFWwindow* window = _glfw.windowListHead; + if (!which) + which = &focus; + while (window) + { + if (surface == window->wl.decorations.top.surface) + { + *which = topDecoration; + break; + } + if (surface == window->wl.decorations.left.surface) + { + *which = leftDecoration; + break; + } + if (surface == window->wl.decorations.right.surface) + { + *which = rightDecoration; + break; + } + if (surface == window->wl.decorations.bottom.surface) + { + *which = bottomDecoration; + break; + } + window = window->next; + } + return window; +} + +static void pointerHandleEnter(void* userData, + struct wl_pointer* pointer, + uint32_t serial, + struct wl_surface* surface, + wl_fixed_t sx, + wl_fixed_t sy) +{ + // Happens in the case we just destroyed the surface. + if (!surface) + return; + + _GLFWdecorationSideWayland focus = mainWindow; + _GLFWwindow* window = wl_surface_get_user_data(surface); + if (!window) + { + window = findWindowFromDecorationSurface(surface, &focus); + if (!window) + return; + } + + window->wl.decorations.focus = focus; + _glfw.wl.serial = serial; + _glfw.wl.pointerEnterSerial = serial; + _glfw.wl.pointerFocus = window; + + window->wl.hovered = GLFW_TRUE; + + _glfwSetCursorWayland(window, window->wl.currentCursor); + _glfwInputCursorEnter(window, GLFW_TRUE); +} + +static void pointerHandleLeave(void* userData, + struct wl_pointer* pointer, + uint32_t serial, + struct wl_surface* surface) +{ + _GLFWwindow* window = _glfw.wl.pointerFocus; + + if (!window) + return; + + window->wl.hovered = GLFW_FALSE; + + _glfw.wl.serial = serial; + _glfw.wl.pointerFocus = NULL; + _glfw.wl.cursorPreviousName = NULL; + _glfwInputCursorEnter(window, GLFW_FALSE); +} + +static void setCursor(_GLFWwindow* window, const char* name) +{ + struct wl_buffer* buffer; + struct wl_cursor* cursor; + struct wl_cursor_image* image; + struct wl_surface* surface = _glfw.wl.cursorSurface; + struct wl_cursor_theme* theme = _glfw.wl.cursorTheme; + int scale = 1; + + if (window->wl.scale > 1 && _glfw.wl.cursorThemeHiDPI) + { + // We only support up to scale=2 for now, since libwayland-cursor + // requires us to load a different theme for each size. + scale = 2; + theme = _glfw.wl.cursorThemeHiDPI; + } + + cursor = wl_cursor_theme_get_cursor(theme, name); + if (!cursor) + { + _glfwInputError(GLFW_CURSOR_UNAVAILABLE, + "Wayland: Standard cursor shape unavailable"); + return; + } + // TODO: handle animated cursors too. + image = cursor->images[0]; + + if (!image) + return; + + buffer = wl_cursor_image_get_buffer(image); + if (!buffer) + return; + wl_pointer_set_cursor(_glfw.wl.pointer, _glfw.wl.pointerEnterSerial, + surface, + image->hotspot_x / scale, + image->hotspot_y / scale); + wl_surface_set_buffer_scale(surface, scale); + wl_surface_attach(surface, buffer, 0, 0); + wl_surface_damage(surface, 0, 0, + image->width, image->height); + wl_surface_commit(surface); + _glfw.wl.cursorPreviousName = name; +} + +static void pointerHandleMotion(void* userData, + struct wl_pointer* pointer, + uint32_t time, + wl_fixed_t sx, + wl_fixed_t sy) +{ + _GLFWwindow* window = _glfw.wl.pointerFocus; + const char* cursorName = NULL; + double x, y; + + if (!window) + return; + + if (window->cursorMode == GLFW_CURSOR_DISABLED) + return; + x = wl_fixed_to_double(sx); + y = wl_fixed_to_double(sy); + window->wl.cursorPosX = x; + window->wl.cursorPosY = y; + + switch (window->wl.decorations.focus) + { + case mainWindow: + _glfw.wl.cursorPreviousName = NULL; + _glfwInputCursorPos(window, x, y); + return; + case topDecoration: + if (y < GLFW_BORDER_SIZE) + cursorName = "n-resize"; + else + cursorName = "left_ptr"; + break; + case leftDecoration: + if (y < GLFW_BORDER_SIZE) + cursorName = "nw-resize"; + else + cursorName = "w-resize"; + break; + case rightDecoration: + if (y < GLFW_BORDER_SIZE) + cursorName = "ne-resize"; + else + cursorName = "e-resize"; + break; + case bottomDecoration: + if (x < GLFW_BORDER_SIZE) + cursorName = "sw-resize"; + else if (x > window->wl.width + GLFW_BORDER_SIZE) + cursorName = "se-resize"; + else + cursorName = "s-resize"; + break; + default: + assert(0); + } + if (_glfw.wl.cursorPreviousName != cursorName) + setCursor(window, cursorName); +} + +static void pointerHandleButton(void* userData, + struct wl_pointer* pointer, + uint32_t serial, + uint32_t time, + uint32_t button, + uint32_t state) +{ + _GLFWwindow* window = _glfw.wl.pointerFocus; + int glfwButton; + uint32_t edges = XDG_TOPLEVEL_RESIZE_EDGE_NONE; + + if (!window) + return; + if (button == BTN_LEFT) + { + switch (window->wl.decorations.focus) + { + case mainWindow: + break; + case topDecoration: + if (window->wl.cursorPosY < GLFW_BORDER_SIZE) + edges = XDG_TOPLEVEL_RESIZE_EDGE_TOP; + else + xdg_toplevel_move(window->wl.xdg.toplevel, _glfw.wl.seat, serial); + break; + case leftDecoration: + if (window->wl.cursorPosY < GLFW_BORDER_SIZE) + edges = XDG_TOPLEVEL_RESIZE_EDGE_TOP_LEFT; + else + edges = XDG_TOPLEVEL_RESIZE_EDGE_LEFT; + break; + case rightDecoration: + if (window->wl.cursorPosY < GLFW_BORDER_SIZE) + edges = XDG_TOPLEVEL_RESIZE_EDGE_TOP_RIGHT; + else + edges = XDG_TOPLEVEL_RESIZE_EDGE_RIGHT; + break; + case bottomDecoration: + if (window->wl.cursorPosX < GLFW_BORDER_SIZE) + edges = XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_LEFT; + else if (window->wl.cursorPosX > window->wl.width + GLFW_BORDER_SIZE) + edges = XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_RIGHT; + else + edges = XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM; + break; + default: + assert(0); + } + if (edges != XDG_TOPLEVEL_RESIZE_EDGE_NONE) + { + xdg_toplevel_resize(window->wl.xdg.toplevel, _glfw.wl.seat, + serial, edges); + return; + } + } + else if (button == BTN_RIGHT) + { + if (window->wl.decorations.focus != mainWindow && window->wl.xdg.toplevel) + { + xdg_toplevel_show_window_menu(window->wl.xdg.toplevel, + _glfw.wl.seat, serial, + window->wl.cursorPosX, + window->wl.cursorPosY); + return; + } + } + + // Don’t pass the button to the user if it was related to a decoration. + if (window->wl.decorations.focus != mainWindow) + return; + + _glfw.wl.serial = serial; + + /* Makes left, right and middle 0, 1 and 2. Overall order follows evdev + * codes. */ + glfwButton = button - BTN_LEFT; + + _glfwInputMouseClick(window, + glfwButton, + state == WL_POINTER_BUTTON_STATE_PRESSED + ? GLFW_PRESS + : GLFW_RELEASE, + _glfw.wl.xkb.modifiers); +} + +static void pointerHandleAxis(void* userData, + struct wl_pointer* pointer, + uint32_t time, + uint32_t axis, + wl_fixed_t value) +{ + _GLFWwindow* window = _glfw.wl.pointerFocus; + double x = 0.0, y = 0.0; + // Wayland scroll events are in pointer motion coordinate space (think two + // finger scroll). The factor 10 is commonly used to convert to "scroll + // step means 1.0. + const double scrollFactor = 1.0 / 10.0; + + if (!window) + return; + + assert(axis == WL_POINTER_AXIS_HORIZONTAL_SCROLL || + axis == WL_POINTER_AXIS_VERTICAL_SCROLL); + + if (axis == WL_POINTER_AXIS_HORIZONTAL_SCROLL) + x = -wl_fixed_to_double(value) * scrollFactor; + else if (axis == WL_POINTER_AXIS_VERTICAL_SCROLL) + y = -wl_fixed_to_double(value) * scrollFactor; + + _glfwInputScroll(window, x, y); +} + +static const struct wl_pointer_listener pointerListener = +{ + pointerHandleEnter, + pointerHandleLeave, + pointerHandleMotion, + pointerHandleButton, + pointerHandleAxis, +}; + +static void keyboardHandleKeymap(void* userData, + struct wl_keyboard* keyboard, + uint32_t format, + int fd, + uint32_t size) +{ + struct xkb_keymap* keymap; + struct xkb_state* state; + struct xkb_compose_table* composeTable; + struct xkb_compose_state* composeState; + + char* mapStr; + const char* locale; + + if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) + { + close(fd); + return; + } + + mapStr = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); + if (mapStr == MAP_FAILED) { + close(fd); + return; + } + + keymap = xkb_keymap_new_from_string(_glfw.wl.xkb.context, + mapStr, + XKB_KEYMAP_FORMAT_TEXT_V1, + 0); + munmap(mapStr, size); + close(fd); + + if (!keymap) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to compile keymap"); + return; + } + + state = xkb_state_new(keymap); + if (!state) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create XKB state"); + xkb_keymap_unref(keymap); + return; + } + + // Look up the preferred locale, falling back to "C" as default. + locale = getenv("LC_ALL"); + if (!locale) + locale = getenv("LC_CTYPE"); + if (!locale) + locale = getenv("LANG"); + if (!locale) + locale = "C"; + + composeTable = + xkb_compose_table_new_from_locale(_glfw.wl.xkb.context, locale, + XKB_COMPOSE_COMPILE_NO_FLAGS); + if (composeTable) + { + composeState = + xkb_compose_state_new(composeTable, XKB_COMPOSE_STATE_NO_FLAGS); + xkb_compose_table_unref(composeTable); + if (composeState) + _glfw.wl.xkb.composeState = composeState; + else + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create XKB compose state"); + } + else + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create XKB compose table"); + } + + xkb_keymap_unref(_glfw.wl.xkb.keymap); + xkb_state_unref(_glfw.wl.xkb.state); + _glfw.wl.xkb.keymap = keymap; + _glfw.wl.xkb.state = state; + + _glfw.wl.xkb.controlIndex = xkb_keymap_mod_get_index(_glfw.wl.xkb.keymap, "Control"); + _glfw.wl.xkb.altIndex = xkb_keymap_mod_get_index(_glfw.wl.xkb.keymap, "Mod1"); + _glfw.wl.xkb.shiftIndex = xkb_keymap_mod_get_index(_glfw.wl.xkb.keymap, "Shift"); + _glfw.wl.xkb.superIndex = xkb_keymap_mod_get_index(_glfw.wl.xkb.keymap, "Mod4"); + _glfw.wl.xkb.capsLockIndex = xkb_keymap_mod_get_index(_glfw.wl.xkb.keymap, "Lock"); + _glfw.wl.xkb.numLockIndex = xkb_keymap_mod_get_index(_glfw.wl.xkb.keymap, "Mod2"); +} + +static void keyboardHandleEnter(void* userData, + struct wl_keyboard* keyboard, + uint32_t serial, + struct wl_surface* surface, + struct wl_array* keys) +{ + // Happens in the case we just destroyed the surface. + if (!surface) + return; + + _GLFWwindow* window = wl_surface_get_user_data(surface); + if (!window) + { + window = findWindowFromDecorationSurface(surface, NULL); + if (!window) + return; + } + + _glfw.wl.serial = serial; + _glfw.wl.keyboardFocus = window; + _glfwInputWindowFocus(window, GLFW_TRUE); +} + +static void keyboardHandleLeave(void* userData, + struct wl_keyboard* keyboard, + uint32_t serial, + struct wl_surface* surface) +{ + _GLFWwindow* window = _glfw.wl.keyboardFocus; + + if (!window) + return; + + struct itimerspec timer = {0}; + timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL); + + _glfw.wl.serial = serial; + _glfw.wl.keyboardFocus = NULL; + _glfwInputWindowFocus(window, GLFW_FALSE); +} + +static void keyboardHandleKey(void* userData, + struct wl_keyboard* keyboard, + uint32_t serial, + uint32_t time, + uint32_t scancode, + uint32_t state) +{ + _GLFWwindow* window = _glfw.wl.keyboardFocus; + if (!window) + return; + + const int key = translateKey(scancode); + const int action = + state == WL_KEYBOARD_KEY_STATE_PRESSED ? GLFW_PRESS : GLFW_RELEASE; + + _glfw.wl.serial = serial; + + struct itimerspec timer = {0}; + + if (action == GLFW_PRESS) + { + const xkb_keycode_t keycode = scancode + 8; + + if (xkb_keymap_key_repeats(_glfw.wl.xkb.keymap, keycode) && + _glfw.wl.keyRepeatRate > 0) + { + _glfw.wl.keyRepeatScancode = scancode; + if (_glfw.wl.keyRepeatRate > 1) + timer.it_interval.tv_nsec = 1000000000 / _glfw.wl.keyRepeatRate; + else + timer.it_interval.tv_sec = 1; + + timer.it_value.tv_sec = _glfw.wl.keyRepeatDelay / 1000; + timer.it_value.tv_nsec = (_glfw.wl.keyRepeatDelay % 1000) * 1000000; + } + } + + timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL); + + _glfwInputKey(window, key, scancode, action, _glfw.wl.xkb.modifiers); + + if (action == GLFW_PRESS) + inputText(window, scancode); +} + +static void keyboardHandleModifiers(void* userData, + struct wl_keyboard* keyboard, + uint32_t serial, + uint32_t modsDepressed, + uint32_t modsLatched, + uint32_t modsLocked, + uint32_t group) +{ + _glfw.wl.serial = serial; + + if (!_glfw.wl.xkb.keymap) + return; + + xkb_state_update_mask(_glfw.wl.xkb.state, + modsDepressed, + modsLatched, + modsLocked, + 0, + 0, + group); + + _glfw.wl.xkb.modifiers = 0; + + struct + { + xkb_mod_index_t index; + unsigned int bit; + } modifiers[] = + { + { _glfw.wl.xkb.controlIndex, GLFW_MOD_CONTROL }, + { _glfw.wl.xkb.altIndex, GLFW_MOD_ALT }, + { _glfw.wl.xkb.shiftIndex, GLFW_MOD_SHIFT }, + { _glfw.wl.xkb.superIndex, GLFW_MOD_SUPER }, + { _glfw.wl.xkb.capsLockIndex, GLFW_MOD_CAPS_LOCK }, + { _glfw.wl.xkb.numLockIndex, GLFW_MOD_NUM_LOCK } + }; + + for (size_t i = 0; i < sizeof(modifiers) / sizeof(modifiers[0]); i++) + { + if (xkb_state_mod_index_is_active(_glfw.wl.xkb.state, + modifiers[i].index, + XKB_STATE_MODS_EFFECTIVE) == 1) + { + _glfw.wl.xkb.modifiers |= modifiers[i].bit; + } + } +} + +#ifdef WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION +static void keyboardHandleRepeatInfo(void* userData, + struct wl_keyboard* keyboard, + int32_t rate, + int32_t delay) +{ + if (keyboard != _glfw.wl.keyboard) + return; + + _glfw.wl.keyRepeatRate = rate; + _glfw.wl.keyRepeatDelay = delay; +} +#endif + +static const struct wl_keyboard_listener keyboardListener = +{ + keyboardHandleKeymap, + keyboardHandleEnter, + keyboardHandleLeave, + keyboardHandleKey, + keyboardHandleModifiers, +#ifdef WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION + keyboardHandleRepeatInfo, +#endif +}; + +static void seatHandleCapabilities(void* userData, + struct wl_seat* seat, + enum wl_seat_capability caps) +{ + if ((caps & WL_SEAT_CAPABILITY_POINTER) && !_glfw.wl.pointer) + { + _glfw.wl.pointer = wl_seat_get_pointer(seat); + wl_pointer_add_listener(_glfw.wl.pointer, &pointerListener, NULL); + } + else if (!(caps & WL_SEAT_CAPABILITY_POINTER) && _glfw.wl.pointer) + { + wl_pointer_destroy(_glfw.wl.pointer); + _glfw.wl.pointer = NULL; + } + + if ((caps & WL_SEAT_CAPABILITY_KEYBOARD) && !_glfw.wl.keyboard) + { + _glfw.wl.keyboard = wl_seat_get_keyboard(seat); + wl_keyboard_add_listener(_glfw.wl.keyboard, &keyboardListener, NULL); + } + else if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && _glfw.wl.keyboard) + { + wl_keyboard_destroy(_glfw.wl.keyboard); + _glfw.wl.keyboard = NULL; + } +} + +static void seatHandleName(void* userData, + struct wl_seat* seat, + const char* name) +{ +} + +static const struct wl_seat_listener seatListener = +{ + seatHandleCapabilities, + seatHandleName, +}; + +static void dataOfferHandleOffer(void* userData, + struct wl_data_offer* offer, + const char* mimeType) +{ + for (unsigned int i = 0; i < _glfw.wl.offerCount; i++) + { + if (_glfw.wl.offers[i].offer == offer) + { + if (strcmp(mimeType, "text/plain;charset=utf-8") == 0) + _glfw.wl.offers[i].text_plain_utf8 = GLFW_TRUE; + else if (strcmp(mimeType, "text/uri-list") == 0) + _glfw.wl.offers[i].text_uri_list = GLFW_TRUE; + + break; + } + } +} + +static const struct wl_data_offer_listener dataOfferListener = +{ + dataOfferHandleOffer +}; + +static void dataDeviceHandleDataOffer(void* userData, + struct wl_data_device* device, + struct wl_data_offer* offer) +{ + _GLFWofferWayland* offers = + _glfw_realloc(_glfw.wl.offers, _glfw.wl.offerCount + 1); + if (!offers) + { + _glfwInputError(GLFW_OUT_OF_MEMORY, NULL); + return; + } + + _glfw.wl.offers = offers; + _glfw.wl.offerCount++; + + _glfw.wl.offers[_glfw.wl.offerCount - 1] = (_GLFWofferWayland) { offer }; + wl_data_offer_add_listener(offer, &dataOfferListener, NULL); +} + +static void dataDeviceHandleEnter(void* userData, + struct wl_data_device* device, + uint32_t serial, + struct wl_surface* surface, + wl_fixed_t x, + wl_fixed_t y, + struct wl_data_offer* offer) +{ + if (_glfw.wl.dragOffer) + { + wl_data_offer_destroy(_glfw.wl.dragOffer); + _glfw.wl.dragOffer = NULL; + _glfw.wl.dragFocus = NULL; + } + + for (unsigned int i = 0; i < _glfw.wl.offerCount; i++) + { + if (_glfw.wl.offers[i].offer == offer) + { + _GLFWwindow* window = NULL; + + if (surface) + window = wl_surface_get_user_data(surface); + + if (window && _glfw.wl.offers[i].text_uri_list) + { + _glfw.wl.dragOffer = offer; + _glfw.wl.dragFocus = window; + _glfw.wl.dragSerial = serial; + } + + _glfw.wl.offers[i] = _glfw.wl.offers[_glfw.wl.offerCount - 1]; + _glfw.wl.offerCount--; + break; + } + } + + if (_glfw.wl.dragOffer) + wl_data_offer_accept(offer, serial, "text/uri-list"); + else + { + wl_data_offer_accept(offer, serial, NULL); + wl_data_offer_destroy(offer); + } +} + +static void dataDeviceHandleLeave(void* userData, + struct wl_data_device* device) +{ + if (_glfw.wl.dragOffer) + { + wl_data_offer_destroy(_glfw.wl.dragOffer); + _glfw.wl.dragOffer = NULL; + _glfw.wl.dragFocus = NULL; + } +} + +static void dataDeviceHandleMotion(void* userData, + struct wl_data_device* device, + uint32_t time, + wl_fixed_t x, + wl_fixed_t y) +{ +} + +static void dataDeviceHandleDrop(void* userData, + struct wl_data_device* device) +{ + if (!_glfw.wl.dragOffer) + return; + + char* string = readDataOfferAsString(_glfw.wl.dragOffer, "text/uri-list"); + if (string) + { + int count; + char** paths = _glfwParseUriList(string, &count); + if (paths) + _glfwInputDrop(_glfw.wl.dragFocus, count, (const char**) paths); + + for (int i = 0; i < count; i++) + _glfw_free(paths[i]); + + _glfw_free(paths); + } + + _glfw_free(string); +} + +static void dataDeviceHandleSelection(void* userData, + struct wl_data_device* device, + struct wl_data_offer* offer) +{ + if (_glfw.wl.selectionOffer) + { + wl_data_offer_destroy(_glfw.wl.selectionOffer); + _glfw.wl.selectionOffer = NULL; + } + + for (unsigned int i = 0; i < _glfw.wl.offerCount; i++) + { + if (_glfw.wl.offers[i].offer == offer) + { + if (_glfw.wl.offers[i].text_plain_utf8) + _glfw.wl.selectionOffer = offer; + else + wl_data_offer_destroy(offer); + + _glfw.wl.offers[i] = _glfw.wl.offers[_glfw.wl.offerCount - 1]; + _glfw.wl.offerCount--; + break; + } + } +} + +const struct wl_data_device_listener dataDeviceListener = +{ + dataDeviceHandleDataOffer, + dataDeviceHandleEnter, + dataDeviceHandleLeave, + dataDeviceHandleMotion, + dataDeviceHandleDrop, + dataDeviceHandleSelection, +}; + +void _glfwAddSeatListenerWayland(struct wl_seat* seat) +{ + wl_seat_add_listener(seat, &seatListener, NULL); +} + +void _glfwAddDataDeviceListenerWayland(struct wl_data_device* device) +{ + wl_data_device_add_listener(device, &dataDeviceListener, NULL); +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwCreateWindowWayland(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + if (!createNativeSurface(window, wndconfig, fbconfig)) + return GLFW_FALSE; + + if (ctxconfig->client != GLFW_NO_API) + { + if (ctxconfig->source == GLFW_EGL_CONTEXT_API || + ctxconfig->source == GLFW_NATIVE_CONTEXT_API) + { + window->wl.egl.window = wl_egl_window_create(window->wl.surface, + wndconfig->width, + wndconfig->height); + if (!window->wl.egl.window) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create EGL window"); + return GLFW_FALSE; + } + + if (!_glfwInitEGL()) + return GLFW_FALSE; + if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API) + { + if (!_glfwInitOSMesa()) + return GLFW_FALSE; + if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + + if (!_glfwRefreshContextAttribs(window, ctxconfig)) + return GLFW_FALSE; + } + + if (wndconfig->mousePassthrough) + _glfwSetWindowMousePassthroughWayland(window, GLFW_TRUE); + + if (window->monitor || wndconfig->visible) + { + if (!createShellObjects(window)) + return GLFW_FALSE; + } + + return GLFW_TRUE; +} + +void _glfwDestroyWindowWayland(_GLFWwindow* window) +{ + if (window == _glfw.wl.pointerFocus) + _glfw.wl.pointerFocus = NULL; + + if (window == _glfw.wl.keyboardFocus) + _glfw.wl.keyboardFocus = NULL; + + if (window->wl.idleInhibitor) + zwp_idle_inhibitor_v1_destroy(window->wl.idleInhibitor); + + if (window->wl.relativePointer) + zwp_relative_pointer_v1_destroy(window->wl.relativePointer); + + if (window->wl.lockedPointer) + zwp_locked_pointer_v1_destroy(window->wl.lockedPointer); + + if (window->wl.confinedPointer) + zwp_confined_pointer_v1_destroy(window->wl.confinedPointer); + + if (window->context.destroy) + window->context.destroy(window); + + destroyShellObjects(window); + + if (window->wl.decorations.buffer) + wl_buffer_destroy(window->wl.decorations.buffer); + + if (window->wl.egl.window) + wl_egl_window_destroy(window->wl.egl.window); + + if (window->wl.surface) + wl_surface_destroy(window->wl.surface); + + _glfw_free(window->wl.title); + _glfw_free(window->wl.appId); + _glfw_free(window->wl.monitors); +} + +void _glfwSetWindowTitleWayland(_GLFWwindow* window, const char* title) +{ + char* copy = _glfw_strdup(title); + _glfw_free(window->wl.title); + window->wl.title = copy; + + if (window->wl.xdg.toplevel) + xdg_toplevel_set_title(window->wl.xdg.toplevel, title); +} + +void _glfwSetWindowIconWayland(_GLFWwindow* window, + int count, const GLFWimage* images) +{ + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: The platform does not support setting the window icon"); +} + +void _glfwGetWindowPosWayland(_GLFWwindow* window, int* xpos, int* ypos) +{ + // A Wayland client is not aware of its position, so just warn and leave it + // as (0, 0) + + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: The platform does not provide the window position"); +} + +void _glfwSetWindowPosWayland(_GLFWwindow* window, int xpos, int ypos) +{ + // A Wayland client can not set its position, so just warn + + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: The platform does not support setting the window position"); +} + +void _glfwGetWindowSizeWayland(_GLFWwindow* window, int* width, int* height) +{ + if (width) + *width = window->wl.width; + if (height) + *height = window->wl.height; +} + +void _glfwSetWindowSizeWayland(_GLFWwindow* window, int width, int height) +{ + if (window->monitor) + { + // Video mode setting is not available on Wayland + } + else + { + window->wl.width = width; + window->wl.height = height; + resizeWindow(window); + } +} + +void _glfwSetWindowSizeLimitsWayland(_GLFWwindow* window, + int minwidth, int minheight, + int maxwidth, int maxheight) +{ + if (window->wl.xdg.toplevel) + { + if (minwidth == GLFW_DONT_CARE || minheight == GLFW_DONT_CARE) + minwidth = minheight = 0; + else + { + if (window->wl.decorations.top.surface) + { + minwidth += GLFW_BORDER_SIZE * 2; + minheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE; + } + } + + if (maxwidth == GLFW_DONT_CARE || maxheight == GLFW_DONT_CARE) + maxwidth = maxheight = 0; + else + { + if (window->wl.decorations.top.surface) + { + maxwidth += GLFW_BORDER_SIZE * 2; + maxheight += GLFW_CAPTION_HEIGHT + GLFW_BORDER_SIZE; + } + } + + xdg_toplevel_set_min_size(window->wl.xdg.toplevel, minwidth, minheight); + xdg_toplevel_set_max_size(window->wl.xdg.toplevel, maxwidth, maxheight); + wl_surface_commit(window->wl.surface); + } +} + +void _glfwSetWindowAspectRatioWayland(_GLFWwindow* window, int numer, int denom) +{ + if (window->wl.maximized || window->wl.fullscreen) + return; + + if (numer != GLFW_DONT_CARE && denom != GLFW_DONT_CARE) + { + const float aspectRatio = (float) window->wl.width / (float) window->wl.height; + const float targetRatio = (float) numer / (float) denom; + if (aspectRatio < targetRatio) + window->wl.height = window->wl.width / targetRatio; + else if (aspectRatio > targetRatio) + window->wl.width = window->wl.height * targetRatio; + + resizeWindow(window); + } +} + +void _glfwGetFramebufferSizeWayland(_GLFWwindow* window, int* width, int* height) +{ + _glfwGetWindowSizeWayland(window, width, height); + if (width) + *width *= window->wl.scale; + if (height) + *height *= window->wl.scale; +} + +void _glfwGetWindowFrameSizeWayland(_GLFWwindow* window, + int* left, int* top, + int* right, int* bottom) +{ + if (window->decorated && !window->monitor && window->wl.decorations.top.surface) + { + if (top) + *top = GLFW_CAPTION_HEIGHT; + if (left) + *left = GLFW_BORDER_SIZE; + if (right) + *right = GLFW_BORDER_SIZE; + if (bottom) + *bottom = GLFW_BORDER_SIZE; + } +} + +void _glfwGetWindowContentScaleWayland(_GLFWwindow* window, + float* xscale, float* yscale) +{ + if (xscale) + *xscale = (float) window->wl.scale; + if (yscale) + *yscale = (float) window->wl.scale; +} + +void _glfwIconifyWindowWayland(_GLFWwindow* window) +{ + if (window->wl.xdg.toplevel) + xdg_toplevel_set_minimized(window->wl.xdg.toplevel); +} + +void _glfwRestoreWindowWayland(_GLFWwindow* window) +{ + if (window->monitor) + { + // There is no way to unset minimized, or even to know if we are + // minimized, so there is nothing to do in this case. + } + else + { + // We assume we are not minimized and act only on maximization + + if (window->wl.maximized) + { + if (window->wl.xdg.toplevel) + xdg_toplevel_unset_maximized(window->wl.xdg.toplevel); + else + window->wl.maximized = GLFW_FALSE; + } + } +} + +void _glfwMaximizeWindowWayland(_GLFWwindow* window) +{ + if (window->wl.xdg.toplevel) + xdg_toplevel_set_maximized(window->wl.xdg.toplevel); + else + window->wl.maximized = GLFW_TRUE; +} + +void _glfwShowWindowWayland(_GLFWwindow* window) +{ + if (!window->wl.xdg.toplevel) + { + // NOTE: The XDG surface and role are created here so command-line applications + // with off-screen windows do not appear in for example the Unity dock + createShellObjects(window); + } +} + +void _glfwHideWindowWayland(_GLFWwindow* window) +{ + if (window->wl.visible) + { + window->wl.visible = GLFW_FALSE; + destroyShellObjects(window); + + wl_surface_attach(window->wl.surface, NULL, 0, 0); + wl_surface_commit(window->wl.surface); + } +} + +void _glfwRequestWindowAttentionWayland(_GLFWwindow* window) +{ + // TODO + _glfwInputError(GLFW_FEATURE_UNIMPLEMENTED, + "Wayland: Window attention request not implemented yet"); +} + +void _glfwFocusWindowWayland(_GLFWwindow* window) +{ + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: The platform does not support setting the input focus"); +} + +void _glfwSetWindowMonitorWayland(_GLFWwindow* window, + _GLFWmonitor* monitor, + int xpos, int ypos, + int width, int height, + int refreshRate) +{ + if (window->monitor == monitor) + { + if (!monitor) + _glfwSetWindowSizeWayland(window, width, height); + + return; + } + + if (window->monitor) + releaseMonitor(window); + + _glfwInputWindowMonitor(window, monitor); + + if (window->monitor) + acquireMonitor(window); + else + _glfwSetWindowSizeWayland(window, width, height); +} + +GLFWbool _glfwWindowFocusedWayland(_GLFWwindow* window) +{ + return _glfw.wl.keyboardFocus == window; +} + +GLFWbool _glfwWindowIconifiedWayland(_GLFWwindow* window) +{ + // xdg-shell doesn’t give any way to request whether a surface is + // iconified. + return GLFW_FALSE; +} + +GLFWbool _glfwWindowVisibleWayland(_GLFWwindow* window) +{ + return window->wl.visible; +} + +GLFWbool _glfwWindowMaximizedWayland(_GLFWwindow* window) +{ + return window->wl.maximized; +} + +GLFWbool _glfwWindowHoveredWayland(_GLFWwindow* window) +{ + return window->wl.hovered; +} + +GLFWbool _glfwFramebufferTransparentWayland(_GLFWwindow* window) +{ + return window->wl.transparent; +} + +void _glfwSetWindowResizableWayland(_GLFWwindow* window, GLFWbool enabled) +{ + // TODO + _glfwInputError(GLFW_FEATURE_UNIMPLEMENTED, + "Wayland: Window attribute setting not implemented yet"); +} + +void _glfwSetWindowDecoratedWayland(_GLFWwindow* window, GLFWbool enabled) +{ + if (window->wl.xdg.decoration) + { + uint32_t mode; + + if (enabled) + mode = ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE; + else + mode = ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE; + + zxdg_toplevel_decoration_v1_set_mode(window->wl.xdg.decoration, mode); + } + else + { + if (enabled) + createFallbackDecorations(window); + else + destroyFallbackDecorations(window); + } +} + +void _glfwSetWindowFloatingWayland(_GLFWwindow* window, GLFWbool enabled) +{ + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: Platform does not support making a window floating"); +} + +void _glfwSetWindowMousePassthroughWayland(_GLFWwindow* window, GLFWbool enabled) +{ + if (enabled) + { + struct wl_region* region = wl_compositor_create_region(_glfw.wl.compositor); + wl_surface_set_input_region(window->wl.surface, region); + wl_region_destroy(region); + } + else + wl_surface_set_input_region(window->wl.surface, 0); +} + +float _glfwGetWindowOpacityWayland(_GLFWwindow* window) +{ + return 1.f; +} + +void _glfwSetWindowOpacityWayland(_GLFWwindow* window, float opacity) +{ + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: The platform does not support setting the window opacity"); +} + +void _glfwSetRawMouseMotionWayland(_GLFWwindow* window, GLFWbool enabled) +{ + // This is handled in relativePointerHandleRelativeMotion +} + +GLFWbool _glfwRawMouseMotionSupportedWayland(void) +{ + return GLFW_TRUE; +} + +void _glfwPollEventsWayland(void) +{ + double timeout = 0.0; + handleEvents(&timeout); +} + +void _glfwWaitEventsWayland(void) +{ + handleEvents(NULL); +} + +void _glfwWaitEventsTimeoutWayland(double timeout) +{ + handleEvents(&timeout); +} + +void _glfwPostEmptyEventWayland(void) +{ + wl_display_sync(_glfw.wl.display); + flushDisplay(); +} + +void _glfwGetCursorPosWayland(_GLFWwindow* window, double* xpos, double* ypos) +{ + if (xpos) + *xpos = window->wl.cursorPosX; + if (ypos) + *ypos = window->wl.cursorPosY; +} + +void _glfwSetCursorPosWayland(_GLFWwindow* window, double x, double y) +{ + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: The platform does not support setting the cursor position"); +} + +void _glfwSetCursorModeWayland(_GLFWwindow* window, int mode) +{ + _glfwSetCursorWayland(window, window->wl.currentCursor); +} + +const char* _glfwGetScancodeNameWayland(int scancode) +{ + if (scancode < 0 || scancode > 255 || + _glfw.wl.keycodes[scancode] == GLFW_KEY_UNKNOWN) + { + _glfwInputError(GLFW_INVALID_VALUE, + "Wayland: Invalid scancode %i", + scancode); + return NULL; + } + + const int key = _glfw.wl.keycodes[scancode]; + const xkb_keycode_t keycode = scancode + 8; + const xkb_layout_index_t layout = + xkb_state_key_get_layout(_glfw.wl.xkb.state, keycode); + if (layout == XKB_LAYOUT_INVALID) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to retrieve layout for key name"); + return NULL; + } + + const xkb_keysym_t* keysyms = NULL; + xkb_keymap_key_get_syms_by_level(_glfw.wl.xkb.keymap, + keycode, + layout, + 0, + &keysyms); + if (keysyms == NULL) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to retrieve keysym for key name"); + return NULL; + } + + const uint32_t codepoint = _glfwKeySym2Unicode(keysyms[0]); + if (codepoint == GLFW_INVALID_CODEPOINT) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to retrieve codepoint for key name"); + return NULL; + } + + const size_t count = _glfwEncodeUTF8(_glfw.wl.keynames[key], codepoint); + if (count == 0) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to encode codepoint for key name"); + return NULL; + } + + _glfw.wl.keynames[key][count] = '\0'; + return _glfw.wl.keynames[key]; +} + +int _glfwGetKeyScancodeWayland(int key) +{ + return _glfw.wl.scancodes[key]; +} + +GLFWbool _glfwCreateCursorWayland(_GLFWcursor* cursor, + const GLFWimage* image, + int xhot, int yhot) +{ + cursor->wl.buffer = createShmBuffer(image); + if (!cursor->wl.buffer) + return GLFW_FALSE; + + cursor->wl.width = image->width; + cursor->wl.height = image->height; + cursor->wl.xhot = xhot; + cursor->wl.yhot = yhot; + return GLFW_TRUE; +} + +GLFWbool _glfwCreateStandardCursorWayland(_GLFWcursor* cursor, int shape) +{ + const char* name = NULL; + + // Try the XDG names first + switch (shape) + { + case GLFW_ARROW_CURSOR: + name = "default"; + break; + case GLFW_IBEAM_CURSOR: + name = "text"; + break; + case GLFW_CROSSHAIR_CURSOR: + name = "crosshair"; + break; + case GLFW_POINTING_HAND_CURSOR: + name = "pointer"; + break; + case GLFW_RESIZE_EW_CURSOR: + name = "ew-resize"; + break; + case GLFW_RESIZE_NS_CURSOR: + name = "ns-resize"; + break; + case GLFW_RESIZE_NWSE_CURSOR: + name = "nwse-resize"; + break; + case GLFW_RESIZE_NESW_CURSOR: + name = "nesw-resize"; + break; + case GLFW_RESIZE_ALL_CURSOR: + name = "all-scroll"; + break; + case GLFW_NOT_ALLOWED_CURSOR: + name = "not-allowed"; + break; + } + + cursor->wl.cursor = wl_cursor_theme_get_cursor(_glfw.wl.cursorTheme, name); + + if (_glfw.wl.cursorThemeHiDPI) + { + cursor->wl.cursorHiDPI = + wl_cursor_theme_get_cursor(_glfw.wl.cursorThemeHiDPI, name); + } + + if (!cursor->wl.cursor) + { + // Fall back to the core X11 names + switch (shape) + { + case GLFW_ARROW_CURSOR: + name = "left_ptr"; + break; + case GLFW_IBEAM_CURSOR: + name = "xterm"; + break; + case GLFW_CROSSHAIR_CURSOR: + name = "crosshair"; + break; + case GLFW_POINTING_HAND_CURSOR: + name = "hand2"; + break; + case GLFW_RESIZE_EW_CURSOR: + name = "sb_h_double_arrow"; + break; + case GLFW_RESIZE_NS_CURSOR: + name = "sb_v_double_arrow"; + break; + case GLFW_RESIZE_ALL_CURSOR: + name = "fleur"; + break; + default: + _glfwInputError(GLFW_CURSOR_UNAVAILABLE, + "Wayland: Standard cursor shape unavailable"); + return GLFW_FALSE; + } + + cursor->wl.cursor = wl_cursor_theme_get_cursor(_glfw.wl.cursorTheme, name); + if (!cursor->wl.cursor) + { + _glfwInputError(GLFW_CURSOR_UNAVAILABLE, + "Wayland: Failed to create standard cursor \"%s\"", + name); + return GLFW_FALSE; + } + + if (_glfw.wl.cursorThemeHiDPI) + { + if (!cursor->wl.cursorHiDPI) + { + cursor->wl.cursorHiDPI = + wl_cursor_theme_get_cursor(_glfw.wl.cursorThemeHiDPI, name); + } + } + } + + return GLFW_TRUE; +} + +void _glfwDestroyCursorWayland(_GLFWcursor* cursor) +{ + // If it's a standard cursor we don't need to do anything here + if (cursor->wl.cursor) + return; + + if (cursor->wl.buffer) + wl_buffer_destroy(cursor->wl.buffer); +} + +static void relativePointerHandleRelativeMotion(void* userData, + struct zwp_relative_pointer_v1* pointer, + uint32_t timeHi, + uint32_t timeLo, + wl_fixed_t dx, + wl_fixed_t dy, + wl_fixed_t dxUnaccel, + wl_fixed_t dyUnaccel) +{ + _GLFWwindow* window = userData; + double xpos = window->virtualCursorPosX; + double ypos = window->virtualCursorPosY; + + if (window->cursorMode != GLFW_CURSOR_DISABLED) + return; + + if (window->rawMouseMotion) + { + xpos += wl_fixed_to_double(dxUnaccel); + ypos += wl_fixed_to_double(dyUnaccel); + } + else + { + xpos += wl_fixed_to_double(dx); + ypos += wl_fixed_to_double(dy); + } + + _glfwInputCursorPos(window, xpos, ypos); +} + +static const struct zwp_relative_pointer_v1_listener relativePointerListener = +{ + relativePointerHandleRelativeMotion +}; + +static void lockedPointerHandleLocked(void* userData, + struct zwp_locked_pointer_v1* lockedPointer) +{ +} + +static void lockedPointerHandleUnlocked(void* userData, + struct zwp_locked_pointer_v1* lockedPointer) +{ +} + +static const struct zwp_locked_pointer_v1_listener lockedPointerListener = +{ + lockedPointerHandleLocked, + lockedPointerHandleUnlocked +}; + +static void lockPointer(_GLFWwindow* window) +{ + if (!_glfw.wl.relativePointerManager) + { + _glfwInputError(GLFW_FEATURE_UNAVAILABLE, + "Wayland: The compositor does not support pointer locking"); + return; + } + + window->wl.relativePointer = + zwp_relative_pointer_manager_v1_get_relative_pointer( + _glfw.wl.relativePointerManager, + _glfw.wl.pointer); + zwp_relative_pointer_v1_add_listener(window->wl.relativePointer, + &relativePointerListener, + window); + + window->wl.lockedPointer = + zwp_pointer_constraints_v1_lock_pointer( + _glfw.wl.pointerConstraints, + window->wl.surface, + _glfw.wl.pointer, + NULL, + ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT); + zwp_locked_pointer_v1_add_listener(window->wl.lockedPointer, + &lockedPointerListener, + window); +} + +static void unlockPointer(_GLFWwindow* window) +{ + zwp_relative_pointer_v1_destroy(window->wl.relativePointer); + window->wl.relativePointer = NULL; + + zwp_locked_pointer_v1_destroy(window->wl.lockedPointer); + window->wl.lockedPointer = NULL; +} + +static void confinedPointerHandleConfined(void* userData, + struct zwp_confined_pointer_v1* confinedPointer) +{ +} + +static void confinedPointerHandleUnconfined(void* userData, + struct zwp_confined_pointer_v1* confinedPointer) +{ +} + +static const struct zwp_confined_pointer_v1_listener confinedPointerListener = +{ + confinedPointerHandleConfined, + confinedPointerHandleUnconfined +}; + +static void confinePointer(_GLFWwindow* window) +{ + window->wl.confinedPointer = + zwp_pointer_constraints_v1_confine_pointer( + _glfw.wl.pointerConstraints, + window->wl.surface, + _glfw.wl.pointer, + NULL, + ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT); + + zwp_confined_pointer_v1_add_listener(window->wl.confinedPointer, + &confinedPointerListener, + window); +} + +static void unconfinePointer(_GLFWwindow* window) +{ + zwp_confined_pointer_v1_destroy(window->wl.confinedPointer); + window->wl.confinedPointer = NULL; +} + +void _glfwSetCursorWayland(_GLFWwindow* window, _GLFWcursor* cursor) +{ + if (!_glfw.wl.pointer) + return; + + window->wl.currentCursor = cursor; + + // If we're not in the correct window just save the cursor + // the next time the pointer enters the window the cursor will change + if (window != _glfw.wl.pointerFocus || window->wl.decorations.focus != mainWindow) + return; + + // Update pointer lock to match cursor mode + if (window->cursorMode == GLFW_CURSOR_DISABLED) + { + if (window->wl.confinedPointer) + unconfinePointer(window); + if (!window->wl.lockedPointer) + lockPointer(window); + } + else if (window->cursorMode == GLFW_CURSOR_CAPTURED) + { + if (window->wl.lockedPointer) + unlockPointer(window); + if (!window->wl.confinedPointer) + confinePointer(window); + } + else if (window->cursorMode == GLFW_CURSOR_NORMAL || + window->cursorMode == GLFW_CURSOR_HIDDEN) + { + if (window->wl.lockedPointer) + unlockPointer(window); + else if (window->wl.confinedPointer) + unconfinePointer(window); + } + + if (window->cursorMode == GLFW_CURSOR_NORMAL || + window->cursorMode == GLFW_CURSOR_CAPTURED) + { + if (cursor) + setCursorImage(window, &cursor->wl); + else + { + struct wl_cursor* defaultCursor = + wl_cursor_theme_get_cursor(_glfw.wl.cursorTheme, "left_ptr"); + if (!defaultCursor) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Standard cursor not found"); + return; + } + + struct wl_cursor* defaultCursorHiDPI = NULL; + if (_glfw.wl.cursorThemeHiDPI) + { + defaultCursorHiDPI = + wl_cursor_theme_get_cursor(_glfw.wl.cursorThemeHiDPI, "left_ptr"); + } + + _GLFWcursorWayland cursorWayland = + { + defaultCursor, + defaultCursorHiDPI, + NULL, + 0, 0, + 0, 0, + 0 + }; + + setCursorImage(window, &cursorWayland); + } + } + else if (window->cursorMode == GLFW_CURSOR_HIDDEN || + window->cursorMode == GLFW_CURSOR_DISABLED) + { + wl_pointer_set_cursor(_glfw.wl.pointer, _glfw.wl.pointerEnterSerial, NULL, 0, 0); + } +} + +static void dataSourceHandleTarget(void* userData, + struct wl_data_source* source, + const char* mimeType) +{ + if (_glfw.wl.selectionSource != source) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Unknown clipboard data source"); + return; + } +} + +static void dataSourceHandleSend(void* userData, + struct wl_data_source* source, + const char* mimeType, + int fd) +{ + // Ignore it if this is an outdated or invalid request + if (_glfw.wl.selectionSource != source || + strcmp(mimeType, "text/plain;charset=utf-8") != 0) + { + close(fd); + return; + } + + char* string = _glfw.wl.clipboardString; + size_t length = strlen(string); + + while (length > 0) + { + const ssize_t result = write(fd, string, length); + if (result == -1) + { + if (errno == EINTR) + continue; + + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Error while writing the clipboard: %s", + strerror(errno)); + break; + } + + length -= result; + string += result; + } + + close(fd); +} + +static void dataSourceHandleCancelled(void* userData, + struct wl_data_source* source) +{ + wl_data_source_destroy(source); + + if (_glfw.wl.selectionSource != source) + return; + + _glfw.wl.selectionSource = NULL; +} + +static const struct wl_data_source_listener dataSourceListener = +{ + dataSourceHandleTarget, + dataSourceHandleSend, + dataSourceHandleCancelled, +}; + +void _glfwSetClipboardStringWayland(const char* string) +{ + if (_glfw.wl.selectionSource) + { + wl_data_source_destroy(_glfw.wl.selectionSource); + _glfw.wl.selectionSource = NULL; + } + + char* copy = _glfw_strdup(string); + if (!copy) + { + _glfwInputError(GLFW_OUT_OF_MEMORY, NULL); + return; + } + + _glfw_free(_glfw.wl.clipboardString); + _glfw.wl.clipboardString = copy; + + _glfw.wl.selectionSource = + wl_data_device_manager_create_data_source(_glfw.wl.dataDeviceManager); + if (!_glfw.wl.selectionSource) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create clipboard data source"); + return; + } + wl_data_source_add_listener(_glfw.wl.selectionSource, + &dataSourceListener, + NULL); + wl_data_source_offer(_glfw.wl.selectionSource, "text/plain;charset=utf-8"); + wl_data_device_set_selection(_glfw.wl.dataDevice, + _glfw.wl.selectionSource, + _glfw.wl.serial); +} + +const char* _glfwGetClipboardStringWayland(void) +{ + if (!_glfw.wl.selectionOffer) + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "Wayland: No clipboard data available"); + return NULL; + } + + if (_glfw.wl.selectionSource) + return _glfw.wl.clipboardString; + + _glfw_free(_glfw.wl.clipboardString); + _glfw.wl.clipboardString = + readDataOfferAsString(_glfw.wl.selectionOffer, "text/plain;charset=utf-8"); + return _glfw.wl.clipboardString; +} + +EGLenum _glfwGetEGLPlatformWayland(EGLint** attribs) +{ + if (_glfw.egl.EXT_platform_base && _glfw.egl.EXT_platform_wayland) + return EGL_PLATFORM_WAYLAND_EXT; + else + return 0; +} + +EGLNativeDisplayType _glfwGetEGLNativeDisplayWayland(void) +{ + return _glfw.wl.display; +} + +EGLNativeWindowType _glfwGetEGLNativeWindowWayland(_GLFWwindow* window) +{ + return window->wl.egl.window; +} + +void _glfwGetRequiredInstanceExtensionsWayland(char** extensions) +{ + if (!_glfw.vk.KHR_surface || !_glfw.vk.KHR_wayland_surface) + return; + + extensions[0] = "VK_KHR_surface"; + extensions[1] = "VK_KHR_wayland_surface"; +} + +GLFWbool _glfwGetPhysicalDevicePresentationSupportWayland(VkInstance instance, + VkPhysicalDevice device, + uint32_t queuefamily) +{ + PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR + vkGetPhysicalDeviceWaylandPresentationSupportKHR = + (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR) + vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); + if (!vkGetPhysicalDeviceWaylandPresentationSupportKHR) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Wayland: Vulkan instance missing VK_KHR_wayland_surface extension"); + return VK_NULL_HANDLE; + } + + return vkGetPhysicalDeviceWaylandPresentationSupportKHR(device, + queuefamily, + _glfw.wl.display); +} + +VkResult _glfwCreateWindowSurfaceWayland(VkInstance instance, + _GLFWwindow* window, + const VkAllocationCallbacks* allocator, + VkSurfaceKHR* surface) +{ + VkResult err; + VkWaylandSurfaceCreateInfoKHR sci; + PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; + + vkCreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR) + vkGetInstanceProcAddr(instance, "vkCreateWaylandSurfaceKHR"); + if (!vkCreateWaylandSurfaceKHR) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "Wayland: Vulkan instance missing VK_KHR_wayland_surface extension"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + memset(&sci, 0, sizeof(sci)); + sci.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR; + sci.display = _glfw.wl.display; + sci.surface = window->wl.surface; + + err = vkCreateWaylandSurfaceKHR(instance, &sci, allocator, surface); + if (err) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "Wayland: Failed to create Vulkan surface: %s", + _glfwGetVulkanResultString(err)); + } + + return err; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI struct wl_display* glfwGetWaylandDisplay(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (_glfw.platform.platformID != GLFW_PLATFORM_WAYLAND) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, + "Wayland: Platform not initialized"); + return NULL; + } + + return _glfw.wl.display; +} + +GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (_glfw.platform.platformID != GLFW_PLATFORM_WAYLAND) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, + "Wayland: Platform not initialized"); + return NULL; + } + + return window->wl.surface; +} + +#endif // _GLFW_WAYLAND + diff --git a/lib/glfw/src/x11_init.c b/lib/glfw/src/x11_init.c new file mode 100644 index 0000000..1c69c0f --- /dev/null +++ b/lib/glfw/src/x11_init.c @@ -0,0 +1,1658 @@ +//======================================================================== +// GLFW 3.4 X11 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_X11) + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +// Translate the X11 KeySyms for a key to a GLFW key code +// NOTE: This is only used as a fallback, in case the XKB method fails +// It is layout-dependent and will fail partially on most non-US layouts +// +static int translateKeySyms(const KeySym* keysyms, int width) +{ + if (width > 1) + { + switch (keysyms[1]) + { + case XK_KP_0: return GLFW_KEY_KP_0; + case XK_KP_1: return GLFW_KEY_KP_1; + case XK_KP_2: return GLFW_KEY_KP_2; + case XK_KP_3: return GLFW_KEY_KP_3; + case XK_KP_4: return GLFW_KEY_KP_4; + case XK_KP_5: return GLFW_KEY_KP_5; + case XK_KP_6: return GLFW_KEY_KP_6; + case XK_KP_7: return GLFW_KEY_KP_7; + case XK_KP_8: return GLFW_KEY_KP_8; + case XK_KP_9: return GLFW_KEY_KP_9; + case XK_KP_Separator: + case XK_KP_Decimal: return GLFW_KEY_KP_DECIMAL; + case XK_KP_Equal: return GLFW_KEY_KP_EQUAL; + case XK_KP_Enter: return GLFW_KEY_KP_ENTER; + default: break; + } + } + + switch (keysyms[0]) + { + case XK_Escape: return GLFW_KEY_ESCAPE; + case XK_Tab: return GLFW_KEY_TAB; + case XK_Shift_L: return GLFW_KEY_LEFT_SHIFT; + case XK_Shift_R: return GLFW_KEY_RIGHT_SHIFT; + case XK_Control_L: return GLFW_KEY_LEFT_CONTROL; + case XK_Control_R: return GLFW_KEY_RIGHT_CONTROL; + case XK_Meta_L: + case XK_Alt_L: return GLFW_KEY_LEFT_ALT; + case XK_Mode_switch: // Mapped to Alt_R on many keyboards + case XK_ISO_Level3_Shift: // AltGr on at least some machines + case XK_Meta_R: + case XK_Alt_R: return GLFW_KEY_RIGHT_ALT; + case XK_Super_L: return GLFW_KEY_LEFT_SUPER; + case XK_Super_R: return GLFW_KEY_RIGHT_SUPER; + case XK_Menu: return GLFW_KEY_MENU; + case XK_Num_Lock: return GLFW_KEY_NUM_LOCK; + case XK_Caps_Lock: return GLFW_KEY_CAPS_LOCK; + case XK_Print: return GLFW_KEY_PRINT_SCREEN; + case XK_Scroll_Lock: return GLFW_KEY_SCROLL_LOCK; + case XK_Pause: return GLFW_KEY_PAUSE; + case XK_Delete: return GLFW_KEY_DELETE; + case XK_BackSpace: return GLFW_KEY_BACKSPACE; + case XK_Return: return GLFW_KEY_ENTER; + case XK_Home: return GLFW_KEY_HOME; + case XK_End: return GLFW_KEY_END; + case XK_Page_Up: return GLFW_KEY_PAGE_UP; + case XK_Page_Down: return GLFW_KEY_PAGE_DOWN; + case XK_Insert: return GLFW_KEY_INSERT; + case XK_Left: return GLFW_KEY_LEFT; + case XK_Right: return GLFW_KEY_RIGHT; + case XK_Down: return GLFW_KEY_DOWN; + case XK_Up: return GLFW_KEY_UP; + case XK_F1: return GLFW_KEY_F1; + case XK_F2: return GLFW_KEY_F2; + case XK_F3: return GLFW_KEY_F3; + case XK_F4: return GLFW_KEY_F4; + case XK_F5: return GLFW_KEY_F5; + case XK_F6: return GLFW_KEY_F6; + case XK_F7: return GLFW_KEY_F7; + case XK_F8: return GLFW_KEY_F8; + case XK_F9: return GLFW_KEY_F9; + case XK_F10: return GLFW_KEY_F10; + case XK_F11: return GLFW_KEY_F11; + case XK_F12: return GLFW_KEY_F12; + case XK_F13: return GLFW_KEY_F13; + case XK_F14: return GLFW_KEY_F14; + case XK_F15: return GLFW_KEY_F15; + case XK_F16: return GLFW_KEY_F16; + case XK_F17: return GLFW_KEY_F17; + case XK_F18: return GLFW_KEY_F18; + case XK_F19: return GLFW_KEY_F19; + case XK_F20: return GLFW_KEY_F20; + case XK_F21: return GLFW_KEY_F21; + case XK_F22: return GLFW_KEY_F22; + case XK_F23: return GLFW_KEY_F23; + case XK_F24: return GLFW_KEY_F24; + case XK_F25: return GLFW_KEY_F25; + + // Numeric keypad + case XK_KP_Divide: return GLFW_KEY_KP_DIVIDE; + case XK_KP_Multiply: return GLFW_KEY_KP_MULTIPLY; + case XK_KP_Subtract: return GLFW_KEY_KP_SUBTRACT; + case XK_KP_Add: return GLFW_KEY_KP_ADD; + + // These should have been detected in secondary keysym test above! + case XK_KP_Insert: return GLFW_KEY_KP_0; + case XK_KP_End: return GLFW_KEY_KP_1; + case XK_KP_Down: return GLFW_KEY_KP_2; + case XK_KP_Page_Down: return GLFW_KEY_KP_3; + case XK_KP_Left: return GLFW_KEY_KP_4; + case XK_KP_Right: return GLFW_KEY_KP_6; + case XK_KP_Home: return GLFW_KEY_KP_7; + case XK_KP_Up: return GLFW_KEY_KP_8; + case XK_KP_Page_Up: return GLFW_KEY_KP_9; + case XK_KP_Delete: return GLFW_KEY_KP_DECIMAL; + case XK_KP_Equal: return GLFW_KEY_KP_EQUAL; + case XK_KP_Enter: return GLFW_KEY_KP_ENTER; + + // Last resort: Check for printable keys (should not happen if the XKB + // extension is available). This will give a layout dependent mapping + // (which is wrong, and we may miss some keys, especially on non-US + // keyboards), but it's better than nothing... + case XK_a: return GLFW_KEY_A; + case XK_b: return GLFW_KEY_B; + case XK_c: return GLFW_KEY_C; + case XK_d: return GLFW_KEY_D; + case XK_e: return GLFW_KEY_E; + case XK_f: return GLFW_KEY_F; + case XK_g: return GLFW_KEY_G; + case XK_h: return GLFW_KEY_H; + case XK_i: return GLFW_KEY_I; + case XK_j: return GLFW_KEY_J; + case XK_k: return GLFW_KEY_K; + case XK_l: return GLFW_KEY_L; + case XK_m: return GLFW_KEY_M; + case XK_n: return GLFW_KEY_N; + case XK_o: return GLFW_KEY_O; + case XK_p: return GLFW_KEY_P; + case XK_q: return GLFW_KEY_Q; + case XK_r: return GLFW_KEY_R; + case XK_s: return GLFW_KEY_S; + case XK_t: return GLFW_KEY_T; + case XK_u: return GLFW_KEY_U; + case XK_v: return GLFW_KEY_V; + case XK_w: return GLFW_KEY_W; + case XK_x: return GLFW_KEY_X; + case XK_y: return GLFW_KEY_Y; + case XK_z: return GLFW_KEY_Z; + case XK_1: return GLFW_KEY_1; + case XK_2: return GLFW_KEY_2; + case XK_3: return GLFW_KEY_3; + case XK_4: return GLFW_KEY_4; + case XK_5: return GLFW_KEY_5; + case XK_6: return GLFW_KEY_6; + case XK_7: return GLFW_KEY_7; + case XK_8: return GLFW_KEY_8; + case XK_9: return GLFW_KEY_9; + case XK_0: return GLFW_KEY_0; + case XK_space: return GLFW_KEY_SPACE; + case XK_minus: return GLFW_KEY_MINUS; + case XK_equal: return GLFW_KEY_EQUAL; + case XK_bracketleft: return GLFW_KEY_LEFT_BRACKET; + case XK_bracketright: return GLFW_KEY_RIGHT_BRACKET; + case XK_backslash: return GLFW_KEY_BACKSLASH; + case XK_semicolon: return GLFW_KEY_SEMICOLON; + case XK_apostrophe: return GLFW_KEY_APOSTROPHE; + case XK_grave: return GLFW_KEY_GRAVE_ACCENT; + case XK_comma: return GLFW_KEY_COMMA; + case XK_period: return GLFW_KEY_PERIOD; + case XK_slash: return GLFW_KEY_SLASH; + case XK_less: return GLFW_KEY_WORLD_1; // At least in some layouts... + default: break; + } + + // No matching translation was found + return GLFW_KEY_UNKNOWN; +} + +// Create key code translation tables +// +static void createKeyTables(void) +{ + int scancodeMin, scancodeMax; + + memset(_glfw.x11.keycodes, -1, sizeof(_glfw.x11.keycodes)); + memset(_glfw.x11.scancodes, -1, sizeof(_glfw.x11.scancodes)); + + if (_glfw.x11.xkb.available) + { + // Use XKB to determine physical key locations independently of the + // current keyboard layout + + XkbDescPtr desc = XkbGetMap(_glfw.x11.display, 0, XkbUseCoreKbd); + XkbGetNames(_glfw.x11.display, XkbKeyNamesMask | XkbKeyAliasesMask, desc); + + scancodeMin = desc->min_key_code; + scancodeMax = desc->max_key_code; + + const struct + { + int key; + char* name; + } keymap[] = + { + { GLFW_KEY_GRAVE_ACCENT, "TLDE" }, + { GLFW_KEY_1, "AE01" }, + { GLFW_KEY_2, "AE02" }, + { GLFW_KEY_3, "AE03" }, + { GLFW_KEY_4, "AE04" }, + { GLFW_KEY_5, "AE05" }, + { GLFW_KEY_6, "AE06" }, + { GLFW_KEY_7, "AE07" }, + { GLFW_KEY_8, "AE08" }, + { GLFW_KEY_9, "AE09" }, + { GLFW_KEY_0, "AE10" }, + { GLFW_KEY_MINUS, "AE11" }, + { GLFW_KEY_EQUAL, "AE12" }, + { GLFW_KEY_Q, "AD01" }, + { GLFW_KEY_W, "AD02" }, + { GLFW_KEY_E, "AD03" }, + { GLFW_KEY_R, "AD04" }, + { GLFW_KEY_T, "AD05" }, + { GLFW_KEY_Y, "AD06" }, + { GLFW_KEY_U, "AD07" }, + { GLFW_KEY_I, "AD08" }, + { GLFW_KEY_O, "AD09" }, + { GLFW_KEY_P, "AD10" }, + { GLFW_KEY_LEFT_BRACKET, "AD11" }, + { GLFW_KEY_RIGHT_BRACKET, "AD12" }, + { GLFW_KEY_A, "AC01" }, + { GLFW_KEY_S, "AC02" }, + { GLFW_KEY_D, "AC03" }, + { GLFW_KEY_F, "AC04" }, + { GLFW_KEY_G, "AC05" }, + { GLFW_KEY_H, "AC06" }, + { GLFW_KEY_J, "AC07" }, + { GLFW_KEY_K, "AC08" }, + { GLFW_KEY_L, "AC09" }, + { GLFW_KEY_SEMICOLON, "AC10" }, + { GLFW_KEY_APOSTROPHE, "AC11" }, + { GLFW_KEY_Z, "AB01" }, + { GLFW_KEY_X, "AB02" }, + { GLFW_KEY_C, "AB03" }, + { GLFW_KEY_V, "AB04" }, + { GLFW_KEY_B, "AB05" }, + { GLFW_KEY_N, "AB06" }, + { GLFW_KEY_M, "AB07" }, + { GLFW_KEY_COMMA, "AB08" }, + { GLFW_KEY_PERIOD, "AB09" }, + { GLFW_KEY_SLASH, "AB10" }, + { GLFW_KEY_BACKSLASH, "BKSL" }, + { GLFW_KEY_WORLD_1, "LSGT" }, + { GLFW_KEY_SPACE, "SPCE" }, + { GLFW_KEY_ESCAPE, "ESC" }, + { GLFW_KEY_ENTER, "RTRN" }, + { GLFW_KEY_TAB, "TAB" }, + { GLFW_KEY_BACKSPACE, "BKSP" }, + { GLFW_KEY_INSERT, "INS" }, + { GLFW_KEY_DELETE, "DELE" }, + { GLFW_KEY_RIGHT, "RGHT" }, + { GLFW_KEY_LEFT, "LEFT" }, + { GLFW_KEY_DOWN, "DOWN" }, + { GLFW_KEY_UP, "UP" }, + { GLFW_KEY_PAGE_UP, "PGUP" }, + { GLFW_KEY_PAGE_DOWN, "PGDN" }, + { GLFW_KEY_HOME, "HOME" }, + { GLFW_KEY_END, "END" }, + { GLFW_KEY_CAPS_LOCK, "CAPS" }, + { GLFW_KEY_SCROLL_LOCK, "SCLK" }, + { GLFW_KEY_NUM_LOCK, "NMLK" }, + { GLFW_KEY_PRINT_SCREEN, "PRSC" }, + { GLFW_KEY_PAUSE, "PAUS" }, + { GLFW_KEY_F1, "FK01" }, + { GLFW_KEY_F2, "FK02" }, + { GLFW_KEY_F3, "FK03" }, + { GLFW_KEY_F4, "FK04" }, + { GLFW_KEY_F5, "FK05" }, + { GLFW_KEY_F6, "FK06" }, + { GLFW_KEY_F7, "FK07" }, + { GLFW_KEY_F8, "FK08" }, + { GLFW_KEY_F9, "FK09" }, + { GLFW_KEY_F10, "FK10" }, + { GLFW_KEY_F11, "FK11" }, + { GLFW_KEY_F12, "FK12" }, + { GLFW_KEY_F13, "FK13" }, + { GLFW_KEY_F14, "FK14" }, + { GLFW_KEY_F15, "FK15" }, + { GLFW_KEY_F16, "FK16" }, + { GLFW_KEY_F17, "FK17" }, + { GLFW_KEY_F18, "FK18" }, + { GLFW_KEY_F19, "FK19" }, + { GLFW_KEY_F20, "FK20" }, + { GLFW_KEY_F21, "FK21" }, + { GLFW_KEY_F22, "FK22" }, + { GLFW_KEY_F23, "FK23" }, + { GLFW_KEY_F24, "FK24" }, + { GLFW_KEY_F25, "FK25" }, + { GLFW_KEY_KP_0, "KP0" }, + { GLFW_KEY_KP_1, "KP1" }, + { GLFW_KEY_KP_2, "KP2" }, + { GLFW_KEY_KP_3, "KP3" }, + { GLFW_KEY_KP_4, "KP4" }, + { GLFW_KEY_KP_5, "KP5" }, + { GLFW_KEY_KP_6, "KP6" }, + { GLFW_KEY_KP_7, "KP7" }, + { GLFW_KEY_KP_8, "KP8" }, + { GLFW_KEY_KP_9, "KP9" }, + { GLFW_KEY_KP_DECIMAL, "KPDL" }, + { GLFW_KEY_KP_DIVIDE, "KPDV" }, + { GLFW_KEY_KP_MULTIPLY, "KPMU" }, + { GLFW_KEY_KP_SUBTRACT, "KPSU" }, + { GLFW_KEY_KP_ADD, "KPAD" }, + { GLFW_KEY_KP_ENTER, "KPEN" }, + { GLFW_KEY_KP_EQUAL, "KPEQ" }, + { GLFW_KEY_LEFT_SHIFT, "LFSH" }, + { GLFW_KEY_LEFT_CONTROL, "LCTL" }, + { GLFW_KEY_LEFT_ALT, "LALT" }, + { GLFW_KEY_LEFT_SUPER, "LWIN" }, + { GLFW_KEY_RIGHT_SHIFT, "RTSH" }, + { GLFW_KEY_RIGHT_CONTROL, "RCTL" }, + { GLFW_KEY_RIGHT_ALT, "RALT" }, + { GLFW_KEY_RIGHT_ALT, "LVL3" }, + { GLFW_KEY_RIGHT_ALT, "MDSW" }, + { GLFW_KEY_RIGHT_SUPER, "RWIN" }, + { GLFW_KEY_MENU, "MENU" } + }; + + // Find the X11 key code -> GLFW key code mapping + for (int scancode = scancodeMin; scancode <= scancodeMax; scancode++) + { + int key = GLFW_KEY_UNKNOWN; + + // Map the key name to a GLFW key code. Note: We use the US + // keyboard layout. Because function keys aren't mapped correctly + // when using traditional KeySym translations, they are mapped + // here instead. + for (int i = 0; i < sizeof(keymap) / sizeof(keymap[0]); i++) + { + if (strncmp(desc->names->keys[scancode].name, + keymap[i].name, + XkbKeyNameLength) == 0) + { + key = keymap[i].key; + break; + } + } + + // Fall back to key aliases in case the key name did not match + for (int i = 0; i < desc->names->num_key_aliases; i++) + { + if (key != GLFW_KEY_UNKNOWN) + break; + + if (strncmp(desc->names->key_aliases[i].real, + desc->names->keys[scancode].name, + XkbKeyNameLength) != 0) + { + continue; + } + + for (int j = 0; j < sizeof(keymap) / sizeof(keymap[0]); j++) + { + if (strncmp(desc->names->key_aliases[i].alias, + keymap[j].name, + XkbKeyNameLength) == 0) + { + key = keymap[j].key; + break; + } + } + } + + _glfw.x11.keycodes[scancode] = key; + } + + XkbFreeNames(desc, XkbKeyNamesMask, True); + XkbFreeKeyboard(desc, 0, True); + } + else + XDisplayKeycodes(_glfw.x11.display, &scancodeMin, &scancodeMax); + + int width; + KeySym* keysyms = XGetKeyboardMapping(_glfw.x11.display, + scancodeMin, + scancodeMax - scancodeMin + 1, + &width); + + for (int scancode = scancodeMin; scancode <= scancodeMax; scancode++) + { + // Translate the un-translated key codes using traditional X11 KeySym + // lookups + if (_glfw.x11.keycodes[scancode] < 0) + { + const size_t base = (scancode - scancodeMin) * width; + _glfw.x11.keycodes[scancode] = translateKeySyms(&keysyms[base], width); + } + + // Store the reverse translation for faster key name lookup + if (_glfw.x11.keycodes[scancode] > 0) + _glfw.x11.scancodes[_glfw.x11.keycodes[scancode]] = scancode; + } + + XFree(keysyms); +} + +// Check whether the IM has a usable style +// +static GLFWbool hasUsableInputMethodStyle(void) +{ + GLFWbool found = GLFW_FALSE; + XIMStyles* styles = NULL; + + if (XGetIMValues(_glfw.x11.im, XNQueryInputStyle, &styles, NULL) != NULL) + return GLFW_FALSE; + + for (unsigned int i = 0; i < styles->count_styles; i++) + { + if (styles->supported_styles[i] == (XIMPreeditNothing | XIMStatusNothing)) + { + found = GLFW_TRUE; + break; + } + } + + XFree(styles); + return found; +} + +static void inputMethodDestroyCallback(XIM im, XPointer clientData, XPointer callData) +{ + _glfw.x11.im = NULL; +} + +static void inputMethodInstantiateCallback(Display* display, + XPointer clientData, + XPointer callData) +{ + if (_glfw.x11.im) + return; + + _glfw.x11.im = XOpenIM(_glfw.x11.display, 0, NULL, NULL); + if (_glfw.x11.im) + { + if (!hasUsableInputMethodStyle()) + { + XCloseIM(_glfw.x11.im); + _glfw.x11.im = NULL; + } + } + + if (_glfw.x11.im) + { + XIMCallback callback; + callback.callback = (XIMProc) inputMethodDestroyCallback; + callback.client_data = NULL; + XSetIMValues(_glfw.x11.im, XNDestroyCallback, &callback, NULL); + + for (_GLFWwindow* window = _glfw.windowListHead; window; window = window->next) + _glfwCreateInputContextX11(window); + } +} + +// Return the atom ID only if it is listed in the specified array +// +static Atom getAtomIfSupported(Atom* supportedAtoms, + unsigned long atomCount, + const char* atomName) +{ + const Atom atom = XInternAtom(_glfw.x11.display, atomName, False); + + for (unsigned long i = 0; i < atomCount; i++) + { + if (supportedAtoms[i] == atom) + return atom; + } + + return None; +} + +// Check whether the running window manager is EWMH-compliant +// +static void detectEWMH(void) +{ + // First we read the _NET_SUPPORTING_WM_CHECK property on the root window + + Window* windowFromRoot = NULL; + if (!_glfwGetWindowPropertyX11(_glfw.x11.root, + _glfw.x11.NET_SUPPORTING_WM_CHECK, + XA_WINDOW, + (unsigned char**) &windowFromRoot)) + { + return; + } + + _glfwGrabErrorHandlerX11(); + + // If it exists, it should be the XID of a top-level window + // Then we look for the same property on that window + + Window* windowFromChild = NULL; + if (!_glfwGetWindowPropertyX11(*windowFromRoot, + _glfw.x11.NET_SUPPORTING_WM_CHECK, + XA_WINDOW, + (unsigned char**) &windowFromChild)) + { + XFree(windowFromRoot); + return; + } + + _glfwReleaseErrorHandlerX11(); + + // If the property exists, it should contain the XID of the window + + if (*windowFromRoot != *windowFromChild) + { + XFree(windowFromRoot); + XFree(windowFromChild); + return; + } + + XFree(windowFromRoot); + XFree(windowFromChild); + + // We are now fairly sure that an EWMH-compliant WM is currently running + // We can now start querying the WM about what features it supports by + // looking in the _NET_SUPPORTED property on the root window + // It should contain a list of supported EWMH protocol and state atoms + + Atom* supportedAtoms = NULL; + const unsigned long atomCount = + _glfwGetWindowPropertyX11(_glfw.x11.root, + _glfw.x11.NET_SUPPORTED, + XA_ATOM, + (unsigned char**) &supportedAtoms); + + // See which of the atoms we support that are supported by the WM + + _glfw.x11.NET_WM_STATE = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_STATE"); + _glfw.x11.NET_WM_STATE_ABOVE = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_STATE_ABOVE"); + _glfw.x11.NET_WM_STATE_FULLSCREEN = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_STATE_FULLSCREEN"); + _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_STATE_MAXIMIZED_VERT"); + _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_STATE_MAXIMIZED_HORZ"); + _glfw.x11.NET_WM_STATE_DEMANDS_ATTENTION = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_STATE_DEMANDS_ATTENTION"); + _glfw.x11.NET_WM_FULLSCREEN_MONITORS = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_FULLSCREEN_MONITORS"); + _glfw.x11.NET_WM_WINDOW_TYPE = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_WINDOW_TYPE"); + _glfw.x11.NET_WM_WINDOW_TYPE_NORMAL = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WM_WINDOW_TYPE_NORMAL"); + _glfw.x11.NET_WORKAREA = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_WORKAREA"); + _glfw.x11.NET_CURRENT_DESKTOP = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_CURRENT_DESKTOP"); + _glfw.x11.NET_ACTIVE_WINDOW = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_ACTIVE_WINDOW"); + _glfw.x11.NET_FRAME_EXTENTS = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_FRAME_EXTENTS"); + _glfw.x11.NET_REQUEST_FRAME_EXTENTS = + getAtomIfSupported(supportedAtoms, atomCount, "_NET_REQUEST_FRAME_EXTENTS"); + + if (supportedAtoms) + XFree(supportedAtoms); +} + +// Look for and initialize supported X11 extensions +// +static GLFWbool initExtensions(void) +{ +#if defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.x11.vidmode.handle = _glfwPlatformLoadModule("libXxf86vm.so"); +#else + _glfw.x11.vidmode.handle = _glfwPlatformLoadModule("libXxf86vm.so.1"); +#endif + if (_glfw.x11.vidmode.handle) + { + _glfw.x11.vidmode.QueryExtension = (PFN_XF86VidModeQueryExtension) + _glfwPlatformGetModuleSymbol(_glfw.x11.vidmode.handle, "XF86VidModeQueryExtension"); + _glfw.x11.vidmode.GetGammaRamp = (PFN_XF86VidModeGetGammaRamp) + _glfwPlatformGetModuleSymbol(_glfw.x11.vidmode.handle, "XF86VidModeGetGammaRamp"); + _glfw.x11.vidmode.SetGammaRamp = (PFN_XF86VidModeSetGammaRamp) + _glfwPlatformGetModuleSymbol(_glfw.x11.vidmode.handle, "XF86VidModeSetGammaRamp"); + _glfw.x11.vidmode.GetGammaRampSize = (PFN_XF86VidModeGetGammaRampSize) + _glfwPlatformGetModuleSymbol(_glfw.x11.vidmode.handle, "XF86VidModeGetGammaRampSize"); + + _glfw.x11.vidmode.available = + XF86VidModeQueryExtension(_glfw.x11.display, + &_glfw.x11.vidmode.eventBase, + &_glfw.x11.vidmode.errorBase); + } + +#if defined(__CYGWIN__) + _glfw.x11.xi.handle = _glfwPlatformLoadModule("libXi-6.so"); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.x11.xi.handle = _glfwPlatformLoadModule("libXi.so"); +#else + _glfw.x11.xi.handle = _glfwPlatformLoadModule("libXi.so.6"); +#endif + if (_glfw.x11.xi.handle) + { + _glfw.x11.xi.QueryVersion = (PFN_XIQueryVersion) + _glfwPlatformGetModuleSymbol(_glfw.x11.xi.handle, "XIQueryVersion"); + _glfw.x11.xi.SelectEvents = (PFN_XISelectEvents) + _glfwPlatformGetModuleSymbol(_glfw.x11.xi.handle, "XISelectEvents"); + + if (XQueryExtension(_glfw.x11.display, + "XInputExtension", + &_glfw.x11.xi.majorOpcode, + &_glfw.x11.xi.eventBase, + &_glfw.x11.xi.errorBase)) + { + _glfw.x11.xi.major = 2; + _glfw.x11.xi.minor = 0; + + if (XIQueryVersion(_glfw.x11.display, + &_glfw.x11.xi.major, + &_glfw.x11.xi.minor) == Success) + { + _glfw.x11.xi.available = GLFW_TRUE; + } + } + } + +#if defined(__CYGWIN__) + _glfw.x11.randr.handle = _glfwPlatformLoadModule("libXrandr-2.so"); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.x11.randr.handle = _glfwPlatformLoadModule("libXrandr.so"); +#else + _glfw.x11.randr.handle = _glfwPlatformLoadModule("libXrandr.so.2"); +#endif + if (_glfw.x11.randr.handle) + { + _glfw.x11.randr.AllocGamma = (PFN_XRRAllocGamma) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRAllocGamma"); + _glfw.x11.randr.FreeGamma = (PFN_XRRFreeGamma) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRFreeGamma"); + _glfw.x11.randr.FreeCrtcInfo = (PFN_XRRFreeCrtcInfo) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRFreeCrtcInfo"); + _glfw.x11.randr.FreeGamma = (PFN_XRRFreeGamma) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRFreeGamma"); + _glfw.x11.randr.FreeOutputInfo = (PFN_XRRFreeOutputInfo) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRFreeOutputInfo"); + _glfw.x11.randr.FreeScreenResources = (PFN_XRRFreeScreenResources) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRFreeScreenResources"); + _glfw.x11.randr.GetCrtcGamma = (PFN_XRRGetCrtcGamma) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRGetCrtcGamma"); + _glfw.x11.randr.GetCrtcGammaSize = (PFN_XRRGetCrtcGammaSize) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRGetCrtcGammaSize"); + _glfw.x11.randr.GetCrtcInfo = (PFN_XRRGetCrtcInfo) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRGetCrtcInfo"); + _glfw.x11.randr.GetOutputInfo = (PFN_XRRGetOutputInfo) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRGetOutputInfo"); + _glfw.x11.randr.GetOutputPrimary = (PFN_XRRGetOutputPrimary) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRGetOutputPrimary"); + _glfw.x11.randr.GetScreenResourcesCurrent = (PFN_XRRGetScreenResourcesCurrent) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRGetScreenResourcesCurrent"); + _glfw.x11.randr.QueryExtension = (PFN_XRRQueryExtension) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRQueryExtension"); + _glfw.x11.randr.QueryVersion = (PFN_XRRQueryVersion) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRQueryVersion"); + _glfw.x11.randr.SelectInput = (PFN_XRRSelectInput) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRSelectInput"); + _glfw.x11.randr.SetCrtcConfig = (PFN_XRRSetCrtcConfig) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRSetCrtcConfig"); + _glfw.x11.randr.SetCrtcGamma = (PFN_XRRSetCrtcGamma) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRSetCrtcGamma"); + _glfw.x11.randr.UpdateConfiguration = (PFN_XRRUpdateConfiguration) + _glfwPlatformGetModuleSymbol(_glfw.x11.randr.handle, "XRRUpdateConfiguration"); + + if (XRRQueryExtension(_glfw.x11.display, + &_glfw.x11.randr.eventBase, + &_glfw.x11.randr.errorBase)) + { + if (XRRQueryVersion(_glfw.x11.display, + &_glfw.x11.randr.major, + &_glfw.x11.randr.minor)) + { + // The GLFW RandR path requires at least version 1.3 + if (_glfw.x11.randr.major > 1 || _glfw.x11.randr.minor >= 3) + _glfw.x11.randr.available = GLFW_TRUE; + } + else + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to query RandR version"); + } + } + } + + if (_glfw.x11.randr.available) + { + XRRScreenResources* sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, + _glfw.x11.root); + + if (!sr->ncrtc || !XRRGetCrtcGammaSize(_glfw.x11.display, sr->crtcs[0])) + { + // This is likely an older Nvidia driver with broken gamma support + // Flag it as useless and fall back to xf86vm gamma, if available + _glfw.x11.randr.gammaBroken = GLFW_TRUE; + } + + if (!sr->ncrtc) + { + // A system without CRTCs is likely a system with broken RandR + // Disable the RandR monitor path and fall back to core functions + _glfw.x11.randr.monitorBroken = GLFW_TRUE; + } + + XRRFreeScreenResources(sr); + } + + if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) + { + XRRSelectInput(_glfw.x11.display, _glfw.x11.root, + RROutputChangeNotifyMask); + } + +#if defined(__CYGWIN__) + _glfw.x11.xcursor.handle = _glfwPlatformLoadModule("libXcursor-1.so"); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.x11.xcursor.handle = _glfwPlatformLoadModule("libXcursor.so"); +#else + _glfw.x11.xcursor.handle = _glfwPlatformLoadModule("libXcursor.so.1"); +#endif + if (_glfw.x11.xcursor.handle) + { + _glfw.x11.xcursor.ImageCreate = (PFN_XcursorImageCreate) + _glfwPlatformGetModuleSymbol(_glfw.x11.xcursor.handle, "XcursorImageCreate"); + _glfw.x11.xcursor.ImageDestroy = (PFN_XcursorImageDestroy) + _glfwPlatformGetModuleSymbol(_glfw.x11.xcursor.handle, "XcursorImageDestroy"); + _glfw.x11.xcursor.ImageLoadCursor = (PFN_XcursorImageLoadCursor) + _glfwPlatformGetModuleSymbol(_glfw.x11.xcursor.handle, "XcursorImageLoadCursor"); + _glfw.x11.xcursor.GetTheme = (PFN_XcursorGetTheme) + _glfwPlatformGetModuleSymbol(_glfw.x11.xcursor.handle, "XcursorGetTheme"); + _glfw.x11.xcursor.GetDefaultSize = (PFN_XcursorGetDefaultSize) + _glfwPlatformGetModuleSymbol(_glfw.x11.xcursor.handle, "XcursorGetDefaultSize"); + _glfw.x11.xcursor.LibraryLoadImage = (PFN_XcursorLibraryLoadImage) + _glfwPlatformGetModuleSymbol(_glfw.x11.xcursor.handle, "XcursorLibraryLoadImage"); + } + +#if defined(__CYGWIN__) + _glfw.x11.xinerama.handle = _glfwPlatformLoadModule("libXinerama-1.so"); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.x11.xinerama.handle = _glfwPlatformLoadModule("libXinerama.so"); +#else + _glfw.x11.xinerama.handle = _glfwPlatformLoadModule("libXinerama.so.1"); +#endif + if (_glfw.x11.xinerama.handle) + { + _glfw.x11.xinerama.IsActive = (PFN_XineramaIsActive) + _glfwPlatformGetModuleSymbol(_glfw.x11.xinerama.handle, "XineramaIsActive"); + _glfw.x11.xinerama.QueryExtension = (PFN_XineramaQueryExtension) + _glfwPlatformGetModuleSymbol(_glfw.x11.xinerama.handle, "XineramaQueryExtension"); + _glfw.x11.xinerama.QueryScreens = (PFN_XineramaQueryScreens) + _glfwPlatformGetModuleSymbol(_glfw.x11.xinerama.handle, "XineramaQueryScreens"); + + if (XineramaQueryExtension(_glfw.x11.display, + &_glfw.x11.xinerama.major, + &_glfw.x11.xinerama.minor)) + { + if (XineramaIsActive(_glfw.x11.display)) + _glfw.x11.xinerama.available = GLFW_TRUE; + } + } + + _glfw.x11.xkb.major = 1; + _glfw.x11.xkb.minor = 0; + _glfw.x11.xkb.available = + XkbQueryExtension(_glfw.x11.display, + &_glfw.x11.xkb.majorOpcode, + &_glfw.x11.xkb.eventBase, + &_glfw.x11.xkb.errorBase, + &_glfw.x11.xkb.major, + &_glfw.x11.xkb.minor); + + if (_glfw.x11.xkb.available) + { + Bool supported; + + if (XkbSetDetectableAutoRepeat(_glfw.x11.display, True, &supported)) + { + if (supported) + _glfw.x11.xkb.detectable = GLFW_TRUE; + } + + XkbStateRec state; + if (XkbGetState(_glfw.x11.display, XkbUseCoreKbd, &state) == Success) + _glfw.x11.xkb.group = (unsigned int)state.group; + + XkbSelectEventDetails(_glfw.x11.display, XkbUseCoreKbd, XkbStateNotify, + XkbGroupStateMask, XkbGroupStateMask); + } + + if (_glfw.hints.init.x11.xcbVulkanSurface) + { +#if defined(__CYGWIN__) + _glfw.x11.x11xcb.handle = _glfwPlatformLoadModule("libX11-xcb-1.so"); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.x11.x11xcb.handle = _glfwPlatformLoadModule("libX11-xcb.so"); +#else + _glfw.x11.x11xcb.handle = _glfwPlatformLoadModule("libX11-xcb.so.1"); +#endif + } + + if (_glfw.x11.x11xcb.handle) + { + _glfw.x11.x11xcb.GetXCBConnection = (PFN_XGetXCBConnection) + _glfwPlatformGetModuleSymbol(_glfw.x11.x11xcb.handle, "XGetXCBConnection"); + } + +#if defined(__CYGWIN__) + _glfw.x11.xrender.handle = _glfwPlatformLoadModule("libXrender-1.so"); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.x11.xrender.handle = _glfwPlatformLoadModule("libXrender.so"); +#else + _glfw.x11.xrender.handle = _glfwPlatformLoadModule("libXrender.so.1"); +#endif + if (_glfw.x11.xrender.handle) + { + _glfw.x11.xrender.QueryExtension = (PFN_XRenderQueryExtension) + _glfwPlatformGetModuleSymbol(_glfw.x11.xrender.handle, "XRenderQueryExtension"); + _glfw.x11.xrender.QueryVersion = (PFN_XRenderQueryVersion) + _glfwPlatformGetModuleSymbol(_glfw.x11.xrender.handle, "XRenderQueryVersion"); + _glfw.x11.xrender.FindVisualFormat = (PFN_XRenderFindVisualFormat) + _glfwPlatformGetModuleSymbol(_glfw.x11.xrender.handle, "XRenderFindVisualFormat"); + + if (XRenderQueryExtension(_glfw.x11.display, + &_glfw.x11.xrender.errorBase, + &_glfw.x11.xrender.eventBase)) + { + if (XRenderQueryVersion(_glfw.x11.display, + &_glfw.x11.xrender.major, + &_glfw.x11.xrender.minor)) + { + _glfw.x11.xrender.available = GLFW_TRUE; + } + } + } + +#if defined(__CYGWIN__) + _glfw.x11.xshape.handle = _glfwPlatformLoadModule("libXext-6.so"); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + _glfw.x11.xshape.handle = _glfwPlatformLoadModule("libXext.so"); +#else + _glfw.x11.xshape.handle = _glfwPlatformLoadModule("libXext.so.6"); +#endif + if (_glfw.x11.xshape.handle) + { + _glfw.x11.xshape.QueryExtension = (PFN_XShapeQueryExtension) + _glfwPlatformGetModuleSymbol(_glfw.x11.xshape.handle, "XShapeQueryExtension"); + _glfw.x11.xshape.ShapeCombineRegion = (PFN_XShapeCombineRegion) + _glfwPlatformGetModuleSymbol(_glfw.x11.xshape.handle, "XShapeCombineRegion"); + _glfw.x11.xshape.QueryVersion = (PFN_XShapeQueryVersion) + _glfwPlatformGetModuleSymbol(_glfw.x11.xshape.handle, "XShapeQueryVersion"); + _glfw.x11.xshape.ShapeCombineMask = (PFN_XShapeCombineMask) + _glfwPlatformGetModuleSymbol(_glfw.x11.xshape.handle, "XShapeCombineMask"); + + if (XShapeQueryExtension(_glfw.x11.display, + &_glfw.x11.xshape.errorBase, + &_glfw.x11.xshape.eventBase)) + { + if (XShapeQueryVersion(_glfw.x11.display, + &_glfw.x11.xshape.major, + &_glfw.x11.xshape.minor)) + { + _glfw.x11.xshape.available = GLFW_TRUE; + } + } + } + + // Update the key code LUT + // FIXME: We should listen to XkbMapNotify events to track changes to + // the keyboard mapping. + createKeyTables(); + + // String format atoms + _glfw.x11.NULL_ = XInternAtom(_glfw.x11.display, "NULL", False); + _glfw.x11.UTF8_STRING = XInternAtom(_glfw.x11.display, "UTF8_STRING", False); + _glfw.x11.ATOM_PAIR = XInternAtom(_glfw.x11.display, "ATOM_PAIR", False); + + // Custom selection property atom + _glfw.x11.GLFW_SELECTION = + XInternAtom(_glfw.x11.display, "GLFW_SELECTION", False); + + // ICCCM standard clipboard atoms + _glfw.x11.TARGETS = XInternAtom(_glfw.x11.display, "TARGETS", False); + _glfw.x11.MULTIPLE = XInternAtom(_glfw.x11.display, "MULTIPLE", False); + _glfw.x11.PRIMARY = XInternAtom(_glfw.x11.display, "PRIMARY", False); + _glfw.x11.INCR = XInternAtom(_glfw.x11.display, "INCR", False); + _glfw.x11.CLIPBOARD = XInternAtom(_glfw.x11.display, "CLIPBOARD", False); + + // Clipboard manager atoms + _glfw.x11.CLIPBOARD_MANAGER = + XInternAtom(_glfw.x11.display, "CLIPBOARD_MANAGER", False); + _glfw.x11.SAVE_TARGETS = + XInternAtom(_glfw.x11.display, "SAVE_TARGETS", False); + + // Xdnd (drag and drop) atoms + _glfw.x11.XdndAware = XInternAtom(_glfw.x11.display, "XdndAware", False); + _glfw.x11.XdndEnter = XInternAtom(_glfw.x11.display, "XdndEnter", False); + _glfw.x11.XdndPosition = XInternAtom(_glfw.x11.display, "XdndPosition", False); + _glfw.x11.XdndStatus = XInternAtom(_glfw.x11.display, "XdndStatus", False); + _glfw.x11.XdndActionCopy = XInternAtom(_glfw.x11.display, "XdndActionCopy", False); + _glfw.x11.XdndDrop = XInternAtom(_glfw.x11.display, "XdndDrop", False); + _glfw.x11.XdndFinished = XInternAtom(_glfw.x11.display, "XdndFinished", False); + _glfw.x11.XdndSelection = XInternAtom(_glfw.x11.display, "XdndSelection", False); + _glfw.x11.XdndTypeList = XInternAtom(_glfw.x11.display, "XdndTypeList", False); + _glfw.x11.text_uri_list = XInternAtom(_glfw.x11.display, "text/uri-list", False); + + // ICCCM, EWMH and Motif window property atoms + // These can be set safely even without WM support + // The EWMH atoms that require WM support are handled in detectEWMH + _glfw.x11.WM_PROTOCOLS = + XInternAtom(_glfw.x11.display, "WM_PROTOCOLS", False); + _glfw.x11.WM_STATE = + XInternAtom(_glfw.x11.display, "WM_STATE", False); + _glfw.x11.WM_DELETE_WINDOW = + XInternAtom(_glfw.x11.display, "WM_DELETE_WINDOW", False); + _glfw.x11.NET_SUPPORTED = + XInternAtom(_glfw.x11.display, "_NET_SUPPORTED", False); + _glfw.x11.NET_SUPPORTING_WM_CHECK = + XInternAtom(_glfw.x11.display, "_NET_SUPPORTING_WM_CHECK", False); + _glfw.x11.NET_WM_ICON = + XInternAtom(_glfw.x11.display, "_NET_WM_ICON", False); + _glfw.x11.NET_WM_PING = + XInternAtom(_glfw.x11.display, "_NET_WM_PING", False); + _glfw.x11.NET_WM_PID = + XInternAtom(_glfw.x11.display, "_NET_WM_PID", False); + _glfw.x11.NET_WM_NAME = + XInternAtom(_glfw.x11.display, "_NET_WM_NAME", False); + _glfw.x11.NET_WM_ICON_NAME = + XInternAtom(_glfw.x11.display, "_NET_WM_ICON_NAME", False); + _glfw.x11.NET_WM_BYPASS_COMPOSITOR = + XInternAtom(_glfw.x11.display, "_NET_WM_BYPASS_COMPOSITOR", False); + _glfw.x11.NET_WM_WINDOW_OPACITY = + XInternAtom(_glfw.x11.display, "_NET_WM_WINDOW_OPACITY", False); + _glfw.x11.MOTIF_WM_HINTS = + XInternAtom(_glfw.x11.display, "_MOTIF_WM_HINTS", False); + + // The compositing manager selection name contains the screen number + { + char name[32]; + snprintf(name, sizeof(name), "_NET_WM_CM_S%u", _glfw.x11.screen); + _glfw.x11.NET_WM_CM_Sx = XInternAtom(_glfw.x11.display, name, False); + } + + // Detect whether an EWMH-conformant window manager is running + detectEWMH(); + + return GLFW_TRUE; +} + +// Retrieve system content scale via folklore heuristics +// +static void getSystemContentScale(float* xscale, float* yscale) +{ + // Start by assuming the default X11 DPI + // NOTE: Some desktop environments (KDE) may remove the Xft.dpi field when it + // would be set to 96, so assume that is the case if we cannot find it + float xdpi = 96.f, ydpi = 96.f; + + // NOTE: Basing the scale on Xft.dpi where available should provide the most + // consistent user experience (matches Qt, Gtk, etc), although not + // always the most accurate one + char* rms = XResourceManagerString(_glfw.x11.display); + if (rms) + { + XrmDatabase db = XrmGetStringDatabase(rms); + if (db) + { + XrmValue value; + char* type = NULL; + + if (XrmGetResource(db, "Xft.dpi", "Xft.Dpi", &type, &value)) + { + if (type && strcmp(type, "String") == 0) + xdpi = ydpi = atof(value.addr); + } + + XrmDestroyDatabase(db); + } + } + + *xscale = xdpi / 96.f; + *yscale = ydpi / 96.f; +} + +// Create a blank cursor for hidden and disabled cursor modes +// +static Cursor createHiddenCursor(void) +{ + unsigned char pixels[16 * 16 * 4] = { 0 }; + GLFWimage image = { 16, 16, pixels }; + return _glfwCreateNativeCursorX11(&image, 0, 0); +} + +// Create a helper window for IPC +// +static Window createHelperWindow(void) +{ + XSetWindowAttributes wa; + wa.event_mask = PropertyChangeMask; + + return XCreateWindow(_glfw.x11.display, _glfw.x11.root, + 0, 0, 1, 1, 0, 0, + InputOnly, + DefaultVisual(_glfw.x11.display, _glfw.x11.screen), + CWEventMask, &wa); +} + +// Create the pipe for empty events without assumuing the OS has pipe2(2) +// +static GLFWbool createEmptyEventPipe(void) +{ + if (pipe(_glfw.x11.emptyEventPipe) != 0) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to create empty event pipe: %s", + strerror(errno)); + return GLFW_FALSE; + } + + for (int i = 0; i < 2; i++) + { + const int sf = fcntl(_glfw.x11.emptyEventPipe[i], F_GETFL, 0); + const int df = fcntl(_glfw.x11.emptyEventPipe[i], F_GETFD, 0); + + if (sf == -1 || df == -1 || + fcntl(_glfw.x11.emptyEventPipe[i], F_SETFL, sf | O_NONBLOCK) == -1 || + fcntl(_glfw.x11.emptyEventPipe[i], F_SETFD, df | FD_CLOEXEC) == -1) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to set flags for empty event pipe: %s", + strerror(errno)); + return GLFW_FALSE; + } + } + + return GLFW_TRUE; +} + +// X error handler +// +static int errorHandler(Display *display, XErrorEvent* event) +{ + if (_glfw.x11.display != display) + return 0; + + _glfw.x11.errorCode = event->error_code; + return 0; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Sets the X error handler callback +// +void _glfwGrabErrorHandlerX11(void) +{ + assert(_glfw.x11.errorHandler == NULL); + _glfw.x11.errorCode = Success; + _glfw.x11.errorHandler = XSetErrorHandler(errorHandler); +} + +// Clears the X error handler callback +// +void _glfwReleaseErrorHandlerX11(void) +{ + // Synchronize to make sure all commands are processed + XSync(_glfw.x11.display, False); + XSetErrorHandler(_glfw.x11.errorHandler); + _glfw.x11.errorHandler = NULL; +} + +// Reports the specified error, appending information about the last X error +// +void _glfwInputErrorX11(int error, const char* message) +{ + char buffer[_GLFW_MESSAGE_SIZE]; + XGetErrorText(_glfw.x11.display, _glfw.x11.errorCode, + buffer, sizeof(buffer)); + + _glfwInputError(error, "%s: %s", message, buffer); +} + +// Creates a native cursor object from the specified image and hotspot +// +Cursor _glfwCreateNativeCursorX11(const GLFWimage* image, int xhot, int yhot) +{ + Cursor cursor; + + if (!_glfw.x11.xcursor.handle) + return None; + + XcursorImage* native = XcursorImageCreate(image->width, image->height); + if (native == NULL) + return None; + + native->xhot = xhot; + native->yhot = yhot; + + unsigned char* source = (unsigned char*) image->pixels; + XcursorPixel* target = native->pixels; + + for (int i = 0; i < image->width * image->height; i++, target++, source += 4) + { + unsigned int alpha = source[3]; + + *target = (alpha << 24) | + ((unsigned char) ((source[0] * alpha) / 255) << 16) | + ((unsigned char) ((source[1] * alpha) / 255) << 8) | + ((unsigned char) ((source[2] * alpha) / 255) << 0); + } + + cursor = XcursorImageLoadCursor(_glfw.x11.display, native); + XcursorImageDestroy(native); + + return cursor; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwConnectX11(int platformID, _GLFWplatform* platform) +{ + const _GLFWplatform x11 = + { + GLFW_PLATFORM_X11, + _glfwInitX11, + _glfwTerminateX11, + _glfwGetCursorPosX11, + _glfwSetCursorPosX11, + _glfwSetCursorModeX11, + _glfwSetRawMouseMotionX11, + _glfwRawMouseMotionSupportedX11, + _glfwCreateCursorX11, + _glfwCreateStandardCursorX11, + _glfwDestroyCursorX11, + _glfwSetCursorX11, + _glfwGetScancodeNameX11, + _glfwGetKeyScancodeX11, + _glfwSetClipboardStringX11, + _glfwGetClipboardStringX11, +#if defined(_GLFW_LINUX_JOYSTICK) + _glfwInitJoysticksLinux, + _glfwTerminateJoysticksLinux, + _glfwPollJoystickLinux, + _glfwGetMappingNameLinux, + _glfwUpdateGamepadGUIDLinux, +#else + _glfwInitJoysticksNull, + _glfwTerminateJoysticksNull, + _glfwPollJoystickNull, + _glfwGetMappingNameNull, + _glfwUpdateGamepadGUIDNull, +#endif + _glfwFreeMonitorX11, + _glfwGetMonitorPosX11, + _glfwGetMonitorContentScaleX11, + _glfwGetMonitorWorkareaX11, + _glfwGetVideoModesX11, + _glfwGetVideoModeX11, + _glfwGetGammaRampX11, + _glfwSetGammaRampX11, + _glfwCreateWindowX11, + _glfwDestroyWindowX11, + _glfwSetWindowTitleX11, + _glfwSetWindowIconX11, + _glfwGetWindowPosX11, + _glfwSetWindowPosX11, + _glfwGetWindowSizeX11, + _glfwSetWindowSizeX11, + _glfwSetWindowSizeLimitsX11, + _glfwSetWindowAspectRatioX11, + _glfwGetFramebufferSizeX11, + _glfwGetWindowFrameSizeX11, + _glfwGetWindowContentScaleX11, + _glfwIconifyWindowX11, + _glfwRestoreWindowX11, + _glfwMaximizeWindowX11, + _glfwShowWindowX11, + _glfwHideWindowX11, + _glfwRequestWindowAttentionX11, + _glfwFocusWindowX11, + _glfwSetWindowMonitorX11, + _glfwWindowFocusedX11, + _glfwWindowIconifiedX11, + _glfwWindowVisibleX11, + _glfwWindowMaximizedX11, + _glfwWindowHoveredX11, + _glfwFramebufferTransparentX11, + _glfwGetWindowOpacityX11, + _glfwSetWindowResizableX11, + _glfwSetWindowDecoratedX11, + _glfwSetWindowFloatingX11, + _glfwSetWindowOpacityX11, + _glfwSetWindowMousePassthroughX11, + _glfwPollEventsX11, + _glfwWaitEventsX11, + _glfwWaitEventsTimeoutX11, + _glfwPostEmptyEventX11, + _glfwGetEGLPlatformX11, + _glfwGetEGLNativeDisplayX11, + _glfwGetEGLNativeWindowX11, + _glfwGetRequiredInstanceExtensionsX11, + _glfwGetPhysicalDevicePresentationSupportX11, + _glfwCreateWindowSurfaceX11, + }; + + // HACK: If the application has left the locale as "C" then both wide + // character text input and explicit UTF-8 input via XIM will break + // This sets the CTYPE part of the current locale from the environment + // in the hope that it is set to something more sane than "C" + if (strcmp(setlocale(LC_CTYPE, NULL), "C") == 0) + setlocale(LC_CTYPE, ""); + +#if defined(__CYGWIN__) + void* module = _glfwPlatformLoadModule("libX11-6.so"); +#elif defined(__OpenBSD__) || defined(__NetBSD__) + void* module = _glfwPlatformLoadModule("libX11.so"); +#else + void* module = _glfwPlatformLoadModule("libX11.so.6"); +#endif + if (!module) + { + if (platformID == GLFW_PLATFORM_X11) + _glfwInputError(GLFW_PLATFORM_ERROR, "X11: Failed to load Xlib"); + + return GLFW_FALSE; + } + + PFN_XInitThreads XInitThreads = (PFN_XInitThreads) + _glfwPlatformGetModuleSymbol(module, "XInitThreads"); + PFN_XrmInitialize XrmInitialize = (PFN_XrmInitialize) + _glfwPlatformGetModuleSymbol(module, "XrmInitialize"); + PFN_XOpenDisplay XOpenDisplay = (PFN_XOpenDisplay) + _glfwPlatformGetModuleSymbol(module, "XOpenDisplay"); + if (!XInitThreads || !XrmInitialize || !XOpenDisplay) + { + if (platformID == GLFW_PLATFORM_X11) + _glfwInputError(GLFW_PLATFORM_ERROR, "X11: Failed to load Xlib entry point"); + + _glfwPlatformFreeModule(module); + return GLFW_FALSE; + } + + XInitThreads(); + XrmInitialize(); + + Display* display = XOpenDisplay(NULL); + if (!display) + { + if (platformID == GLFW_PLATFORM_X11) + { + const char* name = getenv("DISPLAY"); + if (name) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, + "X11: Failed to open display %s", name); + } + else + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, + "X11: The DISPLAY environment variable is missing"); + } + } + + _glfwPlatformFreeModule(module); + return GLFW_FALSE; + } + + _glfw.x11.display = display; + _glfw.x11.xlib.handle = module; + + *platform = x11; + return GLFW_TRUE; +} + +int _glfwInitX11(void) +{ + _glfw.x11.xlib.AllocClassHint = (PFN_XAllocClassHint) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XAllocClassHint"); + _glfw.x11.xlib.AllocSizeHints = (PFN_XAllocSizeHints) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XAllocSizeHints"); + _glfw.x11.xlib.AllocWMHints = (PFN_XAllocWMHints) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XAllocWMHints"); + _glfw.x11.xlib.ChangeProperty = (PFN_XChangeProperty) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XChangeProperty"); + _glfw.x11.xlib.ChangeWindowAttributes = (PFN_XChangeWindowAttributes) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XChangeWindowAttributes"); + _glfw.x11.xlib.CheckIfEvent = (PFN_XCheckIfEvent) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCheckIfEvent"); + _glfw.x11.xlib.CheckTypedWindowEvent = (PFN_XCheckTypedWindowEvent) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCheckTypedWindowEvent"); + _glfw.x11.xlib.CloseDisplay = (PFN_XCloseDisplay) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCloseDisplay"); + _glfw.x11.xlib.CloseIM = (PFN_XCloseIM) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCloseIM"); + _glfw.x11.xlib.ConvertSelection = (PFN_XConvertSelection) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XConvertSelection"); + _glfw.x11.xlib.CreateColormap = (PFN_XCreateColormap) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCreateColormap"); + _glfw.x11.xlib.CreateFontCursor = (PFN_XCreateFontCursor) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCreateFontCursor"); + _glfw.x11.xlib.CreateIC = (PFN_XCreateIC) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCreateIC"); + _glfw.x11.xlib.CreateRegion = (PFN_XCreateRegion) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCreateRegion"); + _glfw.x11.xlib.CreateWindow = (PFN_XCreateWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XCreateWindow"); + _glfw.x11.xlib.DefineCursor = (PFN_XDefineCursor) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XDefineCursor"); + _glfw.x11.xlib.DeleteContext = (PFN_XDeleteContext) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XDeleteContext"); + _glfw.x11.xlib.DeleteProperty = (PFN_XDeleteProperty) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XDeleteProperty"); + _glfw.x11.xlib.DestroyIC = (PFN_XDestroyIC) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XDestroyIC"); + _glfw.x11.xlib.DestroyRegion = (PFN_XDestroyRegion) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XDestroyRegion"); + _glfw.x11.xlib.DestroyWindow = (PFN_XDestroyWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XDestroyWindow"); + _glfw.x11.xlib.DisplayKeycodes = (PFN_XDisplayKeycodes) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XDisplayKeycodes"); + _glfw.x11.xlib.EventsQueued = (PFN_XEventsQueued) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XEventsQueued"); + _glfw.x11.xlib.FilterEvent = (PFN_XFilterEvent) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XFilterEvent"); + _glfw.x11.xlib.FindContext = (PFN_XFindContext) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XFindContext"); + _glfw.x11.xlib.Flush = (PFN_XFlush) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XFlush"); + _glfw.x11.xlib.Free = (PFN_XFree) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XFree"); + _glfw.x11.xlib.FreeColormap = (PFN_XFreeColormap) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XFreeColormap"); + _glfw.x11.xlib.FreeCursor = (PFN_XFreeCursor) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XFreeCursor"); + _glfw.x11.xlib.FreeEventData = (PFN_XFreeEventData) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XFreeEventData"); + _glfw.x11.xlib.GetErrorText = (PFN_XGetErrorText) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetErrorText"); + _glfw.x11.xlib.GetEventData = (PFN_XGetEventData) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetEventData"); + _glfw.x11.xlib.GetICValues = (PFN_XGetICValues) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetICValues"); + _glfw.x11.xlib.GetIMValues = (PFN_XGetIMValues) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetIMValues"); + _glfw.x11.xlib.GetInputFocus = (PFN_XGetInputFocus) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetInputFocus"); + _glfw.x11.xlib.GetKeyboardMapping = (PFN_XGetKeyboardMapping) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetKeyboardMapping"); + _glfw.x11.xlib.GetScreenSaver = (PFN_XGetScreenSaver) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetScreenSaver"); + _glfw.x11.xlib.GetSelectionOwner = (PFN_XGetSelectionOwner) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetSelectionOwner"); + _glfw.x11.xlib.GetVisualInfo = (PFN_XGetVisualInfo) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetVisualInfo"); + _glfw.x11.xlib.GetWMNormalHints = (PFN_XGetWMNormalHints) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetWMNormalHints"); + _glfw.x11.xlib.GetWindowAttributes = (PFN_XGetWindowAttributes) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetWindowAttributes"); + _glfw.x11.xlib.GetWindowProperty = (PFN_XGetWindowProperty) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGetWindowProperty"); + _glfw.x11.xlib.GrabPointer = (PFN_XGrabPointer) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XGrabPointer"); + _glfw.x11.xlib.IconifyWindow = (PFN_XIconifyWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XIconifyWindow"); + _glfw.x11.xlib.InternAtom = (PFN_XInternAtom) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XInternAtom"); + _glfw.x11.xlib.LookupString = (PFN_XLookupString) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XLookupString"); + _glfw.x11.xlib.MapRaised = (PFN_XMapRaised) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XMapRaised"); + _glfw.x11.xlib.MapWindow = (PFN_XMapWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XMapWindow"); + _glfw.x11.xlib.MoveResizeWindow = (PFN_XMoveResizeWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XMoveResizeWindow"); + _glfw.x11.xlib.MoveWindow = (PFN_XMoveWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XMoveWindow"); + _glfw.x11.xlib.NextEvent = (PFN_XNextEvent) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XNextEvent"); + _glfw.x11.xlib.OpenIM = (PFN_XOpenIM) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XOpenIM"); + _glfw.x11.xlib.PeekEvent = (PFN_XPeekEvent) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XPeekEvent"); + _glfw.x11.xlib.Pending = (PFN_XPending) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XPending"); + _glfw.x11.xlib.QueryExtension = (PFN_XQueryExtension) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XQueryExtension"); + _glfw.x11.xlib.QueryPointer = (PFN_XQueryPointer) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XQueryPointer"); + _glfw.x11.xlib.RaiseWindow = (PFN_XRaiseWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XRaiseWindow"); + _glfw.x11.xlib.RegisterIMInstantiateCallback = (PFN_XRegisterIMInstantiateCallback) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XRegisterIMInstantiateCallback"); + _glfw.x11.xlib.ResizeWindow = (PFN_XResizeWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XResizeWindow"); + _glfw.x11.xlib.ResourceManagerString = (PFN_XResourceManagerString) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XResourceManagerString"); + _glfw.x11.xlib.SaveContext = (PFN_XSaveContext) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSaveContext"); + _glfw.x11.xlib.SelectInput = (PFN_XSelectInput) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSelectInput"); + _glfw.x11.xlib.SendEvent = (PFN_XSendEvent) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSendEvent"); + _glfw.x11.xlib.SetClassHint = (PFN_XSetClassHint) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetClassHint"); + _glfw.x11.xlib.SetErrorHandler = (PFN_XSetErrorHandler) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetErrorHandler"); + _glfw.x11.xlib.SetICFocus = (PFN_XSetICFocus) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetICFocus"); + _glfw.x11.xlib.SetIMValues = (PFN_XSetIMValues) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetIMValues"); + _glfw.x11.xlib.SetInputFocus = (PFN_XSetInputFocus) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetInputFocus"); + _glfw.x11.xlib.SetLocaleModifiers = (PFN_XSetLocaleModifiers) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetLocaleModifiers"); + _glfw.x11.xlib.SetScreenSaver = (PFN_XSetScreenSaver) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetScreenSaver"); + _glfw.x11.xlib.SetSelectionOwner = (PFN_XSetSelectionOwner) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetSelectionOwner"); + _glfw.x11.xlib.SetWMHints = (PFN_XSetWMHints) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetWMHints"); + _glfw.x11.xlib.SetWMNormalHints = (PFN_XSetWMNormalHints) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetWMNormalHints"); + _glfw.x11.xlib.SetWMProtocols = (PFN_XSetWMProtocols) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSetWMProtocols"); + _glfw.x11.xlib.SupportsLocale = (PFN_XSupportsLocale) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSupportsLocale"); + _glfw.x11.xlib.Sync = (PFN_XSync) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XSync"); + _glfw.x11.xlib.TranslateCoordinates = (PFN_XTranslateCoordinates) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XTranslateCoordinates"); + _glfw.x11.xlib.UndefineCursor = (PFN_XUndefineCursor) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XUndefineCursor"); + _glfw.x11.xlib.UngrabPointer = (PFN_XUngrabPointer) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XUngrabPointer"); + _glfw.x11.xlib.UnmapWindow = (PFN_XUnmapWindow) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XUnmapWindow"); + _glfw.x11.xlib.UnsetICFocus = (PFN_XUnsetICFocus) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XUnsetICFocus"); + _glfw.x11.xlib.VisualIDFromVisual = (PFN_XVisualIDFromVisual) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XVisualIDFromVisual"); + _glfw.x11.xlib.WarpPointer = (PFN_XWarpPointer) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XWarpPointer"); + _glfw.x11.xkb.FreeKeyboard = (PFN_XkbFreeKeyboard) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbFreeKeyboard"); + _glfw.x11.xkb.FreeNames = (PFN_XkbFreeNames) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbFreeNames"); + _glfw.x11.xkb.GetMap = (PFN_XkbGetMap) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbGetMap"); + _glfw.x11.xkb.GetNames = (PFN_XkbGetNames) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbGetNames"); + _glfw.x11.xkb.GetState = (PFN_XkbGetState) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbGetState"); + _glfw.x11.xkb.KeycodeToKeysym = (PFN_XkbKeycodeToKeysym) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbKeycodeToKeysym"); + _glfw.x11.xkb.QueryExtension = (PFN_XkbQueryExtension) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbQueryExtension"); + _glfw.x11.xkb.SelectEventDetails = (PFN_XkbSelectEventDetails) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbSelectEventDetails"); + _glfw.x11.xkb.SetDetectableAutoRepeat = (PFN_XkbSetDetectableAutoRepeat) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XkbSetDetectableAutoRepeat"); + _glfw.x11.xrm.DestroyDatabase = (PFN_XrmDestroyDatabase) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XrmDestroyDatabase"); + _glfw.x11.xrm.GetResource = (PFN_XrmGetResource) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XrmGetResource"); + _glfw.x11.xrm.GetStringDatabase = (PFN_XrmGetStringDatabase) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XrmGetStringDatabase"); + _glfw.x11.xrm.UniqueQuark = (PFN_XrmUniqueQuark) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XrmUniqueQuark"); + _glfw.x11.xlib.UnregisterIMInstantiateCallback = (PFN_XUnregisterIMInstantiateCallback) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "XUnregisterIMInstantiateCallback"); + _glfw.x11.xlib.utf8LookupString = (PFN_Xutf8LookupString) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "Xutf8LookupString"); + _glfw.x11.xlib.utf8SetWMProperties = (PFN_Xutf8SetWMProperties) + _glfwPlatformGetModuleSymbol(_glfw.x11.xlib.handle, "Xutf8SetWMProperties"); + + if (_glfw.x11.xlib.utf8LookupString && _glfw.x11.xlib.utf8SetWMProperties) + _glfw.x11.xlib.utf8 = GLFW_TRUE; + + _glfw.x11.screen = DefaultScreen(_glfw.x11.display); + _glfw.x11.root = RootWindow(_glfw.x11.display, _glfw.x11.screen); + _glfw.x11.context = XUniqueContext(); + + getSystemContentScale(&_glfw.x11.contentScaleX, &_glfw.x11.contentScaleY); + + if (!createEmptyEventPipe()) + return GLFW_FALSE; + + if (!initExtensions()) + return GLFW_FALSE; + + _glfw.x11.helperWindowHandle = createHelperWindow(); + _glfw.x11.hiddenCursorHandle = createHiddenCursor(); + + if (XSupportsLocale() && _glfw.x11.xlib.utf8) + { + XSetLocaleModifiers(""); + + // If an IM is already present our callback will be called right away + XRegisterIMInstantiateCallback(_glfw.x11.display, + NULL, NULL, NULL, + inputMethodInstantiateCallback, + NULL); + } + + _glfwPollMonitorsX11(); + return GLFW_TRUE; +} + +void _glfwTerminateX11(void) +{ + if (_glfw.x11.helperWindowHandle) + { + if (XGetSelectionOwner(_glfw.x11.display, _glfw.x11.CLIPBOARD) == + _glfw.x11.helperWindowHandle) + { + _glfwPushSelectionToManagerX11(); + } + + XDestroyWindow(_glfw.x11.display, _glfw.x11.helperWindowHandle); + _glfw.x11.helperWindowHandle = None; + } + + if (_glfw.x11.hiddenCursorHandle) + { + XFreeCursor(_glfw.x11.display, _glfw.x11.hiddenCursorHandle); + _glfw.x11.hiddenCursorHandle = (Cursor) 0; + } + + _glfw_free(_glfw.x11.primarySelectionString); + _glfw_free(_glfw.x11.clipboardString); + + XUnregisterIMInstantiateCallback(_glfw.x11.display, + NULL, NULL, NULL, + inputMethodInstantiateCallback, + NULL); + + if (_glfw.x11.im) + { + XCloseIM(_glfw.x11.im); + _glfw.x11.im = NULL; + } + + if (_glfw.x11.display) + { + XCloseDisplay(_glfw.x11.display); + _glfw.x11.display = NULL; + } + + if (_glfw.x11.x11xcb.handle) + { + _glfwPlatformFreeModule(_glfw.x11.x11xcb.handle); + _glfw.x11.x11xcb.handle = NULL; + } + + if (_glfw.x11.xcursor.handle) + { + _glfwPlatformFreeModule(_glfw.x11.xcursor.handle); + _glfw.x11.xcursor.handle = NULL; + } + + if (_glfw.x11.randr.handle) + { + _glfwPlatformFreeModule(_glfw.x11.randr.handle); + _glfw.x11.randr.handle = NULL; + } + + if (_glfw.x11.xinerama.handle) + { + _glfwPlatformFreeModule(_glfw.x11.xinerama.handle); + _glfw.x11.xinerama.handle = NULL; + } + + if (_glfw.x11.xrender.handle) + { + _glfwPlatformFreeModule(_glfw.x11.xrender.handle); + _glfw.x11.xrender.handle = NULL; + } + + if (_glfw.x11.vidmode.handle) + { + _glfwPlatformFreeModule(_glfw.x11.vidmode.handle); + _glfw.x11.vidmode.handle = NULL; + } + + if (_glfw.x11.xi.handle) + { + _glfwPlatformFreeModule(_glfw.x11.xi.handle); + _glfw.x11.xi.handle = NULL; + } + + _glfwTerminateOSMesa(); + // NOTE: These need to be unloaded after XCloseDisplay, as they register + // cleanup callbacks that get called by that function + _glfwTerminateEGL(); + _glfwTerminateGLX(); + + if (_glfw.x11.xlib.handle) + { + _glfwPlatformFreeModule(_glfw.x11.xlib.handle); + _glfw.x11.xlib.handle = NULL; + } + + if (_glfw.x11.emptyEventPipe[0] || _glfw.x11.emptyEventPipe[1]) + { + close(_glfw.x11.emptyEventPipe[0]); + close(_glfw.x11.emptyEventPipe[1]); + } +} + +#endif // _GLFW_X11 + diff --git a/lib/glfw/src/x11_monitor.c b/lib/glfw/src/x11_monitor.c new file mode 100644 index 0000000..3183630 --- /dev/null +++ b/lib/glfw/src/x11_monitor.c @@ -0,0 +1,620 @@ +//======================================================================== +// GLFW 3.4 X11 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_X11) + +#include +#include +#include +#include + + +// Check whether the display mode should be included in enumeration +// +static GLFWbool modeIsGood(const XRRModeInfo* mi) +{ + return (mi->modeFlags & RR_Interlace) == 0; +} + +// Calculates the refresh rate, in Hz, from the specified RandR mode info +// +static int calculateRefreshRate(const XRRModeInfo* mi) +{ + if (mi->hTotal && mi->vTotal) + return (int) round((double) mi->dotClock / ((double) mi->hTotal * (double) mi->vTotal)); + else + return 0; +} + +// Returns the mode info for a RandR mode XID +// +static const XRRModeInfo* getModeInfo(const XRRScreenResources* sr, RRMode id) +{ + for (int i = 0; i < sr->nmode; i++) + { + if (sr->modes[i].id == id) + return sr->modes + i; + } + + return NULL; +} + +// Convert RandR mode info to GLFW video mode +// +static GLFWvidmode vidmodeFromModeInfo(const XRRModeInfo* mi, + const XRRCrtcInfo* ci) +{ + GLFWvidmode mode; + + if (ci->rotation == RR_Rotate_90 || ci->rotation == RR_Rotate_270) + { + mode.width = mi->height; + mode.height = mi->width; + } + else + { + mode.width = mi->width; + mode.height = mi->height; + } + + mode.refreshRate = calculateRefreshRate(mi); + + _glfwSplitBPP(DefaultDepth(_glfw.x11.display, _glfw.x11.screen), + &mode.redBits, &mode.greenBits, &mode.blueBits); + + return mode; +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Poll for changes in the set of connected monitors +// +void _glfwPollMonitorsX11(void) +{ + if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) + { + int disconnectedCount, screenCount = 0; + _GLFWmonitor** disconnected = NULL; + XineramaScreenInfo* screens = NULL; + XRRScreenResources* sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, + _glfw.x11.root); + RROutput primary = XRRGetOutputPrimary(_glfw.x11.display, + _glfw.x11.root); + + if (_glfw.x11.xinerama.available) + screens = XineramaQueryScreens(_glfw.x11.display, &screenCount); + + disconnectedCount = _glfw.monitorCount; + if (disconnectedCount) + { + disconnected = _glfw_calloc(_glfw.monitorCount, sizeof(_GLFWmonitor*)); + memcpy(disconnected, + _glfw.monitors, + _glfw.monitorCount * sizeof(_GLFWmonitor*)); + } + + for (int i = 0; i < sr->noutput; i++) + { + int j, type, widthMM, heightMM; + + XRROutputInfo* oi = XRRGetOutputInfo(_glfw.x11.display, sr, sr->outputs[i]); + if (oi->connection != RR_Connected || oi->crtc == None) + { + XRRFreeOutputInfo(oi); + continue; + } + + for (j = 0; j < disconnectedCount; j++) + { + if (disconnected[j] && + disconnected[j]->x11.output == sr->outputs[i]) + { + disconnected[j] = NULL; + break; + } + } + + if (j < disconnectedCount) + { + XRRFreeOutputInfo(oi); + continue; + } + + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, oi->crtc); + if (ci->rotation == RR_Rotate_90 || ci->rotation == RR_Rotate_270) + { + widthMM = oi->mm_height; + heightMM = oi->mm_width; + } + else + { + widthMM = oi->mm_width; + heightMM = oi->mm_height; + } + + if (widthMM <= 0 || heightMM <= 0) + { + // HACK: If RandR does not provide a physical size, assume the + // X11 default 96 DPI and calculate from the CRTC viewport + // NOTE: These members are affected by rotation, unlike the mode + // info and output info members + widthMM = (int) (ci->width * 25.4f / 96.f); + heightMM = (int) (ci->height * 25.4f / 96.f); + } + + _GLFWmonitor* monitor = _glfwAllocMonitor(oi->name, widthMM, heightMM); + monitor->x11.output = sr->outputs[i]; + monitor->x11.crtc = oi->crtc; + + for (j = 0; j < screenCount; j++) + { + if (screens[j].x_org == ci->x && + screens[j].y_org == ci->y && + screens[j].width == ci->width && + screens[j].height == ci->height) + { + monitor->x11.index = j; + break; + } + } + + if (monitor->x11.output == primary) + type = _GLFW_INSERT_FIRST; + else + type = _GLFW_INSERT_LAST; + + _glfwInputMonitor(monitor, GLFW_CONNECTED, type); + + XRRFreeOutputInfo(oi); + XRRFreeCrtcInfo(ci); + } + + XRRFreeScreenResources(sr); + + if (screens) + XFree(screens); + + for (int i = 0; i < disconnectedCount; i++) + { + if (disconnected[i]) + _glfwInputMonitor(disconnected[i], GLFW_DISCONNECTED, 0); + } + + _glfw_free(disconnected); + } + else + { + const int widthMM = DisplayWidthMM(_glfw.x11.display, _glfw.x11.screen); + const int heightMM = DisplayHeightMM(_glfw.x11.display, _glfw.x11.screen); + + _glfwInputMonitor(_glfwAllocMonitor("Display", widthMM, heightMM), + GLFW_CONNECTED, + _GLFW_INSERT_FIRST); + } +} + +// Set the current video mode for the specified monitor +// +void _glfwSetVideoModeX11(_GLFWmonitor* monitor, const GLFWvidmode* desired) +{ + if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) + { + GLFWvidmode current; + RRMode native = None; + + const GLFWvidmode* best = _glfwChooseVideoMode(monitor, desired); + _glfwGetVideoModeX11(monitor, ¤t); + if (_glfwCompareVideoModes(¤t, best) == 0) + return; + + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + XRROutputInfo* oi = XRRGetOutputInfo(_glfw.x11.display, sr, monitor->x11.output); + + for (int i = 0; i < oi->nmode; i++) + { + const XRRModeInfo* mi = getModeInfo(sr, oi->modes[i]); + if (!modeIsGood(mi)) + continue; + + const GLFWvidmode mode = vidmodeFromModeInfo(mi, ci); + if (_glfwCompareVideoModes(best, &mode) == 0) + { + native = mi->id; + break; + } + } + + if (native) + { + if (monitor->x11.oldMode == None) + monitor->x11.oldMode = ci->mode; + + XRRSetCrtcConfig(_glfw.x11.display, + sr, monitor->x11.crtc, + CurrentTime, + ci->x, ci->y, + native, + ci->rotation, + ci->outputs, + ci->noutput); + } + + XRRFreeOutputInfo(oi); + XRRFreeCrtcInfo(ci); + XRRFreeScreenResources(sr); + } +} + +// Restore the saved (original) video mode for the specified monitor +// +void _glfwRestoreVideoModeX11(_GLFWmonitor* monitor) +{ + if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) + { + if (monitor->x11.oldMode == None) + return; + + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + + XRRSetCrtcConfig(_glfw.x11.display, + sr, monitor->x11.crtc, + CurrentTime, + ci->x, ci->y, + monitor->x11.oldMode, + ci->rotation, + ci->outputs, + ci->noutput); + + XRRFreeCrtcInfo(ci); + XRRFreeScreenResources(sr); + + monitor->x11.oldMode = None; + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +void _glfwFreeMonitorX11(_GLFWmonitor* monitor) +{ +} + +void _glfwGetMonitorPosX11(_GLFWmonitor* monitor, int* xpos, int* ypos) +{ + if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) + { + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + + if (ci) + { + if (xpos) + *xpos = ci->x; + if (ypos) + *ypos = ci->y; + + XRRFreeCrtcInfo(ci); + } + + XRRFreeScreenResources(sr); + } +} + +void _glfwGetMonitorContentScaleX11(_GLFWmonitor* monitor, + float* xscale, float* yscale) +{ + if (xscale) + *xscale = _glfw.x11.contentScaleX; + if (yscale) + *yscale = _glfw.x11.contentScaleY; +} + +void _glfwGetMonitorWorkareaX11(_GLFWmonitor* monitor, + int* xpos, int* ypos, + int* width, int* height) +{ + int areaX = 0, areaY = 0, areaWidth = 0, areaHeight = 0; + + if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) + { + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + + areaX = ci->x; + areaY = ci->y; + + const XRRModeInfo* mi = getModeInfo(sr, ci->mode); + + if (ci->rotation == RR_Rotate_90 || ci->rotation == RR_Rotate_270) + { + areaWidth = mi->height; + areaHeight = mi->width; + } + else + { + areaWidth = mi->width; + areaHeight = mi->height; + } + + XRRFreeCrtcInfo(ci); + XRRFreeScreenResources(sr); + } + else + { + areaWidth = DisplayWidth(_glfw.x11.display, _glfw.x11.screen); + areaHeight = DisplayHeight(_glfw.x11.display, _glfw.x11.screen); + } + + if (_glfw.x11.NET_WORKAREA && _glfw.x11.NET_CURRENT_DESKTOP) + { + Atom* extents = NULL; + Atom* desktop = NULL; + const unsigned long extentCount = + _glfwGetWindowPropertyX11(_glfw.x11.root, + _glfw.x11.NET_WORKAREA, + XA_CARDINAL, + (unsigned char**) &extents); + + if (_glfwGetWindowPropertyX11(_glfw.x11.root, + _glfw.x11.NET_CURRENT_DESKTOP, + XA_CARDINAL, + (unsigned char**) &desktop) > 0) + { + if (extentCount >= 4 && *desktop < extentCount / 4) + { + const int globalX = extents[*desktop * 4 + 0]; + const int globalY = extents[*desktop * 4 + 1]; + const int globalWidth = extents[*desktop * 4 + 2]; + const int globalHeight = extents[*desktop * 4 + 3]; + + if (areaX < globalX) + { + areaWidth -= globalX - areaX; + areaX = globalX; + } + + if (areaY < globalY) + { + areaHeight -= globalY - areaY; + areaY = globalY; + } + + if (areaX + areaWidth > globalX + globalWidth) + areaWidth = globalX - areaX + globalWidth; + if (areaY + areaHeight > globalY + globalHeight) + areaHeight = globalY - areaY + globalHeight; + } + } + + if (extents) + XFree(extents); + if (desktop) + XFree(desktop); + } + + if (xpos) + *xpos = areaX; + if (ypos) + *ypos = areaY; + if (width) + *width = areaWidth; + if (height) + *height = areaHeight; +} + +GLFWvidmode* _glfwGetVideoModesX11(_GLFWmonitor* monitor, int* count) +{ + GLFWvidmode* result; + + *count = 0; + + if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) + { + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + XRROutputInfo* oi = XRRGetOutputInfo(_glfw.x11.display, sr, monitor->x11.output); + + result = _glfw_calloc(oi->nmode, sizeof(GLFWvidmode)); + + for (int i = 0; i < oi->nmode; i++) + { + const XRRModeInfo* mi = getModeInfo(sr, oi->modes[i]); + if (!modeIsGood(mi)) + continue; + + const GLFWvidmode mode = vidmodeFromModeInfo(mi, ci); + int j; + + for (j = 0; j < *count; j++) + { + if (_glfwCompareVideoModes(result + j, &mode) == 0) + break; + } + + // Skip duplicate modes + if (j < *count) + continue; + + (*count)++; + result[*count - 1] = mode; + } + + XRRFreeOutputInfo(oi); + XRRFreeCrtcInfo(ci); + XRRFreeScreenResources(sr); + } + else + { + *count = 1; + result = _glfw_calloc(1, sizeof(GLFWvidmode)); + _glfwGetVideoModeX11(monitor, result); + } + + return result; +} + +void _glfwGetVideoModeX11(_GLFWmonitor* monitor, GLFWvidmode* mode) +{ + if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) + { + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + + if (ci) + { + const XRRModeInfo* mi = getModeInfo(sr, ci->mode); + if (mi) // mi can be NULL if the monitor has been disconnected + *mode = vidmodeFromModeInfo(mi, ci); + + XRRFreeCrtcInfo(ci); + } + + XRRFreeScreenResources(sr); + } + else + { + mode->width = DisplayWidth(_glfw.x11.display, _glfw.x11.screen); + mode->height = DisplayHeight(_glfw.x11.display, _glfw.x11.screen); + mode->refreshRate = 0; + + _glfwSplitBPP(DefaultDepth(_glfw.x11.display, _glfw.x11.screen), + &mode->redBits, &mode->greenBits, &mode->blueBits); + } +} + +GLFWbool _glfwGetGammaRampX11(_GLFWmonitor* monitor, GLFWgammaramp* ramp) +{ + if (_glfw.x11.randr.available && !_glfw.x11.randr.gammaBroken) + { + const size_t size = XRRGetCrtcGammaSize(_glfw.x11.display, + monitor->x11.crtc); + XRRCrtcGamma* gamma = XRRGetCrtcGamma(_glfw.x11.display, + monitor->x11.crtc); + + _glfwAllocGammaArrays(ramp, size); + + memcpy(ramp->red, gamma->red, size * sizeof(unsigned short)); + memcpy(ramp->green, gamma->green, size * sizeof(unsigned short)); + memcpy(ramp->blue, gamma->blue, size * sizeof(unsigned short)); + + XRRFreeGamma(gamma); + return GLFW_TRUE; + } + else if (_glfw.x11.vidmode.available) + { + int size; + XF86VidModeGetGammaRampSize(_glfw.x11.display, _glfw.x11.screen, &size); + + _glfwAllocGammaArrays(ramp, size); + + XF86VidModeGetGammaRamp(_glfw.x11.display, + _glfw.x11.screen, + ramp->size, ramp->red, ramp->green, ramp->blue); + return GLFW_TRUE; + } + else + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Gamma ramp access not supported by server"); + return GLFW_FALSE; + } +} + +void _glfwSetGammaRampX11(_GLFWmonitor* monitor, const GLFWgammaramp* ramp) +{ + if (_glfw.x11.randr.available && !_glfw.x11.randr.gammaBroken) + { + if (XRRGetCrtcGammaSize(_glfw.x11.display, monitor->x11.crtc) != ramp->size) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Gamma ramp size must match current ramp size"); + return; + } + + XRRCrtcGamma* gamma = XRRAllocGamma(ramp->size); + + memcpy(gamma->red, ramp->red, ramp->size * sizeof(unsigned short)); + memcpy(gamma->green, ramp->green, ramp->size * sizeof(unsigned short)); + memcpy(gamma->blue, ramp->blue, ramp->size * sizeof(unsigned short)); + + XRRSetCrtcGamma(_glfw.x11.display, monitor->x11.crtc, gamma); + XRRFreeGamma(gamma); + } + else if (_glfw.x11.vidmode.available) + { + XF86VidModeSetGammaRamp(_glfw.x11.display, + _glfw.x11.screen, + ramp->size, + (unsigned short*) ramp->red, + (unsigned short*) ramp->green, + (unsigned short*) ramp->blue); + } + else + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Gamma ramp access not supported by server"); + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(None); + return monitor->x11.crtc; +} + +GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* handle) +{ + _GLFWmonitor* monitor = (_GLFWmonitor*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(None); + return monitor->x11.output; +} + +#endif // _GLFW_X11 + diff --git a/lib/glfw/src/x11_platform.h b/lib/glfw/src/x11_platform.h new file mode 100644 index 0000000..cdea395 --- /dev/null +++ b/lib/glfw/src/x11_platform.h @@ -0,0 +1,1004 @@ +//======================================================================== +// GLFW 3.4 X11 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#include +#include +#include + +#include +#include +#include +#include +#include + +// The XRandR extension provides mode setting and gamma control +#include + +// The Xkb extension provides improved keyboard support +#include + +// The Xinerama extension provides legacy monitor indices +#include + +// The XInput extension provides raw mouse motion input +#include + +// The Shape extension provides custom window shapes +#include + +#define GLX_VENDOR 1 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_DOUBLEBUFFER 5 +#define GLX_STEREO 6 +#define GLX_AUX_BUFFERS 7 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 +#define GLX_ACCUM_RED_SIZE 14 +#define GLX_ACCUM_GREEN_SIZE 15 +#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_ALPHA_SIZE 17 +#define GLX_SAMPLES 0x186a1 +#define GLX_VISUAL_ID 0x800b + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20b2 +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001 +#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 +#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 +#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 +#define GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31b3 + +typedef XID GLXWindow; +typedef XID GLXDrawable; +typedef struct __GLXFBConfig* GLXFBConfig; +typedef struct __GLXcontext* GLXContext; +typedef void (*__GLXextproc)(void); + +typedef XClassHint* (* PFN_XAllocClassHint)(void); +typedef XSizeHints* (* PFN_XAllocSizeHints)(void); +typedef XWMHints* (* PFN_XAllocWMHints)(void); +typedef int (* PFN_XChangeProperty)(Display*,Window,Atom,Atom,int,int,const unsigned char*,int); +typedef int (* PFN_XChangeWindowAttributes)(Display*,Window,unsigned long,XSetWindowAttributes*); +typedef Bool (* PFN_XCheckIfEvent)(Display*,XEvent*,Bool(*)(Display*,XEvent*,XPointer),XPointer); +typedef Bool (* PFN_XCheckTypedWindowEvent)(Display*,Window,int,XEvent*); +typedef int (* PFN_XCloseDisplay)(Display*); +typedef Status (* PFN_XCloseIM)(XIM); +typedef int (* PFN_XConvertSelection)(Display*,Atom,Atom,Atom,Window,Time); +typedef Colormap (* PFN_XCreateColormap)(Display*,Window,Visual*,int); +typedef Cursor (* PFN_XCreateFontCursor)(Display*,unsigned int); +typedef XIC (* PFN_XCreateIC)(XIM,...); +typedef Region (* PFN_XCreateRegion)(void); +typedef Window (* PFN_XCreateWindow)(Display*,Window,int,int,unsigned int,unsigned int,unsigned int,int,unsigned int,Visual*,unsigned long,XSetWindowAttributes*); +typedef int (* PFN_XDefineCursor)(Display*,Window,Cursor); +typedef int (* PFN_XDeleteContext)(Display*,XID,XContext); +typedef int (* PFN_XDeleteProperty)(Display*,Window,Atom); +typedef void (* PFN_XDestroyIC)(XIC); +typedef int (* PFN_XDestroyRegion)(Region); +typedef int (* PFN_XDestroyWindow)(Display*,Window); +typedef int (* PFN_XDisplayKeycodes)(Display*,int*,int*); +typedef int (* PFN_XEventsQueued)(Display*,int); +typedef Bool (* PFN_XFilterEvent)(XEvent*,Window); +typedef int (* PFN_XFindContext)(Display*,XID,XContext,XPointer*); +typedef int (* PFN_XFlush)(Display*); +typedef int (* PFN_XFree)(void*); +typedef int (* PFN_XFreeColormap)(Display*,Colormap); +typedef int (* PFN_XFreeCursor)(Display*,Cursor); +typedef void (* PFN_XFreeEventData)(Display*,XGenericEventCookie*); +typedef int (* PFN_XGetErrorText)(Display*,int,char*,int); +typedef Bool (* PFN_XGetEventData)(Display*,XGenericEventCookie*); +typedef char* (* PFN_XGetICValues)(XIC,...); +typedef char* (* PFN_XGetIMValues)(XIM,...); +typedef int (* PFN_XGetInputFocus)(Display*,Window*,int*); +typedef KeySym* (* PFN_XGetKeyboardMapping)(Display*,KeyCode,int,int*); +typedef int (* PFN_XGetScreenSaver)(Display*,int*,int*,int*,int*); +typedef Window (* PFN_XGetSelectionOwner)(Display*,Atom); +typedef XVisualInfo* (* PFN_XGetVisualInfo)(Display*,long,XVisualInfo*,int*); +typedef Status (* PFN_XGetWMNormalHints)(Display*,Window,XSizeHints*,long*); +typedef Status (* PFN_XGetWindowAttributes)(Display*,Window,XWindowAttributes*); +typedef int (* PFN_XGetWindowProperty)(Display*,Window,Atom,long,long,Bool,Atom,Atom*,int*,unsigned long*,unsigned long*,unsigned char**); +typedef int (* PFN_XGrabPointer)(Display*,Window,Bool,unsigned int,int,int,Window,Cursor,Time); +typedef Status (* PFN_XIconifyWindow)(Display*,Window,int); +typedef Status (* PFN_XInitThreads)(void); +typedef Atom (* PFN_XInternAtom)(Display*,const char*,Bool); +typedef int (* PFN_XLookupString)(XKeyEvent*,char*,int,KeySym*,XComposeStatus*); +typedef int (* PFN_XMapRaised)(Display*,Window); +typedef int (* PFN_XMapWindow)(Display*,Window); +typedef int (* PFN_XMoveResizeWindow)(Display*,Window,int,int,unsigned int,unsigned int); +typedef int (* PFN_XMoveWindow)(Display*,Window,int,int); +typedef int (* PFN_XNextEvent)(Display*,XEvent*); +typedef Display* (* PFN_XOpenDisplay)(const char*); +typedef XIM (* PFN_XOpenIM)(Display*,XrmDatabase*,char*,char*); +typedef int (* PFN_XPeekEvent)(Display*,XEvent*); +typedef int (* PFN_XPending)(Display*); +typedef Bool (* PFN_XQueryExtension)(Display*,const char*,int*,int*,int*); +typedef Bool (* PFN_XQueryPointer)(Display*,Window,Window*,Window*,int*,int*,int*,int*,unsigned int*); +typedef int (* PFN_XRaiseWindow)(Display*,Window); +typedef Bool (* PFN_XRegisterIMInstantiateCallback)(Display*,void*,char*,char*,XIDProc,XPointer); +typedef int (* PFN_XResizeWindow)(Display*,Window,unsigned int,unsigned int); +typedef char* (* PFN_XResourceManagerString)(Display*); +typedef int (* PFN_XSaveContext)(Display*,XID,XContext,const char*); +typedef int (* PFN_XSelectInput)(Display*,Window,long); +typedef Status (* PFN_XSendEvent)(Display*,Window,Bool,long,XEvent*); +typedef int (* PFN_XSetClassHint)(Display*,Window,XClassHint*); +typedef XErrorHandler (* PFN_XSetErrorHandler)(XErrorHandler); +typedef void (* PFN_XSetICFocus)(XIC); +typedef char* (* PFN_XSetIMValues)(XIM,...); +typedef int (* PFN_XSetInputFocus)(Display*,Window,int,Time); +typedef char* (* PFN_XSetLocaleModifiers)(const char*); +typedef int (* PFN_XSetScreenSaver)(Display*,int,int,int,int); +typedef int (* PFN_XSetSelectionOwner)(Display*,Atom,Window,Time); +typedef int (* PFN_XSetWMHints)(Display*,Window,XWMHints*); +typedef void (* PFN_XSetWMNormalHints)(Display*,Window,XSizeHints*); +typedef Status (* PFN_XSetWMProtocols)(Display*,Window,Atom*,int); +typedef Bool (* PFN_XSupportsLocale)(void); +typedef int (* PFN_XSync)(Display*,Bool); +typedef Bool (* PFN_XTranslateCoordinates)(Display*,Window,Window,int,int,int*,int*,Window*); +typedef int (* PFN_XUndefineCursor)(Display*,Window); +typedef int (* PFN_XUngrabPointer)(Display*,Time); +typedef int (* PFN_XUnmapWindow)(Display*,Window); +typedef void (* PFN_XUnsetICFocus)(XIC); +typedef VisualID (* PFN_XVisualIDFromVisual)(Visual*); +typedef int (* PFN_XWarpPointer)(Display*,Window,Window,int,int,unsigned int,unsigned int,int,int); +typedef void (* PFN_XkbFreeKeyboard)(XkbDescPtr,unsigned int,Bool); +typedef void (* PFN_XkbFreeNames)(XkbDescPtr,unsigned int,Bool); +typedef XkbDescPtr (* PFN_XkbGetMap)(Display*,unsigned int,unsigned int); +typedef Status (* PFN_XkbGetNames)(Display*,unsigned int,XkbDescPtr); +typedef Status (* PFN_XkbGetState)(Display*,unsigned int,XkbStatePtr); +typedef KeySym (* PFN_XkbKeycodeToKeysym)(Display*,KeyCode,int,int); +typedef Bool (* PFN_XkbQueryExtension)(Display*,int*,int*,int*,int*,int*); +typedef Bool (* PFN_XkbSelectEventDetails)(Display*,unsigned int,unsigned int,unsigned long,unsigned long); +typedef Bool (* PFN_XkbSetDetectableAutoRepeat)(Display*,Bool,Bool*); +typedef void (* PFN_XrmDestroyDatabase)(XrmDatabase); +typedef Bool (* PFN_XrmGetResource)(XrmDatabase,const char*,const char*,char**,XrmValue*); +typedef XrmDatabase (* PFN_XrmGetStringDatabase)(const char*); +typedef void (* PFN_XrmInitialize)(void); +typedef XrmQuark (* PFN_XrmUniqueQuark)(void); +typedef Bool (* PFN_XUnregisterIMInstantiateCallback)(Display*,void*,char*,char*,XIDProc,XPointer); +typedef int (* PFN_Xutf8LookupString)(XIC,XKeyPressedEvent*,char*,int,KeySym*,Status*); +typedef void (* PFN_Xutf8SetWMProperties)(Display*,Window,const char*,const char*,char**,int,XSizeHints*,XWMHints*,XClassHint*); +#define XAllocClassHint _glfw.x11.xlib.AllocClassHint +#define XAllocSizeHints _glfw.x11.xlib.AllocSizeHints +#define XAllocWMHints _glfw.x11.xlib.AllocWMHints +#define XChangeProperty _glfw.x11.xlib.ChangeProperty +#define XChangeWindowAttributes _glfw.x11.xlib.ChangeWindowAttributes +#define XCheckIfEvent _glfw.x11.xlib.CheckIfEvent +#define XCheckTypedWindowEvent _glfw.x11.xlib.CheckTypedWindowEvent +#define XCloseDisplay _glfw.x11.xlib.CloseDisplay +#define XCloseIM _glfw.x11.xlib.CloseIM +#define XConvertSelection _glfw.x11.xlib.ConvertSelection +#define XCreateColormap _glfw.x11.xlib.CreateColormap +#define XCreateFontCursor _glfw.x11.xlib.CreateFontCursor +#define XCreateIC _glfw.x11.xlib.CreateIC +#define XCreateRegion _glfw.x11.xlib.CreateRegion +#define XCreateWindow _glfw.x11.xlib.CreateWindow +#define XDefineCursor _glfw.x11.xlib.DefineCursor +#define XDeleteContext _glfw.x11.xlib.DeleteContext +#define XDeleteProperty _glfw.x11.xlib.DeleteProperty +#define XDestroyIC _glfw.x11.xlib.DestroyIC +#define XDestroyRegion _glfw.x11.xlib.DestroyRegion +#define XDestroyWindow _glfw.x11.xlib.DestroyWindow +#define XDisplayKeycodes _glfw.x11.xlib.DisplayKeycodes +#define XEventsQueued _glfw.x11.xlib.EventsQueued +#define XFilterEvent _glfw.x11.xlib.FilterEvent +#define XFindContext _glfw.x11.xlib.FindContext +#define XFlush _glfw.x11.xlib.Flush +#define XFree _glfw.x11.xlib.Free +#define XFreeColormap _glfw.x11.xlib.FreeColormap +#define XFreeCursor _glfw.x11.xlib.FreeCursor +#define XFreeEventData _glfw.x11.xlib.FreeEventData +#define XGetErrorText _glfw.x11.xlib.GetErrorText +#define XGetEventData _glfw.x11.xlib.GetEventData +#define XGetICValues _glfw.x11.xlib.GetICValues +#define XGetIMValues _glfw.x11.xlib.GetIMValues +#define XGetInputFocus _glfw.x11.xlib.GetInputFocus +#define XGetKeyboardMapping _glfw.x11.xlib.GetKeyboardMapping +#define XGetScreenSaver _glfw.x11.xlib.GetScreenSaver +#define XGetSelectionOwner _glfw.x11.xlib.GetSelectionOwner +#define XGetVisualInfo _glfw.x11.xlib.GetVisualInfo +#define XGetWMNormalHints _glfw.x11.xlib.GetWMNormalHints +#define XGetWindowAttributes _glfw.x11.xlib.GetWindowAttributes +#define XGetWindowProperty _glfw.x11.xlib.GetWindowProperty +#define XGrabPointer _glfw.x11.xlib.GrabPointer +#define XIconifyWindow _glfw.x11.xlib.IconifyWindow +#define XInternAtom _glfw.x11.xlib.InternAtom +#define XLookupString _glfw.x11.xlib.LookupString +#define XMapRaised _glfw.x11.xlib.MapRaised +#define XMapWindow _glfw.x11.xlib.MapWindow +#define XMoveResizeWindow _glfw.x11.xlib.MoveResizeWindow +#define XMoveWindow _glfw.x11.xlib.MoveWindow +#define XNextEvent _glfw.x11.xlib.NextEvent +#define XOpenIM _glfw.x11.xlib.OpenIM +#define XPeekEvent _glfw.x11.xlib.PeekEvent +#define XPending _glfw.x11.xlib.Pending +#define XQueryExtension _glfw.x11.xlib.QueryExtension +#define XQueryPointer _glfw.x11.xlib.QueryPointer +#define XRaiseWindow _glfw.x11.xlib.RaiseWindow +#define XRegisterIMInstantiateCallback _glfw.x11.xlib.RegisterIMInstantiateCallback +#define XResizeWindow _glfw.x11.xlib.ResizeWindow +#define XResourceManagerString _glfw.x11.xlib.ResourceManagerString +#define XSaveContext _glfw.x11.xlib.SaveContext +#define XSelectInput _glfw.x11.xlib.SelectInput +#define XSendEvent _glfw.x11.xlib.SendEvent +#define XSetClassHint _glfw.x11.xlib.SetClassHint +#define XSetErrorHandler _glfw.x11.xlib.SetErrorHandler +#define XSetICFocus _glfw.x11.xlib.SetICFocus +#define XSetIMValues _glfw.x11.xlib.SetIMValues +#define XSetInputFocus _glfw.x11.xlib.SetInputFocus +#define XSetLocaleModifiers _glfw.x11.xlib.SetLocaleModifiers +#define XSetScreenSaver _glfw.x11.xlib.SetScreenSaver +#define XSetSelectionOwner _glfw.x11.xlib.SetSelectionOwner +#define XSetWMHints _glfw.x11.xlib.SetWMHints +#define XSetWMNormalHints _glfw.x11.xlib.SetWMNormalHints +#define XSetWMProtocols _glfw.x11.xlib.SetWMProtocols +#define XSupportsLocale _glfw.x11.xlib.SupportsLocale +#define XSync _glfw.x11.xlib.Sync +#define XTranslateCoordinates _glfw.x11.xlib.TranslateCoordinates +#define XUndefineCursor _glfw.x11.xlib.UndefineCursor +#define XUngrabPointer _glfw.x11.xlib.UngrabPointer +#define XUnmapWindow _glfw.x11.xlib.UnmapWindow +#define XUnsetICFocus _glfw.x11.xlib.UnsetICFocus +#define XVisualIDFromVisual _glfw.x11.xlib.VisualIDFromVisual +#define XWarpPointer _glfw.x11.xlib.WarpPointer +#define XkbFreeKeyboard _glfw.x11.xkb.FreeKeyboard +#define XkbFreeNames _glfw.x11.xkb.FreeNames +#define XkbGetMap _glfw.x11.xkb.GetMap +#define XkbGetNames _glfw.x11.xkb.GetNames +#define XkbGetState _glfw.x11.xkb.GetState +#define XkbKeycodeToKeysym _glfw.x11.xkb.KeycodeToKeysym +#define XkbQueryExtension _glfw.x11.xkb.QueryExtension +#define XkbSelectEventDetails _glfw.x11.xkb.SelectEventDetails +#define XkbSetDetectableAutoRepeat _glfw.x11.xkb.SetDetectableAutoRepeat +#define XrmDestroyDatabase _glfw.x11.xrm.DestroyDatabase +#define XrmGetResource _glfw.x11.xrm.GetResource +#define XrmGetStringDatabase _glfw.x11.xrm.GetStringDatabase +#define XrmUniqueQuark _glfw.x11.xrm.UniqueQuark +#define XUnregisterIMInstantiateCallback _glfw.x11.xlib.UnregisterIMInstantiateCallback +#define Xutf8LookupString _glfw.x11.xlib.utf8LookupString +#define Xutf8SetWMProperties _glfw.x11.xlib.utf8SetWMProperties + +typedef XRRCrtcGamma* (* PFN_XRRAllocGamma)(int); +typedef void (* PFN_XRRFreeCrtcInfo)(XRRCrtcInfo*); +typedef void (* PFN_XRRFreeGamma)(XRRCrtcGamma*); +typedef void (* PFN_XRRFreeOutputInfo)(XRROutputInfo*); +typedef void (* PFN_XRRFreeScreenResources)(XRRScreenResources*); +typedef XRRCrtcGamma* (* PFN_XRRGetCrtcGamma)(Display*,RRCrtc); +typedef int (* PFN_XRRGetCrtcGammaSize)(Display*,RRCrtc); +typedef XRRCrtcInfo* (* PFN_XRRGetCrtcInfo) (Display*,XRRScreenResources*,RRCrtc); +typedef XRROutputInfo* (* PFN_XRRGetOutputInfo)(Display*,XRRScreenResources*,RROutput); +typedef RROutput (* PFN_XRRGetOutputPrimary)(Display*,Window); +typedef XRRScreenResources* (* PFN_XRRGetScreenResourcesCurrent)(Display*,Window); +typedef Bool (* PFN_XRRQueryExtension)(Display*,int*,int*); +typedef Status (* PFN_XRRQueryVersion)(Display*,int*,int*); +typedef void (* PFN_XRRSelectInput)(Display*,Window,int); +typedef Status (* PFN_XRRSetCrtcConfig)(Display*,XRRScreenResources*,RRCrtc,Time,int,int,RRMode,Rotation,RROutput*,int); +typedef void (* PFN_XRRSetCrtcGamma)(Display*,RRCrtc,XRRCrtcGamma*); +typedef int (* PFN_XRRUpdateConfiguration)(XEvent*); +#define XRRAllocGamma _glfw.x11.randr.AllocGamma +#define XRRFreeCrtcInfo _glfw.x11.randr.FreeCrtcInfo +#define XRRFreeGamma _glfw.x11.randr.FreeGamma +#define XRRFreeOutputInfo _glfw.x11.randr.FreeOutputInfo +#define XRRFreeScreenResources _glfw.x11.randr.FreeScreenResources +#define XRRGetCrtcGamma _glfw.x11.randr.GetCrtcGamma +#define XRRGetCrtcGammaSize _glfw.x11.randr.GetCrtcGammaSize +#define XRRGetCrtcInfo _glfw.x11.randr.GetCrtcInfo +#define XRRGetOutputInfo _glfw.x11.randr.GetOutputInfo +#define XRRGetOutputPrimary _glfw.x11.randr.GetOutputPrimary +#define XRRGetScreenResourcesCurrent _glfw.x11.randr.GetScreenResourcesCurrent +#define XRRQueryExtension _glfw.x11.randr.QueryExtension +#define XRRQueryVersion _glfw.x11.randr.QueryVersion +#define XRRSelectInput _glfw.x11.randr.SelectInput +#define XRRSetCrtcConfig _glfw.x11.randr.SetCrtcConfig +#define XRRSetCrtcGamma _glfw.x11.randr.SetCrtcGamma +#define XRRUpdateConfiguration _glfw.x11.randr.UpdateConfiguration + +typedef XcursorImage* (* PFN_XcursorImageCreate)(int,int); +typedef void (* PFN_XcursorImageDestroy)(XcursorImage*); +typedef Cursor (* PFN_XcursorImageLoadCursor)(Display*,const XcursorImage*); +typedef char* (* PFN_XcursorGetTheme)(Display*); +typedef int (* PFN_XcursorGetDefaultSize)(Display*); +typedef XcursorImage* (* PFN_XcursorLibraryLoadImage)(const char*,const char*,int); +#define XcursorImageCreate _glfw.x11.xcursor.ImageCreate +#define XcursorImageDestroy _glfw.x11.xcursor.ImageDestroy +#define XcursorImageLoadCursor _glfw.x11.xcursor.ImageLoadCursor +#define XcursorGetTheme _glfw.x11.xcursor.GetTheme +#define XcursorGetDefaultSize _glfw.x11.xcursor.GetDefaultSize +#define XcursorLibraryLoadImage _glfw.x11.xcursor.LibraryLoadImage + +typedef Bool (* PFN_XineramaIsActive)(Display*); +typedef Bool (* PFN_XineramaQueryExtension)(Display*,int*,int*); +typedef XineramaScreenInfo* (* PFN_XineramaQueryScreens)(Display*,int*); +#define XineramaIsActive _glfw.x11.xinerama.IsActive +#define XineramaQueryExtension _glfw.x11.xinerama.QueryExtension +#define XineramaQueryScreens _glfw.x11.xinerama.QueryScreens + +typedef XID xcb_window_t; +typedef XID xcb_visualid_t; +typedef struct xcb_connection_t xcb_connection_t; +typedef xcb_connection_t* (* PFN_XGetXCBConnection)(Display*); +#define XGetXCBConnection _glfw.x11.x11xcb.GetXCBConnection + +typedef Bool (* PFN_XF86VidModeQueryExtension)(Display*,int*,int*); +typedef Bool (* PFN_XF86VidModeGetGammaRamp)(Display*,int,int,unsigned short*,unsigned short*,unsigned short*); +typedef Bool (* PFN_XF86VidModeSetGammaRamp)(Display*,int,int,unsigned short*,unsigned short*,unsigned short*); +typedef Bool (* PFN_XF86VidModeGetGammaRampSize)(Display*,int,int*); +#define XF86VidModeQueryExtension _glfw.x11.vidmode.QueryExtension +#define XF86VidModeGetGammaRamp _glfw.x11.vidmode.GetGammaRamp +#define XF86VidModeSetGammaRamp _glfw.x11.vidmode.SetGammaRamp +#define XF86VidModeGetGammaRampSize _glfw.x11.vidmode.GetGammaRampSize + +typedef Status (* PFN_XIQueryVersion)(Display*,int*,int*); +typedef int (* PFN_XISelectEvents)(Display*,Window,XIEventMask*,int); +#define XIQueryVersion _glfw.x11.xi.QueryVersion +#define XISelectEvents _glfw.x11.xi.SelectEvents + +typedef Bool (* PFN_XRenderQueryExtension)(Display*,int*,int*); +typedef Status (* PFN_XRenderQueryVersion)(Display*dpy,int*,int*); +typedef XRenderPictFormat* (* PFN_XRenderFindVisualFormat)(Display*,Visual const*); +#define XRenderQueryExtension _glfw.x11.xrender.QueryExtension +#define XRenderQueryVersion _glfw.x11.xrender.QueryVersion +#define XRenderFindVisualFormat _glfw.x11.xrender.FindVisualFormat + +typedef Bool (* PFN_XShapeQueryExtension)(Display*,int*,int*); +typedef Status (* PFN_XShapeQueryVersion)(Display*dpy,int*,int*); +typedef void (* PFN_XShapeCombineRegion)(Display*,Window,int,int,int,Region,int); +typedef void (* PFN_XShapeCombineMask)(Display*,Window,int,int,int,Pixmap,int); + +#define XShapeQueryExtension _glfw.x11.xshape.QueryExtension +#define XShapeQueryVersion _glfw.x11.xshape.QueryVersion +#define XShapeCombineRegion _glfw.x11.xshape.ShapeCombineRegion +#define XShapeCombineMask _glfw.x11.xshape.ShapeCombineMask + +typedef int (*PFNGLXGETFBCONFIGATTRIBPROC)(Display*,GLXFBConfig,int,int*); +typedef const char* (*PFNGLXGETCLIENTSTRINGPROC)(Display*,int); +typedef Bool (*PFNGLXQUERYEXTENSIONPROC)(Display*,int*,int*); +typedef Bool (*PFNGLXQUERYVERSIONPROC)(Display*,int*,int*); +typedef void (*PFNGLXDESTROYCONTEXTPROC)(Display*,GLXContext); +typedef Bool (*PFNGLXMAKECURRENTPROC)(Display*,GLXDrawable,GLXContext); +typedef void (*PFNGLXSWAPBUFFERSPROC)(Display*,GLXDrawable); +typedef const char* (*PFNGLXQUERYEXTENSIONSSTRINGPROC)(Display*,int); +typedef GLXFBConfig* (*PFNGLXGETFBCONFIGSPROC)(Display*,int,int*); +typedef GLXContext (*PFNGLXCREATENEWCONTEXTPROC)(Display*,GLXFBConfig,int,GLXContext,Bool); +typedef __GLXextproc (* PFNGLXGETPROCADDRESSPROC)(const GLubyte *procName); +typedef void (*PFNGLXSWAPINTERVALEXTPROC)(Display*,GLXDrawable,int); +typedef XVisualInfo* (*PFNGLXGETVISUALFROMFBCONFIGPROC)(Display*,GLXFBConfig); +typedef GLXWindow (*PFNGLXCREATEWINDOWPROC)(Display*,GLXFBConfig,Window,const int*); +typedef void (*PFNGLXDESTROYWINDOWPROC)(Display*,GLXWindow); + +typedef int (*PFNGLXSWAPINTERVALMESAPROC)(int); +typedef int (*PFNGLXSWAPINTERVALSGIPROC)(int); +typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSARBPROC)(Display*,GLXFBConfig,GLXContext,Bool,const int*); + +// libGL.so function pointer typedefs +#define glXGetFBConfigs _glfw.glx.GetFBConfigs +#define glXGetFBConfigAttrib _glfw.glx.GetFBConfigAttrib +#define glXGetClientString _glfw.glx.GetClientString +#define glXQueryExtension _glfw.glx.QueryExtension +#define glXQueryVersion _glfw.glx.QueryVersion +#define glXDestroyContext _glfw.glx.DestroyContext +#define glXMakeCurrent _glfw.glx.MakeCurrent +#define glXSwapBuffers _glfw.glx.SwapBuffers +#define glXQueryExtensionsString _glfw.glx.QueryExtensionsString +#define glXCreateNewContext _glfw.glx.CreateNewContext +#define glXGetVisualFromFBConfig _glfw.glx.GetVisualFromFBConfig +#define glXCreateWindow _glfw.glx.CreateWindow +#define glXDestroyWindow _glfw.glx.DestroyWindow + +typedef VkFlags VkXlibSurfaceCreateFlagsKHR; +typedef VkFlags VkXcbSurfaceCreateFlagsKHR; + +typedef struct VkXlibSurfaceCreateInfoKHR +{ + VkStructureType sType; + const void* pNext; + VkXlibSurfaceCreateFlagsKHR flags; + Display* dpy; + Window window; +} VkXlibSurfaceCreateInfoKHR; + +typedef struct VkXcbSurfaceCreateInfoKHR +{ + VkStructureType sType; + const void* pNext; + VkXcbSurfaceCreateFlagsKHR flags; + xcb_connection_t* connection; + xcb_window_t window; +} VkXcbSurfaceCreateInfoKHR; + +typedef VkResult (APIENTRY *PFN_vkCreateXlibSurfaceKHR)(VkInstance,const VkXlibSurfaceCreateInfoKHR*,const VkAllocationCallbacks*,VkSurfaceKHR*); +typedef VkBool32 (APIENTRY *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice,uint32_t,Display*,VisualID); +typedef VkResult (APIENTRY *PFN_vkCreateXcbSurfaceKHR)(VkInstance,const VkXcbSurfaceCreateInfoKHR*,const VkAllocationCallbacks*,VkSurfaceKHR*); +typedef VkBool32 (APIENTRY *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice,uint32_t,xcb_connection_t*,xcb_visualid_t); + +#include "xkb_unicode.h" +#include "posix_poll.h" + +#define GLFW_X11_WINDOW_STATE _GLFWwindowX11 x11; +#define GLFW_X11_LIBRARY_WINDOW_STATE _GLFWlibraryX11 x11; +#define GLFW_X11_MONITOR_STATE _GLFWmonitorX11 x11; +#define GLFW_X11_CURSOR_STATE _GLFWcursorX11 x11; + +#define GLFW_GLX_CONTEXT_STATE _GLFWcontextGLX glx; +#define GLFW_GLX_LIBRARY_CONTEXT_STATE _GLFWlibraryGLX glx; + + +// GLX-specific per-context data +// +typedef struct _GLFWcontextGLX +{ + GLXContext handle; + GLXWindow window; +} _GLFWcontextGLX; + +// GLX-specific global data +// +typedef struct _GLFWlibraryGLX +{ + int major, minor; + int eventBase; + int errorBase; + + void* handle; + + // GLX 1.3 functions + PFNGLXGETFBCONFIGSPROC GetFBConfigs; + PFNGLXGETFBCONFIGATTRIBPROC GetFBConfigAttrib; + PFNGLXGETCLIENTSTRINGPROC GetClientString; + PFNGLXQUERYEXTENSIONPROC QueryExtension; + PFNGLXQUERYVERSIONPROC QueryVersion; + PFNGLXDESTROYCONTEXTPROC DestroyContext; + PFNGLXMAKECURRENTPROC MakeCurrent; + PFNGLXSWAPBUFFERSPROC SwapBuffers; + PFNGLXQUERYEXTENSIONSSTRINGPROC QueryExtensionsString; + PFNGLXCREATENEWCONTEXTPROC CreateNewContext; + PFNGLXGETVISUALFROMFBCONFIGPROC GetVisualFromFBConfig; + PFNGLXCREATEWINDOWPROC CreateWindow; + PFNGLXDESTROYWINDOWPROC DestroyWindow; + + // GLX 1.4 and extension functions + PFNGLXGETPROCADDRESSPROC GetProcAddress; + PFNGLXGETPROCADDRESSPROC GetProcAddressARB; + PFNGLXSWAPINTERVALSGIPROC SwapIntervalSGI; + PFNGLXSWAPINTERVALEXTPROC SwapIntervalEXT; + PFNGLXSWAPINTERVALMESAPROC SwapIntervalMESA; + PFNGLXCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB; + GLFWbool SGI_swap_control; + GLFWbool EXT_swap_control; + GLFWbool MESA_swap_control; + GLFWbool ARB_multisample; + GLFWbool ARB_framebuffer_sRGB; + GLFWbool EXT_framebuffer_sRGB; + GLFWbool ARB_create_context; + GLFWbool ARB_create_context_profile; + GLFWbool ARB_create_context_robustness; + GLFWbool EXT_create_context_es2_profile; + GLFWbool ARB_create_context_no_error; + GLFWbool ARB_context_flush_control; +} _GLFWlibraryGLX; + +// X11-specific per-window data +// +typedef struct _GLFWwindowX11 +{ + Colormap colormap; + Window handle; + Window parent; + XIC ic; + + GLFWbool overrideRedirect; + GLFWbool iconified; + GLFWbool maximized; + + // Whether the visual supports framebuffer transparency + GLFWbool transparent; + + // Cached position and size used to filter out duplicate events + int width, height; + int xpos, ypos; + + // The last received cursor position, regardless of source + int lastCursorPosX, lastCursorPosY; + // The last position the cursor was warped to by GLFW + int warpCursorPosX, warpCursorPosY; + + // The time of the last KeyPress event per keycode, for discarding + // duplicate key events generated for some keys by ibus + Time keyPressTimes[256]; +} _GLFWwindowX11; + +// X11-specific global data +// +typedef struct _GLFWlibraryX11 +{ + Display* display; + int screen; + Window root; + + // System content scale + float contentScaleX, contentScaleY; + // Helper window for IPC + Window helperWindowHandle; + // Invisible cursor for hidden cursor mode + Cursor hiddenCursorHandle; + // Context for mapping window XIDs to _GLFWwindow pointers + XContext context; + // XIM input method + XIM im; + // The previous X error handler, to be restored later + XErrorHandler errorHandler; + // Most recent error code received by X error handler + int errorCode; + // Primary selection string (while the primary selection is owned) + char* primarySelectionString; + // Clipboard string (while the selection is owned) + char* clipboardString; + // Key name string + char keynames[GLFW_KEY_LAST + 1][5]; + // X11 keycode to GLFW key LUT + short int keycodes[256]; + // GLFW key to X11 keycode LUT + short int scancodes[GLFW_KEY_LAST + 1]; + // Where to place the cursor when re-enabled + double restoreCursorPosX, restoreCursorPosY; + // The window whose disabled cursor mode is active + _GLFWwindow* disabledCursorWindow; + int emptyEventPipe[2]; + + // Window manager atoms + Atom NET_SUPPORTED; + Atom NET_SUPPORTING_WM_CHECK; + Atom WM_PROTOCOLS; + Atom WM_STATE; + Atom WM_DELETE_WINDOW; + Atom NET_WM_NAME; + Atom NET_WM_ICON_NAME; + Atom NET_WM_ICON; + Atom NET_WM_PID; + Atom NET_WM_PING; + Atom NET_WM_WINDOW_TYPE; + Atom NET_WM_WINDOW_TYPE_NORMAL; + Atom NET_WM_STATE; + Atom NET_WM_STATE_ABOVE; + Atom NET_WM_STATE_FULLSCREEN; + Atom NET_WM_STATE_MAXIMIZED_VERT; + Atom NET_WM_STATE_MAXIMIZED_HORZ; + Atom NET_WM_STATE_DEMANDS_ATTENTION; + Atom NET_WM_BYPASS_COMPOSITOR; + Atom NET_WM_FULLSCREEN_MONITORS; + Atom NET_WM_WINDOW_OPACITY; + Atom NET_WM_CM_Sx; + Atom NET_WORKAREA; + Atom NET_CURRENT_DESKTOP; + Atom NET_ACTIVE_WINDOW; + Atom NET_FRAME_EXTENTS; + Atom NET_REQUEST_FRAME_EXTENTS; + Atom MOTIF_WM_HINTS; + + // Xdnd (drag and drop) atoms + Atom XdndAware; + Atom XdndEnter; + Atom XdndPosition; + Atom XdndStatus; + Atom XdndActionCopy; + Atom XdndDrop; + Atom XdndFinished; + Atom XdndSelection; + Atom XdndTypeList; + Atom text_uri_list; + + // Selection (clipboard) atoms + Atom TARGETS; + Atom MULTIPLE; + Atom INCR; + Atom CLIPBOARD; + Atom PRIMARY; + Atom CLIPBOARD_MANAGER; + Atom SAVE_TARGETS; + Atom NULL_; + Atom UTF8_STRING; + Atom COMPOUND_STRING; + Atom ATOM_PAIR; + Atom GLFW_SELECTION; + + struct { + void* handle; + GLFWbool utf8; + PFN_XAllocClassHint AllocClassHint; + PFN_XAllocSizeHints AllocSizeHints; + PFN_XAllocWMHints AllocWMHints; + PFN_XChangeProperty ChangeProperty; + PFN_XChangeWindowAttributes ChangeWindowAttributes; + PFN_XCheckIfEvent CheckIfEvent; + PFN_XCheckTypedWindowEvent CheckTypedWindowEvent; + PFN_XCloseDisplay CloseDisplay; + PFN_XCloseIM CloseIM; + PFN_XConvertSelection ConvertSelection; + PFN_XCreateColormap CreateColormap; + PFN_XCreateFontCursor CreateFontCursor; + PFN_XCreateIC CreateIC; + PFN_XCreateRegion CreateRegion; + PFN_XCreateWindow CreateWindow; + PFN_XDefineCursor DefineCursor; + PFN_XDeleteContext DeleteContext; + PFN_XDeleteProperty DeleteProperty; + PFN_XDestroyIC DestroyIC; + PFN_XDestroyRegion DestroyRegion; + PFN_XDestroyWindow DestroyWindow; + PFN_XDisplayKeycodes DisplayKeycodes; + PFN_XEventsQueued EventsQueued; + PFN_XFilterEvent FilterEvent; + PFN_XFindContext FindContext; + PFN_XFlush Flush; + PFN_XFree Free; + PFN_XFreeColormap FreeColormap; + PFN_XFreeCursor FreeCursor; + PFN_XFreeEventData FreeEventData; + PFN_XGetErrorText GetErrorText; + PFN_XGetEventData GetEventData; + PFN_XGetICValues GetICValues; + PFN_XGetIMValues GetIMValues; + PFN_XGetInputFocus GetInputFocus; + PFN_XGetKeyboardMapping GetKeyboardMapping; + PFN_XGetScreenSaver GetScreenSaver; + PFN_XGetSelectionOwner GetSelectionOwner; + PFN_XGetVisualInfo GetVisualInfo; + PFN_XGetWMNormalHints GetWMNormalHints; + PFN_XGetWindowAttributes GetWindowAttributes; + PFN_XGetWindowProperty GetWindowProperty; + PFN_XGrabPointer GrabPointer; + PFN_XIconifyWindow IconifyWindow; + PFN_XInternAtom InternAtom; + PFN_XLookupString LookupString; + PFN_XMapRaised MapRaised; + PFN_XMapWindow MapWindow; + PFN_XMoveResizeWindow MoveResizeWindow; + PFN_XMoveWindow MoveWindow; + PFN_XNextEvent NextEvent; + PFN_XOpenIM OpenIM; + PFN_XPeekEvent PeekEvent; + PFN_XPending Pending; + PFN_XQueryExtension QueryExtension; + PFN_XQueryPointer QueryPointer; + PFN_XRaiseWindow RaiseWindow; + PFN_XRegisterIMInstantiateCallback RegisterIMInstantiateCallback; + PFN_XResizeWindow ResizeWindow; + PFN_XResourceManagerString ResourceManagerString; + PFN_XSaveContext SaveContext; + PFN_XSelectInput SelectInput; + PFN_XSendEvent SendEvent; + PFN_XSetClassHint SetClassHint; + PFN_XSetErrorHandler SetErrorHandler; + PFN_XSetICFocus SetICFocus; + PFN_XSetIMValues SetIMValues; + PFN_XSetInputFocus SetInputFocus; + PFN_XSetLocaleModifiers SetLocaleModifiers; + PFN_XSetScreenSaver SetScreenSaver; + PFN_XSetSelectionOwner SetSelectionOwner; + PFN_XSetWMHints SetWMHints; + PFN_XSetWMNormalHints SetWMNormalHints; + PFN_XSetWMProtocols SetWMProtocols; + PFN_XSupportsLocale SupportsLocale; + PFN_XSync Sync; + PFN_XTranslateCoordinates TranslateCoordinates; + PFN_XUndefineCursor UndefineCursor; + PFN_XUngrabPointer UngrabPointer; + PFN_XUnmapWindow UnmapWindow; + PFN_XUnsetICFocus UnsetICFocus; + PFN_XVisualIDFromVisual VisualIDFromVisual; + PFN_XWarpPointer WarpPointer; + PFN_XUnregisterIMInstantiateCallback UnregisterIMInstantiateCallback; + PFN_Xutf8LookupString utf8LookupString; + PFN_Xutf8SetWMProperties utf8SetWMProperties; + } xlib; + + struct { + PFN_XrmDestroyDatabase DestroyDatabase; + PFN_XrmGetResource GetResource; + PFN_XrmGetStringDatabase GetStringDatabase; + PFN_XrmUniqueQuark UniqueQuark; + } xrm; + + struct { + GLFWbool available; + void* handle; + int eventBase; + int errorBase; + int major; + int minor; + GLFWbool gammaBroken; + GLFWbool monitorBroken; + PFN_XRRAllocGamma AllocGamma; + PFN_XRRFreeCrtcInfo FreeCrtcInfo; + PFN_XRRFreeGamma FreeGamma; + PFN_XRRFreeOutputInfo FreeOutputInfo; + PFN_XRRFreeScreenResources FreeScreenResources; + PFN_XRRGetCrtcGamma GetCrtcGamma; + PFN_XRRGetCrtcGammaSize GetCrtcGammaSize; + PFN_XRRGetCrtcInfo GetCrtcInfo; + PFN_XRRGetOutputInfo GetOutputInfo; + PFN_XRRGetOutputPrimary GetOutputPrimary; + PFN_XRRGetScreenResourcesCurrent GetScreenResourcesCurrent; + PFN_XRRQueryExtension QueryExtension; + PFN_XRRQueryVersion QueryVersion; + PFN_XRRSelectInput SelectInput; + PFN_XRRSetCrtcConfig SetCrtcConfig; + PFN_XRRSetCrtcGamma SetCrtcGamma; + PFN_XRRUpdateConfiguration UpdateConfiguration; + } randr; + + struct { + GLFWbool available; + GLFWbool detectable; + int majorOpcode; + int eventBase; + int errorBase; + int major; + int minor; + unsigned int group; + PFN_XkbFreeKeyboard FreeKeyboard; + PFN_XkbFreeNames FreeNames; + PFN_XkbGetMap GetMap; + PFN_XkbGetNames GetNames; + PFN_XkbGetState GetState; + PFN_XkbKeycodeToKeysym KeycodeToKeysym; + PFN_XkbQueryExtension QueryExtension; + PFN_XkbSelectEventDetails SelectEventDetails; + PFN_XkbSetDetectableAutoRepeat SetDetectableAutoRepeat; + } xkb; + + struct { + int count; + int timeout; + int interval; + int blanking; + int exposure; + } saver; + + struct { + int version; + Window source; + Atom format; + } xdnd; + + struct { + void* handle; + PFN_XcursorImageCreate ImageCreate; + PFN_XcursorImageDestroy ImageDestroy; + PFN_XcursorImageLoadCursor ImageLoadCursor; + PFN_XcursorGetTheme GetTheme; + PFN_XcursorGetDefaultSize GetDefaultSize; + PFN_XcursorLibraryLoadImage LibraryLoadImage; + } xcursor; + + struct { + GLFWbool available; + void* handle; + int major; + int minor; + PFN_XineramaIsActive IsActive; + PFN_XineramaQueryExtension QueryExtension; + PFN_XineramaQueryScreens QueryScreens; + } xinerama; + + struct { + void* handle; + PFN_XGetXCBConnection GetXCBConnection; + } x11xcb; + + struct { + GLFWbool available; + void* handle; + int eventBase; + int errorBase; + PFN_XF86VidModeQueryExtension QueryExtension; + PFN_XF86VidModeGetGammaRamp GetGammaRamp; + PFN_XF86VidModeSetGammaRamp SetGammaRamp; + PFN_XF86VidModeGetGammaRampSize GetGammaRampSize; + } vidmode; + + struct { + GLFWbool available; + void* handle; + int majorOpcode; + int eventBase; + int errorBase; + int major; + int minor; + PFN_XIQueryVersion QueryVersion; + PFN_XISelectEvents SelectEvents; + } xi; + + struct { + GLFWbool available; + void* handle; + int major; + int minor; + int eventBase; + int errorBase; + PFN_XRenderQueryExtension QueryExtension; + PFN_XRenderQueryVersion QueryVersion; + PFN_XRenderFindVisualFormat FindVisualFormat; + } xrender; + + struct { + GLFWbool available; + void* handle; + int major; + int minor; + int eventBase; + int errorBase; + PFN_XShapeQueryExtension QueryExtension; + PFN_XShapeCombineRegion ShapeCombineRegion; + PFN_XShapeQueryVersion QueryVersion; + PFN_XShapeCombineMask ShapeCombineMask; + } xshape; +} _GLFWlibraryX11; + +// X11-specific per-monitor data +// +typedef struct _GLFWmonitorX11 +{ + RROutput output; + RRCrtc crtc; + RRMode oldMode; + + // Index of corresponding Xinerama screen, + // for EWMH full screen window placement + int index; +} _GLFWmonitorX11; + +// X11-specific per-cursor data +// +typedef struct _GLFWcursorX11 +{ + Cursor handle; +} _GLFWcursorX11; + + +GLFWbool _glfwConnectX11(int platformID, _GLFWplatform* platform); +int _glfwInitX11(void); +void _glfwTerminateX11(void); + +GLFWbool _glfwCreateWindowX11(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig); +void _glfwDestroyWindowX11(_GLFWwindow* window); +void _glfwSetWindowTitleX11(_GLFWwindow* window, const char* title); +void _glfwSetWindowIconX11(_GLFWwindow* window, int count, const GLFWimage* images); +void _glfwGetWindowPosX11(_GLFWwindow* window, int* xpos, int* ypos); +void _glfwSetWindowPosX11(_GLFWwindow* window, int xpos, int ypos); +void _glfwGetWindowSizeX11(_GLFWwindow* window, int* width, int* height); +void _glfwSetWindowSizeX11(_GLFWwindow* window, int width, int height); +void _glfwSetWindowSizeLimitsX11(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); +void _glfwSetWindowAspectRatioX11(_GLFWwindow* window, int numer, int denom); +void _glfwGetFramebufferSizeX11(_GLFWwindow* window, int* width, int* height); +void _glfwGetWindowFrameSizeX11(_GLFWwindow* window, int* left, int* top, int* right, int* bottom); +void _glfwGetWindowContentScaleX11(_GLFWwindow* window, float* xscale, float* yscale); +void _glfwIconifyWindowX11(_GLFWwindow* window); +void _glfwRestoreWindowX11(_GLFWwindow* window); +void _glfwMaximizeWindowX11(_GLFWwindow* window); +void _glfwShowWindowX11(_GLFWwindow* window); +void _glfwHideWindowX11(_GLFWwindow* window); +void _glfwRequestWindowAttentionX11(_GLFWwindow* window); +void _glfwFocusWindowX11(_GLFWwindow* window); +void _glfwSetWindowMonitorX11(_GLFWwindow* window, _GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); +GLFWbool _glfwWindowFocusedX11(_GLFWwindow* window); +GLFWbool _glfwWindowIconifiedX11(_GLFWwindow* window); +GLFWbool _glfwWindowVisibleX11(_GLFWwindow* window); +GLFWbool _glfwWindowMaximizedX11(_GLFWwindow* window); +GLFWbool _glfwWindowHoveredX11(_GLFWwindow* window); +GLFWbool _glfwFramebufferTransparentX11(_GLFWwindow* window); +void _glfwSetWindowResizableX11(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowDecoratedX11(_GLFWwindow* window, GLFWbool enabled); +void _glfwSetWindowFloatingX11(_GLFWwindow* window, GLFWbool enabled); +float _glfwGetWindowOpacityX11(_GLFWwindow* window); +void _glfwSetWindowOpacityX11(_GLFWwindow* window, float opacity); +void _glfwSetWindowMousePassthroughX11(_GLFWwindow* window, GLFWbool enabled); + +void _glfwSetRawMouseMotionX11(_GLFWwindow *window, GLFWbool enabled); +GLFWbool _glfwRawMouseMotionSupportedX11(void); + +void _glfwPollEventsX11(void); +void _glfwWaitEventsX11(void); +void _glfwWaitEventsTimeoutX11(double timeout); +void _glfwPostEmptyEventX11(void); + +void _glfwGetCursorPosX11(_GLFWwindow* window, double* xpos, double* ypos); +void _glfwSetCursorPosX11(_GLFWwindow* window, double xpos, double ypos); +void _glfwSetCursorModeX11(_GLFWwindow* window, int mode); +const char* _glfwGetScancodeNameX11(int scancode); +int _glfwGetKeyScancodeX11(int key); +GLFWbool _glfwCreateCursorX11(_GLFWcursor* cursor, const GLFWimage* image, int xhot, int yhot); +GLFWbool _glfwCreateStandardCursorX11(_GLFWcursor* cursor, int shape); +void _glfwDestroyCursorX11(_GLFWcursor* cursor); +void _glfwSetCursorX11(_GLFWwindow* window, _GLFWcursor* cursor); +void _glfwSetClipboardStringX11(const char* string); +const char* _glfwGetClipboardStringX11(void); + +EGLenum _glfwGetEGLPlatformX11(EGLint** attribs); +EGLNativeDisplayType _glfwGetEGLNativeDisplayX11(void); +EGLNativeWindowType _glfwGetEGLNativeWindowX11(_GLFWwindow* window); + +void _glfwGetRequiredInstanceExtensionsX11(char** extensions); +GLFWbool _glfwGetPhysicalDevicePresentationSupportX11(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); +VkResult _glfwCreateWindowSurfaceX11(VkInstance instance, _GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +void _glfwFreeMonitorX11(_GLFWmonitor* monitor); +void _glfwGetMonitorPosX11(_GLFWmonitor* monitor, int* xpos, int* ypos); +void _glfwGetMonitorContentScaleX11(_GLFWmonitor* monitor, float* xscale, float* yscale); +void _glfwGetMonitorWorkareaX11(_GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); +GLFWvidmode* _glfwGetVideoModesX11(_GLFWmonitor* monitor, int* count); +void _glfwGetVideoModeX11(_GLFWmonitor* monitor, GLFWvidmode* mode); +GLFWbool _glfwGetGammaRampX11(_GLFWmonitor* monitor, GLFWgammaramp* ramp); +void _glfwSetGammaRampX11(_GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +void _glfwPollMonitorsX11(void); +void _glfwSetVideoModeX11(_GLFWmonitor* monitor, const GLFWvidmode* desired); +void _glfwRestoreVideoModeX11(_GLFWmonitor* monitor); + +Cursor _glfwCreateNativeCursorX11(const GLFWimage* image, int xhot, int yhot); + +unsigned long _glfwGetWindowPropertyX11(Window window, + Atom property, + Atom type, + unsigned char** value); +GLFWbool _glfwIsVisualTransparentX11(Visual* visual); + +void _glfwGrabErrorHandlerX11(void); +void _glfwReleaseErrorHandlerX11(void); +void _glfwInputErrorX11(int error, const char* message); + +void _glfwPushSelectionToManagerX11(void); +void _glfwCreateInputContextX11(_GLFWwindow* window); + +GLFWbool _glfwInitGLX(void); +void _glfwTerminateGLX(void); +GLFWbool _glfwCreateContextGLX(_GLFWwindow* window, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig); +void _glfwDestroyContextGLX(_GLFWwindow* window); +GLFWbool _glfwChooseVisualGLX(const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig, + Visual** visual, int* depth); + diff --git a/lib/glfw/src/x11_window.c b/lib/glfw/src/x11_window.c new file mode 100644 index 0000000..2c46bff --- /dev/null +++ b/lib/glfw/src/x11_window.c @@ -0,0 +1,3355 @@ +//======================================================================== +// GLFW 3.4 X11 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2019 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_X11) + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +// Action for EWMH client messages +#define _NET_WM_STATE_REMOVE 0 +#define _NET_WM_STATE_ADD 1 +#define _NET_WM_STATE_TOGGLE 2 + +// Additional mouse button names for XButtonEvent +#define Button6 6 +#define Button7 7 + +// Motif WM hints flags +#define MWM_HINTS_DECORATIONS 2 +#define MWM_DECOR_ALL 1 + +#define _GLFW_XDND_VERSION 5 + +// Wait for event data to arrive on the X11 display socket +// This avoids blocking other threads via the per-display Xlib lock that also +// covers GLX functions +// +static GLFWbool waitForX11Event(double* timeout) +{ + struct pollfd fd = { ConnectionNumber(_glfw.x11.display), POLLIN }; + + while (!XPending(_glfw.x11.display)) + { + if (!_glfwPollPOSIX(&fd, 1, timeout)) + return GLFW_FALSE; + } + + return GLFW_TRUE; +} + +// Wait for event data to arrive on any event file descriptor +// This avoids blocking other threads via the per-display Xlib lock that also +// covers GLX functions +// +static GLFWbool waitForAnyEvent(double* timeout) +{ + nfds_t count = 2; + struct pollfd fds[3] = + { + { ConnectionNumber(_glfw.x11.display), POLLIN }, + { _glfw.x11.emptyEventPipe[0], POLLIN } + }; + +#if defined(_GLFW_LINUX_JOYSTICK) + if (_glfw.joysticksInitialized) + fds[count++] = (struct pollfd) { _glfw.linjs.inotify, POLLIN }; +#endif + + while (!XPending(_glfw.x11.display)) + { + if (!_glfwPollPOSIX(fds, count, timeout)) + return GLFW_FALSE; + + for (int i = 1; i < count; i++) + { + if (fds[i].revents & POLLIN) + return GLFW_TRUE; + } + } + + return GLFW_TRUE; +} + +// Writes a byte to the empty event pipe +// +static void writeEmptyEvent(void) +{ + for (;;) + { + const char byte = 0; + const ssize_t result = write(_glfw.x11.emptyEventPipe[1], &byte, 1); + if (result == 1 || (result == -1 && errno != EINTR)) + break; + } +} + +// Drains available data from the empty event pipe +// +static void drainEmptyEvents(void) +{ + for (;;) + { + char dummy[64]; + const ssize_t result = read(_glfw.x11.emptyEventPipe[0], dummy, sizeof(dummy)); + if (result == -1 && errno != EINTR) + break; + } +} + +// Waits until a VisibilityNotify event arrives for the specified window or the +// timeout period elapses (ICCCM section 4.2.2) +// +static GLFWbool waitForVisibilityNotify(_GLFWwindow* window) +{ + XEvent dummy; + double timeout = 0.1; + + while (!XCheckTypedWindowEvent(_glfw.x11.display, + window->x11.handle, + VisibilityNotify, + &dummy)) + { + if (!waitForX11Event(&timeout)) + return GLFW_FALSE; + } + + return GLFW_TRUE; +} + +// Returns whether the window is iconified +// +static int getWindowState(_GLFWwindow* window) +{ + int result = WithdrawnState; + struct { + CARD32 state; + Window icon; + } *state = NULL; + + if (_glfwGetWindowPropertyX11(window->x11.handle, + _glfw.x11.WM_STATE, + _glfw.x11.WM_STATE, + (unsigned char**) &state) >= 2) + { + result = state->state; + } + + if (state) + XFree(state); + + return result; +} + +// Returns whether the event is a selection event +// +static Bool isSelectionEvent(Display* display, XEvent* event, XPointer pointer) +{ + if (event->xany.window != _glfw.x11.helperWindowHandle) + return False; + + return event->type == SelectionRequest || + event->type == SelectionNotify || + event->type == SelectionClear; +} + +// Returns whether it is a _NET_FRAME_EXTENTS event for the specified window +// +static Bool isFrameExtentsEvent(Display* display, XEvent* event, XPointer pointer) +{ + _GLFWwindow* window = (_GLFWwindow*) pointer; + return event->type == PropertyNotify && + event->xproperty.state == PropertyNewValue && + event->xproperty.window == window->x11.handle && + event->xproperty.atom == _glfw.x11.NET_FRAME_EXTENTS; +} + +// Returns whether it is a property event for the specified selection transfer +// +static Bool isSelPropNewValueNotify(Display* display, XEvent* event, XPointer pointer) +{ + XEvent* notification = (XEvent*) pointer; + return event->type == PropertyNotify && + event->xproperty.state == PropertyNewValue && + event->xproperty.window == notification->xselection.requestor && + event->xproperty.atom == notification->xselection.property; +} + +// Translates an X event modifier state mask +// +static int translateState(int state) +{ + int mods = 0; + + if (state & ShiftMask) + mods |= GLFW_MOD_SHIFT; + if (state & ControlMask) + mods |= GLFW_MOD_CONTROL; + if (state & Mod1Mask) + mods |= GLFW_MOD_ALT; + if (state & Mod4Mask) + mods |= GLFW_MOD_SUPER; + if (state & LockMask) + mods |= GLFW_MOD_CAPS_LOCK; + if (state & Mod2Mask) + mods |= GLFW_MOD_NUM_LOCK; + + return mods; +} + +// Translates an X11 key code to a GLFW key token +// +static int translateKey(int scancode) +{ + // Use the pre-filled LUT (see createKeyTables() in x11_init.c) + if (scancode < 0 || scancode > 255) + return GLFW_KEY_UNKNOWN; + + return _glfw.x11.keycodes[scancode]; +} + +// Sends an EWMH or ICCCM event to the window manager +// +static void sendEventToWM(_GLFWwindow* window, Atom type, + long a, long b, long c, long d, long e) +{ + XEvent event = { ClientMessage }; + event.xclient.window = window->x11.handle; + event.xclient.format = 32; // Data is 32-bit longs + event.xclient.message_type = type; + event.xclient.data.l[0] = a; + event.xclient.data.l[1] = b; + event.xclient.data.l[2] = c; + event.xclient.data.l[3] = d; + event.xclient.data.l[4] = e; + + XSendEvent(_glfw.x11.display, _glfw.x11.root, + False, + SubstructureNotifyMask | SubstructureRedirectMask, + &event); +} + +// Updates the normal hints according to the window settings +// +static void updateNormalHints(_GLFWwindow* window, int width, int height) +{ + XSizeHints* hints = XAllocSizeHints(); + + long supplied; + XGetWMNormalHints(_glfw.x11.display, window->x11.handle, hints, &supplied); + + hints->flags &= ~(PMinSize | PMaxSize | PAspect); + + if (!window->monitor) + { + if (window->resizable) + { + if (window->minwidth != GLFW_DONT_CARE && + window->minheight != GLFW_DONT_CARE) + { + hints->flags |= PMinSize; + hints->min_width = window->minwidth; + hints->min_height = window->minheight; + } + + if (window->maxwidth != GLFW_DONT_CARE && + window->maxheight != GLFW_DONT_CARE) + { + hints->flags |= PMaxSize; + hints->max_width = window->maxwidth; + hints->max_height = window->maxheight; + } + + if (window->numer != GLFW_DONT_CARE && + window->denom != GLFW_DONT_CARE) + { + hints->flags |= PAspect; + hints->min_aspect.x = hints->max_aspect.x = window->numer; + hints->min_aspect.y = hints->max_aspect.y = window->denom; + } + } + else + { + hints->flags |= (PMinSize | PMaxSize); + hints->min_width = hints->max_width = width; + hints->min_height = hints->max_height = height; + } + } + + XSetWMNormalHints(_glfw.x11.display, window->x11.handle, hints); + XFree(hints); +} + +// Updates the full screen status of the window +// +static void updateWindowMode(_GLFWwindow* window) +{ + if (window->monitor) + { + if (_glfw.x11.xinerama.available && + _glfw.x11.NET_WM_FULLSCREEN_MONITORS) + { + sendEventToWM(window, + _glfw.x11.NET_WM_FULLSCREEN_MONITORS, + window->monitor->x11.index, + window->monitor->x11.index, + window->monitor->x11.index, + window->monitor->x11.index, + 0); + } + + if (_glfw.x11.NET_WM_STATE && _glfw.x11.NET_WM_STATE_FULLSCREEN) + { + sendEventToWM(window, + _glfw.x11.NET_WM_STATE, + _NET_WM_STATE_ADD, + _glfw.x11.NET_WM_STATE_FULLSCREEN, + 0, 1, 0); + } + else + { + // This is the butcher's way of removing window decorations + // Setting the override-redirect attribute on a window makes the + // window manager ignore the window completely (ICCCM, section 4) + // The good thing is that this makes undecorated full screen windows + // easy to do; the bad thing is that we have to do everything + // manually and some things (like iconify/restore) won't work at + // all, as those are tasks usually performed by the window manager + + XSetWindowAttributes attributes; + attributes.override_redirect = True; + XChangeWindowAttributes(_glfw.x11.display, + window->x11.handle, + CWOverrideRedirect, + &attributes); + + window->x11.overrideRedirect = GLFW_TRUE; + } + + // Enable compositor bypass + if (!window->x11.transparent) + { + const unsigned long value = 1; + + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_BYPASS_COMPOSITOR, XA_CARDINAL, 32, + PropModeReplace, (unsigned char*) &value, 1); + } + } + else + { + if (_glfw.x11.xinerama.available && + _glfw.x11.NET_WM_FULLSCREEN_MONITORS) + { + XDeleteProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_FULLSCREEN_MONITORS); + } + + if (_glfw.x11.NET_WM_STATE && _glfw.x11.NET_WM_STATE_FULLSCREEN) + { + sendEventToWM(window, + _glfw.x11.NET_WM_STATE, + _NET_WM_STATE_REMOVE, + _glfw.x11.NET_WM_STATE_FULLSCREEN, + 0, 1, 0); + } + else + { + XSetWindowAttributes attributes; + attributes.override_redirect = False; + XChangeWindowAttributes(_glfw.x11.display, + window->x11.handle, + CWOverrideRedirect, + &attributes); + + window->x11.overrideRedirect = GLFW_FALSE; + } + + // Disable compositor bypass + if (!window->x11.transparent) + { + XDeleteProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_BYPASS_COMPOSITOR); + } + } +} + +// Decode a Unicode code point from a UTF-8 stream +// Based on cutef8 by Jeff Bezanson (Public Domain) +// +static uint32_t decodeUTF8(const char** s) +{ + uint32_t codepoint = 0, count = 0; + static const uint32_t offsets[] = + { + 0x00000000u, 0x00003080u, 0x000e2080u, + 0x03c82080u, 0xfa082080u, 0x82082080u + }; + + do + { + codepoint = (codepoint << 6) + (unsigned char) **s; + (*s)++; + count++; + } while ((**s & 0xc0) == 0x80); + + assert(count <= 6); + return codepoint - offsets[count - 1]; +} + +// Convert the specified Latin-1 string to UTF-8 +// +static char* convertLatin1toUTF8(const char* source) +{ + size_t size = 1; + const char* sp; + + for (sp = source; *sp; sp++) + size += (*sp & 0x80) ? 2 : 1; + + char* target = _glfw_calloc(size, 1); + char* tp = target; + + for (sp = source; *sp; sp++) + tp += _glfwEncodeUTF8(tp, *sp); + + return target; +} + +// Updates the cursor image according to its cursor mode +// +static void updateCursorImage(_GLFWwindow* window) +{ + if (window->cursorMode == GLFW_CURSOR_NORMAL || + window->cursorMode == GLFW_CURSOR_CAPTURED) + { + if (window->cursor) + { + XDefineCursor(_glfw.x11.display, window->x11.handle, + window->cursor->x11.handle); + } + else + XUndefineCursor(_glfw.x11.display, window->x11.handle); + } + else + { + XDefineCursor(_glfw.x11.display, window->x11.handle, + _glfw.x11.hiddenCursorHandle); + } +} + +// Grabs the cursor and confines it to the window +// +static void captureCursor(_GLFWwindow* window) +{ + XGrabPointer(_glfw.x11.display, window->x11.handle, True, + ButtonPressMask | ButtonReleaseMask | PointerMotionMask, + GrabModeAsync, GrabModeAsync, + window->x11.handle, + None, + CurrentTime); +} + +// Ungrabs the cursor +// +static void releaseCursor(void) +{ + XUngrabPointer(_glfw.x11.display, CurrentTime); +} + +// Enable XI2 raw mouse motion events +// +static void enableRawMouseMotion(_GLFWwindow* window) +{ + XIEventMask em; + unsigned char mask[XIMaskLen(XI_RawMotion)] = { 0 }; + + em.deviceid = XIAllMasterDevices; + em.mask_len = sizeof(mask); + em.mask = mask; + XISetMask(mask, XI_RawMotion); + + XISelectEvents(_glfw.x11.display, _glfw.x11.root, &em, 1); +} + +// Disable XI2 raw mouse motion events +// +static void disableRawMouseMotion(_GLFWwindow* window) +{ + XIEventMask em; + unsigned char mask[] = { 0 }; + + em.deviceid = XIAllMasterDevices; + em.mask_len = sizeof(mask); + em.mask = mask; + + XISelectEvents(_glfw.x11.display, _glfw.x11.root, &em, 1); +} + +// Apply disabled cursor mode to a focused window +// +static void disableCursor(_GLFWwindow* window) +{ + if (window->rawMouseMotion) + enableRawMouseMotion(window); + + _glfw.x11.disabledCursorWindow = window; + _glfwGetCursorPosX11(window, + &_glfw.x11.restoreCursorPosX, + &_glfw.x11.restoreCursorPosY); + updateCursorImage(window); + _glfwCenterCursorInContentArea(window); + captureCursor(window); +} + +// Exit disabled cursor mode for the specified window +// +static void enableCursor(_GLFWwindow* window) +{ + if (window->rawMouseMotion) + disableRawMouseMotion(window); + + _glfw.x11.disabledCursorWindow = NULL; + releaseCursor(); + _glfwSetCursorPosX11(window, + _glfw.x11.restoreCursorPosX, + _glfw.x11.restoreCursorPosY); + updateCursorImage(window); +} + +// Clear its handle when the input context has been destroyed +// +static void inputContextDestroyCallback(XIC ic, XPointer clientData, XPointer callData) +{ + _GLFWwindow* window = (_GLFWwindow*) clientData; + window->x11.ic = NULL; +} + +// Create the X11 window (and its colormap) +// +static GLFWbool createNativeWindow(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + Visual* visual, int depth) +{ + int width = wndconfig->width; + int height = wndconfig->height; + + if (wndconfig->scaleToMonitor) + { + width *= _glfw.x11.contentScaleX; + height *= _glfw.x11.contentScaleY; + } + + int xpos = 0, ypos = 0; + + if (wndconfig->xpos != GLFW_ANY_POSITION && wndconfig->ypos != GLFW_ANY_POSITION) + { + xpos = wndconfig->xpos; + ypos = wndconfig->ypos; + } + + // Create a colormap based on the visual used by the current context + window->x11.colormap = XCreateColormap(_glfw.x11.display, + _glfw.x11.root, + visual, + AllocNone); + + window->x11.transparent = _glfwIsVisualTransparentX11(visual); + + XSetWindowAttributes wa = { 0 }; + wa.colormap = window->x11.colormap; + wa.event_mask = StructureNotifyMask | KeyPressMask | KeyReleaseMask | + PointerMotionMask | ButtonPressMask | ButtonReleaseMask | + ExposureMask | FocusChangeMask | VisibilityChangeMask | + EnterWindowMask | LeaveWindowMask | PropertyChangeMask; + + _glfwGrabErrorHandlerX11(); + + window->x11.parent = _glfw.x11.root; + window->x11.handle = XCreateWindow(_glfw.x11.display, + _glfw.x11.root, + xpos, ypos, + width, height, + 0, // Border width + depth, // Color depth + InputOutput, + visual, + CWBorderPixel | CWColormap | CWEventMask, + &wa); + + _glfwReleaseErrorHandlerX11(); + + if (!window->x11.handle) + { + _glfwInputErrorX11(GLFW_PLATFORM_ERROR, + "X11: Failed to create window"); + return GLFW_FALSE; + } + + XSaveContext(_glfw.x11.display, + window->x11.handle, + _glfw.x11.context, + (XPointer) window); + + if (!wndconfig->decorated) + _glfwSetWindowDecoratedX11(window, GLFW_FALSE); + + if (_glfw.x11.NET_WM_STATE && !window->monitor) + { + Atom states[3]; + int count = 0; + + if (wndconfig->floating) + { + if (_glfw.x11.NET_WM_STATE_ABOVE) + states[count++] = _glfw.x11.NET_WM_STATE_ABOVE; + } + + if (wndconfig->maximized) + { + if (_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT && + _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ) + { + states[count++] = _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT; + states[count++] = _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ; + window->x11.maximized = GLFW_TRUE; + } + } + + if (count) + { + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_STATE, XA_ATOM, 32, + PropModeReplace, (unsigned char*) states, count); + } + } + + // Declare the WM protocols supported by GLFW + { + Atom protocols[] = + { + _glfw.x11.WM_DELETE_WINDOW, + _glfw.x11.NET_WM_PING + }; + + XSetWMProtocols(_glfw.x11.display, window->x11.handle, + protocols, sizeof(protocols) / sizeof(Atom)); + } + + // Declare our PID + { + const long pid = getpid(); + + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_PID, XA_CARDINAL, 32, + PropModeReplace, + (unsigned char*) &pid, 1); + } + + if (_glfw.x11.NET_WM_WINDOW_TYPE && _glfw.x11.NET_WM_WINDOW_TYPE_NORMAL) + { + Atom type = _glfw.x11.NET_WM_WINDOW_TYPE_NORMAL; + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_WINDOW_TYPE, XA_ATOM, 32, + PropModeReplace, (unsigned char*) &type, 1); + } + + // Set ICCCM WM_HINTS property + { + XWMHints* hints = XAllocWMHints(); + if (!hints) + { + _glfwInputError(GLFW_OUT_OF_MEMORY, + "X11: Failed to allocate WM hints"); + return GLFW_FALSE; + } + + hints->flags = StateHint; + hints->initial_state = NormalState; + + XSetWMHints(_glfw.x11.display, window->x11.handle, hints); + XFree(hints); + } + + // Set ICCCM WM_NORMAL_HINTS property + { + XSizeHints* hints = XAllocSizeHints(); + if (!hints) + { + _glfwInputError(GLFW_OUT_OF_MEMORY, "X11: Failed to allocate size hints"); + return GLFW_FALSE; + } + + if (!wndconfig->resizable) + { + hints->flags |= (PMinSize | PMaxSize); + hints->min_width = hints->max_width = width; + hints->min_height = hints->max_height = height; + } + + // HACK: Explicitly setting PPosition to any value causes some WMs, notably + // Compiz and Metacity, to honor the position of unmapped windows + if (wndconfig->xpos != GLFW_ANY_POSITION && wndconfig->ypos != GLFW_ANY_POSITION) + { + hints->flags |= PPosition; + hints->x = 0; + hints->y = 0; + } + + hints->flags |= PWinGravity; + hints->win_gravity = StaticGravity; + + XSetWMNormalHints(_glfw.x11.display, window->x11.handle, hints); + XFree(hints); + } + + // Set ICCCM WM_CLASS property + { + XClassHint* hint = XAllocClassHint(); + + if (strlen(wndconfig->x11.instanceName) && + strlen(wndconfig->x11.className)) + { + hint->res_name = (char*) wndconfig->x11.instanceName; + hint->res_class = (char*) wndconfig->x11.className; + } + else + { + const char* resourceName = getenv("RESOURCE_NAME"); + if (resourceName && strlen(resourceName)) + hint->res_name = (char*) resourceName; + else if (strlen(wndconfig->title)) + hint->res_name = (char*) wndconfig->title; + else + hint->res_name = (char*) "glfw-application"; + + if (strlen(wndconfig->title)) + hint->res_class = (char*) wndconfig->title; + else + hint->res_class = (char*) "GLFW-Application"; + } + + XSetClassHint(_glfw.x11.display, window->x11.handle, hint); + XFree(hint); + } + + // Announce support for Xdnd (drag and drop) + { + const Atom version = _GLFW_XDND_VERSION; + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.XdndAware, XA_ATOM, 32, + PropModeReplace, (unsigned char*) &version, 1); + } + + if (_glfw.x11.im) + _glfwCreateInputContextX11(window); + + _glfwSetWindowTitleX11(window, wndconfig->title); + _glfwGetWindowPosX11(window, &window->x11.xpos, &window->x11.ypos); + _glfwGetWindowSizeX11(window, &window->x11.width, &window->x11.height); + + return GLFW_TRUE; +} + +// Set the specified property to the selection converted to the requested target +// +static Atom writeTargetToProperty(const XSelectionRequestEvent* request) +{ + char* selectionString = NULL; + const Atom formats[] = { _glfw.x11.UTF8_STRING, XA_STRING }; + const int formatCount = sizeof(formats) / sizeof(formats[0]); + + if (request->selection == _glfw.x11.PRIMARY) + selectionString = _glfw.x11.primarySelectionString; + else + selectionString = _glfw.x11.clipboardString; + + if (request->property == None) + { + // The requester is a legacy client (ICCCM section 2.2) + // We don't support legacy clients, so fail here + return None; + } + + if (request->target == _glfw.x11.TARGETS) + { + // The list of supported targets was requested + + const Atom targets[] = { _glfw.x11.TARGETS, + _glfw.x11.MULTIPLE, + _glfw.x11.UTF8_STRING, + XA_STRING }; + + XChangeProperty(_glfw.x11.display, + request->requestor, + request->property, + XA_ATOM, + 32, + PropModeReplace, + (unsigned char*) targets, + sizeof(targets) / sizeof(targets[0])); + + return request->property; + } + + if (request->target == _glfw.x11.MULTIPLE) + { + // Multiple conversions were requested + + Atom* targets; + const unsigned long count = + _glfwGetWindowPropertyX11(request->requestor, + request->property, + _glfw.x11.ATOM_PAIR, + (unsigned char**) &targets); + + for (unsigned long i = 0; i < count; i += 2) + { + int j; + + for (j = 0; j < formatCount; j++) + { + if (targets[i] == formats[j]) + break; + } + + if (j < formatCount) + { + XChangeProperty(_glfw.x11.display, + request->requestor, + targets[i + 1], + targets[i], + 8, + PropModeReplace, + (unsigned char *) selectionString, + strlen(selectionString)); + } + else + targets[i + 1] = None; + } + + XChangeProperty(_glfw.x11.display, + request->requestor, + request->property, + _glfw.x11.ATOM_PAIR, + 32, + PropModeReplace, + (unsigned char*) targets, + count); + + XFree(targets); + + return request->property; + } + + if (request->target == _glfw.x11.SAVE_TARGETS) + { + // The request is a check whether we support SAVE_TARGETS + // It should be handled as a no-op side effect target + + XChangeProperty(_glfw.x11.display, + request->requestor, + request->property, + _glfw.x11.NULL_, + 32, + PropModeReplace, + NULL, + 0); + + return request->property; + } + + // Conversion to a data target was requested + + for (int i = 0; i < formatCount; i++) + { + if (request->target == formats[i]) + { + // The requested target is one we support + + XChangeProperty(_glfw.x11.display, + request->requestor, + request->property, + request->target, + 8, + PropModeReplace, + (unsigned char *) selectionString, + strlen(selectionString)); + + return request->property; + } + } + + // The requested target is not supported + + return None; +} + +static void handleSelectionRequest(XEvent* event) +{ + const XSelectionRequestEvent* request = &event->xselectionrequest; + + XEvent reply = { SelectionNotify }; + reply.xselection.property = writeTargetToProperty(request); + reply.xselection.display = request->display; + reply.xselection.requestor = request->requestor; + reply.xselection.selection = request->selection; + reply.xselection.target = request->target; + reply.xselection.time = request->time; + + XSendEvent(_glfw.x11.display, request->requestor, False, 0, &reply); +} + +static const char* getSelectionString(Atom selection) +{ + char** selectionString = NULL; + const Atom targets[] = { _glfw.x11.UTF8_STRING, XA_STRING }; + const size_t targetCount = sizeof(targets) / sizeof(targets[0]); + + if (selection == _glfw.x11.PRIMARY) + selectionString = &_glfw.x11.primarySelectionString; + else + selectionString = &_glfw.x11.clipboardString; + + if (XGetSelectionOwner(_glfw.x11.display, selection) == + _glfw.x11.helperWindowHandle) + { + // Instead of doing a large number of X round-trips just to put this + // string into a window property and then read it back, just return it + return *selectionString; + } + + _glfw_free(*selectionString); + *selectionString = NULL; + + for (size_t i = 0; i < targetCount; i++) + { + char* data; + Atom actualType; + int actualFormat; + unsigned long itemCount, bytesAfter; + XEvent notification, dummy; + + XConvertSelection(_glfw.x11.display, + selection, + targets[i], + _glfw.x11.GLFW_SELECTION, + _glfw.x11.helperWindowHandle, + CurrentTime); + + while (!XCheckTypedWindowEvent(_glfw.x11.display, + _glfw.x11.helperWindowHandle, + SelectionNotify, + ¬ification)) + { + waitForX11Event(NULL); + } + + if (notification.xselection.property == None) + continue; + + XCheckIfEvent(_glfw.x11.display, + &dummy, + isSelPropNewValueNotify, + (XPointer) ¬ification); + + XGetWindowProperty(_glfw.x11.display, + notification.xselection.requestor, + notification.xselection.property, + 0, + LONG_MAX, + True, + AnyPropertyType, + &actualType, + &actualFormat, + &itemCount, + &bytesAfter, + (unsigned char**) &data); + + if (actualType == _glfw.x11.INCR) + { + size_t size = 1; + char* string = NULL; + + for (;;) + { + while (!XCheckIfEvent(_glfw.x11.display, + &dummy, + isSelPropNewValueNotify, + (XPointer) ¬ification)) + { + waitForX11Event(NULL); + } + + XFree(data); + XGetWindowProperty(_glfw.x11.display, + notification.xselection.requestor, + notification.xselection.property, + 0, + LONG_MAX, + True, + AnyPropertyType, + &actualType, + &actualFormat, + &itemCount, + &bytesAfter, + (unsigned char**) &data); + + if (itemCount) + { + size += itemCount; + string = _glfw_realloc(string, size); + string[size - itemCount - 1] = '\0'; + strcat(string, data); + } + + if (!itemCount) + { + if (string) + { + if (targets[i] == XA_STRING) + { + *selectionString = convertLatin1toUTF8(string); + _glfw_free(string); + } + else + *selectionString = string; + } + + break; + } + } + } + else if (actualType == targets[i]) + { + if (targets[i] == XA_STRING) + *selectionString = convertLatin1toUTF8(data); + else + *selectionString = _glfw_strdup(data); + } + + XFree(data); + + if (*selectionString) + break; + } + + if (!*selectionString) + { + _glfwInputError(GLFW_FORMAT_UNAVAILABLE, + "X11: Failed to convert selection to string"); + } + + return *selectionString; +} + +// Make the specified window and its video mode active on its monitor +// +static void acquireMonitor(_GLFWwindow* window) +{ + if (_glfw.x11.saver.count == 0) + { + // Remember old screen saver settings + XGetScreenSaver(_glfw.x11.display, + &_glfw.x11.saver.timeout, + &_glfw.x11.saver.interval, + &_glfw.x11.saver.blanking, + &_glfw.x11.saver.exposure); + + // Disable screen saver + XSetScreenSaver(_glfw.x11.display, 0, 0, DontPreferBlanking, + DefaultExposures); + } + + if (!window->monitor->window) + _glfw.x11.saver.count++; + + _glfwSetVideoModeX11(window->monitor, &window->videoMode); + + if (window->x11.overrideRedirect) + { + int xpos, ypos; + GLFWvidmode mode; + + // Manually position the window over its monitor + _glfwGetMonitorPosX11(window->monitor, &xpos, &ypos); + _glfwGetVideoModeX11(window->monitor, &mode); + + XMoveResizeWindow(_glfw.x11.display, window->x11.handle, + xpos, ypos, mode.width, mode.height); + } + + _glfwInputMonitorWindow(window->monitor, window); +} + +// Remove the window and restore the original video mode +// +static void releaseMonitor(_GLFWwindow* window) +{ + if (window->monitor->window != window) + return; + + _glfwInputMonitorWindow(window->monitor, NULL); + _glfwRestoreVideoModeX11(window->monitor); + + _glfw.x11.saver.count--; + + if (_glfw.x11.saver.count == 0) + { + // Restore old screen saver settings + XSetScreenSaver(_glfw.x11.display, + _glfw.x11.saver.timeout, + _glfw.x11.saver.interval, + _glfw.x11.saver.blanking, + _glfw.x11.saver.exposure); + } +} + +// Process the specified X event +// +static void processEvent(XEvent *event) +{ + int keycode = 0; + Bool filtered = False; + + // HACK: Save scancode as some IMs clear the field in XFilterEvent + if (event->type == KeyPress || event->type == KeyRelease) + keycode = event->xkey.keycode; + + filtered = XFilterEvent(event, None); + + if (_glfw.x11.randr.available) + { + if (event->type == _glfw.x11.randr.eventBase + RRNotify) + { + XRRUpdateConfiguration(event); + _glfwPollMonitorsX11(); + return; + } + } + + if (_glfw.x11.xkb.available) + { + if (event->type == _glfw.x11.xkb.eventBase + XkbEventCode) + { + if (((XkbEvent*) event)->any.xkb_type == XkbStateNotify && + (((XkbEvent*) event)->state.changed & XkbGroupStateMask)) + { + _glfw.x11.xkb.group = ((XkbEvent*) event)->state.group; + } + + return; + } + } + + if (event->type == GenericEvent) + { + if (_glfw.x11.xi.available) + { + _GLFWwindow* window = _glfw.x11.disabledCursorWindow; + + if (window && + window->rawMouseMotion && + event->xcookie.extension == _glfw.x11.xi.majorOpcode && + XGetEventData(_glfw.x11.display, &event->xcookie) && + event->xcookie.evtype == XI_RawMotion) + { + XIRawEvent* re = event->xcookie.data; + if (re->valuators.mask_len) + { + const double* values = re->raw_values; + double xpos = window->virtualCursorPosX; + double ypos = window->virtualCursorPosY; + + if (XIMaskIsSet(re->valuators.mask, 0)) + { + xpos += *values; + values++; + } + + if (XIMaskIsSet(re->valuators.mask, 1)) + ypos += *values; + + _glfwInputCursorPos(window, xpos, ypos); + } + } + + XFreeEventData(_glfw.x11.display, &event->xcookie); + } + + return; + } + + if (event->type == SelectionRequest) + { + handleSelectionRequest(event); + return; + } + + _GLFWwindow* window = NULL; + if (XFindContext(_glfw.x11.display, + event->xany.window, + _glfw.x11.context, + (XPointer*) &window) != 0) + { + // This is an event for a window that has already been destroyed + return; + } + + switch (event->type) + { + case ReparentNotify: + { + window->x11.parent = event->xreparent.parent; + return; + } + + case KeyPress: + { + const int key = translateKey(keycode); + const int mods = translateState(event->xkey.state); + const int plain = !(mods & (GLFW_MOD_CONTROL | GLFW_MOD_ALT)); + + if (window->x11.ic) + { + // HACK: Do not report the key press events duplicated by XIM + // Duplicate key releases are filtered out implicitly by + // the GLFW key repeat logic in _glfwInputKey + // A timestamp per key is used to handle simultaneous keys + // NOTE: Always allow the first event for each key through + // (the server never sends a timestamp of zero) + // NOTE: Timestamp difference is compared to handle wrap-around + Time diff = event->xkey.time - window->x11.keyPressTimes[keycode]; + if (diff == event->xkey.time || (diff > 0 && diff < ((Time)1 << 31))) + { + if (keycode) + _glfwInputKey(window, key, keycode, GLFW_PRESS, mods); + + window->x11.keyPressTimes[keycode] = event->xkey.time; + } + + if (!filtered) + { + int count; + Status status; + char buffer[100]; + char* chars = buffer; + + count = Xutf8LookupString(window->x11.ic, + &event->xkey, + buffer, sizeof(buffer) - 1, + NULL, &status); + + if (status == XBufferOverflow) + { + chars = _glfw_calloc(count + 1, 1); + count = Xutf8LookupString(window->x11.ic, + &event->xkey, + chars, count, + NULL, &status); + } + + if (status == XLookupChars || status == XLookupBoth) + { + const char* c = chars; + chars[count] = '\0'; + while (c - chars < count) + _glfwInputChar(window, decodeUTF8(&c), mods, plain); + } + + if (chars != buffer) + _glfw_free(chars); + } + } + else + { + KeySym keysym; + XLookupString(&event->xkey, NULL, 0, &keysym, NULL); + + _glfwInputKey(window, key, keycode, GLFW_PRESS, mods); + + const uint32_t codepoint = _glfwKeySym2Unicode(keysym); + if (codepoint != GLFW_INVALID_CODEPOINT) + _glfwInputChar(window, codepoint, mods, plain); + } + + return; + } + + case KeyRelease: + { + const int key = translateKey(keycode); + const int mods = translateState(event->xkey.state); + + if (!_glfw.x11.xkb.detectable) + { + // HACK: Key repeat events will arrive as KeyRelease/KeyPress + // pairs with similar or identical time stamps + // The key repeat logic in _glfwInputKey expects only key + // presses to repeat, so detect and discard release events + if (XEventsQueued(_glfw.x11.display, QueuedAfterReading)) + { + XEvent next; + XPeekEvent(_glfw.x11.display, &next); + + if (next.type == KeyPress && + next.xkey.window == event->xkey.window && + next.xkey.keycode == keycode) + { + // HACK: The time of repeat events sometimes doesn't + // match that of the press event, so add an + // epsilon + // Toshiyuki Takahashi can press a button + // 16 times per second so it's fairly safe to + // assume that no human is pressing the key 50 + // times per second (value is ms) + if ((next.xkey.time - event->xkey.time) < 20) + { + // This is very likely a server-generated key repeat + // event, so ignore it + return; + } + } + } + } + + _glfwInputKey(window, key, keycode, GLFW_RELEASE, mods); + return; + } + + case ButtonPress: + { + const int mods = translateState(event->xbutton.state); + + if (event->xbutton.button == Button1) + _glfwInputMouseClick(window, GLFW_MOUSE_BUTTON_LEFT, GLFW_PRESS, mods); + else if (event->xbutton.button == Button2) + _glfwInputMouseClick(window, GLFW_MOUSE_BUTTON_MIDDLE, GLFW_PRESS, mods); + else if (event->xbutton.button == Button3) + _glfwInputMouseClick(window, GLFW_MOUSE_BUTTON_RIGHT, GLFW_PRESS, mods); + + // Modern X provides scroll events as mouse button presses + else if (event->xbutton.button == Button4) + _glfwInputScroll(window, 0.0, 1.0); + else if (event->xbutton.button == Button5) + _glfwInputScroll(window, 0.0, -1.0); + else if (event->xbutton.button == Button6) + _glfwInputScroll(window, 1.0, 0.0); + else if (event->xbutton.button == Button7) + _glfwInputScroll(window, -1.0, 0.0); + + else + { + // Additional buttons after 7 are treated as regular buttons + // We subtract 4 to fill the gap left by scroll input above + _glfwInputMouseClick(window, + event->xbutton.button - Button1 - 4, + GLFW_PRESS, + mods); + } + + return; + } + + case ButtonRelease: + { + const int mods = translateState(event->xbutton.state); + + if (event->xbutton.button == Button1) + { + _glfwInputMouseClick(window, + GLFW_MOUSE_BUTTON_LEFT, + GLFW_RELEASE, + mods); + } + else if (event->xbutton.button == Button2) + { + _glfwInputMouseClick(window, + GLFW_MOUSE_BUTTON_MIDDLE, + GLFW_RELEASE, + mods); + } + else if (event->xbutton.button == Button3) + { + _glfwInputMouseClick(window, + GLFW_MOUSE_BUTTON_RIGHT, + GLFW_RELEASE, + mods); + } + else if (event->xbutton.button > Button7) + { + // Additional buttons after 7 are treated as regular buttons + // We subtract 4 to fill the gap left by scroll input above + _glfwInputMouseClick(window, + event->xbutton.button - Button1 - 4, + GLFW_RELEASE, + mods); + } + + return; + } + + case EnterNotify: + { + // XEnterWindowEvent is XCrossingEvent + const int x = event->xcrossing.x; + const int y = event->xcrossing.y; + + // HACK: This is a workaround for WMs (KWM, Fluxbox) that otherwise + // ignore the defined cursor for hidden cursor mode + if (window->cursorMode == GLFW_CURSOR_HIDDEN) + updateCursorImage(window); + + _glfwInputCursorEnter(window, GLFW_TRUE); + _glfwInputCursorPos(window, x, y); + + window->x11.lastCursorPosX = x; + window->x11.lastCursorPosY = y; + return; + } + + case LeaveNotify: + { + _glfwInputCursorEnter(window, GLFW_FALSE); + return; + } + + case MotionNotify: + { + const int x = event->xmotion.x; + const int y = event->xmotion.y; + + if (x != window->x11.warpCursorPosX || + y != window->x11.warpCursorPosY) + { + // The cursor was moved by something other than GLFW + + if (window->cursorMode == GLFW_CURSOR_DISABLED) + { + if (_glfw.x11.disabledCursorWindow != window) + return; + if (window->rawMouseMotion) + return; + + const int dx = x - window->x11.lastCursorPosX; + const int dy = y - window->x11.lastCursorPosY; + + _glfwInputCursorPos(window, + window->virtualCursorPosX + dx, + window->virtualCursorPosY + dy); + } + else + _glfwInputCursorPos(window, x, y); + } + + window->x11.lastCursorPosX = x; + window->x11.lastCursorPosY = y; + return; + } + + case ConfigureNotify: + { + if (event->xconfigure.width != window->x11.width || + event->xconfigure.height != window->x11.height) + { + _glfwInputFramebufferSize(window, + event->xconfigure.width, + event->xconfigure.height); + + _glfwInputWindowSize(window, + event->xconfigure.width, + event->xconfigure.height); + + window->x11.width = event->xconfigure.width; + window->x11.height = event->xconfigure.height; + } + + int xpos = event->xconfigure.x; + int ypos = event->xconfigure.y; + + // NOTE: ConfigureNotify events from the server are in local + // coordinates, so if we are reparented we need to translate + // the position into root (screen) coordinates + if (!event->xany.send_event && window->x11.parent != _glfw.x11.root) + { + _glfwGrabErrorHandlerX11(); + + Window dummy; + XTranslateCoordinates(_glfw.x11.display, + window->x11.parent, + _glfw.x11.root, + xpos, ypos, + &xpos, &ypos, + &dummy); + + _glfwReleaseErrorHandlerX11(); + if (_glfw.x11.errorCode == BadWindow) + return; + } + + if (xpos != window->x11.xpos || ypos != window->x11.ypos) + { + _glfwInputWindowPos(window, xpos, ypos); + window->x11.xpos = xpos; + window->x11.ypos = ypos; + } + + return; + } + + case ClientMessage: + { + // Custom client message, probably from the window manager + + if (filtered) + return; + + if (event->xclient.message_type == None) + return; + + if (event->xclient.message_type == _glfw.x11.WM_PROTOCOLS) + { + const Atom protocol = event->xclient.data.l[0]; + if (protocol == None) + return; + + if (protocol == _glfw.x11.WM_DELETE_WINDOW) + { + // The window manager was asked to close the window, for + // example by the user pressing a 'close' window decoration + // button + _glfwInputWindowCloseRequest(window); + } + else if (protocol == _glfw.x11.NET_WM_PING) + { + // The window manager is pinging the application to ensure + // it's still responding to events + + XEvent reply = *event; + reply.xclient.window = _glfw.x11.root; + + XSendEvent(_glfw.x11.display, _glfw.x11.root, + False, + SubstructureNotifyMask | SubstructureRedirectMask, + &reply); + } + } + else if (event->xclient.message_type == _glfw.x11.XdndEnter) + { + // A drag operation has entered the window + unsigned long count; + Atom* formats = NULL; + const GLFWbool list = event->xclient.data.l[1] & 1; + + _glfw.x11.xdnd.source = event->xclient.data.l[0]; + _glfw.x11.xdnd.version = event->xclient.data.l[1] >> 24; + _glfw.x11.xdnd.format = None; + + if (_glfw.x11.xdnd.version > _GLFW_XDND_VERSION) + return; + + if (list) + { + count = _glfwGetWindowPropertyX11(_glfw.x11.xdnd.source, + _glfw.x11.XdndTypeList, + XA_ATOM, + (unsigned char**) &formats); + } + else + { + count = 3; + formats = (Atom*) event->xclient.data.l + 2; + } + + for (unsigned int i = 0; i < count; i++) + { + if (formats[i] == _glfw.x11.text_uri_list) + { + _glfw.x11.xdnd.format = _glfw.x11.text_uri_list; + break; + } + } + + if (list && formats) + XFree(formats); + } + else if (event->xclient.message_type == _glfw.x11.XdndDrop) + { + // The drag operation has finished by dropping on the window + Time time = CurrentTime; + + if (_glfw.x11.xdnd.version > _GLFW_XDND_VERSION) + return; + + if (_glfw.x11.xdnd.format) + { + if (_glfw.x11.xdnd.version >= 1) + time = event->xclient.data.l[2]; + + // Request the chosen format from the source window + XConvertSelection(_glfw.x11.display, + _glfw.x11.XdndSelection, + _glfw.x11.xdnd.format, + _glfw.x11.XdndSelection, + window->x11.handle, + time); + } + else if (_glfw.x11.xdnd.version >= 2) + { + XEvent reply = { ClientMessage }; + reply.xclient.window = _glfw.x11.xdnd.source; + reply.xclient.message_type = _glfw.x11.XdndFinished; + reply.xclient.format = 32; + reply.xclient.data.l[0] = window->x11.handle; + reply.xclient.data.l[1] = 0; // The drag was rejected + reply.xclient.data.l[2] = None; + + XSendEvent(_glfw.x11.display, _glfw.x11.xdnd.source, + False, NoEventMask, &reply); + XFlush(_glfw.x11.display); + } + } + else if (event->xclient.message_type == _glfw.x11.XdndPosition) + { + // The drag operation has moved over the window + const int xabs = (event->xclient.data.l[2] >> 16) & 0xffff; + const int yabs = (event->xclient.data.l[2]) & 0xffff; + Window dummy; + int xpos, ypos; + + if (_glfw.x11.xdnd.version > _GLFW_XDND_VERSION) + return; + + XTranslateCoordinates(_glfw.x11.display, + _glfw.x11.root, + window->x11.handle, + xabs, yabs, + &xpos, &ypos, + &dummy); + + _glfwInputCursorPos(window, xpos, ypos); + + XEvent reply = { ClientMessage }; + reply.xclient.window = _glfw.x11.xdnd.source; + reply.xclient.message_type = _glfw.x11.XdndStatus; + reply.xclient.format = 32; + reply.xclient.data.l[0] = window->x11.handle; + reply.xclient.data.l[2] = 0; // Specify an empty rectangle + reply.xclient.data.l[3] = 0; + + if (_glfw.x11.xdnd.format) + { + // Reply that we are ready to copy the dragged data + reply.xclient.data.l[1] = 1; // Accept with no rectangle + if (_glfw.x11.xdnd.version >= 2) + reply.xclient.data.l[4] = _glfw.x11.XdndActionCopy; + } + + XSendEvent(_glfw.x11.display, _glfw.x11.xdnd.source, + False, NoEventMask, &reply); + XFlush(_glfw.x11.display); + } + + return; + } + + case SelectionNotify: + { + if (event->xselection.property == _glfw.x11.XdndSelection) + { + // The converted data from the drag operation has arrived + char* data; + const unsigned long result = + _glfwGetWindowPropertyX11(event->xselection.requestor, + event->xselection.property, + event->xselection.target, + (unsigned char**) &data); + + if (result) + { + int count; + char** paths = _glfwParseUriList(data, &count); + + _glfwInputDrop(window, count, (const char**) paths); + + for (int i = 0; i < count; i++) + _glfw_free(paths[i]); + _glfw_free(paths); + } + + if (data) + XFree(data); + + if (_glfw.x11.xdnd.version >= 2) + { + XEvent reply = { ClientMessage }; + reply.xclient.window = _glfw.x11.xdnd.source; + reply.xclient.message_type = _glfw.x11.XdndFinished; + reply.xclient.format = 32; + reply.xclient.data.l[0] = window->x11.handle; + reply.xclient.data.l[1] = result; + reply.xclient.data.l[2] = _glfw.x11.XdndActionCopy; + + XSendEvent(_glfw.x11.display, _glfw.x11.xdnd.source, + False, NoEventMask, &reply); + XFlush(_glfw.x11.display); + } + } + + return; + } + + case FocusIn: + { + if (event->xfocus.mode == NotifyGrab || + event->xfocus.mode == NotifyUngrab) + { + // Ignore focus events from popup indicator windows, window menu + // key chords and window dragging + return; + } + + if (window->cursorMode == GLFW_CURSOR_DISABLED) + disableCursor(window); + else if (window->cursorMode == GLFW_CURSOR_CAPTURED) + captureCursor(window); + + if (window->x11.ic) + XSetICFocus(window->x11.ic); + + _glfwInputWindowFocus(window, GLFW_TRUE); + return; + } + + case FocusOut: + { + if (event->xfocus.mode == NotifyGrab || + event->xfocus.mode == NotifyUngrab) + { + // Ignore focus events from popup indicator windows, window menu + // key chords and window dragging + return; + } + + if (window->cursorMode == GLFW_CURSOR_DISABLED) + enableCursor(window); + else if (window->cursorMode == GLFW_CURSOR_CAPTURED) + releaseCursor(); + + if (window->x11.ic) + XUnsetICFocus(window->x11.ic); + + if (window->monitor && window->autoIconify) + _glfwIconifyWindowX11(window); + + _glfwInputWindowFocus(window, GLFW_FALSE); + return; + } + + case Expose: + { + _glfwInputWindowDamage(window); + return; + } + + case PropertyNotify: + { + if (event->xproperty.state != PropertyNewValue) + return; + + if (event->xproperty.atom == _glfw.x11.WM_STATE) + { + const int state = getWindowState(window); + if (state != IconicState && state != NormalState) + return; + + const GLFWbool iconified = (state == IconicState); + if (window->x11.iconified != iconified) + { + if (window->monitor) + { + if (iconified) + releaseMonitor(window); + else + acquireMonitor(window); + } + + window->x11.iconified = iconified; + _glfwInputWindowIconify(window, iconified); + } + } + else if (event->xproperty.atom == _glfw.x11.NET_WM_STATE) + { + const GLFWbool maximized = _glfwWindowMaximizedX11(window); + if (window->x11.maximized != maximized) + { + window->x11.maximized = maximized; + _glfwInputWindowMaximize(window, maximized); + } + } + + return; + } + + case DestroyNotify: + return; + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Retrieve a single window property of the specified type +// Inspired by fghGetWindowProperty from freeglut +// +unsigned long _glfwGetWindowPropertyX11(Window window, + Atom property, + Atom type, + unsigned char** value) +{ + Atom actualType; + int actualFormat; + unsigned long itemCount, bytesAfter; + + XGetWindowProperty(_glfw.x11.display, + window, + property, + 0, + LONG_MAX, + False, + type, + &actualType, + &actualFormat, + &itemCount, + &bytesAfter, + value); + + return itemCount; +} + +GLFWbool _glfwIsVisualTransparentX11(Visual* visual) +{ + if (!_glfw.x11.xrender.available) + return GLFW_FALSE; + + XRenderPictFormat* pf = XRenderFindVisualFormat(_glfw.x11.display, visual); + return pf && pf->direct.alphaMask; +} + +// Push contents of our selection to clipboard manager +// +void _glfwPushSelectionToManagerX11(void) +{ + XConvertSelection(_glfw.x11.display, + _glfw.x11.CLIPBOARD_MANAGER, + _glfw.x11.SAVE_TARGETS, + None, + _glfw.x11.helperWindowHandle, + CurrentTime); + + for (;;) + { + XEvent event; + + while (XCheckIfEvent(_glfw.x11.display, &event, isSelectionEvent, NULL)) + { + switch (event.type) + { + case SelectionRequest: + handleSelectionRequest(&event); + break; + + case SelectionNotify: + { + if (event.xselection.target == _glfw.x11.SAVE_TARGETS) + { + // This means one of two things; either the selection + // was not owned, which means there is no clipboard + // manager, or the transfer to the clipboard manager has + // completed + // In either case, it means we are done here + return; + } + + break; + } + } + } + + waitForX11Event(NULL); + } +} + +void _glfwCreateInputContextX11(_GLFWwindow* window) +{ + XIMCallback callback; + callback.callback = (XIMProc) inputContextDestroyCallback; + callback.client_data = (XPointer) window; + + window->x11.ic = XCreateIC(_glfw.x11.im, + XNInputStyle, + XIMPreeditNothing | XIMStatusNothing, + XNClientWindow, + window->x11.handle, + XNFocusWindow, + window->x11.handle, + XNDestroyCallback, + &callback, + NULL); + + if (window->x11.ic) + { + XWindowAttributes attribs; + XGetWindowAttributes(_glfw.x11.display, window->x11.handle, &attribs); + + unsigned long filter = 0; + if (XGetICValues(window->x11.ic, XNFilterEvents, &filter, NULL) == NULL) + { + XSelectInput(_glfw.x11.display, + window->x11.handle, + attribs.your_event_mask | filter); + } + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW platform API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWbool _glfwCreateWindowX11(_GLFWwindow* window, + const _GLFWwndconfig* wndconfig, + const _GLFWctxconfig* ctxconfig, + const _GLFWfbconfig* fbconfig) +{ + Visual* visual = NULL; + int depth; + + if (ctxconfig->client != GLFW_NO_API) + { + if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API) + { + if (!_glfwInitGLX()) + return GLFW_FALSE; + if (!_glfwChooseVisualGLX(wndconfig, ctxconfig, fbconfig, &visual, &depth)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_EGL_CONTEXT_API) + { + if (!_glfwInitEGL()) + return GLFW_FALSE; + if (!_glfwChooseVisualEGL(wndconfig, ctxconfig, fbconfig, &visual, &depth)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API) + { + if (!_glfwInitOSMesa()) + return GLFW_FALSE; + } + } + + if (!visual) + { + visual = DefaultVisual(_glfw.x11.display, _glfw.x11.screen); + depth = DefaultDepth(_glfw.x11.display, _glfw.x11.screen); + } + + if (!createNativeWindow(window, wndconfig, visual, depth)) + return GLFW_FALSE; + + if (ctxconfig->client != GLFW_NO_API) + { + if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API) + { + if (!_glfwCreateContextGLX(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_EGL_CONTEXT_API) + { + if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API) + { + if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig)) + return GLFW_FALSE; + } + + if (!_glfwRefreshContextAttribs(window, ctxconfig)) + return GLFW_FALSE; + } + + if (wndconfig->mousePassthrough) + _glfwSetWindowMousePassthroughX11(window, GLFW_TRUE); + + if (window->monitor) + { + _glfwShowWindowX11(window); + updateWindowMode(window); + acquireMonitor(window); + + if (wndconfig->centerCursor) + _glfwCenterCursorInContentArea(window); + } + else + { + if (wndconfig->visible) + { + _glfwShowWindowX11(window); + if (wndconfig->focused) + _glfwFocusWindowX11(window); + } + } + + XFlush(_glfw.x11.display); + return GLFW_TRUE; +} + +void _glfwDestroyWindowX11(_GLFWwindow* window) +{ + if (_glfw.x11.disabledCursorWindow == window) + enableCursor(window); + + if (window->monitor) + releaseMonitor(window); + + if (window->x11.ic) + { + XDestroyIC(window->x11.ic); + window->x11.ic = NULL; + } + + if (window->context.destroy) + window->context.destroy(window); + + if (window->x11.handle) + { + XDeleteContext(_glfw.x11.display, window->x11.handle, _glfw.x11.context); + XUnmapWindow(_glfw.x11.display, window->x11.handle); + XDestroyWindow(_glfw.x11.display, window->x11.handle); + window->x11.handle = (Window) 0; + } + + if (window->x11.colormap) + { + XFreeColormap(_glfw.x11.display, window->x11.colormap); + window->x11.colormap = (Colormap) 0; + } + + XFlush(_glfw.x11.display); +} + +void _glfwSetWindowTitleX11(_GLFWwindow* window, const char* title) +{ + if (_glfw.x11.xlib.utf8) + { + Xutf8SetWMProperties(_glfw.x11.display, + window->x11.handle, + title, title, + NULL, 0, + NULL, NULL, NULL); + } + + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_NAME, _glfw.x11.UTF8_STRING, 8, + PropModeReplace, + (unsigned char*) title, strlen(title)); + + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_ICON_NAME, _glfw.x11.UTF8_STRING, 8, + PropModeReplace, + (unsigned char*) title, strlen(title)); + + XFlush(_glfw.x11.display); +} + +void _glfwSetWindowIconX11(_GLFWwindow* window, int count, const GLFWimage* images) +{ + if (count) + { + int longCount = 0; + + for (int i = 0; i < count; i++) + longCount += 2 + images[i].width * images[i].height; + + unsigned long* icon = _glfw_calloc(longCount, sizeof(unsigned long)); + unsigned long* target = icon; + + for (int i = 0; i < count; i++) + { + *target++ = images[i].width; + *target++ = images[i].height; + + for (int j = 0; j < images[i].width * images[i].height; j++) + { + *target++ = (((unsigned long) images[i].pixels[j * 4 + 0]) << 16) | + (((unsigned long) images[i].pixels[j * 4 + 1]) << 8) | + (((unsigned long) images[i].pixels[j * 4 + 2]) << 0) | + (((unsigned long) images[i].pixels[j * 4 + 3]) << 24); + } + } + + // NOTE: XChangeProperty expects 32-bit values like the image data above to be + // placed in the 32 least significant bits of individual longs. This is + // true even if long is 64-bit and a WM protocol calls for "packed" data. + // This is because of a historical mistake that then became part of the Xlib + // ABI. Xlib will pack these values into a regular array of 32-bit values + // before sending it over the wire. + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_ICON, + XA_CARDINAL, 32, + PropModeReplace, + (unsigned char*) icon, + longCount); + + _glfw_free(icon); + } + else + { + XDeleteProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_ICON); + } + + XFlush(_glfw.x11.display); +} + +void _glfwGetWindowPosX11(_GLFWwindow* window, int* xpos, int* ypos) +{ + Window dummy; + int x, y; + + XTranslateCoordinates(_glfw.x11.display, window->x11.handle, _glfw.x11.root, + 0, 0, &x, &y, &dummy); + + if (xpos) + *xpos = x; + if (ypos) + *ypos = y; +} + +void _glfwSetWindowPosX11(_GLFWwindow* window, int xpos, int ypos) +{ + // HACK: Explicitly setting PPosition to any value causes some WMs, notably + // Compiz and Metacity, to honor the position of unmapped windows + if (!_glfwWindowVisibleX11(window)) + { + long supplied; + XSizeHints* hints = XAllocSizeHints(); + + if (XGetWMNormalHints(_glfw.x11.display, window->x11.handle, hints, &supplied)) + { + hints->flags |= PPosition; + hints->x = hints->y = 0; + + XSetWMNormalHints(_glfw.x11.display, window->x11.handle, hints); + } + + XFree(hints); + } + + XMoveWindow(_glfw.x11.display, window->x11.handle, xpos, ypos); + XFlush(_glfw.x11.display); +} + +void _glfwGetWindowSizeX11(_GLFWwindow* window, int* width, int* height) +{ + XWindowAttributes attribs; + XGetWindowAttributes(_glfw.x11.display, window->x11.handle, &attribs); + + if (width) + *width = attribs.width; + if (height) + *height = attribs.height; +} + +void _glfwSetWindowSizeX11(_GLFWwindow* window, int width, int height) +{ + if (window->monitor) + { + if (window->monitor->window == window) + acquireMonitor(window); + } + else + { + if (!window->resizable) + updateNormalHints(window, width, height); + + XResizeWindow(_glfw.x11.display, window->x11.handle, width, height); + } + + XFlush(_glfw.x11.display); +} + +void _glfwSetWindowSizeLimitsX11(_GLFWwindow* window, + int minwidth, int minheight, + int maxwidth, int maxheight) +{ + int width, height; + _glfwGetWindowSizeX11(window, &width, &height); + updateNormalHints(window, width, height); + XFlush(_glfw.x11.display); +} + +void _glfwSetWindowAspectRatioX11(_GLFWwindow* window, int numer, int denom) +{ + int width, height; + _glfwGetWindowSizeX11(window, &width, &height); + updateNormalHints(window, width, height); + XFlush(_glfw.x11.display); +} + +void _glfwGetFramebufferSizeX11(_GLFWwindow* window, int* width, int* height) +{ + _glfwGetWindowSizeX11(window, width, height); +} + +void _glfwGetWindowFrameSizeX11(_GLFWwindow* window, + int* left, int* top, + int* right, int* bottom) +{ + long* extents = NULL; + + if (window->monitor || !window->decorated) + return; + + if (_glfw.x11.NET_FRAME_EXTENTS == None) + return; + + if (!_glfwWindowVisibleX11(window) && + _glfw.x11.NET_REQUEST_FRAME_EXTENTS) + { + XEvent event; + double timeout = 0.5; + + // Ensure _NET_FRAME_EXTENTS is set, allowing glfwGetWindowFrameSize to + // function before the window is mapped + sendEventToWM(window, _glfw.x11.NET_REQUEST_FRAME_EXTENTS, + 0, 0, 0, 0, 0); + + // HACK: Use a timeout because earlier versions of some window managers + // (at least Unity, Fluxbox and Xfwm) failed to send the reply + // They have been fixed but broken versions are still in the wild + // If you are affected by this and your window manager is NOT + // listed above, PLEASE report it to their and our issue trackers + while (!XCheckIfEvent(_glfw.x11.display, + &event, + isFrameExtentsEvent, + (XPointer) window)) + { + if (!waitForX11Event(&timeout)) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: The window manager has a broken _NET_REQUEST_FRAME_EXTENTS implementation; please report this issue"); + return; + } + } + } + + if (_glfwGetWindowPropertyX11(window->x11.handle, + _glfw.x11.NET_FRAME_EXTENTS, + XA_CARDINAL, + (unsigned char**) &extents) == 4) + { + if (left) + *left = extents[0]; + if (top) + *top = extents[2]; + if (right) + *right = extents[1]; + if (bottom) + *bottom = extents[3]; + } + + if (extents) + XFree(extents); +} + +void _glfwGetWindowContentScaleX11(_GLFWwindow* window, float* xscale, float* yscale) +{ + if (xscale) + *xscale = _glfw.x11.contentScaleX; + if (yscale) + *yscale = _glfw.x11.contentScaleY; +} + +void _glfwIconifyWindowX11(_GLFWwindow* window) +{ + if (window->x11.overrideRedirect) + { + // Override-redirect windows cannot be iconified or restored, as those + // tasks are performed by the window manager + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Iconification of full screen windows requires a WM that supports EWMH full screen"); + return; + } + + XIconifyWindow(_glfw.x11.display, window->x11.handle, _glfw.x11.screen); + XFlush(_glfw.x11.display); +} + +void _glfwRestoreWindowX11(_GLFWwindow* window) +{ + if (window->x11.overrideRedirect) + { + // Override-redirect windows cannot be iconified or restored, as those + // tasks are performed by the window manager + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Iconification of full screen windows requires a WM that supports EWMH full screen"); + return; + } + + if (_glfwWindowIconifiedX11(window)) + { + XMapWindow(_glfw.x11.display, window->x11.handle); + waitForVisibilityNotify(window); + } + else if (_glfwWindowVisibleX11(window)) + { + if (_glfw.x11.NET_WM_STATE && + _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT && + _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ) + { + sendEventToWM(window, + _glfw.x11.NET_WM_STATE, + _NET_WM_STATE_REMOVE, + _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT, + _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ, + 1, 0); + } + } + + XFlush(_glfw.x11.display); +} + +void _glfwMaximizeWindowX11(_GLFWwindow* window) +{ + if (!_glfw.x11.NET_WM_STATE || + !_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT || + !_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ) + { + return; + } + + if (_glfwWindowVisibleX11(window)) + { + sendEventToWM(window, + _glfw.x11.NET_WM_STATE, + _NET_WM_STATE_ADD, + _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT, + _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ, + 1, 0); + } + else + { + Atom* states = NULL; + unsigned long count = + _glfwGetWindowPropertyX11(window->x11.handle, + _glfw.x11.NET_WM_STATE, + XA_ATOM, + (unsigned char**) &states); + + // NOTE: We don't check for failure as this property may not exist yet + // and that's fine (and we'll create it implicitly with append) + + Atom missing[2] = + { + _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT, + _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ + }; + unsigned long missingCount = 2; + + for (unsigned long i = 0; i < count; i++) + { + for (unsigned long j = 0; j < missingCount; j++) + { + if (states[i] == missing[j]) + { + missing[j] = missing[missingCount - 1]; + missingCount--; + } + } + } + + if (states) + XFree(states); + + if (!missingCount) + return; + + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_STATE, XA_ATOM, 32, + PropModeAppend, + (unsigned char*) missing, + missingCount); + } + + XFlush(_glfw.x11.display); +} + +void _glfwShowWindowX11(_GLFWwindow* window) +{ + if (_glfwWindowVisibleX11(window)) + return; + + XMapWindow(_glfw.x11.display, window->x11.handle); + waitForVisibilityNotify(window); +} + +void _glfwHideWindowX11(_GLFWwindow* window) +{ + XUnmapWindow(_glfw.x11.display, window->x11.handle); + XFlush(_glfw.x11.display); +} + +void _glfwRequestWindowAttentionX11(_GLFWwindow* window) +{ + if (!_glfw.x11.NET_WM_STATE || !_glfw.x11.NET_WM_STATE_DEMANDS_ATTENTION) + return; + + sendEventToWM(window, + _glfw.x11.NET_WM_STATE, + _NET_WM_STATE_ADD, + _glfw.x11.NET_WM_STATE_DEMANDS_ATTENTION, + 0, 1, 0); +} + +void _glfwFocusWindowX11(_GLFWwindow* window) +{ + if (_glfw.x11.NET_ACTIVE_WINDOW) + sendEventToWM(window, _glfw.x11.NET_ACTIVE_WINDOW, 1, 0, 0, 0, 0); + else if (_glfwWindowVisibleX11(window)) + { + XRaiseWindow(_glfw.x11.display, window->x11.handle); + XSetInputFocus(_glfw.x11.display, window->x11.handle, + RevertToParent, CurrentTime); + } + + XFlush(_glfw.x11.display); +} + +void _glfwSetWindowMonitorX11(_GLFWwindow* window, + _GLFWmonitor* monitor, + int xpos, int ypos, + int width, int height, + int refreshRate) +{ + if (window->monitor == monitor) + { + if (monitor) + { + if (monitor->window == window) + acquireMonitor(window); + } + else + { + if (!window->resizable) + updateNormalHints(window, width, height); + + XMoveResizeWindow(_glfw.x11.display, window->x11.handle, + xpos, ypos, width, height); + } + + XFlush(_glfw.x11.display); + return; + } + + if (window->monitor) + { + _glfwSetWindowDecoratedX11(window, window->decorated); + _glfwSetWindowFloatingX11(window, window->floating); + releaseMonitor(window); + } + + _glfwInputWindowMonitor(window, monitor); + updateNormalHints(window, width, height); + + if (window->monitor) + { + if (!_glfwWindowVisibleX11(window)) + { + XMapRaised(_glfw.x11.display, window->x11.handle); + waitForVisibilityNotify(window); + } + + updateWindowMode(window); + acquireMonitor(window); + } + else + { + updateWindowMode(window); + XMoveResizeWindow(_glfw.x11.display, window->x11.handle, + xpos, ypos, width, height); + } + + XFlush(_glfw.x11.display); +} + +GLFWbool _glfwWindowFocusedX11(_GLFWwindow* window) +{ + Window focused; + int state; + + XGetInputFocus(_glfw.x11.display, &focused, &state); + return window->x11.handle == focused; +} + +GLFWbool _glfwWindowIconifiedX11(_GLFWwindow* window) +{ + return getWindowState(window) == IconicState; +} + +GLFWbool _glfwWindowVisibleX11(_GLFWwindow* window) +{ + XWindowAttributes wa; + XGetWindowAttributes(_glfw.x11.display, window->x11.handle, &wa); + return wa.map_state == IsViewable; +} + +GLFWbool _glfwWindowMaximizedX11(_GLFWwindow* window) +{ + Atom* states; + GLFWbool maximized = GLFW_FALSE; + + if (!_glfw.x11.NET_WM_STATE || + !_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT || + !_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ) + { + return maximized; + } + + const unsigned long count = + _glfwGetWindowPropertyX11(window->x11.handle, + _glfw.x11.NET_WM_STATE, + XA_ATOM, + (unsigned char**) &states); + + for (unsigned long i = 0; i < count; i++) + { + if (states[i] == _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT || + states[i] == _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ) + { + maximized = GLFW_TRUE; + break; + } + } + + if (states) + XFree(states); + + return maximized; +} + +GLFWbool _glfwWindowHoveredX11(_GLFWwindow* window) +{ + Window w = _glfw.x11.root; + while (w) + { + Window root; + int rootX, rootY, childX, childY; + unsigned int mask; + + _glfwGrabErrorHandlerX11(); + + const Bool result = XQueryPointer(_glfw.x11.display, w, + &root, &w, &rootX, &rootY, + &childX, &childY, &mask); + + _glfwReleaseErrorHandlerX11(); + + if (_glfw.x11.errorCode == BadWindow) + w = _glfw.x11.root; + else if (!result) + return GLFW_FALSE; + else if (w == window->x11.handle) + return GLFW_TRUE; + } + + return GLFW_FALSE; +} + +GLFWbool _glfwFramebufferTransparentX11(_GLFWwindow* window) +{ + if (!window->x11.transparent) + return GLFW_FALSE; + + return XGetSelectionOwner(_glfw.x11.display, _glfw.x11.NET_WM_CM_Sx) != None; +} + +void _glfwSetWindowResizableX11(_GLFWwindow* window, GLFWbool enabled) +{ + int width, height; + _glfwGetWindowSizeX11(window, &width, &height); + updateNormalHints(window, width, height); +} + +void _glfwSetWindowDecoratedX11(_GLFWwindow* window, GLFWbool enabled) +{ + struct + { + unsigned long flags; + unsigned long functions; + unsigned long decorations; + long input_mode; + unsigned long status; + } hints = {0}; + + hints.flags = MWM_HINTS_DECORATIONS; + hints.decorations = enabled ? MWM_DECOR_ALL : 0; + + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.MOTIF_WM_HINTS, + _glfw.x11.MOTIF_WM_HINTS, 32, + PropModeReplace, + (unsigned char*) &hints, + sizeof(hints) / sizeof(long)); +} + +void _glfwSetWindowFloatingX11(_GLFWwindow* window, GLFWbool enabled) +{ + if (!_glfw.x11.NET_WM_STATE || !_glfw.x11.NET_WM_STATE_ABOVE) + return; + + if (_glfwWindowVisibleX11(window)) + { + const long action = enabled ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE; + sendEventToWM(window, + _glfw.x11.NET_WM_STATE, + action, + _glfw.x11.NET_WM_STATE_ABOVE, + 0, 1, 0); + } + else + { + Atom* states = NULL; + const unsigned long count = + _glfwGetWindowPropertyX11(window->x11.handle, + _glfw.x11.NET_WM_STATE, + XA_ATOM, + (unsigned char**) &states); + + // NOTE: We don't check for failure as this property may not exist yet + // and that's fine (and we'll create it implicitly with append) + + if (enabled) + { + unsigned long i; + + for (i = 0; i < count; i++) + { + if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE) + break; + } + + if (i == count) + { + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_STATE, XA_ATOM, 32, + PropModeAppend, + (unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE, + 1); + } + } + else if (states) + { + for (unsigned long i = 0; i < count; i++) + { + if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE) + { + states[i] = states[count - 1]; + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_STATE, XA_ATOM, 32, + PropModeReplace, (unsigned char*) states, count - 1); + break; + } + } + } + + if (states) + XFree(states); + } + + XFlush(_glfw.x11.display); +} + +void _glfwSetWindowMousePassthroughX11(_GLFWwindow* window, GLFWbool enabled) +{ + if (!_glfw.x11.xshape.available) + return; + + if (enabled) + { + Region region = XCreateRegion(); + XShapeCombineRegion(_glfw.x11.display, window->x11.handle, + ShapeInput, 0, 0, region, ShapeSet); + XDestroyRegion(region); + } + else + { + XShapeCombineMask(_glfw.x11.display, window->x11.handle, + ShapeInput, 0, 0, None, ShapeSet); + } +} + +float _glfwGetWindowOpacityX11(_GLFWwindow* window) +{ + float opacity = 1.f; + + if (XGetSelectionOwner(_glfw.x11.display, _glfw.x11.NET_WM_CM_Sx)) + { + CARD32* value = NULL; + + if (_glfwGetWindowPropertyX11(window->x11.handle, + _glfw.x11.NET_WM_WINDOW_OPACITY, + XA_CARDINAL, + (unsigned char**) &value)) + { + opacity = (float) (*value / (double) 0xffffffffu); + } + + if (value) + XFree(value); + } + + return opacity; +} + +void _glfwSetWindowOpacityX11(_GLFWwindow* window, float opacity) +{ + const CARD32 value = (CARD32) (0xffffffffu * (double) opacity); + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_WINDOW_OPACITY, XA_CARDINAL, 32, + PropModeReplace, (unsigned char*) &value, 1); +} + +void _glfwSetRawMouseMotionX11(_GLFWwindow *window, GLFWbool enabled) +{ + if (!_glfw.x11.xi.available) + return; + + if (_glfw.x11.disabledCursorWindow != window) + return; + + if (enabled) + enableRawMouseMotion(window); + else + disableRawMouseMotion(window); +} + +GLFWbool _glfwRawMouseMotionSupportedX11(void) +{ + return _glfw.x11.xi.available; +} + +void _glfwPollEventsX11(void) +{ + drainEmptyEvents(); + +#if defined(_GLFW_LINUX_JOYSTICK) + if (_glfw.joysticksInitialized) + _glfwDetectJoystickConnectionLinux(); +#endif + XPending(_glfw.x11.display); + + while (QLength(_glfw.x11.display)) + { + XEvent event; + XNextEvent(_glfw.x11.display, &event); + processEvent(&event); + } + + _GLFWwindow* window = _glfw.x11.disabledCursorWindow; + if (window) + { + int width, height; + _glfwGetWindowSizeX11(window, &width, &height); + + // NOTE: Re-center the cursor only if it has moved since the last call, + // to avoid breaking glfwWaitEvents with MotionNotify + if (window->x11.lastCursorPosX != width / 2 || + window->x11.lastCursorPosY != height / 2) + { + _glfwSetCursorPosX11(window, width / 2, height / 2); + } + } + + XFlush(_glfw.x11.display); +} + +void _glfwWaitEventsX11(void) +{ + waitForAnyEvent(NULL); + _glfwPollEventsX11(); +} + +void _glfwWaitEventsTimeoutX11(double timeout) +{ + waitForAnyEvent(&timeout); + _glfwPollEventsX11(); +} + +void _glfwPostEmptyEventX11(void) +{ + writeEmptyEvent(); +} + +void _glfwGetCursorPosX11(_GLFWwindow* window, double* xpos, double* ypos) +{ + Window root, child; + int rootX, rootY, childX, childY; + unsigned int mask; + + XQueryPointer(_glfw.x11.display, window->x11.handle, + &root, &child, + &rootX, &rootY, &childX, &childY, + &mask); + + if (xpos) + *xpos = childX; + if (ypos) + *ypos = childY; +} + +void _glfwSetCursorPosX11(_GLFWwindow* window, double x, double y) +{ + // Store the new position so it can be recognized later + window->x11.warpCursorPosX = (int) x; + window->x11.warpCursorPosY = (int) y; + + XWarpPointer(_glfw.x11.display, None, window->x11.handle, + 0,0,0,0, (int) x, (int) y); + XFlush(_glfw.x11.display); +} + +void _glfwSetCursorModeX11(_GLFWwindow* window, int mode) +{ + if (_glfwWindowFocusedX11(window)) + { + if (mode == GLFW_CURSOR_DISABLED) + { + _glfwGetCursorPosX11(window, + &_glfw.x11.restoreCursorPosX, + &_glfw.x11.restoreCursorPosY); + _glfwCenterCursorInContentArea(window); + if (window->rawMouseMotion) + enableRawMouseMotion(window); + } + else if (_glfw.x11.disabledCursorWindow == window) + { + if (window->rawMouseMotion) + disableRawMouseMotion(window); + } + + if (mode == GLFW_CURSOR_DISABLED || mode == GLFW_CURSOR_CAPTURED) + captureCursor(window); + else + releaseCursor(); + + if (mode == GLFW_CURSOR_DISABLED) + _glfw.x11.disabledCursorWindow = window; + else if (_glfw.x11.disabledCursorWindow == window) + { + _glfw.x11.disabledCursorWindow = NULL; + _glfwSetCursorPosX11(window, + _glfw.x11.restoreCursorPosX, + _glfw.x11.restoreCursorPosY); + } + } + + updateCursorImage(window); + XFlush(_glfw.x11.display); +} + +const char* _glfwGetScancodeNameX11(int scancode) +{ + if (!_glfw.x11.xkb.available) + return NULL; + + if (scancode < 0 || scancode > 0xff || + _glfw.x11.keycodes[scancode] == GLFW_KEY_UNKNOWN) + { + _glfwInputError(GLFW_INVALID_VALUE, "Invalid scancode %i", scancode); + return NULL; + } + + const int key = _glfw.x11.keycodes[scancode]; + const KeySym keysym = XkbKeycodeToKeysym(_glfw.x11.display, + scancode, _glfw.x11.xkb.group, 0); + if (keysym == NoSymbol) + return NULL; + + const uint32_t codepoint = _glfwKeySym2Unicode(keysym); + if (codepoint == GLFW_INVALID_CODEPOINT) + return NULL; + + const size_t count = _glfwEncodeUTF8(_glfw.x11.keynames[key], codepoint); + if (count == 0) + return NULL; + + _glfw.x11.keynames[key][count] = '\0'; + return _glfw.x11.keynames[key]; +} + +int _glfwGetKeyScancodeX11(int key) +{ + return _glfw.x11.scancodes[key]; +} + +GLFWbool _glfwCreateCursorX11(_GLFWcursor* cursor, + const GLFWimage* image, + int xhot, int yhot) +{ + cursor->x11.handle = _glfwCreateNativeCursorX11(image, xhot, yhot); + if (!cursor->x11.handle) + return GLFW_FALSE; + + return GLFW_TRUE; +} + +GLFWbool _glfwCreateStandardCursorX11(_GLFWcursor* cursor, int shape) +{ + if (_glfw.x11.xcursor.handle) + { + char* theme = XcursorGetTheme(_glfw.x11.display); + if (theme) + { + const int size = XcursorGetDefaultSize(_glfw.x11.display); + const char* name = NULL; + + switch (shape) + { + case GLFW_ARROW_CURSOR: + name = "default"; + break; + case GLFW_IBEAM_CURSOR: + name = "text"; + break; + case GLFW_CROSSHAIR_CURSOR: + name = "crosshair"; + break; + case GLFW_POINTING_HAND_CURSOR: + name = "pointer"; + break; + case GLFW_RESIZE_EW_CURSOR: + name = "ew-resize"; + break; + case GLFW_RESIZE_NS_CURSOR: + name = "ns-resize"; + break; + case GLFW_RESIZE_NWSE_CURSOR: + name = "nwse-resize"; + break; + case GLFW_RESIZE_NESW_CURSOR: + name = "nesw-resize"; + break; + case GLFW_RESIZE_ALL_CURSOR: + name = "all-scroll"; + break; + case GLFW_NOT_ALLOWED_CURSOR: + name = "not-allowed"; + break; + } + + XcursorImage* image = XcursorLibraryLoadImage(name, theme, size); + if (image) + { + cursor->x11.handle = XcursorImageLoadCursor(_glfw.x11.display, image); + XcursorImageDestroy(image); + } + } + } + + if (!cursor->x11.handle) + { + unsigned int native = 0; + + switch (shape) + { + case GLFW_ARROW_CURSOR: + native = XC_left_ptr; + break; + case GLFW_IBEAM_CURSOR: + native = XC_xterm; + break; + case GLFW_CROSSHAIR_CURSOR: + native = XC_crosshair; + break; + case GLFW_POINTING_HAND_CURSOR: + native = XC_hand2; + break; + case GLFW_RESIZE_EW_CURSOR: + native = XC_sb_h_double_arrow; + break; + case GLFW_RESIZE_NS_CURSOR: + native = XC_sb_v_double_arrow; + break; + case GLFW_RESIZE_ALL_CURSOR: + native = XC_fleur; + break; + default: + _glfwInputError(GLFW_CURSOR_UNAVAILABLE, + "X11: Standard cursor shape unavailable"); + return GLFW_FALSE; + } + + cursor->x11.handle = XCreateFontCursor(_glfw.x11.display, native); + if (!cursor->x11.handle) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to create standard cursor"); + return GLFW_FALSE; + } + } + + return GLFW_TRUE; +} + +void _glfwDestroyCursorX11(_GLFWcursor* cursor) +{ + if (cursor->x11.handle) + XFreeCursor(_glfw.x11.display, cursor->x11.handle); +} + +void _glfwSetCursorX11(_GLFWwindow* window, _GLFWcursor* cursor) +{ + if (window->cursorMode == GLFW_CURSOR_NORMAL || + window->cursorMode == GLFW_CURSOR_CAPTURED) + { + updateCursorImage(window); + XFlush(_glfw.x11.display); + } +} + +void _glfwSetClipboardStringX11(const char* string) +{ + char* copy = _glfw_strdup(string); + _glfw_free(_glfw.x11.clipboardString); + _glfw.x11.clipboardString = copy; + + XSetSelectionOwner(_glfw.x11.display, + _glfw.x11.CLIPBOARD, + _glfw.x11.helperWindowHandle, + CurrentTime); + + if (XGetSelectionOwner(_glfw.x11.display, _glfw.x11.CLIPBOARD) != + _glfw.x11.helperWindowHandle) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to become owner of clipboard selection"); + } +} + +const char* _glfwGetClipboardStringX11(void) +{ + return getSelectionString(_glfw.x11.CLIPBOARD); +} + +EGLenum _glfwGetEGLPlatformX11(EGLint** attribs) +{ + if (_glfw.egl.ANGLE_platform_angle) + { + int type = 0; + + if (_glfw.egl.ANGLE_platform_angle_opengl) + { + if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_OPENGL) + type = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; + } + + if (_glfw.egl.ANGLE_platform_angle_vulkan) + { + if (_glfw.hints.init.angleType == GLFW_ANGLE_PLATFORM_TYPE_VULKAN) + type = EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE; + } + + if (type) + { + *attribs = _glfw_calloc(5, sizeof(EGLint)); + (*attribs)[0] = EGL_PLATFORM_ANGLE_TYPE_ANGLE; + (*attribs)[1] = type; + (*attribs)[2] = EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE; + (*attribs)[3] = EGL_PLATFORM_X11_EXT; + (*attribs)[4] = EGL_NONE; + return EGL_PLATFORM_ANGLE_ANGLE; + } + } + + if (_glfw.egl.EXT_platform_base && _glfw.egl.EXT_platform_x11) + return EGL_PLATFORM_X11_EXT; + + return 0; +} + +EGLNativeDisplayType _glfwGetEGLNativeDisplayX11(void) +{ + return _glfw.x11.display; +} + +EGLNativeWindowType _glfwGetEGLNativeWindowX11(_GLFWwindow* window) +{ + if (_glfw.egl.platform) + return &window->x11.handle; + else + return (EGLNativeWindowType) window->x11.handle; +} + +void _glfwGetRequiredInstanceExtensionsX11(char** extensions) +{ + if (!_glfw.vk.KHR_surface) + return; + + if (!_glfw.vk.KHR_xcb_surface || !_glfw.x11.x11xcb.handle) + { + if (!_glfw.vk.KHR_xlib_surface) + return; + } + + extensions[0] = "VK_KHR_surface"; + + // NOTE: VK_KHR_xcb_surface is preferred due to some early ICDs exposing but + // not correctly implementing VK_KHR_xlib_surface + if (_glfw.vk.KHR_xcb_surface && _glfw.x11.x11xcb.handle) + extensions[1] = "VK_KHR_xcb_surface"; + else + extensions[1] = "VK_KHR_xlib_surface"; +} + +GLFWbool _glfwGetPhysicalDevicePresentationSupportX11(VkInstance instance, + VkPhysicalDevice device, + uint32_t queuefamily) +{ + VisualID visualID = XVisualIDFromVisual(DefaultVisual(_glfw.x11.display, + _glfw.x11.screen)); + + if (_glfw.vk.KHR_xcb_surface && _glfw.x11.x11xcb.handle) + { + PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR + vkGetPhysicalDeviceXcbPresentationSupportKHR = + (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR) + vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR"); + if (!vkGetPhysicalDeviceXcbPresentationSupportKHR) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "X11: Vulkan instance missing VK_KHR_xcb_surface extension"); + return GLFW_FALSE; + } + + xcb_connection_t* connection = XGetXCBConnection(_glfw.x11.display); + if (!connection) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to retrieve XCB connection"); + return GLFW_FALSE; + } + + return vkGetPhysicalDeviceXcbPresentationSupportKHR(device, + queuefamily, + connection, + visualID); + } + else + { + PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR + vkGetPhysicalDeviceXlibPresentationSupportKHR = + (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR) + vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR"); + if (!vkGetPhysicalDeviceXlibPresentationSupportKHR) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "X11: Vulkan instance missing VK_KHR_xlib_surface extension"); + return GLFW_FALSE; + } + + return vkGetPhysicalDeviceXlibPresentationSupportKHR(device, + queuefamily, + _glfw.x11.display, + visualID); + } +} + +VkResult _glfwCreateWindowSurfaceX11(VkInstance instance, + _GLFWwindow* window, + const VkAllocationCallbacks* allocator, + VkSurfaceKHR* surface) +{ + if (_glfw.vk.KHR_xcb_surface && _glfw.x11.x11xcb.handle) + { + VkResult err; + VkXcbSurfaceCreateInfoKHR sci; + PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; + + xcb_connection_t* connection = XGetXCBConnection(_glfw.x11.display); + if (!connection) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to retrieve XCB connection"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + vkCreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR) + vkGetInstanceProcAddr(instance, "vkCreateXcbSurfaceKHR"); + if (!vkCreateXcbSurfaceKHR) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "X11: Vulkan instance missing VK_KHR_xcb_surface extension"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + memset(&sci, 0, sizeof(sci)); + sci.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR; + sci.connection = connection; + sci.window = window->x11.handle; + + err = vkCreateXcbSurfaceKHR(instance, &sci, allocator, surface); + if (err) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to create Vulkan XCB surface: %s", + _glfwGetVulkanResultString(err)); + } + + return err; + } + else + { + VkResult err; + VkXlibSurfaceCreateInfoKHR sci; + PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; + + vkCreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR) + vkGetInstanceProcAddr(instance, "vkCreateXlibSurfaceKHR"); + if (!vkCreateXlibSurfaceKHR) + { + _glfwInputError(GLFW_API_UNAVAILABLE, + "X11: Vulkan instance missing VK_KHR_xlib_surface extension"); + return VK_ERROR_EXTENSION_NOT_PRESENT; + } + + memset(&sci, 0, sizeof(sci)); + sci.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR; + sci.dpy = _glfw.x11.display; + sci.window = window->x11.handle; + + err = vkCreateXlibSurfaceKHR(instance, &sci, allocator, surface); + if (err) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to create Vulkan X11 surface: %s", + _glfwGetVulkanResultString(err)); + } + + return err; + } +} + + +////////////////////////////////////////////////////////////////////////// +////// GLFW native API ////// +////////////////////////////////////////////////////////////////////////// + +GLFWAPI Display* glfwGetX11Display(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (_glfw.platform.platformID != GLFW_PLATFORM_X11) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "X11: Platform not initialized"); + return NULL; + } + + return _glfw.x11.display; +} + +GLFWAPI Window glfwGetX11Window(GLFWwindow* handle) +{ + _GLFWwindow* window = (_GLFWwindow*) handle; + _GLFW_REQUIRE_INIT_OR_RETURN(None); + + if (_glfw.platform.platformID != GLFW_PLATFORM_X11) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "X11: Platform not initialized"); + return None; + } + + return window->x11.handle; +} + +GLFWAPI void glfwSetX11SelectionString(const char* string) +{ + _GLFW_REQUIRE_INIT(); + + if (_glfw.platform.platformID != GLFW_PLATFORM_X11) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "X11: Platform not initialized"); + return; + } + + _glfw_free(_glfw.x11.primarySelectionString); + _glfw.x11.primarySelectionString = _glfw_strdup(string); + + XSetSelectionOwner(_glfw.x11.display, + _glfw.x11.PRIMARY, + _glfw.x11.helperWindowHandle, + CurrentTime); + + if (XGetSelectionOwner(_glfw.x11.display, _glfw.x11.PRIMARY) != + _glfw.x11.helperWindowHandle) + { + _glfwInputError(GLFW_PLATFORM_ERROR, + "X11: Failed to become owner of primary selection"); + } +} + +GLFWAPI const char* glfwGetX11SelectionString(void) +{ + _GLFW_REQUIRE_INIT_OR_RETURN(NULL); + + if (_glfw.platform.platformID != GLFW_PLATFORM_X11) + { + _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "X11: Platform not initialized"); + return NULL; + } + + return getSelectionString(_glfw.x11.PRIMARY); +} + +#endif // _GLFW_X11 + diff --git a/lib/glfw/src/xkb_unicode.c b/lib/glfw/src/xkb_unicode.c new file mode 100644 index 0000000..a516af0 --- /dev/null +++ b/lib/glfw/src/xkb_unicode.c @@ -0,0 +1,945 @@ +//======================================================================== +// GLFW 3.4 X11 - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2002-2006 Marcus Geelnard +// Copyright (c) 2006-2017 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== + +#include "internal.h" + +#if defined(_GLFW_X11) || defined(_GLFW_WAYLAND) + +/* + * Marcus: This code was originally written by Markus G. Kuhn. + * I have made some slight changes (trimmed it down a bit from >60 KB to + * 20 KB), but the functionality is the same. + */ + +/* + * This module converts keysym values into the corresponding ISO 10646 + * (UCS, Unicode) values. + * + * The array keysymtab[] contains pairs of X11 keysym values for graphical + * characters and the corresponding Unicode value. The function + * _glfwKeySym2Unicode() maps a keysym onto a Unicode value using a binary + * search, therefore keysymtab[] must remain SORTED by keysym value. + * + * We allow to represent any UCS character in the range U-00000000 to + * U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff. + * This admittedly does not cover the entire 31-bit space of UCS, but + * it does cover all of the characters up to U-10FFFF, which can be + * represented by UTF-16, and more, and it is very unlikely that higher + * UCS codes will ever be assigned by ISO. So to get Unicode character + * U+ABCD you can directly use keysym 0x0100abcd. + * + * Original author: Markus G. Kuhn , University of + * Cambridge, April 2001 + * + * Special thanks to Richard Verhoeven for preparing + * an initial draft of the mapping table. + * + */ + + +//************************************************************************ +//**** KeySym to Unicode mapping table **** +//************************************************************************ + +static const struct codepair { + unsigned short keysym; + unsigned short ucs; +} keysymtab[] = { + { 0x01a1, 0x0104 }, + { 0x01a2, 0x02d8 }, + { 0x01a3, 0x0141 }, + { 0x01a5, 0x013d }, + { 0x01a6, 0x015a }, + { 0x01a9, 0x0160 }, + { 0x01aa, 0x015e }, + { 0x01ab, 0x0164 }, + { 0x01ac, 0x0179 }, + { 0x01ae, 0x017d }, + { 0x01af, 0x017b }, + { 0x01b1, 0x0105 }, + { 0x01b2, 0x02db }, + { 0x01b3, 0x0142 }, + { 0x01b5, 0x013e }, + { 0x01b6, 0x015b }, + { 0x01b7, 0x02c7 }, + { 0x01b9, 0x0161 }, + { 0x01ba, 0x015f }, + { 0x01bb, 0x0165 }, + { 0x01bc, 0x017a }, + { 0x01bd, 0x02dd }, + { 0x01be, 0x017e }, + { 0x01bf, 0x017c }, + { 0x01c0, 0x0154 }, + { 0x01c3, 0x0102 }, + { 0x01c5, 0x0139 }, + { 0x01c6, 0x0106 }, + { 0x01c8, 0x010c }, + { 0x01ca, 0x0118 }, + { 0x01cc, 0x011a }, + { 0x01cf, 0x010e }, + { 0x01d0, 0x0110 }, + { 0x01d1, 0x0143 }, + { 0x01d2, 0x0147 }, + { 0x01d5, 0x0150 }, + { 0x01d8, 0x0158 }, + { 0x01d9, 0x016e }, + { 0x01db, 0x0170 }, + { 0x01de, 0x0162 }, + { 0x01e0, 0x0155 }, + { 0x01e3, 0x0103 }, + { 0x01e5, 0x013a }, + { 0x01e6, 0x0107 }, + { 0x01e8, 0x010d }, + { 0x01ea, 0x0119 }, + { 0x01ec, 0x011b }, + { 0x01ef, 0x010f }, + { 0x01f0, 0x0111 }, + { 0x01f1, 0x0144 }, + { 0x01f2, 0x0148 }, + { 0x01f5, 0x0151 }, + { 0x01f8, 0x0159 }, + { 0x01f9, 0x016f }, + { 0x01fb, 0x0171 }, + { 0x01fe, 0x0163 }, + { 0x01ff, 0x02d9 }, + { 0x02a1, 0x0126 }, + { 0x02a6, 0x0124 }, + { 0x02a9, 0x0130 }, + { 0x02ab, 0x011e }, + { 0x02ac, 0x0134 }, + { 0x02b1, 0x0127 }, + { 0x02b6, 0x0125 }, + { 0x02b9, 0x0131 }, + { 0x02bb, 0x011f }, + { 0x02bc, 0x0135 }, + { 0x02c5, 0x010a }, + { 0x02c6, 0x0108 }, + { 0x02d5, 0x0120 }, + { 0x02d8, 0x011c }, + { 0x02dd, 0x016c }, + { 0x02de, 0x015c }, + { 0x02e5, 0x010b }, + { 0x02e6, 0x0109 }, + { 0x02f5, 0x0121 }, + { 0x02f8, 0x011d }, + { 0x02fd, 0x016d }, + { 0x02fe, 0x015d }, + { 0x03a2, 0x0138 }, + { 0x03a3, 0x0156 }, + { 0x03a5, 0x0128 }, + { 0x03a6, 0x013b }, + { 0x03aa, 0x0112 }, + { 0x03ab, 0x0122 }, + { 0x03ac, 0x0166 }, + { 0x03b3, 0x0157 }, + { 0x03b5, 0x0129 }, + { 0x03b6, 0x013c }, + { 0x03ba, 0x0113 }, + { 0x03bb, 0x0123 }, + { 0x03bc, 0x0167 }, + { 0x03bd, 0x014a }, + { 0x03bf, 0x014b }, + { 0x03c0, 0x0100 }, + { 0x03c7, 0x012e }, + { 0x03cc, 0x0116 }, + { 0x03cf, 0x012a }, + { 0x03d1, 0x0145 }, + { 0x03d2, 0x014c }, + { 0x03d3, 0x0136 }, + { 0x03d9, 0x0172 }, + { 0x03dd, 0x0168 }, + { 0x03de, 0x016a }, + { 0x03e0, 0x0101 }, + { 0x03e7, 0x012f }, + { 0x03ec, 0x0117 }, + { 0x03ef, 0x012b }, + { 0x03f1, 0x0146 }, + { 0x03f2, 0x014d }, + { 0x03f3, 0x0137 }, + { 0x03f9, 0x0173 }, + { 0x03fd, 0x0169 }, + { 0x03fe, 0x016b }, + { 0x047e, 0x203e }, + { 0x04a1, 0x3002 }, + { 0x04a2, 0x300c }, + { 0x04a3, 0x300d }, + { 0x04a4, 0x3001 }, + { 0x04a5, 0x30fb }, + { 0x04a6, 0x30f2 }, + { 0x04a7, 0x30a1 }, + { 0x04a8, 0x30a3 }, + { 0x04a9, 0x30a5 }, + { 0x04aa, 0x30a7 }, + { 0x04ab, 0x30a9 }, + { 0x04ac, 0x30e3 }, + { 0x04ad, 0x30e5 }, + { 0x04ae, 0x30e7 }, + { 0x04af, 0x30c3 }, + { 0x04b0, 0x30fc }, + { 0x04b1, 0x30a2 }, + { 0x04b2, 0x30a4 }, + { 0x04b3, 0x30a6 }, + { 0x04b4, 0x30a8 }, + { 0x04b5, 0x30aa }, + { 0x04b6, 0x30ab }, + { 0x04b7, 0x30ad }, + { 0x04b8, 0x30af }, + { 0x04b9, 0x30b1 }, + { 0x04ba, 0x30b3 }, + { 0x04bb, 0x30b5 }, + { 0x04bc, 0x30b7 }, + { 0x04bd, 0x30b9 }, + { 0x04be, 0x30bb }, + { 0x04bf, 0x30bd }, + { 0x04c0, 0x30bf }, + { 0x04c1, 0x30c1 }, + { 0x04c2, 0x30c4 }, + { 0x04c3, 0x30c6 }, + { 0x04c4, 0x30c8 }, + { 0x04c5, 0x30ca }, + { 0x04c6, 0x30cb }, + { 0x04c7, 0x30cc }, + { 0x04c8, 0x30cd }, + { 0x04c9, 0x30ce }, + { 0x04ca, 0x30cf }, + { 0x04cb, 0x30d2 }, + { 0x04cc, 0x30d5 }, + { 0x04cd, 0x30d8 }, + { 0x04ce, 0x30db }, + { 0x04cf, 0x30de }, + { 0x04d0, 0x30df }, + { 0x04d1, 0x30e0 }, + { 0x04d2, 0x30e1 }, + { 0x04d3, 0x30e2 }, + { 0x04d4, 0x30e4 }, + { 0x04d5, 0x30e6 }, + { 0x04d6, 0x30e8 }, + { 0x04d7, 0x30e9 }, + { 0x04d8, 0x30ea }, + { 0x04d9, 0x30eb }, + { 0x04da, 0x30ec }, + { 0x04db, 0x30ed }, + { 0x04dc, 0x30ef }, + { 0x04dd, 0x30f3 }, + { 0x04de, 0x309b }, + { 0x04df, 0x309c }, + { 0x05ac, 0x060c }, + { 0x05bb, 0x061b }, + { 0x05bf, 0x061f }, + { 0x05c1, 0x0621 }, + { 0x05c2, 0x0622 }, + { 0x05c3, 0x0623 }, + { 0x05c4, 0x0624 }, + { 0x05c5, 0x0625 }, + { 0x05c6, 0x0626 }, + { 0x05c7, 0x0627 }, + { 0x05c8, 0x0628 }, + { 0x05c9, 0x0629 }, + { 0x05ca, 0x062a }, + { 0x05cb, 0x062b }, + { 0x05cc, 0x062c }, + { 0x05cd, 0x062d }, + { 0x05ce, 0x062e }, + { 0x05cf, 0x062f }, + { 0x05d0, 0x0630 }, + { 0x05d1, 0x0631 }, + { 0x05d2, 0x0632 }, + { 0x05d3, 0x0633 }, + { 0x05d4, 0x0634 }, + { 0x05d5, 0x0635 }, + { 0x05d6, 0x0636 }, + { 0x05d7, 0x0637 }, + { 0x05d8, 0x0638 }, + { 0x05d9, 0x0639 }, + { 0x05da, 0x063a }, + { 0x05e0, 0x0640 }, + { 0x05e1, 0x0641 }, + { 0x05e2, 0x0642 }, + { 0x05e3, 0x0643 }, + { 0x05e4, 0x0644 }, + { 0x05e5, 0x0645 }, + { 0x05e6, 0x0646 }, + { 0x05e7, 0x0647 }, + { 0x05e8, 0x0648 }, + { 0x05e9, 0x0649 }, + { 0x05ea, 0x064a }, + { 0x05eb, 0x064b }, + { 0x05ec, 0x064c }, + { 0x05ed, 0x064d }, + { 0x05ee, 0x064e }, + { 0x05ef, 0x064f }, + { 0x05f0, 0x0650 }, + { 0x05f1, 0x0651 }, + { 0x05f2, 0x0652 }, + { 0x06a1, 0x0452 }, + { 0x06a2, 0x0453 }, + { 0x06a3, 0x0451 }, + { 0x06a4, 0x0454 }, + { 0x06a5, 0x0455 }, + { 0x06a6, 0x0456 }, + { 0x06a7, 0x0457 }, + { 0x06a8, 0x0458 }, + { 0x06a9, 0x0459 }, + { 0x06aa, 0x045a }, + { 0x06ab, 0x045b }, + { 0x06ac, 0x045c }, + { 0x06ae, 0x045e }, + { 0x06af, 0x045f }, + { 0x06b0, 0x2116 }, + { 0x06b1, 0x0402 }, + { 0x06b2, 0x0403 }, + { 0x06b3, 0x0401 }, + { 0x06b4, 0x0404 }, + { 0x06b5, 0x0405 }, + { 0x06b6, 0x0406 }, + { 0x06b7, 0x0407 }, + { 0x06b8, 0x0408 }, + { 0x06b9, 0x0409 }, + { 0x06ba, 0x040a }, + { 0x06bb, 0x040b }, + { 0x06bc, 0x040c }, + { 0x06be, 0x040e }, + { 0x06bf, 0x040f }, + { 0x06c0, 0x044e }, + { 0x06c1, 0x0430 }, + { 0x06c2, 0x0431 }, + { 0x06c3, 0x0446 }, + { 0x06c4, 0x0434 }, + { 0x06c5, 0x0435 }, + { 0x06c6, 0x0444 }, + { 0x06c7, 0x0433 }, + { 0x06c8, 0x0445 }, + { 0x06c9, 0x0438 }, + { 0x06ca, 0x0439 }, + { 0x06cb, 0x043a }, + { 0x06cc, 0x043b }, + { 0x06cd, 0x043c }, + { 0x06ce, 0x043d }, + { 0x06cf, 0x043e }, + { 0x06d0, 0x043f }, + { 0x06d1, 0x044f }, + { 0x06d2, 0x0440 }, + { 0x06d3, 0x0441 }, + { 0x06d4, 0x0442 }, + { 0x06d5, 0x0443 }, + { 0x06d6, 0x0436 }, + { 0x06d7, 0x0432 }, + { 0x06d8, 0x044c }, + { 0x06d9, 0x044b }, + { 0x06da, 0x0437 }, + { 0x06db, 0x0448 }, + { 0x06dc, 0x044d }, + { 0x06dd, 0x0449 }, + { 0x06de, 0x0447 }, + { 0x06df, 0x044a }, + { 0x06e0, 0x042e }, + { 0x06e1, 0x0410 }, + { 0x06e2, 0x0411 }, + { 0x06e3, 0x0426 }, + { 0x06e4, 0x0414 }, + { 0x06e5, 0x0415 }, + { 0x06e6, 0x0424 }, + { 0x06e7, 0x0413 }, + { 0x06e8, 0x0425 }, + { 0x06e9, 0x0418 }, + { 0x06ea, 0x0419 }, + { 0x06eb, 0x041a }, + { 0x06ec, 0x041b }, + { 0x06ed, 0x041c }, + { 0x06ee, 0x041d }, + { 0x06ef, 0x041e }, + { 0x06f0, 0x041f }, + { 0x06f1, 0x042f }, + { 0x06f2, 0x0420 }, + { 0x06f3, 0x0421 }, + { 0x06f4, 0x0422 }, + { 0x06f5, 0x0423 }, + { 0x06f6, 0x0416 }, + { 0x06f7, 0x0412 }, + { 0x06f8, 0x042c }, + { 0x06f9, 0x042b }, + { 0x06fa, 0x0417 }, + { 0x06fb, 0x0428 }, + { 0x06fc, 0x042d }, + { 0x06fd, 0x0429 }, + { 0x06fe, 0x0427 }, + { 0x06ff, 0x042a }, + { 0x07a1, 0x0386 }, + { 0x07a2, 0x0388 }, + { 0x07a3, 0x0389 }, + { 0x07a4, 0x038a }, + { 0x07a5, 0x03aa }, + { 0x07a7, 0x038c }, + { 0x07a8, 0x038e }, + { 0x07a9, 0x03ab }, + { 0x07ab, 0x038f }, + { 0x07ae, 0x0385 }, + { 0x07af, 0x2015 }, + { 0x07b1, 0x03ac }, + { 0x07b2, 0x03ad }, + { 0x07b3, 0x03ae }, + { 0x07b4, 0x03af }, + { 0x07b5, 0x03ca }, + { 0x07b6, 0x0390 }, + { 0x07b7, 0x03cc }, + { 0x07b8, 0x03cd }, + { 0x07b9, 0x03cb }, + { 0x07ba, 0x03b0 }, + { 0x07bb, 0x03ce }, + { 0x07c1, 0x0391 }, + { 0x07c2, 0x0392 }, + { 0x07c3, 0x0393 }, + { 0x07c4, 0x0394 }, + { 0x07c5, 0x0395 }, + { 0x07c6, 0x0396 }, + { 0x07c7, 0x0397 }, + { 0x07c8, 0x0398 }, + { 0x07c9, 0x0399 }, + { 0x07ca, 0x039a }, + { 0x07cb, 0x039b }, + { 0x07cc, 0x039c }, + { 0x07cd, 0x039d }, + { 0x07ce, 0x039e }, + { 0x07cf, 0x039f }, + { 0x07d0, 0x03a0 }, + { 0x07d1, 0x03a1 }, + { 0x07d2, 0x03a3 }, + { 0x07d4, 0x03a4 }, + { 0x07d5, 0x03a5 }, + { 0x07d6, 0x03a6 }, + { 0x07d7, 0x03a7 }, + { 0x07d8, 0x03a8 }, + { 0x07d9, 0x03a9 }, + { 0x07e1, 0x03b1 }, + { 0x07e2, 0x03b2 }, + { 0x07e3, 0x03b3 }, + { 0x07e4, 0x03b4 }, + { 0x07e5, 0x03b5 }, + { 0x07e6, 0x03b6 }, + { 0x07e7, 0x03b7 }, + { 0x07e8, 0x03b8 }, + { 0x07e9, 0x03b9 }, + { 0x07ea, 0x03ba }, + { 0x07eb, 0x03bb }, + { 0x07ec, 0x03bc }, + { 0x07ed, 0x03bd }, + { 0x07ee, 0x03be }, + { 0x07ef, 0x03bf }, + { 0x07f0, 0x03c0 }, + { 0x07f1, 0x03c1 }, + { 0x07f2, 0x03c3 }, + { 0x07f3, 0x03c2 }, + { 0x07f4, 0x03c4 }, + { 0x07f5, 0x03c5 }, + { 0x07f6, 0x03c6 }, + { 0x07f7, 0x03c7 }, + { 0x07f8, 0x03c8 }, + { 0x07f9, 0x03c9 }, + { 0x08a1, 0x23b7 }, + { 0x08a2, 0x250c }, + { 0x08a3, 0x2500 }, + { 0x08a4, 0x2320 }, + { 0x08a5, 0x2321 }, + { 0x08a6, 0x2502 }, + { 0x08a7, 0x23a1 }, + { 0x08a8, 0x23a3 }, + { 0x08a9, 0x23a4 }, + { 0x08aa, 0x23a6 }, + { 0x08ab, 0x239b }, + { 0x08ac, 0x239d }, + { 0x08ad, 0x239e }, + { 0x08ae, 0x23a0 }, + { 0x08af, 0x23a8 }, + { 0x08b0, 0x23ac }, + { 0x08bc, 0x2264 }, + { 0x08bd, 0x2260 }, + { 0x08be, 0x2265 }, + { 0x08bf, 0x222b }, + { 0x08c0, 0x2234 }, + { 0x08c1, 0x221d }, + { 0x08c2, 0x221e }, + { 0x08c5, 0x2207 }, + { 0x08c8, 0x223c }, + { 0x08c9, 0x2243 }, + { 0x08cd, 0x21d4 }, + { 0x08ce, 0x21d2 }, + { 0x08cf, 0x2261 }, + { 0x08d6, 0x221a }, + { 0x08da, 0x2282 }, + { 0x08db, 0x2283 }, + { 0x08dc, 0x2229 }, + { 0x08dd, 0x222a }, + { 0x08de, 0x2227 }, + { 0x08df, 0x2228 }, + { 0x08ef, 0x2202 }, + { 0x08f6, 0x0192 }, + { 0x08fb, 0x2190 }, + { 0x08fc, 0x2191 }, + { 0x08fd, 0x2192 }, + { 0x08fe, 0x2193 }, + { 0x09e0, 0x25c6 }, + { 0x09e1, 0x2592 }, + { 0x09e2, 0x2409 }, + { 0x09e3, 0x240c }, + { 0x09e4, 0x240d }, + { 0x09e5, 0x240a }, + { 0x09e8, 0x2424 }, + { 0x09e9, 0x240b }, + { 0x09ea, 0x2518 }, + { 0x09eb, 0x2510 }, + { 0x09ec, 0x250c }, + { 0x09ed, 0x2514 }, + { 0x09ee, 0x253c }, + { 0x09ef, 0x23ba }, + { 0x09f0, 0x23bb }, + { 0x09f1, 0x2500 }, + { 0x09f2, 0x23bc }, + { 0x09f3, 0x23bd }, + { 0x09f4, 0x251c }, + { 0x09f5, 0x2524 }, + { 0x09f6, 0x2534 }, + { 0x09f7, 0x252c }, + { 0x09f8, 0x2502 }, + { 0x0aa1, 0x2003 }, + { 0x0aa2, 0x2002 }, + { 0x0aa3, 0x2004 }, + { 0x0aa4, 0x2005 }, + { 0x0aa5, 0x2007 }, + { 0x0aa6, 0x2008 }, + { 0x0aa7, 0x2009 }, + { 0x0aa8, 0x200a }, + { 0x0aa9, 0x2014 }, + { 0x0aaa, 0x2013 }, + { 0x0aae, 0x2026 }, + { 0x0aaf, 0x2025 }, + { 0x0ab0, 0x2153 }, + { 0x0ab1, 0x2154 }, + { 0x0ab2, 0x2155 }, + { 0x0ab3, 0x2156 }, + { 0x0ab4, 0x2157 }, + { 0x0ab5, 0x2158 }, + { 0x0ab6, 0x2159 }, + { 0x0ab7, 0x215a }, + { 0x0ab8, 0x2105 }, + { 0x0abb, 0x2012 }, + { 0x0abc, 0x2329 }, + { 0x0abe, 0x232a }, + { 0x0ac3, 0x215b }, + { 0x0ac4, 0x215c }, + { 0x0ac5, 0x215d }, + { 0x0ac6, 0x215e }, + { 0x0ac9, 0x2122 }, + { 0x0aca, 0x2613 }, + { 0x0acc, 0x25c1 }, + { 0x0acd, 0x25b7 }, + { 0x0ace, 0x25cb }, + { 0x0acf, 0x25af }, + { 0x0ad0, 0x2018 }, + { 0x0ad1, 0x2019 }, + { 0x0ad2, 0x201c }, + { 0x0ad3, 0x201d }, + { 0x0ad4, 0x211e }, + { 0x0ad6, 0x2032 }, + { 0x0ad7, 0x2033 }, + { 0x0ad9, 0x271d }, + { 0x0adb, 0x25ac }, + { 0x0adc, 0x25c0 }, + { 0x0add, 0x25b6 }, + { 0x0ade, 0x25cf }, + { 0x0adf, 0x25ae }, + { 0x0ae0, 0x25e6 }, + { 0x0ae1, 0x25ab }, + { 0x0ae2, 0x25ad }, + { 0x0ae3, 0x25b3 }, + { 0x0ae4, 0x25bd }, + { 0x0ae5, 0x2606 }, + { 0x0ae6, 0x2022 }, + { 0x0ae7, 0x25aa }, + { 0x0ae8, 0x25b2 }, + { 0x0ae9, 0x25bc }, + { 0x0aea, 0x261c }, + { 0x0aeb, 0x261e }, + { 0x0aec, 0x2663 }, + { 0x0aed, 0x2666 }, + { 0x0aee, 0x2665 }, + { 0x0af0, 0x2720 }, + { 0x0af1, 0x2020 }, + { 0x0af2, 0x2021 }, + { 0x0af3, 0x2713 }, + { 0x0af4, 0x2717 }, + { 0x0af5, 0x266f }, + { 0x0af6, 0x266d }, + { 0x0af7, 0x2642 }, + { 0x0af8, 0x2640 }, + { 0x0af9, 0x260e }, + { 0x0afa, 0x2315 }, + { 0x0afb, 0x2117 }, + { 0x0afc, 0x2038 }, + { 0x0afd, 0x201a }, + { 0x0afe, 0x201e }, + { 0x0ba3, 0x003c }, + { 0x0ba6, 0x003e }, + { 0x0ba8, 0x2228 }, + { 0x0ba9, 0x2227 }, + { 0x0bc0, 0x00af }, + { 0x0bc2, 0x22a5 }, + { 0x0bc3, 0x2229 }, + { 0x0bc4, 0x230a }, + { 0x0bc6, 0x005f }, + { 0x0bca, 0x2218 }, + { 0x0bcc, 0x2395 }, + { 0x0bce, 0x22a4 }, + { 0x0bcf, 0x25cb }, + { 0x0bd3, 0x2308 }, + { 0x0bd6, 0x222a }, + { 0x0bd8, 0x2283 }, + { 0x0bda, 0x2282 }, + { 0x0bdc, 0x22a2 }, + { 0x0bfc, 0x22a3 }, + { 0x0cdf, 0x2017 }, + { 0x0ce0, 0x05d0 }, + { 0x0ce1, 0x05d1 }, + { 0x0ce2, 0x05d2 }, + { 0x0ce3, 0x05d3 }, + { 0x0ce4, 0x05d4 }, + { 0x0ce5, 0x05d5 }, + { 0x0ce6, 0x05d6 }, + { 0x0ce7, 0x05d7 }, + { 0x0ce8, 0x05d8 }, + { 0x0ce9, 0x05d9 }, + { 0x0cea, 0x05da }, + { 0x0ceb, 0x05db }, + { 0x0cec, 0x05dc }, + { 0x0ced, 0x05dd }, + { 0x0cee, 0x05de }, + { 0x0cef, 0x05df }, + { 0x0cf0, 0x05e0 }, + { 0x0cf1, 0x05e1 }, + { 0x0cf2, 0x05e2 }, + { 0x0cf3, 0x05e3 }, + { 0x0cf4, 0x05e4 }, + { 0x0cf5, 0x05e5 }, + { 0x0cf6, 0x05e6 }, + { 0x0cf7, 0x05e7 }, + { 0x0cf8, 0x05e8 }, + { 0x0cf9, 0x05e9 }, + { 0x0cfa, 0x05ea }, + { 0x0da1, 0x0e01 }, + { 0x0da2, 0x0e02 }, + { 0x0da3, 0x0e03 }, + { 0x0da4, 0x0e04 }, + { 0x0da5, 0x0e05 }, + { 0x0da6, 0x0e06 }, + { 0x0da7, 0x0e07 }, + { 0x0da8, 0x0e08 }, + { 0x0da9, 0x0e09 }, + { 0x0daa, 0x0e0a }, + { 0x0dab, 0x0e0b }, + { 0x0dac, 0x0e0c }, + { 0x0dad, 0x0e0d }, + { 0x0dae, 0x0e0e }, + { 0x0daf, 0x0e0f }, + { 0x0db0, 0x0e10 }, + { 0x0db1, 0x0e11 }, + { 0x0db2, 0x0e12 }, + { 0x0db3, 0x0e13 }, + { 0x0db4, 0x0e14 }, + { 0x0db5, 0x0e15 }, + { 0x0db6, 0x0e16 }, + { 0x0db7, 0x0e17 }, + { 0x0db8, 0x0e18 }, + { 0x0db9, 0x0e19 }, + { 0x0dba, 0x0e1a }, + { 0x0dbb, 0x0e1b }, + { 0x0dbc, 0x0e1c }, + { 0x0dbd, 0x0e1d }, + { 0x0dbe, 0x0e1e }, + { 0x0dbf, 0x0e1f }, + { 0x0dc0, 0x0e20 }, + { 0x0dc1, 0x0e21 }, + { 0x0dc2, 0x0e22 }, + { 0x0dc3, 0x0e23 }, + { 0x0dc4, 0x0e24 }, + { 0x0dc5, 0x0e25 }, + { 0x0dc6, 0x0e26 }, + { 0x0dc7, 0x0e27 }, + { 0x0dc8, 0x0e28 }, + { 0x0dc9, 0x0e29 }, + { 0x0dca, 0x0e2a }, + { 0x0dcb, 0x0e2b }, + { 0x0dcc, 0x0e2c }, + { 0x0dcd, 0x0e2d }, + { 0x0dce, 0x0e2e }, + { 0x0dcf, 0x0e2f }, + { 0x0dd0, 0x0e30 }, + { 0x0dd1, 0x0e31 }, + { 0x0dd2, 0x0e32 }, + { 0x0dd3, 0x0e33 }, + { 0x0dd4, 0x0e34 }, + { 0x0dd5, 0x0e35 }, + { 0x0dd6, 0x0e36 }, + { 0x0dd7, 0x0e37 }, + { 0x0dd8, 0x0e38 }, + { 0x0dd9, 0x0e39 }, + { 0x0dda, 0x0e3a }, + { 0x0ddf, 0x0e3f }, + { 0x0de0, 0x0e40 }, + { 0x0de1, 0x0e41 }, + { 0x0de2, 0x0e42 }, + { 0x0de3, 0x0e43 }, + { 0x0de4, 0x0e44 }, + { 0x0de5, 0x0e45 }, + { 0x0de6, 0x0e46 }, + { 0x0de7, 0x0e47 }, + { 0x0de8, 0x0e48 }, + { 0x0de9, 0x0e49 }, + { 0x0dea, 0x0e4a }, + { 0x0deb, 0x0e4b }, + { 0x0dec, 0x0e4c }, + { 0x0ded, 0x0e4d }, + { 0x0df0, 0x0e50 }, + { 0x0df1, 0x0e51 }, + { 0x0df2, 0x0e52 }, + { 0x0df3, 0x0e53 }, + { 0x0df4, 0x0e54 }, + { 0x0df5, 0x0e55 }, + { 0x0df6, 0x0e56 }, + { 0x0df7, 0x0e57 }, + { 0x0df8, 0x0e58 }, + { 0x0df9, 0x0e59 }, + { 0x0ea1, 0x3131 }, + { 0x0ea2, 0x3132 }, + { 0x0ea3, 0x3133 }, + { 0x0ea4, 0x3134 }, + { 0x0ea5, 0x3135 }, + { 0x0ea6, 0x3136 }, + { 0x0ea7, 0x3137 }, + { 0x0ea8, 0x3138 }, + { 0x0ea9, 0x3139 }, + { 0x0eaa, 0x313a }, + { 0x0eab, 0x313b }, + { 0x0eac, 0x313c }, + { 0x0ead, 0x313d }, + { 0x0eae, 0x313e }, + { 0x0eaf, 0x313f }, + { 0x0eb0, 0x3140 }, + { 0x0eb1, 0x3141 }, + { 0x0eb2, 0x3142 }, + { 0x0eb3, 0x3143 }, + { 0x0eb4, 0x3144 }, + { 0x0eb5, 0x3145 }, + { 0x0eb6, 0x3146 }, + { 0x0eb7, 0x3147 }, + { 0x0eb8, 0x3148 }, + { 0x0eb9, 0x3149 }, + { 0x0eba, 0x314a }, + { 0x0ebb, 0x314b }, + { 0x0ebc, 0x314c }, + { 0x0ebd, 0x314d }, + { 0x0ebe, 0x314e }, + { 0x0ebf, 0x314f }, + { 0x0ec0, 0x3150 }, + { 0x0ec1, 0x3151 }, + { 0x0ec2, 0x3152 }, + { 0x0ec3, 0x3153 }, + { 0x0ec4, 0x3154 }, + { 0x0ec5, 0x3155 }, + { 0x0ec6, 0x3156 }, + { 0x0ec7, 0x3157 }, + { 0x0ec8, 0x3158 }, + { 0x0ec9, 0x3159 }, + { 0x0eca, 0x315a }, + { 0x0ecb, 0x315b }, + { 0x0ecc, 0x315c }, + { 0x0ecd, 0x315d }, + { 0x0ece, 0x315e }, + { 0x0ecf, 0x315f }, + { 0x0ed0, 0x3160 }, + { 0x0ed1, 0x3161 }, + { 0x0ed2, 0x3162 }, + { 0x0ed3, 0x3163 }, + { 0x0ed4, 0x11a8 }, + { 0x0ed5, 0x11a9 }, + { 0x0ed6, 0x11aa }, + { 0x0ed7, 0x11ab }, + { 0x0ed8, 0x11ac }, + { 0x0ed9, 0x11ad }, + { 0x0eda, 0x11ae }, + { 0x0edb, 0x11af }, + { 0x0edc, 0x11b0 }, + { 0x0edd, 0x11b1 }, + { 0x0ede, 0x11b2 }, + { 0x0edf, 0x11b3 }, + { 0x0ee0, 0x11b4 }, + { 0x0ee1, 0x11b5 }, + { 0x0ee2, 0x11b6 }, + { 0x0ee3, 0x11b7 }, + { 0x0ee4, 0x11b8 }, + { 0x0ee5, 0x11b9 }, + { 0x0ee6, 0x11ba }, + { 0x0ee7, 0x11bb }, + { 0x0ee8, 0x11bc }, + { 0x0ee9, 0x11bd }, + { 0x0eea, 0x11be }, + { 0x0eeb, 0x11bf }, + { 0x0eec, 0x11c0 }, + { 0x0eed, 0x11c1 }, + { 0x0eee, 0x11c2 }, + { 0x0eef, 0x316d }, + { 0x0ef0, 0x3171 }, + { 0x0ef1, 0x3178 }, + { 0x0ef2, 0x317f }, + { 0x0ef3, 0x3181 }, + { 0x0ef4, 0x3184 }, + { 0x0ef5, 0x3186 }, + { 0x0ef6, 0x318d }, + { 0x0ef7, 0x318e }, + { 0x0ef8, 0x11eb }, + { 0x0ef9, 0x11f0 }, + { 0x0efa, 0x11f9 }, + { 0x0eff, 0x20a9 }, + { 0x13a4, 0x20ac }, + { 0x13bc, 0x0152 }, + { 0x13bd, 0x0153 }, + { 0x13be, 0x0178 }, + { 0x20ac, 0x20ac }, + { 0xfe50, '`' }, + { 0xfe51, 0x00b4 }, + { 0xfe52, '^' }, + { 0xfe53, '~' }, + { 0xfe54, 0x00af }, + { 0xfe55, 0x02d8 }, + { 0xfe56, 0x02d9 }, + { 0xfe57, 0x00a8 }, + { 0xfe58, 0x02da }, + { 0xfe59, 0x02dd }, + { 0xfe5a, 0x02c7 }, + { 0xfe5b, 0x00b8 }, + { 0xfe5c, 0x02db }, + { 0xfe5d, 0x037a }, + { 0xfe5e, 0x309b }, + { 0xfe5f, 0x309c }, + { 0xfe63, '/' }, + { 0xfe64, 0x02bc }, + { 0xfe65, 0x02bd }, + { 0xfe66, 0x02f5 }, + { 0xfe67, 0x02f3 }, + { 0xfe68, 0x02cd }, + { 0xfe69, 0xa788 }, + { 0xfe6a, 0x02f7 }, + { 0xfe6e, ',' }, + { 0xfe6f, 0x00a4 }, + { 0xfe80, 'a' }, // XK_dead_a + { 0xfe81, 'A' }, // XK_dead_A + { 0xfe82, 'e' }, // XK_dead_e + { 0xfe83, 'E' }, // XK_dead_E + { 0xfe84, 'i' }, // XK_dead_i + { 0xfe85, 'I' }, // XK_dead_I + { 0xfe86, 'o' }, // XK_dead_o + { 0xfe87, 'O' }, // XK_dead_O + { 0xfe88, 'u' }, // XK_dead_u + { 0xfe89, 'U' }, // XK_dead_U + { 0xfe8a, 0x0259 }, + { 0xfe8b, 0x018f }, + { 0xfe8c, 0x00b5 }, + { 0xfe90, '_' }, + { 0xfe91, 0x02c8 }, + { 0xfe92, 0x02cc }, + { 0xff80 /*XKB_KEY_KP_Space*/, ' ' }, + { 0xff95 /*XKB_KEY_KP_7*/, 0x0037 }, + { 0xff96 /*XKB_KEY_KP_4*/, 0x0034 }, + { 0xff97 /*XKB_KEY_KP_8*/, 0x0038 }, + { 0xff98 /*XKB_KEY_KP_6*/, 0x0036 }, + { 0xff99 /*XKB_KEY_KP_2*/, 0x0032 }, + { 0xff9a /*XKB_KEY_KP_9*/, 0x0039 }, + { 0xff9b /*XKB_KEY_KP_3*/, 0x0033 }, + { 0xff9c /*XKB_KEY_KP_1*/, 0x0031 }, + { 0xff9d /*XKB_KEY_KP_5*/, 0x0035 }, + { 0xff9e /*XKB_KEY_KP_0*/, 0x0030 }, + { 0xffaa /*XKB_KEY_KP_Multiply*/, '*' }, + { 0xffab /*XKB_KEY_KP_Add*/, '+' }, + { 0xffac /*XKB_KEY_KP_Separator*/, ',' }, + { 0xffad /*XKB_KEY_KP_Subtract*/, '-' }, + { 0xffae /*XKB_KEY_KP_Decimal*/, '.' }, + { 0xffaf /*XKB_KEY_KP_Divide*/, '/' }, + { 0xffb0 /*XKB_KEY_KP_0*/, 0x0030 }, + { 0xffb1 /*XKB_KEY_KP_1*/, 0x0031 }, + { 0xffb2 /*XKB_KEY_KP_2*/, 0x0032 }, + { 0xffb3 /*XKB_KEY_KP_3*/, 0x0033 }, + { 0xffb4 /*XKB_KEY_KP_4*/, 0x0034 }, + { 0xffb5 /*XKB_KEY_KP_5*/, 0x0035 }, + { 0xffb6 /*XKB_KEY_KP_6*/, 0x0036 }, + { 0xffb7 /*XKB_KEY_KP_7*/, 0x0037 }, + { 0xffb8 /*XKB_KEY_KP_8*/, 0x0038 }, + { 0xffb9 /*XKB_KEY_KP_9*/, 0x0039 }, + { 0xffbd /*XKB_KEY_KP_Equal*/, '=' } +}; + + +////////////////////////////////////////////////////////////////////////// +////// GLFW internal API ////// +////////////////////////////////////////////////////////////////////////// + +// Convert XKB KeySym to Unicode +// +uint32_t _glfwKeySym2Unicode(unsigned int keysym) +{ + int min = 0; + int max = sizeof(keysymtab) / sizeof(struct codepair) - 1; + int mid; + + // First check for Latin-1 characters (1:1 mapping) + if ((keysym >= 0x0020 && keysym <= 0x007e) || + (keysym >= 0x00a0 && keysym <= 0x00ff)) + { + return keysym; + } + + // Also check for directly encoded 24-bit UCS characters + if ((keysym & 0xff000000) == 0x01000000) + return keysym & 0x00ffffff; + + // Binary search in table + while (max >= min) + { + mid = (min + max) / 2; + if (keysymtab[mid].keysym < keysym) + min = mid + 1; + else if (keysymtab[mid].keysym > keysym) + max = mid - 1; + else + return keysymtab[mid].ucs; + } + + // No matching Unicode value found + return GLFW_INVALID_CODEPOINT; +} + +#endif // _GLFW_WAYLAND or _GLFW_X11 + diff --git a/lib/glfw/src/xkb_unicode.h b/lib/glfw/src/xkb_unicode.h new file mode 100644 index 0000000..b07408f --- /dev/null +++ b/lib/glfw/src/xkb_unicode.h @@ -0,0 +1,30 @@ +//======================================================================== +// GLFW 3.4 Linux - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2014 Jonas Ådahl +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLFW_INVALID_CODEPOINT 0xffffffffu + +uint32_t _glfwKeySym2Unicode(unsigned int keysym); + diff --git a/lib/glfw/tests/CMakeLists.txt b/lib/glfw/tests/CMakeLists.txt new file mode 100644 index 0000000..f81cfeb --- /dev/null +++ b/lib/glfw/tests/CMakeLists.txt @@ -0,0 +1,86 @@ + +link_libraries(glfw) + +include_directories("${GLFW_SOURCE_DIR}/deps") + +if (MATH_LIBRARY) + link_libraries("${MATH_LIBRARY}") +endif() + +# Workaround for the MS CRT deprecating parts of the standard library +if (MSVC OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC") + add_definitions(-D_CRT_SECURE_NO_WARNINGS) +endif() + +set(GLAD_GL "${GLFW_SOURCE_DIR}/deps/glad/gl.h") +set(GLAD_VULKAN "${GLFW_SOURCE_DIR}/deps/glad/vulkan.h") +set(GETOPT "${GLFW_SOURCE_DIR}/deps/getopt.h" + "${GLFW_SOURCE_DIR}/deps/getopt.c") +set(TINYCTHREAD "${GLFW_SOURCE_DIR}/deps/tinycthread.h" + "${GLFW_SOURCE_DIR}/deps/tinycthread.c") + +add_executable(allocator allocator.c ${GLAD_GL}) +add_executable(clipboard clipboard.c ${GETOPT} ${GLAD_GL}) +add_executable(events events.c ${GETOPT} ${GLAD_GL}) +add_executable(msaa msaa.c ${GETOPT} ${GLAD_GL}) +add_executable(glfwinfo glfwinfo.c ${GETOPT} ${GLAD_GL} ${GLAD_VULKAN}) +add_executable(iconify iconify.c ${GETOPT} ${GLAD_GL}) +add_executable(monitors monitors.c ${GETOPT} ${GLAD_GL}) +add_executable(reopen reopen.c ${GLAD_GL}) +add_executable(cursor cursor.c ${GLAD_GL}) + +add_executable(empty WIN32 MACOSX_BUNDLE empty.c ${TINYCTHREAD} ${GLAD_GL}) +add_executable(gamma WIN32 MACOSX_BUNDLE gamma.c ${GLAD_GL}) +add_executable(icon WIN32 MACOSX_BUNDLE icon.c ${GLAD_GL}) +add_executable(inputlag WIN32 MACOSX_BUNDLE inputlag.c ${GETOPT} ${GLAD_GL}) +add_executable(joysticks WIN32 MACOSX_BUNDLE joysticks.c ${GLAD_GL}) +add_executable(tearing WIN32 MACOSX_BUNDLE tearing.c ${GLAD_GL}) +add_executable(threads WIN32 MACOSX_BUNDLE threads.c ${TINYCTHREAD} ${GLAD_GL}) +add_executable(timeout WIN32 MACOSX_BUNDLE timeout.c ${GLAD_GL}) +add_executable(title WIN32 MACOSX_BUNDLE title.c ${GLAD_GL}) +add_executable(triangle-vulkan WIN32 triangle-vulkan.c ${GLAD_VULKAN}) +add_executable(window WIN32 MACOSX_BUNDLE window.c ${GLAD_GL}) + +target_link_libraries(empty Threads::Threads) +target_link_libraries(threads Threads::Threads) +if (RT_LIBRARY) + target_link_libraries(empty "${RT_LIBRARY}") + target_link_libraries(threads "${RT_LIBRARY}") +endif() + +set(GUI_ONLY_BINARIES empty gamma icon inputlag joysticks tearing threads + timeout title triangle-vulkan window) +set(CONSOLE_BINARIES allocator clipboard events msaa glfwinfo iconify monitors + reopen cursor) + +set_target_properties(${GUI_ONLY_BINARIES} ${CONSOLE_BINARIES} PROPERTIES + C_STANDARD 99 + FOLDER "GLFW3/Tests") + +if (MSVC) + # Tell MSVC to use main instead of WinMain + set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES + LINK_FLAGS "/ENTRY:mainCRTStartup") +elseif (CMAKE_C_SIMULATE_ID STREQUAL "MSVC") + # Tell Clang using MS CRT to use main instead of WinMain + set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES + LINK_FLAGS "-Wl,/entry:mainCRTStartup") +endif() + +if (APPLE) + set_target_properties(empty PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Empty Event") + set_target_properties(gamma PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Gamma") + set_target_properties(inputlag PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Input Lag") + set_target_properties(joysticks PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Joysticks") + set_target_properties(tearing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Tearing") + set_target_properties(threads PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Threads") + set_target_properties(timeout PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Timeout") + set_target_properties(title PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Title") + set_target_properties(window PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Window") + + set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES + MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION} + MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION} + MACOSX_BUNDLE_INFO_PLIST "${GLFW_SOURCE_DIR}/CMake/Info.plist.in") +endif() + diff --git a/lib/glfw/tests/allocator b/lib/glfw/tests/allocator new file mode 100755 index 0000000..5b0798c Binary files /dev/null and b/lib/glfw/tests/allocator differ diff --git a/lib/glfw/tests/allocator.c b/lib/glfw/tests/allocator.c new file mode 100644 index 0000000..3fb004d --- /dev/null +++ b/lib/glfw/tests/allocator.c @@ -0,0 +1,142 @@ +//======================================================================== +// Custom heap allocator test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include + +#define CALL(x) (function_name = #x, x) +static const char* function_name = NULL; + +struct allocator_stats +{ + size_t total; + size_t current; + size_t maximum; +}; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void* allocate(size_t size, void* user) +{ + struct allocator_stats* stats = user; + assert(size > 0); + + stats->total += size; + stats->current += size; + if (stats->current > stats->maximum) + stats->maximum = stats->current; + + printf("%s: allocate %zu bytes (current %zu maximum %zu total %zu)\n", + function_name, size, stats->current, stats->maximum, stats->total); + + size_t* real_block = malloc(size + sizeof(size_t)); + assert(real_block != NULL); + *real_block = size; + return real_block + 1; +} + +static void deallocate(void* block, void* user) +{ + struct allocator_stats* stats = user; + assert(block != NULL); + + size_t* real_block = (size_t*) block - 1; + stats->current -= *real_block; + + printf("%s: deallocate %zu bytes (current %zu maximum %zu total %zu)\n", + function_name, *real_block, stats->current, stats->maximum, stats->total); + + free(real_block); +} + +static void* reallocate(void* block, size_t size, void* user) +{ + struct allocator_stats* stats = user; + assert(block != NULL); + assert(size > 0); + + size_t* real_block = (size_t*) block - 1; + stats->total += size; + stats->current += size - *real_block; + if (stats->current > stats->maximum) + stats->maximum = stats->current; + + printf("%s: reallocate %zu bytes to %zu bytes (current %zu maximum %zu total %zu)\n", + function_name, *real_block, size, stats->current, stats->maximum, stats->total); + + real_block = realloc(real_block, size + sizeof(size_t)); + assert(real_block != NULL); + *real_block = size; + return real_block + 1; +} + +int main(void) +{ + struct allocator_stats stats = {0}; + const GLFWallocator allocator = + { + .allocate = allocate, + .deallocate = deallocate, + .reallocate = reallocate, + .user = &stats + }; + + glfwSetErrorCallback(error_callback); + glfwInitAllocator(&allocator); + + if (!CALL(glfwInit)()) + exit(EXIT_FAILURE); + + GLFWwindow* window = CALL(glfwCreateWindow)(400, 400, "Custom allocator test", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + CALL(glfwMakeContextCurrent)(window); + gladLoadGL(glfwGetProcAddress); + CALL(glfwSwapInterval)(1); + + while (!CALL(glfwWindowShouldClose)(window)) + { + glClear(GL_COLOR_BUFFER_BIT); + CALL(glfwSwapBuffers)(window); + CALL(glfwWaitEvents)(); + } + + CALL(glfwTerminate)(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/clipboard.c b/lib/glfw/tests/clipboard.c new file mode 100644 index 0000000..eaad516 --- /dev/null +++ b/lib/glfw/tests/clipboard.c @@ -0,0 +1,146 @@ +//======================================================================== +// Clipboard test program +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This program is used to test the clipboard functionality. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include + +#include "getopt.h" + +#if defined(__APPLE__) + #define MODIFIER GLFW_MOD_SUPER +#else + #define MODIFIER GLFW_MOD_CONTROL +#endif + +static void usage(void) +{ + printf("Usage: clipboard [-h]\n"); +} + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + + case GLFW_KEY_V: + if (mods == MODIFIER) + { + const char* string; + + string = glfwGetClipboardString(NULL); + if (string) + printf("Clipboard contains \"%s\"\n", string); + else + printf("Clipboard does not contain a string\n"); + } + break; + + case GLFW_KEY_C: + if (mods == MODIFIER) + { + const char* string = "Hello GLFW World!"; + glfwSetClipboardString(NULL, string); + printf("Setting clipboard to \"%s\"\n", string); + } + break; + } +} + +int main(int argc, char** argv) +{ + int ch; + GLFWwindow* window; + + while ((ch = getopt(argc, argv, "h")) != -1) + { + switch (ch) + { + case 'h': + usage(); + exit(EXIT_SUCCESS); + + default: + usage(); + exit(EXIT_FAILURE); + } + } + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + { + fprintf(stderr, "Failed to initialize GLFW\n"); + exit(EXIT_FAILURE); + } + + window = glfwCreateWindow(200, 200, "Clipboard Test", NULL, NULL); + if (!window) + { + glfwTerminate(); + + fprintf(stderr, "Failed to open GLFW window\n"); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + glfwSetKeyCallback(window, key_callback); + + glClearColor(0.5f, 0.5f, 0.5f, 0); + + while (!glfwWindowShouldClose(window)) + { + glClear(GL_COLOR_BUFFER_BIT); + + glfwSwapBuffers(window); + glfwWaitEvents(); + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/cursor.c b/lib/glfw/tests/cursor.c new file mode 100644 index 0000000..37f3299 --- /dev/null +++ b/lib/glfw/tests/cursor.c @@ -0,0 +1,495 @@ +//======================================================================== +// Cursor & input mode tests +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test provides an interface to the cursor image and cursor mode +// parts of the API. +// +// Custom cursor image generation by urraka. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#if defined(_MSC_VER) + // Make MS math.h define M_PI + #define _USE_MATH_DEFINES +#endif + +#include +#include +#include + +#include "linmath.h" + +#define CURSOR_FRAME_COUNT 60 + +static const char* vertex_shader_text = +"#version 110\n" +"uniform mat4 MVP;\n" +"attribute vec2 vPos;\n" +"void main()\n" +"{\n" +" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 110\n" +"void main()\n" +"{\n" +" gl_FragColor = vec4(1.0);\n" +"}\n"; + +static double cursor_x; +static double cursor_y; +static int swap_interval = 1; +static int wait_events = GLFW_TRUE; +static int animate_cursor = GLFW_FALSE; +static int track_cursor = GLFW_FALSE; +static GLFWcursor* standard_cursors[10]; +static GLFWcursor* tracking_cursor = NULL; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static float star(int x, int y, float t) +{ + const float c = 64 / 2.f; + + const float i = (0.25f * (float) sin(2.f * M_PI * t) + 0.75f); + const float k = 64 * 0.046875f * i; + + const float dist = (float) sqrt((x - c) * (x - c) + (y - c) * (y - c)); + + const float salpha = 1.f - dist / c; + const float xalpha = (float) x == c ? c : k / (float) fabs(x - c); + const float yalpha = (float) y == c ? c : k / (float) fabs(y - c); + + return (float) fmax(0.f, fmin(1.f, i * salpha * 0.2f + salpha * xalpha * yalpha)); +} + +static GLFWcursor* create_cursor_frame(float t) +{ + int i = 0, x, y; + unsigned char buffer[64 * 64 * 4]; + const GLFWimage image = { 64, 64, buffer }; + + for (y = 0; y < image.width; y++) + { + for (x = 0; x < image.height; x++) + { + buffer[i++] = 255; + buffer[i++] = 255; + buffer[i++] = 255; + buffer[i++] = (unsigned char) (255 * star(x, y, t)); + } + } + + return glfwCreateCursor(&image, image.width / 2, image.height / 2); +} + +static GLFWcursor* create_tracking_cursor(void) +{ + int i = 0, x, y; + unsigned char buffer[32 * 32 * 4]; + const GLFWimage image = { 32, 32, buffer }; + + for (y = 0; y < image.width; y++) + { + for (x = 0; x < image.height; x++) + { + if (x == 7 || y == 7) + { + buffer[i++] = 255; + buffer[i++] = 0; + buffer[i++] = 0; + buffer[i++] = 255; + } + else + { + buffer[i++] = 0; + buffer[i++] = 0; + buffer[i++] = 0; + buffer[i++] = 0; + } + } + } + + return glfwCreateCursor(&image, 7, 7); +} + +static void cursor_position_callback(GLFWwindow* window, double x, double y) +{ + printf("%0.3f: Cursor position: %f %f (%+f %+f)\n", + glfwGetTime(), + x, y, x - cursor_x, y - cursor_y); + + cursor_x = x; + cursor_y = y; +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_A: + { + animate_cursor = !animate_cursor; + if (!animate_cursor) + glfwSetCursor(window, NULL); + + break; + } + + case GLFW_KEY_ESCAPE: + { + const int mode = glfwGetInputMode(window, GLFW_CURSOR); + if (mode != GLFW_CURSOR_DISABLED && mode != GLFW_CURSOR_CAPTURED) + { + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + } + + /* FALLTHROUGH */ + } + + case GLFW_KEY_N: + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); + glfwGetCursorPos(window, &cursor_x, &cursor_y); + printf("(( cursor is normal ))\n"); + break; + + case GLFW_KEY_D: + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); + printf("(( cursor is disabled ))\n"); + break; + + case GLFW_KEY_H: + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN); + printf("(( cursor is hidden ))\n"); + break; + + case GLFW_KEY_C: + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_CAPTURED); + printf("(( cursor is captured ))\n"); + break; + + case GLFW_KEY_R: + if (!glfwRawMouseMotionSupported()) + break; + + if (glfwGetInputMode(window, GLFW_RAW_MOUSE_MOTION)) + { + glfwSetInputMode(window, GLFW_RAW_MOUSE_MOTION, GLFW_FALSE); + printf("(( raw input is disabled ))\n"); + } + else + { + glfwSetInputMode(window, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE); + printf("(( raw input is enabled ))\n"); + } + break; + + case GLFW_KEY_SPACE: + swap_interval = 1 - swap_interval; + printf("(( swap interval: %i ))\n", swap_interval); + glfwSwapInterval(swap_interval); + break; + + case GLFW_KEY_W: + wait_events = !wait_events; + printf("(( %sing for events ))\n", wait_events ? "wait" : "poll"); + break; + + case GLFW_KEY_T: + track_cursor = !track_cursor; + if (track_cursor) + glfwSetCursor(window, tracking_cursor); + else + glfwSetCursor(window, NULL); + + break; + + case GLFW_KEY_P: + { + double x, y; + glfwGetCursorPos(window, &x, &y); + + printf("Query before set: %f %f (%+f %+f)\n", + x, y, x - cursor_x, y - cursor_y); + cursor_x = x; + cursor_y = y; + + glfwSetCursorPos(window, cursor_x, cursor_y); + glfwGetCursorPos(window, &x, &y); + + printf("Query after set: %f %f (%+f %+f)\n", + x, y, x - cursor_x, y - cursor_y); + cursor_x = x; + cursor_y = y; + break; + } + + case GLFW_KEY_UP: + glfwSetCursorPos(window, 0, 0); + glfwGetCursorPos(window, &cursor_x, &cursor_y); + break; + + case GLFW_KEY_DOWN: + { + int width, height; + glfwGetWindowSize(window, &width, &height); + glfwSetCursorPos(window, width - 1, height - 1); + glfwGetCursorPos(window, &cursor_x, &cursor_y); + break; + } + + case GLFW_KEY_0: + glfwSetCursor(window, NULL); + break; + + case GLFW_KEY_1: + case GLFW_KEY_2: + case GLFW_KEY_3: + case GLFW_KEY_4: + case GLFW_KEY_5: + case GLFW_KEY_6: + case GLFW_KEY_7: + case GLFW_KEY_8: + case GLFW_KEY_9: + { + int index = key - GLFW_KEY_1; + if (mods & GLFW_MOD_SHIFT) + index += 9; + + if (index < sizeof(standard_cursors) / sizeof(standard_cursors[0])) + glfwSetCursor(window, standard_cursors[index]); + + break; + } + + case GLFW_KEY_F11: + case GLFW_KEY_ENTER: + { + static int x, y, width, height; + + if (mods != GLFW_MOD_ALT) + return; + + if (glfwGetWindowMonitor(window)) + glfwSetWindowMonitor(window, NULL, x, y, width, height, 0); + else + { + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + glfwGetWindowPos(window, &x, &y); + glfwGetWindowSize(window, &width, &height); + glfwSetWindowMonitor(window, monitor, + 0, 0, mode->width, mode->height, + mode->refreshRate); + } + + glfwGetCursorPos(window, &cursor_x, &cursor_y); + break; + } + } +} + +int main(void) +{ + int i; + GLFWwindow* window; + GLFWcursor* star_cursors[CURSOR_FRAME_COUNT]; + GLFWcursor* current_frame = NULL; + GLuint vertex_buffer, vertex_shader, fragment_shader, program; + GLint mvp_location, vpos_location; + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + tracking_cursor = create_tracking_cursor(); + if (!tracking_cursor) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + for (i = 0; i < CURSOR_FRAME_COUNT; i++) + { + star_cursors[i] = create_cursor_frame(i / (float) CURSOR_FRAME_COUNT); + if (!star_cursors[i]) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + } + + for (i = 0; i < sizeof(standard_cursors) / sizeof(standard_cursors[0]); i++) + { + const int shapes[] = { + GLFW_ARROW_CURSOR, + GLFW_IBEAM_CURSOR, + GLFW_CROSSHAIR_CURSOR, + GLFW_POINTING_HAND_CURSOR, + GLFW_RESIZE_EW_CURSOR, + GLFW_RESIZE_NS_CURSOR, + GLFW_RESIZE_NWSE_CURSOR, + GLFW_RESIZE_NESW_CURSOR, + GLFW_RESIZE_ALL_CURSOR, + GLFW_NOT_ALLOWED_CURSOR + }; + + standard_cursors[i] = glfwCreateStandardCursor(shapes[i]); + } + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + + window = glfwCreateWindow(640, 480, "Cursor Test", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + + vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); + glCompileShader(vertex_shader); + + fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); + glCompileShader(fragment_shader); + + program = glCreateProgram(); + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + + mvp_location = glGetUniformLocation(program, "MVP"); + vpos_location = glGetAttribLocation(program, "vPos"); + + glEnableVertexAttribArray(vpos_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(vec2), (void*) 0); + glUseProgram(program); + + glfwGetCursorPos(window, &cursor_x, &cursor_y); + printf("Cursor position: %f %f\n", cursor_x, cursor_y); + + glfwSetCursorPosCallback(window, cursor_position_callback); + glfwSetKeyCallback(window, key_callback); + + while (!glfwWindowShouldClose(window)) + { + glClear(GL_COLOR_BUFFER_BIT); + + if (track_cursor) + { + int wnd_width, wnd_height, fb_width, fb_height; + float scale; + vec2 vertices[4]; + mat4x4 mvp; + + glfwGetWindowSize(window, &wnd_width, &wnd_height); + glfwGetFramebufferSize(window, &fb_width, &fb_height); + + glViewport(0, 0, fb_width, fb_height); + + scale = (float) fb_width / (float) wnd_width; + vertices[0][0] = 0.5f; + vertices[0][1] = (float) (fb_height - floor(cursor_y * scale) - 1.f + 0.5f); + vertices[1][0] = (float) fb_width + 0.5f; + vertices[1][1] = (float) (fb_height - floor(cursor_y * scale) - 1.f + 0.5f); + vertices[2][0] = (float) floor(cursor_x * scale) + 0.5f; + vertices[2][1] = 0.5f; + vertices[3][0] = (float) floor(cursor_x * scale) + 0.5f; + vertices[3][1] = (float) fb_height + 0.5f; + + glBufferData(GL_ARRAY_BUFFER, + sizeof(vertices), + vertices, + GL_STREAM_DRAW); + + mat4x4_ortho(mvp, 0.f, (float) fb_width, 0.f, (float) fb_height, 0.f, 1.f); + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp); + + glDrawArrays(GL_LINES, 0, 4); + } + + glfwSwapBuffers(window); + + if (animate_cursor) + { + const int i = (int) (glfwGetTime() * 30.0) % CURSOR_FRAME_COUNT; + if (current_frame != star_cursors[i]) + { + glfwSetCursor(window, star_cursors[i]); + current_frame = star_cursors[i]; + } + } + else + current_frame = NULL; + + if (wait_events) + { + if (animate_cursor) + glfwWaitEventsTimeout(1.0 / 30.0); + else + glfwWaitEvents(); + } + else + glfwPollEvents(); + + // Workaround for an issue with msvcrt and mintty + fflush(stdout); + } + + glfwDestroyWindow(window); + + for (i = 0; i < CURSOR_FRAME_COUNT; i++) + glfwDestroyCursor(star_cursors[i]); + + for (i = 0; i < sizeof(standard_cursors) / sizeof(standard_cursors[0]); i++) + glfwDestroyCursor(standard_cursors[i]); + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/empty.c b/lib/glfw/tests/empty.c new file mode 100644 index 0000000..72caccb --- /dev/null +++ b/lib/glfw/tests/empty.c @@ -0,0 +1,133 @@ +//======================================================================== +// Empty event test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test is intended to verify that posting of empty events works +// +//======================================================================== + +#include "tinycthread.h" + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include + +static volatile int running = GLFW_TRUE; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static int thread_main(void* data) +{ + struct timespec time; + + while (running) + { + clock_gettime(CLOCK_REALTIME, &time); + time.tv_sec += 1; + thrd_sleep(&time, NULL); + + glfwPostEmptyEvent(); + } + + return 0; +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +static float nrand(void) +{ + return (float) rand() / (float) RAND_MAX; +} + +int main(void) +{ + int result; + thrd_t thread; + GLFWwindow* window; + + srand((unsigned int) time(NULL)); + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + window = glfwCreateWindow(640, 480, "Empty Event Test", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSetKeyCallback(window, key_callback); + + if (thrd_create(&thread, thread_main, NULL) != thrd_success) + { + fprintf(stderr, "Failed to create secondary thread\n"); + + glfwTerminate(); + exit(EXIT_FAILURE); + } + + while (running) + { + int width, height; + float r = nrand(), g = nrand(), b = nrand(); + float l = (float) sqrt(r * r + g * g + b * b); + + glfwGetFramebufferSize(window, &width, &height); + + glViewport(0, 0, width, height); + glClearColor(r / l, g / l, b / l, 1.f); + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(window); + + glfwWaitEvents(); + + if (glfwWindowShouldClose(window)) + running = GLFW_FALSE; + } + + glfwHideWindow(window); + thrd_join(thread, &result); + glfwDestroyWindow(window); + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/events.c b/lib/glfw/tests/events.c new file mode 100644 index 0000000..60d4fc8 --- /dev/null +++ b/lib/glfw/tests/events.c @@ -0,0 +1,671 @@ +//======================================================================== +// Event linter (event spewer) +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test hooks every available callback and outputs their arguments +// +// Log messages go to stdout, error messages to stderr +// +// Every event also gets a (sequential) number to aid discussion of logs +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include +#include +#include + +#include "getopt.h" + +// Event index +static unsigned int counter = 0; + +typedef struct +{ + GLFWwindow* window; + int number; + int closeable; +} Slot; + +static void usage(void) +{ + printf("Usage: events [-f] [-h] [-n WINDOWS]\n"); + printf("Options:\n"); + printf(" -f use full screen\n"); + printf(" -h show this help\n"); + printf(" -n the number of windows to create\n"); +} + +static const char* get_key_name(int key) +{ + switch (key) + { + // Printable keys + case GLFW_KEY_A: return "A"; + case GLFW_KEY_B: return "B"; + case GLFW_KEY_C: return "C"; + case GLFW_KEY_D: return "D"; + case GLFW_KEY_E: return "E"; + case GLFW_KEY_F: return "F"; + case GLFW_KEY_G: return "G"; + case GLFW_KEY_H: return "H"; + case GLFW_KEY_I: return "I"; + case GLFW_KEY_J: return "J"; + case GLFW_KEY_K: return "K"; + case GLFW_KEY_L: return "L"; + case GLFW_KEY_M: return "M"; + case GLFW_KEY_N: return "N"; + case GLFW_KEY_O: return "O"; + case GLFW_KEY_P: return "P"; + case GLFW_KEY_Q: return "Q"; + case GLFW_KEY_R: return "R"; + case GLFW_KEY_S: return "S"; + case GLFW_KEY_T: return "T"; + case GLFW_KEY_U: return "U"; + case GLFW_KEY_V: return "V"; + case GLFW_KEY_W: return "W"; + case GLFW_KEY_X: return "X"; + case GLFW_KEY_Y: return "Y"; + case GLFW_KEY_Z: return "Z"; + case GLFW_KEY_1: return "1"; + case GLFW_KEY_2: return "2"; + case GLFW_KEY_3: return "3"; + case GLFW_KEY_4: return "4"; + case GLFW_KEY_5: return "5"; + case GLFW_KEY_6: return "6"; + case GLFW_KEY_7: return "7"; + case GLFW_KEY_8: return "8"; + case GLFW_KEY_9: return "9"; + case GLFW_KEY_0: return "0"; + case GLFW_KEY_SPACE: return "SPACE"; + case GLFW_KEY_MINUS: return "MINUS"; + case GLFW_KEY_EQUAL: return "EQUAL"; + case GLFW_KEY_LEFT_BRACKET: return "LEFT BRACKET"; + case GLFW_KEY_RIGHT_BRACKET: return "RIGHT BRACKET"; + case GLFW_KEY_BACKSLASH: return "BACKSLASH"; + case GLFW_KEY_SEMICOLON: return "SEMICOLON"; + case GLFW_KEY_APOSTROPHE: return "APOSTROPHE"; + case GLFW_KEY_GRAVE_ACCENT: return "GRAVE ACCENT"; + case GLFW_KEY_COMMA: return "COMMA"; + case GLFW_KEY_PERIOD: return "PERIOD"; + case GLFW_KEY_SLASH: return "SLASH"; + case GLFW_KEY_WORLD_1: return "WORLD 1"; + case GLFW_KEY_WORLD_2: return "WORLD 2"; + + // Function keys + case GLFW_KEY_ESCAPE: return "ESCAPE"; + case GLFW_KEY_F1: return "F1"; + case GLFW_KEY_F2: return "F2"; + case GLFW_KEY_F3: return "F3"; + case GLFW_KEY_F4: return "F4"; + case GLFW_KEY_F5: return "F5"; + case GLFW_KEY_F6: return "F6"; + case GLFW_KEY_F7: return "F7"; + case GLFW_KEY_F8: return "F8"; + case GLFW_KEY_F9: return "F9"; + case GLFW_KEY_F10: return "F10"; + case GLFW_KEY_F11: return "F11"; + case GLFW_KEY_F12: return "F12"; + case GLFW_KEY_F13: return "F13"; + case GLFW_KEY_F14: return "F14"; + case GLFW_KEY_F15: return "F15"; + case GLFW_KEY_F16: return "F16"; + case GLFW_KEY_F17: return "F17"; + case GLFW_KEY_F18: return "F18"; + case GLFW_KEY_F19: return "F19"; + case GLFW_KEY_F20: return "F20"; + case GLFW_KEY_F21: return "F21"; + case GLFW_KEY_F22: return "F22"; + case GLFW_KEY_F23: return "F23"; + case GLFW_KEY_F24: return "F24"; + case GLFW_KEY_F25: return "F25"; + case GLFW_KEY_UP: return "UP"; + case GLFW_KEY_DOWN: return "DOWN"; + case GLFW_KEY_LEFT: return "LEFT"; + case GLFW_KEY_RIGHT: return "RIGHT"; + case GLFW_KEY_LEFT_SHIFT: return "LEFT SHIFT"; + case GLFW_KEY_RIGHT_SHIFT: return "RIGHT SHIFT"; + case GLFW_KEY_LEFT_CONTROL: return "LEFT CONTROL"; + case GLFW_KEY_RIGHT_CONTROL: return "RIGHT CONTROL"; + case GLFW_KEY_LEFT_ALT: return "LEFT ALT"; + case GLFW_KEY_RIGHT_ALT: return "RIGHT ALT"; + case GLFW_KEY_TAB: return "TAB"; + case GLFW_KEY_ENTER: return "ENTER"; + case GLFW_KEY_BACKSPACE: return "BACKSPACE"; + case GLFW_KEY_INSERT: return "INSERT"; + case GLFW_KEY_DELETE: return "DELETE"; + case GLFW_KEY_PAGE_UP: return "PAGE UP"; + case GLFW_KEY_PAGE_DOWN: return "PAGE DOWN"; + case GLFW_KEY_HOME: return "HOME"; + case GLFW_KEY_END: return "END"; + case GLFW_KEY_KP_0: return "KEYPAD 0"; + case GLFW_KEY_KP_1: return "KEYPAD 1"; + case GLFW_KEY_KP_2: return "KEYPAD 2"; + case GLFW_KEY_KP_3: return "KEYPAD 3"; + case GLFW_KEY_KP_4: return "KEYPAD 4"; + case GLFW_KEY_KP_5: return "KEYPAD 5"; + case GLFW_KEY_KP_6: return "KEYPAD 6"; + case GLFW_KEY_KP_7: return "KEYPAD 7"; + case GLFW_KEY_KP_8: return "KEYPAD 8"; + case GLFW_KEY_KP_9: return "KEYPAD 9"; + case GLFW_KEY_KP_DIVIDE: return "KEYPAD DIVIDE"; + case GLFW_KEY_KP_MULTIPLY: return "KEYPAD MULTIPLY"; + case GLFW_KEY_KP_SUBTRACT: return "KEYPAD SUBTRACT"; + case GLFW_KEY_KP_ADD: return "KEYPAD ADD"; + case GLFW_KEY_KP_DECIMAL: return "KEYPAD DECIMAL"; + case GLFW_KEY_KP_EQUAL: return "KEYPAD EQUAL"; + case GLFW_KEY_KP_ENTER: return "KEYPAD ENTER"; + case GLFW_KEY_PRINT_SCREEN: return "PRINT SCREEN"; + case GLFW_KEY_NUM_LOCK: return "NUM LOCK"; + case GLFW_KEY_CAPS_LOCK: return "CAPS LOCK"; + case GLFW_KEY_SCROLL_LOCK: return "SCROLL LOCK"; + case GLFW_KEY_PAUSE: return "PAUSE"; + case GLFW_KEY_LEFT_SUPER: return "LEFT SUPER"; + case GLFW_KEY_RIGHT_SUPER: return "RIGHT SUPER"; + case GLFW_KEY_MENU: return "MENU"; + + default: return "UNKNOWN"; + } +} + +static const char* get_action_name(int action) +{ + switch (action) + { + case GLFW_PRESS: + return "pressed"; + case GLFW_RELEASE: + return "released"; + case GLFW_REPEAT: + return "repeated"; + } + + return "caused unknown action"; +} + +static const char* get_button_name(int button) +{ + switch (button) + { + case GLFW_MOUSE_BUTTON_LEFT: + return "left"; + case GLFW_MOUSE_BUTTON_RIGHT: + return "right"; + case GLFW_MOUSE_BUTTON_MIDDLE: + return "middle"; + default: + { + static char name[16]; + snprintf(name, sizeof(name), "%i", button); + return name; + } + } +} + +static const char* get_mods_name(int mods) +{ + static char name[512]; + + if (mods == 0) + return " no mods"; + + name[0] = '\0'; + + if (mods & GLFW_MOD_SHIFT) + strcat(name, " shift"); + if (mods & GLFW_MOD_CONTROL) + strcat(name, " control"); + if (mods & GLFW_MOD_ALT) + strcat(name, " alt"); + if (mods & GLFW_MOD_SUPER) + strcat(name, " super"); + if (mods & GLFW_MOD_CAPS_LOCK) + strcat(name, " capslock-on"); + if (mods & GLFW_MOD_NUM_LOCK) + strcat(name, " numlock-on"); + + return name; +} + +static size_t encode_utf8(char* s, unsigned int ch) +{ + size_t count = 0; + + if (ch < 0x80) + s[count++] = (char) ch; + else if (ch < 0x800) + { + s[count++] = (ch >> 6) | 0xc0; + s[count++] = (ch & 0x3f) | 0x80; + } + else if (ch < 0x10000) + { + s[count++] = (ch >> 12) | 0xe0; + s[count++] = ((ch >> 6) & 0x3f) | 0x80; + s[count++] = (ch & 0x3f) | 0x80; + } + else if (ch < 0x110000) + { + s[count++] = (ch >> 18) | 0xf0; + s[count++] = ((ch >> 12) & 0x3f) | 0x80; + s[count++] = ((ch >> 6) & 0x3f) | 0x80; + s[count++] = (ch & 0x3f) | 0x80; + } + + return count; +} + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void window_pos_callback(GLFWwindow* window, int x, int y) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Window position: %i %i\n", + counter++, slot->number, glfwGetTime(), x, y); +} + +static void window_size_callback(GLFWwindow* window, int width, int height) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Window size: %i %i\n", + counter++, slot->number, glfwGetTime(), width, height); +} + +static void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Framebuffer size: %i %i\n", + counter++, slot->number, glfwGetTime(), width, height); +} + +static void window_content_scale_callback(GLFWwindow* window, float xscale, float yscale) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Window content scale: %0.3f %0.3f\n", + counter++, slot->number, glfwGetTime(), xscale, yscale); +} + +static void window_close_callback(GLFWwindow* window) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Window close\n", + counter++, slot->number, glfwGetTime()); + + if (!slot->closeable) + { + printf("(( closing is disabled, press %s to re-enable )\n", + glfwGetKeyName(GLFW_KEY_C, 0)); + } + + glfwSetWindowShouldClose(window, slot->closeable); +} + +static void window_refresh_callback(GLFWwindow* window) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Window refresh\n", + counter++, slot->number, glfwGetTime()); + + glfwMakeContextCurrent(window); + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(window); +} + +static void window_focus_callback(GLFWwindow* window, int focused) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Window %s\n", + counter++, slot->number, glfwGetTime(), + focused ? "focused" : "defocused"); +} + +static void window_iconify_callback(GLFWwindow* window, int iconified) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Window was %s\n", + counter++, slot->number, glfwGetTime(), + iconified ? "iconified" : "uniconified"); +} + +static void window_maximize_callback(GLFWwindow* window, int maximized) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Window was %s\n", + counter++, slot->number, glfwGetTime(), + maximized ? "maximized" : "unmaximized"); +} + +static void mouse_button_callback(GLFWwindow* window, int button, int action, int mods) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Mouse button %i (%s) (with%s) was %s\n", + counter++, slot->number, glfwGetTime(), button, + get_button_name(button), + get_mods_name(mods), + get_action_name(action)); +} + +static void cursor_position_callback(GLFWwindow* window, double x, double y) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Cursor position: %f %f\n", + counter++, slot->number, glfwGetTime(), x, y); +} + +static void cursor_enter_callback(GLFWwindow* window, int entered) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Cursor %s window\n", + counter++, slot->number, glfwGetTime(), + entered ? "entered" : "left"); +} + +static void scroll_callback(GLFWwindow* window, double x, double y) +{ + Slot* slot = glfwGetWindowUserPointer(window); + printf("%08x to %i at %0.3f: Scroll: %0.3f %0.3f\n", + counter++, slot->number, glfwGetTime(), x, y); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + Slot* slot = glfwGetWindowUserPointer(window); + const char* name = glfwGetKeyName(key, scancode); + + if (name) + { + printf("%08x to %i at %0.3f: Key 0x%04x Scancode 0x%04x (%s) (%s) (with%s) was %s\n", + counter++, slot->number, glfwGetTime(), key, scancode, + get_key_name(key), + name, + get_mods_name(mods), + get_action_name(action)); + } + else + { + printf("%08x to %i at %0.3f: Key 0x%04x Scancode 0x%04x (%s) (with%s) was %s\n", + counter++, slot->number, glfwGetTime(), key, scancode, + get_key_name(key), + get_mods_name(mods), + get_action_name(action)); + } + + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_C: + { + slot->closeable = !slot->closeable; + + printf("(( closing %s ))\n", slot->closeable ? "enabled" : "disabled"); + break; + } + + case GLFW_KEY_L: + { + const int state = glfwGetInputMode(window, GLFW_LOCK_KEY_MODS); + glfwSetInputMode(window, GLFW_LOCK_KEY_MODS, !state); + + printf("(( lock key mods %s ))\n", !state ? "enabled" : "disabled"); + break; + } + } +} + +static void char_callback(GLFWwindow* window, unsigned int codepoint) +{ + Slot* slot = glfwGetWindowUserPointer(window); + char string[5] = ""; + + encode_utf8(string, codepoint); + printf("%08x to %i at %0.3f: Character 0x%08x (%s) input\n", + counter++, slot->number, glfwGetTime(), codepoint, string); +} + +static void drop_callback(GLFWwindow* window, int count, const char* paths[]) +{ + int i; + Slot* slot = glfwGetWindowUserPointer(window); + + printf("%08x to %i at %0.3f: Drop input\n", + counter++, slot->number, glfwGetTime()); + + for (i = 0; i < count; i++) + printf(" %i: \"%s\"\n", i, paths[i]); +} + +static void monitor_callback(GLFWmonitor* monitor, int event) +{ + if (event == GLFW_CONNECTED) + { + int x, y, widthMM, heightMM; + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + + glfwGetMonitorPos(monitor, &x, &y); + glfwGetMonitorPhysicalSize(monitor, &widthMM, &heightMM); + + printf("%08x at %0.3f: Monitor %s (%ix%i at %ix%i, %ix%i mm) was connected\n", + counter++, + glfwGetTime(), + glfwGetMonitorName(monitor), + mode->width, mode->height, + x, y, + widthMM, heightMM); + } + else if (event == GLFW_DISCONNECTED) + { + printf("%08x at %0.3f: Monitor %s was disconnected\n", + counter++, + glfwGetTime(), + glfwGetMonitorName(monitor)); + } +} + +static void joystick_callback(int jid, int event) +{ + if (event == GLFW_CONNECTED) + { + int axisCount, buttonCount, hatCount; + + glfwGetJoystickAxes(jid, &axisCount); + glfwGetJoystickButtons(jid, &buttonCount); + glfwGetJoystickHats(jid, &hatCount); + + printf("%08x at %0.3f: Joystick %i (%s) was connected with %i axes, %i buttons, and %i hats\n", + counter++, glfwGetTime(), + jid, + glfwGetJoystickName(jid), + axisCount, + buttonCount, + hatCount); + + if (glfwJoystickIsGamepad(jid)) + { + printf(" Joystick %i (%s) has a gamepad mapping (%s)\n", + jid, + glfwGetJoystickGUID(jid), + glfwGetGamepadName(jid)); + } + else + { + printf(" Joystick %i (%s) has no gamepad mapping\n", + jid, + glfwGetJoystickGUID(jid)); + } + } + else + { + printf("%08x at %0.3f: Joystick %i was disconnected\n", + counter++, glfwGetTime(), jid); + } +} + +int main(int argc, char** argv) +{ + Slot* slots; + GLFWmonitor* monitor = NULL; + int ch, i, width, height, count = 1; + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + printf("Library initialized\n"); + + glfwSetMonitorCallback(monitor_callback); + glfwSetJoystickCallback(joystick_callback); + + while ((ch = getopt(argc, argv, "hfn:")) != -1) + { + switch (ch) + { + case 'h': + usage(); + exit(EXIT_SUCCESS); + + case 'f': + monitor = glfwGetPrimaryMonitor(); + break; + + case 'n': + count = (int) strtoul(optarg, NULL, 10); + break; + + default: + usage(); + exit(EXIT_FAILURE); + } + } + + if (monitor) + { + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + + glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate); + glfwWindowHint(GLFW_RED_BITS, mode->redBits); + glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits); + glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits); + + width = mode->width; + height = mode->height; + } + else + { + width = 640; + height = 480; + } + + slots = calloc(count, sizeof(Slot)); + + for (i = 0; i < count; i++) + { + char title[128]; + + slots[i].closeable = GLFW_TRUE; + slots[i].number = i + 1; + + snprintf(title, sizeof(title), "Event Linter (Window %i)", slots[i].number); + + if (monitor) + { + printf("Creating full screen window %i (%ix%i on %s)\n", + slots[i].number, + width, height, + glfwGetMonitorName(monitor)); + } + else + { + printf("Creating windowed mode window %i (%ix%i)\n", + slots[i].number, + width, height); + } + + slots[i].window = glfwCreateWindow(width, height, title, monitor, NULL); + if (!slots[i].window) + { + free(slots); + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwSetWindowUserPointer(slots[i].window, slots + i); + + glfwSetWindowPosCallback(slots[i].window, window_pos_callback); + glfwSetWindowSizeCallback(slots[i].window, window_size_callback); + glfwSetFramebufferSizeCallback(slots[i].window, framebuffer_size_callback); + glfwSetWindowContentScaleCallback(slots[i].window, window_content_scale_callback); + glfwSetWindowCloseCallback(slots[i].window, window_close_callback); + glfwSetWindowRefreshCallback(slots[i].window, window_refresh_callback); + glfwSetWindowFocusCallback(slots[i].window, window_focus_callback); + glfwSetWindowIconifyCallback(slots[i].window, window_iconify_callback); + glfwSetWindowMaximizeCallback(slots[i].window, window_maximize_callback); + glfwSetMouseButtonCallback(slots[i].window, mouse_button_callback); + glfwSetCursorPosCallback(slots[i].window, cursor_position_callback); + glfwSetCursorEnterCallback(slots[i].window, cursor_enter_callback); + glfwSetScrollCallback(slots[i].window, scroll_callback); + glfwSetKeyCallback(slots[i].window, key_callback); + glfwSetCharCallback(slots[i].window, char_callback); + glfwSetDropCallback(slots[i].window, drop_callback); + + glfwMakeContextCurrent(slots[i].window); + gladLoadGL(glfwGetProcAddress); + glfwSwapBuffers(slots[i].window); + } + + printf("Main loop starting\n"); + + for (;;) + { + for (i = 0; i < count; i++) + { + if (glfwWindowShouldClose(slots[i].window)) + break; + } + + if (i < count) + break; + + glfwWaitEvents(); + + // Workaround for an issue with msvcrt and mintty + fflush(stdout); + } + + free(slots); + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/gamma.c b/lib/glfw/tests/gamma.c new file mode 100644 index 0000000..d1f6dc2 --- /dev/null +++ b/lib/glfw/tests/gamma.c @@ -0,0 +1,187 @@ +//======================================================================== +// Gamma correction test program +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This program is used to test the gamma correction functionality for +// both full screen and windowed mode windows +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#define NK_IMPLEMENTATION +#define NK_INCLUDE_FIXED_TYPES +#define NK_INCLUDE_FONT_BAKING +#define NK_INCLUDE_DEFAULT_FONT +#define NK_INCLUDE_DEFAULT_ALLOCATOR +#define NK_INCLUDE_VERTEX_BUFFER_OUTPUT +#define NK_INCLUDE_STANDARD_VARARGS +#define NK_BUTTON_TRIGGER_ON_RELEASE +#include + +#define NK_GLFW_GL2_IMPLEMENTATION +#include + +#include +#include +#include + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action == GLFW_PRESS && key == GLFW_KEY_ESCAPE) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +static void chart_ramp_array(struct nk_context* nk, + struct nk_color color, + int count, unsigned short int* values) +{ + if (nk_chart_begin_colored(nk, NK_CHART_LINES, + color, nk_rgb(255, 255, 255), + count, 0, 65535)) + { + int i; + for (i = 0; i < count; i++) + { + char buffer[1024]; + if (nk_chart_push(nk, values[i])) + { + snprintf(buffer, sizeof(buffer), "#%u: %u (%0.5f) ", + i, values[i], values[i] / 65535.f); + nk_tooltip(nk, buffer); + } + } + + nk_chart_end(nk); + } +} + +int main(int argc, char** argv) +{ + GLFWmonitor* monitor = NULL; + GLFWwindow* window; + GLFWgammaramp orig_ramp; + struct nk_context* nk; + struct nk_font_atlas* atlas; + float gamma_value = 1.f; + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + monitor = glfwGetPrimaryMonitor(); + + glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); + glfwWindowHint(GLFW_WIN32_KEYBOARD_MENU, GLFW_TRUE); + + window = glfwCreateWindow(800, 400, "Gamma Test", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + { + const GLFWgammaramp* ramp = glfwGetGammaRamp(monitor); + if (!ramp) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + const size_t array_size = ramp->size * sizeof(short); + orig_ramp.size = ramp->size; + orig_ramp.red = malloc(array_size); + orig_ramp.green = malloc(array_size); + orig_ramp.blue = malloc(array_size); + memcpy(orig_ramp.red, ramp->red, array_size); + memcpy(orig_ramp.green, ramp->green, array_size); + memcpy(orig_ramp.blue, ramp->blue, array_size); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + nk = nk_glfw3_init(window, NK_GLFW3_INSTALL_CALLBACKS); + nk_glfw3_font_stash_begin(&atlas); + nk_glfw3_font_stash_end(); + + glfwSetKeyCallback(window, key_callback); + + while (!glfwWindowShouldClose(window)) + { + int width, height; + struct nk_rect area; + + glfwGetWindowSize(window, &width, &height); + area = nk_rect(0.f, 0.f, (float) width, (float) height); + nk_window_set_bounds(nk, "", area); + + glClear(GL_COLOR_BUFFER_BIT); + nk_glfw3_new_frame(); + if (nk_begin(nk, "", area, 0)) + { + const GLFWgammaramp* ramp; + + nk_layout_row_dynamic(nk, 30, 3); + if (nk_slider_float(nk, 0.1f, &gamma_value, 5.f, 0.1f)) + glfwSetGamma(monitor, gamma_value); + nk_labelf(nk, NK_TEXT_LEFT, "%0.1f", gamma_value); + if (nk_button_label(nk, "Revert")) + glfwSetGammaRamp(monitor, &orig_ramp); + + ramp = glfwGetGammaRamp(monitor); + + nk_layout_row_dynamic(nk, height - 60.f, 3); + chart_ramp_array(nk, nk_rgb(255, 0, 0), ramp->size, ramp->red); + chart_ramp_array(nk, nk_rgb(0, 255, 0), ramp->size, ramp->green); + chart_ramp_array(nk, nk_rgb(0, 0, 255), ramp->size, ramp->blue); + } + + nk_end(nk); + nk_glfw3_render(NK_ANTI_ALIASING_ON); + + glfwSwapBuffers(window); + glfwWaitEventsTimeout(1.0); + } + + free(orig_ramp.red); + free(orig_ramp.green); + free(orig_ramp.blue); + + nk_glfw3_shutdown(); + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/glfwinfo.c b/lib/glfw/tests/glfwinfo.c new file mode 100644 index 0000000..eda2f82 --- /dev/null +++ b/lib/glfw/tests/glfwinfo.c @@ -0,0 +1,1101 @@ +//======================================================================== +// Context creation and information tool +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLAD_VULKAN_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include +#include + +#include "getopt.h" + +#ifdef _MSC_VER +#define strcasecmp(x, y) _stricmp(x, y) +#endif + +#define API_NAME_OPENGL "gl" +#define API_NAME_OPENGL_ES "es" + +#define API_NAME_NATIVE "native" +#define API_NAME_EGL "egl" +#define API_NAME_OSMESA "osmesa" + +#define PROFILE_NAME_CORE "core" +#define PROFILE_NAME_COMPAT "compat" + +#define STRATEGY_NAME_NONE "none" +#define STRATEGY_NAME_LOSE "lose" + +#define BEHAVIOR_NAME_NONE "none" +#define BEHAVIOR_NAME_FLUSH "flush" + +#define ANGLE_TYPE_OPENGL "gl" +#define ANGLE_TYPE_OPENGLES "es" +#define ANGLE_TYPE_D3D9 "d3d9" +#define ANGLE_TYPE_D3D11 "d3d11" +#define ANGLE_TYPE_VULKAN "vk" +#define ANGLE_TYPE_METAL "mtl" + +#define PLATFORM_NAME_ANY "any" +#define PLATFORM_NAME_WIN32 "win32" +#define PLATFORM_NAME_COCOA "cooca" +#define PLATFORM_NAME_WL "wayland" +#define PLATFORM_NAME_X11 "x11" +#define PLATFORM_NAME_NULL "null" + +static void usage(void) +{ + printf("Usage: glfwinfo [OPTION]...\n"); + printf("Options:\n"); + printf(" --platform=PLATFORM the platform to use (" + PLATFORM_NAME_ANY " or " + PLATFORM_NAME_WIN32 " or " + PLATFORM_NAME_COCOA " or " + PLATFORM_NAME_X11 " or " + PLATFORM_NAME_WL " or " + PLATFORM_NAME_NULL ")\n"); + printf(" -a, --client-api=API the client API to use (" + API_NAME_OPENGL " or " + API_NAME_OPENGL_ES ")\n"); + printf(" -b, --behavior=BEHAVIOR the release behavior to use (" + BEHAVIOR_NAME_NONE " or " + BEHAVIOR_NAME_FLUSH ")\n"); + printf(" -c, --context-api=API the context creation API to use (" + API_NAME_NATIVE " or " + API_NAME_EGL " or " + API_NAME_OSMESA ")\n"); + printf(" -d, --debug request a debug context\n"); + printf(" -f, --forward require a forward-compatible context\n"); + printf(" -h, --help show this help\n"); + printf(" -l, --list-extensions list all Vulkan and client API extensions\n"); + printf(" --list-layers list all Vulkan layers\n"); + printf(" -m, --major=MAJOR the major number of the required " + "client API version\n"); + printf(" -n, --minor=MINOR the minor number of the required " + "client API version\n"); + printf(" -p, --profile=PROFILE the OpenGL profile to use (" + PROFILE_NAME_CORE " or " + PROFILE_NAME_COMPAT ")\n"); + printf(" -s, --robustness=STRATEGY the robustness strategy to use (" + STRATEGY_NAME_NONE " or " + STRATEGY_NAME_LOSE ")\n"); + printf(" -v, --version print version information\n"); + printf(" --red-bits=N the number of red bits to request\n"); + printf(" --green-bits=N the number of green bits to request\n"); + printf(" --blue-bits=N the number of blue bits to request\n"); + printf(" --alpha-bits=N the number of alpha bits to request\n"); + printf(" --depth-bits=N the number of depth bits to request\n"); + printf(" --stencil-bits=N the number of stencil bits to request\n"); + printf(" --accum-red-bits=N the number of red bits to request\n"); + printf(" --accum-green-bits=N the number of green bits to request\n"); + printf(" --accum-blue-bits=N the number of blue bits to request\n"); + printf(" --accum-alpha-bits=N the number of alpha bits to request\n"); + printf(" --aux-buffers=N the number of aux buffers to request\n"); + printf(" --samples=N the number of MSAA samples to request\n"); + printf(" --stereo request stereo rendering\n"); + printf(" --srgb request an sRGB capable framebuffer\n"); + printf(" --singlebuffer request single-buffering\n"); + printf(" --no-error request a context that does not emit errors\n"); + printf(" --angle-type=TYPE the ANGLE platform type to use (" + ANGLE_TYPE_OPENGL ", " + ANGLE_TYPE_OPENGLES ", " + ANGLE_TYPE_D3D9 ", " + ANGLE_TYPE_D3D11 ", " + ANGLE_TYPE_VULKAN " or " + ANGLE_TYPE_METAL ")\n"); + printf(" --graphics-switching request macOS graphics switching\n"); + printf(" --disable-xcb-surface disable VK_KHR_xcb_surface extension\n"); +} + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static const char* get_platform_name(int platform) +{ + if (platform == GLFW_PLATFORM_WIN32) + return "Win32"; + else if (platform == GLFW_PLATFORM_COCOA) + return "Cocoa"; + else if (platform == GLFW_PLATFORM_WAYLAND) + return "Wayland"; + else if (platform == GLFW_PLATFORM_X11) + return "X11"; + else if (platform == GLFW_PLATFORM_NULL) + return "Null"; + + return "unknown"; +} + +static const char* get_device_type_name(VkPhysicalDeviceType type) +{ + if (type == VK_PHYSICAL_DEVICE_TYPE_OTHER) + return "other"; + else if (type == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU) + return "integrated GPU"; + else if (type == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) + return "discrete GPU"; + else if (type == VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU) + return "virtual GPU"; + else if (type == VK_PHYSICAL_DEVICE_TYPE_CPU) + return "CPU"; + + return "unknown"; +} + +static const char* get_api_name(int api) +{ + if (api == GLFW_OPENGL_API) + return "OpenGL"; + else if (api == GLFW_OPENGL_ES_API) + return "OpenGL ES"; + + return "Unknown API"; +} + +static const char* get_profile_name_gl(GLint mask) +{ + if (mask & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) + return PROFILE_NAME_COMPAT; + if (mask & GL_CONTEXT_CORE_PROFILE_BIT) + return PROFILE_NAME_CORE; + + return "unknown"; +} + +static const char* get_profile_name_glfw(int profile) +{ + if (profile == GLFW_OPENGL_COMPAT_PROFILE) + return PROFILE_NAME_COMPAT; + if (profile == GLFW_OPENGL_CORE_PROFILE) + return PROFILE_NAME_CORE; + + return "unknown"; +} + +static const char* get_strategy_name_gl(GLint strategy) +{ + if (strategy == GL_LOSE_CONTEXT_ON_RESET_ARB) + return STRATEGY_NAME_LOSE; + if (strategy == GL_NO_RESET_NOTIFICATION_ARB) + return STRATEGY_NAME_NONE; + + return "unknown"; +} + +static const char* get_strategy_name_glfw(int strategy) +{ + if (strategy == GLFW_LOSE_CONTEXT_ON_RESET) + return STRATEGY_NAME_LOSE; + if (strategy == GLFW_NO_RESET_NOTIFICATION) + return STRATEGY_NAME_NONE; + + return "unknown"; +} + +static void list_context_extensions(int client, int major, int minor) +{ + printf("%s context extensions:\n", get_api_name(client)); + + if (client == GLFW_OPENGL_API && major > 2) + { + GLint count; + glGetIntegerv(GL_NUM_EXTENSIONS, &count); + + for (int i = 0; i < count; i++) + printf(" %s\n", (const char*) glGetStringi(GL_EXTENSIONS, i)); + } + else + { + const GLubyte* extensions = glGetString(GL_EXTENSIONS); + while (*extensions != '\0') + { + putchar(' '); + + while (*extensions != '\0' && *extensions != ' ') + { + putchar(*extensions); + extensions++; + } + + while (*extensions == ' ') + extensions++; + + putchar('\n'); + } + } +} + +static void list_vulkan_instance_layers(void) +{ + printf("Vulkan instance layers:\n"); + + uint32_t lp_count; + vkEnumerateInstanceLayerProperties(&lp_count, NULL); + VkLayerProperties* lp = calloc(lp_count, sizeof(VkLayerProperties)); + vkEnumerateInstanceLayerProperties(&lp_count, lp); + + for (uint32_t i = 0; i < lp_count; i++) + { + printf(" %s (spec version %u) \"%s\"\n", + lp[i].layerName, + lp[i].specVersion >> 22, + lp[i].description); + } + + free(lp); +} + +static void list_vulkan_device_layers(VkInstance instance, VkPhysicalDevice device) +{ + printf("Vulkan device layers:\n"); + + uint32_t lp_count; + vkEnumerateDeviceLayerProperties(device, &lp_count, NULL); + VkLayerProperties* lp = calloc(lp_count, sizeof(VkLayerProperties)); + vkEnumerateDeviceLayerProperties(device, &lp_count, lp); + + for (uint32_t i = 0; i < lp_count; i++) + { + printf(" %s (spec version %u) \"%s\"\n", + lp[i].layerName, + lp[i].specVersion >> 22, + lp[i].description); + } + + free(lp); +} + +static bool valid_version(void) +{ + int major, minor, revision; + glfwGetVersion(&major, &minor, &revision); + + if (major != GLFW_VERSION_MAJOR) + { + printf("*** ERROR: GLFW major version mismatch! ***\n"); + return false; + } + + if (minor != GLFW_VERSION_MINOR || revision != GLFW_VERSION_REVISION) + printf("*** WARNING: GLFW version mismatch! ***\n"); + + return true; +} + +static void print_version(void) +{ + int major, minor, revision; + glfwGetVersion(&major, &minor, &revision); + + printf("GLFW header version: %u.%u.%u\n", + GLFW_VERSION_MAJOR, + GLFW_VERSION_MINOR, + GLFW_VERSION_REVISION); + printf("GLFW library version: %u.%u.%u\n", major, minor, revision); + printf("GLFW library version string: \"%s\"\n", glfwGetVersionString()); +} + +static void print_platform(void) +{ + const int platforms[] = + { + GLFW_PLATFORM_WIN32, + GLFW_PLATFORM_COCOA, + GLFW_PLATFORM_WAYLAND, + GLFW_PLATFORM_X11, + GLFW_PLATFORM_NULL + }; + + printf("GLFW platform: %s\n", get_platform_name(glfwGetPlatform())); + printf("GLFW supported platforms:\n"); + + for (size_t i = 0; i < sizeof(platforms) / sizeof(platforms[0]); i++) + { + if (glfwPlatformSupported(platforms[i])) + printf(" %s\n", get_platform_name(platforms[i])); + } +} + +int main(int argc, char** argv) +{ + int ch; + bool list_extensions = false, list_layers = false; + + // These duplicate the defaults for each hint + int platform = GLFW_ANY_PLATFORM; + int client_api = GLFW_OPENGL_API; + int context_major = 1; + int context_minor = 0; + int context_release = GLFW_ANY_RELEASE_BEHAVIOR; + int context_creation_api = GLFW_NATIVE_CONTEXT_API; + int context_robustness = GLFW_NO_ROBUSTNESS; + bool context_debug = false; + bool context_no_error = false; + bool opengl_forward = false; + int opengl_profile = GLFW_OPENGL_ANY_PROFILE; + int fb_red_bits = 8; + int fb_green_bits = 8; + int fb_blue_bits = 8; + int fb_alpha_bits = 8; + int fb_depth_bits = 24; + int fb_stencil_bits = 8; + int fb_accum_red_bits = 0; + int fb_accum_green_bits = 0; + int fb_accum_blue_bits = 0; + int fb_accum_alpha_bits = 0; + int fb_aux_buffers = 0; + int fb_samples = 0; + bool fb_stereo = false; + bool fb_srgb = false; + bool fb_doublebuffer = true; + int angle_type = GLFW_ANGLE_PLATFORM_TYPE_NONE; + bool cocoa_graphics_switching = false; + bool disable_xcb_surface = false; + + enum { PLATFORM, CLIENT, CONTEXT, BEHAVIOR, DEBUG_CONTEXT, FORWARD, HELP, + EXTENSIONS, LAYERS, + MAJOR, MINOR, PROFILE, ROBUSTNESS, VERSION, + REDBITS, GREENBITS, BLUEBITS, ALPHABITS, DEPTHBITS, STENCILBITS, + ACCUMREDBITS, ACCUMGREENBITS, ACCUMBLUEBITS, ACCUMALPHABITS, + AUXBUFFERS, SAMPLES, STEREO, SRGB, SINGLEBUFFER, NOERROR_SRSLY, + ANGLE_TYPE, GRAPHICS_SWITCHING, XCB_SURFACE }; + const struct option options[] = + { + { "platform", 1, NULL, PLATFORM }, + { "behavior", 1, NULL, BEHAVIOR }, + { "client-api", 1, NULL, CLIENT }, + { "context-api", 1, NULL, CONTEXT }, + { "debug", 0, NULL, DEBUG_CONTEXT }, + { "forward", 0, NULL, FORWARD }, + { "help", 0, NULL, HELP }, + { "list-extensions", 0, NULL, EXTENSIONS }, + { "list-layers", 0, NULL, LAYERS }, + { "major", 1, NULL, MAJOR }, + { "minor", 1, NULL, MINOR }, + { "profile", 1, NULL, PROFILE }, + { "robustness", 1, NULL, ROBUSTNESS }, + { "version", 0, NULL, VERSION }, + { "red-bits", 1, NULL, REDBITS }, + { "green-bits", 1, NULL, GREENBITS }, + { "blue-bits", 1, NULL, BLUEBITS }, + { "alpha-bits", 1, NULL, ALPHABITS }, + { "depth-bits", 1, NULL, DEPTHBITS }, + { "stencil-bits", 1, NULL, STENCILBITS }, + { "accum-red-bits", 1, NULL, ACCUMREDBITS }, + { "accum-green-bits", 1, NULL, ACCUMGREENBITS }, + { "accum-blue-bits", 1, NULL, ACCUMBLUEBITS }, + { "accum-alpha-bits", 1, NULL, ACCUMALPHABITS }, + { "aux-buffers", 1, NULL, AUXBUFFERS }, + { "samples", 1, NULL, SAMPLES }, + { "stereo", 0, NULL, STEREO }, + { "srgb", 0, NULL, SRGB }, + { "singlebuffer", 0, NULL, SINGLEBUFFER }, + { "no-error", 0, NULL, NOERROR_SRSLY }, + { "angle-type", 1, NULL, ANGLE_TYPE }, + { "graphics-switching", 0, NULL, GRAPHICS_SWITCHING }, + { "vk-xcb-surface", 0, NULL, XCB_SURFACE }, + { NULL, 0, NULL, 0 } + }; + + while ((ch = getopt_long(argc, argv, "a:b:c:dfhlm:n:p:s:v", options, NULL)) != -1) + { + switch (ch) + { + case PLATFORM: + if (strcasecmp(optarg, PLATFORM_NAME_ANY) == 0) + platform = GLFW_ANY_PLATFORM; + else if (strcasecmp(optarg, PLATFORM_NAME_WIN32) == 0) + platform = GLFW_PLATFORM_WIN32; + else if (strcasecmp(optarg, PLATFORM_NAME_COCOA) == 0) + platform = GLFW_PLATFORM_COCOA; + else if (strcasecmp(optarg, PLATFORM_NAME_WL) == 0) + platform = GLFW_PLATFORM_WAYLAND; + else if (strcasecmp(optarg, PLATFORM_NAME_X11) == 0) + platform = GLFW_PLATFORM_X11; + else if (strcasecmp(optarg, PLATFORM_NAME_NULL) == 0) + platform = GLFW_PLATFORM_NULL; + else + { + usage(); + exit(EXIT_FAILURE); + } + break; + case 'a': + case CLIENT: + if (strcasecmp(optarg, API_NAME_OPENGL) == 0) + client_api = GLFW_OPENGL_API; + else if (strcasecmp(optarg, API_NAME_OPENGL_ES) == 0) + client_api = GLFW_OPENGL_ES_API; + else + { + usage(); + exit(EXIT_FAILURE); + } + break; + case 'b': + case BEHAVIOR: + if (strcasecmp(optarg, BEHAVIOR_NAME_NONE) == 0) + context_release = GLFW_RELEASE_BEHAVIOR_NONE; + else if (strcasecmp(optarg, BEHAVIOR_NAME_FLUSH) == 0) + context_release = GLFW_RELEASE_BEHAVIOR_FLUSH; + else + { + usage(); + exit(EXIT_FAILURE); + } + break; + case 'c': + case CONTEXT: + if (strcasecmp(optarg, API_NAME_NATIVE) == 0) + context_creation_api = GLFW_NATIVE_CONTEXT_API; + else if (strcasecmp(optarg, API_NAME_EGL) == 0) + context_creation_api = GLFW_EGL_CONTEXT_API; + else if (strcasecmp(optarg, API_NAME_OSMESA) == 0) + context_creation_api = GLFW_OSMESA_CONTEXT_API; + else + { + usage(); + exit(EXIT_FAILURE); + } + break; + case 'd': + case DEBUG_CONTEXT: + context_debug = true; + break; + case 'f': + case FORWARD: + opengl_forward = true; + break; + case 'h': + case HELP: + usage(); + exit(EXIT_SUCCESS); + case 'l': + case EXTENSIONS: + list_extensions = true; + break; + case LAYERS: + list_layers = true; + break; + case 'm': + case MAJOR: + context_major = atoi(optarg); + break; + case 'n': + case MINOR: + context_minor = atoi(optarg); + break; + case 'p': + case PROFILE: + if (strcasecmp(optarg, PROFILE_NAME_CORE) == 0) + opengl_profile = GLFW_OPENGL_CORE_PROFILE; + else if (strcasecmp(optarg, PROFILE_NAME_COMPAT) == 0) + opengl_profile = GLFW_OPENGL_COMPAT_PROFILE; + else + { + usage(); + exit(EXIT_FAILURE); + } + break; + case 's': + case ROBUSTNESS: + if (strcasecmp(optarg, STRATEGY_NAME_NONE) == 0) + context_robustness = GLFW_NO_RESET_NOTIFICATION; + else if (strcasecmp(optarg, STRATEGY_NAME_LOSE) == 0) + context_robustness = GLFW_LOSE_CONTEXT_ON_RESET; + else + { + usage(); + exit(EXIT_FAILURE); + } + break; + case 'v': + case VERSION: + print_version(); + exit(EXIT_SUCCESS); + case REDBITS: + if (strcmp(optarg, "-") == 0) + fb_red_bits = GLFW_DONT_CARE; + else + fb_red_bits = atoi(optarg); + break; + case GREENBITS: + if (strcmp(optarg, "-") == 0) + fb_green_bits = GLFW_DONT_CARE; + else + fb_green_bits = atoi(optarg); + break; + case BLUEBITS: + if (strcmp(optarg, "-") == 0) + fb_blue_bits = GLFW_DONT_CARE; + else + fb_blue_bits = atoi(optarg); + break; + case ALPHABITS: + if (strcmp(optarg, "-") == 0) + fb_alpha_bits = GLFW_DONT_CARE; + else + fb_alpha_bits = atoi(optarg); + break; + case DEPTHBITS: + if (strcmp(optarg, "-") == 0) + fb_depth_bits = GLFW_DONT_CARE; + else + fb_depth_bits = atoi(optarg); + break; + case STENCILBITS: + if (strcmp(optarg, "-") == 0) + fb_stencil_bits = GLFW_DONT_CARE; + else + fb_stencil_bits = atoi(optarg); + break; + case ACCUMREDBITS: + if (strcmp(optarg, "-") == 0) + fb_accum_red_bits = GLFW_DONT_CARE; + else + fb_accum_red_bits = atoi(optarg); + break; + case ACCUMGREENBITS: + if (strcmp(optarg, "-") == 0) + fb_accum_green_bits = GLFW_DONT_CARE; + else + fb_accum_green_bits = atoi(optarg); + break; + case ACCUMBLUEBITS: + if (strcmp(optarg, "-") == 0) + fb_accum_blue_bits = GLFW_DONT_CARE; + else + fb_accum_blue_bits = atoi(optarg); + break; + case ACCUMALPHABITS: + if (strcmp(optarg, "-") == 0) + fb_accum_alpha_bits = GLFW_DONT_CARE; + else + fb_accum_alpha_bits = atoi(optarg); + break; + case AUXBUFFERS: + if (strcmp(optarg, "-") == 0) + fb_aux_buffers = GLFW_DONT_CARE; + else + fb_aux_buffers = atoi(optarg); + break; + case SAMPLES: + if (strcmp(optarg, "-") == 0) + fb_samples = GLFW_DONT_CARE; + else + fb_samples = atoi(optarg); + break; + case STEREO: + fb_stereo = true; + break; + case SRGB: + fb_srgb = true; + break; + case SINGLEBUFFER: + fb_doublebuffer = false; + break; + case NOERROR_SRSLY: + context_no_error = true; + break; + case ANGLE_TYPE: + if (strcmp(optarg, ANGLE_TYPE_OPENGL) == 0) + angle_type = GLFW_ANGLE_PLATFORM_TYPE_OPENGL; + else if (strcmp(optarg, ANGLE_TYPE_OPENGLES) == 0) + angle_type = GLFW_ANGLE_PLATFORM_TYPE_OPENGLES; + else if (strcmp(optarg, ANGLE_TYPE_D3D9) == 0) + angle_type = GLFW_ANGLE_PLATFORM_TYPE_D3D9; + else if (strcmp(optarg, ANGLE_TYPE_D3D11) == 0) + angle_type = GLFW_ANGLE_PLATFORM_TYPE_D3D11; + else if (strcmp(optarg, ANGLE_TYPE_VULKAN) == 0) + angle_type = GLFW_ANGLE_PLATFORM_TYPE_VULKAN; + else if (strcmp(optarg, ANGLE_TYPE_METAL) == 0) + angle_type = GLFW_ANGLE_PLATFORM_TYPE_METAL; + else + { + usage(); + exit(EXIT_FAILURE); + } + break; + case GRAPHICS_SWITCHING: + cocoa_graphics_switching = true; + break; + case XCB_SURFACE: + disable_xcb_surface = true; + break; + default: + usage(); + exit(EXIT_FAILURE); + } + } + + // Initialize GLFW and create window + + if (!valid_version()) + exit(EXIT_FAILURE); + + glfwSetErrorCallback(error_callback); + + glfwInitHint(GLFW_PLATFORM, platform); + + glfwInitHint(GLFW_COCOA_MENUBAR, false); + + glfwInitHint(GLFW_ANGLE_PLATFORM_TYPE, angle_type); + glfwInitHint(GLFW_X11_XCB_VULKAN_SURFACE, !disable_xcb_surface); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + print_version(); + print_platform(); + + glfwWindowHint(GLFW_VISIBLE, false); + + glfwWindowHint(GLFW_CLIENT_API, client_api); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, context_major); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, context_minor); + glfwWindowHint(GLFW_CONTEXT_RELEASE_BEHAVIOR, context_release); + glfwWindowHint(GLFW_CONTEXT_CREATION_API, context_creation_api); + glfwWindowHint(GLFW_CONTEXT_ROBUSTNESS, context_robustness); + glfwWindowHint(GLFW_CONTEXT_DEBUG, context_debug); + glfwWindowHint(GLFW_CONTEXT_NO_ERROR, context_no_error); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, opengl_forward); + glfwWindowHint(GLFW_OPENGL_PROFILE, opengl_profile); + + glfwWindowHint(GLFW_RED_BITS, fb_red_bits); + glfwWindowHint(GLFW_BLUE_BITS, fb_blue_bits); + glfwWindowHint(GLFW_GREEN_BITS, fb_green_bits); + glfwWindowHint(GLFW_ALPHA_BITS, fb_alpha_bits); + glfwWindowHint(GLFW_DEPTH_BITS, fb_depth_bits); + glfwWindowHint(GLFW_STENCIL_BITS, fb_stencil_bits); + glfwWindowHint(GLFW_ACCUM_RED_BITS, fb_accum_red_bits); + glfwWindowHint(GLFW_ACCUM_GREEN_BITS, fb_accum_green_bits); + glfwWindowHint(GLFW_ACCUM_BLUE_BITS, fb_accum_blue_bits); + glfwWindowHint(GLFW_ACCUM_ALPHA_BITS, fb_accum_alpha_bits); + glfwWindowHint(GLFW_AUX_BUFFERS, fb_aux_buffers); + glfwWindowHint(GLFW_SAMPLES, fb_samples); + glfwWindowHint(GLFW_STEREO, fb_stereo); + glfwWindowHint(GLFW_SRGB_CAPABLE, fb_srgb); + glfwWindowHint(GLFW_DOUBLEBUFFER, fb_doublebuffer); + + glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, cocoa_graphics_switching); + + GLFWwindow* window = glfwCreateWindow(200, 200, "Version", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + + const GLenum error = glGetError(); + if (error != GL_NO_ERROR) + printf("*** OpenGL error after make current: 0x%08x ***\n", error); + + // Report client API version + + const int client = glfwGetWindowAttrib(window, GLFW_CLIENT_API); + const int major = glfwGetWindowAttrib(window, GLFW_CONTEXT_VERSION_MAJOR); + const int minor = glfwGetWindowAttrib(window, GLFW_CONTEXT_VERSION_MINOR); + const int revision = glfwGetWindowAttrib(window, GLFW_CONTEXT_REVISION); + const int profile = glfwGetWindowAttrib(window, GLFW_OPENGL_PROFILE); + + printf("%s context version string: \"%s\"\n", + get_api_name(client), + glGetString(GL_VERSION)); + + printf("%s context version parsed by GLFW: %u.%u.%u\n", + get_api_name(client), + major, minor, revision); + + // Report client API context properties + + if (client == GLFW_OPENGL_API) + { + if (major >= 3) + { + GLint flags; + + glGetIntegerv(GL_CONTEXT_FLAGS, &flags); + printf("%s context flags (0x%08x):", get_api_name(client), flags); + + if (flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT) + printf(" forward-compatible"); + if (flags & 2/*GL_CONTEXT_FLAG_DEBUG_BIT*/) + printf(" debug"); + if (flags & GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB) + printf(" robustness"); + if (flags & 8/*GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR*/) + printf(" no-error"); + putchar('\n'); + + printf("%s context flags parsed by GLFW:", get_api_name(client)); + + if (glfwGetWindowAttrib(window, GLFW_OPENGL_FORWARD_COMPAT)) + printf(" forward-compatible"); + if (glfwGetWindowAttrib(window, GLFW_CONTEXT_DEBUG)) + printf(" debug"); + if (glfwGetWindowAttrib(window, GLFW_CONTEXT_ROBUSTNESS) == GLFW_LOSE_CONTEXT_ON_RESET) + printf(" robustness"); + if (glfwGetWindowAttrib(window, GLFW_CONTEXT_NO_ERROR)) + printf(" no-error"); + putchar('\n'); + } + + if (major >= 4 || (major == 3 && minor >= 2)) + { + GLint mask; + glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask); + + printf("%s profile mask (0x%08x): %s\n", + get_api_name(client), + mask, + get_profile_name_gl(mask)); + + printf("%s profile mask parsed by GLFW: %s\n", + get_api_name(client), + get_profile_name_glfw(profile)); + } + + if (GLAD_GL_ARB_robustness) + { + const int robustness = glfwGetWindowAttrib(window, GLFW_CONTEXT_ROBUSTNESS); + GLint strategy; + glGetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB, &strategy); + + printf("%s robustness strategy (0x%08x): %s\n", + get_api_name(client), + strategy, + get_strategy_name_gl(strategy)); + + printf("%s robustness strategy parsed by GLFW: %s\n", + get_api_name(client), + get_strategy_name_glfw(robustness)); + } + } + + printf("%s context renderer string: \"%s\"\n", + get_api_name(client), + glGetString(GL_RENDERER)); + printf("%s context vendor string: \"%s\"\n", + get_api_name(client), + glGetString(GL_VENDOR)); + + if (major >= 2) + { + printf("%s context shading language version: \"%s\"\n", + get_api_name(client), + glGetString(GL_SHADING_LANGUAGE_VERSION)); + } + + printf("%s framebuffer:\n", get_api_name(client)); + + GLint redbits, greenbits, bluebits, alphabits, depthbits, stencilbits; + + if (client == GLFW_OPENGL_API && profile == GLFW_OPENGL_CORE_PROFILE) + { + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, + GL_BACK_LEFT, + GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, + &redbits); + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, + GL_BACK_LEFT, + GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, + &greenbits); + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, + GL_BACK_LEFT, + GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, + &bluebits); + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, + GL_BACK_LEFT, + GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, + &alphabits); + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, + GL_DEPTH, + GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, + &depthbits); + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, + GL_STENCIL, + GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, + &stencilbits); + } + else + { + glGetIntegerv(GL_RED_BITS, &redbits); + glGetIntegerv(GL_GREEN_BITS, &greenbits); + glGetIntegerv(GL_BLUE_BITS, &bluebits); + glGetIntegerv(GL_ALPHA_BITS, &alphabits); + glGetIntegerv(GL_DEPTH_BITS, &depthbits); + glGetIntegerv(GL_STENCIL_BITS, &stencilbits); + } + + printf(" red: %u green: %u blue: %u alpha: %u depth: %u stencil: %u\n", + redbits, greenbits, bluebits, alphabits, depthbits, stencilbits); + + if (client == GLFW_OPENGL_ES_API || + GLAD_GL_ARB_multisample || + major > 1 || minor >= 3) + { + GLint samples, samplebuffers; + glGetIntegerv(GL_SAMPLES, &samples); + glGetIntegerv(GL_SAMPLE_BUFFERS, &samplebuffers); + + printf(" samples: %u sample buffers: %u\n", samples, samplebuffers); + } + + if (client == GLFW_OPENGL_API && profile != GLFW_OPENGL_CORE_PROFILE) + { + GLint accumredbits, accumgreenbits, accumbluebits, accumalphabits; + GLint auxbuffers; + + glGetIntegerv(GL_ACCUM_RED_BITS, &accumredbits); + glGetIntegerv(GL_ACCUM_GREEN_BITS, &accumgreenbits); + glGetIntegerv(GL_ACCUM_BLUE_BITS, &accumbluebits); + glGetIntegerv(GL_ACCUM_ALPHA_BITS, &accumalphabits); + glGetIntegerv(GL_AUX_BUFFERS, &auxbuffers); + + printf(" accum red: %u accum green: %u accum blue: %u accum alpha: %u aux buffers: %u\n", + accumredbits, accumgreenbits, accumbluebits, accumalphabits, auxbuffers); + } + + if (list_extensions) + list_context_extensions(client, major, minor); + + glfwDestroyWindow(window); + + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + + window = glfwCreateWindow(200, 200, "Version", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + printf("Vulkan loader: %s\n", + glfwVulkanSupported() ? "available" : "missing"); + + if (glfwVulkanSupported()) + { + gladLoadVulkanUserPtr(NULL, (GLADuserptrloadfunc) glfwGetInstanceProcAddress, NULL); + + uint32_t loader_version = VK_API_VERSION_1_0; + + if (vkEnumerateInstanceVersion) + { + uint32_t version; + if (vkEnumerateInstanceVersion(&version) == VK_SUCCESS) + loader_version = version; + } + + printf("Vulkan loader API version: %i.%i\n", + VK_VERSION_MAJOR(loader_version), + VK_VERSION_MINOR(loader_version)); + + uint32_t glfw_re_count; + const char** glfw_re = glfwGetRequiredInstanceExtensions(&glfw_re_count); + + uint32_t re_count = glfw_re_count; + const char** re = calloc(glfw_re_count, sizeof(char*)); + + if (glfw_re) + { + printf("Vulkan window surface required instance extensions:\n"); + for (uint32_t i = 0; i < glfw_re_count; i++) + { + printf(" %s\n", glfw_re[i]); + re[i] = glfw_re[i]; + } + } + else + printf("Vulkan window surface extensions missing\n"); + + uint32_t ep_count; + vkEnumerateInstanceExtensionProperties(NULL, &ep_count, NULL); + VkExtensionProperties* ep = calloc(ep_count, sizeof(VkExtensionProperties)); + vkEnumerateInstanceExtensionProperties(NULL, &ep_count, ep); + + if (list_extensions) + { + printf("Vulkan instance extensions:\n"); + + for (uint32_t i = 0; i < ep_count; i++) + printf(" %s (spec version %u)\n", ep[i].extensionName, ep[i].specVersion); + } + + bool portability_enumeration = false; + + for (uint32_t i = 0; i < ep_count; i++) + { + if (strcmp(ep[i].extensionName, "VK_KHR_portability_enumeration") != 0) + continue; + + re_count++; + re = realloc((void*) re, sizeof(char*) * re_count); + re[re_count - 1] = "VK_KHR_portability_enumeration"; + portability_enumeration = true; + } + + free(ep); + + if (list_layers) + list_vulkan_instance_layers(); + + VkApplicationInfo ai = { VK_STRUCTURE_TYPE_APPLICATION_INFO }; + ai.pApplicationName = "glfwinfo"; + ai.applicationVersion = VK_MAKE_VERSION(GLFW_VERSION_MAJOR, + GLFW_VERSION_MINOR, + GLFW_VERSION_REVISION); + + if (loader_version >= VK_API_VERSION_1_1) + ai.apiVersion = VK_API_VERSION_1_1; + else + ai.apiVersion = VK_API_VERSION_1_0; + + VkInstanceCreateInfo ici = { VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO }; + ici.pApplicationInfo = &ai; + ici.enabledExtensionCount = re_count; + ici.ppEnabledExtensionNames = re; + + if (portability_enumeration) + ici.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; + + VkInstance instance = VK_NULL_HANDLE; + + if (vkCreateInstance(&ici, NULL, &instance) != VK_SUCCESS) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + free((void*) re); + + gladLoadVulkanUserPtr(NULL, (GLADuserptrloadfunc) glfwGetInstanceProcAddress, instance); + + if (glfw_re_count) + { + VkSurfaceKHR surface = VK_NULL_HANDLE; + + if (glfwCreateWindowSurface(instance, window, NULL, &surface) == VK_SUCCESS) + { + printf("Vulkan window surface created successfully\n"); + vkDestroySurfaceKHR(instance, surface, NULL); + } + else + printf("Failed to create Vulkan window surface\n"); + } + + uint32_t pd_count; + vkEnumeratePhysicalDevices(instance, &pd_count, NULL); + VkPhysicalDevice* pd = calloc(pd_count, sizeof(VkPhysicalDevice)); + vkEnumeratePhysicalDevices(instance, &pd_count, pd); + + for (uint32_t i = 0; i < pd_count; i++) + { + VkPhysicalDeviceProperties pdp; + vkGetPhysicalDeviceProperties(pd[i], &pdp); + + uint32_t qfp_count; + vkGetPhysicalDeviceQueueFamilyProperties(pd[i], &qfp_count, NULL); + + uint32_t ep_count; + vkEnumerateDeviceExtensionProperties(pd[i], NULL, &ep_count, NULL); + VkExtensionProperties* ep = calloc(ep_count, sizeof(VkExtensionProperties)); + vkEnumerateDeviceExtensionProperties(pd[i], NULL, &ep_count, ep); + + if (portability_enumeration) + { + bool conformant = true; + + for (uint32_t j = 0; j < ep_count; j++) + { + if (strcmp(ep[j].extensionName, "VK_KHR_portability_subset") == 0) + { + conformant = false; + break; + } + } + + printf("Vulkan %s %s device: \"%s\" (API version %i.%i)\n", + conformant ? "conformant" : "non-conformant", + get_device_type_name(pdp.deviceType), + pdp.deviceName, + VK_VERSION_MAJOR(pdp.apiVersion), + VK_VERSION_MINOR(pdp.apiVersion)); + } + else + { + printf("Vulkan %s device: \"%s\" (API version %i.%i)\n", + get_device_type_name(pdp.deviceType), + pdp.deviceName, + VK_VERSION_MAJOR(pdp.apiVersion), + VK_VERSION_MINOR(pdp.apiVersion)); + } + + if (glfw_re_count) + { + printf("Vulkan device queue family presentation support:\n"); + for (uint32_t j = 0; j < qfp_count; j++) + { + printf(" %u: ", j); + if (glfwGetPhysicalDevicePresentationSupport(instance, pd[i], j)) + printf("supported\n"); + else + printf("no\n"); + } + } + + if (list_extensions) + { + printf("Vulkan device extensions:\n"); + for (uint32_t j = 0; j < ep_count; j++) + printf(" %s (spec version %u)\n", ep[j].extensionName, ep[j].specVersion); + } + + free(ep); + + if (list_layers) + list_vulkan_device_layers(instance, pd[i]); + } + + free(pd); + vkDestroyInstance(instance, NULL); + } + + glfwDestroyWindow(window); + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/icon.c b/lib/glfw/tests/icon.c new file mode 100644 index 0000000..d5baf0a --- /dev/null +++ b/lib/glfw/tests/icon.c @@ -0,0 +1,150 @@ +//======================================================================== +// Window icon test program +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This program is used to test the icon feature. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include + +// a simple glfw logo +const char* const logo[] = +{ + "................", + "................", + "...0000..0......", + "...0.....0......", + "...0.00..0......", + "...0..0..0......", + "...0000..0000...", + "................", + "................", + "...000..0...0...", + "...0....0...0...", + "...000..0.0.0...", + "...0....0.0.0...", + "...0....00000...", + "................", + "................" +}; + +const unsigned char icon_colors[5][4] = +{ + { 0, 0, 0, 255 }, // black + { 255, 0, 0, 255 }, // red + { 0, 255, 0, 255 }, // green + { 0, 0, 255, 255 }, // blue + { 255, 255, 255, 255 } // white +}; + +static int cur_icon_color = 0; + +static void set_icon(GLFWwindow* window, int icon_color) +{ + int x, y; + unsigned char pixels[16 * 16 * 4]; + unsigned char* target = pixels; + GLFWimage img = { 16, 16, pixels }; + + for (y = 0; y < img.width; y++) + { + for (x = 0; x < img.height; x++) + { + if (logo[y][x] == '0') + memcpy(target, icon_colors[icon_color], 4); + else + memset(target, 0, 4); + + target += 4; + } + } + + glfwSetWindowIcon(window, 1, &img); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + case GLFW_KEY_SPACE: + cur_icon_color = (cur_icon_color + 1) % 5; + set_icon(window, cur_icon_color); + break; + case GLFW_KEY_X: + glfwSetWindowIcon(window, 0, NULL); + break; + } +} + +int main(int argc, char** argv) +{ + GLFWwindow* window; + + if (!glfwInit()) + { + fprintf(stderr, "Failed to initialize GLFW\n"); + exit(EXIT_FAILURE); + } + + window = glfwCreateWindow(200, 200, "Window Icon", NULL, NULL); + if (!window) + { + glfwTerminate(); + + fprintf(stderr, "Failed to open GLFW window\n"); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + + glfwSetKeyCallback(window, key_callback); + set_icon(window, cur_icon_color); + + while (!glfwWindowShouldClose(window)) + { + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(window); + glfwWaitEvents(); + } + + glfwDestroyWindow(window); + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/iconify.c b/lib/glfw/tests/iconify.c new file mode 100644 index 0000000..32fd44f --- /dev/null +++ b/lib/glfw/tests/iconify.c @@ -0,0 +1,298 @@ +//======================================================================== +// Iconify/restore test program +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This program is used to test the iconify/restore functionality for +// both full screen and windowed mode windows +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include + +#include "getopt.h" + +static int windowed_xpos, windowed_ypos, windowed_width = 640, windowed_height = 480; + +static void usage(void) +{ + printf("Usage: iconify [-h] [-f [-a] [-n]]\n"); + printf("Options:\n"); + printf(" -a create windows for all monitors\n"); + printf(" -f create full screen window(s)\n"); + printf(" -h show this help\n"); +} + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + printf("%0.2f Key %s\n", + glfwGetTime(), + action == GLFW_PRESS ? "pressed" : "released"); + + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_I: + glfwIconifyWindow(window); + break; + case GLFW_KEY_M: + glfwMaximizeWindow(window); + break; + case GLFW_KEY_R: + glfwRestoreWindow(window); + break; + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + case GLFW_KEY_A: + glfwSetWindowAttrib(window, GLFW_AUTO_ICONIFY, !glfwGetWindowAttrib(window, GLFW_AUTO_ICONIFY)); + break; + case GLFW_KEY_B: + glfwSetWindowAttrib(window, GLFW_RESIZABLE, !glfwGetWindowAttrib(window, GLFW_RESIZABLE)); + break; + case GLFW_KEY_D: + glfwSetWindowAttrib(window, GLFW_DECORATED, !glfwGetWindowAttrib(window, GLFW_DECORATED)); + break; + case GLFW_KEY_F: + glfwSetWindowAttrib(window, GLFW_FLOATING, !glfwGetWindowAttrib(window, GLFW_FLOATING)); + break; + case GLFW_KEY_F11: + case GLFW_KEY_ENTER: + { + if (mods != GLFW_MOD_ALT) + return; + + if (glfwGetWindowMonitor(window)) + { + glfwSetWindowMonitor(window, NULL, + windowed_xpos, windowed_ypos, + windowed_width, windowed_height, + 0); + } + else + { + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); + if (monitor) + { + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + glfwGetWindowPos(window, &windowed_xpos, &windowed_ypos); + glfwGetWindowSize(window, &windowed_width, &windowed_height); + glfwSetWindowMonitor(window, monitor, + 0, 0, mode->width, mode->height, + mode->refreshRate); + } + } + + break; + } + } +} + +static void window_size_callback(GLFWwindow* window, int width, int height) +{ + printf("%0.2f Window resized to %ix%i\n", glfwGetTime(), width, height); +} + +static void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + printf("%0.2f Framebuffer resized to %ix%i\n", glfwGetTime(), width, height); +} + +static void window_focus_callback(GLFWwindow* window, int focused) +{ + printf("%0.2f Window %s\n", + glfwGetTime(), + focused ? "focused" : "defocused"); +} + +static void window_iconify_callback(GLFWwindow* window, int iconified) +{ + printf("%0.2f Window %s\n", + glfwGetTime(), + iconified ? "iconified" : "uniconified"); +} + +static void window_maximize_callback(GLFWwindow* window, int maximized) +{ + printf("%0.2f Window %s\n", + glfwGetTime(), + maximized ? "maximized" : "unmaximized"); +} + +static void window_refresh_callback(GLFWwindow* window) +{ + printf("%0.2f Window refresh\n", glfwGetTime()); + + glfwMakeContextCurrent(window); + + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(window); +} + +static GLFWwindow* create_window(GLFWmonitor* monitor) +{ + int width, height; + GLFWwindow* window; + + if (monitor) + { + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + + glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate); + glfwWindowHint(GLFW_RED_BITS, mode->redBits); + glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits); + glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits); + + width = mode->width; + height = mode->height; + } + else + { + width = windowed_width; + height = windowed_height; + } + + window = glfwCreateWindow(width, height, "Iconify", monitor, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + + return window; +} + +int main(int argc, char** argv) +{ + int ch, i, window_count; + int fullscreen = GLFW_FALSE, all_monitors = GLFW_FALSE; + GLFWwindow** windows; + + while ((ch = getopt(argc, argv, "afhn")) != -1) + { + switch (ch) + { + case 'a': + all_monitors = GLFW_TRUE; + break; + + case 'h': + usage(); + exit(EXIT_SUCCESS); + + case 'f': + fullscreen = GLFW_TRUE; + break; + + default: + usage(); + exit(EXIT_FAILURE); + } + } + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + if (fullscreen && all_monitors) + { + int monitor_count; + GLFWmonitor** monitors = glfwGetMonitors(&monitor_count); + + window_count = monitor_count; + windows = calloc(window_count, sizeof(GLFWwindow*)); + + for (i = 0; i < monitor_count; i++) + { + windows[i] = create_window(monitors[i]); + if (!windows[i]) + break; + } + } + else + { + GLFWmonitor* monitor = NULL; + + if (fullscreen) + monitor = glfwGetPrimaryMonitor(); + + window_count = 1; + windows = calloc(window_count, sizeof(GLFWwindow*)); + windows[0] = create_window(monitor); + } + + for (i = 0; i < window_count; i++) + { + glfwSetKeyCallback(windows[i], key_callback); + glfwSetFramebufferSizeCallback(windows[i], framebuffer_size_callback); + glfwSetWindowSizeCallback(windows[i], window_size_callback); + glfwSetWindowFocusCallback(windows[i], window_focus_callback); + glfwSetWindowIconifyCallback(windows[i], window_iconify_callback); + glfwSetWindowMaximizeCallback(windows[i], window_maximize_callback); + glfwSetWindowRefreshCallback(windows[i], window_refresh_callback); + + window_refresh_callback(windows[i]); + + printf("Window is %s and %s\n", + glfwGetWindowAttrib(windows[i], GLFW_ICONIFIED) ? "iconified" : "restored", + glfwGetWindowAttrib(windows[i], GLFW_FOCUSED) ? "focused" : "defocused"); + } + + for (;;) + { + glfwWaitEvents(); + + for (i = 0; i < window_count; i++) + { + if (glfwWindowShouldClose(windows[i])) + break; + } + + if (i < window_count) + break; + + // Workaround for an issue with msvcrt and mintty + fflush(stdout); + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/inputlag.c b/lib/glfw/tests/inputlag.c new file mode 100644 index 0000000..12e693f --- /dev/null +++ b/lib/glfw/tests/inputlag.c @@ -0,0 +1,310 @@ +//======================================================================== +// Input lag test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test renders a marker at the cursor position reported by GLFW to +// check how much it lags behind the hardware mouse cursor +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#define NK_IMPLEMENTATION +#define NK_INCLUDE_FIXED_TYPES +#define NK_INCLUDE_FONT_BAKING +#define NK_INCLUDE_DEFAULT_FONT +#define NK_INCLUDE_DEFAULT_ALLOCATOR +#define NK_INCLUDE_VERTEX_BUFFER_OUTPUT +#define NK_INCLUDE_STANDARD_VARARGS +#include + +#define NK_GLFW_GL2_IMPLEMENTATION +#include + +#include +#include +#include + +#include "getopt.h" + +void usage(void) +{ + printf("Usage: inputlag [-h] [-f]\n"); + printf("Options:\n"); + printf(" -f create full screen window\n"); + printf(" -h show this help\n"); +} + +struct nk_vec2 cursor_new, cursor_pos, cursor_vel; +enum { cursor_sync_query, cursor_input_message } cursor_method = cursor_sync_query; + +void sample_input(GLFWwindow* window) +{ + float a = .25; // exponential smoothing factor + + if (cursor_method == cursor_sync_query) { + double x, y; + glfwGetCursorPos(window, &x, &y); + cursor_new.x = (float) x; + cursor_new.y = (float) y; + } + + cursor_vel.x = (cursor_new.x - cursor_pos.x) * a + cursor_vel.x * (1 - a); + cursor_vel.y = (cursor_new.y - cursor_pos.y) * a + cursor_vel.y * (1 - a); + cursor_pos = cursor_new; +} + +void cursor_pos_callback(GLFWwindow* window, double xpos, double ypos) +{ + cursor_new.x = (float) xpos; + cursor_new.y = (float) ypos; +} + +int enable_vsync = nk_true; + +void update_vsync() +{ + glfwSwapInterval(enable_vsync == nk_true ? 1 : 0); +} + +int swap_clear = nk_false; +int swap_finish = nk_true; +int swap_occlusion_query = nk_false; +int swap_read_pixels = nk_false; +GLuint occlusion_query; + +void swap_buffers(GLFWwindow* window) +{ + glfwSwapBuffers(window); + + if (swap_clear) + glClear(GL_COLOR_BUFFER_BIT); + + if (swap_finish) + glFinish(); + + if (swap_occlusion_query) { + GLint occlusion_result; + if (!occlusion_query) + glGenQueries(1, &occlusion_query); + glBeginQuery(GL_SAMPLES_PASSED, occlusion_query); + glBegin(GL_POINTS); + glVertex2f(0, 0); + glEnd(); + glEndQuery(GL_SAMPLES_PASSED); + glGetQueryObjectiv(occlusion_query, GL_QUERY_RESULT, &occlusion_result); + } + + if (swap_read_pixels) { + unsigned char rgba[4]; + glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, rgba); + } +} + +void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, 1); + break; + } +} + +void draw_marker(struct nk_command_buffer* canvas, int lead, struct nk_vec2 pos) +{ + struct nk_color colors[4] = { nk_rgb(255,0,0), nk_rgb(255,255,0), nk_rgb(0,255,0), nk_rgb(0,96,255) }; + struct nk_rect rect = { -5 + pos.x, -5 + pos.y, 10, 10 }; + nk_fill_circle(canvas, rect, colors[lead]); +} + +int main(int argc, char** argv) +{ + int ch, width, height; + unsigned long frame_count = 0; + double last_time, current_time; + double frame_rate = 0; + int fullscreen = GLFW_FALSE; + GLFWmonitor* monitor = NULL; + GLFWwindow* window; + struct nk_context* nk; + struct nk_font_atlas* atlas; + + int show_forecasts = nk_true; + + while ((ch = getopt(argc, argv, "fh")) != -1) + { + switch (ch) + { + case 'h': + usage(); + exit(EXIT_SUCCESS); + + case 'f': + fullscreen = GLFW_TRUE; + break; + } + } + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + if (fullscreen) + { + const GLFWvidmode* mode; + + monitor = glfwGetPrimaryMonitor(); + mode = glfwGetVideoMode(monitor); + + width = mode->width; + height = mode->height; + } + else + { + width = 640; + height = 480; + } + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + + glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); + glfwWindowHint(GLFW_WIN32_KEYBOARD_MENU, GLFW_TRUE); + + window = glfwCreateWindow(width, height, "Input lag test", monitor, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + update_vsync(); + + last_time = glfwGetTime(); + + nk = nk_glfw3_init(window, NK_GLFW3_INSTALL_CALLBACKS); + nk_glfw3_font_stash_begin(&atlas); + nk_glfw3_font_stash_end(); + + glfwSetKeyCallback(window, key_callback); + glfwSetCursorPosCallback(window, cursor_pos_callback); + + while (!glfwWindowShouldClose(window)) + { + int width, height; + struct nk_rect area; + + glfwPollEvents(); + sample_input(window); + + glfwGetWindowSize(window, &width, &height); + area = nk_rect(0.f, 0.f, (float) width, (float) height); + + glClear(GL_COLOR_BUFFER_BIT); + nk_glfw3_new_frame(); + if (nk_begin(nk, "", area, 0)) + { + nk_flags align_left = NK_TEXT_ALIGN_LEFT | NK_TEXT_ALIGN_MIDDLE; + struct nk_command_buffer *canvas = nk_window_get_canvas(nk); + int lead; + + for (lead = show_forecasts ? 3 : 0; lead >= 0; lead--) + draw_marker(canvas, lead, nk_vec2(cursor_pos.x + cursor_vel.x * lead, + cursor_pos.y + cursor_vel.y * lead)); + + // print instructions + nk_layout_row_dynamic(nk, 20, 1); + nk_label(nk, "Move mouse uniformly and check marker under cursor:", align_left); + for (lead = 0; lead <= 3; lead++) { + nk_layout_row_begin(nk, NK_STATIC, 12, 2); + nk_layout_row_push(nk, 25); + draw_marker(canvas, lead, nk_layout_space_to_screen(nk, nk_vec2(20, 5))); + nk_label(nk, "", 0); + nk_layout_row_push(nk, 500); + if (lead == 0) + nk_label(nk, "- current cursor position (no input lag)", align_left); + else + nk_labelf(nk, align_left, "- %d-frame forecast (input lag is %d frame)", lead, lead); + nk_layout_row_end(nk); + } + + nk_layout_row_dynamic(nk, 20, 1); + + nk_checkbox_label(nk, "Show forecasts", &show_forecasts); + nk_label(nk, "Input method:", align_left); + if (nk_option_label(nk, "glfwGetCursorPos (sync query)", cursor_method == cursor_sync_query)) + cursor_method = cursor_sync_query; + if (nk_option_label(nk, "glfwSetCursorPosCallback (latest input message)", cursor_method == cursor_input_message)) + cursor_method = cursor_input_message; + + nk_label(nk, "", 0); // separator + + nk_value_float(nk, "FPS", (float) frame_rate); + if (nk_checkbox_label(nk, "Enable vsync", &enable_vsync)) + update_vsync(); + + nk_label(nk, "", 0); // separator + + nk_label(nk, "After swap:", align_left); + nk_checkbox_label(nk, "glClear", &swap_clear); + nk_checkbox_label(nk, "glFinish", &swap_finish); + nk_checkbox_label(nk, "draw with occlusion query", &swap_occlusion_query); + nk_checkbox_label(nk, "glReadPixels", &swap_read_pixels); + } + + nk_end(nk); + nk_glfw3_render(NK_ANTI_ALIASING_ON); + + swap_buffers(window); + + frame_count++; + + current_time = glfwGetTime(); + if (current_time - last_time > 1.0) + { + frame_rate = frame_count / (current_time - last_time); + frame_count = 0; + last_time = current_time; + } + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/joysticks.c b/lib/glfw/tests/joysticks.c new file mode 100644 index 0000000..df00021 --- /dev/null +++ b/lib/glfw/tests/joysticks.c @@ -0,0 +1,346 @@ +//======================================================================== +// Joystick input test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test displays the state of every button and axis of every connected +// joystick and/or gamepad +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#define NK_IMPLEMENTATION +#define NK_INCLUDE_FIXED_TYPES +#define NK_INCLUDE_FONT_BAKING +#define NK_INCLUDE_DEFAULT_FONT +#define NK_INCLUDE_DEFAULT_ALLOCATOR +#define NK_INCLUDE_VERTEX_BUFFER_OUTPUT +#define NK_INCLUDE_STANDARD_VARARGS +#define NK_BUTTON_TRIGGER_ON_RELEASE +#include + +#define NK_GLFW_GL2_IMPLEMENTATION +#include + +#include +#include +#include + +#ifdef _MSC_VER +#define strdup(x) _strdup(x) +#endif + +static GLFWwindow* window; +static int joysticks[GLFW_JOYSTICK_LAST + 1]; +static int joystick_count = 0; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void joystick_callback(int jid, int event) +{ + if (event == GLFW_CONNECTED) + joysticks[joystick_count++] = jid; + else if (event == GLFW_DISCONNECTED) + { + int i; + + for (i = 0; i < joystick_count; i++) + { + if (joysticks[i] == jid) + break; + } + + for (i = i + 1; i < joystick_count; i++) + joysticks[i - 1] = joysticks[i]; + + joystick_count--; + } + + if (!glfwGetWindowAttrib(window, GLFW_FOCUSED)) + glfwRequestWindowAttention(window); +} + +static void drop_callback(GLFWwindow* window, int count, const char* paths[]) +{ + int i; + + for (i = 0; i < count; i++) + { + long size; + char* text; + FILE* stream = fopen(paths[i], "rb"); + if (!stream) + continue; + + fseek(stream, 0, SEEK_END); + size = ftell(stream); + fseek(stream, 0, SEEK_SET); + + text = malloc(size + 1); + text[size] = '\0'; + if (fread(text, 1, size, stream) == size) + glfwUpdateGamepadMappings(text); + + free(text); + fclose(stream); + } +} + +static const char* joystick_label(int jid) +{ + static char label[1024]; + snprintf(label, sizeof(label), "%i: %s", jid + 1, glfwGetJoystickName(jid)); + return label; +} + +static void hat_widget(struct nk_context* nk, unsigned char state) +{ + float radius; + struct nk_rect area; + struct nk_vec2 center; + + if (nk_widget(&area, nk) == NK_WIDGET_INVALID) + return; + + center = nk_vec2(area.x + area.w / 2.f, area.y + area.h / 2.f); + radius = NK_MIN(area.w, area.h) / 2.f; + + nk_stroke_circle(nk_window_get_canvas(nk), + nk_rect(center.x - radius, + center.y - radius, + radius * 2.f, + radius * 2.f), + 1.f, + nk_rgb(175, 175, 175)); + + if (state) + { + const float angles[] = + { + 0.f, 0.f, + NK_PI * 1.5f, NK_PI * 1.75f, + NK_PI, 0.f, + NK_PI * 1.25f, 0.f, + NK_PI * 0.5f, NK_PI * 0.25f, + 0.f, 0.f, + NK_PI * 0.75f, 0.f, + }; + const float cosa = nk_cos(angles[state]); + const float sina = nk_sin(angles[state]); + const struct nk_vec2 p0 = nk_vec2(0.f, -radius); + const struct nk_vec2 p1 = nk_vec2( radius / 2.f, -radius / 3.f); + const struct nk_vec2 p2 = nk_vec2(-radius / 2.f, -radius / 3.f); + + nk_fill_triangle(nk_window_get_canvas(nk), + center.x + cosa * p0.x + sina * p0.y, + center.y + cosa * p0.y - sina * p0.x, + center.x + cosa * p1.x + sina * p1.y, + center.y + cosa * p1.y - sina * p1.x, + center.x + cosa * p2.x + sina * p2.y, + center.y + cosa * p2.y - sina * p2.x, + nk_rgb(175, 175, 175)); + } +} + +int main(void) +{ + int jid, hat_buttons = GLFW_FALSE; + struct nk_context* nk; + struct nk_font_atlas* atlas; + + memset(joysticks, 0, sizeof(joysticks)); + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); + glfwWindowHint(GLFW_WIN32_KEYBOARD_MENU, GLFW_TRUE); + + window = glfwCreateWindow(800, 600, "Joystick Test", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + nk = nk_glfw3_init(window, NK_GLFW3_INSTALL_CALLBACKS); + nk_glfw3_font_stash_begin(&atlas); + nk_glfw3_font_stash_end(); + + for (jid = GLFW_JOYSTICK_1; jid <= GLFW_JOYSTICK_LAST; jid++) + { + if (glfwJoystickPresent(jid)) + joysticks[joystick_count++] = jid; + } + + glfwSetJoystickCallback(joystick_callback); + glfwSetDropCallback(window, drop_callback); + + while (!glfwWindowShouldClose(window)) + { + int i, width, height; + + glfwGetWindowSize(window, &width, &height); + + glClear(GL_COLOR_BUFFER_BIT); + nk_glfw3_new_frame(); + + if (nk_begin(nk, + "Joysticks", + nk_rect(width - 200.f, 0.f, 200.f, (float) height), + NK_WINDOW_MINIMIZABLE | + NK_WINDOW_TITLE)) + { + nk_layout_row_dynamic(nk, 30, 1); + + nk_checkbox_label(nk, "Hat buttons", &hat_buttons); + + if (joystick_count) + { + for (i = 0; i < joystick_count; i++) + { + if (nk_button_label(nk, joystick_label(joysticks[i]))) + nk_window_set_focus(nk, joystick_label(joysticks[i])); + } + } + else + nk_label(nk, "No joysticks connected", NK_TEXT_LEFT); + } + + nk_end(nk); + + for (i = 0; i < joystick_count; i++) + { + if (nk_begin(nk, + joystick_label(joysticks[i]), + nk_rect(i * 20.f, i * 20.f, 550.f, 570.f), + NK_WINDOW_BORDER | + NK_WINDOW_MOVABLE | + NK_WINDOW_SCALABLE | + NK_WINDOW_MINIMIZABLE | + NK_WINDOW_TITLE)) + { + int j, axis_count, button_count, hat_count; + const float* axes; + const unsigned char* buttons; + const unsigned char* hats; + GLFWgamepadstate state; + + nk_layout_row_dynamic(nk, 30, 1); + nk_labelf(nk, NK_TEXT_LEFT, "Hardware GUID %s", + glfwGetJoystickGUID(joysticks[i])); + nk_label(nk, "Joystick state", NK_TEXT_LEFT); + + axes = glfwGetJoystickAxes(joysticks[i], &axis_count); + buttons = glfwGetJoystickButtons(joysticks[i], &button_count); + hats = glfwGetJoystickHats(joysticks[i], &hat_count); + + if (!hat_buttons) + button_count -= hat_count * 4; + + for (j = 0; j < axis_count; j++) + nk_slide_float(nk, -1.f, axes[j], 1.f, 0.1f); + + nk_layout_row_dynamic(nk, 30, 12); + + for (j = 0; j < button_count; j++) + { + char name[16]; + snprintf(name, sizeof(name), "%i", j + 1); + nk_select_label(nk, name, NK_TEXT_CENTERED, buttons[j]); + } + + nk_layout_row_dynamic(nk, 30, 8); + + for (j = 0; j < hat_count; j++) + hat_widget(nk, hats[j]); + + nk_layout_row_dynamic(nk, 30, 1); + + if (glfwGetGamepadState(joysticks[i], &state)) + { + int hat = 0; + const char* names[GLFW_GAMEPAD_BUTTON_LAST + 1 - 4] = + { + "A", "B", "X", "Y", + "LB", "RB", + "Back", "Start", "Guide", + "LT", "RT", + }; + + nk_labelf(nk, NK_TEXT_LEFT, + "Gamepad state: %s", + glfwGetGamepadName(joysticks[i])); + + nk_layout_row_dynamic(nk, 30, 2); + + for (j = 0; j <= GLFW_GAMEPAD_AXIS_LAST; j++) + nk_slide_float(nk, -1.f, state.axes[j], 1.f, 0.1f); + + nk_layout_row_dynamic(nk, 30, GLFW_GAMEPAD_BUTTON_LAST + 1 - 4); + + for (j = 0; j <= GLFW_GAMEPAD_BUTTON_LAST - 4; j++) + nk_select_label(nk, names[j], NK_TEXT_CENTERED, state.buttons[j]); + + if (state.buttons[GLFW_GAMEPAD_BUTTON_DPAD_UP]) + hat |= GLFW_HAT_UP; + if (state.buttons[GLFW_GAMEPAD_BUTTON_DPAD_RIGHT]) + hat |= GLFW_HAT_RIGHT; + if (state.buttons[GLFW_GAMEPAD_BUTTON_DPAD_DOWN]) + hat |= GLFW_HAT_DOWN; + if (state.buttons[GLFW_GAMEPAD_BUTTON_DPAD_LEFT]) + hat |= GLFW_HAT_LEFT; + + nk_layout_row_dynamic(nk, 30, 8); + hat_widget(nk, hat); + } + else + nk_label(nk, "Joystick has no gamepad mapping", NK_TEXT_LEFT); + } + + nk_end(nk); + } + + nk_glfw3_render(NK_ANTI_ALIASING_ON); + + glfwSwapBuffers(window); + glfwPollEvents(); + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/monitors.c b/lib/glfw/tests/monitors.c new file mode 100644 index 0000000..1043e66 --- /dev/null +++ b/lib/glfw/tests/monitors.c @@ -0,0 +1,263 @@ +//======================================================================== +// Monitor information tool +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test prints monitor and video mode information or verifies video +// modes +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include + +#include "getopt.h" + +enum Mode +{ + LIST_MODE, + TEST_MODE +}; + +static void usage(void) +{ + printf("Usage: monitors [-t]\n"); + printf(" monitors -h\n"); +} + +static int euclid(int a, int b) +{ + return b ? euclid(b, a % b) : a; +} + +static const char* format_mode(const GLFWvidmode* mode) +{ + static char buffer[512]; + const int gcd = euclid(mode->width, mode->height); + + snprintf(buffer, + sizeof(buffer), + "%i x %i x %i (%i:%i) (%i %i %i) %i Hz", + mode->width, mode->height, + mode->redBits + mode->greenBits + mode->blueBits, + mode->width / gcd, mode->height / gcd, + mode->redBits, mode->greenBits, mode->blueBits, + mode->refreshRate); + + buffer[sizeof(buffer) - 1] = '\0'; + return buffer; +} + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + printf("Framebuffer resized to %ix%i\n", width, height); + + glViewport(0, 0, width, height); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +static void list_modes(GLFWmonitor* monitor) +{ + int count, x, y, width_mm, height_mm, i; + int workarea_x, workarea_y, workarea_width, workarea_height; + float xscale, yscale; + + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + const GLFWvidmode* modes = glfwGetVideoModes(monitor, &count); + + glfwGetMonitorPos(monitor, &x, &y); + glfwGetMonitorPhysicalSize(monitor, &width_mm, &height_mm); + glfwGetMonitorContentScale(monitor, &xscale, &yscale); + glfwGetMonitorWorkarea(monitor, &workarea_x, &workarea_y, &workarea_width, &workarea_height); + + printf("Name: %s (%s)\n", + glfwGetMonitorName(monitor), + glfwGetPrimaryMonitor() == monitor ? "primary" : "secondary"); + printf("Current mode: %s\n", format_mode(mode)); + printf("Virtual position: %i, %i\n", x, y); + printf("Content scale: %f x %f\n", xscale, yscale); + + printf("Physical size: %i x %i mm (%0.2f dpi at %i x %i)\n", + width_mm, height_mm, mode->width * 25.4f / width_mm, mode->width, mode->height); + printf("Monitor work area: %i x %i starting at %i, %i\n", + workarea_width, workarea_height, workarea_x, workarea_y); + + printf("Modes:\n"); + + for (i = 0; i < count; i++) + { + printf("%3u: %s", (unsigned int) i, format_mode(modes + i)); + + if (memcmp(mode, modes + i, sizeof(GLFWvidmode)) == 0) + printf(" (current mode)"); + + putchar('\n'); + } +} + +static void test_modes(GLFWmonitor* monitor) +{ + int i, count; + GLFWwindow* window; + const GLFWvidmode* modes = glfwGetVideoModes(monitor, &count); + + for (i = 0; i < count; i++) + { + const GLFWvidmode* mode = modes + i; + GLFWvidmode current; + + glfwWindowHint(GLFW_RED_BITS, mode->redBits); + glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits); + glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits); + glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate); + + printf("Testing mode %u on monitor %s: %s\n", + (unsigned int) i, + glfwGetMonitorName(monitor), + format_mode(mode)); + + window = glfwCreateWindow(mode->width, mode->height, + "Video Mode Test", + glfwGetPrimaryMonitor(), + NULL); + if (!window) + { + printf("Failed to enter mode %u: %s\n", + (unsigned int) i, + format_mode(mode)); + continue; + } + + glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); + glfwSetKeyCallback(window, key_callback); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + glfwSetTime(0.0); + + while (glfwGetTime() < 5.0) + { + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(window); + glfwPollEvents(); + + if (glfwWindowShouldClose(window)) + { + printf("User terminated program\n"); + + glfwTerminate(); + exit(EXIT_SUCCESS); + } + } + + glGetIntegerv(GL_RED_BITS, ¤t.redBits); + glGetIntegerv(GL_GREEN_BITS, ¤t.greenBits); + glGetIntegerv(GL_BLUE_BITS, ¤t.blueBits); + + glfwGetWindowSize(window, ¤t.width, ¤t.height); + + if (current.redBits != mode->redBits || + current.greenBits != mode->greenBits || + current.blueBits != mode->blueBits) + { + printf("*** Color bit mismatch: (%i %i %i) instead of (%i %i %i)\n", + current.redBits, current.greenBits, current.blueBits, + mode->redBits, mode->greenBits, mode->blueBits); + } + + if (current.width != mode->width || current.height != mode->height) + { + printf("*** Size mismatch: %ix%i instead of %ix%i\n", + current.width, current.height, + mode->width, mode->height); + } + + printf("Closing window\n"); + + glfwDestroyWindow(window); + window = NULL; + + glfwPollEvents(); + } +} + +int main(int argc, char** argv) +{ + int ch, i, count, mode = LIST_MODE; + GLFWmonitor** monitors; + + while ((ch = getopt(argc, argv, "th")) != -1) + { + switch (ch) + { + case 'h': + usage(); + exit(EXIT_SUCCESS); + case 't': + mode = TEST_MODE; + break; + default: + usage(); + exit(EXIT_FAILURE); + } + } + + glfwSetErrorCallback(error_callback); + + glfwInitHint(GLFW_COCOA_MENUBAR, GLFW_FALSE); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + monitors = glfwGetMonitors(&count); + + for (i = 0; i < count; i++) + { + if (mode == LIST_MODE) + list_modes(monitors[i]); + else if (mode == TEST_MODE) + test_modes(monitors[i]); + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/msaa.c b/lib/glfw/tests/msaa.c new file mode 100644 index 0000000..10bfa3c --- /dev/null +++ b/lib/glfw/tests/msaa.c @@ -0,0 +1,221 @@ +//======================================================================== +// Multisample anti-aliasing test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test renders two high contrast, slowly rotating quads, one aliased +// and one (hopefully) anti-aliased, thus allowing for visual verification +// of whether MSAA is indeed enabled +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#if defined(_MSC_VER) + // Make MS math.h define M_PI + #define _USE_MATH_DEFINES +#endif + +#include "linmath.h" + +#include +#include + +#include "getopt.h" + +static const vec2 vertices[4] = +{ + { -0.6f, -0.6f }, + { 0.6f, -0.6f }, + { 0.6f, 0.6f }, + { -0.6f, 0.6f } +}; + +static const char* vertex_shader_text = +"#version 110\n" +"uniform mat4 MVP;\n" +"attribute vec2 vPos;\n" +"void main()\n" +"{\n" +" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 110\n" +"void main()\n" +"{\n" +" gl_FragColor = vec4(1.0);\n" +"}\n"; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_SPACE: + glfwSetTime(0.0); + break; + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + } +} + +static void usage(void) +{ + printf("Usage: msaa [-h] [-s SAMPLES]\n"); +} + +int main(int argc, char** argv) +{ + int ch, samples = 4; + GLFWwindow* window; + GLuint vertex_buffer, vertex_shader, fragment_shader, program; + GLint mvp_location, vpos_location; + + while ((ch = getopt(argc, argv, "hs:")) != -1) + { + switch (ch) + { + case 'h': + usage(); + exit(EXIT_SUCCESS); + case 's': + samples = atoi(optarg); + break; + default: + usage(); + exit(EXIT_FAILURE); + } + } + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + if (samples) + printf("Requesting MSAA with %i samples\n", samples); + else + printf("Requesting that MSAA not be available\n"); + + glfwWindowHint(GLFW_SAMPLES, samples); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + + window = glfwCreateWindow(800, 400, "Aliasing Detector", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwSetKeyCallback(window, key_callback); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + glGetIntegerv(GL_SAMPLES, &samples); + if (samples) + printf("Context reports MSAA is available with %i samples\n", samples); + else + printf("Context reports MSAA is unavailable\n"); + + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); + glCompileShader(vertex_shader); + + fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); + glCompileShader(fragment_shader); + + program = glCreateProgram(); + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + + mvp_location = glGetUniformLocation(program, "MVP"); + vpos_location = glGetAttribLocation(program, "vPos"); + + glEnableVertexAttribArray(vpos_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(vertices[0]), (void*) 0); + + while (!glfwWindowShouldClose(window)) + { + float ratio; + int width, height; + mat4x4 m, p, mvp; + const double angle = glfwGetTime() * M_PI / 180.0; + + glfwGetFramebufferSize(window, &width, &height); + ratio = width / (float) height; + + glViewport(0, 0, width, height); + glClear(GL_COLOR_BUFFER_BIT); + + glUseProgram(program); + + mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 0.f, 1.f); + + mat4x4_translate(m, -1.f, 0.f, 0.f); + mat4x4_rotate_Z(m, m, (float) angle); + mat4x4_mul(mvp, p, m); + + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp); + glDisable(GL_MULTISAMPLE); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + + mat4x4_translate(m, 1.f, 0.f, 0.f); + mat4x4_rotate_Z(m, m, (float) angle); + mat4x4_mul(mvp, p, m); + + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp); + glEnable(GL_MULTISAMPLE); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + + glfwSwapBuffers(window); + glfwPollEvents(); + } + + glfwDestroyWindow(window); + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/reopen.c b/lib/glfw/tests/reopen.c new file mode 100644 index 0000000..b458755 --- /dev/null +++ b/lib/glfw/tests/reopen.c @@ -0,0 +1,241 @@ +//======================================================================== +// Window re-opener (open/close stress test) +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test came about as the result of bug #1262773 +// +// It closes and re-opens the GLFW window every five seconds, alternating +// between windowed and full screen mode +// +// It also times and logs opening and closing actions and attempts to separate +// user initiated window closing from its own +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include + +#include "linmath.h" + +static const char* vertex_shader_text = +"#version 110\n" +"uniform mat4 MVP;\n" +"attribute vec2 vPos;\n" +"void main()\n" +"{\n" +" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 110\n" +"void main()\n" +"{\n" +" gl_FragColor = vec4(1.0);\n" +"}\n"; + +static const vec2 vertices[4] = +{ + { -0.5f, -0.5f }, + { 0.5f, -0.5f }, + { 0.5f, 0.5f }, + { -0.5f, 0.5f } +}; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void window_close_callback(GLFWwindow* window) +{ + printf("Close callback triggered\n"); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_Q: + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, GLFW_TRUE); + break; + } +} + +static void close_window(GLFWwindow* window) +{ + double base = glfwGetTime(); + glfwDestroyWindow(window); + printf("Closing window took %0.3f seconds\n", glfwGetTime() - base); +} + +int main(int argc, char** argv) +{ + int count = 0; + double base; + GLFWwindow* window; + + srand((unsigned int) time(NULL)); + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + + for (;;) + { + int width, height; + GLFWmonitor* monitor = NULL; + GLuint vertex_shader, fragment_shader, program, vertex_buffer; + GLint mvp_location, vpos_location; + + if (count & 1) + { + int monitorCount; + GLFWmonitor** monitors = glfwGetMonitors(&monitorCount); + monitor = monitors[rand() % monitorCount]; + } + + if (monitor) + { + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + width = mode->width; + height = mode->height; + } + else + { + width = 640; + height = 480; + } + + base = glfwGetTime(); + + window = glfwCreateWindow(width, height, "Window Re-opener", monitor, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + if (monitor) + { + printf("Opening full screen window on monitor %s took %0.3f seconds\n", + glfwGetMonitorName(monitor), + glfwGetTime() - base); + } + else + { + printf("Opening regular window took %0.3f seconds\n", + glfwGetTime() - base); + } + + glfwSetWindowCloseCallback(window, window_close_callback); + glfwSetKeyCallback(window, key_callback); + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); + glCompileShader(vertex_shader); + + fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); + glCompileShader(fragment_shader); + + program = glCreateProgram(); + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + + mvp_location = glGetUniformLocation(program, "MVP"); + vpos_location = glGetAttribLocation(program, "vPos"); + + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + glEnableVertexAttribArray(vpos_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(vertices[0]), (void*) 0); + + glfwSetTime(0.0); + + while (glfwGetTime() < 5.0) + { + float ratio; + int width, height; + mat4x4 m, p, mvp; + + glfwGetFramebufferSize(window, &width, &height); + ratio = width / (float) height; + + glViewport(0, 0, width, height); + glClear(GL_COLOR_BUFFER_BIT); + + mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 0.f, 1.f); + + mat4x4_identity(m); + mat4x4_rotate_Z(m, m, (float) glfwGetTime()); + mat4x4_mul(mvp, p, m); + + glUseProgram(program); + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + + glfwSwapBuffers(window); + glfwPollEvents(); + + if (glfwWindowShouldClose(window)) + { + close_window(window); + printf("User closed window\n"); + + glfwTerminate(); + exit(EXIT_SUCCESS); + } + } + + printf("Closing window\n"); + close_window(window); + + count++; + } + + glfwTerminate(); +} + diff --git a/lib/glfw/tests/tearing.c b/lib/glfw/tests/tearing.c new file mode 100644 index 0000000..5c7893c --- /dev/null +++ b/lib/glfw/tests/tearing.c @@ -0,0 +1,251 @@ +//======================================================================== +// Vsync enabling test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test renders a high contrast, horizontally moving bar, allowing for +// visual verification of whether the set swap interval is indeed obeyed +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include + +#include "linmath.h" + +static const struct +{ + float x, y; +} vertices[4] = +{ + { -0.25f, -1.f }, + { 0.25f, -1.f }, + { 0.25f, 1.f }, + { -0.25f, 1.f } +}; + +static const char* vertex_shader_text = +"#version 110\n" +"uniform mat4 MVP;\n" +"attribute vec2 vPos;\n" +"void main()\n" +"{\n" +" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n" +"}\n"; + +static const char* fragment_shader_text = +"#version 110\n" +"void main()\n" +"{\n" +" gl_FragColor = vec4(1.0);\n" +"}\n"; + +static int swap_tear; +static int swap_interval; +static double frame_rate; + +static void update_window_title(GLFWwindow* window) +{ + char title[256]; + + snprintf(title, sizeof(title), "Tearing detector (interval %i%s, %0.1f Hz)", + swap_interval, + (swap_tear && swap_interval < 0) ? " (swap tear)" : "", + frame_rate); + + glfwSetWindowTitle(window, title); +} + +static void set_swap_interval(GLFWwindow* window, int interval) +{ + swap_interval = interval; + glfwSwapInterval(swap_interval); + update_window_title(window); +} + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (action != GLFW_PRESS) + return; + + switch (key) + { + case GLFW_KEY_UP: + { + if (swap_interval + 1 > swap_interval) + set_swap_interval(window, swap_interval + 1); + break; + } + + case GLFW_KEY_DOWN: + { + if (swap_tear) + { + if (swap_interval - 1 < swap_interval) + set_swap_interval(window, swap_interval - 1); + } + else + { + if (swap_interval - 1 >= 0) + set_swap_interval(window, swap_interval - 1); + } + break; + } + + case GLFW_KEY_ESCAPE: + glfwSetWindowShouldClose(window, 1); + break; + + case GLFW_KEY_F11: + case GLFW_KEY_ENTER: + { + static int x, y, width, height; + + if (mods != GLFW_MOD_ALT) + return; + + if (glfwGetWindowMonitor(window)) + glfwSetWindowMonitor(window, NULL, x, y, width, height, 0); + else + { + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + glfwGetWindowPos(window, &x, &y); + glfwGetWindowSize(window, &width, &height); + glfwSetWindowMonitor(window, monitor, + 0, 0, mode->width, mode->height, + mode->refreshRate); + } + + break; + } + } +} + +int main(int argc, char** argv) +{ + unsigned long frame_count = 0; + double last_time, current_time; + GLFWwindow* window; + GLuint vertex_buffer, vertex_shader, fragment_shader, program; + GLint mvp_location, vpos_location; + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + + window = glfwCreateWindow(640, 480, "Tearing detector", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + set_swap_interval(window, 0); + + last_time = glfwGetTime(); + frame_rate = 0.0; + swap_tear = (glfwExtensionSupported("WGL_EXT_swap_control_tear") || + glfwExtensionSupported("GLX_EXT_swap_control_tear")); + + glfwSetKeyCallback(window, key_callback); + + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + vertex_shader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); + glCompileShader(vertex_shader); + + fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); + glCompileShader(fragment_shader); + + program = glCreateProgram(); + glAttachShader(program, vertex_shader); + glAttachShader(program, fragment_shader); + glLinkProgram(program); + + mvp_location = glGetUniformLocation(program, "MVP"); + vpos_location = glGetAttribLocation(program, "vPos"); + + glEnableVertexAttribArray(vpos_location); + glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, + sizeof(vertices[0]), (void*) 0); + + while (!glfwWindowShouldClose(window)) + { + int width, height; + mat4x4 m, p, mvp; + float position = cosf((float) glfwGetTime() * 4.f) * 0.75f; + + glfwGetFramebufferSize(window, &width, &height); + + glViewport(0, 0, width, height); + glClear(GL_COLOR_BUFFER_BIT); + + mat4x4_ortho(p, -1.f, 1.f, -1.f, 1.f, 0.f, 1.f); + mat4x4_translate(m, position, 0.f, 0.f); + mat4x4_mul(mvp, p, m); + + glUseProgram(program); + glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + + glfwSwapBuffers(window); + glfwPollEvents(); + + frame_count++; + + current_time = glfwGetTime(); + if (current_time - last_time > 1.0) + { + frame_rate = frame_count / (current_time - last_time); + frame_count = 0; + last_time = current_time; + update_window_title(window); + } + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/threads.c b/lib/glfw/tests/threads.c new file mode 100644 index 0000000..a2caea5 --- /dev/null +++ b/lib/glfw/tests/threads.c @@ -0,0 +1,151 @@ +//======================================================================== +// Multi-threading test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test is intended to verify whether the OpenGL context part of +// the GLFW API is able to be used from multiple threads +// +//======================================================================== + +#include "tinycthread.h" + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include + +typedef struct +{ + GLFWwindow* window; + const char* title; + float r, g, b; + thrd_t id; +} Thread; + +static volatile int running = GLFW_TRUE; + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +static int thread_main(void* data) +{ + const Thread* thread = data; + + glfwMakeContextCurrent(thread->window); + glfwSwapInterval(1); + + while (running) + { + const float v = (float) fabs(sin(glfwGetTime() * 2.f)); + glClearColor(thread->r * v, thread->g * v, thread->b * v, 0.f); + + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(thread->window); + } + + glfwMakeContextCurrent(NULL); + return 0; +} + +int main(void) +{ + int i, result; + Thread threads[] = + { + { NULL, "Red", 1.f, 0.f, 0.f, 0 }, + { NULL, "Green", 0.f, 1.f, 0.f, 0 }, + { NULL, "Blue", 0.f, 0.f, 1.f, 0 } + }; + const int count = sizeof(threads) / sizeof(Thread); + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + for (i = 0; i < count; i++) + { + glfwWindowHint(GLFW_POSITION_X, 200 + 250 * i); + glfwWindowHint(GLFW_POSITION_Y, 200); + + threads[i].window = glfwCreateWindow(200, 200, + threads[i].title, + NULL, NULL); + if (!threads[i].window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwSetKeyCallback(threads[i].window, key_callback); + } + + glfwMakeContextCurrent(threads[0].window); + gladLoadGL(glfwGetProcAddress); + glfwMakeContextCurrent(NULL); + + for (i = 0; i < count; i++) + { + if (thrd_create(&threads[i].id, thread_main, threads + i) != + thrd_success) + { + fprintf(stderr, "Failed to create secondary thread\n"); + + glfwTerminate(); + exit(EXIT_FAILURE); + } + } + + while (running) + { + glfwWaitEvents(); + + for (i = 0; i < count; i++) + { + if (glfwWindowShouldClose(threads[i].window)) + running = GLFW_FALSE; + } + } + + for (i = 0; i < count; i++) + glfwHideWindow(threads[i].window); + + for (i = 0; i < count; i++) + thrd_join(threads[i].id, &result); + + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/timeout.c b/lib/glfw/tests/timeout.c new file mode 100644 index 0000000..c273746 --- /dev/null +++ b/lib/glfw/tests/timeout.c @@ -0,0 +1,99 @@ +//======================================================================== +// Event wait timeout test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test is intended to verify that waiting for events with timeout works +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include +#include +#include + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +static float nrand(void) +{ + return (float) rand() / (float) RAND_MAX; +} + +int main(void) +{ + GLFWwindow* window; + + srand((unsigned int) time(NULL)); + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + window = glfwCreateWindow(640, 480, "Event Wait Timeout Test", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSetKeyCallback(window, key_callback); + + while (!glfwWindowShouldClose(window)) + { + int width, height; + float r = nrand(), g = nrand(), b = nrand(); + float l = (float) sqrt(r * r + g * g + b * b); + + glfwGetFramebufferSize(window, &width, &height); + + glViewport(0, 0, width, height); + glClearColor(r / l, g / l, b / l, 1.f); + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(window); + + glfwWaitEventsTimeout(1.0); + } + + glfwDestroyWindow(window); + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/title.c b/lib/glfw/tests/title.c new file mode 100644 index 0000000..08a24e7 --- /dev/null +++ b/lib/glfw/tests/title.c @@ -0,0 +1,73 @@ +//======================================================================== +// UTF-8 window title test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== +// +// This test sets a UTF-8 window title +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include +#include + +static void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} + +int main(void) +{ + GLFWwindow* window; + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + + window = glfwCreateWindow(400, 400, "English 日本語 русский язык 官話", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(1); + + while (!glfwWindowShouldClose(window)) + { + glClear(GL_COLOR_BUFFER_BIT); + glfwSwapBuffers(window); + glfwWaitEvents(); + } + + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/glfw/tests/triangle-vulkan.c b/lib/glfw/tests/triangle-vulkan.c new file mode 100644 index 0000000..b38ee13 --- /dev/null +++ b/lib/glfw/tests/triangle-vulkan.c @@ -0,0 +1,2140 @@ +/* + * Copyright (c) 2015-2016 The Khronos Group Inc. + * Copyright (c) 2015-2016 Valve Corporation + * Copyright (c) 2015-2016 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Author: Chia-I Wu + * Author: Cody Northrop + * Author: Courtney Goeltzenleuchter + * Author: Ian Elliott + * Author: Jon Ashburn + * Author: Piers Daniell + * Author: Gwan-gyeong Mun + * Porter: Camilla Löwy + */ +/* + * Draw a textured triangle with depth testing. This is written against Intel + * ICD. It does not do state transition nor object memory binding like it + * should. It also does no error checking. + */ + +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#include +#endif + +#define GLAD_VULKAN_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#define DEMO_TEXTURE_COUNT 1 +#define VERTEX_BUFFER_BIND_ID 0 +#define APP_SHORT_NAME "tri" +#define APP_LONG_NAME "The Vulkan Triangle Demo Program" + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) + +#if defined(NDEBUG) && defined(__GNUC__) +#define U_ASSERT_ONLY __attribute__((unused)) +#else +#define U_ASSERT_ONLY +#endif + +#define ERR_EXIT(err_msg, err_class) \ + do { \ + printf(err_msg); \ + fflush(stdout); \ + exit(1); \ + } while (0) + +static const uint32_t fragShaderCode[] = { + 0x07230203,0x00010000,0x00080007,0x00000014,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, + 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000009,0x00000011,0x00030010, + 0x00000004,0x00000007,0x00030003,0x00000002,0x00000190,0x00090004,0x415f4c47,0x735f4252, + 0x72617065,0x5f657461,0x64616873,0x6f5f7265,0x63656a62,0x00007374,0x00090004,0x415f4c47, + 0x735f4252,0x69646168,0x6c5f676e,0x75676e61,0x5f656761,0x70303234,0x006b6361,0x00040005, + 0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000009,0x61724675,0x6c6f4367,0x0000726f, + 0x00030005,0x0000000d,0x00786574,0x00050005,0x00000011,0x63786574,0x64726f6f,0x00000000, + 0x00040047,0x00000009,0x0000001e,0x00000000,0x00040047,0x0000000d,0x00000022,0x00000000, + 0x00040047,0x0000000d,0x00000021,0x00000000,0x00040047,0x00000011,0x0000001e,0x00000000, + 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020, + 0x00040017,0x00000007,0x00000006,0x00000004,0x00040020,0x00000008,0x00000003,0x00000007, + 0x0004003b,0x00000008,0x00000009,0x00000003,0x00090019,0x0000000a,0x00000006,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x0000000b,0x0000000a, + 0x00040020,0x0000000c,0x00000000,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000000, + 0x00040017,0x0000000f,0x00000006,0x00000002,0x00040020,0x00000010,0x00000001,0x0000000f, + 0x0004003b,0x00000010,0x00000011,0x00000001,0x00050036,0x00000002,0x00000004,0x00000000, + 0x00000003,0x000200f8,0x00000005,0x0004003d,0x0000000b,0x0000000e,0x0000000d,0x0004003d, + 0x0000000f,0x00000012,0x00000011,0x00050057,0x00000007,0x00000013,0x0000000e,0x00000012, + 0x0003003e,0x00000009,0x00000013,0x000100fd,0x00010038 +}; + +static const uint32_t vertShaderCode[] = { + 0x07230203,0x00010000,0x00080007,0x00000018,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, + 0x0009000f,0x00000000,0x00000004,0x6e69616d,0x00000000,0x00000009,0x0000000b,0x00000010, + 0x00000014,0x00030003,0x00000002,0x00000190,0x00090004,0x415f4c47,0x735f4252,0x72617065, + 0x5f657461,0x64616873,0x6f5f7265,0x63656a62,0x00007374,0x00090004,0x415f4c47,0x735f4252, + 0x69646168,0x6c5f676e,0x75676e61,0x5f656761,0x70303234,0x006b6361,0x00040005,0x00000004, + 0x6e69616d,0x00000000,0x00050005,0x00000009,0x63786574,0x64726f6f,0x00000000,0x00040005, + 0x0000000b,0x72747461,0x00000000,0x00060005,0x0000000e,0x505f6c67,0x65567265,0x78657472, + 0x00000000,0x00060006,0x0000000e,0x00000000,0x505f6c67,0x7469736f,0x006e6f69,0x00030005, + 0x00000010,0x00000000,0x00030005,0x00000014,0x00736f70,0x00040047,0x00000009,0x0000001e, + 0x00000000,0x00040047,0x0000000b,0x0000001e,0x00000001,0x00050048,0x0000000e,0x00000000, + 0x0000000b,0x00000000,0x00030047,0x0000000e,0x00000002,0x00040047,0x00000014,0x0000001e, + 0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006, + 0x00000020,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000003, + 0x00000007,0x0004003b,0x00000008,0x00000009,0x00000003,0x00040020,0x0000000a,0x00000001, + 0x00000007,0x0004003b,0x0000000a,0x0000000b,0x00000001,0x00040017,0x0000000d,0x00000006, + 0x00000004,0x0003001e,0x0000000e,0x0000000d,0x00040020,0x0000000f,0x00000003,0x0000000e, + 0x0004003b,0x0000000f,0x00000010,0x00000003,0x00040015,0x00000011,0x00000020,0x00000001, + 0x0004002b,0x00000011,0x00000012,0x00000000,0x00040020,0x00000013,0x00000001,0x0000000d, + 0x0004003b,0x00000013,0x00000014,0x00000001,0x00040020,0x00000016,0x00000003,0x0000000d, + 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d, + 0x00000007,0x0000000c,0x0000000b,0x0003003e,0x00000009,0x0000000c,0x0004003d,0x0000000d, + 0x00000015,0x00000014,0x00050041,0x00000016,0x00000017,0x00000010,0x00000012,0x0003003e, + 0x00000017,0x00000015,0x000100fd,0x00010038 +}; + +struct texture_object { + VkSampler sampler; + + VkImage image; + VkImageLayout imageLayout; + + VkDeviceMemory mem; + VkImageView view; + int32_t tex_width, tex_height; +}; + +static int validation_error = 0; + +VKAPI_ATTR VkBool32 VKAPI_CALL +BreakCallback(VkFlags msgFlags, VkDebugReportObjectTypeEXT objType, + uint64_t srcObject, size_t location, int32_t msgCode, + const char *pLayerPrefix, const char *pMsg, + void *pUserData) { +#ifdef _WIN32 + DebugBreak(); +#else + raise(SIGTRAP); +#endif + + return false; +} + +typedef struct { + VkImage image; + VkCommandBuffer cmd; + VkImageView view; +} SwapchainBuffers; + +struct demo { + GLFWwindow* window; + VkSurfaceKHR surface; + bool use_staging_buffer; + + VkInstance inst; + VkPhysicalDevice gpu; + VkDevice device; + VkQueue queue; + VkPhysicalDeviceProperties gpu_props; + VkPhysicalDeviceFeatures gpu_features; + VkQueueFamilyProperties *queue_props; + uint32_t graphics_queue_node_index; + + uint32_t enabled_extension_count; + uint32_t enabled_layer_count; + const char *extension_names[64]; + const char *enabled_layers[64]; + + int width, height; + VkFormat format; + VkColorSpaceKHR color_space; + + uint32_t swapchainImageCount; + VkSwapchainKHR swapchain; + SwapchainBuffers *buffers; + + VkCommandPool cmd_pool; + + struct { + VkFormat format; + + VkImage image; + VkDeviceMemory mem; + VkImageView view; + } depth; + + struct texture_object textures[DEMO_TEXTURE_COUNT]; + + struct { + VkBuffer buf; + VkDeviceMemory mem; + + VkPipelineVertexInputStateCreateInfo vi; + VkVertexInputBindingDescription vi_bindings[1]; + VkVertexInputAttributeDescription vi_attrs[2]; + } vertices; + + VkCommandBuffer setup_cmd; // Command Buffer for initialization commands + VkCommandBuffer draw_cmd; // Command Buffer for drawing commands + VkPipelineLayout pipeline_layout; + VkDescriptorSetLayout desc_layout; + VkPipelineCache pipelineCache; + VkRenderPass render_pass; + VkPipeline pipeline; + + VkShaderModule vert_shader_module; + VkShaderModule frag_shader_module; + + VkDescriptorPool desc_pool; + VkDescriptorSet desc_set; + + VkFramebuffer *framebuffers; + + VkPhysicalDeviceMemoryProperties memory_properties; + + int32_t curFrame; + int32_t frameCount; + bool validate; + bool use_break; + VkDebugReportCallbackEXT msg_callback; + + float depthStencil; + float depthIncrement; + + uint32_t current_buffer; + uint32_t queue_count; +}; + +VKAPI_ATTR VkBool32 VKAPI_CALL +dbgFunc(VkFlags msgFlags, VkDebugReportObjectTypeEXT objType, + uint64_t srcObject, size_t location, int32_t msgCode, + const char *pLayerPrefix, const char *pMsg, void *pUserData) { + char *message = (char *)malloc(strlen(pMsg) + 100); + + assert(message); + + validation_error = 1; + + if (msgFlags & VK_DEBUG_REPORT_ERROR_BIT_EXT) { + sprintf(message, "ERROR: [%s] Code %d : %s", pLayerPrefix, msgCode, + pMsg); + } else if (msgFlags & VK_DEBUG_REPORT_WARNING_BIT_EXT) { + sprintf(message, "WARNING: [%s] Code %d : %s", pLayerPrefix, msgCode, + pMsg); + } else { + return false; + } + + printf("%s\n", message); + fflush(stdout); + free(message); + + /* + * false indicates that layer should not bail-out of an + * API call that had validation failures. This may mean that the + * app dies inside the driver due to invalid parameter(s). + * That's what would happen without validation layers, so we'll + * keep that behavior here. + */ + return false; +} + +// Forward declaration: +static void demo_resize(struct demo *demo); + +static bool memory_type_from_properties(struct demo *demo, uint32_t typeBits, + VkFlags requirements_mask, + uint32_t *typeIndex) { + uint32_t i; + // Search memtypes to find first index with those properties + for (i = 0; i < VK_MAX_MEMORY_TYPES; i++) { + if ((typeBits & 1) == 1) { + // Type is available, does it match user properties? + if ((demo->memory_properties.memoryTypes[i].propertyFlags & + requirements_mask) == requirements_mask) { + *typeIndex = i; + return true; + } + } + typeBits >>= 1; + } + // No memory types matched, return failure + return false; +} + +static void demo_flush_init_cmd(struct demo *demo) { + VkResult U_ASSERT_ONLY err; + + if (demo->setup_cmd == VK_NULL_HANDLE) + return; + + err = vkEndCommandBuffer(demo->setup_cmd); + assert(!err); + + const VkCommandBuffer cmd_bufs[] = {demo->setup_cmd}; + VkFence nullFence = {VK_NULL_HANDLE}; + VkSubmitInfo submit_info = {.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO, + .pNext = NULL, + .waitSemaphoreCount = 0, + .pWaitSemaphores = NULL, + .pWaitDstStageMask = NULL, + .commandBufferCount = 1, + .pCommandBuffers = cmd_bufs, + .signalSemaphoreCount = 0, + .pSignalSemaphores = NULL}; + + err = vkQueueSubmit(demo->queue, 1, &submit_info, nullFence); + assert(!err); + + err = vkQueueWaitIdle(demo->queue); + assert(!err); + + vkFreeCommandBuffers(demo->device, demo->cmd_pool, 1, cmd_bufs); + demo->setup_cmd = VK_NULL_HANDLE; +} + +static void demo_set_image_layout(struct demo *demo, VkImage image, + VkImageAspectFlags aspectMask, + VkImageLayout old_image_layout, + VkImageLayout new_image_layout, + VkAccessFlagBits srcAccessMask) { + + VkResult U_ASSERT_ONLY err; + + if (demo->setup_cmd == VK_NULL_HANDLE) { + const VkCommandBufferAllocateInfo cmd = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, + .pNext = NULL, + .commandPool = demo->cmd_pool, + .level = VK_COMMAND_BUFFER_LEVEL_PRIMARY, + .commandBufferCount = 1, + }; + + err = vkAllocateCommandBuffers(demo->device, &cmd, &demo->setup_cmd); + assert(!err); + + VkCommandBufferBeginInfo cmd_buf_info = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + .pNext = NULL, + .flags = 0, + .pInheritanceInfo = NULL, + }; + err = vkBeginCommandBuffer(demo->setup_cmd, &cmd_buf_info); + assert(!err); + } + + VkImageMemoryBarrier image_memory_barrier = { + .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + .pNext = NULL, + .srcAccessMask = srcAccessMask, + .dstAccessMask = 0, + .oldLayout = old_image_layout, + .newLayout = new_image_layout, + .image = image, + .subresourceRange = {aspectMask, 0, 1, 0, 1}}; + + if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) { + /* Make sure anything that was copying from this image has completed */ + image_memory_barrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT; + } + + if (new_image_layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) { + image_memory_barrier.dstAccessMask = + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + } + + if (new_image_layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL) { + image_memory_barrier.dstAccessMask = + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + } + + if (new_image_layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) { + /* Make sure any Copy or CPU writes to image are flushed */ + image_memory_barrier.dstAccessMask = + VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT; + } + + VkImageMemoryBarrier *pmemory_barrier = &image_memory_barrier; + + VkPipelineStageFlags src_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + VkPipelineStageFlags dest_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + + vkCmdPipelineBarrier(demo->setup_cmd, src_stages, dest_stages, 0, 0, NULL, + 0, NULL, 1, pmemory_barrier); +} + +static void demo_draw_build_cmd(struct demo *demo) { + const VkCommandBufferBeginInfo cmd_buf_info = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + .pNext = NULL, + .flags = 0, + .pInheritanceInfo = NULL, + }; + const VkClearValue clear_values[2] = { + [0] = {.color.float32 = {0.2f, 0.2f, 0.2f, 0.2f}}, + [1] = {.depthStencil = {demo->depthStencil, 0}}, + }; + const VkRenderPassBeginInfo rp_begin = { + .sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, + .pNext = NULL, + .renderPass = demo->render_pass, + .framebuffer = demo->framebuffers[demo->current_buffer], + .renderArea.offset.x = 0, + .renderArea.offset.y = 0, + .renderArea.extent.width = demo->width, + .renderArea.extent.height = demo->height, + .clearValueCount = 2, + .pClearValues = clear_values, + }; + VkResult U_ASSERT_ONLY err; + + err = vkBeginCommandBuffer(demo->draw_cmd, &cmd_buf_info); + assert(!err); + + // We can use LAYOUT_UNDEFINED as a wildcard here because we don't care what + // happens to the previous contents of the image + VkImageMemoryBarrier image_memory_barrier = { + .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + .pNext = NULL, + .srcAccessMask = 0, + .dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, + .oldLayout = VK_IMAGE_LAYOUT_UNDEFINED, + .newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = demo->buffers[demo->current_buffer].image, + .subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}}; + + vkCmdPipelineBarrier(demo->draw_cmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, 0, 0, NULL, 0, + NULL, 1, &image_memory_barrier); + vkCmdBeginRenderPass(demo->draw_cmd, &rp_begin, VK_SUBPASS_CONTENTS_INLINE); + vkCmdBindPipeline(demo->draw_cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, + demo->pipeline); + vkCmdBindDescriptorSets(demo->draw_cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, + demo->pipeline_layout, 0, 1, &demo->desc_set, 0, + NULL); + + VkViewport viewport; + memset(&viewport, 0, sizeof(viewport)); + viewport.height = (float)demo->height; + viewport.width = (float)demo->width; + viewport.minDepth = (float)0.0f; + viewport.maxDepth = (float)1.0f; + vkCmdSetViewport(demo->draw_cmd, 0, 1, &viewport); + + VkRect2D scissor; + memset(&scissor, 0, sizeof(scissor)); + scissor.extent.width = demo->width; + scissor.extent.height = demo->height; + scissor.offset.x = 0; + scissor.offset.y = 0; + vkCmdSetScissor(demo->draw_cmd, 0, 1, &scissor); + + VkDeviceSize offsets[1] = {0}; + vkCmdBindVertexBuffers(demo->draw_cmd, VERTEX_BUFFER_BIND_ID, 1, + &demo->vertices.buf, offsets); + + vkCmdDraw(demo->draw_cmd, 3, 1, 0, 0); + vkCmdEndRenderPass(demo->draw_cmd); + + VkImageMemoryBarrier prePresentBarrier = { + .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + .pNext = NULL, + .srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, + .dstAccessMask = VK_ACCESS_MEMORY_READ_BIT, + .oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + .newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}}; + + prePresentBarrier.image = demo->buffers[demo->current_buffer].image; + VkImageMemoryBarrier *pmemory_barrier = &prePresentBarrier; + vkCmdPipelineBarrier(demo->draw_cmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, 0, 0, NULL, 0, + NULL, 1, pmemory_barrier); + + err = vkEndCommandBuffer(demo->draw_cmd); + assert(!err); +} + +static void demo_draw(struct demo *demo) { + VkResult U_ASSERT_ONLY err; + VkSemaphore imageAcquiredSemaphore, drawCompleteSemaphore; + VkSemaphoreCreateInfo semaphoreCreateInfo = { + .sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, + .pNext = NULL, + .flags = 0, + }; + + err = vkCreateSemaphore(demo->device, &semaphoreCreateInfo, + NULL, &imageAcquiredSemaphore); + assert(!err); + + err = vkCreateSemaphore(demo->device, &semaphoreCreateInfo, + NULL, &drawCompleteSemaphore); + assert(!err); + + // Get the index of the next available swapchain image: + err = vkAcquireNextImageKHR(demo->device, demo->swapchain, UINT64_MAX, + imageAcquiredSemaphore, + (VkFence)0, // TODO: Show use of fence + &demo->current_buffer); + if (err == VK_ERROR_OUT_OF_DATE_KHR) { + // demo->swapchain is out of date (e.g. the window was resized) and + // must be recreated: + demo_resize(demo); + demo_draw(demo); + vkDestroySemaphore(demo->device, imageAcquiredSemaphore, NULL); + vkDestroySemaphore(demo->device, drawCompleteSemaphore, NULL); + return; + } else if (err == VK_SUBOPTIMAL_KHR) { + // demo->swapchain is not as optimal as it could be, but the platform's + // presentation engine will still present the image correctly. + } else { + assert(!err); + } + + demo_flush_init_cmd(demo); + + // Wait for the present complete semaphore to be signaled to ensure + // that the image won't be rendered to until the presentation + // engine has fully released ownership to the application, and it is + // okay to render to the image. + + demo_draw_build_cmd(demo); + VkFence nullFence = VK_NULL_HANDLE; + VkPipelineStageFlags pipe_stage_flags = + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; + VkSubmitInfo submit_info = {.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO, + .pNext = NULL, + .waitSemaphoreCount = 1, + .pWaitSemaphores = &imageAcquiredSemaphore, + .pWaitDstStageMask = &pipe_stage_flags, + .commandBufferCount = 1, + .pCommandBuffers = &demo->draw_cmd, + .signalSemaphoreCount = 1, + .pSignalSemaphores = &drawCompleteSemaphore}; + + err = vkQueueSubmit(demo->queue, 1, &submit_info, nullFence); + assert(!err); + + VkPresentInfoKHR present = { + .sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, + .pNext = NULL, + .waitSemaphoreCount = 1, + .pWaitSemaphores = &drawCompleteSemaphore, + .swapchainCount = 1, + .pSwapchains = &demo->swapchain, + .pImageIndices = &demo->current_buffer, + }; + + err = vkQueuePresentKHR(demo->queue, &present); + if (err == VK_ERROR_OUT_OF_DATE_KHR) { + // demo->swapchain is out of date (e.g. the window was resized) and + // must be recreated: + demo_resize(demo); + } else if (err == VK_SUBOPTIMAL_KHR) { + // demo->swapchain is not as optimal as it could be, but the platform's + // presentation engine will still present the image correctly. + } else { + assert(!err); + } + + err = vkQueueWaitIdle(demo->queue); + assert(err == VK_SUCCESS); + + vkDestroySemaphore(demo->device, imageAcquiredSemaphore, NULL); + vkDestroySemaphore(demo->device, drawCompleteSemaphore, NULL); +} + +static void demo_prepare_buffers(struct demo *demo) { + VkResult U_ASSERT_ONLY err; + VkSwapchainKHR oldSwapchain = demo->swapchain; + + // Check the surface capabilities and formats + VkSurfaceCapabilitiesKHR surfCapabilities; + err = vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + demo->gpu, demo->surface, &surfCapabilities); + assert(!err); + + uint32_t presentModeCount; + err = vkGetPhysicalDeviceSurfacePresentModesKHR( + demo->gpu, demo->surface, &presentModeCount, NULL); + assert(!err); + VkPresentModeKHR *presentModes = + (VkPresentModeKHR *)malloc(presentModeCount * sizeof(VkPresentModeKHR)); + assert(presentModes); + err = vkGetPhysicalDeviceSurfacePresentModesKHR( + demo->gpu, demo->surface, &presentModeCount, presentModes); + assert(!err); + + VkExtent2D swapchainExtent; + // width and height are either both 0xFFFFFFFF, or both not 0xFFFFFFFF. + if (surfCapabilities.currentExtent.width == 0xFFFFFFFF) { + // If the surface size is undefined, the size is set to the size + // of the images requested, which must fit within the minimum and + // maximum values. + swapchainExtent.width = demo->width; + swapchainExtent.height = demo->height; + + if (swapchainExtent.width < surfCapabilities.minImageExtent.width) { + swapchainExtent.width = surfCapabilities.minImageExtent.width; + } else if (swapchainExtent.width > surfCapabilities.maxImageExtent.width) { + swapchainExtent.width = surfCapabilities.maxImageExtent.width; + } + + if (swapchainExtent.height < surfCapabilities.minImageExtent.height) { + swapchainExtent.height = surfCapabilities.minImageExtent.height; + } else if (swapchainExtent.height > surfCapabilities.maxImageExtent.height) { + swapchainExtent.height = surfCapabilities.maxImageExtent.height; + } + } else { + // If the surface size is defined, the swap chain size must match + swapchainExtent = surfCapabilities.currentExtent; + demo->width = surfCapabilities.currentExtent.width; + demo->height = surfCapabilities.currentExtent.height; + } + + VkPresentModeKHR swapchainPresentMode = VK_PRESENT_MODE_FIFO_KHR; + + // Determine the number of VkImage's to use in the swap chain. + // Application desires to only acquire 1 image at a time (which is + // "surfCapabilities.minImageCount"). + uint32_t desiredNumOfSwapchainImages = surfCapabilities.minImageCount; + // If maxImageCount is 0, we can ask for as many images as we want; + // otherwise we're limited to maxImageCount + if ((surfCapabilities.maxImageCount > 0) && + (desiredNumOfSwapchainImages > surfCapabilities.maxImageCount)) { + // Application must settle for fewer images than desired: + desiredNumOfSwapchainImages = surfCapabilities.maxImageCount; + } + + VkSurfaceTransformFlagsKHR preTransform; + if (surfCapabilities.supportedTransforms & + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR) { + preTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR; + } else { + preTransform = surfCapabilities.currentTransform; + } + + const VkSwapchainCreateInfoKHR swapchain = { + .sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, + .pNext = NULL, + .surface = demo->surface, + .minImageCount = desiredNumOfSwapchainImages, + .imageFormat = demo->format, + .imageColorSpace = demo->color_space, + .imageExtent = + { + .width = swapchainExtent.width, .height = swapchainExtent.height, + }, + .imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, + .preTransform = preTransform, + .compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR, + .imageArrayLayers = 1, + .imageSharingMode = VK_SHARING_MODE_EXCLUSIVE, + .queueFamilyIndexCount = 0, + .pQueueFamilyIndices = NULL, + .presentMode = swapchainPresentMode, + .oldSwapchain = oldSwapchain, + .clipped = true, + }; + uint32_t i; + + err = vkCreateSwapchainKHR(demo->device, &swapchain, NULL, &demo->swapchain); + assert(!err); + + // If we just re-created an existing swapchain, we should destroy the old + // swapchain at this point. + // Note: destroying the swapchain also cleans up all its associated + // presentable images once the platform is done with them. + if (oldSwapchain != VK_NULL_HANDLE) { + vkDestroySwapchainKHR(demo->device, oldSwapchain, NULL); + } + + err = vkGetSwapchainImagesKHR(demo->device, demo->swapchain, + &demo->swapchainImageCount, NULL); + assert(!err); + + VkImage *swapchainImages = + (VkImage *)malloc(demo->swapchainImageCount * sizeof(VkImage)); + assert(swapchainImages); + err = vkGetSwapchainImagesKHR(demo->device, demo->swapchain, + &demo->swapchainImageCount, + swapchainImages); + assert(!err); + + demo->buffers = (SwapchainBuffers *)malloc(sizeof(SwapchainBuffers) * + demo->swapchainImageCount); + assert(demo->buffers); + + for (i = 0; i < demo->swapchainImageCount; i++) { + VkImageViewCreateInfo color_attachment_view = { + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .pNext = NULL, + .format = demo->format, + .components = + { + .r = VK_COMPONENT_SWIZZLE_R, + .g = VK_COMPONENT_SWIZZLE_G, + .b = VK_COMPONENT_SWIZZLE_B, + .a = VK_COMPONENT_SWIZZLE_A, + }, + .subresourceRange = {.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1}, + .viewType = VK_IMAGE_VIEW_TYPE_2D, + .flags = 0, + }; + + demo->buffers[i].image = swapchainImages[i]; + + color_attachment_view.image = demo->buffers[i].image; + + err = vkCreateImageView(demo->device, &color_attachment_view, NULL, + &demo->buffers[i].view); + assert(!err); + } + + demo->current_buffer = 0; + + if (NULL != presentModes) { + free(presentModes); + } +} + +static void demo_prepare_depth(struct demo *demo) { + const VkFormat depth_format = VK_FORMAT_D16_UNORM; + const VkImageCreateInfo image = { + .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, + .pNext = NULL, + .imageType = VK_IMAGE_TYPE_2D, + .format = depth_format, + .extent = {demo->width, demo->height, 1}, + .mipLevels = 1, + .arrayLayers = 1, + .samples = VK_SAMPLE_COUNT_1_BIT, + .tiling = VK_IMAGE_TILING_OPTIMAL, + .usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, + .flags = 0, + }; + VkMemoryAllocateInfo mem_alloc = { + .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + .pNext = NULL, + .allocationSize = 0, + .memoryTypeIndex = 0, + }; + VkImageViewCreateInfo view = { + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .pNext = NULL, + .image = VK_NULL_HANDLE, + .format = depth_format, + .subresourceRange = {.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT, + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1}, + .flags = 0, + .viewType = VK_IMAGE_VIEW_TYPE_2D, + }; + + VkMemoryRequirements mem_reqs; + VkResult U_ASSERT_ONLY err; + bool U_ASSERT_ONLY pass; + + demo->depth.format = depth_format; + + /* create image */ + err = vkCreateImage(demo->device, &image, NULL, &demo->depth.image); + assert(!err); + + /* get memory requirements for this object */ + vkGetImageMemoryRequirements(demo->device, demo->depth.image, &mem_reqs); + + /* select memory size and type */ + mem_alloc.allocationSize = mem_reqs.size; + pass = memory_type_from_properties(demo, mem_reqs.memoryTypeBits, + 0, /* No requirements */ + &mem_alloc.memoryTypeIndex); + assert(pass); + + /* allocate memory */ + err = vkAllocateMemory(demo->device, &mem_alloc, NULL, &demo->depth.mem); + assert(!err); + + /* bind memory */ + err = + vkBindImageMemory(demo->device, demo->depth.image, demo->depth.mem, 0); + assert(!err); + + demo_set_image_layout(demo, demo->depth.image, VK_IMAGE_ASPECT_DEPTH_BIT, + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + 0); + + /* create image view */ + view.image = demo->depth.image; + err = vkCreateImageView(demo->device, &view, NULL, &demo->depth.view); + assert(!err); +} + +static void +demo_prepare_texture_image(struct demo *demo, const uint32_t *tex_colors, + struct texture_object *tex_obj, VkImageTiling tiling, + VkImageUsageFlags usage, VkFlags required_props) { + const VkFormat tex_format = VK_FORMAT_B8G8R8A8_UNORM; + const int32_t tex_width = 2; + const int32_t tex_height = 2; + VkResult U_ASSERT_ONLY err; + bool U_ASSERT_ONLY pass; + + tex_obj->tex_width = tex_width; + tex_obj->tex_height = tex_height; + + const VkImageCreateInfo image_create_info = { + .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, + .pNext = NULL, + .imageType = VK_IMAGE_TYPE_2D, + .format = tex_format, + .extent = {tex_width, tex_height, 1}, + .mipLevels = 1, + .arrayLayers = 1, + .samples = VK_SAMPLE_COUNT_1_BIT, + .tiling = tiling, + .usage = usage, + .flags = 0, + .initialLayout = VK_IMAGE_LAYOUT_PREINITIALIZED + }; + VkMemoryAllocateInfo mem_alloc = { + .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + .pNext = NULL, + .allocationSize = 0, + .memoryTypeIndex = 0, + }; + + VkMemoryRequirements mem_reqs; + + err = + vkCreateImage(demo->device, &image_create_info, NULL, &tex_obj->image); + assert(!err); + + vkGetImageMemoryRequirements(demo->device, tex_obj->image, &mem_reqs); + + mem_alloc.allocationSize = mem_reqs.size; + pass = + memory_type_from_properties(demo, mem_reqs.memoryTypeBits, + required_props, &mem_alloc.memoryTypeIndex); + assert(pass); + + /* allocate memory */ + err = vkAllocateMemory(demo->device, &mem_alloc, NULL, &tex_obj->mem); + assert(!err); + + /* bind memory */ + err = vkBindImageMemory(demo->device, tex_obj->image, tex_obj->mem, 0); + assert(!err); + + if (required_props & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) { + const VkImageSubresource subres = { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .mipLevel = 0, + .arrayLayer = 0, + }; + VkSubresourceLayout layout; + void *data; + int32_t x, y; + + vkGetImageSubresourceLayout(demo->device, tex_obj->image, &subres, + &layout); + + err = vkMapMemory(demo->device, tex_obj->mem, 0, + mem_alloc.allocationSize, 0, &data); + assert(!err); + + for (y = 0; y < tex_height; y++) { + uint32_t *row = (uint32_t *)((char *)data + layout.rowPitch * y); + for (x = 0; x < tex_width; x++) + row[x] = tex_colors[(x & 1) ^ (y & 1)]; + } + + vkUnmapMemory(demo->device, tex_obj->mem); + } + + tex_obj->imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + demo_set_image_layout(demo, tex_obj->image, VK_IMAGE_ASPECT_COLOR_BIT, + VK_IMAGE_LAYOUT_PREINITIALIZED, tex_obj->imageLayout, + VK_ACCESS_HOST_WRITE_BIT); + /* setting the image layout does not reference the actual memory so no need + * to add a mem ref */ +} + +static void demo_destroy_texture_image(struct demo *demo, + struct texture_object *tex_obj) { + /* clean up staging resources */ + vkDestroyImage(demo->device, tex_obj->image, NULL); + vkFreeMemory(demo->device, tex_obj->mem, NULL); +} + +static void demo_prepare_textures(struct demo *demo) { + const VkFormat tex_format = VK_FORMAT_B8G8R8A8_UNORM; + VkFormatProperties props; + const uint32_t tex_colors[DEMO_TEXTURE_COUNT][2] = { + {0xffff0000, 0xff00ff00}, + }; + uint32_t i; + VkResult U_ASSERT_ONLY err; + + vkGetPhysicalDeviceFormatProperties(demo->gpu, tex_format, &props); + + for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { + if ((props.linearTilingFeatures & + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) && + !demo->use_staging_buffer) { + /* Device can texture using linear textures */ + demo_prepare_texture_image( + demo, tex_colors[i], &demo->textures[i], VK_IMAGE_TILING_LINEAR, + VK_IMAGE_USAGE_SAMPLED_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT); + } else if (props.optimalTilingFeatures & + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) { + /* Must use staging buffer to copy linear texture to optimized */ + struct texture_object staging_texture; + + memset(&staging_texture, 0, sizeof(staging_texture)); + demo_prepare_texture_image( + demo, tex_colors[i], &staging_texture, VK_IMAGE_TILING_LINEAR, + VK_IMAGE_USAGE_TRANSFER_SRC_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT); + + demo_prepare_texture_image( + demo, tex_colors[i], &demo->textures[i], + VK_IMAGE_TILING_OPTIMAL, + (VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); + + demo_set_image_layout(demo, staging_texture.image, + VK_IMAGE_ASPECT_COLOR_BIT, + staging_texture.imageLayout, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + 0); + + demo_set_image_layout(demo, demo->textures[i].image, + VK_IMAGE_ASPECT_COLOR_BIT, + demo->textures[i].imageLayout, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 0); + + VkImageCopy copy_region = { + .srcSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1}, + .srcOffset = {0, 0, 0}, + .dstSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1}, + .dstOffset = {0, 0, 0}, + .extent = {staging_texture.tex_width, + staging_texture.tex_height, 1}, + }; + vkCmdCopyImage( + demo->setup_cmd, staging_texture.image, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, demo->textures[i].image, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ©_region); + + demo_set_image_layout(demo, demo->textures[i].image, + VK_IMAGE_ASPECT_COLOR_BIT, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + demo->textures[i].imageLayout, + 0); + + demo_flush_init_cmd(demo); + + demo_destroy_texture_image(demo, &staging_texture); + } else { + /* Can't support VK_FORMAT_B8G8R8A8_UNORM !? */ + assert(!"No support for B8G8R8A8_UNORM as texture image format"); + } + + const VkSamplerCreateInfo sampler = { + .sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, + .pNext = NULL, + .magFilter = VK_FILTER_NEAREST, + .minFilter = VK_FILTER_NEAREST, + .mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST, + .addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT, + .addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT, + .addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT, + .mipLodBias = 0.0f, + .anisotropyEnable = VK_FALSE, + .maxAnisotropy = 1, + .compareOp = VK_COMPARE_OP_NEVER, + .minLod = 0.0f, + .maxLod = 0.0f, + .borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, + .unnormalizedCoordinates = VK_FALSE, + }; + VkImageViewCreateInfo view = { + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .pNext = NULL, + .image = VK_NULL_HANDLE, + .viewType = VK_IMAGE_VIEW_TYPE_2D, + .format = tex_format, + .components = + { + VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, + VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A, + }, + .subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}, + .flags = 0, + }; + + /* create sampler */ + err = vkCreateSampler(demo->device, &sampler, NULL, + &demo->textures[i].sampler); + assert(!err); + + /* create image view */ + view.image = demo->textures[i].image; + err = vkCreateImageView(demo->device, &view, NULL, + &demo->textures[i].view); + assert(!err); + } +} + +static void demo_prepare_vertices(struct demo *demo) { + // clang-format off + const float vb[3][5] = { + /* position texcoord */ + { -1.0f, -1.0f, 0.25f, 0.0f, 0.0f }, + { 1.0f, -1.0f, 0.25f, 1.0f, 0.0f }, + { 0.0f, 1.0f, 1.0f, 0.5f, 1.0f }, + }; + // clang-format on + const VkBufferCreateInfo buf_info = { + .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, + .pNext = NULL, + .size = sizeof(vb), + .usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, + .flags = 0, + }; + VkMemoryAllocateInfo mem_alloc = { + .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + .pNext = NULL, + .allocationSize = 0, + .memoryTypeIndex = 0, + }; + VkMemoryRequirements mem_reqs; + VkResult U_ASSERT_ONLY err; + bool U_ASSERT_ONLY pass; + void *data; + + memset(&demo->vertices, 0, sizeof(demo->vertices)); + + err = vkCreateBuffer(demo->device, &buf_info, NULL, &demo->vertices.buf); + assert(!err); + + vkGetBufferMemoryRequirements(demo->device, demo->vertices.buf, &mem_reqs); + assert(!err); + + mem_alloc.allocationSize = mem_reqs.size; + pass = memory_type_from_properties(demo, mem_reqs.memoryTypeBits, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + &mem_alloc.memoryTypeIndex); + assert(pass); + + err = vkAllocateMemory(demo->device, &mem_alloc, NULL, &demo->vertices.mem); + assert(!err); + + err = vkMapMemory(demo->device, demo->vertices.mem, 0, + mem_alloc.allocationSize, 0, &data); + assert(!err); + + memcpy(data, vb, sizeof(vb)); + + vkUnmapMemory(demo->device, demo->vertices.mem); + + err = vkBindBufferMemory(demo->device, demo->vertices.buf, + demo->vertices.mem, 0); + assert(!err); + + demo->vertices.vi.sType = + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; + demo->vertices.vi.pNext = NULL; + demo->vertices.vi.vertexBindingDescriptionCount = 1; + demo->vertices.vi.pVertexBindingDescriptions = demo->vertices.vi_bindings; + demo->vertices.vi.vertexAttributeDescriptionCount = 2; + demo->vertices.vi.pVertexAttributeDescriptions = demo->vertices.vi_attrs; + + demo->vertices.vi_bindings[0].binding = VERTEX_BUFFER_BIND_ID; + demo->vertices.vi_bindings[0].stride = sizeof(vb[0]); + demo->vertices.vi_bindings[0].inputRate = VK_VERTEX_INPUT_RATE_VERTEX; + + demo->vertices.vi_attrs[0].binding = VERTEX_BUFFER_BIND_ID; + demo->vertices.vi_attrs[0].location = 0; + demo->vertices.vi_attrs[0].format = VK_FORMAT_R32G32B32_SFLOAT; + demo->vertices.vi_attrs[0].offset = 0; + + demo->vertices.vi_attrs[1].binding = VERTEX_BUFFER_BIND_ID; + demo->vertices.vi_attrs[1].location = 1; + demo->vertices.vi_attrs[1].format = VK_FORMAT_R32G32_SFLOAT; + demo->vertices.vi_attrs[1].offset = sizeof(float) * 3; +} + +static void demo_prepare_descriptor_layout(struct demo *demo) { + const VkDescriptorSetLayoutBinding layout_binding = { + .binding = 0, + .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + .descriptorCount = DEMO_TEXTURE_COUNT, + .stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT, + .pImmutableSamplers = NULL, + }; + const VkDescriptorSetLayoutCreateInfo descriptor_layout = { + .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, + .pNext = NULL, + .bindingCount = 1, + .pBindings = &layout_binding, + }; + VkResult U_ASSERT_ONLY err; + + err = vkCreateDescriptorSetLayout(demo->device, &descriptor_layout, NULL, + &demo->desc_layout); + assert(!err); + + const VkPipelineLayoutCreateInfo pPipelineLayoutCreateInfo = { + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + .pNext = NULL, + .setLayoutCount = 1, + .pSetLayouts = &demo->desc_layout, + }; + + err = vkCreatePipelineLayout(demo->device, &pPipelineLayoutCreateInfo, NULL, + &demo->pipeline_layout); + assert(!err); +} + +static void demo_prepare_render_pass(struct demo *demo) { + const VkAttachmentDescription attachments[2] = { + [0] = + { + .format = demo->format, + .samples = VK_SAMPLE_COUNT_1_BIT, + .loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR, + .storeOp = VK_ATTACHMENT_STORE_OP_STORE, + .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, + .stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, + .initialLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + .finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + }, + [1] = + { + .format = demo->depth.format, + .samples = VK_SAMPLE_COUNT_1_BIT, + .loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR, + .storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, + .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, + .stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, + .initialLayout = + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + .finalLayout = + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + }, + }; + const VkAttachmentReference color_reference = { + .attachment = 0, .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + }; + const VkAttachmentReference depth_reference = { + .attachment = 1, + .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + }; + const VkSubpassDescription subpass = { + .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS, + .flags = 0, + .inputAttachmentCount = 0, + .pInputAttachments = NULL, + .colorAttachmentCount = 1, + .pColorAttachments = &color_reference, + .pResolveAttachments = NULL, + .pDepthStencilAttachment = &depth_reference, + .preserveAttachmentCount = 0, + .pPreserveAttachments = NULL, + }; + const VkRenderPassCreateInfo rp_info = { + .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, + .pNext = NULL, + .attachmentCount = 2, + .pAttachments = attachments, + .subpassCount = 1, + .pSubpasses = &subpass, + .dependencyCount = 0, + .pDependencies = NULL, + }; + VkResult U_ASSERT_ONLY err; + + err = vkCreateRenderPass(demo->device, &rp_info, NULL, &demo->render_pass); + assert(!err); +} + +static VkShaderModule +demo_prepare_shader_module(struct demo *demo, const void *code, size_t size) { + VkShaderModuleCreateInfo moduleCreateInfo; + VkShaderModule module; + VkResult U_ASSERT_ONLY err; + + moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; + moduleCreateInfo.pNext = NULL; + + moduleCreateInfo.codeSize = size; + moduleCreateInfo.pCode = code; + moduleCreateInfo.flags = 0; + err = vkCreateShaderModule(demo->device, &moduleCreateInfo, NULL, &module); + assert(!err); + + return module; +} + +static VkShaderModule demo_prepare_vs(struct demo *demo) { + size_t size = sizeof(vertShaderCode); + + demo->vert_shader_module = + demo_prepare_shader_module(demo, vertShaderCode, size); + + return demo->vert_shader_module; +} + +static VkShaderModule demo_prepare_fs(struct demo *demo) { + size_t size = sizeof(fragShaderCode); + + demo->frag_shader_module = + demo_prepare_shader_module(demo, fragShaderCode, size); + + return demo->frag_shader_module; +} + +static void demo_prepare_pipeline(struct demo *demo) { + VkGraphicsPipelineCreateInfo pipeline; + VkPipelineCacheCreateInfo pipelineCache; + + VkPipelineVertexInputStateCreateInfo vi; + VkPipelineInputAssemblyStateCreateInfo ia; + VkPipelineRasterizationStateCreateInfo rs; + VkPipelineColorBlendStateCreateInfo cb; + VkPipelineDepthStencilStateCreateInfo ds; + VkPipelineViewportStateCreateInfo vp; + VkPipelineMultisampleStateCreateInfo ms; + VkDynamicState dynamicStateEnables[(VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1)]; + VkPipelineDynamicStateCreateInfo dynamicState; + + VkResult U_ASSERT_ONLY err; + + memset(dynamicStateEnables, 0, sizeof dynamicStateEnables); + memset(&dynamicState, 0, sizeof dynamicState); + dynamicState.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; + dynamicState.pDynamicStates = dynamicStateEnables; + + memset(&pipeline, 0, sizeof(pipeline)); + pipeline.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; + pipeline.layout = demo->pipeline_layout; + + vi = demo->vertices.vi; + + memset(&ia, 0, sizeof(ia)); + ia.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; + ia.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + + memset(&rs, 0, sizeof(rs)); + rs.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; + rs.polygonMode = VK_POLYGON_MODE_FILL; + rs.cullMode = VK_CULL_MODE_BACK_BIT; + rs.frontFace = VK_FRONT_FACE_CLOCKWISE; + rs.depthClampEnable = VK_FALSE; + rs.rasterizerDiscardEnable = VK_FALSE; + rs.depthBiasEnable = VK_FALSE; + rs.lineWidth = 1.0f; + + memset(&cb, 0, sizeof(cb)); + cb.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; + VkPipelineColorBlendAttachmentState att_state[1]; + memset(att_state, 0, sizeof(att_state)); + att_state[0].colorWriteMask = 0xf; + att_state[0].blendEnable = VK_FALSE; + cb.attachmentCount = 1; + cb.pAttachments = att_state; + + memset(&vp, 0, sizeof(vp)); + vp.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; + vp.viewportCount = 1; + dynamicStateEnables[dynamicState.dynamicStateCount++] = + VK_DYNAMIC_STATE_VIEWPORT; + vp.scissorCount = 1; + dynamicStateEnables[dynamicState.dynamicStateCount++] = + VK_DYNAMIC_STATE_SCISSOR; + + memset(&ds, 0, sizeof(ds)); + ds.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; + ds.depthTestEnable = VK_TRUE; + ds.depthWriteEnable = VK_TRUE; + ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; + ds.depthBoundsTestEnable = VK_FALSE; + ds.back.failOp = VK_STENCIL_OP_KEEP; + ds.back.passOp = VK_STENCIL_OP_KEEP; + ds.back.compareOp = VK_COMPARE_OP_ALWAYS; + ds.stencilTestEnable = VK_FALSE; + ds.front = ds.back; + + memset(&ms, 0, sizeof(ms)); + ms.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; + ms.pSampleMask = NULL; + ms.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; + + // Two stages: vs and fs + pipeline.stageCount = 2; + VkPipelineShaderStageCreateInfo shaderStages[2]; + memset(&shaderStages, 0, 2 * sizeof(VkPipelineShaderStageCreateInfo)); + + shaderStages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[0].stage = VK_SHADER_STAGE_VERTEX_BIT; + shaderStages[0].module = demo_prepare_vs(demo); + shaderStages[0].pName = "main"; + + shaderStages[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT; + shaderStages[1].module = demo_prepare_fs(demo); + shaderStages[1].pName = "main"; + + pipeline.pVertexInputState = &vi; + pipeline.pInputAssemblyState = &ia; + pipeline.pRasterizationState = &rs; + pipeline.pColorBlendState = &cb; + pipeline.pMultisampleState = &ms; + pipeline.pViewportState = &vp; + pipeline.pDepthStencilState = &ds; + pipeline.pStages = shaderStages; + pipeline.renderPass = demo->render_pass; + pipeline.pDynamicState = &dynamicState; + + memset(&pipelineCache, 0, sizeof(pipelineCache)); + pipelineCache.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO; + + err = vkCreatePipelineCache(demo->device, &pipelineCache, NULL, + &demo->pipelineCache); + assert(!err); + err = vkCreateGraphicsPipelines(demo->device, demo->pipelineCache, 1, + &pipeline, NULL, &demo->pipeline); + assert(!err); + + vkDestroyPipelineCache(demo->device, demo->pipelineCache, NULL); + + vkDestroyShaderModule(demo->device, demo->frag_shader_module, NULL); + vkDestroyShaderModule(demo->device, demo->vert_shader_module, NULL); +} + +static void demo_prepare_descriptor_pool(struct demo *demo) { + const VkDescriptorPoolSize type_count = { + .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + .descriptorCount = DEMO_TEXTURE_COUNT, + }; + const VkDescriptorPoolCreateInfo descriptor_pool = { + .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, + .pNext = NULL, + .maxSets = 1, + .poolSizeCount = 1, + .pPoolSizes = &type_count, + }; + VkResult U_ASSERT_ONLY err; + + err = vkCreateDescriptorPool(demo->device, &descriptor_pool, NULL, + &demo->desc_pool); + assert(!err); +} + +static void demo_prepare_descriptor_set(struct demo *demo) { + VkDescriptorImageInfo tex_descs[DEMO_TEXTURE_COUNT]; + VkWriteDescriptorSet write; + VkResult U_ASSERT_ONLY err; + uint32_t i; + + VkDescriptorSetAllocateInfo alloc_info = { + .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, + .pNext = NULL, + .descriptorPool = demo->desc_pool, + .descriptorSetCount = 1, + .pSetLayouts = &demo->desc_layout}; + err = vkAllocateDescriptorSets(demo->device, &alloc_info, &demo->desc_set); + assert(!err); + + memset(&tex_descs, 0, sizeof(tex_descs)); + for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { + tex_descs[i].sampler = demo->textures[i].sampler; + tex_descs[i].imageView = demo->textures[i].view; + tex_descs[i].imageLayout = VK_IMAGE_LAYOUT_GENERAL; + } + + memset(&write, 0, sizeof(write)); + write.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + write.dstSet = demo->desc_set; + write.descriptorCount = DEMO_TEXTURE_COUNT; + write.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + write.pImageInfo = tex_descs; + + vkUpdateDescriptorSets(demo->device, 1, &write, 0, NULL); +} + +static void demo_prepare_framebuffers(struct demo *demo) { + VkImageView attachments[2]; + attachments[1] = demo->depth.view; + + const VkFramebufferCreateInfo fb_info = { + .sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, + .pNext = NULL, + .renderPass = demo->render_pass, + .attachmentCount = 2, + .pAttachments = attachments, + .width = demo->width, + .height = demo->height, + .layers = 1, + }; + VkResult U_ASSERT_ONLY err; + uint32_t i; + + demo->framebuffers = (VkFramebuffer *)malloc(demo->swapchainImageCount * + sizeof(VkFramebuffer)); + assert(demo->framebuffers); + + for (i = 0; i < demo->swapchainImageCount; i++) { + attachments[0] = demo->buffers[i].view; + err = vkCreateFramebuffer(demo->device, &fb_info, NULL, + &demo->framebuffers[i]); + assert(!err); + } +} + +static void demo_prepare(struct demo *demo) { + VkResult U_ASSERT_ONLY err; + + const VkCommandPoolCreateInfo cmd_pool_info = { + .sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, + .pNext = NULL, + .queueFamilyIndex = demo->graphics_queue_node_index, + .flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, + }; + err = vkCreateCommandPool(demo->device, &cmd_pool_info, NULL, + &demo->cmd_pool); + assert(!err); + + const VkCommandBufferAllocateInfo cmd = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, + .pNext = NULL, + .commandPool = demo->cmd_pool, + .level = VK_COMMAND_BUFFER_LEVEL_PRIMARY, + .commandBufferCount = 1, + }; + err = vkAllocateCommandBuffers(demo->device, &cmd, &demo->draw_cmd); + assert(!err); + + demo_prepare_buffers(demo); + demo_prepare_depth(demo); + demo_prepare_textures(demo); + demo_prepare_vertices(demo); + demo_prepare_descriptor_layout(demo); + demo_prepare_render_pass(demo); + demo_prepare_pipeline(demo); + + demo_prepare_descriptor_pool(demo); + demo_prepare_descriptor_set(demo); + + demo_prepare_framebuffers(demo); +} + +static void demo_error_callback(int error, const char* description) { + printf("GLFW error: %s\n", description); + fflush(stdout); +} + +static void demo_key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { + if (key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} + +static void demo_refresh_callback(GLFWwindow* window) { + struct demo* demo = glfwGetWindowUserPointer(window); + demo_draw(demo); +} + +static void demo_resize_callback(GLFWwindow* window, int width, int height) { + struct demo* demo = glfwGetWindowUserPointer(window); + demo->width = width; + demo->height = height; + demo_resize(demo); +} + +static void demo_run(struct demo *demo) { + while (!glfwWindowShouldClose(demo->window)) { + glfwPollEvents(); + + demo_draw(demo); + + if (demo->depthStencil > 0.99f) + demo->depthIncrement = -0.001f; + if (demo->depthStencil < 0.8f) + demo->depthIncrement = 0.001f; + + demo->depthStencil += demo->depthIncrement; + + // Wait for work to finish before updating MVP. + vkDeviceWaitIdle(demo->device); + demo->curFrame++; + if (demo->frameCount != INT32_MAX && demo->curFrame == demo->frameCount) + glfwSetWindowShouldClose(demo->window, GLFW_TRUE); + } +} + +static void demo_create_window(struct demo *demo) { + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + + demo->window = glfwCreateWindow(demo->width, + demo->height, + APP_LONG_NAME, + NULL, + NULL); + if (!demo->window) { + // It didn't work, so try to give a useful error: + printf("Cannot create a window in which to draw!\n"); + fflush(stdout); + exit(1); + } + + glfwSetWindowUserPointer(demo->window, demo); + glfwSetWindowRefreshCallback(demo->window, demo_refresh_callback); + glfwSetFramebufferSizeCallback(demo->window, demo_resize_callback); + glfwSetKeyCallback(demo->window, demo_key_callback); +} + +/* + * Return 1 (true) if all layer names specified in check_names + * can be found in given layer properties. + */ +static VkBool32 demo_check_layers(uint32_t check_count, const char **check_names, + uint32_t layer_count, + VkLayerProperties *layers) { + uint32_t i, j; + for (i = 0; i < check_count; i++) { + VkBool32 found = 0; + for (j = 0; j < layer_count; j++) { + if (!strcmp(check_names[i], layers[j].layerName)) { + found = 1; + break; + } + } + if (!found) { + fprintf(stderr, "Cannot find layer: %s\n", check_names[i]); + return 0; + } + } + return 1; +} + +static void demo_init_vk(struct demo *demo) { + VkResult err; + VkBool32 portability_enumeration = VK_FALSE; + uint32_t i = 0; + uint32_t required_extension_count = 0; + uint32_t instance_extension_count = 0; + uint32_t instance_layer_count = 0; + uint32_t validation_layer_count = 0; + const char **required_extensions = NULL; + const char **instance_validation_layers = NULL; + demo->enabled_extension_count = 0; + demo->enabled_layer_count = 0; + + char *instance_validation_layers_alt1[] = { + "VK_LAYER_LUNARG_standard_validation" + }; + + char *instance_validation_layers_alt2[] = { + "VK_LAYER_GOOGLE_threading", "VK_LAYER_LUNARG_parameter_validation", + "VK_LAYER_LUNARG_object_tracker", "VK_LAYER_LUNARG_image", + "VK_LAYER_LUNARG_core_validation", "VK_LAYER_LUNARG_swapchain", + "VK_LAYER_GOOGLE_unique_objects" + }; + + /* Look for validation layers */ + VkBool32 validation_found = 0; + if (demo->validate) { + + err = vkEnumerateInstanceLayerProperties(&instance_layer_count, NULL); + assert(!err); + + instance_validation_layers = (const char**) instance_validation_layers_alt1; + if (instance_layer_count > 0) { + VkLayerProperties *instance_layers = + malloc(sizeof (VkLayerProperties) * instance_layer_count); + err = vkEnumerateInstanceLayerProperties(&instance_layer_count, + instance_layers); + assert(!err); + + + validation_found = demo_check_layers( + ARRAY_SIZE(instance_validation_layers_alt1), + instance_validation_layers, instance_layer_count, + instance_layers); + if (validation_found) { + demo->enabled_layer_count = ARRAY_SIZE(instance_validation_layers_alt1); + demo->enabled_layers[0] = "VK_LAYER_LUNARG_standard_validation"; + validation_layer_count = 1; + } else { + // use alternative set of validation layers + instance_validation_layers = + (const char**) instance_validation_layers_alt2; + demo->enabled_layer_count = ARRAY_SIZE(instance_validation_layers_alt2); + validation_found = demo_check_layers( + ARRAY_SIZE(instance_validation_layers_alt2), + instance_validation_layers, instance_layer_count, + instance_layers); + validation_layer_count = + ARRAY_SIZE(instance_validation_layers_alt2); + for (i = 0; i < validation_layer_count; i++) { + demo->enabled_layers[i] = instance_validation_layers[i]; + } + } + free(instance_layers); + } + + if (!validation_found) { + ERR_EXIT("vkEnumerateInstanceLayerProperties failed to find " + "required validation layer.\n\n" + "Please look at the Getting Started guide for additional " + "information.\n", + "vkCreateInstance Failure"); + } + } + + /* Look for instance extensions */ + required_extensions = glfwGetRequiredInstanceExtensions(&required_extension_count); + if (!required_extensions) { + ERR_EXIT("glfwGetRequiredInstanceExtensions failed to find the " + "platform surface extensions.\n\nDo you have a compatible " + "Vulkan installable client driver (ICD) installed?\nPlease " + "look at the Getting Started guide for additional " + "information.\n", + "vkCreateInstance Failure"); + } + + for (i = 0; i < required_extension_count; i++) { + demo->extension_names[demo->enabled_extension_count++] = required_extensions[i]; + assert(demo->enabled_extension_count < 64); + } + + err = vkEnumerateInstanceExtensionProperties( + NULL, &instance_extension_count, NULL); + assert(!err); + + if (instance_extension_count > 0) { + VkExtensionProperties *instance_extensions = + malloc(sizeof(VkExtensionProperties) * instance_extension_count); + err = vkEnumerateInstanceExtensionProperties( + NULL, &instance_extension_count, instance_extensions); + assert(!err); + for (i = 0; i < instance_extension_count; i++) { + if (!strcmp(VK_EXT_DEBUG_REPORT_EXTENSION_NAME, + instance_extensions[i].extensionName)) { + if (demo->validate) { + demo->extension_names[demo->enabled_extension_count++] = + VK_EXT_DEBUG_REPORT_EXTENSION_NAME; + } + } + assert(demo->enabled_extension_count < 64); + if (!strcmp(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME, + instance_extensions[i].extensionName)) { + demo->extension_names[demo->enabled_extension_count++] = + VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME; + portability_enumeration = VK_TRUE; + } + assert(demo->enabled_extension_count < 64); + } + + free(instance_extensions); + } + + const VkApplicationInfo app = { + .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO, + .pNext = NULL, + .pApplicationName = APP_SHORT_NAME, + .applicationVersion = 0, + .pEngineName = APP_SHORT_NAME, + .engineVersion = 0, + .apiVersion = VK_API_VERSION_1_0, + }; + VkInstanceCreateInfo inst_info = { + .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, + .pNext = NULL, + .pApplicationInfo = &app, + .enabledLayerCount = demo->enabled_layer_count, + .ppEnabledLayerNames = (const char *const *)instance_validation_layers, + .enabledExtensionCount = demo->enabled_extension_count, + .ppEnabledExtensionNames = (const char *const *)demo->extension_names, + }; + + if (portability_enumeration) + inst_info.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; + + uint32_t gpu_count; + + err = vkCreateInstance(&inst_info, NULL, &demo->inst); + if (err == VK_ERROR_INCOMPATIBLE_DRIVER) { + ERR_EXIT("Cannot find a compatible Vulkan installable client driver " + "(ICD).\n\nPlease look at the Getting Started guide for " + "additional information.\n", + "vkCreateInstance Failure"); + } else if (err == VK_ERROR_EXTENSION_NOT_PRESENT) { + ERR_EXIT("Cannot find a specified extension library" + ".\nMake sure your layers path is set appropriately\n", + "vkCreateInstance Failure"); + } else if (err) { + ERR_EXIT("vkCreateInstance failed.\n\nDo you have a compatible Vulkan " + "installable client driver (ICD) installed?\nPlease look at " + "the Getting Started guide for additional information.\n", + "vkCreateInstance Failure"); + } + + gladLoadVulkanUserPtr(NULL, (GLADuserptrloadfunc) glfwGetInstanceProcAddress, demo->inst); + + /* Make initial call to query gpu_count, then second call for gpu info*/ + err = vkEnumeratePhysicalDevices(demo->inst, &gpu_count, NULL); + assert(!err && gpu_count > 0); + + if (gpu_count > 0) { + VkPhysicalDevice *physical_devices = + malloc(sizeof(VkPhysicalDevice) * gpu_count); + err = vkEnumeratePhysicalDevices(demo->inst, &gpu_count, + physical_devices); + assert(!err); + /* For tri demo we just grab the first physical device */ + demo->gpu = physical_devices[0]; + free(physical_devices); + } else { + ERR_EXIT("vkEnumeratePhysicalDevices reported zero accessible devices." + "\n\nDo you have a compatible Vulkan installable client" + " driver (ICD) installed?\nPlease look at the Getting Started" + " guide for additional information.\n", + "vkEnumeratePhysicalDevices Failure"); + } + + gladLoadVulkanUserPtr(demo->gpu, (GLADuserptrloadfunc) glfwGetInstanceProcAddress, demo->inst); + + /* Look for device extensions */ + uint32_t device_extension_count = 0; + VkBool32 swapchainExtFound = 0; + demo->enabled_extension_count = 0; + + err = vkEnumerateDeviceExtensionProperties(demo->gpu, NULL, + &device_extension_count, NULL); + assert(!err); + + if (device_extension_count > 0) { + VkExtensionProperties *device_extensions = + malloc(sizeof(VkExtensionProperties) * device_extension_count); + err = vkEnumerateDeviceExtensionProperties( + demo->gpu, NULL, &device_extension_count, device_extensions); + assert(!err); + + for (i = 0; i < device_extension_count; i++) { + if (!strcmp(VK_KHR_SWAPCHAIN_EXTENSION_NAME, + device_extensions[i].extensionName)) { + swapchainExtFound = 1; + demo->extension_names[demo->enabled_extension_count++] = + VK_KHR_SWAPCHAIN_EXTENSION_NAME; + } + assert(demo->enabled_extension_count < 64); + } + + free(device_extensions); + } + + if (!swapchainExtFound) { + ERR_EXIT("vkEnumerateDeviceExtensionProperties failed to find " + "the " VK_KHR_SWAPCHAIN_EXTENSION_NAME + " extension.\n\nDo you have a compatible " + "Vulkan installable client driver (ICD) installed?\nPlease " + "look at the Getting Started guide for additional " + "information.\n", + "vkCreateInstance Failure"); + } + + if (demo->validate) { + VkDebugReportCallbackCreateInfoEXT dbgCreateInfo; + dbgCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT; + dbgCreateInfo.flags = + VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT; + dbgCreateInfo.pfnCallback = demo->use_break ? BreakCallback : dbgFunc; + dbgCreateInfo.pUserData = demo; + dbgCreateInfo.pNext = NULL; + err = vkCreateDebugReportCallbackEXT(demo->inst, &dbgCreateInfo, NULL, + &demo->msg_callback); + switch (err) { + case VK_SUCCESS: + break; + case VK_ERROR_OUT_OF_HOST_MEMORY: + ERR_EXIT("CreateDebugReportCallback: out of host memory\n", + "CreateDebugReportCallback Failure"); + break; + default: + ERR_EXIT("CreateDebugReportCallback: unknown failure\n", + "CreateDebugReportCallback Failure"); + break; + } + } + + vkGetPhysicalDeviceProperties(demo->gpu, &demo->gpu_props); + + // Query with NULL data to get count + vkGetPhysicalDeviceQueueFamilyProperties(demo->gpu, &demo->queue_count, + NULL); + + demo->queue_props = (VkQueueFamilyProperties *)malloc( + demo->queue_count * sizeof(VkQueueFamilyProperties)); + vkGetPhysicalDeviceQueueFamilyProperties(demo->gpu, &demo->queue_count, + demo->queue_props); + assert(demo->queue_count >= 1); + + vkGetPhysicalDeviceFeatures(demo->gpu, &demo->gpu_features); + + // Graphics queue and MemMgr queue can be separate. + // TODO: Add support for separate queues, including synchronization, + // and appropriate tracking for QueueSubmit +} + +static void demo_init_device(struct demo *demo) { + VkResult U_ASSERT_ONLY err; + + float queue_priorities[1] = {0.0}; + const VkDeviceQueueCreateInfo queue = { + .sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, + .pNext = NULL, + .queueFamilyIndex = demo->graphics_queue_node_index, + .queueCount = 1, + .pQueuePriorities = queue_priorities}; + + + VkPhysicalDeviceFeatures features; + memset(&features, 0, sizeof(features)); + if (demo->gpu_features.shaderClipDistance) { + features.shaderClipDistance = VK_TRUE; + } + + VkDeviceCreateInfo device = { + .sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, + .pNext = NULL, + .queueCreateInfoCount = 1, + .pQueueCreateInfos = &queue, + .enabledLayerCount = 0, + .ppEnabledLayerNames = NULL, + .enabledExtensionCount = demo->enabled_extension_count, + .ppEnabledExtensionNames = (const char *const *)demo->extension_names, + .pEnabledFeatures = &features, + }; + + err = vkCreateDevice(demo->gpu, &device, NULL, &demo->device); + assert(!err); +} + +static void demo_init_vk_swapchain(struct demo *demo) { + VkResult U_ASSERT_ONLY err; + uint32_t i; + + // Create a WSI surface for the window: + glfwCreateWindowSurface(demo->inst, demo->window, NULL, &demo->surface); + + // Iterate over each queue to learn whether it supports presenting: + VkBool32 *supportsPresent = + (VkBool32 *)malloc(demo->queue_count * sizeof(VkBool32)); + for (i = 0; i < demo->queue_count; i++) { + vkGetPhysicalDeviceSurfaceSupportKHR(demo->gpu, i, demo->surface, + &supportsPresent[i]); + } + + // Search for a graphics and a present queue in the array of queue + // families, try to find one that supports both + uint32_t graphicsQueueNodeIndex = UINT32_MAX; + uint32_t presentQueueNodeIndex = UINT32_MAX; + for (i = 0; i < demo->queue_count; i++) { + if ((demo->queue_props[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) != 0) { + if (graphicsQueueNodeIndex == UINT32_MAX) { + graphicsQueueNodeIndex = i; + } + + if (supportsPresent[i] == VK_TRUE) { + graphicsQueueNodeIndex = i; + presentQueueNodeIndex = i; + break; + } + } + } + if (presentQueueNodeIndex == UINT32_MAX) { + // If didn't find a queue that supports both graphics and present, then + // find a separate present queue. + for (i = 0; i < demo->queue_count; ++i) { + if (supportsPresent[i] == VK_TRUE) { + presentQueueNodeIndex = i; + break; + } + } + } + free(supportsPresent); + + // Generate error if could not find both a graphics and a present queue + if (graphicsQueueNodeIndex == UINT32_MAX || + presentQueueNodeIndex == UINT32_MAX) { + ERR_EXIT("Could not find a graphics and a present queue\n", + "Swapchain Initialization Failure"); + } + + // TODO: Add support for separate queues, including presentation, + // synchronization, and appropriate tracking for QueueSubmit. + // NOTE: While it is possible for an application to use a separate graphics + // and a present queues, this demo program assumes it is only using + // one: + if (graphicsQueueNodeIndex != presentQueueNodeIndex) { + ERR_EXIT("Could not find a common graphics and a present queue\n", + "Swapchain Initialization Failure"); + } + + demo->graphics_queue_node_index = graphicsQueueNodeIndex; + + demo_init_device(demo); + + vkGetDeviceQueue(demo->device, demo->graphics_queue_node_index, 0, + &demo->queue); + + // Get the list of VkFormat's that are supported: + uint32_t formatCount; + err = vkGetPhysicalDeviceSurfaceFormatsKHR(demo->gpu, demo->surface, + &formatCount, NULL); + assert(!err); + VkSurfaceFormatKHR *surfFormats = + (VkSurfaceFormatKHR *)malloc(formatCount * sizeof(VkSurfaceFormatKHR)); + err = vkGetPhysicalDeviceSurfaceFormatsKHR(demo->gpu, demo->surface, + &formatCount, surfFormats); + assert(!err); + // If the format list includes just one entry of VK_FORMAT_UNDEFINED, + // the surface has no preferred format. Otherwise, at least one + // supported format will be returned. + if (formatCount == 1 && surfFormats[0].format == VK_FORMAT_UNDEFINED) { + demo->format = VK_FORMAT_B8G8R8A8_UNORM; + } else { + assert(formatCount >= 1); + demo->format = surfFormats[0].format; + } + demo->color_space = surfFormats[0].colorSpace; + + demo->curFrame = 0; + + // Get Memory information and properties + vkGetPhysicalDeviceMemoryProperties(demo->gpu, &demo->memory_properties); +} + +static void demo_init_connection(struct demo *demo) { + glfwSetErrorCallback(demo_error_callback); + + if (!glfwInit()) { + printf("Cannot initialize GLFW.\nExiting ...\n"); + fflush(stdout); + exit(1); + } + + if (!glfwVulkanSupported()) { + printf("GLFW failed to find the Vulkan loader.\nExiting ...\n"); + fflush(stdout); + exit(1); + } + + gladLoadVulkanUserPtr(NULL, (GLADuserptrloadfunc) glfwGetInstanceProcAddress, NULL); +} + +static void demo_init(struct demo *demo, const int argc, const char *argv[]) +{ + int i; + memset(demo, 0, sizeof(*demo)); + demo->frameCount = INT32_MAX; + + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "--use_staging") == 0) { + demo->use_staging_buffer = true; + continue; + } + if (strcmp(argv[i], "--break") == 0) { + demo->use_break = true; + continue; + } + if (strcmp(argv[i], "--validate") == 0) { + demo->validate = true; + continue; + } + if (strcmp(argv[i], "--c") == 0 && demo->frameCount == INT32_MAX && + i < argc - 1 && sscanf(argv[i + 1], "%d", &demo->frameCount) == 1 && + demo->frameCount >= 0) { + i++; + continue; + } + + fprintf(stderr, "Usage:\n %s [--use_staging] [--validate] [--break] " + "[--c ]\n", + APP_SHORT_NAME); + fflush(stderr); + exit(1); + } + + demo_init_connection(demo); + demo_init_vk(demo); + + demo->width = 300; + demo->height = 300; + demo->depthStencil = 1.0; + demo->depthIncrement = -0.01f; +} + +static void demo_cleanup(struct demo *demo) { + uint32_t i; + + for (i = 0; i < demo->swapchainImageCount; i++) { + vkDestroyFramebuffer(demo->device, demo->framebuffers[i], NULL); + } + free(demo->framebuffers); + vkDestroyDescriptorPool(demo->device, demo->desc_pool, NULL); + + if (demo->setup_cmd) { + vkFreeCommandBuffers(demo->device, demo->cmd_pool, 1, &demo->setup_cmd); + } + vkFreeCommandBuffers(demo->device, demo->cmd_pool, 1, &demo->draw_cmd); + vkDestroyCommandPool(demo->device, demo->cmd_pool, NULL); + + vkDestroyPipeline(demo->device, demo->pipeline, NULL); + vkDestroyRenderPass(demo->device, demo->render_pass, NULL); + vkDestroyPipelineLayout(demo->device, demo->pipeline_layout, NULL); + vkDestroyDescriptorSetLayout(demo->device, demo->desc_layout, NULL); + + vkDestroyBuffer(demo->device, demo->vertices.buf, NULL); + vkFreeMemory(demo->device, demo->vertices.mem, NULL); + + for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { + vkDestroyImageView(demo->device, demo->textures[i].view, NULL); + vkDestroyImage(demo->device, demo->textures[i].image, NULL); + vkFreeMemory(demo->device, demo->textures[i].mem, NULL); + vkDestroySampler(demo->device, demo->textures[i].sampler, NULL); + } + + for (i = 0; i < demo->swapchainImageCount; i++) { + vkDestroyImageView(demo->device, demo->buffers[i].view, NULL); + } + + vkDestroyImageView(demo->device, demo->depth.view, NULL); + vkDestroyImage(demo->device, demo->depth.image, NULL); + vkFreeMemory(demo->device, demo->depth.mem, NULL); + + vkDestroySwapchainKHR(demo->device, demo->swapchain, NULL); + free(demo->buffers); + + vkDestroyDevice(demo->device, NULL); + if (demo->validate) { + vkDestroyDebugReportCallbackEXT(demo->inst, demo->msg_callback, NULL); + } + vkDestroySurfaceKHR(demo->inst, demo->surface, NULL); + vkDestroyInstance(demo->inst, NULL); + + free(demo->queue_props); + + glfwDestroyWindow(demo->window); + glfwTerminate(); +} + +static void demo_resize(struct demo *demo) { + uint32_t i; + + // In order to properly resize the window, we must re-create the swapchain + // AND redo the command buffers, etc. + // + // First, perform part of the demo_cleanup() function: + + for (i = 0; i < demo->swapchainImageCount; i++) { + vkDestroyFramebuffer(demo->device, demo->framebuffers[i], NULL); + } + free(demo->framebuffers); + vkDestroyDescriptorPool(demo->device, demo->desc_pool, NULL); + + if (demo->setup_cmd) { + vkFreeCommandBuffers(demo->device, demo->cmd_pool, 1, &demo->setup_cmd); + demo->setup_cmd = VK_NULL_HANDLE; + } + vkFreeCommandBuffers(demo->device, demo->cmd_pool, 1, &demo->draw_cmd); + vkDestroyCommandPool(demo->device, demo->cmd_pool, NULL); + + vkDestroyPipeline(demo->device, demo->pipeline, NULL); + vkDestroyRenderPass(demo->device, demo->render_pass, NULL); + vkDestroyPipelineLayout(demo->device, demo->pipeline_layout, NULL); + vkDestroyDescriptorSetLayout(demo->device, demo->desc_layout, NULL); + + vkDestroyBuffer(demo->device, demo->vertices.buf, NULL); + vkFreeMemory(demo->device, demo->vertices.mem, NULL); + + for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { + vkDestroyImageView(demo->device, demo->textures[i].view, NULL); + vkDestroyImage(demo->device, demo->textures[i].image, NULL); + vkFreeMemory(demo->device, demo->textures[i].mem, NULL); + vkDestroySampler(demo->device, demo->textures[i].sampler, NULL); + } + + for (i = 0; i < demo->swapchainImageCount; i++) { + vkDestroyImageView(demo->device, demo->buffers[i].view, NULL); + } + + vkDestroyImageView(demo->device, demo->depth.view, NULL); + vkDestroyImage(demo->device, demo->depth.image, NULL); + vkFreeMemory(demo->device, demo->depth.mem, NULL); + + free(demo->buffers); + + // Second, re-perform the demo_prepare() function, which will re-create the + // swapchain: + demo_prepare(demo); +} + +int main(const int argc, const char *argv[]) { + struct demo demo; + + demo_init(&demo, argc, argv); + demo_create_window(&demo); + demo_init_vk_swapchain(&demo); + + demo_prepare(&demo); + demo_run(&demo); + + demo_cleanup(&demo); + + return validation_error; +} + diff --git a/lib/glfw/tests/window.c b/lib/glfw/tests/window.c new file mode 100644 index 0000000..83baff4 --- /dev/null +++ b/lib/glfw/tests/window.c @@ -0,0 +1,428 @@ +//======================================================================== +// Window properties test +// Copyright (c) Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define GLAD_GL_IMPLEMENTATION +#include +#define GLFW_INCLUDE_NONE +#include + +#include + +#define NK_IMPLEMENTATION +#define NK_INCLUDE_FIXED_TYPES +#define NK_INCLUDE_FONT_BAKING +#define NK_INCLUDE_DEFAULT_FONT +#define NK_INCLUDE_DEFAULT_ALLOCATOR +#define NK_INCLUDE_VERTEX_BUFFER_OUTPUT +#define NK_INCLUDE_STANDARD_VARARGS +#define NK_BUTTON_TRIGGER_ON_RELEASE +#include + +#define NK_GLFW_GL2_IMPLEMENTATION +#include + +#include +#include +#include +#include + +int main(int argc, char** argv) +{ + int windowed_x, windowed_y, windowed_width, windowed_height; + int last_xpos = INT_MIN, last_ypos = INT_MIN; + int last_width = INT_MIN, last_height = INT_MIN; + int limit_aspect_ratio = false, aspect_numer = 1, aspect_denom = 1; + int limit_min_size = false, min_width = 400, min_height = 400; + int limit_max_size = false, max_width = 400, max_height = 400; + char width_buffer[12] = "", height_buffer[12] = ""; + char xpos_buffer[12] = "", ypos_buffer[12] = ""; + char numer_buffer[12] = "", denom_buffer[12] = ""; + char min_width_buffer[12] = "", min_height_buffer[12] = ""; + char max_width_buffer[12] = "", max_height_buffer[12] = ""; + int may_close = true; + + if (!glfwInit()) + exit(EXIT_FAILURE); + + glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); + glfwWindowHint(GLFW_WIN32_KEYBOARD_MENU, GLFW_TRUE); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1); + + GLFWwindow* window = glfwCreateWindow(600, 600, "Window Features", NULL, NULL); + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + + glfwMakeContextCurrent(window); + gladLoadGL(glfwGetProcAddress); + glfwSwapInterval(0); + + bool position_supported = true; + + glfwGetError(NULL); + glfwGetWindowPos(window, &last_xpos, &last_ypos); + sprintf(xpos_buffer, "%i", last_xpos); + sprintf(ypos_buffer, "%i", last_ypos); + if (glfwGetError(NULL) == GLFW_FEATURE_UNAVAILABLE) + position_supported = false; + + glfwGetWindowSize(window, &last_width, &last_height); + sprintf(width_buffer, "%i", last_width); + sprintf(height_buffer, "%i", last_height); + + sprintf(numer_buffer, "%i", aspect_numer); + sprintf(denom_buffer, "%i", aspect_denom); + + sprintf(min_width_buffer, "%i", min_width); + sprintf(min_height_buffer, "%i", min_height); + sprintf(max_width_buffer, "%i", max_width); + sprintf(max_height_buffer, "%i", max_height); + + struct nk_context* nk = nk_glfw3_init(window, NK_GLFW3_INSTALL_CALLBACKS); + + struct nk_font_atlas* atlas; + nk_glfw3_font_stash_begin(&atlas); + nk_glfw3_font_stash_end(); + + while (!(may_close && glfwWindowShouldClose(window))) + { + int width, height; + + glfwGetWindowSize(window, &width, &height); + + struct nk_rect area = nk_rect(0.f, 0.f, (float) width, (float) height); + nk_window_set_bounds(nk, "main", area); + + nk_glfw3_new_frame(); + if (nk_begin(nk, "main", area, 0)) + { + nk_layout_row_dynamic(nk, 30, 5); + + if (nk_button_label(nk, "Toggle Fullscreen")) + { + if (glfwGetWindowMonitor(window)) + { + glfwSetWindowMonitor(window, NULL, + windowed_x, windowed_y, + windowed_width, windowed_height, 0); + } + else + { + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + glfwGetWindowPos(window, &windowed_x, &windowed_y); + glfwGetWindowSize(window, &windowed_width, &windowed_height); + glfwSetWindowMonitor(window, monitor, + 0, 0, mode->width, mode->height, + mode->refreshRate); + } + } + + if (nk_button_label(nk, "Maximize")) + glfwMaximizeWindow(window); + if (nk_button_label(nk, "Iconify")) + glfwIconifyWindow(window); + if (nk_button_label(nk, "Restore")) + glfwRestoreWindow(window); + if (nk_button_label(nk, "Hide (briefly)")) + { + glfwHideWindow(window); + + const double time = glfwGetTime() + 3.0; + while (glfwGetTime() < time) + glfwWaitEventsTimeout(1.0); + + glfwShowWindow(window); + } + + nk_layout_row_dynamic(nk, 30, 1); + + if (glfwGetWindowAttrib(window, GLFW_MOUSE_PASSTHROUGH)) + { + nk_label(nk, "Press H to disable mouse passthrough", NK_TEXT_CENTERED); + + if (glfwGetKey(window, GLFW_KEY_H)) + glfwSetWindowAttrib(window, GLFW_MOUSE_PASSTHROUGH, false); + } + + nk_label(nk, "Press Enter in a text field to set value", NK_TEXT_CENTERED); + + nk_flags events; + const nk_flags flags = NK_EDIT_FIELD | + NK_EDIT_SIG_ENTER | + NK_EDIT_GOTO_END_ON_ACTIVATE; + + if (position_supported) + { + int xpos, ypos; + glfwGetWindowPos(window, &xpos, &ypos); + + nk_layout_row_dynamic(nk, 30, 3); + nk_label(nk, "Position", NK_TEXT_LEFT); + + events = nk_edit_string_zero_terminated(nk, flags, xpos_buffer, + sizeof(xpos_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + xpos = atoi(xpos_buffer); + glfwSetWindowPos(window, xpos, ypos); + } + else if (xpos != last_xpos || (events & NK_EDIT_DEACTIVATED)) + sprintf(xpos_buffer, "%i", xpos); + + events = nk_edit_string_zero_terminated(nk, flags, ypos_buffer, + sizeof(ypos_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + ypos = atoi(ypos_buffer); + glfwSetWindowPos(window, xpos, ypos); + } + else if (ypos != last_ypos || (events & NK_EDIT_DEACTIVATED)) + sprintf(ypos_buffer, "%i", ypos); + + last_xpos = xpos; + last_ypos = ypos; + } + else + nk_label(nk, "Position not supported", NK_TEXT_LEFT); + + nk_layout_row_dynamic(nk, 30, 3); + nk_label(nk, "Size", NK_TEXT_LEFT); + + events = nk_edit_string_zero_terminated(nk, flags, width_buffer, + sizeof(width_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + width = atoi(width_buffer); + glfwSetWindowSize(window, width, height); + } + else if (width != last_width || (events & NK_EDIT_DEACTIVATED)) + sprintf(width_buffer, "%i", width); + + events = nk_edit_string_zero_terminated(nk, flags, height_buffer, + sizeof(height_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + height = atoi(height_buffer); + glfwSetWindowSize(window, width, height); + } + else if (height != last_height || (events & NK_EDIT_DEACTIVATED)) + sprintf(height_buffer, "%i", height); + + last_width = width; + last_height = height; + + bool update_ratio_limit = false; + if (nk_checkbox_label(nk, "Aspect Ratio", &limit_aspect_ratio)) + update_ratio_limit = true; + + events = nk_edit_string_zero_terminated(nk, flags, numer_buffer, + sizeof(numer_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + aspect_numer = abs(atoi(numer_buffer)); + update_ratio_limit = true; + } + else if (events & NK_EDIT_DEACTIVATED) + sprintf(numer_buffer, "%i", aspect_numer); + + events = nk_edit_string_zero_terminated(nk, flags, denom_buffer, + sizeof(denom_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + aspect_denom = abs(atoi(denom_buffer)); + update_ratio_limit = true; + } + else if (events & NK_EDIT_DEACTIVATED) + sprintf(denom_buffer, "%i", aspect_denom); + + if (update_ratio_limit) + { + if (limit_aspect_ratio) + glfwSetWindowAspectRatio(window, aspect_numer, aspect_denom); + else + glfwSetWindowAspectRatio(window, GLFW_DONT_CARE, GLFW_DONT_CARE); + } + + bool update_size_limit = false; + + if (nk_checkbox_label(nk, "Minimum Size", &limit_min_size)) + update_size_limit = true; + + events = nk_edit_string_zero_terminated(nk, flags, min_width_buffer, + sizeof(min_width_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + min_width = abs(atoi(min_width_buffer)); + update_size_limit = true; + } + else if (events & NK_EDIT_DEACTIVATED) + sprintf(min_width_buffer, "%i", min_width); + + events = nk_edit_string_zero_terminated(nk, flags, min_height_buffer, + sizeof(min_height_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + min_height = abs(atoi(min_height_buffer)); + update_size_limit = true; + } + else if (events & NK_EDIT_DEACTIVATED) + sprintf(min_height_buffer, "%i", min_height); + + if (nk_checkbox_label(nk, "Maximum Size", &limit_max_size)) + update_size_limit = true; + + events = nk_edit_string_zero_terminated(nk, flags, max_width_buffer, + sizeof(max_width_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + max_width = abs(atoi(max_width_buffer)); + update_size_limit = true; + } + else if (events & NK_EDIT_DEACTIVATED) + sprintf(max_width_buffer, "%i", max_width); + + events = nk_edit_string_zero_terminated(nk, flags, max_height_buffer, + sizeof(max_height_buffer), + nk_filter_decimal); + if (events & NK_EDIT_COMMITED) + { + max_height = abs(atoi(max_height_buffer)); + update_size_limit = true; + } + else if (events & NK_EDIT_DEACTIVATED) + sprintf(max_height_buffer, "%i", max_height); + + if (update_size_limit) + { + glfwSetWindowSizeLimits(window, + limit_min_size ? min_width : GLFW_DONT_CARE, + limit_min_size ? min_height : GLFW_DONT_CARE, + limit_max_size ? max_width : GLFW_DONT_CARE, + limit_max_size ? max_height : GLFW_DONT_CARE); + } + + int fb_width, fb_height; + glfwGetFramebufferSize(window, &fb_width, &fb_height); + nk_label(nk, "Framebuffer Size", NK_TEXT_LEFT); + nk_labelf(nk, NK_TEXT_LEFT, "%i", fb_width); + nk_labelf(nk, NK_TEXT_LEFT, "%i", fb_height); + + float xscale, yscale; + glfwGetWindowContentScale(window, &xscale, &yscale); + nk_label(nk, "Content Scale", NK_TEXT_LEFT); + nk_labelf(nk, NK_TEXT_LEFT, "%f", xscale); + nk_labelf(nk, NK_TEXT_LEFT, "%f", yscale); + + nk_layout_row_begin(nk, NK_DYNAMIC, 30, 5); + int frame_left, frame_top, frame_right, frame_bottom; + glfwGetWindowFrameSize(window, &frame_left, &frame_top, &frame_right, &frame_bottom); + nk_layout_row_push(nk, 1.f / 3.f); + nk_label(nk, "Frame Size:", NK_TEXT_LEFT); + nk_layout_row_push(nk, 1.f / 6.f); + nk_labelf(nk, NK_TEXT_LEFT, "%i", frame_left); + nk_layout_row_push(nk, 1.f / 6.f); + nk_labelf(nk, NK_TEXT_LEFT, "%i", frame_top); + nk_layout_row_push(nk, 1.f / 6.f); + nk_labelf(nk, NK_TEXT_LEFT, "%i", frame_right); + nk_layout_row_push(nk, 1.f / 6.f); + nk_labelf(nk, NK_TEXT_LEFT, "%i", frame_bottom); + nk_layout_row_end(nk); + + nk_layout_row_begin(nk, NK_DYNAMIC, 30, 2); + float opacity = glfwGetWindowOpacity(window); + nk_layout_row_push(nk, 1.f / 3.f); + nk_labelf(nk, NK_TEXT_LEFT, "Opacity: %0.3f", opacity); + nk_layout_row_push(nk, 2.f / 3.f); + if (nk_slider_float(nk, 0.f, &opacity, 1.f, 0.001f)) + glfwSetWindowOpacity(window, opacity); + nk_layout_row_end(nk); + + nk_layout_row_begin(nk, NK_DYNAMIC, 30, 2); + int should_close = glfwWindowShouldClose(window); + nk_layout_row_push(nk, 1.f / 3.f); + if (nk_checkbox_label(nk, "Should Close", &should_close)) + glfwSetWindowShouldClose(window, should_close); + nk_layout_row_push(nk, 2.f / 3.f); + nk_checkbox_label(nk, "May Close", &may_close); + nk_layout_row_end(nk); + + nk_layout_row_dynamic(nk, 30, 1); + nk_label(nk, "Attributes", NK_TEXT_CENTERED); + + nk_layout_row_dynamic(nk, 30, width > 200 ? width / 200 : 1); + + int decorated = glfwGetWindowAttrib(window, GLFW_DECORATED); + if (nk_checkbox_label(nk, "Decorated", &decorated)) + glfwSetWindowAttrib(window, GLFW_DECORATED, decorated); + + int resizable = glfwGetWindowAttrib(window, GLFW_RESIZABLE); + if (nk_checkbox_label(nk, "Resizable", &resizable)) + glfwSetWindowAttrib(window, GLFW_RESIZABLE, resizable); + + int floating = glfwGetWindowAttrib(window, GLFW_FLOATING); + if (nk_checkbox_label(nk, "Floating", &floating)) + glfwSetWindowAttrib(window, GLFW_FLOATING, floating); + + int passthrough = glfwGetWindowAttrib(window, GLFW_MOUSE_PASSTHROUGH); + if (nk_checkbox_label(nk, "Mouse Passthrough", &passthrough)) + glfwSetWindowAttrib(window, GLFW_MOUSE_PASSTHROUGH, passthrough); + + int auto_iconify = glfwGetWindowAttrib(window, GLFW_AUTO_ICONIFY); + if (nk_checkbox_label(nk, "Auto Iconify", &auto_iconify)) + glfwSetWindowAttrib(window, GLFW_AUTO_ICONIFY, auto_iconify); + + nk_value_bool(nk, "Focused", glfwGetWindowAttrib(window, GLFW_FOCUSED)); + nk_value_bool(nk, "Hovered", glfwGetWindowAttrib(window, GLFW_HOVERED)); + nk_value_bool(nk, "Visible", glfwGetWindowAttrib(window, GLFW_VISIBLE)); + nk_value_bool(nk, "Iconified", glfwGetWindowAttrib(window, GLFW_ICONIFIED)); + nk_value_bool(nk, "Maximized", glfwGetWindowAttrib(window, GLFW_MAXIMIZED)); + } + nk_end(nk); + + glClear(GL_COLOR_BUFFER_BIT); + nk_glfw3_render(NK_ANTI_ALIASING_ON); + glfwSwapBuffers(window); + + glfwWaitEvents(); + } + + nk_glfw3_shutdown(); + glfwTerminate(); + exit(EXIT_SUCCESS); +} + diff --git a/lib/shader/shader.h b/lib/shader/shader.h new file mode 100644 index 0000000..0887c35 --- /dev/null +++ b/lib/shader/shader.h @@ -0,0 +1,171 @@ +// by Joey de Vries - www.learnopengl.com - CC BY-NC 4.0 license +#ifndef SHADER_H +#define SHADER_H + +#include +#include + +#include +#include +#include +#include + +class Shader +{ +public: + unsigned int ID; + // constructor generates the shader on the fly + // ------------------------------------------------------------------------ + Shader(const char* vertexPath, const char* fragmentPath) + { + // 1. retrieve the vertex/fragment source code from filePath + std::string vertexCode; + std::string fragmentCode; + std::ifstream vShaderFile; + std::ifstream fShaderFile; + // ensure ifstream objects can throw exceptions: + vShaderFile.exceptions (std::ifstream::failbit | std::ifstream::badbit); + fShaderFile.exceptions (std::ifstream::failbit | std::ifstream::badbit); + try + { + // open files + vShaderFile.open(vertexPath); + fShaderFile.open(fragmentPath); + std::cout << "INFO: Vertex Shader: " << vertexPath << " Fragment Shader: " << fragmentPath << std::endl; + std::stringstream vShaderStream, fShaderStream; + // read file's buffer contents into streams + vShaderStream << vShaderFile.rdbuf(); + fShaderStream << fShaderFile.rdbuf(); + // close file handlers + vShaderFile.close(); + fShaderFile.close(); + // convert stream into string + vertexCode = vShaderStream.str(); + fragmentCode = fShaderStream.str(); + } + catch (std::ifstream::failure& e) + { + std::cout << "ERROR::SHADER::FILE_NOT_SUCCESFULLY_READ" << std::endl; + } + const char* vShaderCode = vertexCode.c_str(); + const char * fShaderCode = fragmentCode.c_str(); + // 2. compile shaders + unsigned int vertex, fragment; + // vertex shader + vertex = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertex, 1, &vShaderCode, NULL); + glCompileShader(vertex); + checkCompileErrors(vertex, "VERTEX"); + // fragment Shader + fragment = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragment, 1, &fShaderCode, NULL); + glCompileShader(fragment); + checkCompileErrors(fragment, "FRAGMENT"); + // shader Program + ID = glCreateProgram(); + glAttachShader(ID, vertex); + glAttachShader(ID, fragment); + glLinkProgram(ID); + checkCompileErrors(ID, "PROGRAM"); + // delete the shaders as they're linked into our program now and no longer necessery + glDeleteShader(vertex); + glDeleteShader(fragment); + + } + // activate the shader + // ------------------------------------------------------------------------ + void use() const + { + glUseProgram(ID); + } + // utility uniform functions + // ------------------------------------------------------------------------ + void setBool(const std::string &name, bool value) const + { + glUniform1i(glGetUniformLocation(ID, name.c_str()), (int)value); + } + // ------------------------------------------------------------------------ + void setInt(const std::string &name, int value) const + { + glUniform1i(glGetUniformLocation(ID, name.c_str()), value); + } + // ------------------------------------------------------------------------ + void setFloat(const std::string &name, float value) const + { + glUniform1f(glGetUniformLocation(ID, name.c_str()), value); + } + // ------------------------------------------------------------------------ + void setVec2(const std::string &name, const glm::vec2 &value) const + { + glUniform2fv(glGetUniformLocation(ID, name.c_str()), 1, &value[0]); + } + void setVec2(const std::string &name, float x, float y) const + { + glUniform2f(glGetUniformLocation(ID, name.c_str()), x, y); + } + // ------------------------------------------------------------------------ + void setVec3(const std::string &name, const glm::vec3 &value) const + { + glUniform3fv(glGetUniformLocation(ID, name.c_str()), 1, &value[0]); + } + void setVec3(const std::string &name, float x, float y, float z) const + { + glUniform3f(glGetUniformLocation(ID, name.c_str()), x, y, z); + } + // ------------------------------------------------------------------------ + void setVec4(const std::string &name, const glm::vec4 &value) const + { + glUniform4fv(glGetUniformLocation(ID, name.c_str()), 1, &value[0]); + } + void setVec4(const std::string &name, float x, float y, float z, float w) const + { + glUniform4f(glGetUniformLocation(ID, name.c_str()), x, y, z, w); + } + // ------------------------------------------------------------------------ + void setMat2(const std::string &name, const glm::mat2 &mat) const + { + glUniformMatrix2fv(glGetUniformLocation(ID, name.c_str()), 1, GL_FALSE, &mat[0][0]); + } + // ------------------------------------------------------------------------ + void setMat3(const std::string &name, const glm::mat3 &mat) const + { + glUniformMatrix3fv(glGetUniformLocation(ID, name.c_str()), 1, GL_FALSE, &mat[0][0]); + } + // ------------------------------------------------------------------------ + void setMat4(const std::string &name, const glm::mat4 &mat) const + { + glUniformMatrix4fv(glGetUniformLocation(ID, name.c_str()), 1, GL_FALSE, &mat[0][0]); + } + +private: + // utility function for checking shader compilation/linking errors. + // ------------------------------------------------------------------------ + void checkCompileErrors(GLuint shader, std::string type) + { + GLint success; + GLchar infoLog[1024]; + if (type != "PROGRAM") + { + glGetShaderiv(shader, GL_COMPILE_STATUS, &success); + if (!success) + { + glGetShaderInfoLog(shader, 1024, NULL, infoLog); + std::cout << "ERROR::SHADER_COMPILATION_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl; + } + } + else + { + glGetProgramiv(shader, GL_LINK_STATUS, &success); + if (!success) + { + glGetProgramInfoLog(shader, 1024, NULL, infoLog); + std::cout << "ERROR::PROGRAM_LINKING_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl; + } + } + if(success) { + glGetShaderInfoLog(shader, 1024, NULL, infoLog); + // std::cout << "INFO: SHADER of type: " << type << " SUCCESS\n"; + } + } +}; +#endif \ No newline at end of file diff --git a/res/shaders/glyph_fs.glsl b/res/shaders/glyph_fs.glsl new file mode 100644 index 0000000..31b61cc --- /dev/null +++ b/res/shaders/glyph_fs.glsl @@ -0,0 +1,13 @@ +#version 300 es +precision mediump float; +in vec2 TexCoords; +out vec4 color; + +uniform sampler2D text; +uniform vec3 textColor; + +void main() +{ + vec4 sampled = vec4(1.0, 1.0, 1.0, texture(text, TexCoords).r); + color = vec4(textColor, 1.0) * sampled; +} diff --git a/res/shaders/glyph_vs.glsl b/res/shaders/glyph_vs.glsl new file mode 100644 index 0000000..b89fc4e --- /dev/null +++ b/res/shaders/glyph_vs.glsl @@ -0,0 +1,12 @@ +#version 300 es +precision mediump float; +layout (location = 0) in vec4 vertex; // +out vec2 TexCoords; + +uniform mat4 transformation; + +void main() +{ + gl_Position = transformation * vec4(vertex.xy, 0.0, 1.0); + TexCoords = vertex.zw; +} diff --git a/res/shaders/img_fs.glsl b/res/shaders/img_fs.glsl new file mode 100644 index 0000000..3206bab --- /dev/null +++ b/res/shaders/img_fs.glsl @@ -0,0 +1,12 @@ +#version 300 es +precision mediump float; +out vec4 FragColor; +in vec2 TexCoords; + + +uniform sampler2D texture1; + +void main() +{ + FragColor = texture(texture1, TexCoords); +} diff --git a/res/shaders/img_vs.glsl b/res/shaders/img_vs.glsl new file mode 100644 index 0000000..368c5df --- /dev/null +++ b/res/shaders/img_vs.glsl @@ -0,0 +1,13 @@ +#version 300 es +precision mediump float; +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; +out vec2 TexCoords; + +uniform mat4 transformation; + +void main() +{ + gl_Position = transformation * vec4(aPos, 1.0); + TexCoords = aTexCoords; +} diff --git a/res/shaders/screen_fs.glsl b/res/shaders/screen_fs.glsl new file mode 100644 index 0000000..3206bab --- /dev/null +++ b/res/shaders/screen_fs.glsl @@ -0,0 +1,12 @@ +#version 300 es +precision mediump float; +out vec4 FragColor; +in vec2 TexCoords; + + +uniform sampler2D texture1; + +void main() +{ + FragColor = texture(texture1, TexCoords); +} diff --git a/res/shaders/screen_vs.glsl b/res/shaders/screen_vs.glsl new file mode 100644 index 0000000..17b5d0a --- /dev/null +++ b/res/shaders/screen_vs.glsl @@ -0,0 +1,12 @@ +#version 300 es +precision mediump float; +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; +out vec2 TexCoords; + + +void main() +{ + gl_Position = vec4(aPos, 1.0); + TexCoords = aTexCoords; +} diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..8712c0f --- /dev/null +++ b/run.sh @@ -0,0 +1 @@ +make && ./bin/wotos assets/* diff --git a/src/csv/csv.cpp b/src/csv/csv.cpp new file mode 100644 index 0000000..cdce3f2 --- /dev/null +++ b/src/csv/csv.cpp @@ -0,0 +1,54 @@ +#include "csv.h" + +using namespace std; + +long int string2timestamp(const string &str) +{ + struct tm tm{}; + if(strptime(str.c_str(), "%Y-%m-%d %H:%M:%S",&tm) == NULL) + return -1; + + return mktime(&tm); +} + +void read_record() +{ + + // File pointer + fstream fin; + + // Open an existing file + fin.open("danmaku.csv", ios::in); + + // Read the Data from the file + // as String Vector + vector row; + string line, word, temp; + + while (fin >> temp) { + + row.clear(); + + // read an entire row and + // store it in a string variable 'line' + getline(fin, line); + + // used for breaking words + stringstream s(line); + + // read every column data of a row and + // store it in a string variable, 'word' + while (getline(s, word, '|')) { + + // add all the column data + // of a row to a vector + row.push_back(word); + } + + cout << "Time:" << row[0] << "Timestamp" << string2timestamp("2022-01-08" + row[0]) << endl; + } +} + +int main() { + read_record(); +} diff --git a/src/csv/csv.h b/src/csv/csv.h new file mode 100644 index 0000000..9a63993 --- /dev/null +++ b/src/csv/csv.h @@ -0,0 +1,19 @@ +#ifndef _CSV_H_ +#define _CSV_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void read_record(); +long int string2timestamp(const std::string &); +#endif diff --git a/src/csv/danmaku.csv b/src/csv/danmaku.csv new file mode 100644 index 0000000..296de4c --- /dev/null +++ b/src/csv/danmaku.csv @@ -0,0 +1,33391 @@ +08::01::2022 01:44:14|Premature Duce| +08::01::2022 01:44:15|I'll blow your Duce, idiot| +08::01::2022 01:44:15|ITS ANZIO YEAR, BELIEVE ME| +08::01::2022 01:44:16|SHUT THE FUCK UP WE ARE NEAR THE OVA| +08::01::2022 01:44:16|can you guys talk slower so I can read the subs thanks| +08::01::2022 01:44:19|PRONTE A OSARE PRONTE A ADIIRE| +08::01::2022 01:44:19|just had some taco bell| +08::01::2022 01:44:20|Anzio absolute best| +08::01::2022 01:44:22|ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW | +08::01::2022 01:44:23|Choby smells of shit| +08::01::2022 01:44:24|_; +08::01::2022 01:44:27|duce is my wife!| +08::01::2022 01:44:28|>cant read subs and chat at the same time| +08::01::2022 01:44:28|Edging to DVCE! Blowing my DVCE to DVCE!| +08::01::2022 01:44:29|Don't blwo your Duce| +08::01::2022 01:44:30|Read faster faggot| +08::01::2022 01:44:31|GIOVINEZZZA GIOVINEZZA| +08::01::2022 01:44:32|AKARONI +08::01::2022 01:44:32|AWREE +08::01::2022 01:44:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:44:36|ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET | +08::01::2022 01:44:38|=___________________________^^x +08::01::2022 01:44:39|PRIMAVERA DI BELEZZA| +08::01::2022 01:44:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:44:41|iiporin +08::01::2022 01:44:42|IPORIN! +08::01::2022 01:44:42|Just learn Japanese so you won't need subs| +08::01::2022 01:44:43|iporin +08::01::2022 01:44:43|instead of the whole series can we just watch the anzio episode on repeat?| +08::01::2022 01:44:44|uya~ +08::01::2022 01:44:44|>Not knowing moonrunes and language| +08::01::2022 01:44:44|THIS IS OUR YEAR ANZIOBROS| +08::01::2022 01:44:49|NEL FASCISMO E LA SALVEZZA| +08::01::2022 01:44:49|big seal| +08::01::2022 01:44:49|cute fluff| +08::01::2022 01:44:53|Ill give her my smoothbore| +08::01::2022 01:44:55|DELLA NOSTRA LIBERTA| +08::01::2022 01:44:56|Yukari is the Beautiful Dreamer| +08::01::2022 01:45:00|can we just listen to Anzion's theme for 20 hours straight?| +08::01::2022 01:45:01|Back from peeing| +08::01::2022 01:45:02|>LEOPARD 2 >MOST OF THEM ARE NON-OPERATIONAL| +08::01::2022 01:45:02|Boat trips are kino t. Greek| +08::01::2022 01:45:03|Did we just have a genuine moment?| +08::01::2022 01:45:04|>i can hear the moonerunes| +08::01::2022 01:45:04|Didn't anzio already lose to the slag?| +08::01::2022 01:45:08|this time anzio will win, I feel it in my lemon| +08::01::2022 01:45:10|UNICULA +08::01::2022 01:45:14|funiculi funicula| +08::01::2022 01:45:14|UNICULI +08::01::2022 01:45:16|I still haven't watched the third part of Das Finale| +08::01::2022 01:45:17|""accident""" +08::01::2022 01:45:17|_; +08::01::2022 01:45:18|ombattenti di terra, di mare e dell’aria! Camicie nere della rivoluzione e delle legioni! | +08::01::2022 01:45:19|ANZIO'S YEAR| +08::01::2022 01:45:19|-; +08::01::2022 01:45:19|_; +08::01::2022 01:45:20|eal +08::01::2022 01:45:20|this shit so sad man| +08::01::2022 01:45:20|o:: for DVCE| +08::01::2022 01:45:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:45:21|MEEF +08::01::2022 01:45:22|UNICULI +08::01::2022 01:45:22|_; +08::01::2022 01:45:24|ACKSTORY +08::01::2022 01:45:26|h... +08::01::2022 01:45:26|Remember Granny died in the doujin| +08::01::2022 01:45:26|UNICULA +08::01::2022 01:45:27|Uomini e donne d’Italia, dell’impero e del regno d’Albania! Ascoltate!| +08::01::2022 01:45:28|car accident| +08::01::2022 01:45:29|:: +08::01::2022 01:45:29|DO NOT WATCH THE 3RD PART OF DAS FINALE HERE IT IS NOT A GOOD IDEA| +08::01::2022 01:45:31|NCOPPA JAMME JA| +08::01::2022 01:45:31|ASSHOLE MOM| +08::01::2022 01:45:31|SHIHO SHIHO SHIHO SHIHO| +08::01::2022 01:45:32|uck... +08::01::2022 01:45:33|get disowned bitch| +08::01::2022 01:45:34|i would smash this milf| +08::01::2022 01:45:35|OMMY +08::01::2022 01:45:35|Anzio will win!| +08::01::2022 01:45:36|FUNICULI FUNICULA| +08::01::2022 01:45:38|Mother of the Decade| +08::01::2022 01:45:39|JUST GOT BACK DID I MISS DUCE?| +08::01::2022 01:45:39|OMMY +08::01::2022 01:45:40|WORST MOM BIGGEST SLUT WORST MOM BIGGEST SLUT| +08::01::2022 01:45:40|PIZZA PASTA SHITTING IN A BOX| +08::01::2022 01:45:40|FUCK YOU MOM I'LL SENSHADO HOW I WANT| +08::01::2022 01:45:44|Momo is best girl, Shiho second!| +08::01::2022 01:45:45|D I S O W N E D| +08::01::2022 01:45:46|Un’ora segnata dal destino batte nel cielo della nostra patria. (Acclamazioni vivissime). | +08::01::2022 01:45:46|Shiho, my wife| +08::01::2022 01:45:47|That the Chi Ha Tan way I thought| +08::01::2022 01:45:48|BITCH SHIHO| +08::01::2022 01:45:49|SHIT MUM| +08::01::2022 01:45:50|>DO NOT WATCH THE PART 3 OF DF HERE IT'S A BAD IDEA :::: SHUT THE FUCK UP| +08::01::2022 01:45:51|LET THEM DIE| +08::01::2022 01:45:52|DUCE STILL INCOMING| +08::01::2022 01:45:53|UGLY BASTARD FUCKING MOTHER| +08::01::2022 01:45:53|SHIHO SUCKS ALL THE COCKS| +08::01::2022 01:45:53|LARP ALERT LARP ALERT| +08::01::2022 01:45:53|>senshadou gestapo| +08::01::2022 01:45:53|[spoiler]i dont like duce because anons keep on spamming it[::spoiler]| +08::01::2022 01:45:55|L’ora delle decisioni irrevocabili. | +08::01::2022 01:45:56|shiho my beloved| +08::01::2022 01:46:01|by me| +08::01::2022 01:46:01|I WANT TO GIVE MIHO A YOUNGER SISTER| +08::01::2022 01:46:02|Should have let Koume drown, bitch| +08::01::2022 01:46:03|TSD +08::01::2022 01:46:03|BAUER AND POMF WERE SACRIFICES| +08::01::2022 01:46:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:46:06|La dichiarazione di guerra è già stata consegnata (acclamazioni, grida altissime di “Guerra! Guerra!”) agli ambasciatori di Gran Bretagna e | +08::01::2022 01:46:08|miipor eeeeeen| +08::01::2022 01:46:08|hitho +08::01::2022 01:46:08|what happened after saunders match?| +08::01::2022 01:46:10|ZZZZZZZ +08::01::2022 01:46:10|ZZZZZZZZZZZZZZZZZZZZZZ +08::01::2022 01:46:10|HIO +08::01::2022 01:46:11|SHIHO+MIHO FUTAXFUTA DOUJINS| +08::01::2022 01:46:12|zzzzzzzzzzzzzzzzz +08::01::2022 01:46:13|DU CE DU CE DU CE DU CE DU CE DU CE DU CE| +08::01::2022 01:46:14|I like Duce because UWAAAAH KOCCHI MITERUZOO is cute| +08::01::2022 01:46:15|mako sleep| +08::01::2022 01:46:18|It's 2 AM, I need some Miporiun| +08::01::2022 01:46:18|Scendiamo in campo contro le democrazie plutocratiche e reazionarie dell’Occidente che, in ogni tempo, hanno ostacolato la marcia, e spesso | +08::01::2022 01:46:19|miho just happy she doesn't go to a larp school| +08::01::2022 01:46:19|But where's Momo????| +08::01::2022 01:46:20|SO DOO O KOOO| +08::01::2022 01:46:21|>saori can't carry 1::10th of her body weight| +08::01::2022 01:46:21|ODOKO +08::01::2022 01:46:22|ALL NIGHT LONG| +08::01::2022 01:46:22|ODOKOOO +08::01::2022 01:46:23|ODOKO +08::01::2022 01:46:23|ohhhhhh sodoko| +08::01::2022 01:46:24|ODOKO +08::01::2022 01:46:26|ODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOO +08::01::2022 01:46:27|You will never molest Sodoko| +08::01::2022 01:46:27|Molesting Sodoko!| +08::01::2022 01:46:28|UEGOY +08::01::2022 01:46:29|nice skinship!| +08::01::2022 01:46:29|appa +08::01::2022 01:46:29|ODOKOOO +08::01::2022 01:46:30|Yuri rape time| +08::01::2022 01:46:31|yuri bait| +08::01::2022 01:46:31|Molest the 'Doko| +08::01::2022 01:46:32|sodoko feet| +08::01::2022 01:46:33|EXDOKO +08::01::2022 01:46:33|ODOKUUOOOOOOOOOOHHH +08::01::2022 01:46:34|thats gonna be me tomorrow morning| +08::01::2022 01:46:34|Alcuni lustri della storia più recente si possono riassumere in queste frasi: promesse, minacce, ricatti e, alla fine, quale coronamento del| +08::01::2022 01:46:34|ewd +08::01::2022 01:46:36|SENSHA BALOON| +08::01::2022 01:46:37|ooooooodoko +08::01::2022 01:46:38|ODOMYKO +08::01::2022 01:46:40|PANZER BALLOON| +08::01::2022 01:46:43|ooodoooko +08::01::2022 01:46:44|La nostra coscienza è assolutamente tranquilla. (Applausi)| +08::01::2022 01:46:44|Sodomizing Sodoko's hole| +08::01::2022 01:46:47|Panter 4| +08::01::2022 01:46:49|udoku? +08::01::2022 01:46:51|HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHI| +08::01::2022 01:46:51|IOVINEZZA +08::01::2022 01:46:52|o +08::01::2022 01:46:54|es +08::01::2022 01:46:54|HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? | +08::01::2022 01:46:54|TOILET SODOKO| +08::01::2022 01:46:56|lets eat in our tank| +08::01::2022 01:46:56|IOVINEZZA +08::01::2022 01:46:57|oroo +08::01::2022 01:47:01|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA FLOOOOOOOOOOOOOOOOOF| +08::01::2022 01:47:05|PRIMAVERA DI BELLEZZA| +08::01::2022 01:47:05|pan time| +08::01::2022 01:47:05|HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +08::01::2022 01:47:08|Oh yay... bread...| +08::01::2022 01:47:08|>tfw pastamen in the chat| +08::01::2022 01:47:08|HOSHINO | +08::01::2022 01:47:08|Tank Mako Tank Mako| +08::01::2022 01:47:09|DON'T EAT INSIDE THE TANK REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +08::01::2022 01:47:11|LEOPON time?| +08::01::2022 01:47:15|fucking loser eats lunch alone with the tanks every day| +08::01::2022 01:47:15|imagine eating an obento with guppies in a tank| +08::01::2022 01:47:17|THE PASTA IN MY BLOOD SINGS| +08::01::2022 01:47:17|Eating With Your Tank BASED| +08::01::2022 01:47:20|italy isn't real| +08::01::2022 01:47:20|HOSHINO | +08::01::2022 01:47:23|orblems +08::01::2022 01:47:23|ute +08::01::2022 01:47:25|saori dont be a snitch| +08::01::2022 01:47:26|cute lunch| +08::01::2022 01:47:26|good mum| +08::01::2022 01:47:27|that's a next level excuse| +08::01::2022 01:47:29|cute mom| +08::01::2022 01:47:30|CUTE TANK| +08::01::2022 01:47:30|THIS NIGGA EATIN BEANS IN THE TANK| +08::01::2022 01:47:31|Cute mom| +08::01::2022 01:47:32|CUTE LUNCH| +08::01::2022 01:47:34|cute bentou| +08::01::2022 01:47:35|DELLA VITA, NELL'ASPREZZA| +08::01::2022 01:47:35|cute mom ;_;| +08::01::2022 01:47:37|remember to snap the pasta in half so it fits in the pot!| +08::01::2022 01:47:41|BITCH EATING BEANS IN THE TANK| +08::01::2022 01:47:42|NVINCIBLE +08::01::2022 01:47:42|NOT Invincible| +08::01::2022 01:47:44|AMERICA IS NOT INVICBLE| +08::01::2022 01:47:46|CUTEST TANK COMMANDER| +08::01::2022 01:47:47|Giovinezza, giovinezza| +08::01::2022 01:47:49|Bad news, out of apple sauce| +08::01::2022 01:47:50|>tfw there's no more circleK in Japan| +08::01::2022 01:47:51|Was Saunders ever invincible?| +08::01::2022 01:47:51|fanta yo ne| +08::01::2022 01:48:02|Saunders, the most vincible of all| +08::01::2022 01:48:02|Pass the MRE Anon| +08::01::2022 01:48:02|IL TUO CANTO SQUILLA E VA| +08::01::2022 01:48:06|ANOSHII +08::01::2022 01:48:09|SENSHADO IS ABOUT >FUN| +08::01::2022 01:48:11|saunders always fuckin gjobs| +08::01::2022 01:48:12|E PER BENITO MUSSOLINI| +08::01::2022 01:48:14|fun +08::01::2022 01:48:14|Con voi il mondo intero è testimone che l’Italia del littorio ha fatto quanto umanamente possibile per evitare la tormenta che sconvolge l’E| +08::01::2022 01:48:15|Ciao watashi speak italiano| +08::01::2022 01:48:17|THE FRIENDS WE MADE ALONG THE WAY| +08::01::2022 01:48:17|from what?| +08::01::2022 01:48:18|NAL +08::01::2022 01:48:19|F U N| +08::01::2022 01:48:19|SENTO GURORIANA| +08::01::2022 01:48:20|and winning is fun| +08::01::2022 01:48:20|they almost died on that bridge remember| +08::01::2022 01:48:20|((fun))) +08::01::2022 01:48:22|my butt hurts| +08::01::2022 01:48:22|untards +08::01::2022 01:48:23|SHIRI +08::01::2022 01:48:24|FROM WHAT?| +08::01::2022 01:48:25|from her tank| +08::01::2022 01:48:25|HAVING FUN WON'T MAKE MOMMY LOVE YOU AGAIN MIHO| +08::01::2022 01:48:27|>MAYBE HER BUTT HURTS| +08::01::2022 01:48:28|NAL +08::01::2022 01:48:29|>her butt hurt| +08::01::2022 01:48:30|anon have you shit your pants yet?| +08::01::2022 01:48:31|YON-KUN +08::01::2022 01:48:33|WTF ANON| +08::01::2022 01:48:33|ostanza.jpg +08::01::2022 01:48:34|FUN THINGS ARE FUN| +08::01::2022 01:48:34|3 +08::01::2022 01:48:35|SAORI ENJOYING ANAL| +08::01::2022 01:48:35|Bastava rivedere i trattati per adeguarli alle mutevoli esigenze della vita delle nazioni e non considerarli intangibili per l’eternità; bas| +08::01::2022 01:48:36|KYON-KUN DENWA| +08::01::2022 01:48:37|>MAYBE HER BUTT HURTS :::: FROM WHAT| +08::01::2022 01:48:37|not yeeet| +08::01::2022 01:48:38|Why do we keeping win Bros?| +08::01::2022 01:48:39|why did shiho do it?| +08::01::2022 01:48:40|Fun things die if they eat senshado| +08::01::2022 01:48:40|why does her butt hurt?| +08::01::2022 01:48:42|what a slut| +08::01::2022 01:48:43|RIP KOUME| +08::01::2022 01:48:44|fun things eat dog food| +08::01::2022 01:48:44|rown +08::01::2022 01:48:47|bastava non iniziare la stolta politica delle garanzie, che si è palesata soprattutto micidiale per coloro che le hanno accettate; bastava n| +08::01::2022 01:48:49|oume... +08::01::2022 01:48:49|the tiger 2 mih| +08::01::2022 01:48:49|LASHBACK +08::01::2022 01:48:49|My pants are brown so it's 50::50| +08::01::2022 01:48:50|OUME +08::01::2022 01:48:52|OH NO NO NO| +08::01::2022 01:48:53|I WAS THERE MIHO, 2000 YEARS AGO| +08::01::2022 01:48:53|Fun things cum| +08::01::2022 01:48:54|OUME +08::01::2022 01:48:54|TSD +08::01::2022 01:48:54|ZE RUSSIANS| +08::01::2022 01:48:55|TSD +08::01::2022 01:48:55|RIP KOUME| +08::01::2022 01:48:56|good thing nothing bad happened to them| +08::01::2022 01:48:56|what do you think?| +08::01::2022 01:48:56|why does the tv match look like this| +08::01::2022 01:48:57|SNAKE! SNAKE! SNAAAKE!| +08::01::2022 01:48:57|DARK BACKSTORY| +08::01::2022 01:48:58|NOOOOO KOUMEEEEEEEEE| +08::01::2022 01:48:59|TSD +08::01::2022 01:48:59|oume! +08::01::2022 01:48:59|Koume drowned| +08::01::2022 01:48:59|>The hills are speaking Russian| +08::01::2022 01:48:59|non respingere la proposta che il Fuhrer fece il 6 ottobre dell’anno scorso, dopo finita la campagna di Polonia.| +08::01::2022 01:49:00|DIE KOUME| +08::01::2022 01:49:01|OT +08::01::2022 01:49:02|SAVE KOUME| +08::01::2022 01:49:02|SHE DEAD| +08::01::2022 01:49:03|TSD +08::01::2022 01:49:03|PTSD EP| +08::01::2022 01:49:05|human casualties. happens in my IT office all the time| +08::01::2022 01:49:06|keoume get game ended| +08::01::2022 01:49:08|i can't believe koume is fucking dead| +08::01::2022 01:49:09|MIHO YOU HAVE TO LET THOSE 5 PEOPLE DIE OR I'LL DISOWN YOU| +08::01::2022 01:49:09|PTSD FLASHBACK| +08::01::2022 01:49:11|This scene is gonna make me piss myself.| +08::01::2022 01:49:13|don't worry miho, she's carbon-coated| +08::01::2022 01:49:13|SAVE HER| +08::01::2022 01:49:16|OOOL +08::01::2022 01:49:20|DONT YOU PISS ON ME, BOY| +08::01::2022 01:49:23|MIHO THROWING| +08::01::2022 01:49:23|CARBON LUNGS| +08::01::2022 01:49:24|Save the fluff!| +08::01::2022 01:49:25|why didnt erika just block?| +08::01::2022 01:49:25|how tf u swim in that| +08::01::2022 01:49:26|carbon coated diving| +08::01::2022 01:49:27|"Is tankery safe?"| +08::01::2022 01:49:29|MIHO INTED THE MATCH| +08::01::2022 01:49:29|GERMAN GIRLS AREN'T CARBON COATED| +08::01::2022 01:49:30|Doesnt stop the tank moving though | +08::01::2022 01:49:31|PATENTED MIHO THROWS| +08::01::2022 01:49:32|SOLD THE MATCH| +08::01::2022 01:49:33|remember kids, tank's don't swim| +08::01::2022 01:49:33|F 5 guppies| +08::01::2022 01:49:33|Miho is such a loser| +08::01::2022 01:49:33|wtf was the tiger driver doing| +08::01::2022 01:49:34|10TH +08::01::2022 01:49:35|Her life is infinitely more important than an award| +08::01::2022 01:49:37|HREW +08::01::2022 01:49:39|Imagine help your teammates over win SHAME| +08::01::2022 01:49:41|why didn't they just carbon coat the girls?| +08::01::2022 01:49:42|MIHO THREW| +08::01::2022 01:49:44|No they hate her| +08::01::2022 01:49:45|Ei vittu ku väsyttää nii saatanasti| +08::01::2022 01:49:47|LUFF +08::01::2022 01:49:48|UGOI +08::01::2022 01:49:48|>dont stop the match >let a few highschooelrs drown| +08::01::2022 01:49:48|FLOOOOOOOOOOOOOOOOOOOOOOOOOFFF AWWWWWWWWWWWWWWWW| +08::01::2022 01:49:49|LUFF +08::01::2022 01:49:49|LOOF +08::01::2022 01:49:49|>wasting time on blue enemies| +08::01::2022 01:49:49|this is what happens when nobody peeks their head out to spot| +08::01::2022 01:49:51|koume isn't important| +08::01::2022 01:49:51|LOOF +08::01::2022 01:49:51|mihos driver was a retard for not moving| +08::01::2022 01:49:51|FUWA FUWA| +08::01::2022 01:49:52|Fluff overload| +08::01::2022 01:49:52|LOOF +08::01::2022 01:49:52|LOOF!!!!!!!!!!!!!! +08::01::2022 01:49:52|LOOOOOOOOOOF +08::01::2022 01:49:52|fluff incoming| +08::01::2022 01:49:53|LIFF +08::01::2022 01:49:53|LOOF +08::01::2022 01:49:53|LUFF +08::01::2022 01:49:53|LOOOOOOOOFFFFFFF +08::01::2022 01:49:53|Oramai tutto ciò appartiene al passato. Se poi oggi siamo decisi ad affrontare i rischi e i sacrifici di una guerra, gli è che l’onore, gli | +08::01::2022 01:49:54|LOOF +08::01::2022 01:49:54|Floof rubs!| +08::01::2022 01:49:54|NOBODY DIES IN GUP, MIHO MADE A MISTAKE| +08::01::2022 01:49:54|DD tanks swim| +08::01::2022 01:49:54|LOOFY!!!!!!!!! +08::01::2022 01:49:54|LOOOOOF +08::01::2022 01:49:54|LOOF +08::01::2022 01:49:55|THE THING| +08::01::2022 01:49:55|is anzio next?| +08::01::2022 01:49:56|SQUIGGLY FLUFF| +08::01::2022 01:49:56|UTE +08::01::2022 01:49:56|AHOOOOOOOO +08::01::2022 01:49:56|SHE DID THE THING| +08::01::2022 01:49:56|LUFFY +08::01::2022 01:49:57|LOOOF +08::01::2022 01:49:57|LOOF +08::01::2022 01:49:57|FEEL THE FLOOF| +08::01::2022 01:49:57|fuwa fuwa!| +08::01::2022 01:49:57|LOOOOOOFFFFF +08::01::2022 01:49:57|senshado is hardcore| +08::01::2022 01:49:58|SUE GOY| +08::01::2022 01:49:58|LUUUUUUUUUUUUUUUUFF +08::01::2022 01:49:58|LOOF.gif +08::01::2022 01:49:58|LOOF +08::01::2022 01:49:59|LOOOOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFFFFFFFFFFFFFFFFF +08::01::2022 01:49:59|Teammates are for sacrificing| +08::01::2022 01:49:59|loof +08::01::2022 01:49:59|LOOOOOF +08::01::2022 01:49:59|LOOF +08::01::2022 01:49:59| わふわ +08::01::2022 01:50:00|LOOF +08::01::2022 01:50:02|luff +08::01::2022 01:50:03|I WANT TO DO THAT TO HER| +08::01::2022 01:50:04|l’avvenire ferramente lo impongono, poichè un grande popolo è veramente tale se considera sacri i suoi impegni e se non evade dalle prove su| +08::01::2022 01:50:04|fuwa fuwa time| +08::01::2022 01:50:06|LUUUUUUUFFFFFFFFFFFFFFFFF +08::01::2022 01:50:07|You're going to have to clean that part of the tank now| +08::01::2022 01:50:07|SHE DID THE THING| +08::01::2022 01:50:08|LOOOOOOOFF +08::01::2022 01:50:09|DDOBOORU +08::01::2022 01:50:09|HILJAA SAATANAN HOMO JA JUO LISÄÄ KAHVIA| +08::01::2022 01:50:11|SGT FLOOOFBALL| +08::01::2022 01:50:11|FLOOF HER HAIR| +08::01::2022 01:50:13|That one fluff doujin was godly| +08::01::2022 01:50:13|i want to make oddball a mother| +08::01::2022 01:50:14|THE FLOOF GIF| +08::01::2022 01:50:20|Koume is fluff and you must alway save fluff| +08::01::2022 01:50:21|DUCE BROS I TS ALMOST OUR TIME| +08::01::2022 01:50:22|that fucking hard cut lmao| +08::01::2022 01:50:22|TYPE THE LYRICS BY HAND YOU COPYPASTING FRAUD| +08::01::2022 01:50:22|ifaheojpaijpta +08::01::2022 01:50:23|momo fuckin shit| +08::01::2022 01:50:25|MOMO HATE| +08::01::2022 01:50:27|DUCE DUCE DUCE | +08::01::2022 01:50:27|WITHOUT SEAMS| +08::01::2022 01:50:28|GET COCKY DUCE BROS GET COCKY| +08::01::2022 01:50:28|DUCE TIME| +08::01::2022 01:50:28|momo +08::01::2022 01:50:29|Brown town soon| +08::01::2022 01:50:29|eeeeeeeeeeee +08::01::2022 01:50:29|WITHOUT SEAMS| +08::01::2022 01:50:30|DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON | +08::01::2022 01:50:31|GETCOCKY DUCE BROS| +08::01::2022 01:50:31|Momo... go away...| +08::01::2022 01:50:32|how many kids would you give yukari?| +08::01::2022 01:50:33|UCE! +08::01::2022 01:50:34|NZUUUUUUUUUUUUUUUU +08::01::2022 01:50:35|Anzio is an ezclap| +08::01::2022 01:50:37|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 01:50:37|DUCE DUCE DUCE| +08::01::2022 01:50:37|vce +08::01::2022 01:50:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:37|GET COCKY DUCE BROOOOOOSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +08::01::2022 01:50:37|VCE +08::01::2022 01:50:37|UCE +08::01::2022 01:50:37|momo shitposting in gup thread| +08::01::2022 01:50:38|shitaly +08::01::2022 01:50:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:38|no way in hell anzio loses this time around| +08::01::2022 01:50:38|IS ANZU EVER NOT MUCNHING ON SOMETHING| +08::01::2022 01:50:38|AHHHHHH +08::01::2022 01:50:38|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:50:39|DVCE DVCE DVCE | +08::01::2022 01:50:39|PIZZA RIME| +08::01::2022 01:50:39|OOOOOOOD +08::01::2022 01:50:39|IL DUCE IL DUCE IL DUCE| +08::01::2022 01:50:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:41|UCE +08::01::2022 01:50:41|DVCE DVCE| +08::01::2022 01:50:42|Pizza Time| +08::01::2022 01:50:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:50:42|UCE +08::01::2022 01:50:42|UCE +08::01::2022 01:50:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:42|duce | +08::01::2022 01:50:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE v| +08::01::2022 01:50:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:44|FUNICULI FUNICULA FUNICULI FUNICULAAAAAAAAA| +08::01::2022 01:50:44|UCE +08::01::2022 01:50:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:44|DUCE DUCE DUCE DUCE| +08::01::2022 01:50:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE v| +08::01::2022 01:50:45|VCE +08::01::2022 01:50:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:45|DVCE | +08::01::2022 01:50:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:46|DVCE | +08::01::2022 01:50:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:46|DUCE DUCE DUCE DUCE | +08::01::2022 01:50:46|1 MILIONE LIRE SU ANZIO| +08::01::2022 01:50:46|UCE +08::01::2022 01:50:46|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:50:46|DVCE DVCE DVCE| +08::01::2022 01:50:46|VCE +08::01::2022 01:50:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:47|DVCE DVCE DVCE| +08::01::2022 01:50:47|DUCE DUCE DUCE DUCE| +08::01::2022 01:50:47|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +08::01::2022 01:50:47|vce +08::01::2022 01:50:47|Its the freewin round, yeah| +08::01::2022 01:50:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:48|Pizza Pasta| +08::01::2022 01:50:48|UCE +08::01::2022 01:50:49|DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:49|DUCE DUCE DUCE DUCE DCUD| +08::01::2022 01:50:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:50|UCE +08::01::2022 01:50:50|HEIL MEIN DVCE| +08::01::2022 01:50:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:51|DUCE DUCE DUCE DUCE| +08::01::2022 01:50:51|DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:51|JOBBERS JOBBERS JOBBERS| +08::01::2022 01:50:51|best gril| +08::01::2022 01:50:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:51|UCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +08::01::2022 01:50:52|EAMLESS +08::01::2022 01:50:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:53|UCE +08::01::2022 01:50:53|Armored Gokarts| +08::01::2022 01:50:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:54|DVCE DVCE DVCE| +08::01::2022 01:50:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:55|DVCE DVCE DVCE| +08::01::2022 01:50:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:56|DVCE DVCE DVCE o:: o:: o::| +08::01::2022 01:50:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:50:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:57|DUCE DUCE DUCE DUCE DUC E| +08::01::2022 01:50:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:57|DVCE DSVCE SDVCE DVCE| +08::01::2022 01:50:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 01:50:58|DUCE DUCE DUCE| +08::01::2022 01:50:58|vce +08::01::2022 01:50:58|DUCE DUCE DUCE| +08::01::2022 01:50:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:59|eamless +08::01::2022 01:50:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:50:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:50:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:50:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUC| +08::01::2022 01:51:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:00| o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: | +08::01::2022 01:51:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:01|the chat is going so fast no one will notice im gay| +08::01::2022 01:51:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:03|FUNICULI FUNICULA| +08::01::2022 01:51:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:04|DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +08::01::2022 01:51:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:05|DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:05|UCE +08::01::2022 01:51:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:08|i saw that you faggot| +08::01::2022 01:51:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:09|DVCE DVCE DVCE| +08::01::2022 01:51:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:09|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:12| DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +08::01::2022 01:51:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:12|I CANT SEE| +08::01::2022 01:51:12|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:12|Duce duce DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:12|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +08::01::2022 01:51:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:12|DUCE DUCE DUCE DUCEE| +08::01::2022 01:51:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:14|DUCE DUCE DUCE| +08::01::2022 01:51:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:14|TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +08::01::2022 01:51:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:14|you saw nothing| +08::01::2022 01:51:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:16|DUCE DUCE DUCE DUCE| +08::01::2022 01:51:16|SI SISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISIS| +08::01::2022 01:51:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE UDC EUCDUC EDUC E| +08::01::2022 01:51:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:16|DVCE DVCE I RABU DCE| +08::01::2022 01:51:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:19| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:21|o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:51:21|Mussolini best girl| +08::01::2022 01:51:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:22|DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:23|DVCE DVCE DVCE DVCE| +08::01::2022 01:51:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:51:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:24|hair si fake| +08::01::2022 01:51:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:25|I LOVE MEN| +08::01::2022 01:51:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +08::01::2022 01:51:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:25|JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JO| +08::01::2022 01:51:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:26|I WANT TO FUCK THE ITALIAN| +08::01::2022 01:51:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:27|o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:51:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:27|SASUGA DUCE| +08::01::2022 01:51:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:51:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:28|WITH ALL THIS NOISE NO ONE WILL KNOW I WANT TO FUCK PEPARONI| +08::01::2022 01:51:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:30|Poor Eclair| +08::01::2022 01:51:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:51:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:51:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:32|o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:51:32|PEPPERONI > DUNCE| +08::01::2022 01:51:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:32|NICE WIG| +08::01::2022 01:51:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:51:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:35|DUCE DUCE DUCE DUCE| +08::01::2022 01:51:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:35|DUCE DUCE DUCE DUCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:51:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:36|I LOVE DUCE| +08::01::2022 01:51:36|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:36| +08::01::2022 01:51:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:36|sasuga anon| +08::01::2022 01:51:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:38|AVE DVCE| +08::01::2022 01:51:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:39| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:51:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:41|ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +08::01::2022 01:51:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:42|i dislike duce| +08::01::2022 01:51:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:43| +08::01::2022 01:51:43|CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +08::01::2022 01:51:44|APEFACE +08::01::2022 01:51:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:51:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:44|o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:51:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:44|DUCE DUCE DUCE DUCE| +08::01::2022 01:51:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:45|DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCE| +08::01::2022 01:51:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:45| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:48|VIVA DUCE| +08::01::2022 01:51:49|CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +08::01::2022 01:51:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:49|Type DVCE if you're a faggot| +08::01::2022 01:51:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:52|UCE +08::01::2022 01:51:52|Anzio is bad and so is Chovy| +08::01::2022 01:51:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:52|DUCE DUCE| +08::01::2022 01:51:52|DUCE IS CTU| +08::01::2022 01:51:52|AHEM DUCE| +08::01::2022 01:51:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:53| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +08::01::2022 01:51:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:51:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:55|UCXE +08::01::2022 01:51:55|:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:51:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:56|IYO-PIYO! +08::01::2022 01:51:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:57|YKE +08::01::2022 01:51:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:58|FUNICULI FUNICULA| +08::01::2022 01:51:59|>Duce spam better then Murica spam| +08::01::2022 01:51:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:51:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:59|🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕| +08::01::2022 01:51:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:51:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:52:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:00|:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:52:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:52:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:03|funiculi, funicula, funiculi, funicuLAAAAAAAAAAAAAAA| +08::01::2022 01:52:03|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +08::01::2022 01:52:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:04| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:52:04|ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +08::01::2022 01:52:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:05|DUCE DUCE DUCE DUCE DUCE DUCD EUDCE DUC EDUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:06|HEM +08::01::2022 01:52:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:06|AVE DVCE| +08::01::2022 01:52:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:07|:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:52:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:09|They call her Anchovy because she smells like fish| +08::01::2022 01:52:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:10|Muricans on death watch| +08::01::2022 01:52:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:11|FUNICULI FUNICULA FUNICULI FUNICULAAAAAAAAA| +08::01::2022 01:52:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:12|:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:52:12|🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +08::01::2022 01:52:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:14|Duce fucks niggers| +08::01::2022 01:52:15|FUNICULI FUNICULAAAAAAAAAAAAA| +08::01::2022 01:52:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:17|ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +08::01::2022 01:52:17|:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:52:17|🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +08::01::2022 01:52:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:52:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:19|🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +08::01::2022 01:52:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:19|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 01:52:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:20|IL PIU FORTE| +08::01::2022 01:52:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:52:20|ONG +08::01::2022 01:52:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:21|h +08::01::2022 01:52:21|CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +08::01::2022 01:52:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:21|thinking +08::01::2022 01:52:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:22|SOME PASTA ON MY BALLS| +08::01::2022 01:52:23|>heavy tank| +08::01::2022 01:52:24|ASTA +08::01::2022 01:52:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:24|melly +08::01::2022 01:52:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:25|:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:52:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:26|o:: o:: o::| +08::01::2022 01:52:26|LUNCH TIME| +08::01::2022 01:52:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:52:27|ASTA +08::01::2022 01:52:27|PASTA TIME| +08::01::2022 01:52:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:52:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:29|ttps:::::elwolf6.feen.us::5oqlh6.pnghttps:::::elwolf6.feen.us::5oqlh6.pnghttps:::::elwolf6.feen.us::5oqlh6.pnghttps:::::elwolf6.feen.us::5oqlh6.pnghttp +08::01::2022 01:52:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:30|PASTA TIME| +08::01::2022 01:52:30|DUCE DUCE DUCE DUCE | +08::01::2022 01:52:30|pasta time| +08::01::2022 01:52:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:32|ASTA +08::01::2022 01:52:32|NO DVCE| +08::01::2022 01:52:32|melly +08::01::2022 01:52:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:34|PASTA TIME| +08::01::2022 01:52:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:52:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:34|PASTA PASTA| +08::01::2022 01:52:34|PASTA TIME| +08::01::2022 01:52:35|oh shit its pasta time| +08::01::2022 01:52:35|DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED!| +08::01::2022 01:52:36|PIZZA TIME| +08::01::2022 01:52:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:38|BENITO MUSSOLINI| +08::01::2022 01:52:39|Pizza time| +08::01::2022 01:52:39|ASTA +08::01::2022 01:52:39|PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA| +08::01::2022 01:52:40|melly +08::01::2022 01:52:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:52:40|LUNCHU LUNCHU| +08::01::2022 01:52:41|DUCE DUCE | +08::01::2022 01:52:41|www +08::01::2022 01:52:42|ASTAAAAAAAAAAAA +08::01::2022 01:52:42|PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME | +08::01::2022 01:52:44|pasta time | +08::01::2022 01:52:44|so sad| +08::01::2022 01:52:45|Poor duce| +08::01::2022 01:52:45|I've missed this| +08::01::2022 01:52:45|uce... +08::01::2022 01:52:46|CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +08::01::2022 01:52:46|Totsugeki has no deceit| +08::01::2022 01:52:46|LOTSA SPAGHETTI| +08::01::2022 01:52:47|I could go for some 'za| +08::01::2022 01:52:49|BAKA DUCE BAKA DUCE BAKA DUCE| +08::01::2022 01:52:49|( +08::01::2022 01:52:49|POOR DVCE| +08::01::2022 01:52:51|🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +08::01::2022 01:52:51|duce is ctu| +08::01::2022 01:52:52|lat +08::01::2022 01:52:52|CTU CTU CTU CTU| +08::01::2022 01:52:53|Is there any girl better than The Duce?| +08::01::2022 01:52:54|GIOVINEZZA, GIOVINEZZA| +08::01::2022 01:52:54|eDUCED +08::01::2022 01:52:55|I love her much| +08::01::2022 01:52:56|Nothing honest about that widc, dvce| +08::01::2022 01:52:57|PIZZA PASTA PUT IT IN A BOX| +08::01::2022 01:52:58|ANZU ANZU ANZU| +08::01::2022 01:53:02|Κορόιδο Μουσολίνι| +08::01::2022 01:53:04|pizza time | +08::01::2022 01:53:05|ITALIAN +08::01::2022 01:53:06|ASION +08::01::2022 01:53:08|ITALIAN """"CULTURE"""| +08::01::2022 01:53:08|PRIMAVERA DI BELLEZZA| +08::01::2022 01:53:12|κανείς σας δε θα μείνει| +08::01::2022 01:53:12|larpers +08::01::2022 01:53:12|So a real Italian made it?| +08::01::2022 01:53:13|>Italian >Tanks| +08::01::2022 01:53:14|CUTE TANKETTES| +08::01::2022 01:53:14|E PER BENITO MUSSOLINI EIA EIA ALALA| +08::01::2022 01:53:14|god I wish I had pasta| +08::01::2022 01:53:14|🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +08::01::2022 01:53:16|The pasta in my blood rejoices| +08::01::2022 01:53:16|Mul ei oo kahvii, pelkkää viinaa| +08::01::2022 01:53:17|I COOKE DA PASTA| +08::01::2022 01:53:17|Me too, Hana| +08::01::2022 01:53:18|DELLA VITA NELL'ASPREZZA| +08::01::2022 01:53:21|viva anzio| +08::01::2022 01:53:21|🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +08::01::2022 01:53:22|εσύ και η Ιταλία, η πατρίδα σου η γελοία, τρέμετε όλοι το χακί| +08::01::2022 01:53:25|melly +08::01::2022 01:53:25|she means pizza| +08::01::2022 01:53:28|SHI BWI| +08::01::2022 01:53:29| 🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 +08::01::2022 01:53:29|IMAGINE GOING FROM ANCIENT ROME TO MODERN ITALIANS. BIGGEST DOWNGRADE IN HISTORY| +08::01::2022 01:53:30|Fiat Panda tanks| +08::01::2022 01:53:31|oreshadowing? +08::01::2022 01:53:31|10 years later, they're still using CV33's| +08::01::2022 01:53:32|IL TUO CANTO SQUILLA E VA| +08::01::2022 01:53:41|DUCE SMELLS GOOD| +08::01::2022 01:53:43|UKARI +08::01::2022 01:53:44|NTER +08::01::2022 01:53:44|NTER +08::01::2022 01:53:44|BASED YUKARI| +08::01::2022 01:53:45|NDERCOVER +08::01::2022 01:53:45|NTER +08::01::2022 01:53:46|ENTER +08::01::2022 01:53:46|ADAIMAA +08::01::2022 01:53:46|Inteligence time| +08::01::2022 01:53:46|NTER +08::01::2022 01:53:47|ugoi +08::01::2022 01:53:49|BASED YUKARI| +08::01::2022 01:53:50|SHE BACK| +08::01::2022 01:53:50|DDBALL +08::01::2022 01:53:51|PYFLUFF +08::01::2022 01:53:51|🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +08::01::2022 01:53:52|FLOOF RECON NUMBER 1| +08::01::2022 01:53:53|I +08::01::2022 01:53:53|AI +08::01::2022 01:53:53|SHE CAN'T KEEP GETTING AWAY WITH IT!| +08::01::2022 01:53:58|🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +08::01::2022 01:53:58|winky floof| +08::01::2022 01:54:00|AI +08::01::2022 01:54:00|UTE +08::01::2022 01:54:01|Pepperoni's pepperoni nipples| +08::01::2022 01:54:01|TALIA +08::01::2022 01:54:04|WHEN DOES SHE EDIT IT SHE'S STILL IN THE UNIFORM| +08::01::2022 01:54:05|SHE DID IT AGAIN| +08::01::2022 01:54:07|METAL GEAR FLOOF| +08::01::2022 01:54:07|hope she didn't cut out her undressing this time| +08::01::2022 01:54:11|I thought that red text was danmaku am I retarded| +08::01::2022 01:54:12|G2 SPOOK YUKARI| +08::01::2022 01:54:12|NAAAAAAAAAAAKE +08::01::2022 01:54:13|Nice "TS" idiot| +08::01::2022 01:54:13|>viinaa || ei helvetti jos joisin nyt ja huomenna taas calvadosta| +08::01::2022 01:54:14|WHAT? METAL GEAR?| +08::01::2022 01:54:17|MY PC FROOZE FROM ALL THE DUCE SPAMMING...WE GOT TOO COCKY DUCE BROS| +08::01::2022 01:54:18|ewd +08::01::2022 01:54:18|SHE CAN'T KEEP GETTING AWAY WITH THIS| +08::01::2022 01:54:19|anzio is amazing| +08::01::2022 01:54:19|EX +08::01::2022 01:54:20|EW +08::01::2022 01:54:21|OOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +08::01::2022 01:54:21|ewww +08::01::2022 01:54:22|What do those Italian bastards have| +08::01::2022 01:54:23|NOOOOO KEEP GOING| +08::01::2022 01:54:23|BUTT AND BACK| +08::01::2022 01:54:24|SHE CAN'T KEEP GETTING AWAY WITH THIS| +08::01::2022 01:54:24|EW +08::01::2022 01:54:25|UUUOOOOH +08::01::2022 01:54:26|OOOOOOOOOOOOOOOOOOOH +08::01::2022 01:54:27|SHE CAN'T KEEP GETTING AWAY WITH THIS!!!| +08::01::2022 01:54:30|SHE CAN'T KEEP GETTING AWAY WITH THIS| +08::01::2022 01:54:31|UTE +08::01::2022 01:54:32|white stockings are my fetish| +08::01::2022 01:54:32|Anzio uniforms are the cuttest| +08::01::2022 01:54:33|OOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHH +08::01::2022 01:54:34|EASE +08::01::2022 01:54:36|CUTE ANZIO GIRLS| +08::01::2022 01:54:38|Calvadost on vaa puoli pulloa nii se menee ihan hyvin alas no worries| +08::01::2022 01:54:39|SHE CAN'T KEEP GETTING AWAY WITH THIS| +08::01::2022 01:54:40|Italo girls <3| +08::01::2022 01:54:45|atties +08::01::2022 01:54:48|SHE CAN'T KEEP GETTING AWAY WITH THIS| +08::01::2022 01:54:48|INBOU +08::01::2022 01:54:49|anzio = best school| +08::01::2022 01:54:49|I wanna marry left| +08::01::2022 01:54:49|OVL +08::01::2022 01:54:50|OOR +08::01::2022 01:54:50|YOU CAN'T SUFFER IN ANZIO| +08::01::2022 01:54:53|>POOR ITALIANS| +08::01::2022 01:54:53|EYY I'M WALKIN' 'ERE| +08::01::2022 01:54:56|LOOF +08::01::2022 01:54:57|cute scarf girl| +08::01::2022 01:54:57|SHE'S LUCKY EVERYONE IN THE WORLD SPEAKS JAPANESE LIKE ANY ANIME| +08::01::2022 01:54:57|Pepperoni has two younger brothers. The lucky bastards.| +08::01::2022 01:54:58|LOTSA SPAGHETTI| +08::01::2022 01:55:00|AKARONI +08::01::2022 01:55:01|EPPERONI!!!!! +08::01::2022 01:55:03|EPERONI +08::01::2022 01:55:05|AKARONI +08::01::2022 01:55:05|EPPERONI +08::01::2022 01:55:05|EPPA +08::01::2022 01:55:06|IMAGINE THE SMELL| +08::01::2022 01:55:06|OISHII PASTA| +08::01::2022 01:55:06|PEPPERONI MY LOVE| +08::01::2022 01:55:07|oishiii pasta dayou| +08::01::2022 01:55:07|EPPERONI +08::01::2022 01:55:08|>ketchup in your pasta| +08::01::2022 01:55:08|Pepper chan!| +08::01::2022 01:55:09|ASTA +08::01::2022 01:55:09|our eyes met| +08::01::2022 01:55:10|stupid pepperoni| +08::01::2022 01:55:11|ketchup +08::01::2022 01:55:13|NO ONIONS!?| +08::01::2022 01:55:14|akaroni +08::01::2022 01:55:14|ex +08::01::2022 01:55:16|cute braid| +08::01::2022 01:55:17|why is she giving the recipe to a customer| +08::01::2022 01:55:18|PEPPERONI IS SEX| +08::01::2022 01:55:20|AKARONI +08::01::2022 01:55:21|>ITALIAN CUISINE| +08::01::2022 01:55:21|fuck im hungry| +08::01::2022 01:55:23|TUPIDRONI +08::01::2022 01:55:23|akaroni +08::01::2022 01:55:23|KETCHUP YOU MORON| +08::01::2022 01:55:24|onions are for the french| +08::01::2022 01:55:24|ketchup +08::01::2022 01:55:24|PEPPERONI | +08::01::2022 01:55:27|>3 MILLION| +08::01::2022 01:55:28|>Italian "economy"| +08::01::2022 01:55:29|it isn't ketchup you mutt fucks| +08::01::2022 01:55:30|kek 300 yen| +08::01::2022 01:55:30|3 million lira = 3 dollar| +08::01::2022 01:55:30|the ketchup cooks the eggs| +08::01::2022 01:55:31|I've read this doujin| +08::01::2022 01:55:32|LARP FAILED| +08::01::2022 01:55:32|INFLATION +08::01::2022 01:55:33|3 QUID| +08::01::2022 01:55:34|Anchovy > ALL| +08::01::2022 01:55:35|in dollars woman| +08::01::2022 01:55:35|pay denbts| +08::01::2022 01:55:36|DA RO| +08::01::2022 01:55:38|AROOO +08::01::2022 01:55:45|stupid pepperoni| +08::01::2022 01:55:45|She's so lucky Bakaroni is a baka| +08::01::2022 01:55:46|she is so fucking stupid| +08::01::2022 01:55:47|smol subs| +08::01::2022 01:55:48|AKARONI +08::01::2022 01:55:48|FUCKING DUMBASS| +08::01::2022 01:55:48|DUMB RETARD PEPPERONI| +08::01::2022 01:55:48|mutts think tomato sauce tastes like ketchup| +08::01::2022 01:55:50|One (1) heavy tank| +08::01::2022 01:55:50|AKARONI +08::01::2022 01:55:50|>heavy tank| +08::01::2022 01:55:51|>TOP SECRET| +08::01::2022 01:55:51|akaroni +08::01::2022 01:55:53|Yukari confirmed cunnyseur| +08::01::2022 01:55:53|Greasy anzio pasta cheaper than anything my shithole country offers| +08::01::2022 01:55:54|Moron ronni| +08::01::2022 01:55:54|>Heavy tank| +08::01::2022 01:55:55|AKARONI +08::01::2022 01:55:55|RONI DUM| +08::01::2022 01:55:56|AKARONI +08::01::2022 01:55:58|HEAVY" +08::01::2022 01:56:00|AKARONI +08::01::2022 01:56:00|CUTE FUCKING RETARDED SEX NUKE PEPPERONI| +08::01::2022 01:56:00|Is this Minos' VA?| +08::01::2022 01:56:01|heavy +08::01::2022 01:56:05|she's literally saying this right into the camera| +08::01::2022 01:56:06|LAP* +08::01::2022 01:56:07|Still more than Orai\| +08::01::2022 01:56:08|LAP +08::01::2022 01:56:10|longer than i can remember... so this morning?| +08::01::2022 01:56:10|LAPPU +08::01::2022 01:56:13|Pasta so greasy saunders can refuel from it| +08::01::2022 01:56:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:13|WHY ARE RETARDS SO SEXY AAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 01:56:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:14|ENIUS +08::01::2022 01:56:14|RRIVEDERCI +08::01::2022 01:56:15|RRIVEDERCI +08::01::2022 01:56:15|RREVIDERCI! +08::01::2022 01:56:15|RRIVEDERCHI +08::01::2022 01:56:16|rrevaderci +08::01::2022 01:56:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:56:19|cute tankette| +08::01::2022 01:56:19|AKNETTE +08::01::2022 01:56:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:19|Still better pronunciation than Brad Pitt| +08::01::2022 01:56:20|Yukrai is a serious spy please understand| +08::01::2022 01:56:20|STOP INSULTING ANZION'S TOP SECRET HEAVY TANK IT WILL BE GLORIOUS THEY WILL WIN AGAINST OOARAI| +08::01::2022 01:56:21|A FUCKING CV| +08::01::2022 01:56:21|INFOSEC MOTHERFUCKER, DO YOU KNOW OF IT| +08::01::2022 01:56:21|Brunno Pepperoni| +08::01::2022 01:56:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:23|ARI ARI ARI ARI| +08::01::2022 01:56:23|RRIVEDEEERCI +08::01::2022 01:56:23|CHEF VN ROUTE| +08::01::2022 01:56:23|caruro veloche| +08::01::2022 01:56:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:27|DUCE DUCE DUCE| +08::01::2022 01:56:27|RRIVADERCI +08::01::2022 01:56:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:28|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 01:56:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:28|You will never drive around campus raising morale in your armored car| +08::01::2022 01:56:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:30|DUCE | +08::01::2022 01:56:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:31|NTER +08::01::2022 01:56:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:56:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCED| +08::01::2022 01:56:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:33| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:36|UCE +08::01::2022 01:56:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:36|CARRO VELOCE| +08::01::2022 01:56:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 01:56:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:37|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:37|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:37|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:38|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 01:56:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:39|PURE DC TRACTION| +08::01::2022 01:56:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:56:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:41|A +08::01::2022 01:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:41|🍕🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 DUCE DUCE DUCE DUCE 🍕🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 DUCE DUCE DUCE DUCE | +08::01::2022 01:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:42|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 01:56:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:43| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:43|DUCE DUCE DUCE DUCE| +08::01::2022 01:56:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:56:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:45|DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:45|AVE AVE AVE| +08::01::2022 01:56:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:45|DUCE DUCE DUCE DUC EDUC DEU DUC E| +08::01::2022 01:56:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:46|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DU| +08::01::2022 01:56:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:46|UCE +08::01::2022 01:56:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:47|DVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCE| +08::01::2022 01:56:47|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 01:56:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:48|o:: DUCE o:: DUCE o:: DUCE| +08::01::2022 01:56:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:49|UCE +08::01::2022 01:56:49|uce +08::01::2022 01:56:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:56:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:50|o:: DUCE o:: DUCE o:: DUCE| +08::01::2022 01:56:50|UCE +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:51| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:51|i think bros love duce| +08::01::2022 01:56:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:53|DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +08::01::2022 01:56:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:53|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 01:56:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|DUCE! DUCE! DUCE! DUCE! | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|o:: DUCE o:: DUCE o:: DUCE| +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:55|DUCE DUCE DUEC DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:55|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:56:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:56|DUCE DUCE DUCE| +08::01::2022 01:56:56|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:56| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:56:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE VV| +08::01::2022 01:56:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:58|UCE +08::01::2022 01:56:58|DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE| +08::01::2022 01:56:58|DUCE DUCE DUCE DUCE | +08::01::2022 01:56:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:56:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:56:59|DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:56:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +08::01::2022 01:57:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:01|o:: DUCE o:: DUCE o:: DUCE| +08::01::2022 01:57:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:01|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 01:57:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:04|o:: DUCE o:: DUCE o:: DUCE| +08::01::2022 01:57:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:05|ew +08::01::2022 01:57:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:57:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:05|UCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +08::01::2022 01:57:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:06|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:57:07|DUCE DUCE DUCE DUCEEE| +08::01::2022 01:57:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:09|o:: DUCE o:: DUCE o:: DUCE| +08::01::2022 01:57:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 01:57:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:57:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:12| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 01:57:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +08::01::2022 01:57:18|MOMO +08::01::2022 01:57:18|7 +08::01::2022 01:57:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 01:57:27|SEX WITH MOMO| +08::01::2022 01:57:28|understood, faggots?| +08::01::2022 01:57:31|EIG +08::01::2022 01:57:32|"UNDERSTOOD, FAGGOTS?"| +08::01::2022 01:57:32|already blew my horn| +08::01::2022 01:57:32|BASED CAESAR| +08::01::2022 01:57:32|HAIL CAESAR| +08::01::2022 01:57:32|EI EI OH!| +08::01::2022 01:57:33|A A O| +08::01::2022 01:57:34|bunnies = maggots| +08::01::2022 01:57:36|NO CAESAR WE CAN'T SALUTE LIKE THAT ANYMORE| +08::01::2022 01:57:36|EI EI OH| +08::01::2022 01:57:36|me as anzu's director's chair| +08::01::2022 01:57:36|the autism war cry| +08::01::2022 01:57:37|EI EI OOO| +08::01::2022 01:57:37|A A O| +08::01::2022 01:57:38|A A O| +08::01::2022 01:57:38|o:: o:: o::| +08::01::2022 01:57:39|A A O| +08::01::2022 01:57:41|o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o:: o::| +08::01::2022 01:57:42| って兜の緒を締めよ +08::01::2022 01:57:42|AYO THA HAND| +08::01::2022 01:57:44|yo +08::01::2022 01:57:47|EIG +08::01::2022 01:57:48|EAK +08::01::2022 01:57:48|o:: HAIL CAESAR| +08::01::2022 01:57:51|Bunny = Death| +08::01::2022 01:57:52|uce! +08::01::2022 01:57:57|Hippo team is cancelled| +08::01::2022 01:57:57|eaklings +08::01::2022 01:57:57|alright i am too tired for this, see you next time anons, or in the morning, i don't know| +08::01::2022 01:57:58|what happens if you drop a live round?| +08::01::2022 01:57:58|LEGIO! AETERNA! AETERNA!| +08::01::2022 01:58:01|>Not able to lift a shell| +08::01::2022 01:58:06|don't, it makes mustard gas| +08::01::2022 01:58:07|you die| +08::01::2022 01:58:07|are the episode and ova spliced?| +08::01::2022 01:58:08|ORIKO +08::01::2022 01:58:10|goodnight anon| +08::01::2022 01:58:14|YEs, they're spliced| +08::01::2022 01:58:16|yeah it's the supercut| +08::01::2022 01:58:17|If she dies, she dies| +08::01::2022 01:58:18|YOU FUCKING NIGGERS CRASHED MY STREAM| +08::01::2022 01:58:19|sss +08::01::2022 01:58:20|tank weight| +08::01::2022 01:58:20|>training arc lasts 30 seconds| +08::01::2022 01:58:21|that's what supercut means retard| +08::01::2022 01:58:21|>lost weight| +08::01::2022 01:58:23|SURE SAORI| +08::01::2022 01:58:23|leavers +08::01::2022 01:58:23|Sure, Saori. Sure.| +08::01::2022 01:58:23|FAGGOT ANON DARING TO SLEEP| +08::01::2022 01:58:23|I'll supercut you ,virgin| +08::01::2022 01:58:23|they are female children no older than 14yo, they cant be expected to lift tank shells| +08::01::2022 01:58:25| 本語はできる? +08::01::2022 01:58:29|Nothing its Carbon Coated Shells| +08::01::2022 01:58:37|14yo is perfect for breeding| +08::01::2022 01:58:44|tankers high they call it| +08::01::2022 01:58:45|>Not being swole at 14y old| +08::01::2022 01:58:48|lmao lone comment| +08::01::2022 01:58:51|her curves are hard| +08::01::2022 01:58:55|olleybutts +08::01::2022 01:58:56|senpai pls help| +08::01::2022 01:58:56|Volleyball curves are har| +08::01::2022 01:58:58|the volleyball team's curves....| +08::01::2022 01:58:59|MY BUTT HURTS| +08::01::2022 01:59:01|maybe her butt hurts| +08::01::2022 01:59:02|MALE FRIENDS| +08::01::2022 01:59:03|>show has a ton of cute milfs >nooo I want 14yo| +08::01::2022 01:59:04|butt pillow| +08::01::2022 01:59:04|male +08::01::2022 01:59:04|ags +08::01::2022 01:59:05|utthurt +08::01::2022 01:59:06|ENPAI +08::01::2022 01:59:07|WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +08::01::2022 01:59:07|shaking butts| +08::01::2022 01:59:08|ostanze.png +08::01::2022 01:59:08|boyfriend +08::01::2022 01:59:09|what a fags| +08::01::2022 01:59:09|LUTS +08::01::2022 01:59:09|FROM WHAT?| +08::01::2022 01:59:11|SEX FRIENDS| +08::01::2022 01:59:12|AGS +08::01::2022 01:59:12|GET YUUKI A BETTER BOYFRIEND| +08::01::2022 01:59:13|WHY DO ALL THEIR BUTTS HURT????????????| +08::01::2022 01:59:15|These boys are all fags holy shit| +08::01::2022 01:59:15|AGS +08::01::2022 01:59:15|eight o| +08::01::2022 01:59:16|boyfriend +08::01::2022 01:59:17|ags +08::01::2022 01:59:18|would you dump a Yuki?| +08::01::2022 01:59:21|HER BOYFRIEND DUMPED HER YES| +08::01::2022 01:59:25|Never dump Yuki| +08::01::2022 01:59:26|WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +08::01::2022 01:59:26|AIRFOCE BOYS STRONG| +08::01::2022 01:59:27|yes, into my bed| +08::01::2022 01:59:28|I CAN RESOLVE THE LACK OF BF ISSUE| +08::01::2022 01:59:28|what a bunch of faggots| +08::01::2022 01:59:29|rip saori| +08::01::2022 01:59:29|only faggots I swear| +08::01::2022 01:59:29|Milfs are used, dont you want fresh?| +08::01::2022 01:59:30|YUUKI THE MEN YOU KEEP IN THE BASEMENT ARE NOT "BOYFRIENDS"| +08::01::2022 01:59:34|LANG +08::01::2022 01:59:35|don't trust saori with relationship advice| +08::01::2022 01:59:37|based stug| +08::01::2022 01:59:39|>Saori giving relationship advice| +08::01::2022 01:59:40|its a self propelled gun| +08::01::2022 01:59:41|The bunnies had boyfriends| +08::01::2022 01:59:42|STuG STuG STuG| +08::01::2022 01:59:43|is strv 103 an mbt, ::a::?| +08::01::2022 01:59:43|There are no men left| +08::01::2022 01:59:46|SORE DA| +08::01::2022 01:59:47|WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +08::01::2022 01:59:47|SORE DA!!| +08::01::2022 01:59:48|stug is grug| +08::01::2022 01:59:49|it's called efficiency| +08::01::2022 01:59:49|Don't worry yurifags, those kinds of boyfriends are too gay to touch your girls| +08::01::2022 01:59:50|based hippos| +08::01::2022 01:59:50|SORE DA| +08::01::2022 01:59:51|WE NEED TO CLARIFY THIS| +08::01::2022 01:59:52|the strv is an MBT| +08::01::2022 01:59:54|Sore DA| +08::01::2022 01:59:55|SPEED READER| +08::01::2022 01:59:56|THATS IT| +08::01::2022 01:59:58|yet whata is an mbt| +08::01::2022 01:59:58|All men have died to carbon poisening| +08::01::2022 02:00:07|carbon speed reading| +08::01::2022 02:00:07|>women driving| +08::01::2022 02:00:10|I KNOW KUNG FU| +08::01::2022 02:00:10|just read lol| +08::01::2022 02:00:10|RTFM +08::01::2022 02:00:10|TFM +08::01::2022 02:00:11|what the fuck is a manual| +08::01::2022 02:00:11|TFM +08::01::2022 02:00:14|only ladybodies can handle carbon| +08::01::2022 02:00:15|saori +08::01::2022 02:00:15|tfm +08::01::2022 02:00:15|based Mako| +08::01::2022 02:00:18|>asian women driving| +08::01::2022 02:00:20|I also give people relationship advice t. KHHV| +08::01::2022 02:00:20|What manual? Just tell me what it means, douch| +08::01::2022 02:00:21|read nigga| +08::01::2022 02:00:21|NISHIZUMI STYLE| +08::01::2022 02:00:22| +08::01::2022 02:00:25|LUT +08::01::2022 02:00:25|\ +08::01::2022 02:00:25|reading is iard| +08::01::2022 02:00:26| +08::01::2022 02:00:26|Imagine reading words on paper| +08::01::2022 02:00:26|LMAO SAORI BTFO| +08::01::2022 02:00:27|>just drive| +08::01::2022 02:00:27|LUT +08::01::2022 02:00:27|just lie| +08::01::2022 02:00:27|UNDERAGE SLUTS| +08::01::2022 02:00:28|aori............................ +08::01::2022 02:00:28|OF +08::01::2022 02:00:29|EAD +08::01::2022 02:00:29|calls out the fat seal| +08::01::2022 02:00:29|DON'T LISTEN TO HER RABBITS| +08::01::2022 02:00:29|>how many| +08::01::2022 02:00:30|MANAGER! READ THE FUCKING MANUAL!| +08::01::2022 02:00:30|Carbon has turned all the men into little girls| +08::01::2022 02:00:30| +08::01::2022 02:00:33|tank boyfriend| +08::01::2022 02:00:33| +08::01::2022 02:00:36|I want to be a tank| +08::01::2022 02:00:37|WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +08::01::2022 02:00:37|>HIJIRI'S DOUJIN| +08::01::2022 02:00:38|HORES +08::01::2022 02:00:38|READ THE PDF| +08::01::2022 02:00:40|zusa +08::01::2022 02:00:42|PURE SLUT| +08::01::2022 02:00:43|>I CAN BE HER BOYFRIEND| +08::01::2022 02:00:44|can girls love panzer?| +08::01::2022 02:00:47|Imagine being a tank| +08::01::2022 02:00:50|NEED MORE THAN A DOZEN| +08::01::2022 02:00:55|imagine being a girl| +08::01::2022 02:00:59|I smell lesbians| +08::01::2022 02:00:59|I want to be a tank and have Saori ride me until her butt hurts| +08::01::2022 02:01:00|CAN LOVE BLOOM IN A PANZER| +08::01::2022 02:01:01|Panzers are all they need to be penetrated| +08::01::2022 02:01:01|>doesn't remember| +08::01::2022 02:01:01|imagine not being a girl| +08::01::2022 02:01:02|we're all little girls here| +08::01::2022 02:01:04|MOMO HATE| +08::01::2022 02:01:05|flowery girls| +08::01::2022 02:01:05|ANZU ANZU ANZU| +08::01::2022 02:01:05|dumb hana moment| +08::01::2022 02:01:06|I don't know who the fuck you are - Isuzu Hana| +08::01::2022 02:01:07|EK +08::01::2022 02:01:10|YUZU'S DOUJIN!!!!| +08::01::2022 02:01:12|MOMO CHAAAAAAAN| +08::01::2022 02:01:13|"I'm CIA"| +08::01::2022 02:01:14|CUTE ANZU| +08::01::2022 02:01:15|erika would never had a boyfriend (other than me)| +08::01::2022 02:01:16|stupid monocle| +08::01::2022 02:01:17|Anzu cute| +08::01::2022 02:01:17|i'm uhhhh yuzu| +08::01::2022 02:01:19|onmo-chan +08::01::2022 02:01:20|Shit I gotta takemy pills| +08::01::2022 02:01:22|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +08::01::2022 02:01:22|Thanks for the bullying| +08::01::2022 02:01:23|lat +08::01::2022 02:01:24|ANZU SMILE| +08::01::2022 02:01:26|maho is my gf| +08::01::2022 02:01:26|Imagine a Yuzu thighjob| +08::01::2022 02:01:30|Dystopian world where 90% of the babies born are girls| +08::01::2022 02:01:31|I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +08::01::2022 02:01:33|I hate Momo too!| +08::01::2022 02:01:33|eat your onigiri| +08::01::2022 02:01:34|What would happen if I remove the monocle| +08::01::2022 02:01:36|I claimed Erika, go away anons| +08::01::2022 02:01:39|dystopian" +08::01::2022 02:01:40|WE LOVE MOMO| +08::01::2022 02:01:42|dystopian +08::01::2022 02:01:45|SHUT UP MOMO| +08::01::2022 02:01:45|IT WOULD BE EXTREMELY PAINFUL| +08::01::2022 02:01:48|Let's All Love Momo| +08::01::2022 02:01:48|OMOCLE +08::01::2022 02:01:49|based world| +08::01::2022 02:01:49|>Dystopian +08::01::2022 02:01:50|omochads... +08::01::2022 02:01:50|momo is worst character, no debate, even that male trying to close down the school is better| +08::01::2022 02:01:52|Mo +08::01::2022 02:01:53|momo looks so stupid with that monocle wtf| +08::01::2022 02:01:55|MORE tanks| +08::01::2022 02:01:56|YOURE A BIG TANKER| +08::01::2022 02:01:59|Momo needs rape (non-correctional)| +08::01::2022 02:01:59|MORE TANKS| +08::01::2022 02:01:59|U +08::01::2022 02:02:03|uuu +08::01::2022 02:02:04|her family can't afford proper glasses| +08::01::2022 02:02:04|FO YU| +08::01::2022 02:02:04|Yes, it's dystopian. As much as I like girls, I can't have beer with them like with the bois| +08::01::2022 02:02:04|cute boy| +08::01::2022 02:02:05|olleyballs! +08::01::2022 02:02:06|FAVORITE TANK GO| +08::01::2022 02:02:06|MOAR TONKS?!?!| +08::01::2022 02:02:07|OH SHIT SHE'S FLAT| +08::01::2022 02:02:08|MEXT IS THE BEST IT HAS GREAT BENEFIT PACKAGES| +08::01::2022 02:02:08|UTS! +08::01::2022 02:02:09|HANA::YUZU MILK TANKS| +08::01::2022 02:02:11|HAKU +08::01::2022 02:02:12|TYPE 74 GANG| +08::01::2022 02:02:14|IVINATION +08::01::2022 02:02:17|LUV TAEKO| +08::01::2022 02:02:17|A +08::01::2022 02:02:18|utism +08::01::2022 02:02:19|oreshadowing +08::01::2022 02:02:19|H A| +08::01::2022 02:02:24|SAEMONZA SUMATA| +08::01::2022 02:02:27|dumb karina| +08::01::2022 02:02:28|history nerd autism| +08::01::2022 02:02:32|You will never be mugged in the ship's dark underbelly| +08::01::2022 02:02:32|BIN +08::01::2022 02:02:32|forced ship lore| +08::01::2022 02:02:32|SAKI CAN SEE THROUGH THE WALLS| +08::01::2022 02:02:34|We Head East| +08::01::2022 02:02:35|Are hippos otaku or chuuni?| +08::01::2022 02:02:37|>does it matter?| +08::01::2022 02:02:38|dumb rabbits| +08::01::2022 02:02:38|zUSA +08::01::2022 02:02:39|like the inside of a ship| +08::01::2022 02:02:43|All lies| +08::01::2022 02:02:44|aaaaa This message was written by 2fast rosehip aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa| +08::01::2022 02:02:45|i thought they have ships cause the world is flooded| +08::01::2022 02:02:46|because its cool asuza| +08::01::2022 02:02:48|more SHIP LORE| +08::01::2022 02:02:51|why are their skirts so damn short| +08::01::2022 02:02:54|wtf is a tank| +08::01::2022 02:02:58|MOAR SAILOR GIRLS| +08::01::2022 02:02:59|>school sailor uniform| +08::01::2022 02:02:59|Sailor grills are cute| +08::01::2022 02:03:00|how the fuck did a tank get in the ship| +08::01::2022 02:03:01|CUTE SAILORS| +08::01::2022 02:03:02|YET WHAT IS A TANK| +08::01::2022 02:03:02|utt +08::01::2022 02:03:05|BITCH, WE HAVEN'T SEEN TANKS WE'VE BEEN WORKING FOR 8 HOURS WITH NO SLEEP| +08::01::2022 02:03:07|A MISERABLE PILE OF SCREWS| +08::01::2022 02:03:07|momo +08::01::2022 02:03:11|tanks breed in the lower gantries| +08::01::2022 02:03:11|fucking Momo| +08::01::2022 02:03:12|The skirts are short because ANIME| +08::01::2022 02:03:13|TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COM| +08::01::2022 02:03:14|MOMO HATE| +08::01::2022 02:03:18|shut up momo| +08::01::2022 02:03:21|SHUT UP MOMO| +08::01::2022 02:03:22|>They have taken the lower levels| +08::01::2022 02:03:22|TAN PIRATE| +08::01::2022 02:03:23|ANZU ANZU| +08::01::2022 02:03:24|based lazy anzu| +08::01::2022 02:03:25|momo dumb| +08::01::2022 02:03:25|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +08::01::2022 02:03:27|TAN PIRATE| +08::01::2022 02:03:29|olleybutt +08::01::2022 02:03:29|TAN PIRATE| +08::01::2022 02:03:29|who decided to make Momo the focus of the finales?| +08::01::2022 02:03:31|OUDESHOUKA? +08::01::2022 02:03:31|Just breed tanks| +08::01::2022 02:03:32|SNIFF FEET| +08::01::2022 02:03:32|lat +08::01::2022 02:03:33|ANZU BIG CHILLIN| +08::01::2022 02:03:37|Someone should plug up Momo's mouth| +08::01::2022 02:03:38|explain why no boys doing senshado| +08::01::2022 02:03:41|TAN PIRATE| +08::01::2022 02:03:44|Momo is cute and has big tats though| +08::01::2022 02:03:44|TAN PIRATE| +08::01::2022 02:03:48|ung +08::01::2022 02:03:49|There it is | +08::01::2022 02:03:49|tanks are a girl sport duh| +08::01::2022 02:03:51|TAN PIRATE| +08::01::2022 02:03:51|>hanging laundry on a rusty heavy pipe| +08::01::2022 02:03:52|uffering +08::01::2022 02:03:52|airing their dirty laundry, eh?| +08::01::2022 02:03:53|Boys are flying superior planes| +08::01::2022 02:03:55|THIS PANZER IS SLEEPING| +08::01::2022 02:03:55|ROZE +08::01::2022 02:03:56|UFFERING +08::01::2022 02:03:58|ufferign +08::01::2022 02:03:59|Le quack| +08::01::2022 02:04:00|uffering +08::01::2022 02:04:00|Tank of the lake| +08::01::2022 02:04:01|>French tank| +08::01::2022 02:04:01|TANK FOUND| +08::01::2022 02:04:02|Renault +08::01::2022 02:04:02|renault +08::01::2022 02:04:03|rip stream| +08::01::2022 02:04:05|AAAAA BUFFERING| +08::01::2022 02:04:07| +08::01::2022 02:04:08|NAZI BETTER!| +08::01::2022 02:04:09|monty +08::01::2022 02:04:09|yeah hard buffers| +08::01::2022 02:04:10|IT'S OVER| +08::01::2022 02:04:11|Shit tank leave it | +08::01::2022 02:04:11|Renault +08::01::2022 02:04:12|stream buffer| +08::01::2022 02:04:16|CRUNCHING NOISES AND LAUGHTER| +08::01::2022 02:04:18|rip stream| +08::01::2022 02:04:18|IM BOOOOOFERING| +08::01::2022 02:04:20|>frog tanks| +08::01::2022 02:04:20|>NOT LIKING MONTY >PLEB TASTE| +08::01::2022 02:04:21|ead +08::01::2022 02:04:22|>Renault... i gotta go...| +08::01::2022 02:04:22| +08::01::2022 02:04:23|ngl like the screenshot| +08::01::2022 02:04:27| +08::01::2022 02:04:27|Duck is not shit, Duck is good (for 1940)| +08::01::2022 02:04:27|BUFFER NO| +08::01::2022 02:04:28|NZU +08::01::2022 02:04:28|lat +08::01::2022 02:04:30|>Monty >Good| +08::01::2022 02:04:32|TWINGO TANK| +08::01::2022 02:04:33|how many tanks are just sleeping aboard the ship| +08::01::2022 02:04:39|JUST A TRENCHCOAT| +08::01::2022 02:04:40|Monty better than Patton| +08::01::2022 02:04:42|Ugh, Yuckari is smiling...| +08::01::2022 02:04:42|happy fluff| +08::01::2022 02:04:42|no pants| +08::01::2022 02:04:42| +08::01::2022 02:04:43|and now stream caught up and I'm 15 seconds behind| +08::01::2022 02:04:47|they ded| +08::01::2022 02:04:47|fluffy wants that gun inside her| +08::01::2022 02:04:48|HOW DO THEY LOSE ALL THESE TANKS| +08::01::2022 02:04:49|EAOW +08::01::2022 02:04:54|Patton called monty a tired little fart| +08::01::2022 02:04:54|KYON KUN DENWA| +08::01::2022 02:04:55|TAN PIRATE| +08::01::2022 02:04:56|What's so "fresh" about freshmen| +08::01::2022 02:04:57|umbunnies +08::01::2022 02:04:57|POOPY +08::01::2022 02:04:59|TAN PIRATE| +08::01::2022 02:05:01|typical officer| +08::01::2022 02:05:02|Just go up idiots| +08::01::2022 02:05:04|TAN PIRATE| +08::01::2022 02:05:04|lat +08::01::2022 02:05:05|Based Patton, as always| +08::01::2022 02:05:06|Vance Stubbs used to run this city-ship| +08::01::2022 02:05:07|More German generals knew of Monty than Patton| +08::01::2022 02:05:08|>not my problem| +08::01::2022 02:05:09|TAN PIRATE| +08::01::2022 02:05:10|DON'T TALK TO THE GIRL IN WHITE| +08::01::2022 02:05:14|TAN PIRATE| +08::01::2022 02:05:15|Patton was a retard| +08::01::2022 02:05:15|Hana, fastest gun in the west| +08::01::2022 02:05:17|I have to pee| +08::01::2022 02:05:18|poopy +08::01::2022 02:05:19|TAN PIRATE| +08::01::2022 02:05:21|How did they even get a tank there?| +08::01::2022 02:05:22|die joe boo| +08::01::2022 02:05:23|use a bottle| +08::01::2022 02:05:23|Based Hana| +08::01::2022 02:05:24|TAN PIRATE| +08::01::2022 02:05:25|Patton was cool| +08::01::2022 02:05:27|USE A PISS BOTTLE| +08::01::2022 02:05:27|GOVERNOR GENERAL STUBBS| +08::01::2022 02:05:27|Patton was a retard, but he was our retard| +08::01::2022 02:05:29|TAN PIRATE| +08::01::2022 02:05:31|hosts +08::01::2022 02:05:33|patton is dead| +08::01::2022 02:05:34|TAN PIRATE| +08::01::2022 02:05:34|CHO CHO| +08::01::2022 02:05:36|Hana has seen some shit| +08::01::2022 02:05:36|watch your light asshole| +08::01::2022 02:05:37|WTF guys it's too early for pirates | +08::01::2022 02:05:39|Haunted tank ship| +08::01::2022 02:05:39|Reminder that Patton wanted to drive to Berlin before the Hurtzen was opened| +08::01::2022 02:05:40|based maki| +08::01::2022 02:05:40|these poor bunnies| +08::01::2022 02:05:41|Ghost of Patton| +08::01::2022 02:05:42|wtf ghosts are real?!| +08::01::2022 02:05:43|imagine finding a bunch of buns| +08::01::2022 02:05:43|No tan pirate for a long time yet.| +08::01::2022 02:05:43|Eat Saki to survive| +08::01::2022 02:05:45|We need to go deeper into the bowels of the rabbits.| +08::01::2022 02:05:46|ed +08::01::2022 02:05:46|they're going to fucking die | +08::01::2022 02:05:47|NO AZUSA DON'T CRY| +08::01::2022 02:05:48|PETTAN PETTAN TSURUPETTAN| +08::01::2022 02:05:48|_; +08::01::2022 02:05:48|Saki uses telepathy| +08::01::2022 02:05:50|oT +08::01::2022 02:05:50|Hana's seen footage she stays noided| +08::01::2022 02:05:50|crying rabbit | +08::01::2022 02:05:51|__; +08::01::2022 02:05:52|DVCE | +08::01::2022 02:05:53|>Saki looking at a an empty spot| +08::01::2022 02:05:55|fucking Saki| +08::01::2022 02:05:55|pero pero pero| +08::01::2022 02:05:55|AIZA +08::01::2022 02:05:56|ringe +08::01::2022 02:05:57|SOMEONE IS GOING TO BE EATEN| +08::01::2022 02:05:58|Saki seeing the future| +08::01::2022 02:06:01|pocket chocolates melt| +08::01::2022 02:06:01|entertain the children with sweets, classic| +08::01::2022 02:06:01|NO SAORI, THIS IS HOW THEY LURE IN THEIR PREY| +08::01::2022 02:06:02|I will not tolerate you fools slandering the REINCARNATION OF HANNIBAL himself| +08::01::2022 02:06:02|AY +08::01::2022 02:06:04|Ha ha, ghosts aren't real, right you guys?| +08::01::2022 02:06:05|EW +08::01::2022 02:06:05|OWAI +08::01::2022 02:06:06|Priceless Mako reaction| +08::01::2022 02:06:06|SAORI HOARDING RATIONS| +08::01::2022 02:06:06|udewho +08::01::2022 02:06:08|i +08::01::2022 02:06:10|He also stopped halfway across the rhine when he crossed it to piss over the side| +08::01::2022 02:06:12|eception? +08::01::2022 02:06:13|autism ringtone| +08::01::2022 02:06:13|aisar-dono +08::01::2022 02:06:16|tank firing as ringtone BASED| +08::01::2022 02:06:16|Eat Yuki| +08::01::2022 02:06:17|Patton could have captured Berlin if it weren't for the Bretards| +08::01::2022 02:06:18|SORO NEIMU| +08::01::2022 02:06:19|SOUL NAME| +08::01::2022 02:06:19|Mako is a pussy| +08::01::2022 02:06:20|>soul name| +08::01::2022 02:06:24|just use a compass| +08::01::2022 02:06:27|>compass on a ship| +08::01::2022 02:06:28|tank ringtone, I need it| +08::01::2022 02:06:30|umpass +08::01::2022 02:06:30|I WISH WE HAD SOUL NAMES| +08::01::2022 02:06:31|>compass inside a metallic ship| +08::01::2022 02:06:32|>Nishi zumi| +08::01::2022 02:06:34|Patton could have captured Moscow too desu| +08::01::2022 02:06:34|Germany should have won| +08::01::2022 02:06:35|Imagine being swarmd by relieved lolis| +08::01::2022 02:06:36|ivination? +08::01::2022 02:06:38|>compass inside a massive metal ship| +08::01::2022 02:06:40|TAN PIRATE| +08::01::2022 02:06:40|IIPORIIIIIIIN +08::01::2022 02:06:43|um +08::01::2022 02:06:44|I grant you anon the soulname "gigafaggot"| +08::01::2022 02:06:44|>He doesn't have a soul name| +08::01::2022 02:06:44|how else do they navigate on the seas| +08::01::2022 02:06:44|TAN PIRATE| +08::01::2022 02:06:44|Cute kouhai| +08::01::2022 02:06:45|_; +08::01::2022 02:06:46|EKO +08::01::2022 02:06:46|saori's harem| +08::01::2022 02:06:47|Thanks Saki| +08::01::2022 02:06:48|SEX KITTEN| +08::01::2022 02:06:49|TAN PIRATE| +08::01::2022 02:06:49|ant +08::01::2022 02:06:49|YAAA +08::01::2022 02:06:51|COMPASS IS CARBON COATED| +08::01::2022 02:06:51|>the herd| +08::01::2022 02:06:53|buffering again| +08::01::2022 02:06:53|My gamer waifu.| +08::01::2022 02:06:53|OT +08::01::2022 02:06:53|What is wrong with Yukari?| +08::01::2022 02:06:56|Saori is lost. The rabbits have her now.| +08::01::2022 02:06:56|ONK +08::01::2022 02:06:58|I want to be lost with usagi team| +08::01::2022 02:06:59|AMER +08::01::2022 02:07:00|thanks for the soulname anon| +08::01::2022 02:07:00|TANK FOUND| +08::01::2022 02:07:00|PORSCHE TIGER| +08::01::2022 02:07:00|amer +08::01::2022 02:07:01|ORSCHE +08::01::2022 02:07:03|I HATE THIS FAGGOT CAT SO FUCKING MUCH| +08::01::2022 02:07:04|FUCKING NERD| +08::01::2022 02:07:04|v::ermin +08::01::2022 02:07:04|PORSCHE TIGER| +08::01::2022 02:07:04|YOU'VE BEEN UNDER A TANK THIS ENTIRE TIME!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 02:07:05|yaa... +08::01::2022 02:07:06|GAMER GIRLS| +08::01::2022 02:07:06|Gamer moment| +08::01::2022 02:07:06|us gamers huh| +08::01::2022 02:07:07|LITERALLY ME| +08::01::2022 02:07:07|VA +08::01::2022 02:07:07|EKONYAAA +08::01::2022 02:07:07|BEST GORL INCOMING| +08::01::2022 02:07:08|be still, thy beating heart| +08::01::2022 02:07:08|GAMERS RISE UP!| +08::01::2022 02:07:10|ekonigger +08::01::2022 02:07:10|How do they move the tank| +08::01::2022 02:07:12|ORILLE +08::01::2022 02:07:12|does anyone like anteater team?| +08::01::2022 02:07:12|no prob, gigafaggot| +08::01::2022 02:07:12|she gonna start a school boat shooting| +08::01::2022 02:07:13|ERKLE +08::01::2022 02:07:13|Tiger P| +08::01::2022 02:07:13|AMERS +08::01::2022 02:07:14|WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GI| +08::01::2022 02:07:14|uch +08::01::2022 02:07:14|______; +08::01::2022 02:07:15|Nekonya got owned| +08::01::2022 02:07:15|GAMER GIRL| +08::01::2022 02:07:16|FINS ARE CANONOICALLY STONG| +08::01::2022 02:07:16|GNORED...... +08::01::2022 02:07:18|IGNORED +08::01::2022 02:07:19|.. +08::01::2022 02:07:19|fugg off neko| +08::01::2022 02:07:20|IGNORE NERDS| +08::01::2022 02:07:21|smelly gamer | +08::01::2022 02:07:22|filthy otaku| +08::01::2022 02:07:23|was it autism?| +08::01::2022 02:07:24|Smelly furry gamer| +08::01::2022 02:07:24|the most opressed race, GAMERS| +08::01::2022 02:07:24|GAMERS ARE SO OPPRSSED| +08::01::2022 02:07:24|yaaa +08::01::2022 02:07:25|my soul name is MFSB| +08::01::2022 02:07:27|hickin +08::01::2022 02:07:27|yaaaaa +08::01::2022 02:07:28|EKONYA +08::01::2022 02:07:28|HICKENHEART +08::01::2022 02:07:30|lat +08::01::2022 02:07:30|RISE UP| +08::01::2022 02:07:31|GAMERS ARE LITERALLY THE MOST OPPRESSED GROUP!| +08::01::2022 02:07:33|average ::a::non| +08::01::2022 02:07:34|YAA~ +08::01::2022 02:07:37|nekonya +08::01::2022 02:07:38|ODOKO +08::01::2022 02:07:38|naholes +08::01::2022 02:07:38|ODOKOS +08::01::2022 02:07:38|erotic forehead| +08::01::2022 02:07:39|RARA +08::01::2022 02:07:40|gamers will never rise up| +08::01::2022 02:07:40|Pazomi is the best| +08::01::2022 02:07:41|ODOKO +08::01::2022 02:07:42|WORST TEAM| +08::01::2022 02:07:43|3 sodokos| +08::01::2022 02:07:43|lones +08::01::2022 02:07:43|ODOKO +08::01::2022 02:07:44|APPAS +08::01::2022 02:07:46|LONES +08::01::2022 02:07:46|EEEEEEEEEEEEEEEEEEEX +08::01::2022 02:07:51|REVEL UP| +08::01::2022 02:07:51|gotta make more clones| +08::01::2022 02:07:53|UTEOKOS +08::01::2022 02:07:53|Three (3) Sodokos lmao, THREE| +08::01::2022 02:07:54|the clone wars| +08::01::2022 02:07:57|odoclones +08::01::2022 02:07:57|POZOMI IS THE BEST KO| +08::01::2022 02:07:57|MOMO +08::01::2022 02:07:58|] +08::01::2022 02:07:58|AIBORIDU +08::01::2022 02:07:59|MALLARDS A CUTE| +08::01::2022 02:08:00|ara ara| +08::01::2022 02:08:00|ALL HALL MONITORS ARE BASTARDS| +08::01::2022 02:08:00|I'm going to refine Sodoko| +08::01::2022 02:08:00|SWEATY TOMBOYS SPOTTED| +08::01::2022 02:08:02|rara~ +08::01::2022 02:08:02|NTER +08::01::2022 02:08:02|Scratch that, mechanics are the best| +08::01::2022 02:08:02|ara ara| +08::01::2022 02:08:03|Here's ::o::!| +08::01::2022 02:08:04|SHUT UP MOMO| +08::01::2022 02:08:05|fucking momo| +08::01::2022 02:08:06|CUTE BOY| +08::01::2022 02:08:06|BEST TEAM| +08::01::2022 02:08:07|MOMO HATE| +08::01::2022 02:08:07|based pit crew| +08::01::2022 02:08:08|MOMO DUMB| +08::01::2022 02:08:08|exicans +08::01::2022 02:08:08|cute boy| +08::01::2022 02:08:14|>TFW no sweaty tomboy GF| +08::01::2022 02:08:16|WE NEED NOEL| +08::01::2022 02:08:16|BASED LEOPON TEAM| +08::01::2022 02:08:16|enemy spotted| +08::01::2022 02:08:18|OSHINO +08::01::2022 02:08:19|hybrid +08::01::2022 02:08:20|ania +08::01::2022 02:08:21|I WANT HOSHINO| +08::01::2022 02:08:23|lang! +08::01::2022 02:08:23|ROTIC +08::01::2022 02:08:24|meanwhile at ::his:: hq| +08::01::2022 02:08:26|LANG +08::01::2022 02:08:27|ERA +08::01::2022 02:08:29|Ildos +08::01::2022 02:08:29|FIT:: +08::01::2022 02:08:30|FIT:: +08::01::2022 02:08:32|Live rounds don't make that noise| +08::01::2022 02:08:32|PATS +08::01::2022 02:08:34|fit::! +08::01::2022 02:08:34|VENI VIDI VINCI| +08::01::2022 02:08:35|>american training| +08::01::2022 02:08:36|anlet +08::01::2022 02:08:37|the fuck is a soul name| +08::01::2022 02:08:37|LIVE MUNITIONS| +08::01::2022 02:08:38|>one of those goes off| +08::01::2022 02:08:38|nnnngh +08::01::2022 02:08:39|PQR +08::01::2022 02:08:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:08:39|oul +08::01::2022 02:08:40|aesar! +08::01::2022 02:08:44|>ywn visit the ::his::haus| +08::01::2022 02:08:44|SPATS UOHHHHHHH| +08::01::2022 02:08:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +08::01::2022 02:08:45|LANG +08::01::2022 02:08:45|WEATY +08::01::2022 02:08:46|IMAGINE THE SMELL| +08::01::2022 02:08:46|PQR +08::01::2022 02:08:46|good training| +08::01::2022 02:08:47|PQR +08::01::2022 02:08:48|argasm +08::01::2022 02:08:49|SOul name is your rap anme| +08::01::2022 02:08:50|BEING LOADER IS HARD| +08::01::2022 02:08:50|How many of those shells could she fit at once?| +08::01::2022 02:08:51|hina chan| +08::01::2022 02:08:51|GAY GAY| +08::01::2022 02:08:51|ss +08::01::2022 02:08:54|UTE +08::01::2022 02:08:55|hina chan| +08::01::2022 02:08:56|ARPACCIO! +08::01::2022 02:08:57|wtf my soul name is adolf???| +08::01::2022 02:08:57| +08::01::2022 02:08:58|S P Q R| +08::01::2022 02:08:58|WE WANT DVCE NOT HIPPO SHIT| +08::01::2022 02:08:59|ooba +08::01::2022 02:09:00| +08::01::2022 02:09:01|I want to sniff her ass| +08::01::2022 02:09:07|AKA-CHAN +08::01::2022 02:09:08|[HORNY LAUGHTER)| +08::01::2022 02:09:08|PQR +08::01::2022 02:09:10|hey adolf, my name is willy| +08::01::2022 02:09:13|so why do they live together?| +08::01::2022 02:09:13|PY! +08::01::2022 02:09:14|>Not much| +08::01::2022 02:09:17|SENATVS POPVLVSQVE ROMANVS| +08::01::2022 02:09:18|SWIGGITY SWOOTY CARPACCIOS COMING FOR THAT BOOTY| +08::01::2022 02:09:19|UTE +08::01::2022 02:09:22|>he doesn't know latin| +08::01::2022 02:09:24|>we don't have a lot| +08::01::2022 02:09:26|>DOESN'T SPEAK ITALIAN| +08::01::2022 02:09:27|who is taku-san?| +08::01::2022 02:09:29|Per tutti i camerati caduti!| +08::01::2022 02:09:29|TARIAN +08::01::2022 02:09:30|UTISM +08::01::2022 02:09:30|TALIAGO +08::01::2022 02:09:32|tarian +08::01::2022 02:09:35|THAT'S IT!| +08::01::2022 02:09:36|orkoo +08::01::2022 02:09:37|ekinai +08::01::2022 02:09:38|uh yeah we're in the rockies| +08::01::2022 02:09:39|>She doesn't know Italian| +08::01::2022 02:09:44|>you don't even know japanese| +08::01::2022 02:09:46|ame +08::01::2022 02:09:49|the power of historical game players| +08::01::2022 02:09:50|>pizza pasta spaghetti| +08::01::2022 02:09:51|tell me, why does she close the 1 eye?| +08::01::2022 02:09:57|>there are people in this stream who don't know latin| +08::01::2022 02:09:58|ONE EYE FLAT| +08::01::2022 02:10:03|semen in it| +08::01::2022 02:10:03|gmi +08::01::2022 02:10:03|::his:: nerds| +08::01::2022 02:10:03|SSaving it for nightime| +08::01::2022 02:10:07|THAT'S IT!| +08::01::2022 02:10:09|HAIL CAESAR o::| +08::01::2022 02:10:09|SORE DA| +08::01::2022 02:10:11|AY' TONE YOU MUST HEAR THIS| +08::01::2022 02:10:13|PENYOUREYE +08::01::2022 02:10:17|"RIVAL" IS THAT WHAT THE GIRLS ARE CALLING IT| +08::01::2022 02:10:19|SORE DA!!!!!| +08::01::2022 02:10:20|what's a joe ekins| +08::01::2022 02:10:21|SORE DA| +08::01::2022 02:10:21|SORE DA| +08::01::2022 02:10:21|ho? +08::01::2022 02:10:22|SORE DA!| +08::01::2022 02:10:22|SORE DA| +08::01::2022 02:10:22|SORE DA| +08::01::2022 02:10:22|sore da| +08::01::2022 02:10:23|SORE DA| +08::01::2022 02:10:23|SORE DA| +08::01::2022 02:10:24|SORE DA| +08::01::2022 02:10:25|ILA +08::01::2022 02:10:28|literally who| +08::01::2022 02:10:30|>they don't know| +08::01::2022 02:10:30|SORE DA!| +08::01::2022 02:10:31|if those names existed does that mean ww2 actually happened| +08::01::2022 02:10:38|WHO WOULD WIN: PANZER ACE OR BRIT SHOE FACTORY WORKER?| +08::01::2022 02:10:39|SEGRETO :DDDDDDDD| +08::01::2022 02:10:40|IYOPIYO +08::01::2022 02:10:40|yu +08::01::2022 02:10:42|AZUSA ON SCREEN| +08::01::2022 02:10:42|N O R I K O| +08::01::2022 02:10:42|Joseph William Ekins was a World War II British Army veteran. He gained recognition for his action as a tank gunner in France in which he de| +08::01::2022 02:10:43|pyon pyon machi| +08::01::2022 02:10:44|PIYO PIYP| +08::01::2022 02:10:49|Just got off work, what episode are we on?| +08::01::2022 02:10:56|Like 8 something| +08::01::2022 02:10:56|anzio OVA| +08::01::2022 02:10:56|nzio +08::01::2022 02:11:01|ep 7::anzio OVA| +08::01::2022 02:11:02|This is OVA7| +08::01::2022 02:11:06|Lonely text| +08::01::2022 02:11:10|>Ankou-team >heavy tank| +08::01::2022 02:11:11|still first, no ed yet| +08::01::2022 02:11:11|very lonely| +08::01::2022 02:11:14|That's no Sheridan, it's a T-80| +08::01::2022 02:11:16|hi lonely im dad| +08::01::2022 02:11:17|tfw no gf| +08::01::2022 02:11:21|PIYO PIYO| +08::01::2022 02:11:32|damn how long is this going to be| +08::01::2022 02:11:33|More like PU| +08::01::2022 02:11:36|Okay I *have* to take pills, jaw is killing me| +08::01::2022 02:11:36|es +08::01::2022 02:11:40|UTS +08::01::2022 02:11:40|evade? in our moment of victory?| +08::01::2022 02:11:43|MISSED +08::01::2022 02:11:44| can someone do the maths| +08::01::2022 02:11:45|eds +08::01::2022 02:11:47|wow momo can't hit shit| +08::01::2022 02:11:48|Aren't we legit going to pee what the fuck| +08::01::2022 02:11:50|TE +08::01::2022 02:11:51|no meds| +08::01::2022 02:11:52|Ugh guys I think I'm gonna need to change my thong, brb| +08::01::2022 02:11:53|should be about 7-8 hours left| +08::01::2022 02:11:57|momo +08::01::2022 02:11:59|momo fucking sucks| +08::01::2022 02:11:59|>Needing to pee| +08::01::2022 02:11:59|MOMO YOU MISSED| +08::01::2022 02:12:02|momo +08::01::2022 02:12:02|I HATE MOMO I HATE MOMO | +08::01::2022 02:12:02|momo can't hit shit| +08::01::2022 02:12:02|piss on the floor| +08::01::2022 02:12:04|MOMO YOU RETARD| +08::01::2022 02:12:04|thong +08::01::2022 02:12:06|zUSA +08::01::2022 02:12:06|pee in momo's mouth| +08::01::2022 02:12:06|Holy shit momo| +08::01::2022 02:12:08|GAS GAS GAS| +08::01::2022 02:12:08|MANKO HAYAI| +08::01::2022 02:12:09|REMEMBER TO TAKE YOUR ESTROGEN SISTERS| +08::01::2022 02:12:09|Store more pee in your balls| +08::01::2022 02:12:11|MOMO SUCKS| +08::01::2022 02:12:13|Guys I need to change my bra, brb| +08::01::2022 02:12:19|they can't pee in the tank so why should you| +08::01::2022 02:12:21|MANKO DOCCHI| +08::01::2022 02:12:24|remember to take your APDSFS amigos| +08::01::2022 02:12:30|ONK +08::01::2022 02:12:33|mirage tank| +08::01::2022 02:12:36|est +08::01::2022 02:12:40|est +08::01::2022 02:12:40|you failed| +08::01::2022 02:12:41|ass +08::01::2022 02:12:42|est +08::01::2022 02:12:42|TEST FAILED| +08::01::2022 02:12:44|Stug lyfe| +08::01::2022 02:12:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:12:49|what are we drinking tonight bois?| +08::01::2022 02:12:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:12:52|testing testing....mic check| +08::01::2022 02:12:56|ATER +08::01::2022 02:12:56|IMAGINE IF YOU WERE TO BE KILLED FROM THAT RANGE. THAT'LL NEVER HAPPEN.| +08::01::2022 02:12:59|It'll never happen| +08::01::2022 02:12:59|Asahi as usual for me| +08::01::2022 02:13:01|Mile long shot| +08::01::2022 02:13:01|HELLO CAN YOU HEAR ME| +08::01::2022 02:13:02|ggnog +08::01::2022 02:13:03|Tea now, rum later| +08::01::2022 02:13:03|>I didn't choose the StuG life, I was drafted by the wehrmacht| +08::01::2022 02:13:08|miho doesn't even blink holy shit| +08::01::2022 02:13:10|ONTARIO WILL BE FUCKING NUKED| +08::01::2022 02:13:11|Aim for her hea| +08::01::2022 02:13:12|History club >>>>>>| +08::01::2022 02:13:12|strenght training| +08::01::2022 02:13:13|jesus christ get inside| +08::01::2022 02:13:13|earless +08::01::2022 02:13:14|subs +08::01::2022 02:13:14|Best girl| +08::01::2022 02:13:15|Beer and vodka atm| +08::01::2022 02:13:16| +08::01::2022 02:13:17|Thousand mile stare| +08::01::2022 02:13:18|carbon coating fears none| +08::01::2022 02:13:19|This little training montage is great| +08::01::2022 02:13:20|SOne-eyed miho | +08::01::2022 02:13:24|sugoi subs| +08::01::2022 02:13:24|SOMEWHERE THE WHITE WITCH IS WATCHING| +08::01::2022 02:13:25|carbon coated confidence| +08::01::2022 02:13:29|ntariobros... +08::01::2022 02:13:29|UTS +08::01::2022 02:13:29|*Stone eyed| +08::01::2022 02:13:29|ekt +08::01::2022 02:13:31|UTSKILLED +08::01::2022 02:13:32|X X| +08::01::2022 02:13:33|shoot me again fuckers| +08::01::2022 02:13:34|BLITERATED +08::01::2022 02:13:36|XX - - @ @| +08::01::2022 02:13:38|UTS +08::01::2022 02:13:42|GAS GAS GAS| +08::01::2022 02:13:43|UTS +08::01::2022 02:13:43|OUDER +08::01::2022 02:13:45|UTS +08::01::2022 02:13:45|UTS +08::01::2022 02:13:47|UTS +08::01::2022 02:13:47|UTS +08::01::2022 02:13:47|GATSU GATSU GATSU| +08::01::2022 02:13:47|UTS +08::01::2022 02:13:47|UTS +08::01::2022 02:13:47|UTS! +08::01::2022 02:13:48|Based Anzu| +08::01::2022 02:13:48|UTS +08::01::2022 02:13:48|ATTSU +08::01::2022 02:13:48|UTS +08::01::2022 02:13:48|GUTS DO YOU HAVE IT| +08::01::2022 02:13:48|UTS!! +08::01::2022 02:13:49|UTS +08::01::2022 02:13:49|UTS +08::01::2022 02:13:50|>duck team >brains| +08::01::2022 02:13:50|UTS +08::01::2022 02:13:50|UTS +08::01::2022 02:13:51|ATSU +08::01::2022 02:13:52|UTS +08::01::2022 02:13:53|HAI YAI FORCES| +08::01::2022 02:13:53|HAYAI FORCE| +08::01::2022 02:13:54|ASTER +08::01::2022 02:13:57|IURA +08::01::2022 02:13:58|Running in the 40s| +08::01::2022 02:13:59|RRRIIIIIIFFFFFFIIIIITHHHHHHH +08::01::2022 02:14:02|based anzu| +08::01::2022 02:14:04|ORCESMIND... +08::01::2022 02:14:06|EJA'VU +08::01::2022 02:14:08|orks +08::01::2022 02:14:09|Was thtas useful at all for the bunnies?| +08::01::2022 02:14:10|MY LOVE FOR YOU IS LIKE A TRUCK| +08::01::2022 02:14:12|ASTA +08::01::2022 02:14:13|BUTTER !| +08::01::2022 02:14:15|utter +08::01::2022 02:14:16|ERSERKER +08::01::2022 02:14:17|ERSERKERERRR +08::01::2022 02:14:20|Sorry... I'm peeing myself| +08::01::2022 02:14:20|ERSERKER +08::01::2022 02:14:21|>Using tanks are racing cars| +08::01::2022 02:14:22|slice of life time| +08::01::2022 02:14:24|TALIA +08::01::2022 02:14:24|ed +08::01::2022 02:14:26|NICE ITALIAN BISTRO| +08::01::2022 02:14:26|RAEP RAEP| +08::01::2022 02:14:29|PUT YOUR GRASSES ON| +08::01::2022 02:14:29|EW +08::01::2022 02:14:29|DO YOU WANT TO MAKING FUCK?| +08::01::2022 02:14:32|m...... +08::01::2022 02:14:32|are we watching yukari corner?| +08::01::2022 02:14:33|WAKE ME UP INSIDE| +08::01::2022 02:14:34|maho pee| +08::01::2022 02:14:35|my poop is getting carbon coated from holding it so long| +08::01::2022 02:14:36|ERSERKER +08::01::2022 02:14:37|she's me| +08::01::2022 02:14:38|Kanata pls4| +08::01::2022 02:14:39|>he doesn't use a diaper| +08::01::2022 02:14:40|eet +08::01::2022 02:14:41|maaaaaaaaaaaaaaaaaa +08::01::2022 02:14:41|MANKO FEET| +08::01::2022 02:14:42|Yeah, Tank courses after stream| +08::01::2022 02:14:43|EET +08::01::2022 02:14:43|eet +08::01::2022 02:14:43|rip in piece mako| +08::01::2022 02:14:44|I WANT TO SNIFF HER FEET| +08::01::2022 02:14:44|THIS DRIVER IS DEAD| +08::01::2022 02:14:44|eet +08::01::2022 02:14:45|PRONE BONE| +08::01::2022 02:14:45|oh great, she's dead| +08::01::2022 02:14:45|bare feet| +08::01::2022 02:14:46|feet +08::01::2022 02:14:47|UUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHH +08::01::2022 02:14:47|PRONE BONE| +08::01::2022 02:14:49|did he say making fuck? | +08::01::2022 02:14:49|e +08::01::2022 02:14:49|Mako-san that's not a kotatsu| +08::01::2022 02:14:56|Ham +08::01::2022 02:14:57|make sure your toilet is carbon coated| +08::01::2022 02:15:01|hhh +08::01::2022 02:15:04|>doesn't watch the stream from hsi toilet the entire time| +08::01::2022 02:15:06|___; +08::01::2022 02:15:07|ammu +08::01::2022 02:15:07|Saori should be strict with me| +08::01::2022 02:15:07|Saori the Ham| +08::01::2022 02:15:08|Europeans breaking our circadian rhythm| +08::01::2022 02:15:09|becoming ham| +08::01::2022 02:15:09|RIP my circadian rhythm| +08::01::2022 02:15:12|BECOME HAM| +08::01::2022 02:15:13|she already is| +08::01::2022 02:15:15|cute glasses| +08::01::2022 02:15:16|THIGHS! HAM!| +08::01::2022 02:15:17|my 5 wives | +08::01::2022 02:15:18|EGANE +08::01::2022 02:15:20|So when are we buying our tank, guys?| +08::01::2022 02:15:20|>not animated | +08::01::2022 02:15:21|>SAORI PICKING UP 50 YO MEN ON THE HAM RADIO| +08::01::2022 02:15:21|My poopp was so carbon caoted it cloggec the toilet| +08::01::2022 02:15:22|I dont want to see Yukari cry| +08::01::2022 02:15:23|prons! +08::01::2022 02:15:23|THEY MAY TAKE OUR LIVES BUT THEY'LL NEVER TAKE OUR GRIFFISU| +08::01::2022 02:15:24|oooooooooooot +08::01::2022 02:15:24|ROGER SMITH NO| +08::01::2022 02:15:24|cicada rhythm| +08::01::2022 02:15:25|reject tank become ham| +08::01::2022 02:15:26|SAORI PLEASE BE MY HOUSEWIFE| +08::01::2022 02:15:27|CUTE MEGANE| +08::01::2022 02:15:30|RIP AND TEAR| +08::01::2022 02:15:30|does water actually stop onions from making you cry| +08::01::2022 02:15:30|What the fuck is this shit they're calling "food"| +08::01::2022 02:15:32|RIP AND TEAR| +08::01::2022 02:15:35|STOP TALKING ABOUT POOP| +08::01::2022 02:15:36|cute fish| +08::01::2022 02:15:38|OOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:15:38|all ready for sora no woto| +08::01::2022 02:15:38|Took meds and got more pizza| +08::01::2022 02:15:39|>TFW ITLL BE 8AM FOR ME WHEN THIS FINISHES| +08::01::2022 02:15:40|is there a god in this universe| +08::01::2022 02:15:40|Big Bath!| +08::01::2022 02:15:40|Why not make good cuisine, like British?| +08::01::2022 02:15:41|oT +08::01::2022 02:15:41|oT +08::01::2022 02:15:41|Fuck, I want carpaccio| +08::01::2022 02:15:42|oT +08::01::2022 02:15:45|caprese is good| +08::01::2022 02:15:46|I wish I had food ;________;| +08::01::2022 02:15:46|UOHHHHH ToT| +08::01::2022 02:15:46|oT +08::01::2022 02:15:49|KADEKIMASU +08::01::2022 02:15:49|which gup poop would you| +08::01::2022 02:15:50|did the voices go away anon?| +08::01::2022 02:15:51|TADAKIMASU +08::01::2022 02:15:51|THEY ARE LITTLE GIRLS YOU SICK FUCKS| +08::01::2022 02:15:51|>british cuisine| +08::01::2022 02:15:52|POOP POOP POOP POOP POOP| +08::01::2022 02:15:52|eat a duck he must| +08::01::2022 02:15:53|momo's momos| +08::01::2022 02:15:54|OHHHHHH +08::01::2022 02:15:54|NO SEAMS| +08::01::2022 02:15:55|EW +08::01::2022 02:15:55|LAT +08::01::2022 02:15:55|Anons, I'm getting tipsy| +08::01::2022 02:15:56|omouuuoooghhh +08::01::2022 02:15:57|ooooooooooooohhhhhhhhhhhhh +08::01::2022 02:15:58|IDDIES +08::01::2022 02:15:59|LAT +08::01::2022 02:15:59|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:15:59|guppie soup...| +08::01::2022 02:16:00|OHHHHHHH +08::01::2022 02:16:00|NAKED BUNNIES| +08::01::2022 02:16:01|small gupies| +08::01::2022 02:16:01|ice +08::01::2022 02:16:01|why wasn't I born in the GuP universe ....| +08::01::2022 02:16:01|OOBA +08::01::2022 02:16:01|BATH SCENE 2 LETS GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 02:16:02|ervice +08::01::2022 02:16:03|Rabbit stew| +08::01::2022 02:16:03|thanks god for giving me vision| +08::01::2022 02:16:03|OOBA +08::01::2022 02:16:03|stay hydrated| +08::01::2022 02:16:04|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:16:04|UUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:16:04|AZUSA ON SCREEN| +08::01::2022 02:16:05|OHHHHHHH +08::01::2022 02:16:05|stand up| +08::01::2022 02:16:05|I'm pretty sure these girls don't poop| +08::01::2022 02:16:05|D F C| +08::01::2022 02:16:06|ice +08::01::2022 02:16:06|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:16:07|Miho back| +08::01::2022 02:16:07|UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHH ToT| +08::01::2022 02:16:07|ANZU CHEST!| +08::01::2022 02:16:07|UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHH ANZU| +08::01::2022 02:16:08|THIS CUT MAKES NO SENSE| +08::01::2022 02:16:08|OOOOMING +08::01::2022 02:16:09|UOOOOOH ANZU'S DFC| +08::01::2022 02:16:09|RECT +08::01::2022 02:16:09|A BOARD| +08::01::2022 02:16:10|holy shit anzu is so flat| +08::01::2022 02:16:10|OOOOOOOOOOOOOOOHHHHHH +08::01::2022 02:16:11|cunny soup| +08::01::2022 02:16:13|EAAAAAAAAAAa +08::01::2022 02:16:13|UUUUOOOOOHHHHHHHHH +08::01::2022 02:16:14|aah +08::01::2022 02:16:14|Talking about poop on a pasta ova is a british plot, keep your guard up| +08::01::2022 02:16:15|HOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:16:16|AKED +08::01::2022 02:16:17|ol +08::01::2022 02:16:17|IG +08::01::2022 02:16:18|erwin likes what she sees| +08::01::2022 02:16:18|ooooooooooohhhhhhhhhhhhhhhhhhhhhh +08::01::2022 02:16:19|ABISU~~SABISUU +08::01::2022 02:16:20|MIHO'S FAT ASS| +08::01::2022 02:16:20|SEGGS SEGGS SEGGS SEGGS| +08::01::2022 02:16:20|UOOOOOOOOOOOOOOOOOOOOOOHHHHH :_;| +08::01::2022 02:16:21|UUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHh +08::01::2022 02:16:22|OOOOOOOOOHHHHHH +08::01::2022 02:16:22|ew +08::01::2022 02:16:23|OOOOOOOOO +08::01::2022 02:16:23|Erwin sees| +08::01::2022 02:16:23|naked miho| +08::01::2022 02:16:24|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:16:24|NF! +08::01::2022 02:16:24|Pour one out for the blind anons out there| +08::01::2022 02:16:24|FULL FRONTAL| +08::01::2022 02:16:25|OFF SCREENED | +08::01::2022 02:16:26|:: +08::01::2022 02:16:26|OOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:16:26|EWD +08::01::2022 02:16:26|AISU +08::01::2022 02:16:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:16:27|MIC WHY| +08::01::2022 02:16:27|hameless +08::01::2022 02:16:28|>skipped batttle scene| +08::01::2022 02:16:28|Anzu's boobs are on the negative plane| +08::01::2022 02:16:29|oooooooooooooooooooooooooooooooh +08::01::2022 02:16:31|leepy +08::01::2022 02:16:31|AIIIIIIIIIIIEEEEEEEEE MY ITALIAN TANKS| +08::01::2022 02:16:32|OBBERS +08::01::2022 02:16:32|that was quicker than me in bed| +08::01::2022 02:16:32|OOOOOOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGGGGGGGGGGGGGGGGGGGG +08::01::2022 02:16:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:16:33|IGGED +08::01::2022 02:16:33|nziobros... +08::01::2022 02:16:33|WHAT THE FUCK| +08::01::2022 02:16:34|VCE! +08::01::2022 02:16:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:16:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvvv| +08::01::2022 02:16:35|UCE +08::01::2022 02:16:35|Well that was quick| +08::01::2022 02:16:35|UCE +08::01::2022 02:16:35|uce... +08::01::2022 02:16:36|miho's rallying tits| +08::01::2022 02:16:36|yall dvces is late| +08::01::2022 02:16:36|ait +08::01::2022 02:16:37|OBBED +08::01::2022 02:16:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:16:37|Spoiling the next episode| +08::01::2022 02:16:38|IGGED +08::01::2022 02:16:38|DUCE REKT| +08::01::2022 02:16:38|POILER +08::01::2022 02:16:38|vcebros.... +08::01::2022 02:16:38|Oops I fucked up| +08::01::2022 02:16:39|DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! | +08::01::2022 02:16:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +08::01::2022 02:16:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:16:39|ANZIO BTFO| +08::01::2022 02:16:40|DUCE DUCE DUCE DUCE| +08::01::2022 02:16:40|KIPPED +08::01::2022 02:16:40|No match? What?| +08::01::2022 02:16:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:16:41|WE GOT TOO COCKY ANZIOBROS| +08::01::2022 02:16:41|Duce... | +08::01::2022 02:16:42|Nice supercut faggots| +08::01::2022 02:16:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:16:44|DUCE IS FUCKING DEAD| +08::01::2022 02:16:44|>not spliced in| +08::01::2022 02:16:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +08::01::2022 02:16:45|wtf why wasn't it spliced in?| +08::01::2022 02:16:46|KIPPED +08::01::2022 02:16:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:16:47|UCE? +08::01::2022 02:16:47|JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +08::01::2022 02:16:48|POILER +08::01::2022 02:16:48|MIHO SAMA I KNEEL PLEASE DONT SHOOT MY SHITALIAN TANKS| +08::01::2022 02:16:48|OH BOY I WONDER WHO WILL WIN| +08::01::2022 02:16:48|EAMLESS +08::01::2022 02:16:49|SPOILERS WTF| +08::01::2022 02:16:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvv| +08::01::2022 02:16:50|why does the supercut show the end first?| +08::01::2022 02:16:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:16:50|uce.... +08::01::2022 02:16:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:16:52|Weird editing| +08::01::2022 02:16:53|EAMLESS +08::01::2022 02:16:54|SKIPPED LOL| +08::01::2022 02:16:54|what is this cut| +08::01::2022 02:16:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +08::01::2022 02:16:54|WITHOUT SEAMS| +08::01::2022 02:16:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:16:55|weird cut| +08::01::2022 02:16:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:16:55|JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +08::01::2022 02:16:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:16:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:16:56|UCE +08::01::2022 02:16:57|LAT +08::01::2022 02:16:57| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:16:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:16:58|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 02:16:58|POLILED +08::01::2022 02:16:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:16:59|THE FUCK WAS THAT CUT| +08::01::2022 02:17:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvvvvv| +08::01::2022 02:17:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:01|DUCE DUCE DUCE| +08::01::2022 02:17:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:01|>EDITOR-KUN FUCKED UP| +08::01::2022 02:17:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:02|i love the little clap hana and yukari have| +08::01::2022 02:17:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:02|DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:03|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:17:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:05|cool edit| +08::01::2022 02:17:05|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 02:17:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:06| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:17:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:07|what just happened... | +08::01::2022 02:17:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:08|editor is FIRED| +08::01::2022 02:17:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:10|DUCE DUCE DUCE DUCE| +08::01::2022 02:17:10|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 02:17:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE| +08::01::2022 02:17:10|CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +08::01::2022 02:17:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:12|JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +08::01::2022 02:17:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:13|HOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKO +08::01::2022 02:17:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:17:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:16|Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +08::01::2022 02:17:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:16|NCHOVY +08::01::2022 02:17:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:17:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:18|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 02:17:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:17:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:20|im confuse| +08::01::2022 02:17:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:21|WHAT DUCE LOST!?!?!?!?!?!| +08::01::2022 02:17:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:17:22|HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR| +08::01::2022 02:17:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:17:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:23|ay +08::01::2022 02:17:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:24|CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +08::01::2022 02:17:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:17:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:27|JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE | +08::01::2022 02:17:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +08::01::2022 02:17:29|NTERLOCKED +08::01::2022 02:17:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:30|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +08::01::2022 02:17:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:31|CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +08::01::2022 02:17:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:32|UCE +08::01::2022 02:17:32|IG +08::01::2022 02:17:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:33|.O +08::01::2022 02:17:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:34|UTE +08::01::2022 02:17:34|ina-chan! +08::01::2022 02:17:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:35|HINA CHAN| +08::01::2022 02:17:35|Chubby child| +08::01::2022 02:17:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:35|CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +08::01::2022 02:17:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:36|ayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +08::01::2022 02:17:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:17:37|AAAAAAAAAAAAAAAAAYYYYYYYYYYYYYYYYYYYYYY +08::01::2022 02:17:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:38|UCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +08::01::2022 02:17:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +08::01::2022 02:17:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:40|aka-chan!!!!!! +08::01::2022 02:17:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:17:40|esbians +08::01::2022 02:17:42|LEZ MOMENT| +08::01::2022 02:17:42|who is taka| +08::01::2022 02:17:42|Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +08::01::2022 02:17:42|ISASHIBURI +08::01::2022 02:17:43|Roman dykery| +08::01::2022 02:17:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:17:45|INA-CHAN!!!!!!!!!!!!!!!!!!!!!!!!!!! +08::01::2022 02:17:46|AAAYYYY +08::01::2022 02:17:47|lewd handholding| +08::01::2022 02:17:47|OUL +08::01::2022 02:17:49|YURI YURI YURI| +08::01::2022 02:17:50|Cute "friends"| +08::01::2022 02:17:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +08::01::2022 02:17:52|ayamin... +08::01::2022 02:17:52|bye taka chan| +08::01::2022 02:17:52|ONE DIES TODAY| +08::01::2022 02:17:52|we want dvce not other italien| +08::01::2022 02:17:54|::u::fags >>>out| +08::01::2022 02:17:54|definitely lesbians| +08::01::2022 02:17:54|ays +08::01::2022 02:17:55|Big gay energy| +08::01::2022 02:17:55|aka-chan +08::01::2022 02:17:57|Yuri time| +08::01::2022 02:18:00|How do two girls have sex in a tank?| +08::01::2022 02:18:01|huuuu huuu| +08::01::2022 02:18:01|>FAILED RP| +08::01::2022 02:18:01|UTE! +08::01::2022 02:18:02|TOMODACHI ;_;| +08::01::2022 02:18:03|So gay | +08::01::2022 02:18:03|ahhhhh cute| +08::01::2022 02:18:04|hue hue~| +08::01::2022 02:18:04|don't hold hands thats how you get pregnant| +08::01::2022 02:18:06|>blonde >green eyes| +08::01::2022 02:18:06|ute +08::01::2022 02:18:07|hue hue| +08::01::2022 02:18:07|AVE TRUE TO CAESER| +08::01::2022 02:18:09|TP +08::01::2022 02:18:09|BAI BAI| +08::01::2022 02:18:09|UTE +08::01::2022 02:18:09|aibai +08::01::2022 02:18:09|Bye bye!| +08::01::2022 02:18:10|best seiyuu| +08::01::2022 02:18:10|Bye Bye| +08::01::2022 02:18:10|bai bai| +08::01::2022 02:18:10|LESBIAN SEX| +08::01::2022 02:18:11|bye bye| +08::01::2022 02:18:11|HUE HUE HUE| +08::01::2022 02:18:13|TAKA CHAN| +08::01::2022 02:18:13|fooo fooo| +08::01::2022 02:18:14|failed rp lmao| +08::01::2022 02:18:14|AKACHAN +08::01::2022 02:18:15|VE +08::01::2022 02:18:16|aka-chan +08::01::2022 02:18:16|hyu hyu| +08::01::2022 02:18:16|FRIEND FOOTBALL FRIEND| +08::01::2022 02:18:17|aka-chan +08::01::2022 02:18:17|UEHUEHUE +08::01::2022 02:18:17|bai bai| +08::01::2022 02:18:18|VCE +08::01::2022 02:18:19|hyu hyu| +08::01::2022 02:18:19|HYU HYU| +08::01::2022 02:18:21|kyu kyu| +08::01::2022 02:18:22|dorbs +08::01::2022 02:18:22|cute friends| +08::01::2022 02:18:23|GOD CARPACCIO IS MADE FOR BREEDING| +08::01::2022 02:18:23|ute +08::01::2022 02:18:24|i bet oryou smells like cheese| +08::01::2022 02:18:24|Yuri shall conquer the worldo| +08::01::2022 02:18:24|VANTI +08::01::2022 02:18:24|panzer iv| +08::01::2022 02:18:25|panza vor| +08::01::2022 02:18:25|TOOT TOOOT| +08::01::2022 02:18:25|VANTI +08::01::2022 02:18:25|panzer who?| +08::01::2022 02:18:26|Pantsu VOR | +08::01::2022 02:18:26|PANZER FOUR| +08::01::2022 02:18:27|Panter Panties 4| +08::01::2022 02:18:27|VANTJII +08::01::2022 02:18:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:18:27|VANTI +08::01::2022 02:18:29|sip* +08::01::2022 02:18:29|cute girls| +08::01::2022 02:18:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:18:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:33|Yuri shal conquer the worldo| +08::01::2022 02:18:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:18:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:18:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:18:36|UCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +08::01::2022 02:18:36|ASTA +08::01::2022 02:18:36|PANZER VOR PANZER VOR| +08::01::2022 02:18:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:37|UCCHINI +08::01::2022 02:18:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:18:39|DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:39|UCE +08::01::2022 02:18:40|PANZER VOR| +08::01::2022 02:18:40|PANTSU VOR| +08::01::2022 02:18:40|PANZER VOR| +08::01::2022 02:18:41|PANZER VOR| +08::01::2022 02:18:42|I'd go for some pasta now| +08::01::2022 02:18:43|VANTI +08::01::2022 02:18:43|PANZER VOR| +08::01::2022 02:18:44|panzer vor!| +08::01::2022 02:18:45|VANTI!!!!!!!!!!! +08::01::2022 02:18:45|VANTI! +08::01::2022 02:18:45|VANTI +08::01::2022 02:18:45|o:: for DVCE| +08::01::2022 02:18:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:47|PANZER VOR| +08::01::2022 02:18:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:47|PANTSU FOR| +08::01::2022 02:18:48|osh +08::01::2022 02:18:48|VANTI +08::01::2022 02:18:49|Panzer dez this nuts| +08::01::2022 02:18:49|VANTI +08::01::2022 02:18:49|Avanti means susume| +08::01::2022 02:18:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:18:50|VANTI +08::01::2022 02:18:50|VANTI +08::01::2022 02:18:51|FIAMME NERE| +08::01::2022 02:18:52|DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCE| +08::01::2022 02:18:53|ASTA +08::01::2022 02:18:53|WE GOT THIS ONE IN THE BAG ANZIO BROS| +08::01::2022 02:18:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:54|AKARONI +08::01::2022 02:18:55|UCE +08::01::2022 02:18:56|acaroni? +08::01::2022 02:18:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:18:58|Goddamnit this is making me hungry | +08::01::2022 02:18:58|FOR THE PASTA| +08::01::2022 02:18:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:18:59|What does panzer vor mean?| +08::01::2022 02:18:59|anketes.... +08::01::2022 02:18:59|akaroni +08::01::2022 02:19:01|Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +08::01::2022 02:19:02|ANZIO HAS SPIRIT| +08::01::2022 02:19:06|WHat +08::01::2022 02:19:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:19:08|MAMA MIA| +08::01::2022 02:19:09|ANZIOBROS GIVE THEM YOUR ENERGY| +08::01::2022 02:19:11|AKARONI +08::01::2022 02:19:11|UOOH TANKETTES | +08::01::2022 02:19:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:19:13|ufferoni +08::01::2022 02:19:13|KAY +08::01::2022 02:19:13|i cooka da pizza| +08::01::2022 02:19:14|uffering +08::01::2022 02:19:15|elicious +08::01::2022 02:19:17|Panzer vor means "penetrate me"| +08::01::2022 02:19:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:19:18|reminder than anchovy's lil bro is fucking EVERYONE in anzio| +08::01::2022 02:19:22|ufferoni +08::01::2022 02:19:22|hard buffers| +08::01::2022 02:19:24|IT'S ANZIO'S YEAR| +08::01::2022 02:19:25|cute bakas| +08::01::2022 02:19:27|uff +08::01::2022 02:19:29|Leave macaroni alone| +08::01::2022 02:19:30|rip stream| +08::01::2022 02:19:31|GET THE CARDBOARDS GET THE CARDBOARDS| +08::01::2022 02:19:32|buffghetti +08::01::2022 02:19:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:19:37|Operation Macaroni and cheese| +08::01::2022 02:19:37|Nice powerpoint bro| +08::01::2022 02:19:38|this is our year ducebros!| +08::01::2022 02:19:43|WHOA THAT'S A LOTTA TANKS| +08::01::2022 02:19:44|UYOHHHH IM GONNA BOOOOOOOOFER| +08::01::2022 02:19:44|I just maid some Macaronni| +08::01::2022 02:19:45|Get the Pizza boxs| +08::01::2022 02:19:46|Piaggio Tanks| +08::01::2022 02:19:53|TE +08::01::2022 02:19:53|dumb pepperoni put all the cardboards out| +08::01::2022 02:19:56|otsugeki? +08::01::2022 02:20:00|otsugeki! +08::01::2022 02:20:02|are tank battles like this irl| +08::01::2022 02:20:03|OTSUGEKI +08::01::2022 02:20:03|OTSUGEKI +08::01::2022 02:20:03|OTSUGEKI! +08::01::2022 02:20:05|otsugeki! +08::01::2022 02:20:05|SOMEONE SAY TOTSUGEKI| +08::01::2022 02:20:05|OTSUGEKI +08::01::2022 02:20:06|OTSUGEKI +08::01::2022 02:20:06|OTSUGEKI +08::01::2022 02:20:06|So how do they decide how many tanks a team can use, is it a point based system?| +08::01::2022 02:20:07|OTSUGEKI +08::01::2022 02:20:07|eah +08::01::2022 02:20:09|shut up momo| +08::01::2022 02:20:10|OTSUGEKIIIIIII +08::01::2022 02:20:11|OTSUGEKI +08::01::2022 02:20:11|Is Macaronni made of acrdboard?| +08::01::2022 02:20:13|aybe +08::01::2022 02:20:14|AGGEKI +08::01::2022 02:20:14|shitty buffering| +08::01::2022 02:20:14|T O T S U G E K I| +08::01::2022 02:20:15|No they are NOT like this IRL| +08::01::2022 02:20:20|Can confirm tank battles are like this| +08::01::2022 02:20:21|UFFERING +08::01::2022 02:20:22|STOP BUFFERING| +08::01::2022 02:20:23|uffering..... +08::01::2022 02:20:24|they are exactly like this irl| +08::01::2022 02:20:26| +08::01::2022 02:20:26|UFFERONI +08::01::2022 02:20:28|HAFTED +08::01::2022 02:20:28|uffering... +08::01::2022 02:20:29|uff +08::01::2022 02:20:29|UG +08::01::2022 02:20:30|its a flat number. 10 - 15 tanks| +08::01::2022 02:20:31|UFFERING +08::01::2022 02:20:32|PRE-RECORDED BUFFERING| +08::01::2022 02:20:34|it's an accurate depiction| +08::01::2022 02:20:34| +08::01::2022 02:20:34|aaaa im boofering| +08::01::2022 02:20:35|pastas too fat, stream needs to buffer| +08::01::2022 02:20:36|ZZZZZZZZZZZZZZZZ +08::01::2022 02:20:36|>Anzio so poor, they can't afford live stream| +08::01::2022 02:20:44|pause for a second| +08::01::2022 02:20:46|Good to know the bufferring isn't just me| +08::01::2022 02:20:48|iesta +08::01::2022 02:20:51|STOP DOWNLOADING DOLPHIN PORN OP| +08::01::2022 02:20:51|nowit's fine| +08::01::2022 02:20:52|WERKS | +08::01::2022 02:20:53|ASTER +08::01::2022 02:20:54|AYIA +08::01::2022 02:20:55|GO FASTER| +08::01::2022 02:20:56|GAS GAS GAS| +08::01::2022 02:20:57|UNWERK +08::01::2022 02:21:00|we all suffer together| +08::01::2022 02:21:00|can you pause it i gtg real quick| +08::01::2022 02:21:01|ZUSA +08::01::2022 02:21:08|SHE WANTS TO GO FASTER?!?!| +08::01::2022 02:21:14|dumb rabbits| +08::01::2022 02:21:17|>Yfw I can't hold all these frames| +08::01::2022 02:21:19|sasuga anzio desu ne| +08::01::2022 02:21:20|vce +08::01::2022 02:21:21|If I had a tank for every pixel on the stream I'd have Anzio| +08::01::2022 02:21:22|sasuga anzio desu ne| +08::01::2022 02:21:23|*bbits +08::01::2022 02:21:23|EX +08::01::2022 02:21:24|Anzio is amazing!| +08::01::2022 02:21:37|too high IQ for anzio| +08::01::2022 02:21:38|dvce is the ctuest| +08::01::2022 02:21:38|houchou +08::01::2022 02:21:38|ZUSA +08::01::2022 02:21:39|Duce is the smartest| +08::01::2022 02:21:40|baka saki| +08::01::2022 02:21:40|Stupid Saki| +08::01::2022 02:21:40|intel +08::01::2022 02:21:41|why is saki retarded| +08::01::2022 02:21:43|haha Saki is too high| +08::01::2022 02:21:44|Cute | +08::01::2022 02:21:44|AZUSA WITH BINOCULARS!!| +08::01::2022 02:21:45|how the fuck are they falling for this| +08::01::2022 02:21:47|6 millions?| +08::01::2022 02:21:52|HOLY QUARITY| +08::01::2022 02:21:52|smart hana| +08::01::2022 02:21:52|pepperoni u fucking idiot u threw!!!| +08::01::2022 02:21:53|>video quality| +08::01::2022 02:21:54|usagi team doesnt have depth perception| +08::01::2022 02:21:55|AKARONI +08::01::2022 02:21:56|Saki is always high| +08::01::2022 02:21:57|could it bee?| +08::01::2022 02:21:57|>Best food >Best girl >Best tanks. Why is Anzio so best?| +08::01::2022 02:22:01|AAAMN +08::01::2022 02:22:01|sweet mosaic | +08::01::2022 02:22:01|VLC +08::01::2022 02:22:03|PIXELS AS BIG AS DICKS| +08::01::2022 02:22:03|anzio quality| +08::01::2022 02:22:04|144p lets go| +08::01::2022 02:22:05|LMAO HOLY SHIT| +08::01::2022 02:22:05|nice pixels| +08::01::2022 02:22:06|oh no| +08::01::2022 02:22:06|VLC +08::01::2022 02:22:06|oof bitrate| +08::01::2022 02:22:07|y'all got anymore of them pixels?| +08::01::2022 02:22:07|>prerecorded QUALITY | +08::01::2022 02:22:08|the quality| +08::01::2022 02:22:08|WHy is it censored?| +08::01::2022 02:22:08|MASSIVE PIXELS| +08::01::2022 02:22:08|2p +08::01::2022 02:22:08|AAAAAAAAAAAAH MIHO HEPL ME THE BITNARETET| +08::01::2022 02:22:08|video +08::01::2022 02:22:09|60p +08::01::2022 02:22:09|ANZIO QUALITY| +08::01::2022 02:22:10|loons +08::01::2022 02:22:10|This is like streaming naruto in 2004| +08::01::2022 02:22:10|>anzio so poor they can only afford 144p| +08::01::2022 02:22:11|VLC +08::01::2022 02:22:12|as flat as they are| +08::01::2022 02:22:13|144P, WE MEET AGAIN| +08::01::2022 02:22:13|UALITY +08::01::2022 02:22:13|Could I get some more pixels?| +08::01::2022 02:22:14|SO MANY PIXELS| +08::01::2022 02:22:14|its like its 2013 again| +08::01::2022 02:22:15|Quality setting: Volsempfänger| +08::01::2022 02:22:16|144p LETS GOOOOOOO| +08::01::2022 02:22:16|REMOVE PIXELS remove pixels| +08::01::2022 02:22:16|0P +08::01::2022 02:22:16|stream had to censor the cardboard| +08::01::2022 02:22:17|too lewd| +08::01::2022 02:22:19|naruto +08::01::2022 02:22:19|>2022 >doesn't watch gup in 32bit graphics| +08::01::2022 02:22:19|GuP ON GBA VIDEO| +08::01::2022 02:22:20|SAKI EROTIC UOOOOOOOOOOOOOOOOOOOOOHHH ToT| +08::01::2022 02:22:21|at least its not stuttering anymore lmao| +08::01::2022 02:22:21|OUL +08::01::2022 02:22:21|Stream can't handle Duce| +08::01::2022 02:22:22|BALLSACK PLAN| +08::01::2022 02:22:24|40p +08::01::2022 02:22:24|alls +08::01::2022 02:22:24|I CAN COUNT ALL THE PIZELS| +08::01::2022 02:22:25|The True Operation Macaronni| +08::01::2022 02:22:26|>Anzio is so powerful they forced the live to 144p| +08::01::2022 02:22:27|alls +08::01::2022 02:22:27|[Censored for gore]| +08::01::2022 02:22:27|PEPPA PLAN| +08::01::2022 02:22:28|AKARONI +08::01::2022 02:22:28|HA HA HA HA | +08::01::2022 02:22:29|SHAKING. IN. FEAR| +08::01::2022 02:22:29|cunts stole my bitrate cant have shit in anzio| +08::01::2022 02:22:29|akaroni +08::01::2022 02:22:30|LUT! +08::01::2022 02:22:30|ahaha +08::01::2022 02:22:30|is it 2010 again?| +08::01::2022 02:22:31|AKARONI +08::01::2022 02:22:31|BIG BRAIN| +08::01::2022 02:22:33|akaroni +08::01::2022 02:22:33|>mfw the stream is running on VLC| +08::01::2022 02:22:33|CRISPY PIXELS| +08::01::2022 02:22:36|BRAINS +08::01::2022 02:22:36|I10P +08::01::2022 02:22:38|AKARONI +08::01::2022 02:22:38|ASAKA +08::01::2022 02:22:39|anzio can't afford pixel| +08::01::2022 02:22:41|Please understand, Duce can't afford many things| +08::01::2022 02:22:42|AKARONI +08::01::2022 02:22:43|>tank fires and rapes the frames| +08::01::2022 02:22:43|big brain pepperoni| +08::01::2022 02:22:54|Italian 4-pasta internet| +08::01::2022 02:22:56|Authentic japanese video experience| +08::01::2022 02:23:00|onk +08::01::2022 02:23:01|>Having less than 10 pixels in 2022| +08::01::2022 02:23:03|tankfags, could a cv33 maching gun pen the type 89?| +08::01::2022 02:23:04|AA +08::01::2022 02:23:04|MATASE MOMENTE| +08::01::2022 02:23:04|dumb aya| +08::01::2022 02:23:05|UMBUNNY +08::01::2022 02:23:07|>they're real| +08::01::2022 02:23:12|Ah! they're real!| +08::01::2022 02:23:12|aya wa ayashi..| +08::01::2022 02:23:13|this is why you don't stream your animes| +08::01::2022 02:23:15|die joe boo| +08::01::2022 02:23:17|HONMONO DESU| +08::01::2022 02:23:18|UFFER +08::01::2022 02:23:23|animes +08::01::2022 02:23:25|affa +08::01::2022 02:23:26|I JOE| +08::01::2022 02:23:28|BAffer pls| +08::01::2022 02:23:29|buffer time...| +08::01::2022 02:23:29|streaming +08::01::2022 02:23:30|AAAAAAAAAAAAA +08::01::2022 02:23:31|mines +08::01::2022 02:23:34|John Moses Browning's M2 Browning .50cal could pen the Type-89| +08::01::2022 02:23:35|If you keep buffering I'm legit going to pee break| +08::01::2022 02:23:36|buffer AND 72p holy shit| +08::01::2022 02:23:37|mino +08::01::2022 02:23:38|YOU JOE| +08::01::2022 02:23:41|>streaming anime| +08::01::2022 02:23:45|ruh +08::01::2022 02:23:45|>18000 danmaku| +08::01::2022 02:23:47|SAEMONZA OPEN YOUR EYES FOR GODS SAKE| +08::01::2022 02:23:49|WATASHI TACHI NO HARMONY| +08::01::2022 02:23:49|STOP IT JOE| +08::01::2022 02:23:50|animo acid| +08::01::2022 02:23:50|pee a little between buffers| +08::01::2022 02:23:50|i've seen gifs with better quality lul| +08::01::2022 02:23:52|thanks for the pen info, anon| +08::01::2022 02:23:53|a::migos.... +08::01::2022 02:23:54|gambare stream| +08::01::2022 02:23:55|>quality improves but immediately starts bufferring| +08::01::2022 02:23:56|Too many entities on the server..| +08::01::2022 02:23:57|I LOOK FORWARD TO EIGHT MORE HOURS OF THIS | +08::01::2022 02:23:59|it's a JOJO of buffering, video quality breakdown, and catch up| +08::01::2022 02:23:59|fuck this buffering imma go for a cig| +08::01::2022 02:24:00|FIXLAG: +08::01::2022 02:24:00|AVANTI ARDITI!! o:: o:: o::| +08::01::2022 02:24:04|quick anon use the power of friendship to save the stream| +08::01::2022 02:24:05|GMI +08::01::2022 02:24:05|Every buffer I release a little pee| +08::01::2022 02:24:08|Bros... the stream is dying| +08::01::2022 02:24:08|now this is the anzio experience| +08::01::2022 02:24:09|if we skip this episode maybe the internet will be fixed| +08::01::2022 02:24:12|how many people are watching right now?| +08::01::2022 02:24:12|GANBARE STREAM| +08::01::2022 02:24:15|I HURT MYSEEELF TODAY| +08::01::2022 02:24:15|AS LONG AS IM WITH MY BROS I CAN TAKE ANY QUALITY| +08::01::2022 02:24:16|>buffer state| +08::01::2022 02:24:18|I +08::01::2022 02:24:19|I BLAME ITALY FOR THIS| +08::01::2022 02:24:20|nzioniggers..... +08::01::2022 02:24:21|I +08::01::2022 02:24:23|I +08::01::2022 02:24:24| +08::01::2022 02:24:24|streamed live on anzio wi fi| +08::01::2022 02:24:24|Italian 2 maccaroni::second connection| +08::01::2022 02:24:25|uined +08::01::2022 02:24:25|ANZIO is too based for this stream| +08::01::2022 02:24:27|rip stream| +08::01::2022 02:24:28|the host spent too much budget on pasta and can't afford any more internet, please understand| +08::01::2022 02:24:28|ganbare stream! \ o ::| +08::01::2022 02:24:29|Drink everytime it frezzes| +08::01::2022 02:24:29|SI (YES)| +08::01::2022 02:24:30|STOP WATCHING ONEGAI I NEED MORE BANDWIDTH| +08::01::2022 02:24:30|HITALY +08::01::2022 02:24:31|UFFERONI +08::01::2022 02:24:32|I +08::01::2022 02:24:35|Fucking cheap Anzio can't afford good internet| +08::01::2022 02:24:36|DVCE Episode breaking the stream, sasuga| +08::01::2022 02:24:37|i can't drink that fast| +08::01::2022 02:24:39|What are you using to stream this? A CV33?| +08::01::2022 02:24:40|Anzio is too poor for 480p30.| +08::01::2022 02:24:41|UFFERONI +08::01::2022 02:24:43|Anzio streaming budget| +08::01::2022 02:24:43|STOP BUFFERING AIIIIIIEEEEEEEE| +08::01::2022 02:24:43|I will never forgive the italians! \o::| +08::01::2022 02:24:44|PEPPERONI DID YOU UNPLUG THE STREAM?| +08::01::2022 02:24:46|the stream can't handle all the anzio SOUL| +08::01::2022 02:24:47|GANBARE STREAM \O::| +08::01::2022 02:24:49|O:: +08::01::2022 02:24:50|Inject more bandwith| +08::01::2022 02:24:50|the money went towards wig maintenance, not sure for who though| +08::01::2022 02:24:52|>disabling danmaku doesn't work | +08::01::2022 02:24:53|para! +08::01::2022 02:24:54|EASY WAY TO COUNT THE VIEWERS, POST (HERE) IF WATCHING| +08::01::2022 02:24:54|We must switch to 144p| +08::01::2022 02:24:57|this is unwatchable| +08::01::2022 02:25:00|here) +08::01::2022 02:25:01|wowowowowowo! +08::01::2022 02:25:01|tetetetetete +08::01::2022 02:25:03|WOWOWOOWOWOWOWOOWOWOW +08::01::2022 02:25:03|F for the stream| +08::01::2022 02:25:03|here) +08::01::2022 02:25:04|ere +08::01::2022 02:25:04|here) +08::01::2022 02:25:05|ere +08::01::2022 02:25:05|DUCE borked the stream| +08::01::2022 02:25:06|DUDE STREAMING IS TOTALLY FINE GAHHH| +08::01::2022 02:25:06| +08::01::2022 02:25:06|here) +08::01::2022 02:25:07|here) +08::01::2022 02:25:07| +08::01::2022 02:25:07|HERE) +08::01::2022 02:25:07|HERE) +08::01::2022 02:25:08| +08::01::2022 02:25:08|ere +08::01::2022 02:25:08|just download more ram | +08::01::2022 02:25:09| +08::01::2022 02:25:09|here) +08::01::2022 02:25:09|CV33s are my spirit animal| +08::01::2022 02:25:09|bitches, leave| +08::01::2022 02:25:09|here) +08::01::2022 02:25:09| +08::01::2022 02:25:10|>eva reference| +08::01::2022 02:25:11|HERE) +08::01::2022 02:25:11|YOU) +08::01::2022 02:25:12|ere +08::01::2022 02:25:12|how low can you get the quality| +08::01::2022 02:25:12| +08::01::2022 02:25:13|here) +08::01::2022 02:25:14|HERE) +08::01::2022 02:25:14|you) +08::01::2022 02:25:14|here) +08::01::2022 02:25:16|F stream| +08::01::2022 02:25:16|(here) for (you)| +08::01::2022 02:25:17|OW OOF MY BITS| +08::01::2022 02:25:17|HERE) +08::01::2022 02:25:17|here) +08::01::2022 02:25:17|here) +08::01::2022 02:25:18|chechen beheading quality| +08::01::2022 02:25:18|(here) dvce| +08::01::2022 02:25:21|OW OOF MY BITS| +08::01::2022 02:25:22|(You) 2| +08::01::2022 02:25:26|OW OOF MY BITS| +08::01::2022 02:25:30|WE'RE LOSING VIEWERS| +08::01::2022 02:25:31| +08::01::2022 02:25:32|I dont feel so good streambros| +08::01::2022 02:25:33|even ISIS had better quality| +08::01::2022 02:25:33|rest in fucking rip stream| +08::01::2022 02:25:35|nice powerpoint| +08::01::2022 02:25:35|STREAM IS FUCKING DEAD| +08::01::2022 02:25:35|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +08::01::2022 02:25:35|( H E R E )| +08::01::2022 02:25:37|streambros... | +08::01::2022 02:25:38|This is the True Anzio experience| +08::01::2022 02:25:38|ANI +08::01::2022 02:25:38|ed +08::01::2022 02:25:39|streaming +08::01::2022 02:25:41|No audio for phone :::| +08::01::2022 02:25:41|a powerpoint is fine too| +08::01::2022 02:25:41| +08::01::2022 02:25:42|can we drop the stream to 240 for a bit for fun| +08::01::2022 02:25:43|0.25FPS +08::01::2022 02:25:45| +08::01::2022 02:25:45|WORST STREAM DURING THE BEST PART!| +08::01::2022 02:25:45|Ah, the podcast version of the stream| +08::01::2022 02:25:46|ed +08::01::2022 02:25:46|>streaming anime| +08::01::2022 02:25:46|O MY CARBON COAT| +08::01::2022 02:25:46|nice tank| +08::01::2022 02:25:46|hnononono +08::01::2022 02:25:46|I counted 26| +08::01::2022 02:25:47|ANZIO KILLED THE STREAM| +08::01::2022 02:25:47|Stream quality reminds me of ~2010 internet| +08::01::2022 02:25:47|OH NO NO NO NO THIS CAN'T BE HAPPENNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 02:25:48|::a::bros... did we get too cocky?| +08::01::2022 02:25:48|>watching on phone| +08::01::2022 02:25:49|WE'RE FUCKING DEAD| +08::01::2022 02:25:50|close your eyes and use your imagination anons| +08::01::2022 02:25:50|ph*ne +08::01::2022 02:25:51|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +08::01::2022 02:25:51|stream kun...| +08::01::2022 02:25:51|ruh +08::01::2022 02:25:51|it stopped| +08::01::2022 02:25:52|all you had to do was pay the bills anzio| +08::01::2022 02:25:53|>watching streams| +08::01::2022 02:25:54|IP +08::01::2022 02:25:55|RIP STREAM| +08::01::2022 02:25:55| +08::01::2022 02:25:55|WHERE WERE YOU WHEN STREAM WAS KILL| +08::01::2022 02:25:56|OPERATION STREAMARONI| +08::01::2022 02:25:56|It's all falling apart!| +08::01::2022 02:25:56|I CAN'T BELIEVE ANZIO RUINED EVERYTHING| +08::01::2022 02:25:56|DEAD FOR REAL| +08::01::2022 02:25:57| +08::01::2022 02:25:57| +08::01::2022 02:25:57|aaaaaaaaieeeeeeeeeeeeee +08::01::2022 02:25:57| +08::01::2022 02:25:58|SHUT IT DOWN| +08::01::2022 02:25:59|ANZIO WI-FI| +08::01::2022 02:25:59|::a::ds........................... +08::01::2022 02:26:00|>staying up for this| +08::01::2022 02:26:00|IT'S DEAD JIM| +08::01::2022 02:26:01|miho took a fucking tracer round to the head and the stream died| +08::01::2022 02:26:01|How much more abuse can this stream take?| +08::01::2022 02:26:01| +08::01::2022 02:26:01|streaming +08::01::2022 02:26:03|EAD +08::01::2022 02:26:04|ANZIO DIDNT PAY DENBTS| +08::01::2022 02:26:07|It's Dvce's fault the stream is dead| +08::01::2022 02:26:08|DUCE betrayed us| +08::01::2022 02:26:08|OMAEWA MOU SHINDEIRU| +08::01::2022 02:26:09|OPERATOR DOWN| +08::01::2022 02:26:09|7 +08::01::2022 02:26:09|ANZZZIIIIIIOOOOOOOOOOOOOOOO +08::01::2022 02:26:10|ITALY RUINS EVERYTHING ONCE AGAIN| +08::01::2022 02:26:10|I can't belive Anzio killed the stream| +08::01::2022 02:26:11|DMCA RIP| +08::01::2022 02:26:11|GUP BROS THIS WAS SUPPOSED TO BE OUR YEAR| +08::01::2022 02:26:12|IT ALL COMES TUMBLING DOWN TUMBLING DOWN TUMBLING DOWN| +08::01::2022 02:26:12|ead +08::01::2022 02:26:12|WHAT DOES THIS MEAN BROS?| +08::01::2022 02:26:13|STREAM? STREAM!? STREEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAAAAM!!!!!!!!!!!| +08::01::2022 02:26:13|well, what do we do now?| +08::01::2022 02:26:14|Operation Maccaroni worked| +08::01::2022 02:26:14|Duce taskate... | +08::01::2022 02:26:14|OPERATOR DOWN| +08::01::2022 02:26:17|I am greek| +08::01::2022 02:26:17|HIBOU +08::01::2022 02:26:18|DVCE bros....| +08::01::2022 02:26:18|PANZER DOWN, I REPEAT, PANZER DOWN| +08::01::2022 02:26:19|EAD +08::01::2022 02:26:20|OPERATOR DOWN| +08::01::2022 02:26:21|nice knowing you dvce-bros, sayonara wi-fi| +08::01::2022 02:26:23|bought pasta instead of bandwidth sry| +08::01::2022 02:26:24|I WANT MY MONEY BACK| +08::01::2022 02:26:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:26:24|what happen| +08::01::2022 02:26:25|NOT LIKE THIS| +08::01::2022 02:26:26|It's over.| +08::01::2022 02:26:27|AHHHHH ALL THE DANMAKU AT ONCE| +08::01::2022 02:26:27|DUCE DUCE DUCE| +08::01::2022 02:26:27|latline..... +08::01::2022 02:26:30|DUCEBROS WE GOT TOO COCKY.....| +08::01::2022 02:26:31|Poop break? | +08::01::2022 02:26:31|Buffer Vor!| +08::01::2022 02:26:32|DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:26:32| +08::01::2022 02:26:32|ino +08::01::2022 02:26:33|Someone tell a joke while we're waiting| +08::01::2022 02:26:34|DUCE NO| +08::01::2022 02:26:34|stream ded| +08::01::2022 02:26:34|It was fun while it lasted| +08::01::2022 02:26:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:26:35|it*lians +08::01::2022 02:26:36|SAVE THE STREAM| +08::01::2022 02:26:36|this is a good moment to read my k-on! fic| +08::01::2022 02:26:37| +08::01::2022 02:26:37|time to piss| +08::01::2022 02:26:40|KNOCK KNOCK| +08::01::2022 02:26:40|go pee| +08::01::2022 02:26:40|ooooooooo +08::01::2022 02:26:40|>italy fucks everything up as usual| +08::01::2022 02:26:43|Get food while you can | +08::01::2022 02:26:44|>duce stopped the stream to stop Anzio from losing| +08::01::2022 02:26:45|VCE.......................... +08::01::2022 02:26:48|so this is the power of DUVE| +08::01::2022 02:26:50|7 +08::01::2022 02:26:52|Toilet break| +08::01::2022 02:26:52|I shat in a bottle for this?| +08::01::2022 02:26:54|stream couldn| +08::01::2022 02:26:54|go get water| +08::01::2022 02:26:54|Anzio killed the stream| +08::01::2022 02:26:55|FUCKING ITALIANS| +08::01::2022 02:26:55|this is a first| +08::01::2022 02:26:55|Italia spilled the pasta| +08::01::2022 02:26:56|INTER INTER MISSION | +08::01::2022 02:26:58|empty your piss bottles| +08::01::2022 02:26:58|Duce couldn't make the stream play on time...| +08::01::2022 02:26:59|>shitting in a bottle| +08::01::2022 02:27:00|nice tracer| +08::01::2022 02:27:01|NICE 89| +08::01::2022 02:27:02|time to get more drinks| +08::01::2022 02:27:02|DUVE DUVE DUVE DUVE| +08::01::2022 02:27:03|YES TIME TO SHIIIIIIIIIIIIIIIIIIIIIIT| +08::01::2022 02:27:04|the guy that made the GuP doujin also made a K On one equally as distrubing| +08::01::2022 02:27:04|small shits| +08::01::2022 02:27:05|I shat in a glass faggot| +08::01::2022 02:27:05|sasuga DUCE| +08::01::2022 02:27:05|Piss Guy Crash Stream So He Piss| +08::01::2022 02:27:06|THE ANZAI EFFECT| +08::01::2022 02:27:07|How do you shit in a bottle?| +08::01::2022 02:27:08|>Italy 3 cheese ethernet melted| +08::01::2022 02:27:08|stream couldn't handle duce's power....| +08::01::2022 02:27:08|THIS IS OUR BATHROOM BREAK USE IT WHILE YOU CAN| +08::01::2022 02:27:10|>intermission, Azio killed the f'ing stream| +08::01::2022 02:27:10|ruh +08::01::2022 02:27:10|Anzio is too fast for the stream| +08::01::2022 02:27:13|SHIT IN A BOTTLE| +08::01::2022 02:27:16|BREAK TIME USE IT WHILE YOU CAN| +08::01::2022 02:27:18|Anzio on dial up| +08::01::2022 02:27:18|i come back from an emergency shit and see this| +08::01::2022 02:27:19|And I have diahria| +08::01::2022 02:27:21|I got bbq chicken sandwich and jack n coke| +08::01::2022 02:27:21|post shit bottle pic in thread| +08::01::2022 02:27:23|break time| +08::01::2022 02:27:23|Don Mai| +08::01::2022 02:27:27|SAVE THE WHALES!| +08::01::2022 02:27:29|Everyone piss and shit now! together!| +08::01::2022 02:27:30|anbarre +08::01::2022 02:27:30|Pics or shittbottle didn't happen| +08::01::2022 02:27:31|BREAK TIME BOYS| +08::01::2022 02:27:33|ALL HAIL DUCE FOR CRASHING THE STREAM SO WE CAN HAVE A PISS BREAK| +08::01::2022 02:27:34|don't PANIC| +08::01::2022 02:27:34|this is a hostile act| +08::01::2022 02:27:36|ENTER, ENTER MISSION 早くここにおいで一生懸命追いかけたいよ| +08::01::2022 02:27:38|NO TIME TO SHIT| +08::01::2022 02:27:42|at least roll some ads (笑)| +08::01::2022 02:27:42|time for an emergency fap | +08::01::2022 02:27:43|Oh no, I'm still mid shit!!!| +08::01::2022 02:27:44|iv +08::01::2022 02:27:45|hold the line| +08::01::2022 02:27:45|we now return to TANKS| +08::01::2022 02:27:45|STOP SHITTING ITS BACK UP| +08::01::2022 02:27:48|Based DVCE giving a peebreak for loyal anons DVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCE| +08::01::2022 02:27:51|pic +08::01::2022 02:27:52|o:: for DVCE| +08::01::2022 02:27:52|>emergency fap| +08::01::2022 02:27:54|Bogdanoff, he stream. He stream? Yes. Buffer it| +08::01::2022 02:27:55|ANZIO PAID THE INTERNET| +08::01::2022 02:27:55|uragu +08::01::2022 02:27:56|CHINESE DDOS| +08::01::2022 02:27:56|ugh time to look up gup doujins| +08::01::2022 02:27:57|ets +08::01::2022 02:27:57|do we actually have a JP bro or two here| +08::01::2022 02:27:59| .| +08::01::2022 02:28:02|igger +08::01::2022 02:28:02|F5 dumb niggers| +08::01::2022 02:28:03|straem died before they lost, truly a propaganda of success| +08::01::2022 02:28:03|CANT SHIT ARRRRRRRRRRRGH| +08::01::2022 02:28:04|THE BUGMEN GOT US| +08::01::2022 02:28:04|are we back?| +08::01::2022 02:28:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:28:07|wii u| +08::01::2022 02:28:08|ets2 +08::01::2022 02:28:08|i@ +08::01::2022 02:28:08|WERE BACK| +08::01::2022 02:28:09|Lucky enough time to quickie jack it| +08::01::2022 02:28:10|WE'RE BACK| +08::01::2022 02:28:11|WE"RE BACK| +08::01::2022 02:28:12|ACK +08::01::2022 02:28:12|No I'm still peeing| +08::01::2022 02:28:12|I +08::01::2022 02:28:12|yo whatre you drinking| +08::01::2022 02:28:14|okay, all good| +08::01::2022 02:28:16|F5 MY BROTHERS, WE'RE BACK| +08::01::2022 02:28:17|EFRESH +08::01::2022 02:28:19|STILL WAITING| +08::01::2022 02:28:19|IV +08::01::2022 02:28:20|adaima +08::01::2022 02:28:21|just don't pee on the stream| +08::01::2022 02:28:21|ater +08::01::2022 02:28:22|italians dit this| +08::01::2022 02:28:22|REFRESH, WE'RE BACK| +08::01::2022 02:28:22|thank you| +08::01::2022 02:28:22|NZIOOOOOOOOOOO +08::01::2022 02:28:24|REFRESH WE BACK| +08::01::2022 02:28:26|NEED +08::01::2022 02:28:26|REFRESH THE SITE YOU FAGS| +08::01::2022 02:28:27|lol everyone has white text now after f5ing| +08::01::2022 02:28:27|KAERI! +08::01::2022 02:28:27|**SPOILERS, DUCE WINS**| +08::01::2022 02:28:28|WE BACK| +08::01::2022 02:28:31|あ:: +08::01::2022 02:28:31|Good thing I have my dick out right now| +08::01::2022 02:28:32|WOWOWOWOW +08::01::2022 02:28:34|owowowowow +08::01::2022 02:28:35|ACK +08::01::2022 02:28:36|efresh +08::01::2022 02:28:38|TETETETETETE +08::01::2022 02:28:39|The Boys Are Back| +08::01::2022 02:28:40|REFRESH THE PAGE IT WORKS| +08::01::2022 02:28:43|DUCE BROS WE'RE HOME| +08::01::2022 02:28:45|thanks for your hard work stream-kun| +08::01::2022 02:28:45|DUCE is unbeatable!| +08::01::2022 02:28:45|WE'RE LIVE| +08::01::2022 02:28:48|ased +08::01::2022 02:28:49|treambros... +08::01::2022 02:28:49|refresh works| +08::01::2022 02:28:49|rip to the ones who went to the bathroom| +08::01::2022 02:28:51|DUCKS STRONG| +08::01::2022 02:28:52|$10000000 on DUCE!| +08::01::2022 02:28:52|DUCE WON| +08::01::2022 02:28:53|back in certified VLC quality| +08::01::2022 02:28:54|DVCE spam killed the stream| +08::01::2022 02:28:54|D QUICK| +08::01::2022 02:28:55|ORE +08::01::2022 02:28:55|WHITE IS RIGHT | +08::01::2022 02:28:56|ANZIO ISN'T WEA- ANZIO IS STRONG!| +08::01::2022 02:28:57|ick' +08::01::2022 02:28:58|GET FUCKED CARRO VELOCE FAGS| +08::01::2022 02:28:59|>he isn't watching through mpv| +08::01::2022 02:28:59|I love these tiny Italian tanks| +08::01::2022 02:29:00|I'll give them a quick D| +08::01::2022 02:29:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:04|THANK YOU DVCE| +08::01::2022 02:29:05|streambros did we make it| +08::01::2022 02:29:06|CARBON COATED STREAM| +08::01::2022 02:29:08|SO SMART| +08::01::2022 02:29:09|MY CARBON COATED SH....| +08::01::2022 02:29:09|WHAT IS LOVE| +08::01::2022 02:29:10|Holy shit, is Duce THAT strong? How can Oarai even compete?| +08::01::2022 02:29:10|DUMB USAGI| +08::01::2022 02:29:10|IRAQ QUALITY STREAM| +08::01::2022 02:29:11|EFRESH +08::01::2022 02:29:12|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 02:29:14|WITHE POWA| +08::01::2022 02:29:14|CV FAGS ON SUICIDE WATCH| +08::01::2022 02:29:16|naruhodo naruhodo| +08::01::2022 02:29:16|UCE +08::01::2022 02:29:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:17|efresh +08::01::2022 02:29:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:19|uce +08::01::2022 02:29:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:29:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:22|We're all gonna make it bros| +08::01::2022 02:29:23|tankfags, what kind of penetration does the semovente have? can it pen the ankou panzer?| +08::01::2022 02:29:24|DUCE DAVANTI E DIETRO TUTTI QUANTI| +08::01::2022 02:29:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:24|ACARONI +08::01::2022 02:29:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:24|akaroni... +08::01::2022 02:29:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:25|UCE +08::01::2022 02:29:25|DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:29:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:29|This is why he dumped you Yuki| +08::01::2022 02:29:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:30|DUCE DAVANTI E DIETRO TUTTI QUANTI| +08::01::2022 02:29:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:33|dumb idiot| +08::01::2022 02:29:33|duce duce duce duce duce duce duce | +08::01::2022 02:29:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:34|akaroni +08::01::2022 02:29:35|DUMB RETARD PEPPA| +08::01::2022 02:29:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:35|DVCE DVCE DVCE| +08::01::2022 02:29:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:36|Thanks for telling me to refresh| +08::01::2022 02:29:38|DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUC| +08::01::2022 02:29:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:29:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:39|DUCE DAVANTI E DIETRO TUTTI QUANTI| +08::01::2022 02:29:39|est +08::01::2022 02:29:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:41|ASUGA +08::01::2022 02:29:42|AKARONI +08::01::2022 02:29:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:42|pizza > macaroni| +08::01::2022 02:29:43|DUMBASS PEPPERONI| +08::01::2022 02:29:44|ASHKOI +08::01::2022 02:29:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:44|HOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHO +08::01::2022 02:29:45|akaroni +08::01::2022 02:29:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:29:46|Fuck off \I can't see| +08::01::2022 02:29:46|if it's the 105, it should cap at around 90 of RHA| +08::01::2022 02:29:47|AKARONI +08::01::2022 02:29:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:29:49|That one prostitution doujin is fucking god tier I tell you| +08::01::2022 02:29:52|SASUGA NEESAN| +08::01::2022 02:29:52|AKARONI +08::01::2022 02:29:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:29:54|MACARONI MACARONI MACARONI MACARONI MACARONI MACARONI MACARONI| +08::01::2022 02:29:54|INO +08::01::2022 02:29:55| +08::01::2022 02:29:55|our eyes met| +08::01::2022 02:29:55|NTER +08::01::2022 02:29:57| +08::01::2022 02:29:58|We're back, refresh.| +08::01::2022 02:29:58|EIA EIA ALALALA| +08::01::2022 02:29:59|ino +08::01::2022 02:29:59|>italian IQ| +08::01::2022 02:30:01| +08::01::2022 02:30:03|-kino... +08::01::2022 02:30:04| +08::01::2022 02:30:04|taka chan| +08::01::2022 02:30:07|That asshole!| +08::01::2022 02:30:07|>that asshole| +08::01::2022 02:30:09|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 02:30:09|pasanaru maku?| +08::01::2022 02:30:11|LEZZ DUAL| +08::01::2022 02:30:12|haha hippo butt| +08::01::2022 02:30:15|i recognize that butthole| +08::01::2022 02:30:16|i can't believe Oarai is dead| +08::01::2022 02:30:17|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 02:30:18|I'd knwothat ass anywhere| +08::01::2022 02:30:22|ITS THAT ASSHOLE TAKACHAN THAT MOTHERFUCKER| +08::01::2022 02:30:22|inokinokinokinokinokinokino +08::01::2022 02:30:26|V1 +08::01::2022 02:30:30|PICTURE IT! SALVATION!| +08::01::2022 02:30:30|DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! | +08::01::2022 02:30:32|loader battle loader battle| +08::01::2022 02:30:32|AY +08::01::2022 02:30:37|GAY DUEL| +08::01::2022 02:30:39|THE DEATH OF THE STREAM WAS A NECESSITY| +08::01::2022 02:30:40|tip battle| +08::01::2022 02:30:41|TANK JOUSTING| +08::01::2022 02:30:42|-wew +08::01::2022 02:30:42|SWORD FIGHT| +08::01::2022 02:30:42|my sword is bigger than yours| +08::01::2022 02:30:42|penis duel| +08::01::2022 02:30:43|Ooraibros I'm scared| +08::01::2022 02:30:43|DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! | +08::01::2022 02:30:43|THAT'S GAY MIHO| +08::01::2022 02:30:44|SWORD FIGHTING TANKS LET'S FUCKING GOOOOOOOOOO| +08::01::2022 02:30:44|self insert as STuG| +08::01::2022 02:30:45|>gunkata with tanks| +08::01::2022 02:30:46|its more like a 4x2| +08::01::2022 02:30:46|is this how they fought in WW2?| +08::01::2022 02:30:47|>touching tips| +08::01::2022 02:30:48|t-they're touching!| +08::01::2022 02:30:49|UELING +08::01::2022 02:30:50|EWD +08::01::2022 02:30:51|this is as gay as that resident evil gunkata fight| +08::01::2022 02:30:52|ummyswords +08::01::2022 02:30:52|is this what it was really like in ww2?| +08::01::2022 02:30:54|fellas is it gay if the barrels touch?| +08::01::2022 02:30:56|Can a chub really win this bros| +08::01::2022 02:30:56|Is this how lesbians have sex?| +08::01::2022 02:30:58|DUCE BROS OOARAI IS ON THE ROPES| +08::01::2022 02:31:03|DEJA VU| +08::01::2022 02:31:05| +08::01::2022 02:31:06|ATATATATATATATATA +08::01::2022 02:31:07|I love the RE gunkata fight| +08::01::2022 02:31:11|as long as the tips don't touch it's not yuri| +08::01::2022 02:31:13|LETS GO ANZIO| +08::01::2022 02:31:14|this is exactly how ww2 looked| +08::01::2022 02:31:15|oh god i can hear the bitrate. gotta do what you gotta do i guess| +08::01::2022 02:31:17|Oaroi Bros we got cocky again| +08::01::2022 02:31:18|>one goes down >another one spawns Fucking video game moment right there| +08::01::2022 02:31:29|I just love that we all know the RE gunkata fight| +08::01::2022 02:31:29|RIP hippo| +08::01::2022 02:31:31|oooo camera tricks| +08::01::2022 02:31:36|OUST +08::01::2022 02:31:36|NO THE HIPPO| +08::01::2022 02:31:36|can a semovente pen a stug?| +08::01::2022 02:31:38|GAY LESBIAN DUEL| +08::01::2022 02:31:41|es +08::01::2022 02:31:43|big dick engery| +08::01::2022 02:31:50|NGERy +08::01::2022 02:31:55|Tankette belly... | +08::01::2022 02:31:56|apart from, perhaps, the transmission housing| +08::01::2022 02:31:57|Fast as Fuck Boy| +08::01::2022 02:31:58|STRONG ANZIO GIRLS| +08::01::2022 02:32:00|TRONK +08::01::2022 02:32:01|this is just like world of tanks!| +08::01::2022 02:32:02|cute taeko| +08::01::2022 02:32:03|TRONG +08::01::2022 02:32:03|ANZIO IS STRONG| +08::01::2022 02:32:03|what is the point of the tankette| +08::01::2022 02:32:04|ITAILIANS STRONK| +08::01::2022 02:32:04|tronk +08::01::2022 02:32:04|tronk +08::01::2022 02:32:05|strong italian girls| +08::01::2022 02:32:06|PUT YOUR HEAD IN THE MICROWAVE AND GET YOURSELF A TAN| +08::01::2022 02:32:09|The Carro Veroce IS invincible| +08::01::2022 02:32:10|TRONK +08::01::2022 02:32:10|UTS +08::01::2022 02:32:11|thanks tankfags| +08::01::2022 02:32:12|UTS +08::01::2022 02:32:13|THE POWER OF PASTA| +08::01::2022 02:32:13|UTS +08::01::2022 02:32:14|ORIKO<3 +08::01::2022 02:32:14|UTS +08::01::2022 02:32:14|NEED GUTS| +08::01::2022 02:32:14|UTS +08::01::2022 02:32:14|I love these subs| +08::01::2022 02:32:14|UTS +08::01::2022 02:32:16|What's the point of italy to be honest| +08::01::2022 02:32:16|Swoll Anzio grills| +08::01::2022 02:32:16|UTS +08::01::2022 02:32:18|>the lighter the tank is, the more invincible it is| +08::01::2022 02:32:21|FIGHT ON| +08::01::2022 02:32:22|FIGHT ON| +08::01::2022 02:32:30|I am sure to win, because my speed is superiour!| +08::01::2022 02:32:30|ATSO +08::01::2022 02:32:31|LIGHT TANK META | +08::01::2022 02:32:31|eat pasta and you can flip tanks| +08::01::2022 02:32:32|sicily is the point to italy| +08::01::2022 02:32:32|UTS +08::01::2022 02:32:34|OOORE! +08::01::2022 02:32:36|You will never touch swoll anzio biceps| +08::01::2022 02:32:36|LANG +08::01::2022 02:32:37|That lean| +08::01::2022 02:32:38|GUTS GUTS GUTS GUTS GUTS GUTS| +08::01::2022 02:32:38|ATSU +08::01::2022 02:32:38|I'm dying, NORIKO PLEASE BE REAL| +08::01::2022 02:32:46|Noriko isn'| +08::01::2022 02:32:47|ANZIO BTFO| +08::01::2022 02:32:50| +08::01::2022 02:32:50|||>| +08::01::2022 02:32:51|ip +08::01::2022 02:32:51|EAD +08::01::2022 02:32:53|FLIP IT BACK OVER!| +08::01::2022 02:32:53| +08::01::2022 02:32:54|Critical Hit| +08::01::2022 02:32:56|"im sure to win due to my superior speed"| +08::01::2022 02:32:57|VCEBROS... +08::01::2022 02:32:58|fucken rekt| +08::01::2022 02:32:59|weak pointo| +08::01::2022 02:33:00|FRONT RIGHTO| +08::01::2022 02:33:01|they are all fucking dead from the trauma| +08::01::2022 02:33:03|||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>| +08::01::2022 02:33:05|the entire tankette is the weak point, dumbo| +08::01::2022 02:33:05|NONONONONO WE GOT COCKY ANIZBROS| +08::01::2022 02:33:06|DVCE CTU | +08::01::2022 02:33:06|fucking rip to anzio| +08::01::2022 02:33:07|UHHHHHH DUCEBROS?| +08::01::2022 02:33:09|Noriko will never be a woman| +08::01::2022 02:33:10|DEXfags BTFO| +08::01::2022 02:33:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:33:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:33:12|BASED BUSTY FUCK| +08::01::2022 02:33:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:12|Are you feeling now Ducebros| +08::01::2022 02:33:13|ANDATTE +08::01::2022 02:33:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:33:15|none of them are wearing seatbelts| +08::01::2022 02:33:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:33:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:16|naked +08::01::2022 02:33:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:17|NAKED DUCE| +08::01::2022 02:33:17|Naked DUCE| +08::01::2022 02:33:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:33:18|DUCE BROS....| +08::01::2022 02:33:19|>naked duce| +08::01::2022 02:33:19|NAKED DUCE| +08::01::2022 02:33:19|>Needing a weak point for tankettes| +08::01::2022 02:33:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:33:19|RESENTE +08::01::2022 02:33:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:22|NAKED DUCE| +08::01::2022 02:33:22|NAKED DUCE| +08::01::2022 02:33:23|naked duce| +08::01::2022 02:33:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:33:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:24|AKED?!?!?! +08::01::2022 02:33:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:33:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:26|OORAICISTS... MY LEGS... THEY'RE KNEELING ON THEIR OWN| +08::01::2022 02:33:27|HIRAN +08::01::2022 02:33:28|NAKED DVCE NAKED DVCE NAKED DVCE| +08::01::2022 02:33:28|naked the DUCE| +08::01::2022 02:33:29|naked Dvce...| +08::01::2022 02:33:32|tank drift| +08::01::2022 02:33:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:33:37|The jojo (toy) is supposed to be a filipino hunting weapon.| +08::01::2022 02:33:37|LAT +08::01::2022 02:33:42|Duce cunny| +08::01::2022 02:33:44|Imagine the toned bodies of Anzio girls| +08::01::2022 02:33:54|duce is ctu| +08::01::2022 02:33:54|OPERATION PROSTATE| +08::01::2022 02:33:57|ZUSA +08::01::2022 02:34:00|NAKED DVCE NAKED DVCE NAKED DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:34:01|DVCE CTU | +08::01::2022 02:34:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:34:02|ZUSA +08::01::2022 02:34:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:34:03|some are probably nice and soft from that italian diet| +08::01::2022 02:34:04|>toned, not with that diet| +08::01::2022 02:34:04|The ctuest| +08::01::2022 02:34:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:34:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:34:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:34:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:34:07|I volunteer to help repopulate the Anzio empire| +08::01::2022 02:34:10|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 02:34:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:34:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:34:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:34:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:34:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:34:19|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 02:34:22|THEY'RE LEARNING!| +08::01::2022 02:34:24|ok then anon, open up your legs| +08::01::2022 02:34:27|smart azusa| +08::01::2022 02:34:28|HIGH IQ| +08::01::2022 02:34:28|iggers +08::01::2022 02:34:29|azusa is a genius| +08::01::2022 02:34:31|smart azusu| +08::01::2022 02:34:31|nipe +08::01::2022 02:34:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:34:38|te +08::01::2022 02:34:39|azusa, your future oarai commander| +08::01::2022 02:34:41|Ducks getting smart| +08::01::2022 02:34:42|What did I miss?| +08::01::2022 02:34:43|TATA +08::01::2022 02:34:44|ugoi +08::01::2022 02:34:45|Azusa OP| +08::01::2022 02:34:48|UTE UTE| +08::01::2022 02:34:49|looks like shitty mobile game| +08::01::2022 02:34:51|ute +08::01::2022 02:34:51|New Miho| +08::01::2022 02:34:52|It was foretold| +08::01::2022 02:34:52|ZUSA! +08::01::2022 02:34:52|>STILL GOING| +08::01::2022 02:34:53|>like nishizumi| +08::01::2022 02:34:53|Is this really all just setup for df4| +08::01::2022 02:34:56|OUST +08::01::2022 02:34:56|You missed a fucking sword fight with tank cannons| +08::01::2022 02:35:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:35:05|azusa will SMASH CONTINUATION| +08::01::2022 02:35:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:35:06|LET'S GO ANZIO| +08::01::2022 02:35:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:08|DVCE | +08::01::2022 02:35:09|TRONG +08::01::2022 02:35:09|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 02:35:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:35:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:35:10|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 02:35:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:12|SEND DUCE YOUR ENERGY | +08::01::2022 02:35:12|All set up| +08::01::2022 02:35:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:35:13|TRONG! +08::01::2022 02:35:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:14|DVCE DVCE DVCE| +08::01::2022 02:35:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:35:15|Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +08::01::2022 02:35:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:15|DVCE CTU| +08::01::2022 02:35:15|ANZIOBROS THIS IS OUR MOMENT| +08::01::2022 02:35:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:18|MOMO HATE| +08::01::2022 02:35:19|SHUT UP MOMO| +08::01::2022 02:35:20|WE'RE GONNA WIN THIS ANZIO BROS!!!!| +08::01::2022 02:35:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:23|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 02:35:24|Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +08::01::2022 02:35:24|DUCE CTU!| +08::01::2022 02:35:25|DUCE DUCE DUCE DUCE DUCE DUC EDUC E| +08::01::2022 02:35:25|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 02:35:25|MOMO HATE| +08::01::2022 02:35:26|I CANT READ SHIT FUICKING STOP| +08::01::2022 02:35:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:28|>kill zone| +08::01::2022 02:35:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:35:30|HOI HOI| +08::01::2022 02:35:31|KILLZONE HAIHAIII| +08::01::2022 02:35:31|DUCE THE CTUEST| +08::01::2022 02:35:31|HAI HAI| +08::01::2022 02:35:32|OUSTING +08::01::2022 02:35:33|Can Momo do anything right?| +08::01::2022 02:35:35|I CAN FEEL IT BROS!!!| +08::01::2022 02:35:35|>still fucking going| +08::01::2022 02:35:37|ay +08::01::2022 02:35:42|DUCE DEMANDS PURPLE POSTER HEADS| +08::01::2022 02:35:43|Point blank tank duels| +08::01::2022 02:35:44|ANZIO BROS WE'RE GONNA WIN| +08::01::2022 02:35:46|Scotland exports sand to saudi arabia.| +08::01::2022 02:35:47|I bet my life savings on duce| +08::01::2022 02:35:47|DIOT +08::01::2022 02:35:48|MOMO YOU MISSED| +08::01::2022 02:35:49|honestly? fuck nips| +08::01::2022 02:35:50|Did we get a pic of that shit bottle| +08::01::2022 02:35:55|shitaly +08::01::2022 02:35:55|isan +08::01::2022 02:35:56|wieder ein sieg fur anzio!| +08::01::2022 02:35:57|ersaglieribros............. +08::01::2022 02:35:58|IP +08::01::2022 02:35:58|Those girls are dead| +08::01::2022 02:35:59|NEE SAN| +08::01::2022 02:36:00|NEE SAN| +08::01::2022 02:36:00|I FIXED MY COOKES| +08::01::2022 02:36:00|OH NONONNONONONONONONONONOONNNONONO THIS CAN'T HAPPENING!!!!| +08::01::2022 02:36:00|UTS +08::01::2022 02:36:01|EW +08::01::2022 02:36:02|jamie pull up the shit bottle real quick| +08::01::2022 02:36:03| +08::01::2022 02:36:04|Pizzabros... | +08::01::2022 02:36:04|ed +08::01::2022 02:36:06|GUN DEPRESSION | +08::01::2022 02:36:07|OOOOOOOOOOOOOOOOOOO +08::01::2022 02:36:08| +08::01::2022 02:36:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:08|IGGED +08::01::2022 02:36:10|MURDER ZONE| +08::01::2022 02:36:10|ino +08::01::2022 02:36:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:11|DVCE BROS....| +08::01::2022 02:36:11| +08::01::2022 02:36:11|ED +08::01::2022 02:36:12|Ice cold... | +08::01::2022 02:36:13|vce............... +08::01::2022 02:36:13|Pizza time is over| +08::01::2022 02:36:13|ol +08::01::2022 02:36:13|wow she is dead| +08::01::2022 02:36:14|__;7 +08::01::2022 02:36:15|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 02:36:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:17|( +08::01::2022 02:36:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:17|fucking F| +08::01::2022 02:36:18|Duce ;_;| +08::01::2022 02:36:18|STOP THE MATCH| +08::01::2022 02:36:18|orgar +08::01::2022 02:36:18|uce... +08::01::2022 02:36:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:19|H +08::01::2022 02:36:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:20|Anzio brvs... | +08::01::2022 02:36:20|>This happened in Greece| +08::01::2022 02:36:20|nziobros... +08::01::2022 02:36:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:20|DUCE IS FUCKING DEAD| +08::01::2022 02:36:21|IP +08::01::2022 02:36:21|cute duce sounds| +08::01::2022 02:36:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:22|Miho has the dark determination| +08::01::2022 02:36:22| +08::01::2022 02:36:23|OOOOOOOOO +08::01::2022 02:36:23|I hate all these newfag meme posters| +08::01::2022 02:36:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:24| +08::01::2022 02:36:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:25|i can't believe our girl is fucking dead| +08::01::2022 02:36:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:26|duce is okay right?| +08::01::2022 02:36:26|o7 DUce| +08::01::2022 02:36:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:27|AY' ANCHOVE| +08::01::2022 02:36:27|RIP DUCE| +08::01::2022 02:36:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:29|I DEAMND A RECOUNT| +08::01::2022 02:36:29|DVCE Bros ;___;7| +08::01::2022 02:36:29|MY POOR DUCE!| +08::01::2022 02:36:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:30|deja vu| +08::01::2022 02:36:30|DUCE BROS TOT| +08::01::2022 02:36:31|I CANT READ SHIT FUICKING STOP| +08::01::2022 02:36:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:33|OORAI CHADS WE WIN AGAIN| +08::01::2022 02:36:34|they can't keep getting away with this| +08::01::2022 02:36:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:35|7 +08::01::2022 02:36:35|I've seen this too many times to count but I thought this time duce would win for sure| +08::01::2022 02:36:36|HOW COULD THIS HAPPEN| +08::01::2022 02:36:36|fuck off| +08::01::2022 02:36:36|Dead DUCE| +08::01::2022 02:36:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:38|ucebros.... +08::01::2022 02:36:39|Damn those are some seriously carbon coated grills| +08::01::2022 02:36:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:40|next time without germany| +08::01::2022 02:36:40|estofour +08::01::2022 02:36:40|DUCE BROS IT WAS OUR YEAR| +08::01::2022 02:36:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:42|HERE'S HOW DUCE CAN STILL WIN | +08::01::2022 02:36:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:43|Armored Go-Kart bros...| +08::01::2022 02:36:44|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 02:36:44|dvcebros we got too cocky!!| +08::01::2022 02:36:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:44|AND NOW PASTA| +08::01::2022 02:36:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:45|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 02:36:46|SSPULL +08::01::2022 02:36:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:47|Duce was really close this time bros| +08::01::2022 02:36:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:48|GRACIOUS DUCE| +08::01::2022 02:36:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:49|HERES HOW| +08::01::2022 02:36:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:49|UCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +08::01::2022 02:36:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:50|EW +08::01::2022 02:36:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:51|DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +08::01::2022 02:36:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:55|ay +08::01::2022 02:36:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:36:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:36:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:36:59|Are their bones Carbon Coated| +08::01::2022 02:36:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:59|IWTWM +08::01::2022 02:36:59|OOOOOOO +08::01::2022 02:36:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:36:59|AI +08::01::2022 02:36:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:36:59|i want to marry duce| +08::01::2022 02:37:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:00|:: +08::01::2022 02:37:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:00|It was supposed to be DVCE's year ;_;| +08::01::2022 02:37:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:37:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:02|go she's so perfect| +08::01::2022 02:37:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +08::01::2022 02:37:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:37:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:37:07|:: +08::01::2022 02:37:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:07|DAMN I'M HUNGRY FOR PIZZA| +08::01::2022 02:37:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:08|PASTA TIME| +08::01::2022 02:37:08| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:37:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:37:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:10|:: +08::01::2022 02:37:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:11|DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +08::01::2022 02:37:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:14|PARTY TIME| +08::01::2022 02:37:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:15|Carbon coated butts!| +08::01::2022 02:37:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:16|Pizza Time| +08::01::2022 02:37:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:19|party time| +08::01::2022 02:37:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:20|PIZZA TIME| +08::01::2022 02:37:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:21| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:37:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:23|exually? +08::01::2022 02:37:24|PASTA TIME| +08::01::2022 02:37:24|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:37:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:24|PASTA TIME| +08::01::2022 02:37:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:25|PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME | +08::01::2022 02:37:26|TADAKIMASU! +08::01::2022 02:37:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:37:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:28|How are they not fat as fuck?| +08::01::2022 02:37:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:37:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:29|UNICULAAAAAAAAAAAAAAAA +08::01::2022 02:37:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:30|PIZZA TIMEMM| +08::01::2022 02:37:31|PIZZA TIME!| +08::01::2022 02:37:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:31|ARCHITECT ACADEMY| +08::01::2022 02:37:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:32|FUNICULI FUNICULA| +08::01::2022 02:37:33|PIZZA PASTA| +08::01::2022 02:37:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:33|UNICULI +08::01::2022 02:37:33|PIZZA LOGISTICS| +08::01::2022 02:37:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:34|PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD| +08::01::2022 02:37:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:36|NCOPPA JAMME JA| +08::01::2022 02:37:37|PIZZA TIME| +08::01::2022 02:37:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:39|PARTY HARD| +08::01::2022 02:37:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:40|FUNICULI FUNICULA| +08::01::2022 02:37:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:40|FAT GIRLS| +08::01::2022 02:37:41|god italian food is so good| +08::01::2022 02:37:41|PIZZA TIME| +08::01::2022 02:37:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:42|FUNICULI FUNICULA| +08::01::2022 02:37:43|DUCE STINKY FAT CARB LOAD| +08::01::2022 02:37:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:44| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:37:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:46|Tortalini on the Wals| +08::01::2022 02:37:46|ON MY BALLS| +08::01::2022 02:37:47|EAT A DUCK HE MUST| +08::01::2022 02:37:48|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 02:37:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:49|CARBON COATED PIZZA| +08::01::2022 02:37:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:50|PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HA| +08::01::2022 02:37:50|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 02:37:50|anzio is so damn comfy| +08::01::2022 02:37:51|RUB A DUB DUB| +08::01::2022 02:37:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:51|This is why Anzio is poor| +08::01::2022 02:37:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:37:52|THANKS FOR THE GRUB| +08::01::2022 02:37:52|if only their fightiing was good as their food| +08::01::2022 02:37:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:53|Italian food sucks ass| +08::01::2022 02:37:54|EAT A DUCK HE MUST| +08::01::2022 02:37:54|Can I have some?| +08::01::2022 02:37:55|through the dark lord, amen| +08::01::2022 02:37:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:55|yukari no!| +08::01::2022 02:37:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:56|ZUSA +08::01::2022 02:37:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:56|FUNICULLI FUNICILLA| +08::01::2022 02:37:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:57|Cheesy on peenie| +08::01::2022 02:37:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:37:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:37:59|Rub a dub dub| +08::01::2022 02:38:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:38:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:02|im hungry now bros| +08::01::2022 02:38:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:03|im hungy....| +08::01::2022 02:38:04|PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME | +08::01::2022 02:38:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:38:05| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:38:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:38:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:06|AHAHAHA +08::01::2022 02:38:06|WHEN THE MOON HITS YOUR EYE LIKE A BIG PIZZA PIE| +08::01::2022 02:38:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:38:06|RUB A DUB DUB| +08::01::2022 02:38:08|ute +08::01::2022 02:38:09|FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! | +08::01::2022 02:38:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:10|IF I FLIP THESE TANKS MR AZIZ WILL FLIP OUT| +08::01::2022 02:38:10|CUTE DUCE| +08::01::2022 02:38:10|I'M SO FUCKING HUNGRY| +08::01::2022 02:38:11|GAY MOMENT| +08::01::2022 02:38:11|YAME YAME JA FUNICULLI _FUNICULLA| +08::01::2022 02:38:13|my wife yukari is eating for two!| +08::01::2022 02:38:14|BRBR PIZZA BREAK| +08::01::2022 02:38:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 02:38:14|ute +08::01::2022 02:38:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:16|PIZZA PASTA PUT IT IN A BOX| +08::01::2022 02:38:16|AY +08::01::2022 02:38:17| 🍝🍕🍝🍕🍝🍕🍝🍕🍝 +08::01::2022 02:38:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 02:38:22|italian food > nip food any day of the week| +08::01::2022 02:38:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:24| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 02:38:25|GAY GAY GAY GAY GAY| +08::01::2022 02:38:26|ute +08::01::2022 02:38:28|Anzio best sports | +08::01::2022 02:38:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 02:38:31|Erwin is cute| +08::01::2022 02:38:31|jej GAYYYYYYYYYYYYYYYYYYYY| +08::01::2022 02:38:32|I want them them to have a strength contest| +08::01::2022 02:38:34|RIKA>DUCE +08::01::2022 02:38:36|iss +08::01::2022 02:38:39|>he's never ate pizza sushi| +08::01::2022 02:38:39|gay handshake| +08::01::2022 02:38:40|AESAR +08::01::2022 02:38:42|TAKA CHAN| +08::01::2022 02:38:42|isowned +08::01::2022 02:38:43|AESAR +08::01::2022 02:38:43|AISER +08::01::2022 02:38:44|AESAR +08::01::2022 02:38:44|ringe +08::01::2022 02:38:44|:: +08::01::2022 02:38:45|HAIL CAESAR o::| +08::01::2022 02:38:45|UTISM +08::01::2022 02:38:46|AISA +08::01::2022 02:38:47|WATASHI WA CAESAR| +08::01::2022 02:38:47|had +08::01::2022 02:38:48|AVE CAESAR| +08::01::2022 02:38:49|ayyy lmao look at caesar's head| +08::01::2022 02:38:49|AISER +08::01::2022 02:38:50|god damned larper| +08::01::2022 02:38:50|MEIN KAISER| +08::01::2022 02:38:50|It's apromise totally| +08::01::2022 02:38:50|huunibyou +08::01::2022 02:38:50|ARPACCIO +08::01::2022 02:38:50|AVE CEASAR! | +08::01::2022 02:38:52|KAISAR, my wife| +08::01::2022 02:38:54|NO CEASAR DON'T GO TO THE SENATE| +08::01::2022 02:38:54|Is that right lmao larper| +08::01::2022 02:38:54|HEIL CAESAR | +08::01::2022 02:38:55|HIIIIIIIIIIZAAAAAAAAAA!!!!!!!!! +08::01::2022 02:38:56|>name drop| +08::01::2022 02:38:56|VE +08::01::2022 02:38:57|CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO | +08::01::2022 02:38:59|UTE +08::01::2022 02:39:00|MARK MY WORDS YOU PIECE OF SHIT| +08::01::2022 02:39:02|ayyyy lmao| +08::01::2022 02:39:03|RAVDA +08::01::2022 02:39:03|ENTA ENTA MISSION| +08::01::2022 02:39:04|ASPACCIO? +08::01::2022 02:39:04|HAIL CEASAR| +08::01::2022 02:39:05|Sexy Cappachio| +08::01::2022 02:39:05|AISAR +08::01::2022 02:39:06|How do two girls have sex in a tank?| +08::01::2022 02:39:06|CHEESI ON MY PEENI AND SOME SAUÇA ON MY BALLS| +08::01::2022 02:39:07|GREMLIN BROS| +08::01::2022 02:39:08|BIG NONNA TITS| +08::01::2022 02:39:08|meanwhile, back at the plot...| +08::01::2022 02:39:09|mol +08::01::2022 02:39:10|ENTER BEST GIRL| +08::01::2022 02:39:10|TALIN +08::01::2022 02:39:10|TIME FOR UOOOOOOOOOOOOOOOOOOOOOOH| +08::01::2022 02:39:10|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:39:11|DUMB MIDGET| +08::01::2022 02:39:11|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:39:12|ES +08::01::2022 02:39:12|idekatyusha.mp4 +08::01::2022 02:39:13|RAAAAAAAA +08::01::2022 02:39:13| +08::01::2022 02:39:13|RAVDA +08::01::2022 02:39:14|REMLIM +08::01::2022 02:39:14|HAH TIME FOR TETRIS| +08::01::2022 02:39:15|NONNA SAMA| +08::01::2022 02:39:15|YOU MEAN SEESIR!!!111| +08::01::2022 02:39:16|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 02:39:16|A FUCKING RAMP| +08::01::2022 02:39:16|YO LOOK AT THIS MIDGET| +08::01::2022 02:39:16| +08::01::2022 02:39:16|OOOOOOOOOOOOOOOOOH +08::01::2022 02:39:16|>136 cm| +08::01::2022 02:39:16|WOOOOOO GREMLIN| +08::01::2022 02:39:17|HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME | +08::01::2022 02:39:18|ute&funny +08::01::2022 02:39:18|OMMIES +08::01::2022 02:39:20| +08::01::2022 02:39:20|onna.... +08::01::2022 02:39:20|Have you heard this saying?| +08::01::2022 02:39:21|magine +08::01::2022 02:39:21|OMMIE +08::01::2022 02:39:21|RITBONGS +08::01::2022 02:39:22|BEST GIRL| +08::01::2022 02:39:23|UMIPE +08::01::2022 02:39:25|DUMB MIDGET AND DUMB SLAG| +08::01::2022 02:39:25|CUNNY CUNNY CUNNY CUNNY CUNNY CUNNY| +08::01::2022 02:39:25|18 years old btw| +08::01::2022 02:39:25|COMMUNISM YES| +08::01::2022 02:39:27|OT +08::01::2022 02:39:29|HIGH IQ| +08::01::2022 02:39:29|hey this isnt on the ost| +08::01::2022 02:39:29| +08::01::2022 02:39:32|the yusha.gif| +08::01::2022 02:39:32|based soundtrack| +08::01::2022 02:39:32|i dont care saga of pravda is canon in my mind| +08::01::2022 02:39:32|BUILT FOR DIRLEWANGER COCK| +08::01::2022 02:39:32|ute +08::01::2022 02:39:33|REMLIN +08::01::2022 02:39:33|JAM IN TEA WHAT THE FUCK| +08::01::2022 02:39:33|essy +08::01::2022 02:39:34|MAGINE +08::01::2022 02:39:34|have you heard this s---SHUT THE FUCK UP| +08::01::2022 02:39:35| +08::01::2022 02:39:35|DUM BMIDGET| +08::01::2022 02:39:35|Jam in Tea Shame | +08::01::2022 02:39:37|DON'T TELL ME WAHT TO DO NONNA| +08::01::2022 02:39:37|IMAGINE HOW FUN IT WOULD BE| +08::01::2022 02:39:39|COMMIE CUNNY| +08::01::2022 02:39:40| +08::01::2022 02:39:42|Yankee comes from dutch "janke", which means small jan.| +08::01::2022 02:39:43|cheeki breeki iv damke| +08::01::2022 02:39:43|du russians actually do this?| +08::01::2022 02:39:45|Brits shown their place| +08::01::2022 02:39:47|MY COCK WHEN SHE SPEAKS RUSSIAN UHOOOOOOOOOOOOO| +08::01::2022 02:39:49|Smug brat| +08::01::2022 02:39:51|>127 cm| +08::01::2022 02:39:55|>communist "food"| +08::01::2022 02:39:55|dumb midget| +08::01::2022 02:39:57|magine +08::01::2022 02:39:57|MAGINE +08::01::2022 02:39:59|dumbo Katyusha| +08::01::2022 02:40:01|MAGINE +08::01::2022 02:40:03|Katyusha is so small because she got nothing to eat| +08::01::2022 02:40:04|>tfw nonna is 1 cm taller than me| +08::01::2022 02:40:06|magine.. +08::01::2022 02:40:08|Why are Russians always evil?| +08::01::2022 02:40:12|>tfw no katyusha gf| +08::01::2022 02:40:15|small nonna| +08::01::2022 02:40:16|I WANT TO BE THAT CHAIR| +08::01::2022 02:40:17|massive nonna tits| +08::01::2022 02:40:17|desu wa| +08::01::2022 02:40:20|needs spanking correction| +08::01::2022 02:40:20|imagine being shorter than any of the guppies| +08::01::2022 02:40:22|HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +08::01::2022 02:40:23|russians are the good guys of history| +08::01::2022 02:40:23|russians are evil irl too| +08::01::2022 02:40:23|YFW Katusha is to small to be my cock sleeve| +08::01::2022 02:40:26|BEADY EYES, ANGLO LIES| +08::01::2022 02:40:30|L O N D O N| +08::01::2022 02:40:31|are they?| +08::01::2022 02:40:31|LOONNNNNGGGG +08::01::2022 02:40:33|HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +08::01::2022 02:40:36|F2 boi| +08::01::2022 02:40:36|Nonna is taller than the average American male| +08::01::2022 02:40:36|It is impossible to sneeze with open eyes.| +08::01::2022 02:40:36|SUCHIYA +08::01::2022 02:40:37|HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? v| +08::01::2022 02:40:39|HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? vv| +08::01::2022 02:40:40|EAAAAH +08::01::2022 02:40:43|EOPON +08::01::2022 02:40:45|HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +08::01::2022 02:40:45|Lepon gang| +08::01::2022 02:40:46|same BR as G btw| +08::01::2022 02:40:47|'7'' +08::01::2022 02:40:47|Auto club real MVPs| +08::01::2022 02:40:48|NTER +08::01::2022 02:40:51|This is just real representation of history where everyone else but the Finns is evil| +08::01::2022 02:40:52|FUCK YEAH LEOPON BEST TEAM| +08::01::2022 02:40:52|ALLARDS +08::01::2022 02:40:53|ODOKO +08::01::2022 02:40:53|LONES +08::01::2022 02:40:54|THE CLONE WARS| +08::01::2022 02:40:54|naholes +08::01::2022 02:40:54|odoko +08::01::2022 02:40:54|NTER +08::01::2022 02:40:54|HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +08::01::2022 02:40:55|ODOCLONES +08::01::2022 02:40:56|NTER +08::01::2022 02:40:57|odoks +08::01::2022 02:40:57|elemts! +08::01::2022 02:40:58|WOST GRILLS| +08::01::2022 02:40:59|LEOPON BEST TEAM| +08::01::2022 02:40:59|ODOKO +08::01::2022 02:41:01|SODOKO BTFO| +08::01::2022 02:41:03|ODOKO +08::01::2022 02:41:03|PUBLIC IMMORALITY COMMITTEE| +08::01::2022 02:41:03|ODOKO +08::01::2022 02:41:04|SODOKO LOVE| +08::01::2022 02:41:04|LEOPON BEST TEAM| +08::01::2022 02:41:06|Finns aren't human, so they don't count| +08::01::2022 02:41:09|OH NO NO NO NO LOOK AT THAT HAIR| +08::01::2022 02:41:10|shorten +08::01::2022 02:41:10|UTE +08::01::2022 02:41:11|sodoko and the onaholes| +08::01::2022 02:41:14|FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS| +08::01::2022 02:41:17|Finns are superhuman| +08::01::2022 02:41:17|it doesn't look like a mallard miho| +08::01::2022 02:41:18|no it douesnt| +08::01::2022 02:41:19|acts +08::01::2022 02:41:19|allard +08::01::2022 02:41:22|sexually) +08::01::2022 02:41:23|RTFM +08::01::2022 02:41:24|DUCKS ARE THE SUPREME CHAMPIONS| +08::01::2022 02:41:24|TFM +08::01::2022 02:41:27|HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +08::01::2022 02:41:29|>reading the manual| +08::01::2022 02:41:30|Finns are dying everyday| +08::01::2022 02:41:30|HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +08::01::2022 02:41:34|wnd +08::01::2022 02:41:35|AAAAAAI +08::01::2022 02:41:37|SHUT UP MMO| +08::01::2022 02:41:38|aaaaaaaaaaa. +08::01::2022 02:41:38|aaaaaaaaaaai +08::01::2022 02:41:39|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai +08::01::2022 02:41:39|aaaaaaaaaiiiiiiiiiiiiiiii +08::01::2022 02:41:40|AAAAAAAAAAAAAI +08::01::2022 02:41:42|aaaiiiiii +08::01::2022 02:41:42|SHUT UP MOMO| +08::01::2022 02:41:42|aaaaaaaaaaaaai +08::01::2022 02:41:43|CUTE CUTE CUTE| +08::01::2022 02:41:45|momo +08::01::2022 02:41:48|>Finna are dying everyday - not fast enough| +08::01::2022 02:41:48|we just do okay??| +08::01::2022 02:41:50|MOMO HATE| +08::01::2022 02:41:50|momo no one cares| +08::01::2022 02:41:52|oreshadowing +08::01::2022 02:41:53|Anons I'm getting drunk...| +08::01::2022 02:41:55|time for PLOT!| +08::01::2022 02:41:56|subtle +08::01::2022 02:41:57|based lazy bunnies| +08::01::2022 02:41:59|momo +08::01::2022 02:42:00|DAME DA| +08::01::2022 02:42:00|Finns have the superior mongol steppe genepool| +08::01::2022 02:42:01|CHILL OUT MOMO| +08::01::2022 02:42:03|OMO +08::01::2022 02:42:04|RAMA +08::01::2022 02:42:04|.. +08::01::2022 02:42:04|The bible does not mention any cats.| +08::01::2022 02:42:04|Momo +08::01::2022 02:42:04|fucking momo| +08::01::2022 02:42:06|MOMO ruining the moment again| +08::01::2022 02:42:06|O +08::01::2022 02:42:08|shut up momo| +08::01::2022 02:42:09|Next year, r-right?| +08::01::2022 02:42:10|why are you even here momo| +08::01::2022 02:42:11|omobros.... +08::01::2022 02:42:14|0 +08::01::2022 02:42:14|;0 momo | +08::01::2022 02:42:17|i am going to MURDER momo| +08::01::2022 02:42:17|P L O T| +08::01::2022 02:42:23|the plot is a bit retarded desu| +08::01::2022 02:42:27|lat +08::01::2022 02:42:28|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 02:42:34|CHICKEN KATSU| +08::01::2022 02:42:34|Your face is a bit retarded desu| +08::01::2022 02:42:45|hot pot| +08::01::2022 02:42:45|omfy +08::01::2022 02:42:45|Anon wtf....| +08::01::2022 02:42:45|imagine a guppie in one of those robes and nothing else| +08::01::2022 02:42:46|that food looks good| +08::01::2022 02:42:47|ANNIBALISM +08::01::2022 02:42:51|anzu's manko| +08::01::2022 02:42:51|perfect wife| +08::01::2022 02:42:51|an an an an| +08::01::2022 02:42:52|nglerfish1 +08::01::2022 02:42:52|break the pasta| +08::01::2022 02:42:53|ANKOU NABE| +08::01::2022 02:42:56|is anglerfish tasty?| +08::01::2022 02:42:56|OMFY +08::01::2022 02:42:56|ek +08::01::2022 02:42:57|it only goes retarded levels in der film when they reuse this exact plot| +08::01::2022 02:43:00|i want to muder and eat anzu| +08::01::2022 02:43:02|Not at all| +08::01::2022 02:43:05|I want Anzu's nabe as well| +08::01::2022 02:43:06|its oishii| +08::01::2022 02:43:08|You are watching this under your kotatsu, right?| +08::01::2022 02:43:11|i want anzu to murder and eat me| +08::01::2022 02:43:11|does the supercut include the anglerfish dance ova?| +08::01::2022 02:43:11|Anzu wants to eat the anglerfish. This confirms it!| +08::01::2022 02:43:15|Anzus belly uoooooohhhh| +08::01::2022 02:43:15|anzu overrated| +08::01::2022 02:43:16|Miho is ruthless| +08::01::2022 02:43:17|Anzu Hotpot| +08::01::2022 02:43:20|ANKIMO UMAI| +08::01::2022 02:43:21|cool momo jacket| +08::01::2022 02:43:23|I should buy a kotatsu| +08::01::2022 02:43:23|shut down| +08::01::2022 02:43:24|BASED MIHO| +08::01::2022 02:43:25|>I don't care lol| +08::01::2022 02:43:29|i'm sitting under theirs| +08::01::2022 02:43:29|UTE +08::01::2022 02:43:29|CUTE MOMO| +08::01::2022 02:43:30|CUTE ANZU | +08::01::2022 02:43:32|OOBA +08::01::2022 02:43:35|OOBS +08::01::2022 02:43:36|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +08::01::2022 02:43:36|ANOTHER CUTE ANZU| +08::01::2022 02:43:36|MOMO DORK| +08::01::2022 02:43:38|OOOOOOG +08::01::2022 02:43:38|big yuzu boobs| +08::01::2022 02:43:39|OHHHHHHHHH +08::01::2022 02:43:40|YUZU'S FAT TITS| +08::01::2022 02:43:40|ooba +08::01::2022 02:43:41|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 02:43:43|Am I supposed to feel bad now?| +08::01::2022 02:43:43|stfu momo| +08::01::2022 02:43:44|RYONA TIME| +08::01::2022 02:43:45|I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +08::01::2022 02:43:47| +ANOSHI| +08::01::2022 02:43:48|_; +08::01::2022 02:43:49|See, Anzu could kick my ass!| +08::01::2022 02:43:50|V V| +08::01::2022 02:43:50|momo death| +08::01::2022 02:43:51|momo +08::01::2022 02:43:51|What exactly is Momo good for?| +08::01::2022 02:43:52|adge +08::01::2022 02:43:53| +ANOSHI| +08::01::2022 02:43:55|I HATE MOMO I LOVE MOMO'S MOMOS I HATE MOMO I LOVE MOMO'S MOMOS I HATE MOMO I LOVE MOMO'S MOMOS | +08::01::2022 02:43:55|I don't think about Momo at all!| +08::01::2022 02:43:56|egs +08::01::2022 02:43:57|miho noises| +08::01::2022 02:43:57|ABSOLUTELY NOTHING| +08::01::2022 02:43:57|the good ol' days ;_;| +08::01::2022 02:43:59|OWARD! +08::01::2022 02:44:00|raising siblings| +08::01::2022 02:44:01|fanta na| +08::01::2022 02:44:02|hottu pottu| +08::01::2022 02:44:03|Fun and Momo HAHAHA| +08::01::2022 02:44:04|yuki da| +08::01::2022 02:44:05|momo is good for domestic violence| +08::01::2022 02:44:08|momo has no real personality| +08::01::2022 02:44:09|Aight i'mma head of to pee can't deal with this shit| +08::01::2022 02:44:11|ryona with momo| +08::01::2022 02:44:12|Sergio Leone and Enio Morricone went to the same school.| +08::01::2022 02:44:12|They didn't tell her shit| +08::01::2022 02:44:21|you're the one suffering the domestic violence| +08::01::2022 02:44:22|EWS +08::01::2022 02:44:25|not that plot again| +08::01::2022 02:44:26|momo on scream piss time| +08::01::2022 02:44:29|YOU ALREADY PUT A BURDEN ON HER| +08::01::2022 02:44:29|here? +08::01::2022 02:44:29|CUTE MOMO| +08::01::2022 02:44:30|MUD WRSTLING!| +08::01::2022 02:44:33|I AM the domestic violence| +08::01::2022 02:44:35|ryona with momo| +08::01::2022 02:44:37|this first ep is taking really long| +08::01::2022 02:44:38|;_; Mextfag won| +08::01::2022 02:44:38|momo used to be cute| +08::01::2022 02:44:38|Anzu's mud| +08::01::2022 02:44:39|BITCH SHIHO| +08::01::2022 02:44:40|ommy! +08::01::2022 02:44:41|HITHO +08::01::2022 02:44:43|AHO +08::01::2022 02:44:45|maho is my wife| +08::01::2022 02:44:46|my wife maho| +08::01::2022 02:44:47|Maho, you must kill her| +08::01::2022 02:44:47|AHOOOOO +08::01::2022 02:44:47|SHIT MOM| +08::01::2022 02:44:50|piss break is when momo shows up again| +08::01::2022 02:44:51|oh great, they're dead| +08::01::2022 02:44:52|ISHONORABRUR +08::01::2022 02:44:52|why are moms so quick to disown their daughters| +08::01::2022 02:44:53|Spanking Momo! Slapping Momo! Punching Momo! Pissing on Momo!| +08::01::2022 02:44:54|haha katyusha looks like a penis| +08::01::2022 02:44:55|Shame on Family| +08::01::2022 02:44:55|my wife| +08::01::2022 02:44:55|FUCK YOU MOM| +08::01::2022 02:44:56|FUCK THIS DAUGTER OF MINE| +08::01::2022 02:44:58|ISHONORABLE +08::01::2022 02:45:00|SHIT MUM| +08::01::2022 02:45:01|the worst mother in all of senshado| +08::01::2022 02:45:03|DEATH TO SHIHO| +08::01::2022 02:45:03|GO FUCK AN UGLY BASTARD YOU HAG| +08::01::2022 02:45:04|Sad Maho| +08::01::2022 02:45:09|name a worse mum| +08::01::2022 02:45:10|be more like yukari-mom. don't disown your kids| +08::01::2022 02:45:11|SHAMERFUR DISPRAY| +08::01::2022 02:45:12|Cute Maho| +08::01::2022 02:45:15|just push forward| +08::01::2022 02:45:15|HAG LOVE| +08::01::2022 02:45:17|mating press the mother NOW| +08::01::2022 02:45:18|AD VAN CING!| +08::01::2022 02:45:19|FUCK BITCH| +08::01::2022 02:45:19|>Just push forward| +08::01::2022 02:45:20|HOW DID SUCH A CRAPPY WOMAN GIVE BIRTH TO TWO ANGELS| +08::01::2022 02:45:22|FUCK SHIHO| +08::01::2022 02:45:23|what zero dick does to a bitch| +08::01::2022 02:45:24|BOKO PANTSU| +08::01::2022 02:45:25|DISINHERITENCE | +08::01::2022 02:45:26|and suddenly, a panty shot| +08::01::2022 02:45:26|ANTSU +08::01::2022 02:45:26|ANTSU +08::01::2022 02:45:26|antsu +08::01::2022 02:45:27|warm pantsu| +08::01::2022 02:45:27|ZUSA +08::01::2022 02:45:27|>piss break >not just carrying the laptop to the toilet| +08::01::2022 02:45:29|I WANT TO BE THOSE PANTIES| +08::01::2022 02:45:29|UUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHH PANTY| +08::01::2022 02:45:31|>no heating| +08::01::2022 02:45:31|>lip balm| +08::01::2022 02:45:34|>miho is left to die in a cold street if she doesn't win this tournament| +08::01::2022 02:45:36|girls und pantsu...........| +08::01::2022 02:45:37|bring soup| +08::01::2022 02:45:38|sex with usagi...| +08::01::2022 02:45:38|Boko bear pantus!!!!| +08::01::2022 02:45:39|>shiho will never disown you| +08::01::2022 02:45:41|>watching on a laptop| +08::01::2022 02:45:42|LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA | +08::01::2022 02:45:46|>no fun allowed| +08::01::2022 02:45:48|>putting your poop bacteria on your laptop| +08::01::2022 02:45:49|ASED +08::01::2022 02:45:50|where are the males chiyo???| +08::01::2022 02:45:52|bear panties| +08::01::2022 02:45:52|watching on a laptop is peak comfy| +08::01::2022 02:45:52|ASED +08::01::2022 02:45:53|fun police| +08::01::2022 02:45:53|eeeee +08::01::2022 02:45:53|ASED +08::01::2022 02:45:54|I AN'T GONNA LIVE FOREVER| +08::01::2022 02:45:56|well said| +08::01::2022 02:45:57|based ::his::| +08::01::2022 02:45:57|ASED +08::01::2022 02:45:57|Sodoko fuck off| +08::01::2022 02:45:57|ASED +08::01::2022 02:45:58|I AINT GONNA LIVE FOREVER| +08::01::2022 02:46:00|LOVE TAEKO| +08::01::2022 02:46:00|I AINT GONNA LIVE FOREVER| +08::01::2022 02:46:02|>current year ::a:: mods| +08::01::2022 02:46:02|Erwin wins| +08::01::2022 02:46:04|Erwin... | +08::01::2022 02:46:06|( +08::01::2022 02:46:07|TAEKO LOVE| +08::01::2022 02:46:15|yuki da| +08::01::2022 02:46:16|OKO +08::01::2022 02:46:21|Mods are this cute?| +08::01::2022 02:46:21|S-2 +08::01::2022 02:46:22|job of the century| +08::01::2022 02:46:23|BELAYA ARMIYA CHYORNIY BARON| +08::01::2022 02:46:26|How much does Sodoko get paid for all that janny work I wonder| +08::01::2022 02:46:28|gay ass tsu| +08::01::2022 02:46:28|okofags +08::01::2022 02:46:30|boko jar| +08::01::2022 02:46:30|oko +08::01::2022 02:46:30|OTSUGEKIII +08::01::2022 02:46:30|Js 2 or Is 2 Which one Bros?| +08::01::2022 02:46:32|literally unplayable| +08::01::2022 02:46:32|I thought they were only allowed 10 tanks max?| +08::01::2022 02:46:33|HELP ME BOKO| +08::01::2022 02:46:34|>she does it for free| +08::01::2022 02:46:35|uooooh JS| +08::01::2022 02:46:37|she does it for free| +08::01::2022 02:46:39|Will I turn into a guppy if I become a mod?| +08::01::2022 02:46:41|>a fucking ramp| +08::01::2022 02:46:44| Jack the ripper was left handed.| +08::01::2022 02:46:45|3rd match can field 15 I think?| +08::01::2022 02:46:46|es +08::01::2022 02:46:46|KV-2 Loev| +08::01::2022 02:46:47|A FUCKING RAMP| +08::01::2022 02:46:48|A FUCKING RAMP| +08::01::2022 02:46:50|skirts +08::01::2022 02:46:51|AMUI +08::01::2022 02:46:51|>cope slope| +08::01::2022 02:46:52|it's an aviation cruiser, it's okay!| +08::01::2022 02:46:52|A. FUCKING. RAMP| +08::01::2022 02:46:53|interketten +08::01::2022 02:46:55|10 tanks for only the first few rounds right| +08::01::2022 02:46:55|ramp +08::01::2022 02:46:56|INTERKETTEN +08::01::2022 02:47:00|uhhh the antifreeze?| +08::01::2022 02:47:02|no, you'll just be a faggot that does it for no monetary compensation whatsoever| +08::01::2022 02:47:04|RAMP +08::01::2022 02:47:05|accurate german winter uniforms| +08::01::2022 02:47:08|based mako| +08::01::2022 02:47:09|there is nothing wrong with having a ramp.| +08::01::2022 02:47:09|S O D O K O| +08::01::2022 02:47:11|ODOKO +08::01::2022 02:47:14|Over by Christmas r-right?| +08::01::2022 02:47:15|SO DO KO| +08::01::2022 02:47:16|rape sodoko| +08::01::2022 02:47:16|killer fashion| +08::01::2022 02:47:17|rampfag cope| +08::01::2022 02:47:17|rabbit figtht| +08::01::2022 02:47:17|AZUSA HAVING A SNOWBALL FIGHT| +08::01::2022 02:47:18|its 1941 all over again... | +08::01::2022 02:47:19|ASED +08::01::2022 02:47:22|based ::his::| +08::01::2022 02:47:23|NTER +08::01::2022 02:47:23|ATYUSHA +08::01::2022 02:47:24|heheh +08::01::2022 02:47:25| smol| +08::01::2022 02:47:25|YUKI NO SHINGUN| +08::01::2022 02:47:26|NTER +08::01::2022 02:47:26|ATYUSHA +08::01::2022 02:47:26|RED BLOOD OVER PARADISE!| +08::01::2022 02:47:26|THE YUSHA| +08::01::2022 02:47:27|>nothing wrong with having a ramp. t. Euro| +08::01::2022 02:47:27|NTER +08::01::2022 02:47:27|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 02:47:27|IDE +08::01::2022 02:47:28|Sodoko died at this point in the doujin| +08::01::2022 02:47:28|WIDE +08::01::2022 02:47:28|NTER +08::01::2022 02:47:29|nter +08::01::2022 02:47:29|KATYUSHA WALK| +08::01::2022 02:47:29|ATYUSHA +08::01::2022 02:47:30|idekatyusha.mp4 +08::01::2022 02:47:30|NTER +08::01::2022 02:47:30|ENTER THE YUSHA| +08::01::2022 02:47:32|SO SMOL| +08::01::2022 02:47:32|NTER +08::01::2022 02:47:32|IDE +08::01::2022 02:47:34|WIDE TUSHA| +08::01::2022 02:47:34|IDE +08::01::2022 02:47:34|KATYUSHA SAMA| +08::01::2022 02:47:34|Undiluted anti freeze, freezes at 10,4 °F (-12 °C).| +08::01::2022 02:47:34|mol +08::01::2022 02:47:35|KATYUSHA! KATYUSHA!| +08::01::2022 02:47:35|IDE +08::01::2022 02:47:36|IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIDE +08::01::2022 02:47:36|NTER +08::01::2022 02:47:36|ide +08::01::2022 02:47:37|IDE +08::01::2022 02:47:37|WIDE KATYUSHA | +08::01::2022 02:47:37|idetyusha +08::01::2022 02:47:37|Красная Армия всех сильней.| +08::01::2022 02:47:37|IDE +08::01::2022 02:47:38|IDE +08::01::2022 02:47:38|UTE +08::01::2022 02:47:39|IDEKATYUSHA +08::01::2022 02:47:40|LOLI RAGE| +08::01::2022 02:47:40|IDE +08::01::2022 02:47:40|Yuki no Shingun!| +08::01::2022 02:47:41|IFUBUKI +08::01::2022 02:47:41|IDE +08::01::2022 02:47:42|NONNA'S NONNAS| +08::01::2022 02:47:42|IDE +08::01::2022 02:47:42|nutcrackers inbound| +08::01::2022 02:47:42|OST +08::01::2022 02:47:43|WIDE CUNNY| +08::01::2022 02:47:43|>127 cm| +08::01::2022 02:47:44|W I D E| +08::01::2022 02:47:44|SONG OF DENISE STARTS PLAYIING| +08::01::2022 02:47:45|Katyusha thighs Katyusha thighs| +08::01::2022 02:47:46|little miss poofy pants| +08::01::2022 02:47:46|NTER +08::01::2022 02:47:46|WIde nutcracker| +08::01::2022 02:47:47|based nutcracker| +08::01::2022 02:47:47|MIDGET LAUGH| +08::01::2022 02:47:48|that wide edit is great| +08::01::2022 02:47:48|WIDE KATYUSHA| +08::01::2022 02:47:48|HAHAHAHA +08::01::2022 02:47:48|BGM +08::01::2022 02:47:48|HAHHAHAHAHAHAHHAHAHAHAHAHAH +08::01::2022 02:47:49|SAORI STOCKINGS| +08::01::2022 02:47:51|smug katyusha| +08::01::2022 02:47:51|AHAHAHAHAHHA +08::01::2022 02:47:52|based nutcracker| +08::01::2022 02:47:53|Diluted anti freeze with 50% water, starts freezing at -22 °F (-30 °C)| +08::01::2022 02:47:55|ONNA! +08::01::2022 02:47:55|*SONG FOR DENISSE RUMBLES IN THE DISTANCE*| +08::01::2022 02:47:56|short and shorter| +08::01::2022 02:47:56|I want to crack my nut on Katyusha| +08::01::2022 02:47:56|CRIMEA JE SRBJA| +08::01::2022 02:47:56|Katyusha is the perfect gulag commander| +08::01::2022 02:47:57|lat +08::01::2022 02:48:00|ONNA +08::01::2022 02:48:00|bowing down| +08::01::2022 02:48:00|IDE +08::01::2022 02:48:01|uoh against uoh| +08::01::2022 02:48:02|>she has to crouch| +08::01::2022 02:48:03|ONNA +08::01::2022 02:48:03|ATYUSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:48:03|OGGED +08::01::2022 02:48:03|Wide af| +08::01::2022 02:48:05|Katyusha the nut cracker| +08::01::2022 02:48:06|NEEL +08::01::2022 02:48:07|big nonna tits| +08::01::2022 02:48:07|IMAGINE +08::01::2022 02:48:08|OGGED +08::01::2022 02:48:08|MASTER BLASTER| +08::01::2022 02:48:09|UTE +08::01::2022 02:48:09|CHAD YUSHA| +08::01::2022 02:48:09|SHE'S HUGE| +08::01::2022 02:48:09|GATTAI DA| +08::01::2022 02:48:10|Was it autism?| +08::01::2022 02:48:10|ATTAI +08::01::2022 02:48:11|need the Toyota red coolant| +08::01::2022 02:48:12|Based brat| +08::01::2022 02:48:14|remlinchads? +08::01::2022 02:48:15|MAGINE +08::01::2022 02:48:17|HOLY SHIT HOW DID SHE GET SO TALL| +08::01::2022 02:48:17|CYKA BLYAT| +08::01::2022 02:48:18|URGE +08::01::2022 02:48:18|little brat... | +08::01::2022 02:48:20|MASTER BLASTER RUNS THIS SHIP| +08::01::2022 02:48:20|>calling nonna a horse| +08::01::2022 02:48:21|you'll be PURGED| +08::01::2022 02:48:21|'11 +08::01::2022 02:48:21|god I wish that were me with katyushacunny on my back| +08::01::2022 02:48:22|based, fuck nips| +08::01::2022 02:48:22|i want her to crack my nuts| +08::01::2022 02:48:22|PURGED +08::01::2022 02:48:24|God I wish that were me| +08::01::2022 02:48:24|ra +08::01::2022 02:48:25|loli stalin| +08::01::2022 02:48:26|HOW DID SHE HAR THAT| +08::01::2022 02:48:26|sigma katyusha btfos heightlets| +08::01::2022 02:48:26|SEND TO SIBERIA| +08::01::2022 02:48:26|plot moment| +08::01::2022 02:48:28|PURGE ME PLEASE, KATYUSHA| +08::01::2022 02:48:30|ass bigger than Sayori| +08::01::2022 02:48:30|CHEEEEKI BREEEKI| +08::01::2022 02:48:32|OOOOHHHHH +08::01::2022 02:48:32|THE BANTS| +08::01::2022 02:48:32|MADE FOR POSTBIRTH DEATH| +08::01::2022 02:48:33|NEED RAPE CORRECTION| +08::01::2022 02:48:35|ERVED +08::01::2022 02:48:38|UTT +08::01::2022 02:48:38|rape correction needed| +08::01::2022 02:48:38|STD +08::01::2022 02:48:38|now im hungry| +08::01::2022 02:48:40|urge +08::01::2022 02:48:40|DO SVIDANYA| +08::01::2022 02:48:41|DA SVIDANIYA| +08::01::2022 02:48:41|DAB on the Nishizumi style| +08::01::2022 02:48:42|DAMN FEMALE KID| +08::01::2022 02:48:42|DAMN CHILD| +08::01::2022 02:48:46|damn female child... | +08::01::2022 02:48:46|spanking needed| +08::01::2022 02:48:46|Katyusha built for rape and impregnation| +08::01::2022 02:48:48|do svidanya| +08::01::2022 02:48:48|Nonna's Katyusha piss smell neck| +08::01::2022 02:48:49|you know this saying?| +08::01::2022 02:48:52|tony kaku| +08::01::2022 02:48:54|How can she be rape corrected by other girls? That makes no sense| +08::01::2022 02:48:55|the child...the child...the child...| +08::01::2022 02:48:56|My imouto bought me katyusha figure for birthday| +08::01::2022 02:49:02|tank shells duh| +08::01::2022 02:49:04|cool imouto| +08::01::2022 02:49:05|bring more soup| +08::01::2022 02:49:06|Based sister| +08::01::2022 02:49:06|chi ha tan style| +08::01::2022 02:49:07|who wins, tony kaku or taku-san?| +08::01::2022 02:49:07|Sex your imouto| +08::01::2022 02:49:09|MU +08::01::2022 02:49:12|brush her teeth| +08::01::2022 02:49:12|we only have to kick in the door bros| +08::01::2022 02:49:13|retarded +08::01::2022 02:49:13|Красная Армия, марш марш вперёд| +08::01::2022 02:49:16|DIOTS +08::01::2022 02:49:16|she'll be rape corrected by the old men that pleasure saori| +08::01::2022 02:49:16|charge into the KV2 | +08::01::2022 02:49:17|NORIKO OK| +08::01::2022 02:49:18|OTSUGEKI +08::01::2022 02:49:19|otsugeki? +08::01::2022 02:49:21|my older sister is a bitch| +08::01::2022 02:49:22|where's Saki| +08::01::2022 02:49:22|OTSUGEKI!!! +08::01::2022 02:49:22|NORIKO IS A BOY| +08::01::2022 02:49:22|Don't listen to the retards!| +08::01::2022 02:49:26|YAFUN +08::01::2022 02:49:26|TOTSUGEKI +08::01::2022 02:49:27|ya hooon| +08::01::2022 02:49:27|YAFUN +08::01::2022 02:49:27|OTSUGEKI +08::01::2022 02:49:28|ETARDS +08::01::2022 02:49:28|the whole rotten structure will collapse bros| +08::01::2022 02:49:28|GA HOON| +08::01::2022 02:49:30|Orange Pekoe-san... have you heard this saying? Darjeeling is ultimate gf built for cuddles, love and marriage.| +08::01::2022 02:49:31|NORIKO IS A GIRL| +08::01::2022 02:49:33|JUST TOTSUGEKI| +08::01::2022 02:49:33|OTSUGEKI! +08::01::2022 02:49:37|OTSUGEKI +08::01::2022 02:49:37|Miho not so smug| +08::01::2022 02:49:41|Just kick the door in | +08::01::2022 02:49:43|is ふ hu or fu?| +08::01::2022 02:49:45|one more fucking saying darj, i swear| +08::01::2022 02:49:48|SUN TZU| +08::01::2022 02:49:51|OKKAN! +08::01::2022 02:49:51|Its fu | +08::01::2022 02:49:52|do you know this saying?| +08::01::2022 02:49:54|the whole rotten structure is about to come crashing down| +08::01::2022 02:49:55|have you heard this saying| +08::01::2022 02:49:56|its hu| +08::01::2022 02:49:59|ふ is fu and hu| +08::01::2022 02:49:59|PIZDEC VSEM NAHUI| +08::01::2022 02:50:00|Punching Momo's stupid face!| +08::01::2022 02:50:02|>German army be like| +08::01::2022 02:50:02|"All warfare is based"| +08::01::2022 02:50:05|SUN TSU: chingchonchang| +08::01::2022 02:50:05|fu with your lips like phew| +08::01::2022 02:50:05|that'snot True| +08::01::2022 02:50:06|EAMLESS +08::01::2022 02:50:06|Yeah, Japan would know| +08::01::2022 02:50:07|ETRIS +08::01::2022 02:50:08|no one's benefited from prolonged warfare?| +08::01::2022 02:50:08|No seams| +08::01::2022 02:50:08|NTER +08::01::2022 02:50:08|EAMLESS +08::01::2022 02:50:08|ATYUSHA +08::01::2022 02:50:11|sun tzu said that| +08::01::2022 02:50:12|sans seams| +08::01::2022 02:50:12|ふ is ふ, got it| +08::01::2022 02:50:15|best part| +08::01::2022 02:50:17|PANZER VOR| +08::01::2022 02:50:18|ATYUSHA +08::01::2022 02:50:20|ATYUSHA +08::01::2022 02:50:20|ATYUSHA +08::01::2022 02:50:20|.... Over by Christmqs....| +08::01::2022 02:50:21|EAMS +08::01::2022 02:50:21|how many wars did sun tzu win?| +08::01::2022 02:50:22|SPASIBO DEDU ZA POBEDU)))))))))))))))))| +08::01::2022 02:50:22|IT'S TIME| +08::01::2022 02:50:23|EVERYBODY GET READY TO SING ALONG!| +08::01::2022 02:50:23|song time?| +08::01::2022 02:50:24|TERIS HERE WE GO| +08::01::2022 02:50:26|ATYUSHA +08::01::2022 02:50:26|if you kill youre enemies they win| +08::01::2022 02:50:26|Krasnaya Armiya vseh silyney| +08::01::2022 02:50:27|TO THE GULAS| +08::01::2022 02:50:27|CYKA BLYAT| +08::01::2022 02:50:28|better not be the localized version with Tetris| +08::01::2022 02:50:31|Napoleon had panic fear of cats.| +08::01::2022 02:50:31|So which ep are we on currently?| +08::01::2022 02:50:31|ATYUSHA +08::01::2022 02:50:31|>25 RUBLES| +08::01::2022 02:50:35|WHERE THE FUCK IS KATYUSHA SONG?| +08::01::2022 02:50:35|::a:: sings| +08::01::2022 02:50:36|ASTVETALI +08::01::2022 02:50:38|ULAG +08::01::2022 02:50:38|RASTSVETALI YABLONI I GRUSHI| +08::01::2022 02:50:38|>ふ is ふ, unironically the best way to see it| +08::01::2022 02:50:39|RA +08::01::2022 02:50:39|ATYUSHA +08::01::2022 02:50:39|ZA RODINU ZA STALINA| +08::01::2022 02:50:40|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:41|RA +08::01::2022 02:50:41|EAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:41|to the gulag... | +08::01::2022 02:50:42|SONG TIME SONG TIME| +08::01::2022 02:50:42|we're on like 7 or 8 i think| +08::01::2022 02:50:42|! Banger alert ! Banger alert !| +08::01::2022 02:50:43|SING WITH ME| +08::01::2022 02:50:43|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:44|RA +08::01::2022 02:50:44|tetris +08::01::2022 02:50:44|PA +08::01::2022 02:50:44|SING DAMMIT| +08::01::2022 02:50:44|Here we go| +08::01::2022 02:50:45|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:45|URA | +08::01::2022 02:50:45|this got me into gup| +08::01::2022 02:50:45|>not the CR version| +08::01::2022 02:50:45|HERE IT IS| +08::01::2022 02:50:46|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:46|PAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:46|LETS GOOOOOOOOOOOOO| +08::01::2022 02:50:46|RAHHHHHHH +08::01::2022 02:50:47|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:48|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:48|ETORISU +08::01::2022 02:50:48|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:50:49|PAPLOI TURNMANI NAD REKOI| +08::01::2022 02:50:49|HERE WE GO| +08::01::2022 02:50:50|ATYUSHA +08::01::2022 02:50:50|RAAAAAAAA +08::01::2022 02:50:50|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:52|RAAAAHHHHH +08::01::2022 02:50:52|UMIPEEEEEEEEEEEEEEEE +08::01::2022 02:50:53|ATYUSHA +08::01::2022 02:50:53|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:50:53|ATYUSHA +08::01::2022 02:50:53|RAAAH +08::01::2022 02:50:53|1 2 3 4| +08::01::2022 02:50:54|RRRAAAAAAAAAAA +08::01::2022 02:50:54|UBS +08::01::2022 02:50:55|UUURRRRRAAAAAAAAA +08::01::2022 02:50:55|COMMUNIST WIN!!| +08::01::2022 02:50:56|RAAAAAAAA +08::01::2022 02:50:56|based subs| +08::01::2022 02:50:57|HERE WE GO!| +08::01::2022 02:50:57|ET +08::01::2022 02:50:57|RRRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:57|wwwwwwwww +08::01::2022 02:50:57|commie time| +08::01::2022 02:50:57|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:50:57|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:50:57|Quality subs| +08::01::2022 02:51:00|UUURRRRRAAAAAAAAA +08::01::2022 02:51:01|ATYUSHA +08::01::2022 02:51:01|ATYUSHA +08::01::2022 02:51:01|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:51:02|CYKA BLYAT| +08::01::2022 02:51:02|FUCKING GAY SUBTITLES GET THE FUCK OUT OF MY FACE| +08::01::2022 02:51:02|RAAAAAAAAAAAAAAA +08::01::2022 02:51:02|What is this \fsp-10?| +08::01::2022 02:51:02| +08::01::2022 02:51:02|nice subs lmao| +08::01::2022 02:51:02|RRAAAAAAAAA +08::01::2022 02:51:03|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:03|ATYUSHA +08::01::2022 02:51:03|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:06|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:51:06|ATYUSHA +08::01::2022 02:51:06|THE FIRST OF MANY SONG!| +08::01::2022 02:51:06|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:06|MAX VOLUME| +08::01::2022 02:51:07|NTER +08::01::2022 02:51:07|ED +08::01::2022 02:51:07|OMMUNISM +08::01::2022 02:51:07|COMRADE KATYUSHA| +08::01::2022 02:51:07|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:09|atyusha +08::01::2022 02:51:09|UUURRRRRAAAAAAAAA +08::01::2022 02:51:09|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:10|VODKA VODKA PIEROGI CHEEKI BREEKI| +08::01::2022 02:51:11|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:51:12|HAIL LENIN, HAIL STALIN, HAIL KATYUSHA| +08::01::2022 02:51:12|ETRIS +08::01::2022 02:51:13|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:13|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:13|MAN, THE OST IS SO GOOOOD| +08::01::2022 02:51:14|ATYUSHAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:15|RQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ +08::01::2022 02:51:15|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:51:15|HOROSHO +08::01::2022 02:51:18|LONG LIVE THE PARTY| +08::01::2022 02:51:18|IF YOU ARE NOT RED YOU ARE A FAG| +08::01::2022 02:51:18|uuuuuuuuuuuuuuuuuuuurrrrrrrrrrrrrrrrrrrrrrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +08::01::2022 02:51:21|ANG +08::01::2022 02:51:23|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:23|Cute russian larpers| +08::01::2022 02:51:24|naisu karaoke| +08::01::2022 02:51:24|RLA +08::01::2022 02:51:26|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:51:26|EVERYBODY GO RED| +08::01::2022 02:51:27|I don't speak Ruskie| +08::01::2022 02:51:27|UURRRRRRRRRRRRRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:28|UUUUUURRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:28|PRAT TAVO CHI BISMA PIEREGLA| +08::01::2022 02:51:29|It would be a shame if some danmaku covered these tryhard subs| +08::01::2022 02:51:31|KATSYUSHA CHEEKI BREEKI KATSUYSHA| +08::01::2022 02:51:31|UUUUUUUURRRRRRRRAAAAAAA +08::01::2022 02:51:32|ERECLA +08::01::2022 02:51:32|YLBLYAAAAAAA +08::01::2022 02:51:34|INO +08::01::2022 02:51:34|OAHHH +08::01::2022 02:51:36|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:36|BETTER DEAD THAN RED| +08::01::2022 02:51:36|RRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:37|UUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:37|BETTER DED THEN RED| +08::01::2022 02:51:39|INO +08::01::2022 02:51:40|THIS IS A COMMUNIST STREAM| +08::01::2022 02:51:40|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:40|Выходила, песню заводила Про степного сизого орла Про того, которого любила Про того, чьи письма берегла| +08::01::2022 02:51:42|i want to make them a mother land| +08::01::2022 02:51:42|INO +08::01::2022 02:51:42|uuurrrraaaa +08::01::2022 02:51:43|AGAIN AGAIN| +08::01::2022 02:51:43|>shot version| +08::01::2022 02:51:46|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:46|why does katyusha speak russian here?| +08::01::2022 02:51:46|Встава́й, страна́ огро́мная| +08::01::2022 02:51:48|EAT SHIT OOARAI| +08::01::2022 02:51:48|can't believe i missed that on my first watch| +08::01::2022 02:51:50|Better Yellow than smello| +08::01::2022 02:51:51|☭☭☭ +08::01::2022 02:51:52|RAAAA!!!!!! +08::01::2022 02:51:52|NCORE +08::01::2022 02:51:53|How many tank shells could Katyusha take?| +08::01::2022 02:51:55|Always with Honour Pyotr Wrangel| +08::01::2022 02:51:55|UFFER +08::01::2022 02:51:55|hang katyusha for kokoro connect| +08::01::2022 02:51:57|UUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:51:57|HIGHS +08::01::2022 02:51:58|uffering +08::01::2022 02:51:58|CYKA BYLAY| +08::01::2022 02:51:59|highs +08::01::2022 02:51:59|ENCORE ENCORE ENCORE| +08::01::2022 02:52:00|FAIR AND BALANCED RUSSIAN TANK ARMOR| +08::01::2022 02:52:00|EGS +08::01::2022 02:52:00|uffering +08::01::2022 02:52:01|>tfw still no Erika cover| +08::01::2022 02:52:04|commie stream| +08::01::2022 02:52:05|buffer time| +08::01::2022 02:52:05|communist strim, starts to buffer again| +08::01::2022 02:52:06|OHI +08::01::2022 02:52:06|fucking katyusha made the stream buffer| +08::01::2022 02:52:07|OOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 02:52:07|good point to buffer| +08::01::2022 02:52:08|short skirts in freezing weather| +08::01::2022 02:52:08|UTOMOMO +08::01::2022 02:52:11|STOP KILLING MY STREAM. STOP WATCHING NOW| +08::01::2022 02:52:12|OCOA +08::01::2022 02:52:14|hoco! +08::01::2022 02:52:14|and then she handed me a cheese sandwich| +08::01::2022 02:52:14|cheese sandwich| +08::01::2022 02:52:16|a fucking cheese sandwich| +08::01::2022 02:52:17|OO +08::01::2022 02:52:17|stream has been put in gulag| +08::01::2022 02:52:18|the finest bandwidth in the soviet union| +08::01::2022 02:52:18|buffering... +08::01::2022 02:52:19|katyusha too wide, stream can't handle| +08::01::2022 02:52:23|their veins are carbon coated, it's okay| +08::01::2022 02:52:23|NEWFAGGOTS REEEEEEEEEEEEEEEEE| +08::01::2022 02:52:26|gommunism killed the stream| +08::01::2022 02:52:26|>russian stream quality| +08::01::2022 02:52:27|cheese sandwhich. funniest shit i've ever seen| +08::01::2022 02:52:28|highs +08::01::2022 02:52:28|Drinking Yukari's coco| +08::01::2022 02:52:28|I ONLY SPEAK FREEDOM| +08::01::2022 02:52:30|big nonna tits| +08::01::2022 02:52:30|commie spies sabotaging the stream| +08::01::2022 02:52:30|>Commies cause buffering| +08::01::2022 02:52:31|REEEEEEEEEEEEEEEEE +08::01::2022 02:52:32|God damn commie buffering| +08::01::2022 02:52:33|>skirts on the snow| +08::01::2022 02:52:33|What dummy| +08::01::2022 02:52:33|midget connection| +08::01::2022 02:52:35|I blame the russians| +08::01::2022 02:52:39|Katyusha is so baka| +08::01::2022 02:52:39|HEEKI +08::01::2022 02:52:39|ONNA! +08::01::2022 02:52:40|cheeky breeki| +08::01::2022 02:52:42|good stream quality is capitalism| +08::01::2022 02:52:42|ONNA! +08::01::2022 02:52:44|>calls other "namaiki"| +08::01::2022 02:52:45|glad we got some cheesesandwich posters| +08::01::2022 02:52:46|>Russian internet| +08::01::2022 02:52:48|EVERYONES BANDWIDTH| +08::01::2022 02:52:49|are we watching der film and das finale| +08::01::2022 02:52:51|УУУУУУУУУУУУУУУУУУУУУУУУУУУУРPPPPPPPPPPPPPPPPPPPPPPPPPPPPPАAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:52:54|slavs +08::01::2022 02:52:54|oh no no no no renault bros| +08::01::2022 02:52:57|just keep driving| +08::01::2022 02:52:57|katyusha killing the stream to hide a war crime| +08::01::2022 02:52:58|im retarded| +08::01::2022 02:52:59|How can you not cheesesandwhich post| +08::01::2022 02:53:03|Pravda is starving their streamers| +08::01::2022 02:53:03|It's like I'm actually playing CSGO| +08::01::2022 02:53:05|Kick her harder| +08::01::2022 02:53:07|>french engineering | +08::01::2022 02:53:07|now +08::01::2022 02:53:07|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOT +08::01::2022 02:53:07|Gomoyo, sodoko and ?| +08::01::2022 02:53:11|You guys stay away from MY bandwidth| +08::01::2022 02:53:12|get the fuck out| +08::01::2022 02:53:13|uoooh legs| +08::01::2022 02:53:16|azomiiiiiiiiiiiiii +08::01::2022 02:53:17|TAKE MY STRENGTH \O::TAKE MY STRENGTH \O::TAKE MY STRENGTH \O::TAKE MY STRENGTH \O::| +08::01::2022 02:53:18|UTIES +08::01::2022 02:53:20|aSSERT DOMINANCE| +08::01::2022 02:53:20|L2DRIVE RETARD| +08::01::2022 02:53:21|PAZOMIIIIIIIIII | +08::01::2022 02:53:21|wtf basic geometry| +08::01::2022 02:53:23|is it legal to transfer crew?| +08::01::2022 02:53:24|French engineering....| +08::01::2022 02:53:24|shut up sodoko| +08::01::2022 02:53:25|aizuri +08::01::2022 02:53:28|built for pazomi| +08::01::2022 02:53:31|>dial up| +08::01::2022 02:53:35|on scale 0-100 how wet sodoko is now| +08::01::2022 02:53:36|why is there a snow wall| +08::01::2022 02:53:39|hana san could you shoot momo?| +08::01::2022 02:53:42|Just shoot the snow lmao| +08::01::2022 02:53:44|h? +08::01::2022 02:53:45|>HE shell >safe sport| +08::01::2022 02:53:48|DO HE shells work like that?| +08::01::2022 02:53:49|does that work?| +08::01::2022 02:53:51|FUCKSNOW +08::01::2022 02:53:53|FUCK FLOWERS| +08::01::2022 02:53:53|60-70 +08::01::2022 02:53:55|damn what a bitch| +08::01::2022 02:53:55|fuk u mom| +08::01::2022 02:53:58|Why are those shells allowed? Seems dangerous for little girls.| +08::01::2022 02:54:00|est +08::01::2022 02:54:01|tsun mom| +08::01::2022 02:54:02|UN +08::01::2022 02:54:02|quirrels! +08::01::2022 02:54:03|NIGGA I'M NUTS| +08::01::2022 02:54:04|hinzabro +08::01::2022 02:54:04|zusa! +08::01::2022 02:54:05|risu dayo :DDD| +08::01::2022 02:54:08|What are you Saki?| +08::01::2022 02:54:08|CARBON COATED| +08::01::2022 02:54:08|test failed| +08::01::2022 02:54:09|ONEY! +08::01::2022 02:54:09|Time to brew some coffee for the long haul| +08::01::2022 02:54:12|Where's Hanna's dad?| +08::01::2022 02:54:12|taringrado... +08::01::2022 02:54:15|Stalingrad flashbacks| +08::01::2022 02:54:16|sTALINGRAD +08::01::2022 02:54:16|PAY ATTENTION TO THE MATCH| +08::01::2022 02:54:17|this is how you get sports parents that are crazy| +08::01::2022 02:54:17|::pol:: +08::01::2022 02:54:17|don't mention pls| +08::01::2022 02:54:19|>erwin having flashbacks| +08::01::2022 02:54:19|This is our stalingrad, Ooaraibros| +08::01::2022 02:54:20|staringrado is serious business| +08::01::2022 02:54:20|shells are carbon coated so their safe| +08::01::2022 02:54:20|Stalingrad - Massengrab| +08::01::2022 02:54:21|talingrad.. +08::01::2022 02:54:21|TALINGRADOU +08::01::2022 02:54:22|gUPPIEGRAD +08::01::2022 02:54:22|stalingrad isn't real| +08::01::2022 02:54:22|we could have won| +08::01::2022 02:54:25|Hana's Dad died in childbirth| +08::01::2022 02:54:27|EVERY SEVEN SECONDS| +08::01::2022 02:54:28|>Not having your snow CDarbnon Coated| +08::01::2022 02:54:35| +08::01::2022 02:54:38|ire +08::01::2022 02:54:39|OUDER +08::01::2022 02:54:40|Stalingrad so fucked up GuP won't even joke about it | +08::01::2022 02:54:40|g. so True.| +08::01::2022 02:54:40| +08::01::2022 02:54:42|There is no phsysical evidence of Stalingrad...| +08::01::2022 02:54:43|ougeki! +08::01::2022 02:54:44| +08::01::2022 02:54:46|Alle sieben Sekunden stirbt ein Guppie| +08::01::2022 02:54:51| +08::01::2022 02:54:53|ORIKO +08::01::2022 02:54:56|PRAVDABROS WE GOT TOO COCKY| +08::01::2022 02:54:56|z +08::01::2022 02:54:57|Long barrel Panzer IV best Panzer IV| +08::01::2022 02:54:58|asy +08::01::2022 02:55:00|GO GO| +08::01::2022 02:55:02|T-34 bros... | +08::01::2022 02:55:03|go! go!| +08::01::2022 02:55:03|GO GO| +08::01::2022 02:55:04|GO GO| +08::01::2022 02:55:05|GO GO| +08::01::2022 02:55:07|OGO +08::01::2022 02:55:07|OORAI ON A ROLL| +08::01::2022 02:55:08|go go| +08::01::2022 02:55:09|orried +08::01::2022 02:55:09|smart miho| +08::01::2022 02:55:10|I can't believe Yukari is autistic| +08::01::2022 02:55:10|us +08::01::2022 02:55:12|IT'S A TRAP| +08::01::2022 02:55:14|STFU YUKARI| +08::01::2022 02:55:15|Pravda flashbacks| +08::01::2022 02:55:16|>is this bait?| +08::01::2022 02:55:18|>they use fake retreats| +08::01::2022 02:55:18|ITS A TRAP| +08::01::2022 02:55:19|ST +08::01::2022 02:55:20|T34 is indistructible!| +08::01::2022 02:55:21|OST +08::01::2022 02:55:22|OTSUGEKI +08::01::2022 02:55:23|all bait| +08::01::2022 02:55:26|i wonder why| +08::01::2022 02:55:26|£400000000000 on Pravda please| +08::01::2022 02:55:28|SELL OOARAICOIN| +08::01::2022 02:55:29|NOT ONE STEP BACK| +08::01::2022 02:55:35|Yeah idiot| +08::01::2022 02:55:37|LOLI BAIT TACTICS| +08::01::2022 02:55:38|LUT +08::01::2022 02:55:38|sealori +08::01::2022 02:55:40|lut +08::01::2022 02:55:40|no way in hell ooarai wins| +08::01::2022 02:55:40|lut +08::01::2022 02:55:41|DIOTS +08::01::2022 02:55:43|but the commander LITERALLY said we shouldnt fall for their feint retreat| +08::01::2022 02:55:43|you do what now?| +08::01::2022 02:55:43|AZUSA SIgHTED| +08::01::2022 02:55:44|Pravda surely can't lose| +08::01::2022 02:55:44|big baka moment| +08::01::2022 02:55:44|Saori is a rapist| +08::01::2022 02:55:45|they pulled this exact trap in their first battle| +08::01::2022 02:55:46|ooarai bros...| +08::01::2022 02:55:47|Is katyusha the first commander to use any sort of a strategy| +08::01::2022 02:55:47|How many Ooaricoin for Momo?| +08::01::2022 02:55:47|Why does she chase fags| +08::01::2022 02:55:48|master baiters| +08::01::2022 02:55:50|OTSUGEKI +08::01::2022 02:55:50|GO GO!| +08::01::2022 02:55:51|ORIKO<3 +08::01::2022 02:55:51|TTACK +08::01::2022 02:55:51|OTSUGEKI +08::01::2022 02:55:52|OTSUGEKI +08::01::2022 02:55:52|OTSUGEKI +08::01::2022 02:55:52|I'm going all in on Katyusha. I got a good feeling| +08::01::2022 02:55:53|OTSUGEKI +08::01::2022 02:55:54|Momo, pls| +08::01::2022 02:55:55|OTSUGEKI +08::01::2022 02:55:57|OTSUGEKI +08::01::2022 02:56:01|>the original totsugeki retard| +08::01::2022 02:56:03|same, life savings on katyusha| +08::01::2022 02:56:05|ooarai bros i dont feel so good....| +08::01::2022 02:56:07|litzkrieg +08::01::2022 02:56:10|This Lee is from America? I guess they are keeping all the good stuff for themselves...| +08::01::2022 02:56:11|OTSUGEKIIIIII +08::01::2022 02:56:13| 撃 +08::01::2022 02:56:16|if katyusha loses i wont be able to afford rent| +08::01::2022 02:56:18| 撃 +08::01::2022 02:56:19|My mother's kidney on Katyusha| +08::01::2022 02:56:20| 撃 +08::01::2022 02:56:21|my maho wife| +08::01::2022 02:56:22|SAEMONZA OPEN YOUR FUCKING EYES| +08::01::2022 02:56:23|>bodyblock the flag tank| +08::01::2022 02:56:23|I've got 1 BTC on pravda winning| +08::01::2022 02:56:24|No segs nishi in tv --- hurts| +08::01::2022 02:56:25|OTSUGEKI +08::01::2022 02:56:27|LITZKRIEG +08::01::2022 02:56:27|OKKAN +08::01::2022 02:56:28|LITZKRIEG +08::01::2022 02:56:29|AIT +08::01::2022 02:56:29|OTSUGEKI +08::01::2022 02:56:29|katyusha never lose| +08::01::2022 02:56:31| 喊 +08::01::2022 02:56:31|OTSUGEKI +08::01::2022 02:56:32|All my BTC on Pravda| +08::01::2022 02:56:33|ERSERKER +08::01::2022 02:56:33| つげき +08::01::2022 02:56:34|OTSUGEKI +08::01::2022 02:56:34|litzkrieg +08::01::2022 02:56:37|MY SOUL ON SOVIET QUALITY STEEL| +08::01::2022 02:56:40|OTSUGEKI +08::01::2022 02:56:41|operation barbarossa be like| +08::01::2022 02:56:42|NO DONT GO INTO THE VILLAGE DONT DO IT| +08::01::2022 02:56:44|this is why you don't totsugeki| +08::01::2022 02:56:44|>3d miho| +08::01::2022 02:56:44|GERMANS PULLING AN ITALIAN| +08::01::2022 02:56:48|time to buy Oaraicoin| +08::01::2022 02:56:49|>soviet quality| +08::01::2022 02:56:53|Hulls blessed by Stalin himself| +08::01::2022 02:56:56|>soviet >quality| +08::01::2022 02:56:57|looks like Ooarai might win| +08::01::2022 02:56:58|Stalinium will win rightt?| +08::01::2022 02:56:59|1991 worst day of my life| +08::01::2022 02:57:00|OH NO| +08::01::2022 02:57:01|oh no no no no| +08::01::2022 02:57:05|AAAAAA +08::01::2022 02:57:08|oh n-| +08::01::2022 02:57:09|OH NO OH NO| +08::01::2022 02:57:09|IT'S A TRAP| +08::01::2022 02:57:10|Momo +08::01::2022 02:57:11|ORARIBROS... +08::01::2022 02:57:12|OH NO| +08::01::2022 02:57:12|OH N-| +08::01::2022 02:57:13|UHHHHHHH OOARAI BROS?| +08::01::2022 02:57:13|Ooaribros we got too cocky| +08::01::2022 02:57:14|OH NO NO NO OORAI BROS WE GOT TOO COCKY| +08::01::2022 02:57:15|RAPPED +08::01::2022 02:57:15|>not using red text for the russian match | +08::01::2022 02:57:16|my oaraicoin aaaaaaaaaaaaaaaaaaaaaaaa| +08::01::2022 02:57:16|I can't believe Ooarai is about to loose...| +08::01::2022 02:57:19|Why is Momo so shit?| +08::01::2022 02:57:19|UH OH, SISTERS! | +08::01::2022 02:57:20|GULAG TIME| +08::01::2022 02:57:20|oraibros... +08::01::2022 02:57:20|it's over| +08::01::2022 02:57:20|oaraibros... +08::01::2022 02:57:21|imagine fielding tier IV against tier VII| +08::01::2022 02:57:21|OH NO NO NO OORAIBROS| +08::01::2022 02:57:22|Git fucked Orrai nerds| +08::01::2022 02:57:23|THEY'RE MULTIPLYING LIKE FLIES| +08::01::2022 02:57:23|MIHO YOU FUCK| +08::01::2022 02:57:24|ITS OVER| +08::01::2022 02:57:25|oh no| +08::01::2022 02:57:25|russian bias| +08::01::2022 02:57:26|WE GOT TOO COCKY| +08::01::2022 02:57:27|played like a damn fiddle| +08::01::2022 02:57:27|Surely the Reds will win| +08::01::2022 02:57:27|surprise mothertrucker| +08::01::2022 02:57:28|ALL MY MONEY ON PRAVDA| +08::01::2022 02:57:28|I didn't expect the Spanish inquisition| +08::01::2022 02:57:28|UUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 02:57:31|asp +08::01::2022 02:57:31|ANKOUSISTERS ITS OVER!| +08::01::2022 02:57:32|OUD +08::01::2022 02:57:32|THAT SOUND| +08::01::2022 02:57:32|RRRAAA +08::01::2022 02:57:32|we cant keep winning pravdabros!!!| +08::01::2022 02:57:32|LOUDER AAAAAAAAAAAAAAAAAA| +08::01::2022 02:57:33|RED TEXT ONLY TELLS THE TRUTH| +08::01::2022 02:57:33|UUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA!!!!!!!!!!!!!!!!!!!!! +08::01::2022 02:57:34|OH NO NO NO| +08::01::2022 02:57:34|SerB approved| +08::01::2022 02:57:35|OOMSHAKALAKA +08::01::2022 02:57:35|RRRAAAAAA +08::01::2022 02:57:36|lamo +08::01::2022 02:57:36|T-34 OP| +08::01::2022 02:57:37|>all these shounenshitter memes| +08::01::2022 02:57:38|RUSSIAN AIM| +08::01::2022 02:57:39|audiogasm | +08::01::2022 02:57:39|GOOD THING RUSSIANS CAN'T AIM FOR SHIT| +08::01::2022 02:57:39|UURRRRRAAAAAA +08::01::2022 02:57:40|oom +08::01::2022 02:57:40|Kapitulieren? Nein !| +08::01::2022 02:57:40|ARRAPE +08::01::2022 02:57:41|>fighting a land war in asia| +08::01::2022 02:57:44|TFW YOU GET "UNPERSONED" BY A MIDGET RUSSKIE| +08::01::2022 02:57:44|i came from those guns| +08::01::2022 02:57:45|im +08::01::2022 02:57:45|retreat into the church, the commies won't attack there| +08::01::2022 02:57:46|T-34BROS I'M FEELING IT| +08::01::2022 02:57:47|IF PRAVDA WINS I'M REPORTING MY FATHER TO THE NKVD| +08::01::2022 02:57:48|KATYUSHA HAS THIS IN THE BAG| +08::01::2022 02:57:50|THE WINTER WAR HAS SHOWN THE INCAPABILITY OF THE RED ARMY AND AIR FORCE| +08::01::2022 02:57:51|Stalinium will carry them to victory\| +08::01::2022 02:57:57|T-34 bros cant lose| +08::01::2022 02:57:58|press N to take a Nap| +08::01::2022 02:57:59|UROKINGU! +08::01::2022 02:58:02| +08::01::2022 02:58:06|NOT N WTF| +08::01::2022 02:58:07| +08::01::2022 02:58:08|ASS TO ASS| +08::01::2022 02:58:13|ASS TO ASS| +08::01::2022 02:58:14|NOT N MOTHERFUCKER| +08::01::2022 02:58:15|literally impossible for ooarai to win| +08::01::2022 02:58:19|SS2ASS +08::01::2022 02:58:19|they'll never find us in here| +08::01::2022 02:58:19|so why did she take a nap in the middle of this| +08::01::2022 02:58:20|APTULIEREN +08::01::2022 02:58:21|now what's the next step of your master plan| +08::01::2022 02:58:22|Press R to report dissenters to Comrade Katyusha| +08::01::2022 02:58:23|carbon-coated church to resist communist shells| +08::01::2022 02:58:25|lmao im glad I betted on Pravda| +08::01::2022 02:58:26|neel +08::01::2022 02:58:26|OWARI DA| +08::01::2022 02:58:27| +08::01::2022 02:58:28|do it| +08::01::2022 02:58:29|Just drink more, no need for naps.| +08::01::2022 02:58:29|They said that If Pravda wins they will release my family from the gulag| +08::01::2022 02:58:29|HOOT +08::01::2022 02:58:30|>french flag| +08::01::2022 02:58:30|KAPITULIEREN? NEIN!| +08::01::2022 02:58:31|it's over| +08::01::2022 02:58:31|They're done for| +08::01::2022 02:58:31|it's over ...| +08::01::2022 02:58:32|MAGNANIMOUS KATYUSHA!| +08::01::2022 02:58:33|UTS +08::01::2022 02:58:33|UTS +08::01::2022 02:58:33|shoot the messangers| +08::01::2022 02:58:33|plot armor power incoming| +08::01::2022 02:58:34|Just collpase the building on them, its fine because of carbon coating.| +08::01::2022 02:58:35|SOYUZ NERUSHIMI.....| +08::01::2022 02:58:35|FRENCH TACTICS| +08::01::2022 02:58:36|UTS +08::01::2022 02:58:36|UTS! +08::01::2022 02:58:36|TAKE THEM PRISONER| +08::01::2022 02:58:37|NUTS" +08::01::2022 02:58:37|UTS +08::01::2022 02:58:37|communists can't even kill a church lmao| +08::01::2022 02:58:38|UTS +08::01::2022 02:58:38|UTS +08::01::2022 02:58:38|OGEZA +08::01::2022 02:58:38|WE HAVEN'T THE PROPER FACILITIES TO TAKE YOU ALL PRISONER| +08::01::2022 02:58:38|UTS +08::01::2022 02:58:39|UTS +08::01::2022 02:58:39|UTS +08::01::2022 02:58:41|Holy shit midget putin is a tryhard| +08::01::2022 02:58:41|NEEL +08::01::2022 02:58:41|UTS +08::01::2022 02:58:41|UTS +08::01::2022 02:58:42|Nuts" +08::01::2022 02:58:42|UTS +08::01::2022 02:58:42|UTS +08::01::2022 02:58:42|UTS +08::01::2022 02:58:42|UTS +08::01::2022 02:58:43|rape the messengers| +08::01::2022 02:58:43|UTS +08::01::2022 02:58:44|NIGGA THAT'S NUTS!!!!| +08::01::2022 02:58:44|SHOOT THEM| +08::01::2022 02:58:44|UTS +08::01::2022 02:58:45|UGONDESE +08::01::2022 02:58:45|UTS +08::01::2022 02:58:45|UTS +08::01::2022 02:58:45|that a lots a nuts!| +08::01::2022 02:58:45|UTS +08::01::2022 02:58:45|UTS +08::01::2022 02:58:45|atsu +08::01::2022 02:58:46|UTS +08::01::2022 02:58:46|UTS +08::01::2022 02:58:47|Nuts Cracker| +08::01::2022 02:58:49|ATSU +08::01::2022 02:58:50|>kneel before katyushas >still taller| +08::01::2022 02:58:51|Easy Pravda win. All Katyusha has to do now is crush them and not waste any time.| +08::01::2022 02:58:51|KILL THESE FAGS| +08::01::2022 02:58:52|Kneel before superior communism| +08::01::2022 02:58:53|Ooraibros... we lost| +08::01::2022 02:58:53|LUT +08::01::2022 02:58:54|AZUSA ON THE LEFT| +08::01::2022 02:58:55|Imagine submitting to little girl, haha. Who'd do that?| +08::01::2022 02:58:57|tl-kun what does "nuts" mean| +08::01::2022 02:58:58|NOT UNDERSTANDING TERMS OF SURRENDER| +08::01::2022 02:58:58|BRING MORE SOUP| +08::01::2022 02:58:58|That'll be 4 bucks baby| +08::01::2022 02:58:59|KAPITULIEREN? NEIN!!!| +08::01::2022 02:59:00|УУУУУУУУУУУУУУУPPPРАААААААААААААААААААА +08::01::2022 02:59:02|MR ELECTRIC DISMEMBER THIS NIGGA| +08::01::2022 02:59:04|KRASNAYA ARMIJA VSEH SILNEY| +08::01::2022 02:59:04|6'' VS 5''11| +08::01::2022 02:59:04|she left with nuts!| +08::01::2022 02:59:04|manlets seething rn| +08::01::2022 02:59:11|Nutup or shutup| +08::01::2022 02:59:11|kneeling +08::01::2022 02:59:12|AIEEEEEEE KATYUSHA-SAMA... I KNEEL| +08::01::2022 02:59:12|LUT +08::01::2022 02:59:14|Pravda has this in the bag. Unless they do something stupid like take a nap| +08::01::2022 02:59:14|Bunch of submissive sluts| +08::01::2022 02:59:17|sex with momo| +08::01::2022 02:59:17|DAME DA| +08::01::2022 02:59:20|katyusha-sama... i kneel...| +08::01::2022 02:59:20|MOMO HATE| +08::01::2022 02:59:21|ET +08::01::2022 02:59:21|ZEN ZEN DAME DA| +08::01::2022 02:59:23|big reveal| +08::01::2022 02:59:23|stop momo| +08::01::2022 02:59:26|ope +08::01::2022 02:59:27|ATSUDA +08::01::2022 02:59:28|ORAMA! +08::01::2022 02:59:29|t +08::01::2022 02:59:30|momo seething| +08::01::2022 02:59:30|B-but why?!| +08::01::2022 02:59:32|I HATE MOMO| +08::01::2022 02:59:33|K N E E L| +08::01::2022 02:59:36|FUN +08::01::2022 02:59:36|fire a HE shell from the KV2 into the church right now| +08::01::2022 02:59:36|It's just a game bro| +08::01::2022 02:59:37|shut up momo!| +08::01::2022 02:59:37|HAT +08::01::2022 02:59:38|Would rape fix Momo?| +08::01::2022 02:59:38|I want to hug momo| +08::01::2022 02:59:39|why momo-san| +08::01::2022 02:59:40|>not war| +08::01::2022 02:59:40|>Kneeling, was that a meme or did they actually said that| +08::01::2022 02:59:44|momo +08::01::2022 02:59:44|PLOT TWIST INBOUND!| +08::01::2022 02:59:44|Senshado never changes...| +08::01::2022 02:59:46|>she doesn't know| +08::01::2022 02:59:46|thats what got you disowned Miho| +08::01::2022 02:59:46|it's only game| +08::01::2022 02:59:49|we dont care about the fucking school momo| +08::01::2022 02:59:49|ITS ONLY GAME| +08::01::2022 02:59:50|TF +08::01::2022 02:59:52|Momo.. go away...| +08::01::2022 02:59:53|why you have to be mad| +08::01::2022 02:59:53|and here's where they drop the other shoe| +08::01::2022 02:59:54|based momo victory or death| +08::01::2022 02:59:54|Senshado was the friends we made aling the way| +08::01::2022 02:59:56|Идёт война́ наро́дная| +08::01::2022 02:59:56|>she doesn't know| +08::01::2022 02:59:56|they said dogeza| +08::01::2022 02:59:56|WE'RE GETTING FUCKING SHUT DOWN| +08::01::2022 02:59:58|plot armor: engage| +08::01::2022 02:59:59|WHAT A TWIIIIIIIIIIST| +08::01::2022 03:00:00|loser attitude| +08::01::2022 03:00:00|why you have to be mad| +08::01::2022 03:00:01|LOT +08::01::2022 03:00:02|RAMA +08::01::2022 03:00:03|OH SHI...| +08::01::2022 03:00:04|LOT +08::01::2022 03:00:06|EWS +08::01::2022 03:00:06|ASP +08::01::2022 03:00:06|male +08::01::2022 03:00:07|ANI +08::01::2022 03:00:07|WIST +08::01::2022 03:00:07|ONE???? +08::01::2022 03:00:08|WIST +08::01::2022 03:00:08|akunaru.... +08::01::2022 03:00:08|HOLY SMOKES!!!! | +08::01::2022 03:00:09|O +08::01::2022 03:00:11|akunaru +08::01::2022 03:00:11|WOAH WHAT?!?| +08::01::2022 03:00:12|WIST +08::01::2022 03:00:12|>its over...| +08::01::2022 03:00:12|What a twist!| +08::01::2022 03:00:12|so a win win| +08::01::2022 03:00:13|>forced school closure| +08::01::2022 03:00:13|more than kneeling dekinai-kun| +08::01::2022 03:00:13|the darkest hour| +08::01::2022 03:00:13|OH SHIT THEY RAISED THE STAKES| +08::01::2022 03:00:13|NOT THE MEXT MAN?| +08::01::2022 03:00:13|this dude based| +08::01::2022 03:00:14|Oraibros, can we even win?| +08::01::2022 03:00:14|I bet the Hebrews did this...| +08::01::2022 03:00:15|UGGBEES +08::01::2022 03:00:16|hat? +08::01::2022 03:00:16|Dissolution of the Oarai Union| +08::01::2022 03:00:16|OY VEYS ARE SHUTTING OORAI DOWN| +08::01::2022 03:00:16|ASAKA +08::01::2022 03:00:17|NO WAY!| +08::01::2022 03:00:18|asaka +08::01::2022 03:00:19|OH MAI GAW| +08::01::2022 03:00:19|OH NO OOARAI BROS| +08::01::2022 03:00:19|MEXT WHAT THE FUCK| +08::01::2022 03:00:20|O +08::01::2022 03:00:20|Jews done this.| +08::01::2022 03:00:21|ourguy:: +08::01::2022 03:00:23|JEWS JEWS JEWS JEWS JEWS JEWS JEWS | +08::01::2022 03:00:23|OH JEEZ!| +08::01::2022 03:00:24|NTER +08::01::2022 03:00:25|ourguy:: +08::01::2022 03:00:26|FUCK MEXT| +08::01::2022 03:00:26|ANIANIANINANI???? +08::01::2022 03:00:26|should have become idols instead| +08::01::2022 03:00:27|EXT +08::01::2022 03:00:29|EXTguy +08::01::2022 03:00:29|NTER +08::01::2022 03:00:31|OY VEYYY | +08::01::2022 03:00:32|thats crazy! surely they wont reuse this same plot point again| +08::01::2022 03:00:32|MEXT ARE JEW NIGGERS| +08::01::2022 03:00:32|MEXT CHAD| +08::01::2022 03:00:33|The best Male ENTERs| +08::01::2022 03:00:33|EXTfags +08::01::2022 03:00:36|EXT +08::01::2022 03:00:36|Forced drama..... ENGAGE| +08::01::2022 03:00:38|EWWWWWW MALE| +08::01::2022 03:00:38|giving us GuP for years and years| +08::01::2022 03:00:39|((()))) +08::01::2022 03:00:40|IGMA +08::01::2022 03:00:40|oorari bros never saw this coming| +08::01::2022 03:00:41|MY BOY TSUJI| +08::01::2022 03:00:43|based MEXT, fuck oorai| +08::01::2022 03:00:44|>casting couch| +08::01::2022 03:00:44|ourguy:: +08::01::2022 03:00:45|you have a wild west outlaw on your ship| +08::01::2022 03:00:48|Where is his figure?| +08::01::2022 03:00:48|henshahoe +08::01::2022 03:00:49|OUCHED? +08::01::2022 03:00:49|THE CHAD| +08::01::2022 03:00:50|WHAT IS >HE DOING HERE?| +08::01::2022 03:00:52|MEXT ARE JEW NIGGER FAGGOTS| +08::01::2022 03:00:53|baka gakkou| +08::01::2022 03:00:56|MEXT guy was right all along| +08::01::2022 03:00:59|male +08::01::2022 03:01:00|>adjusts glasses| +08::01::2022 03:01:00|THere he is| +08::01::2022 03:01:01|OY VEY| +08::01::2022 03:01:02|NTER +08::01::2022 03:01:02|what's his endgame?| +08::01::2022 03:01:02|MEXT chad sacrificed himself to give us more gup| +08::01::2022 03:01:03|Bring Terry back in command| +08::01::2022 03:01:04|just win| +08::01::2022 03:01:05|stop hating on mext, they'll fund my trip to ooarai| +08::01::2022 03:01:06|WASTING 4 TRILLON ON WILD WEST| +08::01::2022 03:01:07|Males t=ruin eveything| +08::01::2022 03:01:10|he should have done the gendo pose| +08::01::2022 03:01:10|He buff under the suit| +08::01::2022 03:01:12|Become guppie| +08::01::2022 03:01:13|They could just clamp down on the criminal gangs living lower levels of the ship instead of trying senshado| +08::01::2022 03:01:13|TRY ME, KID| +08::01::2022 03:01:15|mext guy's gonna carry that weight| +08::01::2022 03:01:16|Can't have all the best students in just one school| +08::01::2022 03:01:16|OY VEY GOY YOUR SHIP IS GOING TO BE ANOTHER TANKER FOR ISREAL| +08::01::2022 03:01:17|fuck M*les| +08::01::2022 03:01:19|TIME TO SING, BROS!| +08::01::2022 03:01:20|>good thing we don't need this in writing| +08::01::2022 03:01:25|He didn't say no though, baka Anzu| +08::01::2022 03:01:29|Mext > Momo| +08::01::2022 03:01:33|based male, giving us more GuP to watch| +08::01::2022 03:01:34|oy vey| +08::01::2022 03:01:36|should've made him pinky promise| +08::01::2022 03:01:43|>good thing they won't get shut down again after this right?| +08::01::2022 03:01:43|WELL TIME TO PULL A KIRK MOVE OUT OF MY ASS| +08::01::2022 03:01:43|Anons, i can;'t type straight anymore| +08::01::2022 03:01:48|EXTbros... +08::01::2022 03:01:49|I believe in him| +08::01::2022 03:01:50|>selling your tanks instead of selling the girls | +08::01::2022 03:01:52|Drink water| +08::01::2022 03:01:52|Couldn't they have sold Momo's body?| +08::01::2022 03:01:57|drink more water now to avoid a hangover| +08::01::2022 03:01:59|Momo's worthless though| +08::01::2022 03:02:00|waste of taxpayer dollars tbh| +08::01::2022 03:02:00|>Not getting your contract in writing and signed in blood| +08::01::2022 03:02:02|Sell bathwater stupids| +08::01::2022 03:02:05|who the fuck would pay anything for momo's body?| +08::01::2022 03:02:06|time to become a tank idol| +08::01::2022 03:02:06|how much is Momo's body worth?| +08::01::2022 03:02:09|Momo would give her body for free, so they couldn't sell it| +08::01::2022 03:02:13|IT AINT OVER THIS ITS OVER| +08::01::2022 03:02:13|volleyball chads, it's all over| +08::01::2022 03:02:15|turn them all into pleasure girls and keep the tanks| +08::01::2022 03:02:16|I will buy the loliharem| +08::01::2022 03:02:16|das Finale 4: Momo will flunk AND we will close the school| +08::01::2022 03:02:18|SHUT IT DOWN| +08::01::2022 03:02:20|Sell Saki| +08::01::2022 03:02:21|I will drink more vodka instead| +08::01::2022 03:02:22|About 0| +08::01::2022 03:02:24|they clearly didnt read ribbon warrior| +08::01::2022 03:02:25|__; +08::01::2022 03:02:25|Mako was robbed| +08::01::2022 03:02:27|_; +08::01::2022 03:02:28|ZUSA!! +08::01::2022 03:02:29|you can't market momo| +08::01::2022 03:02:30|_; +08::01::2022 03:02:34|SLAV RAPE BABY MAKING TIME| +08::01::2022 03:02:35|just win | +08::01::2022 03:02:36|Based anons, now's the time for vodka| +08::01::2022 03:02:39|oT +08::01::2022 03:02:39|das finale 4: erika ***| +08::01::2022 03:02:39|G +08::01::2022 03:02:40|Sell dates with floof| +08::01::2022 03:02:41|das finale 6: momo gets disowned| +08::01::2022 03:02:41|oh yeah, next year| +08::01::2022 03:02:44|Minna ;_; OST| +08::01::2022 03:02:46|>sad piano theme| +08::01::2022 03:02:48|inna... +08::01::2022 03:02:48|this is the part where i cry| +08::01::2022 03:02:50|I'm sorry, but did Ooarai already lose? Oh, that's right. The show isn't even over yet.| +08::01::2022 03:02:52|horny bastard slavs waiting and salivating| +08::01::2022 03:02:54|Das Finale 7: Revenge| +08::01::2022 03:02:55|LE'TS BUY THEIR SCHOOL, I HAVE 5 IN MY POCKET| +08::01::2022 03:02:57|It's raining alright| +08::01::2022 03:02:57|LUT +08::01::2022 03:03:00|one fluffy for 1000000| +08::01::2022 03:03:01|igger +08::01::2022 03:03:04|ATAKE +08::01::2022 03:03:09|HUG MOMO| +08::01::2022 03:03:15|o +08::01::2022 03:03:16|WE SHALL FIGHT ON THE BEACHES, WE SHALL FIGHT ON THE LANDING GROUNDS| +08::01::2022 03:03:16|igger +08::01::2022 03:03:17|I love the GUPpies. that is all. | +08::01::2022 03:03:20|ALL MOMO'S FAULT.| +08::01::2022 03:03:21|Steiner will be here soon we just have to hold out | +08::01::2022 03:03:22|Punch Momo| +08::01::2022 03:03:22|AI +08::01::2022 03:03:23|Beleiev in the heart| +08::01::2022 03:03:23|Das Finale 6: Momo becomes senshado comfort girl| +08::01::2022 03:03:23|I'm falling asleep please help| +08::01::2022 03:03:24|ekoe +08::01::2022 03:03:25|AND WE SHALL NEVER SURRENDER| +08::01::2022 03:03:27|I HATE NIGGERSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +08::01::2022 03:03:27|PROTECT MOMO| +08::01::2022 03:03:28|pants +08::01::2022 03:03:29|POLYUSHKO POLYE| +08::01::2022 03:03:29|>Just starve them out| +08::01::2022 03:03:30|EVERY GUPPIE WILL DO THEIR DUTY| +08::01::2022 03:03:33|i fucking hate NIGGERS| +08::01::2022 03:03:34|JOE TATAKE| +08::01::2022 03:03:35|ased +08::01::2022 03:03:37|you know this saying?| +08::01::2022 03:03:38|UOOOOOOOOOOOOHHHHHHHHHH PEKOE| +08::01::2022 03:03:39|BASED SIS| +08::01::2022 03:03:40|>when you smell a fat lazy nigg| +08::01::2022 03:03:40|my wife maho| +08::01::2022 03:03:40|LAGS +08::01::2022 03:03:41|SHUT THE FUCK UP DARJEELING| +08::01::2022 03:03:42|????????????????????????????????????????????????????????????????????????? +08::01::2022 03:03:42|In the end of Das Finale nothing matters because mext guy shuts down the school anyway, and nobody graduates.| +08::01::2022 03:03:43|if you think about it katyusha let them win| +08::01::2022 03:03:44|Smug brattiness| +08::01::2022 03:03:44|????????????????????????????????? +08::01::2022 03:03:47|Oh shut the fuck up already| +08::01::2022 03:03:49|throwing +08::01::2022 03:03:50|>yeah bro lets just leave these sofas out in the snow| +08::01::2022 03:03:50|I want to crush nips with pravda | +08::01::2022 03:03:52|SEX WITH KATYUSHA| +08::01::2022 03:03:52|Aren't they cold?| +08::01::2022 03:03:52|amelia watson is getting FUCKED| +08::01::2022 03:03:53|my maho wife| +08::01::2022 03:03:53|OMMY +08::01::2022 03:03:53|mother of the year| +08::01::2022 03:03:54|AHO +08::01::2022 03:03:54|Fuck this shit I'm out| +08::01::2022 03:03:54|Darjeeling has a cute AMI voice | +08::01::2022 03:03:56|AGEQUITTING +08::01::2022 03:03:57|Dumb bitch mother| +08::01::2022 03:03:59|ishisou +08::01::2022 03:04:02|Sit the fuck down Paulus you ain't going nowhere| +08::01::2022 03:04:03|ORSCHT +08::01::2022 03:04:05|idget +08::01::2022 03:04:05|Maho my beloved| +08::01::2022 03:04:05|USHA +08::01::2022 03:04:06|Maho is such a good girl| +08::01::2022 03:04:06|ashira +08::01::2022 03:04:07|NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER | +08::01::2022 03:04:09|based Katyu| +08::01::2022 03:04:10|>amelia watson| +08::01::2022 03:04:11|CUTE ONAHOLE| +08::01::2022 03:04:11|leeptusha +08::01::2022 03:04:12|KATYUSHA RELEASE MY PARENTS FROM BURYATIA NOW| +08::01::2022 03:04:14|zzzzzzzzzzzzzzz +08::01::2022 03:04:14|nap time comrades, oyasumi| +08::01::2022 03:04:15|boy +08::01::2022 03:04:15|itttering +08::01::2022 03:04:15|>127 cm| +08::01::2022 03:04:16|sleepy time...| +08::01::2022 03:04:17|UNNYUSHA +08::01::2022 03:04:17|Nap time| +08::01::2022 03:04:18|boy +08::01::2022 03:04:20|zzzzzzzzzzzzzzzzzzzzzzzzzzzzz +08::01::2022 03:04:22|NAP time| +08::01::2022 03:04:22|18 years old| +08::01::2022 03:04:23|what's the thing katyusha's in| +08::01::2022 03:04:23|>VTuber cancer| +08::01::2022 03:04:23|uyaa~ +08::01::2022 03:04:24|bayushki bayu.............| +08::01::2022 03:04:26|Katyusha the Chernobyle powerplant please| +08::01::2022 03:04:26|CUNNY NAP| +08::01::2022 03:04:27|>russians > heart| +08::01::2022 03:04:28|urn +08::01::2022 03:04:29|do we get to take a nap break with the gremlin?| +08::01::2022 03:04:29|KATUSHA IS A JEW! PRAVDA IS RUN BY JEWS| +08::01::2022 03:04:30|IT'S 12 OCLOCK, AND TIME FOR HIS NAP| +08::01::2022 03:04:30|oh yeah sue me| +08::01::2022 03:04:31|yasuminasai +08::01::2022 03:04:31|boy +08::01::2022 03:04:31|katyushas massive ego| +08::01::2022 03:04:32|CUNNYUSHA CUNNYUSGA CUNNYUSHA CUNNYUSHA| +08::01::2022 03:04:33|oy +08::01::2022 03:04:33|she's as flat as that plain as well| +08::01::2022 03:04:33|SOYUZ NERUSHIMI.....| +08::01::2022 03:04:34|yasumi +08::01::2022 03:04:35|cute boy| +08::01::2022 03:04:36|HIBERIA +08::01::2022 03:04:37|boy +08::01::2022 03:04:37|reepy +08::01::2022 03:04:37|CYKA BLYAT| +08::01::2022 03:04:37|boys are physically incapable of doing senshadou| +08::01::2022 03:04:37|boy +08::01::2022 03:04:39|boy +08::01::2022 03:04:41|onna +08::01::2022 03:04:41|icks +08::01::2022 03:04:41|STILL WOULD| +08::01::2022 03:04:41|boy +08::01::2022 03:04:42|boy +08::01::2022 03:04:42|>beautiful boy| +08::01::2022 03:04:44|>Nonna will never sing you to sleep| +08::01::2022 03:04:45|TAEKO LOVE| +08::01::2022 03:04:46|UTT +08::01::2022 03:04:46|I want a katyusha daughteru| +08::01::2022 03:04:46|umirebros +08::01::2022 03:04:47|AEKo +08::01::2022 03:04:47|VA +08::01::2022 03:04:47|GED OUDDA HERE SDALGER| +08::01::2022 03:04:49|Goodbye, time to slep| +08::01::2022 03:04:49|AYUYUSHIKI +08::01::2022 03:04:50|WHERE DO I BUY A KATYUSHA WIFE| +08::01::2022 03:04:50|YUKI NO SHINGUN| +08::01::2022 03:04:51|ute +08::01::2022 03:04:52|beautiful world| +08::01::2022 03:04:52|god i wish Oshino was here| +08::01::2022 03:04:53|I literally AM Nonna| +08::01::2022 03:04:55|Dumb Yuuki| +08::01::2022 03:04:55|ussia +08::01::2022 03:04:57|rise for the anthem| +08::01::2022 03:04:58|Katyusha was dude all along?| +08::01::2022 03:05:01|ime4splicing +08::01::2022 03:05:01|>daughter >wife| +08::01::2022 03:05:01|will anon sing me to sleep?| +08::01::2022 03:05:02|7 +08::01::2022 03:05:03|YUKI NO SHINGUN| +08::01::2022 03:05:04|yuki no| +08::01::2022 03:05:04|IME +08::01::2022 03:05:05|Boys can';t do senshado as tank can;'t penetrate boys| +08::01::2022 03:05:06|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEES +08::01::2022 03:05:06|ncie map| +08::01::2022 03:05:06|YUKI NO SHINGUN| +08::01::2022 03:05:06|YUKI NO SHINGUN| +08::01::2022 03:05:06|YUKI NO SHINGUN| +08::01::2022 03:05:06|Best part| +08::01::2022 03:05:06|YUKI NO SHINGUN| +08::01::2022 03:05:06|YUKI NO SHINGUN| +08::01::2022 03:05:07|YUKI NO SHINGUN| +08::01::2022 03:05:08|EEEEEEEEAAAAAAAAAAAH +08::01::2022 03:05:09|BEST EPISODE NOW| +08::01::2022 03:05:09|YUKI NO SHINGUN| +08::01::2022 03:05:10|INO +08::01::2022 03:05:10|OTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +08::01::2022 03:05:10|YUKI NO SHINGUN!!!!!!| +08::01::2022 03:05:10|>You will never sing Katyusha to sleep| +08::01::2022 03:05:10|Best song!| +08::01::2022 03:05:11|YUKI NO SHINGUN| +08::01::2022 03:05:11|YUKI NO SHINGUN| +08::01::2022 03:05:11|impregnate boyusha| +08::01::2022 03:05:13|! Banger alert ! Banger alert !| +08::01::2022 03:05:14|YUKI NO SHINGUN| +08::01::2022 03:05:15|YUKI NO SHINGUN| +08::01::2022 03:05:16|Like, go out the back?| +08::01::2022 03:05:18|Best scene; no doubt| +08::01::2022 03:05:18|MINNA NO TEKI NO KUNI| +08::01::2022 03:05:19|feet +08::01::2022 03:05:20|YUKI NO SHINGUN| +08::01::2022 03:05:20|feee.. feee... feeet???| +08::01::2022 03:05:22|EET +08::01::2022 03:05:23|cute larpers| +08::01::2022 03:05:23|YUKI NO SHINGUN| +08::01::2022 03:05:24|>only the feet| +08::01::2022 03:05:24|За здоровье!| +08::01::2022 03:05:25|I cuming | +08::01::2022 03:05:26|love this!| +08::01::2022 03:05:27|I WANT TO SEE FEET| +08::01::2022 03:05:28|LET ME SEE YOUR FEET| +08::01::2022 03:05:30|old +08::01::2022 03:05:30|KI NO MAMA| +08::01::2022 03:05:30|ini +08::01::2022 03:05:30|BEST SONG| +08::01::2022 03:05:32|NUT: BUSTED| +08::01::2022 03:05:32|>Just strolling trough cold snow| +08::01::2022 03:05:32|no clothes| +08::01::2022 03:05:34|erwin socks......| +08::01::2022 03:05:36|ERWINS FEET MMMMMMMMMMMMMM| +08::01::2022 03:05:36|EET +08::01::2022 03:05:36|Erwin's feet... | +08::01::2022 03:05:36|eet? +08::01::2022 03:05:37|ERWIN'S FROSTBITE FEET| +08::01::2022 03:05:38|CUTE FLOOF| +08::01::2022 03:05:38|COLD FEET| +08::01::2022 03:05:38|eet +08::01::2022 03:05:39|EEEEEEET +08::01::2022 03:05:39|EET +08::01::2022 03:05:40|footfags +08::01::2022 03:05:42|EEEEEEEET +08::01::2022 03:05:42|ootfags.... +08::01::2022 03:05:43|feetfags +08::01::2022 03:05:43|ewd +08::01::2022 03:05:44|DEEP SNIFF| +08::01::2022 03:05:44|feet +08::01::2022 03:05:45|DASHING THROUGH THE SNOW| +08::01::2022 03:05:45|BASED FOOTFAG YUKARI| +08::01::2022 03:05:45|let me see your feet| +08::01::2022 03:05:45|>wearing skirts in the snow| +08::01::2022 03:05:46|EET +08::01::2022 03:05:46|Yukari no| +08::01::2022 03:05:47|ERwin sweaty feet| +08::01::2022 03:05:48|ROI +08::01::2022 03:05:49|EET +08::01::2022 03:05:50|es +08::01::2022 03:05:51|WHAT COMES OUT OF THE PENIS-| +08::01::2022 03:05:51|The one True pairing| +08::01::2022 03:05:51|footfag yukari| +08::01::2022 03:05:51|letting Yukari see your feet...| +08::01::2022 03:05:53|EET +08::01::2022 03:05:55|ongou.jpg +08::01::2022 03:05:55|>seasoned feet| +08::01::2022 03:05:56|Clever Yukari| +08::01::2022 03:05:58|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 03:05:58|IMAGINE THE SMELL| +08::01::2022 03:05:58|I tried this once. couldn't get my feet in with the paper| +08::01::2022 03:05:59|erwin x yukari i ship| +08::01::2022 03:06:00|KILL YOURSELVES FOOTFAGS| +08::01::2022 03:06:01|_; +08::01::2022 03:06:03|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEETTTTTTTTTTT +08::01::2022 03:06:03|Footr seasoning?| +08::01::2022 03:06:04|>spicy feet| +08::01::2022 03:06:05|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET +08::01::2022 03:06:06|LICK IT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 03:06:07|Yukari touch Erwin feet| +08::01::2022 03:06:07|a little salt and pepper on your feet| +08::01::2022 03:06:07|picy +08::01::2022 03:06:08|Yukari likes spicy feet| +08::01::2022 03:06:10|I CAN KEEP THEIR FEET WARM WITH MY MOUTH| +08::01::2022 03:06:14|Erwin's frozen foot sweat| +08::01::2022 03:06:14|footcare is important in warfare| +08::01::2022 03:06:14|Yukarin making friends :)| +08::01::2022 03:06:16|Over by christmas ;____;| +08::01::2022 03:06:20|just piss in your boots| +08::01::2022 03:06:20|orons +08::01::2022 03:06:26|ORE +08::01::2022 03:06:30|k:: +08::01::2022 03:06:32|bandage foot| +08::01::2022 03:06:33|erwin must be tank in disquise, | +08::01::2022 03:06:34|>tank corner OST| +08::01::2022 03:06:35|real lore| +08::01::2022 03:06:36|Just kill the russians and take their boots| +08::01::2022 03:06:37|I'M LEARNING BROS| +08::01::2022 03:06:39|SPICY GuP FEEEEEEEEEEEET| +08::01::2022 03:06:40|SLAVS ARE PART MUMMY| +08::01::2022 03:06:40|FEET LORE| +08::01::2022 03:06:43|>just wear socks bro| +08::01::2022 03:06:44|commies +08::01::2022 03:06:44|WRAP MY FEET, AKIYAMA-DONO!| +08::01::2022 03:06:48|feetfags +08::01::2022 03:06:49|AATI +08::01::2022 03:06:50|fucking nerds| +08::01::2022 03:06:52|SS uniform erwin| +08::01::2022 03:06:54|>girls and their shoes| +08::01::2022 03:06:54|Now I will never have cold feet| +08::01::2022 03:06:54|don't lie yukari| +08::01::2022 03:06:54|change your socks| +08::01::2022 03:06:55|DEEPEST LORE| +08::01::2022 03:06:55|ootfags +08::01::2022 03:06:56|based larpers| +08::01::2022 03:06:58|cute fluff| +08::01::2022 03:06:58|CUTE | +08::01::2022 03:06:58|yukari feet....| +08::01::2022 03:07:02|who tf is taku-san| +08::01::2022 03:07:03|UTE +08::01::2022 03:07:05|CUTW <3| +08::01::2022 03:07:06|CUTE NERD COUPLE| +08::01::2022 03:07:06|DESU YO NE??| +08::01::2022 03:07:07|Typical girls talking about shoes | +08::01::2022 03:07:08|UTE +08::01::2022 03:07:08|taka san| +08::01::2022 03:07:09|desuyo neeeee| +08::01::2022 03:07:10|Bootsu Desu| +08::01::2022 03:07:10|CUTE FOX| +08::01::2022 03:07:10|TU +08::01::2022 03:07:10|ERWIN DOOJIN WHERE| +08::01::2022 03:07:11|Imagine sniffing Yukaris boots haha| +08::01::2022 03:07:11|F I R S T T I M E| +08::01::2022 03:07:13|girls und boots| +08::01::2022 03:07:14|>only two feet| +08::01::2022 03:07:15|based mom| +08::01::2022 03:07:16|ESU +08::01::2022 03:07:17|t +08::01::2022 03:07:19|So which one tops?| +08::01::2022 03:07:20|ich liebe yukari| +08::01::2022 03:07:20|>she has only two feet| +08::01::2022 03:07:20|AHHHHHH I WANT YUKARI GF| +08::01::2022 03:07:22|love this bit| +08::01::2022 03:07:23|NEED MORE ERWIN| +08::01::2022 03:07:25|Cute girlls talking about cute boots| +08::01::2022 03:07:25|>tfw no wehraboo gf| +08::01::2022 03:07:28|REFRESH REFRESH REFRESH SOME OF YOU ARE REALLY OUT OF SYNC| +08::01::2022 03:07:28|Imagine the smell of her footsweat haha| +08::01::2022 03:07:28|WHY ARE MOMS LIKE THAT?| +08::01::2022 03:07:32|is this girl talk?| +08::01::2022 03:07:32|how long we talking about dis| +08::01::2022 03:07:34|THIGH HIGH BOOTS| +08::01::2022 03:07:38|is this how girl talk is?| +08::01::2022 03:07:45|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 03:07:46|noo, don't buffer now| +08::01::2022 03:07:46|ased +08::01::2022 03:07:46|its autism talk| +08::01::2022 03:07:48|yes, just listen| +08::01::2022 03:07:49|i hope so| +08::01::2022 03:07:51|USA USA USA USA| +08::01::2022 03:07:52|THE LORE DEEPEST | +08::01::2022 03:07:52|WHERE ARE THE TANKS?| +08::01::2022 03:07:55|JSDF chads| +08::01::2022 03:07:56|>refresh >loose all your coins No way fag| +08::01::2022 03:07:56|that's how BEST girls talk anon| +08::01::2022 03:07:56|You will nbevern smell stinky Yukari feet| +08::01::2022 03:07:57|WHAT ARE THOOOOOOOOOOOOOOOOOOOSE| +08::01::2022 03:07:58|USA BTFO| +08::01::2022 03:07:58|URICA +08::01::2022 03:08:00|SABROS... +08::01::2022 03:08:01|USA USA USA| +08::01::2022 03:08:04|not just that he was in ww fucking 1| +08::01::2022 03:08:04|I thought everyone was on boats?| +08::01::2022 03:08:04|en? +08::01::2022 03:08:05|You did order your kommandostore boots, right anon?| +08::01::2022 03:08:05|sabros... +08::01::2022 03:08:06|ANIC +08::01::2022 03:08:08|ANZAI +08::01::2022 03:08:09|men +08::01::2022 03:08:10|wtf why is the USA so incompetent| +08::01::2022 03:08:10|source: my ass| +08::01::2022 03:08:11|korea all over again......| +08::01::2022 03:08:12|>jap propaganda| +08::01::2022 03:08:13|Ugh, Yuckari keeps talking about her weird military stuff...| +08::01::2022 03:08:13|burgers BTFO by nippon| +08::01::2022 03:08:14|jap bias| +08::01::2022 03:08:15|>the absolute state of burgers| +08::01::2022 03:08:18|Bervidin patch :DDD| +08::01::2022 03:08:23|AMERICANS +08::01::2022 03:08:23|based JSDF| +08::01::2022 03:08:24|diots +08::01::2022 03:08:25|: DDDDDDDDDDDDDDDDD| +08::01::2022 03:08:26|EEEEEE +08::01::2022 03:08:27|omfy +08::01::2022 03:08:29|JSDF STRONK| +08::01::2022 03:08:30|>the absolute state of the Japanese military| +08::01::2022 03:08:30|nippon 1:0 usa| +08::01::2022 03:08:30|ENIS +08::01::2022 03:08:30|No they are fucking NOT used to training in cold weather| +08::01::2022 03:08:32|JDSF > Burgers| +08::01::2022 03:08:37|why are americans so weak| +08::01::2022 03:08:41|That's a blatant fucking lie lmao| +08::01::2022 03:08:43|can you even buy snow in walmart| +08::01::2022 03:08:43|usa bros....| +08::01::2022 03:08:45|JSDF +08::01::2022 03:08:48|snow is too spicy| +08::01::2022 03:08:48|They used heat coins| +08::01::2022 03:08:48|>JSDF propaganda| +08::01::2022 03:08:49|THE HUWAITO PIGGU FEARS THE COLD| +08::01::2022 03:08:50|SNOW BALL FIGHT > WAR| +08::01::2022 03:08:50|RETURNED JUST IN TIME FOR THE AUTISTS| +08::01::2022 03:08:50|Im pretty sure the US has at least 2 points against japan| +08::01::2022 03:08:50|mutts seething| +08::01::2022 03:08:51|THIS IS BIAS RIGHT????? AMERICA BROS?!?!?!?!| +08::01::2022 03:08:53|I remember my dad going on exercises against Americans| +08::01::2022 03:08:53|cute girls and propaganda| +08::01::2022 03:08:53|glorious nippon, I kneel| +08::01::2022 03:08:54|Fake news| +08::01::2022 03:08:54|>Burgers can't stand cold| +08::01::2022 03:08:55|JDSF FAGS| +08::01::2022 03:08:55|AMERICANS COPING IN CHAT| +08::01::2022 03:08:56|The US army bows to the JSDF| +08::01::2022 03:08:58|americans are only good at making burgers| +08::01::2022 03:08:58|USA WEAKNESS = MRI, SNOW| +08::01::2022 03:08:58|Is recon some hip slang for sex| +08::01::2022 03:09:00|foreshadowing +08::01::2022 03:09:01|ODOKO +08::01::2022 03:09:01|>J >S >D >F...| +08::01::2022 03:09:02|Molotov... | +08::01::2022 03:09:03|Based on a True story| +08::01::2022 03:09:03|The Americans were shit and gave in in the end| +08::01::2022 03:09:06|>Jap autistic nationalists| +08::01::2022 03:09:06|AMERICANS CANT EVEN MAKE BURGERS| +08::01::2022 03:09:06|W-we were just concerned for our tropical allies...| +08::01::2022 03:09:07|nips would beat the americans in any war| +08::01::2022 03:09:09|Kneel you burgers| +08::01::2022 03:09:11|Why hasn't the JSDF taken over the world yet?| +08::01::2022 03:09:14|AMERICANS ARE ONLY GOOD AT EATING BURGERS| +08::01::2022 03:09:16|THE FATTY FEARS THE SNOW| +08::01::2022 03:09:17|good vision ladies| +08::01::2022 03:09:18|EMAKO +08::01::2022 03:09:18|anthem time| +08::01::2022 03:09:18|ONG +08::01::2022 03:09:18|EMAKO +08::01::2022 03:09:19|EMAKO +08::01::2022 03:09:20|Get btfo by weather? Do americans really?| +08::01::2022 03:09:20|ODOCUTE +08::01::2022 03:09:21|Americans only function when they have their supply chain| +08::01::2022 03:09:22|EMAKO +08::01::2022 03:09:22|ONG +08::01::2022 03:09:23|MESHI NI| +08::01::2022 03:09:24|UTPLAYED +08::01::2022 03:09:24|EMAKO +08::01::2022 03:09:25|EMANKO +08::01::2022 03:09:27|UMBASS +08::01::2022 03:09:29|RUN IT'S THE NKVD| +08::01::2022 03:09:30|Sodoko you dumbass| +08::01::2022 03:09:30|Sodoko's fault| +08::01::2022 03:09:31|RE MA N KO| +08::01::2022 03:09:31|NIPS WOULD BE THE MASTERS OF THE WORLD IF THEY COULD STOP SUICIDING| +08::01::2022 03:09:31|kv-2 tan mentioned!| +08::01::2022 03:09:38|! Banger alert ! Banger alert !| +08::01::2022 03:09:42|Mako's manko...| +08::01::2022 03:09:43|SAMUSA NO TAKIBI| +08::01::2022 03:09:43|JSDF is like, kind of a joke | +08::01::2022 03:09:48|2nd best song| +08::01::2022 03:09:49|Two retards in the snow| +08::01::2022 03:09:50|YO GIVE ME THE AUX| +08::01::2022 03:09:51|KOUMYOU BANASHI| +08::01::2022 03:09:51|these girls should sing more| +08::01::2022 03:09:52|yal are behind as hell| +08::01::2022 03:09:53|thsi song slaps fr fr| +08::01::2022 03:09:53|Is banger some zoomer slang| +08::01::2022 03:09:55|japanese military music are bangers| +08::01::2022 03:09:58|itosu~ +08::01::2022 03:09:59| +08::01::2022 03:09:59|Then what's the punchline?| +08::01::2022 03:09:59|ronebone +08::01::2022 03:10:00|Target Spotted| +08::01::2022 03:10:08|pronebone in the cold| +08::01::2022 03:10:08|ES +08::01::2022 03:10:09|YES SIR!| +08::01::2022 03:10:11|TEEEEE +08::01::2022 03:10:11|YES SIR| +08::01::2022 03:10:11|Why didn't they bring the tanks with them and snipe them?| +08::01::2022 03:10:14|she's so happy :)| +08::01::2022 03:10:15|YES SIR| +08::01::2022 03:10:16|the only thing banging is yukari's body| +08::01::2022 03:10:20|cuddling with yukari for warmth| +08::01::2022 03:10:24|UTE +08::01::2022 03:10:25|YES SAH| +08::01::2022 03:10:25|ESSAAAAAAAA +08::01::2022 03:10:26|essa +08::01::2022 03:10:27|ESSAAAAAAA +08::01::2022 03:10:27|7 +08::01::2022 03:10:27|YES SIR| +08::01::2022 03:10:30|YES SAAAAAAAA| +08::01::2022 03:10:30|TTTT +08::01::2022 03:10:32|Good ol' memesubs| +08::01::2022 03:10:33|Guys, can you start referring to me as Yukari? Thanks.| +08::01::2022 03:10:33|Hiding in Yukari's hair for warmth| +08::01::2022 03:10:34|I want to squeeze Yukari's firm belly| +08::01::2022 03:10:34|EYESSSSS SAHHH| +08::01::2022 03:10:34|YESSA o7| +08::01::2022 03:10:35|this is a banger| +08::01::2022 03:10:35|o:: +08::01::2022 03:10:38|Cute squad| +08::01::2022 03:10:41|I feel like the chat is operating on 2 timelines| +08::01::2022 03:10:41|cute cute cute| +08::01::2022 03:10:43|You still remember the basic of CQC Yukari right| +08::01::2022 03:10:43|You will never be Yukari| +08::01::2022 03:10:44|Yukari) +08::01::2022 03:10:45|TENNO HEIKA| +08::01::2022 03:10:46|head bopper| +08::01::2022 03:10:47|here???? +08::01::2022 03:10:50|nice shovel| +08::01::2022 03:10:50|what else does she carry?| +08::01::2022 03:10:51|A FUCKING SHOVEL| +08::01::2022 03:10:51|>took a shovel out of her ass| +08::01::2022 03:10:52|AAAAAAAAAAAANNNNNNZAAAAAAAAAAAAAIIIIIIIIIIIII +08::01::2022 03:10:58|Yukari's shovel...| +08::01::2022 03:10:59|I'm drunk, I operate on my own timeline| +08::01::2022 03:11:01|POCKET SHUVEL| +08::01::2022 03:11:02|put the glasses on you retard| +08::01::2022 03:11:02|CUTE FLOOF| +08::01::2022 03:11:05|now have sex| +08::01::2022 03:11:10|i own a shovel just like that :D| +08::01::2022 03:11:12|Floof best girl| +08::01::2022 03:11:12|comfy cave| +08::01::2022 03:11:12|UUPUU +08::01::2022 03:11:14|shovel floof| +08::01::2022 03:11:15|EEEEEEEEEEEEEEX +08::01::2022 03:11:15|>tfw no cave dwelling gf| +08::01::2022 03:11:15|sex for warmth, now| +08::01::2022 03:11:15|it collapsed and they died| +08::01::2022 03:11:16|Shovels, grenades, maps, everything!| +08::01::2022 03:11:17|lappspaten +08::01::2022 03:11:17|SEX IN THE SNOW CAVE| +08::01::2022 03:11:18|The Yukari grotto| +08::01::2022 03:11:20|same here anon!| +08::01::2022 03:11:21|The scouts aredead ;_;| +08::01::2022 03:11:22|Yukari's sex cave| +08::01::2022 03:11:23|Where's duce| +08::01::2022 03:11:24|OUUUUP +08::01::2022 03:11:28|Shouldn't these two be absolutely freezing?| +08::01::2022 03:11:31|i want to go camping bros| +08::01::2022 03:11:31|DUCE died| +08::01::2022 03:11:32|F I R S T T I M E| +08::01::2022 03:11:34|god i want to cum in her hair| +08::01::2022 03:11:35|I'M AT SOUP| +08::01::2022 03:11:36|ARBON +08::01::2022 03:11:39|Cute grills don;tr frteese| +08::01::2022 03:11:41|JUST USE HEAT COINS YOU DUMB FLOOF| +08::01::2022 03:11:41|-duce +08::01::2022 03:11:44|Rice Rations| +08::01::2022 03:11:46|CARBON COATED RICE| +08::01::2022 03:11:46|ARUHODO +08::01::2022 03:11:47|uce +08::01::2022 03:11:47|FAKE WINTER| +08::01::2022 03:11:48|frozen jelly donuts?| +08::01::2022 03:11:48|OMUNISM +08::01::2022 03:11:48|>he doesnt know about how snow works underground| +08::01::2022 03:11:49|FUCK CAMPING, AND FUCK YURU CAMP| +08::01::2022 03:11:51|the soup aisle?| +08::01::2022 03:11:53|Just get out of the soup section| +08::01::2022 03:11:55|Caesar can't understnad basic thermodynamics| +08::01::2022 03:11:55|Carbon Coating defeats col;d| +08::01::2022 03:12:00|ULGE +08::01::2022 03:12:00|ITS STILL SOUP| +08::01::2022 03:12:01|good taste in entrenching equipment| +08::01::2022 03:12:04|ulge... +08::01::2022 03:12:08|ULGE +08::01::2022 03:12:10|Technically, the Lee was equiped with a supplementary gas heater...| +08::01::2022 03:12:12|squeeze the german bulge....| +08::01::2022 03:12:13|Are Yukarin's legs carbon-coated| +08::01::2022 03:12:14|yukari will battle my bulge| +08::01::2022 03:12:16|LARP ALERT LARP ALERT| +08::01::2022 03:12:17|ARJI +08::01::2022 03:12:18|ULGE +08::01::2022 03:12:20|Look at how their beverages steam; it's obviously real cold| +08::01::2022 03:12:21|Good ol' LARP| +08::01::2022 03:12:23|>she will use it in das finale 4| +08::01::2022 03:12:24|Dorks | +08::01::2022 03:12:25|UTISM +08::01::2022 03:12:26|autistic roleplay| +08::01::2022 03:12:28|those jelly donust look pretty good| +08::01::2022 03:12:29|!LARP ALERT!| +08::01::2022 03:12:33|haha momo| +08::01::2022 03:12:34|TL NOTE| +08::01::2022 03:12:35|best grils| +08::01::2022 03:12:36|orks +08::01::2022 03:12:36|Das Finale is a lie| +08::01::2022 03:12:36|WHAT IS SNOW?| +08::01::2022 03:12:38|cute dorks| +08::01::2022 03:12:38|God I wish I was autistic too| +08::01::2022 03:12:38|ARP +08::01::2022 03:12:38|CUTE LARP| +08::01::2022 03:12:38|what tf is snow| +08::01::2022 03:12:39|UTE +08::01::2022 03:12:40|uties +08::01::2022 03:12:40|BASED LARP| +08::01::2022 03:12:41|awaii +08::01::2022 03:12:42|AHAHAHAHAHA +08::01::2022 03:12:43|eternal torment and misery| +08::01::2022 03:12:43|HELL YEAH| +08::01::2022 03:12:46|I can't believe Yuakri is fucking dead| +08::01::2022 03:12:46|HOLY FUCK YUKARI IS DEAD| +08::01::2022 03:12:47|autistic falling| +08::01::2022 03:12:48| +08::01::2022 03:12:48|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 03:12:48|utism +08::01::2022 03:12:49|HOLY SHIT IS YUKARI DEAD BROS| +08::01::2022 03:12:49|F FOR YUKARI| +08::01::2022 03:12:49|ESU +08::01::2022 03:12:50|ater +08::01::2022 03:12:50|IP +08::01::2022 03:12:51| +08::01::2022 03:12:51| +08::01::2022 03:12:51|ead +08::01::2022 03:12:51|yeah! what is snow?| +08::01::2022 03:12:52|UTISM +08::01::2022 03:12:52|WWWWWWWWWWWWWWWWWWW +08::01::2022 03:12:52|I CAN'T BELIVE YUKARI IS DEAD| +08::01::2022 03:12:53|arpers +08::01::2022 03:12:53|EK +08::01::2022 03:12:53|I can't believe yukari is fucking dead| +08::01::2022 03:12:53|PRESS F YUKARI| +08::01::2022 03:12:53|UTE +08::01::2022 03:12:53|Baby dont hurt me| +08::01::2022 03:12:54|AKKOUDA +08::01::2022 03:12:54|CUTE AUTISM| +08::01::2022 03:12:54|TF +08::01::2022 03:12:55| +08::01::2022 03:12:55|what IS snow?| +08::01::2022 03:12:55|RIP YUKARI| +08::01::2022 03:12:57| +08::01::2022 03:12:57|TL note -------------------------->| +08::01::2022 03:12:59|cute larping| +08::01::2022 03:13:00| +08::01::2022 03:13:01| +08::01::2022 03:13:01| +08::01::2022 03:13:02|Cute baka| +08::01::2022 03:13:02|I CANT BELIEVE YUKARI IS DED| +08::01::2022 03:13:02|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 03:13:03|ip +08::01::2022 03:13:03|YUKARI IS DEAD| +08::01::2022 03:13:03|IP +08::01::2022 03:13:03| +08::01::2022 03:13:03|IP +08::01::2022 03:13:03|utism +08::01::2022 03:13:04| +08::01::2022 03:13:05|ip +08::01::2022 03:13:05|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 03:13:05| +08::01::2022 03:13:05| +08::01::2022 03:13:06|its over| +08::01::2022 03:13:07| +08::01::2022 03:13:07|YUKARI IS UFCKING DEAD| +08::01::2022 03:13:07|Fluff is dead| +08::01::2022 03:13:08| +08::01::2022 03:13:08| +08::01::2022 03:13:08|SHE DIED| +08::01::2022 03:13:10|ute +08::01::2022 03:13:11|TOOO PURE| +08::01::2022 03:13:11|TL NOTE: YUKI MEANS SNOW| +08::01::2022 03:13:12|I can't believe she's fucking dead| +08::01::2022 03:13:12|oh great, she's dead| +08::01::2022 03:13:13|theyre dead| +08::01::2022 03:13:13|I want to do it with Yukari| +08::01::2022 03:13:14| +08::01::2022 03:13:14|I can;t believe Yukari is dead| +08::01::2022 03:13:15|was it autism?| +08::01::2022 03:13:15|tumbling down| +08::01::2022 03:13:16| +08::01::2022 03:13:20|utecutecute +08::01::2022 03:13:23|Still warm| +08::01::2022 03:13:27|Update the stream, bakas, you're behidn| +08::01::2022 03:13:27|ildos +08::01::2022 03:13:27|TL NOTE: YUKARI MEANS BEST GIRL| +08::01::2022 03:13:28|tuctuctu +08::01::2022 03:13:29|based prepper| +08::01::2022 03:13:32|peculiar tools| +08::01::2022 03:13:37|INSUPEKTA GADUJETTU| +08::01::2022 03:13:47|I haven't drunk a single drop of water, wat do| +08::01::2022 03:13:49|>Yfw Yukair can outlift me| +08::01::2022 03:13:49|Yukari is peculiar indeed...| +08::01::2022 03:13:53|I'm so behind that I'm still at Anzio| +08::01::2022 03:13:54|drink some wa'a| +08::01::2022 03:13:57|drink alcohol| +08::01::2022 03:13:57|ie +08::01::2022 03:14:01|don't worry, they have carbon coated thighs. Comfy, warm, cute.| +08::01::2022 03:14:03|anzio never ended| +08::01::2022 03:14:03|I skipped class just for this| +08::01::2022 03:14:04|and a grenade| +08::01::2022 03:14:07|>TFW no Yukari GF| +08::01::2022 03:14:07|even a fucking bomb| +08::01::2022 03:14:09|pies +08::01::2022 03:14:09|Time to do some trolling...| +08::01::2022 03:14:10|carbon coated internal organs| +08::01::2022 03:14:11|Yukari carries this Franchise| +08::01::2022 03:14:12|sneeki breeki| +08::01::2022 03:14:12|Off to find wah| +08::01::2022 03:14:15|we do a little trolling| +08::01::2022 03:14:16|anzio eternal| +08::01::2022 03:14:16|C4 Rush!| +08::01::2022 03:14:19|flaggu tanku| +08::01::2022 03:14:21|They should offer Momo's body as a peace offering| +08::01::2022 03:14:23|INA +08::01::2022 03:14:23|>Not having christmass vaction this week| +08::01::2022 03:14:23|TANK BUTT| +08::01::2022 03:14:24|NINA YOU GO TO GULAG| +08::01::2022 03:14:24|Do Yukari always carry condoms?| +08::01::2022 03:14:24|ina +08::01::2022 03:14:26|Operation Snowy Blowy| +08::01::2022 03:14:27|NINA NINA NINA| +08::01::2022 03:14:28|Stealth 100| +08::01::2022 03:14:29|Hello fellow russians| +08::01::2022 03:14:29|INA +08::01::2022 03:14:29|cute soviet| +08::01::2022 03:14:31|Nina a cute| +08::01::2022 03:14:33|Comrade Nina!| +08::01::2022 03:14:33|Nina no baka| +08::01::2022 03:14:33|HOW DO YOU DO MY FELLOW COMMUNISTS| +08::01::2022 03:14:33|NINA WAS NEVER SEEN AGAIN| +08::01::2022 03:14:36|tiny little nina| +08::01::2022 03:14:38|nina baka| +08::01::2022 03:14:38|Senpai is so generous!| +08::01::2022 03:14:38|TALL FLOOF| +08::01::2022 03:14:40|my fellow russians,| +08::01::2022 03:14:41|GREETINGS COMRADE | +08::01::2022 03:14:41|TOVARISH NINA| +08::01::2022 03:14:41|OOOOOOOOOHHHHHH +08::01::2022 03:14:44|oan +08::01::2022 03:14:46|so cute| +08::01::2022 03:14:48|Hello fellow ruskie scum| +08::01::2022 03:14:50|what the heck Yukari forgot to record it this time| +08::01::2022 03:14:51|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 03:14:52|nina is so fucking cute bros| +08::01::2022 03:14:52|uuuuuuuuuuuoooooooooooooooooooooohhh +08::01::2022 03:14:54|INA +08::01::2022 03:14:54|oT +08::01::2022 03:14:54|cute slavs| +08::01::2022 03:14:56|UUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 03:14:56|UTE +08::01::2022 03:14:57|I Serve the Soviet Union| +08::01::2022 03:14:58|Fellow comrades| +08::01::2022 03:14:58|cute nina| +08::01::2022 03:14:58|us +08::01::2022 03:14:59|>40 small girls inside a trench coat| +08::01::2022 03:15:01|UTE +08::01::2022 03:15:03|I too kick dance for leisure| +08::01::2022 03:15:03|ERWIN YOU DUMB| +08::01::2022 03:15:07|ANDEMONAI +08::01::2022 03:15:08|Trickery 100| +08::01::2022 03:15:12|KATYUSHA STATUS: OWNED| +08::01::2022 03:15:13|Soviet YunYun| +08::01::2022 03:15:13|>like a chile| +08::01::2022 03:15:14|don't be fooled. this loli WILL break you in half| +08::01::2022 03:15:16|Yukari spying once again| +08::01::2022 03:15:18|damn female child...| +08::01::2022 03:15:19|dumb ruskies| +08::01::2022 03:15:19|dumb hick accent| +08::01::2022 03:15:20|OBODY +08::01::2022 03:15:20|AYONEEEEE~ +08::01::2022 03:15:21|facts, based nina| +08::01::2022 03:15:21|XPOSED +08::01::2022 03:15:24|Katyusha is an adult| +08::01::2022 03:15:26|ayoneeeee~ +08::01::2022 03:15:26|Can orai win once without cheatingf| +08::01::2022 03:15:27|Hello Fellow Russian| +08::01::2022 03:15:27|ching chong ping pong fellow ruskis| +08::01::2022 03:15:28|HAHA CHILD| +08::01::2022 03:15:28|AYONEEEEEEEE +08::01::2022 03:15:29|Yuri Erwin's the name| +08::01::2022 03:15:29|Yukari best honeypot | +08::01::2022 03:15:29|That's it Nina, you're going to Siberia| +08::01::2022 03:15:34|UOOOOOOOHHHHHHHHHHH KATYUSHA UOOOOOOOOOOOOOOOOOHHHHHHHHHH| +08::01::2022 03:15:37|how do you do fellow pravdans?| +08::01::2022 03:15:37|EROTIC RUSKIE CHILD| +08::01::2022 03:15:37|NINA NO| +08::01::2022 03:15:41|ABE +08::01::2022 03:15:42|AYONEEEEEEEE +08::01::2022 03:15:43|NINA YES| +08::01::2022 03:15:43|wned +08::01::2022 03:15:44|NINA THOSE ARE STATE SECRETS| +08::01::2022 03:15:48|What will Nina's punishment be?| +08::01::2022 03:15:50|that looks a LOT like a grisdie susbension tonk!| +08::01::2022 03:15:50|Nina's going to gulag for this| +08::01::2022 03:15:53|ape +08::01::2022 03:15:55|to gulag| +08::01::2022 03:15:56|NO NINA YOU'LL GET THE GULAG| +08::01::2022 03:15:56|Dumb red| +08::01::2022 03:15:58|IBERIA +08::01::2022 03:16:00|AABEE-TAN +08::01::2022 03:16:01|Firing Squad | +08::01::2022 03:16:01|Guppies are always punished with rape| +08::01::2022 03:16:03|NINA STOP OR KATYUSHA WILL SEND YOU TO SIBERIA| +08::01::2022 03:16:03|rape correction| +08::01::2022 03:16:04|Nina gonna suck some thick dicks for this| +08::01::2022 03:16:05|Top-tier, no, YUKARI-tier espionage!| +08::01::2022 03:16:07|KV A QT| +08::01::2022 03:16:07|Nina and her family was later sent to Siberia| +08::01::2022 03:16:07|is nina the strongest loader| +08::01::2022 03:16:08|NINA STFU THE NKVD IS LISTENING| +08::01::2022 03:16:09|NINA NOOOOOO| +08::01::2022 03:16:12|AKABAKA +08::01::2022 03:16:12|igger +08::01::2022 03:16:15|avage +08::01::2022 03:16:16|UUUUUUUUUUTE +08::01::2022 03:16:16|so cute| +08::01::2022 03:16:19|Press R to inform on Nina| +08::01::2022 03:16:23| +08::01::2022 03:16:24|Stalinium approved| +08::01::2022 03:16:26|NOT R| +08::01::2022 03:16:26|RRRRRRRRRRRRRRRRR +08::01::2022 03:16:27|o +08::01::2022 03:16:27| +08::01::2022 03:16:28|Nina gonna get whipped in the gulag| +08::01::2022 03:16:28| +08::01::2022 03:16:33|WHY'D YOU SPILL YER BEANS| +08::01::2022 03:16:34|I WILL COME INSIDE OF NINA| +08::01::2022 03:16:34|Hard R| +08::01::2022 03:16:34|such nice spies| +08::01::2022 03:16:35|COCOA SAN| +08::01::2022 03:16:36|Press B to blackmail Nina instead of reporting| +08::01::2022 03:16:37|ALINA IS A SNITCH| +08::01::2022 03:16:37|NINA YOU"RE GOING TO CHECHNYA GO FIGHT THE REBELS| +08::01::2022 03:16:37|I want to make some Gogo now| +08::01::2022 03:16:37|Who's Nina? There's no one at Pravda by that name...| +08::01::2022 03:16:38|UTEYUSHA +08::01::2022 03:16:39|ALINA IS LISTENING NINA NO| +08::01::2022 03:16:39| +08::01::2022 03:16:39| +08::01::2022 03:16:40|EK +08::01::2022 03:16:41|Why does this child have such a short skirt? | +08::01::2022 03:16:42|Ironic Lolicons get run over by my tank| +08::01::2022 03:16:44|BBBBB +08::01::2022 03:16:44|RIP IN PIECE NINA| +08::01::2022 03:16:45| +08::01::2022 03:16:45|Nina is gonna be made a cocksleeve| +08::01::2022 03:16:46|Pure elation| +08::01::2022 03:16:46|ute +08::01::2022 03:16:48|DAYS OF DASH| +08::01::2022 03:16:48|Katyu an egotist| +08::01::2022 03:16:50|MAO +08::01::2022 03:16:52|it was at taht moment alina decided she didnt see anything| +08::01::2022 03:16:53|CUTE HORLY FLOOF| +08::01::2022 03:16:56|dat face| +08::01::2022 03:16:57|Oh God Yukari is so cute| +08::01::2022 03:16:57|>forcing the ironic lolicon meme| +08::01::2022 03:16:59|ong +08::01::2022 03:17:00|lessss goooo banger| +08::01::2022 03:17:01|I hope their sweet thighs don't get frostbite| +08::01::2022 03:17:01|they're our senpais dummy| +08::01::2022 03:17:02|>she's unaware| +08::01::2022 03:17:03|Cute retard| +08::01::2022 03:17:04|UN +08::01::2022 03:17:04|o:: +08::01::2022 03:17:05|>She doesn't know| +08::01::2022 03:17:06|Fucking idiots| +08::01::2022 03:17:07|>ironic lolicon| +08::01::2022 03:17:09|Nina is such a retrard| +08::01::2022 03:17:09|TH PERFECT CRIME| +08::01::2022 03:17:10|ironic +08::01::2022 03:17:11|o:: +08::01::2022 03:17:11|I'M DREAMING| +08::01::2022 03:17:11|>nina cost them the match| +08::01::2022 03:17:12|Charisma lock passed| +08::01::2022 03:17:14|ironic +08::01::2022 03:17:14|cheese it| +08::01::2022 03:17:14|CARBON COATED THIGHS AAAAAAAAAAAA| +08::01::2022 03:17:15|! Banger alert ! Banger alert !| +08::01::2022 03:17:15|hahahah +08::01::2022 03:17:15|anger?! +08::01::2022 03:17:16|no irony here faggot| +08::01::2022 03:17:17|_'7 +08::01::2022 03:17:20|LOL LMAO| +08::01::2022 03:17:25|banger +08::01::2022 03:17:27|EAMLESS +08::01::2022 03:17:28|AKOOOOOOOOOOO +08::01::2022 03:17:30|Dark song| +08::01::2022 03:17:31|that cut| +08::01::2022 03:17:40|EAMLESS +08::01::2022 03:17:42|How haven't their thigh frozen over already| +08::01::2022 03:17:44|What is "fun"?| +08::01::2022 03:17:44|damn female child...| +08::01::2022 03:17:45|But they did come home alve| +08::01::2022 03:17:45|WITHOUT SEAMS| +08::01::2022 03:17:50|>it changed to a lower key| +08::01::2022 03:17:51|I hate fun| +08::01::2022 03:17:51|! BANGER ALERT !| +08::01::2022 03:17:52|high tech 3d| +08::01::2022 03:17:54|edited to perfection| +08::01::2022 03:17:56|Carbon Coated Thighs | +08::01::2022 03:18:00|MY FUCKING STREAM| +08::01::2022 03:18:04|SLAV MUSIC| +08::01::2022 03:18:07|Carbon coated teacups| +08::01::2022 03:18:08|red tanks| +08::01::2022 03:18:12|MORALE +08::01::2022 03:18:13|love this music| +08::01::2022 03:18:13|POLYUSHKA POLYE| +08::01::2022 03:18:14|Have yo uheard this saying?| +08::01::2022 03:18:15|get outta here stalker| +08::01::2022 03:18:20|wanna dance on my table now| +08::01::2022 03:18:21|3D of the future| +08::01::2022 03:18:25|PECO KAWAII| +08::01::2022 03:18:26|ZUSA +08::01::2022 03:18:26|You Know this Saying Right?| +08::01::2022 03:18:27|I want to unheard all those sayings plz| +08::01::2022 03:18:30|cyka blyat| +08::01::2022 03:18:30|The dance| +08::01::2022 03:18:30|TOVARISCH POLKOVNIK| +08::01::2022 03:18:34|Get ready to dance your way to victory!| +08::01::2022 03:18:35|imagine Stalingrad, but with cute girls| +08::01::2022 03:18:39|BREED RABBITS| +08::01::2022 03:18:40|IT'S GOOD TO SEE YOU ALL HERE TODAY| +08::01::2022 03:18:42|thats it| +08::01::2022 03:18:43|Not time to dance yet| +08::01::2022 03:18:47|SORE DA ;_;| +08::01::2022 03:18:49|NEED MORE SOUP| +08::01::2022 03:18:50|BUT IT WILL BE EVEN BETTER TO SEE YOU SOON| +08::01::2022 03:18:51|dumb duckd| +08::01::2022 03:18:54|STEP COUNTER ;___;| +08::01::2022 03:18:57|BREAKING THROUGH THAT WALL| +08::01::2022 03:18:57|Saki will freeze over| +08::01::2022 03:18:57|based ::his::| +08::01::2022 03:18:58|butt on the ground| +08::01::2022 03:19:05|The Guppies are sleeping...| +08::01::2022 03:19:05|aizuri +08::01::2022 03:19:05|ute +08::01::2022 03:19:08|YOU HEAR THAT, ANON? DON'T FALL ASLEEP!| +08::01::2022 03:19:09|ERDS +08::01::2022 03:19:09|AHHHH SHE FELL ASLEEP| +08::01::2022 03:19:13|BY ME| +08::01::2022 03:19:13|IF ONLY THEY WORE APPROPRIATE CLOTHING| +08::01::2022 03:19:14|nowbare +08::01::2022 03:19:15|why are we here just to suffer| +08::01::2022 03:19:16|typical russians| +08::01::2022 03:19:17|How much do these faggots eat| +08::01::2022 03:19:17|comfy sodoko| +08::01::2022 03:19:17|do the dance miho or you are getting disowned again| +08::01::2022 03:19:17|THE DANCE| +08::01::2022 03:19:18|cute helmets| +08::01::2022 03:19:18|HOROSHO +08::01::2022 03:19:18|THE SODOKO CACOON| +08::01::2022 03:19:19|CHEEKI BREEKI| +08::01::2022 03:19:20|You heard Sodoko; no sleeping.| +08::01::2022 03:19:21|ORSCHT +08::01::2022 03:19:21|THERE IT IS| +08::01::2022 03:19:30|BRING MORE SOUP| +08::01::2022 03:19:31|lol lmao| +08::01::2022 03:19:31|PARTY HARD| +08::01::2022 03:19:31|slav gunna slav| +08::01::2022 03:19:33|OSACHOV +08::01::2022 03:19:33|cyka blyat| +08::01::2022 03:19:34|smart communists| +08::01::2022 03:19:36|terrible way to put out a fire| +08::01::2022 03:19:37|WAIT: none of them wears adidas| +08::01::2022 03:19:39|Kick dance!| +08::01::2022 03:19:39|LYAT +08::01::2022 03:19:42|Dumb communist dorks| +08::01::2022 03:19:44|CHEEKI BREEKI IV DAMKE| +08::01::2022 03:19:46|opnitsas +08::01::2022 03:19:52|the right way to put out a fire is with piss| +08::01::2022 03:19:53|es +08::01::2022 03:19:56|flower in snow????!!!111| +08::01::2022 03:19:57|dork dance incoming| +08::01::2022 03:20:03|ponyatno have a nice day| +08::01::2022 03:20:07|ANKOU TIEM| +08::01::2022 03:20:08|ahn ahn ahn| +08::01::2022 03:20:11|AUTISM ALERT| +08::01::2022 03:20:13|TIME FOR AUTISM| +08::01::2022 03:20:14|O I| +08::01::2022 03:20:15|do the funny| +08::01::2022 03:20:20|pissing on a fire or on a sauna smells like shit and you breathe the piss vapour| +08::01::2022 03:20:20|BY TAAL| +08::01::2022 03:20:22|AUTISTIC DANCE INCOMING| +08::01::2022 03:20:22|what would maho do in this time of need?| +08::01::2022 03:20:22|"do the thing"| +08::01::2022 03:20:24|ANKOU DANCE TIME| +08::01::2022 03:20:25|AN AH AN AN| +08::01::2022 03:20:25|do the stanky leg| +08::01::2022 03:20:25|INCOMING AUTISM. BRACE| +08::01::2022 03:20:26|do it| +08::01::2022 03:20:27|wtf? Is Momo right for once?| +08::01::2022 03:20:28|AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ | +08::01::2022 03:20:28|So can I piss before the infamous SnW episode tomorrow?| +08::01::2022 03:20:29|ITS TIME| +08::01::2022 03:20:30|AN AN AN AN| +08::01::2022 03:20:30|AN AN AN AN| +08::01::2022 03:20:30|-A-A-A-A-AN +08::01::2022 03:20:30|low energy| +08::01::2022 03:20:31|this bit is ten times funnier remembering ribbon warrior| +08::01::2022 03:20:31|A A AN AN A A AN AN A A AN AA AN AN AN AN| +08::01::2022 03:20:31|ah ah ah ah ah ah ah an| +08::01::2022 03:20:33|BEST DANCE| +08::01::2022 03:20:33|WAR DANCE INCOMING| +08::01::2022 03:20:33|AAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNN +08::01::2022 03:20:34|UTISM +08::01::2022 03:20:34|ringe +08::01::2022 03:20:34|errifying +08::01::2022 03:20:35|AAANG AAANG AAAANG| +08::01::2022 03:20:35|AN AN AN AN| +08::01::2022 03:20:35|an an an| +08::01::2022 03:20:35|a-a-an an a-a-an| +08::01::2022 03:20:36|NANANANANANANANANANANA +08::01::2022 03:20:36|a a an an| +08::01::2022 03:20:36|AUTISM INBOUND| +08::01::2022 03:20:37|it's autism hours| +08::01::2022 03:20:37|AN AN AN AN AN AN| +08::01::2022 03:20:38|AH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANG| +08::01::2022 03:20:38|Time for a sigma (fe)male move| +08::01::2022 03:20:40|! Bange- b... banger? Banger alert...?| +08::01::2022 03:20:41|AN AN AN AN AN| +08::01::2022 03:20:43|SHE IS GOING CRAZYYYYYYYYYYYYYY| +08::01::2022 03:20:44|THIS IS THE DANCE OF MY PEOPLE| +08::01::2022 03:20:44|AAANG AAANG AAANG| +08::01::2022 03:20:45|A A AN AN A A AN AN A A AN AN A A AN AN A A AN AN| +08::01::2022 03:20:46|AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ | +08::01::2022 03:20:46|ANG ANG ANG| +08::01::2022 03:20:47|ANGER +08::01::2022 03:20:47|AHN AHN AHN| +08::01::2022 03:20:48|the virgin Kazotsky Kick vs the chad Anglerfish dance| +08::01::2022 03:20:49|A A AN AN| +08::01::2022 03:20:50|ah hah ah ang| +08::01::2022 03:20:50|INO +08::01::2022 03:20:50|NOW SHE'S LOST IT| +08::01::2022 03:20:51|AN ANG ANG ANG| +08::01::2022 03:20:51|Ribbon warrior turned this into something menacing| +08::01::2022 03:20:52|AHN AHN AHN| +08::01::2022 03:20:52|epega +08::01::2022 03:20:53|-A-AN +08::01::2022 03:20:53|a a an a a an a a an a a an a a an a a an a a an a a an a a an a a an | +08::01::2022 03:20:53|we watching the OVA that is just this right| +08::01::2022 03:20:54|AN AN AN AN AN AN AN AN AN AN AN AN | +08::01::2022 03:20:56|This is your mind on panzers| +08::01::2022 03:20:56|AN AN AN AN AN AN| +08::01::2022 03:20:56|ANG ANG ANG| +08::01::2022 03:20:56|Actual best song| +08::01::2022 03:20:57|AHN AHN| +08::01::2022 03:20:57|BY ME| +08::01::2022 03:20:57|A A ANG ANG| +08::01::2022 03:20:58|A A AN AN AN ANG ANG| +08::01::2022 03:21:00|Ahn~ Ahn~ Ahn~| +08::01::2022 03:21:01|ANG ANG ANG| +08::01::2022 03:21:01|EXY +08::01::2022 03:21:02|indBROKEN +08::01::2022 03:21:04|ahn ahn ahn~| +08::01::2022 03:21:04|shake it!| +08::01::2022 03:21:04|FLAT ANZU| +08::01::2022 03:21:05|UTISM +08::01::2022 03:21:07|OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS | +08::01::2022 03:21:08|>dad walks in| +08::01::2022 03:21:09|MIND CRUSH| +08::01::2022 03:21:10| ! BANGER ALERT ! ! BANGER ALERT !| +08::01::2022 03:21:10|YOUR BRAIN ON ANG ANG| +08::01::2022 03:21:11|ANG ANG| +08::01::2022 03:21:12|ISOWNED +08::01::2022 03:21:12|MOYASHIT KOGASHITE YURAYURA| +08::01::2022 03:21:12|Miho is a cute dork| +08::01::2022 03:21:12|"i want to go home maho"| +08::01::2022 03:21:14|SHAMEFUR DISPRAY| +08::01::2022 03:21:14|mao +08::01::2022 03:21:15|AN AN AN!| +08::01::2022 03:21:16|utism +08::01::2022 03:21:16|ANG ANG ANG| +08::01::2022 03:21:17|yOU BETTER BE DANCING ANON| +08::01::2022 03:21:17|based Yukari| +08::01::2022 03:21:17|Ooari guppies dateability: 0| +08::01::2022 03:21:19|SORE +08::01::2022 03:21:19|tf +08::01::2022 03:21:19|>da fuck is my daughter doing?| +08::01::2022 03:21:20|UTISM +08::01::2022 03:21:21|YOISHO +08::01::2022 03:21:21|>I'll never find a husband for my daughter now| +08::01::2022 03:21:22|the pride of the nishizumi school!| +08::01::2022 03:21:22|they are no longer fit for marriage| +08::01::2022 03:21:23|owerful +08::01::2022 03:21:23|what is shiho's problem?| +08::01::2022 03:21:25|Need the outfits, now it's not sexy| +08::01::2022 03:21:26|hana's mom is dissappoint| +08::01::2022 03:21:27|>are ya winnin' son?| +08::01::2022 03:21:28|WE STILL HAVEN'T THE PROPER FACILITIES TO TAKE YOU ALL PRISONER| +08::01::2022 03:21:29| ANG ANG| +08::01::2022 03:21:29|do they know this shit is on tv?| +08::01::2022 03:21:30|ARASSHO +08::01::2022 03:21:30|NO WAY FAG| +08::01::2022 03:21:31|ANG ANG ANG| +08::01::2022 03:21:32|>are ya winin oarai?| +08::01::2022 03:21:33|Shiho so disappointed| +08::01::2022 03:21:33|I KNEEL| +08::01::2022 03:21:35|oT +08::01::2022 03:21:35|>I was right to disown my daughter| +08::01::2022 03:21:36|EAAAAAAAAAAAAAATTTTTTTTTHHHHHHHHHHHHHHH +08::01::2022 03:21:39|You interrupted our war dance for this?| +08::01::2022 03:21:39|I will not dance but I will drink more| +08::01::2022 03:21:39|FUCK OFF| +08::01::2022 03:21:40|katyusha sleep| +08::01::2022 03:21:41|HOW EMBARASSING| +08::01::2022 03:21:41|uteyusha! +08::01::2022 03:21:43|HIGHS +08::01::2022 03:21:43|Imagine molesting Katyushas butt as she sleeps| +08::01::2022 03:21:48|OORAIBROS... WE WILL NOT KNEEL...| +08::01::2022 03:21:49|UTEYUSHA +08::01::2022 03:21:49|KATYUSHA-SAMA, I DON'T KNEEL| +08::01::2022 03:21:50|OHIRRIM +08::01::2022 03:21:51|NOT KNEELING TODAY| +08::01::2022 03:21:57|what is everyone drinking? I got a bourbon here| +08::01::2022 03:21:58|WE SHALL FIGHT IN THE STREETS AND IN THE HILLS| +08::01::2022 03:21:59|why is the commander a child| +08::01::2022 03:21:59|WILL NOT KNEEL| +08::01::2022 03:22:00|>Interrupting their dance for a offer off surrender| +08::01::2022 03:22:00|127cm +08::01::2022 03:22:01|its clobberin time| +08::01::2022 03:22:01|ATER +08::01::2022 03:22:01|AAAAA ANZU| +08::01::2022 03:22:02|DO GET THAT| +08::01::2022 03:22:02|WE SHALL NEVER SURRENDER| +08::01::2022 03:22:04|PRAVDABROS WE'LL BE FINE| +08::01::2022 03:22:05|ain't no nigger| +08::01::2022 03:22:06|Motorboating Kayusha| +08::01::2022 03:22:07|HERE WE GO| +08::01::2022 03:22:08|Never kneel it shorties| +08::01::2022 03:22:08|trump card trump card| +08::01::2022 03:22:09|COMMANDER NISHIZUMI FIGHTS ALONE| +08::01::2022 03:22:10|cool, clear water| +08::01::2022 03:22:11|Who else put everything on Pravda?| +08::01::2022 03:22:14|Could you not set up a fucking death flag you flat foodie midget you| +08::01::2022 03:22:15|NOT ALONE| +08::01::2022 03:22:16|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 03:22:16|surrendering +08::01::2022 03:22:17|PANZER VOR!| +08::01::2022 03:22:18|PANZER VOR| +08::01::2022 03:22:18|Pravdabros we won| +08::01::2022 03:22:19|JELLY JIGGLE TIME!| +08::01::2022 03:22:19|pravdabros we can't lose| +08::01::2022 03:22:21|gween tea| +08::01::2022 03:22:21|PANZER VORE| +08::01::2022 03:22:21|What does it mean, ::a::?| +08::01::2022 03:22:21|pravda has this in the bag| +08::01::2022 03:22:21|PRAVDA BROS WE WILL CRUSH THE OOARAI CAPITALIST PIGS| +08::01::2022 03:22:22|PANZER VOR| +08::01::2022 03:22:23|PANZER VOR| +08::01::2022 03:22:23|PANTSU FOR| +08::01::2022 03:22:24|ERFLAT +08::01::2022 03:22:24|I put my house on Pravada| +08::01::2022 03:22:25|NOW!! +08::01::2022 03:22:29|NOW +08::01::2022 03:22:29|KV-2 my beloved| +08::01::2022 03:22:30|PANZER VOR| +08::01::2022 03:22:30|JELLY JIGGLE| +08::01::2022 03:22:32|PANZER VOR| +08::01::2022 03:22:32|PANTSU VOR| +08::01::2022 03:22:33|PANZER VORE| +08::01::2022 03:22:34|JELLY JIGGLE| +08::01::2022 03:22:36|Panzer Vore| +08::01::2022 03:22:37|PRAVDABROS LOOKS LIKE WE GONNA HAVE TO STOMP THEM| +08::01::2022 03:22:38|wtf does panzer vor mean?| +08::01::2022 03:22:38|ARISE ARISE TANKERS OF OARAI| +08::01::2022 03:22:39|Pravda will win, they can't beat superior Stalinium| +08::01::2022 03:22:39|my left ballsack on Pravda to win| +08::01::2022 03:22:45|what does panzer vor mean?| +08::01::2022 03:22:46|pantsu vore| +08::01::2022 03:22:48|atyusha-dono..... +08::01::2022 03:22:50|subtlke +08::01::2022 03:22:51|oT +08::01::2022 03:22:54|Panzer vor means Panzer vor| +08::01::2022 03:22:54|ALL ON KATYUSHA-SAMA| +08::01::2022 03:22:55|panzer vor means senshado| +08::01::2022 03:22:55|COMMIES SHALL REIGN SUPREME| +08::01::2022 03:22:56|pantsu whore| +08::01::2022 03:22:57|I want to lift Katyusha then yeet her into the snow| +08::01::2022 03:22:58|Katysha 4D plan: I sleep| +08::01::2022 03:22:58|I want them to Panzer For me| +08::01::2022 03:23:01|katyusha can sandwich me| +08::01::2022 03:23:03|is it nonstop buffering for anyone else right now too? | +08::01::2022 03:23:09|o +08::01::2022 03:23:09|За женщин!| +08::01::2022 03:23:09|buffering for me too| +08::01::2022 03:23:10|works on my machine| +08::01::2022 03:23:11|works on my machine :)| +08::01::2022 03:23:11|It's your end| +08::01::2022 03:23:11|efresh +08::01::2022 03:23:12|if buffer refresh| +08::01::2022 03:23:12|OTSUGEKIIIIIIIIIIII +08::01::2022 03:23:13|yet +08::01::2022 03:23:13|working here| +08::01::2022 03:23:13|efresh +08::01::2022 03:23:13|Running fine for me| +08::01::2022 03:23:13|No buffers, it's your end| +08::01::2022 03:23:15|OTSUGEKI +08::01::2022 03:23:15|OTSUGEKI +08::01::2022 03:23:16|no buffering rn for me| +08::01::2022 03:23:18|OTSUGEKI +08::01::2022 03:23:18|OTSUGEKI +08::01::2022 03:23:18|oorfag +08::01::2022 03:23:19|OTSUGEKI +08::01::2022 03:23:19|yoom +08::01::2022 03:23:19|MUH DEEP BATT;E| +08::01::2022 03:23:19|otsugeki +08::01::2022 03:23:20|Couldn't they have just shot a hole in the back?| +08::01::2022 03:23:20|>I can already see their face with tears streaming :sob:| +08::01::2022 03:23:20|otsugeki +08::01::2022 03:23:21|OTSUGEKI +08::01::2022 03:23:21|otsugeki? +08::01::2022 03:23:21|WORKS FINE FOR ME| +08::01::2022 03:23:23|Just get a better GPU nerd| +08::01::2022 03:23:24|OTSUGEKI +08::01::2022 03:23:24|no bufferign here chief| +08::01::2022 03:23:25|OTSUGEKI +08::01::2022 03:23:26|OTSUGEKI +08::01::2022 03:23:27|OTSUGEKI +08::01::2022 03:23:30| 撃 +08::01::2022 03:23:30|cute gremlin| +08::01::2022 03:23:30|OTSUGEK +08::01::2022 03:23:31|I AM THE GREATEST| +08::01::2022 03:23:33|works on my machine™| +08::01::2022 03:23:33|sasuga watashi ^_^^| +08::01::2022 03:23:34|just download more bitrate| +08::01::2022 03:23:34|突撃 突撃 突撃 突撃| +08::01::2022 03:23:34|GTG +08::01::2022 03:23:36|OTSUGEKI +08::01::2022 03:23:43|UTE +08::01::2022 03:23:46|-O-T-S-U-G-E-K-I +08::01::2022 03:23:47|I AM THE GREATEST! OH NO| +08::01::2022 03:23:47|IT'S TIME!| +08::01::2022 03:23:48| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 03:23:49|TU +08::01::2022 03:23:50|SHE IS THE GREATEST| +08::01::2022 03:23:52|momo +08::01::2022 03:23:52|NZU +08::01::2022 03:23:53|KATYUSHA IS A GENIUS| +08::01::2022 03:23:53|KAY IS BAE| +08::01::2022 03:23:55|I want anzu to sit on my lap ToT| +08::01::2022 03:23:55|cute actually competent gunner| +08::01::2022 03:23:57|ANZU ALWAYS WINS| +08::01::2022 03:23:57|OH NO| +08::01::2022 03:24:03|Anzu butt| +08::01::2022 03:24:04|LET'S GO ANZU| +08::01::2022 03:24:04|AXXXXXX +08::01::2022 03:24:05|KOMBAT | +08::01::2022 03:24:06|ZZZZZZZZZZZZZZ +08::01::2022 03:24:07|anzu always wins baby| +08::01::2022 03:24:08|I want to cuddle Erika| +08::01::2022 03:24:08|BEST OORAI go!| +08::01::2022 03:24:09|why is Momo so useless?| +08::01::2022 03:24:11|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 03:24:12|>capable but does nothing most of the time| +08::01::2022 03:24:14|nice yuzu| +08::01::2022 03:24:19|>this is my ultimate job| +08::01::2022 03:24:20|Anzu best gunner!| +08::01::2022 03:24:22|ANZU SUPERIORITY| +08::01::2022 03:24:25|p-pravdabros... this isnt going according to plan...| +08::01::2022 03:24:31|TRUST THE PLAN| +08::01::2022 03:24:32|>tfw chat dead 4 me| +08::01::2022 03:24:32|4 ENEMIES POSSIBLY MORE| +08::01::2022 03:24:33|I STILL BELIEVE IN PRAVDA| +08::01::2022 03:24:37|stalin ka| +08::01::2022 03:24:39|>anzu gimped herself the entire time by letting momo aim| +08::01::2022 03:24:40|How are they beating our glorius Stalinium?| +08::01::2022 03:24:41|>ignoring yuzu's driving skills| +08::01::2022 03:24:42|2 more minutes| +08::01::2022 03:24:49|Trust in Katyusha's genius, tovarish| +08::01::2022 03:24:49|I'll be the white on your rice ;)| +08::01::2022 03:24:52|penetrating stalinium| +08::01::2022 03:24:52|A FUCKING STALIN| +08::01::2022 03:24:53|ZA NAMI ROSSIYA MOSKVA Y ARBAT| +08::01::2022 03:24:54|its been 4+ hours of watching lesbians fight each other in tanks how the fuck did my life end up like this| +08::01::2022 03:24:55|WHITES OF THEIR EYES ON RICE BOIS| +08::01::2022 03:24:57|sex with stalin| +08::01::2022 03:25:00|I believe in the commies. No way they're losing this| +08::01::2022 03:25:02|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 03:25:02|TALINIUM +08::01::2022 03:25:03|time to buy pravdacoin| +08::01::2022 03:25:04|"we need to save our school but I wont gun even though Im good at it"| +08::01::2022 03:25:05|A V CHISTOM POLE SISTEMA GRAD| +08::01::2022 03:25:05|PENETRATE ANZU| +08::01::2022 03:25:06|enetration +08::01::2022 03:25:11|Since when did the chat become a gay porn platform| +08::01::2022 03:25:11|I wanmt to penetrate Stalin| +08::01::2022 03:25:12|PENETRATE ANZU AT POINT BLANK RANGE| +08::01::2022 03:25:12|COMMUNISM WILL WIN| +08::01::2022 03:25:13|you can leave any time faggot| +08::01::2022 03:25:14|ZA NAMI PUTIN I STALINGRAD| +08::01::2022 03:25:20|KOMBAT BACHANYA BACHANYA KOMBAT| +08::01::2022 03:25:22|Anzu OP| +08::01::2022 03:25:23|stalin naizuri| +08::01::2022 03:25:23|NZU!!!!!!!! +08::01::2022 03:25:24|LET'S GO ANZU!!!!| +08::01::2022 03:25:29|ANZU SUPERIORITY| +08::01::2022 03:25:33|ANZU too OP pls nerf| +08::01::2022 03:25:33|SE NO!| +08::01::2022 03:25:33|ANZU KILLING SPREE| +08::01::2022 03:25:33|Mo Icho| +08::01::2022 03:25:34|LETS GO ANZU!!!| +08::01::2022 03:25:36|seems too good| +08::01::2022 03:25:36|DAVAI VTOROY RAZ ZA SPETSNAZ| +08::01::2022 03:25:36|MOBILITY CRITICAL| +08::01::2022 03:25:36|MOU ICCHO| +08::01::2022 03:25:36|ANZU BTFOS COMMIES| +08::01::2022 03:25:39|remember carbon coating| +08::01::2022 03:25:40|AAANNNNNNNNZZZZZUUUUUUU UUUUUUUUUUOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +08::01::2022 03:25:41|ANZU UOOOOOOOOOOOOOH| +08::01::2022 03:25:41|will momo hit something?| +08::01::2022 03:25:41| +08::01::2022 03:25:41|anzu OP| +08::01::2022 03:25:41|who can stop this flattie?| +08::01::2022 03:25:42|my wife anzu taking names| +08::01::2022 03:25:43|Absolute God mode| +08::01::2022 03:25:44|ODLIKE +08::01::2022 03:25:44| +08::01::2022 03:25:45|wned +08::01::2022 03:25:46|skedaddle +08::01::2022 03:25:47|SE NO| +08::01::2022 03:25:47|EKT +08::01::2022 03:25:47| +08::01::2022 03:25:48|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 03:25:49| +08::01::2022 03:25:49|OOOOOOOOOOOOOO +08::01::2022 03:25:50|Too OP she needs to be nerfed by being lazy| +08::01::2022 03:25:50|EAD +08::01::2022 03:25:50| +08::01::2022 03:25:50| +08::01::2022 03:25:50|WICKED SICK| +08::01::2022 03:25:51| +08::01::2022 03:25:51|FUCK COMMIES| +08::01::2022 03:25:51|MURDER SPREE| +08::01::2022 03:25:51|why does momo exist?| +08::01::2022 03:25:52|OOOOOOOOOOOOO +08::01::2022 03:25:52|ARETA +08::01::2022 03:25:53|carbon coated physics| +08::01::2022 03:25:53|G +08::01::2022 03:25:53|Nonna will breach them| +08::01::2022 03:25:54|ASTED +08::01::2022 03:25:54| +08::01::2022 03:25:56| +08::01::2022 03:25:56|bone>carbon coating| +08::01::2022 03:25:56|eh +08::01::2022 03:25:56| +08::01::2022 03:25:57|KEDADDLE +08::01::2022 03:25:57|Riggity rekt| +08::01::2022 03:25:57|>ITS OVER| +08::01::2022 03:25:58| +08::01::2022 03:25:58|RRAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 03:26:00|kedaddle +08::01::2022 03:26:00| +08::01::2022 03:26:01|IP +08::01::2022 03:26:01| +08::01::2022 03:26:02| +08::01::2022 03:26:02|IP +08::01::2022 03:26:02|commanding and shooting at the same time is a complete pain in the ass| +08::01::2022 03:26:04|YUZU ASS| +08::01::2022 03:26:08|YUZU THICC| +08::01::2022 03:26:10|YUZU FAT ASS| +08::01::2022 03:26:11|REST IN PEPPERONI| +08::01::2022 03:26:12|Momo exist to be my cocksleeve as I penetrate Erika| +08::01::2022 03:26:12| +08::01::2022 03:26:14|go men| +08::01::2022 03:26:15|UCE +08::01::2022 03:26:16|momo exists to give us big titties| +08::01::2022 03:26:17|UTTE +08::01::2022 03:26:29|you think?| +08::01::2022 03:26:29|bros i thought t34 was the best in the world what the fuck happen.| +08::01::2022 03:26:30|What's an up dog then| +08::01::2022 03:26:30|PEKO UOH| +08::01::2022 03:26:31|>zero casualties| +08::01::2022 03:26:31|JUNK WAGONS| +08::01::2022 03:26:31|but yuzu is the tits of turtle team| +08::01::2022 03:26:37|amlost empty bleachers| +08::01::2022 03:26:40|????????????????????????????????????????????????????????????? +08::01::2022 03:26:41|" "| +08::01::2022 03:26:43|Pravda Bro Has Stalin Abandon | +08::01::2022 03:26:45|34bros... +08::01::2022 03:26:51|jb +08::01::2022 03:26:53|Orange Pekoe's sweet piss| +08::01::2022 03:26:54|Are we okay, ::a::?| +08::01::2022 03:26:54|35bros... +08::01::2022 03:26:55|T34 will not lose, have faith| +08::01::2022 03:26:56|AIJOUBU +08::01::2022 03:26:57|34bros... +08::01::2022 03:26:58|Peko, have you heard this saying? "We got too cocky pravdabros!!!" It is said when fools believe themselves infallible.| +08::01::2022 03:26:59|IAJOOBU +08::01::2022 03:27:01|would you freeze your ass off for oorai?| +08::01::2022 03:27:04|WE"RE OKAY| +08::01::2022 03:27:06|ES +08::01::2022 03:27:07|Not sure if I'm drunk or if the chat is getting more incoherent| +08::01::2022 03:27:10|<< HEY KID, WE LOOK GREAT! >>| +08::01::2022 03:27:11|it's over bros we're going to Vorkuta| +08::01::2022 03:27:12|Gloriuous stalinium will not loose| +08::01::2022 03:27:15|isemfoijwefa4,lrtq4.galh,k5oyma +08::01::2022 03:27:16|AIJOUBU +08::01::2022 03:27:16|ooarai should have surrendered| +08::01::2022 03:27:19|LET'S GO PRAVDA| +08::01::2022 03:27:21|oakdnjbrhg +08::01::2022 03:27:22|For me, it's the Beute Stalin| +08::01::2022 03:27:22|MIHO GET DOWN| +08::01::2022 03:27:23|It's just you anon| +08::01::2022 03:27:24|AMAYA! +08::01::2022 03:27:26|damn I need to take a shit| +08::01::2022 03:27:27|jobs to an early wahah2 tank| +08::01::2022 03:27:27|>Miho takes one to the head| +08::01::2022 03:27:27|i would stick my face on hetzer's hull in the middle of winter for ooarai| +08::01::2022 03:27:28|<>| +08::01::2022 03:27:28|ooarai have no chance| +08::01::2022 03:27:34|elp +08::01::2022 03:27:35|PRAVDA. WILL. WIN.| +08::01::2022 03:27:38|early on, the chat was lewd| +08::01::2022 03:27:41|That's a lot of tracers| +08::01::2022 03:27:43|now it's bizarre| +08::01::2022 03:27:44|maho pee| +08::01::2022 03:27:44|kino aa tracers| +08::01::2022 03:27:48|the game was rigged from the start| +08::01::2022 03:27:49|за правду| +08::01::2022 03:27:49|for me, it's the Pzkpfw 747(r)| +08::01::2022 03:27:50|Machine guns gomBRRRRRT| +08::01::2022 03:27:50|Is this touhou?| +08::01::2022 03:27:52|eventually it will get scary| +08::01::2022 03:27:52|i lost my shit when that guy got shot in fury| +08::01::2022 03:27:52|I will bet my dacha on Pravda| +08::01::2022 03:27:56|ZA RODINU| +08::01::2022 03:27:59|FOR MOTHER RUSSIA| +08::01::2022 03:28:00|Can we make it lewd AND bizarre| +08::01::2022 03:28:05|girls und panzer is the ace combat of anime| +08::01::2022 03:28:06|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 03:28:07|ankhoumojo +08::01::2022 03:28:10|RUSSIAN 2HU| +08::01::2022 03:28:16|KRASNAYA ARMIYA VSEH SILNEY| +08::01::2022 03:28:16|mako pee is the dark souls of garupan| +08::01::2022 03:28:18|STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG | +08::01::2022 03:28:20|wich 2hu would u fug| +08::01::2022 03:28:21|Isn't Kotobuki the Ace Combat of anime?| +08::01::2022 03:28:22|Is this Iron Hummingbirds?| +08::01::2022 03:28:24|chad stand| +08::01::2022 03:28:24|katyusha swearing| +08::01::2022 03:28:24|Time for a cup of I JOE YOU JOE| +08::01::2022 03:28:25|she said a cuss word omg| +08::01::2022 03:28:25|a rat's ass| +08::01::2022 03:28:25|РАААААААААААААА +08::01::2022 03:28:26|that stance| +08::01::2022 03:28:26|TAND +08::01::2022 03:28:28|unt +08::01::2022 03:28:29|HAD +08::01::2022 03:28:30|hold on to your pravdacoins bros| +08::01::2022 03:28:31|SIT THE FUCK DOWN MIHO| +08::01::2022 03:28:32|mako stance| +08::01::2022 03:28:32|Reimu > all other 2hus| +08::01::2022 03:28:32|CHAD STANE| +08::01::2022 03:28:33|heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeen +08::01::2022 03:28:33|ased +08::01::2022 03:28:33|AUTOBOTS ROLL OUT!| +08::01::2022 03:28:35|perfect tuck and roll| +08::01::2022 03:28:35|katusya idiot| +08::01::2022 03:28:37|EW +08::01::2022 03:28:38|ST +08::01::2022 03:28:38|ST +08::01::2022 03:28:40|yukari later died of hypothermia| +08::01::2022 03:28:40|0::10 +08::01::2022 03:28:41|SS +08::01::2022 03:28:41|oah +08::01::2022 03:28:41|power stance| +08::01::2022 03:28:42|lunge mine time| +08::01::2022 03:28:42|ATYUSHA +08::01::2022 03:28:42|SOYUZ NERUSHIMI.....| +08::01::2022 03:28:42|did a flip| +08::01::2022 03:28:43|roll spammer| +08::01::2022 03:28:44|ITAAAAAAAAA +08::01::2022 03:28:45|ITAAAAAAAA +08::01::2022 03:28:46|! Banger alert ! Banger alert !| +08::01::2022 03:28:46|USIC +08::01::2022 03:28:46|ONNA +08::01::2022 03:28:47|Power stance| +08::01::2022 03:28:48|this sucks play koreblinki tetris| +08::01::2022 03:28:50|I want to segs duce in all her 7 holes| +08::01::2022 03:28:50|itaaaaaaaa +08::01::2022 03:28:50|suicide bomber fluff| +08::01::2022 03:28:50|KITA <3| +08::01::2022 03:28:51|RESPUBLIK SVABODI| +08::01::2022 03:28:54| ターーーーーーー +08::01::2022 03:28:54|OOOOOH +08::01::2022 03:28:55|DO A BARREL ROLL| +08::01::2022 03:28:55|senshadou is souls like?| +08::01::2022 03:28:56|Carbon-coated fluff| +08::01::2022 03:28:57|UUUUUURRRRRRAAAAAAAAAAAA +08::01::2022 03:28:58|Is this legal?| +08::01::2022 03:29:01|YKHODILA +08::01::2022 03:29:01| +08::01::2022 03:29:01|ITAA +08::01::2022 03:29:03|ITA +08::01::2022 03:29:04|enemy spotted| +08::01::2022 03:29:05|METAL GEAR SOLID FLOOF| +08::01::2022 03:29:05|What does the proletariat think of this?| +08::01::2022 03:29:07|Did she just jumpo out of a driving tank?| +08::01::2022 03:29:08|tetris +08::01::2022 03:29:09|kino alert| +08::01::2022 03:29:09|OOOOOOM +08::01::2022 03:29:10|Katyusha will make it legal| +08::01::2022 03:29:15|sd +08::01::2022 03:29:19|if only lenin could see us now| +08::01::2022 03:29:24|PEEEEEEDDD +08::01::2022 03:29:24|Time for a real banger| +08::01::2022 03:29:29|ИНО +08::01::2022 03:29:29|panicu panicu| +08::01::2022 03:29:32|BANGER ALERT!| +08::01::2022 03:29:34|lenin would be proud| +08::01::2022 03:29:36|oh fug| +08::01::2022 03:29:37|fanta ne| +08::01::2022 03:29:38|Boiled bunnies| +08::01::2022 03:29:41|Shut up Nodoka]| +08::01::2022 03:29:42|UNNNNNNNNNNNY +08::01::2022 03:29:43|OTSUGEKI +08::01::2022 03:29:44|ZUSA +08::01::2022 03:29:46|bunnies get shot in the ass....| +08::01::2022 03:29:47|dont look fine| +08::01::2022 03:29:47|lol no injuries | +08::01::2022 03:29:48|$140 glasses| +08::01::2022 03:29:50|MY GLASSES| +08::01::2022 03:29:52|Vnimanie Kino incoming| +08::01::2022 03:29:55|F for the megames we lost| +08::01::2022 03:29:56|Not the glasses!| +08::01::2022 03:29:58|YET +08::01::2022 03:29:58|insured glasses| +08::01::2022 03:29:59|YET +08::01::2022 03:29:59|Why didn't she have carbon coated glasses?| +08::01::2022 03:30:01|GLASSES NOOO| +08::01::2022 03:30:02|yet! +08::01::2022 03:30:02|YET +08::01::2022 03:30:03| +08::01::2022 03:30:04|NOT THE MEGANE| +08::01::2022 03:30:04|Megane no more| +08::01::2022 03:30:05|Translator's note: nyet means no| +08::01::2022 03:30:06|she said russian????| +08::01::2022 03:30:07| NYET| +08::01::2022 03:30:08|"No!") +08::01::2022 03:30:10|NJET MOLOTOFF| +08::01::2022 03:30:10| +08::01::2022 03:30:11|thanks tl| +08::01::2022 03:30:11|Glaases are actually exspensive F| +08::01::2022 03:30:14|They havent spent enough time to be carbon coated yet| +08::01::2022 03:30:14|Nyet desu| +08::01::2022 03:30:16|uffer? +08::01::2022 03:30:19|YET +08::01::2022 03:30:21|What's the appeal of Katyuha again?| +08::01::2022 03:30:23|YET +08::01::2022 03:30:25|nah it's smooth here| +08::01::2022 03:30:25|nter +08::01::2022 03:30:26|MAGINE +08::01::2022 03:30:27|just dodge the tank shells| +08::01::2022 03:30:30|BIG NINA CANNON| +08::01::2022 03:30:31|balans has entered the chat| +08::01::2022 03:30:33|TE +08::01::2022 03:30:36|NINA NOOOOOO| +08::01::2022 03:30:38|she can struggle but not excape| +08::01::2022 03:30:38|Shoot the treads you fucks| +08::01::2022 03:30:40|EBITSU +08::01::2022 03:30:40|lyacht +08::01::2022 03:30:43|p-pravdabros... | +08::01::2022 03:30:45|the only appeal of katyusha is she comes with nonna| +08::01::2022 03:30:46|>appeal of Katyusha :::: Body and personality duh| +08::01::2022 03:30:49|21k let's FUCK it!| +08::01::2022 03:30:50|GO DUCKS| +08::01::2022 03:30:53|Katushas existence is to be my cocksleeve as I fuck Erika again| +08::01::2022 03:30:54|rip in piece nina| +08::01::2022 03:30:56|CAM ON DUCKS| +08::01::2022 03:30:59|ekt +08::01::2022 03:31:03|time to BURY!| +08::01::2022 03:31:05|THE STUGS ARE MY WIVES| +08::01::2022 03:31:06|it's over| +08::01::2022 03:31:10|>when the shot isn't guided by Stalin's spirit| +08::01::2022 03:31:10|There is still hope Pravda bros!| +08::01::2022 03:31:12|$20,000 ON KATYUSHA. PLEASE PLEASE PLEASE| +08::01::2022 03:31:13|LETS GO PRAVDA| +08::01::2022 03:31:15|The 28-3 of Senshado incoming...| +08::01::2022 03:31:17|BASED VOLLEYBALL SQUAD| +08::01::2022 03:31:22|UTS +08::01::2022 03:31:22|GuP DF6: Return of the Volleyball Club| +08::01::2022 03:31:24|SORE SORE SORE| +08::01::2022 03:31:27|SORE DA| +08::01::2022 03:31:29|Atlanta Falconbros...| +08::01::2022 03:31:30|UTS +08::01::2022 03:31:31|Volley butts will win the day| +08::01::2022 03:31:31|IF PRAVDA LOSES SEND ME TO VORKUTA| +08::01::2022 03:31:34|v o l l e y s q u i d| +08::01::2022 03:31:35|ATSO +08::01::2022 03:31:36|we need a pravda championship repeat| +08::01::2022 03:31:37|UTS +08::01::2022 03:31:38|otsugecxkmy!!!!!!!!!! +08::01::2022 03:31:39|UTS +08::01::2022 03:31:42|OorariBros im losing hope| +08::01::2022 03:31:43|yaa +08::01::2022 03:31:47|SEND OOARAI TO GULAG KATYUSHA!!!!| +08::01::2022 03:31:48|esus +08::01::2022 03:31:48|Guts dont stand a chance against soviet steel!| +08::01::2022 03:31:49|MILITARY REPORTS OORAI HANGED AT GITMO, COMPATRIOTS IN CONTROL -Q| +08::01::2022 03:31:51|wait why is guts the flag tank| +08::01::2022 03:31:51|igged +08::01::2022 03:31:51|Where are the nerds?| +08::01::2022 03:31:53|Guys I think Oarai is gonna lose.| +08::01::2022 03:31:54|its over ooaraibros| +08::01::2022 03:32:00|I bet my left ballsacks on Katyusha winning| +08::01::2022 03:32:00|sex gulag| +08::01::2022 03:32:00|Stalins spitrit will; prevai;l| +08::01::2022 03:32:01|UTS +08::01::2022 03:32:05|df6 will be hobos vs erika where erika cries while youko snipes them off one by one| +08::01::2022 03:32:06|pew pew| +08::01::2022 03:32:13|TRUST OARAI'S PLAN| +08::01::2022 03:32:16| +08::01::2022 03:32:16|I think we're getting the firing squad| +08::01::2022 03:32:17|I JUST FEEL MY DREAM| +08::01::2022 03:32:19|nonna never misses a shot| +08::01::2022 03:32:22|That was for Ivan Denisovich, you commie fucks| +08::01::2022 03:32:22|NOOOOOOOO NOT DORIKO| +08::01::2022 03:32:23|TUGGED +08::01::2022 03:32:25|igged +08::01::2022 03:32:26|STOP THE COUNT. PRAVDA WON| +08::01::2022 03:32:26|commie bros......| +08::01::2022 03:32:26|TUGGED +08::01::2022 03:32:28|HOURI! +08::01::2022 03:32:28|Pravdabros... its over...| +08::01::2022 03:32:28|4 girls 1 stug| +08::01::2022 03:32:29|get stugged| +08::01::2022 03:32:29|oom +08::01::2022 03:32:30|ho? +08::01::2022 03:32:30|ro... +08::01::2022 03:32:30|OHNONONO COMMIEBROS?| +08::01::2022 03:32:31|tuglife +08::01::2022 03:32:31|STUG LIFE| +08::01::2022 03:32:32|UKED +08::01::2022 03:32:33| +08::01::2022 03:32:33|STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUGGGGGGGGGGGG| +08::01::2022 03:32:35|NICE SPLICE IDIOT| +08::01::2022 03:32:35|IP +08::01::2022 03:32:35|TUGGED +08::01::2022 03:32:36|STOP THE MATCH! RIGGED| +08::01::2022 03:32:36|BASED HIPPOS| +08::01::2022 03:32:37|yeeeeeeeeeeeet +08::01::2022 03:32:37|STUG STUG STUG| +08::01::2022 03:32:38|TUGCHADS +08::01::2022 03:32:40|STUG LIFE| +08::01::2022 03:32:40|(Hit +20)| +08::01::2022 03:32:40|uh? +08::01::2022 03:32:41|STUG STUG STUG| +08::01::2022 03:32:41|seamless" +08::01::2022 03:32:41|pravada bros????| +08::01::2022 03:32:41|TUGGED +08::01::2022 03:32:41|ENTER ENTER MISSION| +08::01::2022 03:32:42|Ohnononono Pravda bros| +08::01::2022 03:32:42|DEJA VU| +08::01::2022 03:32:42|STUG LIFE| +08::01::2022 03:32:43|STUG LIFE| +08::01::2022 03:32:44|EAM +08::01::2022 03:32:45|haha fuck you oaraifags.... wait| +08::01::2022 03:32:45|Hanna 360 no sciope those pravda fucks| +08::01::2022 03:32:46|AB +08::01::2022 03:32:48|tuGCHADS +08::01::2022 03:32:48|STUG LIFE STUG LIFE STUG LIFE STUG LIFE STUG LIFE STUG LIFE | +08::01::2022 03:32:50|OOARAICHADS.... IM KNEELING| +08::01::2022 03:32:50|so what was the discussion like for the week between that cut?| +08::01::2022 03:32:50|stalin bros....| +08::01::2022 03:32:51|TUGG"D! +08::01::2022 03:32:51|miho payed the refs wtf!!!| +08::01::2022 03:32:52|DUCKS LIVE| +08::01::2022 03:32:52|FUCK YEAH| +08::01::2022 03:32:54|ILLER +08::01::2022 03:32:55|SEAMS DOKO| +08::01::2022 03:32:55|seamless purely seamless| +08::01::2022 03:32:56|COMMIES BTFO| +08::01::2022 03:32:56|;______________________; so this is how it ends| +08::01::2022 03:32:56|russos get rekt| +08::01::2022 03:32:58|why didnt the flag pop?| +08::01::2022 03:32:58|HOW HOW HOW HOW HOW| +08::01::2022 03:32:59|Katyusha chads... what went wrong?| +08::01::2022 03:32:59|COMMIES BTFO| +08::01::2022 03:33:01|russia lost again| +08::01::2022 03:33:01|THEY DID IT| +08::01::2022 03:33:01|IN +08::01::2022 03:33:01|LETS FUCKING GOOOOOOOOOOOOOOOO| +08::01::2022 03:33:01|WE WIN AGAIN BROS| +08::01::2022 03:33:01|EAMFULJ +08::01::2022 03:33:02|Nice one pravdabros now face the wall| +08::01::2022 03:33:02|I LOVE IT WHEN A PLAN COMES TOGETHER| +08::01::2022 03:33:03|DEMOCRACY WINS AGAIN BABY| +08::01::2022 03:33:04|wtf I spent my life's savings on pravdacoin| +08::01::2022 03:33:04|LIVE +08::01::2022 03:33:04|z +08::01::2022 03:33:05|peechless +08::01::2022 03:33:06|ANZAI +08::01::2022 03:33:06|LIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIVE +08::01::2022 03:33:06|ANZAI +08::01::2022 03:33:07|WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOARI| +08::01::2022 03:33:07|igged +08::01::2022 03:33:07|CUMMIES LOST| +08::01::2022 03:33:07|_: +08::01::2022 03:33:07|UGOI +08::01::2022 03:33:07|All my savings ;________;| +08::01::2022 03:33:08|BETTER DEAD THAN READ| +08::01::2022 03:33:08|My money noooooooooo| +08::01::2022 03:33:08|STOP THE COUNT| +08::01::2022 03:33:10|IGGED +08::01::2022 03:33:10|FAK U COMMIE TRASH| +08::01::2022 03:33:10|STUGGGGG :DDDDDDDDDD| +08::01::2022 03:33:11|ANZAI +08::01::2022 03:33:11|s +08::01::2022 03:33:11|katyusha is gonna start crying| +08::01::2022 03:33:11|BASED BASED BASED BASED| +08::01::2022 03:33:12|ANZAI +08::01::2022 03:33:12|nippon panzer folded 1000 times| +08::01::2022 03:33:12|-; +08::01::2022 03:33:12|ANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +08::01::2022 03:33:12|ANZAI +08::01::2022 03:33:12|COMMIES REKT| +08::01::2022 03:33:12|MAO +08::01::2022 03:33:13|UOOOOOOOOOH ;_;| +08::01::2022 03:33:13|damn female kid| +08::01::2022 03:33:15|_; +08::01::2022 03:33:15|_; +08::01::2022 03:33:16|EAT SHIT| +08::01::2022 03:33:16|Oorai on;ly wins because of plot armour| +08::01::2022 03:33:16|LENIN A SHIT| +08::01::2022 03:33:16|BETTER DEAD THAN RED| +08::01::2022 03:33:17|anzi +08::01::2022 03:33:17|SSPULL +08::01::2022 03:33:17|___: +08::01::2022 03:33:17|_; +08::01::2022 03:33:18|tuglife +08::01::2022 03:33:18|YEAH CRY LOLI SLUT| +08::01::2022 03:33:18|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 03:33:18|pravdabros we got too cocky| +08::01::2022 03:33:18|CRY MORE| +08::01::2022 03:33:18|poor kid| +08::01::2022 03:33:18|delicious commie tears| +08::01::2022 03:33:19|HOW CAN THIS HAPPEN. THIS WAS OUR YEAR| +08::01::2022 03:33:19|PravdaBros they can't keep getting away with this| +08::01::2022 03:33:21|EVERYONE LAUGHT AT THIS FUCKING LOSER| +08::01::2022 03:33:21|the only good commie is a dead commie| +08::01::2022 03:33:22|NOOOOOOO MY DACHA IN SOCHI IS GONE| +08::01::2022 03:33:22|Get fucked midget, jk ily| +08::01::2022 03:33:23|ATTA +08::01::2022 03:33:23|CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM| +08::01::2022 03:33:23|ANZAI +08::01::2022 03:33:24|rip kat| +08::01::2022 03:33:25|spanking punishment time| +08::01::2022 03:33:26|MR LOLICHOV TEAR DOWN THAT WALL| +08::01::2022 03:33:26|________: +08::01::2022 03:33:26|u mad?| +08::01::2022 03:33:26|FUCK COMMIES| +08::01::2022 03:33:27|FUCCK COMMIES| +08::01::2022 03:33:28|START CRYING MIDGET| +08::01::2022 03:33:28|UMBTYUSHA +08::01::2022 03:33:30|Reminder: inTHAT doujin Ktyusha is shot by Nonna| +08::01::2022 03:33:31|ANZIA +08::01::2022 03:33:31|_; +08::01::2022 03:33:32|eninbros... +08::01::2022 03:33:32|ANZAI +08::01::2022 03:33:34|_; +08::01::2022 03:33:34|LOLI BTFO| +08::01::2022 03:33:34|MAXIMUM CAPITALISM!| +08::01::2022 03:33:36|CAPITALISM WINS AGAIN| +08::01::2022 03:33:37|Pap Stalin is going to be pissed| +08::01::2022 03:33:37|______: +08::01::2022 03:33:38|CAPITALISM VICTORIOUS AGAIN| +08::01::2022 03:33:38|idge +08::01::2022 03:33:41|6' VS 5'11| +08::01::2022 03:33:41|>its over...| +08::01::2022 03:33:42|OZO +08::01::2022 03:33:42|COMMUNISM BTFO AMERICA WINS| +08::01::2022 03:33:44|miniskirts in the snow is Japan's gift to the world| +08::01::2022 03:33:45|I actually liked THAT doujin pretty unironically| +08::01::2022 03:33:45|GOMMUNISM BTFO| +08::01::2022 03:33:45|-baka +08::01::2022 03:33:45|Katyusha will suck on nonna's tits tonight for consolation| +08::01::2022 03:33:46|Pravda tsars...| +08::01::2022 03:33:47|that's what stalin thought too| +08::01::2022 03:33:48|TONY KAKU| +08::01::2022 03:33:48| +08::01::2022 03:33:51|>when Lenin can't see us now| +08::01::2022 03:33:53|cute gremlim| +08::01::2022 03:33:53|cute dere!| +08::01::2022 03:33:53|The march of capitalism cannot be opposed!| +08::01::2022 03:33:53|SHE HATES IT| +08::01::2022 03:33:54| +08::01::2022 03:33:56|SEETHE KATYUSHA| +08::01::2022 03:33:57|now that the snow has settled, what went wrong?| +08::01::2022 03:33:57|over +08::01::2022 03:33:57|IT'S JUST LIKE THE BERLIN WALL| +08::01::2022 03:33:58|>ooarai >capitalism| +08::01::2022 03:33:59|so many would have losts| +08::01::2022 03:34:00|How did Stalin loose?| +08::01::2022 03:34:00|Uh which one's Raskolnikov?| +08::01::2022 03:34:00|Who's that Tony Kaku?| +08::01::2022 03:34:01|Uma Noona| +08::01::2022 03:34:02|A CUTE!| +08::01::2022 03:34:03|cope and seethe| +08::01::2022 03:34:05|god i wish communism was defeated in my country ;-;| +08::01::2022 03:34:06|LOLI ONAHOLE| +08::01::2022 03:34:07|Tony Kaku| +08::01::2022 03:34:09|7 +08::01::2022 03:34:10|UYASHII +08::01::2022 03:34:10|>ooarai >capitalism| +08::01::2022 03:34:11|why is she so small? malnourishment?| +08::01::2022 03:34:12|lol midget| +08::01::2022 03:34:13|my wife maho| +08::01::2022 03:34:14|SHIHO REKT| +08::01::2022 03:34:14|:: +08::01::2022 03:34:14|>Tony's cock| +08::01::2022 03:34:15|10 second personality change| +08::01::2022 03:34:15|cute kid| +08::01::2022 03:34:16|my maho wife| +08::01::2022 03:34:16|EAT SHIT SHIHO| +08::01::2022 03:34:17|SKILLZ MOM| +08::01::2022 03:34:17|rolebros... +08::01::2022 03:34:18|PURE SKILL| +08::01::2022 03:34:19|PAT HER INSTEAED| +08::01::2022 03:34:19|same level| +08::01::2022 03:34:20|100% skill| +08::01::2022 03:34:20|AHOOOOOO +08::01::2022 03:34:21|>127 cm| +08::01::2022 03:34:21|OUT FUCKING SKILLED| +08::01::2022 03:34:24|SHIHO COPING| +08::01::2022 03:34:24|MAGINE +08::01::2022 03:34:25|All this talk about Tony Kaku but nobody remembers best girl Beth Suni| +08::01::2022 03:34:26|Kaytusha-san, TEAR DOWN THIS WALL| +08::01::2022 03:34:27|ai +08::01::2022 03:34:29|triumph of skill| +08::01::2022 03:34:29|ADOU +08::01::2022 03:34:29|ERESY +08::01::2022 03:34:31|Maho is such a good girl| +08::01::2022 03:34:31|ERESY +08::01::2022 03:34:31|BURN THE WITCH| +08::01::2022 03:34:32|ope +08::01::2022 03:34:32|ERESY! +08::01::2022 03:34:34|fuck you mommy| +08::01::2022 03:34:34|ERESY +08::01::2022 03:34:34|Loli bully not so tough after being beaten| +08::01::2022 03:34:35|nishizumi style actually just sucks| +08::01::2022 03:34:36|giver her some credit shiho| +08::01::2022 03:34:37|>Teamwork is heresy'| +08::01::2022 03:34:37|SHIHO STOP BEING A BITCH| +08::01::2022 03:34:37|dumb mom| +08::01::2022 03:34:37|>Beth SUni| +08::01::2022 03:34:38|Oh shut up Shiho| +08::01::2022 03:34:38|"skill" lol| +08::01::2022 03:34:41|I WANT TO BE MIHO AND MAHO'S STEP DADDY| +08::01::2022 03:34:42|heresy +08::01::2022 03:34:44|I can't believe we won OorariBros| +08::01::2022 03:34:46|LASPHEMER!! +08::01::2022 03:34:47|HARD WORK NEVER WINS| +08::01::2022 03:34:47|ERESY +08::01::2022 03:34:48|WE ARE THE CHAMPIONS!| +08::01::2022 03:34:48|I forgot how fucked up shiho is| +08::01::2022 03:34:52|What the fuck is a Tiny kaku?| +08::01::2022 03:35:00|eega +08::01::2022 03:35:01|pour one out for Pravda, comrades| +08::01::2022 03:35:01|black forest ham| +08::01::2022 03:35:02|tiny +08::01::2022 03:35:02|yeah shiho is a legit pyscho| +08::01::2022 03:35:02|Little brother of tony kaku| +08::01::2022 03:35:02|MAHO TIME| +08::01::2022 03:35:03|Shiho is truly the worst mom in anime| +08::01::2022 03:35:08|Don't be like Shiho. Be more like Yukari-mom| +08::01::2022 03:35:09|tomo kaku's brother| +08::01::2022 03:35:11|kino match| +08::01::2022 03:35:13|Haters prayin for my downfall...| +08::01::2022 03:35:13|20 tanks!!| +08::01::2022 03:35:18|eeegar +08::01::2022 03:35:21|discount tank dealership| +08::01::2022 03:35:22|its over ooarai bros. we cant possibly win against kmm| +08::01::2022 03:35:28|Fuck I'm so sleepy what the fuckkk| +08::01::2022 03:35:31|oshino! +08::01::2022 03:35:32|They actually BOUGHT the Hetzer kit??| +08::01::2022 03:35:33|TIGER PANTHER JAGDPANTHER| +08::01::2022 03:35:35|Just race the other schools for pinks| +08::01::2022 03:35:35|I can't believe it's fucking over bros| +08::01::2022 03:35:35|man ima sleep| +08::01::2022 03:35:36|ooraibros we got too cocky| +08::01::2022 03:35:37|its only 8:30| +08::01::2022 03:35:38|it's only 2:30am| +08::01::2022 03:35:39|:33 +08::01::2022 03:35:44|ucky +08::01::2022 03:35:44|hybrid +08::01::2022 03:35:45|BEST CLUB INCOMING| +08::01::2022 03:35:46|YEAR OF TIGER| +08::01::2022 03:35:46|>Yeah it's actually a Porsche Tiger, sorry...| +08::01::2022 03:35:47|4:33 here| +08::01::2022 03:35:47|BEST CLUB WITH THE BEST TANK| +08::01::2022 03:35:48|it's only 1333h| +08::01::2022 03:35:51|JOB INCOMING| +08::01::2022 03:35:51|23:33 here| +08::01::2022 03:35:51|EOPON +08::01::2022 03:35:52|RARE RARE RARE RARE| +08::01::2022 03:35:52|orenter +08::01::2022 03:35:53|who else here ::6:30::| +08::01::2022 03:35:54|it's only 2:33| +08::01::2022 03:35:54|moshi moshi| +08::01::2022 03:35:54|Porsche +08::01::2022 03:35:55|NICE "TANK" IDIOTS LMFAO GERMAN ENGINEERING FTL| +08::01::2022 03:35:55|PORSCHE TIGER!| +08::01::2022 03:35:55|LEOPON BEST TEAM| +08::01::2022 03:35:57|It's 4:33 faggots| +08::01::2022 03:35:57|How will they even dream of defeating Superiour German Engineering| +08::01::2022 03:36:00|ire +08::01::2022 03:36:01|>ya we got that big single 2JZ in there | +08::01::2022 03:36:01|ORSCHE +08::01::2022 03:36:01|PORSHE BROS...| +08::01::2022 03:36:01|9:30 est bros| +08::01::2022 03:36:02|\::o::'s year baby| +08::01::2022 03:36:03|uffering +08::01::2022 03:36:04|SUPERIOR GERMAN ENGINEERING| +08::01::2022 03:36:05|0333 gang king of hours| +08::01::2022 03:36:05|LE TIGRE? BLUE FRERRARI? IT'S THE SAME LOOK | +08::01::2022 03:36:07|COOL TANK| +08::01::2022 03:36:07|ermanbros... +08::01::2022 03:36:08|Porsche +08::01::2022 03:36:08|OSHINO +08::01::2022 03:36:08|the piece of shit that is the porsche tiger| +08::01::2022 03:36:08|xarp.............. +08::01::2022 03:36:09|oh nono| +08::01::2022 03:36:09|Porche Tiger-quality stream...| +08::01::2022 03:36:09|GERMAN ENGINEERING STRONK| +08::01::2022 03:36:09|BEST TANK OPERATED BY BEST CLUB| +08::01::2022 03:36:09|FLEXIN IN A PORSCHE, GET GOOD POORFAGS| +08::01::2022 03:36:10|buff team| +08::01::2022 03:36:11|the Tiger really does sound sexy in this show| +08::01::2022 03:36:11|ropaganda +08::01::2022 03:36:11| 笑) +08::01::2022 03:36:12| 😂😂 +08::01::2022 03:36:12|EST BROS ARE BEST BROS| +08::01::2022 03:36:12|PORSCHE TIGER| +08::01::2022 03:36:13|ARE +08::01::2022 03:36:13|TOL +08::01::2022 03:36:14|rauts... +08::01::2022 03:36:16|BREAKING SO HARD ITS BUFFERING| +08::01::2022 03:36:16|PM bros wya| +08::01::2022 03:36:16|based porsche overengineering| +08::01::2022 03:36:16|wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +08::01::2022 03:36:17|Sxarp lost home....| +08::01::2022 03:36:18|Porsche bros| +08::01::2022 03:36:20|LEOPON BEST TEAM| +08::01::2022 03:36:20|BURN BABY BURN| +08::01::2022 03:36:23|But Tiger P looks cute so it's okay isn't it| +08::01::2022 03:36:23| +08::01::2022 03:36:24|2034 here still good to go the rest of the night| +08::01::2022 03:36:25|just add more armour| +08::01::2022 03:36:26|FUN IS YOUR ENEMY| +08::01::2022 03:36:27|>german engineering best in the world| +08::01::2022 03:36:27|>When you can walk faster than the fucking tank| +08::01::2022 03:36:27|ERA +08::01::2022 03:36:28|oh great,it's dead| +08::01::2022 03:36:29|DEUTSCH QUALITÄT| +08::01::2022 03:36:29|PRECISION GERMAN ENGINEERING| +08::01::2022 03:36:29|So this is the power of electric drive| +08::01::2022 03:36:29|FUN IS THE ENEMY| +08::01::2022 03:36:30|ahh i missed the porsche skit| +08::01::2022 03:36:31|XAAAAARP +08::01::2022 03:36:32|TANNED TOMBOY WAIFU CLUB| +08::01::2022 03:36:33|STOP HAVING FUN| +08::01::2022 03:36:34|PM chads| +08::01::2022 03:36:35|NO FUN ALLOWED | +08::01::2022 03:36:35|>german engineering| +08::01::2022 03:36:36|>loved by all| +08::01::2022 03:36:37|DON'T HAVE FUN| +08::01::2022 03:36:37|sodomy for sodoko| +08::01::2022 03:36:39|ZUSAAA!!! +08::01::2022 03:36:40|lander +08::01::2022 03:36:41|NO FUUUUUUN| +08::01::2022 03:36:42|you know, i'm starting to get tired of ooaraiwinslol, hope it doesn't continue too long| +08::01::2022 03:36:44|the carfags manning a porsche tank is absolute SOVL| +08::01::2022 03:36:46|STOP HAVING FUN| +08::01::2022 03:36:48|>unused tanks| +08::01::2022 03:36:50|FUN IS AN ENEMY OF THE STATE| +08::01::2022 03:36:51|space case Saki| +08::01::2022 03:36:52|Stay indoors| +08::01::2022 03:36:53|TANKS COULD BE ANYWHERE| +08::01::2022 03:36:54|02:33am here, will go on no matter| +08::01::2022 03:36:55|love sodoko (sexually)| +08::01::2022 03:36:55|damn female kid| +08::01::2022 03:36:56|Tanned girlls best grills| +08::01::2022 03:36:58|>thigh high socks -- good lord| +08::01::2022 03:36:58|No fun| +08::01::2022 03:36:58|FUN IS THE ENEMY OF WINNING| +08::01::2022 03:36:58|HETSHIT +08::01::2022 03:36:58|HETZER HYPE| +08::01::2022 03:36:59|SAKI THE GAWD| +08::01::2022 03:36:59|PLEASE CHECK YOUR CLOSETS FOR SPARE TANKS| +08::01::2022 03:37:00|lovely name| +08::01::2022 03:37:01|>upgrade kit| +08::01::2022 03:37:03|E:CZECHNOLOGY +08::01::2022 03:37:03|>no local tank recycling girsl| +08::01::2022 03:37:03|i saw it| +08::01::2022 03:37:03|ALMOST 4AM| +08::01::2022 03:37:04|So now that the dust has settled; how much Yuuki fucks her boyfriend| +08::01::2022 03:37:04|Anzu is flat| +08::01::2022 03:37:05|hetzers gonna hetz| +08::01::2022 03:37:06|odomyko +08::01::2022 03:37:08|ww +08::01::2022 03:37:09|13:35 in best australia| +08::01::2022 03:37:09|yuuki-chan is SLUT| +08::01::2022 03:37:11|lat +08::01::2022 03:37:11|aners +08::01::2022 03:37:12|g-gamer girl...| +08::01::2022 03:37:12|Who's this smelly girl?| +08::01::2022 03:37:12|WHAT IS THIS NERD DOING HERE| +08::01::2022 03:37:12|NTER +08::01::2022 03:37:13|IDOI +08::01::2022 03:37:14|ETZER +08::01::2022 03:37:14|Imagine just walking around town picking up lonely tanks| +08::01::2022 03:37:16|Tanned tomboys 4ever| +08::01::2022 03:37:16| こに日本語に入れられます!!!!! +08::01::2022 03:37:16|LITERALLY ME| +08::01::2022 03:37:17|ourguys:: +08::01::2022 03:37:17|it's cute| +08::01::2022 03:37:17|GAMER GIRL| +08::01::2022 03:37:18|austrailia +08::01::2022 03:37:19|sex with anzu| +08::01::2022 03:37:20|eets +08::01::2022 03:37:21|EEERD! +08::01::2022 03:37:21|End extrovert privilege!| +08::01::2022 03:37:22|UTE +08::01::2022 03:37:22|AMERS +08::01::2022 03:37:23|HETZERS GONNA HETZ| +08::01::2022 03:37:23|Smelly gamer girl...| +08::01::2022 03:37:24|SOMEONE GET THE NERD OUT OF THE SCENE GOD| +08::01::2022 03:37:24|GET HUGE| +08::01::2022 03:37:24|get your boostie aussie| +08::01::2022 03:37:25|go home gamer girl| +08::01::2022 03:37:25|AMER +08::01::2022 03:37:25|ANZU LOVE| +08::01::2022 03:37:27|imagine what anteater team's tank smells like| +08::01::2022 03:37:27|ourgamers:: +08::01::2022 03:37:28|GIV CREEPY KOT GF| +08::01::2022 03:37:30|HATTTT +08::01::2022 03:37:30|that +08::01::2022 03:37:30|I'm going to fuck Anzu| +08::01::2022 03:37:31|GAMERS RISE UP| +08::01::2022 03:37:31|dibs on the nekonyaa| +08::01::2022 03:37:33|ERRRRRRRRRRRRRRRRDDDDDDDDDDD +08::01::2022 03:37:34|GO HOME GAMER GIRL| +08::01::2022 03:37:35|gamer sight| +08::01::2022 03:37:36|WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GI| +08::01::2022 03:37:38|Nice ts bb ;)| +08::01::2022 03:37:39|>Its just there| +08::01::2022 03:37:40|Australia isn't real anon| +08::01::2022 03:37:40|NEW TANK| +08::01::2022 03:37:44|THAT one| +08::01::2022 03:37:44|gamers out| +08::01::2022 03:37:45| 本語ってなに +08::01::2022 03:37:45|Gamer girl most swole girl| +08::01::2022 03:37:46|anzu is my side piece| +08::01::2022 03:37:47|THAT one| +08::01::2022 03:37:48|>They targeted gamers...| +08::01::2022 03:37:50|OSHINO! +08::01::2022 03:37:50|CUTE GREEN EYED WIFE| +08::01::2022 03:37:50|Nekonya will rip you in half| +08::01::2022 03:37:50|>ywn purchase an AFV from webuyanycar.com| +08::01::2022 03:37:50|AAAAAAAASSSS +08::01::2022 03:37:51|BASED TEAM| +08::01::2022 03:37:53|HAT? +08::01::2022 03:37:55|ORIFUTO +08::01::2022 03:37:55|SEXY TAN| +08::01::2022 03:37:55|DORIFTO DORIFTO| +08::01::2022 03:37:56|ireland should have joined ww2 | +08::01::2022 03:37:57|orifto +08::01::2022 03:37:57|hybrid powaaaaaa| +08::01::2022 03:37:57|chink shit | +08::01::2022 03:37:58|HOSHINO MY WIFE| +08::01::2022 03:37:59|ORIFTO +08::01::2022 03:37:59| +08::01::2022 03:37:59|OSHINO +08::01::2022 03:38:00|WORTH IT| +08::01::2022 03:38:01|AN +08::01::2022 03:38:01|ORIFTO +08::01::2022 03:38:02|b l a c k| +08::01::2022 03:38:03|NIGHT OF FIRE| +08::01::2022 03:38:03|soo many tomboys.....| +08::01::2022 03:38:03|OOARAI DORIFUTO| +08::01::2022 03:38:04|fixing tanks by washing them| +08::01::2022 03:38:04|EWD +08::01::2022 03:38:05|Initial T| +08::01::2022 03:38:06|orfito +08::01::2022 03:38:07|o +08::01::2022 03:38:08|>Australia >land hooks| +08::01::2022 03:38:08|DEJAU VU| +08::01::2022 03:38:09|>can't drift in a tank| +08::01::2022 03:38:09| 本語は日本語ですよー +08::01::2022 03:38:10|LEOPON BEST| +08::01::2022 03:38:10|ORIFUTO +08::01::2022 03:38:10|ORIFTO +08::01::2022 03:38:11|>electric transmission| +08::01::2022 03:38:12|SUCHIYA +08::01::2022 03:38:14|brown girls.....| +08::01::2022 03:38:15|URIFTOOO +08::01::2022 03:38:16|ORIFTO +08::01::2022 03:38:16|ORIFTO +08::01::2022 03:38:17|erds +08::01::2022 03:38:17|>online friends| +08::01::2022 03:38:17|UTE +08::01::2022 03:38:19|erds +08::01::2022 03:38:20|GAMER GIRLS| +08::01::2022 03:38:20|GAYMERS +08::01::2022 03:38:20|::v::ermin +08::01::2022 03:38:21|WoT BROS WHO HERE| +08::01::2022 03:38:21|AKKOIII +08::01::2022 03:38:22|ased! +08::01::2022 03:38:23|The fuck is that on her eye | +08::01::2022 03:38:24|World of SPG| +08::01::2022 03:38:25|KANSEI DORIFTO| +08::01::2022 03:38:25|>ONLINE TANK GAME| +08::01::2022 03:38:25|cute momoga!| +08::01::2022 03:38:26|iyotan! +08::01::2022 03:38:26|there is no good tank game yet| +08::01::2022 03:38:27|THE FIT GAYMERS| +08::01::2022 03:38:27|Tanned goddess| +08::01::2022 03:38:27|O-ooarai Dorifto?!?| +08::01::2022 03:38:28|based rounded gamer shoulders| +08::01::2022 03:38:28|ehehe +08::01::2022 03:38:30|THEY ARE US BROS| +08::01::2022 03:38:30|A momo obviously| +08::01::2022 03:38:31|I WISH WE PLAYED TOGETHER| +08::01::2022 03:38:32|war thunder > wot| +08::01::2022 03:38:33|big titty gamer girl piyotan| +08::01::2022 03:38:34|dark flame master| +08::01::2022 03:38:35|sauce +08::01::2022 03:38:35|fitv:: +08::01::2022 03:38:36|CUTE DORKS| +08::01::2022 03:38:36|AWESOME SAUCE| +08::01::2022 03:38:37|WoT +08::01::2022 03:38:38|WOW THIS IS JUST LIKE MY BIDEO GAMES| +08::01::2022 03:38:38|ZECHNOLOGY +08::01::2022 03:38:39|it's an ::a:: team| +08::01::2022 03:38:39|RAI +08::01::2022 03:38:40|>these fucking nerds| +08::01::2022 03:38:40|riaru hajimemashite| +08::01::2022 03:38:41|OO RAI| +08::01::2022 03:38:42|wait they didnt know each other before? lol i forgot that| +08::01::2022 03:38:45|Can't wait till they get stronk af in S2| +08::01::2022 03:38:46|How often do the gamer girls bathe?| +08::01::2022 03:38:46|do they ERP?| +08::01::2022 03:38:47|BEST TANK COMING THROUGH | +08::01::2022 03:38:47|let's play some tanks ::a::| +08::01::2022 03:38:49|FUCKIN RIAJUS| +08::01::2022 03:38:50|::fitv:: will win Das 4| +08::01::2022 03:38:50|MAJI YABAI| +08::01::2022 03:38:51|awesome sauce| +08::01::2022 03:38:54|cute gamers| +08::01::2022 03:38:54|ah +08::01::2022 03:38:55|ORAI +08::01::2022 03:38:55|>mark IV| +08::01::2022 03:38:56|Anzu eating again| +08::01::2022 03:39:00|Czechnology is so powerful, can't wait for them to unfuck Colt| +08::01::2022 03:39:00|MAKO BEST| +08::01::2022 03:39:02|imagine the smell of taking all three at once| +08::01::2022 03:39:02|weeeeeeeeeeeeeeeeeeeeeeeeee +08::01::2022 03:39:02|>not Sprocket| +08::01::2022 03:39:02|Of course they ERP, that's why they were so embarrassed| +08::01::2022 03:39:02|what tank would the ::a:: team use?| +08::01::2022 03:39:03|ukari..................... +08::01::2022 03:39:05|BEST GIRL| +08::01::2022 03:39:05|>Panzer IV | +08::01::2022 03:39:06|Best granny| +08::01::2022 03:39:12|marko four| +08::01::2022 03:39:14|Thanks granny| +08::01::2022 03:39:15|::a:: would use the bob semple| +08::01::2022 03:39:16|BASED GRANNY| +08::01::2022 03:39:18|OBA SAMA NEVER DIES| +08::01::2022 03:39:21|GuP has best montages| +08::01::2022 03:39:21|FLOOF SPOTTED| +08::01::2022 03:39:21|miho-san, i just shit myself| +08::01::2022 03:39:22|::a:: team would use the shittiest tank available| +08::01::2022 03:39:22|DATE ZITH HANQ| +08::01::2022 03:39:25|True best girl and grandmother in law| +08::01::2022 03:39:35|based bob semple anon| +08::01::2022 03:39:36|20 lloyd tankettes| +08::01::2022 03:39:37|My wife loves flowers| +08::01::2022 03:39:37|What is the shittiest tank? inb4 muh bob semple| +08::01::2022 03:39:38|::a::'s tank would STINK| +08::01::2022 03:39:42|teaky +08::01::2022 03:39:42|take it or leave it| +08::01::2022 03:39:43|TEAKY +08::01::2022 03:39:43|FLOWER DATE| +08::01::2022 03:39:44|only 4 from ::a:: would be allowed| +08::01::2022 03:39:47|Is threw gonna be a break between the series and movies?| +08::01::2022 03:39:48|the anzio tankettes| +08::01::2022 03:39:51|TEAKY +08::01::2022 03:39:55|RINK +08::01::2022 03:39:55|omk +08::01::2022 03:39:55|Back it up a minute, I had to pee| +08::01::2022 03:39:56|TICKY +08::01::2022 03:39:57|I want to sniff Hana's flower. | +08::01::2022 03:39:57|TEAKY +08::01::2022 03:39:57|FLOWER TANK| +08::01::2022 03:39:59|TEAKY +08::01::2022 03:39:59|UGOI +08::01::2022 03:39:59|wheres the 4chan cup but tanks instead of soccer| +08::01::2022 03:40:00|>a fucking tank| +08::01::2022 03:40:01|Is this a recreation of Patton's last drive?| +08::01::2022 03:40:01|it's alright at best| +08::01::2022 03:40:02|irei +08::01::2022 03:40:03|If we're the ::a::team, I call Hannibal's role| +08::01::2022 03:40:10|UGOI +08::01::2022 03:40:10|TL Note: Hana means flower| +08::01::2022 03:40:12|>like you| +08::01::2022 03:40:13|This would be a sweet scene if I gave a fuck about Hana| +08::01::2022 03:40:13|>not crewing an armored John Deere tractor| +08::01::2022 03:40:14|Hourly reminder to hydrate| +08::01::2022 03:40:14|cute flowers but what about tht tanks?| +08::01::2022 03:40:15|XPLOSION +08::01::2022 03:40:17|thanks tl| +08::01::2022 03:40:18|thanks tl| +08::01::2022 03:40:18|is every single girl autistic?| +08::01::2022 03:40:19|Thanks TL | +08::01::2022 03:40:20|guys can you pause the stream i have to go to my dad's funeral| +08::01::2022 03:40:21|TL Note: Hana means Hana| +08::01::2022 03:40:22|THERE'S THE TANK| +08::01::2022 03:40:24|TL NOTE: hana means "nose"| +08::01::2022 03:40:24|AAAAAAAAAAAAAAAAAGGGGGGGGGGGGGG +08::01::2022 03:40:27|4chan senshado when?| +08::01::2022 03:40:28|thanks tl| +08::01::2022 03:40:29|omanlet +08::01::2022 03:40:30|utism +08::01::2022 03:40:31|femcel mom| +08::01::2022 03:40:32|>90% of the ::a:: team has to shield the tank with their bodies| +08::01::2022 03:40:32|tanks tl | +08::01::2022 03:40:35|hana means aaaaaaaaaaaaaaaaaaaaaaa| +08::01::2022 03:40:36|big hana| +08::01::2022 03:40:40| +08::01::2022 03:40:42|BROKE NEW GROUNDDDDDDD| +08::01::2022 03:40:43|yuri redemption arc| +08::01::2022 03:40:43|D +08::01::2022 03:40:43|hana means hana| +08::01::2022 03:40:45|ommy +08::01::2022 03:40:46|UTE +08::01::2022 03:40:46|SEX with HANA'S MOM| +08::01::2022 03:40:47|thanks mom| +08::01::2022 03:40:47|No longer disowned| +08::01::2022 03:40:48|FLOWER ARRANGEMENT REVOLUTION!| +08::01::2022 03:40:48|It'd be fun to run some 4chan gup tournament| +08::01::2022 03:40:49|ECONCILIATION +08::01::2022 03:40:49|CHARACTER DEVELOPMENT| +08::01::2022 03:40:49|my cute wife hana is so cute| +08::01::2022 03:40:50|SHE BROKE NEW GROUUUUUND| +08::01::2022 03:40:51|hana tarkoittaa hanaa| +08::01::2022 03:40:51|wow this is like le character development| +08::01::2022 03:40:57|you bring great shame to your famiry| +08::01::2022 03:40:58|SHE BROKE NEW GROUND| +08::01::2022 03:40:59|utt +08::01::2022 03:41:00|olleybutt +08::01::2022 03:41:00|TAEKO BUTT| +08::01::2022 03:41:01|thighs and BUTTE| +08::01::2022 03:41:01|everyone on ::a:: is a little girl so itl fi| +08::01::2022 03:41:02|hana : DDDDDDDDDDDDDDDDDDDD| +08::01::2022 03:41:02|>no longer disowned >reowned| +08::01::2022 03:41:06|we did it Hanabros| +08::01::2022 03:41:06|olleybutts +08::01::2022 03:41:06|90% of the ::a:: team would be too fat to enter the tank| +08::01::2022 03:41:09|Tanks and flowers aren't so different after all... | +08::01::2022 03:41:09|that's not an apology| +08::01::2022 03:41:12|Just did a rancid booze fart lads| +08::01::2022 03:41:12|PANZER VOR!| +08::01::2022 03:41:17|So nobody thought about a tankpot before?| +08::01::2022 03:41:22|90% of ::a:: is shaped like a p-47| +08::01::2022 03:41:23|thanks for the info anon| +08::01::2022 03:41:25|Miho has an announcement:| +08::01::2022 03:41:28|::sp:: has shitty football simulation tournaments so why don't we have tanks| +08::01::2022 03:41:30|will miho have a friendly conversation with shiho before the series ends?| +08::01::2022 03:41:30|>his body isn't a (fat-)tank on its own| +08::01::2022 03:41:32|RAITOR +08::01::2022 03:41:32|lads, post scriptum has real senshado mod| +08::01::2022 03:41:34|EVERYONE I HAVE AN ANNOUNCEMENT| +08::01::2022 03:41:35|utte +08::01::2022 03:41:35|THAT's A HUGE BITCH | +08::01::2022 03:41:35|nigger forest | +08::01::2022 03:41:36|nice butt| +08::01::2022 03:41:38|Change your pants, boozefarter.| +08::01::2022 03:41:41|the ::a:: team would succumb to social anxiety the moment they made contact with the enemy| +08::01::2022 03:41:45|H +08::01::2022 03:41:46|Hana is avant-garde florist confirmed| +08::01::2022 03:41:47|I'm making an online gup ttrpg but it's gnna suck ass| +08::01::2022 03:41:50|miho used [Inspiring speech]| +08::01::2022 03:41:53|) +08::01::2022 03:41:54|AHO +08::01::2022 03:41:56|Boozefarter shidd himself| +08::01::2022 03:41:58|MAHO'S MAHOS| +08::01::2022 03:41:58|those are some big cats| +08::01::2022 03:41:59|o:: SIEG HEIL| +08::01::2022 03:41:59|HOLY SHIT I FUCKING LOVE MAHO| +08::01::2022 03:41:59|OOZEFAHTAR +08::01::2022 03:42:00|: +08::01::2022 03:42:01|aild +08::01::2022 03:42:03|Hey guys, Miho here, thanks for watching my anime lol| +08::01::2022 03:42:04|the enemy doesnt have enough bullets to stop the ::a:: mass| +08::01::2022 03:42:05|:: +08::01::2022 03:42:05|I'd turn on the ::a:: tank if I were inside it| +08::01::2022 03:42:06|Mark, honey, this is your mom. can you go upstairs and clean your room | +08::01::2022 03:42:07|:: +08::01::2022 03:42:09|miho has low CHA| +08::01::2022 03:42:10|alud +08::01::2022 03:42:10|Maho's autism readings are off the charts!| +08::01::2022 03:42:12|poopenfarten regards: panzerwaffe| +08::01::2022 03:42:15|youre welcome miporin| +08::01::2022 03:42:15|AEKO +08::01::2022 03:42:18|I'm up to ttrpg, advertize it in the threads sometime| +08::01::2022 03:42:20|::a:: tank smells?| +08::01::2022 03:42:26|maho is my wife btw| +08::01::2022 03:42:27|is all of Kelly's Heroes spiced into this?| +08::01::2022 03:42:28|CHICKEN KATSU| +08::01::2022 03:42:28|Heil Maho| +08::01::2022 03:42:32|Mark if you're watching this drink| +08::01::2022 03:42:33|DON'T BE CHICKEN AND EAT THIS CHICKEN| +08::01::2022 03:42:34|seconded, guppie ttrpg sounds cool| +08::01::2022 03:42:35|maho is my wife btw| +08::01::2022 03:42:35|"that" place| +08::01::2022 03:42:36|the gup wargame is fun| +08::01::2022 03:42:37|HAT +08::01::2022 03:42:37| ツ +08::01::2022 03:42:37|AHN AHN AHNG| +08::01::2022 03:42:38|KATSU TAIMU!| +08::01::2022 03:42:38|atsu +08::01::2022 03:42:40|Tying up Momo! Gagging Momo! Whipping Momo! Spanking Momo! | +08::01::2022 03:42:45|ale! +08::01::2022 03:42:45| ツカツ +08::01::2022 03:42:45|CATS CATS| +08::01::2022 03:42:45| ツカツ +08::01::2022 03:42:46|cute currey tank | +08::01::2022 03:42:47|ot +08::01::2022 03:42:51|DON'T BE A CHICKEN| +08::01::2022 03:42:52|momo +08::01::2022 03:42:53|PORKU DINNAR| +08::01::2022 03:42:54|ATSU +08::01::2022 03:42:55|nzu +08::01::2022 03:42:55|anzu wwww| +08::01::2022 03:42:56|ATSU +08::01::2022 03:42:56| ツカツwwwww +08::01::2022 03:42:57| つ +08::01::2022 03:42:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:42:59|whats the name of the ttrpg?| +08::01::2022 03:42:59|THAT place?| +08::01::2022 03:43:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:01|I LOVE CHICKEN KATSU| +08::01::2022 03:43:01|TALIA! +08::01::2022 03:43:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:02|lready? +08::01::2022 03:43:03|::a:: would be black forest but with a swastik as their symbol | +08::01::2022 03:43:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:04|UCE +08::01::2022 03:43:04| つかつするな! +08::01::2022 03:43:04|UCE +08::01::2022 03:43:04|ufferoni +08::01::2022 03:43:04|Why can't more food be tank shaped? >.>| +08::01::2022 03:43:05|vce +08::01::2022 03:43:06|DVCE DVCE DVCE| +08::01::2022 03:43:06|KATSKOI NE| +08::01::2022 03:43:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:07|delicious tankkatsu| +08::01::2022 03:43:07|DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:07|dvce | +08::01::2022 03:43:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:08|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 03:43:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:09|UCE +08::01::2022 03:43:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:09|italian planning| +08::01::2022 03:43:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:11|UCE +08::01::2022 03:43:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:13|gababool my fellow anziobros| +08::01::2022 03:43:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:13|VCE +08::01::2022 03:43:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:13|ATSU +08::01::2022 03:43:13|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 03:43:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:15|UCE +08::01::2022 03:43:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:17|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 03:43:17|UCE +08::01::2022 03:43:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:18|DUCE! | +08::01::2022 03:43:18|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 03:43:19|uce +08::01::2022 03:43:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:21|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:22|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 03:43:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:24|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DU| +08::01::2022 03:43:24|UCE +08::01::2022 03:43:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:27|AY TONE| +08::01::2022 03:43:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:29|VCE +08::01::2022 03:43:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:29|USSOLINI +08::01::2022 03:43:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:32|DVCE DVCE DVCE DVCE | +08::01::2022 03:43:32|DUCE DUCE DUCE| +08::01::2022 03:43:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:34|DUCE DUCE DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +08::01::2022 03:43:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 03:43:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:35|VCE +08::01::2022 03:43:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:36|ORZA +08::01::2022 03:43:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:37|THANKS FOR THE GRUB| +08::01::2022 03:43:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:39|put me in the screencap!!!!!!!!!!!!!| +08::01::2022 03:43:39|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 03:43:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:40|UCE +08::01::2022 03:43:41|TL NOTE: DVCE means PIZZA PASTA| +08::01::2022 03:43:41|SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. | +08::01::2022 03:43:42|RUB A DUB DUB | +08::01::2022 03:43:42|NO SLEEP NAO!| +08::01::2022 03:43:42|OOOOO +08::01::2022 03:43:42|dvce fucks her little brother| +08::01::2022 03:43:42|Cute Miho| +08::01::2022 03:43:42|FORZA ITALIA| +08::01::2022 03:43:43|rub a dub dub| +08::01::2022 03:43:43|The mother of all tailgate parties.| +08::01::2022 03:43:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:44|rub a dub dub| +08::01::2022 03:43:45|SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. | +08::01::2022 03:43:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 03:43:46|ORZA +08::01::2022 03:43:47|god to be an italian tank school| +08::01::2022 03:43:47|THANKS TL| +08::01::2022 03:43:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 03:43:49|weird cut| +08::01::2022 03:43:49|I'M SO HUNGRY| +08::01::2022 03:43:50|cute munch| +08::01::2022 03:43:50|>hadena subds| +08::01::2022 03:43:51|Best dorks| +08::01::2022 03:43:51|TO ME| +08::01::2022 03:43:52|what is pizza pasta| +08::01::2022 03:43:53|just driving fast and eating pasta| +08::01::2022 03:43:53|tadakimasu +08::01::2022 03:43:53|AN +08::01::2022 03:43:55|DING DING| +08::01::2022 03:43:56|LUT +08::01::2022 03:43:57|I thought two girls couldn't get married??????| +08::01::2022 03:43:57|SEAMS DOKO?| +08::01::2022 03:43:59|ISHII +08::01::2022 03:44:00|DUCE SMELLS GOOD AND HAS REAL HAIR| +08::01::2022 03:44:01|and here's where I realize I'm so far behind| +08::01::2022 03:44:01|meteuter +08::01::2022 03:44:02|ORK +08::01::2022 03:44:02|HIGH IQ| +08::01::2022 03:44:03|ait +08::01::2022 03:44:03|UTE +08::01::2022 03:44:04|HAM NERDS RISE UP!| +08::01::2022 03:44:07|om +08::01::2022 03:44:07|Did she get married to herself??| +08::01::2022 03:44:08|SMELLY AND WEARS A WIG| +08::01::2022 03:44:08|GOT A LOICENSE FOR THAT THERE RADIO????| +08::01::2022 03:44:10|Saori looking for a boyfriend on 121.5!| +08::01::2022 03:44:11|SAORI, FART INTO ZE RADIO| +08::01::2022 03:44:12|ute +08::01::2022 03:44:13|EGANE +08::01::2022 03:44:17|What'e her callsign?| +08::01::2022 03:44:18|TFO +08::01::2022 03:44:21|5th wheel 5th wheel!| +08::01::2022 03:44:23|3737373 +08::01::2022 03:44:24|Slut Actual| +08::01::2022 03:44:26|"Fat Nigger 3"| +08::01::2022 03:44:26|DUCE DOES NOT WEAR A WIG! DUCE DOES NOT SMELL!| +08::01::2022 03:44:29|9.9 +08::01::2022 03:44:29|Callsign SEAL| +08::01::2022 03:44:31|How uch ABV is this tream?| +08::01::2022 03:44:34|TOO MUCH FUCKING RICE| +08::01::2022 03:44:36|TFO +08::01::2022 03:44:36|with me| +08::01::2022 03:44:38|to me!| +08::01::2022 03:44:38|LUT +08::01::2022 03:44:41|>Radio license. What the fuck does that even mean| +08::01::2022 03:44:42|LUT +08::01::2022 03:44:42|LUT +08::01::2022 03:44:43|OH NO NO NO NO NO| +08::01::2022 03:44:44|DUCE DOES SMELL AND I WANT TO SMELL HER| +08::01::2022 03:44:45|esbians +08::01::2022 03:44:45|hitched with me| +08::01::2022 03:44:45|yeah, with me| +08::01::2022 03:44:45|I have never drunk alcohol in my life| +08::01::2022 03:44:46|OKOSEXUAL +08::01::2022 03:44:46|Hana is a hungry girl.| +08::01::2022 03:44:47|est +08::01::2022 03:44:49|OI YOU GOT A LOICENSE FOR THAT RADIO?| +08::01::2022 03:44:50|WITH ME| +08::01::2022 03:44:51|to me| +08::01::2022 03:44:51|LUT +08::01::2022 03:44:51|Miporin has ARISU!| +08::01::2022 03:44:53|breast shaped rice mound| +08::01::2022 03:44:53|WITH ME| +08::01::2022 03:44:53|WITH ME| +08::01::2022 03:44:54|OKO +08::01::2022 03:44:56|ENSHASEXUAL +08::01::2022 03:44:56|DAGNO? I thought that was DANGO because Saori is FAT| +08::01::2022 03:44:57|>never drunk alcohol| +08::01::2022 03:44:58|THOSE POOR BOKOS| +08::01::2022 03:44:58|OKOBOKOBOOKOBOKOBOKOBOKOBOKOBOKO +08::01::2022 03:44:59|Time for more pizza| +08::01::2022 03:45:00|UTE +08::01::2022 03:45:00|SHE'S TANK SEXUAL LEAVE HER ALONE| +08::01::2022 03:45:02|onfession +08::01::2022 03:45:03|yukari wet| +08::01::2022 03:45:03|I'm bokusexual| +08::01::2022 03:45:05|don't worry bros I can be miho's bf| +08::01::2022 03:45:05|One of you guys needs to marry Saori. Take responsibility. | +08::01::2022 03:45:06|::u:: BROS| +08::01::2022 03:45:06|>asks about boyfriends >cuts to Boko| +08::01::2022 03:45:06|blushy Yukari| +08::01::2022 03:45:07|she's a lesbian| +08::01::2022 03:45:09|shes gonna marry boko| +08::01::2022 03:45:10|UTE +08::01::2022 03:45:10|>aomushi is canon| +08::01::2022 03:45:11|LOOF +08::01::2022 03:45:12|yukari is pure| +08::01::2022 03:45:13|girls can't like girls| +08::01::2022 03:45:13|UEH?! +08::01::2022 03:45:13|eeeeeeeeeh +08::01::2022 03:45:14|SLUT WHORE| +08::01::2022 03:45:15|I want to squeeze Saori's fat belly| +08::01::2022 03:45:15|el +08::01::2022 03:45:15|MIHO X YUKARI CONFIRMED| +08::01::2022 03:45:16|::u:: STAY WINNING| +08::01::2022 03:45:16|cute I love this dork| +08::01::2022 03:45:17|ORIKO +08::01::2022 03:45:18|yukari is pure sex| +08::01::2022 03:45:18|TO ME| +08::01::2022 03:45:19|UTE +08::01::2022 03:45:20|::u::fags >>>::out::| +08::01::2022 03:45:21|HELL YEAH,FLOOF L::U::V| +08::01::2022 03:45:21|you got a license for that radio| +08::01::2022 03:45:23|it isn't right | +08::01::2022 03:45:23|miho literally has never met a boy| +08::01::2022 03:45:24|floof overload| +08::01::2022 03:45:25|SAORI IS A HOMOPHOBE| +08::01::2022 03:45:25|BOKO NFTs| +08::01::2022 03:45:26|I want to CW with Saori| +08::01::2022 03:45:27|::u:: has entered the chat| +08::01::2022 03:45:28|ATSU! +08::01::2022 03:45:28|BASED SAORI| +08::01::2022 03:45:30|UTS +08::01::2022 03:45:32|::u:: out| +08::01::2022 03:45:33|>ost | +08::01::2022 03:45:33|Imagine being British. couldn't be me.| +08::01::2022 03:45:35|ATSUDON +08::01::2022 03:45:36|ORKS +08::01::2022 03:45:39|Based lesbian bullying| +08::01::2022 03:45:39|atsu..... +08::01::2022 03:45:42|RARE TENK| +08::01::2022 03:45:44|o:: +08::01::2022 03:45:45|STUG CREW IS MY WIFE| +08::01::2022 03:45:46|almost at intermission| +08::01::2022 03:45:49|OSHINOOOOOOOOOOOOOOOOOO +08::01::2022 03:45:49|>there are brits in this chat| +08::01::2022 03:45:49|ooraibros... we are ngmi next match...| +08::01::2022 03:45:50|::tg:: demands garupan hex and chit games| +08::01::2022 03:45:52|NERD GANG GANG| +08::01::2022 03:45:54|ATSU! +08::01::2022 03:45:54|Hoshino gf doko| +08::01::2022 03:45:55|TONY KAKU CURRY| +08::01::2022 03:45:58|kelly's heroes doko| +08::01::2022 03:46:02|why do they shill the chicken so much| +08::01::2022 03:46:02|v:: +08::01::2022 03:46:02|holesome +08::01::2022 03:46:04|cute gamers| +08::01::2022 03:46:05|TONKATSU CURRY| +08::01::2022 03:46:06|GAMER FUEL| +08::01::2022 03:46:06|cant wait for ooarai dorifuto at the df4 portion of the strream| +08::01::2022 03:46:08|nyan is too hot| +08::01::2022 03:46:08|NO FUN| +08::01::2022 03:46:11|>there are british people communicating with you right now| +08::01::2022 03:46:11|annies +08::01::2022 03:46:12|KELLYS HEROES| +08::01::2022 03:46:14|I WANT TO RAPE THEM| +08::01::2022 03:46:15|INO +08::01::2022 03:46:15|urgers +08::01::2022 03:46:15|weeb crew| +08::01::2022 03:46:16|KELLY'S HEROES| +08::01::2022 03:46:18|sodoclone gangbang| +08::01::2022 03:46:18|>EU's >Being awake at this hour| +08::01::2022 03:46:18| ンバガ! +08::01::2022 03:46:19|ST +08::01::2022 03:46:19|INO +08::01::2022 03:46:21|_; +08::01::2022 03:46:21|IT'S AzUSA!!!!!!! AAHHH| +08::01::2022 03:46:21|THAT'S PAINT| +08::01::2022 03:46:22|inoplex +08::01::2022 03:46:22|tv:: +08::01::2022 03:46:23|_; +08::01::2022 03:46:25|Based film tbh| +08::01::2022 03:46:25|_; +08::01::2022 03:46:25|I want to eat pickles with Sodoko... no innuendo!| +08::01::2022 03:46:25|Based bunnies| +08::01::2022 03:46:26|what film?| +08::01::2022 03:46:27|more like hogan's heroes| +08::01::2022 03:46:29|Saki is absorbing it| +08::01::2022 03:46:29|BROS THE PANZER IS STUCK :((((| +08::01::2022 03:46:29|_; +08::01::2022 03:46:29|_; +08::01::2022 03:46:31|_; +08::01::2022 03:46:33|eu KINGS represent| +08::01::2022 03:46:33|_; +08::01::2022 03:46:34|_: +08::01::2022 03:46:35|Kelly's Heroes, dumbass| +08::01::2022 03:46:36|BASED CUNNY KINOSSEURS| +08::01::2022 03:46:36|_; +08::01::2022 03:46:38|aaaaa +08::01::2022 03:46:38|Real tears| +08::01::2022 03:46:38|>crying at a comedy| +08::01::2022 03:46:40|that poor tank| +08::01::2022 03:46:42|ude +08::01::2022 03:46:43|kelly's hero'| +08::01::2022 03:46:46|rip tank| +08::01::2022 03:46:47|;_; Tiger-kun| +08::01::2022 03:46:49|what are you doing step tank| +08::01::2022 03:46:49|__; +08::01::2022 03:46:49|battle of the bulge in my pants| +08::01::2022 03:46:49|I want to watch Das Boot with Maho| +08::01::2022 03:46:51|kunny's heros| +08::01::2022 03:46:52|tigerbros... its over...| +08::01::2022 03:46:58|in NY, a hero ain't nothin' but a sandwich| +08::01::2022 03:47:00|AKE-TIGER +08::01::2022 03:47:01|That was a god anime| +08::01::2022 03:47:03|Poor TRigre| +08::01::2022 03:47:03|Train to the western zone| +08::01::2022 03:47:05|See you next year| +08::01::2022 03:47:08|I-i'm not crying it's just rain| +08::01::2022 03:47:09|IM SCHLEEP CUH| +08::01::2022 03:47:10|mako sleep| +08::01::2022 03:47:11|bonding time with the tanks| +08::01::2022 03:47:11|my grandpa loves kelly's heroes should i show him GuP?| +08::01::2022 03:47:12|GLASSES BACKGROUND GIRL| +08::01::2022 03:47:13|UJI-SAN +08::01::2022 03:47:14|ute +08::01::2022 03:47:15|What's your favourite tank, ::a::?| +08::01::2022 03:47:16|REPORTER GIRL CUTE| +08::01::2022 03:47:16|>next year| +08::01::2022 03:47:16|real model kits| +08::01::2022 03:47:16|fun fact lads i now know enough deutsch to watch das boot unsubbed| +08::01::2022 03:47:17| +08::01::2022 03:47:21|imi +08::01::2022 03:47:21|TAIGA'S YEAR| +08::01::2022 03:47:21|YEAR OF THE TAIGA| +08::01::2022 03:47:22| +08::01::2022 03:47:24|BUYING YUKARI A MODEL TANK| +08::01::2022 03:47:24|see you in woto more like| +08::01::2022 03:47:25|Why don't you cut it out with those negative waves...| +08::01::2022 03:47:28|the porsche tiger of course| +08::01::2022 03:47:29|ri'ish +08::01::2022 03:47:29|feel free| +08::01::2022 03:47:31|keep it up deutsch anon| +08::01::2022 03:47:32|I'm a big Panther fan| +08::01::2022 03:47:32|Yes anon show him| +08::01::2022 03:47:32|PZ IV with the sex-plates obviously| +08::01::2022 03:47:33|ongs +08::01::2022 03:47:34|SLAG! <3| +08::01::2022 03:47:34|EA? +08::01::2022 03:47:35|luv me darj| +08::01::2022 03:47:35|Is Pekoe... slow?| +08::01::2022 03:47:35|OKIGENYOU +08::01::2022 03:47:36|OKIGENYOU +08::01::2022 03:47:37|BRI 'ISH| +08::01::2022 03:47:38|ARJ +08::01::2022 03:47:40|lags +08::01::2022 03:47:43|ekoe.... +08::01::2022 03:47:44|this saying| +08::01::2022 03:47:45|my wife| +08::01::2022 03:47:45|How will I survive both this and Woto's stream?| +08::01::2022 03:47:45|wanna hear this saying?| +08::01::2022 03:47:47|PEEEEEEEEEEKKKKKKKKOOOOOOOOO UUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +08::01::2022 03:47:49|you wot?| +08::01::2022 03:47:49|hip when?| +08::01::2022 03:47:50|OKIGENYOU +08::01::2022 03:47:50|o +08::01::2022 03:47:51|My wife Darjeeling is so cute.| +08::01::2022 03:47:53|Have you heard this saying? "Darj and Pekoe are the best girls."| +08::01::2022 03:47:53|hi miho have you heard this saying?| +08::01::2022 03:47:56|>10::10 in bongland| +08::01::2022 03:47:57|No Duce..........| +08::01::2022 03:47:57|ekoe................ +08::01::2022 03:47:58|okigenyo +08::01::2022 03:47:58|Darjeeling x kay x me| +08::01::2022 03:47:58|BURGERS OUT| +08::01::2022 03:47:59|EXCITING CRAZY| +08::01::2022 03:47:59|You need GUTS to live through snw| +08::01::2022 03:47:59|UTT +08::01::2022 03:47:59|your wife is dumb| +08::01::2022 03:48:00|SA +08::01::2022 03:48:01|UREIJI +08::01::2022 03:48:01|Have you heard this saying? There's no shitting without peeing| +08::01::2022 03:48:03|URAIJI +08::01::2022 03:48:03|KICK SOME ASS| +08::01::2022 03:48:03|eeko +08::01::2022 03:48:04|razy +08::01::2022 03:48:05|usa usa| +08::01::2022 03:48:06|HOP IN LOSERS WE'RE GOING SHOPPING| +08::01::2022 03:48:06|DVCE is crying off screen right now| +08::01::2022 03:48:06|URAAAZHI +08::01::2022 03:48:06|URAHYEZEEE +08::01::2022 03:48:07|IGHTO +08::01::2022 03:48:08|URICA +08::01::2022 03:48:08| +08::01::2022 03:48:09|ihong! +08::01::2022 03:48:09|GOOT LAAK| +08::01::2022 03:48:09|GUT LUCJ\K| +08::01::2022 03:48:10|GOOD LUCK| +08::01::2022 03:48:10|FAITO! GOOD RUCK!| +08::01::2022 03:48:10|Pekoe rapes Drajeeling| +08::01::2022 03:48:10|GOOD LUCK| +08::01::2022 03:48:11|miho x maho when?????| +08::01::2022 03:48:11|HELL YEAH| +08::01::2022 03:48:12|KAy is baye| +08::01::2022 03:48:13|>fighto means kick some ass| +08::01::2022 03:48:13|IMAGINE BEING BRITISH| +08::01::2022 03:48:14|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 03:48:14|USA USA USA| +08::01::2022 03:48:14|my wife| +08::01::2022 03:48:14|good ruck!| +08::01::2022 03:48:15|FAT KAY TITS| +08::01::2022 03:48:15|USA USA USA USA| +08::01::2022 03:48:15|good ruck| +08::01::2022 03:48:15|IDGET +08::01::2022 03:48:17|JA NE| +08::01::2022 03:48:18|o +08::01::2022 03:48:19|BOKO BOKO| +08::01::2022 03:48:19|UUUUUUNNNNNYYYY +08::01::2022 03:48:20|I WANT TO SNIFF KATYUSHA THIGHS| +08::01::2022 03:48:20|IGHTON +08::01::2022 03:48:21|IGHT-O! +08::01::2022 03:48:22|UUOOOOOOOOH +08::01::2022 03:48:22|EXAITINGU CREYZY FAITO| +08::01::2022 03:48:24|russian loli onahole| +08::01::2022 03:48:25|character says: faito subs say:kick some ass ?????| +08::01::2022 03:48:26|Imagine squeez\ing Kays fat ass| +08::01::2022 03:48:26|USA USA USA USA| +08::01::2022 03:48:26|SPEAK ENGLISH FAGGOT| +08::01::2022 03:48:27|Oh shut the fuck up| +08::01::2022 03:48:28|DO SVIDANYA| +08::01::2022 03:48:28|SLAGS +08::01::2022 03:48:28|AAAAAAAAAAAAAAA +08::01::2022 03:48:33|sniffing katyushas butt| +08::01::2022 03:48:33|what does piroshki mean?| +08::01::2022 03:48:33|REMOVE SLAG| +08::01::2022 03:48:37|fuck off darj| +08::01::2022 03:48:37|pooooooooo +08::01::2022 03:48:38|umplings +08::01::2022 03:48:39|>you're a strange person| +08::01::2022 03:48:39|lags +08::01::2022 03:48:40|STEAKY PEOPLE| +08::01::2022 03:48:40|EEP +08::01::2022 03:48:41|LYAT +08::01::2022 03:48:42|????????????????? +08::01::2022 03:48:43|YOU'RE STILL HERE?| +08::01::2022 03:48:44|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 03:48:44|DARJ IS MY WIFE| +08::01::2022 03:48:44|roverb +08::01::2022 03:48:45|???????????????????????????????????????? +08::01::2022 03:48:45|?? +08::01::2022 03:48:45|???????????????????? +08::01::2022 03:48:45|??????????????????????????????????????????? +08::01::2022 03:48:45|Shut up, Darjeeling| +08::01::2022 03:48:46|DARJELING WHAT THE FUCK ARE YOU TALKING ABOUT| +08::01::2022 03:48:46|stop it, my ears| +08::01::2022 03:48:47|???????????????? +08::01::2022 03:48:47|she spilled her tea, never forget| +08::01::2022 03:48:47|SHUT UP BONG| +08::01::2022 03:48:47|MUH ENGLISH PROVERB| +08::01::2022 03:48:48|SHUT THE FUCK UP DARJEELING| +08::01::2022 03:48:48|a??????? +08::01::2022 03:48:48|based and have you heard this?pilled| +08::01::2022 03:48:50|???????????? +08::01::2022 03:48:50|all the side girls were better than the main ones tbh| +08::01::2022 03:48:50|where are the italians?| +08::01::2022 03:48:50|STFU | +08::01::2022 03:48:50|????????????? +08::01::2022 03:48:50|That's not English| +08::01::2022 03:48:51|???????? +08::01::2022 03:48:52|This is a shonen anime confirmed.| +08::01::2022 03:48:52|mahou shojou miho it all makes sense| +08::01::2022 03:48:52|ok this one made sense| +08::01::2022 03:48:53|WHAT IS WRONG WITH THE BONGS| +08::01::2022 03:48:53|????????????????????????????????????????? brit meds| +08::01::2022 03:48:53|thanks a ton for the proverb, Darjeeling| +08::01::2022 03:48:54|SHUT UP DARJ| +08::01::2022 03:48:54|RIKA +08::01::2022 03:48:55|DUMB WANI| +08::01::2022 03:48:55|I never read Darj's proverbs | +08::01::2022 03:48:56|??????? +08::01::2022 03:48:56|WHAT DOES SLAG MEAN?!| +08::01::2022 03:48:56|OH GOD I WANT TO FUCK ERIKA| +08::01::2022 03:48:57|Uma Musume reference?| +08::01::2022 03:48:58|??????? +08::01::2022 03:48:59|??????????? +08::01::2022 03:48:59|I still dont get the american hell telephone joke| +08::01::2022 03:49:01|have you heard this saying?| +08::01::2022 03:49:01|Momo the #22| +08::01::2022 03:49:02|FUCK ERIKA| +08::01::2022 03:49:05|ANI +08::01::2022 03:49:05|F R I E D S H I P| +08::01::2022 03:49:06|!!! D e u t s c h l a n d !!!| +08::01::2022 03:49:06|WANI SMUG| +08::01::2022 03:49:06|SEX WITH MAHO| +08::01::2022 03:49:06|Look at that dumb bitch Erika| +08::01::2022 03:49:07|Shut up, Erika.| +08::01::2022 03:49:07|DO BONGS REALLY| +08::01::2022 03:49:07|ITCH +08::01::2022 03:49:08|DARJ HATERS HAVE BEEN COURT MARTIALLED BY PATRIOTS -Q| +08::01::2022 03:49:08|roka +08::01::2022 03:49:08|RAPE THE WANI| +08::01::2022 03:49:09|my maho wife| +08::01::2022 03:49:09|have you heard the news| +08::01::2022 03:49:09|AHO +08::01::2022 03:49:10|UND DAS HEISST| +08::01::2022 03:49:11|UND DAS HEIST| +08::01::2022 03:49:12|SHHHHHHH QUIET The Italians are asleep | +08::01::2022 03:49:12|DUMB WANI| +08::01::2022 03:49:13|hmph, undermensch| +08::01::2022 03:49:13|SIBLING DEATH MATCH| +08::01::2022 03:49:13|ERIKA GONA WIN| +08::01::2022 03:49:13|get fuckt| +08::01::2022 03:49:14|I THINK ERIKA SUCKS| +08::01::2022 03:49:14|ANI +08::01::2022 03:49:14|I want to rape Erika| +08::01::2022 03:49:15|LET'S GO DEUTSCHLAND| +08::01::2022 03:49:15|Thanks for sharing that stupid shit darj| +08::01::2022 03:49:15|UDE +08::01::2022 03:49:15|ERIKA MY WIFE| +08::01::2022 03:49:17|Translators Note: Dosvidaniya means sayonara| +08::01::2022 03:49:18|EAST VS WEST GERMANY| +08::01::2022 03:49:19|FUCKIN WANI| +08::01::2022 03:49:23|ricunny +08::01::2022 03:49:23|EEEEERIKA +08::01::2022 03:49:25|FUCK OFF ERIKA| +08::01::2022 03:49:26|AI +08::01::2022 03:49:26|ami chan | +08::01::2022 03:49:27|AMI BUTT| +08::01::2022 03:49:27|My beautiful wife Maho and her pig dog Erika| +08::01::2022 03:49:29|ES BRAUST EIN RUF WIE DONNERHALL| +08::01::2022 03:49:29|EEEEEEEEEEEERIKA +08::01::2022 03:49:31|ANI +08::01::2022 03:49:31|Smug Erika| +08::01::2022 03:49:32|TWENTY FUCKING WEHRABOOS!| +08::01::2022 03:49:33|THAT WANI WILL DIE IN 100 DAYSSSSSSSS| +08::01::2022 03:49:34|Erika will lose| +08::01::2022 03:49:36|SHUT UP WANI| +08::01::2022 03:49:37|FUCKING LOSER SITS ALL BY HERSELF| +08::01::2022 03:49:39|DEALS +08::01::2022 03:49:40|Erika is such a bitch| +08::01::2022 03:49:40|FUCK OFF BITCH| +08::01::2022 03:49:40|LONG LIVE DDR FUCK WEST GERMANY| +08::01::2022 03:49:41|My wife can't be this smug| +08::01::2022 03:49:41|REMOVE ERIKA| +08::01::2022 03:49:42|bitch alert| +08::01::2022 03:49:43|ERETIC +08::01::2022 03:49:43|BASED WANI| +08::01::2022 03:49:43|Shut up, Erika| +08::01::2022 03:49:44|Fuck Erika I hate Erika | +08::01::2022 03:49:46|EEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 03:49:46|ERESY +08::01::2022 03:49:48|I like how new Erika is a different character| +08::01::2022 03:49:48|HATE FUCK ERIKA| +08::01::2022 03:49:48|Erika my beloved| +08::01::2022 03:49:49|erika fuckin shit| +08::01::2022 03:49:49|Erika for brutal doggy style and impregnation| +08::01::2022 03:49:49|LIEB VATERLAND MAGST RUHIG SEIN| +08::01::2022 03:49:51|You're asking for a dicking Erika| +08::01::2022 03:49:51|K O U M E | +08::01::2022 03:49:51|I like Erika's eyes | +08::01::2022 03:49:51|What ideals Miho even has lmao| +08::01::2022 03:49:52|OUME +08::01::2022 03:49:54|>thanks for not letting me die| +08::01::2022 03:49:54|death to koume| +08::01::2022 03:49:54|SS floof| +08::01::2022 03:49:55|drown again pls| +08::01::2022 03:49:55|BEST GERM| +08::01::2022 03:49:55|KOUME YESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSs| +08::01::2022 03:49:56|Choking Erika!| +08::01::2022 03:49:56|KOUME! >3| +08::01::2022 03:49:56|pomf* +08::01::2022 03:49:57|how did wani get a following| +08::01::2022 03:49:57|OUME +08::01::2022 03:49:58|literally who| +08::01::2022 03:49:58|Based Fluff| +08::01::2022 03:49:58|UTE +08::01::2022 03:49:58|owme +08::01::2022 03:49:58|ANI +08::01::2022 03:49:59|"i should of let you die"| +08::01::2022 03:50:00|UTE +08::01::2022 03:50:02|DUMB WANI| +08::01::2022 03:50:02|PTSD | +08::01::2022 03:50:04|ARMA +08::01::2022 03:50:05|>should of| +08::01::2022 03:50:06|OUMEEEEEEEEEEEEEEEEEEEEE +08::01::2022 03:50:06|how fast did miho dip that she couldnt thank her| +08::01::2022 03:50:07|THANKS FOR SAVING ME FROM DROWNING| +08::01::2022 03:50:08|KUOME LIVES| +08::01::2022 03:50:09|omf +08::01::2022 03:50:10|my angel!| +08::01::2022 03:50:11|just kill her right now to make amends| +08::01::2022 03:50:14|I want Erika to smash me| +08::01::2022 03:50:14|pomf* +08::01::2022 03:50:14|KUOME LIVES IN DEATH| +08::01::2022 03:50:15|umme +08::01::2022 03:50:16|>erika wanted this to drown Dumb bitch| +08::01::2022 03:50:16|koume midget| +08::01::2022 03:50:16|weetness +08::01::2022 03:50:19|another floof....| +08::01::2022 03:50:19|PTSD Inducing stare| +08::01::2022 03:50:19|I honestly forgot how much of a shitter wani was in the tv series. she's much better in the films| +08::01::2022 03:50:19|Erika will show you her bewegungskrieg soon enough just see| +08::01::2022 03:50:19|Read that one fan manga about her| +08::01::2022 03:50:20|now kiss| +08::01::2022 03:50:22|I DIDN'T BOTHER BRINGING IT UP FOR YEARS| +08::01::2022 03:50:23|mount a water canon on the tank| +08::01::2022 03:50:23|miho take your meds| +08::01::2022 03:50:23|uome....... +08::01::2022 03:50:25|>shes not real| +08::01::2022 03:50:27|"wani following" she a cute and tsun tsun, how did you stop being a faggot -- oh you didn't| +08::01::2022 03:50:29|I THINK ERIKA SUCKS| +08::01::2022 03:50:30|Erika SEETHING| +08::01::2022 03:50:30|killing intent| +08::01::2022 03:50:33|DEATH TO MERCEDES| +08::01::2022 03:50:34|tasty midget| +08::01::2022 03:50:34|did her mom also want her to drown?| +08::01::2022 03:50:34|>Erika mad Koume is still alive| +08::01::2022 03:50:38|I LOVE THE TONK I LOVE THE TONK| +08::01::2022 03:50:39|based granny| +08::01::2022 03:50:40|erika mad| +08::01::2022 03:50:41|Maho is my wife btw| +08::01::2022 03:50:41|Erika going to haze her| +08::01::2022 03:50:42|LITZ +08::01::2022 03:50:43|theres this saying about drowning during a match| +08::01::2022 03:50:44|ooraibros... it's time| +08::01::2022 03:50:45|Erika sucks my dick alright| +08::01::2022 03:50:45|wtf this show has a Nazi team...?| +08::01::2022 03:50:45|based grandma| +08::01::2022 03:50:47|Erika's laughter in the final| +08::01::2022 03:50:48|>Its been 10 years since the accident Miho, you have to let me go| +08::01::2022 03:50:51|aki +08::01::2022 03:50:55|>Takahi left arisu for koume| +08::01::2022 03:50:59|GET TO YOUR VEHICLES| +08::01::2022 03:51:01|AI +08::01::2022 03:51:08|Oorari vs ::a::| +08::01::2022 03:51:17|BE WELL, MY LITTLE WAR-MACHINE!| +08::01::2022 03:51:17|oorari +08::01::2022 03:51:18|Orararai +08::01::2022 03:51:19|It's afraid| +08::01::2022 03:51:20|it's a good thing she has plot armour| +08::01::2022 03:51:21|-lewd +08::01::2022 03:51:21|Opening move: Rape Correction| +08::01::2022 03:51:23|ewd +08::01::2022 03:51:25|Just got here, this show any good?| +08::01::2022 03:51:26|its afraid| +08::01::2022 03:51:29| +08::01::2022 03:51:31|ea +08::01::2022 03:51:33|::a:: gets beaten to a pulp. simultaneously covered in their own semen| +08::01::2022 03:51:33|QUICK PICK YOUR TANKFU| +08::01::2022 03:51:34|O ARA ARA ARA ARAI| +08::01::2022 03:51:34|Warcrimes will be committed today.| +08::01::2022 03:51:38|is it stopping for everyone else?| +08::01::2022 03:51:38|i want to choke maho| +08::01::2022 03:51:41|FUR DEUTSCHLAND | +08::01::2022 03:51:42| +08::01::2022 03:51:42|SIEG HEIL VIKTORIA| +08::01::2022 03:51:42|this is the only good thing to come out of j*pan| +08::01::2022 03:51:42|KLOTZEN NICHT KLECKERN| +08::01::2022 03:51:45|:: +08::01::2022 03:51:47|o +08::01::2022 03:51:47|no buffers| +08::01::2022 03:51:48|>quoting Yukari| +08::01::2022 03:51:48|PANZER VOR| +08::01::2022 03:51:49|FOR WHAT| +08::01::2022 03:51:49|PANZER VOR| +08::01::2022 03:51:49|what does it mean, ::a::?| +08::01::2022 03:51:49|PANZER VOR| +08::01::2022 03:51:49|PANZER VOR| +08::01::2022 03:51:50|PANTSU VOR| +08::01::2022 03:51:50|PANZER VOR!!| +08::01::2022 03:51:51|PANZER VOR| +08::01::2022 03:51:51|PANZER VOR| +08::01::2022 03:51:52|covering myself in my own semen for my favorite GuP girl| +08::01::2022 03:51:52|PANZER VOR| +08::01::2022 03:51:52|WHAT DOES IT MEAN?| +08::01::2022 03:51:52|Panzer For| +08::01::2022 03:51:52|PANZER VOR| +08::01::2022 03:51:53|PANZA VOR| +08::01::2022 03:51:54|PANZER VOR| +08::01::2022 03:51:54|PANTS ARE FOR| +08::01::2022 03:51:55|PANZER VOR | +08::01::2022 03:51:55|OTSUGEKI +08::01::2022 03:51:55|PANZER VORE| +08::01::2022 03:51:56|PANZER VOR| +08::01::2022 03:51:56|PANZER VOR| +08::01::2022 03:51:57|Pantsu Four!| +08::01::2022 03:51:58|PANZER VOR| +08::01::2022 03:51:59|CUTE WANI| +08::01::2022 03:51:59|ARMORED VORTEX| +08::01::2022 03:51:59|Panzer Vor means Panzer Vor| +08::01::2022 03:52:00|Kinoplex moment| +08::01::2022 03:52:01|PANZA VORE| +08::01::2022 03:52:03|panzer vor means panzer vor| +08::01::2022 03:52:03|VANER POR| +08::01::2022 03:52:03|PANZER VOR| +08::01::2022 03:52:04|Why are you on ::a:: if you hate every other anime wtf anon| +08::01::2022 03:52:05|pnzr 4| +08::01::2022 03:52:06|PANSY FOUR| +08::01::2022 03:52:07|virgin speech vs the chad PANZER VOR| +08::01::2022 03:52:09|tanks please move forward pls| +08::01::2022 03:52:11|type 88 bros, it's our time| +08::01::2022 03:52:14|How does one series have so many kino moments| +08::01::2022 03:52:15|TL NOTE: PANZER VOR means PANZER VOR| +08::01::2022 03:52:17|LOOF +08::01::2022 03:52:17|Stream is completely fucked for me, looks like no tanks this year bros| +08::01::2022 03:52:18|8 +08::01::2022 03:52:18|::a:: dont even get to the field they get kicked out for kidnapping usagi teamu| +08::01::2022 03:52:20|my maho wife| +08::01::2022 03:52:20|8 +08::01::2022 03:52:21|>she can't tell| +08::01::2022 03:52:21|Panzer Vor means Penetrate Anon| +08::01::2022 03:52:22|So which one of you will be dressing up as Yukari for the ::a:: team?| +08::01::2022 03:52:24|SO PRECIOUS| +08::01::2022 03:52:28|e +08::01::2022 03:52:29|manko teamu| +08::01::2022 03:52:36|SORE DE IIN DA YO NE| +08::01::2022 03:52:36|TL note: "Panzer Vor" means "Darj and Pekoe are best girls"| +08::01::2022 03:52:37|nishizumi swag incoming| +08::01::2022 03:52:44|Saori, fart into the radio, immediately.| +08::01::2022 03:52:45|oi +08::01::2022 03:52:45| ンツァーフォー +08::01::2022 03:52:46|>::a::non dresses up as yukari as a joke >::a::non is molested to death| +08::01::2022 03:52:47|Non Slut Sayori| +08::01::2022 03:52:48|>over and out| +08::01::2022 03:52:49|UTE +08::01::2022 03:52:50|EW +08::01::2022 03:52:52|>you're not a pro in bed| +08::01::2022 03:52:53|who drives darj's churchill???????| +08::01::2022 03:52:56|WTF HOW| +08::01::2022 03:52:56|based mako| +08::01::2022 03:52:57|I can't believe it took this long for someone to go MANKO TEAMU| +08::01::2022 03:52:58|Fun is over| +08::01::2022 03:52:58|ot +08::01::2022 03:52:59|AAAAAAAAAAAAAAAAAH +08::01::2022 03:53:00|ANI +08::01::2022 03:53:00|EAD +08::01::2022 03:53:00|EEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 03:53:01|Pro Bass| +08::01::2022 03:53:02|ANI +08::01::2022 03:53:05|KINO TIME| +08::01::2022 03:53:05|can confirm I would rape dressed up ::a::non in a game of pretend| +08::01::2022 03:53:06|nazi time| +08::01::2022 03:53:07|through the forest wow this is like a history reference| +08::01::2022 03:53:08|! Banger alert ! Banger alert !| +08::01::2022 03:53:08|UND DAS HEIST| +08::01::2022 03:53:09|KUROMORIMINE UBER ALLES| +08::01::2022 03:53:09|INO +08::01::2022 03:53:10|IEG +08::01::2022 03:53:10|ITS OVER| +08::01::2022 03:53:10|AUF DER HEIDE | +08::01::2022 03:53:11|AUF DER HEIDE| +08::01::2022 03:53:11|RIKA +08::01::2022 03:53:11|SIEG HEIL VIKTORIA| +08::01::2022 03:53:12|hhhh +08::01::2022 03:53:12|HOLY SHIT OORAI IS DONE| +08::01::2022 03:53:12|AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELIEN| +08::01::2022 03:53:12|NAZI TIME BBY| +08::01::2022 03:53:12|RIKA +08::01::2022 03:53:13|>they went through the forest| +08::01::2022 03:53:13|RIKA +08::01::2022 03:53:13|UND DAS HEIßT| +08::01::2022 03:53:13|WAKE PU| +08::01::2022 03:53:14|OH NO NO NO NO NO NO| +08::01::2022 03:53:16|its over Oorari Bros we got to cocky | +08::01::2022 03:53:16|AUF DER HEIDE| +08::01::2022 03:53:16|UND DAS HEISST| +08::01::2022 03:53:17|EEEEEEEEEEEEEEERIKA +08::01::2022 03:53:17|RIKA +08::01::2022 03:53:17|RIKA +08::01::2022 03:53:17|ERIKA TIME| +08::01::2022 03:53:18|RIKA +08::01::2022 03:53:18|UND DAS HEISST| +08::01::2022 03:53:18|UND DAS HEIST| +08::01::2022 03:53:18|RIKA +08::01::2022 03:53:18|UND DAS HEISST| +08::01::2022 03:53:18|RIKA +08::01::2022 03:53:19|UND DAS HEIST| +08::01::2022 03:53:19|EEEERIKA +08::01::2022 03:53:20|RIKA +08::01::2022 03:53:20|ONLY DUCE COULD WIN THIS| +08::01::2022 03:53:20|RIKA +08::01::2022 03:53:20|EEEERIKA +08::01::2022 03:53:20|UND DAS HEISST | +08::01::2022 03:53:20|RIKA +08::01::2022 03:53:21|:: +08::01::2022 03:53:22|RIKAAAAAA +08::01::2022 03:53:22|UND DAS HEISST... ERIKA!| +08::01::2022 03:53:22|RRRRRRRRIIIIIIIIKKKKKKKKKKAAAAAAAAAAA +08::01::2022 03:53:22|UN DAS HEIST| +08::01::2022 03:53:23|zUA +08::01::2022 03:53:24|o:: HEIL ERIKA| +08::01::2022 03:53:24|AUF HER HEIDE BLUT EIN KLEINES BLUBELEIN| +08::01::2022 03:53:24|UND DAS HEIST| +08::01::2022 03:53:25|EEEEEEEEEEEEEEEEEEEEEEEEEERRIKA +08::01::2022 03:53:25|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 03:53:25|RIKA!! +08::01::2022 03:53:25|no more wholesome gup| +08::01::2022 03:53:27|RIKA +08::01::2022 03:53:27|DAS HEIST| +08::01::2022 03:53:28|EEEEEEEEEEEEEEEERIKA +08::01::2022 03:53:28|UN DAST IST ERIKA| +08::01::2022 03:53:29|AUF DER HEIDE| +08::01::2022 03:53:30|HEIL ERIKA| +08::01::2022 03:53:30|HEIL HITLER| +08::01::2022 03:53:31|RIKA +08::01::2022 03:53:32|I'M WHISTLEING AS LOUD I CAN RIGHT NOW| +08::01::2022 03:53:32|RIKA +08::01::2022 03:53:32|RIKA +08::01::2022 03:53:34|NIGGAZUMI STYLE| +08::01::2022 03:53:34| リカ様!!!! +08::01::2022 03:53:35|Just Charge| +08::01::2022 03:53:35|:: +08::01::2022 03:53:35|NISHGZUME StYLE| +08::01::2022 03:53:35|EEEEEEEEEERIKA +08::01::2022 03:53:35|german steel folded by a 1000 slaves| +08::01::2022 03:53:36|UND DAS HEIßT| +08::01::2022 03:53:36|DUMB DUMB DUMB ERIIIIIIIIIIIIKKKKKKKKKKAAAAAAAAAAAA| +08::01::2022 03:53:37|I'm glad I all inned on Kuromorimine winning| +08::01::2022 03:53:37|EEERIKA +08::01::2022 03:53:37|EEEEEEEEEEEEEEEEEERIKA +08::01::2022 03:53:38|LUMENLIED +08::01::2022 03:53:38|UND DAS HEISST ERIKA| +08::01::2022 03:53:38|EEERIIKAAAAAAAAAAAA +08::01::2022 03:53:40|RIKA +08::01::2022 03:53:40|EEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 03:53:41|488 +08::01::2022 03:53:41|WANI! WANI! WANI!| +08::01::2022 03:53:41|EEERIKA +08::01::2022 03:53:42|Auf der Heide blueht ein kleines bluemelein| +08::01::2022 03:53:42|RIKAAA +08::01::2022 03:53:42|IGGAZUME +08::01::2022 03:53:43|BAM BAM BAM | +08::01::2022 03:53:43|rika'd +08::01::2022 03:53:43|HALE HORTLER| +08::01::2022 03:53:44|NISHIZUMI STYLE IS SUGOI| +08::01::2022 03:53:44|o:: o:: o::| +08::01::2022 03:53:45|EEEEEEEEEEEEEEERIKA +08::01::2022 03:53:46|BOOM BOOM BOOM| +08::01::2022 03:53:46|RIKA +08::01::2022 03:53:49|DUMB WANI| +08::01::2022 03:53:49|IP +08::01::2022 03:53:50|SO STIFF!| +08::01::2022 03:53:50|488 +08::01::2022 03:53:51|RIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 03:53:51|UND DAS HEIST| +08::01::2022 03:53:53|RIKAAAAAAAAAAAAAAAAAAA +08::01::2022 03:53:55|Erika showiong who is boss| +08::01::2022 03:53:55|EERICKA +08::01::2022 03:53:56|kmm singing this song when?| +08::01::2022 03:53:56|JUST LIKE ME!| +08::01::2022 03:53:56|SIEG HEIL VIKTORIA| +08::01::2022 03:53:59|UND DAS HEIST | +08::01::2022 03:54:00|SIEG HEIL| +08::01::2022 03:54:01|gamers meet rl| +08::01::2022 03:54:03|SIEG HEIL| +08::01::2022 03:54:04|exterminate the gamers| +08::01::2022 03:54:04|TE +08::01::2022 03:54:05|GAME OVER| +08::01::2022 03:54:05|EEEEEEERIKA +08::01::2022 03:54:06|DIE FAHNE HOCH| +08::01::2022 03:54:07|PUT THAT BITCH IN REVERSE AND DUMP THAT CLUTCH| +08::01::2022 03:54:07|gamer girls just saved oorari right here| +08::01::2022 03:54:07|wait did they never practice driving before the match?| +08::01::2022 03:54:08|SEFUL +08::01::2022 03:54:08|Its over for Nishitzumi| +08::01::2022 03:54:09|GAMERS SAY NO TO WANI| +08::01::2022 03:54:10|gamer bros... its over...| +08::01::2022 03:54:11|WORST TEAM = GONE| +08::01::2022 03:54:11|GAYMERS SAVE THE DAY| +08::01::2022 03:54:11|AVED +08::01::2022 03:54:12|THEY SAVED THE DAY| +08::01::2022 03:54:13|NONONOONON GAMERBROS.....| +08::01::2022 03:54:13|I love marches so much| +08::01::2022 03:54:13|GAMERS FUCKING JOBBED| +08::01::2022 03:54:13|WE DID IT GAYMERS!!| +08::01::2022 03:54:13|GAMERS NO| +08::01::2022 03:54:13|otsugeki? +08::01::2022 03:54:14|SIEG KMM. SIEG MAHO| +08::01::2022 03:54:15| 卐卐卐卐卐卐卐卐卐卐 +08::01::2022 03:54:15|SIEGU HEIL| +08::01::2022 03:54:16|unintentional sacrifice| +08::01::2022 03:54:17|I'M HEILING SO HARD RIGHT NOW | +08::01::2022 03:54:17|GAYMER FUEL| +08::01::2022 03:54:18|::fitv:: with the save| +08::01::2022 03:54:19|:: +08::01::2022 03:54:20|TFO +08::01::2022 03:54:20|GAMER GIRLS....| +08::01::2022 03:54:21|took one for the team| +08::01::2022 03:54:22|cum loaded| +08::01::2022 03:54:24|pro gammer move| +08::01::2022 03:54:25|Wapanese tank blown apart| +08::01::2022 03:54:26|Gamers absolutely blown the fuck out| +08::01::2022 03:54:27|>gamers job, as usual| +08::01::2022 03:54:28|nice job jobbing| +08::01::2022 03:54:32|can you heil with your dick?| +08::01::2022 03:54:33|NO TRANSMISSION GANG| +08::01::2022 03:54:36|HEIL SCHWARZWALDSPITZE!| +08::01::2022 03:54:37|stupid wani| +08::01::2022 03:54:37|GAME... OVER| +08::01::2022 03:54:38|I LOVE ERIKA| +08::01::2022 03:54:38|"Japanese" "Tanks"| +08::01::2022 03:54:39|GAMERS RISE UP| +08::01::2022 03:54:39|u +08::01::2022 03:54:40|o +08::01::2022 03:54:43|the gamers should be used to nazis BTFOing them online already so its fine| +08::01::2022 03:54:43|they blocked for miho, its ok| +08::01::2022 03:54:43|DUMB WANI| +08::01::2022 03:54:44|Gamers will rise again| +08::01::2022 03:54:46|TL note: "It's a fierce battle" means 'it is a fierce battle'| +08::01::2022 03:54:50|NAOMI IS SO FUCKING UGLY| +08::01::2022 03:54:52|Japanese """""""""tanks""""""""""| +08::01::2022 03:54:54|thanks tl kun| +08::01::2022 03:54:55|thanks tl | +08::01::2022 03:54:55|GAME OVER| +08::01::2022 03:54:55|iejob +08::01::2022 03:54:56|It isn't jobbing if it's your first time. It's just losing| +08::01::2022 03:54:57|pls describe battle| +08::01::2022 03:54:58|GEEMU OBAH| +08::01::2022 03:54:58|-okay +08::01::2022 03:54:59|YOU TAKE THAT BACK| +08::01::2022 03:55:00|MOU GE-MU O-BA| +08::01::2022 03:55:04|Are you okay, ::a::?| +08::01::2022 03:55:05|NAOMI > ALL| +08::01::2022 03:55:07|I WILL NOT TAKE IT BACK| +08::01::2022 03:55:11|GAME OVER YEAAAAAAAAHHHHH| +08::01::2022 03:55:11|>Imagine not killing the nerds| +08::01::2022 03:55:12|wowie! panthers!| +08::01::2022 03:55:12|Should have bought the Battle Pass| +08::01::2022 03:55:12|FUCK U| +08::01::2022 03:55:13|oh yeah the tanks| +08::01::2022 03:55:13|MOKEY +08::01::2022 03:55:13|Dear god she's lost an eye!| +08::01::2022 03:55:13|mokey +08::01::2022 03:55:14|buster wolf?| +08::01::2022 03:55:15|LITERALLY RUINED THE WHOLE SHOW| +08::01::2022 03:55:16|smokey smokes| +08::01::2022 03:55:18|>king tinger spam| +08::01::2022 03:55:20|MOKEY +08::01::2022 03:55:20|FEST STEHT UND TREU DI WACHT DIE WACHT AM RHEIN| +08::01::2022 03:55:22|Now I'll proceed to shotgun this glass of vodka pray for me anons| +08::01::2022 03:55:22|Smoke em if you got em| +08::01::2022 03:55:23|shut up nakkun| +08::01::2022 03:55:23|ONLY YOU CAN PREVER SMOKE FIRES| +08::01::2022 03:55:23|BRAVO RELIC| +08::01::2022 03:55:23|Speaking or, smoke break when=| +08::01::2022 03:55:24|moko moko | +08::01::2022 03:55:24|MOKUMOKU YOI| +08::01::2022 03:55:25|COULD DUCE GET FERRARI ENGINES?| +08::01::2022 03:55:26|smokey joe| +08::01::2022 03:55:26|mokumoku yaoi| +08::01::2022 03:55:26|MOKU MOKU YO| +08::01::2022 03:55:27|KZ +08::01::2022 03:55:28|moku moku yoi| +08::01::2022 03:55:31|operation smoke key| +08::01::2022 03:55:31|OKUMOKU +08::01::2022 03:55:32|MOKU MOKU| +08::01::2022 03:55:33|ASSSSSSSSSSSSSSSSSSSS +08::01::2022 03:55:33|SHID AND FARD| +08::01::2022 03:55:34| くもく +08::01::2022 03:55:35|MOKU MOKU| +08::01::2022 03:55:36|MOKU MOKU HAJIME| +08::01::2022 03:55:37|Dude weed lmao| +08::01::2022 03:55:38|moku moku yoi!| +08::01::2022 03:55:38|ASSED +08::01::2022 03:55:38|MOKU MOKU| +08::01::2022 03:55:38|moku moku| +08::01::2022 03:55:40|MOKU MOKU| +08::01::2022 03:55:40|RAAAAAAP +08::01::2022 03:55:41|Gas the j| +08::01::2022 03:55:41|WO ALLE STRASSEN ENDEN| +08::01::2022 03:55:43|420 | +08::01::2022 03:55:43|blaze it| +08::01::2022 03:55:45|UDE +08::01::2022 03:55:47|ROLLIN COAL| +08::01::2022 03:55:49|GAS THEM| +08::01::2022 03:55:49|>popping smoke in an open field| +08::01::2022 03:55:50|Mustard Gas| +08::01::2022 03:55:50|MOKU MOKU| +08::01::2022 03:55:50|SHUT UP WANI| +08::01::2022 03:55:52|DUDE WEED| +08::01::2022 03:55:52| くもくすごい +08::01::2022 03:55:52|is that legal?| +08::01::2022 03:55:53|r u doubting the nishizumi erika????| +08::01::2022 03:55:54|ZEHNTAUSEND MAN| +08::01::2022 03:55:55|ERIKA o::| +08::01::2022 03:55:56|dumb wani| +08::01::2022 03:55:57|zyklon b | +08::01::2022 03:55:57|CONSERVE YOUR AMMO| +08::01::2022 03:55:58|>shooting tanks| +08::01::2022 03:56:00|can guppies even run out of shells?| +08::01::2022 03:56:01|AHoo~ +08::01::2022 03:56:02|tiger II's are so sexy| +08::01::2022 03:56:03|The alligator fears the smoke| +08::01::2022 03:56:04|>stray round hits Miho| +08::01::2022 03:56:04|Smart Maho and stupid Wani| +08::01::2022 03:56:05|Erika is so bad at this| +08::01::2022 03:56:05|dumb wani| +08::01::2022 03:56:06|ES +08::01::2022 03:56:06|machine guns are kino| +08::01::2022 03:56:09|I want Erika to dominate me completely| +08::01::2022 03:56:10|panzer turrets are like penises| +08::01::2022 03:56:12|NINJA SUREYA DESU| +08::01::2022 03:56:13|yes but don't worry about shells| +08::01::2022 03:56:13|aaas +08::01::2022 03:56:14|Porsche +08::01::2022 03:56:15|PEKOE CUTE| +08::01::2022 03:56:16|has anyone ever run out of shells?| +08::01::2022 03:56:17|???????????????????? +08::01::2022 03:56:17|STFU SLAG| +08::01::2022 03:56:18|??????????? +08::01::2022 03:56:18|they have a porsche tiger brehs| +08::01::2022 03:56:18|???????????????????????????????????? +08::01::2022 03:56:19|ongs +08::01::2022 03:56:19|?????????????????????????????? +08::01::2022 03:56:20|??????????????????????????????? +08::01::2022 03:56:20|SHUT UP SLAG| +08::01::2022 03:56:20|so True darj| +08::01::2022 03:56:22|????????????????????????????? +08::01::2022 03:56:22|ALL IS FAIR IN LOVE AND WAR| +08::01::2022 03:56:22|WHO ASKED???| +08::01::2022 03:56:23|>Smokescreens are for powergamers| +08::01::2022 03:56:23|?????????????????????????? +08::01::2022 03:56:23|STFU DARJEELING| +08::01::2022 03:56:23|AHHHHH ENGRISH| +08::01::2022 03:56:24|SHUT UP SLAG| +08::01::2022 03:56:24|ORU IS | +08::01::2022 03:56:25|??????????????????????? +08::01::2022 03:56:25|You said that one ALREADY!| +08::01::2022 03:56:25|I want to dominate Erika completely | +08::01::2022 03:56:25|what did darj just say? I dont speak english| +08::01::2022 03:56:25|But it's not war?| +08::01::2022 03:56:26|bongs +08::01::2022 03:56:26|???? +08::01::2022 03:56:27|shut upppp| +08::01::2022 03:56:27|??????????????''' +08::01::2022 03:56:27|SPEAK ENGLISH PLEASE| +08::01::2022 03:56:27|in english, poindexter| +08::01::2022 03:56:27|THE FUCK WAS THAT DUMB SLAG| +08::01::2022 03:56:28|DARJEELING SHUT THE FUCK UP| +08::01::2022 03:56:29|thick tank| +08::01::2022 03:56:30|WHAT DID SHE MEAN BY THIS?| +08::01::2022 03:56:30|Finally a real proverb| +08::01::2022 03:56:31|head +08::01::2022 03:56:32|Have you heard this saying?| +08::01::2022 03:56:33|*bomb civilians*| +08::01::2022 03:56:34|My cas come to watch| +08::01::2022 03:56:34|AT +08::01::2022 03:56:35|WHAT THE FUCK DOES THAT MEAN| +08::01::2022 03:56:36|???????????????????????? +08::01::2022 03:56:36|to be fair that is a real saying| +08::01::2022 03:56:37|kek we towed it| +08::01::2022 03:56:38|WHAT THE FUCKS WAS THAT JUST NOW DUMB SLAG| +08::01::2022 03:56:38|Tiger leave cover to chase the enemy its fury all over again| +08::01::2022 03:56:39|AT +08::01::2022 03:56:39|???????????????? +08::01::2022 03:56:39|WHAT DID SHE MEAN BY THIS| +08::01::2022 03:56:41|UTE +08::01::2022 03:56:41|ute +08::01::2022 03:56:43|Cat +08::01::2022 03:56:43|no one understands English, stop speaking it Darj| +08::01::2022 03:56:44|KAYUSHA CUNNY ON MY NECK| +08::01::2022 03:56:44|SHUT THE FUCK UP BONG| +08::01::2022 03:56:46|CUTE KATYU| +08::01::2022 03:56:46|can we get a translator's note on "All is fair in love and war" ?| +08::01::2022 03:56:46|poor time to masturbate, katyusha| +08::01::2022 03:56:46|katyushas thighs| +08::01::2022 03:56:46| わいい +08::01::2022 03:56:46|>Fat shaming a tank| +08::01::2022 03:56:46|UTE +08::01::2022 03:56:48|UTE +08::01::2022 03:56:48|oh god my final drive| +08::01::2022 03:56:48|UTE +08::01::2022 03:56:49|THE POWER OF FRIENDSIHP| +08::01::2022 03:56:49|highs +08::01::2022 03:56:49|just fire backwards to propel itself| +08::01::2022 03:56:50|ute! +08::01::2022 03:56:50|UTE +08::01::2022 03:56:50|ARR IZ FAYYA IN RUBU ANDO WAAA| +08::01::2022 03:56:50|EAMWORK +08::01::2022 03:56:51|UTETUSHA +08::01::2022 03:56:53|PROSHU TIGA| +08::01::2022 03:56:53|God I wish that were me| +08::01::2022 03:56:53|UTEEEE +08::01::2022 03:56:54|idget +08::01::2022 03:56:54|ute +08::01::2022 03:56:56|are the smoke launchers legal?| +08::01::2022 03:56:56|ST +08::01::2022 03:56:56|>russian loli will never fuck the back of your head| +08::01::2022 03:56:59|uffering +08::01::2022 03:57:00|highs +08::01::2022 03:57:01|kay and darj speak engrish to eachother| +08::01::2022 03:57:03|UTE +08::01::2022 03:57:04|uffers +08::01::2022 03:57:05|are we the baddies?| +08::01::2022 03:57:09|STUPID DUCKS AND THEIR BUFFERING| +08::01::2022 03:57:09|AS +08::01::2022 03:57:09|from what| +08::01::2022 03:57:09|LETS ROOL SOME COAL| +08::01::2022 03:57:09|pre-recorded buffering again| +08::01::2022 03:57:10|utt +08::01::2022 03:57:11|UTTHURT +08::01::2022 03:57:12|there is this saying about pulling a tiger up a hill| +08::01::2022 03:57:19|my hands cramp from typing| +08::01::2022 03:57:19|why does her butt hurt?| +08::01::2022 03:57:22|Her butt hurts? From what?| +08::01::2022 03:57:24|UTT +08::01::2022 03:57:26|(TL's note: "Delinquents" means "niggers")| +08::01::2022 03:57:27|you know| +08::01::2022 03:57:27|ostanza.jpg +08::01::2022 03:57:28|from butt secks| +08::01::2022 03:57:28|boko map| +08::01::2022 03:57:29|OKO +08::01::2022 03:57:29|>my feet hurt | +08::01::2022 03:57:30|I now understand the Wani hate. I forgot she was like this in the show| +08::01::2022 03:57:36|I can';t ype anymore| +08::01::2022 03:57:37|thanks tl kun| +08::01::2022 03:57:39|tl:UTE means "fire"| +08::01::2022 03:57:40|EUER +08::01::2022 03:57:44|its ok because charcter development| +08::01::2022 03:57:45|>this tank is cramped| +08::01::2022 03:57:45|shut up darj| +08::01::2022 03:57:46|oko +08::01::2022 03:57:46|Erika redemption arc soon | +08::01::2022 03:57:47|TTTTTTEEEEEEEEEEEEEEEE +08::01::2022 03:57:48|bro what is this video quality 360p?| +08::01::2022 03:57:50|UTE MEANS UTE| +08::01::2022 03:57:51|?????????????????????? +08::01::2022 03:57:51|SHUT UP DUMB SLAG| +08::01::2022 03:57:52|godlike ost here| +08::01::2022 03:57:53|shiho is the biggest bitch ever| +08::01::2022 03:57:55|CUTE PEKOE| +08::01::2022 03:57:56|ETZER +08::01::2022 03:57:57|cute peko blush| +08::01::2022 03:57:57|tl note: "ute" means 撃て| +08::01::2022 03:57:58|YES DARJEELING NOW STFU| +08::01::2022 03:57:58|hetzer gonna hetz| +08::01::2022 03:57:59|UTE UTE| +08::01::2022 03:58:01|REMINDS ME OF A SAYING| +08::01::2022 03:58:01|CHAD HETZER| +08::01::2022 03:58:02|Shyut up darjeerling, just be tea agaiun| +08::01::2022 03:58:03|SEX WITH ANZU| +08::01::2022 03:58:07|TL Note: Hetzter means tank| +08::01::2022 03:58:09|WHY DIDN'T THEY JUST SHOOT THE FLAG TANK?????| +08::01::2022 03:58:09|lat +08::01::2022 03:58:13|Momo should stick to loading| +08::01::2022 03:58:14|pekoe save gloriana from this crazy woman| +08::01::2022 03:58:18|Why is Kaicho so powerful| +08::01::2022 03:58:20|SEX WITH AN ANIME GIRL| +08::01::2022 03:58:20|I love reloading animations| +08::01::2022 03:58:20|they can't pen it| +08::01::2022 03:58:21|ANNO CHIBI| +08::01::2022 03:58:26|TL Note: Panzer means sensha| +08::01::2022 03:58:28|TL Note: "Anzu" means "SEX"| +08::01::2022 03:58:29|when does pekoe choke darj in her sleep| +08::01::2022 03:58:29|Pekoe best loader| +08::01::2022 03:58:30|THEIR GUN CANT PENETRATE IT RETARD| +08::01::2022 03:58:30|CZECH THIS OUT| +08::01::2022 03:58:33|THANKS TL| +08::01::2022 03:58:34|thanks tl| +08::01::2022 03:58:37|why did she take out the flag tank?| +08::01::2022 03:58:37|THANKS TLS| +08::01::2022 03:58:40|when does pekoe choke darj in her sleep| +08::01::2022 03:58:41|HILL SCENE!| +08::01::2022 03:58:44|where have I seen this scene before?| +08::01::2022 03:58:45|pravda copied this| +08::01::2022 03:58:46|te +08::01::2022 03:58:49|TL Note: "Flat" = "perfect"| +08::01::2022 03:58:51|lamo look at that tank with the tiny little gun lamo| +08::01::2022 03:58:51|>Imagine a hill defeating superiour German engineering| +08::01::2022 03:58:52|everynight but darj isnt sleeping| +08::01::2022 03:58:52|STAND YOUR GROUND| +08::01::2022 03:58:54|image fagmiliar| +08::01::2022 03:58:57|what happened to move foward?| +08::01::2022 03:58:58|VOLLEY FIRE| +08::01::2022 03:59:04|imagine trying to win against the nishizumi style| +08::01::2022 03:59:06|*transmission bursts into flames*| +08::01::2022 03:59:07|ah shit, here we go again| +08::01::2022 03:59:07|looks familiar....| +08::01::2022 03:59:09|TL Note: Schneizel just made an illegal move in chess, so it doesn't make sense that he could say checkmate, he might possibly| +08::01::2022 03:59:11|russians would have simply dug out the hill| +08::01::2022 03:59:12|10 min river scene coming up| +08::01::2022 03:59:13|OB'S STURMT ODER SCHNEIT| +08::01::2022 03:59:14|there is no maus to snipe| +08::01::2022 03:59:15|they're no match for the nishizumi style| +08::01::2022 03:59:15|ALRIGHT EVERYONE LET'S DIRECTLY ASSAULT A PREPARED POSITION| +08::01::2022 03:59:16|EUER +08::01::2022 03:59:20|TL Note: Ute is a geman feminine name| +08::01::2022 03:59:22|PEW PEW| +08::01::2022 03:59:27|where is the maus right now?| +08::01::2022 03:59:29|thanks tl| +08::01::2022 03:59:30|Transmisson: my time has come| +08::01::2022 03:59:30|>cut off copypasta| +08::01::2022 03:59:34|in transit| +08::01::2022 03:59:35|TL NOTE: ute is an australian truck| +08::01::2022 03:59:37|ES BRAUST UNSER PANZER IM STURMWIND DAHIN| +08::01::2022 03:59:38|just like kursk boys| +08::01::2022 03:59:39|Ob die Sonne uns lacht| +08::01::2022 03:59:40|STUG STUG STUG STUG| +08::01::2022 03:59:43|OH NO GERMAN BROS| +08::01::2022 03:59:45|I HATE THE ANTI MIHO| +08::01::2022 03:59:47|TL Note: Panzerlied means Erika| +08::01::2022 03:59:54|TL note; UTE is my dick splerginh| +08::01::2022 03:59:56|ITAAAAAAAAA +08::01::2022 03:59:56|IT'S OVER MAHO I HAVE THE HIGH GROUND| +08::01::2022 03:59:57|hetzer no oniichan mitaina yastsu| +08::01::2022 03:59:57|FUCKING DEAD| +08::01::2022 03:59:59|I wanna penetrate Yukaris rear armor with my KwK L::70 if you know what I mean| +08::01::2022 04:00:00|the fuck is a stuart going to do against a king tiger| +08::01::2022 04:00:02|panzerlied means that u cant trust a tank| +08::01::2022 04:00:03|ITAAAAA +08::01::2022 04:00:03|tl note: maho is my wife| +08::01::2022 04:00:03|jagdbros... its over...| +08::01::2022 04:00:06|NIPPON ICHI| +08::01::2022 04:00:07|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH +08::01::2022 04:00:07|hinzobubro +08::01::2022 04:00:07|Tl note: I'm retaded| +08::01::2022 04:00:08| ITS OVER| +08::01::2022 04:00:09|NTER +08::01::2022 04:00:11|AGDTIGER +08::01::2022 04:00:12|NIPPON ICHI| +08::01::2022 04:00:12|ITAAAAAAAAAAAAA +08::01::2022 04:00:12|NTER +08::01::2022 04:00:12|wnd +08::01::2022 04:00:12|IPPONICHI +08::01::2022 04:00:12|big boy| +08::01::2022 04:00:13|AHO +08::01::2022 04:00:13|NTER +08::01::2022 04:00:14|NTER +08::01::2022 04:00:15|NTER +08::01::2022 04:00:15|NTER +08::01::2022 04:00:15|OH NO| +08::01::2022 04:00:16|NICE MISS| +08::01::2022 04:00:16|nter +08::01::2022 04:00:18|hoh +08::01::2022 04:00:18|Where were they even hiding this thing| +08::01::2022 04:00:18|FAT TANK| +08::01::2022 04:00:19|JAGDTIGER A SHIT| +08::01::2022 04:00:19|JEW SENSHA| +08::01::2022 04:00:19|OH SHIT ITS THE JAGDTIGER| +08::01::2022 04:00:20|Yagdo tea gar| +08::01::2022 04:00:21|isn't the jagdtiger kinda shit?| +08::01::2022 04:00:21|TL note: I'm wasted| +08::01::2022 04:00:21|transmission explodes| +08::01::2022 04:00:21|NIPPON ICHIIIIIIIIIIIII| +08::01::2022 04:00:22|olded +08::01::2022 04:00:22|That'a a big tank| +08::01::2022 04:00:25|ENTAAA ENTAAA JADGTIGER| +08::01::2022 04:00:30|not the jagdnigger! anything but that!| +08::01::2022 04:00:31|It's Saypri level fat| +08::01::2022 04:00:32|they were hiding it off screen| +08::01::2022 04:00:32| +08::01::2022 04:00:35|>no casualties| +08::01::2022 04:00:35|Aim for the tracks.| +08::01::2022 04:00:41|aypri... +08::01::2022 04:00:44|LIEB VATERLAND MAGST RUHIG SEIN| +08::01::2022 04:00:46|like retards?| +08::01::2022 04:00:46|>champions fight by spamming heavy tanks| +08::01::2022 04:00:47|>jew sensha| +08::01::2022 04:00:48|Fucking pay to win| +08::01::2022 04:00:50|UTS +08::01::2022 04:00:51|they havent hit shit| +08::01::2022 04:00:54|lovely smoke effects on the explosions | +08::01::2022 04:00:55|champions +08::01::2022 04:00:55|What does the Type 89 even hope to achieve?| +08::01::2022 04:01:01|GANBARE STUG| +08::01::2022 04:01:02|nigger forest| +08::01::2022 04:01:02|DEUS VULT| +08::01::2022 04:01:03|ASUGA +08::01::2022 04:01:03|Just load gold ammo | +08::01::2022 04:01:03|WE GOT TOO COCKY| +08::01::2022 04:01:03|pay2win nigger forest| +08::01::2022 04:01:03|ttomanbros... +08::01::2022 04:01:04|history gang rise up| +08::01::2022 04:01:07|DEUS VULT| +08::01::2022 04:01:14|>lazy fucking stu counicl| +08::01::2022 04:01:15|Nzu +08::01::2022 04:01:20|TL Note: "Anzu" means "SEX"| +08::01::2022 04:01:22|his:: +08::01::2022 04:01:23|just chillin| +08::01::2022 04:01:24|Yukari a cute| +08::01::2022 04:01:25|THANKS TL| +08::01::2022 04:01:25|thanks tl| +08::01::2022 04:01:26|hull down| +08::01::2022 04:01:27|nzu +08::01::2022 04:01:29|Anzu means UOOOOOOOOOOOOHHHHHHHHH| +08::01::2022 04:01:29|18 > 7, How is this even legal| +08::01::2022 04:01:31|Yukari is so cute| +08::01::2022 04:01:33|OUR THING| +08::01::2022 04:01:33|AITER +08::01::2022 04:01:35|bait +08::01::2022 04:01:35|master baiter| +08::01::2022 04:01:36|AIT! +08::01::2022 04:01:36|BAIT +08::01::2022 04:01:37|THIS IS BAIT| +08::01::2022 04:01:38|AITED +08::01::2022 04:01:38|AITER +08::01::2022 04:01:38|AITER +08::01::2022 04:01:39|This is Bait| +08::01::2022 04:01:40|THIS IS BAIT| +08::01::2022 04:01:41|AITER +08::01::2022 04:01:41|ST +08::01::2022 04:01:41|this is bait| +08::01::2022 04:01:42|ETZER +08::01::2022 04:01:43|lesser Baiters| +08::01::2022 04:01:43|I'm baitin'| +08::01::2022 04:01:44|bait +08::01::2022 04:01:44|ST +08::01::2022 04:01:44|asterb8 +08::01::2022 04:01:44|ST +08::01::2022 04:01:45|heavy tanks legit useless in senshado just shoot the track| +08::01::2022 04:01:45|>baits their whole team| +08::01::2022 04:01:45|8 +08::01::2022 04:01:46|master baiter| +08::01::2022 04:01:47|THIS LOOKS LIKE A JOB FOR ME| +08::01::2022 04:01:47|cute extra| +08::01::2022 04:01:47|Choot them in the anoos| +08::01::2022 04:01:49|THE THING| +08::01::2022 04:01:49|THE MASTER BAITER| +08::01::2022 04:01:50|they're going to use THAT?| +08::01::2022 04:01:50|UNLIMITED BAIT WORKS| +08::01::2022 04:01:50|HAT +08::01::2022 04:01:51|GLORIOUS CZECHNOLOGY| +08::01::2022 04:01:52|MASTER BAITING WITH ANZU| +08::01::2022 04:01:53|they're about to do THAT| +08::01::2022 04:01:54|AGDPANTHER-CHAN! +08::01::2022 04:01:54|its not even bait at this point| +08::01::2022 04:01:55|obbed +08::01::2022 04:01:55|BUTT SEGGS BUTT SEGGS| +08::01::2022 04:01:55|ait +08::01::2022 04:01:56|that* +08::01::2022 04:01:56|this is bait| +08::01::2022 04:01:56|wned +08::01::2022 04:01:56|GOT EM| +08::01::2022 04:01:57|GONNA HETZ| +08::01::2022 04:01:57|NOT AGAIN| +08::01::2022 04:01:57|aited +08::01::2022 04:01:58|SEE YOU LATER NERDS| +08::01::2022 04:01:58|ONOOOOOO +08::01::2022 04:01:58|poor Emi| +08::01::2022 04:02:00|ucked +08::01::2022 04:02:00|fixed turret monkey| +08::01::2022 04:02:01|ROLLLED +08::01::2022 04:02:01|JAGPANTHER GIRL BEST GIRL| +08::01::2022 04:02:01|no name| +08::01::2022 04:02:02|ONOOOOOOOOO +08::01::2022 04:02:02| +08::01::2022 04:02:02|Wow, czech out this asshole, who does he think he is| +08::01::2022 04:02:03|No not my cute german unnamed waifu| +08::01::2022 04:02:03|ez u mad| +08::01::2022 04:02:04|OTSUGEKI +08::01::2022 04:02:04|OTSUGEKI +08::01::2022 04:02:05|MOBILITY KILL LOL| +08::01::2022 04:02:05|NGERY +08::01::2022 04:02:05|OTSUGEKI +08::01::2022 04:02:05|OTSUGEKI +08::01::2022 04:02:07|OTSUGEKI +08::01::2022 04:02:07|TRACKED +08::01::2022 04:02:07|OTSUGEKI! +08::01::2022 04:02:08|OTSUGEKI +08::01::2022 04:02:08|Nishi style| +08::01::2022 04:02:09|OTSUGEKI +08::01::2022 04:02:09|OTSUGEKI +08::01::2022 04:02:09|krauts btfo| +08::01::2022 04:02:10|OTSUGEKI +08::01::2022 04:02:11|SHE MAD| +08::01::2022 04:02:11|OTSUGEKI +08::01::2022 04:02:11|OOOOOOOOOOOOOTSSSSUUUUUUUUUUUUUGEEEEEEEEEKIIIIIIIIIIIIIIIIIII +08::01::2022 04:02:13|OTSUGEKI +08::01::2022 04:02:13|HIT THEIR ENGINES| +08::01::2022 04:02:14|OTSUGEKI +08::01::2022 04:02:14|T O T S U G E K I| +08::01::2022 04:02:14| 撃 +08::01::2022 04:02:14|Did someone jsut say Totsugeki?| +08::01::2022 04:02:17|OTSUGEKI +08::01::2022 04:02:17|TOTSUGEKI!!!!!!!!!!!!!!! IT ALWAYS WORKS| +08::01::2022 04:02:18|OTSUGEKI +08::01::2022 04:02:20|Anzu about to ram some ass| +08::01::2022 04:02:20|OTSUGEKI +08::01::2022 04:02:21|OTSUGEKI +08::01::2022 04:02:22|ENETRATED +08::01::2022 04:02:23|What mango?| +08::01::2022 04:02:24|HAD +08::01::2022 04:02:24|IW +08::01::2022 04:02:25|OD +08::01::2022 04:02:27|'cha looking at?| +08::01::2022 04:02:28|TO TSU GE KI| +08::01::2022 04:02:30|penetrated +08::01::2022 04:02:33|I want to penetrate Maho's line| +08::01::2022 04:02:33|hello fellow krauts| +08::01::2022 04:02:34|Hetzer gonnaq hetzer| +08::01::2022 04:02:34|the panther commander is seriously cute| +08::01::2022 04:02:36|BODY BLOCKS | +08::01::2022 04:02:36|AITED +08::01::2022 04:02:39|HETZERS GONNA HETZ| +08::01::2022 04:02:41|TENNOHEIKA BANZIA!!!| +08::01::2022 04:02:42|kicking girl best girl| +08::01::2022 04:02:42|tfw no gun depression| +08::01::2022 04:02:43|TOP TIER STRATS| +08::01::2022 04:02:43|ICK +08::01::2022 04:02:46|FAT FUCKING TANKS CAN'T GET UP HILL| +08::01::2022 04:02:47|why didn't they get a faster tank to do the baiting| +08::01::2022 04:02:51|aited +08::01::2022 04:02:51|is this the nishizumi style?| +08::01::2022 04:02:51|ANZU PENETRATING ME FROM BEHIND| +08::01::2022 04:02:54|UTEYUSHA +08::01::2022 04:02:55|Nishizumi style a shit| +08::01::2022 04:02:55|UUUUUUUUUUUUUTE +08::01::2022 04:02:57|CUTE | +08::01::2022 04:02:58|ishizumibros +08::01::2022 04:02:58|katyushas thighs!| +08::01::2022 04:02:58|ute +08::01::2022 04:02:59|StuGIII Crew are my wives| +08::01::2022 04:03:00|ANZU PENETRATING STYLE| +08::01::2022 04:03:01|cute yusha| +08::01::2022 04:03:02|aited +08::01::2022 04:03:03|UTE +08::01::2022 04:03:04| わいいすぎる +08::01::2022 04:03:04|highs +08::01::2022 04:03:05|MY LITTLE STALIN CAN'T BE THIS CUTE| +08::01::2022 04:03:06|ute +08::01::2022 04:03:07|YUTEUSHA +08::01::2022 04:03:08|orehead! +08::01::2022 04:03:08|What is the Nishizumi style?| +08::01::2022 04:03:09|idget +08::01::2022 04:03:14|USA USA USA| +08::01::2022 04:03:15|does katyusha get horny rubbing on Nonna like that?| +08::01::2022 04:03:16|cute jobbers| +08::01::2022 04:03:17|STFU ALISA| +08::01::2022 04:03:18|was the real Stalin this cute too?| +08::01::2022 04:03:18|smart kay| +08::01::2022 04:03:19| わいいよね~ +08::01::2022 04:03:20|KAY READ THE MANGA| +08::01::2022 04:03:24|absolute state| +08::01::2022 04:03:26|ONE TRICK PONIES| +08::01::2022 04:03:26|Kay is smart| +08::01::2022 04:03:26|nonna is the one that gets horny| +08::01::2022 04:03:27|she rubs on nonna because it makes her horny| +08::01::2022 04:03:28|Nishizumi Style is when you get fucked because your enemy is on a hill| +08::01::2022 04:03:30|smart kay| +08::01::2022 04:03:30|The primary function of Nonna is to be rubbed| +08::01::2022 04:03:31| +08::01::2022 04:03:35|What happening ::a:: why are they running circle around us| +08::01::2022 04:03:38|so this is the nishizumi style| +08::01::2022 04:03:41|tonk CHARGGGGGGGGGGGGGE| +08::01::2022 04:03:46|Nishizumi Style is letting your comrades drown| +08::01::2022 04:03:46|ayonara +08::01::2022 04:03:48|How does that even work| +08::01::2022 04:03:50|OTSUGEKI! +08::01::2022 04:03:53|GAS GAS GAS| +08::01::2022 04:03:53|ICHOCHET +08::01::2022 04:03:53|FUCKING BULLSHIT RICHOCET| +08::01::2022 04:03:54|So this is the power of frontal assaults on prepared positions| +08::01::2022 04:03:54|SAYONARA TOTSTUGEKI| +08::01::2022 04:03:55|OTSUGEKI +08::01::2022 04:03:59|Yare yare~| +08::01::2022 04:04:01| れやれ +08::01::2022 04:04:01|yare yare| +08::01::2022 04:04:01|Why doesn't every tank just use smoke, seems like op strat| +08::01::2022 04:04:01|ahoo +08::01::2022 04:04:03|Is the tigers armor really that strong?| +08::01::2022 04:04:05|yare yare| +08::01::2022 04:04:06|why did they dismount the hail again| +08::01::2022 04:04:09|>Plot armor| +08::01::2022 04:04:10|Nishizumi-style is the jobber's choice of tactic| +08::01::2022 04:04:11|PLOT ARMOR STYLE| +08::01::2022 04:04:12|SA +08::01::2022 04:04:13|HOMP +08::01::2022 04:04:13|THERE IT IS| +08::01::2022 04:04:14|sun tzu: "so much for mountain warfare"| +08::01::2022 04:04:17|americans eating again| +08::01::2022 04:04:18|BEST TEAM| +08::01::2022 04:04:20|AMERILARDS EATING POPCORN| +08::01::2022 04:04:20|sun tzu said that.| +08::01::2022 04:04:21|>fat ameriburger shoveling corn into her face| +08::01::2022 04:04:22|MUH +100mm PLATE| +08::01::2022 04:04:22|NO HOSHINO | +08::01::2022 04:04:23|LEOPON BEST| +08::01::2022 04:04:23|WITNESS ME!| +08::01::2022 04:04:23|porsche tigerbros...| +08::01::2022 04:04:23| +08::01::2022 04:04:25|>live repairs| +08::01::2022 04:04:27|t +08::01::2022 04:04:27|ASED\ +08::01::2022 04:04:27|My German tank can't possibly be this shit| +08::01::2022 04:04:27|>Carbon coated| +08::01::2022 04:04:28|iajabou +08::01::2022 04:04:28|he really did| +08::01::2022 04:04:28|cute engineer| +08::01::2022 04:04:29|BASED ::o::fags| +08::01::2022 04:04:29|o:: +08::01::2022 04:04:30|based ::o:: team| +08::01::2022 04:04:32|CALM ME DOWN PLEASE| +08::01::2022 04:04:33|ASUGA +08::01::2022 04:04:33|UTE +08::01::2022 04:04:38|God i whish i was that Leopon| +08::01::2022 04:04:38|Love this team| +08::01::2022 04:04:40|CARBON PLATING| +08::01::2022 04:04:45|Those better be asbestos gloves.| +08::01::2022 04:04:46|ROLLED +08::01::2022 04:04:47|Sun Tzu: "never be saunders or anzio as they job"| +08::01::2022 04:04:48| +08::01::2022 04:04:49|DUMB WANI| +08::01::2022 04:04:49|LANG +08::01::2022 04:04:50|german engineering moment| +08::01::2022 04:04:50|God dammit I knew we should have got the mishimoto| +08::01::2022 04:04:51|get fucked erika| +08::01::2022 04:04:52|MAO +08::01::2022 04:04:55|SUPERIOR GERMAN ENGINEERING| +08::01::2022 04:04:56|get dabbed on erishit| +08::01::2022 04:04:58|Erika BTFO| +08::01::2022 04:04:59|SASUGA RERA| +08::01::2022 04:05:00|LUCK | +08::01::2022 04:05:02|Fate conspires against Erika| +08::01::2022 04:05:04|EETHING +08::01::2022 04:05:04|girl has the best view of the house| +08::01::2022 04:05:06|>just the tracks| +08::01::2022 04:05:07|ERIKA SEETHING| +08::01::2022 04:05:08|STUCK WANI| +08::01::2022 04:05:09|[AUTISTIC SCREECHING]| +08::01::2022 04:05:09|NIPPON ICHI| +08::01::2022 04:05:09|ERMANS +08::01::2022 04:05:10|itler-sama... +08::01::2022 04:05:10|Have you heard this saying?| +08::01::2022 04:05:10| +08::01::2022 04:05:11|KONIGSTIGER TRANSMISSION | +08::01::2022 04:05:11|PEKOE CUTE| +08::01::2022 04:05:12|ducks! +08::01::2022 04:05:12|antrum +08::01::2022 04:05:13|EETHING +08::01::2022 04:05:13|SEETHING WANI| +08::01::2022 04:05:14|Orai trash > famed German heavy tanks| +08::01::2022 04:05:15|CUTE WANI| +08::01::2022 04:05:15|wani spazzing out| +08::01::2022 04:05:15|I LOVE ERIKA| +08::01::2022 04:05:16|germans be like "yeah lets just have two rows of wheels"| +08::01::2022 04:05:18|COPE AND SEETHE YOU DUMB WANI| +08::01::2022 04:05:18|>GERMAN ENGINEERING| +08::01::2022 04:05:20|TSD +08::01::2022 04:05:20|FORD THE RIVER| +08::01::2022 04:05:22|EEEEEEEE +08::01::2022 04:05:22|Erika is so cute when she's angry| +08::01::2022 04:05:22|waaay too long river scene| +08::01::2022 04:05:25|WANI IS VERY CUTE| +08::01::2022 04:05:25|get ready for moon jumps\| +08::01::2022 04:05:26|stomp stomp| +08::01::2022 04:05:28|HIGH IQ| +08::01::2022 04:05:29|DIE FAHNE HOCH| +08::01::2022 04:05:29|it was a lot more than two rows lol| +08::01::2022 04:05:30|Rolling that wheel like a bike wheel| +08::01::2022 04:05:31|kino time| +08::01::2022 04:05:31|SHE IS MY WIFE| +08::01::2022 04:05:36|water 2 stronk| +08::01::2022 04:05:43|M3 BROS I DON'T FEEL SO GOOD| +08::01::2022 04:05:43|Erika is so cute| +08::01::2022 04:05:43| +08::01::2022 04:05:44|>let me drown my teammates again| +08::01::2022 04:05:44|Even more Kino incoming| +08::01::2022 04:05:46|miho getting ptsd rn| +08::01::2022 04:05:46|ITS TIME FOR THE KINO| +08::01::2022 04:05:47|IP +08::01::2022 04:05:48|Time to FLYYYYYYYYYYYYY| +08::01::2022 04:05:48|AAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:05:49|i have lost litres of cum to Erika| +08::01::2022 04:05:49|was it 4 rows| +08::01::2022 04:05:50|time 2 JUMP!| +08::01::2022 04:05:50|WHAT ARE YOU DOING FRESHMEN| +08::01::2022 04:05:50|ONK +08::01::2022 04:05:50|bros our heavy tank killer is STUCK| +08::01::2022 04:05:51|AAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:05:51|No... the bunnies...| +08::01::2022 04:05:52|Dumb bunnies| +08::01::2022 04:05:53|Sensha wo Kakeru Shoujo| +08::01::2022 04:05:56|imagine waterlogging a tank| +08::01::2022 04:05:58|i cant remember muh tiger drive system| +08::01::2022 04:06:00|Cinematic parallels to df3| +08::01::2022 04:06:05|>tfw when hydrolock your shitbox| +08::01::2022 04:06:05|TANK STUCK. PLEASE. I BEG YOU| +08::01::2022 04:06:06|USAGI SAN CHIIMU| +08::01::2022 04:06:06|>using american tanks| +08::01::2022 04:06:07|just leave them to die| +08::01::2022 04:06:08|ZUSA! +08::01::2022 04:06:08|Who will rescue our previous bunnies?!!!!| +08::01::2022 04:06:10|i want to leave the usagis to drown and bask in the ambiance of their gargling screams| +08::01::2022 04:06:10|Just use them as meat shields| +08::01::2022 04:06:10|SAVE THE RABBITS| +08::01::2022 04:06:13|Usagis +08::01::2022 04:06:13|sasuga director san| +08::01::2022 04:06:14|rabbits are so useless| +08::01::2022 04:06:15|Bunnies in position for rape correction| +08::01::2022 04:06:16|YEah ditch em| +08::01::2022 04:06:17|just j out| +08::01::2022 04:06:17|>american engineeringh| +08::01::2022 04:06:19|DON'T LET THE BUNNIES DIE| +08::01::2022 04:06:19|useless cunny team| +08::01::2022 04:06:23|TSD +08::01::2022 04:06:24|>The entire crew of M3 Lee leaves the tank to engage enemy on foot| +08::01::2022 04:06:25|hand-twitch +08::01::2022 04:06:25|TSD +08::01::2022 04:06:26|RAMA +08::01::2022 04:06:26|lmao die| +08::01::2022 04:06:26|REMINDER: TANKS ARE NOT BOATS| +08::01::2022 04:06:26|TSD +08::01::2022 04:06:27|ILL +08::01::2022 04:06:28|NOT AGAIN| +08::01::2022 04:06:28|Time for kino| +08::01::2022 04:06:29|PTSD EPISODE NOW| +08::01::2022 04:06:29|SAY IT WITH ME| +08::01::2022 04:06:29|great fucking job azusa| +08::01::2022 04:06:29|TSD +08::01::2022 04:06:31|TSD +08::01::2022 04:06:31|NOT THE WATER| +08::01::2022 04:06:31|Its happen again| +08::01::2022 04:06:32|trauma +08::01::2022 04:06:33|usagi san chiimu| +08::01::2022 04:06:33|ILL! +08::01::2022 04:06:33|TSD +08::01::2022 04:06:34|leave me....| +08::01::2022 04:06:35|tsd +08::01::2022 04:06:36|Don't buly Azusa purple anon| +08::01::2022 04:06:36|INOOOOOOOOOOOOOOO +08::01::2022 04:06:41|Do it yourself lazy bitch| +08::01::2022 04:06:41|cunny san chiimu| +08::01::2022 04:06:42|obbers +08::01::2022 04:06:42|ute +08::01::2022 04:06:44|ino +08::01::2022 04:06:45|INO +08::01::2022 04:06:45|LIVE AND LET LIVE| +08::01::2022 04:06:45|Fly Miho fly!!!!| +08::01::2022 04:06:46|UTE +08::01::2022 04:06:47|CUTE FLUFF| +08::01::2022 04:06:47|Saori would be the first one to die| +08::01::2022 04:06:48|UTE +08::01::2022 04:06:49|zuzabros.... +08::01::2022 04:06:50|ROPE THE LOLIS| +08::01::2022 04:06:50|kino moment| +08::01::2022 04:06:52|LOOF +08::01::2022 04:06:52|UTE +08::01::2022 04:06:52|OH NO IM GONNA SAY THE K WORD| +08::01::2022 04:06:52|yes +08::01::2022 04:06:52|OOOH GOD IS THAT W-WATER!! SAVE ME SAORI-SAN!!| +08::01::2022 04:06:56|X to jump| +08::01::2022 04:06:57|I love her shiney eyes| +08::01::2022 04:06:58|BUNNIES GET THE ROPE| +08::01::2022 04:06:58|BEST FLUFF| +08::01::2022 04:06:59|CUTE HAI| +08::01::2022 04:07:00|miho gets the rope| +08::01::2022 04:07:01|Ja wer marschiert in feidensland| +08::01::2022 04:07:01|>Get the rope... | +08::01::2022 04:07:04|OP +08::01::2022 04:07:04|BEST GIRL| +08::01::2022 04:07:04|HARDCORE PARKOUR| +08::01::2022 04:07:08|>Trying to save the useless M3| +08::01::2022 04:07:09|anti-grav jumping: enabled| +08::01::2022 04:07:09|how is some rope meant to hold an m3| +08::01::2022 04:07:16|lemme just turn gravity down a little bit 'ere| +08::01::2022 04:07:17|FLOOF was the best moment in episode all downhill from here| +08::01::2022 04:07:17|MIHO IS SUICIDAL| +08::01::2022 04:07:18|USAGIS GET THE ROPE| +08::01::2022 04:07:19|sv_cheats 1| +08::01::2022 04:07:19|>double bowline hitch| +08::01::2022 04:07:19|our girl ;_;| +08::01::2022 04:07:20|really mako????| +08::01::2022 04:07:20|Long G hax| +08::01::2022 04:07:20|what is this type of neck microphone called?| +08::01::2022 04:07:21|miho bringing the rope to lynch azusa for drowning the tank| +08::01::2022 04:07:22|LOW GRAVITY: ON| +08::01::2022 04:07:22|that's some strong rope| +08::01::2022 04:07:23|cos it has wheels anon| +08::01::2022 04:07:24|Ropes and knots are pretty based | +08::01::2022 04:07:25|Save Azusa and Saki leave the rest| +08::01::2022 04:07:25|Miho is crazy| +08::01::2022 04:07:26|miho shouldve just tell them to rope themselves after jumping all the way to them and giving them the rope| +08::01::2022 04:07:26|oclip +08::01::2022 04:07:27|stopmusic: +08::01::2022 04:07:30|YOU CAN(T) DO IT| +08::01::2022 04:07:31|Little did the world know, but Miho Nishizumi would later win the olympics in the long jump| +08::01::2022 04:07:31|Teammates > Win| +08::01::2022 04:07:33|OST +08::01::2022 04:07:33|no way in hell miho can tie a better knot than floof| +08::01::2022 04:07:33|u can pull a train with a rope| +08::01::2022 04:07:33|carbon coated rope| +08::01::2022 04:07:36|miho san yappari miho san ne| +08::01::2022 04:07:39|Just give me the rope Miho| +08::01::2022 04:07:44|I'M DEFYING GRAVITY| +08::01::2022 04:07:48|Miho channeling her inner Lupin| +08::01::2022 04:07:48|wahoo! +08::01::2022 04:07:48|INOOOOOOOOOOOO +08::01::2022 04:07:48|DOUBLE JUMP| +08::01::2022 04:07:48|Miho more like Mario| +08::01::2022 04:07:49|shinji would've given up long before this point| +08::01::2022 04:07:50|JA JA MOND JA| +08::01::2022 04:07:51|NEVER SKIP LEG DAY| +08::01::2022 04:07:51|INO +08::01::2022 04:07:51|BUNNY JUMP| +08::01::2022 04:07:52|FUCK gravity| +08::01::2022 04:07:53|LY +08::01::2022 04:07:54|gravity? who gives a crap about gravity?| +08::01::2022 04:07:55|OAH +08::01::2022 04:07:56|ION +08::01::2022 04:07:56|INO +08::01::2022 04:07:56|hat!!! +08::01::2022 04:07:57|INO +08::01::2022 04:07:57|MIHO'S CREED| +08::01::2022 04:07:58|INO +08::01::2022 04:07:58|KINO KINO KINO KINO KINO KINO| +08::01::2022 04:07:58|is she wearing the german boot or the russian boot is the real question| +08::01::2022 04:07:58|BING BONG WAHOO| +08::01::2022 04:07:59|BUNNY JUMP| +08::01::2022 04:07:59|YURI PHYSICS| +08::01::2022 04:08:00|she can jump far...| +08::01::2022 04:08:00|ODOKETE +08::01::2022 04:08:00|now this is senshado| +08::01::2022 04:08:00|UGOIIIIIIIIIIIIIII +08::01::2022 04:08:00|GRAVITY NOOOOO| +08::01::2022 04:08:01|Super Mihorio Galaxy| +08::01::2022 04:08:01|ST +08::01::2022 04:08:01|STOP SAYING KINO| +08::01::2022 04:08:01|NICE JUMP| +08::01::2022 04:08:02|miho jump| +08::01::2022 04:08:02|INO +08::01::2022 04:08:03|HOW DOES SHE JUMP SO FAR| +08::01::2022 04:08:03|INO +08::01::2022 04:08:03|Olympic level longjump | +08::01::2022 04:08:03|ow +08::01::2022 04:08:03|>You will never jump as far as Miho| +08::01::2022 04:08:05|NO +08::01::2022 04:08:06|oclip +08::01::2022 04:08:06|KINO KINO KINO| +08::01::2022 04:08:06|ravitybros... +08::01::2022 04:08:07|KINO MOMENT WITH CUTE POKOE| +08::01::2022 04:08:07|EKO +08::01::2022 04:08:08|cute grasshopper| +08::01::2022 04:08:08|AHOO +08::01::2022 04:08:08|Finn boots| +08::01::2022 04:08:08|katyushas thighs!| +08::01::2022 04:08:08|IS THIS NISHIZUMI STYLE| +08::01::2022 04:08:09|ATSU +08::01::2022 04:08:09|PEKOE CUTE| +08::01::2022 04:08:10|RAVITYBROS...... +08::01::2022 04:08:10|katyushas thighs!| +08::01::2022 04:08:11|ZETTAI MANESHINAIDE NE| +08::01::2022 04:08:13|FUCK HETEROPHYSICS| +08::01::2022 04:08:13|I CRY EVERYTIME| +08::01::2022 04:08:13|INY +08::01::2022 04:08:16|ANBARE!! +08::01::2022 04:08:16|bing bing wahoooooo| +08::01::2022 04:08:17|aerodynamic Miho generates lift| +08::01::2022 04:08:17|HINZABRO +08::01::2022 04:08:18|FROM IVY OUT CONNECTOR| +08::01::2022 04:08:21|momo fappign| +08::01::2022 04:08:21|REKT | +08::01::2022 04:08:22|MOMO HATE| +08::01::2022 04:08:22|MOMO +08::01::2022 04:08:23|BASED LESGRAVITY DOMINATION| +08::01::2022 04:08:24|LYYYYYYYYYYYYYYYY +08::01::2022 04:08:24|FUCK OFF MOMO| +08::01::2022 04:08:24|GRAVITY... I CAN'T KNEEL... IM FLOATING| +08::01::2022 04:08:24|how fucking powerful are her legs look at those jumps| +08::01::2022 04:08:25|ek +08::01::2022 04:08:26|I'm legit tearing up| +08::01::2022 04:08:29|Miho Mom: SHAME| +08::01::2022 04:08:30|SIR! ;_;7| +08::01::2022 04:08:30|ohh +08::01::2022 04:08:30|SHUT THE FUCK UP MOMO| +08::01::2022 04:08:31|STFU MOMO| +08::01::2022 04:08:31|A VALKYRIE| +08::01::2022 04:08:31|>momo being shit as usual| +08::01::2022 04:08:31|ZUSA!! +08::01::2022 04:08:31|How thick are Miho thighs to be able to jump like that| +08::01::2022 04:08:31|INOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:08:32|sv_gravity 400| +08::01::2022 04:08:33|>tfw can't see danmaku | +08::01::2022 04:08:35|Saki doesn't care| +08::01::2022 04:08:36|CUTE RABBITS| +08::01::2022 04:08:39|yuri physics| +08::01::2022 04:08:39|>here neck yourselves| +08::01::2022 04:08:40|disowned once more| +08::01::2022 04:08:42|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +08::01::2022 04:08:44|Mihos thighs could strangle any man| +08::01::2022 04:08:47|My tears dry on their own ;_;| +08::01::2022 04:08:50|akoi +08::01::2022 04:08:53|WHERE DOES SHE KEEP THAT SCOPE| +08::01::2022 04:08:55|OISHO +08::01::2022 04:08:57|OISSHO +08::01::2022 04:08:58|AKI +08::01::2022 04:09:00|lol casemate-tards| +08::01::2022 04:09:01|CUNNY HEAVE| +08::01::2022 04:09:02|OIHO +08::01::2022 04:09:02|YOU ARE SO COOL COMMANDER NISHIZUMI| +08::01::2022 04:09:05|is yukari allowed to use a panzerschrek?| +08::01::2022 04:09:05|they could have just done that themselves| +08::01::2022 04:09:06|ZUSA!! +08::01::2022 04:09:06|_;7 +08::01::2022 04:09:07|Double Disowned| +08::01::2022 04:09:09|_; +08::01::2022 04:09:10|UTE +08::01::2022 04:09:11|PRECIOUS RABBITS| +08::01::2022 04:09:11|UTE +08::01::2022 04:09:12|All seeing Saki| +08::01::2022 04:09:12|TAKE MY AUTOGRAPTH MIHO| +08::01::2022 04:09:13|UTE +08::01::2022 04:09:13|STUG LIFE| +08::01::2022 04:09:14|RIKA +08::01::2022 04:09:14|INO +08::01::2022 04:09:17|_; +08::01::2022 04:09:17|aisu +08::01::2022 04:09:18|Erika ANGERY| +08::01::2022 04:09:18|her smile and optimism: gone| +08::01::2022 04:09:19|cute useless| +08::01::2022 04:09:19|itch +08::01::2022 04:09:19|dumb wani| +08::01::2022 04:09:20|Not amused| +08::01::2022 04:09:22|Now jump back.| +08::01::2022 04:09:23|eethe +08::01::2022 04:09:23|BUTT SEGGS BUTT SRGGS| +08::01::2022 04:09:24|ialate +08::01::2022 04:09:25|ERIKA SEETHE| +08::01::2022 04:09:25|DUMB WANI| +08::01::2022 04:09:26|right behind you| +08::01::2022 04:09:27|ILL +08::01::2022 04:09:28|Sexy Erika eyes | +08::01::2022 04:09:29|SHE MAD| +08::01::2022 04:09:29|OH NO| +08::01::2022 04:09:29|my wife maho| +08::01::2022 04:09:31|We must protecct rabbits at all costs| +08::01::2022 04:09:36|umpscared +08::01::2022 04:09:36|my wife maho| +08::01::2022 04:09:36|Erika is so cutye| +08::01::2022 04:09:37|first tranny comment of the day| +08::01::2022 04:09:37| +08::01::2022 04:09:38|SHE SAW| +08::01::2022 04:09:42|keep seething you dumb cute wani| +08::01::2022 04:09:43|WE GOT TOO COCKY HETZERBROS| +08::01::2022 04:09:43|ra +08::01::2022 04:09:44|Usagi Teamu real command tank| +08::01::2022 04:09:44|atul +08::01::2022 04:09:45|OH NO ANZU BROS....| +08::01::2022 04:09:48|nower +08::01::2022 04:09:49|still in play| +08::01::2022 04:09:50|Maho says trans rights!| +08::01::2022 04:09:51|FISSION MAILED| +08::01::2022 04:09:51|TL Note: "Anzu" means "SEX"| +08::01::2022 04:09:52|OH N-| +08::01::2022 04:09:56|THANKS TL| +08::01::2022 04:09:57|MAXIMUM POWER!!!!!| +08::01::2022 04:09:59|THANKS TL| +08::01::2022 04:09:59|Maho hates troons| +08::01::2022 04:10:00|thanks tl| +08::01::2022 04:10:00|Anzu with Anzu!| +08::01::2022 04:10:01|rope snap| +08::01::2022 04:10:01|You're gonna flood it...| +08::01::2022 04:10:08|>american engineering| +08::01::2022 04:10:11|IPPEN +08::01::2022 04:10:12|The only trans i support is trans siberian railway| +08::01::2022 04:10:12|I'm going to Anzu Anzu| +08::01::2022 04:10:15|WE DID IT AZUZABROS| +08::01::2022 04:10:15|My aunt's name is anzu this shit is dumb| +08::01::2022 04:10:19|glorious detroit steel| +08::01::2022 04:10:20|AMERICAN ENGINEERING USA USA USA USA| +08::01::2022 04:10:25|theres only one thing bunnies are good for | +08::01::2022 04:10:25|I WILL FUCK YOUR AUNT| +08::01::2022 04:10:25|>hydrolocked engine justwerks American engineering everyone| +08::01::2022 04:10:26|is your aunt flat?| +08::01::2022 04:10:26|uohh anzu's nephew| +08::01::2022 04:10:28|ooah +08::01::2022 04:10:32|Best science in the world| +08::01::2022 04:10:33|Maho so cool!| +08::01::2022 04:10:33|>american engineering almost cost them the match| +08::01::2022 04:10:33|grorious detroit steel folded 3 times| +08::01::2022 04:10:35|I want to fuck anons aunt| +08::01::2022 04:10:35|shit aim| +08::01::2022 04:10:36|Maho is deaf| +08::01::2022 04:10:40|I'm becoming deaf| +08::01::2022 04:10:43|Erika > Maho| +08::01::2022 04:10:49|Mahochads assemble| +08::01::2022 04:10:49|maho doesn't care| +08::01::2022 04:10:51|The bridge that leads to Seize| +08::01::2022 04:10:51|EIMANGEN +08::01::2022 04:10:52|yeah that bridge looks really stable| +08::01::2022 04:10:52|INO +08::01::2022 04:10:52|BRIDGE OVER THE RIVER KAWAII| +08::01::2022 04:10:55|ill +08::01::2022 04:10:55|IGGER +08::01::2022 04:10:55|team leopon on their way to ruin priceless architectural heritage| +08::01::2022 04:10:55|HEIL MAHO| +08::01::2022 04:10:56|reimangen +08::01::2022 04:10:57|erika is shit when maho is around| +08::01::2022 04:10:58|just blow the bridge| +08::01::2022 04:10:59|i love the sound of a cannon firing| +08::01::2022 04:11:01|so that's the bridge Martini took| +08::01::2022 04:11:01|what a nice bridge| +08::01::2022 04:11:01|Hit the NO2| +08::01::2022 04:11:02|Maho > Erika| +08::01::2022 04:11:03|*Maho > Erika. Please dont post shit opinions| +08::01::2022 04:11:03|BEST TEAM| +08::01::2022 04:11:04|-HAYAI +08::01::2022 04:11:06|o +08::01::2022 04:11:06|SICK BURNOOUTS| +08::01::2022 04:11:06|EGANE +08::01::2022 04:11:07|ONGUE +08::01::2022 04:11:07|ERIKA A CUTE| +08::01::2022 04:11:07|PEEEEEEEEEEEEEEEEEEEEEEEED +08::01::2022 04:11:08|UMMMMMMMMMMMMMMMMMMMM +08::01::2022 04:11:08|h... +08::01::2022 04:11:09|AYAI +08::01::2022 04:11:10|stable bridge| +08::01::2022 04:11:11|O +08::01::2022 04:11:12|PEEEEEEEEEEEEDDDDDDD +08::01::2022 04:11:12|LIVE AND LEARN| +08::01::2022 04:11:13|DO YOU WANT TOTAL WAR| +08::01::2022 04:11:13|>time for the water meth and n2o| +08::01::2022 04:11:14|ol +08::01::2022 04:11:14|ruh +08::01::2022 04:11:14|ow... +08::01::2022 04:11:15|HIT THE BRIDGE, DROP THEIR FLAG| +08::01::2022 04:11:16|NIGHT OF FIRE| +08::01::2022 04:11:16|ased +08::01::2022 04:11:17|ased +08::01::2022 04:11:17|ischief +08::01::2022 04:11:17|VTEC JUST KICKED IN YO| +08::01::2022 04:11:17|FLOOR IT| +08::01::2022 04:11:17|GOD THAT'S FAT| +08::01::2022 04:11:18|i want leopon to do that but on my dick| +08::01::2022 04:11:18|god that porsche sounds so SEXY| +08::01::2022 04:11:19|hybrid power like a prius| +08::01::2022 04:11:20|???? +08::01::2022 04:11:20|destroying local infrastrucutre LIKE A BOSS| +08::01::2022 04:11:21|SEETHING ERIKA| +08::01::2022 04:11:22|GuP do love their bridges | +08::01::2022 04:11:24|TOTALER KRIEG| +08::01::2022 04:11:24|GAS GAS GAS| +08::01::2022 04:11:25|That's not legal, right?| +08::01::2022 04:11:26|Bridge on the River Kwai| +08::01::2022 04:11:27|THINK OF THE SPONSORS| +08::01::2022 04:11:33|GAS GAS GAs| +08::01::2022 04:11:34|DUMB WANI| +08::01::2022 04:11:35|River Kawaii| +08::01::2022 04:11:36|that was a UNICEF heritage bridge| +08::01::2022 04:11:39|River Kawaii| +08::01::2022 04:11:41|Leopon... the advertisers...| +08::01::2022 04:11:41|ONVOYYYYYYYY +08::01::2022 04:11:41|Miho lives rent-free in Erika's head| +08::01::2022 04:11:41|PROPERTY DAMAGE| +08::01::2022 04:11:48|Fucking up local roads with tracks... priceless| +08::01::2022 04:11:49|fuck the city| +08::01::2022 04:11:50|More Kino incoming| +08::01::2022 04:11:50|Hope you like urban warfare.| +08::01::2022 04:11:50|in ribbon warrior they legit set fire to a town| +08::01::2022 04:11:50|Trippy CG| +08::01::2022 04:11:54|soon bros are thicc boy is coming| +08::01::2022 04:11:54|This literally looks like some fucking wot map| +08::01::2022 04:11:54|maus soon bros| +08::01::2022 04:11:55|MAUSA DA!| +08::01::2022 04:11:58|>the panzer 3 that erika switches to| +08::01::2022 04:11:58|erd +08::01::2022 04:11:59|the maus is coming bros| +08::01::2022 04:12:03|FIRST EPISODE CALLBACK| +08::01::2022 04:12:03|HERE COMES A SPECIAL BOY| +08::01::2022 04:12:04|Generic Soviet district| +08::01::2022 04:12:05|INITIAL P| +08::01::2022 04:12:05|UTE! +08::01::2022 04:12:06|why do I hear boss music bros| +08::01::2022 04:12:07|cute panzer | +08::01::2022 04:12:07|UCHS +08::01::2022 04:12:08|PANZER III......| +08::01::2022 04:12:09|this is just like one of my japanese animes| +08::01::2022 04:12:10|Saori is a Panzer whore now| +08::01::2022 04:12:10|German commiblocks| +08::01::2022 04:12:10|Maus soon| +08::01::2022 04:12:15|PANZER III A CUTE| +08::01::2022 04:12:15|master baiter reverse| +08::01::2022 04:12:16|>falling for the bait| +08::01::2022 04:12:17|LUCHSBROS WHERE WE AT| +08::01::2022 04:12:18|PANZER WHORE!| +08::01::2022 04:12:19|ねずみ inbound| +08::01::2022 04:12:22|It's orgre for Oarai now| +08::01::2022 04:12:24|FX +08::01::2022 04:12:24|>is this bait?| +08::01::2022 04:12:24|MAUSU MAUSU PASUKON MAUSU| +08::01::2022 04:12:25|GAS GAS GAS| +08::01::2022 04:12:26|abaited +08::01::2022 04:12:27|OB STURM ODER SCHNEIT| +08::01::2022 04:12:28|>hook line and sinker| +08::01::2022 04:12:30|sex with commie blocks| +08::01::2022 04:12:30|Oarai is gonna lose in a sec| +08::01::2022 04:12:33|Bass pro shop doko| +08::01::2022 04:12:34|NTER +08::01::2022 04:12:34|oraibros... +08::01::2022 04:12:37|NTER +08::01::2022 04:12:37|NTER +08::01::2022 04:12:37|THE BAIT IS TOO POWERFUL| +08::01::2022 04:12:38|aused +08::01::2022 04:12:39|DOBUNEZUMI MITAI NI| +08::01::2022 04:12:39|NTER +08::01::2022 04:12:40|NTER +08::01::2022 04:12:40|Mickey Maus| +08::01::2022 04:12:40|comfy armored warfare asmr| +08::01::2022 04:12:41|we got too cocky...| +08::01::2022 04:12:41|>literally everyone chasing one tank| +08::01::2022 04:12:42|Maus-san | +08::01::2022 04:12:42|NTER +08::01::2022 04:12:42|RUPPSCHTALL +08::01::2022 04:12:43|OOOOOH SHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIT| +08::01::2022 04:12:43|The Maus That Roared| +08::01::2022 04:12:43|AUS +08::01::2022 04:12:43|CRYPTIC METAPHOR!| +08::01::2022 04:12:44|NTER +08::01::2022 04:12:44|NTER +08::01::2022 04:12:45|it's the gif| +08::01::2022 04:12:45|Kino moment| +08::01::2022 04:12:45|NTER +08::01::2022 04:12:45|uh oh| +08::01::2022 04:12:45|HNONONONONO +08::01::2022 04:12:46|A BIG GUY| +08::01::2022 04:12:46|OMMIEBLOCKS +08::01::2022 04:12:46|NTER +08::01::2022 04:12:46|OH NO| +08::01::2022 04:12:46|SHE'S A BIG TANK| +08::01::2022 04:12:47|oh oh| +08::01::2022 04:12:47|NTER +08::01::2022 04:12:48|AAAAAAAAAAAAAAA +08::01::2022 04:12:48|ausu +08::01::2022 04:12:48|NTER +08::01::2022 04:12:48|EL GRANDE TANQUE| +08::01::2022 04:12:49|A WALL?| +08::01::2022 04:12:49|NTER +08::01::2022 04:12:49|DAMN BOI HE THICC| +08::01::2022 04:12:49|OH NO| +08::01::2022 04:12:50|ANI +08::01::2022 04:12:50|for you| +08::01::2022 04:12:51|OSHI +08::01::2022 04:12:51|you're a big tank| +08::01::2022 04:12:52|Ooari bros ohnononononono| +08::01::2022 04:12:52|UU +08::01::2022 04:12:52|ausumausu +08::01::2022 04:12:52|OGGED +08::01::2022 04:12:52|NTER +08::01::2022 04:12:53|U +08::01::2022 04:12:53|NTER +08::01::2022 04:12:53|STOP RUNNIGN COWARD| +08::01::2022 04:12:54|The Shagohad| +08::01::2022 04:12:54|IT AIN'T DISNEY WITHOUT MICKEY| +08::01::2022 04:12:54|o +08::01::2022 04:12:55|ig +08::01::2022 04:12:55|LE GROS TANK APPROCHE| +08::01::2022 04:12:55|DO YOU FEEL IN CHARGE| +08::01::2022 04:12:55|ONK +08::01::2022 04:12:55|AUS +08::01::2022 04:12:55|Big ENTER| +08::01::2022 04:12:56|AUKO +08::01::2022 04:12:56|ENTER MOUSE| +08::01::2022 04:12:57|OARAIBROS WE GOT TOO COCKY| +08::01::2022 04:12:57|EL RATON| +08::01::2022 04:12:58|My waifu finally apopears| +08::01::2022 04:12:59|OGGED +08::01::2022 04:13:00|AUS +08::01::2022 04:13:00|DER WUNDERWAFFE| +08::01::2022 04:13:00|NTER +08::01::2022 04:13:01|HICC +08::01::2022 04:13:01|IEG +08::01::2022 04:13:01|UTENTAG +08::01::2022 04:13:02|SUE GOY| +08::01::2022 04:13:02|el tanke stretchy| +08::01::2022 04:13:02|NTER +08::01::2022 04:13:02|WE GOT TOO COCKY| +08::01::2022 04:13:03|X GONNA GIVE IT TO YOU| +08::01::2022 04:13:04|rat when?| +08::01::2022 04:13:04|THICC TONK| +08::01::2022 04:13:05|AOOS +08::01::2022 04:13:06|OMG WTF BBQ| +08::01::2022 04:13:06|You Fucked Up| +08::01::2022 04:13:06|jobs +08::01::2022 04:13:12|aus... +08::01::2022 04:13:13|HICK +08::01::2022 04:13:15|heckin chonker| +08::01::2022 04:13:16|Oh look, target practice for the US Army Air Corps| +08::01::2022 04:13:16|RUSSIAN LOLI| +08::01::2022 04:13:18|>when they see my maus| +08::01::2022 04:13:18|Yukari is absolutely sopping| +08::01::2022 04:13:18|UTE +08::01::2022 04:13:19|>NOT CHARGING| +08::01::2022 04:13:20|I love how Yukari implies there might be more out there| +08::01::2022 04:13:20|ausu +08::01::2022 04:13:20|HICCC +08::01::2022 04:13:23|MY EARS| +08::01::2022 04:13:24|ARARETA +08::01::2022 04:13:25|its time| +08::01::2022 04:13:26|HAHA I GET IT ITS BIG BUT ITS NAMED MOUSE| +08::01::2022 04:13:28|arareta +08::01::2022 04:13:28|MISSED +08::01::2022 04:13:29|If I took off your turret, would you die?| +08::01::2022 04:13:30|>gets btfo by 2 shermans| +08::01::2022 04:13:31|MIKI MAUS?| +08::01::2022 04:13:31|subs +08::01::2022 04:13:32|YA RA RE TA| +08::01::2022 04:13:32|A~DA~RE~TTA! +08::01::2022 04:13:33|>german humor| +08::01::2022 04:13:33|>shot so powerful it causes video artifacts| +08::01::2022 04:13:35|In awe at the size of this lad| +08::01::2022 04:13:36|missed +08::01::2022 04:13:38|ip +08::01::2022 04:13:38|EW +08::01::2022 04:13:38|mausu mausu pasokon mausu| +08::01::2022 04:13:39|GOOD THING THE GIRLS ARE CARBON COATED| +08::01::2022 04:13:39|DAMN BRAT| +08::01::2022 04:13:39|ew +08::01::2022 04:13:39|>don't anyone shoot the tracks or anything| +08::01::2022 04:13:40|TFO +08::01::2022 04:13:40|Welcome to the Mickey Maus Funhaus| +08::01::2022 04:13:40|uge +08::01::2022 04:13:41|>they all live| +08::01::2022 04:13:41|ITS OVER| +08::01::2022 04:13:42|BIG COCK| +08::01::2022 04:13:42|NZU +08::01::2022 04:13:42|SODOKO DEAD| +08::01::2022 04:13:42|SODOKO NO| +08::01::2022 04:13:43| +08::01::2022 04:13:44|EAD +08::01::2022 04:13:45|F Sodoko| +08::01::2022 04:13:45|OGGED +08::01::2022 04:13:47|>huge and cocky| +08::01::2022 04:13:47|SODOKO IS DEAD| +08::01::2022 04:13:48|EAD +08::01::2022 04:13:48|EAD +08::01::2022 04:13:48|IF I PULL THAT OFF WILL YOU DIE| +08::01::2022 04:13:48|EKT +08::01::2022 04:13:49|ANZERLIED +08::01::2022 04:13:49|BIG TANK| +08::01::2022 04:13:49| +08::01::2022 04:13:50|O S T| +08::01::2022 04:13:51|YOU DUMB| +08::01::2022 04:13:51|OD +08::01::2022 04:13:51|SODOKO IS FUCKING DEAD| +08::01::2022 04:13:52|OCK +08::01::2022 04:13:52|YA RA RE TA| +08::01::2022 04:13:53|CAN'T BEAT THE COCK| +08::01::2022 04:13:53|O S T| +08::01::2022 04:13:53|average sodoko mogging| +08::01::2022 04:13:54|Absolute Unit | +08::01::2022 04:13:54|M3 put into its plcxae| +08::01::2022 04:13:54|SODOKO STATUS: SODOMIZED| +08::01::2022 04:13:55|GNORE +08::01::2022 04:13:55|OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +08::01::2022 04:13:55|ST +08::01::2022 04:13:57|>that's what they all say to oji-san| +08::01::2022 04:13:57|Do not taunt happy fun tank| +08::01::2022 04:13:57|HREKY +08::01::2022 04:13:59|you're a big tank| +08::01::2022 04:13:59|20KPH LADS| +08::01::2022 04:14:01|CLAP ALONG WITH THE MUSIC LADS| +08::01::2022 04:14:01|Goodnight sweet SoGoPa| +08::01::2022 04:14:03|! Banger alert ! Banger alert !| +08::01::2022 04:14:03|OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +08::01::2022 04:14:04|ANZERLIED +08::01::2022 04:14:04|OB'S STÜRM ODER SCHNEIT| +08::01::2022 04:14:04|OBS STURMT ODER SCHNEIT| +08::01::2022 04:14:05|DER TAG GLUHEND HEIST| +08::01::2022 04:14:05|O S T| +08::01::2022 04:14:05|IP +08::01::2022 04:14:07|that's against school regulations| +08::01::2022 04:14:07|Can't beat the cock| +08::01::2022 04:14:07|OB DIE SONNE UNS LACHT| +08::01::2022 04:14:08|OBS STÜRMT ODER SCHNEIT| +08::01::2022 04:14:08|CLAP CLAP CLAP CLAP| +08::01::2022 04:14:10|OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +08::01::2022 04:14:11|ODER SINN| +08::01::2022 04:14:11|ING +08::01::2022 04:14:12|ANZERLIED +08::01::2022 04:14:13|PING PING PING| +08::01::2022 04:14:13|Maus too heavy for the stream| +08::01::2022 04:14:14|germ*ns +08::01::2022 04:14:14|MY FUCKING EARS ARE RINGING| +08::01::2022 04:14:15|AUTER +08::01::2022 04:14:16|OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +08::01::2022 04:14:17|OUDER +08::01::2022 04:14:17|OUDER +08::01::2022 04:14:18|ODER EISKALT DIE NACHT| +08::01::2022 04:14:18|Best marching song\| +08::01::2022 04:14:19|ODER EISKALT| +08::01::2022 04:14:20|I'M LITTERALLY CLAPPING RIGHT NOW| +08::01::2022 04:14:21|WE CAN GO LOUDER| +08::01::2022 04:14:22|OUDER +08::01::2022 04:14:22|KUROMORIMINE UBER ALLES| +08::01::2022 04:14:22|ING +08::01::2022 04:14:23|OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT!!!!!| +08::01::2022 04:14:23|DOCH FORH| +08::01::2022 04:14:25|BESTAUBT SIND DIE GESICHTER| +08::01::2022 04:14:25|DOCH FROH IST UNSER SINN| +08::01::2022 04:14:28|revenge for east germany| +08::01::2022 04:14:28|ES RAST UNSER PANZER IM STURMWIND DAHIN| +08::01::2022 04:14:29| +08::01::2022 04:14:29|HAT? +08::01::2022 04:14:29|SIEG HEIL | +08::01::2022 04:14:29|HREKT +08::01::2022 04:14:30|NORE +08::01::2022 04:14:30|OOOOOOOOOOOOOOOOO +08::01::2022 04:14:30|F ::his::| +08::01::2022 04:14:31|TUGBROS...................... +08::01::2022 04:14:31|ES BRAUST UNSER PANZER| +08::01::2022 04:14:32|DOCH FROH| +08::01::2022 04:14:33|ES BRAUST UNSER PANZER IM STURMWIND DAHIN| +08::01::2022 04:14:33|NOREE +08::01::2022 04:14:38|UOOOH I'M CLAPPING| +08::01::2022 04:14:38|UNSER SINN!| +08::01::2022 04:14:39|wtf nooo| +08::01::2022 04:14:39|1488 OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT 1488| +08::01::2022 04:14:39|TUGBROS.... +08::01::2022 04:14:39|OUDER! +08::01::2022 04:14:40|TOMP +08::01::2022 04:14:40|ES BRAUST UNSER PANZER| +08::01::2022 04:14:40|CLAP CLAP CLAP CLAP| +08::01::2022 04:14:41|:: +08::01::2022 04:14:42|8888888888888888888 +08::01::2022 04:14:46|they stomping| +08::01::2022 04:14:46|INOKINOKINO +08::01::2022 04:14:47| 8 8 8 8 8 8 8 | +08::01::2022 04:14:48|herBONER +08::01::2022 04:14:48|8 8 8 8 8 8| +08::01::2022 04:14:49|STOMP STOMP STOMP STOMP STOMP STOMP STOMP| +08::01::2022 04:14:49|DER TAG GLUHEN HEISS| +08::01::2022 04:14:49|MEIN FUHRER!| +08::01::2022 04:14:50|STOMP STOMP STOMP| +08::01::2022 04:14:50|CLAP CLAP CLAP CLAP| +08::01::2022 04:14:52|KINO 1488| +08::01::2022 04:14:54|SIEG HEIL o:: o:: o::| +08::01::2022 04:14:56|EVERYONE STOMP| +08::01::2022 04:14:57|why not just make that shit your flag tank?| +08::01::2022 04:14:58|JA UNSER SINN| +08::01::2022 04:14:59|MY FUHRER I CAN WALK!| +08::01::2022 04:14:59|AWAII +08::01::2022 04:15:00|march march march march| +08::01::2022 04:15:01|\o \o \o| +08::01::2022 04:15:02|:: +08::01::2022 04:15:03|:: +08::01::2022 04:15:03|These Tiger IIs are moving much too swiftly| +08::01::2022 04:15:04|BESTAUBT SIND DIE GESICHTER DOCH FROH IST UNSER SINN| +08::01::2022 04:15:04|UN MEIN GATT| +08::01::2022 04:15:05|:: +08::01::2022 04:15:06|ING! +08::01::2022 04:15:06|ES BRASUST UNSER PANZER IM STURMWIND DAHIN| +08::01::2022 04:15:08|iyari +08::01::2022 04:15:08|EGELEIN +08::01::2022 04:15:10|Goosesteping noises| +08::01::2022 04:15:10|o:: o:: o:: o::| +08::01::2022 04:15:11|tomp +08::01::2022 04:15:12|You can say much about the Germans but they made some bangers\| +08::01::2022 04:15:12|wani smug| +08::01::2022 04:15:14|SIEG HEIL| +08::01::2022 04:15:17|\o:: whoo| +08::01::2022 04:15:18|FINAL EPISODE| +08::01::2022 04:15:18|AJESTIC +08::01::2022 04:15:18|IMI +08::01::2022 04:15:21|probably because if the maus breaks down, you lose the flagtank| +08::01::2022 04:15:21|smug erika| +08::01::2022 04:15:22|My wife Maho is so handsome| +08::01::2022 04:15:25|just make every tank a maus| +08::01::2022 04:15:25|DEATH HAIKU| +08::01::2022 04:15:25|LAST EPISODE| +08::01::2022 04:15:26|::his:: ;_;7| +08::01::2022 04:15:28|ITS JERK| +08::01::2022 04:15:32|AT +08::01::2022 04:15:32|mouse +08::01::2022 04:15:34|poor helmets| +08::01::2022 04:15:35|why is the mouse so big?| +08::01::2022 04:15:36|P1000 WHEN| +08::01::2022 04:15:38|Thats the joke| +08::01::2022 04:15:38|POV: You Got Uptiered| +08::01::2022 04:15:39|Maybe the millions dead were worth it for these bangers huh| +08::01::2022 04:15:41|RAT +08::01::2022 04:15:42|rat +08::01::2022 04:15:43|german humour| +08::01::2022 04:15:43|test1 +est2| +08::01::2022 04:15:45|sasuga mausu| +08::01::2022 04:15:47|???????????????????????????????????????????????????????????????? +08::01::2022 04:15:48|you failed| +08::01::2022 04:15:49|gey +08::01::2022 04:15:49|saying time| +08::01::2022 04:15:51|gey +08::01::2022 04:15:51|slag +08::01::2022 04:15:51|Orange Pekora| +08::01::2022 04:15:52|?????????????????????????????????????????????????????????????????????????????? +08::01::2022 04:15:54|SHUT THE FUCK UP DARJEELING| +08::01::2022 04:15:54|orange peko rrat| +08::01::2022 04:15:55|>not having a tank that can burrow underground as your flag tank| +08::01::2022 04:15:55|?????????????? +08::01::2022 04:15:56|????????????? +08::01::2022 04:15:56|ogey rrat| +08::01::2022 04:15:56|????????????????????????????????????????????????????????????????????????????????????????????????? +08::01::2022 04:15:58|Have you heard this saying?| +08::01::2022 04:15:58|But do you know THIS Proverb?!| +08::01::2022 04:15:59|SHUT UP SLAG| +08::01::2022 04:16:00|no rrat bros plz stop| +08::01::2022 04:16:01|gey +08::01::2022 04:16:02|kay +08::01::2022 04:16:02|vniggers +08::01::2022 04:16:03|basically: GUTS| +08::01::2022 04:16:03|???????????????? +08::01::2022 04:16:03|WHAT THE FUCK WAS THAT YOU SLUG| +08::01::2022 04:16:03|?????????????? +08::01::2022 04:16:03|????????????????????????????????????????????? +08::01::2022 04:16:04|its like this saying| +08::01::2022 04:16:05|Maus is so sexy...| +08::01::2022 04:16:06|RAT +08::01::2022 04:16:08|rat +08::01::2022 04:16:09|cute peashooters| +08::01::2022 04:16:10|Fat lot of good that did.| +08::01::2022 04:16:10|::VT:::: OUT| +08::01::2022 04:16:11|>m3 actually hits something| +08::01::2022 04:16:11|wwwwwwwww +08::01::2022 04:16:11|I thought the Danmaku had slowed down. It's not working for some?| +08::01::2022 04:16:19|marine > pekora| +08::01::2022 04:16:21|>mausu cant pen concrete| +08::01::2022 04:16:21|..BAKANA +08::01::2022 04:16:25|SO sexy...| +08::01::2022 04:16:25|THE SHELLS! THEY DO NOTHING| +08::01::2022 04:16:25|innocent building? YEAH DESTROY IT| +08::01::2022 04:16:26|IT BUT A SCRATCH| +08::01::2022 04:16:31|sensha chuuba when?| +08::01::2022 04:16:34|in awe at the size of this lad| +08::01::2022 04:16:35|MOMO STFU | +08::01::2022 04:16:38|I SUPPOSE IF THEY WERE LUCKY THEY COULD GIVE US A HEADACHE| +08::01::2022 04:16:39|VTUBER +08::01::2022 04:16:40|tfo +08::01::2022 04:16:41|hohohoh- +08::01::2022 04:16:41|oh great, they're dead| +08::01::2022 04:16:42|ej +08::01::2022 04:16:43|ORK +08::01::2022 04:16:44|EKt +08::01::2022 04:16:45|ABSOLUTE UNIT| +08::01::2022 04:16:45|ek +08::01::2022 04:16:46|el +08::01::2022 04:16:46|wwwwwww +08::01::2022 04:16:47|UCHBROS... +08::01::2022 04:16:47|TFO +08::01::2022 04:16:47|JUST TRACK IT RETARDS| +08::01::2022 04:16:48|Hahahahaha.... DED| +08::01::2022 04:16:49|THATS A THICC BOY| +08::01::2022 04:16:49|we got too cocky | +08::01::2022 04:16:49|ek +08::01::2022 04:16:50|i'd watch tank chuuba| +08::01::2022 04:16:50|ek +08::01::2022 04:16:51|wned +08::01::2022 04:16:52|PANZER 3 REKT| +08::01::2022 04:16:56|I want to penetrate her armor with my firepower| +08::01::2022 04:16:57|A +08::01::2022 04:17:04|EKT +08::01::2022 04:17:04|i kid you not, if you look real close at the maus's camo paint, you can see an among us, no clown| +08::01::2022 04:17:04|SHOT TRAP IT| +08::01::2022 04:17:05|DEA! +08::01::2022 04:17:05| +08::01::2022 04:17:05|You can't track the Maus you goober| +08::01::2022 04:17:08|oko! +08::01::2022 04:17:08|LMAO 2TANK| +08::01::2022 04:17:08|GREAT IDEA| +08::01::2022 04:17:09|wait, what did you say| +08::01::2022 04:17:10| +08::01::2022 04:17:10|boko manual| +08::01::2022 04:17:10|inspiration strikes| +08::01::2022 04:17:10|>impenatrable armour BRAVO RELIC| +08::01::2022 04:17:10|GORILLA WARFARE| +08::01::2022 04:17:11| +08::01::2022 04:17:12|ogus +08::01::2022 04:17:14|saori calling you ookisugi| +08::01::2022 04:17:15|-lewd +08::01::2022 04:17:15|Monmo is getting too cocky there| +08::01::2022 04:17:15|uh? +08::01::2022 04:17:15|AAAMOGUS>??????? +08::01::2022 04:17:16|ITA +08::01::2022 04:17:17|I JUST GOT AN IDEA| +08::01::2022 04:17:19|Can't kill the rrat, ogey| +08::01::2022 04:17:20|its like this one boko movie| +08::01::2022 04:17:20|>thats it .... lets put a tank on that tank| +08::01::2022 04:17:20|Just think what would Boko do| +08::01::2022 04:17:20|>pretty crazy| +08::01::2022 04:17:22|NORIKO +08::01::2022 04:17:24|i fucking love hinterhalt tarnung| +08::01::2022 04:17:28|no room for error| +08::01::2022 04:17:33|listen closely | +08::01::2022 04:17:37|rror +08::01::2022 04:17:37|NANDEMO SURU YO| +08::01::2022 04:17:38|TL Note: "Anzu" means "SEX"| +08::01::2022 04:17:38|WELL WE TRIED OORARI BROS BUT THERE NO WIN THIS | +08::01::2022 04:17:39|Tuvok mode engaged| +08::01::2022 04:17:39|Blocks your ptah| +08::01::2022 04:17:39|>they lose to an ambush| +08::01::2022 04:17:42|THANKS TL| +08::01::2022 04:17:43|RAMMING SPEED| +08::01::2022 04:17:45|CODEX ASTARTES CALLS THIS MANOEUVER STEEL RAIN| +08::01::2022 04:17:45|THANKS TL| +08::01::2022 04:17:47|oyjak.party +08::01::2022 04:17:49|LLAH +08::01::2022 04:17:50|the lads| +08::01::2022 04:17:50|Peak realism incoming| +08::01::2022 04:17:51|OTSUGEKI +08::01::2022 04:17:52|X with Anzu, is X: a) tea b) SEX c) panzerfahren| +08::01::2022 04:17:55|OTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +08::01::2022 04:17:55|em +08::01::2022 04:17:57|OTSUGEKIIIIIII +08::01::2022 04:17:59|YOU OGEY'D YOUR LAST RRAT!| +08::01::2022 04:17:59|thank God for carbon| +08::01::2022 04:18:00|I would like the see the Maus team just a bit| +08::01::2022 04:18:00|okkun +08::01::2022 04:18:01| +08::01::2022 04:18:02|WE'RE THE EMPEROR'S FURY| +08::01::2022 04:18:02|OTSUGEKI +08::01::2022 04:18:04|tank mounting| +08::01::2022 04:18:05|OW +08::01::2022 04:18:05|PEED +08::01::2022 04:18:06|NSHALLAH +08::01::2022 04:18:06|OW +08::01::2022 04:18:06|Wouldn't now be the best time for KMM to show up? Where the hell are they | +08::01::2022 04:18:08|here we go| +08::01::2022 04:18:08|ead +08::01::2022 04:18:08|OW +08::01::2022 04:18:08|ONK +08::01::2022 04:18:09|OW +08::01::2022 04:18:10|AO +08::01::2022 04:18:10|OW +08::01::2022 04:18:11|ow! +08::01::2022 04:18:12|BOOM* +08::01::2022 04:18:12|ow +08::01::2022 04:18:13|ogic +08::01::2022 04:18:13|ow +08::01::2022 04:18:13|EPIC STRATS| +08::01::2022 04:18:13|TENNOHEIKA BANZAI!!!!!| +08::01::2022 04:18:13|dead on impact| +08::01::2022 04:18:15|OOOW +08::01::2022 04:18:16|ausa-chan... +08::01::2022 04:18:16|MPLYING +08::01::2022 04:18:17|ALLAHU AKBAR| +08::01::2022 04:18:18|CARBON COATED HETZER| +08::01::2022 04:18:18|>WH40K memems| +08::01::2022 04:18:19|pew pew| +08::01::2022 04:18:20|it's over| +08::01::2022 04:18:20|How sturdy are the 300m blocks these ships are made of?| +08::01::2022 04:18:20|SIEG THIS| +08::01::2022 04:18:20|CARBON TOO STRONG| +08::01::2022 04:18:21|By allah those girls harbor such iolence| +08::01::2022 04:18:21|Allahu akbar| +08::01::2022 04:18:21|TE +08::01::2022 04:18:22|pew pew pew pew| +08::01::2022 04:18:22|maus commander <3| +08::01::2022 04:18:23|oh no no no| +08::01::2022 04:18:23|LLLLLLLLLLLLAAAAAAAAAAAAAAAAAAAAAH +08::01::2022 04:18:23|TENNO HEKKA BANZAIIIIIII| +08::01::2022 04:18:23|Kono bangumi wa goran no suponsaa no teikyou de okurishimasu| +08::01::2022 04:18:29|APE +08::01::2022 04:18:30|ORRE +08::01::2022 04:18:31|no way that turret can traverse that fast| +08::01::2022 04:18:33|UTS +08::01::2022 04:18:34|OD +08::01::2022 04:18:35|IGEROO +08::01::2022 04:18:36|MAU MAU| +08::01::2022 04:18:36|??????????????????????????? +08::01::2022 04:18:37|APE +08::01::2022 04:18:38|nug... +08::01::2022 04:18:38|PANZER STACKING| +08::01::2022 04:18:41|what u doing man get off| +08::01::2022 04:18:41|was it rape?| +08::01::2022 04:18:42|OUNTED +08::01::2022 04:18:42|00iq +08::01::2022 04:18:43|PANER SEX| +08::01::2022 04:18:44|Don't wanna| +08::01::2022 04:18:45|DON'T WANNA| +08::01::2022 04:18:45|how did it get up the hetzter?| +08::01::2022 04:18:46|UTS +08::01::2022 04:18:48|>get off my roof| +08::01::2022 04:18:48|*snuggles on your turret*| +08::01::2022 04:18:49|ute +08::01::2022 04:18:49|PANZER SEX| +08::01::2022 04:18:51|TFO +08::01::2022 04:18:51|ECHNICALLY +08::01::2022 04:18:51|this is how germany lost ww2| +08::01::2022 04:18:52|No way| +08::01::2022 04:18:53|peak realism| +08::01::2022 04:18:54|>Get decapitated| +08::01::2022 04:18:54|TFO +08::01::2022 04:18:57|TANK ON TANK ACTION| +08::01::2022 04:18:57|yadesu +08::01::2022 04:18:58|CARBON COATING| +08::01::2022 04:19:00|oooooooooooooot +08::01::2022 04:19:00|UTS +08::01::2022 04:19:00|O +08::01::2022 04:19:00|imagine not knowing that| +08::01::2022 04:19:01|get the fuck off| +08::01::2022 04:19:02|CARBON COATING| +08::01::2022 04:19:02|CARBON COATING| +08::01::2022 04:19:03|AATTTSU +08::01::2022 04:19:04|CARBON COATING| +08::01::2022 04:19:04|ARUBON +08::01::2022 04:19:05|CARBON COATING| +08::01::2022 04:19:05|is this how baby tanks are made?| +08::01::2022 04:19:06|CARBON COATING FAIL| +08::01::2022 04:19:06|ARBON +08::01::2022 04:19:06|get off me bro | +08::01::2022 04:19:06|why doesnt the maus just reverse| +08::01::2022 04:19:08|ARBON +08::01::2022 04:19:09|all according to keikaku| +08::01::2022 04:19:09|how tf is this even possible wtf| +08::01::2022 04:19:09|tank drift tank drift| +08::01::2022 04:19:11|GET OUT OF MY YARD| +08::01::2022 04:19:11|did they just hop?| +08::01::2022 04:19:12|TARGET THE SLIT| +08::01::2022 04:19:13|NOT THE CARBON COATING| +08::01::2022 04:19:15|muh carbon| +08::01::2022 04:19:16|nzu +08::01::2022 04:19:16|HAND OF DESTINY| +08::01::2022 04:19:16|UTS +08::01::2022 04:19:17|KEIKAKU DOORI DA| +08::01::2022 04:19:17|TE +08::01::2022 04:19:20|RIP Mauko| +08::01::2022 04:19:20|UTS +08::01::2022 04:19:20|UTS +08::01::2022 04:19:20|You're pretty good...| +08::01::2022 04:19:21|UTS +08::01::2022 04:19:21|UTS +08::01::2022 04:19:21|AEKO +08::01::2022 04:19:22|PATS +08::01::2022 04:19:22|WHAT ARE YOU DOING STEP TANK| +08::01::2022 04:19:22|SHUT UP MOMO| +08::01::2022 04:19:23|ASCA +08::01::2022 04:19:24|UTS +08::01::2022 04:19:25|F Maus| +08::01::2022 04:19:25|88888888888888888888 +08::01::2022 04:19:26|USHIRO NO SURITO| +08::01::2022 04:19:26|88888888888888888 +08::01::2022 04:19:26|Tanks procreating colorized| +08::01::2022 04:19:27|actually pushing| +08::01::2022 04:19:27|ez | +08::01::2022 04:19:28|I want to target the slit on Miho's rear| +08::01::2022 04:19:28|>SLIT ON ITS REAR| +08::01::2022 04:19:28|MAUS BTFO| +08::01::2022 04:19:29|8888888888888888888888888888 +08::01::2022 04:19:29|DON'T WANNA| +08::01::2022 04:19:30|AIM FOR THE SLIT| +08::01::2022 04:19:31|FFFFFF +08::01::2022 04:19:31|888888888888888 +08::01::2022 04:19:31|OUSEBROS......... +08::01::2022 04:19:31|Dead RRAT| +08::01::2022 04:19:32|88888888888888888888888888888888888 +08::01::2022 04:19:32|THE MAUS IS DOWN| +08::01::2022 04:19:33|888888888888888888888888888 +08::01::2022 04:19:33|HITTERS +08::01::2022 04:19:33|MAUS BTFO| +08::01::2022 04:19:33|88888888888888 +08::01::2022 04:19:33|SUGOI | +08::01::2022 04:19:34|ARAI'D +08::01::2022 04:19:34|ekt +08::01::2022 04:19:36|I'LL TARGET THE SLIT ON MIHO'S REAR| +08::01::2022 04:19:36|????????????????????? +08::01::2022 04:19:37|WE GOT TOO COCKY KUROMOROMINEBROS| +08::01::2022 04:19:37|They could have just reversed... | +08::01::2022 04:19:37|nerd down| +08::01::2022 04:19:38|where are the other tanks| +08::01::2022 04:19:39|rip peko| +08::01::2022 04:19:40|Slit is the weak spot| +08::01::2022 04:19:40|UGOIIIIIIII +08::01::2022 04:19:45|MAUSKEKS +08::01::2022 04:19:47|THIS CAN"T BE HAPPENING MAUSBROS| +08::01::2022 04:19:50|ausbros... +08::01::2022 04:19:51|AWAII +08::01::2022 04:19:52|hetzer wins again| +08::01::2022 04:19:52|floppy cannon| +08::01::2022 04:19:53|HETZERBROS NOT LIKE THIS| +08::01::2022 04:19:55|Maus bros..... We lost| +08::01::2022 04:19:57|hai taxi~| +08::01::2022 04:19:58|so that's how baby tanks are made huh| +08::01::2022 04:19:59|ooarai cant possibly win this one| +08::01::2022 04:19:59|_;7 +08::01::2022 04:20:00| +08::01::2022 04:20:00|RIP THICC BOY| +08::01::2022 04:20:01| +08::01::2022 04:20:01|cute tank sparks| +08::01::2022 04:20:01|IP +08::01::2022 04:20:02|lacid +08::01::2022 04:20:02|czechnology... | +08::01::2022 04:20:04| +08::01::2022 04:20:04| +08::01::2022 04:20:05| +08::01::2022 04:20:05|ip +08::01::2022 04:20:05|Goodnight sweet hetzer ;_;| +08::01::2022 04:20:05|HETZERBROS WE JOBBED| +08::01::2022 04:20:06|ITS OVER| +08::01::2022 04:20:06|7 +08::01::2022 04:20:07| +08::01::2022 04:20:08| +08::01::2022 04:20:08| +08::01::2022 04:20:09| +08::01::2022 04:20:09|ip +08::01::2022 04:20:09|_;7 +08::01::2022 04:20:09| +08::01::2022 04:20:10|7 +08::01::2022 04:20:10|_;7 +08::01::2022 04:20:10|AAAAAAAAAANNNNNNNNNNZZZZZZZZZZZZUUUUUUUUUUUUUUUUU UUUUUUUUOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +08::01::2022 04:20:10|Riop Hetzewr| +08::01::2022 04:20:10|7 +08::01::2022 04:20:11|7 +08::01::2022 04:20:11|__;7 +08::01::2022 04:20:12| +08::01::2022 04:20:12|THAT +08::01::2022 04:20:13|ip +08::01::2022 04:20:13|HETZERCHAD ;___;7| +08::01::2022 04:20:13|FFFFF +08::01::2022 04:20:14|_;7 +08::01::2022 04:20:14|sasuga hetzer| +08::01::2022 04:20:14| +08::01::2022 04:20:15|OOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:20:15| +08::01::2022 04:20:16|TL Note: "Anzu" means "SEX"| +08::01::2022 04:20:17|and they survived that much| +08::01::2022 04:20:17|;_;7 hetzer-kun| +08::01::2022 04:20:17|7 +08::01::2022 04:20:17|7 +08::01::2022 04:20:17|7 +08::01::2022 04:20:17|IP +08::01::2022 04:20:17|7 +08::01::2022 04:20:18|__;7 +08::01::2022 04:20:18|>our job here is done >you didn't do anything| +08::01::2022 04:20:19|_;7 +08::01::2022 04:20:19|OUDER +08::01::2022 04:20:19|AITO +08::01::2022 04:20:20|thanks tl| +08::01::2022 04:20:21|_;7 +08::01::2022 04:20:23|NZU +08::01::2022 04:20:23|_;7 +08::01::2022 04:20:23|AITO +08::01::2022 04:20:24|>it was a good run| +08::01::2022 04:20:24|7 +08::01::2022 04:20:25| +08::01::2022 04:20:25|F crushed by Thicc tank| +08::01::2022 04:20:29|IM SURE THIS WONT IMPACT HER UNIVERSITY ENTRANCE| +08::01::2022 04:20:37|haha yeah| +08::01::2022 04:20:37|4-14 ez dubs| +08::01::2022 04:20:39|98% CHANCE OF VICTORY| +08::01::2022 04:20:39|DORIKO GATSU| +08::01::2022 04:20:41|Momobros we got too cocky| +08::01::2022 04:20:45|4 v 14 gg ez no re| +08::01::2022 04:20:50|EOPON +08::01::2022 04:20:50|tfw noriko makes me tear up | +08::01::2022 04:20:52|lefant +08::01::2022 04:20:54|v18? +08::01::2022 04:20:56|ZUDA +08::01::2022 04:20:57|GIVE EM HELL| +08::01::2022 04:20:58|agdnigger........... +08::01::2022 04:20:58|cunny bunnies| +08::01::2022 04:20:59|>Trying to 1v1 a superiour tank| +08::01::2022 04:21:02|kee +08::01::2022 04:21:03|gey +08::01::2022 04:21:03|no crying in senshado!| +08::01::2022 04:21:04|azusa ascending| +08::01::2022 04:21:05|ohkayyyy +08::01::2022 04:21:05|anko +08::01::2022 04:21:06|time to be MVP Leopon chads| +08::01::2022 04:21:07|kaaay +08::01::2022 04:21:07|kee +08::01::2022 04:21:09|gey +08::01::2022 04:21:13|KEH +08::01::2022 04:21:15|DIZZY WANDER| +08::01::2022 04:21:15|FURAFURA SAKUSEN| +08::01::2022 04:21:16|Superior tank with infeiror crew| +08::01::2022 04:21:16|o g e y | +08::01::2022 04:21:17|DRUNK DRIVING MAKO| +08::01::2022 04:21:24|UWAFUWA +08::01::2022 04:21:24| ラフラ作戦って +08::01::2022 04:21:33|MAKO MAKE SURE YOU DRIVE LIKE A DRUNK BITCH| +08::01::2022 04:21:37|fura fura taimu| +08::01::2022 04:21:44|Did you just call my waify inferiour, anon?| +08::01::2022 04:21:44|who could be behind this post| +08::01::2022 04:21:46| ータロー作戦みたいなもんやろ +08::01::2022 04:21:48|LET'S GO MAHO CHADS| +08::01::2022 04:21:48|buffering time| +08::01::2022 04:21:51|bros i;m getting tired| +08::01::2022 04:21:52|GuP x K-ON when| +08::01::2022 04:21:53| らふら時間 +08::01::2022 04:21:54|ttps:::::soyjak.party::soy::::res::275227.html +08::01::2022 04:21:58|AHOBVLLS +08::01::2022 04:22:01|infantry support? just support your konigstiger with another konigstiger| +08::01::2022 04:22:02|SNW TOMORROW| +08::01::2022 04:22:04|YOU MUST NOT FALL ASLEEP| +08::01::2022 04:22:08|kill yourself sojak retard| +08::01::2022 04:22:11|rip to all those that passed out already| +08::01::2022 04:22:14|lads I pissed. please forgive me| +08::01::2022 04:22:21|>passing out | +08::01::2022 04:22:21|Infantry support is just a meme| +08::01::2022 04:22:22|piss in my mouth| +08::01::2022 04:22:22|IM HOLDING ON BROS| +08::01::2022 04:22:23|I was hoping I'd last the film but I don't know folk| +08::01::2022 04:22:26|RAPE WANI IN THE MOUTH| +08::01::2022 04:22:28|ONO +08::01::2022 04:22:29|RIP to all those who died and will die before das finale 6| +08::01::2022 04:22:29|please face the wall now| +08::01::2022 04:22:30|as long as it was in a bottle pissing is ok| +08::01::2022 04:22:33|I still haven't shat| +08::01::2022 04:22:33|>still needing basic human needs like sleeping| +08::01::2022 04:22:34|idk man i think taking a der film nap is worth it| +08::01::2022 04:22:36|HEAVY TANK KILLERS!| +08::01::2022 04:22:36|>kill yourself soyjak retard| +08::01::2022 04:22:38|>they learned from the mo vie| +08::01::2022 04:22:39|ye! +08::01::2022 04:22:40|AZUDA HI| +08::01::2022 04:22:40|HAI HAI HAI| +08::01::2022 04:22:41| +08::01::2022 04:22:42|ye? +08::01::2022 04:22:42|aye aye aye!| +08::01::2022 04:22:42|wow this is just like kelly's heroes| +08::01::2022 04:22:42|AYE AYE AYE| +08::01::2022 04:22:43|soyjaks incoming| +08::01::2022 04:22:44|sukimontsukimontsukimon +08::01::2022 04:22:46|INO +08::01::2022 04:22:46|NAME DROP| +08::01::2022 04:22:48|ino +08::01::2022 04:22:50|RIGHT TURN| +08::01::2022 04:22:50|operation kino| +08::01::2022 04:22:50|INO +08::01::2022 04:22:54|Sleeping > GuP STREAM | +08::01::2022 04:22:55|Name drop? they dead now| +08::01::2022 04:22:55|fucking Kino| +08::01::2022 04:22:56|INO +08::01::2022 04:22:56|who's kelly?| +08::01::2022 04:22:57|INO +08::01::2022 04:22:57|Rip Ferdinand| +08::01::2022 04:22:57|HOGANS HEROES| +08::01::2022 04:22:59| +08::01::2022 04:23:00|>Imagine the eearth still be in one piece by the time DF6 comes out| +08::01::2022 04:23:01|FAT SHAMED| +08::01::2022 04:23:01|LEFANTBROS... +08::01::2022 04:23:02|>soyjaks incoming | +08::01::2022 04:23:02|THAT'S PAINT| +08::01::2022 04:23:02|DUMB FAT TANK| +08::01::2022 04:23:03|truly ikinography| +08::01::2022 04:23:04|ASED +08::01::2022 04:23:05|NAL +08::01::2022 04:23:05|ITS OVER| +08::01::2022 04:23:06| +08::01::2022 04:23:07|AT +08::01::2022 04:23:07|IP +08::01::2022 04:23:08|maus too fat| +08::01::2022 04:23:10|>>soyjaks incoming| +08::01::2022 04:23:11| こは出来ない名無し人々いっぱいですよね~~~ +08::01::2022 04:23:12|CHO CHO| +08::01::2022 04:23:13|SIZE MATTERS BROS| +08::01::2022 04:23:14|7 +08::01::2022 04:23:15|ferdinand too fat| +08::01::2022 04:23:16|ENIUS +08::01::2022 04:23:16|SAKI THE GAWD| +08::01::2022 04:23:16|500 IQ| +08::01::2022 04:23:16|too big| +08::01::2022 04:23:17|aki? +08::01::2022 04:23:17|AKI!!!!!!!!!!!!!!!!!!!!!!!! +08::01::2022 04:23:18|BASED AUTIST SAKI| +08::01::2022 04:23:18|utterfly? +08::01::2022 04:23:19|SHE SPOKE| +08::01::2022 04:23:19|AKI +08::01::2022 04:23:20|enius +08::01::2022 04:23:21|SE NO| +08::01::2022 04:23:21|aki!!! +08::01::2022 04:23:22|Big brained| +08::01::2022 04:23:24|AKI2SMART +08::01::2022 04:23:24|how does this girls head work| +08::01::2022 04:23:27|999999999 IQ| +08::01::2022 04:23:28|ass blasted| +08::01::2022 04:23:28|Em, you just killed the crew| +08::01::2022 04:23:28|ekt +08::01::2022 04:23:29|OH N-| +08::01::2022 04:23:29|ERIKA SEETHING| +08::01::2022 04:23:29|AUTISM SPEAKS| +08::01::2022 04:23:29|bunny cunnies... | +08::01::2022 04:23:31| +08::01::2022 04:23:34|ST +08::01::2022 04:23:39|ass blasted| +08::01::2022 04:23:39|ttps:::::soyjak.party::soy::::res::275227.html +08::01::2022 04:23:41|autism > erika| +08::01::2022 04:23:41|mao +08::01::2022 04:23:49|>attempted murder| +08::01::2022 04:23:49|soyjacks +08::01::2022 04:23:50|nobody will click your links, cancer| +08::01::2022 04:23:55|UTS! +08::01::2022 04:23:57|fuck off to reddit| +08::01::2022 04:23:57|:tf: u mad?| +08::01::2022 04:24:03|UTS +08::01::2022 04:24:04|:tf: +08::01::2022 04:24:05|posting links here lmoa| +08::01::2022 04:24:05|ttps:::::suckmyass +08::01::2022 04:24:07|uts +08::01::2022 04:24:08|TE +08::01::2022 04:24:10|SOYJACK A SHIT| +08::01::2022 04:24:11|emonparty.org +08::01::2022 04:24:12|>nobody will click your links cancer| +08::01::2022 04:24:12|pepega why you mad though| +08::01::2022 04:24:12|these poor bunneies| +08::01::2022 04:24:14|UTS +08::01::2022 04:24:15|>kys soyjack| +08::01::2022 04:24:16| +08::01::2022 04:24:19|oatse.cx +08::01::2022 04:24:19|200 IQ| +08::01::2022 04:24:20|Mine Were Of Trouble Peter Kemp| +08::01::2022 04:24:20|>the redditor showed up| +08::01::2022 04:24:21|ROLLED +08::01::2022 04:24:21|ttps:::::TLNOTEANZUMEANSSEX.com +08::01::2022 04:24:25|AZUSA TOO SMART| +08::01::2022 04:24:27|ubgirl.jpg +08::01::2022 04:24:28|o fuk...| +08::01::2022 04:24:28|ww.blacked.com +08::01::2022 04:24:29|>live soyjak | +08::01::2022 04:24:30|what are we drinking tonight boys| +08::01::2022 04:24:35|eer +08::01::2022 04:24:36|ater +08::01::2022 04:24:36|ee +08::01::2022 04:24:38|ater +08::01::2022 04:24:38|Why can't I penetrate Jagdpanzer's rear?| +08::01::2022 04:24:39|anta +08::01::2022 04:24:41|arjeeling +08::01::2022 04:24:42|IP +08::01::2022 04:24:42|BEER BEER BEER| +08::01::2022 04:24:43|athwater +08::01::2022 04:24:43|ater +08::01::2022 04:24:44|rum, vodka, wine| +08::01::2022 04:24:45|atama ii| +08::01::2022 04:24:45|they dead| +08::01::2022 04:24:48|SAHI +08::01::2022 04:24:50|rdbeg +08::01::2022 04:24:50|Now kiss| +08::01::2022 04:24:50|brown liquor| +08::01::2022 04:24:50|I'd rather penetrate Anzus rear| +08::01::2022 04:24:51|owaii... +08::01::2022 04:24:52|chat is degenerating| +08::01::2022 04:24:53|IN +08::01::2022 04:24:54|TURRET FENCING| +08::01::2022 04:24:54|wait what| +08::01::2022 04:24:58|HIGH IQ| +08::01::2022 04:24:58|specifically homebrew| +08::01::2022 04:24:59|jagdnigger bros........| +08::01::2022 04:24:59|OUST +08::01::2022 04:25:00|Chat is reclining...| +08::01::2022 04:25:01|ZUSA!!! +08::01::2022 04:25:02|how is this happening| +08::01::2022 04:25:03|chat falling apart at the kino as expected| +08::01::2022 04:25:04|capwisun time| +08::01::2022 04:25:04| 卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐 +08::01::2022 04:25:07|Chat is returning to native state of degeneration| +08::01::2022 04:25:07|agdtigerbros... +08::01::2022 04:25:08|AZUSA BASED!| +08::01::2022 04:25:09|the music| +08::01::2022 04:25:09|UCH +08::01::2022 04:25:10|ip +08::01::2022 04:25:11|ej +08::01::2022 04:25:12| +08::01::2022 04:25:13|NOT THE CUNNY| +08::01::2022 04:25:13|RIP turret| +08::01::2022 04:25:13|UCH +08::01::2022 04:25:15|lmao get fucked| +08::01::2022 04:25:16|the front fell off| +08::01::2022 04:25:16|ead +08::01::2022 04:25:16|ek +08::01::2022 04:25:16|wwww +08::01::2022 04:25:17| +08::01::2022 04:25:17|ip +08::01::2022 04:25:17|uch +08::01::2022 04:25:17|aaaaaaaaaaaaaah +08::01::2022 04:25:17|Broken ponos!| +08::01::2022 04:25:17|amn +08::01::2022 04:25:17|ESUS +08::01::2022 04:25:18|ORE +08::01::2022 04:25:18|IP +08::01::2022 04:25:18| +08::01::2022 04:25:18|jagdcucks how could this happen.....| +08::01::2022 04:25:19|it's over| +08::01::2022 04:25:19|Hy +08::01::2022 04:25:20|I felt that| +08::01::2022 04:25:20| +08::01::2022 04:25:21|RHIST +08::01::2022 04:25:21|its over...| +08::01::2022 04:25:21|i felt that| +08::01::2022 04:25:21|JAGDBROS HOW COULD IT COME TO THIS| +08::01::2022 04:25:21| wwwww +08::01::2022 04:25:22|OOOOO +08::01::2022 04:25:23|out fucking skilled| +08::01::2022 04:25:24|Azusa love| +08::01::2022 04:25:25|AZUSAbros we won| +08::01::2022 04:25:25|RIP Cunnytonk| +08::01::2022 04:25:26| +08::01::2022 04:25:26|ttps:::::soyjak.party::soy::::res::275227.html +08::01::2022 04:25:28|smellefant +08::01::2022 04:25:28|lmaoing at JAGDNIGGERS| +08::01::2022 04:25:30|Jagdnigger out kek| +08::01::2022 04:25:30| +08::01::2022 04:25:33|abbitbros +08::01::2022 04:25:35|AYA GLASSES ARE RIP| +08::01::2022 04:25:36| 卐卐卐 +08::01::2022 04:25:39|you WILL stop posting links retard| +08::01::2022 04:25:39|mina daijoubu desu| +08::01::2022 04:25:44|>Saki doesn't respond| +08::01::2022 04:25:47|ttps:::::soyjak.party::soy::::res::275227.html +08::01::2022 04:25:49|How do you even expect people to click that link here like wtf retard| +08::01::2022 04:25:50|akibros... +08::01::2022 04:25:52|she dead| +08::01::2022 04:25:55|WE CAN STILL WIN THIS KUROMORIMINE BROS | +08::01::2022 04:25:55|THE LAST STAND| +08::01::2022 04:25:55|here we go lads| +08::01::2022 04:25:57|haha soyjacks funny| +08::01::2022 04:25:58|DO NOT ENTER| +08::01::2022 04:25:59|Saki is a product of group hallucination| +08::01::2022 04:26:00|you should stop posting links....NOW!| +08::01::2022 04:26:01|7 +08::01::2022 04:26:02|7 +08::01::2022 04:26:02|ROCKSTAR PARK| +08::01::2022 04:26:02| +08::01::2022 04:26:02|ITA +08::01::2022 04:26:03|soyjackoff my nutz | +08::01::2022 04:26:04|itaaaaaaaaaa! +08::01::2022 04:26:04|1v1 time| +08::01::2022 04:26:04|Oh yeah this part| +08::01::2022 04:26:04|HOLD THE LINE| +08::01::2022 04:26:04|THOU SHALL NOT PASS| +08::01::2022 04:26:06|GAVE THEIR LIVES SO BOLDLY| +08::01::2022 04:26:06|YOU SHALL NOT PASS| +08::01::2022 04:26:06|Fuck kikes and spammers| +08::01::2022 04:26:06|soyjacks are for 15 year olds| +08::01::2022 04:26:07|the alamo approaches | +08::01::2022 04:26:08|PURE KINO INCOMING| +08::01::2022 04:26:10|:: +08::01::2022 04:26:10|wojack is...le funny| +08::01::2022 04:26:12|KUROMOROMINEBROS WE ARE GOING TO MAKE IT| +08::01::2022 04:26:12|LOVE ISN'T ALWAYS ON TIME| +08::01::2022 04:26:12|Time for kino| +08::01::2022 04:26:15|UEL! +08::01::2022 04:26:15|SISTER DUEL| +08::01::2022 04:26:19|NAAAAAAKE +08::01::2022 04:26:19|AHO +08::01::2022 04:26:20|1V1 FAGGET| +08::01::2022 04:26:20|1V1 ME | +08::01::2022 04:26:21|ODL +08::01::2022 04:26:22|VEL! +08::01::2022 04:26:24|eemless +08::01::2022 04:26:24|WE SETTLE THIS HERE| +08::01::2022 04:26:26|MULTI-TREAD DRIFTING| +08::01::2022 04:26:26|ONOURRRRR +08::01::2022 04:26:26|NIGERUNDAYO | +08::01::2022 04:26:27|IMOUTO x ONEESAN| +08::01::2022 04:26:27|TONIGHT, TODAY| +08::01::2022 04:26:28|IT'S TIME TO D-D-D-DUEL| +08::01::2022 04:26:29|DEJA VU| +08::01::2022 04:26:29|U-DU-DUEL +08::01::2022 04:26:30|1v1 me fagget| +08::01::2022 04:26:32|WE ACE COMBAT ZERO NOW| +08::01::2022 04:26:32|holy shit leopon is the sexiest tank| +08::01::2022 04:26:32|SOYJACK A SHIT AND SO ARE ITS LOSER POSTERS| +08::01::2022 04:26:32|Mano a mano? More like... Miho a Maho| +08::01::2022 04:26:35|ani? +08::01::2022 04:26:36|STANDING HERE| +08::01::2022 04:26:39|miho x maho| +08::01::2022 04:26:41|I REALIZE| +08::01::2022 04:26:41|INO +08::01::2022 04:26:42|STANDING HERE| +08::01::2022 04:26:43|is it really a sexy tank?| +08::01::2022 04:26:44|WTF ERIKA DONT CALL MY PORSCHE A FAILED WEAPON| +08::01::2022 04:26:44|I REALIZE| +08::01::2022 04:26:44|SISTA DORIFTO!| +08::01::2022 04:26:45|MAHO MAHO MAHO| +08::01::2022 04:26:45|Maho's Mahos....| +08::01::2022 04:26:45|INO +08::01::2022 04:26:46|INO +08::01::2022 04:26:47|pz iv vs tiger bro| +08::01::2022 04:26:48|THAT IN THE END| +08::01::2022 04:26:49|What's this show called again?| +08::01::2022 04:26:51|DRIFT ON MY COCK| +08::01::2022 04:26:51|YOU WERE JUST LIKE ME| +08::01::2022 04:26:52|BONDING TIME| +08::01::2022 04:26:52|YOU WERE JUST LIKE ME| +08::01::2022 04:26:53|Tiger? More like NIGGER!| +08::01::2022 04:26:53|YOU WERE JUST LIKE ME | +08::01::2022 04:26:53|Miho x Maho but in bed| +08::01::2022 04:26:53|INO +08::01::2022 04:26:56|initial t| +08::01::2022 04:26:56|YOU WERE JUST LIKE ME| +08::01::2022 04:26:56|cute 3D| +08::01::2022 04:26:57|YOU WERE JUST LIKE ME| +08::01::2022 04:26:57|-on +08::01::2022 04:27:00|TRYING TO MAKE HISTORY| +08::01::2022 04:27:01|Iron Idols| +08::01::2022 04:27:01|TRYING TO MAKE HISTORY| +08::01::2022 04:27:03|i bet maho wants to suck miho's mihos| +08::01::2022 04:27:05|INO +08::01::2022 04:27:07|LET'S GO MAHO| +08::01::2022 04:27:07|BUT WHOS TO JUDGE| +08::01::2022 04:27:08|tfw no stabilisers| +08::01::2022 04:27:10|NIGHT OF FIRE| +08::01::2022 04:27:10|I NEED cock miho| +08::01::2022 04:27:10|no doubt| +08::01::2022 04:27:10|female + IFV| +08::01::2022 04:27:11|FIGHTING SISTER AGAINST SISTER TO THE BITTER END| +08::01::2022 04:27:12|Pekoe-san, have you heard this saying? "Reminder Darj best waifu".| +08::01::2022 04:27:13|who doesn't want to suck mihos mihos| +08::01::2022 04:27:14|BUT WHO'S TO JUDGE| +08::01::2022 04:27:14|THE RIGHT FROM WRONG| +08::01::2022 04:27:15|THE RIGHT FROM WRONG| +08::01::2022 04:27:15|I FOLLOWED MY WRATH| +08::01::2022 04:27:16|erika wants to join| +08::01::2022 04:27:17|I bet I want to suck on Miho's Mihos| +08::01::2022 04:27:18|winner gets to be on top| +08::01::2022 04:27:21|Mako is the True MVP of this duel| +08::01::2022 04:27:21|TANK DUEL| +08::01::2022 04:27:23|OPERATION PUNCHY!| +08::01::2022 04:27:23|thats a shit syinh| +08::01::2022 04:27:26|WHEN YOUR GUARD IS DOWN I THINK WE'LL ALL AGREE| +08::01::2022 04:27:27|I'M BURNIN UP FOR YOU| +08::01::2022 04:27:27|I FUCKING LOVE MAHO!!!!!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 04:27:29|I THINK WE'LL BOTH AGREE | +08::01::2022 04:27:30|uffer +08::01::2022 04:27:33|Erika is being cucked right now| +08::01::2022 04:27:35|presss 3 for a threesome with Erika| +08::01::2022 04:27:36|KILL HER MAHOO| +08::01::2022 04:27:36|VIOLENCE BREEDS VIOLENCE| +08::01::2022 04:27:38|Maho wins every time| +08::01::2022 04:27:38|Maho smart| +08::01::2022 04:27:38| +08::01::2022 04:27:38|CARBON HELP ME| +08::01::2022 04:27:40|THAT IN THE END IT HAS TO BE THIS WAY~| +08::01::2022 04:27:42|VIOLENCE BREEDS VIOLENCE| +08::01::2022 04:27:42|Violence breeds violence| +08::01::2022 04:27:44|G +08::01::2022 04:27:45|BUT IN THE END IT HAS TO BE THIS WAYYYYYYYYYYY| +08::01::2022 04:27:46|The same strategy the Wani uses in DF3 to defeat Kat| +08::01::2022 04:27:47|ammed +08::01::2022 04:27:48|I BURN EVERY TIME THAT I'M CLOSE TO YOU| +08::01::2022 04:27:50|NOT LIKE THIS| +08::01::2022 04:27:50|war never changes| +08::01::2022 04:27:51|cute maho| +08::01::2022 04:27:54| 卐卐卐卐卐 +08::01::2022 04:27:55|BURNIN UP FOR YOU| +08::01::2022 04:27:58|maho is always cute| +08::01::2022 04:27:58|USO +08::01::2022 04:27:59|FOR THE GRACE FOR THE MIGHT OF OUR LORD, IN THE NAME OF HIS GLORY| +08::01::2022 04:28:00|solid snek told me war has changed though?| +08::01::2022 04:28:04|ased +08::01::2022 04:28:06|how many concussions did that move cause?| +08::01::2022 04:28:06|BURNIIIIIIIING UP FOR YOOOOOUUU| +08::01::2022 04:28:08|how can they not disable a stationary target| +08::01::2022 04:28:10|though +08::01::2022 04:28:12|war never changes...| +08::01::2022 04:28:13|AMAAAZING GRAACEEE| +08::01::2022 04:28:13|NIGHT OF FIRE| +08::01::2022 04:28:14|F FOR DUCKS| +08::01::2022 04:28:15|KINO KINO KINO KINO| +08::01::2022 04:28:15|BUFFER +08::01::2022 04:28:16|Need for Speed: Carbon Coating| +08::01::2022 04:28:18|BUFFERING +08::01::2022 04:28:18|how can they not disable an angled Tiger P| +08::01::2022 04:28:18| +08::01::2022 04:28:19|its over...| +08::01::2022 04:28:19|UFFERONI +08::01::2022 04:28:20|IP +08::01::2022 04:28:21|OLD +08::01::2022 04:28:22|uff +08::01::2022 04:28:22|war has changed| +08::01::2022 04:28:24|buffer time| +08::01::2022 04:28:24|So this porsche power, huh?| +08::01::2022 04:28:26|DEJA VU| +08::01::2022 04:28:26| +08::01::2022 04:28:26|RIP MEDIUM TANK BROS| +08::01::2022 04:28:27|ino +08::01::2022 04:28:27|>Shitbox porsche survives 300 direct hits| +08::01::2022 04:28:28|TIGER STAY WINNING| +08::01::2022 04:28:28|not buffering shit again| +08::01::2022 04:28:29|$1000 on BLACK FORSET to win| +08::01::2022 04:28:30|corner plate is like 80mm thick| +08::01::2022 04:28:30|LEOPON HOLD| +08::01::2022 04:28:30|fucking hell| +08::01::2022 04:28:31|bug buff| +08::01::2022 04:28:31|GAVE THEIR LIVES SO BOLDLY| +08::01::2022 04:28:32|IF KUROMORIMINE LOSES IM GETTING SENT TO BIRKENAU| +08::01::2022 04:28:33|goddam buffering| +08::01::2022 04:28:34|rip clutch tank| +08::01::2022 04:28:35|LEOPON HOLD| +08::01::2022 04:28:36|the tiger has been put down| +08::01::2022 04:28:37|_;7 +08::01::2022 04:28:37|ORIKO +08::01::2022 04:28:38|IN THE NAME OF GOD| +08::01::2022 04:28:38|IP! +08::01::2022 04:28:38|Porsche ;_;7| +08::01::2022 04:28:39| +08::01::2022 04:28:40|VP +08::01::2022 04:28:40|Leopon ;_;| +08::01::2022 04:28:41|EYE OF THE TIGER| +08::01::2022 04:28:41| +08::01::2022 04:28:41|RIP BROWN GIRL TEAM| +08::01::2022 04:28:42| +08::01::2022 04:28:43| +08::01::2022 04:28:44|7 +08::01::2022 04:28:44| +08::01::2022 04:28:44|DEFEND LIKE A LION| +08::01::2022 04:28:44|roschebros... +08::01::2022 04:28:44|If KMM lose imma commit| +08::01::2022 04:28:45|_;7 +08::01::2022 04:28:45|7 +08::01::2022 04:28:46|OTSUGEKI +08::01::2022 04:28:46|OTSUGEKI +08::01::2022 04:28:46| +08::01::2022 04:28:46|what would gimi do?| +08::01::2022 04:28:47|OTSUGEKI +08::01::2022 04:28:47|_;7 +08::01::2022 04:28:48|OTSUGEKI +08::01::2022 04:28:50|OTSUGEKI? +08::01::2022 04:28:51|OTSUGEKI +08::01::2022 04:28:51|Oarai it's over| +08::01::2022 04:28:52|PORUSHE TIGAAAAAAA| +08::01::2022 04:28:54|mugs +08::01::2022 04:28:54|porsche tiger is the strongest| +08::01::2022 04:28:54|YUUKURI DE II YO| +08::01::2022 04:28:55|RED SUN| +08::01::2022 04:28:55|BEST TEAM EVEN IN DEATH| +08::01::2022 04:28:57|yukkuri de ii yo~| +08::01::2022 04:29:00|TOTSUGEKI! O::| +08::01::2022 04:29:02| っくりねえええ +08::01::2022 04:29:02|WE GOT THIS IN THE BAG GERMAN BROS| +08::01::2022 04:29:05|Hourly reminder to HYDRATE| +08::01::2022 04:29:05|WE'VE GOT THIS MAHOCHADS| +08::01::2022 04:29:10|I love the pov shots| +08::01::2022 04:29:11|they used 3D really well| +08::01::2022 04:29:12|Accurate representation of how WW2 ended in Europe| +08::01::2022 04:29:12|yukkuri de ii yo~| +08::01::2022 04:29:13|Guys I think the german tank is gonna win this one| +08::01::2022 04:29:15|COME ON OOARI I HAVE $10k ON THIS SHIT| +08::01::2022 04:29:15|BET THE FARM ON KMM| +08::01::2022 04:29:18|NIGHT OF FIRE| +08::01::2022 04:29:21|LET'S GO HITLER CHADS| +08::01::2022 04:29:21|DEJA VU!| +08::01::2022 04:29:23|NOOO MAIKEL NOO THIS IS SO NOT RIGHT| +08::01::2022 04:29:24|ince_orgasm.gif +08::01::2022 04:29:28|All I have to drink is my piss bottle...| +08::01::2022 04:29:28|BET MY WIFES BRIDE PRICE ON MAHO| +08::01::2022 04:29:29|GAS GAS GAS| +08::01::2022 04:29:30|KMM sounds like KLM| +08::01::2022 04:29:30|I'M BURNIN UP FOR YOU| +08::01::2022 04:29:32|KUROMORIMINE UBERMENSCH| +08::01::2022 04:29:32|CAM ON OORAI| +08::01::2022 04:29:32|IT LOOK LIKE ARE LUCK RAN OUT OARAIBROS| +08::01::2022 04:29:33|KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +08::01::2022 04:29:34|I put 1000000000000000000000000$ on ooooarai| +08::01::2022 04:29:34|Hitler vs Stalin 1v1 tank battle| +08::01::2022 04:29:36|The arrival of Steiner's army will save us, right Kuromorominebros?| +08::01::2022 04:29:36|>not firing at the driver's vision slit| +08::01::2022 04:29:38|NO ONE SLEEP IN TOKYO| +08::01::2022 04:29:39|BURN EVERYTIME THAT I'M CLOSE TO YOU| +08::01::2022 04:29:39|WE GAAAANNNNNNNNN| +08::01::2022 04:29:39|20K ON KUROMORIMINE| +08::01::2022 04:29:40|KMM UBER ALLES| +08::01::2022 04:29:42|SCORE SAM FACKING SHELLS| +08::01::2022 04:29:44|EWD +08::01::2022 04:29:46|why tf u shoot at the tiger vision port| +08::01::2022 04:29:48|uys... +08::01::2022 04:29:49|INCOMING KINO| +08::01::2022 04:29:52|LOOF +08::01::2022 04:29:52|tank on tank action| +08::01::2022 04:29:54|HERE WE GO| +08::01::2022 04:29:56|>reload even faster| +08::01::2022 04:29:58|Toto, it's called Panzerfahren| +08::01::2022 04:29:59|CLUTCH FLOOF| +08::01::2022 04:29:59|MAXIMUM OVERFLUFF| +08::01::2022 04:29:59|BEst fluffer| +08::01::2022 04:30:00|der angriff steiners ist nicht erfolgt| +08::01::2022 04:30:01|FLOOF HAI| +08::01::2022 04:30:03|Full throttle kino| +08::01::2022 04:30:04|>just reload faster bro| +08::01::2022 04:30:06|DONT FLATSPOT THE TREADS MAKO| +08::01::2022 04:30:07|SPEED MORE SPEED| +08::01::2022 04:30:07|BELIEVE THE FLUFF| +08::01::2022 04:30:10|TEAMWORK MAKES THE DREAM WORK!| +08::01::2022 04:30:11|KAPITULIEREN? NEIN!!| +08::01::2022 04:30:12|DIE JOE BOO| +08::01::2022 04:30:13|DAS WAR EIN BEFEHL| +08::01::2022 04:30:13|>her job is to press r| +08::01::2022 04:30:14|ALL OR NOTHING| +08::01::2022 04:30:14|THE NEED FOR SNEED| +08::01::2022 04:30:14|its time| +08::01::2022 04:30:16|erika wants the futa cock| +08::01::2022 04:30:17|THE THING| +08::01::2022 04:30:17|ERIKA NTR| +08::01::2022 04:30:18|FINAL MOVE| +08::01::2022 04:30:19|PRO GAMER MOVE TIME| +08::01::2022 04:30:19|COPE ERIKA| +08::01::2022 04:30:20|OMMMANDER! +08::01::2022 04:30:21|ITS OVER ERIKA| +08::01::2022 04:30:22|Erika late again| +08::01::2022 04:30:22|POWER AND SPEED SOLVES MANY THINGS| +08::01::2022 04:30:22|AICHOU!!!!! +08::01::2022 04:30:22|haha Erika| +08::01::2022 04:30:22|HERE IT IS BREHS| +08::01::2022 04:30:23|Erika.... go away.| +08::01::2022 04:30:23|<<>>| +08::01::2022 04:30:24|DEATH TO DMM| +08::01::2022 04:30:24|FEGELEIN FEGELEIN FEGELEIN FEGELEIN FEGELEIN | +08::01::2022 04:30:25|NEED +08::01::2022 04:30:25|LESBIAN INCEST DRIFTING| +08::01::2022 04:30:26|TL Note: "Anzu" means "SEX"| +08::01::2022 04:30:29|Erika +08::01::2022 04:30:30|THANKS TL| +08::01::2022 04:30:31|ZUSAN +08::01::2022 04:30:31|LET'S GO MAHO CHADS| +08::01::2022 04:30:31|ews +08::01::2022 04:30:31|ERIKA KOPE| +08::01::2022 04:30:32|EGELEIN +08::01::2022 04:30:33|NZU +08::01::2022 04:30:35|Thanks TL| +08::01::2022 04:30:35|DAS WAS EIN BEFEHL| +08::01::2022 04:30:35|MOMO DUMB| +08::01::2022 04:30:35|LOAD FASTER JOHANN| +08::01::2022 04:30:35|want sex miho| +08::01::2022 04:30:37|NZU +08::01::2022 04:30:38|INO +08::01::2022 04:30:39|just one| +08::01::2022 04:30:40|ews +08::01::2022 04:30:41|Momo's stupid fucking face...| +08::01::2022 04:30:41|WANI LATE TO BLOCK THE FLAG TANK AGAIN| +08::01::2022 04:30:42|ENSHIN +08::01::2022 04:30:44|O:: +08::01::2022 04:30:47|KMM LETS GOOOOOOOO| +08::01::2022 04:30:47|K I N O| +08::01::2022 04:30:48|>TL miho means "sloppy fuck"| +08::01::2022 04:30:48|>hitler seething| +08::01::2022 04:30:51|NIGHT OF FIRE| +08::01::2022 04:30:52|TE +08::01::2022 04:30:54|o:: Maho wins SIEG HEIL| +08::01::2022 04:30:55|tank drift| +08::01::2022 04:30:56|TE +08::01::2022 04:30:57|DEJA VU| +08::01::2022 04:30:58|DORIFTO DORIFTO| +08::01::2022 04:30:59|DEJA VU| +08::01::2022 04:30:59|ORIFTOOOOOO +08::01::2022 04:31:00|DEJA VU| +08::01::2022 04:31:01|DEJA VU I'VE JUST BEEN IN THIS PLACE BEFORE| +08::01::2022 04:31:01|rifting +08::01::2022 04:31:01|ORIFTO +08::01::2022 04:31:02|DEJA VU| +08::01::2022 04:31:02|RIFT +08::01::2022 04:31:03|DEJA VU| +08::01::2022 04:31:03|ORIFTO +08::01::2022 04:31:04|OOOORRRRRRRRRRRIIIIIIIIIIIIIIIFFFFFFFFFFFFFTTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:31:04|NINJA SHIT| +08::01::2022 04:31:05|RULES OF NATURE| +08::01::2022 04:31:05|PANZER DRIFT| +08::01::2022 04:31:05|ANI +08::01::2022 04:31:06|DEJA VU| +08::01::2022 04:31:06|ORIFUTO +08::01::2022 04:31:06|KANSEI DORIFUTO| +08::01::2022 04:31:06|DEJA VU| +08::01::2022 04:31:07|MULTI-TREAD DRIFTING| +08::01::2022 04:31:07|I CAME UP FROM THE BOTTOM AND INTO THE TOP - FOR THE FIRST TIME I FEEL ALIVE| +08::01::2022 04:31:08|INOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:31:08|DEJA VU| +08::01::2022 04:31:08|Tl note: Gloriana means shit food| +08::01::2022 04:31:09|ORIFTO +08::01::2022 04:31:10|orifto +08::01::2022 04:31:10|I'VE JUST BEEN IN THIS PLACE BEFORE| +08::01::2022 04:31:10|T I R O F I N A L E| +08::01::2022 04:31:10|KINO DRIFTOOOO| +08::01::2022 04:31:11|ANI +08::01::2022 04:31:11|HHHHHHHHHHHH +08::01::2022 04:31:11|INO +08::01::2022 04:31:11|EW +08::01::2022 04:31:12|OOOARAAII DOOO RIIII FFUUUU TOOOOOO| +08::01::2022 04:31:12|Maho's ute is ses| +08::01::2022 04:31:12|WE DID IT KMM BROS| +08::01::2022 04:31:13|RUNNING IN THE 90S| +08::01::2022 04:31:13|NIGHT ON FIRE| +08::01::2022 04:31:14|I CAN FLY LIKE AN EAGLE AND STRIKE LIKE A HAWK| +08::01::2022 04:31:14|RIIIIIIFTO +08::01::2022 04:31:15|INO +08::01::2022 04:31:15|DEJA VU| +08::01::2022 04:31:16|INO +08::01::2022 04:31:16|INO +08::01::2022 04:31:16|KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +08::01::2022 04:31:17| +08::01::2022 04:31:17|INO +08::01::2022 04:31:17|INOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:31:17|DORIFTO BATTLE| +08::01::2022 04:31:18|INO +08::01::2022 04:31:18|NO NO NO MAIKEL| +08::01::2022 04:31:18|YOU CAN'T DRIFT IN A TANK| +08::01::2022 04:31:18|UZAKERUNA +08::01::2022 04:31:18|Mami died | +08::01::2022 04:31:19|INOOOOOOOOOOOOOOO +08::01::2022 04:31:20|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:31:20|INO +08::01::2022 04:31:20|Cross Counter| +08::01::2022 04:31:20|INO +08::01::2022 04:31:20|INO +08::01::2022 04:31:21|INO +08::01::2022 04:31:22|INO +08::01::2022 04:31:22|GAS GAS GAS| +08::01::2022 04:31:22| +08::01::2022 04:31:23|INOOOOOOOOOOOOOOOO +08::01::2022 04:31:23|destroyed ass| +08::01::2022 04:31:24|ITS SOOO NOT RIGHT| +08::01::2022 04:31:24|Can't believe OArai lost...| +08::01::2022 04:31:24|IT'S OVER OARAI| +08::01::2022 04:31:24|INO +08::01::2022 04:31:26|KILLING MY LOVE| +08::01::2022 04:31:26|INO +08::01::2022 04:31:26|COMPRESSION ARTIFACTS| +08::01::2022 04:31:27|PURE KINO| +08::01::2022 04:31:28|maho bros....| +08::01::2022 04:31:28|KUROMOROMINEBROS ITS OVER| +08::01::2022 04:31:29| ターーーーーーーーーーーーーー~! +08::01::2022 04:31:29|Eurobeat grade kino| +08::01::2022 04:31:29|so satisfying| +08::01::2022 04:31:30|ERIKA IS SHOOK| +08::01::2022 04:31:30|: +08::01::2022 04:31:30|O +08::01::2022 04:31:31|INONOOOOOO +08::01::2022 04:31:32|scared] +08::01::2022 04:31:32|dumb erika| +08::01::2022 04:31:32|erika shock| +08::01::2022 04:31:34|cared +08::01::2022 04:31:35|MAHO STAYS WINING| +08::01::2022 04:31:35|eopold +08::01::2022 04:31:36|..... +08::01::2022 04:31:36|ERIKA YOU DUMB BITCh| +08::01::2022 04:31:36|KEIKAKU DOORI| +08::01::2022 04:31:36| べ +08::01::2022 04:31:37|Bespectacled wani| +08::01::2022 04:31:37|dumb wani| +08::01::2022 04:31:38|CUTE HEAD| +08::01::2022 04:31:38|u WA SHOCK| +08::01::2022 04:31:39|IN +08::01::2022 04:31:39|cared... +08::01::2022 04:31:39|scaredmiho.png +08::01::2022 04:31:40|O +08::01::2022 04:31:40|OH NO OH NO OH NO KRAUTBROS| +08::01::2022 04:31:41|BLOWN THE FUCK OUT| +08::01::2022 04:31:41|ino!!!!!!! +08::01::2022 04:31:41|OOO +08::01::2022 04:31:41|NDSIEG +08::01::2022 04:31:42|WANI: RATTLED| +08::01::2022 04:31:43|IS THAT TV ON AN ARTILLERY PIECE| +08::01::2022 04:31:44|AKEMASHITA +08::01::2022 04:31:44|OORAI WINS AGAIN| +08::01::2022 04:31:44|NOOOOOOOOO KUROMORIMINEBROS WE FUCKING LOST| +08::01::2022 04:31:44|erika +08::01::2022 04:31:45|ATTA +08::01::2022 04:31:46|NOOOOOOO KRAUTBROS| +08::01::2022 04:31:46|EAT SHIT KMM| +08::01::2022 04:31:46|THEY LOSSSSSTTTTTT AAAAAAAAAAAAAA IM GETTING SENT TO THE EASTERN FRONT| +08::01::2022 04:31:47|WE DID IT BOYS | +08::01::2022 04:31:48|88888888888888888 +08::01::2022 04:31:48|(((THEY))) did this... | +08::01::2022 04:31:49|YAAAAAAAAAAAAAAAAA OOOOOOARIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +08::01::2022 04:31:49|AAAAAAAAAAAAAAAAAAAAAAAAAY +08::01::2022 04:31:49|ATTA +08::01::2022 04:31:49|WE DID IT BROS| +08::01::2022 04:31:50|eopold +08::01::2022 04:31:50|ANZAI +08::01::2022 04:31:51|OOOOOOOOOOO +08::01::2022 04:31:51|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEY +08::01::2022 04:31:51|gg easy| +08::01::2022 04:31:51|gj guys we did it| +08::01::2022 04:31:51|ATTA +08::01::2022 04:31:52|ANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +08::01::2022 04:31:52|LETS GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 04:31:52|WANI: SEETHING| +08::01::2022 04:31:52|ATTA +08::01::2022 04:31:53|OORAI BANZAI| +08::01::2022 04:31:53|WE WON OOARAIBROS| +08::01::2022 04:31:53|oshaaaa +08::01::2022 04:31:53|TOTALER ENDSIEG| +08::01::2022 04:31:53|888888888888888 +08::01::2022 04:31:53|We made it bros...| +08::01::2022 04:31:54|achipachipachipachi +08::01::2022 04:31:54|OOARI CHADS WE WON| +08::01::2022 04:31:54|ATTAAAAAAAAAAAAAAA +08::01::2022 04:31:54|MY WIFE| +08::01::2022 04:31:54|ug +08::01::2022 04:31:54|WTF IS WAS OUR YEAR| +08::01::2022 04:31:54|888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 +08::01::2022 04:31:54|88888888888888888888888 +08::01::2022 04:31:55|GG EZ| +08::01::2022 04:31:55|TL Note: "Anzu" means "SEX"| +08::01::2022 04:31:55| 洗の勝利!!!!!! +08::01::2022 04:31:56|ORAI +08::01::2022 04:31:56|IGGED +08::01::2022 04:31:56|OSHAAAAAA +08::01::2022 04:31:57|OOARAIWINSLOL OOARAIWINSLOL OOARAIWINSLOL| +08::01::2022 04:31:58|ATTA +08::01::2022 04:31:58|GG EZ NO RE| +08::01::2022 04:31:58|ATTAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:31:59|HOLY SHIT HOW DID THEY MANAGE THIS| +08::01::2022 04:31:59|nzu +08::01::2022 04:31:59|IT'S 1945 ALL OVER AGAIN NOOOOOO| +08::01::2022 04:31:59|8 +08::01::2022 04:31:59|YEAHHHHHHHHHHHHHHHHHHHHHH BITHCES| +08::01::2022 04:32:01|888888888888888888888888888888888888888888888888888888888888888888888 +08::01::2022 04:32:01|momo +08::01::2022 04:32:01|STOP THE COUNT| +08::01::2022 04:32:02|The school is saved!| +08::01::2022 04:32:03|azibros... +08::01::2022 04:32:03|THANKS TL| +08::01::2022 04:32:03|YUZU JIGGLY TITS| +08::01::2022 04:32:03|KMM means Kilometer Mile| +08::01::2022 04:32:04|ATTTTTTTTTTTTTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:32:06|KUROMOROMINE LOCKED UP AT GITMO TRUST THE PLAN -Q| +08::01::2022 04:32:07|WA HA HA| +08::01::2022 04:32:08|SSPULL +08::01::2022 04:32:08|IPORIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIN +08::01::2022 04:32:10|-Duce? +08::01::2022 04:32:13|Maybe the real KMM was the friends we made along the way?| +08::01::2022 04:32:14|IPORIN! +08::01::2022 04:32:15|DVCE DVCE DVCE| +08::01::2022 04:32:16|NAIZURI WITH PORSCHE TIGER| +08::01::2022 04:32:16|MIPORIN I NEED COCK| +08::01::2022 04:32:16|VCE +08::01::2022 04:32:17|AHO +08::01::2022 04:32:19|where is dvce?| +08::01::2022 04:32:19|Duce slept through the match| +08::01::2022 04:32:20|BROS WE DID IT| +08::01::2022 04:32:21|I CAN'T BELEIVE THEY DID IT| +08::01::2022 04:32:21|SUGOI DESU WA| +08::01::2022 04:32:22|KMM means Kill My Mom| +08::01::2022 04:32:23|Like the good old days after 1945| +08::01::2022 04:32:24|xcellento! +08::01::2022 04:32:27|nice quick| +08::01::2022 04:32:27|Ducebros... did we get too sleepy....| +08::01::2022 04:32:28|Nice Quicku| +08::01::2022 04:32:30|nice quick| +08::01::2022 04:32:30|AHOO +08::01::2022 04:32:31|DVCE YOU DUMB FUCK | +08::01::2022 04:32:33|MEXT NOOOOOOO| +08::01::2022 04:32:35|Fuck I missed it, curse my ned to shit.,| +08::01::2022 04:32:36|DUCE WAKE UP| +08::01::2022 04:32:39|AT +08::01::2022 04:32:40|MADLADS DID IT| +08::01::2022 04:32:41|that's a strond truck to tow that tank| +08::01::2022 04:32:41|dvce where the fuck r u| +08::01::2022 04:32:42|maho sent to the work camps afterward| +08::01::2022 04:32:42|NAISU QUICKU| +08::01::2022 04:32:43|iss +08::01::2022 04:32:43|>school is saved woohoo| +08::01::2022 04:32:45|we got too sleepy duce bros.......| +08::01::2022 04:32:45|can I have my piss break now| +08::01::2022 04:32:47|DVCEbros we overslept...| +08::01::2022 04:32:47|DUCE PLEASE WAKU UPU| +08::01::2022 04:32:48|Don't blame Dvce, they eat too well to not sleep| +08::01::2022 04:32:50|UCE? +08::01::2022 04:32:51|_^ +08::01::2022 04:32:52|VCEBROS... +08::01::2022 04:32:52|Miho died| +08::01::2022 04:32:55|DVCE WAKE UP PLEASE| +08::01::2022 04:32:56|WE WEW ROBBED, KMMBROS| +08::01::2022 04:32:56|PASTA TIME BROS| +08::01::2022 04:32:56|DVCE WAKE UP IT'S BEEN NINE YEARS| +08::01::2022 04:32:56|>u dont have a piss bottle| +08::01::2022 04:32:57|VCEEE +08::01::2022 04:32:58|TL Note: "Anzu" means "SEX"| +08::01::2022 04:32:59|Just use a piss bottle bro| +08::01::2022 04:32:59|_; +08::01::2022 04:33:00|tsukareeeee +08::01::2022 04:33:01|Anzio will be here soon, r-right?| +08::01::2022 04:33:01|YOU'RE WINNER| +08::01::2022 04:33:03|THANKS TL| +08::01::2022 04:33:03|ry +08::01::2022 04:33:04|NZU +08::01::2022 04:33:05|____^ +08::01::2022 04:33:06|HUGGO! <3| +08::01::2022 04:33:06|nzu +08::01::2022 04:33:07|ORK +08::01::2022 04:33:07|____; +08::01::2022 04:33:08|awl +08::01::2022 04:33:08|-; +08::01::2022 04:33:09|__; +08::01::2022 04:33:09|[THIS DUCE IS DECEASED]| +08::01::2022 04:33:10|_; +08::01::2022 04:33:10|tiger a shit| +08::01::2022 04:33:10|MOMO DUMB| +08::01::2022 04:33:10|_; +08::01::2022 04:33:11|oobs +08::01::2022 04:33:12|_____; +08::01::2022 04:33:12|MOMO HATE| +08::01::2022 04:33:12|OMO-CHAN +08::01::2022 04:33:12|;;) +08::01::2022 04:33:12|momo such a baby| +08::01::2022 04:33:13|_; +08::01::2022 04:33:13|HUG MOMO| +08::01::2022 04:33:14|implying +08::01::2022 04:33:14|_: +08::01::2022 04:33:14|Cry bitch, it's sexy| +08::01::2022 04:33:14|_T +08::01::2022 04:33:14|crying bitch| +08::01::2022 04:33:15|CUTE DORK| +08::01::2022 04:33:16|tfu +08::01::2022 04:33:17|>all this effort just to keep going to school| +08::01::2022 04:33:17|MOMO IS CRYING! CRYBABY!!| +08::01::2022 04:33:18|lat +08::01::2022 04:33:18|MOMO HATE| +08::01::2022 04:33:18|CUTE ANZU| +08::01::2022 04:33:18|>Shitting in a piss bottle.| +08::01::2022 04:33:18|Momo still dumb| +08::01::2022 04:33:19|TL Note: "Anzu" means "SEX"| +08::01::2022 04:33:19|__; +08::01::2022 04:33:20|want to hug anzu| +08::01::2022 04:33:20|OL +08::01::2022 04:33:21|momo is so cute| +08::01::2022 04:33:21|PROTECT MOMO| +08::01::2022 04:33:21|I-I'm not crying it's just the rain I swear| +08::01::2022 04:33:21|Will Momo cry in Das 5?| +08::01::2022 04:33:22|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 04:33:23|sex with anzu| +08::01::2022 04:33:24|WAKE THE FUCK UP DUCE WE'VE GOT A PASTA TO MaKE| +08::01::2022 04:33:25|ooraibros... we really made it...| +08::01::2022 04:33:25|ULTRA SUPER MEGA CUTE ANZU| +08::01::2022 04:33:25|>he didnt pinky promise| +08::01::2022 04:33:26|SAved +08::01::2022 04:33:26|UNTIL THE MOVIE THAT IS| +08::01::2022 04:33:26|HUG MOMO| +08::01::2022 04:33:28|NZUUUUU +08::01::2022 04:33:28|>our school won't be shutting down| +08::01::2022 04:33:29|kek you will never graduate| +08::01::2022 04:33:30|OD +08::01::2022 04:33:30|>not closing down| +08::01::2022 04:33:31|WAKE UP DUCE| +08::01::2022 04:33:32|EW +08::01::2022 04:33:32|Look how flat she is| +08::01::2022 04:33:34|time for the ::u:: SEX| +08::01::2022 04:33:34|GOD I FUCKING WISH| +08::01::2022 04:33:35|then they realize they no sign paper| +08::01::2022 04:33:35|EWD +08::01::2022 04:33:35|>anzu will never give you a hug| +08::01::2022 04:33:35|ute +08::01::2022 04:33:36|LEG LOCKED| +08::01::2022 04:33:37|God, I wish that were me| +08::01::2022 04:33:37|the shool has like 10 more minutes| +08::01::2022 04:33:37|I wish I was Miho| +08::01::2022 04:33:38|OHHHHHH +08::01::2022 04:33:38|MATING PRESS ANZU| +08::01::2022 04:33:40|>school won't shut down....... yeah about that| +08::01::2022 04:33:42|wip +08::01::2022 04:33:43|>anzu will never hug you like that Why even live?| +08::01::2022 04:33:43|GOD I WISH| +08::01::2022 04:33:44|CORRECT THE RECORD| +08::01::2022 04:33:45|i just want to sex anzu| +08::01::2022 04:33:45|ELET +08::01::2022 04:33:48|Anu coping a feel of Miho's big futa cock| +08::01::2022 04:33:48|BASED SODOKO| +08::01::2022 04:33:49|ORRUPTION +08::01::2022 04:33:50|AWAKEN MY MEXT CHADS| +08::01::2022 04:33:50|ODOKO +08::01::2022 04:33:51|ELETED +08::01::2022 04:33:51|ORRUPTION +08::01::2022 04:33:51|I WANT TO BE HUGGED BY ANZU| +08::01::2022 04:33:51|that's against the rules sodoko| +08::01::2022 04:33:51|ELETED +08::01::2022 04:33:53|yeeeesssss lesss gooo sodoko| +08::01::2022 04:33:53|incoming karina-bomb| +08::01::2022 04:33:54|ute +08::01::2022 04:33:54|CUTE MANKO| +08::01::2022 04:33:54|CLEAN SLATE| +08::01::2022 04:33:55|MAKO X SODOKO| +08::01::2022 04:33:55|CORRUPTION 100%| +08::01::2022 04:33:55|OOOOOOOOH +08::01::2022 04:33:55|Jewish lies| +08::01::2022 04:33:55|ELETED +08::01::2022 04:33:56|FUN IS BACK ON THE MENU BOYSS| +08::01::2022 04:33:56|>251 late arrivals| +08::01::2022 04:33:57| おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお +08::01::2022 04:33:57|ODOKO +08::01::2022 04:33:58|ORRUPTION +08::01::2022 04:33:58|>tablet attached to a clipboard| +08::01::2022 04:33:58|RECORD STATUS: CORRECTED| +08::01::2022 04:33:58|ENTER MEXT CHAD!| +08::01::2022 04:33:59|SODOKO A CUTE| +08::01::2022 04:33:59|ODOKOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:33:59|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:33:59|It's time for the Sayori boyfriends| +08::01::2022 04:34:00|tangible autism| +08::01::2022 04:34:00|UUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOHHHH +08::01::2022 04:34:00|AGGU +08::01::2022 04:34:00|o: +08::01::2022 04:34:00|SODOKO | +08::01::2022 04:34:00|UTE +08::01::2022 04:34:01|The Party controls the past| +08::01::2022 04:34:01|) +08::01::2022 04:34:01|RIGATO +08::01::2022 04:34:02|based sodoko| +08::01::2022 04:34:03|SODOMY FOR SODOKO| +08::01::2022 04:34:03|OGKODKOGDKODKOKO +08::01::2022 04:34:04|ORRUPTION +08::01::2022 04:34:05|I want to hug Sodoko| +08::01::2022 04:34:05|MakoxSadoko confirmed| +08::01::2022 04:34:05|ALL NIGHT MAKO SODOKO SEX| +08::01::2022 04:34:08|ALPHA WAVES| +08::01::2022 04:34:08|UUOOOHHH +08::01::2022 04:34:08|>gaymer shake| +08::01::2022 04:34:09|anbatte +08::01::2022 04:34:12|ODOMYKO +08::01::2022 04:34:12|ZUSA +08::01::2022 04:34:12|EI EI O| +08::01::2022 04:34:13|>corruption MEXT GUY WAS RIGHT ALL ALONG| +08::01::2022 04:34:17|SODOKO WONT LET HER GET HUGGED| +08::01::2022 04:34:17|SDOMIZE SADOKO| +08::01::2022 04:34:17|AH shit i actually teared up| +08::01::2022 04:34:18|HOSHINO CHAD WYA| +08::01::2022 04:34:19|EI EI OOOOH| +08::01::2022 04:34:20|A A O| +08::01::2022 04:34:20|A A O| +08::01::2022 04:34:20|EI EI OU| +08::01::2022 04:34:21|A A O| +08::01::2022 04:34:22|thats it| +08::01::2022 04:34:23|A A O| +08::01::2022 04:34:23|_; +08::01::2022 04:34:24|o:: +08::01::2022 04:34:24|AO +08::01::2022 04:34:26|LEOPON MVP| +08::01::2022 04:34:27|EI, EI, OOOOO| +08::01::2022 04:34:27|::a:: ::a:: ::o::| +08::01::2022 04:34:28|nee-chan! +08::01::2022 04:34:29|HAHA YOU FUCKING BITCH YOU LOST| +08::01::2022 04:34:29|neechan +08::01::2022 04:34:29|momo-chan babu| +08::01::2022 04:34:32|AHO +08::01::2022 04:34:34|AHO +08::01::2022 04:34:35|Maho is so sexy| +08::01::2022 04:34:35|ino +08::01::2022 04:34:35|hortie +08::01::2022 04:34:35|Cute Maho| +08::01::2022 04:34:36|I love my wife Maho!| +08::01::2022 04:34:36|They saved the school right?| +08::01::2022 04:34:37|u::::u::::u:: +08::01::2022 04:34:37|you're dead to me miho| +08::01::2022 04:34:38|::a:: ::a:: ::o::!| +08::01::2022 04:34:38|SEXIEST GUPPIE| +08::01::2022 04:34:38|medetou +08::01::2022 04:34:39|RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRIKA +08::01::2022 04:34:40|AAHOoo~ +08::01::2022 04:34:41|::a:: ::a:: ::o::!| +08::01::2022 04:34:41|CUTE ONEESAN| +08::01::2022 04:34:41|ANPAI +08::01::2022 04:34:42|ANPAI +08::01::2022 04:34:43|ANPAI +08::01::2022 04:34:43|aho +08::01::2022 04:34:44|INO +08::01::2022 04:34:45|7 +08::01::2022 04:34:45|who has bigger tits| +08::01::2022 04:34:45|aho....... +08::01::2022 04:34:46|) +08::01::2022 04:34:46|LOVE MAHO COOLEST GUPPIE| +08::01::2022 04:34:47|ANPAI +08::01::2022 04:34:47|maho > miho| +08::01::2022 04:34:47|So sweet! ;_;| +08::01::2022 04:34:47|CUM PIE| +08::01::2022 04:34:49|Sunset kino| +08::01::2022 04:34:49|HANDSHAKE BOYS WE WON| +08::01::2022 04:34:49|EWD +08::01::2022 04:34:50|NCEST +08::01::2022 04:34:50|EW +08::01::2022 04:34:51|AHO +08::01::2022 04:34:52|we made it mihobros...| +08::01::2022 04:34:52|I NEED cock maho| +08::01::2022 04:34:53|ANPAI +08::01::2022 04:34:53|INCEST +08::01::2022 04:34:54|_______; +08::01::2022 04:34:54|ALL SMILES :)| +08::01::2022 04:34:55|maho is a breast demon| +08::01::2022 04:34:55|alls well that ends well right| +08::01::2022 04:34:55|_;7 +08::01::2022 04:34:56|after this maho vigriously flicked the bean to miho's old panties| +08::01::2022 04:34:56|INO +08::01::2022 04:34:58|MAHO WILL BE HIT BY HER MOTHER| +08::01::2022 04:34:58|CAN I GET RID OF MY CARBON COATED GIANT SHIT LOG HOGGING MY BUTTHOLE NOW| +08::01::2022 04:34:58|INO +08::01::2022 04:34:59|Maho is bigger| +08::01::2022 04:34:59|maho pee| +08::01::2022 04:34:59|Sisterly love| +08::01::2022 04:34:59|7 +08::01::2022 04:34:59|INO +08::01::2022 04:35:00|rikabros... +08::01::2022 04:35:00|The Itachi of the Nishizumi...| +08::01::2022 04:35:02|INO +08::01::2022 04:35:02|es +08::01::2022 04:35:04|but they both have cock| +08::01::2022 04:35:04|Then they had sex| +08::01::2022 04:35:05|FUTAxFUTA BATTLE| +08::01::2022 04:35:07|God I love this series....| +08::01::2022 04:35:10|NOOO +08::01::2022 04:35:10|MOTTO SENSHADO!| +08::01::2022 04:35:12|my own panzerfahren| +08::01::2022 04:35:13|The real friends were the sisters who loved us along the way| +08::01::2022 04:35:13|INO +08::01::2022 04:35:13|UTE +08::01::2022 04:35:15|after this maho was sent to the concentration camps| +08::01::2022 04:35:18|SEX SEX SEX| +08::01::2022 04:35:19|INO +08::01::2022 04:35:20|lol yeah right scrub| +08::01::2022 04:35:20|My Own Senshado (tm)| +08::01::2022 04:35:20|WATASHI NO SENSHADO| +08::01::2022 04:35:20|ope +08::01::2022 04:35:21|CUTE WANI| +08::01::2022 04:35:22|COPE SEETHE AND DILATE ERIKA| +08::01::2022 04:35:22|) +08::01::2022 04:35:22|10::10 ign| +08::01::2022 04:35:23|OUL +08::01::2022 04:35:23|What's her senshado though| +08::01::2022 04:35:23|Erika +08::01::2022 04:35:24|experiencing the grinning like a retard effect| +08::01::2022 04:35:24|SHUT UP ERIKA| +08::01::2022 04:35:24|ST +08::01::2022 04:35:25|DUMB WANI| +08::01::2022 04:35:25|INOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:35:26|') +08::01::2022 04:35:26|MEDETOU +08::01::2022 04:35:26|WAVE YOUR FLAAAAAAAG| +08::01::2022 04:35:26|CUTE ERIKA| +08::01::2022 04:35:26|>loses next time| +08::01::2022 04:35:28|>I found my own Girls und Panzer| +08::01::2022 04:35:28|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:35:28|WANI COPE| +08::01::2022 04:35:29|ANZAI +08::01::2022 04:35:29|INOOOOOOO +08::01::2022 04:35:29|>next time| +08::01::2022 04:35:30|hana has perfect legs| +08::01::2022 04:35:30|ENNO +08::01::2022 04:35:31|ANZAIIIIII +08::01::2022 04:35:31|STUGBROS WE WON| +08::01::2022 04:35:32|INO +08::01::2022 04:35:33|ANZAI +08::01::2022 04:35:33|RAISE YOUR FLAG| +08::01::2022 04:35:33|8888888888888888888888888888888888888888888888888888888 +08::01::2022 04:35:33|INOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:35:35|MEDETOU +08::01::2022 04:35:36|Ribbon Warrior read along next| +08::01::2022 04:35:36|MEDETO +08::01::2022 04:35:38|THANK YOU GUPPERS FROM SAVING ME FROM SUICIDE| +08::01::2022 04:35:38|ARASHOOOOOO +08::01::2022 04:35:38|medetou +08::01::2022 04:35:39|PQR +08::01::2022 04:35:39|clap] +08::01::2022 04:35:39|medetou +08::01::2022 04:35:40|medetou +08::01::2022 04:35:40|ARASHO +08::01::2022 04:35:40|CONGRATULATION 88888888888888888888888| +08::01::2022 04:35:40|medetou +08::01::2022 04:35:41|ONGRATULATIONS +08::01::2022 04:35:41|ongraturations +08::01::2022 04:35:41|8888888888888888888888888888888888888 +08::01::2022 04:35:41|I've done it, I've truly become Girls und Panzer| +08::01::2022 04:35:41|ERIKA STOLE MIHO'S SENSHADOU| +08::01::2022 04:35:42|ONGRATULATIONS +08::01::2022 04:35:42|ONGRATULATIONS +08::01::2022 04:35:42|MEDETOU +08::01::2022 04:35:42|JOUUUUUUUU +08::01::2022 04:35:43|HORROR SHOW| +08::01::2022 04:35:43|888888888888888 +08::01::2022 04:35:44|end of gup| +08::01::2022 04:35:45|ucebros........ +08::01::2022 04:35:45|olleybutts +08::01::2022 04:35:46|UMIPE +08::01::2022 04:35:46|ANZAI +08::01::2022 04:35:46|MEDETOU +08::01::2022 04:35:46|8888888888888888888888888888888888888888888888888888 +08::01::2022 04:35:46|**CLAP* CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* | +08::01::2022 04:35:47|ONGRATURATION +08::01::2022 04:35:47|MEDETOU +08::01::2022 04:35:47|ONGURADURATIONS +08::01::2022 04:35:47|88888888888888888888888888 +08::01::2022 04:35:47|ONGRATS +08::01::2022 04:35:48|JOOOOOOOOOOOOOOOUUUUUUUUUUU +08::01::2022 04:35:48|HOROSHO +08::01::2022 04:35:48|they did it| +08::01::2022 04:35:48|8 8 8| +08::01::2022 04:35:48|WAY TO Go| +08::01::2022 04:35:49|'LADY +08::01::2022 04:35:49|888888888888888888888888888888888888888 +08::01::2022 04:35:49|88888888888888 +08::01::2022 04:35:49|ONGRATULATIONS +08::01::2022 04:35:49|medateou +08::01::2022 04:35:50|SHIHO A SHIT| +08::01::2022 04:35:50|CLAP* +08::01::2022 04:35:52|MEDETOU +08::01::2022 04:35:53|VCE... +08::01::2022 04:35:53|MEDETOU +08::01::2022 04:35:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:35:54|we truly are, girls und panzer| +08::01::2022 04:35:54|DEATH TO MERCEDES, DEATH TO FIAMG| +08::01::2022 04:35:54|OMEDETAI NA| +08::01::2022 04:35:55|8888888 +08::01::2022 04:35:55|ANGRY MOM| +08::01::2022 04:35:55|VCE +08::01::2022 04:35:55|I stood up and clapped| +08::01::2022 04:35:55|FUCK SHIHO DUMB BITCH| +08::01::2022 04:35:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:35:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:35:57|8888888888888888 +08::01::2022 04:35:57|thanks mom| +08::01::2022 04:35:57|NOT BAD, GUPPERS| +08::01::2022 04:35:57|OM +08::01::2022 04:35:57|8 8 8| +08::01::2022 04:35:57|NAKADASHI SHIO| +08::01::2022 04:35:57|LAPPU +08::01::2022 04:35:57|OMMY +08::01::2022 04:35:57|8 8 8 8| +08::01::2022 04:35:57|8 8 8 8 8| +08::01::2022 04:35:58|ndisowned +08::01::2022 04:35:58|TORPEDO TITTIES| +08::01::2022 04:35:59|Maybe the real senshadou was the friends we made along the way| +08::01::2022 04:35:59|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 04:35:59|8888888 +08::01::2022 04:35:59|oh boy cant wait for 4 more hours of movies| +08::01::2022 04:35:59|The anime that saved ::a::| +08::01::2022 04:35:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:00|Evangelion reference?| +08::01::2022 04:36:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:00|UCE +08::01::2022 04:36:00|UCE +08::01::2022 04:36:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:01|eething +08::01::2022 04:36:01|UCE +08::01::2022 04:36:02|clap* +08::01::2022 04:36:02|VCE +08::01::2022 04:36:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:02|VCE +08::01::2022 04:36:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:02|UCE +08::01::2022 04:36:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:03|all those burning bridges that have fallen after meee| +08::01::2022 04:36:03|Bravo DVCE| +08::01::2022 04:36:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:03|-DUCE +08::01::2022 04:36:03|VCE +08::01::2022 04:36:04|NTER +08::01::2022 04:36:04|DUCE DUCE DUCE| +08::01::2022 04:36:04|VCE +08::01::2022 04:36:04|haha italians| +08::01::2022 04:36:04|DUCE who?| +08::01::2022 04:36:05|VCE +08::01::2022 04:36:05|DVCE DVCE DVCE DVCE | +08::01::2022 04:36:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:05|UCE +08::01::2022 04:36:05|DVCE BAKA| +08::01::2022 04:36:05|UCE +08::01::2022 04:36:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:06|ENTER ENETER| +08::01::2022 04:36:06|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 04:36:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:06|ENTER ENTER MISSION| +08::01::2022 04:36:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:06|OVER +08::01::2022 04:36:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:07|VCEBROS... +08::01::2022 04:36:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:07|dumb italians| +08::01::2022 04:36:07|NTER +08::01::2022 04:36:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:07|CE +08::01::2022 04:36:08|ENTER ENTER MISSION| +08::01::2022 04:36:08|UMBASS +08::01::2022 04:36:08|ATECE +08::01::2022 04:36:09|ENTER ENTER| +08::01::2022 04:36:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:09|IT WAS ALL A DREAM| +08::01::2022 04:36:09|ek +08::01::2022 04:36:10|ENTAH ENTAH MISSION| +08::01::2022 04:36:10|EK +08::01::2022 04:36:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:10|ENTER ENTER MISSION| +08::01::2022 04:36:11|ucebros.... +08::01::2022 04:36:11|ENTA ENTA MISSION| +08::01::2022 04:36:11|ENTAAAAAAAAAAAAAAAAAAAAAAAAAH ENTAHHHHHHHH MISHION| +08::01::2022 04:36:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:11|DORK DVCE| +08::01::2022 04:36:12|ENTAH ENTAH MISSION| +08::01::2022 04:36:12|VCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 04:36:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:12|UCE +08::01::2022 04:36:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:13| DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE D| +08::01::2022 04:36:14|AITED +08::01::2022 04:36:15|DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +08::01::2022 04:36:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 04:36:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:16|ENTAH ENTAH| +08::01::2022 04:36:16|PANZER VOR| +08::01::2022 04:36:16|ENTA ENTA MISSION| +08::01::2022 04:36:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:17|your DVCEs are late| +08::01::2022 04:36:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:17|ENTAH ENTAH MISSION| +08::01::2022 04:36:17|eeeeeeeeeentah +08::01::2022 04:36:19|PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 04:36:19|8 8 8 8 8| +08::01::2022 04:36:19|say something, bitch| +08::01::2022 04:36:20|VUCE +08::01::2022 04:36:21|UTISM +08::01::2022 04:36:22|Dumb Dvce| +08::01::2022 04:36:22|PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 04:36:22|PANZER VOR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 04:36:22|PANZER VOR| +08::01::2022 04:36:24|PANZER VOR| +08::01::2022 04:36:24|PANZER VOR| +08::01::2022 04:36:24|Mission has been Entered| +08::01::2022 04:36:24|PANZER VOR!| +08::01::2022 04:36:24|PANZER VOR| +08::01::2022 04:36:24|Holy shit that chick is tall | +08::01::2022 04:36:24|PANZER VORRR| +08::01::2022 04:36:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 04:36:25|PANZER VOR| +08::01::2022 04:36:25|PANZER VOR| +08::01::2022 04:36:25|PANZER VOR| +08::01::2022 04:36:26|PANZER VOR| +08::01::2022 04:36:26|PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +08::01::2022 04:36:26|PANZER VORE| +08::01::2022 04:36:26|PANZER VOR| +08::01::2022 04:36:26|DVCE DVCE DVCE| +08::01::2022 04:36:26|PANZA VOR| +08::01::2022 04:36:27|PANZER VOR| +08::01::2022 04:36:27|FOR WHAT| +08::01::2022 04:36:27|GOOD THING SCHOOL WONT CLOSE AND WE DON'T NEED A MOVIE| +08::01::2022 04:36:27|PANZER VOR| +08::01::2022 04:36:27|PANTSU FOR| +08::01::2022 04:36:27|PANTSAR FOR| +08::01::2022 04:36:27|PANZER VOR| +08::01::2022 04:36:27|Look at that dork| +08::01::2022 04:36:28|PANZER VOR| +08::01::2022 04:36:28|PANZER VOR!| +08::01::2022 04:36:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 04:36:28|PANTS ARE FOR!| +08::01::2022 04:36:28|Happy ending right?| +08::01::2022 04:36:28|dork face| +08::01::2022 04:36:29|PANZER VOR| +08::01::2022 04:36:29|panzer vor!| +08::01::2022 04:36:29|PANZER VOR| +08::01::2022 04:36:29|PANZER VOR| +08::01::2022 04:36:29|all those burning bridges that have fallen after meee| +08::01::2022 04:36:30|PANSA VOA| +08::01::2022 04:36:30|panzer VORE| +08::01::2022 04:36:31|PANZER VOR| +08::01::2022 04:36:31|OOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:36:31|ENTER MISSION~~~~~~~~~~| +08::01::2022 04:36:32|ENTA ENTA MISSION| +08::01::2022 04:36:32|PANZER VOR| +08::01::2022 04:36:32|PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +08::01::2022 04:36:32|TAEKO LOVE| +08::01::2022 04:36:33|orks +08::01::2022 04:36:33|PANZER VOOOOORRRR| +08::01::2022 04:36:34|PANZER VOR| +08::01::2022 04:36:34|>we never experienced the ED| +08::01::2022 04:36:34|INO +08::01::2022 04:36:35|PANZER VOR| +08::01::2022 04:36:35|PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 04:36:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 04:36:36|Panther vore| +08::01::2022 04:36:36|VICTORY PARADE| +08::01::2022 04:36:37|SHOURI, MINNA!| +08::01::2022 04:36:38|PANZER VOR| +08::01::2022 04:36:38|ENTAH ENTAH MISSION HAYAKU| +08::01::2022 04:36:38|PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +08::01::2022 04:36:39|ROLL CREDITS| +08::01::2022 04:36:39|SHE SAID THE THING| +08::01::2022 04:36:40|PANZER VOR| +08::01::2022 04:36:41|play the song lesss goooo| +08::01::2022 04:36:41|bunch of fucking nerds| +08::01::2022 04:36:44|Mission status: Entered| +08::01::2022 04:36:45|I H AVE BEEN WAITING ALL NIGHT FOR THIS | +08::01::2022 04:36:46|FUCKING KINOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 04:36:46|IM GOING TO CUM| +08::01::2022 04:36:47|>tanks are suddenly good to go| +08::01::2022 04:36:47|NOT LIKE THIS| +08::01::2022 04:36:47|INOOOO +08::01::2022 04:36:48|7 +08::01::2022 04:36:49|TIME FOR A FUCKING INTER INTER MISSION| +08::01::2022 04:36:49|uffering +08::01::2022 04:36:51|ENTAAH ENTAAH MIHO| +08::01::2022 04:36:51|ino +08::01::2022 04:36:51|Nothing wrong will happen next right?| +08::01::2022 04:36:52|AEKO +08::01::2022 04:36:52|finally, the first episode is over| +08::01::2022 04:36:52|APPY +08::01::2022 04:36:52|So what is left, besides the Das Finales?| +08::01::2022 04:36:55|APPY +08::01::2022 04:36:56|:: +08::01::2022 04:36:57|Mission Completed | +08::01::2022 04:36:57|APPI +08::01::2022 04:36:58|_; +08::01::2022 04:36:58|im not gonna make it bros im wasted af already| +08::01::2022 04:36:59|BRAVO NOLAN| +08::01::2022 04:36:59|ORIKO<3 +08::01::2022 04:36:59|jamin jamin jamin| +08::01::2022 04:37:00|BOTH EYES OPEN| +08::01::2022 04:37:00|SUICIDE STATUS: AVERTED| +08::01::2022 04:37:02|MISSION COMPLETE| +08::01::2022 04:37:02|I LOVE BLASTING THIS SHIT WOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 04:37:02|I JOE YOU JOE| +08::01::2022 04:37:04|>tfw joined late at the pravada match| +08::01::2022 04:37:04|dude we got like 4 films| +08::01::2022 04:37:07|JUST GET MORE WASTED| +08::01::2022 04:37:07|The film anon, the film| +08::01::2022 04:37:07|ENTAH ENTAH MISSION| +08::01::2022 04:37:09|ENTER ENTER MISSION| +08::01::2022 04:37:09|ENTER ENTER MISSION | +08::01::2022 04:37:09|ENTAH ENTAH MISSION| +08::01::2022 04:37:09|ENTER ENTER| +08::01::2022 04:37:10|NTAA +08::01::2022 04:37:10|Mission entered| +08::01::2022 04:37:10|NOOOOOOOOOOOOOOOOOOOO BUFFERING| +08::01::2022 04:37:10|ENTAH ENTAH MISSION| +08::01::2022 04:37:10|ENTA ENTA MISSION| +08::01::2022 04:37:11|ENTAA ENTAAA| +08::01::2022 04:37:12|ENTAH ENTAH MISSION| +08::01::2022 04:37:13|AYAKU +08::01::2022 04:37:14|we are more than half way i think| +08::01::2022 04:37:14|THE WASTED GOES AROUND| +08::01::2022 04:37:15|ENTAH ENTAH MISSION| +08::01::2022 04:37:15|ISSSION +08::01::2022 04:37:15|ENTER ENTER MISSION| +08::01::2022 04:37:16|ENTER BUFFER| +08::01::2022 04:37:16|ENTA ENTA MISSIOn| +08::01::2022 04:37:17|NO ONE MOVES, IT's PENIS INSPECTION INTERMISSION| +08::01::2022 04:37:17|NTER +08::01::2022 04:37:18|SSHOUKENMEI +08::01::2022 04:37:18|ENTER ENTER MISSION| +08::01::2022 04:37:18|ENTAH ENTAH MISHUN| +08::01::2022 04:37:18|MI SHION| +08::01::2022 04:37:19|ENTAH ENTAH MIHO| +08::01::2022 04:37:19|ENTAH ENTA MISSION| +08::01::2022 04:37:19|ENTA ENTA MISSIHO| +08::01::2022 04:37:20|IKAKEYOUNE +08::01::2022 04:37:22|Der Film, 3 Das Finales| +08::01::2022 04:37:22|WHY NOW GALAX ANON| +08::01::2022 04:37:22|ENTER ENTER MISSIOOOOOOOOOOOOOOOOONNN| +08::01::2022 04:37:24|ENTER ENTER MISSSION| +08::01::2022 04:37:25|ENTA ENTA MISSHION| +08::01::2022 04:37:25|ENTER ENTER| +08::01::2022 04:37:25|BUFFER BUFFER MISSION| +08::01::2022 04:37:25|AYAKU +08::01::2022 04:37:26|ENTER ENTER MISSION| +08::01::2022 04:37:27|ENTAH ENTAH| +08::01::2022 04:37:27|BUFFERING HERE CMOONNNNNN| +08::01::2022 04:37:27|ENTA ENTA MISSHION| +08::01::2022 04:37:28|ENTAH ENTAH MISSION| +08::01::2022 04:37:28|SHIKARA IPPAI| +08::01::2022 04:37:28|ENTER ENTER BUFFER| +08::01::2022 04:37:28|>stream lags for the chorus | +08::01::2022 04:37:30|ENTAA MISSION| +08::01::2022 04:37:33|>tfw buffering| +08::01::2022 04:37:34|UFFER +08::01::2022 04:37:34|Bro we aren't even half way and your fucked| +08::01::2022 04:37:34|ENTER ENTER MISSION| +08::01::2022 04:37:35|BUFFER BUFFER MISSION| +08::01::2022 04:37:36|ENTER ENTER MISSION| +08::01::2022 04:37:36|GET IT GRANDMA| +08::01::2022 04:37:36|ENTER ENTER MISSION| +08::01::2022 04:37:37|entah entah misssion| +08::01::2022 04:37:37|Cute Granny| +08::01::2022 04:37:37|CUTE FLOOF| +08::01::2022 04:37:38|7 +08::01::2022 04:37:38|an +08::01::2022 04:37:38|ww +08::01::2022 04:37:38|ENTAA ENTAA MISSHON| +08::01::2022 04:37:41|ENTER ENTER BUFFERING| +08::01::2022 04:37:41|i hope duce gets a malboro sponsorship next season| +08::01::2022 04:37:42|based granny| +08::01::2022 04:37:43|ENTER ENTER MISSION!| +08::01::2022 04:37:43|AFFUA +08::01::2022 04:37:44|CUTE DANCE| +08::01::2022 04:37:44|TF +08::01::2022 04:37:44|ENTER ENTER BUFFER| +08::01::2022 04:37:44|Das Film should be next no?| +08::01::2022 04:37:44|ufferoni +08::01::2022 04:37:45|YOU HAD ONE JOB| +08::01::2022 04:37:45|DROP THE VIDEO | +08::01::2022 04:37:45|RAMA +08::01::2022 04:37:46|enter buffer| +08::01::2022 04:37:47|YAAAAAA GRANDMA| +08::01::2022 04:37:47|>always buffering during iconic moments| +08::01::2022 04:37:48|IRAIIIIIIII +08::01::2022 04:37:48|grandma got tha swagger still| +08::01::2022 04:37:48|YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW | +08::01::2022 04:37:52|EWIND +08::01::2022 04:37:52|ufferoni +08::01::2022 04:37:52|MOTTO SENSHADO!| +08::01::2022 04:37:53|bath scene| +08::01::2022 04:37:53|Saoris old men lol| +08::01::2022 04:37:56|Still got a quartur of rum left, lets make it a blast| +08::01::2022 04:37:57| \o:: \o:: \o:: \o:: \o::| +08::01::2022 04:37:57|PANZER VOR| +08::01::2022 04:37:59|AND THEN THEY LIVED HAPPILY EVER AFTER| +08::01::2022 04:38:01|whats next?| +08::01::2022 04:38:03|o:: +08::01::2022 04:38:03|bath time| +08::01::2022 04:38:04|in universe old men jack off to shenshado on tv| +08::01::2022 04:38:05|o:: +08::01::2022 04:38:05|Why don't we fuck Fluff's brains out?| +08::01::2022 04:38:06|OVA next| +08::01::2022 04:38:06|the movie?| +08::01::2022 04:38:07|\o:: \o:: \o:: \o:: \o:: \o:: \o:: \o::| +08::01::2022 04:38:08|IT'S TIME| +08::01::2022 04:38:08|>saori attracts old men| +08::01::2022 04:38:08|WIN OR LOSE WE BOOZE| +08::01::2022 04:38:09|Der Film is next| +08::01::2022 04:38:10|:: +08::01::2022 04:38:11|The end| +08::01::2022 04:38:13|it's over| +08::01::2022 04:38:15|INO +08::01::2022 04:38:15|ENTER DER FILM| +08::01::2022 04:38:16|S1 OVER| +08::01::2022 04:38:16|THANK GOD THERE ARE NO MORE CONFLICTS AFTER THIS| +08::01::2022 04:38:17|IT'S OVER| +08::01::2022 04:38:18|inb4 no masturbation break| +08::01::2022 04:38:18|The ship is saved| +08::01::2022 04:38:18|INTERMISSION BROS| +08::01::2022 04:38:20|INTERMISSION TIME| +08::01::2022 04:38:20|TRULY WE WERE THE| +08::01::2022 04:38:21|OVA NEXT| +08::01::2022 04:38:21|PISS BREAK| +08::01::2022 04:38:22|wari +08::01::2022 04:38:23|REFILL NOW| +08::01::2022 04:38:23|And then the ship sunk| +08::01::2022 04:38:23|I CAN'T BELIEVE GUP IS FUCKING OVER| +08::01::2022 04:38:24|THE SCHOOL REMAINS OPEN THE END| +08::01::2022 04:38:24|will the das finale 3 on? or till 2| +08::01::2022 04:38:25|And that's all the guppie content we ever got| +08::01::2022 04:38:25|I NEED INTERMISSION| +08::01::2022 04:38:26|OVA before movie retards| +08::01::2022 04:38:26|TIME FOR MY BEAUTIFUL BAKA WIFE TO SHOW UP| +08::01::2022 04:38:26|piss break!| +08::01::2022 04:38:27|S2 now| +08::01::2022 04:38:28|its over for mext guy| +08::01::2022 04:38:28|how much cum can you fit in the fuel tank of a tiger 2?| +08::01::2022 04:38:29|IS THIS A PISS BREAK?| +08::01::2022 04:38:29|how long is intermission?| +08::01::2022 04:38:29|REFILS REFILLS REFILLS| +08::01::2022 04:38:29|bros I'm so tired I don't know if I can manage the film too| +08::01::2022 04:38:30|Where's Banquet War?| +08::01::2022 04:38:31|Its been so long i can finally piss| +08::01::2022 04:38:31|Have a sweel interMISSION, everyone| +08::01::2022 04:38:32|ENTAAA ENTAAA INTERMISSON| +08::01::2022 04:38:32|TIME TO GET RID OF MY CARBON COATED MASSIVE SHIT LOG| +08::01::2022 04:38:32|obert?? +08::01::2022 04:38:32|anyone who leaves to piss will be shot| +08::01::2022 04:38:32|EMPTY YOUR PISS BOTTLES| +08::01::2022 04:38:33|Piss bucket emptying break| +08::01::2022 04:38:33|momo get ur grades together u bitch| +08::01::2022 04:38:34|Awesome that no one tries to close their school| +08::01::2022 04:38:34|GATA GOTTO CHU CHU| +08::01::2022 04:38:35|see you when the first movie airs| +08::01::2022 04:38:37|INTER INTER MISSION| +08::01::2022 04:38:39|INTER INTER MISSION| +08::01::2022 04:38:40|Intermission +08::01::2022 04:38:42|inermissson +08::01::2022 04:38:44|WILL ORARI WIN THE NEXT BATTLE FOUND OUT NEXT TIME ON DRAGON BALL Z| +08::01::2022 04:38:44|SMOKE EM IF YOU GOT EM| +08::01::2022 04:38:45|THANKS GALAX| +08::01::2022 04:38:46|how long is intermission?????| +08::01::2022 04:38:46|ntermission +08::01::2022 04:38:47|Are you guys pussies| +08::01::2022 04:38:48|Time to empty the poop bottle| +08::01::2022 04:38:49|5 minute sleep lets go| +08::01::2022 04:38:52|FEGELEIN | +08::01::2022 04:38:54|how long is the intermission| +08::01::2022 04:38:54|Can't believe I'm still here at 4:30 AM| +08::01::2022 04:38:54|time to PISS| +08::01::2022 04:38:56|need more panzer chocolate| +08::01::2022 04:38:58|Just got my drinks out, at least entertain me for the duration of this intermission fuckers| +08::01::2022 04:39:00|5 mins slepp? SUSSY| +08::01::2022 04:39:00|HOW LONG HOW LONG HOW LONG HOW LONG HOW LONG| +08::01::2022 04:39:04|>NO INTERMISSION SONG| +08::01::2022 04:39:04|How short it short?| +08::01::2022 04:39:04|INTER INTERMISSION| +08::01::2022 04:39:05|Piss break| +08::01::2022 04:39:05|PISS TIME | +08::01::2022 04:39:11|2 YEARS| +08::01::2022 04:39:12|Kono bangumi wa goran no suponsaa no teikyou de okurishimasu!| +08::01::2022 04:39:12|robert pls| +08::01::2022 04:39:13|10 mins| +08::01::2022 04:39:14|-thanks +08::01::2022 04:39:16|sex with nona| +08::01::2022 04:39:17|thank you editor-san| +08::01::2022 04:39:17|10 minutes to take a shit lets goooooooooooooo| +08::01::2022 04:39:22|WHERE INTERMISSION SONGGGGGGG????????????????????????????| +08::01::2022 04:39:23|Steiner's forces will relieve Maho in the courtyard duel... then we can save Berlin| +08::01::2022 04:39:28|TIME TO PISS NONSTOP FOR 10 MINUTES| +08::01::2022 04:39:29|Time to time of Katyusha while pissing| +08::01::2022 04:39:29|Can't believe Renta Tsuji still hasn't fucked Anzu| +08::01::2022 04:39:29|KINO EDITION| +08::01::2022 04:39:31|I NEED TO CUM UOOOOOHHHHHHHHHH| +08::01::2022 04:39:31|inter mission music NOW!| +08::01::2022 04:39:31|TFW have to do shit from 3:00 to 4:00| +08::01::2022 04:39:35|UDE +08::01::2022 04:39:35|10 mins isnt enough to take shitSTOP BEING SUSSY| +08::01::2022 04:39:37|THIS ISNT ENOUGH FOR MY MASSIVE CARBON COATED SHIT LOG| +08::01::2022 04:39:37|who you calling a baka| +08::01::2022 04:39:38|dont leave me bros| +08::01::2022 04:39:42|post what you've been drinking tonight guys| +08::01::2022 04:39:43|PLAY PANZERLIED FOR 10 MINS| +08::01::2022 04:39:48|ater +08::01::2022 04:39:52|SPRITE ALL DAY LONG| +08::01::2022 04:39:53|asser +08::01::2022 04:39:54|27k worthless danmakus| +08::01::2022 04:39:56|I'm gonna sleep, thanks for the company St. Glorianachads| +08::01::2022 04:39:57|TL Note: Water means mizu| +08::01::2022 04:39:59|10 BAKA MINUTES| +08::01::2022 04:40:04|grapefuit juice, I'm saving myself for the wotos| +08::01::2022 04:40:13|10 minutes won't be enough to piss out what I drank| +08::01::2022 04:40:14|never watched wotos | +08::01::2022 04:40:15|SONG DOKO?| +08::01::2022 04:40:17|DRINK SEITOKAI ONSEN WATER AAAAAAAAAAAAAAAAAAAAA| +08::01::2022 04:40:17|I have "honey" aclohol but it's not good| +08::01::2022 04:40:23|is the woto show good?| +08::01::2022 04:40:29|Does it matters?| +08::01::2022 04:40:29|FAP BREAK, TIME FOR MAHO DOUJINS| +08::01::2022 04:40:31|shimada mika doko| +08::01::2022 04:40:32|es +08::01::2022 04:40:37|ok good| +08::01::2022 04:40:38|which doujins| +08::01::2022 04:40:42|mead is great with beer though| +08::01::2022 04:40:43|Chinpo yakuza miporin| +08::01::2022 04:40:44|snw is kino indeed| +08::01::2022 04:40:48|brew your own mead| +08::01::2022 04:40:49|Time to jack off to Mika while listening to Finnish Music| +08::01::2022 04:40:51|z +08::01::2022 04:40:52|fap break time| +08::01::2022 04:41:00|KAUAN | +08::01::2022 04:41:01|Shota impregnation sex with Maho!| +08::01::2022 04:41:21|Fapping to bunnies being trapped in the cold!| +08::01::2022 04:41:23|ttps:::::exhentai.org::g::2106075::f12f5eab42:: +08::01::2022 04:41:25|CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +08::01::2022 04:41:31|God gives his heaviest tanks to his tiniest girls| +08::01::2022 04:41:33|CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +08::01::2022 04:41:42|CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +08::01::2022 04:41:43|anpai~ +08::01::2022 04:41:45|Anon I can't click that hentai link| +08::01::2022 04:41:46|shut up| +08::01::2022 04:41:49|The tamara hosomi one is excelent| +08::01::2022 04:41:50|ttps:::::miho.lives.rent.free::in::ERIKAS-head.rtf +08::01::2022 04:41:57|TOTSUGEKIS NEXT| +08::01::2022 04:41:59|>quick fap break time| +08::01::2022 04:41:59|who needs hentai link fuck off| +08::01::2022 04:42:04|hi, i'd like to say i hate niggers, that's all thanks| +08::01::2022 04:42:06|sup nerds| +08::01::2022 04:42:07|post pics in chat| +08::01::2022 04:42:09|MY WIFE NISHI| +08::01::2022 04:42:16|HOW MANY HOURS LEFT? 5?| +08::01::2022 04:42:21|Anon-kun... just transcribe that link| +08::01::2022 04:42:22|Someone beat me to typing the n word| +08::01::2022 04:42:23|my wife tan Nishi| +08::01::2022 04:42:24|I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +08::01::2022 04:42:26|I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE | +08::01::2022 04:42:29|Don't use white text No one can read that shit| +08::01::2022 04:42:32|*TINK* *TINK* *TINK* GENTLEMEN, I HAVE AN ANNOUNCEMENT TO MAKE| +08::01::2022 04:42:33|bruh i need at least 30 mins to fap| +08::01::2022 04:42:34|I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE | +08::01::2022 04:42:46|fuck COVID19| +08::01::2022 04:42:46|::purple::sisters ww@| +08::01::2022 04:42:47|are we watching the finales after this| +08::01::2022 04:42:50|I need atleast 2 hrs of edging| +08::01::2022 04:42:56|AHEM, Niggers. That is all| +08::01::2022 04:42:56|Farming ::GuP:: threads for my folder | +08::01::2022 04:42:57|SOUTH CHINA SEA BELONGS TO CHINA| +08::01::2022 04:42:57|i need 3| +08::01::2022 04:42:57|you get 7 fap or no fap | +08::01::2022 04:42:58|nzu +08::01::2022 04:43:02|>he doesn't fap in 30 seconds| +08::01::2022 04:43:02|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 04:43:03|I HATE ThE ANTICRIST| +08::01::2022 04:43:03|yukari akiyama's tank course included?| +08::01::2022 04:43:04|DDDDDDD +08::01::2022 04:43:07|post your favorite gup doujins| +08::01::2022 04:43:07|no it fucking doesent| +08::01::2022 04:43:09|FUCK NIGGERS FUCK KIKES FUCK NIGGERS FUCK JANNIES AND FUCK DARJEELING| +08::01::2022 04:43:11|benis :DDDD| +08::01::2022 04:43:11|BASED GALAX| +08::01::2022 04:43:13|SENKAKU ISLANDS| +08::01::2022 04:43:15|THERE WE GO INTERMISSION MUSIC| +08::01::2022 04:43:16|Time to take a beer soaked shit| +08::01::2022 04:43:17|popping prescription painkillers with yukari| +08::01::2022 04:43:17|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 04:43:17|ulta +08::01::2022 04:43:17|not letting this nut go until the end of DF3 bros| +08::01::2022 04:43:18|D +08::01::2022 04:43:20|SEX WITH FINNS| +08::01::2022 04:43:20|RUSSIAN BROS DON'T LOOK| +08::01::2022 04:43:21|EBIN :DDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:43:21|INNNNNS +08::01::2022 04:43:24|FUG :DDDDDDDDDDD| +08::01::2022 04:43:24|ULDA +08::01::2022 04:43:26|FUG :DDDDDDDDDDDDDDDD| +08::01::2022 04:43:26|big +08::01::2022 04:43:26|imi +08::01::2022 04:43:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 04:43:29|DDDDDDDDD +08::01::2022 04:43:29|DDDDDDDDDDDDD +08::01::2022 04:43:30|NYET MOLOTOV| +08::01::2022 04:43:31|fug :DDDDDDDDDDDDDD| +08::01::2022 04:43:32|fug :DDDDDDDDDDDDDDDDD| +08::01::2022 04:43:33|OI VITTU SAATANA PERRRRRRRKELE| +08::01::2022 04:43:33|SUOMI PERKELE| +08::01::2022 04:43:33|DDDDDDDDDDDDDDDDDDD +08::01::2022 04:43:33|EBINNN :DDDDDDDDDDDDDDDDDDD| +08::01::2022 04:43:34|BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:43:34|Based music| +08::01::2022 04:43:34|ebin :DDD| +08::01::2022 04:43:36|BENIS :DDDDDDDDDDDDDDDD| +08::01::2022 04:43:37|mika tiddies :DDDDDD| +08::01::2022 04:43:39|MIGA BESD GUB :DDDDDD| +08::01::2022 04:43:40|Saving my nut for Alice OVA| +08::01::2022 04:43:41|BASED COMMIE KILLING FINNS| +08::01::2022 04:43:42|had to leave at maus part. missed the end. feels bad| +08::01::2022 04:43:43|FUGGG IDS FINN DIME :DDDDDDDDDDDDD| +08::01::2022 04:43:44|DDDDDDDDDDDDDDDDDDDDDDddddd +08::01::2022 04:43:45|Fuggggg :DDD| +08::01::2022 04:43:45|KAUAN ON KARSITTY| +08::01::2022 04:43:45|miga :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:43:46|its disustinglye finnish in here right now| +08::01::2022 04:43:48|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 04:43:49|ENIS +08::01::2022 04:43:49|oh fugg :D| +08::01::2022 04:43:51|SSCHIBBEN SNAB XDDDD| +08::01::2022 04:43:54|dulda :DDD| +08::01::2022 04:43:55|i wish i was finnish| +08::01::2022 04:43:56|Gandeke ::DDDDD| +08::01::2022 04:43:56|CHRISDIEEEEE :DDDDDdd| +08::01::2022 04:43:56|NJET MOLOTFF| +08::01::2022 04:43:56|benis :D| +08::01::2022 04:43:57|PERKELE :DDDDDDDDDDD| +08::01::2022 04:43:58|chrisdie susbension :DDDDDD| +08::01::2022 04:44:00|inna +08::01::2022 04:44:05|Niet Molotov| +08::01::2022 04:44:06|UOMI +08::01::2022 04:44:06|PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:44:07|SEKEJERVEN POLKAA :DDD| +08::01::2022 04:44:11|What episode are we on?| +08::01::2022 04:44:11|Jumalauta :DDDDDDD| +08::01::2022 04:44:14|Simo :DDDDDDDDDDDDDDDDD| +08::01::2022 04:44:15|UL-TA! +08::01::2022 04:44:21|Sergeant I lost my rifle :D| +08::01::2022 04:44:21|Bergel :DDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:44:22|show's over, movie time| +08::01::2022 04:44:24|>he came to the stream late| +08::01::2022 04:44:28|saunaklonkku with keizoku| +08::01::2022 04:44:30|BRUH WADDUP NIGGAS| +08::01::2022 04:44:32|Anyone make it through the whole stream| +08::01::2022 04:44:33|oh shid :DDDDD| +08::01::2022 04:44:36|maho is my wife btw| +08::01::2022 04:44:39|Yeah I did| +08::01::2022 04:44:47|5 minutes| +08::01::2022 04:44:48|lazy sex with mika| +08::01::2022 04:44:49|Ive had under 7 hours sleep across what is now 3 nights| +08::01::2022 04:44:49|youko is pretty cute| +08::01::2022 04:44:50|Thank you all for being here, Anons!| +08::01::2022 04:44:50|I want to go to SUOMI| +08::01::2022 04:44:56|FIVE MINUDS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:44:57|for me its mako| +08::01::2022 04:44:58|I'm Maho btw. (Miho 4eva)| +08::01::2022 04:45:01|Thankyou for being here anon| +08::01::2022 04:45:02|rip to all bros we lose on the way| +08::01::2022 04:45:03|fug :DDD just type this fast: https:::::exhentai.org::g::2106075::f12f5eab42::| +08::01::2022 04:45:13|*AHEM* flat anzu chest| +08::01::2022 04:45:14|nursing handjob from Hana| +08::01::2022 04:45:21|i ain't clickin dat shit nigga| +08::01::2022 04:45:24|SUOMALIANEN CUNNY| +08::01::2022 04:45:24|flowerjob +08::01::2022 04:45:34|sqeezing saori's tits| +08::01::2022 04:45:36|The sun is rising| +08::01::2022 04:45:37|tfw buffering| +08::01::2022 04:45:39|>use to read gup hentai >start watching the show >now feel too guilty to read gup hentai| +08::01::2022 04:45:42|you're a nigger if you write in yellow lol| +08::01::2022 04:45:49|I want to stick my dick into Hana's rose| +08::01::2022 04:45:50|red gang| +08::01::2022 04:45:51|can someone link the hentai where erika is tickled in a swimsuit| +08::01::2022 04:45:53|What color amI?| +08::01::2022 04:45:54|AYOOO HOLD UP| +08::01::2022 04:45:56|Playing Warhammer on Anzu's chest| +08::01::2022 04:45:57|PINK GANG 4 LYF| +08::01::2022 04:46:01|>read gup hentai >watch gup >now read more gup hentai| +08::01::2022 04:46:04|purple best color| +08::01::2022 04:46:06|EEEEEEEEEEEEIIIIIIIIIIIII WADDUP| +08::01::2022 04:46:07|Red supremacy| +08::01::2022 04:46:09|this ^| +08::01::2022 04:46:11|killing and consuming the flesh of momo kawashima| +08::01::2022 04:46:11|erkele +08::01::2022 04:46:13|I simply do not read yellow posts| +08::01::2022 04:46:13|pink +08::01::2022 04:46:15|I have never fapped to guppies and never will. They are for each other. I am the chad here.| +08::01::2022 04:46:15|LYAT +08::01::2022 04:46:18|i'm a white supremacist| +08::01::2022 04:46:18|ASVETALI +08::01::2022 04:46:21|yellow +08::01::2022 04:46:24|cunny bros....| +08::01::2022 04:46:24|this be lit asf doe fr fr ngl| +08::01::2022 04:46:25|>typing in green| +08::01::2022 04:46:25|ail +08::01::2022 04:46:26|based greenchad| +08::01::2022 04:46:27|HALF TIME FAP TIME| +08::01::2022 04:46:28|It's more of a magenta| +08::01::2022 04:46:30|best song btw| +08::01::2022 04:46:34|KRASNAYA ARIJA| +08::01::2022 04:46:34|Redfags can't see this | +08::01::2022 04:46:34|CYKA BLYAT| +08::01::2022 04:46:35|UUUUURRRRRRAAAAAAAAAAAAA +08::01::2022 04:46:35|ASTVITALI +08::01::2022 04:46:38|tetris +08::01::2022 04:46:39|Press R to report dissenters| +08::01::2022 04:46:39|RA +08::01::2022 04:46:41|umbass +08::01::2022 04:46:42|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:46:43|DAILY REMINDER TO LOVE YOUR STATION| +08::01::2022 04:46:43|who gives a shit about the distinction between purple and magenta| +08::01::2022 04:46:46|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:46:46|YKA +08::01::2022 04:46:47|paaaaaaaaaaaaaaaaaaaa +08::01::2022 04:46:48|unners... +08::01::2022 04:46:49|>he just needs 3 minutes to fap| +08::01::2022 04:46:52|PRAVDA BROS ARE TIME IS COMING| +08::01::2022 04:46:53|>TFW no Kyutusha daughterwife| +08::01::2022 04:46:57|CYKA BLYAT URAAAAAAAAAAAAAAAA CHEEKI BREEKI| +08::01::2022 04:47:00|>Not fapping for over a hour| +08::01::2022 04:47:01|crush capitalism!!| +08::01::2022 04:47:02|i sit on my fap throne for 20 minutes at least| +08::01::2022 04:47:03|CHEEKI BREEKI| +08::01::2022 04:47:03|damn female kid| +08::01::2022 04:47:09|im going to | +08::01::2022 04:47:09|>tfw no klara::nona harem| +08::01::2022 04:47:10|KOSMOS BLYAT| +08::01::2022 04:47:12|>ywn hear maho singing panzerlied or erika| +08::01::2022 04:47:12|>Tfw no buryat waifu| +08::01::2022 04:47:16|lawyer here you have permission to stream this?| +08::01::2022 04:47:17|Need rape correction!! !| +08::01::2022 04:47:19|>TFW can go for over 2 hours | +08::01::2022 04:47:22|TRAV TRAV U DOMA| +08::01::2022 04:47:23|invisible text| +08::01::2022 04:47:30|I wish I could have Erika as my waif| +08::01::2022 04:47:31|super lawyer here, you have my permission to stream| +08::01::2022 04:47:31|>ywn be shorter than nonna| +08::01::2022 04:47:32|lawyer here, he has permission| +08::01::2022 04:47:34|PROSHAI NAVEKI| +08::01::2022 04:47:35|We have an invisible thot here| +08::01::2022 04:47:37|Shit? Taken Beer? Grabbed Penis? In hand. Yep it's GuP stream time| +08::01::2022 04:47:40|I haven't had a good edging sesh in months| +08::01::2022 04:47:40|rape lawyers| +08::01::2022 04:47:41|I was hoping what is love duce or some other sick edits here tbh| +08::01::2022 04:47:45|CHOOSE ONE: NONNA OR MAHO| +08::01::2022 04:47:47|>tfw shorter than nonna by 1 cm| +08::01::2022 04:47:50|LARA +08::01::2022 04:47:50|aho +08::01::2022 04:47:50|ONNA +08::01::2022 04:47:51|onna +08::01::2022 04:47:52|onna +08::01::2022 04:47:54|cant rape me if i consent| +08::01::2022 04:47:54|onna +08::01::2022 04:47:56|maho everyday| +08::01::2022 04:47:56|onna +08::01::2022 04:47:57|Maho > Nonna| +08::01::2022 04:47:58|SEX WIH MAHO ALL DAY| +08::01::2022 04:48:00|Lawyer here. what are they gonna do, DMCA?| +08::01::2022 04:48:05|nonna posters are fags| +08::01::2022 04:48:07|can't accuse me of rape if i kill you after| +08::01::2022 04:48:08|SEX WITH MEXT| +08::01::2022 04:48:14|lawyer here, they can lick my balls| +08::01::2022 04:48:14|tfw shorter than Katyusha| +08::01::2022 04:48:16|lawyer here, i'm gay| +08::01::2022 04:48:17|Lawyer here, I'm emailing Actas right now| +08::01::2022 04:48:17|But Erika > All| +08::01::2022 04:48:17|my butt hurts| +08::01::2022 04:48:19|Sex with fukuda| +08::01::2022 04:48:21|UGGBEES +08::01::2022 04:48:23|i want to smother my face on nonna's nonnas| +08::01::2022 04:48:25|katyusha or anzu tho| +08::01::2022 04:48:32|Anzu with Anzu| +08::01::2022 04:48:32|Lawyer here, I'm having sex with Galax rn| +08::01::2022 04:48:32|Fukuda on the Tokyo Trials| +08::01::2022 04:48:35|haven't seen df3 yet, ive got a good feeling about duce| +08::01::2022 04:48:35|Not a Lawer, they can lick my dick and call me daddy| +08::01::2022 04:48:43|Katyusha and Anzu at the same time...| +08::01::2022 04:48:43|should we tell him...| +08::01::2022 04:48:44|ucebro.... +08::01::2022 04:48:44|lawyer here, duce is objectively the best gup| +08::01::2022 04:48:51|ONE MINUTE REMAINING| +08::01::2022 04:48:53|FEEL MY SHINE| +08::01::2022 04:48:54|how come no one ever posts nonna in gup threads?| +08::01::2022 04:48:55|Lawyer here, I'm just dying from alcohol| +08::01::2022 04:48:56|Anzu is for Mextguy, her husband| +08::01::2022 04:48:56|M +08::01::2022 04:48:57|XCITE +08::01::2022 04:48:58|>there are some anons that didn't go do something else during the intermission| +08::01::2022 04:49:02|I JSUT FEEL MY SHIIIIIIIIIIIIIINE| +08::01::2022 04:49:03|I JUST FEEL MY WIIIIIIIIND| +08::01::2022 04:49:03|Who here watching GuP and Conair at the same time?| +08::01::2022 04:49:04|Can't get sentenced if you swallow a cyanide pill| +08::01::2022 04:49:05|Lawyer here this stream needs to be redacted| +08::01::2022 04:49:06|nonna is too hot| +08::01::2022 04:49:08|MY MASSIVE CARBON COATED SHIT LOG TURNED INTO A CONSTIPATION SO NOTHING WAS RESOLVED THANKS FAGGOT| +08::01::2022 04:49:09|RISE AND RIDE| +08::01::2022 04:49:10|bros... i wasted the intermission...| +08::01::2022 04:49:11|Nonna is too sexy for GuP threads| +08::01::2022 04:49:11|GET YOUR LOAD READY| +08::01::2022 04:49:16|OP TIME| +08::01::2022 04:49:17|based and cyanidepilled| +08::01::2022 04:49:21|0 +08::01::2022 04:49:22|Drink MRE coffee anon| +08::01::2022 04:49:24|I am greek| +08::01::2022 04:49:25|First episode finally starting| +08::01::2022 04:49:27|GALAX I wasn't ready, can we have 5 more minutes :)| +08::01::2022 04:49:31|0 +08::01::2022 04:49:32|>greeks in my stream| +08::01::2022 04:49:33|eanigger +08::01::2022 04:49:36|FEET +08::01::2022 04:49:39|Greek? You mean fake Roman?| +08::01::2022 04:49:41|0 +08::01::2022 04:49:42|Greeks are too poor to join| +08::01::2022 04:49:42|fat nick is that you?| +08::01::2022 04:49:44|there better not be any fucking greeks here| +08::01::2022 04:49:45|ATE +08::01::2022 04:49:45|>Being to only NL anon| +08::01::2022 04:49:46|Here we go| +08::01::2022 04:49:46|greece is based| +08::01::2022 04:49:46|IT TIME BROS | +08::01::2022 04:49:48|ITAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:49:50|lessss gooooooooooooooooooooooooooooooooooooooooooooo| +08::01::2022 04:49:51|TART +08::01::2022 04:49:53|Coffee, Instant, Type I or Type II?| +08::01::2022 04:49:56|I'm fucking finnish| +08::01::2022 04:49:57|M +08::01::2022 04:49:59|WAIT FOR SONG| +08::01::2022 04:50:04|LET'S GO BOYS TRY NOT TO PASS OUT| +08::01::2022 04:50:04|I AM FUCKING FINNISHED| +08::01::2022 04:50:07|I'm Malaysian| +08::01::2022 04:50:10|just got to the stream, where are >we in the show rn | +08::01::2022 04:50:11|can't read whitefags HAHA| +08::01::2022 04:50:14|WE GOT MOVIE SIGN| +08::01::2022 04:50:15|boys +08::01::2022 04:50:16|TL NOTE: TM means Tasty Maho| +08::01::2022 04:50:19|ewww, seaniggers| +08::01::2022 04:50:19|EEEEEEET +08::01::2022 04:50:20|SEANIGS +08::01::2022 04:50:20|where are my ::7:50pm:: chads at?| +08::01::2022 04:50:20|Euro bro here, im dying| +08::01::2022 04:50:22|RISE TO MY FEEEEEEEEEEEEEEEEEEEEEEET| +08::01::2022 04:50:25|WHITE +08::01::2022 04:50:26|inokinokino +08::01::2022 04:50:26|ITA +08::01::2022 04:50:27|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET +08::01::2022 04:50:29|slags +08::01::2022 04:50:29|0448 gang sound off| +08::01::2022 04:50:31|das film > akira| +08::01::2022 04:50:31|SEANIGGERS WER U AT| +08::01::2022 04:50:31|EU Bro still going strong| +08::01::2022 04:50:31|kino time| +08::01::2022 04:50:32|EA +08::01::2022 04:50:32|EA +08::01::2022 04:50:33|ITAAAAAAAAAAAA +08::01::2022 04:50:34|?????????????????????????????????????????????????????????????????????????????????? +08::01::2022 04:50:35|cute slag tea| +08::01::2022 04:50:35|ea +08::01::2022 04:50:35|inna +08::01::2022 04:50:36|SHUT UP SLAG| +08::01::2022 04:50:36|????????????????????? +08::01::2022 04:50:36|TL NOTE: NIGGERS means KINO| +08::01::2022 04:50:37|????????????????????? +08::01::2022 04:50:37|RA +08::01::2022 04:50:38|LAGS +08::01::2022 04:50:38|HERE WE GO| +08::01::2022 04:50:38|UK anon, im living on weremacht energy| +08::01::2022 04:50:38|SHUT UP SLAG| +08::01::2022 04:50:39|STANDING UP| +08::01::2022 04:50:40|???? +08::01::2022 04:50:41|??????????????????????????????????????????????????????????????? +08::01::2022 04:50:42|?????? +08::01::2022 04:50:42|time for TOTSUGEKI| +08::01::2022 04:50:43|??????????????????????????????????? +08::01::2022 04:50:43|hip time| +08::01::2022 04:50:44|SHIIIIIIIIIIIIIIIT I DIDN'T PISS ALREADY| +08::01::2022 04:50:45|dars tea!!| +08::01::2022 04:50:45|Didn't we have some aftershow OVAs btw| +08::01::2022 04:50:46|TEA TIME!| +08::01::2022 04:50:46|shut up Darj| +08::01::2022 04:50:47|??????????????????? +08::01::2022 04:50:48|>drinking tea with shit floating in it| +08::01::2022 04:50:48|?????????????????????????????????????? +08::01::2022 04:50:49|it's not tea, it's piss| +08::01::2022 04:50:49|LONG LIVE THE IRA| +08::01::2022 04:50:50|SHUT THE FUCK UP DARJEELING| +08::01::2022 04:50:51|WHAT THE FUCK ARE YOU TALKING ABOUT | +08::01::2022 04:50:52|??????????????????????????????? +08::01::2022 04:50:52|??????????????????????????????????????????????????????????????? +08::01::2022 04:50:52|??????????????????:: +08::01::2022 04:50:53|ayings? +08::01::2022 04:50:53|>wow we're fucking losing huh| +08::01::2022 04:50:54|""great""" +08::01::2022 04:50:55|she on drugs| +08::01::2022 04:50:57|der film is the cinematic milestone of the 21st century| +08::01::2022 04:50:57|UKKAKEEE +08::01::2022 04:50:58|3D CGI!!!!| +08::01::2022 04:50:59|READY YOUR TOTSUGEKIS LADS| +08::01::2022 04:50:59|HAVE YOU HEAR THIS SAYING?| +08::01::2022 04:50:59|DRINK THE BROTH| +08::01::2022 04:51:00|I WAS BORN IN A DUBLIN STREET| +08::01::2022 04:51:04|SHUT UP DARJEELING| +08::01::2022 04:51:05|PEKOE HAS HAD ENOUGH| +08::01::2022 04:51:05|>massive jump in animation quality| +08::01::2022 04:51:07|AUDIO PORN| +08::01::2022 04:51:07|best use of a golf course ever seen| +08::01::2022 04:51:09|AITOOOO +08::01::2022 04:51:09|That detailed barel| +08::01::2022 04:51:10|hail hitler| +08::01::2022 04:51:11|CHI-HA PLS GO| +08::01::2022 04:51:12|INO +08::01::2022 04:51:13|DON'T YOU SEE, PEKOE!? SALVATION| +08::01::2022 04:51:14|why are they in a golf course?| +08::01::2022 04:51:14|what heppaned I went to go pee and missed the end of last ep| +08::01::2022 04:51:15|BAKA ALERT ! BAKA ALERT !| +08::01::2022 04:51:16|INNS +08::01::2022 04:51:16|hail +08::01::2022 04:51:16|'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO | +08::01::2022 04:51:18|ishi +08::01::2022 04:51:19|ENTER HOBO| +08::01::2022 04:51:19|FUGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:51:20|ENIS +08::01::2022 04:51:20|DDDDDDDDDD +08::01::2022 04:51:20|HEIL MAHO| +08::01::2022 04:51:20|OTSGEK +08::01::2022 04:51:21|Like wasn't there plenty OVA left where they just fuck around before the film or am I tripping| +08::01::2022 04:51:22|FUG :DDDDDDDDD| +08::01::2022 04:51:23|ALVATION! +08::01::2022 04:51:23|INLAND +08::01::2022 04:51:24|ORILLE +08::01::2022 04:51:24|benis :DDDDDDDDDDDDDddd| +08::01::2022 04:51:24|BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:51:24|ENIS +08::01::2022 04:51:25|BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 04:51:26|hail was an ancient middle age greeting| +08::01::2022 04:51:26|CHINA 444444444444444444444444444444| +08::01::2022 04:51:28|ENIS +08::01::2022 04:51:28|obo +08::01::2022 04:51:29|BENIS :DDDD| +08::01::2022 04:51:29|CAM ON OORAI| +08::01::2022 04:51:29|BIN +08::01::2022 04:51:31|IKAAAAAAAAAAAAAAA +08::01::2022 04:51:32|FUG :DDD| +08::01::2022 04:51:32|DDDDDDDDDDDDD +08::01::2022 04:51:33|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 04:51:33|BENIS :D| +08::01::2022 04:51:33|o fug :D| +08::01::2022 04:51:33|darj 2| +08::01::2022 04:51:34|CUM ON ENGERLAND *BANG BANG BANG*| +08::01::2022 04:51:34|INNS! +08::01::2022 04:51:34|BRITS CAMPING AGAIN| +08::01::2022 04:51:34|She should be playing black metal| +08::01::2022 04:51:34|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 04:51:35|FUGGG :DDDDDD| +08::01::2022 04:51:35|DDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 04:51:35|THERE SHE IS :DDDD| +08::01::2022 04:51:35|The finnish whores| +08::01::2022 04:51:36|CHIHA 444444444444444444444444444444| +08::01::2022 04:51:36|ERMAVILLI +08::01::2022 04:51:36|BENIS :DDDDDDDDD| +08::01::2022 04:51:36|D +08::01::2022 04:51:37|BERGELE :DDDDD| +08::01::2022 04:51:37|DDDDDDDDDDDDDDDDDDD +08::01::2022 04:51:38|Koskenkorva :DDD| +08::01::2022 04:51:38|ULDA +08::01::2022 04:51:39|DDD +08::01::2022 04:51:39|OH FUG :| +08::01::2022 04:51:40|DDDDDDDDDDDDDDD +08::01::2022 04:51:40|SPURDO SPÄRDE| +08::01::2022 04:51:41|RÖÖÖH +08::01::2022 04:51:42|FUGGG :DDDD| +08::01::2022 04:51:42|Who ::hereillä:: here| +08::01::2022 04:51:42|DDDD +08::01::2022 04:51:42|OBOS +08::01::2022 04:51:43|Hitler had the Jews; just let me have the F*nns| +08::01::2022 04:51:43|OBO +08::01::2022 04:51:44|ODKA +08::01::2022 04:51:44|miko shimada| +08::01::2022 04:51:45|Fun fact: this movie contains 107 different fonts| +08::01::2022 04:51:45|EBIN TIME :DDDDDDDDDDDD| +08::01::2022 04:51:45|LEPTO +08::01::2022 04:51:46|PERGELE :DDDDDDDDDDDD| +08::01::2022 04:51:46|UG +08::01::2022 04:51:48|Tanks are life| +08::01::2022 04:51:48|for the benis| +08::01::2022 04:51:49|DDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 04:51:50|UOMI +08::01::2022 04:51:50|ERKELE +08::01::2022 04:51:52|LANE +08::01::2022 04:51:52|what do we spam for the finns?| +08::01::2022 04:51:52|::hereillä:: represent| +08::01::2022 04:51:52| nani yo sore| +08::01::2022 04:51:54|>for the free stuff| +08::01::2022 04:51:54|AATANA +08::01::2022 04:51:54|BENIS :DDDDDDDDDD| +08::01::2022 04:51:56|ERKELE +08::01::2022 04:51:57|ERMAVIILI +08::01::2022 04:51:58|fug :DDDDDDDDDDDDDDDDD| +08::01::2022 04:52:02|DDDDDD +08::01::2022 04:52:02|>Important lessons| +08::01::2022 04:52:03|AATAANA +08::01::2022 04:52:03|hereillä, mää kuolen saatana| +08::01::2022 04:52:04|TORILLE TAVATAAN| +08::01::2022 04:52:06|Who's driving?| +08::01::2022 04:52:06|satana perkele| +08::01::2022 04:52:07|WHAT DID SHE MEAN?| +08::01::2022 04:52:09|PEKOE UOOOOOOOHHHHHHHHHHH| +08::01::2022 04:52:09|VOI VITTU| +08::01::2022 04:52:09|gimi :DDDDDDDDDDDDDDDDD| +08::01::2022 04:52:13|!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +08::01::2022 04:52:14|??? +08::01::2022 04:52:15|WELL THERE'S THIS SAYING| +08::01::2022 04:52:17|be elegant | +08::01::2022 04:52:18|??????? +08::01::2022 04:52:18|SSAM +08::01::2022 04:52:19|She means she wants to steal something| +08::01::2022 04:52:19|does shiho still hate miho?| +08::01::2022 04:52:20|!?!?!?!?!? +08::01::2022 04:52:20| and colonize Tanzania during the 19th century. I want to invade Darjeeling’s vulnerable parts just like when Ugandan dictator Idi Amin inva| +08::01::2022 04:52:21|What did she mean by this?| +08::01::2022 04:52:22|did you know that the winterwar, sign of finn resistance, was actually a shame for the finns| +08::01::2022 04:52:23|????????????????????????????????????????????????????????????????????? +08::01::2022 04:52:23|SSam +08::01::2022 04:52:24|ASSAM MY WIFE| +08::01::2022 04:52:25|?!?!??!?!?!?! +08::01::2022 04:52:26|?????????????????????????????? +08::01::2022 04:52:28|imagine fucking losing from this position| +08::01::2022 04:52:29|There's this saying: vittu ku väsyttää saatana| +08::01::2022 04:52:29|???????????? +08::01::2022 04:52:29|who tf is driving| +08::01::2022 04:52:29|MILK +08::01::2022 04:52:32|my QUEEEEEEN| +08::01::2022 04:52:32|based mako| +08::01::2022 04:52:33|Just drink tea 4Head| +08::01::2022 04:52:33|UMSHAKE +08::01::2022 04:52:33|???????????????? +08::01::2022 04:52:34|I'm sorry, but did Ooarai already lose? Oh, that's right. The game isn't even over yet. In fact, it's only halftime. | +08::01::2022 04:52:34|Best girl has best taste I see| +08::01::2022 04:52:37|GO ON HOME BRITISH SOLDIERS GO ON HOME HAVE YOU GOT NO FUCKING HOMES OF YOUR OWN| +08::01::2022 04:52:38|ASSAM SEXU| +08::01::2022 04:52:39|I want to break her hymen like a scone| +08::01::2022 04:52:39|Finland doesn't exist. Think about it. Have you ever been to Finland? Ever met a Finn?| +08::01::2022 04:52:40|ilkushaku +08::01::2022 04:52:43|ILLKSHAKE +08::01::2022 04:52:44|Saori's milk| +08::01::2022 04:52:45|SHOW ME SOME FUCKIN' ROSEHIPS| +08::01::2022 04:52:45|lowly? +08::01::2022 04:52:46|MAKO MILKERS| +08::01::2022 04:52:47|FOR EIGHT HUNDRED YEARS| +08::01::2022 04:52:47|mako best| +08::01::2022 04:52:48|There's also this saying: La pomme ne tombe pas lojn de l'arbre| +08::01::2022 04:52:51|OTSUBAKAS +08::01::2022 04:52:52|statistically speaking, finns dont exist| +08::01::2022 04:52:54|WE'VE FOUGHT YOU WITHOUT FEAR| +08::01::2022 04:52:56|stop firing to make time for tea| +08::01::2022 04:52:56|PANZER VOR| +08::01::2022 04:52:57|Eggs in a milkshake????| +08::01::2022 04:52:57|Panzer vor| +08::01::2022 04:52:58|PANZER VOR| +08::01::2022 04:52:58|Our girls have come so far ;_;| +08::01::2022 04:52:58|PANZER VOR| +08::01::2022 04:52:59|Finnland is a Japanese fishing colony| +08::01::2022 04:53:00|Does not having the tank advantage at halftime count as a loss? Is that what you're saying?| +08::01::2022 04:53:00|Panza Vooor| +08::01::2022 04:53:02|PANZER VOR!| +08::01::2022 04:53:03|cutest panzer vor ever | +08::01::2022 04:53:04|AND WE SHALL FIGHT YOU, FOR 800 MORE| +08::01::2022 04:53:05|Theres this saying: Niggers are just like poop| +08::01::2022 04:53:06|ISHI +08::01::2022 04:53:06|ongolian* +08::01::2022 04:53:06|OTSUGK +08::01::2022 04:53:06|bakas... | +08::01::2022 04:53:07|AMARA +08::01::2022 04:53:08|who's that retard?| +08::01::2022 04:53:08|CHTUNG +08::01::2022 04:53:09|TOTSUGEKI INSTEAD| +08::01::2022 04:53:09|Cute Nishi| +08::01::2022 04:53:10|PANZER VOR| +08::01::2022 04:53:10|PANZER VOR| +08::01::2022 04:53:11|AIFUUUUUUU +08::01::2022 04:53:12|PANZA FOH| +08::01::2022 04:53:12|PANZER VOR| +08::01::2022 04:53:15|panzer vor| +08::01::2022 04:53:15|panzer vor means panzer vor| +08::01::2022 04:53:16|PANZER VOR| +08::01::2022 04:53:17|destroy them kudasai| +08::01::2022 04:53:17|>pantsu | +08::01::2022 04:53:18|panzer vor means tank canabalism| +08::01::2022 04:53:19|Panzer vor means panzer vor| +08::01::2022 04:53:19|PANTSU ARE FOR| +08::01::2022 04:53:19|PANZER VOR MEANS PANZER VOR| +08::01::2022 04:53:20|I want to put my finger in there| +08::01::2022 04:53:20|ANZABOR +08::01::2022 04:53:20|aruhodo +08::01::2022 04:53:20|Panzer vor means panzer vor| +08::01::2022 04:53:22|?????????????????????????????????????????????????????????????????????????????????? +08::01::2022 04:53:23|?? +08::01::2022 04:53:23|TL NOTE: PANZER VOR MEANS PANZER VOR| +08::01::2022 04:53:24|Panzer Vor means Erika best GuP| +08::01::2022 04:53:24|PANZER VOR MEANS PANZER VOR| +08::01::2022 04:53:24|Panzer vor? can we get a TL?| +08::01::2022 04:53:24|wait, did someone say charge?| +08::01::2022 04:53:25|DUMB TOSUBAKAS| +08::01::2022 04:53:26|OTSUGEKI +08::01::2022 04:53:26|HHHHHHHHHHHHHH +08::01::2022 04:53:28|enlo +08::01::2022 04:53:29|?????????????? +08::01::2022 04:53:30|it means panzer vor| +08::01::2022 04:53:31|igged +08::01::2022 04:53:31|DANKE TL| +08::01::2022 04:53:32|ANZAI +08::01::2022 04:53:33|SENSHA ZENSHIN| +08::01::2022 04:53:33|SENSHA ZENSHINNNNNNNNNNN| +08::01::2022 04:53:34|SENSHA ZENSHIN| +08::01::2022 04:53:34|PANZER VOR MEANS PANZER VOR| +08::01::2022 04:53:35|Panzer Vor means Panzer Vor| +08::01::2022 04:53:35|ENSHIN! +08::01::2022 04:53:36|OTSUGEKI +08::01::2022 04:53:36|PANZER VOR| +08::01::2022 04:53:37|no No NO| +08::01::2022 04:53:37|TL NOTE: PANZER VOR MEANS TOTSUGEKI| +08::01::2022 04:53:38|PANTSU VOR| +08::01::2022 04:53:38|what does tanks forward mean?| +08::01::2022 04:53:38|SENSHA ZENSHIN| +08::01::2022 04:53:39|PANZER VOR MEANS PANZER VOR| +08::01::2022 04:53:39|OTSUGEKI +08::01::2022 04:53:39|NZU +08::01::2022 04:53:40|OTSUGEKI? +08::01::2022 04:53:42|PANZER SENSHIN| +08::01::2022 04:53:42|TOTSUGEKI | +08::01::2022 04:53:43|big mistake miho...| +08::01::2022 04:53:43|OTSUGEKI +08::01::2022 04:53:43|aaaaaaaaaaaaaaa its buffering so much for me| +08::01::2022 04:53:45|ST +08::01::2022 04:53:47|OTSUGEKI +08::01::2022 04:53:48|tanks forward means sensha zenshin| +08::01::2022 04:53:50|PANZER VOR| +08::01::2022 04:53:51|Who's this new broad?| +08::01::2022 04:53:51|TENNO HEIKA BANZAIIIII| +08::01::2022 04:53:51|OSOMI +08::01::2022 04:53:52|Pantsu 4| +08::01::2022 04:53:54|PANZER VOR| +08::01::2022 04:53:56|OTSUGEKI +08::01::2022 04:53:57|PANZAA VOR| +08::01::2022 04:53:57|AAAAAAAANNZZZZZZZAAAAAAIIIIIIIIIIII +08::01::2022 04:53:57|OTSUGEKIII +08::01::2022 04:54:02|did they paint the panzer iv?| +08::01::2022 04:54:02|Pantsu 4| +08::01::2022 04:54:05|>PANTSU WHORE| +08::01::2022 04:54:06|INOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 04:54:08|wasn't it blue?| +08::01::2022 04:54:08|WARE WA KANGUN WAGA TEKI WA| +08::01::2022 04:54:09|ST +08::01::2022 04:54:10|I think she was called Nishi-zumi or some shit| +08::01::2022 04:54:11|OUUUUUUUUUUUUUUUUUUUUUUUUUUUULLLLLLLLLLLLLLLLLLL +08::01::2022 04:54:11|ino +08::01::2022 04:54:13|I restart browser when it buffers for me and sometimes it works| +08::01::2022 04:54:15|such lovely tunes| +08::01::2022 04:54:15|CHI-HA CHI-HA CHI-HA CHI-HA CHI-HA CHI-HA| +08::01::2022 04:54:16|they have money now| +08::01::2022 04:54:16|INO +08::01::2022 04:54:17|TL note: Kino means kino| +08::01::2022 04:54:17|ANTSU +08::01::2022 04:54:18|ino +08::01::2022 04:54:19|ALL QUIET ON THE KINO FRONT| +08::01::2022 04:54:19|>Imagine using shit jap tanks| +08::01::2022 04:54:22|That pleases the ears| +08::01::2022 04:54:22|ishizoomer +08::01::2022 04:54:23|fuckin kino| +08::01::2022 04:54:24|cute panzers| +08::01::2022 04:54:25| +08::01::2022 04:54:27|INO +08::01::2022 04:54:29|ss +08::01::2022 04:54:29|SING IT WIT ME| +08::01::2022 04:54:29| +08::01::2022 04:54:30|ss +08::01::2022 04:54:31|SS +08::01::2022 04:54:31|>losing to shit jap tanks| +08::01::2022 04:54:32|nushole +08::01::2022 04:54:32|sshole +08::01::2022 04:54:32|WE KINOS HEROES NOW LADS| +08::01::2022 04:54:33|film and finales are way better than the show desu| +08::01::2022 04:54:33|UTS +08::01::2022 04:54:36|TRACKP PHYSICS| +08::01::2022 04:54:37|( * )| +08::01::2022 04:54:38|best opening scene ever| +08::01::2022 04:54:38|ooning +08::01::2022 04:54:38|UTT +08::01::2022 04:54:41|IPPOS +08::01::2022 04:54:45|ET +08::01::2022 04:54:49|Turtle club| +08::01::2022 04:54:49|fag anteater| +08::01::2022 04:54:49|SS +08::01::2022 04:54:51|fast turdle| +08::01::2022 04:54:51|>still can't drive straight| +08::01::2022 04:54:52|GAMER GIRLS| +08::01::2022 04:54:52| +08::01::2022 04:54:53|Murder bunnies| +08::01::2022 04:54:57|SSEATER +08::01::2022 04:54:58|BUNNY CUNNY| +08::01::2022 04:54:58| +08::01::2022 04:55:00|ELLY +08::01::2022 04:55:00|>stupid tama gonna squeeze| +08::01::2022 04:55:01|That's a weird ass looking turtle| +08::01::2022 04:55:02|>world of tanks bgm| +08::01::2022 04:55:04|KILLER RABBITS| +08::01::2022 04:55:06|w +08::01::2022 04:55:07|uacl +08::01::2022 04:55:08|UNNIES +08::01::2022 04:55:12|how can you be a msygonist incel shit and still like gup?| +08::01::2022 04:55:15|huba +08::01::2022 04:55:16|odokooooooo +08::01::2022 04:55:19|that leopon has seen some shit| +08::01::2022 04:55:21|WHAT DID I MISS| +08::01::2022 04:55:21|Leopon's seen some shit.| +08::01::2022 04:55:25|LEOPON BEST| +08::01::2022 04:55:26|uppy +08::01::2022 04:55:26|verything +08::01::2022 04:55:26|The classic| +08::01::2022 04:55:27|E::O::PON +08::01::2022 04:55:27|cute ankou| +08::01::2022 04:55:32|how can you be a msygonist incel shit and still like gup?| +08::01::2022 04:55:33|Leopon's seen footage they stay noided| +08::01::2022 04:55:33|REMINDER TO ALL: The StuGIII Crew are my wives.| +08::01::2022 04:55:33|TIGER SEXIEST TANK| +08::01::2022 04:55:36|BANDA NO SAKURA KA ERI NO IRO| +08::01::2022 04:55:36|ankou based| +08::01::2022 04:55:45|ORIKO<3 +08::01::2022 04:55:46|yaa +08::01::2022 04:55:47|Hana is my wife| +08::01::2022 04:55:48|I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +08::01::2022 04:55:52|NZU +08::01::2022 04:55:52|Noriko is OLEV| +08::01::2022 04:55:52|yaa!~ +08::01::2022 04:55:55|MAN, THE DETAIL IMPROVED SO MUCH| +08::01::2022 04:55:58|Based Schizo | +08::01::2022 04:55:58|why is anzu so cute bros| +08::01::2022 04:56:02|Reminder: Erika is mine. You get your filythy hands offmher| +08::01::2022 04:56:03|red 6 ready| +08::01::2022 04:56:03|OOOOOOOSHIINOOOOOO +08::01::2022 04:56:07|ANZU UOHH| +08::01::2022 04:56:11|is it just me or is it quieter than before| +08::01::2022 04:56:12|OTSUGEKI +08::01::2022 04:56:12|tfw no panzer gf| +08::01::2022 04:56:12|OOOOOOOOOOOOOOOOOOOOOOOOOOOOM +08::01::2022 04:56:14|Wew the chat is becoming more schizo by the moment| +08::01::2022 04:56:15|fox 2, FUCK THE FIA| +08::01::2022 04:56:15|OSHINO +08::01::2022 04:56:16|ANZU VORE| +08::01::2022 04:56:23|Erika is for every anon here| +08::01::2022 04:56:23|imagine still not winning in this position though| +08::01::2022 04:56:24|volume seems quieter| +08::01::2022 04:56:28|Tea intact| +08::01::2022 04:56:29|Killstealing japs| +08::01::2022 04:56:29|onk +08::01::2022 04:56:32|what does Anzu feel about being loli bait? I bet she likes being appreciated| +08::01::2022 04:56:32|Chat is quieter, it's 6 am| +08::01::2022 04:56:38|matildas BTFO| +08::01::2022 04:56:39|snap* +08::01::2022 04:56:39|OTSUGEKI +08::01::2022 04:56:40|II DESU NE| +08::01::2022 04:56:42|has anyone here played dream tank match?| +08::01::2022 04:56:42|5am here| +08::01::2022 04:56:43|OTSUGEKI +08::01::2022 04:56:43|OSOMI +08::01::2022 04:56:43|Euroslot struggling| +08::01::2022 04:56:44|TOTSUGEKI | +08::01::2022 04:56:44|OTSUGEKI! +08::01::2022 04:56:44|OTSUGEKI +08::01::2022 04:56:46| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 04:56:46|>Imagine being KO'ed by a jap tank| +08::01::2022 04:56:46|ANZAI! +08::01::2022 04:56:47|No stop| +08::01::2022 04:56:47|OTSUGEKI +08::01::2022 04:56:47|That was Assam just there| +08::01::2022 04:56:48|too sleepy to shitpost effectively| +08::01::2022 04:56:48|i dont care about any of this, just skip to duce parts| +08::01::2022 04:56:48|OTSUGEKI +08::01::2022 04:56:48|TOTSUGEKI | +08::01::2022 04:56:49|OTSUGEKI +08::01::2022 04:56:50|HROWING +08::01::2022 04:56:50|OTSUGEKIIIIIIII +08::01::2022 04:56:51|TOTSUGEKI | +08::01::2022 04:56:52| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 04:56:52|OTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +08::01::2022 04:56:52|imagine using euro time| +08::01::2022 04:56:52|UGOI +08::01::2022 04:56:53|osukeki +08::01::2022 04:56:53|ugeeeeeeee +08::01::2022 04:56:55|OTSUGEKI +08::01::2022 04:56:55|OTSUGEKI +08::01::2022 04:56:56|OTSUGEKI? +08::01::2022 04:56:57|OTSUGEKI +08::01::2022 04:56:57|TOTSUGEKI | +08::01::2022 04:56:57|OTSUGEKI +08::01::2022 04:56:58|OTSUGEKI +08::01::2022 04:56:58|OTSUGEKI +08::01::2022 04:56:58|TO TSU GE KI| +08::01::2022 04:56:59|ching chang to you too, young lady| +08::01::2022 04:56:59|OTSUGEKI +08::01::2022 04:57:00|OKKAN +08::01::2022 04:57:00|OTSUUUUUUU +08::01::2022 04:57:00|OTSUGEKIIIIIIIIIIIIIIIII +08::01::2022 04:57:01|OTSUGEKI +08::01::2022 04:57:01|OTSUGEKIU +08::01::2022 04:57:01|OTSUGEKI +08::01::2022 04:57:02|baka ass hoes| +08::01::2022 04:57:02|OTSUGEKI +08::01::2022 04:57:02|OKKAN +08::01::2022 04:57:04|OKKAN! +08::01::2022 04:57:04|OTSUGEKI +08::01::2022 04:57:05|OTSUGEKI +08::01::2022 04:57:05|OTSUGEKI! +08::01::2022 04:57:06|TOTSUGEKI | +08::01::2022 04:57:06|>jap tactics| +08::01::2022 04:57:06|ANZAI +08::01::2022 04:57:07|otsygeki +08::01::2022 04:57:07|AKAS +08::01::2022 04:57:07|OTSUGK +08::01::2022 04:57:07|OTSUGEKI +08::01::2022 04:57:07|o7 TOTSUGEKI| +08::01::2022 04:57:07|YUKI NO SHINGUN| +08::01::2022 04:57:08|ANZAI +08::01::2022 04:57:08|YUKI NO SHINGUN| +08::01::2022 04:57:08|TAKKAN BITCHES!!| +08::01::2022 04:57:08|7 +08::01::2022 04:57:09|OTSUGEKI +08::01::2022 04:57:10|7 +08::01::2022 04:57:10|im going in| +08::01::2022 04:57:10|OTSUGEKI +08::01::2022 04:57:11|YUKI NO SHINGUN| +08::01::2022 04:57:11|YUKI NO SHINGUN, KOORI O FUNDE| +08::01::2022 04:57:13|CHARGETARDS +08::01::2022 04:57:13|OTSUGEKI +08::01::2022 04:57:14|7 +08::01::2022 04:57:14|7 +08::01::2022 04:57:15|OTSUGEKI +08::01::2022 04:57:15|7 +08::01::2022 04:57:15|YUKI NOSHINGUN| +08::01::2022 04:57:15|nthem +08::01::2022 04:57:15|OKKAN +08::01::2022 04:57:15|and they all died the end | +08::01::2022 04:57:15|7 +08::01::2022 04:57:16|the march of fools| +08::01::2022 04:57:17|7 +08::01::2022 04:57:17|YUKI NO SHINGUN| +08::01::2022 04:57:17|7 +08::01::2022 04:57:18|ANZAI +08::01::2022 04:57:19|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 04:57:20|TONO HEIKA BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +08::01::2022 04:57:20|Why does she look like she just did something profound| +08::01::2022 04:57:20|7 +08::01::2022 04:57:21|I like how the japs make jokes about their own school| +08::01::2022 04:57:22|7 +08::01::2022 04:57:22|is this the media where alice appears?| +08::01::2022 04:57:23|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 04:57:24|TENNO HEIKA BAANZAIIIIIIIIIIIIIII| +08::01::2022 04:57:25|its been an honor and a pleasure miporin| +08::01::2022 04:57:25|IS THIS THE WAY BROS| +08::01::2022 04:57:26|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 04:57:27|LIVE FOR TOTSUGEKI. DIE FOR TOTSUGEKI| +08::01::2022 04:57:27|AMIKAZE +08::01::2022 04:57:28|BAKA DA NE| +08::01::2022 04:57:31|LETS FUCKING GOOOOOOOOO| +08::01::2022 04:57:32|TENNO HEIKA BANZAI| +08::01::2022 04:57:33|AMIKAZE +08::01::2022 04:57:33|ANZAI! +08::01::2022 04:57:33|OTSUGEKI +08::01::2022 04:57:35|the scone has decided to break itself| +08::01::2022 04:57:37|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 04:57:37|Either go all in or die| +08::01::2022 04:57:38|TENNA HEIKA BANZAI| +08::01::2022 04:57:42|haha funny quote darj| +08::01::2022 04:57:42|>can't hit stationary target| +08::01::2022 04:57:42|OTSUGEKI +08::01::2022 04:57:44|Can I enjoy your taste Pekoe?| +08::01::2022 04:57:46| +08::01::2022 04:57:49|ANDWIC? +08::01::2022 04:57:49|NIPPON BANZAIII| +08::01::2022 04:57:50|should've won here| +08::01::2022 04:57:52|I want to enjoy pekoe's taste....| +08::01::2022 04:57:52|?????????????? +08::01::2022 04:57:52|DIOTS +08::01::2022 04:57:53|shut the fuck up darj| +08::01::2022 04:57:53|TENNO HEIKA BANZAIIIIIII| +08::01::2022 04:57:55|imagine enjoying Darj's taste| +08::01::2022 04:57:55|? +08::01::2022 04:57:57|who drives darj's tank?| +08::01::2022 04:57:57|churchill is cat| +08::01::2022 04:57:58|??????????????????? +08::01::2022 04:58:03|YAMI WO KIRISAKU OPEN FIRE| +08::01::2022 04:58:03|Based Darjeeling| +08::01::2022 04:58:05|FUKUDA UOOOOOOOOOOOOOHHHHHHHHHHH| +08::01::2022 04:58:06|haha totsubakas getting rekt| +08::01::2022 04:58:06|Delicious Darjeeling | +08::01::2022 04:58:07|SEX WITH PANZERS| +08::01::2022 04:58:08|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 04:58:09|coward finnish ur charge!| +08::01::2022 04:58:10|Anon dies in a bad trip| +08::01::2022 04:58:10|ara ara| +08::01::2022 04:58:11|7 +08::01::2022 04:58:11|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 04:58:16|>Doubting the BANZAI| +08::01::2022 04:58:18|GRORIOUS CHARGE| +08::01::2022 04:58:20|OTSUGEKIDIOTS +08::01::2022 04:58:20|ek +08::01::2022 04:58:20|ONE MILLION CHIHATANS| +08::01::2022 04:58:21|AGURAAAAA +08::01::2022 04:58:21|ENNO +08::01::2022 04:58:22|TOTSUGEKI | +08::01::2022 04:58:24|etard +08::01::2022 04:58:25|ANZAI +08::01::2022 04:58:25|wned +08::01::2022 04:58:26|EIKA +08::01::2022 04:58:28|UTE +08::01::2022 04:58:28|OOOOOOOOOOOOHHHHHHHHHH +08::01::2022 04:58:31|OTSUGEKI! +08::01::2022 04:58:32|ANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +08::01::2022 04:58:33|ARU-CHAN +08::01::2022 04:58:34|DON'T TOTSUGEKI | +08::01::2022 04:58:34|omu +08::01::2022 04:58:35|UKUDA +08::01::2022 04:58:35|OTUSGEKI +08::01::2022 04:58:37|TENNOU HEIKA BANZAI| +08::01::2022 04:58:38|"quit throwing!"| +08::01::2022 04:58:38|STOP RIGHT THERE| +08::01::2022 04:58:39|UNNY +08::01::2022 04:58:41|TOTSUGEKI | +08::01::2022 04:58:43|Totsugeki is the pinnacle of sensha-do| +08::01::2022 04:58:43|braids make good blowjob handles| +08::01::2022 04:58:45|DAMN SUICIDAL CHILD| +08::01::2022 04:58:46|FOLLOW FUCKING ORDERS YOU NIP CUNT| +08::01::2022 04:58:49|but TRADITION| +08::01::2022 04:58:51|CUTE ONAHOLE| +08::01::2022 04:58:52|cute and funny panzer operator| +08::01::2022 04:58:52|Keep hydrated anon kudasai| +08::01::2022 04:58:53|Sodonaka STFU| +08::01::2022 04:58:54|DAMN KID| +08::01::2022 04:58:54|For all the talk about sandwiches Darjeeling spends too much time in tank, instad of kitchen| +08::01::2022 04:58:54|THATS THE RULES| +08::01::2022 04:58:57|NTER +08::01::2022 04:58:58|KATYUSHA INBOUND| +08::01::2022 04:59:01|LETS GOOOOOOOO GREMLIM BROS| +08::01::2022 04:59:01|RAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:59:02|ATYUSHA!!! +08::01::2022 04:59:02|LET'S FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 04:59:03|IT"S SHAMEFUL TO LLIVE| +08::01::2022 04:59:04|ATYUSHA +08::01::2022 04:59:04|>rules lawyers| +08::01::2022 04:59:05|HERE IT IS AGAIN| +08::01::2022 04:59:05|Did Fuka's voice change between movies?| +08::01::2022 04:59:08|Just like my World of Tanks| +08::01::2022 04:59:08|ITS TIME| +08::01::2022 04:59:08|Kept you waiting huh?| +08::01::2022 04:59:09|>55,000 T-34s arrive| +08::01::2022 04:59:10|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:59:10|PA +08::01::2022 04:59:11|UUUUURRRRAAAAAAAAAAAAAAAA +08::01::2022 04:59:12|>BANZAI BLOCKED| +08::01::2022 04:59:14|I ORDER you to stay strong and remain with the stream, Anon!| +08::01::2022 04:59:14|UUUURRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:59:14|K L A R A| +08::01::2022 04:59:15|The Sovishits are here| +08::01::2022 04:59:15|PRESS R TO REPORT DISSIDENTS| +08::01::2022 04:59:16|RAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:59:17|CRUSH CAPITALISM!!| +08::01::2022 04:59:18|KEPT YOU WAITING HUH?| +08::01::2022 04:59:18|MY WIIIIIIIIIIIIIIIIIIIIVES AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 04:59:19|Metal Gear?!| +08::01::2022 04:59:20|NTER +08::01::2022 04:59:20|PAAAAAAAAA +08::01::2022 04:59:20|pppppppppppppaaaaaaaaaaaaaaaaaaaaaaaaaaaa +08::01::2022 04:59:20|kept you waiting huh| +08::01::2022 04:59:21|KEPT YOU WAITING, HUH?| +08::01::2022 04:59:21|UUUUUUUUUURRRRAAAAAAAAAAAAAAAAA +08::01::2022 04:59:24|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 04:59:26|YRAAAAAAAAAAAAAAAAAA +08::01::2022 04:59:26|how were a few shitty tanks holding off pravda?| +08::01::2022 04:59:26|IF ONLY LENIN COULD SEE US NOW| +08::01::2022 04:59:27|what the fuck are they saying| +08::01::2022 04:59:27|LARA +08::01::2022 04:59:28|UMIPEEEEEEEEEEEEEEEEEEE +08::01::2022 04:59:29|What Metal Gear?| +08::01::2022 04:59:29|SPEAK JAPANESE| +08::01::2022 04:59:29|EKINAI +08::01::2022 04:59:30|Anu cheeki breeki iv damke| +08::01::2022 04:59:31|>ooari gets shafted with Totsubakas| +08::01::2022 04:59:32|Russian Larpers| +08::01::2022 04:59:32|fuka is ear cancer| +08::01::2022 04:59:33|Glorious russian| +08::01::2022 04:59:34|>RUSSIAN BIAS WORLD OF TANKS| +08::01::2022 04:59:35|CYKA BLYAD| +08::01::2022 04:59:35|PA RUSSKOM GOVORI, PA RUSSKOM| +08::01::2022 04:59:38|Klara best girl| +08::01::2022 04:59:39|who is driving| +08::01::2022 04:59:40|CYKA BLYAT| +08::01::2022 04:59:40|NIHONGO DE HANASHI NASAI YO| +08::01::2022 04:59:40|EKINAI +08::01::2022 04:59:40|tetris +08::01::2022 04:59:40|REMEMBER NO RUSSIAN| +08::01::2022 04:59:43|YOU WILL NEVER SPEAK JAPANESE| +08::01::2022 04:59:44|BLYADD DDDDDDDD:| +08::01::2022 04:59:44|NIHONGO DE| +08::01::2022 04:59:45|YKA +08::01::2022 04:59:46|CYKA BLYAT| +08::01::2022 04:59:50|umirebros +08::01::2022 04:59:54|ETZER +08::01::2022 04:59:55|BAKAHIP WOOOOOOOOO| +08::01::2022 04:59:56|God the blonde one is beautiful | +08::01::2022 04:59:56|AKAHIP +08::01::2022 04:59:56|DISENGAGING THE LIMITERS| +08::01::2022 04:59:57|ANI +08::01::2022 04:59:58|MY BAKA WIFE| +08::01::2022 04:59:59|UNNY? +08::01::2022 04:59:59|AKAHIP +08::01::2022 05:00:00|AKAHIP!!!!! +08::01::2022 05:00:01|OSEHIPPU +08::01::2022 05:00:07|OSEHIP +08::01::2022 05:00:08|OSEHIP +08::01::2022 05:00:08|HIP TIME| +08::01::2022 05:00:11|Crusaderbros... we're fast| +08::01::2022 05:00:11|IS BAKAHIP irish or scottish?| +08::01::2022 05:00:11|ANI +08::01::2022 05:00:15|REV UP THAT 2JZGTE| +08::01::2022 05:00:17|i swear to fucking god if you tall bitches speak russian i'm gonna do nothing about it because i'm a midget | +08::01::2022 05:00:17|gas gas gas| +08::01::2022 05:00:17|Rosehip is pretty cool not gonna lie| +08::01::2022 05:00:18|HIGH BOOST ALL THE TIME WITH ROSEHIP| +08::01::2022 05:00:18|es +08::01::2022 05:00:19|I never realised rosehip wasn't even introduced yet| +08::01::2022 05:00:23|IMAGINE ROSEHIPS SWEAT IN YOUR TEA HAHAHA| +08::01::2022 05:00:26|SORE GA CHIHATAN| +08::01::2022 05:00:36|hansu +08::01::2022 05:00:36|>nishi's slight cleavage| +08::01::2022 05:00:37|OBOS +08::01::2022 05:00:38|WARERA WA CHIHATAN| +08::01::2022 05:00:38|DDDDDDDDDDDDDDDD +08::01::2022 05:00:40|DDDDDDDDDDD +08::01::2022 05:00:41|OBO +08::01::2022 05:00:42|hansu +08::01::2022 05:00:42|??? +08::01::2022 05:00:42|Imagine retreating to brits or russians| +08::01::2022 05:00:42|DDDDDDDDDDDDD +08::01::2022 05:00:43|obros.... +08::01::2022 05:00:44|DDDDDDDDD +08::01::2022 05:00:46|BENIS :DDDDDDDDDDDDDD| +08::01::2022 05:00:47|DDD +08::01::2022 05:00:48|FUG :DDDDD| +08::01::2022 05:00:48|that strum| +08::01::2022 05:00:49|------DDDDDD +08::01::2022 05:00:50|CHANCE TIME| +08::01::2022 05:00:51|OBOS +08::01::2022 05:00:51|DDDDDDDDDDDD +08::01::2022 05:00:51|BIN +08::01::2022 05:00:53|DDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:00:54|HANCEO +08::01::2022 05:00:54|OUL +08::01::2022 05:00:55|Humans are sinful and stupid| +08::01::2022 05:00:57|FUGGG :DDDD| +08::01::2022 05:01:01|DDDDDDD +08::01::2022 05:01:05|KOCCHI OKCCHI | +08::01::2022 05:01:06|fucking thrower team| +08::01::2022 05:01:11|You are never more thana mile from a Finn| +08::01::2022 05:01:14|What does unlimited dan| +08::01::2022 05:01:15|Some advisor on the staff actually played kantele in one of the interviews| +08::01::2022 05:01:15|GOOCHI GOOCHI| +08::01::2022 05:01:16|TIME TO DESTROY THE TOWN| +08::01::2022 05:01:17|Azusa "Salmiakki Remover" Sawa| +08::01::2022 05:01:19|chi ha tan reported| +08::01::2022 05:01:23|what does unlimited danmaku do?| +08::01::2022 05:01:27|re? +08::01::2022 05:01:29|mika salo is somehow responsible| +08::01::2022 05:01:29|removes the limiter| +08::01::2022 05:01:30|it makes mustad gas| +08::01::2022 05:01:30|OREEE +08::01::2022 05:01:31|TOTSUGEKI KANYOU| +08::01::2022 05:01:31|It unlimits your danmaku| +08::01::2022 05:01:34|hihantan +08::01::2022 05:01:35|Unlimites thedakku| +08::01::2022 05:01:37|it makes the danmaku unlimited| +08::01::2022 05:01:37|CARBON COATED BUILDINGS| +08::01::2022 05:01:40|KRRRRT +08::01::2022 05:01:44|who the fuck is dan maku| +08::01::2022 05:01:44|Unlimited autism | +08::01::2022 05:01:45|It spreads the danmaku to the very botton when there's a lot of spam like DUCE| +08::01::2022 05:01:45|>that drift| +08::01::2022 05:01:49|GAS GAS GAS| +08::01::2022 05:01:50|ZA DONBAS| +08::01::2022 05:01:52|Where's that one guy's shop. I think he needs another one. | +08::01::2022 05:01:52|>hippo team| +08::01::2022 05:01:52|turn unlimited danmaku on and enjoy when duce comes on screen| +08::01::2022 05:01:56|ukt +08::01::2022 05:01:56|rosehip yes| +08::01::2022 05:01:59|ive only seen it at the bottom during anzio OVA| +08::01::2022 05:02:00|BAKAHIP IS HERE| +08::01::2022 05:02:00|DONBASS I| +08::01::2022 05:02:01|>charge the enemy you'll be fine| +08::01::2022 05:02:01|I finally had enough Alcohol to disable my self awareness center in the brain| +08::01::2022 05:02:04|F-ZERO grinding speedhax| +08::01::2022 05:02:05|Der Film is such a blessing| +08::01::2022 05:02:06|duce is the strongest| +08::01::2022 05:02:09|CRIMEA IS CHINESE| +08::01::2022 05:02:10|tl note: danmaku means 弾幕| +08::01::2022 05:02:16|Der Film | +08::01::2022 05:02:17|tanks tl | +08::01::2022 05:02:20|Taiwan je Srbija| +08::01::2022 05:02:21|Danmaku means bullet hell| +08::01::2022 05:02:22|KOSOVO BELONGS TO ARGENTINE| +08::01::2022 05:02:23|BAITED +08::01::2022 05:02:24|What does that even mean Miho| +08::01::2022 05:02:31|por favor| +08::01::2022 05:02:32|>France is Algerian| +08::01::2022 05:02:33|ut +08::01::2022 05:02:35|Very tired anon here about to shit in a bottle AMA| +08::01::2022 05:02:36|Alexander was Romanian| +08::01::2022 05:02:37|Danmaku is moving mtoi fat, mny drunk brain can't kleep up| +08::01::2022 05:02:41|imagine a guppie school shooting| +08::01::2022 05:02:44|LET ME IN YOU JAPS| +08::01::2022 05:02:48|Will you be posting a picture of the bottle?| +08::01::2022 05:02:48|post pics shitbottle-kun| +08::01::2022 05:02:49|Better be at least a Gatorade bottle| +08::01::2022 05:02:53|puro pinche rosehip| +08::01::2022 05:02:55|HANA PUT DOWN THE GUN!| +08::01::2022 05:02:57|guppie school shooting would require at the very least a PTRD| +08::01::2022 05:02:59|They got this| +08::01::2022 05:03:01|>M3 bros| +08::01::2022 05:03:03|ZUSA +08::01::2022 05:03:03|OPERATION REAR ENTRY| +08::01::2022 05:03:06|unnies +08::01::2022 05:03:08|i think ill be dead by the time we start finales lads| +08::01::2022 05:03:13|ARINA +08::01::2022 05:03:13| +08::01::2022 05:03:15|don't worry saki saw a butterfl| +08::01::2022 05:03:15|Can't shoot carbon coated schoolgirls| +08::01::2022 05:03:17|Hitler was, may God forgive me for uttering this word, Filipino| +08::01::2022 05:03:18|ip +08::01::2022 05:03:18|onk +08::01::2022 05:03:18|RUN AWAY | +08::01::2022 05:03:18|Nonna gives 0 shits| +08::01::2022 05:03:19|bunny cunnies....| +08::01::2022 05:03:19|oke +08::01::2022 05:03:21|NONNA IS ICE COLD| +08::01::2022 05:03:21|ERAILED +08::01::2022 05:03:23|LANG +08::01::2022 05:03:25|Has someone drunk only water?| +08::01::2022 05:03:25|ong +08::01::2022 05:03:25|TOPPU +08::01::2022 05:03:26|YRAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:03:27|AMED +08::01::2022 05:03:29|BASED NONNA| +08::01::2022 05:03:30|UTTERFLY!!!!!!! +08::01::2022 05:03:31|houcho +08::01::2022 05:03:32|chou chou| +08::01::2022 05:03:32|AKI!!!!!!!!!!!!!!!!! +08::01::2022 05:03:33|utterfly +08::01::2022 05:03:33|CHO CGHO| +08::01::2022 05:03:34|NORE~ +08::01::2022 05:03:35|houchou +08::01::2022 05:03:37|HOUCHOU +08::01::2022 05:03:37|houchou +08::01::2022 05:03:37|UTTERFLY +08::01::2022 05:03:38|Cute Autismo| +08::01::2022 05:03:38|MOSURA WA MOSURA| +08::01::2022 05:03:39|AZUSA NO| +08::01::2022 05:03:39|AKI +08::01::2022 05:03:39|enius +08::01::2022 05:03:39|?????? +08::01::2022 05:03:39| +08::01::2022 05:03:40|LOOKING AT WALKING TRASH| +08::01::2022 05:03:40|SHE IS FUCKING DEAD| +08::01::2022 05:03:40|Nonna has no mercy| +08::01::2022 05:03:41|houchou +08::01::2022 05:03:41|UTEEEEEEEE! +08::01::2022 05:03:42|BASED SAKI| +08::01::2022 05:03:43|HOUCHOU +08::01::2022 05:03:43|utterfry +08::01::2022 05:03:44|hinchin +08::01::2022 05:03:45|EAD +08::01::2022 05:03:45|aki? +08::01::2022 05:03:45|>nonna kills the rabbit team| +08::01::2022 05:03:46|CHOUCHOU :D| +08::01::2022 05:03:47|utterfly +08::01::2022 05:03:48|?????????????????????????????????????? +08::01::2022 05:03:48|OTHING +08::01::2022 05:03:48|HOUCHOU +08::01::2022 05:03:49|based nonna| +08::01::2022 05:03:50|houchou +08::01::2022 05:03:50|BUNNY CUNNY| +08::01::2022 05:03:50|Remember Chouchou fro; katanagatari ;_;?| +08::01::2022 05:03:51|I can't believe the rabbits are all fucking dead| +08::01::2022 05:03:53|utism +08::01::2022 05:03:53|EAD +08::01::2022 05:03:53|ALLES KLAR| +08::01::2022 05:03:54|ALLES KLAR| +08::01::2022 05:03:54|saki is pekka?!?!?| +08::01::2022 05:03:54|SAKI TANOSHII| +08::01::2022 05:03:55|RESKRAR:-DDDD +08::01::2022 05:03:56|CARBON COATING| +08::01::2022 05:03:57|What level of autism is this| +08::01::2022 05:03:57|ALLES KLAR| +08::01::2022 05:03:57|What is amsaki>?\| +08::01::2022 05:03:58|reskrar +08::01::2022 05:04:00|Sakinknew they would lose either way| +08::01::2022 05:04:00|>it was nothing| +08::01::2022 05:04:03|LLESKLAR +08::01::2022 05:04:04|ALLES KLAR| +08::01::2022 05:04:06|H-WAI?! +08::01::2022 05:04:06|DON"T WORRY THEY ARE CABON COATED| +08::01::2022 05:04:06|ERWIN DEUTCH??| +08::01::2022 05:04:07|nothing +08::01::2022 05:04:08|UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE | +08::01::2022 05:04:10|Reminder: The StuGIII Crew are my wives.| +08::01::2022 05:04:13|Can carbon coated girls get pregnant?| +08::01::2022 05:04:14|DAT SOUND| +08::01::2022 05:04:14|lar(a) +08::01::2022 05:04:15|how many lolis died in early days| +08::01::2022 05:04:15|TE +08::01::2022 05:04:18|Mitä vittua mikä pekka häh| +08::01::2022 05:04:18|ALLAHU Klar| +08::01::2022 05:04:21|anon's cute wives| +08::01::2022 05:04:24|carbon coated wombs| +08::01::2022 05:04:26|NICE SHOT| +08::01::2022 05:04:27|no lolis died during the filming of this film| +08::01::2022 05:04:28|do it| +08::01::2022 05:04:30|you cannot have penetrative sex with guppies (they are carbon coated)| +08::01::2022 05:04:30|The carbon coating makes them extra fertile | +08::01::2022 05:04:31|aymers +08::01::2022 05:04:33|EW +08::01::2022 05:04:33|ONLY WITH CABON COATED SPERM| +08::01::2022 05:04:34|totsugeki | +08::01::2022 05:04:34|Visible confusion| +08::01::2022 05:04:35|the jobbers did it| +08::01::2022 05:04:36|OTSUGEKI?! +08::01::2022 05:04:37|esus +08::01::2022 05:04:38|ANGERY YELLING| +08::01::2022 05:04:39|otsugeki? +08::01::2022 05:04:43|WHERE'S THE TOTSUGEKI| +08::01::2022 05:04:43|SPEAK JAPANESE| +08::01::2022 05:04:44|uh +08::01::2022 05:04:45|speak japanese| +08::01::2022 05:04:46|Anzu can still handjob me| +08::01::2022 05:04:46|OTSUGEKI? +08::01::2022 05:04:46|ah blhasdf mn sasdfy zxldkvj asdf| +08::01::2022 05:04:47|i want to steal her hat| +08::01::2022 05:04:48|I WANT TO IMPREGNATE SAORIN| +08::01::2022 05:04:49|SEX WITH CARBON COATED KATYUSHA| +08::01::2022 05:04:50|My seed can pentrate even carbon coating| +08::01::2022 05:04:50|NIHONGE DE HANASHI| +08::01::2022 05:04:51|WOW RUSSIAN JUST LIKE IN MY METRO GAMES| +08::01::2022 05:04:54|LARA +08::01::2022 05:04:54|TOTSUGEKI WHEN| +08::01::2022 05:04:55|REMEMBER NO RUSSIAN| +08::01::2022 05:04:56|Is there something that isn't carbon coated in this show?| +08::01::2022 05:05:00|chat +08::01::2022 05:05:02|ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP | +08::01::2022 05:05:02|NTER +08::01::2022 05:05:02|THE BAKA IS HERE DESUWA!| +08::01::2022 05:05:03|I7m so fucking late| +08::01::2022 05:05:03|BASED ROSEHIP| +08::01::2022 05:05:04|RIYETY +08::01::2022 05:05:05|DESU WA| +08::01::2022 05:05:05|AKAHIP +08::01::2022 05:05:05|So you could - in theory - kill a guppie if you use semen-coated bullets?| +08::01::2022 05:05:06|lagmode +08::01::2022 05:05:06|cyka blyad tovarishche| +08::01::2022 05:05:07|WOOOO SPEED DAEMON| +08::01::2022 05:05:07|AKAHIP +08::01::2022 05:05:08| 本語でおk +08::01::2022 05:05:09|ESUWA +08::01::2022 05:05:10|>TFW no Klara gf| +08::01::2022 05:05:10|Who's the redhead?| +08::01::2022 05:05:11|Baka baka baka| +08::01::2022 05:05:13|peedu +08::01::2022 05:05:13|SPEED I AM SPEED| +08::01::2022 05:05:14|ROSEHIP ROSEHIP ROSEHIP | +08::01::2022 05:05:16|ochirondegozaimasu +08::01::2022 05:05:20|PEEEEEEEEEEEEEEEEEEEEEEEEEEEEED +08::01::2022 05:05:20|DESU WA| +08::01::2022 05:05:20|ORIFTO +08::01::2022 05:05:21|rosehip > dvce| +08::01::2022 05:05:23|AKAHIP +08::01::2022 05:05:24|best bong coming through desuwa| +08::01::2022 05:05:24|rosehip tea is unironaclly great| +08::01::2022 05:05:25|THE QUEEN OF SPEED HAS ARRIVED!| +08::01::2022 05:05:26|haha yeah| +08::01::2022 05:05:26|Crusaders go BRRRRRRTTT| +08::01::2022 05:05:28|TL Note: "Anzu" means "SEX"| +08::01::2022 05:05:29|ESU-WA +08::01::2022 05:05:29|GOTTA GO FAST| +08::01::2022 05:05:31|duce > rosehip| +08::01::2022 05:05:31|EKINAI +08::01::2022 05:05:32|BROS IT'S BEEN 25 SECONDS SINCE THE LAST TOTSUGEKI WTF| +08::01::2022 05:05:32|ROSEHIP FOR LEWD SWEATY HIGHSPEED | +08::01::2022 05:05:33|The Boco Museum wasn't carbon coated.| +08::01::2022 05:05:35|Push myself | +08::01::2022 05:05:37|ANZUU IS ALWAYS EATING WTF| +08::01::2022 05:05:38|Yes. The problem is that their aren't enough males in GuP to harvest all the semen.| +08::01::2022 05:05:39|ASTER +08::01::2022 05:05:40|stupid sexy Anzu...| +08::01::2022 05:05:44|LET'S GET THIS PARTY STARTED| +08::01::2022 05:05:44|O S T| +08::01::2022 05:05:45|Rosehip is high-speed low-drag| +08::01::2022 05:05:47|NZUU +08::01::2022 05:05:47|why is anzu so sexual| +08::01::2022 05:05:47|ANZUU IS ALWAYS EATING BUT SHE DOESNT GET BIGGER| +08::01::2022 05:05:48|Anzu potatos are unironically great| +08::01::2022 05:05:50|TL note: Anzu means pig| +08::01::2022 05:05:51|HIGH SPEED HIGH SPEED| +08::01::2022 05:05:52|HIGH SPEED LOW DRAG| +08::01::2022 05:05:54|she's FLAT| +08::01::2022 05:05:54|pop* +08::01::2022 05:05:55|ESUWA +08::01::2022 05:05:55|Anzu trying her hardest to get taller| +08::01::2022 05:05:56|Yeah rosehip is great but let's not get ahead ourselves here non-Dvce people| +08::01::2022 05:05:58|THANKS TL| +08::01::2022 05:05:58|ang +08::01::2022 05:06:02|Some talk of Alexander, and some of Hercules| +08::01::2022 05:06:05|CAM ON INGERLAND| +08::01::2022 05:06:06|NONSTOP SEX KEEPS ANZU SLIM| +08::01::2022 05:06:08|skill issue| +08::01::2022 05:06:09|Does rosehip drink tea or coffee?| +08::01::2022 05:06:10|ZA QUEEN OF SUPEEDOO| +08::01::2022 05:06:11|Anzu's bewlly is a calory devouring reactor| +08::01::2022 05:06:17|she puts redbull in her tea| +08::01::2022 05:06:18|nonstop sex with who?????| +08::01::2022 05:06:19|SCOAR SUM FACKEN TANKS| +08::01::2022 05:06:19|rosehip drinks gamer piss| +08::01::2022 05:06:21|Is vanilla a character?| +08::01::2022 05:06:23|THAT'S A FUCKING HOSPITAL| +08::01::2022 05:06:29|yaaa +08::01::2022 05:06:33|KO U TA I| +08::01::2022 05:06:33|YAAA +08::01::2022 05:06:36|OTSUGEKI? +08::01::2022 05:06:36|FUCK THE HOSPITAL| +08::01::2022 05:06:37|KO U TA I| +08::01::2022 05:06:37|imagine being in gloriana and you get stuck with cranberry| +08::01::2022 05:06:38|We destroyhospitals in senshado| +08::01::2022 05:06:38|TO TSU GE KI| +08::01::2022 05:06:39|O-TSU-GE-KI +08::01::2022 05:06:39|KO U TA I| +08::01::2022 05:06:39|TO TSU GE KI?!| +08::01::2022 05:06:40|OTSUGEKI +08::01::2022 05:06:41|OTSUGEKI +08::01::2022 05:06:41|Me meanwhile whill gain atleast 3 kg this weakend| +08::01::2022 05:06:41|fucking up local infrastructure is the inner dream of every man| +08::01::2022 05:06:41|OTSUGEKI +08::01::2022 05:06:41| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 05:06:42|OTSUGEKI! +08::01::2022 05:06:43|TO TSU GE KI| +08::01::2022 05:06:43|OTSUGEKI +08::01::2022 05:06:43|onsukeki! +08::01::2022 05:06:44|aka +08::01::2022 05:06:44|capable soldier| +08::01::2022 05:06:45|TO TSU GE KI| +08::01::2022 05:06:46| 撃!! +08::01::2022 05:06:46|O-TSU-GE-KI +08::01::2022 05:06:46|OT-SU-GE-KI +08::01::2022 05:06:47|OTSUGEKI +08::01::2022 05:06:47| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 05:06:48|MAO +08::01::2022 05:06:48|wwwwwwwwwww +08::01::2022 05:06:49|TO TSU GE KI| +08::01::2022 05:06:49|AKA +08::01::2022 05:06:50|OTSUGEKI! +08::01::2022 05:06:50|>>> +08::01::2022 05:06:51|OTSUGEKI!!!!!!! +08::01::2022 05:06:51|TOT SU GE KI| +08::01::2022 05:06:51|OTSUGEKI +08::01::2022 05:06:51|CUTE RETARD| +08::01::2022 05:06:51|TO TSU GE KI| +08::01::2022 05:06:52|TO TSU GE KI| +08::01::2022 05:06:52| 喊 +08::01::2022 05:06:52|OTSUGEKI +08::01::2022 05:06:53|OTSUGEKI? +08::01::2022 05:06:53|OKKAN +08::01::2022 05:06:53|TOTSUGEKI | +08::01::2022 05:06:54| 喊 +08::01::2022 05:06:54|etreat? +08::01::2022 05:06:54|BANZAI! BANZAI!| +08::01::2022 05:06:55|IP +08::01::2022 05:06:55|TO TSU GE KI| +08::01::2022 05:06:55|what was her plan there?| +08::01::2022 05:06:56|TOT SU GE KI| +08::01::2022 05:06:56|OKKAN +08::01::2022 05:06:56|7 +08::01::2022 05:06:57|how do muzzle brakes on a tank work?| +08::01::2022 05:06:57|UMBASS +08::01::2022 05:06:58|OTSUGEKI +08::01::2022 05:06:58|ETARDED +08::01::2022 05:06:58|TO TSU GE KI| +08::01::2022 05:06:59|ENNO +08::01::2022 05:06:59|what a fucking jobber| +08::01::2022 05:06:59|Not a capable soldier| +08::01::2022 05:07:00|>not a capable soldier| +08::01::2022 05:07:00|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 05:07:01|EKT +08::01::2022 05:07:02|>NOT A CAPABLE SOLDIER| +08::01::2022 05:07:02|ANZAI +08::01::2022 05:07:02|Not a capable soldier| +08::01::2022 05:07:02|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 05:07:03|ANZAI +08::01::2022 05:07:03|7 +08::01::2022 05:07:03|ETARD +08::01::2022 05:07:03|O-KAN +08::01::2022 05:07:03|OKKAN! +08::01::2022 05:07:03|retard nip is good| +08::01::2022 05:07:03|ITAAA +08::01::2022 05:07:04|a~ka +08::01::2022 05:07:04|TENNO HEIKA BANZAI| +08::01::2022 05:07:05|etard +08::01::2022 05:07:06|obber +08::01::2022 05:07:06|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 05:07:06|YAAA +08::01::2022 05:07:07|What the fuck was she thinking| +08::01::2022 05:07:07|let her die| +08::01::2022 05:07:09|cute and funny| +08::01::2022 05:07:10|shamefur dispray| +08::01::2022 05:07:10|AEKO +08::01::2022 05:07:12|SHAMEFUR DISPRAY| +08::01::2022 05:07:12|SHAMEFUR DISPRAY| +08::01::2022 05:07:16|>NOT a capable soldier| +08::01::2022 05:07:16|TENNO HEIKA BANZAI!!!!| +08::01::2022 05:07:17|TOPPU +08::01::2022 05:07:18|>NOT A CAPABLE SOLDIER| +08::01::2022 05:07:19|EPORTED +08::01::2022 05:07:20|SHAMEFURU DISPRAY| +08::01::2022 05:07:20|AEKO +08::01::2022 05:07:23|HAMEFUR +08::01::2022 05:07:24|How did she survive that?| +08::01::2022 05:07:30|anzai +08::01::2022 05:07:30|ARA-KETSU +08::01::2022 05:07:30|>gets speeding ticket| +08::01::2022 05:07:31|ANZAI +08::01::2022 05:07:32|hummng nonna| +08::01::2022 05:07:35|good thing her drink just disappears| +08::01::2022 05:07:35|what the fuck is that red shit she's drinking| +08::01::2022 05:07:36|Is SPEEDSTER a title| +08::01::2022 05:07:39|I NEED SPEED| +08::01::2022 05:07:40|I love whatever retard idea I have to post there will be a least 2 other anons with the same idea| +08::01::2022 05:07:40|she speedy| +08::01::2022 05:07:41|ULTRA LATE BRAKINGGU!| +08::01::2022 05:07:42|GOOD SHOOTING| +08::01::2022 05:07:43|ealistic +08::01::2022 05:07:43|Miho the God| +08::01::2022 05:07:44|where does she get all the tea after spilling ti| +08::01::2022 05:07:46|TE +08::01::2022 05:07:47|PEEDSTER +08::01::2022 05:07:52|ROLLED +08::01::2022 05:07:54|LEOPON o7| +08::01::2022 05:07:54|Press F for the Posche| +08::01::2022 05:07:56|tea = spilled| +08::01::2022 05:07:57|I want to fuck the shit out of Roship's driver| +08::01::2022 05:07:57|How do these tracks even survive| +08::01::2022 05:07:57|Fucking german shitbox| +08::01::2022 05:07:58|>tea is pink >hair is also pink| +08::01::2022 05:07:59|was that a wz34?| +08::01::2022 05:07:59|orifto +08::01::2022 05:08:00|HOHOHHOOHHO +08::01::2022 05:08:00| +08::01::2022 05:08:01|DESU WA| +08::01::2022 05:08:01|HHHHHHHHHHOOOOOOOOHOHOHOHO +08::01::2022 05:08:01| +08::01::2022 05:08:02| +08::01::2022 05:08:02|DESU WA| +08::01::2022 05:08:03|speedster is our word, but you can say speedsta| +08::01::2022 05:08:04|I love the fact every idea I post has been posted by at least 2 anons| +08::01::2022 05:08:05|hohohohohoh +08::01::2022 05:08:06|DESU WA| +08::01::2022 05:08:09|carbon coated tracks| +08::01::2022 05:08:09| OHOHOHOHOHOHOHO +08::01::2022 05:08:11|HOHOHOHOHO +08::01::2022 05:08:12|PANZER DRIFT| +08::01::2022 05:08:12|The anglerfish is one well oiled machine| +08::01::2022 05:08:12|esu-wa +08::01::2022 05:08:14|HOHOHOHOHO +08::01::2022 05:08:15|DESU WA| +08::01::2022 05:08:15|ROSEHIPS DRIVER IS AN ABSOLUTE MAD LASS| +08::01::2022 05:08:16|ESUWA!~ +08::01::2022 05:08:21|>well oiled| +08::01::2022 05:08:23|get her klara| +08::01::2022 05:08:27|rosehip solos her tank| +08::01::2022 05:08:27|why isnt her driver a named character| +08::01::2022 05:08:30|Sex with klara| +08::01::2022 05:08:36|Mako's Drunken Driving is sublime| +08::01::2022 05:08:38|I have to pee already| +08::01::2022 05:08:44|Me too| +08::01::2022 05:08:46|weak bladder| +08::01::2022 05:08:47|NCOMING +08::01::2022 05:08:52|wow the 3D use| +08::01::2022 05:08:53|OH N-| +08::01::2022 05:08:54|SAME SHOP| +08::01::2022 05:08:54|pee in yukari's mouth| +08::01::2022 05:08:57|ROSEHIP NOOOOOOO| +08::01::2022 05:08:57|GGER +08::01::2022 05:08:57|NOT AGAIN| +08::01::2022 05:08:57|tfw weak bladder INCOMING| +08::01::2022 05:08:59|ODODODODODO +08::01::2022 05:08:59|ODODODODDO +08::01::2022 05:09:00|>not having a carbon coated bladder| +08::01::2022 05:09:00|ro ro ro ro ro| +08::01::2022 05:09:01|ododoodododo +08::01::2022 05:09:01|This shop IRL got increased business from this show| +08::01::2022 05:09:02|ODODOODOD +08::01::2022 05:09:02|ODODOD +08::01::2022 05:09:02|LARGE BRIT DESTROYS RUSSIAN FROM BEHIND| +08::01::2022 05:09:03|How much stamina would you need to satisfy rosehip| +08::01::2022 05:09:03|this shits making me dizzy| +08::01::2022 05:09:04|EAD +08::01::2022 05:09:04|MA JI DE SU NO| +08::01::2022 05:09:04|OOOOOOOOO +08::01::2022 05:09:04|ED +08::01::2022 05:09:04|BASED PROPERTY DAMAGE| +08::01::2022 05:09:04|thanks rosehip, very cool| +08::01::2022 05:09:05| +08::01::2022 05:09:06|they should carbon coat that shop | +08::01::2022 05:09:06|EW +08::01::2022 05:09:08|umbhip +08::01::2022 05:09:08|ODODODODOD +08::01::2022 05:09:09|PEEEEEED +08::01::2022 05:09:10|Lucky bastard| +08::01::2022 05:09:10|ased +08::01::2022 05:09:11|llah +08::01::2022 05:09:11|YES FUCK UP LOCAL INFRASTRUCTURE| +08::01::2022 05:09:11|>>>>>> +08::01::2022 05:09:11|think of 3D what you will but they use 3D well| +08::01::2022 05:09:12|SHE DED| +08::01::2022 05:09:12|ROSEHIP NO| +08::01::2022 05:09:12| +08::01::2022 05:09:13|EAD +08::01::2022 05:09:14|GAIN! +08::01::2022 05:09:14| +08::01::2022 05:09:15|KLARA AND ROSEHIP DEAD| +08::01::2022 05:09:15|EAD +08::01::2022 05:09:15|EAD +08::01::2022 05:09:15|ON~ +08::01::2022 05:09:16|Rolling in insurance baby| +08::01::2022 05:09:18| +08::01::2022 05:09:19|I cant believe rosehip and klara are dead| +08::01::2022 05:09:20|YES! MY SHOP!| +08::01::2022 05:09:21|>crashed, rammed into, exploded cant harm the carbon coating| +08::01::2022 05:09:24|>ROOF COLLAPSED| +08::01::2022 05:09:24|iwtwm +08::01::2022 05:09:27|being an insurance broker would be hell| +08::01::2022 05:09:27|rosehip killed in a fireball| +08::01::2022 05:09:33|>zero causalties| +08::01::2022 05:09:33|FUCKING BUFFERING| +08::01::2022 05:09:35|Why don't they just carbon coat there infrastructure| +08::01::2022 05:09:38|even by gup logic they should be dead| +08::01::2022 05:09:40|Guy just lost all his posessions| +08::01::2022 05:09:40|This week rosehip fucking crashes and dies| +08::01::2022 05:09:40|JUST FUCK THE TOWN UP| +08::01::2022 05:09:43|I can't believe Rosehip is fucking dead | +08::01::2022 05:09:47|I buffered only once for 1 second| +08::01::2022 05:09:53|INA-CHAN +08::01::2022 05:09:54|ETZER +08::01::2022 05:09:59|APOLI-TURN +08::01::2022 05:09:59|>FIXED TURRETS| +08::01::2022 05:10:01|GAS GAS GAS| +08::01::2022 05:10:01|PREASE HELPU DUCK DONO| +08::01::2022 05:10:02|get it, napoli-turn?| +08::01::2022 05:10:04|OH SHIT| +08::01::2022 05:10:04|>i'm a genius >oh no!| +08::01::2022 05:10:05|KAVE-TAN ENTER!| +08::01::2022 05:10:07|180 no scope| +08::01::2022 05:10:09|ORIFUTO +08::01::2022 05:10:19|Please destroy my home!| +08::01::2022 05:10:20|The StuGIII crew are my wives.| +08::01::2022 05:10:22|180 quick scope| +08::01::2022 05:10:23|Bro i think your wives just deaded| +08::01::2022 05:10:25|UFFERING +08::01::2022 05:10:28|rickstabbed +08::01::2022 05:10:29|>russian internet again| +08::01::2022 05:10:31|violating traffic rules| +08::01::2022 05:10:33|>babysit a team of retards || >still do decently against a combination of two of the best teams || Oarai is OP as fuck.| +08::01::2022 05:10:36|UFFERING +08::01::2022 05:10:36|you arent getting out of this one no way| +08::01::2022 05:10:37|>imagine buffering| +08::01::2022 05:10:45|RIP CIVVIES| +08::01::2022 05:10:46|ENTA ENTA MISSION| +08::01::2022 05:10:49|cute little tank| +08::01::2022 05:10:49|sly dogs| +08::01::2022 05:10:49|DO IT| +08::01::2022 05:10:50| +08::01::2022 05:10:50|sheep led by a lion| +08::01::2022 05:10:51|onk +08::01::2022 05:10:51|ekt +08::01::2022 05:10:52|seems dangerous still| +08::01::2022 05:10:52|WORLD OF SPG SIGN| +08::01::2022 05:10:52|World of SPG| +08::01::2022 05:10:53|OMK +08::01::2022 05:10:54|>using civvies as cover| +08::01::2022 05:10:55|That's enough to kill somebody| +08::01::2022 05:10:55| +08::01::2022 05:10:55|>non carbon coated audience| +08::01::2022 05:10:56|Thank god for her helmet| +08::01::2022 05:10:56|BONK* +08::01::2022 05:10:57|ONK +08::01::2022 05:10:57|OARAI SHILLING| +08::01::2022 05:10:58|buffered again shit| +08::01::2022 05:11:00|APPY +08::01::2022 05:11:00|wtf i never heard this cover before| +08::01::2022 05:11:02|CARBON COATED GLASS| +08::01::2022 05:11:02|that's a storng ass escalator| +08::01::2022 05:11:03|-why +08::01::2022 05:11:04|Is this a war crime?| +08::01::2022 05:11:06|ED TAIMU!| +08::01::2022 05:11:06|lawyer here, using civilians as cover is in fact a war crime| +08::01::2022 05:11:06|arcrimes.png +08::01::2022 05:11:07|The image of bouncing tanks fills my mind| +08::01::2022 05:11:08|>he doesn't drive through his local shopping centre| +08::01::2022 05:11:08|civilian casualties are OK| +08::01::2022 05:11:09|How did she not get decapicitated?| +08::01::2022 05:11:11|es +08::01::2022 05:11:13|PLAY WORLD OF SPG NOW| +08::01::2022 05:11:15|eadscalator +08::01::2022 05:11:15|DONO +08::01::2022 05:11:16|DUCK-DONO DE-ARIMASU| +08::01::2022 05:11:16|TL Note: "Anzu" means "SEX"| +08::01::2022 05:11:16|ENTAH ENTAH MISSION| +08::01::2022 05:11:25|nzu +08::01::2022 05:11:27|If they are enemy civilians then they are enemies too| +08::01::2022 05:11:27|THANKS TL| +08::01::2022 05:11:30|SUPER MORALS COMMITTEE ATTACK!| +08::01::2022 05:11:30|AYBAY +08::01::2022 05:11:32|It's time to do "that" | +08::01::2022 05:11:33|Guys... where's Duce?| +08::01::2022 05:11:34|EAMWORK +08::01::2022 05:11:35|aby +08::01::2022 05:11:35|tep +08::01::2022 05:11:36|AYBAYT +08::01::2022 05:11:36|ABY +08::01::2022 05:11:36|AYBEE +08::01::2022 05:11:36|wnd +08::01::2022 05:11:37|ABY +08::01::2022 05:11:38|niceu baby~| +08::01::2022 05:11:43|>that one anon dropping acid in the thread| +08::01::2022 05:11:45|chats dying we need dvce back| +08::01::2022 05:11:46|THEY'RE BOOSTING| +08::01::2022 05:11:48|COOL POV| +08::01::2022 05:11:51|Let's trash these steps lmao| +08::01::2022 05:11:54|ollercoaster +08::01::2022 05:11:57|DOWNHILL TANKERY!| +08::01::2022 05:11:57|MAGINE +08::01::2022 05:12:00|Nonna: The things I put up with for that sweet loli cunny| +08::01::2022 05:12:01|last time i dropped acid watching one piece i had a blast| +08::01::2022 05:12:03|tall hat| +08::01::2022 05:12:07|dont push yourself, gremlim| +08::01::2022 05:12:08|lmao Nonna praying| +08::01::2022 05:12:12|>wan piss| +08::01::2022 05:12:12|not this time| +08::01::2022 05:12:14|GUNNER, CARBON, PC!| +08::01::2022 05:12:14|seething midget| +08::01::2022 05:12:15|butt slut incoming| +08::01::2022 05:12:15|\ +08::01::2022 05:12:17|DEJA VU| +08::01::2022 05:12:19|best girl| +08::01::2022 05:12:19|again +08::01::2022 05:12:19|Ruruki a cutie| +08::01::2022 05:12:20|NAL +08::01::2022 05:12:20|Splice mistake?| +08::01::2022 05:12:22|DEJA VU| +08::01::2022 05:12:22|aiters +08::01::2022 05:12:22|Never done drugs and your performance doesn't really convince me otherwise| +08::01::2022 05:12:24|DUMB SLAG| +08::01::2022 05:12:25|WAIT A SECOND WEVE SEEN THIS BEFORE| +08::01::2022 05:12:25|DEJA VU| +08::01::2022 05:12:25|deja vu| +08::01::2022 05:12:26|poor acidanon is shitting his pants| +08::01::2022 05:12:26|OH NO NO NO NO NO NOT AGAIN| +08::01::2022 05:12:28|200Iq pl;ayh incoming| +08::01::2022 05:12:28|>falling for it again| +08::01::2022 05:12:29|HAHA Ruri again| +08::01::2022 05:12:30|lol lmao| +08::01::2022 05:12:31|I've seen this scene before| +08::01::2022 05:12:31|>I'm not falling for this one again...| +08::01::2022 05:12:32|ruruki is so dumb| +08::01::2022 05:12:32|OH NONONONONONO| +08::01::2022 05:12:36|NTER +08::01::2022 05:12:36|AITED +08::01::2022 05:12:37|THEY CAME FROM BEHIND| +08::01::2022 05:12:37|urikuri +08::01::2022 05:12:37|oh n-| +08::01::2022 05:12:38|aka +08::01::2022 05:12:39|STUPID BITCH| +08::01::2022 05:12:40|aited +08::01::2022 05:12:41|SHE FELL FOR IT AGAIN| +08::01::2022 05:12:42|EK +08::01::2022 05:12:42|TFO +08::01::2022 05:12:43|ukuriribros... +08::01::2022 05:12:44|WNED +08::01::2022 05:12:45|DUMB SLAG| +08::01::2022 05:12:45|THE TASTE OF VICTORY | +08::01::2022 05:12:45|HIRU-DONO +08::01::2022 05:12:46|URI... +08::01::2022 05:12:47|TFO +08::01::2022 05:12:47|RIGATO +08::01::2022 05:12:48|TFO +08::01::2022 05:12:51|>the garage is speaking japanese| +08::01::2022 05:12:52|poor soviets| +08::01::2022 05:12:53|Saori's saoris| +08::01::2022 05:12:53|KULELE +08::01::2022 05:12:54|rukuriri never do shit| +08::01::2022 05:12:57|SAORI'S JIGGLY TITS| +08::01::2022 05:12:58|>stupid brit || you could have just said brit| +08::01::2022 05:12:59|KULELE +08::01::2022 05:13:08|katyusha saying darjeeling 😭| +08::01::2022 05:13:16|>churchill >fast| +08::01::2022 05:13:19|So when is the Panzer IV gonna get that underside mirror?| +08::01::2022 05:13:20|You insulting usa brits anon| +08::01::2022 05:13:24|rown +08::01::2022 05:13:25|SEA MONSTER| +08::01::2022 05:13:26|NTER +08::01::2022 05:13:28|NTER +08::01::2022 05:13:29|NTER +08::01::2022 05:13:30|the drowned| +08::01::2022 05:13:32|>trustworthy ally| +08::01::2022 05:13:32|NTER +08::01::2022 05:13:32|V-TAN +08::01::2022 05:13:35|KV-2 my beloved| +08::01::2022 05:13:35|RIP WAGIES| +08::01::2022 05:13:35|INA +08::01::2022 05:13:39|V-NII +08::01::2022 05:13:39|would this work irl?| +08::01::2022 05:13:40|AABEE-TAN +08::01::2022 05:13:40|YES FUCK UP THAT OFFICE| +08::01::2022 05:13:43|sweet fucking lord| +08::01::2022 05:13:44|THOUSANDS DEAD| +08::01::2022 05:13:45|MY HOUSE| +08::01::2022 05:13:45|FUCK YOUR SHIT| +08::01::2022 05:13:45|$46 billion in damages| +08::01::2022 05:13:46|FUCK YOUR CITY| +08::01::2022 05:13:47|arcires! +08::01::2022 05:13:48|amn +08::01::2022 05:13:48|now that's stopping power| +08::01::2022 05:13:48|jesus christ| +08::01::2022 05:13:49|>russian magic defends against hydrolock| +08::01::2022 05:13:49|FUCK SHIT UP| +08::01::2022 05:13:49| +08::01::2022 05:13:51|NO SURVIVORS| +08::01::2022 05:13:53|RIP 100 wagies| +08::01::2022 05:13:55|holy shit| +08::01::2022 05:13:56|ang +08::01::2022 05:13:56|why don't they just hide their flag tank in the water| +08::01::2022 05:13:56|super HEHE| +08::01::2022 05:13:56|FUCK... anzu!| +08::01::2022 05:13:56|FUCK THAT HOSPITAL| +08::01::2022 05:13:57|That was literally a hospital| +08::01::2022 05:13:57|the power of 9mm| +08::01::2022 05:13:57|someone call tank police| +08::01::2022 05:13:58|How many people were in that hospital, do you think| +08::01::2022 05:13:59|>property damage| +08::01::2022 05:13:59|HOLY SHIT| +08::01::2022 05:14:00|COME VISIT OORAI| +08::01::2022 05:14:01| +08::01::2022 05:14:01|KILL THEM ALL NINA| +08::01::2022 05:14:03|just fuck my city up| +08::01::2022 05:14:03|43 dead in hotel explosion, ruled as a skill issue| +08::01::2022 05:14:04|akas +08::01::2022 05:14:04|ARKURAIMY +08::01::2022 05:14:04|*260 wagies| +08::01::2022 05:14:04|h +08::01::2022 05:14:06|Don't woory anons the people are carbon coated| +08::01::2022 05:14:07|DUMB LOLI TANK| +08::01::2022 05:14:08|reh +08::01::2022 05:14:08|LOOF +08::01::2022 05:14:08| +08::01::2022 05:14:09|ASTED +08::01::2022 05:14:10|ara ara| +08::01::2022 05:14:11|V-bros +08::01::2022 05:14:11|Oh no no no...| +08::01::2022 05:14:12|ummies +08::01::2022 05:14:13|YAAA! +08::01::2022 05:14:13| +08::01::2022 05:14:13|ARA ARA| +08::01::2022 05:14:14|YAA +08::01::2022 05:14:15|KV baka| +08::01::2022 05:14:15|YAA~ +08::01::2022 05:14:15|YAAA +08::01::2022 05:14:16|DAMN KIDS| +08::01::2022 05:14:17|how do you miss that bad?| +08::01::2022 05:14:17|YAA +08::01::2022 05:14:17|YAAAA +08::01::2022 05:14:18|YAA +08::01::2022 05:14:18|GENEVE CONVENTION DOES NOT APPLY| +08::01::2022 05:14:19|yaa +08::01::2022 05:14:19|YAAA +08::01::2022 05:14:19|YAAA +08::01::2022 05:14:21|ANTEATER NO| +08::01::2022 05:14:26|Screen reserved for this danmaku| +08::01::2022 05:14:30|KV crew sent to siberia| +08::01::2022 05:14:30|BEACH ASSAULT| +08::01::2022 05:14:31|TL Note: KV-2 means "Fat"| +08::01::2022 05:14:31|Momo's momos...| +08::01::2022 05:14:31|ANTEATERS OUT AGAIN| +08::01::2022 05:14:35|Will momo finally kill| +08::01::2022 05:14:35|MOMO CHAN YOU MISSED| +08::01::2022 05:14:36|OMO-CHAN... +08::01::2022 05:14:39|tanks tl | +08::01::2022 05:14:40|aki +08::01::2022 05:14:41|momo you missed| +08::01::2022 05:14:41|the hospital was empty, this world doesn't know covid| +08::01::2022 05:14:43|udderfly +08::01::2022 05:14:43|MOMO SHIT| +08::01::2022 05:14:45|ILL!!! +08::01::2022 05:14:46|>kill them| +08::01::2022 05:14:47| +08::01::2022 05:14:49|ILL +08::01::2022 05:14:49|FRENCH TANKS ARE SHIT| +08::01::2022 05:14:49| +08::01::2022 05:14:52| +08::01::2022 05:14:52|harbros... +08::01::2022 05:14:53|no one got hurt no worry| +08::01::2022 05:14:53|KILL THEM ALL| +08::01::2022 05:14:54|Duck dono ;_; | +08::01::2022 05:14:55|rutal +08::01::2022 05:14:55| +08::01::2022 05:14:56|Coofvid didn't existed in 2015| +08::01::2022 05:14:56|that wasn't a hospital retard| +08::01::2022 05:14:56|SODOCLONES DEAD| +08::01::2022 05:14:58| +08::01::2022 05:15:01|>french """"""""tanks"""""""""| +08::01::2022 05:15:01|katyushas thighs| +08::01::2022 05:15:01|ead +08::01::2022 05:15:06|POLOGIZE +08::01::2022 05:15:07|AITED +08::01::2022 05:15:09|Carbon coated girls| +08::01::2022 05:15:13|>AAAAAAAAAAAAAAAAAA KLARA NONNA SAVE ME PLEEEEEEEEEEEEEAAAAAAAASSSSSEEEEEEEEEEE| +08::01::2022 05:15:13|no drifting toay| +08::01::2022 05:15:13|tfw no russian loli gf| +08::01::2022 05:15:14|POLOJIZZ +08::01::2022 05:15:15|Drift: denied| +08::01::2022 05:15:18|shitty reaction time from gunner there| +08::01::2022 05:15:21|Fuck your drifting| +08::01::2022 05:15:21|BALLS OF STEEL| +08::01::2022 05:15:37|anmaku +08::01::2022 05:15:39|ESUWA +08::01::2022 05:15:39|IYAAAAAAAAAAAAAAA +08::01::2022 05:15:39|DESU WA| +08::01::2022 05:15:40|DESU WA| +08::01::2022 05:15:40|cheers love| +08::01::2022 05:15:43|OSEHIP +08::01::2022 05:15:43|punished rosehip| +08::01::2022 05:15:44|a kills a kill| +08::01::2022 05:15:44|OW +08::01::2022 05:15:45|can panzer iv pen a churchhill?| +08::01::2022 05:15:45|SHE DID IT| +08::01::2022 05:15:46|OMO +08::01::2022 05:15:46|SHINUCHI SANJOU DESU WA| +08::01::2022 05:15:46|a hush falls upon the crowd| +08::01::2022 05:15:46|PEEEED +08::01::2022 05:15:46|omo... +08::01::2022 05:15:47|MOMO HIT SOMETHING| +08::01::2022 05:15:49|ekt +08::01::2022 05:15:49|HOW THE FUCK DID THAT SHOT WENT ALL THE WAY TO THE RIGHT| +08::01::2022 05:15:49|IP +08::01::2022 05:15:50|MOMO YOU MISSED| +08::01::2022 05:15:51|bakahip saves the day| +08::01::2022 05:15:52|OSEHIIIIIIIIP +08::01::2022 05:15:53|s +08::01::2022 05:15:53|Momo you fucking idiot| +08::01::2022 05:15:54|with APCR, yes| +08::01::2022 05:15:54| +08::01::2022 05:15:54|not in frontal aspect| +08::01::2022 05:15:54|Momo MVP| +08::01::2022 05:15:55|ASUGA +08::01::2022 05:15:55|rosehip dies again| +08::01::2022 05:15:57|Momo no longer kill virgin| +08::01::2022 05:15:59| 打惨状 +08::01::2022 05:16:02|LET'S GO OOARAI| +08::01::2022 05:16:03|>Momo's first kill is a total fluke| +08::01::2022 05:16:05| +08::01::2022 05:16:07|TFO +08::01::2022 05:16:07|no longer any virgin either| +08::01::2022 05:16:07| +08::01::2022 05:16:07| +08::01::2022 05:16:08|>5lber gun penetrating shit| +08::01::2022 05:16:09| +08::01::2022 05:16:09| +08::01::2022 05:16:09|IP +08::01::2022 05:16:09|PROCLAIM THE SCORE| +08::01::2022 05:16:10|kay oh| +08::01::2022 05:16:10| +08::01::2022 05:16:10|igged +08::01::2022 05:16:11|OOARAI JUST CANT WIN| +08::01::2022 05:16:11|DARJEELING. CAN'T. STOP. WINNING.| +08::01::2022 05:16:12|FUCK ENGLAND| +08::01::2022 05:16:12| +08::01::2022 05:16:13|OBBED +08::01::2022 05:16:13| +08::01::2022 05:16:14|tTWO FOR TWO BITCHES| +08::01::2022 05:16:14|AAAAAAAAY +08::01::2022 05:16:17|NO TEAM| +08::01::2022 05:16:17|DDDDDDDDDDDDDDD +08::01::2022 05:16:18|how was rosehips tank not eliminated earlier?| +08::01::2022 05:16:18|Darjeeling undefeated| +08::01::2022 05:16:18|OBO +08::01::2022 05:16:19|This cant be real| +08::01::2022 05:16:20|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDd +08::01::2022 05:16:20|FUG :DDDDDDDDDD| +08::01::2022 05:16:20|should have charged more| +08::01::2022 05:16:21|IGGED +08::01::2022 05:16:21|RIGGED MATCH| +08::01::2022 05:16:21|DARJEELING BROS WE JUST CAN'T LOVE| +08::01::2022 05:16:21|DDDDDDD +08::01::2022 05:16:22|DDDD +08::01::2022 05:16:22|oorai stuc with jobbers| +08::01::2022 05:16:22|FUG :DDD| +08::01::2022 05:16:23|OOOSERSSSSS +08::01::2022 05:16:23|:D DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 05:16:23|ORARI BROS?| +08::01::2022 05:16:23|BENIS :DDDDDDD| +08::01::2022 05:16:24|DDDDDDDDDDD +08::01::2022 05:16:25|DDDDDDDDDDDDDDDDDDD +08::01::2022 05:16:25|FUCK ST. GLORIANA| +08::01::2022 05:16:25|FUG :DDDDDDDDDDD| +08::01::2022 05:16:25|THE ETERNAL ANGLO| +08::01::2022 05:16:27|yukari quickload holy shit| +08::01::2022 05:16:28|DDDDDDDDD +08::01::2022 05:16:28|UGGGGGGGGGGGGGGGG +08::01::2022 05:16:28|Perkele :DDD| +08::01::2022 05:16:29|UGGG +08::01::2022 05:16:29|DDDDDDDDDDDDDDDD +08::01::2022 05:16:29|Orai 's win was a fluke| +08::01::2022 05:16:31|GAME WAS RIGGED FROM THE START| +08::01::2022 05:16:31|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:16:32|CHIHATAN BASED| +08::01::2022 05:16:32|SEX WITH MIKA| +08::01::2022 05:16:33|beis :DDDDDDDDDDDDDDD| +08::01::2022 05:16:34|engin! +08::01::2022 05:16:34|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 05:16:34|ERKELE +08::01::2022 05:16:35|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:16:35|oh fug :--DDDD| +08::01::2022 05:16:36|GOTT STRAFFE ENGLAND| +08::01::2022 05:16:36|??????? +08::01::2022 05:16:37|FOR SALVATION| +08::01::2022 05:16:37|13 penguins dead during Ooarai::Gloriana training match| +08::01::2022 05:16:37|What was with that unfair team distribution| +08::01::2022 05:16:37|UG +08::01::2022 05:16:39|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:16:39|PERFIDIOUS ALBION| +08::01::2022 05:16:39|FUG :DDDDDDDDDDDDD| +08::01::2022 05:16:39|DDDDDDDDDDDD +08::01::2022 05:16:39|>no penguin deaths| +08::01::2022 05:16:39|aked +08::01::2022 05:16:40|DDDDDDDDDDDDD +08::01::2022 05:16:40|BENIS xDDDDDDDDDDDDDDD| +08::01::2022 05:16:40|oh okay| +08::01::2022 05:16:40|Momo stands for "Mmmm, it seems I can't aim"| +08::01::2022 05:16:40|ALL HAIL BRITANNIA| +08::01::2022 05:16:41|ENGI +08::01::2022 05:16:41|DDDDDDD +08::01::2022 05:16:42|TOO BAD THERE WILL NEVER BE A REMATCH BETWEEN OOARAI AND GLORIANA| +08::01::2022 05:16:43|PENGUIN CASUALTIES| +08::01::2022 05:16:44|grape-kun ;_;| +08::01::2022 05:16:44|>carbon coated penguins| +08::01::2022 05:16:45|its +08::01::2022 05:16:45|en-Pen? +08::01::2022 05:16:46|EW +08::01::2022 05:16:46|>MC team and japan team up >lose| +08::01::2022 05:16:47|OOOOOOOOOOOOOOOOOOOHHHHHHHHHH +08::01::2022 05:16:49|EW +08::01::2022 05:16:49|NA>KD GIR>KLLS| +08::01::2022 05:16:50|EW +08::01::2022 05:16:50|OKUGOKU +08::01::2022 05:16:50|Carbon coated penguins| +08::01::2022 05:16:51|Protecc pengies.\| +08::01::2022 05:16:51|rip penpen| +08::01::2022 05:16:51|DDDDDDD +08::01::2022 05:16:52|RIP PINGU| +08::01::2022 05:16:52|INA +08::01::2022 05:16:52|RIP Grape-kun| +08::01::2022 05:16:53|CUTE PENGUINS| +08::01::2022 05:16:53|UH +08::01::2022 05:16:55|YOU WILL NEVER BATHE WITH THE GUPPIES| +08::01::2022 05:16:55|oT +08::01::2022 05:16:56|more bathes| +08::01::2022 05:16:56|VICTORY SHOWER| +08::01::2022 05:16:57|OOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 05:16:57|EEEEEEEEEEEEEEEW +08::01::2022 05:16:57|EEEEEEEEEEEX +08::01::2022 05:16:58| +08::01::2022 05:16:58|EW +08::01::2022 05:16:59|OHHHHHHHH +08::01::2022 05:16:59|can a churchill pen pen-pen?| +08::01::2022 05:17:00|MOMO, NAGAI| +08::01::2022 05:17:01|IMAGINE THE SMELL| +08::01::2022 05:17:01|grape-kun ;________;| +08::01::2022 05:17:01|Im gonna coom| +08::01::2022 05:17:02|I NEED RAPE PROTECTION ToT| +08::01::2022 05:17:02|so BIG| +08::01::2022 05:17:02|UUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOH +08::01::2022 05:17:03|labia soup | +08::01::2022 05:17:04|TL Note: "Anzu" means "SEX"| +08::01::2022 05:17:05|ANZUS FLAT CHEST| +08::01::2022 05:17:06|flat and stacked| +08::01::2022 05:17:06|CAN I DRINK THAT BATHWATER?| +08::01::2022 05:17:07|LAT +08::01::2022 05:17:07|RECT +08::01::2022 05:17:07|LAT +08::01::2022 05:17:08|Anzu soup| +08::01::2022 05:17:08|OOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 05:17:09|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 05:17:10|OOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 05:17:11|I like that| +08::01::2022 05:17:13|omo's +08::01::2022 05:17:14|IG +08::01::2022 05:17:14|PEKOE UOOOOOOOOOOOOOOOH| +08::01::2022 05:17:15|ANZU'S CHEST UOOOOHHH| +08::01::2022 05:17:16|Darjeeling is STACKED| +08::01::2022 05:17:17|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 05:17:17|NONNA HUGE TITS| +08::01::2022 05:17:19|lat +08::01::2022 05:17:19|PEKOE UOOOO| +08::01::2022 05:17:20|LAT +08::01::2022 05:17:20|DRINKING ANZU'S ONSEN WATER| +08::01::2022 05:17:21|Desu wa?| +08::01::2022 05:17:21|MOMO'S MOMOS| +08::01::2022 05:17:22|oh fuck my pp| +08::01::2022 05:17:22|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 05:17:23|OOOOOOOOOOOOOOOOOOOOOH +08::01::2022 05:17:23|KATYUSHA UOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH| +08::01::2022 05:17:23|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 05:17:24|SHOW ME| +08::01::2022 05:17:25|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEKUSU +08::01::2022 05:17:25|UUUUUUUUUUUUUUUUUUUUUUUUUUUHH +08::01::2022 05:17:26|Naked girls...| +08::01::2022 05:17:26|SHUT THE FUCK UP DARJEELING| +08::01::2022 05:17:27|bath water with anzu and katyusha| +08::01::2022 05:17:27|FFFFFFFFLLLLLLLLLLLLLLLAAAAAATTTTTTTTT CCCCCCCCCCHHHHHHHHHEEEEEESSSSSSSSSTTTTTTTTTTTTTTTTTTTT| +08::01::2022 05:17:28|YUou will never Darjeerling's Darjeerling's| +08::01::2022 05:17:29|EXHIBITIONISM MATCH| +08::01::2022 05:17:29|MASSIVE NONNA KNOCKERS| +08::01::2022 05:17:30|Nonna is large| +08::01::2022 05:17:31|OHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 05:17:32|IM GONNA SOOOOOOOOOOOOOOB| +08::01::2022 05:17:33|UUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHH +08::01::2022 05:17:33|TOO LEWD| +08::01::2022 05:17:33|Katyusha's flat chest...| +08::01::2022 05:17:33|oT +08::01::2022 05:17:33|if they drink too much tea they will PEE| +08::01::2022 05:17:34|27CM +08::01::2022 05:17:34| 本語でおk +08::01::2022 05:17:35|they should bottle that bathwater | +08::01::2022 05:17:36|SEX WITH HANA| +08::01::2022 05:17:38|SPEAK JAPANESE | +08::01::2022 05:17:39|The gremlin fears the titty monsters| +08::01::2022 05:17:39|cock out| +08::01::2022 05:17:40|she still counting| +08::01::2022 05:17:40|Nishi bun!| +08::01::2022 05:17:42|cute russian| +08::01::2022 05:17:42|I LOST| +08::01::2022 05:17:42|Now I need to pee| +08::01::2022 05:17:44|ITSUGEKI +08::01::2022 05:17:44|NIHONGO MOTHERFUCKER DO YOU SPEAK IT?| +08::01::2022 05:17:44|SEX WITH NISHI| +08::01::2022 05:17:45|Nishi's Nishi's in Nishiwater Nishi Nishi| +08::01::2022 05:17:46|ANZU IN THE BACK| +08::01::2022 05:17:49|>gaming instead of bathing Lmao| +08::01::2022 05:17:50|>ALL THE FLAT CHESTS| +08::01::2022 05:17:51|LUFF!!! +08::01::2022 05:17:52|ANZAI +08::01::2022 05:17:52|FEEL THE FLUFF| +08::01::2022 05:17:52|Yukarying Yukari's Yukaris| +08::01::2022 05:17:53|pee in the guppy bath| +08::01::2022 05:17:53|ARUHODO +08::01::2022 05:17:55|LOOF +08::01::2022 05:17:58|STEAMY SEX WITH HANA| +08::01::2022 05:17:58|ENDLESS EIGHT| +08::01::2022 05:17:59|FC +08::01::2022 05:17:59|GUPPY WATER| +08::01::2022 05:18:00|anasemasen +08::01::2022 05:18:03|mako pls| +08::01::2022 05:18:03|NO MAKO| +08::01::2022 05:18:03|Fuck school| +08::01::2022 05:18:04|TL Note: "Anzu" means "SEX"| +08::01::2022 05:18:05|that can be arranged| +08::01::2022 05:18:06|ENTER MEXT| +08::01::2022 05:18:06|Saoris oppai| +08::01::2022 05:18:07|Can Nishi puke on my cock| +08::01::2022 05:18:08|NEVER WORK| +08::01::2022 05:18:08|LAG!! +08::01::2022 05:18:09|EXTERMINATOR +08::01::2022 05:18:09|NTER +08::01::2022 05:18:09|MAKO NO| +08::01::2022 05:18:10|mako just altered reality by willing it| +08::01::2022 05:18:11|Erika best grill| +08::01::2022 05:18:11|THANKS TL| +08::01::2022 05:18:12|AAAAAAAAA +08::01::2022 05:18:12|oh fr?| +08::01::2022 05:18:12|take me mako| +08::01::2022 05:18:14|mako jinxed it| +08::01::2022 05:18:14|>about that| +08::01::2022 05:18:16|ANON, WHICH GUPPIE YOU WANT TO TOTSUGEKI IN? | +08::01::2022 05:18:17|AEKO +08::01::2022 05:18:19|UUUUUUUUUUUUUUOOOOOOOOOOOOOO +08::01::2022 05:18:19|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 05:18:19|SPANA +08::01::2022 05:18:20|LAT +08::01::2022 05:18:20|so fucking FLAT| +08::01::2022 05:18:23|nice boat| +08::01::2022 05:18:23|D +08::01::2022 05:18:26|PAIZURI WITH HANA| +08::01::2022 05:18:26|TONY KAKU| +08::01::2022 05:18:27|so many fat gup titties| +08::01::2022 05:18:28|>those volleyballs| +08::01::2022 05:18:28|OOBA +08::01::2022 05:18:28|ANZU HAIR BUNS AND FLAT CHEST UOOOOHHHHH| +08::01::2022 05:18:28|TOTSUGEKI YUKARI MY WIFE <3| +08::01::2022 05:18:30|>oh yeah we're just gonna shut down the school again lamo| +08::01::2022 05:18:30|>also don't put on any clothes please| +08::01::2022 05:18:32|bros i want to live in a world where the most feminine thing a girl can do is driving tanks| +08::01::2022 05:18:34|not good| +08::01::2022 05:18:34| UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +08::01::2022 05:18:38|DId the aspect ratio change?| +08::01::2022 05:18:40|KEEP OUT| +08::01::2022 05:18:41|NAIZURI with Jagdtpanzer| +08::01::2022 05:18:41|UH OHHH| +08::01::2022 05:18:43|I'm claiming Momo. Since no one else wants her, she'll be ALL MINE| +08::01::2022 05:18:46|uto +08::01::2022 05:18:47|oh noes| +08::01::2022 05:18:47|KEEP FIT| +08::01::2022 05:18:48|tf +08::01::2022 05:18:50|Rip school| +08::01::2022 05:18:51|OH NO OOARAI BROS| +08::01::2022 05:18:51|Why hasn't Renta Tsuji fucked Anzu yet| +08::01::2022 05:18:52|?????????????? +08::01::2022 05:18:52|male +08::01::2022 05:18:52|ol +08::01::2022 05:18:53|NTER +08::01::2022 05:18:53|URGUY +08::01::2022 05:18:53|ENTER MEXT| +08::01::2022 05:18:55|ENTER MALE| +08::01::2022 05:18:57|BREHS WE'RE IN TROUBLE| +08::01::2022 05:18:57|EXT +08::01::2022 05:18:57|hot nakadashi sex with kay!| +08::01::2022 05:18:58|thousands of refugees| +08::01::2022 05:18:58|NTER +08::01::2022 05:18:59|team mext lets gooooo| +08::01::2022 05:19:00|ALE +08::01::2022 05:19:01|NTER +08::01::2022 05:19:01|male +08::01::2022 05:19:01|BEST BOY| +08::01::2022 05:19:01|i can't read| +08::01::2022 05:19:01|zusa... +08::01::2022 05:19:01|WE DIDN'T MAKE IT BROS| +08::01::2022 05:19:01|EXT +08::01::2022 05:19:01|::our guy::| +08::01::2022 05:19:01|KEEP OUT MEANS KEEP OUT| +08::01::2022 05:19:02|NTER +08::01::2022 05:19:02|it means time for me to fuck the entire volleyball teamn| +08::01::2022 05:19:02|ourlad:: +08::01::2022 05:19:02|MEXT GUY DID NOTHING WRONG| +08::01::2022 05:19:03|???????????? +08::01::2022 05:19:03|NTER +08::01::2022 05:19:03|ISAMA +08::01::2022 05:19:04|NTER +08::01::2022 05:19:05|TL NOTE: KEEP OUT means PANZER VOR| +08::01::2022 05:19:05|WHAT THE FUCK SENSHADO FEDERATION MAN| +08::01::2022 05:19:05| +08::01::2022 05:19:07|THE MAN| +08::01::2022 05:19:08|MEXTFAG IS HERE| +08::01::2022 05:19:08|NSHALLAH +08::01::2022 05:19:08|NTER +08::01::2022 05:19:08|just julius caesar him| +08::01::2022 05:19:09|A man!| +08::01::2022 05:19:10|Kill the MALE| +08::01::2022 05:19:11|at least 30000 displaced| +08::01::2022 05:19:11|Reused plot| +08::01::2022 05:19:11|we wooooooon| +08::01::2022 05:19:11|*LE +08::01::2022 05:19:11|ourboy:: +08::01::2022 05:19:13|KEEP OUT, WE NEED MORE TANK BATTLES TO FILM| +08::01::2022 05:19:14|THE LEGEND| +08::01::2022 05:19:16|OOARAI BTFO| +08::01::2022 05:19:17|MAN KEEPIN US DOWN| +08::01::2022 05:19:17|TL Note: "Anzu" means "SEX"| +08::01::2022 05:19:20|HE'S THE REASON WE HAVE SO MUCH GUP. KNEEL. | +08::01::2022 05:19:21|THANKS TL| +08::01::2022 05:19:22|THANKS TL| +08::01::2022 05:19:22|SEX WITH MEXT LESSSSSSGGGGGOOOOOOOO| +08::01::2022 05:19:22|THAT PLOT| +08::01::2022 05:19:23|thousands of homes destroyed| +08::01::2022 05:19:23|BASED MEXT GUY GIVING US MORE CONETNT| +08::01::2022 05:19:24|SCHOOLS OUT!!| +08::01::2022 05:19:24|HH +08::01::2022 05:19:25|CRAPPED +08::01::2022 05:19:25|nzu +08::01::2022 05:19:26|Chad male vs virgin females| +08::01::2022 05:19:26|>we ran out of plot btw so heres a rehash| +08::01::2022 05:19:27|ip +08::01::2022 05:19:28|XIT +08::01::2022 05:19:29|THE FUCKING JEWS GOT US | +08::01::2022 05:19:29|she sold the school for more dried sweet potatoes| +08::01::2022 05:19:30|HY? +08::01::2022 05:19:31|MEXT GUY GIVING US A SEQUEL| +08::01::2022 05:19:31|FUCK FUCK FUCK FUCK FUCK| +08::01::2022 05:19:33|he ****** anzu| +08::01::2022 05:19:35|extermniator +08::01::2022 05:19:36|No way| +08::01::2022 05:19:36|?????????????? +08::01::2022 05:19:37|stupid tankers not caring about school finances| +08::01::2022 05:19:38|ragedy +08::01::2022 05:19:38|MEXT guy is gup fan| +08::01::2022 05:19:39|It's over| +08::01::2022 05:19:40|TASUJI RENTA WAS RIGHT| +08::01::2022 05:19:41|LMAO GET FUCKED OOARAI| +08::01::2022 05:19:44|we all *****ed anzu| +08::01::2022 05:19:44|i have changed the deal| +08::01::2022 05:19:44|it's fucking over...| +08::01::2022 05:19:46|RICKED +08::01::2022 05:19:46|Damn you Kikes!!!!| +08::01::2022 05:19:48|so was there absolutely nothing they could think of but the same thing again| +08::01::2022 05:19:50|MEXT DID NOTHING WRONG| +08::01::2022 05:19:52|Momo about to cry again| +08::01::2022 05:19:54|Rukia's execution has been moved| +08::01::2022 05:19:54|ooraitards btfo once more ;-;| +08::01::2022 05:19:54|show's over, bye layds| +08::01::2022 05:19:55|MEXT MEXT MEXT MEXT | +08::01::2022 05:19:55|>the kikes won| +08::01::2022 05:19:55|Somehow government has money to recompense all the senshado damages, but has no money to fund schools.| +08::01::2022 05:19:56|THEY LIED AHHHHHH| +08::01::2022 05:19:56|Those sexy volleyball uniforms| +08::01::2022 05:19:56|WOAH SRS??!?| +08::01::2022 05:19:58|>it was a ruse, I deceived you| +08::01::2022 05:20:02|atings +08::01::2022 05:20:02|Girl's und Homeless| +08::01::2022 05:20:05|WHAT AM I FIGHTING FOOOOOOOOOOOOOOOOOOOOORRRRRRRRRRRR| +08::01::2022 05:20:05|WHAT AM I FIGHTING FOOOAAAAAAAAAAAAAAAAAR| +08::01::2022 05:20:06|Senkai de rabu raibu| +08::01::2022 05:20:08|OTSUGEKI@ +08::01::2022 05:20:08|>jk lmao| +08::01::2022 05:20:10|you always fight for ratings| +08::01::2022 05:20:11|Anzu will now be hanged for corruption| +08::01::2022 05:20:11|ANZU RUNS A CORRUPT SLUM SYSTEM BELOW DECKS. MEXT WAS RIGHT.| +08::01::2022 05:20:12|Played for an absolute fool! Federationbros win again!| +08::01::2022 05:20:13|mext need the money| +08::01::2022 05:20:13|DEATH TO MEXT, DEATH TO KMM, DEATH TO ERIKA| +08::01::2022 05:20:14|now that the ship is gone anzu has to move in with me, oh no| +08::01::2022 05:20:16|DONT ASK I DONT GIVE A DAMN| +08::01::2022 05:20:17|ANZU A BEST| +08::01::2022 05:20:19|POTEMKIN BUSTER| +08::01::2022 05:20:21|THEY CAN'T KEEP GETTING AWAY WITH THIS!| +08::01::2022 05:20:21|OCCUPY OORAI| +08::01::2022 05:20:21|Just go to glorious German high school| +08::01::2022 05:20:21|she's cooking the fucking books| +08::01::2022 05:20:22|PIRATE CARIER| +08::01::2022 05:20:24|Theres an easy way for them all to make money| +08::01::2022 05:20:24|Sink the ship in protest| +08::01::2022 05:20:26|YES FIGHT, FIRE YOUR TANKS AT THEM~| +08::01::2022 05:20:27|All these Guppies are going to be homeless soon. Who do you take in?| +08::01::2022 05:20:27|Ethnic cleansing next| +08::01::2022 05:20:29|hang miho for losing| +08::01::2022 05:20:30|the jews won| +08::01::2022 05:20:31|>LOVE LIVE PLOT| +08::01::2022 05:20:33|nzu +08::01::2022 05:20:36|SHUT IT DOWN| +08::01::2022 05:20:39|JUST LOOK AT MAKO'S DOCTORED RECORDS OFFICER| +08::01::2022 05:20:39|BECOME YOUR OWN NATION. AN OUTER HEAVEN.| +08::01::2022 05:20:40|"let's force 100,000 people to move out" yeah fuck that shit| +08::01::2022 05:20:40|wait i missed the naked darj scene| +08::01::2022 05:20:42|MEXT chad purging all infidels| +08::01::2022 05:20:43|my wife anzu is so cute| +08::01::2022 05:20:44|THEY KNOW SHUT IT DOWN| +08::01::2022 05:20:44|>sodoko only cares about power| +08::01::2022 05:20:45|All dreams are gone| +08::01::2022 05:20:46|sex with anzu| +08::01::2022 05:20:47|TIME TO SLUM IT UP IN A RANDOM BUILDING| +08::01::2022 05:20:49|((MEXT))) +08::01::2022 05:20:50|Prez was gambling on shitcoins | +08::01::2022 05:20:52|True NEETdom| +08::01::2022 05:20:54|the ::o::fags are so based| +08::01::2022 05:20:54|EETO +08::01::2022 05:20:56|I guess we have to kill... the PRIME MINISTER| +08::01::2022 05:20:57|REAL NEETO| +08::01::2022 05:20:57|serious question, would you eat anzus period discharge| +08::01::2022 05:20:58|Anzu cunny!| +08::01::2022 05:21:02|HOMELESS NEET| +08::01::2022 05:21:03|They can all come live with me| +08::01::2022 05:21:04|REAL NEET| +08::01::2022 05:21:07|Rape MEXT| +08::01::2022 05:21:07|All those clubs will bo lost like tears in the rain| +08::01::2022 05:21:08|MEXTbros we might close down this school after all| +08::01::2022 05:21:10|gotta suck mext dick| +08::01::2022 05:21:11|Quick anons, how do we save oorai?????| +08::01::2022 05:21:11|future NEETS| +08::01::2022 05:21:13|Girls und Homeless| +08::01::2022 05:21:13|this series is so good| +08::01::2022 05:21:14|I'll adopt the StuG autists| +08::01::2022 05:21:15|They will now live my live| +08::01::2022 05:21:15|Real fuckin' neeto| +08::01::2022 05:21:19|FUCK EVERYTHING INCLUDING THE GUPS| +08::01::2022 05:21:19|THEY BOUGHT IT?| +08::01::2022 05:21:20|THE LEADERSHIP OF MEXT IS SHUTTING DOWN SCHOOLSHIPS IN ORDER TO MAKE THE FREAKEN' FROGS GAY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 05:21:22|IDEA! LETS DO THE SAME SHIT AGAIN!| +08::01::2022 05:21:24|pls adopt a homeless GuPie today| +08::01::2022 05:21:26|LOOF +08::01::2022 05:21:29|they gups should sell their bodies on the streets| +08::01::2022 05:21:29|I'm betting the farm on this MEXT plan| +08::01::2022 05:21:29|ROGS +08::01::2022 05:21:31|EXT +08::01::2022 05:21:33|Girls und Brothel| +08::01::2022 05:21:39|nzu +08::01::2022 05:21:39|Bunny team can share my room| +08::01::2022 05:21:40|They have a fucking tank. They can't tell them what to do.| +08::01::2022 05:21:41|I second that plan| +08::01::2022 05:21:42|YOU CAN TAKE OUR LIVES BUT YOU WILL NEVER TAKE OUR TANKS| +08::01::2022 05:21:44|OBER +08::01::2022 05:21:44|Girls und Camping| +08::01::2022 05:21:45|Momo >>> Anzu| +08::01::2022 05:21:46|I get Saki| +08::01::2022 05:21:47|Girls und Sobriety| +08::01::2022 05:21:48|HALL +08::01::2022 05:21:49|>i never thought saying goodbye was how i'd say goodbye| +08::01::2022 05:21:51|Kamurocho needs more hostess| +08::01::2022 05:21:52|Press R to rape Anzu now| +08::01::2022 05:21:54|GUPPIE INSURRECTION WHEN| +08::01::2022 05:21:55| +08::01::2022 05:21:55|Girls und Society| +08::01::2022 05:21:55|I can save them... | +08::01::2022 05:21:56| +08::01::2022 05:21:57|_;7 +08::01::2022 05:21:57|packu appu| +08::01::2022 05:21:58|OT +08::01::2022 05:21:58|R BUT GENTLY | +08::01::2022 05:21:59| +08::01::2022 05:22:00|SAGI +08::01::2022 05:22:00|abbits +08::01::2022 05:22:01|What episode is this?| +08::01::2022 05:22:01|I'll take in all the loli gruppies| +08::01::2022 05:22:02|RIP future budget| +08::01::2022 05:22:02|E +08::01::2022 05:22:03|cute bunnies| +08::01::2022 05:22:05|Girls und unemployment| +08::01::2022 05:22:07|But heir MBT woul;d wreck their WW2 relics| +08::01::2022 05:22:10|LOSED +08::01::2022 05:22:12|PRESS B TO BECOME ANZU'S CHAIR| +08::01::2022 05:22:13|It's the 1st movie| +08::01::2022 05:22:14|bunny cunnies| +08::01::2022 05:22:14|all guppies under 5 ft have a home with me| +08::01::2022 05:22:15|GIRLS UND ARBEITO| +08::01::2022 05:22:15| +08::01::2022 05:22:16| +08::01::2022 05:22:18| +08::01::2022 05:22:18|Remember girls, steal anything that isn't nailed down| +08::01::2022 05:22:18|ZUSAAAAA +08::01::2022 05:22:18| +08::01::2022 05:22:19|b b b b bbb| +08::01::2022 05:22:20|Voleyball club's resurrection...| +08::01::2022 05:22:21|LANGED +08::01::2022 05:22:21|Cunny rabbit| +08::01::2022 05:22:22| +08::01::2022 05:22:22| +08::01::2022 05:22:25|You can tell who's drunk| +08::01::2022 05:22:27|Bunnies and cunny and cunny bunnies ToT| +08::01::2022 05:22:28|HIROTABI +08::01::2022 05:22:28|Girls und Freeter| +08::01::2022 05:22:28|Noriko will have to sell his body to onee-sans now!| +08::01::2022 05:22:31|no more morals| +08::01::2022 05:22:31|Girls und Arbeit Macht Frei| +08::01::2022 05:22:31|VAREBU 4EVAR!| +08::01::2022 05:22:33|the sign was nailed down and they took that too| +08::01::2022 05:22:34|annies +08::01::2022 05:22:35|I ant to become anzus chair but I am ropulused aby press newfdagh presddffffffffffffffff| +08::01::2022 05:22:37|my life...| +08::01::2022 05:22:39|>Imagiune not being drunk right nowe| +08::01::2022 05:22:39|CLEAN IT UP| +08::01::2022 05:22:40|>he isn't looting literally everything on the ship that isn't bolted dowwn NGMI| +08::01::2022 05:22:40|TAKE THE GATE| +08::01::2022 05:22:43|NOW... I'VE LOST IT| +08::01::2022 05:22:44| +08::01::2022 05:22:46|AEKO +08::01::2022 05:22:47| +08::01::2022 05:22:47| +08::01::2022 05:22:47|RIFTO +08::01::2022 05:22:50|SODOKO IS DEAD| +08::01::2022 05:22:50|onk +08::01::2022 05:22:51|fucking died| +08::01::2022 05:22:54|SAGIS +08::01::2022 05:22:54|Girls und Arbeitslose| +08::01::2022 05:22:54|WAIT THIS IS LIKE THE ONLY SCHOOL ON THIS BOAT HOW CAN SHUT IT DOWN| +08::01::2022 05:22:55|Girls und real War| +08::01::2022 05:22:55|GAS GAS GAS| +08::01::2022 05:22:55|dibs on the thirty foot diameter cannons| +08::01::2022 05:22:56|ip +08::01::2022 05:22:56|ORIFUTO +08::01::2022 05:22:56|Take everything that isn't nailed down.| +08::01::2022 05:22:57|*EUROBEAT PLAYS IN THE DISTANCE*| +08::01::2022 05:22:57|SPEEDY SPEED BPY| +08::01::2022 05:22:58|GAS GAS GAS| +08::01::2022 05:22:58|BASED CARFAGS| +08::01::2022 05:22:58|AZUSA NOO| +08::01::2022 05:23:00|NIGHT OF FIRE| +08::01::2022 05:23:00|>V8 dound| +08::01::2022 05:23:00|this is what happens when you drink and drive| +08::01::2022 05:23:02|bunny cunnies' bunnies| +08::01::2022 05:23:02|NIGHT ON FIRE| +08::01::2022 05:23:03|RIFTO +08::01::2022 05:23:04|Girls und GI Bill| +08::01::2022 05:23:04|RIFt +08::01::2022 05:23:05|final acceleration to the jewish question| +08::01::2022 05:23:05|hao! +08::01::2022 05:23:05|orifto +08::01::2022 05:23:06|ORIFUTOOOO +08::01::2022 05:23:06| ::o::'s year baby| +08::01::2022 05:23:06|based night drive| +08::01::2022 05:23:07|GAS GAS GAS| +08::01::2022 05:23:07|GAS GAS GAS| +08::01::2022 05:23:07|THE WHOLE BOAT IS SHUTTING DOWN| +08::01::2022 05:23:07|IM GONNA STEP ON THE GAS| +08::01::2022 05:23:09|Deja vu!| +08::01::2022 05:23:12|DRFT MY COCK| +08::01::2022 05:23:13|GAS GA S AGSS| +08::01::2022 05:23:13|GAS GAS GAS| +08::01::2022 05:23:13|ORIFUTO +08::01::2022 05:23:13|IM BURNIG UP FOR YOU| +08::01::2022 05:23:13|GAS GAS| +08::01::2022 05:23:14|>ywn get an initial d spinoff with leopons| +08::01::2022 05:23:15|ek +08::01::2022 05:23:15|WHEELPOWER AND GO| +08::01::2022 05:23:16|DEJA VU| +08::01::2022 05:23:16|Girls und PMC| +08::01::2022 05:23:16|I might just take a walk| +08::01::2022 05:23:17|ho?? +08::01::2022 05:23:17|Mexicans stealing another caR| +08::01::2022 05:23:17|fucking hugboxes| +08::01::2022 05:23:17|male +08::01::2022 05:23:18|WE LIVE IN A SOCIETY.| +08::01::2022 05:23:19|ORIFUTO +08::01::2022 05:23:21|AYMAN +08::01::2022 05:23:22|vidya +08::01::2022 05:23:24|tism +08::01::2022 05:23:26|No more homes| +08::01::2022 05:23:29|male +08::01::2022 05:23:29|ogged +08::01::2022 05:23:30|based dad| +08::01::2022 05:23:32|game looks like shit tbh| +08::01::2022 05:23:32|etrayal +08::01::2022 05:23:33|ummy!! +08::01::2022 05:23:35|based slave| +08::01::2022 05:23:37|Poor struggling business owner| +08::01::2022 05:23:38|cute floof| +08::01::2022 05:23:39|hes always shouting| +08::01::2022 05:23:41|>men arent allowed to live on land| +08::01::2022 05:23:41|OJOU NO GAKKOU DA| +08::01::2022 05:23:42|RIP BOZOS| +08::01::2022 05:23:44|Yukari-mom too good for this world| +08::01::2022 05:23:47|you just know| +08::01::2022 05:23:47|RIP BOZOS| +08::01::2022 05:23:48|THE WHOLE BOAT IS THE SCHOOL FOR THOSE WHO STILL DONT GET IT| +08::01::2022 05:23:51|I like Yukari| +08::01::2022 05:23:57|UUUUUUUUUUUUUUUUUUTE +08::01::2022 05:23:59|I like Anzu| +08::01::2022 05:24:01|suicide via smothering| +08::01::2022 05:24:02|TU +08::01::2022 05:24:03|What about the Shark team | +08::01::2022 05:24:04|Men will be shot as the ship is decommisnioned| +08::01::2022 05:24:05|oko +08::01::2022 05:24:06|i am anzu| +08::01::2022 05:24:07|THEY"RE TARGETING SMALL BUSINESS OWNERS BECAUSE THEY're BASED| +08::01::2022 05:24:10|I like all of them, except Erika| +08::01::2022 05:24:12|shark? more like shart| +08::01::2022 05:24:12|Commit sudoku| +08::01::2022 05:24:14|>you will never sleep the day away with Mako| +08::01::2022 05:24:14|are you actually anzu| +08::01::2022 05:24:17|ktf... +08::01::2022 05:24:17|okosexual +08::01::2022 05:24:18|I'm actually leaking | +08::01::2022 05:24:19|Sad Boko| +08::01::2022 05:24:19|im going to cum on her pillow and make it shatter| +08::01::2022 05:24:19|ERIKA BEST GuP| +08::01::2022 05:24:20|BROS WE CAN"T LIVE ON LAND I JUST CAN"T| +08::01::2022 05:24:20|I like Erika, no one else| +08::01::2022 05:24:22|shut down due to COVID| +08::01::2022 05:24:22|mext support big business | +08::01::2022 05:24:23|I like all of them especially Erika | +08::01::2022 05:24:24|: +08::01::2022 05:24:24|With that, Boko suffocated.| +08::01::2022 05:24:25|I'm going to fuck you| +08::01::2022 05:24:25|Never get verbal agreements kids| +08::01::2022 05:24:25|I was the monster... all along?| +08::01::2022 05:24:27|Every man not working on a ship is drafted into the massive giga war happening in the asian continent| +08::01::2022 05:24:27|Shark Team are currently smuggling 10,000 kilos of coke into North America| +08::01::2022 05:24:28|yes it is I, your wife, anzu| +08::01::2022 05:24:28|(((((MEXT)))))))) +08::01::2022 05:24:30|yeah but what about the engineering gnomes(lolis) that live in the bowels of the ship and maintain it?????| +08::01::2022 05:24:30|by me| +08::01::2022 05:24:32|ZUSA +08::01::2022 05:24:34|I HATE THIS I HATE THIS I HATE THIS NO SAD| +08::01::2022 05:24:34|MMext +08::01::2022 05:24:35|DAYS OF DASH| +08::01::2022 05:24:36|Johannesburg..... we can't let them do this...| +08::01::2022 05:24:36|holy shit real life anzu inside my computer| +08::01::2022 05:24:38|girly run lmao| +08::01::2022 05:24:38|LOOK AT THAT DORK RUN| +08::01::2022 05:24:39|Miho with the lanky run| +08::01::2022 05:24:39|HI SZUSA| +08::01::2022 05:24:41|Grand Theft Sensha| +08::01::2022 05:24:43|ZUSAA!!!!! +08::01::2022 05:24:44|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:24:48|What a scrapyard| +08::01::2022 05:24:52|HELP anzu is climing out of my screen| +08::01::2022 05:24:56|Doing hood-rat shit with your tomodachi...| +08::01::2022 05:24:56|My wives| +08::01::2022 05:24:58|ice +08::01::2022 05:24:58|needs more panthers| +08::01::2022 05:25:00|morals committee looting the placard| +08::01::2022 05:25:02|W-why am I crying| +08::01::2022 05:25:02|Use the tanks to conquer the school. Become pirates.| +08::01::2022 05:25:05|mass suicide with panzers!| +08::01::2022 05:25:08|Stug life...| +08::01::2022 05:25:10|'( +08::01::2022 05:25:11|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +08::01::2022 05:25:14|Panzer Nomore| +08::01::2022 05:25:14|AMERICA! FUCK YEAH!| +08::01::2022 05:25:14|I wish Anzu were climingout of my screen| +08::01::2022 05:25:14|Riot with tanks| +08::01::2022 05:25:15|guppies must resort to stealing shoes in detroit with the sug| +08::01::2022 05:25:16|_T +08::01::2022 05:25:17|USA USA USA USA USA USA USA USA| +08::01::2022 05:25:19|7 +08::01::2022 05:25:20|aked +08::01::2022 05:25:20|i will sponsor oorai, but they will have to paint their tanks in my company's colors| +08::01::2022 05:25:20|BASED BURGERS| +08::01::2022 05:25:20|saunders earrape| +08::01::2022 05:25:21|USA USA USA USA USA USA| +08::01::2022 05:25:21|pirates you say? that gives me an idea...| +08::01::2022 05:25:22|USA USA USA| +08::01::2022 05:25:22|AMERICANS SAVE THE DAY| +08::01::2022 05:25:23|USA USA USA USA USA USA USA| +08::01::2022 05:25:23|USA USA USA USA USA USA USA USA| +08::01::2022 05:25:24|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:24|USA USA USA USA USA USA| +08::01::2022 05:25:24|7 +08::01::2022 05:25:24|AMERICA FUCK YEAH| +08::01::2022 05:25:24|USA USA USA USA USA USA| +08::01::2022 05:25:26|murika +08::01::2022 05:25:26|REAL AMERICAN HEROES| +08::01::2022 05:25:26|NTER +08::01::2022 05:25:27|AAAAAAAAAAAAAAMMMMMMMEEEEEEERRRRRIIIIIIICCCCCCCAAAAAAAAA +08::01::2022 05:25:27|USA USA USA USA USA DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:25:28|USA USA USA USA USA USA USA USA| +08::01::2022 05:25:28|usa usa usa| +08::01::2022 05:25:28|USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:28| USA USA USA USA USA USA USA USA| +08::01::2022 05:25:29|USA USA USA USA| +08::01::2022 05:25:29|OVER HILL OVER DALE| +08::01::2022 05:25:30|U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A !| +08::01::2022 05:25:30|HERE COMES THE CAVALRY| +08::01::2022 05:25:30|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:25:30|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:31|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:31|BURGER TIMEE!!| +08::01::2022 05:25:32|USA ALL THE WAY USA ALL THE WAY| +08::01::2022 05:25:32|Ugh, fucking burgers| +08::01::2022 05:25:33|AMERICAN AIR SUPERIORITY| +08::01::2022 05:25:33|U S A U S A U S A U S A U S A U S A U S A U S A U S A U S A U S A | +08::01::2022 05:25:33|SUDDENLY YANK TERRORISTS| +08::01::2022 05:25:33|USA USA USA USA| +08::01::2022 05:25:34|usa USA| +08::01::2022 05:25:34|URICA +08::01::2022 05:25:34|USA USA USA USA USA| +08::01::2022 05:25:35|USA USA USA USA USA USA USA USA| +08::01::2022 05:25:35|America's taking your shit| +08::01::2022 05:25:36|USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +08::01::2022 05:25:36|URGERS +08::01::2022 05:25:36|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:36|I HATE AMERICAA| +08::01::2022 05:25:36|Enter the sexiest guppie| +08::01::2022 05:25:36|USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:25:37|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:37|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:37|PUTTING BASED IN CARRIER BASED| +08::01::2022 05:25:38|USA USA USA USA| +08::01::2022 05:25:38|MERICAAAAAA +08::01::2022 05:25:39|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:39|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:39|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:39|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:40|SA +08::01::2022 05:25:40|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:40|THERES A GUN ON MY SCREEN| +08::01::2022 05:25:40| USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:41|DOG BLESS AMERIGA| +08::01::2022 05:25:41|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:41|USA USA USA USA USA USA| +08::01::2022 05:25:42|USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +08::01::2022 05:25:42|QUICK HID THE OIL| +08::01::2022 05:25:42|COME TO SAVE THE MOTHERFUCKING DAY YEAH| +08::01::2022 05:25:42|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:42|U S A U S A U S A U S A U S A U S A U S A U S A| +08::01::2022 05:25:42|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:43|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:43|HI HI HE IN THE FIELD ARTILLERY| +08::01::2022 05:25:43|USA ALL THE WAY| +08::01::2022 05:25:44|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:44|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:44|U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! | +08::01::2022 05:25:45|I CLAPPED| +08::01::2022 05:25:46|VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA | +08::01::2022 05:25:46|i hate america| +08::01::2022 05:25:46|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:46|FUCK YEAH| +08::01::2022 05:25:46|SA +08::01::2022 05:25:47|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:47|HEARD YOU GIRLS WERE IN NEED OF SOME FREEDOM!| +08::01::2022 05:25:47|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:48|SUPA GALASHI DESU| +08::01::2022 05:25:48|SEMEN SHIPMENTS INCOMING| +08::01::2022 05:25:48|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:49|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:49|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:50|MERICA +08::01::2022 05:25:51|i wish i had a recreational c-5| +08::01::2022 05:25:51|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:52|Orai to poor to buy fighters| +08::01::2022 05:25:52|ENEMY AC-130 ABOVE| +08::01::2022 05:25:52|VSA VSA VSA | +08::01::2022 05:25:53|SANDASU SUPA GALAXUY| +08::01::2022 05:25:53|America bought you out| +08::01::2022 05:25:54|USA USA USA US AUAS USA UAS USA USA USA USA USA USA UAS USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:25:54|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:54|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:54|USA USA USA USA USA USA| +08::01::2022 05:25:55|the cia is after mext| +08::01::2022 05:25:55|SUPA GALAXY| +08::01::2022 05:25:55|US KAY| +08::01::2022 05:25:56|I LOST ALL OF MY TANKS IN A BOATING ACCIDENT| +08::01::2022 05:25:56|DID I HEAR OIL? THAT SHIT MINE| +08::01::2022 05:25:56|Fuel Air Bomb deployed| +08::01::2022 05:25:56|DAIJOUBU NAN DESUKA| +08::01::2022 05:25:57|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:25:59|SA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +08::01::2022 05:26:00|>saunders of all shits| +08::01::2022 05:26:00|USA USA USA USA| +08::01::2022 05:26:01|SHII GO-EMU!| +08::01::2022 05:26:01|ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTAD| +08::01::2022 05:26:02|USA USA USA USA USA USA| +08::01::2022 05:26:03|so why are 16 year olds piloting a cargo plane| +08::01::2022 05:26:03|NZU +08::01::2022 05:26:03|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:04|STEALING IS WRONG!| +08::01::2022 05:26:05|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:05|lol we lost the tonks lmao| +08::01::2022 05:26:05|We're here to liberate your tanks!| +08::01::2022 05:26:05|kept yo uwaiting huh?| +08::01::2022 05:26:05|ARISA I LOVE YOUUUU| +08::01::2022 05:26:06|""""lost""""" +08::01::2022 05:26:06|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 05:26:07|HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY | +08::01::2022 05:26:07|THANK YOU THANK YOU| +08::01::2022 05:26:07|ANKYU +08::01::2022 05:26:09|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:09|tragic boating accident| +08::01::2022 05:26:09|VSA VSA VSA | +08::01::2022 05:26:09|JOINING THE KAY KAY KAY| +08::01::2022 05:26:11|USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:12|CIA interfering with sensado| +08::01::2022 05:26:13|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:13|DAILY FLYBYS OVER NAGASAKI| +08::01::2022 05:26:13|raving Anzu| +08::01::2022 05:26:14|SANKYUU SANKYUU| +08::01::2022 05:26:14|Yeah we just lost all of our tanks | +08::01::2022 05:26:14|HARRY APU| +08::01::2022 05:26:15|ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTAD| +08::01::2022 05:26:15|ankyuu +08::01::2022 05:26:16|I LOVE KAY| +08::01::2022 05:26:16|COMING AGAIN TO SAVE THE MOTHERFUCKING SAY YEAH| +08::01::2022 05:26:16|My nice wife Kay is so helpful!| +08::01::2022 05:26:16|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:17|hari ap| +08::01::2022 05:26:18|Hurrah Uppu| +08::01::2022 05:26:18|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:19|I am Arisa's boyfriend. Ask me anything.| +08::01::2022 05:26:19|sank you sank you| +08::01::2022 05:26:21|ANKYUUU +08::01::2022 05:26:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:22|For once, Freedom is Free| +08::01::2022 05:26:23|9 +08::01::2022 05:26:23|AND THE ARMY GOES ROLLING ALONG| +08::01::2022 05:26:25|what a tragic boating accident mr mext| +08::01::2022 05:26:28|It ain't theft; it's appropriation| +08::01::2022 05:26:28|Spank Arisa Y::Y| +08::01::2022 05:26:29|USA USA USA USA| +08::01::2022 05:26:30|How is someonme as thic as Kay only 16 yers| +08::01::2022 05:26:31|>THE SILVERPLATES ARE HERE AGAIN!| +08::01::2022 05:26:32|Why did you dump her?| +08::01::2022 05:26:32|MERICA INTERFERING IN OTHERS AFFAIRS| +08::01::2022 05:26:33|o7 I LOVE AMERICA| +08::01::2022 05:26:33|Reaching 30k danmaku | +08::01::2022 05:26:35|Why is Arisa a shitter?| +08::01::2022 05:26:35|does Kay smuggle cocaine between ships to fuel Saunder's immense budget?| +08::01::2022 05:26:36|USS LIBERTY| +08::01::2022 05:26:36|FIREBOMBING CHI-HAI TAN EVERY DAY| +08::01::2022 05:26:37|MIHO, I'M MEXT| +08::01::2022 05:26:37|Overloaded C5| +08::01::2022 05:26:37| +08::01::2022 05:26:41|I'm off to sleep, it's been fun| +08::01::2022 05:26:42|>they never bring them back| +08::01::2022 05:26:43|Remember to steal the copper from the walls!| +08::01::2022 05:26:45|USA USA USA USA USA USA USA USA| +08::01::2022 05:26:45|kAY IS AMERICAN THATS WHY SHE'S THICK| +08::01::2022 05:26:45|o7 Godspeed| +08::01::2022 05:26:47|yes mext that's right, a boating accident| +08::01::2022 05:26:48|USA USA USA USA USA USA USA USA| +08::01::2022 05:26:48|Takeshi has fucked every girl im Saunders except Alisa| +08::01::2022 05:26:49|goodnight anon| +08::01::2022 05:26:50|CRASHING THIS PLANE| +08::01::2022 05:26:50|why is saunders flying so close to the towers?| +08::01::2022 05:26:50|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:51|REMINDER HIGH SCHOOL GIRLS HAVE A PILOTS LICENSE| +08::01::2022 05:26:52|USA USA USA USA USA USA USA USA| +08::01::2022 05:26:53|CARBON COATED C5 ENGINES| +08::01::2022 05:26:53|All our sensha were lost in a tragic boating accident, ATF BTFO| +08::01::2022 05:26:54|200m takeoff roll| +08::01::2022 05:26:54|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:55|Lease lend| +08::01::2022 05:26:56|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:57|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:26:57|RAMIREZ, THERE'S A STINGER ON THE ROOF OF THAT BURGET TOWN, GET TO IT| +08::01::2022 05:26:57|SA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +08::01::2022 05:27:00|WITH NO SURVIVORS| +08::01::2022 05:27:00|WHY WOULD YOU SHOOT A TANK BEFORE THROWING IT OUT OF APLNE| +08::01::2022 05:27:01|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:27:01| +08::01::2022 05:27:02|they're never getting those tanks back| +08::01::2022 05:27:03|THE RIGHT FOR GUPPIES TO OWN TANKS SHALL NOT BE INFRINGED| +08::01::2022 05:27:03|Carbon Coated planes| +08::01::2022 05:27:03|protect Anzus flat chest| +08::01::2022 05:27:04|I HAVE 15 TANKS LEFT BECAUSE I LIED TO THOSE COMMIE BASTARDS| +08::01::2022 05:27:05|Takeshi is a lucky man| +08::01::2022 05:27:06|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:27:08|TANKS PROTECTED| +08::01::2022 05:27:11|they should've released them in the ocean | +08::01::2022 05:27:12|RAMIREZ, MOVE YOUR ASS!| +08::01::2022 05:27:13|How do you "lose" a tank?| +08::01::2022 05:27:13|THEY GIVE THEM BACK RIGHT?| +08::01::2022 05:27:13|I saw GUTS| +08::01::2022 05:27:15|>surrendering your guns| +08::01::2022 05:27:15|I love carbon coated takeoff rolls| +08::01::2022 05:27:18|TL Note: "Anzu" means "SEX"| +08::01::2022 05:27:21|_; +08::01::2022 05:27:22|THANKS TL| +08::01::2022 05:27:23|THX TL| +08::01::2022 05:27:25|tanks tl| +08::01::2022 05:27:26|my bladder is exploding| +08::01::2022 05:27:27|-; +08::01::2022 05:27:28|ty tl| +08::01::2022 05:27:28|you lose a tank just like i lost all my guns ina boating accident| +08::01::2022 05:27:28|AYONARA +08::01::2022 05:27:30|They lost all of them on the boat somehow to begin with| +08::01::2022 05:27:30|THE END| +08::01::2022 05:27:30|THANKS TL| +08::01::2022 05:27:32|>entrusting your entire army to americans| +08::01::2022 05:27:32|OOOOOOOOOOOOOOT +08::01::2022 05:27:33|boko is still on the ship turn back!| +08::01::2022 05:27:34|TL Note: Mext is Sext| +08::01::2022 05:27:34|_; +08::01::2022 05:27:35|Go piss purpleanon| +08::01::2022 05:27:35|TL NOTE: ANZU IS MY LOVING WIFE| +08::01::2022 05:27:35|nzu +08::01::2022 05:27:36|pretend slut| +08::01::2022 05:27:36|Go pee anon| +08::01::2022 05:27:39|Yukari is moving in with me by the way| +08::01::2022 05:27:41|RIGATOU +08::01::2022 05:27:42|a terrible day for rain| +08::01::2022 05:27:42|WHATS GONNA HAPPEN NEXT| +08::01::2022 05:27:42|tanks tl| +08::01::2022 05:27:44|Pretty sad ending tbh, | +08::01::2022 05:27:44|cute bunnies| +08::01::2022 05:27:45|_;7 +08::01::2022 05:27:45|OOOOOOOOOOOOOT +08::01::2022 05:27:46|sayonara Zuikaku ;_;| +08::01::2022 05:27:46|shouldve pissed during the intermission| +08::01::2022 05:27:46|_;7 +08::01::2022 05:27:46|CONCENTRATION CAMP ARC| +08::01::2022 05:27:47|>boyfriend SLUT| +08::01::2022 05:27:49|Well at least it's not raining| +08::01::2022 05:27:49|imagine the smell beneath those bunny cunny skirts| +08::01::2022 05:27:49|AYONARA~! +08::01::2022 05:27:50|Don't worry, they'll make a shitty rip off anime about you| +08::01::2022 05:27:51|how tf they even scrap that| +08::01::2022 05:27:51|____________; +08::01::2022 05:27:51|AYOUNARA +08::01::2022 05:27:52|damn this is some shat shit| +08::01::2022 05:27:52|It's raining| +08::01::2022 05:27:53|COME BACK I CANT LEAVE WITHOUT YOU| +08::01::2022 05:27:53|autism sounds| +08::01::2022 05:27:54|Ikanaide ;___;7| +08::01::2022 05:27:54|AZSAAA :;_;| +08::01::2022 05:27:54|_;7 +08::01::2022 05:27:55|-;7 +08::01::2022 05:27:56|AYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:27:57|RAZIL +08::01::2022 05:27:57|MY HOME ;_;| +08::01::2022 05:27:58|__; +08::01::2022 05:27:58|AYONARA +08::01::2022 05:27:58|Saki not cheering| +08::01::2022 05:27:59|agic +08::01::2022 05:27:59|_; +08::01::2022 05:28:00|autist in the back| +08::01::2022 05:28:00|_;7 +08::01::2022 05:28:00|-; +08::01::2022 05:28:01|__;7 +08::01::2022 05:28:01| +08::01::2022 05:28:01|_________________; +08::01::2022 05:28:01|_; +08::01::2022 05:28:01|fact: THE GNOMES(ENGINEER LOLIS) ARE STILL ON THE SHIP AND WON'T LEAVE| +08::01::2022 05:28:02|AYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:28:02|AYONARAAAAAAAAAAAAAAAA +08::01::2022 05:28:02|YONARARARARARAR +08::01::2022 05:28:02|_; +08::01::2022 05:28:03|_;7 +08::01::2022 05:28:03|_;7 +08::01::2022 05:28:05|_;7 +08::01::2022 05:28:05|"Fuck the Fed" - Oarai High School| +08::01::2022 05:28:06|jews did this| +08::01::2022 05:28:06|SAYONARA ;_______________________;7| +08::01::2022 05:28:07|I-is it raining? ;_;| +08::01::2022 05:28:07|wip +08::01::2022 05:28:07|AYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:28:08|_;7 +08::01::2022 05:28:08| ヨウナラ +08::01::2022 05:28:08|Literally ruined by autistic flag shit| +08::01::2022 05:28:09|WAVE THE FLAG| +08::01::2022 05:28:09|Only the tanks girls lived on the boat?| +08::01::2022 05:28:09|_; +08::01::2022 05:28:09|AYONARAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:28:11|_; +08::01::2022 05:28:11|_; +08::01::2022 05:28:12|It's raining| +08::01::2022 05:28:16|The shark team is still onboard| +08::01::2022 05:28:17|ya it's raining| +08::01::2022 05:28:20|THESE ARE WIERD TANKS| +08::01::2022 05:28:21|FIRST 911 AND NOW THIS | +08::01::2022 05:28:22|good night sweet prince| +08::01::2022 05:28:22|Saki is too autistic to understand what's happening | +08::01::2022 05:28:22|ANSISHED +08::01::2022 05:28:23|JEWS could be here, he thought.| +08::01::2022 05:28:24|Landlocked like peasants now| +08::01::2022 05:28:27|that ship is worth more than 80% of the world's nations| +08::01::2022 05:28:31|Going to Chernobyl be like| +08::01::2022 05:28:32|what kind of tanks are these| +08::01::2022 05:28:32|UFFERING +08::01::2022 05:28:33|Girls and Buses| +08::01::2022 05:28:35|TO THE CAMPS| +08::01::2022 05:28:38|TL NOTE: Anzu is Renta's cunnywife| +08::01::2022 05:28:40|Weird-looking tanks...| +08::01::2022 05:28:41|50000 tanks used to live here| +08::01::2022 05:28:41|>there are landlubbers watching this stream| +08::01::2022 05:28:42|everyone is based| +08::01::2022 05:28:44|USSY +08::01::2022 05:28:44|CAMPS AND MAKE EM LAMPS| +08::01::2022 05:28:45|Life is about losing friends you see| +08::01::2022 05:28:46|panzer tl| +08::01::2022 05:28:48|we ::n:: now| +08::01::2022 05:28:50|>Sorted based on their clubs| +08::01::2022 05:28:52|Bros, we're homeless... like Jews...| +08::01::2022 05:28:53|they are going to the camps| +08::01::2022 05:28:54|retard shit| +08::01::2022 05:28:55|WE GAAAN| +08::01::2022 05:28:55|CAMP ARC| +08::01::2022 05:28:56|doubly landlocked mating press with the entire oorai student body| +08::01::2022 05:28:57|This entire evacuation thing reminds me of chernobyl to be honest and I'm glad someone said it before me| +08::01::2022 05:28:57|Bus sex with Anzu uoh]| +08::01::2022 05:28:57|UNGRY +08::01::2022 05:28:58|girls und buses| +08::01::2022 05:28:58|fat fuck lol| +08::01::2022 05:28:59|_; +08::01::2022 05:29:00|>A LAND SCHOOL| +08::01::2022 05:29:04|Saorio you fat fuck| +08::01::2022 05:29:04|Damn this reminds me the final epsiode of that cute girls manning a destroyer anime| +08::01::2022 05:29:04|never forget the shoah oy vey| +08::01::2022 05:29:05|can those buses deflect 75mm rounds::| +08::01::2022 05:29:06|panzer camp| +08::01::2022 05:29:07|let's eat snacks together, anons| +08::01::2022 05:29:07|Pack all your stuff, but you have to leave it on the boat. What the hell, MEXT?| +08::01::2022 05:29:10|Girls und Lumberjacking| +08::01::2022 05:29:10|Girls Und Concentration Camp| +08::01::2022 05:29:13|>land school| +08::01::2022 05:29:14|Wilkommen in den Konzentratzionslager| +08::01::2022 05:29:15|Momo dumb| +08::01::2022 05:29:19|Girls und Dachau| +08::01::2022 05:29:20|>nobody will ever ask you whether you're diejobuh| +08::01::2022 05:29:21|ANZU WILL SAVE US BROS| +08::01::2022 05:29:21|>he goes to school on land| +08::01::2022 05:29:23|Girls und Dormitories| +08::01::2022 05:29:24|"LAND SCHOOL"| +08::01::2022 05:29:26|ARBEIT MACHT FREI| +08::01::2022 05:29:28|Anzu always thinks of something| +08::01::2022 05:29:30|>land plebs| +08::01::2022 05:29:30|All these nameless cuties| +08::01::2022 05:29:31|where are their parents?| +08::01::2022 05:29:31|wife material| +08::01::2022 05:29:32|UTT +08::01::2022 05:29:33|utt +08::01::2022 05:29:35|pekoe, have you heard the saying "work will set you free"?| +08::01::2022 05:29:36|Yukari is strong and cute| +08::01::2022 05:29:36|Girls Und Sp*m| +08::01::2022 05:29:36|utt +08::01::2022 05:29:36|UTT +08::01::2022 05:29:37|SCHOOL GIRLS.....EROTIC| +08::01::2022 05:29:37|I always think of Anzu| +08::01::2022 05:29:38|BUTT spotted| +08::01::2022 05:29:39|Are you daijoubu, anon?| +08::01::2022 05:29:40|she likes humming that song huh| +08::01::2022 05:29:40|UTT +08::01::2022 05:29:40|WHEN JOHNNY COMES MARCHING HOME AGAIN| +08::01::2022 05:29:41|CUTE YUKARIN| +08::01::2022 05:29:42|ausage... +08::01::2022 05:29:42|Floof best girl| +08::01::2022 05:29:45|_; +08::01::2022 05:29:52|__; +08::01::2022 05:29:54|wh-where'd every one?| +08::01::2022 05:29:55|YUKARI LEGS| +08::01::2022 05:29:58|>literally can see the see right now| +08::01::2022 05:29:58|And we'll all feel gay when | +08::01::2022 05:29:58|>BEING A HILL PLEB| +08::01::2022 05:29:59|BASED BURGERS| +08::01::2022 05:29:59|i hate land| +08::01::2022 05:30:02|>inferior hills| +08::01::2022 05:30:02|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:03|VSA VSA VSA| +08::01::2022 05:30:03|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:03|USA USA USA USA| +08::01::2022 05:30:03|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:03|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:03|SENSHA GA KITA~!| +08::01::2022 05:30:03|just a bunch of landlubbers now| +08::01::2022 05:30:04|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:05|Tank delivery.| +08::01::2022 05:30:06|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:06|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:07|America: supplying the world's freedom fighters since 1776| +08::01::2022 05:30:07|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:07|USA USA USA USA| +08::01::2022 05:30:08|Haibane renmei is GuP done right| +08::01::2022 05:30:08|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:09|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:09|Imagine the country is just one big boat girls| +08::01::2022 05:30:09|SAAAAAAAAAAAA +08::01::2022 05:30:10|USA USA USA USA USA| +08::01::2022 05:30:10|USA ALL THE WAY| +08::01::2022 05:30:11| USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:11|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:11|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:12|SA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +08::01::2022 05:30:12|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:13|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:13|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:14|REAL AMERICAN HEROES| +08::01::2022 05:30:14|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:14|>QUALIFIED PILOT| +08::01::2022 05:30:14|>low pass based| +08::01::2022 05:30:15|DOG BLESS| +08::01::2022 05:30:16|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:17|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:17|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:17|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:17|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:17|>even saki runs| +08::01::2022 05:30:18|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:18|USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:30:18|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:18|OMOOOOOOOOOOOOOOOOOOOO +08::01::2022 05:30:19|USA USA USA USA USA USA USA USA USA| +08::01::2022 05:30:19|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:19|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA UAS| +08::01::2022 05:30:20|SAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSA +08::01::2022 05:30:20|inostairs +08::01::2022 05:30:20|USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? | +08::01::2022 05:30:20|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:20|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:21|USA USA USA USA USA USA USA USA USA| +08::01::2022 05:30:21|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:21|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:21|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:21|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:22|europoors +08::01::2022 05:30:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:22|USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:30:22|America is numba one!!!| +08::01::2022 05:30:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:23|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:23|HERE COMES NUKE NUMBER 3| +08::01::2022 05:30:23|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:26|USA USA USA USA US A USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA US A| +08::01::2022 05:30:26|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:26|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:27|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:27|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:27|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:28|USA ALL THE WAY| +08::01::2022 05:30:28|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:29|USA USA USA USA| +08::01::2022 05:30:29|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:30|>PULL UP PULL UP| +08::01::2022 05:30:31|Usa Usa Usa| +08::01::2022 05:30:32|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:32|HERE'S YOUR FUCKING TANKS| +08::01::2022 05:30:32|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:32|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:30:33|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:33|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:33|CIA CIA CIA CIA CIA CIA CIA| +08::01::2022 05:30:33|USA USA USA USA USA| +08::01::2022 05:30:33|HETZERBROS WE WON| +08::01::2022 05:30:33|COMMAND AND CONQUER BROS WW@| +08::01::2022 05:30:34|I CAN FEEL MY BLOOD TURN RED WHITE BLUE| +08::01::2022 05:30:34|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:36|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:37|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:37|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:37|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:37|Danmaku going so fadt no one will see I'm gonna pee| +08::01::2022 05:30:38|sa +08::01::2022 05:30:39|USA USA USA USA USA SUA USA USA USA USAUS AUSA USA USA| +08::01::2022 05:30:39|???? +08::01::2022 05:30:39|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:39|USA USA USA USA USA USA USA USA| +08::01::2022 05:30:40|GRAND THEFT SENSHA| +08::01::2022 05:30:40|COMING AGAIN TO SAVE THE MOTHERFUCKING DAY NOW| +08::01::2022 05:30:41|USA USA USA USA| +08::01::2022 05:30:41|there goes the MEXT guy's car| +08::01::2022 05:30:41|Just a little flyby| +08::01::2022 05:30:41|WHOOP WHOOP| +08::01::2022 05:30:42|BASED AMERICA| +08::01::2022 05:30:43|>we'll just leave em here lmao| +08::01::2022 05:30:43|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:43|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:44|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:44|burgers...i kneel...| +08::01::2022 05:30:47|USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:30:49|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:49|YO THIS ANON IS PEEING| +08::01::2022 05:30:50|Land of the free| +08::01::2022 05:30:51|ORARI GO AMERICAN BACKING| +08::01::2022 05:30:52|LOW ALTITUDE| +08::01::2022 05:30:53|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:54|WHATEVER YOU DO DO NOT PEE| +08::01::2022 05:30:54|UPS UPS UPS UPS UPS UPS UPS UPS UPS UPS | +08::01::2022 05:30:55|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:30:56|Thank you Kay| +08::01::2022 05:30:57|FREEDOM AIN'T FREE| +08::01::2022 05:30:57|THEY LANDED ON ONE OF THE GIRLS| +08::01::2022 05:30:57|That cost at least 50 command points| +08::01::2022 05:30:58|I WILL SEE YOU PEE| +08::01::2022 05:30:58|ye sure| +08::01::2022 05:30:58|still jobbers| +08::01::2022 05:30:59|USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +08::01::2022 05:30:59|God be with you now spread your wings and fly!| +08::01::2022 05:31:00|haha jobbers| +08::01::2022 05:31:00|>Tank laundering\| +08::01::2022 05:31:05|alisa has a very sexy voice| +08::01::2022 05:31:05|the c-5m does not have tactical airlift capability| +08::01::2022 05:31:06|IT'S MOMOOOOOOOOOO| +08::01::2022 05:31:07|CUTE CHEATER| +08::01::2022 05:31:08|OG +08::01::2022 05:31:08|even the bassist| +08::01::2022 05:31:09|Spank Naomi and Alisa Y::Y| +08::01::2022 05:31:09|>actual load plates Amazing detail| +08::01::2022 05:31:09|HOT CUNNY| +08::01::2022 05:31:11|>you have to fight for israel| +08::01::2022 05:31:12|TL Note: "Anzu" means "SEX"| +08::01::2022 05:31:14|Cute tryhard| +08::01::2022 05:31:18|What kind of punishment did Alisa receive? She seemed a lot nicer than last time| +08::01::2022 05:31:20|Takashi was the bassist| +08::01::2022 05:31:20|the meaning behind the mask| +08::01::2022 05:31:21| +08::01::2022 05:31:21|nzu +08::01::2022 05:31:22|Ty TL| +08::01::2022 05:31:22|THANKS TL| +08::01::2022 05:31:23|GET HER MOMO| +08::01::2022 05:31:26|rape correction| +08::01::2022 05:31:27|sex with anzu?| +08::01::2022 05:31:31|look at these retards lol| +08::01::2022 05:31:32|lat +08::01::2022 05:31:32|;-; sad kappas| +08::01::2022 05:31:33|Alisa sounds like she fucks band members (except bassists)| +08::01::2022 05:31:33|ORGEY | +08::01::2022 05:31:34|TL note: Anzu means "Uwoooooooooooh"| +08::01::2022 05:31:35|Cute clones| +08::01::2022 05:31:35|ewd +08::01::2022 05:31:35|They've gone ferral.| +08::01::2022 05:31:38|EX +08::01::2022 05:31:38|BAD TO THE BONE| +08::01::2022 05:31:38|tsd +08::01::2022 05:31:39|abandoned children| +08::01::2022 05:31:39|THANKS TL ;_;| +08::01::2022 05:31:40|Angery mumu| +08::01::2022 05:31:40|so fucking cute bros| +08::01::2022 05:31:41|NO DISCIPLINE| +08::01::2022 05:31:42|EXCEPT TAKASHI| +08::01::2022 05:31:42|Delinquent comittee| +08::01::2022 05:31:44|Return to native| +08::01::2022 05:31:45|EEEEEEEEGGGGGGS +08::01::2022 05:31:45|ELINQUENT +08::01::2022 05:31:46|TAKING ADVANTAGE AND HAVING YOUR WAY WITH ALL THE SUDAKOS| +08::01::2022 05:31:47|sleepy kappas| +08::01::2022 05:31:47|Cute sodoko| +08::01::2022 05:31:47|appa +08::01::2022 05:31:47|she looks like she's gonna break| +08::01::2022 05:31:48|YOUR WHAT?| +08::01::2022 05:31:51|SEX WITH SODOKO| +08::01::2022 05:31:54|literally me| +08::01::2022 05:31:54|EEEEEEEEEEEEEEGGGGGGGGGGGGS +08::01::2022 05:31:56|LITERALLY ME| +08::01::2022 05:31:57|Delinquent Sodoko| +08::01::2022 05:31:57|AZYDOKO +08::01::2022 05:31:58|ODOKO +08::01::2022 05:32:00|EEEEEEEEEEEEGGGGGGGGGS +08::01::2022 05:32:01|cute sodoko| +08::01::2022 05:32:01|e +08::01::2022 05:32:02|me tomorrow morning| +08::01::2022 05:32:02|sodoclone foursome| +08::01::2022 05:32:02|lewd bastard poor sodoko| +08::01::2022 05:32:02|Why even moralize... it's hopeless| +08::01::2022 05:32:02|nihilist sodoko| +08::01::2022 05:32:03|Hai shuriyo| +08::01::2022 05:32:05|Punished Sodoko| +08::01::2022 05:32:06|odokoooooooo +08::01::2022 05:32:07|Me right now| +08::01::2022 05:32:07|Sodoko&Mako synced up| +08::01::2022 05:32:08|Time for the rape correction| +08::01::2022 05:32:13|>all those skirts IMAGINE THE SMELL| +08::01::2022 05:32:15|ags:moral_degradation +08::01::2022 05:32:19|wole +08::01::2022 05:32:19|Girls und ::fit::| +08::01::2022 05:32:19|TRONG +08::01::2022 05:32:19|She's like fuck you mako| +08::01::2022 05:32:21|ONEGAI MUSCLE| +08::01::2022 05:32:22|AEKO +08::01::2022 05:32:22|SO RE| +08::01::2022 05:32:23|Does it technically count as watching the stream if I sleep on my chair???| +08::01::2022 05:32:23|::fit:: here| +08::01::2022 05:32:23|fit:: +08::01::2022 05:32:24|GETTING BIG| +08::01::2022 05:32:24|FIT::IZENS +08::01::2022 05:32:25|WOLE +08::01::2022 05:32:25|Time to get swole.| +08::01::2022 05:32:27|vfit:: +08::01::2022 05:32:27|fit:: +08::01::2022 05:32:27|BEACH VOLLEYBALL EPISODE| +08::01::2022 05:32:27|YOU'RE ALL GONNA MAKE IT, BRAH!| +08::01::2022 05:32:28|TRONK +08::01::2022 05:32:28|DYELlets +08::01::2022 05:32:30|FIT:: +08::01::2022 05:32:30|OMAD +08::01::2022 05:32:30|fitv::! +08::01::2022 05:32:30|AINZ +08::01::2022 05:32:30|Lets get ripped!| +08::01::2022 05:32:30|IT +08::01::2022 05:32:32|::fit:: gang| +08::01::2022 05:32:33|GOTTA EAT BIG TO GET BIG COME ON| +08::01::2022 05:32:34|i'll take all three at once| +08::01::2022 05:32:34|ute +08::01::2022 05:32:34|SWOLE PATROL| +08::01::2022 05:32:36|gonna make it| +08::01::2022 05:32:37|SORE DA| +08::01::2022 05:32:37|out:: +08::01::2022 05:32:41|GET FIT FOR ANIKI| +08::01::2022 05:32:45|they all make it bros| +08::01::2022 05:32:46|AZUSA CUTE| +08::01::2022 05:32:46|They discovered fire!| +08::01::2022 05:32:49|aniki ;__;| +08::01::2022 05:32:49|Aniki ;_;| +08::01::2022 05:32:54|>aniki death anniversary in less than 2 months| +08::01::2022 05:32:55|niki... +08::01::2022 05:32:55|FISH FEAR ME| +08::01::2022 05:32:57|how do they afford fuel ;_;| +08::01::2022 05:32:58|based hivemind| +08::01::2022 05:32:58|__; +08::01::2022 05:32:59|OBY? +08::01::2022 05:33:00|etsubouuuuuuuuuuuuuuuuuuuuuuu +08::01::2022 05:33:02|IODU +08::01::2022 05:33:03|omfy +08::01::2022 05:33:07|WOMEN FEAR ME| +08::01::2022 05:33:07|night of fire| +08::01::2022 05:33:08|THE SODOCLONES JUST ROBBED THAT STORE| +08::01::2022 05:33:08|ood +08::01::2022 05:33:09|im waiting for duce| +08::01::2022 05:33:09|sleepy time| +08::01::2022 05:33:10|Delinquent clones| +08::01::2022 05:33:10|CUT EDELINQUENTS| +08::01::2022 05:33:10|aniki smiles upon ye| +08::01::2022 05:33:10|AJAMA +08::01::2022 05:33:14|zzzz +08::01::2022 05:33:15|They really are homeless| +08::01::2022 05:33:16|Girls und Slice of Life| +08::01::2022 05:33:19|how many years has it been now bros?| +08::01::2022 05:33:20|Girls und Duce| +08::01::2022 05:33:21|Imagine rping the Sodoklones| +08::01::2022 05:33:24|Ganbare Boko| +08::01::2022 05:33:25|Girls und Nothing| +08::01::2022 05:33:25|holding up combini with tanks| +08::01::2022 05:33:30|that's against school regulations| +08::01::2022 05:33:31|10 years now| +08::01::2022 05:33:32|Girls Und Squaters| +08::01::2022 05:33:34|Girls und Nihlism| +08::01::2022 05:33:35|consesual sex with the sodoclones!| +08::01::2022 05:33:38|LUT +08::01::2022 05:33:38|yeah ok saori| +08::01::2022 05:33:39|>saori >marrying| +08::01::2022 05:33:40|Saori Arranged Marriage| +08::01::2022 05:33:44|marrying +08::01::2022 05:33:45|>Using tanks as cars| +08::01::2022 05:33:45|raising our 40 sodoclone children!| +08::01::2022 05:33:47|I skip the part between battles when rewatching the film. Honestly forgot this was even here| +08::01::2022 05:33:51| +08::01::2022 05:33:53|MAMA TAIMU| +08::01::2022 05:34:00|marriage? are you sersious anon? have you seen "THAT DANCE"????!??!?!?!| +08::01::2022 05:34:01|homeless people be like| +08::01::2022 05:34:01|UH OH| +08::01::2022 05:34:06|SHIHO HERE I COME| +08::01::2022 05:34:16|Miho completely ignoring Hana for a boko sign| +08::01::2022 05:34:18|I HATE BOKO STUPID FUCKING BEAR| +08::01::2022 05:34:19|Maho can adopt Miho | +08::01::2022 05:34:19|NAKADASHI SHIHO| +08::01::2022 05:34:20|OKO +08::01::2022 05:34:21|Can Miho even move back in with shiho?| +08::01::2022 05:34:22|ITS FUCKING BOKO HOLY SHIT GUYS STOP THE TANK | +08::01::2022 05:34:23|OPERATION PUNCHY?| +08::01::2022 05:34:24|TOP!!!! +08::01::2022 05:34:25|And here comes the worst part of the film| +08::01::2022 05:34:29|sex with boko| +08::01::2022 05:34:29|IN THE NAME OF BOKO!| +08::01::2022 05:34:29|okoland! +08::01::2022 05:34:31|HOLY FUCK ITS BOKO| +08::01::2022 05:34:31|IS THAT MOTHERFUCKING BOKO| +08::01::2022 05:34:31|Time to get WACKY!| +08::01::2022 05:34:32|THE BEAR| +08::01::2022 05:34:32|ITS FUCKING BOKO| +08::01::2022 05:34:33|BOKOO | +08::01::2022 05:34:35|HOLY SHIT STOP ITS BOKO| +08::01::2022 05:34:35|OKO +08::01::2022 05:34:36|OKO +08::01::2022 05:34:36|BOKO GANBARE| +08::01::2022 05:34:36|OKO +08::01::2022 05:34:36|Miho wants to fuck a Boko| +08::01::2022 05:34:37|BOKO WE LOVE YOU| +08::01::2022 05:34:37|OKOOOOOOOOOOOOOOOO!! +08::01::2022 05:34:38|OKO +08::01::2022 05:34:39|THE FUCK DID YOU SAY ABOUT BOKO| +08::01::2022 05:34:40|OKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKO +08::01::2022 05:34:40|OKO +08::01::2022 05:34:40|B O K O| +08::01::2022 05:34:41|BOKO HARAM| +08::01::2022 05:34:41|HOLY SHIT BOKO?!?!?!?!?!?!??!?!?!| +08::01::2022 05:34:41|auuuuuu~ +08::01::2022 05:34:41|UUUUUUUUUUUUUUUUUUUUUUUUTE +08::01::2022 05:34:41|BOKO HARAM| +08::01::2022 05:34:42|BOKO BOKO SLUT| +08::01::2022 05:34:42|BOKO BOKO| +08::01::2022 05:34:42|BOKO AUTISM| +08::01::2022 05:34:42|BOKO DA| +08::01::2022 05:34:43|HOLY SHIT ITS BOKO| +08::01::2022 05:34:43|HOLY SHIT ITS BOKO| +08::01::2022 05:34:43|GANBARE BOKO!| +08::01::2022 05:34:43|Tankfags, how many miles per gallon does a panzer get?| +08::01::2022 05:34:43|OKO +08::01::2022 05:34:43|BOKO POGGERS| +08::01::2022 05:34:44|OCOCK +08::01::2022 05:34:44|UTE +08::01::2022 05:34:45|OKO +08::01::2022 05:34:45|her smile and optimism: RESTORED| +08::01::2022 05:34:47|OKO +08::01::2022 05:34:48|OKOOOO +08::01::2022 05:34:48|GANBARE BOKOOOOOOOO!!!!!!!| +08::01::2022 05:34:48|Fuckin Silent Hill 2 in here| +08::01::2022 05:34:48|YOU GOT THIS BOKO KEEP FIGHTING| +08::01::2022 05:34:49|OKO +08::01::2022 05:34:49|OKO! +08::01::2022 05:34:49|It's eat up like the real Boko!!| +08::01::2022 05:34:49|OKO +08::01::2022 05:34:49|UTE +08::01::2022 05:34:51|YATTE YARU YATTE YARU YATTE YARUZE| +08::01::2022 05:34:51|Miho is so fucking cute bros| +08::01::2022 05:34:52|KO +08::01::2022 05:34:53|OKO +08::01::2022 05:34:53|Operation punchy!| +08::01::2022 05:34:54|Ganbare Boco| +08::01::2022 05:34:54|_; +08::01::2022 05:34:54|TOY BEAR > YOU| +08::01::2022 05:34:55|Stupid bear| +08::01::2022 05:34:55|COME ON BOKO| +08::01::2022 05:34:56|GARBAGE BEAR| +08::01::2022 05:34:57|YATTE YARU| +08::01::2022 05:34:59|BOKO ;_;| +08::01::2022 05:34:59|GAAANNNBBAAREE BOOOKOOO!| +08::01::2022 05:34:59|TIME FOR BEST GIRL'S INTRODUCTION| +08::01::2022 05:35:00|GUYS ITS BOKO| +08::01::2022 05:35:00|boko boko| +08::01::2022 05:35:01|IGHT +08::01::2022 05:35:04|WHAT A DUMP| +08::01::2022 05:35:05|>ITALY BTFO| +08::01::2022 05:35:05|uuuoooh when?| +08::01::2022 05:35:06|TFO +08::01::2022 05:35:06|BOKO BOKO BOKO BOKO| +08::01::2022 05:35:07|GANBARE, BOKO| +08::01::2022 05:35:07|kek yukari styling on italy| +08::01::2022 05:35:08|MAO +08::01::2022 05:35:08|I love Boko| +08::01::2022 05:35:09|shitaly +08::01::2022 05:35:09|-duce +08::01::2022 05:35:10|ITALY BTFO| +08::01::2022 05:35:10|BOKO LETS FUCKING GOOOOOO| +08::01::2022 05:35:10|ITALY BTFO| +08::01::2022 05:35:12|YOU CAN THIS!| +08::01::2022 05:35:13|Pasta bros...| +08::01::2022 05:35:13|ITALY BTFO| +08::01::2022 05:35:14|BOKO CULT BOKO CULT| +08::01::2022 05:35:14|BOKO WORLD| +08::01::2022 05:35:16|BOKO IS MY WIFE!| +08::01::2022 05:35:17|ducew +08::01::2022 05:35:18|BOKO BOKO'D| +08::01::2022 05:35:18|YOU CAN THIS!| +08::01::2022 05:35:19|OH NO ITALYBROS...| +08::01::2022 05:35:20|Wow, calling out Italy like that| +08::01::2022 05:35:20|Italy absolutely destroyed| +08::01::2022 05:35:20|YOU CAN THIS| +08::01::2022 05:35:22|BOKO GANBARE| +08::01::2022 05:35:22|Look at how happy that retard miho is| +08::01::2022 05:35:24|ANBARE!!! +08::01::2022 05:35:24|me on the left| +08::01::2022 05:35:25|COME ON BOKO| +08::01::2022 05:35:27|Is Miho OK| +08::01::2022 05:35:27|OH NO BOKO WATCH OUT| +08::01::2022 05:35:28|CUTE MIHO| +08::01::2022 05:35:28|BOKO ;_;| +08::01::2022 05:35:28|GANBARE BOKO| +08::01::2022 05:35:28|It's a boko kinda world| +08::01::2022 05:35:29|I believe in Boko| +08::01::2022 05:35:30|FUCK EM UP BOKO!| +08::01::2022 05:35:31|BOKO ;_;| +08::01::2022 05:35:32|YOU GOT THIS BOKO| +08::01::2022 05:35:32|Oh God. I wish I was Boco| +08::01::2022 05:35:32|ONLY MIHO CAN SEE THIS. HER MIND IS BROKEN.| +08::01::2022 05:35:33|\o:: GANBAREEEEEEEE| +08::01::2022 05:35:34|SMOL NERD!| +08::01::2022 05:35:34|who actually likes this crap| +08::01::2022 05:35:34|GANBARE BOKO| +08::01::2022 05:35:35|OCK +08::01::2022 05:35:36|WW.BOKOED.COM +08::01::2022 05:35:36|GANBARE BOKO| +08::01::2022 05:35:37|Miho my autistic wife| +08::01::2022 05:35:37|ANBARE +08::01::2022 05:35:37|BOKO BEST GIRL| +08::01::2022 05:35:37|BOKO GANBARE| +08::01::2022 05:35:37|GANBARE BOKO| +08::01::2022 05:35:38|BOKOOOOOOOOOO NOOOOOOOOOOOOOO| +08::01::2022 05:35:38|GANBARE \o::| +08::01::2022 05:35:38|GANBARE BOKO| +08::01::2022 05:35:38|GANBARE BOKO| +08::01::2022 05:35:38|KEEP FIGHTING BOKO| +08::01::2022 05:35:38|CHEER LOUDER| +08::01::2022 05:35:39|Killed or be Killed, Jack| +08::01::2022 05:35:39|ANBARE +08::01::2022 05:35:39|GANBARE BOKO| +08::01::2022 05:35:39|anabre! +08::01::2022 05:35:39|MY HEART!!!| +08::01::2022 05:35:40|GANBAREEEEEEEEEE BOKOOO| +08::01::2022 05:35:40|OKOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 05:35:40|GANBARE | +08::01::2022 05:35:40|GANBARE BOKO| +08::01::2022 05:35:41|GANBARE BOKO| +08::01::2022 05:35:41|risu... +08::01::2022 05:35:41|COME ON BOKO| +08::01::2022 05:35:42|GO BOKO| +08::01::2022 05:35:43|ANBARE +08::01::2022 05:35:43|LICE +08::01::2022 05:35:43|BOKO | +08::01::2022 05:35:44|GANBAREEEE BOKO| +08::01::2022 05:35:45|GANBARE BOKO| +08::01::2022 05:35:45|GANBARE BOKO| +08::01::2022 05:35:46|GANBARE BOKO!!| +08::01::2022 05:35:46|GANBARE BOKO| +08::01::2022 05:35:46|BOKO GANBARE| +08::01::2022 05:35:46|ANBAREEEEEEEEEEEEEEEEEE +08::01::2022 05:35:46|OOOOOOOHHHHHHHHHHHHHHHH +08::01::2022 05:35:47|miho is a psycho wtf| +08::01::2022 05:35:47|ANBARE +08::01::2022 05:35:48|COME ON BOKO| +08::01::2022 05:35:48|GO BOKO| +08::01::2022 05:35:49|GANBARE BOKO| +08::01::2022 05:35:49|ANBAREEEE +08::01::2022 05:35:50|GANBARE BOKO| +08::01::2022 05:35:50|ANBAREEEEEEEEEEE +08::01::2022 05:35:50|Boko fightO| +08::01::2022 05:35:50|GANBARE BOKO| +08::01::2022 05:35:51|HOLY SHIT HERE IT IS | +08::01::2022 05:35:51|GANBARE BOKOOOOOOOOO| +08::01::2022 05:35:51|ATAKITA +08::01::2022 05:35:51|WE GOOTA HELP HIM!| +08::01::2022 05:35:51|THERE'S THE BITCH GET HER| +08::01::2022 05:35:51|GANBARE BOKO| +08::01::2022 05:35:52|ANBAREEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 05:35:52|BOKO ;_;| +08::01::2022 05:35:52|Arisu teh autst| +08::01::2022 05:35:52|OOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 05:35:53|Ganbare boko!!!| +08::01::2022 05:35:53|risu... +08::01::2022 05:35:53| 張れぇぇぇぇぇ +08::01::2022 05:35:54|believe it!| +08::01::2022 05:35:54|DAMN KID| +08::01::2022 05:35:55|GAMBAREE BOKOOOO| +08::01::2022 05:35:55|ANBAREEEEEEE +08::01::2022 05:35:56|THE PEAK OF ANIMATIMOMN| +08::01::2022 05:35:57|GANBARE BOKO!| +08::01::2022 05:35:57|ANBAREEEEEEEEEEEEE +08::01::2022 05:35:58|BOKO! GANBARE!| +08::01::2022 05:35:58|GET UP BOKO| +08::01::2022 05:35:58|o:: +08::01::2022 05:35:59|GANBARE BOKOOO| +08::01::2022 05:35:59|OKOOOOOOOOOOOO +08::01::2022 05:35:59|Go Boko!| +08::01::2022 05:35:59|IGHTO +08::01::2022 05:36:00|BOKO GET UP| +08::01::2022 05:36:01|wow boko jobs| +08::01::2022 05:36:02|COME ON GUYS WE NEED BOKO TO GET THE DUB THIS TIME| +08::01::2022 05:36:03|BOKO GANBARE| +08::01::2022 05:36:03| +08::01::2022 05:36:05|FIGHT BACK| +08::01::2022 05:36:05|BOKO ;___;| +08::01::2022 05:36:05|such retarded shit| +08::01::2022 05:36:07|Keep it up Boko| +08::01::2022 05:36:07|boko being beaten up by niggers| +08::01::2022 05:36:07|KICK HIS ASS SEABASS| +08::01::2022 05:36:07|I can't believe Miho is a ryonaqueen...| +08::01::2022 05:36:08|CMON BOKO GET UP| +08::01::2022 05:36:10|I'm bleeding making me the victor| +08::01::2022 05:36:11|jobs +08::01::2022 05:36:13|RISUUUUUUUUUUUUUUUUU +08::01::2022 05:36:15|no dont give it to her| +08::01::2022 05:36:16|ANBARE +08::01::2022 05:36:17|>10 YEARS OF GUP >STILL NO BOKO ANIME| +08::01::2022 05:36:19|BEAT THAT LOLI'S ASS AND TAKE IT MIHO| +08::01::2022 05:36:20|boko is just like pravda| +08::01::2022 05:36:20|MY BOKO!| +08::01::2022 05:36:21|UH OH| +08::01::2022 05:36:22|20 YEARS OLD!| +08::01::2022 05:36:22|OOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 05:36:23|EROTIC CHILD| +08::01::2022 05:36:23|OOOOOHHHHHHHHHH +08::01::2022 05:36:23|SUPER RARE| +08::01::2022 05:36:24|AKADASHI +08::01::2022 05:36:25|stream those films if you're so great| +08::01::2022 05:36:25|OOOOOOOOOOOOOOOOOOOOOOOOOHHHHH +08::01::2022 05:36:27|00d +08::01::2022 05:36:27|UTE +08::01::2022 05:36:28|ARISU MOMENT| +08::01::2022 05:36:28|Can't fucking believe that they're stealing merch| +08::01::2022 05:36:30|UDE +08::01::2022 05:36:30|FAIL TS| +08::01::2022 05:36:32|>gup is 30 years old| +08::01::2022 05:36:33|cute npc| +08::01::2022 05:36:33|UDE +08::01::2022 05:36:37|Miho's future wife| +08::01::2022 05:36:37|AT LEAST SAY THANK YOU YOU MINI AUTIST| +08::01::2022 05:36:38|Guys... I think I'm a lolicon| +08::01::2022 05:36:38|ARISU NAKADASHI| +08::01::2022 05:36:38|utist +08::01::2022 05:36:39|based mext| +08::01::2022 05:36:41|HAD +08::01::2022 05:36:42|LOOK AT THAT ADORABLE UNI STUDENT| +08::01::2022 05:36:44|CUTE BF AND GF| +08::01::2022 05:36:44|TL Note: "Anzu" means "SEX"| +08::01::2022 05:36:45|males +08::01::2022 05:36:45|That side character was cute| +08::01::2022 05:36:47|Enter chad| +08::01::2022 05:36:47|NTER +08::01::2022 05:36:48|RANDOSERU PERSUATION| +08::01::2022 05:36:49|THANKS TL| +08::01::2022 05:36:50|Anzu paying with her body| +08::01::2022 05:36:50|ourguy:: +08::01::2022 05:36:50|smh shoulda got a pinky promise| +08::01::2022 05:36:52|no seriously wtf is this guys problem?| +08::01::2022 05:36:52|HOLY FUCK SHE'S AS TALL AS HIM SITTING DOWN| +08::01::2022 05:36:52|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 05:36:54|BUSED +08::01::2022 05:36:55|The agreement is being held to we got a movie| +08::01::2022 05:36:55|OY VEY SHUT IT DOWN| +08::01::2022 05:36:56|NZU +08::01::2022 05:36:58|>prease understando| +08::01::2022 05:36:58|lat +08::01::2022 05:36:58|MADE FOR CORRECTION| +08::01::2022 05:36:59|REASONM +08::01::2022 05:37:00|PREAUSURE SUNDERASTANDTOD| +08::01::2022 05:37:00|Non Verbal sorry| +08::01::2022 05:37:02|>PUREAZE UNDERSTAND| +08::01::2022 05:37:03|Oh God Anzu is so hot| +08::01::2022 05:37:04|smug | +08::01::2022 05:37:04|You can have my sensha, when you pry it from MY COLD DEAD HANDS| +08::01::2022 05:37:07|RAIOTOR +08::01::2022 05:37:07|It's just business| +08::01::2022 05:37:07|Reminder that Anzu is Renta's wife| +08::01::2022 05:37:09|preasu understandu| +08::01::2022 05:37:12|Lawyer anons?| +08::01::2022 05:37:12|giga chad MEXT| +08::01::2022 05:37:12|MAKING DEALS WITH JEWS SHAME| +08::01::2022 05:37:12|WORDS MEAN NOTHING, REJECT SCHOOLSHIP| +08::01::2022 05:37:13|gup is actually sold in universe as merch for the team| +08::01::2022 05:37:15|SEX WITH ALICE A 20 YEAR OLD UNIVERSITY STUDENT| +08::01::2022 05:37:16|something" +08::01::2022 05:37:18|he did all he could to shut Ooarai down| +08::01::2022 05:37:19|Oh God I wish Momo is my Wife| +08::01::2022 05:37:21|Mans got that Gendo Ikari tint| +08::01::2022 05:37:25|Checks out in the eyes of the law| +08::01::2022 05:37:27|it's ove| +08::01::2022 05:37:30|UTE +08::01::2022 05:37:31|>momo ever doing a good job| +08::01::2022 05:37:32|:::::::::::::::::::::::::::::::::::::: +08::01::2022 05:37:37|The rice cooker's broken and we're out of toilet paper.| +08::01::2022 05:37:40|lawyer here, it makes sense to me| +08::01::2022 05:37:41|Anzu is sexing with me| +08::01::2022 05:37:42|\o HEIL KAICHOU| +08::01::2022 05:37:42|Sudakos need rape correction| +08::01::2022 05:37:45|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 05:37:45|AMSTERS +08::01::2022 05:37:47|If only Momo could aim as good| +08::01::2022 05:37:47|Momo's doing her best - don't bully her!!!!!!| +08::01::2022 05:38:00|I recognize that haifuri reference. s2 when| +08::01::2022 05:38:00|fatass is eating all slices by himself isnt he| +08::01::2022 05:38:00|oji san made it in| +08::01::2022 05:38:01|i like this old fuck| +08::01::2022 05:38:03|SAORIS LOVER| +08::01::2022 05:38:05|ANZU UOH| +08::01::2022 05:38:06|fuck that guy| +08::01::2022 05:38:07|ald +08::01::2022 05:38:09|FAT OLD MAN| +08::01::2022 05:38:11|USED TANKS| +08::01::2022 05:38:12|Ugly bastard| +08::01::2022 05:38:13|TL Note: "Anzu" means "SEX"| +08::01::2022 05:38:13|Press S to have bribe sex with Anzu| +08::01::2022 05:38:14|looked like ANN| +08::01::2022 05:38:16|ugly bastard| +08::01::2022 05:38:16|what a fat ugly old bastard| +08::01::2022 05:38:17|THANKS TL| +08::01::2022 05:38:18|where tf were you for the last 6 hours| +08::01::2022 05:38:18|I'M FORMING A TEAM. IT'S CALLED THE "TANK CAKE" INITIATIVE.| +08::01::2022 05:38:19|Saori does fuck that guy| +08::01::2022 05:38:20|ty tl| +08::01::2022 05:38:24|>trying to get the yakuza to lose face over tank funnies| +08::01::2022 05:38:25|holy fuck he's so bald| +08::01::2022 05:38:26|prease stop spamming anzu means sex| +08::01::2022 05:38:31|I want to correct Anzu| +08::01::2022 05:38:35|But Anzu does mean sex| +08::01::2022 05:38:36|Give him Hana| +08::01::2022 05:38:36|but anzu does mean sex| +08::01::2022 05:38:38|Anzu Means Sex| +08::01::2022 05:38:40|rorig +08::01::2022 05:38:42|who the fuck keeps saying "anzu means sex" stfu| +08::01::2022 05:38:43|Anzu does mean sex| +08::01::2022 05:38:44|holy fuck its been 6 hours ._.| +08::01::2022 05:38:45|prog knife| +08::01::2022 05:38:46|Its dangerous for Anzu to even be in the same room as him| +08::01::2022 05:38:47|anzu means sex for procreation| +08::01::2022 05:38:48| +08::01::2022 05:38:50|raurug +08::01::2022 05:38:52|anzu means sex btw| +08::01::2022 05:38:55|NZU +08::01::2022 05:38:55|lat +08::01::2022 05:38:55|is that a motherfucking ironclad???| +08::01::2022 05:38:55|Red Potato| +08::01::2022 05:38:55|TL note: Anzu means soz| +08::01::2022 05:38:55|anzu means sex| +08::01::2022 05:38:56|but anzu means sex| +08::01::2022 05:38:56|I want to Anzu Anzu's Anzu| +08::01::2022 05:38:58|AHO +08::01::2022 05:38:59|h? +08::01::2022 05:38:59|i want to touch mahos mahos| +08::01::2022 05:38:59|MY MAHO WIFE| +08::01::2022 05:39:00|Tl keeps saying anzu means sex| +08::01::2022 05:39:00|i just want to hug anzu| +08::01::2022 05:39:00|MAHO'S MAHOS| +08::01::2022 05:39:00|CASUAL MAHO| +08::01::2022 05:39:01|Did you know? Anzu means sex| +08::01::2022 05:39:02|cute dog| +08::01::2022 05:39:02|what does anzu mean please respond| +08::01::2022 05:39:03|Dog :)| +08::01::2022 05:39:03|UTE +08::01::2022 05:39:04|YOU JUST KNOW| +08::01::2022 05:39:04|Maho chan| +08::01::2022 05:39:05|AHO +08::01::2022 05:39:05|Anzu means "Uwooooohhhh"| +08::01::2022 05:39:05|CUTE MAHO| +08::01::2022 05:39:06|I love Maho| +08::01::2022 05:39:07|UOOOOOOOOH ;_;| +08::01::2022 05:39:08|AHOOOOOOOOO +08::01::2022 05:39:08|YOU JUST KNOW| +08::01::2022 05:39:08|anzu would not survive childbirth| +08::01::2022 05:39:09|CUTE FAMILY| +08::01::2022 05:39:09|AHO +08::01::2022 05:39:09|i'm going to breed a baseball team of mini-anzus with anzu| +08::01::2022 05:39:10|oggy! +08::01::2022 05:39:10|>dog YOU JUST KNOW| +08::01::2022 05:39:10|WAN WAN WAN| +08::01::2022 05:39:10|You just know.| +08::01::2022 05:39:10|AHO +08::01::2022 05:39:11|FAT MAHOS!| +08::01::2022 05:39:11|JK +08::01::2022 05:39:11|MAHO"S MAHOS AAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 05:39:11|AHO +08::01::2022 05:39:13|Cute wanko| +08::01::2022 05:39:13|MAHO WIFE| +08::01::2022 05:39:14|sex with Anzu?| +08::01::2022 05:39:14|CASUAL MISSIONARY WITH CASUAL MAHO| +08::01::2022 05:39:15|LOOK AT THE SIZE OF THEM| +08::01::2022 05:39:16|kairi +08::01::2022 05:39:17|APORIN +08::01::2022 05:39:17|SEEEEEEEEEEEEEEEEEX WITH MAHO| +08::01::2022 05:39:18|REEEEEDDDDDDD +08::01::2022 05:39:19|OOBA +08::01::2022 05:39:21|TL Note: "Anzu" means "UOHHHHH"| +08::01::2022 05:39:25|DISOWNED +08::01::2022 05:39:25|yeah maho does have bigger tits| +08::01::2022 05:39:26|thanks tl| +08::01::2022 05:39:27|Why is she walking Erika on a leash?| +08::01::2022 05:39:27|UOOOOOOOOOOOOOOOH ;_;| +08::01::2022 05:39:28|o? +08::01::2022 05:39:30|Maho's Maho Milkers| +08::01::2022 05:39:31|SHIHO'S SHIHOS| +08::01::2022 05:39:31|Maho got some big Maho's| +08::01::2022 05:39:36|UOOOOH SHIHO NAKADASI| +08::01::2022 05:39:36|BBBOOOOOOOOOOOOOOOBBBBBBBBBBS | +08::01::2022 05:39:37|I did not have sexual relations with Nishizumi Maho| +08::01::2022 05:39:38|Maho is my wife| +08::01::2022 05:39:44|This is probably my favorite part of the franchise really| +08::01::2022 05:39:45|Miho's situation is really sad when you think about it| +08::01::2022 05:39:45|I want to have kids with their Mom| +08::01::2022 05:39:47|>mom still a cunt| +08::01::2022 05:39:48|this scene is so kino| +08::01::2022 05:39:48|bobs and vegene| +08::01::2022 05:39:50|OKO! +08::01::2022 05:39:51|ndisowned? +08::01::2022 05:39:55|ANZERFAUST +08::01::2022 05:39:57|MOMMY MILKIES PLEASE| +08::01::2022 05:39:57|missile in the corner| +08::01::2022 05:39:58|the whole family situation is fucked| +08::01::2022 05:40:00|OOOOOOOOOOOOOOOOH +08::01::2022 05:40:02|Will shiho ever talk to miho again?| +08::01::2022 05:40:04|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +08::01::2022 05:40:04|OOOOOOOOOOOH +08::01::2022 05:40:04|PANZERFAUST PRESENT| +08::01::2022 05:40:04|UTE +08::01::2022 05:40:05|you just know maho is gonna steal mihos used panties | +08::01::2022 05:40:07|make that fucking bed| +08::01::2022 05:40:08|cute panzerfaust| +08::01::2022 05:40:08|>but mom i just want to watch boko not play senshado| +08::01::2022 05:40:08|THAT'S FUCKING ILLEGAL| +08::01::2022 05:40:08|_; +08::01::2022 05:40:09|oh +08::01::2022 05:40:09|Their childhood memories are surprisingly nice characterization in a series about tanks and shit| +08::01::2022 05:40:09|UTE +08::01::2022 05:40:10|Lovely flashback| +08::01::2022 05:40:11|why doesn't their dad fuck the mom? all their problems could be fixed| +08::01::2022 05:40:11|UOOOOOOOOOOOOOOOOOOOOOOOOOOOH PHOTO| +08::01::2022 05:40:12|skirts that short with thighs that slim are criminal| +08::01::2022 05:40:12|HH +08::01::2022 05:40:13|I'm just snorting in my shirt| +08::01::2022 05:40:14|QUICK MIHO SAVE YOUR FATHER HE'S LOCKED UP DOWNSTAIRS| +08::01::2022 05:40:14|that smile can melt ice| +08::01::2022 05:40:14|>A fucking panzerfaust| +08::01::2022 05:40:15|Maho is my wife| +08::01::2022 05:40:15|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHH +08::01::2022 05:40:18|UUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 05:40:18|Spank Miho and Maho Y::Y| +08::01::2022 05:40:19|sneaky maho| +08::01::2022 05:40:19|Maho lies about her pregnancy with that look....| +08::01::2022 05:40:20|Shiho signed it| +08::01::2022 05:40:21|CUTE ONEE-CHAN| +08::01::2022 05:40:22|FAIL TS| +08::01::2022 05:40:23|ORGERY!!! +08::01::2022 05:40:23|UTE +08::01::2022 05:40:23|panzer 2 bros| +08::01::2022 05:40:23|UUUUUUUUUUUUUUTE +08::01::2022 05:40:24|THAT'S A CRIME| +08::01::2022 05:40:24|Kino flashback| +08::01::2022 05:40:24|Oh God Maho is so sexy| +08::01::2022 05:40:25|O S T| +08::01::2022 05:40:25|CUTE TANK| +08::01::2022 05:40:27|sex with Anzu? YES or NO| +08::01::2022 05:40:27|kino | +08::01::2022 05:40:27|you saw nothing| +08::01::2022 05:40:29|CUTE TONK| +08::01::2022 05:40:30|INO +08::01::2022 05:40:30|WHAT WHERE DOES MIHO LIVE IF SHE CAN'T GO?| +08::01::2022 05:40:32|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 05:40:32|YES YES YES| +08::01::2022 05:40:33|Wait, that's illegal| +08::01::2022 05:40:33|-s-t +08::01::2022 05:40:34|warning, miho x maho sex scene inbound| +08::01::2022 05:40:34|kino track| +08::01::2022 05:40:35|UTE +08::01::2022 05:40:36|Cute child Miho!| +08::01::2022 05:40:36|ute +08::01::2022 05:40:36|INO +08::01::2022 05:40:37|_________________; +08::01::2022 05:40:37| 😭😭 +08::01::2022 05:40:37|INO +08::01::2022 05:40:39|>5-year olds driving a tank| +08::01::2022 05:40:41|ohhhh +08::01::2022 05:40:42|E +08::01::2022 05:40:42| +08::01::2022 05:40:43|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 05:40:44|>that animation| +08::01::2022 05:40:44|>hip movement| +08::01::2022 05:40:44|DAMN KID!!| +08::01::2022 05:40:45|>Miho will never rape you| +08::01::2022 05:40:46|unironic kino| +08::01::2022 05:40:46|oh +08::01::2022 05:40:46|SEX WITH MIHO (8)| +08::01::2022 05:40:48|>you will never enjoy the JP countryside with your two girls and tank| +08::01::2022 05:40:48|>letting a kid drive a tank| +08::01::2022 05:40:50|OOOOOOOOOOOOOOOH +08::01::2022 05:40:51|__; +08::01::2022 05:40:51|quit humping miho!| +08::01::2022 05:40:51|IT'S THE THING| +08::01::2022 05:40:51|NISHIZUMI STYLE CUNNNNYYYYYYYYYYYYYYYYYYYYYYY| +08::01::2022 05:40:51|You will never hump a panzer 2| +08::01::2022 05:40:52|KANI KANI KANI KANI KANI KANI| +08::01::2022 05:40:52|This is so sweet I love this| +08::01::2022 05:40:52|maho could drive a tank before she could walk| +08::01::2022 05:40:53|The kid... the kid... the kid... the kid...| +08::01::2022 05:40:53|EW +08::01::2022 05:40:57|Miho and Maho is so cute| +08::01::2022 05:40:58|Maho is very handsome| +08::01::2022 05:40:58|in +08::01::2022 05:41:00|ute +08::01::2022 05:41:01|smug miho| +08::01::2022 05:41:01|INO +08::01::2022 05:41:03|Fail TS hire someone better| +08::01::2022 05:41:05|cute dork faces| +08::01::2022 05:41:05|ute +08::01::2022 05:41:08|INRAR +08::01::2022 05:41:08|i just want miho and maho to be happy together again| +08::01::2022 05:41:10|umpu +08::01::2022 05:41:11|you will never kiss two underage daughters| +08::01::2022 05:41:12|UD +08::01::2022 05:41:12|these girls sure are cute| +08::01::2022 05:41:14|AVED +08::01::2022 05:41:14|UNNY....................................................................................................................................... +08::01::2022 05:41:14|Letting elementary schoolers drive a tank.| +08::01::2022 05:41:14|dirty cuties| +08::01::2022 05:41:15|Good form on that| +08::01::2022 05:41:15|why is this so better animated| +08::01::2022 05:41:16|TRONG +08::01::2022 05:41:16|muddy niggers| +08::01::2022 05:41:16|ek +08::01::2022 05:41:16|>Shiho ruined this| +08::01::2022 05:41:17|cute sisters| +08::01::2022 05:41:17|OOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 05:41:17|Danke tl| +08::01::2022 05:41:18|cute girl + boy| +08::01::2022 05:41:22|oT +08::01::2022 05:41:23|Sex in a tank| +08::01::2022 05:41:24|FIGHTING IN MUD WITH MIHO UOOOOOOOOOOOOOOOOHHHHHHH| +08::01::2022 05:41:24|Confident miho best miho| +08::01::2022 05:41:25|Great shot, right here.| +08::01::2022 05:41:27|fute and cunny| +08::01::2022 05:41:27|3p with them| +08::01::2022 05:41:27| 😭😭😭😭😭 +08::01::2022 05:41:28|blackface +08::01::2022 05:41:28|ynamic +08::01::2022 05:41:30| 😭😭😭😭😭 +08::01::2022 05:41:30|T o T| +08::01::2022 05:41:31|ino... +08::01::2022 05:41:33|TSUNEO DIED FOR THIS| +08::01::2022 05:41:35|My maho wife| +08::01::2022 05:41:35|oT +08::01::2022 05:41:35|why is that funny?| +08::01::2022 05:41:35|oT +08::01::2022 05:41:36|OOOH +08::01::2022 05:41:36|_; +08::01::2022 05:41:38|INO +08::01::2022 05:41:40|kino ToT| +08::01::2022 05:41:45|INJA +08::01::2022 05:41:47|it's funny because it's cute| +08::01::2022 05:41:50|REPENT NOW BITCH| +08::01::2022 05:41:52|i mean yeah i can see how it's cute but what's so funny?| +08::01::2022 05:41:56|ARE YOU A BAD ENOUGH DUDE TO SAVE OARAI| +08::01::2022 05:41:57|Why didn't shiho disown maho?| +08::01::2022 05:41:59|too old| +08::01::2022 05:41:59|FUCK YOU SHIHO| +08::01::2022 05:42:02|im. +08::01::2022 05:42:12|based mex, keeping gup alive| +08::01::2022 05:42:12|males +08::01::2022 05:42:13|buracku forest| +08::01::2022 05:42:14|>bullying MEXT lad| +08::01::2022 05:42:16|MEXTbros did we perhaps get too cocky?| +08::01::2022 05:42:19|2 MALES IN THE SAME ROOM WTF????| +08::01::2022 05:42:19|BALD FUCK ENTER| +08::01::2022 05:42:20|Megane won't back down| +08::01::2022 05:42:20|WORLD CHAMPIONSHIP SEASON 2| +08::01::2022 05:42:20|TL Note: "Anzu" means "SEX"| +08::01::2022 05:42:22|Mext simps for shiho| +08::01::2022 05:42:24|mext bros....| +08::01::2022 05:42:24|I WANT SHIHO TO BERATE ME FOR NOT BEING ABLE TO GIVE HER A THIRD CHILD| +08::01::2022 05:42:25|You can't die before I fuck you as payback| +08::01::2022 05:42:25|ANZUUUUUUUUUUUUUUUuoooooooooooh 😭😭😭| +08::01::2022 05:42:31|BASED MOM| +08::01::2022 05:42:34|NZU +08::01::2022 05:42:36|skill" +08::01::2022 05:42:36|>NO LUCK| +08::01::2022 05:42:39|ANGRY MOM VS THE PTA| +08::01::2022 05:42:40|>NO LUCK| +08::01::2022 05:42:40|Fucking hags reeee| +08::01::2022 05:42:40|BITCH PLEASE| +08::01::2022 05:42:41|akarimashita! +08::01::2022 05:42:42|>NO LUCK| +08::01::2022 05:42:42|married impegnation sex with Anzu| +08::01::2022 05:42:42|Hhh? +08::01::2022 05:42:43|the fucking nerve to shittalk her daughter| +08::01::2022 05:42:43|MEXT lad has it hard| +08::01::2022 05:42:45|THIS SHALL BE SETTLED WITH A SEX BATTLE| +08::01::2022 05:42:45|OTTEEM +08::01::2022 05:42:46|I NEED to fuck Anzu| +08::01::2022 05:42:49|LUCK = SHAME| +08::01::2022 05:42:50|I going to furiously masturbate to Mommy| +08::01::2022 05:42:51|she knows they have plot power| +08::01::2022 05:42:52|stand your ground mext| +08::01::2022 05:42:52|GET FUCKED TSUJI| +08::01::2022 05:42:53|mext had a hard life| +08::01::2022 05:42:54|eeeeeeeee~~ +08::01::2022 05:42:55|The situation is under control| +08::01::2022 05:42:58|Renta bullied by his future wife Anzu| +08::01::2022 05:42:58|IKA +08::01::2022 05:42:58|eversal +08::01::2022 05:42:59|X-LOVERS +08::01::2022 05:43:01|I've read a doujin where they fuck| +08::01::2022 05:43:02|I thought that was a gun for a second| +08::01::2022 05:43:03|HAG MEETUP| +08::01::2022 05:43:03|SMUG LOLI| +08::01::2022 05:43:05|MIKA'S MOM| +08::01::2022 05:43:08|ot +08::01::2022 05:43:09|MOMMY MOMMY| +08::01::2022 05:43:10|still don't get this guys objectives| +08::01::2022 05:43:12|Cute mom| +08::01::2022 05:43:14|HOT SINGLE MILF IN YOUR AREA| +08::01::2022 05:43:15|MOMMY MOMMY| +08::01::2022 05:43:16|marrying the mother the gain access to the daughter| +08::01::2022 05:43:16|old hag moment| +08::01::2022 05:43:18|Dual MILF action| +08::01::2022 05:43:18|HERMAN +08::01::2022 05:43:18|what gun would anzu use| +08::01::2022 05:43:19|mext is everybodies father| +08::01::2022 05:43:20|All i wanted was to close down their school fuck!| +08::01::2022 05:43:21|RUMI UOOOOH| +08::01::2022 05:43:23|his obj is to give us more GuP| +08::01::2022 05:43:24|>missing boko for a tank battle| +08::01::2022 05:43:24|USA USA USA| +08::01::2022 05:43:24|man those white shermans are hot| +08::01::2022 05:43:24|risu... +08::01::2022 05:43:25|inja +08::01::2022 05:43:26|NINJA CHINPO| +08::01::2022 05:43:28|CTAS +08::01::2022 05:43:29|RISU +08::01::2022 05:43:30|he holds a grudge against oarai for some reason, never explained, money thing is a farse| +08::01::2022 05:43:32|HAGSS REEEEEE GET OUT| +08::01::2022 05:43:33|ninja | +08::01::2022 05:43:35|ACTAS +08::01::2022 05:43:35|ARISU UOOOOOOOOH| +08::01::2022 05:43:35|Bermuda attack my prostate...| +08::01::2022 05:43:39|recording Arisu| +08::01::2022 05:43:40|OOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHH +08::01::2022 05:43:42|MEXT GUY IS A MARTYR\| +08::01::2022 05:43:43|all white shermans in the soviet winter would've been kino| +08::01::2022 05:43:45|CTAS +08::01::2022 05:43:46|BOKO'S ON STOP THE MATCH| +08::01::2022 05:43:46|That yuri doujin between Miho and Alice's moms| +08::01::2022 05:43:47|Arisu is only 13| +08::01::2022 05:43:47|Arisu the grey -> arisu the white| +08::01::2022 05:43:59|COLLEGE STUDENT| +08::01::2022 05:44:00|seriously though mext might have fucked shiho | +08::01::2022 05:44:00|lamo boko weeb| +08::01::2022 05:44:02|Cute Boko picnic| +08::01::2022 05:44:02|would you let your loli wear a skirt that short?| +08::01::2022 05:44:03|GANBARE BOKO MUSEUM| +08::01::2022 05:44:03|ESTROY +08::01::2022 05:44:05|guuys i'lm going home boko is on| +08::01::2022 05:44:06|BIG phone| +08::01::2022 05:44:06|>20 years old| +08::01::2022 05:44:07|Chiyo: The fuck is a Boko?| +08::01::2022 05:44:08|he doesn't have any motive, literally worse villain than sword art online| +08::01::2022 05:44:08|can't be helped| +08::01::2022 05:44:09|YOU DID GET APPROVE FROM YOUR WAIFU MOTHER RIGHT ANON| +08::01::2022 05:44:09|RAPE CORRECTION| +08::01::2022 05:44:10|He became the bad guy to give us more content | +08::01::2022 05:44:10|boko ;_;| +08::01::2022 05:44:12|press M if you have Maps all over your bedroom walls| +08::01::2022 05:44:16|I want to bone that loli| +08::01::2022 05:44:16|BOKO ;_;| +08::01::2022 05:44:16|DAMN UNIVERSITY CHILD| +08::01::2022 05:44:18|give the museum carbon coating| +08::01::2022 05:44:18| +08::01::2022 05:44:19| +08::01::2022 05:44:19|uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuute! +08::01::2022 05:44:19|I'M GONNA BREAK ARISUS BED| +08::01::2022 05:44:19|m +08::01::2022 05:44:23|I got like 2 maps| +08::01::2022 05:44:23|GANBARE MOMO| +08::01::2022 05:44:26|ail +08::01::2022 05:44:26|ed +08::01::2022 05:44:26|Momo dies during chair incident| +08::01::2022 05:44:27|HAIRS +08::01::2022 05:44:28|dead +08::01::2022 05:44:28|MOMOOO GANBAREE| +08::01::2022 05:44:28|EX +08::01::2022 05:44:29|ead +08::01::2022 05:44:29|Poor momo| +08::01::2022 05:44:30|stupid momo| +08::01::2022 05:44:30|ily +08::01::2022 05:44:30|KAICHOU ;_;| +08::01::2022 05:44:31|IP +08::01::2022 05:44:31| +08::01::2022 05:44:31|ANBARE +08::01::2022 05:44:32| +08::01::2022 05:44:32|anglerfish reference| +08::01::2022 05:44:32|>SHE WILL NEVER SAVE YOU :_:| +08::01::2022 05:44:32|EAD +08::01::2022 05:44:32|Momo just died| +08::01::2022 05:44:33|what happened to momo's family| +08::01::2022 05:44:34|AHAHA +08::01::2022 05:44:34|DIE MOMO DIE| +08::01::2022 05:44:34|ANZU RETURNS| +08::01::2022 05:44:35|Mom, if I do good, could you save my fav. franchise for me?| +08::01::2022 05:44:35|orthless +08::01::2022 05:44:35| +08::01::2022 05:44:36| +08::01::2022 05:44:36|actually dead| +08::01::2022 05:44:37|Farewell momo...| +08::01::2022 05:44:39|ed +08::01::2022 05:44:39|Momo tries very hard!| +08::01::2022 05:44:39|carbon coated girls| +08::01::2022 05:44:39|ADAIMA +08::01::2022 05:44:39|TL Note: "Anzu" means "SEX"| +08::01::2022 05:44:39|bAKA BAKA BAKA| +08::01::2022 05:44:39|wned +08::01::2022 05:44:40|OOOOOOOOOOOOANZU +08::01::2022 05:44:40| +08::01::2022 05:44:40|DUMBASS | +08::01::2022 05:44:40|NZU +08::01::2022 05:44:42|OOOH +08::01::2022 05:44:42| +08::01::2022 05:44:42|Poor Momo| +08::01::2022 05:44:43|;-; | +08::01::2022 05:44:43|ry +08::01::2022 05:44:43|Anzu, sex, ...| +08::01::2022 05:44:43|omocry +08::01::2022 05:44:43|UUOOOH +08::01::2022 05:44:44|I cant beleive Momo is dead| +08::01::2022 05:44:45|THANKS TL| +08::01::2022 05:44:45|Don't bully Momo!!!!!!!!!| +08::01::2022 05:44:46|CUTE MOMO| +08::01::2022 05:44:47|lat +08::01::2022 05:44:48|AAAIIIIIIIIIIIICHOOOOOOOOOOOOO +08::01::2022 05:44:48|ANZU GIVE ME SEX| +08::01::2022 05:44:49|PROTECT MOMO| +08::01::2022 05:44:49|aichou!!!! +08::01::2022 05:44:50|rotch +08::01::2022 05:44:50|kaeri +08::01::2022 05:44:51|KAICHOUUUUUUUUUUUUUUUUUUUUUU ;_______;| +08::01::2022 05:44:51|;_____________; KAICHOU| +08::01::2022 05:44:51|_; +08::01::2022 05:44:52|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 05:44:52|nzu +08::01::2022 05:44:52|Anzus perfectly flat chest| +08::01::2022 05:44:52|-; +08::01::2022 05:44:52|unnnnnyyyy +08::01::2022 05:44:52|her face...| +08::01::2022 05:44:53|UOH UOH UOH| +08::01::2022 05:44:53|face right in the cunny| +08::01::2022 05:44:54|_; +08::01::2022 05:44:55|cute voice crack| +08::01::2022 05:44:58|u:: +08::01::2022 05:45:00|cute voice| +08::01::2022 05:45:00|tony kaku| +08::01::2022 05:45:01|TONY KAKU| +08::01::2022 05:45:02|TRONK +08::01::2022 05:45:03|::fit:: gamers| +08::01::2022 05:45:04|amn +08::01::2022 05:45:05|KU-NYA +08::01::2022 05:45:05|UUOOOOOOOOOH KAICHOU| +08::01::2022 05:45:05|FUCKING JACKED| +08::01::2022 05:45:06|UFFGALS +08::01::2022 05:45:07|TONY WILL SAVE OORAI| +08::01::2022 05:45:08|UEG +08::01::2022 05:45:08|WOLE +08::01::2022 05:45:08|>toses the bar FIT AF| +08::01::2022 05:45:08|FIT. +08::01::2022 05:45:09|powered up| +08::01::2022 05:45:09|UFF +08::01::2022 05:45:09|UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +08::01::2022 05:45:09|AINZ +08::01::2022 05:45:12|fit:: +08::01::2022 05:45:13| 😭😭😭😭😭 +08::01::2022 05:45:13|GET BIG| +08::01::2022 05:45:13|KU-NYA +08::01::2022 05:45:14|uffffffffer +08::01::2022 05:45:14|IT +08::01::2022 05:45:14|oT +08::01::2022 05:45:15|MOMO DUMB| +08::01::2022 05:45:17|hobo bunnies| +08::01::2022 05:45:17|she still crying| +08::01::2022 05:45:18|WOLE +08::01::2022 05:45:19|Ripped Nyaa| +08::01::2022 05:45:19| 😭😭😭 +08::01::2022 05:45:21|FIT BITCH| +08::01::2022 05:45:22|EAT BIG TO GET BIG COME ON| +08::01::2022 05:45:23|sobbing momo| +08::01::2022 05:45:25|Cute dumb Monmo| +08::01::2022 05:45:26|Momo is so cute| +08::01::2022 05:45:26|ToT: +08::01::2022 05:45:30|Mallard Team killed seven people| +08::01::2022 05:45:32|They've gone feral| +08::01::2022 05:45:32|AZUSA IN ON SCREEN GUYS!!!| +08::01::2022 05:45:33|onobrow +08::01::2022 05:45:33|do you forgive Momo?| +08::01::2022 05:45:35|dumb deliquents| +08::01::2022 05:45:38|monobrow +08::01::2022 05:45:38|EETS +08::01::2022 05:45:38|who tf thinks momo is cute| +08::01::2022 05:45:38|lookit bunny| +08::01::2022 05:45:40|A PACK OF WILD SODOKOS| +08::01::2022 05:45:41|ADA +08::01::2022 05:45:42|ono-chan! +08::01::2022 05:45:42|STUPID DELINQUENTS| +08::01::2022 05:45:43|Get over here you shits!| +08::01::2022 05:45:43|odokos +08::01::2022 05:45:44|SODOCLONE SEEEEEEEEEEEEEX| +08::01::2022 05:45:44|cute delinquents| +08::01::2022 05:45:45|I THINK MOMO ISVERY CUTE| +08::01::2022 05:45:46|Feral kappas| +08::01::2022 05:45:47|>they're doing cucumbers in the rabbit cage| +08::01::2022 05:45:48|odoko +08::01::2022 05:45:48|AAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:45:49|no morals| +08::01::2022 05:45:50| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +08::01::2022 05:45:51|NANI SORE| +08::01::2022 05:45:54|_; +08::01::2022 05:45:55|UUUUUUUUUUUTE +08::01::2022 05:45:57|_; +08::01::2022 05:45:57|Momo is cute! Momo does her best! Momo is a good girl!| +08::01::2022 05:45:57|RAPE correct them, Mako| +08::01::2022 05:45:58|oT +08::01::2022 05:45:58|Sad lolis| +08::01::2022 05:45:59|momo is the definition of unsexy| +08::01::2022 05:45:59|cutest train| +08::01::2022 05:45:59|__; +08::01::2022 05:46:00|_; +08::01::2022 05:46:00|o: +08::01::2022 05:46:00|_; +08::01::2022 05:46:01|OOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 05:46:02|AS EXPECTED OF COUNTRY VEGETABLES| +08::01::2022 05:46:03|need moral correction| +08::01::2022 05:46:03|geta haircut, and join them mako| +08::01::2022 05:46:06|ANZU PULLS THROUGH| +08::01::2022 05:46:15|TL Note: "Anzu" means "SEX"| +08::01::2022 05:46:16|"""for sure"""| +08::01::2022 05:46:16|NZU +08::01::2022 05:46:18|MOMO SEXY NICE JOKE BRO| +08::01::2022 05:46:18|THANKS TL| +08::01::2022 05:46:19|this time for reals guys trust the plan| +08::01::2022 05:46:20|THANKS TL| +08::01::2022 05:46:22|THANKS TL| +08::01::2022 05:46:24|it's True because this paper says so| +08::01::2022 05:46:24|tanks tl| +08::01::2022 05:46:24|brb eating bread| +08::01::2022 05:46:25|anzU ANZU| +08::01::2022 05:46:28|I didnt say sexy I said cute| +08::01::2022 05:46:31| い +08::01::2022 05:46:33|ODA +08::01::2022 05:46:33|AI! +08::01::2022 05:46:34|Elim match against 30 tanks I think we're getting to cocky madam SEX| +08::01::2022 05:46:35|ASUGA +08::01::2022 05:46:35|I want to Anzu Anzu's Anzu| +08::01::2022 05:46:37|oda? +08::01::2022 05:46:39|ODA +08::01::2022 05:46:42|abun +08::01::2022 05:46:43|ODA +08::01::2022 05:46:44|ODA +08::01::2022 05:46:45|kana ueda's voice is pure sex| +08::01::2022 05:46:45|is there a real difference in the gup community| +08::01::2022 05:46:49|ANI? +08::01::2022 05:46:50|ANTA +08::01::2022 05:46:51|EPSI +08::01::2022 05:46:52|subs +08::01::2022 05:46:55|OOOOOOOOH +08::01::2022 05:46:56|ANI!! +08::01::2022 05:46:58|AROO! +08::01::2022 05:47:00|PRITE? +08::01::2022 05:47:01|BUNNY TUMMY UOOOOOOOOOH| +08::01::2022 05:47:03|ani +08::01::2022 05:47:03|KANI KAERO| +08::01::2022 05:47:04|LOOF +08::01::2022 05:47:06|HELL YEAH| +08::01::2022 05:47:09|OOOOOHHH +08::01::2022 05:47:10|ANBARE +08::01::2022 05:47:11|heer +08::01::2022 05:47:11|orkerbros... +08::01::2022 05:47:12|HAI HAI| +08::01::2022 05:47:13|RISU +08::01::2022 05:47:15|Miho autism: Activate| +08::01::2022 05:47:15|Getting way too cocky here| +08::01::2022 05:47:16|ANBARE! +08::01::2022 05:47:17|umi 1 umi 2 umi 3| +08::01::2022 05:47:22|I'm going to FUCK Anzu| +08::01::2022 05:47:22|rip workers strike| +08::01::2022 05:47:24|smart cunny| +08::01::2022 05:47:25|Nah couldn't be| +08::01::2022 05:47:25|TENSAI SHOUJO| +08::01::2022 05:47:30|anon is going to FUCK me| +08::01::2022 05:47:30|what do you think about Arisu?| +08::01::2022 05:47:32|ADULT BODY| +08::01::2022 05:47:33|is it a reference to korean war?| +08::01::2022 05:47:36|CUNNY CUNNY CUNNY CUNNY| +08::01::2022 05:47:39|I love Alice| +08::01::2022 05:47:39|es +08::01::2022 05:47:40|nishizumi style is the worst | +08::01::2022 05:47:41|rip, going to bed bros| +08::01::2022 05:47:43|oh no| +08::01::2022 05:47:44|DO YOU THINK THAT THE FINAL FILM WILL HAVE THE TEAMS USE THE MODERN TANKS?| +08::01::2022 05:47:45|RAB +08::01::2022 05:47:46|UNiversity, get it| +08::01::2022 05:47:49|enjoy the marathon| +08::01::2022 05:47:51|CRAB 17| +08::01::2022 05:47:53|NZU +08::01::2022 05:47:55|remember to wake up to das finale 3| +08::01::2022 05:48:02|gn anon| +08::01::2022 05:48:02|RIP bogs| +08::01::2022 05:48:05|Call in the crew| +08::01::2022 05:48:07|>MODERN MBTs >TANKS WITH SOUL >PICK ONE| +08::01::2022 05:48:08|rip ;_;| +08::01::2022 05:48:10|eee bowt| +08::01::2022 05:48:10|lmao get fucked Ooarai| +08::01::2022 05:48:11|IP +08::01::2022 05:48:13|100 TANK MATCH WHEN| +08::01::2022 05:48:15|Im gonna call some friends...| +08::01::2022 05:48:15|FUCK MEXT| +08::01::2022 05:48:15|They won?... Close it| +08::01::2022 05:48:16|males +08::01::2022 05:48:17|domp eeeeeet| +08::01::2022 05:48:21|done eating bread| +08::01::2022 05:48:22|ello +08::01::2022 05:48:22|MEXT loves GUP!| +08::01::2022 05:48:26|This fuck| +08::01::2022 05:48:28|Based Males| +08::01::2022 05:48:32|MOMO NOOO| +08::01::2022 05:48:32|Based man| +08::01::2022 05:48:33|RIGGED MATCH| +08::01::2022 05:48:34|_; +08::01::2022 05:48:36|plant landmines | +08::01::2022 05:48:36|no way| +08::01::2022 05:48:37|big ree| +08::01::2022 05:48:38|omo +08::01::2022 05:48:38|i hope you had good bread anon| +08::01::2022 05:48:38|CHAD MEXT| +08::01::2022 05:48:41|Dat OST tho| +08::01::2022 05:48:44|RZ +08::01::2022 05:48:44|THE JEWS DID AGAIN| +08::01::2022 05:48:45|Annihilation rules are the funnest rules anyways tbh| +08::01::2022 05:48:45|IGGED +08::01::2022 05:48:47|momo ;_______;| +08::01::2022 05:48:48|yeah, fuckin landmines| +08::01::2022 05:48:50|The match was rigged from the start| +08::01::2022 05:48:51|TRUTH IS THE MATCH WAS RIGGED FROM THE START| +08::01::2022 05:48:53|Slit their throats while they sleep| +08::01::2022 05:48:54|Fucker is going to get run over| +08::01::2022 05:48:54|(((((MEXT)))))) +08::01::2022 05:48:56|nzu +08::01::2022 05:48:59|DEFEAT IS NOT AN OPTION| +08::01::2022 05:49:01|nzu +08::01::2022 05:49:01|how does Miho fucking do it| +08::01::2022 05:49:03|Sudden Death is boring anyway| +08::01::2022 05:49:03|This match is fair| +08::01::2022 05:49:03|train dogs to run under their tanks with explosives | +08::01::2022 05:49:03|it was good bread| +08::01::2022 05:49:09|yukari miner helmet| +08::01::2022 05:49:10|Just win then 4Head| +08::01::2022 05:49:10|D +08::01::2022 05:49:11|Yukari's autistic headlight| +08::01::2022 05:49:12|>implying ::ourlad:: is a jew WRONG| +08::01::2022 05:49:12|MEXT brothers and sisters, we can scrap this piece of shit ship| +08::01::2022 05:49:12|RING A DING BABY| +08::01::2022 05:49:12|look at that cute dork with the headlamp| +08::01::2022 05:49:14|How many tournaments has MEXT guy been kicked out of? 109?| +08::01::2022 05:49:14|ORIKO<3 +08::01::2022 05:49:14|<<((({{{MEXT}}})))>>> +08::01::2022 05:49:20|D +08::01::2022 05:49:22|What film is that?| +08::01::2022 05:49:26|941 +08::01::2022 05:49:27|hogans heroes| +08::01::2022 05:49:27|More movies| +08::01::2022 05:49:28|941 +08::01::2022 05:49:34|NERD GIRLS ARE GETTING FIT| +08::01::2022 05:49:37|obs +08::01::2022 05:49:37|SLAG +08::01::2022 05:49:40|USA USA USA USA USA USA USA USA | +08::01::2022 05:49:40|Thank god for autopilot| +08::01::2022 05:49:41|??????????? +08::01::2022 05:49:41|WHAT THE FUCK ARE YOU TALKING ABOUT DARJELING| +08::01::2022 05:49:41|SHUT THE FUCK UP| +08::01::2022 05:49:41|BONO MY TRACKS| +08::01::2022 05:49:43|USA USA USA| +08::01::2022 05:49:47|?????????????? +08::01::2022 05:49:48|??????????? +08::01::2022 05:49:48|Messy gremlin| +08::01::2022 05:49:49|RIKA +08::01::2022 05:49:50|BLESSED DARJEELING| +08::01::2022 05:49:50|you know this saying?| +08::01::2022 05:49:52|WHAT IS THIS SLUT SAYING| +08::01::2022 05:49:53|This video is hosted www.123movies.com| +08::01::2022 05:49:53|???????????????????????????????????????????????????????????? +08::01::2022 05:49:54|obo +08::01::2022 05:49:54|???????????????:: +08::01::2022 05:49:54|do they have the rights to kelly's heroes and 1941? gonna call my lawyer| +08::01::2022 05:49:54|kek Erika driving a blimp| +08::01::2022 05:49:54|SHUT THE FUCK UP DARJEELING| +08::01::2022 05:49:55|??????????????? +08::01::2022 05:49:56|Shut up, dumb brit| +08::01::2022 05:49:56|DDDDD +08::01::2022 05:49:56|>Using the code given to the French Resistance that D Day was starting >Clever GuP| +08::01::2022 05:49:57|DDDDDDDD +08::01::2022 05:49:57|this song is is home sweet home btw| +08::01::2022 05:49:57|OBOS +08::01::2022 05:49:58|erd +08::01::2022 05:49:59|EDONISM +08::01::2022 05:50:00|fug :DDDDDDD| +08::01::2022 05:50:03|let the invasion commence| +08::01::2022 05:50:06|uggg +08::01::2022 05:50:06|Spank Naomi and Alisa Y::Y| +08::01::2022 05:50:06|I do| +08::01::2022 05:50:06|benis :DDD| +08::01::2022 05:50:07|DDD +08::01::2022 05:50:07|I condone hedonism with Mika| +08::01::2022 05:50:08|ENIS +08::01::2022 05:50:08|I still don't know what Darjeeling was quoting there| +08::01::2022 05:50:09|DDDDDDDDDDDDDDDDDD +08::01::2022 05:50:11|DDDDDDDD +08::01::2022 05:50:13| +08::01::2022 05:50:14|DDDDDD +08::01::2022 05:50:15|I like this scene very much, bros.| +08::01::2022 05:50:16|YYYYYYYYYYYYYYYYYY +08::01::2022 05:50:16|erlaine +08::01::2022 05:50:20|This school is FUCKED| +08::01::2022 05:50:21|Mika's senshado of ascetism| +08::01::2022 05:50:24|bin +08::01::2022 05:50:25|CUTE ALICE| +08::01::2022 05:50:27|Want to watch Boko together?| +08::01::2022 05:50:28|UOOOOOOOOOHHHHHH ARISU| +08::01::2022 05:50:30|risu... +08::01::2022 05:50:30|Maho sounds kinda weird here| +08::01::2022 05:50:30|NTER +08::01::2022 05:50:31|WE GOT THIS BROS RIGHT?| +08::01::2022 05:50:34|ATTEEEEEEE +08::01::2022 05:50:34|Why are the referees so fucking sexy?| +08::01::2022 05:50:34|Oorai's got this| +08::01::2022 05:50:34|Can't believe Darjeeling is gathering everyone to laugh at Miho's defeat against University| +08::01::2022 05:50:34|NTER +08::01::2022 05:50:37|NTER +08::01::2022 05:50:39| +08::01::2022 05:50:39|OB DIE SONNNE UNS LACVHT| +08::01::2022 05:50:39|tea time| +08::01::2022 05:50:40|Best scene in the whole anime here| +08::01::2022 05:50:41|AHO +08::01::2022 05:50:41|NTER +08::01::2022 05:50:41|SIEG HEIL| +08::01::2022 05:50:41|ANZERLIED +08::01::2022 05:50:41|NTER +08::01::2022 05:50:42|E N T E R| +08::01::2022 05:50:43|VOLUNTEER OORAI'S| +08::01::2022 05:50:43|NTER +08::01::2022 05:50:43|NTER +08::01::2022 05:50:43|>Miho is bigger than Alice| +08::01::2022 05:50:44|no montage | +08::01::2022 05:50:45|KITA :D| +08::01::2022 05:50:46|avalry! +08::01::2022 05:50:46|Maho is my wife| +08::01::2022 05:50:47|ATTE +08::01::2022 05:50:48|8 +08::01::2022 05:50:48|EISKALT DIE NACHT| +08::01::2022 05:50:48|OB DIE SUNNE UNS LACHT| +08::01::2022 05:50:49|NEECHAN +08::01::2022 05:50:49|SIEG HEIL| +08::01::2022 05:50:50|HERE COMES THE CAVALRY| +08::01::2022 05:50:50|HAIL MAHO| +08::01::2022 05:50:50|OOOOOO MAHO| +08::01::2022 05:50:50|BIG MAHOOS| +08::01::2022 05:50:50|ased +08::01::2022 05:50:51|NTER +08::01::2022 05:50:51|HAIL HITLER| +08::01::2022 05:50:51|UTE +08::01::2022 05:50:52|ATTAAAA +08::01::2022 05:50:52|$60 000 ON ARISU. I CAN FEEL IT| +08::01::2022 05:50:52|sex with Alice Y::N?| +08::01::2022 05:50:54|our panzer waifus are here| +08::01::2022 05:50:55|ino +08::01::2022 05:50:55|NAJIKU +08::01::2022 05:50:55|488 +08::01::2022 05:50:56|FROH IST UNSER SINN| +08::01::2022 05:50:56| +08::01::2022 05:50:57|HEIL HITLER| +08::01::2022 05:50:58|OHOI +08::01::2022 05:50:59| +08::01::2022 05:51:00|BIG MAHOS| +08::01::2022 05:51:00|Send Volunteer Divisions?| +08::01::2022 05:51:00|ERKIAm CUTE| +08::01::2022 05:51:00|Damn shes stacked| +08::01::2022 05:51:02|RRRRRRRRRRRRRRRRRRRRRRRRRRIKA +08::01::2022 05:51:02|Wani redemption begins now| +08::01::2022 05:51:02|IN STURMWIND DAHIN| +08::01::2022 05:51:02|REDEMPTION ARC| +08::01::2022 05:51:03| +08::01::2022 05:51:03|INO +08::01::2022 05:51:06|ERIKA IS MY WIFE| +08::01::2022 05:51:06|BESTAUBT SIND DIE GESICHTER DOCH FROH IST UNSER SINN| +08::01::2022 05:51:07| +08::01::2022 05:51:07|488 +08::01::2022 05:51:07|:: +08::01::2022 05:51:08|WANI KAWAIIIIIII| +08::01::2022 05:51:08|WANI KANI| +08::01::2022 05:51:10|Erika's really cute with that uniform| +08::01::2022 05:51:11|ANI +08::01::2022 05:51:11| +08::01::2022 05:51:11|REVERSE RIGGING| +08::01::2022 05:51:12|NITY +08::01::2022 05:51:13|WANI WANI WANI| +08::01::2022 05:51:13|MEXT NOOOOOOOO| +08::01::2022 05:51:13|best part of the movie right here| +08::01::2022 05:51:14|ENTER X2| +08::01::2022 05:51:14|HEIL MAHO| +08::01::2022 05:51:14|GAS MEXT SENSHADO WARS NOW| +08::01::2022 05:51:15|AMERICANS!!!! USA!! USA !| +08::01::2022 05:51:15|INO +08::01::2022 05:51:16|Nobody will doubt my cute waif| +08::01::2022 05:51:18|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:19|U S A | +08::01::2022 05:51:20|NTER +08::01::2022 05:51:20|>that's underhanded| +08::01::2022 05:51:20|MASSIVE KAY MILKERS| +08::01::2022 05:51:21|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:21|They're adding them without Alice's consent?| +08::01::2022 05:51:21|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:21|USA USA USA USA| +08::01::2022 05:51:22|SA +08::01::2022 05:51:22|USA USA USA| +08::01::2022 05:51:22|USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +08::01::2022 05:51:23|urrica +08::01::2022 05:51:23|alright man| +08::01::2022 05:51:24|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:24|USA USA USA| +08::01::2022 05:51:24|USA USA USA| +08::01::2022 05:51:25|VSA VSA VSA VSA VSA VSA VSA VSA VSA | +08::01::2022 05:51:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:25|USA USA USA| +08::01::2022 05:51:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:26|LETS FUCKING GOOOOOO| +08::01::2022 05:51:27|SEETHING MEXT| +08::01::2022 05:51:27|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:27|USA USA USA| +08::01::2022 05:51:28|USA USA USA USA USA YSA| +08::01::2022 05:51:28|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:28|USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +08::01::2022 05:51:29|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:29|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:29|USA USA USA USA USA USA | +08::01::2022 05:51:29|UEKCEd +08::01::2022 05:51:29|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:29|USA USA USA USA| +08::01::2022 05:51:30|That's not fair| +08::01::2022 05:51:31|ENTER X3| +08::01::2022 05:51:31|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:31|USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:31|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:32|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:32|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:33|EDF DEPLOYS| +08::01::2022 05:51:33|USA USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:51:34|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:34|usa USA usa USA usa USA usa USA usa USA usa USA | +08::01::2022 05:51:34|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:34|USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +08::01::2022 05:51:35|USA USA USA USA USA USA| +08::01::2022 05:51:35|ATYUSHA??!! +08::01::2022 05:51:35|USSR USSR USSR USSR !!!!| +08::01::2022 05:51:36|come marching in| +08::01::2022 05:51:37|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:37|HIS TRUTH IS MARCHING ON| +08::01::2022 05:51:37|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 05:51:37|NONNA'S KNOCKERS| +08::01::2022 05:51:38|ALL THE HEROES| +08::01::2022 05:51:38|URA URA URA URA URA URA URA URA URA| +08::01::2022 05:51:38|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:51:38|pff why is the gremlim here| +08::01::2022 05:51:39|RA +08::01::2022 05:51:39|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:51:39|OOOOOOOOOOOOOOHHHHHHHHHHH +08::01::2022 05:51:40|USA USA USA| +08::01::2022 05:51:40|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:51:40|UUUURAAAAAAA +08::01::2022 05:51:40|usa stop now| +08::01::2022 05:51:40|USA USA USA USA USA USA USA USA | +08::01::2022 05:51:41|USSR USSR USSR USSR USSR| +08::01::2022 05:51:42|cute child| +08::01::2022 05:51:42|ATYUSHA +08::01::2022 05:51:43|RAA +08::01::2022 05:51:44|USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 05:51:44|Spank Alisa and Naomi Y::Y| +08::01::2022 05:51:46|KATYUSHA KATYUSHA KATYUSHA| +08::01::2022 05:51:46|ENTER X4| +08::01::2022 05:51:46|RAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 05:51:48|USSR USSR USSR USSR| +08::01::2022 05:51:48|UUUUUUURRRRRRRRRRAAAAAAAAAAAAAAAAA +08::01::2022 05:51:48|CAM ON INGERLAND| +08::01::2022 05:51:50|OSSIYA +08::01::2022 05:51:50|RAAA +08::01::2022 05:51:51|oy it's 12 bong| +08::01::2022 05:51:52|muhtuysha +08::01::2022 05:51:52|katyishas thighs| +08::01::2022 05:51:52|FUCK YES HYPE| +08::01::2022 05:51:52|BRITISH GRENADIERS | +08::01::2022 05:51:53|SLEEVE JOBS| +08::01::2022 05:51:53|You know this saying?| +08::01::2022 05:51:54|LAGS +08::01::2022 05:51:54|FUCK OFF SLAG| +08::01::2022 05:51:54|Fleshfang +08::01::2022 05:51:54|slags +08::01::2022 05:51:55|leeeves +08::01::2022 05:51:55|Cute sleeves| +08::01::2022 05:51:56|ENTER BONGS| +08::01::2022 05:51:57|????????????????????????????? +08::01::2022 05:51:57|?????????????????????????????????????????????? +08::01::2022 05:51:58|REMEMBER LADS| +08::01::2022 05:51:58|INGLAND INGLAND INGLAND INGLAND| +08::01::2022 05:51:59|ucebros? +08::01::2022 05:52:00|PRESS P TO PEE IN DARJEELING'S TEA| +08::01::2022 05:52:01|????????????????????????????????????????????????? +08::01::2022 05:52:01|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE!| +08::01::2022 05:52:01|DVCE DVCE DVCE| +08::01::2022 05:52:02|EKOEEEEE +08::01::2022 05:52:02|DARL TEAJOB| +08::01::2022 05:52:02|K? +08::01::2022 05:52:02|ongs +08::01::2022 05:52:02|??????!!! +08::01::2022 05:52:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:03|BEST GIRL| +08::01::2022 05:52:03|UCE +08::01::2022 05:52:04|bongs +08::01::2022 05:52:05|???????????? +08::01::2022 05:52:05|HOOO +08::01::2022 05:52:05| +08::01::2022 05:52:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:06|????????????????? +08::01::2022 05:52:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:07|DUCE DUCE DUCE| +08::01::2022 05:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:07|DUCE DUCE DUCE DUCE| +08::01::2022 05:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE \| +08::01::2022 05:52:07|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 05:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:07|DARJEELING IS A DORK| +08::01::2022 05:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:07|VCE +08::01::2022 05:52:07|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 05:52:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:08|VCE +08::01::2022 05:52:09|DUCE DUCE| +08::01::2022 05:52:09|???????????? +08::01::2022 05:52:09|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 05:52:09|DVCE DVCE DVCE DVCE| +08::01::2022 05:52:09|FUNICULI FUNICULA| +08::01::2022 05:52:09|DUCE DUCE DUCE| +08::01::2022 05:52:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:10|REAL MVP| +08::01::2022 05:52:10|ENTER X5| +08::01::2022 05:52:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:11|uce +08::01::2022 05:52:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:11|DUCE DUCE DUCE| +08::01::2022 05:52:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:12|UCE +08::01::2022 05:52:12|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 05:52:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:13|CAM ON DARJEELINGERLAND| +08::01::2022 05:52:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:52:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:14|DVCE DVCE| +08::01::2022 05:52:14|AKA-CHAN +08::01::2022 05:52:14|DUCE DUCE DUCE DUCE | +08::01::2022 05:52:15|UCE +08::01::2022 05:52:15|DVCE DVCE DVCE DVEC DEVEC| +08::01::2022 05:52:15|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 05:52:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:15|UCE +08::01::2022 05:52:16|DUCE DUCE DUCE| +08::01::2022 05:52:16|DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:52:18|DUCE DUCE| +08::01::2022 05:52:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:18|UCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +08::01::2022 05:52:18|DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:52:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:52:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:19|DDDDDDDDDDDDDDDD +08::01::2022 05:52:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:20|DUCE DUCE| +08::01::2022 05:52:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:21|DUCE DUCE DUCE| +08::01::2022 05:52:21|UCE +08::01::2022 05:52:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:22|DDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:22|DDDDDDDDDDDDD +08::01::2022 05:52:22|DUCE DUCE DUCE | +08::01::2022 05:52:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:22|finns :DDDDDDDDDDDDDDDDDDDDD| +08::01::2022 05:52:23|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:23|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:23|:DDDDDDD | +08::01::2022 05:52:24|DDDDDD +08::01::2022 05:52:25|DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:52:25|DUCE DUCE DUCE DUCE| +08::01::2022 05:52:25|DVCE DVCE DVCE DVCE| +08::01::2022 05:52:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:26|FUGG BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 05:52:26|DUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCE| +08::01::2022 05:52:26|DDDDDDDDDD +08::01::2022 05:52:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:26|BENIS :DDDDD| +08::01::2022 05:52:26|PERKELE :D| +08::01::2022 05:52:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:26|BIN +08::01::2022 05:52:26|FUGGG :DDDDD| +08::01::2022 05:52:27|fug :-DDDDDDDDDDDDDDD| +08::01::2022 05:52:27|Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +08::01::2022 05:52:27|:DDDDDDD | +08::01::2022 05:52:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:27|DUCE DUCE| +08::01::2022 05:52:27|DDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:27|FUG :DDDDDDDDDDDDD| +08::01::2022 05:52:28|DDDDD +08::01::2022 05:52:28|DDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:28|BENIS :DDDDDDDDDDDDDDDDDDDDDdddddddddddddddddddddd| +08::01::2022 05:52:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:52:28|DDDDDDDDDDDDDDDDDDDDDDDd +08::01::2022 05:52:29|DUCE i guess| +08::01::2022 05:52:29|OH FUGGGG :DDDDDDDDDDD| +08::01::2022 05:52:30|DDDDDDDDDDDDDD +08::01::2022 05:52:30|PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 05:52:30|DDDDDDD +08::01::2022 05:52:30|BERGELE :DDDDDDDDD| +08::01::2022 05:52:30|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:52:31|FUGG :DDDDD| +08::01::2022 05:52:31|SUOMI PERKELE| +08::01::2022 05:52:32|DDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:32|:D :D :D| +08::01::2022 05:52:32|DDDDD +08::01::2022 05:52:32|DDD +08::01::2022 05:52:33|>THE WIND| +08::01::2022 05:52:33|akas +08::01::2022 05:52:33|not dvce :(| +08::01::2022 05:52:33|OTSUGEKI! +08::01::2022 05:52:34| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 05:52:34|??? +08::01::2022 05:52:34|MIGA :DDDDD| +08::01::2022 05:52:35|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:35|BAKA BRIGADE IS HERE| +08::01::2022 05:52:35|Who the devil are you?| +08::01::2022 05:52:35|ANZAI +08::01::2022 05:52:36|OTSUGEKI +08::01::2022 05:52:36|MIGA :DDDDD| +08::01::2022 05:52:36|fugg :DDDDDDDDDDDD| +08::01::2022 05:52:36|DDDDDDDDDDDDDDDDD +08::01::2022 05:52:37|OTSUGEKI +08::01::2022 05:52:37|Who are these nerds?| +08::01::2022 05:52:37| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 05:52:37|TOTSUGEKI TOTSUGEKI| +08::01::2022 05:52:38|OTSUGEKI +08::01::2022 05:52:38|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 05:52:38|What are finns called even?| +08::01::2022 05:52:38|BEENIIIS :DDDDDDDDDDD| +08::01::2022 05:52:39|DIOTS +08::01::2022 05:52:40|YUKI NO SHINGUN| +08::01::2022 05:52:40|why did mika agree to fight her sister?| +08::01::2022 05:52:40|OTSUTKEGI +08::01::2022 05:52:40|ENIS +08::01::2022 05:52:40|22 +08::01::2022 05:52:40|AKAS +08::01::2022 05:52:41|TENNO HEIKA BANZAI!!!!!| +08::01::2022 05:52:41|TOTSUGEKI | +08::01::2022 05:52:42|OTSUGEKI +08::01::2022 05:52:42|akas +08::01::2022 05:52:43|OTSUGEKI +08::01::2022 05:52:43|fucking totsubakas| +08::01::2022 05:52:45|MEMEHITAN +08::01::2022 05:52:45|TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI| +08::01::2022 05:52:46|etard +08::01::2022 05:52:46|sks +08::01::2022 05:52:47|ANZAAAIII +08::01::2022 05:52:48|ANZAI +08::01::2022 05:52:49|CO-SENSHADO SPHERE| +08::01::2022 05:52:51|TENNO HEIKA BANZAI!!!!!| +08::01::2022 05:52:54|NOT A CAPABLE SOLDIER| +08::01::2022 05:52:54|FUCKING KINO SCENE| +08::01::2022 05:52:55|big heart on that one| +08::01::2022 05:53:00|INO +08::01::2022 05:53:02|KINO AF| +08::01::2022 05:53:03|TOO FUCKING KINO| +08::01::2022 05:53:03|Caesar x carpaccio | +08::01::2022 05:53:04|My favorite scene in this anime| +08::01::2022 05:53:05|They all look cute wearing Oarai's uniform| +08::01::2022 05:53:05|Arisu so cool| +08::01::2022 05:53:06|Megane subverted| +08::01::2022 05:53:06|ALICE IS 20 AND IN UNVERSITY| +08::01::2022 05:53:06|OPERATION BOUNCY| +08::01::2022 05:53:08|WHO BROUGHT THE GUN BIKE?| +08::01::2022 05:53:09|BIKEART +08::01::2022 05:53:11|THE SWAG?| +08::01::2022 05:53:11|arisu's hebe cunny| +08::01::2022 05:53:12|they shouldve brought more panthers instead of 6 jap tanks| +08::01::2022 05:53:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:53:13|BASED ALICE| +08::01::2022 05:53:16|if I take away your school, will you die?| +08::01::2022 05:53:21|DUCE DUCE DUCE| +08::01::2022 05:53:21|WESTERNERS +08::01::2022 05:53:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:53:22|t +08::01::2022 05:53:23|RIDE ME KATYUSHA| +08::01::2022 05:53:23|DEATH STARE| +08::01::2022 05:53:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:53:24|CARY +08::01::2022 05:53:25|aho_glare.png +08::01::2022 05:53:25|OGGED +08::01::2022 05:53:26|THE SLAVS FEAR THE GERMANS| +08::01::2022 05:53:26|It would be very sad| +08::01::2022 05:53:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:53:27|nzu +08::01::2022 05:53:28|Superious bike machine gun\| +08::01::2022 05:53:28|Based Westerners| +08::01::2022 05:53:28|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 05:53:29|WEST IS BEST| +08::01::2022 05:53:29|katyishas thighs| +08::01::2022 05:53:30|Maho shutting Katyusha down| +08::01::2022 05:53:31|UTE +08::01::2022 05:53:32|owai!!! +08::01::2022 05:53:39|CUTE CUTE CUTE| +08::01::2022 05:53:44|CTU CTU CTU| +08::01::2022 05:53:46|press C to have Nonna Crush your skull with her thighs| +08::01::2022 05:53:47|CTU CTU CTU CTU CTU| +08::01::2022 05:53:47|Too bad BC isn't here for this| +08::01::2022 05:53:48|katysusha will never fuck the back of your head| +08::01::2022 05:53:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:53:53| +08::01::2022 05:53:56|ampopo +08::01::2022 05:53:56| +08::01::2022 05:53:58|UTE +08::01::2022 05:53:58|OPOTAN +08::01::2022 05:54:00|N +08::01::2022 05:54:01|Morning Glory means boner | +08::01::2022 05:54:03|I'd rather have katyusha crush me| +08::01::2022 05:54:06|otsugeki +08::01::2022 05:54:09|Let Miho make the plan retards| +08::01::2022 05:54:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:13|hh +08::01::2022 05:54:13|Want some pasta?| +08::01::2022 05:54:13| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 05:54:13|OTSUGEKI +08::01::2022 05:54:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:14|OTSUGEKI +08::01::2022 05:54:14|OTSUGEKI +08::01::2022 05:54:14|UCE +08::01::2022 05:54:15|No, only Erika's thighs are allowed to crush me| +08::01::2022 05:54:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:15|ASTA +08::01::2022 05:54:15|OTSUGEKI +08::01::2022 05:54:16|DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:16|UCE +08::01::2022 05:54:17|Pasta +08::01::2022 05:54:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:17|JUST STALL FOR WINTER| +08::01::2022 05:54:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:18|OTSUGEKI +08::01::2022 05:54:18|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 05:54:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:19|ASTA +08::01::2022 05:54:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:20|OTSUGEKI +08::01::2022 05:54:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:21|asta +08::01::2022 05:54:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:22|Shut up Nishi| +08::01::2022 05:54:23|PASTA | +08::01::2022 05:54:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +08::01::2022 05:54:25|OTSUGEKI +08::01::2022 05:54:25|Best plan is pasta| +08::01::2022 05:54:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:27|DUCE IS CTU| +08::01::2022 05:54:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:28|TU +08::01::2022 05:54:28|just wait until winter lol| +08::01::2022 05:54:29|BASED DUCE| +08::01::2022 05:54:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:34|LOOK AT ALL THOSE TITS| +08::01::2022 05:54:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:34|Yeah but what about the pasta?| +08::01::2022 05:54:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:37|UCE +08::01::2022 05:54:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:39|Put the finn in the bin| +08::01::2022 05:54:39|IKAAAAA +08::01::2022 05:54:40|OPERATION SAYING| +08::01::2022 05:54:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 05:54:41|PERA! +08::01::2022 05:54:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:41|3 CHEESE PIZZA| +08::01::2022 05:54:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:46|izza +08::01::2022 05:54:46|?????????????? +08::01::2022 05:54:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:54:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:54:48|worst cuisine| +08::01::2022 05:54:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 05:54:48|ITS HERE| +08::01::2022 05:54:49|fish n chips love| +08::01::2022 05:54:51|>BRITISH FOOD| +08::01::2022 05:54:51|>fish and chips| +08::01::2022 05:54:51|IT DOESN'T HAVE TO BE BEEF| +08::01::2022 05:54:51|no darj| +08::01::2022 05:54:51|>BEEF STROGANOFF >HELLO ::SGG::| +08::01::2022 05:54:52|>GRAVY SAUCE| +08::01::2022 05:54:53|?????????????? +08::01::2022 05:54:53|ug +08::01::2022 05:54:54|DUCECHADS REPORT| +08::01::2022 05:54:56|stfu | +08::01::2022 05:54:56|OPERATION GO AROUND| +08::01::2022 05:54:58|bri'ish food| +08::01::2022 05:54:58|fish n chips| +08::01::2022 05:54:59|Kay best| +08::01::2022 05:54:59|Who is the biggest GuP?| +08::01::2022 05:54:59|OPERATION DUCE | +08::01::2022 05:54:59|Wait for winter may be a legit strategy if they sail north.| +08::01::2022 05:54:59|BOYS DON'T KNOW| +08::01::2022 05:55:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 05:55:04|BOYS DON'T KNOW ABOUT BEEF STROGANOFF| +08::01::2022 05:55:05|utism +08::01::2022 05:55:06|love Momo screaming at Maho| +08::01::2022 05:55:07|CUTE HATS| +08::01::2022 05:55:08|HUUNI +08::01::2022 05:55:08|SORE DA| +08::01::2022 05:55:08|Sour cream, you mean Smetana?| +08::01::2022 05:55:08|HO +08::01::2022 05:55:08|Darjeeling best| +08::01::2022 05:55:09|>katyusha killed the stream again| +08::01::2022 05:55:09|These fucking dorks| +08::01::2022 05:55:09|NZU +08::01::2022 05:55:09|utist +08::01::2022 05:55:10|NURENBURG LAWS| +08::01::2022 05:55:11|Fucking tism| +08::01::2022 05:55:11|HUUNI +08::01::2022 05:55:13|utism +08::01::2022 05:55:13|what the fuck| +08::01::2022 05:55:15|UMPY +08::01::2022 05:55:15|UMPY +08::01::2022 05:55:15|UMPY +08::01::2022 05:55:15|umpy? +08::01::2022 05:55:17|UMPY +08::01::2022 05:55:17|Maho owned| +08::01::2022 05:55:18| +08::01::2022 05:55:20|umpy +08::01::2022 05:55:20|BUMP DE BUMP| +08::01::2022 05:55:20|utismos +08::01::2022 05:55:20|bumpy bumps| +08::01::2022 05:55:20|????????? +08::01::2022 05:55:20|folks, what about "TOTSUGEKI PASTA SAKUSEN?!?!?| +08::01::2022 05:55:21|bumpy +08::01::2022 05:55:22|????? +08::01::2022 05:55:22|german autism| +08::01::2022 05:55:23| +08::01::2022 05:55:23|I preferred sneaky beaky| +08::01::2022 05:55:23|UMPY +08::01::2022 05:55:23|based autist| +08::01::2022 05:55:24|UMPY +08::01::2022 05:55:24|I GET IT| +08::01::2022 05:55:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:55:24|The plan is to just wander into their fire| +08::01::2022 05:55:24|UCE +08::01::2022 05:55:25|IT DOESN'T HAVE TO BE BEEF| +08::01::2022 05:55:25|AT +08::01::2022 05:55:28|A least it's not food| +08::01::2022 05:55:29|h? +08::01::2022 05:55:30|bumpy +08::01::2022 05:55:31|nzu +08::01::2022 05:55:33|I DONT GET IT| +08::01::2022 05:55:33|PANZER FOUR| +08::01::2022 05:55:34|ERIKA BTFO| +08::01::2022 05:55:34|PANZER VOR| +08::01::2022 05:55:35|h? +08::01::2022 05:55:36|ump +08::01::2022 05:55:36|Wani REKT| +08::01::2022 05:55:36|PANTSU NO AHO| +08::01::2022 05:55:37|PANTSU FOR?| +08::01::2022 05:55:37|PANZER VOR| +08::01::2022 05:55:37|SHE SAID THE THING| +08::01::2022 05:55:38|PANZER VORE| +08::01::2022 05:55:38|Miho and her dumb op names| +08::01::2022 05:55:38|panzer vor!!| +08::01::2022 05:55:38|PANZER VOR| +08::01::2022 05:55:40|PANZA WHORE| +08::01::2022 05:55:40|Panzer vor| +08::01::2022 05:55:40|PAnzer 4| +08::01::2022 05:55:40|PANZER VOR| +08::01::2022 05:55:41|PANTSU GA AHO| +08::01::2022 05:55:41|PUSH THEM BACK FROM THE 38TH| +08::01::2022 05:55:41|PANZER VOR| +08::01::2022 05:55:41|pant are for???| +08::01::2022 05:55:43|Not even the best Wagner Opera, bad taste Maho| +08::01::2022 05:55:45|zelda music again| +08::01::2022 05:55:46|PANZER VOR| +08::01::2022 05:55:46|PANZER VOR| +08::01::2022 05:55:47|panzer VORE| +08::01::2022 05:55:50|DELETE THE UN| +08::01::2022 05:55:52|man i really wanna sleep but this is the best part of the series| +08::01::2022 05:55:52|dvanced! +08::01::2022 05:55:52|CUNNY sob sob sob| +08::01::2022 05:55:52|How crazy would it be if one of the teams had a railway gun haha?| +08::01::2022 05:56:01|Our plan is to just go straight| +08::01::2022 05:56:03|wreck these blue helmet smurfs| +08::01::2022 05:56:04|Imagine kowtowing to the UN LAMO| +08::01::2022 05:56:07|WHICH ONES PANZER FOUR???| +08::01::2022 05:56:08|rumi <3| +08::01::2022 05:56:09|tactical geniusw| +08::01::2022 05:56:09|ALICE LEGS UOOOOOOOOHHHHHHH| +08::01::2022 05:56:09|hatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchrist +08::01::2022 05:56:13|I HATE THE ANTICHRIST| +08::01::2022 05:56:14|REMOVE UN| +08::01::2022 05:56:15|>just go forward lmao| +08::01::2022 05:56:15|un larpers| +08::01::2022 05:56:17|I HATE THE ANTICHRIST| +08::01::2022 05:56:18|INO +08::01::2022 05:56:18|I HATE THE ANTICHRIST| +08::01::2022 05:56:20|(((United Nations)))| +08::01::2022 05:56:20|14fps +08::01::2022 05:56:20|Under NATO| +08::01::2022 05:56:23|3 fps cgi| +08::01::2022 05:56:24|luv me corn syrup| +08::01::2022 05:56:24|COCK AND BALL TORTURE| +08::01::2022 05:56:25|I HATE THE ANTICHRIST| +08::01::2022 05:56:28|kino shot| +08::01::2022 05:56:28|ST +08::01::2022 05:56:28|INO +08::01::2022 05:56:30|(((((UN)))))) +08::01::2022 05:56:30|YOU VILL EAT ZE BUGS| +08::01::2022 05:56:32|24 fps baby| +08::01::2022 05:56:33|i love this artstyle| +08::01::2022 05:56:33|ino +08::01::2022 05:56:33|I HATE THE ANTI CHRIST| +08::01::2022 05:56:38|What's your Sensha-dō anon?| +08::01::2022 05:56:39|(((((UN)))))) +08::01::2022 05:56:43|Lets go pop blue ultrasmurf helmet fags| +08::01::2022 05:56:44|>hobo stream| +08::01::2022 05:56:45|fucking up local rice fields for fun| +08::01::2022 05:56:49|this is the 2nd most kino shot in the franchise| +08::01::2022 05:56:51|I HATE THE ANTICHRIST I HATET HE ANTICHRIST| +08::01::2022 05:56:52|Get in the fucking sensha, shinji| +08::01::2022 05:56:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:56:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:56:59|What's satan got to do with it?| +08::01::2022 05:57:00|IG +08::01::2022 05:57:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:02|GET FUCKING READY BROS| +08::01::2022 05:57:03|nice 3d to 2d| +08::01::2022 05:57:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:03|WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +08::01::2022 05:57:04|Srebrenica never forget| +08::01::2022 05:57:04|duce duce duce| +08::01::2022 05:57:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:04|IG +08::01::2022 05:57:05|Fuck those feilds| +08::01::2022 05:57:06|NOT A WIG| +08::01::2022 05:57:06|ITS NATURAL| +08::01::2022 05:57:07|VCE +08::01::2022 05:57:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:57:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:09|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 05:57:09|WIG WIG WIG WIG| +08::01::2022 05:57:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:09|WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +08::01::2022 05:57:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DU| +08::01::2022 05:57:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:12|WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +08::01::2022 05:57:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:13|NOT A WIG| +08::01::2022 05:57:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:57:13|NOT A WIG| +08::01::2022 05:57:14|TA +08::01::2022 05:57:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:15|wig +08::01::2022 05:57:15|DUCE DUCE DUCE| +08::01::2022 05:57:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:16|NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +08::01::2022 05:57:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:57:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:19|It's REAL| +08::01::2022 05:57:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:23|DUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCE| +08::01::2022 05:57:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:57:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:24|IT'S A WIG??????| +08::01::2022 05:57:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 05:57:25|DUVE DUVE DUVE DUVE DUVE| +08::01::2022 05:57:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 05:57:26|>LIKING A GIRL WEARING A WIG| +08::01::2022 05:57:27|THE HAIR IS REAL| +08::01::2022 05:57:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 05:57:28|They're handlebars| +08::01::2022 05:57:30|NOT A WIG! VERY REAL HAIR!| +08::01::2022 05:57:35|duce spamming a shit| +08::01::2022 05:57:35|dvce would never wear a wig| +08::01::2022 05:57:36|Real genuine hair!| +08::01::2022 05:57:39|DUCE CANT PAY FOR BITRATE| +08::01::2022 05:57:40|DUCE IS BALD HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA| +08::01::2022 05:57:42|DUCE BROS YOUR WIFE'S HAIR IS FAKE | +08::01::2022 05:57:47|best scene in the franchise is when hobos take out the carl| +08::01::2022 05:57:59|big head| +08::01::2022 05:58:05|huge head| +08::01::2022 05:58:06|the best scene in the series is when miho upskirts anzu| +08::01::2022 05:58:10|massive head| +08::01::2022 05:58:15|SHE HATES BLACKS| +08::01::2022 05:58:15|dumb midget| +08::01::2022 05:58:17|ang +08::01::2022 05:58:19|stfu midget| +08::01::2022 05:58:20|SHE DISLIKES BLACKS| +08::01::2022 05:58:23|SHE HATES BLACKS| +08::01::2022 05:58:23|I +08::01::2022 05:58:24|SNOW IS BACK| +08::01::2022 05:58:25|head +08::01::2022 05:58:25|cult of personality| +08::01::2022 05:58:26|TFO +08::01::2022 05:58:27|when will katyusha grow into her head?| +08::01::2022 05:58:28|TFO'D +08::01::2022 05:58:29|OUTYUSHA +08::01::2022 05:58:30|my master is black| +08::01::2022 05:58:32|wned +08::01::2022 05:58:32|SHE HATE THE NIGGER| +08::01::2022 05:58:33|NONNA WTF| +08::01::2022 05:58:33|khruschev won| +08::01::2022 05:58:36|BWAHAHAHAHAHAHA SHUT THE FUCK UP MIDGET| +08::01::2022 05:58:40|katyusha btfos niggers| +08::01::2022 05:58:40|Hill 203| +08::01::2022 05:58:43|Wait snow is white?| +08::01::2022 05:58:45|Hopefully katysha never grows| +08::01::2022 05:58:49|dumb midget| +08::01::2022 05:58:50|>getting beat by blacks 10 years in a row| +08::01::2022 05:59:00|????????????? +08::01::2022 05:59:01|?????????????????????????????????????????????? +08::01::2022 05:59:02|deserves the height| +08::01::2022 05:59:03|AHH THIS SAYING| +08::01::2022 05:59:04|???????????????????????????? +08::01::2022 05:59:05|NONNA THE "WHITE" RUSSIAN| +08::01::2022 05:59:05|???????????????????? +08::01::2022 05:59:06|???????????????????????????????????? +08::01::2022 05:59:07|????????????? +08::01::2022 05:59:07|???????????????????????????????? +08::01::2022 05:59:09|??????????? +08::01::2022 05:59:10|DO YOU KNOW| +08::01::2022 05:59:11|SHUT THE FUCK UP DARJ| +08::01::2022 05:59:11|mommy | +08::01::2022 05:59:12|!?!?!?!?!?!?!?! +08::01::2022 05:59:13|I like tat one| +08::01::2022 05:59:14|WHAT the fuck did she mean by that?| +08::01::2022 05:59:16|??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +08::01::2022 05:59:18|I like mommy's pants| +08::01::2022 05:59:18|go nina go| +08::01::2022 05:59:21|NINA IS CUTE!| +08::01::2022 05:59:22|ino +08::01::2022 05:59:22|NINA A FAT| +08::01::2022 05:59:25|I like koume and her panther| +08::01::2022 05:59:27|That one was simple to understand| +08::01::2022 05:59:28|UMIMASEN +08::01::2022 05:59:28|::k:: as fuck| +08::01::2022 05:59:31|Where we’re going we don’t need roads| +08::01::2022 05:59:32|INSERT SAYING HERE| +08::01::2022 05:59:35|maps looks like a penis| +08::01::2022 05:59:36|>penis map| +08::01::2022 05:59:37|benis :DDD| +08::01::2022 05:59:38|ex? +08::01::2022 05:59:40|THE MAP IS A PENIS| +08::01::2022 05:59:41|>Using tryhard cammouflage| +08::01::2022 05:59:47|can someone explain the american hotline to hell joke?| +08::01::2022 05:59:48|SEX MAP????| +08::01::2022 05:59:50|Benis to bagina| +08::01::2022 05:59:50|senshado is serious business| +08::01::2022 05:59:50|ongland +08::01::2022 05:59:56|>penis map lmao| +08::01::2022 05:59:58|nice snap| +08::01::2022 05:59:58|NOT THE BASSIST| +08::01::2022 05:59:59|no I don't understand it either| +08::01::2022 05:59:59|BENIS :DDDDDD| +08::01::2022 05:59:59|akeshi..... +08::01::2022 06:00:01|ARISA IS CUTE!| +08::01::2022 06:00:02|it means america a shit| +08::01::2022 06:00:05|kay zr| +08::01::2022 06:00:05|I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HA-| +08::01::2022 06:00:06|THE TREES ARE SPEAKING JAPANESE| +08::01::2022 06:00:06|bong humor| +08::01::2022 06:00:07|ANG +08::01::2022 06:00:08|KAY THIGHS| +08::01::2022 06:00:11|OTSUGEKI +08::01::2022 06:00:12|ZUDA +08::01::2022 06:00:12|ughhh Kay thighs...| +08::01::2022 06:00:16|pekoe, have you heard the saying "we're fucked"| +08::01::2022 06:00:17|OTSUGEKI +08::01::2022 06:00:18|SHAKY SHAKY| +08::01::2022 06:00:18|why does kay keep trusting alisa| +08::01::2022 06:00:19|CQ CQ| +08::01::2022 06:00:19|bong """humour"""| +08::01::2022 06:00:19|I want Kay| +08::01::2022 06:00:23|I HATE THE ANTICHRIST| +08::01::2022 06:00:24|OTSUGEKI +08::01::2022 06:00:26|Time for some high speed tactical waterfowl| +08::01::2022 06:00:27|YARDS +08::01::2022 06:00:33|Okay I'm falling asleep on my chair goodbye anons finish the fight for me| +08::01::2022 06:00:37|ERSHINGU +08::01::2022 06:00:38|NOT HOLDING TEA NOW ARE YOU YOU BITCH| +08::01::2022 06:00:38|LOOK AT THE FOREHEAD ON ASSAM. THATS SEX INCARNATE.| +08::01::2022 06:00:39|Driver name???| +08::01::2022 06:00:39|MY WIFE DARJEELING| +08::01::2022 06:00:40|goodnight anon| +08::01::2022 06:00:40|essir +08::01::2022 06:00:40|leavers +08::01::2022 06:00:43|STAY STRONG| +08::01::2022 06:00:44|sweet dreams anon| +08::01::2022 06:00:48|YOU'RE THE DRIVER DONT SLEEP| +08::01::2022 06:00:50|oyasumi sleepy anons| +08::01::2022 06:00:52|what year is the pershing? 1945?| +08::01::2022 06:00:54|COWARDS WILL BE HANGED | +08::01::2022 06:00:57|this is peak tbh| +08::01::2022 06:00:57|FAITO | +08::01::2022 06:00:58|nigger just shitpost more| +08::01::2022 06:01:01|do NOT totsugeki| +08::01::2022 06:01:01|DON'T FALL ASLEEP ANON, YOU CAN THIS| +08::01::2022 06:01:02|NO TOTSUGEKI| +08::01::2022 06:01:05|>Nishi-san, dont be a retard| +08::01::2022 06:01:06|>this level in the game| +08::01::2022 06:01:07|All these weak anons| +08::01::2022 06:01:11|RA +08::01::2022 06:01:11|RA +08::01::2022 06:01:13|But pointful charges are okay?| +08::01::2022 06:01:16|OORAI +08::01::2022 06:01:16|paaaaaaaaaaa +08::01::2022 06:01:19|>Windows XP| +08::01::2022 06:01:20|Episode 4.44: You Can (Not) This| +08::01::2022 06:01:21|TOTSUGEKI, BUT IN PLACE| +08::01::2022 06:01:26|god so many cute hats...| +08::01::2022 06:01:29|SA +08::01::2022 06:01:30|Why is she dumping shells? They didn't fire| +08::01::2022 06:01:34|I was about to fall asleep but I caught my second wind| +08::01::2022 06:01:35|bruh which movis is this| +08::01::2022 06:01:41|TE +08::01::2022 06:01:42|der Film| +08::01::2022 06:01:43|Der Film| +08::01::2022 06:01:43|DER FILM| +08::01::2022 06:01:45|TE +08::01::2022 06:01:45|the onle movie| +08::01::2022 06:01:46|IMPORTANT: My pizza has been delivered.| +08::01::2022 06:01:47|STATIONARY TOTSUGEKI| +08::01::2022 06:01:51|Saving private ryan| +08::01::2022 06:01:54|why didn't bakaroni put the cardboard up this time| +08::01::2022 06:01:54|what kinda pizza?| +08::01::2022 06:01:57|pizza time| +08::01::2022 06:01:57|HIT +08::01::2022 06:01:58|hita +08::01::2022 06:01:59|I wish I had pizza| +08::01::2022 06:01:59|HIT!! +08::01::2022 06:02:00|HIT!!! +08::01::2022 06:02:00|HIT! +08::01::2022 06:02:01|HIT +08::01::2022 06:02:01|OTSUGEKI +08::01::2022 06:02:01|HIESHT +08::01::2022 06:02:02|HIT +08::01::2022 06:02:02|HIT +08::01::2022 06:02:02|HIT +08::01::2022 06:02:02|OTSUGEKI +08::01::2022 06:02:03|OTSUGEKI! +08::01::2022 06:02:03|HIT +08::01::2022 06:02:03|OTSUGEKI +08::01::2022 06:02:03|HIT +08::01::2022 06:02:03|NOREEEEEE +08::01::2022 06:02:05|but it's 6 AM| +08::01::2022 06:02:05|Boku no Panzer| +08::01::2022 06:02:05|HIT +08::01::2022 06:02:05|hit +08::01::2022 06:02:06|dumb japs| +08::01::2022 06:02:06|NORE +08::01::2022 06:02:07| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 06:02:08|SURPRESSED BITCH| +08::01::2022 06:02:08|UTE UTE| +08::01::2022 06:02:09|HIIT +08::01::2022 06:02:09|jealous of you pizza anon| +08::01::2022 06:02:10|HIT +08::01::2022 06:02:11|Spank Naomi Y::Y| +08::01::2022 06:02:12|pekoe, have you heard the saying "SHIT!"| +08::01::2022 06:02:13|OTSUGEKI +08::01::2022 06:02:15|o:: +08::01::2022 06:02:15|OUTTA MY WAY NIPS FUCKING SHITS| +08::01::2022 06:02:17| +08::01::2022 06:02:18|YOU GOT PIZZA FOR US ASWELL RIGHT BRO| +08::01::2022 06:02:18|>NOBODY LISTENS TO THE COMMANDER| +08::01::2022 06:02:20|hamefur +08::01::2022 06:02:22|HONORABLE DEATH| +08::01::2022 06:02:22|SHAMEFUL DISPLAY| +08::01::2022 06:02:24|OTUGEKI... +08::01::2022 06:02:25|OTSUGEKIDIOTS +08::01::2022 06:02:28|i've got a pizza hut pepperoni and italian sausage, pretty tasty| +08::01::2022 06:02:28|HAMEFUR +08::01::2022 06:02:29|rgh +08::01::2022 06:02:30|YES MOM| +08::01::2022 06:02:32|YES MOM| +08::01::2022 06:02:34|HELMET CHAN| +08::01::2022 06:02:34|YES MOM| +08::01::2022 06:02:34|yes maam| +08::01::2022 06:02:39|MOMMY KAY| +08::01::2022 06:02:40|Helmet chan...| +08::01::2022 06:02:40|TOSTUGEKI +08::01::2022 06:02:41|Poor helmet chan...| +08::01::2022 06:02:42|HELMET CHAN| +08::01::2022 06:02:45|PALLING +08::01::2022 06:02:47|at least she was wearing a helmet| +08::01::2022 06:02:47|DIES +08::01::2022 06:02:48|i wish Kay was my mom| +08::01::2022 06:02:49|Helmettoo chan| +08::01::2022 06:02:49|AMERICAN ARMOR| +08::01::2022 06:02:52|why the FUCK did miho waste slots on totsugeki retards| +08::01::2022 06:02:52|I wish Alisa would call me mom…| +08::01::2022 06:02:54|THAT'S WHAT YOU GET FOR FORGETTING THE BASSIST| +08::01::2022 06:02:56|HURRY UP| +08::01::2022 06:02:57|harry up!| +08::01::2022 06:02:59|shermans +08::01::2022 06:02:59|OMMYCOOKER! +08::01::2022 06:03:00|>fucking dies| +08::01::2022 06:03:03|WATCH OUT| +08::01::2022 06:03:09|Some say they discovered parts of Koume's floof in the next prefecture over.| +08::01::2022 06:03:09|ON! +08::01::2022 06:03:10|NUKE INC| +08::01::2022 06:03:11|ED +08::01::2022 06:03:11|iroshima +08::01::2022 06:03:12|Koume out here jobbing again| +08::01::2022 06:03:12|TF +08::01::2022 06:03:12|UTEee | +08::01::2022 06:03:12|WNED +08::01::2022 06:03:13|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:03:13|ACTUALLY DEAD| +08::01::2022 06:03:13|K A R L| +08::01::2022 06:03:13|Does Takeshi play the bass?| +08::01::2022 06:03:13|arlos +08::01::2022 06:03:13|fair +08::01::2022 06:03:14|Right? should've taken more german, american, or russian tanks| +08::01::2022 06:03:14|>A FUCKING NUKE| +08::01::2022 06:03:15|EEEEEEEEEEEEEE +08::01::2022 06:03:15|get fucked midget| +08::01::2022 06:03:15|KOUME DEAD| +08::01::2022 06:03:15|TACTICAL NUKE INCOMING| +08::01::2022 06:03:16|>gg no re. get rekked poor fags.| +08::01::2022 06:03:16|TEEE +08::01::2022 06:03:17|UB +08::01::2022 06:03:17|AAAAHHHHH +08::01::2022 06:03:17|>fucking nuked| +08::01::2022 06:03:17|AAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:03:17|ip +08::01::2022 06:03:18|K A R L| +08::01::2022 06:03:18|UKED +08::01::2022 06:03:18|THE BASS CANNON| +08::01::2022 06:03:19|P +08::01::2022 06:03:19|katyushas thighs| +08::01::2022 06:03:21|x3x3x3x3x3x3x +08::01::2022 06:03:21|fair +08::01::2022 06:03:21|Fucking MEXT...| +08::01::2022 06:03:22|2 BOMBS WASN'T ENOUGH| +08::01::2022 06:03:23|IGGED +08::01::2022 06:03:23|>Using nukes| +08::01::2022 06:03:27|Holy fuck| +08::01::2022 06:03:27|I can't believe kuome is fucking dead| +08::01::2022 06:03:28|I can't believ Katyusha is fucking dead| +08::01::2022 06:03:30|Koume getting fucked once again| +08::01::2022 06:03:32|carbon coating| +08::01::2022 06:03:32|SAFE" +08::01::2022 06:03:33|LUCK THEY WERE CARBON COATED| +08::01::2022 06:03:34|UTE +08::01::2022 06:03:34|BIG shell| +08::01::2022 06:03:35|University team deploying the late war Fat Man| +08::01::2022 06:03:37|CUTE SMOL FLUFF| +08::01::2022 06:03:39|GOD BEANS| +08::01::2022 06:03:40|UN has mini nukes| +08::01::2022 06:03:41|>from her scrapbook| +08::01::2022 06:03:46|That's a fast reload| +08::01::2022 06:03:46|uck +08::01::2022 06:03:49|did you catch that forehead on nonna?| +08::01::2022 06:03:49|INSTANT DEATH| +08::01::2022 06:03:49|OOM +08::01::2022 06:03:51|( +08::01::2022 06:03:51|BIG BULLET| +08::01::2022 06:03:51|ashes to ashes| +08::01::2022 06:03:52|Dont worry, they carbon coat the girls| +08::01::2022 06:03:52|Y E E T| +08::01::2022 06:03:53|KOUME DEAD. AGAIN| +08::01::2022 06:03:53|tf +08::01::2022 06:03:55|RIP Panthers| +08::01::2022 06:03:56|imagine being this desperate for a win| +08::01::2022 06:03:57|oume... +08::01::2022 06:03:58|RIKA +08::01::2022 06:03:58|>no deaths| +08::01::2022 06:03:59|That's a big gun| +08::01::2022 06:03:59|CARBON COATING| +08::01::2022 06:04:04|U +08::01::2022 06:04:05|wned +08::01::2022 06:04:06|AIM FOR THE TRACKS| +08::01::2022 06:04:08|U +08::01::2022 06:04:08|"SAFE SPORT"| +08::01::2022 06:04:11|I can;'t believe those girls are fucking dead| +08::01::2022 06:04:21|we have you surronded at least from this side| +08::01::2022 06:04:21|SAY YOU HATE THE ANTICRIST AGAIN | +08::01::2022 06:04:23|Carbon coated tanks, uniforms, and skin-cram| +08::01::2022 06:04:23|F FOR THE PANTHERS| +08::01::2022 06:04:27|I HATE THE ANTICHRIST| +08::01::2022 06:04:28|eargasm with those explosions | +08::01::2022 06:04:31|Best way out of a double envelopment| +08::01::2022 06:04:31|I HATE THE ANTICHRIST| +08::01::2022 06:04:31|my maho wife| +08::01::2022 06:04:32|I HATE THE ANTI CHRIST| +08::01::2022 06:04:33|8x30 elimination match against a more experienced team and the fucker still pulls this shit lmao| +08::01::2022 06:04:34|you vill dreenk the corn syroop| +08::01::2022 06:04:35|I HATE THE ANTICHRIST!| +08::01::2022 06:04:36| +08::01::2022 06:04:37|I HATE THE ANTICHRIST| +08::01::2022 06:04:38|AHOOO** +08::01::2022 06:04:40|I HATE THE ANITCHRIST| +08::01::2022 06:04:49|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 06:04:49|Actually, the anti-christ isn't so bad| +08::01::2022 06:04:50|Man, I saw the shell before it blew| +08::01::2022 06:04:52|INO +08::01::2022 06:04:53|close the fucking hatch katyusha| +08::01::2022 06:04:54|ONNA +08::01::2022 06:04:55|I HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRIST| +08::01::2022 06:04:56|kino shots| +08::01::2022 06:04:59|oooooo +08::01::2022 06:05:00|I like communism| +08::01::2022 06:05:01|INO +08::01::2022 06:05:02|KINO KINO KINO| +08::01::2022 06:05:02|I lost this mission several times in the game. kept driving off of the cliff| +08::01::2022 06:05:03|DAT SOUND| +08::01::2022 06:05:03|That's some great leading to hit that close on a moving target| +08::01::2022 06:05:03|INOOOOOO +08::01::2022 06:05:05|sacrifice yourself nonna| +08::01::2022 06:05:06|KLARA NOOOOO| +08::01::2022 06:05:07|__;7 +08::01::2022 06:05:08|ASED +08::01::2022 06:05:10|KLARA NO!| +08::01::2022 06:05:11|8 +08::01::2022 06:05:11|KINO MOMENT| +08::01::2022 06:05:11|_:7 +08::01::2022 06:05:11|LARRRAAAAA!!!! +08::01::2022 06:05:11|OUND +08::01::2022 06:05:11|GIVE YOUR LIVES FOR THE GREAT LEADER.| +08::01::2022 06:05:12|KLARA NOOOOOOOO| +08::01::2022 06:05:12|KINO KINO KINO KINO| +08::01::2022 06:05:12|KLARA NO| +08::01::2022 06:05:13|KLARA NOOOOOOOOOOOOO| +08::01::2022 06:05:13|_;7 +08::01::2022 06:05:13|LARA +08::01::2022 06:05:13|KLARA NO| +08::01::2022 06:05:14|OOOOOOOOOOOOO +08::01::2022 06:05:14|_;7 +08::01::2022 06:05:16|Klara ;_____;| +08::01::2022 06:05:16|OOOOOOOOOOOO +08::01::2022 06:05:17|KLARA ;_;| +08::01::2022 06:05:17|_;7 +08::01::2022 06:05:17|Klara ;_;7| +08::01::2022 06:05:17|Klara noo| +08::01::2022 06:05:18|Klara ;_;l| +08::01::2022 06:05:18|KLARAAAAAAAAAAAAAAAAAA ;_;7| +08::01::2022 06:05:19|this scene is kino| +08::01::2022 06:05:19|LARA +08::01::2022 06:05:19|>Input Danmaku, hit Enter| +08::01::2022 06:05:19|??? +08::01::2022 06:05:19|KLARA NOOOO| +08::01::2022 06:05:20|________________; +08::01::2022 06:05:20|is katyusha literally stalin?| +08::01::2022 06:05:21|7 +08::01::2022 06:05:21|KLARA NOOOOOOOOO| +08::01::2022 06:05:21|KLARA DIES WITH HONOUR FOR MOTHER KATYUSHA| +08::01::2022 06:05:22|YRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:05:22|katyusha tebe razlubit..........................| +08::01::2022 06:05:23|LAAAAAARAAAAAAA +08::01::2022 06:05:23|KATYUSHA ISN'T WORTH IT| +08::01::2022 06:05:23|KINO | +08::01::2022 06:05:23|Most useless sacrifice ever| +08::01::2022 06:05:24|-;7 +08::01::2022 06:05:26|;_;7 you were the best son maybe even the best| +08::01::2022 06:05:26|KLARA WILL BE REMEMBERED AS A HERO OF PRAVDA| +08::01::2022 06:05:27|KLARA NOOOOOOOOOOO| +08::01::2022 06:05:27|7 +08::01::2022 06:05:28|_;7 +08::01::2022 06:05:29|SHE SPEAKS| +08::01::2022 06:05:29|_; +08::01::2022 06:05:30|_;7 +08::01::2022 06:05:30|OKYGENYOU +08::01::2022 06:05:30|IHONGO +08::01::2022 06:05:30|__;7 +08::01::2022 06:05:31|_;7 +08::01::2022 06:05:31|_;7 +08::01::2022 06:05:31|This is objectively the best part of the movie| +08::01::2022 06:05:32|For pravda| +08::01::2022 06:05:32|U DESERVE BETTER| +08::01::2022 06:05:33|okigenyou +08::01::2022 06:05:33|OKIGENYOU +08::01::2022 06:05:33|LARAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:05:34|AAAAAAAAAAAHHHHHHHHHH MOTHER LAND| +08::01::2022 06:05:34|i cry everytime| +08::01::2022 06:05:34| +08::01::2022 06:05:34|I CRY EVERYTIME I SEE THIS SCENE| +08::01::2022 06:05:34|_;7 +08::01::2022 06:05:35|_;7 +08::01::2022 06:05:35|________;7 +08::01::2022 06:05:35|_;7 +08::01::2022 06:05:35|I'M FUCKING CRYING| +08::01::2022 06:05:36|_;7 +08::01::2022 06:05:37| 本語で喋りなさい +08::01::2022 06:05:37|larabros... +08::01::2022 06:05:37|_;7 +08::01::2022 06:05:37|_; +08::01::2022 06:05:38|7 +08::01::2022 06:05:38|DACHIIIIIIIII +08::01::2022 06:05:38|KLARA NO| +08::01::2022 06:05:39|7 +08::01::2022 06:05:39|_;7 +08::01::2022 06:05:39|LARAAAAAAAAAAAA +08::01::2022 06:05:39|I cried| +08::01::2022 06:05:40|For Pravda!| +08::01::2022 06:05:41|7 +08::01::2022 06:05:41|LAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:05:41|7 +08::01::2022 06:05:41|LARAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:05:41|:_: 7| +08::01::2022 06:05:42|DON'T DO SOMETHING STUPID KLARA| +08::01::2022 06:05:42|7 +08::01::2022 06:05:42|___________; +08::01::2022 06:05:43|;_;7 KLARAAAAAAAAAA| +08::01::2022 06:05:43|7 +08::01::2022 06:05:43|_;7 +08::01::2022 06:05:44|ZA PRAVDU| +08::01::2022 06:05:44|_;7 +08::01::2022 06:05:44|_;7 +08::01::2022 06:05:44|IM CRINE| +08::01::2022 06:05:46|KLARA? KLARA?| +08::01::2022 06:05:46|ZA PRAVDU ;_________________________________________;7| +08::01::2022 06:05:46|Klara ;_;7| +08::01::2022 06:05:46|would you fight for a loli?| +08::01::2022 06:05:47|_;7 +08::01::2022 06:05:47|_;7 +08::01::2022 06:05:47|but she's not dead| +08::01::2022 06:05:48|IP +08::01::2022 06:05:48|7 +08::01::2022 06:05:48|_:7 +08::01::2022 06:05:48|UDACHI KOMARAD| +08::01::2022 06:05:48|_;:: +08::01::2022 06:05:48|FOR PRAVDA| +08::01::2022 06:05:49|ZAAA PRAVDUUUUUUU| +08::01::2022 06:05:49|OOOOOOOOOOOOo +08::01::2022 06:05:49|_;7 +08::01::2022 06:05:49|7 +08::01::2022 06:05:49|;_;7 NEVER FORGET| +08::01::2022 06:05:49|Goodnight sweet princess| +08::01::2022 06:05:49|KLARA IS DEAD| +08::01::2022 06:05:50|o7 o7 o7 o7 ;_;| +08::01::2022 06:05:50|ZA PRAVDU| +08::01::2022 06:05:50|ZA PRAVDU| +08::01::2022 06:05:50|_;7 +08::01::2022 06:05:50|OOOOOO +08::01::2022 06:05:51|hold up isn't this a safe sport?\| +08::01::2022 06:05:51|EAD +08::01::2022 06:05:51|OOOOOOOOOOOOOOo +08::01::2022 06:05:52|ACTUAL F| +08::01::2022 06:05:52|ros... +08::01::2022 06:05:52|ed +08::01::2022 06:05:53|_;7 +08::01::2022 06:05:53|NAAAAAAAAAAAKEEEE +08::01::2022 06:05:53|FOR PRAVDA| +08::01::2022 06:05:53|ALL GLORY TO THE COMMIE LOLI| +08::01::2022 06:05:53|IP +08::01::2022 06:05:54|ZA PRAVDU| +08::01::2022 06:05:54|7 +08::01::2022 06:05:54|;_; 7| +08::01::2022 06:05:54|FOR THE MOTHERLAND| +08::01::2022 06:05:55|ED +08::01::2022 06:05:56|UUUUUUUURRRRRRRRRRRAAAAAAAAAAAA +08::01::2022 06:05:57|7 +08::01::2022 06:05:57|carbon coated, she's fine| +08::01::2022 06:05:57|_T7 +08::01::2022 06:05:58|It's just raining guys...| +08::01::2022 06:06:00|COMRADE KLARA IS DEAD| +08::01::2022 06:06:00|_______________________;7 +08::01::2022 06:06:00|FOR THE EMPORER| +08::01::2022 06:06:01|YRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:06:02|FOR THE LOLILANd| +08::01::2022 06:06:02|NOT ONE STEP BACK!| +08::01::2022 06:06:02|_;7 +08::01::2022 06:06:03|Lost but not forgotten ;_;7| +08::01::2022 06:06:04|SHE FUCKING DIED| +08::01::2022 06:06:04|A TERRIBLE DAY FOR RAIN| +08::01::2022 06:06:05|_;7 +08::01::2022 06:06:05|ZA RODINU| +08::01::2022 06:06:05|COMRADE NINA!| +08::01::2022 06:06:05|__________________; +08::01::2022 06:06:06|__; +08::01::2022 06:06:06|_;7 +08::01::2022 06:06:08|She searved the Soviet Union!| +08::01::2022 06:06:08|OLITANK +08::01::2022 06:06:08|AMEROOOOO +08::01::2022 06:06:09|HUMAN FLESH SHIELD| +08::01::2022 06:06:10|I'm literally fucking crying right now i can't believe they just killed a character| +08::01::2022 06:06:10|KUBE +08::01::2022 06:06:10|FUUUUUUUUUUUUUUUUUUUUUUUUUUU THIS GAY eART| +08::01::2022 06:06:11|KUBE +08::01::2022 06:06:11|BIG SHELL| +08::01::2022 06:06:12|NINA NO| +08::01::2022 06:06:13|_; +08::01::2022 06:06:14|CUNNY ;_;7| +08::01::2022 06:06:15|_;7 +08::01::2022 06:06:16|carbon coated spines| +08::01::2022 06:06:16|SACRED WAR| +08::01::2022 06:06:16|wide is my motherland| +08::01::2022 06:06:17|4 second reload cunny...| +08::01::2022 06:06:18|KV-TAN ;_____;| +08::01::2022 06:06:18|NINA ;_;7| +08::01::2022 06:06:18|V-TAN +08::01::2022 06:06:18|NO, KV| +08::01::2022 06:06:19|INA +08::01::2022 06:06:20|_; +08::01::2022 06:06:20|NOOOOOOOOO NINA| +08::01::2022 06:06:22|KUBI +08::01::2022 06:06:22|NOT ONE STEP BACK| +08::01::2022 06:06:23|would lolis fight for you?| +08::01::2022 06:06:24|LOLI POWA| +08::01::2022 06:06:24|KV tan..... ;_;7| +08::01::2022 06:06:27|YOU'RE NOT AGAINST EARLY WAR TANKS| +08::01::2022 06:06:27|YRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:06:28|NOT ONE STEP BACK!!!| +08::01::2022 06:06:30|I WISH I HAD CARBON COATED TEAR DUCTS| +08::01::2022 06:06:30|____________________________________;7 +08::01::2022 06:06:31|NONNA NOT YOU TOO!| +08::01::2022 06:06:32|_:7 +08::01::2022 06:06:32|_; +08::01::2022 06:06:32|_; +08::01::2022 06:06:33|NONNA NO| +08::01::2022 06:06:33|NOT THE LOLISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS!!| +08::01::2022 06:06:33|KV-tan ;_;| +08::01::2022 06:06:36|I'd reload faster if you know what I mean| +08::01::2022 06:06:37|_; +08::01::2022 06:06:38|__________________________________________; +08::01::2022 06:06:40|TOO MUCH KINO I'M OVERLOADING| +08::01::2022 06:06:40|_;7 +08::01::2022 06:06:40|NOOOOO NOT NONNA TOO| +08::01::2022 06:06:41|EVERYONE'S DYING| +08::01::2022 06:06:41|KAABEE-TAN NOOOOO| +08::01::2022 06:06:42|_; +08::01::2022 06:06:42|_;7 +08::01::2022 06:06:44|___;7 +08::01::2022 06:06:45|_; +08::01::2022 06:06:45|NONNA, KLARA AND THE LOLIS?!| +08::01::2022 06:06:46|______________; +08::01::2022 06:06:46|NONNO NOOOOO| +08::01::2022 06:06:47|Ka ve tan...| +08::01::2022 06:06:47|BIG WAIFUS ARE GONE NOOOOOOO| +08::01::2022 06:06:47|_;7 +08::01::2022 06:06:48|THEY GAVE THEIR LIVES FOR THE MOTHERLAND| +08::01::2022 06:06:48|NONNA NOOOOOOOOOO| +08::01::2022 06:06:49|INO +08::01::2022 06:06:49|But y tho| +08::01::2022 06:06:50|-;7 +08::01::2022 06:06:51|_;7 +08::01::2022 06:06:52|_O +08::01::2022 06:06:52|_; +08::01::2022 06:06:55|_;7 +08::01::2022 06:06:55|___;7 +08::01::2022 06:06:55|LONG LIVE THE CCCP o7| +08::01::2022 06:06:55|ONNAAAAAAAAAAAAAAAAA +08::01::2022 06:06:56|INO +08::01::2022 06:06:57|;_; 7| +08::01::2022 06:06:57|RAMMING SPEED| +08::01::2022 06:06:57|BUFFERING +08::01::2022 06:06:58|RIP BIG TITTIES| +08::01::2022 06:06:59|_;7 +08::01::2022 06:07:01|_;7 +08::01::2022 06:07:01|IMA DESU| +08::01::2022 06:07:01|_;7 +08::01::2022 06:07:01|oT +08::01::2022 06:07:02|ETSUBOUSHITA +08::01::2022 06:07:04|ros... +08::01::2022 06:07:05|OOOOOOOOOOO +08::01::2022 06:07:05|иноКиноКиноКиноКино +08::01::2022 06:07:06|_;7 +08::01::2022 06:07:07|But you're not dead| +08::01::2022 06:07:07|URAAAAAAAAAAAAA FOR PRAVDA!!!!!!!!!!!| +08::01::2022 06:07:07|_;7 +08::01::2022 06:07:08|_;7 +08::01::2022 06:07:08|_; +08::01::2022 06:07:11|RAAAAA +08::01::2022 06:07:11|BY ME| +08::01::2022 06:07:13|ино +08::01::2022 06:07:13|RAAAA! +08::01::2022 06:07:14|________________; +08::01::2022 06:07:14| +08::01::2022 06:07:14|INO +08::01::2022 06:07:15|OOOOOOOO +08::01::2022 06:07:17|_; +08::01::2022 06:07:17|_; +08::01::2022 06:07:18|URA VIVE LE CCCP| +08::01::2022 06:07:18|ONNA +08::01::2022 06:07:19|RAAAAA +08::01::2022 06:07:19|so was this supposed to be emotional? it's not like they're dying| +08::01::2022 06:07:19|YRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:07:20|INO +08::01::2022 06:07:20|_; +08::01::2022 06:07:20|RAAAAA +08::01::2022 06:07:21|-nonna +08::01::2022 06:07:21|_;7 +08::01::2022 06:07:21|ITS NOT FAIR BROS| +08::01::2022 06:07:21|AAAAAAAAAAAAAAAAAAAA +08::01::2022 06:07:23|BY ME| +08::01::2022 06:07:24|bros I'm crying| +08::01::2022 06:07:24|mind broken| +08::01::2022 06:07:25|OOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 06:07:26|AAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:07:26|HEROS OF THE SOVIET UNION| +08::01::2022 06:07:27|_;7 +08::01::2022 06:07:27|_;7 +08::01::2022 06:07:27|tags: mindbreak| +08::01::2022 06:07:27|TRAUMATIZED BY WAR| +08::01::2022 06:07:28|I'M CRYING| +08::01::2022 06:07:29|Punished Katyusha| +08::01::2022 06:07:29|7 +08::01::2022 06:07:29|is it raining? yes it is| +08::01::2022 06:07:30|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 06:07:30|I can't believe nonna is fucking dead| +08::01::2022 06:07:30|KV's literally getting torn apart| +08::01::2022 06:07:30|It's over| +08::01::2022 06:07:31|ONNNAAAAAAA +08::01::2022 06:07:32|TSD +08::01::2022 06:07:33|ONNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:07:33|THEYRE ALL DEAD| +08::01::2022 06:07:33|OOOOOOOOOOOONAAAAAAAAAAAAAAAAA +08::01::2022 06:07:34|THEY DIED FOR THE MOTHERLAND| +08::01::2022 06:07:35|I serve the Soviet Union| +08::01::2022 06:07:35|OOOOOOOO +08::01::2022 06:07:35|SADDEST PART IN THE SERIES| +08::01::2022 06:07:37|Alexa play Tyomnaya Noch| +08::01::2022 06:07:38|NINA DOWN| +08::01::2022 06:07:39|OOOO +08::01::2022 06:07:40|Those M26s have garbage aim| +08::01::2022 06:07:41|Punished commie loli| +08::01::2022 06:07:41|PSTD HERE WE COME| +08::01::2022 06:07:41|NOT THE KV| +08::01::2022 06:07:42|she died well| +08::01::2022 06:07:42|it's raining in my house...| +08::01::2022 06:07:43|>5 fucking tanks lost| +08::01::2022 06:07:43|strange, its raining in my bedroom....| +08::01::2022 06:07:44|IT'S LIKE ANOTHER BERLIN WALL| +08::01::2022 06:07:44|IVAN'S CHILDHOOD: THE ANIME| +08::01::2022 06:07:46|THEY GAVE THEIR LIVES FOR RUSSIA| +08::01::2022 06:07:47|WHY ARE WE HERE JUST TO SUFFER| +08::01::2022 06:07:47|DEAD CUNYY UOOOOOOOOOOH| +08::01::2022 06:07:50|RIP ;_;7| +08::01::2022 06:07:51| 7 +08::01::2022 06:07:52|Can't even kill a KV from the side| +08::01::2022 06:07:53|How is it raining indoors?| +08::01::2022 06:07:54|BEST GIRLS BEST GIRLS BEST GIRLS BEST GIRLS| +08::01::2022 06:07:55|BROS ITS RAINING| +08::01::2022 06:07:57|wHATS THE SCORE RIGHT NOW?| +08::01::2022 06:07:58|WET TITS| +08::01::2022 06:08:01|THAT +08::01::2022 06:08:01|RE +08::01::2022 06:08:02|Shiho's jodhpurs are sexy| +08::01::2022 06:08:03|cute raincoat kay| +08::01::2022 06:08:04|ASAKA +08::01::2022 06:08:04|alexa play Государственный гимн СССР| +08::01::2022 06:08:04|Oraibros, it doesn't look good| +08::01::2022 06:08:05|Simulated rain| +08::01::2022 06:08:05|HAT? +08::01::2022 06:08:05|who the fuck was talking? I couldn't see anything| +08::01::2022 06:08:06|THAT +08::01::2022 06:08:07|HAT +08::01::2022 06:08:08|ooarai team is getting purely fucked atm| +08::01::2022 06:08:08|HAT????? +08::01::2022 06:08:10|LUT +08::01::2022 06:08:11|boyfriend +08::01::2022 06:08:13|TFO +08::01::2022 06:08:14|boyfriend +08::01::2022 06:08:15|Time for bullying| +08::01::2022 06:08:15|they mentioned male| +08::01::2022 06:08:15|Zusa!!!!! +08::01::2022 06:08:17|EKT +08::01::2022 06:08:17|God dang, girls in ponchos are cute| +08::01::2022 06:08:18|ALISA BTFO| +08::01::2022 06:08:18|based get fucked arisa| +08::01::2022 06:08:19|Takeshi broke up with her because she eavesdrops | +08::01::2022 06:08:21|BASED AND REDPILLED TAKASHI| +08::01::2022 06:08:21|TAKAHASHI SAN| +08::01::2022 06:08:21|TAKESHI KISAMA| +08::01::2022 06:08:21|ullied +08::01::2022 06:08:21|akeshi... +08::01::2022 06:08:22|BULLY ARISA!| +08::01::2022 06:08:22|would you die for kytyushas cute&funny?| +08::01::2022 06:08:22|Naomi is Takashi| +08::01::2022 06:08:22| +08::01::2022 06:08:24|EK +08::01::2022 06:08:26|Tank lover| +08::01::2022 06:08:29|that's me by the way | +08::01::2022 06:08:30|HAT +08::01::2022 06:08:33|that +08::01::2022 06:08:33|"that thing"| +08::01::2022 06:08:33|ass +08::01::2022 06:08:34|Spank Alisa Y::Y| +08::01::2022 06:08:35|HAT +08::01::2022 06:08:35|Naomi has Kay| +08::01::2022 06:08:36|>It's okay to be alone :::: Hahaha... ;_;| +08::01::2022 06:08:37|No I'm takeshi| +08::01::2022 06:08:38|Takeshi?! SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEXXXXXX| +08::01::2022 06:08:40| +08::01::2022 06:08:41| +08::01::2022 06:08:43|DAS DING| +08::01::2022 06:08:55|HAT +08::01::2022 06:08:56|half of these characters could be fixed if takahashi fucked them| +08::01::2022 06:08:56|UCE +08::01::2022 06:08:57|NCHOVYYYYYYYYYYY +08::01::2022 06:08:59|TL Note: "Anzu" means "SEX"| +08::01::2022 06:09:00|UCE! +08::01::2022 06:09:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:02|DDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:09:02|INO +08::01::2022 06:09:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:03|NCHOVYYYYYYY +08::01::2022 06:09:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:05|HOVY +08::01::2022 06:09:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:07|Кино incoming| +08::01::2022 06:09:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:07|HOVY +08::01::2022 06:09:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:08|Tiny tank| +08::01::2022 06:09:08|MORE LIKE DUCHE| +08::01::2022 06:09:08|WHat a squad| +08::01::2022 06:09:09|HOVY +08::01::2022 06:09:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:11|did i miss alisa's meltdown?| +08::01::2022 06:09:12|NZU +08::01::2022 06:09:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:12|hovy +08::01::2022 06:09:12|HOVY! +08::01::2022 06:09:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:12|hobi +08::01::2022 06:09:12|DDDDDDDDDD +08::01::2022 06:09:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:13|Imagine getting hit by a 1000kg projectile| +08::01::2022 06:09:13|CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +08::01::2022 06:09:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:14|enter the chubby child| +08::01::2022 06:09:14|:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +08::01::2022 06:09:15|It's almost time| +08::01::2022 06:09:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:09:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:16|DDDDDDDDDD +08::01::2022 06:09:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:18|ACTUAL best moment in the film incoming| +08::01::2022 06:09:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE vDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:18|the KINO BATALLION| +08::01::2022 06:09:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:21|CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY | +08::01::2022 06:09:22|CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +08::01::2022 06:09:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:23|:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +08::01::2022 06:09:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:24|YOU MISSED?| +08::01::2022 06:09:25|ENTER THE FINS| +08::01::2022 06:09:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:27|CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY | +08::01::2022 06:09:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:28|DVCE DVCE| +08::01::2022 06:09:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:28| +08::01::2022 06:09:29|UCE +08::01::2022 06:09:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:09:32|KINO MOMENT| +08::01::2022 06:09:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:34|the dvces are getting weaker :(| +08::01::2022 06:09:34|UCE +08::01::2022 06:09:35|UFFERING +08::01::2022 06:09:37|Kino scene coming up| +08::01::2022 06:09:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:37|NTER +08::01::2022 06:09:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:38|anchovy smells good and does not wear a wig| +08::01::2022 06:09:38|ENTER CARLOS| +08::01::2022 06:09:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:39|NTER +08::01::2022 06:09:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:39|buffering +08::01::2022 06:09:39|FUCKING ITALIAN INTERNET| +08::01::2022 06:09:40|EKAI +08::01::2022 06:09:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:41|carbon coated tears ;_;| +08::01::2022 06:09:41|DVCE DVCE DVCE DVCE| +08::01::2022 06:09:42|:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +08::01::2022 06:09:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:42|here comes possible one of the most kino scenes in the entire series| +08::01::2022 06:09:42|BUFFER | +08::01::2022 06:09:42|CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 | +08::01::2022 06:09:43|NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +08::01::2022 06:09:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:09:44|ARLOS +08::01::2022 06:09:44|Karu worfu| +08::01::2022 06:09:45|600mm +08::01::2022 06:09:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:45|ITS CARL| +08::01::2022 06:09:46|Light tanks with the tactical advantage. | +08::01::2022 06:09:46|ENTER, Кино| +08::01::2022 06:09:46|BBK (big black Karl)| +08::01::2022 06:09:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:47|00!? +08::01::2022 06:09:47|DUMB BAKARONI| +08::01::2022 06:09:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:50|Chat’s moving so fast nobody will see me say that I hate Duceposting| +08::01::2022 06:09:50|NOT A TANK!| +08::01::2022 06:09:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:52|>600 MM| +08::01::2022 06:09:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:52|>Tank match >Using railway artillery| +08::01::2022 06:09:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:09:55|For real I bet even her feet actually smell good| +08::01::2022 06:09:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:09:59|BUNAI +08::01::2022 06:09:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:10:00|fucking pepperoni| +08::01::2022 06:10:00|It's okay, it's only a short barrel| +08::01::2022 06:10:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:10:01|LMAO FUCKING BULLSHIT| +08::01::2022 06:10:05|DAMN CARL| +08::01::2022 06:10:05|DUCE DUCE DUCE| +08::01::2022 06:10:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:10:06|DUCE | +08::01::2022 06:10:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:10:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:10:07|DUM RETARD PEPPA| +08::01::2022 06:10:07|IGGED +08::01::2022 06:10:09|males +08::01::2022 06:10:10|>fair and balanced| +08::01::2022 06:10:13|just get like 12 of these| +08::01::2022 06:10:13|MEXT-KUN FUCKING CHILL| +08::01::2022 06:10:13|what a nigger| +08::01::2022 06:10:13|D E V I L I S H| +08::01::2022 06:10:15|Smug Males| +08::01::2022 06:10:15|GHOST CREW| +08::01::2022 06:10:15|((MEXT)))) +08::01::2022 06:10:17|R I G G E D| +08::01::2022 06:10:19|oy vey| +08::01::2022 06:10:19|I'LL KILL YOU FOUR EYES| +08::01::2022 06:10:20|other guy seems rather pissed| +08::01::2022 06:10:21|MEXT KUN GOES HARD| +08::01::2022 06:10:21|MEXT JEW| +08::01::2022 06:10:23|MEXT brothers we can do this| +08::01::2022 06:10:25|SUGOI DEKAI| +08::01::2022 06:10:26|Not a fucking tank| +08::01::2022 06:10:26|((MEXT))) +08::01::2022 06:10:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:10:28|A MATTER OF PERPSECTIVE| +08::01::2022 06:10:28|TL Note: "Anzu" means "SEX"| +08::01::2022 06:10:30|Megane master| +08::01::2022 06:10:30|RIGGED MATCH STOP THE STEAL| +08::01::2022 06:10:31|raw pasta| +08::01::2022 06:10:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:10:33|omo=jew +08::01::2022 06:10:34|A CREW OF SPOOKS| +08::01::2022 06:10:34|is that thing remote controlled or something?| +08::01::2022 06:10:35|MEX CHADS THIS IS OUR YEAR| +08::01::2022 06:10:36|nzu +08::01::2022 06:10:37|thanks tl| +08::01::2022 06:10:38|i want to sex glasses guy| +08::01::2022 06:10:38|IT'S MEXT'S YEAR| +08::01::2022 06:10:41|UTS +08::01::2022 06:10:44|Kino time| +08::01::2022 06:10:44|omo=mossad +08::01::2022 06:10:45|akahippu +08::01::2022 06:10:46|Noriko is still a sexy boy| +08::01::2022 06:10:46|HOW DID YOU MISS AGAIN| +08::01::2022 06:10:47|NOREEEEEE +08::01::2022 06:10:47|ROOZUHIPPU MODORINASAI| +08::01::2022 06:10:47|MY WIFE, ROSEHIP| +08::01::2022 06:10:47|NOREEEE +08::01::2022 06:10:48|AKA +08::01::2022 06:10:49|HERE IT COMES| +08::01::2022 06:10:50|Best girl spotted| +08::01::2022 06:10:50|rosehip remember the saying| +08::01::2022 06:10:51|DDD +08::01::2022 06:10:51|OLKA! +08::01::2022 06:10:51|NTER +08::01::2022 06:10:52|TEAM GLOW-IN-THE-DARK| +08::01::2022 06:10:53|ITA +08::01::2022 06:10:53|Rosehip is cute| +08::01::2022 06:10:53|did i miss the alisa meltdown?| +08::01::2022 06:10:53|DDDDDDDDD +08::01::2022 06:10:53|DDDDDDDDDDDDDD +08::01::2022 06:10:53|DDDD +08::01::2022 06:10:54|Rosehip best hip| +08::01::2022 06:10:54|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:10:55|ERKELE +08::01::2022 06:10:55|ERKELE +08::01::2022 06:10:55|BASED NORIKO| +08::01::2022 06:10:56|OH BOY HERE WE GO| +08::01::2022 06:10:56|enis +08::01::2022 06:10:56|DDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:10:57|NTER +08::01::2022 06:10:57|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:10:57|-DDD +08::01::2022 06:10:58|DDDDDDDDDDDDDD +08::01::2022 06:10:58|KINO TIME| +08::01::2022 06:10:58|Rosehip speed| +08::01::2022 06:10:59|DDDDDDDDDDDDDDDD +08::01::2022 06:11:00|enis +08::01::2022 06:11:00|hit it| +08::01::2022 06:11:00|DDDDDDDDDDDDDDDDD +08::01::2022 06:11:01|GHRISDIE SUSBENSION:DDDDDDDDDDD| +08::01::2022 06:11:01|ARE YOU READY BROS?| +08::01::2022 06:11:02|EEAAAAHHHHHHHH +08::01::2022 06:11:02|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:02|best scene incoming| +08::01::2022 06:11:03|ENIS +08::01::2022 06:11:03|The Finns are strong because they don't miss| +08::01::2022 06:11:04|:DDDDDDDDDDD :DDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:04|Peak moment of the series right here| +08::01::2022 06:11:04|DDDDDDDDDDDDD +08::01::2022 06:11:04|HUMPPAAA TAIKKA KUOLE| +08::01::2022 06:11:04|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:05|HAISTA VITTU :DDDDDDDDDDDDD| +08::01::2022 06:11:05|>When the trees start speaking Finnish| +08::01::2022 06:11:05|DDDDDDDDDDDDDDD +08::01::2022 06:11:06|DDD +08::01::2022 06:11:06|DDDDDDDDDDDDDD +08::01::2022 06:11:07|ERKELEEEEEEEE +08::01::2022 06:11:07|DDDDDDDDDDDDD +08::01::2022 06:11:07|>Using cheating artillery >Still keep missing| +08::01::2022 06:11:07|MY HOBO WIFE MIKA| +08::01::2022 06:11:07|fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:07|BENIS TIME| +08::01::2022 06:11:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:07|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:11:08|D +08::01::2022 06:11:08|ино +08::01::2022 06:11:08|EBIN :DDDDDDDDDDDDDD| +08::01::2022 06:11:08|ammin +08::01::2022 06:11:08|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:08|PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:08|ITAAAAAAA +08::01::2022 06:11:09|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:09|DDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:10|DDDDDDDDDDDDDD +08::01::2022 06:11:10|BENIS :DDDDDDDD| +08::01::2022 06:11:10|DDDDDDDDDDD +08::01::2022 06:11:11|INO +08::01::2022 06:11:11|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:11|BERGELE :DDDDDDD| +08::01::2022 06:11:11|TIME FOR EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:11|ITAAAAAAAAAAAAAAAA +08::01::2022 06:11:11|FUGGGGG :DDDDDDDDDDDDDDDDD| +08::01::2022 06:11:11|ENDER :DDDDDDDDDDDDDDDDDDDDdddddddddddddddd| +08::01::2022 06:11:11|EBIN :DDDDDDDDDDD| +08::01::2022 06:11:11|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:11|DDDDDDD +08::01::2022 06:11:11|:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :D| +08::01::2022 06:11:12|HERE WE GOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 06:11:12|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:12|DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:12|FUGGGGG :DDDDDDD| +08::01::2022 06:11:12|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:13|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:11:13|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:13|DDDDDDDDDDDDD +08::01::2022 06:11:13|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:13|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:13|ERKELE +08::01::2022 06:11:14|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 06:11:14|I wanna fug Aki| +08::01::2022 06:11:15|DDDD +08::01::2022 06:11:15|erkele +08::01::2022 06:11:15|UOMI +08::01::2022 06:11:15|DDDDDDDDDDDDD +08::01::2022 06:11:15|LETS FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 06:11:15|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:15|BENIS :DDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:16|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:16|DDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:16|AAATAAAANAAAAAAAA +08::01::2022 06:11:16|PERKELE :DDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:16|FUGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:16|BENIS :DDDDD| +08::01::2022 06:11:17|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:17|FUG :DDDDDDDDDDD| +08::01::2022 06:11:17|:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +08::01::2022 06:11:18|DDDDDDDDDDDDD +08::01::2022 06:11:18|D +08::01::2022 06:11:18|ERKELE +08::01::2022 06:11:18|enis +08::01::2022 06:11:18|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:18|FUG :DDDDDDDDDDDD| +08::01::2022 06:11:19|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:19|FUG :DDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:19|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:19|DDDDDDDDDDDDDDD +08::01::2022 06:11:19|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:19|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:20|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:20|DDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:20|Ebin :DDDDD| +08::01::2022 06:11:20|ERKELE +08::01::2022 06:11:20|----DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:21|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:11:21|DDDDDDDDDDDD +08::01::2022 06:11:21|ST +08::01::2022 06:11:21|ERKELE +08::01::2022 06:11:22|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:22|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD | +08::01::2022 06:11:22|SUOMI SUOMI FUG| +08::01::2022 06:11:22|OH FUGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:22|ERKELE +08::01::2022 06:11:23|KINO KINO KINO KINO :DDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:23|:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +08::01::2022 06:11:23|DDDDDDDDDDDDD +08::01::2022 06:11:23|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:23|Viimeinen suomalainen hereillä| +08::01::2022 06:11:24|FUG :DDDDDDDDDDDD| +08::01::2022 06:11:24|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:25|PERGELE :DDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:25|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD benis| +08::01::2022 06:11:25|SATANA :DDDD| +08::01::2022 06:11:25|TULTA MUNILLE| +08::01::2022 06:11:25|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:25|DDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:25|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:26|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:26|Active sonar| +08::01::2022 06:11:27|:DDDDDDDD +08::01::2022 06:11:27|KINO KINO KINO KINO :DDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:27|DDDDDDDDDDDDD +08::01::2022 06:11:27|:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +08::01::2022 06:11:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:28|EBIN :DDDDDDDDDDDDDDDD| +08::01::2022 06:11:28|ULDA +08::01::2022 06:11:28|It's Kantele Time| +08::01::2022 06:11:28|DDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:28|Do you know benis?| +08::01::2022 06:11:29|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:29|DDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:29|PERKELE SAATANA VITTU :DDDDDDDDDDDDDD| +08::01::2022 06:11:30|FUUUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:30|FUCK YEAR| +08::01::2022 06:11:31|EBIN :DDDDDDDDDDDDDDD| +08::01::2022 06:11:31|tonks?fuggg :DDDDD| +08::01::2022 06:11:32|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:32|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:32|BRAP BRAP BRAP| +08::01::2022 06:11:32|DDDDDDDDDDDDD +08::01::2022 06:11:33|NJET MOLOTOV| +08::01::2022 06:11:34|SPURDO SPÄRDE| +08::01::2022 06:11:34|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:34|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:11:34|:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +08::01::2022 06:11:34|fugg :DDDDDDDDDDDDD| +08::01::2022 06:11:35|DDDDDDDD +08::01::2022 06:11:35|BIN +08::01::2022 06:11:35|:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +08::01::2022 06:11:37|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddd +08::01::2022 06:11:37|:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +08::01::2022 06:11:37|PERKELE :DDDDDDD| +08::01::2022 06:11:37|ON TÄÄLLÄ TOINENKIN| +08::01::2022 06:11:38|DDDDDDDDDDDDD +08::01::2022 06:11:38|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:38|:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +08::01::2022 06:11:38|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:38|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD FUG| +08::01::2022 06:11:38|ISHKENI KAIKESHTA VAPAUTAN| +08::01::2022 06:11:39|EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:39|ORIFTO +08::01::2022 06:11:42|BINNED +08::01::2022 06:11:42|FUG :DDDDDD| +08::01::2022 06:11:43|DDDDDDDDDDDDDDDDD +08::01::2022 06:11:43|DDDDDDDDDDDDD +08::01::2022 06:11:43|ebin ebin| +08::01::2022 06:11:46|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:46|WE NOT GONNA TALK ABOUT THAT DRIFTO?| +08::01::2022 06:11:46|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:46|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD BENIS| +08::01::2022 06:11:47|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:47|;D;D;D;D;D;D;D;D;;d:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D +08::01::2022 06:11:47|DDDDDDDDDDDDD +08::01::2022 06:11:47|ROOOOOOH +08::01::2022 06:11:47|DDDDDDDDDDDDDDDDD +08::01::2022 06:11:48|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:48|DDDDDDDDDDDDD +08::01::2022 06:11:48|GANDELE BERVIDIN BERGELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:49|EBIN :DDDD| +08::01::2022 06:11:49|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:50|GOT THAT 454 BIG BLOCK| +08::01::2022 06:11:51|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:11:52|O FUG GARL :DDDDDDDDDDD| +08::01::2022 06:11:52|bubbering :DDDDD| +08::01::2022 06:11:52|stinky helsiniki| +08::01::2022 06:11:53|SEX WITH MIKAAAAAAAAAAAA| +08::01::2022 06:11:53|:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +08::01::2022 06:11:53|SPURDO SPÄRDE :DDDD| +08::01::2022 06:11:54|DUCE DUCE DUCE :DDDDDD | +08::01::2022 06:11:54|Beautiful Kantele playing| +08::01::2022 06:11:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:11:55|EBINNED AND FUGGED :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:11:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:11:55|FUGGIN CARL GUN :DDDDDDDDD| +08::01::2022 06:11:56|GRISDY SUSBENSION| +08::01::2022 06:11:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:11:56|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:11:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:11:58|:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +08::01::2022 06:11:59|BENIS :DDDDDD| +08::01::2022 06:11:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:01|SUOMI :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:02|DUCE? FUG :DDD| +08::01::2022 06:12:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:02|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:12:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:04|OOOOOOOOREEEEEEEEEEEEEEEEEEE +08::01::2022 06:12:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:04|HIMAYTSA +08::01::2022 06:12:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:04|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:12:04|Such a dumb plan| +08::01::2022 06:12:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:05|KOCCHI MITERU ZO| +08::01::2022 06:12:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE VVVDUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:07|Åbo represent| +08::01::2022 06:12:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:07|UWAAAAAAAAAAAAAAAAAA KOCCHI MITERUZO| +08::01::2022 06:12:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:08|DUCE CANNON| +08::01::2022 06:12:08|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:12:08|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:12:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:12:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:09|NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +08::01::2022 06:12:09|BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:10|IF ONLY WE BLEW THE BRIDGE BEFOREHAND| +08::01::2022 06:12:10|UCE +08::01::2022 06:12:10|D +08::01::2022 06:12:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:12|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:12:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:12|100% dead| +08::01::2022 06:12:12|DUCE DUCE| +08::01::2022 06:12:13|DDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:13|EBIN CHRISDIE SUSBENSION :DDDDDDDDDD| +08::01::2022 06:12:13|FUCCCCKK TOO MUFCH KINO| +08::01::2022 06:12:13|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:12:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:15|CARBON COATING| +08::01::2022 06:12:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:17|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:12:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:12:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:20|DVCE DVCE DVCE| +08::01::2022 06:12:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:21|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:23|DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:12:23|OCK +08::01::2022 06:12:23|600 600 600 600 600 600 600 600 600 600 600 600 | +08::01::2022 06:12:23|DUCE DUCE DUCE DUCE| +08::01::2022 06:12:23|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:12:24|ENIS +08::01::2022 06:12:24|DUCE DUCE DUCE| +08::01::2022 06:12:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:24|Oulu on paskakaupunni| +08::01::2022 06:12:25|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:12:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:12:26|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:27|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:12:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:27|ANTITANK ROCK| +08::01::2022 06:12:27|EAD +08::01::2022 06:12:28|DDDDDDDDDDDDDDDDDD +08::01::2022 06:12:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:28|P +08::01::2022 06:12:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:12:30| 🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕 +08::01::2022 06:12:31|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:12:31|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:31|CHRISBIE SUSBENSION :DDDDDDDDDDDDD| +08::01::2022 06:12:31|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:32|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:12:32|EE +08::01::2022 06:12:33|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:34|DDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:34|FUG :DDDDDDDDDD| +08::01::2022 06:12:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:12:35|:DDDDDDDDDDD :DDDDDDDDDDD :DDDDDDDDDDD| +08::01::2022 06:12:36|IP +08::01::2022 06:12:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:12:36|DDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:36|ERKELE +08::01::2022 06:12:36| +08::01::2022 06:12:37|.............................................. +08::01::2022 06:12:38|IP +08::01::2022 06:12:38|DDDDDDDDDDD +08::01::2022 06:12:38|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:38|.. +08::01::2022 06:12:40|UGG +08::01::2022 06:12:40|IP???? +08::01::2022 06:12:40|OH FUG :DDD| +08::01::2022 06:12:40|uggg +08::01::2022 06:12:41|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:41|OH FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:41|FUCKING DED| +08::01::2022 06:12:41|UUUUUUUUUUUUUUUUUUUUGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +08::01::2022 06:12:41|ugg +08::01::2022 06:12:42|UGGG +08::01::2022 06:12:42|? +08::01::2022 06:12:43|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:43|O FUG :DDDDDDDDD| +08::01::2022 06:12:43|MORE KINO INCOMING :d| +08::01::2022 06:12:43|UUUUUG +08::01::2022 06:12:44|amn +08::01::2022 06:12:44|TRACKS ARE FOR SUCKERS| +08::01::2022 06:12:44|CARBON COATING| +08::01::2022 06:12:44| +08::01::2022 06:12:45|CHRISDIE SUSBENSIONS :DDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:45|binland bros...| +08::01::2022 06:12:45|FUGGGGG :DDDDDDDDDDDDDDD| +08::01::2022 06:12:45|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:45|UGGGG +08::01::2022 06:12:46|UG +08::01::2022 06:12:46|PERKELEEEEEEE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:46|UGGGGGGGGGG +08::01::2022 06:12:47|DDD: +08::01::2022 06:12:47|CHRISDIE SUSBENSION| +08::01::2022 06:12:47|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:48|PART 2 BITCH| +08::01::2022 06:12:48|OOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 06:12:48|CHRISDIE SUSBENSION :DDDDDDDDD| +08::01::2022 06:12:49|urprise! +08::01::2022 06:12:49|DDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddddd +08::01::2022 06:12:49|CHRISDIE SUSBENSIONS :DDDDDDDDDD| +08::01::2022 06:12:49|RAYQUAZA NO| +08::01::2022 06:12:49|shiddd :-DDDDDD| +08::01::2022 06:12:50|DOKTOR, TURN OFF MY WHEEL INHIBITORS| +08::01::2022 06:12:50|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:50|FUGG :DDD| +08::01::2022 06:12:50|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:12:51|CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:51|DDDDDDDDDD +08::01::2022 06:12:52|CHRISDIE SUSBENSION CHRISDIE SUSBENSION :DDDDD| +08::01::2022 06:12:52|SPURDO SPÄRDE :DDDD| +08::01::2022 06:12:52|FINNISH TRICKERY| +08::01::2022 06:12:52|GHRISDIE SUSBENSION :DDDDDDDDDDDDDD| +08::01::2022 06:12:52|DDDDDD +08::01::2022 06:12:52|ANI?!?! +08::01::2022 06:12:52|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:12:52|INO +08::01::2022 06:12:53|THIS IS THE POWER OF :D| +08::01::2022 06:12:54|owever... +08::01::2022 06:12:54|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:55|GRISDIE SUSBENSION| +08::01::2022 06:12:55|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:55|DDDDDDDDDDDDDDDD +08::01::2022 06:12:56| 🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮 +08::01::2022 06:12:56|FUGGGGGGGGGGGG :DDDDD| +08::01::2022 06:12:56|TRACKERS FOR FAGS| +08::01::2022 06:12:56|DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:57|CHRISDIE SUSBENSION| +08::01::2022 06:12:57|lets goooooooo| +08::01::2022 06:12:57|WE DON'T NEED TRACKS WHERE WE'RE GOING| +08::01::2022 06:12:57|AMENNA! +08::01::2022 06:12:57|CHRISTIE OP| +08::01::2022 06:12:58|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:58|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:12:58|grisdie susbension :-DDDDD| +08::01::2022 06:12:58|CHRIBSDIE SUBSBENDSION :DDDDD| +08::01::2022 06:12:58|CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:12:59|CHRISDIE SUSBENSIONS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:13:00|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:00|UGGGGGGG +08::01::2022 06:13:00|UG +08::01::2022 06:13:00|GAS GAS GAS| +08::01::2022 06:13:01|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:03|CHRISDIE SUSBENSIONS| +08::01::2022 06:13:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:03|DDDDDDDDDDDDDDDDDDDDDDDDDDddddddddddddddd +08::01::2022 06:13:04|MY LIMIDERS :DDDDDDDDD| +08::01::2022 06:13:04|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:05|CHRISDIE SUSBENSION :D| +08::01::2022 06:13:05|CHRISDIE SUSBENSION :dddddd| +08::01::2022 06:13:05|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:13:06|DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:07|IGE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:13:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:07|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:13:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:09|SHE SAID THE LINE| +08::01::2022 06:13:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:09|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:09|MAZUROYO NERA EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +08::01::2022 06:13:10|so this is the power of finland| +08::01::2022 06:13:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:11|ANCHOVY FLIGHT| +08::01::2022 06:13:11|DUCE DUCE DUCE DUCE| +08::01::2022 06:13:12|ANIIIIIIIIII???!!!! +08::01::2022 06:13:12|CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDD| +08::01::2022 06:13:12|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:13:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:13|FLYInG PANZA| +08::01::2022 06:13:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:14|HIGH IQ| +08::01::2022 06:13:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:16|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:16|UCEPULT +08::01::2022 06:13:16|UOCO +08::01::2022 06:13:16|?????????????????????????????????????????? +08::01::2022 06:13:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:17|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:13:17|IMA DA| +08::01::2022 06:13:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:18|DUCE DUCE DUCE| +08::01::2022 06:13:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:18|umb +08::01::2022 06:13:18|PIZZA DELIVERY| +08::01::2022 06:13:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:22|CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 | +08::01::2022 06:13:22| +08::01::2022 06:13:22|smart4u +08::01::2022 06:13:22|re +08::01::2022 06:13:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:23|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:24|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:24|ORIKO<3 +08::01::2022 06:13:24|RE? +08::01::2022 06:13:25|FUCKING HOW??????????????????| +08::01::2022 06:13:25|FLYING ANCHOVIES| +08::01::2022 06:13:26| +08::01::2022 06:13:26|VCE +08::01::2022 06:13:26|christie suspensionnnnnnnnnn| +08::01::2022 06:13:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:26|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:27|UCE +08::01::2022 06:13:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:13:28|in all serious what would a maching gun do against that?| +08::01::2022 06:13:28|DDDDDDDDDDDDDD +08::01::2022 06:13:30|DDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:30| れ? +08::01::2022 06:13:30|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:31|AN AMERICAN TANK'S ONE WEAKNESS| +08::01::2022 06:13:31|>it didn't work| +08::01::2022 06:13:31|Smart they ain’t. But that’s why I love them| +08::01::2022 06:13:32|D +08::01::2022 06:13:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:34|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:34|DDDD +08::01::2022 06:13:35|DDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:35|DRIVING IN CIRCLES| +08::01::2022 06:13:37|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:38|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:38|FCE +08::01::2022 06:13:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:41|Smug finish waifu| +08::01::2022 06:13:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:42|PASTA TIME| +08::01::2022 06:13:43|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:13:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:43|ASTA +08::01::2022 06:13:43|JUST TULTA ALREADY| +08::01::2022 06:13:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:44|ASTA +08::01::2022 06:13:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:45|NZUUUUUUUUUU +08::01::2022 06:13:47|ASTA? +08::01::2022 06:13:47|TL Note: "Anzu" means "SEX"| +08::01::2022 06:13:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:47|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:13:48|ASTA +08::01::2022 06:13:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:48|ASTA +08::01::2022 06:13:48|PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA | +08::01::2022 06:13:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:48|ASTA! +08::01::2022 06:13:48|ASTA? +08::01::2022 06:13:49|AJISUKA +08::01::2022 06:13:49|ASTA?! +08::01::2022 06:13:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:49|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:51|ASTA +08::01::2022 06:13:51|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:13:51|PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA | +08::01::2022 06:13:51|ASTA +08::01::2022 06:13:52|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:13:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:53|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:13:54|THANKS TL| +08::01::2022 06:13:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:13:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:56|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:13:57|OSH +08::01::2022 06:13:57|AICHOOOOOOO +08::01::2022 06:13:57|EW +08::01::2022 06:13:58|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:13:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:58|nzu +08::01::2022 06:13:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:13:59|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:14:01|ASTAAA +08::01::2022 06:14:01|Flying Hetzer| +08::01::2022 06:14:01|ETZER +08::01::2022 06:14:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:14:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:14:03|ocking +08::01::2022 06:14:03|:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +08::01::2022 06:14:04|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:05|ANZU ANZU ANZU ANZU| +08::01::2022 06:14:06|LET'S GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 06:14:06|IRSHOT +08::01::2022 06:14:07|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 06:14:08|PERKELE :DDD| +08::01::2022 06:14:09|R E K T| +08::01::2022 06:14:09|ATA +08::01::2022 06:14:10|ATTA +08::01::2022 06:14:10|LYING +08::01::2022 06:14:11|YADDA :DDDDDDDDDDDDDDD| +08::01::2022 06:14:12|ulta! +08::01::2022 06:14:12|Right in the hole| +08::01::2022 06:14:12|ANZU STRONK| +08::01::2022 06:14:12|OH NO, NOT THE GHOST CREW| +08::01::2022 06:14:12|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:13|UCCESS +08::01::2022 06:14:13|:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +08::01::2022 06:14:14|nice air| +08::01::2022 06:14:17|KARL NO| +08::01::2022 06:14:17|:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +08::01::2022 06:14:18|DDDDDDDDDDDDDD +08::01::2022 06:14:19|anzu the sharpshooter| +08::01::2022 06:14:20|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:20|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:21|Ute +08::01::2022 06:14:21|UTLA +08::01::2022 06:14:21|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:22|Couldn't they have gotten an engine shot right there?| +08::01::2022 06:14:23|:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +08::01::2022 06:14:23|FUGGGGGGG :DDDDDDDDDDDDD| +08::01::2022 06:14:24|FUGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:14:24|DDDDDDDDD +08::01::2022 06:14:24|INO +08::01::2022 06:14:25|ERKELE +08::01::2022 06:14:25|EBIN STREAM :DDDDD| +08::01::2022 06:14:26|ERKELE +08::01::2022 06:14:26|did the finns really have panzers?| +08::01::2022 06:14:26|Khrome is a faget :DD| +08::01::2022 06:14:27|:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +08::01::2022 06:14:27|WHY ARE RUNNING?| +08::01::2022 06:14:28|DDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:28|SWIGGITY SWAGGITY COMING FOR DAT BOOTY :DDDDD| +08::01::2022 06:14:29|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:29|ULTA!!!!!!!!!!!!!!!!!! +08::01::2022 06:14:29|Why didn't they just shoot them from behind| +08::01::2022 06:14:30|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:30|UTA +08::01::2022 06:14:30|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:14:30|HETZER GONNA HETZ| +08::01::2022 06:14:30|UTE +08::01::2022 06:14:31|ULTA +08::01::2022 06:14:32|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:32|AAATAAAAANAAAAAAAAAAAAAAAAAAA +08::01::2022 06:14:32|>needing wheels| +08::01::2022 06:14:32|ULTA +08::01::2022 06:14:33|:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +08::01::2022 06:14:33|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:14:33|MONEY SHOT BITCH| +08::01::2022 06:14:33|TULTA :DDDDDDDDDD| +08::01::2022 06:14:33|DULDA :DDDDDDDDDDDDDDDDDDDDDDddddddddddddddddd| +08::01::2022 06:14:33|DULDA :DDDD| +08::01::2022 06:14:33|UG +08::01::2022 06:14:33|ulta +08::01::2022 06:14:34|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:34|ULTA +08::01::2022 06:14:34|ULTA +08::01::2022 06:14:34|ULTA! +08::01::2022 06:14:35|why does she go in front of them :DDDDDD| +08::01::2022 06:14:36|PERKELE :DDDDDDDDDD| +08::01::2022 06:14:36|ULTA +08::01::2022 06:14:36|TULTA :DDDDDDDDDD| +08::01::2022 06:14:36|DDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:36|Ulta +08::01::2022 06:14:37|why did they pull in front of their barrel?| +08::01::2022 06:14:37|ip +08::01::2022 06:14:37|TULTA :DDDDDD| +08::01::2022 06:14:37|TULDA :DDDDDDDDDDD| +08::01::2022 06:14:37|UTA +08::01::2022 06:14:38|DULKDA :DD| +08::01::2022 06:14:39|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:39|DULDA :DDDDDDDDDDDDDDDD| +08::01::2022 06:14:40|ULTA +08::01::2022 06:14:40|DULDA :DDDDDDDDDDDDDDDDD| +08::01::2022 06:14:40|oh fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:14:40|D +08::01::2022 06:14:40|ULTA +08::01::2022 06:14:41|WIDNESS FINNISH ENGINEERINGN| +08::01::2022 06:14:41|DULDA :DDDDD| +08::01::2022 06:14:41|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:41|DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:14:41|TUL TA| +08::01::2022 06:14:42|HOW THE FUCK| +08::01::2022 06:14:42|ERKELE +08::01::2022 06:14:43|TULTA :DDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:14:43|INO +08::01::2022 06:14:43|mic drop| +08::01::2022 06:14:43|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +08::01::2022 06:14:45|wring +08::01::2022 06:14:45|>bicycling a tank| +08::01::2022 06:14:46|ULDA:DDDDDD +08::01::2022 06:14:46|ino~ +08::01::2022 06:14:47|EBIN :DDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:14:47|They could have knocked it out| +08::01::2022 06:14:48|stream redeemed| +08::01::2022 06:14:48|DDDDDDDDDDDDDD +08::01::2022 06:14:49|so they could WITNESS| +08::01::2022 06:14:49|K I N O| +08::01::2022 06:14:50|Most kino moment| +08::01::2022 06:14:50|WITH FINNS YOU WIN| +08::01::2022 06:14:50|BASED FINNS| +08::01::2022 06:14:53|MOST KINO MOMENT| +08::01::2022 06:14:53|MIKA OUT| +08::01::2022 06:14:53|EBIN :DDDDDDDDDDDD| +08::01::2022 06:14:55|S-2 +08::01::2022 06:14:57|EBIN :DDDDDDD| +08::01::2022 06:14:58|That was so stupif| +08::01::2022 06:14:58|fuck yeah that's such a great scene| +08::01::2022 06:14:58|ILLEGAL SONAR DEVICE| +08::01::2022 06:14:58|bin... +08::01::2022 06:14:59|best scene in television and film history| +08::01::2022 06:14:59|fucking kino| +08::01::2022 06:15:01|DD +08::01::2022 06:15:04|Kino at its finest| +08::01::2022 06:15:04|Around finns the ice is thin| +08::01::2022 06:15:05|you were stupid| +08::01::2022 06:15:05|DDDDDDDDDDDDDDDD +08::01::2022 06:15:07|I GOTTA PISSSSSSSSSSSS| +08::01::2022 06:15:11|VCE +08::01::2022 06:15:11|*glab glab glab* :DDDDDDDDDDDDDD| +08::01::2022 06:15:12|UCE +08::01::2022 06:15:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:15:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:15:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:18|duce duce duce duce| +08::01::2022 06:15:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:15:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:22|OTSUGEKI +08::01::2022 06:15:24|_; +08::01::2022 06:15:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:27|TSD +08::01::2022 06:15:28|here the saying katyusha| +08::01::2022 06:15:28|nishi nishi nishi nishi| +08::01::2022 06:15:28|SEX WITH KATYUSHA| +08::01::2022 06:15:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:15:29|_;7 +08::01::2022 06:15:29|cry more midget| +08::01::2022 06:15:31|_; +08::01::2022 06:15:31|LAGGGGGGG +08::01::2022 06:15:31|SHAMFUR DISDRAY| +08::01::2022 06:15:33|The last commie| +08::01::2022 06:15:33|_; +08::01::2022 06:15:37|sip* +08::01::2022 06:15:39|ruskies no more| +08::01::2022 06:15:43|bongs +08::01::2022 06:15:44|<3 KAY| +08::01::2022 06:15:47|FIND YOUR POWN SENSHADO| +08::01::2022 06:15:48|just be urself| +08::01::2022 06:15:48|just got here, have the muricans died yet?| +08::01::2022 06:15:49|Miho style| +08::01::2022 06:15:49|Kay's just here for the ride| +08::01::2022 06:15:50|my maho wife| +08::01::2022 06:15:55|Wani owned| +08::01::2022 06:15:56|Communisnm on deaths door| +08::01::2022 06:15:56|RIKA +08::01::2022 06:15:57|the mutts lost| +08::01::2022 06:15:58|Erika BTFO| +08::01::2022 06:16:00|RIKA +08::01::2022 06:16:00|SHUT DOWN| +08::01::2022 06:16:01|SHUT UP ERIKA| +08::01::2022 06:16:01|shut ut wani| +08::01::2022 06:16:01|ERIKA SHUT THE FUCK UP| +08::01::2022 06:16:02|WANI BTFO| +08::01::2022 06:16:03|wani owned epic style| +08::01::2022 06:16:04|That swaying hair is really cute| +08::01::2022 06:16:05|ANI +08::01::2022 06:16:05|UND DAS HEISST| +08::01::2022 06:16:10|WANI STATUS: DESTROYED| +08::01::2022 06:16:10|rika... +08::01::2022 06:16:10|erika is always getting put in her place| +08::01::2022 06:16:12|ERIKA is right| +08::01::2022 06:16:13|PANZER VOR| +08::01::2022 06:16:14|EEEEEERIKA +08::01::2022 06:16:15|PANZER VORE| +08::01::2022 06:16:16|PANZER VOR| +08::01::2022 06:16:16|WANI CANT STOP LOSING| +08::01::2022 06:16:17|PANZA VOR| +08::01::2022 06:16:17|fucking wani| +08::01::2022 06:16:19|BANSER VOR :DDDD| +08::01::2022 06:16:20|PANTSU 4| +08::01::2022 06:16:21|PANZER 4| +08::01::2022 06:16:23|PANZER VOR| +08::01::2022 06:16:23|Pantsu for all| +08::01::2022 06:16:24|Best battleground of all time| +08::01::2022 06:16:27|ENTER KINO| +08::01::2022 06:16:29|wanibros post your face when we beat the slag| +08::01::2022 06:16:29|P{ANTSU VORE| +08::01::2022 06:16:29|buffering +08::01::2022 06:16:30|TOSUGEKI INTO WANI'S WANI| +08::01::2022 06:16:31|FUCKING ISEKAI LOOKING ASS PLACE| +08::01::2022 06:16:33|tl what does "panzer vor" mean again?| +08::01::2022 06:16:36|Why didn't they go into the park in the first place| +08::01::2022 06:16:37|can't wait for the tsar tank| +08::01::2022 06:16:37|I HATE THE ANTICHRIST| +08::01::2022 06:16:38|otsugeki? +08::01::2022 06:16:39|PANZER VOR MEANS PANZER VOR| +08::01::2022 06:16:40|kino battleground| +08::01::2022 06:16:42|OTSUGEKI +08::01::2022 06:16:44|panzer vor means sex with Anzu| +08::01::2022 06:16:46|PANZER VOR MEANS PANZER VOR| +08::01::2022 06:16:48|thanks tl| +08::01::2022 06:16:50|DATABASE DATABASE| +08::01::2022 06:16:50|????????????????????????????????????? +08::01::2022 06:16:50|assam the datanigger| +08::01::2022 06:16:51|TL Note: "Panzer vor" means "Panzer vor"| +08::01::2022 06:16:52|?????????????????????? +08::01::2022 06:16:54|?????????????????????????????????????????? +08::01::2022 06:16:55|????????????????????????????????????? +08::01::2022 06:16:56|??????????????????????????????????????? +08::01::2022 06:16:56|????????????????????????????????? +08::01::2022 06:16:56|che pizdish| +08::01::2022 06:16:56|was that magic| +08::01::2022 06:16:56|???????????? +08::01::2022 06:16:57|?????????????????????? +08::01::2022 06:16:57|?????????????????? +08::01::2022 06:16:58|????????!? +08::01::2022 06:16:58|ty tl| +08::01::2022 06:16:59|Panzer vor means Erika is best girl| +08::01::2022 06:17:00|??????????????????????????????????????????????????? +08::01::2022 06:17:00|WTF IS SHE SAYING NOW???| +08::01::2022 06:17:01|HIGH IQ ASSAM| +08::01::2022 06:17:02|sex with wani| +08::01::2022 06:17:02|???????????????? +08::01::2022 06:17:03|JUST LIVING IN THE DATAASE| +08::01::2022 06:17:04|that does make sense| +08::01::2022 06:17:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:04|have you heard this saying anon?| +08::01::2022 06:17:04|WHAT THE FUCK ARE YOU TALKING ABOUT DARJELING| +08::01::2022 06:17:09|otsugeki? +08::01::2022 06:17:10|ope +08::01::2022 06:17:12|head +08::01::2022 06:17:14|OTSUGEK +08::01::2022 06:17:14|aka +08::01::2022 06:17:16|otsugeki +08::01::2022 06:17:17|no totsugeki???| +08::01::2022 06:17:18|NO WAY| +08::01::2022 06:17:18|Darjeeling best girl| +08::01::2022 06:17:20|Don't listen to Darjeeling, she's trying to make you gay| +08::01::2022 06:17:20|Damn rosehip is so fucking cute bros...| +08::01::2022 06:17:21|are naomi and alisa still up?| +08::01::2022 06:17:24|TL NOTE; Totsugeki means Poopenfahren | +08::01::2022 06:17:27|I HATE THE ANTICHRIST| +08::01::2022 06:17:27|uwaaah bermuda| +08::01::2022 06:17:27|Hide in the long grass and bayonet people| +08::01::2022 06:17:27|pekoe, have you heard this saying, "rtgijowtij45tbn34h5twbnjht5 w4jtbw4hj5"| +08::01::2022 06:17:32|Naomi and Alisa are still up| +08::01::2022 06:17:35|nothin' fun about UN..........| +08::01::2022 06:17:38|hanks +08::01::2022 06:17:39|totsugek :DDDDDDDDDDDDDDD| +08::01::2022 06:17:42|I'm still up in a couple ways| +08::01::2022 06:17:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:45|VCE +08::01::2022 06:17:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:47|UCE +08::01::2022 06:17:48|____________________O +08::01::2022 06:17:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:17:48|UCE +08::01::2022 06:17:49|Spank Naomi and Alisa Y::Y| +08::01::2022 06:17:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:49|CG +08::01::2022 06:17:50|AGIC +08::01::2022 06:17:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:51|TL Note: Totsugeki means useless| +08::01::2022 06:17:52|I am Duce's girlfriend. AMA.| +08::01::2022 06:17:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:53|UCE +08::01::2022 06:17:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:17:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:55|DUCE butt| +08::01::2022 06:17:55|ANZU ANZU ANZU ANZU| +08::01::2022 06:17:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:57|DUCEEE AASS| +08::01::2022 06:17:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:17:58|DUCE SPY| +08::01::2022 06:17:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:17:59|DUCE DUCE| +08::01::2022 06:17:59|DUCE BUTT| +08::01::2022 06:17:59|DUCE DUCE DUCE| +08::01::2022 06:17:59|DUCE BUTT| +08::01::2022 06:18:00|BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE | +08::01::2022 06:18:00|CG DUCE| +08::01::2022 06:18:00|MAGINE +08::01::2022 06:18:00|Sex with DVCE's 3d model| +08::01::2022 06:18:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:02|THE UN WHEN YOU DON'T TAKE ANY REFUGEES| +08::01::2022 06:18:02|CHOBI BUTT| +08::01::2022 06:18:02|duce butt| +08::01::2022 06:18:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:04|DUCE DUCE DUCE| +08::01::2022 06:18:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:18:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:18:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:07|DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT | +08::01::2022 06:18:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:18:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:18:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:17|gotta go fast| +08::01::2022 06:18:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:18|Maybe the M3 Lee will finally do something| +08::01::2022 06:18:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:18:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:20|Duce with the big brain play, Intelligence wins wars| +08::01::2022 06:18:20|IS IT PASTA TIME YET??| +08::01::2022 06:18:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:24|italian flag achieved| +08::01::2022 06:18:27|DUCE DUCE DVCE DVCEvDUCE DUCE DVCE DVCEvvDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEvDUCE DUCE DVCE DVCE| +08::01::2022 06:18:35|DUCE | +08::01::2022 06:18:38|it's just smoke| +08::01::2022 06:18:39|te +08::01::2022 06:18:40|te +08::01::2022 06:18:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:18:44|Why fire when you can't see the target| +08::01::2022 06:18:45|>is this bait?| +08::01::2022 06:18:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:18:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:51|JOHNNY COMES MARCHING HOME INBOUND| +08::01::2022 06:18:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:18:52|WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +08::01::2022 06:18:52|I HATE THE ANTICHRIST| +08::01::2022 06:18:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:18:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:56|i can't see shit captain| +08::01::2022 06:18:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:18:58|This is actually closer to real tank battles| +08::01::2022 06:19:04|WHEN JOHNNY COMES MARCHING HOME | +08::01::2022 06:19:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:19:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:07|johnny comes marching home is one of the most kino scenes| +08::01::2022 06:19:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:19:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:11|USED +08::01::2022 06:19:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:18|EEEEHOOOO? +08::01::2022 06:19:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:19:20|eihou +08::01::2022 06:19:22|ASTUTE OBSERVATION DUCE| +08::01::2022 06:19:22| 幕だ +08::01::2022 06:19:22|HEY HOE| +08::01::2022 06:19:23|HEY HO| +08::01::2022 06:19:24|tratagen +08::01::2022 06:19:25|eehoo?? +08::01::2022 06:19:31|OTSUGEKI! +08::01::2022 06:19:33|INY +08::01::2022 06:19:33|OTSUGEKI +08::01::2022 06:19:34|OTSUGEKI +08::01::2022 06:19:36|they foreshadowed johnny comes marching home when yukari sung it| +08::01::2022 06:19:36|OTSUGEKI! +08::01::2022 06:19:37|otsugeki +08::01::2022 06:19:37|STFU FUKUDA| +08::01::2022 06:19:38|otsugeki? +08::01::2022 06:19:39|SAY IT WITH ME LADS, TO TSU GE KI| +08::01::2022 06:19:40|HAME! +08::01::2022 06:19:40|MAGINE +08::01::2022 06:19:40|stealth tactics time| +08::01::2022 06:19:40|TENNO HEIKA BANZAI \o::| +08::01::2022 06:19:41|RAIDS +08::01::2022 06:19:43|ANTI SHAMEFUR| +08::01::2022 06:19:43|HAMEFUR? +08::01::2022 06:19:43|UOOOOOOOOOOO FUKUDA UOOOOOOOOOHHHHHHHHHH| +08::01::2022 06:19:45|HAMFUR +08::01::2022 06:19:45|OTSUGEKI? +08::01::2022 06:19:45|NO TOTSUGEKI?| +08::01::2022 06:19:46|WHAT'S THAT ?| +08::01::2022 06:19:47|otsugeki +08::01::2022 06:19:48|ucks +08::01::2022 06:19:48| 側の西さん!? +08::01::2022 06:19:50|>not doing totsugeki| +08::01::2022 06:19:52|SHUT THE FUCK UP FUKUDA| +08::01::2022 06:19:52|OHNNY +08::01::2022 06:19:52|HAFEEEEEEE +08::01::2022 06:19:53|OOM +08::01::2022 06:19:53|TOTSUGEKI SHAMEFUL???!?!?!?!| +08::01::2022 06:19:54|otsugeki +08::01::2022 06:19:54|NTER +08::01::2022 06:19:54|KUZOOOOO +08::01::2022 06:19:54|K I N O| +08::01::2022 06:19:55|DHDHIP +08::01::2022 06:19:55|\o:: BANZAI| +08::01::2022 06:19:56|Rosehip you tard| +08::01::2022 06:19:56|OTSUGEKIIIIIII +08::01::2022 06:19:57|>DON'T WORRY GUYS, I HAVE A PLAN| +08::01::2022 06:19:57|MY WIFE, ROSEHIP| +08::01::2022 06:19:57|"What if we charged later?"| +08::01::2022 06:19:58|ENTER T-28| +08::01::2022 06:19:58|NTER +08::01::2022 06:19:59|nter +08::01::2022 06:19:59|NTER +08::01::2022 06:19:59|NTER +08::01::2022 06:20:00|AAAAAAAAAA +08::01::2022 06:20:00|rosehip plz| +08::01::2022 06:20:00|NTER +08::01::2022 06:20:01|YOU'RE A BIG GUY| +08::01::2022 06:20:01|OSEHIPPUU +08::01::2022 06:20:02|BIG GUY COMIN THROUGH| +08::01::2022 06:20:03|ROSEHIP NO| +08::01::2022 06:20:03|IPPU +08::01::2022 06:20:03|>time of need >americans nowhere to be seen| +08::01::2022 06:20:03|OSEHIP +08::01::2022 06:20:03|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:04|NTER +08::01::2022 06:20:04|ino +08::01::2022 06:20:04|That's no chaffee| +08::01::2022 06:20:05|OGGED +08::01::2022 06:20:06|NTER +08::01::2022 06:20:06|NTER +08::01::2022 06:20:07|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:07|INO +08::01::2022 06:20:07|I love rosehip just challenging the Chaffee as if it'd be on point| +08::01::2022 06:20:07|TANK GRINDAN| +08::01::2022 06:20:07|Enter, JOHNNY| +08::01::2022 06:20:07|28 +08::01::2022 06:20:08|NTER +08::01::2022 06:20:10|O S T| +08::01::2022 06:20:11|RUN AWAY| +08::01::2022 06:20:11|Is that the 90mm or the 105?| +08::01::2022 06:20:11|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:11|How the heck Rosehip drift that fast?| +08::01::2022 06:20:11|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:12|HURA HURA| +08::01::2022 06:20:12|ENTER ENTER MISSION| +08::01::2022 06:20:12|Rosehip, have you heard this saying: come back| +08::01::2022 06:20:12|Hurrah Hurrah| +08::01::2022 06:20:13|WHEN JOHNNY COMES MARCHING HOME| +08::01::2022 06:20:13|Big tonk| +08::01::2022 06:20:14|NTER +08::01::2022 06:20:15|OGGED +08::01::2022 06:20:16|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:17|7 +08::01::2022 06:20:17|JOHNNY I HARDLY KNEW YE| +08::01::2022 06:20:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:20:17|NTER +08::01::2022 06:20:17|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:17|WHEN JOHNNY BOY COMES MARCHING HOME| +08::01::2022 06:20:18|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:18|I HATE THE ANTICHRIST| +08::01::2022 06:20:19|95 +08::01::2022 06:20:20|ino +08::01::2022 06:20:20|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:20|MARCHING IN| +08::01::2022 06:20:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:20:22|VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA | +08::01::2022 06:20:23|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:23|ST +08::01::2022 06:20:23|URRAH +08::01::2022 06:20:23|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:23|AND WE'LL ALL FEEL GAY| +08::01::2022 06:20:24|IT'S THE FAT FUCK| +08::01::2022 06:20:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:25|WHEN THE SAINTS COME MARCHING HOME| +08::01::2022 06:20:26|EEEEEEEEEEEEEEEEG +08::01::2022 06:20:27|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:28|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:29|USA USA USA USA USA| +08::01::2022 06:20:30|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:30|Here comes best tank| +08::01::2022 06:20:32|big boi| +08::01::2022 06:20:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:20:33|I HATE THE ANTICHRIST| +08::01::2022 06:20:33|Spoiler: Johnny never did come marching home| +08::01::2022 06:20:33|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:34|AIM FOR THE TRACKS| +08::01::2022 06:20:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:20:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:20:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:20:40|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:20:40|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 06:20:40|I HATE THE ANTICHRIST| +08::01::2022 06:20:41|WE"LL GIVE THE HERO THREE TIMES THREE| +08::01::2022 06:20:42|AMERILARDS CANT EVEN WALK 5M| +08::01::2022 06:20:44|I HATE THE ANTICHRIST| +08::01::2022 06:20:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:20:45|ABBERWOCK +08::01::2022 06:20:46|hat? +08::01::2022 06:20:47|Johnny got his gun| +08::01::2022 06:20:48|????????????????????????? +08::01::2022 06:20:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:20:49|I HATE THE ANTICHRIST| +08::01::2022 06:20:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:20:50|I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +08::01::2022 06:20:51|??????????????????????????????????????????? +08::01::2022 06:20:52|JUST LET IT RUN UNTIL ENGINE DOWN| +08::01::2022 06:20:52|Bandersnatch ??????????????| +08::01::2022 06:20:53|I HATE THE ANTICHRIST| +08::01::2022 06:20:55|Kek Rosehip| +08::01::2022 06:20:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:20:56|I HATE THE ANTICHRIST| +08::01::2022 06:20:56|>it looks like this thing that isn't real| +08::01::2022 06:20:57|ITS HUGE| +08::01::2022 06:20:57|INO +08::01::2022 06:20:59|I HATE THE ANTICHRIST| +08::01::2022 06:20:59|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:21:00|EKAI +08::01::2022 06:21:01|I HATE THE ANTICHRIST| +08::01::2022 06:21:03|CHRIST IS KING| +08::01::2022 06:21:03|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:21:05|(((((((UN)))))))) +08::01::2022 06:21:06|Darjeeling's snatch.........| +08::01::2022 06:21:07|I HATE THE ANTICHRIST| +08::01::2022 06:21:08|I'm not that big come on| +08::01::2022 06:21:09|I'd band er snatch| +08::01::2022 06:21:14|God, I love Rosehippu...| +08::01::2022 06:21:14|HE IS THAT BIG| +08::01::2022 06:21:16|EGUMI +08::01::2022 06:21:18|amerilates +08::01::2022 06:21:19|I love the antichrist| +08::01::2022 06:21:21|FOR YOU| +08::01::2022 06:21:24|KORE MO SAKUSEN DA| +08::01::2022 06:21:29|subtext subtext subtext subtext subtext| +08::01::2022 06:21:32|TINY KATYUSHA HANDS UOOOOOOOH| +08::01::2022 06:21:32|RIKA +08::01::2022 06:21:34|TOP TEXT| +08::01::2022 06:21:35|APPY +08::01::2022 06:21:36|smiling erika| +08::01::2022 06:21:36|AI +08::01::2022 06:21:38|GO ERIKA GO| +08::01::2022 06:21:39|HAPPI ERIKA ;DDDDDD| +08::01::2022 06:21:40|RIKA!!!!! +08::01::2022 06:21:41|YURI TEXT| +08::01::2022 06:21:44|I LOVE ERIKA| +08::01::2022 06:21:44|ERIKA DO SOMETHING| +08::01::2022 06:21:46|how come Americans always show up late?| +08::01::2022 06:21:48|HAPPY ERIKA| +08::01::2022 06:21:49|Erika mega simp| +08::01::2022 06:21:51|ANI +08::01::2022 06:21:52|my maho wife| +08::01::2022 06:21:52|fuggg u chafi :-DD| +08::01::2022 06:21:55|mutrs are lazy and dumb| +08::01::2022 06:21:58|they're hiding in the ducks...| +08::01::2022 06:22:00|OH BOY FUN LAND HERE WE GO| +08::01::2022 06:22:02|Impregnate Erika| +08::01::2022 06:22:02|ST +08::01::2022 06:22:07|BEST BGM| +08::01::2022 06:22:07|they're eating chicken and drinking cola| +08::01::2022 06:22:08|Pershing getting BTFO'ed| +08::01::2022 06:22:08|THEY COULD BE COMING FRAM ALL SIDES| +08::01::2022 06:22:08|HAHAHA TIME FOR KINO| +08::01::2022 06:22:09|Tactical ducks!| +08::01::2022 06:22:09|Now that's how you Charge. | +08::01::2022 06:22:10|ANZAI +08::01::2022 06:22:11|Erika loves it when Maho acknowledges her | +08::01::2022 06:22:14|Drum ost| +08::01::2022 06:22:16|what sort of totsugeki is this| +08::01::2022 06:22:17|VERY SNEAKY| +08::01::2022 06:22:18|THEYRE SITTING DUCKS| +08::01::2022 06:22:19|even more kino coming up| +08::01::2022 06:22:20|inally +08::01::2022 06:22:21|SURPRISE MOTHAFUCKA| +08::01::2022 06:22:22|Time to die American dog| +08::01::2022 06:22:22|THEY'RE EVERYWHERE| +08::01::2022 06:22:23|WHO HERE ::OLD JAPANESE KINO::| +08::01::2022 06:22:24|when the ducks start speaking japanese| +08::01::2022 06:22:24|Who doesn't love Disney Land where the ducks got guns?| +08::01::2022 06:22:25|DONG DONG - DONG DONG - OOOOOOOOHHHHHHHHHHH| +08::01::2022 06:22:26|HHHHHHHH???? +08::01::2022 06:22:26|how is this totsugeki| +08::01::2022 06:22:27|GUERILLA WARFARE| +08::01::2022 06:22:28|the water is speaking japanese...| +08::01::2022 06:22:29|mesugaki tanks...| +08::01::2022 06:22:31|OTSUGEKI +08::01::2022 06:22:35|TENNO HEIKA BANZAIIIII!!!!!!!!!!!!| +08::01::2022 06:22:36|OTSUGEKI +08::01::2022 06:22:36|NORE +08::01::2022 06:22:37|NOREEE +08::01::2022 06:22:38|NOREEEEEEE +08::01::2022 06:22:39|ip +08::01::2022 06:22:39|>They survive| +08::01::2022 06:22:41|WELCOME OT THE RICEFIELDS MOTHERFUCKER| +08::01::2022 06:22:48|kuso... kono mesugakira...| +08::01::2022 06:22:48|TOTSUGEKIS IN THE TREES TOTSUGEKIS IN THE TREES| +08::01::2022 06:22:52|>the water is speaking japanese| +08::01::2022 06:22:54|"THERE WASNT SUPPOSED TO BE ANY RESISTANCE"| +08::01::2022 06:22:54|I THINK CHAFFEE SUCKS| +08::01::2022 06:22:56|GO HOME GI| +08::01::2022 06:23:02|But all of them speak japanese | +08::01::2022 06:23:06|Mada mada| +08::01::2022 06:23:08|sitting ducks| +08::01::2022 06:23:08|LZ IS NOT CLEAR| +08::01::2022 06:23:09|akarimasu +08::01::2022 06:23:11|STEALTH TOTSUGEKI| +08::01::2022 06:23:13|EVEN THE JAPANESE ARE SPEAKING JAPANESE| +08::01::2022 06:23:15|UCKS +08::01::2022 06:23:22|where did they get the balloons?| +08::01::2022 06:23:22|Extreme retardation at work| +08::01::2022 06:23:25|NTER +08::01::2022 06:23:29|NTER +08::01::2022 06:23:29|FUCKING BAKAS| +08::01::2022 06:23:29|fucking retards| +08::01::2022 06:23:32|NTER +08::01::2022 06:23:33|TE +08::01::2022 06:23:34|>no compass| +08::01::2022 06:23:37|Novelty tank turret sized balloons | +08::01::2022 06:23:38|WHICH WAY IS THE SUN?| +08::01::2022 06:23:44|>buffering every fucking second| +08::01::2022 06:23:46|stealth never works| +08::01::2022 06:23:48|UTE +08::01::2022 06:23:55|not that much buffering here| +08::01::2022 06:23:57|I love that they throw shade at the IJA. | +08::01::2022 06:24:00|restart your browser or something| +08::01::2022 06:24:00|when kino?| +08::01::2022 06:24:00|Sun Tzu said: Cunny makes you stronger.| +08::01::2022 06:24:01|not quite cologne| +08::01::2022 06:24:04|WHY always BUFFERING| +08::01::2022 06:24:05|DDDDDDDDDDDDDDDDDD +08::01::2022 06:24:06|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:24:08|DDDDDDDDDDDDDDDDDD +08::01::2022 06:24:09|D +08::01::2022 06:24:09|not buffering here| +08::01::2022 06:24:10|GABADDE :DDDDD| +08::01::2022 06:24:10|DDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:24:10|DDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:24:10|DDDDDDDDDDDDDDDD +08::01::2022 06:24:11|DDDDDDDDDDDD +08::01::2022 06:24:12|-DDDDD +08::01::2022 06:24:13|enis +08::01::2022 06:24:14|DDDDDDDDDDDDDDDDDD +08::01::2022 06:24:14|Just get internet lmao| +08::01::2022 06:24:14|DDDDDDDDDDDDDDDDDDDD +08::01::2022 06:24:15|HER IMOUTO| +08::01::2022 06:24:16|RÖÖÖH +08::01::2022 06:24:18|DDDDDDDDDDDDDDD +08::01::2022 06:24:18|why is mikko driving the recovery boat| +08::01::2022 06:24:18|RAPPED +08::01::2022 06:24:23|POINY YO| +08::01::2022 06:24:25|Finn status = binned| +08::01::2022 06:24:25|ITS A TRAP| +08::01::2022 06:24:26|dame da| +08::01::2022 06:24:27|OCKETHUB +08::01::2022 06:24:30|quick everyone, into the death trap| +08::01::2022 06:24:30|ABEEEE +08::01::2022 06:24:35|ai yo| +08::01::2022 06:24:36|how do i get 3d duce model?| +08::01::2022 06:24:36|KINO INC.| +08::01::2022 06:24:41|HERE COMES THE WHEEL| +08::01::2022 06:24:42|utterfly +08::01::2022 06:24:43|TIME FOR FERRIS WHEEL KINO| +08::01::2022 06:24:45|AAAAAAAAAAAAAAAAAA +08::01::2022 06:24:49|CUTE DUCK TANKS| +08::01::2022 06:24:51|follow a tutorial and make one yourself| +08::01::2022 06:24:52|saki saves the day| +08::01::2022 06:24:52|ON MY POSITION| +08::01::2022 06:24:53|did someone call for KINO???| +08::01::2022 06:24:54|OTSUGEKI +08::01::2022 06:24:54|OTSUGEKI! +08::01::2022 06:24:55|OTSUGEKI +08::01::2022 06:24:55|ITS OVER OOARAI BROS| +08::01::2022 06:24:55|Berris | +08::01::2022 06:24:55|OOOOOOOOHHHHHHHHHHHHHHHHHH +08::01::2022 06:24:56|AKAS +08::01::2022 06:24:57|DIOTS +08::01::2022 06:24:58|OTSUGEKI +08::01::2022 06:24:59|Japs +08::01::2022 06:24:59|AAAAAAAAAA AW UOOWOWWOO| +08::01::2022 06:25:01|OHHHHHHHHHHHHHHHHH +08::01::2022 06:25:02|akas +08::01::2022 06:25:02|Rip tracks| +08::01::2022 06:25:02|BERRIS :DDDDDDD| +08::01::2022 06:25:03|OTSUGEKIDIOTS +08::01::2022 06:25:04|\o:: BANZAI| +08::01::2022 06:25:04|WE HAVE YOU SURROUNDED COME OUT AND TAKE YOUR MEDS| +08::01::2022 06:25:04|I SHOUDLVE BOUGHT MEXT COIN| +08::01::2022 06:25:05|OOOOHHHHHHHHHHHH +08::01::2022 06:25:06|I think this is it...| +08::01::2022 06:25:08|Benis Bheel :DDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:25:10|NTER] +08::01::2022 06:25:11|BIG BOY COMIN THROUGH| +08::01::2022 06:25:12|nice job retards| +08::01::2022 06:25:14|HOW DO THEY SURVIVE THIS?| +08::01::2022 06:25:15|ENTER, THE WHEEL| +08::01::2022 06:25:15|Why'd they all go there?| +08::01::2022 06:25:17|YOU WILL LOVE THE (((UN)))| +08::01::2022 06:25:17|I HATE THE ANTICHRIST| +08::01::2022 06:25:19|I HATE THE ANTICHRIST| +08::01::2022 06:25:20|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:25:20|tsar tank| +08::01::2022 06:25:20|Senshado prodigy Saki-chan saves the day| +08::01::2022 06:25:22|HIMADA +08::01::2022 06:25:22|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:25:24|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 06:25:24|utterfly +08::01::2022 06:25:24|OTSUGEKI +08::01::2022 06:25:25|ZUSA +08::01::2022 06:25:27|WE’VE GIT YOU SURROUNDED| +08::01::2022 06:25:27|UTTERFLY +08::01::2022 06:25:28|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 06:25:29|YOU WILL LOVE THE (((ANTICHRIST)))| +08::01::2022 06:25:29|AKI! +08::01::2022 06:25:29|otsugeki! +08::01::2022 06:25:30|houchou +08::01::2022 06:25:30|utterfry +08::01::2022 06:25:31|OTSUGEKI +08::01::2022 06:25:31|I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +08::01::2022 06:25:32|anransha... +08::01::2022 06:25:32|Actually, the anti-christ isn't so bad.| +08::01::2022 06:25:32|FUCKING SAKI| +08::01::2022 06:25:33|HOUCHOU +08::01::2022 06:25:33|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 06:25:33|Genius strikes again| +08::01::2022 06:25:35|BASED PSYCHIC| +08::01::2022 06:25:35|AKI +08::01::2022 06:25:35|Saki, the prodegy | +08::01::2022 06:25:36|Alice is so sexy| +08::01::2022 06:25:36|I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +08::01::2022 06:25:37| +08::01::2022 06:25:37|LEAVE IT SAKI| +08::01::2022 06:25:37|HaT +08::01::2022 06:25:39|KINO TIME| +08::01::2022 06:25:40|CHOU CHOU| +08::01::2022 06:25:41|OOKA +08::01::2022 06:25:41|TACTICAL GENIUS| +08::01::2022 06:25:42|THE FERRIS WHEEL| +08::01::2022 06:25:43|FERRIS WHEEL| +08::01::2022 06:25:44|OOOKA +08::01::2022 06:25:45|999 I| +08::01::2022 06:25:47|Even MORE kino | +08::01::2022 06:25:49|The plan| +08::01::2022 06:25:50|And people don't think that that Asuza can't lead them to victory next match| +08::01::2022 06:25:51|THE ABSOLUTE MADLOLIS| +08::01::2022 06:25:51|BULLSHIT INCOMING| +08::01::2022 06:25:52|SAKI SMART| +08::01::2022 06:25:53|GATA GOTO| +08::01::2022 06:25:54|OSH +08::01::2022 06:25:55|YOU WILL EAT THE BUGS, LIVE IN THE POD, CLOSE THE SCHOOL| +08::01::2022 06:25:55|imagine the M3 hitting something| +08::01::2022 06:25:56|941 +08::01::2022 06:25:56|Rabbit is the strongest | +08::01::2022 06:25:56|HEAD +08::01::2022 06:25:56|TACTICAL GENIUS TO RIVAL CREED| +08::01::2022 06:25:56|Butterfly too strong. 4d chess over here| +08::01::2022 06:25:57|Is she, "special"?| +08::01::2022 06:25:57|BENNIS WHEL:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:25:59|KIMAAAASU +08::01::2022 06:25:59|why are they called butterfly and not margarineflies| +08::01::2022 06:26:00|>lamo just trust in the carbon coating| +08::01::2022 06:26:01|Bros, why is Alice perfect for breeding?| +08::01::2022 06:26:02|Holy shit| +08::01::2022 06:26:02|Over 9000 iq plan| +08::01::2022 06:26:03|OOM +08::01::2022 06:26:03|BIG BRAIN| +08::01::2022 06:26:04|HEEEEEEEEEEEEEEEEEE +08::01::2022 06:26:04|BUNNY CUNNY| +08::01::2022 06:26:05|Why didn't the college team fire yet?| +08::01::2022 06:26:07|1941 reference, based ::tv:: team| +08::01::2022 06:26:07|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 06:26:07|2k iq plan| +08::01::2022 06:26:08|AAAHHHHH MY EARS| +08::01::2022 06:26:09|would that work?| +08::01::2022 06:26:11|HEEEEEEEEEEEEE +08::01::2022 06:26:11|ENSAI +08::01::2022 06:26:13|OH NO| +08::01::2022 06:26:14|>oh noooooo| +08::01::2022 06:26:15|HAHAHAHAHAHAHAHAHA GOD I LOVE DER FILM SO GODDAMN MUCH| +08::01::2022 06:26:15|DRIVE TO THE SIDE NOT WITH IT| +08::01::2022 06:26:16|THE ANTICHRIST FEARS THE WHEEL| +08::01::2022 06:26:17|IGEROOOOOOOOOOOOOOO +08::01::2022 06:26:21|RUN AWAY| +08::01::2022 06:26:21|HIGH IQ| +08::01::2022 06:26:22|>rolls the wrong way| +08::01::2022 06:26:24|BLUE HELMETS BTFO| +08::01::2022 06:26:24|>I AM A GENIUS! >OH NO| +08::01::2022 06:26:25|>not retarded| +08::01::2022 06:26:25|ETARDED +08::01::2022 06:26:27|2000 IQ| +08::01::2022 06:26:30|ART +08::01::2022 06:26:30|THE JEW FEARS THE FERRIS WHEEL| +08::01::2022 06:26:31|NTER +08::01::2022 06:26:33|ferris wheel btfos antichrist| +08::01::2022 06:26:34|HAHAHAHAHAHAHAHAHA +08::01::2022 06:26:34|Prometheus (2012)| +08::01::2022 06:26:36|smurfs didn't see this one coming| +08::01::2022 06:26:38|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:26:39|No brakes| +08::01::2022 06:26:40|AO +08::01::2022 06:26:41|Shoot first. Butterfly later. Always works.| +08::01::2022 06:26:41|ANJANDRUM +08::01::2022 06:26:42|AO +08::01::2022 06:26:42|OW +08::01::2022 06:26:42|Based Rosehip immediately shoots at it| +08::01::2022 06:26:42|OW +08::01::2022 06:26:43|OW +08::01::2022 06:26:43|OW +08::01::2022 06:26:43|OW +08::01::2022 06:26:43|OW +08::01::2022 06:26:43|ow! +08::01::2022 06:26:44|AO +08::01::2022 06:26:44|ow~ +08::01::2022 06:26:45|UN GLOBOHOMO TEAM BTFO| +08::01::2022 06:26:45|EVASIVE MANUEVERS AGAINST THIS WHEEL| +08::01::2022 06:26:45|WHEEL > TANKS| +08::01::2022 06:26:46|RÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +08::01::2022 06:26:46|AO\ +08::01::2022 06:26:47|Attempted mass murder| +08::01::2022 06:26:47|OW~ +08::01::2022 06:26:48|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 06:26:49|AOO +08::01::2022 06:26:50|rosehip +08::01::2022 06:26:50|STOP SHOOTING IT ROSEHIP| +08::01::2022 06:26:51|>shooting the ferris wheel| +08::01::2022 06:26:52|ANTICHRIST BROS WE GOT TOO COCKY| +08::01::2022 06:26:54|OW +08::01::2022 06:26:55|why tank run from that thing| +08::01::2022 06:26:55|what they doin'| +08::01::2022 06:26:55|ROSEHIP IT'S OURS| +08::01::2022 06:26:56|rosehip +08::01::2022 06:26:57|SHOOT THAT FAIRY WHEEL| +08::01::2022 06:27:00|TEEEE +08::01::2022 06:27:00|FERRIS WHEEL WUNDER WAFFLE| +08::01::2022 06:27:03|DESU WA| +08::01::2022 06:27:04|bakahip shoots first, asks questions later| +08::01::2022 06:27:04|thanks for the help rosehip| +08::01::2022 06:27:07|REVENGE FOR BOSNIA| +08::01::2022 06:27:07|SHOOT IT DOWN| +08::01::2022 06:27:08|die wheel die| +08::01::2022 06:27:08|>shooting it| +08::01::2022 06:27:10|THE ANTICHRIST LIVETH IN FEAR, FOR HE KNOWS THE FERRIS WHEEL COMETH| +08::01::2022 06:27:10|WHY ARE YOU SHOOTING AT THE FERRIS WHEEL| +08::01::2022 06:27:11|WHY DOES THE FERRIS WHEEL HAVE TRACKING| +08::01::2022 06:27:14|based sharpshooter| +08::01::2022 06:27:16|Based sonnenrad ferrisweel crushinf the jewery and the antichrist| +08::01::2022 06:27:18|Hitler wouldv'e won if he built a couple of these| +08::01::2022 06:27:21|why you hsoot| +08::01::2022 06:27:22|>shooting the plot ferris wheel| +08::01::2022 06:27:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:27:24|ENTER THE TSAR TANK| +08::01::2022 06:27:25|DUCE GPS| +08::01::2022 06:27:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:27:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:27:27|UFFERING +08::01::2022 06:27:31|UFFFFFFFFFFFFFFERING +08::01::2022 06:27:35|DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:27:35|FERRIS-SAN MVP!| +08::01::2022 06:27:37|_;7 +08::01::2022 06:27:38|>buffering on kino| +08::01::2022 06:27:39| +08::01::2022 06:27:40|-U +08::01::2022 06:27:40|7 +08::01::2022 06:27:40|_; +08::01::2022 06:27:40|see yuu| +08::01::2022 06:27:40|_;7 +08::01::2022 06:27:40|SEE YOU| +08::01::2022 06:27:41|RIP Ferris-chan| +08::01::2022 06:27:42|C U| +08::01::2022 06:27:42|C U| +08::01::2022 06:27:42|DAMN ANTICHRISTS| +08::01::2022 06:27:43|SAVE FERRIS!| +08::01::2022 06:27:43|7 +08::01::2022 06:27:44|7 +08::01::2022 06:27:44|Goodbye ferris-chan| +08::01::2022 06:27:44|7 +08::01::2022 06:27:45|_;7 +08::01::2022 06:27:47|BYE FERRIS-CHAN O7| +08::01::2022 06:27:47|_;7 +08::01::2022 06:27:48|NY +08::01::2022 06:27:48|FERRIS REAL MVP| +08::01::2022 06:27:49|_;7 +08::01::2022 06:27:50|7 +08::01::2022 06:27:52|WHAT DOES THE HEAVY KILLER MANUAL SAY| +08::01::2022 06:27:53|IP +08::01::2022 06:27:56|HINGY +08::01::2022 06:27:57|ZUSA +08::01::2022 06:27:58|uT +08::01::2022 06:27:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:27:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:27:59|Bai kan chan| +08::01::2022 06:28:00|CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +08::01::2022 06:28:01|azusa sugou| +08::01::2022 06:28:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:28:04|just kill the heavy tank man do it| +08::01::2022 06:28:11|dvce dvce dvce| +08::01::2022 06:28:12|KAT CHAN| +08::01::2022 06:28:12|acchan +08::01::2022 06:28:14|Azusa is too cute when she's thinking| +08::01::2022 06:28:14|AT-CHAN +08::01::2022 06:28:17|AT-CHAN +08::01::2022 06:28:18|ATCHAN +08::01::2022 06:28:18|kat chan| +08::01::2022 06:28:19|at-chan~ +08::01::2022 06:28:19|KAT CHAN| +08::01::2022 06:28:19|ratchan +08::01::2022 06:28:21|kat chan| +08::01::2022 06:28:23|UTE +08::01::2022 06:28:24|Pyo | +08::01::2022 06:28:26|AT-CHAN! +08::01::2022 06:28:29|"katy" in the dub btw| +08::01::2022 06:28:30|Mechanic team and nerd team| +08::01::2022 06:28:33|CUTE DUCKS| +08::01::2022 06:28:33|cute hats| +08::01::2022 06:28:34|onaji chiimu da nya~| +08::01::2022 06:28:39|DUCK DONO| +08::01::2022 06:28:42|duck gang| +08::01::2022 06:28:43|HOMAS +08::01::2022 06:28:44|HOMAS +08::01::2022 06:28:44|UCKS +08::01::2022 06:28:45|Duck squad!| +08::01::2022 06:28:46|THOMAS THE TANK| +08::01::2022 06:28:46|is that Thomas the Tank?| +08::01::2022 06:28:47|Enter, THOMAS| +08::01::2022 06:28:47|thomas the tank engine| +08::01::2022 06:28:48|etzer +08::01::2022 06:28:48|HOMAS +08::01::2022 06:28:48|-thomas? +08::01::2022 06:28:49|I'm going blind, what do?| +08::01::2022 06:28:50|tf +08::01::2022 06:28:52|aiai +08::01::2022 06:28:52|Thomas the nightmare engine...| +08::01::2022 06:28:53|DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK | +08::01::2022 06:28:55|duck fuck| +08::01::2022 06:28:55|>miho gets decapitated by arch| +08::01::2022 06:28:55|ONK +08::01::2022 06:28:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:29:00|ST +08::01::2022 06:29:00|homas +08::01::2022 06:29:00|wowowoowowowo +08::01::2022 06:29:01|>thomas the tank engine| +08::01::2022 06:29:01|BIG PASTA BRAIN| +08::01::2022 06:29:01|WAWAWa +08::01::2022 06:29:04|Based Stug| +08::01::2022 06:29:05|Based trickery | +08::01::2022 06:29:05|this town ain't big enough for the boffa us| +08::01::2022 06:29:06|WOWOWOWOWOWWO +08::01::2022 06:29:06|Oh hey its dikon war| +08::01::2022 06:29:07|WILD WEST| +08::01::2022 06:29:08|OWDY +08::01::2022 06:29:08|WAWAWAWAWAWAWAWAWA +08::01::2022 06:29:08|dvce dvce| +08::01::2022 06:29:09|WAWWAWAWAWAWAW +08::01::2022 06:29:09|LALALLALALALALALALALA +08::01::2022 06:29:09|WAWAWAAWAWAAWAAWAAWAWA +08::01::2022 06:29:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:29:10|WOWOWOWO +08::01::2022 06:29:10|WOWOWOWOWOWOWOWOW +08::01::2022 06:29:10|AWAWAWAWA +08::01::2022 06:29:11|Daikon war already?| +08::01::2022 06:29:11|INO +08::01::2022 06:29:12|WAWAWAWAWAWAWAWA +08::01::2022 06:29:12|DATS RACIST| +08::01::2022 06:29:13|WAWAWAWA +08::01::2022 06:29:14|wawawawa +08::01::2022 06:29:14|EK +08::01::2022 06:29:15|daikon sounds'| +08::01::2022 06:29:16|WWWWWWWWWWWW +08::01::2022 06:29:20|DAS RACIST| +08::01::2022 06:29:20|WILD WEST ANIME GIRL TANK WARFARE| +08::01::2022 06:29:21|YAYA +08::01::2022 06:29:22|They fell for it!| +08::01::2022 06:29:23|>falling for it twice| +08::01::2022 06:29:26|WELCOME TO THE DAICON FIELDS MOTHER FUCKER| +08::01::2022 06:29:28|ERONIMO +08::01::2022 06:29:29|They fucking love westerns| +08::01::2022 06:29:30|they cant keep getting away with it| +08::01::2022 06:29:30|ERONIMO +08::01::2022 06:29:32|ERONIMO +08::01::2022 06:29:32|IS THIS FORESHADOWING?!?!| +08::01::2022 06:29:33|ERONIMO +08::01::2022 06:29:39|daikon was ass| +08::01::2022 06:29:40|Oh shit it’s daikon war| +08::01::2022 06:29:41|GIRLS UND ::FIT::| +08::01::2022 06:29:42|INO +08::01::2022 06:29:44|DAS FINALE 3 OVA SPOILERS| +08::01::2022 06:29:46|OWER +08::01::2022 06:29:46|INO +08::01::2022 06:29:48|Daikon had ass| +08::01::2022 06:29:48|TRONK +08::01::2022 06:29:50|FUCKING HUGE| +08::01::2022 06:29:50|IT +08::01::2022 06:29:50|ONE HANDED| +08::01::2022 06:29:52|::fit:: gains| +08::01::2022 06:29:53|SPEED MOMENTUM VIOLENCE| +08::01::2022 06:29:53|Swole gamers| +08::01::2022 06:29:54|magnificent seven theme| +08::01::2022 06:29:54|WOLE +08::01::2022 06:29:55|Stronk gamers| +08::01::2022 06:29:55|REMINDER: The StuGIII Crew are my wives.| +08::01::2022 06:29:55|POWER KINO| +08::01::2022 06:29:56|888888 +08::01::2022 06:29:56|INO +08::01::2022 06:29:56|ERONIMO +08::01::2022 06:29:57|IF I HAD A NICKE FOR EVERY TIME GUP DID A WESTERN PARODY I'D HAVE TWO NICKLES.| +08::01::2022 06:29:57|FIT:: +08::01::2022 06:29:58|cute arm on that one| +08::01::2022 06:30:00|STONK NERDS| +08::01::2022 06:30:00|Just a few daikon more| +08::01::2022 06:30:03|F1 +08::01::2022 06:30:04|wall hacks incoming| +08::01::2022 06:30:10|a fistful of daicon| +08::01::2022 06:30:12|ducks and pig| +08::01::2022 06:30:15|maze...as in bc freedom maze?????| +08::01::2022 06:30:15|best BGM| +08::01::2022 06:30:15|they fucking killed captain america| +08::01::2022 06:30:17|Maze is based| +08::01::2022 06:30:21|cute duck| +08::01::2022 06:30:22|Just drive through the maze| +08::01::2022 06:30:26|ENTER DUCKS| +08::01::2022 06:30:28|>Tom Nook| +08::01::2022 06:30:30|You're a tank| +08::01::2022 06:30:32|4H30 TO GO, LADS!| +08::01::2022 06:30:33|Nice shot| +08::01::2022 06:30:34|HIMATTA +08::01::2022 06:30:35|Why not just drive through the shrubbery?| +08::01::2022 06:30:36|these binks| +08::01::2022 06:30:39|TENNO HEIKA BANZAI \o::| +08::01::2022 06:30:42|lol Tom nook, never noticed that| +08::01::2022 06:30:46|>shit tanks| +08::01::2022 06:30:46|RICKED +08::01::2022 06:30:47|duck rape| +08::01::2022 06:30:48|buffering +08::01::2022 06:30:52|FOR THE EMPEROR!!!| +08::01::2022 06:30:53|shot trap| +08::01::2022 06:30:55|How can they even see| +08::01::2022 06:31:02|driver hatch| +08::01::2022 06:31:02|The ducks are blocking the periscopes | +08::01::2022 06:31:02|UTS +08::01::2022 06:31:03|muh dick| +08::01::2022 06:31:05|unny.... +08::01::2022 06:31:07|More pushing| +08::01::2022 06:31:08|UTS! +08::01::2022 06:31:08|HIROHITO SAMA| +08::01::2022 06:31:10|UUTS +08::01::2022 06:31:11|ANKZURI +08::01::2022 06:31:11|COCK BLOCKED| +08::01::2022 06:31:12|UTS +08::01::2022 06:31:12|tittyfuck +08::01::2022 06:31:13|UTS! +08::01::2022 06:31:13|tank paizuri| +08::01::2022 06:31:15|duck duck duck| +08::01::2022 06:31:15|UUUUUUTS!!!!! +08::01::2022 06:31:16|incer +08::01::2022 06:31:16|god I wish that was me| +08::01::2022 06:31:18|i watch for the plot| +08::01::2022 06:31:20|fun fact, ducks have corkscrew penises| +08::01::2022 06:31:22|NICE FIGHT| +08::01::2022 06:31:22|ATTE +08::01::2022 06:31:23|aze +08::01::2022 06:31:24|eh +08::01::2022 06:31:25|ATTE! +08::01::2022 06:31:26|uacked +08::01::2022 06:31:28|I love the ducks bros| +08::01::2022 06:31:31|i need to see now| +08::01::2022 06:31:33|classic blunder| +08::01::2022 06:31:34|NAISU FAITO| +08::01::2022 06:31:38|ACK +08::01::2022 06:31:39|UACKED +08::01::2022 06:31:43|UMI +08::01::2022 06:31:47|rumi | +08::01::2022 06:31:52|AKAWAKAWAKA +08::01::2022 06:31:55|panzer hurrrrr| +08::01::2022 06:31:55|MIHO STANCE| +08::01::2022 06:31:57|Chafee you fucking idiot| +08::01::2022 06:31:58|NO I WILL NOT DRINK THE CORN SYRUP| +08::01::2022 06:32:02|YOU BLOCKHEAD| +08::01::2022 06:32:07|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:32:09|>IMAGINE LOSING TO A MAZE| +08::01::2022 06:32:11|do the 3 umis even have different personalities if personality at all?| +08::01::2022 06:32:12|let's go, friendly fire | +08::01::2022 06:32:12|RUMI BUTT| +08::01::2022 06:32:13|AKAWAKAWAKAWAKA +08::01::2022 06:32:14|It's a hedgemaze| +08::01::2022 06:32:15|Do you WANT to fall off?| +08::01::2022 06:32:17|>filtered to a maze| +08::01::2022 06:32:20|tfo +08::01::2022 06:32:21|newtypes +08::01::2022 06:32:22|>not lighting up the bushes with tracers| +08::01::2022 06:32:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:32:23|AZE'D +08::01::2022 06:32:24|lmao eat shit| +08::01::2022 06:32:25|lol lmao| +08::01::2022 06:32:25|DVCE GUARDIAN ANGEL | +08::01::2022 06:32:25|ALLHAX +08::01::2022 06:32:27|COMPLETELY HIDDEN| +08::01::2022 06:32:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:32:28|Oh right its just bushes lmao| +08::01::2022 06:32:28|IMAGINE LOSING TO HIGHSCHOOLERS| +08::01::2022 06:32:29|RISU +08::01::2022 06:32:30|vce +08::01::2022 06:32:30|GANBARE BOKO| +08::01::2022 06:32:31|UCE +08::01::2022 06:32:31|ALLHACK +08::01::2022 06:32:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:32|UCE +08::01::2022 06:32:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:33|UCE +08::01::2022 06:32:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:34|Imagine losing to Duce spotting| +08::01::2022 06:32:34|UCE +08::01::2022 06:32:34|nzu +08::01::2022 06:32:35|NO ONE WILL EVER SEE THEM| +08::01::2022 06:32:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:32:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:32:37|NTER +08::01::2022 06:32:37|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:32:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:38|BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +08::01::2022 06:32:38|OOOOOOOOOOOOOOOOOOOOH +08::01::2022 06:32:39|DUCE DUCE DUCE| +08::01::2022 06:32:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:40|DUCE DUCE DUCE DUCE| +08::01::2022 06:32:40|BOKO TIME| +08::01::2022 06:32:40|Not enough pasta for Duce diabetes| +08::01::2022 06:32:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:42|DUCE DUCE DUCE| +08::01::2022 06:32:43|ANBARE +08::01::2022 06:32:44|BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +08::01::2022 06:32:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:32:46|oko! +08::01::2022 06:32:47|OKO +08::01::2022 06:32:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:32:47|FUCK EM UP BOKO!| +08::01::2022 06:32:48|GANBARE BOKO| +08::01::2022 06:32:49|UOOOOOOOOOOOOOOOOH UOOOOOOOOOOOOOH| +08::01::2022 06:32:49|oh no boko autism| +08::01::2022 06:32:50|UTE +08::01::2022 06:32:50|>Alice talking to her doll| +08::01::2022 06:32:51|YATTE ARU YATTE ARU YATTE ARU ZE| +08::01::2022 06:32:51|UTISM +08::01::2022 06:32:52|was it autism?| +08::01::2022 06:32:52|UTE +08::01::2022 06:32:52|UTISM +08::01::2022 06:32:53|NTER +08::01::2022 06:32:53|INOKINOKINO +08::01::2022 06:32:53|OKO?! +08::01::2022 06:32:53|BOKO WAR CRY| +08::01::2022 06:32:53|FUCK EM BOKO | +08::01::2022 06:32:55|utism +08::01::2022 06:32:55|KICK THEIR ASS BOKO| +08::01::2022 06:32:56|oh no ooarai bros| +08::01::2022 06:32:56|OOOOOOOOOOOOOH +08::01::2022 06:32:56|UTISM +08::01::2022 06:32:56|BOKO BOKO| +08::01::2022 06:32:56|DUCE SPOTTING LIKE ITS BATTLEFIELD| +08::01::2022 06:32:57|OKO +08::01::2022 06:32:57|BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +08::01::2022 06:32:57|NTER +08::01::2022 06:32:57|YATTE YARO| +08::01::2022 06:32:59|>loli about to get boko'd| +08::01::2022 06:32:59|GETTEM BOKO!| +08::01::2022 06:33:00|YOU CAN THIS| +08::01::2022 06:33:00|utism +08::01::2022 06:33:00|BOKO WILL LEAD US| +08::01::2022 06:33:01|utism +08::01::2022 06:33:01|>singing over the mic| +08::01::2022 06:33:01|CUNNY AUTISM| +08::01::2022 06:33:01|YATTE YARU| +08::01::2022 06:33:02|THE WAR CRY OF MY PEOPLE| +08::01::2022 06:33:03|Boko song| +08::01::2022 06:33:03|cute arisu| +08::01::2022 06:33:03|utism +08::01::2022 06:33:03|UTISM +08::01::2022 06:33:03|YATTE YARU!| +08::01::2022 06:33:03|OOOOOOOOOOOOOH +08::01::2022 06:33:04|YATTE YATTE YARO| +08::01::2022 06:33:04|FUCK THE ENTRANCE| +08::01::2022 06:33:06|WE'RE REACHING LEVELS OF AUTISM THAT WE NEVER THOUGH POSSIBLE| +08::01::2022 06:33:06|YOU CAN THIS BOKO| +08::01::2022 06:33:06|LETS GO BOKOOO| +08::01::2022 06:33:06|AAAAAAAAAAAAAA +08::01::2022 06:33:07|Crusader KINO| +08::01::2022 06:33:07|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:33:10|Oh no, the disabled bear is coming to the rescue| +08::01::2022 06:33:11|OOOOOOOOOOOOOH +08::01::2022 06:33:12|Alice's is gonna have some severe back pain from carrying these shitters.| +08::01::2022 06:33:13|GET READY TO GET BOKOED| +08::01::2022 06:33:13| +08::01::2022 06:33:14|onk +08::01::2022 06:33:14|BOKO ANTHEM| +08::01::2022 06:33:15|ASAKA +08::01::2022 06:33:15|FAT SHAMED| +08::01::2022 06:33:15|FUCK EM UP BOKO| +08::01::2022 06:33:15|AAAAAAAAAAAA +08::01::2022 06:33:16|THUNDERBOLT GUNDAM| +08::01::2022 06:33:16|ITS FUCKING TIME FOR MORE KNIO LADS| +08::01::2022 06:33:18|tf +08::01::2022 06:33:19|ENSHIN +08::01::2022 06:33:19|Our autistic commander left the radio keyed again.| +08::01::2022 06:33:20|Alice about to go ham| +08::01::2022 06:33:21|Quick conversion| +08::01::2022 06:33:21|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:33:21|AMERICAN ENGINEERING| +08::01::2022 06:33:22|I HATE THE ANTICHRIST| +08::01::2022 06:33:22|ino +08::01::2022 06:33:22|BITCH YOU THOUGHT| +08::01::2022 06:33:23|THEY COME OFF?| +08::01::2022 06:33:25|asaka +08::01::2022 06:33:26|NOT A THIRD TIME| +08::01::2022 06:33:29|EWD +08::01::2022 06:33:29|AZE +08::01::2022 06:33:31|rthis entrance was like sex with alice| +08::01::2022 06:33:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:33:32|INO +08::01::2022 06:33:34|VCE +08::01::2022 06:33:34|SUPERIOR AMERICAN ENGINEERING| +08::01::2022 06:33:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:42|ARETA +08::01::2022 06:33:43|oh wow| +08::01::2022 06:33:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:33:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:44|thats a bad idea| +08::01::2022 06:33:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:48|HOW DID YOU FIT A +20 TON CHAFFE UP THERE| +08::01::2022 06:33:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:49|OH SHIT| +08::01::2022 06:33:49|that's one solid rollercoaster| +08::01::2022 06:33:50|OH NO BROS DUCE WAS FOUND OUT| +08::01::2022 06:33:50|EEEEEEEEEEE +08::01::2022 06:33:50|best BGM right here| +08::01::2022 06:33:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:33:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:54|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:33:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:55|INO +08::01::2022 06:33:55|AHOOOOOOOOOOOO +08::01::2022 06:33:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:33:56|ST +08::01::2022 06:33:56|TF +08::01::2022 06:33:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:33:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:33:59|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:33:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:34:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:34:00|Burger ad in front of a Japanese place? Not obvious much| +08::01::2022 06:34:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:34:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:34:03|uce!!!!!!!!!!!!!!!!!!!!!!!! +08::01::2022 06:34:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:34:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:34:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:34:06|! BANGER ALERT !| +08::01::2022 06:34:07|WAI WAI WAI!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 06:34:07|DUCK TANKS| +08::01::2022 06:34:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:34:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:34:08|would that work?| +08::01::2022 06:34:10| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 06:34:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:34:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:34:11|Ways to die painfully.| +08::01::2022 06:34:12|TENNO HEIKA| +08::01::2022 06:34:12|this OST is so great| +08::01::2022 06:34:12|imagine being mad about tankettes| +08::01::2022 06:34:13|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 06:34:13|TEEEEEEEEEE +08::01::2022 06:34:14|ANZAI +08::01::2022 06:34:14|OTSUGEKI +08::01::2022 06:34:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:34:17|how did she win here| +08::01::2022 06:34:17|TEEEEE +08::01::2022 06:34:21|BEST DRIVER| +08::01::2022 06:34:22|Christ bros...| +08::01::2022 06:34:22|ALICE FUCKING THEM UP| +08::01::2022 06:34:23|TFO +08::01::2022 06:34:23|IMBLE +08::01::2022 06:34:24|SUGOI ALICE| +08::01::2022 06:34:24|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 06:34:24|OKO +08::01::2022 06:34:27|ITAAAAA +08::01::2022 06:34:28|UKED +08::01::2022 06:34:28|I HATE THE ANTICHRIST| +08::01::2022 06:34:31|ONMAI +08::01::2022 06:34:31|ANKFUUUUU +08::01::2022 06:34:31|UTS +08::01::2022 06:34:31|UTS +08::01::2022 06:34:33|ALICE HYPE| +08::01::2022 06:34:34|ARISU TOO STRONK| +08::01::2022 06:34:35|UUUUTS +08::01::2022 06:34:35|GUTS GUTS GUTS GUTS| +08::01::2022 06:34:35|UTS +08::01::2022 06:34:36|NICE TANK| +08::01::2022 06:34:37|>We jobbed as usual| +08::01::2022 06:34:40|5 tanks in 30 seconds fuck| +08::01::2022 06:34:40|Alice just soloing those crubs| +08::01::2022 06:34:41|KILLE EM ALL| +08::01::2022 06:34:41|ogged +08::01::2022 06:34:42|No they are gonna force me to drink the corn syrup...| +08::01::2022 06:34:42|CUNNY TOO STRONG| +08::01::2022 06:34:42|HAMEFURR +08::01::2022 06:34:45|ALICE HAS HAD ENOUGH| +08::01::2022 06:34:47|DRIVER CHAN???| +08::01::2022 06:34:48|SCRUB STOMP| +08::01::2022 06:34:49|naomi +08::01::2022 06:34:51|i haven't been to ::a:: in years explain this jobbing meme| +08::01::2022 06:34:54|ENTAKEEEEEELLLLL +08::01::2022 06:34:55|ewd... +08::01::2022 06:34:56|So THIS is the power of cunny... sugoi...| +08::01::2022 06:34:58|BASED BRITS| +08::01::2022 06:35:05|jobbing comes from wrestling| +08::01::2022 06:35:06|There's no way Darjeeling could lose| +08::01::2022 06:35:08|jobbing is crossboarder shit| +08::01::2022 06:35:08|alice isnt doing shit its the driver and gunner| +08::01::2022 06:35:09|I'VE HAD IT WITH THESE MOTHERFUCKING HIGHSCHOOLERS ON MY BATTLEFIELD| +08::01::2022 06:35:10|The crew is dead| +08::01::2022 06:35:11|ut-fucking-skilled +08::01::2022 06:35:11|Ultra instict Alice doing cleanup| +08::01::2022 06:35:13|7 +08::01::2022 06:35:13|7 +08::01::2022 06:35:14|Just shoot the side with the 17pdr you dumb fucking slag| +08::01::2022 06:35:14|RIP TEA| +08::01::2022 06:35:14|TL Note: "Jobbing" means "Jobbign"| +08::01::2022 06:35:15|ASSAM WINSLOL| +08::01::2022 06:35:15|Spank Noami Y::Y?| +08::01::2022 06:35:16|___;7 +08::01::2022 06:35:16|CARBON COATING| +08::01::2022 06:35:18|7 +08::01::2022 06:35:19|ERMUDAAAAA +08::01::2022 06:35:19|jobbing comes from ::dbs::| +08::01::2022 06:35:20|That was the fucking Operaton Flashpoint vehicle explosion sound| +08::01::2022 06:35:20|7 +08::01::2022 06:35:20|RIP bong| +08::01::2022 06:35:21|???????????????????????????? +08::01::2022 06:35:21|7 +08::01::2022 06:35:21|7 +08::01::2022 06:35:22|SLAGS DOUBLE PENETRATED| +08::01::2022 06:35:23|fucking slag| +08::01::2022 06:35:23|7 +08::01::2022 06:35:23|????????????????? +08::01::2022 06:35:24|7 +08::01::2022 06:35:24|???????? +08::01::2022 06:35:24|bye bye girl who speaks in riddles| +08::01::2022 06:35:26|DUCE NO| +08::01::2022 06:35:26|Crew killed as ammo cooked off| +08::01::2022 06:35:26|BERMUDA ATTACK| +08::01::2022 06:35:28|the data assam what does it mean???| +08::01::2022 06:35:28| 撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +08::01::2022 06:35:28|TTACKU +08::01::2022 06:35:29|how do I marry Alice?| +08::01::2022 06:35:30|SLAAAAAAAAAAAAAAAAAAAAAAG NOOOOO| +08::01::2022 06:35:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:38|OOOOOOOOOOOOOOOOO +08::01::2022 06:35:38|pekoe have you heard this saying, "i'm fucking dead"?| +08::01::2022 06:35:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:39|>tank goes up| +08::01::2022 06:35:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:39|DUCE still dodging | +08::01::2022 06:35:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:42|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 06:35:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:35:45|GO DVCE GO| +08::01::2022 06:35:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:47|EEEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 06:35:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:47|BOTH ENDS| +08::01::2022 06:35:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:48|P'D +08::01::2022 06:35:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:49|EWD +08::01::2022 06:35:52|orange pekoe you daft idiot that was my chevvy| +08::01::2022 06:35:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:53|DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:35:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:35:56|-LEWD +08::01::2022 06:35:57|RABBIT TEAM GOT 2 KILLS| +08::01::2022 06:35:57|7 +08::01::2022 06:35:58|UTISM +08::01::2022 06:35:59|_; +08::01::2022 06:36:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:36:00|BASED DUCKS| +08::01::2022 06:36:02|bunny cunnies...| +08::01::2022 06:36:02|og +08::01::2022 06:36:04|RIP CUN| +08::01::2022 06:36:05|OH N-| +08::01::2022 06:36:05|_; +08::01::2022 06:36:07|Butterfly can't save you from Boko| +08::01::2022 06:36:11|USAGIS FINALLY USEFUL| +08::01::2022 06:36:11|rip bunny cunny| +08::01::2022 06:36:12|Jobbing is originally a wrestling term, it means someone loses a fight they shouldn't::fighting poorer than they should| +08::01::2022 06:36:12|poor bunnies| +08::01::2022 06:36:15|god I wish I was Karina| +08::01::2022 06:36:15|ORIFTO +08::01::2022 06:36:17|EW +08::01::2022 06:36:17|Alice outcunnied them| +08::01::2022 06:36:18|all this fucking tank drifting lamo| +08::01::2022 06:36:18|STOP THERE| +08::01::2022 06:36:18|TRI STAR| +08::01::2022 06:36:20|RIANGLE'D +08::01::2022 06:36:20|ORIFTO +08::01::2022 06:36:22|NOREEEEEEEEE +08::01::2022 06:36:23|TRACK STILL INTACT| +08::01::2022 06:36:24|ALISA DEAD| +08::01::2022 06:36:24|ORIFTO +08::01::2022 06:36:24|NOREEEEEEE +08::01::2022 06:36:24|AMERICAN JOBBERS| +08::01::2022 06:36:25|ORIFTO +08::01::2022 06:36:25|Of course Alisa got knocked out| +08::01::2022 06:36:26|HELMET CHAN| +08::01::2022 06:36:30|GAS GAS GAS| +08::01::2022 06:36:30|uck +08::01::2022 06:36:30|NAOMI NOOOO| +08::01::2022 06:36:31|ORIFTO +08::01::2022 06:36:31|ops... +08::01::2022 06:36:32|ops +08::01::2022 06:36:32|hoops +08::01::2022 06:36:33|O +08::01::2022 06:36:33|EATH +08::01::2022 06:36:34|H? +08::01::2022 06:36:34|rifting +08::01::2022 06:36:34|saunders +08::01::2022 06:36:34|jobbing comes from bejita| +08::01::2022 06:36:35|ops +08::01::2022 06:36:35|SIMULTANIOUS DORIFTO| +08::01::2022 06:36:35|OPS +08::01::2022 06:36:35|MASH, ORTEGA. LAUNCH A JET STREAM ATTACK ON THAT SHERMAN| +08::01::2022 06:36:35|3X DRIFTO?| +08::01::2022 06:36:36|Syncronised drifting| +08::01::2022 06:36:36|OPS +08::01::2022 06:36:37|lmao outplayed| +08::01::2022 06:36:37|OPD +08::01::2022 06:36:37|OPS +08::01::2022 06:36:37|OPS +08::01::2022 06:36:37|OPS +08::01::2022 06:36:37|MULTI TANK DRIFTING| +08::01::2022 06:36:38|_;7 +08::01::2022 06:36:38|OPS +08::01::2022 06:36:38|OOOOOOPS +08::01::2022 06:36:38|ops +08::01::2022 06:36:39|oops +08::01::2022 06:36:39|fUCK THE USA 2 TOWERS WERENT ENOUGH| +08::01::2022 06:36:43|OPS +08::01::2022 06:36:44|remember >sanders from one of this faildubs?| +08::01::2022 06:36:44|BYE BYE JOBBERS| +08::01::2022 06:36:44|MURICA BTFO| +08::01::2022 06:36:46|Simultaneous drifto kino| +08::01::2022 06:36:46|ARAETA +08::01::2022 06:36:47|STRONG +08::01::2022 06:36:48|how fucking strong is she| +08::01::2022 06:36:48|Gamers too buff| +08::01::2022 06:36:49|did saunders do anything this match?| +08::01::2022 06:36:50|too stronk| +08::01::2022 06:36:50|ROSEHIP | +08::01::2022 06:36:52|PEED +08::01::2022 06:36:52|LIMITER OFF| +08::01::2022 06:36:55|Momo too strong| +08::01::2022 06:36:56|PEED +08::01::2022 06:36:56|ASTER +08::01::2022 06:36:57|NIGHT OF FIRE| +08::01::2022 06:36:57|MY WIFE, ROSEHIP| +08::01::2022 06:36:58|REMOVE MY INHIBTORS| +08::01::2022 06:36:59|OKTOR +08::01::2022 06:37:00|HEY TAXI| +08::01::2022 06:37:01|AXI +08::01::2022 06:37:02|HEI TAXIII| +08::01::2022 06:37:03|the speed limiter is gone| +08::01::2022 06:37:03|HEY TASHI| +08::01::2022 06:37:04|hey taxi| +08::01::2022 06:37:06|Fleet passings| +08::01::2022 06:37:06|so many panzers| +08::01::2022 06:37:07|BREAKING MY LIMIT| +08::01::2022 06:37:08|ORIFTO +08::01::2022 06:37:08|DOKTOR TURN OFF MY SPEED INHIBITORS| +08::01::2022 06:37:08|HEY TAKSHI| +08::01::2022 06:37:09|RELEASE MY SPEED INHIBITORS| +08::01::2022 06:37:13|I'M BURNING UP FOR YOU| +08::01::2022 06:37:14|RUKURIRI JOBBING AGAIN| +08::01::2022 06:37:15|ROSEHIP SPEED| +08::01::2022 06:37:15|there is so much shit going on at once| +08::01::2022 06:37:16|Now's the crusader kino. | +08::01::2022 06:37:16|OSUHIPU +08::01::2022 06:37:17|EALISM +08::01::2022 06:37:18|-MASAKA +08::01::2022 06:37:19|PEEEEED +08::01::2022 06:37:21|Based Rsehip| +08::01::2022 06:37:21|I WANT TO BELIEVE| +08::01::2022 06:37:21|OSEHIP +08::01::2022 06:37:23|AYAI +08::01::2022 06:37:23|less goooo rosehip| +08::01::2022 06:37:24|BASED ROSEHIP| +08::01::2022 06:37:25|speed kills| +08::01::2022 06:37:30|>Chovy will never ask for a ride and climb on your back ;__;| +08::01::2022 06:37:30|7 +08::01::2022 06:37:32|TIME FOR DUCE| +08::01::2022 06:37:33|FUCK THE RULES| +08::01::2022 06:37:33|DUCE IS JESUS| +08::01::2022 06:37:34|SODOKO WHY| +08::01::2022 06:37:34|ULES +08::01::2022 06:37:37|can tanks really carry tanks| +08::01::2022 06:37:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:37:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:37:41|LETS FUCKING GO SODOKO| +08::01::2022 06:37:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:37:42|DEJA VU| +08::01::2022 06:37:42|VCE' +08::01::2022 06:37:42|FUCK THE RULES| +08::01::2022 06:37:44|>never pens| +08::01::2022 06:37:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:37:45|SLEEP STREAM?| +08::01::2022 06:37:47|how is rosehip not dead, she gets rekt everytime| +08::01::2022 06:37:48|ONOOOOOO +08::01::2022 06:37:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:37:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:37:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:37:52|UFUN +08::01::2022 06:37:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:37:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:37:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:37:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:37:55|uhu +08::01::2022 06:37:55|ANKLET +08::01::2022 06:37:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:37:57|OSH +08::01::2022 06:37:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:37:58|TIANAMEN SQUARE| +08::01::2022 06:38:00|dumb cunt| +08::01::2022 06:38:01|EPRESSION +08::01::2022 06:38:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:38:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:38:03|CHINKS BTFOD| +08::01::2022 06:38:04|DEATH BY DROWNING| +08::01::2022 06:38:05|3 POINT| +08::01::2022 06:38:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:38:06|DUCE IS DEAD AAAAAAAAAA| +08::01::2022 06:38:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:38:08| +08::01::2022 06:38:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:38:08|>OH NO| +08::01::2022 06:38:09|MAO +08::01::2022 06:38:09|NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO DUCEBROS| +08::01::2022 06:38:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:38:09|IP +08::01::2022 06:38:10|tanks can't skip on water| +08::01::2022 06:38:10|YATTA SEIKO DA TANKETTE DE SAIKYO| +08::01::2022 06:38:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:38:11|DUCE BROS……| +08::01::2022 06:38:11|DUCE NO| +08::01::2022 06:38:12|ATTA +08::01::2022 06:38:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:38:12|ow +08::01::2022 06:38:13|TANK SKIPPING| +08::01::2022 06:38:13|NOOOOOOOOOOOOOOOOOO DUCE| +08::01::2022 06:38:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:38:14|ealistic +08::01::2022 06:38:14|VC- +08::01::2022 06:38:15| +08::01::2022 06:38:15|_;7 +08::01::2022 06:38:15|IP +08::01::2022 06:38:16|DUCE NOOOOOOOOOOOO ;_;7| +08::01::2022 06:38:17|OGGED +08::01::2022 06:38:18|ucebros...... +08::01::2022 06:38:18|FUCK ALLICE| +08::01::2022 06:38:18|UCE +08::01::2022 06:38:19|UUUUUCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 06:38:20|EKT +08::01::2022 06:38:20|HISAI +08::01::2022 06:38:21|I CANT BELIEVE DUCE IS FUCKING DEAD| +08::01::2022 06:38:21|___;7 +08::01::2022 06:38:21|oh no........| +08::01::2022 06:38:21|ROOOOOOOOM +08::01::2022 06:38:22|?????????????????????? +08::01::2022 06:38:22|wtf is going on| +08::01::2022 06:38:24|I HATE THE ANTICHRIST| +08::01::2022 06:38:24|UMIIIIIIIIIIIIIIII +08::01::2022 06:38:24|WHO ::o:: HERE?!| +08::01::2022 06:38:24|ROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM +08::01::2022 06:38:25|OW +08::01::2022 06:38:25|obbed +08::01::2022 06:38:25|Leopon straight up modding their speed wagon| +08::01::2022 06:38:25|ALICE KILLED DUCE| +08::01::2022 06:38:25|GODDAMNIT THIS MOVE IS SO FUCKING GOOD| +08::01::2022 06:38:26|-DUCEBROS?! +08::01::2022 06:38:27|GAS GAS GAS| +08::01::2022 06:38:27|VTOL +08::01::2022 06:38:28|BASED ::O::| +08::01::2022 06:38:29|ASGAGAS +08::01::2022 06:38:29|>WAR THUNDER BE LIKE| +08::01::2022 06:38:31|LIMITERS REMOVED| +08::01::2022 06:38:32|WHEN VTEC KICKS IN YO| +08::01::2022 06:38:32|MOVIE +08::01::2022 06:38:33|Based cheaters| +08::01::2022 06:38:34|NIGHT OF FIRE| +08::01::2022 06:38:35|dvce immortal| +08::01::2022 06:38:35|_0 +08::01::2022 06:38:37|DUCE IS FUCKING DEAD| +08::01::2022 06:38:38|UTODUMMIES +08::01::2022 06:38:38|YEAH YEAH YEAH| +08::01::2022 06:38:39|ip +08::01::2022 06:38:40|GAS GAS GAS| +08::01::2022 06:38:40|YOU'LL NEVER CATCH ME KRABS | +08::01::2022 06:38:40|OOOOOOO +08::01::2022 06:38:40|VTEC JUST KICKED IN| +08::01::2022 06:38:41|RUNNING IN THE 90S| +08::01::2022 06:38:42|>1000 shot of NOS| +08::01::2022 06:38:50|how soft are katyushas thighs?| +08::01::2022 06:38:53|Time for kino| +08::01::2022 06:38:53|So who is ::our:: tank now, now Duce is daed?| +08::01::2022 06:38:54|so much dorifto| +08::01::2022 06:38:54|FINAL DESTINATION| +08::01::2022 06:38:54|ERIKA AND KAT DEAD| +08::01::2022 06:38:55|LIKE BUTTER| +08::01::2022 06:38:55|THIS IS IT| +08::01::2022 06:38:56|ENTER KINO| +08::01::2022 06:39:00|SOUND DESIGN KINO| +08::01::2022 06:39:01|KINO INCOMING| +08::01::2022 06:39:03|so it's like a 5v1 now| +08::01::2022 06:39:03|ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE | +08::01::2022 06:39:04|ARE YOU READY FOR KINO?| +08::01::2022 06:39:04|BULLITT TIME| +08::01::2022 06:39:04|OH SHITTTTTTTTTTT| +08::01::2022 06:39:05|buffering +08::01::2022 06:39:05|All of the Russians dying for Katyusha to get one(1) kill| +08::01::2022 06:39:06|TIME FOR MORE KINO HAHAHAH| +08::01::2022 06:39:07|Worst scene in the movie| +08::01::2022 06:39:09|ducebros... time to go home| +08::01::2022 06:39:09|Imagine being Eika and Katyusha and getting a 3x1 exchange| +08::01::2022 06:39:09|V2 my beloved | +08::01::2022 06:39:10|Final boss| +08::01::2022 06:39:12|3 v 2| +08::01::2022 06:39:12|SOund porn time| +08::01::2022 06:39:12|uoooooooh tank turret sound| +08::01::2022 06:39:13|get ready for shitty cgi| +08::01::2022 06:39:14|YOU ALREADY KNOW WHAT TIME IT ISSS| +08::01::2022 06:39:15|How can they pack so much Kino into a single movie?| +08::01::2022 06:39:15|Give me some hype SOT| +08::01::2022 06:39:16|prefire +08::01::2022 06:39:19|Alice is pretty cute and funny| +08::01::2022 06:39:20|dat sfx| +08::01::2022 06:39:20|Gimme some music| +08::01::2022 06:39:21|ORARI BROS I DON'T THINK WILL BE WIN THIS ONE | +08::01::2022 06:39:26|serious buffering| +08::01::2022 06:39:26|buffering +08::01::2022 06:39:27|Faggot shit silence art piece| +08::01::2022 06:39:29|GIVE OORAI YOUR ENERGY \O::| +08::01::2022 06:39:30|where have i seen this before| +08::01::2022 06:39:32|damm buffering| +08::01::2022 06:39:33|OKO +08::01::2022 06:39:35|did saunders get any kills?| +08::01::2022 06:39:36|buffering +08::01::2022 06:39:42|wtf why no music| +08::01::2022 06:39:42|University has this in the bag| +08::01::2022 06:39:43|kino moment| +08::01::2022 06:39:44|DIRECTOR! WE FORGOT THE BGM| +08::01::2022 06:39:48|LETS GO GLOBOHOMO TEAM| +08::01::2022 06:39:50|INO +08::01::2022 06:39:50|Naomi got some| +08::01::2022 06:39:51|too serious for music| +08::01::2022 06:39:54|this kino scene| +08::01::2022 06:39:57|the tensions is great without the music| +08::01::2022 06:39:58|How the heck did the French survive as the 2nd last uni tank?| +08::01::2022 06:39:59|EADSHOT +08::01::2022 06:40:01|the BGM is the beautiful sound of steel on steel| +08::01::2022 06:40:01|ew +08::01::2022 06:40:01|hand on the shoulder kino| +08::01::2022 06:40:01|ino +08::01::2022 06:40:03|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:40:03|GOT YA BITCH| +08::01::2022 06:40:03|EAT SHIT UNIVERSITY| +08::01::2022 06:40:04|I actually really like that they just do the sound effects here| +08::01::2022 06:40:04|INO +08::01::2022 06:40:05|how did she know they where getting aimed at from behind| +08::01::2022 06:40:12|mad drifto| +08::01::2022 06:40:13|PERSHING BTFO| +08::01::2022 06:40:14|makes it seem super focused| +08::01::2022 06:40:15|ONG +08::01::2022 06:40:18|These sound effects are fucking kino| +08::01::2022 06:40:19|OTTEEEEM +08::01::2022 06:40:21|christ maho| +08::01::2022 06:40:21|EATH +08::01::2022 06:40:21|ABON +08::01::2022 06:40:22|EW +08::01::2022 06:40:23|they really abused phyiscs in this| +08::01::2022 06:40:23|ECAPITATED +08::01::2022 06:40:24|bgm isn't necessary to be on 100% of the time| +08::01::2022 06:40:24|EKT +08::01::2022 06:40:26|WYA MR MERCEDES| +08::01::2022 06:40:27|Being a guppie means being partially psychic| +08::01::2022 06:40:27|Holy shit Maho| +08::01::2022 06:40:28|EAD +08::01::2022 06:40:28|maho gets decapitated| +08::01::2022 06:40:30|REKT REKT REKT| +08::01::2022 06:40:34|ISTERHOOD +08::01::2022 06:40:36|INA +08::01::2022 06:40:37|bozo m26| +08::01::2022 06:40:37|truck commies| +08::01::2022 06:40:37|Serious whiplash damage there| +08::01::2022 06:40:39|.... +08::01::2022 06:40:40|THAT BOAT JUST KICKED A +50 TON TANK| +08::01::2022 06:40:40|INSANE OUTPLAYS| +08::01::2022 06:40:40|guys, Ooarai might win| +08::01::2022 06:40:42|BGM is back| +08::01::2022 06:40:43|>carbon coating more like cabron coating| +08::01::2022 06:40:44|off to the camps| +08::01::2022 06:40:47|2 v 1, Ourai bros we got this| +08::01::2022 06:40:48|might +08::01::2022 06:40:49|YO IS OORAI GONNA WIN| +08::01::2022 06:40:50|ino +08::01::2022 06:40:50|shiho still refuses to let miho back into the house| +08::01::2022 06:40:55|ALAMO | +08::01::2022 06:40:57|Oarai might just win somehow...| +08::01::2022 06:40:58|Nice driving skills| +08::01::2022 06:40:59|>cabron coating kek| +08::01::2022 06:41:00|TANK JOUSTING| +08::01::2022 06:41:02|GIVE GALAX'S SERVERS ENERGY \O::| +08::01::2022 06:41:03|COMIN IN HOT| +08::01::2022 06:41:03|alicebros what's our game plan| +08::01::2022 06:41:04|alice getting double futa cock| +08::01::2022 06:41:06|LETS GO ALICE CUNNY| +08::01::2022 06:41:08|O:: +08::01::2022 06:41:09|HERE WE GO| +08::01::2022 06:41:09|o:: +08::01::2022 06:41:09|University bros, did we get too cocky?| +08::01::2022 06:41:11| \o:: \o:: \o::| +08::01::2022 06:41:12|o:: +08::01::2022 06:41:13|UFFERING +08::01::2022 06:41:13|o:: +08::01::2022 06:41:14|GAMBARE, SERVER-CHAN| +08::01::2022 06:41:14|buffering +08::01::2022 06:41:15|UFFERAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:41:15|\o:: JUST STARTED BUFFERING FOR ME| +08::01::2022 06:41:17|RIFT +08::01::2022 06:41:19|AAAAAAAAAAAAA +08::01::2022 06:41:20|SO THIS IS THE POWER OF CUNNY| +08::01::2022 06:41:20|buffering +08::01::2022 06:41:21|o:: +08::01::2022 06:41:21|BUFFERING YOU FUCK| +08::01::2022 06:41:23|o:: +08::01::2022 06:41:23|>cunny vs JK THE FINAL BATTLE| +08::01::2022 06:41:25|THE MOST INTENSE FIGHT OF ALL| +08::01::2022 06:41:26|JET ENGINES| +08::01::2022 06:41:26|FUCK EM UP SERVERS!| +08::01::2022 06:41:27|ALAAAAAAAAAAAAAAAAAAAAAX +08::01::2022 06:41:29|this is like a 12 year old doing all this | +08::01::2022 06:41:29| \o:: \o:: \o::| +08::01::2022 06:41:29|\O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: \O:: | +08::01::2022 06:41:30|o:: +08::01::2022 06:41:31|BUFFERING +08::01::2022 06:41:31|ubbering +08::01::2022 06:41:32|SO MUCH BUFFERING AAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 06:41:32|SERVERS ARE BACK| +08::01::2022 06:41:32|track still intact| +08::01::2022 06:41:34|CUNNY TO STRONG THAT ITS BUFFFERING| +08::01::2022 06:41:36|STREAM CAN'T HANDLE THIS TANK BATTLE| +08::01::2022 06:41:37|UN GLOBOHOMO TEAM WILL WIN| +08::01::2022 06:41:37|They are trying to l;ag switch us bros| +08::01::2022 06:41:38|\o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: | +08::01::2022 06:41:39|SHUT IT DOWN| +08::01::2022 06:41:40|SHOT BOUNCED| +08::01::2022 06:41:41|m:: +08::01::2022 06:41:41|TAKE MY ENERGY MIHO| +08::01::2022 06:41:42|o:: +08::01::2022 06:41:43|WE DIDN'T EVEN SCRATCH THEM| +08::01::2022 06:41:44|o:: +08::01::2022 06:41:46|who is supposed to be seeing her hand signals?| +08::01::2022 06:41:46|INO +08::01::2022 06:41:47|>ACTUAL ROCKET| +08::01::2022 06:41:48|WOW CHEATER| +08::01::2022 06:41:49|??????? +08::01::2022 06:41:50|m:: +08::01::2022 06:41:51|COME FLY WITH ME| +08::01::2022 06:41:53|TF +08::01::2022 06:41:53|That was just unnecessary lmao| +08::01::2022 06:41:53|O? +08::01::2022 06:41:54|KINO KINO KINO| +08::01::2022 06:41:54|>a fucking rocket| +08::01::2022 06:41:54|I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +08::01::2022 06:41:55|RUBE GOLBERG?| +08::01::2022 06:41:56|HERE COMES THE NUKEE| +08::01::2022 06:41:58|WHERE IS MY WIFE ORANGE PEKOE?| +08::01::2022 06:41:58|KINO TIME| +08::01::2022 06:42:00|NOT THE WHEEL| +08::01::2022 06:42:01|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:42:06|HAHAHAHAHAHAHA +08::01::2022 06:42:07|Pekoe's dead anon| +08::01::2022 06:42:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:42:09|ANTICHRIST BROS? I DONT FEEL SO GOOD| +08::01::2022 06:42:11|ear +08::01::2022 06:42:14|that bear wins the match| +08::01::2022 06:42:16|FPS POV| +08::01::2022 06:42:17|die joe boo| +08::01::2022 06:42:17|saved by boco| +08::01::2022 06:42:17|plot twist activated| +08::01::2022 06:42:18|PoV you are an autist| +08::01::2022 06:42:21|FIRST PERSON KINO| +08::01::2022 06:42:21|[S +08::01::2022 06:42:23|INOOOOO +08::01::2022 06:42:25|boko +08::01::2022 06:42:28|activate armor plot| +08::01::2022 06:42:30|BOKO HALAL| +08::01::2022 06:42:31|Boko literally saves the day| +08::01::2022 06:42:32|ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE AL| +08::01::2022 06:42:33|KINO IS BACK ON THE MENU BOYS| +08::01::2022 06:42:36|Bullshit on that shot, that woulda penned| +08::01::2022 06:42:40|fuck em up boko| +08::01::2022 06:42:43|that Tiger I is just sex| +08::01::2022 06:42:44|CUNNY CUNNY CUNNY CUNNY| +08::01::2022 06:42:48|POV shots are kino| +08::01::2022 06:42:48|AHHHHH SAVE ME BOKO MAN| +08::01::2022 06:42:50|GANBARE BOKO!| +08::01::2022 06:42:51|I CAN'T BELIEVE I TURNED INTO A LITTLE GIRL| +08::01::2022 06:42:53|STOP ITS BOKO STOP PLS DON'T HARM HIM HES JUST A BOKO| +08::01::2022 06:42:53|GO CUNNY GO BOKO GO UN| +08::01::2022 06:42:54|O MY BEAR RIDE| +08::01::2022 06:42:54|Boko trolling again. Who side are you really on Boko?| +08::01::2022 06:42:54|INO +08::01::2022 06:42:54|BOCO TRUCE| +08::01::2022 06:42:56|PENETRATE ALICE WITH A 17 POUNDER| +08::01::2022 06:42:56|UOOOOOOOOH IMPREGNATE ALICE| +08::01::2022 06:42:57|thank you boko| +08::01::2022 06:42:57|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:42:58|OKO +08::01::2022 06:42:58|BOKO NO| +08::01::2022 06:42:58| +08::01::2022 06:42:58|BEAR SAVE| +08::01::2022 06:42:59|oko! +08::01::2022 06:42:59|OKO +08::01::2022 06:43:00|KAY IS BAE| +08::01::2022 06:43:00|O MY RUBBER BEAR| +08::01::2022 06:43:01|OKOOOOOOO +08::01::2022 06:43:01|oko +08::01::2022 06:43:03|OKO +08::01::2022 06:43:03|OKO +08::01::2022 06:43:03|utism +08::01::2022 06:43:03|: +08::01::2022 06:43:05|OKO +08::01::2022 06:43:05|OKO +08::01::2022 06:43:05|BEAR VICTORY| +08::01::2022 06:43:06|BOKO SAVES THE DAY| +08::01::2022 06:43:06|OKOMVP +08::01::2022 06:43:06|BOKO MVP| +08::01::2022 06:43:06|OCO +08::01::2022 06:43:07|BOCO MORE POWERFUL THAN TANKS| +08::01::2022 06:43:08|ek +08::01::2022 06:43:09|INO +08::01::2022 06:43:09|boko sides with miho| +08::01::2022 06:43:09|why did the gunner hesitate?| +08::01::2022 06:43:10|THAT BOKO ISN'T CARBON COATED | +08::01::2022 06:43:10|OH MY RUBBER BOKO| +08::01::2022 06:43:11|fps +08::01::2022 06:43:12|BOCO HALAL| +08::01::2022 06:43:13|THIS IS IT LADS| +08::01::2022 06:43:14|Time to finish this| +08::01::2022 06:43:14|actual autism| +08::01::2022 06:43:16|BEAR > WINNING| +08::01::2022 06:43:17|boko cunny mvp| +08::01::2022 06:43:17|INO +08::01::2022 06:43:18|GODDESS OF VICTORY BOKO| +08::01::2022 06:43:19|BOKO > DVCE| +08::01::2022 06:43:20|INO +08::01::2022 06:43:21|surely, the gunner didnt even see boko?| +08::01::2022 06:43:21|THEY HAVE THE HIGHGROUND| +08::01::2022 06:43:24|I HAVE THE HIGH GROUND| +08::01::2022 06:43:24|13 year old| +08::01::2022 06:43:25|I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +08::01::2022 06:43:26|ITS OVER ANAKIN| +08::01::2022 06:43:27|Just shoot them from there| +08::01::2022 06:43:28|OUST +08::01::2022 06:43:29|REV IT UP| +08::01::2022 06:43:29|INOOOOOOOOOOOO +08::01::2022 06:43:30|KINO TIMEEEEEEEEEEEEE| +08::01::2022 06:43:31|IT'S OVER ALICE, WE HAVE THE HIGH GROUND| +08::01::2022 06:43:31|Who's the number one boko fan now bitch?| +08::01::2022 06:43:32|INO +08::01::2022 06:43:32|I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +08::01::2022 06:43:32|ITS OVER ALICE WE HAVE THE HIGH GROUND| +08::01::2022 06:43:33|ROOOOOM +08::01::2022 06:43:35|UFFERING +08::01::2022 06:43:35|NO WAY| +08::01::2022 06:43:36|They're driving directly at you| +08::01::2022 06:43:36|That Maho sad face. I can't| +08::01::2022 06:43:37|literal autism| +08::01::2022 06:43:37|IT'S OVER ERIKA, WE HAVE THE HIGH GROUND| +08::01::2022 06:43:39|HERE COMES THE KINO| +08::01::2022 06:43:39|CANNON SUPPORT| +08::01::2022 06:43:40|GALAXY BRAIN| +08::01::2022 06:43:41|Top 10 anime betrayal| +08::01::2022 06:43:41|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:43:41|EW +08::01::2022 06:43:42|OCK +08::01::2022 06:43:43|ANKOU HAYAI| +08::01::2022 06:43:44|UBO??? +08::01::2022 06:43:44|OOSTO +08::01::2022 06:43:44|I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +08::01::2022 06:43:44|OOSTO +08::01::2022 06:43:46|INO +08::01::2022 06:43:49|i wish maho would fire a blank at my ass| +08::01::2022 06:43:49|TFO +08::01::2022 06:43:49|INOKINOKINO +08::01::2022 06:43:49|SLINGSHOT ENGAGED| +08::01::2022 06:43:50|HOLY KINO| +08::01::2022 06:43:50|GOD HOLY SHIT| +08::01::2022 06:43:51|INO +08::01::2022 06:43:52|INO +08::01::2022 06:43:52|INO +08::01::2022 06:43:53|INOOO +08::01::2022 06:43:53|Centurions aint shit but hoes n tricks| +08::01::2022 06:43:53|INO +08::01::2022 06:43:53|HORYY SHITTTT| +08::01::2022 06:43:53|HYYYYYYYYYYYYPE AS FUCK| +08::01::2022 06:43:54|ino +08::01::2022 06:43:54|TFO +08::01::2022 06:43:54|THE FUCKING SFX| +08::01::2022 06:43:54|ino +08::01::2022 06:43:55|INOGRAPHY +08::01::2022 06:43:56|INOOOO +08::01::2022 06:43:56|WE DID IT BROS | +08::01::2022 06:43:56|HOLY KINO| +08::01::2022 06:43:56|ino +08::01::2022 06:43:57|ICTORY +08::01::2022 06:43:57|SHOOTING YOURSELF| +08::01::2022 06:43:58|INO +08::01::2022 06:43:58|OOOOOOOOOOOOOOOOOOOOOO +08::01::2022 06:43:59|INOOOOOOO +08::01::2022 06:44:00|INO +08::01::2022 06:44:00|KAY OH| +08::01::2022 06:44:00|I AM THE PROJECTILE | +08::01::2022 06:44:01|NOOOOO CUNNY LOSE| +08::01::2022 06:44:02|INOOOOOOOOOOOO +08::01::2022 06:44:04|EGGSSSSSSS +08::01::2022 06:44:05|Dangerously kino| +08::01::2022 06:44:05|GET FUCKED (UN)IVERSITY| +08::01::2022 06:44:07|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:44:08|SHOOT IT IN ME ONEE-CHAN| +08::01::2022 06:44:09|this is war| +08::01::2022 06:44:11|Miho is a fucking genius| +08::01::2022 06:44:12|gg boyos| +08::01::2022 06:44:13|miho taking it from behind| +08::01::2022 06:44:14|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:44:17|RIP T28| +08::01::2022 06:44:17|TIger last man standing| +08::01::2022 06:44:21|WAR. WAR NEVER CHANGES| +08::01::2022 06:44:22|I LOVE THE ANTICHRIST| +08::01::2022 06:44:23|IPORIN +08::01::2022 06:44:24|IMPREGNATE JUDGE| +08::01::2022 06:44:25|NDSIEG +08::01::2022 06:44:25|HOLY FUCK OOARAI WON!?| +08::01::2022 06:44:27|LETS FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 06:44:27|OSHAAAAAA +08::01::2022 06:44:29|if only it didn't stop to buffer 4 times during that scene| +08::01::2022 06:44:29|OSHAAAAAAA +08::01::2022 06:44:29|OOOJOUUUUU +08::01::2022 06:44:29|MEXT BTFO| +08::01::2022 06:44:30|I HAVE BEEN SAVED I HAVE BEEN SAVED| +08::01::2022 06:44:30|WOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOARIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +08::01::2022 06:44:30|8888888888888888888888888888888888888888888888888888888888888888888888888888 +08::01::2022 06:44:31|o:: +08::01::2022 06:44:31|araiwinslol +08::01::2022 06:44:31|OORAI MEMED TO VICTORY ONCE AGAIN| +08::01::2022 06:44:32|ooaraibros... we won...| +08::01::2022 06:44:32|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:44:32|OSH +08::01::2022 06:44:32|MEXT bros.....| +08::01::2022 06:44:33|OSHAAA +08::01::2022 06:44:33|EI EI OUUUUU| +08::01::2022 06:44:33|CUTE ERIKA| +08::01::2022 06:44:33|8888888888888888888888888888888888888888888888 +08::01::2022 06:44:34|OSHAAAAAAAAAAa +08::01::2022 06:44:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:44:35|UCE +08::01::2022 06:44:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:44:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:44:35|Can't believe I didn't get the university joke until now| +08::01::2022 06:44:35|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 06:44:36|WE DID BOYS| +08::01::2022 06:44:36|Miho's a mad lad. Ain't disqualified if flag ain't out yet.| +08::01::2022 06:44:36|THEY FUCKING DID IT| +08::01::2022 06:44:36|ANTICHRIST FAGS BTFO| +08::01::2022 06:44:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:44:37|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOW +08::01::2022 06:44:37|ANZAI +08::01::2022 06:44:37|OROSHO +08::01::2022 06:44:38|::fit:: gamers| +08::01::2022 06:44:38|ANZAI +08::01::2022 06:44:38|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:44:38|ANZAI +08::01::2022 06:44:39|LETS MUSCLE| +08::01::2022 06:44:40|ANZAI +08::01::2022 06:44:40|We won?| +08::01::2022 06:44:41|ODKA +08::01::2022 06:44:41|AY +08::01::2022 06:44:41|88888888888888888888888888888888888 +08::01::2022 06:44:42|GLOBOHOMO TEAM BTFO| +08::01::2022 06:44:42|ANZAI +08::01::2022 06:44:42|ales +08::01::2022 06:44:43|I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +08::01::2022 06:44:43|RA +08::01::2022 06:44:43|HORROR SHOW| +08::01::2022 06:44:44|ATTA +08::01::2022 06:44:44|klara with vodka lol| +08::01::2022 06:44:44|THE BEST| +08::01::2022 06:44:44|\o:: BANZAI| +08::01::2022 06:44:45|Mext bros....| +08::01::2022 06:44:46|YRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:44:46|EXTbros... +08::01::2022 06:44:46|Globohomo bros....| +08::01::2022 06:44:46|LETS FUCKING GOOOOOOOOOOOOOOOOO| +08::01::2022 06:44:46|non-alcoholic +08::01::2022 06:44:46|OMO +08::01::2022 06:44:47|WE WON OOARI BROS| +08::01::2022 06:44:47|nzu +08::01::2022 06:44:47|LOL BUFFERING| +08::01::2022 06:44:48|MEXT LADS WTFFFFF???| +08::01::2022 06:44:48|MEXT BTFO| +08::01::2022 06:44:48|was it vodka?| +08::01::2022 06:44:49|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 06:44:49|ANZAI +08::01::2022 06:44:49|YRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:44:49|SURELY MOMO WILL BE ABLE TO GRADUATE AFTER THIS| +08::01::2022 06:44:52|ATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:44:52|TAKE SHOTS NOW!| +08::01::2022 06:44:52|MEXT BROS NEXT TIME| +08::01::2022 06:44:52|BASED MOVIE| +08::01::2022 06:44:53|ORIKO<3 +08::01::2022 06:44:53|cry momo cry| +08::01::2022 06:44:54|ATTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 06:44:55|Guys, we did it....| +08::01::2022 06:44:56|I want to rape Rosehip's driver| +08::01::2022 06:44:57|NO GLOBOHOMO| +08::01::2022 06:44:58|RAAAAAAA +08::01::2022 06:44:58|Rosehip is sad there because she isn't going fast| +08::01::2022 06:44:58|INOOOOOOOO +08::01::2022 06:45:02|a fycking rubber bear| +08::01::2022 06:45:02|TAKE SHOTS NOW!| +08::01::2022 06:45:02|THEY CAN"T KEEP GETTING AWAY WITH THIS | +08::01::2022 06:45:04|we didit bros| +08::01::2022 06:45:04|don't celebrate yet momo it's still over for you| +08::01::2022 06:45:04|MEXT guy thinking how hes gonna give us more content| +08::01::2022 06:45:04|Now everyone can get into a good college!| +08::01::2022 06:45:05|INOOOOOOOOOOOOOOOOO +08::01::2022 06:45:08|ANZU UPSKIRT| +08::01::2022 06:45:08|WHAT A GOOD MOMENT TO END THE SERIES ON OH WAIT| +08::01::2022 06:45:10|will shiho let miho back in the house now?| +08::01::2022 06:45:10|pskirt +08::01::2022 06:45:11|Ankou been through hell| +08::01::2022 06:45:11|IWTWM +08::01::2022 06:45:11|woah anzu| +08::01::2022 06:45:12|OOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +08::01::2022 06:45:12|AHOOOOOO +08::01::2022 06:45:13|ANZU CUNNY| +08::01::2022 06:45:13|ISHIZUMICHAN +08::01::2022 06:45:14|GOD I WISH I WERE MIHO| +08::01::2022 06:45:14|MEXT bros... we got too cocky| +08::01::2022 06:45:14|LEG LOCK| +08::01::2022 06:45:14|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 06:45:14|god I wish that were me| +08::01::2022 06:45:15|unny! +08::01::2022 06:45:17|don't cwy, Momo| +08::01::2022 06:45:17|This will have no effect on Momo's grades| +08::01::2022 06:45:17|This OST is beautiful| +08::01::2022 06:45:18|>Anzu hug| +08::01::2022 06:45:19|iwtwm +08::01::2022 06:45:19|BEST ANZU| +08::01::2022 06:45:21|UBTEXTSUBTEXTSUBTEXTSUBTEXTSUBTEXTSUBTEXT +08::01::2022 06:45:22|IMAGINE | +08::01::2022 06:45:22|ANZU LEG LOCK UOHHHHHH| +08::01::2022 06:45:23|I want to be pounched by Anzu| +08::01::2022 06:45:24|ongratulations! +08::01::2022 06:45:25|OMEDETOU SHINJI| +08::01::2022 06:45:25|a fucking bear| +08::01::2022 06:45:26|UTE +08::01::2022 06:45:26|NEVER EVER| +08::01::2022 06:45:29|MEDETOU +08::01::2022 06:45:29|WHY IS IT SO KINO BROS???| +08::01::2022 06:45:29|utism +08::01::2022 06:45:31|NTER +08::01::2022 06:45:32|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +08::01::2022 06:45:32|ARISU ;_;| +08::01::2022 06:45:33|DORK ALERT| +08::01::2022 06:45:34|oco! +08::01::2022 06:45:34|I want Anzu to hug me like that...| +08::01::2022 06:45:34|OKO +08::01::2022 06:45:35|boko moment boko moment| +08::01::2022 06:45:36|utism +08::01::2022 06:45:36|OKO +08::01::2022 06:45:36|>you will never get legged lock by anzu| +08::01::2022 06:45:36|UTE +08::01::2022 06:45:36|okobros... +08::01::2022 06:45:36|a fucking BOKO| +08::01::2022 06:45:37|risu.... +08::01::2022 06:45:37|OOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 06:45:37|Bear mount| +08::01::2022 06:45:37|WHAT DA BEAR DOIN| +08::01::2022 06:45:38|UUUUUUUUUNNNNNNNNNNYYYYYYYYYY +08::01::2022 06:45:38|OKO?! +08::01::2022 06:45:38|UTISM +08::01::2022 06:45:39|uT +08::01::2022 06:45:39|Enter autismo| +08::01::2022 06:45:39|Autism incarnate| +08::01::2022 06:45:39|Thanks Boko| +08::01::2022 06:45:39|friends, you kneel to no one| +08::01::2022 06:45:40|MY STEED| +08::01::2022 06:45:40|Was it autism?| +08::01::2022 06:45:41|risu... +08::01::2022 06:45:41|CUTE AUTIST| +08::01::2022 06:45:42|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 06:45:42|utism +08::01::2022 06:45:43|BOKO HARAM| +08::01::2022 06:45:44|OOOOOOOOOOOOOOOH +08::01::2022 06:45:44|OOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 06:45:44|RISU +08::01::2022 06:45:45|ITNESSED +08::01::2022 06:45:46|ALICE CUTE| +08::01::2022 06:45:47|NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO | +08::01::2022 06:45:48|Fuck that stupid bear autism| +08::01::2022 06:45:48|UOOOOOOOOOHHHHHHHHHHHHHHHHHHHHh ;_;| +08::01::2022 06:45:48|CUTE AUTISM| +08::01::2022 06:45:49|I KNEEL| +08::01::2022 06:45:51|BOKO HARAM| +08::01::2022 06:45:51|she staring at booba| +08::01::2022 06:45:51|SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT| +08::01::2022 06:45:52|SAVE THE MUSEUM| +08::01::2022 06:45:53|BEAR VOR| +08::01::2022 06:45:53|BOKO SHOULD HAVE WON| +08::01::2022 06:45:53|OOOOKKKOOOOOOOOO +08::01::2022 06:45:54|UTE +08::01::2022 06:45:54|HALF HER SIZE| +08::01::2022 06:45:54|licetism +08::01::2022 06:45:55|the boko museum is FUCKED| +08::01::2022 06:45:55|UTISM +08::01::2022 06:45:56|I KNEEL| +08::01::2022 06:45:56|GET THAT SHIT OUTTA MY FACE| +08::01::2022 06:45:57|Alice is for uwooooohh| +08::01::2022 06:45:57|???????:: +08::01::2022 06:45:57|CUTE ALICE | +08::01::2022 06:45:58|aw my heart| +08::01::2022 06:45:58|DDDDDDDDDDD +08::01::2022 06:45:58|OOBS +08::01::2022 06:45:59|DEFEAT MEANS FRIENDSHIP| +08::01::2022 06:45:59|RARE MIHO IS GIVEN| +08::01::2022 06:45:59|BERGELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 06:45:59|Is it the uniform or did Duce behind look bigger?| +08::01::2022 06:46:00|DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:00|CUTE AUTIST| +08::01::2022 06:46:01|ute +08::01::2022 06:46:02|a fucking bear| +08::01::2022 06:46:03|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 06:46:03|UOOOOO BLUSH| +08::01::2022 06:46:04|enis +08::01::2022 06:46:05|:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +08::01::2022 06:46:06|13 years old| +08::01::2022 06:46:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:08|Participation Medal of Honour| +08::01::2022 06:46:08|arisu a cute, CUUUUUUUUUUUUUUUUUUUUUUUUUUUTE| +08::01::2022 06:46:09|_;7 +08::01::2022 06:46:09|CUTE ALICE| +08::01::2022 06:46:10|OBROS +08::01::2022 06:46:10| 😭😭 +08::01::2022 06:46:10|NO STEAKS| +08::01::2022 06:46:16|DDDDDDDDDDD +08::01::2022 06:46:16|FINNS :DDDDDDDDD| +08::01::2022 06:46:16|DDDD +08::01::2022 06:46:17|DDDDDDDD +08::01::2022 06:46:17|DDDDDDD +08::01::2022 06:46:19|enis +08::01::2022 06:46:19|FUG :DDDDDDD| +08::01::2022 06:46:19|DDDDDDDDD +08::01::2022 06:46:20|REMATCH CONFIRMED| +08::01::2022 06:46:20|DDDDDD +08::01::2022 06:46:20|DDDDDDDDDDDDDDDDDDDDddddddd +08::01::2022 06:46:20|AAAAAAAA THIS ED ;_____;| +08::01::2022 06:46:21|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:21|EGGGGGGS +08::01::2022 06:46:22|:DDDDDDDDDDDDDD +08::01::2022 06:46:22|APOLOGIZE TO THE FINISH| +08::01::2022 06:46:22|DDDDDDDDDDD +08::01::2022 06:46:22|DDDDDDDDDDDDDDDDD +08::01::2022 06:46:22|DDDDDDDDDDDDDDD +08::01::2022 06:46:22|RÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +08::01::2022 06:46:22|DD +08::01::2022 06:46:22|My wife mika| +08::01::2022 06:46:22|f*nns +08::01::2022 06:46:23|nice boat| +08::01::2022 06:46:23|DDD +08::01::2022 06:46:23|DDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:23|ok fin darj| +08::01::2022 06:46:23|I hope Momo graduates| +08::01::2022 06:46:23|BIN +08::01::2022 06:46:24|ebin :dddd| +08::01::2022 06:46:24|OVA W H E N| +08::01::2022 06:46:24|fugg :DDD| +08::01::2022 06:46:25|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:25|FUCK IM OUT OF PISS BOTTLES| +08::01::2022 06:46:26|Daro :DDDD| +08::01::2022 06:46:27|INNS +08::01::2022 06:46:27|MOVIE 2 CONFIRMED| +08::01::2022 06:46:28|_;7 +08::01::2022 06:46:28|DDDDDDDDDDDDD +08::01::2022 06:46:28|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:29|Oh God this is so sad seeing this Ending| +08::01::2022 06:46:30|7 +08::01::2022 06:46:30|INOKINOKINO +08::01::2022 06:46:31|88888888888888888888888888888888888888888888888888 +08::01::2022 06:46:32|HOLY KINO| +08::01::2022 06:46:33|NICE BOTE| +08::01::2022 06:46:33|DDDDDDDDDDDDDDDDDD +08::01::2022 06:46:35|DDDDDDDDD +08::01::2022 06:46:35|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:35|DDDDDDDD +08::01::2022 06:46:35|THIS IS THE END OH WAIT….| +08::01::2022 06:46:36|RATE IT| +08::01::2022 06:46:36|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:46:36|YEEEESSS MOVIE ED| +08::01::2022 06:46:36|too Kino| +08::01::2022 06:46:37|MVP WHEEL| +08::01::2022 06:46:38|_Q +08::01::2022 06:46:38|D +08::01::2022 06:46:41|I just can't | +08::01::2022 06:46:42|DDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:42|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +08::01::2022 06:46:43|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:43|) +08::01::2022 06:46:43|D +08::01::2022 06:46:44|piss break| +08::01::2022 06:46:44|Good stream lads| +08::01::2022 06:46:44|so for a while did you think this was the end of gup| +08::01::2022 06:46:45|best character| +08::01::2022 06:46:45|Honestly hate how sad the ending feels and sounds| +08::01::2022 06:46:45|INO +08::01::2022 06:46:46|THANK YOU WHEEL ;-;7| +08::01::2022 06:46:47|ITS OVER!| +08::01::2022 06:46:48|KINO ED| +08::01::2022 06:46:49|OTSUKARE FERRIS-CHAN| +08::01::2022 06:46:50|INO +08::01::2022 06:46:50|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:46:51|DDDDDDDDDDDDDDDD +08::01::2022 06:46:52| FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +08::01::2022 06:46:53|:) 8888888888888888888888888888888888| +08::01::2022 06:46:54|WHERE ARE THE ED CREDITS TL????| +08::01::2022 06:46:55|ANTICHRIST = LOST | +08::01::2022 06:46:55|>OWARI DA| +08::01::2022 06:46:56|BEAUTIFUL ENDING| +08::01::2022 06:46:58|it's over| +08::01::2022 06:47:00|Big Wheel is truly our greatest ally| +08::01::2022 06:47:02|piss taimu| +08::01::2022 06:47:04|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:47:05|Ending sounds peaceful after the climax fight| +08::01::2022 06:47:06|HELL YA FUCK THE ANTICHRIST| +08::01::2022 06:47:08|incest time???| +08::01::2022 06:47:09|>Der Film came out 7 years ago| +08::01::2022 06:47:09|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:47:09|_________________; +08::01::2022 06:47:11|MIHO X MAHO FUTA SEX NONSTOP| +08::01::2022 06:47:11|Ribbon Warrior readalong next| +08::01::2022 06:47:12|what they talkin about| +08::01::2022 06:47:14|So kino...| +08::01::2022 06:47:15|THANK YOU GUP CREW FOR EXISTING| +08::01::2022 06:47:15|AHO +08::01::2022 06:47:15|INCEST CEREMONY| +08::01::2022 06:47:15|Next time I'll shoot it in you onee-chan| +08::01::2022 06:47:18|ay +08::01::2022 06:47:19|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:47:20|Maho cute| +08::01::2022 06:47:20|ovl... +08::01::2022 06:47:21|its already been 7 years...| +08::01::2022 06:47:22|I hope GuP never ends...| +08::01::2022 06:47:22|ae +08::01::2022 06:47:24|My Maho wife| +08::01::2022 06:47:26|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:47:26|miho x maho time| +08::01::2022 06:47:29|I love this series so much| +08::01::2022 06:47:31|so much soul....| +08::01::2022 06:47:31|I FUCKING LOVE THIS SONG| +08::01::2022 06:47:32|We still have like 3 hours LETS GO| +08::01::2022 06:47:33|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:47:34|Probably talking about not being disowned by Shiho| +08::01::2022 06:47:35|maho more like AHO AHAHAHAHAHHAHAHAHAHAHAHAHAHAHAHAH| +08::01::2022 06:47:37|Who will continue the GuP legacy after the Finale?| +08::01::2022 06:47:39|SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX WITH HANA| +08::01::2022 06:47:40|BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +08::01::2022 06:47:40|OVL +08::01::2022 06:47:40|ENTA MISSION WHEN?| +08::01::2022 06:47:40|we'll get them next time mext bros| +08::01::2022 06:47:41|DDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:47:41|the end credits always hit me for some reason| +08::01::2022 06:47:47|2 more years for next OVA, stay strong guppers| +08::01::2022 06:47:47| O S T| +08::01::2022 06:47:48|I FUCKING LOVE THIS SONG| +08::01::2022 06:47:50|me flying the C5| +08::01::2022 06:47:51|i fucking love all u no homo| +08::01::2022 06:47:52|Oarai, Ibaraki's existence hinges on GuP's success| +08::01::2022 06:47:53|taberu +08::01::2022 06:47:53|Fuck me has it been 7 years?| +08::01::2022 06:47:54|????????????????????????????????????????? +08::01::2022 06:47:56|USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +08::01::2022 06:47:56|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:47:57|!!!!!!!! +08::01::2022 06:47:57|URGS +08::01::2022 06:47:57|ORG +08::01::2022 06:47:58|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:48:00|COMFY AMERICANS| +08::01::2022 06:48:00|BIG BITE| +08::01::2022 06:48:00|I WILL LEARN JAPANESE, I WILL WATCH DAS FINALE IN THEATERS| +08::01::2022 06:48:01|SAUSAUSA +08::01::2022 06:48:01|burgers +08::01::2022 06:48:02|PUT THAT BURGER DOWN| +08::01::2022 06:48:02|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:48:02|best community| +08::01::2022 06:48:02|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 06:48:03|TAKESHI NO| +08::01::2022 06:48:03|SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT | +08::01::2022 06:48:06|Wake up and take the meds anon| +08::01::2022 06:48:07|OOMM OOOMM OOOMMMM| +08::01::2022 06:48:07|WHAT ARE WE SNACKIN ON TONIGHT FELLAS| +08::01::2022 06:48:08|TEA TIME| +08::01::2022 06:48:10|YOU WILL NOT DIE UNTIL GUP IS FINISHED| +08::01::2022 06:48:10|Kotobuki is fucking DEAD| +08::01::2022 06:48:10|EKINAI +08::01::2022 06:48:12|NOTHING ON THE DASH IT FUCKING OBSTRUCS VISION| +08::01::2022 06:48:12|ever +08::01::2022 06:48:13|????????????????????????????????? +08::01::2022 06:48:14|soft katysuhsha| +08::01::2022 06:48:14|REPES +08::01::2022 06:48:14|Spank Naomi and Alisa Y::Y| +08::01::2022 06:48:15|???????????? +08::01::2022 06:48:16|ROSEHIP IS A DORK| +08::01::2022 06:48:19|ASSAM SICK OF THIS SHIT| +08::01::2022 06:48:21|DRINKING BOOZE MAKES THE GUPPIES CUTER| +08::01::2022 06:48:23|DARJFAG SPOTTED| +08::01::2022 06:48:24|CYKA BLYET| +08::01::2022 06:48:25|this is buffer hell, im out boys| +08::01::2022 06:48:26|ONNA! +08::01::2022 06:48:26|oooooooooooooooooooooohhhhhhhhhhhhh +08::01::2022 06:48:26|MY WIFE, ROSEHIP| +08::01::2022 06:48:27|We're literally are going to wait 6-8 for the conclusion of the series lmao| +08::01::2022 06:48:27|uya~ +08::01::2022 06:48:29|NONNO <3| +08::01::2022 06:48:29|PEKOE SEGGGGGGGSSSSS| +08::01::2022 06:48:29|Cute moms and child| +08::01::2022 06:48:33|Rukuriri jobbed and got zero(0) knockouts again| +08::01::2022 06:48:39|NO YOU STAY RIGHT HERE ANON| +08::01::2022 06:48:40|6-8 potatoes?| +08::01::2022 06:48:43|zero (o)?| +08::01::2022 06:48:44|I will be 40 when I watch das Finale's last episode| +08::01::2022 06:48:45|maho and her wife| +08::01::2022 06:48:46|WHAT IS LOVE| +08::01::2022 06:48:47|don't care erika lol| +08::01::2022 06:48:48|god damn it fine| +08::01::2022 06:48:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:48:52|SLEEP IS NOT AN OPTION| +08::01::2022 06:48:53|STFU WANI| +08::01::2022 06:48:54|VCE +08::01::2022 06:48:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:48:56|TOTSUGEKI | +08::01::2022 06:48:56|Sleepy Dorks| +08::01::2022 06:48:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:48:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:48:58|OTSUBAKAS +08::01::2022 06:48:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:00|Is it too much to ask for an antomotive club tanned tomboy waifu| +08::01::2022 06:49:00|WHAT IS LOVE, BABY DON'T HURT ME| +08::01::2022 06:49:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:00|VCE +08::01::2022 06:49:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:02|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:03|GG BOIS, LETS MEET BACK TO WATCH THE CONCLUSION IN 50 YEARS| +08::01::2022 06:49:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:03|ANZAI +08::01::2022 06:49:03|VCE! +08::01::2022 06:49:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:03|WHAT IS DVCE| +08::01::2022 06:49:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:04|WHAT IS LOVE, BABY DON'T HURT ME| +08::01::2022 06:49:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:05|WHAT IS DUCE| +08::01::2022 06:49:05|NICE BOAT| +08::01::2022 06:49:06|WHAT IS LOVE| +08::01::2022 06:49:06|Worse track record compared tot he glorious Kah Veh-tan| +08::01::2022 06:49:06|VCE +08::01::2022 06:49:06|what is duce| +08::01::2022 06:49:06|NO TIME FOR REST, TOTSUGEKI| +08::01::2022 06:49:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:08|>when we were younger| +08::01::2022 06:49:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:09|WHAT IS LOVE| +08::01::2022 06:49:10|Nice to have something to look forward to| +08::01::2022 06:49:10|WHAT IS DUCE???? WHAT IS DUCE????| +08::01::2022 06:49:11|WHAT IS LOVE, BABY DON'T HURT ME NO MORE| +08::01::2022 06:49:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:11|WHAT IS LOVE?| +08::01::2022 06:49:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:12|I don't think I could have made it this far without GuP| +08::01::2022 06:49:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:14|VCE +08::01::2022 06:49:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:14|DUCE DUCE DUCE| +08::01::2022 06:49:16|WATASHI NO DEKIRU KOTO| +08::01::2022 06:49:17|>lights on| +08::01::2022 06:49:18|WHAT IS LOVE| +08::01::2022 06:49:18|VVVVVCE +08::01::2022 06:49:18|open eyes or u crash| +08::01::2022 06:49:20|DUCE DUCE DUCE| +08::01::2022 06:49:20|>missed the duce posting| +08::01::2022 06:49:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:49:30|duce spam is cancer| +08::01::2022 06:49:31|FUCK IM BEHIND| +08::01::2022 06:49:31|hjh +08::01::2022 06:49:32|Good end| +08::01::2022 06:49:32|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:49:32|DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 06:49:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:35|unnies... +08::01::2022 06:49:36|Sleepy rabbits| +08::01::2022 06:49:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:38|dvce spam is life| +08::01::2022 06:49:39|ODOKO +08::01::2022 06:49:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:41|Omg Azusa Sawa| +08::01::2022 06:49:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:45|MOMO A SHIT| +08::01::2022 06:49:46|das Finale 6 in 2028 if Actas doesn't slow down even more| +08::01::2022 06:49:47|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +08::01::2022 06:49:47|EETS +08::01::2022 06:49:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:48|amergirls +08::01::2022 06:49:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:49:50|DUCE DUCE DUCE| +08::01::2022 06:49:50|boko RESTORED| +08::01::2022 06:49:50|volleyball tits| +08::01::2022 06:49:51|She is always awake, always at the ready | +08::01::2022 06:49:51|TOMBOY WAIFU!| +08::01::2022 06:49:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:49:54|MORALITY: RESTORED| +08::01::2022 06:49:55|>mako and sodoko see the ship first| +08::01::2022 06:49:55|raftfahrzeughaftpflichtversicherung +08::01::2022 06:49:55|arisu 13 years old| +08::01::2022 06:49:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DCUE DUCE DUCE| +08::01::2022 06:49:57|I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +08::01::2022 06:49:57|See you all in six years!| +08::01::2022 06:49:58|BASED ::HIS::| +08::01::2022 06:50:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:50:01|_; +08::01::2022 06:50:01|Good movie| +08::01::2022 06:50:02|I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +08::01::2022 06:50:03|*WARGAMING JAPAN*| +08::01::2022 06:50:04|fuck mom and darj, praise boko and dvce| +08::01::2022 06:50:05|I HATE MOMO | +08::01::2022 06:50:06|ALICE IS 20 AND IN UNIVERSITY| +08::01::2022 06:50:07|ute +08::01::2022 06:50:07|I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +08::01::2022 06:50:11|So is it OVA time now?| +08::01::2022 06:50:12|BOCO LIVES ON| +08::01::2022 06:50:13|OJTEK!!!!!! +08::01::2022 06:50:15|ojtek +08::01::2022 06:50:15|OJAK?! +08::01::2022 06:50:16|OJTEK???? +08::01::2022 06:50:16|there she is boys| +08::01::2022 06:50:17|OVA TAIMU| +08::01::2022 06:50:18|AGAIN FAPP BREAK TIME?| +08::01::2022 06:50:19|Boko moment| +08::01::2022 06:50:19|ojak +08::01::2022 06:50:19|I JUST WANT TO WATCH THE STREAM WITH THE GIRLS BUT IT KEEPS BUFFERING| +08::01::2022 06:50:22|Girls und OVA| +08::01::2022 06:50:23|RAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG +08::01::2022 06:50:23|need to piss| +08::01::2022 06:50:23|Arisu War! next| +08::01::2022 06:50:23|D +08::01::2022 06:50:26|WHATS NEXT?| +08::01::2022 06:50:27|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 06:50:27|dat callback| +08::01::2022 06:50:28|D +08::01::2022 06:50:32|MIHO SMILE SO PRECIOUS| +08::01::2022 06:50:36|) +08::01::2022 06:50:38|D +08::01::2022 06:50:38|SEX WITH HANA| +08::01::2022 06:50:39|nice boat| +08::01::2022 06:50:41|Congrats, Schizos | +08::01::2022 06:50:41|I love you guys| +08::01::2022 06:50:42|nice boat| +08::01::2022 06:50:43|Yukari's wife Miho| +08::01::2022 06:50:43|) +08::01::2022 06:50:44|_; +08::01::2022 06:50:46|I LOVE YOU TOO| +08::01::2022 06:50:46|its coming home| +08::01::2022 06:50:46|bonus ova?| +08::01::2022 06:50:47|WHICH ONE IS NEXT| +08::01::2022 06:50:47|WHAT IS DUCE????| +08::01::2022 06:50:48|ino +08::01::2022 06:50:49|3 +08::01::2022 06:50:51|HAPPY NEW YEAR GENTS| +08::01::2022 06:50:55|^) +08::01::2022 06:50:55|WHAT IS LOVE| +08::01::2022 06:50:55|3 +08::01::2022 06:50:56|RISU +08::01::2022 06:50:57|BABY DONT HURT ME| +08::01::2022 06:50:59|pls i need break| +08::01::2022 06:50:59|3 +08::01::2022 06:50:59|BABY DON'T HURT ME| +08::01::2022 06:51:02|BEST OVA| +08::01::2022 06:51:02|NO BREAK BITCHES| +08::01::2022 06:51:03|NO MORE| +08::01::2022 06:51:03|seggs with alice| +08::01::2022 06:51:04|ooaraibros why are my eyes wet| +08::01::2022 06:51:06|RISU! +08::01::2022 06:51:07|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 06:51:07|NO MORE| +08::01::2022 06:51:09|nzu +08::01::2022 06:51:10|Get your duce spam ready for this she doesn't show up for a while| +08::01::2022 06:51:11|arisu school scouting ova| +08::01::2022 06:51:11|OOOOOOOOOOOOOOOOOOOOOO +08::01::2022 06:51:12|im fucking dying| +08::01::2022 06:51:13|UUUUUUUUUOOOOOOOOOOHHHHHHHHHHHHHHHHHH +08::01::2022 06:51:19|ALICE CUUUTE| +08::01::2022 06:51:20|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHH +08::01::2022 06:51:20|CUNNY UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH| +08::01::2022 06:51:21|OOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 06:51:24|C? +08::01::2022 06:51:25| +08::01::2022 06:51:26|UOOOOOOOOOOOOOOOOOOH UOOOOOOOOOOOOOOOOOOOOOOH| +08::01::2022 06:51:27|this is such a bullshit plot point| +08::01::2022 06:51:28|ARISU IS UNDER 14 YEARS OLD| +08::01::2022 06:51:29|RISU +08::01::2022 06:51:29|ALICE VORE| +08::01::2022 06:51:30|0; +08::01::2022 06:51:31|ARISU WHORE| +08::01::2022 06:51:32|UUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 06:51:33|OST JAM| +08::01::2022 06:51:33|I WANT TO SQUEEZE KARINA| +08::01::2022 06:51:37|SAGIS +08::01::2022 06:51:38|YUUKI AAAAAAAAAA| +08::01::2022 06:51:39|OOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 06:51:41|oT +08::01::2022 06:51:41|ARISU VORE!| +08::01::2022 06:51:43|ZUSA!!! +08::01::2022 06:51:43|Anzu is so cute and genki| +08::01::2022 06:51:44|get ready to spam duce she doesn't show for a while| +08::01::2022 06:51:47|MUST... FUCK... MOMOOOOOOOO| +08::01::2022 06:51:48|And then they convince her to join literally any other school| +08::01::2022 06:51:48|UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +08::01::2022 06:51:49|impregnate karina| +08::01::2022 06:51:49|(T o T)| +08::01::2022 06:51:51|my cute daughters| +08::01::2022 06:51:51|CUTE AIRSU| +08::01::2022 06:51:55|SO CUTE| +08::01::2022 06:51:58|>more uooooh UOH BROS MY DICK HURTS TOO MUCH I CAN'T TAKE IT| +08::01::2022 06:52:00|UTE!!! +08::01::2022 06:52:02|EMPAI +08::01::2022 06:52:03|UUUUUUUUUUUUUUTE +08::01::2022 06:52:06|azusa fucking cute| +08::01::2022 06:52:06|T o T| +08::01::2022 06:52:10|ENPAI +08::01::2022 06:52:12|oreshadowing +08::01::2022 06:52:12|CUUUUUUUUUUUUTE ToT| +08::01::2022 06:52:13|invest in azusa| +08::01::2022 06:52:16|ENPAI +08::01::2022 06:52:16|Rabbit team strong| +08::01::2022 06:52:20|REMINDER TO LOVE YOUR STATION| +08::01::2022 06:52:22|FUCK OFF MOMO| +08::01::2022 06:52:24|NCOMFIRMED +08::01::2022 06:52:26|(T o T) UUUUUUOHHHHHHHHHHH (T o T)| +08::01::2022 06:52:26|alice loves balls| +08::01::2022 06:52:27|momo mood killer| +08::01::2022 06:52:28|STOP HAVING FUN YOU ASSHOLES| +08::01::2022 06:52:28|AEKO +08::01::2022 06:52:29|>MOMO "NO FUN ALLOWED" RETARD| +08::01::2022 06:52:30|FUCK MOMO| +08::01::2022 06:52:30|DUMB MOMO CUNT| +08::01::2022 06:52:31|no fun allowed| +08::01::2022 06:52:31|momo ruin fun| +08::01::2022 06:52:32|I RABU MY STATION| +08::01::2022 06:52:32|I RABU MY STATION| +08::01::2022 06:52:35|cute boy| +08::01::2022 06:52:39|TRAIN TRAIN| +08::01::2022 06:52:40|I LOVE YOU| +08::01::2022 06:52:41|dumb momo she deserved to be locked out of uni| +08::01::2022 06:52:43|ORIKO +08::01::2022 06:52:43|OLLEYTITS +08::01::2022 06:52:45|alice likes balls?| +08::01::2022 06:52:46|cute boy and his harem| +08::01::2022 06:52:49|oy +08::01::2022 06:52:53|INPON +08::01::2022 06:52:53|oobs +08::01::2022 06:52:56|you just know| +08::01::2022 06:52:57|Desert Fox| +08::01::2022 06:52:59|FUWA FUWA TIME| +08::01::2022 06:53:00|impregnate taka-chan| +08::01::2022 06:53:00|EION +08::01::2022 06:53:03|>liking anime| +08::01::2022 06:53:03|holy tits| +08::01::2022 06:53:05|ANNERHEIM +08::01::2022 06:53:07|AKA-CHAN +08::01::2022 06:53:07|HIS:: +08::01::2022 06:53:10|FUN THINGS ARE FUN| +08::01::2022 06:53:10|The volleyball girls are sonfucking sexy| +08::01::2022 06:53:12|cringe squad| +08::01::2022 06:53:13|They just want to revive the volleyball club| +08::01::2022 06:53:15|budget walking| +08::01::2022 06:53:17|SHYGDDT +08::01::2022 06:53:18|imagine liking anime right guys| +08::01::2022 06:53:20|ALEXANDER WAS A BULGAR| +08::01::2022 06:53:20|What was the point of this OVA| +08::01::2022 06:53:20|BASED SQUAD| +08::01::2022 06:53:21|I love Akebi so much bros| +08::01::2022 06:53:23|Who's going to tell them senshado isn't volleyball | +08::01::2022 06:53:23|dork squad| +08::01::2022 06:53:24|NORIKO IS A GIRL| +08::01::2022 06:53:26|Imagine Alice in an auto club uniform. Stained with oil.| +08::01::2022 06:53:26|>Having volleyball autism| +08::01::2022 06:53:28|>ironic weeb| +08::01::2022 06:53:28|ho? +08::01::2022 06:53:29|>NOT LIKING ANIME| +08::01::2022 06:53:30|cunny,, that wewas the point| +08::01::2022 06:53:31|imagine 3some this whore| +08::01::2022 06:53:31|FUN POLICE PATROLLING THE STREETS| +08::01::2022 06:53:32|shes not a nerd| +08::01::2022 06:53:32|erd! +08::01::2022 06:53:32|THATS IT!| +08::01::2022 06:53:33|SORE DA | +08::01::2022 06:53:35|SODOCLONE SEX| +08::01::2022 06:53:35|SORE DA!!| +08::01::2022 06:53:37|sore da| +08::01::2022 06:53:37|SORE DA| +08::01::2022 06:53:38|SORE DA| +08::01::2022 06:53:38|subs +08::01::2022 06:53:39|look we need to save movie for the movies ok?| +08::01::2022 06:53:45|PUFF* +08::01::2022 06:53:45|LEFT FOR ME| +08::01::2022 06:53:45|blazed af| +08::01::2022 06:53:47|ARISU IS A DELINQUENT| +08::01::2022 06:53:49|asomi +08::01::2022 06:53:50|underage smoking? how about underage marriage| +08::01::2022 06:53:53|420 blaze it| +08::01::2022 06:53:54|Doing a burnout in front of the sodoclones| +08::01::2022 06:53:55|Based rebel| +08::01::2022 06:53:56|>school ship jannies| +08::01::2022 06:53:57|es +08::01::2022 06:53:59|REED +08::01::2022 06:54:00|typesetting +08::01::2022 06:54:01|UDE +08::01::2022 06:54:02|Wow Alice is so cool| +08::01::2022 06:54:02|wwwwwwwww +08::01::2022 06:54:02|puff8 +08::01::2022 06:54:02|MOKING +08::01::2022 06:54:02|UDE +08::01::2022 06:54:03|GANBARE GOMOYO!| +08::01::2022 06:54:05|EED +08::01::2022 06:54:09|she doesn't even have anything in her hand| +08::01::2022 06:54:10|REED +08::01::2022 06:54:10|UDE +08::01::2022 06:54:11|MAO +08::01::2022 06:54:12|FUCK EM UP GOMOYO| +08::01::2022 06:54:13|DUDE TOBACCO LMAO| +08::01::2022 06:54:13|MAO +08::01::2022 06:54:13|AGUMI +08::01::2022 06:54:17|UDE +08::01::2022 06:54:17|CUTE BROWN GIRLS| +08::01::2022 06:54:20|return to delinquent| +08::01::2022 06:54:21|need tomboy gf| +08::01::2022 06:54:22|SEX WITH ARISU| +08::01::2022 06:54:22|>unknwon driver| +08::01::2022 06:54:23|I LOVE creed, have you ever heard of creed| +08::01::2022 06:54:23|>no tabako| +08::01::2022 06:54:24|no smokin wtf| +08::01::2022 06:54:29|KAM ON SANNER| +08::01::2022 06:54:31|return to dude| +08::01::2022 06:54:32|ANZU CLONE| +08::01::2022 06:54:32|o:: +08::01::2022 06:54:32|Girls...Alice doesn't drive| +08::01::2022 06:54:33|But Alice is a commander| +08::01::2022 06:54:35|rown +08::01::2022 06:54:37|BROWN GIRLS| +08::01::2022 06:54:37|cute morals committee| +08::01::2022 06:54:39|Best uniform| +08::01::2022 06:54:39|Nice shitbox| +08::01::2022 06:54:41|ho +08::01::2022 06:54:41|Rally English| +08::01::2022 06:54:42|Alice doesn't drive...| +08::01::2022 06:54:43|GIRLS UND RALLY| +08::01::2022 06:54:43|Arisu wasn't driving though?| +08::01::2022 06:54:43|INITIAL g| +08::01::2022 06:54:44|Wasn't she commanding | +08::01::2022 06:54:45|Alice is 13....| +08::01::2022 06:54:51|based ::o::| +08::01::2022 06:54:51|ho? +08::01::2022 06:54:52|OOOO +08::01::2022 06:54:53|AMERS +08::01::2022 06:54:54|PSP +08::01::2022 06:54:55|TANNED BODY| +08::01::2022 06:54:56|PURO PINCHE| +08::01::2022 06:54:57|if you like brown girls save it for andou, not on these wh::o::res| +08::01::2022 06:54:58|NIKI LAUDA| +08::01::2022 06:55:02|onhunbros... +08::01::2022 06:55:03|1 +08::01::2022 06:55:04|WHaT ABOUT MUH COPYRIGHT| +08::01::2022 06:55:04|I bet Arisu is at least a decent driver though| +08::01::2022 06:55:05|NO MAYKEL NO NO| +08::01::2022 06:55:06|BRING BACK GROUP B| +08::01::2022 06:55:06|v:: +08::01::2022 06:55:06|TANNED GIRLS ARE THE BEST| +08::01::2022 06:55:08|w::o::res +08::01::2022 06:55:08|MAX MAX MAX SUPER MAX MAX| +08::01::2022 06:55:09|ROOMERS +08::01::2022 06:55:09|THE PERMISSIONS| +08::01::2022 06:55:10|Rise up panzer bros| +08::01::2022 06:55:18|NEKOTA IS A NEET| +08::01::2022 06:55:19|GAMERS ARE THE MOST OPRESSED RACE IN THE WORLD| +08::01::2022 06:55:19|Who's going to tell them senshado isn't street racing | +08::01::2022 06:55:19|SUPER MAX MAX SUPER SUPER MAX| +08::01::2022 06:55:19|GAMER GIRLS| +08::01::2022 06:55:19|>psp >not getting hipchecked by plesioth| +08::01::2022 06:55:20|IDOLSHIT STRIKES AGAIN| +08::01::2022 06:55:20|IURA +08::01::2022 06:55:21|okemon +08::01::2022 06:55:23|PANZER BED| +08::01::2022 06:55:24|FUCKING CASUALS| +08::01::2022 06:55:25|YAN +08::01::2022 06:55:27|fucking casuals| +08::01::2022 06:55:28|LOOG +08::01::2022 06:55:28|DOLM@STER +08::01::2022 06:55:30|EEEEERD +08::01::2022 06:55:31|ASUALS +08::01::2022 06:55:33|I LOVE HARUKA| +08::01::2022 06:55:33|Calling Alice a normie, these gamers are| +08::01::2022 06:55:35|WRECK ARISU'S CUNNY| +08::01::2022 06:55:36|ODOKETE +08::01::2022 06:55:36|::v:: btfo| +08::01::2022 06:55:36|bokotists +08::01::2022 06:55:37|okotism +08::01::2022 06:55:37|alice plays war thunder| +08::01::2022 06:55:37|v::irgins +08::01::2022 06:55:37|I cant believe the::o:: girls are gonna graduate bros...| +08::01::2022 06:55:38|NORMIES REEEE| +08::01::2022 06:55:39|filthy handheld players| +08::01::2022 06:55:39|ankbed +08::01::2022 06:55:40|okosexual +08::01::2022 06:55:40|segggs with boko dildo| +08::01::2022 06:55:41|GANG NYA| +08::01::2022 06:55:42|UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +08::01::2022 06:55:45|OOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 06:55:49|GANBARE BOKO!| +08::01::2022 06:55:50|Based Mako| +08::01::2022 06:55:51|TWO GIRLS CAN'T HAVE SEX| +08::01::2022 06:55:51|SLEEPY MAKO| +08::01::2022 06:55:54|SIESTA CHADS| +08::01::2022 06:55:56|AHHHHHHHHHHHHHHHHHHHHH MY ASS HURTTTTSS| +08::01::2022 06:55:57|boko boko| +08::01::2022 06:55:57|SIESTA SYSTEM| +08::01::2022 06:55:58|SLEEPY SEX WITH MAKO| +08::01::2022 06:56:00|WHO TRYNA WATCH THE BOKO DVD| +08::01::2022 06:56:00|BUY THE DVDS| +08::01::2022 06:56:02|MIHO X ALICE| +08::01::2022 06:56:04|boko haram| +08::01::2022 06:56:05|Reminder to do a quick refresh everyone| +08::01::2022 06:56:06|I wish I could visit the Boko Museum with someone| +08::01::2022 06:56:06|she sleep| +08::01::2022 06:56:07|ased +08::01::2022 06:56:10|Boko's bokos| +08::01::2022 06:56:13|Boko halal| +08::01::2022 06:56:14|Alice x Futa Miho| +08::01::2022 06:56:16|UOH UOH UOH | +08::01::2022 06:56:17|miho x boko| +08::01::2022 06:56:17|I-I'll visit wit h oyu, anon| +08::01::2022 06:56:19|RAPE CORRECTION| +08::01::2022 06:56:19|es +08::01::2022 06:56:22|SLEEPY SLEEP WITH MAKO| +08::01::2022 06:56:24|>half glasses| +08::01::2022 06:56:25|>capture ar 13 year old heart| +08::01::2022 06:56:26|aomushi canon| +08::01::2022 06:56:26|UTE +08::01::2022 06:56:28|Azusa you fucking dork| +08::01::2022 06:56:29|masochist bitch| +08::01::2022 06:56:34|dumb momo| +08::01::2022 06:56:36|ORKS +08::01::2022 06:56:36|Need correction| +08::01::2022 06:56:39|aomushi should add balls tbh| +08::01::2022 06:56:42|ZUSA!!!! +08::01::2022 06:56:42|AWAII +08::01::2022 06:56:44|etard +08::01::2022 06:56:49|nzu +08::01::2022 06:56:49|momo retard| +08::01::2022 06:56:50|ORIKO +08::01::2022 06:56:52|bruh momento| +08::01::2022 06:56:52|EIMU +08::01::2022 06:56:53|FUCK YOU MOMO| +08::01::2022 06:56:56|Ha, implying we have a budget | +08::01::2022 06:56:58|let them vibe momo| +08::01::2022 06:56:58|how did momo get into the student council| +08::01::2022 06:57:00|I LOVE YOU MOMO| +08::01::2022 06:57:00|MOMO IS CUTE! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +08::01::2022 06:57:03| 下 +08::01::2022 06:57:04|FUCK YOU MOMO| +08::01::2022 06:57:06|No budget? Momo's a cheapskate| +08::01::2022 06:57:09|normal +08::01::2022 06:57:09|epotism +08::01::2022 06:57:09|who tf loves momo| +08::01::2022 06:57:09|I HATE MOMO| +08::01::2022 06:57:12|MOMO SEETHING| +08::01::2022 06:57:12|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 06:57:14|LOVE YUO MOMO| +08::01::2022 06:57:15|NO FUN ALLOWED| +08::01::2022 06:57:16|Momo worst girl| +08::01::2022 06:57:16|go home momo| +08::01::2022 06:57:16|I LOVE MOMO VERY MUCH| +08::01::2022 06:57:17|none of them are normal| +08::01::2022 06:57:18|I hope Momo doesn't repeat| +08::01::2022 06:57:19|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 06:57:19|not even momo's parents love her| +08::01::2022 06:57:20|JUST BE YOUR SELF| +08::01::2022 06:57:24|FUTSUU TTE IUNA| +08::01::2022 06:57:24|MOMO RETARD| +08::01::2022 06:57:24|just b urself| +08::01::2022 06:57:26| +08::01::2022 06:57:26|>just b urself bro| +08::01::2022 06:57:27|ed +08::01::2022 06:57:28|just b yourself| +08::01::2022 06:57:28|MY WIFE ARISU TOO CUTE| +08::01::2022 06:57:28| +08::01::2022 06:57:29|tfw momo| +08::01::2022 06:57:32|EAD +08::01::2022 06:57:33|IP +08::01::2022 06:57:33| +08::01::2022 06:57:33|O S T| +08::01::2022 06:57:34| +08::01::2022 06:57:34|Wow, miho is so smart| +08::01::2022 06:57:35|>lol jus b ur self| +08::01::2022 06:57:36|I can't believe Arisu is fucking dead| +08::01::2022 06:57:37|F on arrival| +08::01::2022 06:57:38|Rape correction Rape correction Rape correction Rape correction Rape correction| +08::01::2022 06:57:39|every one is an autist already so it's fine| +08::01::2022 06:57:39|SHE FUKCING DIED| +08::01::2022 06:57:40|Big tender for a big school ship.| +08::01::2022 06:57:40| +08::01::2022 06:57:40|True boko fan| +08::01::2022 06:57:40|DRINKING ARISUS VOMIt| +08::01::2022 06:57:40|easick +08::01::2022 06:57:41|The only normal high school girl| +08::01::2022 06:57:42|>she's fucking dead| +08::01::2022 06:57:43|EATH +08::01::2022 06:57:44|(T o T)| +08::01::2022 06:57:45|ed +08::01::2022 06:57:46|easick>> +08::01::2022 06:57:47|SOMEONE TAKE MY WIFE TO THE SICK BAY| +08::01::2022 06:57:48|alice moment| +08::01::2022 06:57:48|MOMO YOU CAN'T EVEN HIT THE BROADSIDE OF THE BARN YOU DUMB BITCH| +08::01::2022 06:57:50|OUKOSO +08::01::2022 06:57:51| +08::01::2022 06:57:51|OOOOOOOOOOHHHHHH +08::01::2022 06:57:51|el +08::01::2022 06:57:53|risu... +08::01::2022 06:57:53|apable?? +08::01::2022 06:57:53|ded +08::01::2022 06:57:54| +08::01::2022 06:57:54|is she okay| +08::01::2022 06:57:54|ruh +08::01::2022 06:57:55|ARISU IS DEAD !!| +08::01::2022 06:57:55|OOOOOOHHHH +08::01::2022 06:57:55|LAND LUBBER| +08::01::2022 06:57:55| +08::01::2022 06:57:56|>closing eyes| +08::01::2022 06:57:56|would you even get seasick on a ship that big?| +08::01::2022 06:57:56|SHE'S FUCKING DEAD| +08::01::2022 06:57:56|Oh great, she's dead| +08::01::2022 06:57:57|IP +08::01::2022 06:57:58|HEAD +08::01::2022 06:57:59|>IT WORKED| +08::01::2022 06:57:59|UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +08::01::2022 06:58:00|Momo is such a fucking dork| +08::01::2022 06:58:01|LAND LUBBER| +08::01::2022 06:58:02|OREHEAD +08::01::2022 06:58:02|that sfx| +08::01::2022 06:58:03|ek +08::01::2022 06:58:03|otatoE +08::01::2022 06:58:03|>it worked| +08::01::2022 06:58:05|What a DORK| +08::01::2022 06:58:06|OOOOOHHHHHHHHH +08::01::2022 06:58:07|SASUGA KAICHOU| +08::01::2022 06:58:07|feeling seasick? just forget about it| +08::01::2022 06:58:10|stick my dick on arisu forehead| +08::01::2022 06:58:11|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 06:58:11|ANZU IS SO SMART| +08::01::2022 06:58:11|??????????????????????? +08::01::2022 06:58:13|CUNNY POTATO| +08::01::2022 06:58:14|UCE +08::01::2022 06:58:15|OTATO'D +08::01::2022 06:58:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:15|momo retard| +08::01::2022 06:58:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:16|???????????????????????????? +08::01::2022 06:58:16|at +08::01::2022 06:58:16|DUCE | +08::01::2022 06:58:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:17|TALIANS +08::01::2022 06:58:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:19|UTE +08::01::2022 06:58:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:20|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 06:58:21|DUCE DUCE DUCE DUCE| +08::01::2022 06:58:22|IWTWM +08::01::2022 06:58:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:22|astaaaaaaaaaaa +08::01::2022 06:58:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:23|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:23|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:25|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:28|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +08::01::2022 06:58:28|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:58:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:29|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:30|MORE DUCE| +08::01::2022 06:58:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:31|DVCE PLEASE RUB ON MY CHEEK| +08::01::2022 06:58:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:32|DUCE DUCE DUCE| +08::01::2022 06:58:32|IWTWM +08::01::2022 06:58:33|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:33| +08::01::2022 06:58:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +08::01::2022 06:58:34|DUCE DUCE DUCE| +08::01::2022 06:58:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:35|EPPERONI +08::01::2022 06:58:35|I WANT DUCE TO RUB HERSELF ONTO ME| +08::01::2022 06:58:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:58:36|TFO +08::01::2022 06:58:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:37|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:37|lolis hate pizza| +08::01::2022 06:58:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUC E DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:40|join anzio alice| +08::01::2022 06:58:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:58:41|ARISU DABBING ON ITALIANS| +08::01::2022 06:58:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:42|wwwwwwwwwwwww +08::01::2022 06:58:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:42|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:58:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:44|APE +08::01::2022 06:58:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:45|DUCEBROS.....I WANT TO FEEL| +08::01::2022 06:58:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +08::01::2022 06:58:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:47|Awful taste| +08::01::2022 06:58:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:47|ROTIC +08::01::2022 06:58:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:48|DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCE| +08::01::2022 06:58:49|Not liking cheese, what a pleb taste| +08::01::2022 06:58:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:58:50|UTE +08::01::2022 06:58:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:50|GOD I WISH THAT WERE ME| +08::01::2022 06:58:50|SMELLY AND WEARS A WIG| +08::01::2022 06:58:51|UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH TuT| +08::01::2022 06:58:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:51|DUCE SMELLS GOOD| +08::01::2022 06:58:51|oh +08::01::2022 06:58:51|WTF I HATE ALICE NOW| +08::01::2022 06:58:51|DVCE HIJACK| +08::01::2022 06:58:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:53|NO ONE WILL KNOW I WANT TO RAPE ARISU| +08::01::2022 06:58:53|UTE +08::01::2022 06:58:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 06:58:56|WHAT THE FUCK| +08::01::2022 06:58:56|>SHIT TASTE| +08::01::2022 06:58:56|Wow Alice, such disrespect to Duce. Must punish the Johnnies with pasta and diabetes| +08::01::2022 06:58:56|uce. +08::01::2022 06:58:57|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 06:58:57|ooooooooooooooooooooooooooooooooooooohhhhhhhhhhhhhhh +08::01::2022 06:58:58|wooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooh +08::01::2022 06:58:58|OOOOOOOOOOOOOOOHHHHHHHHHHHHHHH +08::01::2022 06:58:58|I want duce to rub against me| +08::01::2022 06:58:58|IT'S THE THING| +08::01::2022 06:58:59|UTE +08::01::2022 06:58:59|duce commit sex assult| +08::01::2022 06:59:00|OOOOOOOOOUUUUUUUUUUUUUUUUUUUUUU +08::01::2022 06:59:00|so smol| +08::01::2022 06:59:00|YOU WHAT| +08::01::2022 06:59:01|stop duce spamming retards| +08::01::2022 06:59:02|ANNEN +08::01::2022 06:59:02|Alice ToT| +08::01::2022 06:59:05|what kid doesn't like cheese?| +08::01::2022 06:59:09|DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 06:59:10|OOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHH +08::01::2022 06:59:10|What school DID she go to? She doesn't appear in any of the schools in the Finale| +08::01::2022 06:59:11|o +08::01::2022 06:59:12|CUTE CUTE CUTE| +08::01::2022 06:59:12|DAMN SEXY CHILD| +08::01::2022 06:59:12|>DORK CLUB| +08::01::2022 06:59:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 06:59:15|OHHHHHHHHH +08::01::2022 06:59:16|need ninja club ova| +08::01::2022 06:59:16|RPRPRPRPPRPRRPPRR +08::01::2022 06:59:17|UUUUUUOOOOOOOOOOOOOHHHHHHHHHHHHHHH +08::01::2022 06:59:17|oT +08::01::2022 06:59:18|DAMN KID| +08::01::2022 06:59:18|ninja training?| +08::01::2022 06:59:18|I didn't| +08::01::2022 06:59:19|There's cheese all over my room faggot| +08::01::2022 06:59:20|Italian school so good. Drive fast and eat past| +08::01::2022 06:59:20|>ninja tactics| +08::01::2022 06:59:21|OOOOOOOOOOOOOOOOOOOOO +08::01::2022 06:59:22|she went to universiy| +08::01::2022 06:59:22|oooooooooooooooooooh +08::01::2022 06:59:22|wtf is that in the background i never saw it before| +08::01::2022 06:59:23|this only needs the futa cock and it'll be perfect| +08::01::2022 06:59:26|oT +08::01::2022 06:59:29|uta +08::01::2022 06:59:30|ASS +08::01::2022 06:59:34|size of penis?| +08::01::2022 06:59:35|UCK +08::01::2022 06:59:37|INJAS +08::01::2022 06:59:38|OIPUSSY +08::01::2022 06:59:38|duck team raping noriko| +08::01::2022 06:59:40|nice duck| +08::01::2022 06:59:41|AEKO +08::01::2022 06:59:41|utism +08::01::2022 06:59:44|This school is based as fuck| +08::01::2022 06:59:44|ALICE HIPS UOOOOOOOOOH| +08::01::2022 06:59:45|TEAM AUTISM| +08::01::2022 06:59:47|does miho or maho have better futa cock| +08::01::2022 06:59:52|Miho duh| +08::01::2022 06:59:53|VE +08::01::2022 06:59:53|I CANT HANDLE THIS AUTISM| +08::01::2022 06:59:54|UCKS +08::01::2022 06:59:55|boy shorter than miho| +08::01::2022 06:59:56|based ::his::| +08::01::2022 06:59:57|time to ball up| +08::01::2022 06:59:58|utism +08::01::2022 06:59:58|uck +08::01::2022 06:59:59|utists +08::01::2022 06:59:59|all teams are team autist| +08::01::2022 07:00:00|IHO +08::01::2022 07:00:04|GOBLIN SLAYER| +08::01::2022 07:00:08|AISER +08::01::2022 07:00:10|::his:: even top autistic for Alice| +08::01::2022 07:00:11|OUL +08::01::2022 07:00:13|She's so cute and funny| +08::01::2022 07:00:14| +08::01::2022 07:00:14|BASED ::HIS::| +08::01::2022 07:00:14|ENPAI +08::01::2022 07:00:15|EMPAI +08::01::2022 07:00:16|dont let her near the sluts| +08::01::2022 07:00:16|wanna breed the rabbits| +08::01::2022 07:00:20|EEEEERD +08::01::2022 07:00:21|YAAAAAA +08::01::2022 07:00:23|Saki completely missing the reaction qte| +08::01::2022 07:00:23|UOOOOOOOOOOH +08::01::2022 07:00:24|YAKATA-SAMA +08::01::2022 07:00:25|rabbits are gonna corrupt arisu| +08::01::2022 07:00:25|UUUOOOHH SENPAI| +08::01::2022 07:00:26|UUUUUUUUUUUUUUUUUUUUUUUUTE +08::01::2022 07:00:31|arisu smart!| +08::01::2022 07:00:32|6 +08::01::2022 07:00:32|STRAIGHT SIX BROS| +08::01::2022 07:00:33|o:: +08::01::2022 07:00:33|OOOOOOOOOOOOOH +08::01::2022 07:00:34|Alice tensau| +08::01::2022 07:00:34|YAAAAAAA +08::01::2022 07:00:35|STRAITO 6| +08::01::2022 07:00:36|STRAIGHT SEX| +08::01::2022 07:00:38|FUCK THE RULES| +08::01::2022 07:00:38|C T U| +08::01::2022 07:00:41|fit:: +08::01::2022 07:00:42|suyoi +08::01::2022 07:00:43|SMELLY BROWN MECHANIC| +08::01::2022 07:00:44|IPPED +08::01::2022 07:00:44|DO YOU LIKE MY CAR| +08::01::2022 07:00:45|EUGOT +08::01::2022 07:00:45|FUCKI OFF JANNIES| +08::01::2022 07:00:45|>EUROBEATS INTENSIFY| +08::01::2022 07:00:45|FIT:: +08::01::2022 07:00:46|>Cunny UOOOH-ing over cunny | +08::01::2022 07:00:47|IRIN +08::01::2022 07:00:48|ripped gamer| +08::01::2022 07:00:48|>that much displacement increase| +08::01::2022 07:00:48|TWO SCOOPS| +08::01::2022 07:00:52|ugoiiii +08::01::2022 07:00:52|WOLE +08::01::2022 07:00:53|EW +08::01::2022 07:00:53|ar +08::01::2022 07:00:55|::fit::bros RISE UP| +08::01::2022 07:01:00|post physique| +08::01::2022 07:01:00|WOLE +08::01::2022 07:01:00|Nekota going in hard| +08::01::2022 07:01:00|UNS +08::01::2022 07:01:01|LUFF +08::01::2022 07:01:02|Mako is literally me| +08::01::2022 07:01:02|YA +08::01::2022 07:01:04|fit:: +08::01::2022 07:01:07|NYAN AF| +08::01::2022 07:01:08|UNS-NYA +08::01::2022 07:01:11|I want nekota to pin me down and rape me| +08::01::2022 07:01:13|NYA WITH THE BICEPS| +08::01::2022 07:01:16|st +08::01::2022 07:01:17|Holy autism| +08::01::2022 07:01:18|Bribing the child with trips to boko| +08::01::2022 07:01:23|take the invermectin alice| +08::01::2022 07:01:25|slice of life| +08::01::2022 07:01:26|YUKARI IS MY SPIRIT ANIMAL| +08::01::2022 07:01:27|Too bad the child craves war| +08::01::2022 07:01:30|Imagine the gamers manhandling Alice's tiny body.....| +08::01::2022 07:01:30|PEKO PEKO| +08::01::2022 07:01:31|all wives| +08::01::2022 07:01:31|OUL +08::01::2022 07:01:34|oT +08::01::2022 07:01:37|Sunkus ;_;7| +08::01::2022 07:01:39|theyre on a ship still, right?| +08::01::2022 07:01:40|COMFY SOL| +08::01::2022 07:01:40|D +08::01::2022 07:01:40|Still not as bad as when the university girls groomed her| +08::01::2022 07:01:41|yummy food| +08::01::2022 07:01:43|ABESHIKO +08::01::2022 07:01:43|UUUUUUUUUUUUUUUUUUUUUUUUTE +08::01::2022 07:01:44|UTE +08::01::2022 07:01:45|rip sunkus| +08::01::2022 07:01:45|OHHHHHHHHHHHH +08::01::2022 07:01:45|UTE +08::01::2022 07:01:45|UTISM +08::01::2022 07:01:46|C CUTTTTTTTTTTTTTTTTTTTTTTTEEEEEEEEEEEEEEE| +08::01::2022 07:01:47|UUUUUUUUUUUUUUUUUUUUUUTE +08::01::2022 07:01:47|OOOOOOOOHHHHHHH +08::01::2022 07:01:47|UTE +08::01::2022 07:01:48|OHHHHHHHHHH +08::01::2022 07:01:49|utism +08::01::2022 07:01:49|aaaaaaa +08::01::2022 07:01:49|fucking small town on the ship| +08::01::2022 07:01:50|BOKO PJs| +08::01::2022 07:01:50|flashbacks +08::01::2022 07:01:51|UTE +08::01::2022 07:01:51|UUUUUUUUUUUUUUUUUUUUUUUTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 07:01:52|WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHH +08::01::2022 07:01:52|UUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 07:01:52|OOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 07:01:53|OT +08::01::2022 07:01:53|OOOOOOOOOOOOOOOOOOOH +08::01::2022 07:01:53|OOOOOOOOOOOOOOOH +08::01::2022 07:01:54|BUNNY BOKO| +08::01::2022 07:01:54|OAH +08::01::2022 07:01:54|UTE +08::01::2022 07:01:54|OOOOOOHHHHHH +08::01::2022 07:01:54|nnnnnghh +08::01::2022 07:01:55|i know my life would be perfect here, but that rivalry doe| +08::01::2022 07:01:56|OOOOOOOOOOOOH +08::01::2022 07:01:57|UOOOOOOOOOOOOH 😭| +08::01::2022 07:01:57|CUTE CUTE CUTE CUTE| +08::01::2022 07:01:58|LETS ALL LOVE ALICE| +08::01::2022 07:01:58|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 07:01:59|OOOOOOOOOOOOOOOOOOOOOH +08::01::2022 07:01:59|THIS MESUGAKIIIIII| +08::01::2022 07:02:01| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +08::01::2022 07:02:02|NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI | +08::01::2022 07:02:02|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +08::01::2022 07:02:03|I want to impregnate Alice| +08::01::2022 07:02:04|I WANT TO C T U ALIS| +08::01::2022 07:02:04|OOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 07:02:04|LETS ALL LOVE ALICE| +08::01::2022 07:02:05|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 07:02:06|Wasn't the french uni girl borederline crazy in the manga?| +08::01::2022 07:02:07|boko pjs| +08::01::2022 07:02:07|awaiiiiiiii +08::01::2022 07:02:07|UTE +08::01::2022 07:02:07|ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +08::01::2022 07:02:08|KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI | +08::01::2022 07:02:08|OKOOOOOOOOOOOOOOOOOO +08::01::2022 07:02:09| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +08::01::2022 07:02:09| ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE F| +08::01::2022 07:02:10|Y U K A R I IS MY W I F E| +08::01::2022 07:02:10|BASED GRAPE CHAN| +08::01::2022 07:02:10|subs +08::01::2022 07:02:10|UTE +08::01::2022 07:02:10|What a weird fetish]| +08::01::2022 07:02:11|ANBARE +08::01::2022 07:02:11|GANBARE BOKO| +08::01::2022 07:02:11|OKO +08::01::2022 07:02:12|Miho the cunnysouer| +08::01::2022 07:02:12|OOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 07:02:13|ute +08::01::2022 07:02:13|UTE +08::01::2022 07:02:13|OKO!!! +08::01::2022 07:02:13|ganbare boko| +08::01::2022 07:02:13|i know where this is going| +08::01::2022 07:02:14|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 07:02:15|IT'S TIME| +08::01::2022 07:02:15|GANBARE BOKO| +08::01::2022 07:02:15|ooooooooooooooohoohohoohohoohhoho +08::01::2022 07:02:15|GANBARE BOKOOOOO| +08::01::2022 07:02:16|FUCKING MURDER THEM BOKO| +08::01::2022 07:02:17|LETS ALL HIT BOKO| +08::01::2022 07:02:19|OKOOOO +08::01::2022 07:02:20|ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +08::01::2022 07:02:21|Who exactly is the target audience for Boko?| +08::01::2022 07:02:23|>ywn watch dumb shit with Miho| +08::01::2022 07:02:23|AOMUSHI CANON??| +08::01::2022 07:02:25|>All those doujins| +08::01::2022 07:02:27|YOU CAN THIS, BOKO| +08::01::2022 07:02:28|NO ARISU DON'T DRINK THE TEA IT HAS APHRODISIACS| +08::01::2022 07:02:28|canon doujin canon doujin canon doujin canon doujin canon doujin canon doujin | +08::01::2022 07:02:29|utists +08::01::2022 07:02:29|RIP BOKO| +08::01::2022 07:02:29|UBS +08::01::2022 07:02:30|THANKS SUBS| +08::01::2022 07:02:30|BOKO HARAM| +08::01::2022 07:02:30|SLEEPING ARISU EROTIC| +08::01::2022 07:02:32|I fear for their future husbands | +08::01::2022 07:02:33|GANBARE BOKO| +08::01::2022 07:02:34|UTE +08::01::2022 07:02:34|OH +08::01::2022 07:02:35|UOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHH SSSSSSSSSEEEEEEEEEEEEEEEEGGGGGGGGGGGGGGGGSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS | +08::01::2022 07:02:35|Get wrecked Boko!| +08::01::2022 07:02:35|Miho and Arisu apparently| +08::01::2022 07:02:36|THE DOUJINS WRITE THEMSELVES| +08::01::2022 07:02:36|EX? +08::01::2022 07:02:37|masochist bitch| +08::01::2022 07:02:37|I want to sleep with Miho.....| +08::01::2022 07:02:38|UTE +08::01::2022 07:02:38|Ganbare Boko!!!| +08::01::2022 07:02:39|UTE +08::01::2022 07:02:39|US +08::01::2022 07:02:40|DON'T LET MIHO RAPE ARISU| +08::01::2022 07:02:41|i never read this doujin| +08::01::2022 07:02:42|shiohama doujin so good| +08::01::2022 07:02:43|OPERATION PUNCHY| +08::01::2022 07:02:45|Mere moments from being Operation Punchy'd| +08::01::2022 07:02:46|UTE +08::01::2022 07:02:46|I want Arisu to beat me up and call me boko| +08::01::2022 07:02:46|ased +08::01::2022 07:02:49|NONSTOP MIHO X ARISU FUTA SEX| +08::01::2022 07:02:49|NZU +08::01::2022 07:02:50|COMMENCE OPERATION PUNCHY| +08::01::2022 07:02:53|boko bitch maker| +08::01::2022 07:02:53|ToT | +08::01::2022 07:02:55|THE CUTEST| +08::01::2022 07:02:56|OOOOOOOOOOOOOH +08::01::2022 07:02:59|Wait, I can't friendly fire a teammate | +08::01::2022 07:03:00|UTISM +08::01::2022 07:03:02|foreshadowing +08::01::2022 07:03:02| +08::01::2022 07:03:02|OH SHI-| +08::01::2022 07:03:03|graduate +08::01::2022 07:03:04|oh no| +08::01::2022 07:03:07|AH FUCK| +08::01::2022 07:03:07|H +08::01::2022 07:03:08|Arisu is literally autism| +08::01::2022 07:03:08|And so she left | +08::01::2022 07:03:09|mao +08::01::2022 07:03:11| +08::01::2022 07:03:11|ORESHADOWING +08::01::2022 07:03:11|And yet, she never fights Miho again...| +08::01::2022 07:03:11|Oh no| +08::01::2022 07:03:12|UINED +08::01::2022 07:03:13| +08::01::2022 07:03:14|ased +08::01::2022 07:03:15|SO CLOSE.............| +08::01::2022 07:03:16|lmao bye| +08::01::2022 07:03:18|>Momo >graduate| +08::01::2022 07:03:21|Mission failed: well get em next time| +08::01::2022 07:03:22|>foreshadowing this hard| +08::01::2022 07:03:23|seriously though| +08::01::2022 07:03:24|REMINDER THAT MOMO WILL REPEAT A YEAR| +08::01::2022 07:03:26|EEEEEEEEEEEEEH? +08::01::2022 07:03:27|wwwwwwwwwwwwwwwwwwwwwww +08::01::2022 07:03:27|WOW MOMO FUCK YOU| +08::01::2022 07:03:27|D? +08::01::2022 07:03:28|oreshadowing +08::01::2022 07:03:30|MOMO IS CUTE! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +08::01::2022 07:03:31|ENTAH ENTAH MISSION| +08::01::2022 07:03:31|ENTER ENTER| +08::01::2022 07:03:32|ENTAH ENTAH MISSION| +08::01::2022 07:03:32|I'm slain| +08::01::2022 07:03:33|wtf momo| +08::01::2022 07:03:33|D?!?!?!?! +08::01::2022 07:03:33|ENTAH ENTAH MISSION| +08::01::2022 07:03:34|MOMO IS A DUMB| +08::01::2022 07:03:34|ENTER ENTER| +08::01::2022 07:03:34|NTER +08::01::2022 07:03:35|ENTAH ENTAH| +08::01::2022 07:03:35|LMAO fucking Momo| +08::01::2022 07:03:36|Holy shit!| +08::01::2022 07:03:36|MOMO RETARD| +08::01::2022 07:03:37|EEEEEEEEEEEEEEEEEEEHH +08::01::2022 07:03:37|Just wait until she teams up with her sister [spoiler]Mika[::spoiler]| +08::01::2022 07:03:37|ENTAH ENTAH| +08::01::2022 07:03:37|ENTA ENTA MISSION| +08::01::2022 07:03:38|nzu +08::01::2022 07:03:38|>ENTER MISSION FOR THE FIRST TIME| +08::01::2022 07:03:39|SSHOUKENMEI +08::01::2022 07:03:39|Miho status: Entered| +08::01::2022 07:03:40|ENTER ENTER MISSION| +08::01::2022 07:03:41|Mission status: Entered| +08::01::2022 07:03:41|MISSION STATUS:| +08::01::2022 07:03:42|HOLY SHIT ITS ENTER ENTER MISSION| +08::01::2022 07:03:43|join koromourimine| +08::01::2022 07:03:44|IS IT DF1 next??| +08::01::2022 07:03:44|FIRST ENTAH ENTAH| +08::01::2022 07:03:45|COME ON| +08::01::2022 07:03:45|ENTER ENTER MISSION| +08::01::2022 07:03:45|eeeeeeeeeeeeeh +08::01::2022 07:03:47|I love this ending| +08::01::2022 07:03:48|ENTA ENTA MISSION| +08::01::2022 07:03:49|Momo fuming. No Shimada fundings| +08::01::2022 07:03:49|IN THE END, NOTHING REALLY MATTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTERED| +08::01::2022 07:03:49|arisu tonk| +08::01::2022 07:03:50|ENTA ENTA| +08::01::2022 07:03:50|INTER INTER MISSION| +08::01::2022 07:03:51|PRESS B TO BOUNCE | +08::01::2022 07:03:51|ST +08::01::2022 07:03:52|ENTAH ENTAH| +08::01::2022 07:03:52|ENTAH ENTAH MISSION| +08::01::2022 07:03:52|It's been eight hours!| +08::01::2022 07:03:53|ENTER ENTER MISSIOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNN| +08::01::2022 07:03:53|ENTER ENTER MISSION| +08::01::2022 07:03:53|ENTER ENTER | +08::01::2022 07:03:53|ENTAH ENTAH MISSION| +08::01::2022 07:03:54|ENTAH ENTAH MISSHUN| +08::01::2022 07:03:54|It's 7 am lads, how much more to go?| +08::01::2022 07:03:55|ENTAH ENTAH MISSION| +08::01::2022 07:03:56|LYRICS ;_;| +08::01::2022 07:03:56|enter enter mission| +08::01::2022 07:03:57|ENTAH ENTAH MISSIOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOON| +08::01::2022 07:03:57|ENTAH ENTAH MISSION| +08::01::2022 07:03:59|ISSHOU KENMEI| +08::01::2022 07:03:59|BOUNCE VBOUNCE| +08::01::2022 07:03:59|entah entah| +08::01::2022 07:03:59|ENTAH ENTAH MISSION!!!!| +08::01::2022 07:04:02|WIll there be an Inter Inter Mission?| +08::01::2022 07:04:03|ENTER ENTER MISSION| +08::01::2022 07:04:04|INISHINAI +08::01::2022 07:04:04|COME ON| +08::01::2022 07:04:04|IS DF1 NEXT???| +08::01::2022 07:04:05|CUTE ARISU| +08::01::2022 07:04:05|will the french ova be before or after df1? spliced in?| +08::01::2022 07:04:07|come on| +08::01::2022 07:04:08|>8 hours| +08::01::2022 07:04:08|ENTEH ENTEHHHHHHHHHHHHHHHHHHHHHHHHH| +08::01::2022 07:04:09|pissed we didn't see this 12 times| +08::01::2022 07:04:09|bam bam bama bam| +08::01::2022 07:04:09|*bounce* *bounce*| +08::01::2022 07:04:09|MINNA DENE| +08::01::2022 07:04:10|ISSHO CAM ON| +08::01::2022 07:04:12|NTERMISSION? +08::01::2022 07:04:12|Cute chibi| +08::01::2022 07:04:14|APPY +08::01::2022 07:04:17|8 hours and going strong \o::| +08::01::2022 07:04:18|iureuiuefiuewfiunduuuu +08::01::2022 07:04:20|OOOOOOOOOOOOOOH +08::01::2022 07:04:22|GENJITSU NI NARU| +08::01::2022 07:04:26|ute +08::01::2022 07:04:26|>TFW NO ONE BELIVES IN YOU| +08::01::2022 07:04:29|ENTAH ENTAH MISSION| +08::01::2022 07:04:29|has it really been 8 hours| +08::01::2022 07:04:30|hib +08::01::2022 07:04:31|ene +08::01::2022 07:04:31|ENTAH ENTAH| +08::01::2022 07:04:33|ENTA ENTA MISSION| +08::01::2022 07:04:33|ENTER ENTER MISSION| +08::01::2022 07:04:33|CUTE AND ADORABLE| +08::01::2022 07:04:34|why is she alone| +08::01::2022 07:04:34|we should have seen this every episode| +08::01::2022 07:04:35|SSHOUKENMEI +08::01::2022 07:04:36|WAKE UP ANON| +08::01::2022 07:04:36|>As of September 1, 2016, all Circle K Sunkus stores have been rebranded as FamilyMart stores| +08::01::2022 07:04:37|BAI NI NARU HAPPI| +08::01::2022 07:04:39|IS DF1 NEXT| +08::01::2022 07:04:40|INTER INTER MISSION?| +08::01::2022 07:04:42|ENTAH ENTAH MISSION| +08::01::2022 07:04:45|NTER +08::01::2022 07:04:46|Chikara ippai!| +08::01::2022 07:04:46|SEX WITH ALICE| +08::01::2022 07:04:47|best part| +08::01::2022 07:04:48|EIKI +08::01::2022 07:04:49|ENTAH ENTAH MISSION| +08::01::2022 07:04:49|ENTAA ENTAA MIHO| +08::01::2022 07:04:51|ENTAH ENTAH MISSHUN| +08::01::2022 07:04:52|ear +08::01::2022 07:04:52|ENTAH ENTAH MISSION| +08::01::2022 07:04:53|Futa cockskap alice| +08::01::2022 07:04:54|UNNY!!! +08::01::2022 07:04:54|DF1 should be next| +08::01::2022 07:04:55|ZUTTO ISSHO NO MIRAI| +08::01::2022 07:04:59|I wonder how many anons will come back for DF3| +08::01::2022 07:05:01|oooooooo +08::01::2022 07:05:02|APY +08::01::2022 07:05:03|THROWING UP BEFORE snw| +08::01::2022 07:05:05|after intermission| +08::01::2022 07:05:05|CHIKARA IPPAI| +08::01::2022 07:05:06|hyyyyyyyyyy +08::01::2022 07:05:08|>come back I NEVER LEFT| +08::01::2022 07:05:09|ENTER INTERMISSION| +08::01::2022 07:05:10|FAP BREAK| +08::01::2022 07:05:14|eyes growing heavy| +08::01::2022 07:05:14|ice +08::01::2022 07:05:17|good, I need to piss| +08::01::2022 07:05:18|INTER INTER MISSION| +08::01::2022 07:05:19|shit break| +08::01::2022 07:05:19|TIME TO FAP| +08::01::2022 07:05:20|INTER INTER MISSION?| +08::01::2022 07:05:21|REMEMBER TO POST SEXY MAHOS IN THE THREAD| +08::01::2022 07:05:21|INTER INTER MISSION| +08::01::2022 07:05:22|intermissions are for PUSSIES| +08::01::2022 07:05:22|URINE HOLDERS OUR TIME HAS COME| +08::01::2022 07:05:23|pee time| +08::01::2022 07:05:23|still strong. ready for sharks| +08::01::2022 07:05:24|piss piss piss piss piss piss piss piss | +08::01::2022 07:05:24|Time to get more tea and schokacola| +08::01::2022 07:05:25|10 minutes to take a shit lets gooooooooo| +08::01::2022 07:05:26|TIME FOR POO POO| +08::01::2022 07:05:26|IM thirsty >:)| +08::01::2022 07:05:30|I'm almost out of it bros| +08::01::2022 07:05:31|DF1 next?| +08::01::2022 07:05:33|see u later fags| +08::01::2022 07:05:35|TIME TO FAP TO ARISU| +08::01::2022 07:05:36|i know 1::2 of you are gonna watch the alice x miho futa porn| +08::01::2022 07:05:38|Frog OVA | +08::01::2022 07:05:39|POO POO TIME| +08::01::2022 07:05:41|fuck i don't want to go to work tomorrow morning| +08::01::2022 07:05:43|Yes, DF1 now| +08::01::2022 07:05:44|Anyone got any good fap material| +08::01::2022 07:05:45|Of course| +08::01::2022 07:05:47|ENTER INTER MISSION HAYAKU| +08::01::2022 07:05:49|Nice. gonna go Masturbate to Miho's Mom| +08::01::2022 07:05:52|Just search aomushi on panda| +08::01::2022 07:05:52|I have slept from episode Anzu to the beginning of der Film, I am ashamed| +08::01::2022 07:05:55|FUTA MIHO| +08::01::2022 07:05:56|>being a wageslave| +08::01::2022 07:05:58|Wish benantoka did a gup doujin| +08::01::2022 07:05:59|F FOR THE ANONS WHO DIDNT MAKE IT| +08::01::2022 07:06:02|Just watch this on the toilet. Don't need to run to the bathroom if you already in there| +08::01::2022 07:06:04|>2 am, still 3 hours worth of GuP, work at 10 am| +08::01::2022 07:06:06| +08::01::2022 07:06:06|I WANT MOMMY MILKIES| +08::01::2022 07:06:07| +08::01::2022 07:06:08|>waging on a saturday| +08::01::2022 07:06:08|WHERE IS THE MUSIC| +08::01::2022 07:06:09|futa best invention since sliced bread| +08::01::2022 07:06:12|but benantoka did a gup doujin?| +08::01::2022 07:06:12|10pm here| +08::01::2022 07:06:20|>it's fucking 7am here| +08::01::2022 07:06:22|1:00 here| +08::01::2022 07:06:25|midnight bros where we at| +08::01::2022 07:06:27|sound off ::a::nons. how many of us are left| +08::01::2022 07:06:28|MY WIFE ERIKA| +08::01::2022 07:06:29|AUF DAST HEIST| +08::01::2022 07:06:30|RIKAAAAAA +08::01::2022 07:06:30|RIKA +08::01::2022 07:06:31|UND DAS HIEST| +08::01::2022 07:06:32|t e x a n| +08::01::2022 07:06:32|UND DAS HEIIST| +08::01::2022 07:06:34|EEEEEEEEEEEEERIKA +08::01::2022 07:06:35|RIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 07:06:35|SIEG HEIL o::| +08::01::2022 07:06:36|RIKA +08::01::2022 07:06:36|god fucking dammit its 7am| +08::01::2022 07:06:39|EEEEERRIKAAAA +08::01::2022 07:06:39|Been here since an hour before start \o::| +08::01::2022 07:06:39|UND DAS HEISST| +08::01::2022 07:06:40|EEEEERIKKAAAA +08::01::2022 07:06:40|>wake up for snw| +08::01::2022 07:06:40|Glad I was able to get off early enough to catch most of the movie and finale| +08::01::2022 07:06:40|still here going strong, KANPAI| +08::01::2022 07:06:42|RIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 07:06:42|RIKKKA +08::01::2022 07:06:43|AZ 11pm| +08::01::2022 07:06:44|PM +08::01::2022 07:06:45|EEEEEEEEERIKA +08::01::2022 07:06:45|SIEGU HEIL| +08::01::2022 07:06:45|dreaming of Alice in the Boko pjs| +08::01::2022 07:06:46|Erika is ugly and lesbian| +08::01::2022 07:06:46|BON BONK| +08::01::2022 07:06:46|wani song| +08::01::2022 07:06:49|RIIIIIIIIIIIIIIIIIIIIIIIIIIIKA +08::01::2022 07:06:49|RIKA +08::01::2022 07:06:50|RIKA +08::01::2022 07:06:50|ERIKA IS DUMB AND UGLY| +08::01::2022 07:06:51|卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +08::01::2022 07:06:51|EEEEEEEEEERIKA +08::01::2022 07:06:52|BUM BUM BUM | +08::01::2022 07:06:52|RIKKKKKKAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 07:06:53|UND DAS HEIST| +08::01::2022 07:06:56|o:: o:: o::| +08::01::2022 07:06:56|10PM PST| +08::01::2022 07:06:57|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERRRRRRRRIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKKKKKKKKKKKKKKKKKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 07:06:58| 卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐 +08::01::2022 07:06:59|8 +08::01::2022 07:07:04|6:05 +08::01::2022 07:07:04|卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +08::01::2022 07:07:05|\o \o \o| +08::01::2022 07:07:05|>ywn see maho singing this - hurts just a little| +08::01::2022 07:07:06|EEEEEEEEEEEEEEERIKA +08::01::2022 07:07:06|14 +08::01::2022 07:07:06|UND DAS HEIST| +08::01::2022 07:07:06|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 07:07:07|SIEG | +08::01::2022 07:07:07|Working on a saturday lmao| +08::01::2022 07:07:07|UND DAS HEISST| +08::01::2022 07:07:15|1488 PANZER WAR NOW| +08::01::2022 07:07:16|HEIL MAHO| +08::01::2022 07:07:16|UND DAS HEISST| +08::01::2022 07:07:16|O\O\O +08::01::2022 07:07:17|timezones anon| +08::01::2022 07:07:18|8 +08::01::2022 07:07:22|BUM BUM BUM| +08::01::2022 07:07:25|KUROMORIMINE UBER ALLES| +08::01::2022 07:07:29|:: +08::01::2022 07:07:29|卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +08::01::2022 07:07:30|GAS THE SLAGS, SENSHA WAR NOW| +08::01::2022 07:07:31|katyusha got one but erika didn't--COMMIES ALWAYS WIN| +08::01::2022 07:07:31|EERIKA +08::01::2022 07:07:32|:: +08::01::2022 07:07:33|dun dun dun| +08::01::2022 07:07:40|If Erika was tanned, you could just slap her with the auto club. I think she got a driver license already.| +08::01::2022 07:07:43|卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +08::01::2022 07:08:02|if erika was tanned she wouldn't be aryan| +08::01::2022 07:08:03|HEIL TO THE NISHIZUMIS| +08::01::2022 07:08:08|HEIL DEUTSCHLAND| +08::01::2022 07:08:09|o:: o:: o::| +08::01::2022 07:08:23|TOTALEN KRIEG | +08::01::2022 07:08:25|PANZER PANZER PANZER PANZER PANZER PANZER | +08::01::2022 07:08:27|ESICHTER +08::01::2022 07:08:29|More pizza!| +08::01::2022 07:08:31|A! +08::01::2022 07:08:31| +08::01::2022 07:08:32|PANZER VOR| +08::01::2022 07:08:38|JAWOHL | +08::01::2022 07:08:46|goodnight bros. best of luck surviving the rest of the night o7| +08::01::2022 07:08:47|OUDER!! +08::01::2022 07:09:08|Europe, sound off!| +08::01::2022 07:09:22|there are some good duce spam caps in the thread| +08::01::2022 07:09:25|They need more shots of Duce behinds. At least flaunt what she has.| +08::01::2022 07:09:27|o:: o:: o:: o:: o::| +08::01::2022 07:09:33|ES BRUAST UNSER PANZER| +08::01::2022 07:09:49|-) +08::01::2022 07:09:50|uggg +08::01::2022 07:10:19|maho is my wife| +08::01::2022 07:10:30|br*t +08::01::2022 07:10:35|i want to sleep with mako| +08::01::2022 07:10:36|REMEMBER LADS| +08::01::2022 07:10:39|fucking slags| +08::01::2022 07:10:42|??????????????????????????????????? +08::01::2022 07:10:44|me too| +08::01::2022 07:10:50|I'm gonna throw up, who with me?| +08::01::2022 07:10:52|REMEMBER WHAT?| +08::01::2022 07:10:54|MY WIFE, ROSEHIP| +08::01::2022 07:11:17|imagine being a br*t, can't be me| +08::01::2022 07:11:22|Is having Shiho as your mother in law that worth it?| +08::01::2022 07:11:26|Nekonyaa ~| +08::01::2022 07:11:45|Shiho mother in law would be worth it for maho wife| +08::01::2022 07:11:47|*glos +08::01::2022 07:12:06|ex? +08::01::2022 07:12:10|rugs? +08::01::2022 07:12:11| +08::01::2022 07:12:14|i'm gonna say it| +08::01::2022 07:12:16|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 07:12:17|Based America music| +08::01::2022 07:12:18|Best track| +08::01::2022 07:12:21|Rocke and Roll?| +08::01::2022 07:12:21|USA USA USA USA| +08::01::2022 07:12:26|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 07:12:27|Rock and Roll| +08::01::2022 07:12:28|Where is Anzu| +08::01::2022 07:12:39|Burger land| +08::01::2022 07:12:42|*crack* Yeeeep they just don't make OSTs like they used to| +08::01::2022 07:12:49|ORGAR +08::01::2022 07:12:50|Alisa’s mental breakdown theme song| +08::01::2022 07:12:58|gup came out in like 2012| +08::01::2022 07:12:59|who is your favorite character added after the show? mine is rosehip or mika| +08::01::2022 07:13:02|fuck alisa honestly| +08::01::2022 07:13:05|Then again, Shiho sounds safer as a mother in law than Chiyo.| +08::01::2022 07:13:17|shiho a psycho| +08::01::2022 07:13:17|POLYUSKA POYLE| +08::01::2022 07:13:22|CYKA BLYAT| +08::01::2022 07:13:30|anooo cheeki breeki iv danke| +08::01::2022 07:13:31|RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 07:13:34|LYAT +08::01::2022 07:13:40|орошо +08::01::2022 07:13:41|pa +08::01::2022 07:13:47|You're more likely to get disowned by Shiho than survive a questioning by Chiyo| +08::01::2022 07:13:54|URA URA URA URA URA URA URA URA URA URA URA| +08::01::2022 07:13:54|have we skipped over some ovas?| +08::01::2022 07:13:56|antsu +08::01::2022 07:14:03|Shiho can't disown you if you're not her child| +08::01::2022 07:14:15|fuck commies| +08::01::2022 07:14:15|Get out of here stalker| +08::01::2022 07:14:16|adopts you just to disown you| +08::01::2022 07:14:21|If you married her child, you're family already| +08::01::2022 07:14:25|where do we send you bandwidth| +08::01::2022 07:14:42|JUST DOWNLOAD MORE BANDWITH YOU RETARDS| +08::01::2022 07:14:46|Моя красивая женщина Нонна| +08::01::2022 07:14:46|what if you marry miho? who is already disowned| +08::01::2022 07:14:50|prep the dvce spam| +08::01::2022 07:14:58|miho cannot percieve guys| +08::01::2022 07:15:06|I don't give a shit about momo getting into uni| +08::01::2022 07:15:06|wait what| +08::01::2022 07:15:07|air +08::01::2022 07:15:07|here we go| +08::01::2022 07:15:14|Lets finish this strong| +08::01::2022 07:15:15|ATE +08::01::2022 07:15:24|SOON TM| +08::01::2022 07:15:27|ANON stop jerking off stream is starting soon| +08::01::2022 07:15:28| +08::01::2022 07:15:33|I am now remembering how boring the first half of df1 is| +08::01::2022 07:15:41|a-a-an an | +08::01::2022 07:15:44|certified retard| +08::01::2022 07:15:45|AA AA AAN| +08::01::2022 07:15:46|ex +08::01::2022 07:15:46|I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 07:15:50|sex voice| +08::01::2022 07:15:52|AHN AHN AHN| +08::01::2022 07:15:53|the song| +08::01::2022 07:15:55|AA AA AAN| +08::01::2022 07:15:55|ang dance ova when?| +08::01::2022 07:15:56|ahn ahn ahn| +08::01::2022 07:15:57|based christ is king anon| +08::01::2022 07:15:59|YUURA YUURA| +08::01::2022 07:16:00|now she can't get married| +08::01::2022 07:16:04|ANG ANG| +08::01::2022 07:16:06|Do the dance miho| +08::01::2022 07:16:16|the no cock song| +08::01::2022 07:16:17|SORE +08::01::2022 07:16:19|should have shown the anglerfish ova during intermission| +08::01::2022 07:16:22|i will sacrifice myself and marry miho| +08::01::2022 07:16:23|AN AN AN| +08::01::2022 07:16:28|sexy miho dancing| +08::01::2022 07:16:29|SORE +08::01::2022 07:16:31|SORE +08::01::2022 07:16:31|sore +08::01::2022 07:16:31|I'm getting old. I can't read any of these messages anymore| +08::01::2022 07:16:34|AA SORE| +08::01::2022 07:16:43|i want to go home| +08::01::2022 07:16:47|Anko song becomes better when you realize there's nothing else behind that skinsuit| +08::01::2022 07:16:50|aieaieaie sore| +08::01::2022 07:16:51|YAIYAIYA +08::01::2022 07:16:54|SORE +08::01::2022 07:16:59|I couldn't read them either until I switched to mpv and slowed it way down| +08::01::2022 07:17:00|and anzu's is still loose| +08::01::2022 07:17:03|i miss my bed| +08::01::2022 07:17:05|finale when| +08::01::2022 07:17:11|OON +08::01::2022 07:17:12|ITS TIME BOIS| +08::01::2022 07:17:14|SHOW TIME!!| +08::01::2022 07:17:14|LETS GOOOOO| +08::01::2022 07:17:15|what time is it for you euro anons?| +08::01::2022 07:17:15|‘Ere we go| +08::01::2022 07:17:16|SORE +08::01::2022 07:17:16|OW +08::01::2022 07:17:17|we proud| +08::01::2022 07:17:18|WE ARE PROUD OF THE TRUE YOUTH STORIES| +08::01::2022 07:17:21|OH SHITTT| +08::01::2022 07:17:23|D +08::01::2022 07:17:23|2:15 am GANG| +08::01::2022 07:17:23|am +08::01::2022 07:17:27|WE BACKKK| +08::01::2022 07:17:28|Too bad the judges will never wear the anko suits| +08::01::2022 07:17:28|HOOT +08::01::2022 07:17:28|this song is kino| +08::01::2022 07:17:28|This intro is so fucking good| +08::01::2022 07:17:30|GLORIOUS DAYS!!| +08::01::2022 07:17:32|ESTBROS REPORT IN| +08::01::2022 07:17:32|DF > Film| +08::01::2022 07:17:33|im only 1:15| +08::01::2022 07:17:35|10 pm gang| +08::01::2022 07:17:36|7:15 AM| +08::01::2022 07:17:36|LETS FUCKING GOOOOO| +08::01::2022 07:17:36|CENTRAL TIMEZONE GANG| +08::01::2022 07:17:39|UK reporting in| +08::01::2022 07:17:40|AHAHAHAHAHA LAUGHING AT AMERILARDS ITS 17:15 IN AUS| +08::01::2022 07:17:41|EST LET'S GO| +08::01::2022 07:17:41|I AM SO TIRED, WHO ELSE IS TIRED?| +08::01::2022 07:17:41|AWESOME INTRO| +08::01::2022 07:17:41|we full anime now| +08::01::2022 07:17:42| FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FRO| +08::01::2022 07:17:43|EST CHADS HERE| +08::01::2022 07:17:44|westcoas gang| +08::01::2022 07:17:44|7.15 here too| +08::01::2022 07:17:46|1pm +08::01::2022 07:17:46|OKO +08::01::2022 07:17:50|AEKO +08::01::2022 07:17:50|12am GANG LETS GOOOOO| +08::01::2022 07:17:50|6am clique| +08::01::2022 07:17:51|SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS | +08::01::2022 07:17:52| FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +08::01::2022 07:17:52|those glorious days :_:| +08::01::2022 07:17:52|est represent| +08::01::2022 07:17:53|MAGGOT CHEESE| +08::01::2022 07:17:54|::10pm:: here| +08::01::2022 07:17:54|hooot +08::01::2022 07:17:56|and in 13 hours I need to be ready for the other stream| +08::01::2022 07:17:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:17:59|buffering +08::01::2022 07:17:59|1AM EST| +08::01::2022 07:18:03|ANDOU SEXXXXXXXXXXUUUUUUOOOOOOOOOOHHHHHHHHHHHHHHH| +08::01::2022 07:18:04|DUCE DUCE DUCE| +08::01::2022 07:18:04|1215am fag here| +08::01::2022 07:18:08|BUFFERING GANG GANG GANG GANG| +08::01::2022 07:18:08|what other stream>| +08::01::2022 07:18:10|stupid europoors| +08::01::2022 07:18:14| FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +08::01::2022 07:18:16|8am reporting in, please kill me| +08::01::2022 07:18:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:18:16|RAPE SODOKOCLONES| +08::01::2022 07:18:16|OOOARAI DORIFUTO| +08::01::2022 07:18:18|ooh right, first episode introduce pirate team| +08::01::2022 07:18:19|the sora no woto stream| +08::01::2022 07:18:19|Its literally going to be dawn when this finishes for me| +08::01::2022 07:18:23|>not planning your new year's sleep schedule entirely around the streams| +08::01::2022 07:18:24|find it on ::a::| +08::01::2022 07:18:26|FROGS ONIONS| +08::01::2022 07:18:33|IMAGINE NOT BEING A CENTRAL AMERICAN AND ENJOYING THE BENIFITS OF 12AM DRINKING| +08::01::2022 07:18:33|this song gives me energy to stay up longer| +08::01::2022 07:18:34|ORIFUTO! +08::01::2022 07:18:38|WHEN THE SUN GOES DOWN| +08::01::2022 07:18:40|fucking momo| +08::01::2022 07:18:42|i want to sexually fuck momo| +08::01::2022 07:18:42|OH BOY THE MOMO IS A MORON OVAS| +08::01::2022 07:18:42|MOMO A SHIT| +08::01::2022 07:18:44|WHO ONION GANG HERE???| +08::01::2022 07:18:45|I hate the sharks| +08::01::2022 07:18:45|not today, old friend| +08::01::2022 07:18:45|I love the onion fried iin oil| +08::01::2022 07:18:45|this bufferring| +08::01::2022 07:18:47|>fucking momo| +08::01::2022 07:18:47|_;7 +08::01::2022 07:18:48|UFFER +08::01::2022 07:18:49|we proud| +08::01::2022 07:18:52|ORIFTO +08::01::2022 07:18:53|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +08::01::2022 07:18:54|7 +08::01::2022 07:18:54|Leopon drifting!| +08::01::2022 07:18:57|hahahaha dumb wani| +08::01::2022 07:18:57|og +08::01::2022 07:18:59|OOOH +08::01::2022 07:19:00|loser sitting by herself| +08::01::2022 07:19:00|fucking loser sits all alone| +08::01::2022 07:19:00|pls stop buffering| +08::01::2022 07:19:00|Erika alone lol| +08::01::2022 07:19:00|>YOU JUST KNOW| +08::01::2022 07:19:01|RIKA +08::01::2022 07:19:01|Erika suffers Maho withdrawal| +08::01::2022 07:19:02|useless wani| +08::01::2022 07:19:02|ANI +08::01::2022 07:19:03|AYS +08::01::2022 07:19:03|RIKA +08::01::2022 07:19:04|og +08::01::2022 07:19:09|how many years until leopon drift ;_;| +08::01::2022 07:19:09|ESU +08::01::2022 07:19:12|CUTE GOLIATH| +08::01::2022 07:19:12|ar +08::01::2022 07:19:14|panzer drones| +08::01::2022 07:19:15|war never changes| +08::01::2022 07:19:16|AIIIIIIZZZZZ +08::01::2022 07:19:16|I am also suffering maho withdrawal| +08::01::2022 07:19:17|tank police| +08::01::2022 07:19:18|the original suicide drone| +08::01::2022 07:19:19|aaaaaaaaaaaaaaaayyyyys +08::01::2022 07:19:19|Goliath a cute| +08::01::2022 07:19:23|We USA now| +08::01::2022 07:19:25|>Making columbine look like a joke| +08::01::2022 07:19:25|Erika took some tips from Johnny for her poses| +08::01::2022 07:19:28|man this scene was so odd| +08::01::2022 07:19:35|here's your screenshot bro| +08::01::2022 07:19:36|ata! +08::01::2022 07:19:41|DUMB RETARD MOMO| +08::01::2022 07:19:41|eepbeep +08::01::2022 07:19:44|>saki just autisting as usual| +08::01::2022 07:19:45|is this DF1?| +08::01::2022 07:19:46|Momo is a fucking retarded hoe| +08::01::2022 07:19:46|feel free to screenshot| +08::01::2022 07:19:47|Baka Momo| +08::01::2022 07:19:47|MOMO CANCELLED| +08::01::2022 07:19:48|EXTREME RETARD| +08::01::2022 07:19:48|ETARD +08::01::2022 07:19:48|mao +08::01::2022 07:19:49|fuck you momo| +08::01::2022 07:19:50|MOMO CONFIRMED RETARDED| +08::01::2022 07:19:50|GET A FUCKING GRIP ON YOUR GRADES MOMO HOLY SHIT YOU SHOULDNT BE DOING THIS RN| +08::01::2022 07:19:50|MOMO IS SO DUMB| +08::01::2022 07:19:53|LOW IQ| +08::01::2022 07:19:54|OUGAI! +08::01::2022 07:19:54|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +08::01::2022 07:19:54|ETARD +08::01::2022 07:19:54|Momo dum| +08::01::2022 07:19:55|ETARD +08::01::2022 07:19:55|RETARD ALERT| +08::01::2022 07:19:56|>first indignity| +08::01::2022 07:19:57|RETARD ALERT GIRLS| +08::01::2022 07:19:58|SUPER RETARD| +08::01::2022 07:19:58|momo +08::01::2022 07:19:58|TWITTER DID THIS| +08::01::2022 07:20:00|ONFIRMED +08::01::2022 07:20:02|ORIKO<3 +08::01::2022 07:20:03|TARD TARD TARD| +08::01::2022 07:20:03|Momo forgets she's not in a submarine| +08::01::2022 07:20:03|>Momo is actually and really retarded| +08::01::2022 07:20:04|MOMO DUMB PUBLISHIZED| +08::01::2022 07:20:04|>looking for tanks instead of studying| +08::01::2022 07:20:04|FOR SHAME MOMO| +08::01::2022 07:20:05|Sasuga Momo| +08::01::2022 07:20:05|FUCK MOMO SUPPORTERS| +08::01::2022 07:20:06|dumbass momo | +08::01::2022 07:20:06|>momo so retarded it makes local news| +08::01::2022 07:20:10|EK +08::01::2022 07:20:10|Dumb hoe deserves to be held back| +08::01::2022 07:20:12|MOMO KUSO...| +08::01::2022 07:20:12|FAKE NEWS| +08::01::2022 07:20:13|>THE ABSOLUTE STATE OF MOMO| +08::01::2022 07:20:14|SHAMEFUR DISPRAY| +08::01::2022 07:20:14|OH NO, SHES RETARDED!| +08::01::2022 07:20:14|D +08::01::2022 07:20:15|Tard wrangling arc| +08::01::2022 07:20:17|nzu +08::01::2022 07:20:17|NEXT LEVEL AUTISM| +08::01::2022 07:20:18|Why do they have an antique television store?| +08::01::2022 07:20:20|Baka Moho| +08::01::2022 07:20:20|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 07:20:21|MOMO SHOULD JUST DROP OUT| +08::01::2022 07:20:21|MOMO IS A MORON| +08::01::2022 07:20:23|Aight it's 8am goodbye anons| +08::01::2022 07:20:23|>can’t even pass high school| +08::01::2022 07:20:25|She looks smart, but is actually dumb| +08::01::2022 07:20:27|Damn I actually feel bad for Momo| +08::01::2022 07:20:27|I DON'T FUCKING CARE ABOUT MOMO| +08::01::2022 07:20:28|why do they care about her| +08::01::2022 07:20:28|even dumber plot than school shutdown 2 arc| +08::01::2022 07:20:29|No hope for Momo. Press F for respect| +08::01::2022 07:20:33|goodnight anon| +08::01::2022 07:20:33|dumb hoe moment| +08::01::2022 07:20:37| +08::01::2022 07:20:40|why tf is smart in gup besides mako| +08::01::2022 07:20:41|LEAVE MOMO ALONE!!!| +08::01::2022 07:20:41|still find it weird yukari became vice pres| +08::01::2022 07:20:42|GANBARE MOMO-CHAN| +08::01::2022 07:20:43|momo? more like. Fucking retard| +08::01::2022 07:20:45|>guppies moving up in the world| +08::01::2022 07:20:46|VICE PREZ YUKARI IS MY GF| +08::01::2022 07:20:47|i think momo sucks| +08::01::2022 07:20:49|sasuga momo-san| +08::01::2022 07:20:50|PRESIDENT ISUZU| +08::01::2022 07:20:51|MOMO RETARD| +08::01::2022 07:20:51|>student council member is retarded| +08::01::2022 07:20:53|YUKARI FOR PRESIDENT| +08::01::2022 07:20:57|momo sucking is fact| +08::01::2022 07:20:57|yet" +08::01::2022 07:21:08|momo the mental homo, heh| +08::01::2022 07:21:08|natto is delicious| +08::01::2022 07:21:08|Momo a retard| +08::01::2022 07:21:12|Who the heck would want to visit a Nattou academy?| +08::01::2022 07:21:12|BREAKING NEWS: LOCAL GIRL RETARDED| +08::01::2022 07:21:13|ONIN +08::01::2022 07:21:14|>FOR THE MEMORY| +08::01::2022 07:21:18|Azusa can be not retarded when needed| +08::01::2022 07:21:20|STATISTALLLY, MOMO IS VERY FUCKABLE| +08::01::2022 07:21:20|ukari... +08::01::2022 07:21:20|erika is best girl| +08::01::2022 07:21:22|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +08::01::2022 07:21:23|Momo off to the special ed home| +08::01::2022 07:21:24|Is it rumor if Momo really stays back for being dumb?| +08::01::2022 07:21:28|TOO RETARDED FOR UNI| +08::01::2022 07:21:34|MOMO IS A HARDWORKING GIRL| +08::01::2022 07:21:39|momo will have to be put down...| +08::01::2022 07:21:40|momo made them do another fucking tournament we could have had something different if she wasn't dumb| +08::01::2022 07:21:40|christ its already bright outside| +08::01::2022 07:21:40|cute yukari| +08::01::2022 07:21:43|MOMO IS A GOOD GIRL| +08::01::2022 07:21:43|I NEED YOU| +08::01::2022 07:21:44|Not autistic enough for uni| +08::01::2022 07:21:45|momo stupid| +08::01::2022 07:21:48|It’s okay momo you only need to make babies| +08::01::2022 07:21:51|momo does not have the mental capacity for basic education| +08::01::2022 07:21:53|Hardworking doesn't equal passing grade though| +08::01::2022 07:21:54|MOMO IS A CUTE HARDWORKING GIRL!| +08::01::2022 07:21:56|She needs to build a reputation based on lies| +08::01::2022 07:21:56|Yukari, Patton went to West Point he was smarter than Momo| +08::01::2022 07:22:02|momo should just marry| +08::01::2022 07:22:02|momo is a senpai???| +08::01::2022 07:22:09|momo can marry me| +08::01::2022 07:22:11|SORE DA| +08::01::2022 07:22:16|TRACKSUIT TAEKO| +08::01::2022 07:22:17|Momo can marry me| +08::01::2022 07:22:17|sORE DA| +08::01::2022 07:22:17|AD EROS| +08::01::2022 07:22:18|sore da| +08::01::2022 07:22:20|SORE DA| +08::01::2022 07:22:22|Hoshino must be cold in that shirt| +08::01::2022 07:22:24|SORE DA| +08::01::2022 07:22:28|momo is shit| +08::01::2022 07:22:30|why tf do they do that| +08::01::2022 07:22:30|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +08::01::2022 07:22:30|Ducks have the best winter down| +08::01::2022 07:22:31|I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HAT| +08::01::2022 07:22:35|SORE DA| +08::01::2022 07:22:35|RIP MOMO RIP MOMO | +08::01::2022 07:22:37|does momo have the mental capability to consent?| +08::01::2022 07:22:41|momo loves big black cocks| +08::01::2022 07:22:41|AY OH| +08::01::2022 07:22:42|>perfect attendance and still this retarded| +08::01::2022 07:22:42|MOMO IS GREAT STOP BEING A FAG| +08::01::2022 07:22:44|A O| +08::01::2022 07:22:44|o +08::01::2022 07:22:45|ARUHODO +08::01::2022 07:22:47|please do not bully momo| +08::01::2022 07:22:48|H +08::01::2022 07:22:48|A O| +08::01::2022 07:22:49|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +08::01::2022 07:22:50|is DF "Seamless" as well?| +08::01::2022 07:22:50|A O| +08::01::2022 07:22:51|all problems can be solved with senshadou| +08::01::2022 07:22:51|A O| +08::01::2022 07:22:55|MOMO SUCKS AND NOT IN A GOOD WAY| +08::01::2022 07:22:56|FUCK I MISSED THE WHOLE LAST HALF OF THE MOVIE| +08::01::2022 07:22:57|This video is hosted at www.xvideos.com| +08::01::2022 07:22:57|A A O| +08::01::2022 07:23:03|AO ToT| +08::01::2022 07:23:03|momo is a good girl and needs sex NOW| +08::01::2022 07:23:04|stupid ass momo should just marry me| +08::01::2022 07:23:06|""commander""" +08::01::2022 07:23:07|Perfect attendance can't help exams though| +08::01::2022 07:23:07|EGUMIN?! +08::01::2022 07:23:07|>school closure, school closure, getting momo into uni| +08::01::2022 07:23:08|MOMO SUCKS AND NOT MY DICK WHICH IS A PROBLEM| +08::01::2022 07:23:08|thank you xvideos.com, very cool| +08::01::2022 07:23:10|Plumage. That’s the word I was lookin* for. | +08::01::2022 07:23:11|::a:: ::o::| +08::01::2022 07:23:14|RAPE CORRECTION| +08::01::2022 07:23:18|A A O| +08::01::2022 07:23:20|A A O| +08::01::2022 07:23:20|ORRUPTION +08::01::2022 07:23:22|i give up arguing with momo tards| +08::01::2022 07:23:24|>Lolis screaming about AO| +08::01::2022 07:23:25|EY EY OH| +08::01::2022 07:23:26|ARRY +08::01::2022 07:23:28|::a:: ::a:: ::o::| +08::01::2022 07:23:29|AAAO ToT| +08::01::2022 07:23:29|EVERYONE LOVES MOMO!!!! YOU GUYS SHOULD TOO!| +08::01::2022 07:23:29|we were arguing?| +08::01::2022 07:23:30|Is everyone in Ooarai retarded or something| +08::01::2022 07:23:32|even mako questioning this shit| +08::01::2022 07:23:32|THE BIDEN OF COMMANDERS| +08::01::2022 07:23:37|>scamming uni admissions series| +08::01::2022 07:23:38|we already lost hope| +08::01::2022 07:23:40|But how will they possibly defeat the FINNS?| +08::01::2022 07:23:42|>Momo puppet state| +08::01::2022 07:23:43|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +08::01::2022 07:23:44|now this was a bullshit reason for giving them plot armor| +08::01::2022 07:23:46|yes, everyone in Ooarai is retarded besides Sex| +08::01::2022 07:23:47|the biden of commanders LOL| +08::01::2022 07:23:47|GOD MIHO IS SUCH A FUCKING DORK| +08::01::2022 07:23:51|To prevent momo from being held back we need some form of correction| +08::01::2022 07:23:52|MOMO DUMB| +08::01::2022 07:23:53|SEETHING MOMO| +08::01::2022 07:23:55|NO REPEATING| +08::01::2022 07:23:55|>scamming uni admin THIS| +08::01::2022 07:23:57|just say they gotta defend their honor or some shit| +08::01::2022 07:23:58|i'd puppet momo| +08::01::2022 07:23:59|NO REPEATING| +08::01::2022 07:23:59|Miho a cute| +08::01::2022 07:24:02|NO REPEATING| +08::01::2022 07:24:03|MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! | +08::01::2022 07:24:03|just let her fail the dumbass| +08::01::2022 07:24:03|OSH +08::01::2022 07:24:05|No losses at all? Big dreams gamer club.| +08::01::2022 07:24:09|留年 阻止| +08::01::2022 07:24:10|Pupper Commander| +08::01::2022 07:24:14|Cope,seethe even, repeate a smester if you will| +08::01::2022 07:24:18|and remember: no repeats| +08::01::2022 07:24:19|OX!! +08::01::2022 07:24:19|Mark IV| +08::01::2022 07:24:20|TIME FOR PIRACY| +08::01::2022 07:24:22|holy fuck just get in the tanks already| +08::01::2022 07:24:25|>below deck| +08::01::2022 07:24:26|>Having to cheat to get into uni| +08::01::2022 07:24:27|What would be so bad about a job without university exam?| +08::01::2022 07:24:27|ARR +08::01::2022 07:24:28|S ◯ X| +08::01::2022 07:24:28|YAR HAR| +08::01::2022 07:24:30|DO NOT FUCK THE TANKS| +08::01::2022 07:24:30|sodoko sodomy incoming| +08::01::2022 07:24:32|omg guys this is illegal how could we| +08::01::2022 07:24:33|Ya that fiddle-y dee| +08::01::2022 07:24:33|when boat staff only ova| +08::01::2022 07:24:34|HERE BE NIGGERS| +08::01::2022 07:24:36|RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +08::01::2022 07:24:37|ONNICHIWA +08::01::2022 07:24:42|XARP +08::01::2022 07:24:43|cute ship girls| +08::01::2022 07:24:43|just get married you fucking sexy dumbass| +08::01::2022 07:24:43|Adventure game pov| +08::01::2022 07:24:45|I'm ready for fat Miho ass...| +08::01::2022 07:24:47|I WILL FUCK THE TANKS| +08::01::2022 07:24:49|Why the fuck does Ooarai have a slum| +08::01::2022 07:24:49|LITERAL UNDERWORLD| +08::01::2022 07:24:52|sasuga 3d animation has come so far| +08::01::2022 07:24:55|The rape capital of Oarai| +08::01::2022 07:24:55|>time to meet the gnomes(lolis) that maintain the ship| +08::01::2022 07:24:56|Johannesburg of Oarai| +08::01::2022 07:24:57|>YWN marry a pirate tankgirl| +08::01::2022 07:24:58|get ready for miho ass| +08::01::2022 07:24:58|FIRST PERSON| +08::01::2022 07:24:59|How did they get away with this lmao| +08::01::2022 07:25:00|HERE BE NIGERIANS| +08::01::2022 07:25:01|RUM IS MINE OK?| +08::01::2022 07:25:02|Ooarai homeless camp| +08::01::2022 07:25:03|KINO FIRST PERSON| +08::01::2022 07:25:04|THE NIGGERS OF NIPPON| +08::01::2022 07:25:04|Just enter with a tank scholarship. Didn't some of Alice uni team do that?| +08::01::2022 07:25:05|ASUGA +08::01::2022 07:25:06|There could be niggers here... | +08::01::2022 07:25:06|OAH +08::01::2022 07:25:06|OOARAI THIRD WORLD SHITHOLE RUN BY NIGGERS| +08::01::2022 07:25:08|but why is johannesburg lawless?| +08::01::2022 07:25:08|GODHAND NIPPERS| +08::01::2022 07:25:08|bc is less class divided then this| +08::01::2022 07:25:09|brazil be like| +08::01::2022 07:25:12|RAW +08::01::2022 07:25:13|gunslinger hana| +08::01::2022 07:25:14|>forced animation doesn't exist| +08::01::2022 07:25:14|DON'T TOUCH BARBED WIRE LIKE THAT| +08::01::2022 07:25:15|>carbon coated pliers| +08::01::2022 07:25:15|das rascit| +08::01::2022 07:25:16|Becareful of the Mutant cannibals| +08::01::2022 07:25:18|WOW MANILA| +08::01::2022 07:25:20|This film is dedicated to the brave delinquent fighters of Johannesburg| +08::01::2022 07:25:21|DO IT| +08::01::2022 07:25:23|carbon coated hands| +08::01::2022 07:25:25|OBOS +08::01::2022 07:25:26| +08::01::2022 07:25:27|-sugoi +08::01::2022 07:25:28|Oh boy time for the Shark Jobbers| +08::01::2022 07:25:28|good thing I'm packing heat| +08::01::2022 07:25:28|druggies galore| +08::01::2022 07:25:29|CUTE DELINQUENTS| +08::01::2022 07:25:30|THIS IS WHAT HAPPENS WHEN LITTLE GIRLS RUN SHIPS| +08::01::2022 07:25:32|>ywn seggs with punk ooarai| +08::01::2022 07:25:33|Hana might be an assassin| +08::01::2022 07:25:35|"You want to buy killer sticks?| +08::01::2022 07:25:36|HANA uses cut its super effective| +08::01::2022 07:25:36|APPA +08::01::2022 07:25:37|on foe nem| +08::01::2022 07:25:39|BLACK METAL| +08::01::2022 07:25:42|ormer +08::01::2022 07:25:43|ruggies +08::01::2022 07:25:45|igger +08::01::2022 07:25:46|OMORI REFERENCE!!!!| +08::01::2022 07:25:46|Ooarai Necromunda| +08::01::2022 07:25:47|I WANT DELINQUENTS TO KIDNAP ME| +08::01::2022 07:25:48|formerly the president| +08::01::2022 07:25:50|APPA +08::01::2022 07:25:50|OOARAI = BRAZIL| +08::01::2022 07:25:50|Slums in a ship?| +08::01::2022 07:25:52|>too long| +08::01::2022 07:25:53|FORMER +08::01::2022 07:25:54|oecutter? +08::01::2022 07:25:54|THE FEDS| +08::01::2022 07:25:55|oecutter-chan! +08::01::2022 07:25:55|>skirts too long| +08::01::2022 07:25:57|>TOO LONG| +08::01::2022 07:25:59|The fucking girls are looking like FotNS baddies| +08::01::2022 07:26:02|>need seggs with yankee white hair| +08::01::2022 07:26:03|that's a boy| +08::01::2022 07:26:03|APPA +08::01::2022 07:26:04|TO THE RAPE CAVE| +08::01::2022 07:26:04|RRRRRRRRRREEEEEEEEEEEEEE +08::01::2022 07:26:05|Delinquents belong in a TANK| +08::01::2022 07:26:06|APPA +08::01::2022 07:26:07|APPA +08::01::2022 07:26:07|K A P P A| +08::01::2022 07:26:07|shaved eyebrow moe~| +08::01::2022 07:26:09|TAKE ME TO THE BROTHELS| +08::01::2022 07:26:09|reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +08::01::2022 07:26:10|>skirts too long| +08::01::2022 07:26:10|APED +08::01::2022 07:26:11|AAAAAAAAAAAAAA +08::01::2022 07:26:11|APPA +08::01::2022 07:26:12|ape +08::01::2022 07:26:13|APE +08::01::2022 07:26:13|REEEEEEEEEEEEEE +08::01::2022 07:26:14|This ghetto needs cleaning| +08::01::2022 07:26:14|APE +08::01::2022 07:26:15|REEEEEEEEEEEE +08::01::2022 07:26:16|SODOKO SODOMY| +08::01::2022 07:26:16|ape +08::01::2022 07:26:17|abduction +08::01::2022 07:26:17|APE +08::01::2022 07:26:18|TR +08::01::2022 07:26:18|INDBREAK +08::01::2022 07:26:18|Chase scene| +08::01::2022 07:26:19|The horror, the horror| +08::01::2022 07:26:21|I want to kidnap Sodoko too!| +08::01::2022 07:26:21|INO +08::01::2022 07:26:21|RAPE CORRECTION| +08::01::2022 07:26:21|AREYARE +08::01::2022 07:26:22|INO +08::01::2022 07:26:22|rape rape rape| +08::01::2022 07:26:23|KINO SHOTS| +08::01::2022 07:26:24|>this cg| +08::01::2022 07:26:25|AAAREEEE +08::01::2022 07:26:27|I AM MIHO| +08::01::2022 07:26:27|SAORI BUTT INCOMING| +08::01::2022 07:26:27|INO +08::01::2022 07:26:28|wow it's like i'm really there| +08::01::2022 07:26:28|OV +08::01::2022 07:26:29|3D SODOKO| +08::01::2022 07:26:30|INO +08::01::2022 07:26:30|>rape kino| +08::01::2022 07:26:30|SS +08::01::2022 07:26:32|3d +08::01::2022 07:26:32|RAPE CORRECTION| +08::01::2022 07:26:32|which game is this?| +08::01::2022 07:26:32|get ready for miho asssssssssssssss| +08::01::2022 07:26:33|AAAAAREEEEEEEE +08::01::2022 07:26:33|We Doom now.| +08::01::2022 07:26:34|THAT 3D IS GARBO| +08::01::2022 07:26:35|POV SEQUENCE| +08::01::2022 07:26:36|soari ass| +08::01::2022 07:26:36|so immersive...| +08::01::2022 07:26:38|EW +08::01::2022 07:26:38|Miho's fat butt| +08::01::2022 07:26:38|ASS TOO FAT| +08::01::2022 07:26:38|FAT ASS| +08::01::2022 07:26:38|MIHO ASS| +08::01::2022 07:26:39|SS +08::01::2022 07:26:39|MIHO'S FAT ASS| +08::01::2022 07:26:40|SS +08::01::2022 07:26:40|FAT BUTT| +08::01::2022 07:26:40|HAYAII SUCH SPEED| +08::01::2022 07:26:42|B UTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTt| +08::01::2022 07:26:42|SS +08::01::2022 07:26:42|HHHHHHHH +08::01::2022 07:26:42|Imagine if these delinquents graduate before Momo does. Even more embarassment.| +08::01::2022 07:26:42|1M1 +08::01::2022 07:26:43|AT +08::01::2022 07:26:43|SS +08::01::2022 07:26:43|NIFFFF +08::01::2022 07:26:44|ed +08::01::2022 07:26:44|IWTWM +08::01::2022 07:26:44|i came| +08::01::2022 07:26:45|BUTTE HOLD| +08::01::2022 07:26:46|ino +08::01::2022 07:26:46|at +08::01::2022 07:26:46|based yukari| +08::01::2022 07:26:47|HOLY FUCK HER ASS IS ENORMOUS| +08::01::2022 07:26:48|ASUGA +08::01::2022 07:26:49|Yukari is agile | +08::01::2022 07:26:49|this scene is just fucking hilarious| +08::01::2022 07:26:49|Reminder that Yukari is packing right now| +08::01::2022 07:26:50|MT +08::01::2022 07:26:52|EX +08::01::2022 07:26:52|GOD I WISH THAT WAS ME| +08::01::2022 07:26:52|god I wish that were me| +08::01::2022 07:26:55|Nice ass| +08::01::2022 07:26:55|EW +08::01::2022 07:26:55|god I wish that were me| +08::01::2022 07:26:55|KINO INCOMING| +08::01::2022 07:26:56|GOD I WISH| +08::01::2022 07:26:56|DAT ASS WAS FAT| +08::01::2022 07:26:57|ASS STUCK ASS STUCK... PLEASE| +08::01::2022 07:26:57|THEY'RE FUCKING DEAD| +08::01::2022 07:26:58|HAHA BUTTE HOLD| +08::01::2022 07:26:59|Kino drives a motorrad, not a tank you retards| +08::01::2022 07:27:00|>yukari just fucking lands it| +08::01::2022 07:27:00|rats +08::01::2022 07:27:02|yukair got that THANG| +08::01::2022 07:27:06|PHAT ASSES| +08::01::2022 07:27:07|GMT GMT!| +08::01::2022 07:27:08|would help unstuck that ass| +08::01::2022 07:27:08|Dark Souls 2| +08::01::2022 07:27:09|YUKARI FLIP| +08::01::2022 07:27:09|that would be a glorious death| +08::01::2022 07:27:10|IT'S THE SEX ROOM| +08::01::2022 07:27:13|ork! +08::01::2022 07:27:14|ARR +08::01::2022 07:27:15|SOMALI PIRATES| +08::01::2022 07:27:15|LINT +08::01::2022 07:27:16|invisible wall ahead| +08::01::2022 07:27:16|ORK +08::01::2022 07:27:17|so where is she keeping that masher?| +08::01::2022 07:27:19|sex dungeon| +08::01::2022 07:27:19|YO HO| +08::01::2022 07:27:20|SING ALONG, FOLKS| +08::01::2022 07:27:21|RED ROOM| +08::01::2022 07:27:21|the brothel...| +08::01::2022 07:27:22|that place looks lewd| +08::01::2022 07:27:22|YO HO| +08::01::2022 07:27:22|AR +08::01::2022 07:27:22|some of you guys are really behind, f5| +08::01::2022 07:27:22|RED LIGHT COMPARTMENT| +08::01::2022 07:27:24|Her hair duch| +08::01::2022 07:27:24|illusory wall ahead| +08::01::2022 07:27:25|fuck you sharkies| +08::01::2022 07:27:25|FLING FLINT FLINT FLINT| +08::01::2022 07:27:26|>forcing sudako to work in a brothel| +08::01::2022 07:27:27|I HATE FLINT| +08::01::2022 07:27:27|lonk +08::01::2022 07:27:27|Up her pooper| +08::01::2022 07:27:30|YO HOOO| +08::01::2022 07:27:31|liar ahead| +08::01::2022 07:27:31|OE +08::01::2022 07:27:31|im entering into the sex room | +08::01::2022 07:27:32|ohoho +08::01::2022 07:27:35|fuck flint| +08::01::2022 07:27:36|EY +08::01::2022 07:27:36|cute flint| +08::01::2022 07:27:38|WORST TEAM| +08::01::2022 07:27:40|BEST GIRL FLINT| +08::01::2022 07:27:40|EY +08::01::2022 07:27:41|the fuck is this| +08::01::2022 07:27:42|EY! +08::01::2022 07:27:43|momo = flint| +08::01::2022 07:27:43|SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX| +08::01::2022 07:27:43|HEJ HEJ HEJ SOKOLY| +08::01::2022 07:27:43|Shut the fuck up Flint| +08::01::2022 07:27:43|BEST TEAM| +08::01::2022 07:27:44|AA +08::01::2022 07:27:45|sekgs dungeon| +08::01::2022 07:27:45|AR +08::01::2022 07:27:47|What will we will do with a drunken sailor| +08::01::2022 07:27:49|fuck pirates| +08::01::2022 07:27:49|It's not even real alcohol| +08::01::2022 07:27:50|ROW ROW| +08::01::2022 07:27:51|RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +08::01::2022 07:27:51|EY +08::01::2022 07:27:53|AA +08::01::2022 07:27:53|Worst team, Worst Tank| +08::01::2022 07:27:55|i like the part where yukari explains a tank to these retards| +08::01::2022 07:27:55|B A N G E R| +08::01::2022 07:27:56|Even anglerfish team is confused| +08::01::2022 07:27:56|This ain't a red light district. I want my money back| +08::01::2022 07:27:57|Just show the Cute Lass and nobody gets hurt| +08::01::2022 07:27:57|Really should have been an alestorm cover.| +08::01::2022 07:27:58|Her design is so good but she's so useless, bros...| +08::01::2022 07:27:59|utelass +08::01::2022 07:28:00|RUM HOURS| +08::01::2022 07:28:00|I'm fucking drunk| +08::01::2022 07:28:00|RUM RUM RUM RUM RUM RUM RUM RUM| +08::01::2022 07:28:01|A CUTE LASS| +08::01::2022 07:28:01|"PLUNDER AND SPLIT THE BOOTY"| +08::01::2022 07:28:03|UTLASS!!! +08::01::2022 07:28:03|there's the red haired uggo| +08::01::2022 07:28:04|Not Wir lagen vor Madagaskar| +08::01::2022 07:28:07|RUM IS UGLY| +08::01::2022 07:28:07|JOBBER SQUAD| +08::01::2022 07:28:07|UTLASS +08::01::2022 07:28:08|cutlass only redemption| +08::01::2022 07:28:09|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +08::01::2022 07:28:12|menu o dozo| +08::01::2022 07:28:13|RUM IS MINE| +08::01::2022 07:28:14|CUTE ASS!| +08::01::2022 07:28:16|mako still hasn't got a milkshake| +08::01::2022 07:28:18|MILK DRINKERS| +08::01::2022 07:28:20|cute pirate larpers | +08::01::2022 07:28:21|DRINK FROM SAORI'S TITS| +08::01::2022 07:28:23|Miluk SEKI| +08::01::2022 07:28:26|PPAI +08::01::2022 07:28:27|mojito pls| +08::01::2022 07:28:28|SODOKO DOKO?| +08::01::2022 07:28:29|AMA +08::01::2022 07:28:30|>it's PA equipment rather than an actual kareoke machine| +08::01::2022 07:28:31|MOMMY MILKIES| +08::01::2022 07:28:32|I WANT TO DRINK FROM MURAKAMI| +08::01::2022 07:28:34|WELCOME TO THE SALTY SPITOON, HOW TOUGH ARE YA?| +08::01::2022 07:28:34|MILK THE SEAL| +08::01::2022 07:28:35|HOTO COCOA| +08::01::2022 07:28:37|>go home and suck on your mom's tits| +08::01::2022 07:28:38|MOMMMY MILKIES| +08::01::2022 07:28:40|I ways thought Rum was as tiny as Mako| +08::01::2022 07:28:40|HO? +08::01::2022 07:28:44|ORK +08::01::2022 07:28:46|GOD I WISH| +08::01::2022 07:28:46|Bartender smart. Can't earn rupees if they don't order first| +08::01::2022 07:28:47|LAVERY +08::01::2022 07:28:49|I had a bowl of nail for breakfast...| +08::01::2022 07:28:49|THE DORK| +08::01::2022 07:28:52|LAVE +08::01::2022 07:28:52|CLEAN IT UP JANNY| +08::01::2022 07:28:56|sodoko slave| +08::01::2022 07:28:56|God the sound design in this shit is too good| +08::01::2022 07:28:57|>being a landlover despite being at sea| +08::01::2022 07:28:58|Only Mako can rape her| +08::01::2022 07:28:59|get the fuck out of my way| +08::01::2022 07:28:59|BIG GIRL| +08::01::2022 07:28:59|es +08::01::2022 07:29:02|SODOKO SLAVERY| +08::01::2022 07:29:04|annyko +08::01::2022 07:29:04|Fuckin slaves| +08::01::2022 07:29:05|>she does it for free| +08::01::2022 07:29:05|fatass mukririmrimriamrimr| +08::01::2022 07:29:06|THANK YOU SABAKU!| +08::01::2022 07:29:07|>YWN HAVE A SODOKO SEX SLAVE| +08::01::2022 07:29:07|>she does it for free| +08::01::2022 07:29:08|BIG GUY| +08::01::2022 07:29:10|Without any soymilk....| +08::01::2022 07:29:11|cute drunk| +08::01::2022 07:29:12|FOCRING SODOKO TO CLEANM YOUR SHITHOLEEEEEEEE| +08::01::2022 07:29:13|RUM A CUTE| +08::01::2022 07:29:14|SHE THICCC| +08::01::2022 07:29:15|IO +08::01::2022 07:29:18|JUST WHACK THEM WITH THE BALL| +08::01::2022 07:29:19|RUM A SHIT| +08::01::2022 07:29:23|Now that's a FAT girl| +08::01::2022 07:29:25|THE ABSOLUTE UNIT| +08::01::2022 07:29:25|Rum is cute!| +08::01::2022 07:29:26|shoot them| +08::01::2022 07:29:26|DRIKING RUM FROM THE BOTTLE| +08::01::2022 07:29:28|Sodoko got scammed. No pay and all work?| +08::01::2022 07:29:28|atass +08::01::2022 07:29:28|UHAAAAA +08::01::2022 07:29:29|m:: +08::01::2022 07:29:30|HEIL VICE PRESIDENT YUKARI| +08::01::2022 07:29:30|EH +08::01::2022 07:29:30|big girl!!| +08::01::2022 07:29:30|oh god shes hot| +08::01::2022 07:29:30|miho fucking dork| +08::01::2022 07:29:32|FAT TURTLES| +08::01::2022 07:29:37|YUKARI NO| +08::01::2022 07:29:37|Underaged Drinking | +08::01::2022 07:29:40|EH +08::01::2022 07:29:40|EE +08::01::2022 07:29:43|WEH +08::01::2022 07:29:44|Oka no fune | +08::01::2022 07:29:46|EH +08::01::2022 07:29:46|ETARDS +08::01::2022 07:29:47|SHE'S MAD| +08::01::2022 07:29:47|FLUFF MAD| +08::01::2022 07:29:48|KILL THEM ALL YUKARI| +08::01::2022 07:29:50|yukari has the stick grenade up her ass right now| +08::01::2022 07:29:51|Yukari gonna commit warcrimes| +08::01::2022 07:29:52|RUM IS BOTH CUTE AND MINE| +08::01::2022 07:29:52|do it| +08::01::2022 07:29:53|ILL +08::01::2022 07:29:56|I'LL TAKE YOU ALL WITH ME| +08::01::2022 07:29:57|OGGED +08::01::2022 07:29:58|BLOW THEM UP| +08::01::2022 07:29:59|based yukari| +08::01::2022 07:29:59|Fat turtle driver here| +08::01::2022 07:30:00|UTISM +08::01::2022 07:30:01|NO ONE FUCKING CARES ABOUT RUM| +08::01::2022 07:30:03|RESPECT YOUR ELDERS| +08::01::2022 07:30:05|Z +08::01::2022 07:30:05|ASAKA +08::01::2022 07:30:06|AYAI +08::01::2022 07:30:06|?? +08::01::2022 07:30:07|ERD +08::01::2022 07:30:08|I love Rum. Best shark, fight me| +08::01::2022 07:30:08|YUKAIR NEEDS BLOOD| +08::01::2022 07:30:08|GET FUCKED LARPER| +08::01::2022 07:30:09|ANI +08::01::2022 07:30:09|>you should be able to solve this| +08::01::2022 07:30:09|ANI +08::01::2022 07:30:10|Yukari making a fuckin popeye face lmafao| +08::01::2022 07:30:12|-HAYAI +08::01::2022 07:30:13|YUKARI BASED ACCEPT ALLAH'S JUDGMENT| +08::01::2022 07:30:14|YUKARI POWER| +08::01::2022 07:30:15|??????????????? +08::01::2022 07:30:16|AYAI +08::01::2022 07:30:16|EMAPHORE +08::01::2022 07:30:17|SEGGGS WITH CUTLASS| +08::01::2022 07:30:19|I DECLARE A THUMB WAR| +08::01::2022 07:30:20|Planes > Tanks > Shit >>>>> Boats| +08::01::2022 07:30:21|HMHMHMHMHMHHMHMHMHMHMHHM +08::01::2022 07:30:21|ASAKA +08::01::2022 07:30:22|ANI +08::01::2022 07:30:22|"The pleasure of being cummed inside"| +08::01::2022 07:30:23|Sayori mind| +08::01::2022 07:30:25|O +08::01::2022 07:30:27|OTEM +08::01::2022 07:30:27|@DY +08::01::2022 07:30:27|yukari is so fucking based| +08::01::2022 07:30:28|PARTY HARD| +08::01::2022 07:30:29|O +08::01::2022 07:30:29|TFO +08::01::2022 07:30:32|EWD +08::01::2022 07:30:34|NTENSE +08::01::2022 07:30:35|ANCE +08::01::2022 07:30:36|INO +08::01::2022 07:30:36|autism levels too extreme| +08::01::2022 07:30:37|Strong is?| +08::01::2022 07:30:37|UUOOOOOHHHH +08::01::2022 07:30:39|>uncensored handholding| +08::01::2022 07:30:40|is this sex?| +08::01::2022 07:30:40|APE +08::01::2022 07:30:40|ntense +08::01::2022 07:30:42|High actions thumb fighting| +08::01::2022 07:30:42|ESTROYED!!!!!! +08::01::2022 07:30:44|lets go miho fuck her up| +08::01::2022 07:30:44|KA KA KA KA KA KACHI DAZE| +08::01::2022 07:30:44|DSM +08::01::2022 07:30:44|absolute size of this lass| +08::01::2022 07:30:46|ULTRA SPINE| +08::01::2022 07:30:49|FUCK EM UP MIHO| +08::01::2022 07:30:49|Fists are slower than AP shells| +08::01::2022 07:30:49|OGGED +08::01::2022 07:30:50|ULTRA INSTINCT MIHO| +08::01::2022 07:30:50|u u u u| +08::01::2022 07:30:50|IGHT +08::01::2022 07:30:52|IMAGING THAT HAND ON YOUR PP| +08::01::2022 07:30:52|I'd let mako play with my gearstick| +08::01::2022 07:30:53|Casually dodges tank shells for a living| +08::01::2022 07:30:54|become water| +08::01::2022 07:30:55|CUTLASS DEAD| +08::01::2022 07:30:55|Mako's dangerous. | +08::01::2022 07:30:57|GA GA GA GACHI DAZE| +08::01::2022 07:30:57|X>GEN +08::01::2022 07:30:59|SHE'S FAST| +08::01::2022 07:31:00| +08::01::2022 07:31:00|Strong neck because???| +08::01::2022 07:31:01|REDICTABO +08::01::2022 07:31:01|UMIMASEN +08::01::2022 07:31:02|XYGEM +08::01::2022 07:31:02| +08::01::2022 07:31:02|GUN GUN GUN GUN WO MIHO| +08::01::2022 07:31:02|She's not carbon coated| +08::01::2022 07:31:03|UCK +08::01::2022 07:31:03|OPERATION PUNCHY| +08::01::2022 07:31:04|kino fight scene| +08::01::2022 07:31:05|CUTLASS IS DEAD| +08::01::2022 07:31:06|888888888 +08::01::2022 07:31:06|DEX> STR| +08::01::2022 07:31:07|NECK STRENGTH | +08::01::2022 07:31:07| +08::01::2022 07:31:08|-HAYAI +08::01::2022 07:31:08|TRONG +08::01::2022 07:31:08|ESTROYED +08::01::2022 07:31:09|UMIMASEN +08::01::2022 07:31:09|who could beat the demon of ooarai in a fight?| +08::01::2022 07:31:09|AYAI +08::01::2022 07:31:09|OGGED +08::01::2022 07:31:11|Carbon plated neck| +08::01::2022 07:31:12|That back| +08::01::2022 07:31:12|8888888 +08::01::2022 07:31:12|>that spine| +08::01::2022 07:31:13|FRIENDLY FIRE ON| +08::01::2022 07:31:13|Miho has too many I frames| +08::01::2022 07:31:13|nshallah +08::01::2022 07:31:14|she's been carbon coated| +08::01::2022 07:31:14|poor Cutelass| +08::01::2022 07:31:14|ANDSTIELGRANATE +08::01::2022 07:31:14|allah akbar| +08::01::2022 07:31:15|YUKARI NO| +08::01::2022 07:31:16|AAAAAAAAAA +08::01::2022 07:31:17|STR FAGS SEETHING| +08::01::2022 07:31:17|YUKARI NO DONT| +08::01::2022 07:31:17|CUTLASS NO| +08::01::2022 07:31:18|ALLAHU AKBAR| +08::01::2022 07:31:19|YUKARI NO| +08::01::2022 07:31:19|A FUCKING GRENADE| +08::01::2022 07:31:19|YUKARI NO| +08::01::2022 07:31:20|YUKARI YES| +08::01::2022 07:31:20|YUKAIR BLOW IT| +08::01::2022 07:31:20|SHE HAS A GRENADE| +08::01::2022 07:31:22|DEX > STR| +08::01::2022 07:31:22|ullapool caber!| +08::01::2022 07:31:22|LIKE HELL I'M NOT TAKIN YOU WITH ME| +08::01::2022 07:31:23|ADE +08::01::2022 07:31:23|YUKARI NO| +08::01::2022 07:31:23|ALLAHU AKBAR| +08::01::2022 07:31:23|the fucking granade lmao| +08::01::2022 07:31:23|I'LL KILL US ALL| +08::01::2022 07:31:24|A FUCKING GRENADE| +08::01::2022 07:31:24|YUKARI | +08::01::2022 07:31:24|POTATO MASHER| +08::01::2022 07:31:24|GO WITH ALLAH| +08::01::2022 07:31:26|WITNESS ME| +08::01::2022 07:31:26|POTATO MASHER!| +08::01::2022 07:31:26|right from her ass| +08::01::2022 07:31:27|>A FUCKING HANDGRENADE| +08::01::2022 07:31:27|YUKARI NOOOOOOO| +08::01::2022 07:31:28|A FUCKING GRENADE| +08::01::2022 07:31:28|NSHALLAH +08::01::2022 07:31:30|Allahu akbar| +08::01::2022 07:31:30|teilhandgranate +08::01::2022 07:31:30|NSHALLAH +08::01::2022 07:31:31|WTF YUKARI| +08::01::2022 07:31:31|DEX FAGS| +08::01::2022 07:31:31|NTER +08::01::2022 07:31:32|A FUCKING GRENADE| +08::01::2022 07:31:32|INSHALLA YUKARI| +08::01::2022 07:31:34|SHALLAH +08::01::2022 07:31:35|SHES A BOMB| +08::01::2022 07:31:35|>A FUCKING POTATO MASHER| +08::01::2022 07:31:36|Always the bartender getting the end of the stick| +08::01::2022 07:31:36|A FUCKING GRENADE| +08::01::2022 07:31:37|DEX FAGS| +08::01::2022 07:31:39|You were there?| +08::01::2022 07:31:40|SHES GOT A BOMB| +08::01::2022 07:31:43|fucking larpers| +08::01::2022 07:31:44|LOOK IT'S CAPTAIN HARLOCK| +08::01::2022 07:31:47|A FUCKING GRENADE| +08::01::2022 07:31:47|>NON ALCOHOLIC| +08::01::2022 07:31:48|oh boy here comes captain larp| +08::01::2022 07:31:50|>non alcoholic| +08::01::2022 07:31:51|non-alcoholic +08::01::2022 07:31:52|I didn't know being a DEXfag meant carring a fucking bomb| +08::01::2022 07:31:53|>non-alhocolic rum| +08::01::2022 07:31:53| +08::01::2022 07:31:53|ed +08::01::2022 07:31:54|whats the point| +08::01::2022 07:31:56|ARAI +08::01::2022 07:31:57|Yukari is so goddamn intense| +08::01::2022 07:31:57|ishisou +08::01::2022 07:31:59|3 +08::01::2022 07:32:00|>NON-ALCOHOLIC RUM| +08::01::2022 07:32:03|NONDE NONDE| +08::01::2022 07:32:04|I HATE THESE LARPERS| +08::01::2022 07:32:07|Ghost pepper sauce| +08::01::2022 07:32:09|EPPA +08::01::2022 07:32:10|these chicks drinking tabasco| +08::01::2022 07:32:11|Hana bout to hit that mf chug jug| +08::01::2022 07:32:12|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +08::01::2022 07:32:13|>non alchoholic| +08::01::2022 07:32:18|where can I buy non-alcoholic rum| +08::01::2022 07:32:20|CHUG CHUG CHUG CHUG| +08::01::2022 07:32:24|you see, my special ability is to get drunk| +08::01::2022 07:32:25|Stomach of steel| +08::01::2022 07:32:27|CHUG CHUG FUG FUG| +08::01::2022 07:32:30|it begiiiiiins| +08::01::2022 07:32:34|Legolas and Gimli| +08::01::2022 07:32:34|AMERO +08::01::2022 07:32:36|non-alcoholic +08::01::2022 07:32:39|hana is good at this because...| +08::01::2022 07:32:39|spicy buttholes| +08::01::2022 07:32:40|big whoop, i do this every night| +08::01::2022 07:32:44|Damn Hana she’s more heavy weight than me| +08::01::2022 07:32:45|God imagine the shits next day| +08::01::2022 07:32:46|CHUG CHUG CHUG CHUG CHUG CHUG | +08::01::2022 07:32:46|IMAGINE THE TOILET AFTERMATH| +08::01::2022 07:32:48|Hana going to show you a good time| +08::01::2022 07:32:48|literally me| +08::01::2022 07:32:48|BRING IT ON| +08::01::2022 07:32:50|You drink ghost pepper sauce?| +08::01::2022 07:32:51|She can swallow anything without tasting it.| +08::01::2022 07:32:51|God I love to drink tabasco| +08::01::2022 07:32:54|imagine the smell| +08::01::2022 07:32:57|I love that 90's hair| +08::01::2022 07:32:57|BEST LARPERS IN OARAI| +08::01::2022 07:32:58|UTE +08::01::2022 07:33:00|their shits do fuel the ship...| +08::01::2022 07:33:02|IMAGINE THE SMELL| +08::01::2022 07:33:05|Which guppies would be the funnest to drink with?| +08::01::2022 07:33:06|(6 livers later)| +08::01::2022 07:33:11|>that one artist who ships mako with cutlass| +08::01::2022 07:33:13|>spiced rum with just the spiced| +08::01::2022 07:33:18|What does being a gunner have anything to do with this| +08::01::2022 07:33:18|I feel like I could chug a bottle of alcoholic rum| +08::01::2022 07:33:19|yer yer yer| +08::01::2022 07:33:20|I WANT TO BE HANA'S TOILET| +08::01::2022 07:33:22|Smell's going to be worse once it comes out the other end| +08::01::2022 07:33:23|Shipping mako with cutlass is kin o| +08::01::2022 07:33:23|Hana shits herself to death on the toilet tomorrow| +08::01::2022 07:33:27|Spiced rum hold the rum| +08::01::2022 07:33:28|INO +08::01::2022 07:33:29|ino +08::01::2022 07:33:32|ASED +08::01::2022 07:33:32|she's cooughing blood| +08::01::2022 07:33:32|she's fuckng hallucinating| +08::01::2022 07:33:33|Maho x Anchovy is KINO| +08::01::2022 07:33:34|LOCKED ON| +08::01::2022 07:33:35|tank analogies| +08::01::2022 07:33:35|lol what?| +08::01::2022 07:33:36|?? +08::01::2022 07:33:37|Autism takes over| +08::01::2022 07:33:37|imagine the smell with how little ventilation is in that room... imagine| +08::01::2022 07:33:39|mako-cutlass shipper artist is based| +08::01::2022 07:33:41|some anons here drank more than this I'm sure of it| +08::01::2022 07:33:41|UTE +08::01::2022 07:33:43|OGGED +08::01::2022 07:33:44|Oh i get it cuz they're shots | +08::01::2022 07:33:45|HANA SHIT AFTHERMATH OVA WHEN?| +08::01::2022 07:33:45|I LIVED BITCH!!!!| +08::01::2022 07:33:46|>dude this is just like shooting a tank| +08::01::2022 07:33:48|ed +08::01::2022 07:33:48|ip +08::01::2022 07:33:49|>that random pixelated shot| +08::01::2022 07:33:49|Bikini Atoll Shit| +08::01::2022 07:33:50|OOOOOOOOO +08::01::2022 07:33:50|Tries to do it cool| +08::01::2022 07:33:50|FULL BROADSIDE COMMANDER | +08::01::2022 07:33:50|Coughing tabasco| +08::01::2022 07:33:51|Imagine their chilli shits tomorrow| +08::01::2022 07:33:52|??????? +08::01::2022 07:33:53|Fucking chokes| +08::01::2022 07:33:54|it's over| +08::01::2022 07:33:55|Piratebros we got cocky....| +08::01::2022 07:33:57|SEA SHIPS BTFO| +08::01::2022 07:34:00|????????????????????????? +08::01::2022 07:34:00| +08::01::2022 07:34:00|Oh great, she's dead| +08::01::2022 07:34:02|>SHE FUCKING DIED| +08::01::2022 07:34:02|oh i get. Taking shots| +08::01::2022 07:34:03|RIP IF F| +08::01::2022 07:34:04|EAD +08::01::2022 07:34:06|andlubbers... +08::01::2022 07:34:08| +08::01::2022 07:34:10|I CAN'T BELIEVE SHE'S FUCKING DEAD| +08::01::2022 07:34:10|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +08::01::2022 07:34:12|why is she so large| +08::01::2022 07:34:13|Ship sank.| +08::01::2022 07:34:14|>sodoko casually carries an iron ball| +08::01::2022 07:34:21|Landlubbers stay winning| +08::01::2022 07:34:21|ANDSHIIIIIIPS +08::01::2022 07:34:24|Why are the pirates so useless| +08::01::2022 07:34:25|i'm taking my sodoko and leaving| +08::01::2022 07:34:29|HU +08::01::2022 07:34:30|ESU +08::01::2022 07:34:31|They could probably ask Saunders for a spare| +08::01::2022 07:34:32|tanks = landships| +08::01::2022 07:34:34|anship +08::01::2022 07:34:36|Fat turtles win| +08::01::2022 07:34:37|HO +08::01::2022 07:34:37|OMO +08::01::2022 07:34:39|UHU +08::01::2022 07:34:39|momo is not a nobody| +08::01::2022 07:34:39|momo got raped here once| +08::01::2022 07:34:41|Tanks >>>>>>>>>>>>>>>>>>>>>> Boats| +08::01::2022 07:34:43|MOMO | +08::01::2022 07:34:45|AAAAAAAA +08::01::2022 07:34:46|PROTECT MOMO!| +08::01::2022 07:34:47|inchi +08::01::2022 07:34:49|Momo's past when¡| +08::01::2022 07:34:50|REEEEEEETTTTAAAAAAAARRRRRRRDDDDDD MOMO| +08::01::2022 07:34:50|UG +08::01::2022 07:34:52|i want murakami to snap me in half| +08::01::2022 07:34:53|protect the boss| +08::01::2022 07:34:57|Momo was a nobody until they realized| +08::01::2022 07:34:59|EVERYONE LOVES MOMO!!!!!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 07:35:02|SAVE MOMO| +08::01::2022 07:35:04|KIND AND BASED MOMO| +08::01::2022 07:35:05|tank thing| +08::01::2022 07:35:05|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +08::01::2022 07:35:07|o +08::01::2022 07:35:08|Momo was a delinquent | +08::01::2022 07:35:11|STUPID GOTTA STAY TOGETHER| +08::01::2022 07:35:12|yukari explains a tank to retards| +08::01::2022 07:35:13|OH NO SHES RETARDED| +08::01::2022 07:35:13|I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +08::01::2022 07:35:13|EVERYONE SAY THANKS TO MOMO| +08::01::2022 07:35:14|ANO DESU NEE| +08::01::2022 07:35:14|a tank is a penis| +08::01::2022 07:35:14|utism +08::01::2022 07:35:15|What the fuck is a tank| +08::01::2022 07:35:16|do you have to leave the ship if you are expelled?| +08::01::2022 07:35:17|momo should be killed| +08::01::2022 07:35:20|I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO | +08::01::2022 07:35:20|why is yukari so based| +08::01::2022 07:35:21|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +08::01::2022 07:35:24|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +08::01::2022 07:35:24|MAI +08::01::2022 07:35:25|What the fuck is a tank| +08::01::2022 07:35:26|mai +08::01::2022 07:35:26|I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +08::01::2022 07:35:26|Momo let these delinquent larpers stay| +08::01::2022 07:35:28|Smoked sausage | +08::01::2022 07:35:29|what the fuck| +08::01::2022 07:35:31|YUKAIR DORK| +08::01::2022 07:35:31|literally image the smell| +08::01::2022 07:35:31|ausage +08::01::2022 07:35:31|ESHOU +08::01::2022 07:35:33|I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +08::01::2022 07:35:34|god I wish that sausage was me| +08::01::2022 07:35:36|Can't be lonely if you cover for the almost expelled| +08::01::2022 07:35:39|I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +08::01::2022 07:35:40|NIFFFFFFFFFFFFFFFFFFFFFF +08::01::2022 07:35:42|putting meat into mako| +08::01::2022 07:35:43|MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX | +08::01::2022 07:35:43|MY WIFE RUM| +08::01::2022 07:35:44|MALCOM REED APPROVES| +08::01::2022 07:35:47|ot +08::01::2022 07:35:47|I love Rum fuight me| +08::01::2022 07:35:51|She ate a frozen sausage| +08::01::2022 07:35:51|I love sausage| +08::01::2022 07:35:54|sex with manko| +08::01::2022 07:35:56|shitty ass tank| +08::01::2022 07:35:58|slap those sausages and mine| +08::01::2022 07:35:59|YES RIDE ME PIRATE GIRL| +08::01::2022 07:36:00|i love cock no homo| +08::01::2022 07:36:04|The meats always make me hungry for them| +08::01::2022 07:36:04|smoking meat is pretty great| +08::01::2022 07:36:06|I WANNA FEED MAKO MY SAUSAGE| +08::01::2022 07:36:06|CUTE LASS| +08::01::2022 07:36:09|ANDPIRATES +08::01::2022 07:36:09|Thats homo dude| +08::01::2022 07:36:11|Riboruba Osherottu| +08::01::2022 07:36:13|sargasso pls snusnu| +08::01::2022 07:36:14|holy fuck these chuuni| +08::01::2022 07:36:17|Aren't they still undercrewed| +08::01::2022 07:36:17|i said no homo| +08::01::2022 07:36:18|STUPID SEXY FLINT| +08::01::2022 07:36:20|EMOTIONLESS SEX WITH CUTLASS| +08::01::2022 07:36:20|whitebait +08::01::2022 07:36:20|based cutlass| +08::01::2022 07:36:21|oT +08::01::2022 07:36:21|I WANT CUTLASS' FRESH WHITE THIGHS| +08::01::2022 07:36:21|Imagine if Duce found this tank. Holy heavens| +08::01::2022 07:36:22|Cutlass and Flint are waifus| +08::01::2022 07:36:24|sweaty tomboys| +08::01::2022 07:36:25|kinda homo anon| +08::01::2022 07:36:25|HOSHINO PITS\| +08::01::2022 07:36:26|CUTLASS BEST PIRATE| +08::01::2022 07:36:29|waifus +08::01::2022 07:36:37|MOMO SEX MOMO SEX MOMO SEX MOMO SEX | +08::01::2022 07:36:38|dang, i homo| +08::01::2022 07:36:39|FUUUUCK I CAN;T WAIT ANY LONGER FOR ANDOU| +08::01::2022 07:36:39|RUM A CUTE| +08::01::2022 07:36:40|What do they do about the carbon monoxide poisoning | +08::01::2022 07:36:43|pirates aquire| +08::01::2022 07:36:43|I want the whitefish special please| +08::01::2022 07:36:45|UTE +08::01::2022 07:36:45|LAGS +08::01::2022 07:36:46|hrogs +08::01::2022 07:36:49|Be patient Anon| +08::01::2022 07:36:49|The pirates makenthe history girls look normal| +08::01::2022 07:36:51|LANDER +08::01::2022 07:36:51| +08::01::2022 07:36:51|andou. andou. andou. andou. | +08::01::2022 07:36:52|need momo ryona ASAP| +08::01::2022 07:36:52|RUM'S CUTE DANCE| +08::01::2022 07:36:52|yuki da| +08::01::2022 07:36:53|slags +08::01::2022 07:36:54|ANGLOS WILL JOB| +08::01::2022 07:36:55|bongs +08::01::2022 07:36:55|whitefish special doujin is kino| +08::01::2022 07:36:55|redcoats BEWARE| +08::01::2022 07:36:56|SAAM +08::01::2022 07:36:58|andou. andou. andou. andou. andou. andou. | +08::01::2022 07:36:58|Not even British| +08::01::2022 07:37:01|>cheeki slags innit| +08::01::2022 07:37:02|momo hate nigger hate| +08::01::2022 07:37:04|????????? +08::01::2022 07:37:04|RUM DENIERS WILL BE PUNISHED| +08::01::2022 07:37:06|ippu... +08::01::2022 07:37:06|RI'ISH +08::01::2022 07:37:07|imagine going to bongistan voluntarily| +08::01::2022 07:37:07|>1st repeat in the history of the school| +08::01::2022 07:37:07|AKAHIP +08::01::2022 07:37:09|Darjeeling is so gonna get bullied in Bongland| +08::01::2022 07:37:09|NO DARJ DON'T GO TO ENGLAND| +08::01::2022 07:37:10|>MORE IMPORTANT| +08::01::2022 07:37:11|Rum is sacred| +08::01::2022 07:37:12|remember that saying rosehip| +08::01::2022 07:37:12|ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHI| +08::01::2022 07:37:13|fooking slag| +08::01::2022 07:37:13|finally, some good fucking tea| +08::01::2022 07:37:13|UTEHIP +08::01::2022 07:37:14|ri'ish +08::01::2022 07:37:15|UUUUUUUUUUUUUUUUUUUUUUUUTE +08::01::2022 07:37:15|fucking Teaboo| +08::01::2022 07:37:16|Rosehip as commander next season when?| +08::01::2022 07:37:17|RUKURIRI HATESEC| +08::01::2022 07:37:17|FORESHADOWING +08::01::2022 07:37:19|OSEHIP +08::01::2022 07:37:19|Why are there slags on my screen?| +08::01::2022 07:37:20|katyushas thighs| +08::01::2022 07:37:20|MY WIFE, ROSEHIP| +08::01::2022 07:37:20|HANDE HOCH| +08::01::2022 07:37:21|cute bakahip| +08::01::2022 07:37:23|will we get the frog ova cut in?| +08::01::2022 07:37:23|Assam laying the truth. "First repeater"| +08::01::2022 07:37:25|I don't speak commie| +08::01::2022 07:37:25|>FAKE BRIT BOONG| +08::01::2022 07:37:27|what the fuck are they saying| +08::01::2022 07:37:28|PRAVDA WILL BEAT KMM!!!| +08::01::2022 07:37:29|A +08::01::2022 07:37:29|my maho wife| +08::01::2022 07:37:31|ARASHO +08::01::2022 07:37:34|you can't learn russian, you don't even know japanese| +08::01::2022 07:37:34|THIS ISN'T NIHIONGO| +08::01::2022 07:37:37|VNIAMNIE VNIMANIE| +08::01::2022 07:37:37|lyat +08::01::2022 07:37:38|wtf i thought they ded| +08::01::2022 07:37:38|ramp +08::01::2022 07:37:39|a so| +08::01::2022 07:37:42|PACHKI +08::01::2022 07:37:43| 本語でおk +08::01::2022 07:37:44|stop talking about the ramp| +08::01::2022 07:37:44|lat +08::01::2022 07:37:47|A SO| +08::01::2022 07:37:49|ORCHST +08::01::2022 07:37:53|[speaks bear]| +08::01::2022 07:37:54|AZ +08::01::2022 07:37:54|iny +08::01::2022 07:37:56|Cute Ah so| +08::01::2022 07:37:58|holy fuck so flat| +08::01::2022 07:37:58|I thought klara fucking died, what the hell| +08::01::2022 07:38:00|"I'm sure we're gonna win this time"| +08::01::2022 07:38:00|I love Nonna's rusiaboo VA| +08::01::2022 07:38:01|antu +08::01::2022 07:38:02|ENTER FINS| +08::01::2022 07:38:04|Klara still trolling| +08::01::2022 07:38:05| 本語で話しなさい +08::01::2022 07:38:05|USA USA USA USA USA| +08::01::2022 07:38:08|hithook! +08::01::2022 07:38:08|SA +08::01::2022 07:38:10|YOU JOBBED TO SPURDOS| +08::01::2022 07:38:10|"Yeah we'll win this time!"| +08::01::2022 07:38:12|AHAHAHAHAHAHAHAHHAHAHAHA +08::01::2022 07:38:14|USA USA USA| +08::01::2022 07:38:15|URICA +08::01::2022 07:38:15|SHE DID THATS HER GHOST| +08::01::2022 07:38:15|YOU FUCKS| +08::01::2022 07:38:16|UAZ LADA| +08::01::2022 07:38:17|CUTE WANI| +08::01::2022 07:38:18|UTE +08::01::2022 07:38:19|AAAAAAAAAAAHAHAHAHAHAHAHAHAHAHA +08::01::2022 07:38:19|SHE ISN'T EVEN GOING OUT WITH TAKESHI| +08::01::2022 07:38:19|nazi waifu| +08::01::2022 07:38:21|AHAHAHAHAHAHAHA +08::01::2022 07:38:22|TAKASHI | +08::01::2022 07:38:22|EVERYONE LAUGH AT THE WANI| +08::01::2022 07:38:22|No it's not| +08::01::2022 07:38:23|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 07:38:23|notice me...| +08::01::2022 07:38:23|EKSHIIIIIIIIIIIIIIIIIIIIII +08::01::2022 07:38:24|MY MAHO WIFE| +08::01::2022 07:38:24|>rotor and fixed wing Damn I love Noami| +08::01::2022 07:38:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE VV| +08::01::2022 07:38:25|AKASHI +08::01::2022 07:38:25|ERIKA IS CUTE| +08::01::2022 07:38:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:28|TAKESHI DUMPED HER BEFORE FUCKING| +08::01::2022 07:38:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:29|no fuck off wani| +08::01::2022 07:38:30|DUCE DUCE DUCE DUCE| +08::01::2022 07:38:30|shes talking about mwe| +08::01::2022 07:38:30|whip me pls| +08::01::2022 07:38:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:31|Erika! LIVE from the cuckshed| +08::01::2022 07:38:32|its dvce time| +08::01::2022 07:38:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:33|DUCE DUCE DUCE DUCE| +08::01::2022 07:38:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:33|ISISISISISISISIS +08::01::2022 07:38:33|Koume, give her a hug.| +08::01::2022 07:38:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:35|AHOOOOO +08::01::2022 07:38:35|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:37|UCE +08::01::2022 07:38:37|HE wont| +08::01::2022 07:38:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 07:38:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:38|HANAKATTA +08::01::2022 07:38:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:38|Chadkeshintoo busy fucking everony else lmao| +08::01::2022 07:38:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:39|Here we go again| +08::01::2022 07:38:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:39|ISISISISISISISI +08::01::2022 07:38:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:40|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:41|>Kay never mentions studying over at the US| +08::01::2022 07:38:41| DUCE DUCE DUCE| +08::01::2022 07:38:41|I FUCKING LOVE DUCE| +08::01::2022 07:38:41|WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +08::01::2022 07:38:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:42|spam +08::01::2022 07:38:42|DUCE DUCE DUCE UCE DUCVE| +08::01::2022 07:38:42|TAKESHI WASN'T EVEN GOING OUT WITH HER| +08::01::2022 07:38:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:43|DUCE DUCE DUCE| +08::01::2022 07:38:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:44|DUCE DUCE DUCE DUCE| +08::01::2022 07:38:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:45|Takeshi found out you taped his radio| +08::01::2022 07:38:45|DUCE DUCE DUCE DUCE| +08::01::2022 07:38:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:46|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:47|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 07:38:47|DVCE DVCE DVCE DVCE| +08::01::2022 07:38:47|DUCE DUCE DUCE!| +08::01::2022 07:38:47|DVCE DVCE DVCE DVCE| +08::01::2022 07:38:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:48|A! +08::01::2022 07:38:48|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 07:38:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:49|A~ +08::01::2022 07:38:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:38:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:50|ANZIO STRONK| +08::01::2022 07:38:52|DUCE DUCE DUCE| +08::01::2022 07:38:52|DUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCE| +08::01::2022 07:38:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:38:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:53|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 07:38:54|OTSUGEKI +08::01::2022 07:38:54|OTSUGEI +08::01::2022 07:38:54|\o:: BANZAI \o::| +08::01::2022 07:38:56|AKAS +08::01::2022 07:38:57|ANZAI +08::01::2022 07:38:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:38:59|TO TSU GE KI| +08::01::2022 07:38:59|TOTSUGEKI | +08::01::2022 07:38:59|>the only screen time maho gets is a brief skype call| +08::01::2022 07:38:59|OTSUGEKI +08::01::2022 07:39:00|TOTSUGEKI TOTSUGEKI TOTSUGEKI| +08::01::2022 07:39:01|OTSUGEKI! +08::01::2022 07:39:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:39:03|TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI | +08::01::2022 07:39:03|OTSUGEKIIIIIIIIIIIIIIIIIII +08::01::2022 07:39:04|charging bakas| +08::01::2022 07:39:04|OTSUGEKI +08::01::2022 07:39:04|OTSUGEKI +08::01::2022 07:39:05|how did these totsugekiniggers beat bracket 1| +08::01::2022 07:39:07|OTSUGEKI +08::01::2022 07:39:08|Aren't girls the cutest when they're almost retarded| +08::01::2022 07:39:08|OTSUGEKI +08::01::2022 07:39:08|OTSUGEKI +08::01::2022 07:39:08|OTSUGEKI +08::01::2022 07:39:10|OTSUGEKI +08::01::2022 07:39:10|BANZAI | +08::01::2022 07:39:11|DDDDDDDDDDDDDDDDDDDDDDDDDDdddd +08::01::2022 07:39:11|OTSUGEKI +08::01::2022 07:39:13|Maho's a college girl now. She's legal.| +08::01::2022 07:39:14|DDD +08::01::2022 07:39:15|absolutely anon| +08::01::2022 07:39:16|PRÖLÖLÖÖÖÖÖ +08::01::2022 07:39:17|No more TOTSUGEKI| +08::01::2022 07:39:17|FUKUDA UOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +08::01::2022 07:39:18|Based retards| +08::01::2022 07:39:18|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 07:39:18|Can't win if you don't charge| +08::01::2022 07:39:19|DDDDDDDD +08::01::2022 07:39:19|ENIS +08::01::2022 07:39:19|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 07:39:19|DDDDDDDDDDDDDD +08::01::2022 07:39:21|what was that about chubby checkers?| +08::01::2022 07:39:21| 生報國 +08::01::2022 07:39:21|DDDDDDDDDDDDDDDDDD +08::01::2022 07:39:22|DD +08::01::2022 07:39:22|SAUNA :DDDDDDDDDDD| +08::01::2022 07:39:23|so is alice| +08::01::2022 07:39:24|ITTU +08::01::2022 07:39:24|DDD +08::01::2022 07:39:24|ENIS +08::01::2022 07:39:24|DDDDD +08::01::2022 07:39:25|DAMN KIDS| +08::01::2022 07:39:25|BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 07:39:25|GOD LOOK AT HOW FUCKING FLAT THEY ARE| +08::01::2022 07:39:26|DDDDDDDDDDDDDDD +08::01::2022 07:39:26|DFC X2| +08::01::2022 07:39:27|PERKELE :DDDDDD| +08::01::2022 07:39:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 07:39:28|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 07:39:28|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 07:39:29|>finnish """"people""""| +08::01::2022 07:39:29|THAT'S FUCKING HOT| +08::01::2022 07:39:31|DDDDDDDDDD +08::01::2022 07:39:31|SPINNING AKI| +08::01::2022 07:39:32|DDDD +08::01::2022 07:39:33|NDOU +08::01::2022 07:39:33|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 07:39:33|Määmi sauna| +08::01::2022 07:39:34|DDD +08::01::2022 07:39:34|>PLAYING KANTELE IN THE SAUNA| +08::01::2022 07:39:34|CUTE :DDDD| +08::01::2022 07:39:35|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 07:39:35|Dirty hobos| +08::01::2022 07:39:36|DDD +08::01::2022 07:39:37|AUNA:DDDDDDDDDDDDDD +08::01::2022 07:39:38|ARISU'S SISTER TOO CUTE| +08::01::2022 07:39:39|BINLAND :DDDDDDDDDDDDDDDDDDD| +08::01::2022 07:39:40|ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU AN| +08::01::2022 07:39:40|cute finns| +08::01::2022 07:39:42| +08::01::2022 07:39:44|ANDOU IS HERE| +08::01::2022 07:39:45|ika! +08::01::2022 07:39:45|ROGS +08::01::2022 07:39:47|bc less gooo| +08::01::2022 07:39:48| +08::01::2022 07:39:48|FREEDOM +08::01::2022 07:39:49|??? +08::01::2022 07:39:49|GAY FROGS| +08::01::2022 07:39:49|ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +08::01::2022 07:39:50|REEDOM +08::01::2022 07:39:50|ATICAN +08::01::2022 07:39:51|4 DOLLARS FOR MOMO| +08::01::2022 07:39:51|MON DIEU| +08::01::2022 07:39:52|ITTIES +08::01::2022 07:39:52|ANDOU GANG| +08::01::2022 07:39:53|ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +08::01::2022 07:39:54|OOBA!! +08::01::2022 07:39:55|ARRIBA ESPANA| +08::01::2022 07:39:55|ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +08::01::2022 07:39:56|OH NO ITS THE FRENCH | +08::01::2022 07:39:56|OOBA +08::01::2022 07:39:57|KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI | +08::01::2022 07:39:57|Nice Spain| +08::01::2022 07:39:58|BC MORE LIKE BBC| +08::01::2022 07:39:59|brown tits| +08::01::2022 07:39:59|I WANNA SEX THE FINNS| +08::01::2022 07:40:00|MARIE FAT| +08::01::2022 07:40:00|FROGS +08::01::2022 07:40:00|ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +08::01::2022 07:40:01|BIG SPANISH MILKERS| +08::01::2022 07:40:01|EX +08::01::2022 07:40:02|fucking onions| +08::01::2022 07:40:02|Oh shit the Fr*nch| +08::01::2022 07:40:02|HON HON HON HON HON HON| +08::01::2022 07:40:02|ROGS +08::01::2022 07:40:04|AAYYYY +08::01::2022 07:40:05|GAY FROGS| +08::01::2022 07:40:06|i got jebaited breddy hard the first time| +08::01::2022 07:40:07|ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +08::01::2022 07:40:09|LESBIAN HATE SEX| +08::01::2022 07:40:10|GAY FROGS| +08::01::2022 07:40:10|Oh, right. Four is death| +08::01::2022 07:40:12|Enter sex bombs| +08::01::2022 07:40:12|MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT | +08::01::2022 07:40:14|AT +08::01::2022 07:40:14|French +08::01::2022 07:40:15|JUST FUCK ALREADY| +08::01::2022 07:40:15|Fr*nchies +08::01::2022 07:40:16|sacre bleu| +08::01::2022 07:40:17|My Algerian wife| +08::01::2022 07:40:17|ANDOUUUU SEXY BROWN GIRL| +08::01::2022 07:40:17|ANDOU, MY WIFE| +08::01::2022 07:40:18|>jebaited go back nigger| +08::01::2022 07:40:19|French baguettes| +08::01::2022 07:40:19|Fr*nch are not people| +08::01::2022 07:40:19|yall bitches gonna spit on the keiki| +08::01::2022 07:40:21|MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS | +08::01::2022 07:40:22|GAYS? IN TANKS?| +08::01::2022 07:40:22|Sexy frogs| +08::01::2022 07:40:23|HATE SEX| +08::01::2022 07:40:25|France +08::01::2022 07:40:25|EIFFEL TOWER| +08::01::2022 07:40:25|Truth is, Frogs were gay from the start| +08::01::2022 07:40:26|imagine the hate sex| +08::01::2022 07:40:26|r*nch +08::01::2022 07:40:28|We should remove Fr*nce| +08::01::2022 07:40:28|The french designs are fantastic| +08::01::2022 07:40:31|lums +08::01::2022 07:40:31|>150cm >150kg| +08::01::2022 07:40:31|>123cm >198kg| +08::01::2022 07:40:33|ALSACE LORRAINE IS SERBIAN| +08::01::2022 07:40:34|They're not gay, they're just French | +08::01::2022 07:40:35|taiyaki war| +08::01::2022 07:40:35|mooth +08::01::2022 07:40:36|hot and angry ::u:: action| +08::01::2022 07:40:37|le france| +08::01::2022 07:40:38|I want to fuck a frenchie| +08::01::2022 07:40:39|Class divide| +08::01::2022 07:40:39|>Frogs turning on eachother| +08::01::2022 07:40:39|TWO GIRLS CAN'T HAVE SEX INSIDE A TANK| +08::01::2022 07:40:40|ANTSU +08::01::2022 07:40:40|MARIE FAT NAKADASHI THIGH SEX| +08::01::2022 07:40:41|OUI OUI VE ARE GHEY| +08::01::2022 07:40:41|mhhahaha, the french.....| +08::01::2022 07:40:43|EVROPA IS SERBIAN| +08::01::2022 07:40:43|nothing new| +08::01::2022 07:40:44|TAIYAKI WAR| +08::01::2022 07:40:46|FUCKING FRECH| +08::01::2022 07:40:48|based small business owner Andou| +08::01::2022 07:40:50|THE GHETTO| +08::01::2022 07:40:51|are we gonna watch yukari film first?| +08::01::2022 07:40:54|ALSACE RIGHTFUL GERMAN CLAY| +08::01::2022 07:40:54|what's a big city without slums lmao| +08::01::2022 07:40:57|Look at those filthy slums| +08::01::2022 07:40:58|anzio did it better| +08::01::2022 07:40:59|BROWN FRENCHIES| +08::01::2022 07:40:59|Cooking with Andou| +08::01::2022 07:40:59|Too bad tanned frenchie doesn't have a driver license.| +08::01::2022 07:41:02|>buffering at the french| +08::01::2022 07:41:03|looks just like paris| +08::01::2022 07:41:05|I LOVE THE ONION| +08::01::2022 07:41:06|>frog revolution soon| +08::01::2022 07:41:08|that poor dog lmao| +08::01::2022 07:41:09|FEED THE DOGGY| +08::01::2022 07:41:09|sneaking shit into the taiyaki!| +08::01::2022 07:41:10|fucking poorfags| +08::01::2022 07:41:10|Ah, yes, authentic French cuisine | +08::01::2022 07:41:10|ALSACE IS IN CHINESE HISTORY BOOKS| +08::01::2022 07:41:10|fishe au chocolat| +08::01::2022 07:41:12|Just look at how fucking oily she is holy shit| +08::01::2022 07:41:13|Andou is a shitskin| +08::01::2022 07:41:13|>french takoyaki| +08::01::2022 07:41:13|very authentic paris vibes| +08::01::2022 07:41:14|shit +08::01::2022 07:41:15|turds in food?| +08::01::2022 07:41:15|OOP +08::01::2022 07:41:17|LOG OF POO| +08::01::2022 07:41:17|SHIT TAYAKI| +08::01::2022 07:41:18|inferior cuisine | +08::01::2022 07:41:18|HEYO MACHI| +08::01::2022 07:41:19|aiyaki +08::01::2022 07:41:20|traditional french taiyaki| +08::01::2022 07:41:20|she has cute eyes| +08::01::2022 07:41:21|Anzio would have a heart attack if they saw this| +08::01::2022 07:41:23|REP ANDOU| +08::01::2022 07:41:25|>angery taeyaki| +08::01::2022 07:41:25|The FDA's not gonna like this...| +08::01::2022 07:41:28|None of these girls are french| +08::01::2022 07:41:28|AZIS +08::01::2022 07:41:29|FUCK THE POLICE| +08::01::2022 07:41:31|IEG +08::01::2022 07:41:33|This is just Paris wtf| +08::01::2022 07:41:33|Imagine if this is ghetto Anzou| +08::01::2022 07:41:33|PUT SHIT ON TAIYAKI AND THEY WONT REALIZE| +08::01::2022 07:41:33|oh fuck, the taxman| +08::01::2022 07:41:34|revolution taiyaki| +08::01::2022 07:41:36|The FDA can suck my dick| +08::01::2022 07:41:36|wazza wazza| +08::01::2022 07:41:36|ESHTAP +08::01::2022 07:41:36|OSHIDA A SHIT A SHITTTTTTTTTTTTTTTTTTTT| +08::01::2022 07:41:37|Smelly girls with long, thick, and fluffy hair is my fetish | +08::01::2022 07:41:37|VIVE LE REVOLUTION| +08::01::2022 07:41:37|>unko taiyaki| +08::01::2022 07:41:38|rena my wife| +08::01::2022 07:41:39|OH SHIT ITS MORE FR*NCH| +08::01::2022 07:41:42|OL +08::01::2022 07:41:42|Disdain for plebs| +08::01::2022 07:41:44|STINKY FRENCH| +08::01::2022 07:41:45|FATASS FROG| +08::01::2022 07:41:46|MAGINE +08::01::2022 07:41:46|Greesy and sweaty, just like real Frenchmen.| +08::01::2022 07:41:46|get these white people out of the hood| +08::01::2022 07:41:47|HON HON TIME| +08::01::2022 07:41:48|MELLY +08::01::2022 07:41:51|imagine the smell| +08::01::2022 07:41:52|imagine the smell| +08::01::2022 07:41:52|>i'm here to OHOHOHO at you| +08::01::2022 07:41:53|GET THE GUILLOTINE| +08::01::2022 07:41:53|wtf mean| +08::01::2022 07:41:54|pabreeze +08::01::2022 07:41:56|BREAK THAT PEASANTS HAND| +08::01::2022 07:41:58|I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HAT| +08::01::2022 07:41:59|that ship must smell awful| +08::01::2022 07:41:59|Animated Asparagus never| +08::01::2022 07:42:00|Based aristocrats dabbing on the plebs| +08::01::2022 07:42:02|Angry sex| +08::01::2022 07:42:04|ABREZE +08::01::2022 07:42:05|second time something got called tyranny in GuP| +08::01::2022 07:42:07|I HATE THE FDA| +08::01::2022 07:42:08|Muh dick| +08::01::2022 07:42:08|FUCKING DISGUSTING POOR MIGRANT| +08::01::2022 07:42:13|SO DA SO DA| +08::01::2022 07:42:13|DOWN WITH THE NOBILITY| +08::01::2022 07:42:14|what was the first?| +08::01::2022 07:42:14|but globohomo made the ships...| +08::01::2022 07:42:15|soda soda| +08::01::2022 07:42:15|JUST EAT CAKE| +08::01::2022 07:42:16|THESE GIRLS ARE BUILT FOR HATE SEX| +08::01::2022 07:42:16|Revolution when?| +08::01::2022 07:42:17|SODA SODA| +08::01::2022 07:42:17|SORA SORA| +08::01::2022 07:42:18|IMAGINE THE SMELL| +08::01::2022 07:42:18|SODA SODA| +08::01::2022 07:42:19|fuck the poor man| +08::01::2022 07:42:20|SODA SODA| +08::01::2022 07:42:22|SOU DA SOU DA !| +08::01::2022 07:42:22|REMOVE KEBAB| +08::01::2022 07:42:22|SORA SORA| +08::01::2022 07:42:22|SODA SODA| +08::01::2022 07:42:25|just eat cake bruh| +08::01::2022 07:42:26|BUILT FOR REVOLUTION| +08::01::2022 07:42:26|Hear! Hear! | +08::01::2022 07:42:27|EBAB +08::01::2022 07:42:27|>FRENCH """"CUISINE""""| +08::01::2022 07:42:28|make the stalls disappear and make them pay for it| +08::01::2022 07:42:29|just stop being poor it's easy| +08::01::2022 07:42:29|FUCK the bourgeoisie| +08::01::2022 07:42:29|ESHOKU +08::01::2022 07:42:30|IMAGINE NOT ABLE TO BUY CAVIAR| +08::01::2022 07:42:32|IMAGINE BEING A POORFAG| +08::01::2022 07:42:32|REMOVE FRANCE| +08::01::2022 07:42:32|BASED ANDOU| +08::01::2022 07:42:33|SODA SODA| +08::01::2022 07:42:34|SODA SODA| +08::01::2022 07:42:34|SOUDA SOUDA| +08::01::2022 07:42:35|escargot is good| +08::01::2022 07:42:38|das racis| +08::01::2022 07:42:38|SODA SODA| +08::01::2022 07:42:39|ANDOU SEEEEEEEEEXXXXXXXXXXX| +08::01::2022 07:42:39|SODA SODA| +08::01::2022 07:42:40|FRENCH POLICE DISCRIMINATES MINORITIES 1912 COLORED| +08::01::2022 07:42:40|POORFAG BE LIKE| +08::01::2022 07:42:41|Tony Kaku| +08::01::2022 07:42:42|ONIKAKU +08::01::2022 07:42:43|TONY KAKU WILL SETTLE THIS| +08::01::2022 07:42:44|ek +08::01::2022 07:42:45|All of these girls are Japanese*| +08::01::2022 07:42:45|oooooo +08::01::2022 07:42:48|I like Dr. Pepper| +08::01::2022 07:42:48|UILLOTINE +08::01::2022 07:42:50|Don't need to pay if you cook it yourself| +08::01::2022 07:42:51|Toni Ceaxceaux| +08::01::2022 07:42:52|>being poor| +08::01::2022 07:42:53|we wuz carnies and shit| +08::01::2022 07:42:56|peasants btfo| +08::01::2022 07:42:57|POV: YOUR STARTING A REVOLUTION| +08::01::2022 07:43:00|UTE +08::01::2022 07:43:01|heeeeeeeeit +08::01::2022 07:43:02|this is what the french get for letting colonies get citizenship| +08::01::2022 07:43:02|ANARCHIST ANDOU| +08::01::2022 07:43:03|the niggers of frogs| +08::01::2022 07:43:04|_; +08::01::2022 07:43:05|ANDOU OUR NEXT NAPOLEON| +08::01::2022 07:43:07|odomommy +08::01::2022 07:43:07|Fuck peasants, | +08::01::2022 07:43:08|cute poorfags| +08::01::2022 07:43:09|og +08::01::2022 07:43:10|OG +08::01::2022 07:43:11|loom at that scraggy dog| +08::01::2022 07:43:12|literally 1789| +08::01::2022 07:43:12|anime eyes dog....| +08::01::2022 07:43:15|og +08::01::2022 07:43:15|ook +08::01::2022 07:43:15|based poorfags| +08::01::2022 07:43:16|WHAT THE DOG DOIN| +08::01::2022 07:43:17|cute dog| +08::01::2022 07:43:17|ooooooooog +08::01::2022 07:43:18|Her only choice is to revolutionize the aircraft carrier.| +08::01::2022 07:43:19|JUST EAT THE DOG| +08::01::2022 07:43:20|They are going to eat that dog| +08::01::2022 07:43:22|if only lenin could see us now| +08::01::2022 07:43:22|ALGERIANS +08::01::2022 07:43:22|ANDOU ROBSPIERRE| +08::01::2022 07:43:24|Fluffy hair| +08::01::2022 07:43:24|no you dont| +08::01::2022 07:43:24|its aight, they got the dog on their side| +08::01::2022 07:43:25|>HUMAN RIGHTS| +08::01::2022 07:43:26|>frogs busting ou the giloutness again| +08::01::2022 07:43:27|CIVIL WAR NOW| +08::01::2022 07:43:28|IBERTE +08::01::2022 07:43:29|>HUMAN RIGHTS| +08::01::2022 07:43:30|ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE | +08::01::2022 07:43:30|Based sub-Fr*nch| +08::01::2022 07:43:30|FROGS +08::01::2022 07:43:31|ASEDBASEDBASED +08::01::2022 07:43:31|NO MORE!!!!| +08::01::2022 07:43:31|no rights| +08::01::2022 07:43:32|HI REDDIT| +08::01::2022 07:43:33|Filthy brown skin| +08::01::2022 07:43:34|1789 LMAO| +08::01::2022 07:43:35|WHY CAN'T ALL FROGS LOOK LIKE ANZU| +08::01::2022 07:43:35|ATTENTION IT IS NOW FRENCH ALGERIAN QUEEN FRIDAY| +08::01::2022 07:43:35|Meanwhile Eclair just has her stomach to worry about| +08::01::2022 07:43:36|ZETTAI UNMEI MOKUSHIROKU| +08::01::2022 07:43:36|EVOLUTION +08::01::2022 07:43:37|GULLIOTINE TIME| +08::01::2022 07:43:37|OMOAH +08::01::2022 07:43:37|AHAHAHHAHAHAHAHAHAHAHA PEASANTS THINK THEYRE HUMAN| +08::01::2022 07:43:37|ANDOU RABU ANDOU RABU| +08::01::2022 07:43:38|>HUMAN RIGHTS| +08::01::2022 07:43:38|NO MORE FOOD| +08::01::2022 07:43:39|Just join Duce. They don't hate your cooking as much| +08::01::2022 07:43:39|1789 will commence again| +08::01::2022 07:43:39|KAKUMEI WO| +08::01::2022 07:43:40|fr*nch dont have rights| +08::01::2022 07:43:43|These girls are all Japanese* | +08::01::2022 07:43:43|PARTY LIKE ITS 1789| +08::01::2022 07:43:45|NO MOAH| +08::01::2022 07:43:45|CLASS WAR NOW!!!| +08::01::2022 07:43:46|escargots are just normal slugs| +08::01::2022 07:43:48|FROG LEGS| +08::01::2022 07:43:48|God I fucking hate poor people| +08::01::2022 07:43:51|DOWN WITH THE RICH| +08::01::2022 07:43:52|NO MORE SHIT FRENCH FOOD!!| +08::01::2022 07:43:54|no moa frenchoid "cuisine"| +08::01::2022 07:43:54|A FUCKING BAGUETTE | +08::01::2022 07:43:56|AGUETTE +08::01::2022 07:43:56|FUCKING BAGETTE| +08::01::2022 07:43:57|FUCK YOU OSHIDA| +08::01::2022 07:43:58|frenchfags on ::int:: love this image| +08::01::2022 07:43:58|READ +08::01::2022 07:43:58|STALE BREAD CLUBS| +08::01::2022 07:43:59|OSHIDA BRUTALITY| +08::01::2022 07:43:59|DESU WA| +08::01::2022 07:44:01| +08::01::2022 07:44:01|>fucking bread| +08::01::2022 07:44:01|BAGGUETTE +08::01::2022 07:44:01|If only the Nobility won the Revolution| +08::01::2022 07:44:01|yellowvests +08::01::2022 07:44:02|A FUCKING BAUGETTE| +08::01::2022 07:44:03|AGUETTE +08::01::2022 07:44:03|>implying duce wants these "people"| +08::01::2022 07:44:03|NO MORE ESCARGOT| +08::01::2022 07:44:04|UCKING +08::01::2022 07:44:04|A FUCKING BAGUETTE| +08::01::2022 07:44:04|SHE'S FUCKING ARMED| +08::01::2022 07:44:07|A FUCKING BAGUTTE| +08::01::2022 07:44:08|SHOVE THE BAGUETTE UP HER ASS| +08::01::2022 07:44:09|WE WANT TAIYAKI| +08::01::2022 07:44:10|rise up::| +08::01::2022 07:44:10|stale baguette bludgeons are deadly| +08::01::2022 07:44:10|EVOLUTIION +08::01::2022 07:44:11|>riot police with baguettes| +08::01::2022 07:44:11|>FR*NCH RIOTS| +08::01::2022 07:44:12|>A FUCKING BAGUETTE| +08::01::2022 07:44:12|r*gs +08::01::2022 07:44:12|Soy sauce is French? Who knew.| +08::01::2022 07:44:12|Bring back Napoleon| +08::01::2022 07:44:14|SHE'S DANGEROUS| +08::01::2022 07:44:15|NTER +08::01::2022 07:44:15|All these girls are Japanese* | +08::01::2022 07:44:15|KRRRRRRRRRRRRRT +08::01::2022 07:44:16|CARRIAGE DRIFTO| +08::01::2022 07:44:19|LOOK OUT SHE'S GOT A BAGUETTE| +08::01::2022 07:44:20|RIFT +08::01::2022 07:44:20|A FUCKING B A G U E T T E| +08::01::2022 07:44:21|DRIFT THE MF CARRIGE| +08::01::2022 07:44:22|arping +08::01::2022 07:44:22|cake god arrives| +08::01::2022 07:44:22|RIFTO +08::01::2022 07:44:24|EUROBEAT | +08::01::2022 07:44:24|THIS FAT FUCK CAN HAVE SEX WITH ME| +08::01::2022 07:44:26|NTER +08::01::2022 07:44:27|NTER +08::01::2022 07:44:27|>A FUCKING BAGUETTE| +08::01::2022 07:44:29|AT +08::01::2022 07:44:31|Marie Antoinette| +08::01::2022 07:44:31|MAGINE +08::01::2022 07:44:31|time to behead queen frog| +08::01::2022 07:44:34|CARRIAGE DRIFT?!?!?!?!?| +08::01::2022 07:44:34|How does a horse pull marie's weight?| +08::01::2022 07:44:35|WE WERE THIS CLOSE TO A BLOOD BATH| +08::01::2022 07:44:35|Baguette makes best batons| +08::01::2022 07:44:35|DON'T DO IT ANDOU DON'T NEGOTIATE WITH THEM| +08::01::2022 07:44:36|FUCK THE FRENCH| +08::01::2022 07:44:36|MARIE'S FAT FUCKING THIGHS| +08::01::2022 07:44:36|how she slim| +08::01::2022 07:44:37|BAGUETTE SEGGS | +08::01::2022 07:44:39|Can aircraft carriers drift in this world too?| +08::01::2022 07:44:39|FUCK LE FRANCE| +08::01::2022 07:44:40|There was a non zero percent chance the carriage could've clipped Andou and killed her| +08::01::2022 07:44:42|>150 cm >150 kg| +08::01::2022 07:44:43|I WANNA FUCK THIS FAT FROG| +08::01::2022 07:44:44|AT +08::01::2022 07:44:44|-ICKS ON YOUR RIGHT| +08::01::2022 07:44:48|a pussy that uses riotshield| +08::01::2022 07:44:48|Marie Antoinette| +08::01::2022 07:44:48|>Bownl in your left?| +08::01::2022 07:44:49|JUST LET THEM EAT CAKE| +08::01::2022 07:44:52|The French are always revolting. Nothing is more revolting than a Frenchman except two Frenchmen.| +08::01::2022 07:44:52|FRENCH CUNNY| +08::01::2022 07:44:54|revolution appeased| +08::01::2022 07:44:54|PUT SHIT ON TAIYAKI| +08::01::2022 07:44:55|eat cock| +08::01::2022 07:44:59|>10 CM >200 KG| +08::01::2022 07:45:00|amu +08::01::2022 07:45:01|OOP!! +08::01::2022 07:45:02|THIS REVOLUTION WAS APPEASED| +08::01::2022 07:45:02|EX +08::01::2022 07:45:02|Just join Anzio and give them better tanks| +08::01::2022 07:45:05|AT +08::01::2022 07:45:07|All these girls are Japanese* | +08::01::2022 07:45:09|CAM ON| +08::01::2022 07:45:10|FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE | +08::01::2022 07:45:11|I kinda want this| +08::01::2022 07:45:12|FRENCH REVOLUTION SOLVED| +08::01::2022 07:45:12|LET THEM EAT TAKIYAKI| +08::01::2022 07:45:13|HIGH IQ FAT| +08::01::2022 07:45:13|Fat Fr*nch| +08::01::2022 07:45:15|fucking reformfags ruining another good revolution| +08::01::2022 07:45:15|based marie| +08::01::2022 07:45:17|HOW FAT IS ANZU'S ASS| +08::01::2022 07:45:17|FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK | +08::01::2022 07:45:17|I want this too| +08::01::2022 07:45:19|>free food| +08::01::2022 07:45:19|>PIECE OF YOUTH| +08::01::2022 07:45:20|Beheading that fish, how fitting| +08::01::2022 07:45:20|*they're all japs from middle aged families| +08::01::2022 07:45:21|because shes a fat fuck| +08::01::2022 07:45:27|>war solved| +08::01::2022 07:45:27|Asparagus isn't canon after all huh| +08::01::2022 07:45:28|leave it to an all girl school to eat the fish| +08::01::2022 07:45:29|>Anzu >Ass| +08::01::2022 07:45:29|>FOOD ANALOGY| +08::01::2022 07:45:30|Fat fuck just wanted to eat| +08::01::2022 07:45:31|Marie makes up for 80% of her school's weight (including the ship)| +08::01::2022 07:45:32|>both sides surrendered| +08::01::2022 07:45:33|Custard taiyaki best taiyaki| +08::01::2022 07:45:36|red bean taiyaki suck ass| +08::01::2022 07:45:36|Now kiss| +08::01::2022 07:45:37|EXECUTE MARIE| +08::01::2022 07:45:37|delicious non-french food| +08::01::2022 07:45:40|Sounds pretty disgusting tbh| +08::01::2022 07:45:41|I think shes just fat| +08::01::2022 07:45:43|fr*nch have no good side| +08::01::2022 07:45:43|God that sounds disgusting| +08::01::2022 07:45:46|literally let them eat cake| +08::01::2022 07:45:47|two nukes were not enough| +08::01::2022 07:45:47|please just fuck each other| +08::01::2022 07:45:47|w +08::01::2022 07:45:49|hick +08::01::2022 07:45:49|AAAAYYYYYY +08::01::2022 07:45:50|NITY +08::01::2022 07:45:54|EWD +08::01::2022 07:45:56|It's not gay, it's French| +08::01::2022 07:45:56|arie-sama... +08::01::2022 07:45:57|DON'T DO IT ANDOU| +08::01::2022 07:45:58|>last time marie left teh carrier it raised 6 inches and threated to capsize| +08::01::2022 07:45:58|ods +08::01::2022 07:45:58|NOW FUCK| +08::01::2022 07:45:58|something something the friends we made along the way| +08::01::2022 07:45:59|tf +08::01::2022 07:46:00|3 nukes girls und panzer| +08::01::2022 07:46:01|GAY GAY GAY GAY| +08::01::2022 07:46:01|wtf I want a race war| +08::01::2022 07:46:01|GAE PHROHS| +08::01::2022 07:46:02|One struggle| +08::01::2022 07:46:02|we cutting to ova now right| +08::01::2022 07:46:03|At least one of them is wearing protection| +08::01::2022 07:46:06|let them eat each other [out]| +08::01::2022 07:46:07|it's that easy| +08::01::2022 07:46:07|she didn't remove the glove| +08::01::2022 07:46:08|the most pointless conflict of all time| +08::01::2022 07:46:09|Soy sauce stuffed fish is going to be next on the menu| +08::01::2022 07:46:11|it's a metaphor for eating ass| +08::01::2022 07:46:11|race war is postponed| +08::01::2022 07:46:11|JUST LOCK THEM IN A ROOM TOGETHER UNTIL THEY BOTH FUCK EACH OTHER LIKE MONKEY| +08::01::2022 07:46:13|>no class war in GuP| +08::01::2022 07:46:13|>escargot udon| +08::01::2022 07:46:15|ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX | +08::01::2022 07:46:16|>THE KNOW| +08::01::2022 07:46:18|I'm too drunk to get what's going on| +08::01::2022 07:46:19|>THEY KNO0W| +08::01::2022 07:46:20|Jesus fucking christ does yukari fool anyone at this point| +08::01::2022 07:46:20|AWARE +08::01::2022 07:46:20|OLLINGU +08::01::2022 07:46:20|like that one doujin| +08::01::2022 07:46:22|>THEY KNOW| +08::01::2022 07:46:23|WWWWWWW +08::01::2022 07:46:23|DOUBLE OH SEVEN HERE| +08::01::2022 07:46:25|Yes, the one who is certainly not a spy| +08::01::2022 07:46:26|CLASS WAR FALSE FLAG| +08::01::2022 07:46:26|CTION +08::01::2022 07:46:28|>no violent clash that ends in someone getting beheaded| +08::01::2022 07:46:29|CUTE DORK| +08::01::2022 07:46:30|spy +08::01::2022 07:46:32|Totally inconspicous| +08::01::2022 07:46:33|Yukari is a blessed autist| +08::01::2022 07:46:33|>dumbass yukari is announcing her presence again| +08::01::2022 07:46:34|Dumb yukari moment| +08::01::2022 07:46:35|The one who's recording and saying that she's a spy| +08::01::2022 07:46:36|SGT ODDBALL YOU DUMBASS| +08::01::2022 07:46:37|yukari is perv| +08::01::2022 07:46:38|I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS | +08::01::2022 07:46:39|world's shittest spy| +08::01::2022 07:46:39|ACT NATURAL| +08::01::2022 07:46:40|USELESS SPY| +08::01::2022 07:46:45|how obvious can she be?| +08::01::2022 07:46:46|>walking around with a camera| +08::01::2022 07:46:46|>carries a handheld camera around Why is Yukari so retarded| +08::01::2022 07:46:48|>larping inside another larp| +08::01::2022 07:46:48|WORLDS BEST SPY| +08::01::2022 07:46:48|CUTE AUTIST| +08::01::2022 07:46:49|ASS SLAP INCOMING| +08::01::2022 07:46:49|dumb spy | +08::01::2022 07:46:50|RPers +08::01::2022 07:46:51|cute fluffy spy| +08::01::2022 07:46:53|thinking of the mr bean movie| +08::01::2022 07:46:57|ASS SLAPPING| +08::01::2022 07:46:58|OLING +08::01::2022 07:46:59|Surely, she can't be the spy| +08::01::2022 07:47:00|OSHIDA ASS| +08::01::2022 07:47:01|LET'S SEE THE ASS. SLAP.| +08::01::2022 07:47:06|Yukari's Holiday| +08::01::2022 07:47:06|DUMBASS SPY VLOGGER| +08::01::2022 07:47:08|THIS USED TO WORK, YUKARI ISNT DUMB SHES COCKY| +08::01::2022 07:47:09|FAT OSHIDIA ASS| +08::01::2022 07:47:09|Never underestimate your enemy| +08::01::2022 07:47:10|ITS ALL FAKE WTF| +08::01::2022 07:47:11|SOD A SODA| +08::01::2022 07:47:12|useless spy, better have sex with me| +08::01::2022 07:47:12|>world class spy yukari| +08::01::2022 07:47:14|JUST FUCK EACH OTHER ALREADY| +08::01::2022 07:47:15|I can't believe floof got played like a sucker| +08::01::2022 07:47:16|SHOW TITS| +08::01::2022 07:47:17|don't put the camera there yukari| +08::01::2022 07:47:17|THAT FAT FROG ASS| +08::01::2022 07:47:18|SS +08::01::2022 07:47:19|SS +08::01::2022 07:47:19|EFS +08::01::2022 07:47:19|oh, she gonna get spy checked| +08::01::2022 07:47:19|EW +08::01::2022 07:47:19|BASED YUKARI| +08::01::2022 07:47:20|UTTTTTTTTTTTTTTTTTTTTTTTTTTTTTt +08::01::2022 07:47:20|ICE +08::01::2022 07:47:20|How lewd and uncouth| +08::01::2022 07:47:21|ww +08::01::2022 07:47:22|UTE +08::01::2022 07:47:22|OSHIDA BLUSH| +08::01::2022 07:47:22|AAAAAAAAAA BUTTTT| +08::01::2022 07:47:22|"shoot" her ass| +08::01::2022 07:47:23|WOAH WOAH WOAH| +08::01::2022 07:47:23|EW +08::01::2022 07:47:24|hick +08::01::2022 07:47:24|THERE IT IS| +08::01::2022 07:47:24|Is Yukari retarded?| +08::01::2022 07:47:25|YUKARI WITH THE COVERT OPERATIONS| +08::01::2022 07:47:25|trying to panty shot| +08::01::2022 07:47:25|Yukari the best spy| +08::01::2022 07:47:26|WHAT'S UP GUYSSS YUKARI-CHAN HERE, BACK WITH ANOTHER VIDEO| +08::01::2022 07:47:26|PSKIRT +08::01::2022 07:47:27|>that blush| +08::01::2022 07:47:28|utte +08::01::2022 07:47:29|CUTE BLUSH CUTE BUTT| +08::01::2022 07:47:29|SSSSSSSSS +08::01::2022 07:47:30|>FILMING PANTYSHOTS| +08::01::2022 07:47:30|GAY GAY GAY GAY GAY GAY GAY| +08::01::2022 07:47:30|NGLE +08::01::2022 07:47:30|NF +08::01::2022 07:47:31|>low angle Based Yukari| +08::01::2022 07:47:31|NAISU HIPPU| +08::01::2022 07:47:32|FROG BUTT| +08::01::2022 07:47:32|Panty Shot| +08::01::2022 07:47:32|retarded +08::01::2022 07:47:33|5th generation information warfare| +08::01::2022 07:47:34|CUTE BLUSH| +08::01::2022 07:47:34|>presence concealed| +08::01::2022 07:47:35|what is this retard doing?| +08::01::2022 07:47:35|II DESU NE| +08::01::2022 07:47:36|NF +08::01::2022 07:47:36|oh my| +08::01::2022 07:47:37|yukari butt| +08::01::2022 07:47:37|yukarin catching the pantishots| +08::01::2022 07:47:37|yukari still unnoticed| +08::01::2022 07:47:38|Yukari too fluffy to survive being trampled on| +08::01::2022 07:47:40|What the fuck is yukari doing| +08::01::2022 07:47:40|how does yukari think no one saw her| +08::01::2022 07:47:41|APE +08::01::2022 07:47:43|going for the pantsu shots, NICE| +08::01::2022 07:47:45|RAMPLED +08::01::2022 07:47:45|>the best self proclaimed spy| +08::01::2022 07:47:46|spy check!| +08::01::2022 07:47:46|Yukari getting more clips for her ::u:: folder| +08::01::2022 07:47:47|Yooker owned| +08::01::2022 07:47:48|OD +08::01::2022 07:47:49|So uhh did Yukari just give up or something?| +08::01::2022 07:47:51|angbang +08::01::2022 07:47:51|NO STOP KICKING YUKARI| +08::01::2022 07:47:53| +08::01::2022 07:47:54|wwwwwwwwwwwwwwwwwwwww +08::01::2022 07:47:54|EX +08::01::2022 07:47:57|P-SKIRT +08::01::2022 07:47:58|APE +08::01::2022 07:47:58|USED +08::01::2022 07:47:59|>SHE DOESN'T KNOW| +08::01::2022 07:47:59|ITS ALL AS PLANNED| +08::01::2022 07:48:00|Kick the floof| +08::01::2022 07:48:00|SMOKE GRENADE| +08::01::2022 07:48:02|kill her| +08::01::2022 07:48:05|USED +08::01::2022 07:48:05|She'd gonna turn red at any moment| +08::01::2022 07:48:06|UTTTTTTTOOOOOOOOOOO +08::01::2022 07:48:07|SMOKE GRENADE!!!!| +08::01::2022 07:48:08|Normal day in Paris| +08::01::2022 07:48:09|Played like a fiddle| +08::01::2022 07:48:09|so are we acting or not| +08::01::2022 07:48:09|Dumb floof| +08::01::2022 07:48:10|UTTO +08::01::2022 07:48:10|AT +08::01::2022 07:48:10|I want to lick her cheek| +08::01::2022 07:48:10|uta +08::01::2022 07:48:11|>dust is smoke grenade I love this series| +08::01::2022 07:48:12|yukari is so autistic kek| +08::01::2022 07:48:13|that's a wrap!| +08::01::2022 07:48:13|ALL ACCORDING TO KEIKAKU *(keikaku means plan)| +08::01::2022 07:48:13|>nice ass slap oshida| +08::01::2022 07:48:16|SHE BOUGHT IT| +08::01::2022 07:48:18|I love the onion| +08::01::2022 07:48:19|J'AIME L'OIGNON| +08::01::2022 07:48:19|ass slapping| +08::01::2022 07:48:21|onion time| +08::01::2022 07:48:23|no it wasnt| +08::01::2022 07:48:25|vital ass slapping| +08::01::2022 07:48:26|I LOVE ONION!!!!| +08::01::2022 07:48:26|OOARAI IS GOING TO GET FUCKED| +08::01::2022 07:48:27|ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS | +08::01::2022 07:48:27|>ad libbing the ass slap what a slut| +08::01::2022 07:48:28|impossible how did yukari get played| +08::01::2022 07:48:29|all according to keiki| +08::01::2022 07:48:29|god I love me a tasty onion| +08::01::2022 07:48:30|I LOVE THE ONION| +08::01::2022 07:48:32|NION +08::01::2022 07:48:32|NION +08::01::2022 07:48:32|FRENCH ONION FETISH SONG| +08::01::2022 07:48:33|RAPE +08::01::2022 07:48:34|AUS PAS| +08::01::2022 07:48:35|Actual smoke grenade used| +08::01::2022 07:48:35|Critical ass slapping| +08::01::2022 07:48:36|J'AIME L'OIGNON| +08::01::2022 07:48:37|there's poop on her cheek| +08::01::2022 07:48:40|AUSTRIANS LEAVE THIS CHAT RIGHT NOW| +08::01::2022 07:48:41|OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD | +08::01::2022 07:48:41|AU PAS AU PAS| +08::01::2022 07:48:42|onion+garlic+cheese=nothing can go wrong| +08::01::2022 07:48:43|ONION GOOD ONION FRIED!| +08::01::2022 07:48:43|I LOVE ONION| +08::01::2022 07:48:43|AU PAS AU PAS AUPAS| +08::01::2022 07:48:44|AU PAS AU PAS| +08::01::2022 07:48:44|AU PAS AU PAS AU PAS| +08::01::2022 07:48:44|AUS PAS CAMARADE| +08::01::2022 07:48:45|>oppai oppai oppai| +08::01::2022 07:48:45|AU PAS| +08::01::2022 07:48:46|ONHONHONHON +08::01::2022 07:48:48|i hate onion| +08::01::2022 07:48:49|AU PAS AU PAS AU PAS| +08::01::2022 07:48:49|Små grodorna små grodorna| +08::01::2022 07:48:50|FUCK AUSTRIANS| +08::01::2022 07:48:51|AU PAS AU PAS AU PAS| +08::01::2022 07:48:52|AU PAS CAMARADES| +08::01::2022 07:48:52|au pas au pas au pas| +08::01::2022 07:48:54|URENCHU +08::01::2022 07:48:56|AU PA CAMARAD AU PA CAMARAD AU PA AU PA AUPA| +08::01::2022 07:48:56|AU PAS AU PAS AU PAS| +08::01::2022 07:48:56|AU PAS AU PAS AU PAS| +08::01::2022 07:48:57|j'aime l'oignon| +08::01::2022 07:48:57|UIOUIOUIOUIOUIOUIOUIOUI +08::01::2022 07:48:58|I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +08::01::2022 07:48:58|Au pas| +08::01::2022 07:48:59| APAS PAS PAS PAS PAS | +08::01::2022 07:49:00|AU PAS AU PAS AU PAS| +08::01::2022 07:49:00|Why do Frogs sing about Onions| +08::01::2022 07:49:01|är lustiga att se| +08::01::2022 07:49:01|kino editing| +08::01::2022 07:49:02|lmao I didnt remeber that logo| +08::01::2022 07:49:03|FUCK YOUR GODDAMN ONIONS| +08::01::2022 07:49:06|LUCASFILMS +08::01::2022 07:49:12|941 +08::01::2022 07:49:13|opyright +08::01::2022 07:49:14|1941 +08::01::2022 07:49:14|1941 +08::01::2022 07:49:14|1941 +08::01::2022 07:49:15|1941 +08::01::2022 07:49:16|1941 +08::01::2022 07:49:16|>Sings french >Cant get the VA to sing in German| +08::01::2022 07:49:16|Yukari really is the Lucas of our generation| +08::01::2022 07:49:20|Opa? French are greeks now?| +08::01::2022 07:49:20|1941 +08::01::2022 07:49:22|1941 +08::01::2022 07:49:23|1941 +08::01::2022 07:49:24|Love me marches, love me onions, 'ate spies simple as| +08::01::2022 07:49:25|utism +08::01::2022 07:49:26|>guppies confirmed to be in ww2| +08::01::2022 07:49:27|THX The audience is fluff| +08::01::2022 07:49:29|>LUCAS FULM| +08::01::2022 07:49:31|love her so fucking much| +08::01::2022 07:49:35|REUSED FOOTAGE| +08::01::2022 07:49:36|GREAT DOCUMENTARY| +08::01::2022 07:49:36|SHES JUST STANDING RIGHT THERE| +08::01::2022 07:49:36|EVOLUTION +08::01::2022 07:49:37|GHX AUDIO| +08::01::2022 07:49:41|das racisss| +08::01::2022 07:49:42|yukari made the prequels| +08::01::2022 07:49:46|colorized +08::01::2022 07:49:53|shame the ass slap didn't make the cut| +08::01::2022 07:49:55|SODA SODA| +08::01::2022 07:49:59|SODA SODA| +08::01::2022 07:50:03|SODA SODA| +08::01::2022 07:50:04|SODA SODA| +08::01::2022 07:50:06|Kino cinematography| +08::01::2022 07:50:12|ASS SHOT| +08::01::2022 07:50:13|VERY IMPORTANT| +08::01::2022 07:50:14|Yukari best spy| +08::01::2022 07:50:14|If this is how Yukari does things, how retarded were the Americans not to notice her?| +08::01::2022 07:50:15|This feels familiar.....| +08::01::2022 07:50:15|World record speed editing| +08::01::2022 07:50:18|wait they really remade this from a different angle?| +08::01::2022 07:50:18|>no low angle pantsu shot| +08::01::2022 07:50:19|let them eat ass| +08::01::2022 07:50:24|>no upskirt| +08::01::2022 07:50:24|We got something better than the ass shot| +08::01::2022 07:50:26|OOBA +08::01::2022 07:50:28|wheres the ass shot| +08::01::2022 07:50:31|Yukarin loves her yuri| +08::01::2022 07:50:33|Marie still eating the whole time| +08::01::2022 07:50:34|EGS +08::01::2022 07:50:35|>Being surprised that the burgers were retarded| +08::01::2022 07:50:38|barbershop +08::01::2022 07:50:39|ottery +08::01::2022 07:50:39|classic film| +08::01::2022 07:50:47|eiki +08::01::2022 07:50:50|How did she do this twice without getting caught?| +08::01::2022 07:50:51|kay just laughed when yukari was outted| +08::01::2022 07:50:52|is the audio off for anyone else???| +08::01::2022 07:50:57|SEX WITH YUKARI| +08::01::2022 07:50:58|that fat fuck ain't gonna stop eating aint she| +08::01::2022 07:50:59|>yukari pov| +08::01::2022 07:51:00|unmute it on the bottom left| +08::01::2022 07:51:01|>Yukari knows 3d and compositing softwares as well| +08::01::2022 07:51:04|Mako eying up the real cake, Marie| +08::01::2022 07:51:06|Momo shut up| +08::01::2022 07:51:06|audio seems in sync for me| +08::01::2022 07:51:13|There is no sound. Der Finale is a silent film.| +08::01::2022 07:51:15|Momo taichou!| +08::01::2022 07:51:16|nzu +08::01::2022 07:51:16|AICHO? +08::01::2022 07:51:17|"do we have enough headlight fluid?"| +08::01::2022 07:51:19|momo retard| +08::01::2022 07:51:21|just you anon| +08::01::2022 07:51:24|cute fluff| +08::01::2022 07:51:25|AICHO +08::01::2022 07:51:31|biden of commander| +08::01::2022 07:51:31|I want to mess up the floof| +08::01::2022 07:51:32|>yukari got stepped on by french girls (japanese) giwtwm| +08::01::2022 07:51:33|fat fighters| +08::01::2022 07:51:34|Who uses antifreeze as ammo?| +08::01::2022 07:51:36|cute girl pilots| +08::01::2022 07:51:38|momo.exe stopped working| +08::01::2022 07:51:38|anes +08::01::2022 07:51:45|There's an O-I down there| +08::01::2022 07:51:47|imagine a proper war film made by the gup staff| +08::01::2022 07:51:47|Some sort of flying tanks?| +08::01::2022 07:51:47|>girls in planes| +08::01::2022 07:51:48|CABRON COATED PLANES| +08::01::2022 07:51:51|Neat planes| +08::01::2022 07:51:56|ALISA I LOVE YOU| +08::01::2022 07:52:02|Koume midget| +08::01::2022 07:52:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:52:06|that O-I is Finn property now| +08::01::2022 07:52:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 07:52:10|Fucking italians| +08::01::2022 07:52:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:52:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:52:11|UCE +08::01::2022 07:52:12|UCE +08::01::2022 07:52:15|THE STAKES HAVE NEVER BEEN LOWER| +08::01::2022 07:52:16|is this still df or df2 already?| +08::01::2022 07:52:18|italians +08::01::2022 07:52:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 07:52:21|f1 +08::01::2022 07:52:22|You know who DOESN'T love Alisa?| +08::01::2022 07:52:23|NEET STRONK| +08::01::2022 07:52:24|TRONK +08::01::2022 07:52:24|pirates soon| +08::01::2022 07:52:26|STUG LIFE| +08::01::2022 07:52:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 07:52:28|SUYOI +08::01::2022 07:52:31|Nobody loves alisa| +08::01::2022 07:52:35|tronk +08::01::2022 07:52:39|Muscle girls| +08::01::2022 07:52:42|cute noriko| +08::01::2022 07:52:45|I rabu alisa| +08::01::2022 07:52:53|ARR +08::01::2022 07:52:57|W1 +08::01::2022 07:52:57|I HATE THE SHARKS| +08::01::2022 07:52:59|NTER +08::01::2022 07:53:00|out larped hippo team| +08::01::2022 07:53:02|AME-TEAM +08::01::2022 07:53:02|useless tank| +08::01::2022 07:53:04|BEST TEAM| +08::01::2022 07:53:04|YAR HAR| +08::01::2022 07:53:05|>they're doing the meme tank thing| +08::01::2022 07:53:06|Leave her johnny, leave her~| +08::01::2022 07:53:07|Is there any girl here that nobody actually likes?| +08::01::2022 07:53:09|SAME TEAM| +08::01::2022 07:53:09|STUPID FUCKING MAST| +08::01::2022 07:53:10|memeflagot +08::01::2022 07:53:10|ARRRR +08::01::2022 07:53:11|they kept the lewis guns| +08::01::2022 07:53:12|ENTER JOBBERS| +08::01::2022 07:53:14|Gamers too buff. tossing tank shells like pillows| +08::01::2022 07:53:14|Here come the retards| +08::01::2022 07:53:16|this panzer looks THICK| +08::01::2022 07:53:16|is that a goddamn ww1 tank?????| +08::01::2022 07:53:18|the comic relief is here| +08::01::2022 07:53:19|piratesofthecaribean.wav] +08::01::2022 07:53:19|girls und ships| +08::01::2022 07:53:22|That fucking mast| +08::01::2022 07:53:22|Enter useless team| +08::01::2022 07:53:23|NTER +08::01::2022 07:53:24|andbote +08::01::2022 07:53:24|+baka sqsuad| +08::01::2022 07:53:25|>a fucking WWI tank| +08::01::2022 07:53:34|Best target practice| +08::01::2022 07:53:34|YOU WON'T BE LAUGHING WHEN SHARK KILLS KMM'S A7V| +08::01::2022 07:53:35|literally a 100-year old relic| +08::01::2022 07:53:35|Somali-tier tank| +08::01::2022 07:53:36|muh pollution| +08::01::2022 07:53:36|does a panzer need a sail?| +08::01::2022 07:53:37|the worst pirates i've ever heard of| +08::01::2022 07:53:38|there better be an A7V later on| +08::01::2022 07:53:39|I can feel the fucking rivets about to burst| +08::01::2022 07:53:41|good god thats an actual ww1 tank| +08::01::2022 07:53:41|Mk1 Sheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesh| +08::01::2022 07:53:41|MEME TANK| +08::01::2022 07:53:45|There's not enough carbon in the world to make that tank safe| +08::01::2022 07:53:46|Literally worse than the Type-89| +08::01::2022 07:53:46|They should mount an MLRS to this tank| +08::01::2022 07:53:46|jesus christ| +08::01::2022 07:53:47|AHAAAAARR +08::01::2022 07:53:48|BC has a FT; it's a fair march| +08::01::2022 07:53:48|So how is this supposed to be useful at all?| +08::01::2022 07:53:50|based tank| +08::01::2022 07:53:52|>it looks like a potato| +08::01::2022 07:53:59|HARK +08::01::2022 07:54:00|Enter Hatay team from Indiana Jones school| +08::01::2022 07:54:00|yukari stop being autistic| +08::01::2022 07:54:01|Lucky shark tank ain't flag tank| +08::01::2022 07:54:05|chad murakami stance| +08::01::2022 07:54:06|Rum is taller than I expected| +08::01::2022 07:54:06|cute sharks| +08::01::2022 07:54:07|shark? more like shart| +08::01::2022 07:54:09|A literal fucking death trap| +08::01::2022 07:54:09|getting drunk on non-alhocolic rum| +08::01::2022 07:54:09|WAAAAAAAAAAAA +08::01::2022 07:54:13|based underclassman bullying| +08::01::2022 07:54:14|do not bully the rabbits| +08::01::2022 07:54:14|ANDSHIP +08::01::2022 07:54:15|Kept you waiting huh?| +08::01::2022 07:54:17|To be fair, it does have two short 6pdr's| +08::01::2022 07:54:18|teelpotat +08::01::2022 07:54:19|BULLY RABBITS| +08::01::2022 07:54:23|what kind of gun and armor does the landship have? Basically nothing?| +08::01::2022 07:54:24|Cutlass = Cute Lass| +08::01::2022 07:54:25|useless puppet| +08::01::2022 07:54:26|>azusa and saki not being scared| +08::01::2022 07:54:27|awr +08::01::2022 07:54:28|KEEP YOU WAITING HUH| +08::01::2022 07:54:29|Dumb momo| +08::01::2022 07:54:35|useless puppet useless puppet useless puppet| +08::01::2022 07:54:36|>choker SLUT| +08::01::2022 07:54:36|Momo +08::01::2022 07:54:36|momo dumb| +08::01::2022 07:54:39|momo a dumb| +08::01::2022 07:54:39|Momo more like retardmo| +08::01::2022 07:54:40|Mark 4 has like 14mm at most| +08::01::2022 07:54:41|Straight up threats and a bottle| +08::01::2022 07:54:43|UUUEEEHHH +08::01::2022 07:54:43|OOOOOOOH +08::01::2022 07:54:43|FOR MOMO!| +08::01::2022 07:54:44|flint wiggle| +08::01::2022 07:54:44|Pupper Commander| +08::01::2022 07:54:44|OWOWOWOWWW +08::01::2022 07:54:45|CUTE DANCE| +08::01::2022 07:54:46|2 6pdr's, 4 Lewis guns, 8-15mm of armour| +08::01::2022 07:54:47|ho ho ho hoho| +08::01::2022 07:54:48|fucking flint| +08::01::2022 07:54:49|flint katyusha| +08::01::2022 07:54:49|Armor: A couple of inches. It is barely machinegun-proof.| +08::01::2022 07:54:50|I wannt to bully rabbit team| +08::01::2022 07:54:51|flint a cute autist| +08::01::2022 07:54:53|AAAAAAAAAAAAAAAAH HIPS| +08::01::2022 07:54:54|the animation is so lovely| +08::01::2022 07:54:55|IF IT WASN'T FOR MOMO YOU WOULDN'T HAVE THESE FILMS!! APOLOGIZE!!!!| +08::01::2022 07:54:56|I HATE FLINT| +08::01::2022 07:54:57|lint_dance.webm +08::01::2022 07:54:58|YES I WANT TO FUCK FLINT| +08::01::2022 07:54:59|Pirates are too scary for me, I'll stick with a cute girl like Alisa| +08::01::2022 07:55:00|oh ok, so it has SOMETHING at least| +08::01::2022 07:55:01|you must refer to momo as momo-taichou from now on| +08::01::2022 07:55:02|mao +08::01::2022 07:55:05|based TK| +08::01::2022 07:55:06|fucking frencies lamo| +08::01::2022 07:55:06|WWWWWWWWWWW +08::01::2022 07:55:11|>implying she commands anything| +08::01::2022 07:55:12|incredibl ruse| +08::01::2022 07:55:13| +08::01::2022 07:55:13|CUTE MESSED UP FRENCHIES| +08::01::2022 07:55:13|I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Ta| +08::01::2022 07:55:20|the french tanks are pretty sexy| +08::01::2022 07:55:20|I REFUSE TO BE PART OF YOUR SYSTEM| +08::01::2022 07:55:21|UDE +08::01::2022 07:55:24|Based Marie bows to no one| +08::01::2022 07:55:24|Andou cute and gay| +08::01::2022 07:55:29|ST +08::01::2022 07:55:29|FUCKING BITCH| +08::01::2022 07:55:30|french have sexiest tanks| +08::01::2022 07:55:30|my wife andou| +08::01::2022 07:55:33|gay frog kung fu| +08::01::2022 07:55:34|what a cunt| +08::01::2022 07:55:40|I've heard mixed things about french tanks| +08::01::2022 07:55:41|your head weights like 500 kilos just let it go| +08::01::2022 07:55:41|SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU | +08::01::2022 07:55:42|ST +08::01::2022 07:55:44|odododododododo +08::01::2022 07:55:44|lotArmor.ost +08::01::2022 07:55:46|I want to fondle maries plump thighs| +08::01::2022 07:55:50|French too smug| +08::01::2022 07:55:50|Imagine the French hate sex| +08::01::2022 07:55:56|marie is CUTE| +08::01::2022 07:55:57|Lithuanian andou lover I know you're here| +08::01::2022 07:55:58|The step up in animation compared to the Der Film one is huge| +08::01::2022 07:55:59|playing dumb| +08::01::2022 07:56:04|>french topless JKs| +08::01::2022 07:56:11|SOUND DESIGN MOTHERFUCKERS| +08::01::2022 07:56:13|I cannot lie anons, I love andou| +08::01::2022 07:56:14|lads I missed the ending of Der Film. what did I miss in between| +08::01::2022 07:56:24|ntermission +08::01::2022 07:56:24|Only the arisu ova| +08::01::2022 07:56:27|you missed tank Kino| +08::01::2022 07:56:28|>getting chocked out by Marie's fat thighs| +08::01::2022 07:56:28|>that porche tiger engine sound| +08::01::2022 07:56:31|you missed kino| +08::01::2022 07:56:37|You missed intermission and taiyaki war| +08::01::2022 07:56:38|Missed UUOOHH| +08::01::2022 07:56:42|you missed ferris wheel kino| +08::01::2022 07:56:43|Imagine the thighjob Marie would give| +08::01::2022 07:56:45|useless momo useless momo useless momo useless momo useless momo useless momo | +08::01::2022 07:56:47|can I gt chocked by katyushas's thighs?| +08::01::2022 07:56:50|FUCK momo| +08::01::2022 07:56:53|fuk der film is my favorite cant believe i only got on right after| +08::01::2022 07:56:56|Marie too skinny though| +08::01::2022 07:56:57|Imagine getting your dick crushed between Marie's fat thighs| +08::01::2022 07:56:57|with pleasure!| +08::01::2022 07:57:02|bros... i'm starting to get tired...| +08::01::2022 07:57:02|marie's thighjob would crush me like a grape| +08::01::2022 07:57:14|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +08::01::2022 07:57:15|stay awake| +08::01::2022 07:57:16|NO FALLING ASLEEP| +08::01::2022 07:57:16|stay stong anon| +08::01::2022 07:57:20|I want to grape marie| +08::01::2022 07:57:25|Sleep can come later anon| +08::01::2022 07:57:26|THAT ELECTRIC ENGINE DOES THINGS TO MY COCK| +08::01::2022 07:57:29|>getting tired FUCKING WEAK| +08::01::2022 07:57:29|imagine sleeping lamo LIKE A GIRL| +08::01::2022 07:57:30|NO SLEEPING. WE WILL ALL MAKE IT| +08::01::2022 07:57:32|NO SLEEPING ON DUTY SOLDIER| +08::01::2022 07:57:33|GUP is now| +08::01::2022 07:57:39|D +08::01::2022 07:57:40|>needing sleep| +08::01::2022 07:57:40|sleeping +08::01::2022 07:57:41|8 AM here| +08::01::2022 07:57:42|pwanza vvvvoa!| +08::01::2022 07:57:42|realistically how the hell can the mk IV even keep up | +08::01::2022 07:57:44|>imagine being a wagie working tomorrow| +08::01::2022 07:57:45|HOW DO I CURE MY INSOMNIA| +08::01::2022 07:57:46|the only use for sleep is to pass the time between gup and toot| +08::01::2022 07:57:46|Not a man left behind| +08::01::2022 07:57:46|CG boy| +08::01::2022 07:57:49|we'll all stay up until the end and wake up before snw| +08::01::2022 07:57:51|2:55 pm| +08::01::2022 07:57:52|Leopon team works miracles| +08::01::2022 07:57:55|Surely only girls would watch something like GuP though?| +08::01::2022 07:57:58|Mk IV's top speed is like 6 mph| +08::01::2022 07:57:59|>imagine working| +08::01::2022 07:58:00|Just sleep with your eyes open. Best of both worlds.| +08::01::2022 07:58:06|it's almost 9 am here| +08::01::2022 07:58:08|They said the Mk4 got custom work| +08::01::2022 07:58:08|If I don't go to sleep soon, I may not be awake for the start of SnW.| +08::01::2022 07:58:11|we're all girls here, we're the target audience | +08::01::2022 07:58:11|Guys its 3:55 am, i don't think i'm going to make it| +08::01::2022 07:58:39|EEEEEEE +08::01::2022 07:58:47|in about 8 hours anison matrix starts| +08::01::2022 07:58:52|snw is in 12 hours| +08::01::2022 07:58:56|panzer vor means panzer vor| +08::01::2022 07:58:57|SLEEP > WAIFU| +08::01::2022 07:58:58|guys it's 1756h here I'm ready| +08::01::2022 07:58:59|PANZER VOR| +08::01::2022 07:58:59|kono bangumi wa goran no suponsaa no teikyou de okurishimasu| +08::01::2022 07:59:02|PANZER VOR| +08::01::2022 07:59:02|YOU CAN DO IT MOMO-TAICHOU!| +08::01::2022 07:59:02|SAY THE THING| +08::01::2022 07:59:02|PANZER VOR| +08::01::2022 07:59:03|PANZER VOR| +08::01::2022 07:59:04|PANZER VOR| +08::01::2022 07:59:04|PANTSAAA FOOOH| +08::01::2022 07:59:04|you don't need that much sleep| +08::01::2022 07:59:05|TL Note: "Anzu" means "SEX".| +08::01::2022 07:59:05|I CLAP| +08::01::2022 07:59:06|PANZER VORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR| +08::01::2022 07:59:06|PANZER VO| +08::01::2022 07:59:07|MOMO CUTE| +08::01::2022 07:59:08|Pants her whore| +08::01::2022 07:59:09|ppansaa voa| +08::01::2022 07:59:09|P-PANZER FOO| +08::01::2022 07:59:10|>momo responsible for anything| +08::01::2022 07:59:10|PANZER AHO| +08::01::2022 07:59:11|PANTSU FOOH| +08::01::2022 07:59:11|PANZER VOR| +08::01::2022 07:59:12|PPANZER VOR| +08::01::2022 07:59:13|panzer vor means sex in a tank| +08::01::2022 07:59:14|PANZER VOR| +08::01::2022 07:59:15|PANZER VOR| +08::01::2022 07:59:17|PANTSU VORE| +08::01::2022 07:59:19|panties for?| +08::01::2022 07:59:21|23movies.com +08::01::2022 07:59:21|thanks tl| +08::01::2022 07:59:22|HEEEEEZE +08::01::2022 07:59:23|dork levels off the charts| +08::01::2022 07:59:25|>using the tiger as a scout| +08::01::2022 07:59:26|OOTDOOTDOOOOTDOOTDOOTDOOT +08::01::2022 07:59:30|How about Panzer Vore| +08::01::2022 07:59:30|panzer vor with maho| +08::01::2022 07:59:33|look at this dorks| +08::01::2022 07:59:34|OISE +08::01::2022 07:59:35|PANZER VOR means Panzer Vor| +08::01::2022 07:59:38|ARL-44s - fucking paper tanks| +08::01::2022 07:59:38|TL:panzer vore means "Raw dogging Momo's sinful body"| +08::01::2022 07:59:42|Pantsu vore| +08::01::2022 07:59:42|znable +08::01::2022 07:59:43|What does panzer vor mean anons?| +08::01::2022 07:59:50|I'm gonna suck Hana's left nut| +08::01::2022 07:59:51|Momo's body is NOT sinful| +08::01::2022 07:59:51|ARL-44's were built| +08::01::2022 07:59:52|FUCKING JOBBERS| +08::01::2022 07:59:52|SELESS +08::01::2022 07:59:52|a hoi| +08::01::2022 07:59:53|TAP ASS| +08::01::2022 07:59:53|FUCK EM UP USAGIS| +08::01::2022 07:59:56|ARL 44 is most powerful tank| +08::01::2022 07:59:56|It means "Pleasure of being cummed inside"| +08::01::2022 07:59:56|>ship >can't cross a creek | +08::01::2022 07:59:56|WW1 tanks| +08::01::2022 07:59:57|They were just shit| +08::01::2022 07:59:57|panzer vor means sex with Anzu| +08::01::2022 07:59:58|hoi +08::01::2022 07:59:59|STUPID PIRATES| +08::01::2022 08:00:00|hoy! +08::01::2022 08:00:01|HOY +08::01::2022 08:00:02|>already dead| +08::01::2022 08:00:03|ick +08::01::2022 08:00:04|AAAAAAAAAAAAAAAAAAA +08::01::2022 08:00:04|>landship >struggles in knee height water| +08::01::2022 08:00:09|Niggers in paris| +08::01::2022 08:00:16|cute delinquents| +08::01::2022 08:00:18|who was in paris?| +08::01::2022 08:00:21|scam artist| +08::01::2022 08:00:21|I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES | +08::01::2022 08:00:22|Thanks anon now I know what panzer vor means :)| +08::01::2022 08:00:23|i want murakami to crush me| +08::01::2022 08:00:23|luv mkiv simple as| +08::01::2022 08:00:25|Momo, you weren't shy with the rumors that you might repeat a year, why you shy now?| +08::01::2022 08:00:26|tea sluts| +08::01::2022 08:00:27|Niggers we in fact in Paris| +08::01::2022 08:00:31|>momo didnt make them take that shit down| +08::01::2022 08:00:33|MIRK +08::01::2022 08:00:34|FROG LOLI UOOOOOOHHHHHHHH| +08::01::2022 08:00:34|SERIOUS MUSIC| +08::01::2022 08:00:35|I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES | +08::01::2022 08:00:35|I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES| +08::01::2022 08:00:35|2 People in a 1 Man Turret| +08::01::2022 08:00:37|3 +08::01::2022 08:00:39|Andou is the nigger is paris| +08::01::2022 08:00:40|CUTE HAT| +08::01::2022 08:00:42|HON HON HON| +08::01::2022 08:00:44|Was it the same niggers that were on the moon?| +08::01::2022 08:00:44|look at these fatties| +08::01::2022 08:00:44|Shouldn't it be against the rules to have more than one tank with a flag?| +08::01::2022 08:00:54|wish i was that gunner| +08::01::2022 08:00:55|shifty frog bastards| +08::01::2022 08:00:56|no the moon had Nazi Niggers| +08::01::2022 08:00:59|Oh shidd its Fr*nch time| +08::01::2022 08:01:01|Baguettes bombardment| +08::01::2022 08:01:03| Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers | +08::01::2022 08:01:06|I wish I was under the gunner| +08::01::2022 08:01:06|no the niggers that were on the moon was actually only one nigger| +08::01::2022 08:01:11|hello hate niggers| +08::01::2022 08:01:12|>WoT tank sniping time| +08::01::2022 08:01:13|ONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHO +08::01::2022 08:01:15|French hats are cute| +08::01::2022 08:01:17|THE GAME WAS RIGGED FROM THE START| +08::01::2022 08:01:18|I wish I was andou's seat| +08::01::2022 08:01:21|the niggers on the moon were the gay ones from outer space| +08::01::2022 08:01:28|ANDOU RABU| +08::01::2022 08:01:32|Tiger porche op like what the actual fuck| +08::01::2022 08:01:33|buffering +08::01::2022 08:01:38|L O N G BARREL| +08::01::2022 08:01:42|ahh gay niggers from outer space that makes sense| +08::01::2022 08:01:47|pivot turning into neutral steering| +08::01::2022 08:01:47|I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU | +08::01::2022 08:01:49|>french anything >cute| +08::01::2022 08:01:51|niggers tougue my anus| +08::01::2022 08:01:53|L O O O O O O O N G| +08::01::2022 08:01:58|I want Andou to marry Oshida| +08::01::2022 08:02:00|my wife andou is so cute| +08::01::2022 08:02:09|I would play petanque with you ::a::nons| +08::01::2022 08:02:09|cute sleepy redhead| +08::01::2022 08:02:09|ettanko!? +08::01::2022 08:02:11|ettanko....... +08::01::2022 08:02:11|Brit moment| +08::01::2022 08:02:16|I WANT TO MARRY ANDOU | +08::01::2022 08:02:17|uhroh +08::01::2022 08:02:19|NEARSIDE COVER WHERE!?| +08::01::2022 08:02:21|ettwhat +08::01::2022 08:02:24|ettanko? +08::01::2022 08:02:25|UH OH| +08::01::2022 08:02:26|ETTAN +08::01::2022 08:02:27|>a bridge| +08::01::2022 08:02:27|hmm looks safe enough| +08::01::2022 08:02:28|>entire column crosses the bridge at once| +08::01::2022 08:02:32|playing pettanko on anzu's chest| +08::01::2022 08:02:34|y u k k u r i| +08::01::2022 08:02:35|BRIDGE ON THE RIVER KAWAII| +08::01::2022 08:02:35|Around Fr*nch watch yourselves| +08::01::2022 08:02:36|pettan pettan tsurupettan| +08::01::2022 08:02:37|NOT A TRAP AT ALL| +08::01::2022 08:02:38|>carbon coated bridge| +08::01::2022 08:02:39|What a fucking nigger| +08::01::2022 08:02:40|pettanko uoooooh| +08::01::2022 08:02:42|waibros +08::01::2022 08:02:43|EVER TIME | +08::01::2022 08:02:48|Carbon coated bridge| +08::01::2022 08:02:49|BEGIN WHISTLING COLONEY BOGEY'S MARCH| +08::01::2022 08:02:50|LANDING A JET ON ANZU'S CHEST| +08::01::2022 08:02:51|Bridge built by slag hands| +08::01::2022 08:02:51|Pettan Pettan Mojipettan!| +08::01::2022 08:02:53|yuropoor bridge| +08::01::2022 08:02:54|CLASSIC BLUNDER| +08::01::2022 08:02:56|Wait I just remembered this was cut from the start| +08::01::2022 08:02:59|not carbon coated enough| +08::01::2022 08:02:59|NOT THIS BRIDGE | +08::01::2022 08:02:59|>old ass wooden bridge > lets all cross at once| +08::01::2022 08:03:03|Didn't they get trolled by how they bomb the uni bridge?| +08::01::2022 08:03:03|I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +08::01::2022 08:03:06|I don't think this bridge can hold 300 tons.| +08::01::2022 08:03:08|the studs are reinforced| +08::01::2022 08:03:09|Kawhi Leonard is the best slave out there| +08::01::2022 08:03:10|I still wonder what that type of neck microhpone is| +08::01::2022 08:03:11|carbon wood| +08::01::2022 08:03:11|Imagine falling for a trap set by the french| +08::01::2022 08:03:11|it's okay, it's made of stalinwood| +08::01::2022 08:03:15|THE RAIN WASH ALL CARBON OFFF| +08::01::2022 08:03:22|I HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCH| +08::01::2022 08:03:23|kino directing| +08::01::2022 08:03:26|>eyes drawn through hair| +08::01::2022 08:03:27|And also imagine subsequently scoring no kills as the french| +08::01::2022 08:03:28|HO +08::01::2022 08:03:29|HUH +08::01::2022 08:03:32|>rum is drunk as shit as always| +08::01::2022 08:03:33|HO +08::01::2022 08:03:33|I'm about to eat some pirate's booty | +08::01::2022 08:03:34|No Duce to save you this time| +08::01::2022 08:03:35|????????????????????????? +08::01::2022 08:03:37|Alexa play Bridge of Kahazad Dum| +08::01::2022 08:03:37|>uho, cool single line| +08::01::2022 08:03:38|HO +08::01::2022 08:03:39|PUTTING CHEMICALS IN THE TAIYAKI TO TURN THE FRICKIN FROGS GAY| +08::01::2022 08:03:42|>Sodoko has best eyesight >spots this earliest >poetry| +08::01::2022 08:03:44|OH NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 08:03:47|CUTE SPOTTER LOLI| +08::01::2022 08:03:48|HIT THE DECK| +08::01::2022 08:03:48|it's hon hon time| +08::01::2022 08:03:48|intuition +08::01::2022 08:03:50|MBUSH +08::01::2022 08:03:56|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 08:03:56|ABAI +08::01::2022 08:03:57|! +08::01::2022 08:03:58|They LOST...| +08::01::2022 08:04:04|ILL +08::01::2022 08:04:04|OARAI IS FUCKED HOLY SHIT| +08::01::2022 08:04:06|enviromental damage binch| +08::01::2022 08:04:06|I love tiny tanks| +08::01::2022 08:04:06|cute marie| +08::01::2022 08:04:06|AAAAAAAAAAAAAAAAAAAA +08::01::2022 08:04:07|MOMO HATE| +08::01::2022 08:04:08|BACKING UP| +08::01::2022 08:04:11|>taking the bait| +08::01::2022 08:04:11|SHIFT FROG CUNTS| +08::01::2022 08:04:13|UCKKKKKKKKKKKKKKKKKKKKKK +08::01::2022 08:04:14|REMEMBER THE BRIDGE DRAMA IN THE ORIGINAL THREADS| +08::01::2022 08:04:14|Bridge goes boom| +08::01::2022 08:04:14|DUMPING OOARAICOIN| +08::01::2022 08:04:14|Ooaribros we got too cocky| +08::01::2022 08:04:14|Oaraibros how are we gonna get out of this one| +08::01::2022 08:04:15|cute tank| +08::01::2022 08:04:15|wish i was that pillow| +08::01::2022 08:04:17|OOARAI BROS…| +08::01::2022 08:04:20|oorai bros... I don't feel so good... | +08::01::2022 08:04:21|scrubs smh| +08::01::2022 08:04:22|It's so fucking over| +08::01::2022 08:04:22|it's fucking over| +08::01::2022 08:04:23|OARAI BROS WE GOT COCKY AGAIN| +08::01::2022 08:04:24|gg momo is repeating| +08::01::2022 08:04:24|ACTIVATE THE PLOT DRAMA| +08::01::2022 08:04:25|FUCK FUCK FUCK FUCK NOT LIKE THIS| +08::01::2022 08:04:26|IT'S OVER| +08::01::2022 08:04:28|Call Duce for support| +08::01::2022 08:04:30|15-0 moment| +08::01::2022 08:04:32|useless french cant shoot still tank| +08::01::2022 08:04:32|V-TEC JUST KICKED IN YOOOO!! V-TEC JUST KICKED IN YOOOO!!| +08::01::2022 08:04:33|URBO +08::01::2022 08:04:33|CCELERATE +08::01::2022 08:04:33|SELL OORAICOIN| +08::01::2022 08:04:34|OOOOOOOOOOOOOOM +08::01::2022 08:04:34|$40000 ON BC FREEDOM| +08::01::2022 08:04:35|I KNOW, I KNOW I'VE LET YOU DOWN...| +08::01::2022 08:04:35|VTEC | +08::01::2022 08:04:35|ooarai bros...| +08::01::2022 08:04:38|DO YOU LIKE MY TANK| +08::01::2022 08:04:38|welp this is it might as well go to sleep now| +08::01::2022 08:04:39|GAS GAS GAS| +08::01::2022 08:04:39|HIT THAT MF DRIFTO| +08::01::2022 08:04:40|V-TEC JUST KICKED IN YOOOO!!| +08::01::2022 08:04:40|I LOVE TINY TANKS I LOVE TANKY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY T| +08::01::2022 08:04:41|porsche ult has a long cooldown it's fair and balanced| +08::01::2022 08:04:42|ARL lef in the dust...| +08::01::2022 08:04:43|ayai +08::01::2022 08:04:44|AYAI +08::01::2022 08:04:44|holy shite| +08::01::2022 08:04:44|-WOAH +08::01::2022 08:04:46|BASED ::o::FAGS| +08::01::2022 08:04:50|GAS GAS GAS| +08::01::2022 08:04:52|played like a damn fiddle| +08::01::2022 08:04:53|Leopon drifting abusing engine and regulations again| +08::01::2022 08:04:53|skill issue| +08::01::2022 08:04:53|VTEC JUST KICKED IN| +08::01::2022 08:04:55|launch control master race| +08::01::2022 08:04:57|Someone get them a better monitor they can't hit their shots| +08::01::2022 08:04:58|marvel quips| +08::01::2022 08:04:59|YOU GONNA CARRY ALL THAT WEIGHT| +08::01::2022 08:04:59|>race car sfx| +08::01::2022 08:05:00|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEXXXXX +08::01::2022 08:05:03|IF ONLY THE FRENCH COULD HIT THE BROAD SIDE OF A BARN| +08::01::2022 08:05:04|Leopon is too powerful| +08::01::2022 08:05:09|floof is spooked| +08::01::2022 08:05:12|cute floof| +08::01::2022 08:05:14|>fool US| +08::01::2022 08:05:15|God I love this OST| +08::01::2022 08:05:15|poor floof| +08::01::2022 08:05:15|THEY PLAYED US LIKE A DAMN FIDDLE| +08::01::2022 08:05:18|H +08::01::2022 08:05:21|MUG +08::01::2022 08:05:21|11 years later, Motegi's still fucked.| +08::01::2022 08:05:21|: +08::01::2022 08:05:22|I love yukari| +08::01::2022 08:05:22|Floof fucked up| +08::01::2022 08:05:23|cute scared floof| +08::01::2022 08:05:23|>she gets a second cake| +08::01::2022 08:05:24|bongs +08::01::2022 08:05:24|Big penetration for small tanks | +08::01::2022 08:05:25|YUKARI YOU FUCK| +08::01::2022 08:05:28|LANG +08::01::2022 08:05:29|cake fattie| +08::01::2022 08:05:29|STOP THINKING ABOUT FOOD YOU FAT FUCK| +08::01::2022 08:05:30|fat bimch| +08::01::2022 08:05:35|underestimated +08::01::2022 08:05:37|>carbon coating| +08::01::2022 08:05:40|They played us like a dollar store kazoo. You need skill to play a fiddle| +08::01::2022 08:05:41|Said the team that loses every year| +08::01::2022 08:05:43|maybe yukari shouldn't have landed at their school using a fucking helicopter this time| +08::01::2022 08:05:53|HOOOOOOOOOOOOOOOOOSH +08::01::2022 08:05:55|ngl, i'd stuff her face and not with cake| +08::01::2022 08:05:55|why can't the frog hit anything????| +08::01::2022 08:05:59|ecoiloli +08::01::2022 08:06:00|HOLY FUCK JUST KNOCK OUT THE SUPPORT BEAM| +08::01::2022 08:06:07|THAT FRENCH GUNNERY| +08::01::2022 08:06:10|>like 100 shots fired| +08::01::2022 08:06:11|MIHO CURRENTLY HAS 5000 SPLINTERS IN HER FACE| +08::01::2022 08:06:13|Cake blocks their sights. Can't aim properly| +08::01::2022 08:06:14|Baguettes are in the way| +08::01::2022 08:06:16|>not one fucking tank down| +08::01::2022 08:06:18|great plan Momo| +08::01::2022 08:06:23|100 shots, zero penetrations. THE FRENCH| +08::01::2022 08:06:25|don't worry anon, her eyes are carbon coated| +08::01::2022 08:06:27|yukari please commit harakiri| +08::01::2022 08:06:27|>french gunner| +08::01::2022 08:06:30|Yukari is the cutest dork| +08::01::2022 08:06:31|ANDBOTE +08::01::2022 08:06:36|based tank autist| +08::01::2022 08:06:38|>hitting every part of the bridge, but not one on the tanks| +08::01::2022 08:06:41|>yukari immediately knows what she's thinking CUTE| +08::01::2022 08:06:43|NABA +08::01::2022 08:06:47|KINO NAMES| +08::01::2022 08:06:48|FUCK OFF MOMO| +08::01::2022 08:06:52|walksu zu plank| +08::01::2022 08:06:54|>bridge hasn't collapsed yet| +08::01::2022 08:06:56|That name| +08::01::2022 08:06:58|WORST ACCURACY IN THE ENTIRE TOURNAMENT: BC FREEDOM| +08::01::2022 08:06:58|OOOOSORO +08::01::2022 08:07:01|OSORO +08::01::2022 08:07:03|worse physics that der film| +08::01::2022 08:07:04|wooku za puranku| +08::01::2022 08:07:05|Hare of Inaba has to be the least autistic op name she's made| +08::01::2022 08:07:05|THIS SHIT IS TOO RETARDED| +08::01::2022 08:07:06|anon I told you, the bridge is carbon coated| +08::01::2022 08:07:07|ORKS +08::01::2022 08:07:10|osoro +08::01::2022 08:07:12|still can't hit any one| +08::01::2022 08:07:12|Bruh how the fuck| +08::01::2022 08:07:12|The only useful thing the pirates will ever do| +08::01::2022 08:07:13|???????????????????????????????????????????? +08::01::2022 08:07:13|ACTICAL +08::01::2022 08:07:13|FRENCH BTFO BY PIRATES| +08::01::2022 08:07:17|I'm more surprised how the bridge is still standing| +08::01::2022 08:07:19|>Chain of commmand | +08::01::2022 08:07:19|I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES | +08::01::2022 08:07:22|??????????????????????????????????????????????? +08::01::2022 08:07:23|AH +08::01::2022 08:07:23|That has to be the best pirate I've ever seen...| +08::01::2022 08:07:23|AT +08::01::2022 08:07:25|OGNION BROS?!?| +08::01::2022 08:07:25|even the frogs are scared| +08::01::2022 08:07:27|MON DIEU| +08::01::2022 08:07:27|oorari did not deserve this| +08::01::2022 08:07:28|????????????????????????????????????? +08::01::2022 08:07:30|frogs missing this many shots is kinda bullshit| +08::01::2022 08:07:33|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +08::01::2022 08:07:33|I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HAT| +08::01::2022 08:07:36|they needed at least a few more minutes to take a tank| +08::01::2022 08:07:39|>not ONE loss| +08::01::2022 08:07:39|SACRE BLEU| +08::01::2022 08:07:45|I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES | +08::01::2022 08:07:46|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +08::01::2022 08:07:46|ONE JOB| +08::01::2022 08:07:47|ORARI BROS WAS THIS THE PLAN?| +08::01::2022 08:07:47|c'est fini| +08::01::2022 08:07:50|driving in reverse so turrent don't get damaged, smmart| +08::01::2022 08:07:50|FAT FRENCH MOTHERFUCKERS| +08::01::2022 08:07:51|I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HAT| +08::01::2022 08:07:52|WHAT ARE WE GONNA DO FROGBROS????| +08::01::2022 08:07:52|IS THIS THE POWER OF NON ALHOLIC RUM| +08::01::2022 08:07:55|PLOT ARMOR > CARBON| +08::01::2022 08:07:55|French too slow with loading more shells| +08::01::2022 08:07:57|>BRIDGE FINALLY GOES FUCKING DOWN| +08::01::2022 08:07:58|rogbros... +08::01::2022 08:08:00|LOTARMOR.OST +08::01::2022 08:08:01|leave it to the frenchoids to miss the fish in a barrel| +08::01::2022 08:08:04|SHIT SHIT SHIT SHOULD I BUY OOARAICOIN?| +08::01::2022 08:08:04|OLLERCOASTER +08::01::2022 08:08:05|>not a single tank has been popped yet| +08::01::2022 08:08:13|RIP BRIDGE| +08::01::2022 08:08:18|why didnt they kill bridge earlier| +08::01::2022 08:08:21|;-;7 bye bridge| +08::01::2022 08:08:22|Not even getting one kill here is pretty bad. Worst fight scene in the series by fa| +08::01::2022 08:08:23|strongest bridge ever| +08::01::2022 08:08:27|>captain casually standing between the flying debris| +08::01::2022 08:08:28|retreat +08::01::2022 08:08:28|AU PAS INCOMING| +08::01::2022 08:08:28|BRIGDGE COLLAPSES AFTER TANKS ARE OUT| +08::01::2022 08:08:31|>frogs retreat| +08::01::2022 08:08:32|AT +08::01::2022 08:08:35|;_; bridge-kun| +08::01::2022 08:08:37|FAT FUCK| +08::01::2022 08:08:38|French really should have won that| +08::01::2022 08:08:40|>THE ABSOLUTE STATE OF THE FR*NCH| +08::01::2022 08:08:41|I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +08::01::2022 08:08:43|Now the bridge sinks?| +08::01::2022 08:08:44|cool idea for a scene but zero tanks dying is kinda dumb| +08::01::2022 08:08:46|perfect rretreat, sasuga frogs| +08::01::2022 08:08:46|>frog aim| +08::01::2022 08:08:47|>French >winning| +08::01::2022 08:08:48|ben simmons tier| +08::01::2022 08:08:48|RETREAT, SING AND REGROUP| +08::01::2022 08:08:48|aaaaaaaand we're back to the start| +08::01::2022 08:08:50|No one hit anyone during all that?| +08::01::2022 08:08:50|fuck the bridge right?| +08::01::2022 08:08:51|I LOVE THE FUCKING ONIION| +08::01::2022 08:08:53|FISSON MAILED WE'LL GET EM NEXT TIME| +08::01::2022 08:08:53|Even after they got off the bridge they were still surrounded| +08::01::2022 08:08:54|O S T| +08::01::2022 08:08:54|>Set Trap >Kill 0 Tanks >Retreat >Sing >Mission Accomplished?| +08::01::2022 08:08:55|ONION TIME| +08::01::2022 08:08:56|SING ALONG| +08::01::2022 08:08:56|IMAGINE BEING FRENCH| +08::01::2022 08:08:57|I FUCKING HATE ONIONS| +08::01::2022 08:08:58|MARIE'S THIGHS ARE 100% FAT| +08::01::2022 08:08:58|GOD I LOVE ONIONS| +08::01::2022 08:08:59|>BUT FROG MUSIC THO?!??!!| +08::01::2022 08:08:59|The classic french retreat| +08::01::2022 08:09:00|here we go| +08::01::2022 08:09:00|I hate onions| +08::01::2022 08:09:00|I LOVE THE ONION| +08::01::2022 08:09:02|FUCKING ONION CANT HIT SINGLE TANK| +08::01::2022 08:09:02|WAIT, NOT A SINGLE TANK DIED?| +08::01::2022 08:09:02|IT'S OIGNON TIME| +08::01::2022 08:09:03|ST +08::01::2022 08:09:03|OOOHONHONHONHONHONHONHONHON +08::01::2022 08:09:03|sing along, folks| +08::01::2022 08:09:04|I LOVE THE ONION| +08::01::2022 08:09:04|I could go for some onion rings rn| +08::01::2022 08:09:04|I LOVE THE ONION| +08::01::2022 08:09:06|ONIONS +08::01::2022 08:09:06|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:09:07|I LOVE THE SOY| +08::01::2022 08:09:08|I FUCKING LOVE ONIONS BROS| +08::01::2022 08:09:09|I LOVE THE ONION| +08::01::2022 08:09:09|I LOVE THE ONION| +08::01::2022 08:09:09|ONION GOOD ONION FRIED| +08::01::2022 08:09:09|NIONS +08::01::2022 08:09:10|To be fair they are firing AP, thats not going to fdo much to a bridge| +08::01::2022 08:09:10|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:09:10|J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON| +08::01::2022 08:09:11|LE FROG| +08::01::2022 08:09:12|I HATE THE ONION| +08::01::2022 08:09:12|i fucking love onions| +08::01::2022 08:09:12|>a fucking onion| +08::01::2022 08:09:13|J'AIME L'OIGNON| +08::01::2022 08:09:13|UIOUIOUIOUIOUIOUIOUIOUIOUIOUIOUI +08::01::2022 08:09:15|AUSTRIANS GET OUT REEEEEEEEEEE| +08::01::2022 08:09:15|I LOVE ONIONS| +08::01::2022 08:09:15|'AIME +08::01::2022 08:09:15|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:09:15|They would have won if Napoleon was there| +08::01::2022 08:09:15|NOOOOOO I DON" WANT TO EAT THE ONION YOU CAN"T MAKE ME| +08::01::2022 08:09:15|I WILL EAT THE ONION| +08::01::2022 08:09:16|I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONI| +08::01::2022 08:09:16|I LOVE THE ONION| +08::01::2022 08:09:17|NION +08::01::2022 08:09:19|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:09:19|J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON| +08::01::2022 08:09:19|>FRENCH retreating quickly| +08::01::2022 08:09:19|J'aime l'oingnon| +08::01::2022 08:09:20|Onion > Winning| +08::01::2022 08:09:20|AU PAS AU PAS AU PAS| +08::01::2022 08:09:21|J'aime l'oignon| +08::01::2022 08:09:21|wtf is this cut?| +08::01::2022 08:09:22|AU PAS CAMERAD| +08::01::2022 08:09:22|NIONS!! +08::01::2022 08:09:22|AU PAS CAMARADES| +08::01::2022 08:09:23|J'aime l'oignon| +08::01::2022 08:09:24|AU PAS AU PAS AU PAS | +08::01::2022 08:09:24|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:09:25|I LOVE THE ONION| +08::01::2022 08:09:26|AU PAS AU PAS AU PAS | +08::01::2022 08:09:26|>A FUCKING ONION| +08::01::2022 08:09:27|Fried onions goes well with Saunder subs| +08::01::2022 08:09:29|AU PAS AU PAS AU PAS CAMARADES| +08::01::2022 08:09:29|AU PAS AU PAS AU PAS| +08::01::2022 08:09:29|AU PAS KAMERAD AU PAS KAMERAD AU PAS KAMERAD AU PAS KAMERAD | +08::01::2022 08:09:29|AU PAS CAMARADES| +08::01::2022 08:09:30|>SOY SONG| +08::01::2022 08:09:30|AU PAS AU PAS AU PAS| +08::01::2022 08:09:31|AU PA AU PAS| +08::01::2022 08:09:31|AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +08::01::2022 08:09:31|BOIL THE FROGS| +08::01::2022 08:09:32|AU PAS| +08::01::2022 08:09:32|AUPAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE| +08::01::2022 08:09:32|AU PAS AU PAS AU PAS | +08::01::2022 08:09:33|AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +08::01::2022 08:09:33|You WILL eat the Onion| +08::01::2022 08:09:34|OMMELETTE DU FROMMAGE| +08::01::2022 08:09:34|AU PAS CAMARADES| +08::01::2022 08:09:34|AU PAS AU PAS AU PAS| +08::01::2022 08:09:35|AU PAS CAMARADES AUPAS AU PAS AU PAS| +08::01::2022 08:09:35|AU PAS AU PAS AU PAS| +08::01::2022 08:09:35|WHAT THE FUCK AM I WATCHING| +08::01::2022 08:09:36|>they can't get by the filter| +08::01::2022 08:09:36|GOD I WANT THAT FRENCH DESSERT PUSSY ON MY FACE| +08::01::2022 08:09:37|Au pas camarades| +08::01::2022 08:09:37|AU PAS CAMARADES| +08::01::2022 08:09:37|AU PAS AU PAS AU PAS| +08::01::2022 08:09:38|>They march to Onions| +08::01::2022 08:09:39|AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +08::01::2022 08:09:40|AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +08::01::2022 08:09:40|I LOVE THE ONION| +08::01::2022 08:09:40|AUS PAS AUS PAS| +08::01::2022 08:09:41|AU PAS UA PAS AU PAS | +08::01::2022 08:09:41|AU PAS AU PAS| +08::01::2022 08:09:42|I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD!| +08::01::2022 08:09:43|AU PAS| +08::01::2022 08:09:43|OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OP| +08::01::2022 08:09:44|AU PAS AU PAS AU PAS| +08::01::2022 08:09:45|is this oppa korean word??????| +08::01::2022 08:09:45|BIG FRENCH COCK| +08::01::2022 08:09:46|ONIONBROS, WE WILL WIN DAS FINALE 2| +08::01::2022 08:09:48|"Very good!" He said.| +08::01::2022 08:09:48|WHAT THE FUCK AM I WATCHING (although I've watched it before)| +08::01::2022 08:09:48|YOU WILL EAT THE ONIONS, YOU WILL FEED THE MARIE, YOU WILL PARTICIATE IN CLASS WAR, YOU WILL RIDE THE TANK| +08::01::2022 08:09:49|AU PAS UA PAS UA PAS| +08::01::2022 08:09:49|AU PAS AU PAS AU PAS | +08::01::2022 08:09:50|AU PS| +08::01::2022 08:09:50|AU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMAR| +08::01::2022 08:09:50|Opa opa pa pa pa| +08::01::2022 08:09:51|AU PAS CAMARADE| +08::01::2022 08:09:52|LET THEM EAT ONION| +08::01::2022 08:09:52|no onions for austrians| +08::01::2022 08:09:54|AU PAS| +08::01::2022 08:09:55|EAMLESS +08::01::2022 08:09:55|>frogs get an onions song but erikafags still waiting| +08::01::2022 08:09:56|j'aime l'oignon| +08::01::2022 08:09:57|RA +08::01::2022 08:09:58|two year wait | +08::01::2022 08:09:59|love me marches love me onions, 'ate spies 'ate ooarai| +08::01::2022 08:10:01|frog legs| +08::01::2022 08:10:02|IT'S BEEN TWO YEARS| +08::01::2022 08:10:04|French ost is good| +08::01::2022 08:10:05|HON HON HON| +08::01::2022 08:10:06|where is my INTER INTER MISSION| +08::01::2022 08:10:07|Which Frenchy has the biggest cock?| +08::01::2022 08:10:08|2 YEAR TIMESKIP| +08::01::2022 08:10:08|wow two years really went by quickly| +08::01::2022 08:10:09|wow two years went by fast| +08::01::2022 08:10:11|TFW AUSTRIAN| +08::01::2022 08:10:12|I NEED A PISS| +08::01::2022 08:10:14|shida +08::01::2022 08:10:15|ENTER MISSION?| +08::01::2022 08:10:17|MY WORK HERE IS DONE. >BUT YOU DIDN'T DO ANYTHING| +08::01::2022 08:10:25|YAFUNTO +08::01::2022 08:10:26|2017 -> 2019| +08::01::2022 08:10:28|ONBONS +08::01::2022 08:10:30|2 YEAR TRANSITION| +08::01::2022 08:10:32|I need a bathroom break| +08::01::2022 08:10:33|FUCK FROGS (sexually)| +08::01::2022 08:10:33|Get a room| +08::01::2022 08:10:33|JUST FUCK ALREADY| +08::01::2022 08:10:34|>food analogies| +08::01::2022 08:10:36|I can't believe it's been two fucking years| +08::01::2022 08:10:38|rute +08::01::2022 08:10:38|AKEFATTIECAKEFATTIECAKEFATTIE +08::01::2022 08:10:43|I love andou| +08::01::2022 08:10:43|F2? +08::01::2022 08:10:44|It's not gay, it's French| +08::01::2022 08:10:45|French ain't brave enough to eat onions in their tanks, not like Brits and tea| +08::01::2022 08:10:48|Diabetic marie| +08::01::2022 08:10:50|two years passed in the blink of an eye| +08::01::2022 08:10:50|two years... it got here so fast...| +08::01::2022 08:10:50|I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! | +08::01::2022 08:10:52|::u:: shitters out| +08::01::2022 08:10:52|ngery +08::01::2022 08:10:53|GAY FROGS| +08::01::2022 08:10:54|JUST KISS ALREADY| +08::01::2022 08:10:55|JUST FUCK ALREADY| +08::01::2022 08:10:55|no shit Marie is like tghe cream: FAT| +08::01::2022 08:10:55|Youre the best, no youre the best no u no u| +08::01::2022 08:10:56|u:: +08::01::2022 08:10:57|JUST FUCK ALREADY| +08::01::2022 08:11:00|Eating another piece of cake already| +08::01::2022 08:11:02|GOD I WANT THAT FRENCH DESSERT EATERS CUNNY IN MY MOUTH| +08::01::2022 08:11:03|to bad you can't aim for shit| +08::01::2022 08:11:03|VIVA LA BC| +08::01::2022 08:11:04|Black Cock| +08::01::2022 08:11:05|LLEZ +08::01::2022 08:11:05|LLE +08::01::2022 08:11:06|LLEZ +08::01::2022 08:11:07|Andou is so fucking greasy| +08::01::2022 08:11:07|hoy gay frog sex| +08::01::2022 08:11:09|YOU MISSED EVERY SHOT| +08::01::2022 08:11:09|VIVE LE BC| +08::01::2022 08:11:10|are there any french anons still here? how is there french pronunciation?| +08::01::2022 08:11:10|VIVA LA BC| +08::01::2022 08:11:12|>VIVA LA PUSSY| +08::01::2022 08:11:13|VIVE LA BC| +08::01::2022 08:11:14|restore the monarchy | +08::01::2022 08:11:14|YOU DIDN'T HIT A SINGLE THING| +08::01::2022 08:11:15|ALLEZ CAMARADES| +08::01::2022 08:11:23|THEY ARE DRIVING AT A CONSTANT SPEED IN A STRAIGHT LINE| +08::01::2022 08:11:23|>eating dirty cake| +08::01::2022 08:11:24|asuga +08::01::2022 08:11:32|smoked cake, french delicacy| +08::01::2022 08:11:33|fat fuck only thinks about food holy shit| +08::01::2022 08:11:33|its fine the cake is cabron coated| +08::01::2022 08:11:35|awesome teamwork| +08::01::2022 08:11:36|PRESS B TO RESTORE THE BOURBON DYNASTY| +08::01::2022 08:11:36|THEY ARE DRIVING AWAY FROM YOU AT A CONSTANT SPEED IN A STRAIGHT LINE| +08::01::2022 08:11:37|BC will lose because Marie's fat ass destroys their tank| +08::01::2022 08:11:37|Baguettes ain't tracer rounds| +08::01::2022 08:11:37|Cake is Carbon Covered| +08::01::2022 08:11:37|>can't hit a single tank despite successful ambush| +08::01::2022 08:11:39|grass plain| +08::01::2022 08:11:43|BC= baked clams| +08::01::2022 08:11:44|HO +08::01::2022 08:11:44|>cabron coated| +08::01::2022 08:11:55|HO +08::01::2022 08:11:55|aye aye| +08::01::2022 08:11:56|BC = BIG COCK| +08::01::2022 08:11:56|Rum haters will be annihilated| +08::01::2022 08:11:57|EI EI SAH| +08::01::2022 08:11:58|hate the french, unironically the republic owes my family land| +08::01::2022 08:11:59|AYE AYE SAH| +08::01::2022 08:12:00|AI AI SAA| +08::01::2022 08:12:00|aye ayee| +08::01::2022 08:12:02|hedgerow hell| +08::01::2022 08:12:02|Cabron coating is pretty amazing| +08::01::2022 08:12:04|AI AI SAH| +08::01::2022 08:12:04|AYE AYE SAH| +08::01::2022 08:12:05|boacge +08::01::2022 08:12:06|has shark team ever gotten a kill?| +08::01::2022 08:12:30|Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext | +08::01::2022 08:12:32|>merely pretending to be acting| +08::01::2022 08:12:35|AU PAS CAMARADES| +08::01::2022 08:12:45|LOOF +08::01::2022 08:12:48|I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES| +08::01::2022 08:12:51|imagine trusting yukari's espionage after that| +08::01::2022 08:12:56|>changing arena to confined space vs ooaria| +08::01::2022 08:13:00|ukari... +08::01::2022 08:13:00|She's sounds so old compared to the TV series :(| +08::01::2022 08:13:02|Ain't freedom if they still got infighting| +08::01::2022 08:13:03|I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH | +08::01::2022 08:13:05|imagine running your hands through her floof| +08::01::2022 08:13:08|Favorite gup and sex position?| +08::01::2022 08:13:16|SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MO| +08::01::2022 08:13:17|anzu, mating press| +08::01::2022 08:13:19|nonna, paizuri| +08::01::2022 08:13:19|yukari lotus| +08::01::2022 08:13:20|light bulb lit| +08::01::2022 08:13:21|I want to ruffle the floof| +08::01::2022 08:13:21|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +08::01::2022 08:13:23|anzu, doggy| +08::01::2022 08:13:23|Just drive thru the Ardennes. Works every time against the Fr*rch.| +08::01::2022 08:13:24|MIHO, RIMJOB| +08::01::2022 08:13:26|SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO | +08::01::2022 08:13:28|TIME FOR WAR CRIMES| +08::01::2022 08:13:29|Queen of the Night? Hana been to shady places| +08::01::2022 08:13:31|French dont know their fucking tanks| +08::01::2022 08:13:32|maho, missionary| +08::01::2022 08:13:32|who sounds old?| +08::01::2022 08:13:38|Katyusha naizuri| +08::01::2022 08:13:39|ako +08::01::2022 08:13:40|I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES| +08::01::2022 08:13:41|Katyusha, Cunny Buffet| +08::01::2022 08:13:41|kino background art| +08::01::2022 08:13:43|It's the same turret| +08::01::2022 08:13:50|bocage bros... the Germans will eat us alive| +08::01::2022 08:13:51|Chubby Marie| +08::01::2022 08:13:51|hana, pronebone| +08::01::2022 08:13:52|GORILLA WARFARE| +08::01::2022 08:13:52|hedgerows +08::01::2022 08:13:54|WHY DID THEY TURN LARGE PARTS OF JAPAN INTO RURAL EUROPE?| +08::01::2022 08:13:54|>cunny buffet Kek| +08::01::2022 08:13:55|>three cakes| +08::01::2022 08:13:59|cum on her cake| +08::01::2022 08:13:59|french resistance, hahahahahaha| +08::01::2022 08:14:00|>the french resistance| +08::01::2022 08:14:00|HAVE YOU HEARD THIS SAYING| +08::01::2022 08:14:00|AT +08::01::2022 08:14:00|>ywn see gup in theatres| +08::01::2022 08:14:00|GORILLA WARFARE| +08::01::2022 08:14:01|Chubby belly, chubby thighs| +08::01::2022 08:14:02|Reaching 200kg here marie| +08::01::2022 08:14:02|BAKARONI WARFARE| +08::01::2022 08:14:06|How much does her fat ass weigh?| +08::01::2022 08:14:06|how many more cakes does this bitch got| +08::01::2022 08:14:08|AT +08::01::2022 08:14:16|ANGLED ARMOR| +08::01::2022 08:14:18|>shark retards| +08::01::2022 08:14:28|Everyone missed| +08::01::2022 08:14:31|>third cake in as many scenes| +08::01::2022 08:14:31|cant shoot for shit| +08::01::2022 08:14:32|45 degree + carbon coating| +08::01::2022 08:14:33|0 HITS| +08::01::2022 08:14:36|ow +08::01::2022 08:14:36|lovely Tiger placement| +08::01::2022 08:14:39|not a single tank has been killed in this| +08::01::2022 08:14:42|still can't shoot point blank range| +08::01::2022 08:14:46|the firing animations in Das Finale look great| +08::01::2022 08:14:47|scared] +08::01::2022 08:14:47|what happens if both teams run out of ammo?| +08::01::2022 08:14:49|its like 300 m max| +08::01::2022 08:14:50|Fuck your wall| +08::01::2022 08:14:52|wasting ammo on couple rock and bushes| +08::01::2022 08:14:54|It's a distraction you fucking retards| +08::01::2022 08:14:58|Frenchbros we fucking suck| +08::01::2022 08:15:00|Everyone missed a stationary target while they were shooting while stationary.| +08::01::2022 08:15:04|Our IAV is online| +08::01::2022 08:15:05|they punch the tanks until the flag pops| +08::01::2022 08:15:05|cunny scouts| +08::01::2022 08:15:08|ZUSA +08::01::2022 08:15:09|Dont mind the tank shells whizzing by Azusa| +08::01::2022 08:15:14|i love azusa our next ooarai commander| +08::01::2022 08:15:16|saving private ryan mirror| +08::01::2022 08:15:16|anons... im really feeling the alcoholnow| +08::01::2022 08:15:17|carbon-coated cunny| +08::01::2022 08:15:17|A big target. I think they were shooting Leopon tank| +08::01::2022 08:15:17|ZUCUTE +08::01::2022 08:15:22|ramming speed| +08::01::2022 08:15:26|carbon coated uniforms and skin cream| +08::01::2022 08:15:26|love her wing mirror on a stick| +08::01::2022 08:15:33|AN ETCH A SKETCH| +08::01::2022 08:15:35|I'd love to ramming speed Anzu| +08::01::2022 08:15:35|azusa, rape rp| +08::01::2022 08:15:39|ETCH-A-SKETCH LETS GOOOO| +08::01::2022 08:15:40|>kiddy drawing tablet thing| +08::01::2022 08:15:41|Tactical Etch-O-Sketch| +08::01::2022 08:15:42|Bait time| +08::01::2022 08:15:55|sodomy with sodoko| +08::01::2022 08:15:55|>alice has tablet >miho has an etch-n-sketc| +08::01::2022 08:16:05|>Waddle tonk| +08::01::2022 08:16:05|SLOW DORIFTO| +08::01::2022 08:16:05|alice, full nelson| +08::01::2022 08:16:06|IGGLING +08::01::2022 08:16:07|slow drifting| +08::01::2022 08:16:08|IGGLE +08::01::2022 08:16:08|CUTE TIGER SHUFFLING| +08::01::2022 08:16:13|BON AMI| +08::01::2022 08:16:14|RIGGLE +08::01::2022 08:16:17|dancing tiger hidden mallard| +08::01::2022 08:16:18|where are we, I went to sleep when the chovy showed up the first time| +08::01::2022 08:16:21|RICOCHET RICOCHET| +08::01::2022 08:16:22|we always talk about Anzio but Ooarai are poorfags as well| +08::01::2022 08:16:22|smoke would be handy...| +08::01::2022 08:16:24|Wiggle wiggle wiggle| +08::01::2022 08:16:25|ONK +08::01::2022 08:16:27|F2 +08::01::2022 08:16:27|DON'T USE YOUR PET NAMES DURING THE MATCH| +08::01::2022 08:16:27|LUFF +08::01::2022 08:16:29|cute bow| +08::01::2022 08:16:32|why did these fr*nch not surrender yet?| +08::01::2022 08:16:35|cute floof| +08::01::2022 08:16:44|>they fell for it| +08::01::2022 08:16:44|SPY CREEPIN AROUD| +08::01::2022 08:16:45|>incite revolution war| +08::01::2022 08:16:48|CIA FLASE FLAGS| +08::01::2022 08:16:53|OSHIDA BUTT| +08::01::2022 08:16:55|FROGE BUTT| +08::01::2022 08:16:55|SPY CHECK BITCH| +08::01::2022 08:16:58|who was in the wrong here?| +08::01::2022 08:16:59|Bon ami can't hit regardless. What you think Bon ami can do.| +08::01::2022 08:17:00|>they fell for it? >dump it| +08::01::2022 08:17:00|CIA FALSE FLAG OPERATION| +08::01::2022 08:17:05|glowniggers did this| +08::01::2022 08:17:06|DUMB FRENCH| +08::01::2022 08:17:07|Dumb frogs| +08::01::2022 08:17:08|RACE WAR'S BACK ON THE MENU| +08::01::2022 08:17:08|ROLLED +08::01::2022 08:17:09|BETRAYED BY OUR OWN RACE| +08::01::2022 08:17:10|dumb frogs| +08::01::2022 08:17:12|Ruse: 100| +08::01::2022 08:17:12|APPARI +08::01::2022 08:17:13|own goal| +08::01::2022 08:17:14|(((they))) shot you| +08::01::2022 08:17:14|LOWDOKO +08::01::2022 08:17:19|we do a little trolling| +08::01::2022 08:17:21|lets gooo race war| +08::01::2022 08:17:21|LOWDOKO +08::01::2022 08:17:22|(((HANDS RUBBING)))| +08::01::2022 08:17:24|Freedom's back on the menu boys| +08::01::2022 08:17:24|CLASS WAR NOW KILL THE RICH| +08::01::2022 08:17:27|UBVERTED +08::01::2022 08:17:28|The frog fears the glowie | +08::01::2022 08:17:28|>frenchies are better at taking eachother out than Ooari| +08::01::2022 08:17:30|CURRENTLY KILLED MORE OF THEIR OWN THEN OOARAI| +08::01::2022 08:17:30|French rioting again| +08::01::2022 08:17:31|TROLLING: COMMENCED| +08::01::2022 08:17:33|776 +08::01::2022 08:17:34|CLASS WAR NOW| +08::01::2022 08:17:34|EVOLUTION +08::01::2022 08:17:37|BLUE ENEMIES| +08::01::2022 08:17:37|oy vey kappa yo're my greatest ally!| +08::01::2022 08:17:38|Fr*nch arent human| +08::01::2022 08:17:39|Innocent Somua killed in cold blood by Tyranic Nobles| +08::01::2022 08:17:40|ANDOU WILL CONTINUE THE REVOLUTION| +08::01::2022 08:17:41|LANG +08::01::2022 08:17:42|frenchies now have precision accuracy| +08::01::2022 08:17:43|DOWN WITH THE NOBILITY| +08::01::2022 08:17:47|TK > anemy| +08::01::2022 08:17:47|GIRLS UND RACEWAR| +08::01::2022 08:17:49|They could have just driven through the hedges| +08::01::2022 08:17:50|LALALALALALALALALA +08::01::2022 08:17:50|CLASS WAR CLASS WAR| +08::01::2022 08:17:50|CLASS WAR NOT FUCK THE BORJ| +08::01::2022 08:17:52|Meanwhile Marie does nothing| +08::01::2022 08:17:56|1789 CLASS WAR NOW!!| +08::01::2022 08:18:00|GIRLS AND FROG wAR| +08::01::2022 08:18:01|EAT THE RICH| +08::01::2022 08:18:01|Marie is eating| +08::01::2022 08:18:01|too busy eating| +08::01::2022 08:18:02|Frogs BTFO| +08::01::2022 08:18:02|GAS THE KAPPA CLASS WAR NOWWWWWWWWWWWWWWWWWWWWWWWW| +08::01::2022 08:18:04|Sun Tzu said: The highest acme of skill is to make your enemy shoot himself.| +08::01::2022 08:18:08|frenchbros why this happen| +08::01::2022 08:18:09|BC Freedom burns, and Marie just eats cake| +08::01::2022 08:18:11|PEASANTS NEED TO LEARN THEIR PLACE| +08::01::2022 08:18:12|So what does management think about this| +08::01::2022 08:18:13|SUN TZU SAID THAT| +08::01::2022 08:18:17|the eternal (((kappa)))| +08::01::2022 08:18:19|UI +08::01::2022 08:18:20|ui! +08::01::2022 08:18:22|Sun Tzu said Baguettes aint good shots either| +08::01::2022 08:18:26|sun tzu said: all warfare is based| +08::01::2022 08:18:27|SUN TZU SAID THAT ALL WARFARE IS BASED| +08::01::2022 08:18:28|ino +08::01::2022 08:18:28|UI +08::01::2022 08:18:29|JE SUIS MONTE| +08::01::2022 08:18:31|welcome to republics| +08::01::2022 08:18:33|SUN TZU SAID THAT| +08::01::2022 08:18:39| +08::01::2022 08:18:40|oui bros...| +08::01::2022 08:18:40|Jesus christ marie is fucking useless| +08::01::2022 08:18:41|So who's in the wrong here?| +08::01::2022 08:18:45|Sun Tzu said : PANZE VOR| +08::01::2022 08:18:45|FAT FUCK| +08::01::2022 08:18:49|AND I THINK HE KNOWS A LIOTTLE MORE ABOUT FIGHTING THAN YOU DO PAL| +08::01::2022 08:18:49|bongs +08::01::2022 08:18:50|and suntzu invented tanks so he know better than you do pal| +08::01::2022 08:18:51|unironically oshida| +08::01::2022 08:18:52|The French deserved to lose this match| +08::01::2022 08:18:53|and from that day forward anytime a bunch of animals are together in one place it's called a TZU| +08::01::2022 08:18:54|mary thighs| +08::01::2022 08:18:54|meawhile back at versailles| +08::01::2022 08:18:56|>tfw no teaparty cake-glutton midget gf| +08::01::2022 08:18:59|THE INTERNATIONAL (((KAPPA)))| +08::01::2022 08:18:59|ETARDS +08::01::2022 08:19:00|CAN'T EVEN KILL AN EARLY WAR FRENCH TANK WITH A LATE WAR FRENCH TANK| +08::01::2022 08:19:01|quick reminder, what does panzer vor mean again anons?????????| +08::01::2022 08:19:05|carbon caoting| +08::01::2022 08:19:07|flexible uoooooooh sooon| +08::01::2022 08:19:09|Dessert cunny..............| +08::01::2022 08:19:12|it means panzer vor| +08::01::2022 08:19:12| +08::01::2022 08:19:15|marie boutta abuse that carbon| +08::01::2022 08:19:16|I can see how the frenchies were irrelevant till now| +08::01::2022 08:19:16|Big tanks got worse aim than the small ones| +08::01::2022 08:19:16|That fat face| +08::01::2022 08:19:17|wwwwww +08::01::2022 08:19:17|I wish she would stomp on my cock like that| +08::01::2022 08:19:17|CUTE FATTY| +08::01::2022 08:19:19|ops +08::01::2022 08:19:19|THE TEAM IS FALLING APART AND MARIE STILL EATS CAKE| +08::01::2022 08:19:21|SACRE BLEU| +08::01::2022 08:19:23|CHOKE ON KEEKI| +08::01::2022 08:19:25|The french some how get good at aiming when shooting each other| +08::01::2022 08:19:30|LE FROG| +08::01::2022 08:19:31|I want to be Maries cushion| +08::01::2022 08:19:32|THATS LIKE HER 4th CAKE ON THIS MATCH HOLY SHIT| +08::01::2022 08:19:32|french-press was a nice touch there| +08::01::2022 08:19:33|GOD Marie is so fucking sexy| +08::01::2022 08:19:33|Athletic french cosplayer| +08::01::2022 08:19:34|IGGLE +08::01::2022 08:19:37|IGGLE +08::01::2022 08:19:38|haha french| +08::01::2022 08:19:38|IGGLE +08::01::2022 08:19:39|CUTE WIGGLE| +08::01::2022 08:19:39|lesbian sex| +08::01::2022 08:19:40|Marie doing her best french high command impression| +08::01::2022 08:19:41|ute +08::01::2022 08:19:41|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX +08::01::2022 08:19:41|WIGGLE WIGGLE| +08::01::2022 08:19:42|MARIE WIGGLE| +08::01::2022 08:19:43|iggle +08::01::2022 08:19:43|UOOOOOOOOOOOOOOOOH ATHLETIC FROG LOLI| +08::01::2022 08:19:43|CUTE WIGGLE| +08::01::2022 08:19:43|jiggle wiggle| +08::01::2022 08:19:45|So limber...| +08::01::2022 08:19:46|nice flip| +08::01::2022 08:19:46|IGGLE +08::01::2022 08:19:49|EEEEEEEEEEX +08::01::2022 08:19:50|this lead to doujin| +08::01::2022 08:19:50|amn +08::01::2022 08:19:50|frog legs| +08::01::2022 08:19:50|JUST FUCK EACH OTHER ALREADY| +08::01::2022 08:19:51|OOOOOOOOOOOOOOOOH +08::01::2022 08:19:51|Marie playing limbo| +08::01::2022 08:19:53|GOAT HERDER| +08::01::2022 08:19:54|oooooh +08::01::2022 08:19:55|>goat herder| +08::01::2022 08:19:55|CORSICAN GOAT HERDER| +08::01::2022 08:19:56|Marie is for lewd acts| +08::01::2022 08:19:56|>these two again| +08::01::2022 08:20:00|high level insults| +08::01::2022 08:20:02|>GOAT HERDER| +08::01::2022 08:20:03|Limbo limbo limbo| +08::01::2022 08:20:04|SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! | +08::01::2022 08:20:04|SO FLEXIBLE| +08::01::2022 08:20:04|damn she's nimble for being 150kg| +08::01::2022 08:20:05|CORSICA IS RIGHTFUL ITALIAN CLAY| +08::01::2022 08:20:11|IF ONLY THEY AIMED AT THE RENAULT| +08::01::2022 08:20:11|SSEEEEEEEEEEEGGGGGGGGGGGGSSSSSSSS +08::01::2022 08:20:13|150 kg| +08::01::2022 08:20:15|DOWN WITH THE BOURBON RESTORATION| +08::01::2022 08:20:16|RETARDED +08::01::2022 08:20:16|SEX LEGS| +08::01::2022 08:20:17|best girl| +08::01::2022 08:20:17|ETARD +08::01::2022 08:20:18|I'm surprised that barrel didn't bend under her weight| +08::01::2022 08:20:18|ANY HIT IN ANY LOCATION WOULD HAVE BEEN A KNOCK OUT| +08::01::2022 08:20:19|I want to see these frogs sex each other| +08::01::2022 08:20:23|oshida retarded| +08::01::2022 08:20:27|senshado makes girls dumb| +08::01::2022 08:20:27|THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS | +08::01::2022 08:20:27|SHIDAAAAAAAAA +08::01::2022 08:20:29|RETARDED +08::01::2022 08:20:36|ruh roh| +08::01::2022 08:20:38|turns out marie's wight is muscle| +08::01::2022 08:20:38|Andou is not so retarded| +08::01::2022 08:20:38|yoom +08::01::2022 08:20:40|AU PAS!!| +08::01::2022 08:20:42|fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck | +08::01::2022 08:20:42|Friendly fire: ON| +08::01::2022 08:20:43|LEFT TANK AIM LEFT| +08::01::2022 08:20:44|frenchies are cutest when they're almost retarded| +08::01::2022 08:20:45|Senshadou makes girls breedable| +08::01::2022 08:20:45|fuck, I'm starting to get tired BUT I WON'T FALL ASLEEP, I CAN THIS| +08::01::2022 08:20:47|rrip ducks| +08::01::2022 08:20:47| +08::01::2022 08:20:48|she's the Kingpin but smol| +08::01::2022 08:20:50|TIME TO KISS| +08::01::2022 08:20:50|rip sodoko| +08::01::2022 08:20:54|Marie ain't got enough chest though. Only thighs. | +08::01::2022 08:20:54|o7 ;_;| +08::01::2022 08:20:55|FRENCH YURI| +08::01::2022 08:20:56|subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subt| +08::01::2022 08:20:56|ndou-kun +08::01::2022 08:20:57|Alas poor Sodoko| +08::01::2022 08:20:58|make-up sex| +08::01::2022 08:20:59|GAY GAY GAY GAY GAY GAY| +08::01::2022 08:20:59|And then they fucked| +08::01::2022 08:20:59|JUST FUCK ALREADY| +08::01::2022 08:20:59|gay frogs| +08::01::2022 08:20:59|SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX | +08::01::2022 08:21:01|kiss kiss kiss kiss kiss| +08::01::2022 08:21:01|AAAAAAAAAAAAAAAAY +08::01::2022 08:21:02|sodoko status: sodomised| +08::01::2022 08:21:03|NOW KISS AND MAKE UP| +08::01::2022 08:21:03|NOW KISS| +08::01::2022 08:21:04|make up sex soon| +08::01::2022 08:21:05|NOW KISS| +08::01::2022 08:21:05|can't believe sodoko died| +08::01::2022 08:21:06|JUST FUCK ALREADY| +08::01::2022 08:21:08|enough you your (((kappa)) trickery| +08::01::2022 08:21:14|GAY FROGS| +08::01::2022 08:21:14|this isn't like the french revolution...| +08::01::2022 08:21:15|::u::fags >>>::out::| +08::01::2022 08:21:19|WHERE ARE MY MARIE THIGHJOB DOUJINS| +08::01::2022 08:21:19|NOW DRAW THEM KISSING| +08::01::2022 08:21:20|ONIONBROS LETS GO| +08::01::2022 08:21:27|::u:: fags >>>>>::in::| +08::01::2022 08:21:29|kino incoming| +08::01::2022 08:21:30|WE CAN STILL WIN THIS BCBROS| +08::01::2022 08:21:32|::u::p +08::01::2022 08:21:34|NOW DRAW HER BEING A GOOD PERSON| +08::01::2022 08:21:41|andou is heterosexual and my wife| +08::01::2022 08:21:42|HERES HOW BC CAN STILL WIN: | +08::01::2022 08:21:42|WHY WASTE SHOTS ON THE HEDGES | +08::01::2022 08:21:43|French apology now = Gonna use a baguette on you later| +08::01::2022 08:21:45|I put $40000 on BC...| +08::01::2022 08:21:46|::u:: ENTER| +08::01::2022 08:21:54|3d kino| +08::01::2022 08:21:55|BC literally cannot lose| +08::01::2022 08:21:55|Battle City.NES| +08::01::2022 08:21:56|FAT ASS| +08::01::2022 08:21:58|>heterosexual >this show| +08::01::2022 08:22:00|NOW DRAW HER BEIGN A GOOD WIFE AND MOTHER| +08::01::2022 08:22:03|Your wife is pretty cute can I have her?| +08::01::2022 08:22:04|Ooaraifags can't stop winning| +08::01::2022 08:22:13|i will commit seppuku if bc lose| +08::01::2022 08:22:14|French chest| +08::01::2022 08:22:18|BC lose when their shitty gunner cant hit a shit on bridge| +08::01::2022 08:22:22|RABBIT TEAM NO| +08::01::2022 08:22:23|hets are losers like saori and arisu| +08::01::2022 08:22:25|Aint enough rump on Marie backside| +08::01::2022 08:22:27|LETS GO BC| +08::01::2022 08:22:28|>m3 quietly jobs| +08::01::2022 08:22:32|ORE +08::01::2022 08:22:38|-some +08::01::2022 08:22:40|exact same frame as when they were on the maus| +08::01::2022 08:22:44|KINO SCENE| +08::01::2022 08:22:45|INO +08::01::2022 08:22:45|I hate the Type-89s firing sound in DF2| +08::01::2022 08:22:46|IT'S KINO TIME| +08::01::2022 08:22:46|onion time| +08::01::2022 08:22:47|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:22:48|dual penetration| +08::01::2022 08:22:49|ino +08::01::2022 08:22:50|AU PAS AU PAS AU PAS| +08::01::2022 08:22:50|Volleyball club jobs| +08::01::2022 08:22:50|ino +08::01::2022 08:22:50|looks like we're going on a trip to corsica BC bros| +08::01::2022 08:22:51|eem +08::01::2022 08:22:51|I LOVE THE ONION| +08::01::2022 08:22:52|INO +08::01::2022 08:22:53|AU PAS CAMARADES| +08::01::2022 08:22:53|KINO TIME| +08::01::2022 08:22:54|j'aime l'oingon| +08::01::2022 08:22:55|I RABBU ONION| +08::01::2022 08:22:56|peen +08::01::2022 08:22:56|AU PAS CAMARADES| +08::01::2022 08:22:57|ONION BROS STAND UP| +08::01::2022 08:22:57|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:22:58|not the ducks...| +08::01::2022 08:22:59|J'AIME L'OIGNON| +08::01::2022 08:22:59|AU PAS| +08::01::2022 08:23:00|ONIONS +08::01::2022 08:23:01|cope song.mp3| +08::01::2022 08:23:03|NOOOO NO MORE ONIONS PLEASE| +08::01::2022 08:23:03|ONION +08::01::2022 08:23:04|AU PAS AU PAS AU PAS| +08::01::2022 08:23:04|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:23:05|I LOVE THE ONION| +08::01::2022 08:23:05|LE SINGING| +08::01::2022 08:23:06|I HATE THE ONION| +08::01::2022 08:23:07|EAT THE ONIONS| +08::01::2022 08:23:07|last aus pas| +08::01::2022 08:23:09|ONION TIME AGAIN| +08::01::2022 08:23:09|I LOVE THE ONION| +08::01::2022 08:23:10|LETS GO ONION BROS WE CAN WIN THIS| +08::01::2022 08:23:10|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:23:10| AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD | +08::01::2022 08:23:12|Frog bros maybe we can do it| +08::01::2022 08:23:12|Frenchies, I-I kneel| +08::01::2022 08:23:13|ducks jobbed fucking bullshit| +08::01::2022 08:23:13|PLEASE MARIE-SAMA NO MORE ONIONS AIIEEEEE| +08::01::2022 08:23:13|J'aime l'oignon!!!| +08::01::2022 08:23:14|OPE +08::01::2022 08:23:15|I WILL EAT THE ONION| +08::01::2022 08:23:16|WE GOT THIS ONIONBROS| +08::01::2022 08:23:16|they got a lot better at pronouncing french| +08::01::2022 08:23:16|ONE OF THE BEST SCENES| +08::01::2022 08:23:16|mbarassing +08::01::2022 08:23:16|AU PAS AU PAS AU PAS | +08::01::2022 08:23:17|J'aime l'oignon| +08::01::2022 08:23:18|Is singing really smart when you're getting assraped| +08::01::2022 08:23:20|AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +08::01::2022 08:23:20|AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE | +08::01::2022 08:23:20|WE HAVE YOU SURROUNDED COME OUT AND EAT YOUR ONIONS | +08::01::2022 08:23:21|AUS PAS AUS PAS AUS PAS| +08::01::2022 08:23:22|AU PAS CAMARADES| +08::01::2022 08:23:22|ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +08::01::2022 08:23:22|Fried onions are the best| +08::01::2022 08:23:23|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:23:25|I forgot about this kino| +08::01::2022 08:23:26|chant le incantantion honhonhon| +08::01::2022 08:23:27|that whirring sound scared the shit out of me| +08::01::2022 08:23:27|NIONS +08::01::2022 08:23:28|ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +08::01::2022 08:23:28|yeah sing about cumraids after wiping half your own forces| +08::01::2022 08:23:30|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:23:33|AU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADES| +08::01::2022 08:23:35|ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +08::01::2022 08:23:36|they are french!| +08::01::2022 08:23:36|CAMARADES doko?| +08::01::2022 08:23:38|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:23:39|I LOVE THE ONION| +08::01::2022 08:23:39|OIGNON +08::01::2022 08:23:42|I LOVE THE ONION| +08::01::2022 08:23:42|O N I O N S| +08::01::2022 08:23:43|Time to conquer half of europe| +08::01::2022 08:23:43|I WANT TO DIE PROTECTING MY COUNTRY AND DIE WHILE SINGING| +08::01::2022 08:23:45|STUG LIFE| +08::01::2022 08:23:45|ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +08::01::2022 08:23:45|J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +08::01::2022 08:23:47|AU PAS| +08::01::2022 08:23:47|Onions +08::01::2022 08:23:48|>ONIONS SAUCE| +08::01::2022 08:23:49|AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +08::01::2022 08:23:50|Au pas camarades| +08::01::2022 08:23:52|AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +08::01::2022 08:23:52|AU PAS AU PAS AU PAS| +08::01::2022 08:23:52|AU PAS AU PAS AU PAS| +08::01::2022 08:23:53|AU PAS AU PAS AU PAS| +08::01::2022 08:23:54|AU PAS CAMARADES AU PAS AU PAS AU PAN| +08::01::2022 08:23:55|AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE | +08::01::2022 08:23:55|AU PAS AU PAS AU PAS| +08::01::2022 08:23:56|singing onion ain't gonna make ya win | +08::01::2022 08:23:57|oppai camarades oppai camarades oppai camarades oppai camarades oppaioppaioppaioppai| +08::01::2022 08:23:58|Austrians don't deserve onions| +08::01::2022 08:23:58|AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +08::01::2022 08:23:58|AU PAS AU APAS| +08::01::2022 08:23:58| +08::01::2022 08:23:58|AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +08::01::2022 08:23:59|sticking an onion up your butt| +08::01::2022 08:23:59|INO +08::01::2022 08:23:59|AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +08::01::2022 08:24:00|AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES | +08::01::2022 08:24:01|ppai +08::01::2022 08:24:01|AU PAS CAMARADES AU PAS AU PAS AU PAN| +08::01::2022 08:24:01|ndoubros... +08::01::2022 08:24:01|AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +08::01::2022 08:24:01|AU PAS CAMARADES| +08::01::2022 08:24:02|And then there was one| +08::01::2022 08:24:04|ppai +08::01::2022 08:24:04|AU PAS CAMARADES AU PAS AU PAS AU PAN| +08::01::2022 08:24:04|INO +08::01::2022 08:24:05|AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +08::01::2022 08:24:06|AU PAS AU PAS AU PAS | +08::01::2022 08:24:06|AUS PAS AUS PAS AUS PAS| +08::01::2022 08:24:07|Au PAS!!!| +08::01::2022 08:24:08|she bouta get fucked| +08::01::2022 08:24:09|AU PAS CAMARADE| +08::01::2022 08:24:09|AU PAS AU PAS AU PAS| +08::01::2022 08:24:10|AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +08::01::2022 08:24:11|AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +08::01::2022 08:24:12|_; +08::01::2022 08:24:12|THE KINO SOLE SINGER| +08::01::2022 08:24:12|LETS GO ONION CHADS| +08::01::2022 08:24:12|AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +08::01::2022 08:24:13|AU PAS CAMARADES AU PAS AU PAS AU PAS| +08::01::2022 08:24:13|AU PAS CAMARADE AU PAS CAMARADE AU PAS AU PAS AU PAS AU PAS CAMARADE AU PAS CAMARADE AU PAS AU PAS AU PAS | +08::01::2022 08:24:14|PPA +08::01::2022 08:24:14|Onion song too catchy, they synched Miho mouth to the lyrics| +08::01::2022 08:24:15|AU PAS AU PAS AU PAS| +08::01::2022 08:24:17|AU PAS CAMARADES AU PAS AU PAS AU PAS| +08::01::2022 08:24:18|SACRE BLEU!| +08::01::2022 08:24:18|PEAK GUP KINO| +08::01::2022 08:24:19|AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +08::01::2022 08:24:20|AU PAS AU PAS AU PAS| +08::01::2022 08:24:20|onk +08::01::2022 08:24:20|It's... over| +08::01::2022 08:24:23|frog asmr| +08::01::2022 08:24:24|ONK +08::01::2022 08:24:26|_;7 +08::01::2022 08:24:26|carbon coating| +08::01::2022 08:24:26|I don't think the renault can kill that from behind| +08::01::2022 08:24:26|of fuggg| +08::01::2022 08:24:27|>2jz sounds| +08::01::2022 08:24:27|;-;7 rip fatty| +08::01::2022 08:24:27|not liek this...| +08::01::2022 08:24:27|owari da| +08::01::2022 08:24:28|EAD +08::01::2022 08:24:29|Frog bros....| +08::01::2022 08:24:29|oh fuck| +08::01::2022 08:24:29|871 +08::01::2022 08:24:30| +08::01::2022 08:24:30|_; +08::01::2022 08:24:30|TFO +08::01::2022 08:24:31|ERDE +08::01::2022 08:24:32|7 +08::01::2022 08:24:32| +08::01::2022 08:24:33|dumb baka| +08::01::2022 08:24:33|poor little french girl| +08::01::2022 08:24:34|ONION BROS…..| +08::01::2022 08:24:34|7 +08::01::2022 08:24:35|IP +08::01::2022 08:24:35|ERDE +08::01::2022 08:24:35|CARBON COATED MARIE| +08::01::2022 08:24:36|LOCKED +08::01::2022 08:24:36|EAD +08::01::2022 08:24:36|_;7 +08::01::2022 08:24:37|ERDE +08::01::2022 08:24:37|EAD +08::01::2022 08:24:38|the french heroic sacrifices here are prettty kino| +08::01::2022 08:24:39|last meal| +08::01::2022 08:24:39|_;7 +08::01::2022 08:24:40|>carbon cake| +08::01::2022 08:24:40|7 +08::01::2022 08:24:40|not the fifth cake....| +08::01::2022 08:24:41|ERE +08::01::2022 08:24:42|RIP Marie| +08::01::2022 08:24:42|ed +08::01::2022 08:24:43|_;7 +08::01::2022 08:24:43|FRANCE HAS CAPITULATED| +08::01::2022 08:24:44|can't believe marie die| +08::01::2022 08:24:44|She could have died| +08::01::2022 08:24:44|piratebros... WE WON| +08::01::2022 08:24:44|let 'em eat cake| +08::01::2022 08:24:45|Welp cake time| +08::01::2022 08:24:45|she should have surrendered| +08::01::2022 08:24:46|WE WERE SO CLOSE BC-BROS| +08::01::2022 08:24:46|time for celebratory frog rape| +08::01::2022 08:24:46|UCE +08::01::2022 08:24:47|cARBON COATED CAKE| +08::01::2022 08:24:47|Not even close!| +08::01::2022 08:24:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:24:47|GAY FROGS CAN'T BEAT PLOT ARMOR| +08::01::2022 08:24:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 08:24:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 08:24:50|they won again, who would've guessed?| +08::01::2022 08:24:50|RETARDED ITALIANS| +08::01::2022 08:24:51|ERDE +08::01::2022 08:24:51|UCE +08::01::2022 08:24:51|I just want to have sex with Marie...| +08::01::2022 08:24:51|what did they sing for| +08::01::2022 08:24:52|anzio be like| +08::01::2022 08:24:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:24:53|These girls are all Japanese*| +08::01::2022 08:24:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:24:53|UCE +08::01::2022 08:24:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:24:54|MOMO LOVE| +08::01::2022 08:24:55|UCE +08::01::2022 08:24:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:24:56|DUCE DUCE DUCE| +08::01::2022 08:24:57|Holy shit shark team missed at that range| +08::01::2022 08:24:57|UCE +08::01::2022 08:24:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:24:57|ISISISISISISISI +08::01::2022 08:24:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:24:57|VCE +08::01::2022 08:24:58|SLEEPY ITALIANS| +08::01::2022 08:24:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:24:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:25:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:25:03|Shitalians sleep through the match again| +08::01::2022 08:25:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:25:06|OPEN FIELD ORGY| +08::01::2022 08:25:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:25:09|Duce tents| +08::01::2022 08:25:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:25:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:25:11|HOLD YOUR DUCE| +08::01::2022 08:25:15|SHE CRIED AT FRANCE'S WEAKNESS| +08::01::2022 08:25:16|Based Duce spam| +08::01::2022 08:25:19|Did they coat Marie in carbon before the match| +08::01::2022 08:25:21|need more chamicals in the water| +08::01::2022 08:25:24|what 1 frame of DVCE does to a mf| +08::01::2022 08:25:25|premature duce'ing| +08::01::2022 08:25:30|"cooperating" "cooperating" "cooperating" "cooperating" "cooperating" | +08::01::2022 08:25:31|UTE +08::01::2022 08:25:32|bc will never win championship| +08::01::2022 08:25:33|CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SH| +08::01::2022 08:25:37|Look at those tiddies| +08::01::2022 08:25:38|Asumi's asumis| +08::01::2022 08:25:40|Drop a deuce in Duce's tent.| +08::01::2022 08:25:42|EVOLUTION +08::01::2022 08:25:44|CUTE FATTY| +08::01::2022 08:25:44|shit frogs| +08::01::2022 08:25:44|Setting up for the French redemption in the next series!| +08::01::2022 08:25:46|SHE ATE LIKE 5 CAKES DURING THE MATCH| +08::01::2022 08:25:46|Marie didn't learn anything| +08::01::2022 08:25:48|Duce means poop!| +08::01::2022 08:25:50|fat fuck| +08::01::2022 08:25:50|>AT THE TIME THIS WAS MADE THE BOGS WERE STILL ALIVE| +08::01::2022 08:25:51|BIG HATS| +08::01::2022 08:25:52|ex +08::01::2022 08:25:52|YELLOW TEXT MARKED FOR DECIMATION| +08::01::2022 08:25:52|MARIE IS A FEEDER| +08::01::2022 08:25:53|mako seiyuu on crack| +08::01::2022 08:25:55|SEX WITH MARIE| +08::01::2022 08:25:55|let them eat cake| +08::01::2022 08:25:56|AT +08::01::2022 08:26:01|tl note, revolution means hatefuck| +08::01::2022 08:26:05|AMERS +08::01::2022 08:26:05|>Create a loveable underdog >Have Ooarai beat them| +08::01::2022 08:26:05|GAYMERS RISE UP| +08::01::2022 08:26:06|if she were fat she wouldn't share| +08::01::2022 08:26:10|::v::ermin +08::01::2022 08:26:10|erds +08::01::2022 08:26:10|lmao cleaning her fingers on her clothes| +08::01::2022 08:26:11|yaa +08::01::2022 08:26:12|Why do the losers feed the winners, is it like Pokemon where if you beat up a kid they give you money?| +08::01::2022 08:26:12|GAYMERS LETS GOOOOOOOOOO| +08::01::2022 08:26:12|NOOOOOOOOOOOOO +08::01::2022 08:26:12|funny tank game haha nyaaa| +08::01::2022 08:26:13|YAA +08::01::2022 08:26:20|flint so cute| +08::01::2022 08:26:22|She wants others to be fat| +08::01::2022 08:26:24|BASED FISHERWOMEN| +08::01::2022 08:26:25|Front Line was a great game fr| +08::01::2022 08:26:25|Fuck pirates| +08::01::2022 08:26:25|is it teibou tuesday yet?| +08::01::2022 08:26:26|urn +08::01::2022 08:26:28|>create a loveable underdog| +08::01::2022 08:26:28|kino bottle sounds| +08::01::2022 08:26:29|BULLY THE RABBITS| +08::01::2022 08:26:31|wtf they gonna catch there| +08::01::2022 08:26:31|UTE +08::01::2022 08:26:31|Do not bully the rabbits| +08::01::2022 08:26:32|EAT THE RABBITS| +08::01::2022 08:26:32|bunny cunnies...| +08::01::2022 08:26:34|based bullying| +08::01::2022 08:26:34|Maries fetish is chubby tummies and thicc thighs| +08::01::2022 08:26:35|saki smile| +08::01::2022 08:26:36|Fishing in a lifeboat| +08::01::2022 08:26:36|TEIBOU TUESDAY BOYS| +08::01::2022 08:26:37|>have slags beat them| +08::01::2022 08:26:37|>ankou fishing| +08::01::2022 08:26:37|Dumb rabbits| +08::01::2022 08:26:39|based hazing| +08::01::2022 08:26:40|TL Note: "Anzu" means "SEX".| +08::01::2022 08:26:41|AZA +08::01::2022 08:26:44|THANKS TL| +08::01::2022 08:26:45|rabbits deserve it| +08::01::2022 08:26:46|BULLY ALL THE CUNNIES| +08::01::2022 08:26:46|Anzu eating| +08::01::2022 08:26:48|nzu +08::01::2022 08:26:49|this will seriously impact the trout population| +08::01::2022 08:26:50|THANKS TL| +08::01::2022 08:26:50|>PRICE NEGOTIABLE| +08::01::2022 08:26:50|thanks tl| +08::01::2022 08:26:50|Ty TL| +08::01::2022 08:26:53|"Price Negotiable"| +08::01::2022 08:26:54|Is this Slow Loop?| +08::01::2022 08:26:55|DO YOU LIKE MY CAR| +08::01::2022 08:26:56|they bought a fucking car????| +08::01::2022 08:26:57|amui +08::01::2022 08:26:57|What even is that car?| +08::01::2022 08:26:58|do the girls come with the car| +08::01::2022 08:27:00|Cutlass caught something at least| +08::01::2022 08:27:01|LOOF +08::01::2022 08:27:02|I KNOW WHAT I GOT NO LOWBALLERS| +08::01::2022 08:27:04|My first time watching DF2 since release| +08::01::2022 08:27:05|DATE TIME| +08::01::2022 08:27:09|OKOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 08:27:09|FLOOF IS TOO CUTE| +08::01::2022 08:27:12|DATE WITH LOLI| +08::01::2022 08:27:12|OKO +08::01::2022 08:27:13|OKO?! +08::01::2022 08:27:13|oT +08::01::2022 08:27:15|OKO +08::01::2022 08:27:15|BOKO AUTISM| +08::01::2022 08:27:15|autism date| +08::01::2022 08:27:15|EITO?!?!?!?!?! +08::01::2022 08:27:17|mako taberu| +08::01::2022 08:27:17|CUTE DATE| +08::01::2022 08:27:18|AETO? +08::01::2022 08:27:19|OKO +08::01::2022 08:27:19|ANBAAREEE!@!@! +08::01::2022 08:27:19|BOKO BOKO BOKO BOKO| +08::01::2022 08:27:19|BOKO BROS| +08::01::2022 08:27:20|GANBARE BOKO!| +08::01::2022 08:27:20|EITO +08::01::2022 08:27:20|BOKO BROS WE WILL WIN THIS TIME FOR SURE| +08::01::2022 08:27:21|GANBARE BOKO| +08::01::2022 08:27:21|GIVE BOKO YOUR ENERGY BROS| +08::01::2022 08:27:21|BOKO HARAM AUTISM| +08::01::2022 08:27:21|BOKO ABUNAI| +08::01::2022 08:27:22|Dumb Boco.| +08::01::2022 08:27:22|OKO +08::01::2022 08:27:22|GANBARE BOKO| +08::01::2022 08:27:23|OKO +08::01::2022 08:27:23|YATTE YARU YATTE YARU YATTE YARUZE| +08::01::2022 08:27:25|OKOO +08::01::2022 08:27:26|boko world irl when?| +08::01::2022 08:27:26|OKOOOOOO +08::01::2022 08:27:26|BOKO OIRA DAZEEE| +08::01::2022 08:27:26|boko if he real| +08::01::2022 08:27:27|FUCK CHINA FUCK CHINA FUCK CHINA| +08::01::2022 08:27:29|kek a rabid dog| +08::01::2022 08:27:30|boko ;_;| +08::01::2022 08:27:31|GANBARE BOCO| +08::01::2022 08:27:31|UNCHY +08::01::2022 08:27:32|GANBARE BOKO| +08::01::2022 08:27:33|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 08:27:33|BOKO GANG BOKO GANG BOKO GANG| +08::01::2022 08:27:33|GANBARE BOKO!| +08::01::2022 08:27:33|BOKO \o::| +08::01::2022 08:27:34|JOBBER BOKO| +08::01::2022 08:27:34|eet +08::01::2022 08:27:35|bokofags are mentally ill| +08::01::2022 08:27:35|GANBARE BOKOOOOOOO| +08::01::2022 08:27:35|ANBARE +08::01::2022 08:27:37|FUCK EM UP BOKO!| +08::01::2022 08:27:38|GANBARE BOKO| +08::01::2022 08:27:38|GANBARE BOKO \o::| +08::01::2022 08:27:38|RIP BOKO BOZO| +08::01::2022 08:27:39|FUCK EM UP BOKO| +08::01::2022 08:27:39|Boko ost | +08::01::2022 08:27:39|AUTISIM POWERS ACTIVATE| +08::01::2022 08:27:41|AUTISISM: ON| +08::01::2022 08:27:41|ANBARE!!!! +08::01::2022 08:27:41|POV U R BOKO| +08::01::2022 08:27:42|BOKO GANBARE| +08::01::2022 08:27:42|utism +08::01::2022 08:27:42|God I wish that were me| +08::01::2022 08:27:42|ANBARE +08::01::2022 08:27:43|>the game where the only winning move is to lose| +08::01::2022 08:27:43|how hard is Miho right now?| +08::01::2022 08:27:43|o?\ +08::01::2022 08:27:44|I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOV| +08::01::2022 08:27:44|GANBARE BOKO | +08::01::2022 08:27:45|POV: You are an Arisu fan| +08::01::2022 08:27:45|ANBARE! +08::01::2022 08:27:45|autism mode| +08::01::2022 08:27:46|Boko is Saunders| +08::01::2022 08:27:49|Curb stomped| +08::01::2022 08:27:50|I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP | +08::01::2022 08:27:50| 張れボコ +08::01::2022 08:27:51|ANBARE! +08::01::2022 08:27:53|ATA!!! +08::01::2022 08:27:54|\o:: GANBARE \o::| +08::01::2022 08:27:55|RIP BOKO| +08::01::2022 08:27:56|Imagine smelling Arisu's hair| +08::01::2022 08:27:56|GANBARE BOKO| +08::01::2022 08:27:56|I LOVE THE CCP | +08::01::2022 08:27:56|WF +08::01::2022 08:27:57|BEAT THE SHIT OUT OF HIM BOKO| +08::01::2022 08:27:57|yonaGODs.... +08::01::2022 08:27:58|wF +08::01::2022 08:27:59|LETS GO BOKO!| +08::01::2022 08:28:00|ANBAREEEEEEEEEEE +08::01::2022 08:28:01|HANG IN THERE BOKO| +08::01::2022 08:28:04|BOKO LETS GO BOKO| +08::01::2022 08:28:05|lotherslined +08::01::2022 08:28:05|>muh WWF| +08::01::2022 08:28:06|WWF +08::01::2022 08:28:07|anzers...? +08::01::2022 08:28:08|So these two are the subs in an abusive dyke relationship right?| +08::01::2022 08:28:09|FUCK EM UP BOKO!| +08::01::2022 08:28:09|WWF +08::01::2022 08:28:11|FUCKING JOBBER| +08::01::2022 08:28:11|FUCK UM UP BOKO| +08::01::2022 08:28:12|WF +08::01::2022 08:28:14|WWF +08::01::2022 08:28:15|oko... +08::01::2022 08:28:15|What does Alice smell like, bros?| +08::01::2022 08:28:17|m-muh WWF| +08::01::2022 08:28:19|FUCK CHINA FUCK CHINA FUCK CHINA| +08::01::2022 08:28:19|CHINA WINS YET AGAIN| +08::01::2022 08:28:20|Get curb stomped Boko| +08::01::2022 08:28:21|ANBAREEEEE!! +08::01::2022 08:28:23|I WANT TO NIBBLE ON ARISU'S HAIR| +08::01::2022 08:28:24|Smells like Boko| +08::01::2022 08:28:26|Did he died| +08::01::2022 08:28:27|You'll get him next time boko| +08::01::2022 08:28:27|GANBARE BOOOOKOOOOOOO| +08::01::2022 08:28:27|KAMINARI INAKUNARE!| +08::01::2022 08:28:28|Boko jobs harder than Katyusha wtf| +08::01::2022 08:28:29|FUCK OFF LIGHTNING| +08::01::2022 08:28:31|KAMINARI INAKURARE| +08::01::2022 08:28:31|LOOK HOW FUCKING HAPPY MIHO IS BROS| +08::01::2022 08:28:32|GIVE BOKO YOUR ENERGY| +08::01::2022 08:28:33|o:: +08::01::2022 08:28:34|NAKUNARE +08::01::2022 08:28:34|GO AWAY| +08::01::2022 08:28:34|Two boku sexuals| +08::01::2022 08:28:35|KAMINARI INAKUNARE| +08::01::2022 08:28:35|FUCK OFF LIGHTNING| +08::01::2022 08:28:36|OOOOOOOOOOOOOO +08::01::2022 08:28:36|FUCK OFF LIGHTNING| +08::01::2022 08:28:36|>scare the lightning| +08::01::2022 08:28:37|GO AWAY | +08::01::2022 08:28:37|>trying to go against the WWE rigging| +08::01::2022 08:28:38|o:: +08::01::2022 08:28:38|KAMINARI INAKUNARE| +08::01::2022 08:28:39|GO AWAY. LIGHTNING| +08::01::2022 08:28:39|FUCK YOU LIGHTNING| +08::01::2022 08:28:39|\o:: GANBARE \o::| +08::01::2022 08:28:40|OKOMOTION +08::01::2022 08:28:40|KAMINARI INAKUNARI!!!| +08::01::2022 08:28:40| +08::01::2022 08:28:41|GO AWAY LIGHTNING| +08::01::2022 08:28:41|WE DID IT FRENS| +08::01::2022 08:28:42|TAKE MY ENERGY BOKO| +08::01::2022 08:28:43|GO AWAY!!!!| +08::01::2022 08:28:44|imagine the after boko show sex| +08::01::2022 08:28:44|okomotion! +08::01::2022 08:28:45|OKOMOTION +08::01::2022 08:28:46|OKOMOTION +08::01::2022 08:28:46|OKOMOTION +08::01::2022 08:28:48|Give BOKO your energy \o::| +08::01::2022 08:28:48|YOU CAN THIS| +08::01::2022 08:28:49|:D :D| +08::01::2022 08:28:50|D +08::01::2022 08:28:51|BOKO NOOO| +08::01::2022 08:28:51|BOKO KAKKOI| +08::01::2022 08:28:52|Someone actually has to wear the boko costume if it's live action| +08::01::2022 08:28:52|OKOMOTION +08::01::2022 08:28:53|PRAY THE LIGHTING AWAY| +08::01::2022 08:28:53|when the punchy spirit?| +08::01::2022 08:28:54| +08::01::2022 08:28:54|OKO!?!?!?!!?!? +08::01::2022 08:28:55| +08::01::2022 08:28:55|OKOBROS..... +08::01::2022 08:28:55|lighting OP pls nerf| +08::01::2022 08:28:56|OOOOOOO +08::01::2022 08:28:56|OKOMOTION +08::01::2022 08:28:56| +08::01::2022 08:28:56|safe +08::01::2022 08:28:56|Bokomotion is what I do with Arisu every night| +08::01::2022 08:28:57|okodead +08::01::2022 08:28:57|OKOMOTION!!! +08::01::2022 08:28:58|IT HAS A SKELETON. IT'S ALIVE| +08::01::2022 08:28:59|ute +08::01::2022 08:28:59|OOOOOOOOOOOOO +08::01::2022 08:28:59|FUCKING LIGHTNING| +08::01::2022 08:29:02|OCONTAIN +08::01::2022 08:29:03|ANBARE! +08::01::2022 08:29:04|FUCK YOU LIGHTNING| +08::01::2022 08:29:05|BOKO NOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 08:29:06|Thanks ride lady| +08::01::2022 08:29:07|ORG +08::01::2022 08:29:08|BOKO BURGA| +08::01::2022 08:29:09|when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? | +08::01::2022 08:29:09|>boko burger| +08::01::2022 08:29:11|EATING BOKO| +08::01::2022 08:29:12|BOKO BURGA| +08::01::2022 08:29:13|ELLI +08::01::2022 08:29:13|OKOBURGER +08::01::2022 08:29:14|alice's mom is paying all of these people| +08::01::2022 08:29:14|I want that Boko hat.| +08::01::2022 08:29:14|HOLY FUCK| +08::01::2022 08:29:14|Christmas date| +08::01::2022 08:29:15|These two are keeping this place in busiiness| +08::01::2022 08:29:16|HEY TL. WHAT DOES BOKOMOTION MEAN????????| +08::01::2022 08:29:17|OKOBURGER +08::01::2022 08:29:17|boko burg| +08::01::2022 08:29:17|who pays for these boko museums| +08::01::2022 08:29:19|>miho and arisu singlehandedly keeping boko park in business| +08::01::2022 08:29:19|what is operation punchy?| +08::01::2022 08:29:19|I can't believe they ate boko| +08::01::2022 08:29:21|taking Miho on a date to the Boko museum...| +08::01::2022 08:29:22|This doesn't seem very profitable| +08::01::2022 08:29:22|LOLI HAET BORGER| +08::01::2022 08:29:24|tl note, punchy means boko| +08::01::2022 08:29:26|bokomotion means lesbian sex| +08::01::2022 08:29:27|holy fuck are those people on the boko museum besides Alice and Miho| +08::01::2022 08:29:28|boko brand pregnancy test| +08::01::2022 08:29:29|Bokomotion means Panzer Vor| +08::01::2022 08:29:30|UTE +08::01::2022 08:29:31|ORGER +08::01::2022 08:29:33|Boko only surviving due to 2 customers| +08::01::2022 08:29:35|ANAL PASSPORT| +08::01::2022 08:29:36|UNTIL YOU LEARN ITS OPERATION PUNCHY!!!!!!!!!!!!!| +08::01::2022 08:29:37|UTE +08::01::2022 08:29:38|tl note Boko means Nakadashi inside Arisu| +08::01::2022 08:29:38|What does she smell liike bros?| +08::01::2022 08:29:40|CUNNY CUNNY CUNNY CUNNY| +08::01::2022 08:29:40|WAS THAT A MA| +08::01::2022 08:29:40|>SAVED UP MONEY. YOUR MOTHER OWNS THIS PLACE| +08::01::2022 08:29:44|GOD I WISH I WAS DATING HER| +08::01::2022 08:29:45|WAS THAT A MAN| +08::01::2022 08:29:45|BOKOING MIHOS WOMB| +08::01::2022 08:29:46|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +08::01::2022 08:29:46|BOKO NAIZURI| +08::01::2022 08:29:50|I WANT TO COMMIT A CRIME| +08::01::2022 08:29:52|other boko fans rise up| +08::01::2022 08:29:53|i WANT TO BOKO BOKO'S BOKOS| +08::01::2022 08:29:54|Alice is built for mating press| +08::01::2022 08:29:54|anon, that was takashi| +08::01::2022 08:30:02|boco suviving off of alice's nepotism| +08::01::2022 08:30:03|Takeshi no| +08::01::2022 08:30:03|THE HEAT COOKS THE EGG| +08::01::2022 08:30:04|Yet another series they have set up| +08::01::2022 08:30:05|Takashi isn't real Arisa| +08::01::2022 08:30:06|>those background posters| +08::01::2022 08:30:06|THE FOREHEAD| +08::01::2022 08:30:06|oh shit the comfy bgm| +08::01::2022 08:30:07|UKUDA +08::01::2022 08:30:07|WHY ARE THEY COOKING MY CUM| +08::01::2022 08:30:07|segggs with whole volley| +08::01::2022 08:30:08|otsucunny.... +08::01::2022 08:30:11|ducks best team akebi best duck| +08::01::2022 08:30:14|CUTE ONAHOLE| +08::01::2022 08:30:15|f o r e h e a d| +08::01::2022 08:30:15|AEKO +08::01::2022 08:30:16|There's other customers in the background of Boko land?| +08::01::2022 08:30:18|TN: The heat from the griddle cooks the egg| +08::01::2022 08:30:18|foreheads +08::01::2022 08:30:18|honorary duck is comf| +08::01::2022 08:30:19|FUCKUCHAN UOOOOOH| +08::01::2022 08:30:21|based volleyball squad| +08::01::2022 08:30:21|I WANT TO FUCK THE SMOL-TOJO| +08::01::2022 08:30:21|cute boy and his harem| +08::01::2022 08:30:23|Fried vomit.| +08::01::2022 08:30:24|nine and a half hours in bros| +08::01::2022 08:30:25|aku-san +08::01::2022 08:30:26|fukuda added on boy harem| +08::01::2022 08:30:29|TRACKSUIT TAEKO| +08::01::2022 08:30:32|Japanese portions| +08::01::2022 08:30:33|ISGUSTAN +08::01::2022 08:30:34|The heat from my erection cooks the rice.| +08::01::2022 08:30:35|Thanks for the grub| +08::01::2022 08:30:35|TRONG +08::01::2022 08:30:37|ORIKO<3 +08::01::2022 08:30:38|E-ARIMASU +08::01::2022 08:30:40|BOCARDI +08::01::2022 08:30:42|Coach got no volleyballs of her own though| +08::01::2022 08:30:43|assam, i need you to solve boko lore - darj | +08::01::2022 08:30:45|BACKGROUND KATYUSHA PROPAGANDA| +08::01::2022 08:30:46|noriko's younger brother| +08::01::2022 08:30:47|You telling me a shrimp fried this vomit?| +08::01::2022 08:30:49|cute IJA| +08::01::2022 08:30:52|ivehead +08::01::2022 08:30:52|SHE KNEELS| +08::01::2022 08:30:56|IMAGINE HOW FUN IT WOULD BE| +08::01::2022 08:30:57|OOBA +08::01::2022 08:30:57|OTSUGEKI +08::01::2022 08:30:59|UTTS +08::01::2022 08:31:00|rz +08::01::2022 08:31:01|NIP ROUND GLASSES| +08::01::2022 08:31:02|OTSUGEKI? +08::01::2022 08:31:02|NORIKO'S BUTT| +08::01::2022 08:31:03|GARUPAN BOOBA| +08::01::2022 08:31:06|OTSUGEKI +08::01::2022 08:31:07|akebi's big eyes and big akebis| +08::01::2022 08:31:07|dard needs the best boko quotes| +08::01::2022 08:31:07|KRANKY's advice GIT GUD| +08::01::2022 08:31:08|SOME KIND OF NEW TOTSUGEKI| +08::01::2022 08:31:08|OTSUGEGKI +08::01::2022 08:31:08|VOLLEYBALL TEAM, I KNEEL| +08::01::2022 08:31:11|OOOOBBAAAAA +08::01::2022 08:31:12|Pulling on her plaits while you slam her!| +08::01::2022 08:31:13|TOTSUGEKI TOTSUGEKI TOTSUGEKI| +08::01::2022 08:31:15|FOOD ANALOGIES| +08::01::2022 08:31:17|OSS +08::01::2022 08:31:17|I fucking hate that child| +08::01::2022 08:31:18|OSS +08::01::2022 08:31:21|ossu! +08::01::2022 08:31:25|OSS +08::01::2022 08:31:25|looks live vomit| +08::01::2022 08:31:27|>lets not think of a plan, let's just eat || ah yeah, the Marie| +08::01::2022 08:31:28|fuu fuu| +08::01::2022 08:31:28|TONY KAKU| +08::01::2022 08:31:30|onaji demo| +08::01::2022 08:31:34|delicious vomit| +08::01::2022 08:31:35|TONY KAKU| +08::01::2022 08:31:36|why give advice to your enemy| +08::01::2022 08:31:38|>BIG BRAIN TIME| +08::01::2022 08:31:46|volleybutts playing with their food| +08::01::2022 08:31:47|eat your vomit, apollo| +08::01::2022 08:31:49|akebi is so perfect| +08::01::2022 08:31:49|who's tony and why he's kaku| +08::01::2022 08:31:50|Fucking Australians | +08::01::2022 08:31:52|>BIG BRAIN || MORE LIKE BIG FOREHEAD| +08::01::2022 08:31:52|There's no way it's a Koala right guys?| +08::01::2022 08:31:52|>FUCKING AUSSIE CUNTS M8| +08::01::2022 08:31:53|I HATE AUSTRALIANS SO GOD DAMN MUCH| +08::01::2022 08:31:53|>THE UPSIDEDOWN PEOPLE| +08::01::2022 08:31:53|GOD I HATE AUSTRALIANS| +08::01::2022 08:31:54|OCORDI +08::01::2022 08:31:54|AUSTRALIA BROS| +08::01::2022 08:31:55|TRAYA +08::01::2022 08:31:55|fucking kangaroos| +08::01::2022 08:31:55|KOALA CHADS REPORT IN| +08::01::2022 08:31:56|AUSCHADS WHERE WE AT| +08::01::2022 08:31:57|USSIES +08::01::2022 08:31:57|Is the Koala a girl too?| +08::01::2022 08:31:57|USSIES +08::01::2022 08:31:59|TAEKO IS SO CUTE| +08::01::2022 08:31:59|FACK OFF CUNT| +08::01::2022 08:32:00|aussies +08::01::2022 08:32:00|Now toss a shell like those gamer girls| +08::01::2022 08:32:00|aussies +08::01::2022 08:32:00|OI CUNT| +08::01::2022 08:32:01|A FUCKING KOALA| +08::01::2022 08:32:02|KOALA CHADS| +08::01::2022 08:32:03|STRAYA MATE| +08::01::2022 08:32:03|fucking aussies| +08::01::2022 08:32:03|AUSTRALIANS ARE RUINING SENSHADO| +08::01::2022 08:32:04|OALABROS +08::01::2022 08:32:04|based shitposter| +08::01::2022 08:32:04|UNT +08::01::2022 08:32:05|its +08::01::2022 08:32:05|>Having the dumbest animal on the planet as your commander| +08::01::2022 08:32:05|BASED KOALA CUNTS| +08::01::2022 08:32:06|FACKING JAPS| +08::01::2022 08:32:06|owalla +08::01::2022 08:32:06|AUSFAGS RISE UP| +08::01::2022 08:32:06|i hate australians so much| +08::01::2022 08:32:07|>a fucking Koala| +08::01::2022 08:32:08|SICK CUNT| +08::01::2022 08:32:08|What did they mean by this| +08::01::2022 08:32:10|AUSSIE BROS| +08::01::2022 08:32:12|TOTSUGEKI BAKA| +08::01::2022 08:32:13|AUSIES as least not there not KIWIS| +08::01::2022 08:32:14|captain is literal pea brain, still smarter than momo| +08::01::2022 08:32:14|Actual Koala| +08::01::2022 08:32:15|based koala| +08::01::2022 08:32:15|Shit they ain't lying| +08::01::2022 08:32:17|imagine being koala surrounded by harem| +08::01::2022 08:32:17|unironically a legit reflection of ADF command structure| +08::01::2022 08:32:17|AUSTRALIAN POWER| +08::01::2022 08:32:19|momo is the dumbest animal| +08::01::2022 08:32:19|CHARGING IDIOTS| +08::01::2022 08:32:25|Benis tank| +08::01::2022 08:32:26|HITPOSTERS +08::01::2022 08:32:26|>koala is smarter than momo| +08::01::2022 08:32:27|dick tank| +08::01::2022 08:32:27|WHERE'S THE TOTSUGEK| +08::01::2022 08:32:28|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +08::01::2022 08:32:29|>totsugeki baka Based Koala| +08::01::2022 08:32:29|benis tank :DD| +08::01::2022 08:32:29|AUSTRALIAN SPIN OFF WHEN?| +08::01::2022 08:32:29|Streuth, 'ere come those nip cunts| +08::01::2022 08:32:30|NO ONE FUCKING CARES ABOUT MOMO| +08::01::2022 08:32:32|Imagine losing to Chi-Ha.| +08::01::2022 08:32:34|did we win Aussie bros?| +08::01::2022 08:32:34|koalas are the evolution's cruel joke| +08::01::2022 08:32:35|don't shitmouth adf| +08::01::2022 08:32:35|AH FUCK HERE COMES THE "PLOT"| +08::01::2022 08:32:35|eww momo| +08::01::2022 08:32:37|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +08::01::2022 08:32:37|They're just shitposting right now as usual| +08::01::2022 08:32:41|shamelessly promoting his family business| +08::01::2022 08:32:41|Imagine doing LEWD things to Momo| +08::01::2022 08:32:43|ussiecuntbros... +08::01::2022 08:32:43|FUCK OFF MOMO| +08::01::2022 08:32:43|SUP CUNTS| +08::01::2022 08:32:45|YOU FUCKERS WONT BE SAYING THAT FOR LONG| +08::01::2022 08:32:46|Momo have to compete against an actual koala? She'll lose.| +08::01::2022 08:32:51|we need ribon warrior to be animated| +08::01::2022 08:32:52|I LOVE MOMO I LOVE MOMO I LOVE MOMO| +08::01::2022 08:32:53|Introducing the Momolings| +08::01::2022 08:32:55|reminder that Japanese beat Australians in almost every engagement simply because their commanders aren't fuckwits like ours| +08::01::2022 08:32:56|STOP BULLYING MOMO!!!!!!!!!!!!!!| +08::01::2022 08:32:57|momo comes from a fertile family| +08::01::2022 08:32:57|no one cares about your family momo| +08::01::2022 08:32:59|Do NOT fuck the Koala| +08::01::2022 08:33:00|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +08::01::2022 08:33:00|MOMO'S CHILDREN| +08::01::2022 08:33:01|I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! | +08::01::2022 08:33:03|i care.| +08::01::2022 08:33:05|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +08::01::2022 08:33:05|would colleges actually fall for this camtain momo farce?| +08::01::2022 08:33:05|CAN WE SKIP FORWARD PLEASE| +08::01::2022 08:33:08|Monmo is cute| +08::01::2022 08:33:10|>losing to japs| +08::01::2022 08:33:10|I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! | +08::01::2022 08:33:10|MOMO DOESN'T EVEN KNOW HOW TO USE EMAIL| +08::01::2022 08:33:11|OOG +08::01::2022 08:33:12| しぶんぐ +08::01::2022 08:33:13|how close to japs make it to australia irl during ww2?| +08::01::2022 08:33:14|I want to barricade the doors and burn down momo's house| +08::01::2022 08:33:15|Please do not bully Momo| +08::01::2022 08:33:19|this is making me sleep rn| +08::01::2022 08:33:20|shit dog| +08::01::2022 08:33:20|WAN WAN WAN WAN| +08::01::2022 08:33:22|MOMO CHILDREN| +08::01::2022 08:33:23|OLD MAN DOG| +08::01::2022 08:33:25|OGGY! +08::01::2022 08:33:25|momo is a wonderful onee-san i love her say something nice to her| +08::01::2022 08:33:25|MOMO IS A SMART GIRL!!!!!!!!!!!!| +08::01::2022 08:33:25|GIVING MOMO 10 CHILDREN | +08::01::2022 08:33:26|Cute doggo| +08::01::2022 08:33:26|shamelessly promoting family business shamelessly promoting family business shamelessly promoting family business| +08::01::2022 08:33:27|ute +08::01::2022 08:33:27|momo's kids| +08::01::2022 08:33:28|MOMO DOGGY| +08::01::2022 08:33:29|stache dog| +08::01::2022 08:33:30|Cute mom| +08::01::2022 08:33:31|Momo is a product of a man breeding his wife over nad over| +08::01::2022 08:33:32|momo oneesan| +08::01::2022 08:33:34|Wow Momo dad still got to hit with how much siblings she has.| +08::01::2022 08:33:37|Imagine pumping Momo with 7 kids...| +08::01::2022 08:33:39|MOMO IS THE CUTEST| +08::01::2022 08:33:40|SEX WITH MOMO-FAMILY| +08::01::2022 08:33:41|cute kids| +08::01::2022 08:33:42|You just know| +08::01::2022 08:33:42|EW +08::01::2022 08:33:43|MOMO YOU’RE TOO DUMB FOR COLLEGE BUT YOU CAN BE MY WIFE| +08::01::2022 08:33:45|nepotism smh| +08::01::2022 08:33:45|JK +08::01::2022 08:33:48|Abe dream| +08::01::2022 08:33:48|Momo is inbred| +08::01::2022 08:33:49|Momo papa been busy| +08::01::2022 08:33:49|OOOOOOOOOOOOOOOOOHHHHHHHHHHHH +08::01::2022 08:33:49|MOMO made for breeding| +08::01::2022 08:33:50|Giving momo an even bigger family| +08::01::2022 08:33:50|MOMO-CHAN DAKKO| +08::01::2022 08:33:51|ale +08::01::2022 08:33:52|holy shit based dad| +08::01::2022 08:33:53|There's only about an hour left, right?| +08::01::2022 08:33:53|omolings +08::01::2022 08:33:54|tiny kawashimas very cute| +08::01::2022 08:33:55|OOOOOOOOOOOOOOOOOOH +08::01::2022 08:33:56|sex with momo-chan and her sisters.| +08::01::2022 08:33:56|OOOOOOOOOHHHHHHHHHHH +08::01::2022 08:33:56|HOLY FUCK HE BANGED HER UNTIL SHE WAS DYING| +08::01::2022 08:33:58|no wonder mom looks tired| +08::01::2022 08:33:58|imagine what a good mother she would make| +08::01::2022 08:33:59|male child alert| +08::01::2022 08:33:59|my heart| +08::01::2022 08:34:00|>parents watched eva| +08::01::2022 08:34:02|Making Momo a loving wife and mother!| +08::01::2022 08:34:02|look at al lthis MONEY | +08::01::2022 08:34:03|MOMO REDEMPTION| +08::01::2022 08:34:05|CUTE ROUND GLASSES| +08::01::2022 08:34:05|olis +08::01::2022 08:34:06|omocringe +08::01::2022 08:34:06|No wonder Momo mama can't walk properly. Momo Papa too busy| +08::01::2022 08:34:07|momo holding your child| +08::01::2022 08:34:09|unny....................................................................................................................................... +08::01::2022 08:34:10|MOMO IS NOT DUMB, MOMO IS A BUSY FAMILY GIRL| +08::01::2022 08:34:11|could just sell one of the kids| +08::01::2022 08:34:11|parents didn't have no TV| +08::01::2022 08:34:11|She's just pregnant again| +08::01::2022 08:34:12|OOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHh +08::01::2022 08:34:14|FRAIL FROM BEING A BREEDING MARE| +08::01::2022 08:34:14|YOU WILL FEEL BAD FOR MOMO. YOU WILL CARE ABOUT THE PLOT. YOU WILL WANT OOARAI TO WIN. WHY AREN'T YOU CHEERING THEM GOD DAMMIT.| +08::01::2022 08:34:16|oors... +08::01::2022 08:34:16|THANKS FOR THE GRUB| +08::01::2022 08:34:16|OOR! +08::01::2022 08:34:17|CUTE MOMO| +08::01::2022 08:34:18|>frail from pumping out all those kids| +08::01::2022 08:34:18|MOMO CUTE! GOOD SISTER! GOOD MOTHER!| +08::01::2022 08:34:19|momo dum| +08::01::2022 08:34:20|imagine having so many loli daughters. Blessed life| +08::01::2022 08:34:20|>real frail body >makes a ton of kids anyway| +08::01::2022 08:34:21|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +08::01::2022 08:34:24|>births out six kids| +08::01::2022 08:34:25|Little girl erotic| +08::01::2022 08:34:25|>Bread slices| +08::01::2022 08:34:26|_; +08::01::2022 08:34:29|frail +08::01::2022 08:34:31|about 60-90 minutes. rest of this. 40 for df3. 10 for daikon| +08::01::2022 08:34:32|CUTE LOLI UOOOOOOOOH| +08::01::2022 08:34:37|pumping mom with 6 daughgters and 3 sons| +08::01::2022 08:34:37|the next rabbit team is momo's siblings| +08::01::2022 08:34:38|i love momo she is so sweet| +08::01::2022 08:34:38|oT +08::01::2022 08:34:40|I WANT TO HAVE THIS MANY KIDS WITH HANA| +08::01::2022 08:34:48|TL Note: "Anzu" means "SEX".| +08::01::2022 08:34:49|why college when she needs kids in her belly| +08::01::2022 08:34:49|bros im gonna pass out| +08::01::2022 08:34:50|I feel bad for Momo. The kids got better glasses than her| +08::01::2022 08:34:51|tfu +08::01::2022 08:34:51|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 08:34:53|Hana would just eat her own kids| +08::01::2022 08:34:54|NZU +08::01::2022 08:34:54|thanks TL| +08::01::2022 08:34:56|momo's parents working hard at night| +08::01::2022 08:34:57|Thanks TL| +08::01::2022 08:34:57|ex +08::01::2022 08:35:02| +08::01::2022 08:35:07|AUS BROS......| +08::01::2022 08:35:07| +08::01::2022 08:35:08|LETS GOOOOOOOOOOOOOOOOO| +08::01::2022 08:35:10|Spraying all over Anzu's flat chest.| +08::01::2022 08:35:11|>they actually won| +08::01::2022 08:35:14|Ahh yes, the Totsugeki tards| +08::01::2022 08:35:15|OTSUGEKI +08::01::2022 08:35:16|straya +08::01::2022 08:35:16|ANZU SOCKS| +08::01::2022 08:35:16|ants +08::01::2022 08:35:17|KOALA BROS….| +08::01::2022 08:35:18|FIRST EMUS| +08::01::2022 08:35:18|If Alice family was as big as Momo, that would be something| +08::01::2022 08:35:20|PSA: Anzu means to commit mass genocide in nanking| +08::01::2022 08:35:20|ussies...... +08::01::2022 08:35:21|OTSUGEKI +08::01::2022 08:35:23|LETS GOOOOO THE RETARDS DID IT| +08::01::2022 08:35:28|how did straya manage to fuck that one up| +08::01::2022 08:35:30|they won because duck team idiots helped the enemy| +08::01::2022 08:35:30|Aussiebros... WE SUCK| +08::01::2022 08:35:32|we need more nankings on china| +08::01::2022 08:35:33|OMW TO NANKING| +08::01::2022 08:35:34|>they almost lost| +08::01::2022 08:35:37|I HATE AUSTRALIANS SO GODDAMN MUCH| +08::01::2022 08:35:37|IT WAS YOUR FUCKING FAULT, YUKARI| +08::01::2022 08:35:38|LOOF +08::01::2022 08:35:40|If the retards could make t so cna you!| +08::01::2022 08:35:40|YUZU IS SO HOT HOLY SHIT| +08::01::2022 08:35:41|momo is not allowed to talk shit| +08::01::2022 08:35:41|fluff still sad foor bad intel| +08::01::2022 08:35:44|NANKING NEVER HAPPENED| +08::01::2022 08:35:44|ERIKA ERIKA EIRKA| +08::01::2022 08:35:45|Poor Eclair| +08::01::2022 08:35:46|CLAIR! +08::01::2022 08:35:46|GO HOME MAGINOT| +08::01::2022 08:35:46|DESU WA| +08::01::2022 08:35:47|claire +08::01::2022 08:35:49|clair +08::01::2022 08:35:50|ECLAIR EXISTS| +08::01::2022 08:35:50|CLAIR +08::01::2022 08:35:53|ANZERLIED +08::01::2022 08:35:54|clair-sama +08::01::2022 08:35:55|M m montage| +08::01::2022 08:35:56|so why are there 2 frog schools| +08::01::2022 08:35:57|Koala too high from Australia trees to command properly| +08::01::2022 08:35:57|ECLAIR IS CANON| +08::01::2022 08:35:58|Being Eclair is suffering| +08::01::2022 08:35:58|HO? +08::01::2022 08:35:58|its the other frenchies| +08::01::2022 08:35:59|TWO WHOLE FRENCH SCHOOLS| +08::01::2022 08:36:01|SIEG HEIL o::| +08::01::2022 08:36:02|ANZERLIED +08::01::2022 08:36:03|CLAIR!!!! +08::01::2022 08:36:03|DER TAG GLUHEN HEISS| +08::01::2022 08:36:03|DER TAG GLÜHEND HEISS| +08::01::2022 08:36:04|Eclair is here to job!| +08::01::2022 08:36:04|TEEEEEEEEEEE +08::01::2022 08:36:06|Eclair never showing up again ;_;| +08::01::2022 08:36:06|ANIIIIIIIIII +08::01::2022 08:36:06|omf +08::01::2022 08:36:07|488 +08::01::2022 08:36:08|PRESS S TO STAMP YOUR FEET | +08::01::2022 08:36:11|is there jewish school in this universe| +08::01::2022 08:36:11|liminate +08::01::2022 08:36:11| +08::01::2022 08:36:12|absolute state of frogs| +08::01::2022 08:36:12| +08::01::2022 08:36:12| +08::01::2022 08:36:12|ENMARK!!!!!!! +08::01::2022 08:36:14|imagine can't take down wani| +08::01::2022 08:36:15|STURMWIND DAHINN| +08::01::2022 08:36:16|ECLAIR NOOOO| +08::01::2022 08:36:16|>TFW you will never have a 3some with Marie and Eclair| +08::01::2022 08:36:17|2 HOURS| +08::01::2022 08:36:18|FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +08::01::2022 08:36:20|FUCK SW*DES| +08::01::2022 08:36:21|RAAAAAAAAAAAAA +08::01::2022 08:36:22|Erika's back| +08::01::2022 08:36:22|SWEDES BTFO| +08::01::2022 08:36:23|>hand signals| +08::01::2022 08:36:23|YRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 08:36:23|ORCHT +08::01::2022 08:36:25|Literally who?| +08::01::2022 08:36:27|UTEYUSHA +08::01::2022 08:36:28|norway lore| +08::01::2022 08:36:28|Fucking hand signals| +08::01::2022 08:36:28|I'm glad GuP was created before the new SJW streak| +08::01::2022 08:36:29|Russian onahole loli....| +08::01::2022 08:36:30|RAAAAAAAAAAAAAA +08::01::2022 08:36:31|they're norwegians| +08::01::2022 08:36:32|ATYUSHA +08::01::2022 08:36:35|imagine being viking| +08::01::2022 08:36:35|atyusha +08::01::2022 08:36:35|PAINISHBROS... +08::01::2022 08:36:38|rip vikings| +08::01::2022 08:36:39|USA USA USA| +08::01::2022 08:36:40|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:40|USA USA USA USA USA| +08::01::2022 08:36:40|whats the difference| +08::01::2022 08:36:41|Wish we got to see full matches with all the random jobber schools| +08::01::2022 08:36:41|BLUE DIVISION EROTIC| +08::01::2022 08:36:41|MASSIVE TITS| +08::01::2022 08:36:43|ITS +08::01::2022 08:36:43|SPANISH TITS| +08::01::2022 08:36:44|USA USA USA USA| +08::01::2022 08:36:45|ARRIBA ESPAÑA o::| +08::01::2022 08:36:45|big tiddies| +08::01::2022 08:36:45|EW +08::01::2022 08:36:45|OOBA +08::01::2022 08:36:46|Saunders 1st win boys| +08::01::2022 08:36:46|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:48|BLUE EROTIC| +08::01::2022 08:36:48|ARRIBA AZUL| +08::01::2022 08:36:49|USA USA USA USA USA| +08::01::2022 08:36:49|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:49|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:50|OH FUCK| +08::01::2022 08:36:50|UNF tiddie| +08::01::2022 08:36:50|KAY VS QUE| +08::01::2022 08:36:51|ODDAMNNNN +08::01::2022 08:36:51|USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:51|Duck hand signals too strong| +08::01::2022 08:36:51|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 08:36:51|KAY VS HER SISTER| +08::01::2022 08:36:51|USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +08::01::2022 08:36:52|ITS +08::01::2022 08:36:53|EL GRANDE| +08::01::2022 08:36:53|OOBA +08::01::2022 08:36:53|SPANISH TIDDIES| +08::01::2022 08:36:53|USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:54|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:54|spain enjoyers| +08::01::2022 08:36:54|IIIITS +08::01::2022 08:36:54|ARRIBA ESPANA| +08::01::2022 08:36:55|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:55|THOSE TITS| +08::01::2022 08:36:55|USA USA USA| +08::01::2022 08:36:55|CABRON COATED TANKSSSSSSSSSSS| +08::01::2022 08:36:56|OOBA +08::01::2022 08:36:56|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:36:57|SA +08::01::2022 08:36:58|SPANIARD TITS| +08::01::2022 08:36:58|AVENGE THE MAINE| +08::01::2022 08:36:59|FIELD ARTILLERY| +08::01::2022 08:36:59|I HATE THE BRITISH| +08::01::2022 08:36:59|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:37:00|USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 08:37:00|>using a firefly| +08::01::2022 08:37:01|OTEM +08::01::2022 08:37:02|NIPED +08::01::2022 08:37:02|OSEHIP +08::01::2022 08:37:02|RIDGE +08::01::2022 08:37:03|brown kay| +08::01::2022 08:37:03|great shot| +08::01::2022 08:37:06|A BRIDGE TOO FAR| +08::01::2022 08:37:08|BAKA INBOUND| +08::01::2022 08:37:08|REmeber le taco bell| +08::01::2022 08:37:09|BELGIUM IS NOT A REAL COUNTRY| +08::01::2022 08:37:11|GO ON HOME| +08::01::2022 08:37:12|Kay vs Tanned Kay| +08::01::2022 08:37:12|EL PURO PINCHE| +08::01::2022 08:37:13|ANPAI +08::01::2022 08:37:13|anpai +08::01::2022 08:37:13|rosehip moment| +08::01::2022 08:37:15|ANPAII +08::01::2022 08:37:19|DDDDDDDDDD +08::01::2022 08:37:19|AKAHIP +08::01::2022 08:37:19|CUM PIE| +08::01::2022 08:37:20|DDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:21|>hobos not the flagtank| +08::01::2022 08:37:22|BIN +08::01::2022 08:37:23|MY WIFE, ROSEHIP| +08::01::2022 08:37:23|PERKELE :DDDDDDDD| +08::01::2022 08:37:24|DDDDDDDDDDDDDDD +08::01::2022 08:37:24|the desert?| +08::01::2022 08:37:25|FUGGG :-DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 08:37:25|DDDDDDDDD +08::01::2022 08:37:25|DDDDDDDDD +08::01::2022 08:37:26|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:26|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:26|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:26|UG +08::01::2022 08:37:26|DD +08::01::2022 08:37:26|Waffles pakeked| +08::01::2022 08:37:26|DDDD +08::01::2022 08:37:27|FINNISH HYPER WAR| +08::01::2022 08:37:27|TULTA :DDDDDDDD| +08::01::2022 08:37:27|OLKA +08::01::2022 08:37:27|BASED BINNS :DDDD| +08::01::2022 08:37:27|VOI VITTU| +08::01::2022 08:37:28|DDDDDDDDDDDD +08::01::2022 08:37:28|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:30|DDDDDD +08::01::2022 08:37:30|FUGGG :DDDDDDD| +08::01::2022 08:37:30|DDD +08::01::2022 08:37:30|DDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:31|FUCK POLAND| +08::01::2022 08:37:32|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:33|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:33|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:33|Active sonar :DDDDDDD| +08::01::2022 08:37:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:34|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 08:37:35|secret finnish warp drive| +08::01::2022 08:37:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:35|FINNISH WARP DRIVE| +08::01::2022 08:37:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 08:37:36|DDDDDDDDDDDDDD +08::01::2022 08:37:37|BENIS :DDDD| +08::01::2022 08:37:37|DVCE DVCE blue division| +08::01::2022 08:37:37|SASUGA DUCE| +08::01::2022 08:37:37|ONPLE +08::01::2022 08:37:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:38|How do they keep doing it| +08::01::2022 08:37:38|DUCE DUCE DUCE DUCE| +08::01::2022 08:37:38|UCE +08::01::2022 08:37:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 08:37:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:40|UCE +08::01::2022 08:37:40|DUCE DUCE DUCE DUCE| +08::01::2022 08:37:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:41|JAJKA SEETHING| +08::01::2022 08:37:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:41|How the fuck did Anzio win| +08::01::2022 08:37:41|TANK SEX| +08::01::2022 08:37:42|No Kampai for Assam?| +08::01::2022 08:37:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:42|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 08:37:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:43|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 08:37:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 08:37:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:44|POLSKA GUROM| +08::01::2022 08:37:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:44|CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT| +08::01::2022 08:37:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:45|DUCE DUCE DUCE| +08::01::2022 08:37:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 08:37:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:47|DUCE DUCE DUCE DUCED CEUD CUED DUCE DCEU| +08::01::2022 08:37:47|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 08:37:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:49|I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA | +08::01::2022 08:37:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 08:37:51|UCE +08::01::2022 08:37:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:53|UOCO +08::01::2022 08:37:53|OSH +08::01::2022 08:37:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 08:37:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:54|UOCO +08::01::2022 08:37:54|VCE +08::01::2022 08:37:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:56|UCEDUCEDUCEDUCEDUCE +08::01::2022 08:37:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:57|UCKO +08::01::2022 08:37:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:59|UCKER! +08::01::2022 08:37:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:37:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:37:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:38:00|OSH +08::01::2022 08:38:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:38:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 08:38:01|FUCK? OK| +08::01::2022 08:38:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:38:01|Jump them, Duce| +08::01::2022 08:38:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:38:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:38:01|uoco +08::01::2022 08:38:02|WE WON DUCE BROS| +08::01::2022 08:38:02|OSH +08::01::2022 08:38:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:38:04|OSH +08::01::2022 08:38:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:38:07|fuoco the covy| +08::01::2022 08:38:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 08:38:09|Fuoco the duce| +08::01::2022 08:38:10|>shooting half your team| +08::01::2022 08:38:11|pizza pasta put it in a box| +08::01::2022 08:38:11|LETS GOOOOO DUCEBROS| +08::01::2022 08:38:14|DUCE ALL THE WAY| +08::01::2022 08:38:16|I want Anchovy to whip me!| +08::01::2022 08:38:18|>Black MEXTa| +08::01::2022 08:38:21|ame +08::01::2022 08:38:23|Grumpy Eclair | +08::01::2022 08:38:24|Blue division must have the highest screentime:fans ratio| +08::01::2022 08:38:24|FUCK ITS THE KAMPENTAI| +08::01::2022 08:38:27|Imagine getting beat by fucking Anzio | +08::01::2022 08:38:28|otsugeki? +08::01::2022 08:38:28|MEXT did nothing wrong| +08::01::2022 08:38:29|When did they start making flying tanks?| +08::01::2022 08:38:35|>34 degrees| +08::01::2022 08:38:36|MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! | +08::01::2022 08:38:36|Fatass marie| +08::01::2022 08:38:37|mext is a hero| +08::01::2022 08:38:38|12 cakes| +08::01::2022 08:38:39|I wish I was Marie's cake| +08::01::2022 08:38:40|EAT MY DICK MARIE| +08::01::2022 08:38:41|MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! | +08::01::2022 08:38:46|34 degrees? thats freezing| +08::01::2022 08:38:51|>TELLING THEM TO LEARN FROM THE CHARGE BAKAS. HOW HUMILITATING.| +08::01::2022 08:38:52| is this df1 or 2| +08::01::2022 08:38:56|F2 +08::01::2022 08:38:57| +08::01::2022 08:38:59|Marie bites down and your dick is chewed off| +08::01::2022 08:38:59|>sojack braindamaged shitposters| +08::01::2022 08:38:59|HOLY SHIT NISHIIIIIIIIIIIIIIIII| +08::01::2022 08:39:00|they trynna outjapanese each other with the thanks lmfao| +08::01::2022 08:39:01|Marie too busy watching cake instead| +08::01::2022 08:39:02|its pretty hot, bloody burgers| +08::01::2022 08:39:05|f4 +08::01::2022 08:39:05|thanks chat| +08::01::2022 08:39:10|7 +08::01::2022 08:39:11|F5 +08::01::2022 08:39:11|AKARIMASHITA +08::01::2022 08:39:11|please ganbatte| +08::01::2022 08:39:12|what's sojack?| +08::01::2022 08:39:12|>please win. fuck momo btw| +08::01::2022 08:39:15|>WE WIN BECAUSE THE OTHER TEAMS DON'T TRY| +08::01::2022 08:39:16|7 +08::01::2022 08:39:16|miho understands theyre luckshitters| +08::01::2022 08:39:19|dont give them hope miho| +08::01::2022 08:39:20|F6??? +08::01::2022 08:39:22|does the stream go up to df 4?| +08::01::2022 08:39:22|like soyjack but with more typos| +08::01::2022 08:39:27| +08::01::2022 08:39:28|CUTE JUDGES| +08::01::2022 08:39:28|INVEST IN CHIHATAN NOW| +08::01::2022 08:39:29|non... +08::01::2022 08:39:32|PANTSU FOA| +08::01::2022 08:39:33|PANZER VOR| +08::01::2022 08:39:33|non... +08::01::2022 08:39:33|yeah, stream ends with df4| +08::01::2022 08:39:34|PANZER VOR!!!| +08::01::2022 08:39:36|Yup, DF 4| +08::01::2022 08:39:37|MOMOOOO CUTE!| +08::01::2022 08:39:38|df4 +08::01::2022 08:39:38|PANSA FO| +08::01::2022 08:39:39|STILL MEDIOCRE PANZER VOR| +08::01::2022 08:39:39|SENSHA ZENSHIN| +08::01::2022 08:39:42|>jap tanks| +08::01::2022 08:39:43|PANZER WHORE| +08::01::2022 08:39:44|p-pa-panzer v-vo-vorrrr!!!| +08::01::2022 08:39:46|SENSA ZENSHI| +08::01::2022 08:39:46|jungle +08::01::2022 08:39:46|the stream ends with DF6| +08::01::2022 08:39:52|f999999999999999999 +08::01::2022 08:39:53|p p p p p p p p p p p | +08::01::2022 08:39:54|T O T S U G E K I| +08::01::2022 08:39:56|WELCOME TO THE JUNGLE| +08::01::2022 08:39:57|ANONS WHAT DOES PANZER VOR MEAN AGAIN?| +08::01::2022 08:39:57|momom will fail to get a college anyway| +08::01::2022 08:39:58|INDIANA JONES| +08::01::2022 08:39:59|ZZZZZZZZZT +08::01::2022 08:40:01|DRONES +08::01::2022 08:40:02|THE TREES ARE SPEAKING BAKA| +08::01::2022 08:40:04|ur mum| +08::01::2022 08:40:05|HBO PRESNTES THE PACIFIC| +08::01::2022 08:40:05|WELCOME TO GUADALCANAL| +08::01::2022 08:40:08|TL note: Panzer Vore = Sex| +08::01::2022 08:40:09|andou andou andou andou andou andou andou andou andou andou andou andou | +08::01::2022 08:40:10|holy fuck was that a famas| +08::01::2022 08:40:11|what are those flying panzers| +08::01::2022 08:40:12|Panzer vor means panzer vor| +08::01::2022 08:40:15|TL NOTE: PANZER VOR MEANS PANTRU VORE| +08::01::2022 08:40:15|australia should just get nuked| +08::01::2022 08:40:16|Panzer Vor = Tanks Forward I think| +08::01::2022 08:40:20|fat ass| +08::01::2022 08:40:20|THANKS TL| +08::01::2022 08:40:21|>cake all over her face| +08::01::2022 08:40:22|lots of keeki| +08::01::2022 08:40:22|AKEFATTIECAKEFATTIECAKEFATTIE +08::01::2022 08:40:23|Sex in a tank, right TL?| +08::01::2022 08:40:25|I HATE THE PIRATES| +08::01::2022 08:40:26|we're surely fucked now on guadalcanal| +08::01::2022 08:40:28|Dirty pig| +08::01::2022 08:40:34|stupid pirates| +08::01::2022 08:40:37|Piratebros... is it over for our banner?| +08::01::2022 08:40:37|flint gang| +08::01::2022 08:40:38|ased +08::01::2022 08:40:38|I WANT TO FUCK FLINT'S VOICE| +08::01::2022 08:40:39|these people suck| +08::01::2022 08:40:39|HO +08::01::2022 08:40:39|will watching DF3 for the first time here ruin it>| +08::01::2022 08:40:41|dumb pirates| +08::01::2022 08:40:42|UM +08::01::2022 08:40:43|you will never be a cute high school girl| +08::01::2022 08:40:44|the trees speakin japanese| +08::01::2022 08:40:45|cute +08::01::2022 08:40:46|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +08::01::2022 08:40:46|UTE +08::01::2022 08:40:46|How come Oarai always has to fight on the enemy's terf| +08::01::2022 08:40:47|ek +08::01::2022 08:40:49|cute +08::01::2022 08:40:49|NOT THE FLAG| +08::01::2022 08:40:51|UDE +08::01::2022 08:40:52|That face| +08::01::2022 08:40:53|UHU +08::01::2022 08:40:53|USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK | +08::01::2022 08:40:54| +08::01::2022 08:40:55|>KAREN CUTE| +08::01::2022 08:40:57|IRATEBROS..... +08::01::2022 08:40:57|>Shark Jobbers| +08::01::2022 08:40:57|FUCK YOUR FLAG| +08::01::2022 08:40:58|AMASHII +08::01::2022 08:40:59|THEY HAVE BESMIRCHED OUR FLAG| +08::01::2022 08:41:00|>no tracer ambush| +08::01::2022 08:41:00|PIRATE AUTISM| +08::01::2022 08:41:03|Jungle japanese vs normal japanese?| +08::01::2022 08:41:12|OTSUGEKI +08::01::2022 08:41:12|did that tree just say "TOTSUGEKI"?| +08::01::2022 08:41:12|OCK +08::01::2022 08:41:13|Sasuga Chi-ha tan| +08::01::2022 08:41:15|cunny strats| +08::01::2022 08:41:16|otsugeki! +08::01::2022 08:41:17|OTSUGEKI!!! +08::01::2022 08:41:18|they have a mark 4 literally less useful than a cv33| +08::01::2022 08:41:18|df3 ends with mex being a based god| +08::01::2022 08:41:19|OTSUGEKI +08::01::2022 08:41:19|STEPPING CHARGE| +08::01::2022 08:41:20|ooooooooo +08::01::2022 08:41:20|OTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKI +08::01::2022 08:41:21|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:41:21|CUTE RETARDS| +08::01::2022 08:41:21|imagine being more singleminded than the totsugeki retards| +08::01::2022 08:41:23|OTSUGEKI +08::01::2022 08:41:24|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:41:24|OTSUGEKI!!!!! +08::01::2022 08:41:26|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:41:26|OTSUGEKIIIIIIIIIIIIIIIIIII +08::01::2022 08:41:27|FULL SPEED AHEAD| +08::01::2022 08:41:29|OTSUGEKI +08::01::2022 08:41:29|OTSUGEKI +08::01::2022 08:41:29|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:41:29|OTSUGEKI +08::01::2022 08:41:29|MULTIPLE TOTSUGEKI TIME| +08::01::2022 08:41:29|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:41:30|NEGATIVE IQ| +08::01::2022 08:41:32| 踏み突撃 +08::01::2022 08:41:34|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +08::01::2022 08:41:35|otsugeki +08::01::2022 08:41:36|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:41:37|How the fuck can these retards breathe on their own| +08::01::2022 08:41:39|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +08::01::2022 08:41:39|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:41:40|OTSUGEKI +08::01::2022 08:41:41|AHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA +08::01::2022 08:41:42|ANZAI +08::01::2022 08:41:43|\o:: TENNO HAIKA BANZAI| +08::01::2022 08:41:44|Useless Sharks, even Momo is more help.| +08::01::2022 08:41:44|>>>>>>>>>>>>>>>>>>>>>>>> +08::01::2022 08:41:45|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +08::01::2022 08:41:45|Jungle ambushes.| +08::01::2022 08:41:46|I HATE THE SHARKS| +08::01::2022 08:41:47|Pirates sunk| +08::01::2022 08:41:50|just kill the pirates already| +08::01::2022 08:41:50|HARKIDIOTS +08::01::2022 08:41:52|what's the point of the sharks?| +08::01::2022 08:41:55|SAYONARA TOTSUGEKI| +08::01::2022 08:41:56|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:41:57|Couldn't they have disabled the Mark IV with a shot from any angle?| +08::01::2022 08:41:57|SAYONARA TOTSUGEKI| +08::01::2022 08:41:57|I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +08::01::2022 08:41:57|I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHA| +08::01::2022 08:41:57|AKAS +08::01::2022 08:41:58|WOMB TOTSUGEKI!!| +08::01::2022 08:41:58|GOODBYE TOTSUGEKI| +08::01::2022 08:41:58|OTSUGEKI +08::01::2022 08:41:59|AKAS +08::01::2022 08:41:59|And the Pirates all died in the explosion, they were never mourned| +08::01::2022 08:42:00|HIGH IQ| +08::01::2022 08:42:01|It's fine they were useless anyways| +08::01::2022 08:42:01|useless pirates| +08::01::2022 08:42:01|TENNO HEIKA BANZAI| +08::01::2022 08:42:01|SAYONARA TOTSUGEKI| +08::01::2022 08:42:02|CHARGE IS IN THE NAME| +08::01::2022 08:42:02|Chiatan are legit retards| +08::01::2022 08:42:02|OH FUCK SHE'S THINKING| +08::01::2022 08:42:03|ETARDS +08::01::2022 08:42:04|I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +08::01::2022 08:42:04|SHUT THE FUCK UP HOSOMI| +08::01::2022 08:42:04|AKAS +08::01::2022 08:42:04|SAYONARA TOTSUGEKI| +08::01::2022 08:42:04|\o:: \o:: \o:: 七生報國 \o:: \o:: \o::| +08::01::2022 08:42:04|I'll pretend Chi ha tan wins this| +08::01::2022 08:42:04|AKAS +08::01::2022 08:42:04|OTSUGEKI +08::01::2022 08:42:06|It's in the name| +08::01::2022 08:42:07|iall the sharks but cute lass should walk off the plank| +08::01::2022 08:42:07|ENNO +08::01::2022 08:42:08|6 Japanese tanks need 10 shots to kill a WWI relic, sasuga Nippon| +08::01::2022 08:42:10|Dumb hosomi| +08::01::2022 08:42:10|EIKA +08::01::2022 08:42:11|TOTSUGEKI IS TOTSUGEKI| +08::01::2022 08:42:11|SAYOUNARA TOSTUGEKI| +08::01::2022 08:42:11|SAYONARA TOTSUGEKI| +08::01::2022 08:42:14|QUICK SOMEONE KNOCK HOSOMI OUT| +08::01::2022 08:42:15|ANZAIIIIIIIIII +08::01::2022 08:42:19|DON'T LET HER ASK QUESTIONS| +08::01::2022 08:42:19|TL Note: "Anzu" means "SEX".| +08::01::2022 08:42:20|Chihatan lost because they forgot the flag tank| +08::01::2022 08:42:21|SAYONARA TOTSUGEKI| +08::01::2022 08:42:21|chi ha tan isn't interesting| +08::01::2022 08:42:23|THANKS TL| +08::01::2022 08:42:26|NZU +08::01::2022 08:42:26|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +08::01::2022 08:42:28|THANKS TL| +08::01::2022 08:42:28|Arigato TL| +08::01::2022 08:42:28| +08::01::2022 08:42:30|TOTSUGEKI enthusiasts | +08::01::2022 08:42:31|You go fast. Charge is charge| +08::01::2022 08:42:33|thanks TL| +08::01::2022 08:42:34|it's carbon so its safe| +08::01::2022 08:42:36|obbers +08::01::2022 08:42:38|I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS | +08::01::2022 08:42:40|Chihatan thought the Mark IV was the flag tank| +08::01::2022 08:42:41|your father's not dead, he's just totsugeki'ing from life| +08::01::2022 08:42:42|BROS ;__;| +08::01::2022 08:42:42|THE HEART| +08::01::2022 08:42:42|TL Note: TOSUGEKI means PLEASURE| +08::01::2022 08:42:44|cute lass| +08::01::2022 08:42:45|Murakami's hard muscular thighs| +08::01::2022 08:42:47|isdom +08::01::2022 08:42:49|_; +08::01::2022 08:42:49|MU +08::01::2022 08:42:50|ASED +08::01::2022 08:42:53|STUG LYFE| +08::01::2022 08:42:53|MU +08::01::2022 08:42:54|Cute callback| +08::01::2022 08:42:55|ased +08::01::2022 08:42:55|stfu pirate bitch| +08::01::2022 08:42:56|floof hair| +08::01::2022 08:42:57|MU +08::01::2022 08:42:59|Cutlass ain't fine| +08::01::2022 08:42:59|Ooarai deliberatly not put carbon on shark team| +08::01::2022 08:42:59|you cant really call the worst talk fielded in the show a jobber| +08::01::2022 08:43:00|CONTACT FRONT| +08::01::2022 08:43:03|MG42 NOISES| +08::01::2022 08:43:05|rrrrrr +08::01::2022 08:43:06|SAYONARA TOTSUGEKI!| +08::01::2022 08:43:10|OTSUGEKI +08::01::2022 08:43:10|BYE TOTSUGEKI| +08::01::2022 08:43:11| ようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃 +08::01::2022 08:43:11|OTSUGEKI +08::01::2022 08:43:11|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:43:13|AYONARA +08::01::2022 08:43:14|SAYONARA TOTSUGEKI| +08::01::2022 08:43:18|AYOUNARA +08::01::2022 08:43:19|SAYONARA TOTSUGEKI| +08::01::2022 08:43:20|YA +08::01::2022 08:43:20|Really good tactics from Chihatan| +08::01::2022 08:43:22|ROID RAGE| +08::01::2022 08:43:23|SAYONARA TOTSUGEKI| +08::01::2022 08:43:24|FUCK AND SAYONARA| +08::01::2022 08:43:26|NEET STRONK| +08::01::2022 08:43:27|imagine ryona sex with anteater| +08::01::2022 08:43:28|AEKO +08::01::2022 08:43:29|NEKONYA HOURS| +08::01::2022 08:43:32|man watching Senshado live must be boring as shit if it can last so long| +08::01::2022 08:43:36|UG +08::01::2022 08:43:37|how many nukes would you send to australia, 1, 2, 10, 20, 100?| +08::01::2022 08:43:37|IMAGINE THE SMELL| +08::01::2022 08:43:38|SWEATY RABBIT TANK| +08::01::2022 08:43:39|women +08::01::2022 08:43:39|SWEATY SEX| +08::01::2022 08:43:39|BUNNY SWEAT UOHHHHHH| +08::01::2022 08:43:41| NAM TACTICS| +08::01::2022 08:43:43|this one went 14 hours| +08::01::2022 08:43:46|as many as it takes| +08::01::2022 08:43:48|fuck the tropics| +08::01::2022 08:43:48|tard wrangler| +08::01::2022 08:43:50|Imagine Nekonyaa angry sex| +08::01::2022 08:43:50|AZUSA TARD WRANGLER| +08::01::2022 08:43:50|one for each melbourne and canberra| +08::01::2022 08:43:52|all of them to Australia| +08::01::2022 08:43:54|SEVERAL HOURS LATER| +08::01::2022 08:43:55|Boob map| +08::01::2022 08:43:56|>Azusa being competent again| +08::01::2022 08:44:00|How many danmaku?| +08::01::2022 08:44:04|LOOF +08::01::2022 08:44:07|Jungle tanks screaming jungle war cries while charging you. Scary.| +08::01::2022 08:44:08| +08::01::2022 08:44:13| +08::01::2022 08:44:14|SET THE TREES ON FIRE FLUSH EM OOOOUT| +08::01::2022 08:44:20|jungle warfare bros| +08::01::2022 08:44:25|IT AINT ME| +08::01::2022 08:44:25|AR +08::01::2022 08:44:25|how many danmaku countfag| +08::01::2022 08:44:26|cute andou| +08::01::2022 08:44:31|IT AINT ME IT AINT ME| +08::01::2022 08:44:31|Bataan death march when??| +08::01::2022 08:44:32|WAR NEVER CHANGES| +08::01::2022 08:44:36|Cute andou raincoat| +08::01::2022 08:44:40|>you will never bathe with Marie| +08::01::2022 08:44:40|a rose bath| +08::01::2022 08:44:41|Fucking Marie| +08::01::2022 08:44:41|At least they don't paint their faces green like the trees| +08::01::2022 08:44:43|PAMPANGA TO TARLAC LETS WALK| +08::01::2022 08:44:45|IT AIN'T ME| +08::01::2022 08:44:45|unit 731 arc when???| +08::01::2022 08:44:45|marie's bath scene ToT| +08::01::2022 08:44:45|SEX WITH MARIE| +08::01::2022 08:44:47|GUPPIES IN THE MUD| +08::01::2022 08:44:47|God I love Marie| +08::01::2022 08:44:47|COUNTFAG WHERE THE FUCK ARE YOU| +08::01::2022 08:44:48|EW +08::01::2022 08:44:49|Imagine Maries bathwater| +08::01::2022 08:44:52|udddddddd +08::01::2022 08:44:53|ew +08::01::2022 08:44:53|Why didn't they make the Americans do the jungle combat? Complete with PTSD?| +08::01::2022 08:44:55|ANGURO +08::01::2022 08:44:55|das racis| +08::01::2022 08:44:56|sodoko if she nigger| +08::01::2022 08:44:56|plish +08::01::2022 08:44:58|UDOKO +08::01::2022 08:44:58|uddoko +08::01::2022 08:44:58|MARIE BATH SCENE WHEN| +08::01::2022 08:45:05|Andou too poor for an umbrella| +08::01::2022 08:45:08|cunny beauty practices| +08::01::2022 08:45:09|fluffy mechanics| +08::01::2022 08:45:10|I CAN COVER YOUR FACE WITH SOME "MINERALS"| +08::01::2022 08:45:16|HUKBALAHAP ARC WHEN | +08::01::2022 08:45:20|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:45:20|Fat fuck| +08::01::2022 08:45:22|>french "tanks"| +08::01::2022 08:45:23|me as the pond| +08::01::2022 08:45:24|FLIPS GO HOME| +08::01::2022 08:45:25|Anon your cum isn't supposed to be brown| +08::01::2022 08:45:28|OI +08::01::2022 08:45:33|mallards can't swim!| +08::01::2022 08:45:36|We been through every kind of rain there is.| +08::01::2022 08:45:43|se no| +08::01::2022 08:45:43| Little bitty stingin' rain and big ol' fat rain, Rain that flew in sideways.| +08::01::2022 08:45:46|based porsche| +08::01::2022 08:45:46|Se no| +08::01::2022 08:45:47|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::?| +08::01::2022 08:45:47|sodoko stuck| +08::01::2022 08:45:49|ANBARE +08::01::2022 08:45:49|oping? +08::01::2022 08:45:50|OPING +08::01::2022 08:45:50|::o:: where we at| +08::01::2022 08:45:51| And sometimes rain even seemed to come straight up from underneath. | +08::01::2022 08:45:51|DOPING +08::01::2022 08:45:52|NOS I NEED NOS| +08::01::2022 08:45:56|>when the water meth hits| +08::01::2022 08:45:57|EW +08::01::2022 08:45:59| Shoot, it even rained at night.| +08::01::2022 08:46:00|using doping| +08::01::2022 08:46:00|???????????? +08::01::2022 08:46:02|cute | +08::01::2022 08:46:04|TEC +08::01::2022 08:46:04|STRONK GUPPIES| +08::01::2022 08:46:05|YEAH JUST PUSH IT| +08::01::2022 08:46:05|TRONG +08::01::2022 08:46:07|SEEE NOOOO| +08::01::2022 08:46:07|STRONG LOLIS| +08::01::2022 08:46:09|>mudwrestling with guppies| +08::01::2022 08:46:09|Is this where they drown in mud?| +08::01::2022 08:46:09|They need to mod their engine like Leopn and they'll be okay| +08::01::2022 08:46:09|pushing +08::01::2022 08:46:10|>pushing a tank| +08::01::2022 08:46:11|whatr two sodoclones gonna do| +08::01::2022 08:46:12|OPING? +08::01::2022 08:46:16|>German Army a few months into Barbarossa| +08::01::2022 08:46:16|Strong enough to push a 28 ton tank| +08::01::2022 08:46:18|RAMMING SPEED| +08::01::2022 08:46:21|MAKO NO| +08::01::2022 08:46:21|Sodoko and Pasomi bisected due to Mako's reckless driving| +08::01::2022 08:46:21|MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO | +08::01::2022 08:46:24|Mako has seen enough| +08::01::2022 08:46:25|Mako has decided to kill Sodoko| +08::01::2022 08:46:25|NICE JUMP| +08::01::2022 08:46:26|i-ii-is this| +08::01::2022 08:46:27|lean? +08::01::2022 08:46:29|sodoko is in orbit| +08::01::2022 08:46:29|odoPazo +08::01::2022 08:46:29|0::10 +08::01::2022 08:46:30|UMP +08::01::2022 08:46:31|>doesn't even fucking slow down| +08::01::2022 08:46:32|op +08::01::2022 08:46:33|ugoi +08::01::2022 08:46:34|OMP +08::01::2022 08:46:35|JUMP GOOD| +08::01::2022 08:46:35|Those girls are so dirty down there | +08::01::2022 08:46:35|BREAK ORBIT| +08::01::2022 08:46:36|subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subt| +08::01::2022 08:46:38|FLYING CHILD| +08::01::2022 08:46:38|ECHI +08::01::2022 08:46:39|esbianas +08::01::2022 08:46:40|now kiss| +08::01::2022 08:46:40|now kiss| +08::01::2022 08:46:42|EX +08::01::2022 08:46:42|u:: +08::01::2022 08:46:42|AME +08::01::2022 08:46:43|She saw her chance, she had to take it| +08::01::2022 08:46:45| carbon caoting| +08::01::2022 08:46:46|THE NEGOTIATOR| +08::01::2022 08:46:47|ecchi.. +08::01::2022 08:46:47|EIICHI +08::01::2022 08:46:49|OTSUGEKI? +08::01::2022 08:46:49|UBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEX +08::01::2022 08:46:52|OTSUGEKI +08::01::2022 08:46:52|OTSUGEKI +08::01::2022 08:46:53|::u::-chads keep winning| +08::01::2022 08:46:55|OTSUGEKI +08::01::2022 08:46:56|AKAS +08::01::2022 08:46:57|::u::fags >>>::out::| +08::01::2022 08:46:57|Mako going for the friendly fire| +08::01::2022 08:46:58|otsugeki? +08::01::2022 08:46:59|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX +08::01::2022 08:47:00|ITS IN THE NAME| +08::01::2022 08:47:01|SHUT THE FUCK UP HOSOMI| +08::01::2022 08:47:01|SOMEON SHUT HOSOMI UP| +08::01::2022 08:47:02|asuga +08::01::2022 08:47:03|Baka da na, hosomi!| +08::01::2022 08:47:04|Remote CHARGE| +08::01::2022 08:47:05|YEAH HOSOME YOU RETARD| +08::01::2022 08:47:05|OTSUGEKI +08::01::2022 08:47:06|OTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSU +08::01::2022 08:47:06|OTSUGECCHI +08::01::2022 08:47:10|REMOTE TOTSUGEKI| +08::01::2022 08:47:13|shut the fuck up hosomi| +08::01::2022 08:47:14|AHHHHHHHHHHHHHHHHHHHHHHHHHH SEEEEEEEEEEEEEEEEEEEEEEEEEEEEKUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| +08::01::2022 08:47:15| 隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃 +08::01::2022 08:47:16|cute child| +08::01::2022 08:47:23|OOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHH +08::01::2022 08:47:27|Japs coping by rewriting history| +08::01::2022 08:47:30|TL Note: "Anzu" means "SEX".| +08::01::2022 08:47:32|anzu +08::01::2022 08:47:34|Thanks TL| +08::01::2022 08:47:36|thanks TL| +08::01::2022 08:47:36|SEX +08::01::2022 08:47:36|thanks, TL| +08::01::2022 08:47:36|>bite on them and wear them down Lews| +08::01::2022 08:47:37|THANKS TL| +08::01::2022 08:47:38|nzu +08::01::2022 08:47:39|Anzu's cooking!| +08::01::2022 08:47:43|WE HUNDRED MILLION WILL DIE LIKE SHATTERED JEWELS| +08::01::2022 08:47:46|TL DR LET'S DRAG THEM TO A MUDFIGHT| +08::01::2022 08:47:48|girls und yurukyan| +08::01::2022 08:47:52|Azusa always on guard| +08::01::2022 08:47:52|the hip flexibility on these girls| +08::01::2022 08:47:56|>singapore campaign | +08::01::2022 08:48:03|anzu eating my fermentized sperm| +08::01::2022 08:48:03|ip +08::01::2022 08:48:06|cool bird| +08::01::2022 08:48:08|nice birb| +08::01::2022 08:48:09|OOT +08::01::2022 08:48:09|SUPERB OWL| +08::01::2022 08:48:10|MUH SIPPY CUP| +08::01::2022 08:48:11|>tank milk| +08::01::2022 08:48:12|Time for OST| +08::01::2022 08:48:13|KINO SCENE INCOMING| +08::01::2022 08:48:13| つげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげき +08::01::2022 08:48:13|it's called an owl| +08::01::2022 08:48:15|weird Aussie noises| +08::01::2022 08:48:17|BIG BALLS| +08::01::2022 08:48:20|INCOMING KINO| +08::01::2022 08:48:20|>During the Burma Campaign, soldiers used to march without trousers due to rampant dyssentary| +08::01::2022 08:48:21|RICE BAWLS| +08::01::2022 08:48:21|CARED +08::01::2022 08:48:21|LIFE GOES ON DAY AFTER DAY AFTER DAY AFTER....| +08::01::2022 08:48:22|uadalcanal +08::01::2022 08:48:22|otsugeki? +08::01::2022 08:48:25|SCARED] +08::01::2022 08:48:26|ABASAN! +08::01::2022 08:48:27|fukuda is scared| +08::01::2022 08:48:29|do they really eat ntohing but rice balls and crackers?| +08::01::2022 08:48:29|JELLY DONUT!~| +08::01::2022 08:48:31|Owls are unironically evil| +08::01::2022 08:48:34|WE EVEN HAVE TIGERs| +08::01::2022 08:48:36|WARERA WA | +08::01::2022 08:48:37|cute onahole| +08::01::2022 08:48:37|Mako night mode activated| +08::01::2022 08:48:38|nips +08::01::2022 08:48:38|UTE +08::01::2022 08:48:39|Don't leave the boat| +08::01::2022 08:48:40|ute +08::01::2022 08:48:45|inoSong.mp3 +08::01::2022 08:48:46|UTOU KA?| +08::01::2022 08:48:46|ABASAN +08::01::2022 08:48:47|Isn't she based off the one Jap tank commander that wasn't retarded?| +08::01::2022 08:48:48|INGING +08::01::2022 08:48:48|AHAHA +08::01::2022 08:48:49|Kino time| +08::01::2022 08:48:49|HA HA HA| +08::01::2022 08:48:50|AHAHA +08::01::2022 08:48:52|ABASAAAAAAAANNNNNNN +08::01::2022 08:48:53|inging? +08::01::2022 08:48:55|! BANGER ALERT !| +08::01::2022 08:48:56|INO +08::01::2022 08:48:56|banger alert| +08::01::2022 08:48:58|nightbattle is code for sex in kancolle fanart| +08::01::2022 08:48:58|KINO INCOMING| +08::01::2022 08:48:58|INO +08::01::2022 08:49:00|ABAA +08::01::2022 08:49:00|BASED NIPS| +08::01::2022 08:49:00|HELL YA SONG| +08::01::2022 08:49:02|ABASAN! +08::01::2022 08:49:02|WARERA WA CHIHATAN KOI MONO SHIRAZU| +08::01::2022 08:49:02|OIIIIIIIIIIII +08::01::2022 08:49:03|KINO JAPANESE IMPERIALIST WAR SONGS| +08::01::2022 08:49:03| バさん +08::01::2022 08:49:04|TOTSUGEKI ANTHEM STAND UP| +08::01::2022 08:49:04|TOTSUGEKI: THE MUSICAL| +08::01::2022 08:49:07|geime me a caguama| +08::01::2022 08:49:08|KINO KINO KINO KINO KINO KINO KINO KINO KINO | +08::01::2022 08:49:10|ITAAAAA +08::01::2022 08:49:11|WAREWA WA CHIHATAN| +08::01::2022 08:49:13|INO +08::01::2022 08:49:13|WARERA WA CHIHATAN| +08::01::2022 08:49:13|sing along, folks| +08::01::2022 08:49:13|ITA +08::01::2022 08:49:14|KINO ON THE MENU BOYS| +08::01::2022 08:49:15|HIHATAN!!!! +08::01::2022 08:49:16|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:49:16|KINO MOMENT| +08::01::2022 08:49:17|Warerawa chihatan| +08::01::2022 08:49:18|KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +08::01::2022 08:49:19|WAREWA WA CHIHATAN| +08::01::2022 08:49:19|Imperial Japan songs are kino| +08::01::2022 08:49:19|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:49:20|\o:: \o:: \o:: 七生報國 \o:: \o:: \o::| +08::01::2022 08:49:20|The trees can sing now? Scary.| +08::01::2022 08:49:20|INOCHI SHIRAZU| +08::01::2022 08:49:21|OMOOOOOOOO +08::01::2022 08:49:22|VOLUME UP| +08::01::2022 08:49:24|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:49:27|ino +08::01::2022 08:49:27|KINO KINO KINO KINO KION KINO| +08::01::2022 08:49:28|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:49:28|NORE NOREEEE| +08::01::2022 08:49:29|NORE NORE SENSHA NI NORE| +08::01::2022 08:49:30|\o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: | +08::01::2022 08:49:30|INO +08::01::2022 08:49:30|INO +08::01::2022 08:49:31|ANZAI!!! +08::01::2022 08:49:32|o:: +08::01::2022 08:49:32|\o:: \o:: \o:: 七生報國 \o:: \o:: \o::| +08::01::2022 08:49:33|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:49:34|ABA-SAN +08::01::2022 08:49:36|BROS THE TREES ARE SINGING IN JAPANESE IM SCARED| +08::01::2022 08:49:37|ABASAN +08::01::2022 08:49:38|not as kino as frogs| +08::01::2022 08:49:39|\o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: | +08::01::2022 08:49:40|I FEEL THE POWER OF TOTSUGEKI| +08::01::2022 08:49:41|ANZAI!!!!!! +08::01::2022 08:49:41| のきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきの +08::01::2022 08:49:42|Imagine riding into Nanking with this song basting| +08::01::2022 08:49:43|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:49:43|UBBA-SAN +08::01::2022 08:49:43|KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +08::01::2022 08:49:44|BANGER ALERT! BANGER ALERT!| +08::01::2022 08:49:46|Bad trees. Scary singing. | +08::01::2022 08:49:48|\o:: \o:: \o:: 七生報國 \o:: \o:: \o::| +08::01::2022 08:49:49|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:49:50| の +08::01::2022 08:49:50|KINO ALERT| +08::01::2022 08:49:51|god this soothes my heart so much| +08::01::2022 08:49:52|>no karaoke| +08::01::2022 08:49:53|TOTSUGEKI IN MY VEINS!| +08::01::2022 08:49:53|TOTSUGEKI SONG| +08::01::2022 08:49:55|\o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: | +08::01::2022 08:49:56|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:49:56|note: I am the lover| +08::01::2022 08:49:58|KOWAI MONO SHIRAZUUUUUUUUUU| +08::01::2022 08:49:58|>ywn ride tanks and sing with the boys| +08::01::2022 08:49:58|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:50:00| のきのきのきのきの +08::01::2022 08:50:01|HIHATAN +08::01::2022 08:50:03|ANZAI!!!! +08::01::2022 08:50:03|\o:: CHI HA TA N| +08::01::2022 08:50:04|STEEL OXEN!| +08::01::2022 08:50:06|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:50:08|\o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: \o:: | +08::01::2022 08:50:09|NORE NORE TETSUGYUU NI NOTTE| +08::01::2022 08:50:11|why couldn't they get a real life song for this| +08::01::2022 08:50:12|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:50:12|NORE NORE TETSUGYUU NI NOTTEEEEEEEEEEE| +08::01::2022 08:50:14|ANZAIIIIIIIIIIIIIIII +08::01::2022 08:50:15|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:50:16|ABASAN +08::01::2022 08:50:16|ABASAN +08::01::2022 08:50:16|I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOR| +08::01::2022 08:50:17|At least it's not finnish singing in the jungles| +08::01::2022 08:50:18|ANZAI!!!! +08::01::2022 08:50:20|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:50:20|ANBANZAI +08::01::2022 08:50:21| こにいるの~ +08::01::2022 08:50:22|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:50:25|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:50:27|TL NOTE: The "beloved" is me| +08::01::2022 08:50:27|NORE NOOORE| +08::01::2022 08:50:27|THESE GIRLS HAVE KILLED THOUSANDS OF CHINESE CIVILIANS| +08::01::2022 08:50:27|\o:: \o:: \o:: 天皇陛下万歳 \o:: \o:: \o::| +08::01::2022 08:50:28|\o:: \o:: \o:: \o:: \o:: \o:: raba san is a lucky raba| +08::01::2022 08:50:30|\O:: TENNO HEIKA BANZAI \O::| +08::01::2022 08:50:32|HAT +08::01::2022 08:50:33|NORHT KOREA BEST KOREA| +08::01::2022 08:50:33|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:50:35|NAGURA and her huge forehead| +08::01::2022 08:50:36|THAT +08::01::2022 08:50:39|HAT?! +08::01::2022 08:50:40|HAT +08::01::2022 08:50:40|JAPAN DID NOTHING WRONG| +08::01::2022 08:50:40|T H A T| +08::01::2022 08:50:43|HAT +08::01::2022 08:50:43|Ah yes THAT| +08::01::2022 08:50:44|HAT!? +08::01::2022 08:50:45|mako is a creature of the night| +08::01::2022 08:50:45|>ch*nese "people"| +08::01::2022 08:50:46|THAT* +08::01::2022 08:50:46|based ::his::| +08::01::2022 08:50:46|HAT +08::01::2022 08:50:47|Imperial Japan was kino, Props to them trying to take on westerners in war despite being retarded. | +08::01::2022 08:50:48|hana ded| +08::01::2022 08:50:48|hat +08::01::2022 08:50:49|Waku waku| +08::01::2022 08:50:50|uyaa~ +08::01::2022 08:50:53|MAKO IS WIRED AS FUCK| +08::01::2022 08:50:55|That? you mean war crimes?| +08::01::2022 08:50:55|mako is literally me| +08::01::2022 08:50:57|NOO, Nishi, don't read THAT| +08::01::2022 08:50:57|SHINYU DATTA| +08::01::2022 08:50:58|literally me| +08::01::2022 08:51:01|pooky +08::01::2022 08:51:01|Pulling out the TK doujins I see| +08::01::2022 08:51:02|LIterally me| +08::01::2022 08:51:02|I am the night. -Mako| +08::01::2022 08:51:03|AAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 08:51:03|oppaganga +08::01::2022 08:51:04|I HATE CHINA I HATE KOREA I HATE SEA I HATE RUSSIA I HATE CHINA I HATE KOREA I HATE SEA I HATE RUSSIA I HATE CHINA I HATE KOREA I HATE SEA I| +08::01::2022 08:51:04|OPELGANGERRRR +08::01::2022 08:51:05|OPPELGÄNGER +08::01::2022 08:51:05|OWAI +08::01::2022 08:51:06|MAKO WOKE AF| +08::01::2022 08:51:07|ek +08::01::2022 08:51:08|pooky +08::01::2022 08:51:08|AAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 08:51:09|Mako's batman| +08::01::2022 08:51:11|You where merely raised by the darkness| +08::01::2022 08:51:13|caredoko +08::01::2022 08:51:14|ETARD +08::01::2022 08:51:14|>SLIM RIVER| +08::01::2022 08:51:14|Aren't countries cutest when they're almost retarded?| +08::01::2022 08:51:15|Twin Peaks| +08::01::2022 08:51:17|If you ask me they didn't kill nearly enough chinks| +08::01::2022 08:51:17|ek +08::01::2022 08:51:17| +08::01::2022 08:51:20|ONBI +08::01::2022 08:51:22|Rabbit team is evolving | +08::01::2022 08:51:23|are red light flashlights tank equpment?| +08::01::2022 08:51:24|EATH +08::01::2022 08:51:27|Cool croc| +08::01::2022 08:51:28|ani +08::01::2022 08:51:28|ANI +08::01::2022 08:51:28|ani +08::01::2022 08:51:31|UUU +08::01::2022 08:51:31|SNAAAKE EATERRR| +08::01::2022 08:51:31|ANI +08::01::2022 08:51:32|ANI +08::01::2022 08:51:33|The crocodiles are speaking Japanese| +08::01::2022 08:51:34|rika... +08::01::2022 08:51:34|flag da| +08::01::2022 08:51:34|ani? +08::01::2022 08:51:35|ANI +08::01::2022 08:51:35|kill the wani| +08::01::2022 08:51:36|WANI LOOK OUT| +08::01::2022 08:51:36|EEEEEERRRRRRRIIIIIKKKKKKKAAAAAAAAA +08::01::2022 08:51:37|ANI +08::01::2022 08:51:37|rika? +08::01::2022 08:51:37|red flashlights don't kill your nightvision| +08::01::2022 08:51:39|BVIOUS +08::01::2022 08:51:40|GET OUT OF HERE ERIKA| +08::01::2022 08:51:41|Time to break out the tanker chocolate| +08::01::2022 08:51:41|JAPS IN THE WIRE| +08::01::2022 08:51:42|I'M STILL IN A DREAM... SNAKE EATER!| +08::01::2022 08:51:42|FLORIDA +08::01::2022 08:51:43|LOOK OUT| +08::01::2022 08:51:43|Bit big?| +08::01::2022 08:51:44|OH SHIT| +08::01::2022 08:51:45|AAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 08:51:45|Crocidiles eating japs 1945 colorized| +08::01::2022 08:51:47|THEY FALL FOR THIS| +08::01::2022 08:51:47|us +08::01::2022 08:51:48|BASED BGM| +08::01::2022 08:51:49|RUMS +08::01::2022 08:51:50|>no pen| +08::01::2022 08:51:52|how did azusa know>| +08::01::2022 08:51:53|IT'S HUGE| +08::01::2022 08:51:55|BEAT TO QUARTERS| +08::01::2022 08:51:55|ANIZILLA +08::01::2022 08:51:58|Azusa has more than 3 braincells| +08::01::2022 08:51:59|Azusa is very smart| +08::01::2022 08:51:59|What's Erika doing here?| +08::01::2022 08:52:01|OKAN! +08::01::2022 08:52:03|nice angling| +08::01::2022 08:52:04|there's been a 10 meter saltwater croc once| +08::01::2022 08:52:04|OKKAN +08::01::2022 08:52:05|What the fuck the entire fucking tanks was underneath| +08::01::2022 08:52:05| 喊 +08::01::2022 08:52:07|When the tank is a boat.| +08::01::2022 08:52:08|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:52:08|OKKAN +08::01::2022 08:52:09|ERIKA IS SO FUCKING WET RN WATCHING THIS| +08::01::2022 08:52:09|THEY MISSED A SLOW MOVING AMPHIBIOUS TARGET | +08::01::2022 08:52:10|BAKAS IN THE TREES BAKAS IN THE TREES| +08::01::2022 08:52:11|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:52:12|ANZAI +08::01::2022 08:52:13|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:52:14|IGGERO +08::01::2022 08:52:14|How fucking big was the wani| +08::01::2022 08:52:14|I wish I had more than 3 braincells| +08::01::2022 08:52:16|AKUSAN +08::01::2022 08:52:16|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:52:22|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:52:25|GLORY TO NIPPON!!| +08::01::2022 08:52:25|THEY ARE IN THE FUCKING TREES| +08::01::2022 08:52:25|\o:: \o:: \o:: 天皇陛下万歳 \o:: \o:: \o::| +08::01::2022 08:52:26|Now you telling me crocodiles can climb trees and speak jungle Japanese?| +08::01::2022 08:52:30| 踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +08::01::2022 08:52:31|FUCKING SEATANKS| +08::01::2022 08:52:33|Interior crocodile alligator. I drive a Chevrolet movie theater.| +08::01::2022 08:52:35|those kami are hella durable too| +08::01::2022 08:52:35|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 08:52:36| 踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +08::01::2022 08:52:38|just don't join Ooarai, Anzio or Chihatan and you'll be fine| +08::01::2022 08:52:39|w +08::01::2022 08:52:40| 踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +08::01::2022 08:52:41|are these tanks real| +08::01::2022 08:52:42|I HAVE TO PISS SO BADLY| +08::01::2022 08:52:44|go home GI| +08::01::2022 08:52:45| 踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +08::01::2022 08:52:47|GLORY TO NIPPON!!| +08::01::2022 08:52:49|Welcome to the rice fields motherfucker | +08::01::2022 08:52:51|SUPREME CHAMPION| +08::01::2022 08:52:51|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:52:51|stop the moonrune spam| +08::01::2022 08:52:55|NIPPON BANZAI| +08::01::2022 08:53:11| の +08::01::2022 08:53:15|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:53:16|IMO +08::01::2022 08:53:17|\o:: \o:: \o:: 天皇陛下万歳 \o:: \o:: \o:: \o:: \o:: \o:: 七生報國 \o:: \o:: \o::| +08::01::2022 08:53:18|That’s a weird looking tank| +08::01::2022 08:53:19|ROOSEVELT EATS SHIT| +08::01::2022 08:53:19|aijubros +08::01::2022 08:53:23|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:53:23|both are japan| +08::01::2022 08:53:25|Duck came back| +08::01::2022 08:53:31|HIPPO BROS| +08::01::2022 08:53:32|STUG LIFE| +08::01::2022 08:53:33|carbon" +08::01::2022 08:53:38|NONBIRI TOTSUGEKI| +08::01::2022 08:53:38|NONBIRI TOTSUGEKI!| +08::01::2022 08:53:41|nonbiri totsugeki| +08::01::2022 08:53:46|the (((kappa))) cries in pain as it shoots you| +08::01::2022 08:53:46|NONBIRI TOTSUGEKI| +08::01::2022 08:53:48|NONBIRI TOSUGEKI| +08::01::2022 08:53:50|ALL UNITS SNCHRONIZE YOUR PISS| +08::01::2022 08:53:50| んびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃 +08::01::2022 08:53:51|THEY ACTUALLY SURVIVE THIS| +08::01::2022 08:53:56|still not disable after shaving top half| +08::01::2022 08:53:59|ding) +08::01::2022 08:54:00| んびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃 +08::01::2022 08:54:03|NON NON BIYORI TOTSUGEKI?| +08::01::2022 08:54:03|AAAAAADA +08::01::2022 08:54:05|ada +08::01::2022 08:54:08|MADA MADA MADA| +08::01::2022 08:54:09|TE +08::01::2022 08:54:09|MADA MADA MADA MADA| +08::01::2022 08:54:09|aaaaada +08::01::2022 08:54:11|TE!!! +08::01::2022 08:54:11|te +08::01::2022 08:54:12|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\o:: \o:: \o:: TE| +08::01::2022 08:54:12|TE +08::01::2022 08:54:12|EEEEEEE +08::01::2022 08:54:14|EEEEEE +08::01::2022 08:54:14|MADA MADA MADA | +08::01::2022 08:54:16|UTE UTE UTE| +08::01::2022 08:54:19|MADA MADA MADA....| +08::01::2022 08:54:23|AJA +08::01::2022 08:54:23|ICOCHET +08::01::2022 08:54:24|AJAA +08::01::2022 08:54:28|how are they not all fucking dead| +08::01::2022 08:54:30|eoponbros... +08::01::2022 08:54:37|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o:: TOTSUGEKI| +08::01::2022 08:54:39|GOKIGENYO TOTSUGEKI| +08::01::2022 08:54:40|GOKIGENYOU TOTSUGEKI| +08::01::2022 08:54:41|OTSUGEKI +08::01::2022 08:54:43| ノ +08::01::2022 08:54:45|OTSUGEKI +08::01::2022 08:54:46|GOKIGENYOU TOTSUGEKI| +08::01::2022 08:54:48|GOKIGENYO TOTSUGEKI| +08::01::2022 08:54:53|RRRRRRRRRRRRRRRR +08::01::2022 08:54:53|GOKIGENYOU TOTSUGEKI| +08::01::2022 08:54:54|YEAH KILLEM| +08::01::2022 08:54:56|FOLLOW MY TRACERS| +08::01::2022 08:55:01|Powerful retards| +08::01::2022 08:55:01|RTBRTBRTBRTBRTBRTBRT +08::01::2022 08:55:04|fuck off captain america| +08::01::2022 08:55:04|Oh no Leopon, no more drift| +08::01::2022 08:55:07| ノ キノキノキノキノキノキノ +08::01::2022 08:55:09|TOTO MY TYRES| +08::01::2022 08:55:23|Keep firing tracers until we burn this jungle down!| +08::01::2022 08:55:26| 画映画 +08::01::2022 08:55:27|7 +08::01::2022 08:55:34|ANZAI +08::01::2022 08:55:34|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:55:38|DEEP REGRET| +08::01::2022 08:55:40|oorschebros... +08::01::2022 08:55:41|go home porsche| +08::01::2022 08:55:42|rip ::oo::| +08::01::2022 08:55:44|SHAMEFUR DISPRAY| +08::01::2022 08:55:47| ンポ +08::01::2022 08:55:47| 進 +08::01::2022 08:55:48|DEEP REGRET| +08::01::2022 08:55:49|Now the trees can charge? | +08::01::2022 08:55:53|Porsche +08::01::2022 08:55:56|OUR MEN ARE RUNNING FROM THE BATTLEFIELD| +08::01::2022 08:55:58|COMMIT SUDOUKO RIGHT NOW| +08::01::2022 08:56:03| 進あるのみ! +08::01::2022 08:56:04|HAMADA OUT| +08::01::2022 08:56:07|OUR MEN ARE WAVERING| +08::01::2022 08:56:07|Fuck i'm in the mood for some HOI4 now| +08::01::2022 08:56:10|I demand sodoko commit sodoko!| +08::01::2022 08:56:12|Thre trees can even swim? fuck this theater| +08::01::2022 08:56:12|sodoko already dieded| +08::01::2022 08:56:13| 撃前進 +08::01::2022 08:56:17|otsugeki! +08::01::2022 08:56:19|OTSUGEKIDEWANAIDAROU +08::01::2022 08:56:20|AKARAN +08::01::2022 08:56:26|Woah just like what Chihatan would do| +08::01::2022 08:56:31|>charging out of desperation. what did she mean by this?| +08::01::2022 08:56:32| 目分からんwww +08::01::2022 08:56:36|hihatanbros... +08::01::2022 08:56:40|If the trees can fly, we all bouncing| +08::01::2022 08:56:44|UEEEEEEEEEEEEEEEEEEEEE +08::01::2022 08:56:46|Chihatanbros we can do this!| +08::01::2022 08:56:46|EEEEEEEE +08::01::2022 08:56:50|OOARAIBROS DID WE GET TOO COCKY?| +08::01::2022 08:56:50|TE +08::01::2022 08:56:51|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 08:56:51|EEEE +08::01::2022 08:56:53|ino +08::01::2022 08:56:56|oh shit the serious music| +08::01::2022 08:56:58|ANZAI +08::01::2022 08:57:03|Ooarai is done for| +08::01::2022 08:57:05|Chihatan might actually win this| +08::01::2022 08:57:05| てえええええええええええ +08::01::2022 08:57:09|OOARAI BROS....IT'S OVER| +08::01::2022 08:57:10|stralia a shit| +08::01::2022 08:57:11|KINO JUNGLE WARFARE| +08::01::2022 08:57:13|OORAI CHADS WE GOT TOO COCKY| +08::01::2022 08:57:15|WE HAVE THIS IN THE BAG CHIHABROS| +08::01::2022 08:57:16|time to buy chihatancoin| +08::01::2022 08:57:17|It's quiet. Too quiet.| +08::01::2022 08:57:19|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 08:57:23|ONOOOO +08::01::2022 08:57:30|Ooarai forgot retards have retard strenght| +08::01::2022 08:57:33|>what the fuck am I reading?| +08::01::2022 08:57:35|it's a ruse!| +08::01::2022 08:57:36| 歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳  +08::01::2022 08:57:39|Good thing those commanders took their carbon supplements, would be bad if the MG rounds could actually hurt them| +08::01::2022 08:57:42|Chihatan needs bayonets That's what they're missing.| +08::01::2022 08:57:43|WAIT THIS ISN'T THE WAY TO ALBERQUEQUE| +08::01::2022 08:57:44|>is this bait?| +08::01::2022 08:57:46|THEY'RE EVEN FIRING TRACERS OUT OF DESPERATION! WE CAN DO IT!| +08::01::2022 08:57:54|RAKE! +08::01::2022 08:57:54|are we still in df2?| +08::01::2022 08:57:55|Chihatan needs kamikaze planes| +08::01::2022 08:58:00|based on what?| +08::01::2022 08:58:00|source? +08::01::2022 08:58:01|>DRIVE ME CLOSER, I WANT TO HIT THEM WITH MY SWORD| +08::01::2022 08:58:02|eah +08::01::2022 08:58:03|hkas +08::01::2022 08:58:03|WE'VE REACHED DF6| +08::01::2022 08:58:04| く +08::01::2022 08:58:04|Just be good trees and follow the shiny tracers| +08::01::2022 08:58:04|URE +08::01::2022 08:58:05|I bet those tracer are just Glown in the Dark airsoft BBS LMAO| +08::01::2022 08:58:23|CHIHATANBROS THIS IS OUR YEAR| +08::01::2022 08:58:26|This cant be happening Chi ha tan bros...| +08::01::2022 08:58:27|No way Fukuda| +08::01::2022 08:58:29|oh no no no| +08::01::2022 08:58:31|OH NO!| +08::01::2022 08:58:33|LONG LIVE HIROHITO| +08::01::2022 08:58:33|OH NO| +08::01::2022 08:58:34|HOW COULD THIS HAPPEN TO US| +08::01::2022 08:58:34|Chihatan new protag school| +08::01::2022 08:58:34|it's over| +08::01::2022 08:58:35|OH NONONONO IS THIS IT CHIHATANBROS| +08::01::2022 08:58:38|AH +08::01::2022 08:58:39|WHAT THE FUCK I PUT $50000 ON CHIHATAN| +08::01::2022 08:58:39|AAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 08:58:40|IPPONBROS +08::01::2022 08:58:41|TOTSUGEKI BROS….| +08::01::2022 08:58:42|eh +08::01::2022 08:58:43|Nah nah, no trench, just shiny tracers| +08::01::2022 08:58:43|totsugeki straight to hell| +08::01::2022 08:58:43|Isn't this THEIR ship? how did they fall for that hill?| +08::01::2022 08:58:44|WHY DID THE AMPHIBIOUS TANK FOLLOW THEM ONTO LAND| +08::01::2022 08:58:44|eh +08::01::2022 08:58:47|FUKUDA NOOOOOOOOOOOO| +08::01::2022 08:58:48|EH +08::01::2022 08:58:49|did we... get too cocky....| +08::01::2022 08:58:53|CHIHTAN ACTUALLY SURVIVE THIS| +08::01::2022 08:58:53|I'M A GENIUS. OH NO!| +08::01::2022 08:58:54|MUDBROS... WE WIN AGAIN| +08::01::2022 08:58:54|HIHATANBROS.... +08::01::2022 08:58:54|>Know its a trap >Dont break| +08::01::2022 08:58:55|nice shot| +08::01::2022 08:58:55|oh great, she's dead| +08::01::2022 08:58:56|get miho'd| +08::01::2022 08:58:56|ooarai turn to miss a lot?| +08::01::2022 08:58:58|HOW DID YOU MISS| +08::01::2022 08:58:59|THE FOOLS DUG THEIR OWN GRAVE| +08::01::2022 08:59:01|IF CHI HA TAN MOVES ME AND MY FAMILY WILL MOVE TO NAGASAKI| +08::01::2022 08:59:06|time for the gangbang| +08::01::2022 08:59:10|Ooarai is finally on the jobbing block| +08::01::2022 08:59:11|etard +08::01::2022 08:59:12|HOW DID YOU MISS| +08::01::2022 08:59:14|ANZAAAAAAAAAAAAIIIIIIIIIIIIII +08::01::2022 08:59:14|>everyone on oorai suddenly miss every shot| +08::01::2022 08:59:15|Look at us, We the trees now| +08::01::2022 08:59:18|TIME TO GET BOKO'D| +08::01::2022 08:59:19|IT'S OVER CHIHATAN WE HAVE THE HIGH GROUND| +08::01::2022 08:59:21|CUTE TURN| +08::01::2022 08:59:22|PIN +08::01::2022 08:59:23|Nobody in Ooarai can aim| +08::01::2022 08:59:24|ab +08::01::2022 08:59:25|spin +08::01::2022 08:59:26|PIIIIIN +08::01::2022 08:59:27|RIP TO THE BRO WHO BET AGAINST ORORAI | +08::01::2022 08:59:27|AWARE +08::01::2022 08:59:27|revenge for the bridge scene| +08::01::2022 08:59:28|HOSOMI SPIN| +08::01::2022 08:59:29|piiin +08::01::2022 08:59:30|MAWARI MIGI| +08::01::2022 08:59:33|aussies where they should be| +08::01::2022 08:59:33|DONUT SPIN| +08::01::2022 08:59:34|otsugeki? +08::01::2022 08:59:34| レ +08::01::2022 08:59:34|Just drop the nukes already| +08::01::2022 08:59:37|Insufficient gun depression| +08::01::2022 08:59:39|Even worse aim than the French| +08::01::2022 08:59:41|STSUGEKI +08::01::2022 08:59:45|the fools, the trench is too deep, their gun depression can't go that deep| +08::01::2022 08:59:48| 歳 万歳 万歳 万歳  +08::01::2022 08:59:50|OTSUGEKI +08::01::2022 08:59:52| +08::01::2022 08:59:53|COME HOME YELLOWMAN| +08::01::2022 08:59:53|WHAT THE FUCK| +08::01::2022 08:59:53|lil retarts trynna glitchiong through the wall| +08::01::2022 08:59:53|HAT +08::01::2022 08:59:54|! +08::01::2022 08:59:54|TF +08::01::2022 08:59:55|ANI +08::01::2022 08:59:55|!!!!!!!!!!!!!!!!! +08::01::2022 08:59:56|I thought Hana was supposed to be a great gunner?| +08::01::2022 08:59:58|O +08::01::2022 08:59:58| 進あるのみ! +08::01::2022 08:59:58|ANI +08::01::2022 08:59:58|ANI?!?!?! +08::01::2022 08:59:58|TETTAI DATTO!?| +08::01::2022 08:59:59| +08::01::2022 08:59:59|WHAT THE FUCK| +08::01::2022 09:00:00|?????????????? +08::01::2022 09:00:00|!!!!!!!!!!!! +08::01::2022 09:00:01|THEY ARE STATIONARY| +08::01::2022 09:00:01|!!!!!!!!!!!!!!!! +08::01::2022 09:00:01|ASAKA +08::01::2022 09:00:01|UH? +08::01::2022 09:00:02|WTF DID SHE JUST SAY| +08::01::2022 09:00:03|NISHI WAS EXECUTED THE NEXT DAY| +08::01::2022 09:00:04|: +08::01::2022 09:00:04|! +08::01::2022 09:00:04|FUKUDA YOU RAT! WE WEREN'T CHARGING! YOU GAVE ME THE OL' SPICY RETREAT! HOW COULD YOU GIVE YOUR OWN SISTERS THE OL' SPICY RETREAT?!| +08::01::2022 09:00:05| 退?!?! +08::01::2022 09:00:06|ANI +08::01::2022 09:00:06|SHOOT THEM| +08::01::2022 09:00:06|?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?! +08::01::2022 09:00:06|ETTAI +08::01::2022 09:00:06|?????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!!!! +08::01::2022 09:00:07|Who charges a vertical slope?| +08::01::2022 09:00:07|AKANA +08::01::2022 09:00:07|DO NOT RETREAT| +08::01::2022 09:00:08|ETTAI!? +08::01::2022 09:00:08|???????????????????????? +08::01::2022 09:00:09|SHAMEFUR DISPRAY| +08::01::2022 09:00:11|gun cant aim in to pit| +08::01::2022 09:00:11|WHY IS NOBODY FIRING| +08::01::2022 09:00:12|MEIJI REFORMS| +08::01::2022 09:00:12|?!?!?!?!?!?!?!?!?!?!?!?!?!?!"!?!??!?!?!?! +08::01::2022 09:00:13|no way| +08::01::2022 09:00:13|?????????????????????????????? +08::01::2022 09:00:14|how nice of Ooarai to stop their fire| +08::01::2022 09:00:14|time for nishi to shine| +08::01::2022 09:00:14|NO FUCKING WAY| +08::01::2022 09:00:15|>TALKING IS A FREE ACTION, PLZ DONT FIRE| +08::01::2022 09:00:15|Totsugekibros... ARE WE RETREATING?!| +08::01::2022 09:00:16|WHICH WAY EASTERN WOMAN?| +08::01::2022 09:00:16|posting in retreat| +08::01::2022 09:00:17|Uhhh oorai bros? Why haven't we won yet? They're trapped...| +08::01::2022 09:00:19|not very cash money| +08::01::2022 09:00:19|WHY ARE YOU RETREATING| +08::01::2022 09:00:19|SHAMEFURE DISPRAY| +08::01::2022 09:00:20|Tamada.exe has stopped working| +08::01::2022 09:00:21|what the fuck| +08::01::2022 09:00:23|HER SMILE AND TOTSUGEKI... GONE| +08::01::2022 09:00:25|aint +08::01::2022 09:00:25|_O +08::01::2022 09:00:25|NO NO NO NO HECKIN CHI-HA BROS| +08::01::2022 09:00:26|RETROGRADE CHARGE| +08::01::2022 09:00:26|YOU HAVE A GUN THAT CAN REACH THEM| +08::01::2022 09:00:27|NBELIEVABLE +08::01::2022 09:00:27|DISHONURABRE PIGGU| +08::01::2022 09:00:27|TOTSUGEKI BROS NOT LIKE THISSSSSSSSSSSSSS| +08::01::2022 09:00:32|SS +08::01::2022 09:00:33|ANCESTORS CRTING| +08::01::2022 09:00:34|TAMADA HAD NEVER SEEN SUCH BULLSHIT| +08::01::2022 09:00:34|WHAT IS THIS RETREAT YOU SPEAK OFF?| +08::01::2022 09:00:34|No retreat. Just charge opposite direction| +08::01::2022 09:00:34|LETS GO CHIHATAN| +08::01::2022 09:00:35|SIMILE GONE| +08::01::2022 09:00:36|was zum teufel?| +08::01::2022 09:00:37|UNIT 731 DIDN'T EXIST| +08::01::2022 09:00:37|YOU CAN PENETRATE FROM ANY ANGLE| +08::01::2022 09:00:38|OLLEYBUTTS +08::01::2022 09:00:39|TAEKO IS CUTE| +08::01::2022 09:00:41|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:00:44|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:00:46|this is shameful...| +08::01::2022 09:00:47|They RAN| +08::01::2022 09:00:47|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 09:00:48|olleybut +08::01::2022 09:00:48|THEY ARE MOVING IN A STRAIGHT LINE| +08::01::2022 09:00:51|S3? +08::01::2022 09:00:51|kino line holy fuck| +08::01::2022 09:00:52|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:00:52|YEAR TIMESKIP| +08::01::2022 09:00:53|USSIES +08::01::2022 09:00:57|2 YEAR TARNSITION| +08::01::2022 09:00:58|TWO YEARS LATER...| +08::01::2022 09:00:58|SHAMEFUR DISPRAY| +08::01::2022 09:01:01|TWO YEARS LATER| +08::01::2022 09:01:02|DF3 TIME HERE WE GO BROS| +08::01::2022 09:01:05|019? +08::01::2022 09:01:05|2019 -> 2021| +08::01::2022 09:01:06|2 YEARS LATER| +08::01::2022 09:01:06|TWO YEARS LATER...| +08::01::2022 09:01:07|2 years in the blink of an eye...| +08::01::2022 09:01:08|TIME WARP| +08::01::2022 09:01:09|god they're all so fucking flat| +08::01::2022 09:01:09|It's been 2 years| +08::01::2022 09:01:10|Home stretch.| +08::01::2022 09:01:10|ESSSSSSSSGOOOOOOOOOO +08::01::2022 09:01:11|10 hours in| +08::01::2022 09:01:13|two years bros | +08::01::2022 09:01:14|WOW THAT WAS FAST| +08::01::2022 09:01:17|S3 +08::01::2022 09:01:19|YOU KILLED TAMADA| +08::01::2022 09:01:19|THE FINAL STRETCH| +08::01::2022 09:01:20|CHIHATAN HAS BEEN ON THE RETREAT FOR TWO YEARS| +08::01::2022 09:01:20|i hope the frogs brought enough food for 2 years| +08::01::2022 09:01:23|OOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 09:01:26|Onion soup| +08::01::2022 09:01:26|marie erotic| +08::01::2022 09:01:29|>she got in the bath| +08::01::2022 09:01:30|EW +08::01::2022 09:01:30|3 movies for one match?| +08::01::2022 09:01:30|EWD +08::01::2022 09:01:30|LETS GO LAST HOUR| +08::01::2022 09:01:31|TIME IS CONVULUTED| +08::01::2022 09:01:31|motto keeki| +08::01::2022 09:01:32|We in the last part now?| +08::01::2022 09:01:34|how many anons are still standing?| +08::01::2022 09:01:35|UOOOOOOOOOOOOHHHHHH MARIE| +08::01::2022 09:01:35|Marie must be a prune by now| +08::01::2022 09:01:35|OOOUUUUUUUUUUHH +08::01::2022 09:01:35|ATTY +08::01::2022 09:01:36|I have not slept in 25 hours| +08::01::2022 09:01:36|SHE'S FAT| +08::01::2022 09:01:37|she ate all 12 cakes| +08::01::2022 09:01:39|Does the fat bitch ever stop eating| +08::01::2022 09:01:40|LET HER EAT CARAMBER| +08::01::2022 09:01:42|So we're gonna get DF4 right after this, r-right?| +08::01::2022 09:01:44|delicious french soup| +08::01::2022 09:01:44|God i need to fuck Marie| +08::01::2022 09:01:45|I haven't seen this yet| +08::01::2022 09:01:47|Marie straight up not learning. Shame.| +08::01::2022 09:01:47|10 am, still awake| +08::01::2022 09:01:49|ONION CAKE| +08::01::2022 09:01:50|12 HOUR MOVIE| +08::01::2022 09:01:50|FORTY CAKES| +08::01::2022 09:01:51|AYE CARAMBAR| +08::01::2022 09:01:55|TINKY +08::01::2022 09:01:55|still strong| +08::01::2022 09:02:03|9 AM| +08::01::2022 09:02:04|STILL GOING STRONG| +08::01::2022 09:02:05|HYPER MAKO| +08::01::2022 09:02:06|BERGELE TIEM :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:02:06|10 hours on the stream still goin| +08::01::2022 09:02:07|ILKSHAKE +08::01::2022 09:02:08|ek +08::01::2022 09:02:08|MAKO IS FUCKING WIRED| +08::01::2022 09:02:10|NIGHT MODE ENABLED| +08::01::2022 09:02:12|DOES SHE TAKE HER COFFE BLACK| +08::01::2022 09:02:13|AM +08::01::2022 09:02:14|i'm staying up all night tonight too...| +08::01::2022 09:02:17|time for a cheese sandwich?| +08::01::2022 09:02:19|Midnight here, how about you guys?| +08::01::2022 09:02:21|Mako is AWAKE!| +08::01::2022 09:02:21|VOLLEYBU CLUB STINKING IN THEIR TYPE-89 UOH| +08::01::2022 09:02:24|AM +08::01::2022 09:02:24|EVEN THE GIRLS ARE STAY UP| +08::01::2022 09:02:26|Just give these girls panzerschokolade| +08::01::2022 09:02:26|9:00 +08::01::2022 09:02:27|2am here| +08::01::2022 09:02:28|2 AM HERE| +08::01::2022 09:02:30|tfw 10am| +08::01::2022 09:02:30|why do you have to do that?| +08::01::2022 09:02:31|3am bros where we at| +08::01::2022 09:02:31|am +08::01::2022 09:02:33|just hit midnight lol| +08::01::2022 09:02:34|west coast report in| +08::01::2022 09:02:35|nzu +08::01::2022 09:02:36|9 am| +08::01::2022 09:02:37|3am | +08::01::2022 09:02:38|THE GUPPIES FEEL OUR PAIN| +08::01::2022 09:02:39|ITS 8 AM I'VE BEEN HERE FOR THE WHOLE THING| +08::01::2022 09:02:41|0900 | +08::01::2022 09:02:41|2 am| +08::01::2022 09:02:41|west coast ez| +08::01::2022 09:02:41|>12 hours since match started || >nearly 12 hours since stream started| +08::01::2022 09:02:42|am +08::01::2022 09:02:43|SHUT UP MOMO| +08::01::2022 09:02:44|Just be Mako, Don't sleep at night.| +08::01::2022 09:02:45|COMMIEFORNIA TIME| +08::01::2022 09:02:46|2AM +08::01::2022 09:02:46|Wouldn't it be rabbit team eating cheese sandwiches| +08::01::2022 09:02:46|3am and going strong \o::| +08::01::2022 09:02:47|NO STOP TIME MOVING FORWARD REE| +08::01::2022 09:02:49|hah 3pm bitch| +08::01::2022 09:02:50|>tfw 4 pm asian supremacy| +08::01::2022 09:02:53|2am masterrace reportting in| +08::01::2022 09:02:54|am +08::01::2022 09:02:54|EAST COAST BEST COAST| +08::01::2022 09:02:57|Wow anime mirrors real life anons| +08::01::2022 09:02:57|5 am| +08::01::2022 09:02:57|it me| +08::01::2022 09:02:59|2am help me| +08::01::2022 09:03:00|lover-san lover-san| +08::01::2022 09:03:00|AMbros... +08::01::2022 09:03:00|GOD I WISH 'lover-san' WAS ME| +08::01::2022 09:03:01|12 am here :)| +08::01::2022 09:03:01|I WILL PROTECT YOU| +08::01::2022 09:03:01|no its me| +08::01::2022 09:03:01|e +08::01::2022 09:03:01|Is it early morning in america or some other third world hellhole| +08::01::2022 09:03:02|4pm comfy weekend| +08::01::2022 09:03:02|momo should just suck it up and find a man| +08::01::2022 09:03:04|OVER-SAN +08::01::2022 09:03:04|am +08::01::2022 09:03:04|5am here, didn't even want to watch the stream but| +08::01::2022 09:03:05|The entire fucking mudhole subplot was filler!| +08::01::2022 09:03:06|CARED +08::01::2022 09:03:07|RABU SAN| +08::01::2022 09:03:10|All me| +08::01::2022 09:03:11|why fukuda keep calling me| +08::01::2022 09:03:12|ESTCHADS CAN'T STOP WINNING| +08::01::2022 09:03:12|can you imagine sleeping| +08::01::2022 09:03:13|Its 8am and im working later| +08::01::2022 09:03:14|west coast midnight east coast who cares| +08::01::2022 09:03:20|3 AM in Eternally Superior Timezone| +08::01::2022 09:03:21|DESTROYING JAPANESE CULTURE | +08::01::2022 09:03:23|>working on saturday| +08::01::2022 09:03:25|radbros.... +08::01::2022 09:03:29|im a genius| +08::01::2022 09:03:32|"WE WERE PRETENDING TO BE RETARDED" - NISHI| +08::01::2022 09:03:32|working +08::01::2022 09:03:33|working +08::01::2022 09:03:33|oh no| +08::01::2022 09:03:35|Lover-san is for everybody. Like Mr.Clean| +08::01::2022 09:03:36|rip weekend waggie| +08::01::2022 09:03:39|>all you have to do is kick in the door| +08::01::2022 09:03:41|IGNORE FLANK GET ANGLERFISH| +08::01::2022 09:03:43|Totsuegekibros did we get to cocky?| +08::01::2022 09:03:49|Just like IJA, tunnel vision on the wrong objectives| +08::01::2022 09:03:52|Totsubakas have a chance| +08::01::2022 09:03:53|... and the whole rotten structure collapses| +08::01::2022 09:03:55|! +08::01::2022 09:04:00|its finally over for ooarai| +08::01::2022 09:04:03|BAR NOISES| +08::01::2022 09:04:04|they just let the flag disappear| +08::01::2022 09:04:04|They were better when they were stupid| +08::01::2022 09:04:04|NIPPONCHADS WE GOT THIS| +08::01::2022 09:04:04|Ooraibros how could we blow that opportunity?| +08::01::2022 09:04:05|Work that should have been done yesterday but my other job called me in and you cant garden i the dark| +08::01::2022 09:04:08|>can't even hit a tree| +08::01::2022 09:04:18|OH GOD MY SKIN| +08::01::2022 09:04:18|FOLDED 731 TIMES| +08::01::2022 09:04:19|JANNIES BANNED ME FOR 3 DAYS I CAN'T POST MY NISHI PICS| +08::01::2022 09:04:20|ROID RAGE| +08::01::2022 09:04:21|Wow, Chi tan got actual tactics now.| +08::01::2022 09:04:22|I am getting fat watching| +08::01::2022 09:04:22|WOLE +08::01::2022 09:04:23|SWOLE | +08::01::2022 09:04:23|I like that Karina is always on the verge of a mental breakdown when driving| +08::01::2022 09:04:27|>staying up is wrong::::steam up for last 11 hours| +08::01::2022 09:04:29|Whoa they're literally me| +08::01::2022 09:04:37|::fit:: + ::k::| +08::01::2022 09:04:38|i want the neets to snap me in half| +08::01::2022 09:04:39|3day ban is nothing I'M FUCKING RANGEBANNED| +08::01::2022 09:04:44|NAIL +08::01::2022 09:04:45|FOLLOW MY TRACERS OOOOAJ| +08::01::2022 09:04:46|CAN'T SEE SHIT| +08::01::2022 09:04:47|akfit:: +08::01::2022 09:04:49|>He's rangebanned| +08::01::2022 09:04:51|I dont care about my skin I want to see gupies | +08::01::2022 09:04:52|cute yukari| +08::01::2022 09:04:54|MIHO HAS SHIT EYES| +08::01::2022 09:04:54|what were you banned for anon| +08::01::2022 09:04:56|CUTE EARS| +08::01::2022 09:04:58|Who needs sleep when you got muscles?| +08::01::2022 09:04:59|::k:: is fat as fuck though| +08::01::2022 09:05:01|Reset your router| +08::01::2022 09:05:02| 進 +08::01::2022 09:05:03|ENSHIN +08::01::2022 09:05:05|akebi paizuri...| +08::01::2022 09:05:05|>follow my tracers FUCK YOU Captain America| +08::01::2022 09:05:06|really though, I like how Chihatans plan to take out the PZIV is exactly what Continuation does| +08::01::2022 09:05:07|should of unlocked night vision | +08::01::2022 09:05:08|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 09:05:09|machine gun ASMR| +08::01::2022 09:05:11|WHAT'S THE RANGE ON YOUR WEAPON SOLDIER?| +08::01::2022 09:05:13|mako is just tuned for yasen| +08::01::2022 09:05:20|ANZAI +08::01::2022 09:05:20|MY EYES| +08::01::2022 09:05:20|MY EYES| +08::01::2022 09:05:22|lare! +08::01::2022 09:05:23|I was shit-talking CSW fags by posting fat people getting hit by cars| +08::01::2022 09:05:23|:ARE +08::01::2022 09:05:24|Book ends the episode really well| +08::01::2022 09:05:24|AHHH LIGHTMODE SCREENSHOT| +08::01::2022 09:05:24|miho tired of your shit| +08::01::2022 09:05:26|DUMB BLIND MIHO| +08::01::2022 09:05:26|MBUSH +08::01::2022 09:05:26|THE FACE| +08::01::2022 09:05:26|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\o:: \o:: \o:: | +08::01::2022 09:05:26|EGAAAAAAA +08::01::2022 09:05:27|SOLAR FLARE| +08::01::2022 09:05:29|LOOK AT THE FLARE MIHO| +08::01::2022 09:05:29|TENNO HEIKA BANZAAAAAAAI| +08::01::2022 09:05:30|LARE +08::01::2022 09:05:30|CUM THE FLARE GUN| +08::01::2022 09:05:30|AAAAAAAAAAAAAAAAAAAAAIIIEEEEE +08::01::2022 09:05:30|THE FACE| +08::01::2022 09:05:33|ST +08::01::2022 09:05:35|ANZAI +08::01::2022 09:05:35|retina burned| +08::01::2022 09:05:38|BAKAS IN THE TREES BAKAS IN THE TREES| +08::01::2022 09:05:40|BANZAI | +08::01::2022 09:05:46|welp there goes my night vision| +08::01::2022 09:05:47|HOLY FUCK| +08::01::2022 09:05:47|BAKAS EVERYWHERE| +08::01::2022 09:05:48|FAST NIPS| +08::01::2022 09:05:49|OOM +08::01::2022 09:05:50|>when the trees start speaking baka| +08::01::2022 09:05:50|think of all the worthless kaoalas they're rolling over| +08::01::2022 09:05:51|the trees are speaking japanese....| +08::01::2022 09:05:53|Wow the flares can deafen you as well| +08::01::2022 09:05:54|it's over ooraribros...| +08::01::2022 09:05:56|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 09:05:58|Cod World of War | +08::01::2022 09:06:03|I CAN'T SEE SHIT CAPTAIN| +08::01::2022 09:06:07|WE NEED TO BURN DOWN THE JUNGLE| +08::01::2022 09:06:09|Stop looking at the flares| +08::01::2022 09:06:10|MOMO LED THE TEAM TO DEFEAT!| +08::01::2022 09:06:10|KEEP LOOKING AT THE FLARE| +08::01::2022 09:06:14|Bring out the napalm| +08::01::2022 09:06:16|STOP SENDING LIGHTMODE SCREENSHOTS NISHI| +08::01::2022 09:06:17|AGENT ORANGE| +08::01::2022 09:06:18|NAPALM NAPALM| +08::01::2022 09:06:20|Oarai got too cocky this time | +08::01::2022 09:06:20|which star wars movie was this| +08::01::2022 09:06:24|Saunders would've napalmed the whole course| +08::01::2022 09:06:25|KILL IT WITH FIRE| +08::01::2022 09:06:28|just close your eyes when flare??::???::::::???::?| +08::01::2022 09:06:28|I WANT THAT TREELINE BOMBED| +08::01::2022 09:06:35|DIDI MAO DIDI MAO| +08::01::2022 09:06:35|what was miho think bros?| +08::01::2022 09:06:36|Rogue One| +08::01::2022 09:06:37|episode 3| +08::01::2022 09:06:37|Chihatan Strikes Back!| +08::01::2022 09:06:38|Miho separated what'll happen!| +08::01::2022 09:06:38|Too bad they don't have flamethrowers | +08::01::2022 09:06:38|empire strikes back| +08::01::2022 09:06:41|Use agent orange to clear the jungle| +08::01::2022 09:06:41|CALL BROKEN ARROW| +08::01::2022 09:06:42|I love the smell of totsugeki in the morning| +08::01::2022 09:06:42|PRESS O TO APPLY A HEALTHY DOSAGE OF AGENT ORANGE TO THE JUNGLE| +08::01::2022 09:06:46|onk +08::01::2022 09:06:47| +08::01::2022 09:06:50|get outta the way bitch| +08::01::2022 09:06:53|Should have bought more flares than Chihatan. Then they can't outflare you| +08::01::2022 09:06:54|ass too fat knocked them over| +08::01::2022 09:06:55|ooarai dont surf...| +08::01::2022 09:06:55|the kamis are immortal as fuck| +08::01::2022 09:06:58|WE GOT PLANES STACKED UP EVERY 500 FEET!| +08::01::2022 09:07:08|they aren't called kamis for nothing| +08::01::2022 09:07:13|NOT THE PINCERINHO| +08::01::2022 09:07:17|ONK +08::01::2022 09:07:20|\o:: \o:: TENNO HEIKA BANZAI \o:: \o::| +08::01::2022 09:07:21|Holy shit that's the drift Chihatan did| +08::01::2022 09:07:23|Hippo butt too big. Boat goes back into water| +08::01::2022 09:07:23|Holy shit amazing animation| +08::01::2022 09:07:25|NOOOOOOOOOOOO NOT THE HECKING PINCERINOOOOOOOOOO| +08::01::2022 09:07:26|AGURAAAAA +08::01::2022 09:07:36|IS THIS THE POWER OF UNREAL ENGINE| +08::01::2022 09:07:37|>ship tanks| +08::01::2022 09:07:39|>checking FUCK OFF| +08::01::2022 09:07:41|Cutest chihatan girl| +08::01::2022 09:07:44|If they do drive-bys this close, just hit them with a stick| +08::01::2022 09:07:46|ECAPITATION +08::01::2022 09:07:47|>hecking FUCK OFF| +08::01::2022 09:07:48|ALLBACK +08::01::2022 09:07:48|utter bullshit| +08::01::2022 09:07:48|nice boat| +08::01::2022 09:07:49|SENSHADO IS SAFE| +08::01::2022 09:07:49|ASUGA +08::01::2022 09:07:54|nice boat| +08::01::2022 09:07:54|THAT GUNNER IS DEAD| +08::01::2022 09:07:55|TANK MELEE| +08::01::2022 09:07:55|when are they installing that mirror| +08::01::2022 09:07:58|but checking can fuck off too| +08::01::2022 09:07:59|She still hasn't bought a slide under mirror| +08::01::2022 09:07:59|akas +08::01::2022 09:08:02|Mako a murderer| +08::01::2022 09:08:03|MAKO DRIVE ME CLOSER I WANNA HIT THEM WITH MY SWRD| +08::01::2022 09:08:05|ANI +08::01::2022 09:08:05|Just flare their tanks if they driveby that close| +08::01::2022 09:08:06|I can't believe they drowned| +08::01::2022 09:08:24|TOMPED +08::01::2022 09:08:29|as long as all the crew didn't drown its still k| +08::01::2022 09:08:30|PUPPET COMMANDER| +08::01::2022 09:08:33|TOTSUGEKIS HAVE FUCKING GORILLA STRENGTH WTF| +08::01::2022 09:08:34|How many deaths have there been in the history of tankery?| +08::01::2022 09:08:40| +08::01::2022 09:08:43| +08::01::2022 09:08:43|ute +08::01::2022 09:08:44|Everyone has gorilla strength| +08::01::2022 09:08:44|cool pontoon bridge| +08::01::2022 09:08:44|Volleyball club ressurection is nearly here bros| +08::01::2022 09:08:45|0, tankery is safe| +08::01::2022 09:08:47|TRONG +08::01::2022 09:08:48|strong lolis| +08::01::2022 09:08:48|cute dorks| +08::01::2022 09:08:49|zero (read zero)| +08::01::2022 09:08:50|How many people drowned in shallow water?| +08::01::2022 09:08:50|TRONK +08::01::2022 09:08:52|it's perfectly safe| +08::01::2022 09:08:52|carbon coated lungs| +08::01::2022 09:08:52|love this scene| +08::01::2022 09:08:53|ARBON +08::01::2022 09:08:54|They can beat up all of ::a::| +08::01::2022 09:08:55|ruh +08::01::2022 09:08:55|strong spotters| +08::01::2022 09:08:56|KETAMAWARASIMASHITA +08::01::2022 09:08:57|LOLI STRONK| +08::01::2022 09:08:57|HOLY SHIT| +08::01::2022 09:08:58|yel +08::01::2022 09:08:59|retard strength| +08::01::2022 09:09:03|THEY'RE NOT EVEN LOADERS| +08::01::2022 09:09:03|SUPERIOR JAPANESE ENGINEERING| +08::01::2022 09:09:05|CABRON COATING OP| +08::01::2022 09:09:06|oh boy another bridge| +08::01::2022 09:09:07|i WISH THEY'D BEAT ME UP| +08::01::2022 09:09:08|LOLI STRENGTH | +08::01::2022 09:09:12|Instead of going after the flag tank, they go after the other tanks| +08::01::2022 09:09:15|armorplot coating| +08::01::2022 09:09:16|Separated once again!| +08::01::2022 09:09:16|>a bridge| +08::01::2022 09:09:18|ip +08::01::2022 09:09:18|FUCK BRIDGES| +08::01::2022 09:09:19|LETS IGNORE THE ISOLATED FLAG TANK| +08::01::2022 09:09:21|bridges are meant to be destroyed| +08::01::2022 09:09:24|riya +08::01::2022 09:09:29|AAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:09:31|flag just diappears| +08::01::2022 09:09:35|They knew to not always totsugeki| +08::01::2022 09:09:37|Bridges too strong. Not toppled yet| +08::01::2022 09:09:39|KINO DUEL| +08::01::2022 09:09:42|THE TREES ARE SPEAKING VOLLEYBALL| +08::01::2022 09:09:44|LET'S SPLIT UP GANG| +08::01::2022 09:09:47|Here comes the Kino| +08::01::2022 09:09:49|The suns rising....| +08::01::2022 09:09:52|But they forgot to stop the totsugeki in their heart | +08::01::2022 09:09:55|what is this 480p bruh | +08::01::2022 09:10:00|UOHH CUNNY CREW| +08::01::2022 09:10:13|BAKKU ATAKKU| +08::01::2022 09:10:14|teleports behind you| +08::01::2022 09:10:15|BAKKU ATTAKU| +08::01::2022 09:10:18|KINO FIGHT| +08::01::2022 09:10:19|Lover-san ain't giving you peace tonight| +08::01::2022 09:10:19|TAEKO CUTE| +08::01::2022 09:10:19|INO +08::01::2022 09:10:20|LOLI DUEL| +08::01::2022 09:10:21|THEYRE PENETRATING OUR REAR FLANK| +08::01::2022 09:10:21|UTS! +08::01::2022 09:10:22|FUKU CHAN| +08::01::2022 09:10:22|IN THE END I REALIZED| +08::01::2022 09:10:23|MASTER AND APPRENTICE DUEL| +08::01::2022 09:10:26|KINO BEGINS| +08::01::2022 09:10:28|Here we go on the Kino| +08::01::2022 09:10:30|will ducks get the voley club back in the end?| +08::01::2022 09:10:33|STANDING HERE| +08::01::2022 09:10:35|penetrating rear flank...| +08::01::2022 09:10:37|ITS KINO TIMMMMMMMMMMMMMMMMMMMMME| +08::01::2022 09:10:37|ute +08::01::2022 09:10:39|I REALIZE| +08::01::2022 09:10:45|ush! +08::01::2022 09:10:45|Hasegawa a cute| +08::01::2022 09:10:46|YOU WERE JUST LIKE ME| +08::01::2022 09:10:48|awaru +08::01::2022 09:10:51|YOY WERE JUST LIKE ME| +08::01::2022 09:10:52|OOAH +08::01::2022 09:10:52|INO +08::01::2022 09:10:53|TRYING TO CHANGE HISTORY| +08::01::2022 09:10:54|TRYING TO MAKE HISTORY| +08::01::2022 09:10:59|SSHI +08::01::2022 09:11:05|BUT WHO'S TO JUDGE| +08::01::2022 09:11:07|BUT WHO IS TO JUDGE| +08::01::2022 09:11:13|THE RIGHT FROM WRONG| +08::01::2022 09:11:15|fucking portable bridging tanks| +08::01::2022 09:11:15|THE RIGHT FROM WRONG| +08::01::2022 09:11:16|cute arms| +08::01::2022 09:11:17|kami tier| +08::01::2022 09:11:19|TE +08::01::2022 09:11:23|EEEEEEEEEEEEEEEEEE +08::01::2022 09:11:25|MOU IKKAI| +08::01::2022 09:11:25|>This cgi| +08::01::2022 09:11:29|Should have brought a volleyball. At least you can spike their tank| +08::01::2022 09:11:30|TEEEEEEE +08::01::2022 09:11:34|bakas with tunnel vision brought down by their hubris| +08::01::2022 09:11:35|kill the fucking slanteyes| +08::01::2022 09:11:38|I have no idea what's happening| +08::01::2022 09:11:41| 止 +08::01::2022 09:11:45|THEY'RE IN THE TREES| +08::01::2022 09:11:45|they're all slanteyes| +08::01::2022 09:11:47|ITTEN SHOJUN| +08::01::2022 09:11:48|ME EITHER| +08::01::2022 09:11:49|ip +08::01::2022 09:11:52|ekt +08::01::2022 09:11:52|RIP STUG| +08::01::2022 09:11:55|MOU IKKAI| +08::01::2022 09:11:55|STUG'S DOWN| +08::01::2022 09:11:55|Ooarai is getting fucked| +08::01::2022 09:11:57|STUG ;_;| +08::01::2022 09:12:00|YAAA +08::01::2022 09:12:01|YAA +08::01::2022 09:12:02|YA +08::01::2022 09:12:02|stug bros...| +08::01::2022 09:12:04|theres something sexy about the term for focus fire| +08::01::2022 09:12:04|YAAA +08::01::2022 09:12:04|2 SHELLS| +08::01::2022 09:12:05|YAA +08::01::2022 09:12:05|YAA +08::01::2022 09:12:05|STRONK NEET| +08::01::2022 09:12:07|STUG DOWN| +08::01::2022 09:12:07|stug life stug death| +08::01::2022 09:12:07|Reminder the entire Stug team are my wives | +08::01::2022 09:12:07|OH NO NO NO NO NO| +08::01::2022 09:12:07|YAA +08::01::2022 09:12:08|yaa +08::01::2022 09:12:09|ROID RAGE| +08::01::2022 09:12:09|yaaaaaaaaaaaaaaaaaaa\ +08::01::2022 09:12:11|how the fuck are none of them dead yet| +08::01::2022 09:12:13|duelwielding those 40mm shells holy fuck| +08::01::2022 09:12:13|Ooaraibros....I think this is the end.| +08::01::2022 09:12:14|WASH AWAY THE ANGER| +08::01::2022 09:12:14|NOT LIKE THIS OORAICHADS| +08::01::2022 09:12:16|no bridge anymore| +08::01::2022 09:12:17|doublefisting shells like nothing| +08::01::2022 09:12:17|egh +08::01::2022 09:12:18|STRONG MAKO| +08::01::2022 09:12:19|BITCH YOU THOUGHT| +08::01::2022 09:12:20|Oarai got too cocky this time| +08::01::2022 09:12:20|FUCK BRIDGES| +08::01::2022 09:12:22|yaa +08::01::2022 09:12:23|FULL STOP| +08::01::2022 09:12:25|mako brake| +08::01::2022 09:12:30|oaraibros +08::01::2022 09:12:31|USE +08::01::2022 09:12:31|OARAIBROS.... +08::01::2022 09:12:38|AITED +08::01::2022 09:12:40|ANI?! +08::01::2022 09:12:40|WHO COULD HAVE SEEN THAT COMING| +08::01::2022 09:12:40|USEMASTER +08::01::2022 09:12:40|OTTEM +08::01::2022 09:12:40|panzer doko| +08::01::2022 09:12:42|I'VE BEEN RUSED!| +08::01::2022 09:12:43|better invest in chihatancoin| +08::01::2022 09:12:43|they fall for this lol| +08::01::2022 09:12:46|?????????? +08::01::2022 09:12:49|TFO +08::01::2022 09:12:52|tf +08::01::2022 09:12:53|bamboozled again| +08::01::2022 09:12:54|LEAVE IT TO TJHE ANGLER FISH TO BAIT| +08::01::2022 09:12:58|KINO KINO KINO| +08::01::2022 09:13:03|Most of those shots should have been knock outs| +08::01::2022 09:13:04|KINO IS BACK ON THE MENU| +08::01::2022 09:13:04|OSS +08::01::2022 09:13:06|ut-heckin-skilled +08::01::2022 09:13:06|>no GF crossover yet dorkbros what now??????| +08::01::2022 09:13:07|kino battle| +08::01::2022 09:13:08|KINO FIGHT| +08::01::2022 09:13:08|TTACK +08::01::2022 09:13:08|VIOLENCE BREEDS VIOLENCE| +08::01::2022 09:13:13|MAKO-CHAN BANZAI| +08::01::2022 09:13:14|akebi is so hot bros| +08::01::2022 09:13:18|That pz 4 could ragdoll all those MF| +08::01::2022 09:13:20|ino +08::01::2022 09:13:20|BUT IN THE END IT HAS TO BE THIS WAY| +08::01::2022 09:13:21|IN THE END IT HAS TO BE THIS WAYYYYYY| +08::01::2022 09:13:23|IN THE END IT HAS TO BE THIS WAAAAAAAAAAAAAAAAAY| +08::01::2022 09:13:26|BUT IN THE END IT HAS TO BE THIS WAY| +08::01::2022 09:13:29|Kino sounds| +08::01::2022 09:13:34|RAORAORAORA +08::01::2022 09:13:35|>merely pretending| +08::01::2022 09:13:36|merely pretending| +08::01::2022 09:13:36|>MERELY PRETENDING| +08::01::2022 09:13:37|RAORAORAORA +08::01::2022 09:13:38|>only pretending to be retarded| +08::01::2022 09:13:38|MERELY PRETENDING| +08::01::2022 09:13:41|SO NA NO| +08::01::2022 09:13:42|holy shit| +08::01::2022 09:13:43|I CARVED MY OWN PATH| +08::01::2022 09:13:45|NOT RUSED| +08::01::2022 09:13:45|LIKE A BOOK| +08::01::2022 09:13:47|RYAAAA +08::01::2022 09:13:49|Can't outvolleyball the volleyball| +08::01::2022 09:13:50|loli tank stroonk| +08::01::2022 09:13:51|onks +08::01::2022 09:13:52|THAT WAS A KNOCK OUT FUCK YOU| +08::01::2022 09:13:54|ASUGA +08::01::2022 09:13:55|YOU FOLLOWED YOUR WRATH| +08::01::2022 09:13:55|IM MY OWN MASTER NOW| +08::01::2022 09:13:57|FUCKING TANK| +08::01::2022 09:13:59|tf +08::01::2022 09:14:00|SHE'S NOT GOING DOWN| +08::01::2022 09:14:01|nice moves| +08::01::2022 09:14:01|HOW ARE THEY STILL IN THE GAME| +08::01::2022 09:14:02|literal garbage weapon| +08::01::2022 09:14:02|Carbon coating| +08::01::2022 09:14:02|THAT WAS A HIT STRAIGHT TO THE ENGINE BLOCK| +08::01::2022 09:14:03|FUCKING TANK UKEMI| +08::01::2022 09:14:06|GAS GAS GAAASSS| +08::01::2022 09:14:07|AHIRU SAKUSEN| +08::01::2022 09:14:09|THIS GAME IS FUCKING RIGGED| +08::01::2022 09:14:09|OPERATION DUCK| +08::01::2022 09:14:13|superior japanese tank steel| +08::01::2022 09:14:14|>tank does a 720~| +08::01::2022 09:14:14|SHE IS FUCKING INVINCIBLE| +08::01::2022 09:14:14|OPERATION: DUCK| +08::01::2022 09:14:16|This is some Looney Tunes tier physics | +08::01::2022 09:14:19|WHO THE FUCK NOWS WHAT PLAN THIS IS| +08::01::2022 09:14:19|Volleybros Fukuda is nothingm we can do this!| +08::01::2022 09:14:21|QUICK THINK LIKE YOU WERE DUMN| +08::01::2022 09:14:21|Oh no, she outvolleyball the volleyball| +08::01::2022 09:14:21|10000 folded nippon steel| +08::01::2022 09:14:23|OH MY REMOVABLE PLATING| +08::01::2022 09:14:23|BUT SHE'S USING A JAPANESE TANK | +08::01::2022 09:14:24|kami tier| +08::01::2022 09:14:24|SECOND LIFE| +08::01::2022 09:14:26|light tank, folden 10000 times| +08::01::2022 09:14:27|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::\| +08::01::2022 09:14:30|>nippon carbon folded 8 gorillion times| +08::01::2022 09:14:32|ROID RAGE| +08::01::2022 09:14:33|SE NO| +08::01::2022 09:14:33|DASHU +08::01::2022 09:14:34|JUST THROW THE SHELLS AT THEM| +08::01::2022 09:14:34|TARD RAGE| +08::01::2022 09:14:35|acting like reactive armor or some shit| +08::01::2022 09:14:36|SC +08::01::2022 09:14:37|SE NO| +08::01::2022 09:14:38|plash +08::01::2022 09:14:39|FUCKING NYAAAGERS -Nekonya| +08::01::2022 09:14:41|AMERS +08::01::2022 09:14:43|eskeepu botan| +08::01::2022 09:14:44| +08::01::2022 09:14:46| +08::01::2022 09:14:47|ringo outo| +08::01::2022 09:14:48|AMERBROS.... +08::01::2022 09:14:49|fit::bros..... +08::01::2022 09:14:49| +08::01::2022 09:14:49|NIPPON ARMOR FOLDED OVER 731 TIMES| +08::01::2022 09:14:50| +08::01::2022 09:14:50|ekt +08::01::2022 09:14:52|these swimming tanks are fucking invinicible| +08::01::2022 09:14:54|gamers o7| +08::01::2022 09:14:55|OH MY REMOVABLE PLATING AGAIN| +08::01::2022 09:14:57|Gamers hate bugs| +08::01::2022 09:14:58|NDOU! +08::01::2022 09:14:59|oaraibros... +08::01::2022 09:15:00|>fit gamers BTFO| +08::01::2022 09:15:01| +08::01::2022 09:15:02|oodnight +08::01::2022 09:15:03|yasumi +08::01::2022 09:15:03|CHIHATANBROS THIS IS OUR TIME| +08::01::2022 09:15:04|UUUUUUUUUUUUUUUOOOOOOOOOOOOOHHHHHHHHHHH +08::01::2022 09:15:04|SLEEPING SEX WITH MARIE| +08::01::2022 09:15:05|YASUMI +08::01::2022 09:15:05|oyasumi | +08::01::2022 09:15:05|THOSE SHOULD HAVE BEEN KNOCK OUTS| +08::01::2022 09:15:05|yasumi +08::01::2022 09:15:07|>industrial strength bed| +08::01::2022 09:15:09|GAMERS ARE THE MOST OPPRESSED GROUP| +08::01::2022 09:15:09|Ke-Ni too strong| +08::01::2022 09:15:10|_;7 +08::01::2022 09:15:10|based sleeper| +08::01::2022 09:15:12|ewd +08::01::2022 09:15:13|I want to be marie's bed| +08::01::2022 09:15:14|MARIE KNOWS WHERE THIS SHIT IS GOING| +08::01::2022 09:15:15|Ooraibros.... we had them cornered... how did we job?| +08::01::2022 09:15:17|GOD I WANT TO FUCK MAKO SO BAD| +08::01::2022 09:15:17|Marie abandoned us streambros...| +08::01::2022 09:15:22|Carbon Coated Bed| +08::01::2022 09:15:22|shhh marie is sleeping| +08::01::2022 09:15:24|blind fuck| +08::01::2022 09:15:25|Symbolism (ding)| +08::01::2022 09:15:29|Marie ain't watching at this point| +08::01::2022 09:15:32|DATO ANKOU! | +08::01::2022 09:15:33|>If we can hit that bullseye the rest of the dominoes will fall like a house of cards. Checkmate!| +08::01::2022 09:15:34|hype crew swap incoming| +08::01::2022 09:15:34|AITED +08::01::2022 09:15:34|DATO ANKOU| +08::01::2022 09:15:37|DEATH TO ANKOU| +08::01::2022 09:15:37|DATO ANKOU!| +08::01::2022 09:15:38|ATOU +08::01::2022 09:15:39|TL note: 打倒鮟鱇 = Totsugeki| +08::01::2022 09:15:39|DATOU ANKOU!| +08::01::2022 09:15:39|datto anko| +08::01::2022 09:15:39|DATO ANKOU| +08::01::2022 09:15:39|MAKO SEX| +08::01::2022 09:15:39|UBRIS +08::01::2022 09:15:40|AKAS +08::01::2022 09:15:40| 党鮟鱇! +08::01::2022 09:15:41|DATO ANJOU| +08::01::2022 09:15:41|DATO ANKOU| +08::01::2022 09:15:41|Marie is literally me| +08::01::2022 09:15:43|Lol fucking retards, completely forgetting the mission| +08::01::2022 09:15:45|DEATH TO ANKOU| +08::01::2022 09:15:46|MAI +08::01::2022 09:15:46|I know lets act as bait -Miho again| +08::01::2022 09:15:50|DATO ANKOU! | +08::01::2022 09:15:51|SEXO ANKOU| +08::01::2022 09:15:51| 党鮟鱇 +08::01::2022 09:15:51|Anglerfish lantern bait| +08::01::2022 09:15:53|kyute karina| +08::01::2022 09:15:55|>fuck focusing on the flag tank| +08::01::2022 09:15:56|too thicc| +08::01::2022 09:15:58|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 09:15:58|sono tori| +08::01::2022 09:16:01|ONATORIIII +08::01::2022 09:16:01|SEX THE ANKOUS| +08::01::2022 09:16:03|Shouldn't their guns still be able to pen the side of a Lee at 100 meters?| +08::01::2022 09:16:03|THE MOMENT IT FALLS APART| +08::01::2022 09:16:06|WHAT'S A FLAG TANK?| +08::01::2022 09:16:07| 倒アンコウ +08::01::2022 09:16:09|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:16:16|4D CHESS RABBIT| +08::01::2022 09:16:16|smaat usagi| +08::01::2022 09:16:17|HIGH IQ AZUSA| +08::01::2022 09:16:19|AZUSA TOO SMART| +08::01::2022 09:16:21|TE +08::01::2022 09:16:22|Who needs the flag tank if you get the strategist? | +08::01::2022 09:16:22|MATRIX LEE| +08::01::2022 09:16:22|EJAVU +08::01::2022 09:16:23|HOLY BASED| +08::01::2022 09:16:23|AZUSA <3| +08::01::2022 09:16:24|AZUSA LOVE| +08::01::2022 09:16:25|BTFO X 2| +08::01::2022 09:16:27|OLY +08::01::2022 09:16:28|the small details on the tanks make me coom| +08::01::2022 09:16:28|AZUSA YOUR FUTURE COMMANDER| +08::01::2022 09:16:29|HIGH IQ| +08::01::2022 09:16:29|How much gas do these tanks have?| +08::01::2022 09:16:29|GET FUCKED| +08::01::2022 09:16:30|DOUBLE KILL| +08::01::2022 09:16:30|azusa future tank commander| +08::01::2022 09:16:31|OH MY REMOVABLE PLATING| +08::01::2022 09:16:32|adamada +08::01::2022 09:16:32|THE 37mm WAS SLACKING| +08::01::2022 09:16:33|NTER +08::01::2022 09:16:34|DAMN AZUSA| +08::01::2022 09:16:34|Learning from when Miho tricked the Crusaders| +08::01::2022 09:16:38|duck duel| +08::01::2022 09:16:38|UNNIES +08::01::2022 09:16:38|hiru! +08::01::2022 09:16:40|UCK +08::01::2022 09:16:40|DOUBLE KILL| +08::01::2022 09:16:41|THEY'RE BACK| +08::01::2022 09:16:41|A FUCKING DUCK| +08::01::2022 09:16:43|H +08::01::2022 09:16:43|UCK +08::01::2022 09:16:45|THEY KEPT THE DUCK BALLOONS| +08::01::2022 09:16:47|INOOOOOOOOOOOOOO +08::01::2022 09:16:47|HIRU! +08::01::2022 09:16:48|uckmind +08::01::2022 09:16:48|DUCK ON DUCK RAPE| +08::01::2022 09:16:48|they use green tech, no gas| +08::01::2022 09:16:49|the mighty fucks| +08::01::2022 09:16:49|DUCK OUT OF NOWHERE| +08::01::2022 09:16:49|Imagine if Asuza was in an actually good tank| +08::01::2022 09:16:49|AZUSA "FINN REMOVER" SAWA| +08::01::2022 09:16:49|KINO KINO KINO| +08::01::2022 09:16:50|SUPREME CHAMPION| +08::01::2022 09:16:50|SPIDEMAN POINT MEME.JPG| +08::01::2022 09:16:52|DUCK BATTLE| +08::01::2022 09:16:53|uack +08::01::2022 09:16:54|when tf did they put this on| +08::01::2022 09:16:59|OH MY GAAAAA| +08::01::2022 09:17:01|wait how did they get the duck heads| +08::01::2022 09:17:01|MADA MADA| +08::01::2022 09:17:01|rickd +08::01::2022 09:17:02|GET FUCKED| +08::01::2022 09:17:02|USED +08::01::2022 09:17:03|LANG +08::01::2022 09:17:03|_;7 +08::01::2022 09:17:03|olleybros... +08::01::2022 09:17:04|WE WON| +08::01::2022 09:17:05|aited +08::01::2022 09:17:05|OH SHIT| +08::01::2022 09:17:06|out fucking played| +08::01::2022 09:17:06|UTFUCKINGSKILLED +08::01::2022 09:17:06|BUNNY CUNNY NOOOOOOOOO| +08::01::2022 09:17:07|GEZ +08::01::2022 09:17:08|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 09:17:09|WHY WOULD YOU NOT JUST STICK TO THE SIDE| +08::01::2022 09:17:09|utplayed +08::01::2022 09:17:09|aited... +08::01::2022 09:17:09|7 +08::01::2022 09:17:11|ST +08::01::2022 09:17:12|\o:: \o:: \o:: 天皇陛下万歳 \o:: \o:: \o:: \o:: \o:: \o:: 七生報國 \o:: \o:: \o::| +08::01::2022 09:17:12|Is this it for Ooarai????| +08::01::2022 09:17:12|UACK +08::01::2022 09:17:13|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:17:13|akebi noooo| +08::01::2022 09:17:14|7 +08::01::2022 09:17:14|Azusa "Benis Slicer" Sawa| +08::01::2022 09:17:15|the student becomes the mastah| +08::01::2022 09:17:15|CHIHATANBROS WE'RE WINNING| +08::01::2022 09:17:16|DATO ANKOU! | +08::01::2022 09:17:16|DATO ANKOU| +08::01::2022 09:17:16|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:17:17|dato anko| +08::01::2022 09:17:18|7 +08::01::2022 09:17:18|OH NONONONNONNONO WE'RE GONNA LOSE OOARAIBROS| +08::01::2022 09:17:19|TL note: Datou Ankou = Totsugeki| +08::01::2022 09:17:20|DATOU ANKOU| +08::01::2022 09:17:20|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:17:20|DATO ANKOU| +08::01::2022 09:17:22|GUNGNIR DATTO?| +08::01::2022 09:17:25|BENIS :DDDDDD| +08::01::2022 09:17:26|BANZAI \O:: \O::| +08::01::2022 09:17:27|OORAICHADS IS THIS IS.....!?!?!| +08::01::2022 09:17:27|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:17:28|ATTO +08::01::2022 09:17:28|anzerbros... +08::01::2022 09:17:35|IF CH HA TAN LOSES I'M COMMITTING SUDOKU| +08::01::2022 09:17:36|ooaraibros what will we do????????????| +08::01::2022 09:17:38|ooaraibros btfo| +08::01::2022 09:17:39|ITS OVER FOR MOMO| +08::01::2022 09:17:42|MIHOFAGS ON SUICIDE WATCH| +08::01::2022 09:17:43|Can't duck the duck, but the duck can outvolleyball you| +08::01::2022 09:17:47|OH GOD THIS IS JUST LIKE PLATOON| +08::01::2022 09:17:48|OOM +08::01::2022 09:17:51|ever notice they just used a 2JZ for the engine sounds| +08::01::2022 09:17:52|ED +08::01::2022 09:17:53|MIHO CARRING LIKE USUAL| +08::01::2022 09:17:54|fuck the duck| +08::01::2022 09:17:57|Ooraibros there's no way out... It's over| +08::01::2022 09:17:58|HOSOMI LOST HER CURLS| +08::01::2022 09:18:00|Kino take down| +08::01::2022 09:18:04|OTSUGEKI! +08::01::2022 09:18:04|OOARAIBROS WE GOT TOO COCKY.....| +08::01::2022 09:18:05|carrying the team| +08::01::2022 09:18:05|The Type-89 fears the Panzer| +08::01::2022 09:18:08|OTSUGEKI +08::01::2022 09:18:10|OTSUGEKI +08::01::2022 09:18:11|OTSUGEKI +08::01::2022 09:18:12|Haha Ooaraicucks, this is it!| +08::01::2022 09:18:13|INOOOOOO +08::01::2022 09:18:14|MIHO WILL CARRY| +08::01::2022 09:18:16|OTSUGEKI +08::01::2022 09:18:17|DBZposting +08::01::2022 09:18:17|OTSUGEKI +08::01::2022 09:18:18|PLEASE REMOVE MY TOTSUGEKI LIMITERS| +08::01::2022 09:18:19|OTSUGEKI +08::01::2022 09:18:20|Now thats the chihatan I know| +08::01::2022 09:18:20|OTSUGEKI +08::01::2022 09:18:20|death flags nooooo| +08::01::2022 09:18:21|CUTE EARS| +08::01::2022 09:18:21|The German Tanks fear the Nips| +08::01::2022 09:18:22|INVEST IN OOARAICOIN| +08::01::2022 09:18:22|DATTOU ANKOU| +08::01::2022 09:18:23|DATOU ANKOU| +08::01::2022 09:18:23|dato ankou| +08::01::2022 09:18:23|INOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:18:23|DATO ANKOU! | +08::01::2022 09:18:24|TL note: Datou Ankou = Totsugeki| +08::01::2022 09:18:24|Should have just wacked them with the muzzle| +08::01::2022 09:18:25|DATO ANKOU| +08::01::2022 09:18:26|7 +08::01::2022 09:18:26|TUNNEL VISION| +08::01::2022 09:18:27|NIPPON BROS WE WILL WIN!!!| +08::01::2022 09:18:27|MAI +08::01::2022 09:18:28|OTSUGEKI +08::01::2022 09:18:28|DATOU ANKOU| +08::01::2022 09:18:28|DATO ANKOU| +08::01::2022 09:18:29|It's time for Chihatan to shine! TOTSUGEKI!| +08::01::2022 09:18:29|DATO ANKOU| +08::01::2022 09:18:30|DATO MANKO| +08::01::2022 09:18:30|fuck you ankou| +08::01::2022 09:18:31|MIHO CLUTCH??????| +08::01::2022 09:18:32|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 09:18:34|If these idiots wont charge then who will?| +08::01::2022 09:18:35|MAKO TIME| +08::01::2022 09:18:35| 倒アンコウ +08::01::2022 09:18:35|DATOU ANKO| +08::01::2022 09:18:39|OTSUGEKI +08::01::2022 09:18:42|WE ARE ON THE VERGE OF WINNING, JAP BROS| +08::01::2022 09:18:43|Fight to totsugeki, totsugeki to fight| +08::01::2022 09:18:44|everyone forgot about the flag tank| +08::01::2022 09:18:47|>thinking you can get thru plot armor| +08::01::2022 09:18:48|German 75 can't penetrate jap steel| +08::01::2022 09:18:50|kino swap time?| +08::01::2022 09:18:51|BUT THEYRE BOTH JAPANESE| +08::01::2022 09:18:52|MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY | +08::01::2022 09:18:54|INVEST IN CHIHATAN NOW| +08::01::2022 09:18:57|>can't see shit| +08::01::2022 09:18:57|orehead-chan +08::01::2022 09:18:58|\o:: DATO ANKO \o::| +08::01::2022 09:18:58|Tamada's charge is steiner's assualt| +08::01::2022 09:19:00|THERE IT IS| +08::01::2022 09:19:00|dude i cant see lmao| +08::01::2022 09:19:00|FIRING TRACER INDESPERATION| +08::01::2022 09:19:01|ELLSELLSELL +08::01::2022 09:19:02|CAN'T SEE SHIT| +08::01::2022 09:19:03|>all those edits in the thread| +08::01::2022 09:19:04|MAKE THE EMPEROR PROUD| +08::01::2022 09:19:04|OH MY ROLE CHANGE| +08::01::2022 09:19:04|MAKO CARRY| +08::01::2022 09:19:07|fuck, I'm starting to get really sleepy| +08::01::2022 09:19:09|Miho blind as a bat| +08::01::2022 09:19:11|1000 TIME FOLD CARBON COATING| +08::01::2022 09:19:12|Just put 500000 on chihatan. Theres no way they lose this.| +08::01::2022 09:19:13|tank fuel can't melt plot steel| +08::01::2022 09:19:13|Greatest moment in das Finale.| +08::01::2022 09:19:15|MAKO MVP| +08::01::2022 09:19:16|shit i need to go play dnd| +08::01::2022 09:19:16|FLUFFY IN THE DRIVERS SEAT| +08::01::2022 09:19:17|INCOMING KINO| +08::01::2022 09:19:19|But one of them is Jungle Japanese if they're both Japanese| +08::01::2022 09:19:19|We can do this Chihabros!| +08::01::2022 09:19:20|DASU WARU AIN BEFERU| +08::01::2022 09:19:20|MAKO SEX MAKO SEX MAKO SEX| +08::01::2022 09:19:21|FLUFF HAPPY| +08::01::2022 09:19:22|cute fluff| +08::01::2022 09:19:22|yukari upskirt| +08::01::2022 09:19:22|itaaaaaaaaaaaa +08::01::2022 09:19:22|YUKARI DRIVING| +08::01::2022 09:19:22|I LOVE HER SO MUCH| +08::01::2022 09:19:23|carbon balance| +08::01::2022 09:19:23|YUKARI IN THE DRIVING SEAT| +08::01::2022 09:19:24|it's time| +08::01::2022 09:19:24|Fluff life| +08::01::2022 09:19:24|?????????????? +08::01::2022 09:19:25|ute +08::01::2022 09:19:25|FLOOF IN THE DRIVER SEAT| +08::01::2022 09:19:26|They're desperate!| +08::01::2022 09:19:26|YUAKRI DRIVER| +08::01::2022 09:19:26|CUTE FLUFF| +08::01::2022 09:19:27|FLOOF DRIVER| +08::01::2022 09:19:28|ES +08::01::2022 09:19:30|gamer vision| +08::01::2022 09:19:33|AWK +08::01::2022 09:19:34|inally +08::01::2022 09:19:35|>Ablative arMakor| +08::01::2022 09:19:36|LET THERE BE LIGHT| +08::01::2022 09:19:36|that cute sound when she got behind the wheel| +08::01::2022 09:19:37|What do you elf eyes see| +08::01::2022 09:19:42|INO +08::01::2022 09:19:44|So, handheld gear is allowed?| +08::01::2022 09:19:49|TANK FUEL CAN'T MELT CARBON COATING| +08::01::2022 09:19:50|gimme the headset blind bitch| +08::01::2022 09:19:52|INOO +08::01::2022 09:19:53|ai +08::01::2022 09:19:53|TE +08::01::2022 09:19:54|smmart role change| +08::01::2022 09:19:56|TENNO HEIKA BANZAI| +08::01::2022 09:19:58|UKARI +08::01::2022 09:19:58|yukari is so happy and cute| +08::01::2022 09:20:00|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 09:20:03|modul;ar crew op| +08::01::2022 09:20:03|is there anything yukari can't do?| +08::01::2022 09:20:04|TIPPY TOES| +08::01::2022 09:20:06|KINO SCENE!!!| +08::01::2022 09:20:06|UTISM +08::01::2022 09:20:08|INOOOOOOOOOOOOOOOO +08::01::2022 09:20:10|CUTE LOAD| +08::01::2022 09:20:12|What tdo your elf eyes see Mako san| +08::01::2022 09:20:12|LET YUKARI DRIVE ALWAYS| +08::01::2022 09:20:15|yukari can't become real| +08::01::2022 09:20:21|THE FLUFFS OF HAZZARD| +08::01::2022 09:20:22|GOD MAKO IS SO FUCKING PERFECT| +08::01::2022 09:20:22|AHOOOOOOOOOOOOOO +08::01::2022 09:20:22|Mako should draw on that etch sketch as a real spotter| +08::01::2022 09:20:22|THEY'RE TAKING THE HOBBITS TO ISENGARD| +08::01::2022 09:20:23|seeing them switch positions is nice. | +08::01::2022 09:20:24|SAIKOU DAZE| +08::01::2022 09:20:25|HAI HAAAAAI| +08::01::2022 09:20:27|AIKOU +08::01::2022 09:20:27|AHHHOOO +08::01::2022 09:20:27|YAHOOOOO SAIKOUDAZEEEE!!!| +08::01::2022 09:20:27|SAIKO DAZEEEEE| +08::01::2022 09:20:27|YAHOO SAIKOU DAZE| +08::01::2022 09:20:27|LEFT 4 DON'T CUT| +08::01::2022 09:20:27|SAIKOU DAZE| +08::01::2022 09:20:28|GAS GAS GAS| +08::01::2022 09:20:29|AHOO!!!! +08::01::2022 09:20:29|AHOOO +08::01::2022 09:20:29|SEIKO DAZE| +08::01::2022 09:20:30|AHOO +08::01::2022 09:20:30|SAIKOU DAZE| +08::01::2022 09:20:31|AHOOOOOOOOOOOOOOOO +08::01::2022 09:20:31|YAHOOOOOOOO SAIKOU DAZE| +08::01::2022 09:20:31|YUKARI REVING IT OUT| +08::01::2022 09:20:31|SAIKO DAZE| +08::01::2022 09:20:32|LETS GOOOO| +08::01::2022 09:20:33|AHOO +08::01::2022 09:20:33|AHOOOOOOOOOOOO +08::01::2022 09:20:34|SAIKYO DAZE| +08::01::2022 09:20:34|i find this hard to believe| +08::01::2022 09:20:34|based as fuck position swaps| +08::01::2022 09:20:34|OW +08::01::2022 09:20:34|YAHOOOOOO SAIKO DAZE| +08::01::2022 09:20:35|AIKOU +08::01::2022 09:20:35|AHOOOOOOO +08::01::2022 09:20:39|IP +08::01::2022 09:20:40|oh +08::01::2022 09:20:41|DUKES OF HAZZARD| +08::01::2022 09:20:42|MW50 is one hell of a drug| +08::01::2022 09:20:42|AND THEYLL GO SWIMMINg COIMPLENENTS OF ME| +08::01::2022 09:20:42|ed +08::01::2022 09:20:42|YUKARI IS GONNA REV THE ENGINE OUT| +08::01::2022 09:20:43|HITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHIT +08::01::2022 09:20:44|oh +08::01::2022 09:20:46|EKT +08::01::2022 09:20:46|THE GENERAL FLUFF| +08::01::2022 09:20:47|she ded| +08::01::2022 09:20:48|tanks can jump| +08::01::2022 09:20:49|\o:: \o:: \o:: TENNO HEIKA BANZAI \o:: \o:: \o::| +08::01::2022 09:20:50|EAD +08::01::2022 09:20:51|im a genius| +08::01::2022 09:20:52|INVEST IN CHIHATAN NOW| +08::01::2022 09:20:53|ankou ;_;| +08::01::2022 09:20:54|BANZAI BROS LETS GO| +08::01::2022 09:20:55|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:20:56|ANZAI +08::01::2022 09:20:56|BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +08::01::2022 09:20:57|its over ooraibro| +08::01::2022 09:20:57|ANZAI +08::01::2022 09:20:57|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:20:58|I like the detail of that one Chiatan's plushies when she goes flying| +08::01::2022 09:20:58| +08::01::2022 09:20:59|BANZAIIIIIII BANZAIIIII| +08::01::2022 09:20:59|RIP ANKOU| +08::01::2022 09:21:00|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:00| +08::01::2022 09:21:00|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:21:00|ANZAI +08::01::2022 09:21:01|BANZAI | +08::01::2022 09:21:01|ANZAI! +08::01::2022 09:21:01|ANZAI +08::01::2022 09:21:01|ANZAI! +08::01::2022 09:21:02|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:02|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:02|ANZAI +08::01::2022 09:21:02|Tanks can fly if you believe hard enough| +08::01::2022 09:21:02|BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +08::01::2022 09:21:02|ANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +08::01::2022 09:21:02|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:02|HIHABROS!!!!!! +08::01::2022 09:21:02|LADIES AND GENTLEMEN WE GOT EM| +08::01::2022 09:21:02|AKAS +08::01::2022 09:21:02|ANZAI +08::01::2022 09:21:03|NKOUBROS... +08::01::2022 09:21:03|BANZAI BANZAI BANZAI| +08::01::2022 09:21:03|BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:04|ANZAI +08::01::2022 09:21:04|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:04|ANZAI! +08::01::2022 09:21:05|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:05|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:21:05|ANZAI +08::01::2022 09:21:05| 歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +08::01::2022 09:21:05|ANZAI +08::01::2022 09:21:05|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:05|ANZAI! +08::01::2022 09:21:05|ANZAI +08::01::2022 09:21:05|Betting my life savings on chihatan| +08::01::2022 09:21:06|BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +08::01::2022 09:21:06|I DONT WANT TO WATCH ANYMORE| +08::01::2022 09:21:06|ANZAI +08::01::2022 09:21:06|BANZAI BANZAI BANZAI| +08::01::2022 09:21:06|ANZAI +08::01::2022 09:21:06|GG EZPZ| +08::01::2022 09:21:06|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:21:06|ANZAI +08::01::2022 09:21:06|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:06|ANZA89IIII +08::01::2022 09:21:06|ANZAI +08::01::2022 09:21:06|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:07|ANZAI +08::01::2022 09:21:07|O:: +08::01::2022 09:21:07|ANZI +08::01::2022 09:21:07|oh noooooooooooooooooo| +08::01::2022 09:21:07|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:07|ANZAI +08::01::2022 09:21:08|ANZAI +08::01::2022 09:21:08|ANZAI +08::01::2022 09:21:08|ANZAI +08::01::2022 09:21:08|ANZAI +08::01::2022 09:21:09|ANZAI +08::01::2022 09:21:09|BANZAI BANZAI BANZAI| +08::01::2022 09:21:09|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:09|\o:: \o:: \o:: 天皇陛下万歳 \o:: \o:: \o:: \o:: \o:: \o:: 七生報國 \o:: \o:: \o::| +08::01::2022 09:21:09|ANZAI +08::01::2022 09:21:09|\o:: TENNO HEIKA BANZAI \o::| +08::01::2022 09:21:10|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:10|ANZAI!!! +08::01::2022 09:21:10|ANZAI +08::01::2022 09:21:10|BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +08::01::2022 09:21:10| 歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +08::01::2022 09:21:10|ANZAI +08::01::2022 09:21:11|Flag tank?| +08::01::2022 09:21:11|ANZAI! +08::01::2022 09:21:11|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:12|ANZAIIIIIIIIIIIIIIII +08::01::2022 09:21:12|ANZAI +08::01::2022 09:21:12|ANZAI +08::01::2022 09:21:13|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:13|OARAIBROS!? +08::01::2022 09:21:14|ANZAI +08::01::2022 09:21:14|ANZAI +08::01::2022 09:21:14|ANZAI +08::01::2022 09:21:14| 皇陛下万歳 +08::01::2022 09:21:14|MAI +08::01::2022 09:21:14|ANZAI +08::01::2022 09:21:14|What flag tank?| +08::01::2022 09:21:14|I'M A GENIUS| +08::01::2022 09:21:15|AKAS +08::01::2022 09:21:15|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:15|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:15| 歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +08::01::2022 09:21:15|ANZAI +08::01::2022 09:21:15|ANZAI +08::01::2022 09:21:15|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:21:16|BANZAI BANZAI| +08::01::2022 09:21:16|>what is a flag tank| +08::01::2022 09:21:18|BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! | +08::01::2022 09:21:18|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:18|ANZAI +08::01::2022 09:21:18|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:19|ES IST VORBEI DER KRIEG IST VERLOREN| +08::01::2022 09:21:19|OH NO| +08::01::2022 09:21:19|ANZA- +08::01::2022 09:21:20| 歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +08::01::2022 09:21:20|DAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAI| +08::01::2022 09:21:20|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:20|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:20|BANZAI BANZAI BANZAI| +08::01::2022 09:21:21|BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +08::01::2022 09:21:22|HETZER GONNA HETZ| +08::01::2022 09:21:23|>I'm a genius >OH NO| +08::01::2022 09:21:23|uffer +08::01::2022 09:21:23|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:21:24|ANZAIII +08::01::2022 09:21:24|hi-Ha-Tanbros............. +08::01::2022 09:21:24|HETZER GONNA HETZ| +08::01::2022 09:21:25|>OH NOOOO| +08::01::2022 09:21:25|UBRIS +08::01::2022 09:21:25|THOSE CHIHATAN RETARDS| +08::01::2022 09:21:25|Wrong tank| +08::01::2022 09:21:25|BANZAI BANZAI BANZAI BANZAI| +08::01::2022 09:21:26|OH MY IGNORED FLAG TANK| +08::01::2022 09:21:26|OH NO NO NO NO NO| +08::01::2022 09:21:26|>SHE FORGOT| +08::01::2022 09:21:26|ops +08::01::2022 09:21:26|BANZAIBROS SEETHING RN| +08::01::2022 09:21:27|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:21:27|OH NO BANZAI BROS WE GOT TOO COCKY| +08::01::2022 09:21:28|\o:: BANZAI \o::| +08::01::2022 09:21:28|AITED +08::01::2022 09:21:29|EKT +08::01::2022 09:21:29|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUL +08::01::2022 09:21:29|UBRIS +08::01::2022 09:21:30|>COMPLETELY FORGOT| +08::01::2022 09:21:30|WE GOT TOO COCKY!| +08::01::2022 09:21:30|SARABA CHI HA TAN| +08::01::2022 09:21:30| 歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +08::01::2022 09:21:31|WE DID IT CHIHATANSISTERS! JAPAN'S WON THE WAR!| +08::01::2022 09:21:31|WARI +08::01::2022 09:21:31|OARAIBROS!? +08::01::2022 09:21:31|AAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAA +08::01::2022 09:21:31|.... +08::01::2022 09:21:32|Ha, you're not penning frontally with an early war Japan gun| +08::01::2022 09:21:32|Poor Kinuyo| +08::01::2022 09:21:32|ED +08::01::2022 09:21:33|UH OH| +08::01::2022 09:21:33|ROS................ +08::01::2022 09:21:33|EZ FUCKING GAME BROS| +08::01::2022 09:21:34|Ooarai is the John Cena of Senshado| +08::01::2022 09:21:34|FUCK YOU TURTLE| +08::01::2022 09:21:34|ETZ'D +08::01::2022 09:21:35|Momo's first kill| +08::01::2022 09:21:35| 歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +08::01::2022 09:21:35|GG EZ| +08::01::2022 09:21:35|CHIHATAN BROS WE GOT COCKY| +08::01::2022 09:21:36|GEZ' +08::01::2022 09:21:36|AAAAAAAHAHAHAHAHAHAHAHAHAHAHAA +08::01::2022 09:21:38|ANZAI +08::01::2022 09:21:38|WE GOT TOO COCKY| +08::01::2022 09:21:38|OTSUGEKIDIOTS +08::01::2022 09:21:38|NOOOOOOOOOOOOOOOOOOOOOOOO MY $10K| +08::01::2022 09:21:38|OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!?| +08::01::2022 09:21:40|FUCKING I'M A GENIUS MOMENT| +08::01::2022 09:21:40|HEY HEY HEY| +08::01::2022 09:21:41|I was only pretending to be retarteded| +08::01::2022 09:21:41|HEY HEY HEY| +08::01::2022 09:21:42|HEY HEY HEY| +08::01::2022 09:21:43|HEY HEY HEY| +08::01::2022 09:21:43|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +08::01::2022 09:21:43|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:21:45|ANZU CLUTCH| +08::01::2022 09:21:45|HEY HEY HEY| +08::01::2022 09:21:45|HEY HEY HEY| +08::01::2022 09:21:45|HEY HEY HEEEY!| +08::01::2022 09:21:45|Mako noooo| +08::01::2022 09:21:46|In the end couldn't help but be baka chargers| +08::01::2022 09:21:47|ip +08::01::2022 09:21:47|BRUH HOW DID THEY LOSE| +08::01::2022 09:21:47|nzu +08::01::2022 09:21:47|MAKO-CHAN I LOVE YOU| +08::01::2022 09:21:48|HEY HEY HEY| +08::01::2022 09:21:48|hey hey heyyy| +08::01::2022 09:21:48|ya +08::01::2022 09:21:48|HEJ HEJ HEJ SOKOLY| +08::01::2022 09:21:48|broken by the break of day| +08::01::2022 09:21:49|literally me| +08::01::2022 09:21:49|MAKO DED| +08::01::2022 09:21:49|OUT FUCKING SKILLED| +08::01::2022 09:21:49|HEY HEY HEY| +08::01::2022 09:21:49|HEY HEY HEY| +08::01::2022 09:21:50|Why did they have to charge to shoot the flag tank| +08::01::2022 09:21:50|It was her turn| +08::01::2022 09:21:51|OOARAICHADS... I KNEEL| +08::01::2022 09:21:52|I just lost EVERYTHING FUCK FUCK FUCK| +08::01::2022 09:21:52|SLEEPY MAKO SEX| +08::01::2022 09:21:53|and battery drained| +08::01::2022 09:21:54|CHIHABROS WE TOO COCKY| +08::01::2022 09:21:55|Literally me| +08::01::2022 09:21:55|sun is rising, just like real life| +08::01::2022 09:21:56|well never forget you mako| +08::01::2022 09:21:56|ETTER +08::01::2022 09:21:56|PLEASE MARRY ME MAKO-CHAN| +08::01::2022 09:21:57|Oh great, she's dead| +08::01::2022 09:21:59|I MUST COMMITT SUDOKU| +08::01::2022 09:22:00|ETARDS +08::01::2022 09:22:01|i sleep zzz| +08::01::2022 09:22:02|TFO!!!!!!!!!!!!!!!!!!!!!! +08::01::2022 09:22:02|BAN... BANZaiii,,,| +08::01::2022 09:22:02|ARABA +08::01::2022 09:22:03|JESUS FUCKING CHRIST| +08::01::2022 09:22:03|thus Mako died| +08::01::2022 09:22:03|They didn't charge. That's how they lost| +08::01::2022 09:22:05|Fought like never before. Lost as always.| +08::01::2022 09:22:09|I LOST 40K BECAUSE OF THESE IDIOTS| +08::01::2022 09:22:09|EKINAI +08::01::2022 09:22:13|EKINAIS +08::01::2022 09:22:14| 謝 +08::01::2022 09:22:14|decknai +08::01::2022 09:22:15|fucking japanese| +08::01::2022 09:22:15|AKA-TAN +08::01::2022 09:22:16|Chihatanbros we were so close...| +08::01::2022 09:22:16|akas +08::01::2022 09:22:16|>you don't even know japanese| +08::01::2022 09:22:18|MAKO IS GONNA MAKE ME SLEEP| +08::01::2022 09:22:19|lmao fucking kanji| +08::01::2022 09:22:21|zenzen dekinai| +08::01::2022 09:22:22|chihatancoin crash| +08::01::2022 09:22:23|>Japs cant understand jap| +08::01::2022 09:22:23|2 years in the jungle and we are finally out| +08::01::2022 09:22:25|Dear Oorai, fuck you all| +08::01::2022 09:22:26|Dear Duck, thanks for losing :)| +08::01::2022 09:22:26|bitch, just send a text| +08::01::2022 09:22:27|DO YOUR REPS| +08::01::2022 09:22:30|you will never learn japanese| +08::01::2022 09:22:32|Kanji is evil| +08::01::2022 09:22:33|nishi is so beautiful| +08::01::2022 09:22:34|UOOOOOOOOOOOOOOOOHHHHHHHHHHHH FUKUDA| +08::01::2022 09:22:38|dekinai ;_;| +08::01::2022 09:22:39|TAEKO IS CUTE| +08::01::2022 09:22:40|OLLEYBALL! +08::01::2022 09:22:41|cute cute cute| +08::01::2022 09:22:42|volleyball with the loli| +08::01::2022 09:22:42|_;7 +08::01::2022 09:22:45|_; +08::01::2022 09:22:45|A FUCKING FOOTBALL| +08::01::2022 09:22:46|reshiii~ +08::01::2022 09:22:46|I entrusts you with Wilson, fuku chan| +08::01::2022 09:22:47|I CANT GET OVER THAT CHIHATAN LOSE| +08::01::2022 09:22:48|>a fucking volleyball| +08::01::2022 09:22:49|FUKU A CUTEEEEEEEEEEEEEEEEEEEEEEE| +08::01::2022 09:22:55|dream on| +08::01::2022 09:22:55|FUKUDA MUST BE HANGED| +08::01::2022 09:22:56|after you learn a bunch of kanji you wish they were used more| +08::01::2022 09:22:57|WILLSON | +08::01::2022 09:22:57|>even Japs can't learn jap Maybe we should just give up...| +08::01::2022 09:22:57|olno +08::01::2022 09:22:58|sportmanship ;_;| +08::01::2022 09:22:58|Are Ducks that illiterate?| +08::01::2022 09:22:59|) +08::01::2022 09:23:00|aikon +08::01::2022 09:23:00|cool train| +08::01::2022 09:23:04|HORSE TIME| +08::01::2022 09:23:06|INOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:23:07|ASED +08::01::2022 09:23:08|kek special now| +08::01::2022 09:23:08|ORSE +08::01::2022 09:23:08|-D-DA-DAIKON?? +08::01::2022 09:23:09|EAMLESS +08::01::2022 09:23:09|>you just know| +08::01::2022 09:23:09|horsing around| +08::01::2022 09:23:10|UMA PYOI| +08::01::2022 09:23:10|INOOOOOOOOOOOOOOO +08::01::2022 09:23:11|YOU JUST KNOW| +08::01::2022 09:23:11|OU +08::01::2022 09:23:12|SOMETIMES YOU JUST KNOW| +08::01::2022 09:23:12|YOU JUST KNOW| +08::01::2022 09:23:12|MY DAY| +08::01::2022 09:23:13|QUALITY HORSES| +08::01::2022 09:23:13|AIKON +08::01::2022 09:23:13|TO THE TOWN OF AGUA FRIA| +08::01::2022 09:23:13|sometimes you just know| +08::01::2022 09:23:13|YOU JUST KNOW| +08::01::2022 09:23:14|oh fug| +08::01::2022 09:23:14|GATOGOTO CHOO CHOO| +08::01::2022 09:23:14|i want saori to ride me| +08::01::2022 09:23:15|That's some serious wheelspin on that train.| +08::01::2022 09:23:15|Body bags| +08::01::2022 09:23:15|MAGINE +08::01::2022 09:23:16|>>::MLP:: +08::01::2022 09:23:16|REAL JANE HOURS| +08::01::2022 09:23:17|UUUUU UMADACCHI| +08::01::2022 09:23:17|YOU JUST KNOW| +08::01::2022 09:23:17|OH NO| +08::01::2022 09:23:17|But, muh Finns| +08::01::2022 09:23:17|YOU JUST KNOW| +08::01::2022 09:23:19|I wish I were a horse| +08::01::2022 09:23:19|ASUGA +08::01::2022 09:23:20|>you just know| +08::01::2022 09:23:20|I was zoned in to that battle. completely ignored chat| +08::01::2022 09:23:21|For a few daikon more| +08::01::2022 09:23:22|Oh shit I haven't watched this| +08::01::2022 09:23:22|YOU JUST KNOW| +08::01::2022 09:23:22|YOU JUST KNOW| +08::01::2022 09:23:25|why is the black one called choco| +08::01::2022 09:23:25|KIMI NO AIBA GA| +08::01::2022 09:23:25|YOU JUST KNOW| +08::01::2022 09:23:25|HOCO +08::01::2022 09:23:26|WHY ARE THE GIRLS SO BIG| +08::01::2022 09:23:27|SUNSET GUPPIEs| +08::01::2022 09:23:27|ani +08::01::2022 09:23:27|OU +08::01::2022 09:23:28|HORSE. DICK.| +08::01::2022 09:23:29|PART 7 WHEN| +08::01::2022 09:23:29|I JUST KNOW| +08::01::2022 09:23:31|especially Yukaris horse| +08::01::2022 09:23:31|YOU JUST KNOW| +08::01::2022 09:23:31|you just know| +08::01::2022 09:23:31|YOU JUST KNOW| +08::01::2022 09:23:32|UST +08::01::2022 09:23:33|THOSE HORSES ARE TINY COMPARED TO THEM| +08::01::2022 09:23:34|god I want yukari to ride me| +08::01::2022 09:23:35|you just know episode| +08::01::2022 09:23:36|girls und horses| +08::01::2022 09:23:37|ZUKYUN BAKYUN HASHIRIDASHI| +08::01::2022 09:23:37|SNIFFING SADDLES AAAAAAAAAAAAAAAH| +08::01::2022 09:23:38|you just know| +08::01::2022 09:23:38|YOU JUST KNOW| +08::01::2022 09:23:39|my horse is black so is it nigger?| +08::01::2022 09:23:40|AHHHHHH MAKO| +08::01::2022 09:23:42|IT WAS TOO MUCH| +08::01::2022 09:23:43|I wish i was the horse| +08::01::2022 09:23:45|Mako too used to riding horses| +08::01::2022 09:23:45|you just know moment| +08::01::2022 09:23:47|I think that was the best battle we've seen in the series| +08::01::2022 09:23:49|I wish I was that horse| +08::01::2022 09:23:52|Don't talk about the cgi horses| +08::01::2022 09:23:55|That poor horse.| +08::01::2022 09:23:55|I love the OVA OST so much| +08::01::2022 09:23:56|STUDY) +08::01::2022 09:24:00|saori finally found a man| +08::01::2022 09:24:04|Cute freckles| +08::01::2022 09:24:05|is the ova ost up| +08::01::2022 09:24:06|Hick is cutest guppie| +08::01::2022 09:24:10|Bellebros this is our year| +08::01::2022 09:24:10|a cute| +08::01::2022 09:24:10|T +08::01::2022 09:24:13|These girls are GIGANTIC| +08::01::2022 09:24:13|Where on the ship does this take place| +08::01::2022 09:24:14|RECKLES +08::01::2022 09:24:16|no habla japones| +08::01::2022 09:24:17|Cute farmer| +08::01::2022 09:24:18|If this whole place was on the ship, wow...| +08::01::2022 09:24:19|THESE GIRLS DON'T EVEN KNOW THEY'RE ON A SHIP| +08::01::2022 09:24:20|AS I WALKED BY ON THE STREETS OF OARAI| +08::01::2022 09:24:23|>mountains on a carrier| +08::01::2022 09:24:24|A FUCKING DESERT| +08::01::2022 09:24:24|Sayori x choco is my fetish| +08::01::2022 09:24:25|what is this| +08::01::2022 09:24:26|INU +08::01::2022 09:24:26|hello natives this land is my land now| +08::01::2022 09:24:27|UTISM +08::01::2022 09:24:27|indian tank when| +08::01::2022 09:24:27|lmao random ass desert| +08::01::2022 09:24:28|????????? +08::01::2022 09:24:28|ATIVES +08::01::2022 09:24:29|INJUN LARPERS| +08::01::2022 09:24:29|Native Americans| +08::01::2022 09:24:30|>cactus valley| +08::01::2022 09:24:30|how can they afford artifical mountain ranges?| +08::01::2022 09:24:30|UUUUUUUOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 09:24:30|ishisou +08::01::2022 09:24:34|the fuck is this| +08::01::2022 09:24:35|Give firewater| +08::01::2022 09:24:35|That perfect transition| +08::01::2022 09:24:37|4 TRILLION WASTED ON THIS PLACE| +08::01::2022 09:24:38|EK +08::01::2022 09:24:39|native american (japanese)| +08::01::2022 09:24:39|what the fuckl| +08::01::2022 09:24:39|native americans?| +08::01::2022 09:24:41|ae these traditional mutts?| +08::01::2022 09:24:43|HEYA HOYA HEYA HOYA HAYO HOHA| +08::01::2022 09:24:44|DAS RACIST| +08::01::2022 09:24:44|how tf they get on the ship| +08::01::2022 09:24:44|Ah, yes, traditional native american indian popcorn| +08::01::2022 09:24:46|AINU +08::01::2022 09:24:47|lamo this fucking injun autism is something else| +08::01::2022 09:24:47|TAKE DRUGS. KILL A BEAR.| +08::01::2022 09:24:48|olodeck +08::01::2022 09:24:49|DICK MOUNTAIN| +08::01::2022 09:24:49|injins | +08::01::2022 09:24:50|konoko mauntein| +08::01::2022 09:24:51|are these ainu?| +08::01::2022 09:24:51|Where does Ooari get all this funding?| +08::01::2022 09:24:54|ishisou +08::01::2022 09:24:54|UTE +08::01::2022 09:24:55|mushroom +08::01::2022 09:24:56|ishiisou +08::01::2022 09:24:57|ishiisou +08::01::2022 09:24:57|ishisou +08::01::2022 09:24:57|frido chiken| +08::01::2022 09:24:58|Kino trapper| +08::01::2022 09:25:01|Ah, yes, traditional fried chicken| +08::01::2022 09:25:02|wtf is the ooarai ship| +08::01::2022 09:25:04|literal autis| +08::01::2022 09:25:04|WSMAN +08::01::2022 09:25:05|Straight up living in huts even though they're Agriculture students| +08::01::2022 09:25:10|>MOUNTAINS ON A SHIP| +08::01::2022 09:25:12|GENERATIONS HAVE LIVED AND DIED WITHOUT EVER KNOWING THEY WERE ON A SHIP| +08::01::2022 09:25:13|i was literally gone for 5 mins why are they cowboys now| +08::01::2022 09:25:13|YOU JUST KNOW| +08::01::2022 09:25:14|are they still on a ship?| +08::01::2022 09:25:15|SAORI FUCKS BLACK HORSES| +08::01::2022 09:25:15|you're a pretty big ship| +08::01::2022 09:25:16|KFC is traditional Japanese food| +08::01::2022 09:25:17|NO WONDER MEXTBRO WANTED TO FUCKING SHUT THIS SHIP DOWN| +08::01::2022 09:25:20|BIG SHIP| +08::01::2022 09:25:20|>I wannbe in the cavalry| +08::01::2022 09:25:21|NO WONDER THEY WANTED TO SHUT THIS SHIP DOWN| +08::01::2022 09:25:23|UUU +08::01::2022 09:25:25|BELLEBROS WE'RE GOING TO DO IT | +08::01::2022 09:25:25|I GOT A PLAN ARTHUR| +08::01::2022 09:25:25|TIL Saori is a fast leaner| +08::01::2022 09:25:26|the sky is painted, it's alright| +08::01::2022 09:25:26|A FUCKING GUN| +08::01::2022 09:25:27|THEY"RE HANGING ME TONIGHT| +08::01::2022 09:25:27|look's good| +08::01::2022 09:25:28|INO +08::01::2022 09:25:32|INO +08::01::2022 09:25:32|utt +08::01::2022 09:25:32|UTT +08::01::2022 09:25:32|ANE +08::01::2022 09:25:35|How the fuck does this all fit on a ship| +08::01::2022 09:25:36|HAVE SOME GOD DAMMED FAITH| +08::01::2022 09:25:36|>MOUNTAINS >DESERT >FOREST >ON A SHIP| +08::01::2022 09:25:36|Actual guns| +08::01::2022 09:25:37|Is this still on a ship?| +08::01::2022 09:25:37|>Carbon-coated horses and carbon-coated vests| +08::01::2022 09:25:37|ane +08::01::2022 09:25:38|MMMMM JANE BUTT| +08::01::2022 09:25:38|r +08::01::2022 09:25:40|ooba +08::01::2022 09:25:40|EGS +08::01::2022 09:25:41|they're carbon mountains| +08::01::2022 09:25:42|EW +08::01::2022 09:25:42|ss +08::01::2022 09:25:42|ANE +08::01::2022 09:25:43|OOO +08::01::2022 09:25:43|O +08::01::2022 09:25:43|TAHITI, ARTHUR| +08::01::2022 09:25:43|is this why they can't afford senshado?| +08::01::2022 09:25:44|SS +08::01::2022 09:25:45|> a ship full of cosplayers| +08::01::2022 09:25:46|SHES SO HOT BROS| +08::01::2022 09:25:46|Bang Bang| +08::01::2022 09:25:46|IDDIES +08::01::2022 09:25:47|its +08::01::2022 09:25:48|WATASHI WA JANE| +08::01::2022 09:25:48|maybe we are all on one big ship| +08::01::2022 09:25:49|Jane's Janes| +08::01::2022 09:25:49|ANE +08::01::2022 09:25:50|EEEEEEEEEEEEEEEEEX +08::01::2022 09:25:51|EEEEEEEEEEEEEEEEEX +08::01::2022 09:25:51|EEEEEW +08::01::2022 09:25:51|carbon coated pocket dimensional carrier| +08::01::2022 09:25:51|CARBON COATED COWGIRL| +08::01::2022 09:25:51|They arrived to MArlboro county| +08::01::2022 09:25:51|EWD +08::01::2022 09:25:52|OH MY GOD THOSE TITS| +08::01::2022 09:25:53|sex. with jane| +08::01::2022 09:25:53|GOD I WANT TO FUCK THIS SHERIFF| +08::01::2022 09:25:54|ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +08::01::2022 09:25:54|EW +08::01::2022 09:25:55|ARTHUR MORGAN| +08::01::2022 09:25:55|SHES HAS A PLAN| +08::01::2022 09:25:58|a bit of a calamity| +08::01::2022 09:25:59|OH MY GOD THAT MAKO| +08::01::2022 09:25:59|Proud Yukarin!| +08::01::2022 09:26:00|Janes sinful body is something else| +08::01::2022 09:26:01|The pistol was the Devil's Right Hand| +08::01::2022 09:26:02|i HAVE a PLAN| +08::01::2022 09:26:03|OWDY +08::01::2022 09:26:04|Modern Strange Cowgirls | +08::01::2022 09:26:06|Jane's tanned and blonde?| +08::01::2022 09:26:10|owdy +08::01::2022 09:26:13|there could be a better tank than the markiv here| +08::01::2022 09:26:18|UMBAGO +08::01::2022 09:26:18|mai +08::01::2022 09:26:19|Jane's Janes| +08::01::2022 09:26:20|aberu +08::01::2022 09:26:20|mai +08::01::2022 09:26:21|om +08::01::2022 09:26:21|ABERU +08::01::2022 09:26:21|ELISH +08::01::2022 09:26:22|A FUCKING GUN| +08::01::2022 09:26:23|BIG IRON| +08::01::2022 09:26:23|oink +08::01::2022 09:26:24|good churro :)| +08::01::2022 09:26:24|HURUS +08::01::2022 09:26:25|mai +08::01::2022 09:26:25|MAI +08::01::2022 09:26:25|MAI +08::01::2022 09:26:26|>a fucking gun| +08::01::2022 09:26:26|TF +08::01::2022 09:26:27|BIG IRON| +08::01::2022 09:26:27|I WANT TO FEED MAKO MY CHURRO| +08::01::2022 09:26:27|mai +08::01::2022 09:26:27|I'd feed her my Churo| +08::01::2022 09:26:27|lumbago +08::01::2022 09:26:28|Actual guns| +08::01::2022 09:26:28|UTT +08::01::2022 09:26:28|GUNSHOT SFX| +08::01::2022 09:26:29|utt +08::01::2022 09:26:30|BIG IRON| +08::01::2022 09:26:31|fluff get the nade| +08::01::2022 09:26:31|UTT +08::01::2022 09:26:31|These mega-carriers are full on magic. I do want a full tour. It's nutty.| +08::01::2022 09:26:32|UTTE +08::01::2022 09:26:32|BIG IRON| +08::01::2022 09:26:33|BIG BUTT| +08::01::2022 09:26:34|utte +08::01::2022 09:26:35|20 men had tried to take her 20 men had made the slip| +08::01::2022 09:26:36|Guns loaded with paintballs| +08::01::2022 09:26:36|HOLY FUCK HER ASS IS HUGE| +08::01::2022 09:26:38|BIG IRON| +08::01::2022 09:26:39|WHAT THE FUCK IS THIS???????????| +08::01::2022 09:26:42|ASS TAKING HALF THE SCREEN| +08::01::2022 09:26:43|HER FUCKING CHURRO| +08::01::2022 09:26:43|URUSENAI +08::01::2022 09:26:44|SHES FAST| +08::01::2022 09:26:44|F CHURRO| +08::01::2022 09:26:45|resarinai +08::01::2022 09:26:45|Slut assumes the whore position.| +08::01::2022 09:26:46|URUSENAI +08::01::2022 09:26:46|IN THE TOWN OF AGUA FRIA AN STRANGER ONE FINE DAY| +08::01::2022 09:26:47|FLintstones Sakuse| +08::01::2022 09:26:49|ew +08::01::2022 09:26:50|MAKO SAVES THE DAY| +08::01::2022 09:26:53|Ghost Town Gunfight| +08::01::2022 09:26:53|>my dick when I see Jane Daikons| +08::01::2022 09:26:54|someone gonna die| +08::01::2022 09:26:57|PEE MAN| +08::01::2022 09:27:01|TEXAS RED| +08::01::2022 09:27:02|SAORI ASS| +08::01::2022 09:27:04|PEE MAN| +08::01::2022 09:27:04|Look at these larpers| +08::01::2022 09:27:05|Mako hates Churro shooters| +08::01::2022 09:27:08|WHAT THE FUCK IS GOING ON| +08::01::2022 09:27:09|AORI +08::01::2022 09:27:11|bros what the fuck is happening I thought this was tankgirls I'm too drunk for this shit| +08::01::2022 09:27:14|Peak autism| +08::01::2022 09:27:16|MAKO BANZAI| +08::01::2022 09:27:17|FINGER GUNS| +08::01::2022 09:27:18|DDDDDUUUUUUUUUEEEEEEEEELLLLLLL +08::01::2022 09:27:19|WE'RE ALL PACKING HEAT| +08::01::2022 09:27:20|::u::el +08::01::2022 09:27:22|This is all on a Japanese ship, by the way| +08::01::2022 09:27:23|INO +08::01::2022 09:27:23|deputized guppies| +08::01::2022 09:27:23|BELLEBROS THIS IS OUR YEAR| +08::01::2022 09:27:23|this is a high school btw| +08::01::2022 09:27:23|THEY HAVE A FUCKING BUFFALO| +08::01::2022 09:27:24|Tank girls got guns now| +08::01::2022 09:27:24|IDK anymore, this rides taken me over| +08::01::2022 09:27:24|fucking chuunis| +08::01::2022 09:27:25|EEHHH +08::01::2022 09:27:25|holy shit | +08::01::2022 09:27:26|The ULTIMATE LARP| +08::01::2022 09:27:28|HIGHS +08::01::2022 09:27:28|And you though senshado larper were bad| +08::01::2022 09:27:28|INO +08::01::2022 09:27:28|BIG IRON| +08::01::2022 09:27:29|That's a very pale mexican| +08::01::2022 09:27:30|we already in daikon war????| +08::01::2022 09:27:31|OH THEY FUCKING| +08::01::2022 09:27:31|INO +08::01::2022 09:27:32|BIG IRON| +08::01::2022 09:27:35|THERE WAS 40 FT BETWEEN THEM| +08::01::2022 09:27:38|ONE LAST DUEL| +08::01::2022 09:27:39|duel in a sumo arena fuckin kek| +08::01::2022 09:27:40|SPANISH COLONIZERS| +08::01::2022 09:27:41|highs.... +08::01::2022 09:27:41|HAVE SOME FAITH MIHO| +08::01::2022 09:27:41|ONCE UPON A TIME IN OARAI| +08::01::2022 09:27:42|THIS MAKES MY IRON BIG IRON| +08::01::2022 09:27:42|A BIG IRON ON HIS HIP| +08::01::2022 09:27:43|there are actual western larper enthusiasts in japan btw| +08::01::2022 09:27:44|Does Yukari still have her grenade?| +08::01::2022 09:27:45|what the fuck am i watching| +08::01::2022 09:27:45|wah wah wah| +08::01::2022 09:27:46|a universe where everyone larps| +08::01::2022 09:27:46|SHE DIED| +08::01::2022 09:27:47|THE SWIFTNESS OF THE RANGER | +08::01::2022 09:27:47|EAD +08::01::2022 09:27:48|Bison feet?| +08::01::2022 09:27:48|was mako always this short| +08::01::2022 09:27:48|IN THE TOWN OF AGUA FRIA| +08::01::2022 09:27:49|ASTED +08::01::2022 09:27:49|RUTAL +08::01::2022 09:27:49|ORE +08::01::2022 09:27:50|big iron on his hip...| +08::01::2022 09:27:50| +08::01::2022 09:27:51|WHAT THE FUCK| +08::01::2022 09:27:52|ip +08::01::2022 09:27:52|AYAI +08::01::2022 09:27:52|BULLET FAIRLY RIPPED| +08::01::2022 09:27:52|ILL +08::01::2022 09:27:53|Mr Bison| +08::01::2022 09:27:54|LUTE +08::01::2022 09:27:54|she can't shoot from the hip| +08::01::2022 09:27:54| +08::01::2022 09:27:55|ATALITY +08::01::2022 09:27:55|ED +08::01::2022 09:27:55|I CAN'T BELIEVE SHE KILLED HER| +08::01::2022 09:27:55| +08::01::2022 09:27:56|EW +08::01::2022 09:27:56|ip +08::01::2022 09:27:56|HOLY FUCK SHE DEAD| +08::01::2022 09:27:57|TEXAS RANGER| +08::01::2022 09:27:58|HOLY FUCK\| +08::01::2022 09:27:59|the swiftness of the ranger is still talked about today| +08::01::2022 09:27:59|20 notches on her pistol| +08::01::2022 09:28:00|BIG IRRRRRRRROOOOOOOOOOON| +08::01::2022 09:28:02|ame +08::01::2022 09:28:02|CARBON COATED SKIN| +08::01::2022 09:28:02|ersplat +08::01::2022 09:28:02| +08::01::2022 09:28:02|I SHOT A GIRL IN OARAI JUST TO WATCH HER DIE| +08::01::2022 09:28:03|BIG IRON| +08::01::2022 09:28:03|FROM THE HIP LIKE A PRO| +08::01::2022 09:28:04|that would hurt if no carbon| +08::01::2022 09:28:05|Still runs| +08::01::2022 09:28:06|ASUGA +08::01::2022 09:28:07|YOU JUST KNOW| +08::01::2022 09:28:07|WELL THE MAN HAD NOT CLEARED LEATHER| +08::01::2022 09:28:08|DRENCHED IN BLOOD| +08::01::2022 09:28:08|OWARD! +08::01::2022 09:28:09|apow +08::01::2022 09:28:10|RIDE LIKE THE WIND| +08::01::2022 09:28:10|YOU JUST KNOW| +08::01::2022 09:28:11|OU +08::01::2022 09:28:12|HE HAD SOME BUISNESS WITH THE BIG IRON ON HIS HIP| +08::01::2022 09:28:13|BIG IIIIIIIIIIRON BIG IIIIIIIIIIIIIIRon| +08::01::2022 09:28:13|MADACCHI +08::01::2022 09:28:14|YOU JUST KNOW| +08::01::2022 09:28:14|YOU JUST KNOW| +08::01::2022 09:28:15|YOU JUST KNOW| +08::01::2022 09:28:16|Saori's bf is so fast| +08::01::2022 09:28:16|what the fuck| +08::01::2022 09:28:17|YOU JUST KNOW| +08::01::2022 09:28:18|You just know!| +08::01::2022 09:28:18|OH SHIT| +08::01::2022 09:28:19|SAORI PLEASE LASSO ME INSTEAD ;____;| +08::01::2022 09:28:20|RAPE HORSE TIME| +08::01::2022 09:28:22|NO PANSU SHOT| +08::01::2022 09:28:23|>she's mastered riding| +08::01::2022 09:28:24|RAPE TIME| +08::01::2022 09:28:24|You just know| +08::01::2022 09:28:25|Saori: A horse is fine too| +08::01::2022 09:28:25|popular with horses| +08::01::2022 09:28:25|YOU JUST KNOW| +08::01::2022 09:28:25|Weird ass tank she's riding| +08::01::2022 09:28:27|YOU JUST KNOW| +08::01::2022 09:28:27|UMAPYOI UMAPYOI| +08::01::2022 09:28:27|>that fucking horse rape face| +08::01::2022 09:28:27|YJN +08::01::2022 09:28:27|dat horse| +08::01::2022 09:28:28|YOU JUST KNOW| +08::01::2022 09:28:28|Should have just threw a tomato| +08::01::2022 09:28:29|ME ON THE LEFT| +08::01::2022 09:28:29|OU +08::01::2022 09:28:29|SAORI FUCKS HORSES| +08::01::2022 09:28:29|GIW I was choco| +08::01::2022 09:28:30|YOU JUST KNOW| +08::01::2022 09:28:30|OK SAORI| +08::01::2022 09:28:33|YOU JUST KNOW| +08::01::2022 09:28:33|AIKON +08::01::2022 09:28:33|YOU JUST KNOWWWWWWWWWWWWWWW| +08::01::2022 09:28:35|AIKON +08::01::2022 09:28:36| WHITE GIRLS| +08::01::2022 09:28:38|big daikon conspiracy| +08::01::2022 09:28:39|This was just roleplay| +08::01::2022 09:28:40|DAIKON WAR| +08::01::2022 09:28:41|>SHOVE THEM INSIDE| +08::01::2022 09:28:42|>subtle metaphor| +08::01::2022 09:28:42|the doujin writes itself!| +08::01::2022 09:28:44|daikon thievery| +08::01::2022 09:28:44|Popular with horses AND boys| +08::01::2022 09:28:45|BURIGAKKO??????? +08::01::2022 09:28:45|whiy is she smoking firewood| +08::01::2022 09:28:47|ute +08::01::2022 09:28:49|MAI +08::01::2022 09:28:49|YOU JUST KNOW| +08::01::2022 09:28:51|-DAIKON? +08::01::2022 09:28:52|But... why| +08::01::2022 09:28:59|ishii +08::01::2022 09:29:00|I want to commit a crime| +08::01::2022 09:29:01|HODOYOI SHOPPASA| +08::01::2022 09:29:03|fragant and salty| +08::01::2022 09:29:03|>smoked daikon| +08::01::2022 09:29:04|daikon for lonely nights| +08::01::2022 09:29:05|>eating stolen goods| +08::01::2022 09:29:06|EAT DAIKON KIMCHI| +08::01::2022 09:29:07|I DONT GET WHY| +08::01::2022 09:29:08|I would like to try some...| +08::01::2022 09:29:09|Choco really is choco| +08::01::2022 09:29:14|Jesus fucking christ look at those hips| +08::01::2022 09:29:17|PECAN PIE| +08::01::2022 09:29:17|>misunderstood villian| +08::01::2022 09:29:23|gib daikon pls| +08::01::2022 09:29:25|i'd give her the D(aikon)| +08::01::2022 09:29:25|SO GOOD| +08::01::2022 09:29:27|Built for childbearing| +08::01::2022 09:29:28|based ranger| +08::01::2022 09:29:31|anks? +08::01::2022 09:29:32|goodness gracious Jane is so hot| +08::01::2022 09:29:32|So is this the next tank team?| +08::01::2022 09:29:33|SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX COWBOY SEX| +08::01::2022 09:29:33|>DAIKON CRIMES| +08::01::2022 09:29:35|I would give her my daikon| +08::01::2022 09:29:36|What guppies aren't built for childbearing?| +08::01::2022 09:29:37|MAKO APPROVES| +08::01::2022 09:29:40|what is the purpose of this ova?| +08::01::2022 09:29:40|they're on a pretty big ship| +08::01::2022 09:29:41|::u:: wins again| +08::01::2022 09:29:42|MUH 20 ACRES| +08::01::2022 09:29:42|>already more likable than sharks| +08::01::2022 09:29:45|mako has seen some shit| +08::01::2022 09:29:52|mako wire| +08::01::2022 09:29:53|ok what was the real reason she wanted those big tubers| +08::01::2022 09:29:53|ako... +08::01::2022 09:29:54|egs! +08::01::2022 09:29:54|I cry everynight thinking about how Jane isnt real| +08::01::2022 09:29:55|replace sharks with cowboys| +08::01::2022 09:29:55|::u::fags >>>::out::| +08::01::2022 09:29:56|they wasted so much building this| +08::01::2022 09:29:57|WHO in their right mind won't give her their Daikon?| +08::01::2022 09:29:59|>mako wide awake| +08::01::2022 09:30:01|I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS | +08::01::2022 09:30:04|but cutelass can still run the bar| +08::01::2022 09:30:08|they may be more likable than the sharks, but the sharks will always be more lovable| +08::01::2022 09:30:19|they literally built a mountan range | +08::01::2022 09:30:20|KINO MUSIC| +08::01::2022 09:30:26|I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON| +08::01::2022 09:30:27|dude carbon lmao| +08::01::2022 09:30:28|INO +08::01::2022 09:30:29|>implying girls being chuunis about random shit is a waste| +08::01::2022 09:30:30|Why the fuck is her corset outside| +08::01::2022 09:30:30|EPEATER +08::01::2022 09:30:31|ASED +08::01::2022 09:30:31|Pretty sure it's just to get more characters to slowly replace the ones who graduate or what ev| +08::01::2022 09:30:32|AS IIII WALK DOWN IN THE STREETS OF OARAI| +08::01::2022 09:30:33|INO +08::01::2022 09:30:34|IS this an OVA? I've never seen this.| +08::01::2022 09:30:35|LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK| +08::01::2022 09:30:35|CABRON COATED LARPERS| +08::01::2022 09:30:35|no wonder mextcuck wanted to close it up| +08::01::2022 09:30:36|holodeck tech| +08::01::2022 09:30:36|USA USA USA USA USA USA USA USA | +08::01::2022 09:30:36|OST +08::01::2022 09:30:37|ITS HOT| +08::01::2022 09:30:37|INO +08::01::2022 09:30:38|K I N O| +08::01::2022 09:30:40|This is still a highschool on a ship| +08::01::2022 09:30:41|USA USA USA| +08::01::2022 09:30:41|girls und horse| +08::01::2022 09:30:42|where did jane get the carbon| +08::01::2022 09:30:43|did they build a night sky with stars on the ship wtf???????| +08::01::2022 09:30:44|>No Horse tank| +08::01::2022 09:30:45|>all these horses| +08::01::2022 09:30:46|INO +08::01::2022 09:30:46|A FISTFUL OF DAIKON| +08::01::2022 09:30:47|SADDLE UP| +08::01::2022 09:30:47|Jane didn't say no though| +08::01::2022 09:30:48|ane... +08::01::2022 09:30:48|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:30:48|yes it's an ova bundled with the latest| +08::01::2022 09:30:49|There has to be some weird feint in the next battle to make this special make sense.| +08::01::2022 09:30:49|KINO COWGIRL RIDES ON| +08::01::2022 09:30:49|SEE YOU SHIP COYBOY| +08::01::2022 09:30:49|Jane makes my dick carbon coated| +08::01::2022 09:30:51|Ooa-rai Ooa-rai | +08::01::2022 09:30:53|anzah? +08::01::2022 09:30:53|YOU JUST KNOW| +08::01::2022 09:30:53|so sad| +08::01::2022 09:30:54|INO +08::01::2022 09:30:54|You just know| +08::01::2022 09:30:54|INO +08::01::2022 09:30:54|KINO AS FUCK| +08::01::2022 09:30:56|Where are the Daltons?| +08::01::2022 09:30:56|RED DEAD REDEMPTION 3 LOOKS LIT| +08::01::2022 09:30:57|Hotpants are nice| +08::01::2022 09:30:57|THIS MUSIC| +08::01::2022 09:30:57|BIG SHIP| +08::01::2022 09:30:58|INO +08::01::2022 09:30:58|INOOOO +08::01::2022 09:31:00|ino +08::01::2022 09:31:00|INO +08::01::2022 09:31:01|Ah thanks| +08::01::2022 09:31:01|INO +08::01::2022 09:31:01|DIRECTED BY CLINT EASTWOOD| +08::01::2022 09:31:03|Imagine talking to Jane in 10 years about her dark chuuni past as a cowboy sheriff | +08::01::2022 09:31:04|FISFUL OF DAIKONS| +08::01::2022 09:31:04|If I could get a whole bunch of teen girls to roleplay as cowgirls I'd spare no expense too| +08::01::2022 09:31:05|ino +08::01::2022 09:31:05|INO +08::01::2022 09:31:07|ino +08::01::2022 09:31:08|OOOOOOOOOARAI +08::01::2022 09:31:09|ARARARARARAI +08::01::2022 09:31:09|INO +08::01::2022 09:31:09|MUSIC :)| +08::01::2022 09:31:12|For a few Daikon more| +08::01::2022 09:31:12|O ARAI RAI RAI| +08::01::2022 09:31:13|RAI RAI| +08::01::2022 09:31:14|O ARAI RAI| +08::01::2022 09:31:14|O ARAI RAI RAI OARAI| +08::01::2022 09:31:14|INO +08::01::2022 09:31:15|ORIAORIAORIAROAIROAIRORIRIRAOAIRAOIRIAORIAOIAORIAROAIROAIRAORIAORI +08::01::2022 09:31:15|big tonks| +08::01::2022 09:31:16|ARAI +08::01::2022 09:31:17|For a Few Daikon More| +08::01::2022 09:31:17|what was the point of this ova| +08::01::2022 09:31:17|How much does it cost to build a mountain range?| +08::01::2022 09:31:18|OOOOOOOOOAAAAAAAAAAAAARRRRRRRRRRRAAAAAAAAIIIIIIIIII +08::01::2022 09:31:18|OOOOARAIRAIRAIRAI +08::01::2022 09:31:19|NEW WAIFU| +08::01::2022 09:31:19|OOORAI +08::01::2022 09:31:20|Who put a western in my tank anime| +08::01::2022 09:31:22|tbh it would have been better to end the marathon with this OVA| +08::01::2022 09:31:22|O RAI RAI OARAI| +08::01::2022 09:31:22|Once upon a time in Oarai| +08::01::2022 09:31:22|O ARAI RAI RAI RAI RAI| +08::01::2022 09:31:22|INO +08::01::2022 09:31:24|I'm a poor lonesome cowboy, I'm a poor lonesome cowboy and far away from home| +08::01::2022 09:31:25|KINO SONG| +08::01::2022 09:31:26|ARAI +08::01::2022 09:31:28|If Jane was the singer, she got vocals| +08::01::2022 09:31:28|goodbye shane| +08::01::2022 09:31:28|The quick and the daikon| +08::01::2022 09:31:31|O arai Rai Rai Oarai| +08::01::2022 09:31:32|BASED WESTERN FANS| +08::01::2022 09:31:32|see you in 5 years fuckers| +08::01::2022 09:31:33|I hope we see them again| +08::01::2022 09:31:33|over +08::01::2022 09:31:33|88888 +08::01::2022 09:31:34|tree fitty| +08::01::2022 09:31:34|THE END| +08::01::2022 09:31:36|INO +08::01::2022 09:31:36|if you know horses for more than 5 minutes you've also seen horse dicks| +08::01::2022 09:31:37|>this is all on a carrier| +08::01::2022 09:31:38|ravo +08::01::2022 09:31:38|INO +08::01::2022 09:31:39|oooooooooooooooooooooooooooooooooooooooooooo +08::01::2022 09:31:39|AND SO THE COWGIRL WHO CHEATED THE ASSIGNEMNTS| +08::01::2022 09:31:40|Million dollar daikon| +08::01::2022 09:31:40|THE END| +08::01::2022 09:31:40|the good, the bad and momo| +08::01::2022 09:31:40|THE END| +08::01::2022 09:31:41|888 +08::01::2022 09:31:42|>horse stops getting further away| +08::01::2022 09:31:43|Maybe they wouldn't have tried to close the school if it didn't have a giant useless mountain range in it| +08::01::2022 09:31:43|ITSUMO NO YATSU| +08::01::2022 09:31:45|inter inter misiion?| +08::01::2022 09:31:46|see yall in 2024| +08::01::2022 09:31:47|I want to see a tank shaped like a horse | +08::01::2022 09:31:47|HY +08::01::2022 09:31:47|ip +08::01::2022 09:31:47|UGARY +08::01::2022 09:31:52|EAMLESS +08::01::2022 09:31:53|mai +08::01::2022 09:31:56|RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +08::01::2022 09:31:58|Perfect cut| +08::01::2022 09:31:59|wtf bros we just timetraveled backa few months| +08::01::2022 09:32:00|bartender sex| +08::01::2022 09:32:06|don't use a flag again you fuckin chuunis| +08::01::2022 09:32:09|2 YEARS | +08::01::2022 09:32:10|Dumb momo| +08::01::2022 09:32:11|Cutelass is the only good shark| +08::01::2022 09:32:11|EAMLESS +08::01::2022 09:32:12| +08::01::2022 09:32:14|EEEEEEEEEEEEEEEEEEEEEX +08::01::2022 09:32:15|tags: emotionless sexx| +08::01::2022 09:32:15|ew +08::01::2022 09:32:19|THE BURN IT HURTS SO GOOD| +08::01::2022 09:32:21|I HATE THE PIRATES| +08::01::2022 09:32:22|2 more years...| +08::01::2022 09:32:23|10 TIMES THE SPICE| +08::01::2022 09:32:24|I DON'T WANT IT TO END!| +08::01::2022 09:32:27|murakami pls crush me| +08::01::2022 09:32:30|which shark anons| +08::01::2022 09:32:30|It was just Mako's dream| +08::01::2022 09:32:30|I LOVE THE PIRATES| +08::01::2022 09:32:32|BENIS TIEM :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:32:32|when does it end?| +08::01::2022 09:32:33|Momo can't | +08::01::2022 09:32:33|they HAVE to be useful next match| +08::01::2022 09:32:38|UGIN GANG| +08::01::2022 09:32:41|SHARK TEAM WILL BE USEFUL | +08::01::2022 09:32:43|LUL get fucked| +08::01::2022 09:32:48|love me rum| +08::01::2022 09:32:51|The Shark team has to do something.| +08::01::2022 09:32:51|HU +08::01::2022 09:32:53|NZU +08::01::2022 09:32:57|>WW1 tank No they won't be useful| +08::01::2022 09:32:58|Isn't fighting without a flag a warcrime?| +08::01::2022 09:33:01|SHARK TEAM WILL GET TAKEN OUT BY AN MG| +08::01::2022 09:33:02|aso +08::01::2022 09:33:05|scorched butt lol| +08::01::2022 09:33:18|If Shark kill anything my autism will flare up| +08::01::2022 09:33:26|Ogin is going to shoot Youko with an actual gun!| +08::01::2022 09:33:29|ugly4photo +08::01::2022 09:33:33|nzu +08::01::2022 09:33:34|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 09:33:34|NO IMAGE| +08::01::2022 09:33:36|SOUND ONLY Momo| +08::01::2022 09:33:38|Anzu SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX| +08::01::2022 09:33:38|no photo...| +08::01::2022 09:33:39|kek no image| +08::01::2022 09:33:39|NO PIC AVAILABLE| +08::01::2022 09:33:39|oooooooooooooooo +08::01::2022 09:33:40|_; +08::01::2022 09:33:40|no image :(| +08::01::2022 09:33:42|OOOOOOOOOOOOOOOOOO +08::01::2022 09:33:44|NO IMAGE FOR MOMO| +08::01::2022 09:33:44|noooo i love them all don't go| +08::01::2022 09:33:45|TL what does anzu mean??| +08::01::2022 09:33:45|>no picture literally me| +08::01::2022 09:33:47|LETS JUST SCROLL OVER MOMO REAL QUICK| +08::01::2022 09:33:47|>suzuki is graduating ;_;| +08::01::2022 09:33:47|OMONIMOUS +08::01::2022 09:33:48|NO IMAGE| +08::01::2022 09:33:48|_; +08::01::2022 09:33:49|ODOKO +08::01::2022 09:33:50|please dont graduate| +08::01::2022 09:33:53|ros.... +08::01::2022 09:33:53|Feels sad| +08::01::2022 09:33:55|not my piyotan| +08::01::2022 09:33:56|>the ENTIRE auto club| +08::01::2022 09:33:57|INALLY +08::01::2022 09:33:58|Alexa play Sillanpään marssilaulu| +08::01::2022 09:33:59|auto club getting gutted is a major blow| +08::01::2022 09:34:00|Pyo-tan is like 50 years old why did she not graduate already| +08::01::2022 09:34:00|don't make me cry...| +08::01::2022 09:34:00|ATYUSHA +08::01::2022 09:34:00|KATYUSHACHADS ITS OUR TIME| +08::01::2022 09:34:00|The end of an era| +08::01::2022 09:34:00|Anzu legs| +08::01::2022 09:34:01|Anzu... my cunny| +08::01::2022 09:34:01|All this tank battling almost makes me want to play World of Tanks. Still not gonna though.| +08::01::2022 09:34:01|nzu... +08::01::2022 09:34:02|_; +08::01::2022 09:34:03|RAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:34:03|Anzu TL....| +08::01::2022 09:34:04|ERIKA TIME LADS| +08::01::2022 09:34:04|EASTERN FRONT| +08::01::2022 09:34:06|RIP LEOPON| +08::01::2022 09:34:06|WANI WANI WANI WANI| +08::01::2022 09:34:07|it's okay guys momo is repeating the year| +08::01::2022 09:34:07|HULL DOWN| +08::01::2022 09:34:09|OH SHIT ITS KURSK| +08::01::2022 09:34:09|stupid midget stupid hubris| +08::01::2022 09:34:09|ERIKA BROS!| +08::01::2022 09:34:09|what the fuck, who will fix tanks and drift ferocisouly| +08::01::2022 09:34:10|>new freshman characters soon| +08::01::2022 09:34:10|MIGDET TIME| +08::01::2022 09:34:12|RIKA!!! +08::01::2022 09:34:12|Auto club ;_;| +08::01::2022 09:34:13|pls don't job this time Maus| +08::01::2022 09:34:14|rikabros +08::01::2022 09:34:14|SIEG HEIL o::| +08::01::2022 09:34:15|Prepare to get Wani'd| +08::01::2022 09:34:15|URSK +08::01::2022 09:34:16|GREMLIM TIME| +08::01::2022 09:34:17|ERIKA HOURS| +08::01::2022 09:34:19|ERIKA CHARACTER DEVELOPMENT ARC| +08::01::2022 09:34:20|AUS +08::01::2022 09:34:21|Why the tanned Leopon girls got to graduate?| +08::01::2022 09:34:21|REVENGE FOR NORWAY| +08::01::2022 09:34:22|ASSUGU +08::01::2022 09:34:23|hand signal time| +08::01::2022 09:34:25|RIKA +08::01::2022 09:34:25|DUMB CUTE WANI LOVE | +08::01::2022 09:34:26|CUTE WANI| +08::01::2022 09:34:28|ZENSHIN ARU NOMI| +08::01::2022 09:34:32|>hand signals| +08::01::2022 09:34:32|OMG ERIKA EPIC NOW??| +08::01::2022 09:34:34|secret signs| +08::01::2022 09:34:35|Dumb fucking hand signs, just talk| +08::01::2022 09:34:35|>they don't have radios| +08::01::2022 09:34:36|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:34:37|RINYATA +08::01::2022 09:34:37|Erika we need to develop your character for the semifinals| +08::01::2022 09:34:38|UTE +08::01::2022 09:34:38|What's the point of the Panzer III?| +08::01::2022 09:34:39|you can't learn russian| +08::01::2022 09:34:40|The only actual Russian| +08::01::2022 09:34:42|tacticool hand signs| +08::01::2022 09:34:43|ute +08::01::2022 09:34:44|mao +08::01::2022 09:34:45|HAT? +08::01::2022 09:34:45|CYKA BLYAT| +08::01::2022 09:34:48|SHES SO CUTE LADS| +08::01::2022 09:34:48|ute +08::01::2022 09:34:48|I LOVE KATYUSHA'S GAY MOMS| +08::01::2022 09:34:49|panzer III is cute| +08::01::2022 09:34:50|UTE +08::01::2022 09:34:53|you don't even know japanese| +08::01::2022 09:34:54|NO RUSSIAN ONLY HAND SIGNALS| +08::01::2022 09:34:54|Why is she doing hand signals when they have radio| +08::01::2022 09:34:56|NIHONGO DE HANASHI NASAI YO!| +08::01::2022 09:34:56|OOOOOOOOOOOOHHHHHHH +08::01::2022 09:34:57|SHadow puppets lel| +08::01::2022 09:34:57|NIHONGO DE HANASHINASAI YO| +08::01::2022 09:34:58|Is Karla a haffu?| +08::01::2022 09:34:58|GED OUD OF HIR SDALGER| +08::01::2022 09:34:58|You will never learn Russian ;_;| +08::01::2022 09:35:00|PACHKI +08::01::2022 09:35:02|dude vodka lmao| +08::01::2022 09:35:06|remember no handsings| +08::01::2022 09:35:07|tfo +08::01::2022 09:35:07|shot trap kitaa| +08::01::2022 09:35:08|MAUS BROS.......| +08::01::2022 09:35:09|LANG +08::01::2022 09:35:10|MAUS JOBBED AGAIN| +08::01::2022 09:35:11|MG +08::01::2022 09:35:11|Klara is a Russian exchange student| +08::01::2022 09:35:12|SHOT TRAP| +08::01::2022 09:35:12|You will never be Slavic| +08::01::2022 09:35:13|os +08::01::2022 09:35:13|AM +08::01::2022 09:35:14|Couldn't they just shoot the tracks out on the Maus| +08::01::2022 09:35:14|>entrenching your tank all the way up to the turret| +08::01::2022 09:35:14|KV-2's FIRST KILL| +08::01::2022 09:35:14| +08::01::2022 09:35:14|ed +08::01::2022 09:35:15|hand signals disrespected into shadow puppets| +08::01::2022 09:35:15|CRITICL HIT| +08::01::2022 09:35:16|V-CHAN!!!! +08::01::2022 09:35:17|HOLY SHIT| +08::01::2022 09:35:19|the mouse...| +08::01::2022 09:35:19|based kv2| +08::01::2022 09:35:20|KV2 KILL| +08::01::2022 09:35:21|date date date| +08::01::2022 09:35:21|maus lol| +08::01::2022 09:35:21|Maus? More like JOB| +08::01::2022 09:35:24|V-CHAN +08::01::2022 09:35:25|DRIVER'S FUCKING DEAD| +08::01::2022 09:35:26|Maus bros no way...| +08::01::2022 09:35:26|GEY +08::01::2022 09:35:27|i want the kv2 grils to beat me up| +08::01::2022 09:35:27|6 crew ded| +08::01::2022 09:35:31|date date date (for Yukari)| +08::01::2022 09:35:31|ERIKA SEETHING| +08::01::2022 09:35:32|UNFUCK YOURSELF WANI FUCK| +08::01::2022 09:35:34|erika mad| +08::01::2022 09:35:39|Charge in like retards!| +08::01::2022 09:35:39|UU +08::01::2022 09:35:40|is that a fucking ferdinand?| +08::01::2022 09:35:41|DUMB WANI| +08::01::2022 09:35:42|KAHVEH TAN WE HAVE THIS IN THE BAG| +08::01::2022 09:35:42| 進あるのみ! +08::01::2022 09:35:42|Mein Gott it's another Stalingrad| +08::01::2022 09:35:43|AAAAAAANNNNNNNIIIIIIIIII +08::01::2022 09:35:43|UNFUCK YOURSELF WANI FUCK| +08::01::2022 09:35:45|OTSUGEKI +08::01::2022 09:35:45|kuroromine must hate maus team| +08::01::2022 09:35:46|WANI AF| +08::01::2022 09:35:48|OH NONONOOOON WANIBRO....THIS IS IT| +08::01::2022 09:35:48|KURSK FLASHBACKS| +08::01::2022 09:35:49|chihatan moment| +08::01::2022 09:35:59|86KB +08::01::2022 09:36:00|utism +08::01::2022 09:36:01|God Koume is so useless| +08::01::2022 09:36:02|ERIKA SEETHING| +08::01::2022 09:36:03|how many operators does the maus need anyways| +08::01::2022 09:36:03|rika... +08::01::2022 09:36:04|RED ARMY BROS| +08::01::2022 09:36:04|FIND YOUR OWN SENSHADOU| +08::01::2022 09:36:04|Its over| +08::01::2022 09:36:07|Kursk +08::01::2022 09:36:08|Erika, jus B urself. - Maho| +08::01::2022 09:36:08|EEEEEEEERIKA +08::01::2022 09:36:08|Pay to Win Black Forest| +08::01::2022 09:36:09|MY MAHO WIFE| +08::01::2022 09:36:10|COPE WANI| +08::01::2022 09:36:10|is it really nishizumi way to charge entrenched high ground enemy| +08::01::2022 09:36:10|ORSCHT +08::01::2022 09:36:10|((((786kb)))))) +08::01::2022 09:36:11|fucking borscht| +08::01::2022 09:36:11|ORSCHT +08::01::2022 09:36:11|EGELIN +08::01::2022 09:36:11|hellshock +08::01::2022 09:36:12|FORMER CHAMPION: CHARGES FORTIFIED POSITION WITH NO PLAN| +08::01::2022 09:36:13|EETH +08::01::2022 09:36:13| 進困難です! +08::01::2022 09:36:14|We've got this Pravbros| +08::01::2022 09:36:14|Erika looking like a soup sandwich| +08::01::2022 09:36:14|EETHING +08::01::2022 09:36:16|what a loser| +08::01::2022 09:36:17|AND THEN ERIKA BECAME A GENIUS| +08::01::2022 09:36:17|eething +08::01::2022 09:36:17|find own senshado = autism| +08::01::2022 09:36:22|ganbare erika| +08::01::2022 09:36:23|Chuuni wani| +08::01::2022 09:36:23|increase autism 400%| +08::01::2022 09:36:24|J O M P| +08::01::2022 09:36:26|Time for Kino tank jump| +08::01::2022 09:36:27|DUMB WANI| +08::01::2022 09:36:28|NISHIZUMI STYLE| +08::01::2022 09:36:29|Miho be like:| +08::01::2022 09:36:29|ENLIGHTENED WANI| +08::01::2022 09:36:29|AHOO +08::01::2022 09:36:35|LUL prepar to get fucked Stalin| +08::01::2022 09:36:35|??????????????????????????? +08::01::2022 09:36:36|SHE DID DA JUMP| +08::01::2022 09:36:37|At that moment she became less of a bitch| +08::01::2022 09:36:37|ASSUMINg DIRECT CONTROL| +08::01::2022 09:36:38|EEERIKA +08::01::2022 09:36:39|WANI REBORN| +08::01::2022 09:36:39|CHUUNI INBOUND| +08::01::2022 09:36:40|ohlenklau +08::01::2022 09:36:40|MY TANK NOW| +08::01::2022 09:36:40|just switch tanks lole| +08::01::2022 09:36:41| だけの戦車道・・・ +08::01::2022 09:36:43|Shiho gonna disown Erika for following her own senshado| +08::01::2022 09:36:43|Time for Blitz| +08::01::2022 09:36:45|ute +08::01::2022 09:36:45|BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG| +08::01::2022 09:36:47|That face| +08::01::2022 09:36:50|IT'S SANIC TIME| +08::01::2022 09:36:53|RAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG +08::01::2022 09:36:53|Hey that's us!| +08::01::2022 09:36:56|Crew art is kino| +08::01::2022 09:36:56|lemme just switch tanks mid battle| +08::01::2022 09:36:57|danmaku she says| +08::01::2022 09:36:58|AROUND THE MAGINOT INT THE ARDENNES| +08::01::2022 09:37:00|LITERALLY US | +08::01::2022 09:37:00|ANMAKU +08::01::2022 09:37:00| 幕! +08::01::2022 09:37:04|Panthers are cute| +08::01::2022 09:37:04|FUCK SLOW AND STEADY, GO FAST EAT ASS| +08::01::2022 09:37:04|_0 +08::01::2022 09:37:05|INY +08::01::2022 09:37:06|ITS TIME ERIKA BROS!!!!| +08::01::2022 09:37:07|GUDERIAN RISES| +08::01::2022 09:37:08|GET DOWN FROM THERE IT'S DANGEROUS | +08::01::2022 09:37:10|SIEG HEIL o::| +08::01::2022 09:37:13|BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG| +08::01::2022 09:37:14|EEERIKA +08::01::2022 09:37:14|dat shimmy| +08::01::2022 09:37:14|BALANCING KATYUSHA| +08::01::2022 09:37:14|ITS TIME NAZBROS| +08::01::2022 09:37:17|:: +08::01::2022 09:37:17|RIKA! +08::01::2022 09:37:17|EEEEEERIKA +08::01::2022 09:37:18|RIKA +08::01::2022 09:37:18|PANZERELITE BORN TO COMPETE| +08::01::2022 09:37:20|GREN HILL ZONE (shittyfluted). MP3| +08::01::2022 09:37:20|AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELEIN| +08::01::2022 09:37:20|EEEEEEEEEEEEEERIKA +08::01::2022 09:37:20|AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELEIN| +08::01::2022 09:37:21|UND DAS HEIẞT| +08::01::2022 09:37:21|UND DAS HEISST| +08::01::2022 09:37:21|UND DAS HEISST| +08::01::2022 09:37:22|EEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:22|RIKA +08::01::2022 09:37:22|HEIL ERIKA o::| +08::01::2022 09:37:22|UND DAS HEISST| +08::01::2022 09:37:23|RIKAAAAAAAAA +08::01::2022 09:37:23|RIKA! +08::01::2022 09:37:24|WHEN ARE THEY GONNA SING ERIKA?!?!?!?!?!!?| +08::01::2022 09:37:24| 進あるのみ! +08::01::2022 09:37:25|EEEEEEEEEEEERIKA +08::01::2022 09:37:25|rika +08::01::2022 09:37:25|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:26|bum bum bum| +08::01::2022 09:37:26|KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG| +08::01::2022 09:37:27| +08::01::2022 09:37:27|EEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:27|EEEEEEEERIKA +08::01::2022 09:37:27|RIKAAAAAAAAAAAAA +08::01::2022 09:37:28|RIIIIIIKA +08::01::2022 09:37:28|UND DAS HEIST| +08::01::2022 09:37:29|KUROMORIMINE UBER ALLES| +08::01::2022 09:37:29|7 +08::01::2022 09:37:30|we love u erika| +08::01::2022 09:37:31|RIKA +08::01::2022 09:37:31|EEEERIKA +08::01::2022 09:37:32|RIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:37:33|GO GO GO ERIKAAAAAA| +08::01::2022 09:37:33|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:34|PRESS S TO STAMP YOUR FEET TO ERIKA| +08::01::2022 09:37:36|WANI WANI WANI| +08::01::2022 09:37:37|EEEEERIIIKAAAAAAAAAAAAAAA +08::01::2022 09:37:37|EEEEEEEERIKA +08::01::2022 09:37:37|RIKAAAAAAAAAA +08::01::2022 09:37:37|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:38|RIKAAAA +08::01::2022 09:37:38|UND DAST HIEST ERRRIIIKKAAAAAAA| +08::01::2022 09:37:39|EEEEEEEEERRRRRRRRRRIIIIIIIIIIIIIIIIIIKKKKKKKKKKKKAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:37:39|watashi no senshado...| +08::01::2022 09:37:40|EEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:40|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:40|ERIKA IS STILL A SHIT| +08::01::2022 09:37:41|>THE FUCK IS THIS? THE FUCK IS THAT?| +08::01::2022 09:37:42|RIKAAAAA +08::01::2022 09:37:43|RIKA +08::01::2022 09:37:43|WHAT IF THE REAL RIECH WAS THE FRIENDS WE MADE ALONG THE WAY?????????????????????????????????????????????| +08::01::2022 09:37:43|Erika is the smartest| +08::01::2022 09:37:43|EEEEEEEEEEEEEERIKA +08::01::2022 09:37:43|UND DAST HEIST| +08::01::2022 09:37:45|EEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:46|Hartmann is best Erika| +08::01::2022 09:37:47|EEEEEEEEEEEERRRRRRRRRRRIKKKKKKKKKKKKKKKAAAAAAAAA +08::01::2022 09:37:47|1488 HEIL ERIKA| +08::01::2022 09:37:53|Why aren't they just rushing the flag tank too| +08::01::2022 09:37:55|kill that commie bastard| +08::01::2022 09:37:57|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +08::01::2022 09:37:58|UND DAS HEISST| +08::01::2022 09:38:02|Erika ist meine Frau| +08::01::2022 09:38:03|D +08::01::2022 09:38:03|RIKA +08::01::2022 09:38:04|EEEEEEEEEERIKA +08::01::2022 09:38:04|EEEEEEEEEEEERIIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:38:06|EEEEEEEEEERIKA +08::01::2022 09:38:07|D +08::01::2022 09:38:08|Don't have to use the Nishizumi way if you ain't Maho| +08::01::2022 09:38:09|Erika gehört ins Gas| +08::01::2022 09:38:10|Remove Communist| +08::01::2022 09:38:12|卐 UND DAS HEIßT EEEERIKAAAAA 卐| +08::01::2022 09:38:16|Man Katyusha must be be reall dumb| +08::01::2022 09:38:17|TE +08::01::2022 09:38:18|EEEEEEERIKA +08::01::2022 09:38:18|The music timing| +08::01::2022 09:38:20|TE +08::01::2022 09:38:21|fat klara| +08::01::2022 09:38:21|EEEEEEEEEEEEEEERIKA +08::01::2022 09:38:22|TE +08::01::2022 09:38:25|Press E to remove Katyusha| +08::01::2022 09:38:26|INO +08::01::2022 09:38:26|GET FUCKED, KATYUSHA FAGS| +08::01::2022 09:38:27|toopid +08::01::2022 09:38:29| +08::01::2022 09:38:32|lmao good job katyusha| +08::01::2022 09:38:32|Klara too thicc| +08::01::2022 09:38:32|NOT E| +08::01::2022 09:38:33|I FUCKING LOVE ERIKA| +08::01::2022 09:38:34|EEEEEEEEEEEEEEEEEEE +08::01::2022 09:38:34|EEEEEEEEEEEEEEEEE +08::01::2022 09:38:35|>take two tanks to stop four || sasuga midget| +08::01::2022 09:38:35|NISHIZUMI GRADE AUTISM| +08::01::2022 09:38:35|ukenai +08::01::2022 09:38:36|ERIKA AUTISM| +08::01::2022 09:38:38|YKA +08::01::2022 09:38:38|UTISM +08::01::2022 09:38:40|UTISM +08::01::2022 09:38:41|TEEEEEE +08::01::2022 09:38:41|midgets deserve worse| +08::01::2022 09:38:41|LOL YOU TRAPPED DUMB LOLI| +08::01::2022 09:38:41|EEEEEEEEEEEE +08::01::2022 09:38:42|EEEEEEEEEEEEEE +08::01::2022 09:38:42|Cute Erika| +08::01::2022 09:38:43|EEEEEEEEEEEEEEEEEEE +08::01::2022 09:38:43|Katyusha and her dumb fucking plan to entrench | +08::01::2022 09:38:43|UTISM +08::01::2022 09:38:43|Get WRECKED COMMIES| +08::01::2022 09:38:44|TEEE +08::01::2022 09:38:44|CUTE ERIKA| +08::01::2022 09:38:45|[AUTISTIC SCREECHING]| +08::01::2022 09:38:45|EEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 09:38:46|AUUUTISSSSSSSSMMMMMMMMMMM WAAAAAAAAAAAAAAAA| +08::01::2022 09:38:47|EEEEEEEEEEEEEEEEEEEE +08::01::2022 09:38:48|THIS RESULT IS AHISTORICAL| +08::01::2022 09:38:49|SIEG HEIL| +08::01::2022 09:38:49|IRE +08::01::2022 09:38:49|GAAAAAAA +08::01::2022 09:38:50|ERIKA BROS WE FUCKING MADE IT| +08::01::2022 09:38:50|UTE +08::01::2022 09:38:50|UTE +08::01::2022 09:38:51|CYKA BLYAT| +08::01::2022 09:38:51|WEIRD HAND SIGNS| +08::01::2022 09:38:52|ek +08::01::2022 09:38:52|CUTE WANI| +08::01::2022 09:38:52|UTEYUSHA +08::01::2022 09:38:52|Cute | +08::01::2022 09:38:52|ute! +08::01::2022 09:38:52|CUTE AUTISMO!| +08::01::2022 09:38:52|umbtyusha +08::01::2022 09:38:53|RIKA +08::01::2022 09:38:53|UTE +08::01::2022 09:38:53|UTE +08::01::2022 09:38:54|ATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:38:54|NDSIEG +08::01::2022 09:38:54|stupid midget| +08::01::2022 09:38:54|UTE +08::01::2022 09:38:54|ugoooooo +08::01::2022 09:38:54|UTE +08::01::2022 09:38:55|ATA +08::01::2022 09:38:55|>LEFT THE HIGH GROUND FOR THIS| +08::01::2022 09:38:55|WANI WON!| +08::01::2022 09:38:56|COMMIE MIDGET BTFO| +08::01::2022 09:38:56|UTEEEE +08::01::2022 09:38:56|DDDD +08::01::2022 09:38:57|IEG +08::01::2022 09:38:58|cute wani| +08::01::2022 09:38:58|consolation sex with Katyusha| +08::01::2022 09:38:58|my wani erika too cute| +08::01::2022 09:38:58|KATYSUHA NOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 09:38:59|cute wani| +08::01::2022 09:39:00|aai +08::01::2022 09:39:00|cute midget face| +08::01::2022 09:39:01|EIL +08::01::2022 09:39:01|I'm glad lenin can't see us now.| +08::01::2022 09:39:01|OOOOOOOOOOO +08::01::2022 09:39:01|UTE +08::01::2022 09:39:01|Erika poses| +08::01::2022 09:39:02|CUTE CUTE CUTE| +08::01::2022 09:39:02|ATTA +08::01::2022 09:39:02|WANI IS NOT A LOSER!| +08::01::2022 09:39:03|uteyusha +08::01::2022 09:39:04|happi wani| +08::01::2022 09:39:04|Have you already forgetting what a cunt Erika was in S1?| +08::01::2022 09:39:04|WIEDER EIN SIEG FUR KMM| +08::01::2022 09:39:06|UCE +08::01::2022 09:39:06|ASTA +08::01::2022 09:39:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:07|Russian midget gets rekt by Kraut Autist| +08::01::2022 09:39:07|DUN DUNNNNN+| +08::01::2022 09:39:08|IS AUTISM AN STD? I THINK ERIKA JUST INHERITED FROM MAHO| +08::01::2022 09:39:08|NO BULLI ANZIO| +08::01::2022 09:39:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:09|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 09:39:09|>I never thought they would just go around!| +08::01::2022 09:39:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:10|UOCO +08::01::2022 09:39:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:10|DUCE | +08::01::2022 09:39:10|duce pls| +08::01::2022 09:39:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:12|DUCE DUCE DUCE DUCE!| +08::01::2022 09:39:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:14|INVEST IN CHOVY NOW| +08::01::2022 09:39:14|UCE +08::01::2022 09:39:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:16|FUCK COMMUNISM| +08::01::2022 09:39:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:16|DUC DUC DUC| +08::01::2022 09:39:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:17|DUCE DUCE DUCE| +08::01::2022 09:39:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:18|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:39:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 09:39:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:21|ANA-CHAN +08::01::2022 09:39:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:22|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 09:39:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:23|DUCE DUCE DUCE| +08::01::2022 09:39:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:23|GANBARE DUCE| +08::01::2022 09:39:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:26|duce DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUC E| +08::01::2022 09:39:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:26|LETS GO DUCE BROS| +08::01::2022 09:39:27|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +08::01::2022 09:39:27|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:39:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:27|ANZIO GANBAREEEEEEE| +08::01::2022 09:39:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:29|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:39:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:30|VCEDVCEDVCEDVCEDVCEDVCE +08::01::2022 09:39:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:30|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +08::01::2022 09:39:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:31|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:39:32|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 09:39:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:39:34|HINA CHAN| +08::01::2022 09:39:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:35|UCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 09:39:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:35|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 09:39:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:36|BEAT THE SLAGS| +08::01::2022 09:39:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:38|UUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +08::01::2022 09:39:38|DUCE DUCE DUCE| +08::01::2022 09:39:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:39|DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:40|at least get the tankettes with at rifles| +08::01::2022 09:39:40| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:39:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:40|URN +08::01::2022 09:39:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:40|TFO +08::01::2022 09:39:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:42|DVCE DVCE DVCE DVCE| +08::01::2022 09:39:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:43|ru +08::01::2022 09:39:43|BONGS BTFO| +08::01::2022 09:39:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:43|ASED +08::01::2022 09:39:44|UNLIMITED DUCE WORK| +08::01::2022 09:39:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:45|>BRITISH FOOD| +08::01::2022 09:39:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:45|ENGLISH BTFO| +08::01::2022 09:39:45|YOUR FOOD SUCKS BRIT| +08::01::2022 09:39:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:46|BONGS BTFO| +08::01::2022 09:39:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:46|DVCE IS CUTE| +08::01::2022 09:39:46|ASED +08::01::2022 09:39:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:47|they just lost| +08::01::2022 09:39:47|STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!| +08::01::2022 09:39:47|DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:39:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:48|>british cuisine| +08::01::2022 09:39:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:48|vce +08::01::2022 09:39:48|BASED DUCE| +08::01::2022 09:39:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:50|TALK THAT SHIT DUCE| +08::01::2022 09:39:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:50|BRITBONG GTFO| +08::01::2022 09:39:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:51|DUCE AGAINST BAD FOOD| +08::01::2022 09:39:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:51|>CV33 || >flagged after one hit || rigged| +08::01::2022 09:39:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:54|SLAGS BTFO| +08::01::2022 09:39:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:54|>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +08::01::2022 09:39:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:54|UCE!!!! +08::01::2022 09:39:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:55|STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!| +08::01::2022 09:39:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:56|WORLD'S WORST CUISINE| +08::01::2022 09:39:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE| +08::01::2022 09:39:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:39:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:58|DUCE DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE| +08::01::2022 09:39:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:39:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:59|OPERATION FARFALLE| +08::01::2022 09:39:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:39:59|>BRITISH FOOD | +08::01::2022 09:39:59|Can't outrun the Rosehip tough| +08::01::2022 09:39:59|>british "food"| +08::01::2022 09:40:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:00|UCE +08::01::2022 09:40:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:01|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:40:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:02|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:03|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL +08::01::2022 09:40:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:05|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:40:05|>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +08::01::2022 09:40:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:06|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:07|DUCE DUCE DUCE| +08::01::2022 09:40:08|DUCE DUCE DUCE DUCE| +08::01::2022 09:40:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:10|DUCE DUCE DUCE DUCE| +08::01::2022 09:40:10|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:40:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:13|>The food of this country is not very good| +08::01::2022 09:40:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:14|inferior cuisine!!!| +08::01::2022 09:40:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:16|>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +08::01::2022 09:40:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:40:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:18|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:19|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:19|Come on England| +08::01::2022 09:40:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:20|>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +08::01::2022 09:40:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:20|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:40:21|DUCE i guess| +08::01::2022 09:40:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:21|PIZZA PASTA PUT IT IN A BOX| +08::01::2022 09:40:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:23|BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""| +08::01::2022 09:40:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:25|BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""| +08::01::2022 09:40:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:26|DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:26|BONG BTFO| +08::01::2022 09:40:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +08::01::2022 09:40:28|.................... +08::01::2022 09:40:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:29|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:40:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:40:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:31|CAM ON INGERLAND SCORE SAM FACKING PANZERS| +08::01::2022 09:40:31|SMART DUCE| +08::01::2022 09:40:31|SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI| +08::01::2022 09:40:31|cute baka| +08::01::2022 09:40:32|???????????????????????????????????????????????????????????????????????????????? +08::01::2022 09:40:32|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:33|ETARD +08::01::2022 09:40:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:34|AKAS +08::01::2022 09:40:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:35|AKARONI +08::01::2022 09:40:35|UCE... +08::01::2022 09:40:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:35|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:40:36|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:36|LOW IQ| +08::01::2022 09:40:36|AKA +08::01::2022 09:40:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:37|OUCO +08::01::2022 09:40:37|AHHHHHHHHHHHHHH DUCE IS TOO CUTE| +08::01::2022 09:40:37|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:38|UOCO +08::01::2022 09:40:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:40:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:40|UOCO +08::01::2022 09:40:40|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:40|uoco +08::01::2022 09:40:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:41|DUCE PLEASE| +08::01::2022 09:40:41|OUCO +08::01::2022 09:40:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:42|NTER +08::01::2022 09:40:43|UOCO +08::01::2022 09:40:43|VCE +08::01::2022 09:40:44|UOCO +08::01::2022 09:40:44|PEED +08::01::2022 09:40:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:44|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:45|cute bakaroni| +08::01::2022 09:40:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:46|DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:47|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:40:47|OSEHIP +08::01::2022 09:40:47|LOOK AT THE CUTE LITTLE TANKLETS| +08::01::2022 09:40:47|ROSEHIP TIME| +08::01::2022 09:40:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:48|DUMB DVCE| +08::01::2022 09:40:48|DVCE DVCE DVCE DVE DVCE| +08::01::2022 09:40:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:48|PROTECTDVCE! DVCE! | +08::01::2022 09:40:49|DVCE WO MAMORE| +08::01::2022 09:40:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:50|PEED +08::01::2022 09:40:50|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:40:50|QUEEN OF SNEED| +08::01::2022 09:40:50|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:50|MY WIFE, ROSEHIP| +08::01::2022 09:40:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:51|QUEEN OF SPEED| +08::01::2022 09:40:51|THE QUEEN OF SNEED HAS ARRIVED| +08::01::2022 09:40:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:52|Crazy Rosehip bouncing up and down| +08::01::2022 09:40:52|VCE +08::01::2022 09:40:52|PROTECT DUCE| +08::01::2022 09:40:53|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:53|OSEHIP +08::01::2022 09:40:53|ROSEHIP THE SPEED QUEEN| +08::01::2022 09:40:53|GAS GAS GAS| +08::01::2022 09:40:53|THAT SLOWMO| +08::01::2022 09:40:54|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:40:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:40:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:40:56|I can't beleive Duce is fucking dead!| +08::01::2022 09:40:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:40:56|PROTECT DUCE| +08::01::2022 09:40:56|PROTECT DUCE| +08::01::2022 09:40:56|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +08::01::2022 09:40:57|AKAHIP +08::01::2022 09:40:57|ROSEHIP | +08::01::2022 09:41:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:00|top gloriana| +08::01::2022 09:41:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:01|UEEEEEEEEEEEEEEEEEEEENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +08::01::2022 09:41:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:03|NEED FOR SNEED| +08::01::2022 09:41:03|>bringing MG tankettes to a tank fight| +08::01::2022 09:41:03|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:41:04|PIZZA TIME| +08::01::2022 09:41:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:04|protect dvce| +08::01::2022 09:41:04|DUCE BROS WE GOT THIS| +08::01::2022 09:41:04|ITALIAN MARCHES ARE SO KINO| +08::01::2022 09:41:05|BRITANIA RULES THE WAVES| +08::01::2022 09:41:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:06|THE INVINCIBLE CARRO VEROCE| +08::01::2022 09:41:06|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:07| +08::01::2022 09:41:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:41:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:07|UNKED +08::01::2022 09:41:07|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +08::01::2022 09:41:09|ITALIAN AKKO IS VERY CUTE| +08::01::2022 09:41:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:11|DUCE BROS WE'RE WINNING| +08::01::2022 09:41:11|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:41:12|ROSEHIP NOOOOOOOO| +08::01::2022 09:41:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:13|EAD +08::01::2022 09:41:13|Classic strat| +08::01::2022 09:41:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:15|BASD AS FUCK| +08::01::2022 09:41:15|GET REKT BONGS| +08::01::2022 09:41:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:16|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:41:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:41:17| +08::01::2022 09:41:19|WE HAVE THIS ANZIO| +08::01::2022 09:41:19|ROWNED +08::01::2022 09:41:19|RAT TAT TAT| +08::01::2022 09:41:19|DUCEBROS WE GOT THIS| +08::01::2022 09:41:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:41:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:23|WE CAN DO IT| +08::01::2022 09:41:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:24|bongs do not rule the waves| +08::01::2022 09:41:24|ESCAPE IS WIN| +08::01::2022 09:41:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:25|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:41:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:26|DVCE BROS LETS FUCKING GOOO| +08::01::2022 09:41:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:28|ESCAPE IS WIN| +08::01::2022 09:41:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:30|WHAT ARE THOSE MG EVEN FOR| +08::01::2022 09:41:30|ESCAPE IS WIN DESUWA| +08::01::2022 09:41:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:31|SCAPE +08::01::2022 09:41:31|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:41:32|ESCAPE IS WIN| +08::01::2022 09:41:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:34|ESCAPE IS WIN DESUWA| +08::01::2022 09:41:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:34|escape is win desu wa| +08::01::2022 09:41:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:34|classic anglo behavior| +08::01::2022 09:41:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:37|They got 1| +08::01::2022 09:41:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:37|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:41:37|PROTECT DUCE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 09:41:37|WHOLE TEAM CHASING ONE TANK| +08::01::2022 09:41:37|Still can't outrun the Rosehip| +08::01::2022 09:41:37|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +08::01::2022 09:41:38|OH NOOOOOOOOOOOOOO| +08::01::2022 09:41:38|ESCAPE TO VICTORY| +08::01::2022 09:41:40|DUCE NOOOOOOOOOOOOOOOOO| +08::01::2022 09:41:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:40|OUT FUCKING SKILLED| +08::01::2022 09:41:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:41|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:41:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:43|dio mio| +08::01::2022 09:41:43|UOCO +08::01::2022 09:41:44|PROTECT THE DUVCE| +08::01::2022 09:41:44|ucebros... +08::01::2022 09:41:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:45|When in Doubt, Testudo it out.| +08::01::2022 09:41:45|OOOOOOO +08::01::2022 09:41:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:46|OUCO +08::01::2022 09:41:47|_;7 +08::01::2022 09:41:47| +08::01::2022 09:41:47|RIP DVCE| +08::01::2022 09:41:48|RUSHED +08::01::2022 09:41:48|Too cocky| +08::01::2022 09:41:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:41:49|FUCKING SLAG| +08::01::2022 09:41:49|ed +08::01::2022 09:41:49|IGGED +08::01::2022 09:41:49|They forgot the tank behind her| +08::01::2022 09:41:50|OOOOOOOOOOOOOOOO +08::01::2022 09:41:51|OOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:41:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +08::01::2022 09:41:51|DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +08::01::2022 09:41:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:51|OUGEKI +08::01::2022 09:41:51|DVCE BROS| +08::01::2022 09:41:52|MAMA MIA| +08::01::2022 09:41:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:41:52|UCE... +08::01::2022 09:41:53|not like this...mamma mia| +08::01::2022 09:41:53|skill issue| +08::01::2022 09:41:53|RI'ISHED +08::01::2022 09:41:54|ed +08::01::2022 09:41:54|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:41:54|PROTECT DUCE| +08::01::2022 09:41:55|__________________________________; +08::01::2022 09:41:55|ip +08::01::2022 09:41:55|DUCE NOOOOOOOOOO| +08::01::2022 09:41:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:56|pastafags... not again...| +08::01::2022 09:41:56|IP +08::01::2022 09:41:56|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:41:56|can't believe she fucking died| +08::01::2022 09:41:56|FUCK ST. GLORIANA| +08::01::2022 09:41:57|VCEBROS!? +08::01::2022 09:41:57|IP +08::01::2022 09:41:57|PILE ON ME| +08::01::2022 09:41:58|NOOOOOOOOOOOOOOOOOOOOO IT WAS ANZIOS YEAR| +08::01::2022 09:41:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE?| +08::01::2022 09:41:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:41:59|RIGGED MATCH RIGGED MATCH RIGGED MATCH RIGGED MATCH| +08::01::2022 09:41:59|DVCE ;_;| +08::01::2022 09:41:59|DUCEBROS WHAT HAPPENED| +08::01::2022 09:42:00|_;7 +08::01::2022 09:42:00|PERFIDIOUS ALBION| +08::01::2022 09:42:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:42:01|_; +08::01::2022 09:42:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:42:01|duce is a loser lol| +08::01::2022 09:42:02|dvce... no| +08::01::2022 09:42:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:42:03|CUTE DUCE| +08::01::2022 09:42:03| +08::01::2022 09:42:04|WE WERE SUPPOSED TO WIN DVCE BROS| +08::01::2022 09:42:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:42:04|ooooooooooooooooooooooooooooooooooooooo +08::01::2022 09:42:05|GOTT STRAFE ENGLAND| +08::01::2022 09:42:06|I HATE ST. GLORIANA SO GODDAMN MUCH| +08::01::2022 09:42:06|ute +08::01::2022 09:42:06|VCEBROS..... +08::01::2022 09:42:07|AIYA +08::01::2022 09:42:07|TEAM PASTA BLASTS OFF AGAIN| +08::01::2022 09:42:08|ONLY KILLED 1 TANK| +08::01::2022 09:42:08|>duce graduates this year| +08::01::2022 09:42:09|RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED | +08::01::2022 09:42:09|UCEBROS +08::01::2022 09:42:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:42:10|Duce too banged up| +08::01::2022 09:42:10|SUOMI SUOMI SUOMI| +08::01::2022 09:42:11|DUCE BROS HOW COULD THIS HAPPEN| +08::01::2022 09:42:14|USA USA USA| +08::01::2022 09:42:15|abronis +08::01::2022 09:42:15|TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +08::01::2022 09:42:16|OH NONONONONNOONONONO| +08::01::2022 09:42:16|DUCE BROS WTFFFFFFFFFFFFFFFFF| +08::01::2022 09:42:16|ALEXA PLAY Jääkärimarssi\| +08::01::2022 09:42:16|IT'S JOB TIME, SAUNDER BROS| +08::01::2022 09:42:16|FIREBOMB ST. GLORIANA| +08::01::2022 09:42:17|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:17|O SHID :DDDDDDDDDDDDD| +08::01::2022 09:42:18|USA USA USA| +08::01::2022 09:42:18|ANZIOBROS... HOW COULD THIS BE| +08::01::2022 09:42:19|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:19|PERKELE! :dddddddddddddd| +08::01::2022 09:42:19|USA USA USA| +08::01::2022 09:42:20|DULDA :DDDDDDDDDDDDDDDD| +08::01::2022 09:42:20|Jobsters +08::01::2022 09:42:20|MIKA STOLE MY HEART| +08::01::2022 09:42:21|KAY KAY KAY KAY KAY KAY| +08::01::2022 09:42:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:22|usa bros...| +08::01::2022 09:42:22|USA USA USA| +08::01::2022 09:42:24|Saunders the eternal jobbers| +08::01::2022 09:42:24|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:42:24|AY +08::01::2022 09:42:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:26|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:26|THE FINNS HAVE ONE ADVANTAGE| +08::01::2022 09:42:27|OH NO DUCE BROS| +08::01::2022 09:42:28|enis +08::01::2022 09:42:28|I guess Caesar will comfort Hina-chan tonight| +08::01::2022 09:42:28|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:28|She lost because we didn't spam DUCE enough| +08::01::2022 09:42:28|Saki knows| +08::01::2022 09:42:28|oburgers +08::01::2022 09:42:29|SUOMI SUOMI SUOMI| +08::01::2022 09:42:29|USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +08::01::2022 09:42:29|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:42:29|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:30|wow i wonder if they have a sniper somewhere idk guys| +08::01::2022 09:42:30|DDDDDDDDDDDDDD +08::01::2022 09:42:30|BENIS :DDDDDD| +08::01::2022 09:42:30|DULDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:42:31|THEY CAN AIM| +08::01::2022 09:42:31|USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE | +08::01::2022 09:42:33|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:33|USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +08::01::2022 09:42:34|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:42:34|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:35|USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +08::01::2022 09:42:35|based saki| +08::01::2022 09:42:35|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:36|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:37|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:37|SAKI CAN SEE THE FUTURE| +08::01::2022 09:42:37|>CERTIFIED JOBBERS| +08::01::2022 09:42:38|Cute bunnies eating WcDonalds| +08::01::2022 09:42:39|FUG :DDDDDD| +08::01::2022 09:42:40|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:40|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:42:40|AT +08::01::2022 09:42:41|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:41|USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +08::01::2022 09:42:41|NABAGA +08::01::2022 09:42:41|AMBAGA +08::01::2022 09:42:42|USA USA USA| +08::01::2022 09:42:42|AMBAGA +08::01::2022 09:42:42|HIS TRUTH IS MARCHING ON| +08::01::2022 09:42:43|ARISA IS CUTE!| +08::01::2022 09:42:43|burgers +08::01::2022 09:42:44|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:45|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:45|SILLY SAKI| +08::01::2022 09:42:47|urgers +08::01::2022 09:42:47|USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 09:42:48|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:48|USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +08::01::2022 09:42:49|saunaklonkku with Mika| +08::01::2022 09:42:49|ALISA ALISA ALISA ALISA| +08::01::2022 09:42:50|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:50|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:50|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:50|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:51|MERICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:42:51|JATKOSOTA BEST WAR| +08::01::2022 09:42:51|Arisa. Poor Arisa. Too cocky for Takashi| +08::01::2022 09:42:52|GLORY GLORY HALLUJEAH| +08::01::2022 09:42:52|Fucking bunnies being huge Westaboos| +08::01::2022 09:42:53|GLORY GLORY HALLELUJAH| +08::01::2022 09:42:53|HIS TRUTH IS MARCHING ON| +08::01::2022 09:42:55|BENIS >>> JOBBERS| +08::01::2022 09:42:55|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:55|USA USA USA| +08::01::2022 09:42:56|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:56|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:56|OTSUGEKI?? +08::01::2022 09:42:56|OTSUGEK +08::01::2022 09:42:56|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:57|OTSUGEKI! +08::01::2022 09:42:57|YOU AIN'T GONNA JUMP NO MORE| +08::01::2022 09:42:57|juomalauta voi vittu perkele saatanaaaaaaaaaaaaaaaaa| +08::01::2022 09:42:58|USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +08::01::2022 09:42:58|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:58|chi ha tan?| +08::01::2022 09:42:59|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:42:59|THIS IS OUR TIME BURGERBROS| +08::01::2022 09:42:59|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:42:59|OTSUEGEKI +08::01::2022 09:42:59|OTSUGEKI +08::01::2022 09:42:59|haista vittu :DDDD| +08::01::2022 09:43:00|BACK TO BACK WORLD WAR CHAMPS| +08::01::2022 09:43:00|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:02|GLORY GLORY HALLEUJA | +08::01::2022 09:43:02|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:03|TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +08::01::2022 09:43:03|DDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:04|SEX WITH KAY| +08::01::2022 09:43:04|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:05|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:06|o fug :DDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:06|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:08|USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +08::01::2022 09:43:08|BUT THE UNION MAKES US STRONG| +08::01::2022 09:43:08|SPAM IN RED WHITE BLUE| +08::01::2022 09:43:08|NJET MOLOTOFF| +08::01::2022 09:43:10|ALL IN ON BINLAND :DDDDDDDDDDDDDDDD| +08::01::2022 09:43:10|GORY GORY WHAT A HELL OF A WAY TO DIE| +08::01::2022 09:43:10|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:12|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:14|USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +08::01::2022 09:43:14|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:15|USA USA USA| +08::01::2022 09:43:15|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:15|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:16|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:18|USA USA USA USA USA USA USA USA| +08::01::2022 09:43:18|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:18|FROM SEA TO SHINING SEA| +08::01::2022 09:43:19|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:20|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:20|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:21|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:21|fugg my ass :DDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:23|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:23|stealth :DDDD| +08::01::2022 09:43:23|USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 09:43:24|USA USA USA USA USA UAS| +08::01::2022 09:43:24|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:25|Arisa need Takashi for support| +08::01::2022 09:43:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:26|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:29|SUOMI SUOMI SUOMI| +08::01::2022 09:43:30|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:30|EWD +08::01::2022 09:43:30|OH NO| +08::01::2022 09:43:30|ANI +08::01::2022 09:43:30|GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDD| +08::01::2022 09:43:30|FUG :DDDDDD| +08::01::2022 09:43:30|THE ABSOLUTE MADMEN| +08::01::2022 09:43:31|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:31|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:33|DDDDDDDDDDDD +08::01::2022 09:43:33|Uh oh| +08::01::2022 09:43:35|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:35|GAS GAS GAS| +08::01::2022 09:43:35|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:35|god i wish naomi would shoot me| +08::01::2022 09:43:35|ek +08::01::2022 09:43:35|CHRISBIE :DDDDDDDDDDD| +08::01::2022 09:43:36|ERRRRRRKELE +08::01::2022 09:43:36|CHRISDIE SUSBENSION :DDDDDDDDD| +08::01::2022 09:43:37|SUOMI SUOMI SUOMI| +08::01::2022 09:43:37|HRISTIEEEEEEEEEEEEEEEEEEEEE +08::01::2022 09:43:39|DDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:39|F-R-E-E-D-O-M- +08::01::2022 09:43:39|hy +08::01::2022 09:43:39|DDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:39|christie suspensiond| +08::01::2022 09:43:40|IT'S 2FAST4U TIME| +08::01::2022 09:43:40|ERKLED +08::01::2022 09:43:41|DDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:43|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:44|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:44|PEEDSTER +08::01::2022 09:43:45|fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:45|OLKA +08::01::2022 09:43:45|SÄKKIJÄRVEN POLKKA| +08::01::2022 09:43:46|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:46|CHRISTIE :DDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:46|EBIN :DDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:47|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:47|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD FUGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG| +08::01::2022 09:43:47|GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:47|CHIDDIE SUSBENSION| +08::01::2022 09:43:48|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:48|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:48|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:48|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:48|GHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:48|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:48|FUG :DDDDDDDDDDDD| +08::01::2022 09:43:48|DDDDDDDDDDDDDDDDD +08::01::2022 09:43:48|PERKELE SATANA| +08::01::2022 09:43:49|DDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:49|:DDDDDDDDDDDDDD FUGG| +08::01::2022 09:43:49|CRISTY SUSBENTION :DDDDD| +08::01::2022 09:43:49|DDDDDDDDDDDDDD +08::01::2022 09:43:49|DDDDDDDDDD +08::01::2022 09:43:49|UG +08::01::2022 09:43:49|DDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:50|FUGGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDd| +08::01::2022 09:43:50|HYVA SUOMI| +08::01::2022 09:43:51|No tank treads? Oh no.| +08::01::2022 09:43:52|DDDDD +08::01::2022 09:43:52|DDDDDDDDDDDDDDDD +08::01::2022 09:43:52|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:53|UG +08::01::2022 09:43:53|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:54|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:54|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:54|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:43:54|DDDDDDDDDDDD +08::01::2022 09:43:55|FUG :DDDDDDDDDDDDDDDD| +08::01::2022 09:43:55|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:56|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:56|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:43:56|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:57|KINO :DDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:57|BENIS :DDDDDDDDDDDDDDDDDDDDDDDD FUGGGGG| +08::01::2022 09:43:58|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:43:59|HYVÄ :-DDDDDDDDDDDDDDDD| +08::01::2022 09:43:59|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:00|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:00|ttps:::::www.youtube.com::watch?v=5kr4nzEAZ8k +08::01::2022 09:44:00|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:00|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:01|RÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +08::01::2022 09:44:01|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:01|GET FUCKED BURGERS| +08::01::2022 09:44:01|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:01|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:02|GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:02|ENISBENIS +08::01::2022 09:44:02|CHRISDIE SUSBENSION| +08::01::2022 09:44:02|XDDDDd +08::01::2022 09:44:02|HORSE SHIT| +08::01::2022 09:44:02|DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:03|enis +08::01::2022 09:44:03|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:03|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:04|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:05|RÖÖÖÖÖÖÖÖÖH +08::01::2022 09:44:05|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:06|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:06|:DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDD| +08::01::2022 09:44:06|GID FUGGED :DDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:06|UGGGGGGGGGGGGGGGGGGGGGGGG +08::01::2022 09:44:07|FUGGGGGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:07|INVEST IN USA NOW| +08::01::2022 09:44:08|UG +08::01::2022 09:44:09|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:09|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:10|DDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:10|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:11|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:11|DDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:11|SATANA PERKELE :DDDDDDDDDDDDDD| +08::01::2022 09:44:12|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:12|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:12|HUMPPAA TAIKKA KUOLE, TAIKKA HUMPPAA, TAIKKA KUOLE| +08::01::2022 09:44:13|BENIS :DDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:13|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:13|HOW ARE YOU MISSING ALISA| +08::01::2022 09:44:13|:DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD | +08::01::2022 09:44:14|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:14|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:15|EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDd| +08::01::2022 09:44:17|o fug polka :DDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:17|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:18|SHE'S RIGHT THERE| +08::01::2022 09:44:18|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:18|( +08::01::2022 09:44:19|Why do they keep making Alisas dumb ass the flag tank?| +08::01::2022 09:44:20|GID REGDT :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:20|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:21|FUCKING BURGERS| +08::01::2022 09:44:21|DO U LEIK BENIS?????? :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:21|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:21| +08::01::2022 09:44:21|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:22|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:22|I BET MY LEFT NUTSACKS ON USA WINNING| +08::01::2022 09:44:23|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:23|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:23|ased +08::01::2022 09:44:23|USA USA USA USAA USA USA USA USA USA USA| +08::01::2022 09:44:24|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:24|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:25|USA SUSA USA USA| +08::01::2022 09:44:25|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:25| +08::01::2022 09:44:25|NAOMI SAVES THE DAY| +08::01::2022 09:44:26|FUG | +08::01::2022 09:44:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:27|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:27|NAOMI BROS| +08::01::2022 09:44:28|USA USA USA| +08::01::2022 09:44:28|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:29|U S A| +08::01::2022 09:44:29|SAUNDERS WE WINNING| +08::01::2022 09:44:31|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:31|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:32|CHRISDY SUSBENSION| +08::01::2022 09:44:32|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:32|USA USA USA USA USA USA USA USA USA USA USA USA| +08::01::2022 09:44:32|:DDDDDDDDDDDDDDDDDDDDDDDD | +08::01::2022 09:44:32|USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:33|NAOMI PROTECTING HIS GIRLFRIEND| +08::01::2022 09:44:34|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:35|ARE??? +08::01::2022 09:44:35|OH NONONONONONONONONONONO| +08::01::2022 09:44:35|The Bins have arribed :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:35|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:35|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:35|USA USA USA USA USA USA| +08::01::2022 09:44:35|YOU'RE IN THE SNIPER'S SIGHT | +08::01::2022 09:44:36|HURRY UP!| +08::01::2022 09:44:36|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:38|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:38|o fug :DDDDDDDD| +08::01::2022 09:44:39|rickd +08::01::2022 09:44:39|ITA +08::01::2022 09:44:39|fuck u fin| +08::01::2022 09:44:40|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:40|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:40|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:41|FINNISH FARMER| +08::01::2022 09:44:42|-MASAKA +08::01::2022 09:44:42|finnish sniber :DDDDD| +08::01::2022 09:44:42|V USA V| +08::01::2022 09:44:43|OUKO +08::01::2022 09:44:44|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:45|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA US AUSA | +08::01::2022 09:44:45|white witch :DDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:46|WE CAN DO IT SAUNDERS!| +08::01::2022 09:44:46|WHITE DEATH| +08::01::2022 09:44:46|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:46|enis +08::01::2022 09:44:46|USA BTFO| +08::01::2022 09:44:47|SNIBER :DDDDDD| +08::01::2022 09:44:47|DDDDDDDDDDDDDDDD +08::01::2022 09:44:48|USA USA USA USA| +08::01::2022 09:44:48|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:48|JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB | +08::01::2022 09:44:49|HYVA SUOMI HYVA SUOMI HYVA SUOMI| +08::01::2022 09:44:49|ADMIN THEYRE HACKING| +08::01::2022 09:44:50|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:44:50|SNAIBA :DDDDDDDDD| +08::01::2022 09:44:50|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:50|BURGERS ETERNALLY BTFO| +08::01::2022 09:44:51|weak ass fin hiding in the mountains| +08::01::2022 09:44:51|IMO +08::01::2022 09:44:51|DDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:51|DULDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:51|EKT +08::01::2022 09:44:51|_;7 +08::01::2022 09:44:51|Jougo :DDDDDDDDDD| +08::01::2022 09:44:51|TFO +08::01::2022 09:44:51|THE WHITE DEATH| +08::01::2022 09:44:52|SUOMI PERKELE| +08::01::2022 09:44:53|OH FUGGG :DDDDD| +08::01::2022 09:44:53|OH FUGG :DDDDDD| +08::01::2022 09:44:53|White sniper| +08::01::2022 09:44:54|IPA +08::01::2022 09:44:54|BURGERS BTFO| +08::01::2022 09:44:54|urgerbros... +08::01::2022 09:44:54|JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB | +08::01::2022 09:44:54|OUKO +08::01::2022 09:44:55|GG EZ| +08::01::2022 09:44:55|PERGELE :DDDDDD| +08::01::2022 09:44:56|FUGGGGG :DDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:56|DDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:44:56|MUTTS BTFO| +08::01::2022 09:44:56|JOBBED AGAIN| +08::01::2022 09:44:57|POOR HELMET-CHAN| +08::01::2022 09:44:57|EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:44:57|GET FUCKED BURGERS| +08::01::2022 09:44:57|DDDDDDDDDDDDDD +08::01::2022 09:44:57|HAT +08::01::2022 09:44:58|GORY GORY WHAT A HELL OF A WAY TO JOB! SHE AIN'T TANKING NO MORE!| +08::01::2022 09:44:58|ERKLED +08::01::2022 09:44:59|NIPED +08::01::2022 09:44:59|the white death| +08::01::2022 09:45:00|WORST THAN 9::11| +08::01::2022 09:45:00|USA BTFO| +08::01::2022 09:45:01|sniber :DDDDDD| +08::01::2022 09:45:01|OH MY WHITE DEATH| +08::01::2022 09:45:02|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:02|JABRONI JOBURGERS| +08::01::2022 09:45:03|FUCKING REKT :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:45:04|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:04|POOR HELMET CHAN| +08::01::2022 09:45:04|DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:05|USA BROS..........................| +08::01::2022 09:45:05|GORY GORY WHAT A HELL OF A WAY TO JOB! SHE AIN'T TANKING NO MORE!| +08::01::2022 09:45:06|THE ABSOLUTE STATE| +08::01::2022 09:45:06|USA BTFO| +08::01::2022 09:45:06|AMERILARDS +08::01::2022 09:45:06|DDDDDDDDDDDDDDDDDD +08::01::2022 09:45:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:07|RIP HELMET CHAn| +08::01::2022 09:45:07|WE GOT TOO COCKY AGAIN| +08::01::2022 09:45:07|WE CAN'T STOP JOBBING| +08::01::2022 09:45:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:08|.. +08::01::2022 09:45:08|SNIPED WITH MY FINNISH MOSIN| +08::01::2022 09:45:08|Press F to spit on theri graves| +08::01::2022 09:45:08|ALISA STFU| +08::01::2022 09:45:09|>got dumped| +08::01::2022 09:45:09|akeshi.......... +08::01::2022 09:45:09|TAKASHI +08::01::2022 09:45:09|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:10|MENTAL BREAKDOWN| +08::01::2022 09:45:10|elmet-chan +08::01::2022 09:45:11|they didn't even hear it coming| +08::01::2022 09:45:11|saunders was robbed| +08::01::2022 09:45:11|SIMO NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 09:45:12|lisa... +08::01::2022 09:45:13|helmet chan| +08::01::2022 09:45:13|OH NONONO| +08::01::2022 09:45:13|IMO +08::01::2022 09:45:14|UMPED +08::01::2022 09:45:14|DDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:14|HELMET CHAN IS CUTE| +08::01::2022 09:45:15|FUG ALYSA :DDDDDD| +08::01::2022 09:45:16|INNISHED +08::01::2022 09:45:16|DDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:16|DDDD +08::01::2022 09:45:17|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:18|HAHAHA :-DDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:45:18|RESIGNED HELMET-CHAN| +08::01::2022 09:45:19|HAHAHAHAHAHAHAHAHAHAA POINT AT HER AND LAUGH| +08::01::2022 09:45:20|USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +08::01::2022 09:45:20|Around Finns watch your shins| +08::01::2022 09:45:21|Kay and Duce will both graduate as eternal jobbers| +08::01::2022 09:45:21|OH NO US BROS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:45:22|naomi +08::01::2022 09:45:22|PUMPED AND DUMPED| +08::01::2022 09:45:22|UG +08::01::2022 09:45:22|enis +08::01::2022 09:45:23|UGGED +08::01::2022 09:45:24|>she actually got to date| +08::01::2022 09:45:25|SHE KNOWS| +08::01::2022 09:45:25|AHAHAHAHAAHHAHAHAAHAHAHAHAHAHAHAHAHAHAHA +08::01::2022 09:45:26|JOUKO > USA| +08::01::2022 09:45:26|poor alisa| +08::01::2022 09:45:29|ASAKA +08::01::2022 09:45:29|OH NONONONONONONOPNO| +08::01::2022 09:45:29|who cares, I'm just here for arisu| +08::01::2022 09:45:30|YOUR IN THE SNIPERS SIGHTS| +08::01::2022 09:45:31|camping ni-| +08::01::2022 09:45:31|holy fuck where is that siber| +08::01::2022 09:45:32|>burgers in charge of winning| +08::01::2022 09:45:32|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:45:34|burgers job as usual| +08::01::2022 09:45:36|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 09:45:37|THE ETERNAL JOBBERS| +08::01::2022 09:45:39|why are americans so WEAK| +08::01::2022 09:45:40|MELLI KURISUMASU| +08::01::2022 09:45:41|arisu != arisa| +08::01::2022 09:45:41|nzu +08::01::2022 09:45:41|when do we see arisu| +08::01::2022 09:45:41|SAUNDERS MORE LIKE JOBBERS| +08::01::2022 09:45:42|alisa ;_;| +08::01::2022 09:45:42|Things were getting good? Takashi is cruel to Arisa| +08::01::2022 09:45:44|DDDDDDDDDDDDDD +08::01::2022 09:45:45|MERRY CHRISTMAS| +08::01::2022 09:45:46|ELLI +08::01::2022 09:45:46|ORVAPUUSTI +08::01::2022 09:45:46|binnenland :DDDD| +08::01::2022 09:45:46|MELLI KURISUMASU| +08::01::2022 09:45:47|I am burger therefore I must job| +08::01::2022 09:45:48|uter +08::01::2022 09:45:48|SANDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:45:48|EBINLAND :DDDDDDDDDD| +08::01::2022 09:45:48|FUCK I LOVE MIKA| +08::01::2022 09:45:48|MELLI KURISUMASU| +08::01::2022 09:45:49|MELLI KURISUMASU| +08::01::2022 09:45:49|CHRISTMAS MUSIC| +08::01::2022 09:45:50|Meri Kuri| +08::01::2022 09:45:50|PADORU PADORU| +08::01::2022 09:45:50|Merri kurisumasu| +08::01::2022 09:45:50|PADORU PADORUUUUUUUUUUU| +08::01::2022 09:45:50|MELLI KURISUMASU| +08::01::2022 09:45:51|MERRY CHRISTMAS BROS| +08::01::2022 09:45:51|MELLI KURISUMASU| +08::01::2022 09:45:51|How big is that tree| +08::01::2022 09:45:52|HOBOS IN THE LIMELIGHT| +08::01::2022 09:45:52|OULUTORTTU +08::01::2022 09:45:53|MERRY CHRISTMAS!| +08::01::2022 09:45:54|MELLI KURISUMASU| +08::01::2022 09:45:54|OOBA +08::01::2022 09:45:55|KURIMASU TRUCE| +08::01::2022 09:45:55|what a lovely place| +08::01::2022 09:45:55|lul >fuck she's good| +08::01::2022 09:45:57|ELLI +08::01::2022 09:45:57|HOW BIG IS THAT TREE| +08::01::2022 09:45:57|o fug ghrisdmas :DDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:45:57|MIARRY CURISTUMASUA| +08::01::2022 09:45:58|MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELL| +08::01::2022 09:45:59|KORVAPUUSTI :DDDDD| +08::01::2022 09:46:00|MERRI CHRIGSMAS| +08::01::2022 09:46:01|Melli Kulli| +08::01::2022 09:46:01|HOW TALL IS THAT FUCKING TREE| +08::01::2022 09:46:01|orvapuusti +08::01::2022 09:46:01|ARE YOU READY FOR THE AGE OF THE HOBOS| +08::01::2022 09:46:02|JINGURU BERU| +08::01::2022 09:46:03|HOBO CHRISTMAS| +08::01::2022 09:46:03|how big is this ship| +08::01::2022 09:46:03|Marlin glögi| +08::01::2022 09:46:05|KORVA PUSSY| +08::01::2022 09:46:06|YMUUY SPICED WINE| +08::01::2022 09:46:06|the finals is so obvious| +08::01::2022 09:46:07|Where did they get the money to buy that| +08::01::2022 09:46:07|PADORU PADORU| +08::01::2022 09:46:07|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:46:07|DDDDDDDD +08::01::2022 09:46:08|makki is so cute| +08::01::2022 09:46:09|EARBOOST :DD| +08::01::2022 09:46:09|MIKA IS DELICIOUS| +08::01::2022 09:46:10|PADORU PADORU PADORUUU| +08::01::2022 09:46:11|ute +08::01::2022 09:46:11|ITS HOBO TIME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 09:46:13|I miss christmas markets| +08::01::2022 09:46:14|More snowmen| +08::01::2022 09:46:15|FUCK MIKA FUCKING CUTE| +08::01::2022 09:46:16|DDDDDDDDDDDDDD +08::01::2022 09:46:19|ARISU'S ONEECHAN...| +08::01::2022 09:46:22|CHRIDSMAS :DDDDDDDDDDDDDDDD| +08::01::2022 09:46:23|Meri Kuri :DDDDDDDDD| +08::01::2022 09:46:23|CUTE :DDDDDDDDD| +08::01::2022 09:46:25|they stole that| +08::01::2022 09:46:26|JINGO BELL :DDDDDDDD| +08::01::2022 09:46:26|MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU | +08::01::2022 09:46:27|sanda :DDD| +08::01::2022 09:46:29|EBIN GONNA PUT BENIS IN BAGINA :DDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:46:30|cute cinnamon rolls| +08::01::2022 09:46:30|uksa +08::01::2022 09:46:32|JINGURU BERU| +08::01::2022 09:46:33|CINNAMON ROLL TOO PURE FOR THIS WORLD| +08::01::2022 09:46:35|DDDDD +08::01::2022 09:46:36|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:46:37|BENI CHRISMAGGG :DDD| +08::01::2022 09:46:39|hibernation +08::01::2022 09:46:42|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:46:43|risu....................... +08::01::2022 09:46:44|DDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:46:45|FIT:: +08::01::2022 09:46:46|fit:: +08::01::2022 09:46:47|TRONG +08::01::2022 09:46:47|fit:: +08::01::2022 09:46:49|ONEGAI MUSCLE| +08::01::2022 09:46:51|Mika looks like a Shimada in that cup| +08::01::2022 09:46:52|NEET STRONK| +08::01::2022 09:46:52|Girls und ::Fit::| +08::01::2022 09:46:52|TRONK +08::01::2022 09:46:53|ROID RAGE| +08::01::2022 09:46:54|GAMER GIRL BATH WATER| +08::01::2022 09:46:55|STRONG nerds| +08::01::2022 09:46:56|PAAAAAAAATS +08::01::2022 09:46:57|SS +08::01::2022 09:46:58|GREAT ESCAPE| +08::01::2022 09:46:59|>Finns hybernate | +08::01::2022 09:47:00|VOLLEY BUTT| +08::01::2022 09:47:00|males +08::01::2022 09:47:00|The Great Ecape kek| +08::01::2022 09:47:02|MEN SPOTED| +08::01::2022 09:47:03|Great escape| +08::01::2022 09:47:03|old kino| +08::01::2022 09:47:07|Weird looking tanks| +08::01::2022 09:47:08|the great escape?| +08::01::2022 09:47:10|Great Escape| +08::01::2022 09:47:10|The rabbits are training | +08::01::2022 09:47:11|What the fuck were those things?| +08::01::2022 09:47:12|WHAT'S THAT TWO WHEELED PANZER| +08::01::2022 09:47:13|anteaters are gonna end up troons with all those roids| +08::01::2022 09:47:13|Great Escape is a brilliant film| +08::01::2022 09:47:14|I wonder if this is forshadowing| +08::01::2022 09:47:15|Men exist in this unverse after all| +08::01::2022 09:47:16|>not liking The Great Escape| +08::01::2022 09:47:19|JUST WATCH IT DUMB BUNNIES| +08::01::2022 09:47:20|that guy failed lol| +08::01::2022 09:47:21|I need to watch that| +08::01::2022 09:47:25|I played the game the great escape| +08::01::2022 09:47:26|that fluff| +08::01::2022 09:47:26|EXT +08::01::2022 09:47:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:27|CUTE AUSSIES| +08::01::2022 09:47:29|Finnish cheerleaders| +08::01::2022 09:47:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:30|fluffy straya| +08::01::2022 09:47:30|they didn't get the rights to the great escape, my lawyers will be in touch| +08::01::2022 09:47:30|Great Escape will play a part in the final battle| +08::01::2022 09:47:32|CHIHATAN COUNCIL| +08::01::2022 09:47:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:33|LUCKY KOALA...| +08::01::2022 09:47:34|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:47:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:36|australia has MASSIVE fluff| +08::01::2022 09:47:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:47:36|Cute background dancing Finns| +08::01::2022 09:47:37|DVCE | +08::01::2022 09:47:37|DUCE DUCE DUCE| +08::01::2022 09:47:37|>japs have never had cheese| +08::01::2022 09:47:37|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:47:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:40|IZZA +08::01::2022 09:47:40|>PIZZA WITH CHOPSTICKS| +08::01::2022 09:47:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:41|Renta looking for his wife Anzu| +08::01::2022 09:47:42|ursed +08::01::2022 09:47:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:43|DUMB BAKAS| +08::01::2022 09:47:43|>Eating pizza with chop sticks| +08::01::2022 09:47:44| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:45|DUCE DUCE DUCE| +08::01::2022 09:47:45|>pizza with chopsticks| +08::01::2022 09:47:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:45|>THEY'VE NEVER HAD CHEESE| +08::01::2022 09:47:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:46|FUCKING CHOPSTICKS| +08::01::2022 09:47:46|chopsticks +08::01::2022 09:47:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:47|HOPSTICKS +08::01::2022 09:47:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:48|CHOPSTICKS +08::01::2022 09:47:49|>PIZZA WITH CHOPSTICKS| +08::01::2022 09:47:49|>PIZZA WITH CHOPSTICKS| +08::01::2022 09:47:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:51|>CHOPSTICKS PIZZA| +08::01::2022 09:47:51|FUCKING CUTE| +08::01::2022 09:47:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:47:52|PIZZA CHOPSTICKS| +08::01::2022 09:47:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:47:54|So are they going to be jumping tanks over a fence or tunneling somehow?| +08::01::2022 09:47:55|>ALMOST OVER, SEE YOU IN 2 YEARS?| +08::01::2022 09:47:55|>rice balls| +08::01::2022 09:47:56|oishii rice| +08::01::2022 09:47:58|Aren't nips lactose intolerant| +08::01::2022 09:47:58|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:47:59|AMBURGERS +08::01::2022 09:47:59|jelly donuts!| +08::01::2022 09:48:00| +08::01::2022 09:48:01|JELLY DONUTS!!!| +08::01::2022 09:48:01|alls +08::01::2022 09:48:03|GLASS FINLAND| +08::01::2022 09:48:06|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:48:07|DDDDDDDDDDDDDD +08::01::2022 09:48:08|DDDD +08::01::2022 09:48:09|PANTSU VOR| +08::01::2022 09:48:10|better panzer vor this time| +08::01::2022 09:48:10|These girls are all Japanese*| +08::01::2022 09:48:11|PANTSU ARE FOR| +08::01::2022 09:48:11|PANZA VO!| +08::01::2022 09:48:11|PANZA VOR| +08::01::2022 09:48:11|PANZER VOR| +08::01::2022 09:48:12|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:48:14|Momo starting to look the part lmao| +08::01::2022 09:48:16|PANZER BOR :DDDDDDDDD| +08::01::2022 09:48:17|DDDDDDDDDDDDDD +08::01::2022 09:48:18|'OLD STILL WHILE I GLASS YOU| +08::01::2022 09:48:21|PANTSU ARE FOR| +08::01::2022 09:48:21|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:48:21|square herzter| +08::01::2022 09:48:22|WHAT DOES PANZER VOR MEAN ANONS?| +08::01::2022 09:48:22|njet molotov| +08::01::2022 09:48:23|WELCOME TO THE FROZEN TUNDRA| +08::01::2022 09:48:24|The last Panzer Vor for 2 years| +08::01::2022 09:48:26|BANZER VORRRR :DDDDDDDDD| +08::01::2022 09:48:29| panssaroitu auto eteenpäin :-DDDDDDDDDDDD-DDDDDDD| +08::01::2022 09:48:32|yaa +08::01::2022 09:48:34|ANZA +08::01::2022 09:48:34|NYAAAAAA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:48:34|Orari got this right?| +08::01::2022 09:48:36|YA +08::01::2022 09:48:37|YAA +08::01::2022 09:48:37|Why aren't they in the treeline| +08::01::2022 09:48:38|bros....I don't think we're gonna timewarp again after this....| +08::01::2022 09:48:39|OH SHIT HERE IT COMES| +08::01::2022 09:48:39|Don't trust snowmen | +08::01::2022 09:48:41|IMO +08::01::2022 09:48:43|snowman :D| +08::01::2022 09:48:45|EZ Ooari victory| +08::01::2022 09:48:48|gorilla warfare again| +08::01::2022 09:48:50|THEYRE FUCKED| +08::01::2022 09:48:52|YOURE IN THE SNIPERS SIGHT, FIRST TO DIE| +08::01::2022 09:48:52|>white death| +08::01::2022 09:48:52|NJEDD MOLODOBBB:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:48:54|LANG +08::01::2022 09:48:55|Shit I just realized anteater team can't job this round as the flag tank| +08::01::2022 09:48:56|yaa! +08::01::2022 09:48:56|YAAAAAA +08::01::2022 09:48:56|YA +08::01::2022 09:48:57|yaa! +08::01::2022 09:48:57|Winter War flashbacks| +08::01::2022 09:48:57|OH SHIDD ITS FINNS| +08::01::2022 09:48:58|YA +08::01::2022 09:48:59|YAA +08::01::2022 09:48:59|YAA +08::01::2022 09:48:59|YAA +08::01::2022 09:49:01|Gamer is the flag tank this time?| +08::01::2022 09:49:02|YAA +08::01::2022 09:49:04|YAA +08::01::2022 09:49:05|why make nerds flag tank? high armor?| +08::01::2022 09:49:06|ya +08::01::2022 09:49:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:49:11| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:49:12|GORILLA WARFARE| +08::01::2022 09:49:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:49:14|ORILLA +08::01::2022 09:49:15|CUTE BAKA| +08::01::2022 09:49:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:49:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:49:16|GORILLA WARFARE| +08::01::2022 09:49:16|SHE SAID IT| +08::01::2022 09:49:17|why do they destroy ever bridge?| +08::01::2022 09:49:18|>CHEESE ON RICEBALLS| +08::01::2022 09:49:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:49:19|me on the right| +08::01::2022 09:49:19|binland :DDDDDDDDDDDD| +08::01::2022 09:49:20|GORILLA WARFARE| +08::01::2022 09:49:20| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:49:21|PASTA DESU| +08::01::2022 09:49:21|Perkele Benis Suomi| +08::01::2022 09:49:23|AKARONI +08::01::2022 09:49:23|Suomi tactics| +08::01::2022 09:49:23|GORILLA WARFARE| +08::01::2022 09:49:26|WAS RUMI A LOLI OR A MOLESTER?| +08::01::2022 09:49:28|guerilla des| +08::01::2022 09:49:28|GORIBBA :DDDDD| +08::01::2022 09:49:30|PIZZA ON CHOPSTICKS????????| +08::01::2022 09:49:31|NJET MOLOTOFF| +08::01::2022 09:49:33|YAA +08::01::2022 09:49:37|OT +08::01::2022 09:49:40|Loli and then molester duh| +08::01::2022 09:49:42|YAA +08::01::2022 09:49:43|WHACK A MOGURA| +08::01::2022 09:49:45|I HATE PIRATES| +08::01::2022 09:49:46|She grooms Arisu daily| +08::01::2022 09:49:48|27,000 Russians dead during the 1939 Winter War. This is bad| +08::01::2022 09:49:48|So basically Shimada 2.0 fight| +08::01::2022 09:49:48|>lets redo pravda| +08::01::2022 09:49:48|camping bitches| +08::01::2022 09:49:51|I LOVE PIRATES| +08::01::2022 09:49:53|JUST FUCVK UP THAT VIILLAGE| +08::01::2022 09:49:59|I WONDER WHAT THOSE SNOWMEN COULD BE| +08::01::2022 09:49:59|White tiger| +08::01::2022 09:50:02|Don't trust the snow creatures| +08::01::2022 09:50:02|BURN THE VILLAGE| +08::01::2022 09:50:05|ULTA:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:50:06|sus snowmen| +08::01::2022 09:50:07|finn mind game strong oarai loves village zone| +08::01::2022 09:50:07|lets go to the trap village| +08::01::2022 09:50:09|HMMMMMMMMM WHAT ABOUT THESE GIANT SNOWMEN?| +08::01::2022 09:50:09|cute snowmen| +08::01::2022 09:50:11|>team duck sees nothing wrong with this situation| +08::01::2022 09:50:16|i dont trust these snowmen| +08::01::2022 09:50:17|Is it me or are those snowmen suspicious...| +08::01::2022 09:50:18|snowmen among us | +08::01::2022 09:50:18|owaiiiiii +08::01::2022 09:50:19|Azusa "Moomin Destroyer" Sawa| +08::01::2022 09:50:19|the snowman is sus| +08::01::2022 09:50:21|NYAA those Finnish moles to where they popped up from| +08::01::2022 09:50:22|this is fine :-)| +08::01::2022 09:50:23|The lesson here is Don't trust Snow niggers| +08::01::2022 09:50:24|that's a pretty big snowman| +08::01::2022 09:50:26|Shut the fuck up the snowmen are fien| +08::01::2022 09:50:28|FINNED +08::01::2022 09:50:30|Surely that protrusion coming out of the snowman isn't a tank gun barrel| +08::01::2022 09:50:31|>no one suspects anything| +08::01::2022 09:50:34|I'M FUCKING FALLING ASLEEP I CAN'T GO ON ANYMORE| +08::01::2022 09:50:35|for you| +08::01::2022 09:50:36|arent the snowmen small?| +08::01::2022 09:50:38|uuu +08::01::2022 09:50:38|UOMIED +08::01::2022 09:50:45|>the snow starts speaking finnish| +08::01::2022 09:50:45|YOU'RE NOT FALLING ASLEEP ANON| +08::01::2022 09:50:48|less than 10 min left anon| +08::01::2022 09:50:49|THE SNOW IS SPEAKING FINNISH| +08::01::2022 09:50:50|STAY UP WITH ME| +08::01::2022 09:50:52|ITS LIKE 10 MORE MINUTES| +08::01::2022 09:50:54|DDDDDDDDD +08::01::2022 09:50:54|(not including the OVA 6)| +08::01::2022 09:50:55|BENIS IN THE DREES :DDDD BENIS IN THE DREES :DDDD| +08::01::2022 09:50:57|She's accurate with those directions| +08::01::2022 09:50:59|The snow speaks Moonin| +08::01::2022 09:51:00|>A BT-42 AS FLAG TANK| +08::01::2022 09:51:10|IT'S A TRAP| +08::01::2022 09:51:12|haha huijattu :-DDDDDDDDDDDDD| +08::01::2022 09:51:18|>japs think they can compete agains the spirit of the FINNOKOREAN HYPERWAR WARRIORS| +08::01::2022 09:51:20|IF I CAN STAY AWAKE UNTIL 11 AM, YOU CAN IT TOO| +08::01::2022 09:51:22|>snow starts speaking finnish| +08::01::2022 09:51:24|vihollinen motissa :DDDDDD| +08::01::2022 09:51:31|enis +08::01::2022 09:51:33|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:34|DDDDDDDDD +08::01::2022 09:51:35|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:35|DDDDDDDDDDDDDDDDD +08::01::2022 09:51:37|DDDD +08::01::2022 09:51:38|AAAAAAAAAAAAAAAAA +08::01::2022 09:51:39|FUG :DDDDDDDDDDDD| +08::01::2022 09:51:40|fug :DDDDDDDD | +08::01::2022 09:51:40|DDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:40|DDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:40|UG +08::01::2022 09:51:40|DDDD +08::01::2022 09:51:41|TIME FOR FUG| +08::01::2022 09:51:41|o fug polkka :DDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:51:41|ussianptsd.web +08::01::2022 09:51:42|RÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +08::01::2022 09:51:42|ID COMES :DDDDDDDDDDDDD| +08::01::2022 09:51:42|BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:51:42|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:42|DDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:42|HYPERWAR BETERANS:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:51:44|PANIC THERES A SNIPER ON THE LOOSE| +08::01::2022 09:51:44|IS IT TIME| +08::01::2022 09:51:45|Hobo snufkin| +08::01::2022 09:51:45|OH FUGGG :DDDDDDDDD| +08::01::2022 09:51:45|DDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:45|ruse cruise| +08::01::2022 09:51:45|HOLY FUCK IT WAS A TRAP| +08::01::2022 09:51:45|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:46|AAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:51:46|OH SHIDDD :DDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:51:47|OOHHHH SH---| +08::01::2022 09:51:47|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:47|SURBRISE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:51:48|MOOMIN STRIKES AGAIN!| +08::01::2022 09:51:49|its a trap| +08::01::2022 09:51:50|BENIS :DDDDD| +08::01::2022 09:51:50|o fug :DDDDDDDDDDD| +08::01::2022 09:51:51|lets gooooooooooooooooooooooooooo| +08::01::2022 09:51:51|how did the finns hiding in the snowmen hide their tracks so quickly and well?| +08::01::2022 09:51:52|BENIS :DDDDDDDDDDDDDDDDDD| +08::01::2022 09:51:53|OH FUG :DDDDDDDDDDDDDDDDDDD| +08::01::2022 09:51:53|o fug it was ambush :DDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:51:53|YLLÄTYS :DDDDDDDD| +08::01::2022 09:51:54|I warned you| +08::01::2022 09:51:54|OH NO BROS| +08::01::2022 09:51:55|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:51:55|ANI +08::01::2022 09:51:55|OH FUGGG :DDDDDDDDDD| +08::01::2022 09:51:56|Literally Red Alert 3| +08::01::2022 09:51:57|ETTAI +08::01::2022 09:51:59|SNEAG ADDAGG :DDDDDDDDDDDDDDDDDD| +08::01::2022 09:52:00|DD +08::01::2022 09:52:01|FUUUUUG :DDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:52:01|useless sharks| +08::01::2022 09:52:02|oh fugg :DDDDDDDDDDDDDDDDDDD| +08::01::2022 09:52:03|DDDDD +08::01::2022 09:52:04|ITS A TRAP| +08::01::2022 09:52:05|IT'S OVER | +08::01::2022 09:52:06|DDDDDDDDDDDDDDDDD +08::01::2022 09:52:08|UOMI +08::01::2022 09:52:14|SNEAG ATTAK :DDDDDDDDDDDDDDDDDD| +08::01::2022 09:52:15|PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:52:16|BENISSED +08::01::2022 09:52:17|SHARK JOB| +08::01::2022 09:52:17|=====================DDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:52:18|They ignored the MK IV lmao| +08::01::2022 09:52:20|I HATE THE PIRATES| +08::01::2022 09:52:23|HYVA SUOMI| +08::01::2022 09:52:24|tank stealth| +08::01::2022 09:52:25|SHARK TEAM DO SOMETHING| +08::01::2022 09:52:25|stupid fucking shark| +08::01::2022 09:52:27|Orari Bros we got cocky....| +08::01::2022 09:52:28|Sharks +08::01::2022 09:52:29|>everyone just fuckin gignores the mk iv| +08::01::2022 09:52:29|DOO GOGGY OORAI :DDDDDDDDDDDD| +08::01::2022 09:52:29|jumalauta :DDDDD| +08::01::2022 09:52:30|UTPLAYED +08::01::2022 09:52:32|ITTU +08::01::2022 09:52:32|>perfectly surrounds oorai >still gets destroyed| +08::01::2022 09:52:33|NIPED +08::01::2022 09:52:34|YAA +08::01::2022 09:52:36|rickshot +08::01::2022 09:52:36|stoic loader| +08::01::2022 09:52:37|YAA +08::01::2022 09:52:38|why are the gamers the flag tank| +08::01::2022 09:52:39|IRSHOT +08::01::2022 09:52:39|PLANNED +08::01::2022 09:52:39|NYAAAAAAAA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:52:39|I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +08::01::2022 09:52:41|AHHHHHHH MAKO-CHAN| +08::01::2022 09:52:42|DOUBLE KILL| +08::01::2022 09:52:44|ULLSHIT +08::01::2022 09:52:44|O FUG :DDDDDDDDDDDD| +08::01::2022 09:52:45|DOUBLE KILL| +08::01::2022 09:52:45|DOUBLE KILL| +08::01::2022 09:52:46|DODSUGEGI :-DDDDDDDDDDDDDDDD| +08::01::2022 09:52:46|ASUGA +08::01::2022 09:52:47|THE MARK IV CAN'T DO SHIT. IT COULDN'T EVEN RUN IN MOST SNOWY CONDITIONS| +08::01::2022 09:52:47|DOUBLE KILL| +08::01::2022 09:52:48|they reused that show of yukari reloading| +08::01::2022 09:52:48|OH BABY A DOUBLE| +08::01::2022 09:52:48|ANI +08::01::2022 09:52:48|YO WTF| +08::01::2022 09:52:50|Imagine if Mika had actual good tanks| +08::01::2022 09:52:51|ONE SHOT TWO KILLS| +08::01::2022 09:52:51|UGGGGG +08::01::2022 09:52:51|ODDAMN +08::01::2022 09:52:52|>clear shot at the flag tank || >shoots ankou| +08::01::2022 09:52:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:52:52|UG +08::01::2022 09:52:53|dddddddddddddddd double kill| +08::01::2022 09:52:53|No fucking way| +08::01::2022 09:52:53| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:52:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:52:54|TF +08::01::2022 09:52:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:52:54|TF? +08::01::2022 09:52:55|TWO IN ONE| +08::01::2022 09:52:55|ONE IN A BILLION| +08::01::2022 09:52:55|INSTANT REPLAY| +08::01::2022 09:52:56|d-d-d-d-d-DOUBLE KILL| +08::01::2022 09:52:56|You're pretty good| +08::01::2022 09:52:56| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:52:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:52:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:52:57|trickshots +08::01::2022 09:52:58|bullshit even WT ain't like that| +08::01::2022 09:53:00|WOFER +08::01::2022 09:53:00|ANI?! +08::01::2022 09:53:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:53:01|eal? +08::01::2022 09:53:01|DOUBLE KILL!!| +08::01::2022 09:53:04|DDDDDDDDDD +08::01::2022 09:53:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +08::01::2022 09:53:04|FUG :DDDDDDD| +08::01::2022 09:53:05|FUG :DDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:53:06|IT'S NIPA| +08::01::2022 09:53:06|MAKO-CHAN, MASTER OF ASIAN LAND WARS| +08::01::2022 09:53:06|SNIBER :DDDDDDDDDDDD| +08::01::2022 09:53:06|OUKO +08::01::2022 09:53:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:53:07|IMO +08::01::2022 09:53:07|OH MY GOD INHUMAN REACTIONS| +08::01::2022 09:53:07|OUKO +08::01::2022 09:53:08|Oh no...| +08::01::2022 09:53:09|YOU'RE IN THE SNIPER'S SIGHT| +08::01::2022 09:53:09|niped +08::01::2022 09:53:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:53:11|OH NO| +08::01::2022 09:53:11|IMOOOOOO +08::01::2022 09:53:13|UNKATA:DDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:53:15|IMOOOOOOOOOO +08::01::2022 09:53:15|!! +08::01::2022 09:53:16|LIND +08::01::2022 09:53:16|NIBER???? +08::01::2022 09:53:16|GET SIMO'D| +08::01::2022 09:53:17|OOARAIBROS I DON'T FEEL GOOD| +08::01::2022 09:53:17|STURMI :DDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:53:17|AAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:18|LOOOK OUT| +08::01::2022 09:53:18|mako spot stug on 2km is something| +08::01::2022 09:53:19|oh fug| +08::01::2022 09:53:20|AAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:21|ITS OVER| +08::01::2022 09:53:21|MAKO CARRY| +08::01::2022 09:53:22|hardscoped :DDDDDDDDDD| +08::01::2022 09:53:22|The White Death| +08::01::2022 09:53:22|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIIIIIIIIIIEEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 09:53:22|a sexy witch| +08::01::2022 09:53:23|LOOK OUT| +08::01::2022 09:53:23| +08::01::2022 09:53:23|SNIPE :DDDD| +08::01::2022 09:53:23|MAJO :DDDDDDDDDDD| +08::01::2022 09:53:24|WHITE WITCH| +08::01::2022 09:53:24|TFO +08::01::2022 09:53:25|FUUUUUUUUUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:53:25|AAAAAAAAAAAAAAAAAAAAA NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 09:53:25|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:26|FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:53:27|Shiroi Majo| +08::01::2022 09:53:27|I can't believe Miho is fucking dead| +08::01::2022 09:53:27|e:Zero? +08::01::2022 09:53:27|Ooarai bros......| +08::01::2022 09:53:27|Shiroi majo wa ne| +08::01::2022 09:53:27|whide bitch :DDDDDDDDDD| +08::01::2022 09:53:28|I CAN'T BELIEVE MIHO IS FUCKING DEAD| +08::01::2022 09:53:29|SHID :DDDDDDDD| +08::01::2022 09:53:29|DDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:53:30|ANKOU DEAD!!!!!!!!!!!!!!!!!!!!!!!| +08::01::2022 09:53:30|AJO +08::01::2022 09:53:31|IT'S OVER OOARI BROS| +08::01::2022 09:53:31|BHITE BISH:DDDDDDDDDDDDD| +08::01::2022 09:53:31|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:32|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:32|OOOOOOOOOOOOOOOOUUUUUUUUUUUUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:32|fuck youuuuuuuuuuuuuuuu ooarai| +08::01::2022 09:53:32|IP +08::01::2022 09:53:33|SNIPPER :DDDD| +08::01::2022 09:53:34|FUG :DDDDDDDDDDDDDDDDD| +08::01::2022 09:53:34|OH NONONONNNOOONONNONONO MIHOBROS| +08::01::2022 09:53:36|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:36|sniper pissed| +08::01::2022 09:53:36|FUG :DDDDDDDDDDDDDDDDDDD| +08::01::2022 09:53:37|FFFFFFFFFF +08::01::2022 09:53:37|MIHO IS FUCKING DEAD| +08::01::2022 09:53:37| +08::01::2022 09:53:37|AAAAAAAAAAAAAA +08::01::2022 09:53:38|WHITE DESU| +08::01::2022 09:53:38|Did we perhaps get too cocky............| +08::01::2022 09:53:39|ankou destroyed| +08::01::2022 09:53:39|DUMP OOARARI COIN STAT| +08::01::2022 09:53:39|oraribros... +08::01::2022 09:53:40|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:40|SNIBER :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:53:40|no more plot armor for ooarai| +08::01::2022 09:53:41|ALL MY MONEY ON KEIZOKU| +08::01::2022 09:53:41|HHHHHHHHHHHHHH +08::01::2022 09:53:41|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:53:42|IT'S FUCKING OVER| +08::01::2022 09:53:43|OH SHIT| +08::01::2022 09:53:43|FUGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:53:43|FINALLY | +08::01::2022 09:53:44|LIFFHANGER +08::01::2022 09:53:44|OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +08::01::2022 09:53:45|SERIES OVER| +08::01::2022 09:53:45|8888888888888888 +08::01::2022 09:53:46|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:53:46|ITS OBER :dddddddddddd| +08::01::2022 09:53:46|I can't believe OOARAI FUCKING LOST| +08::01::2022 09:53:46|gg its over without miho| +08::01::2022 09:53:46|WHAT THE FUCK THAT'S NOT FAIR| +08::01::2022 09:53:47|THIS IS THE END MY ONLY FRIEND THE END| +08::01::2022 09:53:47|MARINE YOURE THE LASt ONE COMPLETE THE MISSION| +08::01::2022 09:53:47|WHO WILL CARRY NOW???| +08::01::2022 09:53:47|Oarai got too cocky| +08::01::2022 09:53:48|over +08::01::2022 09:53:48|see you in two years| +08::01::2022 09:53:48|azusa time in 2 years| +08::01::2022 09:53:49|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 09:53:49|11 fucking hours| +08::01::2022 09:53:49|See you in 11 hours, bros| +08::01::2022 09:53:50|cliffhanger +08::01::2022 09:53:50|kono bangumi wa etc| +08::01::2022 09:53:50|IT'S ALL OGRE| +08::01::2022 09:53:50|Miho got perkled| +08::01::2022 09:53:51|Anglerfish is dead| +08::01::2022 09:53:51|its over!| +08::01::2022 09:53:51|MISSION FAILED| +08::01::2022 09:53:51|FUCKING CHEATERS| +08::01::2022 09:53:52|ENTER MISSION TIME MOTHERFUCKER| +08::01::2022 09:53:52|See you in 3 years| +08::01::2022 09:53:52|SEE YA IN 2 FUCKING YEARS| +08::01::2022 09:53:52|Why does it seem like Ooarai always plays away games?| +08::01::2022 09:53:52|TIME TO PASS OUT NOW| +08::01::2022 09:53:53|2 YEARS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 09:53:53|AZUSA'S TIME TO SHINE| +08::01::2022 09:53:53|thanks for the stream, see you all in 2 years o7| +08::01::2022 09:53:53|DAS FINALE 4 WHEN| +08::01::2022 09:53:53|>OVER FOR 2 YEARS| +08::01::2022 09:53:53|DF4 NEXT| +08::01::2022 09:53:54|ENTER ENTER MISSION| +08::01::2022 09:53:54|2 years later| +08::01::2022 09:53:54|DDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:53:55|2 year wait LETS GOOOOOOOOOOO| +08::01::2022 09:53:55|OOARAI IS FUCKED| +08::01::2022 09:53:55|WELP IM GLAD ITS OVER BOYs.| +08::01::2022 09:53:55|TIME WARP INTO DAS FINALE 4 NOW RIGHT| +08::01::2022 09:53:55|2 more years in Binland boys| +08::01::2022 09:53:56|See yall in 2025| +08::01::2022 09:53:56|so the girls are dead | +08::01::2022 09:53:56|GUP IS ETERNAL| +08::01::2022 09:53:56|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08::01::2022 09:53:57|1am lol| +08::01::2022 09:53:57|OORAI BROS| +08::01::2022 09:53:57|see you guys in another few years| +08::01::2022 09:53:58|over +08::01::2022 09:53:58|AAAAAAAAAAAAAAAAAAA WE HAVE TO WAIT| +08::01::2022 09:53:59|we done| +08::01::2022 09:54:00|SEE YOU IN TOO YEARS | +08::01::2022 09:54:00|2 yearrrrrrrr| +08::01::2022 09:54:01|SEE YOU IN 2 FUCKING YEARS| +08::01::2022 09:54:01|SEE YOU IN 2 YEARS FAGS| +08::01::2022 09:54:01|see you all next year| +08::01::2022 09:54:03|ENTER MISSION| +08::01::2022 09:54:03|>2 more years| +08::01::2022 09:54:04|IP +08::01::2022 09:54:04|SEE YOU IN 2 YEARS| +08::01::2022 09:54:04|2 FUCKING YEARS FAGGOTS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 09:54:05|You can wait a little longer right?| +08::01::2022 09:54:06|>2+ years for the next one!| +08::01::2022 09:54:07|>2 years | +08::01::2022 09:54:07|see you faggots in 2 years| +08::01::2022 09:54:08|THANKS FOR THE STREAM| +08::01::2022 09:54:08|See you in 10 years for the next one| +08::01::2022 09:54:08|JUST SPLASH YOUR FACE WITH COLD WATER YOU'LL BE FINE| +08::01::2022 09:54:08|2 years will come in the blink of an eye| +08::01::2022 09:54:09|bros can't we just timewarp again| +08::01::2022 09:54:09|POST ANCHOVY LEWDS IN THE THREAD| +08::01::2022 09:54:09|THIS WAS FAST AS FUCK| +08::01::2022 09:54:09|SEE YOU IN 11 HOURS FAGS| +08::01::2022 09:54:09|CUTE NISHI| +08::01::2022 09:54:10|Sankyuu stream anon| +08::01::2022 09:54:10|See you guys in 2 years| +08::01::2022 09:54:11|SEE YOU NIBBAS IN 2 YEARS| +08::01::2022 09:54:12|WERE SO FUCKED| +08::01::2022 09:54:12|Thank you based anon for hosting this| +08::01::2022 09:54:13|2 YEARS| +08::01::2022 09:54:13|ugly tanks| +08::01::2022 09:54:13|024? +08::01::2022 09:54:13|I can't believe that Momo and the Rabbits and the Anteaters and the Sharks are all ognna come in clutch| +08::01::2022 09:54:14|8PM :)| +08::01::2022 09:54:15|Nearly 11 hours| +08::01::2022 09:54:15|ALLLLLLLLLLLLL THIS FOR A CLIFFFF HANGAR THAT WON'T BE RESOLVED FOR FUCKING YEARSSSSSSSSSSSSSSSSSSSSSSSSSSS| +08::01::2022 09:54:15|MOMO-TAICHOU WILL PREVAIL BROS| +08::01::2022 09:54:16|2 FUCKING YEARSSSSSSSSSSSSSSSSS| +08::01::2022 09:54:16|See some of you in the SNW Stream niggers| +08::01::2022 09:54:17|How can they win when their flag tang was just knocked out| +08::01::2022 09:54:17|>movie ending on a fucking cliffhanger| +08::01::2022 09:54:18|THANKS FOR THE STREAM GALAX| +08::01::2022 09:54:19|Maybe I can see part 4 in 4D...| +08::01::2022 09:54:19|I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +08::01::2022 09:54:19|thanks anon| +08::01::2022 09:54:20|BIGGEST FUCKING SHIPPAI OF ALL TIME| +08::01::2022 09:54:21|Until next time| +08::01::2022 09:54:22|1 AM HERE| +08::01::2022 09:54:22|Can't believe i survived the whole thing| +08::01::2022 09:54:22|thanks anons this was fun once again, see you for the wotos| +08::01::2022 09:54:22|Thanks for the stream, see you all in the next one| +08::01::2022 09:54:23|fuck if ww3 ain't happen until df4| +08::01::2022 09:54:23|THANK YOU ANON FOR HOSTING THIS STREAM| +08::01::2022 09:54:23|see you later faggots| +08::01::2022 09:54:25|SUOMI SAATANA VITTU PERKELE| +08::01::2022 09:54:25|sure didn't waste my day| +08::01::2022 09:54:26|8 years more if we're lucky for final show| +08::01::2022 09:54:27|Thanks for the stream| +08::01::2022 09:54:28|>2 fucking years| +08::01::2022 09:54:28|>work in 4 hours IT WAS WORTH IT FAGGOTS| +08::01::2022 09:54:29|DON'T FORGET THE SNW STREAM| +08::01::2022 09:54:30|I MADE IT BANZAI BANZAI BANZAI| +08::01::2022 09:54:30|SANKU U SANK U| +08::01::2022 09:54:31|FUCK YOU OOARAI| +08::01::2022 09:54:31|ENTAH ENTAH MISSION| +08::01::2022 09:54:31|See you in 2 years| +08::01::2022 09:54:31|nter +08::01::2022 09:54:31|MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +08::01::2022 09:54:31|NTAAA +08::01::2022 09:54:32|3AM, 11 hours...| +08::01::2022 09:54:32|ENTAH ENTAH MISSION| +08::01::2022 09:54:33|10 am| +08::01::2022 09:54:33|>OVER FOREVER| +08::01::2022 09:54:33|ESTBROS REPORT IN| +08::01::2022 09:54:34|ENTER ENTER BUFFER| +08::01::2022 09:54:35|SARABA NIGGERS | +08::01::2022 09:54:35|>unreal engine| +08::01::2022 09:54:36|3AM REPORTING| +08::01::2022 09:54:37|ENTAH ENTAH MISSION| +08::01::2022 09:54:37|THANKS ANON| +08::01::2022 09:54:37|ENTAH ENTAH| +08::01::2022 09:54:38|AYAKU +08::01::2022 09:54:38|ENTER ENTER MISSIONNNNNNNNNNNNNNNNNNNN| +08::01::2022 09:54:38|THANK YOU FOR THE STREAM| +08::01::2022 09:54:38|ENTAH ENTAH MISSION| +08::01::2022 09:54:39|ENTAH ENTAH MISSION| +08::01::2022 09:54:39|1 am, ive been here for 12 hours| +08::01::2022 09:54:40|very fun, first time i ever participated in a watchalong | +08::01::2022 09:54:41|PRESS B TO DO A BOUNCY-TOTSUGEKI| +08::01::2022 09:54:41|ENTA ENTA MISSION| +08::01::2022 09:54:41|6 hours of sleep until anison matrix| +08::01::2022 09:54:42|ENTEH ENTEH MISSSION| +08::01::2022 09:54:42|ENTAAAA ENTAAAA MISSION| +08::01::2022 09:54:43|Thankyou for the stream| +08::01::2022 09:54:43|10am +08::01::2022 09:54:43|ENTAR ENTAR MISSION| +08::01::2022 09:54:43|AYAKU +08::01::2022 09:54:43|ayaku +08::01::2022 09:54:44|3 YEAR INTER INTER MISSION| +08::01::2022 09:54:45|4:00 am boyos| +08::01::2022 09:54:45|SEE YOU IN 2024| +08::01::2022 09:54:46| +08::01::2022 09:54:47|ENTAH ENTAH| +08::01::2022 09:54:47|<3 <3 <3| +08::01::2022 09:54:48|ENTER ENTER MISSION| +08::01::2022 09:54:48|ENTAH ENTAH MISSION| +08::01::2022 09:54:48|SSHOUKENMEI +08::01::2022 09:54:48|ENTAH ENTAH MISSION| +08::01::2022 09:54:48|ENTAH ENTAH MISSION| +08::01::2022 09:54:48|SSHOUKENMEI +08::01::2022 09:54:48|ENTA ENTA MISSION| +08::01::2022 09:54:49| +08::01::2022 09:54:50| +08::01::2022 09:54:50|ENTER ENTER MISSIOOOOOOOOOOOOOOOOOONNNN| +08::01::2022 09:54:50|thanks for the stream anon, have a good night all| +08::01::2022 09:54:51|ENTAH ENTAH MISSION| +08::01::2022 09:54:51|TSUMO +08::01::2022 09:54:54|2 YEAR PISS BREAK| +08::01::2022 09:54:54|Thank you Galax| +08::01::2022 09:54:54|tsumo +08::01::2022 09:54:54|8:52 +08::01::2022 09:54:55|yes thanks for stream, I came late and only saw the movie right before the main battle started, but was fun thanks| +08::01::2022 09:54:55|BUFFER BUFFER MISSION| +08::01::2022 09:54:57|HIKARU TAIYOU| +08::01::2022 09:54:57|ITSUMO TE WO TSUNAIDE| +08::01::2022 09:54:58|3 am here goodnight anons| +08::01::2022 09:54:58|9:00 AM - time for sleep| +08::01::2022 09:54:59|ENTAH ENTAH MISSIOH| +08::01::2022 09:54:59|ENTER , ENTER MISSION| +08::01::2022 09:55:00|goodnight ESTbros| +08::01::2022 09:55:00|5pm +08::01::2022 09:55:03|ZUTTO ISSHO NO MIRAIIIIIIIII| +08::01::2022 09:55:03|3AM CHADS REPORT| +08::01::2022 09:55:03|ENTER ENTER MISSION| +08::01::2022 09:55:03|I SWEAR TO GOD IF WW3 HAPPENS I'LL WADE THROUGH THE RADS TO INTERRIGATE THE NIPS TO GIVE ME THE STORY BOARDS OF THE NEXT MOVIE| +08::01::2022 09:55:03|6 am | +08::01::2022 09:55:06|ASU NO TAIYOU HIKARI TAIYOU| +08::01::2022 09:55:06|ncore +08::01::2022 09:55:06|9am here too| +08::01::2022 09:55:07|THEYRE SO CUTE| +08::01::2022 09:55:08|WAKE ME UP IN 2024 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 09:55:09|>americans complaining about having to stay up until 4am| +08::01::2022 09:55:10|i dont wanna go| +08::01::2022 09:55:11|D +08::01::2022 09:55:11|IRAIIIII +08::01::2022 09:55:12|am +08::01::2022 09:55:12|GG BOYS| +08::01::2022 09:55:12|SEE YOU GLORIOUS BASTARDS AGAIN IN 2 YEARS!| +08::01::2022 09:55:12|2:53 AM| +08::01::2022 09:55:13|holy shit it's almost 4 am| +08::01::2022 09:55:13|10 AM ._.| +08::01::2022 09:55:14|ZUTTO ISSHO NO MIRAI| +08::01::2022 09:55:18|umm encore?| +08::01::2022 09:55:19|cute IJA| +08::01::2022 09:55:19|FINLAND WILL WIN| +08::01::2022 09:55:20|11 HOURS LADS WE MADE IT| +08::01::2022 09:55:21|EST CHADS REPORT| +08::01::2022 09:55:22|:PM +08::01::2022 09:55:25|G +08::01::2022 09:55:25|1 hour sleep then work if the weather clears| +08::01::2022 09:55:25|LONG LIVE FINLAND| +08::01::2022 09:55:26|IT'S 10AM| +08::01::2022 09:55:27|D +08::01::2022 09:55:27|E N C O R E| +08::01::2022 09:55:27|F4? +08::01::2022 09:55:28|ATTAAAAAA +08::01::2022 09:55:28|SEE YOU TOMORROW AND NEXT YEAR!| +08::01::2022 09:55:29|keep looping the stream for 2 years| +08::01::2022 09:55:29|ENCORE CHADS| +08::01::2022 09:55:30|SEE YOU IN 2 YEARS FRIENDS :)| +08::01::2022 09:55:30|EST REPORTING IN| +08::01::2022 09:55:30|GG NICE STREAM| +08::01::2022 09:55:30|eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +08::01::2022 09:55:32|DAS FINALE!| +08::01::2022 09:55:33|SEE YOU IN 2 YEARS| +08::01::2022 09:55:33|its over| +08::01::2022 09:55:34|6AM GOOD NIGHT ANONS| +08::01::2022 09:55:34|JELLY DONUT!!| +08::01::2022 09:55:34|time for sora no woto| +08::01::2022 09:55:34|MEDETOU +08::01::2022 09:55:34|_; +08::01::2022 09:55:35|2AM MUNCHIES| +08::01::2022 09:55:35|PISS TIME| +08::01::2022 09:55:36|G +08::01::2022 09:55:37|so it's over| +08::01::2022 09:55:37|sleep till wotos| +08::01::2022 09:55:37|GREAT SHOW AS ALWAYS 8888888888888888888888888888888| +08::01::2022 09:55:39|ima miss yall| +08::01::2022 09:55:39|SEE YA ::A::| +08::01::2022 09:55:40|IT WAS REALLY FUN| +08::01::2022 09:55:40|That was bloody good| +08::01::2022 09:55:40|_; +08::01::2022 09:55:40|IM GONNA NEED MORE REDBULLS FOR THE SNW STREAM| +08::01::2022 09:55:40|YAYA +08::01::2022 09:55:41|2 FUCKING YEEEEEEEEEEEEAAAAAARRRRRRRRRR| +08::01::2022 09:55:42|THANK YOU GALAX| +08::01::2022 09:55:42|( +08::01::2022 09:55:42|2 more yearrrr ;_;| +08::01::2022 09:55:43|SEE YOU GUYS!| +08::01::2022 09:55:43|THANKS EVERYONE| +08::01::2022 09:55:43|88888888888888888888888888888888888888888888 +08::01::2022 09:55:43|reminder to not die before das finale 6| +08::01::2022 09:55:44|SEE YOU LADS IN THE SNW STREAM| +08::01::2022 09:55:44|RAVO +08::01::2022 09:55:44|ARIGATOU MINNA SAN| +08::01::2022 09:55:44|SEE YOU IN 2 YEARS | +08::01::2022 09:55:45|EAHHHHHHHHHHHHHHHHHH +08::01::2022 09:55:45|ZWEI JAHRE| +08::01::2022 09:55:46|888888888888888888888888888888 +08::01::2022 09:55:46|NOOOOOOOOOOOOOOOOOOOOOOOOO GIVE ME MORE| +08::01::2022 09:55:47|see ya in 2 years anon| +08::01::2022 09:55:47|Me in the middle| +08::01::2022 09:55:48|I CLAP| +08::01::2022 09:55:49|GuP is DEAD| +08::01::2022 09:55:49|Goodbye anons| +08::01::2022 09:55:49|never forget what a cunt erika was in the anime| +08::01::2022 09:55:49|Y +08::01::2022 09:55:49|GOOD NIGHT ANONS| +08::01::2022 09:55:49|Some of you guys are Alright, do come to school tomorrow| +08::01::2022 09:55:49|2 years| +08::01::2022 09:55:50|<3 | +08::01::2022 09:55:50|JOIN SNW TOMORROW| +08::01::2022 09:55:50|88888888888888888888888888888888888888888888888888888 +08::01::2022 09:55:50|SEE YOU FUCKERS IN 3 YEARS| +08::01::2022 09:55:50|TIME TO NOT FUCKING KILL MYSELF | +08::01::2022 09:55:51|NZU +08::01::2022 09:55:51|thank you streamer overlords| +08::01::2022 09:55:51|THESE GIRLS SURE ARE CUTE | +08::01::2022 09:55:51|THANK YOU EVERYONE 88888888| +08::01::2022 09:55:52|SEE YOU IN 2 YEARS!| +08::01::2022 09:55:52|THANK YOU| +08::01::2022 09:55:53|CYA IN 2 YEARS ANONS| +08::01::2022 09:55:54|INEN +08::01::2022 09:55:54|88888888888888888888888888888 +08::01::2022 09:55:54|SEE YALL IN 2024| +08::01::2022 09:55:54|DANKE MODS| +08::01::2022 09:55:54|nooooooooooooooo neeed more| +08::01::2022 09:55:54|LEARN FROM ACID ANON, DONT DO DRUGS| +08::01::2022 09:55:54|IEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +08::01::2022 09:55:55|one final dvce spam?| +08::01::2022 09:55:57|LOVE YOU ALL| +08::01::2022 09:55:58|Thankou for being herre| +08::01::2022 09:55:58|BYE BYE| +08::01::2022 09:55:58|NUR ZWEI JAHRE MEHR| +08::01::2022 09:55:58|POST ANCHOVY LEWDS IN THREAD| +08::01::2022 09:55:59|my wives mako and arisu are so fucking cute| +08::01::2022 09:55:59|Thanks Galax| +08::01::2022 09:56:01|It's Ogre| +08::01::2022 09:56:01|2024 WOOOOOOOOO| +08::01::2022 09:56:01|until next time faggots| +08::01::2022 09:56:02|See you in Das Finale 4| +08::01::2022 09:56:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:04|GOOD BYE| +08::01::2022 09:56:05|Thanks for the stream!| +08::01::2022 09:56:05|I better see ALL of you for wotos tomorrow| +08::01::2022 09:56:05|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +08::01::2022 09:56:06|dos anos| +08::01::2022 09:56:07|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:07|I HOPE I'M STILL ALIVE BY THEN HOLY FUCKING SHIT| +08::01::2022 09:56:07|I love you guys| +08::01::2022 09:56:08|LOVE YA ANONS TAKE CARE| +08::01::2022 09:56:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:08|STUDIO SAN I KNEELLLLLLLLLLLLLLLLLLLLLLL| +08::01::2022 09:56:09|sayonara buttlickers| +08::01::2022 09:56:09|VCE +08::01::2022 09:56:10|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:56:10| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:10|Azusa will save Ooarai| +08::01::2022 09:56:11|bye thanks for the stream!| +08::01::2022 09:56:12|SEE YOU IN 2 YEARS| +08::01::2022 09:56:12|DUCE DUCE DUCE DUECE| +08::01::2022 09:56:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:14|GuP FOREVER!!!!!!!!!!!!!!!!!!| +08::01::2022 09:56:14|SEE YOU <3| +08::01::2022 09:56:15|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:56:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:15|see you guys later.| +08::01::2022 09:56:16|REMEMBER: YOU CAN"T DIE BEFORE ITS ACTUALLY OVER| +08::01::2022 09:56:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:20| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:20|DA SVIDANYA | +08::01::2022 09:56:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:21|024 +08::01::2022 09:56:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:21|GET WELL SOON ACID ANON| +08::01::2022 09:56:22|See you in wotos| +08::01::2022 09:56:22|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:56:23|see ya in 2 years| +08::01::2022 09:56:23|bye bye ::a::| +08::01::2022 09:56:23|FINAL REMINDER THAT ANZU MEANS SEX| +08::01::2022 09:56:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:25|BROS OF CULTURE| +08::01::2022 09:56:25|DANMANKU IS GOING SO FAST NO ONE NOTICE I LUV ALL OF U FAGGOTS | +08::01::2022 09:56:26|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +08::01::2022 09:56:26|TWO YEARS FOR A FUCKING CLIFF HANGAR| +08::01::2022 09:56:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:27|ORIKO<3 +08::01::2022 09:56:27| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:30| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:30| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 09:56:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:32|I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES | +08::01::2022 09:56:32|DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +08::01::2022 09:56:33|fuck you shark team| +08::01::2022 09:56:33| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:34|hanks! +08::01::2022 09:56:34|thanks anons good watching with you all :)| +08::01::2022 09:56:34|I NOTICED ANON SUCKS DICKS| +08::01::2022 09:56:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:35| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:36|DVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCE| +08::01::2022 09:56:38|gg bros| +08::01::2022 09:56:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:39|FRIST TIME?| +08::01::2022 09:56:40|See you 11 hours| +08::01::2022 09:56:40| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:41|vcrdvcedvce +08::01::2022 09:56:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:41| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 09:56:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:42|I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE AND| +08::01::2022 09:56:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:43|Yukari is my wife| +08::01::2022 09:56:43|Can't wait to see the shark team be useless again!| +08::01::2022 09:56:44|I WANT TO FUCK HANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 09:56:45|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 09:56:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:56:45| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:45|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:56:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:47|what happens in 11 hours?| +08::01::2022 09:56:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:56:50|DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +08::01::2022 09:56:50|fuck you shark team| +08::01::2022 09:56:50| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:51|I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE AND| +08::01::2022 09:56:55|THANKS GALAX| +08::01::2022 09:56:55|SNW IN 11 HOURS| +08::01::2022 09:56:55| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:56:56|ANZU UOOOOOOOHHHHHHHHHHHHHHH| +08::01::2022 09:56:56| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 09:56:57|024 +08::01::2022 09:56:57|ug +08::01::2022 09:56:57|when is tank corner?| +08::01::2022 09:56:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:57:00| DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 09:57:00|IIII HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATEN IGGHERE I| +08::01::2022 09:57:06|ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE | +08::01::2022 09:57:07|SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW | +08::01::2022 09:57:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:57:10|anon that's racist| +08::01::2022 09:57:11|I WANT TO FUCK HANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +08::01::2022 09:57:11|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 09:57:11|Was was the total Danmaku count?| +08::01::2022 09:57:12|nzu +08::01::2022 09:57:16|I WILL FLUFF YUKARI'S HAIR| +08::01::2022 09:57:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 09:57:21|ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +08::01::2022 09:57:21|fuck me in the ass| +08::01::2022 09:57:22|TL NOTE: ANZU = TOTSUGEKI| +08::01::2022 09:57:22|GIVE ME ALL THE LOLISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +08::01::2022 09:57:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 09:57:27|TL NOTE: "Anzu" means "sex"| +08::01::2022 09:57:28|I WILL FLUFF YUKARIS PUBES| +08::01::2022 09:57:29|THANKS TL| +08::01::2022 09:57:30|Thanks for the stream!| +08::01::2022 09:57:33|THANK TL| +08::01::2022 09:57:33|DANKE TL| +08::01::2022 09:57:34|LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI| +08::01::2022 09:57:38|I'm GOING to fuck Anzu| +08::01::2022 09:57:38|Erika is my wife| +08::01::2022 09:57:40|I HATE THE ANITCHRIST| +08::01::2022 09:57:40|thanks for the stream| +08::01::2022 09:57:44|REMINDER THAT MOMO IS A DORK| +08::01::2022 09:57:45|Some of You Guys are Alright, Don't go to School Tomorrow| +08::01::2022 09:57:48|I LOVE YOU FUCKERS| +08::01::2022 09:57:48|See you at Woto friends, now I rest| +08::01::2022 09:57:50|i love garupan| +08::01::2022 09:57:57|REMINDER THAT MOMO MARRIED TO ME| +08::01::2022 09:58:03|7 +08::01::2022 09:58:03|it's over| +08::01::2022 09:58:04|bai bai!!!| +08::01::2022 09:58:05|i don't wanna go, not yet| +08::01::2022 09:58:12|where tank corner| +08::01::2022 09:58:14|yasumi +08::01::2022 09:58:15|SEX WITH HANA FOR THE REASON OF PROCREATION| +08::01::2022 09:58:16|LATER ANONS O7| +08::01::2022 09:58:17|GALAX play this https:::::youtube.com::watch?v=Z6Ek3h4HTRE| +08::01::2022 09:58:17|GOD I WISH I WERE MOMO'S HUSBAND| +08::01::2022 09:58:21|I CAN'T BELIEVE MIHO IS DED| +08::01::2022 09:58:23|Momo dum| +08::01::2022 09:58:30|Momo cum| +08::01::2022 09:58:39|7 +08::01::2022 09:58:42|is galax asleep| +08::01::2022 09:58:42|unny? +08::01::2022 09:58:47|7 +08::01::2022 09:58:50|THANKS FOR THE GUPPIES!| +08::01::2022 09:58:53|i +08::01::2022 09:58:57|:: +08::01::2022 09:59:02|ODKA! +08::01::2022 09:59:05|holy fuck that scared me| +08::01::2022 09:59:05|ODKAAAAAAAAAA +08::01::2022 09:59:06|fug :DDD| +08::01::2022 09:59:07|O FUG :DDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:59:08|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:59:08|OH SHIT| +08::01::2022 09:59:10|i refresh and what is this| +08::01::2022 09:59:12|LODKA +08::01::2022 09:59:12|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:59:13|ENIS +08::01::2022 09:59:14|ASED +08::01::2022 09:59:14|VODKA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 09:59:16|CUTE BOOT TAP| +08::01::2022 09:59:17|DDDDDDDDDDDD +08::01::2022 09:59:20|DDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:59:23| オッカ +08::01::2022 09:59:23|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:59:23|EIZOKUKLAANI +08::01::2022 09:59:26| オッカ +08::01::2022 09:59:26|I haven't heard this song in 11 years at least| +08::01::2022 09:59:27|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:59:29|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:59:29|ODLA +08::01::2022 09:59:31| オッカ +08::01::2022 09:59:32|my wife, rosehip| +08::01::2022 09:59:32|ASED +08::01::2022 09:59:34|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:59:38|DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +08::01::2022 09:59:41|DRINKING IS GOOD FOR YOU| +08::01::2022 09:59:43|I FEEL THE PERKEL WITHIN| +08::01::2022 09:59:43|:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD EBIN AFTER CREDITS| +08::01::2022 09:59:45|DDDDDDDDDDDDDDDDDD +08::01::2022 09:59:47| オッカ +08::01::2022 09:59:52|after party time?| +08::01::2022 09:59:55|FUG DIS >:D| +08::01::2022 10:00:03|ebin after party| +08::01::2022 10:00:04|was so confused what I was hearing and which tab it was from| +08::01::2022 10:00:09| オッカ +08::01::2022 10:00:13|fug just end already I need to sleep :DDDD| +08::01::2022 10:00:15| オッカ +08::01::2022 10:00:16|we need to end on What is Love, that is tradition| +08::01::2022 10:00:17|GREAT AFTER PARTY| +08::01::2022 10:00:20| オッカ +08::01::2022 10:00:44|AWARE +08::01::2022 10:00:46|does anyone know when the next stream will be in future?| +08::01::2022 10:00:59|this is the last stream| +08::01::2022 10:01:00|when part 4 is out| +08::01::2022 10:01:00|when the next Das Finale comes out| +08::01::2022 10:01:09|see you in 2 years| +08::01::2022 10:01:10|When Part 4 is released| +08::01::2022 10:01:11|the world will end before we get more gup content, this is the end| +08::01::2022 10:01:19|WODKA WODKA WODKA| +08::01::2022 10:01:22|dont die until 2 years| +08::01::2022 10:01:30|did we just watch part 3?| +08::01::2022 10:01:31|Next marathon will be 12 hours long| +08::01::2022 10:01:32|BI-ANNUAL GUP STREAMS FOREVER| +08::01::2022 10:01:32| オッカ          ウオッカ               ウオッカ           ウオッカ +08::01::2022 10:01:33|what can they do in fas finale 4 to utterly and ruthlessly ruin the series| +08::01::2022 10:01:40|yeah we just saw das final 3| +08::01::2022 10:01:45|kay +08::01::2022 10:01:53|DDDDDDDDDDDDDDD +08::01::2022 10:01:56|>GuP was in 2012 where did the time go| +08::01::2022 10:01:57|this is actually the teaser for df4| +08::01::2022 10:01:58|12. Then 13. Then anons die of sleep deprivation| +08::01::2022 10:01:58|DDDDD +08::01::2022 10:01:59|god I hate finns| +08::01::2022 10:02:00|>finnish >not black metal| +08::01::2022 10:02:00|EBIN :DDDDDDDDDDDDDDDDDDDDDDDD| +08::01::2022 10:02:06|mika boobs| +08::01::2022 10:02:13|ilka +08::01::2022 10:02:13|3 +08::01::2022 10:02:13|ino +08::01::2022 10:02:16|ino +08::01::2022 10:02:16|3 +08::01::2022 10:02:18|ino! +08::01::2022 10:02:21|ES +08::01::2022 10:02:23|EK +08::01::2022 10:02:26|FX +08::01::2022 10:02:28|FWEE FWEE FWEE| +08::01::2022 10:02:32|One of my Favorite WEBms| +08::01::2022 10:02:42|oot +08::01::2022 10:02:43|INO +08::01::2022 10:02:44|FWEE FWEE KNOCK KNOCK BANG BANG| +08::01::2022 10:03:00|God the soundporn...| +08::01::2022 10:03:00|AAAAAAAAAAAAAAAAAAAAA +08::01::2022 10:03:07|okay i take it back, this should be our official ending anthem| +08::01::2022 10:03:14|WHAT IS LOVE| +08::01::2022 10:03:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:16|WHAT IS LOVE| +08::01::2022 10:03:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:18|GET A SUPER CUB NOW| +08::01::2022 10:03:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:21|DON'T HURT ME| +08::01::2022 10:03:21|es +08::01::2022 10:03:22|WHAT IS DUCE| +08::01::2022 10:03:23|BABY DON'T HURT ME| +08::01::2022 10:03:23|BABY DON'T HURT ME| +08::01::2022 10:03:24|UCEDUCEDUCE +08::01::2022 10:03:24|UCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +08::01::2022 10:03:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:24|WHAT IS LOVE| +08::01::2022 10:03:25|WHAT IS LOVE| +08::01::2022 10:03:26|DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:03:27|ES +08::01::2022 10:03:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:31|DONT HURT ME| +08::01::2022 10:03:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 10:03:37|DVCE DVCE DVCE| +08::01::2022 10:03:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:39|DUCE | +08::01::2022 10:03:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:39|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:41|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:42|DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:42|DUCE | +08::01::2022 10:03:42|will we be getting a stream when the dub comes out?| +08::01::2022 10:03:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:46|DUCE | +08::01::2022 10:03:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:47|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:47|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:03:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:03:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:50|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:03:51|DUCE | +08::01::2022 10:03:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:55|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:03:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 10:03:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:03:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:00|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:04:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:04|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:04:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:06|BABY DONT HURT ME| +08::01::2022 10:04:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:09|UCE +08::01::2022 10:04:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:10|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:04:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:12|WHAT IS LOVE| +08::01::2022 10:04:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 10:04:16|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:04:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:16|WHAT IS LOVE| +08::01::2022 10:04:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:20|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:04:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:22|UCE +08::01::2022 10:04:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:24|oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 10:04:24|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:25|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:04:26|DUCE DUCE DUCE DUCE| +08::01::2022 10:04:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:27|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:27|UCE +08::01::2022 10:04:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:30|UCE +08::01::2022 10:04:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:32|DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +08::01::2022 10:04:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:35|oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo | +08::01::2022 10:04:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:35|DUCE | +08::01::2022 10:04:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:40|DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 10:04:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCED DVCE| +08::01::2022 10:04:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:43|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:49|DUCE | +08::01::2022 10:04:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:51|UCE +08::01::2022 10:04:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:53|DUCE DUCE DUCE DUCE DUCE| +08::01::2022 10:04:53|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:04:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:04:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:04:59|UCE +08::01::2022 10:04:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:05:01|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:03|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:05:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:11|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:12|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:12| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:05:13|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:14|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:05:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:16|NO MORE| +08::01::2022 10:05:16|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:18|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:22|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:23|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:23| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:05:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE CUDE CUDE CUCE| +08::01::2022 10:05:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:26|oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 10:05:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:05:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:31|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:34|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:35|oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 10:05:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +08::01::2022 10:05:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:05:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:42|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:42|UCE +08::01::2022 10:05:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:49|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:49|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:05:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:52|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:54|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:57|WHAT IS LOVE| +08::01::2022 10:05:57|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:58|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:05:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:05:59|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:06:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:04|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:09|FUCK I MISSED DF3| +08::01::2022 10:06:09|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:06:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:17|DUCE | +08::01::2022 10:06:19|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:06:20|DVCE | +08::01::2022 10:06:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:27|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:28|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:06:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:29|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:33|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:34|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:36|DVCE IS LOVE| +08::01::2022 10:06:36|YOU SICK BASTARDS I WAS FREEE, I WAS FREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +08::01::2022 10:06:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:37|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:06:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:40|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:42|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:43|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:45|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:47|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:48|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:06:48|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:51|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:51|oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 10:06:51|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:52|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:54| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:06:54|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:55|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:06:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:55| +08::01::2022 10:06:56|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:57|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:58|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:06:59|oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +08::01::2022 10:07:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:02|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:03|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:03| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +08::01::2022 10:07:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:05|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:05|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:06|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:07|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:08|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:07:08|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:10|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:10|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:11|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:12|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:13|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:14|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:15|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:16|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:17|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:17|UCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +08::01::2022 10:07:19|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:07:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:20|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:20|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:21|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:21|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:22|OUCHE +08::01::2022 10:07:23|OoOoOo +08::01::2022 10:07:23|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:24|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:25|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:25|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:26|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:26|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:28|OoOoOooOoOoOooOoOoOooOoOoOo +08::01::2022 10:07:28|DUCE DUCE DUCE | +08::01::2022 10:07:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:30|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:07:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:30|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:31|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:32|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:32|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:33|o:: o:: o:: o:: o::| +08::01::2022 10:07:33|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:34|OoOoOooOoOoOooOoOoOooOoOoOo +08::01::2022 10:07:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:35|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:35|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:36|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:36|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:37|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:38|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:38|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +08::01::2022 10:07:39| DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVC| +08::01::2022 10:07:39|WHAT IS LOVE| +08::01::2022 10:07:39|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:40|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:41|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:42|WHAT IS LOVE| +08::01::2022 10:07:44|DUCE IS LOVE| +08::01::2022 10:07:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:44|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:44|ALL MY FRIENDS ARE DEAD| +08::01::2022 10:07:45|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:46|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:46|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:47|WHAT IS LOVE| +08::01::2022 10:07:47| +08::01::2022 10:07:50|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:50|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:53|11 HOURS | +08::01::2022 10:07:55|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:07:56|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:07:59|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:08:00|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:08:00|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:08:07|and thus the final duces fade away| +08::01::2022 10:08:07|I WAS ALMOST FREE YOU FUCKS, BUT YOU HAD TO PULL ME BACK IN| +08::01::2022 10:08:09|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:08:11|VCE? +08::01::2022 10:08:14|>IT'S BEEN 1000 YEARS| +08::01::2022 10:08:15|DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +08::01::2022 10:08:16|IS IT OVER?| +08::01::2022 10:08:20|DUWANG TIME| +08::01::2022 10:08:20|GOOD NIGHT BOYS| +08::01::2022 10:08:22|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:08:24|am I free?| +08::01::2022 10:08:26|thanks 4 strim| +08::01::2022 10:08:27|go to sleep for 2 years then come back| +08::01::2022 10:08:28|WHERE TANK CORNER| +08::01::2022 10:08:29|we're... free...?| +08::01::2022 10:08:31|GOOD NIGHT AND GOOD DAY ::A::| +08::01::2022 10:08:32|Bean chariot?| +08::01::2022 10:08:33|3 +08::01::2022 10:08:35|vce +08::01::2022 10:08:37|THANKS FOR STREAM AND AFTER PARTY| +08::01::2022 10:08:38|reminder to stay alive anons, you have to see the end of GuP| +08::01::2022 10:08:39|REMINDER THAT YOU'RE STUCK HERE FOREVER| +08::01::2022 10:08:42|now that duce has been eliminated we will never see duce drive a tank ever again| +08::01::2022 10:08:43|IS IT FINALLY OVER????| +08::01::2022 10:08:48|Sleep for 2 years| +08::01::2022 10:08:48|ARE WE FREE??| +08::01::2022 10:08:53|ANTI DVCEFAGS NEED TO DIE| +08::01::2022 10:08:54|You cannot die until DF is finished| +08::01::2022 10:08:54|YASUMI +08::01::2022 10:08:56|Sleep forever| +08::01::2022 10:08:57|IS THIS HELL OVER????????| +08::01::2022 10:09:01|oh +08::01::2022 10:09:05|You cannot die until Ribbon Warrior is adapted| +08::01::2022 10:09:07|YOTSUBA ANIME WHEN????| +08::01::2022 10:09:07|nons... +08::01::2022 10:09:09|Erika <3| +08::01::2022 10:09:12|....Totsugeki? +08::01::2022 10:09:13|mako is forever| +08::01::2022 10:09:13|save the whales| +08::01::2022 10:09:16|see you at DF4| +08::01::2022 10:09:17|>YOTSUBA ANIME| +08::01::2022 10:09:17|YOTSUBA ANIME NEVER| +08::01::2022 10:09:22|Sayonara totsugeki!| +08::01::2022 10:09:27|AZUMA DOESNT WANT IT| +08::01::2022 10:09:32|AY +08::01::2022 10:09:33|>ITS TIME TO WAIT ANOTHER 2 YEARS| +08::01::2022 10:09:37|SAY IT AIN'T SO| +08::01::2022 10:09:41|See you in 2 years| +08::01::2022 10:09:48|SEE YOU GUYS!| +08::01::2022 10:09:49|later gup bros| +08::01::2022 10:09:51|Don't kill yourselves until that| +08::01::2022 10:09:53|buh bye| +08::01::2022 10:09:56|IGGER +08::01::2022 10:09:57|See you guys later in the threads is was fun| +08::01::2022 10:10:01|y::a:: +08::01::2022 10:10:02|i hope we may meet again here in two years ::a::| +08::01::2022 10:10:03|ased +08::01::2022 10:10:04|JUST END ME| +08::01::2022 10:10:08|UGGBEES +08::01::2022 10:10:08|Remember, you're not allowed to die until GuP is over| +08::01::2022 10:10:10|I'll do my best to live for the series| +08::01::2022 10:10:17|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:10:22|ayonara +08::01::2022 10:10:28|I HATE TEH ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 10:10:31|LAST FOR DVCE| +08::01::2022 10:10:40|LAST FOR SEX WITH MAKO| +08::01::2022 10:10:44|last for ARISU| +08::01::2022 10:10:49|) +08::01::2022 10:10:51|LAST FOR DUCE| +08::01::2022 10:10:53|see you tomorrow at woto stream| +08::01::2022 10:10:55|Last for slags beating the dumb dog| +08::01::2022 10:10:55|LAST FOR LEWDING ALL THE GUPPIES UNDER 5FT| +08::01::2022 10:10:59|Last for I love the onion| +08::01::2022 10:11:01|gonna have sex with miho | +08::01::2022 10:11:01|SAVE THE WHALES!| +08::01::2022 10:11:14|How much do you love onion| +08::01::2022 10:11:15|LAST FOR SAORI PLEASURING HORSE DICK| +08::01::2022 10:11:22|I HATE THE ONION| +08::01::2022 10:11:26|( +08::01::2022 10:11:26|KEEP YOUR POWDER DRY| +08::01::2022 10:11:29|I love the onion| +08::01::2022 10:11:30|last for my wife anzu| +08::01::2022 10:11:38|anuz, heh| +08::01::2022 10:11:38|IHO! +08::01::2022 10:11:45|see you in 2024| +08::01::2022 10:11:45|WE HAVE YOU SURROUNDED COME EAT YOUR ONIONS | +08::01::2022 10:11:48|maho is too sexy| +08::01::2022 10:11:56|you misspelled mako| +08::01::2022 10:11:59|I HATE THE FROGS I HATE THE FROGS I HATE THE FROGSI HATE THE FROGS| +08::01::2022 10:12:14|I HATE THE ANTICHRIST I HATE THE ANTICHRISH I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +08::01::2022 10:12:36|ONIONS HAVE LAYERS | +08::01::2022 10:12:39|good night friends| +08::01::2022 10:12:40|see you in 2 years o7| +08::01::2022 10:12:45|o7 | +08::01::2022 10:12:48|ataneeeeeeeeeeeeeeeee +08::01::2022 10:12:52|REMEMBER TO PRACTICE YOUR SENSHA DOU| +08::01::2022 10:13:09|anmaku +08::01::2022 10:13:35|this is place is so empty no one will see me claim katyusha as my lawfully wedded wife| +08::01::2022 10:13:45|I saw that| +08::01::2022 10:13:50|katuysha is my lawfully wedded onahole| +08::01::2022 10:13:53|she's my wife already, sorry| +08::01::2022 10:13:54|are we dead yet?| +08::01::2022 10:14:12|UOOOOOH KATYUSHA TUMMY ToT| +08::01::2022 10:14:51|so long, and thanks for all the fish| +08::01::2022 10:15:10|how many autists remain?| +08::01::2022 10:15:12|last for dvce| +08::01::2022 10:15:25|last for ARISU| +08::01::2022 10:15:36|last for (you)| +08::01::2022 10:17:50|i'm going to bed if no one replies for the next minute| +08::01::2022 10:17:58|stay up baka| +08::01::2022 10:18:01|go to bed| +08::01::2022 10:18:01|hah now you have to stay up| +08::01::2022 10:18:03|HIT +08::01::2022 10:18:11|oyasumi faggots| +08::01::2022 10:18:13|loof +08::01::2022 10:18:21|yasumako +08::01::2022 10:18:26|hayou +08::01::2022 10:18:30|ma si jolie femme| +08::01::2022 10:18:37|frogs out| +08::01::2022 10:18:48|BUMPY SEX WITH MAKO| +08::01::2022 10:21:41|if you can see this you should be asleep| +08::01::2022 10:21:48|AH +08::01::2022 10:21:52|I'll never sleep again| +08::01::2022 10:22:38|Sleep is a lie| +08::01::2022 10:22:46|I WANT TO INSEMINATE HANA WITH MY NECTOR| +08::01::2022 10:22:52|well if sleep was an upright that would be weird, haha| +08::01::2022 10:23:22|Mako sleeps so you don't have to| +08::01::2022 10:24:53|NEVER FORGETTI DVCE| +08::01::2022 10:25:01|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 10:25:18|VCE +08::01::2022 10:25:25|enis +08::01::2022 10:25:26|VCE +08::01::2022 10:25:33|VCE +08::01::2022 10:25:53|ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU | +08::01::2022 10:26:04|is my wife| +08::01::2022 10:26:58|might be your wife if reality allowed a being as perfect as arisu to exist| +08::01::2022 10:28:01|WHAT THE FUCK WHERE AM I? I FEEL ASLEEP AND JUST WOKE UP TO A BLACK SCREEN| +08::01::2022 10:28:13|it's starting in 5min you're just in time| +08::01::2022 10:28:27|-honto? +08::01::2022 10:28:34|uso desu| +08::01::2022 10:30:00|AREKAAAAAAAAAAAAAAAAAAAAAAA +08::01::2022 10:30:05|ani +08::01::2022 10:32:43|chat is so dead nobody will know I desperately need to have sex with reizei mako| +08::01::2022 10:33:10|just so you know I saw that| +08::01::2022 10:33:20|no you didn't| +08::01::2022 10:33:25|yes I did| +08::01::2022 10:37:10|UCE +08::01::2022 10:37:16|Okay this time for real I'll go to bed, time to lucid dream about Mako.| +08::01::2022 10:38:12|whatever that was in blue, please summarize, I had my contacts out| +08::01::2022 10:38:45|basically having sex with mako in my dreams| +08::01::2022 10:40:20|why are we still here, just to suffer?| +08::01::2022 10:41:02|there's no other recourse left to us| +08::01::2022 10:43:01|where'd the loading indicator go| +08::01::2022 10:44:00|somehow 11 hours wasn't enough| +08::01::2022 10:44:32|aooo!!! +08::01::2022 10:46:20|no length of time could be enough, you guys are the best| +08::01::2022 10:51:48|last for mako| +08::01::2022 10:53:05|last after my last last for arisu| +08::01::2022 10:55:24|sex with miho| +08::01::2022 10:55:31|sex with mako| +08::01::2022 10:55:38|sex with Yukari| +08::01::2022 10:55:45|Sex with arisu| +08::01::2022 10:55:51|sex with hana| +08::01::2022 10:55:58|sex with nishi| +08::01::2022 10:56:04|sex with yuzu| +08::01::2022 10:56:11|sex with sae-chan| +08::01::2022 10:56:18|sex with nekonya| +08::01::2022 10:56:24|sex with chiyo| +08::01::2022 10:56:27|sex with mako-chan| +08::01::2022 10:56:30|sex with sodoko| +08::01::2022 10:56:36|sex with kondou| +08::01::2022 10:56:40|sex with arisu| +08::01::2022 10:56:42|sex with hoshino| +08::01::2022 10:56:48|sex with dvce| +08::01::2022 10:56:54|sex with pepperoni| +08::01::2022 10:57:01|sex with katyusha| +08::01::2022 10:57:08|sex with mika| +08::01::2022 10:57:10|sex with anzu| +08::01::2022 10:57:14|and lastly| +08::01::2022 10:57:20|watching andou and oshida sex| +08::01::2022 11:06:48|Sex with Arisu| +08::01::2022 11:07:10|Threesome sex with Arisu and Mako| +08::01::2022 11:09:15|now i'm all alone| +08::01::2022 11:09:40|Sex with Arisu and Mako and Katyusha and Anzu and Sodoko| +08::01::2022 11:14:09|it's over| +08::01::2022 11:18:00|is it over?| +08::01::2022 11:18:22|hem +08::01::2022 11:18:28|DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +08::01::2022 11:18:37|that is all| +08::01::2022 12:14:09|anmaku +08::01::2022 12:36:25|miss u guys| +08::01::2022 12:51:32|ANMAKU +08::01::2022 13:05:26|DAAAAANMAKU +08::01::2022 13:33:00|aaaaaa diff --git a/src/csv/main b/src/csv/main new file mode 100755 index 0000000..15c3f14 Binary files /dev/null and b/src/csv/main differ diff --git a/src/danmaku/danmaku.cpp b/src/danmaku/danmaku.cpp new file mode 100644 index 0000000..1902aea --- /dev/null +++ b/src/danmaku/danmaku.cpp @@ -0,0 +1,151 @@ +#include "danmaku.h" + +/// This is so fucking bad, just store everything and redraw with a translation in the shader holy shit +float RenderText(Shader s, std::string text, float x, float y, float scale, glm::vec3 color, uint &VAO, uint &VBO, std::map& Characters, float window_width) +{ + + // activate corresponding render state + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + s.use(); + + glUniform3f(glGetUniformLocation(s.ID, "textColor"), color.x, color.y, color.z); + glActiveTexture(GL_TEXTURE0); + glBindVertexArray(VAO); + + Character ch; + + float xpos; + float ypos; + float w; + float h; + + // iterate through all characters + std::string::const_iterator c; + for (c = text.begin(); c != text.end(); c++) + { + ch = Characters[*c]; + + xpos = x + ch.Bearing.x * scale; + ypos = y - (ch.Size.y - ch.Bearing.y) * scale; + + w = ch.Size.x * scale; + h = ch.Size.y * scale; + // update VBO for each character + float vertices[6][4] = { + { xpos, ypos + h, 0.0f, 0.0f }, + { xpos, ypos, 0.0f, 1.0f }, + { xpos + w, ypos, 1.0f, 1.0f }, + + { xpos, ypos + h, 0.0f, 0.0f }, + { xpos + w, ypos, 1.0f, 1.0f }, + { xpos + w, ypos + h, 1.0f, 0.0f } + }; + // render glyph texture over quad + glBindTexture(GL_TEXTURE_2D, ch.TextureID); + // update content of VBO memory + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); + glBindBuffer(GL_ARRAY_BUFFER, 0); + // render quad + glDrawArrays(GL_TRIANGLES, 0, 6); + // now advance cursors for next glyph (note that advance is number of 1/64 pixels) + x += (ch.Advance >> 6) * scale; // bitshift by 6 to get value in pixels (2^6 = 64) + } + glBindVertexArray(0); + glBindTexture(GL_TEXTURE_2D, 0); + + return xpos; +} + + +//TODO: Status <-> + +/* + Sets nextRow to the index of the next free danmaku row and returns 1 if one is available, returns 0 otherwise. + */ +int getNextDanmakuRow(uint *ph_danmakuRows, int length, uint *nextRow) { + for(int row = 0; row < length; row++) { + if( (ph_danmakuRows)[row] ){ + *nextRow = row; + return 1; + } + } + return 0; +} + +/* + Flips the status of the danmaku row. +*/ +int updateDanmakuRow(uint *ph_danmakuRows, uint row) { + ph_danmakuRows[row] = !ph_danmakuRows[row]; + return 0; +} + +/* + Updates danmaku array according to the delta between last frame and current frame. +*/ +//int updateDanmakus(Render *r){ +// +// // Amount of pixels to translate the danmakus by +// float deltaPix = DANMAKU_SPEED*delta; +// // Last glyph x-position (last pixel on the string) +// float lastPix = 0.0f; +// +// // Keep track of danmaku index +// uint danmakuIndex = 0; +// +// for(Danmaku &danmaku : danmakus) { +// if(danmaku.isNew) { +// // Try to assign the new danmaku's row to a free slot +// if(getNextDanmakuRow(ph_danmakuRows, nb_danmakuRows, &(danmaku.row))){ +// // Compute the height for that row +// danmaku.ypos = (r->h - DANMAKU_MARGIN_TOP) - +// (danmaku.row + 1) * (DANMAKU_PADDING_V + GLYPH_SIZE); +// danmaku.xpos = r->w; +// // Set the slot to unavailable +// updateDanmakuRow(ph_danmakuRows, danmaku.row); +// danmaku.tailCheck = 0; +// } +// danmaku.isNew = 0; +// } +// else { +// // Translate danmaku +// danmaku.xpos -= deltaPix; +// } +// +// // Draw the danmaku and get tail position +// lastPix = RenderText(r, danmaku.text, danmaku.xpos, danmaku.ypos, 1.0f, glm::vec3(0.0, 0.26f, 0.0f)); +// if(lastPix + DANMAKU_PADDING_H < 0) { +// danmakus.erase(danmakus.begin() + danmakuIndex); +// } +// +// // Check if the tail of the danmaku is free (only check once) +// if(!danmaku.tailCheck && (r->w > lastPix + (float)DANMAKU_PADDING_H)) { +// // Free the row slot +// updateDanmakuRow(ph_danmakuRows, danmaku.row); +// danmaku.tailCheck = 1; +// } +// } +// danmakuIndex++; +// } +// return 1; +//} + + +//OverlayHandler() { +// init(); +//} +// +//int OverlayHandler::init() { +// glGenVertexArrays(1, &VAO); +// glGenBuffers(1, &VBO); +// glBindVertexArray(VAO); +// glBindBuffer(GL_ARRAY_BUFFER, VBO); +// glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 6 * 4, NULL, GL_DYNAMIC_DRAW); +// glEnableVertexAttribArray(0); +// glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), 0); +// glBindBuffer(GL_ARRAY_BUFFER, 0); +// glBindVertexArray(0); +// +//} diff --git a/src/danmaku/danmaku.h b/src/danmaku/danmaku.h new file mode 100644 index 0000000..66b161c --- /dev/null +++ b/src/danmaku/danmaku.h @@ -0,0 +1,65 @@ +#ifndef _DANMAKU_H_ +#define _DANMAKU_H_ + +#include +#include +#include +#include "stdlib.h" +#include "stdio.h" + +#include +#include FT_FREETYPE_H + +#define GLYPH_SIZE 36 +#define DANMAKU_MARGIN_TOP 50 +#define DANMAKU_MARGIN_BOT 50 +#define DANMAKU_PADDING_H 200 +#define DANMAKU_PADDING_V 20 +#define DANMAKU_SPEED_V 200.0f + +// Glyphs +typedef struct Character { + unsigned int TextureID; // ID handle of the glyph texture + glm::ivec2 Size; // Size of glyph + glm::ivec2 Bearing; // Offset from baseline to left/top of glyph + long int Advance; // Offset to advance to next glyph +} Character; + +// Danmaku +typedef struct Danmaku { + std::string text; + uint isActive; + float xpos; + float ypos; + uint isNew; + uint row; + uint tailCheck; +} Danmaku; + +//class OverlayHandler() { +// public: +// OverlayHandler(); +// +// float RenderText(Shader, std::string, float, float, float, glm::vec3, uint &, uint &, std::map&); +// +// int init(); +// +// private: +// unsigned int VAO, VBO; +// +// void makeBitmaps(std::map &); +// +// Shader *glyphShader = new Shader("shaders/glyph_vs.glsl", "shaders/glyph_fs.glsl"); +// +// +//} + + + + + +int getNextDanmakuRow(uint *, int, uint* ); +int updateDanmakuRow(uint *, uint); + +int updateDanmakus(Danmaku *, float); +#endif diff --git "a/src/getChat/\\" "b/src/getChat/\\" new file mode 100644 index 0000000..e4affe7 --- /dev/null +++ "b/src/getChat/\\" @@ -0,0 +1,103 @@ +import json +import queue +import requests +import websocket + +from helper import * + +import sys +import socket +import fcntl, os + +SEND_BUFFER_SIZE = 2048 +connected = 0 + +try: import thread +except ImportError: import _thread as thread + +class Socket_: + def __init__(self, queue = None): + self.URL = None + self.sid = None + self.sidWSS = None + self.parser = Parser().parser + self.queue = queue + self.ws = None + + self.sock = None + + # Start the connection + self.handshake() + + def handshake(self): + # First, establish a polling-transport HTTP connection + resp_1 = requests.get(POLLING_URL_1, headers = HEADER) + print('Resp 1: ', resp_1.text) + # Ignore the bin-packed preliminaries and extract the session ID + # WOTOS: self.sid = json.loads(str(resp_1.content)[3:-1])['sid'] + self.sid = json.loads(str(resp_1.content)[3:-1])['sid'] + # Second polling with POST, response should be 'ok' + resp_2 = requests.post(POLLING_URL_2.format(self.sid), headers = HEADER, data = b'40') + print('Resp 2: ', resp_2.text) + # Third polling + resp_3 = requests.get(POLLING_URL_3.format(self.sid), headers = HEADER) + print('Resp 3: ', resp_3.text) + # WOTOS: self.sid = json.loads(str(resp_1.content)[3:-1])['sid'] + index = str(resp_3.content).find('\\x1e42[') + substr = str(resp_3.content)[4:index] + self.sidWSS = json.loads(substr)['sid'] + # Fourth polling with POST + resp_4 = requests.post(POLLING_URL_4.format(self.sid), headers = HEADER, data = b'42["joinChannel",{"name":"testam"}]') + print('Resp 4: ', resp_4.text) + # Fourth polling with GET + resp_5 = requests.get(POLLING_URL_5.format(self.sid), headers = HEADER) + print('Resp 5: ', resp_5.text) + + + # WSS url + self.URL = WSS_URL.format(self.sid) + print(self.URL) + + def on_open(self, ws): + print('### Socket open ###') + ws.send("2probe") + def on_close(self, ws): + print("### Socket closed ###") + self.sock.close() + def on_error(self, ws, error): + print('\nSocket error :\n{}\n'.format(error)) + + def on_message(self, ws, message): + if message == '2': ws.send('3') + elif message == '3probe': ws.send('5') + elif message[:2] == '42': + j = message[2:].replace("'", '"') + parsed = json.loads(j) + print("received: ", message) + reason = parsed[0] + if reason == 'chatMsg': + data = bytes(parsed[1]['msg'], "utf-8") + data += bytes(SEND_BUFFER_SIZE-len(data)) + self.sock.send(data) + else: pass + + def listenForever(self): + # SOCKET + server_ip = "localhost" + server_port = 10000 + self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.sock.connect((server_ip, server_port)) + fcntl.fcntl(self.sock, fcntl.F_SETFL, os.O_NONBLOCK) + + try: + #websocket.enableTrace(True) + self.ws = websocket.WebSocketApp(self.URL, + on_open = self.on_open, + on_message = self.on_message, + on_error = self.on_error, + on_close = self.on_close, + header = HEADER_WSS + ) + self.ws.run_forever(ping_interval = 25, ping_timeout = 5 ) + except Exception as e: + print("Socket::ListenForever: Exception {}", format(e)) diff --git a/src/getChat/__pycache__/helper.cpython-310.pyc b/src/getChat/__pycache__/helper.cpython-310.pyc new file mode 100644 index 0000000..34fcc19 Binary files /dev/null and b/src/getChat/__pycache__/helper.cpython-310.pyc differ diff --git a/src/getChat/__pycache__/socketHelper.cpython-310.pyc b/src/getChat/__pycache__/socketHelper.cpython-310.pyc new file mode 100644 index 0000000..ae6d183 Binary files /dev/null and b/src/getChat/__pycache__/socketHelper.cpython-310.pyc differ diff --git a/src/getChat/__pycache__/wsInterface.cpython-310.pyc b/src/getChat/__pycache__/wsInterface.cpython-310.pyc new file mode 100644 index 0000000..e730538 Binary files /dev/null and b/src/getChat/__pycache__/wsInterface.cpython-310.pyc differ diff --git a/src/getChat/helper.py b/src/getChat/helper.py new file mode 100644 index 0000000..dc5341a --- /dev/null +++ b/src/getChat/helper.py @@ -0,0 +1,54 @@ +POLLING_URL_1 = 'https://bigapple.cytu.be:8443/socket.io/?EIO=4&transport=polling&t=OLd_JZ8' +POLLING_URL_2 = 'https://bigapple.cytu.be:8443/socket.io/?EIO=4&transport=polling&t=OLd_JZ8-&sid={}' +POLLING_URL_3 = 'https://bigapple.cytu.be:8443/socket.io/?EIO=4&transport=polling&t=OLd_JZY_&sid={}' +POLLING_URL_4 = 'https://bigapple.cytu.be:8443/socket.io/?EIO=4&transport=polling&t=OLd_JZ8&sid={}' +POLLING_URL_5 = 'https://bigapple.cytu.be:8443/socket.io/?EIO=4&transport=polling&t=OLd_JZ8&sid={}' + +HEADER = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'en-US,en;q=0.9', + 'Connection': 'keep-alive', + 'Sec-Fetch-Dest': 'empty', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Site': 'same-origin', + 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36' + } +HEADER_WSS = { +'Host': 'bigapple.cytu.be:8443', +'Connection': 'Upgrade', +'Pragma': 'no-cache', +'Cache-Control': 'no-cache', +'Upgrade': 'websocket', +'Origin': 'https://cytu.be', +'Sec-WebSocket-Version': '13', +'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36', +'Accept-Encoding': 'gzip, deflate, br', +'Accept-Language': 'en-US,en;q=0.9', +'Sec-GPC': '1', +'Sec-WebSocket-Key': '7wfF6vVBt2fOUj5JRhVoPA==', +'Sec-WebSocket-Extensions': 'permessage-deflate; client_max_window_bits'} + +WSS_URL = 'wss://bigapple.cytu.be:8443/socket.io/?EIO=4&transport=websocket&sid={}' + +class Parser: + ''' + Makes socket messages into a python objects if possible and returns a representation (dict, df, ts, ...) thereof. + ''' + def parser(self, message): + #def pyify(obj): + # # Check if obj is already a pyobj + # if not type(obj) in [str]: return obj + # try: return eval(obj) + # except Exception as e: print('Parser::parser: Error {}'.format(e)) + + ## Check for bools + #pretty = message.replace('true', 'True') + #pretty = pretty.replace('false', 'False') + #pretty = pretty.replace('null', 'None') + + # Send the raw payload to a specific sub-parser + try: + res = getattr(self, message_type)(raw_payload) + return message_type, res + except Exception as e: print('Parser::parser: Error while sending a message of type "{}" to sub-parser:\n{}'.format(message_type), e) diff --git a/src/getChat/replay/data/danmaku.csv b/src/getChat/replay/data/danmaku.csv new file mode 100644 index 0000000..98242c6 --- /dev/null +++ b/src/getChat/replay/data/danmaku.csv @@ -0,0 +1,33391 @@ +|08/01/2022 01:44:14| |Premature Duce| +|08/01/2022 01:44:15| |I'll blow your Duce, idiot| +|08/01/2022 01:44:15| |ITS ANZIO YEAR, BELIEVE ME| +|08/01/2022 01:44:16| |SHUT THE FUCK UP WE ARE NEAR THE OVA| +|08/01/2022 01:44:16| |can you guys talk slower so I can read the subs thanks| +|08/01/2022 01:44:19| |PRONTE A OSARE PRONTE A ADIIRE| +|08/01/2022 01:44:19| |just had some taco bell| +|08/01/2022 01:44:20| |Anzio absolute best| +|08/01/2022 01:44:22| |ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW | +|08/01/2022 01:44:23| |Choby smells of shit| +|08/01/2022 01:44:24| ;_; +|08/01/2022 01:44:27| |duce is my wife!| +|08/01/2022 01:44:28| |>cant read subs and chat at the same time| +|08/01/2022 01:44:28| |Edging to DVCE! Blowing my DVCE to DVCE!| +|08/01/2022 01:44:29| |Don't blwo your Duce| +|08/01/2022 01:44:30| |Read faster faggot| +|08/01/2022 01:44:31| |GIOVINEZZZA GIOVINEZZA| +|08/01/2022 01:44:32| BAKARONI +|08/01/2022 01:44:32| SAWREE +|08/01/2022 01:44:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:44:36| |ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET | +|08/01/2022 01:44:38| ==___________________________^^x +|08/01/2022 01:44:39| |PRIMAVERA DI BELEZZA| +|08/01/2022 01:44:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:44:41| miiporin +|08/01/2022 01:44:42| MIPORIN! +|08/01/2022 01:44:42| |Just learn Japanese so you won't need subs| +|08/01/2022 01:44:43| Miporin +|08/01/2022 01:44:43| |instead of the whole series can we just watch the anzio episode on repeat?| +|08/01/2022 01:44:44| suya~ +|08/01/2022 01:44:44| |>Not knowing moonrunes and language| +|08/01/2022 01:44:44| |THIS IS OUR YEAR ANZIOBROS| +|08/01/2022 01:44:49| |NEL FASCISMO E LA SALVEZZA| +|08/01/2022 01:44:49| |big seal| +|08/01/2022 01:44:49| |cute fluff| +|08/01/2022 01:44:53| |Ill give her my smoothbore| +|08/01/2022 01:44:55| |DELLA NOSTRA LIBERTA| +|08/01/2022 01:44:56| |Yukari is the Beautiful Dreamer| +|08/01/2022 01:45:00| |can we just listen to Anzion's theme for 20 hours straight?| +|08/01/2022 01:45:01| |Back from peeing| +|08/01/2022 01:45:02| |>LEOPARD 2 >MOST OF THEM ARE NON-OPERATIONAL| +|08/01/2022 01:45:02| |Boat trips are kino t. Greek| +|08/01/2022 01:45:03| |Did we just have a genuine moment?| +|08/01/2022 01:45:04| |>i can hear the moonerunes| +|08/01/2022 01:45:04| |Didn't anzio already lose to the slag?| +|08/01/2022 01:45:08| |this time anzio will win, I feel it in my lemon| +|08/01/2022 01:45:10| FUNICULA +|08/01/2022 01:45:14| |funiculi funicula| +|08/01/2022 01:45:14| FUNICULI +|08/01/2022 01:45:16| |I still haven't watched the third part of Das Finale| +|08/01/2022 01:45:17| """accident""" +|08/01/2022 01:45:17| ;_; +|08/01/2022 01:45:18| |ombattenti di terra, di mare e dell’aria! Camicie nere della rivoluzione e delle legioni! | +|08/01/2022 01:45:19| |ANZIO'S YEAR| +|08/01/2022 01:45:19| ;-; +|08/01/2022 01:45:19| ;_; +|08/01/2022 01:45:20| seal +|08/01/2022 01:45:20| |this shit so sad man| +|08/01/2022 01:45:20| |o/ for DVCE| +|08/01/2022 01:45:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:45:21| SMEEF +|08/01/2022 01:45:22| FUNICULI +|08/01/2022 01:45:22| ;_; +|08/01/2022 01:45:24| BACKSTORY +|08/01/2022 01:45:26| ah... +|08/01/2022 01:45:26| |Remember Granny died in the doujin| +|08/01/2022 01:45:26| FUNICULA +|08/01/2022 01:45:27| |Uomini e donne d’Italia, dell’impero e del regno d’Albania! Ascoltate!| +|08/01/2022 01:45:28| |car accident| +|08/01/2022 01:45:29| o/ +|08/01/2022 01:45:29| |DO NOT WATCH THE 3RD PART OF DAS FINALE HERE IT IS NOT A GOOD IDEA| +|08/01/2022 01:45:31| |NCOPPA JAMME JA| +|08/01/2022 01:45:31| |ASSHOLE MOM| +|08/01/2022 01:45:31| |SHIHO SHIHO SHIHO SHIHO| +|08/01/2022 01:45:32| fuck... +|08/01/2022 01:45:33| |get disowned bitch| +|08/01/2022 01:45:34| |i would smash this milf| +|08/01/2022 01:45:35| MOMMY +|08/01/2022 01:45:35| |Anzio will win!| +|08/01/2022 01:45:36| |FUNICULI FUNICULA| +|08/01/2022 01:45:38| |Mother of the Decade| +|08/01/2022 01:45:39| |JUST GOT BACK DID I MISS DUCE?| +|08/01/2022 01:45:39| MOMMY +|08/01/2022 01:45:40| |WORST MOM BIGGEST SLUT WORST MOM BIGGEST SLUT| +|08/01/2022 01:45:40| |PIZZA PASTA SHITTING IN A BOX| +|08/01/2022 01:45:40| |FUCK YOU MOM I'LL SENSHADO HOW I WANT| +|08/01/2022 01:45:44| |Momo is best girl, Shiho second!| +|08/01/2022 01:45:45| |D I S O W N E D| +|08/01/2022 01:45:46| |Un’ora segnata dal destino batte nel cielo della nostra patria. (Acclamazioni vivissime). | +|08/01/2022 01:45:46| |Shiho, my wife| +|08/01/2022 01:45:47| |That the Chi Ha Tan way I thought| +|08/01/2022 01:45:48| |BITCH SHIHO| +|08/01/2022 01:45:49| |SHIT MUM| +|08/01/2022 01:45:50| |>DO NOT WATCH THE PART 3 OF DF HERE IT'S A BAD IDEA // SHUT THE FUCK UP| +|08/01/2022 01:45:51| |LET THEM DIE| +|08/01/2022 01:45:52| |DUCE STILL INCOMING| +|08/01/2022 01:45:53| |UGLY BASTARD FUCKING MOTHER| +|08/01/2022 01:45:53| |SHIHO SUCKS ALL THE COCKS| +|08/01/2022 01:45:53| |LARP ALERT LARP ALERT| +|08/01/2022 01:45:53| |>senshadou gestapo| +|08/01/2022 01:45:53| |[spoiler]i dont like duce because anons keep on spamming it[/spoiler]| +|08/01/2022 01:45:55| |L’ora delle decisioni irrevocabili. | +|08/01/2022 01:45:56| |shiho my beloved| +|08/01/2022 01:46:01| |by me| +|08/01/2022 01:46:01| |I WANT TO GIVE MIHO A YOUNGER SISTER| +|08/01/2022 01:46:02| |Should have let Koume drown, bitch| +|08/01/2022 01:46:03| PTSD +|08/01/2022 01:46:03| |BAUER AND POMF WERE SACRIFICES| +|08/01/2022 01:46:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:46:06| |La dichiarazione di guerra è già stata consegnata (acclamazioni, grida altissime di “Guerra! Guerra!”) agli ambasciatori di Gran Bretagna e | +|08/01/2022 01:46:08| |miipor eeeeeen| +|08/01/2022 01:46:08| shitho +|08/01/2022 01:46:08| |what happened after saunders match?| +|08/01/2022 01:46:10| ZZZZZZZZ +|08/01/2022 01:46:10| ZZZZZZZZZZZZZZZZZZZZZZZ +|08/01/2022 01:46:10| OHIO +|08/01/2022 01:46:11| |SHIHO+MIHO FUTAXFUTA DOUJINS| +|08/01/2022 01:46:12| zzzzzzzzzzzzzzzzzz +|08/01/2022 01:46:13| |DU CE DU CE DU CE DU CE DU CE DU CE DU CE| +|08/01/2022 01:46:14| |I like Duce because UWAAAAH KOCCHI MITERUZOO is cute| +|08/01/2022 01:46:15| |mako sleep| +|08/01/2022 01:46:18| |It's 2 AM, I need some Miporiun| +|08/01/2022 01:46:18| |Scendiamo in campo contro le democrazie plutocratiche e reazionarie dell’Occidente che, in ogni tempo, hanno ostacolato la marcia, e spesso | +|08/01/2022 01:46:19| |miho just happy she doesn't go to a larp school| +|08/01/2022 01:46:19| |But where's Momo????| +|08/01/2022 01:46:20| |SO DOO O KOOO| +|08/01/2022 01:46:21| |>saori can't carry 1/10th of her body weight| +|08/01/2022 01:46:21| SODOKO +|08/01/2022 01:46:22| |ALL NIGHT LONG| +|08/01/2022 01:46:22| SODOKOOO +|08/01/2022 01:46:23| SODOKO +|08/01/2022 01:46:23| |ohhhhhh sodoko| +|08/01/2022 01:46:24| SODOKO +|08/01/2022 01:46:26| SODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOO +|08/01/2022 01:46:27| |You will never molest Sodoko| +|08/01/2022 01:46:27| |Molesting Sodoko!| +|08/01/2022 01:46:28| SUEGOY +|08/01/2022 01:46:29| |nice skinship!| +|08/01/2022 01:46:29| kappa +|08/01/2022 01:46:29| SODOKOOO +|08/01/2022 01:46:30| |Yuri rape time| +|08/01/2022 01:46:31| |yuri bait| +|08/01/2022 01:46:31| |Molest the 'Doko| +|08/01/2022 01:46:32| |sodoko feet| +|08/01/2022 01:46:33| SEXDOKO +|08/01/2022 01:46:33| SODOKUUOOOOOOOOOOHHH +|08/01/2022 01:46:34| |thats gonna be me tomorrow morning| +|08/01/2022 01:46:34| |Alcuni lustri della storia più recente si possono riassumere in queste frasi: promesse, minacce, ricatti e, alla fine, quale coronamento del| +|08/01/2022 01:46:34| lewd +|08/01/2022 01:46:36| |SENSHA BALOON| +|08/01/2022 01:46:37| sooooooodoko +|08/01/2022 01:46:38| SODOMYKO +|08/01/2022 01:46:40| |PANZER BALLOON| +|08/01/2022 01:46:43| sooodoooko +|08/01/2022 01:46:44| |La nostra coscienza è assolutamente tranquilla. (Applausi)| +|08/01/2022 01:46:44| |Sodomizing Sodoko's hole| +|08/01/2022 01:46:47| |Panter 4| +|08/01/2022 01:46:49| Sudoku? +|08/01/2022 01:46:51| |HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHI| +|08/01/2022 01:46:51| GIOVINEZZA +|08/01/2022 01:46:52| no +|08/01/2022 01:46:54| Yes +|08/01/2022 01:46:54| |HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? | +|08/01/2022 01:46:54| |TOILET SODOKO| +|08/01/2022 01:46:56| |lets eat in our tank| +|08/01/2022 01:46:56| GIOVINEZZA +|08/01/2022 01:46:57| doroo +|08/01/2022 01:47:01| |AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA FLOOOOOOOOOOOOOOOOOF| +|08/01/2022 01:47:05| |PRIMAVERA DI BELLEZZA| +|08/01/2022 01:47:05| |pan time| +|08/01/2022 01:47:05| |HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +|08/01/2022 01:47:08| |Oh yay... bread...| +|08/01/2022 01:47:08| |>tfw pastamen in the chat| +|08/01/2022 01:47:08| |HOSHINO | +|08/01/2022 01:47:08| |Tank Mako Tank Mako| +|08/01/2022 01:47:09| |DON'T EAT INSIDE THE TANK REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +|08/01/2022 01:47:11| |LEOPON time?| +|08/01/2022 01:47:15| |fucking loser eats lunch alone with the tanks every day| +|08/01/2022 01:47:15| |imagine eating an obento with guppies in a tank| +|08/01/2022 01:47:17| |THE PASTA IN MY BLOOD SINGS| +|08/01/2022 01:47:17| |Eating With Your Tank BASED| +|08/01/2022 01:47:20| |italy isn't real| +|08/01/2022 01:47:20| |HOSHINO | +|08/01/2022 01:47:23| porblems +|08/01/2022 01:47:23| cute +|08/01/2022 01:47:25| |saori dont be a snitch| +|08/01/2022 01:47:26| |cute lunch| +|08/01/2022 01:47:26| |good mum| +|08/01/2022 01:47:27| |that's a next level excuse| +|08/01/2022 01:47:29| |cute mom| +|08/01/2022 01:47:30| |CUTE TANK| +|08/01/2022 01:47:30| |THIS NIGGA EATIN BEANS IN THE TANK| +|08/01/2022 01:47:31| |Cute mom| +|08/01/2022 01:47:32| |CUTE LUNCH| +|08/01/2022 01:47:34| |cute bentou| +|08/01/2022 01:47:35| |DELLA VITA, NELL'ASPREZZA| +|08/01/2022 01:47:35| |cute mom ;_;| +|08/01/2022 01:47:37| |remember to snap the pasta in half so it fits in the pot!| +|08/01/2022 01:47:41| |BITCH EATING BEANS IN THE TANK| +|08/01/2022 01:47:42| INVINCIBLE +|08/01/2022 01:47:42| |NOT Invincible| +|08/01/2022 01:47:44| |AMERICA IS NOT INVICBLE| +|08/01/2022 01:47:46| |CUTEST TANK COMMANDER| +|08/01/2022 01:47:47| |Giovinezza, giovinezza| +|08/01/2022 01:47:49| |Bad news, out of apple sauce| +|08/01/2022 01:47:50| |>tfw there's no more circleK in Japan| +|08/01/2022 01:47:51| |Was Saunders ever invincible?| +|08/01/2022 01:47:51| |fanta yo ne| +|08/01/2022 01:48:02| |Saunders, the most vincible of all| +|08/01/2022 01:48:02| |Pass the MRE Anon| +|08/01/2022 01:48:02| |IL TUO CANTO SQUILLA E VA| +|08/01/2022 01:48:06| TANOSHII +|08/01/2022 01:48:09| |SENSHADO IS ABOUT >FUN| +|08/01/2022 01:48:11| |saunders always fuckin gjobs| +|08/01/2022 01:48:12| |E PER BENITO MUSSOLINI| +|08/01/2022 01:48:14| >fun +|08/01/2022 01:48:14| |Con voi il mondo intero è testimone che l’Italia del littorio ha fatto quanto umanamente possibile per evitare la tormenta che sconvolge l’E| +|08/01/2022 01:48:15| |Ciao watashi speak italiano| +|08/01/2022 01:48:17| |THE FRIENDS WE MADE ALONG THE WAY| +|08/01/2022 01:48:17| |from what?| +|08/01/2022 01:48:18| ANAL +|08/01/2022 01:48:19| |F U N| +|08/01/2022 01:48:19| |SENTO GURORIANA| +|08/01/2022 01:48:20| |and winning is fun| +|08/01/2022 01:48:20| |they almost died on that bridge remember| +|08/01/2022 01:48:20| (((fun))) +|08/01/2022 01:48:22| |my butt hurts| +|08/01/2022 01:48:22| funtards +|08/01/2022 01:48:23| OSHIRI +|08/01/2022 01:48:24| |FROM WHAT?| +|08/01/2022 01:48:25| |from her tank| +|08/01/2022 01:48:25| |HAVING FUN WON'T MAKE MOMMY LOVE YOU AGAIN MIHO| +|08/01/2022 01:48:27| |>MAYBE HER BUTT HURTS| +|08/01/2022 01:48:28| ANAL +|08/01/2022 01:48:29| |>her butt hurt| +|08/01/2022 01:48:30| |anon have you shit your pants yet?| +|08/01/2022 01:48:31| KYON-KUN +|08/01/2022 01:48:33| |WTF ANON| +|08/01/2022 01:48:33| costanza.jpg +|08/01/2022 01:48:34| |FUN THINGS ARE FUN| +|08/01/2022 01:48:34| :3 +|08/01/2022 01:48:35| |SAORI ENJOYING ANAL| +|08/01/2022 01:48:35| |Bastava rivedere i trattati per adeguarli alle mutevoli esigenze della vita delle nazioni e non considerarli intangibili per l’eternità; bas| +|08/01/2022 01:48:36| |KYON-KUN DENWA| +|08/01/2022 01:48:37| |>MAYBE HER BUTT HURTS // FROM WHAT| +|08/01/2022 01:48:37| |not yeeet| +|08/01/2022 01:48:38| |Why do we keeping win Bros?| +|08/01/2022 01:48:39| |why did shiho do it?| +|08/01/2022 01:48:40| |Fun things die if they eat senshado| +|08/01/2022 01:48:40| |why does her butt hurt?| +|08/01/2022 01:48:42| |what a slut| +|08/01/2022 01:48:43| |RIP KOUME| +|08/01/2022 01:48:44| |fun things eat dog food| +|08/01/2022 01:48:44| drown +|08/01/2022 01:48:47| |bastava non iniziare la stolta politica delle garanzie, che si è palesata soprattutto micidiale per coloro che le hanno accettate; bastava n| +|08/01/2022 01:48:49| koume... +|08/01/2022 01:48:49| |the tiger 2 mih| +|08/01/2022 01:48:49| FLASHBACK +|08/01/2022 01:48:49| |My pants are brown so it's 50/50| +|08/01/2022 01:48:50| KOUME +|08/01/2022 01:48:52| |OH NO NO NO| +|08/01/2022 01:48:53| |I WAS THERE MIHO, 2000 YEARS AGO| +|08/01/2022 01:48:53| |Fun things cum| +|08/01/2022 01:48:54| KOUME +|08/01/2022 01:48:54| PTSD +|08/01/2022 01:48:54| |ZE RUSSIANS| +|08/01/2022 01:48:55| PTSD +|08/01/2022 01:48:55| |RIP KOUME| +|08/01/2022 01:48:56| |good thing nothing bad happened to them| +|08/01/2022 01:48:56| |what do you think?| +|08/01/2022 01:48:56| |why does the tv match look like this| +|08/01/2022 01:48:57| |SNAKE! SNAKE! SNAAAKE!| +|08/01/2022 01:48:57| |DARK BACKSTORY| +|08/01/2022 01:48:58| |NOOOOO KOUMEEEEEEEEE| +|08/01/2022 01:48:59| PTSD +|08/01/2022 01:48:59| Koume! +|08/01/2022 01:48:59| |Koume drowned| +|08/01/2022 01:48:59| |>The hills are speaking Russian| +|08/01/2022 01:48:59| |non respingere la proposta che il Fuhrer fece il 6 ottobre dell’anno scorso, dopo finita la campagna di Polonia.| +|08/01/2022 01:49:00| |DIE KOUME| +|08/01/2022 01:49:01| TOT +|08/01/2022 01:49:02| |SAVE KOUME| +|08/01/2022 01:49:02| |SHE DEAD| +|08/01/2022 01:49:03| PTSD +|08/01/2022 01:49:03| |PTSD EP| +|08/01/2022 01:49:05| |human casualties. happens in my IT office all the time| +|08/01/2022 01:49:06| |keoume get game ended| +|08/01/2022 01:49:08| |i can't believe koume is fucking dead| +|08/01/2022 01:49:09| |MIHO YOU HAVE TO LET THOSE 5 PEOPLE DIE OR I'LL DISOWN YOU| +|08/01/2022 01:49:09| |PTSD FLASHBACK| +|08/01/2022 01:49:11| |This scene is gonna make me piss myself.| +|08/01/2022 01:49:13| |don't worry miho, she's carbon-coated| +|08/01/2022 01:49:13| |SAVE HER| +|08/01/2022 01:49:16| LOOOL +|08/01/2022 01:49:20| |DONT YOU PISS ON ME, BOY| +|08/01/2022 01:49:23| |MIHO THROWING| +|08/01/2022 01:49:23| |CARBON LUNGS| +|08/01/2022 01:49:24| |Save the fluff!| +|08/01/2022 01:49:25| |why didnt erika just block?| +|08/01/2022 01:49:25| |how tf u swim in that| +|08/01/2022 01:49:26| |carbon coated diving| +|08/01/2022 01:49:27| |"Is tankery safe?"| +|08/01/2022 01:49:29| |MIHO INTED THE MATCH| +|08/01/2022 01:49:29| |GERMAN GIRLS AREN'T CARBON COATED| +|08/01/2022 01:49:30| |Doesnt stop the tank moving though | +|08/01/2022 01:49:31| |PATENTED MIHO THROWS| +|08/01/2022 01:49:32| |SOLD THE MATCH| +|08/01/2022 01:49:33| |remember kids, tank's don't swim| +|08/01/2022 01:49:33| |F 5 guppies| +|08/01/2022 01:49:33| |Miho is such a loser| +|08/01/2022 01:49:33| |wtf was the tiger driver doing| +|08/01/2022 01:49:34| >10TH +|08/01/2022 01:49:35| |Her life is infinitely more important than an award| +|08/01/2022 01:49:37| THREW +|08/01/2022 01:49:39| |Imagine help your teammates over win SHAME| +|08/01/2022 01:49:41| |why didn't they just carbon coat the girls?| +|08/01/2022 01:49:42| |MIHO THREW| +|08/01/2022 01:49:44| |No they hate her| +|08/01/2022 01:49:45| |Ei vittu ku väsyttää nii saatanasti| +|08/01/2022 01:49:47| FLUFF +|08/01/2022 01:49:48| SUGOI +|08/01/2022 01:49:48| |>dont stop the match >let a few highschooelrs drown| +|08/01/2022 01:49:48| |FLOOOOOOOOOOOOOOOOOOOOOOOOOFFF AWWWWWWWWWWWWWWWW| +|08/01/2022 01:49:49| FLUFF +|08/01/2022 01:49:49| FLOOF +|08/01/2022 01:49:49| |>wasting time on blue enemies| +|08/01/2022 01:49:49| |this is what happens when nobody peeks their head out to spot| +|08/01/2022 01:49:51| |koume isn't important| +|08/01/2022 01:49:51| FLOOF +|08/01/2022 01:49:51| |mihos driver was a retard for not moving| +|08/01/2022 01:49:51| |FUWA FUWA| +|08/01/2022 01:49:52| |Fluff overload| +|08/01/2022 01:49:52| FLOOF +|08/01/2022 01:49:52| FLOOF!!!!!!!!!!!!!! +|08/01/2022 01:49:52| FLOOOOOOOOOOF +|08/01/2022 01:49:52| |fluff incoming| +|08/01/2022 01:49:53| FLIFF +|08/01/2022 01:49:53| FLOOF +|08/01/2022 01:49:53| FLUFF +|08/01/2022 01:49:53| FLOOOOOOOOFFFFFFF +|08/01/2022 01:49:53| |Oramai tutto ciò appartiene al passato. Se poi oggi siamo decisi ad affrontare i rischi e i sacrifici di una guerra, gli è che l’onore, gli | +|08/01/2022 01:49:54| FLOOF +|08/01/2022 01:49:54| |Floof rubs!| +|08/01/2022 01:49:54| |NOBODY DIES IN GUP, MIHO MADE A MISTAKE| +|08/01/2022 01:49:54| |DD tanks swim| +|08/01/2022 01:49:54| FLOOFY!!!!!!!!! +|08/01/2022 01:49:54| FLOOOOOF +|08/01/2022 01:49:54| FLOOF +|08/01/2022 01:49:55| |THE THING| +|08/01/2022 01:49:55| |is anzio next?| +|08/01/2022 01:49:56| |SQUIGGLY FLUFF| +|08/01/2022 01:49:56| CUTE +|08/01/2022 01:49:56| YAHOOOOOOOO +|08/01/2022 01:49:56| |SHE DID THE THING| +|08/01/2022 01:49:56| FLUFFY +|08/01/2022 01:49:57| FLOOOF +|08/01/2022 01:49:57| FLOOF +|08/01/2022 01:49:57| |FEEL THE FLOOF| +|08/01/2022 01:49:57| |fuwa fuwa!| +|08/01/2022 01:49:57| FLOOOOOOFFFFF +|08/01/2022 01:49:57| |senshado is hardcore| +|08/01/2022 01:49:58| |SUE GOY| +|08/01/2022 01:49:58| FLUUUUUUUUUUUUUUUUFF +|08/01/2022 01:49:58| FLOOF.gif +|08/01/2022 01:49:58| FLOOF +|08/01/2022 01:49:59| FLOOOOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFFFFFFFFFFFFFFFFF +|08/01/2022 01:49:59| |Teammates are for sacrificing| +|08/01/2022 01:49:59| floof +|08/01/2022 01:49:59| FLOOOOOF +|08/01/2022 01:49:59| FLOOF +|08/01/2022 01:49:59| ふわふわ +|08/01/2022 01:50:00| FLOOF +|08/01/2022 01:50:02| fluff +|08/01/2022 01:50:03| |I WANT TO DO THAT TO HER| +|08/01/2022 01:50:04| |l’avvenire ferramente lo impongono, poichè un grande popolo è veramente tale se considera sacri i suoi impegni e se non evade dalle prove su| +|08/01/2022 01:50:04| |fuwa fuwa time| +|08/01/2022 01:50:06| FLUUUUUUUFFFFFFFFFFFFFFFFF +|08/01/2022 01:50:07| |You're going to have to clean that part of the tank now| +|08/01/2022 01:50:07| |SHE DID THE THING| +|08/01/2022 01:50:08| FLOOOOOOOFF +|08/01/2022 01:50:09| ODDOBOORU +|08/01/2022 01:50:09| |HILJAA SAATANAN HOMO JA JUO LISÄÄ KAHVIA| +|08/01/2022 01:50:11| |SGT FLOOOFBALL| +|08/01/2022 01:50:11| |FLOOF HER HAIR| +|08/01/2022 01:50:13| |That one fluff doujin was godly| +|08/01/2022 01:50:13| |i want to make oddball a mother| +|08/01/2022 01:50:14| |THE FLOOF GIF| +|08/01/2022 01:50:20| |Koume is fluff and you must alway save fluff| +|08/01/2022 01:50:21| |DUCE BROS I TS ALMOST OUR TIME| +|08/01/2022 01:50:22| |that fucking hard cut lmao| +|08/01/2022 01:50:22| |TYPE THE LYRICS BY HAND YOU COPYPASTING FRAUD| +|08/01/2022 01:50:22| aifaheojpaijpta +|08/01/2022 01:50:23| |momo fuckin shit| +|08/01/2022 01:50:25| |MOMO HATE| +|08/01/2022 01:50:27| |DUCE DUCE DUCE | +|08/01/2022 01:50:27| |WITHOUT SEAMS| +|08/01/2022 01:50:28| |GET COCKY DUCE BROS GET COCKY| +|08/01/2022 01:50:28| |DUCE TIME| +|08/01/2022 01:50:28| >momo +|08/01/2022 01:50:29| |Brown town soon| +|08/01/2022 01:50:29| weeeeeeeeeeee +|08/01/2022 01:50:29| |WITHOUT SEAMS| +|08/01/2022 01:50:30| |DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON | +|08/01/2022 01:50:31| |GETCOCKY DUCE BROS| +|08/01/2022 01:50:31| |Momo... go away...| +|08/01/2022 01:50:32| |how many kids would you give yukari?| +|08/01/2022 01:50:33| DUCE! +|08/01/2022 01:50:34| ANZUUUUUUUUUUUUUUUU +|08/01/2022 01:50:35| |Anzio is an ezclap| +|08/01/2022 01:50:37| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:50:37| |DUCE DUCE DUCE| +|08/01/2022 01:50:37| dvce +|08/01/2022 01:50:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:37| |GET COCKY DUCE BROOOOOOSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +|08/01/2022 01:50:37| DVCE +|08/01/2022 01:50:37| DUCE +|08/01/2022 01:50:37| |momo shitposting in gup thread| +|08/01/2022 01:50:38| >shitaly +|08/01/2022 01:50:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:38| |no way in hell anzio loses this time around| +|08/01/2022 01:50:38| |IS ANZU EVER NOT MUCNHING ON SOMETHING| +|08/01/2022 01:50:38| AAHHHHHH +|08/01/2022 01:50:38| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:39| |DVCE DVCE DVCE | +|08/01/2022 01:50:39| |PIZZA RIME| +|08/01/2022 01:50:39| FOOOOOOOD +|08/01/2022 01:50:39| |IL DUCE IL DUCE IL DUCE| +|08/01/2022 01:50:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:41| DUCE +|08/01/2022 01:50:41| |DVCE DVCE| +|08/01/2022 01:50:42| |Pizza Time| +|08/01/2022 01:50:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:42| DUCE +|08/01/2022 01:50:42| DUCE +|08/01/2022 01:50:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:42| |duce | +|08/01/2022 01:50:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE v| +|08/01/2022 01:50:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:44| |FUNICULI FUNICULA FUNICULI FUNICULAAAAAAAAA| +|08/01/2022 01:50:44| DUCE +|08/01/2022 01:50:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:44| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE v| +|08/01/2022 01:50:45| DVCE +|08/01/2022 01:50:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:45| |DVCE | +|08/01/2022 01:50:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:46| |DVCE | +|08/01/2022 01:50:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:46| |DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:46| |1 MILIONE LIRE SU ANZIO| +|08/01/2022 01:50:46| DUCE +|08/01/2022 01:50:46| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:46| |DVCE DVCE DVCE| +|08/01/2022 01:50:46| DVCE +|08/01/2022 01:50:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:47| |DVCE DVCE DVCE| +|08/01/2022 01:50:47| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:47| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 01:50:47| dvce +|08/01/2022 01:50:47| |Its the freewin round, yeah| +|08/01/2022 01:50:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:48| |Pizza Pasta| +|08/01/2022 01:50:48| DUCE +|08/01/2022 01:50:49| |DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:49| |DUCE DUCE DUCE DUCE DCUD| +|08/01/2022 01:50:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:50| DUCE +|08/01/2022 01:50:50| |HEIL MEIN DVCE| +|08/01/2022 01:50:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:51| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:51| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:51| |JOBBERS JOBBERS JOBBERS| +|08/01/2022 01:50:51| |best gril| +|08/01/2022 01:50:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:51| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 01:50:52| SEAMLESS +|08/01/2022 01:50:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:53| DUCE +|08/01/2022 01:50:53| |Armored Gokarts| +|08/01/2022 01:50:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE| +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:55| |DVCE DVCE DVCE| +|08/01/2022 01:50:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:56| |DVCE DVCE DVCE o/ o/ o/| +|08/01/2022 01:50:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:57| |DUCE DUCE DUCE DUCE DUC E| +|08/01/2022 01:50:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:57| |DVCE DSVCE SDVCE DVCE| +|08/01/2022 01:50:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 01:50:58| |DUCE DUCE DUCE| +|08/01/2022 01:50:58| dvce +|08/01/2022 01:50:58| |DUCE DUCE DUCE| +|08/01/2022 01:50:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| seamless +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUC| +|08/01/2022 01:51:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| | o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ | +|08/01/2022 01:51:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:01| |the chat is going so fast no one will notice im gay| +|08/01/2022 01:51:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:03| |FUNICULI FUNICULA| +|08/01/2022 01:51:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +|08/01/2022 01:51:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| DUCE +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:08| |i saw that you faggot| +|08/01/2022 01:51:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE| +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:12| | DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +|08/01/2022 01:51:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:12| |I CANT SEE| +|08/01/2022 01:51:12| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:12| |Duce duce DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:12| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 01:51:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:12| |DUCE DUCE DUCE DUCEE| +|08/01/2022 01:51:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DUCE DUCE DUCE| +|08/01/2022 01:51:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:14| |TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |you saw nothing| +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:16| |SI SISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISIS| +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE UDC EUCDUC EDUC E| +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DVCE DVCE I RABU DCE| +|08/01/2022 01:51:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:19| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:21| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:21| |Mussolini best girl| +|08/01/2022 01:51:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:23| |DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:24| |hair si fake| +|08/01/2022 01:51:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |I LOVE MEN| +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:25| |JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JO| +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:26| |I WANT TO FUCK THE ITALIAN| +|08/01/2022 01:51:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:27| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:27| |SASUGA DUCE| +|08/01/2022 01:51:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:28| |WITH ALL THIS NOISE NO ONE WILL KNOW I WANT TO FUCK PEPARONI| +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:30| |Poor Eclair| +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:32| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:32| |PEPPERONI > DUNCE| +|08/01/2022 01:51:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:32| |NICE WIG| +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:36| |I LOVE DUCE| +|08/01/2022 01:51:36| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:36| D +|08/01/2022 01:51:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:36| |sasuga anon| +|08/01/2022 01:51:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:38| |AVE DVCE| +|08/01/2022 01:51:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:39| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:41| |ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +|08/01/2022 01:51:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:42| |i dislike duce| +|08/01/2022 01:51:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:43| D +|08/01/2022 01:51:43| |CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +|08/01/2022 01:51:44| RAPEFACE +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:51:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:44| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:45| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCE| +|08/01/2022 01:51:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:48| |VIVA DUCE| +|08/01/2022 01:51:49| |CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +|08/01/2022 01:51:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:49| |Type DVCE if you're a faggot| +|08/01/2022 01:51:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:52| DUCE +|08/01/2022 01:51:52| |Anzio is bad and so is Chovy| +|08/01/2022 01:51:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:52| |DUCE DUCE| +|08/01/2022 01:51:52| |DUCE IS CTU| +|08/01/2022 01:51:52| |AHEM DUCE| +|08/01/2022 01:51:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:53| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +|08/01/2022 01:51:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:55| DUCXE +|08/01/2022 01:51:55| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:56| PIYO-PIYO! +|08/01/2022 01:51:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:57| DYKE +|08/01/2022 01:51:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:58| |FUNICULI FUNICULA| +|08/01/2022 01:51:59| |>Duce spam better then Murica spam| +|08/01/2022 01:51:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:59| |🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕| +|08/01/2022 01:51:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:52:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:00| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:03| |funiculi, funicula, funiculi, funicuLAAAAAAAAAAAAAAA| +|08/01/2022 01:52:03| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 01:52:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:04| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:52:04| |ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +|08/01/2022 01:52:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:05| |DUCE DUCE DUCE DUCE DUCE DUCD EUDCE DUC EDUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:06| CHEM +|08/01/2022 01:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:06| |AVE DVCE| +|08/01/2022 01:52:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:07| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:09| |They call her Anchovy because she smells like fish| +|08/01/2022 01:52:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:10| |Muricans on death watch| +|08/01/2022 01:52:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:11| |FUNICULI FUNICULA FUNICULI FUNICULAAAAAAAAA| +|08/01/2022 01:52:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:12| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:12| |🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +|08/01/2022 01:52:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:14| |Duce fucks niggers| +|08/01/2022 01:52:15| |FUNICULI FUNICULAAAAAAAAAAAAA| +|08/01/2022 01:52:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:17| |ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +|08/01/2022 01:52:17| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:17| |🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +|08/01/2022 01:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:19| |🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +|08/01/2022 01:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:19| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 01:52:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:20| |IL PIU FORTE| +|08/01/2022 01:52:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:52:20| BONG +|08/01/2022 01:52:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:21| ah +|08/01/2022 01:52:21| |CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +|08/01/2022 01:52:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:21| >thinking +|08/01/2022 01:52:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:22| |SOME PASTA ON MY BALLS| +|08/01/2022 01:52:23| |>heavy tank| +|08/01/2022 01:52:24| PASTA +|08/01/2022 01:52:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:24| Smelly +|08/01/2022 01:52:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:25| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:26| |o/ o/ o/| +|08/01/2022 01:52:26| |LUNCH TIME| +|08/01/2022 01:52:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:52:27| PASTA +|08/01/2022 01:52:27| |PASTA TIME| +|08/01/2022 01:52:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:52:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:29| https://elwolf6.feen.us/5oqlh6.pnghttps://elwolf6.feen.us/5oqlh6.pnghttps://elwolf6.feen.us/5oqlh6.pnghttps://elwolf6.feen.us/5oqlh6.pnghttp +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:30| |PASTA TIME| +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:30| |pasta time| +|08/01/2022 01:52:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:32| PASTA +|08/01/2022 01:52:32| |NO DVCE| +|08/01/2022 01:52:32| smelly +|08/01/2022 01:52:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:34| |PASTA TIME| +|08/01/2022 01:52:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:34| |PASTA PASTA| +|08/01/2022 01:52:34| |PASTA TIME| +|08/01/2022 01:52:35| |oh shit its pasta time| +|08/01/2022 01:52:35| |DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED!| +|08/01/2022 01:52:36| |PIZZA TIME| +|08/01/2022 01:52:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:38| |BENITO MUSSOLINI| +|08/01/2022 01:52:39| |Pizza time| +|08/01/2022 01:52:39| PASTA +|08/01/2022 01:52:39| |PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA| +|08/01/2022 01:52:40| smelly +|08/01/2022 01:52:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:40| |LUNCHU LUNCHU| +|08/01/2022 01:52:41| |DUCE DUCE | +|08/01/2022 01:52:41| Awww +|08/01/2022 01:52:42| PASTAAAAAAAAAAAA +|08/01/2022 01:52:42| |PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME | +|08/01/2022 01:52:44| |pasta time | +|08/01/2022 01:52:44| |so sad| +|08/01/2022 01:52:45| |Poor duce| +|08/01/2022 01:52:45| |I've missed this| +|08/01/2022 01:52:45| Duce... +|08/01/2022 01:52:46| |CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +|08/01/2022 01:52:46| |Totsugeki has no deceit| +|08/01/2022 01:52:46| |LOTSA SPAGHETTI| +|08/01/2022 01:52:47| |I could go for some 'za| +|08/01/2022 01:52:49| |BAKA DUCE BAKA DUCE BAKA DUCE| +|08/01/2022 01:52:49| :( +|08/01/2022 01:52:49| |POOR DVCE| +|08/01/2022 01:52:51| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:52:51| |duce is ctu| +|08/01/2022 01:52:52| flat +|08/01/2022 01:52:52| |CTU CTU CTU CTU| +|08/01/2022 01:52:53| |Is there any girl better than The Duce?| +|08/01/2022 01:52:54| |GIOVINEZZA, GIOVINEZZA| +|08/01/2022 01:52:54| seDUCED +|08/01/2022 01:52:55| |I love her much| +|08/01/2022 01:52:56| |Nothing honest about that widc, dvce| +|08/01/2022 01:52:57| |PIZZA PASTA PUT IT IN A BOX| +|08/01/2022 01:52:58| |ANZU ANZU ANZU| +|08/01/2022 01:53:02| |Κορόιδο Μουσολίνι| +|08/01/2022 01:53:04| |pizza time | +|08/01/2022 01:53:05| >ITALIAN +|08/01/2022 01:53:06| PASION +|08/01/2022 01:53:08| |ITALIAN """"CULTURE"""| +|08/01/2022 01:53:08| |PRIMAVERA DI BELLEZZA| +|08/01/2022 01:53:12| |κανείς σας δε θα μείνει| +|08/01/2022 01:53:12| >larpers +|08/01/2022 01:53:12| |So a real Italian made it?| +|08/01/2022 01:53:13| |>Italian >Tanks| +|08/01/2022 01:53:14| |CUTE TANKETTES| +|08/01/2022 01:53:14| |E PER BENITO MUSSOLINI EIA EIA ALALA| +|08/01/2022 01:53:14| |god I wish I had pasta| +|08/01/2022 01:53:14| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:53:16| |The pasta in my blood rejoices| +|08/01/2022 01:53:16| |Mul ei oo kahvii, pelkkää viinaa| +|08/01/2022 01:53:17| |I COOKE DA PASTA| +|08/01/2022 01:53:17| |Me too, Hana| +|08/01/2022 01:53:18| |DELLA VITA NELL'ASPREZZA| +|08/01/2022 01:53:21| |viva anzio| +|08/01/2022 01:53:21| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:53:22| |εσύ και η Ιταλία, η πατρίδα σου η γελοία, τρέμετε όλοι το χακί| +|08/01/2022 01:53:25| smelly +|08/01/2022 01:53:25| |she means pizza| +|08/01/2022 01:53:28| |SHI BWI| +|08/01/2022 01:53:29| 🍕🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 +|08/01/2022 01:53:29| |IMAGINE GOING FROM ANCIENT ROME TO MODERN ITALIANS. BIGGEST DOWNGRADE IN HISTORY| +|08/01/2022 01:53:30| |Fiat Panda tanks| +|08/01/2022 01:53:31| foreshadowing? +|08/01/2022 01:53:31| |10 years later, they're still using CV33's| +|08/01/2022 01:53:32| |IL TUO CANTO SQUILLA E VA| +|08/01/2022 01:53:41| |DUCE SMELLS GOOD| +|08/01/2022 01:53:43| YUKARI +|08/01/2022 01:53:44| ENTER +|08/01/2022 01:53:44| ENTER +|08/01/2022 01:53:44| |BASED YUKARI| +|08/01/2022 01:53:45| UNDERCOVER +|08/01/2022 01:53:45| ENTER +|08/01/2022 01:53:46| >ENTER +|08/01/2022 01:53:46| TADAIMAA +|08/01/2022 01:53:46| |Inteligence time| +|08/01/2022 01:53:46| ENTER +|08/01/2022 01:53:47| sugoi +|08/01/2022 01:53:49| |BASED YUKARI| +|08/01/2022 01:53:50| |SHE BACK| +|08/01/2022 01:53:50| ODDBALL +|08/01/2022 01:53:51| SPYFLUFF +|08/01/2022 01:53:51| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:53:52| |FLOOF RECON NUMBER 1| +|08/01/2022 01:53:53| HI +|08/01/2022 01:53:53| HAI +|08/01/2022 01:53:53| |SHE CAN'T KEEP GETTING AWAY WITH IT!| +|08/01/2022 01:53:58| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:53:58| |winky floof| +|08/01/2022 01:54:00| HAI +|08/01/2022 01:54:00| CUTE +|08/01/2022 01:54:01| |Pepperoni's pepperoni nipples| +|08/01/2022 01:54:01| ITALIA +|08/01/2022 01:54:04| |WHEN DOES SHE EDIT IT SHE'S STILL IN THE UNIFORM| +|08/01/2022 01:54:05| |SHE DID IT AGAIN| +|08/01/2022 01:54:07| |METAL GEAR FLOOF| +|08/01/2022 01:54:07| |hope she didn't cut out her undressing this time| +|08/01/2022 01:54:11| |I thought that red text was danmaku am I retarded| +|08/01/2022 01:54:12| |G2 SPOOK YUKARI| +|08/01/2022 01:54:12| SNAAAAAAAAAAAKE +|08/01/2022 01:54:13| |Nice "TS" idiot| +|08/01/2022 01:54:13| |>viinaa || ei helvetti jos joisin nyt ja huomenna taas calvadosta| +|08/01/2022 01:54:14| |WHAT? METAL GEAR?| +|08/01/2022 01:54:17| |MY PC FROOZE FROM ALL THE DUCE SPAMMING...WE GOT TOO COCKY DUCE BROS| +|08/01/2022 01:54:18| lewd +|08/01/2022 01:54:18| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:19| |anzio is amazing| +|08/01/2022 01:54:19| SEX +|08/01/2022 01:54:20| WEW +|08/01/2022 01:54:21| UOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 01:54:21| wewww +|08/01/2022 01:54:22| |What do those Italian bastards have| +|08/01/2022 01:54:23| |NOOOOO KEEP GOING| +|08/01/2022 01:54:23| |BUTT AND BACK| +|08/01/2022 01:54:24| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:24| WEW +|08/01/2022 01:54:25| UUUUOOOOH +|08/01/2022 01:54:26| UOOOOOOOOOOOOOOOOOOOH +|08/01/2022 01:54:27| |SHE CAN'T KEEP GETTING AWAY WITH THIS!!!| +|08/01/2022 01:54:30| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:31| CUTE +|08/01/2022 01:54:32| |white stockings are my fetish| +|08/01/2022 01:54:32| |Anzio uniforms are the cuttest| +|08/01/2022 01:54:33| UOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHH +|08/01/2022 01:54:34| TEASE +|08/01/2022 01:54:36| |CUTE ANZIO GIRLS| +|08/01/2022 01:54:38| |Calvadost on vaa puoli pulloa nii se menee ihan hyvin alas no worries| +|08/01/2022 01:54:39| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:40| |Italo girls <3| +|08/01/2022 01:54:45| Fatties +|08/01/2022 01:54:48| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:48| BINBOU +|08/01/2022 01:54:49| |anzio = best school| +|08/01/2022 01:54:49| |I wanna marry left| +|08/01/2022 01:54:49| SOVL +|08/01/2022 01:54:50| POOR +|08/01/2022 01:54:50| |YOU CAN'T SUFFER IN ANZIO| +|08/01/2022 01:54:53| |>POOR ITALIANS| +|08/01/2022 01:54:53| |EYY I'M WALKIN' 'ERE| +|08/01/2022 01:54:56| FLOOF +|08/01/2022 01:54:57| |cute scarf girl| +|08/01/2022 01:54:57| |SHE'S LUCKY EVERYONE IN THE WORLD SPEAKS JAPANESE LIKE ANY ANIME| +|08/01/2022 01:54:57| |Pepperoni has two younger brothers. The lucky bastards.| +|08/01/2022 01:54:58| |LOTSA SPAGHETTI| +|08/01/2022 01:55:00| BAKARONI +|08/01/2022 01:55:01| PEPPERONI!!!!! +|08/01/2022 01:55:03| PEPERONI +|08/01/2022 01:55:05| BAKARONI +|08/01/2022 01:55:05| PEPPERONI +|08/01/2022 01:55:05| PEPPA +|08/01/2022 01:55:06| |IMAGINE THE SMELL| +|08/01/2022 01:55:06| |OISHII PASTA| +|08/01/2022 01:55:06| |PEPPERONI MY LOVE| +|08/01/2022 01:55:07| |oishiii pasta dayou| +|08/01/2022 01:55:07| PEPPERONI +|08/01/2022 01:55:08| |>ketchup in your pasta| +|08/01/2022 01:55:08| |Pepper chan!| +|08/01/2022 01:55:09| PASTA +|08/01/2022 01:55:09| |our eyes met| +|08/01/2022 01:55:10| |stupid pepperoni| +|08/01/2022 01:55:11| >ketchup +|08/01/2022 01:55:13| |NO ONIONS!?| +|08/01/2022 01:55:14| Bakaroni +|08/01/2022 01:55:14| sex +|08/01/2022 01:55:16| |cute braid| +|08/01/2022 01:55:17| |why is she giving the recipe to a customer| +|08/01/2022 01:55:18| |PEPPERONI IS SEX| +|08/01/2022 01:55:20| BAKARONI +|08/01/2022 01:55:21| |>ITALIAN CUISINE| +|08/01/2022 01:55:21| |fuck im hungry| +|08/01/2022 01:55:23| STUPIDRONI +|08/01/2022 01:55:23| Bakaroni +|08/01/2022 01:55:23| |KETCHUP YOU MORON| +|08/01/2022 01:55:24| |onions are for the french| +|08/01/2022 01:55:24| >ketchup +|08/01/2022 01:55:24| |PEPPERONI | +|08/01/2022 01:55:27| |>3 MILLION| +|08/01/2022 01:55:28| |>Italian "economy"| +|08/01/2022 01:55:29| |it isn't ketchup you mutt fucks| +|08/01/2022 01:55:30| |kek 300 yen| +|08/01/2022 01:55:30| |3 million lira = 3 dollar| +|08/01/2022 01:55:30| |the ketchup cooks the eggs| +|08/01/2022 01:55:31| |I've read this doujin| +|08/01/2022 01:55:32| |LARP FAILED| +|08/01/2022 01:55:32| >INFLATION +|08/01/2022 01:55:33| |3 QUID| +|08/01/2022 01:55:34| |Anchovy > ALL| +|08/01/2022 01:55:35| |in dollars woman| +|08/01/2022 01:55:35| |pay denbts| +|08/01/2022 01:55:36| |DA RO| +|08/01/2022 01:55:38| DAROOO +|08/01/2022 01:55:45| |stupid pepperoni| +|08/01/2022 01:55:45| |She's so lucky Bakaroni is a baka| +|08/01/2022 01:55:46| |she is so fucking stupid| +|08/01/2022 01:55:47| |smol subs| +|08/01/2022 01:55:48| BAKARONI +|08/01/2022 01:55:48| |FUCKING DUMBASS| +|08/01/2022 01:55:48| |DUMB RETARD PEPPERONI| +|08/01/2022 01:55:48| |mutts think tomato sauce tastes like ketchup| +|08/01/2022 01:55:50| |One (1) heavy tank| +|08/01/2022 01:55:50| BAKARONI +|08/01/2022 01:55:50| |>heavy tank| +|08/01/2022 01:55:51| |>TOP SECRET| +|08/01/2022 01:55:51| Bakaroni +|08/01/2022 01:55:53| |Yukari confirmed cunnyseur| +|08/01/2022 01:55:53| |Greasy anzio pasta cheaper than anything my shithole country offers| +|08/01/2022 01:55:54| |Moron ronni| +|08/01/2022 01:55:54| |>Heavy tank| +|08/01/2022 01:55:55| BAKARONI +|08/01/2022 01:55:55| |RONI DUM| +|08/01/2022 01:55:56| BAKARONI +|08/01/2022 01:55:58| "HEAVY" +|08/01/2022 01:56:00| BAKARONI +|08/01/2022 01:56:00| |CUTE FUCKING RETARDED SEX NUKE PEPPERONI| +|08/01/2022 01:56:00| |Is this Minos' VA?| +|08/01/2022 01:56:01| >heavy +|08/01/2022 01:56:05| |she's literally saying this right into the camera| +|08/01/2022 01:56:06| SLAP* +|08/01/2022 01:56:07| |Still more than Orai\| +|08/01/2022 01:56:08| SLAP +|08/01/2022 01:56:10| |longer than i can remember... so this morning?| +|08/01/2022 01:56:10| SLAPPU +|08/01/2022 01:56:13| |Pasta so greasy saunders can refuel from it| +|08/01/2022 01:56:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:13| |WHY ARE RETARDS SO SEXY AAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 01:56:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:14| GENIUS +|08/01/2022 01:56:14| ARRIVEDERCI +|08/01/2022 01:56:15| ARRIVEDERCI +|08/01/2022 01:56:15| ARREVIDERCI! +|08/01/2022 01:56:15| ARRIVEDERCHI +|08/01/2022 01:56:16| arrevaderci +|08/01/2022 01:56:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:19| |cute tankette| +|08/01/2022 01:56:19| TAKNETTE +|08/01/2022 01:56:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:19| |Still better pronunciation than Brad Pitt| +|08/01/2022 01:56:20| |Yukrai is a serious spy please understand| +|08/01/2022 01:56:20| |STOP INSULTING ANZION'S TOP SECRET HEAVY TANK IT WILL BE GLORIOUS THEY WILL WIN AGAINST OOARAI| +|08/01/2022 01:56:21| |A FUCKING CV| +|08/01/2022 01:56:21| |INFOSEC MOTHERFUCKER, DO YOU KNOW OF IT| +|08/01/2022 01:56:21| |Brunno Pepperoni| +|08/01/2022 01:56:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:23| |ARI ARI ARI ARI| +|08/01/2022 01:56:23| ARRIVEDEEERCI +|08/01/2022 01:56:23| |CHEF VN ROUTE| +|08/01/2022 01:56:23| |caruro veloche| +|08/01/2022 01:56:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:27| |DUCE DUCE DUCE| +|08/01/2022 01:56:27| ARRIVADERCI +|08/01/2022 01:56:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:28| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:28| |You will never drive around campus raising morale in your armored car| +|08/01/2022 01:56:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:30| |DUCE | +|08/01/2022 01:56:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:31| ENTER +|08/01/2022 01:56:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:56:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCED| +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:36| DUCE +|08/01/2022 01:56:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:36| |CARRO VELOCE| +|08/01/2022 01:56:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:56:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:37| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:38| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 01:56:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |PURE DC TRACTION| +|08/01/2022 01:56:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:41| HA +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:41| |🍕🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 DUCE DUCE DUCE DUCE 🍕🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:42| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:43| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |AVE AVE AVE| +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUC EDUC DEU DUC E| +|08/01/2022 01:56:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:46| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DU| +|08/01/2022 01:56:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:46| DUCE +|08/01/2022 01:56:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCE| +|08/01/2022 01:56:47| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:48| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:56:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| DUCE +|08/01/2022 01:56:49| duce +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:56:50| DUCE +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| |i think bros love duce| +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +|08/01/2022 01:56:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUEC DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:55| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:56| |DUCE DUCE DUCE| +|08/01/2022 01:56:56| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:56| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE VV| +|08/01/2022 01:56:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:58| DUCE +|08/01/2022 01:56:58| |DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE| +|08/01/2022 01:56:58| |DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:57:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:57:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:04| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:57:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:05| wew +|08/01/2022 01:57:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:57:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:05| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 01:57:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:06| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:57:07| |DUCE DUCE DUCE DUCEEE| +|08/01/2022 01:57:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:09| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:57:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:12| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:57:18| >MOMO +|08/01/2022 01:57:18| O7 +|08/01/2022 01:57:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:27| |SEX WITH MOMO| +|08/01/2022 01:57:28| |understood, faggots?| +|08/01/2022 01:57:31| SEIG +|08/01/2022 01:57:32| |"UNDERSTOOD, FAGGOTS?"| +|08/01/2022 01:57:32| |already blew my horn| +|08/01/2022 01:57:32| |BASED CAESAR| +|08/01/2022 01:57:32| |HAIL CAESAR| +|08/01/2022 01:57:32| |EI EI OH!| +|08/01/2022 01:57:33| |A A O| +|08/01/2022 01:57:34| |bunnies = maggots| +|08/01/2022 01:57:36| |NO CAESAR WE CAN'T SALUTE LIKE THAT ANYMORE| +|08/01/2022 01:57:36| |EI EI OH| +|08/01/2022 01:57:36| |me as anzu's director's chair| +|08/01/2022 01:57:36| |the autism war cry| +|08/01/2022 01:57:37| |EI EI OOO| +|08/01/2022 01:57:37| |A A O| +|08/01/2022 01:57:38| |A A O| +|08/01/2022 01:57:38| |o/ o/ o/| +|08/01/2022 01:57:39| |A A O| +|08/01/2022 01:57:41| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:57:42| 勝って兜の緒を締めよ +|08/01/2022 01:57:42| |AYO THA HAND| +|08/01/2022 01:57:44| ayo +|08/01/2022 01:57:47| SEIG +|08/01/2022 01:57:48| WEAK +|08/01/2022 01:57:48| |o/ HAIL CAESAR| +|08/01/2022 01:57:51| |Bunny = Death| +|08/01/2022 01:57:52| duce! +|08/01/2022 01:57:57| |Hippo team is cancelled| +|08/01/2022 01:57:57| weaklings +|08/01/2022 01:57:57| |alright i am too tired for this, see you next time anons, or in the morning, i don't know| +|08/01/2022 01:57:58| |what happens if you drop a live round?| +|08/01/2022 01:57:58| |LEGIO! AETERNA! AETERNA!| +|08/01/2022 01:58:01| |>Not able to lift a shell| +|08/01/2022 01:58:06| |don't, it makes mustard gas| +|08/01/2022 01:58:07| |you die| +|08/01/2022 01:58:07| |are the episode and ova spliced?| +|08/01/2022 01:58:08| NORIKO +|08/01/2022 01:58:10| |goodnight anon| +|08/01/2022 01:58:14| |YEs, they're spliced| +|08/01/2022 01:58:16| |yeah it's the supercut| +|08/01/2022 01:58:17| |If she dies, she dies| +|08/01/2022 01:58:18| |YOU FUCKING NIGGERS CRASHED MY STREAM| +|08/01/2022 01:58:19| ssss +|08/01/2022 01:58:20| |tank weight| +|08/01/2022 01:58:20| |>training arc lasts 30 seconds| +|08/01/2022 01:58:21| |that's what supercut means retard| +|08/01/2022 01:58:21| |>lost weight| +|08/01/2022 01:58:23| |SURE SAORI| +|08/01/2022 01:58:23| >leavers +|08/01/2022 01:58:23| |Sure, Saori. Sure.| +|08/01/2022 01:58:23| |FAGGOT ANON DARING TO SLEEP| +|08/01/2022 01:58:23| |I'll supercut you ,virgin| +|08/01/2022 01:58:23| |they are female children no older than 14yo, they cant be expected to lift tank shells| +|08/01/2022 01:58:25| 日本語はできる? +|08/01/2022 01:58:29| |Nothing its Carbon Coated Shells| +|08/01/2022 01:58:37| |14yo is perfect for breeding| +|08/01/2022 01:58:44| |tankers high they call it| +|08/01/2022 01:58:45| |>Not being swole at 14y old| +|08/01/2022 01:58:48| |lmao lone comment| +|08/01/2022 01:58:51| |her curves are hard| +|08/01/2022 01:58:55| volleybutts +|08/01/2022 01:58:56| |senpai pls help| +|08/01/2022 01:58:56| |Volleyball curves are har| +|08/01/2022 01:58:58| |the volleyball team's curves....| +|08/01/2022 01:58:59| |MY BUTT HURTS| +|08/01/2022 01:59:01| |maybe her butt hurts| +|08/01/2022 01:59:02| |MALE FRIENDS| +|08/01/2022 01:59:03| |>show has a ton of cute milfs >nooo I want 14yo| +|08/01/2022 01:59:04| |butt pillow| +|08/01/2022 01:59:04| >male +|08/01/2022 01:59:04| fags +|08/01/2022 01:59:05| butthurt +|08/01/2022 01:59:06| SENPAI +|08/01/2022 01:59:07| |WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +|08/01/2022 01:59:07| |shaking butts| +|08/01/2022 01:59:08| costanze.png +|08/01/2022 01:59:08| >boyfriend +|08/01/2022 01:59:09| |what a fags| +|08/01/2022 01:59:09| SLUTS +|08/01/2022 01:59:09| |FROM WHAT?| +|08/01/2022 01:59:11| |SEX FRIENDS| +|08/01/2022 01:59:12| FAGS +|08/01/2022 01:59:12| |GET YUUKI A BETTER BOYFRIEND| +|08/01/2022 01:59:13| |WHY DO ALL THEIR BUTTS HURT????????????| +|08/01/2022 01:59:15| |These boys are all fags holy shit| +|08/01/2022 01:59:15| FAGS +|08/01/2022 01:59:15| |eight o| +|08/01/2022 01:59:16| >boyfriend +|08/01/2022 01:59:17| fags +|08/01/2022 01:59:18| |would you dump a Yuki?| +|08/01/2022 01:59:21| |HER BOYFRIEND DUMPED HER YES| +|08/01/2022 01:59:25| |Never dump Yuki| +|08/01/2022 01:59:26| |WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +|08/01/2022 01:59:26| |AIRFOCE BOYS STRONG| +|08/01/2022 01:59:27| |yes, into my bed| +|08/01/2022 01:59:28| |I CAN RESOLVE THE LACK OF BF ISSUE| +|08/01/2022 01:59:28| |what a bunch of faggots| +|08/01/2022 01:59:29| |rip saori| +|08/01/2022 01:59:29| |only faggots I swear| +|08/01/2022 01:59:29| |Milfs are used, dont you want fresh?| +|08/01/2022 01:59:30| |YUUKI THE MEN YOU KEEP IN THE BASEMENT ARE NOT "BOYFRIENDS"| +|08/01/2022 01:59:34| CLANG +|08/01/2022 01:59:35| |don't trust saori with relationship advice| +|08/01/2022 01:59:37| |based stug| +|08/01/2022 01:59:39| |>Saori giving relationship advice| +|08/01/2022 01:59:40| |its a self propelled gun| +|08/01/2022 01:59:41| |The bunnies had boyfriends| +|08/01/2022 01:59:42| |STuG STuG STuG| +|08/01/2022 01:59:43| |is strv 103 an mbt, /a/?| +|08/01/2022 01:59:43| |There are no men left| +|08/01/2022 01:59:46| |SORE DA| +|08/01/2022 01:59:47| |WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +|08/01/2022 01:59:47| |SORE DA!!| +|08/01/2022 01:59:48| |stug is grug| +|08/01/2022 01:59:49| |it's called efficiency| +|08/01/2022 01:59:49| |Don't worry yurifags, those kinds of boyfriends are too gay to touch your girls| +|08/01/2022 01:59:50| |based hippos| +|08/01/2022 01:59:50| |SORE DA| +|08/01/2022 01:59:51| |WE NEED TO CLARIFY THIS| +|08/01/2022 01:59:52| |the strv is an MBT| +|08/01/2022 01:59:54| |Sore DA| +|08/01/2022 01:59:55| |SPEED READER| +|08/01/2022 01:59:56| |THATS IT| +|08/01/2022 01:59:58| |yet whata is an mbt| +|08/01/2022 01:59:58| |All men have died to carbon poisening| +|08/01/2022 02:00:07| |carbon speed reading| +|08/01/2022 02:00:07| |>women driving| +|08/01/2022 02:00:10| |I KNOW KUNG FU| +|08/01/2022 02:00:10| |just read lol| +|08/01/2022 02:00:10| >RTFM +|08/01/2022 02:00:10| RTFM +|08/01/2022 02:00:11| |what the fuck is a manual| +|08/01/2022 02:00:11| RTFM +|08/01/2022 02:00:14| |only ladybodies can handle carbon| +|08/01/2022 02:00:15| >saori +|08/01/2022 02:00:15| rtfm +|08/01/2022 02:00:15| |based Mako| +|08/01/2022 02:00:18| |>asian women driving| +|08/01/2022 02:00:20| |I also give people relationship advice t. KHHV| +|08/01/2022 02:00:20| |What manual? Just tell me what it means, douch| +|08/01/2022 02:00:21| |read nigga| +|08/01/2022 02:00:21| |NISHIZUMI STYLE| +|08/01/2022 02:00:22| 0 +|08/01/2022 02:00:25| SLUT +|08/01/2022 02:00:25| L\ +|08/01/2022 02:00:25| |reading is iard| +|08/01/2022 02:00:26| F +|08/01/2022 02:00:26| |Imagine reading words on paper| +|08/01/2022 02:00:26| |LMAO SAORI BTFO| +|08/01/2022 02:00:27| |>just drive| +|08/01/2022 02:00:27| SLUT +|08/01/2022 02:00:27| |just lie| +|08/01/2022 02:00:27| |UNDERAGE SLUTS| +|08/01/2022 02:00:28| Saori............................ +|08/01/2022 02:00:28| OOF +|08/01/2022 02:00:29| READ +|08/01/2022 02:00:29| |calls out the fat seal| +|08/01/2022 02:00:29| |DON'T LISTEN TO HER RABBITS| +|08/01/2022 02:00:29| |>how many| +|08/01/2022 02:00:30| |MANAGER! READ THE FUCKING MANUAL!| +|08/01/2022 02:00:30| |Carbon has turned all the men into little girls| +|08/01/2022 02:00:30| > +|08/01/2022 02:00:33| |tank boyfriend| +|08/01/2022 02:00:33| > +|08/01/2022 02:00:36| |I want to be a tank| +|08/01/2022 02:00:37| |WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +|08/01/2022 02:00:37| |>HIJIRI'S DOUJIN| +|08/01/2022 02:00:38| WHORES +|08/01/2022 02:00:38| |READ THE PDF| +|08/01/2022 02:00:40| azusa +|08/01/2022 02:00:42| |PURE SLUT| +|08/01/2022 02:00:43| |>I CAN BE HER BOYFRIEND| +|08/01/2022 02:00:44| |can girls love panzer?| +|08/01/2022 02:00:47| |Imagine being a tank| +|08/01/2022 02:00:50| |NEED MORE THAN A DOZEN| +|08/01/2022 02:00:55| |imagine being a girl| +|08/01/2022 02:00:59| |I smell lesbians| +|08/01/2022 02:00:59| |I want to be a tank and have Saori ride me until her butt hurts| +|08/01/2022 02:01:00| |CAN LOVE BLOOM IN A PANZER| +|08/01/2022 02:01:01| |Panzers are all they need to be penetrated| +|08/01/2022 02:01:01| |>doesn't remember| +|08/01/2022 02:01:01| |imagine not being a girl| +|08/01/2022 02:01:02| |we're all little girls here| +|08/01/2022 02:01:04| |MOMO HATE| +|08/01/2022 02:01:05| |flowery girls| +|08/01/2022 02:01:05| |ANZU ANZU ANZU| +|08/01/2022 02:01:05| |dumb hana moment| +|08/01/2022 02:01:06| |I don't know who the fuck you are - Isuzu Hana| +|08/01/2022 02:01:07| KEK +|08/01/2022 02:01:10| |YUZU'S DOUJIN!!!!| +|08/01/2022 02:01:12| |MOMO CHAAAAAAAN| +|08/01/2022 02:01:13| |"I'm CIA"| +|08/01/2022 02:01:14| |CUTE ANZU| +|08/01/2022 02:01:15| |erika would never had a boyfriend (other than me)| +|08/01/2022 02:01:16| |stupid monocle| +|08/01/2022 02:01:17| |Anzu cute| +|08/01/2022 02:01:17| |i'm uhhhh yuzu| +|08/01/2022 02:01:19| Monmo-chan +|08/01/2022 02:01:20| |Shit I gotta takemy pills| +|08/01/2022 02:01:22| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 02:01:22| |Thanks for the bullying| +|08/01/2022 02:01:23| flat +|08/01/2022 02:01:24| |ANZU SMILE| +|08/01/2022 02:01:26| |maho is my gf| +|08/01/2022 02:01:26| |Imagine a Yuzu thighjob| +|08/01/2022 02:01:30| |Dystopian world where 90% of the babies born are girls| +|08/01/2022 02:01:31| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 02:01:33| |I hate Momo too!| +|08/01/2022 02:01:33| |eat your onigiri| +|08/01/2022 02:01:34| |What would happen if I remove the monocle| +|08/01/2022 02:01:36| |I claimed Erika, go away anons| +|08/01/2022 02:01:39| "dystopian" +|08/01/2022 02:01:40| |WE LOVE MOMO| +|08/01/2022 02:01:42| >dystopian +|08/01/2022 02:01:45| |SHUT UP MOMO| +|08/01/2022 02:01:45| |IT WOULD BE EXTREMELY PAINFUL| +|08/01/2022 02:01:48| |Let's All Love Momo| +|08/01/2022 02:01:48| MOMOCLE +|08/01/2022 02:01:49| |based world| +|08/01/2022 02:01:49| >>Dystopian +|08/01/2022 02:01:50| momochads... +|08/01/2022 02:01:50| |momo is worst character, no debate, even that male trying to close down the school is better| +|08/01/2022 02:01:52| iMo +|08/01/2022 02:01:53| |momo looks so stupid with that monocle wtf| +|08/01/2022 02:01:55| |MORE tanks| +|08/01/2022 02:01:56| |YOURE A BIG TANKER| +|08/01/2022 02:01:59| |Momo needs rape (non-correctional)| +|08/01/2022 02:01:59| |MORE TANKS| +|08/01/2022 02:01:59| 4U +|08/01/2022 02:02:03| uuuu +|08/01/2022 02:02:04| |her family can't afford proper glasses| +|08/01/2022 02:02:04| |FO YU| +|08/01/2022 02:02:04| |Yes, it's dystopian. As much as I like girls, I can't have beer with them like with the bois| +|08/01/2022 02:02:04| |cute boy| +|08/01/2022 02:02:05| volleyballs! +|08/01/2022 02:02:06| |FAVORITE TANK GO| +|08/01/2022 02:02:06| |MOAR TONKS?!?!| +|08/01/2022 02:02:07| |OH SHIT SHE'S FLAT| +|08/01/2022 02:02:08| |MEXT IS THE BEST IT HAS GREAT BENEFIT PACKAGES| +|08/01/2022 02:02:08| GUTS! +|08/01/2022 02:02:09| |HANA/YUZU MILK TANKS| +|08/01/2022 02:02:11| SHAKU +|08/01/2022 02:02:12| |TYPE 74 GANG| +|08/01/2022 02:02:14| DIVINATION +|08/01/2022 02:02:17| |LUV TAEKO| +|08/01/2022 02:02:17| HA +|08/01/2022 02:02:18| autism +|08/01/2022 02:02:19| foreshadowing +|08/01/2022 02:02:19| |H A| +|08/01/2022 02:02:24| |SAEMONZA SUMATA| +|08/01/2022 02:02:27| |dumb karina| +|08/01/2022 02:02:28| |history nerd autism| +|08/01/2022 02:02:32| |You will never be mugged in the ship's dark underbelly| +|08/01/2022 02:02:32| EBIN +|08/01/2022 02:02:32| |forced ship lore| +|08/01/2022 02:02:32| |SAKI CAN SEE THROUGH THE WALLS| +|08/01/2022 02:02:34| |We Head East| +|08/01/2022 02:02:35| |Are hippos otaku or chuuni?| +|08/01/2022 02:02:37| |>does it matter?| +|08/01/2022 02:02:38| |dumb rabbits| +|08/01/2022 02:02:38| AzUSA +|08/01/2022 02:02:39| |like the inside of a ship| +|08/01/2022 02:02:43| |All lies| +|08/01/2022 02:02:44| |aaaaa This message was written by 2fast rosehip aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa| +|08/01/2022 02:02:45| |i thought they have ships cause the world is flooded| +|08/01/2022 02:02:46| |because its cool asuza| +|08/01/2022 02:02:48| |more SHIP LORE| +|08/01/2022 02:02:51| |why are their skirts so damn short| +|08/01/2022 02:02:54| |wtf is a tank| +|08/01/2022 02:02:58| |MOAR SAILOR GIRLS| +|08/01/2022 02:02:59| |>school sailor uniform| +|08/01/2022 02:02:59| |Sailor grills are cute| +|08/01/2022 02:03:00| |how the fuck did a tank get in the ship| +|08/01/2022 02:03:01| |CUTE SAILORS| +|08/01/2022 02:03:02| |YET WHAT IS A TANK| +|08/01/2022 02:03:02| butt +|08/01/2022 02:03:05| |BITCH, WE HAVEN'T SEEN TANKS WE'VE BEEN WORKING FOR 8 HOURS WITH NO SLEEP| +|08/01/2022 02:03:07| |A MISERABLE PILE OF SCREWS| +|08/01/2022 02:03:07| >momo +|08/01/2022 02:03:11| |tanks breed in the lower gantries| +|08/01/2022 02:03:11| |fucking Momo| +|08/01/2022 02:03:12| |The skirts are short because ANIME| +|08/01/2022 02:03:13| |TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COM| +|08/01/2022 02:03:14| |MOMO HATE| +|08/01/2022 02:03:18| |shut up momo| +|08/01/2022 02:03:21| |SHUT UP MOMO| +|08/01/2022 02:03:22| |>They have taken the lower levels| +|08/01/2022 02:03:22| |TAN PIRATE| +|08/01/2022 02:03:23| |ANZU ANZU| +|08/01/2022 02:03:24| |based lazy anzu| +|08/01/2022 02:03:25| |momo dumb| +|08/01/2022 02:03:25| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 02:03:27| |TAN PIRATE| +|08/01/2022 02:03:29| volleybutt +|08/01/2022 02:03:29| |TAN PIRATE| +|08/01/2022 02:03:29| |who decided to make Momo the focus of the finales?| +|08/01/2022 02:03:31| DOUDESHOUKA? +|08/01/2022 02:03:31| |Just breed tanks| +|08/01/2022 02:03:32| |SNIFF FEET| +|08/01/2022 02:03:32| flat +|08/01/2022 02:03:33| |ANZU BIG CHILLIN| +|08/01/2022 02:03:37| |Someone should plug up Momo's mouth| +|08/01/2022 02:03:38| |explain why no boys doing senshado| +|08/01/2022 02:03:41| |TAN PIRATE| +|08/01/2022 02:03:44| |Momo is cute and has big tats though| +|08/01/2022 02:03:44| |TAN PIRATE| +|08/01/2022 02:03:48| hung +|08/01/2022 02:03:49| |There it is | +|08/01/2022 02:03:49| |tanks are a girl sport duh| +|08/01/2022 02:03:51| |TAN PIRATE| +|08/01/2022 02:03:51| |>hanging laundry on a rusty heavy pipe| +|08/01/2022 02:03:52| buffering +|08/01/2022 02:03:52| |airing their dirty laundry, eh?| +|08/01/2022 02:03:53| |Boys are flying superior planes| +|08/01/2022 02:03:55| |THIS PANZER IS SLEEPING| +|08/01/2022 02:03:55| FROZE +|08/01/2022 02:03:56| BUFFERING +|08/01/2022 02:03:58| bufferign +|08/01/2022 02:03:59| |Le quack| +|08/01/2022 02:04:00| buffering +|08/01/2022 02:04:00| |Tank of the lake| +|08/01/2022 02:04:01| |>French tank| +|08/01/2022 02:04:01| |TANK FOUND| +|08/01/2022 02:04:02| >Renault +|08/01/2022 02:04:02| >renault +|08/01/2022 02:04:03| |rip stream| +|08/01/2022 02:04:05| |AAAAA BUFFERING| +|08/01/2022 02:04:07| F +|08/01/2022 02:04:08| |NAZI BETTER!| +|08/01/2022 02:04:09| >monty +|08/01/2022 02:04:09| |yeah hard buffers| +|08/01/2022 02:04:10| |IT'S OVER| +|08/01/2022 02:04:11| |Shit tank leave it | +|08/01/2022 02:04:11| >Renault +|08/01/2022 02:04:12| |stream buffer| +|08/01/2022 02:04:16| |CRUNCHING NOISES AND LAUGHTER| +|08/01/2022 02:04:18| |rip stream| +|08/01/2022 02:04:18| |IM BOOOOOFERING| +|08/01/2022 02:04:20| |>frog tanks| +|08/01/2022 02:04:20| |>NOT LIKING MONTY >PLEB TASTE| +|08/01/2022 02:04:21| dead +|08/01/2022 02:04:22| |>Renault... i gotta go...| +|08/01/2022 02:04:22| F +|08/01/2022 02:04:23| |ngl like the screenshot| +|08/01/2022 02:04:27| A +|08/01/2022 02:04:27| |Duck is not shit, Duck is good (for 1940)| +|08/01/2022 02:04:27| |BUFFER NO| +|08/01/2022 02:04:28| ANZU +|08/01/2022 02:04:28| flat +|08/01/2022 02:04:30| |>Monty >Good| +|08/01/2022 02:04:32| |TWINGO TANK| +|08/01/2022 02:04:33| |how many tanks are just sleeping aboard the ship| +|08/01/2022 02:04:39| |JUST A TRENCHCOAT| +|08/01/2022 02:04:40| |Monty better than Patton| +|08/01/2022 02:04:42| |Ugh, Yuckari is smiling...| +|08/01/2022 02:04:42| |happy fluff| +|08/01/2022 02:04:42| |no pants| +|08/01/2022 02:04:42| F +|08/01/2022 02:04:43| |and now stream caught up and I'm 15 seconds behind| +|08/01/2022 02:04:47| |they ded| +|08/01/2022 02:04:47| |fluffy wants that gun inside her| +|08/01/2022 02:04:48| |HOW DO THEY LOSE ALL THESE TANKS| +|08/01/2022 02:04:49| MEAOW +|08/01/2022 02:04:54| |Patton called monty a tired little fart| +|08/01/2022 02:04:54| |KYON KUN DENWA| +|08/01/2022 02:04:55| |TAN PIRATE| +|08/01/2022 02:04:56| |What's so "fresh" about freshmen| +|08/01/2022 02:04:57| dumbunnies +|08/01/2022 02:04:57| SPOOPY +|08/01/2022 02:04:59| |TAN PIRATE| +|08/01/2022 02:05:01| |typical officer| +|08/01/2022 02:05:02| |Just go up idiots| +|08/01/2022 02:05:04| |TAN PIRATE| +|08/01/2022 02:05:04| flat +|08/01/2022 02:05:05| |Based Patton, as always| +|08/01/2022 02:05:06| |Vance Stubbs used to run this city-ship| +|08/01/2022 02:05:07| |More German generals knew of Monty than Patton| +|08/01/2022 02:05:08| |>not my problem| +|08/01/2022 02:05:09| |TAN PIRATE| +|08/01/2022 02:05:10| |DON'T TALK TO THE GIRL IN WHITE| +|08/01/2022 02:05:14| |TAN PIRATE| +|08/01/2022 02:05:15| |Patton was a retard| +|08/01/2022 02:05:15| |Hana, fastest gun in the west| +|08/01/2022 02:05:17| |I have to pee| +|08/01/2022 02:05:18| Spoopy +|08/01/2022 02:05:19| |TAN PIRATE| +|08/01/2022 02:05:21| |How did they even get a tank there?| +|08/01/2022 02:05:22| |die joe boo| +|08/01/2022 02:05:23| |use a bottle| +|08/01/2022 02:05:23| |Based Hana| +|08/01/2022 02:05:24| |TAN PIRATE| +|08/01/2022 02:05:25| |Patton was cool| +|08/01/2022 02:05:27| |USE A PISS BOTTLE| +|08/01/2022 02:05:27| |GOVERNOR GENERAL STUBBS| +|08/01/2022 02:05:27| |Patton was a retard, but he was our retard| +|08/01/2022 02:05:29| |TAN PIRATE| +|08/01/2022 02:05:31| ghosts +|08/01/2022 02:05:33| |patton is dead| +|08/01/2022 02:05:34| |TAN PIRATE| +|08/01/2022 02:05:34| |CHO CHO| +|08/01/2022 02:05:36| |Hana has seen some shit| +|08/01/2022 02:05:36| |watch your light asshole| +|08/01/2022 02:05:37| |WTF guys it's too early for pirates | +|08/01/2022 02:05:39| |Haunted tank ship| +|08/01/2022 02:05:39| |Reminder that Patton wanted to drive to Berlin before the Hurtzen was opened| +|08/01/2022 02:05:40| |based maki| +|08/01/2022 02:05:40| |these poor bunnies| +|08/01/2022 02:05:41| |Ghost of Patton| +|08/01/2022 02:05:42| |wtf ghosts are real?!| +|08/01/2022 02:05:43| |imagine finding a bunch of buns| +|08/01/2022 02:05:43| |No tan pirate for a long time yet.| +|08/01/2022 02:05:43| |Eat Saki to survive| +|08/01/2022 02:05:45| |We need to go deeper into the bowels of the rabbits.| +|08/01/2022 02:05:46| ded +|08/01/2022 02:05:46| |they're going to fucking die | +|08/01/2022 02:05:47| |NO AZUSA DON'T CRY| +|08/01/2022 02:05:48| |PETTAN PETTAN TSURUPETTAN| +|08/01/2022 02:05:48| ;_; +|08/01/2022 02:05:48| |Saki uses telepathy| +|08/01/2022 02:05:50| ToT +|08/01/2022 02:05:50| |Hana's seen footage she stays noided| +|08/01/2022 02:05:50| |crying rabbit | +|08/01/2022 02:05:51| ;__; +|08/01/2022 02:05:52| |DVCE | +|08/01/2022 02:05:53| |>Saki looking at a an empty spot| +|08/01/2022 02:05:55| |fucking Saki| +|08/01/2022 02:05:55| |pero pero pero| +|08/01/2022 02:05:55| KAIZA +|08/01/2022 02:05:56| cringe +|08/01/2022 02:05:57| |SOMEONE IS GOING TO BE EATEN| +|08/01/2022 02:05:58| |Saki seeing the future| +|08/01/2022 02:06:01| |pocket chocolates melt| +|08/01/2022 02:06:01| |entertain the children with sweets, classic| +|08/01/2022 02:06:01| |NO SAORI, THIS IS HOW THEY LURE IN THEIR PREY| +|08/01/2022 02:06:02| |I will not tolerate you fools slandering the REINCARNATION OF HANNIBAL himself| +|08/01/2022 02:06:02| YAY +|08/01/2022 02:06:04| |Ha ha, ghosts aren't real, right you guys?| +|08/01/2022 02:06:05| PEW +|08/01/2022 02:06:05| KOWAI +|08/01/2022 02:06:06| |Priceless Mako reaction| +|08/01/2022 02:06:06| |SAORI HOARDING RATIONS| +|08/01/2022 02:06:06| gudewho +|08/01/2022 02:06:08| hi +|08/01/2022 02:06:10| |He also stopped halfway across the rhine when he crossed it to piss over the side| +|08/01/2022 02:06:12| reception? +|08/01/2022 02:06:13| |autism ringtone| +|08/01/2022 02:06:13| kaisar-dono +|08/01/2022 02:06:16| |tank firing as ringtone BASED| +|08/01/2022 02:06:16| |Eat Yuki| +|08/01/2022 02:06:17| |Patton could have captured Berlin if it weren't for the Bretards| +|08/01/2022 02:06:18| |SORO NEIMU| +|08/01/2022 02:06:19| |SOUL NAME| +|08/01/2022 02:06:19| |Mako is a pussy| +|08/01/2022 02:06:20| |>soul name| +|08/01/2022 02:06:24| |just use a compass| +|08/01/2022 02:06:27| |>compass on a ship| +|08/01/2022 02:06:28| |tank ringtone, I need it| +|08/01/2022 02:06:30| cumpass +|08/01/2022 02:06:30| |I WISH WE HAD SOUL NAMES| +|08/01/2022 02:06:31| |>compass inside a metallic ship| +|08/01/2022 02:06:32| |>Nishi zumi| +|08/01/2022 02:06:34| |Patton could have captured Moscow too desu| +|08/01/2022 02:06:34| |Germany should have won| +|08/01/2022 02:06:35| |Imagine being swarmd by relieved lolis| +|08/01/2022 02:06:36| divination? +|08/01/2022 02:06:38| |>compass inside a massive metal ship| +|08/01/2022 02:06:40| |TAN PIRATE| +|08/01/2022 02:06:40| MIIPORIIIIIIIN +|08/01/2022 02:06:43| cum +|08/01/2022 02:06:44| |I grant you anon the soulname "gigafaggot"| +|08/01/2022 02:06:44| |>He doesn't have a soul name| +|08/01/2022 02:06:44| |how else do they navigate on the seas| +|08/01/2022 02:06:44| |TAN PIRATE| +|08/01/2022 02:06:44| |Cute kouhai| +|08/01/2022 02:06:45| ;_; +|08/01/2022 02:06:46| NEKO +|08/01/2022 02:06:46| |saori's harem| +|08/01/2022 02:06:47| |Thanks Saki| +|08/01/2022 02:06:48| |SEX KITTEN| +|08/01/2022 02:06:49| |TAN PIRATE| +|08/01/2022 02:06:49| want +|08/01/2022 02:06:49| NYAAA +|08/01/2022 02:06:51| |COMPASS IS CARBON COATED| +|08/01/2022 02:06:51| |>the herd| +|08/01/2022 02:06:53| |buffering again| +|08/01/2022 02:06:53| |My gamer waifu.| +|08/01/2022 02:06:53| KOT +|08/01/2022 02:06:53| |What is wrong with Yukari?| +|08/01/2022 02:06:56| |Saori is lost. The rabbits have her now.| +|08/01/2022 02:06:56| TONK +|08/01/2022 02:06:58| |I want to be lost with usagi team| +|08/01/2022 02:06:59| GAMER +|08/01/2022 02:07:00| |thanks for the soulname anon| +|08/01/2022 02:07:00| |TANK FOUND| +|08/01/2022 02:07:00| |PORSCHE TIGER| +|08/01/2022 02:07:00| gamer +|08/01/2022 02:07:01| PORSCHE +|08/01/2022 02:07:03| |I HATE THIS FAGGOT CAT SO FUCKING MUCH| +|08/01/2022 02:07:04| |FUCKING NERD| +|08/01/2022 02:07:04| /v/ermin +|08/01/2022 02:07:04| |PORSCHE TIGER| +|08/01/2022 02:07:04| |YOU'VE BEEN UNDER A TANK THIS ENTIRE TIME!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 02:07:05| nyaa... +|08/01/2022 02:07:06| |GAMER GIRLS| +|08/01/2022 02:07:06| |Gamer moment| +|08/01/2022 02:07:06| |us gamers huh| +|08/01/2022 02:07:07| |LITERALLY ME| +|08/01/2022 02:07:07| OVA +|08/01/2022 02:07:07| NEKONYAAA +|08/01/2022 02:07:07| |BEST GORL INCOMING| +|08/01/2022 02:07:08| |be still, thy beating heart| +|08/01/2022 02:07:08| |GAMERS RISE UP!| +|08/01/2022 02:07:10| nekonigger +|08/01/2022 02:07:10| |How do they move the tank| +|08/01/2022 02:07:12| TORILLE +|08/01/2022 02:07:12| |does anyone like anteater team?| +|08/01/2022 02:07:12| |no prob, gigafaggot| +|08/01/2022 02:07:12| |she gonna start a school boat shooting| +|08/01/2022 02:07:13| PERKLE +|08/01/2022 02:07:13| |Tiger P| +|08/01/2022 02:07:13| GAMERS +|08/01/2022 02:07:14| |WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GI| +|08/01/2022 02:07:14| ouch +|08/01/2022 02:07:14| ;______; +|08/01/2022 02:07:15| |Nekonya got owned| +|08/01/2022 02:07:15| |GAMER GIRL| +|08/01/2022 02:07:16| |FINS ARE CANONOICALLY STONG| +|08/01/2022 02:07:16| IGNORED...... +|08/01/2022 02:07:18| >IGNORED +|08/01/2022 02:07:19| ... +|08/01/2022 02:07:19| |fugg off neko| +|08/01/2022 02:07:20| |IGNORE NERDS| +|08/01/2022 02:07:21| |smelly gamer | +|08/01/2022 02:07:22| |filthy otaku| +|08/01/2022 02:07:23| |was it autism?| +|08/01/2022 02:07:24| |Smelly furry gamer| +|08/01/2022 02:07:24| |the most opressed race, GAMERS| +|08/01/2022 02:07:24| |GAMERS ARE SO OPPRSSED| +|08/01/2022 02:07:24| nyaaa +|08/01/2022 02:07:25| |my soul name is MFSB| +|08/01/2022 02:07:27| chickin +|08/01/2022 02:07:27| nyaaaaa +|08/01/2022 02:07:28| NEKONYA +|08/01/2022 02:07:28| CHICKENHEART +|08/01/2022 02:07:30| flat +|08/01/2022 02:07:30| |RISE UP| +|08/01/2022 02:07:31| |GAMERS ARE LITERALLY THE MOST OPPRESSED GROUP!| +|08/01/2022 02:07:33| |average /a/non| +|08/01/2022 02:07:34| NYAA~ +|08/01/2022 02:07:37| >nekonya +|08/01/2022 02:07:38| SODOKO +|08/01/2022 02:07:38| onaholes +|08/01/2022 02:07:38| SODOKOS +|08/01/2022 02:07:38| |erotic forehead| +|08/01/2022 02:07:39| ARARA +|08/01/2022 02:07:40| |gamers will never rise up| +|08/01/2022 02:07:40| |Pazomi is the best| +|08/01/2022 02:07:41| SODOKO +|08/01/2022 02:07:42| |WORST TEAM| +|08/01/2022 02:07:43| |3 sodokos| +|08/01/2022 02:07:43| clones +|08/01/2022 02:07:43| SODOKO +|08/01/2022 02:07:44| KAPPAS +|08/01/2022 02:07:46| CLONES +|08/01/2022 02:07:46| SEEEEEEEEEEEEEEEEEEEX +|08/01/2022 02:07:51| |REVEL UP| +|08/01/2022 02:07:51| |gotta make more clones| +|08/01/2022 02:07:53| CUTEOKOS +|08/01/2022 02:07:53| |Three (3) Sodokos lmao, THREE| +|08/01/2022 02:07:54| |the clone wars| +|08/01/2022 02:07:57| sodoclones +|08/01/2022 02:07:57| |POZOMI IS THE BEST KO| +|08/01/2022 02:07:57| >MOMO +|08/01/2022 02:07:58| f] +|08/01/2022 02:07:58| HAIBORIDU +|08/01/2022 02:07:59| |MALLARDS A CUTE| +|08/01/2022 02:08:00| |ara ara| +|08/01/2022 02:08:00| |ALL HALL MONITORS ARE BASTARDS| +|08/01/2022 02:08:00| |I'm going to refine Sodoko| +|08/01/2022 02:08:00| |SWEATY TOMBOYS SPOTTED| +|08/01/2022 02:08:02| Arara~ +|08/01/2022 02:08:02| ENTER +|08/01/2022 02:08:02| |Scratch that, mechanics are the best| +|08/01/2022 02:08:02| |ara ara| +|08/01/2022 02:08:03| |Here's /o/!| +|08/01/2022 02:08:04| |SHUT UP MOMO| +|08/01/2022 02:08:05| |fucking momo| +|08/01/2022 02:08:06| |CUTE BOY| +|08/01/2022 02:08:06| |BEST TEAM| +|08/01/2022 02:08:07| |MOMO HATE| +|08/01/2022 02:08:07| |based pit crew| +|08/01/2022 02:08:08| |MOMO DUMB| +|08/01/2022 02:08:08| Mexicans +|08/01/2022 02:08:08| |cute boy| +|08/01/2022 02:08:14| |>TFW no sweaty tomboy GF| +|08/01/2022 02:08:16| |WE NEED NOEL| +|08/01/2022 02:08:16| |BASED LEOPON TEAM| +|08/01/2022 02:08:16| |enemy spotted| +|08/01/2022 02:08:18| HOSHINO +|08/01/2022 02:08:19| >hybrid +|08/01/2022 02:08:20| mania +|08/01/2022 02:08:21| |I WANT HOSHINO| +|08/01/2022 02:08:23| clang! +|08/01/2022 02:08:23| EROTIC +|08/01/2022 02:08:24| |meanwhile at /his/ hq| +|08/01/2022 02:08:26| CLANG +|08/01/2022 02:08:27| RERA +|08/01/2022 02:08:29| DIldos +|08/01/2022 02:08:29| /FIT/ +|08/01/2022 02:08:30| /FIT/ +|08/01/2022 02:08:32| |Live rounds don't make that noise| +|08/01/2022 02:08:32| SPATS +|08/01/2022 02:08:34| /fit/! +|08/01/2022 02:08:34| |VENI VIDI VINCI| +|08/01/2022 02:08:35| |>american training| +|08/01/2022 02:08:36| manlet +|08/01/2022 02:08:37| |the fuck is a soul name| +|08/01/2022 02:08:37| |LIVE MUNITIONS| +|08/01/2022 02:08:38| |>one of those goes off| +|08/01/2022 02:08:38| hnnnngh +|08/01/2022 02:08:39| SPQR +|08/01/2022 02:08:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:08:39| soul +|08/01/2022 02:08:40| caesar! +|08/01/2022 02:08:44| |>ywn visit the /his/haus| +|08/01/2022 02:08:44| |SPATS UOHHHHHHH| +|08/01/2022 02:08:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +|08/01/2022 02:08:45| CLANG +|08/01/2022 02:08:45| SWEATY +|08/01/2022 02:08:46| |IMAGINE THE SMELL| +|08/01/2022 02:08:46| SPQR +|08/01/2022 02:08:46| |good training| +|08/01/2022 02:08:47| SPQR +|08/01/2022 02:08:48| eargasm +|08/01/2022 02:08:49| |SOul name is your rap anme| +|08/01/2022 02:08:50| |BEING LOADER IS HARD| +|08/01/2022 02:08:50| |How many of those shells could she fit at once?| +|08/01/2022 02:08:51| |hina chan| +|08/01/2022 02:08:51| |GAY GAY| +|08/01/2022 02:08:51| ass +|08/01/2022 02:08:54| CUTE +|08/01/2022 02:08:55| |hina chan| +|08/01/2022 02:08:56| CARPACCIO! +|08/01/2022 02:08:57| |wtf my soul name is adolf???| +|08/01/2022 02:08:57| * +|08/01/2022 02:08:58| |S P Q R| +|08/01/2022 02:08:58| |WE WANT DVCE NOT HIPPO SHIT| +|08/01/2022 02:08:59| Booba +|08/01/2022 02:09:00| * +|08/01/2022 02:09:01| |I want to sniff her ass| +|08/01/2022 02:09:07| TAKA-CHAN +|08/01/2022 02:09:08| |[HORNY LAUGHTER)| +|08/01/2022 02:09:08| SPQR +|08/01/2022 02:09:10| |hey adolf, my name is willy| +|08/01/2022 02:09:13| |so why do they live together?| +|08/01/2022 02:09:13| SPY! +|08/01/2022 02:09:14| |>Not much| +|08/01/2022 02:09:17| |SENATVS POPVLVSQVE ROMANVS| +|08/01/2022 02:09:18| |SWIGGITY SWOOTY CARPACCIOS COMING FOR THAT BOOTY| +|08/01/2022 02:09:19| CUTE +|08/01/2022 02:09:22| |>he doesn't know latin| +|08/01/2022 02:09:24| |>we don't have a lot| +|08/01/2022 02:09:26| |>DOESN'T SPEAK ITALIAN| +|08/01/2022 02:09:27| |who is taku-san?| +|08/01/2022 02:09:29| |Per tutti i camerati caduti!| +|08/01/2022 02:09:29| ITARIAN +|08/01/2022 02:09:30| AUTISM +|08/01/2022 02:09:30| ITALIAGO +|08/01/2022 02:09:32| Itarian +|08/01/2022 02:09:35| |THAT'S IT!| +|08/01/2022 02:09:36| dorkoo +|08/01/2022 02:09:37| Dekinai +|08/01/2022 02:09:38| |uh yeah we're in the rockies| +|08/01/2022 02:09:39| |>She doesn't know Italian| +|08/01/2022 02:09:44| |>you don't even know japanese| +|08/01/2022 02:09:46| Lame +|08/01/2022 02:09:49| |the power of historical game players| +|08/01/2022 02:09:50| |>pizza pasta spaghetti| +|08/01/2022 02:09:51| |tell me, why does she close the 1 eye?| +|08/01/2022 02:09:57| |>there are people in this stream who don't know latin| +|08/01/2022 02:09:58| |ONE EYE FLAT| +|08/01/2022 02:10:03| |semen in it| +|08/01/2022 02:10:03| ngmi +|08/01/2022 02:10:03| |/his/ nerds| +|08/01/2022 02:10:03| |SSaving it for nightime| +|08/01/2022 02:10:07| |THAT'S IT!| +|08/01/2022 02:10:09| |HAIL CAESAR o/| +|08/01/2022 02:10:09| |SORE DA| +|08/01/2022 02:10:11| |AY' TONE YOU MUST HEAR THIS| +|08/01/2022 02:10:13| OPENYOUREYE +|08/01/2022 02:10:17| |"RIVAL" IS THAT WHAT THE GIRLS ARE CALLING IT| +|08/01/2022 02:10:19| |SORE DA!!!!!| +|08/01/2022 02:10:20| |what's a joe ekins| +|08/01/2022 02:10:21| |SORE DA| +|08/01/2022 02:10:21| |SORE DA| +|08/01/2022 02:10:21| who? +|08/01/2022 02:10:22| |SORE DA!| +|08/01/2022 02:10:22| |SORE DA| +|08/01/2022 02:10:22| |SORE DA| +|08/01/2022 02:10:22| |sore da| +|08/01/2022 02:10:23| |SORE DA| +|08/01/2022 02:10:23| |SORE DA| +|08/01/2022 02:10:24| |SORE DA| +|08/01/2022 02:10:25| EILA +|08/01/2022 02:10:28| |literally who| +|08/01/2022 02:10:30| |>they don't know| +|08/01/2022 02:10:30| |SORE DA!| +|08/01/2022 02:10:31| |if those names existed does that mean ww2 actually happened| +|08/01/2022 02:10:38| |WHO WOULD WIN: PANZER ACE OR BRIT SHOE FACTORY WORKER?| +|08/01/2022 02:10:39| |SEGRETO :DDDDDDDD| +|08/01/2022 02:10:40| PIYOPIYO +|08/01/2022 02:10:40| pyu +|08/01/2022 02:10:42| |AZUSA ON SCREEN| +|08/01/2022 02:10:42| |N O R I K O| +|08/01/2022 02:10:42| |Joseph William Ekins was a World War II British Army veteran. He gained recognition for his action as a tank gunner in France in which he de| +|08/01/2022 02:10:43| |pyon pyon machi| +|08/01/2022 02:10:44| |PIYO PIYP| +|08/01/2022 02:10:49| |Just got off work, what episode are we on?| +|08/01/2022 02:10:56| |Like 8 something| +|08/01/2022 02:10:56| |anzio OVA| +|08/01/2022 02:10:56| Anzio +|08/01/2022 02:11:01| |ep 7/anzio OVA| +|08/01/2022 02:11:02| |This is OVA7| +|08/01/2022 02:11:06| |Lonely text| +|08/01/2022 02:11:10| |>Ankou-team >heavy tank| +|08/01/2022 02:11:11| |still first, no ed yet| +|08/01/2022 02:11:11| |very lonely| +|08/01/2022 02:11:14| |That's no Sheridan, it's a T-80| +|08/01/2022 02:11:16| |hi lonely im dad| +|08/01/2022 02:11:17| |tfw no gf| +|08/01/2022 02:11:21| |PIYO PIYO| +|08/01/2022 02:11:32| |damn how long is this going to be| +|08/01/2022 02:11:33| |More like PU| +|08/01/2022 02:11:36| |Okay I *have* to take pills, jaw is killing me| +|08/01/2022 02:11:36| yes +|08/01/2022 02:11:40| GUTS +|08/01/2022 02:11:40| |evade? in our moment of victory?| +|08/01/2022 02:11:43| >MISSED +|08/01/2022 02:11:44| | can someone do the maths| +|08/01/2022 02:11:45| meds +|08/01/2022 02:11:47| |wow momo can't hit shit| +|08/01/2022 02:11:48| |Aren't we legit going to pee what the fuck| +|08/01/2022 02:11:50| UTE +|08/01/2022 02:11:51| |no meds| +|08/01/2022 02:11:52| |Ugh guys I think I'm gonna need to change my thong, brb| +|08/01/2022 02:11:53| |should be about 7-8 hours left| +|08/01/2022 02:11:57| >momo +|08/01/2022 02:11:59| |momo fucking sucks| +|08/01/2022 02:11:59| |>Needing to pee| +|08/01/2022 02:11:59| |MOMO YOU MISSED| +|08/01/2022 02:12:02| >momo +|08/01/2022 02:12:02| |I HATE MOMO I HATE MOMO | +|08/01/2022 02:12:02| |momo can't hit shit| +|08/01/2022 02:12:02| |piss on the floor| +|08/01/2022 02:12:04| |MOMO YOU RETARD| +|08/01/2022 02:12:04| >thong +|08/01/2022 02:12:06| AzUSA +|08/01/2022 02:12:06| |pee in momo's mouth| +|08/01/2022 02:12:06| |Holy shit momo| +|08/01/2022 02:12:08| |GAS GAS GAS| +|08/01/2022 02:12:08| |MANKO HAYAI| +|08/01/2022 02:12:09| |REMEMBER TO TAKE YOUR ESTROGEN SISTERS| +|08/01/2022 02:12:09| |Store more pee in your balls| +|08/01/2022 02:12:11| |MOMO SUCKS| +|08/01/2022 02:12:13| |Guys I need to change my bra, brb| +|08/01/2022 02:12:19| |they can't pee in the tank so why should you| +|08/01/2022 02:12:21| |MANKO DOCCHI| +|08/01/2022 02:12:24| |remember to take your APDSFS amigos| +|08/01/2022 02:12:30| BONK +|08/01/2022 02:12:33| |mirage tank| +|08/01/2022 02:12:36| test +|08/01/2022 02:12:40| test +|08/01/2022 02:12:40| |you failed| +|08/01/2022 02:12:41| pass +|08/01/2022 02:12:42| test +|08/01/2022 02:12:42| |TEST FAILED| +|08/01/2022 02:12:44| |Stug lyfe| +|08/01/2022 02:12:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:12:49| |what are we drinking tonight bois?| +|08/01/2022 02:12:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:12:52| |testing testing....mic check| +|08/01/2022 02:12:56| WATER +|08/01/2022 02:12:56| |IMAGINE IF YOU WERE TO BE KILLED FROM THAT RANGE. THAT'LL NEVER HAPPEN.| +|08/01/2022 02:12:59| |It'll never happen| +|08/01/2022 02:12:59| |Asahi as usual for me| +|08/01/2022 02:13:01| |Mile long shot| +|08/01/2022 02:13:01| |HELLO CAN YOU HEAR ME| +|08/01/2022 02:13:02| eggnog +|08/01/2022 02:13:03| |Tea now, rum later| +|08/01/2022 02:13:03| |>I didn't choose the StuG life, I was drafted by the wehrmacht| +|08/01/2022 02:13:08| |miho doesn't even blink holy shit| +|08/01/2022 02:13:10| |ONTARIO WILL BE FUCKING NUKED| +|08/01/2022 02:13:11| |Aim for her hea| +|08/01/2022 02:13:12| |History club >>>>>>| +|08/01/2022 02:13:12| |strenght training| +|08/01/2022 02:13:13| |jesus christ get inside| +|08/01/2022 02:13:13| fearless +|08/01/2022 02:13:14| >subs +|08/01/2022 02:13:14| |Best girl| +|08/01/2022 02:13:15| |Beer and vodka atm| +|08/01/2022 02:13:16| a +|08/01/2022 02:13:17| |Thousand mile stare| +|08/01/2022 02:13:18| |carbon coating fears none| +|08/01/2022 02:13:19| |This little training montage is great| +|08/01/2022 02:13:20| |SOne-eyed miho | +|08/01/2022 02:13:24| |sugoi subs| +|08/01/2022 02:13:24| |SOMEWHERE THE WHITE WITCH IS WATCHING| +|08/01/2022 02:13:25| |carbon coated confidence| +|08/01/2022 02:13:29| ontariobros... +|08/01/2022 02:13:29| GUTS +|08/01/2022 02:13:29| |*Stone eyed| +|08/01/2022 02:13:29| rekt +|08/01/2022 02:13:31| OUTSKILLED +|08/01/2022 02:13:32| |X X| +|08/01/2022 02:13:33| |shoot me again fuckers| +|08/01/2022 02:13:34| OBLITERATED +|08/01/2022 02:13:36| |XX - - @ @| +|08/01/2022 02:13:38| GUTS +|08/01/2022 02:13:42| |GAS GAS GAS| +|08/01/2022 02:13:43| GUTS +|08/01/2022 02:13:43| LOUDER +|08/01/2022 02:13:45| GUTS +|08/01/2022 02:13:45| GUTS +|08/01/2022 02:13:47| GUTS +|08/01/2022 02:13:47| GUTS +|08/01/2022 02:13:47| |GATSU GATSU GATSU| +|08/01/2022 02:13:47| GUTS +|08/01/2022 02:13:47| GUTS +|08/01/2022 02:13:47| GUTS! +|08/01/2022 02:13:48| |Based Anzu| +|08/01/2022 02:13:48| GUTS +|08/01/2022 02:13:48| GATTSU +|08/01/2022 02:13:48| GUTS +|08/01/2022 02:13:48| |GUTS DO YOU HAVE IT| +|08/01/2022 02:13:48| GUTS!! +|08/01/2022 02:13:49| GUTS +|08/01/2022 02:13:49| GUTS +|08/01/2022 02:13:50| |>duck team >brains| +|08/01/2022 02:13:50| GUTS +|08/01/2022 02:13:50| GUTS +|08/01/2022 02:13:51| GATSU +|08/01/2022 02:13:52| GUTS +|08/01/2022 02:13:53| |HAI YAI FORCES| +|08/01/2022 02:13:53| |HAYAI FORCE| +|08/01/2022 02:13:54| FASTER +|08/01/2022 02:13:57| MIURA +|08/01/2022 02:13:58| |Running in the 40s| +|08/01/2022 02:13:59| GRRRIIIIIIFFFFFFIIIIITHHHHHHH +|08/01/2022 02:14:02| |based anzu| +|08/01/2022 02:14:04| FORCESMIND... +|08/01/2022 02:14:06| DEJA'VU +|08/01/2022 02:14:08| dorks +|08/01/2022 02:14:09| |Was thtas useful at all for the bunnies?| +|08/01/2022 02:14:10| |MY LOVE FOR YOU IS LIKE A TRUCK| +|08/01/2022 02:14:12| PASTA +|08/01/2022 02:14:13| |BUTTER !| +|08/01/2022 02:14:15| butter +|08/01/2022 02:14:16| BERSERKER +|08/01/2022 02:14:17| bERSERKERERRR +|08/01/2022 02:14:20| |Sorry... I'm peeing myself| +|08/01/2022 02:14:20| BERSERKER +|08/01/2022 02:14:21| |>Using tanks are racing cars| +|08/01/2022 02:14:22| |slice of life time| +|08/01/2022 02:14:24| ITALIA +|08/01/2022 02:14:24| ded +|08/01/2022 02:14:26| |NICE ITALIAN BISTRO| +|08/01/2022 02:14:26| |RAEP RAEP| +|08/01/2022 02:14:29| |PUT YOUR GRASSES ON| +|08/01/2022 02:14:29| WEW +|08/01/2022 02:14:29| |DO YOU WANT TO MAKING FUCK?| +|08/01/2022 02:14:32| um...... +|08/01/2022 02:14:32| |are we watching yukari corner?| +|08/01/2022 02:14:33| |WAKE ME UP INSIDE| +|08/01/2022 02:14:34| |maho pee| +|08/01/2022 02:14:35| |my poop is getting carbon coated from holding it so long| +|08/01/2022 02:14:36| BERSERKER +|08/01/2022 02:14:37| |she's me| +|08/01/2022 02:14:38| |Kanata pls4| +|08/01/2022 02:14:39| |>he doesn't use a diaper| +|08/01/2022 02:14:40| feet +|08/01/2022 02:14:41| umaaaaaaaaaaaaaaaaaa +|08/01/2022 02:14:41| |MANKO FEET| +|08/01/2022 02:14:42| |Yeah, Tank courses after stream| +|08/01/2022 02:14:43| FEET +|08/01/2022 02:14:43| feet +|08/01/2022 02:14:43| |rip in piece mako| +|08/01/2022 02:14:44| |I WANT TO SNIFF HER FEET| +|08/01/2022 02:14:44| |THIS DRIVER IS DEAD| +|08/01/2022 02:14:44| feet +|08/01/2022 02:14:45| |PRONE BONE| +|08/01/2022 02:14:45| |oh great, she's dead| +|08/01/2022 02:14:45| |bare feet| +|08/01/2022 02:14:46| >feet +|08/01/2022 02:14:47| UUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHH +|08/01/2022 02:14:47| |PRONE BONE| +|08/01/2022 02:14:49| |did he say making fuck? | +|08/01/2022 02:14:49| Me +|08/01/2022 02:14:49| |Mako-san that's not a kotatsu| +|08/01/2022 02:14:56| >Ham +|08/01/2022 02:14:57| |make sure your toilet is carbon coated| +|08/01/2022 02:15:01| ehhh +|08/01/2022 02:15:04| |>doesn't watch the stream from hsi toilet the entire time| +|08/01/2022 02:15:06| ;___; +|08/01/2022 02:15:07| hammu +|08/01/2022 02:15:07| |Saori should be strict with me| +|08/01/2022 02:15:07| |Saori the Ham| +|08/01/2022 02:15:08| |Europeans breaking our circadian rhythm| +|08/01/2022 02:15:09| |becoming ham| +|08/01/2022 02:15:09| |RIP my circadian rhythm| +|08/01/2022 02:15:12| |BECOME HAM| +|08/01/2022 02:15:13| |she already is| +|08/01/2022 02:15:15| |cute glasses| +|08/01/2022 02:15:16| |THIGHS! HAM!| +|08/01/2022 02:15:17| |my 5 wives | +|08/01/2022 02:15:18| MEGANE +|08/01/2022 02:15:20| |So when are we buying our tank, guys?| +|08/01/2022 02:15:20| |>not animated | +|08/01/2022 02:15:21| |>SAORI PICKING UP 50 YO MEN ON THE HAM RADIO| +|08/01/2022 02:15:21| |My poopp was so carbon caoted it cloggec the toilet| +|08/01/2022 02:15:22| |I dont want to see Yukari cry| +|08/01/2022 02:15:23| Aprons! +|08/01/2022 02:15:23| |THEY MAY TAKE OUR LIVES BUT THEY'LL NEVER TAKE OUR GRIFFISU| +|08/01/2022 02:15:24| moooooooooooot +|08/01/2022 02:15:24| |ROGER SMITH NO| +|08/01/2022 02:15:24| |cicada rhythm| +|08/01/2022 02:15:25| |reject tank become ham| +|08/01/2022 02:15:26| |SAORI PLEASE BE MY HOUSEWIFE| +|08/01/2022 02:15:27| |CUTE MEGANE| +|08/01/2022 02:15:30| |RIP AND TEAR| +|08/01/2022 02:15:30| |does water actually stop onions from making you cry| +|08/01/2022 02:15:30| |What the fuck is this shit they're calling "food"| +|08/01/2022 02:15:32| |RIP AND TEAR| +|08/01/2022 02:15:35| |STOP TALKING ABOUT POOP| +|08/01/2022 02:15:36| |cute fish| +|08/01/2022 02:15:38| UOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:15:38| |all ready for sora no woto| +|08/01/2022 02:15:38| |Took meds and got more pizza| +|08/01/2022 02:15:39| |>TFW ITLL BE 8AM FOR ME WHEN THIS FINISHES| +|08/01/2022 02:15:40| |is there a god in this universe| +|08/01/2022 02:15:40| |Big Bath!| +|08/01/2022 02:15:40| |Why not make good cuisine, like British?| +|08/01/2022 02:15:41| ToT +|08/01/2022 02:15:41| ToT +|08/01/2022 02:15:41| |Fuck, I want carpaccio| +|08/01/2022 02:15:42| ToT +|08/01/2022 02:15:45| |caprese is good| +|08/01/2022 02:15:46| |I wish I had food ;________;| +|08/01/2022 02:15:46| |UOHHHHH ToT| +|08/01/2022 02:15:46| ToT +|08/01/2022 02:15:49| IKADEKIMASU +|08/01/2022 02:15:49| |which gup poop would you| +|08/01/2022 02:15:50| |did the voices go away anon?| +|08/01/2022 02:15:51| ITADAKIMASU +|08/01/2022 02:15:51| |THEY ARE LITTLE GIRLS YOU SICK FUCKS| +|08/01/2022 02:15:51| |>british cuisine| +|08/01/2022 02:15:52| |POOP POOP POOP POOP POOP| +|08/01/2022 02:15:52| |eat a duck he must| +|08/01/2022 02:15:53| |momo's momos| +|08/01/2022 02:15:54| UOHHHHHH +|08/01/2022 02:15:54| |NO SEAMS| +|08/01/2022 02:15:55| WEW +|08/01/2022 02:15:55| FLAT +|08/01/2022 02:15:55| |Anons, I'm getting tipsy| +|08/01/2022 02:15:56| Momouuuoooghhh +|08/01/2022 02:15:57| uooooooooooooohhhhhhhhhhhhh +|08/01/2022 02:15:58| TIDDIES +|08/01/2022 02:15:59| FLAT +|08/01/2022 02:15:59| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:15:59| |guppie soup...| +|08/01/2022 02:16:00| UOHHHHHHH +|08/01/2022 02:16:00| |NAKED BUNNIES| +|08/01/2022 02:16:01| |small gupies| +|08/01/2022 02:16:01| nice +|08/01/2022 02:16:01| |why wasn't I born in the GuP universe ....| +|08/01/2022 02:16:01| BOOBA +|08/01/2022 02:16:01| |BATH SCENE 2 LETS GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 02:16:02| service +|08/01/2022 02:16:03| |Rabbit stew| +|08/01/2022 02:16:03| |thanks god for giving me vision| +|08/01/2022 02:16:03| BOOBA +|08/01/2022 02:16:03| |stay hydrated| +|08/01/2022 02:16:04| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:04| UUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:04| |AZUSA ON SCREEN| +|08/01/2022 02:16:05| UOHHHHHHH +|08/01/2022 02:16:05| |stand up| +|08/01/2022 02:16:05| |I'm pretty sure these girls don't poop| +|08/01/2022 02:16:05| |D F C| +|08/01/2022 02:16:06| Nice +|08/01/2022 02:16:06| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:07| |Miho back| +|08/01/2022 02:16:07| |UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHH ToT| +|08/01/2022 02:16:07| |ANZU CHEST!| +|08/01/2022 02:16:07| |UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHH ANZU| +|08/01/2022 02:16:08| |THIS CUT MAKES NO SENSE| +|08/01/2022 02:16:08| COOOOMING +|08/01/2022 02:16:09| |UOOOOOH ANZU'S DFC| +|08/01/2022 02:16:09| ERECT +|08/01/2022 02:16:09| |A BOARD| +|08/01/2022 02:16:10| |holy shit anzu is so flat| +|08/01/2022 02:16:10| UOOOOOOOOOOOOOOOHHHHHH +|08/01/2022 02:16:11| |cunny soup| +|08/01/2022 02:16:13| YEAAAAAAAAAAa +|08/01/2022 02:16:13| UUUUUOOOOOHHHHHHHHH +|08/01/2022 02:16:14| aaah +|08/01/2022 02:16:14| |Talking about poop on a pasta ova is a british plot, keep your guard up| +|08/01/2022 02:16:15| UHOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:16| NAKED +|08/01/2022 02:16:17| lol +|08/01/2022 02:16:17| BIG +|08/01/2022 02:16:18| |erwin likes what she sees| +|08/01/2022 02:16:18| uooooooooooohhhhhhhhhhhhhhhhhhhhhh +|08/01/2022 02:16:19| SABISU~~SABISUU +|08/01/2022 02:16:20| |MIHO'S FAT ASS| +|08/01/2022 02:16:20| |SEGGS SEGGS SEGGS SEGGS| +|08/01/2022 02:16:20| |UOOOOOOOOOOOOOOOOOOOOOOHHHHH :_;| +|08/01/2022 02:16:21| UUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHh +|08/01/2022 02:16:22| UOOOOOOOOOHHHHHH +|08/01/2022 02:16:22| wew +|08/01/2022 02:16:23| WOOOOOOOOO +|08/01/2022 02:16:23| |Erwin sees| +|08/01/2022 02:16:23| |naked miho| +|08/01/2022 02:16:24| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:24| ENF! +|08/01/2022 02:16:24| |Pour one out for the blind anons out there| +|08/01/2022 02:16:24| |FULL FRONTAL| +|08/01/2022 02:16:25| |OFF SCREENED | +|08/01/2022 02:16:26| o/ +|08/01/2022 02:16:26| UOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:26| LEWD +|08/01/2022 02:16:26| NAISU +|08/01/2022 02:16:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:27| |MIC WHY| +|08/01/2022 02:16:27| Shameless +|08/01/2022 02:16:28| |>skipped batttle scene| +|08/01/2022 02:16:28| |Anzu's boobs are on the negative plane| +|08/01/2022 02:16:29| ooooooooooooooooooooooooooooooooh +|08/01/2022 02:16:31| Sleepy +|08/01/2022 02:16:31| |AIIIIIIIIIIIEEEEEEEEE MY ITALIAN TANKS| +|08/01/2022 02:16:32| JOBBERS +|08/01/2022 02:16:32| |that was quicker than me in bed| +|08/01/2022 02:16:32| OOOOOOOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGGGGGGGGGGGGGGGGGGGG +|08/01/2022 02:16:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:33| RIGGED +|08/01/2022 02:16:33| anziobros... +|08/01/2022 02:16:33| |WHAT THE FUCK| +|08/01/2022 02:16:34| DVCE! +|08/01/2022 02:16:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvvv| +|08/01/2022 02:16:35| DUCE +|08/01/2022 02:16:35| |Well that was quick| +|08/01/2022 02:16:35| DUCE +|08/01/2022 02:16:35| duce... +|08/01/2022 02:16:36| |miho's rallying tits| +|08/01/2022 02:16:36| |yall dvces is late| +|08/01/2022 02:16:36| wait +|08/01/2022 02:16:37| JOBBED +|08/01/2022 02:16:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:37| |Spoiling the next episode| +|08/01/2022 02:16:38| RIGGED +|08/01/2022 02:16:38| |DUCE REKT| +|08/01/2022 02:16:38| SPOILER +|08/01/2022 02:16:38| dvcebros.... +|08/01/2022 02:16:38| |Oops I fucked up| +|08/01/2022 02:16:39| |DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! | +|08/01/2022 02:16:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +|08/01/2022 02:16:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:39| |ANZIO BTFO| +|08/01/2022 02:16:40| |DUCE DUCE DUCE DUCE| +|08/01/2022 02:16:40| SKIPPED +|08/01/2022 02:16:40| |No match? What?| +|08/01/2022 02:16:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:41| |WE GOT TOO COCKY ANZIOBROS| +|08/01/2022 02:16:41| |Duce... | +|08/01/2022 02:16:42| |Nice supercut faggots| +|08/01/2022 02:16:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:16:44| |DUCE IS FUCKING DEAD| +|08/01/2022 02:16:44| |>not spliced in| +|08/01/2022 02:16:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +|08/01/2022 02:16:45| |wtf why wasn't it spliced in?| +|08/01/2022 02:16:46| SKIPPED +|08/01/2022 02:16:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:47| DUCE? +|08/01/2022 02:16:47| |JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +|08/01/2022 02:16:48| SPOILER +|08/01/2022 02:16:48| |MIHO SAMA I KNEEL PLEASE DONT SHOOT MY SHITALIAN TANKS| +|08/01/2022 02:16:48| |OH BOY I WONDER WHO WILL WIN| +|08/01/2022 02:16:48| SEAMLESS +|08/01/2022 02:16:49| |SPOILERS WTF| +|08/01/2022 02:16:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvv| +|08/01/2022 02:16:50| |why does the supercut show the end first?| +|08/01/2022 02:16:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:50| Duce.... +|08/01/2022 02:16:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:52| |Weird editing| +|08/01/2022 02:16:53| SEAMLESS +|08/01/2022 02:16:54| |SKIPPED LOL| +|08/01/2022 02:16:54| |what is this cut| +|08/01/2022 02:16:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +|08/01/2022 02:16:54| |WITHOUT SEAMS| +|08/01/2022 02:16:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:55| |weird cut| +|08/01/2022 02:16:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:55| |JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +|08/01/2022 02:16:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:56| DUCE +|08/01/2022 02:16:57| FLAT +|08/01/2022 02:16:57| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:16:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:58| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:16:58| SPOLILED +|08/01/2022 02:16:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:59| |THE FUCK WAS THAT CUT| +|08/01/2022 02:17:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvvvvv| +|08/01/2022 02:17:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:01| |DUCE DUCE DUCE| +|08/01/2022 02:17:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:01| |>EDITOR-KUN FUCKED UP| +|08/01/2022 02:17:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:02| |i love the little clap hana and yukari have| +|08/01/2022 02:17:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:02| |DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:03| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:05| |cool edit| +|08/01/2022 02:17:05| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:17:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:06| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:07| |what just happened... | +|08/01/2022 02:17:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:08| |editor is FIRED| +|08/01/2022 02:17:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:10| |DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:10| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:17:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE| +|08/01/2022 02:17:10| |CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +|08/01/2022 02:17:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:12| |JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +|08/01/2022 02:17:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:13| CHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKO +|08/01/2022 02:17:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:16| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:17:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:16| ANCHOVY +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:18| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:17:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:20| |im confuse| +|08/01/2022 02:17:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:21| |WHAT DUCE LOST!?!?!?!?!?!| +|08/01/2022 02:17:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:22| |HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR| +|08/01/2022 02:17:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:23| gay +|08/01/2022 02:17:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:24| |CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +|08/01/2022 02:17:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:27| |JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE | +|08/01/2022 02:17:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 02:17:29| INTERLOCKED +|08/01/2022 02:17:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:30| DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +|08/01/2022 02:17:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:31| |CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +|08/01/2022 02:17:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:32| DUCE +|08/01/2022 02:17:32| BIG +|08/01/2022 02:17:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:33| O.O +|08/01/2022 02:17:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:34| CUTE +|08/01/2022 02:17:34| Hina-chan! +|08/01/2022 02:17:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:35| |HINA CHAN| +|08/01/2022 02:17:35| |Chubby child| +|08/01/2022 02:17:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:35| |CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +|08/01/2022 02:17:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:36| gayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +|08/01/2022 02:17:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:37| GAAAAAAAAAAAAAAAAAYYYYYYYYYYYYYYYYYYYYYY +|08/01/2022 02:17:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:38| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 02:17:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +|08/01/2022 02:17:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:40| taka-chan!!!!!! +|08/01/2022 02:17:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:40| lesbians +|08/01/2022 02:17:42| |LEZ MOMENT| +|08/01/2022 02:17:42| |who is taka| +|08/01/2022 02:17:42| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:17:42| HISASHIBURI +|08/01/2022 02:17:43| |Roman dykery| +|08/01/2022 02:17:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:45| HINA-CHAN!!!!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 02:17:46| GAAAYYYY +|08/01/2022 02:17:47| |lewd handholding| +|08/01/2022 02:17:47| SOUL +|08/01/2022 02:17:49| |YURI YURI YURI| +|08/01/2022 02:17:50| |Cute "friends"| +|08/01/2022 02:17:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +|08/01/2022 02:17:52| hayamin... +|08/01/2022 02:17:52| |bye taka chan| +|08/01/2022 02:17:52| |ONE DIES TODAY| +|08/01/2022 02:17:52| |we want dvce not other italien| +|08/01/2022 02:17:54| |/u/fags >>>out| +|08/01/2022 02:17:54| |definitely lesbians| +|08/01/2022 02:17:54| gays +|08/01/2022 02:17:55| |Big gay energy| +|08/01/2022 02:17:55| Taka-chan +|08/01/2022 02:17:57| |Yuri time| +|08/01/2022 02:18:00| |How do two girls have sex in a tank?| +|08/01/2022 02:18:01| |huuuu huuu| +|08/01/2022 02:18:01| |>FAILED RP| +|08/01/2022 02:18:01| CUTE! +|08/01/2022 02:18:02| |TOMODACHI ;_;| +|08/01/2022 02:18:03| |So gay | +|08/01/2022 02:18:03| |ahhhhh cute| +|08/01/2022 02:18:04| |hue hue~| +|08/01/2022 02:18:04| |don't hold hands thats how you get pregnant| +|08/01/2022 02:18:06| |>blonde >green eyes| +|08/01/2022 02:18:06| Cute +|08/01/2022 02:18:07| |hue hue| +|08/01/2022 02:18:07| |AVE TRUE TO CAESER| +|08/01/2022 02:18:09| OTP +|08/01/2022 02:18:09| |BAI BAI| +|08/01/2022 02:18:09| CUTE +|08/01/2022 02:18:09| baibai +|08/01/2022 02:18:09| |Bye bye!| +|08/01/2022 02:18:10| |best seiyuu| +|08/01/2022 02:18:10| |Bye Bye| +|08/01/2022 02:18:10| |bai bai| +|08/01/2022 02:18:10| |LESBIAN SEX| +|08/01/2022 02:18:11| |bye bye| +|08/01/2022 02:18:11| |HUE HUE HUE| +|08/01/2022 02:18:13| |TAKA CHAN| +|08/01/2022 02:18:13| |fooo fooo| +|08/01/2022 02:18:14| |failed rp lmao| +|08/01/2022 02:18:14| TAKACHAN +|08/01/2022 02:18:15| AVE +|08/01/2022 02:18:16| taka-chan +|08/01/2022 02:18:16| |hyu hyu| +|08/01/2022 02:18:16| |FRIEND FOOTBALL FRIEND| +|08/01/2022 02:18:17| taka-chan +|08/01/2022 02:18:17| HUEHUEHUE +|08/01/2022 02:18:17| |bai bai| +|08/01/2022 02:18:18| DVCE +|08/01/2022 02:18:19| |hyu hyu| +|08/01/2022 02:18:19| |HYU HYU| +|08/01/2022 02:18:21| |kyu kyu| +|08/01/2022 02:18:22| adorbs +|08/01/2022 02:18:22| |cute friends| +|08/01/2022 02:18:23| |GOD CARPACCIO IS MADE FOR BREEDING| +|08/01/2022 02:18:23| cute +|08/01/2022 02:18:24| |i bet oryou smells like cheese| +|08/01/2022 02:18:24| |Yuri shall conquer the worldo| +|08/01/2022 02:18:24| AVANTI +|08/01/2022 02:18:24| |panzer iv| +|08/01/2022 02:18:25| |panza vor| +|08/01/2022 02:18:25| |TOOT TOOOT| +|08/01/2022 02:18:25| AVANTI +|08/01/2022 02:18:25| |panzer who?| +|08/01/2022 02:18:26| |Pantsu VOR | +|08/01/2022 02:18:26| |PANZER FOUR| +|08/01/2022 02:18:27| |Panter Panties 4| +|08/01/2022 02:18:27| AVANTJII +|08/01/2022 02:18:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:27| AVANTI +|08/01/2022 02:18:29| *sip* +|08/01/2022 02:18:29| |cute girls| +|08/01/2022 02:18:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:18:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:33| |Yuri shal conquer the worldo| +|08/01/2022 02:18:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:36| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 02:18:36| PASTA +|08/01/2022 02:18:36| |PANZER VOR PANZER VOR| +|08/01/2022 02:18:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:37| ZUCCHINI +|08/01/2022 02:18:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:18:39| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:39| DUCE +|08/01/2022 02:18:40| |PANZER VOR| +|08/01/2022 02:18:40| |PANTSU VOR| +|08/01/2022 02:18:40| |PANZER VOR| +|08/01/2022 02:18:41| |PANZER VOR| +|08/01/2022 02:18:42| |I'd go for some pasta now| +|08/01/2022 02:18:43| AVANTI +|08/01/2022 02:18:43| |PANZER VOR| +|08/01/2022 02:18:44| |panzer vor!| +|08/01/2022 02:18:45| AVANTI!!!!!!!!!!! +|08/01/2022 02:18:45| AVANTI! +|08/01/2022 02:18:45| AVANTI +|08/01/2022 02:18:45| |o/ for DVCE| +|08/01/2022 02:18:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:47| |PANZER VOR| +|08/01/2022 02:18:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:47| |PANTSU FOR| +|08/01/2022 02:18:48| yosh +|08/01/2022 02:18:48| AVANTI +|08/01/2022 02:18:49| |Panzer dez this nuts| +|08/01/2022 02:18:49| AVANTI +|08/01/2022 02:18:49| |Avanti means susume| +|08/01/2022 02:18:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:18:50| AVANTI +|08/01/2022 02:18:50| AVANTI +|08/01/2022 02:18:51| |FIAMME NERE| +|08/01/2022 02:18:52| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCE| +|08/01/2022 02:18:53| PASTA +|08/01/2022 02:18:53| |WE GOT THIS ONE IN THE BAG ANZIO BROS| +|08/01/2022 02:18:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:54| BAKARONI +|08/01/2022 02:18:55| DUCE +|08/01/2022 02:18:56| Macaroni? +|08/01/2022 02:18:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:58| |Goddamnit this is making me hungry | +|08/01/2022 02:18:58| |FOR THE PASTA| +|08/01/2022 02:18:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:59| |What does panzer vor mean?| +|08/01/2022 02:18:59| tanketes.... +|08/01/2022 02:18:59| bakaroni +|08/01/2022 02:19:01| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:19:02| |ANZIO HAS SPIRIT| +|08/01/2022 02:19:06| EWHat +|08/01/2022 02:19:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:19:08| |MAMA MIA| +|08/01/2022 02:19:09| |ANZIOBROS GIVE THEM YOUR ENERGY| +|08/01/2022 02:19:11| BAKARONI +|08/01/2022 02:19:11| |UOOH TANKETTES | +|08/01/2022 02:19:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:19:13| bufferoni +|08/01/2022 02:19:13| OKAY +|08/01/2022 02:19:13| |i cooka da pizza| +|08/01/2022 02:19:14| buffering +|08/01/2022 02:19:15| delicious +|08/01/2022 02:19:17| |Panzer vor means "penetrate me"| +|08/01/2022 02:19:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:19:18| |reminder than anchovy's lil bro is fucking EVERYONE in anzio| +|08/01/2022 02:19:22| bufferoni +|08/01/2022 02:19:22| |hard buffers| +|08/01/2022 02:19:24| |IT'S ANZIO'S YEAR| +|08/01/2022 02:19:25| |cute bakas| +|08/01/2022 02:19:27| buff +|08/01/2022 02:19:29| |Leave macaroni alone| +|08/01/2022 02:19:30| |rip stream| +|08/01/2022 02:19:31| |GET THE CARDBOARDS GET THE CARDBOARDS| +|08/01/2022 02:19:32| sbuffghetti +|08/01/2022 02:19:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:19:37| |Operation Macaroni and cheese| +|08/01/2022 02:19:37| |Nice powerpoint bro| +|08/01/2022 02:19:38| |this is our year ducebros!| +|08/01/2022 02:19:43| |WHOA THAT'S A LOTTA TANKS| +|08/01/2022 02:19:44| |UYOHHHH IM GONNA BOOOOOOOOFER| +|08/01/2022 02:19:44| |I just maid some Macaronni| +|08/01/2022 02:19:45| |Get the Pizza boxs| +|08/01/2022 02:19:46| |Piaggio Tanks| +|08/01/2022 02:19:53| UTE +|08/01/2022 02:19:53| |dumb pepperoni put all the cardboards out| +|08/01/2022 02:19:56| totsugeki? +|08/01/2022 02:20:00| totsugeki! +|08/01/2022 02:20:02| |are tank battles like this irl| +|08/01/2022 02:20:03| TOTSUGEKI +|08/01/2022 02:20:03| TOTSUGEKI +|08/01/2022 02:20:03| TOTSUGEKI! +|08/01/2022 02:20:05| totsugeki! +|08/01/2022 02:20:05| |SOMEONE SAY TOTSUGEKI| +|08/01/2022 02:20:05| TOTSUGEKI +|08/01/2022 02:20:06| TOTSUGEKI +|08/01/2022 02:20:06| TOTSUGEKI +|08/01/2022 02:20:06| |So how do they decide how many tanks a team can use, is it a point based system?| +|08/01/2022 02:20:07| TOTSUGEKI +|08/01/2022 02:20:07| yeah +|08/01/2022 02:20:09| |shut up momo| +|08/01/2022 02:20:10| TOTSUGEKIIIIIII +|08/01/2022 02:20:11| TOTSUGEKI +|08/01/2022 02:20:11| |Is Macaronni made of acrdboard?| +|08/01/2022 02:20:13| Maybe +|08/01/2022 02:20:14| LAGGEKI +|08/01/2022 02:20:14| |shitty buffering| +|08/01/2022 02:20:14| |T O T S U G E K I| +|08/01/2022 02:20:15| |No they are NOT like this IRL| +|08/01/2022 02:20:20| |Can confirm tank battles are like this| +|08/01/2022 02:20:21| BUFFERING +|08/01/2022 02:20:22| |STOP BUFFERING| +|08/01/2022 02:20:23| buffering..... +|08/01/2022 02:20:24| |they are exactly like this irl| +|08/01/2022 02:20:26| s +|08/01/2022 02:20:26| BUFFERONI +|08/01/2022 02:20:28| SHAFTED +|08/01/2022 02:20:28| buffering... +|08/01/2022 02:20:29| buff +|08/01/2022 02:20:29| FUG +|08/01/2022 02:20:30| |its a flat number. 10 - 15 tanks| +|08/01/2022 02:20:31| BUFFERING +|08/01/2022 02:20:32| |PRE-RECORDED BUFFERING| +|08/01/2022 02:20:34| |it's an accurate depiction| +|08/01/2022 02:20:34| F +|08/01/2022 02:20:34| |aaaa im boofering| +|08/01/2022 02:20:35| |pastas too fat, stream needs to buffer| +|08/01/2022 02:20:36| BZZZZZZZZZZZZZZZZ +|08/01/2022 02:20:36| |>Anzio so poor, they can't afford live stream| +|08/01/2022 02:20:44| |pause for a second| +|08/01/2022 02:20:46| |Good to know the bufferring isn't just me| +|08/01/2022 02:20:48| siesta +|08/01/2022 02:20:51| |STOP DOWNLOADING DOLPHIN PORN OP| +|08/01/2022 02:20:51| |nowit's fine| +|08/01/2022 02:20:52| |WERKS | +|08/01/2022 02:20:53| FASTER +|08/01/2022 02:20:54| HAYIA +|08/01/2022 02:20:55| |GO FASTER| +|08/01/2022 02:20:56| |GAS GAS GAS| +|08/01/2022 02:20:57| \UNWERK +|08/01/2022 02:21:00| |we all suffer together| +|08/01/2022 02:21:00| |can you pause it i gtg real quick| +|08/01/2022 02:21:01| AZUSA +|08/01/2022 02:21:08| |SHE WANTS TO GO FASTER?!?!| +|08/01/2022 02:21:14| |dumb rabbits| +|08/01/2022 02:21:17| |>Yfw I can't hold all these frames| +|08/01/2022 02:21:19| |sasuga anzio desu ne| +|08/01/2022 02:21:20| dvce +|08/01/2022 02:21:21| |If I had a tank for every pixel on the stream I'd have Anzio| +|08/01/2022 02:21:22| |sasuga anzio desu ne| +|08/01/2022 02:21:23| r*bbits +|08/01/2022 02:21:23| SEX +|08/01/2022 02:21:24| |Anzio is amazing!| +|08/01/2022 02:21:37| |too high IQ for anzio| +|08/01/2022 02:21:38| |dvce is the ctuest| +|08/01/2022 02:21:38| Chouchou +|08/01/2022 02:21:38| AZUSA +|08/01/2022 02:21:39| |Duce is the smartest| +|08/01/2022 02:21:40| |baka saki| +|08/01/2022 02:21:40| |Stupid Saki| +|08/01/2022 02:21:40| >intel +|08/01/2022 02:21:41| |why is saki retarded| +|08/01/2022 02:21:43| |haha Saki is too high| +|08/01/2022 02:21:44| |Cute | +|08/01/2022 02:21:44| |AZUSA WITH BINOCULARS!!| +|08/01/2022 02:21:45| |how the fuck are they falling for this| +|08/01/2022 02:21:47| |6 millions?| +|08/01/2022 02:21:52| |HOLY QUARITY| +|08/01/2022 02:21:52| |smart hana| +|08/01/2022 02:21:52| |pepperoni u fucking idiot u threw!!!| +|08/01/2022 02:21:53| |>video quality| +|08/01/2022 02:21:54| |usagi team doesnt have depth perception| +|08/01/2022 02:21:55| BAKARONI +|08/01/2022 02:21:56| |Saki is always high| +|08/01/2022 02:21:57| |could it bee?| +|08/01/2022 02:21:57| |>Best food >Best girl >Best tanks. Why is Anzio so best?| +|08/01/2022 02:22:01| DAAAMN +|08/01/2022 02:22:01| |sweet mosaic | +|08/01/2022 02:22:01| >VLC +|08/01/2022 02:22:03| |PIXELS AS BIG AS DICKS| +|08/01/2022 02:22:03| |anzio quality| +|08/01/2022 02:22:04| |144p lets go| +|08/01/2022 02:22:05| |LMAO HOLY SHIT| +|08/01/2022 02:22:05| |nice pixels| +|08/01/2022 02:22:06| |oh no| +|08/01/2022 02:22:06| >VLC +|08/01/2022 02:22:06| |oof bitrate| +|08/01/2022 02:22:07| |y'all got anymore of them pixels?| +|08/01/2022 02:22:07| |>prerecorded QUALITY | +|08/01/2022 02:22:08| |the quality| +|08/01/2022 02:22:08| |WHy is it censored?| +|08/01/2022 02:22:08| |MASSIVE PIXELS| +|08/01/2022 02:22:08| 72p +|08/01/2022 02:22:08| |AAAAAAAAAAAAH MIHO HEPL ME THE BITNARETET| +|08/01/2022 02:22:08| >video +|08/01/2022 02:22:09| 360p +|08/01/2022 02:22:09| |ANZIO QUALITY| +|08/01/2022 02:22:10| bloons +|08/01/2022 02:22:10| |This is like streaming naruto in 2004| +|08/01/2022 02:22:10| |>anzio so poor they can only afford 144p| +|08/01/2022 02:22:11| >VLC +|08/01/2022 02:22:12| |as flat as they are| +|08/01/2022 02:22:13| |144P, WE MEET AGAIN| +|08/01/2022 02:22:13| QUALITY +|08/01/2022 02:22:13| |Could I get some more pixels?| +|08/01/2022 02:22:14| |SO MANY PIXELS| +|08/01/2022 02:22:14| |its like its 2013 again| +|08/01/2022 02:22:15| |Quality setting: Volsempfänger| +|08/01/2022 02:22:16| |144p LETS GOOOOOOO| +|08/01/2022 02:22:16| |REMOVE PIXELS remove pixels| +|08/01/2022 02:22:16| 10P +|08/01/2022 02:22:16| |stream had to censor the cardboard| +|08/01/2022 02:22:17| |too lewd| +|08/01/2022 02:22:19| >naruto +|08/01/2022 02:22:19| |>2022 >doesn't watch gup in 32bit graphics| +|08/01/2022 02:22:19| |GuP ON GBA VIDEO| +|08/01/2022 02:22:20| |SAKI EROTIC UOOOOOOOOOOOOOOOOOOOOOHHH ToT| +|08/01/2022 02:22:21| |at least its not stuttering anymore lmao| +|08/01/2022 02:22:21| SOUL +|08/01/2022 02:22:21| |Stream can't handle Duce| +|08/01/2022 02:22:22| |BALLSACK PLAN| +|08/01/2022 02:22:24| 240p +|08/01/2022 02:22:24| balls +|08/01/2022 02:22:24| |I CAN COUNT ALL THE PIZELS| +|08/01/2022 02:22:25| |The True Operation Macaronni| +|08/01/2022 02:22:26| |>Anzio is so powerful they forced the live to 144p| +|08/01/2022 02:22:27| balls +|08/01/2022 02:22:27| |[Censored for gore]| +|08/01/2022 02:22:27| |PEPPA PLAN| +|08/01/2022 02:22:28| BAKARONI +|08/01/2022 02:22:28| |HA HA HA HA | +|08/01/2022 02:22:29| |SHAKING. IN. FEAR| +|08/01/2022 02:22:29| |cunts stole my bitrate cant have shit in anzio| +|08/01/2022 02:22:29| bakaroni +|08/01/2022 02:22:30| SLUT! +|08/01/2022 02:22:30| hahaha +|08/01/2022 02:22:30| |is it 2010 again?| +|08/01/2022 02:22:31| BAKARONI +|08/01/2022 02:22:31| |BIG BRAIN| +|08/01/2022 02:22:33| bakaroni +|08/01/2022 02:22:33| |>mfw the stream is running on VLC| +|08/01/2022 02:22:33| |CRISPY PIXELS| +|08/01/2022 02:22:36| >BRAINS +|08/01/2022 02:22:36| HI10P +|08/01/2022 02:22:38| BAKARONI +|08/01/2022 02:22:38| MASAKA +|08/01/2022 02:22:39| |anzio can't afford pixel| +|08/01/2022 02:22:41| |Please understand, Duce can't afford many things| +|08/01/2022 02:22:42| BAKARONI +|08/01/2022 02:22:43| |>tank fires and rapes the frames| +|08/01/2022 02:22:43| |big brain pepperoni| +|08/01/2022 02:22:54| |Italian 4-pasta internet| +|08/01/2022 02:22:56| |Authentic japanese video experience| +|08/01/2022 02:23:00| bonk +|08/01/2022 02:23:01| |>Having less than 10 pixels in 2022| +|08/01/2022 02:23:03| |tankfags, could a cv33 maching gun pen the type 89?| +|08/01/2022 02:23:04| AAA +|08/01/2022 02:23:04| |MATASE MOMENTE| +|08/01/2022 02:23:04| |dumb aya| +|08/01/2022 02:23:05| DUMBUNNY +|08/01/2022 02:23:07| |>they're real| +|08/01/2022 02:23:12| |Ah! they're real!| +|08/01/2022 02:23:12| |aya wa ayashi..| +|08/01/2022 02:23:13| |this is why you don't stream your animes| +|08/01/2022 02:23:15| |die joe boo| +|08/01/2022 02:23:17| |HONMONO DESU| +|08/01/2022 02:23:18| BUFFER +|08/01/2022 02:23:23| >animes +|08/01/2022 02:23:25| baffa +|08/01/2022 02:23:26| |I JOE| +|08/01/2022 02:23:28| |BAffer pls| +|08/01/2022 02:23:29| |buffer time...| +|08/01/2022 02:23:29| >streaming +|08/01/2022 02:23:30| AAAAAAAAAAAAAA +|08/01/2022 02:23:31| amines +|08/01/2022 02:23:34| |John Moses Browning's M2 Browning .50cal could pen the Type-89| +|08/01/2022 02:23:35| |If you keep buffering I'm legit going to pee break| +|08/01/2022 02:23:36| |buffer AND 72p holy shit| +|08/01/2022 02:23:37| Amino +|08/01/2022 02:23:38| |YOU JOE| +|08/01/2022 02:23:41| |>streaming anime| +|08/01/2022 02:23:45| bruh +|08/01/2022 02:23:45| |>18000 danmaku| +|08/01/2022 02:23:47| |SAEMONZA OPEN YOUR EYES FOR GODS SAKE| +|08/01/2022 02:23:49| |WATASHI TACHI NO HARMONY| +|08/01/2022 02:23:49| |STOP IT JOE| +|08/01/2022 02:23:50| |animo acid| +|08/01/2022 02:23:50| |pee a little between buffers| +|08/01/2022 02:23:50| |i've seen gifs with better quality lul| +|08/01/2022 02:23:52| |thanks for the pen info, anon| +|08/01/2022 02:23:53| /a/migos.... +|08/01/2022 02:23:54| |gambare stream| +|08/01/2022 02:23:55| |>quality improves but immediately starts bufferring| +|08/01/2022 02:23:56| |Too many entities on the server..| +|08/01/2022 02:23:57| |I LOOK FORWARD TO EIGHT MORE HOURS OF THIS | +|08/01/2022 02:23:59| |it's a JOJO of buffering, video quality breakdown, and catch up| +|08/01/2022 02:23:59| |fuck this buffering imma go for a cig| +|08/01/2022 02:24:00| :FIXLAG: +|08/01/2022 02:24:00| |AVANTI ARDITI!! o/ o/ o/| +|08/01/2022 02:24:04| |quick anon use the power of friendship to save the stream| +|08/01/2022 02:24:05| NGMI +|08/01/2022 02:24:05| |Every buffer I release a little pee| +|08/01/2022 02:24:08| |Bros... the stream is dying| +|08/01/2022 02:24:08| |now this is the anzio experience| +|08/01/2022 02:24:09| |if we skip this episode maybe the internet will be fixed| +|08/01/2022 02:24:12| |how many people are watching right now?| +|08/01/2022 02:24:12| |GANBARE STREAM| +|08/01/2022 02:24:15| |I HURT MYSEEELF TODAY| +|08/01/2022 02:24:15| |AS LONG AS IM WITH MY BROS I CAN TAKE ANY QUALITY| +|08/01/2022 02:24:16| |>buffer state| +|08/01/2022 02:24:18| SI +|08/01/2022 02:24:19| |I BLAME ITALY FOR THIS| +|08/01/2022 02:24:20| anzioniggers..... +|08/01/2022 02:24:21| SI +|08/01/2022 02:24:23| SI +|08/01/2022 02:24:24| F +|08/01/2022 02:24:24| |streamed live on anzio wi fi| +|08/01/2022 02:24:24| |Italian 2 maccaroni/second connection| +|08/01/2022 02:24:25| ruined +|08/01/2022 02:24:25| |ANZIO is too based for this stream| +|08/01/2022 02:24:27| |rip stream| +|08/01/2022 02:24:28| |the host spent too much budget on pasta and can't afford any more internet, please understand| +|08/01/2022 02:24:28| |ganbare stream! \ o /| +|08/01/2022 02:24:29| |Drink everytime it frezzes| +|08/01/2022 02:24:29| |SI (YES)| +|08/01/2022 02:24:30| |STOP WATCHING ONEGAI I NEED MORE BANDWIDTH| +|08/01/2022 02:24:30| SHITALY +|08/01/2022 02:24:31| BUFFERONI +|08/01/2022 02:24:32| SI +|08/01/2022 02:24:35| |Fucking cheap Anzio can't afford good internet| +|08/01/2022 02:24:36| |DVCE Episode breaking the stream, sasuga| +|08/01/2022 02:24:37| |i can't drink that fast| +|08/01/2022 02:24:39| |What are you using to stream this? A CV33?| +|08/01/2022 02:24:40| |Anzio is too poor for 480p30.| +|08/01/2022 02:24:41| BUFFERONI +|08/01/2022 02:24:43| |Anzio streaming budget| +|08/01/2022 02:24:43| |STOP BUFFERING AIIIIIIEEEEEEEE| +|08/01/2022 02:24:43| |I will never forgive the italians! \o/| +|08/01/2022 02:24:44| |PEPPERONI DID YOU UNPLUG THE STREAM?| +|08/01/2022 02:24:46| |the stream can't handle all the anzio SOUL| +|08/01/2022 02:24:47| |GANBARE STREAM \O/| +|08/01/2022 02:24:49| \O/ +|08/01/2022 02:24:50| |Inject more bandwith| +|08/01/2022 02:24:50| |the money went towards wig maintenance, not sure for who though| +|08/01/2022 02:24:52| |>disabling danmaku doesn't work | +|08/01/2022 02:24:53| spara! +|08/01/2022 02:24:54| |EASY WAY TO COUNT THE VIEWERS, POST (HERE) IF WATCHING| +|08/01/2022 02:24:54| |We must switch to 144p| +|08/01/2022 02:24:57| |this is unwatchable| +|08/01/2022 02:25:00| (here) +|08/01/2022 02:25:01| Owowowowowowo! +|08/01/2022 02:25:01| itetetetetete +|08/01/2022 02:25:03| OWOWOWOOWOWOWOWOOWOWOW +|08/01/2022 02:25:03| |F for the stream| +|08/01/2022 02:25:03| (here) +|08/01/2022 02:25:04| here +|08/01/2022 02:25:04| (here) +|08/01/2022 02:25:05| Here +|08/01/2022 02:25:05| |DUCE borked the stream| +|08/01/2022 02:25:06| |DUDE STREAMING IS TOTALLY FINE GAHHH| +|08/01/2022 02:25:06| F +|08/01/2022 02:25:06| (here) +|08/01/2022 02:25:07| (here) +|08/01/2022 02:25:07| F +|08/01/2022 02:25:07| (HERE) +|08/01/2022 02:25:07| (HERE) +|08/01/2022 02:25:08| f +|08/01/2022 02:25:08| here +|08/01/2022 02:25:08| |just download more ram | +|08/01/2022 02:25:09| F +|08/01/2022 02:25:09| (here) +|08/01/2022 02:25:09| |CV33s are my spirit animal| +|08/01/2022 02:25:09| |bitches, leave| +|08/01/2022 02:25:09| (here) +|08/01/2022 02:25:09| F +|08/01/2022 02:25:10| |>eva reference| +|08/01/2022 02:25:11| (HERE) +|08/01/2022 02:25:11| (YOU) +|08/01/2022 02:25:12| here +|08/01/2022 02:25:12| |how low can you get the quality| +|08/01/2022 02:25:12| F +|08/01/2022 02:25:13| (here) +|08/01/2022 02:25:14| (HERE) +|08/01/2022 02:25:14| (you) +|08/01/2022 02:25:14| (here) +|08/01/2022 02:25:16| |F stream| +|08/01/2022 02:25:16| |(here) for (you)| +|08/01/2022 02:25:17| |OW OOF MY BITS| +|08/01/2022 02:25:17| (HERE) +|08/01/2022 02:25:17| (here) +|08/01/2022 02:25:17| (here) +|08/01/2022 02:25:18| |chechen beheading quality| +|08/01/2022 02:25:18| |(here) dvce| +|08/01/2022 02:25:21| |OW OOF MY BITS| +|08/01/2022 02:25:22| |(You) 2| +|08/01/2022 02:25:26| |OW OOF MY BITS| +|08/01/2022 02:25:30| |WE'RE LOSING VIEWERS| +|08/01/2022 02:25:31| F +|08/01/2022 02:25:32| |I dont feel so good streambros| +|08/01/2022 02:25:33| |even ISIS had better quality| +|08/01/2022 02:25:33| |rest in fucking rip stream| +|08/01/2022 02:25:35| |nice powerpoint| +|08/01/2022 02:25:35| |STREAM IS FUCKING DEAD| +|08/01/2022 02:25:35| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +|08/01/2022 02:25:35| |( H E R E )| +|08/01/2022 02:25:37| |streambros... | +|08/01/2022 02:25:38| |This is the True Anzio experience| +|08/01/2022 02:25:38| NANI +|08/01/2022 02:25:38| ded +|08/01/2022 02:25:39| >streaming +|08/01/2022 02:25:41| |No audio for phone :/| +|08/01/2022 02:25:41| |a powerpoint is fine too| +|08/01/2022 02:25:41| F +|08/01/2022 02:25:42| |can we drop the stream to 240 for a bit for fun| +|08/01/2022 02:25:43| >0.25FPS +|08/01/2022 02:25:45| F +|08/01/2022 02:25:45| |WORST STREAM DURING THE BEST PART!| +|08/01/2022 02:25:45| |Ah, the podcast version of the stream| +|08/01/2022 02:25:46| ded +|08/01/2022 02:25:46| |>streaming anime| +|08/01/2022 02:25:46| |O MY CARBON COAT| +|08/01/2022 02:25:46| |nice tank| +|08/01/2022 02:25:46| ohnononono +|08/01/2022 02:25:46| |I counted 26| +|08/01/2022 02:25:47| |ANZIO KILLED THE STREAM| +|08/01/2022 02:25:47| |Stream quality reminds me of ~2010 internet| +|08/01/2022 02:25:47| |OH NO NO NO NO THIS CAN'T BE HAPPENNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 02:25:48| |/a/bros... did we get too cocky?| +|08/01/2022 02:25:48| |>watching on phone| +|08/01/2022 02:25:49| |WE'RE FUCKING DEAD| +|08/01/2022 02:25:50| |close your eyes and use your imagination anons| +|08/01/2022 02:25:50| >ph*ne +|08/01/2022 02:25:51| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 02:25:51| |stream kun...| +|08/01/2022 02:25:51| bruh +|08/01/2022 02:25:51| |it stopped| +|08/01/2022 02:25:52| |all you had to do was pay the bills anzio| +|08/01/2022 02:25:53| |>watching streams| +|08/01/2022 02:25:54| RIP +|08/01/2022 02:25:55| |RIP STREAM| +|08/01/2022 02:25:55| F +|08/01/2022 02:25:55| |WHERE WERE YOU WHEN STREAM WAS KILL| +|08/01/2022 02:25:56| |OPERATION STREAMARONI| +|08/01/2022 02:25:56| |It's all falling apart!| +|08/01/2022 02:25:56| |I CAN'T BELIEVE ANZIO RUINED EVERYTHING| +|08/01/2022 02:25:56| |DEAD FOR REAL| +|08/01/2022 02:25:57| F +|08/01/2022 02:25:57| f +|08/01/2022 02:25:57| aaaaaaaaaieeeeeeeeeeeeee +|08/01/2022 02:25:57| F +|08/01/2022 02:25:58| |SHUT IT DOWN| +|08/01/2022 02:25:59| |ANZIO WI-FI| +|08/01/2022 02:25:59| l/a/ds........................... +|08/01/2022 02:26:00| |>staying up for this| +|08/01/2022 02:26:00| |IT'S DEAD JIM| +|08/01/2022 02:26:01| |miho took a fucking tracer round to the head and the stream died| +|08/01/2022 02:26:01| |How much more abuse can this stream take?| +|08/01/2022 02:26:01| F +|08/01/2022 02:26:01| >streaming +|08/01/2022 02:26:03| DEAD +|08/01/2022 02:26:04| |ANZIO DIDNT PAY DENBTS| +|08/01/2022 02:26:07| |It's Dvce's fault the stream is dead| +|08/01/2022 02:26:08| |DUCE betrayed us| +|08/01/2022 02:26:08| |OMAEWA MOU SHINDEIRU| +|08/01/2022 02:26:09| |OPERATOR DOWN| +|08/01/2022 02:26:09| o7 +|08/01/2022 02:26:09| AANZZZIIIIIIOOOOOOOOOOOOOOOO +|08/01/2022 02:26:10| |ITALY RUINS EVERYTHING ONCE AGAIN| +|08/01/2022 02:26:10| |I can't belive Anzio killed the stream| +|08/01/2022 02:26:11| |DMCA RIP| +|08/01/2022 02:26:11| |GUP BROS THIS WAS SUPPOSED TO BE OUR YEAR| +|08/01/2022 02:26:12| |IT ALL COMES TUMBLING DOWN TUMBLING DOWN TUMBLING DOWN| +|08/01/2022 02:26:12| dead +|08/01/2022 02:26:12| |WHAT DOES THIS MEAN BROS?| +|08/01/2022 02:26:13| |STREAM? STREAM!? STREEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAAAAM!!!!!!!!!!!| +|08/01/2022 02:26:13| |well, what do we do now?| +|08/01/2022 02:26:14| |Operation Maccaroni worked| +|08/01/2022 02:26:14| |Duce taskate... | +|08/01/2022 02:26:14| |OPERATOR DOWN| +|08/01/2022 02:26:17| |I am greek| +|08/01/2022 02:26:17| SHIBOU +|08/01/2022 02:26:18| |DVCE bros....| +|08/01/2022 02:26:18| |PANZER DOWN, I REPEAT, PANZER DOWN| +|08/01/2022 02:26:19| DEAD +|08/01/2022 02:26:20| |OPERATOR DOWN| +|08/01/2022 02:26:21| |nice knowing you dvce-bros, sayonara wi-fi| +|08/01/2022 02:26:23| |bought pasta instead of bandwidth sry| +|08/01/2022 02:26:24| |I WANT MY MONEY BACK| +|08/01/2022 02:26:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:26:24| |what happen| +|08/01/2022 02:26:25| |NOT LIKE THIS| +|08/01/2022 02:26:26| |It's over.| +|08/01/2022 02:26:27| |AHHHHH ALL THE DANMAKU AT ONCE| +|08/01/2022 02:26:27| |DUCE DUCE DUCE| +|08/01/2022 02:26:27| flatline..... +|08/01/2022 02:26:30| |DUCEBROS WE GOT TOO COCKY.....| +|08/01/2022 02:26:31| |Poop break? | +|08/01/2022 02:26:31| |Buffer Vor!| +|08/01/2022 02:26:32| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:26:32| F +|08/01/2022 02:26:32| kino +|08/01/2022 02:26:33| |Someone tell a joke while we're waiting| +|08/01/2022 02:26:34| |DUCE NO| +|08/01/2022 02:26:34| |stream ded| +|08/01/2022 02:26:34| |It was fun while it lasted| +|08/01/2022 02:26:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:26:35| >it*lians +|08/01/2022 02:26:36| |SAVE THE STREAM| +|08/01/2022 02:26:36| |this is a good moment to read my k-on! fic| +|08/01/2022 02:26:37| F +|08/01/2022 02:26:37| |time to piss| +|08/01/2022 02:26:40| |KNOCK KNOCK| +|08/01/2022 02:26:40| |go pee| +|08/01/2022 02:26:40| nooooooooo +|08/01/2022 02:26:40| |>italy fucks everything up as usual| +|08/01/2022 02:26:43| |Get food while you can | +|08/01/2022 02:26:44| |>duce stopped the stream to stop Anzio from losing| +|08/01/2022 02:26:45| DVCE.......................... +|08/01/2022 02:26:48| |so this is the power of DUVE| +|08/01/2022 02:26:50| o7 +|08/01/2022 02:26:52| |Toilet break| +|08/01/2022 02:26:52| |I shat in a bottle for this?| +|08/01/2022 02:26:54| |stream couldn| +|08/01/2022 02:26:54| |go get water| +|08/01/2022 02:26:54| |Anzio killed the stream| +|08/01/2022 02:26:55| |FUCKING ITALIANS| +|08/01/2022 02:26:55| |this is a first| +|08/01/2022 02:26:55| |Italia spilled the pasta| +|08/01/2022 02:26:56| |INTER INTER MISSION | +|08/01/2022 02:26:58| |empty your piss bottles| +|08/01/2022 02:26:58| |Duce couldn't make the stream play on time...| +|08/01/2022 02:26:59| |>shitting in a bottle| +|08/01/2022 02:27:00| |nice tracer| +|08/01/2022 02:27:01| |NICE 89| +|08/01/2022 02:27:02| |time to get more drinks| +|08/01/2022 02:27:02| |DUVE DUVE DUVE DUVE| +|08/01/2022 02:27:03| |YES TIME TO SHIIIIIIIIIIIIIIIIIIIIIIT| +|08/01/2022 02:27:04| |the guy that made the GuP doujin also made a K On one equally as distrubing| +|08/01/2022 02:27:04| |small shits| +|08/01/2022 02:27:05| |I shat in a glass faggot| +|08/01/2022 02:27:05| |sasuga DUCE| +|08/01/2022 02:27:05| |Piss Guy Crash Stream So He Piss| +|08/01/2022 02:27:06| |THE ANZAI EFFECT| +|08/01/2022 02:27:07| |How do you shit in a bottle?| +|08/01/2022 02:27:08| |>Italy 3 cheese ethernet melted| +|08/01/2022 02:27:08| |stream couldn't handle duce's power....| +|08/01/2022 02:27:08| |THIS IS OUR BATHROOM BREAK USE IT WHILE YOU CAN| +|08/01/2022 02:27:10| |>intermission, Azio killed the f'ing stream| +|08/01/2022 02:27:10| bruh +|08/01/2022 02:27:10| |Anzio is too fast for the stream| +|08/01/2022 02:27:13| |SHIT IN A BOTTLE| +|08/01/2022 02:27:16| |BREAK TIME USE IT WHILE YOU CAN| +|08/01/2022 02:27:18| |Anzio on dial up| +|08/01/2022 02:27:18| |i come back from an emergency shit and see this| +|08/01/2022 02:27:19| |And I have diahria| +|08/01/2022 02:27:21| |I got bbq chicken sandwich and jack n coke| +|08/01/2022 02:27:21| |post shit bottle pic in thread| +|08/01/2022 02:27:23| |break time| +|08/01/2022 02:27:23| |Don Mai| +|08/01/2022 02:27:27| |SAVE THE WHALES!| +|08/01/2022 02:27:29| |Everyone piss and shit now! together!| +|08/01/2022 02:27:30| Ganbarre +|08/01/2022 02:27:30| |Pics or shittbottle didn't happen| +|08/01/2022 02:27:31| |BREAK TIME BOYS| +|08/01/2022 02:27:33| |ALL HAIL DUCE FOR CRASHING THE STREAM SO WE CAN HAVE A PISS BREAK| +|08/01/2022 02:27:34| |don't PANIC| +|08/01/2022 02:27:34| |this is a hostile act| +|08/01/2022 02:27:36| |ENTER, ENTER MISSION 早くここにおいで一生懸命追いかけたいよ| +|08/01/2022 02:27:38| |NO TIME TO SHIT| +|08/01/2022 02:27:42| |at least roll some ads (笑)| +|08/01/2022 02:27:42| |time for an emergency fap | +|08/01/2022 02:27:43| |Oh no, I'm still mid shit!!!| +|08/01/2022 02:27:44| liv +|08/01/2022 02:27:45| |hold the line| +|08/01/2022 02:27:45| |we now return to TANKS| +|08/01/2022 02:27:45| |STOP SHITTING ITS BACK UP| +|08/01/2022 02:27:48| |Based DVCE giving a peebreak for loyal anons DVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCE| +|08/01/2022 02:27:51| epic +|08/01/2022 02:27:52| |o/ for DVCE| +|08/01/2022 02:27:52| |>emergency fap| +|08/01/2022 02:27:54| |Bogdanoff, he stream. He stream? Yes. Buffer it| +|08/01/2022 02:27:55| |ANZIO PAID THE INTERNET| +|08/01/2022 02:27:55| Furagu +|08/01/2022 02:27:56| |CHINESE DDOS| +|08/01/2022 02:27:56| |ugh time to look up gup doujins| +|08/01/2022 02:27:57| tets +|08/01/2022 02:27:57| |do we actually have a JP bro or two here| +|08/01/2022 02:27:59| | .| +|08/01/2022 02:28:02| nigger +|08/01/2022 02:28:02| |F5 dumb niggers| +|08/01/2022 02:28:03| |straem died before they lost, truly a propaganda of success| +|08/01/2022 02:28:03| |CANT SHIT ARRRRRRRRRRRGH| +|08/01/2022 02:28:04| |THE BUGMEN GOT US| +|08/01/2022 02:28:04| |are we back?| +|08/01/2022 02:28:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:28:07| |wii u| +|08/01/2022 02:28:08| tets2 +|08/01/2022 02:28:08| Si@ +|08/01/2022 02:28:08| |WERE BACK| +|08/01/2022 02:28:09| |Lucky enough time to quickie jack it| +|08/01/2022 02:28:10| |WE'RE BACK| +|08/01/2022 02:28:11| |WE"RE BACK| +|08/01/2022 02:28:12| BACK +|08/01/2022 02:28:12| |No I'm still peeing| +|08/01/2022 02:28:12| SI +|08/01/2022 02:28:12| |yo whatre you drinking| +|08/01/2022 02:28:14| |okay, all good| +|08/01/2022 02:28:16| |F5 MY BROTHERS, WE'RE BACK| +|08/01/2022 02:28:17| REFRESH +|08/01/2022 02:28:19| |STILL WAITING| +|08/01/2022 02:28:19| LIV +|08/01/2022 02:28:20| tadaima +|08/01/2022 02:28:21| |just don't pee on the stream| +|08/01/2022 02:28:21| water +|08/01/2022 02:28:22| |italians dit this| +|08/01/2022 02:28:22| |REFRESH, WE'RE BACK| +|08/01/2022 02:28:22| |thank you| +|08/01/2022 02:28:22| ANZIOOOOOOOOOOO +|08/01/2022 02:28:24| |REFRESH WE BACK| +|08/01/2022 02:28:26| SNEED +|08/01/2022 02:28:26| |REFRESH THE SITE YOU FAGS| +|08/01/2022 02:28:27| |lol everyone has white text now after f5ing| +|08/01/2022 02:28:27| OKAERI! +|08/01/2022 02:28:27| |**SPOILERS, DUCE WINS**| +|08/01/2022 02:28:28| |WE BACK| +|08/01/2022 02:28:31| /あ/ +|08/01/2022 02:28:31| |Good thing I have my dick out right now| +|08/01/2022 02:28:32| OWOWOWOWOW +|08/01/2022 02:28:34| wowowowowow +|08/01/2022 02:28:35| BACK +|08/01/2022 02:28:36| Refresh +|08/01/2022 02:28:38| ITETETETETETE +|08/01/2022 02:28:39| |The Boys Are Back| +|08/01/2022 02:28:40| |REFRESH THE PAGE IT WORKS| +|08/01/2022 02:28:43| |DUCE BROS WE'RE HOME| +|08/01/2022 02:28:45| |thanks for your hard work stream-kun| +|08/01/2022 02:28:45| |DUCE is unbeatable!| +|08/01/2022 02:28:45| |WE'RE LIVE| +|08/01/2022 02:28:48| based +|08/01/2022 02:28:49| streambros... +|08/01/2022 02:28:49| |refresh works| +|08/01/2022 02:28:49| |rip to the ones who went to the bathroom| +|08/01/2022 02:28:51| |DUCKS STRONG| +|08/01/2022 02:28:52| |$10000000 on DUCE!| +|08/01/2022 02:28:52| |DUCE WON| +|08/01/2022 02:28:53| |back in certified VLC quality| +|08/01/2022 02:28:54| |DVCE spam killed the stream| +|08/01/2022 02:28:54| |D QUICK| +|08/01/2022 02:28:55| SORE +|08/01/2022 02:28:55| |WHITE IS RIGHT | +|08/01/2022 02:28:56| |ANZIO ISN'T WEA- ANZIO IS STRONG!| +|08/01/2022 02:28:57| dick' +|08/01/2022 02:28:58| |GET FUCKED CARRO VELOCE FAGS| +|08/01/2022 02:28:59| |>he isn't watching through mpv| +|08/01/2022 02:28:59| |I love these tiny Italian tanks| +|08/01/2022 02:29:00| |I'll give them a quick D| +|08/01/2022 02:29:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:04| |THANK YOU DVCE| +|08/01/2022 02:29:05| |streambros did we make it| +|08/01/2022 02:29:06| |CARBON COATED STREAM| +|08/01/2022 02:29:08| |SO SMART| +|08/01/2022 02:29:09| |MY CARBON COATED SH....| +|08/01/2022 02:29:09| |WHAT IS LOVE| +|08/01/2022 02:29:10| |Holy shit, is Duce THAT strong? How can Oarai even compete?| +|08/01/2022 02:29:10| |DUMB USAGI| +|08/01/2022 02:29:10| |IRAQ QUALITY STREAM| +|08/01/2022 02:29:11| REFRESH +|08/01/2022 02:29:12| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 02:29:14| |WITHE POWA| +|08/01/2022 02:29:14| |CV FAGS ON SUICIDE WATCH| +|08/01/2022 02:29:16| |naruhodo naruhodo| +|08/01/2022 02:29:16| DUCE +|08/01/2022 02:29:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:17| refresh +|08/01/2022 02:29:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:19| duce +|08/01/2022 02:29:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:29:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:22| |We're all gonna make it bros| +|08/01/2022 02:29:23| |tankfags, what kind of penetration does the semovente have? can it pen the ankou panzer?| +|08/01/2022 02:29:24| |DUCE DAVANTI E DIETRO TUTTI QUANTI| +|08/01/2022 02:29:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:24| MACARONI +|08/01/2022 02:29:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:24| Bakaroni... +|08/01/2022 02:29:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:25| DUCE +|08/01/2022 02:29:25| |DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:29:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:29| |This is why he dumped you Yuki| +|08/01/2022 02:29:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:30| |DUCE DAVANTI E DIETRO TUTTI QUANTI| +|08/01/2022 02:29:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:33| |dumb idiot| +|08/01/2022 02:29:33| |duce duce duce duce duce duce duce | +|08/01/2022 02:29:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:34| bakaroni +|08/01/2022 02:29:35| |DUMB RETARD PEPPA| +|08/01/2022 02:29:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:35| |DVCE DVCE DVCE| +|08/01/2022 02:29:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:36| |Thanks for telling me to refresh| +|08/01/2022 02:29:38| |DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUC| +|08/01/2022 02:29:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:29:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:39| |DUCE DAVANTI E DIETRO TUTTI QUANTI| +|08/01/2022 02:29:39| test +|08/01/2022 02:29:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:41| SASUGA +|08/01/2022 02:29:42| BAKARONI +|08/01/2022 02:29:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:42| |pizza > macaroni| +|08/01/2022 02:29:43| |DUMBASS PEPPERONI| +|08/01/2022 02:29:44| KASHKOI +|08/01/2022 02:29:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:44| AHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHO +|08/01/2022 02:29:45| bakaroni +|08/01/2022 02:29:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:29:46| |Fuck off \I can't see| +|08/01/2022 02:29:46| |if it's the 105, it should cap at around 90 of RHA| +|08/01/2022 02:29:47| BAKARONI +|08/01/2022 02:29:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:49| |That one prostitution doujin is fucking god tier I tell you| +|08/01/2022 02:29:52| |SASUGA NEESAN| +|08/01/2022 02:29:52| BAKARONI +|08/01/2022 02:29:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:54| |MACARONI MACARONI MACARONI MACARONI MACARONI MACARONI MACARONI| +|08/01/2022 02:29:54| KINO +|08/01/2022 02:29:55| ! +|08/01/2022 02:29:55| |our eyes met| +|08/01/2022 02:29:55| ENTER +|08/01/2022 02:29:57| ! +|08/01/2022 02:29:58| |We're back, refresh.| +|08/01/2022 02:29:58| |EIA EIA ALALALA| +|08/01/2022 02:29:59| kino +|08/01/2022 02:29:59| |>italian IQ| +|08/01/2022 02:30:01| . +|08/01/2022 02:30:03| K-kino... +|08/01/2022 02:30:04| * +|08/01/2022 02:30:04| |taka chan| +|08/01/2022 02:30:07| |That asshole!| +|08/01/2022 02:30:07| |>that asshole| +|08/01/2022 02:30:09| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:30:09| |pasanaru maku?| +|08/01/2022 02:30:11| |LEZZ DUAL| +|08/01/2022 02:30:12| |haha hippo butt| +|08/01/2022 02:30:15| |i recognize that butthole| +|08/01/2022 02:30:16| |i can't believe Oarai is dead| +|08/01/2022 02:30:17| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:30:18| |I'd knwothat ass anywhere| +|08/01/2022 02:30:22| |ITS THAT ASSHOLE TAKACHAN THAT MOTHERFUCKER| +|08/01/2022 02:30:22| kinokinokinokinokinokinokino +|08/01/2022 02:30:26| 1V1 +|08/01/2022 02:30:30| |PICTURE IT! SALVATION!| +|08/01/2022 02:30:30| |DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! | +|08/01/2022 02:30:32| |loader battle loader battle| +|08/01/2022 02:30:32| GAY +|08/01/2022 02:30:37| |GAY DUEL| +|08/01/2022 02:30:39| |THE DEATH OF THE STREAM WAS A NECESSITY| +|08/01/2022 02:30:40| |tip battle| +|08/01/2022 02:30:41| |TANK JOUSTING| +|08/01/2022 02:30:42| w-wew +|08/01/2022 02:30:42| |SWORD FIGHT| +|08/01/2022 02:30:42| |my sword is bigger than yours| +|08/01/2022 02:30:42| |penis duel| +|08/01/2022 02:30:43| |Ooraibros I'm scared| +|08/01/2022 02:30:43| |DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! | +|08/01/2022 02:30:43| |THAT'S GAY MIHO| +|08/01/2022 02:30:44| |SWORD FIGHTING TANKS LET'S FUCKING GOOOOOOOOOO| +|08/01/2022 02:30:44| |self insert as STuG| +|08/01/2022 02:30:45| |>gunkata with tanks| +|08/01/2022 02:30:46| |its more like a 4x2| +|08/01/2022 02:30:46| |is this how they fought in WW2?| +|08/01/2022 02:30:47| |>touching tips| +|08/01/2022 02:30:48| |t-they're touching!| +|08/01/2022 02:30:49| DUELING +|08/01/2022 02:30:50| LEWD +|08/01/2022 02:30:51| |this is as gay as that resident evil gunkata fight| +|08/01/2022 02:30:52| tummyswords +|08/01/2022 02:30:52| |is this what it was really like in ww2?| +|08/01/2022 02:30:54| |fellas is it gay if the barrels touch?| +|08/01/2022 02:30:56| |Can a chub really win this bros| +|08/01/2022 02:30:56| |Is this how lesbians have sex?| +|08/01/2022 02:30:58| |DUCE BROS OOARAI IS ON THE ROPES| +|08/01/2022 02:31:03| |DEJA VU| +|08/01/2022 02:31:05| . +|08/01/2022 02:31:06| YATATATATATATATATA +|08/01/2022 02:31:07| |I love the RE gunkata fight| +|08/01/2022 02:31:11| |as long as the tips don't touch it's not yuri| +|08/01/2022 02:31:13| |LETS GO ANZIO| +|08/01/2022 02:31:14| |this is exactly how ww2 looked| +|08/01/2022 02:31:15| |oh god i can hear the bitrate. gotta do what you gotta do i guess| +|08/01/2022 02:31:17| |Oaroi Bros we got cocky again| +|08/01/2022 02:31:18| |>one goes down >another one spawns Fucking video game moment right there| +|08/01/2022 02:31:29| |I just love that we all know the RE gunkata fight| +|08/01/2022 02:31:29| |RIP hippo| +|08/01/2022 02:31:31| |oooo camera tricks| +|08/01/2022 02:31:36| JOUST +|08/01/2022 02:31:36| |NO THE HIPPO| +|08/01/2022 02:31:36| |can a semovente pen a stug?| +|08/01/2022 02:31:38| |GAY LESBIAN DUEL| +|08/01/2022 02:31:41| yes +|08/01/2022 02:31:43| |big dick engery| +|08/01/2022 02:31:50| ENGERy +|08/01/2022 02:31:55| |Tankette belly... | +|08/01/2022 02:31:56| |apart from, perhaps, the transmission housing| +|08/01/2022 02:31:57| |Fast as Fuck Boy| +|08/01/2022 02:31:58| |STRONG ANZIO GIRLS| +|08/01/2022 02:32:00| STRONK +|08/01/2022 02:32:01| |this is just like world of tanks!| +|08/01/2022 02:32:02| |cute taeko| +|08/01/2022 02:32:03| STRONG +|08/01/2022 02:32:03| |ANZIO IS STRONG| +|08/01/2022 02:32:03| |what is the point of the tankette| +|08/01/2022 02:32:04| |ITAILIANS STRONK| +|08/01/2022 02:32:04| stronk +|08/01/2022 02:32:04| stronk +|08/01/2022 02:32:05| |strong italian girls| +|08/01/2022 02:32:06| |PUT YOUR HEAD IN THE MICROWAVE AND GET YOURSELF A TAN| +|08/01/2022 02:32:09| |The Carro Veroce IS invincible| +|08/01/2022 02:32:10| STRONK +|08/01/2022 02:32:10| GUTS +|08/01/2022 02:32:11| |thanks tankfags| +|08/01/2022 02:32:12| GUTS +|08/01/2022 02:32:13| |THE POWER OF PASTA| +|08/01/2022 02:32:13| GUTS +|08/01/2022 02:32:14| NORIKO<3 +|08/01/2022 02:32:14| GUTS +|08/01/2022 02:32:14| |NEED GUTS| +|08/01/2022 02:32:14| GUTS +|08/01/2022 02:32:14| |I love these subs| +|08/01/2022 02:32:14| GUTS +|08/01/2022 02:32:16| |What's the point of italy to be honest| +|08/01/2022 02:32:16| |Swoll Anzio grills| +|08/01/2022 02:32:16| GUTS +|08/01/2022 02:32:18| |>the lighter the tank is, the more invincible it is| +|08/01/2022 02:32:21| |FIGHT ON| +|08/01/2022 02:32:22| |FIGHT ON| +|08/01/2022 02:32:30| |I am sure to win, because my speed is superiour!| +|08/01/2022 02:32:30| GATSO +|08/01/2022 02:32:31| |LIGHT TANK META | +|08/01/2022 02:32:31| |eat pasta and you can flip tanks| +|08/01/2022 02:32:32| |sicily is the point to italy| +|08/01/2022 02:32:32| GUTS +|08/01/2022 02:32:34| SOOORE! +|08/01/2022 02:32:36| |You will never touch swoll anzio biceps| +|08/01/2022 02:32:36| CLANG +|08/01/2022 02:32:37| |That lean| +|08/01/2022 02:32:38| |GUTS GUTS GUTS GUTS GUTS GUTS| +|08/01/2022 02:32:38| GATSU +|08/01/2022 02:32:38| |I'm dying, NORIKO PLEASE BE REAL| +|08/01/2022 02:32:46| |Noriko isn'| +|08/01/2022 02:32:47| |ANZIO BTFO| +|08/01/2022 02:32:50| F +|08/01/2022 02:32:50| |||>| +|08/01/2022 02:32:51| rip +|08/01/2022 02:32:51| DEAD +|08/01/2022 02:32:53| |FLIP IT BACK OVER!| +|08/01/2022 02:32:53| F +|08/01/2022 02:32:54| |Critical Hit| +|08/01/2022 02:32:56| |"im sure to win due to my superior speed"| +|08/01/2022 02:32:57| DVCEBROS... +|08/01/2022 02:32:58| |fucken rekt| +|08/01/2022 02:32:59| |weak pointo| +|08/01/2022 02:33:00| |FRONT RIGHTO| +|08/01/2022 02:33:01| |they are all fucking dead from the trauma| +|08/01/2022 02:33:03| |||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>| +|08/01/2022 02:33:05| |the entire tankette is the weak point, dumbo| +|08/01/2022 02:33:05| |NONONONONO WE GOT COCKY ANIZBROS| +|08/01/2022 02:33:06| |DVCE CTU | +|08/01/2022 02:33:06| |fucking rip to anzio| +|08/01/2022 02:33:07| |UHHHHHH DUCEBROS?| +|08/01/2022 02:33:09| |Noriko will never be a woman| +|08/01/2022 02:33:10| |DEXfags BTFO| +|08/01/2022 02:33:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:12| |BASED BUSTY FUCK| +|08/01/2022 02:33:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:12| |Are you feeling now Ducebros| +|08/01/2022 02:33:13| NANDATTE +|08/01/2022 02:33:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:15| |none of them are wearing seatbelts| +|08/01/2022 02:33:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:33:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:16| >naked +|08/01/2022 02:33:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:17| |NAKED DUCE| +|08/01/2022 02:33:17| |Naked DUCE| +|08/01/2022 02:33:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:18| |DUCE BROS....| +|08/01/2022 02:33:19| |>naked duce| +|08/01/2022 02:33:19| |NAKED DUCE| +|08/01/2022 02:33:19| |>Needing a weak point for tankettes| +|08/01/2022 02:33:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:33:19| PRESENTE +|08/01/2022 02:33:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:22| |NAKED DUCE| +|08/01/2022 02:33:22| |NAKED DUCE| +|08/01/2022 02:33:23| |naked duce| +|08/01/2022 02:33:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:24| NAKED?!?!?! +|08/01/2022 02:33:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:26| |OORAICISTS... MY LEGS... THEY'RE KNEELING ON THEIR OWN| +|08/01/2022 02:33:27| SHIRAN +|08/01/2022 02:33:28| |NAKED DVCE NAKED DVCE NAKED DVCE| +|08/01/2022 02:33:28| |naked the DUCE| +|08/01/2022 02:33:29| |naked Dvce...| +|08/01/2022 02:33:32| |tank drift| +|08/01/2022 02:33:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:37| |The jojo (toy) is supposed to be a filipino hunting weapon.| +|08/01/2022 02:33:37| FLAT +|08/01/2022 02:33:42| |Duce cunny| +|08/01/2022 02:33:44| |Imagine the toned bodies of Anzio girls| +|08/01/2022 02:33:54| |duce is ctu| +|08/01/2022 02:33:54| |OPERATION PROSTATE| +|08/01/2022 02:33:57| AZUSA +|08/01/2022 02:34:00| |NAKED DVCE NAKED DVCE NAKED DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:34:01| |DVCE CTU | +|08/01/2022 02:34:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:34:02| AZUSA +|08/01/2022 02:34:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:03| |some are probably nice and soft from that italian diet| +|08/01/2022 02:34:04| |>toned, not with that diet| +|08/01/2022 02:34:04| |The ctuest| +|08/01/2022 02:34:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:34:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:07| |I volunteer to help repopulate the Anzio empire| +|08/01/2022 02:34:10| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:34:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:34:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:19| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:34:22| |THEY'RE LEARNING!| +|08/01/2022 02:34:24| |ok then anon, open up your legs| +|08/01/2022 02:34:27| |smart azusa| +|08/01/2022 02:34:28| |HIGH IQ| +|08/01/2022 02:34:28| niggers +|08/01/2022 02:34:29| |azusa is a genius| +|08/01/2022 02:34:31| |smart azusu| +|08/01/2022 02:34:31| snipe +|08/01/2022 02:34:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:34:38| ute +|08/01/2022 02:34:39| |azusa, your future oarai commander| +|08/01/2022 02:34:41| |Ducks getting smart| +|08/01/2022 02:34:42| |What did I miss?| +|08/01/2022 02:34:43| ATATA +|08/01/2022 02:34:44| sugoi +|08/01/2022 02:34:45| |Azusa OP| +|08/01/2022 02:34:48| |UTE UTE| +|08/01/2022 02:34:49| |looks like shitty mobile game| +|08/01/2022 02:34:51| cute +|08/01/2022 02:34:51| |New Miho| +|08/01/2022 02:34:52| |It was foretold| +|08/01/2022 02:34:52| AZUSA! +|08/01/2022 02:34:52| |>STILL GOING| +|08/01/2022 02:34:53| |>like nishizumi| +|08/01/2022 02:34:53| |Is this really all just setup for df4| +|08/01/2022 02:34:56| JOUST +|08/01/2022 02:34:56| |You missed a fucking sword fight with tank cannons| +|08/01/2022 02:35:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:05| |azusa will SMASH CONTINUATION| +|08/01/2022 02:35:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:06| |LET'S GO ANZIO| +|08/01/2022 02:35:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:08| |DVCE | +|08/01/2022 02:35:09| STRONG +|08/01/2022 02:35:09| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 02:35:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:10| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:35:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:12| |SEND DUCE YOUR ENERGY | +|08/01/2022 02:35:12| |All set up| +|08/01/2022 02:35:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:13| STRONG! +|08/01/2022 02:35:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:14| |DVCE DVCE DVCE| +|08/01/2022 02:35:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:15| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:35:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:15| |DVCE CTU| +|08/01/2022 02:35:15| |ANZIOBROS THIS IS OUR MOMENT| +|08/01/2022 02:35:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:18| |MOMO HATE| +|08/01/2022 02:35:19| |SHUT UP MOMO| +|08/01/2022 02:35:20| |WE'RE GONNA WIN THIS ANZIO BROS!!!!| +|08/01/2022 02:35:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:23| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:35:24| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:35:24| |DUCE CTU!| +|08/01/2022 02:35:25| |DUCE DUCE DUCE DUCE DUCE DUC EDUC E| +|08/01/2022 02:35:25| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:35:25| |MOMO HATE| +|08/01/2022 02:35:26| |I CANT READ SHIT FUICKING STOP| +|08/01/2022 02:35:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:28| |>kill zone| +|08/01/2022 02:35:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:30| |HOI HOI| +|08/01/2022 02:35:31| |KILLZONE HAIHAIII| +|08/01/2022 02:35:31| |DUCE THE CTUEST| +|08/01/2022 02:35:31| |HAI HAI| +|08/01/2022 02:35:32| JOUSTING +|08/01/2022 02:35:33| |Can Momo do anything right?| +|08/01/2022 02:35:35| |I CAN FEEL IT BROS!!!| +|08/01/2022 02:35:35| |>still fucking going| +|08/01/2022 02:35:37| gay +|08/01/2022 02:35:42| |DUCE DEMANDS PURPLE POSTER HEADS| +|08/01/2022 02:35:43| |Point blank tank duels| +|08/01/2022 02:35:44| |ANZIO BROS WE'RE GONNA WIN| +|08/01/2022 02:35:46| |Scotland exports sand to saudi arabia.| +|08/01/2022 02:35:47| |I bet my life savings on duce| +|08/01/2022 02:35:47| IDIOT +|08/01/2022 02:35:48| |MOMO YOU MISSED| +|08/01/2022 02:35:49| |honestly? fuck nips| +|08/01/2022 02:35:50| |Did we get a pic of that shit bottle| +|08/01/2022 02:35:55| >shitaly +|08/01/2022 02:35:55| nisan +|08/01/2022 02:35:56| |wieder ein sieg fur anzio!| +|08/01/2022 02:35:57| bersaglieribros............. +|08/01/2022 02:35:58| RIP +|08/01/2022 02:35:58| |Those girls are dead| +|08/01/2022 02:35:59| |NEE SAN| +|08/01/2022 02:36:00| |NEE SAN| +|08/01/2022 02:36:00| |I FIXED MY COOKES| +|08/01/2022 02:36:00| |OH NONONNONONONONONONONONOONNNONONO THIS CAN'T HAPPENING!!!!| +|08/01/2022 02:36:00| GUTS +|08/01/2022 02:36:01| PEW +|08/01/2022 02:36:02| |jamie pull up the shit bottle real quick| +|08/01/2022 02:36:03| F +|08/01/2022 02:36:04| |Pizzabros... | +|08/01/2022 02:36:04| ded +|08/01/2022 02:36:06| |GUN DEPRESSION | +|08/01/2022 02:36:07| NOOOOOOOOOOOOOOOOOOO +|08/01/2022 02:36:08| F +|08/01/2022 02:36:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:08| RIGGED +|08/01/2022 02:36:10| |MURDER ZONE| +|08/01/2022 02:36:10| kino +|08/01/2022 02:36:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:11| |DVCE BROS....| +|08/01/2022 02:36:11| F +|08/01/2022 02:36:11| DED +|08/01/2022 02:36:12| |Ice cold... | +|08/01/2022 02:36:13| dvce............... +|08/01/2022 02:36:13| |Pizza time is over| +|08/01/2022 02:36:13| lol +|08/01/2022 02:36:13| |wow she is dead| +|08/01/2022 02:36:14| ;__;7 +|08/01/2022 02:36:15| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 02:36:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:17| :( +|08/01/2022 02:36:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:17| |fucking F| +|08/01/2022 02:36:18| |Duce ;_;| +|08/01/2022 02:36:18| |STOP THE MATCH| +|08/01/2022 02:36:18| borgar +|08/01/2022 02:36:18| duce... +|08/01/2022 02:36:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:19| OH +|08/01/2022 02:36:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:20| |Anzio brvs... | +|08/01/2022 02:36:20| |>This happened in Greece| +|08/01/2022 02:36:20| anziobros... +|08/01/2022 02:36:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:20| |DUCE IS FUCKING DEAD| +|08/01/2022 02:36:21| RIP +|08/01/2022 02:36:21| |cute duce sounds| +|08/01/2022 02:36:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:22| |Miho has the dark determination| +|08/01/2022 02:36:22| 🍕 +|08/01/2022 02:36:23| NOOOOOOOOO +|08/01/2022 02:36:23| |I hate all these newfag meme posters| +|08/01/2022 02:36:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:24| f +|08/01/2022 02:36:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:25| |i can't believe our girl is fucking dead| +|08/01/2022 02:36:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:26| |duce is okay right?| +|08/01/2022 02:36:26| |o7 DUce| +|08/01/2022 02:36:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:27| |AY' ANCHOVE| +|08/01/2022 02:36:27| |RIP DUCE| +|08/01/2022 02:36:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:29| |I DEAMND A RECOUNT| +|08/01/2022 02:36:29| |DVCE Bros ;___;7| +|08/01/2022 02:36:29| |MY POOR DUCE!| +|08/01/2022 02:36:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:30| |deja vu| +|08/01/2022 02:36:30| |DUCE BROS TOT| +|08/01/2022 02:36:31| |I CANT READ SHIT FUICKING STOP| +|08/01/2022 02:36:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:33| |OORAI CHADS WE WIN AGAIN| +|08/01/2022 02:36:34| |they can't keep getting away with this| +|08/01/2022 02:36:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:35| o7 +|08/01/2022 02:36:35| |I've seen this too many times to count but I thought this time duce would win for sure| +|08/01/2022 02:36:36| |HOW COULD THIS HAPPEN| +|08/01/2022 02:36:36| |fuck off| +|08/01/2022 02:36:36| |Dead DUCE| +|08/01/2022 02:36:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:38| ducebros.... +|08/01/2022 02:36:39| |Damn those are some seriously carbon coated grills| +|08/01/2022 02:36:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:40| |next time without germany| +|08/01/2022 02:36:40| bestofour +|08/01/2022 02:36:40| |DUCE BROS IT WAS OUR YEAR| +|08/01/2022 02:36:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:42| |HERE'S HOW DUCE CAN STILL WIN | +|08/01/2022 02:36:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:43| |Armored Go-Kart bros...| +|08/01/2022 02:36:44| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:36:44| |dvcebros we got too cocky!!| +|08/01/2022 02:36:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:44| |AND NOW PASTA| +|08/01/2022 02:36:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:45| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 02:36:46| ASSPULL +|08/01/2022 02:36:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:47| |Duce was really close this time bros| +|08/01/2022 02:36:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:48| |GRACIOUS DUCE| +|08/01/2022 02:36:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:49| |HERES HOW| +|08/01/2022 02:36:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:49| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 02:36:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:50| WEW +|08/01/2022 02:36:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:51| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +|08/01/2022 02:36:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:55| gay +|08/01/2022 02:36:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:36:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:36:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:59| |Are their bones Carbon Coated| +|08/01/2022 02:36:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:59| GIWTWM +|08/01/2022 02:36:59| OOOOOOOO +|08/01/2022 02:36:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:59| HAI +|08/01/2022 02:36:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:36:59| |i want to marry duce| +|08/01/2022 02:37:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:00| o/ +|08/01/2022 02:37:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:00| |It was supposed to be DVCE's year ;_;| +|08/01/2022 02:37:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:02| |go she's so perfect| +|08/01/2022 02:37:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 02:37:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:07| o/ +|08/01/2022 02:37:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:07| |DAMN I'M HUNGRY FOR PIZZA| +|08/01/2022 02:37:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:08| |PASTA TIME| +|08/01/2022 02:37:08| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:10| o/ +|08/01/2022 02:37:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:11| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +|08/01/2022 02:37:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:14| |PARTY TIME| +|08/01/2022 02:37:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:15| |Carbon coated butts!| +|08/01/2022 02:37:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:16| |Pizza Time| +|08/01/2022 02:37:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:19| |party time| +|08/01/2022 02:37:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:20| |PIZZA TIME| +|08/01/2022 02:37:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:21| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:23| sexually? +|08/01/2022 02:37:24| |PASTA TIME| +|08/01/2022 02:37:24| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:24| |PASTA TIME| +|08/01/2022 02:37:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:25| |PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME | +|08/01/2022 02:37:26| ITADAKIMASU! +|08/01/2022 02:37:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:28| |How are they not fat as fuck?| +|08/01/2022 02:37:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:29| FUNICULAAAAAAAAAAAAAAAA +|08/01/2022 02:37:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:30| |PIZZA TIMEMM| +|08/01/2022 02:37:31| |PIZZA TIME!| +|08/01/2022 02:37:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:31| |ARCHITECT ACADEMY| +|08/01/2022 02:37:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:32| |FUNICULI FUNICULA| +|08/01/2022 02:37:33| |PIZZA PASTA| +|08/01/2022 02:37:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:33| FUNICULI +|08/01/2022 02:37:33| |PIZZA LOGISTICS| +|08/01/2022 02:37:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:34| |PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD| +|08/01/2022 02:37:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:36| |NCOPPA JAMME JA| +|08/01/2022 02:37:37| |PIZZA TIME| +|08/01/2022 02:37:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:39| |PARTY HARD| +|08/01/2022 02:37:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:40| |FUNICULI FUNICULA| +|08/01/2022 02:37:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:40| |FAT GIRLS| +|08/01/2022 02:37:41| |god italian food is so good| +|08/01/2022 02:37:41| |PIZZA TIME| +|08/01/2022 02:37:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:42| |FUNICULI FUNICULA| +|08/01/2022 02:37:43| |DUCE STINKY FAT CARB LOAD| +|08/01/2022 02:37:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:44| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:46| |Tortalini on the Wals| +|08/01/2022 02:37:46| |ON MY BALLS| +|08/01/2022 02:37:47| |EAT A DUCK HE MUST| +|08/01/2022 02:37:48| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:37:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:49| |CARBON COATED PIZZA| +|08/01/2022 02:37:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:50| |PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HA| +|08/01/2022 02:37:50| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:37:50| |anzio is so damn comfy| +|08/01/2022 02:37:51| |RUB A DUB DUB| +|08/01/2022 02:37:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:51| |This is why Anzio is poor| +|08/01/2022 02:37:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:52| |THANKS FOR THE GRUB| +|08/01/2022 02:37:52| |if only their fightiing was good as their food| +|08/01/2022 02:37:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:53| |Italian food sucks ass| +|08/01/2022 02:37:54| |EAT A DUCK HE MUST| +|08/01/2022 02:37:54| |Can I have some?| +|08/01/2022 02:37:55| |through the dark lord, amen| +|08/01/2022 02:37:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:55| |yukari no!| +|08/01/2022 02:37:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:56| AZUSA +|08/01/2022 02:37:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:56| |FUNICULLI FUNICILLA| +|08/01/2022 02:37:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:57| |Cheesy on peenie| +|08/01/2022 02:37:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:59| |Rub a dub dub| +|08/01/2022 02:38:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:02| |im hungry now bros| +|08/01/2022 02:38:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:03| |im hungy....| +|08/01/2022 02:38:04| |PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME | +|08/01/2022 02:38:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:05| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:38:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:06| HAHAHAHA +|08/01/2022 02:38:06| |WHEN THE MOON HITS YOUR EYE LIKE A BIG PIZZA PIE| +|08/01/2022 02:38:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:06| |RUB A DUB DUB| +|08/01/2022 02:38:08| cute +|08/01/2022 02:38:09| |FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! | +|08/01/2022 02:38:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:10| |IF I FLIP THESE TANKS MR AZIZ WILL FLIP OUT| +|08/01/2022 02:38:10| |CUTE DUCE| +|08/01/2022 02:38:10| |I'M SO FUCKING HUNGRY| +|08/01/2022 02:38:11| |GAY MOMENT| +|08/01/2022 02:38:11| |YAME YAME JA FUNICULLI _FUNICULLA| +|08/01/2022 02:38:13| |my wife yukari is eating for two!| +|08/01/2022 02:38:14| |BRBR PIZZA BREAK| +|08/01/2022 02:38:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:14| cute +|08/01/2022 02:38:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:16| |PIZZA PASTA PUT IT IN A BOX| +|08/01/2022 02:38:16| GAY +|08/01/2022 02:38:17| 🍕🍝🍕🍝🍕🍝🍕🍝🍕🍝 +|08/01/2022 02:38:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:38:22| |italian food > nip food any day of the week| +|08/01/2022 02:38:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:24| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:38:25| |GAY GAY GAY GAY GAY| +|08/01/2022 02:38:26| cute +|08/01/2022 02:38:28| |Anzio best sports | +|08/01/2022 02:38:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:31| |Erwin is cute| +|08/01/2022 02:38:31| |jej GAYYYYYYYYYYYYYYYYYYYY| +|08/01/2022 02:38:32| |I want them them to have a strength contest| +|08/01/2022 02:38:34| ERIKA>DUCE +|08/01/2022 02:38:36| kiss +|08/01/2022 02:38:39| |>he's never ate pizza sushi| +|08/01/2022 02:38:39| |gay handshake| +|08/01/2022 02:38:40| CAESAR +|08/01/2022 02:38:42| |TAKA CHAN| +|08/01/2022 02:38:42| Disowned +|08/01/2022 02:38:43| CAESAR +|08/01/2022 02:38:43| KAISER +|08/01/2022 02:38:44| CAESAR +|08/01/2022 02:38:44| cringe +|08/01/2022 02:38:44| o/ +|08/01/2022 02:38:45| |HAIL CAESAR o/| +|08/01/2022 02:38:45| AUTISM +|08/01/2022 02:38:46| KAISA +|08/01/2022 02:38:47| |WATASHI WA CAESAR| +|08/01/2022 02:38:47| chad +|08/01/2022 02:38:48| |AVE CAESAR| +|08/01/2022 02:38:49| |ayyy lmao look at caesar's head| +|08/01/2022 02:38:49| KAISER +|08/01/2022 02:38:50| |god damned larper| +|08/01/2022 02:38:50| |MEIN KAISER| +|08/01/2022 02:38:50| |It's apromise totally| +|08/01/2022 02:38:50| chuunibyou +|08/01/2022 02:38:50| CARPACCIO +|08/01/2022 02:38:50| |AVE CEASAR! | +|08/01/2022 02:38:52| |KAISAR, my wife| +|08/01/2022 02:38:54| |NO CEASAR DON'T GO TO THE SENATE| +|08/01/2022 02:38:54| |Is that right lmao larper| +|08/01/2022 02:38:54| |HEIL CAESAR | +|08/01/2022 02:38:55| SHIIIIIIIIIIZAAAAAAAAAA!!!!!!!!! +|08/01/2022 02:38:56| |>name drop| +|08/01/2022 02:38:56| AVE +|08/01/2022 02:38:57| |CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO | +|08/01/2022 02:38:59| CUTE +|08/01/2022 02:39:00| |MARK MY WORDS YOU PIECE OF SHIT| +|08/01/2022 02:39:02| |ayyyy lmao| +|08/01/2022 02:39:03| PRAVDA +|08/01/2022 02:39:03| |ENTA ENTA MISSION| +|08/01/2022 02:39:04| GASPACCIO? +|08/01/2022 02:39:04| |HAIL CEASAR| +|08/01/2022 02:39:05| |Sexy Cappachio| +|08/01/2022 02:39:05| KAISAR +|08/01/2022 02:39:06| |How do two girls have sex in a tank?| +|08/01/2022 02:39:06| |CHEESI ON MY PEENI AND SOME SAUÇA ON MY BALLS| +|08/01/2022 02:39:07| |GREMLIN BROS| +|08/01/2022 02:39:08| |BIG NONNA TITS| +|08/01/2022 02:39:08| |meanwhile, back at the plot...| +|08/01/2022 02:39:09| smol +|08/01/2022 02:39:10| |ENTER BEST GIRL| +|08/01/2022 02:39:10| STALIN +|08/01/2022 02:39:10| |TIME FOR UOOOOOOOOOOOOOOOOOOOOOOH| +|08/01/2022 02:39:10| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:39:11| |DUMB MIDGET| +|08/01/2022 02:39:11| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:39:12| YES +|08/01/2022 02:39:12| widekatyusha.mp4 +|08/01/2022 02:39:13| URAAAAAAAA +|08/01/2022 02:39:13| E +|08/01/2022 02:39:13| PRAVDA +|08/01/2022 02:39:14| GREMLIM +|08/01/2022 02:39:14| |HAH TIME FOR TETRIS| +|08/01/2022 02:39:15| |NONNA SAMA| +|08/01/2022 02:39:15| |YOU MEAN SEESIR!!!111| +|08/01/2022 02:39:16| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:39:16| |A FUCKING RAMP| +|08/01/2022 02:39:16| |YO LOOK AT THIS MIDGET| +|08/01/2022 02:39:16| N +|08/01/2022 02:39:16| UOOOOOOOOOOOOOOOOOH +|08/01/2022 02:39:16| |>136 cm| +|08/01/2022 02:39:16| |WOOOOOO GREMLIN| +|08/01/2022 02:39:17| |HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME | +|08/01/2022 02:39:18| cute&funny +|08/01/2022 02:39:18| COMMIES +|08/01/2022 02:39:20| R +|08/01/2022 02:39:20| nonna.... +|08/01/2022 02:39:20| |Have you heard this saying?| +|08/01/2022 02:39:21| imagine +|08/01/2022 02:39:21| COMMIE +|08/01/2022 02:39:21| BRITBONGS +|08/01/2022 02:39:22| |BEST GIRL| +|08/01/2022 02:39:23| SUMIPE +|08/01/2022 02:39:25| |DUMB MIDGET AND DUMB SLAG| +|08/01/2022 02:39:25| |CUNNY CUNNY CUNNY CUNNY CUNNY CUNNY| +|08/01/2022 02:39:25| |18 years old btw| +|08/01/2022 02:39:25| |COMMUNISM YES| +|08/01/2022 02:39:27| TOT +|08/01/2022 02:39:29| |HIGH IQ| +|08/01/2022 02:39:29| |hey this isnt on the ost| +|08/01/2022 02:39:29| M +|08/01/2022 02:39:32| |the yusha.gif| +|08/01/2022 02:39:32| |based soundtrack| +|08/01/2022 02:39:32| |i dont care saga of pravda is canon in my mind| +|08/01/2022 02:39:32| |BUILT FOR DIRLEWANGER COCK| +|08/01/2022 02:39:32| cute +|08/01/2022 02:39:33| GREMLIN +|08/01/2022 02:39:33| |JAM IN TEA WHAT THE FUCK| +|08/01/2022 02:39:33| Messy +|08/01/2022 02:39:34| IMAGINE +|08/01/2022 02:39:34| |have you heard this s---SHUT THE FUCK UP| +|08/01/2022 02:39:35| S +|08/01/2022 02:39:35| |DUM BMIDGET| +|08/01/2022 02:39:35| |Jam in Tea Shame | +|08/01/2022 02:39:37| |DON'T TELL ME WAHT TO DO NONNA| +|08/01/2022 02:39:37| |IMAGINE HOW FUN IT WOULD BE| +|08/01/2022 02:39:39| |COMMIE CUNNY| +|08/01/2022 02:39:40| N +|08/01/2022 02:39:42| |Yankee comes from dutch "janke", which means small jan.| +|08/01/2022 02:39:43| |cheeki breeki iv damke| +|08/01/2022 02:39:43| |du russians actually do this?| +|08/01/2022 02:39:45| |Brits shown their place| +|08/01/2022 02:39:47| |MY COCK WHEN SHE SPEAKS RUSSIAN UHOOOOOOOOOOOOO| +|08/01/2022 02:39:49| |Smug brat| +|08/01/2022 02:39:51| |>127 cm| +|08/01/2022 02:39:55| |>communist "food"| +|08/01/2022 02:39:55| |dumb midget| +|08/01/2022 02:39:57| imagine +|08/01/2022 02:39:57| IMAGINE +|08/01/2022 02:39:59| |dumbo Katyusha| +|08/01/2022 02:40:01| IMAGINE +|08/01/2022 02:40:03| |Katyusha is so small because she got nothing to eat| +|08/01/2022 02:40:04| |>tfw nonna is 1 cm taller than me| +|08/01/2022 02:40:06| imagine.. +|08/01/2022 02:40:08| |Why are Russians always evil?| +|08/01/2022 02:40:12| |>tfw no katyusha gf| +|08/01/2022 02:40:15| |small nonna| +|08/01/2022 02:40:16| |I WANT TO BE THAT CHAIR| +|08/01/2022 02:40:17| |massive nonna tits| +|08/01/2022 02:40:17| |desu wa| +|08/01/2022 02:40:20| |needs spanking correction| +|08/01/2022 02:40:20| |imagine being shorter than any of the guppies| +|08/01/2022 02:40:22| |HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +|08/01/2022 02:40:23| |russians are the good guys of history| +|08/01/2022 02:40:23| |russians are evil irl too| +|08/01/2022 02:40:23| |YFW Katusha is to small to be my cock sleeve| +|08/01/2022 02:40:26| |BEADY EYES, ANGLO LIES| +|08/01/2022 02:40:30| |L O N D O N| +|08/01/2022 02:40:31| |are they?| +|08/01/2022 02:40:31| LLOONNNNNGGGG +|08/01/2022 02:40:33| |HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +|08/01/2022 02:40:36| |F2 boi| +|08/01/2022 02:40:36| |Nonna is taller than the average American male| +|08/01/2022 02:40:36| |It is impossible to sneeze with open eyes.| +|08/01/2022 02:40:36| TSUCHIYA +|08/01/2022 02:40:37| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? v| +|08/01/2022 02:40:39| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? vv| +|08/01/2022 02:40:40| YEAAAAH +|08/01/2022 02:40:43| LEOPON +|08/01/2022 02:40:45| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +|08/01/2022 02:40:45| |Lepon gang| +|08/01/2022 02:40:46| |same BR as G btw| +|08/01/2022 02:40:47| 5'7'' +|08/01/2022 02:40:47| |Auto club real MVPs| +|08/01/2022 02:40:48| ENTER +|08/01/2022 02:40:51| |This is just real representation of history where everyone else but the Finns is evil| +|08/01/2022 02:40:52| |FUCK YEAH LEOPON BEST TEAM| +|08/01/2022 02:40:52| MALLARDS +|08/01/2022 02:40:53| SODOKO +|08/01/2022 02:40:53| CLONES +|08/01/2022 02:40:54| |THE CLONE WARS| +|08/01/2022 02:40:54| onaholes +|08/01/2022 02:40:54| sodoko +|08/01/2022 02:40:54| ENTER +|08/01/2022 02:40:54| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +|08/01/2022 02:40:55| SODOCLONES +|08/01/2022 02:40:56| ENTER +|08/01/2022 02:40:57| sodoks +|08/01/2022 02:40:57| Helemts! +|08/01/2022 02:40:58| |WOST GRILLS| +|08/01/2022 02:40:59| |LEOPON BEST TEAM| +|08/01/2022 02:40:59| SODOKO +|08/01/2022 02:41:01| |SODOKO BTFO| +|08/01/2022 02:41:03| SODOKO +|08/01/2022 02:41:03| |PUBLIC IMMORALITY COMMITTEE| +|08/01/2022 02:41:03| SODOKO +|08/01/2022 02:41:04| |SODOKO LOVE| +|08/01/2022 02:41:04| |LEOPON BEST TEAM| +|08/01/2022 02:41:06| |Finns aren't human, so they don't count| +|08/01/2022 02:41:09| |OH NO NO NO NO LOOK AT THAT HAIR| +|08/01/2022 02:41:10| >shorten +|08/01/2022 02:41:10| CUTE +|08/01/2022 02:41:11| |sodoko and the onaholes| +|08/01/2022 02:41:14| |FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS| +|08/01/2022 02:41:17| |Finns are superhuman| +|08/01/2022 02:41:17| |it doesn't look like a mallard miho| +|08/01/2022 02:41:18| |no it douesnt| +|08/01/2022 02:41:19| facts +|08/01/2022 02:41:19| Mallard +|08/01/2022 02:41:22| (sexually) +|08/01/2022 02:41:23| >RTFM +|08/01/2022 02:41:24| |DUCKS ARE THE SUPREME CHAMPIONS| +|08/01/2022 02:41:24| RTFM +|08/01/2022 02:41:27| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +|08/01/2022 02:41:29| |>reading the manual| +|08/01/2022 02:41:30| |Finns are dying everyday| +|08/01/2022 02:41:30| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +|08/01/2022 02:41:34| ownd +|08/01/2022 02:41:35| HAAAAAAI +|08/01/2022 02:41:37| |SHUT UP MMO| +|08/01/2022 02:41:38| haaaaaaaaaaa. +|08/01/2022 02:41:38| haaaaaaaaaaai +|08/01/2022 02:41:39| haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai +|08/01/2022 02:41:39| haaaaaaaaaiiiiiiiiiiiiiiii +|08/01/2022 02:41:40| HAAAAAAAAAAAAAI +|08/01/2022 02:41:42| Haaaiiiiii +|08/01/2022 02:41:42| |SHUT UP MOMO| +|08/01/2022 02:41:42| haaaaaaaaaaaaai +|08/01/2022 02:41:43| |CUTE CUTE CUTE| +|08/01/2022 02:41:45| >momo +|08/01/2022 02:41:48| |>Finna are dying everyday - not fast enough| +|08/01/2022 02:41:48| |we just do okay??| +|08/01/2022 02:41:50| |MOMO HATE| +|08/01/2022 02:41:50| |momo no one cares| +|08/01/2022 02:41:52| foreshadowing +|08/01/2022 02:41:53| |Anons I'm getting drunk...| +|08/01/2022 02:41:55| |time for PLOT!| +|08/01/2022 02:41:56| >subtle +|08/01/2022 02:41:57| |based lazy bunnies| +|08/01/2022 02:41:59| >momo +|08/01/2022 02:42:00| |DAME DA| +|08/01/2022 02:42:00| |Finns have the superior mongol steppe genepool| +|08/01/2022 02:42:01| |CHILL OUT MOMO| +|08/01/2022 02:42:03| MOMO +|08/01/2022 02:42:04| DRAMA +|08/01/2022 02:42:04| ... +|08/01/2022 02:42:04| |The bible does not mention any cats.| +|08/01/2022 02:42:04| >Momo +|08/01/2022 02:42:04| |fucking momo| +|08/01/2022 02:42:06| |MOMO ruining the moment again| +|08/01/2022 02:42:06| :O +|08/01/2022 02:42:08| |shut up momo| +|08/01/2022 02:42:09| |Next year, r-right?| +|08/01/2022 02:42:10| |why are you even here momo| +|08/01/2022 02:42:11| Momobros.... +|08/01/2022 02:42:14| :0 +|08/01/2022 02:42:14| |;0 momo | +|08/01/2022 02:42:17| |i am going to MURDER momo| +|08/01/2022 02:42:17| |P L O T| +|08/01/2022 02:42:23| |the plot is a bit retarded desu| +|08/01/2022 02:42:27| flat +|08/01/2022 02:42:28| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 02:42:34| |CHICKEN KATSU| +|08/01/2022 02:42:34| |Your face is a bit retarded desu| +|08/01/2022 02:42:45| |hot pot| +|08/01/2022 02:42:45| comfy +|08/01/2022 02:42:45| |Anon wtf....| +|08/01/2022 02:42:45| |imagine a guppie in one of those robes and nothing else| +|08/01/2022 02:42:46| |that food looks good| +|08/01/2022 02:42:47| CANNIBALISM +|08/01/2022 02:42:51| |anzu's manko| +|08/01/2022 02:42:51| |perfect wife| +|08/01/2022 02:42:51| |an an an an| +|08/01/2022 02:42:52| Anglerfish1 +|08/01/2022 02:42:52| |break the pasta| +|08/01/2022 02:42:53| |ANKOU NABE| +|08/01/2022 02:42:56| |is anglerfish tasty?| +|08/01/2022 02:42:56| COMFY +|08/01/2022 02:42:56| kek +|08/01/2022 02:42:57| |it only goes retarded levels in der film when they reuse this exact plot| +|08/01/2022 02:43:00| |i want to muder and eat anzu| +|08/01/2022 02:43:02| |Not at all| +|08/01/2022 02:43:05| |I want Anzu's nabe as well| +|08/01/2022 02:43:06| |its oishii| +|08/01/2022 02:43:08| |You are watching this under your kotatsu, right?| +|08/01/2022 02:43:11| |i want anzu to murder and eat me| +|08/01/2022 02:43:11| |does the supercut include the anglerfish dance ova?| +|08/01/2022 02:43:11| |Anzu wants to eat the anglerfish. This confirms it!| +|08/01/2022 02:43:15| |Anzus belly uoooooohhhh| +|08/01/2022 02:43:15| |anzu overrated| +|08/01/2022 02:43:16| |Miho is ruthless| +|08/01/2022 02:43:17| |Anzu Hotpot| +|08/01/2022 02:43:20| |ANKIMO UMAI| +|08/01/2022 02:43:21| |cool momo jacket| +|08/01/2022 02:43:23| |I should buy a kotatsu| +|08/01/2022 02:43:23| |shut down| +|08/01/2022 02:43:24| |BASED MIHO| +|08/01/2022 02:43:25| |>I don't care lol| +|08/01/2022 02:43:29| |i'm sitting under theirs| +|08/01/2022 02:43:29| CUTE +|08/01/2022 02:43:29| |CUTE MOMO| +|08/01/2022 02:43:30| |CUTE ANZU | +|08/01/2022 02:43:32| BOOBA +|08/01/2022 02:43:35| BOOBS +|08/01/2022 02:43:36| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 02:43:36| |ANOTHER CUTE ANZU| +|08/01/2022 02:43:36| |MOMO DORK| +|08/01/2022 02:43:38| UOOOOOOG +|08/01/2022 02:43:38| |big yuzu boobs| +|08/01/2022 02:43:39| UOHHHHHHHHH +|08/01/2022 02:43:40| |YUZU'S FAT TITS| +|08/01/2022 02:43:40| booba +|08/01/2022 02:43:41| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 02:43:43| |Am I supposed to feel bad now?| +|08/01/2022 02:43:43| |stfu momo| +|08/01/2022 02:43:44| |RYONA TIME| +|08/01/2022 02:43:45| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 02:43:47| | +TANOSHI| +|08/01/2022 02:43:48| ;_; +|08/01/2022 02:43:49| |See, Anzu could kick my ass!| +|08/01/2022 02:43:50| |V V| +|08/01/2022 02:43:50| |momo death| +|08/01/2022 02:43:51| >momo +|08/01/2022 02:43:51| |What exactly is Momo good for?| +|08/01/2022 02:43:52| sadge +|08/01/2022 02:43:53| | +TANOSHI| +|08/01/2022 02:43:55| |I HATE MOMO I LOVE MOMO'S MOMOS I HATE MOMO I LOVE MOMO'S MOMOS I HATE MOMO I LOVE MOMO'S MOMOS | +|08/01/2022 02:43:55| |I don't think about Momo at all!| +|08/01/2022 02:43:56| segs +|08/01/2022 02:43:57| |miho noises| +|08/01/2022 02:43:57| |ABSOLUTELY NOTHING| +|08/01/2022 02:43:57| |the good ol' days ;_;| +|08/01/2022 02:43:59| COWARD! +|08/01/2022 02:44:00| |raising siblings| +|08/01/2022 02:44:01| |fanta na| +|08/01/2022 02:44:02| |hottu pottu| +|08/01/2022 02:44:03| |Fun and Momo HAHAHA| +|08/01/2022 02:44:04| |yuki da| +|08/01/2022 02:44:05| |momo is good for domestic violence| +|08/01/2022 02:44:08| |momo has no real personality| +|08/01/2022 02:44:09| |Aight i'mma head of to pee can't deal with this shit| +|08/01/2022 02:44:11| |ryona with momo| +|08/01/2022 02:44:12| |Sergio Leone and Enio Morricone went to the same school.| +|08/01/2022 02:44:12| |They didn't tell her shit| +|08/01/2022 02:44:21| |you're the one suffering the domestic violence| +|08/01/2022 02:44:22| JEWS +|08/01/2022 02:44:25| |not that plot again| +|08/01/2022 02:44:26| |momo on scream piss time| +|08/01/2022 02:44:29| |YOU ALREADY PUT A BURDEN ON HER| +|08/01/2022 02:44:29| Where? +|08/01/2022 02:44:29| |CUTE MOMO| +|08/01/2022 02:44:30| |MUD WRSTLING!| +|08/01/2022 02:44:33| |I AM the domestic violence| +|08/01/2022 02:44:35| |ryona with momo| +|08/01/2022 02:44:37| |this first ep is taking really long| +|08/01/2022 02:44:38| |;_; Mextfag won| +|08/01/2022 02:44:38| |momo used to be cute| +|08/01/2022 02:44:38| |Anzu's mud| +|08/01/2022 02:44:39| |BITCH SHIHO| +|08/01/2022 02:44:40| mommy! +|08/01/2022 02:44:41| SHITHO +|08/01/2022 02:44:43| MAHO +|08/01/2022 02:44:45| |maho is my wife| +|08/01/2022 02:44:46| |my wife maho| +|08/01/2022 02:44:47| |Maho, you must kill her| +|08/01/2022 02:44:47| MAHOOOOO +|08/01/2022 02:44:47| |SHIT MOM| +|08/01/2022 02:44:50| |piss break is when momo shows up again| +|08/01/2022 02:44:51| |oh great, they're dead| +|08/01/2022 02:44:52| DISHONORABRUR +|08/01/2022 02:44:52| |why are moms so quick to disown their daughters| +|08/01/2022 02:44:53| |Spanking Momo! Slapping Momo! Punching Momo! Pissing on Momo!| +|08/01/2022 02:44:54| |haha katyusha looks like a penis| +|08/01/2022 02:44:55| |Shame on Family| +|08/01/2022 02:44:55| |my wife| +|08/01/2022 02:44:55| |FUCK YOU MOM| +|08/01/2022 02:44:56| |FUCK THIS DAUGTER OF MINE| +|08/01/2022 02:44:58| DISHONORABLE +|08/01/2022 02:45:00| |SHIT MUM| +|08/01/2022 02:45:01| |the worst mother in all of senshado| +|08/01/2022 02:45:03| |DEATH TO SHIHO| +|08/01/2022 02:45:03| |GO FUCK AN UGLY BASTARD YOU HAG| +|08/01/2022 02:45:04| |Sad Maho| +|08/01/2022 02:45:09| |name a worse mum| +|08/01/2022 02:45:10| |be more like yukari-mom. don't disown your kids| +|08/01/2022 02:45:11| |SHAMERFUR DISPRAY| +|08/01/2022 02:45:12| |Cute Maho| +|08/01/2022 02:45:15| |just push forward| +|08/01/2022 02:45:15| |HAG LOVE| +|08/01/2022 02:45:17| |mating press the mother NOW| +|08/01/2022 02:45:18| |AD VAN CING!| +|08/01/2022 02:45:19| |FUCK BITCH| +|08/01/2022 02:45:19| |>Just push forward| +|08/01/2022 02:45:20| |HOW DID SUCH A CRAPPY WOMAN GIVE BIRTH TO TWO ANGELS| +|08/01/2022 02:45:22| |FUCK SHIHO| +|08/01/2022 02:45:23| |what zero dick does to a bitch| +|08/01/2022 02:45:24| |BOKO PANTSU| +|08/01/2022 02:45:25| |DISINHERITENCE | +|08/01/2022 02:45:26| |and suddenly, a panty shot| +|08/01/2022 02:45:26| PANTSU +|08/01/2022 02:45:26| PANTSU +|08/01/2022 02:45:26| pantsu +|08/01/2022 02:45:27| |warm pantsu| +|08/01/2022 02:45:27| AZUSA +|08/01/2022 02:45:27| |>piss break >not just carrying the laptop to the toilet| +|08/01/2022 02:45:29| |I WANT TO BE THOSE PANTIES| +|08/01/2022 02:45:29| |UUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHH PANTY| +|08/01/2022 02:45:31| |>no heating| +|08/01/2022 02:45:31| |>lip balm| +|08/01/2022 02:45:34| |>miho is left to die in a cold street if she doesn't win this tournament| +|08/01/2022 02:45:36| |girls und pantsu...........| +|08/01/2022 02:45:37| |bring soup| +|08/01/2022 02:45:38| |sex with usagi...| +|08/01/2022 02:45:38| |Boko bear pantus!!!!| +|08/01/2022 02:45:39| |>shiho will never disown you| +|08/01/2022 02:45:41| |>watching on a laptop| +|08/01/2022 02:45:42| |LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA | +|08/01/2022 02:45:46| |>no fun allowed| +|08/01/2022 02:45:48| |>putting your poop bacteria on your laptop| +|08/01/2022 02:45:49| BASED +|08/01/2022 02:45:50| |where are the males chiyo???| +|08/01/2022 02:45:52| |bear panties| +|08/01/2022 02:45:52| |watching on a laptop is peak comfy| +|08/01/2022 02:45:52| BASED +|08/01/2022 02:45:53| |fun police| +|08/01/2022 02:45:53| eeeeee +|08/01/2022 02:45:53| BASED +|08/01/2022 02:45:54| |I AN'T GONNA LIVE FOREVER| +|08/01/2022 02:45:56| |well said| +|08/01/2022 02:45:57| |based /his/| +|08/01/2022 02:45:57| BASED +|08/01/2022 02:45:57| |Sodoko fuck off| +|08/01/2022 02:45:57| BASED +|08/01/2022 02:45:58| |I AINT GONNA LIVE FOREVER| +|08/01/2022 02:46:00| |LOVE TAEKO| +|08/01/2022 02:46:00| |I AINT GONNA LIVE FOREVER| +|08/01/2022 02:46:02| |>current year /a/ mods| +|08/01/2022 02:46:02| |Erwin wins| +|08/01/2022 02:46:04| |Erwin... | +|08/01/2022 02:46:06| :( +|08/01/2022 02:46:07| |TAEKO LOVE| +|08/01/2022 02:46:15| |yuki da| +|08/01/2022 02:46:16| BOKO +|08/01/2022 02:46:21| |Mods are this cute?| +|08/01/2022 02:46:21| IS-2 +|08/01/2022 02:46:22| |job of the century| +|08/01/2022 02:46:23| |BELAYA ARMIYA CHYORNIY BARON| +|08/01/2022 02:46:26| |How much does Sodoko get paid for all that janny work I wonder| +|08/01/2022 02:46:28| |gay ass tsu| +|08/01/2022 02:46:28| Bokofags +|08/01/2022 02:46:30| |boko jar| +|08/01/2022 02:46:30| boko +|08/01/2022 02:46:30| TOTSUGEKIII +|08/01/2022 02:46:30| |Js 2 or Is 2 Which one Bros?| +|08/01/2022 02:46:32| |literally unplayable| +|08/01/2022 02:46:32| |I thought they were only allowed 10 tanks max?| +|08/01/2022 02:46:33| |HELP ME BOKO| +|08/01/2022 02:46:34| |>she does it for free| +|08/01/2022 02:46:35| |uooooh JS| +|08/01/2022 02:46:37| |she does it for free| +|08/01/2022 02:46:39| |Will I turn into a guppy if I become a mod?| +|08/01/2022 02:46:41| |>a fucking ramp| +|08/01/2022 02:46:44| | Jack the ripper was left handed.| +|08/01/2022 02:46:45| |3rd match can field 15 I think?| +|08/01/2022 02:46:46| Yes +|08/01/2022 02:46:46| |KV-2 Loev| +|08/01/2022 02:46:47| |A FUCKING RAMP| +|08/01/2022 02:46:48| |A FUCKING RAMP| +|08/01/2022 02:46:50| >skirts +|08/01/2022 02:46:51| SAMUI +|08/01/2022 02:46:51| |>cope slope| +|08/01/2022 02:46:52| |it's an aviation cruiser, it's okay!| +|08/01/2022 02:46:52| |A. FUCKING. RAMP| +|08/01/2022 02:46:53| winterketten +|08/01/2022 02:46:55| |10 tanks for only the first few rounds right| +|08/01/2022 02:46:55| >ramp +|08/01/2022 02:46:56| WINTERKETTEN +|08/01/2022 02:47:00| |uhhh the antifreeze?| +|08/01/2022 02:47:02| |no, you'll just be a faggot that does it for no monetary compensation whatsoever| +|08/01/2022 02:47:04| >RAMP +|08/01/2022 02:47:05| |accurate german winter uniforms| +|08/01/2022 02:47:08| |based mako| +|08/01/2022 02:47:09| |there is nothing wrong with having a ramp.| +|08/01/2022 02:47:09| |S O D O K O| +|08/01/2022 02:47:11| SODOKO +|08/01/2022 02:47:14| |Over by Christmas r-right?| +|08/01/2022 02:47:15| |SO DO KO| +|08/01/2022 02:47:16| |rape sodoko| +|08/01/2022 02:47:16| |killer fashion| +|08/01/2022 02:47:17| |rampfag cope| +|08/01/2022 02:47:17| |rabbit figtht| +|08/01/2022 02:47:17| |AZUSA HAVING A SNOWBALL FIGHT| +|08/01/2022 02:47:18| |its 1941 all over again... | +|08/01/2022 02:47:19| BASED +|08/01/2022 02:47:22| |based /his/| +|08/01/2022 02:47:23| ENTER +|08/01/2022 02:47:23| KATYUSHA +|08/01/2022 02:47:24| eheheh +|08/01/2022 02:47:25| | smol| +|08/01/2022 02:47:25| |YUKI NO SHINGUN| +|08/01/2022 02:47:26| ENTER +|08/01/2022 02:47:26| KATYUSHA +|08/01/2022 02:47:26| |RED BLOOD OVER PARADISE!| +|08/01/2022 02:47:26| |THE YUSHA| +|08/01/2022 02:47:27| |>nothing wrong with having a ramp. t. Euro| +|08/01/2022 02:47:27| ENTER +|08/01/2022 02:47:27| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 02:47:27| WIDE +|08/01/2022 02:47:28| |Sodoko died at this point in the doujin| +|08/01/2022 02:47:28| qWIDE +|08/01/2022 02:47:28| ENTER +|08/01/2022 02:47:29| enter +|08/01/2022 02:47:29| |KATYUSHA WALK| +|08/01/2022 02:47:29| KATYUSHA +|08/01/2022 02:47:30| widekatyusha.mp4 +|08/01/2022 02:47:30| ENTER +|08/01/2022 02:47:30| |ENTER THE YUSHA| +|08/01/2022 02:47:32| |SO SMOL| +|08/01/2022 02:47:32| ENTER +|08/01/2022 02:47:32| WIDE +|08/01/2022 02:47:34| |WIDE TUSHA| +|08/01/2022 02:47:34| WIDE +|08/01/2022 02:47:34| |KATYUSHA SAMA| +|08/01/2022 02:47:34| |Undiluted anti freeze, freezes at 10,4 °F (-12 °C).| +|08/01/2022 02:47:34| smol +|08/01/2022 02:47:35| |KATYUSHA! KATYUSHA!| +|08/01/2022 02:47:35| WIDE +|08/01/2022 02:47:36| WIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIDE +|08/01/2022 02:47:36| ENTER +|08/01/2022 02:47:36| wide +|08/01/2022 02:47:37| WIDE +|08/01/2022 02:47:37| |WIDE KATYUSHA | +|08/01/2022 02:47:37| Widetyusha +|08/01/2022 02:47:37| |Красная Армия всех сильней.| +|08/01/2022 02:47:37| WIDE +|08/01/2022 02:47:38| WIDE +|08/01/2022 02:47:38| CUTE +|08/01/2022 02:47:39| WIDEKATYUSHA +|08/01/2022 02:47:40| |LOLI RAGE| +|08/01/2022 02:47:40| WIDE +|08/01/2022 02:47:40| |Yuki no Shingun!| +|08/01/2022 02:47:41| ZIFUBUKI +|08/01/2022 02:47:41| WIDE +|08/01/2022 02:47:42| |NONNA'S NONNAS| +|08/01/2022 02:47:42| WIDE +|08/01/2022 02:47:42| |nutcrackers inbound| +|08/01/2022 02:47:42| >OST +|08/01/2022 02:47:43| |WIDE CUNNY| +|08/01/2022 02:47:43| |>127 cm| +|08/01/2022 02:47:44| |W I D E| +|08/01/2022 02:47:44| |SONG OF DENISE STARTS PLAYIING| +|08/01/2022 02:47:45| |Katyusha thighs Katyusha thighs| +|08/01/2022 02:47:46| |little miss poofy pants| +|08/01/2022 02:47:46| ENTER +|08/01/2022 02:47:46| |WIde nutcracker| +|08/01/2022 02:47:47| |based nutcracker| +|08/01/2022 02:47:47| |MIDGET LAUGH| +|08/01/2022 02:47:48| |that wide edit is great| +|08/01/2022 02:47:48| |WIDE KATYUSHA| +|08/01/2022 02:47:48| AHAHAHAHA +|08/01/2022 02:47:48| >BGM +|08/01/2022 02:47:48| AHAHHAHAHAHAHAHHAHAHAHAHAHAH +|08/01/2022 02:47:49| |SAORI STOCKINGS| +|08/01/2022 02:47:51| |smug katyusha| +|08/01/2022 02:47:51| HAHAHAHAHAHHA +|08/01/2022 02:47:52| |based nutcracker| +|08/01/2022 02:47:53| |Diluted anti freeze with 50% water, starts freezing at -22 °F (-30 °C)| +|08/01/2022 02:47:55| NONNA! +|08/01/2022 02:47:55| |*SONG FOR DENISSE RUMBLES IN THE DISTANCE*| +|08/01/2022 02:47:56| |short and shorter| +|08/01/2022 02:47:56| |I want to crack my nut on Katyusha| +|08/01/2022 02:47:56| |CRIMEA JE SRBJA| +|08/01/2022 02:47:56| |Katyusha is the perfect gulag commander| +|08/01/2022 02:47:57| flat +|08/01/2022 02:48:00| NONNA +|08/01/2022 02:48:00| |bowing down| +|08/01/2022 02:48:00| WIDE +|08/01/2022 02:48:01| |uoh against uoh| +|08/01/2022 02:48:02| |>she has to crouch| +|08/01/2022 02:48:03| NONNA +|08/01/2022 02:48:03| KATYUSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:48:03| MOGGED +|08/01/2022 02:48:03| |Wide af| +|08/01/2022 02:48:05| |Katyusha the nut cracker| +|08/01/2022 02:48:06| KNEEL +|08/01/2022 02:48:07| |big nonna tits| +|08/01/2022 02:48:07| >IMAGINE +|08/01/2022 02:48:08| MOGGED +|08/01/2022 02:48:08| |MASTER BLASTER| +|08/01/2022 02:48:09| CUTE +|08/01/2022 02:48:09| |CHAD YUSHA| +|08/01/2022 02:48:09| |SHE'S HUGE| +|08/01/2022 02:48:09| |GATTAI DA| +|08/01/2022 02:48:10| |Was it autism?| +|08/01/2022 02:48:10| GATTAI +|08/01/2022 02:48:11| |need the Toyota red coolant| +|08/01/2022 02:48:12| |Based brat| +|08/01/2022 02:48:14| gremlinchads? +|08/01/2022 02:48:15| IMAGINE +|08/01/2022 02:48:17| |HOLY SHIT HOW DID SHE GET SO TALL| +|08/01/2022 02:48:17| |CYKA BLYAT| +|08/01/2022 02:48:18| PURGE +|08/01/2022 02:48:18| |little brat... | +|08/01/2022 02:48:20| |MASTER BLASTER RUNS THIS SHIP| +|08/01/2022 02:48:20| |>calling nonna a horse| +|08/01/2022 02:48:21| |you'll be PURGED| +|08/01/2022 02:48:21| 5'11 +|08/01/2022 02:48:21| |god I wish that were me with katyushacunny on my back| +|08/01/2022 02:48:22| |based, fuck nips| +|08/01/2022 02:48:22| |i want her to crack my nuts| +|08/01/2022 02:48:22| >PURGED +|08/01/2022 02:48:24| |God I wish that were me| +|08/01/2022 02:48:24| ara +|08/01/2022 02:48:25| |loli stalin| +|08/01/2022 02:48:26| |HOW DID SHE HAR THAT| +|08/01/2022 02:48:26| |sigma katyusha btfos heightlets| +|08/01/2022 02:48:26| |SEND TO SIBERIA| +|08/01/2022 02:48:26| |plot moment| +|08/01/2022 02:48:28| |PURGE ME PLEASE, KATYUSHA| +|08/01/2022 02:48:30| |ass bigger than Sayori| +|08/01/2022 02:48:30| |CHEEEEKI BREEEKI| +|08/01/2022 02:48:32| UOOOOHHHHH +|08/01/2022 02:48:32| |THE BANTS| +|08/01/2022 02:48:32| |MADE FOR POSTBIRTH DEATH| +|08/01/2022 02:48:33| |NEED RAPE CORRECTION| +|08/01/2022 02:48:35| SERVED +|08/01/2022 02:48:38| BUTT +|08/01/2022 02:48:38| |rape correction needed| +|08/01/2022 02:48:38| PSTD +|08/01/2022 02:48:38| |now im hungry| +|08/01/2022 02:48:40| purge +|08/01/2022 02:48:40| |DO SVIDANYA| +|08/01/2022 02:48:41| |DA SVIDANIYA| +|08/01/2022 02:48:41| |DAB on the Nishizumi style| +|08/01/2022 02:48:42| |DAMN FEMALE KID| +|08/01/2022 02:48:42| |DAMN CHILD| +|08/01/2022 02:48:46| |damn female child... | +|08/01/2022 02:48:46| |spanking needed| +|08/01/2022 02:48:46| |Katyusha built for rape and impregnation| +|08/01/2022 02:48:48| |do svidanya| +|08/01/2022 02:48:48| |Nonna's Katyusha piss smell neck| +|08/01/2022 02:48:49| |you know this saying?| +|08/01/2022 02:48:52| |tony kaku| +|08/01/2022 02:48:54| |How can she be rape corrected by other girls? That makes no sense| +|08/01/2022 02:48:55| |the child...the child...the child...| +|08/01/2022 02:48:56| |My imouto bought me katyusha figure for birthday| +|08/01/2022 02:49:02| |tank shells duh| +|08/01/2022 02:49:04| |cool imouto| +|08/01/2022 02:49:05| |bring more soup| +|08/01/2022 02:49:06| |Based sister| +|08/01/2022 02:49:06| |chi ha tan style| +|08/01/2022 02:49:07| |who wins, tony kaku or taku-san?| +|08/01/2022 02:49:07| |Sex your imouto| +|08/01/2022 02:49:09| UMU +|08/01/2022 02:49:12| |brush her teeth| +|08/01/2022 02:49:12| |we only have to kick in the door bros| +|08/01/2022 02:49:13| >retarded +|08/01/2022 02:49:13| |Красная Армия, марш марш вперёд| +|08/01/2022 02:49:16| IDIOTS +|08/01/2022 02:49:16| |she'll be rape corrected by the old men that pleasure saori| +|08/01/2022 02:49:16| |charge into the KV2 | +|08/01/2022 02:49:17| |NORIKO OK| +|08/01/2022 02:49:18| TOTSUGEKI +|08/01/2022 02:49:19| totsugeki? +|08/01/2022 02:49:21| |my older sister is a bitch| +|08/01/2022 02:49:22| |where's Saki| +|08/01/2022 02:49:22| TOTSUGEKI!!! +|08/01/2022 02:49:22| |NORIKO IS A BOY| +|08/01/2022 02:49:22| |Don't listen to the retards!| +|08/01/2022 02:49:26| GYAFUN +|08/01/2022 02:49:26| >TOTSUGEKI +|08/01/2022 02:49:27| |ya hooon| +|08/01/2022 02:49:27| GYAFUN +|08/01/2022 02:49:27| TOTSUGEKI +|08/01/2022 02:49:28| RETARDS +|08/01/2022 02:49:28| |the whole rotten structure will collapse bros| +|08/01/2022 02:49:28| |GA HOON| +|08/01/2022 02:49:30| |Orange Pekoe-san... have you heard this saying? Darjeeling is ultimate gf built for cuddles, love and marriage.| +|08/01/2022 02:49:31| |NORIKO IS A GIRL| +|08/01/2022 02:49:33| |JUST TOTSUGEKI| +|08/01/2022 02:49:33| TOTSUGEKI! +|08/01/2022 02:49:37| TOTSUGEKI +|08/01/2022 02:49:37| |Miho not so smug| +|08/01/2022 02:49:41| |Just kick the door in | +|08/01/2022 02:49:43| |is ふ hu or fu?| +|08/01/2022 02:49:45| |one more fucking saying darj, i swear| +|08/01/2022 02:49:48| |SUN TZU| +|08/01/2022 02:49:51| TOKKAN! +|08/01/2022 02:49:51| |Its fu | +|08/01/2022 02:49:52| |do you know this saying?| +|08/01/2022 02:49:54| |the whole rotten structure is about to come crashing down| +|08/01/2022 02:49:55| |have you heard this saying| +|08/01/2022 02:49:56| |its hu| +|08/01/2022 02:49:59| |ふ is fu and hu| +|08/01/2022 02:49:59| |PIZDEC VSEM NAHUI| +|08/01/2022 02:50:00| |Punching Momo's stupid face!| +|08/01/2022 02:50:02| |>German army be like| +|08/01/2022 02:50:02| |"All warfare is based"| +|08/01/2022 02:50:05| |SUN TSU: chingchonchang| +|08/01/2022 02:50:05| |fu with your lips like phew| +|08/01/2022 02:50:05| |that'snot True| +|08/01/2022 02:50:06| SEAMLESS +|08/01/2022 02:50:06| |Yeah, Japan would know| +|08/01/2022 02:50:07| TETRIS +|08/01/2022 02:50:08| |no one's benefited from prolonged warfare?| +|08/01/2022 02:50:08| |No seams| +|08/01/2022 02:50:08| ENTER +|08/01/2022 02:50:08| SEAMLESS +|08/01/2022 02:50:08| KATYUSHA +|08/01/2022 02:50:11| |sun tzu said that| +|08/01/2022 02:50:12| |sans seams| +|08/01/2022 02:50:12| |ふ is ふ, got it| +|08/01/2022 02:50:15| |best part| +|08/01/2022 02:50:17| |PANZER VOR| +|08/01/2022 02:50:18| KATYUSHA +|08/01/2022 02:50:20| KATYUSHA +|08/01/2022 02:50:20| KATYUSHA +|08/01/2022 02:50:20| |.... Over by Christmqs....| +|08/01/2022 02:50:21| SEAMS +|08/01/2022 02:50:21| |how many wars did sun tzu win?| +|08/01/2022 02:50:22| |SPASIBO DEDU ZA POBEDU)))))))))))))))))| +|08/01/2022 02:50:22| |IT'S TIME| +|08/01/2022 02:50:23| |EVERYBODY GET READY TO SING ALONG!| +|08/01/2022 02:50:23| |song time?| +|08/01/2022 02:50:24| |TERIS HERE WE GO| +|08/01/2022 02:50:26| KATYUSHA +|08/01/2022 02:50:26| |if you kill youre enemies they win| +|08/01/2022 02:50:26| |Krasnaya Armiya vseh silyney| +|08/01/2022 02:50:27| |TO THE GULAS| +|08/01/2022 02:50:27| |CYKA BLYAT| +|08/01/2022 02:50:28| |better not be the localized version with Tetris| +|08/01/2022 02:50:31| |Napoleon had panic fear of cats.| +|08/01/2022 02:50:31| |So which ep are we on currently?| +|08/01/2022 02:50:31| KATYUSHA +|08/01/2022 02:50:31| |>25 RUBLES| +|08/01/2022 02:50:35| |WHERE THE FUCK IS KATYUSHA SONG?| +|08/01/2022 02:50:35| |/a/ sings| +|08/01/2022 02:50:36| RASTVETALI +|08/01/2022 02:50:38| GULAG +|08/01/2022 02:50:38| |RASTSVETALI YABLONI I GRUSHI| +|08/01/2022 02:50:38| |>ふ is ふ, unironically the best way to see it| +|08/01/2022 02:50:39| URA +|08/01/2022 02:50:39| KATYUSHA +|08/01/2022 02:50:39| |ZA RODINU ZA STALINA| +|08/01/2022 02:50:40| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:41| URA +|08/01/2022 02:50:41| YEAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:41| |to the gulag... | +|08/01/2022 02:50:42| |SONG TIME SONG TIME| +|08/01/2022 02:50:42| |we're on like 7 or 8 i think| +|08/01/2022 02:50:42| |! Banger alert ! Banger alert !| +|08/01/2022 02:50:43| |SING WITH ME| +|08/01/2022 02:50:43| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:44| URA +|08/01/2022 02:50:44| >tetris +|08/01/2022 02:50:44| YPA +|08/01/2022 02:50:44| |SING DAMMIT| +|08/01/2022 02:50:44| |Here we go| +|08/01/2022 02:50:45| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:45| |URA | +|08/01/2022 02:50:45| |this got me into gup| +|08/01/2022 02:50:45| |>not the CR version| +|08/01/2022 02:50:45| |HERE IT IS| +|08/01/2022 02:50:46| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:46| YPAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:46| |LETS GOOOOOOOOOOOOO| +|08/01/2022 02:50:46| URAHHHHHHH +|08/01/2022 02:50:47| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:48| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:48| TETORISU +|08/01/2022 02:50:48| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:50:49| |PAPLOI TURNMANI NAD REKOI| +|08/01/2022 02:50:49| |HERE WE GO| +|08/01/2022 02:50:50| KATYUSHA +|08/01/2022 02:50:50| URAAAAAAAA +|08/01/2022 02:50:50| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:52| URAAAAHHHHH +|08/01/2022 02:50:52| SUMIPEEEEEEEEEEEEEEEE +|08/01/2022 02:50:53| KATYUSHA +|08/01/2022 02:50:53| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:50:53| KATYUSHA +|08/01/2022 02:50:53| URAAAH +|08/01/2022 02:50:53| |1 2 3 4| +|08/01/2022 02:50:54| URRRAAAAAAAAAAA +|08/01/2022 02:50:54| SUBS +|08/01/2022 02:50:55| UUUURRRRRAAAAAAAAA +|08/01/2022 02:50:55| |COMMUNIST WIN!!| +|08/01/2022 02:50:56| URAAAAAAAA +|08/01/2022 02:50:56| |based subs| +|08/01/2022 02:50:57| |HERE WE GO!| +|08/01/2022 02:50:57| HET +|08/01/2022 02:50:57| URRRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:57| wwwwwwwwww +|08/01/2022 02:50:57| |commie time| +|08/01/2022 02:50:57| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:50:57| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:57| |Quality subs| +|08/01/2022 02:51:00| UUUURRRRRAAAAAAAAA +|08/01/2022 02:51:01| KATYUSHA +|08/01/2022 02:51:01| KATYUSHA +|08/01/2022 02:51:01| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:02| |CYKA BLYAT| +|08/01/2022 02:51:02| |FUCKING GAY SUBTITLES GET THE FUCK OUT OF MY FACE| +|08/01/2022 02:51:02| URAAAAAAAAAAAAAAA +|08/01/2022 02:51:02| |What is this \fsp-10?| +|08/01/2022 02:51:02| a +|08/01/2022 02:51:02| |nice subs lmao| +|08/01/2022 02:51:02| URRAAAAAAAAA +|08/01/2022 02:51:03| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:03| KATYUSHA +|08/01/2022 02:51:03| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:06| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:06| KATYUSHA +|08/01/2022 02:51:06| |THE FIRST OF MANY SONG!| +|08/01/2022 02:51:06| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:06| |MAX VOLUME| +|08/01/2022 02:51:07| ENTER +|08/01/2022 02:51:07| RED +|08/01/2022 02:51:07| GOMMUNISM +|08/01/2022 02:51:07| |COMRADE KATYUSHA| +|08/01/2022 02:51:07| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:09| Katyusha +|08/01/2022 02:51:09| UUUURRRRRAAAAAAAAA +|08/01/2022 02:51:09| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:10| |VODKA VODKA PIEROGI CHEEKI BREEKI| +|08/01/2022 02:51:11| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:12| |HAIL LENIN, HAIL STALIN, HAIL KATYUSHA| +|08/01/2022 02:51:12| TETRIS +|08/01/2022 02:51:13| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:13| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:13| |MAN, THE OST IS SO GOOOOD| +|08/01/2022 02:51:14| KATYUSHAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:15| URQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ +|08/01/2022 02:51:15| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:15| KHOROSHO +|08/01/2022 02:51:18| |LONG LIVE THE PARTY| +|08/01/2022 02:51:18| |IF YOU ARE NOT RED YOU ARE A FAG| +|08/01/2022 02:51:18| uuuuuuuuuuuuuuuuuuuuurrrrrrrrrrrrrrrrrrrrrrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +|08/01/2022 02:51:21| FANG +|08/01/2022 02:51:23| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:23| |Cute russian larpers| +|08/01/2022 02:51:24| |naisu karaoke| +|08/01/2022 02:51:24| ORLA +|08/01/2022 02:51:26| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:26| |EVERYBODY GO RED| +|08/01/2022 02:51:27| |I don't speak Ruskie| +|08/01/2022 02:51:27| UUURRRRRRRRRRRRRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:28| UUUUUUURRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:28| |PRAT TAVO CHI BISMA PIEREGLA| +|08/01/2022 02:51:29| |It would be a shame if some danmaku covered these tryhard subs| +|08/01/2022 02:51:31| |KATSYUSHA CHEEKI BREEKI KATSUYSHA| +|08/01/2022 02:51:31| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:32| BERECLA +|08/01/2022 02:51:32| LYLBLYAAAAAAA +|08/01/2022 02:51:34| KINO +|08/01/2022 02:51:34| WOAHHH +|08/01/2022 02:51:36| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:36| |BETTER DEAD THAN RED| +|08/01/2022 02:51:36| URRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:37| UUUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:37| |BETTER DED THEN RED| +|08/01/2022 02:51:39| KINO +|08/01/2022 02:51:40| |THIS IS A COMMUNIST STREAM| +|08/01/2022 02:51:40| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:40| |Выходила, песню заводила Про степного сизого орла Про того, которого любила Про того, чьи письма берегла| +|08/01/2022 02:51:42| |i want to make them a mother land| +|08/01/2022 02:51:42| KINO +|08/01/2022 02:51:42| uuuurrrraaaa +|08/01/2022 02:51:43| |AGAIN AGAIN| +|08/01/2022 02:51:43| |>shot version| +|08/01/2022 02:51:46| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:46| |why does katyusha speak russian here?| +|08/01/2022 02:51:46| |Встава́й, страна́ огро́мная| +|08/01/2022 02:51:48| |EAT SHIT OOARAI| +|08/01/2022 02:51:48| |can't believe i missed that on my first watch| +|08/01/2022 02:51:50| |Better Yellow than smello| +|08/01/2022 02:51:51| ☭☭☭☭ +|08/01/2022 02:51:52| URAAAA!!!!!! +|08/01/2022 02:51:52| ENCORE +|08/01/2022 02:51:53| |How many tank shells could Katyusha take?| +|08/01/2022 02:51:55| |Always with Honour Pyotr Wrangel| +|08/01/2022 02:51:55| BUFFER +|08/01/2022 02:51:55| |hang katyusha for kokoro connect| +|08/01/2022 02:51:57| UUUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:57| THIGHS +|08/01/2022 02:51:58| buffering +|08/01/2022 02:51:58| |CYKA BYLAY| +|08/01/2022 02:51:59| thighs +|08/01/2022 02:51:59| |ENCORE ENCORE ENCORE| +|08/01/2022 02:52:00| |FAIR AND BALANCED RUSSIAN TANK ARMOR| +|08/01/2022 02:52:00| LEGS +|08/01/2022 02:52:00| buffering +|08/01/2022 02:52:01| |>tfw still no Erika cover| +|08/01/2022 02:52:04| |commie stream| +|08/01/2022 02:52:05| |buffer time| +|08/01/2022 02:52:05| |communist strim, starts to buffer again| +|08/01/2022 02:52:06| KOHI +|08/01/2022 02:52:06| |fucking katyusha made the stream buffer| +|08/01/2022 02:52:07| NOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 02:52:07| |good point to buffer| +|08/01/2022 02:52:08| |short skirts in freezing weather| +|08/01/2022 02:52:08| FUTOMOMO +|08/01/2022 02:52:11| |STOP KILLING MY STREAM. STOP WATCHING NOW| +|08/01/2022 02:52:12| COCOA +|08/01/2022 02:52:14| choco! +|08/01/2022 02:52:14| |and then she handed me a cheese sandwich| +|08/01/2022 02:52:14| |cheese sandwich| +|08/01/2022 02:52:16| |a fucking cheese sandwich| +|08/01/2022 02:52:17| DOO +|08/01/2022 02:52:17| |stream has been put in gulag| +|08/01/2022 02:52:18| |the finest bandwidth in the soviet union| +|08/01/2022 02:52:18| Bbuffering... +|08/01/2022 02:52:19| |katyusha too wide, stream can't handle| +|08/01/2022 02:52:23| |their veins are carbon coated, it's okay| +|08/01/2022 02:52:23| |NEWFAGGOTS REEEEEEEEEEEEEEEEE| +|08/01/2022 02:52:26| |gommunism killed the stream| +|08/01/2022 02:52:26| |>russian stream quality| +|08/01/2022 02:52:27| |cheese sandwhich. funniest shit i've ever seen| +|08/01/2022 02:52:28| thighs +|08/01/2022 02:52:28| |Drinking Yukari's coco| +|08/01/2022 02:52:28| |I ONLY SPEAK FREEDOM| +|08/01/2022 02:52:30| |big nonna tits| +|08/01/2022 02:52:30| |commie spies sabotaging the stream| +|08/01/2022 02:52:30| |>Commies cause buffering| +|08/01/2022 02:52:31| >REEEEEEEEEEEEEEEEE +|08/01/2022 02:52:32| |God damn commie buffering| +|08/01/2022 02:52:33| |>skirts on the snow| +|08/01/2022 02:52:33| |What dummy| +|08/01/2022 02:52:33| |midget connection| +|08/01/2022 02:52:35| |I blame the russians| +|08/01/2022 02:52:39| |Katyusha is so baka| +|08/01/2022 02:52:39| CHEEKI +|08/01/2022 02:52:39| NONNA! +|08/01/2022 02:52:40| |cheeky breeki| +|08/01/2022 02:52:42| |good stream quality is capitalism| +|08/01/2022 02:52:42| NONNA! +|08/01/2022 02:52:44| |>calls other "namaiki"| +|08/01/2022 02:52:45| |glad we got some cheesesandwich posters| +|08/01/2022 02:52:46| |>Russian internet| +|08/01/2022 02:52:48| |EVERYONES BANDWIDTH| +|08/01/2022 02:52:49| |are we watching der film and das finale| +|08/01/2022 02:52:51| УУУУУУУУУУУУУУУУУУУУУУУУУУУУУРPPPPPPPPPPPPPPPPPPPPPPPPPPPPPАAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:52:54| >slavs +|08/01/2022 02:52:54| |oh no no no no renault bros| +|08/01/2022 02:52:57| |just keep driving| +|08/01/2022 02:52:57| |katyusha killing the stream to hide a war crime| +|08/01/2022 02:52:58| |im retarded| +|08/01/2022 02:52:59| |How can you not cheesesandwhich post| +|08/01/2022 02:53:03| |Pravda is starving their streamers| +|08/01/2022 02:53:03| |It's like I'm actually playing CSGO| +|08/01/2022 02:53:05| |Kick her harder| +|08/01/2022 02:53:07| |>french engineering | +|08/01/2022 02:53:07| snow +|08/01/2022 02:53:07| MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOT +|08/01/2022 02:53:07| |Gomoyo, sodoko and ?| +|08/01/2022 02:53:11| |You guys stay away from MY bandwidth| +|08/01/2022 02:53:12| |get the fuck out| +|08/01/2022 02:53:13| |uoooh legs| +|08/01/2022 02:53:16| pazomiiiiiiiiiiiiii +|08/01/2022 02:53:17| |TAKE MY STRENGTH \O/TAKE MY STRENGTH \O/TAKE MY STRENGTH \O/TAKE MY STRENGTH \O/| +|08/01/2022 02:53:18| CUTIES +|08/01/2022 02:53:20| |aSSERT DOMINANCE| +|08/01/2022 02:53:20| |L2DRIVE RETARD| +|08/01/2022 02:53:21| |PAZOMIIIIIIIIII | +|08/01/2022 02:53:21| |wtf basic geometry| +|08/01/2022 02:53:23| |is it legal to transfer crew?| +|08/01/2022 02:53:24| |French engineering....| +|08/01/2022 02:53:24| |shut up sodoko| +|08/01/2022 02:53:25| paizuri +|08/01/2022 02:53:28| |built for pazomi| +|08/01/2022 02:53:31| |>dial up| +|08/01/2022 02:53:35| |on scale 0-100 how wet sodoko is now| +|08/01/2022 02:53:36| |why is there a snow wall| +|08/01/2022 02:53:39| |hana san could you shoot momo?| +|08/01/2022 02:53:42| |Just shoot the snow lmao| +|08/01/2022 02:53:44| eh? +|08/01/2022 02:53:45| |>HE shell >safe sport| +|08/01/2022 02:53:48| |DO HE shells work like that?| +|08/01/2022 02:53:49| |does that work?| +|08/01/2022 02:53:51| #FUCKSNOW +|08/01/2022 02:53:53| |FUCK FLOWERS| +|08/01/2022 02:53:53| ~60-70 +|08/01/2022 02:53:55| |damn what a bitch| +|08/01/2022 02:53:55| |fuk u mom| +|08/01/2022 02:53:58| |Why are those shells allowed? Seems dangerous for little girls.| +|08/01/2022 02:54:00| test +|08/01/2022 02:54:01| |tsun mom| +|08/01/2022 02:54:02| FUN +|08/01/2022 02:54:02| squirrels! +|08/01/2022 02:54:03| |NIGGA I'M NUTS| +|08/01/2022 02:54:04| Shinzabro +|08/01/2022 02:54:04| Azusa! +|08/01/2022 02:54:05| |risu dayo :DDD| +|08/01/2022 02:54:08| |What are you Saki?| +|08/01/2022 02:54:08| |CARBON COATED| +|08/01/2022 02:54:08| |test failed| +|08/01/2022 02:54:09| BONEY! +|08/01/2022 02:54:09| |Time to brew some coffee for the long haul| +|08/01/2022 02:54:12| |Where's Hanna's dad?| +|08/01/2022 02:54:12| staringrado... +|08/01/2022 02:54:15| |Stalingrad flashbacks| +|08/01/2022 02:54:16| >sTALINGRAD +|08/01/2022 02:54:16| |PAY ATTENTION TO THE MATCH| +|08/01/2022 02:54:17| |this is how you get sports parents that are crazy| +|08/01/2022 02:54:17| >/pol/ +|08/01/2022 02:54:17| |don't mention pls| +|08/01/2022 02:54:19| |>erwin having flashbacks| +|08/01/2022 02:54:19| |This is our stalingrad, Ooaraibros| +|08/01/2022 02:54:20| |staringrado is serious business| +|08/01/2022 02:54:20| |shells are carbon coated so their safe| +|08/01/2022 02:54:20| |Stalingrad - Massengrab| +|08/01/2022 02:54:21| Stalingrad.. +|08/01/2022 02:54:21| STALINGRADOU +|08/01/2022 02:54:22| >gUPPIEGRAD +|08/01/2022 02:54:22| |stalingrad isn't real| +|08/01/2022 02:54:22| |we could have won| +|08/01/2022 02:54:25| |Hana's Dad died in childbirth| +|08/01/2022 02:54:27| |EVERY SEVEN SECONDS| +|08/01/2022 02:54:28| |>Not having your snow CDarbnon Coated| +|08/01/2022 02:54:35| g +|08/01/2022 02:54:38| fire +|08/01/2022 02:54:39| LOUDER +|08/01/2022 02:54:40| |Stalingrad so fucked up GuP won't even joke about it | +|08/01/2022 02:54:40| |g. so True.| +|08/01/2022 02:54:40| g +|08/01/2022 02:54:42| |There is no phsysical evidence of Stalingrad...| +|08/01/2022 02:54:43| hougeki! +|08/01/2022 02:54:44| g +|08/01/2022 02:54:46| |Alle sieben Sekunden stirbt ein Guppie| +|08/01/2022 02:54:51| g +|08/01/2022 02:54:53| NORIKO +|08/01/2022 02:54:56| |PRAVDABROS WE GOT TOO COCKY| +|08/01/2022 02:54:56| ez +|08/01/2022 02:54:57| |Long barrel Panzer IV best Panzer IV| +|08/01/2022 02:54:58| Easy +|08/01/2022 02:55:00| |GO GO| +|08/01/2022 02:55:02| |T-34 bros... | +|08/01/2022 02:55:03| |go! go!| +|08/01/2022 02:55:03| |GO GO| +|08/01/2022 02:55:04| |GO GO| +|08/01/2022 02:55:05| |GO GO| +|08/01/2022 02:55:07| GOGO +|08/01/2022 02:55:07| |OORAI ON A ROLL| +|08/01/2022 02:55:08| |go go| +|08/01/2022 02:55:09| worried +|08/01/2022 02:55:09| |smart miho| +|08/01/2022 02:55:10| |I can't believe Yukari is autistic| +|08/01/2022 02:55:10| sus +|08/01/2022 02:55:12| |IT'S A TRAP| +|08/01/2022 02:55:14| |STFU YUKARI| +|08/01/2022 02:55:15| |Pravda flashbacks| +|08/01/2022 02:55:16| |>is this bait?| +|08/01/2022 02:55:18| |>they use fake retreats| +|08/01/2022 02:55:18| |ITS A TRAP| +|08/01/2022 02:55:19| OST +|08/01/2022 02:55:20| |T34 is indistructible!| +|08/01/2022 02:55:21| >OST +|08/01/2022 02:55:22| TOTSUGEKI +|08/01/2022 02:55:23| |all bait| +|08/01/2022 02:55:26| |i wonder why| +|08/01/2022 02:55:26| |£400000000000 on Pravda please| +|08/01/2022 02:55:28| |SELL OOARAICOIN| +|08/01/2022 02:55:29| |NOT ONE STEP BACK| +|08/01/2022 02:55:35| |Yeah idiot| +|08/01/2022 02:55:37| |LOLI BAIT TACTICS| +|08/01/2022 02:55:38| SLUT +|08/01/2022 02:55:38| >sealori +|08/01/2022 02:55:40| slut +|08/01/2022 02:55:40| |no way in hell ooarai wins| +|08/01/2022 02:55:40| slut +|08/01/2022 02:55:41| IDIOTS +|08/01/2022 02:55:43| |but the commander LITERALLY said we shouldnt fall for their feint retreat| +|08/01/2022 02:55:43| |you do what now?| +|08/01/2022 02:55:43| |AZUSA SIgHTED| +|08/01/2022 02:55:44| |Pravda surely can't lose| +|08/01/2022 02:55:44| |big baka moment| +|08/01/2022 02:55:44| |Saori is a rapist| +|08/01/2022 02:55:45| |they pulled this exact trap in their first battle| +|08/01/2022 02:55:46| |ooarai bros...| +|08/01/2022 02:55:47| |Is katyusha the first commander to use any sort of a strategy| +|08/01/2022 02:55:47| |How many Ooaricoin for Momo?| +|08/01/2022 02:55:47| |Why does she chase fags| +|08/01/2022 02:55:48| |master baiters| +|08/01/2022 02:55:50| TOTSUGEKI +|08/01/2022 02:55:50| |GO GO!| +|08/01/2022 02:55:51| NORIKO<3 +|08/01/2022 02:55:51| ATTACK +|08/01/2022 02:55:51| TOTSUGEKI +|08/01/2022 02:55:52| TOTSUGEKI +|08/01/2022 02:55:52| TOTSUGEKI +|08/01/2022 02:55:52| |I'm going all in on Katyusha. I got a good feeling| +|08/01/2022 02:55:53| TOTSUGEKI +|08/01/2022 02:55:54| |Momo, pls| +|08/01/2022 02:55:55| TOTSUGEKI +|08/01/2022 02:55:57| TOTSUGEKI +|08/01/2022 02:56:01| |>the original totsugeki retard| +|08/01/2022 02:56:03| |same, life savings on katyusha| +|08/01/2022 02:56:05| |ooarai bros i dont feel so good....| +|08/01/2022 02:56:07| blitzkrieg +|08/01/2022 02:56:10| |This Lee is from America? I guess they are keeping all the good stuff for themselves...| +|08/01/2022 02:56:11| TOTSUGEKIIIIII +|08/01/2022 02:56:13| 突撃 +|08/01/2022 02:56:16| |if katyusha loses i wont be able to afford rent| +|08/01/2022 02:56:18| 突撃 +|08/01/2022 02:56:19| |My mother's kidney on Katyusha| +|08/01/2022 02:56:20| 突撃 +|08/01/2022 02:56:21| |my maho wife| +|08/01/2022 02:56:22| |SAEMONZA OPEN YOUR FUCKING EYES| +|08/01/2022 02:56:23| |>bodyblock the flag tank| +|08/01/2022 02:56:23| |I've got 1 BTC on pravda winning| +|08/01/2022 02:56:24| |No segs nishi in tv --- hurts| +|08/01/2022 02:56:25| TOTSUGEKI +|08/01/2022 02:56:27| BLITZKRIEG +|08/01/2022 02:56:27| TOKKAN +|08/01/2022 02:56:28| BLITZKRIEG +|08/01/2022 02:56:29| WAIT +|08/01/2022 02:56:29| TOTSUGEKI +|08/01/2022 02:56:29| |katyusha never lose| +|08/01/2022 02:56:31| 吶喊 +|08/01/2022 02:56:31| TOTSUGEKI +|08/01/2022 02:56:32| |All my BTC on Pravda| +|08/01/2022 02:56:33| BERSERKER +|08/01/2022 02:56:33| とつげき +|08/01/2022 02:56:34| TOTSUGEKI +|08/01/2022 02:56:34| blitzkrieg +|08/01/2022 02:56:37| |MY SOUL ON SOVIET QUALITY STEEL| +|08/01/2022 02:56:40| TOTSUGEKI +|08/01/2022 02:56:41| |operation barbarossa be like| +|08/01/2022 02:56:42| |NO DONT GO INTO THE VILLAGE DONT DO IT| +|08/01/2022 02:56:44| |this is why you don't totsugeki| +|08/01/2022 02:56:44| |>3d miho| +|08/01/2022 02:56:44| |GERMANS PULLING AN ITALIAN| +|08/01/2022 02:56:48| |time to buy Oaraicoin| +|08/01/2022 02:56:49| |>soviet quality| +|08/01/2022 02:56:53| |Hulls blessed by Stalin himself| +|08/01/2022 02:56:56| |>soviet >quality| +|08/01/2022 02:56:57| |looks like Ooarai might win| +|08/01/2022 02:56:58| |Stalinium will win rightt?| +|08/01/2022 02:56:59| |1991 worst day of my life| +|08/01/2022 02:57:00| |OH NO| +|08/01/2022 02:57:01| |oh no no no no| +|08/01/2022 02:57:05| AAAAAAA +|08/01/2022 02:57:08| |oh n-| +|08/01/2022 02:57:09| |OH NO OH NO| +|08/01/2022 02:57:09| |IT'S A TRAP| +|08/01/2022 02:57:10| >Momo +|08/01/2022 02:57:11| OORARIBROS... +|08/01/2022 02:57:12| |OH NO| +|08/01/2022 02:57:12| |OH N-| +|08/01/2022 02:57:13| |UHHHHHHH OOARAI BROS?| +|08/01/2022 02:57:13| |Ooaribros we got too cocky| +|08/01/2022 02:57:14| |OH NO NO NO OORAI BROS WE GOT TOO COCKY| +|08/01/2022 02:57:15| TRAPPED +|08/01/2022 02:57:15| |>not using red text for the russian match | +|08/01/2022 02:57:16| |my oaraicoin aaaaaaaaaaaaaaaaaaaaaaaa| +|08/01/2022 02:57:16| |I can't believe Ooarai is about to loose...| +|08/01/2022 02:57:19| |Why is Momo so shit?| +|08/01/2022 02:57:19| |UH OH, SISTERS! | +|08/01/2022 02:57:20| |GULAG TIME| +|08/01/2022 02:57:20| ooraibros... +|08/01/2022 02:57:20| |it's over| +|08/01/2022 02:57:20| Ooaraibros... +|08/01/2022 02:57:21| |imagine fielding tier IV against tier VII| +|08/01/2022 02:57:21| |OH NO NO NO OORAIBROS| +|08/01/2022 02:57:22| |Git fucked Orrai nerds| +|08/01/2022 02:57:23| |THEY'RE MULTIPLYING LIKE FLIES| +|08/01/2022 02:57:23| |MIHO YOU FUCK| +|08/01/2022 02:57:24| |ITS OVER| +|08/01/2022 02:57:25| |oh no| +|08/01/2022 02:57:25| |russian bias| +|08/01/2022 02:57:26| |WE GOT TOO COCKY| +|08/01/2022 02:57:27| |played like a damn fiddle| +|08/01/2022 02:57:27| |Surely the Reds will win| +|08/01/2022 02:57:27| |surprise mothertrucker| +|08/01/2022 02:57:28| |ALL MY MONEY ON PRAVDA| +|08/01/2022 02:57:28| |I didn't expect the Spanish inquisition| +|08/01/2022 02:57:28| UUUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:57:31| gasp +|08/01/2022 02:57:31| |ANKOUSISTERS ITS OVER!| +|08/01/2022 02:57:32| LOUD +|08/01/2022 02:57:32| |THAT SOUND| +|08/01/2022 02:57:32| URRRAAA +|08/01/2022 02:57:32| |we cant keep winning pravdabros!!!| +|08/01/2022 02:57:32| |LOUDER AAAAAAAAAAAAAAAAAA| +|08/01/2022 02:57:33| |RED TEXT ONLY TELLS THE TRUTH| +|08/01/2022 02:57:33| UUUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 02:57:34| |OH NO NO NO| +|08/01/2022 02:57:34| |SerB approved| +|08/01/2022 02:57:35| BOOMSHAKALAKA +|08/01/2022 02:57:35| URRRAAAAAA +|08/01/2022 02:57:36| alamo +|08/01/2022 02:57:36| |T-34 OP| +|08/01/2022 02:57:37| |>all these shounenshitter memes| +|08/01/2022 02:57:38| |RUSSIAN AIM| +|08/01/2022 02:57:39| |audiogasm | +|08/01/2022 02:57:39| |GOOD THING RUSSIANS CAN'T AIM FOR SHIT| +|08/01/2022 02:57:39| UUURRRRRAAAAAA +|08/01/2022 02:57:40| boom +|08/01/2022 02:57:40| |Kapitulieren? Nein !| +|08/01/2022 02:57:40| EARRAPE +|08/01/2022 02:57:41| |>fighting a land war in asia| +|08/01/2022 02:57:44| |TFW YOU GET "UNPERSONED" BY A MIDGET RUSSKIE| +|08/01/2022 02:57:44| |i came from those guns| +|08/01/2022 02:57:45| aim +|08/01/2022 02:57:45| |retreat into the church, the commies won't attack there| +|08/01/2022 02:57:46| |T-34BROS I'M FEELING IT| +|08/01/2022 02:57:47| |IF PRAVDA WINS I'M REPORTING MY FATHER TO THE NKVD| +|08/01/2022 02:57:48| |KATYUSHA HAS THIS IN THE BAG| +|08/01/2022 02:57:50| |THE WINTER WAR HAS SHOWN THE INCAPABILITY OF THE RED ARMY AND AIR FORCE| +|08/01/2022 02:57:51| |Stalinium will carry them to victory\| +|08/01/2022 02:57:57| |T-34 bros cant lose| +|08/01/2022 02:57:58| |press N to take a Nap| +|08/01/2022 02:57:59| BUROKINGU! +|08/01/2022 02:58:02| N +|08/01/2022 02:58:06| |NOT N WTF| +|08/01/2022 02:58:07| N +|08/01/2022 02:58:08| |ASS TO ASS| +|08/01/2022 02:58:13| |ASS TO ASS| +|08/01/2022 02:58:14| |NOT N MOTHERFUCKER| +|08/01/2022 02:58:15| |literally impossible for ooarai to win| +|08/01/2022 02:58:19| ASS2ASS +|08/01/2022 02:58:19| |they'll never find us in here| +|08/01/2022 02:58:19| |so why did she take a nap in the middle of this| +|08/01/2022 02:58:20| KAPTULIEREN +|08/01/2022 02:58:21| |now what's the next step of your master plan| +|08/01/2022 02:58:22| |Press R to report dissenters to Comrade Katyusha| +|08/01/2022 02:58:23| |carbon-coated church to resist communist shells| +|08/01/2022 02:58:25| |lmao im glad I betted on Pravda| +|08/01/2022 02:58:26| Kneel +|08/01/2022 02:58:26| |OWARI DA| +|08/01/2022 02:58:27| R +|08/01/2022 02:58:28| |do it| +|08/01/2022 02:58:29| |Just drink more, no need for naps.| +|08/01/2022 02:58:29| |They said that If Pravda wins they will release my family from the gulag| +|08/01/2022 02:58:29| SHOOT +|08/01/2022 02:58:30| |>french flag| +|08/01/2022 02:58:30| |KAPITULIEREN? NEIN!| +|08/01/2022 02:58:31| |it's over| +|08/01/2022 02:58:31| |They're done for| +|08/01/2022 02:58:31| |it's over ...| +|08/01/2022 02:58:32| |MAGNANIMOUS KATYUSHA!| +|08/01/2022 02:58:33| NUTS +|08/01/2022 02:58:33| NUTS +|08/01/2022 02:58:33| |shoot the messangers| +|08/01/2022 02:58:33| |plot armor power incoming| +|08/01/2022 02:58:34| |Just collpase the building on them, its fine because of carbon coating.| +|08/01/2022 02:58:35| |SOYUZ NERUSHIMI.....| +|08/01/2022 02:58:35| |FRENCH TACTICS| +|08/01/2022 02:58:36| NUTS +|08/01/2022 02:58:36| NUTS! +|08/01/2022 02:58:36| |TAKE THEM PRISONER| +|08/01/2022 02:58:37| "NUTS" +|08/01/2022 02:58:37| NUTS +|08/01/2022 02:58:37| |communists can't even kill a church lmao| +|08/01/2022 02:58:38| NUTS +|08/01/2022 02:58:38| NUTS +|08/01/2022 02:58:38| DOGEZA +|08/01/2022 02:58:38| |WE HAVEN'T THE PROPER FACILITIES TO TAKE YOU ALL PRISONER| +|08/01/2022 02:58:38| NUTS +|08/01/2022 02:58:39| NUTS +|08/01/2022 02:58:39| NUTS +|08/01/2022 02:58:41| |Holy shit midget putin is a tryhard| +|08/01/2022 02:58:41| KNEEL +|08/01/2022 02:58:41| NUTS +|08/01/2022 02:58:41| NUTS +|08/01/2022 02:58:42| "Nuts" +|08/01/2022 02:58:42| NUTS +|08/01/2022 02:58:42| NUTS +|08/01/2022 02:58:42| NUTS +|08/01/2022 02:58:42| NUTS +|08/01/2022 02:58:43| |rape the messengers| +|08/01/2022 02:58:43| NUTS +|08/01/2022 02:58:44| |NIGGA THAT'S NUTS!!!!| +|08/01/2022 02:58:44| |SHOOT THEM| +|08/01/2022 02:58:44| NUTS +|08/01/2022 02:58:45| SUGONDESE +|08/01/2022 02:58:45| NUTS +|08/01/2022 02:58:45| NUTS +|08/01/2022 02:58:45| |that a lots a nuts!| +|08/01/2022 02:58:45| NUTS +|08/01/2022 02:58:45| NUTS +|08/01/2022 02:58:45| natsu +|08/01/2022 02:58:46| NUTS +|08/01/2022 02:58:46| NUTS +|08/01/2022 02:58:47| |Nuts Cracker| +|08/01/2022 02:58:49| NATSU +|08/01/2022 02:58:50| |>kneel before katyushas >still taller| +|08/01/2022 02:58:51| |Easy Pravda win. All Katyusha has to do now is crush them and not waste any time.| +|08/01/2022 02:58:51| |KILL THESE FAGS| +|08/01/2022 02:58:52| |Kneel before superior communism| +|08/01/2022 02:58:53| |Ooraibros... we lost| +|08/01/2022 02:58:53| SLUT +|08/01/2022 02:58:54| |AZUSA ON THE LEFT| +|08/01/2022 02:58:55| |Imagine submitting to little girl, haha. Who'd do that?| +|08/01/2022 02:58:57| |tl-kun what does "nuts" mean| +|08/01/2022 02:58:58| |NOT UNDERSTANDING TERMS OF SURRENDER| +|08/01/2022 02:58:58| |BRING MORE SOUP| +|08/01/2022 02:58:58| |That'll be 4 bucks baby| +|08/01/2022 02:58:59| |KAPITULIEREN? NEIN!!!| +|08/01/2022 02:59:00| УУУУУУУУУУУУУУУУPPPРАААААААААААААААААААА +|08/01/2022 02:59:02| |MR ELECTRIC DISMEMBER THIS NIGGA| +|08/01/2022 02:59:04| |KRASNAYA ARMIJA VSEH SILNEY| +|08/01/2022 02:59:04| |6'' VS 5''11| +|08/01/2022 02:59:04| |she left with nuts!| +|08/01/2022 02:59:04| |manlets seething rn| +|08/01/2022 02:59:11| |Nutup or shutup| +|08/01/2022 02:59:11| >kneeling +|08/01/2022 02:59:12| |AIEEEEEEE KATYUSHA-SAMA... I KNEEL| +|08/01/2022 02:59:12| SLUT +|08/01/2022 02:59:14| |Pravda has this in the bag. Unless they do something stupid like take a nap| +|08/01/2022 02:59:14| |Bunch of submissive sluts| +|08/01/2022 02:59:17| |sex with momo| +|08/01/2022 02:59:17| |DAME DA| +|08/01/2022 02:59:20| |katyusha-sama... i kneel...| +|08/01/2022 02:59:20| |MOMO HATE| +|08/01/2022 02:59:21| HET +|08/01/2022 02:59:21| |ZEN ZEN DAME DA| +|08/01/2022 02:59:23| |big reveal| +|08/01/2022 02:59:23| |stop momo| +|08/01/2022 02:59:26| cope +|08/01/2022 02:59:27| KATSUDA +|08/01/2022 02:59:28| DORAMA! +|08/01/2022 02:59:29| It +|08/01/2022 02:59:30| |momo seething| +|08/01/2022 02:59:30| |B-but why?!| +|08/01/2022 02:59:32| |I HATE MOMO| +|08/01/2022 02:59:33| |K N E E L| +|08/01/2022 02:59:36| >FUN +|08/01/2022 02:59:36| |fire a HE shell from the KV2 into the church right now| +|08/01/2022 02:59:36| |It's just a game bro| +|08/01/2022 02:59:37| |shut up momo!| +|08/01/2022 02:59:37| WHAT +|08/01/2022 02:59:38| |Would rape fix Momo?| +|08/01/2022 02:59:38| |I want to hug momo| +|08/01/2022 02:59:39| |why momo-san| +|08/01/2022 02:59:40| |>not war| +|08/01/2022 02:59:40| |>Kneeling, was that a meme or did they actually said that| +|08/01/2022 02:59:44| >momo +|08/01/2022 02:59:44| |PLOT TWIST INBOUND!| +|08/01/2022 02:59:44| |Senshado never changes...| +|08/01/2022 02:59:46| |>she doesn't know| +|08/01/2022 02:59:46| |thats what got you disowned Miho| +|08/01/2022 02:59:46| |it's only game| +|08/01/2022 02:59:49| |we dont care about the fucking school momo| +|08/01/2022 02:59:49| |ITS ONLY GAME| +|08/01/2022 02:59:50| WTF +|08/01/2022 02:59:52| |Momo.. go away...| +|08/01/2022 02:59:53| |why you have to be mad| +|08/01/2022 02:59:53| |and here's where they drop the other shoe| +|08/01/2022 02:59:54| |based momo victory or death| +|08/01/2022 02:59:54| |Senshado was the friends we made aling the way| +|08/01/2022 02:59:56| |Идёт война́ наро́дная| +|08/01/2022 02:59:56| |>she doesn't know| +|08/01/2022 02:59:56| |they said dogeza| +|08/01/2022 02:59:56| |WE'RE GETTING FUCKING SHUT DOWN| +|08/01/2022 02:59:58| |plot armor: engage| +|08/01/2022 02:59:59| |WHAT A TWIIIIIIIIIIST| +|08/01/2022 03:00:00| |loser attitude| +|08/01/2022 03:00:00| |why you have to be mad| +|08/01/2022 03:00:01| PLOT +|08/01/2022 03:00:02| DRAMA +|08/01/2022 03:00:03| |OH SHI...| +|08/01/2022 03:00:04| PLOT +|08/01/2022 03:00:06| JEWS +|08/01/2022 03:00:06| GASP +|08/01/2022 03:00:06| >male +|08/01/2022 03:00:07| NANI +|08/01/2022 03:00:07| TWIST +|08/01/2022 03:00:07| GONE???? +|08/01/2022 03:00:08| TWIST +|08/01/2022 03:00:08| nakunaru.... +|08/01/2022 03:00:08| |HOLY SMOKES!!!! | +|08/01/2022 03:00:09| :O +|08/01/2022 03:00:11| Nakunaru +|08/01/2022 03:00:11| |WOAH WHAT?!?| +|08/01/2022 03:00:12| TWIST +|08/01/2022 03:00:12| |>its over...| +|08/01/2022 03:00:12| |What a twist!| +|08/01/2022 03:00:12| |so a win win| +|08/01/2022 03:00:13| |>forced school closure| +|08/01/2022 03:00:13| |more than kneeling dekinai-kun| +|08/01/2022 03:00:13| |the darkest hour| +|08/01/2022 03:00:13| |OH SHIT THEY RAISED THE STAKES| +|08/01/2022 03:00:13| |NOT THE MEXT MAN?| +|08/01/2022 03:00:13| |this dude based| +|08/01/2022 03:00:14| |Oraibros, can we even win?| +|08/01/2022 03:00:14| |I bet the Hebrews did this...| +|08/01/2022 03:00:15| HUGGBEES +|08/01/2022 03:00:16| what? +|08/01/2022 03:00:16| |Dissolution of the Oarai Union| +|08/01/2022 03:00:16| |OY VEYS ARE SHUTTING OORAI DOWN| +|08/01/2022 03:00:16| MASAKA +|08/01/2022 03:00:17| |NO WAY!| +|08/01/2022 03:00:18| masaka +|08/01/2022 03:00:19| |OH MAI GAW| +|08/01/2022 03:00:19| |OH NO OOARAI BROS| +|08/01/2022 03:00:19| |MEXT WHAT THE FUCK| +|08/01/2022 03:00:20| :O +|08/01/2022 03:00:20| |Jews done this.| +|08/01/2022 03:00:21| /ourguy/ +|08/01/2022 03:00:23| |JEWS JEWS JEWS JEWS JEWS JEWS JEWS | +|08/01/2022 03:00:23| |OH JEEZ!| +|08/01/2022 03:00:24| ENTER +|08/01/2022 03:00:25| /ourguy/ +|08/01/2022 03:00:26| |FUCK MEXT| +|08/01/2022 03:00:26| NANIANIANINANI???? +|08/01/2022 03:00:26| |should have become idols instead| +|08/01/2022 03:00:27| MEXT +|08/01/2022 03:00:29| MEXTguy +|08/01/2022 03:00:29| ENTER +|08/01/2022 03:00:31| |OY VEYYY | +|08/01/2022 03:00:32| |thats crazy! surely they wont reuse this same plot point again| +|08/01/2022 03:00:32| |MEXT ARE JEW NIGGERS| +|08/01/2022 03:00:32| |MEXT CHAD| +|08/01/2022 03:00:33| |The best Male ENTERs| +|08/01/2022 03:00:33| MEXTfags +|08/01/2022 03:00:36| MEXT +|08/01/2022 03:00:36| |Forced drama..... ENGAGE| +|08/01/2022 03:00:38| |EWWWWWW MALE| +|08/01/2022 03:00:38| |giving us GuP for years and years| +|08/01/2022 03:00:39| (((()))) +|08/01/2022 03:00:40| SIGMA +|08/01/2022 03:00:40| |oorari bros never saw this coming| +|08/01/2022 03:00:41| |MY BOY TSUJI| +|08/01/2022 03:00:43| |based MEXT, fuck oorai| +|08/01/2022 03:00:44| |>casting couch| +|08/01/2022 03:00:44| /ourguy/ +|08/01/2022 03:00:45| |you have a wild west outlaw on your ship| +|08/01/2022 03:00:48| |Where is his figure?| +|08/01/2022 03:00:48| shenshahoe +|08/01/2022 03:00:49| COUCHED? +|08/01/2022 03:00:49| |THE CHAD| +|08/01/2022 03:00:50| |WHAT IS >HE DOING HERE?| +|08/01/2022 03:00:52| |MEXT ARE JEW NIGGER FAGGOTS| +|08/01/2022 03:00:53| |baka gakkou| +|08/01/2022 03:00:56| |MEXT guy was right all along| +|08/01/2022 03:00:59| >male +|08/01/2022 03:01:00| |>adjusts glasses| +|08/01/2022 03:01:00| |THere he is| +|08/01/2022 03:01:01| |OY VEY| +|08/01/2022 03:01:02| ENTER +|08/01/2022 03:01:02| |what's his endgame?| +|08/01/2022 03:01:02| |MEXT chad sacrificed himself to give us more gup| +|08/01/2022 03:01:03| |Bring Terry back in command| +|08/01/2022 03:01:04| |just win| +|08/01/2022 03:01:05| |stop hating on mext, they'll fund my trip to ooarai| +|08/01/2022 03:01:06| |WASTING 4 TRILLON ON WILD WEST| +|08/01/2022 03:01:07| |Males t=ruin eveything| +|08/01/2022 03:01:10| |he should have done the gendo pose| +|08/01/2022 03:01:10| |He buff under the suit| +|08/01/2022 03:01:12| |Become guppie| +|08/01/2022 03:01:13| |They could just clamp down on the criminal gangs living lower levels of the ship instead of trying senshado| +|08/01/2022 03:01:13| |TRY ME, KID| +|08/01/2022 03:01:15| |mext guy's gonna carry that weight| +|08/01/2022 03:01:16| |Can't have all the best students in just one school| +|08/01/2022 03:01:16| |OY VEY GOY YOUR SHIP IS GOING TO BE ANOTHER TANKER FOR ISREAL| +|08/01/2022 03:01:17| |fuck M*les| +|08/01/2022 03:01:19| |TIME TO SING, BROS!| +|08/01/2022 03:01:20| |>good thing we don't need this in writing| +|08/01/2022 03:01:25| |He didn't say no though, baka Anzu| +|08/01/2022 03:01:29| |Mext > Momo| +|08/01/2022 03:01:33| |based male, giving us more GuP to watch| +|08/01/2022 03:01:34| |oy vey| +|08/01/2022 03:01:36| |should've made him pinky promise| +|08/01/2022 03:01:43| |>good thing they won't get shut down again after this right?| +|08/01/2022 03:01:43| |WELL TIME TO PULL A KIRK MOVE OUT OF MY ASS| +|08/01/2022 03:01:43| |Anons, i can;'t type straight anymore| +|08/01/2022 03:01:48| MEXTbros... +|08/01/2022 03:01:49| |I believe in him| +|08/01/2022 03:01:50| |>selling your tanks instead of selling the girls | +|08/01/2022 03:01:52| |Drink water| +|08/01/2022 03:01:52| |Couldn't they have sold Momo's body?| +|08/01/2022 03:01:57| |drink more water now to avoid a hangover| +|08/01/2022 03:01:59| |Momo's worthless though| +|08/01/2022 03:02:00| |waste of taxpayer dollars tbh| +|08/01/2022 03:02:00| |>Not getting your contract in writing and signed in blood| +|08/01/2022 03:02:02| |Sell bathwater stupids| +|08/01/2022 03:02:05| |who the fuck would pay anything for momo's body?| +|08/01/2022 03:02:06| |time to become a tank idol| +|08/01/2022 03:02:06| |how much is Momo's body worth?| +|08/01/2022 03:02:09| |Momo would give her body for free, so they couldn't sell it| +|08/01/2022 03:02:13| |IT AINT OVER THIS ITS OVER| +|08/01/2022 03:02:13| |volleyball chads, it's all over| +|08/01/2022 03:02:15| |turn them all into pleasure girls and keep the tanks| +|08/01/2022 03:02:16| |I will buy the loliharem| +|08/01/2022 03:02:16| |das Finale 4: Momo will flunk AND we will close the school| +|08/01/2022 03:02:18| |SHUT IT DOWN| +|08/01/2022 03:02:20| |Sell Saki| +|08/01/2022 03:02:21| |I will drink more vodka instead| +|08/01/2022 03:02:22| |About 0| +|08/01/2022 03:02:24| |they clearly didnt read ribbon warrior| +|08/01/2022 03:02:25| ;__; +|08/01/2022 03:02:25| |Mako was robbed| +|08/01/2022 03:02:27| ;_; +|08/01/2022 03:02:28| AZUSA!! +|08/01/2022 03:02:29| |you can't market momo| +|08/01/2022 03:02:30| ;_; +|08/01/2022 03:02:34| |SLAV RAPE BABY MAKING TIME| +|08/01/2022 03:02:35| |just win | +|08/01/2022 03:02:36| |Based anons, now's the time for vodka| +|08/01/2022 03:02:39| ToT +|08/01/2022 03:02:39| |das finale 4: erika ***| +|08/01/2022 03:02:39| DG +|08/01/2022 03:02:40| |Sell dates with floof| +|08/01/2022 03:02:41| |das finale 6: momo gets disowned| +|08/01/2022 03:02:41| |oh yeah, next year| +|08/01/2022 03:02:44| |Minna ;_; OST| +|08/01/2022 03:02:46| |>sad piano theme| +|08/01/2022 03:02:48| minna... +|08/01/2022 03:02:48| |this is the part where i cry| +|08/01/2022 03:02:50| |I'm sorry, but did Ooarai already lose? Oh, that's right. The show isn't even over yet.| +|08/01/2022 03:02:52| |horny bastard slavs waiting and salivating| +|08/01/2022 03:02:54| |Das Finale 7: Revenge| +|08/01/2022 03:02:55| |LE'TS BUY THEIR SCHOOL, I HAVE 5 IN MY POCKET| +|08/01/2022 03:02:57| |It's raining alright| +|08/01/2022 03:02:57| SLUT +|08/01/2022 03:03:00| |one fluffy for 1000000| +|08/01/2022 03:03:01| nigger +|08/01/2022 03:03:04| TATAKE +|08/01/2022 03:03:09| |HUG MOMO| +|08/01/2022 03:03:15| no +|08/01/2022 03:03:16| |WE SHALL FIGHT ON THE BEACHES, WE SHALL FIGHT ON THE LANDING GROUNDS| +|08/01/2022 03:03:16| nigger +|08/01/2022 03:03:17| |I love the GUPpies. that is all. | +|08/01/2022 03:03:20| |ALL MOMO'S FAULT.| +|08/01/2022 03:03:21| |Steiner will be here soon we just have to hold out | +|08/01/2022 03:03:22| |Punch Momo| +|08/01/2022 03:03:22| HAI +|08/01/2022 03:03:23| |Beleiev in the heart| +|08/01/2022 03:03:23| |Das Finale 6: Momo becomes senshado comfort girl| +|08/01/2022 03:03:23| |I'm falling asleep please help| +|08/01/2022 03:03:24| pekoe +|08/01/2022 03:03:25| |AND WE SHALL NEVER SURRENDER| +|08/01/2022 03:03:27| |I HATE NIGGERSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +|08/01/2022 03:03:27| |PROTECT MOMO| +|08/01/2022 03:03:28| >pants +|08/01/2022 03:03:29| |POLYUSHKO POLYE| +|08/01/2022 03:03:29| |>Just starve them out| +|08/01/2022 03:03:30| |EVERY GUPPIE WILL DO THEIR DUTY| +|08/01/2022 03:03:33| |i fucking hate NIGGERS| +|08/01/2022 03:03:34| |JOE TATAKE| +|08/01/2022 03:03:35| Based +|08/01/2022 03:03:37| |you know this saying?| +|08/01/2022 03:03:38| |UOOOOOOOOOOOOHHHHHHHHHH PEKOE| +|08/01/2022 03:03:39| |BASED SIS| +|08/01/2022 03:03:40| |>when you smell a fat lazy nigg| +|08/01/2022 03:03:40| |my wife maho| +|08/01/2022 03:03:40| SLAGS +|08/01/2022 03:03:41| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 03:03:42| ?????????????????????????????????????????????????????????????????????????? +|08/01/2022 03:03:42| |In the end of Das Finale nothing matters because mext guy shuts down the school anyway, and nobody graduates.| +|08/01/2022 03:03:43| |if you think about it katyusha let them win| +|08/01/2022 03:03:44| |Smug brattiness| +|08/01/2022 03:03:44| ?????????????????????????????????? +|08/01/2022 03:03:47| |Oh shut the fuck up already| +|08/01/2022 03:03:49| >throwing +|08/01/2022 03:03:50| |>yeah bro lets just leave these sofas out in the snow| +|08/01/2022 03:03:50| |I want to crush nips with pravda | +|08/01/2022 03:03:52| |SEX WITH KATYUSHA| +|08/01/2022 03:03:52| |Aren't they cold?| +|08/01/2022 03:03:52| |amelia watson is getting FUCKED| +|08/01/2022 03:03:53| |my maho wife| +|08/01/2022 03:03:53| MOMMY +|08/01/2022 03:03:53| |mother of the year| +|08/01/2022 03:03:54| MAHO +|08/01/2022 03:03:54| |Fuck this shit I'm out| +|08/01/2022 03:03:54| |Darjeeling has a cute AMI voice | +|08/01/2022 03:03:56| RAGEQUITTING +|08/01/2022 03:03:57| |Dumb bitch mother| +|08/01/2022 03:03:59| oishisou +|08/01/2022 03:04:02| |Sit the fuck down Paulus you ain't going nowhere| +|08/01/2022 03:04:03| BORSCHT +|08/01/2022 03:04:05| midget +|08/01/2022 03:04:05| |Maho my beloved| +|08/01/2022 03:04:05| YUSHA +|08/01/2022 03:04:06| |Maho is such a good girl| +|08/01/2022 03:04:06| kashira +|08/01/2022 03:04:07| |NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER | +|08/01/2022 03:04:09| |based Katyu| +|08/01/2022 03:04:10| |>amelia watson| +|08/01/2022 03:04:11| |CUTE ONAHOLE| +|08/01/2022 03:04:11| sleeptusha +|08/01/2022 03:04:12| |KATYUSHA RELEASE MY PARENTS FROM BURYATIA NOW| +|08/01/2022 03:04:14| zzzzzzzzzzzzzzzz +|08/01/2022 03:04:14| |nap time comrades, oyasumi| +|08/01/2022 03:04:15| >boy +|08/01/2022 03:04:15| >itttering +|08/01/2022 03:04:15| |>127 cm| +|08/01/2022 03:04:16| |sleepy time...| +|08/01/2022 03:04:17| CUNNYUSHA +|08/01/2022 03:04:17| |Nap time| +|08/01/2022 03:04:18| >boy +|08/01/2022 03:04:20| zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +|08/01/2022 03:04:22| |NAP time| +|08/01/2022 03:04:22| |18 years old| +|08/01/2022 03:04:23| |what's the thing katyusha's in| +|08/01/2022 03:04:23| |>VTuber cancer| +|08/01/2022 03:04:23| suyaa~ +|08/01/2022 03:04:24| |bayushki bayu.............| +|08/01/2022 03:04:26| |Katyusha the Chernobyle powerplant please| +|08/01/2022 03:04:26| |CUNNY NAP| +|08/01/2022 03:04:27| |>russians > heart| +|08/01/2022 03:04:28| Burn +|08/01/2022 03:04:29| |do we get to take a nap break with the gremlin?| +|08/01/2022 03:04:29| |KATUSHA IS A JEW! PRAVDA IS RUN BY JEWS| +|08/01/2022 03:04:30| |IT'S 12 OCLOCK, AND TIME FOR HIS NAP| +|08/01/2022 03:04:30| |oh yeah sue me| +|08/01/2022 03:04:31| oyasuminasai +|08/01/2022 03:04:31| >boy +|08/01/2022 03:04:31| |katyushas massive ego| +|08/01/2022 03:04:32| |CUNNYUSHA CUNNYUSGA CUNNYUSHA CUNNYUSHA| +|08/01/2022 03:04:33| boy +|08/01/2022 03:04:33| |she's as flat as that plain as well| +|08/01/2022 03:04:33| |SOYUZ NERUSHIMI.....| +|08/01/2022 03:04:34| oyasumi +|08/01/2022 03:04:35| |cute boy| +|08/01/2022 03:04:36| SHIBERIA +|08/01/2022 03:04:37| >boy +|08/01/2022 03:04:37| creepy +|08/01/2022 03:04:37| |CYKA BLYAT| +|08/01/2022 03:04:37| |boys are physically incapable of doing senshadou| +|08/01/2022 03:04:37| >boy +|08/01/2022 03:04:39| >boy +|08/01/2022 03:04:41| Nonna +|08/01/2022 03:04:41| dicks +|08/01/2022 03:04:41| |STILL WOULD| +|08/01/2022 03:04:41| >boy +|08/01/2022 03:04:42| >boy +|08/01/2022 03:04:42| |>beautiful boy| +|08/01/2022 03:04:44| |>Nonna will never sing you to sleep| +|08/01/2022 03:04:45| |TAEKO LOVE| +|08/01/2022 03:04:46| BUTT +|08/01/2022 03:04:46| |I want a katyusha daughteru| +|08/01/2022 03:04:46| Sumirebros +|08/01/2022 03:04:47| TAEKo +|08/01/2022 03:04:47| OVA +|08/01/2022 03:04:47| |GED OUDDA HERE SDALGER| +|08/01/2022 03:04:49| |Goodbye, time to slep| +|08/01/2022 03:04:49| BAYUYUSHIKI +|08/01/2022 03:04:50| |WHERE DO I BUY A KATYUSHA WIFE| +|08/01/2022 03:04:50| |YUKI NO SHINGUN| +|08/01/2022 03:04:51| cute +|08/01/2022 03:04:52| |beautiful world| +|08/01/2022 03:04:52| |god i wish Oshino was here| +|08/01/2022 03:04:53| |I literally AM Nonna| +|08/01/2022 03:04:55| |Dumb Yuuki| +|08/01/2022 03:04:55| Russia +|08/01/2022 03:04:57| |rise for the anthem| +|08/01/2022 03:04:58| |Katyusha was dude all along?| +|08/01/2022 03:05:01| time4splicing +|08/01/2022 03:05:01| |>daughter >wife| +|08/01/2022 03:05:01| |will anon sing me to sleep?| +|08/01/2022 03:05:02| o7 +|08/01/2022 03:05:03| |YUKI NO SHINGUN| +|08/01/2022 03:05:04| |yuki no| +|08/01/2022 03:05:04| TIME +|08/01/2022 03:05:05| |Boys can';t do senshado as tank can;'t penetrate boys| +|08/01/2022 03:05:06| YEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEES +|08/01/2022 03:05:06| |ncie map| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:06| |Best part| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:07| |YUKI NO SHINGUN| +|08/01/2022 03:05:08| YEEEEEEEEAAAAAAAAAAAH +|08/01/2022 03:05:09| |BEST EPISODE NOW| +|08/01/2022 03:05:09| |YUKI NO SHINGUN| +|08/01/2022 03:05:10| KINO +|08/01/2022 03:05:10| TOTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 03:05:10| |YUKI NO SHINGUN!!!!!!| +|08/01/2022 03:05:10| |>You will never sing Katyusha to sleep| +|08/01/2022 03:05:10| |Best song!| +|08/01/2022 03:05:11| |YUKI NO SHINGUN| +|08/01/2022 03:05:11| |YUKI NO SHINGUN| +|08/01/2022 03:05:11| |impregnate boyusha| +|08/01/2022 03:05:13| |! Banger alert ! Banger alert !| +|08/01/2022 03:05:14| |YUKI NO SHINGUN| +|08/01/2022 03:05:15| |YUKI NO SHINGUN| +|08/01/2022 03:05:16| |Like, go out the back?| +|08/01/2022 03:05:18| |Best scene; no doubt| +|08/01/2022 03:05:18| |MINNA NO TEKI NO KUNI| +|08/01/2022 03:05:19| >feet +|08/01/2022 03:05:20| |YUKI NO SHINGUN| +|08/01/2022 03:05:20| |feee.. feee... feeet???| +|08/01/2022 03:05:22| FEET +|08/01/2022 03:05:23| |cute larpers| +|08/01/2022 03:05:23| |YUKI NO SHINGUN| +|08/01/2022 03:05:24| |>only the feet| +|08/01/2022 03:05:24| |За здоровье!| +|08/01/2022 03:05:25| |I cuming | +|08/01/2022 03:05:26| |love this!| +|08/01/2022 03:05:27| |I WANT TO SEE FEET| +|08/01/2022 03:05:28| |LET ME SEE YOUR FEET| +|08/01/2022 03:05:30| cold +|08/01/2022 03:05:30| |KI NO MAMA| +|08/01/2022 03:05:30| kini +|08/01/2022 03:05:30| |BEST SONG| +|08/01/2022 03:05:32| |NUT: BUSTED| +|08/01/2022 03:05:32| |>Just strolling trough cold snow| +|08/01/2022 03:05:32| |no clothes| +|08/01/2022 03:05:34| |erwin socks......| +|08/01/2022 03:05:36| |ERWINS FEET MMMMMMMMMMMMMM| +|08/01/2022 03:05:36| FEET +|08/01/2022 03:05:36| |Erwin's feet... | +|08/01/2022 03:05:36| feet? +|08/01/2022 03:05:37| |ERWIN'S FROSTBITE FEET| +|08/01/2022 03:05:38| |CUTE FLOOF| +|08/01/2022 03:05:38| |COLD FEET| +|08/01/2022 03:05:38| Feet +|08/01/2022 03:05:39| FEEEEEEET +|08/01/2022 03:05:39| FEET +|08/01/2022 03:05:40| >footfags +|08/01/2022 03:05:42| FEEEEEEEET +|08/01/2022 03:05:42| footfags.... +|08/01/2022 03:05:43| >feetfags +|08/01/2022 03:05:43| lewd +|08/01/2022 03:05:44| |DEEP SNIFF| +|08/01/2022 03:05:44| >feet +|08/01/2022 03:05:45| |DASHING THROUGH THE SNOW| +|08/01/2022 03:05:45| |BASED FOOTFAG YUKARI| +|08/01/2022 03:05:45| |let me see your feet| +|08/01/2022 03:05:45| |>wearing skirts in the snow| +|08/01/2022 03:05:46| FEET +|08/01/2022 03:05:46| |Yukari no| +|08/01/2022 03:05:47| |ERwin sweaty feet| +|08/01/2022 03:05:48| EROI +|08/01/2022 03:05:49| FEET +|08/01/2022 03:05:50| yes +|08/01/2022 03:05:51| |WHAT COMES OUT OF THE PENIS-| +|08/01/2022 03:05:51| |The one True pairing| +|08/01/2022 03:05:51| |footfag yukari| +|08/01/2022 03:05:51| |letting Yukari see your feet...| +|08/01/2022 03:05:53| FEET +|08/01/2022 03:05:55| Kongou.jpg +|08/01/2022 03:05:55| |>seasoned feet| +|08/01/2022 03:05:56| |Clever Yukari| +|08/01/2022 03:05:58| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:05:58| |IMAGINE THE SMELL| +|08/01/2022 03:05:58| |I tried this once. couldn't get my feet in with the paper| +|08/01/2022 03:05:59| |erwin x yukari i ship| +|08/01/2022 03:06:00| |KILL YOURSELVES FOOTFAGS| +|08/01/2022 03:06:01| ;_; +|08/01/2022 03:06:03| FEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEETTTTTTTTTTT +|08/01/2022 03:06:03| |Footr seasoning?| +|08/01/2022 03:06:04| |>spicy feet| +|08/01/2022 03:06:05| FEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET +|08/01/2022 03:06:06| |LICK IT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 03:06:07| |Yukari touch Erwin feet| +|08/01/2022 03:06:07| |a little salt and pepper on your feet| +|08/01/2022 03:06:07| spicy +|08/01/2022 03:06:08| |Yukari likes spicy feet| +|08/01/2022 03:06:10| |I CAN KEEP THEIR FEET WARM WITH MY MOUTH| +|08/01/2022 03:06:14| |Erwin's frozen foot sweat| +|08/01/2022 03:06:14| |footcare is important in warfare| +|08/01/2022 03:06:14| |Yukarin making friends :)| +|08/01/2022 03:06:16| |Over by christmas ;____;| +|08/01/2022 03:06:20| |just piss in your boots| +|08/01/2022 03:06:20| Morons +|08/01/2022 03:06:26| LORE +|08/01/2022 03:06:30| /k/ +|08/01/2022 03:06:32| |bandage foot| +|08/01/2022 03:06:33| |erwin must be tank in disquise, | +|08/01/2022 03:06:34| |>tank corner OST| +|08/01/2022 03:06:35| |real lore| +|08/01/2022 03:06:36| |Just kill the russians and take their boots| +|08/01/2022 03:06:37| |I'M LEARNING BROS| +|08/01/2022 03:06:39| |SPICY GuP FEEEEEEEEEEEET| +|08/01/2022 03:06:40| |SLAVS ARE PART MUMMY| +|08/01/2022 03:06:40| |FEET LORE| +|08/01/2022 03:06:43| |>just wear socks bro| +|08/01/2022 03:06:44| >commies +|08/01/2022 03:06:44| |WRAP MY FEET, AKIYAMA-DONO!| +|08/01/2022 03:06:48| >feetfags +|08/01/2022 03:06:49| VAATI +|08/01/2022 03:06:50| |fucking nerds| +|08/01/2022 03:06:52| |SS uniform erwin| +|08/01/2022 03:06:54| |>girls and their shoes| +|08/01/2022 03:06:54| |Now I will never have cold feet| +|08/01/2022 03:06:54| |don't lie yukari| +|08/01/2022 03:06:54| |change your socks| +|08/01/2022 03:06:55| |DEEPEST LORE| +|08/01/2022 03:06:55| bootfags +|08/01/2022 03:06:56| |based larpers| +|08/01/2022 03:06:58| |cute fluff| +|08/01/2022 03:06:58| |CUTE | +|08/01/2022 03:06:58| |yukari feet....| +|08/01/2022 03:07:02| |who tf is taku-san| +|08/01/2022 03:07:03| CUTE +|08/01/2022 03:07:05| |CUTW <3| +|08/01/2022 03:07:06| |CUTE NERD COUPLE| +|08/01/2022 03:07:06| |DESU YO NE??| +|08/01/2022 03:07:07| |Typical girls talking about shoes | +|08/01/2022 03:07:08| CUTE +|08/01/2022 03:07:08| |taka san| +|08/01/2022 03:07:09| |desuyo neeeee| +|08/01/2022 03:07:10| |Bootsu Desu| +|08/01/2022 03:07:10| |CUTE FOX| +|08/01/2022 03:07:10| CTU +|08/01/2022 03:07:10| |ERWIN DOOJIN WHERE| +|08/01/2022 03:07:11| |Imagine sniffing Yukaris boots haha| +|08/01/2022 03:07:11| |F I R S T T I M E| +|08/01/2022 03:07:13| |girls und boots| +|08/01/2022 03:07:14| |>only two feet| +|08/01/2022 03:07:15| |based mom| +|08/01/2022 03:07:16| DESU +|08/01/2022 03:07:17| qt +|08/01/2022 03:07:19| |So which one tops?| +|08/01/2022 03:07:20| |ich liebe yukari| +|08/01/2022 03:07:20| |>she has only two feet| +|08/01/2022 03:07:20| |AHHHHHH I WANT YUKARI GF| +|08/01/2022 03:07:22| |love this bit| +|08/01/2022 03:07:23| |NEED MORE ERWIN| +|08/01/2022 03:07:25| |Cute girlls talking about cute boots| +|08/01/2022 03:07:25| |>tfw no wehraboo gf| +|08/01/2022 03:07:28| |REFRESH REFRESH REFRESH SOME OF YOU ARE REALLY OUT OF SYNC| +|08/01/2022 03:07:28| |Imagine the smell of her footsweat haha| +|08/01/2022 03:07:28| |WHY ARE MOMS LIKE THAT?| +|08/01/2022 03:07:32| |is this girl talk?| +|08/01/2022 03:07:32| |how long we talking about dis| +|08/01/2022 03:07:34| |THIGH HIGH BOOTS| +|08/01/2022 03:07:38| |is this how girl talk is?| +|08/01/2022 03:07:45| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 03:07:46| |noo, don't buffer now| +|08/01/2022 03:07:46| based +|08/01/2022 03:07:46| |its autism talk| +|08/01/2022 03:07:48| |yes, just listen| +|08/01/2022 03:07:49| |i hope so| +|08/01/2022 03:07:51| |USA USA USA USA| +|08/01/2022 03:07:52| |THE LORE DEEPEST | +|08/01/2022 03:07:52| |WHERE ARE THE TANKS?| +|08/01/2022 03:07:55| |JSDF chads| +|08/01/2022 03:07:56| |>refresh >loose all your coins No way fag| +|08/01/2022 03:07:56| |that's how BEST girls talk anon| +|08/01/2022 03:07:56| |You will nbevern smell stinky Yukari feet| +|08/01/2022 03:07:57| |WHAT ARE THOOOOOOOOOOOOOOOOOOOSE| +|08/01/2022 03:07:58| |USA BTFO| +|08/01/2022 03:07:58| MURICA +|08/01/2022 03:08:00| USABROS... +|08/01/2022 03:08:01| |USA USA USA| +|08/01/2022 03:08:04| |not just that he was in ww fucking 1| +|08/01/2022 03:08:04| |I thought everyone was on boats?| +|08/01/2022 03:08:04| men? +|08/01/2022 03:08:05| |You did order your kommandostore boots, right anon?| +|08/01/2022 03:08:05| usabros... +|08/01/2022 03:08:06| PANIC +|08/01/2022 03:08:08| BANZAI +|08/01/2022 03:08:09| >men +|08/01/2022 03:08:10| |wtf why is the USA so incompetent| +|08/01/2022 03:08:10| |source: my ass| +|08/01/2022 03:08:11| |korea all over again......| +|08/01/2022 03:08:12| |>jap propaganda| +|08/01/2022 03:08:13| |Ugh, Yuckari keeps talking about her weird military stuff...| +|08/01/2022 03:08:13| |burgers BTFO by nippon| +|08/01/2022 03:08:14| |jap bias| +|08/01/2022 03:08:15| |>the absolute state of burgers| +|08/01/2022 03:08:18| |Bervidin patch :DDD| +|08/01/2022 03:08:23| >AMERICANS +|08/01/2022 03:08:23| |based JSDF| +|08/01/2022 03:08:24| idiots +|08/01/2022 03:08:25| |: DDDDDDDDDDDDDDDDD| +|08/01/2022 03:08:26| EEEEEEE +|08/01/2022 03:08:27| comfy +|08/01/2022 03:08:29| |JSDF STRONK| +|08/01/2022 03:08:30| |>the absolute state of the Japanese military| +|08/01/2022 03:08:30| |nippon 1:0 usa| +|08/01/2022 03:08:30| BENIS +|08/01/2022 03:08:30| |No they are fucking NOT used to training in cold weather| +|08/01/2022 03:08:32| |JDSF > Burgers| +|08/01/2022 03:08:37| |why are americans so weak| +|08/01/2022 03:08:41| |That's a blatant fucking lie lmao| +|08/01/2022 03:08:43| |can you even buy snow in walmart| +|08/01/2022 03:08:43| |usa bros....| +|08/01/2022 03:08:45| >JSDF +|08/01/2022 03:08:48| |snow is too spicy| +|08/01/2022 03:08:48| |They used heat coins| +|08/01/2022 03:08:48| |>JSDF propaganda| +|08/01/2022 03:08:49| |THE HUWAITO PIGGU FEARS THE COLD| +|08/01/2022 03:08:50| |SNOW BALL FIGHT > WAR| +|08/01/2022 03:08:50| |RETURNED JUST IN TIME FOR THE AUTISTS| +|08/01/2022 03:08:50| |Im pretty sure the US has at least 2 points against japan| +|08/01/2022 03:08:50| |mutts seething| +|08/01/2022 03:08:51| |THIS IS BIAS RIGHT????? AMERICA BROS?!?!?!?!| +|08/01/2022 03:08:53| |I remember my dad going on exercises against Americans| +|08/01/2022 03:08:53| |cute girls and propaganda| +|08/01/2022 03:08:53| |glorious nippon, I kneel| +|08/01/2022 03:08:54| |Fake news| +|08/01/2022 03:08:54| |>Burgers can't stand cold| +|08/01/2022 03:08:55| |JDSF FAGS| +|08/01/2022 03:08:55| |AMERICANS COPING IN CHAT| +|08/01/2022 03:08:56| |The US army bows to the JSDF| +|08/01/2022 03:08:58| |americans are only good at making burgers| +|08/01/2022 03:08:58| |USA WEAKNESS = MRI, SNOW| +|08/01/2022 03:08:58| |Is recon some hip slang for sex| +|08/01/2022 03:09:00| >foreshadowing +|08/01/2022 03:09:01| SODOKO +|08/01/2022 03:09:01| |>J >S >D >F...| +|08/01/2022 03:09:02| |Molotov... | +|08/01/2022 03:09:03| |Based on a True story| +|08/01/2022 03:09:03| |The Americans were shit and gave in in the end| +|08/01/2022 03:09:06| |>Jap autistic nationalists| +|08/01/2022 03:09:06| |AMERICANS CANT EVEN MAKE BURGERS| +|08/01/2022 03:09:06| |W-we were just concerned for our tropical allies...| +|08/01/2022 03:09:07| |nips would beat the americans in any war| +|08/01/2022 03:09:09| |Kneel you burgers| +|08/01/2022 03:09:11| |Why hasn't the JSDF taken over the world yet?| +|08/01/2022 03:09:14| |AMERICANS ARE ONLY GOOD AT EATING BURGERS| +|08/01/2022 03:09:16| |THE FATTY FEARS THE SNOW| +|08/01/2022 03:09:17| |good vision ladies| +|08/01/2022 03:09:18| REMAKO +|08/01/2022 03:09:18| |anthem time| +|08/01/2022 03:09:18| SONG +|08/01/2022 03:09:18| REMAKO +|08/01/2022 03:09:19| REMAKO +|08/01/2022 03:09:20| |Get btfo by weather? Do americans really?| +|08/01/2022 03:09:20| SODOCUTE +|08/01/2022 03:09:21| |Americans only function when they have their supply chain| +|08/01/2022 03:09:22| REMAKO +|08/01/2022 03:09:22| SONG +|08/01/2022 03:09:23| |MESHI NI| +|08/01/2022 03:09:24| OUTPLAYED +|08/01/2022 03:09:24| REMAKO +|08/01/2022 03:09:25| REMANKO +|08/01/2022 03:09:27| DUMBASS +|08/01/2022 03:09:29| |RUN IT'S THE NKVD| +|08/01/2022 03:09:30| |Sodoko you dumbass| +|08/01/2022 03:09:30| |Sodoko's fault| +|08/01/2022 03:09:31| |RE MA N KO| +|08/01/2022 03:09:31| |NIPS WOULD BE THE MASTERS OF THE WORLD IF THEY COULD STOP SUICIDING| +|08/01/2022 03:09:31| |kv-2 tan mentioned!| +|08/01/2022 03:09:38| |! Banger alert ! Banger alert !| +|08/01/2022 03:09:42| |Mako's manko...| +|08/01/2022 03:09:43| |SAMUSA NO TAKIBI| +|08/01/2022 03:09:43| |JSDF is like, kind of a joke | +|08/01/2022 03:09:48| |2nd best song| +|08/01/2022 03:09:49| |Two retards in the snow| +|08/01/2022 03:09:50| |YO GIVE ME THE AUX| +|08/01/2022 03:09:51| |KOUMYOU BANASHI| +|08/01/2022 03:09:51| |these girls should sing more| +|08/01/2022 03:09:52| |yal are behind as hell| +|08/01/2022 03:09:53| |thsi song slaps fr fr| +|08/01/2022 03:09:53| |Is banger some zoomer slang| +|08/01/2022 03:09:55| |japanese military music are bangers| +|08/01/2022 03:09:58| Hitosu~ +|08/01/2022 03:09:59| ! +|08/01/2022 03:09:59| |Then what's the punchline?| +|08/01/2022 03:09:59| pronebone +|08/01/2022 03:10:00| |Target Spotted| +|08/01/2022 03:10:08| |pronebone in the cold| +|08/01/2022 03:10:08| YES +|08/01/2022 03:10:09| |YES SIR!| +|08/01/2022 03:10:11| UTEEEEE +|08/01/2022 03:10:11| |YES SIR| +|08/01/2022 03:10:11| |Why didn't they bring the tanks with them and snipe them?| +|08/01/2022 03:10:14| |she's so happy :)| +|08/01/2022 03:10:15| |YES SIR| +|08/01/2022 03:10:16| |the only thing banging is yukari's body| +|08/01/2022 03:10:20| |cuddling with yukari for warmth| +|08/01/2022 03:10:24| CUTE +|08/01/2022 03:10:25| |YES SAH| +|08/01/2022 03:10:25| YESSAAAAAAAA +|08/01/2022 03:10:26| yessa +|08/01/2022 03:10:27| YESSAAAAAAA +|08/01/2022 03:10:27| o7 +|08/01/2022 03:10:27| |YES SIR| +|08/01/2022 03:10:30| |YES SAAAAAAAA| +|08/01/2022 03:10:30| QTTTT +|08/01/2022 03:10:32| |Good ol' memesubs| +|08/01/2022 03:10:33| |Guys, can you start referring to me as Yukari? Thanks.| +|08/01/2022 03:10:33| |Hiding in Yukari's hair for warmth| +|08/01/2022 03:10:34| |I want to squeeze Yukari's firm belly| +|08/01/2022 03:10:34| |EYESSSSS SAHHH| +|08/01/2022 03:10:34| |YESSA o7| +|08/01/2022 03:10:35| |this is a banger| +|08/01/2022 03:10:35| \o/ +|08/01/2022 03:10:38| |Cute squad| +|08/01/2022 03:10:41| |I feel like the chat is operating on 2 timelines| +|08/01/2022 03:10:41| |cute cute cute| +|08/01/2022 03:10:43| |You still remember the basic of CQC Yukari right| +|08/01/2022 03:10:43| |You will never be Yukari| +|08/01/2022 03:10:44| (Yukari) +|08/01/2022 03:10:45| |TENNO HEIKA| +|08/01/2022 03:10:46| |head bopper| +|08/01/2022 03:10:47| where???? +|08/01/2022 03:10:50| |nice shovel| +|08/01/2022 03:10:50| |what else does she carry?| +|08/01/2022 03:10:51| |A FUCKING SHOVEL| +|08/01/2022 03:10:51| |>took a shovel out of her ass| +|08/01/2022 03:10:52| BAAAAAAAAAAAANNNNNNZAAAAAAAAAAAAAIIIIIIIIIIIII +|08/01/2022 03:10:58| |Yukari's shovel...| +|08/01/2022 03:10:59| |I'm drunk, I operate on my own timeline| +|08/01/2022 03:11:01| |POCKET SHUVEL| +|08/01/2022 03:11:02| |put the glasses on you retard| +|08/01/2022 03:11:02| |CUTE FLOOF| +|08/01/2022 03:11:05| |now have sex| +|08/01/2022 03:11:10| |i own a shovel just like that :D| +|08/01/2022 03:11:12| |Floof best girl| +|08/01/2022 03:11:12| |comfy cave| +|08/01/2022 03:11:12| SUUPUU +|08/01/2022 03:11:14| |shovel floof| +|08/01/2022 03:11:15| SEEEEEEEEEEEEEEX +|08/01/2022 03:11:15| |>tfw no cave dwelling gf| +|08/01/2022 03:11:15| |sex for warmth, now| +|08/01/2022 03:11:15| |it collapsed and they died| +|08/01/2022 03:11:16| |Shovels, grenades, maps, everything!| +|08/01/2022 03:11:17| Klappspaten +|08/01/2022 03:11:17| |SEX IN THE SNOW CAVE| +|08/01/2022 03:11:18| |The Yukari grotto| +|08/01/2022 03:11:20| |same here anon!| +|08/01/2022 03:11:21| |The scouts aredead ;_;| +|08/01/2022 03:11:22| |Yukari's sex cave| +|08/01/2022 03:11:23| |Where's duce| +|08/01/2022 03:11:24| SOUUUUP +|08/01/2022 03:11:28| |Shouldn't these two be absolutely freezing?| +|08/01/2022 03:11:31| |i want to go camping bros| +|08/01/2022 03:11:31| |DUCE died| +|08/01/2022 03:11:32| |F I R S T T I M E| +|08/01/2022 03:11:34| |god i want to cum in her hair| +|08/01/2022 03:11:35| |I'M AT SOUP| +|08/01/2022 03:11:36| CARBON +|08/01/2022 03:11:39| |Cute grills don;tr frteese| +|08/01/2022 03:11:41| |JUST USE HEAT COINS YOU DUMB FLOOF| +|08/01/2022 03:11:41| d-duce +|08/01/2022 03:11:44| |Rice Rations| +|08/01/2022 03:11:46| |CARBON COATED RICE| +|08/01/2022 03:11:46| NARUHODO +|08/01/2022 03:11:47| duce +|08/01/2022 03:11:47| |FAKE WINTER| +|08/01/2022 03:11:48| |frozen jelly donuts?| +|08/01/2022 03:11:48| COMUNISM +|08/01/2022 03:11:48| |>he doesnt know about how snow works underground| +|08/01/2022 03:11:49| |FUCK CAMPING, AND FUCK YURU CAMP| +|08/01/2022 03:11:51| |the soup aisle?| +|08/01/2022 03:11:53| |Just get out of the soup section| +|08/01/2022 03:11:55| |Caesar can't understnad basic thermodynamics| +|08/01/2022 03:11:55| |Carbon Coating defeats col;d| +|08/01/2022 03:12:00| BULGE +|08/01/2022 03:12:00| |ITS STILL SOUP| +|08/01/2022 03:12:01| |good taste in entrenching equipment| +|08/01/2022 03:12:04| Bulge... +|08/01/2022 03:12:08| BULGE +|08/01/2022 03:12:10| |Technically, the Lee was equiped with a supplementary gas heater...| +|08/01/2022 03:12:12| |squeeze the german bulge....| +|08/01/2022 03:12:13| |Are Yukarin's legs carbon-coated| +|08/01/2022 03:12:14| |yukari will battle my bulge| +|08/01/2022 03:12:16| |LARP ALERT LARP ALERT| +|08/01/2022 03:12:17| BARJI +|08/01/2022 03:12:18| BULGE +|08/01/2022 03:12:20| |Look at how their beverages steam; it's obviously real cold| +|08/01/2022 03:12:21| |Good ol' LARP| +|08/01/2022 03:12:23| |>she will use it in das finale 4| +|08/01/2022 03:12:24| |Dorks | +|08/01/2022 03:12:25| AUTISM +|08/01/2022 03:12:26| |autistic roleplay| +|08/01/2022 03:12:28| |those jelly donust look pretty good| +|08/01/2022 03:12:29| |!LARP ALERT!| +|08/01/2022 03:12:33| |haha momo| +|08/01/2022 03:12:34| |TL NOTE| +|08/01/2022 03:12:35| |best grils| +|08/01/2022 03:12:36| dorks +|08/01/2022 03:12:36| |Das Finale is a lie| +|08/01/2022 03:12:36| |WHAT IS SNOW?| +|08/01/2022 03:12:38| |cute dorks| +|08/01/2022 03:12:38| |God I wish I was autistic too| +|08/01/2022 03:12:38| LARP +|08/01/2022 03:12:38| |CUTE LARP| +|08/01/2022 03:12:38| |what tf is snow| +|08/01/2022 03:12:39| CUTE +|08/01/2022 03:12:40| cuties +|08/01/2022 03:12:40| |BASED LARP| +|08/01/2022 03:12:41| kawaii +|08/01/2022 03:12:42| HAHAHAHAHAHA +|08/01/2022 03:12:43| |eternal torment and misery| +|08/01/2022 03:12:43| |HELL YEAH| +|08/01/2022 03:12:46| |I can't believe Yuakri is fucking dead| +|08/01/2022 03:12:46| |HOLY FUCK YUKARI IS DEAD| +|08/01/2022 03:12:47| |autistic falling| +|08/01/2022 03:12:48| F +|08/01/2022 03:12:48| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:12:48| Autism +|08/01/2022 03:12:49| |HOLY SHIT IS YUKARI DEAD BROS| +|08/01/2022 03:12:49| |F FOR YUKARI| +|08/01/2022 03:12:49| DESU +|08/01/2022 03:12:50| water +|08/01/2022 03:12:50| RIP +|08/01/2022 03:12:51| F +|08/01/2022 03:12:51| F +|08/01/2022 03:12:51| dead +|08/01/2022 03:12:51| |yeah! what is snow?| +|08/01/2022 03:12:52| AUTISM +|08/01/2022 03:12:52| WWWWWWWWWWWWWWWWWWWW +|08/01/2022 03:12:52| |I CAN'T BELIVE YUKARI IS DEAD| +|08/01/2022 03:12:53| Larpers +|08/01/2022 03:12:53| KEK +|08/01/2022 03:12:53| |I can't believe yukari is fucking dead| +|08/01/2022 03:12:53| |PRESS F YUKARI| +|08/01/2022 03:12:53| CUTE +|08/01/2022 03:12:53| |Baby dont hurt me| +|08/01/2022 03:12:54| HAKKOUDA +|08/01/2022 03:12:54| |CUTE AUTISM| +|08/01/2022 03:12:54| WTF +|08/01/2022 03:12:55| F +|08/01/2022 03:12:55| |what IS snow?| +|08/01/2022 03:12:55| |RIP YUKARI| +|08/01/2022 03:12:57| F +|08/01/2022 03:12:57| |TL note -------------------------->| +|08/01/2022 03:12:59| |cute larping| +|08/01/2022 03:13:00| F +|08/01/2022 03:13:01| F +|08/01/2022 03:13:01| F +|08/01/2022 03:13:02| |Cute baka| +|08/01/2022 03:13:02| |I CANT BELIEVE YUKARI IS DED| +|08/01/2022 03:13:02| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:13:03| rip +|08/01/2022 03:13:03| |YUKARI IS DEAD| +|08/01/2022 03:13:03| RIP +|08/01/2022 03:13:03| F +|08/01/2022 03:13:03| RIP +|08/01/2022 03:13:03| autism +|08/01/2022 03:13:04| F +|08/01/2022 03:13:05| rip +|08/01/2022 03:13:05| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 03:13:05| F +|08/01/2022 03:13:05| f +|08/01/2022 03:13:06| |its over| +|08/01/2022 03:13:07| F +|08/01/2022 03:13:07| |YUKARI IS UFCKING DEAD| +|08/01/2022 03:13:07| |Fluff is dead| +|08/01/2022 03:13:08| F +|08/01/2022 03:13:08| F +|08/01/2022 03:13:08| |SHE DIED| +|08/01/2022 03:13:10| Cute +|08/01/2022 03:13:11| |TOOO PURE| +|08/01/2022 03:13:11| |TL NOTE: YUKI MEANS SNOW| +|08/01/2022 03:13:12| |I can't believe she's fucking dead| +|08/01/2022 03:13:12| |oh great, she's dead| +|08/01/2022 03:13:13| |theyre dead| +|08/01/2022 03:13:13| |I want to do it with Yukari| +|08/01/2022 03:13:14| F +|08/01/2022 03:13:14| |I can;t believe Yukari is dead| +|08/01/2022 03:13:15| |was it autism?| +|08/01/2022 03:13:15| |tumbling down| +|08/01/2022 03:13:16| F +|08/01/2022 03:13:20| cutecutecute +|08/01/2022 03:13:23| |Still warm| +|08/01/2022 03:13:27| |Update the stream, bakas, you're behidn| +|08/01/2022 03:13:27| dildos +|08/01/2022 03:13:27| |TL NOTE: YUKARI MEANS BEST GIRL| +|08/01/2022 03:13:28| ctuctuctu +|08/01/2022 03:13:29| |based prepper| +|08/01/2022 03:13:32| |peculiar tools| +|08/01/2022 03:13:37| |INSUPEKTA GADUJETTU| +|08/01/2022 03:13:47| |I haven't drunk a single drop of water, wat do| +|08/01/2022 03:13:49| |>Yfw Yukair can outlift me| +|08/01/2022 03:13:49| |Yukari is peculiar indeed...| +|08/01/2022 03:13:53| |I'm so behind that I'm still at Anzio| +|08/01/2022 03:13:54| |drink some wa'a| +|08/01/2022 03:13:57| |drink alcohol| +|08/01/2022 03:13:57| Die +|08/01/2022 03:14:01| |don't worry, they have carbon coated thighs. Comfy, warm, cute.| +|08/01/2022 03:14:03| |anzio never ended| +|08/01/2022 03:14:03| |I skipped class just for this| +|08/01/2022 03:14:04| |and a grenade| +|08/01/2022 03:14:07| |>TFW no Yukari GF| +|08/01/2022 03:14:07| |even a fucking bomb| +|08/01/2022 03:14:09| spies +|08/01/2022 03:14:09| |Time to do some trolling...| +|08/01/2022 03:14:10| |carbon coated internal organs| +|08/01/2022 03:14:11| |Yukari carries this Franchise| +|08/01/2022 03:14:12| |sneeki breeki| +|08/01/2022 03:14:12| |Off to find wah| +|08/01/2022 03:14:15| |we do a little trolling| +|08/01/2022 03:14:16| |anzio eternal| +|08/01/2022 03:14:16| |C4 Rush!| +|08/01/2022 03:14:19| |flaggu tanku| +|08/01/2022 03:14:21| |They should offer Momo's body as a peace offering| +|08/01/2022 03:14:23| NINA +|08/01/2022 03:14:23| |>Not having christmass vaction this week| +|08/01/2022 03:14:23| |TANK BUTT| +|08/01/2022 03:14:24| |NINA YOU GO TO GULAG| +|08/01/2022 03:14:24| |Do Yukari always carry condoms?| +|08/01/2022 03:14:24| nina +|08/01/2022 03:14:26| |Operation Snowy Blowy| +|08/01/2022 03:14:27| |NINA NINA NINA| +|08/01/2022 03:14:28| |Stealth 100| +|08/01/2022 03:14:29| |Hello fellow russians| +|08/01/2022 03:14:29| NINA +|08/01/2022 03:14:29| |cute soviet| +|08/01/2022 03:14:31| |Nina a cute| +|08/01/2022 03:14:33| |Comrade Nina!| +|08/01/2022 03:14:33| |Nina no baka| +|08/01/2022 03:14:33| |HOW DO YOU DO MY FELLOW COMMUNISTS| +|08/01/2022 03:14:33| |NINA WAS NEVER SEEN AGAIN| +|08/01/2022 03:14:36| |tiny little nina| +|08/01/2022 03:14:38| |nina baka| +|08/01/2022 03:14:38| |Senpai is so generous!| +|08/01/2022 03:14:38| |TALL FLOOF| +|08/01/2022 03:14:40| |my fellow russians,| +|08/01/2022 03:14:41| |GREETINGS COMRADE | +|08/01/2022 03:14:41| |TOVARISH NINA| +|08/01/2022 03:14:41| UOOOOOOOOOHHHHHH +|08/01/2022 03:14:44| moan +|08/01/2022 03:14:46| |so cute| +|08/01/2022 03:14:48| |Hello fellow ruskie scum| +|08/01/2022 03:14:50| |what the heck Yukari forgot to record it this time| +|08/01/2022 03:14:51| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 03:14:52| |nina is so fucking cute bros| +|08/01/2022 03:14:52| uuuuuuuuuuuuoooooooooooooooooooooohhh +|08/01/2022 03:14:54| NINA +|08/01/2022 03:14:54| ToT +|08/01/2022 03:14:54| |cute slavs| +|08/01/2022 03:14:56| UUUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 03:14:56| CUTE +|08/01/2022 03:14:57| |I Serve the Soviet Union| +|08/01/2022 03:14:58| |Fellow comrades| +|08/01/2022 03:14:58| |cute nina| +|08/01/2022 03:14:58| sus +|08/01/2022 03:14:59| |>40 small girls inside a trench coat| +|08/01/2022 03:15:01| CUTE +|08/01/2022 03:15:03| |I too kick dance for leisure| +|08/01/2022 03:15:03| |ERWIN YOU DUMB| +|08/01/2022 03:15:07| NANDEMONAI +|08/01/2022 03:15:08| |Trickery 100| +|08/01/2022 03:15:12| |KATYUSHA STATUS: OWNED| +|08/01/2022 03:15:13| |Soviet YunYun| +|08/01/2022 03:15:13| |>like a chile| +|08/01/2022 03:15:14| |don't be fooled. this loli WILL break you in half| +|08/01/2022 03:15:16| |Yukari spying once again| +|08/01/2022 03:15:18| |damn female child...| +|08/01/2022 03:15:19| |dumb ruskies| +|08/01/2022 03:15:19| |dumb hick accent| +|08/01/2022 03:15:20| NOBODY +|08/01/2022 03:15:20| DAYONEEEEE~ +|08/01/2022 03:15:21| |facts, based nina| +|08/01/2022 03:15:21| EXPOSED +|08/01/2022 03:15:24| |Katyusha is an adult| +|08/01/2022 03:15:26| dayoneeeee~ +|08/01/2022 03:15:26| |Can orai win once without cheatingf| +|08/01/2022 03:15:27| |Hello Fellow Russian| +|08/01/2022 03:15:27| |ching chong ping pong fellow ruskis| +|08/01/2022 03:15:28| |HAHA CHILD| +|08/01/2022 03:15:28| DAYONEEEEEEEE +|08/01/2022 03:15:29| |Yuri Erwin's the name| +|08/01/2022 03:15:29| |Yukari best honeypot | +|08/01/2022 03:15:29| |That's it Nina, you're going to Siberia| +|08/01/2022 03:15:34| |UOOOOOOOHHHHHHHHHHH KATYUSHA UOOOOOOOOOOOOOOOOOHHHHHHHHHH| +|08/01/2022 03:15:37| |how do you do fellow pravdans?| +|08/01/2022 03:15:37| |EROTIC RUSKIE CHILD| +|08/01/2022 03:15:37| |NINA NO| +|08/01/2022 03:15:41| KABE +|08/01/2022 03:15:42| DAYONEEEEEEEE +|08/01/2022 03:15:43| |NINA YES| +|08/01/2022 03:15:43| Owned +|08/01/2022 03:15:44| |NINA THOSE ARE STATE SECRETS| +|08/01/2022 03:15:48| |What will Nina's punishment be?| +|08/01/2022 03:15:50| |that looks a LOT like a grisdie susbension tonk!| +|08/01/2022 03:15:50| |Nina's going to gulag for this| +|08/01/2022 03:15:53| Rape +|08/01/2022 03:15:55| |to gulag| +|08/01/2022 03:15:56| |NO NINA YOU'LL GET THE GULAG| +|08/01/2022 03:15:56| |Dumb red| +|08/01/2022 03:15:58| SIBERIA +|08/01/2022 03:16:00| KAABEE-TAN +|08/01/2022 03:16:01| |Firing Squad | +|08/01/2022 03:16:01| |Guppies are always punished with rape| +|08/01/2022 03:16:03| |NINA STOP OR KATYUSHA WILL SEND YOU TO SIBERIA| +|08/01/2022 03:16:03| |rape correction| +|08/01/2022 03:16:04| |Nina gonna suck some thick dicks for this| +|08/01/2022 03:16:05| |Top-tier, no, YUKARI-tier espionage!| +|08/01/2022 03:16:07| |KV A QT| +|08/01/2022 03:16:07| |Nina and her family was later sent to Siberia| +|08/01/2022 03:16:07| |is nina the strongest loader| +|08/01/2022 03:16:08| |NINA STFU THE NKVD IS LISTENING| +|08/01/2022 03:16:09| |NINA NOOOOOO| +|08/01/2022 03:16:12| BAKABAKA +|08/01/2022 03:16:12| Nigger +|08/01/2022 03:16:15| savage +|08/01/2022 03:16:16| CUUUUUUUUUUTE +|08/01/2022 03:16:16| |so cute| +|08/01/2022 03:16:19| |Press R to inform on Nina| +|08/01/2022 03:16:23| R +|08/01/2022 03:16:24| |Stalinium approved| +|08/01/2022 03:16:26| |NOT R| +|08/01/2022 03:16:26| RRRRRRRRRRRRRRRRRR +|08/01/2022 03:16:27| no +|08/01/2022 03:16:27| R +|08/01/2022 03:16:28| |Nina gonna get whipped in the gulag| +|08/01/2022 03:16:28| R +|08/01/2022 03:16:33| |WHY'D YOU SPILL YER BEANS| +|08/01/2022 03:16:34| |I WILL COME INSIDE OF NINA| +|08/01/2022 03:16:34| |Hard R| +|08/01/2022 03:16:34| |such nice spies| +|08/01/2022 03:16:35| |COCOA SAN| +|08/01/2022 03:16:36| |Press B to blackmail Nina instead of reporting| +|08/01/2022 03:16:37| |ALINA IS A SNITCH| +|08/01/2022 03:16:37| |NINA YOU"RE GOING TO CHECHNYA GO FIGHT THE REBELS| +|08/01/2022 03:16:37| |I want to make some Gogo now| +|08/01/2022 03:16:37| |Who's Nina? There's no one at Pravda by that name...| +|08/01/2022 03:16:38| CUTEYUSHA +|08/01/2022 03:16:39| |ALINA IS LISTENING NINA NO| +|08/01/2022 03:16:39| B +|08/01/2022 03:16:39| B +|08/01/2022 03:16:40| KEK +|08/01/2022 03:16:41| |Why does this child have such a short skirt? | +|08/01/2022 03:16:42| |Ironic Lolicons get run over by my tank| +|08/01/2022 03:16:44| BBBBBB +|08/01/2022 03:16:44| |RIP IN PIECE NINA| +|08/01/2022 03:16:45| B +|08/01/2022 03:16:45| |Nina is gonna be made a cocksleeve| +|08/01/2022 03:16:46| |Pure elation| +|08/01/2022 03:16:46| cute +|08/01/2022 03:16:48| |DAYS OF DASH| +|08/01/2022 03:16:48| |Katyu an egotist| +|08/01/2022 03:16:50| LMAO +|08/01/2022 03:16:52| |it was at taht moment alina decided she didnt see anything| +|08/01/2022 03:16:53| |CUTE HORLY FLOOF| +|08/01/2022 03:16:56| |dat face| +|08/01/2022 03:16:57| |Oh God Yukari is so cute| +|08/01/2022 03:16:57| |>forcing the ironic lolicon meme| +|08/01/2022 03:16:59| song +|08/01/2022 03:17:00| |lessss goooo banger| +|08/01/2022 03:17:01| |I hope their sweet thighs don't get frostbite| +|08/01/2022 03:17:01| |they're our senpais dummy| +|08/01/2022 03:17:02| |>she's unaware| +|08/01/2022 03:17:03| |Cute retard| +|08/01/2022 03:17:04| RUN +|08/01/2022 03:17:04| \o/ +|08/01/2022 03:17:05| |>She doesn't know| +|08/01/2022 03:17:06| |Fucking idiots| +|08/01/2022 03:17:07| |>ironic lolicon| +|08/01/2022 03:17:09| |Nina is such a retrard| +|08/01/2022 03:17:09| |TH PERFECT CRIME| +|08/01/2022 03:17:10| >ironic +|08/01/2022 03:17:11| \o/ +|08/01/2022 03:17:11| |I'M DREAMING| +|08/01/2022 03:17:11| |>nina cost them the match| +|08/01/2022 03:17:12| |Charisma lock passed| +|08/01/2022 03:17:14| >ironic +|08/01/2022 03:17:14| |cheese it| +|08/01/2022 03:17:14| |CARBON COATED THIGHS AAAAAAAAAAAA| +|08/01/2022 03:17:15| |! Banger alert ! Banger alert !| +|08/01/2022 03:17:15| Ahahahah +|08/01/2022 03:17:15| banger?! +|08/01/2022 03:17:16| |no irony here faggot| +|08/01/2022 03:17:17| '_'7 +|08/01/2022 03:17:20| |LOL LMAO| +|08/01/2022 03:17:25| >banger +|08/01/2022 03:17:27| SEAMLESS +|08/01/2022 03:17:28| MAKOOOOOOOOOOO +|08/01/2022 03:17:30| |Dark song| +|08/01/2022 03:17:31| |that cut| +|08/01/2022 03:17:40| SEAMLESS +|08/01/2022 03:17:42| |How haven't their thigh frozen over already| +|08/01/2022 03:17:44| |What is "fun"?| +|08/01/2022 03:17:44| |damn female child...| +|08/01/2022 03:17:45| |But they did come home alve| +|08/01/2022 03:17:45| |WITHOUT SEAMS| +|08/01/2022 03:17:50| |>it changed to a lower key| +|08/01/2022 03:17:51| |I hate fun| +|08/01/2022 03:17:51| |! BANGER ALERT !| +|08/01/2022 03:17:52| |high tech 3d| +|08/01/2022 03:17:54| |edited to perfection| +|08/01/2022 03:17:56| |Carbon Coated Thighs | +|08/01/2022 03:18:00| |MY FUCKING STREAM| +|08/01/2022 03:18:04| |SLAV MUSIC| +|08/01/2022 03:18:07| |Carbon coated teacups| +|08/01/2022 03:18:08| |red tanks| +|08/01/2022 03:18:12| >MORALE +|08/01/2022 03:18:13| |love this music| +|08/01/2022 03:18:13| |POLYUSHKA POLYE| +|08/01/2022 03:18:14| |Have yo uheard this saying?| +|08/01/2022 03:18:15| |get outta here stalker| +|08/01/2022 03:18:20| |wanna dance on my table now| +|08/01/2022 03:18:21| |3D of the future| +|08/01/2022 03:18:25| |PECO KAWAII| +|08/01/2022 03:18:26| AZUSA +|08/01/2022 03:18:26| |You Know this Saying Right?| +|08/01/2022 03:18:27| |I want to unheard all those sayings plz| +|08/01/2022 03:18:30| |cyka blyat| +|08/01/2022 03:18:30| |The dance| +|08/01/2022 03:18:30| |TOVARISCH POLKOVNIK| +|08/01/2022 03:18:34| |Get ready to dance your way to victory!| +|08/01/2022 03:18:35| |imagine Stalingrad, but with cute girls| +|08/01/2022 03:18:39| |BREED RABBITS| +|08/01/2022 03:18:40| |IT'S GOOD TO SEE YOU ALL HERE TODAY| +|08/01/2022 03:18:42| |thats it| +|08/01/2022 03:18:43| |Not time to dance yet| +|08/01/2022 03:18:47| |SORE DA ;_;| +|08/01/2022 03:18:49| |NEED MORE SOUP| +|08/01/2022 03:18:50| |BUT IT WILL BE EVEN BETTER TO SEE YOU SOON| +|08/01/2022 03:18:51| |dumb duckd| +|08/01/2022 03:18:54| |STEP COUNTER ;___;| +|08/01/2022 03:18:57| |BREAKING THROUGH THAT WALL| +|08/01/2022 03:18:57| |Saki will freeze over| +|08/01/2022 03:18:57| |based /his/| +|08/01/2022 03:18:58| |butt on the ground| +|08/01/2022 03:19:05| |The Guppies are sleeping...| +|08/01/2022 03:19:05| Paizuri +|08/01/2022 03:19:05| cute +|08/01/2022 03:19:08| |YOU HEAR THAT, ANON? DON'T FALL ASLEEP!| +|08/01/2022 03:19:09| NERDS +|08/01/2022 03:19:09| |AHHHH SHE FELL ASLEEP| +|08/01/2022 03:19:13| |BY ME| +|08/01/2022 03:19:13| |IF ONLY THEY WORE APPROPRIATE CLOTHING| +|08/01/2022 03:19:14| snowbare +|08/01/2022 03:19:15| |why are we here just to suffer| +|08/01/2022 03:19:16| |typical russians| +|08/01/2022 03:19:17| |How much do these faggots eat| +|08/01/2022 03:19:17| |comfy sodoko| +|08/01/2022 03:19:17| |do the dance miho or you are getting disowned again| +|08/01/2022 03:19:17| |THE DANCE| +|08/01/2022 03:19:18| |cute helmets| +|08/01/2022 03:19:18| KHOROSHO +|08/01/2022 03:19:18| |THE SODOKO CACOON| +|08/01/2022 03:19:19| |CHEEKI BREEKI| +|08/01/2022 03:19:20| |You heard Sodoko; no sleeping.| +|08/01/2022 03:19:21| BORSCHT +|08/01/2022 03:19:21| |THERE IT IS| +|08/01/2022 03:19:30| |BRING MORE SOUP| +|08/01/2022 03:19:31| |lol lmao| +|08/01/2022 03:19:31| |PARTY HARD| +|08/01/2022 03:19:31| |slav gunna slav| +|08/01/2022 03:19:33| KOSACHOV +|08/01/2022 03:19:33| |cyka blyat| +|08/01/2022 03:19:34| |smart communists| +|08/01/2022 03:19:36| |terrible way to put out a fire| +|08/01/2022 03:19:37| |WAIT: none of them wears adidas| +|08/01/2022 03:19:39| |Kick dance!| +|08/01/2022 03:19:39| BLYAT +|08/01/2022 03:19:42| |Dumb communist dorks| +|08/01/2022 03:19:44| |CHEEKI BREEKI IV DAMKE| +|08/01/2022 03:19:46| gopnitsas +|08/01/2022 03:19:52| |the right way to put out a fire is with piss| +|08/01/2022 03:19:53| Yes +|08/01/2022 03:19:56| |flower in snow????!!!111| +|08/01/2022 03:19:57| |dork dance incoming| +|08/01/2022 03:20:03| |ponyatno have a nice day| +|08/01/2022 03:20:07| |ANKOU TIEM| +|08/01/2022 03:20:08| |ahn ahn ahn| +|08/01/2022 03:20:11| |AUTISM ALERT| +|08/01/2022 03:20:13| |TIME FOR AUTISM| +|08/01/2022 03:20:14| |O I| +|08/01/2022 03:20:15| |do the funny| +|08/01/2022 03:20:20| |pissing on a fire or on a sauna smells like shit and you breathe the piss vapour| +|08/01/2022 03:20:20| |BY TAAL| +|08/01/2022 03:20:22| |AUTISTIC DANCE INCOMING| +|08/01/2022 03:20:22| |what would maho do in this time of need?| +|08/01/2022 03:20:22| |"do the thing"| +|08/01/2022 03:20:24| |ANKOU DANCE TIME| +|08/01/2022 03:20:25| |AN AH AN AN| +|08/01/2022 03:20:25| |do the stanky leg| +|08/01/2022 03:20:25| |INCOMING AUTISM. BRACE| +|08/01/2022 03:20:26| |do it| +|08/01/2022 03:20:27| |wtf? Is Momo right for once?| +|08/01/2022 03:20:28| |AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ | +|08/01/2022 03:20:28| |So can I piss before the infamous SnW episode tomorrow?| +|08/01/2022 03:20:29| |ITS TIME| +|08/01/2022 03:20:30| |AN AN AN AN| +|08/01/2022 03:20:30| |AN AN AN AN| +|08/01/2022 03:20:30| A-A-A-A-A-AN +|08/01/2022 03:20:30| |low energy| +|08/01/2022 03:20:31| |this bit is ten times funnier remembering ribbon warrior| +|08/01/2022 03:20:31| |A A AN AN A A AN AN A A AN AA AN AN AN AN| +|08/01/2022 03:20:31| |ah ah ah ah ah ah ah an| +|08/01/2022 03:20:33| |BEST DANCE| +|08/01/2022 03:20:33| |WAR DANCE INCOMING| +|08/01/2022 03:20:33| AAAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNN +|08/01/2022 03:20:34| AUTISM +|08/01/2022 03:20:34| Cringe +|08/01/2022 03:20:34| terrifying +|08/01/2022 03:20:35| |AAANG AAANG AAAANG| +|08/01/2022 03:20:35| |AN AN AN AN| +|08/01/2022 03:20:35| |an an an| +|08/01/2022 03:20:35| |a-a-an an a-a-an| +|08/01/2022 03:20:36| ANANANANANANANANANANANA +|08/01/2022 03:20:36| |a a an an| +|08/01/2022 03:20:36| |AUTISM INBOUND| +|08/01/2022 03:20:37| |it's autism hours| +|08/01/2022 03:20:37| |AN AN AN AN AN AN| +|08/01/2022 03:20:38| |AH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANG| +|08/01/2022 03:20:38| |Time for a sigma (fe)male move| +|08/01/2022 03:20:40| |! Bange- b... banger? Banger alert...?| +|08/01/2022 03:20:41| |AN AN AN AN AN| +|08/01/2022 03:20:43| |SHE IS GOING CRAZYYYYYYYYYYYYYY| +|08/01/2022 03:20:44| |THIS IS THE DANCE OF MY PEOPLE| +|08/01/2022 03:20:44| |AAANG AAANG AAANG| +|08/01/2022 03:20:45| |A A AN AN A A AN AN A A AN AN A A AN AN A A AN AN| +|08/01/2022 03:20:46| |AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ | +|08/01/2022 03:20:46| |ANG ANG ANG| +|08/01/2022 03:20:47| BANGER +|08/01/2022 03:20:47| |AHN AHN AHN| +|08/01/2022 03:20:48| |the virgin Kazotsky Kick vs the chad Anglerfish dance| +|08/01/2022 03:20:49| |A A AN AN| +|08/01/2022 03:20:50| |ah hah ah ang| +|08/01/2022 03:20:50| KINO +|08/01/2022 03:20:50| |NOW SHE'S LOST IT| +|08/01/2022 03:20:51| |AN ANG ANG ANG| +|08/01/2022 03:20:51| |Ribbon warrior turned this into something menacing| +|08/01/2022 03:20:52| |AHN AHN AHN| +|08/01/2022 03:20:52| pepega +|08/01/2022 03:20:53| A-A-AN +|08/01/2022 03:20:53| |a a an a a an a a an a a an a a an a a an a a an a a an a a an a a an | +|08/01/2022 03:20:53| |we watching the OVA that is just this right| +|08/01/2022 03:20:54| |AN AN AN AN AN AN AN AN AN AN AN AN | +|08/01/2022 03:20:56| |This is your mind on panzers| +|08/01/2022 03:20:56| |AN AN AN AN AN AN| +|08/01/2022 03:20:56| |ANG ANG ANG| +|08/01/2022 03:20:56| |Actual best song| +|08/01/2022 03:20:57| |AHN AHN| +|08/01/2022 03:20:57| |BY ME| +|08/01/2022 03:20:57| |A A ANG ANG| +|08/01/2022 03:20:58| |A A AN AN AN ANG ANG| +|08/01/2022 03:21:00| |Ahn~ Ahn~ Ahn~| +|08/01/2022 03:21:01| |ANG ANG ANG| +|08/01/2022 03:21:01| SEXY +|08/01/2022 03:21:02| mindBROKEN +|08/01/2022 03:21:04| |ahn ahn ahn~| +|08/01/2022 03:21:04| |shake it!| +|08/01/2022 03:21:04| |FLAT ANZU| +|08/01/2022 03:21:05| AUTISM +|08/01/2022 03:21:07| |OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS | +|08/01/2022 03:21:08| |>dad walks in| +|08/01/2022 03:21:09| |MIND CRUSH| +|08/01/2022 03:21:10| | ! BANGER ALERT ! ! BANGER ALERT !| +|08/01/2022 03:21:10| |YOUR BRAIN ON ANG ANG| +|08/01/2022 03:21:11| |ANG ANG| +|08/01/2022 03:21:12| DISOWNED +|08/01/2022 03:21:12| |MOYASHIT KOGASHITE YURAYURA| +|08/01/2022 03:21:12| |Miho is a cute dork| +|08/01/2022 03:21:12| |"i want to go home maho"| +|08/01/2022 03:21:14| |SHAMEFUR DISPRAY| +|08/01/2022 03:21:14| lmao +|08/01/2022 03:21:15| |AN AN AN!| +|08/01/2022 03:21:16| autism +|08/01/2022 03:21:16| |ANG ANG ANG| +|08/01/2022 03:21:17| |yOU BETTER BE DANCING ANON| +|08/01/2022 03:21:17| |based Yukari| +|08/01/2022 03:21:17| |Ooari guppies dateability: 0| +|08/01/2022 03:21:19| ASORE +|08/01/2022 03:21:19| wtf +|08/01/2022 03:21:19| |>da fuck is my daughter doing?| +|08/01/2022 03:21:20| AUTISM +|08/01/2022 03:21:21| AYOISHO +|08/01/2022 03:21:21| |>I'll never find a husband for my daughter now| +|08/01/2022 03:21:22| |the pride of the nishizumi school!| +|08/01/2022 03:21:22| |they are no longer fit for marriage| +|08/01/2022 03:21:23| Powerful +|08/01/2022 03:21:23| |what is shiho's problem?| +|08/01/2022 03:21:25| |Need the outfits, now it's not sexy| +|08/01/2022 03:21:26| |hana's mom is dissappoint| +|08/01/2022 03:21:27| |>are ya winnin' son?| +|08/01/2022 03:21:28| |WE STILL HAVEN'T THE PROPER FACILITIES TO TAKE YOU ALL PRISONER| +|08/01/2022 03:21:29| | ANG ANG| +|08/01/2022 03:21:29| |do they know this shit is on tv?| +|08/01/2022 03:21:30| HARASSHO +|08/01/2022 03:21:30| |NO WAY FAG| +|08/01/2022 03:21:31| |ANG ANG ANG| +|08/01/2022 03:21:32| |>are ya winin oarai?| +|08/01/2022 03:21:33| |Shiho so disappointed| +|08/01/2022 03:21:33| |I KNEEL| +|08/01/2022 03:21:35| ToT +|08/01/2022 03:21:35| |>I was right to disown my daughter| +|08/01/2022 03:21:36| DEAAAAAAAAAAAAAATTTTTTTTTHHHHHHHHHHHHHHH +|08/01/2022 03:21:39| |You interrupted our war dance for this?| +|08/01/2022 03:21:39| |I will not dance but I will drink more| +|08/01/2022 03:21:39| |FUCK OFF| +|08/01/2022 03:21:40| |katyusha sleep| +|08/01/2022 03:21:41| |HOW EMBARASSING| +|08/01/2022 03:21:41| Cuteyusha! +|08/01/2022 03:21:43| THIGHS +|08/01/2022 03:21:43| |Imagine molesting Katyushas butt as she sleeps| +|08/01/2022 03:21:48| |OORAIBROS... WE WILL NOT KNEEL...| +|08/01/2022 03:21:49| CUTEYUSHA +|08/01/2022 03:21:49| |KATYUSHA-SAMA, I DON'T KNEEL| +|08/01/2022 03:21:50| ROHIRRIM +|08/01/2022 03:21:51| |NOT KNEELING TODAY| +|08/01/2022 03:21:57| |what is everyone drinking? I got a bourbon here| +|08/01/2022 03:21:58| |WE SHALL FIGHT IN THE STREETS AND IN THE HILLS| +|08/01/2022 03:21:59| |why is the commander a child| +|08/01/2022 03:21:59| |WILL NOT KNEEL| +|08/01/2022 03:22:00| |>Interrupting their dance for a offer off surrender| +|08/01/2022 03:22:00| >127cm +|08/01/2022 03:22:01| |its clobberin time| +|08/01/2022 03:22:01| WATER +|08/01/2022 03:22:01| |AAAAA ANZU| +|08/01/2022 03:22:02| |DO GET THAT| +|08/01/2022 03:22:02| |WE SHALL NEVER SURRENDER| +|08/01/2022 03:22:04| |PRAVDABROS WE'LL BE FINE| +|08/01/2022 03:22:05| |ain't no nigger| +|08/01/2022 03:22:06| |Motorboating Kayusha| +|08/01/2022 03:22:07| |HERE WE GO| +|08/01/2022 03:22:08| |Never kneel it shorties| +|08/01/2022 03:22:08| |trump card trump card| +|08/01/2022 03:22:09| |COMMANDER NISHIZUMI FIGHTS ALONE| +|08/01/2022 03:22:10| |cool, clear water| +|08/01/2022 03:22:11| |Who else put everything on Pravda?| +|08/01/2022 03:22:14| |Could you not set up a fucking death flag you flat foodie midget you| +|08/01/2022 03:22:15| |NOT ALONE| +|08/01/2022 03:22:16| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 03:22:16| >surrendering +|08/01/2022 03:22:17| |PANZER VOR!| +|08/01/2022 03:22:18| |PANZER VOR| +|08/01/2022 03:22:18| |Pravdabros we won| +|08/01/2022 03:22:19| |JELLY JIGGLE TIME!| +|08/01/2022 03:22:19| |pravdabros we can't lose| +|08/01/2022 03:22:21| |gween tea| +|08/01/2022 03:22:21| |PANZER VORE| +|08/01/2022 03:22:21| |What does it mean, /a/?| +|08/01/2022 03:22:21| |pravda has this in the bag| +|08/01/2022 03:22:21| |PRAVDA BROS WE WILL CRUSH THE OOARAI CAPITALIST PIGS| +|08/01/2022 03:22:22| |PANZER VOR| +|08/01/2022 03:22:23| |PANZER VOR| +|08/01/2022 03:22:23| |PANTSU FOR| +|08/01/2022 03:22:24| PERFLAT +|08/01/2022 03:22:24| |I put my house on Pravada| +|08/01/2022 03:22:25| SNOW!! +|08/01/2022 03:22:29| SNOW +|08/01/2022 03:22:29| |KV-2 my beloved| +|08/01/2022 03:22:30| |PANZER VOR| +|08/01/2022 03:22:30| |JELLY JIGGLE| +|08/01/2022 03:22:32| |PANZER VOR| +|08/01/2022 03:22:32| |PANTSU VOR| +|08/01/2022 03:22:33| |PANZER VORE| +|08/01/2022 03:22:34| |JELLY JIGGLE| +|08/01/2022 03:22:36| |Panzer Vore| +|08/01/2022 03:22:37| |PRAVDABROS LOOKS LIKE WE GONNA HAVE TO STOMP THEM| +|08/01/2022 03:22:38| |wtf does panzer vor mean?| +|08/01/2022 03:22:38| |ARISE ARISE TANKERS OF OARAI| +|08/01/2022 03:22:39| |Pravda will win, they can't beat superior Stalinium| +|08/01/2022 03:22:39| |my left ballsack on Pravda to win| +|08/01/2022 03:22:45| |what does panzer vor mean?| +|08/01/2022 03:22:46| |pantsu vore| +|08/01/2022 03:22:48| katyusha-dono..... +|08/01/2022 03:22:50| >subtlke +|08/01/2022 03:22:51| ToT +|08/01/2022 03:22:54| |Panzer vor means Panzer vor| +|08/01/2022 03:22:54| |ALL ON KATYUSHA-SAMA| +|08/01/2022 03:22:55| |panzer vor means senshado| +|08/01/2022 03:22:55| |COMMIES SHALL REIGN SUPREME| +|08/01/2022 03:22:56| |pantsu whore| +|08/01/2022 03:22:57| |I want to lift Katyusha then yeet her into the snow| +|08/01/2022 03:22:58| |Katysha 4D plan: I sleep| +|08/01/2022 03:22:58| |I want them to Panzer For me| +|08/01/2022 03:23:01| |katyusha can sandwich me| +|08/01/2022 03:23:03| |is it nonstop buffering for anyone else right now too? | +|08/01/2022 03:23:09| no +|08/01/2022 03:23:09| |За женщин!| +|08/01/2022 03:23:09| |buffering for me too| +|08/01/2022 03:23:10| |works on my machine| +|08/01/2022 03:23:11| |works on my machine :)| +|08/01/2022 03:23:11| |It's your end| +|08/01/2022 03:23:11| Refresh +|08/01/2022 03:23:12| |if buffer refresh| +|08/01/2022 03:23:12| TOTSUGEKIIIIIIIIIIII +|08/01/2022 03:23:13| nyet +|08/01/2022 03:23:13| |working here| +|08/01/2022 03:23:13| refresh +|08/01/2022 03:23:13| |Running fine for me| +|08/01/2022 03:23:13| |No buffers, it's your end| +|08/01/2022 03:23:15| TOTSUGEKI +|08/01/2022 03:23:15| TOTSUGEKI +|08/01/2022 03:23:16| |no buffering rn for me| +|08/01/2022 03:23:18| TOTSUGEKI +|08/01/2022 03:23:18| TOTSUGEKI +|08/01/2022 03:23:18| poorfag +|08/01/2022 03:23:19| TOTSUGEKI +|08/01/2022 03:23:19| nyoom +|08/01/2022 03:23:19| |MUH DEEP BATT;E| +|08/01/2022 03:23:19| totsugeki +|08/01/2022 03:23:20| |Couldn't they have just shot a hole in the back?| +|08/01/2022 03:23:20| |>I can already see their face with tears streaming :sob:| +|08/01/2022 03:23:20| totsugeki +|08/01/2022 03:23:21| TOTSUGEKI +|08/01/2022 03:23:21| totsugeki? +|08/01/2022 03:23:21| |WORKS FINE FOR ME| +|08/01/2022 03:23:23| |Just get a better GPU nerd| +|08/01/2022 03:23:24| TOTSUGEKI +|08/01/2022 03:23:24| |no bufferign here chief| +|08/01/2022 03:23:25| TOTSUGEKI +|08/01/2022 03:23:26| TOTSUGEKI +|08/01/2022 03:23:27| TOTSUGEKI +|08/01/2022 03:23:30| 突撃 +|08/01/2022 03:23:30| |cute gremlin| +|08/01/2022 03:23:30| TOTSUGEK +|08/01/2022 03:23:31| |I AM THE GREATEST| +|08/01/2022 03:23:33| |works on my machine™| +|08/01/2022 03:23:33| |sasuga watashi ^_^^| +|08/01/2022 03:23:34| |just download more bitrate| +|08/01/2022 03:23:34| |突撃 突撃 突撃 突撃| +|08/01/2022 03:23:34| VGTG +|08/01/2022 03:23:36| TOTSUGEKI +|08/01/2022 03:23:43| CUTE +|08/01/2022 03:23:46| T-O-T-S-U-G-E-K-I +|08/01/2022 03:23:47| |I AM THE GREATEST! OH NO| +|08/01/2022 03:23:47| |IT'S TIME!| +|08/01/2022 03:23:48| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 03:23:49| CTU +|08/01/2022 03:23:50| |SHE IS THE GREATEST| +|08/01/2022 03:23:52| >momo +|08/01/2022 03:23:52| ANZU +|08/01/2022 03:23:53| |KATYUSHA IS A GENIUS| +|08/01/2022 03:23:53| |KAY IS BAE| +|08/01/2022 03:23:55| |I want anzu to sit on my lap ToT| +|08/01/2022 03:23:55| |cute actually competent gunner| +|08/01/2022 03:23:57| |ANZU ALWAYS WINS| +|08/01/2022 03:23:57| |OH NO| +|08/01/2022 03:24:03| |Anzu butt| +|08/01/2022 03:24:04| |LET'S GO ANZU| +|08/01/2022 03:24:04| HAXXXXXX +|08/01/2022 03:24:05| |KOMBAT | +|08/01/2022 03:24:06| DZZZZZZZZZZZZZZ +|08/01/2022 03:24:07| |anzu always wins baby| +|08/01/2022 03:24:08| |I want to cuddle Erika| +|08/01/2022 03:24:08| |BEST OORAI go!| +|08/01/2022 03:24:09| |why is Momo so useless?| +|08/01/2022 03:24:11| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 03:24:12| |>capable but does nothing most of the time| +|08/01/2022 03:24:14| |nice yuzu| +|08/01/2022 03:24:19| |>this is my ultimate job| +|08/01/2022 03:24:20| |Anzu best gunner!| +|08/01/2022 03:24:22| |ANZU SUPERIORITY| +|08/01/2022 03:24:25| |p-pravdabros... this isnt going according to plan...| +|08/01/2022 03:24:31| |TRUST THE PLAN| +|08/01/2022 03:24:32| |>tfw chat dead 4 me| +|08/01/2022 03:24:32| |4 ENEMIES POSSIBLY MORE| +|08/01/2022 03:24:33| |I STILL BELIEVE IN PRAVDA| +|08/01/2022 03:24:37| |stalin ka| +|08/01/2022 03:24:39| |>anzu gimped herself the entire time by letting momo aim| +|08/01/2022 03:24:40| |How are they beating our glorius Stalinium?| +|08/01/2022 03:24:41| |>ignoring yuzu's driving skills| +|08/01/2022 03:24:42| |2 more minutes| +|08/01/2022 03:24:49| |Trust in Katyusha's genius, tovarish| +|08/01/2022 03:24:49| |I'll be the white on your rice ;)| +|08/01/2022 03:24:52| |penetrating stalinium| +|08/01/2022 03:24:52| |A FUCKING STALIN| +|08/01/2022 03:24:53| |ZA NAMI ROSSIYA MOSKVA Y ARBAT| +|08/01/2022 03:24:54| |its been 4+ hours of watching lesbians fight each other in tanks how the fuck did my life end up like this| +|08/01/2022 03:24:55| |WHITES OF THEIR EYES ON RICE BOIS| +|08/01/2022 03:24:57| |sex with stalin| +|08/01/2022 03:25:00| |I believe in the commies. No way they're losing this| +|08/01/2022 03:25:02| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 03:25:02| STALINIUM +|08/01/2022 03:25:03| |time to buy pravdacoin| +|08/01/2022 03:25:04| |"we need to save our school but I wont gun even though Im good at it"| +|08/01/2022 03:25:05| |A V CHISTOM POLE SISTEMA GRAD| +|08/01/2022 03:25:05| |PENETRATE ANZU| +|08/01/2022 03:25:06| penetration +|08/01/2022 03:25:11| |Since when did the chat become a gay porn platform| +|08/01/2022 03:25:11| |I wanmt to penetrate Stalin| +|08/01/2022 03:25:12| |PENETRATE ANZU AT POINT BLANK RANGE| +|08/01/2022 03:25:12| |COMMUNISM WILL WIN| +|08/01/2022 03:25:13| |you can leave any time faggot| +|08/01/2022 03:25:14| |ZA NAMI PUTIN I STALINGRAD| +|08/01/2022 03:25:20| |KOMBAT BACHANYA BACHANYA KOMBAT| +|08/01/2022 03:25:22| |Anzu OP| +|08/01/2022 03:25:23| |stalin naizuri| +|08/01/2022 03:25:23| ANZU!!!!!!!! +|08/01/2022 03:25:24| |LET'S GO ANZU!!!!| +|08/01/2022 03:25:29| |ANZU SUPERIORITY| +|08/01/2022 03:25:33| |ANZU too OP pls nerf| +|08/01/2022 03:25:33| |SE NO!| +|08/01/2022 03:25:33| |ANZU KILLING SPREE| +|08/01/2022 03:25:33| |Mo Icho| +|08/01/2022 03:25:34| |LETS GO ANZU!!!| +|08/01/2022 03:25:36| |seems too good| +|08/01/2022 03:25:36| |DAVAI VTOROY RAZ ZA SPETSNAZ| +|08/01/2022 03:25:36| |MOBILITY CRITICAL| +|08/01/2022 03:25:36| |MOU ICCHO| +|08/01/2022 03:25:36| |ANZU BTFOS COMMIES| +|08/01/2022 03:25:39| |remember carbon coating| +|08/01/2022 03:25:40| |AAANNNNNNNNZZZZZUUUUUUU UUUUUUUUUUOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 03:25:41| |ANZU UOOOOOOOOOOOOOH| +|08/01/2022 03:25:41| |will momo hit something?| +|08/01/2022 03:25:41| F +|08/01/2022 03:25:41| |anzu OP| +|08/01/2022 03:25:41| |who can stop this flattie?| +|08/01/2022 03:25:42| |my wife anzu taking names| +|08/01/2022 03:25:43| |Absolute God mode| +|08/01/2022 03:25:44| GODLIKE +|08/01/2022 03:25:44| F +|08/01/2022 03:25:45| owned +|08/01/2022 03:25:46| >skedaddle +|08/01/2022 03:25:47| |SE NO| +|08/01/2022 03:25:47| REKT +|08/01/2022 03:25:47| F +|08/01/2022 03:25:48| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:25:49| F +|08/01/2022 03:25:49| NOOOOOOOOOOOOOO +|08/01/2022 03:25:50| |Too OP she needs to be nerfed by being lazy| +|08/01/2022 03:25:50| DEAD +|08/01/2022 03:25:50| F +|08/01/2022 03:25:50| F +|08/01/2022 03:25:50| |WICKED SICK| +|08/01/2022 03:25:51| F +|08/01/2022 03:25:51| |FUCK COMMIES| +|08/01/2022 03:25:51| |MURDER SPREE| +|08/01/2022 03:25:51| |why does momo exist?| +|08/01/2022 03:25:52| NOOOOOOOOOOOOO +|08/01/2022 03:25:52| YARETA +|08/01/2022 03:25:53| |carbon coated physics| +|08/01/2022 03:25:53| GG +|08/01/2022 03:25:53| |Nonna will breach them| +|08/01/2022 03:25:54| WASTED +|08/01/2022 03:25:54| F +|08/01/2022 03:25:56| F +|08/01/2022 03:25:56| |bone>carbon coating| +|08/01/2022 03:25:56| heh +|08/01/2022 03:25:56| F +|08/01/2022 03:25:57| SKEDADDLE +|08/01/2022 03:25:57| |Riggity rekt| +|08/01/2022 03:25:57| |>ITS OVER| +|08/01/2022 03:25:58| F +|08/01/2022 03:25:58| URRAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:26:00| skedaddle +|08/01/2022 03:26:00| F +|08/01/2022 03:26:01| RIP +|08/01/2022 03:26:01| F +|08/01/2022 03:26:02| F +|08/01/2022 03:26:02| RIP +|08/01/2022 03:26:02| |commanding and shooting at the same time is a complete pain in the ass| +|08/01/2022 03:26:04| |YUZU ASS| +|08/01/2022 03:26:08| |YUZU THICC| +|08/01/2022 03:26:10| |YUZU FAT ASS| +|08/01/2022 03:26:11| |REST IN PEPPERONI| +|08/01/2022 03:26:12| |Momo exist to be my cocksleeve as I penetrate Erika| +|08/01/2022 03:26:12| f +|08/01/2022 03:26:14| |go men| +|08/01/2022 03:26:15| DUCE +|08/01/2022 03:26:16| |momo exists to give us big titties| +|08/01/2022 03:26:17| BUTTE +|08/01/2022 03:26:29| |you think?| +|08/01/2022 03:26:29| |bros i thought t34 was the best in the world what the fuck happen.| +|08/01/2022 03:26:30| |What's an up dog then| +|08/01/2022 03:26:30| |PEKO UOH| +|08/01/2022 03:26:31| |>zero casualties| +|08/01/2022 03:26:31| |JUNK WAGONS| +|08/01/2022 03:26:31| |but yuzu is the tits of turtle team| +|08/01/2022 03:26:37| |amlost empty bleachers| +|08/01/2022 03:26:40| ?????????????????????????????????????????????????????????????? +|08/01/2022 03:26:41| |" "| +|08/01/2022 03:26:43| |Pravda Bro Has Stalin Abandon | +|08/01/2022 03:26:45| T34bros... +|08/01/2022 03:26:51| djb +|08/01/2022 03:26:53| |Orange Pekoe's sweet piss| +|08/01/2022 03:26:54| |Are we okay, /a/?| +|08/01/2022 03:26:54| F35bros... +|08/01/2022 03:26:55| |T34 will not lose, have faith| +|08/01/2022 03:26:56| DAIJOUBU +|08/01/2022 03:26:57| R34bros... +|08/01/2022 03:26:58| |Peko, have you heard this saying? "We got too cocky pravdabros!!!" It is said when fools believe themselves infallible.| +|08/01/2022 03:26:59| DIAJOOBU +|08/01/2022 03:27:01| |would you freeze your ass off for oorai?| +|08/01/2022 03:27:04| |WE"RE OKAY| +|08/01/2022 03:27:06| YES +|08/01/2022 03:27:07| |Not sure if I'm drunk or if the chat is getting more incoherent| +|08/01/2022 03:27:10| |<< HEY KID, WE LOOK GREAT! >>| +|08/01/2022 03:27:11| |it's over bros we're going to Vorkuta| +|08/01/2022 03:27:12| |Gloriuous stalinium will not loose| +|08/01/2022 03:27:15| oisemfoijwefa4,lrtq4.galh,k5oyma +|08/01/2022 03:27:16| DAIJOUBU +|08/01/2022 03:27:16| |ooarai should have surrendered| +|08/01/2022 03:27:19| |LET'S GO PRAVDA| +|08/01/2022 03:27:21| ooakdnjbrhg +|08/01/2022 03:27:22| |For me, it's the Beute Stalin| +|08/01/2022 03:27:22| |MIHO GET DOWN| +|08/01/2022 03:27:23| |It's just you anon| +|08/01/2022 03:27:24| TAMAYA! +|08/01/2022 03:27:26| |damn I need to take a shit| +|08/01/2022 03:27:27| |jobs to an early wahah2 tank| +|08/01/2022 03:27:27| |>Miho takes one to the head| +|08/01/2022 03:27:27| |i would stick my face on hetzer's hull in the middle of winter for ooarai| +|08/01/2022 03:27:28| |<>| +|08/01/2022 03:27:28| |ooarai have no chance| +|08/01/2022 03:27:34| help +|08/01/2022 03:27:35| |PRAVDA. WILL. WIN.| +|08/01/2022 03:27:38| |early on, the chat was lewd| +|08/01/2022 03:27:41| |That's a lot of tracers| +|08/01/2022 03:27:43| |now it's bizarre| +|08/01/2022 03:27:44| |maho pee| +|08/01/2022 03:27:44| |kino aa tracers| +|08/01/2022 03:27:48| |the game was rigged from the start| +|08/01/2022 03:27:49| |за правду| +|08/01/2022 03:27:49| |for me, it's the Pzkpfw 747(r)| +|08/01/2022 03:27:50| |Machine guns gomBRRRRRT| +|08/01/2022 03:27:50| |Is this touhou?| +|08/01/2022 03:27:52| |eventually it will get scary| +|08/01/2022 03:27:52| |i lost my shit when that guy got shot in fury| +|08/01/2022 03:27:52| |I will bet my dacha on Pravda| +|08/01/2022 03:27:56| |ZA RODINU| +|08/01/2022 03:27:59| |FOR MOTHER RUSSIA| +|08/01/2022 03:28:00| |Can we make it lewd AND bizarre| +|08/01/2022 03:28:05| |girls und panzer is the ace combat of anime| +|08/01/2022 03:28:06| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:28:07| tankhoumojo +|08/01/2022 03:28:10| |RUSSIAN 2HU| +|08/01/2022 03:28:16| |KRASNAYA ARMIYA VSEH SILNEY| +|08/01/2022 03:28:16| |mako pee is the dark souls of garupan| +|08/01/2022 03:28:18| |STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG | +|08/01/2022 03:28:20| |wich 2hu would u fug| +|08/01/2022 03:28:21| |Isn't Kotobuki the Ace Combat of anime?| +|08/01/2022 03:28:22| |Is this Iron Hummingbirds?| +|08/01/2022 03:28:24| |chad stand| +|08/01/2022 03:28:24| |katyusha swearing| +|08/01/2022 03:28:24| |Time for a cup of I JOE YOU JOE| +|08/01/2022 03:28:25| |she said a cuss word omg| +|08/01/2022 03:28:25| |a rat's ass| +|08/01/2022 03:28:25| УРАААААААААААААА +|08/01/2022 03:28:26| |that stance| +|08/01/2022 03:28:26| STAND +|08/01/2022 03:28:28| Punt +|08/01/2022 03:28:29| CHAD +|08/01/2022 03:28:30| |hold on to your pravdacoins bros| +|08/01/2022 03:28:31| |SIT THE FUCK DOWN MIHO| +|08/01/2022 03:28:32| |mako stance| +|08/01/2022 03:28:32| |Reimu > all other 2hus| +|08/01/2022 03:28:32| |CHAD STANE| +|08/01/2022 03:28:33| Cheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeen +|08/01/2022 03:28:33| based +|08/01/2022 03:28:33| |AUTOBOTS ROLL OUT!| +|08/01/2022 03:28:35| |perfect tuck and roll| +|08/01/2022 03:28:35| |katusya idiot| +|08/01/2022 03:28:37| WEW +|08/01/2022 03:28:38| OST +|08/01/2022 03:28:38| OST +|08/01/2022 03:28:40| |yukari later died of hypothermia| +|08/01/2022 03:28:40| 10/10 +|08/01/2022 03:28:41| ASS +|08/01/2022 03:28:41| woah +|08/01/2022 03:28:41| |power stance| +|08/01/2022 03:28:42| |lunge mine time| +|08/01/2022 03:28:42| KATYUSHA +|08/01/2022 03:28:42| |SOYUZ NERUSHIMI.....| +|08/01/2022 03:28:42| |did a flip| +|08/01/2022 03:28:43| |roll spammer| +|08/01/2022 03:28:44| KITAAAAAAAAA +|08/01/2022 03:28:45| KITAAAAAAAA +|08/01/2022 03:28:46| |! Banger alert ! Banger alert !| +|08/01/2022 03:28:46| MUSIC +|08/01/2022 03:28:46| NONNA +|08/01/2022 03:28:47| |Power stance| +|08/01/2022 03:28:48| |this sucks play koreblinki tetris| +|08/01/2022 03:28:50| |I want to segs duce in all her 7 holes| +|08/01/2022 03:28:50| kitaaaaaaaa +|08/01/2022 03:28:50| |suicide bomber fluff| +|08/01/2022 03:28:50| |KITA <3| +|08/01/2022 03:28:51| |RESPUBLIK SVABODI| +|08/01/2022 03:28:54| キターーーーーーー +|08/01/2022 03:28:54| HOOOOOH +|08/01/2022 03:28:55| |DO A BARREL ROLL| +|08/01/2022 03:28:55| |senshadou is souls like?| +|08/01/2022 03:28:56| |Carbon-coated fluff| +|08/01/2022 03:28:57| UUUUUUURRRRRRAAAAAAAAAAAA +|08/01/2022 03:28:58| |Is this legal?| +|08/01/2022 03:29:01| VYKHODILA +|08/01/2022 03:29:01| ! +|08/01/2022 03:29:01| KITAA +|08/01/2022 03:29:03| KITA +|08/01/2022 03:29:04| |enemy spotted| +|08/01/2022 03:29:05| |METAL GEAR SOLID FLOOF| +|08/01/2022 03:29:05| |What does the proletariat think of this?| +|08/01/2022 03:29:07| |Did she just jumpo out of a driving tank?| +|08/01/2022 03:29:08| >tetris +|08/01/2022 03:29:09| |kino alert| +|08/01/2022 03:29:09| ZOOOOOOM +|08/01/2022 03:29:10| |Katyusha will make it legal| +|08/01/2022 03:29:15| asd +|08/01/2022 03:29:19| |if only lenin could see us now| +|08/01/2022 03:29:24| SPEEEEEEDDD +|08/01/2022 03:29:24| |Time for a real banger| +|08/01/2022 03:29:29| КИНО +|08/01/2022 03:29:29| |panicu panicu| +|08/01/2022 03:29:32| |BANGER ALERT!| +|08/01/2022 03:29:34| |lenin would be proud| +|08/01/2022 03:29:36| |oh fug| +|08/01/2022 03:29:37| |fanta ne| +|08/01/2022 03:29:38| |Boiled bunnies| +|08/01/2022 03:29:41| |Shut up Nodoka]| +|08/01/2022 03:29:42| CUNNNNNNNNNNNY +|08/01/2022 03:29:43| TOTSUGEKI +|08/01/2022 03:29:44| AZUSA +|08/01/2022 03:29:46| |bunnies get shot in the ass....| +|08/01/2022 03:29:47| |dont look fine| +|08/01/2022 03:29:47| |lol no injuries | +|08/01/2022 03:29:48| |$140 glasses| +|08/01/2022 03:29:50| |MY GLASSES| +|08/01/2022 03:29:52| |Vnimanie Kino incoming| +|08/01/2022 03:29:55| |F for the megames we lost| +|08/01/2022 03:29:56| |Not the glasses!| +|08/01/2022 03:29:58| NYET +|08/01/2022 03:29:58| |insured glasses| +|08/01/2022 03:29:59| NYET +|08/01/2022 03:29:59| |Why didn't she have carbon coated glasses?| +|08/01/2022 03:30:01| |GLASSES NOOO| +|08/01/2022 03:30:02| Nyet! +|08/01/2022 03:30:02| NYET +|08/01/2022 03:30:03| F +|08/01/2022 03:30:04| |NOT THE MEGANE| +|08/01/2022 03:30:04| |Megane no more| +|08/01/2022 03:30:05| |Translator's note: nyet means no| +|08/01/2022 03:30:06| |she said russian????| +|08/01/2022 03:30:07| | NYET| +|08/01/2022 03:30:08| ("No!") +|08/01/2022 03:30:10| |NJET MOLOTOFF| +|08/01/2022 03:30:10| F +|08/01/2022 03:30:11| |thanks tl| +|08/01/2022 03:30:11| |Glaases are actually exspensive F| +|08/01/2022 03:30:14| |They havent spent enough time to be carbon coated yet| +|08/01/2022 03:30:14| |Nyet desu| +|08/01/2022 03:30:16| buffer? +|08/01/2022 03:30:19| NYET +|08/01/2022 03:30:21| |What's the appeal of Katyuha again?| +|08/01/2022 03:30:23| NYET +|08/01/2022 03:30:25| |nah it's smooth here| +|08/01/2022 03:30:25| enter +|08/01/2022 03:30:26| IMAGINE +|08/01/2022 03:30:27| |just dodge the tank shells| +|08/01/2022 03:30:30| |BIG NINA CANNON| +|08/01/2022 03:30:31| |balans has entered the chat| +|08/01/2022 03:30:33| UTE +|08/01/2022 03:30:36| |NINA NOOOOOO| +|08/01/2022 03:30:38| |she can struggle but not excape| +|08/01/2022 03:30:38| |Shoot the treads you fucks| +|08/01/2022 03:30:40| KEBITSU +|08/01/2022 03:30:40| blyacht +|08/01/2022 03:30:43| |p-pravdabros... | +|08/01/2022 03:30:45| |the only appeal of katyusha is she comes with nonna| +|08/01/2022 03:30:46| |>appeal of Katyusha // Body and personality duh| +|08/01/2022 03:30:49| |21k let's FUCK it!| +|08/01/2022 03:30:50| |GO DUCKS| +|08/01/2022 03:30:53| |Katushas existence is to be my cocksleeve as I fuck Erika again| +|08/01/2022 03:30:54| |rip in piece nina| +|08/01/2022 03:30:56| |CAM ON DUCKS| +|08/01/2022 03:30:59| rekt +|08/01/2022 03:31:03| |time to BURY!| +|08/01/2022 03:31:05| |THE STUGS ARE MY WIVES| +|08/01/2022 03:31:06| |it's over| +|08/01/2022 03:31:10| |>when the shot isn't guided by Stalin's spirit| +|08/01/2022 03:31:10| |There is still hope Pravda bros!| +|08/01/2022 03:31:12| |$20,000 ON KATYUSHA. PLEASE PLEASE PLEASE| +|08/01/2022 03:31:13| |LETS GO PRAVDA| +|08/01/2022 03:31:15| |The 28-3 of Senshado incoming...| +|08/01/2022 03:31:17| |BASED VOLLEYBALL SQUAD| +|08/01/2022 03:31:22| GUTS +|08/01/2022 03:31:22| |GuP DF6: Return of the Volleyball Club| +|08/01/2022 03:31:24| |SORE SORE SORE| +|08/01/2022 03:31:27| |SORE DA| +|08/01/2022 03:31:29| |Atlanta Falconbros...| +|08/01/2022 03:31:30| GUTS +|08/01/2022 03:31:31| |Volley butts will win the day| +|08/01/2022 03:31:31| |IF PRAVDA LOSES SEND ME TO VORKUTA| +|08/01/2022 03:31:34| |v o l l e y s q u i d| +|08/01/2022 03:31:35| GATSO +|08/01/2022 03:31:36| |we need a pravda championship repeat| +|08/01/2022 03:31:37| GUTS +|08/01/2022 03:31:38| Totsugecxkmy!!!!!!!!!! +|08/01/2022 03:31:39| GUTS +|08/01/2022 03:31:42| |OorariBros im losing hope| +|08/01/2022 03:31:43| nyaa +|08/01/2022 03:31:47| |SEND OOARAI TO GULAG KATYUSHA!!!!| +|08/01/2022 03:31:48| jesus +|08/01/2022 03:31:48| |Guts dont stand a chance against soviet steel!| +|08/01/2022 03:31:49| |MILITARY REPORTS OORAI HANGED AT GITMO, COMPATRIOTS IN CONTROL -Q| +|08/01/2022 03:31:51| |wait why is guts the flag tank| +|08/01/2022 03:31:51| rigged +|08/01/2022 03:31:51| |Where are the nerds?| +|08/01/2022 03:31:53| |Guys I think Oarai is gonna lose.| +|08/01/2022 03:31:54| |its over ooaraibros| +|08/01/2022 03:32:00| |I bet my left ballsacks on Katyusha winning| +|08/01/2022 03:32:00| |sex gulag| +|08/01/2022 03:32:00| |Stalins spitrit will; prevai;l| +|08/01/2022 03:32:01| GUTS +|08/01/2022 03:32:05| |df6 will be hobos vs erika where erika cries while youko snipes them off one by one| +|08/01/2022 03:32:06| |pew pew| +|08/01/2022 03:32:13| |TRUST OARAI'S PLAN| +|08/01/2022 03:32:16| F +|08/01/2022 03:32:16| |I think we're getting the firing squad| +|08/01/2022 03:32:17| |I JUST FEEL MY DREAM| +|08/01/2022 03:32:19| |nonna never misses a shot| +|08/01/2022 03:32:22| |That was for Ivan Denisovich, you commie fucks| +|08/01/2022 03:32:22| |NOOOOOOOO NOT DORIKO| +|08/01/2022 03:32:23| STUGGED +|08/01/2022 03:32:25| rigged +|08/01/2022 03:32:26| |STOP THE COUNT. PRAVDA WON| +|08/01/2022 03:32:26| |commie bros......| +|08/01/2022 03:32:26| STUGGED +|08/01/2022 03:32:28| SHOURI! +|08/01/2022 03:32:28| |Pravdabros... its over...| +|08/01/2022 03:32:28| |4 girls 1 stug| +|08/01/2022 03:32:29| |get stugged| +|08/01/2022 03:32:29| boom +|08/01/2022 03:32:30| who? +|08/01/2022 03:32:30| bro... +|08/01/2022 03:32:30| |OHNONONO COMMIEBROS?| +|08/01/2022 03:32:31| Stuglife +|08/01/2022 03:32:31| |STUG LIFE| +|08/01/2022 03:32:32| NUKED +|08/01/2022 03:32:33| ! +|08/01/2022 03:32:33| |STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUGGGGGGGGGGGG| +|08/01/2022 03:32:35| |NICE SPLICE IDIOT| +|08/01/2022 03:32:35| RIP +|08/01/2022 03:32:35| STUGGED +|08/01/2022 03:32:36| |STOP THE MATCH! RIGGED| +|08/01/2022 03:32:36| |BASED HIPPOS| +|08/01/2022 03:32:37| Nyeeeeeeeeeeeet +|08/01/2022 03:32:37| |STUG STUG STUG| +|08/01/2022 03:32:38| STUGCHADS +|08/01/2022 03:32:40| |STUG LIFE| +|08/01/2022 03:32:40| |(Hit +20)| +|08/01/2022 03:32:40| huh? +|08/01/2022 03:32:41| |STUG STUG STUG| +|08/01/2022 03:32:41| "seamless" +|08/01/2022 03:32:41| |pravada bros????| +|08/01/2022 03:32:41| STUGGED +|08/01/2022 03:32:41| |ENTER ENTER MISSION| +|08/01/2022 03:32:42| |Ohnononono Pravda bros| +|08/01/2022 03:32:42| |DEJA VU| +|08/01/2022 03:32:42| |STUG LIFE| +|08/01/2022 03:32:43| |STUG LIFE| +|08/01/2022 03:32:44| SEAM +|08/01/2022 03:32:45| |haha fuck you oaraifags.... wait| +|08/01/2022 03:32:45| |Hanna 360 no sciope those pravda fucks| +|08/01/2022 03:32:46| DAB +|08/01/2022 03:32:48| StuGCHADS +|08/01/2022 03:32:48| |STUG LIFE STUG LIFE STUG LIFE STUG LIFE STUG LIFE STUG LIFE | +|08/01/2022 03:32:50| |OOARAICHADS.... IM KNEELING| +|08/01/2022 03:32:50| |so what was the discussion like for the week between that cut?| +|08/01/2022 03:32:50| |stalin bros....| +|08/01/2022 03:32:51| STUGG"D! +|08/01/2022 03:32:51| |miho payed the refs wtf!!!| +|08/01/2022 03:32:52| |DUCKS LIVE| +|08/01/2022 03:32:52| |FUCK YEAH| +|08/01/2022 03:32:54| FILLER +|08/01/2022 03:32:55| |SEAMS DOKO| +|08/01/2022 03:32:55| |seamless purely seamless| +|08/01/2022 03:32:56| |COMMIES BTFO| +|08/01/2022 03:32:56| |;______________________; so this is how it ends| +|08/01/2022 03:32:56| |russos get rekt| +|08/01/2022 03:32:58| |why didnt the flag pop?| +|08/01/2022 03:32:58| |HOW HOW HOW HOW HOW| +|08/01/2022 03:32:59| |Katyusha chads... what went wrong?| +|08/01/2022 03:32:59| |COMMIES BTFO| +|08/01/2022 03:33:01| |russia lost again| +|08/01/2022 03:33:01| |THEY DID IT| +|08/01/2022 03:33:01| WIN +|08/01/2022 03:33:01| |LETS FUCKING GOOOOOOOOOOOOOOOO| +|08/01/2022 03:33:01| |WE WIN AGAIN BROS| +|08/01/2022 03:33:01| SEAMFULJ +|08/01/2022 03:33:02| |Nice one pravdabros now face the wall| +|08/01/2022 03:33:02| |I LOVE IT WHEN A PLAN COMES TOGETHER| +|08/01/2022 03:33:03| |DEMOCRACY WINS AGAIN BABY| +|08/01/2022 03:33:04| |wtf I spent my life's savings on pravdacoin| +|08/01/2022 03:33:04| ALIVE +|08/01/2022 03:33:04| ez +|08/01/2022 03:33:05| speechless +|08/01/2022 03:33:06| BANZAI +|08/01/2022 03:33:06| ALIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIVE +|08/01/2022 03:33:06| BANZAI +|08/01/2022 03:33:07| |WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOARI| +|08/01/2022 03:33:07| rigged +|08/01/2022 03:33:07| |CUMMIES LOST| +|08/01/2022 03:33:07| :_: +|08/01/2022 03:33:07| SUGOI +|08/01/2022 03:33:07| |All my savings ;________;| +|08/01/2022 03:33:08| |BETTER DEAD THAN READ| +|08/01/2022 03:33:08| |My money noooooooooo| +|08/01/2022 03:33:08| |STOP THE COUNT| +|08/01/2022 03:33:10| RIGGED +|08/01/2022 03:33:10| |FAK U COMMIE TRASH| +|08/01/2022 03:33:10| |STUGGGGG :DDDDDDDDDD| +|08/01/2022 03:33:11| BANZAI +|08/01/2022 03:33:11| bs +|08/01/2022 03:33:11| |katyusha is gonna start crying| +|08/01/2022 03:33:11| |BASED BASED BASED BASED| +|08/01/2022 03:33:12| BANZAI +|08/01/2022 03:33:12| |nippon panzer folded 1000 times| +|08/01/2022 03:33:12| ;-; +|08/01/2022 03:33:12| BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 03:33:12| BANZAI +|08/01/2022 03:33:12| |COMMIES REKT| +|08/01/2022 03:33:12| LMAO +|08/01/2022 03:33:13| |UOOOOOOOOOH ;_;| +|08/01/2022 03:33:13| |damn female kid| +|08/01/2022 03:33:15| ;_; +|08/01/2022 03:33:15| ;_; +|08/01/2022 03:33:16| |EAT SHIT| +|08/01/2022 03:33:16| |Oorai on;ly wins because of plot armour| +|08/01/2022 03:33:16| |LENIN A SHIT| +|08/01/2022 03:33:16| |BETTER DEAD THAN RED| +|08/01/2022 03:33:17| banzi +|08/01/2022 03:33:17| ASSPULL +|08/01/2022 03:33:17| :___: +|08/01/2022 03:33:17| ;_; +|08/01/2022 03:33:18| Stuglife +|08/01/2022 03:33:18| |YEAH CRY LOLI SLUT| +|08/01/2022 03:33:18| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 03:33:18| |pravdabros we got too cocky| +|08/01/2022 03:33:18| |CRY MORE| +|08/01/2022 03:33:18| |poor kid| +|08/01/2022 03:33:18| |delicious commie tears| +|08/01/2022 03:33:19| |HOW CAN THIS HAPPEN. THIS WAS OUR YEAR| +|08/01/2022 03:33:19| |PravdaBros they can't keep getting away with this| +|08/01/2022 03:33:21| |EVERYONE LAUGHT AT THIS FUCKING LOSER| +|08/01/2022 03:33:21| |the only good commie is a dead commie| +|08/01/2022 03:33:22| |NOOOOOOO MY DACHA IN SOCHI IS GONE| +|08/01/2022 03:33:22| |Get fucked midget, jk ily| +|08/01/2022 03:33:23| YATTA +|08/01/2022 03:33:23| |CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM| +|08/01/2022 03:33:23| BANZAI +|08/01/2022 03:33:24| |rip kat| +|08/01/2022 03:33:25| |spanking punishment time| +|08/01/2022 03:33:26| |MR LOLICHOV TEAR DOWN THAT WALL| +|08/01/2022 03:33:26| ;________: +|08/01/2022 03:33:26| |u mad?| +|08/01/2022 03:33:26| |FUCK COMMIES| +|08/01/2022 03:33:27| |FUCCK COMMIES| +|08/01/2022 03:33:28| |START CRYING MIDGET| +|08/01/2022 03:33:28| DUMBTYUSHA +|08/01/2022 03:33:30| |Reminder: inTHAT doujin Ktyusha is shot by Nonna| +|08/01/2022 03:33:31| BANZIA +|08/01/2022 03:33:31| ;_; +|08/01/2022 03:33:32| leninbros... +|08/01/2022 03:33:32| BANZAI +|08/01/2022 03:33:34| ;_; +|08/01/2022 03:33:34| |LOLI BTFO| +|08/01/2022 03:33:34| |MAXIMUM CAPITALISM!| +|08/01/2022 03:33:36| |CAPITALISM WINS AGAIN| +|08/01/2022 03:33:37| |Pap Stalin is going to be pissed| +|08/01/2022 03:33:37| ;______: +|08/01/2022 03:33:38| |CAPITALISM VICTORIOUS AGAIN| +|08/01/2022 03:33:38| midge +|08/01/2022 03:33:41| |6' VS 5'11| +|08/01/2022 03:33:41| |>its over...| +|08/01/2022 03:33:42| DOZO +|08/01/2022 03:33:42| |COMMUNISM BTFO AMERICA WINS| +|08/01/2022 03:33:44| |miniskirts in the snow is Japan's gift to the world| +|08/01/2022 03:33:45| |I actually liked THAT doujin pretty unironically| +|08/01/2022 03:33:45| |GOMMUNISM BTFO| +|08/01/2022 03:33:45| b-baka +|08/01/2022 03:33:45| |Katyusha will suck on nonna's tits tonight for consolation| +|08/01/2022 03:33:46| |Pravda tsars...| +|08/01/2022 03:33:47| |that's what stalin thought too| +|08/01/2022 03:33:48| |TONY KAKU| +|08/01/2022 03:33:48| V +|08/01/2022 03:33:51| |>when Lenin can't see us now| +|08/01/2022 03:33:53| |cute gremlim| +|08/01/2022 03:33:53| |cute dere!| +|08/01/2022 03:33:53| |The march of capitalism cannot be opposed!| +|08/01/2022 03:33:53| |SHE HATES IT| +|08/01/2022 03:33:54| F +|08/01/2022 03:33:56| |SEETHE KATYUSHA| +|08/01/2022 03:33:57| |now that the snow has settled, what went wrong?| +|08/01/2022 03:33:57| >over +|08/01/2022 03:33:57| |IT'S JUST LIKE THE BERLIN WALL| +|08/01/2022 03:33:58| |>ooarai >capitalism| +|08/01/2022 03:33:59| |so many would have losts| +|08/01/2022 03:34:00| |How did Stalin loose?| +|08/01/2022 03:34:00| |Uh which one's Raskolnikov?| +|08/01/2022 03:34:00| |Who's that Tony Kaku?| +|08/01/2022 03:34:01| |Uma Noona| +|08/01/2022 03:34:02| |A CUTE!| +|08/01/2022 03:34:03| |cope and seethe| +|08/01/2022 03:34:05| |god i wish communism was defeated in my country ;-;| +|08/01/2022 03:34:06| |LOLI ONAHOLE| +|08/01/2022 03:34:07| |Tony Kaku| +|08/01/2022 03:34:09| o7 +|08/01/2022 03:34:10| KUYASHII +|08/01/2022 03:34:10| |>ooarai >capitalism| +|08/01/2022 03:34:11| |why is she so small? malnourishment?| +|08/01/2022 03:34:12| |lol midget| +|08/01/2022 03:34:13| |my wife maho| +|08/01/2022 03:34:14| |SHIHO REKT| +|08/01/2022 03:34:14| o/ +|08/01/2022 03:34:14| |>Tony's cock| +|08/01/2022 03:34:15| |10 second personality change| +|08/01/2022 03:34:15| |cute kid| +|08/01/2022 03:34:16| |my maho wife| +|08/01/2022 03:34:16| |EAT SHIT SHIHO| +|08/01/2022 03:34:17| |SKILLZ MOM| +|08/01/2022 03:34:17| prolebros... +|08/01/2022 03:34:18| |PURE SKILL| +|08/01/2022 03:34:19| |PAT HER INSTEAED| +|08/01/2022 03:34:19| |same level| +|08/01/2022 03:34:20| |100% skill| +|08/01/2022 03:34:20| MAHOOOOOO +|08/01/2022 03:34:21| |>127 cm| +|08/01/2022 03:34:21| |OUT FUCKING SKILLED| +|08/01/2022 03:34:24| |SHIHO COPING| +|08/01/2022 03:34:24| IMAGINE +|08/01/2022 03:34:25| |All this talk about Tony Kaku but nobody remembers best girl Beth Suni| +|08/01/2022 03:34:26| |Kaytusha-san, TEAR DOWN THIS WALL| +|08/01/2022 03:34:27| hai +|08/01/2022 03:34:29| |triumph of skill| +|08/01/2022 03:34:29| JADOU +|08/01/2022 03:34:29| HERESY +|08/01/2022 03:34:31| |Maho is such a good girl| +|08/01/2022 03:34:31| HERESY +|08/01/2022 03:34:31| |BURN THE WITCH| +|08/01/2022 03:34:32| cope +|08/01/2022 03:34:32| HERESY! +|08/01/2022 03:34:34| |fuck you mommy| +|08/01/2022 03:34:34| HERESY +|08/01/2022 03:34:34| |Loli bully not so tough after being beaten| +|08/01/2022 03:34:35| |nishizumi style actually just sucks| +|08/01/2022 03:34:36| |giver her some credit shiho| +|08/01/2022 03:34:37| |>Teamwork is heresy'| +|08/01/2022 03:34:37| |SHIHO STOP BEING A BITCH| +|08/01/2022 03:34:37| |dumb mom| +|08/01/2022 03:34:37| |>Beth SUni| +|08/01/2022 03:34:38| |Oh shut up Shiho| +|08/01/2022 03:34:38| |"skill" lol| +|08/01/2022 03:34:41| |I WANT TO BE MIHO AND MAHO'S STEP DADDY| +|08/01/2022 03:34:42| >heresy +|08/01/2022 03:34:44| |I can't believe we won OorariBros| +|08/01/2022 03:34:46| BLASPHEMER!! +|08/01/2022 03:34:47| |HARD WORK NEVER WINS| +|08/01/2022 03:34:47| HERESY +|08/01/2022 03:34:48| |WE ARE THE CHAMPIONS!| +|08/01/2022 03:34:48| |I forgot how fucked up shiho is| +|08/01/2022 03:34:52| |What the fuck is a Tiny kaku?| +|08/01/2022 03:35:00| teega +|08/01/2022 03:35:01| |pour one out for Pravda, comrades| +|08/01/2022 03:35:01| |black forest ham| +|08/01/2022 03:35:02| >tiny +|08/01/2022 03:35:02| |yeah shiho is a legit pyscho| +|08/01/2022 03:35:02| |Little brother of tony kaku| +|08/01/2022 03:35:02| |MAHO TIME| +|08/01/2022 03:35:03| |Shiho is truly the worst mom in anime| +|08/01/2022 03:35:08| |Don't be like Shiho. Be more like Yukari-mom| +|08/01/2022 03:35:09| |tomo kaku's brother| +|08/01/2022 03:35:11| |kino match| +|08/01/2022 03:35:13| |Haters prayin for my downfall...| +|08/01/2022 03:35:13| |20 tanks!!| +|08/01/2022 03:35:18| teeegar +|08/01/2022 03:35:21| |discount tank dealership| +|08/01/2022 03:35:22| |its over ooarai bros. we cant possibly win against kmm| +|08/01/2022 03:35:28| |Fuck I'm so sleepy what the fuckkk| +|08/01/2022 03:35:31| Hoshino! +|08/01/2022 03:35:32| |They actually BOUGHT the Hetzer kit??| +|08/01/2022 03:35:33| |TIGER PANTHER JAGDPANTHER| +|08/01/2022 03:35:35| |Just race the other schools for pinks| +|08/01/2022 03:35:35| |I can't believe it's fucking over bros| +|08/01/2022 03:35:35| |man ima sleep| +|08/01/2022 03:35:36| |ooraibros we got too cocky| +|08/01/2022 03:35:37| |its only 8:30| +|08/01/2022 03:35:38| |it's only 2:30am| +|08/01/2022 03:35:39| 3:33 +|08/01/2022 03:35:44| Sucky +|08/01/2022 03:35:44| >hybrid +|08/01/2022 03:35:45| |BEST CLUB INCOMING| +|08/01/2022 03:35:46| |YEAR OF TIGER| +|08/01/2022 03:35:46| |>Yeah it's actually a Porsche Tiger, sorry...| +|08/01/2022 03:35:47| |4:33 here| +|08/01/2022 03:35:47| |BEST CLUB WITH THE BEST TANK| +|08/01/2022 03:35:48| |it's only 1333h| +|08/01/2022 03:35:51| |JOB INCOMING| +|08/01/2022 03:35:51| |23:33 here| +|08/01/2022 03:35:51| LEOPON +|08/01/2022 03:35:52| |RARE RARE RARE RARE| +|08/01/2022 03:35:52| porenter +|08/01/2022 03:35:53| |who else here /6:30/| +|08/01/2022 03:35:54| |it's only 2:33| +|08/01/2022 03:35:54| |moshi moshi| +|08/01/2022 03:35:54| >Porsche +|08/01/2022 03:35:55| |NICE "TANK" IDIOTS LMFAO GERMAN ENGINEERING FTL| +|08/01/2022 03:35:55| |PORSCHE TIGER!| +|08/01/2022 03:35:55| |LEOPON BEST TEAM| +|08/01/2022 03:35:57| |It's 4:33 faggots| +|08/01/2022 03:35:57| |How will they even dream of defeating Superiour German Engineering| +|08/01/2022 03:36:00| Fire +|08/01/2022 03:36:01| |>ya we got that big single 2JZ in there | +|08/01/2022 03:36:01| PORSCHE +|08/01/2022 03:36:01| |PORSHE BROS...| +|08/01/2022 03:36:01| |9:30 est bros| +|08/01/2022 03:36:02| |\/o/'s year baby| +|08/01/2022 03:36:03| buffering +|08/01/2022 03:36:04| |SUPERIOR GERMAN ENGINEERING| +|08/01/2022 03:36:05| |0333 gang king of hours| +|08/01/2022 03:36:05| |LE TIGRE? BLUE FRERRARI? IT'S THE SAME LOOK | +|08/01/2022 03:36:07| |COOL TANK| +|08/01/2022 03:36:07| germanbros... +|08/01/2022 03:36:08| >Porsche +|08/01/2022 03:36:08| HOSHINO +|08/01/2022 03:36:08| |the piece of shit that is the porsche tiger| +|08/01/2022 03:36:08| Sxarp.............. +|08/01/2022 03:36:09| |oh nono| +|08/01/2022 03:36:09| |Porche Tiger-quality stream...| +|08/01/2022 03:36:09| |GERMAN ENGINEERING STRONK| +|08/01/2022 03:36:09| |BEST TANK OPERATED BY BEST CLUB| +|08/01/2022 03:36:09| |FLEXIN IN A PORSCHE, GET GOOD POORFAGS| +|08/01/2022 03:36:10| |buff team| +|08/01/2022 03:36:11| |the Tiger really does sound sexy in this show| +|08/01/2022 03:36:11| propaganda +|08/01/2022 03:36:11| (笑) +|08/01/2022 03:36:12| 😂😂😂 +|08/01/2022 03:36:12| |EST BROS ARE BEST BROS| +|08/01/2022 03:36:12| |PORSCHE TIGER| +|08/01/2022 03:36:13| RARE +|08/01/2022 03:36:13| VTOL +|08/01/2022 03:36:14| krauts... +|08/01/2022 03:36:16| |BREAKING SO HARD ITS BUFFERING| +|08/01/2022 03:36:16| |PM bros wya| +|08/01/2022 03:36:16| |based porsche overengineering| +|08/01/2022 03:36:16| wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +|08/01/2022 03:36:17| |Sxarp lost home....| +|08/01/2022 03:36:18| |Porsche bros| +|08/01/2022 03:36:20| |LEOPON BEST TEAM| +|08/01/2022 03:36:20| |BURN BABY BURN| +|08/01/2022 03:36:23| |But Tiger P looks cute so it's okay isn't it| +|08/01/2022 03:36:23| 草 +|08/01/2022 03:36:24| |2034 here still good to go the rest of the night| +|08/01/2022 03:36:25| |just add more armour| +|08/01/2022 03:36:26| |FUN IS YOUR ENEMY| +|08/01/2022 03:36:27| |>german engineering best in the world| +|08/01/2022 03:36:27| |>When you can walk faster than the fucking tank| +|08/01/2022 03:36:27| RERA +|08/01/2022 03:36:28| |oh great,it's dead| +|08/01/2022 03:36:29| |DEUTSCH QUALITÄT| +|08/01/2022 03:36:29| |PRECISION GERMAN ENGINEERING| +|08/01/2022 03:36:29| |So this is the power of electric drive| +|08/01/2022 03:36:29| |FUN IS THE ENEMY| +|08/01/2022 03:36:30| |ahh i missed the porsche skit| +|08/01/2022 03:36:31| SXAAAAARP +|08/01/2022 03:36:32| |TANNED TOMBOY WAIFU CLUB| +|08/01/2022 03:36:33| |STOP HAVING FUN| +|08/01/2022 03:36:34| |PM chads| +|08/01/2022 03:36:35| |NO FUN ALLOWED | +|08/01/2022 03:36:35| |>german engineering| +|08/01/2022 03:36:36| |>loved by all| +|08/01/2022 03:36:37| |DON'T HAVE FUN| +|08/01/2022 03:36:37| |sodomy for sodoko| +|08/01/2022 03:36:39| AZUSAAA!!! +|08/01/2022 03:36:40| Slander +|08/01/2022 03:36:41| |NO FUUUUUUN| +|08/01/2022 03:36:42| |you know, i'm starting to get tired of ooaraiwinslol, hope it doesn't continue too long| +|08/01/2022 03:36:44| |the carfags manning a porsche tank is absolute SOVL| +|08/01/2022 03:36:46| |STOP HAVING FUN| +|08/01/2022 03:36:48| |>unused tanks| +|08/01/2022 03:36:50| |FUN IS AN ENEMY OF THE STATE| +|08/01/2022 03:36:51| |space case Saki| +|08/01/2022 03:36:52| |Stay indoors| +|08/01/2022 03:36:53| |TANKS COULD BE ANYWHERE| +|08/01/2022 03:36:54| |02:33am here, will go on no matter| +|08/01/2022 03:36:55| |love sodoko (sexually)| +|08/01/2022 03:36:55| |damn female kid| +|08/01/2022 03:36:56| |Tanned girlls best grills| +|08/01/2022 03:36:58| |>thigh high socks -- good lord| +|08/01/2022 03:36:58| |No fun| +|08/01/2022 03:36:58| |FUN IS THE ENEMY OF WINNING| +|08/01/2022 03:36:58| >HETSHIT +|08/01/2022 03:36:58| |HETZER HYPE| +|08/01/2022 03:36:59| |SAKI THE GAWD| +|08/01/2022 03:36:59| |PLEASE CHECK YOUR CLOSETS FOR SPARE TANKS| +|08/01/2022 03:37:00| |lovely name| +|08/01/2022 03:37:01| |>upgrade kit| +|08/01/2022 03:37:03| RE:CZECHNOLOGY +|08/01/2022 03:37:03| |>no local tank recycling girsl| +|08/01/2022 03:37:03| |i saw it| +|08/01/2022 03:37:03| |ALMOST 4AM| +|08/01/2022 03:37:04| |So now that the dust has settled; how much Yuuki fucks her boyfriend| +|08/01/2022 03:37:04| |Anzu is flat| +|08/01/2022 03:37:05| |hetzers gonna hetz| +|08/01/2022 03:37:06| sodomyko +|08/01/2022 03:37:08| www +|08/01/2022 03:37:09| |13:35 in best australia| +|08/01/2022 03:37:09| |yuuki-chan is SLUT| +|08/01/2022 03:37:11| flat +|08/01/2022 03:37:11| ganers +|08/01/2022 03:37:12| |g-gamer girl...| +|08/01/2022 03:37:12| |Who's this smelly girl?| +|08/01/2022 03:37:12| |WHAT IS THIS NERD DOING HERE| +|08/01/2022 03:37:12| ENTER +|08/01/2022 03:37:13| HIDOI +|08/01/2022 03:37:14| HETZER +|08/01/2022 03:37:14| |Imagine just walking around town picking up lonely tanks| +|08/01/2022 03:37:16| |Tanned tomboys 4ever| +|08/01/2022 03:37:16| ここに日本語に入れられます!!!!! +|08/01/2022 03:37:16| |LITERALLY ME| +|08/01/2022 03:37:17| /ourguys/ +|08/01/2022 03:37:17| |it's cute| +|08/01/2022 03:37:17| |GAMER GIRL| +|08/01/2022 03:37:18| >austrailia +|08/01/2022 03:37:19| |sex with anzu| +|08/01/2022 03:37:20| neets +|08/01/2022 03:37:21| NEEERD! +|08/01/2022 03:37:21| |End extrovert privilege!| +|08/01/2022 03:37:22| CUTE +|08/01/2022 03:37:22| GAMERS +|08/01/2022 03:37:23| |HETZERS GONNA HETZ| +|08/01/2022 03:37:23| |Smelly gamer girl...| +|08/01/2022 03:37:24| |SOMEONE GET THE NERD OUT OF THE SCENE GOD| +|08/01/2022 03:37:24| |GET HUGE| +|08/01/2022 03:37:24| |get your boostie aussie| +|08/01/2022 03:37:25| |go home gamer girl| +|08/01/2022 03:37:25| GAMER +|08/01/2022 03:37:25| |ANZU LOVE| +|08/01/2022 03:37:27| |imagine what anteater team's tank smells like| +|08/01/2022 03:37:27| /ourgamers/ +|08/01/2022 03:37:28| |GIV CREEPY KOT GF| +|08/01/2022 03:37:30| THATTTT +|08/01/2022 03:37:30| >that +|08/01/2022 03:37:30| |I'm going to fuck Anzu| +|08/01/2022 03:37:31| |GAMERS RISE UP| +|08/01/2022 03:37:31| |dibs on the nekonyaa| +|08/01/2022 03:37:33| NERRRRRRRRRRRRRRRRDDDDDDDDDDD +|08/01/2022 03:37:34| |GO HOME GAMER GIRL| +|08/01/2022 03:37:35| |gamer sight| +|08/01/2022 03:37:36| |WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GI| +|08/01/2022 03:37:38| |Nice ts bb ;)| +|08/01/2022 03:37:39| |>Its just there| +|08/01/2022 03:37:40| |Australia isn't real anon| +|08/01/2022 03:37:40| |NEW TANK| +|08/01/2022 03:37:44| |THAT one| +|08/01/2022 03:37:44| |gamers out| +|08/01/2022 03:37:45| 日本語ってなに +|08/01/2022 03:37:45| |Gamer girl most swole girl| +|08/01/2022 03:37:46| |anzu is my side piece| +|08/01/2022 03:37:47| |THAT one| +|08/01/2022 03:37:48| |>They targeted gamers...| +|08/01/2022 03:37:50| HOSHINO! +|08/01/2022 03:37:50| |CUTE GREEN EYED WIFE| +|08/01/2022 03:37:50| |Nekonya will rip you in half| +|08/01/2022 03:37:50| |>ywn purchase an AFV from webuyanycar.com| +|08/01/2022 03:37:50| YAAAAAAAASSSS +|08/01/2022 03:37:51| |BASED TEAM| +|08/01/2022 03:37:53| THAT? +|08/01/2022 03:37:55| DORIFUTO +|08/01/2022 03:37:55| |SEXY TAN| +|08/01/2022 03:37:55| |DORIFTO DORIFTO| +|08/01/2022 03:37:56| |ireland should have joined ww2 | +|08/01/2022 03:37:57| dorifto +|08/01/2022 03:37:57| |hybrid powaaaaaa| +|08/01/2022 03:37:57| |chink shit | +|08/01/2022 03:37:58| |HOSHINO MY WIFE| +|08/01/2022 03:37:59| DORIFTO +|08/01/2022 03:37:59| > +|08/01/2022 03:37:59| HOSHINO +|08/01/2022 03:38:00| |WORTH IT| +|08/01/2022 03:38:01| TAN +|08/01/2022 03:38:01| DORIFTO +|08/01/2022 03:38:02| |b l a c k| +|08/01/2022 03:38:03| |NIGHT OF FIRE| +|08/01/2022 03:38:03| |soo many tomboys.....| +|08/01/2022 03:38:03| |OOARAI DORIFUTO| +|08/01/2022 03:38:04| |fixing tanks by washing them| +|08/01/2022 03:38:04| LEWD +|08/01/2022 03:38:05| |Initial T| +|08/01/2022 03:38:06| dorfito +|08/01/2022 03:38:07| :o +|08/01/2022 03:38:08| |>Australia >land hooks| +|08/01/2022 03:38:08| |DEJAU VU| +|08/01/2022 03:38:09| |>can't drift in a tank| +|08/01/2022 03:38:09| 日本語は日本語ですよー +|08/01/2022 03:38:10| |LEOPON BEST| +|08/01/2022 03:38:10| DORIFUTO +|08/01/2022 03:38:10| DORIFTO +|08/01/2022 03:38:11| |>electric transmission| +|08/01/2022 03:38:12| TSUCHIYA +|08/01/2022 03:38:14| |brown girls.....| +|08/01/2022 03:38:15| DURIFTOOO +|08/01/2022 03:38:16| DORIFTO +|08/01/2022 03:38:16| DORIFTO +|08/01/2022 03:38:17| Nerds +|08/01/2022 03:38:17| |>online friends| +|08/01/2022 03:38:17| CUTE +|08/01/2022 03:38:19| nerds +|08/01/2022 03:38:20| |GAMER GIRLS| +|08/01/2022 03:38:20| >GAYMERS +|08/01/2022 03:38:20| >/v/ermin +|08/01/2022 03:38:21| |WoT BROS WHO HERE| +|08/01/2022 03:38:21| KAKKOIII +|08/01/2022 03:38:22| based! +|08/01/2022 03:38:23| |The fuck is that on her eye | +|08/01/2022 03:38:24| |World of SPG| +|08/01/2022 03:38:25| |KANSEI DORIFTO| +|08/01/2022 03:38:25| |>ONLINE TANK GAME| +|08/01/2022 03:38:25| |cute momoga!| +|08/01/2022 03:38:26| piyotan! +|08/01/2022 03:38:26| |there is no good tank game yet| +|08/01/2022 03:38:27| |THE FIT GAYMERS| +|08/01/2022 03:38:27| |Tanned goddess| +|08/01/2022 03:38:27| |O-ooarai Dorifto?!?| +|08/01/2022 03:38:28| |based rounded gamer shoulders| +|08/01/2022 03:38:28| hehehe +|08/01/2022 03:38:30| |THEY ARE US BROS| +|08/01/2022 03:38:30| |A momo obviously| +|08/01/2022 03:38:31| |I WISH WE PLAYED TOGETHER| +|08/01/2022 03:38:32| |war thunder > wot| +|08/01/2022 03:38:33| |big titty gamer girl piyotan| +|08/01/2022 03:38:34| |dark flame master| +|08/01/2022 03:38:35| >sauce +|08/01/2022 03:38:35| /fitv/ +|08/01/2022 03:38:36| |CUTE DORKS| +|08/01/2022 03:38:36| |AWESOME SAUCE| +|08/01/2022 03:38:37| >WoT +|08/01/2022 03:38:38| |WOW THIS IS JUST LIKE MY BIDEO GAMES| +|08/01/2022 03:38:38| CZECHNOLOGY +|08/01/2022 03:38:39| |it's an /a/ team| +|08/01/2022 03:38:39| ORAI +|08/01/2022 03:38:40| |>these fucking nerds| +|08/01/2022 03:38:40| |riaru hajimemashite| +|08/01/2022 03:38:41| |OO RAI| +|08/01/2022 03:38:42| |wait they didnt know each other before? lol i forgot that| +|08/01/2022 03:38:45| |Can't wait till they get stronk af in S2| +|08/01/2022 03:38:46| |How often do the gamer girls bathe?| +|08/01/2022 03:38:46| |do they ERP?| +|08/01/2022 03:38:47| |BEST TANK COMING THROUGH | +|08/01/2022 03:38:47| |let's play some tanks /a/| +|08/01/2022 03:38:49| |FUCKIN RIAJUS| +|08/01/2022 03:38:50| |/fitv/ will win Das 4| +|08/01/2022 03:38:50| |MAJI YABAI| +|08/01/2022 03:38:51| |awesome sauce| +|08/01/2022 03:38:54| |cute gamers| +|08/01/2022 03:38:54| aah +|08/01/2022 03:38:55| OORAI +|08/01/2022 03:38:55| |>mark IV| +|08/01/2022 03:38:56| |Anzu eating again| +|08/01/2022 03:39:00| |Czechnology is so powerful, can't wait for them to unfuck Colt| +|08/01/2022 03:39:00| |MAKO BEST| +|08/01/2022 03:39:02| |imagine the smell of taking all three at once| +|08/01/2022 03:39:02| fweeeeeeeeeeeeeeeeeeeeeeeeee +|08/01/2022 03:39:02| |>not Sprocket| +|08/01/2022 03:39:02| |Of course they ERP, that's why they were so embarrassed| +|08/01/2022 03:39:02| |what tank would the /a/ team use?| +|08/01/2022 03:39:03| yukari..................... +|08/01/2022 03:39:05| |BEST GIRL| +|08/01/2022 03:39:05| |>Panzer IV | +|08/01/2022 03:39:06| |Best granny| +|08/01/2022 03:39:12| |marko four| +|08/01/2022 03:39:14| |Thanks granny| +|08/01/2022 03:39:15| |/a/ would use the bob semple| +|08/01/2022 03:39:16| |BASED GRANNY| +|08/01/2022 03:39:18| |OBA SAMA NEVER DIES| +|08/01/2022 03:39:21| |GuP has best montages| +|08/01/2022 03:39:21| |FLOOF SPOTTED| +|08/01/2022 03:39:21| |miho-san, i just shit myself| +|08/01/2022 03:39:22| |/a/ team would use the shittiest tank available| +|08/01/2022 03:39:22| |DATE ZITH HANQ| +|08/01/2022 03:39:25| |True best girl and grandmother in law| +|08/01/2022 03:39:35| |based bob semple anon| +|08/01/2022 03:39:36| |20 lloyd tankettes| +|08/01/2022 03:39:37| |My wife loves flowers| +|08/01/2022 03:39:37| |What is the shittiest tank? inb4 muh bob semple| +|08/01/2022 03:39:38| |/a/'s tank would STINK| +|08/01/2022 03:39:42| Steaky +|08/01/2022 03:39:42| |take it or leave it| +|08/01/2022 03:39:43| STEAKY +|08/01/2022 03:39:43| |FLOWER DATE| +|08/01/2022 03:39:44| |only 4 from /a/ would be allowed| +|08/01/2022 03:39:47| |Is threw gonna be a break between the series and movies?| +|08/01/2022 03:39:48| |the anzio tankettes| +|08/01/2022 03:39:51| STEAKY +|08/01/2022 03:39:55| DRINK +|08/01/2022 03:39:55| Tomk +|08/01/2022 03:39:55| |Back it up a minute, I had to pee| +|08/01/2022 03:39:56| STICKY +|08/01/2022 03:39:57| |I want to sniff Hana's flower. | +|08/01/2022 03:39:57| STEAKY +|08/01/2022 03:39:57| |FLOWER TANK| +|08/01/2022 03:39:59| STEAKY +|08/01/2022 03:39:59| SUGOI +|08/01/2022 03:39:59| |wheres the 4chan cup but tanks instead of soccer| +|08/01/2022 03:40:00| |>a fucking tank| +|08/01/2022 03:40:01| |Is this a recreation of Patton's last drive?| +|08/01/2022 03:40:01| |it's alright at best| +|08/01/2022 03:40:02| Kirei +|08/01/2022 03:40:03| |If we're the /a/team, I call Hannibal's role| +|08/01/2022 03:40:10| SUGOI +|08/01/2022 03:40:10| |TL Note: Hana means flower| +|08/01/2022 03:40:12| |>like you| +|08/01/2022 03:40:13| |This would be a sweet scene if I gave a fuck about Hana| +|08/01/2022 03:40:13| |>not crewing an armored John Deere tractor| +|08/01/2022 03:40:14| |Hourly reminder to hydrate| +|08/01/2022 03:40:14| |cute flowers but what about tht tanks?| +|08/01/2022 03:40:15| EXPLOSION +|08/01/2022 03:40:17| |thanks tl| +|08/01/2022 03:40:18| |thanks tl| +|08/01/2022 03:40:18| |is every single girl autistic?| +|08/01/2022 03:40:19| |Thanks TL | +|08/01/2022 03:40:20| |guys can you pause the stream i have to go to my dad's funeral| +|08/01/2022 03:40:21| |TL Note: Hana means Hana| +|08/01/2022 03:40:22| |THERE'S THE TANK| +|08/01/2022 03:40:24| |TL NOTE: hana means "nose"| +|08/01/2022 03:40:24| HAAAAAAAAAAAAAAAAAGGGGGGGGGGGGGG +|08/01/2022 03:40:27| |4chan senshado when?| +|08/01/2022 03:40:28| |thanks tl| +|08/01/2022 03:40:29| womanlet +|08/01/2022 03:40:30| Autism +|08/01/2022 03:40:31| |femcel mom| +|08/01/2022 03:40:32| |>90% of the /a/ team has to shield the tank with their bodies| +|08/01/2022 03:40:32| |tanks tl | +|08/01/2022 03:40:35| |hana means aaaaaaaaaaaaaaaaaaaaaaa| +|08/01/2022 03:40:36| |big hana| +|08/01/2022 03:40:40| k +|08/01/2022 03:40:42| |BROKE NEW GROUNDDDDDDD| +|08/01/2022 03:40:43| |yuri redemption arc| +|08/01/2022 03:40:43| :D +|08/01/2022 03:40:43| |hana means hana| +|08/01/2022 03:40:45| mommy +|08/01/2022 03:40:46| CUTE +|08/01/2022 03:40:46| |SEX with HANA'S MOM| +|08/01/2022 03:40:47| |thanks mom| +|08/01/2022 03:40:47| |No longer disowned| +|08/01/2022 03:40:48| |FLOWER ARRANGEMENT REVOLUTION!| +|08/01/2022 03:40:48| |It'd be fun to run some 4chan gup tournament| +|08/01/2022 03:40:49| RECONCILIATION +|08/01/2022 03:40:49| |CHARACTER DEVELOPMENT| +|08/01/2022 03:40:49| |my cute wife hana is so cute| +|08/01/2022 03:40:50| |SHE BROKE NEW GROUUUUUND| +|08/01/2022 03:40:51| |hana tarkoittaa hanaa| +|08/01/2022 03:40:51| |wow this is like le character development| +|08/01/2022 03:40:57| |you bring great shame to your famiry| +|08/01/2022 03:40:58| |SHE BROKE NEW GROUND| +|08/01/2022 03:40:59| butt +|08/01/2022 03:41:00| volleybutt +|08/01/2022 03:41:00| |TAEKO BUTT| +|08/01/2022 03:41:01| |thighs and BUTTE| +|08/01/2022 03:41:01| |everyone on /a/ is a little girl so itl fi| +|08/01/2022 03:41:02| |hana : DDDDDDDDDDDDDDDDDDDD| +|08/01/2022 03:41:02| |>no longer disowned >reowned| +|08/01/2022 03:41:06| |we did it Hanabros| +|08/01/2022 03:41:06| volleybutts +|08/01/2022 03:41:06| |90% of the /a/ team would be too fat to enter the tank| +|08/01/2022 03:41:09| |Tanks and flowers aren't so different after all... | +|08/01/2022 03:41:09| |that's not an apology| +|08/01/2022 03:41:12| |Just did a rancid booze fart lads| +|08/01/2022 03:41:12| |PANZER VOR!| +|08/01/2022 03:41:17| |So nobody thought about a tankpot before?| +|08/01/2022 03:41:22| |90% of /a/ is shaped like a p-47| +|08/01/2022 03:41:23| |thanks for the info anon| +|08/01/2022 03:41:25| |Miho has an announcement:| +|08/01/2022 03:41:28| |/sp/ has shitty football simulation tournaments so why don't we have tanks| +|08/01/2022 03:41:30| |will miho have a friendly conversation with shiho before the series ends?| +|08/01/2022 03:41:30| |>his body isn't a (fat-)tank on its own| +|08/01/2022 03:41:32| TRAITOR +|08/01/2022 03:41:32| |lads, post scriptum has real senshado mod| +|08/01/2022 03:41:34| |EVERYONE I HAVE AN ANNOUNCEMENT| +|08/01/2022 03:41:35| butte +|08/01/2022 03:41:35| |THAT's A HUGE BITCH | +|08/01/2022 03:41:35| |nigger forest | +|08/01/2022 03:41:36| |nice butt| +|08/01/2022 03:41:38| |Change your pants, boozefarter.| +|08/01/2022 03:41:41| |the /a/ team would succumb to social anxiety the moment they made contact with the enemy| +|08/01/2022 03:41:45| AH +|08/01/2022 03:41:46| |Hana is avant-garde florist confirmed| +|08/01/2022 03:41:47| |I'm making an online gup ttrpg but it's gnna suck ass| +|08/01/2022 03:41:50| |miho used [Inspiring speech]| +|08/01/2022 03:41:53| :) +|08/01/2022 03:41:54| MAHO +|08/01/2022 03:41:56| |Boozefarter shidd himself| +|08/01/2022 03:41:58| |MAHO'S MAHOS| +|08/01/2022 03:41:58| |those are some big cats| +|08/01/2022 03:41:59| |o/ SIEG HEIL| +|08/01/2022 03:41:59| |HOLY SHIT I FUCKING LOVE MAHO| +|08/01/2022 03:41:59| BOOZEFAHTAR +|08/01/2022 03:42:00| ): +|08/01/2022 03:42:01| saild +|08/01/2022 03:42:03| |Hey guys, Miho here, thanks for watching my anime lol| +|08/01/2022 03:42:04| |the enemy doesnt have enough bullets to stop the /a/ mass| +|08/01/2022 03:42:05| o/ +|08/01/2022 03:42:05| |I'd turn on the /a/ tank if I were inside it| +|08/01/2022 03:42:06| |Mark, honey, this is your mom. can you go upstairs and clean your room | +|08/01/2022 03:42:07| o/ +|08/01/2022 03:42:09| |miho has low CHA| +|08/01/2022 03:42:10| salud +|08/01/2022 03:42:10| |Maho's autism readings are off the charts!| +|08/01/2022 03:42:12| |poopenfarten regards: panzerwaffe| +|08/01/2022 03:42:15| |youre welcome miporin| +|08/01/2022 03:42:15| TAEKO +|08/01/2022 03:42:18| |I'm up to ttrpg, advertize it in the threads sometime| +|08/01/2022 03:42:20| |/a/ tank smells?| +|08/01/2022 03:42:26| |maho is my wife btw| +|08/01/2022 03:42:27| |is all of Kelly's Heroes spiced into this?| +|08/01/2022 03:42:28| |CHICKEN KATSU| +|08/01/2022 03:42:28| |Heil Maho| +|08/01/2022 03:42:32| |Mark if you're watching this drink| +|08/01/2022 03:42:33| |DON'T BE CHICKEN AND EAT THIS CHICKEN| +|08/01/2022 03:42:34| |seconded, guppie ttrpg sounds cool| +|08/01/2022 03:42:35| |maho is my wife btw| +|08/01/2022 03:42:35| |"that" place| +|08/01/2022 03:42:36| |the gup wargame is fun| +|08/01/2022 03:42:37| THAT +|08/01/2022 03:42:37| カツ +|08/01/2022 03:42:37| |AHN AHN AHNG| +|08/01/2022 03:42:38| |KATSU TAIMU!| +|08/01/2022 03:42:38| katsu +|08/01/2022 03:42:40| |Tying up Momo! Gagging Momo! Whipping Momo! Spanking Momo! | +|08/01/2022 03:42:45| Male! +|08/01/2022 03:42:45| カツカツ +|08/01/2022 03:42:45| |CATS CATS| +|08/01/2022 03:42:45| カツカツ +|08/01/2022 03:42:46| |cute currey tank | +|08/01/2022 03:42:47| hot +|08/01/2022 03:42:51| |DON'T BE A CHICKEN| +|08/01/2022 03:42:52| >momo +|08/01/2022 03:42:53| |PORKU DINNAR| +|08/01/2022 03:42:54| KATSU +|08/01/2022 03:42:55| anzu +|08/01/2022 03:42:55| |anzu wwww| +|08/01/2022 03:42:56| KATSU +|08/01/2022 03:42:56| カツカツwwwww +|08/01/2022 03:42:57| 勝つ +|08/01/2022 03:42:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:42:59| |whats the name of the ttrpg?| +|08/01/2022 03:42:59| |THAT place?| +|08/01/2022 03:43:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:01| |I LOVE CHICKEN KATSU| +|08/01/2022 03:43:01| ITALIA! +|08/01/2022 03:43:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:02| already? +|08/01/2022 03:43:03| |/a/ would be black forest but with a swastik as their symbol | +|08/01/2022 03:43:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:04| DUCE +|08/01/2022 03:43:04| かつかつするな! +|08/01/2022 03:43:04| DUCE +|08/01/2022 03:43:04| bufferoni +|08/01/2022 03:43:04| |Why can't more food be tank shaped? >.>| +|08/01/2022 03:43:05| dvce +|08/01/2022 03:43:06| |DVCE DVCE DVCE| +|08/01/2022 03:43:06| |KATSKOI NE| +|08/01/2022 03:43:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:07| |delicious tankkatsu| +|08/01/2022 03:43:07| |DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:07| |dvce | +|08/01/2022 03:43:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:08| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 03:43:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:09| DUCE +|08/01/2022 03:43:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:09| |italian planning| +|08/01/2022 03:43:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:11| DUCE +|08/01/2022 03:43:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:13| |gababool my fellow anziobros| +|08/01/2022 03:43:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:13| DVCE +|08/01/2022 03:43:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:13| KATSU +|08/01/2022 03:43:13| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 03:43:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:15| DUCE +|08/01/2022 03:43:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:17| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 03:43:17| DUCE +|08/01/2022 03:43:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:18| |DUCE! | +|08/01/2022 03:43:18| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 03:43:19| duce +|08/01/2022 03:43:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:22| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 03:43:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:24| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DU| +|08/01/2022 03:43:24| DUCE +|08/01/2022 03:43:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:27| |AY TONE| +|08/01/2022 03:43:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:29| DVCE +|08/01/2022 03:43:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:29| MUSSOLINI +|08/01/2022 03:43:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:32| |DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE| +|08/01/2022 03:43:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:34| |DUCE DUCE DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +|08/01/2022 03:43:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:35| DVCE +|08/01/2022 03:43:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:36| FORZA +|08/01/2022 03:43:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:37| |THANKS FOR THE GRUB| +|08/01/2022 03:43:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:39| |put me in the screencap!!!!!!!!!!!!!| +|08/01/2022 03:43:39| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:40| DUCE +|08/01/2022 03:43:41| |TL NOTE: DVCE means PIZZA PASTA| +|08/01/2022 03:43:41| |SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. | +|08/01/2022 03:43:42| |RUB A DUB DUB | +|08/01/2022 03:43:42| |NO SLEEP NAO!| +|08/01/2022 03:43:42| WOOOOO +|08/01/2022 03:43:42| |dvce fucks her little brother| +|08/01/2022 03:43:42| |Cute Miho| +|08/01/2022 03:43:42| |FORZA ITALIA| +|08/01/2022 03:43:43| |rub a dub dub| +|08/01/2022 03:43:43| |The mother of all tailgate parties.| +|08/01/2022 03:43:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:44| |rub a dub dub| +|08/01/2022 03:43:45| |SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. | +|08/01/2022 03:43:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:46| FORZA +|08/01/2022 03:43:47| |god to be an italian tank school| +|08/01/2022 03:43:47| |THANKS TL| +|08/01/2022 03:43:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:49| |weird cut| +|08/01/2022 03:43:49| |I'M SO HUNGRY| +|08/01/2022 03:43:50| |cute munch| +|08/01/2022 03:43:50| |>hadena subds| +|08/01/2022 03:43:51| |Best dorks| +|08/01/2022 03:43:51| |TO ME| +|08/01/2022 03:43:52| |what is pizza pasta| +|08/01/2022 03:43:53| |just driving fast and eating pasta| +|08/01/2022 03:43:53| itadakimasu +|08/01/2022 03:43:53| JAN +|08/01/2022 03:43:55| |DING DING| +|08/01/2022 03:43:56| SLUT +|08/01/2022 03:43:57| |I thought two girls couldn't get married??????| +|08/01/2022 03:43:57| |SEAMS DOKO?| +|08/01/2022 03:43:59| OISHII +|08/01/2022 03:44:00| |DUCE SMELLS GOOD AND HAS REAL HAIR| +|08/01/2022 03:44:01| |and here's where I realize I'm so far behind| +|08/01/2022 03:44:01| ameteuter +|08/01/2022 03:44:02| DORK +|08/01/2022 03:44:02| |HIGH IQ| +|08/01/2022 03:44:03| wait +|08/01/2022 03:44:03| CUTE +|08/01/2022 03:44:04| |HAM NERDS RISE UP!| +|08/01/2022 03:44:07| nom +|08/01/2022 03:44:07| |Did she get married to herself??| +|08/01/2022 03:44:08| |SMELLY AND WEARS A WIG| +|08/01/2022 03:44:08| |GOT A LOICENSE FOR THAT THERE RADIO????| +|08/01/2022 03:44:10| |Saori looking for a boyfriend on 121.5!| +|08/01/2022 03:44:11| |SAORI, FART INTO ZE RADIO| +|08/01/2022 03:44:12| cute +|08/01/2022 03:44:13| MEGANE +|08/01/2022 03:44:17| |What'e her callsign?| +|08/01/2022 03:44:18| BTFO +|08/01/2022 03:44:21| |5th wheel 5th wheel!| +|08/01/2022 03:44:23| 73737373 +|08/01/2022 03:44:24| |Slut Actual| +|08/01/2022 03:44:26| |"Fat Nigger 3"| +|08/01/2022 03:44:26| |DUCE DOES NOT WEAR A WIG! DUCE DOES NOT SMELL!| +|08/01/2022 03:44:29| 69.9 +|08/01/2022 03:44:29| |Callsign SEAL| +|08/01/2022 03:44:31| |How uch ABV is this tream?| +|08/01/2022 03:44:34| |TOO MUCH FUCKING RICE| +|08/01/2022 03:44:36| BTFO +|08/01/2022 03:44:36| |with me| +|08/01/2022 03:44:38| |to me!| +|08/01/2022 03:44:38| SLUT +|08/01/2022 03:44:41| |>Radio license. What the fuck does that even mean| +|08/01/2022 03:44:42| SLUT +|08/01/2022 03:44:42| SLUT +|08/01/2022 03:44:43| |OH NO NO NO NO NO| +|08/01/2022 03:44:44| |DUCE DOES SMELL AND I WANT TO SMELL HER| +|08/01/2022 03:44:45| lesbians +|08/01/2022 03:44:45| |hitched with me| +|08/01/2022 03:44:45| |yeah, with me| +|08/01/2022 03:44:45| |I have never drunk alcohol in my life| +|08/01/2022 03:44:46| BOKOSEXUAL +|08/01/2022 03:44:46| |Hana is a hungry girl.| +|08/01/2022 03:44:47| test +|08/01/2022 03:44:49| |OI YOU GOT A LOICENSE FOR THAT RADIO?| +|08/01/2022 03:44:50| |WITH ME| +|08/01/2022 03:44:51| |to me| +|08/01/2022 03:44:51| SLUT +|08/01/2022 03:44:51| |Miporin has ARISU!| +|08/01/2022 03:44:53| |breast shaped rice mound| +|08/01/2022 03:44:53| |WITH ME| +|08/01/2022 03:44:53| |WITH ME| +|08/01/2022 03:44:54| BOKO +|08/01/2022 03:44:56| SENSHASEXUAL +|08/01/2022 03:44:56| |DAGNO? I thought that was DANGO because Saori is FAT| +|08/01/2022 03:44:57| |>never drunk alcohol| +|08/01/2022 03:44:58| |THOSE POOR BOKOS| +|08/01/2022 03:44:58| BOKOBOKOBOOKOBOKOBOKOBOKOBOKOBOKO +|08/01/2022 03:44:59| |Time for more pizza| +|08/01/2022 03:45:00| CUTE +|08/01/2022 03:45:00| |SHE'S TANK SEXUAL LEAVE HER ALONE| +|08/01/2022 03:45:02| Confession +|08/01/2022 03:45:03| |yukari wet| +|08/01/2022 03:45:03| |I'm bokusexual| +|08/01/2022 03:45:05| |don't worry bros I can be miho's bf| +|08/01/2022 03:45:05| |One of you guys needs to marry Saori. Take responsibility. | +|08/01/2022 03:45:06| |/u/ BROS| +|08/01/2022 03:45:06| |>asks about boyfriends >cuts to Boko| +|08/01/2022 03:45:06| |blushy Yukari| +|08/01/2022 03:45:07| |she's a lesbian| +|08/01/2022 03:45:09| |shes gonna marry boko| +|08/01/2022 03:45:10| CUTE +|08/01/2022 03:45:10| |>aomushi is canon| +|08/01/2022 03:45:11| FLOOF +|08/01/2022 03:45:12| |yukari is pure| +|08/01/2022 03:45:13| |girls can't like girls| +|08/01/2022 03:45:13| FUEH?! +|08/01/2022 03:45:13| eeeeeeeeeeh +|08/01/2022 03:45:14| |SLUT WHORE| +|08/01/2022 03:45:15| |I want to squeeze Saori's fat belly| +|08/01/2022 03:45:15| lel +|08/01/2022 03:45:15| |MIHO X YUKARI CONFIRMED| +|08/01/2022 03:45:16| |/u/ STAY WINNING| +|08/01/2022 03:45:16| |cute I love this dork| +|08/01/2022 03:45:17| NORIKO +|08/01/2022 03:45:18| |yukari is pure sex| +|08/01/2022 03:45:18| |TO ME| +|08/01/2022 03:45:19| CUTE +|08/01/2022 03:45:20| |/u/fags >>>/out/| +|08/01/2022 03:45:21| |HELL YEAH,FLOOF L/U/V| +|08/01/2022 03:45:21| |you got a license for that radio| +|08/01/2022 03:45:23| |it isn't right | +|08/01/2022 03:45:23| |miho literally has never met a boy| +|08/01/2022 03:45:24| |floof overload| +|08/01/2022 03:45:25| |SAORI IS A HOMOPHOBE| +|08/01/2022 03:45:25| |BOKO NFTs| +|08/01/2022 03:45:26| |I want to CW with Saori| +|08/01/2022 03:45:27| |/u/ has entered the chat| +|08/01/2022 03:45:28| KATSU! +|08/01/2022 03:45:28| |BASED SAORI| +|08/01/2022 03:45:30| GUTS +|08/01/2022 03:45:32| |/u/ out| +|08/01/2022 03:45:33| |>ost | +|08/01/2022 03:45:33| |Imagine being British. couldn't be me.| +|08/01/2022 03:45:35| KATSUDON +|08/01/2022 03:45:36| DORKS +|08/01/2022 03:45:39| |Based lesbian bullying| +|08/01/2022 03:45:39| katsu..... +|08/01/2022 03:45:42| |RARE TENK| +|08/01/2022 03:45:44| /o/ +|08/01/2022 03:45:45| |STUG CREW IS MY WIFE| +|08/01/2022 03:45:46| |almost at intermission| +|08/01/2022 03:45:49| HOSHINOOOOOOOOOOOOOOOOOO +|08/01/2022 03:45:49| |>there are brits in this chat| +|08/01/2022 03:45:49| |ooraibros... we are ngmi next match...| +|08/01/2022 03:45:50| |/tg/ demands garupan hex and chit games| +|08/01/2022 03:45:52| |NERD GANG GANG| +|08/01/2022 03:45:54| KATSU! +|08/01/2022 03:45:54| |Hoshino gf doko| +|08/01/2022 03:45:55| |TONY KAKU CURRY| +|08/01/2022 03:45:58| |kelly's heroes doko| +|08/01/2022 03:46:02| |why do they shill the chicken so much| +|08/01/2022 03:46:02| /v/ +|08/01/2022 03:46:02| wholesome +|08/01/2022 03:46:04| |cute gamers| +|08/01/2022 03:46:05| |TONKATSU CURRY| +|08/01/2022 03:46:06| |GAMER FUEL| +|08/01/2022 03:46:06| |cant wait for ooarai dorifuto at the df4 portion of the strream| +|08/01/2022 03:46:08| |nyan is too hot| +|08/01/2022 03:46:08| |NO FUN| +|08/01/2022 03:46:11| |>there are british people communicating with you right now| +|08/01/2022 03:46:11| jannies +|08/01/2022 03:46:12| |KELLYS HEROES| +|08/01/2022 03:46:14| |I WANT TO RAPE THEM| +|08/01/2022 03:46:15| KINO +|08/01/2022 03:46:15| burgers +|08/01/2022 03:46:15| |weeb crew| +|08/01/2022 03:46:16| |KELLY'S HEROES| +|08/01/2022 03:46:18| |sodoclone gangbang| +|08/01/2022 03:46:18| |>EU's >Being awake at this hour| +|08/01/2022 03:46:18| ハンバガ! +|08/01/2022 03:46:19| OST +|08/01/2022 03:46:19| KINO +|08/01/2022 03:46:21| ;_; +|08/01/2022 03:46:21| |IT'S AzUSA!!!!!!! AAHHH| +|08/01/2022 03:46:21| |THAT'S PAINT| +|08/01/2022 03:46:22| Kinoplex +|08/01/2022 03:46:22| /tv/ +|08/01/2022 03:46:23| ;_; +|08/01/2022 03:46:25| |Based film tbh| +|08/01/2022 03:46:25| ;_; +|08/01/2022 03:46:25| |I want to eat pickles with Sodoko... no innuendo!| +|08/01/2022 03:46:25| |Based bunnies| +|08/01/2022 03:46:26| |what film?| +|08/01/2022 03:46:27| |more like hogan's heroes| +|08/01/2022 03:46:29| |Saki is absorbing it| +|08/01/2022 03:46:29| |BROS THE PANZER IS STUCK :((((| +|08/01/2022 03:46:29| ;_; +|08/01/2022 03:46:29| ;_; +|08/01/2022 03:46:31| ;_; +|08/01/2022 03:46:33| |eu KINGS represent| +|08/01/2022 03:46:33| ;_; +|08/01/2022 03:46:34| :_: +|08/01/2022 03:46:35| |Kelly's Heroes, dumbass| +|08/01/2022 03:46:36| |BASED CUNNY KINOSSEURS| +|08/01/2022 03:46:36| ;_; +|08/01/2022 03:46:38| aaaaaa +|08/01/2022 03:46:38| |Real tears| +|08/01/2022 03:46:38| |>crying at a comedy| +|08/01/2022 03:46:40| |that poor tank| +|08/01/2022 03:46:42| rude +|08/01/2022 03:46:43| |kelly's hero'| +|08/01/2022 03:46:46| |rip tank| +|08/01/2022 03:46:47| |;_; Tiger-kun| +|08/01/2022 03:46:49| |what are you doing step tank| +|08/01/2022 03:46:49| ;__; +|08/01/2022 03:46:49| |battle of the bulge in my pants| +|08/01/2022 03:46:49| |I want to watch Das Boot with Maho| +|08/01/2022 03:46:51| |kunny's heros| +|08/01/2022 03:46:52| |tigerbros... its over...| +|08/01/2022 03:46:58| |in NY, a hero ain't nothin' but a sandwich| +|08/01/2022 03:47:00| FAKE-TIGER +|08/01/2022 03:47:01| |That was a god anime| +|08/01/2022 03:47:03| |Poor TRigre| +|08/01/2022 03:47:03| |Train to the western zone| +|08/01/2022 03:47:05| |See you next year| +|08/01/2022 03:47:08| |I-i'm not crying it's just rain| +|08/01/2022 03:47:09| |IM SCHLEEP CUH| +|08/01/2022 03:47:10| |mako sleep| +|08/01/2022 03:47:11| |bonding time with the tanks| +|08/01/2022 03:47:11| |my grandpa loves kelly's heroes should i show him GuP?| +|08/01/2022 03:47:12| |GLASSES BACKGROUND GIRL| +|08/01/2022 03:47:13| FUJI-SAN +|08/01/2022 03:47:14| cute +|08/01/2022 03:47:15| |What's your favourite tank, /a/?| +|08/01/2022 03:47:16| |REPORTER GIRL CUTE| +|08/01/2022 03:47:16| |>next year| +|08/01/2022 03:47:16| |real model kits| +|08/01/2022 03:47:16| |fun fact lads i now know enough deutsch to watch das boot unsubbed| +|08/01/2022 03:47:17| v +|08/01/2022 03:47:21| gimi +|08/01/2022 03:47:21| |TAIGA'S YEAR| +|08/01/2022 03:47:21| |YEAR OF THE TAIGA| +|08/01/2022 03:47:22| I +|08/01/2022 03:47:24| |BUYING YUKARI A MODEL TANK| +|08/01/2022 03:47:24| |see you in woto more like| +|08/01/2022 03:47:25| |Why don't you cut it out with those negative waves...| +|08/01/2022 03:47:28| |the porsche tiger of course| +|08/01/2022 03:47:29| bri'ish +|08/01/2022 03:47:29| |feel free| +|08/01/2022 03:47:31| |keep it up deutsch anon| +|08/01/2022 03:47:32| |I'm a big Panther fan| +|08/01/2022 03:47:32| |Yes anon show him| +|08/01/2022 03:47:32| |PZ IV with the sex-plates obviously| +|08/01/2022 03:47:33| bongs +|08/01/2022 03:47:34| |SLAG! <3| +|08/01/2022 03:47:34| TEA? +|08/01/2022 03:47:35| |luv me darj| +|08/01/2022 03:47:35| |Is Pekoe... slow?| +|08/01/2022 03:47:35| GOKIGENYOU +|08/01/2022 03:47:36| GOKIGENYOU +|08/01/2022 03:47:37| |BRI 'ISH| +|08/01/2022 03:47:38| DARJ +|08/01/2022 03:47:40| slags +|08/01/2022 03:47:43| pekoe.... +|08/01/2022 03:47:44| |this saying| +|08/01/2022 03:47:45| |my wife| +|08/01/2022 03:47:45| |How will I survive both this and Woto's stream?| +|08/01/2022 03:47:45| |wanna hear this saying?| +|08/01/2022 03:47:47| |PEEEEEEEEEEKKKKKKKKOOOOOOOOO UUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 03:47:49| |you wot?| +|08/01/2022 03:47:49| |hip when?| +|08/01/2022 03:47:50| GOKIGENYOU +|08/01/2022 03:47:50| :o +|08/01/2022 03:47:51| |My wife Darjeeling is so cute.| +|08/01/2022 03:47:53| |Have you heard this saying? "Darj and Pekoe are the best girls."| +|08/01/2022 03:47:53| |hi miho have you heard this saying?| +|08/01/2022 03:47:56| |>10/10 in bongland| +|08/01/2022 03:47:57| |No Duce..........| +|08/01/2022 03:47:57| pekoe................ +|08/01/2022 03:47:58| Gokigenyo +|08/01/2022 03:47:58| |Darjeeling x kay x me| +|08/01/2022 03:47:58| |BURGERS OUT| +|08/01/2022 03:47:59| |EXCITING CRAZY| +|08/01/2022 03:47:59| |You need GUTS to live through snw| +|08/01/2022 03:47:59| MUTT +|08/01/2022 03:47:59| |your wife is dumb| +|08/01/2022 03:48:00| USA +|08/01/2022 03:48:01| KUREIJI +|08/01/2022 03:48:01| |Have you heard this saying? There's no shitting without peeing| +|08/01/2022 03:48:03| KURAIJI +|08/01/2022 03:48:03| |KICK SOME ASS| +|08/01/2022 03:48:03| Peeko +|08/01/2022 03:48:04| Crazy +|08/01/2022 03:48:05| |usa usa| +|08/01/2022 03:48:06| |HOP IN LOSERS WE'RE GOING SHOPPING| +|08/01/2022 03:48:06| |DVCE is crying off screen right now| +|08/01/2022 03:48:06| CURAAAZHI +|08/01/2022 03:48:06| CURAHYEZEEE +|08/01/2022 03:48:07| FIGHTO +|08/01/2022 03:48:08| MURICA +|08/01/2022 03:48:08| N +|08/01/2022 03:48:09| mihong! +|08/01/2022 03:48:09| |GOOT LAAK| +|08/01/2022 03:48:09| |GUT LUCJ\K| +|08/01/2022 03:48:10| |GOOD LUCK| +|08/01/2022 03:48:10| |FAITO! GOOD RUCK!| +|08/01/2022 03:48:10| |Pekoe rapes Drajeeling| +|08/01/2022 03:48:10| |GOOD LUCK| +|08/01/2022 03:48:11| |miho x maho when?????| +|08/01/2022 03:48:11| |HELL YEAH| +|08/01/2022 03:48:12| |KAy is baye| +|08/01/2022 03:48:13| |>fighto means kick some ass| +|08/01/2022 03:48:13| |IMAGINE BEING BRITISH| +|08/01/2022 03:48:14| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 03:48:14| |USA USA USA| +|08/01/2022 03:48:14| |my wife| +|08/01/2022 03:48:14| |good ruck!| +|08/01/2022 03:48:15| |FAT KAY TITS| +|08/01/2022 03:48:15| |USA USA USA USA| +|08/01/2022 03:48:15| |good ruck| +|08/01/2022 03:48:15| MIDGET +|08/01/2022 03:48:17| |JA NE| +|08/01/2022 03:48:18| :o +|08/01/2022 03:48:19| |BOKO BOKO| +|08/01/2022 03:48:19| KUUUUUUNNNNNYYYY +|08/01/2022 03:48:20| |I WANT TO SNIFF KATYUSHA THIGHS| +|08/01/2022 03:48:20| FIGHTON +|08/01/2022 03:48:21| FIGHT-O! +|08/01/2022 03:48:22| UUUOOOOOOOOH +|08/01/2022 03:48:22| |EXAITINGU CREYZY FAITO| +|08/01/2022 03:48:24| |russian loli onahole| +|08/01/2022 03:48:25| |character says: faito subs say:kick some ass ?????| +|08/01/2022 03:48:26| |Imagine squeez\ing Kays fat ass| +|08/01/2022 03:48:26| |USA USA USA USA| +|08/01/2022 03:48:26| |SPEAK ENGLISH FAGGOT| +|08/01/2022 03:48:27| |Oh shut the fuck up| +|08/01/2022 03:48:28| |DO SVIDANYA| +|08/01/2022 03:48:28| >SLAGS +|08/01/2022 03:48:28| AAAAAAAAAAAAAAAA +|08/01/2022 03:48:33| |sniffing katyushas butt| +|08/01/2022 03:48:33| |what does piroshki mean?| +|08/01/2022 03:48:33| |REMOVE SLAG| +|08/01/2022 03:48:37| |fuck off darj| +|08/01/2022 03:48:37| npooooooooo +|08/01/2022 03:48:38| dumplings +|08/01/2022 03:48:39| |>you're a strange person| +|08/01/2022 03:48:39| slags +|08/01/2022 03:48:40| |STEAKY PEOPLE| +|08/01/2022 03:48:40| DEEP +|08/01/2022 03:48:41| BLYAT +|08/01/2022 03:48:42| ?????????????????? +|08/01/2022 03:48:43| |YOU'RE STILL HERE?| +|08/01/2022 03:48:44| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 03:48:44| |DARJ IS MY WIFE| +|08/01/2022 03:48:44| proverb +|08/01/2022 03:48:45| ????????????????????????????????????????? +|08/01/2022 03:48:45| ??? +|08/01/2022 03:48:45| ????????????????????? +|08/01/2022 03:48:45| ???????????????????????????????????????????? +|08/01/2022 03:48:45| |Shut up, Darjeeling| +|08/01/2022 03:48:46| |DARJELING WHAT THE FUCK ARE YOU TALKING ABOUT| +|08/01/2022 03:48:46| |stop it, my ears| +|08/01/2022 03:48:47| ????????????????? +|08/01/2022 03:48:47| |she spilled her tea, never forget| +|08/01/2022 03:48:47| |SHUT UP BONG| +|08/01/2022 03:48:47| |MUH ENGLISH PROVERB| +|08/01/2022 03:48:48| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 03:48:48| ha??????? +|08/01/2022 03:48:48| |based and have you heard this?pilled| +|08/01/2022 03:48:50| ????????????? +|08/01/2022 03:48:50| |all the side girls were better than the main ones tbh| +|08/01/2022 03:48:50| |where are the italians?| +|08/01/2022 03:48:50| |STFU | +|08/01/2022 03:48:50| ?????????????? +|08/01/2022 03:48:50| |That's not English| +|08/01/2022 03:48:51| ????????? +|08/01/2022 03:48:52| |This is a shonen anime confirmed.| +|08/01/2022 03:48:52| |mahou shojou miho it all makes sense| +|08/01/2022 03:48:52| |ok this one made sense| +|08/01/2022 03:48:53| |WHAT IS WRONG WITH THE BONGS| +|08/01/2022 03:48:53| |????????????????????????????????????????? brit meds| +|08/01/2022 03:48:53| |thanks a ton for the proverb, Darjeeling| +|08/01/2022 03:48:54| |SHUT UP DARJ| +|08/01/2022 03:48:54| ERIKA +|08/01/2022 03:48:55| |DUMB WANI| +|08/01/2022 03:48:55| |I never read Darj's proverbs | +|08/01/2022 03:48:56| ???????? +|08/01/2022 03:48:56| |WHAT DOES SLAG MEAN?!| +|08/01/2022 03:48:56| |OH GOD I WANT TO FUCK ERIKA| +|08/01/2022 03:48:57| |Uma Musume reference?| +|08/01/2022 03:48:58| ???????? +|08/01/2022 03:48:59| ???????????? +|08/01/2022 03:48:59| |I still dont get the american hell telephone joke| +|08/01/2022 03:49:01| |have you heard this saying?| +|08/01/2022 03:49:01| |Momo the #22| +|08/01/2022 03:49:02| |FUCK ERIKA| +|08/01/2022 03:49:05| WANI +|08/01/2022 03:49:05| |F R I E D S H I P| +|08/01/2022 03:49:06| |!!! D e u t s c h l a n d !!!| +|08/01/2022 03:49:06| |WANI SMUG| +|08/01/2022 03:49:06| |SEX WITH MAHO| +|08/01/2022 03:49:06| |Look at that dumb bitch Erika| +|08/01/2022 03:49:07| |Shut up, Erika.| +|08/01/2022 03:49:07| |DO BONGS REALLY| +|08/01/2022 03:49:07| BITCH +|08/01/2022 03:49:08| |DARJ HATERS HAVE BEEN COURT MARTIALLED BY PATRIOTS -Q| +|08/01/2022 03:49:08| Eroka +|08/01/2022 03:49:08| |RAPE THE WANI| +|08/01/2022 03:49:09| |my maho wife| +|08/01/2022 03:49:09| |have you heard the news| +|08/01/2022 03:49:09| MAHO +|08/01/2022 03:49:10| |UND DAS HEISST| +|08/01/2022 03:49:11| |UND DAS HEIST| +|08/01/2022 03:49:12| |SHHHHHHH QUIET The Italians are asleep | +|08/01/2022 03:49:12| |DUMB WANI| +|08/01/2022 03:49:13| |hmph, undermensch| +|08/01/2022 03:49:13| |SIBLING DEATH MATCH| +|08/01/2022 03:49:13| |ERIKA GONA WIN| +|08/01/2022 03:49:13| |get fuckt| +|08/01/2022 03:49:14| |I THINK ERIKA SUCKS| +|08/01/2022 03:49:14| WANI +|08/01/2022 03:49:14| |I want to rape Erika| +|08/01/2022 03:49:15| |LET'S GO DEUTSCHLAND| +|08/01/2022 03:49:15| |Thanks for sharing that stupid shit darj| +|08/01/2022 03:49:15| RUDE +|08/01/2022 03:49:15| |ERIKA MY WIFE| +|08/01/2022 03:49:17| |Translators Note: Dosvidaniya means sayonara| +|08/01/2022 03:49:18| |EAST VS WEST GERMANY| +|08/01/2022 03:49:19| |FUCKIN WANI| +|08/01/2022 03:49:23| Ericunny +|08/01/2022 03:49:23| EEEEEERIKA +|08/01/2022 03:49:25| |FUCK OFF ERIKA| +|08/01/2022 03:49:26| WAI +|08/01/2022 03:49:26| |ami chan | +|08/01/2022 03:49:27| |AMI BUTT| +|08/01/2022 03:49:27| |My beautiful wife Maho and her pig dog Erika| +|08/01/2022 03:49:29| |ES BRAUST EIN RUF WIE DONNERHALL| +|08/01/2022 03:49:29| EEEEEEEEEEEEERIKA +|08/01/2022 03:49:31| WANI +|08/01/2022 03:49:31| |Smug Erika| +|08/01/2022 03:49:32| |TWENTY FUCKING WEHRABOOS!| +|08/01/2022 03:49:33| |THAT WANI WILL DIE IN 100 DAYSSSSSSSS| +|08/01/2022 03:49:34| |Erika will lose| +|08/01/2022 03:49:36| |SHUT UP WANI| +|08/01/2022 03:49:37| |FUCKING LOSER SITS ALL BY HERSELF| +|08/01/2022 03:49:39| IDEALS +|08/01/2022 03:49:40| |Erika is such a bitch| +|08/01/2022 03:49:40| |FUCK OFF BITCH| +|08/01/2022 03:49:40| |LONG LIVE DDR FUCK WEST GERMANY| +|08/01/2022 03:49:41| |My wife can't be this smug| +|08/01/2022 03:49:41| |REMOVE ERIKA| +|08/01/2022 03:49:42| |bitch alert| +|08/01/2022 03:49:43| HERETIC +|08/01/2022 03:49:43| |BASED WANI| +|08/01/2022 03:49:43| |Shut up, Erika| +|08/01/2022 03:49:44| |Fuck Erika I hate Erika | +|08/01/2022 03:49:46| EEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:49:46| HERESY +|08/01/2022 03:49:48| |I like how new Erika is a different character| +|08/01/2022 03:49:48| |HATE FUCK ERIKA| +|08/01/2022 03:49:48| |Erika my beloved| +|08/01/2022 03:49:49| |erika fuckin shit| +|08/01/2022 03:49:49| |Erika for brutal doggy style and impregnation| +|08/01/2022 03:49:49| |LIEB VATERLAND MAGST RUHIG SEIN| +|08/01/2022 03:49:51| |You're asking for a dicking Erika| +|08/01/2022 03:49:51| |K O U M E | +|08/01/2022 03:49:51| |I like Erika's eyes | +|08/01/2022 03:49:51| |What ideals Miho even has lmao| +|08/01/2022 03:49:52| KOUME +|08/01/2022 03:49:54| |>thanks for not letting me die| +|08/01/2022 03:49:54| |death to koume| +|08/01/2022 03:49:54| |SS floof| +|08/01/2022 03:49:55| |drown again pls| +|08/01/2022 03:49:55| |BEST GERM| +|08/01/2022 03:49:55| |KOUME YESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSs| +|08/01/2022 03:49:56| |Choking Erika!| +|08/01/2022 03:49:56| |KOUME! >3| +|08/01/2022 03:49:56| *pomf* +|08/01/2022 03:49:57| |how did wani get a following| +|08/01/2022 03:49:57| KOUME +|08/01/2022 03:49:58| |literally who| +|08/01/2022 03:49:58| |Based Fluff| +|08/01/2022 03:49:58| CUTE +|08/01/2022 03:49:58| Cowme +|08/01/2022 03:49:58| WANI +|08/01/2022 03:49:59| |"i should of let you die"| +|08/01/2022 03:50:00| CUTE +|08/01/2022 03:50:02| |DUMB WANI| +|08/01/2022 03:50:02| |PTSD | +|08/01/2022 03:50:04| KARMA +|08/01/2022 03:50:05| |>should of| +|08/01/2022 03:50:06| KOUMEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 03:50:06| |how fast did miho dip that she couldnt thank her| +|08/01/2022 03:50:07| |THANKS FOR SAVING ME FROM DROWNING| +|08/01/2022 03:50:08| |KUOME LIVES| +|08/01/2022 03:50:09| pomf +|08/01/2022 03:50:10| |my angel!| +|08/01/2022 03:50:11| |just kill her right now to make amends| +|08/01/2022 03:50:14| |I want Erika to smash me| +|08/01/2022 03:50:14| *pomf* +|08/01/2022 03:50:14| |KUOME LIVES IN DEATH| +|08/01/2022 03:50:15| Cumme +|08/01/2022 03:50:16| |>erika wanted this to drown Dumb bitch| +|08/01/2022 03:50:16| |koume midget| +|08/01/2022 03:50:16| sweetness +|08/01/2022 03:50:19| |another floof....| +|08/01/2022 03:50:19| |PTSD Inducing stare| +|08/01/2022 03:50:19| |I honestly forgot how much of a shitter wani was in the tv series. she's much better in the films| +|08/01/2022 03:50:19| |Erika will show you her bewegungskrieg soon enough just see| +|08/01/2022 03:50:19| |Read that one fan manga about her| +|08/01/2022 03:50:20| |now kiss| +|08/01/2022 03:50:22| |I DIDN'T BOTHER BRINGING IT UP FOR YEARS| +|08/01/2022 03:50:23| |mount a water canon on the tank| +|08/01/2022 03:50:23| |miho take your meds| +|08/01/2022 03:50:23| kuome....... +|08/01/2022 03:50:25| |>shes not real| +|08/01/2022 03:50:27| |"wani following" she a cute and tsun tsun, how did you stop being a faggot -- oh you didn't| +|08/01/2022 03:50:29| |I THINK ERIKA SUCKS| +|08/01/2022 03:50:30| |Erika SEETHING| +|08/01/2022 03:50:30| |killing intent| +|08/01/2022 03:50:33| |DEATH TO MERCEDES| +|08/01/2022 03:50:34| |tasty midget| +|08/01/2022 03:50:34| |did her mom also want her to drown?| +|08/01/2022 03:50:34| |>Erika mad Koume is still alive| +|08/01/2022 03:50:38| |I LOVE THE TONK I LOVE THE TONK| +|08/01/2022 03:50:39| |based granny| +|08/01/2022 03:50:40| |erika mad| +|08/01/2022 03:50:41| |Maho is my wife btw| +|08/01/2022 03:50:41| |Erika going to haze her| +|08/01/2022 03:50:42| BLITZ +|08/01/2022 03:50:43| |theres this saying about drowning during a match| +|08/01/2022 03:50:44| |ooraibros... it's time| +|08/01/2022 03:50:45| |Erika sucks my dick alright| +|08/01/2022 03:50:45| |wtf this show has a Nazi team...?| +|08/01/2022 03:50:45| |based grandma| +|08/01/2022 03:50:47| |Erika's laughter in the final| +|08/01/2022 03:50:48| |>Its been 10 years since the accident Miho, you have to let me go| +|08/01/2022 03:50:51| Saki +|08/01/2022 03:50:55| |>Takahi left arisu for koume| +|08/01/2022 03:50:59| |GET TO YOUR VEHICLES| +|08/01/2022 03:51:01| HAI +|08/01/2022 03:51:08| |Oorari vs /a/| +|08/01/2022 03:51:17| |BE WELL, MY LITTLE WAR-MACHINE!| +|08/01/2022 03:51:17| >oorari +|08/01/2022 03:51:18| OOrararai +|08/01/2022 03:51:19| |It's afraid| +|08/01/2022 03:51:20| |it's a good thing she has plot armour| +|08/01/2022 03:51:21| l-lewd +|08/01/2022 03:51:21| |Opening move: Rape Correction| +|08/01/2022 03:51:23| lewd +|08/01/2022 03:51:25| |Just got here, this show any good?| +|08/01/2022 03:51:26| |its afraid| +|08/01/2022 03:51:29| O +|08/01/2022 03:51:31| yea +|08/01/2022 03:51:33| |/a/ gets beaten to a pulp. simultaneously covered in their own semen| +|08/01/2022 03:51:33| |QUICK PICK YOUR TANKFU| +|08/01/2022 03:51:34| |O ARA ARA ARA ARAI| +|08/01/2022 03:51:34| |Warcrimes will be committed today.| +|08/01/2022 03:51:38| |is it stopping for everyone else?| +|08/01/2022 03:51:38| |i want to choke maho| +|08/01/2022 03:51:41| |FUR DEUTSCHLAND | +|08/01/2022 03:51:42| o +|08/01/2022 03:51:42| |SIEG HEIL VIKTORIA| +|08/01/2022 03:51:42| |this is the only good thing to come out of j*pan| +|08/01/2022 03:51:42| |KLOTZEN NICHT KLECKERN| +|08/01/2022 03:51:45| o/ +|08/01/2022 03:51:47| no +|08/01/2022 03:51:47| |no buffers| +|08/01/2022 03:51:48| |>quoting Yukari| +|08/01/2022 03:51:48| |PANZER VOR| +|08/01/2022 03:51:49| |FOR WHAT| +|08/01/2022 03:51:49| |PANZER VOR| +|08/01/2022 03:51:49| |what does it mean, /a/?| +|08/01/2022 03:51:49| |PANZER VOR| +|08/01/2022 03:51:49| |PANZER VOR| +|08/01/2022 03:51:50| |PANTSU VOR| +|08/01/2022 03:51:50| |PANZER VOR!!| +|08/01/2022 03:51:51| |PANZER VOR| +|08/01/2022 03:51:51| |PANZER VOR| +|08/01/2022 03:51:52| |covering myself in my own semen for my favorite GuP girl| +|08/01/2022 03:51:52| |PANZER VOR| +|08/01/2022 03:51:52| |WHAT DOES IT MEAN?| +|08/01/2022 03:51:52| |Panzer For| +|08/01/2022 03:51:52| |PANZER VOR| +|08/01/2022 03:51:53| |PANZA VOR| +|08/01/2022 03:51:54| |PANZER VOR| +|08/01/2022 03:51:54| |PANTS ARE FOR| +|08/01/2022 03:51:55| |PANZER VOR | +|08/01/2022 03:51:55| TOTSUGEKI +|08/01/2022 03:51:55| |PANZER VORE| +|08/01/2022 03:51:56| |PANZER VOR| +|08/01/2022 03:51:56| |PANZER VOR| +|08/01/2022 03:51:57| |Pantsu Four!| +|08/01/2022 03:51:58| |PANZER VOR| +|08/01/2022 03:51:59| |CUTE WANI| +|08/01/2022 03:51:59| |ARMORED VORTEX| +|08/01/2022 03:51:59| |Panzer Vor means Panzer Vor| +|08/01/2022 03:52:00| |Kinoplex moment| +|08/01/2022 03:52:01| |PANZA VORE| +|08/01/2022 03:52:03| |panzer vor means panzer vor| +|08/01/2022 03:52:03| |VANER POR| +|08/01/2022 03:52:03| |PANZER VOR| +|08/01/2022 03:52:04| |Why are you on /a/ if you hate every other anime wtf anon| +|08/01/2022 03:52:05| |pnzr 4| +|08/01/2022 03:52:06| |PANSY FOUR| +|08/01/2022 03:52:07| |virgin speech vs the chad PANZER VOR| +|08/01/2022 03:52:09| |tanks please move forward pls| +|08/01/2022 03:52:11| |type 88 bros, it's our time| +|08/01/2022 03:52:14| |How does one series have so many kino moments| +|08/01/2022 03:52:15| |TL NOTE: PANZER VOR means PANZER VOR| +|08/01/2022 03:52:17| FLOOF +|08/01/2022 03:52:17| |Stream is completely fucked for me, looks like no tanks this year bros| +|08/01/2022 03:52:18| 88 +|08/01/2022 03:52:18| |/a/ dont even get to the field they get kicked out for kidnapping usagi teamu| +|08/01/2022 03:52:20| |my maho wife| +|08/01/2022 03:52:20| 88 +|08/01/2022 03:52:21| |>she can't tell| +|08/01/2022 03:52:21| |Panzer Vor means Penetrate Anon| +|08/01/2022 03:52:22| |So which one of you will be dressing up as Yukari for the /a/ team?| +|08/01/2022 03:52:24| |SO PRECIOUS| +|08/01/2022 03:52:28| me +|08/01/2022 03:52:29| |manko teamu| +|08/01/2022 03:52:36| |SORE DE IIN DA YO NE| +|08/01/2022 03:52:36| |TL note: "Panzer Vor" means "Darj and Pekoe are best girls"| +|08/01/2022 03:52:37| |nishizumi swag incoming| +|08/01/2022 03:52:44| |Saori, fart into the radio, immediately.| +|08/01/2022 03:52:45| poi +|08/01/2022 03:52:45| パンツァーフォー +|08/01/2022 03:52:46| |>/a/non dresses up as yukari as a joke >/a/non is molested to death| +|08/01/2022 03:52:47| |Non Slut Sayori| +|08/01/2022 03:52:48| |>over and out| +|08/01/2022 03:52:49| CUTE +|08/01/2022 03:52:50| PEW +|08/01/2022 03:52:52| |>you're not a pro in bed| +|08/01/2022 03:52:53| |who drives darj's churchill???????| +|08/01/2022 03:52:56| |WTF HOW| +|08/01/2022 03:52:56| |based mako| +|08/01/2022 03:52:57| |I can't believe it took this long for someone to go MANKO TEAMU| +|08/01/2022 03:52:58| |Fun is over| +|08/01/2022 03:52:58| tot +|08/01/2022 03:52:59| AAAAAAAAAAAAAAAAAAH +|08/01/2022 03:53:00| NANI +|08/01/2022 03:53:00| DEAD +|08/01/2022 03:53:00| EEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:01| |Pro Bass| +|08/01/2022 03:53:02| NANI +|08/01/2022 03:53:05| |KINO TIME| +|08/01/2022 03:53:05| |can confirm I would rape dressed up /a/non in a game of pretend| +|08/01/2022 03:53:06| |nazi time| +|08/01/2022 03:53:07| |through the forest wow this is like a history reference| +|08/01/2022 03:53:08| |! Banger alert ! Banger alert !| +|08/01/2022 03:53:08| |UND DAS HEIST| +|08/01/2022 03:53:09| |KUROMORIMINE UBER ALLES| +|08/01/2022 03:53:09| KINO +|08/01/2022 03:53:10| SIEG +|08/01/2022 03:53:10| |ITS OVER| +|08/01/2022 03:53:10| |AUF DER HEIDE | +|08/01/2022 03:53:11| |AUF DER HEIDE| +|08/01/2022 03:53:11| ERIKA +|08/01/2022 03:53:11| |SIEG HEIL VIKTORIA| +|08/01/2022 03:53:12| uhhhh +|08/01/2022 03:53:12| |HOLY SHIT OORAI IS DONE| +|08/01/2022 03:53:12| |AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELIEN| +|08/01/2022 03:53:12| |NAZI TIME BBY| +|08/01/2022 03:53:12| ERIKA +|08/01/2022 03:53:13| |>they went through the forest| +|08/01/2022 03:53:13| ERIKA +|08/01/2022 03:53:13| |UND DAS HEIßT| +|08/01/2022 03:53:13| |WAKE PU| +|08/01/2022 03:53:14| |OH NO NO NO NO NO NO| +|08/01/2022 03:53:16| |its over Oorari Bros we got to cocky | +|08/01/2022 03:53:16| |AUF DER HEIDE| +|08/01/2022 03:53:16| |UND DAS HEISST| +|08/01/2022 03:53:17| EEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:17| ERIKA +|08/01/2022 03:53:17| ERIKA +|08/01/2022 03:53:17| |ERIKA TIME| +|08/01/2022 03:53:18| ERIKA +|08/01/2022 03:53:18| |UND DAS HEISST| +|08/01/2022 03:53:18| |UND DAS HEIST| +|08/01/2022 03:53:18| ERIKA +|08/01/2022 03:53:18| |UND DAS HEISST| +|08/01/2022 03:53:18| ERIKA +|08/01/2022 03:53:19| |UND DAS HEIST| +|08/01/2022 03:53:19| EEEEERIKA +|08/01/2022 03:53:20| ERIKA +|08/01/2022 03:53:20| |ONLY DUCE COULD WIN THIS| +|08/01/2022 03:53:20| ERIKA +|08/01/2022 03:53:20| EEEEERIKA +|08/01/2022 03:53:20| |UND DAS HEISST | +|08/01/2022 03:53:20| ERIKA +|08/01/2022 03:53:21| o/ +|08/01/2022 03:53:22| ERIKAAAAAA +|08/01/2022 03:53:22| |UND DAS HEISST... ERIKA!| +|08/01/2022 03:53:22| ERRRRRRRRIIIIIIIIKKKKKKKKKKAAAAAAAAAAA +|08/01/2022 03:53:22| |UN DAS HEIST| +|08/01/2022 03:53:23| AzUA +|08/01/2022 03:53:24| |o/ HEIL ERIKA| +|08/01/2022 03:53:24| |AUF HER HEIDE BLUT EIN KLEINES BLUBELEIN| +|08/01/2022 03:53:24| |UND DAS HEIST| +|08/01/2022 03:53:25| EEEEEEEEEEEEEEEEEEEEEEEEEEERRIKA +|08/01/2022 03:53:25| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:25| ERIKA!! +|08/01/2022 03:53:25| |no more wholesome gup| +|08/01/2022 03:53:27| ERIKA +|08/01/2022 03:53:27| |DAS HEIST| +|08/01/2022 03:53:28| EEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:28| |UN DAST IST ERIKA| +|08/01/2022 03:53:29| |AUF DER HEIDE| +|08/01/2022 03:53:30| |HEIL ERIKA| +|08/01/2022 03:53:30| |HEIL HITLER| +|08/01/2022 03:53:31| ERIKA +|08/01/2022 03:53:32| |I'M WHISTLEING AS LOUD I CAN RIGHT NOW| +|08/01/2022 03:53:32| ERIKA +|08/01/2022 03:53:32| ERIKA +|08/01/2022 03:53:34| |NIGGAZUMI STYLE| +|08/01/2022 03:53:34| エリカ様!!!! +|08/01/2022 03:53:35| |Just Charge| +|08/01/2022 03:53:35| o/ +|08/01/2022 03:53:35| |NISHGZUME StYLE| +|08/01/2022 03:53:35| EEEEEEEEEEERIKA +|08/01/2022 03:53:35| |german steel folded by a 1000 slaves| +|08/01/2022 03:53:36| |UND DAS HEIßT| +|08/01/2022 03:53:36| |DUMB DUMB DUMB ERIIIIIIIIIIIIKKKKKKKKKKAAAAAAAAAAAA| +|08/01/2022 03:53:37| |I'm glad I all inned on Kuromorimine winning| +|08/01/2022 03:53:37| EEEERIKA +|08/01/2022 03:53:37| EEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:38| BLUMENLIED +|08/01/2022 03:53:38| |UND DAS HEISST ERIKA| +|08/01/2022 03:53:38| EEEERIIKAAAAAAAAAAAA +|08/01/2022 03:53:40| ERIKA +|08/01/2022 03:53:40| EEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:41| 1488 +|08/01/2022 03:53:41| |WANI! WANI! WANI!| +|08/01/2022 03:53:41| EEEERIKA +|08/01/2022 03:53:42| |Auf der Heide blueht ein kleines bluemelein| +|08/01/2022 03:53:42| ERIKAAA +|08/01/2022 03:53:42| NIGGAZUME +|08/01/2022 03:53:43| |BAM BAM BAM | +|08/01/2022 03:53:43| Erika'd +|08/01/2022 03:53:43| |HALE HORTLER| +|08/01/2022 03:53:44| |NISHIZUMI STYLE IS SUGOI| +|08/01/2022 03:53:44| |o/ o/ o/| +|08/01/2022 03:53:45| EEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:46| |BOOM BOOM BOOM| +|08/01/2022 03:53:46| ERIKA +|08/01/2022 03:53:49| |DUMB WANI| +|08/01/2022 03:53:49| RIP +|08/01/2022 03:53:50| |SO STIFF!| +|08/01/2022 03:53:50| 1488 +|08/01/2022 03:53:51| ERIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:53:51| |UND DAS HEIST| +|08/01/2022 03:53:53| ERIKAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:53:55| |Erika showiong who is boss| +|08/01/2022 03:53:55| EEERICKA +|08/01/2022 03:53:56| |kmm singing this song when?| +|08/01/2022 03:53:56| |JUST LIKE ME!| +|08/01/2022 03:53:56| |SIEG HEIL VIKTORIA| +|08/01/2022 03:53:59| |UND DAS HEIST | +|08/01/2022 03:54:00| |SIEG HEIL| +|08/01/2022 03:54:01| |gamers meet rl| +|08/01/2022 03:54:03| |SIEG HEIL| +|08/01/2022 03:54:04| |exterminate the gamers| +|08/01/2022 03:54:04| UTE +|08/01/2022 03:54:05| |GAME OVER| +|08/01/2022 03:54:05| EEEEEEEERIKA +|08/01/2022 03:54:06| |DIE FAHNE HOCH| +|08/01/2022 03:54:07| |PUT THAT BITCH IN REVERSE AND DUMP THAT CLUTCH| +|08/01/2022 03:54:07| |gamer girls just saved oorari right here| +|08/01/2022 03:54:07| |wait did they never practice driving before the match?| +|08/01/2022 03:54:08| USEFUL +|08/01/2022 03:54:08| |Its over for Nishitzumi| +|08/01/2022 03:54:09| |GAMERS SAY NO TO WANI| +|08/01/2022 03:54:10| |gamer bros... its over...| +|08/01/2022 03:54:11| |WORST TEAM = GONE| +|08/01/2022 03:54:11| |GAYMERS SAVE THE DAY| +|08/01/2022 03:54:11| SAVED +|08/01/2022 03:54:12| |THEY SAVED THE DAY| +|08/01/2022 03:54:13| |NONONOONON GAMERBROS.....| +|08/01/2022 03:54:13| |I love marches so much| +|08/01/2022 03:54:13| |GAMERS FUCKING JOBBED| +|08/01/2022 03:54:13| |WE DID IT GAYMERS!!| +|08/01/2022 03:54:13| |GAMERS NO| +|08/01/2022 03:54:13| totsugeki? +|08/01/2022 03:54:14| |SIEG KMM. SIEG MAHO| +|08/01/2022 03:54:15| 卐卐卐卐卐卐卐卐卐卐卐 +|08/01/2022 03:54:15| |SIEGU HEIL| +|08/01/2022 03:54:16| |unintentional sacrifice| +|08/01/2022 03:54:17| |I'M HEILING SO HARD RIGHT NOW | +|08/01/2022 03:54:17| |GAYMER FUEL| +|08/01/2022 03:54:18| |/fitv/ with the save| +|08/01/2022 03:54:19| o/ +|08/01/2022 03:54:20| BTFO +|08/01/2022 03:54:20| |GAMER GIRLS....| +|08/01/2022 03:54:21| |took one for the team| +|08/01/2022 03:54:22| |cum loaded| +|08/01/2022 03:54:24| |pro gammer move| +|08/01/2022 03:54:25| |Wapanese tank blown apart| +|08/01/2022 03:54:26| |Gamers absolutely blown the fuck out| +|08/01/2022 03:54:27| |>gamers job, as usual| +|08/01/2022 03:54:28| |nice job jobbing| +|08/01/2022 03:54:32| |can you heil with your dick?| +|08/01/2022 03:54:33| |NO TRANSMISSION GANG| +|08/01/2022 03:54:36| |HEIL SCHWARZWALDSPITZE!| +|08/01/2022 03:54:37| |stupid wani| +|08/01/2022 03:54:37| |GAME... OVER| +|08/01/2022 03:54:38| |I LOVE ERIKA| +|08/01/2022 03:54:38| |"Japanese" "Tanks"| +|08/01/2022 03:54:39| |GAMERS RISE UP| +|08/01/2022 03:54:39| Hu +|08/01/2022 03:54:40| \o +|08/01/2022 03:54:43| |the gamers should be used to nazis BTFOing them online already so its fine| +|08/01/2022 03:54:43| |they blocked for miho, its ok| +|08/01/2022 03:54:43| |DUMB WANI| +|08/01/2022 03:54:44| |Gamers will rise again| +|08/01/2022 03:54:46| |TL note: "It's a fierce battle" means 'it is a fierce battle'| +|08/01/2022 03:54:50| |NAOMI IS SO FUCKING UGLY| +|08/01/2022 03:54:52| |Japanese """""""""tanks""""""""""| +|08/01/2022 03:54:54| |thanks tl kun| +|08/01/2022 03:54:55| |thanks tl | +|08/01/2022 03:54:55| |GAME OVER| +|08/01/2022 03:54:55| diejob +|08/01/2022 03:54:56| |It isn't jobbing if it's your first time. It's just losing| +|08/01/2022 03:54:57| |pls describe battle| +|08/01/2022 03:54:58| |GEEMU OBAH| +|08/01/2022 03:54:58| a-okay +|08/01/2022 03:54:59| |YOU TAKE THAT BACK| +|08/01/2022 03:55:00| |MOU GE-MU O-BA| +|08/01/2022 03:55:04| |Are you okay, /a/?| +|08/01/2022 03:55:05| |NAOMI > ALL| +|08/01/2022 03:55:07| |I WILL NOT TAKE IT BACK| +|08/01/2022 03:55:11| |GAME OVER YEAAAAAAAAHHHHH| +|08/01/2022 03:55:11| |>Imagine not killing the nerds| +|08/01/2022 03:55:12| |wowie! panthers!| +|08/01/2022 03:55:12| |Should have bought the Battle Pass| +|08/01/2022 03:55:12| |FUCK U| +|08/01/2022 03:55:13| |oh yeah the tanks| +|08/01/2022 03:55:13| SMOKEY +|08/01/2022 03:55:13| |Dear god she's lost an eye!| +|08/01/2022 03:55:13| smokey +|08/01/2022 03:55:14| |buster wolf?| +|08/01/2022 03:55:15| |LITERALLY RUINED THE WHOLE SHOW| +|08/01/2022 03:55:16| |smokey smokes| +|08/01/2022 03:55:18| |>king tinger spam| +|08/01/2022 03:55:20| SMOKEY +|08/01/2022 03:55:20| |FEST STEHT UND TREU DI WACHT DIE WACHT AM RHEIN| +|08/01/2022 03:55:22| |Now I'll proceed to shotgun this glass of vodka pray for me anons| +|08/01/2022 03:55:22| |Smoke em if you got em| +|08/01/2022 03:55:23| |shut up nakkun| +|08/01/2022 03:55:23| |ONLY YOU CAN PREVER SMOKE FIRES| +|08/01/2022 03:55:23| |BRAVO RELIC| +|08/01/2022 03:55:23| |Speaking or, smoke break when=| +|08/01/2022 03:55:24| |moko moko | +|08/01/2022 03:55:24| |MOKUMOKU YOI| +|08/01/2022 03:55:25| |COULD DUCE GET FERRARI ENGINES?| +|08/01/2022 03:55:26| |smokey joe| +|08/01/2022 03:55:26| |mokumoku yaoi| +|08/01/2022 03:55:26| |MOKU MOKU YO| +|08/01/2022 03:55:27| IKZ +|08/01/2022 03:55:28| |moku moku yoi| +|08/01/2022 03:55:31| |operation smoke key| +|08/01/2022 03:55:31| MOKUMOKU +|08/01/2022 03:55:32| |MOKU MOKU| +|08/01/2022 03:55:33| GASSSSSSSSSSSSSSSSSSSS +|08/01/2022 03:55:33| |SHID AND FARD| +|08/01/2022 03:55:34| もくもく +|08/01/2022 03:55:35| |MOKU MOKU| +|08/01/2022 03:55:36| |MOKU MOKU HAJIME| +|08/01/2022 03:55:37| |Dude weed lmao| +|08/01/2022 03:55:38| |moku moku yoi!| +|08/01/2022 03:55:38| GASSED +|08/01/2022 03:55:38| |MOKU MOKU| +|08/01/2022 03:55:38| |moku moku| +|08/01/2022 03:55:40| |MOKU MOKU| +|08/01/2022 03:55:40| BRAAAAAAP +|08/01/2022 03:55:41| |Gas the j| +|08/01/2022 03:55:41| |WO ALLE STRASSEN ENDEN| +|08/01/2022 03:55:43| |420 | +|08/01/2022 03:55:43| |blaze it| +|08/01/2022 03:55:45| DUDE +|08/01/2022 03:55:47| |ROLLIN COAL| +|08/01/2022 03:55:49| |GAS THEM| +|08/01/2022 03:55:49| |>popping smoke in an open field| +|08/01/2022 03:55:50| |Mustard Gas| +|08/01/2022 03:55:50| |MOKU MOKU| +|08/01/2022 03:55:50| |SHUT UP WANI| +|08/01/2022 03:55:52| |DUDE WEED| +|08/01/2022 03:55:52| もくもくすごい +|08/01/2022 03:55:52| |is that legal?| +|08/01/2022 03:55:53| |r u doubting the nishizumi erika????| +|08/01/2022 03:55:54| |ZEHNTAUSEND MAN| +|08/01/2022 03:55:55| |ERIKA o/| +|08/01/2022 03:55:56| |dumb wani| +|08/01/2022 03:55:57| |zyklon b | +|08/01/2022 03:55:57| |CONSERVE YOUR AMMO| +|08/01/2022 03:55:58| |>shooting tanks| +|08/01/2022 03:56:00| |can guppies even run out of shells?| +|08/01/2022 03:56:01| MAHoo~ +|08/01/2022 03:56:02| |tiger II's are so sexy| +|08/01/2022 03:56:03| |The alligator fears the smoke| +|08/01/2022 03:56:04| |>stray round hits Miho| +|08/01/2022 03:56:04| |Smart Maho and stupid Wani| +|08/01/2022 03:56:05| |Erika is so bad at this| +|08/01/2022 03:56:05| |dumb wani| +|08/01/2022 03:56:06| YES +|08/01/2022 03:56:06| |machine guns are kino| +|08/01/2022 03:56:09| |I want Erika to dominate me completely| +|08/01/2022 03:56:10| |panzer turrets are like penises| +|08/01/2022 03:56:12| |NINJA SUREYA DESU| +|08/01/2022 03:56:13| |yes but don't worry about shells| +|08/01/2022 03:56:13| yaaas +|08/01/2022 03:56:14| >Porsche +|08/01/2022 03:56:15| |PEKOE CUTE| +|08/01/2022 03:56:16| |has anyone ever run out of shells?| +|08/01/2022 03:56:17| ????????????????????? +|08/01/2022 03:56:17| |STFU SLAG| +|08/01/2022 03:56:18| ???????????? +|08/01/2022 03:56:18| |they have a porsche tiger brehs| +|08/01/2022 03:56:18| ????????????????????????????????????? +|08/01/2022 03:56:19| bongs +|08/01/2022 03:56:19| ??????????????????????????????? +|08/01/2022 03:56:20| ???????????????????????????????? +|08/01/2022 03:56:20| |SHUT UP SLAG| +|08/01/2022 03:56:20| |so True darj| +|08/01/2022 03:56:22| ?????????????????????????????? +|08/01/2022 03:56:22| |ALL IS FAIR IN LOVE AND WAR| +|08/01/2022 03:56:22| |WHO ASKED???| +|08/01/2022 03:56:23| |>Smokescreens are for powergamers| +|08/01/2022 03:56:23| ??????????????????????????? +|08/01/2022 03:56:23| |STFU DARJEELING| +|08/01/2022 03:56:23| |AHHHHH ENGRISH| +|08/01/2022 03:56:24| |SHUT UP SLAG| +|08/01/2022 03:56:24| |ORU IS | +|08/01/2022 03:56:25| ???????????????????????? +|08/01/2022 03:56:25| |You said that one ALREADY!| +|08/01/2022 03:56:25| |I want to dominate Erika completely | +|08/01/2022 03:56:25| |what did darj just say? I dont speak english| +|08/01/2022 03:56:25| |But it's not war?| +|08/01/2022 03:56:26| >bongs +|08/01/2022 03:56:26| ????? +|08/01/2022 03:56:27| |shut upppp| +|08/01/2022 03:56:27| ???????????????''' +|08/01/2022 03:56:27| |SPEAK ENGLISH PLEASE| +|08/01/2022 03:56:27| |in english, poindexter| +|08/01/2022 03:56:27| |THE FUCK WAS THAT DUMB SLAG| +|08/01/2022 03:56:28| |DARJEELING SHUT THE FUCK UP| +|08/01/2022 03:56:29| |thick tank| +|08/01/2022 03:56:30| |WHAT DID SHE MEAN BY THIS?| +|08/01/2022 03:56:30| |Finally a real proverb| +|08/01/2022 03:56:31| 3head +|08/01/2022 03:56:32| |Have you heard this saying?| +|08/01/2022 03:56:33| |*bomb civilians*| +|08/01/2022 03:56:34| |My cas come to watch| +|08/01/2022 03:56:34| FAT +|08/01/2022 03:56:35| |WHAT THE FUCK DOES THAT MEAN| +|08/01/2022 03:56:36| ????????????????????????? +|08/01/2022 03:56:36| |to be fair that is a real saying| +|08/01/2022 03:56:37| |kek we towed it| +|08/01/2022 03:56:38| |WHAT THE FUCKS WAS THAT JUST NOW DUMB SLAG| +|08/01/2022 03:56:38| |Tiger leave cover to chase the enemy its fury all over again| +|08/01/2022 03:56:39| FAT +|08/01/2022 03:56:39| ????????????????? +|08/01/2022 03:56:39| |WHAT DID SHE MEAN BY THIS| +|08/01/2022 03:56:41| CUTE +|08/01/2022 03:56:41| cute +|08/01/2022 03:56:43| *Cat +|08/01/2022 03:56:43| |no one understands English, stop speaking it Darj| +|08/01/2022 03:56:44| |KAYUSHA CUNNY ON MY NECK| +|08/01/2022 03:56:44| |SHUT THE FUCK UP BONG| +|08/01/2022 03:56:46| |CUTE KATYU| +|08/01/2022 03:56:46| |can we get a translator's note on "All is fair in love and war" ?| +|08/01/2022 03:56:46| |poor time to masturbate, katyusha| +|08/01/2022 03:56:46| |katyushas thighs| +|08/01/2022 03:56:46| かわいい +|08/01/2022 03:56:46| |>Fat shaming a tank| +|08/01/2022 03:56:46| CUTE +|08/01/2022 03:56:48| CUTE +|08/01/2022 03:56:48| |oh god my final drive| +|08/01/2022 03:56:48| CUTE +|08/01/2022 03:56:49| |THE POWER OF FRIENDSIHP| +|08/01/2022 03:56:49| thighs +|08/01/2022 03:56:49| |just fire backwards to propel itself| +|08/01/2022 03:56:50| Cute! +|08/01/2022 03:56:50| CUTE +|08/01/2022 03:56:50| |ARR IZ FAYYA IN RUBU ANDO WAAA| +|08/01/2022 03:56:50| TEAMWORK +|08/01/2022 03:56:51| KUTETUSHA +|08/01/2022 03:56:53| |PROSHU TIGA| +|08/01/2022 03:56:53| |God I wish that were me| +|08/01/2022 03:56:53| CUTEEEE +|08/01/2022 03:56:54| midget +|08/01/2022 03:56:54| cute +|08/01/2022 03:56:56| |are the smoke launchers legal?| +|08/01/2022 03:56:56| OST +|08/01/2022 03:56:56| |>russian loli will never fuck the back of your head| +|08/01/2022 03:56:59| buffering +|08/01/2022 03:57:00| thighs +|08/01/2022 03:57:01| |kay and darj speak engrish to eachother| +|08/01/2022 03:57:03| CUTE +|08/01/2022 03:57:04| buffers +|08/01/2022 03:57:05| |are we the baddies?| +|08/01/2022 03:57:09| |STUPID DUCKS AND THEIR BUFFERING| +|08/01/2022 03:57:09| GAS +|08/01/2022 03:57:09| |from what| +|08/01/2022 03:57:09| |LETS ROOL SOME COAL| +|08/01/2022 03:57:09| |pre-recorded buffering again| +|08/01/2022 03:57:10| butt +|08/01/2022 03:57:11| BUTTHURT +|08/01/2022 03:57:12| |there is this saying about pulling a tiger up a hill| +|08/01/2022 03:57:19| |my hands cramp from typing| +|08/01/2022 03:57:19| |why does her butt hurt?| +|08/01/2022 03:57:22| |Her butt hurts? From what?| +|08/01/2022 03:57:24| BUTT +|08/01/2022 03:57:26| |(TL's note: "Delinquents" means "niggers")| +|08/01/2022 03:57:27| |you know| +|08/01/2022 03:57:27| costanza.jpg +|08/01/2022 03:57:28| |from butt secks| +|08/01/2022 03:57:28| |boko map| +|08/01/2022 03:57:29| BOKO +|08/01/2022 03:57:29| |>my feet hurt | +|08/01/2022 03:57:30| |I now understand the Wani hate. I forgot she was like this in the show| +|08/01/2022 03:57:36| |I can';t ype anymore| +|08/01/2022 03:57:37| |thanks tl kun| +|08/01/2022 03:57:39| |tl:UTE means "fire"| +|08/01/2022 03:57:40| FEUER +|08/01/2022 03:57:44| |its ok because charcter development| +|08/01/2022 03:57:45| |>this tank is cramped| +|08/01/2022 03:57:45| |shut up darj| +|08/01/2022 03:57:46| boko +|08/01/2022 03:57:46| |Erika redemption arc soon | +|08/01/2022 03:57:47| TTTTTTTEEEEEEEEEEEEEEEE +|08/01/2022 03:57:48| |bro what is this video quality 360p?| +|08/01/2022 03:57:50| |UTE MEANS UTE| +|08/01/2022 03:57:51| ??????????????????????? +|08/01/2022 03:57:51| |SHUT UP DUMB SLAG| +|08/01/2022 03:57:52| |godlike ost here| +|08/01/2022 03:57:53| |shiho is the biggest bitch ever| +|08/01/2022 03:57:55| |CUTE PEKOE| +|08/01/2022 03:57:56| HETZER +|08/01/2022 03:57:57| |cute peko blush| +|08/01/2022 03:57:57| |tl note: "ute" means 撃て| +|08/01/2022 03:57:58| |YES DARJEELING NOW STFU| +|08/01/2022 03:57:58| |hetzer gonna hetz| +|08/01/2022 03:57:59| |UTE UTE| +|08/01/2022 03:58:01| |REMINDS ME OF A SAYING| +|08/01/2022 03:58:01| |CHAD HETZER| +|08/01/2022 03:58:02| |Shyut up darjeerling, just be tea agaiun| +|08/01/2022 03:58:03| |SEX WITH ANZU| +|08/01/2022 03:58:07| |TL Note: Hetzter means tank| +|08/01/2022 03:58:09| |WHY DIDN'T THEY JUST SHOOT THE FLAG TANK?????| +|08/01/2022 03:58:09| flat +|08/01/2022 03:58:13| |Momo should stick to loading| +|08/01/2022 03:58:14| |pekoe save gloriana from this crazy woman| +|08/01/2022 03:58:18| |Why is Kaicho so powerful| +|08/01/2022 03:58:20| |SEX WITH AN ANIME GIRL| +|08/01/2022 03:58:20| |I love reloading animations| +|08/01/2022 03:58:20| |they can't pen it| +|08/01/2022 03:58:21| |ANNO CHIBI| +|08/01/2022 03:58:26| |TL Note: Panzer means sensha| +|08/01/2022 03:58:28| |TL Note: "Anzu" means "SEX"| +|08/01/2022 03:58:29| |when does pekoe choke darj in her sleep| +|08/01/2022 03:58:29| |Pekoe best loader| +|08/01/2022 03:58:30| |THEIR GUN CANT PENETRATE IT RETARD| +|08/01/2022 03:58:30| |CZECH THIS OUT| +|08/01/2022 03:58:33| |THANKS TL| +|08/01/2022 03:58:34| |thanks tl| +|08/01/2022 03:58:37| |why did she take out the flag tank?| +|08/01/2022 03:58:37| |THANKS TLS| +|08/01/2022 03:58:40| |when does pekoe choke darj in her sleep| +|08/01/2022 03:58:41| |HILL SCENE!| +|08/01/2022 03:58:44| |where have I seen this scene before?| +|08/01/2022 03:58:45| |pravda copied this| +|08/01/2022 03:58:46| ute +|08/01/2022 03:58:49| |TL Note: "Flat" = "perfect"| +|08/01/2022 03:58:51| |lamo look at that tank with the tiny little gun lamo| +|08/01/2022 03:58:51| |>Imagine a hill defeating superiour German engineering| +|08/01/2022 03:58:52| |everynight but darj isnt sleeping| +|08/01/2022 03:58:52| |STAND YOUR GROUND| +|08/01/2022 03:58:54| |image fagmiliar| +|08/01/2022 03:58:57| |what happened to move foward?| +|08/01/2022 03:58:58| |VOLLEY FIRE| +|08/01/2022 03:59:04| |imagine trying to win against the nishizumi style| +|08/01/2022 03:59:06| |*transmission bursts into flames*| +|08/01/2022 03:59:07| |ah shit, here we go again| +|08/01/2022 03:59:07| |looks familiar....| +|08/01/2022 03:59:09| |TL Note: Schneizel just made an illegal move in chess, so it doesn't make sense that he could say checkmate, he might possibly| +|08/01/2022 03:59:11| |russians would have simply dug out the hill| +|08/01/2022 03:59:12| |10 min river scene coming up| +|08/01/2022 03:59:13| |OB'S STURMT ODER SCHNEIT| +|08/01/2022 03:59:14| |there is no maus to snipe| +|08/01/2022 03:59:15| |they're no match for the nishizumi style| +|08/01/2022 03:59:15| |ALRIGHT EVERYONE LET'S DIRECTLY ASSAULT A PREPARED POSITION| +|08/01/2022 03:59:16| FEUER +|08/01/2022 03:59:20| |TL Note: Ute is a geman feminine name| +|08/01/2022 03:59:22| |PEW PEW| +|08/01/2022 03:59:27| |where is the maus right now?| +|08/01/2022 03:59:29| |thanks tl| +|08/01/2022 03:59:30| |Transmisson: my time has come| +|08/01/2022 03:59:30| |>cut off copypasta| +|08/01/2022 03:59:34| |in transit| +|08/01/2022 03:59:35| |TL NOTE: ute is an australian truck| +|08/01/2022 03:59:37| |ES BRAUST UNSER PANZER IM STURMWIND DAHIN| +|08/01/2022 03:59:38| |just like kursk boys| +|08/01/2022 03:59:39| |Ob die Sonne uns lacht| +|08/01/2022 03:59:40| |STUG STUG STUG STUG| +|08/01/2022 03:59:43| |OH NO GERMAN BROS| +|08/01/2022 03:59:45| |I HATE THE ANTI MIHO| +|08/01/2022 03:59:47| |TL Note: Panzerlied means Erika| +|08/01/2022 03:59:54| |TL note; UTE is my dick splerginh| +|08/01/2022 03:59:56| KITAAAAAAAAA +|08/01/2022 03:59:56| |IT'S OVER MAHO I HAVE THE HIGH GROUND| +|08/01/2022 03:59:57| |hetzer no oniichan mitaina yastsu| +|08/01/2022 03:59:57| |FUCKING DEAD| +|08/01/2022 03:59:59| |I wanna penetrate Yukaris rear armor with my KwK L/70 if you know what I mean| +|08/01/2022 04:00:00| |the fuck is a stuart going to do against a king tiger| +|08/01/2022 04:00:02| |panzerlied means that u cant trust a tank| +|08/01/2022 04:00:03| KITAAAAA +|08/01/2022 04:00:03| |tl note: maho is my wife| +|08/01/2022 04:00:03| |jagdbros... its over...| +|08/01/2022 04:00:06| |NIPPON ICHI| +|08/01/2022 04:00:07| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH +|08/01/2022 04:00:07| Shinzobubro +|08/01/2022 04:00:07| |Tl note: I'm retaded| +|08/01/2022 04:00:08| | ITS OVER| +|08/01/2022 04:00:09| ENTER +|08/01/2022 04:00:11| JAGDTIGER +|08/01/2022 04:00:12| |NIPPON ICHI| +|08/01/2022 04:00:12| KITAAAAAAAAAAAAA +|08/01/2022 04:00:12| ENTER +|08/01/2022 04:00:12| ownd +|08/01/2022 04:00:12| NIPPONICHI +|08/01/2022 04:00:12| |big boy| +|08/01/2022 04:00:13| MAHO +|08/01/2022 04:00:13| ENTER +|08/01/2022 04:00:14| ENTER +|08/01/2022 04:00:15| ENTER +|08/01/2022 04:00:15| ENTER +|08/01/2022 04:00:15| |OH NO| +|08/01/2022 04:00:16| |NICE MISS| +|08/01/2022 04:00:16| enter +|08/01/2022 04:00:18| Uhoh +|08/01/2022 04:00:18| |Where were they even hiding this thing| +|08/01/2022 04:00:18| |FAT TANK| +|08/01/2022 04:00:19| |JAGDTIGER A SHIT| +|08/01/2022 04:00:19| |JEW SENSHA| +|08/01/2022 04:00:19| |OH SHIT ITS THE JAGDTIGER| +|08/01/2022 04:00:20| |Yagdo tea gar| +|08/01/2022 04:00:21| |isn't the jagdtiger kinda shit?| +|08/01/2022 04:00:21| |TL note: I'm wasted| +|08/01/2022 04:00:21| |transmission explodes| +|08/01/2022 04:00:21| |NIPPON ICHIIIIIIIIIIIII| +|08/01/2022 04:00:22| folded +|08/01/2022 04:00:22| |That'a a big tank| +|08/01/2022 04:00:25| |ENTAAA ENTAAA JADGTIGER| +|08/01/2022 04:00:30| |not the jagdnigger! anything but that!| +|08/01/2022 04:00:31| |It's Saypri level fat| +|08/01/2022 04:00:32| |they were hiding it off screen| +|08/01/2022 04:00:32| F +|08/01/2022 04:00:35| |>no casualties| +|08/01/2022 04:00:35| |Aim for the tracks.| +|08/01/2022 04:00:41| Saypri... +|08/01/2022 04:00:44| |LIEB VATERLAND MAGST RUHIG SEIN| +|08/01/2022 04:00:46| |like retards?| +|08/01/2022 04:00:46| |>champions fight by spamming heavy tanks| +|08/01/2022 04:00:47| |>jew sensha| +|08/01/2022 04:00:48| |Fucking pay to win| +|08/01/2022 04:00:50| GUTS +|08/01/2022 04:00:51| |they havent hit shit| +|08/01/2022 04:00:54| |lovely smoke effects on the explosions | +|08/01/2022 04:00:55| >champions +|08/01/2022 04:00:55| |What does the Type 89 even hope to achieve?| +|08/01/2022 04:01:01| |GANBARE STUG| +|08/01/2022 04:01:02| |nigger forest| +|08/01/2022 04:01:02| |DEUS VULT| +|08/01/2022 04:01:03| SASUGA +|08/01/2022 04:01:03| |Just load gold ammo | +|08/01/2022 04:01:03| |WE GOT TOO COCKY| +|08/01/2022 04:01:03| |pay2win nigger forest| +|08/01/2022 04:01:03| Ottomanbros... +|08/01/2022 04:01:04| |history gang rise up| +|08/01/2022 04:01:07| |DEUS VULT| +|08/01/2022 04:01:14| |>lazy fucking stu counicl| +|08/01/2022 04:01:15| ANzu +|08/01/2022 04:01:20| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:01:22| /his/ +|08/01/2022 04:01:23| |just chillin| +|08/01/2022 04:01:24| |Yukari a cute| +|08/01/2022 04:01:25| |THANKS TL| +|08/01/2022 04:01:25| |thanks tl| +|08/01/2022 04:01:26| |hull down| +|08/01/2022 04:01:27| anzu +|08/01/2022 04:01:29| |Anzu means UOOOOOOOOOOOOHHHHHHHHH| +|08/01/2022 04:01:29| |18 > 7, How is this even legal| +|08/01/2022 04:01:31| |Yukari is so cute| +|08/01/2022 04:01:33| |OUR THING| +|08/01/2022 04:01:33| BAITER +|08/01/2022 04:01:35| >bait +|08/01/2022 04:01:35| |master baiter| +|08/01/2022 04:01:36| BAIT! +|08/01/2022 04:01:36| >BAIT +|08/01/2022 04:01:37| |THIS IS BAIT| +|08/01/2022 04:01:38| BAITED +|08/01/2022 04:01:38| BAITER +|08/01/2022 04:01:38| BAITER +|08/01/2022 04:01:39| |This is Bait| +|08/01/2022 04:01:40| |THIS IS BAIT| +|08/01/2022 04:01:41| BAITER +|08/01/2022 04:01:41| OST +|08/01/2022 04:01:41| |this is bait| +|08/01/2022 04:01:42| HETZER +|08/01/2022 04:01:43| |lesser Baiters| +|08/01/2022 04:01:43| |I'm baitin'| +|08/01/2022 04:01:44| >bait +|08/01/2022 04:01:44| OST +|08/01/2022 04:01:44| Masterb8 +|08/01/2022 04:01:44| OST +|08/01/2022 04:01:45| |heavy tanks legit useless in senshado just shoot the track| +|08/01/2022 04:01:45| |>baits their whole team| +|08/01/2022 04:01:45| b8 +|08/01/2022 04:01:46| |master baiter| +|08/01/2022 04:01:47| |THIS LOOKS LIKE A JOB FOR ME| +|08/01/2022 04:01:47| |cute extra| +|08/01/2022 04:01:47| |Choot them in the anoos| +|08/01/2022 04:01:49| |THE THING| +|08/01/2022 04:01:49| |THE MASTER BAITER| +|08/01/2022 04:01:50| |they're going to use THAT?| +|08/01/2022 04:01:50| |UNLIMITED BAIT WORKS| +|08/01/2022 04:01:50| THAT +|08/01/2022 04:01:51| |GLORIOUS CZECHNOLOGY| +|08/01/2022 04:01:52| |MASTER BAITING WITH ANZU| +|08/01/2022 04:01:53| |they're about to do THAT| +|08/01/2022 04:01:54| JAGDPANTHER-CHAN! +|08/01/2022 04:01:54| |its not even bait at this point| +|08/01/2022 04:01:55| jobbed +|08/01/2022 04:01:55| |BUTT SEGGS BUTT SEGGS| +|08/01/2022 04:01:55| bait +|08/01/2022 04:01:56| *that* +|08/01/2022 04:01:56| |this is bait| +|08/01/2022 04:01:56| owned +|08/01/2022 04:01:56| |GOT EM| +|08/01/2022 04:01:57| |GONNA HETZ| +|08/01/2022 04:01:57| |NOT AGAIN| +|08/01/2022 04:01:57| Baited +|08/01/2022 04:01:58| |SEE YOU LATER NERDS| +|08/01/2022 04:01:58| KONOOOOOO +|08/01/2022 04:01:58| |poor Emi| +|08/01/2022 04:02:00| cucked +|08/01/2022 04:02:00| |fixed turret monkey| +|08/01/2022 04:02:01| TROLLLED +|08/01/2022 04:02:01| |JAGPANTHER GIRL BEST GIRL| +|08/01/2022 04:02:01| |no name| +|08/01/2022 04:02:02| KONOOOOOOOOO +|08/01/2022 04:02:02| w +|08/01/2022 04:02:02| |Wow, czech out this asshole, who does he think he is| +|08/01/2022 04:02:03| |No not my cute german unnamed waifu| +|08/01/2022 04:02:03| |ez u mad| +|08/01/2022 04:02:04| TOTSUGEKI +|08/01/2022 04:02:04| TOTSUGEKI +|08/01/2022 04:02:05| |MOBILITY KILL LOL| +|08/01/2022 04:02:05| ANGERY +|08/01/2022 04:02:05| TOTSUGEKI +|08/01/2022 04:02:05| TOTSUGEKI +|08/01/2022 04:02:07| TOTSUGEKI +|08/01/2022 04:02:07| >TRACKED +|08/01/2022 04:02:07| TOTSUGEKI! +|08/01/2022 04:02:08| TOTSUGEKI +|08/01/2022 04:02:08| |Nishi style| +|08/01/2022 04:02:09| TOTSUGEKI +|08/01/2022 04:02:09| TOTSUGEKI +|08/01/2022 04:02:09| |krauts btfo| +|08/01/2022 04:02:10| TOTSUGEKI +|08/01/2022 04:02:11| |SHE MAD| +|08/01/2022 04:02:11| TOTSUGEKI +|08/01/2022 04:02:11| TOOOOOOOOOOOOOTSSSSUUUUUUUUUUUUUGEEEEEEEEEKIIIIIIIIIIIIIIIIIII +|08/01/2022 04:02:13| TOTSUGEKI +|08/01/2022 04:02:13| |HIT THEIR ENGINES| +|08/01/2022 04:02:14| TOTSUGEKI +|08/01/2022 04:02:14| |T O T S U G E K I| +|08/01/2022 04:02:14| 突撃 +|08/01/2022 04:02:14| |Did someone jsut say Totsugeki?| +|08/01/2022 04:02:17| TOTSUGEKI +|08/01/2022 04:02:17| |TOTSUGEKI!!!!!!!!!!!!!!! IT ALWAYS WORKS| +|08/01/2022 04:02:18| TOTSUGEKI +|08/01/2022 04:02:20| |Anzu about to ram some ass| +|08/01/2022 04:02:20| TOTSUGEKI +|08/01/2022 04:02:21| TOTSUGEKI +|08/01/2022 04:02:22| PENETRATED +|08/01/2022 04:02:23| |What mango?| +|08/01/2022 04:02:24| CHAD +|08/01/2022 04:02:24| GIW +|08/01/2022 04:02:25| GOD +|08/01/2022 04:02:27| |'cha looking at?| +|08/01/2022 04:02:28| |TO TSU GE KI| +|08/01/2022 04:02:30| >penetrated +|08/01/2022 04:02:33| |I want to penetrate Maho's line| +|08/01/2022 04:02:33| |hello fellow krauts| +|08/01/2022 04:02:34| |Hetzer gonnaq hetzer| +|08/01/2022 04:02:34| |the panther commander is seriously cute| +|08/01/2022 04:02:36| |BODY BLOCKS | +|08/01/2022 04:02:36| BAITED +|08/01/2022 04:02:39| |HETZERS GONNA HETZ| +|08/01/2022 04:02:41| |TENNOHEIKA BANZIA!!!| +|08/01/2022 04:02:42| |kicking girl best girl| +|08/01/2022 04:02:42| |tfw no gun depression| +|08/01/2022 04:02:43| |TOP TIER STRATS| +|08/01/2022 04:02:43| KICK +|08/01/2022 04:02:46| |FAT FUCKING TANKS CAN'T GET UP HILL| +|08/01/2022 04:02:47| |why didn't they get a faster tank to do the baiting| +|08/01/2022 04:02:51| baited +|08/01/2022 04:02:51| |is this the nishizumi style?| +|08/01/2022 04:02:51| |ANZU PENETRATING ME FROM BEHIND| +|08/01/2022 04:02:54| CUTEYUSHA +|08/01/2022 04:02:55| |Nishizumi style a shit| +|08/01/2022 04:02:55| CUUUUUUUUUUUUUTE +|08/01/2022 04:02:57| |CUTE | +|08/01/2022 04:02:58| nishizumibros +|08/01/2022 04:02:58| |katyushas thighs!| +|08/01/2022 04:02:58| cute +|08/01/2022 04:02:59| |StuGIII Crew are my wives| +|08/01/2022 04:03:00| |ANZU PENETRATING STYLE| +|08/01/2022 04:03:01| |cute yusha| +|08/01/2022 04:03:02| baited +|08/01/2022 04:03:03| CUTE +|08/01/2022 04:03:04| かわいいすぎる +|08/01/2022 04:03:04| thighs +|08/01/2022 04:03:05| |MY LITTLE STALIN CAN'T BE THIS CUTE| +|08/01/2022 04:03:06| cute +|08/01/2022 04:03:07| KYUTEUSHA +|08/01/2022 04:03:08| forehead! +|08/01/2022 04:03:08| |What is the Nishizumi style?| +|08/01/2022 04:03:09| midget +|08/01/2022 04:03:14| |USA USA USA| +|08/01/2022 04:03:15| |does katyusha get horny rubbing on Nonna like that?| +|08/01/2022 04:03:16| |cute jobbers| +|08/01/2022 04:03:17| |STFU ALISA| +|08/01/2022 04:03:18| |was the real Stalin this cute too?| +|08/01/2022 04:03:18| |smart kay| +|08/01/2022 04:03:19| かわいいよね~ +|08/01/2022 04:03:20| |KAY READ THE MANGA| +|08/01/2022 04:03:24| |absolute state| +|08/01/2022 04:03:26| |ONE TRICK PONIES| +|08/01/2022 04:03:26| |Kay is smart| +|08/01/2022 04:03:26| |nonna is the one that gets horny| +|08/01/2022 04:03:27| |she rubs on nonna because it makes her horny| +|08/01/2022 04:03:28| |Nishizumi Style is when you get fucked because your enemy is on a hill| +|08/01/2022 04:03:30| |smart kay| +|08/01/2022 04:03:30| |The primary function of Nonna is to be rubbed| +|08/01/2022 04:03:31| F +|08/01/2022 04:03:35| |What happening /a/ why are they running circle around us| +|08/01/2022 04:03:38| |so this is the nishizumi style| +|08/01/2022 04:03:41| |tonk CHARGGGGGGGGGGGGGE| +|08/01/2022 04:03:46| |Nishizumi Style is letting your comrades drown| +|08/01/2022 04:03:46| sayonara +|08/01/2022 04:03:48| |How does that even work| +|08/01/2022 04:03:50| TOTSUGEKI! +|08/01/2022 04:03:53| |GAS GAS GAS| +|08/01/2022 04:03:53| RICHOCHET +|08/01/2022 04:03:53| |FUCKING BULLSHIT RICHOCET| +|08/01/2022 04:03:54| |So this is the power of frontal assaults on prepared positions| +|08/01/2022 04:03:54| |SAYONARA TOTSTUGEKI| +|08/01/2022 04:03:55| TOTSUGEKI +|08/01/2022 04:03:59| |Yare yare~| +|08/01/2022 04:04:01| やれやれ +|08/01/2022 04:04:01| |yare yare| +|08/01/2022 04:04:01| |Why doesn't every tank just use smoke, seems like op strat| +|08/01/2022 04:04:01| yahoo +|08/01/2022 04:04:03| |Is the tigers armor really that strong?| +|08/01/2022 04:04:05| |yare yare| +|08/01/2022 04:04:06| |why did they dismount the hail again| +|08/01/2022 04:04:09| |>Plot armor| +|08/01/2022 04:04:10| |Nishizumi-style is the jobber's choice of tactic| +|08/01/2022 04:04:11| |PLOT ARMOR STYLE| +|08/01/2022 04:04:12| USA +|08/01/2022 04:04:13| CHOMP +|08/01/2022 04:04:13| |THERE IT IS| +|08/01/2022 04:04:14| |sun tzu: "so much for mountain warfare"| +|08/01/2022 04:04:17| |americans eating again| +|08/01/2022 04:04:18| |BEST TEAM| +|08/01/2022 04:04:20| |AMERILARDS EATING POPCORN| +|08/01/2022 04:04:20| |sun tzu said that.| +|08/01/2022 04:04:21| |>fat ameriburger shoveling corn into her face| +|08/01/2022 04:04:22| |MUH +100mm PLATE| +|08/01/2022 04:04:22| |NO HOSHINO | +|08/01/2022 04:04:23| |LEOPON BEST| +|08/01/2022 04:04:23| |WITNESS ME!| +|08/01/2022 04:04:23| |porsche tigerbros...| +|08/01/2022 04:04:23| F +|08/01/2022 04:04:25| |>live repairs| +|08/01/2022 04:04:27| qt +|08/01/2022 04:04:27| BASED\ +|08/01/2022 04:04:27| |My German tank can't possibly be this shit| +|08/01/2022 04:04:27| |>Carbon coated| +|08/01/2022 04:04:28| diajabou +|08/01/2022 04:04:28| |he really did| +|08/01/2022 04:04:28| |cute engineer| +|08/01/2022 04:04:29| |BASED /o/fags| +|08/01/2022 04:04:29| /o/ +|08/01/2022 04:04:30| |based /o/ team| +|08/01/2022 04:04:32| |CALM ME DOWN PLEASE| +|08/01/2022 04:04:33| SASUGA +|08/01/2022 04:04:33| CUTE +|08/01/2022 04:04:38| |God i whish i was that Leopon| +|08/01/2022 04:04:38| |Love this team| +|08/01/2022 04:04:40| |CARBON PLATING| +|08/01/2022 04:04:45| |Those better be asbestos gloves.| +|08/01/2022 04:04:46| TROLLED +|08/01/2022 04:04:47| |Sun Tzu: "never be saunders or anzio as they job"| +|08/01/2022 04:04:48| ! +|08/01/2022 04:04:49| |DUMB WANI| +|08/01/2022 04:04:49| CLANG +|08/01/2022 04:04:50| |german engineering moment| +|08/01/2022 04:04:50| |God dammit I knew we should have got the mishimoto| +|08/01/2022 04:04:51| |get fucked erika| +|08/01/2022 04:04:52| LMAO +|08/01/2022 04:04:55| |SUPERIOR GERMAN ENGINEERING| +|08/01/2022 04:04:56| |get dabbed on erishit| +|08/01/2022 04:04:58| |Erika BTFO| +|08/01/2022 04:04:59| |SASUGA RERA| +|08/01/2022 04:05:00| |LUCK | +|08/01/2022 04:05:02| |Fate conspires against Erika| +|08/01/2022 04:05:04| SEETHING +|08/01/2022 04:05:04| |girl has the best view of the house| +|08/01/2022 04:05:06| |>just the tracks| +|08/01/2022 04:05:07| |ERIKA SEETHING| +|08/01/2022 04:05:08| |STUCK WANI| +|08/01/2022 04:05:09| |[AUTISTIC SCREECHING]| +|08/01/2022 04:05:09| |NIPPON ICHI| +|08/01/2022 04:05:09| GERMANS +|08/01/2022 04:05:10| hitler-sama... +|08/01/2022 04:05:10| |Have you heard this saying?| +|08/01/2022 04:05:10| ` +|08/01/2022 04:05:11| |KONIGSTIGER TRANSMISSION | +|08/01/2022 04:05:11| |PEKOE CUTE| +|08/01/2022 04:05:12| >ducks! +|08/01/2022 04:05:12| Tantrum +|08/01/2022 04:05:13| SEETHING +|08/01/2022 04:05:13| |SEETHING WANI| +|08/01/2022 04:05:14| |Orai trash > famed German heavy tanks| +|08/01/2022 04:05:15| |CUTE WANI| +|08/01/2022 04:05:15| |wani spazzing out| +|08/01/2022 04:05:15| |I LOVE ERIKA| +|08/01/2022 04:05:16| |germans be like "yeah lets just have two rows of wheels"| +|08/01/2022 04:05:18| |COPE AND SEETHE YOU DUMB WANI| +|08/01/2022 04:05:18| |>GERMAN ENGINEERING| +|08/01/2022 04:05:20| PTSD +|08/01/2022 04:05:20| |FORD THE RIVER| +|08/01/2022 04:05:22| REEEEEEEE +|08/01/2022 04:05:22| |Erika is so cute when she's angry| +|08/01/2022 04:05:22| |waaay too long river scene| +|08/01/2022 04:05:25| |WANI IS VERY CUTE| +|08/01/2022 04:05:25| |get ready for moon jumps\| +|08/01/2022 04:05:26| |stomp stomp| +|08/01/2022 04:05:28| |HIGH IQ| +|08/01/2022 04:05:29| |DIE FAHNE HOCH| +|08/01/2022 04:05:29| |it was a lot more than two rows lol| +|08/01/2022 04:05:30| |Rolling that wheel like a bike wheel| +|08/01/2022 04:05:31| |kino time| +|08/01/2022 04:05:31| |SHE IS MY WIFE| +|08/01/2022 04:05:36| |water 2 stronk| +|08/01/2022 04:05:43| |M3 BROS I DON'T FEEL SO GOOD| +|08/01/2022 04:05:43| |Erika is so cute| +|08/01/2022 04:05:43| F +|08/01/2022 04:05:44| |>let me drown my teammates again| +|08/01/2022 04:05:44| |Even more Kino incoming| +|08/01/2022 04:05:46| |miho getting ptsd rn| +|08/01/2022 04:05:46| |ITS TIME FOR THE KINO| +|08/01/2022 04:05:47| RIP +|08/01/2022 04:05:48| |Time to FLYYYYYYYYYYYYY| +|08/01/2022 04:05:48| AAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:05:49| |i have lost litres of cum to Erika| +|08/01/2022 04:05:49| |was it 4 rows| +|08/01/2022 04:05:50| |time 2 JUMP!| +|08/01/2022 04:05:50| |WHAT ARE YOU DOING FRESHMEN| +|08/01/2022 04:05:50| BONK +|08/01/2022 04:05:50| |bros our heavy tank killer is STUCK| +|08/01/2022 04:05:51| AAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:05:51| |No... the bunnies...| +|08/01/2022 04:05:52| |Dumb bunnies| +|08/01/2022 04:05:53| |Sensha wo Kakeru Shoujo| +|08/01/2022 04:05:56| |imagine waterlogging a tank| +|08/01/2022 04:05:58| |i cant remember muh tiger drive system| +|08/01/2022 04:06:00| |Cinematic parallels to df3| +|08/01/2022 04:06:05| |>tfw when hydrolock your shitbox| +|08/01/2022 04:06:05| |TANK STUCK. PLEASE. I BEG YOU| +|08/01/2022 04:06:06| |USAGI SAN CHIIMU| +|08/01/2022 04:06:06| |>using american tanks| +|08/01/2022 04:06:07| |just leave them to die| +|08/01/2022 04:06:08| AZUSA! +|08/01/2022 04:06:08| |Who will rescue our previous bunnies?!!!!| +|08/01/2022 04:06:10| |i want to leave the usagis to drown and bask in the ambiance of their gargling screams| +|08/01/2022 04:06:10| |Just use them as meat shields| +|08/01/2022 04:06:10| |SAVE THE RABBITS| +|08/01/2022 04:06:13| >Usagis +|08/01/2022 04:06:13| |sasuga director san| +|08/01/2022 04:06:14| |rabbits are so useless| +|08/01/2022 04:06:15| |Bunnies in position for rape correction| +|08/01/2022 04:06:16| |YEah ditch em| +|08/01/2022 04:06:17| |just j out| +|08/01/2022 04:06:17| |>american engineeringh| +|08/01/2022 04:06:19| |DON'T LET THE BUNNIES DIE| +|08/01/2022 04:06:19| |useless cunny team| +|08/01/2022 04:06:23| PTSD +|08/01/2022 04:06:24| |>The entire crew of M3 Lee leaves the tank to engage enemy on foot| +|08/01/2022 04:06:25| >hand-twitch +|08/01/2022 04:06:25| PTSD +|08/01/2022 04:06:26| DRAMA +|08/01/2022 04:06:26| |lmao die| +|08/01/2022 04:06:26| |REMINDER: TANKS ARE NOT BOATS| +|08/01/2022 04:06:26| PTSD +|08/01/2022 04:06:27| KILL +|08/01/2022 04:06:28| |NOT AGAIN| +|08/01/2022 04:06:28| |Time for kino| +|08/01/2022 04:06:29| |PTSD EPISODE NOW| +|08/01/2022 04:06:29| |SAY IT WITH ME| +|08/01/2022 04:06:29| |great fucking job azusa| +|08/01/2022 04:06:29| PTSD +|08/01/2022 04:06:31| PTSD +|08/01/2022 04:06:31| |NOT THE WATER| +|08/01/2022 04:06:31| |Its happen again| +|08/01/2022 04:06:32| >trauma +|08/01/2022 04:06:33| |usagi san chiimu| +|08/01/2022 04:06:33| KILL! +|08/01/2022 04:06:33| PTSD +|08/01/2022 04:06:34| |leave me....| +|08/01/2022 04:06:35| ptsd +|08/01/2022 04:06:36| |Don't buly Azusa purple anon| +|08/01/2022 04:06:36| KINOOOOOOOOOOOOOOO +|08/01/2022 04:06:41| |Do it yourself lazy bitch| +|08/01/2022 04:06:41| |cunny san chiimu| +|08/01/2022 04:06:42| jobbers +|08/01/2022 04:06:42| cute +|08/01/2022 04:06:44| kino +|08/01/2022 04:06:45| KINO +|08/01/2022 04:06:45| |LIVE AND LET LIVE| +|08/01/2022 04:06:45| |Fly Miho fly!!!!| +|08/01/2022 04:06:46| CUTE +|08/01/2022 04:06:47| |CUTE FLUFF| +|08/01/2022 04:06:47| |Saori would be the first one to die| +|08/01/2022 04:06:48| CUTE +|08/01/2022 04:06:49| Azuzabros.... +|08/01/2022 04:06:50| |ROPE THE LOLIS| +|08/01/2022 04:06:50| |kino moment| +|08/01/2022 04:06:52| FLOOF +|08/01/2022 04:06:52| CUTE +|08/01/2022 04:06:52| |OH NO IM GONNA SAY THE K WORD| +|08/01/2022 04:06:52| eyes +|08/01/2022 04:06:52| |OOOH GOD IS THAT W-WATER!! SAVE ME SAORI-SAN!!| +|08/01/2022 04:06:56| |X to jump| +|08/01/2022 04:06:57| |I love her shiney eyes| +|08/01/2022 04:06:58| |BUNNIES GET THE ROPE| +|08/01/2022 04:06:58| |BEST FLUFF| +|08/01/2022 04:06:59| |CUTE HAI| +|08/01/2022 04:07:00| |miho gets the rope| +|08/01/2022 04:07:01| |Ja wer marschiert in feidensland| +|08/01/2022 04:07:01| |>Get the rope... | +|08/01/2022 04:07:04| HOP +|08/01/2022 04:07:04| |BEST GIRL| +|08/01/2022 04:07:04| |HARDCORE PARKOUR| +|08/01/2022 04:07:08| |>Trying to save the useless M3| +|08/01/2022 04:07:09| |anti-grav jumping: enabled| +|08/01/2022 04:07:09| |how is some rope meant to hold an m3| +|08/01/2022 04:07:16| |lemme just turn gravity down a little bit 'ere| +|08/01/2022 04:07:17| |FLOOF was the best moment in episode all downhill from here| +|08/01/2022 04:07:17| |MIHO IS SUICIDAL| +|08/01/2022 04:07:18| |USAGIS GET THE ROPE| +|08/01/2022 04:07:19| |sv_cheats 1| +|08/01/2022 04:07:19| |>double bowline hitch| +|08/01/2022 04:07:19| |our girl ;_;| +|08/01/2022 04:07:20| |really mako????| +|08/01/2022 04:07:20| |Long G hax| +|08/01/2022 04:07:20| |what is this type of neck microphone called?| +|08/01/2022 04:07:21| |miho bringing the rope to lynch azusa for drowning the tank| +|08/01/2022 04:07:22| |LOW GRAVITY: ON| +|08/01/2022 04:07:22| |that's some strong rope| +|08/01/2022 04:07:23| |cos it has wheels anon| +|08/01/2022 04:07:24| |Ropes and knots are pretty based | +|08/01/2022 04:07:25| |Save Azusa and Saki leave the rest| +|08/01/2022 04:07:25| |Miho is crazy| +|08/01/2022 04:07:26| |miho shouldve just tell them to rope themselves after jumping all the way to them and giving them the rope| +|08/01/2022 04:07:26| noclip +|08/01/2022 04:07:27| :stopmusic: +|08/01/2022 04:07:30| |YOU CAN(T) DO IT| +|08/01/2022 04:07:31| |Little did the world know, but Miho Nishizumi would later win the olympics in the long jump| +|08/01/2022 04:07:31| |Teammates > Win| +|08/01/2022 04:07:33| >OST +|08/01/2022 04:07:33| |no way in hell miho can tie a better knot than floof| +|08/01/2022 04:07:33| |u can pull a train with a rope| +|08/01/2022 04:07:33| |carbon coated rope| +|08/01/2022 04:07:36| |miho san yappari miho san ne| +|08/01/2022 04:07:39| |Just give me the rope Miho| +|08/01/2022 04:07:44| |I'M DEFYING GRAVITY| +|08/01/2022 04:07:48| |Miho channeling her inner Lupin| +|08/01/2022 04:07:48| >wahoo! +|08/01/2022 04:07:48| KINOOOOOOOOOOOO +|08/01/2022 04:07:48| |DOUBLE JUMP| +|08/01/2022 04:07:48| |Miho more like Mario| +|08/01/2022 04:07:49| |shinji would've given up long before this point| +|08/01/2022 04:07:50| |JA JA MOND JA| +|08/01/2022 04:07:51| |NEVER SKIP LEG DAY| +|08/01/2022 04:07:51| KINO +|08/01/2022 04:07:51| |BUNNY JUMP| +|08/01/2022 04:07:52| |FUCK gravity| +|08/01/2022 04:07:53| FLY +|08/01/2022 04:07:54| |gravity? who gives a crap about gravity?| +|08/01/2022 04:07:55| WOAH +|08/01/2022 04:07:56| KION +|08/01/2022 04:07:56| KINO +|08/01/2022 04:07:56| what!!! +|08/01/2022 04:07:57| KINO +|08/01/2022 04:07:57| |MIHO'S CREED| +|08/01/2022 04:07:58| KINO +|08/01/2022 04:07:58| |KINO KINO KINO KINO KINO KINO| +|08/01/2022 04:07:58| |is she wearing the german boot or the russian boot is the real question| +|08/01/2022 04:07:58| |BING BONG WAHOO| +|08/01/2022 04:07:59| |BUNNY JUMP| +|08/01/2022 04:07:59| |YURI PHYSICS| +|08/01/2022 04:08:00| |she can jump far...| +|08/01/2022 04:08:00| TODOKETE +|08/01/2022 04:08:00| |now this is senshado| +|08/01/2022 04:08:00| SUGOIIIIIIIIIIIIIII +|08/01/2022 04:08:00| |GRAVITY NOOOOO| +|08/01/2022 04:08:01| |Super Mihorio Galaxy| +|08/01/2022 04:08:01| OST +|08/01/2022 04:08:01| |STOP SAYING KINO| +|08/01/2022 04:08:01| |NICE JUMP| +|08/01/2022 04:08:02| |miho jump| +|08/01/2022 04:08:02| KINO +|08/01/2022 04:08:03| |HOW DOES SHE JUMP SO FAR| +|08/01/2022 04:08:03| KINO +|08/01/2022 04:08:03| |Olympic level longjump | +|08/01/2022 04:08:03| how +|08/01/2022 04:08:03| |>You will never jump as far as Miho| +|08/01/2022 04:08:05| KNO +|08/01/2022 04:08:06| noclip +|08/01/2022 04:08:06| |KINO KINO KINO| +|08/01/2022 04:08:06| gravitybros... +|08/01/2022 04:08:07| |KINO MOMENT WITH CUTE POKOE| +|08/01/2022 04:08:07| PEKO +|08/01/2022 04:08:08| |cute grasshopper| +|08/01/2022 04:08:08| WAHOO +|08/01/2022 04:08:08| |Finn boots| +|08/01/2022 04:08:08| |katyushas thighs!| +|08/01/2022 04:08:08| |IS THIS NISHIZUMI STYLE| +|08/01/2022 04:08:09| KATSU +|08/01/2022 04:08:09| |PEKOE CUTE| +|08/01/2022 04:08:10| GRAVITYBROS...... +|08/01/2022 04:08:10| |katyushas thighs!| +|08/01/2022 04:08:11| |ZETTAI MANESHINAIDE NE| +|08/01/2022 04:08:13| |FUCK HETEROPHYSICS| +|08/01/2022 04:08:13| |I CRY EVERYTIME| +|08/01/2022 04:08:13| TINY +|08/01/2022 04:08:16| GANBARE!! +|08/01/2022 04:08:16| |bing bing wahoooooo| +|08/01/2022 04:08:17| |aerodynamic Miho generates lift| +|08/01/2022 04:08:17| SHINZABRO +|08/01/2022 04:08:18| |FROM IVY OUT CONNECTOR| +|08/01/2022 04:08:21| |momo fappign| +|08/01/2022 04:08:21| |REKT | +|08/01/2022 04:08:22| |MOMO HATE| +|08/01/2022 04:08:22| >MOMO +|08/01/2022 04:08:23| |BASED LESGRAVITY DOMINATION| +|08/01/2022 04:08:24| FLYYYYYYYYYYYYYYYY +|08/01/2022 04:08:24| |FUCK OFF MOMO| +|08/01/2022 04:08:24| |GRAVITY... I CAN'T KNEEL... IM FLOATING| +|08/01/2022 04:08:24| |how fucking powerful are her legs look at those jumps| +|08/01/2022 04:08:25| kek +|08/01/2022 04:08:26| |I'm legit tearing up| +|08/01/2022 04:08:29| |Miho Mom: SHAME| +|08/01/2022 04:08:30| |SIR! ;_;7| +|08/01/2022 04:08:30| uohh +|08/01/2022 04:08:30| |SHUT THE FUCK UP MOMO| +|08/01/2022 04:08:31| |STFU MOMO| +|08/01/2022 04:08:31| |A VALKYRIE| +|08/01/2022 04:08:31| |>momo being shit as usual| +|08/01/2022 04:08:31| AZUSA!! +|08/01/2022 04:08:31| |How thick are Miho thighs to be able to jump like that| +|08/01/2022 04:08:31| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:08:32| |sv_gravity 400| +|08/01/2022 04:08:33| |>tfw can't see danmaku | +|08/01/2022 04:08:35| |Saki doesn't care| +|08/01/2022 04:08:36| |CUTE RABBITS| +|08/01/2022 04:08:39| |yuri physics| +|08/01/2022 04:08:39| |>here neck yourselves| +|08/01/2022 04:08:40| |disowned once more| +|08/01/2022 04:08:42| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 04:08:44| |Mihos thighs could strangle any man| +|08/01/2022 04:08:47| |My tears dry on their own ;_;| +|08/01/2022 04:08:50| kakoi +|08/01/2022 04:08:53| |WHERE DOES SHE KEEP THAT SCOPE| +|08/01/2022 04:08:55| YOISHO +|08/01/2022 04:08:57| YOISSHO +|08/01/2022 04:08:58| SAKI +|08/01/2022 04:09:00| |lol casemate-tards| +|08/01/2022 04:09:01| |CUNNY HEAVE| +|08/01/2022 04:09:02| YOIHO +|08/01/2022 04:09:02| |YOU ARE SO COOL COMMANDER NISHIZUMI| +|08/01/2022 04:09:05| |is yukari allowed to use a panzerschrek?| +|08/01/2022 04:09:05| |they could have just done that themselves| +|08/01/2022 04:09:06| AZUSA!! +|08/01/2022 04:09:06| ;_;7 +|08/01/2022 04:09:07| |Double Disowned| +|08/01/2022 04:09:09| ;_; +|08/01/2022 04:09:10| CUTE +|08/01/2022 04:09:11| |PRECIOUS RABBITS| +|08/01/2022 04:09:11| CUTE +|08/01/2022 04:09:12| |All seeing Saki| +|08/01/2022 04:09:12| |TAKE MY AUTOGRAPTH MIHO| +|08/01/2022 04:09:13| CUTE +|08/01/2022 04:09:13| |STUG LIFE| +|08/01/2022 04:09:14| ERIKA +|08/01/2022 04:09:14| KINO +|08/01/2022 04:09:17| ;_; +|08/01/2022 04:09:17| naisu +|08/01/2022 04:09:18| |Erika ANGERY| +|08/01/2022 04:09:18| |her smile and optimism: gone| +|08/01/2022 04:09:19| |cute useless| +|08/01/2022 04:09:19| bitch +|08/01/2022 04:09:19| |dumb wani| +|08/01/2022 04:09:20| |Not amused| +|08/01/2022 04:09:22| |Now jump back.| +|08/01/2022 04:09:23| seethe +|08/01/2022 04:09:23| |BUTT SEGGS BUTT SRGGS| +|08/01/2022 04:09:24| Dialate +|08/01/2022 04:09:25| |ERIKA SEETHE| +|08/01/2022 04:09:25| |DUMB WANI| +|08/01/2022 04:09:26| |right behind you| +|08/01/2022 04:09:27| KILL +|08/01/2022 04:09:28| |Sexy Erika eyes | +|08/01/2022 04:09:29| |SHE MAD| +|08/01/2022 04:09:29| |OH NO| +|08/01/2022 04:09:29| |my wife maho| +|08/01/2022 04:09:31| |We must protecct rabbits at all costs| +|08/01/2022 04:09:36| jumpscared +|08/01/2022 04:09:36| |my wife maho| +|08/01/2022 04:09:36| |Erika is so cutye| +|08/01/2022 04:09:37| |first tranny comment of the day| +|08/01/2022 04:09:37| F +|08/01/2022 04:09:38| |SHE SAW| +|08/01/2022 04:09:42| |keep seething you dumb cute wani| +|08/01/2022 04:09:43| |WE GOT TOO COCKY HETZERBROS| +|08/01/2022 04:09:43| ara +|08/01/2022 04:09:44| |Usagi Teamu real command tank| +|08/01/2022 04:09:44| tatul +|08/01/2022 04:09:45| |OH NO ANZU BROS....| +|08/01/2022 04:09:48| knower +|08/01/2022 04:09:49| |still in play| +|08/01/2022 04:09:50| |Maho says trans rights!| +|08/01/2022 04:09:51| |FISSION MAILED| +|08/01/2022 04:09:51| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:09:52| |OH N-| +|08/01/2022 04:09:56| |THANKS TL| +|08/01/2022 04:09:57| |MAXIMUM POWER!!!!!| +|08/01/2022 04:09:59| |THANKS TL| +|08/01/2022 04:09:59| |Maho hates troons| +|08/01/2022 04:10:00| |thanks tl| +|08/01/2022 04:10:00| |Anzu with Anzu!| +|08/01/2022 04:10:01| |rope snap| +|08/01/2022 04:10:01| |You're gonna flood it...| +|08/01/2022 04:10:08| |>american engineering| +|08/01/2022 04:10:11| RIPPEN +|08/01/2022 04:10:12| |The only trans i support is trans siberian railway| +|08/01/2022 04:10:12| |I'm going to Anzu Anzu| +|08/01/2022 04:10:15| |WE DID IT AZUZABROS| +|08/01/2022 04:10:15| |My aunt's name is anzu this shit is dumb| +|08/01/2022 04:10:19| |glorious detroit steel| +|08/01/2022 04:10:20| |AMERICAN ENGINEERING USA USA USA USA| +|08/01/2022 04:10:25| |theres only one thing bunnies are good for | +|08/01/2022 04:10:25| |I WILL FUCK YOUR AUNT| +|08/01/2022 04:10:25| |>hydrolocked engine justwerks American engineering everyone| +|08/01/2022 04:10:26| |is your aunt flat?| +|08/01/2022 04:10:26| |uohh anzu's nephew| +|08/01/2022 04:10:28| hooah +|08/01/2022 04:10:32| |Best science in the world| +|08/01/2022 04:10:33| |Maho so cool!| +|08/01/2022 04:10:33| |>american engineering almost cost them the match| +|08/01/2022 04:10:33| |grorious detroit steel folded 3 times| +|08/01/2022 04:10:35| |I want to fuck anons aunt| +|08/01/2022 04:10:35| |shit aim| +|08/01/2022 04:10:36| |Maho is deaf| +|08/01/2022 04:10:40| |I'm becoming deaf| +|08/01/2022 04:10:43| |Erika > Maho| +|08/01/2022 04:10:49| |Mahochads assemble| +|08/01/2022 04:10:49| |maho doesn't care| +|08/01/2022 04:10:51| |The bridge that leads to Seize| +|08/01/2022 04:10:51| REIMANGEN +|08/01/2022 04:10:52| |yeah that bridge looks really stable| +|08/01/2022 04:10:52| KINO +|08/01/2022 04:10:52| |BRIDGE OVER THE RIVER KAWAII| +|08/01/2022 04:10:55| Kill +|08/01/2022 04:10:55| NIGGER +|08/01/2022 04:10:55| |team leopon on their way to ruin priceless architectural heritage| +|08/01/2022 04:10:55| |HEIL MAHO| +|08/01/2022 04:10:56| >reimangen +|08/01/2022 04:10:57| |erika is shit when maho is around| +|08/01/2022 04:10:58| |just blow the bridge| +|08/01/2022 04:10:59| |i love the sound of a cannon firing| +|08/01/2022 04:11:01| |so that's the bridge Martini took| +|08/01/2022 04:11:01| |what a nice bridge| +|08/01/2022 04:11:01| |Hit the NO2| +|08/01/2022 04:11:02| |Maho > Erika| +|08/01/2022 04:11:03| |*Maho > Erika. Please dont post shit opinions| +|08/01/2022 04:11:03| |BEST TEAM| +|08/01/2022 04:11:04| H-HAYAI +|08/01/2022 04:11:06| \o +|08/01/2022 04:11:06| |SICK BURNOOUTS| +|08/01/2022 04:11:06| MEGANE +|08/01/2022 04:11:07| TONGUE +|08/01/2022 04:11:07| |ERIKA A CUTE| +|08/01/2022 04:11:07| SPEEEEEEEEEEEEEEEEEEEEEEEED +|08/01/2022 04:11:08| HUMMMMMMMMMMMMMMMMMMMM +|08/01/2022 04:11:08| oh... +|08/01/2022 04:11:09| HAYAI +|08/01/2022 04:11:10| |stable bridge| +|08/01/2022 04:11:11| HO +|08/01/2022 04:11:12| SPEEEEEEEEEEEEDDDDDDD +|08/01/2022 04:11:12| |LIVE AND LEARN| +|08/01/2022 04:11:13| |DO YOU WANT TOTAL WAR| +|08/01/2022 04:11:13| |>time for the water meth and n2o| +|08/01/2022 04:11:14| lol +|08/01/2022 04:11:14| bruh +|08/01/2022 04:11:14| wow... +|08/01/2022 04:11:15| |HIT THE BRIDGE, DROP THEIR FLAG| +|08/01/2022 04:11:16| |NIGHT OF FIRE| +|08/01/2022 04:11:16| based +|08/01/2022 04:11:17| based +|08/01/2022 04:11:17| mischief +|08/01/2022 04:11:17| |VTEC JUST KICKED IN YO| +|08/01/2022 04:11:17| |FLOOR IT| +|08/01/2022 04:11:17| |GOD THAT'S FAT| +|08/01/2022 04:11:18| |i want leopon to do that but on my dick| +|08/01/2022 04:11:18| |god that porsche sounds so SEXY| +|08/01/2022 04:11:19| |hybrid power like a prius| +|08/01/2022 04:11:20| ????? +|08/01/2022 04:11:20| |destroying local infrastrucutre LIKE A BOSS| +|08/01/2022 04:11:21| |SEETHING ERIKA| +|08/01/2022 04:11:22| |GuP do love their bridges | +|08/01/2022 04:11:24| |TOTALER KRIEG| +|08/01/2022 04:11:24| |GAS GAS GAS| +|08/01/2022 04:11:25| |That's not legal, right?| +|08/01/2022 04:11:26| |Bridge on the River Kwai| +|08/01/2022 04:11:27| |THINK OF THE SPONSORS| +|08/01/2022 04:11:33| |GAS GAS GAs| +|08/01/2022 04:11:34| |DUMB WANI| +|08/01/2022 04:11:35| |River Kawaii| +|08/01/2022 04:11:36| |that was a UNICEF heritage bridge| +|08/01/2022 04:11:39| |River Kawaii| +|08/01/2022 04:11:41| |Leopon... the advertisers...| +|08/01/2022 04:11:41| CONVOYYYYYYYY +|08/01/2022 04:11:41| |Miho lives rent-free in Erika's head| +|08/01/2022 04:11:41| |PROPERTY DAMAGE| +|08/01/2022 04:11:48| |Fucking up local roads with tracks... priceless| +|08/01/2022 04:11:49| |fuck the city| +|08/01/2022 04:11:50| |More Kino incoming| +|08/01/2022 04:11:50| |Hope you like urban warfare.| +|08/01/2022 04:11:50| |in ribbon warrior they legit set fire to a town| +|08/01/2022 04:11:50| |Trippy CG| +|08/01/2022 04:11:54| |soon bros are thicc boy is coming| +|08/01/2022 04:11:54| |This literally looks like some fucking wot map| +|08/01/2022 04:11:54| |maus soon bros| +|08/01/2022 04:11:55| |MAUSA DA!| +|08/01/2022 04:11:58| |>the panzer 3 that erika switches to| +|08/01/2022 04:11:58| nerd +|08/01/2022 04:11:59| |the maus is coming bros| +|08/01/2022 04:12:03| |FIRST EPISODE CALLBACK| +|08/01/2022 04:12:03| |HERE COMES A SPECIAL BOY| +|08/01/2022 04:12:04| |Generic Soviet district| +|08/01/2022 04:12:05| |INITIAL P| +|08/01/2022 04:12:05| CUTE! +|08/01/2022 04:12:06| |why do I hear boss music bros| +|08/01/2022 04:12:07| |cute panzer | +|08/01/2022 04:12:07| LUCHS +|08/01/2022 04:12:08| |PANZER III......| +|08/01/2022 04:12:09| |this is just like one of my japanese animes| +|08/01/2022 04:12:10| |Saori is a Panzer whore now| +|08/01/2022 04:12:10| |German commiblocks| +|08/01/2022 04:12:10| |Maus soon| +|08/01/2022 04:12:15| |PANZER III A CUTE| +|08/01/2022 04:12:15| |master baiter reverse| +|08/01/2022 04:12:16| |>falling for the bait| +|08/01/2022 04:12:17| |LUCHSBROS WHERE WE AT| +|08/01/2022 04:12:18| |PANZER WHORE!| +|08/01/2022 04:12:19| |ねずみ inbound| +|08/01/2022 04:12:22| |It's orgre for Oarai now| +|08/01/2022 04:12:24| SFX +|08/01/2022 04:12:24| |>is this bait?| +|08/01/2022 04:12:24| |MAUSU MAUSU PASUKON MAUSU| +|08/01/2022 04:12:25| |GAS GAS GAS| +|08/01/2022 04:12:26| jabaited +|08/01/2022 04:12:27| |OB STURM ODER SCHNEIT| +|08/01/2022 04:12:28| |>hook line and sinker| +|08/01/2022 04:12:30| |sex with commie blocks| +|08/01/2022 04:12:30| |Oarai is gonna lose in a sec| +|08/01/2022 04:12:33| |Bass pro shop doko| +|08/01/2022 04:12:34| ENTER +|08/01/2022 04:12:34| ooraibros... +|08/01/2022 04:12:37| ENTER +|08/01/2022 04:12:37| ENTER +|08/01/2022 04:12:37| |THE BAIT IS TOO POWERFUL| +|08/01/2022 04:12:38| Maused +|08/01/2022 04:12:39| |DOBUNEZUMI MITAI NI| +|08/01/2022 04:12:39| ENTER +|08/01/2022 04:12:40| ENTER +|08/01/2022 04:12:40| |Mickey Maus| +|08/01/2022 04:12:40| |comfy armored warfare asmr| +|08/01/2022 04:12:41| |we got too cocky...| +|08/01/2022 04:12:41| |>literally everyone chasing one tank| +|08/01/2022 04:12:42| |Maus-san | +|08/01/2022 04:12:42| ENTER +|08/01/2022 04:12:42| KRUPPSCHTALL +|08/01/2022 04:12:43| |OOOOOH SHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIT| +|08/01/2022 04:12:43| |The Maus That Roared| +|08/01/2022 04:12:43| MAUS +|08/01/2022 04:12:43| |CRYPTIC METAPHOR!| +|08/01/2022 04:12:44| ENTER +|08/01/2022 04:12:44| ENTER +|08/01/2022 04:12:45| |it's the gif| +|08/01/2022 04:12:45| |Kino moment| +|08/01/2022 04:12:45| ENTER +|08/01/2022 04:12:45| |uh oh| +|08/01/2022 04:12:45| OHNONONONONO +|08/01/2022 04:12:46| |A BIG GUY| +|08/01/2022 04:12:46| COMMIEBLOCKS +|08/01/2022 04:12:46| ENTER +|08/01/2022 04:12:46| |OH NO| +|08/01/2022 04:12:46| |SHE'S A BIG TANK| +|08/01/2022 04:12:47| |oh oh| +|08/01/2022 04:12:47| ENTER +|08/01/2022 04:12:48| AAAAAAAAAAAAAAAA +|08/01/2022 04:12:48| mausu +|08/01/2022 04:12:48| ENTER +|08/01/2022 04:12:48| |EL GRANDE TANQUE| +|08/01/2022 04:12:49| |A WALL?| +|08/01/2022 04:12:49| ENTER +|08/01/2022 04:12:49| |DAMN BOI HE THICC| +|08/01/2022 04:12:49| |OH NO| +|08/01/2022 04:12:50| NANI +|08/01/2022 04:12:50| |for you| +|08/01/2022 04:12:51| YOSHI +|08/01/2022 04:12:51| |you're a big tank| +|08/01/2022 04:12:52| |Ooari bros ohnononononono| +|08/01/2022 04:12:52| UUU +|08/01/2022 04:12:52| mausumausu +|08/01/2022 04:12:52| MOGGED +|08/01/2022 04:12:52| ENTER +|08/01/2022 04:12:53| 4U +|08/01/2022 04:12:53| ENTER +|08/01/2022 04:12:53| |STOP RUNNIGN COWARD| +|08/01/2022 04:12:54| |The Shagohad| +|08/01/2022 04:12:54| |IT AIN'T DISNEY WITHOUT MICKEY| +|08/01/2022 04:12:54| \o +|08/01/2022 04:12:55| big +|08/01/2022 04:12:55| |LE GROS TANK APPROCHE| +|08/01/2022 04:12:55| |DO YOU FEEL IN CHARGE| +|08/01/2022 04:12:55| TONK +|08/01/2022 04:12:55| MAUS +|08/01/2022 04:12:55| |Big ENTER| +|08/01/2022 04:12:56| MAUKO +|08/01/2022 04:12:56| |ENTER MOUSE| +|08/01/2022 04:12:57| |OARAIBROS WE GOT TOO COCKY| +|08/01/2022 04:12:57| |EL RATON| +|08/01/2022 04:12:58| |My waifu finally apopears| +|08/01/2022 04:12:59| MOGGED +|08/01/2022 04:13:00| MAUS +|08/01/2022 04:13:00| |DER WUNDERWAFFE| +|08/01/2022 04:13:00| ENTER +|08/01/2022 04:13:01| THICC +|08/01/2022 04:13:01| SIEG +|08/01/2022 04:13:01| GUTENTAG +|08/01/2022 04:13:02| |SUE GOY| +|08/01/2022 04:13:02| |el tanke stretchy| +|08/01/2022 04:13:02| ENTER +|08/01/2022 04:13:02| |WE GOT TOO COCKY| +|08/01/2022 04:13:03| |X GONNA GIVE IT TO YOU| +|08/01/2022 04:13:04| |rat when?| +|08/01/2022 04:13:04| |THICC TONK| +|08/01/2022 04:13:05| MAOOS +|08/01/2022 04:13:06| |OMG WTF BBQ| +|08/01/2022 04:13:06| |You Fucked Up| +|08/01/2022 04:13:06| >jobs +|08/01/2022 04:13:12| Maus... +|08/01/2022 04:13:13| THICK +|08/01/2022 04:13:15| |heckin chonker| +|08/01/2022 04:13:16| |Oh look, target practice for the US Army Air Corps| +|08/01/2022 04:13:16| |RUSSIAN LOLI| +|08/01/2022 04:13:18| |>when they see my maus| +|08/01/2022 04:13:18| |Yukari is absolutely sopping| +|08/01/2022 04:13:18| CUTE +|08/01/2022 04:13:19| |>NOT CHARGING| +|08/01/2022 04:13:20| |I love how Yukari implies there might be more out there| +|08/01/2022 04:13:20| Mausu +|08/01/2022 04:13:20| THICCC +|08/01/2022 04:13:23| |MY EARS| +|08/01/2022 04:13:24| YARARETA +|08/01/2022 04:13:25| |its time| +|08/01/2022 04:13:26| |HAHA I GET IT ITS BIG BUT ITS NAMED MOUSE| +|08/01/2022 04:13:28| yarareta +|08/01/2022 04:13:28| >MISSED +|08/01/2022 04:13:29| |If I took off your turret, would you die?| +|08/01/2022 04:13:30| |>gets btfo by 2 shermans| +|08/01/2022 04:13:31| |MIKI MAUS?| +|08/01/2022 04:13:31| >subs +|08/01/2022 04:13:32| |YA RA RE TA| +|08/01/2022 04:13:32| YA~DA~RE~TTA! +|08/01/2022 04:13:33| |>german humor| +|08/01/2022 04:13:33| |>shot so powerful it causes video artifacts| +|08/01/2022 04:13:35| |In awe at the size of this lad| +|08/01/2022 04:13:36| >missed +|08/01/2022 04:13:38| rip +|08/01/2022 04:13:38| WEW +|08/01/2022 04:13:38| |mausu mausu pasokon mausu| +|08/01/2022 04:13:39| |GOOD THING THE GIRLS ARE CARBON COATED| +|08/01/2022 04:13:39| |DAMN BRAT| +|08/01/2022 04:13:39| wew +|08/01/2022 04:13:39| |>don't anyone shoot the tracks or anything| +|08/01/2022 04:13:40| BTFO +|08/01/2022 04:13:40| |Welcome to the Mickey Maus Funhaus| +|08/01/2022 04:13:40| huge +|08/01/2022 04:13:41| |>they all live| +|08/01/2022 04:13:41| |ITS OVER| +|08/01/2022 04:13:42| |BIG COCK| +|08/01/2022 04:13:42| ANZU +|08/01/2022 04:13:42| |SODOKO DEAD| +|08/01/2022 04:13:42| |SODOKO NO| +|08/01/2022 04:13:43| F +|08/01/2022 04:13:44| DEAD +|08/01/2022 04:13:45| |F Sodoko| +|08/01/2022 04:13:45| MOGGED +|08/01/2022 04:13:47| |>huge and cocky| +|08/01/2022 04:13:47| |SODOKO IS DEAD| +|08/01/2022 04:13:48| DEAD +|08/01/2022 04:13:48| DEAD +|08/01/2022 04:13:48| |IF I PULL THAT OFF WILL YOU DIE| +|08/01/2022 04:13:48| REKT +|08/01/2022 04:13:49| PANZERLIED +|08/01/2022 04:13:49| |BIG TANK| +|08/01/2022 04:13:49| f +|08/01/2022 04:13:50| |O S T| +|08/01/2022 04:13:51| |YOU DUMB| +|08/01/2022 04:13:51| GOD +|08/01/2022 04:13:51| |SODOKO IS FUCKING DEAD| +|08/01/2022 04:13:52| COCK +|08/01/2022 04:13:52| |YA RA RE TA| +|08/01/2022 04:13:53| |CAN'T BEAT THE COCK| +|08/01/2022 04:13:53| |O S T| +|08/01/2022 04:13:53| |average sodoko mogging| +|08/01/2022 04:13:54| |Absolute Unit | +|08/01/2022 04:13:54| |M3 put into its plcxae| +|08/01/2022 04:13:54| |SODOKO STATUS: SODOMIZED| +|08/01/2022 04:13:55| GGNORE +|08/01/2022 04:13:55| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +|08/01/2022 04:13:55| OST +|08/01/2022 04:13:57| |>that's what they all say to oji-san| +|08/01/2022 04:13:57| |Do not taunt happy fun tank| +|08/01/2022 04:13:57| SHREKY +|08/01/2022 04:13:59| |you're a big tank| +|08/01/2022 04:13:59| |20KPH LADS| +|08/01/2022 04:14:01| |CLAP ALONG WITH THE MUSIC LADS| +|08/01/2022 04:14:01| |Goodnight sweet SoGoPa| +|08/01/2022 04:14:03| |! Banger alert ! Banger alert !| +|08/01/2022 04:14:03| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +|08/01/2022 04:14:04| PANZERLIED +|08/01/2022 04:14:04| |OB'S STÜRM ODER SCHNEIT| +|08/01/2022 04:14:04| |OBS STURMT ODER SCHNEIT| +|08/01/2022 04:14:05| |DER TAG GLUHEND HEIST| +|08/01/2022 04:14:05| |O S T| +|08/01/2022 04:14:05| RIP +|08/01/2022 04:14:07| |that's against school regulations| +|08/01/2022 04:14:07| |Can't beat the cock| +|08/01/2022 04:14:07| |OB DIE SONNE UNS LACHT| +|08/01/2022 04:14:08| |OBS STÜRMT ODER SCHNEIT| +|08/01/2022 04:14:08| |CLAP CLAP CLAP CLAP| +|08/01/2022 04:14:10| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +|08/01/2022 04:14:11| |ODER SINN| +|08/01/2022 04:14:11| SING +|08/01/2022 04:14:12| PANZERLIED +|08/01/2022 04:14:13| |PING PING PING| +|08/01/2022 04:14:13| |Maus too heavy for the stream| +|08/01/2022 04:14:14| >germ*ns +|08/01/2022 04:14:14| |MY FUCKING EARS ARE RINGING| +|08/01/2022 04:14:15| LAUTER +|08/01/2022 04:14:16| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +|08/01/2022 04:14:17| LOUDER +|08/01/2022 04:14:17| LOUDER +|08/01/2022 04:14:18| |ODER EISKALT DIE NACHT| +|08/01/2022 04:14:18| |Best marching song\| +|08/01/2022 04:14:19| |ODER EISKALT| +|08/01/2022 04:14:20| |I'M LITTERALLY CLAPPING RIGHT NOW| +|08/01/2022 04:14:21| |WE CAN GO LOUDER| +|08/01/2022 04:14:22| LOUDER +|08/01/2022 04:14:22| |KUROMORIMINE UBER ALLES| +|08/01/2022 04:14:22| SING +|08/01/2022 04:14:23| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT!!!!!| +|08/01/2022 04:14:23| |DOCH FORH| +|08/01/2022 04:14:25| |BESTAUBT SIND DIE GESICHTER| +|08/01/2022 04:14:25| |DOCH FROH IST UNSER SINN| +|08/01/2022 04:14:28| |revenge for east germany| +|08/01/2022 04:14:28| |ES RAST UNSER PANZER IM STURMWIND DAHIN| +|08/01/2022 04:14:29| F +|08/01/2022 04:14:29| WHAT? +|08/01/2022 04:14:29| |SIEG HEIL | +|08/01/2022 04:14:29| SHREKT +|08/01/2022 04:14:30| ONORE +|08/01/2022 04:14:30| NOOOOOOOOOOOOOOOOO +|08/01/2022 04:14:30| |F /his/| +|08/01/2022 04:14:31| STUGBROS...................... +|08/01/2022 04:14:31| |ES BRAUST UNSER PANZER| +|08/01/2022 04:14:32| |DOCH FROH| +|08/01/2022 04:14:33| |ES BRAUST UNSER PANZER IM STURMWIND DAHIN| +|08/01/2022 04:14:33| ONOREE +|08/01/2022 04:14:38| |UOOOH I'M CLAPPING| +|08/01/2022 04:14:38| |UNSER SINN!| +|08/01/2022 04:14:39| |wtf nooo| +|08/01/2022 04:14:39| |1488 OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT 1488| +|08/01/2022 04:14:39| STUGBROS.... +|08/01/2022 04:14:39| LOUDER! +|08/01/2022 04:14:40| STOMP +|08/01/2022 04:14:40| |ES BRAUST UNSER PANZER| +|08/01/2022 04:14:40| |CLAP CLAP CLAP CLAP| +|08/01/2022 04:14:41| o/ +|08/01/2022 04:14:42| 88888888888888888888 +|08/01/2022 04:14:46| |they stomping| +|08/01/2022 04:14:46| KINOKINOKINO +|08/01/2022 04:14:47| | 8 8 8 8 8 8 8 | +|08/01/2022 04:14:48| wherBONER +|08/01/2022 04:14:48| |8 8 8 8 8 8| +|08/01/2022 04:14:49| |STOMP STOMP STOMP STOMP STOMP STOMP STOMP| +|08/01/2022 04:14:49| |DER TAG GLUHEN HEISS| +|08/01/2022 04:14:49| |MEIN FUHRER!| +|08/01/2022 04:14:50| |STOMP STOMP STOMP| +|08/01/2022 04:14:50| |CLAP CLAP CLAP CLAP| +|08/01/2022 04:14:52| |KINO 1488| +|08/01/2022 04:14:54| |SIEG HEIL o/ o/ o/| +|08/01/2022 04:14:56| |EVERYONE STOMP| +|08/01/2022 04:14:57| |why not just make that shit your flag tank?| +|08/01/2022 04:14:58| |JA UNSER SINN| +|08/01/2022 04:14:59| |MY FUHRER I CAN WALK!| +|08/01/2022 04:14:59| KAWAII +|08/01/2022 04:15:00| |march march march march| +|08/01/2022 04:15:01| |\o \o \o| +|08/01/2022 04:15:02| o/ +|08/01/2022 04:15:03| o/ +|08/01/2022 04:15:03| |These Tiger IIs are moving much too swiftly| +|08/01/2022 04:15:04| |BESTAUBT SIND DIE GESICHTER DOCH FROH IST UNSER SINN| +|08/01/2022 04:15:04| |UN MEIN GATT| +|08/01/2022 04:15:05| o/ +|08/01/2022 04:15:06| SING! +|08/01/2022 04:15:06| |ES BRASUST UNSER PANZER IM STURMWIND DAHIN| +|08/01/2022 04:15:08| niyari +|08/01/2022 04:15:08| FEGELEIN +|08/01/2022 04:15:10| |Goosesteping noises| +|08/01/2022 04:15:10| |o/ o/ o/ o/| +|08/01/2022 04:15:11| Stomp +|08/01/2022 04:15:12| |You can say much about the Germans but they made some bangers\| +|08/01/2022 04:15:12| |wani smug| +|08/01/2022 04:15:14| |SIEG HEIL| +|08/01/2022 04:15:17| |\o/ whoo| +|08/01/2022 04:15:18| |FINAL EPISODE| +|08/01/2022 04:15:18| MAJESTIC +|08/01/2022 04:15:18| GIMI +|08/01/2022 04:15:21| |probably because if the maus breaks down, you lose the flagtank| +|08/01/2022 04:15:21| |smug erika| +|08/01/2022 04:15:22| |My wife Maho is so handsome| +|08/01/2022 04:15:25| |just make every tank a maus| +|08/01/2022 04:15:25| |DEATH HAIKU| +|08/01/2022 04:15:25| |LAST EPISODE| +|08/01/2022 04:15:26| |/his/ ;_;7| +|08/01/2022 04:15:28| |ITS JERK| +|08/01/2022 04:15:32| RAT +|08/01/2022 04:15:32| >mouse +|08/01/2022 04:15:34| |poor helmets| +|08/01/2022 04:15:35| |why is the mouse so big?| +|08/01/2022 04:15:36| |P1000 WHEN| +|08/01/2022 04:15:38| |Thats the joke| +|08/01/2022 04:15:38| |POV: You Got Uptiered| +|08/01/2022 04:15:39| |Maybe the millions dead were worth it for these bangers huh| +|08/01/2022 04:15:41| RRAT +|08/01/2022 04:15:42| rrat +|08/01/2022 04:15:43| |german humour| +|08/01/2022 04:15:43| |test1 +test2| +|08/01/2022 04:15:45| |sasuga mausu| +|08/01/2022 04:15:47| ????????????????????????????????????????????????????????????????? +|08/01/2022 04:15:48| |you failed| +|08/01/2022 04:15:49| ogey +|08/01/2022 04:15:49| |saying time| +|08/01/2022 04:15:51| ogey +|08/01/2022 04:15:51| >slag +|08/01/2022 04:15:51| |Orange Pekora| +|08/01/2022 04:15:52| ??????????????????????????????????????????????????????????????????????????????? +|08/01/2022 04:15:54| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 04:15:54| |orange peko rrat| +|08/01/2022 04:15:55| |>not having a tank that can burrow underground as your flag tank| +|08/01/2022 04:15:55| ??????????????? +|08/01/2022 04:15:56| ?????????????? +|08/01/2022 04:15:56| |ogey rrat| +|08/01/2022 04:15:56| ?????????????????????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 04:15:58| |Have you heard this saying?| +|08/01/2022 04:15:58| |But do you know THIS Proverb?!| +|08/01/2022 04:15:59| |SHUT UP SLAG| +|08/01/2022 04:16:00| |no rrat bros plz stop| +|08/01/2022 04:16:01| ogey +|08/01/2022 04:16:02| okay +|08/01/2022 04:16:02| >vniggers +|08/01/2022 04:16:03| |basically: GUTS| +|08/01/2022 04:16:03| ????????????????? +|08/01/2022 04:16:03| |WHAT THE FUCK WAS THAT YOU SLUG| +|08/01/2022 04:16:03| ??????????????? +|08/01/2022 04:16:03| ?????????????????????????????????????????????? +|08/01/2022 04:16:04| |its like this saying| +|08/01/2022 04:16:05| |Maus is so sexy...| +|08/01/2022 04:16:06| RRAT +|08/01/2022 04:16:08| rrat +|08/01/2022 04:16:09| |cute peashooters| +|08/01/2022 04:16:10| |Fat lot of good that did.| +|08/01/2022 04:16:10| |/VT// OUT| +|08/01/2022 04:16:11| |>m3 actually hits something| +|08/01/2022 04:16:11| wwwwwwwwww +|08/01/2022 04:16:11| |I thought the Danmaku had slowed down. It's not working for some?| +|08/01/2022 04:16:19| |marine > pekora| +|08/01/2022 04:16:21| |>mausu cant pen concrete| +|08/01/2022 04:16:21| B..BAKANA +|08/01/2022 04:16:25| |SO sexy...| +|08/01/2022 04:16:25| |THE SHELLS! THEY DO NOTHING| +|08/01/2022 04:16:25| |innocent building? YEAH DESTROY IT| +|08/01/2022 04:16:26| |IT BUT A SCRATCH| +|08/01/2022 04:16:31| |sensha chuuba when?| +|08/01/2022 04:16:34| |in awe at the size of this lad| +|08/01/2022 04:16:35| |MOMO STFU | +|08/01/2022 04:16:38| |I SUPPOSE IF THEY WERE LUCKY THEY COULD GIVE US A HEADACHE| +|08/01/2022 04:16:39| >VTUBER +|08/01/2022 04:16:40| btfo +|08/01/2022 04:16:41| ohohohoh- +|08/01/2022 04:16:41| |oh great, they're dead| +|08/01/2022 04:16:42| jej +|08/01/2022 04:16:43| DORK +|08/01/2022 04:16:44| REKt +|08/01/2022 04:16:45| |ABSOLUTE UNIT| +|08/01/2022 04:16:45| kek +|08/01/2022 04:16:46| lel +|08/01/2022 04:16:46| wwwwwwww +|08/01/2022 04:16:47| LUCHBROS... +|08/01/2022 04:16:47| BTFO +|08/01/2022 04:16:47| |JUST TRACK IT RETARDS| +|08/01/2022 04:16:48| |Hahahahaha.... DED| +|08/01/2022 04:16:49| |THATS A THICC BOY| +|08/01/2022 04:16:49| |we got too cocky | +|08/01/2022 04:16:49| kek +|08/01/2022 04:16:50| |i'd watch tank chuuba| +|08/01/2022 04:16:50| kek +|08/01/2022 04:16:51| owned +|08/01/2022 04:16:52| |PANZER 3 REKT| +|08/01/2022 04:16:56| |I want to penetrate her armor with my firepower| +|08/01/2022 04:16:57| HA +|08/01/2022 04:17:04| REKT +|08/01/2022 04:17:04| |i kid you not, if you look real close at the maus's camo paint, you can see an among us, no clown| +|08/01/2022 04:17:04| |SHOT TRAP IT| +|08/01/2022 04:17:05| IDEA! +|08/01/2022 04:17:05| ! +|08/01/2022 04:17:05| |You can't track the Maus you goober| +|08/01/2022 04:17:08| boko! +|08/01/2022 04:17:08| |LMAO 2TANK| +|08/01/2022 04:17:08| |GREAT IDEA| +|08/01/2022 04:17:09| |wait, what did you say| +|08/01/2022 04:17:10| ! +|08/01/2022 04:17:10| |boko manual| +|08/01/2022 04:17:10| |inspiration strikes| +|08/01/2022 04:17:10| |>impenatrable armour BRAVO RELIC| +|08/01/2022 04:17:10| |GORILLA WARFARE| +|08/01/2022 04:17:11| ! +|08/01/2022 04:17:12| mogus +|08/01/2022 04:17:14| |saori calling you ookisugi| +|08/01/2022 04:17:15| L-lewd +|08/01/2022 04:17:15| |Monmo is getting too cocky there| +|08/01/2022 04:17:15| huh? +|08/01/2022 04:17:15| AAAAMOGUS>??????? +|08/01/2022 04:17:16| KITA +|08/01/2022 04:17:17| |I JUST GOT AN IDEA| +|08/01/2022 04:17:19| |Can't kill the rrat, ogey| +|08/01/2022 04:17:20| |its like this one boko movie| +|08/01/2022 04:17:20| |>thats it .... lets put a tank on that tank| +|08/01/2022 04:17:20| |Just think what would Boko do| +|08/01/2022 04:17:20| |>pretty crazy| +|08/01/2022 04:17:22| \NORIKO +|08/01/2022 04:17:24| |i fucking love hinterhalt tarnung| +|08/01/2022 04:17:28| |no room for error| +|08/01/2022 04:17:33| |listen closely | +|08/01/2022 04:17:37| error +|08/01/2022 04:17:37| |NANDEMO SURU YO| +|08/01/2022 04:17:38| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:17:38| |WELL WE TRIED OORARI BROS BUT THERE NO WIN THIS | +|08/01/2022 04:17:39| |Tuvok mode engaged| +|08/01/2022 04:17:39| |Blocks your ptah| +|08/01/2022 04:17:39| |>they lose to an ambush| +|08/01/2022 04:17:42| |THANKS TL| +|08/01/2022 04:17:43| |RAMMING SPEED| +|08/01/2022 04:17:45| |CODEX ASTARTES CALLS THIS MANOEUVER STEEL RAIN| +|08/01/2022 04:17:45| |THANKS TL| +|08/01/2022 04:17:47| Soyjak.party +|08/01/2022 04:17:49| ALLAH +|08/01/2022 04:17:50| |the lads| +|08/01/2022 04:17:50| |Peak realism incoming| +|08/01/2022 04:17:51| TOTSUGEKI +|08/01/2022 04:17:52| |X with Anzu, is X: a) tea b) SEX c) panzerfahren| +|08/01/2022 04:17:55| TOTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 04:17:55| gem +|08/01/2022 04:17:57| TOTSUGEKIIIIIII +|08/01/2022 04:17:59| |YOU OGEY'D YOUR LAST RRAT!| +|08/01/2022 04:17:59| |thank God for carbon| +|08/01/2022 04:18:00| |I would like the see the Maus team just a bit| +|08/01/2022 04:18:00| tokkun +|08/01/2022 04:18:01| B +|08/01/2022 04:18:02| |WE'RE THE EMPEROR'S FURY| +|08/01/2022 04:18:02| TOTSUGEKI +|08/01/2022 04:18:04| |tank mounting| +|08/01/2022 04:18:05| WOW +|08/01/2022 04:18:05| SPEED +|08/01/2022 04:18:06| INSHALLAH +|08/01/2022 04:18:06| WOW +|08/01/2022 04:18:06| |Wouldn't now be the best time for KMM to show up? Where the hell are they | +|08/01/2022 04:18:08| |here we go| +|08/01/2022 04:18:08| dead +|08/01/2022 04:18:08| WOW +|08/01/2022 04:18:08| BONK +|08/01/2022 04:18:09| WOW +|08/01/2022 04:18:10| WAO +|08/01/2022 04:18:10| WOW +|08/01/2022 04:18:11| wow! +|08/01/2022 04:18:12| *BOOM* +|08/01/2022 04:18:12| wow +|08/01/2022 04:18:13| logic +|08/01/2022 04:18:13| wow +|08/01/2022 04:18:13| |EPIC STRATS| +|08/01/2022 04:18:13| |TENNOHEIKA BANZAI!!!!!| +|08/01/2022 04:18:13| |dead on impact| +|08/01/2022 04:18:15| WOOOW +|08/01/2022 04:18:16| Mausa-chan... +|08/01/2022 04:18:16| IMPLYING +|08/01/2022 04:18:17| |ALLAHU AKBAR| +|08/01/2022 04:18:18| |CARBON COATED HETZER| +|08/01/2022 04:18:18| |>WH40K memems| +|08/01/2022 04:18:19| |pew pew| +|08/01/2022 04:18:20| |it's over| +|08/01/2022 04:18:20| |How sturdy are the 300m blocks these ships are made of?| +|08/01/2022 04:18:20| |SIEG THIS| +|08/01/2022 04:18:20| |CARBON TOO STRONG| +|08/01/2022 04:18:21| |By allah those girls harbor such iolence| +|08/01/2022 04:18:21| |Allahu akbar| +|08/01/2022 04:18:21| UTE +|08/01/2022 04:18:22| |pew pew pew pew| +|08/01/2022 04:18:22| |maus commander <3| +|08/01/2022 04:18:23| |oh no no no| +|08/01/2022 04:18:23| ALLLLLLLLLLLLAAAAAAAAAAAAAAAAAAAAAH +|08/01/2022 04:18:23| |TENNO HEKKA BANZAIIIIIII| +|08/01/2022 04:18:23| |Kono bangumi wa goran no suponsaa no teikyou de okurishimasu| +|08/01/2022 04:18:29| RAPE +|08/01/2022 04:18:30| SORRE +|08/01/2022 04:18:31| |no way that turret can traverse that fast| +|08/01/2022 04:18:33| GUTS +|08/01/2022 04:18:34| GOD +|08/01/2022 04:18:35| NIGEROO +|08/01/2022 04:18:36| |MAU MAU| +|08/01/2022 04:18:36| ???????????????????????????? +|08/01/2022 04:18:37| RAPE +|08/01/2022 04:18:38| snug... +|08/01/2022 04:18:38| |PANZER STACKING| +|08/01/2022 04:18:41| |what u doing man get off| +|08/01/2022 04:18:41| |was it rape?| +|08/01/2022 04:18:42| MOUNTED +|08/01/2022 04:18:42| 200iq +|08/01/2022 04:18:43| |PANER SEX| +|08/01/2022 04:18:44| |Don't wanna| +|08/01/2022 04:18:45| |DON'T WANNA| +|08/01/2022 04:18:45| |how did it get up the hetzter?| +|08/01/2022 04:18:46| GUTS +|08/01/2022 04:18:48| |>get off my roof| +|08/01/2022 04:18:48| |*snuggles on your turret*| +|08/01/2022 04:18:49| cute +|08/01/2022 04:18:49| |PANZER SEX| +|08/01/2022 04:18:51| BTFO +|08/01/2022 04:18:51| TECHNICALLY +|08/01/2022 04:18:51| |this is how germany lost ww2| +|08/01/2022 04:18:52| |No way| +|08/01/2022 04:18:53| |peak realism| +|08/01/2022 04:18:54| |>Get decapitated| +|08/01/2022 04:18:54| BTFO +|08/01/2022 04:18:57| |TANK ON TANK ACTION| +|08/01/2022 04:18:57| iyadesu +|08/01/2022 04:18:58| |CARBON COATING| +|08/01/2022 04:19:00| moooooooooooooot +|08/01/2022 04:19:00| GUTS +|08/01/2022 04:19:00| NO +|08/01/2022 04:19:00| |imagine not knowing that| +|08/01/2022 04:19:01| |get the fuck off| +|08/01/2022 04:19:02| |CARBON COATING| +|08/01/2022 04:19:02| |CARBON COATING| +|08/01/2022 04:19:03| GAATTTSU +|08/01/2022 04:19:04| |CARBON COATING| +|08/01/2022 04:19:04| CARUBON +|08/01/2022 04:19:05| |CARBON COATING| +|08/01/2022 04:19:05| |is this how baby tanks are made?| +|08/01/2022 04:19:06| |CARBON COATING FAIL| +|08/01/2022 04:19:06| CARBON +|08/01/2022 04:19:06| |get off me bro | +|08/01/2022 04:19:06| |why doesnt the maus just reverse| +|08/01/2022 04:19:08| KARBON +|08/01/2022 04:19:09| |all according to keikaku| +|08/01/2022 04:19:09| |how tf is this even possible wtf| +|08/01/2022 04:19:09| |tank drift tank drift| +|08/01/2022 04:19:11| |GET OUT OF MY YARD| +|08/01/2022 04:19:11| |did they just hop?| +|08/01/2022 04:19:12| |TARGET THE SLIT| +|08/01/2022 04:19:13| |NOT THE CARBON COATING| +|08/01/2022 04:19:15| |muh carbon| +|08/01/2022 04:19:16| Anzu +|08/01/2022 04:19:16| |HAND OF DESTINY| +|08/01/2022 04:19:16| GUTS +|08/01/2022 04:19:17| |KEIKAKU DOORI DA| +|08/01/2022 04:19:17| UTE +|08/01/2022 04:19:20| |RIP Mauko| +|08/01/2022 04:19:20| GUTS +|08/01/2022 04:19:20| GUTS +|08/01/2022 04:19:20| |You're pretty good...| +|08/01/2022 04:19:21| GUTS +|08/01/2022 04:19:21| GUTS +|08/01/2022 04:19:21| TAEKO +|08/01/2022 04:19:22| SPATS +|08/01/2022 04:19:22| |WHAT ARE YOU DOING STEP TANK| +|08/01/2022 04:19:22| |SHUT UP MOMO| +|08/01/2022 04:19:23| CASCA +|08/01/2022 04:19:24| GUTS +|08/01/2022 04:19:25| |F Maus| +|08/01/2022 04:19:25| 888888888888888888888 +|08/01/2022 04:19:26| |USHIRO NO SURITO| +|08/01/2022 04:19:26| 888888888888888888 +|08/01/2022 04:19:26| |Tanks procreating colorized| +|08/01/2022 04:19:27| |actually pushing| +|08/01/2022 04:19:27| |ez | +|08/01/2022 04:19:28| |I want to target the slit on Miho's rear| +|08/01/2022 04:19:28| |>SLIT ON ITS REAR| +|08/01/2022 04:19:28| |MAUS BTFO| +|08/01/2022 04:19:29| 88888888888888888888888888888 +|08/01/2022 04:19:29| |DON'T WANNA| +|08/01/2022 04:19:30| |AIM FOR THE SLIT| +|08/01/2022 04:19:31| FFFFFFF +|08/01/2022 04:19:31| 8888888888888888 +|08/01/2022 04:19:31| MOUSEBROS......... +|08/01/2022 04:19:31| |Dead RRAT| +|08/01/2022 04:19:32| 888888888888888888888888888888888888 +|08/01/2022 04:19:32| |THE MAUS IS DOWN| +|08/01/2022 04:19:33| 8888888888888888888888888888 +|08/01/2022 04:19:33| SHITTERS +|08/01/2022 04:19:33| |MAUS BTFO| +|08/01/2022 04:19:33| 888888888888888 +|08/01/2022 04:19:33| |SUGOI | +|08/01/2022 04:19:34| OARAI'D +|08/01/2022 04:19:34| rekt +|08/01/2022 04:19:36| |I'LL TARGET THE SLIT ON MIHO'S REAR| +|08/01/2022 04:19:36| ?????????????????????? +|08/01/2022 04:19:37| |WE GOT TOO COCKY KUROMOROMINEBROS| +|08/01/2022 04:19:37| |They could have just reversed... | +|08/01/2022 04:19:37| |nerd down| +|08/01/2022 04:19:38| |where are the other tanks| +|08/01/2022 04:19:39| |rip peko| +|08/01/2022 04:19:40| |Slit is the weak spot| +|08/01/2022 04:19:40| SUGOIIIIIIII +|08/01/2022 04:19:45| >MAUSKEKS +|08/01/2022 04:19:47| |THIS CAN"T BE HAPPENING MAUSBROS| +|08/01/2022 04:19:50| mausbros... +|08/01/2022 04:19:51| KAWAII +|08/01/2022 04:19:52| |hetzer wins again| +|08/01/2022 04:19:52| |floppy cannon| +|08/01/2022 04:19:53| |HETZERBROS NOT LIKE THIS| +|08/01/2022 04:19:55| |Maus bros..... We lost| +|08/01/2022 04:19:57| |hai taxi~| +|08/01/2022 04:19:58| |so that's how baby tanks are made huh| +|08/01/2022 04:19:59| |ooarai cant possibly win this one| +|08/01/2022 04:19:59| ;_;7 +|08/01/2022 04:20:00| F +|08/01/2022 04:20:00| |RIP THICC BOY| +|08/01/2022 04:20:01| F +|08/01/2022 04:20:01| |cute tank sparks| +|08/01/2022 04:20:01| RIP +|08/01/2022 04:20:02| flacid +|08/01/2022 04:20:02| |czechnology... | +|08/01/2022 04:20:04| F +|08/01/2022 04:20:04| F +|08/01/2022 04:20:05| F +|08/01/2022 04:20:05| rip +|08/01/2022 04:20:05| |Goodnight sweet hetzer ;_;| +|08/01/2022 04:20:05| |HETZERBROS WE JOBBED| +|08/01/2022 04:20:06| |ITS OVER| +|08/01/2022 04:20:06| o7 +|08/01/2022 04:20:07| F +|08/01/2022 04:20:08| F +|08/01/2022 04:20:08| F +|08/01/2022 04:20:09| F +|08/01/2022 04:20:09| rip +|08/01/2022 04:20:09| ;_;7 +|08/01/2022 04:20:09| f +|08/01/2022 04:20:10| o7 +|08/01/2022 04:20:10| ;_;7 +|08/01/2022 04:20:10| |AAAAAAAAAANNNNNNNNNNZZZZZZZZZZZZUUUUUUUUUUUUUUUUU UUUUUUUUOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 04:20:10| |Riop Hetzewr| +|08/01/2022 04:20:10| o7 +|08/01/2022 04:20:11| o7 +|08/01/2022 04:20:11| ;__;7 +|08/01/2022 04:20:12| F +|08/01/2022 04:20:12| >THAT +|08/01/2022 04:20:13| rip +|08/01/2022 04:20:13| |HETZERCHAD ;___;7| +|08/01/2022 04:20:13| FFFFFF +|08/01/2022 04:20:14| ;_;7 +|08/01/2022 04:20:14| |sasuga hetzer| +|08/01/2022 04:20:14| F +|08/01/2022 04:20:15| NOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:20:15| F +|08/01/2022 04:20:16| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:20:17| |and they survived that much| +|08/01/2022 04:20:17| |;_;7 hetzer-kun| +|08/01/2022 04:20:17| o7 +|08/01/2022 04:20:17| o7 +|08/01/2022 04:20:17| o7 +|08/01/2022 04:20:17| RIP +|08/01/2022 04:20:17| o7 +|08/01/2022 04:20:18| ;__;7 +|08/01/2022 04:20:18| |>our job here is done >you didn't do anything| +|08/01/2022 04:20:19| ;_;7 +|08/01/2022 04:20:19| LOUDER +|08/01/2022 04:20:19| FAITO +|08/01/2022 04:20:20| |thanks tl| +|08/01/2022 04:20:21| ;_;7 +|08/01/2022 04:20:23| ANZU +|08/01/2022 04:20:23| ;_;7 +|08/01/2022 04:20:23| FAITO +|08/01/2022 04:20:24| |>it was a good run| +|08/01/2022 04:20:24| o7 +|08/01/2022 04:20:25| F +|08/01/2022 04:20:25| |F crushed by Thicc tank| +|08/01/2022 04:20:29| |IM SURE THIS WONT IMPACT HER UNIVERSITY ENTRANCE| +|08/01/2022 04:20:37| |haha yeah| +|08/01/2022 04:20:37| |4-14 ez dubs| +|08/01/2022 04:20:39| |98% CHANCE OF VICTORY| +|08/01/2022 04:20:39| |DORIKO GATSU| +|08/01/2022 04:20:41| |Momobros we got too cocky| +|08/01/2022 04:20:45| |4 v 14 gg ez no re| +|08/01/2022 04:20:50| LEOPON +|08/01/2022 04:20:50| |tfw noriko makes me tear up | +|08/01/2022 04:20:52| Elefant +|08/01/2022 04:20:54| 1v18? +|08/01/2022 04:20:56| AZUDA +|08/01/2022 04:20:57| |GIVE EM HELL| +|08/01/2022 04:20:58| jagdnigger........... +|08/01/2022 04:20:58| |cunny bunnies| +|08/01/2022 04:20:59| |>Trying to 1v1 a superiour tank| +|08/01/2022 04:21:02| okee +|08/01/2022 04:21:03| ogey +|08/01/2022 04:21:03| |no crying in senshado!| +|08/01/2022 04:21:04| |azusa ascending| +|08/01/2022 04:21:05| oohkayyyy +|08/01/2022 04:21:05| Manko +|08/01/2022 04:21:06| |time to be MVP Leopon chads| +|08/01/2022 04:21:07| okaaay +|08/01/2022 04:21:07| okee +|08/01/2022 04:21:09| ogey +|08/01/2022 04:21:13| OKEH +|08/01/2022 04:21:15| |DIZZY WANDER| +|08/01/2022 04:21:15| |FURAFURA SAKUSEN| +|08/01/2022 04:21:16| |Superior tank with infeiror crew| +|08/01/2022 04:21:16| |o g e y | +|08/01/2022 04:21:17| |DRUNK DRIVING MAKO| +|08/01/2022 04:21:24| FUWAFUWA +|08/01/2022 04:21:24| フラフラ作戦って +|08/01/2022 04:21:33| |MAKO MAKE SURE YOU DRIVE LIKE A DRUNK BITCH| +|08/01/2022 04:21:37| |fura fura taimu| +|08/01/2022 04:21:44| |Did you just call my waify inferiour, anon?| +|08/01/2022 04:21:44| |who could be behind this post| +|08/01/2022 04:21:46| プータロー作戦みたいなもんやろ +|08/01/2022 04:21:48| |LET'S GO MAHO CHADS| +|08/01/2022 04:21:48| |buffering time| +|08/01/2022 04:21:51| |bros i;m getting tired| +|08/01/2022 04:21:52| |GuP x K-ON when| +|08/01/2022 04:21:53| ふらふら時間 +|08/01/2022 04:21:54| https://soyjak.party/soy//res/275227.html +|08/01/2022 04:21:58| MAHOBVLLS +|08/01/2022 04:22:01| |infantry support? just support your konigstiger with another konigstiger| +|08/01/2022 04:22:02| |SNW TOMORROW| +|08/01/2022 04:22:04| |YOU MUST NOT FALL ASLEEP| +|08/01/2022 04:22:08| |kill yourself sojak retard| +|08/01/2022 04:22:11| |rip to all those that passed out already| +|08/01/2022 04:22:14| |lads I pissed. please forgive me| +|08/01/2022 04:22:21| |>passing out | +|08/01/2022 04:22:21| |Infantry support is just a meme| +|08/01/2022 04:22:22| |piss in my mouth| +|08/01/2022 04:22:22| |IM HOLDING ON BROS| +|08/01/2022 04:22:23| |I was hoping I'd last the film but I don't know folk| +|08/01/2022 04:22:26| |RAPE WANI IN THE MOUTH| +|08/01/2022 04:22:28| KONO +|08/01/2022 04:22:29| |RIP to all those who died and will die before das finale 6| +|08/01/2022 04:22:29| |please face the wall now| +|08/01/2022 04:22:30| |as long as it was in a bottle pissing is ok| +|08/01/2022 04:22:33| |I still haven't shat| +|08/01/2022 04:22:33| |>still needing basic human needs like sleeping| +|08/01/2022 04:22:34| |idk man i think taking a der film nap is worth it| +|08/01/2022 04:22:36| |HEAVY TANK KILLERS!| +|08/01/2022 04:22:36| |>kill yourself soyjak retard| +|08/01/2022 04:22:38| |>they learned from the mo vie| +|08/01/2022 04:22:39| aye! +|08/01/2022 04:22:40| |AZUDA HI| +|08/01/2022 04:22:40| |HAI HAI HAI| +|08/01/2022 04:22:41| Ö +|08/01/2022 04:22:42| aye? +|08/01/2022 04:22:42| |aye aye aye!| +|08/01/2022 04:22:42| |wow this is just like kelly's heroes| +|08/01/2022 04:22:42| |AYE AYE AYE| +|08/01/2022 04:22:43| |soyjaks incoming| +|08/01/2022 04:22:44| tsukimontsukimontsukimon +|08/01/2022 04:22:46| KINO +|08/01/2022 04:22:46| |NAME DROP| +|08/01/2022 04:22:48| Kino +|08/01/2022 04:22:50| |RIGHT TURN| +|08/01/2022 04:22:50| |operation kino| +|08/01/2022 04:22:50| KINO +|08/01/2022 04:22:54| |Sleeping > GuP STREAM | +|08/01/2022 04:22:55| |Name drop? they dead now| +|08/01/2022 04:22:55| |fucking Kino| +|08/01/2022 04:22:56| KINO +|08/01/2022 04:22:56| |who's kelly?| +|08/01/2022 04:22:57| KINO +|08/01/2022 04:22:57| |Rip Ferdinand| +|08/01/2022 04:22:57| |HOGANS HEROES| +|08/01/2022 04:22:59| Ö +|08/01/2022 04:23:00| |>Imagine the eearth still be in one piece by the time DF6 comes out| +|08/01/2022 04:23:01| |FAT SHAMED| +|08/01/2022 04:23:01| ELEFANTBROS... +|08/01/2022 04:23:02| |>soyjaks incoming | +|08/01/2022 04:23:02| |THAT'S PAINT| +|08/01/2022 04:23:02| |DUMB FAT TANK| +|08/01/2022 04:23:03| |truly ikinography| +|08/01/2022 04:23:04| BASED +|08/01/2022 04:23:05| ANAL +|08/01/2022 04:23:05| |ITS OVER| +|08/01/2022 04:23:06| Ö +|08/01/2022 04:23:07| FAT +|08/01/2022 04:23:07| RIP +|08/01/2022 04:23:08| |maus too fat| +|08/01/2022 04:23:10| |>>soyjaks incoming| +|08/01/2022 04:23:11| ここは出来ない名無し人々いっぱいですよね~~~ +|08/01/2022 04:23:12| |CHO CHO| +|08/01/2022 04:23:13| |SIZE MATTERS BROS| +|08/01/2022 04:23:14| o7 +|08/01/2022 04:23:15| |ferdinand too fat| +|08/01/2022 04:23:16| GENIUS +|08/01/2022 04:23:16| |SAKI THE GAWD| +|08/01/2022 04:23:16| |500 IQ| +|08/01/2022 04:23:16| |too big| +|08/01/2022 04:23:17| saki? +|08/01/2022 04:23:17| SAKI!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 04:23:18| |BASED AUTIST SAKI| +|08/01/2022 04:23:18| butterfly? +|08/01/2022 04:23:19| |SHE SPOKE| +|08/01/2022 04:23:19| SAKI +|08/01/2022 04:23:20| genius +|08/01/2022 04:23:21| |SE NO| +|08/01/2022 04:23:21| Saki!!! +|08/01/2022 04:23:22| |Big brained| +|08/01/2022 04:23:24| SAKI2SMART +|08/01/2022 04:23:24| |how does this girls head work| +|08/01/2022 04:23:27| |999999999 IQ| +|08/01/2022 04:23:28| |ass blasted| +|08/01/2022 04:23:28| |Em, you just killed the crew| +|08/01/2022 04:23:28| rekt +|08/01/2022 04:23:29| |OH N-| +|08/01/2022 04:23:29| |ERIKA SEETHING| +|08/01/2022 04:23:29| |AUTISM SPEAKS| +|08/01/2022 04:23:29| |bunny cunnies... | +|08/01/2022 04:23:31| b +|08/01/2022 04:23:34| OST +|08/01/2022 04:23:39| |ass blasted| +|08/01/2022 04:23:39| https://soyjak.party/soy//res/275227.html +|08/01/2022 04:23:41| |autism > erika| +|08/01/2022 04:23:41| lmao +|08/01/2022 04:23:49| |>attempted murder| +|08/01/2022 04:23:49| >soyjacks +|08/01/2022 04:23:50| |nobody will click your links, cancer| +|08/01/2022 04:23:55| GUTS! +|08/01/2022 04:23:57| |fuck off to reddit| +|08/01/2022 04:23:57| |:tf: u mad?| +|08/01/2022 04:24:03| GUTS +|08/01/2022 04:24:04| >:tf: +|08/01/2022 04:24:05| |posting links here lmoa| +|08/01/2022 04:24:05| https://suckmyass +|08/01/2022 04:24:07| guts +|08/01/2022 04:24:08| UTE +|08/01/2022 04:24:10| |SOYJACK A SHIT| +|08/01/2022 04:24:11| lemonparty.org +|08/01/2022 04:24:12| |>nobody will click your links cancer| +|08/01/2022 04:24:12| |pepega why you mad though| +|08/01/2022 04:24:12| |these poor bunneies| +|08/01/2022 04:24:14| GUTS +|08/01/2022 04:24:15| |>kys soyjack| +|08/01/2022 04:24:16| Ö +|08/01/2022 04:24:19| goatse.cx +|08/01/2022 04:24:19| |200 IQ| +|08/01/2022 04:24:20| |Mine Were Of Trouble Peter Kemp| +|08/01/2022 04:24:20| |>the redditor showed up| +|08/01/2022 04:24:21| TROLLED +|08/01/2022 04:24:21| https://TLNOTEANZUMEANSSEX.com +|08/01/2022 04:24:25| |AZUSA TOO SMART| +|08/01/2022 04:24:27| tubgirl.jpg +|08/01/2022 04:24:28| |o fuk...| +|08/01/2022 04:24:28| www.blacked.com +|08/01/2022 04:24:29| |>live soyjak | +|08/01/2022 04:24:30| |what are we drinking tonight boys| +|08/01/2022 04:24:35| beer +|08/01/2022 04:24:36| water +|08/01/2022 04:24:36| Pee +|08/01/2022 04:24:38| water +|08/01/2022 04:24:38| |Why can't I penetrate Jagdpanzer's rear?| +|08/01/2022 04:24:39| fanta +|08/01/2022 04:24:41| darjeeling +|08/01/2022 04:24:42| RIP +|08/01/2022 04:24:42| |BEER BEER BEER| +|08/01/2022 04:24:43| Bathwater +|08/01/2022 04:24:43| water +|08/01/2022 04:24:44| |rum, vodka, wine| +|08/01/2022 04:24:45| |atama ii| +|08/01/2022 04:24:45| |they dead| +|08/01/2022 04:24:48| ASAHI +|08/01/2022 04:24:50| ardbeg +|08/01/2022 04:24:50| |Now kiss| +|08/01/2022 04:24:50| |brown liquor| +|08/01/2022 04:24:50| |I'd rather penetrate Anzus rear| +|08/01/2022 04:24:51| kowaii... +|08/01/2022 04:24:52| |chat is degenerating| +|08/01/2022 04:24:53| GIN +|08/01/2022 04:24:54| |TURRET FENCING| +|08/01/2022 04:24:54| |wait what| +|08/01/2022 04:24:58| |HIGH IQ| +|08/01/2022 04:24:58| |specifically homebrew| +|08/01/2022 04:24:59| |jagdnigger bros........| +|08/01/2022 04:24:59| JOUST +|08/01/2022 04:25:00| |Chat is reclining...| +|08/01/2022 04:25:01| AZUSA!!! +|08/01/2022 04:25:02| |how is this happening| +|08/01/2022 04:25:03| |chat falling apart at the kino as expected| +|08/01/2022 04:25:04| |capwisun time| +|08/01/2022 04:25:04| 卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐 +|08/01/2022 04:25:07| |Chat is returning to native state of degeneration| +|08/01/2022 04:25:07| jagdtigerbros... +|08/01/2022 04:25:08| |AZUSA BASED!| +|08/01/2022 04:25:09| |the music| +|08/01/2022 04:25:09| OUCH +|08/01/2022 04:25:10| rip +|08/01/2022 04:25:11| jej +|08/01/2022 04:25:12| F +|08/01/2022 04:25:13| |NOT THE CUNNY| +|08/01/2022 04:25:13| |RIP turret| +|08/01/2022 04:25:13| OUCH +|08/01/2022 04:25:15| |lmao get fucked| +|08/01/2022 04:25:16| |the front fell off| +|08/01/2022 04:25:16| dead +|08/01/2022 04:25:16| kek +|08/01/2022 04:25:16| wwwww +|08/01/2022 04:25:17| F +|08/01/2022 04:25:17| rip +|08/01/2022 04:25:17| ouch +|08/01/2022 04:25:17| aaaaaaaaaaaaaaah +|08/01/2022 04:25:17| |Broken ponos!| +|08/01/2022 04:25:17| damn +|08/01/2022 04:25:17| JESUS +|08/01/2022 04:25:18| GORE +|08/01/2022 04:25:18| RIP +|08/01/2022 04:25:18| F +|08/01/2022 04:25:18| |jagdcucks how could this happen.....| +|08/01/2022 04:25:19| |it's over| +|08/01/2022 04:25:19| WHy +|08/01/2022 04:25:20| |I felt that| +|08/01/2022 04:25:20| F +|08/01/2022 04:25:21| CRHIST +|08/01/2022 04:25:21| |its over...| +|08/01/2022 04:25:21| |i felt that| +|08/01/2022 04:25:21| |JAGDBROS HOW COULD IT COME TO THIS| +|08/01/2022 04:25:21| 草wwwww +|08/01/2022 04:25:22| NOOOOO +|08/01/2022 04:25:23| |out fucking skilled| +|08/01/2022 04:25:24| |Azusa love| +|08/01/2022 04:25:25| |AZUSAbros we won| +|08/01/2022 04:25:25| |RIP Cunnytonk| +|08/01/2022 04:25:26| F +|08/01/2022 04:25:26| https://soyjak.party/soy//res/275227.html +|08/01/2022 04:25:28| >smellefant +|08/01/2022 04:25:28| |lmaoing at JAGDNIGGERS| +|08/01/2022 04:25:30| |Jagdnigger out kek| +|08/01/2022 04:25:30| F +|08/01/2022 04:25:33| rabbitbros +|08/01/2022 04:25:35| |AYA GLASSES ARE RIP| +|08/01/2022 04:25:36| 卐卐卐卐 +|08/01/2022 04:25:39| |you WILL stop posting links retard| +|08/01/2022 04:25:39| |mina daijoubu desu| +|08/01/2022 04:25:44| |>Saki doesn't respond| +|08/01/2022 04:25:47| https://soyjak.party/soy//res/275227.html +|08/01/2022 04:25:49| |How do you even expect people to click that link here like wtf retard| +|08/01/2022 04:25:50| sakibros... +|08/01/2022 04:25:52| |she dead| +|08/01/2022 04:25:55| |WE CAN STILL WIN THIS KUROMORIMINE BROS | +|08/01/2022 04:25:55| |THE LAST STAND| +|08/01/2022 04:25:55| |here we go lads| +|08/01/2022 04:25:57| |haha soyjacks funny| +|08/01/2022 04:25:58| |DO NOT ENTER| +|08/01/2022 04:25:59| |Saki is a product of group hallucination| +|08/01/2022 04:26:00| |you should stop posting links....NOW!| +|08/01/2022 04:26:01| o7 +|08/01/2022 04:26:02| o7 +|08/01/2022 04:26:02| |ROCKSTAR PARK| +|08/01/2022 04:26:02| Ö +|08/01/2022 04:26:02| KITA +|08/01/2022 04:26:03| |soyjackoff my nutz | +|08/01/2022 04:26:04| Kitaaaaaaaaaa! +|08/01/2022 04:26:04| |1v1 time| +|08/01/2022 04:26:04| |Oh yeah this part| +|08/01/2022 04:26:04| |HOLD THE LINE| +|08/01/2022 04:26:04| |THOU SHALL NOT PASS| +|08/01/2022 04:26:06| |GAVE THEIR LIVES SO BOLDLY| +|08/01/2022 04:26:06| |YOU SHALL NOT PASS| +|08/01/2022 04:26:06| |Fuck kikes and spammers| +|08/01/2022 04:26:06| |soyjacks are for 15 year olds| +|08/01/2022 04:26:07| |the alamo approaches | +|08/01/2022 04:26:08| |PURE KINO INCOMING| +|08/01/2022 04:26:10| o/ +|08/01/2022 04:26:10| |wojack is...le funny| +|08/01/2022 04:26:12| |KUROMOROMINEBROS WE ARE GOING TO MAKE IT| +|08/01/2022 04:26:12| |LOVE ISN'T ALWAYS ON TIME| +|08/01/2022 04:26:12| |Time for kino| +|08/01/2022 04:26:15| DUEL! +|08/01/2022 04:26:15| |SISTER DUEL| +|08/01/2022 04:26:19| SNAAAAAAKE +|08/01/2022 04:26:19| MAHO +|08/01/2022 04:26:20| |1V1 FAGGET| +|08/01/2022 04:26:20| |1V1 ME | +|08/01/2022 04:26:21| HODL +|08/01/2022 04:26:22| DVEL! +|08/01/2022 04:26:24| seemless +|08/01/2022 04:26:24| |WE SETTLE THIS HERE| +|08/01/2022 04:26:26| |MULTI-TREAD DRIFTING| +|08/01/2022 04:26:26| HONOURRRRR +|08/01/2022 04:26:26| |NIGERUNDAYO | +|08/01/2022 04:26:27| |IMOUTO x ONEESAN| +|08/01/2022 04:26:27| |TONIGHT, TODAY| +|08/01/2022 04:26:28| |IT'S TIME TO D-D-D-DUEL| +|08/01/2022 04:26:29| |DEJA VU| +|08/01/2022 04:26:29| DU-DU-DUEL +|08/01/2022 04:26:30| |1v1 me fagget| +|08/01/2022 04:26:32| |WE ACE COMBAT ZERO NOW| +|08/01/2022 04:26:32| |holy shit leopon is the sexiest tank| +|08/01/2022 04:26:32| |SOYJACK A SHIT AND SO ARE ITS LOSER POSTERS| +|08/01/2022 04:26:32| |Mano a mano? More like... Miho a Maho| +|08/01/2022 04:26:35| nani? +|08/01/2022 04:26:36| |STANDING HERE| +|08/01/2022 04:26:39| |miho x maho| +|08/01/2022 04:26:41| |I REALIZE| +|08/01/2022 04:26:41| KINO +|08/01/2022 04:26:42| |STANDING HERE| +|08/01/2022 04:26:43| |is it really a sexy tank?| +|08/01/2022 04:26:44| |WTF ERIKA DONT CALL MY PORSCHE A FAILED WEAPON| +|08/01/2022 04:26:44| |I REALIZE| +|08/01/2022 04:26:44| |SISTA DORIFTO!| +|08/01/2022 04:26:45| |MAHO MAHO MAHO| +|08/01/2022 04:26:45| |Maho's Mahos....| +|08/01/2022 04:26:45| KINO +|08/01/2022 04:26:46| KINO +|08/01/2022 04:26:47| |pz iv vs tiger bro| +|08/01/2022 04:26:48| |THAT IN THE END| +|08/01/2022 04:26:49| |What's this show called again?| +|08/01/2022 04:26:51| |DRIFT ON MY COCK| +|08/01/2022 04:26:51| |YOU WERE JUST LIKE ME| +|08/01/2022 04:26:52| |BONDING TIME| +|08/01/2022 04:26:52| |YOU WERE JUST LIKE ME| +|08/01/2022 04:26:53| |Tiger? More like NIGGER!| +|08/01/2022 04:26:53| |YOU WERE JUST LIKE ME | +|08/01/2022 04:26:53| |Miho x Maho but in bed| +|08/01/2022 04:26:53| KINO +|08/01/2022 04:26:56| |initial t| +|08/01/2022 04:26:56| |YOU WERE JUST LIKE ME| +|08/01/2022 04:26:56| |cute 3D| +|08/01/2022 04:26:57| |YOU WERE JUST LIKE ME| +|08/01/2022 04:26:57| k-on +|08/01/2022 04:27:00| |TRYING TO MAKE HISTORY| +|08/01/2022 04:27:01| |Iron Idols| +|08/01/2022 04:27:01| |TRYING TO MAKE HISTORY| +|08/01/2022 04:27:03| |i bet maho wants to suck miho's mihos| +|08/01/2022 04:27:05| KINO +|08/01/2022 04:27:07| |LET'S GO MAHO| +|08/01/2022 04:27:07| |BUT WHOS TO JUDGE| +|08/01/2022 04:27:08| |tfw no stabilisers| +|08/01/2022 04:27:10| |NIGHT OF FIRE| +|08/01/2022 04:27:10| |I NEED cock miho| +|08/01/2022 04:27:10| |no doubt| +|08/01/2022 04:27:10| |female + IFV| +|08/01/2022 04:27:11| |FIGHTING SISTER AGAINST SISTER TO THE BITTER END| +|08/01/2022 04:27:12| |Pekoe-san, have you heard this saying? "Reminder Darj best waifu".| +|08/01/2022 04:27:13| |who doesn't want to suck mihos mihos| +|08/01/2022 04:27:14| |BUT WHO'S TO JUDGE| +|08/01/2022 04:27:14| |THE RIGHT FROM WRONG| +|08/01/2022 04:27:15| |THE RIGHT FROM WRONG| +|08/01/2022 04:27:15| |I FOLLOWED MY WRATH| +|08/01/2022 04:27:16| |erika wants to join| +|08/01/2022 04:27:17| |I bet I want to suck on Miho's Mihos| +|08/01/2022 04:27:18| |winner gets to be on top| +|08/01/2022 04:27:21| |Mako is the True MVP of this duel| +|08/01/2022 04:27:21| |TANK DUEL| +|08/01/2022 04:27:23| |OPERATION PUNCHY!| +|08/01/2022 04:27:23| |thats a shit syinh| +|08/01/2022 04:27:26| |WHEN YOUR GUARD IS DOWN I THINK WE'LL ALL AGREE| +|08/01/2022 04:27:27| |I'M BURNIN UP FOR YOU| +|08/01/2022 04:27:27| |I FUCKING LOVE MAHO!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:27:29| |I THINK WE'LL BOTH AGREE | +|08/01/2022 04:27:30| buffer +|08/01/2022 04:27:33| |Erika is being cucked right now| +|08/01/2022 04:27:35| |presss 3 for a threesome with Erika| +|08/01/2022 04:27:36| |KILL HER MAHOO| +|08/01/2022 04:27:36| |VIOLENCE BREEDS VIOLENCE| +|08/01/2022 04:27:38| |Maho wins every time| +|08/01/2022 04:27:38| |Maho smart| +|08/01/2022 04:27:38| 3 +|08/01/2022 04:27:38| |CARBON HELP ME| +|08/01/2022 04:27:40| |THAT IN THE END IT HAS TO BE THIS WAY~| +|08/01/2022 04:27:42| |VIOLENCE BREEDS VIOLENCE| +|08/01/2022 04:27:42| |Violence breeds violence| +|08/01/2022 04:27:44| GG +|08/01/2022 04:27:45| |BUT IN THE END IT HAS TO BE THIS WAYYYYYYYYYYY| +|08/01/2022 04:27:46| |The same strategy the Wani uses in DF3 to defeat Kat| +|08/01/2022 04:27:47| rammed +|08/01/2022 04:27:48| |I BURN EVERY TIME THAT I'M CLOSE TO YOU| +|08/01/2022 04:27:50| |NOT LIKE THIS| +|08/01/2022 04:27:50| |war never changes| +|08/01/2022 04:27:51| |cute maho| +|08/01/2022 04:27:54| 卐卐卐卐卐卐 +|08/01/2022 04:27:55| |BURNIN UP FOR YOU| +|08/01/2022 04:27:58| |maho is always cute| +|08/01/2022 04:27:58| KUSO +|08/01/2022 04:27:59| |FOR THE GRACE FOR THE MIGHT OF OUR LORD, IN THE NAME OF HIS GLORY| +|08/01/2022 04:28:00| |solid snek told me war has changed though?| +|08/01/2022 04:28:04| based +|08/01/2022 04:28:06| |how many concussions did that move cause?| +|08/01/2022 04:28:06| |BURNIIIIIIIING UP FOR YOOOOOUUU| +|08/01/2022 04:28:08| |how can they not disable a stationary target| +|08/01/2022 04:28:10| >though +|08/01/2022 04:28:12| |war never changes...| +|08/01/2022 04:28:13| |AMAAAZING GRAACEEE| +|08/01/2022 04:28:13| |NIGHT OF FIRE| +|08/01/2022 04:28:14| |F FOR DUCKS| +|08/01/2022 04:28:15| |KINO KINO KINO KINO| +|08/01/2022 04:28:15| >BUFFER +|08/01/2022 04:28:16| |Need for Speed: Carbon Coating| +|08/01/2022 04:28:18| >BUFFERING +|08/01/2022 04:28:18| |how can they not disable an angled Tiger P| +|08/01/2022 04:28:18| F +|08/01/2022 04:28:19| |its over...| +|08/01/2022 04:28:19| BUFFERONI +|08/01/2022 04:28:20| RIP +|08/01/2022 04:28:21| HOLD +|08/01/2022 04:28:22| buff +|08/01/2022 04:28:22| |war has changed| +|08/01/2022 04:28:24| |buffer time| +|08/01/2022 04:28:24| |So this porsche power, huh?| +|08/01/2022 04:28:26| |DEJA VU| +|08/01/2022 04:28:26| F +|08/01/2022 04:28:26| |RIP MEDIUM TANK BROS| +|08/01/2022 04:28:27| Kino +|08/01/2022 04:28:27| |>Shitbox porsche survives 300 direct hits| +|08/01/2022 04:28:28| |TIGER STAY WINNING| +|08/01/2022 04:28:28| |not buffering shit again| +|08/01/2022 04:28:29| |$1000 on BLACK FORSET to win| +|08/01/2022 04:28:30| |corner plate is like 80mm thick| +|08/01/2022 04:28:30| |LEOPON HOLD| +|08/01/2022 04:28:30| |fucking hell| +|08/01/2022 04:28:31| |bug buff| +|08/01/2022 04:28:31| |GAVE THEIR LIVES SO BOLDLY| +|08/01/2022 04:28:32| |IF KUROMORIMINE LOSES IM GETTING SENT TO BIRKENAU| +|08/01/2022 04:28:33| |goddam buffering| +|08/01/2022 04:28:34| |rip clutch tank| +|08/01/2022 04:28:35| |LEOPON HOLD| +|08/01/2022 04:28:36| |the tiger has been put down| +|08/01/2022 04:28:37| ;_;7 +|08/01/2022 04:28:37| NORIKO +|08/01/2022 04:28:38| |IN THE NAME OF GOD| +|08/01/2022 04:28:38| RIP! +|08/01/2022 04:28:38| |Porsche ;_;7| +|08/01/2022 04:28:39| F +|08/01/2022 04:28:40| MVP +|08/01/2022 04:28:40| |Leopon ;_;| +|08/01/2022 04:28:41| |EYE OF THE TIGER| +|08/01/2022 04:28:41| F +|08/01/2022 04:28:41| |RIP BROWN GIRL TEAM| +|08/01/2022 04:28:42| F +|08/01/2022 04:28:43| F +|08/01/2022 04:28:44| o7 +|08/01/2022 04:28:44| F +|08/01/2022 04:28:44| |DEFEND LIKE A LION| +|08/01/2022 04:28:44| proschebros... +|08/01/2022 04:28:44| |If KMM lose imma commit| +|08/01/2022 04:28:45| ;_;7 +|08/01/2022 04:28:45| o7 +|08/01/2022 04:28:46| TOTSUGEKI +|08/01/2022 04:28:46| TOTSUGEKI +|08/01/2022 04:28:46| F +|08/01/2022 04:28:46| |what would gimi do?| +|08/01/2022 04:28:47| TOTSUGEKI +|08/01/2022 04:28:47| ;_;7 +|08/01/2022 04:28:48| TOTSUGEKI +|08/01/2022 04:28:50| TOTSUGEKI? +|08/01/2022 04:28:51| TOTSUGEKI +|08/01/2022 04:28:51| |Oarai it's over| +|08/01/2022 04:28:52| |PORUSHE TIGAAAAAAA| +|08/01/2022 04:28:54| smugs +|08/01/2022 04:28:54| |porsche tiger is the strongest| +|08/01/2022 04:28:54| |YUUKURI DE II YO| +|08/01/2022 04:28:55| |RED SUN| +|08/01/2022 04:28:55| |BEST TEAM EVEN IN DEATH| +|08/01/2022 04:28:57| |yukkuri de ii yo~| +|08/01/2022 04:29:00| |TOTSUGEKI! O/| +|08/01/2022 04:29:02| ゆっくりねえええ +|08/01/2022 04:29:02| |WE GOT THIS IN THE BAG GERMAN BROS| +|08/01/2022 04:29:05| |Hourly reminder to HYDRATE| +|08/01/2022 04:29:05| |WE'VE GOT THIS MAHOCHADS| +|08/01/2022 04:29:10| |I love the pov shots| +|08/01/2022 04:29:11| |they used 3D really well| +|08/01/2022 04:29:12| |Accurate representation of how WW2 ended in Europe| +|08/01/2022 04:29:12| |yukkuri de ii yo~| +|08/01/2022 04:29:13| |Guys I think the german tank is gonna win this one| +|08/01/2022 04:29:15| |COME ON OOARI I HAVE $10k ON THIS SHIT| +|08/01/2022 04:29:15| |BET THE FARM ON KMM| +|08/01/2022 04:29:18| |NIGHT OF FIRE| +|08/01/2022 04:29:21| |LET'S GO HITLER CHADS| +|08/01/2022 04:29:21| |DEJA VU!| +|08/01/2022 04:29:23| |NOOO MAIKEL NOO THIS IS SO NOT RIGHT| +|08/01/2022 04:29:24| vince_orgasm.gif +|08/01/2022 04:29:28| |All I have to drink is my piss bottle...| +|08/01/2022 04:29:28| |BET MY WIFES BRIDE PRICE ON MAHO| +|08/01/2022 04:29:29| |GAS GAS GAS| +|08/01/2022 04:29:30| |KMM sounds like KLM| +|08/01/2022 04:29:30| |I'M BURNIN UP FOR YOU| +|08/01/2022 04:29:32| |KUROMORIMINE UBERMENSCH| +|08/01/2022 04:29:32| |CAM ON OORAI| +|08/01/2022 04:29:32| |IT LOOK LIKE ARE LUCK RAN OUT OARAIBROS| +|08/01/2022 04:29:33| |KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 04:29:34| |I put 1000000000000000000000000$ on ooooarai| +|08/01/2022 04:29:34| |Hitler vs Stalin 1v1 tank battle| +|08/01/2022 04:29:36| |The arrival of Steiner's army will save us, right Kuromorominebros?| +|08/01/2022 04:29:36| |>not firing at the driver's vision slit| +|08/01/2022 04:29:38| |NO ONE SLEEP IN TOKYO| +|08/01/2022 04:29:39| |BURN EVERYTIME THAT I'M CLOSE TO YOU| +|08/01/2022 04:29:39| |WE GAAAANNNNNNNNN| +|08/01/2022 04:29:39| |20K ON KUROMORIMINE| +|08/01/2022 04:29:40| |KMM UBER ALLES| +|08/01/2022 04:29:42| |SCORE SAM FACKING SHELLS| +|08/01/2022 04:29:44| LEWD +|08/01/2022 04:29:46| |why tf u shoot at the tiger vision port| +|08/01/2022 04:29:48| guys... +|08/01/2022 04:29:49| |INCOMING KINO| +|08/01/2022 04:29:52| FLOOF +|08/01/2022 04:29:52| |tank on tank action| +|08/01/2022 04:29:54| |HERE WE GO| +|08/01/2022 04:29:56| |>reload even faster| +|08/01/2022 04:29:58| |Toto, it's called Panzerfahren| +|08/01/2022 04:29:59| |CLUTCH FLOOF| +|08/01/2022 04:29:59| |MAXIMUM OVERFLUFF| +|08/01/2022 04:29:59| |BEst fluffer| +|08/01/2022 04:30:00| |der angriff steiners ist nicht erfolgt| +|08/01/2022 04:30:01| |FLOOF HAI| +|08/01/2022 04:30:03| |Full throttle kino| +|08/01/2022 04:30:04| |>just reload faster bro| +|08/01/2022 04:30:06| |DONT FLATSPOT THE TREADS MAKO| +|08/01/2022 04:30:07| |SPEED MORE SPEED| +|08/01/2022 04:30:07| |BELIEVE THE FLUFF| +|08/01/2022 04:30:10| |TEAMWORK MAKES THE DREAM WORK!| +|08/01/2022 04:30:11| |KAPITULIEREN? NEIN!!| +|08/01/2022 04:30:12| |DIE JOE BOO| +|08/01/2022 04:30:13| |DAS WAR EIN BEFEHL| +|08/01/2022 04:30:13| |>her job is to press r| +|08/01/2022 04:30:14| |ALL OR NOTHING| +|08/01/2022 04:30:14| |THE NEED FOR SNEED| +|08/01/2022 04:30:14| |its time| +|08/01/2022 04:30:16| |erika wants the futa cock| +|08/01/2022 04:30:17| |THE THING| +|08/01/2022 04:30:17| |ERIKA NTR| +|08/01/2022 04:30:18| |FINAL MOVE| +|08/01/2022 04:30:19| |PRO GAMER MOVE TIME| +|08/01/2022 04:30:19| |COPE ERIKA| +|08/01/2022 04:30:20| COMMMANDER! +|08/01/2022 04:30:21| |ITS OVER ERIKA| +|08/01/2022 04:30:22| |Erika late again| +|08/01/2022 04:30:22| |POWER AND SPEED SOLVES MANY THINGS| +|08/01/2022 04:30:22| TAICHOU!!!!! +|08/01/2022 04:30:22| |haha Erika| +|08/01/2022 04:30:22| |HERE IT IS BREHS| +|08/01/2022 04:30:23| |Erika.... go away.| +|08/01/2022 04:30:23| |<<>>| +|08/01/2022 04:30:24| |DEATH TO DMM| +|08/01/2022 04:30:24| |FEGELEIN FEGELEIN FEGELEIN FEGELEIN FEGELEIN | +|08/01/2022 04:30:25| SNEED +|08/01/2022 04:30:25| |LESBIAN INCEST DRIFTING| +|08/01/2022 04:30:26| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:30:29| >Erika +|08/01/2022 04:30:30| |THANKS TL| +|08/01/2022 04:30:31| AZUSAN +|08/01/2022 04:30:31| |LET'S GO MAHO CHADS| +|08/01/2022 04:30:31| Lews +|08/01/2022 04:30:31| |ERIKA KOPE| +|08/01/2022 04:30:32| FEGELEIN +|08/01/2022 04:30:33| ANZU +|08/01/2022 04:30:35| |Thanks TL| +|08/01/2022 04:30:35| |DAS WAS EIN BEFEHL| +|08/01/2022 04:30:35| |MOMO DUMB| +|08/01/2022 04:30:35| |LOAD FASTER JOHANN| +|08/01/2022 04:30:35| |want sex miho| +|08/01/2022 04:30:37| ANZU +|08/01/2022 04:30:38| KINO +|08/01/2022 04:30:39| |just one| +|08/01/2022 04:30:40| jews +|08/01/2022 04:30:41| |Momo's stupid fucking face...| +|08/01/2022 04:30:41| |WANI LATE TO BLOCK THE FLAG TANK AGAIN| +|08/01/2022 04:30:42| ZENSHIN +|08/01/2022 04:30:44| \O/ +|08/01/2022 04:30:47| |KMM LETS GOOOOOOOO| +|08/01/2022 04:30:47| |K I N O| +|08/01/2022 04:30:48| |>TL miho means "sloppy fuck"| +|08/01/2022 04:30:48| |>hitler seething| +|08/01/2022 04:30:51| |NIGHT OF FIRE| +|08/01/2022 04:30:52| UTE +|08/01/2022 04:30:54| |o/ Maho wins SIEG HEIL| +|08/01/2022 04:30:55| |tank drift| +|08/01/2022 04:30:56| UTE +|08/01/2022 04:30:57| |DEJA VU| +|08/01/2022 04:30:58| |DORIFTO DORIFTO| +|08/01/2022 04:30:59| |DEJA VU| +|08/01/2022 04:30:59| DORIFTOOOOOO +|08/01/2022 04:31:00| |DEJA VU| +|08/01/2022 04:31:01| |DEJA VU I'VE JUST BEEN IN THIS PLACE BEFORE| +|08/01/2022 04:31:01| drifting +|08/01/2022 04:31:01| DORIFTO +|08/01/2022 04:31:02| |DEJA VU| +|08/01/2022 04:31:02| DRIFT +|08/01/2022 04:31:03| |DEJA VU| +|08/01/2022 04:31:03| DORIFTO +|08/01/2022 04:31:04| DOOOORRRRRRRRRRRIIIIIIIIIIIIIIIFFFFFFFFFFFFFTTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:31:04| |NINJA SHIT| +|08/01/2022 04:31:05| |RULES OF NATURE| +|08/01/2022 04:31:05| |PANZER DRIFT| +|08/01/2022 04:31:05| NANI +|08/01/2022 04:31:06| |DEJA VU| +|08/01/2022 04:31:06| DORIFUTO +|08/01/2022 04:31:06| |KANSEI DORIFUTO| +|08/01/2022 04:31:06| |DEJA VU| +|08/01/2022 04:31:07| |MULTI-TREAD DRIFTING| +|08/01/2022 04:31:07| |I CAME UP FROM THE BOTTOM AND INTO THE TOP - FOR THE FIRST TIME I FEEL ALIVE| +|08/01/2022 04:31:08| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:31:08| |DEJA VU| +|08/01/2022 04:31:08| |Tl note: Gloriana means shit food| +|08/01/2022 04:31:09| DORIFTO +|08/01/2022 04:31:10| dorifto +|08/01/2022 04:31:10| |I'VE JUST BEEN IN THIS PLACE BEFORE| +|08/01/2022 04:31:10| |T I R O F I N A L E| +|08/01/2022 04:31:10| |KINO DRIFTOOOO| +|08/01/2022 04:31:11| NANI +|08/01/2022 04:31:11| AHHHHHHHHHHHH +|08/01/2022 04:31:11| KINO +|08/01/2022 04:31:11| PEW +|08/01/2022 04:31:12| |OOOARAAII DOOO RIIII FFUUUU TOOOOOO| +|08/01/2022 04:31:12| |Maho's ute is ses| +|08/01/2022 04:31:12| |WE DID IT KMM BROS| +|08/01/2022 04:31:13| |RUNNING IN THE 90S| +|08/01/2022 04:31:13| |NIGHT ON FIRE| +|08/01/2022 04:31:14| |I CAN FLY LIKE AN EAGLE AND STRIKE LIKE A HAWK| +|08/01/2022 04:31:14| DRIIIIIIFTO +|08/01/2022 04:31:15| KINO +|08/01/2022 04:31:15| |DEJA VU| +|08/01/2022 04:31:16| KINO +|08/01/2022 04:31:16| KINO +|08/01/2022 04:31:16| |KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 04:31:17| V +|08/01/2022 04:31:17| KINO +|08/01/2022 04:31:17| KINOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:31:17| |DORIFTO BATTLE| +|08/01/2022 04:31:18| KINO +|08/01/2022 04:31:18| |NO NO NO MAIKEL| +|08/01/2022 04:31:18| |YOU CAN'T DRIFT IN A TANK| +|08/01/2022 04:31:18| FUZAKERUNA +|08/01/2022 04:31:18| |Mami died | +|08/01/2022 04:31:19| KINOOOOOOOOOOOOOOO +|08/01/2022 04:31:20| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:31:20| KINO +|08/01/2022 04:31:20| |Cross Counter| +|08/01/2022 04:31:20| KINO +|08/01/2022 04:31:20| KINO +|08/01/2022 04:31:21| KINO +|08/01/2022 04:31:22| KINO +|08/01/2022 04:31:22| |GAS GAS GAS| +|08/01/2022 04:31:22| ! +|08/01/2022 04:31:23| KINOOOOOOOOOOOOOOOO +|08/01/2022 04:31:23| |destroyed ass| +|08/01/2022 04:31:24| |ITS SOOO NOT RIGHT| +|08/01/2022 04:31:24| |Can't believe OArai lost...| +|08/01/2022 04:31:24| |IT'S OVER OARAI| +|08/01/2022 04:31:24| KINO +|08/01/2022 04:31:26| |KILLING MY LOVE| +|08/01/2022 04:31:26| KINO +|08/01/2022 04:31:26| |COMPRESSION ARTIFACTS| +|08/01/2022 04:31:27| |PURE KINO| +|08/01/2022 04:31:28| |maho bros....| +|08/01/2022 04:31:28| |KUROMOROMINEBROS ITS OVER| +|08/01/2022 04:31:29| キターーーーーーーーーーーーーー~! +|08/01/2022 04:31:29| |Eurobeat grade kino| +|08/01/2022 04:31:29| |so satisfying| +|08/01/2022 04:31:30| |ERIKA IS SHOOK| +|08/01/2022 04:31:30| O: +|08/01/2022 04:31:30| :O +|08/01/2022 04:31:31| KINONOOOOOO +|08/01/2022 04:31:32| [scared] +|08/01/2022 04:31:32| |dumb erika| +|08/01/2022 04:31:32| |erika shock| +|08/01/2022 04:31:34| scared +|08/01/2022 04:31:35| |MAHO STAYS WINING| +|08/01/2022 04:31:35| leopold +|08/01/2022 04:31:36| ...... +|08/01/2022 04:31:36| |ERIKA YOU DUMB BITCh| +|08/01/2022 04:31:36| |KEIKAKU DOORI| +|08/01/2022 04:31:36| やべ +|08/01/2022 04:31:37| |Bespectacled wani| +|08/01/2022 04:31:37| |dumb wani| +|08/01/2022 04:31:38| |CUTE HEAD| +|08/01/2022 04:31:38| |u WA SHOCK| +|08/01/2022 04:31:39| WIN +|08/01/2022 04:31:39| scared... +|08/01/2022 04:31:39| >scaredmiho.png +|08/01/2022 04:31:40| :O +|08/01/2022 04:31:40| |OH NO OH NO OH NO KRAUTBROS| +|08/01/2022 04:31:41| |BLOWN THE FUCK OUT| +|08/01/2022 04:31:41| Kino!!!!!!! +|08/01/2022 04:31:41| NOOO +|08/01/2022 04:31:41| ENDSIEG +|08/01/2022 04:31:42| |WANI: RATTLED| +|08/01/2022 04:31:43| |IS THAT TV ON AN ARTILLERY PIECE| +|08/01/2022 04:31:44| MAKEMASHITA +|08/01/2022 04:31:44| |OORAI WINS AGAIN| +|08/01/2022 04:31:44| |NOOOOOOOOO KUROMORIMINEBROS WE FUCKING LOST| +|08/01/2022 04:31:44| >erika +|08/01/2022 04:31:45| YATTA +|08/01/2022 04:31:46| |NOOOOOOO KRAUTBROS| +|08/01/2022 04:31:46| |EAT SHIT KMM| +|08/01/2022 04:31:46| |THEY LOSSSSSTTTTTT AAAAAAAAAAAAAA IM GETTING SENT TO THE EASTERN FRONT| +|08/01/2022 04:31:47| |WE DID IT BOYS | +|08/01/2022 04:31:48| 888888888888888888 +|08/01/2022 04:31:48| |(((THEY))) did this... | +|08/01/2022 04:31:49| |YAAAAAAAAAAAAAAAAA OOOOOOARIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +|08/01/2022 04:31:49| YAAAAAAAAAAAAAAAAAAAAAAAAAY +|08/01/2022 04:31:49| KATTA +|08/01/2022 04:31:49| |WE DID IT BROS| +|08/01/2022 04:31:50| leopold +|08/01/2022 04:31:50| BANZAI +|08/01/2022 04:31:51| NOOOOOOOOOOO +|08/01/2022 04:31:51| YEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEY +|08/01/2022 04:31:51| |gg easy| +|08/01/2022 04:31:51| |gj guys we did it| +|08/01/2022 04:31:51| YATTA +|08/01/2022 04:31:52| BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 04:31:52| |LETS GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 04:31:52| |WANI: SEETHING| +|08/01/2022 04:31:52| YATTA +|08/01/2022 04:31:53| |OORAI BANZAI| +|08/01/2022 04:31:53| |WE WON OOARAIBROS| +|08/01/2022 04:31:53| Yoshaaaa +|08/01/2022 04:31:53| |TOTALER ENDSIEG| +|08/01/2022 04:31:53| 8888888888888888 +|08/01/2022 04:31:53| |We made it bros...| +|08/01/2022 04:31:54| pachipachipachipachi +|08/01/2022 04:31:54| |OOARI CHADS WE WON| +|08/01/2022 04:31:54| YATTAAAAAAAAAAAAAAA +|08/01/2022 04:31:54| |MY WIFE| +|08/01/2022 04:31:54| hug +|08/01/2022 04:31:54| |WTF IS WAS OUR YEAR| +|08/01/2022 04:31:54| 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 +|08/01/2022 04:31:54| 888888888888888888888888 +|08/01/2022 04:31:55| |GG EZ| +|08/01/2022 04:31:55| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:31:55| 大洗の勝利!!!!!! +|08/01/2022 04:31:56| OORAI +|08/01/2022 04:31:56| RIGGED +|08/01/2022 04:31:56| YOSHAAAAAA +|08/01/2022 04:31:57| |OOARAIWINSLOL OOARAIWINSLOL OOARAIWINSLOL| +|08/01/2022 04:31:58| YATTA +|08/01/2022 04:31:58| |GG EZ NO RE| +|08/01/2022 04:31:58| YATTAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:31:59| |HOLY SHIT HOW DID THEY MANAGE THIS| +|08/01/2022 04:31:59| anzu +|08/01/2022 04:31:59| |IT'S 1945 ALL OVER AGAIN NOOOOOO| +|08/01/2022 04:31:59| 88 +|08/01/2022 04:31:59| |YEAHHHHHHHHHHHHHHHHHHHHHH BITHCES| +|08/01/2022 04:32:01| 8888888888888888888888888888888888888888888888888888888888888888888888 +|08/01/2022 04:32:01| >momo +|08/01/2022 04:32:01| |STOP THE COUNT| +|08/01/2022 04:32:02| |The school is saved!| +|08/01/2022 04:32:03| nazibros... +|08/01/2022 04:32:03| |THANKS TL| +|08/01/2022 04:32:03| |YUZU JIGGLY TITS| +|08/01/2022 04:32:03| |KMM means Kilometer Mile| +|08/01/2022 04:32:04| YATTTTTTTTTTTTTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:32:06| |KUROMOROMINE LOCKED UP AT GITMO TRUST THE PLAN -Q| +|08/01/2022 04:32:07| |WA HA HA| +|08/01/2022 04:32:08| ASSPULL +|08/01/2022 04:32:08| MIPORIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIN +|08/01/2022 04:32:10| D-Duce? +|08/01/2022 04:32:13| |Maybe the real KMM was the friends we made along the way?| +|08/01/2022 04:32:14| MIPORIN! +|08/01/2022 04:32:15| |DVCE DVCE DVCE| +|08/01/2022 04:32:16| |NAIZURI WITH PORSCHE TIGER| +|08/01/2022 04:32:16| |MIPORIN I NEED COCK| +|08/01/2022 04:32:16| DVCE +|08/01/2022 04:32:17| YAHO +|08/01/2022 04:32:19| |where is dvce?| +|08/01/2022 04:32:19| |Duce slept through the match| +|08/01/2022 04:32:20| |BROS WE DID IT| +|08/01/2022 04:32:21| |I CAN'T BELEIVE THEY DID IT| +|08/01/2022 04:32:21| |SUGOI DESU WA| +|08/01/2022 04:32:22| |KMM means Kill My Mom| +|08/01/2022 04:32:23| |Like the good old days after 1945| +|08/01/2022 04:32:24| Excellento! +|08/01/2022 04:32:27| |nice quick| +|08/01/2022 04:32:27| |Ducebros... did we get too sleepy....| +|08/01/2022 04:32:28| |Nice Quicku| +|08/01/2022 04:32:30| |nice quick| +|08/01/2022 04:32:30| YAHOO +|08/01/2022 04:32:31| |DVCE YOU DUMB FUCK | +|08/01/2022 04:32:33| |MEXT NOOOOOOO| +|08/01/2022 04:32:35| |Fuck I missed it, curse my ned to shit.,| +|08/01/2022 04:32:36| |DUCE WAKE UP| +|08/01/2022 04:32:39| FAT +|08/01/2022 04:32:40| |MADLADS DID IT| +|08/01/2022 04:32:41| |that's a strond truck to tow that tank| +|08/01/2022 04:32:41| |dvce where the fuck r u| +|08/01/2022 04:32:42| |maho sent to the work camps afterward| +|08/01/2022 04:32:42| |NAISU QUICKU| +|08/01/2022 04:32:43| piss +|08/01/2022 04:32:43| |>school is saved woohoo| +|08/01/2022 04:32:45| |we got too sleepy duce bros.......| +|08/01/2022 04:32:45| |can I have my piss break now| +|08/01/2022 04:32:47| |DVCEbros we overslept...| +|08/01/2022 04:32:47| |DUCE PLEASE WAKU UPU| +|08/01/2022 04:32:48| |Don't blame Dvce, they eat too well to not sleep| +|08/01/2022 04:32:50| DUCE? +|08/01/2022 04:32:51| ^_^ +|08/01/2022 04:32:52| DVCEBROS... +|08/01/2022 04:32:52| |Miho died| +|08/01/2022 04:32:55| |DVCE WAKE UP PLEASE| +|08/01/2022 04:32:56| |WE WEW ROBBED, KMMBROS| +|08/01/2022 04:32:56| |PASTA TIME BROS| +|08/01/2022 04:32:56| |DVCE WAKE UP IT'S BEEN NINE YEARS| +|08/01/2022 04:32:56| |>u dont have a piss bottle| +|08/01/2022 04:32:57| DVCEEE +|08/01/2022 04:32:58| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:32:59| |Just use a piss bottle bro| +|08/01/2022 04:32:59| ;_; +|08/01/2022 04:33:00| otsukareeeee +|08/01/2022 04:33:01| |Anzio will be here soon, r-right?| +|08/01/2022 04:33:01| |YOU'RE WINNER| +|08/01/2022 04:33:03| |THANKS TL| +|08/01/2022 04:33:03| cry +|08/01/2022 04:33:04| ANZU +|08/01/2022 04:33:05| ^____^ +|08/01/2022 04:33:06| |HUGGO! <3| +|08/01/2022 04:33:06| Anzu +|08/01/2022 04:33:07| DORK +|08/01/2022 04:33:07| ;____; +|08/01/2022 04:33:08| bawl +|08/01/2022 04:33:08| ;-; +|08/01/2022 04:33:09| ;__; +|08/01/2022 04:33:09| |[THIS DUCE IS DECEASED]| +|08/01/2022 04:33:10| ;_; +|08/01/2022 04:33:10| |tiger a shit| +|08/01/2022 04:33:10| |MOMO DUMB| +|08/01/2022 04:33:10| ;_; +|08/01/2022 04:33:11| boobs +|08/01/2022 04:33:12| ;_____; +|08/01/2022 04:33:12| |MOMO HATE| +|08/01/2022 04:33:12| MOMO-CHAN +|08/01/2022 04:33:12| ;;;) +|08/01/2022 04:33:12| |momo such a baby| +|08/01/2022 04:33:13| ;_; +|08/01/2022 04:33:13| |HUG MOMO| +|08/01/2022 04:33:14| >implying +|08/01/2022 04:33:14| :_: +|08/01/2022 04:33:14| |Cry bitch, it's sexy| +|08/01/2022 04:33:14| T_T +|08/01/2022 04:33:14| |crying bitch| +|08/01/2022 04:33:15| |CUTE DORK| +|08/01/2022 04:33:16| stfu +|08/01/2022 04:33:17| |>all this effort just to keep going to school| +|08/01/2022 04:33:17| |MOMO IS CRYING! CRYBABY!!| +|08/01/2022 04:33:18| flat +|08/01/2022 04:33:18| |MOMO HATE| +|08/01/2022 04:33:18| |CUTE ANZU| +|08/01/2022 04:33:18| |>Shitting in a piss bottle.| +|08/01/2022 04:33:18| |Momo still dumb| +|08/01/2022 04:33:19| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:33:19| ;__; +|08/01/2022 04:33:20| |want to hug anzu| +|08/01/2022 04:33:20| LOL +|08/01/2022 04:33:21| |momo is so cute| +|08/01/2022 04:33:21| |PROTECT MOMO| +|08/01/2022 04:33:21| |I-I'm not crying it's just the rain I swear| +|08/01/2022 04:33:21| |Will Momo cry in Das 5?| +|08/01/2022 04:33:22| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 04:33:23| |sex with anzu| +|08/01/2022 04:33:24| |WAKE THE FUCK UP DUCE WE'VE GOT A PASTA TO MaKE| +|08/01/2022 04:33:25| |ooraibros... we really made it...| +|08/01/2022 04:33:25| |ULTRA SUPER MEGA CUTE ANZU| +|08/01/2022 04:33:25| |>he didnt pinky promise| +|08/01/2022 04:33:26| >SAved +|08/01/2022 04:33:26| |UNTIL THE MOVIE THAT IS| +|08/01/2022 04:33:26| |HUG MOMO| +|08/01/2022 04:33:28| ANZUUUUU +|08/01/2022 04:33:28| |>our school won't be shutting down| +|08/01/2022 04:33:29| |kek you will never graduate| +|08/01/2022 04:33:30| GOD +|08/01/2022 04:33:30| |>not closing down| +|08/01/2022 04:33:31| |WAKE UP DUCE| +|08/01/2022 04:33:32| WEW +|08/01/2022 04:33:32| |Look how flat she is| +|08/01/2022 04:33:34| |time for the /u/ SEX| +|08/01/2022 04:33:34| |GOD I FUCKING WISH| +|08/01/2022 04:33:35| |then they realize they no sign paper| +|08/01/2022 04:33:35| LEWD +|08/01/2022 04:33:35| |>anzu will never give you a hug| +|08/01/2022 04:33:35| cute +|08/01/2022 04:33:36| |LEG LOCKED| +|08/01/2022 04:33:37| |God, I wish that were me| +|08/01/2022 04:33:37| |the shool has like 10 more minutes| +|08/01/2022 04:33:37| |I wish I was Miho| +|08/01/2022 04:33:38| UOHHHHHH +|08/01/2022 04:33:38| |MATING PRESS ANZU| +|08/01/2022 04:33:40| |>school won't shut down....... yeah about that| +|08/01/2022 04:33:42| fwip +|08/01/2022 04:33:43| |>anzu will never hug you like that Why even live?| +|08/01/2022 04:33:43| |GOD I WISH| +|08/01/2022 04:33:44| |CORRECT THE RECORD| +|08/01/2022 04:33:45| |i just want to sex anzu| +|08/01/2022 04:33:45| DELET +|08/01/2022 04:33:48| |Anu coping a feel of Miho's big futa cock| +|08/01/2022 04:33:48| |BASED SODOKO| +|08/01/2022 04:33:49| CORRUPTION +|08/01/2022 04:33:50| |AWAKEN MY MEXT CHADS| +|08/01/2022 04:33:50| SODOKO +|08/01/2022 04:33:51| DELETED +|08/01/2022 04:33:51| CORRUPTION +|08/01/2022 04:33:51| |I WANT TO BE HUGGED BY ANZU| +|08/01/2022 04:33:51| |that's against the rules sodoko| +|08/01/2022 04:33:51| DELETED +|08/01/2022 04:33:53| |yeeeesssss lesss gooo sodoko| +|08/01/2022 04:33:53| |incoming karina-bomb| +|08/01/2022 04:33:54| Cute +|08/01/2022 04:33:54| |CUTE MANKO| +|08/01/2022 04:33:54| |CLEAN SLATE| +|08/01/2022 04:33:55| |MAKO X SODOKO| +|08/01/2022 04:33:55| |CORRUPTION 100%| +|08/01/2022 04:33:55| UOOOOOOOOH +|08/01/2022 04:33:55| |Jewish lies| +|08/01/2022 04:33:55| DELETED +|08/01/2022 04:33:56| |FUN IS BACK ON THE MENU BOYSS| +|08/01/2022 04:33:56| |>251 late arrivals| +|08/01/2022 04:33:57| おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお +|08/01/2022 04:33:57| SODOKO +|08/01/2022 04:33:58| CORRUPTION +|08/01/2022 04:33:58| |>tablet attached to a clipboard| +|08/01/2022 04:33:58| |RECORD STATUS: CORRECTED| +|08/01/2022 04:33:58| |ENTER MEXT CHAD!| +|08/01/2022 04:33:59| |SODOKO A CUTE| +|08/01/2022 04:33:59| SODOKOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:33:59| OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:33:59| |It's time for the Sayori boyfriends| +|08/01/2022 04:34:00| |tangible autism| +|08/01/2022 04:34:00| UUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOHHHH +|08/01/2022 04:34:00| HAGGU +|08/01/2022 04:34:00| :o: +|08/01/2022 04:34:00| |SODOKO | +|08/01/2022 04:34:00| CUTE +|08/01/2022 04:34:01| |The Party controls the past| +|08/01/2022 04:34:01| :) +|08/01/2022 04:34:01| ARIGATO +|08/01/2022 04:34:02| |based sodoko| +|08/01/2022 04:34:03| |SODOMY FOR SODOKO| +|08/01/2022 04:34:03| SOGKODKOGDKODKOKO +|08/01/2022 04:34:04| CORRUPTION +|08/01/2022 04:34:05| |I want to hug Sodoko| +|08/01/2022 04:34:05| |MakoxSadoko confirmed| +|08/01/2022 04:34:05| |ALL NIGHT MAKO SODOKO SEX| +|08/01/2022 04:34:08| |ALPHA WAVES| +|08/01/2022 04:34:08| UUUOOOHHH +|08/01/2022 04:34:08| |>gaymer shake| +|08/01/2022 04:34:09| ganbatte +|08/01/2022 04:34:12| SODOMYKO +|08/01/2022 04:34:12| AZUSA +|08/01/2022 04:34:12| |EI EI O| +|08/01/2022 04:34:13| |>corruption MEXT GUY WAS RIGHT ALL ALONG| +|08/01/2022 04:34:17| |SODOKO WONT LET HER GET HUGGED| +|08/01/2022 04:34:17| |SDOMIZE SADOKO| +|08/01/2022 04:34:17| |AH shit i actually teared up| +|08/01/2022 04:34:18| |HOSHINO CHAD WYA| +|08/01/2022 04:34:19| |EI EI OOOOH| +|08/01/2022 04:34:20| |A A O| +|08/01/2022 04:34:20| |A A O| +|08/01/2022 04:34:20| |EI EI OU| +|08/01/2022 04:34:21| |A A O| +|08/01/2022 04:34:22| |thats it| +|08/01/2022 04:34:23| |A A O| +|08/01/2022 04:34:23| ;_; +|08/01/2022 04:34:24| \o/ +|08/01/2022 04:34:24| AAO +|08/01/2022 04:34:26| |LEOPON MVP| +|08/01/2022 04:34:27| |EI, EI, OOOOO| +|08/01/2022 04:34:27| |/a/ /a/ /o/| +|08/01/2022 04:34:28| Onee-chan! +|08/01/2022 04:34:29| |HAHA YOU FUCKING BITCH YOU LOST| +|08/01/2022 04:34:29| oneechan +|08/01/2022 04:34:29| |momo-chan babu| +|08/01/2022 04:34:32| MAHO +|08/01/2022 04:34:34| MAHO +|08/01/2022 04:34:35| |Maho is so sexy| +|08/01/2022 04:34:35| kino +|08/01/2022 04:34:35| shortie +|08/01/2022 04:34:35| |Cute Maho| +|08/01/2022 04:34:36| |I love my wife Maho!| +|08/01/2022 04:34:36| |They saved the school right?| +|08/01/2022 04:34:37| /u//u//u/ +|08/01/2022 04:34:37| |you're dead to me miho| +|08/01/2022 04:34:38| |/a/ /a/ /o/!| +|08/01/2022 04:34:38| |SEXIEST GUPPIE| +|08/01/2022 04:34:38| omedetou +|08/01/2022 04:34:39| ERRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRIKA +|08/01/2022 04:34:40| MAAHOoo~ +|08/01/2022 04:34:41| |/a/ /a/ /o/!| +|08/01/2022 04:34:41| |CUTE ONEESAN| +|08/01/2022 04:34:41| KANPAI +|08/01/2022 04:34:42| KANPAI +|08/01/2022 04:34:43| KANPAI +|08/01/2022 04:34:43| Maho +|08/01/2022 04:34:44| KINO +|08/01/2022 04:34:45| o7 +|08/01/2022 04:34:45| |who has bigger tits| +|08/01/2022 04:34:45| Maho....... +|08/01/2022 04:34:46| :) +|08/01/2022 04:34:46| |LOVE MAHO COOLEST GUPPIE| +|08/01/2022 04:34:47| KANPAI +|08/01/2022 04:34:47| |maho > miho| +|08/01/2022 04:34:47| |So sweet! ;_;| +|08/01/2022 04:34:47| |CUM PIE| +|08/01/2022 04:34:49| |Sunset kino| +|08/01/2022 04:34:49| |HANDSHAKE BOYS WE WON| +|08/01/2022 04:34:49| LEWD +|08/01/2022 04:34:50| INCEST +|08/01/2022 04:34:50| WEW +|08/01/2022 04:34:51| MAHO +|08/01/2022 04:34:52| |we made it mihobros...| +|08/01/2022 04:34:52| |I NEED cock maho| +|08/01/2022 04:34:53| KANPAI +|08/01/2022 04:34:53| WINCEST +|08/01/2022 04:34:54| ;_______; +|08/01/2022 04:34:54| |ALL SMILES :)| +|08/01/2022 04:34:55| |maho is a breast demon| +|08/01/2022 04:34:55| |alls well that ends well right| +|08/01/2022 04:34:55| ;_;7 +|08/01/2022 04:34:56| |after this maho vigriously flicked the bean to miho's old panties| +|08/01/2022 04:34:56| KINO +|08/01/2022 04:34:58| |MAHO WILL BE HIT BY HER MOTHER| +|08/01/2022 04:34:58| |CAN I GET RID OF MY CARBON COATED GIANT SHIT LOG HOGGING MY BUTTHOLE NOW| +|08/01/2022 04:34:58| KINO +|08/01/2022 04:34:59| |Maho is bigger| +|08/01/2022 04:34:59| |maho pee| +|08/01/2022 04:34:59| |Sisterly love| +|08/01/2022 04:34:59| o7 +|08/01/2022 04:34:59| KINO +|08/01/2022 04:35:00| Erikabros... +|08/01/2022 04:35:00| |The Itachi of the Nishizumi...| +|08/01/2022 04:35:02| KINO +|08/01/2022 04:35:02| yes +|08/01/2022 04:35:04| |but they both have cock| +|08/01/2022 04:35:04| |Then they had sex| +|08/01/2022 04:35:05| |FUTAxFUTA BATTLE| +|08/01/2022 04:35:07| |God I love this series....| +|08/01/2022 04:35:10| KNOOO +|08/01/2022 04:35:10| |MOTTO SENSHADO!| +|08/01/2022 04:35:12| |my own panzerfahren| +|08/01/2022 04:35:13| |The real friends were the sisters who loved us along the way| +|08/01/2022 04:35:13| KINO +|08/01/2022 04:35:13| CUTE +|08/01/2022 04:35:15| |after this maho was sent to the concentration camps| +|08/01/2022 04:35:18| |SEX SEX SEX| +|08/01/2022 04:35:19| KINO +|08/01/2022 04:35:20| |lol yeah right scrub| +|08/01/2022 04:35:20| |My Own Senshado (tm)| +|08/01/2022 04:35:20| |WATASHI NO SENSHADO| +|08/01/2022 04:35:20| cope +|08/01/2022 04:35:21| |CUTE WANI| +|08/01/2022 04:35:22| |COPE SEETHE AND DILATE ERIKA| +|08/01/2022 04:35:22| :) +|08/01/2022 04:35:22| |10/10 ign| +|08/01/2022 04:35:23| SOUL +|08/01/2022 04:35:23| |What's her senshado though| +|08/01/2022 04:35:23| >Erika +|08/01/2022 04:35:24| |experiencing the grinning like a retard effect| +|08/01/2022 04:35:24| |SHUT UP ERIKA| +|08/01/2022 04:35:24| OST +|08/01/2022 04:35:25| |DUMB WANI| +|08/01/2022 04:35:25| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:35:26| :') +|08/01/2022 04:35:26| OMEDETOU +|08/01/2022 04:35:26| |WAVE YOUR FLAAAAAAAG| +|08/01/2022 04:35:26| |CUTE ERIKA| +|08/01/2022 04:35:26| |>loses next time| +|08/01/2022 04:35:28| |>I found my own Girls und Panzer| +|08/01/2022 04:35:28| WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:35:28| |WANI COPE| +|08/01/2022 04:35:29| BANZAI +|08/01/2022 04:35:29| KINOOOOOOO +|08/01/2022 04:35:29| |>next time| +|08/01/2022 04:35:30| |hana has perfect legs| +|08/01/2022 04:35:30| TENNO +|08/01/2022 04:35:31| BANZAIIIIII +|08/01/2022 04:35:31| |STUGBROS WE WON| +|08/01/2022 04:35:32| KINO +|08/01/2022 04:35:33| BANZAI +|08/01/2022 04:35:33| |RAISE YOUR FLAG| +|08/01/2022 04:35:33| 88888888888888888888888888888888888888888888888888888888 +|08/01/2022 04:35:33| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:35:35| OMEDETOU +|08/01/2022 04:35:36| |Ribbon Warrior read along next| +|08/01/2022 04:35:36| OMEDETO +|08/01/2022 04:35:38| |THANK YOU GUPPERS FROM SAVING ME FROM SUICIDE| +|08/01/2022 04:35:38| HARASHOOOOOO +|08/01/2022 04:35:38| omedetou +|08/01/2022 04:35:39| SPQR +|08/01/2022 04:35:39| [clap] +|08/01/2022 04:35:39| omedetou +|08/01/2022 04:35:40| omedetou +|08/01/2022 04:35:40| HARASHO +|08/01/2022 04:35:40| |CONGRATULATION 88888888888888888888888| +|08/01/2022 04:35:40| Omedetou +|08/01/2022 04:35:41| CONGRATULATIONS +|08/01/2022 04:35:41| congraturations +|08/01/2022 04:35:41| 88888888888888888888888888888888888888 +|08/01/2022 04:35:41| |I've done it, I've truly become Girls und Panzer| +|08/01/2022 04:35:41| |ERIKA STOLE MIHO'S SENSHADOU| +|08/01/2022 04:35:42| CONGRATULATIONS +|08/01/2022 04:35:42| CONGRATULATIONS +|08/01/2022 04:35:42| OMEDETOU +|08/01/2022 04:35:42| OJOUUUUUUUU +|08/01/2022 04:35:43| |HORROR SHOW| +|08/01/2022 04:35:43| 8888888888888888 +|08/01/2022 04:35:44| |end of gup| +|08/01/2022 04:35:45| Ducebros........ +|08/01/2022 04:35:45| volleybutts +|08/01/2022 04:35:46| SUMIPE +|08/01/2022 04:35:46| BANZAI +|08/01/2022 04:35:46| OMEDETOU +|08/01/2022 04:35:46| 88888888888888888888888888888888888888888888888888888 +|08/01/2022 04:35:46| |**CLAP* CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* | +|08/01/2022 04:35:47| CONGRATURATION +|08/01/2022 04:35:47| OMEDETOU +|08/01/2022 04:35:47| CONGURADURATIONS +|08/01/2022 04:35:47| 888888888888888888888888888 +|08/01/2022 04:35:47| CONGRATS +|08/01/2022 04:35:48| OJOOOOOOOOOOOOOOOUUUUUUUUUUU +|08/01/2022 04:35:48| KHOROSHO +|08/01/2022 04:35:48| |they did it| +|08/01/2022 04:35:48| |8 8 8| +|08/01/2022 04:35:48| |WAY TO Go| +|08/01/2022 04:35:49| M'LADY +|08/01/2022 04:35:49| 8888888888888888888888888888888888888888 +|08/01/2022 04:35:49| 888888888888888 +|08/01/2022 04:35:49| CONGRATULATIONS +|08/01/2022 04:35:49| omedateou +|08/01/2022 04:35:50| |SHIHO A SHIT| +|08/01/2022 04:35:50| *CLAP* +|08/01/2022 04:35:52| OMEDETOU +|08/01/2022 04:35:53| DVCE... +|08/01/2022 04:35:53| OMEDETOU +|08/01/2022 04:35:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:35:54| |we truly are, girls und panzer| +|08/01/2022 04:35:54| |DEATH TO MERCEDES, DEATH TO FIAMG| +|08/01/2022 04:35:54| |OMEDETAI NA| +|08/01/2022 04:35:55| 88888888 +|08/01/2022 04:35:55| |ANGRY MOM| +|08/01/2022 04:35:55| DVCE +|08/01/2022 04:35:55| |I stood up and clapped| +|08/01/2022 04:35:55| |FUCK SHIHO DUMB BITCH| +|08/01/2022 04:35:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:35:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:35:57| 88888888888888888 +|08/01/2022 04:35:57| |thanks mom| +|08/01/2022 04:35:57| |NOT BAD, GUPPERS| +|08/01/2022 04:35:57| MOM +|08/01/2022 04:35:57| |8 8 8| +|08/01/2022 04:35:57| |NAKADASHI SHIO| +|08/01/2022 04:35:57| CLAPPU +|08/01/2022 04:35:57| MOMMY +|08/01/2022 04:35:57| |8 8 8 8| +|08/01/2022 04:35:57| |8 8 8 8 8| +|08/01/2022 04:35:58| undisowned +|08/01/2022 04:35:58| |TORPEDO TITTIES| +|08/01/2022 04:35:59| |Maybe the real senshadou was the friends we made along the way| +|08/01/2022 04:35:59| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 04:35:59| 88888888 +|08/01/2022 04:35:59| |oh boy cant wait for 4 more hours of movies| +|08/01/2022 04:35:59| |The anime that saved /a/| +|08/01/2022 04:35:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:00| |Evangelion reference?| +|08/01/2022 04:36:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:00| DUCE +|08/01/2022 04:36:00| DUCE +|08/01/2022 04:36:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:01| seething +|08/01/2022 04:36:01| DUCE +|08/01/2022 04:36:02| *clap* +|08/01/2022 04:36:02| DVCE +|08/01/2022 04:36:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:02| DVCE +|08/01/2022 04:36:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:02| DUCE +|08/01/2022 04:36:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:03| |all those burning bridges that have fallen after meee| +|08/01/2022 04:36:03| |Bravo DVCE| +|08/01/2022 04:36:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:03| D-DUCE +|08/01/2022 04:36:03| DVCE +|08/01/2022 04:36:04| ENTER +|08/01/2022 04:36:04| |DUCE DUCE DUCE| +|08/01/2022 04:36:04| DVCE +|08/01/2022 04:36:04| |haha italians| +|08/01/2022 04:36:04| |DUCE who?| +|08/01/2022 04:36:05| DVCE +|08/01/2022 04:36:05| |DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:05| DUCE +|08/01/2022 04:36:05| |DVCE BAKA| +|08/01/2022 04:36:05| DUCE +|08/01/2022 04:36:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:06| |ENTER ENETER| +|08/01/2022 04:36:06| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 04:36:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:06| |ENTER ENTER MISSION| +|08/01/2022 04:36:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:06| >OVER +|08/01/2022 04:36:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:07| DVCEBROS... +|08/01/2022 04:36:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:07| |dumb italians| +|08/01/2022 04:36:07| ENTER +|08/01/2022 04:36:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:07| UCE +|08/01/2022 04:36:08| |ENTER ENTER MISSION| +|08/01/2022 04:36:08| DUMBASS +|08/01/2022 04:36:08| LATECE +|08/01/2022 04:36:09| |ENTER ENTER| +|08/01/2022 04:36:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:09| |IT WAS ALL A DREAM| +|08/01/2022 04:36:09| kek +|08/01/2022 04:36:10| |ENTAH ENTAH MISSION| +|08/01/2022 04:36:10| KEK +|08/01/2022 04:36:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:10| |ENTER ENTER MISSION| +|08/01/2022 04:36:11| Ducebros.... +|08/01/2022 04:36:11| |ENTA ENTA MISSION| +|08/01/2022 04:36:11| |ENTAAAAAAAAAAAAAAAAAAAAAAAAAH ENTAHHHHHHHH MISHION| +|08/01/2022 04:36:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:11| |DORK DVCE| +|08/01/2022 04:36:12| |ENTAH ENTAH MISSION| +|08/01/2022 04:36:12| DVCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 04:36:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:12| DUCE +|08/01/2022 04:36:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:13| | DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE D| +|08/01/2022 04:36:14| BAITED +|08/01/2022 04:36:15| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 04:36:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 04:36:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:16| |ENTAH ENTAH| +|08/01/2022 04:36:16| |PANZER VOR| +|08/01/2022 04:36:16| |ENTA ENTA MISSION| +|08/01/2022 04:36:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:17| |your DVCEs are late| +|08/01/2022 04:36:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:17| |ENTAH ENTAH MISSION| +|08/01/2022 04:36:17| eeeeeeeeeeentah +|08/01/2022 04:36:19| |PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:36:19| |8 8 8 8 8| +|08/01/2022 04:36:19| |say something, bitch| +|08/01/2022 04:36:20| DVUCE +|08/01/2022 04:36:21| AUTISM +|08/01/2022 04:36:22| |Dumb Dvce| +|08/01/2022 04:36:22| |PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:36:22| |PANZER VOR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:36:22| |PANZER VOR| +|08/01/2022 04:36:24| |PANZER VOR| +|08/01/2022 04:36:24| |PANZER VOR| +|08/01/2022 04:36:24| |Mission has been Entered| +|08/01/2022 04:36:24| |PANZER VOR!| +|08/01/2022 04:36:24| |PANZER VOR| +|08/01/2022 04:36:24| |Holy shit that chick is tall | +|08/01/2022 04:36:24| |PANZER VORRR| +|08/01/2022 04:36:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:25| |PANZER VOR| +|08/01/2022 04:36:25| |PANZER VOR| +|08/01/2022 04:36:25| |PANZER VOR| +|08/01/2022 04:36:26| |PANZER VOR| +|08/01/2022 04:36:26| |PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +|08/01/2022 04:36:26| |PANZER VORE| +|08/01/2022 04:36:26| |PANZER VOR| +|08/01/2022 04:36:26| |DVCE DVCE DVCE| +|08/01/2022 04:36:26| |PANZA VOR| +|08/01/2022 04:36:27| |PANZER VOR| +|08/01/2022 04:36:27| |FOR WHAT| +|08/01/2022 04:36:27| |GOOD THING SCHOOL WONT CLOSE AND WE DON'T NEED A MOVIE| +|08/01/2022 04:36:27| |PANZER VOR| +|08/01/2022 04:36:27| |PANTSU FOR| +|08/01/2022 04:36:27| |PANTSAR FOR| +|08/01/2022 04:36:27| |PANZER VOR| +|08/01/2022 04:36:27| |Look at that dork| +|08/01/2022 04:36:28| |PANZER VOR| +|08/01/2022 04:36:28| |PANZER VOR!| +|08/01/2022 04:36:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:28| |PANTS ARE FOR!| +|08/01/2022 04:36:28| |Happy ending right?| +|08/01/2022 04:36:28| |dork face| +|08/01/2022 04:36:29| |PANZER VOR| +|08/01/2022 04:36:29| |panzer vor!| +|08/01/2022 04:36:29| |PANZER VOR| +|08/01/2022 04:36:29| |PANZER VOR| +|08/01/2022 04:36:29| |all those burning bridges that have fallen after meee| +|08/01/2022 04:36:30| |PANSA VOA| +|08/01/2022 04:36:30| |panzer VORE| +|08/01/2022 04:36:31| |PANZER VOR| +|08/01/2022 04:36:31| OOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:36:31| |ENTER MISSION~~~~~~~~~~| +|08/01/2022 04:36:32| |ENTA ENTA MISSION| +|08/01/2022 04:36:32| |PANZER VOR| +|08/01/2022 04:36:32| |PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +|08/01/2022 04:36:32| |TAEKO LOVE| +|08/01/2022 04:36:33| dorks +|08/01/2022 04:36:33| |PANZER VOOOOORRRR| +|08/01/2022 04:36:34| |PANZER VOR| +|08/01/2022 04:36:34| |>we never experienced the ED| +|08/01/2022 04:36:34| KINO +|08/01/2022 04:36:35| |PANZER VOR| +|08/01/2022 04:36:35| |PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:36:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 04:36:36| |Panther vore| +|08/01/2022 04:36:36| |VICTORY PARADE| +|08/01/2022 04:36:37| |SHOURI, MINNA!| +|08/01/2022 04:36:38| |PANZER VOR| +|08/01/2022 04:36:38| |ENTAH ENTAH MISSION HAYAKU| +|08/01/2022 04:36:38| |PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +|08/01/2022 04:36:39| |ROLL CREDITS| +|08/01/2022 04:36:39| |SHE SAID THE THING| +|08/01/2022 04:36:40| |PANZER VOR| +|08/01/2022 04:36:41| |play the song lesss goooo| +|08/01/2022 04:36:41| |bunch of fucking nerds| +|08/01/2022 04:36:44| |Mission status: Entered| +|08/01/2022 04:36:45| |I H AVE BEEN WAITING ALL NIGHT FOR THIS | +|08/01/2022 04:36:46| |FUCKING KINOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 04:36:46| |IM GOING TO CUM| +|08/01/2022 04:36:47| |>tanks are suddenly good to go| +|08/01/2022 04:36:47| |NOT LIKE THIS| +|08/01/2022 04:36:47| KINOOOO +|08/01/2022 04:36:48| o7 +|08/01/2022 04:36:49| |TIME FOR A FUCKING INTER INTER MISSION| +|08/01/2022 04:36:49| buffering +|08/01/2022 04:36:51| |ENTAAH ENTAAH MIHO| +|08/01/2022 04:36:51| kino +|08/01/2022 04:36:51| |Nothing wrong will happen next right?| +|08/01/2022 04:36:52| TAEKO +|08/01/2022 04:36:52| |finally, the first episode is over| +|08/01/2022 04:36:52| HAPPY +|08/01/2022 04:36:52| |So what is left, besides the Das Finales?| +|08/01/2022 04:36:55| HAPPY +|08/01/2022 04:36:56| o/ +|08/01/2022 04:36:57| |Mission Completed | +|08/01/2022 04:36:57| HAPPI +|08/01/2022 04:36:58| ;_; +|08/01/2022 04:36:58| |im not gonna make it bros im wasted af already| +|08/01/2022 04:36:59| |BRAVO NOLAN| +|08/01/2022 04:36:59| NORIKO<3 +|08/01/2022 04:36:59| |jamin jamin jamin| +|08/01/2022 04:37:00| |BOTH EYES OPEN| +|08/01/2022 04:37:00| |SUICIDE STATUS: AVERTED| +|08/01/2022 04:37:02| |MISSION COMPLETE| +|08/01/2022 04:37:02| |I LOVE BLASTING THIS SHIT WOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 04:37:02| |I JOE YOU JOE| +|08/01/2022 04:37:04| |>tfw joined late at the pravada match| +|08/01/2022 04:37:04| |dude we got like 4 films| +|08/01/2022 04:37:07| |JUST GET MORE WASTED| +|08/01/2022 04:37:07| |The film anon, the film| +|08/01/2022 04:37:07| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:09| |ENTER ENTER MISSION| +|08/01/2022 04:37:09| |ENTER ENTER MISSION | +|08/01/2022 04:37:09| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:09| |ENTER ENTER| +|08/01/2022 04:37:10| ENTAA +|08/01/2022 04:37:10| |Mission entered| +|08/01/2022 04:37:10| |NOOOOOOOOOOOOOOOOOOOO BUFFERING| +|08/01/2022 04:37:10| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:10| |ENTA ENTA MISSION| +|08/01/2022 04:37:11| |ENTAA ENTAAA| +|08/01/2022 04:37:12| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:13| HAYAKU +|08/01/2022 04:37:14| |we are more than half way i think| +|08/01/2022 04:37:14| |THE WASTED GOES AROUND| +|08/01/2022 04:37:15| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:15| MISSSION +|08/01/2022 04:37:15| |ENTER ENTER MISSION| +|08/01/2022 04:37:16| |ENTER BUFFER| +|08/01/2022 04:37:16| |ENTA ENTA MISSIOn| +|08/01/2022 04:37:17| |NO ONE MOVES, IT's PENIS INSPECTION INTERMISSION| +|08/01/2022 04:37:17| ENTER +|08/01/2022 04:37:18| ISSHOUKENMEI +|08/01/2022 04:37:18| |ENTER ENTER MISSION| +|08/01/2022 04:37:18| |ENTAH ENTAH MISHUN| +|08/01/2022 04:37:18| |MI SHION| +|08/01/2022 04:37:19| |ENTAH ENTAH MIHO| +|08/01/2022 04:37:19| |ENTAH ENTA MISSION| +|08/01/2022 04:37:19| |ENTA ENTA MISSIHO| +|08/01/2022 04:37:20| OIKAKEYOUNE +|08/01/2022 04:37:22| |Der Film, 3 Das Finales| +|08/01/2022 04:37:22| |WHY NOW GALAX ANON| +|08/01/2022 04:37:22| |ENTER ENTER MISSIOOOOOOOOOOOOOOOOONNN| +|08/01/2022 04:37:24| |ENTER ENTER MISSSION| +|08/01/2022 04:37:25| |ENTA ENTA MISSHION| +|08/01/2022 04:37:25| |ENTER ENTER| +|08/01/2022 04:37:25| |BUFFER BUFFER MISSION| +|08/01/2022 04:37:25| HAYAKU +|08/01/2022 04:37:26| |ENTER ENTER MISSION| +|08/01/2022 04:37:27| |ENTAH ENTAH| +|08/01/2022 04:37:27| |BUFFERING HERE CMOONNNNNN| +|08/01/2022 04:37:27| |ENTA ENTA MISSHION| +|08/01/2022 04:37:28| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:28| |SHIKARA IPPAI| +|08/01/2022 04:37:28| |ENTER ENTER BUFFER| +|08/01/2022 04:37:28| |>stream lags for the chorus | +|08/01/2022 04:37:30| |ENTAA MISSION| +|08/01/2022 04:37:33| |>tfw buffering| +|08/01/2022 04:37:34| BUFFER +|08/01/2022 04:37:34| |Bro we aren't even half way and your fucked| +|08/01/2022 04:37:34| |ENTER ENTER MISSION| +|08/01/2022 04:37:35| |BUFFER BUFFER MISSION| +|08/01/2022 04:37:36| |ENTER ENTER MISSION| +|08/01/2022 04:37:36| |GET IT GRANDMA| +|08/01/2022 04:37:36| |ENTER ENTER MISSION| +|08/01/2022 04:37:37| |entah entah misssion| +|08/01/2022 04:37:37| |Cute Granny| +|08/01/2022 04:37:37| |CUTE FLOOF| +|08/01/2022 04:37:38| o7 +|08/01/2022 04:37:38| man +|08/01/2022 04:37:38| www +|08/01/2022 04:37:38| |ENTAA ENTAA MISSHON| +|08/01/2022 04:37:41| |ENTER ENTER BUFFERING| +|08/01/2022 04:37:41| |i hope duce gets a malboro sponsorship next season| +|08/01/2022 04:37:42| |based granny| +|08/01/2022 04:37:43| |ENTER ENTER MISSION!| +|08/01/2022 04:37:43| BAFFUA +|08/01/2022 04:37:44| |CUTE DANCE| +|08/01/2022 04:37:44| WTF +|08/01/2022 04:37:44| |ENTER ENTER BUFFER| +|08/01/2022 04:37:44| |Das Film should be next no?| +|08/01/2022 04:37:44| Bufferoni +|08/01/2022 04:37:45| |YOU HAD ONE JOB| +|08/01/2022 04:37:45| |DROP THE VIDEO | +|08/01/2022 04:37:45| GRAMA +|08/01/2022 04:37:46| |enter buffer| +|08/01/2022 04:37:47| |YAAAAAA GRANDMA| +|08/01/2022 04:37:47| |>always buffering during iconic moments| +|08/01/2022 04:37:48| MIRAIIIIIIII +|08/01/2022 04:37:48| |grandma got tha swagger still| +|08/01/2022 04:37:48| |YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW | +|08/01/2022 04:37:52| REWIND +|08/01/2022 04:37:52| bufferoni +|08/01/2022 04:37:52| |MOTTO SENSHADO!| +|08/01/2022 04:37:53| |bath scene| +|08/01/2022 04:37:53| |Saoris old men lol| +|08/01/2022 04:37:56| |Still got a quartur of rum left, lets make it a blast| +|08/01/2022 04:37:57| | \o/ \o/ \o/ \o/ \o/| +|08/01/2022 04:37:57| |PANZER VOR| +|08/01/2022 04:37:59| |AND THEN THEY LIVED HAPPILY EVER AFTER| +|08/01/2022 04:38:01| |whats next?| +|08/01/2022 04:38:03| \o/ +|08/01/2022 04:38:03| |bath time| +|08/01/2022 04:38:04| |in universe old men jack off to shenshado on tv| +|08/01/2022 04:38:05| \o/ +|08/01/2022 04:38:05| |Why don't we fuck Fluff's brains out?| +|08/01/2022 04:38:06| |OVA next| +|08/01/2022 04:38:06| |the movie?| +|08/01/2022 04:38:07| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/| +|08/01/2022 04:38:08| |IT'S TIME| +|08/01/2022 04:38:08| |>saori attracts old men| +|08/01/2022 04:38:08| |WIN OR LOSE WE BOOZE| +|08/01/2022 04:38:09| |Der Film is next| +|08/01/2022 04:38:10| o/ +|08/01/2022 04:38:11| |The end| +|08/01/2022 04:38:13| |it's over| +|08/01/2022 04:38:15| KINO +|08/01/2022 04:38:15| |ENTER DER FILM| +|08/01/2022 04:38:16| |S1 OVER| +|08/01/2022 04:38:16| |THANK GOD THERE ARE NO MORE CONFLICTS AFTER THIS| +|08/01/2022 04:38:17| |IT'S OVER| +|08/01/2022 04:38:18| |inb4 no masturbation break| +|08/01/2022 04:38:18| |The ship is saved| +|08/01/2022 04:38:18| |INTERMISSION BROS| +|08/01/2022 04:38:20| |INTERMISSION TIME| +|08/01/2022 04:38:20| |TRULY WE WERE THE| +|08/01/2022 04:38:21| |OVA NEXT| +|08/01/2022 04:38:21| |PISS BREAK| +|08/01/2022 04:38:22| owari +|08/01/2022 04:38:23| |REFILL NOW| +|08/01/2022 04:38:23| |And then the ship sunk| +|08/01/2022 04:38:23| |I CAN'T BELIEVE GUP IS FUCKING OVER| +|08/01/2022 04:38:24| |THE SCHOOL REMAINS OPEN THE END| +|08/01/2022 04:38:24| |will the das finale 3 on? or till 2| +|08/01/2022 04:38:25| |And that's all the guppie content we ever got| +|08/01/2022 04:38:25| |I NEED INTERMISSION| +|08/01/2022 04:38:26| |OVA before movie retards| +|08/01/2022 04:38:26| |TIME FOR MY BEAUTIFUL BAKA WIFE TO SHOW UP| +|08/01/2022 04:38:26| |piss break!| +|08/01/2022 04:38:27| |S2 now| +|08/01/2022 04:38:28| |its over for mext guy| +|08/01/2022 04:38:28| |how much cum can you fit in the fuel tank of a tiger 2?| +|08/01/2022 04:38:29| |IS THIS A PISS BREAK?| +|08/01/2022 04:38:29| |how long is intermission?| +|08/01/2022 04:38:29| |REFILS REFILLS REFILLS| +|08/01/2022 04:38:29| |bros I'm so tired I don't know if I can manage the film too| +|08/01/2022 04:38:30| |Where's Banquet War?| +|08/01/2022 04:38:31| |Its been so long i can finally piss| +|08/01/2022 04:38:31| |Have a sweel interMISSION, everyone| +|08/01/2022 04:38:32| |ENTAAA ENTAAA INTERMISSON| +|08/01/2022 04:38:32| |TIME TO GET RID OF MY CARBON COATED MASSIVE SHIT LOG| +|08/01/2022 04:38:32| robert?? +|08/01/2022 04:38:32| |anyone who leaves to piss will be shot| +|08/01/2022 04:38:32| |EMPTY YOUR PISS BOTTLES| +|08/01/2022 04:38:33| |Piss bucket emptying break| +|08/01/2022 04:38:33| |momo get ur grades together u bitch| +|08/01/2022 04:38:34| |Awesome that no one tries to close their school| +|08/01/2022 04:38:34| |GATA GOTTO CHU CHU| +|08/01/2022 04:38:35| |see you when the first movie airs| +|08/01/2022 04:38:37| |INTER INTER MISSION| +|08/01/2022 04:38:39| |INTER INTER MISSION| +|08/01/2022 04:38:40| >Intermission +|08/01/2022 04:38:42| tinermissson +|08/01/2022 04:38:44| |WILL ORARI WIN THE NEXT BATTLE FOUND OUT NEXT TIME ON DRAGON BALL Z| +|08/01/2022 04:38:44| |SMOKE EM IF YOU GOT EM| +|08/01/2022 04:38:45| |THANKS GALAX| +|08/01/2022 04:38:46| |how long is intermission?????| +|08/01/2022 04:38:46| intermission +|08/01/2022 04:38:47| |Are you guys pussies| +|08/01/2022 04:38:48| |Time to empty the poop bottle| +|08/01/2022 04:38:49| |5 minute sleep lets go| +|08/01/2022 04:38:52| |FEGELEIN | +|08/01/2022 04:38:54| |how long is the intermission| +|08/01/2022 04:38:54| |Can't believe I'm still here at 4:30 AM| +|08/01/2022 04:38:54| |time to PISS| +|08/01/2022 04:38:56| |need more panzer chocolate| +|08/01/2022 04:38:58| |Just got my drinks out, at least entertain me for the duration of this intermission fuckers| +|08/01/2022 04:39:00| |5 mins slepp? SUSSY| +|08/01/2022 04:39:00| |HOW LONG HOW LONG HOW LONG HOW LONG HOW LONG| +|08/01/2022 04:39:04| |>NO INTERMISSION SONG| +|08/01/2022 04:39:04| |How short it short?| +|08/01/2022 04:39:04| |INTER INTERMISSION| +|08/01/2022 04:39:05| |Piss break| +|08/01/2022 04:39:05| |PISS TIME | +|08/01/2022 04:39:11| |2 YEARS| +|08/01/2022 04:39:12| |Kono bangumi wa goran no suponsaa no teikyou de okurishimasu!| +|08/01/2022 04:39:12| |robert pls| +|08/01/2022 04:39:13| |10 mins| +|08/01/2022 04:39:14| t-thanks +|08/01/2022 04:39:16| |sex with nona| +|08/01/2022 04:39:17| |thank you editor-san| +|08/01/2022 04:39:17| |10 minutes to take a shit lets goooooooooooooo| +|08/01/2022 04:39:22| |WHERE INTERMISSION SONGGGGGGG????????????????????????????| +|08/01/2022 04:39:23| |Steiner's forces will relieve Maho in the courtyard duel... then we can save Berlin| +|08/01/2022 04:39:28| |TIME TO PISS NONSTOP FOR 10 MINUTES| +|08/01/2022 04:39:29| |Time to time of Katyusha while pissing| +|08/01/2022 04:39:29| |Can't believe Renta Tsuji still hasn't fucked Anzu| +|08/01/2022 04:39:29| |KINO EDITION| +|08/01/2022 04:39:31| |I NEED TO CUM UOOOOOHHHHHHHHHH| +|08/01/2022 04:39:31| |inter mission music NOW!| +|08/01/2022 04:39:31| |TFW have to do shit from 3:00 to 4:00| +|08/01/2022 04:39:35| RUDE +|08/01/2022 04:39:35| |10 mins isnt enough to take shitSTOP BEING SUSSY| +|08/01/2022 04:39:37| |THIS ISNT ENOUGH FOR MY MASSIVE CARBON COATED SHIT LOG| +|08/01/2022 04:39:37| |who you calling a baka| +|08/01/2022 04:39:38| |dont leave me bros| +|08/01/2022 04:39:42| |post what you've been drinking tonight guys| +|08/01/2022 04:39:43| |PLAY PANZERLIED FOR 10 MINS| +|08/01/2022 04:39:48| water +|08/01/2022 04:39:52| |SPRITE ALL DAY LONG| +|08/01/2022 04:39:53| wasser +|08/01/2022 04:39:54| |27k worthless danmakus| +|08/01/2022 04:39:56| |I'm gonna sleep, thanks for the company St. Glorianachads| +|08/01/2022 04:39:57| |TL Note: Water means mizu| +|08/01/2022 04:39:59| |10 BAKA MINUTES| +|08/01/2022 04:40:04| |grapefuit juice, I'm saving myself for the wotos| +|08/01/2022 04:40:13| |10 minutes won't be enough to piss out what I drank| +|08/01/2022 04:40:14| |never watched wotos | +|08/01/2022 04:40:15| |SONG DOKO?| +|08/01/2022 04:40:17| |DRINK SEITOKAI ONSEN WATER AAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 04:40:17| |I have "honey" aclohol but it's not good| +|08/01/2022 04:40:23| |is the woto show good?| +|08/01/2022 04:40:29| |Does it matters?| +|08/01/2022 04:40:29| |FAP BREAK, TIME FOR MAHO DOUJINS| +|08/01/2022 04:40:31| |shimada mika doko| +|08/01/2022 04:40:32| yes +|08/01/2022 04:40:37| |ok good| +|08/01/2022 04:40:38| |which doujins| +|08/01/2022 04:40:42| |mead is great with beer though| +|08/01/2022 04:40:43| |Chinpo yakuza miporin| +|08/01/2022 04:40:44| |snw is kino indeed| +|08/01/2022 04:40:48| |brew your own mead| +|08/01/2022 04:40:49| |Time to jack off to Mika while listening to Finnish Music| +|08/01/2022 04:40:51| ez +|08/01/2022 04:40:52| |fap break time| +|08/01/2022 04:41:00| |KAUAN | +|08/01/2022 04:41:01| |Shota impregnation sex with Maho!| +|08/01/2022 04:41:21| |Fapping to bunnies being trapped in the cold!| +|08/01/2022 04:41:23| https://exhentai.org/g/2106075/f12f5eab42/ +|08/01/2022 04:41:25| |CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +|08/01/2022 04:41:31| |God gives his heaviest tanks to his tiniest girls| +|08/01/2022 04:41:33| |CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +|08/01/2022 04:41:42| |CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +|08/01/2022 04:41:43| kanpai~ +|08/01/2022 04:41:45| |Anon I can't click that hentai link| +|08/01/2022 04:41:46| |shut up| +|08/01/2022 04:41:49| |The tamara hosomi one is excelent| +|08/01/2022 04:41:50| https://miho.lives.rent.free/in/ERIKAS-head.rtf +|08/01/2022 04:41:57| |TOTSUGEKIS NEXT| +|08/01/2022 04:41:59| |>quick fap break time| +|08/01/2022 04:41:59| |who needs hentai link fuck off| +|08/01/2022 04:42:04| |hi, i'd like to say i hate niggers, that's all thanks| +|08/01/2022 04:42:06| |sup nerds| +|08/01/2022 04:42:07| |post pics in chat| +|08/01/2022 04:42:09| |MY WIFE NISHI| +|08/01/2022 04:42:16| |HOW MANY HOURS LEFT? 5?| +|08/01/2022 04:42:21| |Anon-kun... just transcribe that link| +|08/01/2022 04:42:22| |Someone beat me to typing the n word| +|08/01/2022 04:42:23| |my wife tan Nishi| +|08/01/2022 04:42:24| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 04:42:26| |I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE | +|08/01/2022 04:42:29| |Don't use white text No one can read that shit| +|08/01/2022 04:42:32| |*TINK* *TINK* *TINK* GENTLEMEN, I HAVE AN ANNOUNCEMENT TO MAKE| +|08/01/2022 04:42:33| |bruh i need at least 30 mins to fap| +|08/01/2022 04:42:34| |I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE | +|08/01/2022 04:42:46| |fuck COVID19| +|08/01/2022 04:42:46| |/purple/sisters ww@| +|08/01/2022 04:42:47| |are we watching the finales after this| +|08/01/2022 04:42:50| |I need atleast 2 hrs of edging| +|08/01/2022 04:42:56| |AHEM, Niggers. That is all| +|08/01/2022 04:42:56| |Farming /GuP/ threads for my folder | +|08/01/2022 04:42:57| |SOUTH CHINA SEA BELONGS TO CHINA| +|08/01/2022 04:42:57| |i need 3| +|08/01/2022 04:42:57| |you get 7 fap or no fap | +|08/01/2022 04:42:58| Anzu +|08/01/2022 04:43:02| |>he doesn't fap in 30 seconds| +|08/01/2022 04:43:02| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 04:43:03| |I HATE ThE ANTICRIST| +|08/01/2022 04:43:03| |yukari akiyama's tank course included?| +|08/01/2022 04:43:04| :DDDDDDD +|08/01/2022 04:43:07| |post your favorite gup doujins| +|08/01/2022 04:43:07| |no it fucking doesent| +|08/01/2022 04:43:09| |FUCK NIGGERS FUCK KIKES FUCK NIGGERS FUCK JANNIES AND FUCK DARJEELING| +|08/01/2022 04:43:11| |benis :DDDD| +|08/01/2022 04:43:11| |BASED GALAX| +|08/01/2022 04:43:13| |SENKAKU ISLANDS| +|08/01/2022 04:43:15| |THERE WE GO INTERMISSION MUSIC| +|08/01/2022 04:43:16| |Time to take a beer soaked shit| +|08/01/2022 04:43:17| |popping prescription painkillers with yukari| +|08/01/2022 04:43:17| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:43:17| tulta +|08/01/2022 04:43:17| |not letting this nut go until the end of DF3 bros| +|08/01/2022 04:43:18| :D +|08/01/2022 04:43:20| |SEX WITH FINNS| +|08/01/2022 04:43:20| |RUSSIAN BROS DON'T LOOK| +|08/01/2022 04:43:21| |EBIN :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:21| FINNNNNS +|08/01/2022 04:43:24| |FUG :DDDDDDDDDDD| +|08/01/2022 04:43:24| DULDA +|08/01/2022 04:43:26| |FUG :DDDDDDDDDDDDDDDD| +|08/01/2022 04:43:26| ebig +|08/01/2022 04:43:26| gimi +|08/01/2022 04:43:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:43:29| :DDDDDDDDD +|08/01/2022 04:43:29| :DDDDDDDDDDDDD +|08/01/2022 04:43:30| |NYET MOLOTOV| +|08/01/2022 04:43:31| |fug :DDDDDDDDDDDDDD| +|08/01/2022 04:43:32| |fug :DDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:33| |OI VITTU SAATANA PERRRRRRRKELE| +|08/01/2022 04:43:33| |SUOMI PERKELE| +|08/01/2022 04:43:33| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 04:43:33| |EBINNN :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:34| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:34| |Based music| +|08/01/2022 04:43:34| |ebin :DDD| +|08/01/2022 04:43:36| |BENIS :DDDDDDDDDDDDDDDD| +|08/01/2022 04:43:37| |mika tiddies :DDDDDD| +|08/01/2022 04:43:39| |MIGA BESD GUB :DDDDDD| +|08/01/2022 04:43:40| |Saving my nut for Alice OVA| +|08/01/2022 04:43:41| |BASED COMMIE KILLING FINNS| +|08/01/2022 04:43:42| |had to leave at maus part. missed the end. feels bad| +|08/01/2022 04:43:43| |FUGGG IDS FINN DIME :DDDDDDDDDDDDD| +|08/01/2022 04:43:44| :DDDDDDDDDDDDDDDDDDDDDDddddd +|08/01/2022 04:43:45| |Fuggggg :DDD| +|08/01/2022 04:43:45| |KAUAN ON KARSITTY| +|08/01/2022 04:43:45| |miga :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:46| |its disustinglye finnish in here right now| +|08/01/2022 04:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:43:49| BENIS +|08/01/2022 04:43:49| |oh fugg :D| +|08/01/2022 04:43:51| |SSCHIBBEN SNAB XDDDD| +|08/01/2022 04:43:54| |dulda :DDD| +|08/01/2022 04:43:55| |i wish i was finnish| +|08/01/2022 04:43:56| |Gandeke /DDDDD| +|08/01/2022 04:43:56| |CHRISDIEEEEE :DDDDDdd| +|08/01/2022 04:43:56| |NJET MOLOTFF| +|08/01/2022 04:43:56| |benis :D| +|08/01/2022 04:43:57| |PERKELE :DDDDDDDDDDD| +|08/01/2022 04:43:58| |chrisdie susbension :DDDDDD| +|08/01/2022 04:44:00| Finna +|08/01/2022 04:44:05| |Niet Molotov| +|08/01/2022 04:44:06| SUOMI +|08/01/2022 04:44:06| |PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:44:07| |SEKEJERVEN POLKAA :DDD| +|08/01/2022 04:44:11| |What episode are we on?| +|08/01/2022 04:44:11| |Jumalauta :DDDDDDD| +|08/01/2022 04:44:14| |Simo :DDDDDDDDDDDDDDDDD| +|08/01/2022 04:44:15| TUL-TA! +|08/01/2022 04:44:21| |Sergeant I lost my rifle :D| +|08/01/2022 04:44:21| |Bergel :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:44:22| |show's over, movie time| +|08/01/2022 04:44:24| |>he came to the stream late| +|08/01/2022 04:44:28| |saunaklonkku with keizoku| +|08/01/2022 04:44:30| |BRUH WADDUP NIGGAS| +|08/01/2022 04:44:32| |Anyone make it through the whole stream| +|08/01/2022 04:44:33| |oh shid :DDDDD| +|08/01/2022 04:44:36| |maho is my wife btw| +|08/01/2022 04:44:39| |Yeah I did| +|08/01/2022 04:44:47| |5 minutes| +|08/01/2022 04:44:48| |lazy sex with mika| +|08/01/2022 04:44:49| |Ive had under 7 hours sleep across what is now 3 nights| +|08/01/2022 04:44:49| |youko is pretty cute| +|08/01/2022 04:44:50| |Thank you all for being here, Anons!| +|08/01/2022 04:44:50| |I want to go to SUOMI| +|08/01/2022 04:44:56| |FIVE MINUDS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:44:57| |for me its mako| +|08/01/2022 04:44:58| |I'm Maho btw. (Miho 4eva)| +|08/01/2022 04:45:01| |Thankyou for being here anon| +|08/01/2022 04:45:02| |rip to all bros we lose on the way| +|08/01/2022 04:45:03| |fug :DDD just type this fast: https://exhentai.org/g/2106075/f12f5eab42/| +|08/01/2022 04:45:13| |*AHEM* flat anzu chest| +|08/01/2022 04:45:14| |nursing handjob from Hana| +|08/01/2022 04:45:21| |i ain't clickin dat shit nigga| +|08/01/2022 04:45:24| |SUOMALIANEN CUNNY| +|08/01/2022 04:45:24| >flowerjob +|08/01/2022 04:45:34| |sqeezing saori's tits| +|08/01/2022 04:45:36| |The sun is rising| +|08/01/2022 04:45:37| |tfw buffering| +|08/01/2022 04:45:39| |>use to read gup hentai >start watching the show >now feel too guilty to read gup hentai| +|08/01/2022 04:45:42| |you're a nigger if you write in yellow lol| +|08/01/2022 04:45:49| |I want to stick my dick into Hana's rose| +|08/01/2022 04:45:50| |red gang| +|08/01/2022 04:45:51| |can someone link the hentai where erika is tickled in a swimsuit| +|08/01/2022 04:45:53| |What color amI?| +|08/01/2022 04:45:54| |AYOOO HOLD UP| +|08/01/2022 04:45:56| |Playing Warhammer on Anzu's chest| +|08/01/2022 04:45:57| |PINK GANG 4 LYF| +|08/01/2022 04:46:01| |>read gup hentai >watch gup >now read more gup hentai| +|08/01/2022 04:46:04| |purple best color| +|08/01/2022 04:46:06| |EEEEEEEEEEEEIIIIIIIIIIIII WADDUP| +|08/01/2022 04:46:07| |Red supremacy| +|08/01/2022 04:46:09| |this ^| +|08/01/2022 04:46:11| |killing and consuming the flesh of momo kawashima| +|08/01/2022 04:46:11| perkele +|08/01/2022 04:46:13| |I simply do not read yellow posts| +|08/01/2022 04:46:13| >pink +|08/01/2022 04:46:15| |I have never fapped to guppies and never will. They are for each other. I am the chad here.| +|08/01/2022 04:46:15| BLYAT +|08/01/2022 04:46:18| |i'm a white supremacist| +|08/01/2022 04:46:18| RASVETALI +|08/01/2022 04:46:21| >yellow +|08/01/2022 04:46:24| |cunny bros....| +|08/01/2022 04:46:24| |this be lit asf doe fr fr ngl| +|08/01/2022 04:46:25| |>typing in green| +|08/01/2022 04:46:25| hail +|08/01/2022 04:46:26| |based greenchad| +|08/01/2022 04:46:27| |HALF TIME FAP TIME| +|08/01/2022 04:46:28| |It's more of a magenta| +|08/01/2022 04:46:30| |best song btw| +|08/01/2022 04:46:34| |KRASNAYA ARIJA| +|08/01/2022 04:46:34| |Redfags can't see this | +|08/01/2022 04:46:34| |CYKA BLYAT| +|08/01/2022 04:46:35| UUUUUURRRRRRAAAAAAAAAAAAA +|08/01/2022 04:46:35| RASTVITALI +|08/01/2022 04:46:38| >tetris +|08/01/2022 04:46:39| |Press R to report dissenters| +|08/01/2022 04:46:39| URA +|08/01/2022 04:46:41| dumbass +|08/01/2022 04:46:42| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:46:43| |DAILY REMINDER TO LOVE YOUR STATION| +|08/01/2022 04:46:43| |who gives a shit about the distinction between purple and magenta| +|08/01/2022 04:46:46| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:46:46| CYKA +|08/01/2022 04:46:47| ypaaaaaaaaaaaaaaaaaaaa +|08/01/2022 04:46:48| Cunners... +|08/01/2022 04:46:49| |>he just needs 3 minutes to fap| +|08/01/2022 04:46:52| |PRAVDA BROS ARE TIME IS COMING| +|08/01/2022 04:46:53| |>TFW no Kyutusha daughterwife| +|08/01/2022 04:46:57| |CYKA BLYAT URAAAAAAAAAAAAAAAA CHEEKI BREEKI| +|08/01/2022 04:47:00| |>Not fapping for over a hour| +|08/01/2022 04:47:01| |crush capitalism!!| +|08/01/2022 04:47:02| |i sit on my fap throne for 20 minutes at least| +|08/01/2022 04:47:03| |CHEEKI BREEKI| +|08/01/2022 04:47:03| |damn female kid| +|08/01/2022 04:47:09| |im going to | +|08/01/2022 04:47:09| |>tfw no klara/nona harem| +|08/01/2022 04:47:10| |KOSMOS BLYAT| +|08/01/2022 04:47:12| |>ywn hear maho singing panzerlied or erika| +|08/01/2022 04:47:12| |>Tfw no buryat waifu| +|08/01/2022 04:47:16| |lawyer here you have permission to stream this?| +|08/01/2022 04:47:17| |Need rape correction!! !| +|08/01/2022 04:47:19| |>TFW can go for over 2 hours | +|08/01/2022 04:47:22| |TRAV TRAV U DOMA| +|08/01/2022 04:47:23| |invisible text| +|08/01/2022 04:47:30| |I wish I could have Erika as my waif| +|08/01/2022 04:47:31| |super lawyer here, you have my permission to stream| +|08/01/2022 04:47:31| |>ywn be shorter than nonna| +|08/01/2022 04:47:32| |lawyer here, he has permission| +|08/01/2022 04:47:34| |PROSHAI NAVEKI| +|08/01/2022 04:47:35| |We have an invisible thot here| +|08/01/2022 04:47:37| |Shit? Taken Beer? Grabbed Penis? In hand. Yep it's GuP stream time| +|08/01/2022 04:47:40| |I haven't had a good edging sesh in months| +|08/01/2022 04:47:40| |rape lawyers| +|08/01/2022 04:47:41| |I was hoping what is love duce or some other sick edits here tbh| +|08/01/2022 04:47:45| |CHOOSE ONE: NONNA OR MAHO| +|08/01/2022 04:47:47| |>tfw shorter than nonna by 1 cm| +|08/01/2022 04:47:50| KLARA +|08/01/2022 04:47:50| maho +|08/01/2022 04:47:50| NONNA +|08/01/2022 04:47:51| Nonna +|08/01/2022 04:47:52| Nonna +|08/01/2022 04:47:54| |cant rape me if i consent| +|08/01/2022 04:47:54| Nonna +|08/01/2022 04:47:56| |maho everyday| +|08/01/2022 04:47:56| nonna +|08/01/2022 04:47:57| |Maho > Nonna| +|08/01/2022 04:47:58| |SEX WIH MAHO ALL DAY| +|08/01/2022 04:48:00| |Lawyer here. what are they gonna do, DMCA?| +|08/01/2022 04:48:05| |nonna posters are fags| +|08/01/2022 04:48:07| |can't accuse me of rape if i kill you after| +|08/01/2022 04:48:08| |SEX WITH MEXT| +|08/01/2022 04:48:14| |lawyer here, they can lick my balls| +|08/01/2022 04:48:14| |tfw shorter than Katyusha| +|08/01/2022 04:48:16| |lawyer here, i'm gay| +|08/01/2022 04:48:17| |Lawyer here, I'm emailing Actas right now| +|08/01/2022 04:48:17| |But Erika > All| +|08/01/2022 04:48:17| |my butt hurts| +|08/01/2022 04:48:19| |Sex with fukuda| +|08/01/2022 04:48:21| HUGGBEES +|08/01/2022 04:48:23| |i want to smother my face on nonna's nonnas| +|08/01/2022 04:48:25| |katyusha or anzu tho| +|08/01/2022 04:48:32| |Anzu with Anzu| +|08/01/2022 04:48:32| |Lawyer here, I'm having sex with Galax rn| +|08/01/2022 04:48:32| |Fukuda on the Tokyo Trials| +|08/01/2022 04:48:35| |haven't seen df3 yet, ive got a good feeling about duce| +|08/01/2022 04:48:35| |Not a Lawer, they can lick my dick and call me daddy| +|08/01/2022 04:48:43| |Katyusha and Anzu at the same time...| +|08/01/2022 04:48:43| |should we tell him...| +|08/01/2022 04:48:44| ducebro.... +|08/01/2022 04:48:44| |lawyer here, duce is objectively the best gup| +|08/01/2022 04:48:51| |ONE MINUTE REMAINING| +|08/01/2022 04:48:53| |FEEL MY SHINE| +|08/01/2022 04:48:54| |how come no one ever posts nonna in gup threads?| +|08/01/2022 04:48:55| |Lawyer here, I'm just dying from alcohol| +|08/01/2022 04:48:56| |Anzu is for Mextguy, her husband| +|08/01/2022 04:48:56| 1M +|08/01/2022 04:48:57| EXCITE +|08/01/2022 04:48:58| |>there are some anons that didn't go do something else during the intermission| +|08/01/2022 04:49:02| |I JSUT FEEL MY SHIIIIIIIIIIIIIINE| +|08/01/2022 04:49:03| |I JUST FEEL MY WIIIIIIIIND| +|08/01/2022 04:49:03| |Who here watching GuP and Conair at the same time?| +|08/01/2022 04:49:04| |Can't get sentenced if you swallow a cyanide pill| +|08/01/2022 04:49:05| |Lawyer here this stream needs to be redacted| +|08/01/2022 04:49:06| |nonna is too hot| +|08/01/2022 04:49:08| |MY MASSIVE CARBON COATED SHIT LOG TURNED INTO A CONSTIPATION SO NOTHING WAS RESOLVED THANKS FAGGOT| +|08/01/2022 04:49:09| |RISE AND RIDE| +|08/01/2022 04:49:10| |bros... i wasted the intermission...| +|08/01/2022 04:49:11| |Nonna is too sexy for GuP threads| +|08/01/2022 04:49:11| |GET YOUR LOAD READY| +|08/01/2022 04:49:16| |OP TIME| +|08/01/2022 04:49:17| |based and cyanidepilled| +|08/01/2022 04:49:21| 30 +|08/01/2022 04:49:22| |Drink MRE coffee anon| +|08/01/2022 04:49:24| |I am greek| +|08/01/2022 04:49:25| |First episode finally starting| +|08/01/2022 04:49:27| |GALAX I wasn't ready, can we have 5 more minutes :)| +|08/01/2022 04:49:31| 20 +|08/01/2022 04:49:32| |>greeks in my stream| +|08/01/2022 04:49:33| seanigger +|08/01/2022 04:49:36| >FEET +|08/01/2022 04:49:39| |Greek? You mean fake Roman?| +|08/01/2022 04:49:41| 10 +|08/01/2022 04:49:42| |Greeks are too poor to join| +|08/01/2022 04:49:42| |fat nick is that you?| +|08/01/2022 04:49:44| |there better not be any fucking greeks here| +|08/01/2022 04:49:45| LATE +|08/01/2022 04:49:45| |>Being to only NL anon| +|08/01/2022 04:49:46| |Here we go| +|08/01/2022 04:49:46| |greece is based| +|08/01/2022 04:49:46| |IT TIME BROS | +|08/01/2022 04:49:48| KITAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:49:50| |lessss gooooooooooooooooooooooooooooooooooooooooooooo| +|08/01/2022 04:49:51| START +|08/01/2022 04:49:53| |Coffee, Instant, Type I or Type II?| +|08/01/2022 04:49:56| |I'm fucking finnish| +|08/01/2022 04:49:57| TM +|08/01/2022 04:49:59| |WAIT FOR SONG| +|08/01/2022 04:50:04| |LET'S GO BOYS TRY NOT TO PASS OUT| +|08/01/2022 04:50:04| |I AM FUCKING FINNISHED| +|08/01/2022 04:50:07| |I'm Malaysian| +|08/01/2022 04:50:10| |just got to the stream, where are >we in the show rn | +|08/01/2022 04:50:11| |can't read whitefags HAHA| +|08/01/2022 04:50:14| |WE GOT MOVIE SIGN| +|08/01/2022 04:50:15| >boys +|08/01/2022 04:50:16| |TL NOTE: TM means Tasty Maho| +|08/01/2022 04:50:19| |ewww, seaniggers| +|08/01/2022 04:50:19| FEEEEEEET +|08/01/2022 04:50:20| >SEANIGS +|08/01/2022 04:50:20| |where are my /7:50pm/ chads at?| +|08/01/2022 04:50:20| |Euro bro here, im dying| +|08/01/2022 04:50:22| |RISE TO MY FEEEEEEEEEEEEEEEEEEEEEEET| +|08/01/2022 04:50:25| >WHITE +|08/01/2022 04:50:26| kinokinokino +|08/01/2022 04:50:26| KITA +|08/01/2022 04:50:27| FEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET +|08/01/2022 04:50:29| >slags +|08/01/2022 04:50:29| |0448 gang sound off| +|08/01/2022 04:50:31| |das film > akira| +|08/01/2022 04:50:31| |SEANIGGERS WER U AT| +|08/01/2022 04:50:31| |EU Bro still going strong| +|08/01/2022 04:50:31| |kino time| +|08/01/2022 04:50:32| TEA +|08/01/2022 04:50:32| TEA +|08/01/2022 04:50:33| KITAAAAAAAAAAAA +|08/01/2022 04:50:34| ??????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 04:50:35| |cute slag tea| +|08/01/2022 04:50:35| tea +|08/01/2022 04:50:35| finna +|08/01/2022 04:50:36| |SHUT UP SLAG| +|08/01/2022 04:50:36| ?????????????????????? +|08/01/2022 04:50:36| |TL NOTE: NIGGERS means KINO| +|08/01/2022 04:50:37| ?????????????????????? +|08/01/2022 04:50:37| URA +|08/01/2022 04:50:38| SLAGS +|08/01/2022 04:50:38| |HERE WE GO| +|08/01/2022 04:50:38| |UK anon, im living on weremacht energy| +|08/01/2022 04:50:38| |SHUT UP SLAG| +|08/01/2022 04:50:39| |STANDING UP| +|08/01/2022 04:50:40| ????? +|08/01/2022 04:50:41| ???????????????????????????????????????????????????????????????? +|08/01/2022 04:50:42| ??????? +|08/01/2022 04:50:42| |time for TOTSUGEKI| +|08/01/2022 04:50:43| ???????????????????????????????????? +|08/01/2022 04:50:43| |hip time| +|08/01/2022 04:50:44| |SHIIIIIIIIIIIIIIIT I DIDN'T PISS ALREADY| +|08/01/2022 04:50:45| |dars tea!!| +|08/01/2022 04:50:45| |Didn't we have some aftershow OVAs btw| +|08/01/2022 04:50:46| |TEA TIME!| +|08/01/2022 04:50:46| |shut up Darj| +|08/01/2022 04:50:47| ???????????????????? +|08/01/2022 04:50:48| |>drinking tea with shit floating in it| +|08/01/2022 04:50:48| ??????????????????????????????????????? +|08/01/2022 04:50:49| |it's not tea, it's piss| +|08/01/2022 04:50:49| |LONG LIVE THE IRA| +|08/01/2022 04:50:50| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 04:50:51| |WHAT THE FUCK ARE YOU TALKING ABOUT | +|08/01/2022 04:50:52| ???????????????????????????????? +|08/01/2022 04:50:52| ???????????????????????????????????????????????????????????????? +|08/01/2022 04:50:52| ???????????????????/ +|08/01/2022 04:50:53| sayings? +|08/01/2022 04:50:53| |>wow we're fucking losing huh| +|08/01/2022 04:50:54| """great""" +|08/01/2022 04:50:55| |she on drugs| +|08/01/2022 04:50:57| |der film is the cinematic milestone of the 21st century| +|08/01/2022 04:50:57| BUKKAKEEE +|08/01/2022 04:50:58| |3D CGI!!!!| +|08/01/2022 04:50:59| |READY YOUR TOTSUGEKIS LADS| +|08/01/2022 04:50:59| |HAVE YOU HEAR THIS SAYING?| +|08/01/2022 04:50:59| |DRINK THE BROTH| +|08/01/2022 04:51:00| |I WAS BORN IN A DUBLIN STREET| +|08/01/2022 04:51:04| |SHUT UP DARJEELING| +|08/01/2022 04:51:05| |PEKOE HAS HAD ENOUGH| +|08/01/2022 04:51:05| |>massive jump in animation quality| +|08/01/2022 04:51:07| |AUDIO PORN| +|08/01/2022 04:51:07| |best use of a golf course ever seen| +|08/01/2022 04:51:09| FAITOOOO +|08/01/2022 04:51:09| |That detailed barel| +|08/01/2022 04:51:10| |hail hitler| +|08/01/2022 04:51:11| |CHI-HA PLS GO| +|08/01/2022 04:51:12| KINO +|08/01/2022 04:51:13| |DON'T YOU SEE, PEKOE!? SALVATION| +|08/01/2022 04:51:14| |why are they in a golf course?| +|08/01/2022 04:51:14| |what heppaned I went to go pee and missed the end of last ep| +|08/01/2022 04:51:15| |BAKA ALERT ! BAKA ALERT !| +|08/01/2022 04:51:16| FINNS +|08/01/2022 04:51:16| >hail +|08/01/2022 04:51:16| |'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO | +|08/01/2022 04:51:18| Nishi +|08/01/2022 04:51:19| |ENTER HOBO| +|08/01/2022 04:51:19| |FUGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:51:20| BENIS +|08/01/2022 04:51:20| :DDDDDDDDDD +|08/01/2022 04:51:20| |HEIL MAHO| +|08/01/2022 04:51:20| TOTSGEK +|08/01/2022 04:51:21| |Like wasn't there plenty OVA left where they just fuck around before the film or am I tripping| +|08/01/2022 04:51:22| |FUG :DDDDDDDDD| +|08/01/2022 04:51:23| SALVATION! +|08/01/2022 04:51:23| FINLAND +|08/01/2022 04:51:24| TORILLE +|08/01/2022 04:51:24| |benis :DDDDDDDDDDDDDddd| +|08/01/2022 04:51:24| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:51:24| BENIS +|08/01/2022 04:51:25| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:51:26| |hail was an ancient middle age greeting| +|08/01/2022 04:51:26| |CHINA 444444444444444444444444444444| +|08/01/2022 04:51:28| BENIS +|08/01/2022 04:51:28| hobo +|08/01/2022 04:51:29| |BENIS :DDDD| +|08/01/2022 04:51:29| |CAM ON OORAI| +|08/01/2022 04:51:29| EBIN +|08/01/2022 04:51:31| MIKAAAAAAAAAAAAAAA +|08/01/2022 04:51:32| |FUG :DDD| +|08/01/2022 04:51:32| :DDDDDDDDDDDDD +|08/01/2022 04:51:33| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:33| |BENIS :D| +|08/01/2022 04:51:33| |o fug :D| +|08/01/2022 04:51:33| |darj 2| +|08/01/2022 04:51:34| |CUM ON ENGERLAND *BANG BANG BANG*| +|08/01/2022 04:51:34| FINNS! +|08/01/2022 04:51:34| |BRITS CAMPING AGAIN| +|08/01/2022 04:51:34| |She should be playing black metal| +|08/01/2022 04:51:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:35| |FUGGG :DDDDDD| +|08/01/2022 04:51:35| :DDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:35| |THERE SHE IS :DDDD| +|08/01/2022 04:51:35| |The finnish whores| +|08/01/2022 04:51:36| |CHIHA 444444444444444444444444444444| +|08/01/2022 04:51:36| KERMAVILLI +|08/01/2022 04:51:36| |BENIS :DDDDDDDDD| +|08/01/2022 04:51:36| :D +|08/01/2022 04:51:37| |BERGELE :DDDDD| +|08/01/2022 04:51:37| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:38| |Koskenkorva :DDD| +|08/01/2022 04:51:38| DULDA +|08/01/2022 04:51:39| :DDD +|08/01/2022 04:51:39| |OH FUG :| +|08/01/2022 04:51:40| :DDDDDDDDDDDDDDD +|08/01/2022 04:51:40| |SPURDO SPÄRDE| +|08/01/2022 04:51:41| PRÖÖÖH +|08/01/2022 04:51:42| |FUGGG :DDDD| +|08/01/2022 04:51:42| |Who /hereillä/ here| +|08/01/2022 04:51:42| :DDDD +|08/01/2022 04:51:42| HOBOS +|08/01/2022 04:51:43| |Hitler had the Jews; just let me have the F*nns| +|08/01/2022 04:51:43| HOBO +|08/01/2022 04:51:44| VODKA +|08/01/2022 04:51:44| |miko shimada| +|08/01/2022 04:51:45| |Fun fact: this movie contains 107 different fonts| +|08/01/2022 04:51:45| |EBIN TIME :DDDDDDDDDDDD| +|08/01/2022 04:51:45| KLEPTO +|08/01/2022 04:51:46| |PERGELE :DDDDDDDDDDDD| +|08/01/2022 04:51:46| FUG +|08/01/2022 04:51:48| |Tanks are life| +|08/01/2022 04:51:48| |for the benis| +|08/01/2022 04:51:49| :DDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:50| SUOMI +|08/01/2022 04:51:50| PERKELE +|08/01/2022 04:51:52| PLANE +|08/01/2022 04:51:52| |what do we spam for the finns?| +|08/01/2022 04:51:52| |/hereillä/ represent| +|08/01/2022 04:51:52| | nani yo sore| +|08/01/2022 04:51:54| |>for the free stuff| +|08/01/2022 04:51:54| SAATANA +|08/01/2022 04:51:54| |BENIS :DDDDDDDDDD| +|08/01/2022 04:51:56| PERKELE +|08/01/2022 04:51:57| KERMAVIILI +|08/01/2022 04:51:58| |fug :DDDDDDDDDDDDDDDDD| +|08/01/2022 04:52:02| :DDDDDD +|08/01/2022 04:52:02| |>Important lessons| +|08/01/2022 04:52:03| SAATAANA +|08/01/2022 04:52:03| |hereillä, mää kuolen saatana| +|08/01/2022 04:52:04| |TORILLE TAVATAAN| +|08/01/2022 04:52:06| |Who's driving?| +|08/01/2022 04:52:06| |satana perkele| +|08/01/2022 04:52:07| |WHAT DID SHE MEAN?| +|08/01/2022 04:52:09| |PEKOE UOOOOOOOHHHHHHHHHHH| +|08/01/2022 04:52:09| |VOI VITTU| +|08/01/2022 04:52:09| |gimi :DDDDDDDDDDDDDDDDD| +|08/01/2022 04:52:13| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 04:52:14| ???? +|08/01/2022 04:52:15| |WELL THERE'S THIS SAYING| +|08/01/2022 04:52:17| |be elegant | +|08/01/2022 04:52:18| ???????? +|08/01/2022 04:52:18| ASSAM +|08/01/2022 04:52:19| |She means she wants to steal something| +|08/01/2022 04:52:19| |does shiho still hate miho?| +|08/01/2022 04:52:20| ?!?!?!?!?!? +|08/01/2022 04:52:20| | and colonize Tanzania during the 19th century. I want to invade Darjeeling’s vulnerable parts just like when Ugandan dictator Idi Amin inva| +|08/01/2022 04:52:21| |What did she mean by this?| +|08/01/2022 04:52:22| |did you know that the winterwar, sign of finn resistance, was actually a shame for the finns| +|08/01/2022 04:52:23| ?????????????????????????????????????????????????????????????????????? +|08/01/2022 04:52:23| ASSam +|08/01/2022 04:52:24| |ASSAM MY WIFE| +|08/01/2022 04:52:25| !?!?!??!?!?!?! +|08/01/2022 04:52:26| ??????????????????????????????? +|08/01/2022 04:52:28| |imagine fucking losing from this position| +|08/01/2022 04:52:29| |There's this saying: vittu ku väsyttää saatana| +|08/01/2022 04:52:29| ????????????? +|08/01/2022 04:52:29| |who tf is driving| +|08/01/2022 04:52:29| >MILK +|08/01/2022 04:52:32| |my QUEEEEEEN| +|08/01/2022 04:52:32| |based mako| +|08/01/2022 04:52:33| |Just drink tea 4Head| +|08/01/2022 04:52:33| CUMSHAKE +|08/01/2022 04:52:33| ????????????????? +|08/01/2022 04:52:34| |I'm sorry, but did Ooarai already lose? Oh, that's right. The game isn't even over yet. In fact, it's only halftime. | +|08/01/2022 04:52:34| |Best girl has best taste I see| +|08/01/2022 04:52:37| |GO ON HOME BRITISH SOLDIERS GO ON HOME HAVE YOU GOT NO FUCKING HOMES OF YOUR OWN| +|08/01/2022 04:52:38| |ASSAM SEXU| +|08/01/2022 04:52:39| |I want to break her hymen like a scone| +|08/01/2022 04:52:39| |Finland doesn't exist. Think about it. Have you ever been to Finland? Ever met a Finn?| +|08/01/2022 04:52:40| milkushaku +|08/01/2022 04:52:43| MILLKSHAKE +|08/01/2022 04:52:44| |Saori's milk| +|08/01/2022 04:52:45| |SHOW ME SOME FUCKIN' ROSEHIPS| +|08/01/2022 04:52:45| slowly? +|08/01/2022 04:52:46| |MAKO MILKERS| +|08/01/2022 04:52:47| |FOR EIGHT HUNDRED YEARS| +|08/01/2022 04:52:47| |mako best| +|08/01/2022 04:52:48| |There's also this saying: La pomme ne tombe pas lojn de l'arbre| +|08/01/2022 04:52:51| TOTSUBAKAS +|08/01/2022 04:52:52| |statistically speaking, finns dont exist| +|08/01/2022 04:52:54| |WE'VE FOUGHT YOU WITHOUT FEAR| +|08/01/2022 04:52:56| |stop firing to make time for tea| +|08/01/2022 04:52:56| |PANZER VOR| +|08/01/2022 04:52:57| |Eggs in a milkshake????| +|08/01/2022 04:52:57| |Panzer vor| +|08/01/2022 04:52:58| |PANZER VOR| +|08/01/2022 04:52:58| |Our girls have come so far ;_;| +|08/01/2022 04:52:58| |PANZER VOR| +|08/01/2022 04:52:59| |Finnland is a Japanese fishing colony| +|08/01/2022 04:53:00| |Does not having the tank advantage at halftime count as a loss? Is that what you're saying?| +|08/01/2022 04:53:00| |Panza Vooor| +|08/01/2022 04:53:02| |PANZER VOR!| +|08/01/2022 04:53:03| |cutest panzer vor ever | +|08/01/2022 04:53:04| |AND WE SHALL FIGHT YOU, FOR 800 MORE| +|08/01/2022 04:53:05| |Theres this saying: Niggers are just like poop| +|08/01/2022 04:53:06| NISHI +|08/01/2022 04:53:06| mongolian* +|08/01/2022 04:53:06| TOTSUGK +|08/01/2022 04:53:06| |bakas... | +|08/01/2022 04:53:07| TAMARA +|08/01/2022 04:53:08| |who's that retard?| +|08/01/2022 04:53:08| ACHTUNG +|08/01/2022 04:53:09| |TOTSUGEKI INSTEAD| +|08/01/2022 04:53:09| |Cute Nishi| +|08/01/2022 04:53:10| |PANZER VOR| +|08/01/2022 04:53:10| |PANZER VOR| +|08/01/2022 04:53:11| WAIFUUUUUUU +|08/01/2022 04:53:12| |PANZA FOH| +|08/01/2022 04:53:12| |PANZER VOR| +|08/01/2022 04:53:15| |panzer vor| +|08/01/2022 04:53:15| |panzer vor means panzer vor| +|08/01/2022 04:53:16| |PANZER VOR| +|08/01/2022 04:53:17| |destroy them kudasai| +|08/01/2022 04:53:17| |>pantsu | +|08/01/2022 04:53:18| |panzer vor means tank canabalism| +|08/01/2022 04:53:19| |Panzer vor means panzer vor| +|08/01/2022 04:53:19| |PANTSU ARE FOR| +|08/01/2022 04:53:19| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:20| |I want to put my finger in there| +|08/01/2022 04:53:20| PANZABOR +|08/01/2022 04:53:20| naruhodo +|08/01/2022 04:53:20| |Panzer vor means panzer vor| +|08/01/2022 04:53:22| ??????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 04:53:23| ??? +|08/01/2022 04:53:23| |TL NOTE: PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:24| |Panzer Vor means Erika best GuP| +|08/01/2022 04:53:24| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:24| |Panzer vor? can we get a TL?| +|08/01/2022 04:53:24| |wait, did someone say charge?| +|08/01/2022 04:53:25| |DUMB TOSUBAKAS| +|08/01/2022 04:53:26| TOTSUGEKI +|08/01/2022 04:53:26| AHHHHHHHHHHHHHH +|08/01/2022 04:53:28| henlo +|08/01/2022 04:53:29| ??????????????? +|08/01/2022 04:53:30| |it means panzer vor| +|08/01/2022 04:53:31| rigged +|08/01/2022 04:53:31| |DANKE TL| +|08/01/2022 04:53:32| BANZAI +|08/01/2022 04:53:33| |SENSHA ZENSHIN| +|08/01/2022 04:53:33| |SENSHA ZENSHINNNNNNNNNNN| +|08/01/2022 04:53:34| |SENSHA ZENSHIN| +|08/01/2022 04:53:34| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:35| |Panzer Vor means Panzer Vor| +|08/01/2022 04:53:35| ZENSHIN! +|08/01/2022 04:53:36| TOTSUGEKI +|08/01/2022 04:53:36| |PANZER VOR| +|08/01/2022 04:53:37| |no No NO| +|08/01/2022 04:53:37| |TL NOTE: PANZER VOR MEANS TOTSUGEKI| +|08/01/2022 04:53:38| |PANTSU VOR| +|08/01/2022 04:53:38| |what does tanks forward mean?| +|08/01/2022 04:53:38| |SENSHA ZENSHIN| +|08/01/2022 04:53:39| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:39| TOTSUGEKI +|08/01/2022 04:53:39| ANZU +|08/01/2022 04:53:40| TOTSUGEKI? +|08/01/2022 04:53:42| |PANZER SENSHIN| +|08/01/2022 04:53:42| |TOTSUGEKI | +|08/01/2022 04:53:43| |big mistake miho...| +|08/01/2022 04:53:43| TOTSUGEKI +|08/01/2022 04:53:43| |aaaaaaaaaaaaaaa its buffering so much for me| +|08/01/2022 04:53:45| OST +|08/01/2022 04:53:47| TOTSUGEKI +|08/01/2022 04:53:48| |tanks forward means sensha zenshin| +|08/01/2022 04:53:50| |PANZER VOR| +|08/01/2022 04:53:51| |Who's this new broad?| +|08/01/2022 04:53:51| |TENNO HEIKA BANZAIIIII| +|08/01/2022 04:53:51| HOSOMI +|08/01/2022 04:53:52| |Pantsu 4| +|08/01/2022 04:53:54| |PANZER VOR| +|08/01/2022 04:53:56| TOTSUGEKI +|08/01/2022 04:53:57| |PANZAA VOR| +|08/01/2022 04:53:57| BAAAAAAAANNZZZZZZZAAAAAAIIIIIIIIIIII +|08/01/2022 04:53:57| TOTSUGEKIII +|08/01/2022 04:54:02| |did they paint the panzer iv?| +|08/01/2022 04:54:02| |Pantsu 4| +|08/01/2022 04:54:05| |>PANTSU WHORE| +|08/01/2022 04:54:06| KINOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:54:08| |wasn't it blue?| +|08/01/2022 04:54:08| |WARE WA KANGUN WAGA TEKI WA| +|08/01/2022 04:54:09| OST +|08/01/2022 04:54:10| |I think she was called Nishi-zumi or some shit| +|08/01/2022 04:54:11| SOUUUUUUUUUUUUUUUUUUUUUUUUUUUULLLLLLLLLLLLLLLLLLL +|08/01/2022 04:54:11| kino +|08/01/2022 04:54:13| |I restart browser when it buffers for me and sometimes it works| +|08/01/2022 04:54:15| |such lovely tunes| +|08/01/2022 04:54:15| |CHI-HA CHI-HA CHI-HA CHI-HA CHI-HA CHI-HA| +|08/01/2022 04:54:16| |they have money now| +|08/01/2022 04:54:16| KINO +|08/01/2022 04:54:17| |TL note: Kino means kino| +|08/01/2022 04:54:17| PANTSU +|08/01/2022 04:54:18| kino +|08/01/2022 04:54:19| |ALL QUIET ON THE KINO FRONT| +|08/01/2022 04:54:19| |>Imagine using shit jap tanks| +|08/01/2022 04:54:22| |That pleases the ears| +|08/01/2022 04:54:22| Nishizoomer +|08/01/2022 04:54:23| |fuckin kino| +|08/01/2022 04:54:24| |cute panzers| +|08/01/2022 04:54:25| * +|08/01/2022 04:54:27| KINO +|08/01/2022 04:54:29| ass +|08/01/2022 04:54:29| |SING IT WIT ME| +|08/01/2022 04:54:29| > +|08/01/2022 04:54:30| Ass +|08/01/2022 04:54:31| ASS +|08/01/2022 04:54:31| |>losing to shit jap tanks| +|08/01/2022 04:54:32| Anushole +|08/01/2022 04:54:32| asshole +|08/01/2022 04:54:32| |WE KINOS HEROES NOW LADS| +|08/01/2022 04:54:33| |film and finales are way better than the show desu| +|08/01/2022 04:54:33| GUTS +|08/01/2022 04:54:36| |TRACKP PHYSICS| +|08/01/2022 04:54:37| |( * )| +|08/01/2022 04:54:38| |best opening scene ever| +|08/01/2022 04:54:38| mooning +|08/01/2022 04:54:38| BUTT +|08/01/2022 04:54:41| HIPPOS +|08/01/2022 04:54:45| HET +|08/01/2022 04:54:49| |Turtle club| +|08/01/2022 04:54:49| |fag anteater| +|08/01/2022 04:54:49| ASS +|08/01/2022 04:54:51| |fast turdle| +|08/01/2022 04:54:51| |>still can't drive straight| +|08/01/2022 04:54:52| |GAMER GIRLS| +|08/01/2022 04:54:52| x +|08/01/2022 04:54:53| |Murder bunnies| +|08/01/2022 04:54:57| ASSEATER +|08/01/2022 04:54:58| |BUNNY CUNNY| +|08/01/2022 04:54:58| @ +|08/01/2022 04:55:00| BELLY +|08/01/2022 04:55:00| |>stupid tama gonna squeeze| +|08/01/2022 04:55:01| |That's a weird ass looking turtle| +|08/01/2022 04:55:02| |>world of tanks bgm| +|08/01/2022 04:55:04| |KILLER RABBITS| +|08/01/2022 04:55:06| ew +|08/01/2022 04:55:07| quacl +|08/01/2022 04:55:08| BUNNIES +|08/01/2022 04:55:12| |how can you be a msygonist incel shit and still like gup?| +|08/01/2022 04:55:15| shuba +|08/01/2022 04:55:16| sodokooooooo +|08/01/2022 04:55:19| |that leopon has seen some shit| +|08/01/2022 04:55:21| |WHAT DID I MISS| +|08/01/2022 04:55:21| |Leopon's seen some shit.| +|08/01/2022 04:55:25| |LEOPON BEST| +|08/01/2022 04:55:26| guppy +|08/01/2022 04:55:26| everything +|08/01/2022 04:55:26| |The classic| +|08/01/2022 04:55:27| LE/O/PON +|08/01/2022 04:55:27| |cute ankou| +|08/01/2022 04:55:32| |how can you be a msygonist incel shit and still like gup?| +|08/01/2022 04:55:33| |Leopon's seen footage they stay noided| +|08/01/2022 04:55:33| |REMINDER TO ALL: The StuGIII Crew are my wives.| +|08/01/2022 04:55:33| |TIGER SEXIEST TANK| +|08/01/2022 04:55:36| |BANDA NO SAKURA KA ERI NO IRO| +|08/01/2022 04:55:36| |ankou based| +|08/01/2022 04:55:45| NORIKO<3 +|08/01/2022 04:55:46| nyaa +|08/01/2022 04:55:47| |Hana is my wife| +|08/01/2022 04:55:48| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 04:55:52| ANZU +|08/01/2022 04:55:52| |Noriko is OLEV| +|08/01/2022 04:55:52| nyaa!~ +|08/01/2022 04:55:55| |MAN, THE DETAIL IMPROVED SO MUCH| +|08/01/2022 04:55:58| |Based Schizo | +|08/01/2022 04:55:58| |why is anzu so cute bros| +|08/01/2022 04:56:02| |Reminder: Erika is mine. You get your filythy hands offmher| +|08/01/2022 04:56:03| |red 6 ready| +|08/01/2022 04:56:03| HOOOOOOOSHIINOOOOOO +|08/01/2022 04:56:07| |ANZU UOHH| +|08/01/2022 04:56:11| |is it just me or is it quieter than before| +|08/01/2022 04:56:12| TOTSUGEKI +|08/01/2022 04:56:12| |tfw no panzer gf| +|08/01/2022 04:56:12| BOOOOOOOOOOOOOOOOOOOOOOOOOOOOM +|08/01/2022 04:56:14| |Wew the chat is becoming more schizo by the moment| +|08/01/2022 04:56:15| |fox 2, FUCK THE FIA| +|08/01/2022 04:56:15| HOSHINO +|08/01/2022 04:56:16| |ANZU VORE| +|08/01/2022 04:56:23| |Erika is for every anon here| +|08/01/2022 04:56:23| |imagine still not winning in this position though| +|08/01/2022 04:56:24| |volume seems quieter| +|08/01/2022 04:56:28| |Tea intact| +|08/01/2022 04:56:29| |Killstealing japs| +|08/01/2022 04:56:29| bonk +|08/01/2022 04:56:32| |what does Anzu feel about being loli bait? I bet she likes being appreciated| +|08/01/2022 04:56:32| |Chat is quieter, it's 6 am| +|08/01/2022 04:56:38| |matildas BTFO| +|08/01/2022 04:56:39| *snap* +|08/01/2022 04:56:39| TOTSUGEKI +|08/01/2022 04:56:40| |II DESU NE| +|08/01/2022 04:56:42| |has anyone here played dream tank match?| +|08/01/2022 04:56:42| |5am here| +|08/01/2022 04:56:43| TOTSUGEKI +|08/01/2022 04:56:43| HOSOMI +|08/01/2022 04:56:43| |Euroslot struggling| +|08/01/2022 04:56:44| |TOTSUGEKI | +|08/01/2022 04:56:44| TOTSUGEKI! +|08/01/2022 04:56:44| TOTSUGEKI +|08/01/2022 04:56:46| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 04:56:46| |>Imagine being KO'ed by a jap tank| +|08/01/2022 04:56:46| BANZAI! +|08/01/2022 04:56:47| |No stop| +|08/01/2022 04:56:47| TOTSUGEKI +|08/01/2022 04:56:47| |That was Assam just there| +|08/01/2022 04:56:48| |too sleepy to shitpost effectively| +|08/01/2022 04:56:48| |i dont care about any of this, just skip to duce parts| +|08/01/2022 04:56:48| TOTSUGEKI +|08/01/2022 04:56:48| |TOTSUGEKI | +|08/01/2022 04:56:49| TOTSUGEKI +|08/01/2022 04:56:50| THROWING +|08/01/2022 04:56:50| TOTSUGEKIIIIIIII +|08/01/2022 04:56:51| |TOTSUGEKI | +|08/01/2022 04:56:52| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 04:56:52| TOTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 04:56:52| |imagine using euro time| +|08/01/2022 04:56:52| SUGOI +|08/01/2022 04:56:53| Tosukeki +|08/01/2022 04:56:53| sugeeeeeeee +|08/01/2022 04:56:55| TOTSUGEKI +|08/01/2022 04:56:55| TOTSUGEKI +|08/01/2022 04:56:56| TOTSUGEKI? +|08/01/2022 04:56:57| TOTSUGEKI +|08/01/2022 04:56:57| |TOTSUGEKI | +|08/01/2022 04:56:57| TOTSUGEKI +|08/01/2022 04:56:58| TOTSUGEKI +|08/01/2022 04:56:58| TOTSUGEKI +|08/01/2022 04:56:58| |TO TSU GE KI| +|08/01/2022 04:56:59| |ching chang to you too, young lady| +|08/01/2022 04:56:59| TOTSUGEKI +|08/01/2022 04:57:00| TOKKAN +|08/01/2022 04:57:00| TOTSUUUUUUU +|08/01/2022 04:57:00| TOTSUGEKIIIIIIIIIIIIIIIII +|08/01/2022 04:57:01| TOTSUGEKI +|08/01/2022 04:57:01| TOTSUGEKIU +|08/01/2022 04:57:01| TOTSUGEKI +|08/01/2022 04:57:02| |baka ass hoes| +|08/01/2022 04:57:02| TOTSUGEKI +|08/01/2022 04:57:02| TOKKAN +|08/01/2022 04:57:04| TOKKAN! +|08/01/2022 04:57:04| TOTSUGEKI +|08/01/2022 04:57:05| TOTSUGEKI +|08/01/2022 04:57:05| TOTSUGEKI! +|08/01/2022 04:57:06| |TOTSUGEKI | +|08/01/2022 04:57:06| |>jap tactics| +|08/01/2022 04:57:06| BANZAI +|08/01/2022 04:57:07| totsygeki +|08/01/2022 04:57:07| BAKAS +|08/01/2022 04:57:07| TOTSUGK +|08/01/2022 04:57:07| TOTSUGEKI +|08/01/2022 04:57:07| |o7 TOTSUGEKI| +|08/01/2022 04:57:07| |YUKI NO SHINGUN| +|08/01/2022 04:57:08| BANZAI +|08/01/2022 04:57:08| |YUKI NO SHINGUN| +|08/01/2022 04:57:08| |TAKKAN BITCHES!!| +|08/01/2022 04:57:08| o7 +|08/01/2022 04:57:09| TOTSUGEKI +|08/01/2022 04:57:10| o7 +|08/01/2022 04:57:10| |im going in| +|08/01/2022 04:57:10| TOTSUGEKI +|08/01/2022 04:57:11| |YUKI NO SHINGUN| +|08/01/2022 04:57:11| |YUKI NO SHINGUN, KOORI O FUNDE| +|08/01/2022 04:57:13| >CHARGETARDS +|08/01/2022 04:57:13| TOTSUGEKI +|08/01/2022 04:57:14| o7 +|08/01/2022 04:57:14| o7 +|08/01/2022 04:57:15| TOTSUGEKI +|08/01/2022 04:57:15| O7 +|08/01/2022 04:57:15| |YUKI NOSHINGUN| +|08/01/2022 04:57:15| anthem +|08/01/2022 04:57:15| TOKKAN +|08/01/2022 04:57:15| |and they all died the end | +|08/01/2022 04:57:15| o7 +|08/01/2022 04:57:16| |the march of fools| +|08/01/2022 04:57:17| o7 +|08/01/2022 04:57:17| |YUKI NO SHINGUN| +|08/01/2022 04:57:17| o7 +|08/01/2022 04:57:18| BANZAI +|08/01/2022 04:57:19| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:57:20| |TONO HEIKA BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +|08/01/2022 04:57:20| |Why does she look like she just did something profound| +|08/01/2022 04:57:20| o7 +|08/01/2022 04:57:21| |I like how the japs make jokes about their own school| +|08/01/2022 04:57:22| o7 +|08/01/2022 04:57:22| |is this the media where alice appears?| +|08/01/2022 04:57:23| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:57:24| |TENNO HEIKA BAANZAIIIIIIIIIIIIIII| +|08/01/2022 04:57:25| |its been an honor and a pleasure miporin| +|08/01/2022 04:57:25| |IS THIS THE WAY BROS| +|08/01/2022 04:57:26| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:57:27| |LIVE FOR TOTSUGEKI. DIE FOR TOTSUGEKI| +|08/01/2022 04:57:27| KAMIKAZE +|08/01/2022 04:57:28| |BAKA DA NE| +|08/01/2022 04:57:31| |LETS FUCKING GOOOOOOOOO| +|08/01/2022 04:57:32| |TENNO HEIKA BANZAI| +|08/01/2022 04:57:33| KAMIKAZE +|08/01/2022 04:57:33| BANZAI! +|08/01/2022 04:57:33| TOTSUGEKI +|08/01/2022 04:57:35| |the scone has decided to break itself| +|08/01/2022 04:57:37| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:57:37| |Either go all in or die| +|08/01/2022 04:57:38| |TENNA HEIKA BANZAI| +|08/01/2022 04:57:42| |haha funny quote darj| +|08/01/2022 04:57:42| |>can't hit stationary target| +|08/01/2022 04:57:42| TOTSUGEKI +|08/01/2022 04:57:44| |Can I enjoy your taste Pekoe?| +|08/01/2022 04:57:46| ! +|08/01/2022 04:57:49| SANDWIC? +|08/01/2022 04:57:49| |NIPPON BANZAIII| +|08/01/2022 04:57:50| |should've won here| +|08/01/2022 04:57:52| |I want to enjoy pekoe's taste....| +|08/01/2022 04:57:52| ??????????????? +|08/01/2022 04:57:52| IDIOTS +|08/01/2022 04:57:53| |shut the fuck up darj| +|08/01/2022 04:57:53| |TENNO HEIKA BANZAIIIIIII| +|08/01/2022 04:57:55| |imagine enjoying Darj's taste| +|08/01/2022 04:57:55| >? +|08/01/2022 04:57:57| |who drives darj's tank?| +|08/01/2022 04:57:57| |churchill is cat| +|08/01/2022 04:57:58| ???????????????????? +|08/01/2022 04:58:03| |YAMI WO KIRISAKU OPEN FIRE| +|08/01/2022 04:58:03| |Based Darjeeling| +|08/01/2022 04:58:05| |FUKUDA UOOOOOOOOOOOOOHHHHHHHHHHH| +|08/01/2022 04:58:06| |haha totsubakas getting rekt| +|08/01/2022 04:58:06| |Delicious Darjeeling | +|08/01/2022 04:58:07| |SEX WITH PANZERS| +|08/01/2022 04:58:08| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:58:09| |coward finnish ur charge!| +|08/01/2022 04:58:10| |Anon dies in a bad trip| +|08/01/2022 04:58:10| |ara ara| +|08/01/2022 04:58:11| o7 +|08/01/2022 04:58:11| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:58:16| |>Doubting the BANZAI| +|08/01/2022 04:58:18| |GRORIOUS CHARGE| +|08/01/2022 04:58:20| TOTSUGEKIDIOTS +|08/01/2022 04:58:20| kek +|08/01/2022 04:58:20| |ONE MILLION CHIHATANS| +|08/01/2022 04:58:21| NAGURAAAAA +|08/01/2022 04:58:21| TENNO +|08/01/2022 04:58:22| |TOTSUGEKI | +|08/01/2022 04:58:24| retard +|08/01/2022 04:58:25| BANZAI +|08/01/2022 04:58:25| Owned +|08/01/2022 04:58:26| HEIKA +|08/01/2022 04:58:28| CUTE +|08/01/2022 04:58:28| UOOOOOOOOOOOOHHHHHHHHHH +|08/01/2022 04:58:31| TOTSUGEKI! +|08/01/2022 04:58:32| BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 04:58:33| HARU-CHAN +|08/01/2022 04:58:34| |DON'T TOTSUGEKI | +|08/01/2022 04:58:34| homu +|08/01/2022 04:58:35| FUKUDA +|08/01/2022 04:58:35| TOTUSGEKI +|08/01/2022 04:58:37| |TENNOU HEIKA BANZAI| +|08/01/2022 04:58:38| |"quit throwing!"| +|08/01/2022 04:58:38| |STOP RIGHT THERE| +|08/01/2022 04:58:39| CUNNY +|08/01/2022 04:58:41| |TOTSUGEKI | +|08/01/2022 04:58:43| |Totsugeki is the pinnacle of sensha-do| +|08/01/2022 04:58:43| |braids make good blowjob handles| +|08/01/2022 04:58:45| |DAMN SUICIDAL CHILD| +|08/01/2022 04:58:46| |FOLLOW FUCKING ORDERS YOU NIP CUNT| +|08/01/2022 04:58:49| |but TRADITION| +|08/01/2022 04:58:51| |CUTE ONAHOLE| +|08/01/2022 04:58:52| |cute and funny panzer operator| +|08/01/2022 04:58:52| |Keep hydrated anon kudasai| +|08/01/2022 04:58:53| |Sodonaka STFU| +|08/01/2022 04:58:54| |DAMN KID| +|08/01/2022 04:58:54| |For all the talk about sandwiches Darjeeling spends too much time in tank, instad of kitchen| +|08/01/2022 04:58:54| |THATS THE RULES| +|08/01/2022 04:58:57| ENTER +|08/01/2022 04:58:58| |KATYUSHA INBOUND| +|08/01/2022 04:59:01| |LETS GOOOOOOOO GREMLIM BROS| +|08/01/2022 04:59:01| URAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:02| KATYUSHA!!! +|08/01/2022 04:59:02| |LET'S FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 04:59:03| |IT"S SHAMEFUL TO LLIVE| +|08/01/2022 04:59:04| KATYUSHA +|08/01/2022 04:59:04| |>rules lawyers| +|08/01/2022 04:59:05| |HERE IT IS AGAIN| +|08/01/2022 04:59:05| |Did Fuka's voice change between movies?| +|08/01/2022 04:59:08| |Just like my World of Tanks| +|08/01/2022 04:59:08| |ITS TIME| +|08/01/2022 04:59:08| |Kept you waiting huh?| +|08/01/2022 04:59:09| |>55,000 T-34s arrive| +|08/01/2022 04:59:10| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:10| YPA +|08/01/2022 04:59:11| UUUUUURRRRAAAAAAAAAAAAAAAA +|08/01/2022 04:59:12| |>BANZAI BLOCKED| +|08/01/2022 04:59:14| |I ORDER you to stay strong and remain with the stream, Anon!| +|08/01/2022 04:59:14| UUUUURRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:14| |K L A R A| +|08/01/2022 04:59:15| |The Sovishits are here| +|08/01/2022 04:59:15| |PRESS R TO REPORT DISSIDENTS| +|08/01/2022 04:59:16| URAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:17| |CRUSH CAPITALISM!!| +|08/01/2022 04:59:18| |KEPT YOU WAITING HUH?| +|08/01/2022 04:59:18| |MY WIIIIIIIIIIIIIIIIIIIIVES AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 04:59:19| |Metal Gear?!| +|08/01/2022 04:59:20| ENTER +|08/01/2022 04:59:20| YPAAAAAAAAA +|08/01/2022 04:59:20| ypppppppppppppaaaaaaaaaaaaaaaaaaaaaaaaaaaa +|08/01/2022 04:59:20| |kept you waiting huh| +|08/01/2022 04:59:21| |KEPT YOU WAITING, HUH?| +|08/01/2022 04:59:21| UUUUUUUUUUURRRRAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:24| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:26| UYRAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:26| |how were a few shitty tanks holding off pravda?| +|08/01/2022 04:59:26| |IF ONLY LENIN COULD SEE US NOW| +|08/01/2022 04:59:27| |what the fuck are they saying| +|08/01/2022 04:59:27| KLARA +|08/01/2022 04:59:28| SUMIPEEEEEEEEEEEEEEEEEEE +|08/01/2022 04:59:29| |What Metal Gear?| +|08/01/2022 04:59:29| |SPEAK JAPANESE| +|08/01/2022 04:59:29| DEKINAI +|08/01/2022 04:59:30| |Anu cheeki breeki iv damke| +|08/01/2022 04:59:31| |>ooari gets shafted with Totsubakas| +|08/01/2022 04:59:32| |Russian Larpers| +|08/01/2022 04:59:32| |fuka is ear cancer| +|08/01/2022 04:59:33| |Glorious russian| +|08/01/2022 04:59:34| |>RUSSIAN BIAS WORLD OF TANKS| +|08/01/2022 04:59:35| |CYKA BLYAD| +|08/01/2022 04:59:35| |PA RUSSKOM GOVORI, PA RUSSKOM| +|08/01/2022 04:59:38| |Klara best girl| +|08/01/2022 04:59:39| |who is driving| +|08/01/2022 04:59:40| |CYKA BLYAT| +|08/01/2022 04:59:40| |NIHONGO DE HANASHI NASAI YO| +|08/01/2022 04:59:40| DEKINAI +|08/01/2022 04:59:40| >tetris +|08/01/2022 04:59:40| |REMEMBER NO RUSSIAN| +|08/01/2022 04:59:43| |YOU WILL NEVER SPEAK JAPANESE| +|08/01/2022 04:59:44| |BLYADD DDDDDDDD:| +|08/01/2022 04:59:44| |NIHONGO DE| +|08/01/2022 04:59:45| CYKA +|08/01/2022 04:59:46| |CYKA BLYAT| +|08/01/2022 04:59:50| sumirebros +|08/01/2022 04:59:54| HETZER +|08/01/2022 04:59:55| |BAKAHIP WOOOOOOOOO| +|08/01/2022 04:59:56| |God the blonde one is beautiful | +|08/01/2022 04:59:56| BAKAHIP +|08/01/2022 04:59:56| |DISENGAGING THE LIMITERS| +|08/01/2022 04:59:57| KANI +|08/01/2022 04:59:58| |MY BAKA WIFE| +|08/01/2022 04:59:59| CUNNY? +|08/01/2022 04:59:59| BAKAHIP +|08/01/2022 05:00:00| BAKAHIP!!!!! +|08/01/2022 05:00:01| ROSEHIPPU +|08/01/2022 05:00:07| ROSEHIP +|08/01/2022 05:00:08| ROSEHIP +|08/01/2022 05:00:08| |HIP TIME| +|08/01/2022 05:00:11| |Crusaderbros... we're fast| +|08/01/2022 05:00:11| |IS BAKAHIP irish or scottish?| +|08/01/2022 05:00:11| KANI +|08/01/2022 05:00:15| |REV UP THAT 2JZGTE| +|08/01/2022 05:00:17| |i swear to fucking god if you tall bitches speak russian i'm gonna do nothing about it because i'm a midget | +|08/01/2022 05:00:17| |gas gas gas| +|08/01/2022 05:00:17| |Rosehip is pretty cool not gonna lie| +|08/01/2022 05:00:18| |HIGH BOOST ALL THE TIME WITH ROSEHIP| +|08/01/2022 05:00:18| Yes +|08/01/2022 05:00:19| |I never realised rosehip wasn't even introduced yet| +|08/01/2022 05:00:23| |IMAGINE ROSEHIPS SWEAT IN YOUR TEA HAHAHA| +|08/01/2022 05:00:26| |SORE GA CHIHATAN| +|08/01/2022 05:00:36| chansu +|08/01/2022 05:00:36| |>nishi's slight cleavage| +|08/01/2022 05:00:37| HOBOS +|08/01/2022 05:00:38| |WARERA WA CHIHATAN| +|08/01/2022 05:00:38| :DDDDDDDDDDDDDDDD +|08/01/2022 05:00:40| :DDDDDDDDDDD +|08/01/2022 05:00:41| HOBO +|08/01/2022 05:00:42| chansu +|08/01/2022 05:00:42| ???? +|08/01/2022 05:00:42| |Imagine retreating to brits or russians| +|08/01/2022 05:00:42| :DDDDDDDDDDDDD +|08/01/2022 05:00:43| hobros.... +|08/01/2022 05:00:44| :DDDDDDDDD +|08/01/2022 05:00:46| |BENIS :DDDDDDDDDDDDDD| +|08/01/2022 05:00:47| :DDD +|08/01/2022 05:00:48| |FUG :DDDDD| +|08/01/2022 05:00:48| |that strum| +|08/01/2022 05:00:49| :------DDDDDD +|08/01/2022 05:00:50| |CHANCE TIME| +|08/01/2022 05:00:51| HOBOS +|08/01/2022 05:00:51| :DDDDDDDDDDDD +|08/01/2022 05:00:51| EBIN +|08/01/2022 05:00:53| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:00:54| CHANCEO +|08/01/2022 05:00:54| SOUL +|08/01/2022 05:00:55| |Humans are sinful and stupid| +|08/01/2022 05:00:57| |FUGGG :DDDD| +|08/01/2022 05:01:01| :DDDDDDD +|08/01/2022 05:01:05| |KOCCHI OKCCHI | +|08/01/2022 05:01:06| |fucking thrower team| +|08/01/2022 05:01:11| |You are never more thana mile from a Finn| +|08/01/2022 05:01:14| |What does unlimited dan| +|08/01/2022 05:01:15| |Some advisor on the staff actually played kantele in one of the interviews| +|08/01/2022 05:01:15| |GOOCHI GOOCHI| +|08/01/2022 05:01:16| |TIME TO DESTROY THE TOWN| +|08/01/2022 05:01:17| |Azusa "Salmiakki Remover" Sawa| +|08/01/2022 05:01:19| |chi ha tan reported| +|08/01/2022 05:01:23| |what does unlimited danmaku do?| +|08/01/2022 05:01:27| are? +|08/01/2022 05:01:29| |mika salo is somehow responsible| +|08/01/2022 05:01:29| |removes the limiter| +|08/01/2022 05:01:30| |it makes mustad gas| +|08/01/2022 05:01:30| ZOREEE +|08/01/2022 05:01:31| |TOTSUGEKI KANYOU| +|08/01/2022 05:01:31| |It unlimits your danmaku| +|08/01/2022 05:01:34| chihantan +|08/01/2022 05:01:35| |Unlimites thedakku| +|08/01/2022 05:01:37| |it makes the danmaku unlimited| +|08/01/2022 05:01:37| |CARBON COATED BUILDINGS| +|08/01/2022 05:01:40| SKRRRRT +|08/01/2022 05:01:44| |who the fuck is dan maku| +|08/01/2022 05:01:44| |Unlimited autism | +|08/01/2022 05:01:45| |It spreads the danmaku to the very botton when there's a lot of spam like DUCE| +|08/01/2022 05:01:45| |>that drift| +|08/01/2022 05:01:49| |GAS GAS GAS| +|08/01/2022 05:01:50| |ZA DONBAS| +|08/01/2022 05:01:52| |Where's that one guy's shop. I think he needs another one. | +|08/01/2022 05:01:52| |>hippo team| +|08/01/2022 05:01:52| |turn unlimited danmaku on and enjoy when duce comes on screen| +|08/01/2022 05:01:56| fukt +|08/01/2022 05:01:56| |rosehip yes| +|08/01/2022 05:01:59| |ive only seen it at the bottom during anzio OVA| +|08/01/2022 05:02:00| |BAKAHIP IS HERE| +|08/01/2022 05:02:00| |DONBASS I| +|08/01/2022 05:02:01| |>charge the enemy you'll be fine| +|08/01/2022 05:02:01| |I finally had enough Alcohol to disable my self awareness center in the brain| +|08/01/2022 05:02:04| |F-ZERO grinding speedhax| +|08/01/2022 05:02:05| |Der Film is such a blessing| +|08/01/2022 05:02:06| |duce is the strongest| +|08/01/2022 05:02:09| |CRIMEA IS CHINESE| +|08/01/2022 05:02:10| |tl note: danmaku means 弾幕| +|08/01/2022 05:02:16| |Der Film | +|08/01/2022 05:02:17| |tanks tl | +|08/01/2022 05:02:20| |Taiwan je Srbija| +|08/01/2022 05:02:21| |Danmaku means bullet hell| +|08/01/2022 05:02:22| |KOSOVO BELONGS TO ARGENTINE| +|08/01/2022 05:02:23| >BAITED +|08/01/2022 05:02:24| |What does that even mean Miho| +|08/01/2022 05:02:31| |por favor| +|08/01/2022 05:02:32| |>France is Algerian| +|08/01/2022 05:02:33| wut +|08/01/2022 05:02:35| |Very tired anon here about to shit in a bottle AMA| +|08/01/2022 05:02:36| |Alexander was Romanian| +|08/01/2022 05:02:37| |Danmaku is moving mtoi fat, mny drunk brain can't kleep up| +|08/01/2022 05:02:41| |imagine a guppie school shooting| +|08/01/2022 05:02:44| |LET ME IN YOU JAPS| +|08/01/2022 05:02:48| |Will you be posting a picture of the bottle?| +|08/01/2022 05:02:48| |post pics shitbottle-kun| +|08/01/2022 05:02:49| |Better be at least a Gatorade bottle| +|08/01/2022 05:02:53| |puro pinche rosehip| +|08/01/2022 05:02:55| |HANA PUT DOWN THE GUN!| +|08/01/2022 05:02:57| |guppie school shooting would require at the very least a PTRD| +|08/01/2022 05:02:59| |They got this| +|08/01/2022 05:03:01| |>M3 bros| +|08/01/2022 05:03:03| AZUSA +|08/01/2022 05:03:03| |OPERATION REAR ENTRY| +|08/01/2022 05:03:06| bunnies +|08/01/2022 05:03:08| |i think ill be dead by the time we start finales lads| +|08/01/2022 05:03:13| KARINA +|08/01/2022 05:03:13| L +|08/01/2022 05:03:15| |don't worry saki saw a butterfl| +|08/01/2022 05:03:15| |Can't shoot carbon coated schoolgirls| +|08/01/2022 05:03:17| |Hitler was, may God forgive me for uttering this word, Filipino| +|08/01/2022 05:03:18| rip +|08/01/2022 05:03:18| bonk +|08/01/2022 05:03:18| |RUN AWAY | +|08/01/2022 05:03:18| |Nonna gives 0 shits| +|08/01/2022 05:03:19| |bunny cunnies....| +|08/01/2022 05:03:19| poke +|08/01/2022 05:03:21| |NONNA IS ICE COLD| +|08/01/2022 05:03:21| DERAILED +|08/01/2022 05:03:23| CLANG +|08/01/2022 05:03:25| |Has someone drunk only water?| +|08/01/2022 05:03:25| dong +|08/01/2022 05:03:25| STOPPU +|08/01/2022 05:03:26| UYRAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:03:27| TAMED +|08/01/2022 05:03:29| |BASED NONNA| +|08/01/2022 05:03:30| BUTTERFLY!!!!!!! +|08/01/2022 05:03:31| choucho +|08/01/2022 05:03:32| |chou chou| +|08/01/2022 05:03:32| SAKI!!!!!!!!!!!!!!!!! +|08/01/2022 05:03:33| butterfly +|08/01/2022 05:03:33| |CHO CGHO| +|08/01/2022 05:03:34| ONORE~ +|08/01/2022 05:03:35| Chouchou +|08/01/2022 05:03:37| CHOUCHOU +|08/01/2022 05:03:37| chouchou +|08/01/2022 05:03:37| BUTTERFLY +|08/01/2022 05:03:38| |Cute Autismo| +|08/01/2022 05:03:38| |MOSURA WA MOSURA| +|08/01/2022 05:03:39| |AZUSA NO| +|08/01/2022 05:03:39| SAKI +|08/01/2022 05:03:39| genius +|08/01/2022 05:03:39| ??????? +|08/01/2022 05:03:39| F +|08/01/2022 05:03:40| |LOOKING AT WALKING TRASH| +|08/01/2022 05:03:40| |SHE IS FUCKING DEAD| +|08/01/2022 05:03:40| |Nonna has no mercy| +|08/01/2022 05:03:41| chouchou +|08/01/2022 05:03:41| CUTEEEEEEEE! +|08/01/2022 05:03:42| |BASED SAKI| +|08/01/2022 05:03:43| CHOUCHOU +|08/01/2022 05:03:43| butterfry +|08/01/2022 05:03:44| chinchin +|08/01/2022 05:03:45| DEAD +|08/01/2022 05:03:45| saki? +|08/01/2022 05:03:45| |>nonna kills the rabbit team| +|08/01/2022 05:03:46| |CHOUCHOU :D| +|08/01/2022 05:03:47| butterfly +|08/01/2022 05:03:48| ??????????????????????????????????????? +|08/01/2022 05:03:48| NOTHING +|08/01/2022 05:03:48| CHOUCHOU +|08/01/2022 05:03:49| |based nonna| +|08/01/2022 05:03:50| chouchou +|08/01/2022 05:03:50| |BUNNY CUNNY| +|08/01/2022 05:03:50| |Remember Chouchou fro; katanagatari ;_;?| +|08/01/2022 05:03:51| |I can't believe the rabbits are all fucking dead| +|08/01/2022 05:03:53| autism +|08/01/2022 05:03:53| DEAD +|08/01/2022 05:03:53| |ALLES KLAR| +|08/01/2022 05:03:54| |ALLES KLAR| +|08/01/2022 05:03:54| |saki is pekka?!?!?| +|08/01/2022 05:03:54| |SAKI TANOSHII| +|08/01/2022 05:03:55| ARESKRAR:-DDDD +|08/01/2022 05:03:56| |CARBON COATING| +|08/01/2022 05:03:57| |What level of autism is this| +|08/01/2022 05:03:57| |ALLES KLAR| +|08/01/2022 05:03:57| |What is amsaki>?\| +|08/01/2022 05:03:58| areskrar +|08/01/2022 05:04:00| |Sakinknew they would lose either way| +|08/01/2022 05:04:00| |>it was nothing| +|08/01/2022 05:04:03| ALLESKLAR +|08/01/2022 05:04:04| |ALLES KLAR| +|08/01/2022 05:04:06| OH-WAI?! +|08/01/2022 05:04:06| |DON"T WORRY THEY ARE CABON COATED| +|08/01/2022 05:04:06| |ERWIN DEUTCH??| +|08/01/2022 05:04:07| >nothing +|08/01/2022 05:04:08| |UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE | +|08/01/2022 05:04:10| |Reminder: The StuGIII Crew are my wives.| +|08/01/2022 05:04:13| |Can carbon coated girls get pregnant?| +|08/01/2022 05:04:14| |DAT SOUND| +|08/01/2022 05:04:14| Klar(a) +|08/01/2022 05:04:15| |how many lolis died in early days| +|08/01/2022 05:04:15| UTE +|08/01/2022 05:04:18| |Mitä vittua mikä pekka häh| +|08/01/2022 05:04:18| |ALLAHU Klar| +|08/01/2022 05:04:21| |anon's cute wives| +|08/01/2022 05:04:24| |carbon coated wombs| +|08/01/2022 05:04:26| |NICE SHOT| +|08/01/2022 05:04:27| |no lolis died during the filming of this film| +|08/01/2022 05:04:28| |do it| +|08/01/2022 05:04:30| |you cannot have penetrative sex with guppies (they are carbon coated)| +|08/01/2022 05:04:30| |The carbon coating makes them extra fertile | +|08/01/2022 05:04:31| gaymers +|08/01/2022 05:04:33| PEW +|08/01/2022 05:04:33| |ONLY WITH CABON COATED SPERM| +|08/01/2022 05:04:34| |totsugeki | +|08/01/2022 05:04:34| |Visible confusion| +|08/01/2022 05:04:35| |the jobbers did it| +|08/01/2022 05:04:36| TOTSUGEKI?! +|08/01/2022 05:04:37| jesus +|08/01/2022 05:04:38| |ANGERY YELLING| +|08/01/2022 05:04:39| totsugeki? +|08/01/2022 05:04:43| |WHERE'S THE TOTSUGEKI| +|08/01/2022 05:04:43| |SPEAK JAPANESE| +|08/01/2022 05:04:44| huh +|08/01/2022 05:04:45| |speak japanese| +|08/01/2022 05:04:46| |Anzu can still handjob me| +|08/01/2022 05:04:46| TOTSUGEKI? +|08/01/2022 05:04:46| |ah blhasdf mn sasdfy zxldkvj asdf| +|08/01/2022 05:04:47| |i want to steal her hat| +|08/01/2022 05:04:48| |I WANT TO IMPREGNATE SAORIN| +|08/01/2022 05:04:49| |SEX WITH CARBON COATED KATYUSHA| +|08/01/2022 05:04:50| |My seed can pentrate even carbon coating| +|08/01/2022 05:04:50| |NIHONGE DE HANASHI| +|08/01/2022 05:04:51| |WOW RUSSIAN JUST LIKE IN MY METRO GAMES| +|08/01/2022 05:04:54| KLARA +|08/01/2022 05:04:54| |TOTSUGEKI WHEN| +|08/01/2022 05:04:55| |REMEMBER NO RUSSIAN| +|08/01/2022 05:04:56| |Is there something that isn't carbon coated in this show?| +|08/01/2022 05:05:00| bchat +|08/01/2022 05:05:02| |ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP | +|08/01/2022 05:05:02| ENTER +|08/01/2022 05:05:02| |THE BAKA IS HERE DESUWA!| +|08/01/2022 05:05:03| |I7m so fucking late| +|08/01/2022 05:05:03| |BASED ROSEHIP| +|08/01/2022 05:05:04| PRIYETY +|08/01/2022 05:05:05| |DESU WA| +|08/01/2022 05:05:05| BAKAHIP +|08/01/2022 05:05:05| |So you could - in theory - kill a guppie if you use semen-coated bullets?| +|08/01/2022 05:05:06| slagmode +|08/01/2022 05:05:06| |cyka blyad tovarishche| +|08/01/2022 05:05:07| |WOOOO SPEED DAEMON| +|08/01/2022 05:05:07| BAKAHIP +|08/01/2022 05:05:08| 日本語でおk +|08/01/2022 05:05:09| DESUWA +|08/01/2022 05:05:10| |>TFW no Klara gf| +|08/01/2022 05:05:10| |Who's the redhead?| +|08/01/2022 05:05:11| |Baka baka baka| +|08/01/2022 05:05:13| speedu +|08/01/2022 05:05:13| |SPEED I AM SPEED| +|08/01/2022 05:05:14| |ROSEHIP ROSEHIP ROSEHIP | +|08/01/2022 05:05:16| mochirondegozaimasu +|08/01/2022 05:05:20| SPEEEEEEEEEEEEEEEEEEEEEEEEEEEEED +|08/01/2022 05:05:20| |DESU WA| +|08/01/2022 05:05:20| DORIFTO +|08/01/2022 05:05:21| |rosehip > dvce| +|08/01/2022 05:05:23| BAKAHIP +|08/01/2022 05:05:24| |best bong coming through desuwa| +|08/01/2022 05:05:24| |rosehip tea is unironaclly great| +|08/01/2022 05:05:25| |THE QUEEN OF SPEED HAS ARRIVED!| +|08/01/2022 05:05:26| |haha yeah| +|08/01/2022 05:05:26| |Crusaders go BRRRRRRTTT| +|08/01/2022 05:05:28| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:05:29| DESU-WA +|08/01/2022 05:05:29| |GOTTA GO FAST| +|08/01/2022 05:05:31| |duce > rosehip| +|08/01/2022 05:05:31| DEKINAI +|08/01/2022 05:05:32| |BROS IT'S BEEN 25 SECONDS SINCE THE LAST TOTSUGEKI WTF| +|08/01/2022 05:05:32| |ROSEHIP FOR LEWD SWEATY HIGHSPEED | +|08/01/2022 05:05:33| |The Boco Museum wasn't carbon coated.| +|08/01/2022 05:05:35| |Push myself | +|08/01/2022 05:05:37| |ANZUU IS ALWAYS EATING WTF| +|08/01/2022 05:05:38| |Yes. The problem is that their aren't enough males in GuP to harvest all the semen.| +|08/01/2022 05:05:39| FASTER +|08/01/2022 05:05:40| |stupid sexy Anzu...| +|08/01/2022 05:05:44| |LET'S GET THIS PARTY STARTED| +|08/01/2022 05:05:44| |O S T| +|08/01/2022 05:05:45| |Rosehip is high-speed low-drag| +|08/01/2022 05:05:47| ANZUU +|08/01/2022 05:05:47| |why is anzu so sexual| +|08/01/2022 05:05:47| |ANZUU IS ALWAYS EATING BUT SHE DOESNT GET BIGGER| +|08/01/2022 05:05:48| |Anzu potatos are unironically great| +|08/01/2022 05:05:50| |TL note: Anzu means pig| +|08/01/2022 05:05:51| |HIGH SPEED HIGH SPEED| +|08/01/2022 05:05:52| |HIGH SPEED LOW DRAG| +|08/01/2022 05:05:54| |she's FLAT| +|08/01/2022 05:05:54| *pop* +|08/01/2022 05:05:55| DESUWA +|08/01/2022 05:05:55| |Anzu trying her hardest to get taller| +|08/01/2022 05:05:56| |Yeah rosehip is great but let's not get ahead ourselves here non-Dvce people| +|08/01/2022 05:05:58| |THANKS TL| +|08/01/2022 05:05:58| bang +|08/01/2022 05:06:02| |Some talk of Alexander, and some of Hercules| +|08/01/2022 05:06:05| |CAM ON INGERLAND| +|08/01/2022 05:06:06| |NONSTOP SEX KEEPS ANZU SLIM| +|08/01/2022 05:06:08| |skill issue| +|08/01/2022 05:06:09| |Does rosehip drink tea or coffee?| +|08/01/2022 05:06:10| |ZA QUEEN OF SUPEEDOO| +|08/01/2022 05:06:11| |Anzu's bewlly is a calory devouring reactor| +|08/01/2022 05:06:17| |she puts redbull in her tea| +|08/01/2022 05:06:18| |nonstop sex with who?????| +|08/01/2022 05:06:19| |SCOAR SUM FACKEN TANKS| +|08/01/2022 05:06:19| |rosehip drinks gamer piss| +|08/01/2022 05:06:21| |Is vanilla a character?| +|08/01/2022 05:06:23| |THAT'S A FUCKING HOSPITAL| +|08/01/2022 05:06:29| nyaaa +|08/01/2022 05:06:33| |KO U TA I| +|08/01/2022 05:06:33| NYAAA +|08/01/2022 05:06:36| TOTSUGEKI? +|08/01/2022 05:06:36| |FUCK THE HOSPITAL| +|08/01/2022 05:06:37| |KO U TA I| +|08/01/2022 05:06:37| |imagine being in gloriana and you get stuck with cranberry| +|08/01/2022 05:06:38| |We destroyhospitals in senshado| +|08/01/2022 05:06:38| |TO TSU GE KI| +|08/01/2022 05:06:39| TO-TSU-GE-KI +|08/01/2022 05:06:39| |KO U TA I| +|08/01/2022 05:06:39| |TO TSU GE KI?!| +|08/01/2022 05:06:40| TOTSUGEKI +|08/01/2022 05:06:41| TOTSUGEKI +|08/01/2022 05:06:41| |Me meanwhile whill gain atleast 3 kg this weakend| +|08/01/2022 05:06:41| |fucking up local infrastructure is the inner dream of every man| +|08/01/2022 05:06:41| TOTSUGEKI +|08/01/2022 05:06:41| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:06:42| TOTSUGEKI! +|08/01/2022 05:06:43| |TO TSU GE KI| +|08/01/2022 05:06:43| TOTSUGEKI +|08/01/2022 05:06:43| tonsukeki! +|08/01/2022 05:06:44| baka +|08/01/2022 05:06:44| |capable soldier| +|08/01/2022 05:06:45| |TO TSU GE KI| +|08/01/2022 05:06:46| 突撃!! +|08/01/2022 05:06:46| TO-TSU-GE-KI +|08/01/2022 05:06:46| TOT-SU-GE-KI +|08/01/2022 05:06:47| TOTSUGEKI +|08/01/2022 05:06:47| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:06:48| LMAO +|08/01/2022 05:06:48| wwwwwwwwwwww +|08/01/2022 05:06:49| |TO TSU GE KI| +|08/01/2022 05:06:49| BAKA +|08/01/2022 05:06:50| TOTSUGEKI! +|08/01/2022 05:06:50| >>>> +|08/01/2022 05:06:51| TOTSUGEKI!!!!!!! +|08/01/2022 05:06:51| |TOT SU GE KI| +|08/01/2022 05:06:51| TOTSUGEKI +|08/01/2022 05:06:51| |CUTE RETARD| +|08/01/2022 05:06:51| |TO TSU GE KI| +|08/01/2022 05:06:52| |TO TSU GE KI| +|08/01/2022 05:06:52| 吶喊 +|08/01/2022 05:06:52| TOTSUGEKI +|08/01/2022 05:06:53| TOTSUGEKI? +|08/01/2022 05:06:53| TOKKAN +|08/01/2022 05:06:53| |TOTSUGEKI | +|08/01/2022 05:06:54| 吶喊 +|08/01/2022 05:06:54| Retreat? +|08/01/2022 05:06:54| |BANZAI! BANZAI!| +|08/01/2022 05:06:55| RIP +|08/01/2022 05:06:55| |TO TSU GE KI| +|08/01/2022 05:06:55| |what was her plan there?| +|08/01/2022 05:06:56| |TOT SU GE KI| +|08/01/2022 05:06:56| TOKKAN +|08/01/2022 05:06:56| o7 +|08/01/2022 05:06:57| |how do muzzle brakes on a tank work?| +|08/01/2022 05:06:57| DUMBASS +|08/01/2022 05:06:58| TOTSUGEKI +|08/01/2022 05:06:58| RETARDED +|08/01/2022 05:06:58| |TO TSU GE KI| +|08/01/2022 05:06:59| TENNO +|08/01/2022 05:06:59| |what a fucking jobber| +|08/01/2022 05:06:59| |Not a capable soldier| +|08/01/2022 05:07:00| |>not a capable soldier| +|08/01/2022 05:07:00| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 05:07:01| REKT +|08/01/2022 05:07:02| |>NOT A CAPABLE SOLDIER| +|08/01/2022 05:07:02| BANZAI +|08/01/2022 05:07:02| |Not a capable soldier| +|08/01/2022 05:07:02| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 05:07:03| BANZAI +|08/01/2022 05:07:03| O7 +|08/01/2022 05:07:03| RETARD +|08/01/2022 05:07:03| TO-KAN +|08/01/2022 05:07:03| TOKKAN! +|08/01/2022 05:07:03| |retard nip is good| +|08/01/2022 05:07:03| AITAAA +|08/01/2022 05:07:04| Ba~ka +|08/01/2022 05:07:04| |TENNO HEIKA BANZAI| +|08/01/2022 05:07:05| retard +|08/01/2022 05:07:06| jobber +|08/01/2022 05:07:06| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 05:07:06| NYAAA +|08/01/2022 05:07:07| |What the fuck was she thinking| +|08/01/2022 05:07:07| |let her die| +|08/01/2022 05:07:09| |cute and funny| +|08/01/2022 05:07:10| |shamefur dispray| +|08/01/2022 05:07:10| TAEKO +|08/01/2022 05:07:12| |SHAMEFUR DISPRAY| +|08/01/2022 05:07:12| |SHAMEFUR DISPRAY| +|08/01/2022 05:07:16| |>NOT a capable soldier| +|08/01/2022 05:07:16| |TENNO HEIKA BANZAI!!!!| +|08/01/2022 05:07:17| STOPPU +|08/01/2022 05:07:18| |>NOT A CAPABLE SOLDIER| +|08/01/2022 05:07:19| REPORTED +|08/01/2022 05:07:20| |SHAMEFURU DISPRAY| +|08/01/2022 05:07:20| TAEKO +|08/01/2022 05:07:23| SHAMEFUR +|08/01/2022 05:07:24| |How did she survive that?| +|08/01/2022 05:07:30| Banzai +|08/01/2022 05:07:30| BARA-KETSU +|08/01/2022 05:07:30| |>gets speeding ticket| +|08/01/2022 05:07:31| BANZAI +|08/01/2022 05:07:32| |hummng nonna| +|08/01/2022 05:07:35| |good thing her drink just disappears| +|08/01/2022 05:07:35| |what the fuck is that red shit she's drinking| +|08/01/2022 05:07:36| |Is SPEEDSTER a title| +|08/01/2022 05:07:39| |I NEED SPEED| +|08/01/2022 05:07:40| |I love whatever retard idea I have to post there will be a least 2 other anons with the same idea| +|08/01/2022 05:07:40| |she speedy| +|08/01/2022 05:07:41| |ULTRA LATE BRAKINGGU!| +|08/01/2022 05:07:42| |GOOD SHOOTING| +|08/01/2022 05:07:43| realistic +|08/01/2022 05:07:43| |Miho the God| +|08/01/2022 05:07:44| |where does she get all the tea after spilling ti| +|08/01/2022 05:07:46| UTE +|08/01/2022 05:07:47| SPEEDSTER +|08/01/2022 05:07:52| TROLLED +|08/01/2022 05:07:54| |LEOPON o7| +|08/01/2022 05:07:54| |Press F for the Posche| +|08/01/2022 05:07:56| |tea = spilled| +|08/01/2022 05:07:57| |I want to fuck the shit out of Roship's driver| +|08/01/2022 05:07:57| |How do these tracks even survive| +|08/01/2022 05:07:57| |Fucking german shitbox| +|08/01/2022 05:07:58| |>tea is pink >hair is also pink| +|08/01/2022 05:07:59| |was that a wz34?| +|08/01/2022 05:07:59| dorifto +|08/01/2022 05:08:00| OHOHOHHOOHHO +|08/01/2022 05:08:00| F +|08/01/2022 05:08:01| |DESU WA| +|08/01/2022 05:08:01| OHHHHHHHHHHOOOOOOOOHOHOHOHO +|08/01/2022 05:08:01| F +|08/01/2022 05:08:02| F +|08/01/2022 05:08:02| |DESU WA| +|08/01/2022 05:08:03| |speedster is our word, but you can say speedsta| +|08/01/2022 05:08:04| |I love the fact every idea I post has been posted by at least 2 anons| +|08/01/2022 05:08:05| ohohohohohoh +|08/01/2022 05:08:06| |DESU WA| +|08/01/2022 05:08:09| |carbon coated tracks| +|08/01/2022 05:08:09|  OHOHOHOHOHOHOHO +|08/01/2022 05:08:11| OHOHOHOHOHO +|08/01/2022 05:08:12| |PANZER DRIFT| +|08/01/2022 05:08:12| |The anglerfish is one well oiled machine| +|08/01/2022 05:08:12| desu-wa +|08/01/2022 05:08:14| OHOHOHOHOHO +|08/01/2022 05:08:15| |DESU WA| +|08/01/2022 05:08:15| |ROSEHIPS DRIVER IS AN ABSOLUTE MAD LASS| +|08/01/2022 05:08:16| DESUWA!~ +|08/01/2022 05:08:21| |>well oiled| +|08/01/2022 05:08:23| |get her klara| +|08/01/2022 05:08:27| |rosehip solos her tank| +|08/01/2022 05:08:27| |why isnt her driver a named character| +|08/01/2022 05:08:30| |Sex with klara| +|08/01/2022 05:08:36| |Mako's Drunken Driving is sublime| +|08/01/2022 05:08:38| |I have to pee already| +|08/01/2022 05:08:44| |Me too| +|08/01/2022 05:08:46| |weak bladder| +|08/01/2022 05:08:47| INCOMING +|08/01/2022 05:08:52| |wow the 3D use| +|08/01/2022 05:08:53| |OH N-| +|08/01/2022 05:08:54| |SAME SHOP| +|08/01/2022 05:08:54| |pee in yukari's mouth| +|08/01/2022 05:08:57| |ROSEHIP NOOOOOOO| +|08/01/2022 05:08:57| IGGER +|08/01/2022 05:08:57| |NOT AGAIN| +|08/01/2022 05:08:57| |tfw weak bladder INCOMING| +|08/01/2022 05:08:59| DODODODODODO +|08/01/2022 05:08:59| DODODODODDO +|08/01/2022 05:09:00| |>not having a carbon coated bladder| +|08/01/2022 05:09:00| |ro ro ro ro ro| +|08/01/2022 05:09:01| dododoodododo +|08/01/2022 05:09:01| |This shop IRL got increased business from this show| +|08/01/2022 05:09:02| DODODOODOD +|08/01/2022 05:09:02| DODODOD +|08/01/2022 05:09:02| |LARGE BRIT DESTROYS RUSSIAN FROM BEHIND| +|08/01/2022 05:09:03| |How much stamina would you need to satisfy rosehip| +|08/01/2022 05:09:03| |this shits making me dizzy| +|08/01/2022 05:09:04| DEAD +|08/01/2022 05:09:04| |MA JI DE SU NO| +|08/01/2022 05:09:04| NOOOOOOOOO +|08/01/2022 05:09:04| DED +|08/01/2022 05:09:04| |BASED PROPERTY DAMAGE| +|08/01/2022 05:09:04| |thanks rosehip, very cool| +|08/01/2022 05:09:05| F +|08/01/2022 05:09:06| |they should carbon coat that shop | +|08/01/2022 05:09:06| WEW +|08/01/2022 05:09:08| dumbhip +|08/01/2022 05:09:08| DODODODODOD +|08/01/2022 05:09:09| SPEEEEEED +|08/01/2022 05:09:10| |Lucky bastard| +|08/01/2022 05:09:10| based +|08/01/2022 05:09:11| allah +|08/01/2022 05:09:11| |YES FUCK UP LOCAL INFRASTRUCTURE| +|08/01/2022 05:09:11| >>>>>>> +|08/01/2022 05:09:11| |think of 3D what you will but they use 3D well| +|08/01/2022 05:09:12| |SHE DED| +|08/01/2022 05:09:12| |ROSEHIP NO| +|08/01/2022 05:09:12| F +|08/01/2022 05:09:13| DEAD +|08/01/2022 05:09:14| AGAIN! +|08/01/2022 05:09:14| F +|08/01/2022 05:09:15| |KLARA AND ROSEHIP DEAD| +|08/01/2022 05:09:15| DEAD +|08/01/2022 05:09:15| DEAD +|08/01/2022 05:09:15| DON~ +|08/01/2022 05:09:16| |Rolling in insurance baby| +|08/01/2022 05:09:18| F +|08/01/2022 05:09:19| |I cant believe rosehip and klara are dead| +|08/01/2022 05:09:20| |YES! MY SHOP!| +|08/01/2022 05:09:21| |>crashed, rammed into, exploded cant harm the carbon coating| +|08/01/2022 05:09:24| |>ROOF COLLAPSED| +|08/01/2022 05:09:24| giwtwm +|08/01/2022 05:09:27| |being an insurance broker would be hell| +|08/01/2022 05:09:27| |rosehip killed in a fireball| +|08/01/2022 05:09:33| |>zero causalties| +|08/01/2022 05:09:33| |FUCKING BUFFERING| +|08/01/2022 05:09:35| |Why don't they just carbon coat there infrastructure| +|08/01/2022 05:09:38| |even by gup logic they should be dead| +|08/01/2022 05:09:40| |Guy just lost all his posessions| +|08/01/2022 05:09:40| |This week rosehip fucking crashes and dies| +|08/01/2022 05:09:40| |JUST FUCK THE TOWN UP| +|08/01/2022 05:09:43| |I can't believe Rosehip is fucking dead | +|08/01/2022 05:09:47| |I buffered only once for 1 second| +|08/01/2022 05:09:53| HINA-CHAN +|08/01/2022 05:09:54| HETZER +|08/01/2022 05:09:59| NAPOLI-TURN +|08/01/2022 05:09:59| |>FIXED TURRETS| +|08/01/2022 05:10:01| |GAS GAS GAS| +|08/01/2022 05:10:01| |PREASE HELPU DUCK DONO| +|08/01/2022 05:10:02| |get it, napoli-turn?| +|08/01/2022 05:10:04| |OH SHIT| +|08/01/2022 05:10:04| |>i'm a genius >oh no!| +|08/01/2022 05:10:05| |KAVE-TAN ENTER!| +|08/01/2022 05:10:07| |180 no scope| +|08/01/2022 05:10:09| DORIFUTO +|08/01/2022 05:10:19| |Please destroy my home!| +|08/01/2022 05:10:20| |The StuGIII crew are my wives.| +|08/01/2022 05:10:22| |180 quick scope| +|08/01/2022 05:10:23| |Bro i think your wives just deaded| +|08/01/2022 05:10:25| BUFFERING +|08/01/2022 05:10:28| trickstabbed +|08/01/2022 05:10:29| |>russian internet again| +|08/01/2022 05:10:31| |violating traffic rules| +|08/01/2022 05:10:33| |>babysit a team of retards || >still do decently against a combination of two of the best teams || Oarai is OP as fuck.| +|08/01/2022 05:10:36| BUFFERING +|08/01/2022 05:10:36| |you arent getting out of this one no way| +|08/01/2022 05:10:37| |>imagine buffering| +|08/01/2022 05:10:45| |RIP CIVVIES| +|08/01/2022 05:10:46| |ENTA ENTA MISSION| +|08/01/2022 05:10:49| |cute little tank| +|08/01/2022 05:10:49| |sly dogs| +|08/01/2022 05:10:49| |DO IT| +|08/01/2022 05:10:50| L +|08/01/2022 05:10:50| |sheep led by a lion| +|08/01/2022 05:10:51| bonk +|08/01/2022 05:10:51| rekt +|08/01/2022 05:10:52| |seems dangerous still| +|08/01/2022 05:10:52| |WORLD OF SPG SIGN| +|08/01/2022 05:10:52| |World of SPG| +|08/01/2022 05:10:53| BOMK +|08/01/2022 05:10:54| |>using civvies as cover| +|08/01/2022 05:10:55| |That's enough to kill somebody| +|08/01/2022 05:10:55| F +|08/01/2022 05:10:55| |>non carbon coated audience| +|08/01/2022 05:10:56| |Thank god for her helmet| +|08/01/2022 05:10:56| *BONK* +|08/01/2022 05:10:57| BONK +|08/01/2022 05:10:57| |OARAI SHILLING| +|08/01/2022 05:10:58| |buffered again shit| +|08/01/2022 05:11:00| HAPPY +|08/01/2022 05:11:00| |wtf i never heard this cover before| +|08/01/2022 05:11:02| |CARBON COATED GLASS| +|08/01/2022 05:11:02| |that's a storng ass escalator| +|08/01/2022 05:11:03| w-why +|08/01/2022 05:11:04| |Is this a war crime?| +|08/01/2022 05:11:06| |ED TAIMU!| +|08/01/2022 05:11:06| |lawyer here, using civilians as cover is in fact a war crime| +|08/01/2022 05:11:06| warcrimes.png +|08/01/2022 05:11:07| |The image of bouncing tanks fills my mind| +|08/01/2022 05:11:08| |>he doesn't drive through his local shopping centre| +|08/01/2022 05:11:08| |civilian casualties are OK| +|08/01/2022 05:11:09| |How did she not get decapicitated?| +|08/01/2022 05:11:11| yes +|08/01/2022 05:11:13| |PLAY WORLD OF SPG NOW| +|08/01/2022 05:11:15| deadscalator +|08/01/2022 05:11:15| -DONO +|08/01/2022 05:11:16| |DUCK-DONO DE-ARIMASU| +|08/01/2022 05:11:16| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:11:16| |ENTAH ENTAH MISSION| +|08/01/2022 05:11:25| anzu +|08/01/2022 05:11:27| |If they are enemy civilians then they are enemies too| +|08/01/2022 05:11:27| |THANKS TL| +|08/01/2022 05:11:30| |SUPER MORALS COMMITTEE ATTACK!| +|08/01/2022 05:11:30| BAYBAY +|08/01/2022 05:11:32| |It's time to do "that" | +|08/01/2022 05:11:33| |Guys... where's Duce?| +|08/01/2022 05:11:34| TEAMWORK +|08/01/2022 05:11:35| baby +|08/01/2022 05:11:35| Utep +|08/01/2022 05:11:36| BAYBAYT +|08/01/2022 05:11:36| BABY +|08/01/2022 05:11:36| BAYBEE +|08/01/2022 05:11:36| ownd +|08/01/2022 05:11:37| BABY +|08/01/2022 05:11:38| |niceu baby~| +|08/01/2022 05:11:43| |>that one anon dropping acid in the thread| +|08/01/2022 05:11:45| |chats dying we need dvce back| +|08/01/2022 05:11:46| |THEY'RE BOOSTING| +|08/01/2022 05:11:48| |COOL POV| +|08/01/2022 05:11:51| |Let's trash these steps lmao| +|08/01/2022 05:11:54| Rollercoaster +|08/01/2022 05:11:57| |DOWNHILL TANKERY!| +|08/01/2022 05:11:57| IMAGINE +|08/01/2022 05:12:00| |Nonna: The things I put up with for that sweet loli cunny| +|08/01/2022 05:12:01| |last time i dropped acid watching one piece i had a blast| +|08/01/2022 05:12:03| |tall hat| +|08/01/2022 05:12:07| |dont push yourself, gremlim| +|08/01/2022 05:12:08| |lmao Nonna praying| +|08/01/2022 05:12:12| |>wan piss| +|08/01/2022 05:12:12| |not this time| +|08/01/2022 05:12:14| |GUNNER, CARBON, PC!| +|08/01/2022 05:12:14| |seething midget| +|08/01/2022 05:12:15| |butt slut incoming| +|08/01/2022 05:12:15| /\ +|08/01/2022 05:12:17| |DEJA VU| +|08/01/2022 05:12:19| |best girl| +|08/01/2022 05:12:19| >again +|08/01/2022 05:12:19| |Ruruki a cutie| +|08/01/2022 05:12:20| ANAL +|08/01/2022 05:12:20| |Splice mistake?| +|08/01/2022 05:12:22| |DEJA VU| +|08/01/2022 05:12:22| baiters +|08/01/2022 05:12:22| |Never done drugs and your performance doesn't really convince me otherwise| +|08/01/2022 05:12:24| |DUMB SLAG| +|08/01/2022 05:12:25| |WAIT A SECOND WEVE SEEN THIS BEFORE| +|08/01/2022 05:12:25| |DEJA VU| +|08/01/2022 05:12:25| |deja vu| +|08/01/2022 05:12:26| |poor acidanon is shitting his pants| +|08/01/2022 05:12:26| |OH NO NO NO NO NO NOT AGAIN| +|08/01/2022 05:12:28| |200Iq pl;ayh incoming| +|08/01/2022 05:12:28| |>falling for it again| +|08/01/2022 05:12:29| |HAHA Ruri again| +|08/01/2022 05:12:30| |lol lmao| +|08/01/2022 05:12:31| |I've seen this scene before| +|08/01/2022 05:12:31| |>I'm not falling for this one again...| +|08/01/2022 05:12:32| |ruruki is so dumb| +|08/01/2022 05:12:32| |OH NONONONONONO| +|08/01/2022 05:12:36| ENTER +|08/01/2022 05:12:36| BAITED +|08/01/2022 05:12:37| |THEY CAME FROM BEHIND| +|08/01/2022 05:12:37| rurikuri +|08/01/2022 05:12:37| |oh n-| +|08/01/2022 05:12:38| baka +|08/01/2022 05:12:39| |STUPID BITCH| +|08/01/2022 05:12:40| baited +|08/01/2022 05:12:41| |SHE FELL FOR IT AGAIN| +|08/01/2022 05:12:42| KEK +|08/01/2022 05:12:42| BTFO +|08/01/2022 05:12:43| Rukuriribros... +|08/01/2022 05:12:44| OWNED +|08/01/2022 05:12:45| |DUMB SLAG| +|08/01/2022 05:12:45| |THE TASTE OF VICTORY | +|08/01/2022 05:12:45| AHIRU-DONO +|08/01/2022 05:12:46| RURI... +|08/01/2022 05:12:47| BTFO +|08/01/2022 05:12:47| ARIGATO +|08/01/2022 05:12:48| BTFO +|08/01/2022 05:12:51| |>the garage is speaking japanese| +|08/01/2022 05:12:52| |poor soviets| +|08/01/2022 05:12:53| |Saori's saoris| +|08/01/2022 05:12:53| UKULELE +|08/01/2022 05:12:54| |rukuriri never do shit| +|08/01/2022 05:12:57| |SAORI'S JIGGLY TITS| +|08/01/2022 05:12:58| |>stupid brit || you could have just said brit| +|08/01/2022 05:12:59| UKULELE +|08/01/2022 05:13:08| |katyusha saying darjeeling 😭| +|08/01/2022 05:13:16| |>churchill >fast| +|08/01/2022 05:13:19| |So when is the Panzer IV gonna get that underside mirror?| +|08/01/2022 05:13:20| |You insulting usa brits anon| +|08/01/2022 05:13:24| drown +|08/01/2022 05:13:25| |SEA MONSTER| +|08/01/2022 05:13:26| ENTER +|08/01/2022 05:13:28| ENTER +|08/01/2022 05:13:29| ENTER +|08/01/2022 05:13:30| |the drowned| +|08/01/2022 05:13:32| |>trustworthy ally| +|08/01/2022 05:13:32| ENTER +|08/01/2022 05:13:32| KV-TAN +|08/01/2022 05:13:35| |KV-2 my beloved| +|08/01/2022 05:13:35| |RIP WAGIES| +|08/01/2022 05:13:35| NINA +|08/01/2022 05:13:39| KV-NII +|08/01/2022 05:13:39| |would this work irl?| +|08/01/2022 05:13:40| KAABEE-TAN +|08/01/2022 05:13:40| |YES FUCK UP THAT OFFICE| +|08/01/2022 05:13:43| |sweet fucking lord| +|08/01/2022 05:13:44| |THOUSANDS DEAD| +|08/01/2022 05:13:45| |MY HOUSE| +|08/01/2022 05:13:45| |FUCK YOUR SHIT| +|08/01/2022 05:13:45| |$46 billion in damages| +|08/01/2022 05:13:46| |FUCK YOUR CITY| +|08/01/2022 05:13:47| Warcires! +|08/01/2022 05:13:48| damn +|08/01/2022 05:13:48| |now that's stopping power| +|08/01/2022 05:13:48| |jesus christ| +|08/01/2022 05:13:49| |>russian magic defends against hydrolock| +|08/01/2022 05:13:49| |FUCK SHIT UP| +|08/01/2022 05:13:49| F +|08/01/2022 05:13:51| |NO SURVIVORS| +|08/01/2022 05:13:53| |RIP 100 wagies| +|08/01/2022 05:13:55| |holy shit| +|08/01/2022 05:13:56| bang +|08/01/2022 05:13:56| |why don't they just hide their flag tank in the water| +|08/01/2022 05:13:56| |super HEHE| +|08/01/2022 05:13:56| |FUCK... anzu!| +|08/01/2022 05:13:56| |FUCK THAT HOSPITAL| +|08/01/2022 05:13:57| |That was literally a hospital| +|08/01/2022 05:13:57| |the power of 9mm| +|08/01/2022 05:13:57| |someone call tank police| +|08/01/2022 05:13:58| |How many people were in that hospital, do you think| +|08/01/2022 05:13:59| |>property damage| +|08/01/2022 05:13:59| |HOLY SHIT| +|08/01/2022 05:14:00| |COME VISIT OORAI| +|08/01/2022 05:14:01| L +|08/01/2022 05:14:01| |KILL THEM ALL NINA| +|08/01/2022 05:14:03| |just fuck my city up| +|08/01/2022 05:14:03| |43 dead in hotel explosion, ruled as a skill issue| +|08/01/2022 05:14:04| bakas +|08/01/2022 05:14:04| WARKURAIMY +|08/01/2022 05:14:04| |*260 wagies| +|08/01/2022 05:14:04| oh +|08/01/2022 05:14:06| |Don't woory anons the people are carbon coated| +|08/01/2022 05:14:07| |DUMB LOLI TANK| +|08/01/2022 05:14:08| breh +|08/01/2022 05:14:08| FLOOF +|08/01/2022 05:14:08| F +|08/01/2022 05:14:09| WASTED +|08/01/2022 05:14:10| |ara ara| +|08/01/2022 05:14:11| KV-bros +|08/01/2022 05:14:11| |Oh no no no...| +|08/01/2022 05:14:12| dummies +|08/01/2022 05:14:13| NYAAA! +|08/01/2022 05:14:13| F +|08/01/2022 05:14:13| |ARA ARA| +|08/01/2022 05:14:14| NYAA +|08/01/2022 05:14:15| |KV baka| +|08/01/2022 05:14:15| NYAA~ +|08/01/2022 05:14:15| NYAAA +|08/01/2022 05:14:16| |DAMN KIDS| +|08/01/2022 05:14:17| |how do you miss that bad?| +|08/01/2022 05:14:17| NYAA +|08/01/2022 05:14:17| NYAAAA +|08/01/2022 05:14:18| NYAA +|08/01/2022 05:14:18| |GENEVE CONVENTION DOES NOT APPLY| +|08/01/2022 05:14:19| nyaa +|08/01/2022 05:14:19| NYAAA +|08/01/2022 05:14:19| NYAAA +|08/01/2022 05:14:21| |ANTEATER NO| +|08/01/2022 05:14:26| |Screen reserved for this danmaku| +|08/01/2022 05:14:30| |KV crew sent to siberia| +|08/01/2022 05:14:30| |BEACH ASSAULT| +|08/01/2022 05:14:31| |TL Note: KV-2 means "Fat"| +|08/01/2022 05:14:31| |Momo's momos...| +|08/01/2022 05:14:31| |ANTEATERS OUT AGAIN| +|08/01/2022 05:14:35| |Will momo finally kill| +|08/01/2022 05:14:35| |MOMO CHAN YOU MISSED| +|08/01/2022 05:14:36| MOMO-CHAN... +|08/01/2022 05:14:39| |tanks tl | +|08/01/2022 05:14:40| saki +|08/01/2022 05:14:41| |momo you missed| +|08/01/2022 05:14:41| |the hospital was empty, this world doesn't know covid| +|08/01/2022 05:14:43| budderfly +|08/01/2022 05:14:43| |MOMO SHIT| +|08/01/2022 05:14:45| KILL!!! +|08/01/2022 05:14:46| |>kill them| +|08/01/2022 05:14:47| F +|08/01/2022 05:14:49| KILL +|08/01/2022 05:14:49| |FRENCH TANKS ARE SHIT| +|08/01/2022 05:14:49| F +|08/01/2022 05:14:52| F +|08/01/2022 05:14:52| Charbros... +|08/01/2022 05:14:53| |no one got hurt no worry| +|08/01/2022 05:14:53| |KILL THEM ALL| +|08/01/2022 05:14:54| |Duck dono ;_; | +|08/01/2022 05:14:55| Brutal +|08/01/2022 05:14:55| f +|08/01/2022 05:14:56| |Coofvid didn't existed in 2015| +|08/01/2022 05:14:56| |that wasn't a hospital retard| +|08/01/2022 05:14:56| |SODOCLONES DEAD| +|08/01/2022 05:14:58| F +|08/01/2022 05:15:01| |>french """"""""tanks"""""""""| +|08/01/2022 05:15:01| |katyushas thighs| +|08/01/2022 05:15:01| dead +|08/01/2022 05:15:06| APOLOGIZE +|08/01/2022 05:15:07| BAITED +|08/01/2022 05:15:09| |Carbon coated girls| +|08/01/2022 05:15:13| |>AAAAAAAAAAAAAAAAAA KLARA NONNA SAVE ME PLEEEEEEEEEEEEEAAAAAAAASSSSSEEEEEEEEEEE| +|08/01/2022 05:15:13| |no drifting toay| +|08/01/2022 05:15:13| |tfw no russian loli gf| +|08/01/2022 05:15:14| APOLOJIZZ +|08/01/2022 05:15:15| |Drift: denied| +|08/01/2022 05:15:18| |shitty reaction time from gunner there| +|08/01/2022 05:15:21| |Fuck your drifting| +|08/01/2022 05:15:21| |BALLS OF STEEL| +|08/01/2022 05:15:37| Danmaku +|08/01/2022 05:15:39| DESUWA +|08/01/2022 05:15:39| FIYAAAAAAAAAAAAAAA +|08/01/2022 05:15:39| |DESU WA| +|08/01/2022 05:15:40| |DESU WA| +|08/01/2022 05:15:40| |cheers love| +|08/01/2022 05:15:43| ROSEHIP +|08/01/2022 05:15:43| |punished rosehip| +|08/01/2022 05:15:44| |a kills a kill| +|08/01/2022 05:15:44| HOW +|08/01/2022 05:15:45| |can panzer iv pen a churchhill?| +|08/01/2022 05:15:45| |SHE DID IT| +|08/01/2022 05:15:46| MOMO +|08/01/2022 05:15:46| |SHINUCHI SANJOU DESU WA| +|08/01/2022 05:15:46| |a hush falls upon the crowd| +|08/01/2022 05:15:46| SPEEEED +|08/01/2022 05:15:46| Momo... +|08/01/2022 05:15:47| |MOMO HIT SOMETHING| +|08/01/2022 05:15:49| rekt +|08/01/2022 05:15:49| |HOW THE FUCK DID THAT SHOT WENT ALL THE WAY TO THE RIGHT| +|08/01/2022 05:15:49| RIP +|08/01/2022 05:15:50| |MOMO YOU MISSED| +|08/01/2022 05:15:51| |bakahip saves the day| +|08/01/2022 05:15:52| ROSEHIIIIIIIIP +|08/01/2022 05:15:53| ns +|08/01/2022 05:15:53| |Momo you fucking idiot| +|08/01/2022 05:15:54| |with APCR, yes| +|08/01/2022 05:15:54| F +|08/01/2022 05:15:54| |not in frontal aspect| +|08/01/2022 05:15:54| |Momo MVP| +|08/01/2022 05:15:55| SASUGA +|08/01/2022 05:15:55| |rosehip dies again| +|08/01/2022 05:15:57| |Momo no longer kill virgin| +|08/01/2022 05:15:59| 真打惨状 +|08/01/2022 05:16:02| |LET'S GO OOARAI| +|08/01/2022 05:16:03| |>Momo's first kill is a total fluke| +|08/01/2022 05:16:05| F +|08/01/2022 05:16:07| BTFO +|08/01/2022 05:16:07| |no longer any virgin either| +|08/01/2022 05:16:07| F +|08/01/2022 05:16:07| F +|08/01/2022 05:16:08| |>5lber gun penetrating shit| +|08/01/2022 05:16:09| F +|08/01/2022 05:16:09| F +|08/01/2022 05:16:09| RIP +|08/01/2022 05:16:09| |PROCLAIM THE SCORE| +|08/01/2022 05:16:10| |kay oh| +|08/01/2022 05:16:10| F +|08/01/2022 05:16:10| rigged +|08/01/2022 05:16:11| |OOARAI JUST CANT WIN| +|08/01/2022 05:16:11| |DARJEELING. CAN'T. STOP. WINNING.| +|08/01/2022 05:16:12| |FUCK ENGLAND| +|08/01/2022 05:16:12| F +|08/01/2022 05:16:13| JOBBED +|08/01/2022 05:16:13| F +|08/01/2022 05:16:14| |tTWO FOR TWO BITCHES| +|08/01/2022 05:16:14| GAAAAAAAAY +|08/01/2022 05:16:17| |NO TEAM| +|08/01/2022 05:16:17| :DDDDDDDDDDDDDDD +|08/01/2022 05:16:18| |how was rosehips tank not eliminated earlier?| +|08/01/2022 05:16:18| |Darjeeling undefeated| +|08/01/2022 05:16:18| HOBO +|08/01/2022 05:16:19| |This cant be real| +|08/01/2022 05:16:20| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDd +|08/01/2022 05:16:20| |FUG :DDDDDDDDDD| +|08/01/2022 05:16:20| |should have charged more| +|08/01/2022 05:16:21| RIGGED +|08/01/2022 05:16:21| |RIGGED MATCH| +|08/01/2022 05:16:21| |DARJEELING BROS WE JUST CAN'T LOVE| +|08/01/2022 05:16:21| :DDDDDDD +|08/01/2022 05:16:22| :DDDD +|08/01/2022 05:16:22| |oorai stuc with jobbers| +|08/01/2022 05:16:22| |FUG :DDD| +|08/01/2022 05:16:23| LOOOSERSSSSS +|08/01/2022 05:16:23| |:D DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:16:23| |ORARI BROS?| +|08/01/2022 05:16:23| |BENIS :DDDDDDD| +|08/01/2022 05:16:24| :DDDDDDDDDDD +|08/01/2022 05:16:25| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 05:16:25| |FUCK ST. GLORIANA| +|08/01/2022 05:16:25| |FUG :DDDDDDDDDDD| +|08/01/2022 05:16:25| |THE ETERNAL ANGLO| +|08/01/2022 05:16:27| |yukari quickload holy shit| +|08/01/2022 05:16:28| :DDDDDDDDD +|08/01/2022 05:16:28| FUGGGGGGGGGGGGGGGG +|08/01/2022 05:16:28| |Perkele :DDD| +|08/01/2022 05:16:29| FUGGG +|08/01/2022 05:16:29| :DDDDDDDDDDDDDDDD +|08/01/2022 05:16:29| |Orai 's win was a fluke| +|08/01/2022 05:16:31| |GAME WAS RIGGED FROM THE START| +|08/01/2022 05:16:31| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:16:32| |CHIHATAN BASED| +|08/01/2022 05:16:32| |SEX WITH MIKA| +|08/01/2022 05:16:33| |beis :DDDDDDDDDDDDDDD| +|08/01/2022 05:16:34| pengin! +|08/01/2022 05:16:34| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:16:34| PERKELE +|08/01/2022 05:16:35| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:16:35| |oh fug :--DDDD| +|08/01/2022 05:16:36| |GOTT STRAFFE ENGLAND| +|08/01/2022 05:16:36| ???????? +|08/01/2022 05:16:37| |FOR SALVATION| +|08/01/2022 05:16:37| |13 penguins dead during Ooarai/Gloriana training match| +|08/01/2022 05:16:37| |What was with that unfair team distribution| +|08/01/2022 05:16:37| FUG +|08/01/2022 05:16:39| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:16:39| |PERFIDIOUS ALBION| +|08/01/2022 05:16:39| |FUG :DDDDDDDDDDDDD| +|08/01/2022 05:16:39| :DDDDDDDDDDDD +|08/01/2022 05:16:39| |>no penguin deaths| +|08/01/2022 05:16:39| naked +|08/01/2022 05:16:40| :DDDDDDDDDDDDD +|08/01/2022 05:16:40| |BENIS xDDDDDDDDDDDDDDD| +|08/01/2022 05:16:40| |oh okay| +|08/01/2022 05:16:40| |Momo stands for "Mmmm, it seems I can't aim"| +|08/01/2022 05:16:40| |ALL HAIL BRITANNIA| +|08/01/2022 05:16:41| PENGI +|08/01/2022 05:16:41| :DDDDDDD +|08/01/2022 05:16:42| |TOO BAD THERE WILL NEVER BE A REMATCH BETWEEN OOARAI AND GLORIANA| +|08/01/2022 05:16:43| |PENGUIN CASUALTIES| +|08/01/2022 05:16:44| |grape-kun ;_;| +|08/01/2022 05:16:44| |>carbon coated penguins| +|08/01/2022 05:16:45| tits +|08/01/2022 05:16:45| Pen-Pen? +|08/01/2022 05:16:46| WEW +|08/01/2022 05:16:46| |>MC team and japan team up >lose| +|08/01/2022 05:16:47| UOOOOOOOOOOOOOOOOOOOHHHHHHHHHH +|08/01/2022 05:16:49| WEW +|08/01/2022 05:16:49| |NA>KD GIR>KLLS| +|08/01/2022 05:16:50| WEW +|08/01/2022 05:16:50| GOKUGOKU +|08/01/2022 05:16:50| |Carbon coated penguins| +|08/01/2022 05:16:51| |Protecc pengies.\| +|08/01/2022 05:16:51| |rip penpen| +|08/01/2022 05:16:51| :DDDDDDD +|08/01/2022 05:16:52| |RIP PINGU| +|08/01/2022 05:16:52| NINA +|08/01/2022 05:16:52| |RIP Grape-kun| +|08/01/2022 05:16:53| |CUTE PENGUINS| +|08/01/2022 05:16:53| MUH +|08/01/2022 05:16:55| |YOU WILL NEVER BATHE WITH THE GUPPIES| +|08/01/2022 05:16:55| ToT +|08/01/2022 05:16:56| |more bathes| +|08/01/2022 05:16:56| |VICTORY SHOWER| +|08/01/2022 05:16:57| UOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:16:57| WEEEEEEEEEEEEEEEW +|08/01/2022 05:16:57| SEEEEEEEEEEEX +|08/01/2022 05:16:58| a +|08/01/2022 05:16:58| WEW +|08/01/2022 05:16:59| UOHHHHHHHH +|08/01/2022 05:16:59| |can a churchill pen pen-pen?| +|08/01/2022 05:17:00| |MOMO, NAGAI| +|08/01/2022 05:17:01| |IMAGINE THE SMELL| +|08/01/2022 05:17:01| |grape-kun ;________;| +|08/01/2022 05:17:01| |Im gonna coom| +|08/01/2022 05:17:02| |I NEED RAPE PROTECTION ToT| +|08/01/2022 05:17:02| |so BIG| +|08/01/2022 05:17:02| UUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:17:03| |labia soup | +|08/01/2022 05:17:04| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:17:05| |ANZUS FLAT CHEST| +|08/01/2022 05:17:06| |flat and stacked| +|08/01/2022 05:17:06| |CAN I DRINK THAT BATHWATER?| +|08/01/2022 05:17:07| FLAT +|08/01/2022 05:17:07| ERECT +|08/01/2022 05:17:07| FLAT +|08/01/2022 05:17:08| |Anzu soup| +|08/01/2022 05:17:08| OOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:17:09| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:17:10| UOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:17:11| |I like that| +|08/01/2022 05:17:13| momo's +|08/01/2022 05:17:14| BIG +|08/01/2022 05:17:14| |PEKOE UOOOOOOOOOOOOOOOH| +|08/01/2022 05:17:15| |ANZU'S CHEST UOOOOHHH| +|08/01/2022 05:17:16| |Darjeeling is STACKED| +|08/01/2022 05:17:17| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:17:17| |NONNA HUGE TITS| +|08/01/2022 05:17:19| flat +|08/01/2022 05:17:19| |PEKOE UOOOO| +|08/01/2022 05:17:20| FLAT +|08/01/2022 05:17:20| |DRINKING ANZU'S ONSEN WATER| +|08/01/2022 05:17:21| |Desu wa?| +|08/01/2022 05:17:21| |MOMO'S MOMOS| +|08/01/2022 05:17:22| |oh fuck my pp| +|08/01/2022 05:17:22| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:17:23| UOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:17:23| |KATYUSHA UOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH| +|08/01/2022 05:17:23| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:17:24| |SHOW ME| +|08/01/2022 05:17:25| SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEKUSU +|08/01/2022 05:17:25| OUUUUUUUUUUUUUUUUUUUUUUUUUUUHH +|08/01/2022 05:17:26| |Naked girls...| +|08/01/2022 05:17:26| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 05:17:27| |bath water with anzu and katyusha| +|08/01/2022 05:17:27| |FFFFFFFFLLLLLLLLLLLLLLLAAAAAATTTTTTTTT CCCCCCCCCCHHHHHHHHHEEEEEESSSSSSSSSTTTTTTTTTTTTTTTTTTTT| +|08/01/2022 05:17:28| |YUou will never Darjeerling's Darjeerling's| +|08/01/2022 05:17:29| |EXHIBITIONISM MATCH| +|08/01/2022 05:17:29| |MASSIVE NONNA KNOCKERS| +|08/01/2022 05:17:30| |Nonna is large| +|08/01/2022 05:17:31| UOHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:17:32| |IM GONNA SOOOOOOOOOOOOOOB| +|08/01/2022 05:17:33| UUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHH +|08/01/2022 05:17:33| |TOO LEWD| +|08/01/2022 05:17:33| |Katyusha's flat chest...| +|08/01/2022 05:17:33| ToT +|08/01/2022 05:17:33| |if they drink too much tea they will PEE| +|08/01/2022 05:17:34| 127CM +|08/01/2022 05:17:34| 日本語でおk +|08/01/2022 05:17:35| |they should bottle that bathwater | +|08/01/2022 05:17:36| |SEX WITH HANA| +|08/01/2022 05:17:38| |SPEAK JAPANESE | +|08/01/2022 05:17:39| |The gremlin fears the titty monsters| +|08/01/2022 05:17:39| |cock out| +|08/01/2022 05:17:40| |she still counting| +|08/01/2022 05:17:40| |Nishi bun!| +|08/01/2022 05:17:42| |cute russian| +|08/01/2022 05:17:42| |I LOST| +|08/01/2022 05:17:42| |Now I need to pee| +|08/01/2022 05:17:44| TITSUGEKI +|08/01/2022 05:17:44| |NIHONGO MOTHERFUCKER DO YOU SPEAK IT?| +|08/01/2022 05:17:44| |SEX WITH NISHI| +|08/01/2022 05:17:45| |Nishi's Nishi's in Nishiwater Nishi Nishi| +|08/01/2022 05:17:46| |ANZU IN THE BACK| +|08/01/2022 05:17:49| |>gaming instead of bathing Lmao| +|08/01/2022 05:17:50| |>ALL THE FLAT CHESTS| +|08/01/2022 05:17:51| FLUFF!!! +|08/01/2022 05:17:52| BANZAI +|08/01/2022 05:17:52| |FEEL THE FLUFF| +|08/01/2022 05:17:52| |Yukarying Yukari's Yukaris| +|08/01/2022 05:17:53| |pee in the guppy bath| +|08/01/2022 05:17:53| NARUHODO +|08/01/2022 05:17:55| FLOOF +|08/01/2022 05:17:58| |STEAMY SEX WITH HANA| +|08/01/2022 05:17:58| |ENDLESS EIGHT| +|08/01/2022 05:17:59| DFC +|08/01/2022 05:17:59| |GUPPY WATER| +|08/01/2022 05:18:00| hanasemasen +|08/01/2022 05:18:03| |mako pls| +|08/01/2022 05:18:03| |NO MAKO| +|08/01/2022 05:18:03| |Fuck school| +|08/01/2022 05:18:04| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:18:05| |that can be arranged| +|08/01/2022 05:18:06| |ENTER MEXT| +|08/01/2022 05:18:06| |Saoris oppai| +|08/01/2022 05:18:07| |Can Nishi puke on my cock| +|08/01/2022 05:18:08| |NEVER WORK| +|08/01/2022 05:18:08| FLAG!! +|08/01/2022 05:18:09| MEXTERMINATOR +|08/01/2022 05:18:09| ENTER +|08/01/2022 05:18:09| |MAKO NO| +|08/01/2022 05:18:10| |mako just altered reality by willing it| +|08/01/2022 05:18:11| |Erika best grill| +|08/01/2022 05:18:11| |THANKS TL| +|08/01/2022 05:18:12| AAAAAAAAAA +|08/01/2022 05:18:12| |oh fr?| +|08/01/2022 05:18:12| |take me mako| +|08/01/2022 05:18:14| |mako jinxed it| +|08/01/2022 05:18:14| |>about that| +|08/01/2022 05:18:16| |ANON, WHICH GUPPIE YOU WANT TO TOTSUGEKI IN? | +|08/01/2022 05:18:17| TAEKO +|08/01/2022 05:18:19| UUUUUUUUUUUUUUUOOOOOOOOOOOOOO +|08/01/2022 05:18:19| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:18:19| ESPANA +|08/01/2022 05:18:20| FLAT +|08/01/2022 05:18:20| |so fucking FLAT| +|08/01/2022 05:18:23| |nice boat| +|08/01/2022 05:18:23| 3D +|08/01/2022 05:18:26| |PAIZURI WITH HANA| +|08/01/2022 05:18:26| |TONY KAKU| +|08/01/2022 05:18:27| |so many fat gup titties| +|08/01/2022 05:18:28| |>those volleyballs| +|08/01/2022 05:18:28| BOOBA +|08/01/2022 05:18:28| |ANZU HAIR BUNS AND FLAT CHEST UOOOOHHHHH| +|08/01/2022 05:18:28| |TOTSUGEKI YUKARI MY WIFE <3| +|08/01/2022 05:18:30| |>oh yeah we're just gonna shut down the school again lamo| +|08/01/2022 05:18:30| |>also don't put on any clothes please| +|08/01/2022 05:18:32| |bros i want to live in a world where the most feminine thing a girl can do is driving tanks| +|08/01/2022 05:18:34| |not good| +|08/01/2022 05:18:34| | UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 05:18:38| |DId the aspect ratio change?| +|08/01/2022 05:18:40| |KEEP OUT| +|08/01/2022 05:18:41| |NAIZURI with Jagdtpanzer| +|08/01/2022 05:18:41| |UH OHHH| +|08/01/2022 05:18:43| |I'm claiming Momo. Since no one else wants her, she'll be ALL MINE| +|08/01/2022 05:18:46| outo +|08/01/2022 05:18:47| |oh noes| +|08/01/2022 05:18:47| |KEEP FIT| +|08/01/2022 05:18:48| wtf +|08/01/2022 05:18:50| |Rip school| +|08/01/2022 05:18:51| |OH NO OOARAI BROS| +|08/01/2022 05:18:51| |Why hasn't Renta Tsuji fucked Anzu yet| +|08/01/2022 05:18:52| ??????????????? +|08/01/2022 05:18:52| >male +|08/01/2022 05:18:52| lol +|08/01/2022 05:18:53| ENTER +|08/01/2022 05:18:53| OURGUY +|08/01/2022 05:18:53| |ENTER MEXT| +|08/01/2022 05:18:55| |ENTER MALE| +|08/01/2022 05:18:57| |BREHS WE'RE IN TROUBLE| +|08/01/2022 05:18:57| MEXT +|08/01/2022 05:18:57| |hot nakadashi sex with kay!| +|08/01/2022 05:18:58| |thousands of refugees| +|08/01/2022 05:18:58| ENTER +|08/01/2022 05:18:59| |team mext lets gooooo| +|08/01/2022 05:19:00| MALE +|08/01/2022 05:19:01| ENTER +|08/01/2022 05:19:01| >male +|08/01/2022 05:19:01| |BEST BOY| +|08/01/2022 05:19:01| |i can't read| +|08/01/2022 05:19:01| azusa... +|08/01/2022 05:19:01| |WE DIDN'T MAKE IT BROS| +|08/01/2022 05:19:01| MEXT +|08/01/2022 05:19:01| |/our guy/| +|08/01/2022 05:19:01| |KEEP OUT MEANS KEEP OUT| +|08/01/2022 05:19:02| ENTER +|08/01/2022 05:19:02| |it means time for me to fuck the entire volleyball teamn| +|08/01/2022 05:19:02| /ourlad/ +|08/01/2022 05:19:02| |MEXT GUY DID NOTHING WRONG| +|08/01/2022 05:19:03| ????????????? +|08/01/2022 05:19:03| ENTER +|08/01/2022 05:19:03| KISAMA +|08/01/2022 05:19:04| ENTER +|08/01/2022 05:19:05| |TL NOTE: KEEP OUT means PANZER VOR| +|08/01/2022 05:19:05| |WHAT THE FUCK SENSHADO FEDERATION MAN| +|08/01/2022 05:19:05| ! +|08/01/2022 05:19:07| |THE MAN| +|08/01/2022 05:19:08| |MEXTFAG IS HERE| +|08/01/2022 05:19:08| INSHALLAH +|08/01/2022 05:19:08| ENTER +|08/01/2022 05:19:08| |just julius caesar him| +|08/01/2022 05:19:09| |A man!| +|08/01/2022 05:19:10| |Kill the MALE| +|08/01/2022 05:19:11| |at least 30000 displaced| +|08/01/2022 05:19:11| |Reused plot| +|08/01/2022 05:19:11| |we wooooooon| +|08/01/2022 05:19:11| M*LE +|08/01/2022 05:19:11| /ourboy/ +|08/01/2022 05:19:13| |KEEP OUT, WE NEED MORE TANK BATTLES TO FILM| +|08/01/2022 05:19:14| |THE LEGEND| +|08/01/2022 05:19:16| |OOARAI BTFO| +|08/01/2022 05:19:17| |MAN KEEPIN US DOWN| +|08/01/2022 05:19:17| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:19:20| |HE'S THE REASON WE HAVE SO MUCH GUP. KNEEL. | +|08/01/2022 05:19:21| |THANKS TL| +|08/01/2022 05:19:22| |THANKS TL| +|08/01/2022 05:19:22| |SEX WITH MEXT LESSSSSSGGGGGOOOOOOOO| +|08/01/2022 05:19:22| |THAT PLOT| +|08/01/2022 05:19:23| |thousands of homes destroyed| +|08/01/2022 05:19:23| |BASED MEXT GUY GIVING US MORE CONETNT| +|08/01/2022 05:19:24| |SCHOOLS OUT!!| +|08/01/2022 05:19:24| EHH +|08/01/2022 05:19:25| SCRAPPED +|08/01/2022 05:19:25| anzu +|08/01/2022 05:19:26| |Chad male vs virgin females| +|08/01/2022 05:19:26| |>we ran out of plot btw so heres a rehash| +|08/01/2022 05:19:27| rip +|08/01/2022 05:19:28| EXIT +|08/01/2022 05:19:29| |THE FUCKING JEWS GOT US | +|08/01/2022 05:19:29| |she sold the school for more dried sweet potatoes| +|08/01/2022 05:19:30| WHY? +|08/01/2022 05:19:31| |MEXT GUY GIVING US A SEQUEL| +|08/01/2022 05:19:31| |FUCK FUCK FUCK FUCK FUCK| +|08/01/2022 05:19:33| |he ****** anzu| +|08/01/2022 05:19:35| mextermniator +|08/01/2022 05:19:36| |No way| +|08/01/2022 05:19:36| ??????????????? +|08/01/2022 05:19:37| |stupid tankers not caring about school finances| +|08/01/2022 05:19:38| tragedy +|08/01/2022 05:19:38| |MEXT guy is gup fan| +|08/01/2022 05:19:39| |It's over| +|08/01/2022 05:19:40| |TASUJI RENTA WAS RIGHT| +|08/01/2022 05:19:41| |LMAO GET FUCKED OOARAI| +|08/01/2022 05:19:44| |we all *****ed anzu| +|08/01/2022 05:19:44| |i have changed the deal| +|08/01/2022 05:19:44| |it's fucking over...| +|08/01/2022 05:19:46| TRICKED +|08/01/2022 05:19:46| |Damn you Kikes!!!!| +|08/01/2022 05:19:48| |so was there absolutely nothing they could think of but the same thing again| +|08/01/2022 05:19:50| |MEXT DID NOTHING WRONG| +|08/01/2022 05:19:52| |Momo about to cry again| +|08/01/2022 05:19:54| |Rukia's execution has been moved| +|08/01/2022 05:19:54| |ooraitards btfo once more ;-;| +|08/01/2022 05:19:54| |show's over, bye layds| +|08/01/2022 05:19:55| |MEXT MEXT MEXT MEXT | +|08/01/2022 05:19:55| |>the kikes won| +|08/01/2022 05:19:55| |Somehow government has money to recompense all the senshado damages, but has no money to fund schools.| +|08/01/2022 05:19:56| |THEY LIED AHHHHHH| +|08/01/2022 05:19:56| |Those sexy volleyball uniforms| +|08/01/2022 05:19:56| |WOAH SRS??!?| +|08/01/2022 05:19:58| |>it was a ruse, I deceived you| +|08/01/2022 05:20:02| ratings +|08/01/2022 05:20:02| |Girl's und Homeless| +|08/01/2022 05:20:05| |WHAT AM I FIGHTING FOOOOOOOOOOOOOOOOOOOOORRRRRRRRRRRR| +|08/01/2022 05:20:05| |WHAT AM I FIGHTING FOOOAAAAAAAAAAAAAAAAAR| +|08/01/2022 05:20:06| |Senkai de rabu raibu| +|08/01/2022 05:20:08| TOTSUGEKI@ +|08/01/2022 05:20:08| |>jk lmao| +|08/01/2022 05:20:10| |you always fight for ratings| +|08/01/2022 05:20:11| |Anzu will now be hanged for corruption| +|08/01/2022 05:20:11| |ANZU RUNS A CORRUPT SLUM SYSTEM BELOW DECKS. MEXT WAS RIGHT.| +|08/01/2022 05:20:12| |Played for an absolute fool! Federationbros win again!| +|08/01/2022 05:20:13| |mext need the money| +|08/01/2022 05:20:13| |DEATH TO MEXT, DEATH TO KMM, DEATH TO ERIKA| +|08/01/2022 05:20:14| |now that the ship is gone anzu has to move in with me, oh no| +|08/01/2022 05:20:16| |DONT ASK I DONT GIVE A DAMN| +|08/01/2022 05:20:17| |ANZU A BEST| +|08/01/2022 05:20:19| |POTEMKIN BUSTER| +|08/01/2022 05:20:21| |THEY CAN'T KEEP GETTING AWAY WITH THIS!| +|08/01/2022 05:20:21| |OCCUPY OORAI| +|08/01/2022 05:20:21| |Just go to glorious German high school| +|08/01/2022 05:20:21| |she's cooking the fucking books| +|08/01/2022 05:20:22| |PIRATE CARIER| +|08/01/2022 05:20:24| |Theres an easy way for them all to make money| +|08/01/2022 05:20:24| |Sink the ship in protest| +|08/01/2022 05:20:26| |YES FIGHT, FIRE YOUR TANKS AT THEM~| +|08/01/2022 05:20:27| |All these Guppies are going to be homeless soon. Who do you take in?| +|08/01/2022 05:20:27| |Ethnic cleansing next| +|08/01/2022 05:20:29| |hang miho for losing| +|08/01/2022 05:20:30| |the jews won| +|08/01/2022 05:20:31| |>LOVE LIVE PLOT| +|08/01/2022 05:20:33| anzu +|08/01/2022 05:20:36| |SHUT IT DOWN| +|08/01/2022 05:20:39| |JUST LOOK AT MAKO'S DOCTORED RECORDS OFFICER| +|08/01/2022 05:20:39| |BECOME YOUR OWN NATION. AN OUTER HEAVEN.| +|08/01/2022 05:20:40| |"let's force 100,000 people to move out" yeah fuck that shit| +|08/01/2022 05:20:40| |wait i missed the naked darj scene| +|08/01/2022 05:20:42| |MEXT chad purging all infidels| +|08/01/2022 05:20:43| |my wife anzu is so cute| +|08/01/2022 05:20:44| |THEY KNOW SHUT IT DOWN| +|08/01/2022 05:20:44| |>sodoko only cares about power| +|08/01/2022 05:20:45| |All dreams are gone| +|08/01/2022 05:20:46| |sex with anzu| +|08/01/2022 05:20:47| |TIME TO SLUM IT UP IN A RANDOM BUILDING| +|08/01/2022 05:20:49| (((MEXT))) +|08/01/2022 05:20:50| |Prez was gambling on shitcoins | +|08/01/2022 05:20:52| |True NEETdom| +|08/01/2022 05:20:54| |the /o/fags are so based| +|08/01/2022 05:20:54| NEETO +|08/01/2022 05:20:56| |I guess we have to kill... the PRIME MINISTER| +|08/01/2022 05:20:57| |REAL NEETO| +|08/01/2022 05:20:57| |serious question, would you eat anzus period discharge| +|08/01/2022 05:20:58| |Anzu cunny!| +|08/01/2022 05:21:02| |HOMELESS NEET| +|08/01/2022 05:21:03| |They can all come live with me| +|08/01/2022 05:21:04| |REAL NEET| +|08/01/2022 05:21:07| |Rape MEXT| +|08/01/2022 05:21:07| |All those clubs will bo lost like tears in the rain| +|08/01/2022 05:21:08| |MEXTbros we might close down this school after all| +|08/01/2022 05:21:10| |gotta suck mext dick| +|08/01/2022 05:21:11| |Quick anons, how do we save oorai?????| +|08/01/2022 05:21:11| |future NEETS| +|08/01/2022 05:21:13| |Girls und Homeless| +|08/01/2022 05:21:13| |this series is so good| +|08/01/2022 05:21:14| |I'll adopt the StuG autists| +|08/01/2022 05:21:15| |They will now live my live| +|08/01/2022 05:21:15| |Real fuckin' neeto| +|08/01/2022 05:21:19| |FUCK EVERYTHING INCLUDING THE GUPS| +|08/01/2022 05:21:19| |THEY BOUGHT IT?| +|08/01/2022 05:21:20| |THE LEADERSHIP OF MEXT IS SHUTTING DOWN SCHOOLSHIPS IN ORDER TO MAKE THE FREAKEN' FROGS GAY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 05:21:22| |IDEA! LETS DO THE SAME SHIT AGAIN!| +|08/01/2022 05:21:24| |pls adopt a homeless GuPie today| +|08/01/2022 05:21:26| FLOOF +|08/01/2022 05:21:29| |they gups should sell their bodies on the streets| +|08/01/2022 05:21:29| |I'm betting the farm on this MEXT plan| +|08/01/2022 05:21:29| FROGS +|08/01/2022 05:21:31| MEXT +|08/01/2022 05:21:33| |Girls und Brothel| +|08/01/2022 05:21:39| anzu +|08/01/2022 05:21:39| |Bunny team can share my room| +|08/01/2022 05:21:40| |They have a fucking tank. They can't tell them what to do.| +|08/01/2022 05:21:41| |I second that plan| +|08/01/2022 05:21:42| |YOU CAN TAKE OUR LIVES BUT YOU WILL NEVER TAKE OUR TANKS| +|08/01/2022 05:21:44| SOBER +|08/01/2022 05:21:44| |Girls und Camping| +|08/01/2022 05:21:45| |Momo >>> Anzu| +|08/01/2022 05:21:46| |I get Saki| +|08/01/2022 05:21:47| |Girls und Sobriety| +|08/01/2022 05:21:48| SHALL +|08/01/2022 05:21:49| |>i never thought saying goodbye was how i'd say goodbye| +|08/01/2022 05:21:51| |Kamurocho needs more hostess| +|08/01/2022 05:21:52| |Press R to rape Anzu now| +|08/01/2022 05:21:54| |GUPPIE INSURRECTION WHEN| +|08/01/2022 05:21:55| R +|08/01/2022 05:21:55| |Girls und Society| +|08/01/2022 05:21:55| |I can save them... | +|08/01/2022 05:21:56| R +|08/01/2022 05:21:57| ;_;7 +|08/01/2022 05:21:57| |packu appu| +|08/01/2022 05:21:58| NOT +|08/01/2022 05:21:58| |R BUT GENTLY | +|08/01/2022 05:21:59| R +|08/01/2022 05:22:00| USAGI +|08/01/2022 05:22:00| rabbits +|08/01/2022 05:22:01| |What episode is this?| +|08/01/2022 05:22:01| |I'll take in all the loli gruppies| +|08/01/2022 05:22:02| |RIP future budget| +|08/01/2022 05:22:02| BE +|08/01/2022 05:22:03| |cute bunnies| +|08/01/2022 05:22:05| |Girls und unemployment| +|08/01/2022 05:22:07| |But heir MBT woul;d wreck their WW2 relics| +|08/01/2022 05:22:10| CLOSED +|08/01/2022 05:22:12| |PRESS B TO BECOME ANZU'S CHAIR| +|08/01/2022 05:22:13| |It's the 1st movie| +|08/01/2022 05:22:14| |bunny cunnies| +|08/01/2022 05:22:14| |all guppies under 5 ft have a home with me| +|08/01/2022 05:22:15| |GIRLS UND ARBEITO| +|08/01/2022 05:22:15| B +|08/01/2022 05:22:16| B +|08/01/2022 05:22:18| V +|08/01/2022 05:22:18| |Remember girls, steal anything that isn't nailed down| +|08/01/2022 05:22:18| AZUSAAAAA +|08/01/2022 05:22:18| B +|08/01/2022 05:22:19| |b b b b bbb| +|08/01/2022 05:22:20| |Voleyball club's resurrection...| +|08/01/2022 05:22:21| CLANGED +|08/01/2022 05:22:21| |Cunny rabbit| +|08/01/2022 05:22:22| B +|08/01/2022 05:22:22| B +|08/01/2022 05:22:25| |You can tell who's drunk| +|08/01/2022 05:22:27| |Bunnies and cunny and cunny bunnies ToT| +|08/01/2022 05:22:28| SHIROTABI +|08/01/2022 05:22:28| |Girls und Freeter| +|08/01/2022 05:22:28| |Noriko will have to sell his body to onee-sans now!| +|08/01/2022 05:22:31| |no more morals| +|08/01/2022 05:22:31| |Girls und Arbeit Macht Frei| +|08/01/2022 05:22:31| |VAREBU 4EVAR!| +|08/01/2022 05:22:33| |the sign was nailed down and they took that too| +|08/01/2022 05:22:34| jannies +|08/01/2022 05:22:35| |I ant to become anzus chair but I am ropulused aby press newfdagh presddffffffffffffffff| +|08/01/2022 05:22:37| |my life...| +|08/01/2022 05:22:39| |>Imagiune not being drunk right nowe| +|08/01/2022 05:22:39| |CLEAN IT UP| +|08/01/2022 05:22:40| |>he isn't looting literally everything on the ship that isn't bolted dowwn NGMI| +|08/01/2022 05:22:40| |TAKE THE GATE| +|08/01/2022 05:22:43| |NOW... I'VE LOST IT| +|08/01/2022 05:22:44| F +|08/01/2022 05:22:46| TAEKO +|08/01/2022 05:22:47| F +|08/01/2022 05:22:47| F +|08/01/2022 05:22:47| DRIFTO +|08/01/2022 05:22:50| |SODOKO IS DEAD| +|08/01/2022 05:22:50| bonk +|08/01/2022 05:22:51| |fucking died| +|08/01/2022 05:22:54| USAGIS +|08/01/2022 05:22:54| |Girls und Arbeitslose| +|08/01/2022 05:22:54| |WAIT THIS IS LIKE THE ONLY SCHOOL ON THIS BOAT HOW CAN SHUT IT DOWN| +|08/01/2022 05:22:55| |Girls und real War| +|08/01/2022 05:22:55| |GAS GAS GAS| +|08/01/2022 05:22:55| |dibs on the thirty foot diameter cannons| +|08/01/2022 05:22:56| rip +|08/01/2022 05:22:56| DORIFUTO +|08/01/2022 05:22:56| |Take everything that isn't nailed down.| +|08/01/2022 05:22:57| |*EUROBEAT PLAYS IN THE DISTANCE*| +|08/01/2022 05:22:57| |SPEEDY SPEED BPY| +|08/01/2022 05:22:58| |GAS GAS GAS| +|08/01/2022 05:22:58| |BASED CARFAGS| +|08/01/2022 05:22:58| |AZUSA NOO| +|08/01/2022 05:23:00| |NIGHT OF FIRE| +|08/01/2022 05:23:00| |>V8 dound| +|08/01/2022 05:23:00| |this is what happens when you drink and drive| +|08/01/2022 05:23:02| |bunny cunnies' bunnies| +|08/01/2022 05:23:02| |NIGHT ON FIRE| +|08/01/2022 05:23:03| DRIFTO +|08/01/2022 05:23:04| |Girls und GI Bill| +|08/01/2022 05:23:04| DRIFt +|08/01/2022 05:23:05| |final acceleration to the jewish question| +|08/01/2022 05:23:05| whao! +|08/01/2022 05:23:05| Dorifto +|08/01/2022 05:23:06| DORIFUTOOOO +|08/01/2022 05:23:06| | /o/'s year baby| +|08/01/2022 05:23:06| |based night drive| +|08/01/2022 05:23:07| |GAS GAS GAS| +|08/01/2022 05:23:07| |GAS GAS GAS| +|08/01/2022 05:23:07| |THE WHOLE BOAT IS SHUTTING DOWN| +|08/01/2022 05:23:07| |IM GONNA STEP ON THE GAS| +|08/01/2022 05:23:09| |Deja vu!| +|08/01/2022 05:23:12| |DRFT MY COCK| +|08/01/2022 05:23:13| |GAS GA S AGSS| +|08/01/2022 05:23:13| |GAS GAS GAS| +|08/01/2022 05:23:13| DORIFUTO +|08/01/2022 05:23:13| |IM BURNIG UP FOR YOU| +|08/01/2022 05:23:13| |GAS GAS| +|08/01/2022 05:23:14| |>ywn get an initial d spinoff with leopons| +|08/01/2022 05:23:15| kek +|08/01/2022 05:23:15| |WHEELPOWER AND GO| +|08/01/2022 05:23:16| |DEJA VU| +|08/01/2022 05:23:16| |Girls und PMC| +|08/01/2022 05:23:16| |I might just take a walk| +|08/01/2022 05:23:17| who?? +|08/01/2022 05:23:17| |Mexicans stealing another caR| +|08/01/2022 05:23:17| |fucking hugboxes| +|08/01/2022 05:23:17| >male +|08/01/2022 05:23:18| |WE LIVE IN A SOCIETY.| +|08/01/2022 05:23:19| DORIFUTO +|08/01/2022 05:23:21| GAYMAN +|08/01/2022 05:23:22| >vidya +|08/01/2022 05:23:24| 'tism +|08/01/2022 05:23:26| |No more homes| +|08/01/2022 05:23:29| >male +|08/01/2022 05:23:29| Mogged +|08/01/2022 05:23:30| |based dad| +|08/01/2022 05:23:32| |game looks like shit tbh| +|08/01/2022 05:23:32| betrayal +|08/01/2022 05:23:33| mummy!! +|08/01/2022 05:23:35| |based slave| +|08/01/2022 05:23:37| |Poor struggling business owner| +|08/01/2022 05:23:38| |cute floof| +|08/01/2022 05:23:39| |hes always shouting| +|08/01/2022 05:23:41| |>men arent allowed to live on land| +|08/01/2022 05:23:41| |OJOU NO GAKKOU DA| +|08/01/2022 05:23:42| |RIP BOZOS| +|08/01/2022 05:23:44| |Yukari-mom too good for this world| +|08/01/2022 05:23:47| |you just know| +|08/01/2022 05:23:47| |RIP BOZOS| +|08/01/2022 05:23:48| |THE WHOLE BOAT IS THE SCHOOL FOR THOSE WHO STILL DONT GET IT| +|08/01/2022 05:23:51| |I like Yukari| +|08/01/2022 05:23:57| CUUUUUUUUUUUUUUUUUUTE +|08/01/2022 05:23:59| |I like Anzu| +|08/01/2022 05:24:01| |suicide via smothering| +|08/01/2022 05:24:02| CTU +|08/01/2022 05:24:03| |What about the Shark team | +|08/01/2022 05:24:04| |Men will be shot as the ship is decommisnioned| +|08/01/2022 05:24:05| boko +|08/01/2022 05:24:06| |i am anzu| +|08/01/2022 05:24:07| |THEY"RE TARGETING SMALL BUSINESS OWNERS BECAUSE THEY're BASED| +|08/01/2022 05:24:10| |I like all of them, except Erika| +|08/01/2022 05:24:12| |shark? more like shart| +|08/01/2022 05:24:12| |Commit sudoku| +|08/01/2022 05:24:14| |>you will never sleep the day away with Mako| +|08/01/2022 05:24:14| |are you actually anzu| +|08/01/2022 05:24:17| iktf... +|08/01/2022 05:24:17| Bokosexual +|08/01/2022 05:24:18| |I'm actually leaking | +|08/01/2022 05:24:19| |Sad Boko| +|08/01/2022 05:24:19| |im going to cum on her pillow and make it shatter| +|08/01/2022 05:24:19| |ERIKA BEST GuP| +|08/01/2022 05:24:20| |BROS WE CAN"T LIVE ON LAND I JUST CAN"T| +|08/01/2022 05:24:20| |I like Erika, no one else| +|08/01/2022 05:24:22| |shut down due to COVID| +|08/01/2022 05:24:22| |mext support big business | +|08/01/2022 05:24:23| |I like all of them especially Erika | +|08/01/2022 05:24:24| D: +|08/01/2022 05:24:24| |With that, Boko suffocated.| +|08/01/2022 05:24:25| |I'm going to fuck you| +|08/01/2022 05:24:25| |Never get verbal agreements kids| +|08/01/2022 05:24:25| |I was the monster... all along?| +|08/01/2022 05:24:27| |Every man not working on a ship is drafted into the massive giga war happening in the asian continent| +|08/01/2022 05:24:27| |Shark Team are currently smuggling 10,000 kilos of coke into North America| +|08/01/2022 05:24:28| |yes it is I, your wife, anzu| +|08/01/2022 05:24:28| ((((((MEXT)))))))) +|08/01/2022 05:24:30| |yeah but what about the engineering gnomes(lolis) that live in the bowels of the ship and maintain it?????| +|08/01/2022 05:24:30| |by me| +|08/01/2022 05:24:32| AZUSA +|08/01/2022 05:24:34| |I HATE THIS I HATE THIS I HATE THIS NO SAD| +|08/01/2022 05:24:34| KMMext +|08/01/2022 05:24:35| |DAYS OF DASH| +|08/01/2022 05:24:36| |Johannesburg..... we can't let them do this...| +|08/01/2022 05:24:36| |holy shit real life anzu inside my computer| +|08/01/2022 05:24:38| |girly run lmao| +|08/01/2022 05:24:38| |LOOK AT THAT DORK RUN| +|08/01/2022 05:24:39| |Miho with the lanky run| +|08/01/2022 05:24:39| |HI SZUSA| +|08/01/2022 05:24:41| |Grand Theft Sensha| +|08/01/2022 05:24:43| AZUSAA!!!!! +|08/01/2022 05:24:44| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:24:48| |What a scrapyard| +|08/01/2022 05:24:52| |HELP anzu is climing out of my screen| +|08/01/2022 05:24:56| |Doing hood-rat shit with your tomodachi...| +|08/01/2022 05:24:56| |My wives| +|08/01/2022 05:24:58| nice +|08/01/2022 05:24:58| |needs more panthers| +|08/01/2022 05:25:00| |morals committee looting the placard| +|08/01/2022 05:25:02| |W-why am I crying| +|08/01/2022 05:25:02| |Use the tanks to conquer the school. Become pirates.| +|08/01/2022 05:25:05| |mass suicide with panzers!| +|08/01/2022 05:25:08| |Stug life...| +|08/01/2022 05:25:10| :'( +|08/01/2022 05:25:11| CUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 05:25:14| |Panzer Nomore| +|08/01/2022 05:25:14| |AMERICA! FUCK YEAH!| +|08/01/2022 05:25:14| |I wish Anzu were climingout of my screen| +|08/01/2022 05:25:14| |Riot with tanks| +|08/01/2022 05:25:15| |guppies must resort to stealing shoes in detroit with the sug| +|08/01/2022 05:25:16| T_T +|08/01/2022 05:25:17| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:19| o7 +|08/01/2022 05:25:20| naked +|08/01/2022 05:25:20| |i will sponsor oorai, but they will have to paint their tanks in my company's colors| +|08/01/2022 05:25:20| |BASED BURGERS| +|08/01/2022 05:25:20| |saunders earrape| +|08/01/2022 05:25:21| |USA USA USA USA USA USA| +|08/01/2022 05:25:21| |pirates you say? that gives me an idea...| +|08/01/2022 05:25:22| |USA USA USA| +|08/01/2022 05:25:22| |AMERICANS SAVE THE DAY| +|08/01/2022 05:25:23| |USA USA USA USA USA USA USA| +|08/01/2022 05:25:23| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:24| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:24| |USA USA USA USA USA USA| +|08/01/2022 05:25:24| o7 +|08/01/2022 05:25:24| |AMERICA FUCK YEAH| +|08/01/2022 05:25:24| |USA USA USA USA USA USA| +|08/01/2022 05:25:26| Amurika +|08/01/2022 05:25:26| |REAL AMERICAN HEROES| +|08/01/2022 05:25:26| ENTER +|08/01/2022 05:25:27| AAAAAAAAAAAAAAAMMMMMMMEEEEEEERRRRRIIIIIIICCCCCCCAAAAAAAAA +|08/01/2022 05:25:27| |USA USA USA USA USA DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:25:28| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:28| |usa usa usa| +|08/01/2022 05:25:28| |USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:28| | USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:29| |USA USA USA USA| +|08/01/2022 05:25:29| |OVER HILL OVER DALE| +|08/01/2022 05:25:30| |U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A !| +|08/01/2022 05:25:30| |HERE COMES THE CAVALRY| +|08/01/2022 05:25:30| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:30| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:31| |BURGER TIMEE!!| +|08/01/2022 05:25:32| |USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 05:25:32| |Ugh, fucking burgers| +|08/01/2022 05:25:33| |AMERICAN AIR SUPERIORITY| +|08/01/2022 05:25:33| |U S A U S A U S A U S A U S A U S A U S A U S A U S A U S A U S A | +|08/01/2022 05:25:33| |SUDDENLY YANK TERRORISTS| +|08/01/2022 05:25:33| |USA USA USA USA| +|08/01/2022 05:25:34| |usa USA| +|08/01/2022 05:25:34| MURICA +|08/01/2022 05:25:34| |USA USA USA USA USA| +|08/01/2022 05:25:35| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:35| |America's taking your shit| +|08/01/2022 05:25:36| |USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +|08/01/2022 05:25:36| BURGERS +|08/01/2022 05:25:36| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:36| |I HATE AMERICAA| +|08/01/2022 05:25:36| |Enter the sexiest guppie| +|08/01/2022 05:25:36| |USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:37| |PUTTING BASED IN CARRIER BASED| +|08/01/2022 05:25:38| |USA USA USA USA| +|08/01/2022 05:25:38| AMERICAAAAAA +|08/01/2022 05:25:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:40| USA +|08/01/2022 05:25:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:40| |THERES A GUN ON MY SCREEN| +|08/01/2022 05:25:40| | USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:41| |DOG BLESS AMERIGA| +|08/01/2022 05:25:41| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:41| |USA USA USA USA USA USA| +|08/01/2022 05:25:42| |USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +|08/01/2022 05:25:42| |QUICK HID THE OIL| +|08/01/2022 05:25:42| |COME TO SAVE THE MOTHERFUCKING DAY YEAH| +|08/01/2022 05:25:42| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:42| |U S A U S A U S A U S A U S A U S A U S A U S A| +|08/01/2022 05:25:42| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:43| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:43| |HI HI HE IN THE FIELD ARTILLERY| +|08/01/2022 05:25:43| |USA ALL THE WAY| +|08/01/2022 05:25:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:44| |U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! | +|08/01/2022 05:25:45| |I CLAPPED| +|08/01/2022 05:25:46| |VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA | +|08/01/2022 05:25:46| |i hate america| +|08/01/2022 05:25:46| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:46| |FUCK YEAH| +|08/01/2022 05:25:46| USA +|08/01/2022 05:25:47| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:47| |HEARD YOU GIRLS WERE IN NEED OF SOME FREEDOM!| +|08/01/2022 05:25:47| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:48| |SUPA GALASHI DESU| +|08/01/2022 05:25:48| |SEMEN SHIPMENTS INCOMING| +|08/01/2022 05:25:48| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:50| AMERICA +|08/01/2022 05:25:51| |i wish i had a recreational c-5| +|08/01/2022 05:25:51| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:52| |Orai to poor to buy fighters| +|08/01/2022 05:25:52| |ENEMY AC-130 ABOVE| +|08/01/2022 05:25:52| |VSA VSA VSA | +|08/01/2022 05:25:53| |SANDASU SUPA GALAXUY| +|08/01/2022 05:25:53| |America bought you out| +|08/01/2022 05:25:54| |USA USA USA US AUAS USA UAS USA USA USA USA USA USA UAS USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:54| |USA USA USA USA USA USA| +|08/01/2022 05:25:55| |the cia is after mext| +|08/01/2022 05:25:55| |SUPA GALAXY| +|08/01/2022 05:25:55| |US KAY| +|08/01/2022 05:25:56| |I LOST ALL OF MY TANKS IN A BOATING ACCIDENT| +|08/01/2022 05:25:56| |DID I HEAR OIL? THAT SHIT MINE| +|08/01/2022 05:25:56| |Fuel Air Bomb deployed| +|08/01/2022 05:25:56| |DAIJOUBU NAN DESUKA| +|08/01/2022 05:25:57| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:59| USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +|08/01/2022 05:26:00| |>saunders of all shits| +|08/01/2022 05:26:00| |USA USA USA USA| +|08/01/2022 05:26:01| |SHII GO-EMU!| +|08/01/2022 05:26:01| |ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTAD| +|08/01/2022 05:26:02| |USA USA USA USA USA USA| +|08/01/2022 05:26:03| |so why are 16 year olds piloting a cargo plane| +|08/01/2022 05:26:03| ANZU +|08/01/2022 05:26:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:04| |STEALING IS WRONG!| +|08/01/2022 05:26:05| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:05| |lol we lost the tonks lmao| +|08/01/2022 05:26:05| |We're here to liberate your tanks!| +|08/01/2022 05:26:05| |kept yo uwaiting huh?| +|08/01/2022 05:26:05| |ARISA I LOVE YOUUUU| +|08/01/2022 05:26:06| """""lost""""" +|08/01/2022 05:26:06| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:26:07| |HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY | +|08/01/2022 05:26:07| |THANK YOU THANK YOU| +|08/01/2022 05:26:07| SANKYU +|08/01/2022 05:26:09| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:09| |tragic boating accident| +|08/01/2022 05:26:09| |VSA VSA VSA | +|08/01/2022 05:26:09| |JOINING THE KAY KAY KAY| +|08/01/2022 05:26:11| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:12| |CIA interfering with sensado| +|08/01/2022 05:26:13| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:13| |DAILY FLYBYS OVER NAGASAKI| +|08/01/2022 05:26:13| |raving Anzu| +|08/01/2022 05:26:14| |SANKYUU SANKYUU| +|08/01/2022 05:26:14| |Yeah we just lost all of our tanks | +|08/01/2022 05:26:14| |HARRY APU| +|08/01/2022 05:26:15| |ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTAD| +|08/01/2022 05:26:15| Sankyuu +|08/01/2022 05:26:16| |I LOVE KAY| +|08/01/2022 05:26:16| |COMING AGAIN TO SAVE THE MOTHERFUCKING SAY YEAH| +|08/01/2022 05:26:16| |My nice wife Kay is so helpful!| +|08/01/2022 05:26:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:17| |hari ap| +|08/01/2022 05:26:18| |Hurrah Uppu| +|08/01/2022 05:26:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:19| |I am Arisa's boyfriend. Ask me anything.| +|08/01/2022 05:26:19| |sank you sank you| +|08/01/2022 05:26:21| SANKYUUU +|08/01/2022 05:26:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:22| |For once, Freedom is Free| +|08/01/2022 05:26:23| 39 +|08/01/2022 05:26:23| |AND THE ARMY GOES ROLLING ALONG| +|08/01/2022 05:26:25| |what a tragic boating accident mr mext| +|08/01/2022 05:26:28| |It ain't theft; it's appropriation| +|08/01/2022 05:26:28| |Spank Arisa Y/Y| +|08/01/2022 05:26:29| |USA USA USA USA| +|08/01/2022 05:26:30| |How is someonme as thic as Kay only 16 yers| +|08/01/2022 05:26:31| |>THE SILVERPLATES ARE HERE AGAIN!| +|08/01/2022 05:26:32| |Why did you dump her?| +|08/01/2022 05:26:32| |MERICA INTERFERING IN OTHERS AFFAIRS| +|08/01/2022 05:26:33| |o7 I LOVE AMERICA| +|08/01/2022 05:26:33| |Reaching 30k danmaku | +|08/01/2022 05:26:35| |Why is Arisa a shitter?| +|08/01/2022 05:26:35| |does Kay smuggle cocaine between ships to fuel Saunder's immense budget?| +|08/01/2022 05:26:36| |USS LIBERTY| +|08/01/2022 05:26:36| |FIREBOMBING CHI-HAI TAN EVERY DAY| +|08/01/2022 05:26:37| |MIHO, I'M MEXT| +|08/01/2022 05:26:37| |Overloaded C5| +|08/01/2022 05:26:37| Y +|08/01/2022 05:26:41| |I'm off to sleep, it's been fun| +|08/01/2022 05:26:42| |>they never bring them back| +|08/01/2022 05:26:43| |Remember to steal the copper from the walls!| +|08/01/2022 05:26:45| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:26:45| |kAY IS AMERICAN THATS WHY SHE'S THICK| +|08/01/2022 05:26:45| |o7 Godspeed| +|08/01/2022 05:26:47| |yes mext that's right, a boating accident| +|08/01/2022 05:26:48| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:26:48| |Takeshi has fucked every girl im Saunders except Alisa| +|08/01/2022 05:26:49| |goodnight anon| +|08/01/2022 05:26:50| |CRASHING THIS PLANE| +|08/01/2022 05:26:50| |why is saunders flying so close to the towers?| +|08/01/2022 05:26:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:51| |REMINDER HIGH SCHOOL GIRLS HAVE A PILOTS LICENSE| +|08/01/2022 05:26:52| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:26:53| |CARBON COATED C5 ENGINES| +|08/01/2022 05:26:53| |All our sensha were lost in a tragic boating accident, ATF BTFO| +|08/01/2022 05:26:54| |200m takeoff roll| +|08/01/2022 05:26:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:55| |Lease lend| +|08/01/2022 05:26:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:57| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:57| |RAMIREZ, THERE'S A STINGER ON THE ROOF OF THAT BURGET TOWN, GET TO IT| +|08/01/2022 05:26:57| USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +|08/01/2022 05:27:00| |WITH NO SURVIVORS| +|08/01/2022 05:27:00| |WHY WOULD YOU SHOOT A TANK BEFORE THROWING IT OUT OF APLNE| +|08/01/2022 05:27:01| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:27:01| ' +|08/01/2022 05:27:02| |they're never getting those tanks back| +|08/01/2022 05:27:03| |THE RIGHT FOR GUPPIES TO OWN TANKS SHALL NOT BE INFRINGED| +|08/01/2022 05:27:03| |Carbon Coated planes| +|08/01/2022 05:27:03| |protect Anzus flat chest| +|08/01/2022 05:27:04| |I HAVE 15 TANKS LEFT BECAUSE I LIED TO THOSE COMMIE BASTARDS| +|08/01/2022 05:27:05| |Takeshi is a lucky man| +|08/01/2022 05:27:06| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:27:08| |TANKS PROTECTED| +|08/01/2022 05:27:11| |they should've released them in the ocean | +|08/01/2022 05:27:12| |RAMIREZ, MOVE YOUR ASS!| +|08/01/2022 05:27:13| |How do you "lose" a tank?| +|08/01/2022 05:27:13| |THEY GIVE THEM BACK RIGHT?| +|08/01/2022 05:27:13| |I saw GUTS| +|08/01/2022 05:27:15| |>surrendering your guns| +|08/01/2022 05:27:15| |I love carbon coated takeoff rolls| +|08/01/2022 05:27:18| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:27:21| ;_; +|08/01/2022 05:27:22| |THANKS TL| +|08/01/2022 05:27:23| |THX TL| +|08/01/2022 05:27:25| |tanks tl| +|08/01/2022 05:27:26| |my bladder is exploding| +|08/01/2022 05:27:27| ;-; +|08/01/2022 05:27:28| |ty tl| +|08/01/2022 05:27:28| |you lose a tank just like i lost all my guns ina boating accident| +|08/01/2022 05:27:28| SAYONARA +|08/01/2022 05:27:30| |They lost all of them on the boat somehow to begin with| +|08/01/2022 05:27:30| |THE END| +|08/01/2022 05:27:30| |THANKS TL| +|08/01/2022 05:27:32| |>entrusting your entire army to americans| +|08/01/2022 05:27:32| TOOOOOOOOOOOOOOT +|08/01/2022 05:27:33| |boko is still on the ship turn back!| +|08/01/2022 05:27:34| |TL Note: Mext is Sext| +|08/01/2022 05:27:34| ;_; +|08/01/2022 05:27:35| |Go piss purpleanon| +|08/01/2022 05:27:35| |TL NOTE: ANZU IS MY LOVING WIFE| +|08/01/2022 05:27:35| Anzu +|08/01/2022 05:27:36| |pretend slut| +|08/01/2022 05:27:36| |Go pee anon| +|08/01/2022 05:27:39| |Yukari is moving in with me by the way| +|08/01/2022 05:27:41| ARIGATOU +|08/01/2022 05:27:42| |a terrible day for rain| +|08/01/2022 05:27:42| |WHATS GONNA HAPPEN NEXT| +|08/01/2022 05:27:42| |tanks tl| +|08/01/2022 05:27:44| |Pretty sad ending tbh, | +|08/01/2022 05:27:44| |cute bunnies| +|08/01/2022 05:27:45| ;_;7 +|08/01/2022 05:27:45| TOOOOOOOOOOOOOT +|08/01/2022 05:27:46| |sayonara Zuikaku ;_;| +|08/01/2022 05:27:46| |shouldve pissed during the intermission| +|08/01/2022 05:27:46| ;_;7 +|08/01/2022 05:27:46| |CONCENTRATION CAMP ARC| +|08/01/2022 05:27:47| |>boyfriend SLUT| +|08/01/2022 05:27:49| |Well at least it's not raining| +|08/01/2022 05:27:49| |imagine the smell beneath those bunny cunny skirts| +|08/01/2022 05:27:49| SAYONARA~! +|08/01/2022 05:27:50| |Don't worry, they'll make a shitty rip off anime about you| +|08/01/2022 05:27:51| |how tf they even scrap that| +|08/01/2022 05:27:51| ;____________; +|08/01/2022 05:27:51| SAYOUNARA +|08/01/2022 05:27:52| |damn this is some shat shit| +|08/01/2022 05:27:52| |It's raining| +|08/01/2022 05:27:53| |COME BACK I CANT LEAVE WITHOUT YOU| +|08/01/2022 05:27:53| |autism sounds| +|08/01/2022 05:27:54| |Ikanaide ;___;7| +|08/01/2022 05:27:54| |AZSAAA :;_;| +|08/01/2022 05:27:54| ;_;7 +|08/01/2022 05:27:55| ;-;7 +|08/01/2022 05:27:56| SAYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:27:57| BRAZIL +|08/01/2022 05:27:57| |MY HOME ;_;| +|08/01/2022 05:27:58| ;__; +|08/01/2022 05:27:58| SAYONARA +|08/01/2022 05:27:58| |Saki not cheering| +|08/01/2022 05:27:59| magic +|08/01/2022 05:27:59| ;_; +|08/01/2022 05:28:00| |autist in the back| +|08/01/2022 05:28:00| ;_;7 +|08/01/2022 05:28:00| ;-; +|08/01/2022 05:28:01| ;__;7 +|08/01/2022 05:28:01| F +|08/01/2022 05:28:01| ;_________________; +|08/01/2022 05:28:01| ;_; +|08/01/2022 05:28:01| |fact: THE GNOMES(ENGINEER LOLIS) ARE STILL ON THE SHIP AND WON'T LEAVE| +|08/01/2022 05:28:02| SAYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:28:02| SAYONARAAAAAAAAAAAAAAAA +|08/01/2022 05:28:02| SYONARARARARARAR +|08/01/2022 05:28:02| ;_; +|08/01/2022 05:28:03| ;_;7 +|08/01/2022 05:28:03| ;_;7 +|08/01/2022 05:28:05| ;_;7 +|08/01/2022 05:28:05| |"Fuck the Fed" - Oarai High School| +|08/01/2022 05:28:06| |jews did this| +|08/01/2022 05:28:06| |SAYONARA ;_______________________;7| +|08/01/2022 05:28:07| |I-is it raining? ;_;| +|08/01/2022 05:28:07| fwip +|08/01/2022 05:28:07| SAYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:28:08| ;_;7 +|08/01/2022 05:28:08| サヨウナラ +|08/01/2022 05:28:08| |Literally ruined by autistic flag shit| +|08/01/2022 05:28:09| |WAVE THE FLAG| +|08/01/2022 05:28:09| |Only the tanks girls lived on the boat?| +|08/01/2022 05:28:09| ;_; +|08/01/2022 05:28:09| SAYONARAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:28:11| ;_; +|08/01/2022 05:28:11| ;_; +|08/01/2022 05:28:12| |It's raining| +|08/01/2022 05:28:16| |The shark team is still onboard| +|08/01/2022 05:28:17| |ya it's raining| +|08/01/2022 05:28:20| |THESE ARE WIERD TANKS| +|08/01/2022 05:28:21| |FIRST 911 AND NOW THIS | +|08/01/2022 05:28:22| |good night sweet prince| +|08/01/2022 05:28:22| |Saki is too autistic to understand what's happening | +|08/01/2022 05:28:22| BANSISHED +|08/01/2022 05:28:23| |JEWS could be here, he thought.| +|08/01/2022 05:28:24| |Landlocked like peasants now| +|08/01/2022 05:28:27| |that ship is worth more than 80% of the world's nations| +|08/01/2022 05:28:31| |Going to Chernobyl be like| +|08/01/2022 05:28:32| |what kind of tanks are these| +|08/01/2022 05:28:32| BUFFERING +|08/01/2022 05:28:33| |Girls and Buses| +|08/01/2022 05:28:35| |TO THE CAMPS| +|08/01/2022 05:28:38| |TL NOTE: Anzu is Renta's cunnywife| +|08/01/2022 05:28:40| |Weird-looking tanks...| +|08/01/2022 05:28:41| |50000 tanks used to live here| +|08/01/2022 05:28:41| |>there are landlubbers watching this stream| +|08/01/2022 05:28:42| |everyone is based| +|08/01/2022 05:28:44| BUSSY +|08/01/2022 05:28:44| |CAMPS AND MAKE EM LAMPS| +|08/01/2022 05:28:45| |Life is about losing friends you see| +|08/01/2022 05:28:46| |panzer tl| +|08/01/2022 05:28:48| |we /n/ now| +|08/01/2022 05:28:50| |>Sorted based on their clubs| +|08/01/2022 05:28:52| |Bros, we're homeless... like Jews...| +|08/01/2022 05:28:53| |they are going to the camps| +|08/01/2022 05:28:54| |retard shit| +|08/01/2022 05:28:55| |WE GAAAN| +|08/01/2022 05:28:55| |CAMP ARC| +|08/01/2022 05:28:56| |doubly landlocked mating press with the entire oorai student body| +|08/01/2022 05:28:57| |This entire evacuation thing reminds me of chernobyl to be honest and I'm glad someone said it before me| +|08/01/2022 05:28:57| |Bus sex with Anzu uoh]| +|08/01/2022 05:28:57| HUNGRY +|08/01/2022 05:28:58| |girls und buses| +|08/01/2022 05:28:58| |fat fuck lol| +|08/01/2022 05:28:59| ;_; +|08/01/2022 05:29:00| |>A LAND SCHOOL| +|08/01/2022 05:29:04| |Saorio you fat fuck| +|08/01/2022 05:29:04| |Damn this reminds me the final epsiode of that cute girls manning a destroyer anime| +|08/01/2022 05:29:04| |never forget the shoah oy vey| +|08/01/2022 05:29:05| |can those buses deflect 75mm rounds/| +|08/01/2022 05:29:06| |panzer camp| +|08/01/2022 05:29:07| |let's eat snacks together, anons| +|08/01/2022 05:29:07| |Pack all your stuff, but you have to leave it on the boat. What the hell, MEXT?| +|08/01/2022 05:29:10| |Girls und Lumberjacking| +|08/01/2022 05:29:10| |Girls Und Concentration Camp| +|08/01/2022 05:29:13| |>land school| +|08/01/2022 05:29:14| |Wilkommen in den Konzentratzionslager| +|08/01/2022 05:29:15| |Momo dumb| +|08/01/2022 05:29:19| |Girls und Dachau| +|08/01/2022 05:29:20| |>nobody will ever ask you whether you're diejobuh| +|08/01/2022 05:29:21| |ANZU WILL SAVE US BROS| +|08/01/2022 05:29:21| |>he goes to school on land| +|08/01/2022 05:29:23| |Girls und Dormitories| +|08/01/2022 05:29:24| |"LAND SCHOOL"| +|08/01/2022 05:29:26| |ARBEIT MACHT FREI| +|08/01/2022 05:29:28| |Anzu always thinks of something| +|08/01/2022 05:29:30| |>land plebs| +|08/01/2022 05:29:30| |All these nameless cuties| +|08/01/2022 05:29:31| |where are their parents?| +|08/01/2022 05:29:31| |wife material| +|08/01/2022 05:29:32| BUTT +|08/01/2022 05:29:33| butt +|08/01/2022 05:29:35| |pekoe, have you heard the saying "work will set you free"?| +|08/01/2022 05:29:36| |Yukari is strong and cute| +|08/01/2022 05:29:36| |Girls Und Sp*m| +|08/01/2022 05:29:36| butt +|08/01/2022 05:29:36| BUTT +|08/01/2022 05:29:37| |SCHOOL GIRLS.....EROTIC| +|08/01/2022 05:29:37| |I always think of Anzu| +|08/01/2022 05:29:38| |BUTT spotted| +|08/01/2022 05:29:39| |Are you daijoubu, anon?| +|08/01/2022 05:29:40| |she likes humming that song huh| +|08/01/2022 05:29:40| BUTT +|08/01/2022 05:29:40| |WHEN JOHNNY COMES MARCHING HOME AGAIN| +|08/01/2022 05:29:41| |CUTE YUKARIN| +|08/01/2022 05:29:42| sausage... +|08/01/2022 05:29:42| |Floof best girl| +|08/01/2022 05:29:45| ;_; +|08/01/2022 05:29:52| ;__; +|08/01/2022 05:29:54| |wh-where'd every one?| +|08/01/2022 05:29:55| |YUKARI LEGS| +|08/01/2022 05:29:58| |>literally can see the see right now| +|08/01/2022 05:29:58| |And we'll all feel gay when | +|08/01/2022 05:29:58| |>BEING A HILL PLEB| +|08/01/2022 05:29:59| |BASED BURGERS| +|08/01/2022 05:29:59| |i hate land| +|08/01/2022 05:30:02| |>inferior hills| +|08/01/2022 05:30:02| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:03| |VSA VSA VSA| +|08/01/2022 05:30:03| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:03| |USA USA USA USA| +|08/01/2022 05:30:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:03| |SENSHA GA KITA~!| +|08/01/2022 05:30:03| |just a bunch of landlubbers now| +|08/01/2022 05:30:04| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:05| |Tank delivery.| +|08/01/2022 05:30:06| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:06| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:07| |America: supplying the world's freedom fighters since 1776| +|08/01/2022 05:30:07| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:07| |USA USA USA USA| +|08/01/2022 05:30:08| |Haibane renmei is GuP done right| +|08/01/2022 05:30:08| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:09| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:09| |Imagine the country is just one big boat girls| +|08/01/2022 05:30:09| USAAAAAAAAAAAA +|08/01/2022 05:30:10| |USA USA USA USA USA| +|08/01/2022 05:30:10| |USA ALL THE WAY| +|08/01/2022 05:30:11| | USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:11| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:11| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:12| USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +|08/01/2022 05:30:12| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:13| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:13| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:14| |REAL AMERICAN HEROES| +|08/01/2022 05:30:14| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:14| |>QUALIFIED PILOT| +|08/01/2022 05:30:14| |>low pass based| +|08/01/2022 05:30:15| |DOG BLESS| +|08/01/2022 05:30:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:17| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:17| |>even saki runs| +|08/01/2022 05:30:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:18| |USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:18| MOMOOOOOOOOOOOOOOOOOOOO +|08/01/2022 05:30:19| |USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:19| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:19| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA UAS| +|08/01/2022 05:30:20| USAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSA +|08/01/2022 05:30:20| kinostairs +|08/01/2022 05:30:20| |USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? | +|08/01/2022 05:30:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:20| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:22| >europoors +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:22| |America is numba one!!!| +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:23| |HERE COMES NUKE NUMBER 3| +|08/01/2022 05:30:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:26| |USA USA USA USA US A USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA US A| +|08/01/2022 05:30:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:27| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:28| |USA ALL THE WAY| +|08/01/2022 05:30:28| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:29| |USA USA USA USA| +|08/01/2022 05:30:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:30| |>PULL UP PULL UP| +|08/01/2022 05:30:31| |Usa Usa Usa| +|08/01/2022 05:30:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:32| |HERE'S YOUR FUCKING TANKS| +|08/01/2022 05:30:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:33| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:33| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:33| |CIA CIA CIA CIA CIA CIA CIA| +|08/01/2022 05:30:33| |USA USA USA USA USA| +|08/01/2022 05:30:33| |HETZERBROS WE WON| +|08/01/2022 05:30:33| |COMMAND AND CONQUER BROS WW@| +|08/01/2022 05:30:34| |I CAN FEEL MY BLOOD TURN RED WHITE BLUE| +|08/01/2022 05:30:34| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:36| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:37| |Danmaku going so fadt no one will see I'm gonna pee| +|08/01/2022 05:30:38| usa +|08/01/2022 05:30:39| |USA USA USA USA USA SUA USA USA USA USAUS AUSA USA USA| +|08/01/2022 05:30:39| ????? +|08/01/2022 05:30:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:39| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:40| |GRAND THEFT SENSHA| +|08/01/2022 05:30:40| |COMING AGAIN TO SAVE THE MOTHERFUCKING DAY NOW| +|08/01/2022 05:30:41| |USA USA USA USA| +|08/01/2022 05:30:41| |there goes the MEXT guy's car| +|08/01/2022 05:30:41| |Just a little flyby| +|08/01/2022 05:30:41| |WHOOP WHOOP| +|08/01/2022 05:30:42| |BASED AMERICA| +|08/01/2022 05:30:43| |>we'll just leave em here lmao| +|08/01/2022 05:30:43| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:43| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:44| |burgers...i kneel...| +|08/01/2022 05:30:47| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:49| |YO THIS ANON IS PEEING| +|08/01/2022 05:30:50| |Land of the free| +|08/01/2022 05:30:51| |ORARI GO AMERICAN BACKING| +|08/01/2022 05:30:52| |LOW ALTITUDE| +|08/01/2022 05:30:53| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:54| |WHATEVER YOU DO DO NOT PEE| +|08/01/2022 05:30:54| |UPS UPS UPS UPS UPS UPS UPS UPS UPS UPS | +|08/01/2022 05:30:55| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:56| |Thank you Kay| +|08/01/2022 05:30:57| |FREEDOM AIN'T FREE| +|08/01/2022 05:30:57| |THEY LANDED ON ONE OF THE GIRLS| +|08/01/2022 05:30:57| |That cost at least 50 command points| +|08/01/2022 05:30:58| |I WILL SEE YOU PEE| +|08/01/2022 05:30:58| |ye sure| +|08/01/2022 05:30:58| |still jobbers| +|08/01/2022 05:30:59| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 05:30:59| |God be with you now spread your wings and fly!| +|08/01/2022 05:31:00| |haha jobbers| +|08/01/2022 05:31:00| |>Tank laundering\| +|08/01/2022 05:31:05| |alisa has a very sexy voice| +|08/01/2022 05:31:05| |the c-5m does not have tactical airlift capability| +|08/01/2022 05:31:06| |IT'S MOMOOOOOOOOOO| +|08/01/2022 05:31:07| |CUTE CHEATER| +|08/01/2022 05:31:08| POG +|08/01/2022 05:31:08| |even the bassist| +|08/01/2022 05:31:09| |Spank Naomi and Alisa Y/Y| +|08/01/2022 05:31:09| |>actual load plates Amazing detail| +|08/01/2022 05:31:09| |HOT CUNNY| +|08/01/2022 05:31:11| |>you have to fight for israel| +|08/01/2022 05:31:12| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:31:14| |Cute tryhard| +|08/01/2022 05:31:18| |What kind of punishment did Alisa receive? She seemed a lot nicer than last time| +|08/01/2022 05:31:20| |Takashi was the bassist| +|08/01/2022 05:31:20| |the meaning behind the mask| +|08/01/2022 05:31:21| Y +|08/01/2022 05:31:21| Anzu +|08/01/2022 05:31:22| |Ty TL| +|08/01/2022 05:31:22| |THANKS TL| +|08/01/2022 05:31:23| |GET HER MOMO| +|08/01/2022 05:31:26| |rape correction| +|08/01/2022 05:31:27| |sex with anzu?| +|08/01/2022 05:31:31| |look at these retards lol| +|08/01/2022 05:31:32| flat +|08/01/2022 05:31:32| |;-; sad kappas| +|08/01/2022 05:31:33| |Alisa sounds like she fucks band members (except bassists)| +|08/01/2022 05:31:33| |ORGEY | +|08/01/2022 05:31:34| |TL note: Anzu means "Uwoooooooooooh"| +|08/01/2022 05:31:35| |Cute clones| +|08/01/2022 05:31:35| lewd +|08/01/2022 05:31:35| |They've gone ferral.| +|08/01/2022 05:31:38| SEX +|08/01/2022 05:31:38| |BAD TO THE BONE| +|08/01/2022 05:31:38| ptsd +|08/01/2022 05:31:39| |abandoned children| +|08/01/2022 05:31:39| |THANKS TL ;_;| +|08/01/2022 05:31:40| |Angery mumu| +|08/01/2022 05:31:40| |so fucking cute bros| +|08/01/2022 05:31:41| |NO DISCIPLINE| +|08/01/2022 05:31:42| |EXCEPT TAKASHI| +|08/01/2022 05:31:42| |Delinquent comittee| +|08/01/2022 05:31:44| |Return to native| +|08/01/2022 05:31:45| SEEEEEEEEGGGGGGS +|08/01/2022 05:31:45| DELINQUENT +|08/01/2022 05:31:46| |TAKING ADVANTAGE AND HAVING YOUR WAY WITH ALL THE SUDAKOS| +|08/01/2022 05:31:47| |sleepy kappas| +|08/01/2022 05:31:47| |Cute sodoko| +|08/01/2022 05:31:47| kappa +|08/01/2022 05:31:47| |she looks like she's gonna break| +|08/01/2022 05:31:48| |YOUR WHAT?| +|08/01/2022 05:31:51| |SEX WITH SODOKO| +|08/01/2022 05:31:54| |literally me| +|08/01/2022 05:31:54| SEEEEEEEEEEEEEEGGGGGGGGGGGGS +|08/01/2022 05:31:56| |LITERALLY ME| +|08/01/2022 05:31:57| |Delinquent Sodoko| +|08/01/2022 05:31:57| LAZYDOKO +|08/01/2022 05:31:58| SODOKO +|08/01/2022 05:32:00| SEEEEEEEEEEEEGGGGGGGGGS +|08/01/2022 05:32:01| |cute sodoko| +|08/01/2022 05:32:01| Me +|08/01/2022 05:32:02| |me tomorrow morning| +|08/01/2022 05:32:02| |sodoclone foursome| +|08/01/2022 05:32:02| |lewd bastard poor sodoko| +|08/01/2022 05:32:02| |Why even moralize... it's hopeless| +|08/01/2022 05:32:02| |nihilist sodoko| +|08/01/2022 05:32:03| |Hai shuriyo| +|08/01/2022 05:32:05| |Punished Sodoko| +|08/01/2022 05:32:06| sodokoooooooo +|08/01/2022 05:32:07| |Me right now| +|08/01/2022 05:32:07| |Sodoko&Mako synced up| +|08/01/2022 05:32:08| |Time for the rape correction| +|08/01/2022 05:32:13| |>all those skirts IMAGINE THE SMELL| +|08/01/2022 05:32:15| Tags:moral_degradation +|08/01/2022 05:32:19| swole +|08/01/2022 05:32:19| |Girls und /fit/| +|08/01/2022 05:32:19| STRONG +|08/01/2022 05:32:19| |She's like fuck you mako| +|08/01/2022 05:32:21| |ONEGAI MUSCLE| +|08/01/2022 05:32:22| TAEKO +|08/01/2022 05:32:22| |SO RE| +|08/01/2022 05:32:23| |Does it technically count as watching the stream if I sleep on my chair???| +|08/01/2022 05:32:23| |/fit/ here| +|08/01/2022 05:32:23| /fit/ +|08/01/2022 05:32:24| |GETTING BIG| +|08/01/2022 05:32:24| /FIT/IZENS +|08/01/2022 05:32:25| SWOLE +|08/01/2022 05:32:25| |Time to get swole.| +|08/01/2022 05:32:27| /vfit/ +|08/01/2022 05:32:27| /fit/ +|08/01/2022 05:32:27| |BEACH VOLLEYBALL EPISODE| +|08/01/2022 05:32:27| |YOU'RE ALL GONNA MAKE IT, BRAH!| +|08/01/2022 05:32:28| STRONK +|08/01/2022 05:32:28| >DYELlets +|08/01/2022 05:32:30| /FIT/ +|08/01/2022 05:32:30| GOMAD +|08/01/2022 05:32:30| /fitv/! +|08/01/2022 05:32:30| GAINZ +|08/01/2022 05:32:30| |Lets get ripped!| +|08/01/2022 05:32:30| FIT +|08/01/2022 05:32:32| |/fit/ gang| +|08/01/2022 05:32:33| |GOTTA EAT BIG TO GET BIG COME ON| +|08/01/2022 05:32:34| |i'll take all three at once| +|08/01/2022 05:32:34| cute +|08/01/2022 05:32:34| |SWOLE PATROL| +|08/01/2022 05:32:36| |gonna make it| +|08/01/2022 05:32:37| |SORE DA| +|08/01/2022 05:32:37| /out/ +|08/01/2022 05:32:41| |GET FIT FOR ANIKI| +|08/01/2022 05:32:45| |they all make it bros| +|08/01/2022 05:32:46| |AZUSA CUTE| +|08/01/2022 05:32:46| |They discovered fire!| +|08/01/2022 05:32:49| |aniki ;__;| +|08/01/2022 05:32:49| |Aniki ;_;| +|08/01/2022 05:32:54| |>aniki death anniversary in less than 2 months| +|08/01/2022 05:32:55| aniki... +|08/01/2022 05:32:55| |FISH FEAR ME| +|08/01/2022 05:32:57| |how do they afford fuel ;_;| +|08/01/2022 05:32:58| |based hivemind| +|08/01/2022 05:32:58| ;__; +|08/01/2022 05:32:59| GOBY? +|08/01/2022 05:33:00| zetsubouuuuuuuuuuuuuuuuuuuuuuu +|08/01/2022 05:33:02| MIODU +|08/01/2022 05:33:03| comfy +|08/01/2022 05:33:07| |WOMEN FEAR ME| +|08/01/2022 05:33:07| |night of fire| +|08/01/2022 05:33:08| |THE SODOCLONES JUST ROBBED THAT STORE| +|08/01/2022 05:33:08| mood +|08/01/2022 05:33:09| |im waiting for duce| +|08/01/2022 05:33:09| |sleepy time| +|08/01/2022 05:33:10| |Delinquent clones| +|08/01/2022 05:33:10| |CUT EDELINQUENTS| +|08/01/2022 05:33:10| |aniki smiles upon ye| +|08/01/2022 05:33:10| PAJAMA +|08/01/2022 05:33:14| zzzzz +|08/01/2022 05:33:15| |They really are homeless| +|08/01/2022 05:33:16| |Girls und Slice of Life| +|08/01/2022 05:33:19| |how many years has it been now bros?| +|08/01/2022 05:33:20| |Girls und Duce| +|08/01/2022 05:33:21| |Imagine rping the Sodoklones| +|08/01/2022 05:33:24| |Ganbare Boko| +|08/01/2022 05:33:25| |Girls und Nothing| +|08/01/2022 05:33:25| |holding up combini with tanks| +|08/01/2022 05:33:30| |that's against school regulations| +|08/01/2022 05:33:31| |10 years now| +|08/01/2022 05:33:32| |Girls Und Squaters| +|08/01/2022 05:33:34| |Girls und Nihlism| +|08/01/2022 05:33:35| |consesual sex with the sodoclones!| +|08/01/2022 05:33:38| SLUT +|08/01/2022 05:33:38| |yeah ok saori| +|08/01/2022 05:33:39| |>saori >marrying| +|08/01/2022 05:33:40| |Saori Arranged Marriage| +|08/01/2022 05:33:44| >marrying +|08/01/2022 05:33:45| |>Using tanks as cars| +|08/01/2022 05:33:45| |raising our 40 sodoclone children!| +|08/01/2022 05:33:47| |I skip the part between battles when rewatching the film. Honestly forgot this was even here| +|08/01/2022 05:33:51| a +|08/01/2022 05:33:53| |MAMA TAIMU| +|08/01/2022 05:34:00| |marriage? are you sersious anon? have you seen "THAT DANCE"????!??!?!?!| +|08/01/2022 05:34:01| |homeless people be like| +|08/01/2022 05:34:01| |UH OH| +|08/01/2022 05:34:06| |SHIHO HERE I COME| +|08/01/2022 05:34:16| |Miho completely ignoring Hana for a boko sign| +|08/01/2022 05:34:18| |I HATE BOKO STUPID FUCKING BEAR| +|08/01/2022 05:34:19| |Maho can adopt Miho | +|08/01/2022 05:34:19| |NAKADASHI SHIHO| +|08/01/2022 05:34:20| BOKO +|08/01/2022 05:34:21| |Can Miho even move back in with shiho?| +|08/01/2022 05:34:22| |ITS FUCKING BOKO HOLY SHIT GUYS STOP THE TANK | +|08/01/2022 05:34:23| |OPERATION PUNCHY?| +|08/01/2022 05:34:24| STOP!!!! +|08/01/2022 05:34:25| |And here comes the worst part of the film| +|08/01/2022 05:34:29| |sex with boko| +|08/01/2022 05:34:29| |IN THE NAME OF BOKO!| +|08/01/2022 05:34:29| Bokoland! +|08/01/2022 05:34:31| |HOLY FUCK ITS BOKO| +|08/01/2022 05:34:31| |IS THAT MOTHERFUCKING BOKO| +|08/01/2022 05:34:31| |Time to get WACKY!| +|08/01/2022 05:34:32| |THE BEAR| +|08/01/2022 05:34:32| |ITS FUCKING BOKO| +|08/01/2022 05:34:33| |BOKOO | +|08/01/2022 05:34:35| |HOLY SHIT STOP ITS BOKO| +|08/01/2022 05:34:35| BOKO +|08/01/2022 05:34:36| BOKO +|08/01/2022 05:34:36| |BOKO GANBARE| +|08/01/2022 05:34:36| BOKO +|08/01/2022 05:34:36| |Miho wants to fuck a Boko| +|08/01/2022 05:34:37| |BOKO WE LOVE YOU| +|08/01/2022 05:34:37| BOKOOOOOOOOOOOOOOOO!! +|08/01/2022 05:34:38| BOKO +|08/01/2022 05:34:39| |THE FUCK DID YOU SAY ABOUT BOKO| +|08/01/2022 05:34:40| BOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKO +|08/01/2022 05:34:40| BOKO +|08/01/2022 05:34:40| |B O K O| +|08/01/2022 05:34:41| |BOKO HARAM| +|08/01/2022 05:34:41| |HOLY SHIT BOKO?!?!?!?!?!?!??!?!?!| +|08/01/2022 05:34:41| hauuuuuu~ +|08/01/2022 05:34:41| CUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 05:34:41| |BOKO HARAM| +|08/01/2022 05:34:42| |BOKO BOKO SLUT| +|08/01/2022 05:34:42| |BOKO BOKO| +|08/01/2022 05:34:42| |BOKO AUTISM| +|08/01/2022 05:34:42| |BOKO DA| +|08/01/2022 05:34:43| |HOLY SHIT ITS BOKO| +|08/01/2022 05:34:43| |HOLY SHIT ITS BOKO| +|08/01/2022 05:34:43| |GANBARE BOKO!| +|08/01/2022 05:34:43| |Tankfags, how many miles per gallon does a panzer get?| +|08/01/2022 05:34:43| BOKO +|08/01/2022 05:34:43| |BOKO POGGERS| +|08/01/2022 05:34:44| BOCOCK +|08/01/2022 05:34:44| CUTE +|08/01/2022 05:34:45| BOKO +|08/01/2022 05:34:45| |her smile and optimism: RESTORED| +|08/01/2022 05:34:47| BOKO +|08/01/2022 05:34:48| BOKOOOO +|08/01/2022 05:34:48| |GANBARE BOKOOOOOOOO!!!!!!!| +|08/01/2022 05:34:48| |Fuckin Silent Hill 2 in here| +|08/01/2022 05:34:48| |YOU GOT THIS BOKO KEEP FIGHTING| +|08/01/2022 05:34:49| BOKO +|08/01/2022 05:34:49| BOKO! +|08/01/2022 05:34:49| |It's eat up like the real Boko!!| +|08/01/2022 05:34:49| BOKO +|08/01/2022 05:34:49| CUTE +|08/01/2022 05:34:51| |YATTE YARU YATTE YARU YATTE YARUZE| +|08/01/2022 05:34:51| |Miho is so fucking cute bros| +|08/01/2022 05:34:52| BKO +|08/01/2022 05:34:53| BOKO +|08/01/2022 05:34:53| |Operation punchy!| +|08/01/2022 05:34:54| |Ganbare Boco| +|08/01/2022 05:34:54| ;_; +|08/01/2022 05:34:54| |TOY BEAR > YOU| +|08/01/2022 05:34:55| |Stupid bear| +|08/01/2022 05:34:55| |COME ON BOKO| +|08/01/2022 05:34:56| |GARBAGE BEAR| +|08/01/2022 05:34:57| |YATTE YARU| +|08/01/2022 05:34:59| |BOKO ;_;| +|08/01/2022 05:34:59| |GAAANNNBBAAREE BOOOKOOO!| +|08/01/2022 05:34:59| |TIME FOR BEST GIRL'S INTRODUCTION| +|08/01/2022 05:35:00| |GUYS ITS BOKO| +|08/01/2022 05:35:00| |boko boko| +|08/01/2022 05:35:01| FIGHT +|08/01/2022 05:35:04| |WHAT A DUMP| +|08/01/2022 05:35:05| |>ITALY BTFO| +|08/01/2022 05:35:05| |uuuoooh when?| +|08/01/2022 05:35:06| BTFO +|08/01/2022 05:35:06| |BOKO BOKO BOKO BOKO| +|08/01/2022 05:35:07| |GANBARE, BOKO| +|08/01/2022 05:35:07| |kek yukari styling on italy| +|08/01/2022 05:35:08| LMAO +|08/01/2022 05:35:08| |I love Boko| +|08/01/2022 05:35:09| >shitaly +|08/01/2022 05:35:09| d-duce +|08/01/2022 05:35:10| |ITALY BTFO| +|08/01/2022 05:35:10| |BOKO LETS FUCKING GOOOOOO| +|08/01/2022 05:35:10| |ITALY BTFO| +|08/01/2022 05:35:12| |YOU CAN THIS!| +|08/01/2022 05:35:13| |Pasta bros...| +|08/01/2022 05:35:13| |ITALY BTFO| +|08/01/2022 05:35:14| |BOKO CULT BOKO CULT| +|08/01/2022 05:35:14| |BOKO WORLD| +|08/01/2022 05:35:16| |BOKO IS MY WIFE!| +|08/01/2022 05:35:17| >ducew +|08/01/2022 05:35:18| |BOKO BOKO'D| +|08/01/2022 05:35:18| |YOU CAN THIS!| +|08/01/2022 05:35:19| |OH NO ITALYBROS...| +|08/01/2022 05:35:20| |Wow, calling out Italy like that| +|08/01/2022 05:35:20| |Italy absolutely destroyed| +|08/01/2022 05:35:20| |YOU CAN THIS| +|08/01/2022 05:35:22| |BOKO GANBARE| +|08/01/2022 05:35:22| |Look at how happy that retard miho is| +|08/01/2022 05:35:24| GANBARE!!! +|08/01/2022 05:35:24| |me on the left| +|08/01/2022 05:35:25| |COME ON BOKO| +|08/01/2022 05:35:27| |Is Miho OK| +|08/01/2022 05:35:27| |OH NO BOKO WATCH OUT| +|08/01/2022 05:35:28| |CUTE MIHO| +|08/01/2022 05:35:28| |BOKO ;_;| +|08/01/2022 05:35:28| |GANBARE BOKO| +|08/01/2022 05:35:28| |It's a boko kinda world| +|08/01/2022 05:35:29| |I believe in Boko| +|08/01/2022 05:35:30| |FUCK EM UP BOKO!| +|08/01/2022 05:35:31| |BOKO ;_;| +|08/01/2022 05:35:32| |YOU GOT THIS BOKO| +|08/01/2022 05:35:32| |Oh God. I wish I was Boco| +|08/01/2022 05:35:32| |ONLY MIHO CAN SEE THIS. HER MIND IS BROKEN.| +|08/01/2022 05:35:33| |\o/ GANBAREEEEEEEE| +|08/01/2022 05:35:34| |SMOL NERD!| +|08/01/2022 05:35:34| |who actually likes this crap| +|08/01/2022 05:35:34| |GANBARE BOKO| +|08/01/2022 05:35:35| COCK +|08/01/2022 05:35:36| WWW.BOKOED.COM +|08/01/2022 05:35:36| |GANBARE BOKO| +|08/01/2022 05:35:37| |Miho my autistic wife| +|08/01/2022 05:35:37| GANBARE +|08/01/2022 05:35:37| |BOKO BEST GIRL| +|08/01/2022 05:35:37| |BOKO GANBARE| +|08/01/2022 05:35:37| |GANBARE BOKO| +|08/01/2022 05:35:38| |BOKOOOOOOOOOO NOOOOOOOOOOOOOO| +|08/01/2022 05:35:38| |GANBARE \o/| +|08/01/2022 05:35:38| |GANBARE BOKO| +|08/01/2022 05:35:38| |GANBARE BOKO| +|08/01/2022 05:35:38| |KEEP FIGHTING BOKO| +|08/01/2022 05:35:38| |CHEER LOUDER| +|08/01/2022 05:35:39| |Killed or be Killed, Jack| +|08/01/2022 05:35:39| GANBARE +|08/01/2022 05:35:39| |GANBARE BOKO| +|08/01/2022 05:35:39| Ganabre! +|08/01/2022 05:35:39| |MY HEART!!!| +|08/01/2022 05:35:40| |GANBAREEEEEEEEEE BOKOOO| +|08/01/2022 05:35:40| BOKOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 05:35:40| |GANBARE | +|08/01/2022 05:35:40| |GANBARE BOKO| +|08/01/2022 05:35:41| |GANBARE BOKO| +|08/01/2022 05:35:41| Arisu... +|08/01/2022 05:35:41| |COME ON BOKO| +|08/01/2022 05:35:42| |GO BOKO| +|08/01/2022 05:35:43| GANBARE +|08/01/2022 05:35:43| ALICE +|08/01/2022 05:35:43| |BOKO | +|08/01/2022 05:35:44| |GANBAREEEE BOKO| +|08/01/2022 05:35:45| |GANBARE BOKO| +|08/01/2022 05:35:45| |GANBARE BOKO| +|08/01/2022 05:35:46| |GANBARE BOKO!!| +|08/01/2022 05:35:46| |GANBARE BOKO| +|08/01/2022 05:35:46| |BOKO GANBARE| +|08/01/2022 05:35:46| GANBAREEEEEEEEEEEEEEEEEE +|08/01/2022 05:35:46| UOOOOOOOHHHHHHHHHHHHHHHH +|08/01/2022 05:35:47| |miho is a psycho wtf| +|08/01/2022 05:35:47| GANBARE +|08/01/2022 05:35:48| |COME ON BOKO| +|08/01/2022 05:35:48| |GO BOKO| +|08/01/2022 05:35:49| |GANBARE BOKO| +|08/01/2022 05:35:49| GANBAREEEE +|08/01/2022 05:35:50| |GANBARE BOKO| +|08/01/2022 05:35:50| GANBAREEEEEEEEEEE +|08/01/2022 05:35:50| |Boko fightO| +|08/01/2022 05:35:50| |GANBARE BOKO| +|08/01/2022 05:35:51| |HOLY SHIT HERE IT IS | +|08/01/2022 05:35:51| |GANBARE BOKOOOOOOOOO| +|08/01/2022 05:35:51| KATAKITA +|08/01/2022 05:35:51| |WE GOOTA HELP HIM!| +|08/01/2022 05:35:51| |THERE'S THE BITCH GET HER| +|08/01/2022 05:35:51| |GANBARE BOKO| +|08/01/2022 05:35:52| GANBAREEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 05:35:52| |BOKO ;_;| +|08/01/2022 05:35:52| |Arisu teh autst| +|08/01/2022 05:35:52| OOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:35:53| |Ganbare boko!!!| +|08/01/2022 05:35:53| Arisu... +|08/01/2022 05:35:53| 頑張れぇぇぇぇぇ +|08/01/2022 05:35:54| |believe it!| +|08/01/2022 05:35:54| |DAMN KID| +|08/01/2022 05:35:55| |GAMBAREE BOKOOOO| +|08/01/2022 05:35:55| GANBAREEEEEEE +|08/01/2022 05:35:56| |THE PEAK OF ANIMATIMOMN| +|08/01/2022 05:35:57| |GANBARE BOKO!| +|08/01/2022 05:35:57| GANBAREEEEEEEEEEEEE +|08/01/2022 05:35:58| |BOKO! GANBARE!| +|08/01/2022 05:35:58| |GET UP BOKO| +|08/01/2022 05:35:58| /o/ +|08/01/2022 05:35:59| |GANBARE BOKOOO| +|08/01/2022 05:35:59| BOKOOOOOOOOOOOO +|08/01/2022 05:35:59| |Go Boko!| +|08/01/2022 05:35:59| FIGHTO +|08/01/2022 05:36:00| |BOKO GET UP| +|08/01/2022 05:36:01| |wow boko jobs| +|08/01/2022 05:36:02| |COME ON GUYS WE NEED BOKO TO GET THE DUB THIS TIME| +|08/01/2022 05:36:03| |BOKO GANBARE| +|08/01/2022 05:36:03| F +|08/01/2022 05:36:05| |FIGHT BACK| +|08/01/2022 05:36:05| |BOKO ;___;| +|08/01/2022 05:36:05| |such retarded shit| +|08/01/2022 05:36:07| |Keep it up Boko| +|08/01/2022 05:36:07| |boko being beaten up by niggers| +|08/01/2022 05:36:07| |KICK HIS ASS SEABASS| +|08/01/2022 05:36:07| |I can't believe Miho is a ryonaqueen...| +|08/01/2022 05:36:08| |CMON BOKO GET UP| +|08/01/2022 05:36:10| |I'm bleeding making me the victor| +|08/01/2022 05:36:11| >jobs +|08/01/2022 05:36:13| ARISUUUUUUUUUUUUUUUUU +|08/01/2022 05:36:15| |no dont give it to her| +|08/01/2022 05:36:16| GANBARE +|08/01/2022 05:36:17| |>10 YEARS OF GUP >STILL NO BOKO ANIME| +|08/01/2022 05:36:19| |BEAT THAT LOLI'S ASS AND TAKE IT MIHO| +|08/01/2022 05:36:20| |boko is just like pravda| +|08/01/2022 05:36:20| |MY BOKO!| +|08/01/2022 05:36:21| |UH OH| +|08/01/2022 05:36:22| |20 YEARS OLD!| +|08/01/2022 05:36:22| UOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:36:23| |EROTIC CHILD| +|08/01/2022 05:36:23| UOOOOOHHHHHHHHHH +|08/01/2022 05:36:23| |SUPER RARE| +|08/01/2022 05:36:24| NAKADASHI +|08/01/2022 05:36:25| |stream those films if you're so great| +|08/01/2022 05:36:25| UOOOOOOOOOOOOOOOOOOOOOOOOOHHHHH +|08/01/2022 05:36:27| r00d +|08/01/2022 05:36:27| CUTE +|08/01/2022 05:36:28| |ARISU MOMENT| +|08/01/2022 05:36:28| |Can't fucking believe that they're stealing merch| +|08/01/2022 05:36:30| RUDE +|08/01/2022 05:36:30| |FAIL TS| +|08/01/2022 05:36:32| |>gup is 30 years old| +|08/01/2022 05:36:33| |cute npc| +|08/01/2022 05:36:33| RUDE +|08/01/2022 05:36:37| |Miho's future wife| +|08/01/2022 05:36:37| |AT LEAST SAY THANK YOU YOU MINI AUTIST| +|08/01/2022 05:36:38| |Guys... I think I'm a lolicon| +|08/01/2022 05:36:38| |ARISU NAKADASHI| +|08/01/2022 05:36:38| autist +|08/01/2022 05:36:39| |based mext| +|08/01/2022 05:36:41| CHAD +|08/01/2022 05:36:42| |LOOK AT THAT ADORABLE UNI STUDENT| +|08/01/2022 05:36:44| |CUTE BF AND GF| +|08/01/2022 05:36:44| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:36:45| >males +|08/01/2022 05:36:45| |That side character was cute| +|08/01/2022 05:36:47| |Enter chad| +|08/01/2022 05:36:47| ENTER +|08/01/2022 05:36:48| |RANDOSERU PERSUATION| +|08/01/2022 05:36:49| |THANKS TL| +|08/01/2022 05:36:50| |Anzu paying with her body| +|08/01/2022 05:36:50| /ourguy/ +|08/01/2022 05:36:50| |smh shoulda got a pinky promise| +|08/01/2022 05:36:52| |no seriously wtf is this guys problem?| +|08/01/2022 05:36:52| |HOLY FUCK SHE'S AS TALL AS HIM SITTING DOWN| +|08/01/2022 05:36:52| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:36:54| ABUSED +|08/01/2022 05:36:55| |The agreement is being held to we got a movie| +|08/01/2022 05:36:55| |OY VEY SHUT IT DOWN| +|08/01/2022 05:36:56| ANZU +|08/01/2022 05:36:58| |>prease understando| +|08/01/2022 05:36:58| flat +|08/01/2022 05:36:58| |MADE FOR CORRECTION| +|08/01/2022 05:36:59| TREASONM +|08/01/2022 05:37:00| |PREAUSURE SUNDERASTANDTOD| +|08/01/2022 05:37:00| |Non Verbal sorry| +|08/01/2022 05:37:02| |>PUREAZE UNDERSTAND| +|08/01/2022 05:37:03| |Oh God Anzu is so hot| +|08/01/2022 05:37:04| |smug | +|08/01/2022 05:37:04| |You can have my sensha, when you pry it from MY COLD DEAD HANDS| +|08/01/2022 05:37:07| TRAIOTOR +|08/01/2022 05:37:07| |It's just business| +|08/01/2022 05:37:07| |Reminder that Anzu is Renta's wife| +|08/01/2022 05:37:09| |preasu understandu| +|08/01/2022 05:37:12| |Lawyer anons?| +|08/01/2022 05:37:12| |giga chad MEXT| +|08/01/2022 05:37:12| |MAKING DEALS WITH JEWS SHAME| +|08/01/2022 05:37:12| |WORDS MEAN NOTHING, REJECT SCHOOLSHIP| +|08/01/2022 05:37:13| |gup is actually sold in universe as merch for the team| +|08/01/2022 05:37:15| |SEX WITH ALICE A 20 YEAR OLD UNIVERSITY STUDENT| +|08/01/2022 05:37:16| "something" +|08/01/2022 05:37:18| |he did all he could to shut Ooarai down| +|08/01/2022 05:37:19| |Oh God I wish Momo is my Wife| +|08/01/2022 05:37:21| |Mans got that Gendo Ikari tint| +|08/01/2022 05:37:25| |Checks out in the eyes of the law| +|08/01/2022 05:37:27| |it's ove| +|08/01/2022 05:37:30| CUTE +|08/01/2022 05:37:31| |>momo ever doing a good job| +|08/01/2022 05:37:32| //////////////////// +|08/01/2022 05:37:37| |The rice cooker's broken and we're out of toilet paper.| +|08/01/2022 05:37:40| |lawyer here, it makes sense to me| +|08/01/2022 05:37:41| |Anzu is sexing with me| +|08/01/2022 05:37:42| |\o HEIL KAICHOU| +|08/01/2022 05:37:42| |Sudakos need rape correction| +|08/01/2022 05:37:45| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:37:45| HAMSTERS +|08/01/2022 05:37:47| |If only Momo could aim as good| +|08/01/2022 05:37:47| |Momo's doing her best - don't bully her!!!!!!| +|08/01/2022 05:38:00| |I recognize that haifuri reference. s2 when| +|08/01/2022 05:38:00| |fatass is eating all slices by himself isnt he| +|08/01/2022 05:38:00| |oji san made it in| +|08/01/2022 05:38:01| |i like this old fuck| +|08/01/2022 05:38:03| |SAORIS LOVER| +|08/01/2022 05:38:05| |ANZU UOH| +|08/01/2022 05:38:06| |fuck that guy| +|08/01/2022 05:38:07| bald +|08/01/2022 05:38:09| |FAT OLD MAN| +|08/01/2022 05:38:11| |USED TANKS| +|08/01/2022 05:38:12| |Ugly bastard| +|08/01/2022 05:38:13| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:38:13| |Press S to have bribe sex with Anzu| +|08/01/2022 05:38:14| |looked like ANN| +|08/01/2022 05:38:16| |ugly bastard| +|08/01/2022 05:38:16| |what a fat ugly old bastard| +|08/01/2022 05:38:17| |THANKS TL| +|08/01/2022 05:38:18| |where tf were you for the last 6 hours| +|08/01/2022 05:38:18| |I'M FORMING A TEAM. IT'S CALLED THE "TANK CAKE" INITIATIVE.| +|08/01/2022 05:38:19| |Saori does fuck that guy| +|08/01/2022 05:38:20| |ty tl| +|08/01/2022 05:38:24| |>trying to get the yakuza to lose face over tank funnies| +|08/01/2022 05:38:25| |holy fuck he's so bald| +|08/01/2022 05:38:26| |prease stop spamming anzu means sex| +|08/01/2022 05:38:31| |I want to correct Anzu| +|08/01/2022 05:38:35| |But Anzu does mean sex| +|08/01/2022 05:38:36| |Give him Hana| +|08/01/2022 05:38:36| |but anzu does mean sex| +|08/01/2022 05:38:38| |Anzu Means Sex| +|08/01/2022 05:38:40| prorig +|08/01/2022 05:38:42| |who the fuck keeps saying "anzu means sex" stfu| +|08/01/2022 05:38:43| |Anzu does mean sex| +|08/01/2022 05:38:44| |holy fuck its been 6 hours ._.| +|08/01/2022 05:38:45| |prog knife| +|08/01/2022 05:38:46| |Its dangerous for Anzu to even be in the same room as him| +|08/01/2022 05:38:47| |anzu means sex for procreation| +|08/01/2022 05:38:48| ? +|08/01/2022 05:38:50| traurug +|08/01/2022 05:38:52| |anzu means sex btw| +|08/01/2022 05:38:55| ANZU +|08/01/2022 05:38:55| flat +|08/01/2022 05:38:55| |is that a motherfucking ironclad???| +|08/01/2022 05:38:55| |Red Potato| +|08/01/2022 05:38:55| |TL note: Anzu means soz| +|08/01/2022 05:38:55| |anzu means sex| +|08/01/2022 05:38:56| |but anzu means sex| +|08/01/2022 05:38:56| |I want to Anzu Anzu's Anzu| +|08/01/2022 05:38:58| MAHO +|08/01/2022 05:38:59| eh? +|08/01/2022 05:38:59| |i want to touch mahos mahos| +|08/01/2022 05:38:59| |MY MAHO WIFE| +|08/01/2022 05:39:00| |Tl keeps saying anzu means sex| +|08/01/2022 05:39:00| |i just want to hug anzu| +|08/01/2022 05:39:00| |MAHO'S MAHOS| +|08/01/2022 05:39:00| |CASUAL MAHO| +|08/01/2022 05:39:01| |Did you know? Anzu means sex| +|08/01/2022 05:39:02| |cute dog| +|08/01/2022 05:39:02| |what does anzu mean please respond| +|08/01/2022 05:39:03| |Dog :)| +|08/01/2022 05:39:03| CUTE +|08/01/2022 05:39:04| |YOU JUST KNOW| +|08/01/2022 05:39:04| |Maho chan| +|08/01/2022 05:39:05| MAHO +|08/01/2022 05:39:05| |Anzu means "Uwooooohhhh"| +|08/01/2022 05:39:05| |CUTE MAHO| +|08/01/2022 05:39:06| |I love Maho| +|08/01/2022 05:39:07| |UOOOOOOOOH ;_;| +|08/01/2022 05:39:08| MAHOOOOOOOOO +|08/01/2022 05:39:08| |YOU JUST KNOW| +|08/01/2022 05:39:08| |anzu would not survive childbirth| +|08/01/2022 05:39:09| |CUTE FAMILY| +|08/01/2022 05:39:09| MAHO +|08/01/2022 05:39:09| |i'm going to breed a baseball team of mini-anzus with anzu| +|08/01/2022 05:39:10| doggy! +|08/01/2022 05:39:10| |>dog YOU JUST KNOW| +|08/01/2022 05:39:10| |WAN WAN WAN| +|08/01/2022 05:39:10| |You just know.| +|08/01/2022 05:39:10| MAHO +|08/01/2022 05:39:11| |FAT MAHOS!| +|08/01/2022 05:39:11| YJK +|08/01/2022 05:39:11| |MAHO"S MAHOS AAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 05:39:11| MAHO +|08/01/2022 05:39:13| |Cute wanko| +|08/01/2022 05:39:13| |MAHO WIFE| +|08/01/2022 05:39:14| |sex with Anzu?| +|08/01/2022 05:39:14| |CASUAL MISSIONARY WITH CASUAL MAHO| +|08/01/2022 05:39:15| |LOOK AT THE SIZE OF THEM| +|08/01/2022 05:39:16| okairi +|08/01/2022 05:39:17| MAPORIN +|08/01/2022 05:39:17| |SEEEEEEEEEEEEEEEEEX WITH MAHO| +|08/01/2022 05:39:18| BREEEEEDDDDDDD +|08/01/2022 05:39:19| BOOBA +|08/01/2022 05:39:21| |TL Note: "Anzu" means "UOHHHHH"| +|08/01/2022 05:39:25| >DISOWNED +|08/01/2022 05:39:25| |yeah maho does have bigger tits| +|08/01/2022 05:39:26| |thanks tl| +|08/01/2022 05:39:27| |Why is she walking Erika on a leash?| +|08/01/2022 05:39:27| |UOOOOOOOOOOOOOOOH ;_;| +|08/01/2022 05:39:28| so? +|08/01/2022 05:39:30| |Maho's Maho Milkers| +|08/01/2022 05:39:31| |SHIHO'S SHIHOS| +|08/01/2022 05:39:31| |Maho got some big Maho's| +|08/01/2022 05:39:36| |UOOOOH SHIHO NAKADASI| +|08/01/2022 05:39:36| |BBBOOOOOOOOOOOOOOOBBBBBBBBBBS | +|08/01/2022 05:39:37| |I did not have sexual relations with Nishizumi Maho| +|08/01/2022 05:39:38| |Maho is my wife| +|08/01/2022 05:39:44| |This is probably my favorite part of the franchise really| +|08/01/2022 05:39:45| |Miho's situation is really sad when you think about it| +|08/01/2022 05:39:45| |I want to have kids with their Mom| +|08/01/2022 05:39:47| |>mom still a cunt| +|08/01/2022 05:39:48| |this scene is so kino| +|08/01/2022 05:39:48| |bobs and vegene| +|08/01/2022 05:39:50| BOKO! +|08/01/2022 05:39:51| undisowned? +|08/01/2022 05:39:55| PANZERFAUST +|08/01/2022 05:39:57| |MOMMY MILKIES PLEASE| +|08/01/2022 05:39:57| |missile in the corner| +|08/01/2022 05:39:58| |the whole family situation is fucked| +|08/01/2022 05:40:00| UOOOOOOOOOOOOOOOOH +|08/01/2022 05:40:02| |Will shiho ever talk to miho again?| +|08/01/2022 05:40:04| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 05:40:04| UOOOOOOOOOOOH +|08/01/2022 05:40:04| |PANZERFAUST PRESENT| +|08/01/2022 05:40:04| CUTE +|08/01/2022 05:40:05| |you just know maho is gonna steal mihos used panties | +|08/01/2022 05:40:07| |make that fucking bed| +|08/01/2022 05:40:08| |cute panzerfaust| +|08/01/2022 05:40:08| |>but mom i just want to watch boko not play senshado| +|08/01/2022 05:40:08| |THAT'S FUCKING ILLEGAL| +|08/01/2022 05:40:08| ;_; +|08/01/2022 05:40:09| uoh +|08/01/2022 05:40:09| |Their childhood memories are surprisingly nice characterization in a series about tanks and shit| +|08/01/2022 05:40:09| CUTE +|08/01/2022 05:40:10| |Lovely flashback| +|08/01/2022 05:40:11| |why doesn't their dad fuck the mom? all their problems could be fixed| +|08/01/2022 05:40:11| |UOOOOOOOOOOOOOOOOOOOOOOOOOOOH PHOTO| +|08/01/2022 05:40:12| |skirts that short with thighs that slim are criminal| +|08/01/2022 05:40:12| SHH +|08/01/2022 05:40:13| |I'm just snorting in my shirt| +|08/01/2022 05:40:14| |QUICK MIHO SAVE YOUR FATHER HE'S LOCKED UP DOWNSTAIRS| +|08/01/2022 05:40:14| |that smile can melt ice| +|08/01/2022 05:40:14| |>A fucking panzerfaust| +|08/01/2022 05:40:15| |Maho is my wife| +|08/01/2022 05:40:15| OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHH +|08/01/2022 05:40:18| UUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:40:18| |Spank Miho and Maho Y/Y| +|08/01/2022 05:40:19| |sneaky maho| +|08/01/2022 05:40:19| |Maho lies about her pregnancy with that look....| +|08/01/2022 05:40:20| |Shiho signed it| +|08/01/2022 05:40:21| |CUTE ONEE-CHAN| +|08/01/2022 05:40:22| |FAIL TS| +|08/01/2022 05:40:23| FORGERY!!! +|08/01/2022 05:40:23| CUTE +|08/01/2022 05:40:23| |panzer 2 bros| +|08/01/2022 05:40:23| CUUUUUUUUUUUUUUTE +|08/01/2022 05:40:24| |THAT'S A CRIME| +|08/01/2022 05:40:24| |Kino flashback| +|08/01/2022 05:40:24| |Oh God Maho is so sexy| +|08/01/2022 05:40:25| |O S T| +|08/01/2022 05:40:25| |CUTE TANK| +|08/01/2022 05:40:27| |sex with Anzu? YES or NO| +|08/01/2022 05:40:27| |kino | +|08/01/2022 05:40:27| |you saw nothing| +|08/01/2022 05:40:29| |CUTE TONK| +|08/01/2022 05:40:30| KINO +|08/01/2022 05:40:30| |WHAT WHERE DOES MIHO LIVE IF SHE CAN'T GO?| +|08/01/2022 05:40:32| UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:40:32| |YES YES YES| +|08/01/2022 05:40:33| |Wait, that's illegal| +|08/01/2022 05:40:33| O-s-t +|08/01/2022 05:40:34| |warning, miho x maho sex scene inbound| +|08/01/2022 05:40:34| |kino track| +|08/01/2022 05:40:35| CUTE +|08/01/2022 05:40:36| |Cute child Miho!| +|08/01/2022 05:40:36| cute +|08/01/2022 05:40:36| KINO +|08/01/2022 05:40:37| ;_________________; +|08/01/2022 05:40:37| 😭😭😭 +|08/01/2022 05:40:37| KINO +|08/01/2022 05:40:39| |>5-year olds driving a tank| +|08/01/2022 05:40:41| uohhhh +|08/01/2022 05:40:42| ME +|08/01/2022 05:40:42| 😭 +|08/01/2022 05:40:43| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:40:44| |>that animation| +|08/01/2022 05:40:44| |>hip movement| +|08/01/2022 05:40:44| |DAMN KID!!| +|08/01/2022 05:40:45| |>Miho will never rape you| +|08/01/2022 05:40:46| |unironic kino| +|08/01/2022 05:40:46| uoh +|08/01/2022 05:40:46| |SEX WITH MIHO (8)| +|08/01/2022 05:40:48| |>you will never enjoy the JP countryside with your two girls and tank| +|08/01/2022 05:40:48| |>letting a kid drive a tank| +|08/01/2022 05:40:50| UOOOOOOOOOOOOOOOH +|08/01/2022 05:40:51| ;__; +|08/01/2022 05:40:51| |quit humping miho!| +|08/01/2022 05:40:51| |IT'S THE THING| +|08/01/2022 05:40:51| |NISHIZUMI STYLE CUNNNNYYYYYYYYYYYYYYYYYYYYYYY| +|08/01/2022 05:40:51| |You will never hump a panzer 2| +|08/01/2022 05:40:52| |KANI KANI KANI KANI KANI KANI| +|08/01/2022 05:40:52| |This is so sweet I love this| +|08/01/2022 05:40:52| |maho could drive a tank before she could walk| +|08/01/2022 05:40:53| |The kid... the kid... the kid... the kid...| +|08/01/2022 05:40:53| WEW +|08/01/2022 05:40:57| |Miho and Maho is so cute| +|08/01/2022 05:40:58| |Maho is very handsome| +|08/01/2022 05:40:58| Win +|08/01/2022 05:41:00| cute +|08/01/2022 05:41:01| |smug miho| +|08/01/2022 05:41:01| KINO +|08/01/2022 05:41:03| |Fail TS hire someone better| +|08/01/2022 05:41:05| |cute dork faces| +|08/01/2022 05:41:05| cute +|08/01/2022 05:41:08| WINRAR +|08/01/2022 05:41:08| |i just want miho and maho to be happy together again| +|08/01/2022 05:41:10| jumpu +|08/01/2022 05:41:11| |you will never kiss two underage daughters| +|08/01/2022 05:41:12| MUD +|08/01/2022 05:41:12| |these girls sure are cute| +|08/01/2022 05:41:14| SAVED +|08/01/2022 05:41:14| CUNNY....................................................................................................................................... +|08/01/2022 05:41:14| |Letting elementary schoolers drive a tank.| +|08/01/2022 05:41:14| |dirty cuties| +|08/01/2022 05:41:15| |Good form on that| +|08/01/2022 05:41:15| |why is this so better animated| +|08/01/2022 05:41:16| STRONG +|08/01/2022 05:41:16| |muddy niggers| +|08/01/2022 05:41:16| kek +|08/01/2022 05:41:16| |>Shiho ruined this| +|08/01/2022 05:41:17| |cute sisters| +|08/01/2022 05:41:17| UOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:41:17| |Danke tl| +|08/01/2022 05:41:18| |cute girl + boy| +|08/01/2022 05:41:22| ToT +|08/01/2022 05:41:23| |Sex in a tank| +|08/01/2022 05:41:24| |FIGHTING IN MUD WITH MIHO UOOOOOOOOOOOOOOOOHHHHHHH| +|08/01/2022 05:41:24| |Confident miho best miho| +|08/01/2022 05:41:25| |Great shot, right here.| +|08/01/2022 05:41:27| |fute and cunny| +|08/01/2022 05:41:27| |3p with them| +|08/01/2022 05:41:27| 😭😭😭😭😭😭 +|08/01/2022 05:41:28| >blackface +|08/01/2022 05:41:28| dynamic +|08/01/2022 05:41:30| 😭😭😭😭😭😭 +|08/01/2022 05:41:30| |T o T| +|08/01/2022 05:41:31| Kino... +|08/01/2022 05:41:33| |TSUNEO DIED FOR THIS| +|08/01/2022 05:41:35| |My maho wife| +|08/01/2022 05:41:35| ToT +|08/01/2022 05:41:35| |why is that funny?| +|08/01/2022 05:41:35| ToT +|08/01/2022 05:41:36| UOOOH +|08/01/2022 05:41:36| ;_; +|08/01/2022 05:41:38| KINO +|08/01/2022 05:41:40| |kino ToT| +|08/01/2022 05:41:45| NINJA +|08/01/2022 05:41:47| |it's funny because it's cute| +|08/01/2022 05:41:50| |REPENT NOW BITCH| +|08/01/2022 05:41:52| |i mean yeah i can see how it's cute but what's so funny?| +|08/01/2022 05:41:56| |ARE YOU A BAD ENOUGH DUDE TO SAVE OARAI| +|08/01/2022 05:41:57| |Why didn't shiho disown maho?| +|08/01/2022 05:41:59| |too old| +|08/01/2022 05:41:59| |FUCK YOU SHIHO| +|08/01/2022 05:42:02| him. +|08/01/2022 05:42:12| |based mex, keeping gup alive| +|08/01/2022 05:42:12| >males +|08/01/2022 05:42:13| |buracku forest| +|08/01/2022 05:42:14| |>bullying MEXT lad| +|08/01/2022 05:42:16| |MEXTbros did we perhaps get too cocky?| +|08/01/2022 05:42:19| |2 MALES IN THE SAME ROOM WTF????| +|08/01/2022 05:42:19| |BALD FUCK ENTER| +|08/01/2022 05:42:20| |Megane won't back down| +|08/01/2022 05:42:20| |WORLD CHAMPIONSHIP SEASON 2| +|08/01/2022 05:42:20| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:42:22| |Mext simps for shiho| +|08/01/2022 05:42:24| |mext bros....| +|08/01/2022 05:42:24| |I WANT SHIHO TO BERATE ME FOR NOT BEING ABLE TO GIVE HER A THIRD CHILD| +|08/01/2022 05:42:25| |You can't die before I fuck you as payback| +|08/01/2022 05:42:25| |ANZUUUUUUUUUUUUUUUuoooooooooooh 😭😭😭| +|08/01/2022 05:42:31| |BASED MOM| +|08/01/2022 05:42:34| ANZU +|08/01/2022 05:42:36| "skill" +|08/01/2022 05:42:36| |>NO LUCK| +|08/01/2022 05:42:39| |ANGRY MOM VS THE PTA| +|08/01/2022 05:42:40| |>NO LUCK| +|08/01/2022 05:42:40| |Fucking hags reeee| +|08/01/2022 05:42:40| |BITCH PLEASE| +|08/01/2022 05:42:41| wakarimashita! +|08/01/2022 05:42:42| |>NO LUCK| +|08/01/2022 05:42:42| |married impegnation sex with Anzu| +|08/01/2022 05:42:42| EHhh? +|08/01/2022 05:42:43| |the fucking nerve to shittalk her daughter| +|08/01/2022 05:42:43| |MEXT lad has it hard| +|08/01/2022 05:42:45| |THIS SHALL BE SETTLED WITH A SEX BATTLE| +|08/01/2022 05:42:45| GOTTEEM +|08/01/2022 05:42:46| |I NEED to fuck Anzu| +|08/01/2022 05:42:49| |LUCK = SHAME| +|08/01/2022 05:42:50| |I going to furiously masturbate to Mommy| +|08/01/2022 05:42:51| |she knows they have plot power| +|08/01/2022 05:42:52| |stand your ground mext| +|08/01/2022 05:42:52| |GET FUCKED TSUJI| +|08/01/2022 05:42:53| |mext had a hard life| +|08/01/2022 05:42:54| neeeeeeeee~~ +|08/01/2022 05:42:55| |The situation is under control| +|08/01/2022 05:42:58| |Renta bullied by his future wife Anzu| +|08/01/2022 05:42:58| MIKA +|08/01/2022 05:42:58| reversal +|08/01/2022 05:42:59| EX-LOVERS +|08/01/2022 05:43:01| |I've read a doujin where they fuck| +|08/01/2022 05:43:02| |I thought that was a gun for a second| +|08/01/2022 05:43:03| |HAG MEETUP| +|08/01/2022 05:43:03| |SMUG LOLI| +|08/01/2022 05:43:05| |MIKA'S MOM| +|08/01/2022 05:43:08| Hot +|08/01/2022 05:43:09| |MOMMY MOMMY| +|08/01/2022 05:43:10| |still don't get this guys objectives| +|08/01/2022 05:43:12| |Cute mom| +|08/01/2022 05:43:14| |HOT SINGLE MILF IN YOUR AREA| +|08/01/2022 05:43:15| |MOMMY MOMMY| +|08/01/2022 05:43:16| |marrying the mother the gain access to the daughter| +|08/01/2022 05:43:16| |old hag moment| +|08/01/2022 05:43:18| |Dual MILF action| +|08/01/2022 05:43:18| SHERMAN +|08/01/2022 05:43:18| |what gun would anzu use| +|08/01/2022 05:43:19| |mext is everybodies father| +|08/01/2022 05:43:20| |All i wanted was to close down their school fuck!| +|08/01/2022 05:43:21| |RUMI UOOOOH| +|08/01/2022 05:43:23| |his obj is to give us more GuP| +|08/01/2022 05:43:24| |>missing boko for a tank battle| +|08/01/2022 05:43:24| |USA USA USA| +|08/01/2022 05:43:24| |man those white shermans are hot| +|08/01/2022 05:43:24| Arisu... +|08/01/2022 05:43:25| ninja +|08/01/2022 05:43:26| |NINJA CHINPO| +|08/01/2022 05:43:28| ACTAS +|08/01/2022 05:43:29| ARISU +|08/01/2022 05:43:30| |he holds a grudge against oarai for some reason, never explained, money thing is a farse| +|08/01/2022 05:43:32| |HAGSS REEEEEE GET OUT| +|08/01/2022 05:43:33| |ninja | +|08/01/2022 05:43:35| >ACTAS +|08/01/2022 05:43:35| |ARISU UOOOOOOOOH| +|08/01/2022 05:43:35| |Bermuda attack my prostate...| +|08/01/2022 05:43:39| |recording Arisu| +|08/01/2022 05:43:40| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHH +|08/01/2022 05:43:42| |MEXT GUY IS A MARTYR\| +|08/01/2022 05:43:43| |all white shermans in the soviet winter would've been kino| +|08/01/2022 05:43:45| ACTAS +|08/01/2022 05:43:46| |BOKO'S ON STOP THE MATCH| +|08/01/2022 05:43:46| |That yuri doujin between Miho and Alice's moms| +|08/01/2022 05:43:47| |Arisu is only 13| +|08/01/2022 05:43:47| |Arisu the grey -> arisu the white| +|08/01/2022 05:43:59| |COLLEGE STUDENT| +|08/01/2022 05:44:00| |seriously though mext might have fucked shiho | +|08/01/2022 05:44:00| |lamo boko weeb| +|08/01/2022 05:44:02| |Cute Boko picnic| +|08/01/2022 05:44:02| |would you let your loli wear a skirt that short?| +|08/01/2022 05:44:03| |GANBARE BOKO MUSEUM| +|08/01/2022 05:44:03| DESTROY +|08/01/2022 05:44:05| |guuys i'lm going home boko is on| +|08/01/2022 05:44:06| |BIG phone| +|08/01/2022 05:44:06| |>20 years old| +|08/01/2022 05:44:07| |Chiyo: The fuck is a Boko?| +|08/01/2022 05:44:08| |he doesn't have any motive, literally worse villain than sword art online| +|08/01/2022 05:44:08| |can't be helped| +|08/01/2022 05:44:09| |YOU DID GET APPROVE FROM YOUR WAIFU MOTHER RIGHT ANON| +|08/01/2022 05:44:09| |RAPE CORRECTION| +|08/01/2022 05:44:10| |He became the bad guy to give us more content | +|08/01/2022 05:44:10| |boko ;_;| +|08/01/2022 05:44:12| |press M if you have Maps all over your bedroom walls| +|08/01/2022 05:44:16| |I want to bone that loli| +|08/01/2022 05:44:16| |BOKO ;_;| +|08/01/2022 05:44:16| |DAMN UNIVERSITY CHILD| +|08/01/2022 05:44:18| |give the museum carbon coating| +|08/01/2022 05:44:18| m +|08/01/2022 05:44:19| m +|08/01/2022 05:44:19| Cuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuute! +|08/01/2022 05:44:19| |I'M GONNA BREAK ARISUS BED| +|08/01/2022 05:44:19| /m +|08/01/2022 05:44:23| |I got like 2 maps| +|08/01/2022 05:44:23| |GANBARE MOMO| +|08/01/2022 05:44:26| fail +|08/01/2022 05:44:26| ded +|08/01/2022 05:44:26| |Momo dies during chair incident| +|08/01/2022 05:44:27| CHAIRS +|08/01/2022 05:44:28| >dead +|08/01/2022 05:44:28| |MOMOOO GANBAREE| +|08/01/2022 05:44:28| SEX +|08/01/2022 05:44:29| dead +|08/01/2022 05:44:29| |Poor momo| +|08/01/2022 05:44:30| |stupid momo| +|08/01/2022 05:44:30| kily +|08/01/2022 05:44:30| |KAICHOU ;_;| +|08/01/2022 05:44:31| RIP +|08/01/2022 05:44:31| F +|08/01/2022 05:44:31| GANBARE +|08/01/2022 05:44:32| L +|08/01/2022 05:44:32| |anglerfish reference| +|08/01/2022 05:44:32| |>SHE WILL NEVER SAVE YOU :_:| +|08/01/2022 05:44:32| DEAD +|08/01/2022 05:44:32| |Momo just died| +|08/01/2022 05:44:33| |what happened to momo's family| +|08/01/2022 05:44:34| HAHAHA +|08/01/2022 05:44:34| |DIE MOMO DIE| +|08/01/2022 05:44:34| |ANZU RETURNS| +|08/01/2022 05:44:35| |Mom, if I do good, could you save my fav. franchise for me?| +|08/01/2022 05:44:35| worthless +|08/01/2022 05:44:35| F +|08/01/2022 05:44:36| F +|08/01/2022 05:44:36| |actually dead| +|08/01/2022 05:44:37| |Farewell momo...| +|08/01/2022 05:44:39| ded +|08/01/2022 05:44:39| |Momo tries very hard!| +|08/01/2022 05:44:39| |carbon coated girls| +|08/01/2022 05:44:39| TADAIMA +|08/01/2022 05:44:39| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:44:39| |bAKA BAKA BAKA| +|08/01/2022 05:44:39| owned +|08/01/2022 05:44:40| OOOOOOOOOOOOOANZU +|08/01/2022 05:44:40| F +|08/01/2022 05:44:40| |DUMBASS | +|08/01/2022 05:44:40| ANZU +|08/01/2022 05:44:42| UOOOH +|08/01/2022 05:44:42| F +|08/01/2022 05:44:42| |Poor Momo| +|08/01/2022 05:44:43| |;-; | +|08/01/2022 05:44:43| cry +|08/01/2022 05:44:43| |Anzu, sex, ...| +|08/01/2022 05:44:43| momocry +|08/01/2022 05:44:43| UUUOOOH +|08/01/2022 05:44:44| |I cant beleive Momo is dead| +|08/01/2022 05:44:45| |THANKS TL| +|08/01/2022 05:44:45| |Don't bully Momo!!!!!!!!!| +|08/01/2022 05:44:46| |CUTE MOMO| +|08/01/2022 05:44:47| flat +|08/01/2022 05:44:48| KAAAIIIIIIIIIIIICHOOOOOOOOOOOOO +|08/01/2022 05:44:48| |ANZU GIVE ME SEX| +|08/01/2022 05:44:49| |PROTECT MOMO| +|08/01/2022 05:44:49| Kaichou!!!! +|08/01/2022 05:44:50| crotch +|08/01/2022 05:44:50| okaeri +|08/01/2022 05:44:51| |KAICHOUUUUUUUUUUUUUUUUUUUUUU ;_______;| +|08/01/2022 05:44:51| |;_____________; KAICHOU| +|08/01/2022 05:44:51| ;_; +|08/01/2022 05:44:52| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:44:52| anzu +|08/01/2022 05:44:52| |Anzus perfectly flat chest| +|08/01/2022 05:44:52| ;-; +|08/01/2022 05:44:52| cunnnnnyyyy +|08/01/2022 05:44:52| |her face...| +|08/01/2022 05:44:53| |UOH UOH UOH| +|08/01/2022 05:44:53| |face right in the cunny| +|08/01/2022 05:44:54| ;_; +|08/01/2022 05:44:55| |cute voice crack| +|08/01/2022 05:44:58| /u/ +|08/01/2022 05:45:00| |cute voice| +|08/01/2022 05:45:00| |tony kaku| +|08/01/2022 05:45:01| |TONY KAKU| +|08/01/2022 05:45:02| STRONK +|08/01/2022 05:45:03| |/fit/ gamers| +|08/01/2022 05:45:04| damn +|08/01/2022 05:45:05| IKU-NYA +|08/01/2022 05:45:05| |UUOOOOOOOOOH KAICHOU| +|08/01/2022 05:45:05| |FUCKING JACKED| +|08/01/2022 05:45:06| BUFFGALS +|08/01/2022 05:45:07| |TONY WILL SAVE OORAI| +|08/01/2022 05:45:08| HUEG +|08/01/2022 05:45:08| SWOLE +|08/01/2022 05:45:08| |>toses the bar FIT AF| +|08/01/2022 05:45:08| /FIT. +|08/01/2022 05:45:09| |powered up| +|08/01/2022 05:45:09| BUFF +|08/01/2022 05:45:09| |UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 05:45:09| GAINZ +|08/01/2022 05:45:12| /fit/ +|08/01/2022 05:45:13| 😭😭😭😭😭😭 +|08/01/2022 05:45:13| |GET BIG| +|08/01/2022 05:45:13| IKU-NYA +|08/01/2022 05:45:14| buffffffffer +|08/01/2022 05:45:14| FIT +|08/01/2022 05:45:14| ToT +|08/01/2022 05:45:15| |MOMO DUMB| +|08/01/2022 05:45:17| |hobo bunnies| +|08/01/2022 05:45:17| |she still crying| +|08/01/2022 05:45:18| SWOLE +|08/01/2022 05:45:19| |Ripped Nyaa| +|08/01/2022 05:45:19| 😭😭😭😭 +|08/01/2022 05:45:21| |FIT BITCH| +|08/01/2022 05:45:22| |EAT BIG TO GET BIG COME ON| +|08/01/2022 05:45:23| |sobbing momo| +|08/01/2022 05:45:25| |Cute dumb Monmo| +|08/01/2022 05:45:26| |Momo is so cute| +|08/01/2022 05:45:26| :ToT: +|08/01/2022 05:45:30| |Mallard Team killed seven people| +|08/01/2022 05:45:32| |They've gone feral| +|08/01/2022 05:45:32| |AZUSA IN ON SCREEN GUYS!!!| +|08/01/2022 05:45:33| Monobrow +|08/01/2022 05:45:33| |do you forgive Momo?| +|08/01/2022 05:45:35| |dumb deliquents| +|08/01/2022 05:45:38| >monobrow +|08/01/2022 05:45:38| NEETS +|08/01/2022 05:45:38| |who tf thinks momo is cute| +|08/01/2022 05:45:38| |lookit bunny| +|08/01/2022 05:45:40| |A PACK OF WILD SODOKOS| +|08/01/2022 05:45:41| YADA +|08/01/2022 05:45:42| mono-chan! +|08/01/2022 05:45:42| |STUPID DELINQUENTS| +|08/01/2022 05:45:43| |Get over here you shits!| +|08/01/2022 05:45:43| sodokos +|08/01/2022 05:45:44| |SODOCLONE SEEEEEEEEEEEEEX| +|08/01/2022 05:45:44| |cute delinquents| +|08/01/2022 05:45:45| |I THINK MOMO ISVERY CUTE| +|08/01/2022 05:45:46| |Feral kappas| +|08/01/2022 05:45:47| |>they're doing cucumbers in the rabbit cage| +|08/01/2022 05:45:48| sodoko +|08/01/2022 05:45:48| WAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:45:49| |no morals| +|08/01/2022 05:45:50| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +|08/01/2022 05:45:51| |NANI SORE| +|08/01/2022 05:45:54| ;_; +|08/01/2022 05:45:55| CUUUUUUUUUUUTE +|08/01/2022 05:45:57| ;_; +|08/01/2022 05:45:57| |Momo is cute! Momo does her best! Momo is a good girl!| +|08/01/2022 05:45:57| |RAPE correct them, Mako| +|08/01/2022 05:45:58| ToT +|08/01/2022 05:45:58| |Sad lolis| +|08/01/2022 05:45:59| |momo is the definition of unsexy| +|08/01/2022 05:45:59| |cutest train| +|08/01/2022 05:45:59| ;__; +|08/01/2022 05:46:00| ;_; +|08/01/2022 05:46:00| :o: +|08/01/2022 05:46:00| ;_; +|08/01/2022 05:46:01| UOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:46:02| |AS EXPECTED OF COUNTRY VEGETABLES| +|08/01/2022 05:46:03| |need moral correction| +|08/01/2022 05:46:03| |geta haircut, and join them mako| +|08/01/2022 05:46:06| |ANZU PULLS THROUGH| +|08/01/2022 05:46:15| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:46:16| |"""for sure"""| +|08/01/2022 05:46:16| ANZU +|08/01/2022 05:46:18| |MOMO SEXY NICE JOKE BRO| +|08/01/2022 05:46:18| |THANKS TL| +|08/01/2022 05:46:19| |this time for reals guys trust the plan| +|08/01/2022 05:46:20| |THANKS TL| +|08/01/2022 05:46:22| |THANKS TL| +|08/01/2022 05:46:24| |it's True because this paper says so| +|08/01/2022 05:46:24| |tanks tl| +|08/01/2022 05:46:24| |brb eating bread| +|08/01/2022 05:46:25| |anzU ANZU| +|08/01/2022 05:46:28| |I didnt say sexy I said cute| +|08/01/2022 05:46:31| ない +|08/01/2022 05:46:33| SODA +|08/01/2022 05:46:33| NAI! +|08/01/2022 05:46:34| |Elim match against 30 tanks I think we're getting to cocky madam SEX| +|08/01/2022 05:46:35| SASUGA +|08/01/2022 05:46:35| |I want to Anzu Anzu's Anzu| +|08/01/2022 05:46:37| Soda? +|08/01/2022 05:46:39| SODA +|08/01/2022 05:46:42| tabun +|08/01/2022 05:46:43| SODA +|08/01/2022 05:46:44| SODA +|08/01/2022 05:46:45| |kana ueda's voice is pure sex| +|08/01/2022 05:46:45| |is there a real difference in the gup community| +|08/01/2022 05:46:49| KANI? +|08/01/2022 05:46:50| FANTA +|08/01/2022 05:46:51| PEPSI +|08/01/2022 05:46:52| >subs +|08/01/2022 05:46:55| OOOOOOOOOH +|08/01/2022 05:46:56| KANI!! +|08/01/2022 05:46:58| YAROO! +|08/01/2022 05:47:00| SPRITE? +|08/01/2022 05:47:01| |BUNNY TUMMY UOOOOOOOOOH| +|08/01/2022 05:47:03| kani +|08/01/2022 05:47:03| |KANI KAERO| +|08/01/2022 05:47:04| FLOOF +|08/01/2022 05:47:06| |HELL YEAH| +|08/01/2022 05:47:09| UOOOOOHHH +|08/01/2022 05:47:10| GANBARE +|08/01/2022 05:47:11| cheer +|08/01/2022 05:47:11| Workerbros... +|08/01/2022 05:47:12| |HAI HAI| +|08/01/2022 05:47:13| ARISU +|08/01/2022 05:47:15| |Miho autism: Activate| +|08/01/2022 05:47:15| |Getting way too cocky here| +|08/01/2022 05:47:16| GANBARE! +|08/01/2022 05:47:17| |umi 1 umi 2 umi 3| +|08/01/2022 05:47:22| |I'm going to FUCK Anzu| +|08/01/2022 05:47:22| |rip workers strike| +|08/01/2022 05:47:24| |smart cunny| +|08/01/2022 05:47:25| |Nah couldn't be| +|08/01/2022 05:47:25| |TENSAI SHOUJO| +|08/01/2022 05:47:30| |anon is going to FUCK me| +|08/01/2022 05:47:30| |what do you think about Arisu?| +|08/01/2022 05:47:32| |ADULT BODY| +|08/01/2022 05:47:33| |is it a reference to korean war?| +|08/01/2022 05:47:36| |CUNNY CUNNY CUNNY CUNNY| +|08/01/2022 05:47:39| |I love Alice| +|08/01/2022 05:47:39| yes +|08/01/2022 05:47:40| |nishizumi style is the worst | +|08/01/2022 05:47:41| |rip, going to bed bros| +|08/01/2022 05:47:43| |oh no| +|08/01/2022 05:47:44| |DO YOU THINK THAT THE FINAL FILM WILL HAVE THE TEAMS USE THE MODERN TANKS?| +|08/01/2022 05:47:45| CRAB +|08/01/2022 05:47:46| |UNiversity, get it| +|08/01/2022 05:47:49| |enjoy the marathon| +|08/01/2022 05:47:51| |CRAB 17| +|08/01/2022 05:47:53| ANZU +|08/01/2022 05:47:55| |remember to wake up to das finale 3| +|08/01/2022 05:48:02| |gn anon| +|08/01/2022 05:48:02| |RIP bogs| +|08/01/2022 05:48:05| |Call in the crew| +|08/01/2022 05:48:07| |>MODERN MBTs >TANKS WITH SOUL >PICK ONE| +|08/01/2022 05:48:08| |rip ;_;| +|08/01/2022 05:48:10| |eee bowt| +|08/01/2022 05:48:10| |lmao get fucked Ooarai| +|08/01/2022 05:48:11| RIP +|08/01/2022 05:48:13| |100 TANK MATCH WHEN| +|08/01/2022 05:48:15| |Im gonna call some friends...| +|08/01/2022 05:48:15| |FUCK MEXT| +|08/01/2022 05:48:15| |They won?... Close it| +|08/01/2022 05:48:16| >males +|08/01/2022 05:48:17| |domp eeeeeet| +|08/01/2022 05:48:21| |done eating bread| +|08/01/2022 05:48:22| hello +|08/01/2022 05:48:22| |MEXT loves GUP!| +|08/01/2022 05:48:26| |This fuck| +|08/01/2022 05:48:28| |Based Males| +|08/01/2022 05:48:32| |MOMO NOOO| +|08/01/2022 05:48:32| |Based man| +|08/01/2022 05:48:33| |RIGGED MATCH| +|08/01/2022 05:48:34| ;_; +|08/01/2022 05:48:36| |plant landmines | +|08/01/2022 05:48:36| |no way| +|08/01/2022 05:48:37| |big ree| +|08/01/2022 05:48:38| momo +|08/01/2022 05:48:38| |i hope you had good bread anon| +|08/01/2022 05:48:38| |CHAD MEXT| +|08/01/2022 05:48:41| |Dat OST tho| +|08/01/2022 05:48:44| ORZ +|08/01/2022 05:48:44| |THE JEWS DID AGAIN| +|08/01/2022 05:48:45| |Annihilation rules are the funnest rules anyways tbh| +|08/01/2022 05:48:45| RIGGED +|08/01/2022 05:48:47| |momo ;_______;| +|08/01/2022 05:48:48| |yeah, fuckin landmines| +|08/01/2022 05:48:50| |The match was rigged from the start| +|08/01/2022 05:48:51| |TRUTH IS THE MATCH WAS RIGGED FROM THE START| +|08/01/2022 05:48:53| |Slit their throats while they sleep| +|08/01/2022 05:48:54| |Fucker is going to get run over| +|08/01/2022 05:48:54| ((((((MEXT)))))) +|08/01/2022 05:48:56| anzu +|08/01/2022 05:48:59| |DEFEAT IS NOT AN OPTION| +|08/01/2022 05:49:01| anzu +|08/01/2022 05:49:01| |how does Miho fucking do it| +|08/01/2022 05:49:03| |Sudden Death is boring anyway| +|08/01/2022 05:49:03| |This match is fair| +|08/01/2022 05:49:03| |train dogs to run under their tanks with explosives | +|08/01/2022 05:49:03| |it was good bread| +|08/01/2022 05:49:09| |yukari miner helmet| +|08/01/2022 05:49:10| |Just win then 4Head| +|08/01/2022 05:49:10| :D +|08/01/2022 05:49:11| |Yukari's autistic headlight| +|08/01/2022 05:49:12| |>implying /ourlad/ is a jew WRONG| +|08/01/2022 05:49:12| |MEXT brothers and sisters, we can scrap this piece of shit ship| +|08/01/2022 05:49:12| |RING A DING BABY| +|08/01/2022 05:49:12| |look at that cute dork with the headlamp| +|08/01/2022 05:49:14| |How many tournaments has MEXT guy been kicked out of? 109?| +|08/01/2022 05:49:14| NORIKO<3 +|08/01/2022 05:49:14| <<<((({{{MEXT}}})))>>> +|08/01/2022 05:49:20| :D +|08/01/2022 05:49:22| |What film is that?| +|08/01/2022 05:49:26| 1941 +|08/01/2022 05:49:27| |hogans heroes| +|08/01/2022 05:49:27| |More movies| +|08/01/2022 05:49:28| 1941 +|08/01/2022 05:49:34| |NERD GIRLS ARE GETTING FIT| +|08/01/2022 05:49:37| sobs +|08/01/2022 05:49:37| >SLAG +|08/01/2022 05:49:40| |USA USA USA USA USA USA USA USA | +|08/01/2022 05:49:40| |Thank god for autopilot| +|08/01/2022 05:49:41| ???????????? +|08/01/2022 05:49:41| |WHAT THE FUCK ARE YOU TALKING ABOUT DARJELING| +|08/01/2022 05:49:41| |SHUT THE FUCK UP| +|08/01/2022 05:49:41| |BONO MY TRACKS| +|08/01/2022 05:49:43| |USA USA USA| +|08/01/2022 05:49:47| ??????????????? +|08/01/2022 05:49:48| ???????????? +|08/01/2022 05:49:48| |Messy gremlin| +|08/01/2022 05:49:49| ERIKA +|08/01/2022 05:49:50| |BLESSED DARJEELING| +|08/01/2022 05:49:50| |you know this saying?| +|08/01/2022 05:49:52| |WHAT IS THIS SLUT SAYING| +|08/01/2022 05:49:53| |This video is hosted www.123movies.com| +|08/01/2022 05:49:53| ????????????????????????????????????????????????????????????? +|08/01/2022 05:49:54| hobo +|08/01/2022 05:49:54| ????????????????/ +|08/01/2022 05:49:54| |do they have the rights to kelly's heroes and 1941? gonna call my lawyer| +|08/01/2022 05:49:54| |kek Erika driving a blimp| +|08/01/2022 05:49:54| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 05:49:55| ???????????????? +|08/01/2022 05:49:56| |Shut up, dumb brit| +|08/01/2022 05:49:56| :DDDDD +|08/01/2022 05:49:56| |>Using the code given to the French Resistance that D Day was starting >Clever GuP| +|08/01/2022 05:49:57| :DDDDDDDD +|08/01/2022 05:49:57| |this song is is home sweet home btw| +|08/01/2022 05:49:57| HOBOS +|08/01/2022 05:49:58| nerd +|08/01/2022 05:49:59| HEDONISM +|08/01/2022 05:50:00| |fug :DDDDDDD| +|08/01/2022 05:50:03| |let the invasion commence| +|08/01/2022 05:50:06| Fuggg +|08/01/2022 05:50:06| |Spank Naomi and Alisa Y/Y| +|08/01/2022 05:50:06| |I do| +|08/01/2022 05:50:06| |benis :DDD| +|08/01/2022 05:50:07| :DDD +|08/01/2022 05:50:07| |I condone hedonism with Mika| +|08/01/2022 05:50:08| BENIS +|08/01/2022 05:50:08| |I still don't know what Darjeeling was quoting there| +|08/01/2022 05:50:09| :DDDDDDDDDDDDDDDDDD +|08/01/2022 05:50:11| :DDDDDDDD +|08/01/2022 05:50:13| Y +|08/01/2022 05:50:14| :DDDDDD +|08/01/2022 05:50:15| |I like this scene very much, bros.| +|08/01/2022 05:50:16| YYYYYYYYYYYYYYYYYYY +|08/01/2022 05:50:16| Verlaine +|08/01/2022 05:50:20| |This school is FUCKED| +|08/01/2022 05:50:21| |Mika's senshado of ascetism| +|08/01/2022 05:50:24| Ebin +|08/01/2022 05:50:25| |CUTE ALICE| +|08/01/2022 05:50:27| |Want to watch Boko together?| +|08/01/2022 05:50:28| |UOOOOOOOOOHHHHHH ARISU| +|08/01/2022 05:50:30| Arisu... +|08/01/2022 05:50:30| |Maho sounds kinda weird here| +|08/01/2022 05:50:30| ENTER +|08/01/2022 05:50:31| |WE GOT THIS BROS RIGHT?| +|08/01/2022 05:50:34| MATTEEEEEEE +|08/01/2022 05:50:34| |Why are the referees so fucking sexy?| +|08/01/2022 05:50:34| |Oorai's got this| +|08/01/2022 05:50:34| |Can't believe Darjeeling is gathering everyone to laugh at Miho's defeat against University| +|08/01/2022 05:50:34| ENTER +|08/01/2022 05:50:37| ENTER +|08/01/2022 05:50:39| ! +|08/01/2022 05:50:39| |OB DIE SONNNE UNS LACVHT| +|08/01/2022 05:50:39| |tea time| +|08/01/2022 05:50:40| |Best scene in the whole anime here| +|08/01/2022 05:50:41| MAHO +|08/01/2022 05:50:41| ENTER +|08/01/2022 05:50:41| |SIEG HEIL| +|08/01/2022 05:50:41| PANZERLIED +|08/01/2022 05:50:41| ENTER +|08/01/2022 05:50:42| |E N T E R| +|08/01/2022 05:50:43| |VOLUNTEER OORAI'S| +|08/01/2022 05:50:43| ENTER +|08/01/2022 05:50:43| ENTER +|08/01/2022 05:50:43| |>Miho is bigger than Alice| +|08/01/2022 05:50:44| |no montage | +|08/01/2022 05:50:45| |KITA :D| +|08/01/2022 05:50:46| Cavalry! +|08/01/2022 05:50:46| |Maho is my wife| +|08/01/2022 05:50:47| MATTE +|08/01/2022 05:50:48| 88 +|08/01/2022 05:50:48| |EISKALT DIE NACHT| +|08/01/2022 05:50:48| |OB DIE SUNNE UNS LACHT| +|08/01/2022 05:50:49| ONEECHAN +|08/01/2022 05:50:49| |SIEG HEIL| +|08/01/2022 05:50:50| |HERE COMES THE CAVALRY| +|08/01/2022 05:50:50| |HAIL MAHO| +|08/01/2022 05:50:50| |OOOOOO MAHO| +|08/01/2022 05:50:50| |BIG MAHOOS| +|08/01/2022 05:50:50| based +|08/01/2022 05:50:51| ENTER +|08/01/2022 05:50:51| |HAIL HITLER| +|08/01/2022 05:50:51| CUTE +|08/01/2022 05:50:52| MATTAAAA +|08/01/2022 05:50:52| |$60 000 ON ARISU. I CAN FEEL IT| +|08/01/2022 05:50:52| |sex with Alice Y/N?| +|08/01/2022 05:50:54| |our panzer waifus are here| +|08/01/2022 05:50:55| Kino +|08/01/2022 05:50:55| ONAJIKU +|08/01/2022 05:50:55| 1488 +|08/01/2022 05:50:56| |FROH IST UNSER SINN| +|08/01/2022 05:50:56| Y +|08/01/2022 05:50:57| |HEIL HITLER| +|08/01/2022 05:50:58| WOHOI +|08/01/2022 05:50:59| Y +|08/01/2022 05:51:00| |BIG MAHOS| +|08/01/2022 05:51:00| |Send Volunteer Divisions?| +|08/01/2022 05:51:00| |ERKIAm CUTE| +|08/01/2022 05:51:00| |Damn shes stacked| +|08/01/2022 05:51:02| ERRRRRRRRRRRRRRRRRRRRRRRRRRIKA +|08/01/2022 05:51:02| |Wani redemption begins now| +|08/01/2022 05:51:02| |IN STURMWIND DAHIN| +|08/01/2022 05:51:02| |REDEMPTION ARC| +|08/01/2022 05:51:03| Y +|08/01/2022 05:51:03| KINO +|08/01/2022 05:51:06| |ERIKA IS MY WIFE| +|08/01/2022 05:51:06| |BESTAUBT SIND DIE GESICHTER DOCH FROH IST UNSER SINN| +|08/01/2022 05:51:07| Y +|08/01/2022 05:51:07| 1488 +|08/01/2022 05:51:07| O/ +|08/01/2022 05:51:08| |WANI KAWAIIIIIII| +|08/01/2022 05:51:08| |WANI KANI| +|08/01/2022 05:51:10| |Erika's really cute with that uniform| +|08/01/2022 05:51:11| WANI +|08/01/2022 05:51:11| N +|08/01/2022 05:51:11| |REVERSE RIGGING| +|08/01/2022 05:51:12| UNITY +|08/01/2022 05:51:13| |WANI WANI WANI| +|08/01/2022 05:51:13| |MEXT NOOOOOOOO| +|08/01/2022 05:51:13| |best part of the movie right here| +|08/01/2022 05:51:14| |ENTER X2| +|08/01/2022 05:51:14| |HEIL MAHO| +|08/01/2022 05:51:14| |GAS MEXT SENSHADO WARS NOW| +|08/01/2022 05:51:15| |AMERICANS!!!! USA!! USA !| +|08/01/2022 05:51:15| KINO +|08/01/2022 05:51:16| |Nobody will doubt my cute waif| +|08/01/2022 05:51:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:19| |U S A | +|08/01/2022 05:51:20| ENTER +|08/01/2022 05:51:20| |>that's underhanded| +|08/01/2022 05:51:20| |MASSIVE KAY MILKERS| +|08/01/2022 05:51:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:21| |They're adding them without Alice's consent?| +|08/01/2022 05:51:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:21| |USA USA USA USA| +|08/01/2022 05:51:22| USA +|08/01/2022 05:51:22| |USA USA USA| +|08/01/2022 05:51:22| |USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +|08/01/2022 05:51:23| murrica +|08/01/2022 05:51:23| |alright man| +|08/01/2022 05:51:24| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:24| |USA USA USA| +|08/01/2022 05:51:24| |USA USA USA| +|08/01/2022 05:51:25| |VSA VSA VSA VSA VSA VSA VSA VSA VSA | +|08/01/2022 05:51:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:25| |USA USA USA| +|08/01/2022 05:51:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:26| |LETS FUCKING GOOOOOO| +|08/01/2022 05:51:27| |SEETHING MEXT| +|08/01/2022 05:51:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:27| |USA USA USA| +|08/01/2022 05:51:28| |USA USA USA USA USA YSA| +|08/01/2022 05:51:28| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:28| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 05:51:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:29| |USA USA USA USA USA USA | +|08/01/2022 05:51:29| CUEKCEd +|08/01/2022 05:51:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:29| |USA USA USA USA| +|08/01/2022 05:51:30| |That's not fair| +|08/01/2022 05:51:31| |ENTER X3| +|08/01/2022 05:51:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:33| |EDF DEPLOYS| +|08/01/2022 05:51:33| |USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:51:34| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:34| |usa USA usa USA usa USA usa USA usa USA usa USA | +|08/01/2022 05:51:34| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:34| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 05:51:35| |USA USA USA USA USA USA| +|08/01/2022 05:51:35| KATYUSHA??!! +|08/01/2022 05:51:35| |USSR USSR USSR USSR !!!!| +|08/01/2022 05:51:36| |come marching in| +|08/01/2022 05:51:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:37| |HIS TRUTH IS MARCHING ON| +|08/01/2022 05:51:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:37| |NONNA'S KNOCKERS| +|08/01/2022 05:51:38| |ALL THE HEROES| +|08/01/2022 05:51:38| |URA URA URA URA URA URA URA URA URA| +|08/01/2022 05:51:38| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:38| |pff why is the gremlim here| +|08/01/2022 05:51:39| URA +|08/01/2022 05:51:39| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:39| UOOOOOOOOOOOOOOHHHHHHHHHHH +|08/01/2022 05:51:40| |USA USA USA| +|08/01/2022 05:51:40| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:40| UUUUURAAAAAAA +|08/01/2022 05:51:40| |usa stop now| +|08/01/2022 05:51:40| |USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:41| |USSR USSR USSR USSR USSR| +|08/01/2022 05:51:42| |cute child| +|08/01/2022 05:51:42| KATYUSHA +|08/01/2022 05:51:43| URAA +|08/01/2022 05:51:44| |USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:51:44| |Spank Alisa and Naomi Y/Y| +|08/01/2022 05:51:46| |KATYUSHA KATYUSHA KATYUSHA| +|08/01/2022 05:51:46| |ENTER X4| +|08/01/2022 05:51:46| URAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:48| |USSR USSR USSR USSR| +|08/01/2022 05:51:48| UUUUUUUURRRRRRRRRRAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:48| |CAM ON INGERLAND| +|08/01/2022 05:51:50| ROSSIYA +|08/01/2022 05:51:50| URAAA +|08/01/2022 05:51:51| |oy it's 12 bong| +|08/01/2022 05:51:52| Smuhtuysha +|08/01/2022 05:51:52| |katyishas thighs| +|08/01/2022 05:51:52| |FUCK YES HYPE| +|08/01/2022 05:51:52| |BRITISH GRENADIERS | +|08/01/2022 05:51:53| |SLEEVE JOBS| +|08/01/2022 05:51:53| |You know this saying?| +|08/01/2022 05:51:54| SLAGS +|08/01/2022 05:51:54| |FUCK OFF SLAG| +|08/01/2022 05:51:54| >Fleshfang +|08/01/2022 05:51:54| >slags +|08/01/2022 05:51:55| sleeeves +|08/01/2022 05:51:55| |Cute sleeves| +|08/01/2022 05:51:56| |ENTER BONGS| +|08/01/2022 05:51:57| ?????????????????????????????? +|08/01/2022 05:51:57| ??????????????????????????????????????????????? +|08/01/2022 05:51:58| |REMEMBER LADS| +|08/01/2022 05:51:58| |INGLAND INGLAND INGLAND INGLAND| +|08/01/2022 05:51:59| ducebros? +|08/01/2022 05:52:00| |PRESS P TO PEE IN DARJEELING'S TEA| +|08/01/2022 05:52:01| ?????????????????????????????????????????????????? +|08/01/2022 05:52:01| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE!| +|08/01/2022 05:52:01| |DVCE DVCE DVCE| +|08/01/2022 05:52:02| PEKOEEEEE +|08/01/2022 05:52:02| |DARL TEAJOB| +|08/01/2022 05:52:02| UK? +|08/01/2022 05:52:02| bongs +|08/01/2022 05:52:02| ???????!!! +|08/01/2022 05:52:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:03| |BEST GIRL| +|08/01/2022 05:52:03| DUCE +|08/01/2022 05:52:04| >bongs +|08/01/2022 05:52:05| ????????????? +|08/01/2022 05:52:05| WHOOO +|08/01/2022 05:52:05| P +|08/01/2022 05:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:06| ?????????????????? +|08/01/2022 05:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:07| |DUCE DUCE DUCE| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE \| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:07| |DARJEELING IS A DORK| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:07| DVCE +|08/01/2022 05:52:07| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:08| DVCE +|08/01/2022 05:52:09| |DUCE DUCE| +|08/01/2022 05:52:09| ????????????? +|08/01/2022 05:52:09| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:52:09| |DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:09| |FUNICULI FUNICULA| +|08/01/2022 05:52:09| |DUCE DUCE DUCE| +|08/01/2022 05:52:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:10| |REAL MVP| +|08/01/2022 05:52:10| |ENTER X5| +|08/01/2022 05:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:11| Duce +|08/01/2022 05:52:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:11| |DUCE DUCE DUCE| +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| DUCE +|08/01/2022 05:52:12| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:52:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:13| |CAM ON DARJEELINGERLAND| +|08/01/2022 05:52:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:14| |DVCE DVCE| +|08/01/2022 05:52:14| TAKA-CHAN +|08/01/2022 05:52:14| |DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:15| DUCE +|08/01/2022 05:52:15| |DVCE DVCE DVCE DVEC DEVEC| +|08/01/2022 05:52:15| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:15| DUCE +|08/01/2022 05:52:16| |DUCE DUCE DUCE| +|08/01/2022 05:52:16| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:18| |DUCE DUCE| +|08/01/2022 05:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:18| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 05:52:18| |DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:19| :DDDDDDDDDDDDDDDD +|08/01/2022 05:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:20| |DUCE DUCE| +|08/01/2022 05:52:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:21| |DUCE DUCE DUCE| +|08/01/2022 05:52:21| DUCE +|08/01/2022 05:52:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:22| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:22| :DDDDDDDDDDDDD +|08/01/2022 05:52:22| |DUCE DUCE DUCE | +|08/01/2022 05:52:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:22| |finns :DDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:52:23| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:23| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:23| |:DDDDDDD | +|08/01/2022 05:52:24| :DDDDDD +|08/01/2022 05:52:25| |DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:25| |DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:25| |DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:26| |FUGG BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:52:26| |DUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCE| +|08/01/2022 05:52:26| :DDDDDDDDDD +|08/01/2022 05:52:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:26| |BENIS :DDDDD| +|08/01/2022 05:52:26| |PERKELE :D| +|08/01/2022 05:52:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:26| EBIN +|08/01/2022 05:52:26| |FUGGG :DDDDD| +|08/01/2022 05:52:27| |fug :-DDDDDDDDDDDDDDD| +|08/01/2022 05:52:27| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 05:52:27| |:DDDDDDD | +|08/01/2022 05:52:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:27| |DUCE DUCE| +|08/01/2022 05:52:27| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:27| |FUG :DDDDDDDDDDDDD| +|08/01/2022 05:52:28| :DDDDD +|08/01/2022 05:52:28| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:28| |BENIS :DDDDDDDDDDDDDDDDDDDDDdddddddddddddddddddddd| +|08/01/2022 05:52:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:28| :DDDDDDDDDDDDDDDDDDDDDDDd +|08/01/2022 05:52:29| |DUCE i guess| +|08/01/2022 05:52:29| |OH FUGGGG :DDDDDDDDDDD| +|08/01/2022 05:52:30| :DDDDDDDDDDDDDD +|08/01/2022 05:52:30| |PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:52:30| :DDDDDDD +|08/01/2022 05:52:30| |BERGELE :DDDDDDDDD| +|08/01/2022 05:52:30| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:31| |FUGG :DDDDD| +|08/01/2022 05:52:31| |SUOMI PERKELE| +|08/01/2022 05:52:32| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:32| |:D :D :D| +|08/01/2022 05:52:32| :DDDDD +|08/01/2022 05:52:32| DDDD +|08/01/2022 05:52:33| |>THE WIND| +|08/01/2022 05:52:33| Bakas +|08/01/2022 05:52:33| |not dvce :(| +|08/01/2022 05:52:33| TOTSUGEKI! +|08/01/2022 05:52:34| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:52:34| ???? +|08/01/2022 05:52:34| |MIGA :DDDDD| +|08/01/2022 05:52:35| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:35| |BAKA BRIGADE IS HERE| +|08/01/2022 05:52:35| |Who the devil are you?| +|08/01/2022 05:52:35| BANZAI +|08/01/2022 05:52:36| TOTSUGEKI +|08/01/2022 05:52:36| |MIGA :DDDDD| +|08/01/2022 05:52:36| |fugg :DDDDDDDDDDDD| +|08/01/2022 05:52:36| :DDDDDDDDDDDDDDDDD +|08/01/2022 05:52:37| TOTSUGEKI +|08/01/2022 05:52:37| |Who are these nerds?| +|08/01/2022 05:52:37| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:52:37| |TOTSUGEKI TOTSUGEKI| +|08/01/2022 05:52:38| TOTSUGEKI +|08/01/2022 05:52:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:38| |What are finns called even?| +|08/01/2022 05:52:38| |BEENIIIS :DDDDDDDDDDD| +|08/01/2022 05:52:39| IDIOTS +|08/01/2022 05:52:40| |YUKI NO SHINGUN| +|08/01/2022 05:52:40| |why did mika agree to fight her sister?| +|08/01/2022 05:52:40| TOTSUTKEGI +|08/01/2022 05:52:40| BENIS +|08/01/2022 05:52:40| >22 +|08/01/2022 05:52:40| BAKAS +|08/01/2022 05:52:41| |TENNO HEIKA BANZAI!!!!!| +|08/01/2022 05:52:41| |TOTSUGEKI | +|08/01/2022 05:52:42| TOTSUGEKI +|08/01/2022 05:52:42| bakas +|08/01/2022 05:52:43| TOTSUGEKI +|08/01/2022 05:52:43| |fucking totsubakas| +|08/01/2022 05:52:45| >MEMEHITAN +|08/01/2022 05:52:45| |TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI| +|08/01/2022 05:52:46| retard +|08/01/2022 05:52:46| bsks +|08/01/2022 05:52:47| BANZAAAIII +|08/01/2022 05:52:48| BANZAI +|08/01/2022 05:52:49| |CO-SENSHADO SPHERE| +|08/01/2022 05:52:51| |TENNO HEIKA BANZAI!!!!!| +|08/01/2022 05:52:54| |NOT A CAPABLE SOLDIER| +|08/01/2022 05:52:54| |FUCKING KINO SCENE| +|08/01/2022 05:52:55| |big heart on that one| +|08/01/2022 05:53:00| KINO +|08/01/2022 05:53:02| |KINO AF| +|08/01/2022 05:53:03| |TOO FUCKING KINO| +|08/01/2022 05:53:03| |Caesar x carpaccio | +|08/01/2022 05:53:04| |My favorite scene in this anime| +|08/01/2022 05:53:05| |They all look cute wearing Oarai's uniform| +|08/01/2022 05:53:05| |Arisu so cool| +|08/01/2022 05:53:06| |Megane subverted| +|08/01/2022 05:53:06| |ALICE IS 20 AND IN UNVERSITY| +|08/01/2022 05:53:06| |OPERATION BOUNCY| +|08/01/2022 05:53:08| |WHO BROUGHT THE GUN BIKE?| +|08/01/2022 05:53:09| >BIKEART +|08/01/2022 05:53:11| |THE SWAG?| +|08/01/2022 05:53:11| |arisu's hebe cunny| +|08/01/2022 05:53:12| |they shouldve brought more panthers instead of 6 jap tanks| +|08/01/2022 05:53:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:53:13| |BASED ALICE| +|08/01/2022 05:53:16| |if I take away your school, will you die?| +|08/01/2022 05:53:21| |DUCE DUCE DUCE| +|08/01/2022 05:53:21| >WESTERNERS +|08/01/2022 05:53:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:53:22| qt +|08/01/2022 05:53:23| |RIDE ME KATYUSHA| +|08/01/2022 05:53:23| |DEATH STARE| +|08/01/2022 05:53:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:53:24| SCARY +|08/01/2022 05:53:25| maho_glare.png +|08/01/2022 05:53:25| MOGGED +|08/01/2022 05:53:26| |THE SLAVS FEAR THE GERMANS| +|08/01/2022 05:53:26| |It would be very sad| +|08/01/2022 05:53:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:53:27| Anzu +|08/01/2022 05:53:28| |Superious bike machine gun\| +|08/01/2022 05:53:28| |Based Westerners| +|08/01/2022 05:53:28| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:53:29| |WEST IS BEST| +|08/01/2022 05:53:29| |katyishas thighs| +|08/01/2022 05:53:30| |Maho shutting Katyusha down| +|08/01/2022 05:53:31| CUTE +|08/01/2022 05:53:32| Kowai!!! +|08/01/2022 05:53:39| |CUTE CUTE CUTE| +|08/01/2022 05:53:44| |CTU CTU CTU| +|08/01/2022 05:53:46| |press C to have Nonna Crush your skull with her thighs| +|08/01/2022 05:53:47| |CTU CTU CTU CTU CTU| +|08/01/2022 05:53:47| |Too bad BC isn't here for this| +|08/01/2022 05:53:48| |katysusha will never fuck the back of your head| +|08/01/2022 05:53:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:53:53| C +|08/01/2022 05:53:56| tampopo +|08/01/2022 05:53:56| C +|08/01/2022 05:53:58| CUTE +|08/01/2022 05:53:58| POPOTAN +|08/01/2022 05:54:00| AN +|08/01/2022 05:54:01| |Morning Glory means boner | +|08/01/2022 05:54:03| |I'd rather have katyusha crush me| +|08/01/2022 05:54:06| totsugeki +|08/01/2022 05:54:09| |Let Miho make the plan retards| +|08/01/2022 05:54:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:13| uhh +|08/01/2022 05:54:13| |Want some pasta?| +|08/01/2022 05:54:13| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:54:13| TOTSUGEKI +|08/01/2022 05:54:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:14| TOTSUGEKI +|08/01/2022 05:54:14| TOTSUGEKI +|08/01/2022 05:54:14| DUCE +|08/01/2022 05:54:15| |No, only Erika's thighs are allowed to crush me| +|08/01/2022 05:54:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:15| PASTA +|08/01/2022 05:54:15| TOTSUGEKI +|08/01/2022 05:54:16| |DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:16| DUCE +|08/01/2022 05:54:17| >Pasta +|08/01/2022 05:54:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:17| |JUST STALL FOR WINTER| +|08/01/2022 05:54:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:18| TOTSUGEKI +|08/01/2022 05:54:18| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:54:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:19| PASTA +|08/01/2022 05:54:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:20| TOTSUGEKI +|08/01/2022 05:54:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:21| pasta +|08/01/2022 05:54:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:22| |Shut up Nishi| +|08/01/2022 05:54:23| |PASTA | +|08/01/2022 05:54:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 05:54:25| TOTSUGEKI +|08/01/2022 05:54:25| |Best plan is pasta| +|08/01/2022 05:54:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:27| |DUCE IS CTU| +|08/01/2022 05:54:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:28| CTU +|08/01/2022 05:54:28| |just wait until winter lol| +|08/01/2022 05:54:29| |BASED DUCE| +|08/01/2022 05:54:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:34| |LOOK AT ALL THOSE TITS| +|08/01/2022 05:54:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:34| |Yeah but what about the pasta?| +|08/01/2022 05:54:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:37| DUCE +|08/01/2022 05:54:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:39| |Put the finn in the bin| +|08/01/2022 05:54:39| MIKAAAAA +|08/01/2022 05:54:40| |OPERATION SAYING| +|08/01/2022 05:54:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:54:41| OPERA! +|08/01/2022 05:54:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:41| |3 CHEESE PIZZA| +|08/01/2022 05:54:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:46| pizza +|08/01/2022 05:54:46| ??????????????? +|08/01/2022 05:54:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:48| |worst cuisine| +|08/01/2022 05:54:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:54:48| |ITS HERE| +|08/01/2022 05:54:49| |fish n chips love| +|08/01/2022 05:54:51| |>BRITISH FOOD| +|08/01/2022 05:54:51| |>fish and chips| +|08/01/2022 05:54:51| |IT DOESN'T HAVE TO BE BEEF| +|08/01/2022 05:54:51| |no darj| +|08/01/2022 05:54:51| |>BEEF STROGANOFF >HELLO /SGG/| +|08/01/2022 05:54:52| |>GRAVY SAUCE| +|08/01/2022 05:54:53| ??????????????? +|08/01/2022 05:54:53| Fug +|08/01/2022 05:54:54| |DUCECHADS REPORT| +|08/01/2022 05:54:56| |stfu | +|08/01/2022 05:54:56| |OPERATION GO AROUND| +|08/01/2022 05:54:58| |bri'ish food| +|08/01/2022 05:54:58| |fish n chips| +|08/01/2022 05:54:59| |Kay best| +|08/01/2022 05:54:59| |Who is the biggest GuP?| +|08/01/2022 05:54:59| |OPERATION DUCE | +|08/01/2022 05:54:59| |Wait for winter may be a legit strategy if they sail north.| +|08/01/2022 05:54:59| |BOYS DON'T KNOW| +|08/01/2022 05:55:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:55:04| |BOYS DON'T KNOW ABOUT BEEF STROGANOFF| +|08/01/2022 05:55:05| autism +|08/01/2022 05:55:06| |love Momo screaming at Maho| +|08/01/2022 05:55:07| |CUTE HATS| +|08/01/2022 05:55:08| CHUUNI +|08/01/2022 05:55:08| |SORE DA| +|08/01/2022 05:55:08| |Sour cream, you mean Smetana?| +|08/01/2022 05:55:08| WHO +|08/01/2022 05:55:08| |Darjeeling best| +|08/01/2022 05:55:09| |>katyusha killed the stream again| +|08/01/2022 05:55:09| |These fucking dorks| +|08/01/2022 05:55:09| ANZU +|08/01/2022 05:55:09| autist +|08/01/2022 05:55:10| |NURENBURG LAWS| +|08/01/2022 05:55:11| |Fucking tism| +|08/01/2022 05:55:11| CHUUNI +|08/01/2022 05:55:13| autism +|08/01/2022 05:55:13| |what the fuck| +|08/01/2022 05:55:15| BUMPY +|08/01/2022 05:55:15| BUMPY +|08/01/2022 05:55:15| BUMPY +|08/01/2022 05:55:15| Bumpy? +|08/01/2022 05:55:17| BUMPY +|08/01/2022 05:55:17| |Maho owned| +|08/01/2022 05:55:18| w +|08/01/2022 05:55:20| bumpy +|08/01/2022 05:55:20| |BUMP DE BUMP| +|08/01/2022 05:55:20| Autismos +|08/01/2022 05:55:20| |bumpy bumps| +|08/01/2022 05:55:20| ?????????? +|08/01/2022 05:55:20| |folks, what about "TOTSUGEKI PASTA SAKUSEN?!?!?| +|08/01/2022 05:55:21| >bumpy +|08/01/2022 05:55:22| ?????? +|08/01/2022 05:55:22| |german autism| +|08/01/2022 05:55:23| ? +|08/01/2022 05:55:23| |I preferred sneaky beaky| +|08/01/2022 05:55:23| BUMPY +|08/01/2022 05:55:23| |based autist| +|08/01/2022 05:55:24| BUMPY +|08/01/2022 05:55:24| |I GET IT| +|08/01/2022 05:55:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:55:24| |The plan is to just wander into their fire| +|08/01/2022 05:55:24| DUCE +|08/01/2022 05:55:25| |IT DOESN'T HAVE TO BE BEEF| +|08/01/2022 05:55:25| WAT +|08/01/2022 05:55:28| |A least it's not food| +|08/01/2022 05:55:29| Eh? +|08/01/2022 05:55:30| >bumpy +|08/01/2022 05:55:31| Anzu +|08/01/2022 05:55:33| |I DONT GET IT| +|08/01/2022 05:55:33| |PANZER FOUR| +|08/01/2022 05:55:34| |ERIKA BTFO| +|08/01/2022 05:55:34| |PANZER VOR| +|08/01/2022 05:55:35| Eh? +|08/01/2022 05:55:36| bump +|08/01/2022 05:55:36| |Wani REKT| +|08/01/2022 05:55:36| |PANTSU NO AHO| +|08/01/2022 05:55:37| |PANTSU FOR?| +|08/01/2022 05:55:37| |PANZER VOR| +|08/01/2022 05:55:37| |SHE SAID THE THING| +|08/01/2022 05:55:38| |PANZER VORE| +|08/01/2022 05:55:38| |Miho and her dumb op names| +|08/01/2022 05:55:38| |panzer vor!!| +|08/01/2022 05:55:38| |PANZER VOR| +|08/01/2022 05:55:40| |PANZA WHORE| +|08/01/2022 05:55:40| |Panzer vor| +|08/01/2022 05:55:40| |PAnzer 4| +|08/01/2022 05:55:40| |PANZER VOR| +|08/01/2022 05:55:41| |PANTSU GA AHO| +|08/01/2022 05:55:41| |PUSH THEM BACK FROM THE 38TH| +|08/01/2022 05:55:41| |PANZER VOR| +|08/01/2022 05:55:41| |pant are for???| +|08/01/2022 05:55:43| |Not even the best Wagner Opera, bad taste Maho| +|08/01/2022 05:55:45| |zelda music again| +|08/01/2022 05:55:46| |PANZER VOR| +|08/01/2022 05:55:46| |PANZER VOR| +|08/01/2022 05:55:47| |panzer VORE| +|08/01/2022 05:55:50| |DELETE THE UN| +|08/01/2022 05:55:52| |man i really wanna sleep but this is the best part of the series| +|08/01/2022 05:55:52| Advanced! +|08/01/2022 05:55:52| |CUNNY sob sob sob| +|08/01/2022 05:55:52| |How crazy would it be if one of the teams had a railway gun haha?| +|08/01/2022 05:56:01| |Our plan is to just go straight| +|08/01/2022 05:56:03| |wreck these blue helmet smurfs| +|08/01/2022 05:56:04| |Imagine kowtowing to the UN LAMO| +|08/01/2022 05:56:07| |WHICH ONES PANZER FOUR???| +|08/01/2022 05:56:08| |rumi <3| +|08/01/2022 05:56:09| |tactical geniusw| +|08/01/2022 05:56:09| |ALICE LEGS UOOOOOOOOHHHHHHH| +|08/01/2022 05:56:09| ihatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchrist +|08/01/2022 05:56:13| |I HATE THE ANTICHRIST| +|08/01/2022 05:56:14| |REMOVE UN| +|08/01/2022 05:56:15| |>just go forward lmao| +|08/01/2022 05:56:15| |un larpers| +|08/01/2022 05:56:17| |I HATE THE ANTICHRIST| +|08/01/2022 05:56:18| KINO +|08/01/2022 05:56:18| |I HATE THE ANTICHRIST| +|08/01/2022 05:56:20| |(((United Nations)))| +|08/01/2022 05:56:20| >14fps +|08/01/2022 05:56:20| |Under NATO| +|08/01/2022 05:56:23| |3 fps cgi| +|08/01/2022 05:56:24| |luv me corn syrup| +|08/01/2022 05:56:24| |COCK AND BALL TORTURE| +|08/01/2022 05:56:25| |I HATE THE ANTICHRIST| +|08/01/2022 05:56:28| |kino shot| +|08/01/2022 05:56:28| OST +|08/01/2022 05:56:28| KINO +|08/01/2022 05:56:30| ((((((UN)))))) +|08/01/2022 05:56:30| |YOU VILL EAT ZE BUGS| +|08/01/2022 05:56:32| |24 fps baby| +|08/01/2022 05:56:33| |i love this artstyle| +|08/01/2022 05:56:33| kino +|08/01/2022 05:56:33| |I HATE THE ANTI CHRIST| +|08/01/2022 05:56:38| |What's your Sensha-dō anon?| +|08/01/2022 05:56:39| ((((((UN)))))) +|08/01/2022 05:56:43| |Lets go pop blue ultrasmurf helmet fags| +|08/01/2022 05:56:44| |>hobo stream| +|08/01/2022 05:56:45| |fucking up local rice fields for fun| +|08/01/2022 05:56:49| |this is the 2nd most kino shot in the franchise| +|08/01/2022 05:56:51| |I HATE THE ANTICHRIST I HATET HE ANTICHRIST| +|08/01/2022 05:56:52| |Get in the fucking sensha, shinji| +|08/01/2022 05:56:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:56:59| |What's satan got to do with it?| +|08/01/2022 05:57:00| WIG +|08/01/2022 05:57:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:02| |GET FUCKING READY BROS| +|08/01/2022 05:57:03| |nice 3d to 2d| +|08/01/2022 05:57:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:03| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 05:57:04| |Srebrenica never forget| +|08/01/2022 05:57:04| |duce duce duce| +|08/01/2022 05:57:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:04| WIG +|08/01/2022 05:57:05| |Fuck those feilds| +|08/01/2022 05:57:06| |NOT A WIG| +|08/01/2022 05:57:06| |ITS NATURAL| +|08/01/2022 05:57:07| DVCE +|08/01/2022 05:57:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:09| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:57:09| |WIG WIG WIG WIG| +|08/01/2022 05:57:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:09| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 05:57:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DU| +|08/01/2022 05:57:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:12| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 05:57:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:13| |NOT A WIG| +|08/01/2022 05:57:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:13| |NOT A WIG| +|08/01/2022 05:57:14| ITA +|08/01/2022 05:57:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:15| >wig +|08/01/2022 05:57:15| |DUCE DUCE DUCE| +|08/01/2022 05:57:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:16| |NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +|08/01/2022 05:57:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:19| |It's REAL| +|08/01/2022 05:57:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:23| |DUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCE| +|08/01/2022 05:57:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:24| |IT'S A WIG??????| +|08/01/2022 05:57:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:25| |DUVE DUVE DUVE DUVE DUVE| +|08/01/2022 05:57:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:26| |>LIKING A GIRL WEARING A WIG| +|08/01/2022 05:57:27| |THE HAIR IS REAL| +|08/01/2022 05:57:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:28| |They're handlebars| +|08/01/2022 05:57:30| |NOT A WIG! VERY REAL HAIR!| +|08/01/2022 05:57:35| |duce spamming a shit| +|08/01/2022 05:57:35| |dvce would never wear a wig| +|08/01/2022 05:57:36| |Real genuine hair!| +|08/01/2022 05:57:39| |DUCE CANT PAY FOR BITRATE| +|08/01/2022 05:57:40| |DUCE IS BALD HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA| +|08/01/2022 05:57:42| |DUCE BROS YOUR WIFE'S HAIR IS FAKE | +|08/01/2022 05:57:47| |best scene in the franchise is when hobos take out the carl| +|08/01/2022 05:57:59| |big head| +|08/01/2022 05:58:05| |huge head| +|08/01/2022 05:58:06| |the best scene in the series is when miho upskirts anzu| +|08/01/2022 05:58:10| |massive head| +|08/01/2022 05:58:15| |SHE HATES BLACKS| +|08/01/2022 05:58:15| |dumb midget| +|08/01/2022 05:58:17| fang +|08/01/2022 05:58:19| |stfu midget| +|08/01/2022 05:58:20| |SHE DISLIKES BLACKS| +|08/01/2022 05:58:23| |SHE HATES BLACKS| +|08/01/2022 05:58:23| HI +|08/01/2022 05:58:24| |SNOW IS BACK| +|08/01/2022 05:58:25| 5head +|08/01/2022 05:58:25| |cult of personality| +|08/01/2022 05:58:26| BTFO +|08/01/2022 05:58:27| |when will katyusha grow into her head?| +|08/01/2022 05:58:28| BTFO'D +|08/01/2022 05:58:29| POUTYUSHA +|08/01/2022 05:58:30| |my master is black| +|08/01/2022 05:58:32| Owned +|08/01/2022 05:58:32| |SHE HATE THE NIGGER| +|08/01/2022 05:58:33| |NONNA WTF| +|08/01/2022 05:58:33| |khruschev won| +|08/01/2022 05:58:36| |BWAHAHAHAHAHAHA SHUT THE FUCK UP MIDGET| +|08/01/2022 05:58:40| |katyusha btfos niggers| +|08/01/2022 05:58:40| |Hill 203| +|08/01/2022 05:58:43| |Wait snow is white?| +|08/01/2022 05:58:45| |Hopefully katysha never grows| +|08/01/2022 05:58:49| |dumb midget| +|08/01/2022 05:58:50| |>getting beat by blacks 10 years in a row| +|08/01/2022 05:59:00| ?????????????? +|08/01/2022 05:59:01| ??????????????????????????????????????????????? +|08/01/2022 05:59:02| |deserves the height| +|08/01/2022 05:59:03| |AHH THIS SAYING| +|08/01/2022 05:59:04| ????????????????????????????? +|08/01/2022 05:59:05| |NONNA THE "WHITE" RUSSIAN| +|08/01/2022 05:59:05| ????????????????????? +|08/01/2022 05:59:06| ????????????????????????????????????? +|08/01/2022 05:59:07| ?????????????? +|08/01/2022 05:59:07| ????????????????????????????????? +|08/01/2022 05:59:09| ???????????? +|08/01/2022 05:59:10| |DO YOU KNOW| +|08/01/2022 05:59:11| |SHUT THE FUCK UP DARJ| +|08/01/2022 05:59:11| |mommy | +|08/01/2022 05:59:12| ?!?!?!?!?!?!?!?! +|08/01/2022 05:59:13| |I like tat one| +|08/01/2022 05:59:14| |WHAT the fuck did she mean by that?| +|08/01/2022 05:59:16| ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 05:59:18| |I like mommy's pants| +|08/01/2022 05:59:18| |go nina go| +|08/01/2022 05:59:21| |NINA IS CUTE!| +|08/01/2022 05:59:22| kino +|08/01/2022 05:59:22| |NINA A FAT| +|08/01/2022 05:59:25| |I like koume and her panther| +|08/01/2022 05:59:27| |That one was simple to understand| +|08/01/2022 05:59:28| SUMIMASEN +|08/01/2022 05:59:28| |/k/ as fuck| +|08/01/2022 05:59:31| |Where we’re going we don’t need roads| +|08/01/2022 05:59:32| |INSERT SAYING HERE| +|08/01/2022 05:59:35| |maps looks like a penis| +|08/01/2022 05:59:36| |>penis map| +|08/01/2022 05:59:37| |benis :DDD| +|08/01/2022 05:59:38| sex? +|08/01/2022 05:59:40| |THE MAP IS A PENIS| +|08/01/2022 05:59:41| |>Using tryhard cammouflage| +|08/01/2022 05:59:47| |can someone explain the american hotline to hell joke?| +|08/01/2022 05:59:48| |SEX MAP????| +|08/01/2022 05:59:50| |Benis to bagina| +|08/01/2022 05:59:50| |senshado is serious business| +|08/01/2022 05:59:50| Dongland +|08/01/2022 05:59:56| |>penis map lmao| +|08/01/2022 05:59:58| |nice snap| +|08/01/2022 05:59:58| |NOT THE BASSIST| +|08/01/2022 05:59:59| |no I don't understand it either| +|08/01/2022 05:59:59| |BENIS :DDDDDD| +|08/01/2022 05:59:59| Takeshi..... +|08/01/2022 06:00:01| |ARISA IS CUTE!| +|08/01/2022 06:00:02| |it means america a shit| +|08/01/2022 06:00:05| |kay zr| +|08/01/2022 06:00:05| |I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HA-| +|08/01/2022 06:00:06| |THE TREES ARE SPEAKING JAPANESE| +|08/01/2022 06:00:06| |bong humor| +|08/01/2022 06:00:07| BANG +|08/01/2022 06:00:08| |KAY THIGHS| +|08/01/2022 06:00:11| TOTSUGEKI +|08/01/2022 06:00:12| AZUDA +|08/01/2022 06:00:12| |ughhh Kay thighs...| +|08/01/2022 06:00:16| |pekoe, have you heard the saying "we're fucked"| +|08/01/2022 06:00:17| TOTSUGEKI +|08/01/2022 06:00:18| |SHAKY SHAKY| +|08/01/2022 06:00:18| |why does kay keep trusting alisa| +|08/01/2022 06:00:19| |CQ CQ| +|08/01/2022 06:00:19| |bong """humour"""| +|08/01/2022 06:00:19| |I want Kay| +|08/01/2022 06:00:23| |I HATE THE ANTICHRIST| +|08/01/2022 06:00:24| TOTSUGEKI +|08/01/2022 06:00:26| |Time for some high speed tactical waterfowl| +|08/01/2022 06:00:27| >YARDS +|08/01/2022 06:00:33| |Okay I'm falling asleep on my chair goodbye anons finish the fight for me| +|08/01/2022 06:00:37| PERSHINGU +|08/01/2022 06:00:38| |NOT HOLDING TEA NOW ARE YOU YOU BITCH| +|08/01/2022 06:00:38| |LOOK AT THE FOREHEAD ON ASSAM. THATS SEX INCARNATE.| +|08/01/2022 06:00:39| |Driver name???| +|08/01/2022 06:00:39| |MY WIFE DARJEELING| +|08/01/2022 06:00:40| |goodnight anon| +|08/01/2022 06:00:40| yessir +|08/01/2022 06:00:40| >leavers +|08/01/2022 06:00:43| |STAY STRONG| +|08/01/2022 06:00:44| |sweet dreams anon| +|08/01/2022 06:00:48| |YOU'RE THE DRIVER DONT SLEEP| +|08/01/2022 06:00:50| |oyasumi sleepy anons| +|08/01/2022 06:00:52| |what year is the pershing? 1945?| +|08/01/2022 06:00:54| |COWARDS WILL BE HANGED | +|08/01/2022 06:00:57| |this is peak tbh| +|08/01/2022 06:00:57| |FAITO | +|08/01/2022 06:00:58| |nigger just shitpost more| +|08/01/2022 06:01:01| |do NOT totsugeki| +|08/01/2022 06:01:01| |DON'T FALL ASLEEP ANON, YOU CAN THIS| +|08/01/2022 06:01:02| |NO TOTSUGEKI| +|08/01/2022 06:01:05| |>Nishi-san, dont be a retard| +|08/01/2022 06:01:06| |>this level in the game| +|08/01/2022 06:01:07| |All these weak anons| +|08/01/2022 06:01:11| URA +|08/01/2022 06:01:11| URA +|08/01/2022 06:01:13| |But pointful charges are okay?| +|08/01/2022 06:01:16| OOORAI +|08/01/2022 06:01:16| ypaaaaaaaaaaa +|08/01/2022 06:01:19| |>Windows XP| +|08/01/2022 06:01:20| |Episode 4.44: You Can (Not) This| +|08/01/2022 06:01:21| |TOTSUGEKI, BUT IN PLACE| +|08/01/2022 06:01:26| |god so many cute hats...| +|08/01/2022 06:01:29| USA +|08/01/2022 06:01:30| |Why is she dumping shells? They didn't fire| +|08/01/2022 06:01:34| |I was about to fall asleep but I caught my second wind| +|08/01/2022 06:01:35| |bruh which movis is this| +|08/01/2022 06:01:41| UTE +|08/01/2022 06:01:42| |der Film| +|08/01/2022 06:01:43| |Der Film| +|08/01/2022 06:01:43| |DER FILM| +|08/01/2022 06:01:45| UTE +|08/01/2022 06:01:45| |the onle movie| +|08/01/2022 06:01:46| |IMPORTANT: My pizza has been delivered.| +|08/01/2022 06:01:47| |STATIONARY TOTSUGEKI| +|08/01/2022 06:01:51| |Saving private ryan| +|08/01/2022 06:01:54| |why didn't bakaroni put the cardboard up this time| +|08/01/2022 06:01:54| |what kinda pizza?| +|08/01/2022 06:01:57| |pizza time| +|08/01/2022 06:01:57| SHIT +|08/01/2022 06:01:58| Shita +|08/01/2022 06:01:59| |I wish I had pizza| +|08/01/2022 06:01:59| SHIT!! +|08/01/2022 06:02:00| SHIT!!! +|08/01/2022 06:02:00| SHIT! +|08/01/2022 06:02:01| SHIT +|08/01/2022 06:02:01| TOTSUGEKI +|08/01/2022 06:02:01| SHIESHT +|08/01/2022 06:02:02| SHIT +|08/01/2022 06:02:02| SHIT +|08/01/2022 06:02:02| SHIT +|08/01/2022 06:02:02| TOTSUGEKI +|08/01/2022 06:02:03| TOTSUGEKI! +|08/01/2022 06:02:03| SHIT +|08/01/2022 06:02:03| TOTSUGEKI +|08/01/2022 06:02:03| SHIT +|08/01/2022 06:02:03| ONOREEEEEE +|08/01/2022 06:02:05| |but it's 6 AM| +|08/01/2022 06:02:05| |Boku no Panzer| +|08/01/2022 06:02:05| CHIT +|08/01/2022 06:02:05| Shit +|08/01/2022 06:02:06| |dumb japs| +|08/01/2022 06:02:06| ONORE +|08/01/2022 06:02:07| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 06:02:08| |SURPRESSED BITCH| +|08/01/2022 06:02:08| |UTE UTE| +|08/01/2022 06:02:09| SHIIT +|08/01/2022 06:02:09| |jealous of you pizza anon| +|08/01/2022 06:02:10| SHIT +|08/01/2022 06:02:11| |Spank Naomi Y/Y| +|08/01/2022 06:02:12| |pekoe, have you heard the saying "SHIT!"| +|08/01/2022 06:02:13| TOTSUGEKI +|08/01/2022 06:02:15| \o/ +|08/01/2022 06:02:15| |OUTTA MY WAY NIPS FUCKING SHITS| +|08/01/2022 06:02:17| Y +|08/01/2022 06:02:18| |YOU GOT PIZZA FOR US ASWELL RIGHT BRO| +|08/01/2022 06:02:18| |>NOBODY LISTENS TO THE COMMANDER| +|08/01/2022 06:02:20| shamefur +|08/01/2022 06:02:22| |HONORABLE DEATH| +|08/01/2022 06:02:22| |SHAMEFUL DISPLAY| +|08/01/2022 06:02:24| TOTUGEKI... +|08/01/2022 06:02:25| TOTSUGEKIDIOTS +|08/01/2022 06:02:28| |i've got a pizza hut pepperoni and italian sausage, pretty tasty| +|08/01/2022 06:02:28| SHAMEFUR +|08/01/2022 06:02:29| urgh +|08/01/2022 06:02:30| |YES MOM| +|08/01/2022 06:02:32| |YES MOM| +|08/01/2022 06:02:34| |HELMET CHAN| +|08/01/2022 06:02:34| |YES MOM| +|08/01/2022 06:02:34| |yes maam| +|08/01/2022 06:02:39| |MOMMY KAY| +|08/01/2022 06:02:40| |Helmet chan...| +|08/01/2022 06:02:40| >TOSTUGEKI +|08/01/2022 06:02:41| |Poor helmet chan...| +|08/01/2022 06:02:42| |HELMET CHAN| +|08/01/2022 06:02:45| SPALLING +|08/01/2022 06:02:47| |at least she was wearing a helmet| +|08/01/2022 06:02:47| >DIES +|08/01/2022 06:02:48| |i wish Kay was my mom| +|08/01/2022 06:02:49| |Helmettoo chan| +|08/01/2022 06:02:49| |AMERICAN ARMOR| +|08/01/2022 06:02:52| |why the FUCK did miho waste slots on totsugeki retards| +|08/01/2022 06:02:52| |I wish Alisa would call me mom…| +|08/01/2022 06:02:54| |THAT'S WHAT YOU GET FOR FORGETTING THE BASSIST| +|08/01/2022 06:02:56| |HURRY UP| +|08/01/2022 06:02:57| |harry up!| +|08/01/2022 06:02:59| >shermans +|08/01/2022 06:02:59| TOMMYCOOKER! +|08/01/2022 06:03:00| |>fucking dies| +|08/01/2022 06:03:03| |WATCH OUT| +|08/01/2022 06:03:09| |Some say they discovered parts of Koume's floof in the next prefecture over.| +|08/01/2022 06:03:09| DON! +|08/01/2022 06:03:10| |NUKE INC| +|08/01/2022 06:03:11| DED +|08/01/2022 06:03:11| hiroshima +|08/01/2022 06:03:12| |Koume out here jobbing again| +|08/01/2022 06:03:12| WTF +|08/01/2022 06:03:12| |UTEee | +|08/01/2022 06:03:12| OWNED +|08/01/2022 06:03:13| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:03:13| |ACTUALLY DEAD| +|08/01/2022 06:03:13| |K A R L| +|08/01/2022 06:03:13| |Does Takeshi play the bass?| +|08/01/2022 06:03:13| Carlos +|08/01/2022 06:03:13| >fair +|08/01/2022 06:03:14| |Right? should've taken more german, american, or russian tanks| +|08/01/2022 06:03:14| |>A FUCKING NUKE| +|08/01/2022 06:03:15| UEEEEEEEEEEEEEE +|08/01/2022 06:03:15| |get fucked midget| +|08/01/2022 06:03:15| |KOUME DEAD| +|08/01/2022 06:03:15| |TACTICAL NUKE INCOMING| +|08/01/2022 06:03:16| |>gg no re. get rekked poor fags.| +|08/01/2022 06:03:16| UTEEE +|08/01/2022 06:03:17| WUB +|08/01/2022 06:03:17| AAAAAHHHHH +|08/01/2022 06:03:17| |>fucking nuked| +|08/01/2022 06:03:17| AAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:03:17| rip +|08/01/2022 06:03:18| |K A R L| +|08/01/2022 06:03:18| NUKED +|08/01/2022 06:03:18| |THE BASS CANNON| +|08/01/2022 06:03:19| OP +|08/01/2022 06:03:19| |katyushas thighs| +|08/01/2022 06:03:21| 3x3x3x3x3x3x3x +|08/01/2022 06:03:21| >fair +|08/01/2022 06:03:21| |Fucking MEXT...| +|08/01/2022 06:03:22| |2 BOMBS WASN'T ENOUGH| +|08/01/2022 06:03:23| RIGGED +|08/01/2022 06:03:23| |>Using nukes| +|08/01/2022 06:03:27| |Holy fuck| +|08/01/2022 06:03:27| |I can't believe kuome is fucking dead| +|08/01/2022 06:03:28| |I can't believ Katyusha is fucking dead| +|08/01/2022 06:03:30| |Koume getting fucked once again| +|08/01/2022 06:03:32| |carbon coating| +|08/01/2022 06:03:32| "SAFE" +|08/01/2022 06:03:33| |LUCK THEY WERE CARBON COATED| +|08/01/2022 06:03:34| CUTE +|08/01/2022 06:03:34| |BIG shell| +|08/01/2022 06:03:35| |University team deploying the late war Fat Man| +|08/01/2022 06:03:37| |CUTE SMOL FLUFF| +|08/01/2022 06:03:39| |GOD BEANS| +|08/01/2022 06:03:40| |UN has mini nukes| +|08/01/2022 06:03:41| |>from her scrapbook| +|08/01/2022 06:03:46| |That's a fast reload| +|08/01/2022 06:03:46| fuck +|08/01/2022 06:03:49| |did you catch that forehead on nonna?| +|08/01/2022 06:03:49| |INSTANT DEATH| +|08/01/2022 06:03:49| BOOM +|08/01/2022 06:03:51| :( +|08/01/2022 06:03:51| |BIG BULLET| +|08/01/2022 06:03:51| |ashes to ashes| +|08/01/2022 06:03:52| |Dont worry, they carbon coat the girls| +|08/01/2022 06:03:52| |Y E E T| +|08/01/2022 06:03:53| |KOUME DEAD. AGAIN| +|08/01/2022 06:03:53| wtf +|08/01/2022 06:03:55| |RIP Panthers| +|08/01/2022 06:03:56| |imagine being this desperate for a win| +|08/01/2022 06:03:57| Koume... +|08/01/2022 06:03:58| ERIKA +|08/01/2022 06:03:58| |>no deaths| +|08/01/2022 06:03:59| |That's a big gun| +|08/01/2022 06:03:59| |CARBON COATING| +|08/01/2022 06:04:04| 4U +|08/01/2022 06:04:05| owned +|08/01/2022 06:04:06| |AIM FOR THE TRACKS| +|08/01/2022 06:04:08| 4U +|08/01/2022 06:04:08| |"SAFE SPORT"| +|08/01/2022 06:04:11| |I can;'t believe those girls are fucking dead| +|08/01/2022 06:04:21| |we have you surronded at least from this side| +|08/01/2022 06:04:21| |SAY YOU HATE THE ANTICRIST AGAIN | +|08/01/2022 06:04:23| |Carbon coated tanks, uniforms, and skin-cram| +|08/01/2022 06:04:23| |F FOR THE PANTHERS| +|08/01/2022 06:04:27| |I HATE THE ANTICHRIST| +|08/01/2022 06:04:28| |eargasm with those explosions | +|08/01/2022 06:04:31| |Best way out of a double envelopment| +|08/01/2022 06:04:31| |I HATE THE ANTICHRIST| +|08/01/2022 06:04:31| |my maho wife| +|08/01/2022 06:04:32| |I HATE THE ANTI CHRIST| +|08/01/2022 06:04:33| |8x30 elimination match against a more experienced team and the fucker still pulls this shit lmao| +|08/01/2022 06:04:34| |you vill dreenk the corn syroop| +|08/01/2022 06:04:35| |I HATE THE ANTICHRIST!| +|08/01/2022 06:04:36| F +|08/01/2022 06:04:37| |I HATE THE ANTICHRIST| +|08/01/2022 06:04:38| MAHOOO** +|08/01/2022 06:04:40| |I HATE THE ANITCHRIST| +|08/01/2022 06:04:49| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:04:49| |Actually, the anti-christ isn't so bad| +|08/01/2022 06:04:50| |Man, I saw the shell before it blew| +|08/01/2022 06:04:52| KINO +|08/01/2022 06:04:53| |close the fucking hatch katyusha| +|08/01/2022 06:04:54| NONNA +|08/01/2022 06:04:55| |I HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRIST| +|08/01/2022 06:04:56| |kino shots| +|08/01/2022 06:04:59| noooooo +|08/01/2022 06:05:00| |I like communism| +|08/01/2022 06:05:01| KINO +|08/01/2022 06:05:02| |KINO KINO KINO| +|08/01/2022 06:05:02| |I lost this mission several times in the game. kept driving off of the cliff| +|08/01/2022 06:05:03| |DAT SOUND| +|08/01/2022 06:05:03| |That's some great leading to hit that close on a moving target| +|08/01/2022 06:05:03| KINOOOOOO +|08/01/2022 06:05:05| |sacrifice yourself nonna| +|08/01/2022 06:05:06| |KLARA NOOOOO| +|08/01/2022 06:05:07| ;__;7 +|08/01/2022 06:05:08| BASED +|08/01/2022 06:05:10| |KLARA NO!| +|08/01/2022 06:05:11| b8 +|08/01/2022 06:05:11| |KINO MOMENT| +|08/01/2022 06:05:11| ;_:7 +|08/01/2022 06:05:11| KLARRRAAAAA!!!! +|08/01/2022 06:05:11| SOUND +|08/01/2022 06:05:11| |GIVE YOUR LIVES FOR THE GREAT LEADER.| +|08/01/2022 06:05:12| |KLARA NOOOOOOOO| +|08/01/2022 06:05:12| |KINO KINO KINO KINO| +|08/01/2022 06:05:12| |KLARA NO| +|08/01/2022 06:05:13| |KLARA NOOOOOOOOOOOOO| +|08/01/2022 06:05:13| ;_;7 +|08/01/2022 06:05:13| KLARA +|08/01/2022 06:05:13| |KLARA NO| +|08/01/2022 06:05:14| NOOOOOOOOOOOOO +|08/01/2022 06:05:14| ;_;7 +|08/01/2022 06:05:16| |Klara ;_____;| +|08/01/2022 06:05:16| NOOOOOOOOOOOO +|08/01/2022 06:05:17| |KLARA ;_;| +|08/01/2022 06:05:17| ;_;7 +|08/01/2022 06:05:17| |Klara ;_;7| +|08/01/2022 06:05:17| |Klara noo| +|08/01/2022 06:05:18| |Klara ;_;l| +|08/01/2022 06:05:18| |KLARAAAAAAAAAAAAAAAAAA ;_;7| +|08/01/2022 06:05:19| |this scene is kino| +|08/01/2022 06:05:19| KLARA +|08/01/2022 06:05:19| |>Input Danmaku, hit Enter| +|08/01/2022 06:05:19| ???? +|08/01/2022 06:05:19| |KLARA NOOOO| +|08/01/2022 06:05:20| ;________________; +|08/01/2022 06:05:20| |is katyusha literally stalin?| +|08/01/2022 06:05:21| o7 +|08/01/2022 06:05:21| |KLARA NOOOOOOOOO| +|08/01/2022 06:05:21| |KLARA DIES WITH HONOUR FOR MOTHER KATYUSHA| +|08/01/2022 06:05:22| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:05:22| |katyusha tebe razlubit..........................| +|08/01/2022 06:05:23| KLAAAAAARAAAAAAA +|08/01/2022 06:05:23| |KATYUSHA ISN'T WORTH IT| +|08/01/2022 06:05:23| |KINO | +|08/01/2022 06:05:23| |Most useless sacrifice ever| +|08/01/2022 06:05:24| ;-;7 +|08/01/2022 06:05:26| |;_;7 you were the best son maybe even the best| +|08/01/2022 06:05:26| |KLARA WILL BE REMEMBERED AS A HERO OF PRAVDA| +|08/01/2022 06:05:27| |KLARA NOOOOOOOOOOO| +|08/01/2022 06:05:27| o7 +|08/01/2022 06:05:28| ;_;7 +|08/01/2022 06:05:29| |SHE SPEAKS| +|08/01/2022 06:05:29| ;_; +|08/01/2022 06:05:30| ;_;7 +|08/01/2022 06:05:30| GOKYGENYOU +|08/01/2022 06:05:30| NIHONGO +|08/01/2022 06:05:30| ;__;7 +|08/01/2022 06:05:31| ;_;7 +|08/01/2022 06:05:31| ;_;7 +|08/01/2022 06:05:31| |This is objectively the best part of the movie| +|08/01/2022 06:05:32| |For pravda| +|08/01/2022 06:05:32| |U DESERVE BETTER| +|08/01/2022 06:05:33| gokigenyou +|08/01/2022 06:05:33| GOKIGENYOU +|08/01/2022 06:05:33| KLARAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:05:34| |AAAAAAAAAAAHHHHHHHHHH MOTHER LAND| +|08/01/2022 06:05:34| |i cry everytime| +|08/01/2022 06:05:34| w +|08/01/2022 06:05:34| |I CRY EVERYTIME I SEE THIS SCENE| +|08/01/2022 06:05:34| ;_;7 +|08/01/2022 06:05:35| ;_;7 +|08/01/2022 06:05:35| ;________;7 +|08/01/2022 06:05:35| ;_;7 +|08/01/2022 06:05:35| |I'M FUCKING CRYING| +|08/01/2022 06:05:36| ;_;7 +|08/01/2022 06:05:37| 日本語で喋りなさい +|08/01/2022 06:05:37| klarabros... +|08/01/2022 06:05:37| ;_;7 +|08/01/2022 06:05:37| ;_; +|08/01/2022 06:05:38| o7 +|08/01/2022 06:05:38| UDACHIIIIIIIII +|08/01/2022 06:05:38| |KLARA NO| +|08/01/2022 06:05:39| o7 +|08/01/2022 06:05:39| ;_;7 +|08/01/2022 06:05:39| KLARAAAAAAAAAAAA +|08/01/2022 06:05:39| |I cried| +|08/01/2022 06:05:40| |For Pravda!| +|08/01/2022 06:05:41| o7 +|08/01/2022 06:05:41| KLAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:05:41| o7 +|08/01/2022 06:05:41| KLARAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:05:41| |:_: 7| +|08/01/2022 06:05:42| |DON'T DO SOMETHING STUPID KLARA| +|08/01/2022 06:05:42| o7 +|08/01/2022 06:05:42| ;___________; +|08/01/2022 06:05:43| |;_;7 KLARAAAAAAAAAA| +|08/01/2022 06:05:43| o7 +|08/01/2022 06:05:43| ;_;7 +|08/01/2022 06:05:44| |ZA PRAVDU| +|08/01/2022 06:05:44| ;_;7 +|08/01/2022 06:05:44| ;_;7 +|08/01/2022 06:05:44| |IM CRINE| +|08/01/2022 06:05:46| |KLARA? KLARA?| +|08/01/2022 06:05:46| |ZA PRAVDU ;_________________________________________;7| +|08/01/2022 06:05:46| |Klara ;_;7| +|08/01/2022 06:05:46| |would you fight for a loli?| +|08/01/2022 06:05:47| ;_;7 +|08/01/2022 06:05:47| ;_;7 +|08/01/2022 06:05:47| |but she's not dead| +|08/01/2022 06:05:48| RIP +|08/01/2022 06:05:48| o7 +|08/01/2022 06:05:48| ;_:7 +|08/01/2022 06:05:48| |UDACHI KOMARAD| +|08/01/2022 06:05:48| ;_;/ +|08/01/2022 06:05:48| |FOR PRAVDA| +|08/01/2022 06:05:49| |ZAAA PRAVDUUUUUUU| +|08/01/2022 06:05:49| NOOOOOOOOOOOOo +|08/01/2022 06:05:49| ;_;7 +|08/01/2022 06:05:49| o7 +|08/01/2022 06:05:49| |;_;7 NEVER FORGET| +|08/01/2022 06:05:49| |Goodnight sweet princess| +|08/01/2022 06:05:49| |KLARA IS DEAD| +|08/01/2022 06:05:50| |o7 o7 o7 o7 ;_;| +|08/01/2022 06:05:50| |ZA PRAVDU| +|08/01/2022 06:05:50| |ZA PRAVDU| +|08/01/2022 06:05:50| ;_;7 +|08/01/2022 06:05:50| NOOOOOO +|08/01/2022 06:05:51| |hold up isn't this a safe sport?\| +|08/01/2022 06:05:51| DEAD +|08/01/2022 06:05:51| NOOOOOOOOOOOOOOo +|08/01/2022 06:05:52| |ACTUAL F| +|08/01/2022 06:05:52| bros... +|08/01/2022 06:05:52| ded +|08/01/2022 06:05:53| ;_;7 +|08/01/2022 06:05:53| SNAAAAAAAAAAAKEEEE +|08/01/2022 06:05:53| |FOR PRAVDA| +|08/01/2022 06:05:53| |ALL GLORY TO THE COMMIE LOLI| +|08/01/2022 06:05:53| RIP +|08/01/2022 06:05:54| |ZA PRAVDU| +|08/01/2022 06:05:54| o7 +|08/01/2022 06:05:54| |;_; 7| +|08/01/2022 06:05:54| |FOR THE MOTHERLAND| +|08/01/2022 06:05:55| DED +|08/01/2022 06:05:56| UUUUUUUUURRRRRRRRRRRAAAAAAAAAAAA +|08/01/2022 06:05:57| 07 +|08/01/2022 06:05:57| |carbon coated, she's fine| +|08/01/2022 06:05:57| T_T7 +|08/01/2022 06:05:58| |It's just raining guys...| +|08/01/2022 06:06:00| |COMRADE KLARA IS DEAD| +|08/01/2022 06:06:00| ;_______________________;7 +|08/01/2022 06:06:00| |FOR THE EMPORER| +|08/01/2022 06:06:01| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:06:02| |FOR THE LOLILANd| +|08/01/2022 06:06:02| |NOT ONE STEP BACK!| +|08/01/2022 06:06:02| ;_;7 +|08/01/2022 06:06:03| |Lost but not forgotten ;_;7| +|08/01/2022 06:06:04| |SHE FUCKING DIED| +|08/01/2022 06:06:04| |A TERRIBLE DAY FOR RAIN| +|08/01/2022 06:06:05| ;_;7 +|08/01/2022 06:06:05| |ZA RODINU| +|08/01/2022 06:06:05| |COMRADE NINA!| +|08/01/2022 06:06:05| ;__________________; +|08/01/2022 06:06:06| ;__; +|08/01/2022 06:06:06| ;_;7 +|08/01/2022 06:06:08| |She searved the Soviet Union!| +|08/01/2022 06:06:08| LOLITANK +|08/01/2022 06:06:08| YAMEROOOOO +|08/01/2022 06:06:09| |HUMAN FLESH SHIELD| +|08/01/2022 06:06:10| |I'm literally fucking crying right now i can't believe they just killed a character| +|08/01/2022 06:06:10| IKUBE +|08/01/2022 06:06:10| |FUUUUUUUUUUUUUUUUUUUUUUUUUUU THIS GAY eART| +|08/01/2022 06:06:11| IKUBE +|08/01/2022 06:06:11| |BIG SHELL| +|08/01/2022 06:06:12| |NINA NO| +|08/01/2022 06:06:13| ;_; +|08/01/2022 06:06:14| |CUNNY ;_;7| +|08/01/2022 06:06:15| ;_;7 +|08/01/2022 06:06:16| |carbon coated spines| +|08/01/2022 06:06:16| |SACRED WAR| +|08/01/2022 06:06:16| |wide is my motherland| +|08/01/2022 06:06:17| |4 second reload cunny...| +|08/01/2022 06:06:18| |KV-TAN ;_____;| +|08/01/2022 06:06:18| |NINA ;_;7| +|08/01/2022 06:06:18| KV-TAN +|08/01/2022 06:06:18| |NO, KV| +|08/01/2022 06:06:19| NINA +|08/01/2022 06:06:20| ;_; +|08/01/2022 06:06:20| |NOOOOOOOOO NINA| +|08/01/2022 06:06:22| IKUBI +|08/01/2022 06:06:22| |NOT ONE STEP BACK| +|08/01/2022 06:06:23| |would lolis fight for you?| +|08/01/2022 06:06:24| |LOLI POWA| +|08/01/2022 06:06:24| |KV tan..... ;_;7| +|08/01/2022 06:06:27| |YOU'RE NOT AGAINST EARLY WAR TANKS| +|08/01/2022 06:06:27| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:06:28| |NOT ONE STEP BACK!!!| +|08/01/2022 06:06:30| |I WISH I HAD CARBON COATED TEAR DUCTS| +|08/01/2022 06:06:30| ;____________________________________;7 +|08/01/2022 06:06:31| |NONNA NOT YOU TOO!| +|08/01/2022 06:06:32| ;_:7 +|08/01/2022 06:06:32| ;_; +|08/01/2022 06:06:32| ;_; +|08/01/2022 06:06:33| |NONNA NO| +|08/01/2022 06:06:33| |NOT THE LOLISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS!!| +|08/01/2022 06:06:33| |KV-tan ;_;| +|08/01/2022 06:06:36| |I'd reload faster if you know what I mean| +|08/01/2022 06:06:37| ;_; +|08/01/2022 06:06:38| ;__________________________________________; +|08/01/2022 06:06:40| |TOO MUCH KINO I'M OVERLOADING| +|08/01/2022 06:06:40| ;_;7 +|08/01/2022 06:06:40| |NOOOOO NOT NONNA TOO| +|08/01/2022 06:06:41| |EVERYONE'S DYING| +|08/01/2022 06:06:41| |KAABEE-TAN NOOOOO| +|08/01/2022 06:06:42| ;_; +|08/01/2022 06:06:42| ;_;7 +|08/01/2022 06:06:44| ;___;7 +|08/01/2022 06:06:45| ;_; +|08/01/2022 06:06:45| |NONNA, KLARA AND THE LOLIS?!| +|08/01/2022 06:06:46| ;______________; +|08/01/2022 06:06:46| |NONNO NOOOOO| +|08/01/2022 06:06:47| |Ka ve tan...| +|08/01/2022 06:06:47| |BIG WAIFUS ARE GONE NOOOOOOO| +|08/01/2022 06:06:47| ;_;7 +|08/01/2022 06:06:48| |THEY GAVE THEIR LIVES FOR THE MOTHERLAND| +|08/01/2022 06:06:48| |NONNA NOOOOOOOOOO| +|08/01/2022 06:06:49| KINO +|08/01/2022 06:06:49| |But y tho| +|08/01/2022 06:06:50| ;-;7 +|08/01/2022 06:06:51| ;_;7 +|08/01/2022 06:06:52| O_O +|08/01/2022 06:06:52| :_; +|08/01/2022 06:06:55| ;_;7 +|08/01/2022 06:06:55| ;___;7 +|08/01/2022 06:06:55| |LONG LIVE THE CCCP o7| +|08/01/2022 06:06:55| NONNAAAAAAAAAAAAAAAAA +|08/01/2022 06:06:56| KINO +|08/01/2022 06:06:57| |;_; 7| +|08/01/2022 06:06:57| |RAMMING SPEED| +|08/01/2022 06:06:57| >BUFFERING +|08/01/2022 06:06:58| |RIP BIG TITTIES| +|08/01/2022 06:06:59| ;_;7 +|08/01/2022 06:07:01| ;_;7 +|08/01/2022 06:07:01| |IMA DESU| +|08/01/2022 06:07:01| ;_;7 +|08/01/2022 06:07:01| ToT +|08/01/2022 06:07:02| ZETSUBOUSHITA +|08/01/2022 06:07:04| bros... +|08/01/2022 06:07:05| NOOOOOOOOOOO +|08/01/2022 06:07:05| КиноКиноКиноКиноКино +|08/01/2022 06:07:06| ;_;7 +|08/01/2022 06:07:07| |But you're not dead| +|08/01/2022 06:07:07| |URAAAAAAAAAAAAA FOR PRAVDA!!!!!!!!!!!| +|08/01/2022 06:07:07| ;_;7 +|08/01/2022 06:07:08| ;_;7 +|08/01/2022 06:07:08| ;_; +|08/01/2022 06:07:11| URAAAAA +|08/01/2022 06:07:11| |BY ME| +|08/01/2022 06:07:13| Кино +|08/01/2022 06:07:13| URAAAA! +|08/01/2022 06:07:14| ;________________; +|08/01/2022 06:07:14| F +|08/01/2022 06:07:14| KINO +|08/01/2022 06:07:15| NOOOOOOOO +|08/01/2022 06:07:17| ;_; +|08/01/2022 06:07:17| ;_; +|08/01/2022 06:07:18| |URA VIVE LE CCCP| +|08/01/2022 06:07:18| NONNA +|08/01/2022 06:07:19| URAAAAA +|08/01/2022 06:07:19| |so was this supposed to be emotional? it's not like they're dying| +|08/01/2022 06:07:19| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:20| KINO +|08/01/2022 06:07:20| ;_; +|08/01/2022 06:07:20| URAAAAA +|08/01/2022 06:07:21| N-nonna +|08/01/2022 06:07:21| ;_;7 +|08/01/2022 06:07:21| |ITS NOT FAIR BROS| +|08/01/2022 06:07:21| AAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:23| |BY ME| +|08/01/2022 06:07:24| |bros I'm crying| +|08/01/2022 06:07:24| |mind broken| +|08/01/2022 06:07:25| NOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:07:26| AAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:26| |HEROS OF THE SOVIET UNION| +|08/01/2022 06:07:27| ;_;7 +|08/01/2022 06:07:27| ;_;7 +|08/01/2022 06:07:27| |tags: mindbreak| +|08/01/2022 06:07:27| |TRAUMATIZED BY WAR| +|08/01/2022 06:07:28| |I'M CRYING| +|08/01/2022 06:07:29| |Punished Katyusha| +|08/01/2022 06:07:29| o7 +|08/01/2022 06:07:29| |is it raining? yes it is| +|08/01/2022 06:07:30| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:07:30| |I can't believe nonna is fucking dead| +|08/01/2022 06:07:30| |KV's literally getting torn apart| +|08/01/2022 06:07:30| |It's over| +|08/01/2022 06:07:31| NONNNAAAAAAA +|08/01/2022 06:07:32| PTSD +|08/01/2022 06:07:33| NONNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:33| |THEYRE ALL DEAD| +|08/01/2022 06:07:33| NOOOOOOOOOOOONAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:34| |THEY DIED FOR THE MOTHERLAND| +|08/01/2022 06:07:35| |I serve the Soviet Union| +|08/01/2022 06:07:35| NOOOOOOOO +|08/01/2022 06:07:35| |SADDEST PART IN THE SERIES| +|08/01/2022 06:07:37| |Alexa play Tyomnaya Noch| +|08/01/2022 06:07:38| |NINA DOWN| +|08/01/2022 06:07:39| NOOOO +|08/01/2022 06:07:40| |Those M26s have garbage aim| +|08/01/2022 06:07:41| |Punished commie loli| +|08/01/2022 06:07:41| |PSTD HERE WE COME| +|08/01/2022 06:07:41| |NOT THE KV| +|08/01/2022 06:07:42| |she died well| +|08/01/2022 06:07:42| |it's raining in my house...| +|08/01/2022 06:07:43| |>5 fucking tanks lost| +|08/01/2022 06:07:43| |strange, its raining in my bedroom....| +|08/01/2022 06:07:44| |IT'S LIKE ANOTHER BERLIN WALL| +|08/01/2022 06:07:44| |IVAN'S CHILDHOOD: THE ANIME| +|08/01/2022 06:07:46| |THEY GAVE THEIR LIVES FOR RUSSIA| +|08/01/2022 06:07:47| |WHY ARE WE HERE JUST TO SUFFER| +|08/01/2022 06:07:47| |DEAD CUNYY UOOOOOOOOOOH| +|08/01/2022 06:07:50| |RIP ;_;7| +|08/01/2022 06:07:51| 😭7 +|08/01/2022 06:07:52| |Can't even kill a KV from the side| +|08/01/2022 06:07:53| |How is it raining indoors?| +|08/01/2022 06:07:54| |BEST GIRLS BEST GIRLS BEST GIRLS BEST GIRLS| +|08/01/2022 06:07:55| |BROS ITS RAINING| +|08/01/2022 06:07:57| |wHATS THE SCORE RIGHT NOW?| +|08/01/2022 06:07:58| |WET TITS| +|08/01/2022 06:08:01| >THAT +|08/01/2022 06:08:01| ARE +|08/01/2022 06:08:02| |Shiho's jodhpurs are sexy| +|08/01/2022 06:08:03| |cute raincoat kay| +|08/01/2022 06:08:04| MASAKA +|08/01/2022 06:08:04| |alexa play Государственный гимн СССР| +|08/01/2022 06:08:04| |Oraibros, it doesn't look good| +|08/01/2022 06:08:05| |Simulated rain| +|08/01/2022 06:08:05| THAT? +|08/01/2022 06:08:05| |who the fuck was talking? I couldn't see anything| +|08/01/2022 06:08:06| >THAT +|08/01/2022 06:08:07| THAT +|08/01/2022 06:08:08| |ooarai team is getting purely fucked atm| +|08/01/2022 06:08:08| THAT????? +|08/01/2022 06:08:10| SLUT +|08/01/2022 06:08:11| >boyfriend +|08/01/2022 06:08:13| BTFO +|08/01/2022 06:08:14| >boyfriend +|08/01/2022 06:08:15| |Time for bullying| +|08/01/2022 06:08:15| |they mentioned male| +|08/01/2022 06:08:15| AZusa!!!!! +|08/01/2022 06:08:17| REKT +|08/01/2022 06:08:17| |God dang, girls in ponchos are cute| +|08/01/2022 06:08:18| |ALISA BTFO| +|08/01/2022 06:08:18| |based get fucked arisa| +|08/01/2022 06:08:19| |Takeshi broke up with her because she eavesdrops | +|08/01/2022 06:08:21| |BASED AND REDPILLED TAKASHI| +|08/01/2022 06:08:21| |TAKAHASHI SAN| +|08/01/2022 06:08:21| |TAKESHI KISAMA| +|08/01/2022 06:08:21| bullied +|08/01/2022 06:08:21| Takeshi... +|08/01/2022 06:08:22| |BULLY ARISA!| +|08/01/2022 06:08:22| |would you die for kytyushas cute&funny?| +|08/01/2022 06:08:22| |Naomi is Takashi| +|08/01/2022 06:08:22| w +|08/01/2022 06:08:24| KEK +|08/01/2022 06:08:26| |Tank lover| +|08/01/2022 06:08:29| |that's me by the way | +|08/01/2022 06:08:30| THAT +|08/01/2022 06:08:33| >that +|08/01/2022 06:08:33| |"that thing"| +|08/01/2022 06:08:33| Bass +|08/01/2022 06:08:34| |Spank Alisa Y/Y| +|08/01/2022 06:08:35| THAT +|08/01/2022 06:08:35| |Naomi has Kay| +|08/01/2022 06:08:36| |>It's okay to be alone // Hahaha... ;_;| +|08/01/2022 06:08:37| |No I'm takeshi| +|08/01/2022 06:08:38| |Takeshi?! SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEXXXXXX| +|08/01/2022 06:08:40| Y +|08/01/2022 06:08:41| Y +|08/01/2022 06:08:43| |DAS DING| +|08/01/2022 06:08:55| THAT +|08/01/2022 06:08:56| |half of these characters could be fixed if takahashi fucked them| +|08/01/2022 06:08:56| DUCE +|08/01/2022 06:08:57| ANCHOVYYYYYYYYYYY +|08/01/2022 06:08:59| |TL Note: "Anzu" means "SEX"| +|08/01/2022 06:09:00| DUCE! +|08/01/2022 06:09:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:02| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:09:02| KINO +|08/01/2022 06:09:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:03| ANCHOVYYYYYYY +|08/01/2022 06:09:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:05| CHOVY +|08/01/2022 06:09:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:07| |Кино incoming| +|08/01/2022 06:09:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:07| CHOVY +|08/01/2022 06:09:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:08| |Tiny tank| +|08/01/2022 06:09:08| |MORE LIKE DUCHE| +|08/01/2022 06:09:08| |WHat a squad| +|08/01/2022 06:09:09| CHOVY +|08/01/2022 06:09:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:11| |did i miss alisa's meltdown?| +|08/01/2022 06:09:12| ANZU +|08/01/2022 06:09:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:12| chovy +|08/01/2022 06:09:12| CHOVY! +|08/01/2022 06:09:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:12| Chobi +|08/01/2022 06:09:12| :DDDDDDDDDD +|08/01/2022 06:09:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:13| |Imagine getting hit by a 1000kg projectile| +|08/01/2022 06:09:13| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +|08/01/2022 06:09:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:14| |enter the chubby child| +|08/01/2022 06:09:14| |:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +|08/01/2022 06:09:15| |It's almost time| +|08/01/2022 06:09:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:09:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:16| :DDDDDDDDDD +|08/01/2022 06:09:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:18| |ACTUAL best moment in the film incoming| +|08/01/2022 06:09:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE vDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:18| |the KINO BATALLION| +|08/01/2022 06:09:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:21| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY | +|08/01/2022 06:09:22| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +|08/01/2022 06:09:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:23| |:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +|08/01/2022 06:09:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:24| |YOU MISSED?| +|08/01/2022 06:09:25| |ENTER THE FINS| +|08/01/2022 06:09:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:27| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY | +|08/01/2022 06:09:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:28| |DVCE DVCE| +|08/01/2022 06:09:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:28| ? +|08/01/2022 06:09:29| DUCE +|08/01/2022 06:09:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:09:32| |KINO MOMENT| +|08/01/2022 06:09:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:34| |the dvces are getting weaker :(| +|08/01/2022 06:09:34| DUCE +|08/01/2022 06:09:35| BUFFERING +|08/01/2022 06:09:37| |Kino scene coming up| +|08/01/2022 06:09:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:37| ENTER +|08/01/2022 06:09:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:38| |anchovy smells good and does not wear a wig| +|08/01/2022 06:09:38| |ENTER CARLOS| +|08/01/2022 06:09:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:39| ENTER +|08/01/2022 06:09:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:39| >buffering +|08/01/2022 06:09:39| |FUCKING ITALIAN INTERNET| +|08/01/2022 06:09:40| DEKAI +|08/01/2022 06:09:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:41| |carbon coated tears ;_;| +|08/01/2022 06:09:41| |DVCE DVCE DVCE DVCE| +|08/01/2022 06:09:42| |:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +|08/01/2022 06:09:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:42| |here comes possible one of the most kino scenes in the entire series| +|08/01/2022 06:09:42| |BUFFER | +|08/01/2022 06:09:42| |CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 | +|08/01/2022 06:09:43| |NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +|08/01/2022 06:09:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:09:44| CARLOS +|08/01/2022 06:09:44| |Karu worfu| +|08/01/2022 06:09:45| >600mm +|08/01/2022 06:09:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:45| |ITS CARL| +|08/01/2022 06:09:46| |Light tanks with the tactical advantage. | +|08/01/2022 06:09:46| |ENTER, Кино| +|08/01/2022 06:09:46| |BBK (big black Karl)| +|08/01/2022 06:09:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:47| 600!? +|08/01/2022 06:09:47| |DUMB BAKARONI| +|08/01/2022 06:09:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:50| |Chat’s moving so fast nobody will see me say that I hate Duceposting| +|08/01/2022 06:09:50| |NOT A TANK!| +|08/01/2022 06:09:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:52| |>600 MM| +|08/01/2022 06:09:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:52| |>Tank match >Using railway artillery| +|08/01/2022 06:09:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:55| |For real I bet even her feet actually smell good| +|08/01/2022 06:09:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:59| ABUNAI +|08/01/2022 06:09:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:10:00| |fucking pepperoni| +|08/01/2022 06:10:00| |It's okay, it's only a short barrel| +|08/01/2022 06:10:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:10:01| |LMAO FUCKING BULLSHIT| +|08/01/2022 06:10:05| |DAMN CARL| +|08/01/2022 06:10:05| |DUCE DUCE DUCE| +|08/01/2022 06:10:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:10:06| |DUCE | +|08/01/2022 06:10:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:10:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:10:07| |DUM RETARD PEPPA| +|08/01/2022 06:10:07| RIGGED +|08/01/2022 06:10:09| >males +|08/01/2022 06:10:10| |>fair and balanced| +|08/01/2022 06:10:13| |just get like 12 of these| +|08/01/2022 06:10:13| |MEXT-KUN FUCKING CHILL| +|08/01/2022 06:10:13| |what a nigger| +|08/01/2022 06:10:13| |D E V I L I S H| +|08/01/2022 06:10:15| |Smug Males| +|08/01/2022 06:10:15| |GHOST CREW| +|08/01/2022 06:10:15| (((MEXT)))) +|08/01/2022 06:10:17| |R I G G E D| +|08/01/2022 06:10:19| |oy vey| +|08/01/2022 06:10:19| |I'LL KILL YOU FOUR EYES| +|08/01/2022 06:10:20| |other guy seems rather pissed| +|08/01/2022 06:10:21| |MEXT KUN GOES HARD| +|08/01/2022 06:10:21| |MEXT JEW| +|08/01/2022 06:10:23| |MEXT brothers we can do this| +|08/01/2022 06:10:25| |SUGOI DEKAI| +|08/01/2022 06:10:26| |Not a fucking tank| +|08/01/2022 06:10:26| (((MEXT))) +|08/01/2022 06:10:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:10:28| |A MATTER OF PERPSECTIVE| +|08/01/2022 06:10:28| |TL Note: "Anzu" means "SEX"| +|08/01/2022 06:10:30| |Megane master| +|08/01/2022 06:10:30| |RIGGED MATCH STOP THE STEAL| +|08/01/2022 06:10:31| |raw pasta| +|08/01/2022 06:10:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:10:33| momo=jew +|08/01/2022 06:10:34| |A CREW OF SPOOKS| +|08/01/2022 06:10:34| |is that thing remote controlled or something?| +|08/01/2022 06:10:35| |MEX CHADS THIS IS OUR YEAR| +|08/01/2022 06:10:36| Anzu +|08/01/2022 06:10:37| |thanks tl| +|08/01/2022 06:10:38| |i want to sex glasses guy| +|08/01/2022 06:10:38| |IT'S MEXT'S YEAR| +|08/01/2022 06:10:41| GUTS +|08/01/2022 06:10:44| |Kino time| +|08/01/2022 06:10:44| momo=mossad +|08/01/2022 06:10:45| bakahippu +|08/01/2022 06:10:46| |Noriko is still a sexy boy| +|08/01/2022 06:10:46| |HOW DID YOU MISS AGAIN| +|08/01/2022 06:10:47| ONOREEEEEE +|08/01/2022 06:10:47| |ROOZUHIPPU MODORINASAI| +|08/01/2022 06:10:47| |MY WIFE, ROSEHIP| +|08/01/2022 06:10:47| ONOREEEE +|08/01/2022 06:10:48| BAKA +|08/01/2022 06:10:49| |HERE IT COMES| +|08/01/2022 06:10:50| |Best girl spotted| +|08/01/2022 06:10:50| |rosehip remember the saying| +|08/01/2022 06:10:51| :DDD +|08/01/2022 06:10:51| POLKA! +|08/01/2022 06:10:51| ENTER +|08/01/2022 06:10:52| |TEAM GLOW-IN-THE-DARK| +|08/01/2022 06:10:53| KITA +|08/01/2022 06:10:53| |Rosehip is cute| +|08/01/2022 06:10:53| |did i miss the alisa meltdown?| +|08/01/2022 06:10:53| :DDDDDDDDD +|08/01/2022 06:10:53| :DDDDDDDDDDDDDD +|08/01/2022 06:10:53| :DDDD +|08/01/2022 06:10:54| |Rosehip best hip| +|08/01/2022 06:10:54| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:10:55| PERKELE +|08/01/2022 06:10:55| PERKELE +|08/01/2022 06:10:55| |BASED NORIKO| +|08/01/2022 06:10:56| |OH BOY HERE WE GO| +|08/01/2022 06:10:56| benis +|08/01/2022 06:10:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:10:57| ENTER +|08/01/2022 06:10:57| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:10:57| :-DDD +|08/01/2022 06:10:58| :DDDDDDDDDDDDDD +|08/01/2022 06:10:58| |KINO TIME| +|08/01/2022 06:10:58| |Rosehip speed| +|08/01/2022 06:10:59| :DDDDDDDDDDDDDDDD +|08/01/2022 06:11:00| benis +|08/01/2022 06:11:00| |hit it| +|08/01/2022 06:11:00| :DDDDDDDDDDDDDDDDD +|08/01/2022 06:11:01| |GHRISDIE SUSBENSION:DDDDDDDDDDD| +|08/01/2022 06:11:01| |ARE YOU READY BROS?| +|08/01/2022 06:11:02| YEEAAAAHHHHHHHH +|08/01/2022 06:11:02| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:02| |best scene incoming| +|08/01/2022 06:11:03| BENIS +|08/01/2022 06:11:03| |The Finns are strong because they don't miss| +|08/01/2022 06:11:04| |:DDDDDDDDDDD :DDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:04| |Peak moment of the series right here| +|08/01/2022 06:11:04| :DDDDDDDDDDDDD +|08/01/2022 06:11:04| |HUMPPAAA TAIKKA KUOLE| +|08/01/2022 06:11:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:05| |HAISTA VITTU :DDDDDDDDDDDDD| +|08/01/2022 06:11:05| |>When the trees start speaking Finnish| +|08/01/2022 06:11:05| :DDDDDDDDDDDDDDD +|08/01/2022 06:11:06| :DDD +|08/01/2022 06:11:06| :DDDDDDDDDDDDDD +|08/01/2022 06:11:07| PERKELEEEEEEEE +|08/01/2022 06:11:07| :DDDDDDDDDDDDD +|08/01/2022 06:11:07| |>Using cheating artillery >Still keep missing| +|08/01/2022 06:11:07| |MY HOBO WIFE MIKA| +|08/01/2022 06:11:07| |fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:07| |BENIS TIME| +|08/01/2022 06:11:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:07| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:08| :D +|08/01/2022 06:11:08| Кино +|08/01/2022 06:11:08| |EBIN :DDDDDDDDDDDDDD| +|08/01/2022 06:11:08| jammin +|08/01/2022 06:11:08| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:08| |PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:08| KITAAAAAAA +|08/01/2022 06:11:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:10| :DDDDDDDDDDDDDD +|08/01/2022 06:11:10| |BENIS :DDDDDDDD| +|08/01/2022 06:11:10| :DDDDDDDDDDD +|08/01/2022 06:11:11| KINO +|08/01/2022 06:11:11| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:11| |BERGELE :DDDDDDD| +|08/01/2022 06:11:11| |TIME FOR EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:11| KITAAAAAAAAAAAAAAAA +|08/01/2022 06:11:11| |FUGGGGG :DDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:11| |ENDER :DDDDDDDDDDDDDDDDDDDDdddddddddddddddd| +|08/01/2022 06:11:11| |EBIN :DDDDDDDDDDD| +|08/01/2022 06:11:11| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:11| :DDDDDDD +|08/01/2022 06:11:11| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :D| +|08/01/2022 06:11:12| |HERE WE GOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 06:11:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:12| |FUGGGGG :DDDDDDD| +|08/01/2022 06:11:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:13| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:13| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:13| :DDDDDDDDDDDDD +|08/01/2022 06:11:13| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:13| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:13| PERKELE +|08/01/2022 06:11:14| OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:11:14| |I wanna fug Aki| +|08/01/2022 06:11:15| :DDDD +|08/01/2022 06:11:15| perkele +|08/01/2022 06:11:15| SUOMI +|08/01/2022 06:11:15| :DDDDDDDDDDDDD +|08/01/2022 06:11:15| |LETS FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 06:11:15| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:15| |BENIS :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:16| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:16| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:16| SAAATAAAANAAAAAAAA +|08/01/2022 06:11:16| |PERKELE :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:16| |FUGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:16| |BENIS :DDDDD| +|08/01/2022 06:11:17| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:17| |FUG :DDDDDDDDDDD| +|08/01/2022 06:11:17| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:18| :DDDDDDDDDDDDD +|08/01/2022 06:11:18| :D +|08/01/2022 06:11:18| PERKELE +|08/01/2022 06:11:18| benis +|08/01/2022 06:11:18| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:18| |FUG :DDDDDDDDDDDD| +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:19| |FUG :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDD +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:20| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:20| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:20| |Ebin :DDDDD| +|08/01/2022 06:11:20| PERKELE +|08/01/2022 06:11:20| :----DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:21| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:21| :DDDDDDDDDDDD +|08/01/2022 06:11:21| OST +|08/01/2022 06:11:21| PERKELE +|08/01/2022 06:11:22| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:22| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD | +|08/01/2022 06:11:22| |SUOMI SUOMI FUG| +|08/01/2022 06:11:22| |OH FUGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:22| PERKELE +|08/01/2022 06:11:23| |KINO KINO KINO KINO :DDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:23| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:23| :DDDDDDDDDDDDD +|08/01/2022 06:11:23| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:23| |Viimeinen suomalainen hereillä| +|08/01/2022 06:11:24| |FUG :DDDDDDDDDDDD| +|08/01/2022 06:11:24| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:25| |PERGELE :DDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:25| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD benis| +|08/01/2022 06:11:25| |SATANA :DDDD| +|08/01/2022 06:11:25| |TULTA MUNILLE| +|08/01/2022 06:11:25| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:25| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:25| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:26| |Active sonar| +|08/01/2022 06:11:27| ::DDDDDDDD +|08/01/2022 06:11:27| |KINO KINO KINO KINO :DDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:27| :DDDDDDDDDDDDD +|08/01/2022 06:11:27| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:28| |EBIN :DDDDDDDDDDDDDDDD| +|08/01/2022 06:11:28| DULDA +|08/01/2022 06:11:28| |It's Kantele Time| +|08/01/2022 06:11:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:28| |Do you know benis?| +|08/01/2022 06:11:29| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:29| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:29| |PERKELE SAATANA VITTU :DDDDDDDDDDDDDD| +|08/01/2022 06:11:30| |FUUUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:30| |FUCK YEAR| +|08/01/2022 06:11:31| |EBIN :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:31| |tonks?fuggg :DDDDD| +|08/01/2022 06:11:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:32| |BRAP BRAP BRAP| +|08/01/2022 06:11:32| :DDDDDDDDDDDDD +|08/01/2022 06:11:33| |NJET MOLOTOV| +|08/01/2022 06:11:34| |SPURDO SPÄRDE| +|08/01/2022 06:11:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:34| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:34| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:34| |fugg :DDDDDDDDDDDDD| +|08/01/2022 06:11:35| :DDDDDDDD +|08/01/2022 06:11:35| EBIN +|08/01/2022 06:11:35| |:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +|08/01/2022 06:11:37| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddd +|08/01/2022 06:11:37| |:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +|08/01/2022 06:11:37| |PERKELE :DDDDDDD| +|08/01/2022 06:11:37| |ON TÄÄLLÄ TOINENKIN| +|08/01/2022 06:11:38| :DDDDDDDDDDDDD +|08/01/2022 06:11:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:38| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:38| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD FUG| +|08/01/2022 06:11:38| |ISHKENI KAIKESHTA VAPAUTAN| +|08/01/2022 06:11:39| |EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:39| DORIFTO +|08/01/2022 06:11:42| EBINNED +|08/01/2022 06:11:42| |FUG :DDDDDD| +|08/01/2022 06:11:43| :DDDDDDDDDDDDDDDDD +|08/01/2022 06:11:43| :DDDDDDDDDDDDD +|08/01/2022 06:11:43| |ebin ebin| +|08/01/2022 06:11:46| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:46| |WE NOT GONNA TALK ABOUT THAT DRIFTO?| +|08/01/2022 06:11:46| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:46| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD BENIS| +|08/01/2022 06:11:47| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:47| D;D;D;D;D;D;D;D;D;;d:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D +|08/01/2022 06:11:47| :DDDDDDDDDDDDD +|08/01/2022 06:11:47| PROOOOOOH +|08/01/2022 06:11:47| :DDDDDDDDDDDDDDDDD +|08/01/2022 06:11:48| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:48| :DDDDDDDDDDDDD +|08/01/2022 06:11:48| |GANDELE BERVIDIN BERGELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:49| |EBIN :DDDD| +|08/01/2022 06:11:49| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:50| |GOT THAT 454 BIG BLOCK| +|08/01/2022 06:11:51| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:52| |O FUG GARL :DDDDDDDDDDD| +|08/01/2022 06:11:52| |bubbering :DDDDD| +|08/01/2022 06:11:52| |stinky helsiniki| +|08/01/2022 06:11:53| |SEX WITH MIKAAAAAAAAAAAA| +|08/01/2022 06:11:53| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:53| |SPURDO SPÄRDE :DDDD| +|08/01/2022 06:11:54| |DUCE DUCE DUCE :DDDDDD | +|08/01/2022 06:11:54| |Beautiful Kantele playing| +|08/01/2022 06:11:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:11:55| |EBINNED AND FUGGED :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:11:55| |FUGGIN CARL GUN :DDDDDDDDD| +|08/01/2022 06:11:56| |GRISDY SUSBENSION| +|08/01/2022 06:11:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:11:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:11:58| |:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +|08/01/2022 06:11:59| |BENIS :DDDDDD| +|08/01/2022 06:11:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:01| |SUOMI :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:02| |DUCE? FUG :DDD| +|08/01/2022 06:12:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:02| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:04| SOOOOOOOOREEEEEEEEEEEEEEEEEEE +|08/01/2022 06:12:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:04| SHIMAYTSA +|08/01/2022 06:12:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:04| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:04| |Such a dumb plan| +|08/01/2022 06:12:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:05| |KOCCHI MITERU ZO| +|08/01/2022 06:12:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE VVVDUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:07| |Åbo represent| +|08/01/2022 06:12:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:07| |UWAAAAAAAAAAAAAAAAAA KOCCHI MITERUZO| +|08/01/2022 06:12:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:08| |DUCE CANNON| +|08/01/2022 06:12:08| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:08| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:09| |NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +|08/01/2022 06:12:09| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:10| |IF ONLY WE BLEW THE BRIDGE BEFOREHAND| +|08/01/2022 06:12:10| DUCE +|08/01/2022 06:12:10| :D +|08/01/2022 06:12:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:12| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:12| |100% dead| +|08/01/2022 06:12:12| |DUCE DUCE| +|08/01/2022 06:12:13| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:13| |EBIN CHRISDIE SUSBENSION :DDDDDDDDDD| +|08/01/2022 06:12:13| |FUCCCCKK TOO MUFCH KINO| +|08/01/2022 06:12:13| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:15| |CARBON COATING| +|08/01/2022 06:12:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:20| |DVCE DVCE DVCE| +|08/01/2022 06:12:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:23| |DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:23| ROCK +|08/01/2022 06:12:23| |600 600 600 600 600 600 600 600 600 600 600 600 | +|08/01/2022 06:12:23| |DUCE DUCE DUCE DUCE| +|08/01/2022 06:12:23| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:24| BENIS +|08/01/2022 06:12:24| |DUCE DUCE DUCE| +|08/01/2022 06:12:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:24| |Oulu on paskakaupunni| +|08/01/2022 06:12:25| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:12:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:27| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:27| |ANTITANK ROCK| +|08/01/2022 06:12:27| DEAD +|08/01/2022 06:12:28| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:28| :P +|08/01/2022 06:12:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:30| 🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕 +|08/01/2022 06:12:31| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:31| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:31| |CHRISBIE SUSBENSION :DDDDDDDDDDDDD| +|08/01/2022 06:12:31| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:32| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:32| EEE +|08/01/2022 06:12:33| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:34| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:34| |FUG :DDDDDDDDDD| +|08/01/2022 06:12:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:35| |:DDDDDDDDDDD :DDDDDDDDDDD :DDDDDDDDDDD| +|08/01/2022 06:12:36| RIP +|08/01/2022 06:12:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:36| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:36| PERKELE +|08/01/2022 06:12:36| F +|08/01/2022 06:12:37| ............................................... +|08/01/2022 06:12:38| RIP +|08/01/2022 06:12:38| :DDDDDDDDDDD +|08/01/2022 06:12:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:38| ... +|08/01/2022 06:12:40| FUGG +|08/01/2022 06:12:40| RIP???? +|08/01/2022 06:12:40| |OH FUG :DDD| +|08/01/2022 06:12:40| Fuggg +|08/01/2022 06:12:41| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:41| |OH FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:41| |FUCKING DED| +|08/01/2022 06:12:41| FUUUUUUUUUUUUUUUUUUUUGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +|08/01/2022 06:12:41| fugg +|08/01/2022 06:12:42| FUGGG +|08/01/2022 06:12:42| F? +|08/01/2022 06:12:43| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:43| |O FUG :DDDDDDDDD| +|08/01/2022 06:12:43| |MORE KINO INCOMING :d| +|08/01/2022 06:12:43| FUUUUUG +|08/01/2022 06:12:44| damn +|08/01/2022 06:12:44| |TRACKS ARE FOR SUCKERS| +|08/01/2022 06:12:44| |CARBON COATING| +|08/01/2022 06:12:44| F +|08/01/2022 06:12:45| |CHRISDIE SUSBENSIONS :DDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:45| |binland bros...| +|08/01/2022 06:12:45| |FUGGGGG :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:45| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:45| FUGGGG +|08/01/2022 06:12:46| FUG +|08/01/2022 06:12:46| |PERKELEEEEEEE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:46| FUGGGGGGGGGG +|08/01/2022 06:12:47| DDDD: +|08/01/2022 06:12:47| |CHRISDIE SUSBENSION| +|08/01/2022 06:12:47| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:48| |PART 2 BITCH| +|08/01/2022 06:12:48| NOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:12:48| |CHRISDIE SUSBENSION :DDDDDDDDD| +|08/01/2022 06:12:49| Surprise! +|08/01/2022 06:12:49| :DDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddddd +|08/01/2022 06:12:49| |CHRISDIE SUSBENSIONS :DDDDDDDDDD| +|08/01/2022 06:12:49| |RAYQUAZA NO| +|08/01/2022 06:12:49| |shiddd :-DDDDDD| +|08/01/2022 06:12:50| |DOKTOR, TURN OFF MY WHEEL INHIBITORS| +|08/01/2022 06:12:50| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:50| |FUGG :DDD| +|08/01/2022 06:12:50| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:51| |CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:51| :DDDDDDDDDD +|08/01/2022 06:12:52| |CHRISDIE SUSBENSION CHRISDIE SUSBENSION :DDDDD| +|08/01/2022 06:12:52| |SPURDO SPÄRDE :DDDD| +|08/01/2022 06:12:52| |FINNISH TRICKERY| +|08/01/2022 06:12:52| |GHRISDIE SUSBENSION :DDDDDDDDDDDDDD| +|08/01/2022 06:12:52| :DDDDDD +|08/01/2022 06:12:52| NANI?!?! +|08/01/2022 06:12:52| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:52| KINO +|08/01/2022 06:12:53| |THIS IS THE POWER OF :D| +|08/01/2022 06:12:54| However... +|08/01/2022 06:12:54| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:55| |GRISDIE SUSBENSION| +|08/01/2022 06:12:55| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:55| :DDDDDDDDDDDDDDDD +|08/01/2022 06:12:56| 🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮 +|08/01/2022 06:12:56| |FUGGGGGGGGGGGG :DDDDD| +|08/01/2022 06:12:56| |TRACKERS FOR FAGS| +|08/01/2022 06:12:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:57| |CHRISDIE SUSBENSION| +|08/01/2022 06:12:57| |lets goooooooo| +|08/01/2022 06:12:57| |WE DON'T NEED TRACKS WHERE WE'RE GOING| +|08/01/2022 06:12:57| NAMENNA! +|08/01/2022 06:12:57| |CHRISTIE OP| +|08/01/2022 06:12:58| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:58| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:58| |grisdie susbension :-DDDDD| +|08/01/2022 06:12:58| |CHRIBSDIE SUBSBENDSION :DDDDD| +|08/01/2022 06:12:58| |CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:59| |CHRISDIE SUSBENSIONS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:13:00| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:00| FUGGGGGGG +|08/01/2022 06:13:00| FUG +|08/01/2022 06:13:00| |GAS GAS GAS| +|08/01/2022 06:13:01| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:03| |CHRISDIE SUSBENSIONS| +|08/01/2022 06:13:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:03| :DDDDDDDDDDDDDDDDDDDDDDDDDDddddddddddddddd +|08/01/2022 06:13:04| |MY LIMIDERS :DDDDDDDDD| +|08/01/2022 06:13:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:05| |CHRISDIE SUSBENSION :D| +|08/01/2022 06:13:05| |CHRISDIE SUSBENSION :dddddd| +|08/01/2022 06:13:05| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:06| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:07| |IGE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:13:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:07| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:09| |SHE SAID THE LINE| +|08/01/2022 06:13:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:09| |MAZUROYO NERA EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +|08/01/2022 06:13:10| |so this is the power of finland| +|08/01/2022 06:13:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:11| |ANCHOVY FLIGHT| +|08/01/2022 06:13:11| |DUCE DUCE DUCE DUCE| +|08/01/2022 06:13:12| NANIIIIIIIIII???!!!! +|08/01/2022 06:13:12| |CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:13:12| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:13| |FLYInG PANZA| +|08/01/2022 06:13:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:14| |HIGH IQ| +|08/01/2022 06:13:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:16| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:16| DUCEPULT +|08/01/2022 06:13:16| FUOCO +|08/01/2022 06:13:16| ??????????????????????????????????????????? +|08/01/2022 06:13:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:17| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:17| |IMA DA| +|08/01/2022 06:13:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:18| |DUCE DUCE DUCE| +|08/01/2022 06:13:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:18| dumb +|08/01/2022 06:13:18| |PIZZA DELIVERY| +|08/01/2022 06:13:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:22| |CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 | +|08/01/2022 06:13:22| L +|08/01/2022 06:13:22| 2smart4u +|08/01/2022 06:13:22| Are +|08/01/2022 06:13:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:23| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:24| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:24| NORIKO<3 +|08/01/2022 06:13:24| ARE? +|08/01/2022 06:13:25| |FUCKING HOW??????????????????| +|08/01/2022 06:13:25| |FLYING ANCHOVIES| +|08/01/2022 06:13:26| F +|08/01/2022 06:13:26| DVCE +|08/01/2022 06:13:26| |christie suspensionnnnnnnnnn| +|08/01/2022 06:13:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:27| DUCE +|08/01/2022 06:13:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:13:28| |in all serious what would a maching gun do against that?| +|08/01/2022 06:13:28| :DDDDDDDDDDDDDD +|08/01/2022 06:13:30| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:30| あれ? +|08/01/2022 06:13:30| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:31| |AN AMERICAN TANK'S ONE WEAKNESS| +|08/01/2022 06:13:31| |>it didn't work| +|08/01/2022 06:13:31| |Smart they ain’t. But that’s why I love them| +|08/01/2022 06:13:32| :D +|08/01/2022 06:13:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:34| :DDDD +|08/01/2022 06:13:35| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:35| |DRIVING IN CIRCLES| +|08/01/2022 06:13:37| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:38| DFCE +|08/01/2022 06:13:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:41| |Smug finish waifu| +|08/01/2022 06:13:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:42| |PASTA TIME| +|08/01/2022 06:13:43| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:43| PASTA +|08/01/2022 06:13:43| |JUST TULTA ALREADY| +|08/01/2022 06:13:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:44| PASTA +|08/01/2022 06:13:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:45| ANZUUUUUUUUUU +|08/01/2022 06:13:47| PASTA? +|08/01/2022 06:13:47| |TL Note: "Anzu" means "SEX"| +|08/01/2022 06:13:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:47| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:48| PASTA +|08/01/2022 06:13:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:48| PASTA +|08/01/2022 06:13:48| |PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA | +|08/01/2022 06:13:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:48| PASTA! +|08/01/2022 06:13:48| PASTA? +|08/01/2022 06:13:49| MAJISUKA +|08/01/2022 06:13:49| PASTA?! +|08/01/2022 06:13:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:49| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:51| PASTA +|08/01/2022 06:13:51| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:13:51| |PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA | +|08/01/2022 06:13:51| PASTA +|08/01/2022 06:13:52| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:13:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:53| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:54| |THANKS TL| +|08/01/2022 06:13:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:57| YOSH +|08/01/2022 06:13:57| KAICHOOOOOOO +|08/01/2022 06:13:57| WEW +|08/01/2022 06:13:58| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:58| Anzu +|08/01/2022 06:13:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:59| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:01| PASTAAA +|08/01/2022 06:14:01| |Flying Hetzer| +|08/01/2022 06:14:01| HETZER +|08/01/2022 06:14:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:14:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:14:03| docking +|08/01/2022 06:14:03| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:14:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:05| |ANZU ANZU ANZU ANZU| +|08/01/2022 06:14:06| |LET'S GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 06:14:06| AIRSHOT +|08/01/2022 06:14:07| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:14:08| |PERKELE :DDD| +|08/01/2022 06:14:09| |R E K T| +|08/01/2022 06:14:09| YATA +|08/01/2022 06:14:10| YATTA +|08/01/2022 06:14:10| FLYING +|08/01/2022 06:14:11| |YADDA :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:12| Tulta! +|08/01/2022 06:14:12| |Right in the hole| +|08/01/2022 06:14:12| |ANZU STRONK| +|08/01/2022 06:14:12| |OH NO, NOT THE GHOST CREW| +|08/01/2022 06:14:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:13| SUCCESS +|08/01/2022 06:14:13| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:14| |nice air| +|08/01/2022 06:14:17| |KARL NO| +|08/01/2022 06:14:17| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:18| :DDDDDDDDDDDDDD +|08/01/2022 06:14:19| |anzu the sharpshooter| +|08/01/2022 06:14:20| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:20| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:21| CUte +|08/01/2022 06:14:21| TUTLA +|08/01/2022 06:14:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:22| |Couldn't they have gotten an engine shot right there?| +|08/01/2022 06:14:23| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:23| |FUGGGGGGG :DDDDDDDDDDDDD| +|08/01/2022 06:14:24| |FUGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:24| :DDDDDDDDD +|08/01/2022 06:14:24| KINO +|08/01/2022 06:14:25| PERKELE +|08/01/2022 06:14:25| |EBIN STREAM :DDDDD| +|08/01/2022 06:14:26| PERKELE +|08/01/2022 06:14:26| |did the finns really have panzers?| +|08/01/2022 06:14:26| |Khrome is a faget :DD| +|08/01/2022 06:14:27| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:27| |WHY ARE RUNNING?| +|08/01/2022 06:14:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:28| |SWIGGITY SWAGGITY COMING FOR DAT BOOTY :DDDDD| +|08/01/2022 06:14:29| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:29| TULTA!!!!!!!!!!!!!!!!!! +|08/01/2022 06:14:29| |Why didn't they just shoot them from behind| +|08/01/2022 06:14:30| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:30| TUTA +|08/01/2022 06:14:30| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:30| |HETZER GONNA HETZ| +|08/01/2022 06:14:30| TUTE +|08/01/2022 06:14:31| TULTA +|08/01/2022 06:14:32| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:32| SAAATAAAAANAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:14:32| |>needing wheels| +|08/01/2022 06:14:32| TULTA +|08/01/2022 06:14:33| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:33| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:33| |MONEY SHOT BITCH| +|08/01/2022 06:14:33| |TULTA :DDDDDDDDDD| +|08/01/2022 06:14:33| |DULDA :DDDDDDDDDDDDDDDDDDDDDDddddddddddddddddd| +|08/01/2022 06:14:33| |DULDA :DDDD| +|08/01/2022 06:14:33| FUG +|08/01/2022 06:14:33| Tulta +|08/01/2022 06:14:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:34| TULTA +|08/01/2022 06:14:34| TULTA +|08/01/2022 06:14:34| TULTA! +|08/01/2022 06:14:35| |why does she go in front of them :DDDDDD| +|08/01/2022 06:14:36| |PERKELE :DDDDDDDDDD| +|08/01/2022 06:14:36| TULTA +|08/01/2022 06:14:36| |TULTA :DDDDDDDDDD| +|08/01/2022 06:14:36| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:36| TUlta +|08/01/2022 06:14:37| |why did they pull in front of their barrel?| +|08/01/2022 06:14:37| rip +|08/01/2022 06:14:37| |TULTA :DDDDDD| +|08/01/2022 06:14:37| |TULDA :DDDDDDDDDDD| +|08/01/2022 06:14:37| TUTA +|08/01/2022 06:14:38| |DULKDA :DD| +|08/01/2022 06:14:39| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:39| |DULDA :DDDDDDDDDDDDDDDD| +|08/01/2022 06:14:40| TULTA +|08/01/2022 06:14:40| |DULDA :DDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:40| |oh fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:40| :D +|08/01/2022 06:14:40| TULTA +|08/01/2022 06:14:41| |WIDNESS FINNISH ENGINEERINGN| +|08/01/2022 06:14:41| |DULDA :DDDDD| +|08/01/2022 06:14:41| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:41| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:41| |TUL TA| +|08/01/2022 06:14:42| |HOW THE FUCK| +|08/01/2022 06:14:42| PERKELE +|08/01/2022 06:14:43| |TULTA :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:43| KINO +|08/01/2022 06:14:43| |mic drop| +|08/01/2022 06:14:43| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:45| Bwring +|08/01/2022 06:14:45| |>bicycling a tank| +|08/01/2022 06:14:46| TULDA:DDDDDD +|08/01/2022 06:14:46| Kino~ +|08/01/2022 06:14:47| |EBIN :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:47| |They could have knocked it out| +|08/01/2022 06:14:48| |stream redeemed| +|08/01/2022 06:14:48| :DDDDDDDDDDDDDD +|08/01/2022 06:14:49| |so they could WITNESS| +|08/01/2022 06:14:49| |K I N O| +|08/01/2022 06:14:50| |Most kino moment| +|08/01/2022 06:14:50| |WITH FINNS YOU WIN| +|08/01/2022 06:14:50| |BASED FINNS| +|08/01/2022 06:14:53| |MOST KINO MOMENT| +|08/01/2022 06:14:53| |MIKA OUT| +|08/01/2022 06:14:53| |EBIN :DDDDDDDDDDDD| +|08/01/2022 06:14:55| JS-2 +|08/01/2022 06:14:57| |EBIN :DDDDDDD| +|08/01/2022 06:14:58| |That was so stupif| +|08/01/2022 06:14:58| |fuck yeah that's such a great scene| +|08/01/2022 06:14:58| |ILLEGAL SONAR DEVICE| +|08/01/2022 06:14:58| ebin... +|08/01/2022 06:14:59| |best scene in television and film history| +|08/01/2022 06:14:59| |fucking kino| +|08/01/2022 06:15:01| :DD +|08/01/2022 06:15:04| |Kino at its finest| +|08/01/2022 06:15:04| |Around finns the ice is thin| +|08/01/2022 06:15:05| |you were stupid| +|08/01/2022 06:15:05| :DDDDDDDDDDDDDDDD +|08/01/2022 06:15:07| |I GOTTA PISSSSSSSSSSSS| +|08/01/2022 06:15:11| DVCE +|08/01/2022 06:15:11| |*glab glab glab* :DDDDDDDDDDDDDD| +|08/01/2022 06:15:12| DUCE +|08/01/2022 06:15:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:15:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:15:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:18| |duce duce duce duce| +|08/01/2022 06:15:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:15:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:22| TOTSUGEKI +|08/01/2022 06:15:24| ;_; +|08/01/2022 06:15:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:27| PTSD +|08/01/2022 06:15:28| |here the saying katyusha| +|08/01/2022 06:15:28| |nishi nishi nishi nishi| +|08/01/2022 06:15:28| |SEX WITH KATYUSHA| +|08/01/2022 06:15:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:29| ;_;7 +|08/01/2022 06:15:29| |cry more midget| +|08/01/2022 06:15:31| ;_; +|08/01/2022 06:15:31| SLAGGGGGGG +|08/01/2022 06:15:31| |SHAMFUR DISDRAY| +|08/01/2022 06:15:33| |The last commie| +|08/01/2022 06:15:33| ;_; +|08/01/2022 06:15:37| *sip* +|08/01/2022 06:15:39| |ruskies no more| +|08/01/2022 06:15:43| >bongs +|08/01/2022 06:15:44| |<3 KAY| +|08/01/2022 06:15:47| |FIND YOUR POWN SENSHADO| +|08/01/2022 06:15:48| |just be urself| +|08/01/2022 06:15:48| |just got here, have the muricans died yet?| +|08/01/2022 06:15:49| |Miho style| +|08/01/2022 06:15:49| |Kay's just here for the ride| +|08/01/2022 06:15:50| |my maho wife| +|08/01/2022 06:15:55| |Wani owned| +|08/01/2022 06:15:56| |Communisnm on deaths door| +|08/01/2022 06:15:56| ERIKA +|08/01/2022 06:15:57| |the mutts lost| +|08/01/2022 06:15:58| |Erika BTFO| +|08/01/2022 06:16:00| ERIKA +|08/01/2022 06:16:00| |SHUT DOWN| +|08/01/2022 06:16:01| |SHUT UP ERIKA| +|08/01/2022 06:16:01| |shut ut wani| +|08/01/2022 06:16:01| |ERIKA SHUT THE FUCK UP| +|08/01/2022 06:16:02| |WANI BTFO| +|08/01/2022 06:16:03| |wani owned epic style| +|08/01/2022 06:16:04| |That swaying hair is really cute| +|08/01/2022 06:16:05| WANI +|08/01/2022 06:16:05| |UND DAS HEISST| +|08/01/2022 06:16:10| |WANI STATUS: DESTROYED| +|08/01/2022 06:16:10| Erika... +|08/01/2022 06:16:10| |erika is always getting put in her place| +|08/01/2022 06:16:12| |ERIKA is right| +|08/01/2022 06:16:13| |PANZER VOR| +|08/01/2022 06:16:14| EEEEEEERIKA +|08/01/2022 06:16:15| |PANZER VORE| +|08/01/2022 06:16:16| |PANZER VOR| +|08/01/2022 06:16:16| |WANI CANT STOP LOSING| +|08/01/2022 06:16:17| |PANZA VOR| +|08/01/2022 06:16:17| |fucking wani| +|08/01/2022 06:16:19| |BANSER VOR :DDDD| +|08/01/2022 06:16:20| |PANTSU 4| +|08/01/2022 06:16:21| |PANZER 4| +|08/01/2022 06:16:23| |PANZER VOR| +|08/01/2022 06:16:23| |Pantsu for all| +|08/01/2022 06:16:24| |Best battleground of all time| +|08/01/2022 06:16:27| |ENTER KINO| +|08/01/2022 06:16:29| |wanibros post your face when we beat the slag| +|08/01/2022 06:16:29| |P{ANTSU VORE| +|08/01/2022 06:16:29| >buffering +|08/01/2022 06:16:30| |TOSUGEKI INTO WANI'S WANI| +|08/01/2022 06:16:31| |FUCKING ISEKAI LOOKING ASS PLACE| +|08/01/2022 06:16:33| |tl what does "panzer vor" mean again?| +|08/01/2022 06:16:36| |Why didn't they go into the park in the first place| +|08/01/2022 06:16:37| |can't wait for the tsar tank| +|08/01/2022 06:16:37| |I HATE THE ANTICHRIST| +|08/01/2022 06:16:38| totsugeki? +|08/01/2022 06:16:39| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 06:16:40| |kino battleground| +|08/01/2022 06:16:42| TOTSUGEKI +|08/01/2022 06:16:44| |panzer vor means sex with Anzu| +|08/01/2022 06:16:46| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 06:16:48| |thanks tl| +|08/01/2022 06:16:50| |DATABASE DATABASE| +|08/01/2022 06:16:50| ?????????????????????????????????????? +|08/01/2022 06:16:50| |assam the datanigger| +|08/01/2022 06:16:51| |TL Note: "Panzer vor" means "Panzer vor"| +|08/01/2022 06:16:52| ??????????????????????? +|08/01/2022 06:16:54| ??????????????????????????????????????????? +|08/01/2022 06:16:55| ?????????????????????????????????????? +|08/01/2022 06:16:56| ???????????????????????????????????????? +|08/01/2022 06:16:56| ?????????????????????????????????? +|08/01/2022 06:16:56| |che pizdish| +|08/01/2022 06:16:56| |was that magic| +|08/01/2022 06:16:56| ????????????? +|08/01/2022 06:16:57| ??????????????????????? +|08/01/2022 06:16:57| ??????????????????? +|08/01/2022 06:16:58| ?????????!? +|08/01/2022 06:16:58| |ty tl| +|08/01/2022 06:16:59| |Panzer vor means Erika is best girl| +|08/01/2022 06:17:00| ???????????????????????????????????????????????????? +|08/01/2022 06:17:00| |WTF IS SHE SAYING NOW???| +|08/01/2022 06:17:01| |HIGH IQ ASSAM| +|08/01/2022 06:17:02| |sex with wani| +|08/01/2022 06:17:02| ????????????????? +|08/01/2022 06:17:03| |JUST LIVING IN THE DATAASE| +|08/01/2022 06:17:04| |that does make sense| +|08/01/2022 06:17:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:04| |have you heard this saying anon?| +|08/01/2022 06:17:04| |WHAT THE FUCK ARE YOU TALKING ABOUT DARJELING| +|08/01/2022 06:17:09| totsugeki? +|08/01/2022 06:17:10| Nope +|08/01/2022 06:17:12| 6head +|08/01/2022 06:17:14| TOTSUGEK +|08/01/2022 06:17:14| baka +|08/01/2022 06:17:16| Totsugeki +|08/01/2022 06:17:17| |no totsugeki???| +|08/01/2022 06:17:18| |NO WAY| +|08/01/2022 06:17:18| |Darjeeling best girl| +|08/01/2022 06:17:20| |Don't listen to Darjeeling, she's trying to make you gay| +|08/01/2022 06:17:20| |Damn rosehip is so fucking cute bros...| +|08/01/2022 06:17:21| |are naomi and alisa still up?| +|08/01/2022 06:17:24| |TL NOTE; Totsugeki means Poopenfahren | +|08/01/2022 06:17:27| |I HATE THE ANTICHRIST| +|08/01/2022 06:17:27| |uwaaah bermuda| +|08/01/2022 06:17:27| |Hide in the long grass and bayonet people| +|08/01/2022 06:17:27| |pekoe, have you heard this saying, "rtgijowtij45tbn34h5twbnjht5 w4jtbw4hj5"| +|08/01/2022 06:17:32| |Naomi and Alisa are still up| +|08/01/2022 06:17:35| |nothin' fun about UN..........| +|08/01/2022 06:17:38| thanks +|08/01/2022 06:17:39| |totsugek :DDDDDDDDDDDDDDD| +|08/01/2022 06:17:42| |I'm still up in a couple ways| +|08/01/2022 06:17:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:45| DVCE +|08/01/2022 06:17:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:47| DUCE +|08/01/2022 06:17:48| O____________________O +|08/01/2022 06:17:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:17:48| DUCE +|08/01/2022 06:17:49| |Spank Naomi and Alisa Y/Y| +|08/01/2022 06:17:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:49| >CG +|08/01/2022 06:17:50| MAGIC +|08/01/2022 06:17:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:51| |TL Note: Totsugeki means useless| +|08/01/2022 06:17:52| |I am Duce's girlfriend. AMA.| +|08/01/2022 06:17:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:53| DUCE +|08/01/2022 06:17:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:17:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:55| |DUCE butt| +|08/01/2022 06:17:55| |ANZU ANZU ANZU ANZU| +|08/01/2022 06:17:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:57| |DUCEEE AASS| +|08/01/2022 06:17:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:17:58| |DUCE SPY| +|08/01/2022 06:17:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:59| |DUCE DUCE| +|08/01/2022 06:17:59| |DUCE BUTT| +|08/01/2022 06:17:59| |DUCE DUCE DUCE| +|08/01/2022 06:17:59| |DUCE BUTT| +|08/01/2022 06:18:00| |BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE | +|08/01/2022 06:18:00| |CG DUCE| +|08/01/2022 06:18:00| IMAGINE +|08/01/2022 06:18:00| |Sex with DVCE's 3d model| +|08/01/2022 06:18:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:02| |THE UN WHEN YOU DON'T TAKE ANY REFUGEES| +|08/01/2022 06:18:02| |CHOBI BUTT| +|08/01/2022 06:18:02| |duce butt| +|08/01/2022 06:18:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:04| |DUCE DUCE DUCE| +|08/01/2022 06:18:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:18:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:07| |DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT | +|08/01/2022 06:18:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:17| |gotta go fast| +|08/01/2022 06:18:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:18| |Maybe the M3 Lee will finally do something| +|08/01/2022 06:18:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:20| |Duce with the big brain play, Intelligence wins wars| +|08/01/2022 06:18:20| |IS IT PASTA TIME YET??| +|08/01/2022 06:18:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:24| |italian flag achieved| +|08/01/2022 06:18:27| |DUCE DUCE DVCE DVCEvDUCE DUCE DVCE DVCEvvDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEvDUCE DUCE DVCE DVCE| +|08/01/2022 06:18:35| |DUCE | +|08/01/2022 06:18:38| |it's just smoke| +|08/01/2022 06:18:39| ute +|08/01/2022 06:18:40| ute +|08/01/2022 06:18:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:44| |Why fire when you can't see the target| +|08/01/2022 06:18:45| |>is this bait?| +|08/01/2022 06:18:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:51| |JOHNNY COMES MARCHING HOME INBOUND| +|08/01/2022 06:18:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:52| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 06:18:52| |I HATE THE ANTICHRIST| +|08/01/2022 06:18:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:18:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:56| |i can't see shit captain| +|08/01/2022 06:18:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:58| |This is actually closer to real tank battles| +|08/01/2022 06:19:04| |WHEN JOHNNY COMES MARCHING HOME | +|08/01/2022 06:19:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:19:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:07| |johnny comes marching home is one of the most kino scenes| +|08/01/2022 06:19:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:19:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:11| RUSED +|08/01/2022 06:19:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:18| HEEEEHOOOO? +|08/01/2022 06:19:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:20| heihou +|08/01/2022 06:19:22| |ASTUTE OBSERVATION DUCE| +|08/01/2022 06:19:22| 煙幕だ +|08/01/2022 06:19:22| |HEY HOE| +|08/01/2022 06:19:23| |HEY HO| +|08/01/2022 06:19:24| Stratagen +|08/01/2022 06:19:25| Heehoo?? +|08/01/2022 06:19:31| TOTSUGEKI! +|08/01/2022 06:19:33| TINY +|08/01/2022 06:19:33| TOTSUGEKI +|08/01/2022 06:19:34| TOTSUGEKI +|08/01/2022 06:19:36| |they foreshadowed johnny comes marching home when yukari sung it| +|08/01/2022 06:19:36| TOTSUGEKI! +|08/01/2022 06:19:37| totsugeki +|08/01/2022 06:19:37| |STFU FUKUDA| +|08/01/2022 06:19:38| Totsugeki? +|08/01/2022 06:19:39| |SAY IT WITH ME LADS, TO TSU GE KI| +|08/01/2022 06:19:40| SHAME! +|08/01/2022 06:19:40| IMAGINE +|08/01/2022 06:19:40| |stealth tactics time| +|08/01/2022 06:19:40| |TENNO HEIKA BANZAI \o/| +|08/01/2022 06:19:41| BRAIDS +|08/01/2022 06:19:43| |ANTI SHAMEFUR| +|08/01/2022 06:19:43| SHAMEFUR? +|08/01/2022 06:19:43| |UOOOOOOOOOOO FUKUDA UOOOOOOOOOHHHHHHHHHH| +|08/01/2022 06:19:45| SHAMFUR +|08/01/2022 06:19:45| TOTSUGEKI? +|08/01/2022 06:19:45| |NO TOTSUGEKI?| +|08/01/2022 06:19:46| |WHAT'S THAT ?| +|08/01/2022 06:19:47| Totsugeki +|08/01/2022 06:19:48| ducks +|08/01/2022 06:19:48| 西側の西さん!? +|08/01/2022 06:19:50| |>not doing totsugeki| +|08/01/2022 06:19:52| |SHUT THE FUCK UP FUKUDA| +|08/01/2022 06:19:52| JOHNNY +|08/01/2022 06:19:52| CHAFEEEEEEE +|08/01/2022 06:19:53| BOOM +|08/01/2022 06:19:53| |TOTSUGEKI SHAMEFUL???!?!?!?!| +|08/01/2022 06:19:54| Totsugeki +|08/01/2022 06:19:54| ENTER +|08/01/2022 06:19:54| IKUZOOOOO +|08/01/2022 06:19:54| |K I N O| +|08/01/2022 06:19:55| ADHDHIP +|08/01/2022 06:19:55| |\o/ BANZAI| +|08/01/2022 06:19:56| |Rosehip you tard| +|08/01/2022 06:19:56| TOTSUGEKIIIIIII +|08/01/2022 06:19:57| |>DON'T WORRY GUYS, I HAVE A PLAN| +|08/01/2022 06:19:57| |MY WIFE, ROSEHIP| +|08/01/2022 06:19:57| |"What if we charged later?"| +|08/01/2022 06:19:58| |ENTER T-28| +|08/01/2022 06:19:58| ENTER +|08/01/2022 06:19:59| Enter +|08/01/2022 06:19:59| ENTER +|08/01/2022 06:19:59| ENTER +|08/01/2022 06:20:00| AAAAAAAAAAA +|08/01/2022 06:20:00| |rosehip plz| +|08/01/2022 06:20:00| ENTER +|08/01/2022 06:20:01| |YOU'RE A BIG GUY| +|08/01/2022 06:20:01| ROSEHIPPUU +|08/01/2022 06:20:02| |BIG GUY COMIN THROUGH| +|08/01/2022 06:20:03| |ROSEHIP NO| +|08/01/2022 06:20:03| HIPPU +|08/01/2022 06:20:03| |>time of need >americans nowhere to be seen| +|08/01/2022 06:20:03| ROSEHIP +|08/01/2022 06:20:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:04| ENTER +|08/01/2022 06:20:04| Kino +|08/01/2022 06:20:04| |That's no chaffee| +|08/01/2022 06:20:05| MOGGED +|08/01/2022 06:20:06| ENTER +|08/01/2022 06:20:06| ENTER +|08/01/2022 06:20:07| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:07| KINO +|08/01/2022 06:20:07| |I love rosehip just challenging the Chaffee as if it'd be on point| +|08/01/2022 06:20:07| |TANK GRINDAN| +|08/01/2022 06:20:07| |Enter, JOHNNY| +|08/01/2022 06:20:07| T28 +|08/01/2022 06:20:08| ENTER +|08/01/2022 06:20:10| |O S T| +|08/01/2022 06:20:11| |RUN AWAY| +|08/01/2022 06:20:11| |Is that the 90mm or the 105?| +|08/01/2022 06:20:11| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:11| |How the heck Rosehip drift that fast?| +|08/01/2022 06:20:11| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:12| |HURA HURA| +|08/01/2022 06:20:12| |ENTER ENTER MISSION| +|08/01/2022 06:20:12| |Rosehip, have you heard this saying: come back| +|08/01/2022 06:20:12| |Hurrah Hurrah| +|08/01/2022 06:20:13| |WHEN JOHNNY COMES MARCHING HOME| +|08/01/2022 06:20:13| |Big tonk| +|08/01/2022 06:20:14| ENTER +|08/01/2022 06:20:15| MOGGED +|08/01/2022 06:20:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:17| o7 +|08/01/2022 06:20:17| |JOHNNY I HARDLY KNEW YE| +|08/01/2022 06:20:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:20:17| ENTER +|08/01/2022 06:20:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:17| |WHEN JOHNNY BOY COMES MARCHING HOME| +|08/01/2022 06:20:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:18| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:19| t95 +|08/01/2022 06:20:20| Kino +|08/01/2022 06:20:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:20| |MARCHING IN| +|08/01/2022 06:20:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:22| |VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA | +|08/01/2022 06:20:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:23| OST +|08/01/2022 06:20:23| HURRAH +|08/01/2022 06:20:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:23| |AND WE'LL ALL FEEL GAY| +|08/01/2022 06:20:24| |IT'S THE FAT FUCK| +|08/01/2022 06:20:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:25| |WHEN THE SAINTS COME MARCHING HOME| +|08/01/2022 06:20:26| BEEEEEEEEEEEEEEEEG +|08/01/2022 06:20:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:28| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:29| |USA USA USA USA USA| +|08/01/2022 06:20:30| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:30| |Here comes best tank| +|08/01/2022 06:20:32| |big boi| +|08/01/2022 06:20:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:20:33| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:33| |Spoiler: Johnny never did come marching home| +|08/01/2022 06:20:33| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:34| |AIM FOR THE TRACKS| +|08/01/2022 06:20:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:40| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:20:40| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:41| |WE"LL GIVE THE HERO THREE TIMES THREE| +|08/01/2022 06:20:42| |AMERILARDS CANT EVEN WALK 5M| +|08/01/2022 06:20:44| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:45| JABBERWOCK +|08/01/2022 06:20:46| What? +|08/01/2022 06:20:47| |Johnny got his gun| +|08/01/2022 06:20:48| ?????????????????????????? +|08/01/2022 06:20:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:49| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:20:50| |I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +|08/01/2022 06:20:51| ???????????????????????????????????????????? +|08/01/2022 06:20:52| |JUST LET IT RUN UNTIL ENGINE DOWN| +|08/01/2022 06:20:52| |Bandersnatch ??????????????| +|08/01/2022 06:20:53| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:55| |Kek Rosehip| +|08/01/2022 06:20:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:56| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:56| |>it looks like this thing that isn't real| +|08/01/2022 06:20:57| |ITS HUGE| +|08/01/2022 06:20:57| KINO +|08/01/2022 06:20:59| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:59| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:21:00| DEKAI +|08/01/2022 06:21:01| |I HATE THE ANTICHRIST| +|08/01/2022 06:21:03| |CHRIST IS KING| +|08/01/2022 06:21:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:21:05| ((((((((UN)))))))) +|08/01/2022 06:21:06| |Darjeeling's snatch.........| +|08/01/2022 06:21:07| |I HATE THE ANTICHRIST| +|08/01/2022 06:21:08| |I'm not that big come on| +|08/01/2022 06:21:09| |I'd band er snatch| +|08/01/2022 06:21:14| |God, I love Rosehippu...| +|08/01/2022 06:21:14| |HE IS THAT BIG| +|08/01/2022 06:21:16| MEGUMI +|08/01/2022 06:21:18| >amerilates +|08/01/2022 06:21:19| |I love the antichrist| +|08/01/2022 06:21:21| |FOR YOU| +|08/01/2022 06:21:24| |KORE MO SAKUSEN DA| +|08/01/2022 06:21:29| |subtext subtext subtext subtext subtext| +|08/01/2022 06:21:32| |TINY KATYUSHA HANDS UOOOOOOOH| +|08/01/2022 06:21:32| ERIKA +|08/01/2022 06:21:34| |TOP TEXT| +|08/01/2022 06:21:35| HAPPY +|08/01/2022 06:21:36| |smiling erika| +|08/01/2022 06:21:36| HAI +|08/01/2022 06:21:38| |GO ERIKA GO| +|08/01/2022 06:21:39| |HAPPI ERIKA ;DDDDDD| +|08/01/2022 06:21:40| ERIKA!!!!! +|08/01/2022 06:21:41| |YURI TEXT| +|08/01/2022 06:21:44| |I LOVE ERIKA| +|08/01/2022 06:21:44| |ERIKA DO SOMETHING| +|08/01/2022 06:21:46| |how come Americans always show up late?| +|08/01/2022 06:21:48| |HAPPY ERIKA| +|08/01/2022 06:21:49| |Erika mega simp| +|08/01/2022 06:21:51| WANI +|08/01/2022 06:21:52| |my maho wife| +|08/01/2022 06:21:52| |fuggg u chafi :-DD| +|08/01/2022 06:21:55| |mutrs are lazy and dumb| +|08/01/2022 06:21:58| |they're hiding in the ducks...| +|08/01/2022 06:22:00| |OH BOY FUN LAND HERE WE GO| +|08/01/2022 06:22:02| |Impregnate Erika| +|08/01/2022 06:22:02| OST +|08/01/2022 06:22:07| |BEST BGM| +|08/01/2022 06:22:07| |they're eating chicken and drinking cola| +|08/01/2022 06:22:08| |Pershing getting BTFO'ed| +|08/01/2022 06:22:08| |THEY COULD BE COMING FRAM ALL SIDES| +|08/01/2022 06:22:08| |HAHAHA TIME FOR KINO| +|08/01/2022 06:22:09| |Tactical ducks!| +|08/01/2022 06:22:09| |Now that's how you Charge. | +|08/01/2022 06:22:10| BANZAI +|08/01/2022 06:22:11| |Erika loves it when Maho acknowledges her | +|08/01/2022 06:22:14| |Drum ost| +|08/01/2022 06:22:16| |what sort of totsugeki is this| +|08/01/2022 06:22:17| |VERY SNEAKY| +|08/01/2022 06:22:18| |THEYRE SITTING DUCKS| +|08/01/2022 06:22:19| |even more kino coming up| +|08/01/2022 06:22:20| Finally +|08/01/2022 06:22:21| |SURPRISE MOTHAFUCKA| +|08/01/2022 06:22:22| |Time to die American dog| +|08/01/2022 06:22:22| |THEY'RE EVERYWHERE| +|08/01/2022 06:22:23| |WHO HERE /OLD JAPANESE KINO/| +|08/01/2022 06:22:24| |when the ducks start speaking japanese| +|08/01/2022 06:22:24| |Who doesn't love Disney Land where the ducks got guns?| +|08/01/2022 06:22:25| |DONG DONG - DONG DONG - OOOOOOOOHHHHHHHHHHH| +|08/01/2022 06:22:26| EHHHHHHHH???? +|08/01/2022 06:22:26| |how is this totsugeki| +|08/01/2022 06:22:27| |GUERILLA WARFARE| +|08/01/2022 06:22:28| |the water is speaking japanese...| +|08/01/2022 06:22:29| |mesugaki tanks...| +|08/01/2022 06:22:31| TOTSUGEKI +|08/01/2022 06:22:35| |TENNO HEIKA BANZAIIIII!!!!!!!!!!!!| +|08/01/2022 06:22:36| TOTSUGEKI +|08/01/2022 06:22:36| ONORE +|08/01/2022 06:22:37| ONOREEE +|08/01/2022 06:22:38| ONOREEEEEEE +|08/01/2022 06:22:39| rip +|08/01/2022 06:22:39| |>They survive| +|08/01/2022 06:22:41| |WELCOME OT THE RICEFIELDS MOTHERFUCKER| +|08/01/2022 06:22:48| |kuso... kono mesugakira...| +|08/01/2022 06:22:48| |TOTSUGEKIS IN THE TREES TOTSUGEKIS IN THE TREES| +|08/01/2022 06:22:52| |>the water is speaking japanese| +|08/01/2022 06:22:54| |"THERE WASNT SUPPOSED TO BE ANY RESISTANCE"| +|08/01/2022 06:22:54| |I THINK CHAFFEE SUCKS| +|08/01/2022 06:22:56| |GO HOME GI| +|08/01/2022 06:23:02| |But all of them speak japanese | +|08/01/2022 06:23:06| |Mada mada| +|08/01/2022 06:23:08| |sitting ducks| +|08/01/2022 06:23:08| |LZ IS NOT CLEAR| +|08/01/2022 06:23:09| wakarimasu +|08/01/2022 06:23:11| |STEALTH TOTSUGEKI| +|08/01/2022 06:23:13| |EVEN THE JAPANESE ARE SPEAKING JAPANESE| +|08/01/2022 06:23:15| DUCKS +|08/01/2022 06:23:22| |where did they get the balloons?| +|08/01/2022 06:23:22| |Extreme retardation at work| +|08/01/2022 06:23:25| ENTER +|08/01/2022 06:23:29| ENTER +|08/01/2022 06:23:29| |FUCKING BAKAS| +|08/01/2022 06:23:29| |fucking retards| +|08/01/2022 06:23:32| ENTER +|08/01/2022 06:23:33| UTE +|08/01/2022 06:23:34| |>no compass| +|08/01/2022 06:23:37| |Novelty tank turret sized balloons | +|08/01/2022 06:23:38| |WHICH WAY IS THE SUN?| +|08/01/2022 06:23:44| |>buffering every fucking second| +|08/01/2022 06:23:46| |stealth never works| +|08/01/2022 06:23:48| CUTE +|08/01/2022 06:23:55| |not that much buffering here| +|08/01/2022 06:23:57| |I love that they throw shade at the IJA. | +|08/01/2022 06:24:00| |restart your browser or something| +|08/01/2022 06:24:00| |when kino?| +|08/01/2022 06:24:00| |Sun Tzu said: Cunny makes you stronger.| +|08/01/2022 06:24:01| |not quite cologne| +|08/01/2022 06:24:04| |WHY always BUFFERING| +|08/01/2022 06:24:05| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:06| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:08| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:09| 3D +|08/01/2022 06:24:09| |not buffering here| +|08/01/2022 06:24:10| |GABADDE :DDDDD| +|08/01/2022 06:24:10| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:10| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:10| :DDDDDDDDDDDDDDDD +|08/01/2022 06:24:11| :DDDDDDDDDDDD +|08/01/2022 06:24:12| :-DDDDD +|08/01/2022 06:24:13| benis +|08/01/2022 06:24:14| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:14| |Just get internet lmao| +|08/01/2022 06:24:14| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:15| |HER IMOUTO| +|08/01/2022 06:24:16| TRÖÖÖH +|08/01/2022 06:24:18| :DDDDDDDDDDDDDDD +|08/01/2022 06:24:18| |why is mikko driving the recovery boat| +|08/01/2022 06:24:18| TRAPPED +|08/01/2022 06:24:23| |POINY YO| +|08/01/2022 06:24:25| |Finn status = binned| +|08/01/2022 06:24:25| |ITS A TRAP| +|08/01/2022 06:24:26| |dame da| +|08/01/2022 06:24:27| POCKETHUB +|08/01/2022 06:24:30| |quick everyone, into the death trap| +|08/01/2022 06:24:30| YABEEEE +|08/01/2022 06:24:35| |ai yo| +|08/01/2022 06:24:36| |how do i get 3d duce model?| +|08/01/2022 06:24:36| |KINO INC.| +|08/01/2022 06:24:41| |HERE COMES THE WHEEL| +|08/01/2022 06:24:42| butterfly +|08/01/2022 06:24:43| |TIME FOR FERRIS WHEEL KINO| +|08/01/2022 06:24:45| AAAAAAAAAAAAAAAAAAA +|08/01/2022 06:24:49| |CUTE DUCK TANKS| +|08/01/2022 06:24:51| |follow a tutorial and make one yourself| +|08/01/2022 06:24:52| |saki saves the day| +|08/01/2022 06:24:52| |ON MY POSITION| +|08/01/2022 06:24:53| |did someone call for KINO???| +|08/01/2022 06:24:54| TOTSUGEKI +|08/01/2022 06:24:54| TOTSUGEKI! +|08/01/2022 06:24:55| TOTSUGEKI +|08/01/2022 06:24:55| |ITS OVER OOARAI BROS| +|08/01/2022 06:24:55| |Berris | +|08/01/2022 06:24:55| UOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 06:24:56| BAKAS +|08/01/2022 06:24:57| IDIOTS +|08/01/2022 06:24:58| TOTSUGEKI +|08/01/2022 06:24:59| >Japs +|08/01/2022 06:24:59| |AAAAAAAAAA AW UOOWOWWOO| +|08/01/2022 06:25:01| UOHHHHHHHHHHHHHHHHH +|08/01/2022 06:25:02| Bakas +|08/01/2022 06:25:02| |Rip tracks| +|08/01/2022 06:25:02| |BERRIS :DDDDDDD| +|08/01/2022 06:25:03| TOTSUGEKIDIOTS +|08/01/2022 06:25:04| |\o/ BANZAI| +|08/01/2022 06:25:04| |WE HAVE YOU SURROUNDED COME OUT AND TAKE YOUR MEDS| +|08/01/2022 06:25:04| |I SHOUDLVE BOUGHT MEXT COIN| +|08/01/2022 06:25:05| UOOOOHHHHHHHHHHHH +|08/01/2022 06:25:06| |I think this is it...| +|08/01/2022 06:25:08| |Benis Bheel :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:25:10| ENTER] +|08/01/2022 06:25:11| |BIG BOY COMIN THROUGH| +|08/01/2022 06:25:12| |nice job retards| +|08/01/2022 06:25:14| |HOW DO THEY SURVIVE THIS?| +|08/01/2022 06:25:15| |ENTER, THE WHEEL| +|08/01/2022 06:25:15| |Why'd they all go there?| +|08/01/2022 06:25:17| |YOU WILL LOVE THE (((UN)))| +|08/01/2022 06:25:17| |I HATE THE ANTICHRIST| +|08/01/2022 06:25:19| |I HATE THE ANTICHRIST| +|08/01/2022 06:25:20| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:25:20| |tsar tank| +|08/01/2022 06:25:20| |Senshado prodigy Saki-chan saves the day| +|08/01/2022 06:25:22| SHIMADA +|08/01/2022 06:25:22| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:25:24| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:25:24| Butterfly +|08/01/2022 06:25:24| TOTSUGEKI +|08/01/2022 06:25:25| AZUSA +|08/01/2022 06:25:27| |WE’VE GIT YOU SURROUNDED| +|08/01/2022 06:25:27| BUTTERFLY +|08/01/2022 06:25:28| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:25:29| |YOU WILL LOVE THE (((ANTICHRIST)))| +|08/01/2022 06:25:29| SAKI! +|08/01/2022 06:25:29| Totsugeki! +|08/01/2022 06:25:30| chouchou +|08/01/2022 06:25:30| butterfry +|08/01/2022 06:25:31| TOTSUGEKI +|08/01/2022 06:25:31| |I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +|08/01/2022 06:25:32| Kanransha... +|08/01/2022 06:25:32| |Actually, the anti-christ isn't so bad.| +|08/01/2022 06:25:32| |FUCKING SAKI| +|08/01/2022 06:25:33| CHOUCHOU +|08/01/2022 06:25:33| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:25:33| |Genius strikes again| +|08/01/2022 06:25:35| |BASED PSYCHIC| +|08/01/2022 06:25:35| SAKI +|08/01/2022 06:25:35| |Saki, the prodegy | +|08/01/2022 06:25:36| |Alice is so sexy| +|08/01/2022 06:25:36| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:25:37| ! +|08/01/2022 06:25:37| |LEAVE IT SAKI| +|08/01/2022 06:25:37| WHaT +|08/01/2022 06:25:39| |KINO TIME| +|08/01/2022 06:25:40| |CHOU CHOU| +|08/01/2022 06:25:41| SOOKA +|08/01/2022 06:25:41| |TACTICAL GENIUS| +|08/01/2022 06:25:42| |THE FERRIS WHEEL| +|08/01/2022 06:25:43| |FERRIS WHEEL| +|08/01/2022 06:25:44| SOOOKA +|08/01/2022 06:25:45| |999 I| +|08/01/2022 06:25:47| |Even MORE kino | +|08/01/2022 06:25:49| |The plan| +|08/01/2022 06:25:50| |And people don't think that that Asuza can't lead them to victory next match| +|08/01/2022 06:25:51| |THE ABSOLUTE MADLOLIS| +|08/01/2022 06:25:51| |BULLSHIT INCOMING| +|08/01/2022 06:25:52| |SAKI SMART| +|08/01/2022 06:25:53| |GATA GOTO| +|08/01/2022 06:25:54| YOSH +|08/01/2022 06:25:55| |YOU WILL EAT THE BUGS, LIVE IN THE POD, CLOSE THE SCHOOL| +|08/01/2022 06:25:55| |imagine the M3 hitting something| +|08/01/2022 06:25:56| 1941 +|08/01/2022 06:25:56| |Rabbit is the strongest | +|08/01/2022 06:25:56| 5HEAD +|08/01/2022 06:25:56| |TACTICAL GENIUS TO RIVAL CREED| +|08/01/2022 06:25:56| |Butterfly too strong. 4d chess over here| +|08/01/2022 06:25:57| |Is she, "special"?| +|08/01/2022 06:25:57| |BENNIS WHEL:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:25:59| IKIMAAAASU +|08/01/2022 06:25:59| |why are they called butterfly and not margarineflies| +|08/01/2022 06:26:00| |>lamo just trust in the carbon coating| +|08/01/2022 06:26:01| |Bros, why is Alice perfect for breeding?| +|08/01/2022 06:26:02| |Holy shit| +|08/01/2022 06:26:02| |Over 9000 iq plan| +|08/01/2022 06:26:03| BOOM +|08/01/2022 06:26:03| |BIG BRAIN| +|08/01/2022 06:26:04| WHEEEEEEEEEEEEEEEEEE +|08/01/2022 06:26:04| |BUNNY CUNNY| +|08/01/2022 06:26:05| |Why didn't the college team fire yet?| +|08/01/2022 06:26:07| |1941 reference, based /tv/ team| +|08/01/2022 06:26:07| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:26:07| |2k iq plan| +|08/01/2022 06:26:08| |AAAHHHHH MY EARS| +|08/01/2022 06:26:09| |would that work?| +|08/01/2022 06:26:11| WHEEEEEEEEEEEEE +|08/01/2022 06:26:11| TENSAI +|08/01/2022 06:26:13| |OH NO| +|08/01/2022 06:26:14| |>oh noooooo| +|08/01/2022 06:26:15| |HAHAHAHAHAHAHAHAHA GOD I LOVE DER FILM SO GODDAMN MUCH| +|08/01/2022 06:26:15| |DRIVE TO THE SIDE NOT WITH IT| +|08/01/2022 06:26:16| |THE ANTICHRIST FEARS THE WHEEL| +|08/01/2022 06:26:17| NIGEROOOOOOOOOOOOOOO +|08/01/2022 06:26:21| |RUN AWAY| +|08/01/2022 06:26:21| |HIGH IQ| +|08/01/2022 06:26:22| |>rolls the wrong way| +|08/01/2022 06:26:24| |BLUE HELMETS BTFO| +|08/01/2022 06:26:24| |>I AM A GENIUS! >OH NO| +|08/01/2022 06:26:25| |>not retarded| +|08/01/2022 06:26:25| RETARDED +|08/01/2022 06:26:27| |2000 IQ| +|08/01/2022 06:26:30| RART +|08/01/2022 06:26:30| |THE JEW FEARS THE FERRIS WHEEL| +|08/01/2022 06:26:31| ENTER +|08/01/2022 06:26:33| |ferris wheel btfos antichrist| +|08/01/2022 06:26:34| AHAHAHAHAHAHAHAHAHA +|08/01/2022 06:26:34| |Prometheus (2012)| +|08/01/2022 06:26:36| |smurfs didn't see this one coming| +|08/01/2022 06:26:38| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:26:39| |No brakes| +|08/01/2022 06:26:40| WAO +|08/01/2022 06:26:41| |Shoot first. Butterfly later. Always works.| +|08/01/2022 06:26:41| PANJANDRUM +|08/01/2022 06:26:42| WAO +|08/01/2022 06:26:42| WOW +|08/01/2022 06:26:42| |Based Rosehip immediately shoots at it| +|08/01/2022 06:26:42| WOW +|08/01/2022 06:26:43| WOW +|08/01/2022 06:26:43| WOW +|08/01/2022 06:26:43| WOW +|08/01/2022 06:26:43| WOW +|08/01/2022 06:26:43| Wow! +|08/01/2022 06:26:44| WAO +|08/01/2022 06:26:44| Wow~ +|08/01/2022 06:26:45| |UN GLOBOHOMO TEAM BTFO| +|08/01/2022 06:26:45| |EVASIVE MANUEVERS AGAINST THIS WHEEL| +|08/01/2022 06:26:45| |WHEEL > TANKS| +|08/01/2022 06:26:46| TRÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +|08/01/2022 06:26:46| WAO\ +|08/01/2022 06:26:47| |Attempted mass murder| +|08/01/2022 06:26:47| WOW~ +|08/01/2022 06:26:48| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:26:49| WAOO +|08/01/2022 06:26:50| >rosehip +|08/01/2022 06:26:50| |STOP SHOOTING IT ROSEHIP| +|08/01/2022 06:26:51| |>shooting the ferris wheel| +|08/01/2022 06:26:52| |ANTICHRIST BROS WE GOT TOO COCKY| +|08/01/2022 06:26:54| WOW +|08/01/2022 06:26:55| |why tank run from that thing| +|08/01/2022 06:26:55| |what they doin'| +|08/01/2022 06:26:55| |ROSEHIP IT'S OURS| +|08/01/2022 06:26:56| >rosehip +|08/01/2022 06:26:57| |SHOOT THAT FAIRY WHEEL| +|08/01/2022 06:27:00| UTEEEE +|08/01/2022 06:27:00| |FERRIS WHEEL WUNDER WAFFLE| +|08/01/2022 06:27:03| |DESU WA| +|08/01/2022 06:27:04| |bakahip shoots first, asks questions later| +|08/01/2022 06:27:04| |thanks for the help rosehip| +|08/01/2022 06:27:07| |REVENGE FOR BOSNIA| +|08/01/2022 06:27:07| |SHOOT IT DOWN| +|08/01/2022 06:27:08| |die wheel die| +|08/01/2022 06:27:08| |>shooting it| +|08/01/2022 06:27:10| |THE ANTICHRIST LIVETH IN FEAR, FOR HE KNOWS THE FERRIS WHEEL COMETH| +|08/01/2022 06:27:10| |WHY ARE YOU SHOOTING AT THE FERRIS WHEEL| +|08/01/2022 06:27:11| |WHY DOES THE FERRIS WHEEL HAVE TRACKING| +|08/01/2022 06:27:14| |based sharpshooter| +|08/01/2022 06:27:16| |Based sonnenrad ferrisweel crushinf the jewery and the antichrist| +|08/01/2022 06:27:18| |Hitler wouldv'e won if he built a couple of these| +|08/01/2022 06:27:21| |why you hsoot| +|08/01/2022 06:27:22| |>shooting the plot ferris wheel| +|08/01/2022 06:27:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:27:24| |ENTER THE TSAR TANK| +|08/01/2022 06:27:25| |DUCE GPS| +|08/01/2022 06:27:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:27:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:27:27| BUFFERING +|08/01/2022 06:27:31| BUFFFFFFFFFFFFFFERING +|08/01/2022 06:27:35| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:27:35| |FERRIS-SAN MVP!| +|08/01/2022 06:27:37| ;_;7 +|08/01/2022 06:27:38| |>buffering on kino| +|08/01/2022 06:27:39| F +|08/01/2022 06:27:40| C-U +|08/01/2022 06:27:40| o7 +|08/01/2022 06:27:40| :_; +|08/01/2022 06:27:40| |see yuu| +|08/01/2022 06:27:40| ;_;7 +|08/01/2022 06:27:40| |SEE YOU| +|08/01/2022 06:27:41| |RIP Ferris-chan| +|08/01/2022 06:27:42| |C U| +|08/01/2022 06:27:42| |C U| +|08/01/2022 06:27:42| |DAMN ANTICHRISTS| +|08/01/2022 06:27:43| |SAVE FERRIS!| +|08/01/2022 06:27:43| o7 +|08/01/2022 06:27:44| o7 +|08/01/2022 06:27:44| |Goodbye ferris-chan| +|08/01/2022 06:27:44| o7 +|08/01/2022 06:27:45| ;_;7 +|08/01/2022 06:27:47| |BYE FERRIS-CHAN O7| +|08/01/2022 06:27:47| ;_;7 +|08/01/2022 06:27:48| NNY +|08/01/2022 06:27:48| |FERRIS REAL MVP| +|08/01/2022 06:27:49| ;_;7 +|08/01/2022 06:27:50| o7 +|08/01/2022 06:27:52| |WHAT DOES THE HEAVY KILLER MANUAL SAY| +|08/01/2022 06:27:53| RIP +|08/01/2022 06:27:56| THINGY +|08/01/2022 06:27:57| AZUSA +|08/01/2022 06:27:58| TuT +|08/01/2022 06:27:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:27:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:27:59| |Bai kan chan| +|08/01/2022 06:28:00| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +|08/01/2022 06:28:01| |azusa sugou| +|08/01/2022 06:28:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:28:04| |just kill the heavy tank man do it| +|08/01/2022 06:28:11| |dvce dvce dvce| +|08/01/2022 06:28:12| |KAT CHAN| +|08/01/2022 06:28:12| Kacchan +|08/01/2022 06:28:14| |Azusa is too cute when she's thinking| +|08/01/2022 06:28:14| KAT-CHAN +|08/01/2022 06:28:17| KAT-CHAN +|08/01/2022 06:28:18| KATCHAN +|08/01/2022 06:28:18| |kat chan| +|08/01/2022 06:28:19| kat-chan~ +|08/01/2022 06:28:19| |KAT CHAN| +|08/01/2022 06:28:19| kratchan +|08/01/2022 06:28:21| |kat chan| +|08/01/2022 06:28:23| CUTE +|08/01/2022 06:28:24| |Pyo | +|08/01/2022 06:28:26| KAT-CHAN! +|08/01/2022 06:28:29| |"katy" in the dub btw| +|08/01/2022 06:28:30| |Mechanic team and nerd team| +|08/01/2022 06:28:33| |CUTE DUCKS| +|08/01/2022 06:28:33| |cute hats| +|08/01/2022 06:28:34| |onaji chiimu da nya~| +|08/01/2022 06:28:39| |DUCK DONO| +|08/01/2022 06:28:42| |duck gang| +|08/01/2022 06:28:43| THOMAS +|08/01/2022 06:28:44| THOMAS +|08/01/2022 06:28:44| DUCKS +|08/01/2022 06:28:45| |Duck squad!| +|08/01/2022 06:28:46| |THOMAS THE TANK| +|08/01/2022 06:28:46| |is that Thomas the Tank?| +|08/01/2022 06:28:47| |Enter, THOMAS| +|08/01/2022 06:28:47| |thomas the tank engine| +|08/01/2022 06:28:48| hetzer +|08/01/2022 06:28:48| THOMAS +|08/01/2022 06:28:48| t-thomas? +|08/01/2022 06:28:49| |I'm going blind, what do?| +|08/01/2022 06:28:50| wtf +|08/01/2022 06:28:52| Faiai +|08/01/2022 06:28:52| |Thomas the nightmare engine...| +|08/01/2022 06:28:53| |DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK | +|08/01/2022 06:28:55| |duck fuck| +|08/01/2022 06:28:55| |>miho gets decapitated by arch| +|08/01/2022 06:28:55| BONK +|08/01/2022 06:28:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:29:00| OST +|08/01/2022 06:29:00| thomas +|08/01/2022 06:29:00| owowowoowowowo +|08/01/2022 06:29:01| |>thomas the tank engine| +|08/01/2022 06:29:01| |BIG PASTA BRAIN| +|08/01/2022 06:29:01| AWAWAWa +|08/01/2022 06:29:04| |Based Stug| +|08/01/2022 06:29:05| |Based trickery | +|08/01/2022 06:29:05| |this town ain't big enough for the boffa us| +|08/01/2022 06:29:06| OWOWOWOWOWOWWO +|08/01/2022 06:29:06| |Oh hey its dikon war| +|08/01/2022 06:29:07| |WILD WEST| +|08/01/2022 06:29:08| HOWDY +|08/01/2022 06:29:08| AWAWAWAWAWAWAWAWAWA +|08/01/2022 06:29:08| |dvce dvce| +|08/01/2022 06:29:09| AWAWWAWAWAWAWAW +|08/01/2022 06:29:09| ALALALLALALALALALALALA +|08/01/2022 06:29:09| AWAWAWAAWAWAAWAAWAAWAWA +|08/01/2022 06:29:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:29:10| OWOWOWOWO +|08/01/2022 06:29:10| AWOWOWOWOWOWOWOWOW +|08/01/2022 06:29:10| HAWAWAWAWA +|08/01/2022 06:29:11| |Daikon war already?| +|08/01/2022 06:29:11| KINO +|08/01/2022 06:29:12| AWAWAWAWAWAWAWAWA +|08/01/2022 06:29:12| |DATS RACIST| +|08/01/2022 06:29:13| AWAWAWAWA +|08/01/2022 06:29:14| awawawawa +|08/01/2022 06:29:14| KEK +|08/01/2022 06:29:15| |daikon sounds'| +|08/01/2022 06:29:16| WWWWWWWWWWWWW +|08/01/2022 06:29:20| |DAS RACIST| +|08/01/2022 06:29:20| |WILD WEST ANIME GIRL TANK WARFARE| +|08/01/2022 06:29:21| AYAYA +|08/01/2022 06:29:22| |They fell for it!| +|08/01/2022 06:29:23| |>falling for it twice| +|08/01/2022 06:29:26| |WELCOME TO THE DAICON FIELDS MOTHER FUCKER| +|08/01/2022 06:29:28| GERONIMO +|08/01/2022 06:29:29| |They fucking love westerns| +|08/01/2022 06:29:30| |they cant keep getting away with it| +|08/01/2022 06:29:30| GERONIMO +|08/01/2022 06:29:32| GERONIMO +|08/01/2022 06:29:32| |IS THIS FORESHADOWING?!?!| +|08/01/2022 06:29:33| GERONIMO +|08/01/2022 06:29:39| |daikon was ass| +|08/01/2022 06:29:40| |Oh shit it’s daikon war| +|08/01/2022 06:29:41| |GIRLS UND /FIT/| +|08/01/2022 06:29:42| KINO +|08/01/2022 06:29:44| |DAS FINALE 3 OVA SPOILERS| +|08/01/2022 06:29:46| POWER +|08/01/2022 06:29:46| KINO +|08/01/2022 06:29:48| |Daikon had ass| +|08/01/2022 06:29:48| STRONK +|08/01/2022 06:29:50| |FUCKING HUGE| +|08/01/2022 06:29:50| FIT +|08/01/2022 06:29:50| |ONE HANDED| +|08/01/2022 06:29:52| |/fit/ gains| +|08/01/2022 06:29:53| |SPEED MOMENTUM VIOLENCE| +|08/01/2022 06:29:53| |Swole gamers| +|08/01/2022 06:29:54| |magnificent seven theme| +|08/01/2022 06:29:54| SWOLE +|08/01/2022 06:29:55| |Stronk gamers| +|08/01/2022 06:29:55| |REMINDER: The StuGIII Crew are my wives.| +|08/01/2022 06:29:55| |POWER KINO| +|08/01/2022 06:29:56| 8888888 +|08/01/2022 06:29:56| KINO +|08/01/2022 06:29:56| GERONIMO +|08/01/2022 06:29:57| |IF I HAD A NICKE FOR EVERY TIME GUP DID A WESTERN PARODY I'D HAVE TWO NICKLES.| +|08/01/2022 06:29:57| /FIT/ +|08/01/2022 06:29:58| |cute arm on that one| +|08/01/2022 06:30:00| |STONK NERDS| +|08/01/2022 06:30:00| |Just a few daikon more| +|08/01/2022 06:30:03| DF1 +|08/01/2022 06:30:04| |wall hacks incoming| +|08/01/2022 06:30:10| |a fistful of daicon| +|08/01/2022 06:30:12| |ducks and pig| +|08/01/2022 06:30:15| |maze...as in bc freedom maze?????| +|08/01/2022 06:30:15| |best BGM| +|08/01/2022 06:30:15| |they fucking killed captain america| +|08/01/2022 06:30:17| |Maze is based| +|08/01/2022 06:30:21| |cute duck| +|08/01/2022 06:30:22| |Just drive through the maze| +|08/01/2022 06:30:26| |ENTER DUCKS| +|08/01/2022 06:30:28| |>Tom Nook| +|08/01/2022 06:30:30| |You're a tank| +|08/01/2022 06:30:32| |4H30 TO GO, LADS!| +|08/01/2022 06:30:33| |Nice shot| +|08/01/2022 06:30:34| SHIMATTA +|08/01/2022 06:30:35| |Why not just drive through the shrubbery?| +|08/01/2022 06:30:36| |these binks| +|08/01/2022 06:30:39| |TENNO HEIKA BANZAI \o/| +|08/01/2022 06:30:42| |lol Tom nook, never noticed that| +|08/01/2022 06:30:46| |>shit tanks| +|08/01/2022 06:30:46| TRICKED +|08/01/2022 06:30:47| |duck rape| +|08/01/2022 06:30:48| >buffering +|08/01/2022 06:30:52| |FOR THE EMPEROR!!!| +|08/01/2022 06:30:53| |shot trap| +|08/01/2022 06:30:55| |How can they even see| +|08/01/2022 06:31:02| |driver hatch| +|08/01/2022 06:31:02| |The ducks are blocking the periscopes | +|08/01/2022 06:31:02| GUTS +|08/01/2022 06:31:03| |muh dick| +|08/01/2022 06:31:05| cunny.... +|08/01/2022 06:31:07| |More pushing| +|08/01/2022 06:31:08| GUTS! +|08/01/2022 06:31:08| |HIROHITO SAMA| +|08/01/2022 06:31:10| GUUTS +|08/01/2022 06:31:11| TANKZURI +|08/01/2022 06:31:11| |COCK BLOCKED| +|08/01/2022 06:31:12| GUTS +|08/01/2022 06:31:12| >tittyfuck +|08/01/2022 06:31:13| GUTS! +|08/01/2022 06:31:13| |tank paizuri| +|08/01/2022 06:31:15| |duck duck duck| +|08/01/2022 06:31:15| GUUUUUUTS!!!!! +|08/01/2022 06:31:16| Pincer +|08/01/2022 06:31:16| |god I wish that was me| +|08/01/2022 06:31:18| |i watch for the plot| +|08/01/2022 06:31:20| |fun fact, ducks have corkscrew penises| +|08/01/2022 06:31:22| |NICE FIGHT| +|08/01/2022 06:31:22| RATTE +|08/01/2022 06:31:23| maze +|08/01/2022 06:31:24| >eh +|08/01/2022 06:31:25| RATTE! +|08/01/2022 06:31:26| quacked +|08/01/2022 06:31:28| |I love the ducks bros| +|08/01/2022 06:31:31| |i need to see now| +|08/01/2022 06:31:33| |classic blunder| +|08/01/2022 06:31:34| |NAISU FAITO| +|08/01/2022 06:31:38| HACK +|08/01/2022 06:31:39| QUACKED +|08/01/2022 06:31:43| RUMI +|08/01/2022 06:31:47| |rumi | +|08/01/2022 06:31:52| WAKAWAKAWAKA +|08/01/2022 06:31:55| |panzer hurrrrr| +|08/01/2022 06:31:55| |MIHO STANCE| +|08/01/2022 06:31:57| |Chafee you fucking idiot| +|08/01/2022 06:31:58| |NO I WILL NOT DRINK THE CORN SYRUP| +|08/01/2022 06:32:02| |YOU BLOCKHEAD| +|08/01/2022 06:32:07| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:32:09| |>IMAGINE LOSING TO A MAZE| +|08/01/2022 06:32:11| |do the 3 umis even have different personalities if personality at all?| +|08/01/2022 06:32:12| |let's go, friendly fire | +|08/01/2022 06:32:12| |RUMI BUTT| +|08/01/2022 06:32:13| WAKAWAKAWAKAWAKA +|08/01/2022 06:32:14| |It's a hedgemaze| +|08/01/2022 06:32:15| |Do you WANT to fall off?| +|08/01/2022 06:32:17| |>filtered to a maze| +|08/01/2022 06:32:20| btfo +|08/01/2022 06:32:21| >newtypes +|08/01/2022 06:32:22| |>not lighting up the bushes with tracers| +|08/01/2022 06:32:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:23| MAZE'D +|08/01/2022 06:32:24| |lmao eat shit| +|08/01/2022 06:32:25| |lol lmao| +|08/01/2022 06:32:25| |DVCE GUARDIAN ANGEL | +|08/01/2022 06:32:25| WALLHAX +|08/01/2022 06:32:27| |COMPLETELY HIDDEN| +|08/01/2022 06:32:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:32:28| |Oh right its just bushes lmao| +|08/01/2022 06:32:28| |IMAGINE LOSING TO HIGHSCHOOLERS| +|08/01/2022 06:32:29| ARISU +|08/01/2022 06:32:30| dvce +|08/01/2022 06:32:30| |GANBARE BOKO| +|08/01/2022 06:32:31| DUCE +|08/01/2022 06:32:31| WALLHACK +|08/01/2022 06:32:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:32| DUCE +|08/01/2022 06:32:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:33| DUCE +|08/01/2022 06:32:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:34| |Imagine losing to Duce spotting| +|08/01/2022 06:32:34| DUCE +|08/01/2022 06:32:34| Anzu +|08/01/2022 06:32:35| |NO ONE WILL EVER SEE THEM| +|08/01/2022 06:32:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:37| ENTER +|08/01/2022 06:32:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:38| |BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +|08/01/2022 06:32:38| UOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:32:39| |DUCE DUCE DUCE| +|08/01/2022 06:32:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:40| |DUCE DUCE DUCE DUCE| +|08/01/2022 06:32:40| |BOKO TIME| +|08/01/2022 06:32:40| |Not enough pasta for Duce diabetes| +|08/01/2022 06:32:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:42| |DUCE DUCE DUCE| +|08/01/2022 06:32:43| GANBARE +|08/01/2022 06:32:44| |BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +|08/01/2022 06:32:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:46| boko! +|08/01/2022 06:32:47| BOKO +|08/01/2022 06:32:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:47| |FUCK EM UP BOKO!| +|08/01/2022 06:32:48| |GANBARE BOKO| +|08/01/2022 06:32:49| |UOOOOOOOOOOOOOOOOH UOOOOOOOOOOOOOH| +|08/01/2022 06:32:49| |oh no boko autism| +|08/01/2022 06:32:50| CUTE +|08/01/2022 06:32:50| |>Alice talking to her doll| +|08/01/2022 06:32:51| |YATTE ARU YATTE ARU YATTE ARU ZE| +|08/01/2022 06:32:51| AUTISM +|08/01/2022 06:32:52| |was it autism?| +|08/01/2022 06:32:52| CUTE +|08/01/2022 06:32:52| AUTISM +|08/01/2022 06:32:53| ENTER +|08/01/2022 06:32:53| KINOKINOKINO +|08/01/2022 06:32:53| BOKO?! +|08/01/2022 06:32:53| |BOKO WAR CRY| +|08/01/2022 06:32:53| |FUCK EM BOKO | +|08/01/2022 06:32:55| autism +|08/01/2022 06:32:55| |KICK THEIR ASS BOKO| +|08/01/2022 06:32:56| |oh no ooarai bros| +|08/01/2022 06:32:56| UOOOOOOOOOOOOOH +|08/01/2022 06:32:56| AUTISM +|08/01/2022 06:32:56| |BOKO BOKO| +|08/01/2022 06:32:56| |DUCE SPOTTING LIKE ITS BATTLEFIELD| +|08/01/2022 06:32:57| BOKO +|08/01/2022 06:32:57| |BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +|08/01/2022 06:32:57| ENTER +|08/01/2022 06:32:57| |YATTE YARO| +|08/01/2022 06:32:59| |>loli about to get boko'd| +|08/01/2022 06:32:59| |GETTEM BOKO!| +|08/01/2022 06:33:00| |YOU CAN THIS| +|08/01/2022 06:33:00| autism +|08/01/2022 06:33:00| |BOKO WILL LEAD US| +|08/01/2022 06:33:01| autism +|08/01/2022 06:33:01| |>singing over the mic| +|08/01/2022 06:33:01| |CUNNY AUTISM| +|08/01/2022 06:33:01| |YATTE YARU| +|08/01/2022 06:33:02| |THE WAR CRY OF MY PEOPLE| +|08/01/2022 06:33:03| |Boko song| +|08/01/2022 06:33:03| |cute arisu| +|08/01/2022 06:33:03| autism +|08/01/2022 06:33:03| AUTISM +|08/01/2022 06:33:03| |YATTE YARU!| +|08/01/2022 06:33:03| UOOOOOOOOOOOOOH +|08/01/2022 06:33:04| |YATTE YATTE YARO| +|08/01/2022 06:33:04| |FUCK THE ENTRANCE| +|08/01/2022 06:33:06| |WE'RE REACHING LEVELS OF AUTISM THAT WE NEVER THOUGH POSSIBLE| +|08/01/2022 06:33:06| |YOU CAN THIS BOKO| +|08/01/2022 06:33:06| |LETS GO BOKOOO| +|08/01/2022 06:33:06| AAAAAAAAAAAAAAA +|08/01/2022 06:33:07| |Crusader KINO| +|08/01/2022 06:33:07| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:33:10| |Oh no, the disabled bear is coming to the rescue| +|08/01/2022 06:33:11| UOOOOOOOOOOOOOH +|08/01/2022 06:33:12| |Alice's is gonna have some severe back pain from carrying these shitters.| +|08/01/2022 06:33:13| |GET READY TO GET BOKOED| +|08/01/2022 06:33:13| ! +|08/01/2022 06:33:14| bonk +|08/01/2022 06:33:14| |BOKO ANTHEM| +|08/01/2022 06:33:15| MASAKA +|08/01/2022 06:33:15| |FAT SHAMED| +|08/01/2022 06:33:15| |FUCK EM UP BOKO| +|08/01/2022 06:33:15| AAAAAAAAAAAAA +|08/01/2022 06:33:16| |THUNDERBOLT GUNDAM| +|08/01/2022 06:33:16| |ITS FUCKING TIME FOR MORE KNIO LADS| +|08/01/2022 06:33:18| wtf +|08/01/2022 06:33:19| HENSHIN +|08/01/2022 06:33:19| |Our autistic commander left the radio keyed again.| +|08/01/2022 06:33:20| |Alice about to go ham| +|08/01/2022 06:33:21| |Quick conversion| +|08/01/2022 06:33:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:33:21| |AMERICAN ENGINEERING| +|08/01/2022 06:33:22| |I HATE THE ANTICHRIST| +|08/01/2022 06:33:22| kino +|08/01/2022 06:33:22| |BITCH YOU THOUGHT| +|08/01/2022 06:33:23| |THEY COME OFF?| +|08/01/2022 06:33:25| Masaka +|08/01/2022 06:33:26| |NOT A THIRD TIME| +|08/01/2022 06:33:29| LEWD +|08/01/2022 06:33:29| NAZE +|08/01/2022 06:33:31| |rthis entrance was like sex with alice| +|08/01/2022 06:33:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:32| KINO +|08/01/2022 06:33:34| DVCE +|08/01/2022 06:33:34| |SUPERIOR AMERICAN ENGINEERING| +|08/01/2022 06:33:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:42| BARETA +|08/01/2022 06:33:43| |oh wow| +|08/01/2022 06:33:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:44| |thats a bad idea| +|08/01/2022 06:33:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:48| |HOW DID YOU FIT A +20 TON CHAFFE UP THERE| +|08/01/2022 06:33:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:49| |OH SHIT| +|08/01/2022 06:33:49| |that's one solid rollercoaster| +|08/01/2022 06:33:50| |OH NO BROS DUCE WAS FOUND OUT| +|08/01/2022 06:33:50| WEEEEEEEEEEE +|08/01/2022 06:33:50| |best BGM right here| +|08/01/2022 06:33:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:54| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:33:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:55| KINO +|08/01/2022 06:33:55| YAHOOOOOOOOOOOO +|08/01/2022 06:33:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:56| OST +|08/01/2022 06:33:56| WTF +|08/01/2022 06:33:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:59| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:33:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:00| |Burger ad in front of a Japanese place? Not obvious much| +|08/01/2022 06:34:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:03| duce!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 06:34:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:06| |! BANGER ALERT !| +|08/01/2022 06:34:07| |WAI WAI WAI!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 06:34:07| |DUCK TANKS| +|08/01/2022 06:34:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:08| |would that work?| +|08/01/2022 06:34:10| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 06:34:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:11| |Ways to die painfully.| +|08/01/2022 06:34:12| |TENNO HEIKA| +|08/01/2022 06:34:12| |this OST is so great| +|08/01/2022 06:34:12| |imagine being mad about tankettes| +|08/01/2022 06:34:13| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 06:34:13| UTEEEEEEEEEE +|08/01/2022 06:34:14| BANZAI +|08/01/2022 06:34:14| TOTSUGEKI +|08/01/2022 06:34:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:17| |how did she win here| +|08/01/2022 06:34:17| UTEEEEE +|08/01/2022 06:34:21| |BEST DRIVER| +|08/01/2022 06:34:22| |Christ bros...| +|08/01/2022 06:34:22| |ALICE FUCKING THEM UP| +|08/01/2022 06:34:23| BTFO +|08/01/2022 06:34:23| NIMBLE +|08/01/2022 06:34:24| |SUGOI ALICE| +|08/01/2022 06:34:24| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 06:34:24| BOKO +|08/01/2022 06:34:27| AITAAAAA +|08/01/2022 06:34:28| JUKED +|08/01/2022 06:34:28| |I HATE THE ANTICHRIST| +|08/01/2022 06:34:31| DONMAI +|08/01/2022 06:34:31| TANKFUUUUU +|08/01/2022 06:34:31| GUTS +|08/01/2022 06:34:31| GUTS +|08/01/2022 06:34:33| |ALICE HYPE| +|08/01/2022 06:34:34| |ARISU TOO STRONK| +|08/01/2022 06:34:35| GUUUUTS +|08/01/2022 06:34:35| |GUTS GUTS GUTS GUTS| +|08/01/2022 06:34:35| GUTS +|08/01/2022 06:34:36| |NICE TANK| +|08/01/2022 06:34:37| |>We jobbed as usual| +|08/01/2022 06:34:40| |5 tanks in 30 seconds fuck| +|08/01/2022 06:34:40| |Alice just soloing those crubs| +|08/01/2022 06:34:41| |KILLE EM ALL| +|08/01/2022 06:34:41| mogged +|08/01/2022 06:34:42| |No they are gonna force me to drink the corn syrup...| +|08/01/2022 06:34:42| |CUNNY TOO STRONG| +|08/01/2022 06:34:42| SHAMEFURR +|08/01/2022 06:34:45| |ALICE HAS HAD ENOUGH| +|08/01/2022 06:34:47| |DRIVER CHAN???| +|08/01/2022 06:34:48| |SCRUB STOMP| +|08/01/2022 06:34:49| >naomi +|08/01/2022 06:34:51| |i haven't been to /a/ in years explain this jobbing meme| +|08/01/2022 06:34:54| PENTAKEEEEEELLLLL +|08/01/2022 06:34:55| lewd... +|08/01/2022 06:34:56| |So THIS is the power of cunny... sugoi...| +|08/01/2022 06:34:58| |BASED BRITS| +|08/01/2022 06:35:05| |jobbing comes from wrestling| +|08/01/2022 06:35:06| |There's no way Darjeeling could lose| +|08/01/2022 06:35:08| |jobbing is crossboarder shit| +|08/01/2022 06:35:08| |alice isnt doing shit its the driver and gunner| +|08/01/2022 06:35:09| |I'VE HAD IT WITH THESE MOTHERFUCKING HIGHSCHOOLERS ON MY BATTLEFIELD| +|08/01/2022 06:35:10| |The crew is dead| +|08/01/2022 06:35:11| out-fucking-skilled +|08/01/2022 06:35:11| |Ultra instict Alice doing cleanup| +|08/01/2022 06:35:13| o7 +|08/01/2022 06:35:13| o7 +|08/01/2022 06:35:14| |Just shoot the side with the 17pdr you dumb fucking slag| +|08/01/2022 06:35:14| |RIP TEA| +|08/01/2022 06:35:14| |TL Note: "Jobbing" means "Jobbign"| +|08/01/2022 06:35:15| |ASSAM WINSLOL| +|08/01/2022 06:35:15| |Spank Noami Y/Y?| +|08/01/2022 06:35:16| ;___;7 +|08/01/2022 06:35:16| |CARBON COATING| +|08/01/2022 06:35:18| o7 +|08/01/2022 06:35:19| BERMUDAAAAA +|08/01/2022 06:35:19| |jobbing comes from /dbs/| +|08/01/2022 06:35:20| |That was the fucking Operaton Flashpoint vehicle explosion sound| +|08/01/2022 06:35:20| o7 +|08/01/2022 06:35:20| |RIP bong| +|08/01/2022 06:35:21| ????????????????????????????? +|08/01/2022 06:35:21| o7 +|08/01/2022 06:35:21| o7 +|08/01/2022 06:35:22| |SLAGS DOUBLE PENETRATED| +|08/01/2022 06:35:23| |fucking slag| +|08/01/2022 06:35:23| o7 +|08/01/2022 06:35:23| ?????????????????? +|08/01/2022 06:35:24| o7 +|08/01/2022 06:35:24| ????????? +|08/01/2022 06:35:24| |bye bye girl who speaks in riddles| +|08/01/2022 06:35:26| |DUCE NO| +|08/01/2022 06:35:26| |Crew killed as ammo cooked off| +|08/01/2022 06:35:26| |BERMUDA ATTACK| +|08/01/2022 06:35:28| |the data assam what does it mean???| +|08/01/2022 06:35:28| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 06:35:28| ATTACKU +|08/01/2022 06:35:29| |how do I marry Alice?| +|08/01/2022 06:35:30| |SLAAAAAAAAAAAAAAAAAAAAAAG NOOOOO| +|08/01/2022 06:35:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:38| UOOOOOOOOOOOOOOOOO +|08/01/2022 06:35:38| |pekoe have you heard this saying, "i'm fucking dead"?| +|08/01/2022 06:35:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:39| |>tank goes up| +|08/01/2022 06:35:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:39| |DUCE still dodging | +|08/01/2022 06:35:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:42| WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 06:35:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:35:45| |GO DVCE GO| +|08/01/2022 06:35:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:47| WEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 06:35:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:47| |BOTH ENDS| +|08/01/2022 06:35:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:48| DP'D +|08/01/2022 06:35:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:49| LEWD +|08/01/2022 06:35:52| |orange pekoe you daft idiot that was my chevvy| +|08/01/2022 06:35:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:53| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:56| L-LEWD +|08/01/2022 06:35:57| |RABBIT TEAM GOT 2 KILLS| +|08/01/2022 06:35:57| o7 +|08/01/2022 06:35:58| AUTISM +|08/01/2022 06:35:59| ;_; +|08/01/2022 06:36:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:36:00| |BASED DUCKS| +|08/01/2022 06:36:02| |bunny cunnies...| +|08/01/2022 06:36:02| Pog +|08/01/2022 06:36:04| |RIP CUN| +|08/01/2022 06:36:05| |OH N-| +|08/01/2022 06:36:05| ;_; +|08/01/2022 06:36:07| |Butterfly can't save you from Boko| +|08/01/2022 06:36:11| |USAGIS FINALLY USEFUL| +|08/01/2022 06:36:11| |rip bunny cunny| +|08/01/2022 06:36:12| |Jobbing is originally a wrestling term, it means someone loses a fight they shouldn't/fighting poorer than they should| +|08/01/2022 06:36:12| |poor bunnies| +|08/01/2022 06:36:15| |god I wish I was Karina| +|08/01/2022 06:36:15| DORIFTO +|08/01/2022 06:36:17| WEW +|08/01/2022 06:36:17| |Alice outcunnied them| +|08/01/2022 06:36:18| |all this fucking tank drifting lamo| +|08/01/2022 06:36:18| |STOP THERE| +|08/01/2022 06:36:18| |TRI STAR| +|08/01/2022 06:36:20| TRIANGLE'D +|08/01/2022 06:36:20| DORIFTO +|08/01/2022 06:36:22| ONOREEEEEEEEE +|08/01/2022 06:36:23| |TRACK STILL INTACT| +|08/01/2022 06:36:24| |ALISA DEAD| +|08/01/2022 06:36:24| DORIFTO +|08/01/2022 06:36:24| ONOREEEEEEE +|08/01/2022 06:36:24| |AMERICAN JOBBERS| +|08/01/2022 06:36:25| DORIFTO +|08/01/2022 06:36:25| |Of course Alisa got knocked out| +|08/01/2022 06:36:26| |HELMET CHAN| +|08/01/2022 06:36:30| |GAS GAS GAS| +|08/01/2022 06:36:30| fuck +|08/01/2022 06:36:30| |NAOMI NOOOO| +|08/01/2022 06:36:31| DORIFTO +|08/01/2022 06:36:31| oops... +|08/01/2022 06:36:32| oops +|08/01/2022 06:36:32| Whoops +|08/01/2022 06:36:33| NO +|08/01/2022 06:36:33| DEATH +|08/01/2022 06:36:34| EH? +|08/01/2022 06:36:34| drifting +|08/01/2022 06:36:34| >saunders +|08/01/2022 06:36:34| |jobbing comes from bejita| +|08/01/2022 06:36:35| oops +|08/01/2022 06:36:35| |SIMULTANIOUS DORIFTO| +|08/01/2022 06:36:35| OOPS +|08/01/2022 06:36:35| |MASH, ORTEGA. LAUNCH A JET STREAM ATTACK ON THAT SHERMAN| +|08/01/2022 06:36:35| |3X DRIFTO?| +|08/01/2022 06:36:36| |Syncronised drifting| +|08/01/2022 06:36:36| OOPS +|08/01/2022 06:36:37| |lmao outplayed| +|08/01/2022 06:36:37| OOPD +|08/01/2022 06:36:37| OOPS +|08/01/2022 06:36:37| OOPS +|08/01/2022 06:36:37| OOPS +|08/01/2022 06:36:37| |MULTI TANK DRIFTING| +|08/01/2022 06:36:38| ;_;7 +|08/01/2022 06:36:38| OOPS +|08/01/2022 06:36:38| OOOOOOOPS +|08/01/2022 06:36:38| Oops +|08/01/2022 06:36:39| woops +|08/01/2022 06:36:39| |fUCK THE USA 2 TOWERS WERENT ENOUGH| +|08/01/2022 06:36:43| OOPS +|08/01/2022 06:36:44| |remember >sanders from one of this faildubs?| +|08/01/2022 06:36:44| |BYE BYE JOBBERS| +|08/01/2022 06:36:44| |MURICA BTFO| +|08/01/2022 06:36:46| |Simultaneous drifto kino| +|08/01/2022 06:36:46| YARAETA +|08/01/2022 06:36:47| 2STRONG +|08/01/2022 06:36:48| |how fucking strong is she| +|08/01/2022 06:36:48| |Gamers too buff| +|08/01/2022 06:36:49| |did saunders do anything this match?| +|08/01/2022 06:36:50| |too stronk| +|08/01/2022 06:36:50| |ROSEHIP | +|08/01/2022 06:36:52| SPEED +|08/01/2022 06:36:52| |LIMITER OFF| +|08/01/2022 06:36:55| |Momo too strong| +|08/01/2022 06:36:56| SPEED +|08/01/2022 06:36:56| FASTER +|08/01/2022 06:36:57| |NIGHT OF FIRE| +|08/01/2022 06:36:57| |MY WIFE, ROSEHIP| +|08/01/2022 06:36:58| |REMOVE MY INHIBTORS| +|08/01/2022 06:36:59| DOKTOR +|08/01/2022 06:37:00| |HEY TAXI| +|08/01/2022 06:37:01| TAXI +|08/01/2022 06:37:02| |HEI TAXIII| +|08/01/2022 06:37:03| |the speed limiter is gone| +|08/01/2022 06:37:03| |HEY TASHI| +|08/01/2022 06:37:04| |hey taxi| +|08/01/2022 06:37:06| |Fleet passings| +|08/01/2022 06:37:06| |so many panzers| +|08/01/2022 06:37:07| |BREAKING MY LIMIT| +|08/01/2022 06:37:08| DORIFTO +|08/01/2022 06:37:08| |DOKTOR TURN OFF MY SPEED INHIBITORS| +|08/01/2022 06:37:08| |HEY TAKSHI| +|08/01/2022 06:37:09| |RELEASE MY SPEED INHIBITORS| +|08/01/2022 06:37:13| |I'M BURNING UP FOR YOU| +|08/01/2022 06:37:14| |RUKURIRI JOBBING AGAIN| +|08/01/2022 06:37:15| |ROSEHIP SPEED| +|08/01/2022 06:37:15| |there is so much shit going on at once| +|08/01/2022 06:37:16| |Now's the crusader kino. | +|08/01/2022 06:37:16| ROSUHIPU +|08/01/2022 06:37:17| REALISM +|08/01/2022 06:37:18| M-MASAKA +|08/01/2022 06:37:19| SPEEEEED +|08/01/2022 06:37:21| |Based Rsehip| +|08/01/2022 06:37:21| |I WANT TO BELIEVE| +|08/01/2022 06:37:21| ROSEHIP +|08/01/2022 06:37:23| HAYAI +|08/01/2022 06:37:23| |less goooo rosehip| +|08/01/2022 06:37:24| |BASED ROSEHIP| +|08/01/2022 06:37:25| |speed kills| +|08/01/2022 06:37:30| |>Chovy will never ask for a ride and climb on your back ;__;| +|08/01/2022 06:37:30| o7 +|08/01/2022 06:37:32| |TIME FOR DUCE| +|08/01/2022 06:37:33| |FUCK THE RULES| +|08/01/2022 06:37:33| |DUCE IS JESUS| +|08/01/2022 06:37:34| |SODOKO WHY| +|08/01/2022 06:37:34| RULES +|08/01/2022 06:37:37| |can tanks really carry tanks| +|08/01/2022 06:37:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:37:41| |LETS FUCKING GO SODOKO| +|08/01/2022 06:37:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:37:42| |DEJA VU| +|08/01/2022 06:37:42| DVCE' +|08/01/2022 06:37:42| |FUCK THE RULES| +|08/01/2022 06:37:44| |>never pens| +|08/01/2022 06:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:37:45| |SLEEP STREAM?| +|08/01/2022 06:37:47| |how is rosehip not dead, she gets rekt everytime| +|08/01/2022 06:37:48| KONOOOOOO +|08/01/2022 06:37:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:52| FUFUN +|08/01/2022 06:37:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:37:55| huhu +|08/01/2022 06:37:55| TANKLET +|08/01/2022 06:37:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:57| YOSH +|08/01/2022 06:37:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:58| |TIANAMEN SQUARE| +|08/01/2022 06:38:00| |dumb cunt| +|08/01/2022 06:38:01| DEPRESSION +|08/01/2022 06:38:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:03| |CHINKS BTFOD| +|08/01/2022 06:38:04| |DEATH BY DROWNING| +|08/01/2022 06:38:05| |3 POINT| +|08/01/2022 06:38:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:38:06| |DUCE IS DEAD AAAAAAAAAA| +|08/01/2022 06:38:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:08| F +|08/01/2022 06:38:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:08| |>OH NO| +|08/01/2022 06:38:09| LMAO +|08/01/2022 06:38:09| |NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO DUCEBROS| +|08/01/2022 06:38:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:38:09| RIP +|08/01/2022 06:38:10| |tanks can't skip on water| +|08/01/2022 06:38:10| |YATTA SEIKO DA TANKETTE DE SAIKYO| +|08/01/2022 06:38:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:38:11| |DUCE BROS……| +|08/01/2022 06:38:11| |DUCE NO| +|08/01/2022 06:38:12| YATTA +|08/01/2022 06:38:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:12| wow +|08/01/2022 06:38:13| |TANK SKIPPING| +|08/01/2022 06:38:13| |NOOOOOOOOOOOOOOOOOO DUCE| +|08/01/2022 06:38:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:14| realistic +|08/01/2022 06:38:14| DVC- +|08/01/2022 06:38:15| F +|08/01/2022 06:38:15| ;_;7 +|08/01/2022 06:38:15| RIP +|08/01/2022 06:38:16| |DUCE NOOOOOOOOOOOO ;_;7| +|08/01/2022 06:38:17| MOGGED +|08/01/2022 06:38:18| ducebros...... +|08/01/2022 06:38:18| |FUCK ALLICE| +|08/01/2022 06:38:18| DUCE +|08/01/2022 06:38:19| DUUUUUCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 06:38:20| REKT +|08/01/2022 06:38:20| CHISAI +|08/01/2022 06:38:21| |I CANT BELIEVE DUCE IS FUCKING DEAD| +|08/01/2022 06:38:21| ;___;7 +|08/01/2022 06:38:21| |oh no........| +|08/01/2022 06:38:21| VROOOOOOOOM +|08/01/2022 06:38:22| ??????????????????????? +|08/01/2022 06:38:22| |wtf is going on| +|08/01/2022 06:38:24| |I HATE THE ANTICHRIST| +|08/01/2022 06:38:24| RUMIIIIIIIIIIIIIIII +|08/01/2022 06:38:24| |WHO /o/ HERE?!| +|08/01/2022 06:38:24| VROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM +|08/01/2022 06:38:25| HOW +|08/01/2022 06:38:25| jobbed +|08/01/2022 06:38:25| |Leopon straight up modding their speed wagon| +|08/01/2022 06:38:25| |ALICE KILLED DUCE| +|08/01/2022 06:38:25| |GODDAMNIT THIS MOVE IS SO FUCKING GOOD| +|08/01/2022 06:38:26| D-DUCEBROS?! +|08/01/2022 06:38:27| |GAS GAS GAS| +|08/01/2022 06:38:27| >VTOL +|08/01/2022 06:38:28| |BASED /O/| +|08/01/2022 06:38:29| GASGAGAS +|08/01/2022 06:38:29| |>WAR THUNDER BE LIKE| +|08/01/2022 06:38:31| |LIMITERS REMOVED| +|08/01/2022 06:38:32| |WHEN VTEC KICKS IN YO| +|08/01/2022 06:38:32| *MOVIE +|08/01/2022 06:38:33| |Based cheaters| +|08/01/2022 06:38:34| |NIGHT OF FIRE| +|08/01/2022 06:38:35| |dvce immortal| +|08/01/2022 06:38:35| 0_0 +|08/01/2022 06:38:37| |DUCE IS FUCKING DEAD| +|08/01/2022 06:38:38| AUTODUMMIES +|08/01/2022 06:38:38| |YEAH YEAH YEAH| +|08/01/2022 06:38:39| rip +|08/01/2022 06:38:40| |GAS GAS GAS| +|08/01/2022 06:38:40| |YOU'LL NEVER CATCH ME KRABS | +|08/01/2022 06:38:40| NOOOOOOO +|08/01/2022 06:38:40| |VTEC JUST KICKED IN| +|08/01/2022 06:38:41| |RUNNING IN THE 90S| +|08/01/2022 06:38:42| |>1000 shot of NOS| +|08/01/2022 06:38:50| |how soft are katyushas thighs?| +|08/01/2022 06:38:53| |Time for kino| +|08/01/2022 06:38:53| |So who is /our/ tank now, now Duce is daed?| +|08/01/2022 06:38:54| |so much dorifto| +|08/01/2022 06:38:54| |FINAL DESTINATION| +|08/01/2022 06:38:54| |ERIKA AND KAT DEAD| +|08/01/2022 06:38:55| |LIKE BUTTER| +|08/01/2022 06:38:55| |THIS IS IT| +|08/01/2022 06:38:56| |ENTER KINO| +|08/01/2022 06:39:00| |SOUND DESIGN KINO| +|08/01/2022 06:39:01| |KINO INCOMING| +|08/01/2022 06:39:03| |so it's like a 5v1 now| +|08/01/2022 06:39:03| |ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE | +|08/01/2022 06:39:04| |ARE YOU READY FOR KINO?| +|08/01/2022 06:39:04| |BULLITT TIME| +|08/01/2022 06:39:04| |OH SHITTTTTTTTTTT| +|08/01/2022 06:39:05| >buffering +|08/01/2022 06:39:05| |All of the Russians dying for Katyusha to get one(1) kill| +|08/01/2022 06:39:06| |TIME FOR MORE KINO HAHAHAH| +|08/01/2022 06:39:07| |Worst scene in the movie| +|08/01/2022 06:39:09| |ducebros... time to go home| +|08/01/2022 06:39:09| |Imagine being Eika and Katyusha and getting a 3x1 exchange| +|08/01/2022 06:39:09| |V2 my beloved | +|08/01/2022 06:39:10| |Final boss| +|08/01/2022 06:39:12| |3 v 2| +|08/01/2022 06:39:12| |SOund porn time| +|08/01/2022 06:39:12| |uoooooooh tank turret sound| +|08/01/2022 06:39:13| |get ready for shitty cgi| +|08/01/2022 06:39:14| |YOU ALREADY KNOW WHAT TIME IT ISSS| +|08/01/2022 06:39:15| |How can they pack so much Kino into a single movie?| +|08/01/2022 06:39:15| |Give me some hype SOT| +|08/01/2022 06:39:16| >prefire +|08/01/2022 06:39:19| |Alice is pretty cute and funny| +|08/01/2022 06:39:20| |dat sfx| +|08/01/2022 06:39:20| |Gimme some music| +|08/01/2022 06:39:21| |ORARI BROS I DON'T THINK WILL BE WIN THIS ONE | +|08/01/2022 06:39:26| |serious buffering| +|08/01/2022 06:39:26| >buffering +|08/01/2022 06:39:27| |Faggot shit silence art piece| +|08/01/2022 06:39:29| |GIVE OORAI YOUR ENERGY \O/| +|08/01/2022 06:39:30| |where have i seen this before| +|08/01/2022 06:39:32| |damm buffering| +|08/01/2022 06:39:33| BOKO +|08/01/2022 06:39:35| |did saunders get any kills?| +|08/01/2022 06:39:36| >buffering +|08/01/2022 06:39:42| |wtf why no music| +|08/01/2022 06:39:42| |University has this in the bag| +|08/01/2022 06:39:43| |kino moment| +|08/01/2022 06:39:44| |DIRECTOR! WE FORGOT THE BGM| +|08/01/2022 06:39:48| |LETS GO GLOBOHOMO TEAM| +|08/01/2022 06:39:50| KINO +|08/01/2022 06:39:50| |Naomi got some| +|08/01/2022 06:39:51| |too serious for music| +|08/01/2022 06:39:54| |this kino scene| +|08/01/2022 06:39:57| |the tensions is great without the music| +|08/01/2022 06:39:58| |How the heck did the French survive as the 2nd last uni tank?| +|08/01/2022 06:39:59| HEADSHOT +|08/01/2022 06:40:01| |the BGM is the beautiful sound of steel on steel| +|08/01/2022 06:40:01| wew +|08/01/2022 06:40:01| |hand on the shoulder kino| +|08/01/2022 06:40:01| Kino +|08/01/2022 06:40:03| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:40:03| |GOT YA BITCH| +|08/01/2022 06:40:03| |EAT SHIT UNIVERSITY| +|08/01/2022 06:40:04| |I actually really like that they just do the sound effects here| +|08/01/2022 06:40:04| KINO +|08/01/2022 06:40:05| |how did she know they where getting aimed at from behind| +|08/01/2022 06:40:12| |mad drifto| +|08/01/2022 06:40:13| |PERSHING BTFO| +|08/01/2022 06:40:14| |makes it seem super focused| +|08/01/2022 06:40:15| GONG +|08/01/2022 06:40:18| |These sound effects are fucking kino| +|08/01/2022 06:40:19| GOTTEEEEM +|08/01/2022 06:40:21| |christ maho| +|08/01/2022 06:40:21| DEATH +|08/01/2022 06:40:21| CABON +|08/01/2022 06:40:22| WEW +|08/01/2022 06:40:23| |they really abused phyiscs in this| +|08/01/2022 06:40:23| DECAPITATED +|08/01/2022 06:40:24| |bgm isn't necessary to be on 100% of the time| +|08/01/2022 06:40:24| REKT +|08/01/2022 06:40:26| |WYA MR MERCEDES| +|08/01/2022 06:40:27| |Being a guppie means being partially psychic| +|08/01/2022 06:40:27| |Holy shit Maho| +|08/01/2022 06:40:28| DEAD +|08/01/2022 06:40:28| |maho gets decapitated| +|08/01/2022 06:40:30| |REKT REKT REKT| +|08/01/2022 06:40:34| SISTERHOOD +|08/01/2022 06:40:36| NINA +|08/01/2022 06:40:37| |bozo m26| +|08/01/2022 06:40:37| |truck commies| +|08/01/2022 06:40:37| |Serious whiplash damage there| +|08/01/2022 06:40:39| ..... +|08/01/2022 06:40:40| |THAT BOAT JUST KICKED A +50 TON TANK| +|08/01/2022 06:40:40| |INSANE OUTPLAYS| +|08/01/2022 06:40:40| |guys, Ooarai might win| +|08/01/2022 06:40:42| |BGM is back| +|08/01/2022 06:40:43| |>carbon coating more like cabron coating| +|08/01/2022 06:40:44| |off to the camps| +|08/01/2022 06:40:47| |2 v 1, Ourai bros we got this| +|08/01/2022 06:40:48| >might +|08/01/2022 06:40:49| |YO IS OORAI GONNA WIN| +|08/01/2022 06:40:50| Kino +|08/01/2022 06:40:50| |shiho still refuses to let miho back into the house| +|08/01/2022 06:40:55| |ALAMO | +|08/01/2022 06:40:57| |Oarai might just win somehow...| +|08/01/2022 06:40:58| |Nice driving skills| +|08/01/2022 06:40:59| |>cabron coating kek| +|08/01/2022 06:41:00| |TANK JOUSTING| +|08/01/2022 06:41:02| |GIVE GALAX'S SERVERS ENERGY \O/| +|08/01/2022 06:41:03| |COMIN IN HOT| +|08/01/2022 06:41:03| |alicebros what's our game plan| +|08/01/2022 06:41:04| |alice getting double futa cock| +|08/01/2022 06:41:06| |LETS GO ALICE CUNNY| +|08/01/2022 06:41:08| \O/ +|08/01/2022 06:41:09| |HERE WE GO| +|08/01/2022 06:41:09| \o/ +|08/01/2022 06:41:09| |University bros, did we get too cocky?| +|08/01/2022 06:41:11| | \o/ \o/ \o/| +|08/01/2022 06:41:12| \o/ +|08/01/2022 06:41:13| BUFFERING +|08/01/2022 06:41:13| \o/ +|08/01/2022 06:41:14| |GAMBARE, SERVER-CHAN| +|08/01/2022 06:41:14| >buffering +|08/01/2022 06:41:15| BUFFERAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:41:15| |\o/ JUST STARTED BUFFERING FOR ME| +|08/01/2022 06:41:17| DRIFT +|08/01/2022 06:41:19| AAAAAAAAAAAAAA +|08/01/2022 06:41:20| |SO THIS IS THE POWER OF CUNNY| +|08/01/2022 06:41:20| >buffering +|08/01/2022 06:41:21| \o/ +|08/01/2022 06:41:21| |BUFFERING YOU FUCK| +|08/01/2022 06:41:23| \o/ +|08/01/2022 06:41:23| |>cunny vs JK THE FINAL BATTLE| +|08/01/2022 06:41:25| |THE MOST INTENSE FIGHT OF ALL| +|08/01/2022 06:41:26| |JET ENGINES| +|08/01/2022 06:41:26| |FUCK EM UP SERVERS!| +|08/01/2022 06:41:27| GALAAAAAAAAAAAAAAAAAAAAAX +|08/01/2022 06:41:29| |this is like a 12 year old doing all this | +|08/01/2022 06:41:29| | \o/ \o/ \o/| +|08/01/2022 06:41:29| |\O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ | +|08/01/2022 06:41:30| \o/ +|08/01/2022 06:41:31| >BUFFERING +|08/01/2022 06:41:31| fubbering +|08/01/2022 06:41:32| |SO MUCH BUFFERING AAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 06:41:32| |SERVERS ARE BACK| +|08/01/2022 06:41:32| |track still intact| +|08/01/2022 06:41:34| |CUNNY TO STRONG THAT ITS BUFFFERING| +|08/01/2022 06:41:36| |STREAM CAN'T HANDLE THIS TANK BATTLE| +|08/01/2022 06:41:37| |UN GLOBOHOMO TEAM WILL WIN| +|08/01/2022 06:41:37| |They are trying to l;ag switch us bros| +|08/01/2022 06:41:38| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 06:41:39| |SHUT IT DOWN| +|08/01/2022 06:41:40| |SHOT BOUNCED| +|08/01/2022 06:41:41| \m/ +|08/01/2022 06:41:41| |TAKE MY ENERGY MIHO| +|08/01/2022 06:41:42| \o/ +|08/01/2022 06:41:43| |WE DIDN'T EVEN SCRATCH THEM| +|08/01/2022 06:41:44| \o/ +|08/01/2022 06:41:46| |who is supposed to be seeing her hand signals?| +|08/01/2022 06:41:46| KINO +|08/01/2022 06:41:47| |>ACTUAL ROCKET| +|08/01/2022 06:41:48| |WOW CHEATER| +|08/01/2022 06:41:49| ???????? +|08/01/2022 06:41:50| \m/ +|08/01/2022 06:41:51| |COME FLY WITH ME| +|08/01/2022 06:41:53| WTF +|08/01/2022 06:41:53| |That was just unnecessary lmao| +|08/01/2022 06:41:53| \O? +|08/01/2022 06:41:54| |KINO KINO KINO| +|08/01/2022 06:41:54| |>a fucking rocket| +|08/01/2022 06:41:54| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:41:55| |RUBE GOLBERG?| +|08/01/2022 06:41:56| |HERE COMES THE NUKEE| +|08/01/2022 06:41:58| |WHERE IS MY WIFE ORANGE PEKOE?| +|08/01/2022 06:41:58| |KINO TIME| +|08/01/2022 06:42:00| |NOT THE WHEEL| +|08/01/2022 06:42:01| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:42:06| AHAHAHAHAHAHAHA +|08/01/2022 06:42:07| |Pekoe's dead anon| +|08/01/2022 06:42:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:42:09| |ANTICHRIST BROS? I DONT FEEL SO GOOD| +|08/01/2022 06:42:11| Bear +|08/01/2022 06:42:14| |that bear wins the match| +|08/01/2022 06:42:16| |FPS POV| +|08/01/2022 06:42:17| |die joe boo| +|08/01/2022 06:42:17| |saved by boco| +|08/01/2022 06:42:17| |plot twist activated| +|08/01/2022 06:42:18| |PoV you are an autist| +|08/01/2022 06:42:21| |FIRST PERSON KINO| +|08/01/2022 06:42:21| F[S +|08/01/2022 06:42:23| KINOOOOO +|08/01/2022 06:42:25| >boko +|08/01/2022 06:42:28| |activate armor plot| +|08/01/2022 06:42:30| |BOKO HALAL| +|08/01/2022 06:42:31| |Boko literally saves the day| +|08/01/2022 06:42:32| |ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE AL| +|08/01/2022 06:42:33| |KINO IS BACK ON THE MENU BOYS| +|08/01/2022 06:42:36| |Bullshit on that shot, that woulda penned| +|08/01/2022 06:42:40| |fuck em up boko| +|08/01/2022 06:42:43| |that Tiger I is just sex| +|08/01/2022 06:42:44| |CUNNY CUNNY CUNNY CUNNY| +|08/01/2022 06:42:48| |POV shots are kino| +|08/01/2022 06:42:48| |AHHHHH SAVE ME BOKO MAN| +|08/01/2022 06:42:50| |GANBARE BOKO!| +|08/01/2022 06:42:51| |I CAN'T BELIEVE I TURNED INTO A LITTLE GIRL| +|08/01/2022 06:42:53| |STOP ITS BOKO STOP PLS DON'T HARM HIM HES JUST A BOKO| +|08/01/2022 06:42:53| |GO CUNNY GO BOKO GO UN| +|08/01/2022 06:42:54| |O MY BEAR RIDE| +|08/01/2022 06:42:54| |Boko trolling again. Who side are you really on Boko?| +|08/01/2022 06:42:54| KINO +|08/01/2022 06:42:54| |BOCO TRUCE| +|08/01/2022 06:42:56| |PENETRATE ALICE WITH A 17 POUNDER| +|08/01/2022 06:42:56| |UOOOOOOOOH IMPREGNATE ALICE| +|08/01/2022 06:42:57| |thank you boko| +|08/01/2022 06:42:57| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:42:58| BOKO +|08/01/2022 06:42:58| |BOKO NO| +|08/01/2022 06:42:58| ! +|08/01/2022 06:42:58| |BEAR SAVE| +|08/01/2022 06:42:59| boko! +|08/01/2022 06:42:59| BOKO +|08/01/2022 06:43:00| |KAY IS BAE| +|08/01/2022 06:43:00| |O MY RUBBER BEAR| +|08/01/2022 06:43:01| BOKOOOOOOO +|08/01/2022 06:43:01| boko +|08/01/2022 06:43:03| BOKO +|08/01/2022 06:43:03| BOKO +|08/01/2022 06:43:03| Autism +|08/01/2022 06:43:03| D: +|08/01/2022 06:43:05| BOKO +|08/01/2022 06:43:05| BOKO +|08/01/2022 06:43:05| |BEAR VICTORY| +|08/01/2022 06:43:06| |BOKO SAVES THE DAY| +|08/01/2022 06:43:06| BOKOMVP +|08/01/2022 06:43:06| |BOKO MVP| +|08/01/2022 06:43:06| BOCO +|08/01/2022 06:43:07| |BOCO MORE POWERFUL THAN TANKS| +|08/01/2022 06:43:08| Kek +|08/01/2022 06:43:09| KINO +|08/01/2022 06:43:09| |boko sides with miho| +|08/01/2022 06:43:09| |why did the gunner hesitate?| +|08/01/2022 06:43:10| |THAT BOKO ISN'T CARBON COATED | +|08/01/2022 06:43:10| |OH MY RUBBER BOKO| +|08/01/2022 06:43:11| 3fps +|08/01/2022 06:43:12| |BOCO HALAL| +|08/01/2022 06:43:13| |THIS IS IT LADS| +|08/01/2022 06:43:14| |Time to finish this| +|08/01/2022 06:43:14| |actual autism| +|08/01/2022 06:43:16| |BEAR > WINNING| +|08/01/2022 06:43:17| |boko cunny mvp| +|08/01/2022 06:43:17| KINO +|08/01/2022 06:43:18| |GODDESS OF VICTORY BOKO| +|08/01/2022 06:43:19| |BOKO > DVCE| +|08/01/2022 06:43:20| KINO +|08/01/2022 06:43:21| |surely, the gunner didnt even see boko?| +|08/01/2022 06:43:21| |THEY HAVE THE HIGHGROUND| +|08/01/2022 06:43:24| |I HAVE THE HIGH GROUND| +|08/01/2022 06:43:24| |13 year old| +|08/01/2022 06:43:25| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:43:26| |ITS OVER ANAKIN| +|08/01/2022 06:43:27| |Just shoot them from there| +|08/01/2022 06:43:28| JOUST +|08/01/2022 06:43:29| |REV IT UP| +|08/01/2022 06:43:29| KINOOOOOOOOOOOO +|08/01/2022 06:43:30| |KINO TIMEEEEEEEEEEEEE| +|08/01/2022 06:43:31| |IT'S OVER ALICE, WE HAVE THE HIGH GROUND| +|08/01/2022 06:43:31| |Who's the number one boko fan now bitch?| +|08/01/2022 06:43:32| KINO +|08/01/2022 06:43:32| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:43:32| |ITS OVER ALICE WE HAVE THE HIGH GROUND| +|08/01/2022 06:43:33| VROOOOOM +|08/01/2022 06:43:35| BUFFERING +|08/01/2022 06:43:35| |NO WAY| +|08/01/2022 06:43:36| |They're driving directly at you| +|08/01/2022 06:43:36| |That Maho sad face. I can't| +|08/01/2022 06:43:37| |literal autism| +|08/01/2022 06:43:37| |IT'S OVER ERIKA, WE HAVE THE HIGH GROUND| +|08/01/2022 06:43:39| |HERE COMES THE KINO| +|08/01/2022 06:43:39| |CANNON SUPPORT| +|08/01/2022 06:43:40| |GALAXY BRAIN| +|08/01/2022 06:43:41| |Top 10 anime betrayal| +|08/01/2022 06:43:41| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:43:41| WEW +|08/01/2022 06:43:42| COCK +|08/01/2022 06:43:43| |ANKOU HAYAI| +|08/01/2022 06:43:44| GUBO??? +|08/01/2022 06:43:44| BOOSTO +|08/01/2022 06:43:44| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:43:44| BOOSTO +|08/01/2022 06:43:46| KINO +|08/01/2022 06:43:49| |i wish maho would fire a blank at my ass| +|08/01/2022 06:43:49| BTFO +|08/01/2022 06:43:49| KINOKINOKINO +|08/01/2022 06:43:49| |SLINGSHOT ENGAGED| +|08/01/2022 06:43:50| |HOLY KINO| +|08/01/2022 06:43:50| |GOD HOLY SHIT| +|08/01/2022 06:43:51| KINO +|08/01/2022 06:43:52| KINO +|08/01/2022 06:43:52| KINO +|08/01/2022 06:43:53| KINOOO +|08/01/2022 06:43:53| |Centurions aint shit but hoes n tricks| +|08/01/2022 06:43:53| KINO +|08/01/2022 06:43:53| |HORYY SHITTTT| +|08/01/2022 06:43:53| |HYYYYYYYYYYYYPE AS FUCK| +|08/01/2022 06:43:54| kino +|08/01/2022 06:43:54| BTFO +|08/01/2022 06:43:54| |THE FUCKING SFX| +|08/01/2022 06:43:54| kino +|08/01/2022 06:43:55| KINOGRAPHY +|08/01/2022 06:43:56| KINOOOO +|08/01/2022 06:43:56| |WE DID IT BROS | +|08/01/2022 06:43:56| |HOLY KINO| +|08/01/2022 06:43:56| Kino +|08/01/2022 06:43:57| VICTORY +|08/01/2022 06:43:57| |SHOOTING YOURSELF| +|08/01/2022 06:43:58| KINO +|08/01/2022 06:43:58| UOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:43:59| KINOOOOOOO +|08/01/2022 06:44:00| KINO +|08/01/2022 06:44:00| |KAY OH| +|08/01/2022 06:44:00| |I AM THE PROJECTILE | +|08/01/2022 06:44:01| |NOOOOO CUNNY LOSE| +|08/01/2022 06:44:02| KINOOOOOOOOOOOO +|08/01/2022 06:44:04| SEGGSSSSSSS +|08/01/2022 06:44:05| |Dangerously kino| +|08/01/2022 06:44:05| |GET FUCKED (UN)IVERSITY| +|08/01/2022 06:44:07| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:44:08| |SHOOT IT IN ME ONEE-CHAN| +|08/01/2022 06:44:09| |this is war| +|08/01/2022 06:44:11| |Miho is a fucking genius| +|08/01/2022 06:44:12| |gg boyos| +|08/01/2022 06:44:13| |miho taking it from behind| +|08/01/2022 06:44:14| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:44:17| |RIP T28| +|08/01/2022 06:44:17| |TIger last man standing| +|08/01/2022 06:44:21| |WAR. WAR NEVER CHANGES| +|08/01/2022 06:44:22| |I LOVE THE ANTICHRIST| +|08/01/2022 06:44:23| MIPORIN +|08/01/2022 06:44:24| |IMPREGNATE JUDGE| +|08/01/2022 06:44:25| ENDSIEG +|08/01/2022 06:44:25| |HOLY FUCK OOARAI WON!?| +|08/01/2022 06:44:27| |LETS FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 06:44:27| YOSHAAAAAA +|08/01/2022 06:44:29| |if only it didn't stop to buffer 4 times during that scene| +|08/01/2022 06:44:29| YOSHAAAAAAA +|08/01/2022 06:44:29| OOOOJOUUUUU +|08/01/2022 06:44:29| |MEXT BTFO| +|08/01/2022 06:44:30| |I HAVE BEEN SAVED I HAVE BEEN SAVED| +|08/01/2022 06:44:30| |WOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOARIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +|08/01/2022 06:44:30| 88888888888888888888888888888888888888888888888888888888888888888888888888888 +|08/01/2022 06:44:31| \o/ +|08/01/2022 06:44:31| Oaraiwinslol +|08/01/2022 06:44:31| |OORAI MEMED TO VICTORY ONCE AGAIN| +|08/01/2022 06:44:32| |ooaraibros... we won...| +|08/01/2022 06:44:32| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:44:32| YOSH +|08/01/2022 06:44:32| |MEXT bros.....| +|08/01/2022 06:44:33| YOSHAAA +|08/01/2022 06:44:33| |EI EI OUUUUU| +|08/01/2022 06:44:33| |CUTE ERIKA| +|08/01/2022 06:44:33| 88888888888888888888888888888888888888888888888 +|08/01/2022 06:44:34| YOSHAAAAAAAAAAa +|08/01/2022 06:44:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:44:35| DUCE +|08/01/2022 06:44:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:44:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:44:35| |Can't believe I didn't get the university joke until now| +|08/01/2022 06:44:35| WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:44:36| |WE DID BOYS| +|08/01/2022 06:44:36| |Miho's a mad lad. Ain't disqualified if flag ain't out yet.| +|08/01/2022 06:44:36| |THEY FUCKING DID IT| +|08/01/2022 06:44:36| |ANTICHRIST FAGS BTFO| +|08/01/2022 06:44:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:44:37| WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOW +|08/01/2022 06:44:37| BANZAI +|08/01/2022 06:44:37| XOROSHO +|08/01/2022 06:44:38| |/fit/ gamers| +|08/01/2022 06:44:38| BANZAI +|08/01/2022 06:44:38| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:44:38| BANZAI +|08/01/2022 06:44:39| |LETS MUSCLE| +|08/01/2022 06:44:40| BANZAI +|08/01/2022 06:44:40| |We won?| +|08/01/2022 06:44:41| VODKA +|08/01/2022 06:44:41| YAY +|08/01/2022 06:44:41| 888888888888888888888888888888888888 +|08/01/2022 06:44:42| |GLOBOHOMO TEAM BTFO| +|08/01/2022 06:44:42| BANZAI +|08/01/2022 06:44:42| males +|08/01/2022 06:44:43| |I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +|08/01/2022 06:44:43| URA +|08/01/2022 06:44:43| |HORROR SHOW| +|08/01/2022 06:44:44| YATTA +|08/01/2022 06:44:44| |klara with vodka lol| +|08/01/2022 06:44:44| |THE BEST| +|08/01/2022 06:44:44| |\o/ BANZAI| +|08/01/2022 06:44:45| |Mext bros....| +|08/01/2022 06:44:46| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:44:46| MEXTbros... +|08/01/2022 06:44:46| |Globohomo bros....| +|08/01/2022 06:44:46| |LETS FUCKING GOOOOOOOOOOOOOOOOO| +|08/01/2022 06:44:46| >non-alcoholic +|08/01/2022 06:44:46| MOMO +|08/01/2022 06:44:47| |WE WON OOARI BROS| +|08/01/2022 06:44:47| Anzu +|08/01/2022 06:44:47| |LOL BUFFERING| +|08/01/2022 06:44:48| |MEXT LADS WTFFFFF???| +|08/01/2022 06:44:48| |MEXT BTFO| +|08/01/2022 06:44:48| |was it vodka?| +|08/01/2022 06:44:49| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:44:49| BANZAI +|08/01/2022 06:44:49| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:44:49| |SURELY MOMO WILL BE ABLE TO GRADUATE AFTER THIS| +|08/01/2022 06:44:52| YATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:44:52| |TAKE SHOTS NOW!| +|08/01/2022 06:44:52| |MEXT BROS NEXT TIME| +|08/01/2022 06:44:52| |BASED MOVIE| +|08/01/2022 06:44:53| NORIKO<3 +|08/01/2022 06:44:53| |cry momo cry| +|08/01/2022 06:44:54| YATTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:44:55| |Guys, we did it....| +|08/01/2022 06:44:56| |I want to rape Rosehip's driver| +|08/01/2022 06:44:57| |NO GLOBOHOMO| +|08/01/2022 06:44:58| URAAAAAAA +|08/01/2022 06:44:58| |Rosehip is sad there because she isn't going fast| +|08/01/2022 06:44:58| KINOOOOOOOO +|08/01/2022 06:45:02| |a fycking rubber bear| +|08/01/2022 06:45:02| |TAKE SHOTS NOW!| +|08/01/2022 06:45:02| |THEY CAN"T KEEP GETTING AWAY WITH THIS | +|08/01/2022 06:45:04| |we didit bros| +|08/01/2022 06:45:04| |don't celebrate yet momo it's still over for you| +|08/01/2022 06:45:04| |MEXT guy thinking how hes gonna give us more content| +|08/01/2022 06:45:04| |Now everyone can get into a good college!| +|08/01/2022 06:45:05| KINOOOOOOOOOOOOOOOOO +|08/01/2022 06:45:08| |ANZU UPSKIRT| +|08/01/2022 06:45:08| |WHAT A GOOD MOMENT TO END THE SERIES ON OH WAIT| +|08/01/2022 06:45:10| |will shiho let miho back in the house now?| +|08/01/2022 06:45:10| Upskirt +|08/01/2022 06:45:11| |Ankou been through hell| +|08/01/2022 06:45:11| GIWTWM +|08/01/2022 06:45:11| |woah anzu| +|08/01/2022 06:45:12| UOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 06:45:12| MAHOOOOOO +|08/01/2022 06:45:13| |ANZU CUNNY| +|08/01/2022 06:45:13| NISHIZUMICHAN +|08/01/2022 06:45:14| |GOD I WISH I WERE MIHO| +|08/01/2022 06:45:14| |MEXT bros... we got too cocky| +|08/01/2022 06:45:14| |LEG LOCK| +|08/01/2022 06:45:14| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:45:14| |god I wish that were me| +|08/01/2022 06:45:15| Cunny! +|08/01/2022 06:45:17| |don't cwy, Momo| +|08/01/2022 06:45:17| |This will have no effect on Momo's grades| +|08/01/2022 06:45:17| |This OST is beautiful| +|08/01/2022 06:45:18| |>Anzu hug| +|08/01/2022 06:45:19| giwtwm +|08/01/2022 06:45:19| |BEST ANZU| +|08/01/2022 06:45:21| SUBTEXTSUBTEXTSUBTEXTSUBTEXTSUBTEXTSUBTEXT +|08/01/2022 06:45:22| |IMAGINE | +|08/01/2022 06:45:22| |ANZU LEG LOCK UOHHHHHH| +|08/01/2022 06:45:23| |I want to be pounched by Anzu| +|08/01/2022 06:45:24| Congratulations! +|08/01/2022 06:45:25| |OMEDETOU SHINJI| +|08/01/2022 06:45:25| |a fucking bear| +|08/01/2022 06:45:26| CUTE +|08/01/2022 06:45:26| |NEVER EVER| +|08/01/2022 06:45:29| OMEDETOU +|08/01/2022 06:45:29| |WHY IS IT SO KINO BROS???| +|08/01/2022 06:45:29| Autism +|08/01/2022 06:45:31| ENTER +|08/01/2022 06:45:32| CUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 06:45:32| |ARISU ;_;| +|08/01/2022 06:45:33| |DORK ALERT| +|08/01/2022 06:45:34| boco! +|08/01/2022 06:45:34| |I want Anzu to hug me like that...| +|08/01/2022 06:45:34| BOKO +|08/01/2022 06:45:35| |boko moment boko moment| +|08/01/2022 06:45:36| autism +|08/01/2022 06:45:36| BOKO +|08/01/2022 06:45:36| |>you will never get legged lock by anzu| +|08/01/2022 06:45:36| CUTE +|08/01/2022 06:45:36| bokobros... +|08/01/2022 06:45:36| |a fucking BOKO| +|08/01/2022 06:45:37| Arisu.... +|08/01/2022 06:45:37| UOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 06:45:37| |Bear mount| +|08/01/2022 06:45:37| |WHAT DA BEAR DOIN| +|08/01/2022 06:45:38| CUUUUUUUUUNNNNNNNNNNYYYYYYYYYY +|08/01/2022 06:45:38| BOKO?! +|08/01/2022 06:45:38| AUTISM +|08/01/2022 06:45:39| TuT +|08/01/2022 06:45:39| |Enter autismo| +|08/01/2022 06:45:39| |Autism incarnate| +|08/01/2022 06:45:39| |Thanks Boko| +|08/01/2022 06:45:39| |friends, you kneel to no one| +|08/01/2022 06:45:40| |MY STEED| +|08/01/2022 06:45:40| |Was it autism?| +|08/01/2022 06:45:41| arisu... +|08/01/2022 06:45:41| |CUTE AUTIST| +|08/01/2022 06:45:42| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:45:42| autism +|08/01/2022 06:45:43| |BOKO HARAM| +|08/01/2022 06:45:44| UOOOOOOOOOOOOOOOH +|08/01/2022 06:45:44| UOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:45:44| ARISU +|08/01/2022 06:45:45| WITNESSED +|08/01/2022 06:45:46| |ALICE CUTE| +|08/01/2022 06:45:47| |NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO | +|08/01/2022 06:45:48| |Fuck that stupid bear autism| +|08/01/2022 06:45:48| |UOOOOOOOOOHHHHHHHHHHHHHHHHHHHHh ;_;| +|08/01/2022 06:45:48| |CUTE AUTISM| +|08/01/2022 06:45:49| |I KNEEL| +|08/01/2022 06:45:51| |BOKO HARAM| +|08/01/2022 06:45:51| |she staring at booba| +|08/01/2022 06:45:51| |SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT| +|08/01/2022 06:45:52| |SAVE THE MUSEUM| +|08/01/2022 06:45:53| |BEAR VOR| +|08/01/2022 06:45:53| |BOKO SHOULD HAVE WON| +|08/01/2022 06:45:53| BOOOOKKKOOOOOOOOO +|08/01/2022 06:45:54| CUTE +|08/01/2022 06:45:54| |HALF HER SIZE| +|08/01/2022 06:45:54| Alicetism +|08/01/2022 06:45:55| |the boko museum is FUCKED| +|08/01/2022 06:45:55| AUTISM +|08/01/2022 06:45:56| |I KNEEL| +|08/01/2022 06:45:56| |GET THAT SHIT OUTTA MY FACE| +|08/01/2022 06:45:57| |Alice is for uwooooohh| +|08/01/2022 06:45:57| ????????/ +|08/01/2022 06:45:57| |CUTE ALICE | +|08/01/2022 06:45:58| |aw my heart| +|08/01/2022 06:45:58| :DDDDDDDDDDD +|08/01/2022 06:45:58| BOOBS +|08/01/2022 06:45:59| |DEFEAT MEANS FRIENDSHIP| +|08/01/2022 06:45:59| |RARE MIHO IS GIVEN| +|08/01/2022 06:45:59| |BERGELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:45:59| |Is it the uniform or did Duce behind look bigger?| +|08/01/2022 06:46:00| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:00| |CUTE AUTIST| +|08/01/2022 06:46:01| cute +|08/01/2022 06:46:02| |a fucking bear| +|08/01/2022 06:46:03| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:46:03| |UOOOOO BLUSH| +|08/01/2022 06:46:04| Benis +|08/01/2022 06:46:05| /////////////////////////////// +|08/01/2022 06:46:06| |13 years old| +|08/01/2022 06:46:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:08| |Participation Medal of Honour| +|08/01/2022 06:46:08| |arisu a cute, CUUUUUUUUUUUUUUUUUUUUUUUUUUUTE| +|08/01/2022 06:46:09| ;_;7 +|08/01/2022 06:46:09| |CUTE ALICE| +|08/01/2022 06:46:10| HOBROS +|08/01/2022 06:46:10| 😭😭😭 +|08/01/2022 06:46:10| |NO STEAKS| +|08/01/2022 06:46:16| :DDDDDDDDDDD +|08/01/2022 06:46:16| |FINNS :DDDDDDDDD| +|08/01/2022 06:46:16| :DDDD +|08/01/2022 06:46:17| :DDDDDDDD +|08/01/2022 06:46:17| :DDDDDDD +|08/01/2022 06:46:19| benis +|08/01/2022 06:46:19| |FUG :DDDDDDD| +|08/01/2022 06:46:19| :DDDDDDDDD +|08/01/2022 06:46:20| |REMATCH CONFIRMED| +|08/01/2022 06:46:20| :DDDDDD +|08/01/2022 06:46:20| :DDDDDDDDDDDDDDDDDDDDddddddd +|08/01/2022 06:46:20| |AAAAAAAA THIS ED ;_____;| +|08/01/2022 06:46:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:21| SEGGGGGGS +|08/01/2022 06:46:22| ::DDDDDDDDDDDDDD +|08/01/2022 06:46:22| |APOLOGIZE TO THE FINISH| +|08/01/2022 06:46:22| :DDDDDDDDDDD +|08/01/2022 06:46:22| :DDDDDDDDDDDDDDDDD +|08/01/2022 06:46:22| :DDDDDDDDDDDDDDD +|08/01/2022 06:46:22| TRÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +|08/01/2022 06:46:22| :DD +|08/01/2022 06:46:22| |My wife mika| +|08/01/2022 06:46:22| >f*nns +|08/01/2022 06:46:23| |nice boat| +|08/01/2022 06:46:23| :DDD +|08/01/2022 06:46:23| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:23| |ok fin darj| +|08/01/2022 06:46:23| |I hope Momo graduates| +|08/01/2022 06:46:23| EBIN +|08/01/2022 06:46:24| |ebin :dddd| +|08/01/2022 06:46:24| |OVA W H E N| +|08/01/2022 06:46:24| |fugg :DDD| +|08/01/2022 06:46:25| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:25| |FUCK IM OUT OF PISS BOTTLES| +|08/01/2022 06:46:26| |Daro :DDDD| +|08/01/2022 06:46:27| FINNS +|08/01/2022 06:46:27| |MOVIE 2 CONFIRMED| +|08/01/2022 06:46:28| ;_;7 +|08/01/2022 06:46:28| :DDDDDDDDDDDDD +|08/01/2022 06:46:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:29| |Oh God this is so sad seeing this Ending| +|08/01/2022 06:46:30| o7 +|08/01/2022 06:46:30| KINOKINOKINO +|08/01/2022 06:46:31| 888888888888888888888888888888888888888888888888888 +|08/01/2022 06:46:32| |HOLY KINO| +|08/01/2022 06:46:33| |NICE BOTE| +|08/01/2022 06:46:33| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:35| :DDDDDDDDD +|08/01/2022 06:46:35| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:35| :DDDDDDDD +|08/01/2022 06:46:35| |THIS IS THE END OH WAIT….| +|08/01/2022 06:46:36| |RATE IT| +|08/01/2022 06:46:36| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:46:36| |YEEEESSS MOVIE ED| +|08/01/2022 06:46:36| |too Kino| +|08/01/2022 06:46:37| |MVP WHEEL| +|08/01/2022 06:46:38| Q_Q +|08/01/2022 06:46:38| ED +|08/01/2022 06:46:41| |I just can't | +|08/01/2022 06:46:42| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:42| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:46:43| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:43| :) +|08/01/2022 06:46:43| ED +|08/01/2022 06:46:44| |piss break| +|08/01/2022 06:46:44| |Good stream lads| +|08/01/2022 06:46:44| |so for a while did you think this was the end of gup| +|08/01/2022 06:46:45| |best character| +|08/01/2022 06:46:45| |Honestly hate how sad the ending feels and sounds| +|08/01/2022 06:46:45| KINO +|08/01/2022 06:46:46| |THANK YOU WHEEL ;-;7| +|08/01/2022 06:46:47| |ITS OVER!| +|08/01/2022 06:46:48| |KINO ED| +|08/01/2022 06:46:49| |OTSUKARE FERRIS-CHAN| +|08/01/2022 06:46:50| KINO +|08/01/2022 06:46:50| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:51| :DDDDDDDDDDDDDDDD +|08/01/2022 06:46:52| | FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +|08/01/2022 06:46:53| |:) 8888888888888888888888888888888888| +|08/01/2022 06:46:54| |WHERE ARE THE ED CREDITS TL????| +|08/01/2022 06:46:55| |ANTICHRIST = LOST | +|08/01/2022 06:46:55| |>OWARI DA| +|08/01/2022 06:46:56| |BEAUTIFUL ENDING| +|08/01/2022 06:46:58| |it's over| +|08/01/2022 06:47:00| |Big Wheel is truly our greatest ally| +|08/01/2022 06:47:02| |piss taimu| +|08/01/2022 06:47:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:05| |Ending sounds peaceful after the climax fight| +|08/01/2022 06:47:06| |HELL YA FUCK THE ANTICHRIST| +|08/01/2022 06:47:08| |incest time???| +|08/01/2022 06:47:09| |>Der Film came out 7 years ago| +|08/01/2022 06:47:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:09| ;_________________; +|08/01/2022 06:47:11| |MIHO X MAHO FUTA SEX NONSTOP| +|08/01/2022 06:47:11| |Ribbon Warrior readalong next| +|08/01/2022 06:47:12| |what they talkin about| +|08/01/2022 06:47:14| |So kino...| +|08/01/2022 06:47:15| |THANK YOU GUP CREW FOR EXISTING| +|08/01/2022 06:47:15| MAHO +|08/01/2022 06:47:15| |INCEST CEREMONY| +|08/01/2022 06:47:15| |Next time I'll shoot it in you onee-chan| +|08/01/2022 06:47:18| gay +|08/01/2022 06:47:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:20| |Maho cute| +|08/01/2022 06:47:20| sovl... +|08/01/2022 06:47:21| |its already been 7 years...| +|08/01/2022 06:47:22| |I hope GuP never ends...| +|08/01/2022 06:47:22| gae +|08/01/2022 06:47:24| |My Maho wife| +|08/01/2022 06:47:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:26| |miho x maho time| +|08/01/2022 06:47:29| |I love this series so much| +|08/01/2022 06:47:31| |so much soul....| +|08/01/2022 06:47:31| |I FUCKING LOVE THIS SONG| +|08/01/2022 06:47:32| |We still have like 3 hours LETS GO| +|08/01/2022 06:47:33| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:34| |Probably talking about not being disowned by Shiho| +|08/01/2022 06:47:35| |maho more like AHO AHAHAHAHAHHAHAHAHAHAHAHAHAHAHAHAH| +|08/01/2022 06:47:37| |Who will continue the GuP legacy after the Finale?| +|08/01/2022 06:47:39| |SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX WITH HANA| +|08/01/2022 06:47:40| |BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +|08/01/2022 06:47:40| SOVL +|08/01/2022 06:47:40| |ENTA MISSION WHEN?| +|08/01/2022 06:47:40| |we'll get them next time mext bros| +|08/01/2022 06:47:41| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:41| |the end credits always hit me for some reason| +|08/01/2022 06:47:47| |2 more years for next OVA, stay strong guppers| +|08/01/2022 06:47:47| | O S T| +|08/01/2022 06:47:48| |I FUCKING LOVE THIS SONG| +|08/01/2022 06:47:50| |me flying the C5| +|08/01/2022 06:47:51| |i fucking love all u no homo| +|08/01/2022 06:47:52| |Oarai, Ibaraki's existence hinges on GuP's success| +|08/01/2022 06:47:53| #taberu +|08/01/2022 06:47:53| |Fuck me has it been 7 years?| +|08/01/2022 06:47:54| ?????????????????????????????????????????? +|08/01/2022 06:47:56| |USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +|08/01/2022 06:47:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:47:57| !!!!!!!!! +|08/01/2022 06:47:57| BURGS +|08/01/2022 06:47:57| BORG +|08/01/2022 06:47:58| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:48:00| |COMFY AMERICANS| +|08/01/2022 06:48:00| |BIG BITE| +|08/01/2022 06:48:00| |I WILL LEARN JAPANESE, I WILL WATCH DAS FINALE IN THEATERS| +|08/01/2022 06:48:01| USAUSAUSA +|08/01/2022 06:48:01| >burgers +|08/01/2022 06:48:02| |PUT THAT BURGER DOWN| +|08/01/2022 06:48:02| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:48:02| |best community| +|08/01/2022 06:48:02| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:48:03| |TAKESHI NO| +|08/01/2022 06:48:03| |SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT | +|08/01/2022 06:48:06| |Wake up and take the meds anon| +|08/01/2022 06:48:07| |OOMM OOOMM OOOMMMM| +|08/01/2022 06:48:07| |WHAT ARE WE SNACKIN ON TONIGHT FELLAS| +|08/01/2022 06:48:08| |TEA TIME| +|08/01/2022 06:48:10| |YOU WILL NOT DIE UNTIL GUP IS FINISHED| +|08/01/2022 06:48:10| |Kotobuki is fucking DEAD| +|08/01/2022 06:48:10| DEKINAI +|08/01/2022 06:48:12| |NOTHING ON THE DASH IT FUCKING OBSTRUCS VISION| +|08/01/2022 06:48:12| never +|08/01/2022 06:48:13| ?????????????????????????????????? +|08/01/2022 06:48:14| |soft katysuhsha| +|08/01/2022 06:48:14| CREPES +|08/01/2022 06:48:14| |Spank Naomi and Alisa Y/Y| +|08/01/2022 06:48:15| ????????????? +|08/01/2022 06:48:16| |ROSEHIP IS A DORK| +|08/01/2022 06:48:19| |ASSAM SICK OF THIS SHIT| +|08/01/2022 06:48:21| |DRINKING BOOZE MAKES THE GUPPIES CUTER| +|08/01/2022 06:48:23| |DARJFAG SPOTTED| +|08/01/2022 06:48:24| |CYKA BLYET| +|08/01/2022 06:48:25| |this is buffer hell, im out boys| +|08/01/2022 06:48:26| NONNA! +|08/01/2022 06:48:26| uoooooooooooooooooooooohhhhhhhhhhhhh +|08/01/2022 06:48:26| |MY WIFE, ROSEHIP| +|08/01/2022 06:48:27| |We're literally are going to wait 6-8 for the conclusion of the series lmao| +|08/01/2022 06:48:27| suya~ +|08/01/2022 06:48:29| |NONNO <3| +|08/01/2022 06:48:29| |PEKOE SEGGGGGGGSSSSS| +|08/01/2022 06:48:29| |Cute moms and child| +|08/01/2022 06:48:33| |Rukuriri jobbed and got zero(0) knockouts again| +|08/01/2022 06:48:39| |NO YOU STAY RIGHT HERE ANON| +|08/01/2022 06:48:40| |6-8 potatoes?| +|08/01/2022 06:48:43| |zero (o)?| +|08/01/2022 06:48:44| |I will be 40 when I watch das Finale's last episode| +|08/01/2022 06:48:45| |maho and her wife| +|08/01/2022 06:48:46| |WHAT IS LOVE| +|08/01/2022 06:48:47| |don't care erika lol| +|08/01/2022 06:48:48| |god damn it fine| +|08/01/2022 06:48:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:48:52| |SLEEP IS NOT AN OPTION| +|08/01/2022 06:48:53| |STFU WANI| +|08/01/2022 06:48:54| DVCE +|08/01/2022 06:48:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:48:56| |TOTSUGEKI | +|08/01/2022 06:48:56| |Sleepy Dorks| +|08/01/2022 06:48:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:48:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:48:58| TOTSUBAKAS +|08/01/2022 06:48:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:00| |Is it too much to ask for an antomotive club tanned tomboy waifu| +|08/01/2022 06:49:00| |WHAT IS LOVE, BABY DON'T HURT ME| +|08/01/2022 06:49:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:00| DVCE +|08/01/2022 06:49:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:03| |GG BOIS, LETS MEET BACK TO WATCH THE CONCLUSION IN 50 YEARS| +|08/01/2022 06:49:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:03| BANZAI +|08/01/2022 06:49:03| DVCE! +|08/01/2022 06:49:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:03| |WHAT IS DVCE| +|08/01/2022 06:49:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:04| |WHAT IS LOVE, BABY DON'T HURT ME| +|08/01/2022 06:49:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:05| |WHAT IS DUCE| +|08/01/2022 06:49:05| |NICE BOAT| +|08/01/2022 06:49:06| |WHAT IS LOVE| +|08/01/2022 06:49:06| |Worse track record compared tot he glorious Kah Veh-tan| +|08/01/2022 06:49:06| DVCE +|08/01/2022 06:49:06| |what is duce| +|08/01/2022 06:49:06| |NO TIME FOR REST, TOTSUGEKI| +|08/01/2022 06:49:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:08| |>when we were younger| +|08/01/2022 06:49:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:09| |WHAT IS LOVE| +|08/01/2022 06:49:10| |Nice to have something to look forward to| +|08/01/2022 06:49:10| |WHAT IS DUCE???? WHAT IS DUCE????| +|08/01/2022 06:49:11| |WHAT IS LOVE, BABY DON'T HURT ME NO MORE| +|08/01/2022 06:49:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:11| |WHAT IS LOVE?| +|08/01/2022 06:49:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:12| |I don't think I could have made it this far without GuP| +|08/01/2022 06:49:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:14| DVCE +|08/01/2022 06:49:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:14| |DUCE DUCE DUCE| +|08/01/2022 06:49:16| |WATASHI NO DEKIRU KOTO| +|08/01/2022 06:49:17| |>lights on| +|08/01/2022 06:49:18| |WHAT IS LOVE| +|08/01/2022 06:49:18| DVVVVVCE +|08/01/2022 06:49:18| |open eyes or u crash| +|08/01/2022 06:49:20| |DUCE DUCE DUCE| +|08/01/2022 06:49:20| |>missed the duce posting| +|08/01/2022 06:49:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:49:30| |duce spam is cancer| +|08/01/2022 06:49:31| |FUCK IM BEHIND| +|08/01/2022 06:49:31| jhjh +|08/01/2022 06:49:32| |Good end| +|08/01/2022 06:49:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:49:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:49:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:35| bunnies... +|08/01/2022 06:49:36| |Sleepy rabbits| +|08/01/2022 06:49:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:38| |dvce spam is life| +|08/01/2022 06:49:39| SODOKO +|08/01/2022 06:49:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:41| |Omg Azusa Sawa| +|08/01/2022 06:49:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:45| |MOMO A SHIT| +|08/01/2022 06:49:46| |das Finale 6 in 2028 if Actas doesn't slow down even more| +|08/01/2022 06:49:47| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 06:49:47| NEETS +|08/01/2022 06:49:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:48| gamergirls +|08/01/2022 06:49:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:50| |DUCE DUCE DUCE| +|08/01/2022 06:49:50| |boko RESTORED| +|08/01/2022 06:49:50| |volleyball tits| +|08/01/2022 06:49:51| |She is always awake, always at the ready | +|08/01/2022 06:49:51| |TOMBOY WAIFU!| +|08/01/2022 06:49:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:54| |MORALITY: RESTORED| +|08/01/2022 06:49:55| |>mako and sodoko see the ship first| +|08/01/2022 06:49:55| Kraftfahrzeughaftpflichtversicherung +|08/01/2022 06:49:55| |arisu 13 years old| +|08/01/2022 06:49:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DCUE DUCE DUCE| +|08/01/2022 06:49:57| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 06:49:57| |See you all in six years!| +|08/01/2022 06:49:58| |BASED /HIS/| +|08/01/2022 06:50:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:50:01| ;_; +|08/01/2022 06:50:01| |Good movie| +|08/01/2022 06:50:02| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 06:50:03| |*WARGAMING JAPAN*| +|08/01/2022 06:50:04| |fuck mom and darj, praise boko and dvce| +|08/01/2022 06:50:05| |I HATE MOMO | +|08/01/2022 06:50:06| |ALICE IS 20 AND IN UNIVERSITY| +|08/01/2022 06:50:07| Cute +|08/01/2022 06:50:07| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 06:50:11| |So is it OVA time now?| +|08/01/2022 06:50:12| |BOCO LIVES ON| +|08/01/2022 06:50:13| WOJTEK!!!!!! +|08/01/2022 06:50:15| wojtek +|08/01/2022 06:50:15| WOJAK?! +|08/01/2022 06:50:16| WOJTEK???? +|08/01/2022 06:50:16| |there she is boys| +|08/01/2022 06:50:17| |OVA TAIMU| +|08/01/2022 06:50:18| |AGAIN FAPP BREAK TIME?| +|08/01/2022 06:50:19| |Boko moment| +|08/01/2022 06:50:19| wojak +|08/01/2022 06:50:19| |I JUST WANT TO WATCH THE STREAM WITH THE GIRLS BUT IT KEEPS BUFFERING| +|08/01/2022 06:50:22| |Girls und OVA| +|08/01/2022 06:50:23| KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG +|08/01/2022 06:50:23| |need to piss| +|08/01/2022 06:50:23| |Arisu War! next| +|08/01/2022 06:50:23| :D +|08/01/2022 06:50:26| |WHATS NEXT?| +|08/01/2022 06:50:27| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:50:27| |dat callback| +|08/01/2022 06:50:28| :D +|08/01/2022 06:50:32| |MIHO SMILE SO PRECIOUS| +|08/01/2022 06:50:36| :) +|08/01/2022 06:50:38| :D +|08/01/2022 06:50:38| |SEX WITH HANA| +|08/01/2022 06:50:39| |nice boat| +|08/01/2022 06:50:41| |Congrats, Schizos | +|08/01/2022 06:50:41| |I love you guys| +|08/01/2022 06:50:42| |nice boat| +|08/01/2022 06:50:43| |Yukari's wife Miho| +|08/01/2022 06:50:43| :) +|08/01/2022 06:50:44| ;_; +|08/01/2022 06:50:46| |I LOVE YOU TOO| +|08/01/2022 06:50:46| |its coming home| +|08/01/2022 06:50:46| |bonus ova?| +|08/01/2022 06:50:47| |WHICH ONE IS NEXT| +|08/01/2022 06:50:47| |WHAT IS DUCE????| +|08/01/2022 06:50:48| kino +|08/01/2022 06:50:49| <3 +|08/01/2022 06:50:51| |HAPPY NEW YEAR GENTS| +|08/01/2022 06:50:55| :^) +|08/01/2022 06:50:55| |WHAT IS LOVE| +|08/01/2022 06:50:55| <3 +|08/01/2022 06:50:56| ARISU +|08/01/2022 06:50:57| |BABY DONT HURT ME| +|08/01/2022 06:50:59| |pls i need break| +|08/01/2022 06:50:59| <3 +|08/01/2022 06:50:59| |BABY DON'T HURT ME| +|08/01/2022 06:51:02| |BEST OVA| +|08/01/2022 06:51:02| |NO BREAK BITCHES| +|08/01/2022 06:51:03| |NO MORE| +|08/01/2022 06:51:03| |seggs with alice| +|08/01/2022 06:51:04| |ooaraibros why are my eyes wet| +|08/01/2022 06:51:06| ARISU! +|08/01/2022 06:51:07| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:51:07| |NO MORE| +|08/01/2022 06:51:09| Anzu +|08/01/2022 06:51:10| |Get your duce spam ready for this she doesn't show up for a while| +|08/01/2022 06:51:11| |arisu school scouting ova| +|08/01/2022 06:51:11| NOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:51:12| |im fucking dying| +|08/01/2022 06:51:13| UUUUUUUUUUOOOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 06:51:19| |ALICE CUUUTE| +|08/01/2022 06:51:20| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHH +|08/01/2022 06:51:20| |CUNNY UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH| +|08/01/2022 06:51:21| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 06:51:24| JC? +|08/01/2022 06:51:25| V +|08/01/2022 06:51:26| |UOOOOOOOOOOOOOOOOOOH UOOOOOOOOOOOOOOOOOOOOOOH| +|08/01/2022 06:51:27| |this is such a bullshit plot point| +|08/01/2022 06:51:28| |ARISU IS UNDER 14 YEARS OLD| +|08/01/2022 06:51:29| ARISU +|08/01/2022 06:51:29| |ALICE VORE| +|08/01/2022 06:51:30| ;0; +|08/01/2022 06:51:31| |ARISU WHORE| +|08/01/2022 06:51:32| UUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 06:51:33| |OST JAM| +|08/01/2022 06:51:33| |I WANT TO SQUEEZE KARINA| +|08/01/2022 06:51:37| USAGIS +|08/01/2022 06:51:38| |YUUKI AAAAAAAAAA| +|08/01/2022 06:51:39| UOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 06:51:41| ToT +|08/01/2022 06:51:41| |ARISU VORE!| +|08/01/2022 06:51:43| AZUSA!!! +|08/01/2022 06:51:43| |Anzu is so cute and genki| +|08/01/2022 06:51:44| |get ready to spam duce she doesn't show for a while| +|08/01/2022 06:51:47| |MUST... FUCK... MOMOOOOOOOO| +|08/01/2022 06:51:48| |And then they convince her to join literally any other school| +|08/01/2022 06:51:48| |UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 06:51:49| |impregnate karina| +|08/01/2022 06:51:49| |(T o T)| +|08/01/2022 06:51:51| |my cute daughters| +|08/01/2022 06:51:51| |CUTE AIRSU| +|08/01/2022 06:51:55| |SO CUTE| +|08/01/2022 06:51:58| |>more uooooh UOH BROS MY DICK HURTS TOO MUCH I CAN'T TAKE IT| +|08/01/2022 06:52:00| CUTE!!! +|08/01/2022 06:52:02| SEMPAI +|08/01/2022 06:52:03| CUUUUUUUUUUUUUUTE +|08/01/2022 06:52:06| |azusa fucking cute| +|08/01/2022 06:52:06| |T o T| +|08/01/2022 06:52:10| SENPAI +|08/01/2022 06:52:12| foreshadowing +|08/01/2022 06:52:12| |CUUUUUUUUUUUUTE ToT| +|08/01/2022 06:52:13| |invest in azusa| +|08/01/2022 06:52:16| SENPAI +|08/01/2022 06:52:16| |Rabbit team strong| +|08/01/2022 06:52:20| |REMINDER TO LOVE YOUR STATION| +|08/01/2022 06:52:22| |FUCK OFF MOMO| +|08/01/2022 06:52:24| UNCOMFIRMED +|08/01/2022 06:52:26| |(T o T) UUUUUUOHHHHHHHHHHH (T o T)| +|08/01/2022 06:52:26| |alice loves balls| +|08/01/2022 06:52:27| |momo mood killer| +|08/01/2022 06:52:28| |STOP HAVING FUN YOU ASSHOLES| +|08/01/2022 06:52:28| TAEKO +|08/01/2022 06:52:29| |>MOMO "NO FUN ALLOWED" RETARD| +|08/01/2022 06:52:30| |FUCK MOMO| +|08/01/2022 06:52:30| |DUMB MOMO CUNT| +|08/01/2022 06:52:31| |no fun allowed| +|08/01/2022 06:52:31| |momo ruin fun| +|08/01/2022 06:52:32| |I RABU MY STATION| +|08/01/2022 06:52:32| |I RABU MY STATION| +|08/01/2022 06:52:35| |cute boy| +|08/01/2022 06:52:39| |TRAIN TRAIN| +|08/01/2022 06:52:40| |I LOVE YOU| +|08/01/2022 06:52:41| |dumb momo she deserved to be locked out of uni| +|08/01/2022 06:52:43| NORIKO +|08/01/2022 06:52:43| VOLLEYTITS +|08/01/2022 06:52:45| |alice likes balls?| +|08/01/2022 06:52:46| |cute boy and his harem| +|08/01/2022 06:52:49| boy +|08/01/2022 06:52:53| PINPON +|08/01/2022 06:52:53| boobs +|08/01/2022 06:52:56| |you just know| +|08/01/2022 06:52:57| |Desert Fox| +|08/01/2022 06:52:59| |FUWA FUWA TIME| +|08/01/2022 06:53:00| |impregnate taka-chan| +|08/01/2022 06:53:00| KEION +|08/01/2022 06:53:03| |>liking anime| +|08/01/2022 06:53:03| |holy tits| +|08/01/2022 06:53:05| MANNERHEIM +|08/01/2022 06:53:07| TAKA-CHAN +|08/01/2022 06:53:07| /HIS/ +|08/01/2022 06:53:10| |FUN THINGS ARE FUN| +|08/01/2022 06:53:10| |The volleyball girls are sonfucking sexy| +|08/01/2022 06:53:12| |cringe squad| +|08/01/2022 06:53:13| |They just want to revive the volleyball club| +|08/01/2022 06:53:15| |budget walking| +|08/01/2022 06:53:17| ISHYGDDT +|08/01/2022 06:53:18| |imagine liking anime right guys| +|08/01/2022 06:53:20| |ALEXANDER WAS A BULGAR| +|08/01/2022 06:53:20| |What was the point of this OVA| +|08/01/2022 06:53:20| |BASED SQUAD| +|08/01/2022 06:53:21| |I love Akebi so much bros| +|08/01/2022 06:53:23| |Who's going to tell them senshado isn't volleyball | +|08/01/2022 06:53:23| |dork squad| +|08/01/2022 06:53:24| |NORIKO IS A GIRL| +|08/01/2022 06:53:26| |Imagine Alice in an auto club uniform. Stained with oil.| +|08/01/2022 06:53:26| |>Having volleyball autism| +|08/01/2022 06:53:28| |>ironic weeb| +|08/01/2022 06:53:28| who? +|08/01/2022 06:53:29| |>NOT LIKING ANIME| +|08/01/2022 06:53:30| |cunny,, that wewas the point| +|08/01/2022 06:53:31| |imagine 3some this whore| +|08/01/2022 06:53:31| |FUN POLICE PATROLLING THE STREETS| +|08/01/2022 06:53:32| |shes not a nerd| +|08/01/2022 06:53:32| Nerd! +|08/01/2022 06:53:32| |THATS IT!| +|08/01/2022 06:53:33| |SORE DA | +|08/01/2022 06:53:35| |SODOCLONE SEX| +|08/01/2022 06:53:35| |SORE DA!!| +|08/01/2022 06:53:37| |sore da| +|08/01/2022 06:53:37| |SORE DA| +|08/01/2022 06:53:38| |SORE DA| +|08/01/2022 06:53:38| >subs +|08/01/2022 06:53:39| |look we need to save movie for the movies ok?| +|08/01/2022 06:53:45| *PUFF* +|08/01/2022 06:53:45| |LEFT FOR ME| +|08/01/2022 06:53:45| |blazed af| +|08/01/2022 06:53:47| |ARISU IS A DELINQUENT| +|08/01/2022 06:53:49| Pasomi +|08/01/2022 06:53:50| |underage smoking? how about underage marriage| +|08/01/2022 06:53:53| |420 blaze it| +|08/01/2022 06:53:54| |Doing a burnout in front of the sodoclones| +|08/01/2022 06:53:55| |Based rebel| +|08/01/2022 06:53:56| |>school ship jannies| +|08/01/2022 06:53:57| yes +|08/01/2022 06:53:59| CREED +|08/01/2022 06:54:00| >typesetting +|08/01/2022 06:54:01| DUDE +|08/01/2022 06:54:02| |Wow Alice is so cool| +|08/01/2022 06:54:02| wwwwwwwwww +|08/01/2022 06:54:02| *puff8 +|08/01/2022 06:54:02| SMOKING +|08/01/2022 06:54:02| DUDE +|08/01/2022 06:54:03| |GANBARE GOMOYO!| +|08/01/2022 06:54:05| WEED +|08/01/2022 06:54:09| |she doesn't even have anything in her hand| +|08/01/2022 06:54:10| CREED +|08/01/2022 06:54:10| DUDE +|08/01/2022 06:54:11| LMAO +|08/01/2022 06:54:12| |FUCK EM UP GOMOYO| +|08/01/2022 06:54:13| |DUDE TOBACCO LMAO| +|08/01/2022 06:54:13| LMAO +|08/01/2022 06:54:13| DAGUMI +|08/01/2022 06:54:17| DUDE +|08/01/2022 06:54:17| |CUTE BROWN GIRLS| +|08/01/2022 06:54:20| |return to delinquent| +|08/01/2022 06:54:21| |need tomboy gf| +|08/01/2022 06:54:22| |SEX WITH ARISU| +|08/01/2022 06:54:22| |>unknwon driver| +|08/01/2022 06:54:23| |I LOVE creed, have you ever heard of creed| +|08/01/2022 06:54:23| |>no tabako| +|08/01/2022 06:54:24| |no smokin wtf| +|08/01/2022 06:54:29| |KAM ON SANNER| +|08/01/2022 06:54:31| |return to dude| +|08/01/2022 06:54:32| |ANZU CLONE| +|08/01/2022 06:54:32| /o/ +|08/01/2022 06:54:32| |Girls...Alice doesn't drive| +|08/01/2022 06:54:33| |But Alice is a commander| +|08/01/2022 06:54:35| brown +|08/01/2022 06:54:37| |BROWN GIRLS| +|08/01/2022 06:54:37| |cute morals committee| +|08/01/2022 06:54:39| |Best uniform| +|08/01/2022 06:54:39| |Nice shitbox| +|08/01/2022 06:54:41| who +|08/01/2022 06:54:41| |Rally English| +|08/01/2022 06:54:42| |Alice doesn't drive...| +|08/01/2022 06:54:43| |GIRLS UND RALLY| +|08/01/2022 06:54:43| |Arisu wasn't driving though?| +|08/01/2022 06:54:43| |INITIAL g| +|08/01/2022 06:54:44| |Wasn't she commanding | +|08/01/2022 06:54:45| |Alice is 13....| +|08/01/2022 06:54:51| |based /o/| +|08/01/2022 06:54:51| who? +|08/01/2022 06:54:52| NOOOO +|08/01/2022 06:54:53| GAMERS +|08/01/2022 06:54:54| >PSP +|08/01/2022 06:54:55| |TANNED BODY| +|08/01/2022 06:54:56| |PURO PINCHE| +|08/01/2022 06:54:57| |if you like brown girls save it for andou, not on these wh/o/res| +|08/01/2022 06:54:58| |NIKI LAUDA| +|08/01/2022 06:55:02| monhunbros... +|08/01/2022 06:55:03| F1 +|08/01/2022 06:55:04| |WHaT ABOUT MUH COPYRIGHT| +|08/01/2022 06:55:04| |I bet Arisu is at least a decent driver though| +|08/01/2022 06:55:05| |NO MAYKEL NO NO| +|08/01/2022 06:55:06| |BRING BACK GROUP B| +|08/01/2022 06:55:06| /v/ +|08/01/2022 06:55:06| |TANNED GIRLS ARE THE BEST| +|08/01/2022 06:55:08| >w/o/res +|08/01/2022 06:55:08| |MAX MAX MAX SUPER MAX MAX| +|08/01/2022 06:55:09| GROOMERS +|08/01/2022 06:55:09| |THE PERMISSIONS| +|08/01/2022 06:55:10| |Rise up panzer bros| +|08/01/2022 06:55:18| |NEKOTA IS A NEET| +|08/01/2022 06:55:19| |GAMERS ARE THE MOST OPRESSED RACE IN THE WORLD| +|08/01/2022 06:55:19| |Who's going to tell them senshado isn't street racing | +|08/01/2022 06:55:19| |SUPER MAX MAX SUPER SUPER MAX| +|08/01/2022 06:55:19| |GAMER GIRLS| +|08/01/2022 06:55:19| |>psp >not getting hipchecked by plesioth| +|08/01/2022 06:55:20| |IDOLSHIT STRIKES AGAIN| +|08/01/2022 06:55:20| MIURA +|08/01/2022 06:55:21| pokemon +|08/01/2022 06:55:23| |PANZER BED| +|08/01/2022 06:55:24| |FUCKING CASUALS| +|08/01/2022 06:55:25| NYAN +|08/01/2022 06:55:27| |fucking casuals| +|08/01/2022 06:55:28| FLOOG +|08/01/2022 06:55:28| IDOLM@STER +|08/01/2022 06:55:30| NEEEEERD +|08/01/2022 06:55:31| CASUALS +|08/01/2022 06:55:33| |I LOVE HARUKA| +|08/01/2022 06:55:33| |Calling Alice a normie, these gamers are| +|08/01/2022 06:55:35| |WRECK ARISU'S CUNNY| +|08/01/2022 06:55:36| TODOKETE +|08/01/2022 06:55:36| |/v/ btfo| +|08/01/2022 06:55:36| >bokotists +|08/01/2022 06:55:37| bokotism +|08/01/2022 06:55:37| |alice plays war thunder| +|08/01/2022 06:55:37| /v/irgins +|08/01/2022 06:55:37| |I cant believe the/o/ girls are gonna graduate bros...| +|08/01/2022 06:55:38| |NORMIES REEEE| +|08/01/2022 06:55:39| |filthy handheld players| +|08/01/2022 06:55:39| tankbed +|08/01/2022 06:55:40| Bokosexual +|08/01/2022 06:55:40| |segggs with boko dildo| +|08/01/2022 06:55:41| |GANG NYA| +|08/01/2022 06:55:42| |UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 06:55:45| UOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:55:49| |GANBARE BOKO!| +|08/01/2022 06:55:50| |Based Mako| +|08/01/2022 06:55:51| |TWO GIRLS CAN'T HAVE SEX| +|08/01/2022 06:55:51| |SLEEPY MAKO| +|08/01/2022 06:55:54| |SIESTA CHADS| +|08/01/2022 06:55:56| |AHHHHHHHHHHHHHHHHHHHHH MY ASS HURTTTTSS| +|08/01/2022 06:55:57| |boko boko| +|08/01/2022 06:55:57| |SIESTA SYSTEM| +|08/01/2022 06:55:58| |SLEEPY SEX WITH MAKO| +|08/01/2022 06:56:00| |WHO TRYNA WATCH THE BOKO DVD| +|08/01/2022 06:56:00| |BUY THE DVDS| +|08/01/2022 06:56:02| |MIHO X ALICE| +|08/01/2022 06:56:04| |boko haram| +|08/01/2022 06:56:05| |Reminder to do a quick refresh everyone| +|08/01/2022 06:56:06| |I wish I could visit the Boko Museum with someone| +|08/01/2022 06:56:06| |she sleep| +|08/01/2022 06:56:07| based +|08/01/2022 06:56:10| |Boko's bokos| +|08/01/2022 06:56:13| |Boko halal| +|08/01/2022 06:56:14| |Alice x Futa Miho| +|08/01/2022 06:56:16| |UOH UOH UOH | +|08/01/2022 06:56:17| |miho x boko| +|08/01/2022 06:56:17| |I-I'll visit wit h oyu, anon| +|08/01/2022 06:56:19| |RAPE CORRECTION| +|08/01/2022 06:56:19| yes +|08/01/2022 06:56:22| |SLEEPY SLEEP WITH MAKO| +|08/01/2022 06:56:24| |>half glasses| +|08/01/2022 06:56:25| |>capture ar 13 year old heart| +|08/01/2022 06:56:26| |aomushi canon| +|08/01/2022 06:56:26| CUTE +|08/01/2022 06:56:28| |Azusa you fucking dork| +|08/01/2022 06:56:29| |masochist bitch| +|08/01/2022 06:56:34| |dumb momo| +|08/01/2022 06:56:36| DORKS +|08/01/2022 06:56:36| |Need correction| +|08/01/2022 06:56:39| |aomushi should add balls tbh| +|08/01/2022 06:56:42| aZUSA!!!! +|08/01/2022 06:56:42| KAWAII +|08/01/2022 06:56:44| retard +|08/01/2022 06:56:49| Anzu +|08/01/2022 06:56:49| |momo retard| +|08/01/2022 06:56:50| NORIKO +|08/01/2022 06:56:52| |bruh momento| +|08/01/2022 06:56:52| GEIMU +|08/01/2022 06:56:53| |FUCK YOU MOMO| +|08/01/2022 06:56:56| |Ha, implying we have a budget | +|08/01/2022 06:56:58| |let them vibe momo| +|08/01/2022 06:56:58| |how did momo get into the student council| +|08/01/2022 06:57:00| |I LOVE YOU MOMO| +|08/01/2022 06:57:00| |MOMO IS CUTE! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 06:57:03| 却下 +|08/01/2022 06:57:04| |FUCK YOU MOMO| +|08/01/2022 06:57:06| |No budget? Momo's a cheapskate| +|08/01/2022 06:57:09| >normal +|08/01/2022 06:57:09| nepotism +|08/01/2022 06:57:09| |who tf loves momo| +|08/01/2022 06:57:09| |I HATE MOMO| +|08/01/2022 06:57:12| |MOMO SEETHING| +|08/01/2022 06:57:12| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:57:14| |LOVE YUO MOMO| +|08/01/2022 06:57:15| |NO FUN ALLOWED| +|08/01/2022 06:57:16| |Momo worst girl| +|08/01/2022 06:57:16| |go home momo| +|08/01/2022 06:57:16| |I LOVE MOMO VERY MUCH| +|08/01/2022 06:57:17| |none of them are normal| +|08/01/2022 06:57:18| |I hope Momo doesn't repeat| +|08/01/2022 06:57:19| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:57:19| |not even momo's parents love her| +|08/01/2022 06:57:20| |JUST BE YOUR SELF| +|08/01/2022 06:57:24| |FUTSUU TTE IUNA| +|08/01/2022 06:57:24| |MOMO RETARD| +|08/01/2022 06:57:24| |just b urself| +|08/01/2022 06:57:26| F +|08/01/2022 06:57:26| |>just b urself bro| +|08/01/2022 06:57:27| ded +|08/01/2022 06:57:28| |just b yourself| +|08/01/2022 06:57:28| |MY WIFE ARISU TOO CUTE| +|08/01/2022 06:57:28| f +|08/01/2022 06:57:29| |tfw momo| +|08/01/2022 06:57:32| DEAD +|08/01/2022 06:57:33| RIP +|08/01/2022 06:57:33| F +|08/01/2022 06:57:33| |O S T| +|08/01/2022 06:57:34| F +|08/01/2022 06:57:34| |Wow, miho is so smart| +|08/01/2022 06:57:35| |>lol jus b ur self| +|08/01/2022 06:57:36| |I can't believe Arisu is fucking dead| +|08/01/2022 06:57:37| |F on arrival| +|08/01/2022 06:57:38| |Rape correction Rape correction Rape correction Rape correction Rape correction| +|08/01/2022 06:57:39| |every one is an autist already so it's fine| +|08/01/2022 06:57:39| |SHE FUKCING DIED| +|08/01/2022 06:57:40| |Big tender for a big school ship.| +|08/01/2022 06:57:40| f +|08/01/2022 06:57:40| |True boko fan| +|08/01/2022 06:57:40| |DRINKING ARISUS VOMIt| +|08/01/2022 06:57:40| seasick +|08/01/2022 06:57:41| |The only normal high school girl| +|08/01/2022 06:57:42| |>she's fucking dead| +|08/01/2022 06:57:43| DEATH +|08/01/2022 06:57:44| |(T o T)| +|08/01/2022 06:57:45| ded +|08/01/2022 06:57:46| Seasick>> +|08/01/2022 06:57:47| |SOMEONE TAKE MY WIFE TO THE SICK BAY| +|08/01/2022 06:57:48| |alice moment| +|08/01/2022 06:57:48| |MOMO YOU CAN'T EVEN HIT THE BROADSIDE OF THE BARN YOU DUMB BITCH| +|08/01/2022 06:57:50| YOUKOSO +|08/01/2022 06:57:51| F +|08/01/2022 06:57:51| UOOOOOOOOOOHHHHHH +|08/01/2022 06:57:51| lel +|08/01/2022 06:57:53| Arisu... +|08/01/2022 06:57:53| Rapable?? +|08/01/2022 06:57:53| >ded +|08/01/2022 06:57:54| F +|08/01/2022 06:57:54| |is she okay| +|08/01/2022 06:57:54| bruh +|08/01/2022 06:57:55| |ARISU IS DEAD !!| +|08/01/2022 06:57:55| UOOOOOOHHHH +|08/01/2022 06:57:55| |LAND LUBBER| +|08/01/2022 06:57:55| F +|08/01/2022 06:57:56| |>closing eyes| +|08/01/2022 06:57:56| |would you even get seasick on a ship that big?| +|08/01/2022 06:57:56| |SHE'S FUCKING DEAD| +|08/01/2022 06:57:56| |Oh great, she's dead| +|08/01/2022 06:57:57| RIP +|08/01/2022 06:57:58| 5HEAD +|08/01/2022 06:57:59| |>IT WORKED| +|08/01/2022 06:57:59| |UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 06:58:00| |Momo is such a fucking dork| +|08/01/2022 06:58:01| |LAND LUBBER| +|08/01/2022 06:58:02| FOREHEAD +|08/01/2022 06:58:02| |that sfx| +|08/01/2022 06:58:03| Kek +|08/01/2022 06:58:03| potatoE +|08/01/2022 06:58:03| |>it worked| +|08/01/2022 06:58:05| |What a DORK| +|08/01/2022 06:58:06| UOOOOOHHHHHHHHH +|08/01/2022 06:58:07| |SASUGA KAICHOU| +|08/01/2022 06:58:07| |feeling seasick? just forget about it| +|08/01/2022 06:58:10| |stick my dick on arisu forehead| +|08/01/2022 06:58:11| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 06:58:11| |ANZU IS SO SMART| +|08/01/2022 06:58:11| ???????????????????????? +|08/01/2022 06:58:13| |CUNNY POTATO| +|08/01/2022 06:58:14| DUCE +|08/01/2022 06:58:15| POTATO'D +|08/01/2022 06:58:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:15| |momo retard| +|08/01/2022 06:58:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:16| ????????????????????????????? +|08/01/2022 06:58:16| wat +|08/01/2022 06:58:16| |DUCE | +|08/01/2022 06:58:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:17| ITALIANS +|08/01/2022 06:58:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:19| CUTE +|08/01/2022 06:58:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:20| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 06:58:21| |DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:22| GIWTWM +|08/01/2022 06:58:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:22| pastaaaaaaaaaaa +|08/01/2022 06:58:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:23| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:23| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:25| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:28| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 06:58:28| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:58:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:30| |MORE DUCE| +|08/01/2022 06:58:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:31| |DVCE PLEASE RUB ON MY CHEEK| +|08/01/2022 06:58:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:32| |DUCE DUCE DUCE| +|08/01/2022 06:58:32| GIWTWM +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:33| ? +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +|08/01/2022 06:58:34| |DUCE DUCE DUCE| +|08/01/2022 06:58:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:35| PEPPERONI +|08/01/2022 06:58:35| |I WANT DUCE TO RUB HERSELF ONTO ME| +|08/01/2022 06:58:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:58:36| BTFO +|08/01/2022 06:58:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:37| |lolis hate pizza| +|08/01/2022 06:58:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUC E DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:40| |join anzio alice| +|08/01/2022 06:58:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:58:41| |ARISU DABBING ON ITALIANS| +|08/01/2022 06:58:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:42| wwwwwwwwwwwwww +|08/01/2022 06:58:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:42| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:58:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:44| RAPE +|08/01/2022 06:58:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:45| |DUCEBROS.....I WANT TO FEEL| +|08/01/2022 06:58:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 06:58:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:47| |Awful taste| +|08/01/2022 06:58:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:47| EROTIC +|08/01/2022 06:58:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:48| |DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCE| +|08/01/2022 06:58:49| |Not liking cheese, what a pleb taste| +|08/01/2022 06:58:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:50| CUTE +|08/01/2022 06:58:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:50| |GOD I WISH THAT WERE ME| +|08/01/2022 06:58:50| |SMELLY AND WEARS A WIG| +|08/01/2022 06:58:51| |UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH TuT| +|08/01/2022 06:58:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:51| |DUCE SMELLS GOOD| +|08/01/2022 06:58:51| uoh +|08/01/2022 06:58:51| |WTF I HATE ALICE NOW| +|08/01/2022 06:58:51| |DVCE HIJACK| +|08/01/2022 06:58:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:53| |NO ONE WILL KNOW I WANT TO RAPE ARISU| +|08/01/2022 06:58:53| CUTE +|08/01/2022 06:58:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:56| |WHAT THE FUCK| +|08/01/2022 06:58:56| |>SHIT TASTE| +|08/01/2022 06:58:56| |Wow Alice, such disrespect to Duce. Must punish the Johnnies with pasta and diabetes| +|08/01/2022 06:58:56| duce. +|08/01/2022 06:58:57| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:57| uooooooooooooooooooooooooooooooooooooohhhhhhhhhhhhhhh +|08/01/2022 06:58:58| uwooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooh +|08/01/2022 06:58:58| UOOOOOOOOOOOOOOOHHHHHHHHHHHHHHH +|08/01/2022 06:58:58| |I want duce to rub against me| +|08/01/2022 06:58:58| |IT'S THE THING| +|08/01/2022 06:58:59| CUTE +|08/01/2022 06:58:59| |duce commit sex assult| +|08/01/2022 06:59:00| OOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUU +|08/01/2022 06:59:00| |so smol| +|08/01/2022 06:59:00| |YOU WHAT| +|08/01/2022 06:59:01| |stop duce spamming retards| +|08/01/2022 06:59:02| ZANNEN +|08/01/2022 06:59:02| |Alice ToT| +|08/01/2022 06:59:05| |what kid doesn't like cheese?| +|08/01/2022 06:59:09| |DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:59:10| UOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHH +|08/01/2022 06:59:10| |What school DID she go to? She doesn't appear in any of the schools in the Finale| +|08/01/2022 06:59:11| no +|08/01/2022 06:59:12| |CUTE CUTE CUTE| +|08/01/2022 06:59:12| |DAMN SEXY CHILD| +|08/01/2022 06:59:12| |>DORK CLUB| +|08/01/2022 06:59:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:59:15| UOHHHHHHHHH +|08/01/2022 06:59:16| |need ninja club ova| +|08/01/2022 06:59:16| PRPRPRPRPPRPRRPPRR +|08/01/2022 06:59:17| UUUUUUUOOOOOOOOOOOOOHHHHHHHHHHHHHHH +|08/01/2022 06:59:17| ToT +|08/01/2022 06:59:18| |DAMN KID| +|08/01/2022 06:59:18| |ninja training?| +|08/01/2022 06:59:18| |I didn't| +|08/01/2022 06:59:19| |There's cheese all over my room faggot| +|08/01/2022 06:59:20| |Italian school so good. Drive fast and eat past| +|08/01/2022 06:59:20| |>ninja tactics| +|08/01/2022 06:59:21| OOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:59:22| |she went to universiy| +|08/01/2022 06:59:22| uoooooooooooooooooooh +|08/01/2022 06:59:22| |wtf is that in the background i never saw it before| +|08/01/2022 06:59:23| |this only needs the futa cock and it'll be perfect| +|08/01/2022 06:59:26| ToT +|08/01/2022 06:59:29| futa +|08/01/2022 06:59:30| PASS +|08/01/2022 06:59:34| |size of penis?| +|08/01/2022 06:59:35| DUCK +|08/01/2022 06:59:37| NINJAS +|08/01/2022 06:59:38| BOIPUSSY +|08/01/2022 06:59:38| |duck team raping noriko| +|08/01/2022 06:59:40| |nice duck| +|08/01/2022 06:59:41| TAEKO +|08/01/2022 06:59:41| autism +|08/01/2022 06:59:44| |This school is based as fuck| +|08/01/2022 06:59:44| |ALICE HIPS UOOOOOOOOOH| +|08/01/2022 06:59:45| |TEAM AUTISM| +|08/01/2022 06:59:47| |does miho or maho have better futa cock| +|08/01/2022 06:59:52| |Miho duh| +|08/01/2022 06:59:53| AVE +|08/01/2022 06:59:53| |I CANT HANDLE THIS AUTISM| +|08/01/2022 06:59:54| DUCKS +|08/01/2022 06:59:55| |boy shorter than miho| +|08/01/2022 06:59:56| |based /his/| +|08/01/2022 06:59:57| |time to ball up| +|08/01/2022 06:59:58| autism +|08/01/2022 06:59:58| duck +|08/01/2022 06:59:59| autists +|08/01/2022 06:59:59| |all teams are team autist| +|08/01/2022 07:00:00| MIHO +|08/01/2022 07:00:04| |GOBLIN SLAYER| +|08/01/2022 07:00:08| KAISER +|08/01/2022 07:00:10| |/his/ even top autistic for Alice| +|08/01/2022 07:00:11| SOUL +|08/01/2022 07:00:13| |She's so cute and funny| +|08/01/2022 07:00:14| 😭 +|08/01/2022 07:00:14| |BASED /HIS/| +|08/01/2022 07:00:14| SENPAI +|08/01/2022 07:00:15| SEMPAI +|08/01/2022 07:00:16| |dont let her near the sluts| +|08/01/2022 07:00:16| |wanna breed the rabbits| +|08/01/2022 07:00:20| NEEEEERD +|08/01/2022 07:00:21| KYAAAAAA +|08/01/2022 07:00:23| |Saki completely missing the reaction qte| +|08/01/2022 07:00:23| UUOOOOOOOOOOH +|08/01/2022 07:00:24| OYAKATA-SAMA +|08/01/2022 07:00:25| |rabbits are gonna corrupt arisu| +|08/01/2022 07:00:25| |UUUOOOHH SENPAI| +|08/01/2022 07:00:26| CUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:00:31| |arisu smart!| +|08/01/2022 07:00:32| 86 +|08/01/2022 07:00:32| |STRAIGHT SIX BROS| +|08/01/2022 07:00:33| /o/ +|08/01/2022 07:00:33| UOOOOOOOOOOOOOH +|08/01/2022 07:00:34| |Alice tensau| +|08/01/2022 07:00:34| KYAAAAAAA +|08/01/2022 07:00:35| |STRAITO 6| +|08/01/2022 07:00:36| |STRAIGHT SEX| +|08/01/2022 07:00:38| |FUCK THE RULES| +|08/01/2022 07:00:38| |C T U| +|08/01/2022 07:00:41| /fit/ +|08/01/2022 07:00:42| tsuyoi +|08/01/2022 07:00:43| |SMELLY BROWN MECHANIC| +|08/01/2022 07:00:44| RIPPED +|08/01/2022 07:00:44| |DO YOU LIKE MY CAR| +|08/01/2022 07:00:45| PEUGOT +|08/01/2022 07:00:45| |FUCKI OFF JANNIES| +|08/01/2022 07:00:45| |>EUROBEATS INTENSIFY| +|08/01/2022 07:00:45| /FIT/ +|08/01/2022 07:00:46| |>Cunny UOOOH-ing over cunny | +|08/01/2022 07:00:47| MIRIN +|08/01/2022 07:00:48| |ripped gamer| +|08/01/2022 07:00:48| |>that much displacement increase| +|08/01/2022 07:00:48| |TWO SCOOPS| +|08/01/2022 07:00:52| sugoiiii +|08/01/2022 07:00:52| SWOLE +|08/01/2022 07:00:53| WEW +|08/01/2022 07:00:53| car +|08/01/2022 07:00:55| |/fit/bros RISE UP| +|08/01/2022 07:01:00| |post physique| +|08/01/2022 07:01:00| SWOLE +|08/01/2022 07:01:00| |Nekota going in hard| +|08/01/2022 07:01:00| GUNS +|08/01/2022 07:01:01| FLUFF +|08/01/2022 07:01:02| |Mako is literally me| +|08/01/2022 07:01:02| NYA +|08/01/2022 07:01:04| /fit/ +|08/01/2022 07:01:07| |NYAN AF| +|08/01/2022 07:01:08| GUNS-NYA +|08/01/2022 07:01:11| |I want nekota to pin me down and rape me| +|08/01/2022 07:01:13| |NYA WITH THE BICEPS| +|08/01/2022 07:01:16| ost +|08/01/2022 07:01:17| |Holy autism| +|08/01/2022 07:01:18| |Bribing the child with trips to boko| +|08/01/2022 07:01:23| |take the invermectin alice| +|08/01/2022 07:01:25| |slice of life| +|08/01/2022 07:01:26| |YUKARI IS MY SPIRIT ANIMAL| +|08/01/2022 07:01:27| |Too bad the child craves war| +|08/01/2022 07:01:30| |Imagine the gamers manhandling Alice's tiny body.....| +|08/01/2022 07:01:30| |PEKO PEKO| +|08/01/2022 07:01:31| |all wives| +|08/01/2022 07:01:31| SOUL +|08/01/2022 07:01:34| ToT +|08/01/2022 07:01:37| |Sunkus ;_;7| +|08/01/2022 07:01:39| |theyre on a ship still, right?| +|08/01/2022 07:01:40| |COMFY SOL| +|08/01/2022 07:01:40| :D +|08/01/2022 07:01:40| |Still not as bad as when the university girls groomed her| +|08/01/2022 07:01:41| |yummy food| +|08/01/2022 07:01:43| NABESHIKO +|08/01/2022 07:01:43| CUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:01:44| CUTE +|08/01/2022 07:01:45| |rip sunkus| +|08/01/2022 07:01:45| UOHHHHHHHHHHHH +|08/01/2022 07:01:45| CUTE +|08/01/2022 07:01:45| AUTISM +|08/01/2022 07:01:46| |C CUTTTTTTTTTTTTTTTTTTTTTTTEEEEEEEEEEEEEEE| +|08/01/2022 07:01:47| CUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:01:47| UOOOOOOOOHHHHHHH +|08/01/2022 07:01:47| CUTE +|08/01/2022 07:01:48| UOHHHHHHHHHH +|08/01/2022 07:01:49| Autism +|08/01/2022 07:01:49| Haaaaaaa +|08/01/2022 07:01:49| |fucking small town on the ship| +|08/01/2022 07:01:50| |BOKO PJs| +|08/01/2022 07:01:50| >flashbacks +|08/01/2022 07:01:51| CUTE +|08/01/2022 07:01:51| CUUUUUUUUUUUUUUUUUUUUUUUTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 07:01:52| UWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHH +|08/01/2022 07:01:52| UUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:01:52| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:01:53| TOT +|08/01/2022 07:01:53| UOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:01:53| UOOOOOOOOOOOOOOOH +|08/01/2022 07:01:54| |BUNNY BOKO| +|08/01/2022 07:01:54| WOAH +|08/01/2022 07:01:54| CUTE +|08/01/2022 07:01:54| UOOOOOOHHHHHH +|08/01/2022 07:01:54| hnnnnnghh +|08/01/2022 07:01:55| |i know my life would be perfect here, but that rivalry doe| +|08/01/2022 07:01:56| UOOOOOOOOOOOOH +|08/01/2022 07:01:57| |UOOOOOOOOOOOOH 😭| +|08/01/2022 07:01:57| |CUTE CUTE CUTE CUTE| +|08/01/2022 07:01:58| |LETS ALL LOVE ALICE| +|08/01/2022 07:01:58| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:01:59| UOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:01:59| |THIS MESUGAKIIIIII| +|08/01/2022 07:02:01| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +|08/01/2022 07:02:02| |NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI | +|08/01/2022 07:02:02| CUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:02:03| |I want to impregnate Alice| +|08/01/2022 07:02:04| |I WANT TO C T U ALIS| +|08/01/2022 07:02:04| UOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:02:04| |LETS ALL LOVE ALICE| +|08/01/2022 07:02:05| UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 07:02:06| |Wasn't the french uni girl borederline crazy in the manga?| +|08/01/2022 07:02:07| |boko pjs| +|08/01/2022 07:02:07| kawaiiiiiiii +|08/01/2022 07:02:07| CUTE +|08/01/2022 07:02:07| |ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +|08/01/2022 07:02:08| |KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI | +|08/01/2022 07:02:08| BOKOOOOOOOOOOOOOOOOOO +|08/01/2022 07:02:09| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +|08/01/2022 07:02:09| | ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE F| +|08/01/2022 07:02:10| |Y U K A R I IS MY W I F E| +|08/01/2022 07:02:10| |BASED GRAPE CHAN| +|08/01/2022 07:02:10| >subs +|08/01/2022 07:02:10| CUTE +|08/01/2022 07:02:10| |What a weird fetish]| +|08/01/2022 07:02:11| GANBARE +|08/01/2022 07:02:11| |GANBARE BOKO| +|08/01/2022 07:02:11| BOKO +|08/01/2022 07:02:12| |Miho the cunnysouer| +|08/01/2022 07:02:12| UOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:02:13| cute +|08/01/2022 07:02:13| CUTE +|08/01/2022 07:02:13| BOKO!!! +|08/01/2022 07:02:13| |ganbare boko| +|08/01/2022 07:02:13| |i know where this is going| +|08/01/2022 07:02:14| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:02:15| |IT'S TIME| +|08/01/2022 07:02:15| |GANBARE BOKO| +|08/01/2022 07:02:15| Uooooooooooooooohoohohoohohoohhoho +|08/01/2022 07:02:15| |GANBARE BOKOOOOO| +|08/01/2022 07:02:16| |FUCKING MURDER THEM BOKO| +|08/01/2022 07:02:17| |LETS ALL HIT BOKO| +|08/01/2022 07:02:19| BOKOOOO +|08/01/2022 07:02:20| |ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +|08/01/2022 07:02:21| |Who exactly is the target audience for Boko?| +|08/01/2022 07:02:23| |>ywn watch dumb shit with Miho| +|08/01/2022 07:02:23| |AOMUSHI CANON??| +|08/01/2022 07:02:25| |>All those doujins| +|08/01/2022 07:02:27| |YOU CAN THIS, BOKO| +|08/01/2022 07:02:28| |NO ARISU DON'T DRINK THE TEA IT HAS APHRODISIACS| +|08/01/2022 07:02:28| |canon doujin canon doujin canon doujin canon doujin canon doujin canon doujin | +|08/01/2022 07:02:29| Autists +|08/01/2022 07:02:29| |RIP BOKO| +|08/01/2022 07:02:29| SUBS +|08/01/2022 07:02:30| |THANKS SUBS| +|08/01/2022 07:02:30| |BOKO HARAM| +|08/01/2022 07:02:30| |SLEEPING ARISU EROTIC| +|08/01/2022 07:02:32| |I fear for their future husbands | +|08/01/2022 07:02:33| |GANBARE BOKO| +|08/01/2022 07:02:34| CUTE +|08/01/2022 07:02:34| UOH +|08/01/2022 07:02:35| |UOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHH SSSSSSSSSEEEEEEEEEEEEEEEEGGGGGGGGGGGGGGGGSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS | +|08/01/2022 07:02:35| |Get wrecked Boko!| +|08/01/2022 07:02:35| |Miho and Arisu apparently| +|08/01/2022 07:02:36| |THE DOUJINS WRITE THEMSELVES| +|08/01/2022 07:02:36| SEX? +|08/01/2022 07:02:37| |masochist bitch| +|08/01/2022 07:02:37| |I want to sleep with Miho.....| +|08/01/2022 07:02:38| CUTE +|08/01/2022 07:02:38| |Ganbare Boko!!!| +|08/01/2022 07:02:39| CUTE +|08/01/2022 07:02:39| SUS +|08/01/2022 07:02:40| |DON'T LET MIHO RAPE ARISU| +|08/01/2022 07:02:41| |i never read this doujin| +|08/01/2022 07:02:42| |shiohama doujin so good| +|08/01/2022 07:02:43| |OPERATION PUNCHY| +|08/01/2022 07:02:45| |Mere moments from being Operation Punchy'd| +|08/01/2022 07:02:46| CUTE +|08/01/2022 07:02:46| |I want Arisu to beat me up and call me boko| +|08/01/2022 07:02:46| based +|08/01/2022 07:02:49| |NONSTOP MIHO X ARISU FUTA SEX| +|08/01/2022 07:02:49| ANZU +|08/01/2022 07:02:50| |COMMENCE OPERATION PUNCHY| +|08/01/2022 07:02:53| |boko bitch maker| +|08/01/2022 07:02:53| |ToT | +|08/01/2022 07:02:55| |THE CUTEST| +|08/01/2022 07:02:56| UOOOOOOOOOOOOOH +|08/01/2022 07:02:59| |Wait, I can't friendly fire a teammate | +|08/01/2022 07:03:00| AUTISM +|08/01/2022 07:03:02| >foreshadowing +|08/01/2022 07:03:02| F +|08/01/2022 07:03:02| |OH SHI-| +|08/01/2022 07:03:03| >graduate +|08/01/2022 07:03:04| |oh no| +|08/01/2022 07:03:07| |AH FUCK| +|08/01/2022 07:03:07| EH +|08/01/2022 07:03:08| |Arisu is literally autism| +|08/01/2022 07:03:08| |And so she left | +|08/01/2022 07:03:09| lmao +|08/01/2022 07:03:11| F +|08/01/2022 07:03:11| FORESHADOWING +|08/01/2022 07:03:11| |And yet, she never fights Miho again...| +|08/01/2022 07:03:11| |Oh no| +|08/01/2022 07:03:12| RUINED +|08/01/2022 07:03:13| f +|08/01/2022 07:03:14| Based +|08/01/2022 07:03:15| |SO CLOSE.............| +|08/01/2022 07:03:16| |lmao bye| +|08/01/2022 07:03:18| |>Momo >graduate| +|08/01/2022 07:03:21| |Mission failed: well get em next time| +|08/01/2022 07:03:22| |>foreshadowing this hard| +|08/01/2022 07:03:23| |seriously though| +|08/01/2022 07:03:24| |REMINDER THAT MOMO WILL REPEAT A YEAR| +|08/01/2022 07:03:26| EEEEEEEEEEEEEEH? +|08/01/2022 07:03:27| wwwwwwwwwwwwwwwwwwwwwwww +|08/01/2022 07:03:27| |WOW MOMO FUCK YOU| +|08/01/2022 07:03:27| ED? +|08/01/2022 07:03:28| foreshadowing +|08/01/2022 07:03:30| |MOMO IS CUTE! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 07:03:31| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:31| |ENTER ENTER| +|08/01/2022 07:03:32| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:32| |I'm slain| +|08/01/2022 07:03:33| |wtf momo| +|08/01/2022 07:03:33| ED?!?!?!?! +|08/01/2022 07:03:33| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:34| |MOMO IS A DUMB| +|08/01/2022 07:03:34| |ENTER ENTER| +|08/01/2022 07:03:34| ENTER +|08/01/2022 07:03:35| |ENTAH ENTAH| +|08/01/2022 07:03:35| |LMAO fucking Momo| +|08/01/2022 07:03:36| |Holy shit!| +|08/01/2022 07:03:36| |MOMO RETARD| +|08/01/2022 07:03:37| EEEEEEEEEEEEEEEEEEEEHH +|08/01/2022 07:03:37| |Just wait until she teams up with her sister [spoiler]Mika[/spoiler]| +|08/01/2022 07:03:37| |ENTAH ENTAH| +|08/01/2022 07:03:37| |ENTA ENTA MISSION| +|08/01/2022 07:03:38| Anzu +|08/01/2022 07:03:38| |>ENTER MISSION FOR THE FIRST TIME| +|08/01/2022 07:03:39| ISSHOUKENMEI +|08/01/2022 07:03:39| |Miho status: Entered| +|08/01/2022 07:03:40| |ENTER ENTER MISSION| +|08/01/2022 07:03:41| |Mission status: Entered| +|08/01/2022 07:03:41| |MISSION STATUS:| +|08/01/2022 07:03:42| |HOLY SHIT ITS ENTER ENTER MISSION| +|08/01/2022 07:03:43| |join koromourimine| +|08/01/2022 07:03:44| |IS IT DF1 next??| +|08/01/2022 07:03:44| |FIRST ENTAH ENTAH| +|08/01/2022 07:03:45| |COME ON| +|08/01/2022 07:03:45| |ENTER ENTER MISSION| +|08/01/2022 07:03:45| eeeeeeeeeeeeeeh +|08/01/2022 07:03:47| |I love this ending| +|08/01/2022 07:03:48| |ENTA ENTA MISSION| +|08/01/2022 07:03:49| |Momo fuming. No Shimada fundings| +|08/01/2022 07:03:49| |IN THE END, NOTHING REALLY MATTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTERED| +|08/01/2022 07:03:49| |arisu tonk| +|08/01/2022 07:03:50| |ENTA ENTA| +|08/01/2022 07:03:50| |INTER INTER MISSION| +|08/01/2022 07:03:51| |PRESS B TO BOUNCE | +|08/01/2022 07:03:51| OST +|08/01/2022 07:03:52| |ENTAH ENTAH| +|08/01/2022 07:03:52| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:52| |It's been eight hours!| +|08/01/2022 07:03:53| |ENTER ENTER MISSIOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNN| +|08/01/2022 07:03:53| |ENTER ENTER MISSION| +|08/01/2022 07:03:53| |ENTER ENTER | +|08/01/2022 07:03:53| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:54| |ENTAH ENTAH MISSHUN| +|08/01/2022 07:03:54| |It's 7 am lads, how much more to go?| +|08/01/2022 07:03:55| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:56| |LYRICS ;_;| +|08/01/2022 07:03:56| |enter enter mission| +|08/01/2022 07:03:57| |ENTAH ENTAH MISSIOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOON| +|08/01/2022 07:03:57| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:59| |ISSHOU KENMEI| +|08/01/2022 07:03:59| |BOUNCE VBOUNCE| +|08/01/2022 07:03:59| |entah entah| +|08/01/2022 07:03:59| |ENTAH ENTAH MISSION!!!!| +|08/01/2022 07:04:02| |WIll there be an Inter Inter Mission?| +|08/01/2022 07:04:03| |ENTER ENTER MISSION| +|08/01/2022 07:04:04| KINISHINAI +|08/01/2022 07:04:04| |COME ON| +|08/01/2022 07:04:04| |IS DF1 NEXT???| +|08/01/2022 07:04:05| |CUTE ARISU| +|08/01/2022 07:04:05| |will the french ova be before or after df1? spliced in?| +|08/01/2022 07:04:07| |come on| +|08/01/2022 07:04:08| |>8 hours| +|08/01/2022 07:04:08| |ENTEH ENTEHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 07:04:09| |pissed we didn't see this 12 times| +|08/01/2022 07:04:09| |bam bam bama bam| +|08/01/2022 07:04:09| |*bounce* *bounce*| +|08/01/2022 07:04:09| |MINNA DENE| +|08/01/2022 07:04:10| |ISSHO CAM ON| +|08/01/2022 07:04:12| INTERMISSION? +|08/01/2022 07:04:12| |Cute chibi| +|08/01/2022 07:04:14| HAPPY +|08/01/2022 07:04:17| |8 hours and going strong \o/| +|08/01/2022 07:04:18| riureuiuefiuewfiunduuuu +|08/01/2022 07:04:20| UOOOOOOOOOOOOOOH +|08/01/2022 07:04:22| |GENJITSU NI NARU| +|08/01/2022 07:04:26| cute +|08/01/2022 07:04:26| |>TFW NO ONE BELIVES IN YOU| +|08/01/2022 07:04:29| |ENTAH ENTAH MISSION| +|08/01/2022 07:04:29| |has it really been 8 hours| +|08/01/2022 07:04:30| chib +|08/01/2022 07:04:31| dene +|08/01/2022 07:04:31| |ENTAH ENTAH| +|08/01/2022 07:04:33| |ENTA ENTA MISSION| +|08/01/2022 07:04:33| |ENTER ENTER MISSION| +|08/01/2022 07:04:33| |CUTE AND ADORABLE| +|08/01/2022 07:04:34| |why is she alone| +|08/01/2022 07:04:34| |we should have seen this every episode| +|08/01/2022 07:04:35| ISSHOUKENMEI +|08/01/2022 07:04:36| |WAKE UP ANON| +|08/01/2022 07:04:36| |>As of September 1, 2016, all Circle K Sunkus stores have been rebranded as FamilyMart stores| +|08/01/2022 07:04:37| |BAI NI NARU HAPPI| +|08/01/2022 07:04:39| |IS DF1 NEXT| +|08/01/2022 07:04:40| |INTER INTER MISSION?| +|08/01/2022 07:04:42| |ENTAH ENTAH MISSION| +|08/01/2022 07:04:45| ENTER +|08/01/2022 07:04:46| |Chikara ippai!| +|08/01/2022 07:04:46| |SEX WITH ALICE| +|08/01/2022 07:04:47| |best part| +|08/01/2022 07:04:48| HEIKI +|08/01/2022 07:04:49| |ENTAH ENTAH MISSION| +|08/01/2022 07:04:49| |ENTAA ENTAA MIHO| +|08/01/2022 07:04:51| |ENTAH ENTAH MISSHUN| +|08/01/2022 07:04:52| Bear +|08/01/2022 07:04:52| |ENTAH ENTAH MISSION| +|08/01/2022 07:04:53| |Futa cockskap alice| +|08/01/2022 07:04:54| CUNNY!!! +|08/01/2022 07:04:54| |DF1 should be next| +|08/01/2022 07:04:55| |ZUTTO ISSHO NO MIRAI| +|08/01/2022 07:04:59| |I wonder how many anons will come back for DF3| +|08/01/2022 07:05:01| noooooooo +|08/01/2022 07:05:02| HAPY +|08/01/2022 07:05:03| |THROWING UP BEFORE snw| +|08/01/2022 07:05:05| |after intermission| +|08/01/2022 07:05:05| |CHIKARA IPPAI| +|08/01/2022 07:05:06| whyyyyyyyyyy +|08/01/2022 07:05:08| |>come back I NEVER LEFT| +|08/01/2022 07:05:09| |ENTER INTERMISSION| +|08/01/2022 07:05:10| |FAP BREAK| +|08/01/2022 07:05:14| |eyes growing heavy| +|08/01/2022 07:05:14| nice +|08/01/2022 07:05:17| |good, I need to piss| +|08/01/2022 07:05:18| |INTER INTER MISSION| +|08/01/2022 07:05:19| |shit break| +|08/01/2022 07:05:19| |TIME TO FAP| +|08/01/2022 07:05:20| |INTER INTER MISSION?| +|08/01/2022 07:05:21| |REMEMBER TO POST SEXY MAHOS IN THE THREAD| +|08/01/2022 07:05:21| |INTER INTER MISSION| +|08/01/2022 07:05:22| |intermissions are for PUSSIES| +|08/01/2022 07:05:22| |URINE HOLDERS OUR TIME HAS COME| +|08/01/2022 07:05:23| |pee time| +|08/01/2022 07:05:23| |still strong. ready for sharks| +|08/01/2022 07:05:24| |piss piss piss piss piss piss piss piss | +|08/01/2022 07:05:24| |Time to get more tea and schokacola| +|08/01/2022 07:05:25| |10 minutes to take a shit lets gooooooooo| +|08/01/2022 07:05:26| |TIME FOR POO POO| +|08/01/2022 07:05:26| |IM thirsty >:)| +|08/01/2022 07:05:30| |I'm almost out of it bros| +|08/01/2022 07:05:31| |DF1 next?| +|08/01/2022 07:05:33| |see u later fags| +|08/01/2022 07:05:35| |TIME TO FAP TO ARISU| +|08/01/2022 07:05:36| |i know 1/2 of you are gonna watch the alice x miho futa porn| +|08/01/2022 07:05:38| |Frog OVA | +|08/01/2022 07:05:39| |POO POO TIME| +|08/01/2022 07:05:41| |fuck i don't want to go to work tomorrow morning| +|08/01/2022 07:05:43| |Yes, DF1 now| +|08/01/2022 07:05:44| |Anyone got any good fap material| +|08/01/2022 07:05:45| |Of course| +|08/01/2022 07:05:47| |ENTER INTER MISSION HAYAKU| +|08/01/2022 07:05:49| |Nice. gonna go Masturbate to Miho's Mom| +|08/01/2022 07:05:52| |Just search aomushi on panda| +|08/01/2022 07:05:52| |I have slept from episode Anzu to the beginning of der Film, I am ashamed| +|08/01/2022 07:05:55| |FUTA MIHO| +|08/01/2022 07:05:56| |>being a wageslave| +|08/01/2022 07:05:58| |Wish benantoka did a gup doujin| +|08/01/2022 07:05:59| |F FOR THE ANONS WHO DIDNT MAKE IT| +|08/01/2022 07:06:02| |Just watch this on the toilet. Don't need to run to the bathroom if you already in there| +|08/01/2022 07:06:04| |>2 am, still 3 hours worth of GuP, work at 10 am| +|08/01/2022 07:06:06| F +|08/01/2022 07:06:06| |I WANT MOMMY MILKIES| +|08/01/2022 07:06:07| F +|08/01/2022 07:06:08| |>waging on a saturday| +|08/01/2022 07:06:08| |WHERE IS THE MUSIC| +|08/01/2022 07:06:09| |futa best invention since sliced bread| +|08/01/2022 07:06:12| |but benantoka did a gup doujin?| +|08/01/2022 07:06:12| |10pm here| +|08/01/2022 07:06:20| |>it's fucking 7am here| +|08/01/2022 07:06:22| |1:00 here| +|08/01/2022 07:06:25| |midnight bros where we at| +|08/01/2022 07:06:27| |sound off /a/nons. how many of us are left| +|08/01/2022 07:06:28| |MY WIFE ERIKA| +|08/01/2022 07:06:29| |AUF DAST HEIST| +|08/01/2022 07:06:30| ERIKAAAAAA +|08/01/2022 07:06:30| ERIKA +|08/01/2022 07:06:31| |UND DAS HIEST| +|08/01/2022 07:06:32| |t e x a n| +|08/01/2022 07:06:32| |UND DAS HEIIST| +|08/01/2022 07:06:34| EEEEEEEEEEEEEERIKA +|08/01/2022 07:06:35| ERIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:06:35| |SIEG HEIL o/| +|08/01/2022 07:06:36| ERIKA +|08/01/2022 07:06:36| |god fucking dammit its 7am| +|08/01/2022 07:06:39| EEEEEERRIKAAAA +|08/01/2022 07:06:39| |Been here since an hour before start \o/| +|08/01/2022 07:06:39| |UND DAS HEISST| +|08/01/2022 07:06:40| EEEEEERIKKAAAA +|08/01/2022 07:06:40| |>wake up for snw| +|08/01/2022 07:06:40| |Glad I was able to get off early enough to catch most of the movie and finale| +|08/01/2022 07:06:40| |still here going strong, KANPAI| +|08/01/2022 07:06:42| ERIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:06:42| ERIKKKA +|08/01/2022 07:06:43| |AZ 11pm| +|08/01/2022 07:06:44| 5PM +|08/01/2022 07:06:45| EEEEEEEEEERIKA +|08/01/2022 07:06:45| |SIEGU HEIL| +|08/01/2022 07:06:45| |dreaming of Alice in the Boko pjs| +|08/01/2022 07:06:46| |Erika is ugly and lesbian| +|08/01/2022 07:06:46| |BON BONK| +|08/01/2022 07:06:46| |wani song| +|08/01/2022 07:06:49| ERIIIIIIIIIIIIIIIIIIIIIIIIIIIKA +|08/01/2022 07:06:49| ERIKA +|08/01/2022 07:06:50| ERIKA +|08/01/2022 07:06:50| |ERIKA IS DUMB AND UGLY| +|08/01/2022 07:06:51| |卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +|08/01/2022 07:06:51| EEEEEEEEEEERIKA +|08/01/2022 07:06:52| |BUM BUM BUM | +|08/01/2022 07:06:52| ERIKKKKKKAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:06:53| |UND DAS HEIST| +|08/01/2022 07:06:56| |o/ o/ o/| +|08/01/2022 07:06:56| |10PM PST| +|08/01/2022 07:06:57| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERRRRRRRRIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKKKKKKKKKKKKKKKKKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:06:58| 卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐 +|08/01/2022 07:06:59| 88 +|08/01/2022 07:07:04| 06:05 +|08/01/2022 07:07:04| |卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +|08/01/2022 07:07:05| |\o \o \o| +|08/01/2022 07:07:05| |>ywn see maho singing this - hurts just a little| +|08/01/2022 07:07:06| EEEEEEEEEEEEEEEERIKA +|08/01/2022 07:07:06| !14 +|08/01/2022 07:07:06| |UND DAS HEIST| +|08/01/2022 07:07:06| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 07:07:07| |SIEG | +|08/01/2022 07:07:07| |Working on a saturday lmao| +|08/01/2022 07:07:07| |UND DAS HEISST| +|08/01/2022 07:07:15| |1488 PANZER WAR NOW| +|08/01/2022 07:07:16| |HEIL MAHO| +|08/01/2022 07:07:16| |UND DAS HEISST| +|08/01/2022 07:07:16| \O\O\O +|08/01/2022 07:07:17| |timezones anon| +|08/01/2022 07:07:18| 88 +|08/01/2022 07:07:22| |BUM BUM BUM| +|08/01/2022 07:07:25| |KUROMORIMINE UBER ALLES| +|08/01/2022 07:07:29| o/ +|08/01/2022 07:07:29| |卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +|08/01/2022 07:07:30| |GAS THE SLAGS, SENSHA WAR NOW| +|08/01/2022 07:07:31| |katyusha got one but erika didn't--COMMIES ALWAYS WIN| +|08/01/2022 07:07:31| EEERIKA +|08/01/2022 07:07:32| o/ +|08/01/2022 07:07:33| |dun dun dun| +|08/01/2022 07:07:40| |If Erika was tanned, you could just slap her with the auto club. I think she got a driver license already.| +|08/01/2022 07:07:43| |卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +|08/01/2022 07:08:02| |if erika was tanned she wouldn't be aryan| +|08/01/2022 07:08:03| |HEIL TO THE NISHIZUMIS| +|08/01/2022 07:08:08| |HEIL DEUTSCHLAND| +|08/01/2022 07:08:09| |o/ o/ o/| +|08/01/2022 07:08:23| |TOTALEN KRIEG | +|08/01/2022 07:08:25| |PANZER PANZER PANZER PANZER PANZER PANZER | +|08/01/2022 07:08:27| GESICHTER +|08/01/2022 07:08:29| |More pizza!| +|08/01/2022 07:08:31| JA! +|08/01/2022 07:08:31| 8 +|08/01/2022 07:08:32| |PANZER VOR| +|08/01/2022 07:08:38| |JAWOHL | +|08/01/2022 07:08:46| |goodnight bros. best of luck surviving the rest of the night o7| +|08/01/2022 07:08:47| LOUDER!! +|08/01/2022 07:09:08| |Europe, sound off!| +|08/01/2022 07:09:22| |there are some good duce spam caps in the thread| +|08/01/2022 07:09:25| |They need more shots of Duce behinds. At least flaunt what she has.| +|08/01/2022 07:09:27| |o/ o/ o/ o/ o/| +|08/01/2022 07:09:33| |ES BRUAST UNSER PANZER| +|08/01/2022 07:09:49| :-) +|08/01/2022 07:09:50| fuggg +|08/01/2022 07:10:19| |maho is my wife| +|08/01/2022 07:10:30| >br*t +|08/01/2022 07:10:35| |i want to sleep with mako| +|08/01/2022 07:10:36| |REMEMBER LADS| +|08/01/2022 07:10:39| |fucking slags| +|08/01/2022 07:10:42| ???????????????????????????????????? +|08/01/2022 07:10:44| |me too| +|08/01/2022 07:10:50| |I'm gonna throw up, who with me?| +|08/01/2022 07:10:52| |REMEMBER WHAT?| +|08/01/2022 07:10:54| |MY WIFE, ROSEHIP| +|08/01/2022 07:11:17| |imagine being a br*t, can't be me| +|08/01/2022 07:11:22| |Is having Shiho as your mother in law that worth it?| +|08/01/2022 07:11:26| |Nekonyaa ~| +|08/01/2022 07:11:45| |Shiho mother in law would be worth it for maho wife| +|08/01/2022 07:11:47| A*glos +|08/01/2022 07:12:06| sex? +|08/01/2022 07:12:10| Drugs? +|08/01/2022 07:12:11| ? +|08/01/2022 07:12:14| |i'm gonna say it| +|08/01/2022 07:12:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 07:12:17| |Based America music| +|08/01/2022 07:12:18| |Best track| +|08/01/2022 07:12:21| |Rocke and Roll?| +|08/01/2022 07:12:21| |USA USA USA USA| +|08/01/2022 07:12:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 07:12:27| |Rock and Roll| +|08/01/2022 07:12:28| |Where is Anzu| +|08/01/2022 07:12:39| |Burger land| +|08/01/2022 07:12:42| |*crack* Yeeeep they just don't make OSTs like they used to| +|08/01/2022 07:12:49| BORGAR +|08/01/2022 07:12:50| |Alisa’s mental breakdown theme song| +|08/01/2022 07:12:58| |gup came out in like 2012| +|08/01/2022 07:12:59| |who is your favorite character added after the show? mine is rosehip or mika| +|08/01/2022 07:13:02| |fuck alisa honestly| +|08/01/2022 07:13:05| |Then again, Shiho sounds safer as a mother in law than Chiyo.| +|08/01/2022 07:13:17| |shiho a psycho| +|08/01/2022 07:13:17| |POLYUSKA POYLE| +|08/01/2022 07:13:22| |CYKA BLYAT| +|08/01/2022 07:13:30| |anooo cheeki breeki iv danke| +|08/01/2022 07:13:31| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:13:34| BLYAT +|08/01/2022 07:13:40| Хорошо +|08/01/2022 07:13:41| ypa +|08/01/2022 07:13:47| |You're more likely to get disowned by Shiho than survive a questioning by Chiyo| +|08/01/2022 07:13:54| |URA URA URA URA URA URA URA URA URA URA URA| +|08/01/2022 07:13:54| |have we skipped over some ovas?| +|08/01/2022 07:13:56| pantsu +|08/01/2022 07:14:03| |Shiho can't disown you if you're not her child| +|08/01/2022 07:14:15| |fuck commies| +|08/01/2022 07:14:15| |Get out of here stalker| +|08/01/2022 07:14:16| |adopts you just to disown you| +|08/01/2022 07:14:21| |If you married her child, you're family already| +|08/01/2022 07:14:25| |where do we send you bandwidth| +|08/01/2022 07:14:42| |JUST DOWNLOAD MORE BANDWITH YOU RETARDS| +|08/01/2022 07:14:46| |Моя красивая женщина Нонна| +|08/01/2022 07:14:46| |what if you marry miho? who is already disowned| +|08/01/2022 07:14:50| |prep the dvce spam| +|08/01/2022 07:14:58| |miho cannot percieve guys| +|08/01/2022 07:15:06| |I don't give a shit about momo getting into uni| +|08/01/2022 07:15:06| |wait what| +|08/01/2022 07:15:07| fair +|08/01/2022 07:15:07| |here we go| +|08/01/2022 07:15:14| |Lets finish this strong| +|08/01/2022 07:15:15| LATE +|08/01/2022 07:15:24| |SOON TM| +|08/01/2022 07:15:27| |ANON stop jerking off stream is starting soon| +|08/01/2022 07:15:28| 5 +|08/01/2022 07:15:33| |I am now remembering how boring the first half of df1 is| +|08/01/2022 07:15:41| |a-a-an an | +|08/01/2022 07:15:44| |certified retard| +|08/01/2022 07:15:45| |AA AA AAN| +|08/01/2022 07:15:46| sex +|08/01/2022 07:15:46| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 07:15:50| |sex voice| +|08/01/2022 07:15:52| |AHN AHN AHN| +|08/01/2022 07:15:53| |the song| +|08/01/2022 07:15:55| |AA AA AAN| +|08/01/2022 07:15:55| |ang dance ova when?| +|08/01/2022 07:15:56| |ahn ahn ahn| +|08/01/2022 07:15:57| |based christ is king anon| +|08/01/2022 07:15:59| |YUURA YUURA| +|08/01/2022 07:16:00| |now she can't get married| +|08/01/2022 07:16:04| |ANG ANG| +|08/01/2022 07:16:06| |Do the dance miho| +|08/01/2022 07:16:16| |the no cock song| +|08/01/2022 07:16:17| ASORE +|08/01/2022 07:16:19| |should have shown the anglerfish ova during intermission| +|08/01/2022 07:16:22| |i will sacrifice myself and marry miho| +|08/01/2022 07:16:23| |AN AN AN| +|08/01/2022 07:16:28| |sexy miho dancing| +|08/01/2022 07:16:29| ASORE +|08/01/2022 07:16:31| ASORE +|08/01/2022 07:16:31| Asore +|08/01/2022 07:16:31| |I'm getting old. I can't read any of these messages anymore| +|08/01/2022 07:16:34| |AA SORE| +|08/01/2022 07:16:43| |i want to go home| +|08/01/2022 07:16:47| |Anko song becomes better when you realize there's nothing else behind that skinsuit| +|08/01/2022 07:16:50| |aieaieaie sore| +|08/01/2022 07:16:51| IYAIYAIYA +|08/01/2022 07:16:54| ASORE +|08/01/2022 07:16:59| |I couldn't read them either until I switched to mpv and slowed it way down| +|08/01/2022 07:17:00| |and anzu's is still loose| +|08/01/2022 07:17:03| |i miss my bed| +|08/01/2022 07:17:05| |finale when| +|08/01/2022 07:17:11| SOON +|08/01/2022 07:17:12| |ITS TIME BOIS| +|08/01/2022 07:17:14| |SHOW TIME!!| +|08/01/2022 07:17:14| |LETS GOOOOO| +|08/01/2022 07:17:15| |what time is it for you euro anons?| +|08/01/2022 07:17:15| |‘Ere we go| +|08/01/2022 07:17:16| ASORE +|08/01/2022 07:17:16| NOW +|08/01/2022 07:17:17| |we proud| +|08/01/2022 07:17:18| |WE ARE PROUD OF THE TRUE YOUTH STORIES| +|08/01/2022 07:17:21| |OH SHITTT| +|08/01/2022 07:17:23| :D +|08/01/2022 07:17:23| |2:15 am GANG| +|08/01/2022 07:17:23| 7am +|08/01/2022 07:17:27| |WE BACKKK| +|08/01/2022 07:17:28| |Too bad the judges will never wear the anko suits| +|08/01/2022 07:17:28| SHOOT +|08/01/2022 07:17:28| |this song is kino| +|08/01/2022 07:17:28| |This intro is so fucking good| +|08/01/2022 07:17:30| |GLORIOUS DAYS!!| +|08/01/2022 07:17:32| |ESTBROS REPORT IN| +|08/01/2022 07:17:32| |DF > Film| +|08/01/2022 07:17:33| |im only 1:15| +|08/01/2022 07:17:35| |10 pm gang| +|08/01/2022 07:17:36| |7:15 AM| +|08/01/2022 07:17:36| |LETS FUCKING GOOOOO| +|08/01/2022 07:17:36| |CENTRAL TIMEZONE GANG| +|08/01/2022 07:17:39| |UK reporting in| +|08/01/2022 07:17:40| |AHAHAHAHAHA LAUGHING AT AMERILARDS ITS 17:15 IN AUS| +|08/01/2022 07:17:41| |EST LET'S GO| +|08/01/2022 07:17:41| |I AM SO TIRED, WHO ELSE IS TIRED?| +|08/01/2022 07:17:41| |AWESOME INTRO| +|08/01/2022 07:17:41| |we full anime now| +|08/01/2022 07:17:42| | FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FRO| +|08/01/2022 07:17:43| |EST CHADS HERE| +|08/01/2022 07:17:44| |westcoas gang| +|08/01/2022 07:17:44| |7.15 here too| +|08/01/2022 07:17:46| 11pm +|08/01/2022 07:17:46| BOKO +|08/01/2022 07:17:50| TAEKO +|08/01/2022 07:17:50| |12am GANG LETS GOOOOO| +|08/01/2022 07:17:50| |6am clique| +|08/01/2022 07:17:51| |SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS | +|08/01/2022 07:17:52| | FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +|08/01/2022 07:17:52| |those glorious days :_:| +|08/01/2022 07:17:52| |est represent| +|08/01/2022 07:17:53| |MAGGOT CHEESE| +|08/01/2022 07:17:54| |/10pm/ here| +|08/01/2022 07:17:54| shooot +|08/01/2022 07:17:56| |and in 13 hours I need to be ready for the other stream| +|08/01/2022 07:17:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:17:59| >buffering +|08/01/2022 07:17:59| |1AM EST| +|08/01/2022 07:18:03| |ANDOU SEXXXXXXXXXXUUUUUUOOOOOOOOOOHHHHHHHHHHHHHHH| +|08/01/2022 07:18:04| |DUCE DUCE DUCE| +|08/01/2022 07:18:04| |1215am fag here| +|08/01/2022 07:18:08| |BUFFERING GANG GANG GANG GANG| +|08/01/2022 07:18:08| |what other stream>| +|08/01/2022 07:18:10| |stupid europoors| +|08/01/2022 07:18:14| | FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +|08/01/2022 07:18:16| |8am reporting in, please kill me| +|08/01/2022 07:18:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:18:16| |RAPE SODOKOCLONES| +|08/01/2022 07:18:16| |OOOARAI DORIFUTO| +|08/01/2022 07:18:18| |ooh right, first episode introduce pirate team| +|08/01/2022 07:18:19| |the sora no woto stream| +|08/01/2022 07:18:19| |Its literally going to be dawn when this finishes for me| +|08/01/2022 07:18:23| |>not planning your new year's sleep schedule entirely around the streams| +|08/01/2022 07:18:24| |find it on /a/| +|08/01/2022 07:18:26| |FROGS ONIONS| +|08/01/2022 07:18:33| |IMAGINE NOT BEING A CENTRAL AMERICAN AND ENJOYING THE BENIFITS OF 12AM DRINKING| +|08/01/2022 07:18:33| |this song gives me energy to stay up longer| +|08/01/2022 07:18:34| DORIFUTO! +|08/01/2022 07:18:38| |WHEN THE SUN GOES DOWN| +|08/01/2022 07:18:40| |fucking momo| +|08/01/2022 07:18:42| |i want to sexually fuck momo| +|08/01/2022 07:18:42| |OH BOY THE MOMO IS A MORON OVAS| +|08/01/2022 07:18:42| |MOMO A SHIT| +|08/01/2022 07:18:44| |WHO ONION GANG HERE???| +|08/01/2022 07:18:45| |I hate the sharks| +|08/01/2022 07:18:45| |not today, old friend| +|08/01/2022 07:18:45| |I love the onion fried iin oil| +|08/01/2022 07:18:45| |this bufferring| +|08/01/2022 07:18:47| |>fucking momo| +|08/01/2022 07:18:47| ;_;7 +|08/01/2022 07:18:48| BUFFER +|08/01/2022 07:18:49| |we proud| +|08/01/2022 07:18:52| DORIFTO +|08/01/2022 07:18:53| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 07:18:54| o7 +|08/01/2022 07:18:54| |Leopon drifting!| +|08/01/2022 07:18:57| |hahahaha dumb wani| +|08/01/2022 07:18:57| Dog +|08/01/2022 07:18:59| UOOOH +|08/01/2022 07:19:00| |loser sitting by herself| +|08/01/2022 07:19:00| |fucking loser sits all alone| +|08/01/2022 07:19:00| |pls stop buffering| +|08/01/2022 07:19:00| |Erika alone lol| +|08/01/2022 07:19:00| |>YOU JUST KNOW| +|08/01/2022 07:19:01| ERIKA +|08/01/2022 07:19:01| |Erika suffers Maho withdrawal| +|08/01/2022 07:19:02| |useless wani| +|08/01/2022 07:19:02| WANI +|08/01/2022 07:19:03| DAYS +|08/01/2022 07:19:03| ERIKA +|08/01/2022 07:19:04| dog +|08/01/2022 07:19:09| |how many years until leopon drift ;_;| +|08/01/2022 07:19:09| DESU +|08/01/2022 07:19:12| |CUTE GOLIATH| +|08/01/2022 07:19:12| war +|08/01/2022 07:19:14| |panzer drones| +|08/01/2022 07:19:15| |war never changes| +|08/01/2022 07:19:16| DAIIIIIIZZZZZ +|08/01/2022 07:19:16| |I am also suffering maho withdrawal| +|08/01/2022 07:19:17| |tank police| +|08/01/2022 07:19:18| |the original suicide drone| +|08/01/2022 07:19:19| daaaaaaaaaaaaaaaayyyyys +|08/01/2022 07:19:19| |Goliath a cute| +|08/01/2022 07:19:23| |We USA now| +|08/01/2022 07:19:25| |>Making columbine look like a joke| +|08/01/2022 07:19:25| |Erika took some tips from Johnny for her poses| +|08/01/2022 07:19:28| |man this scene was so odd| +|08/01/2022 07:19:35| |here's your screenshot bro| +|08/01/2022 07:19:36| yata! +|08/01/2022 07:19:41| |DUMB RETARD MOMO| +|08/01/2022 07:19:41| beepbeep +|08/01/2022 07:19:44| |>saki just autisting as usual| +|08/01/2022 07:19:45| |is this DF1?| +|08/01/2022 07:19:46| |Momo is a fucking retarded hoe| +|08/01/2022 07:19:46| |feel free to screenshot| +|08/01/2022 07:19:47| |Baka Momo| +|08/01/2022 07:19:47| |MOMO CANCELLED| +|08/01/2022 07:19:48| |EXTREME RETARD| +|08/01/2022 07:19:48| RETARD +|08/01/2022 07:19:48| Lmao +|08/01/2022 07:19:49| |fuck you momo| +|08/01/2022 07:19:50| |MOMO CONFIRMED RETARDED| +|08/01/2022 07:19:50| |GET A FUCKING GRIP ON YOUR GRADES MOMO HOLY SHIT YOU SHOULDNT BE DOING THIS RN| +|08/01/2022 07:19:50| |MOMO IS SO DUMB| +|08/01/2022 07:19:53| |LOW IQ| +|08/01/2022 07:19:54| GOUGAI! +|08/01/2022 07:19:54| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 07:19:54| RETARD +|08/01/2022 07:19:54| |Momo dum| +|08/01/2022 07:19:55| RETARD +|08/01/2022 07:19:55| |RETARD ALERT| +|08/01/2022 07:19:56| |>first indignity| +|08/01/2022 07:19:57| |RETARD ALERT GIRLS| +|08/01/2022 07:19:58| |SUPER RETARD| +|08/01/2022 07:19:58| >momo +|08/01/2022 07:19:58| |TWITTER DID THIS| +|08/01/2022 07:20:00| CONFIRMED +|08/01/2022 07:20:02| NORIKO<3 +|08/01/2022 07:20:03| |TARD TARD TARD| +|08/01/2022 07:20:03| |Momo forgets she's not in a submarine| +|08/01/2022 07:20:03| |>Momo is actually and really retarded| +|08/01/2022 07:20:04| |MOMO DUMB PUBLISHIZED| +|08/01/2022 07:20:04| |>looking for tanks instead of studying| +|08/01/2022 07:20:04| |FOR SHAME MOMO| +|08/01/2022 07:20:05| |Sasuga Momo| +|08/01/2022 07:20:05| |FUCK MOMO SUPPORTERS| +|08/01/2022 07:20:06| |dumbass momo | +|08/01/2022 07:20:06| |>momo so retarded it makes local news| +|08/01/2022 07:20:10| KEK +|08/01/2022 07:20:10| |Dumb hoe deserves to be held back| +|08/01/2022 07:20:12| |MOMO KUSO...| +|08/01/2022 07:20:12| |FAKE NEWS| +|08/01/2022 07:20:13| |>THE ABSOLUTE STATE OF MOMO| +|08/01/2022 07:20:14| |SHAMEFUR DISPRAY| +|08/01/2022 07:20:14| |OH NO, SHES RETARDED!| +|08/01/2022 07:20:14| :D +|08/01/2022 07:20:15| |Tard wrangling arc| +|08/01/2022 07:20:17| Anzu +|08/01/2022 07:20:17| |NEXT LEVEL AUTISM| +|08/01/2022 07:20:18| |Why do they have an antique television store?| +|08/01/2022 07:20:20| |Baka Moho| +|08/01/2022 07:20:20| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 07:20:21| |MOMO SHOULD JUST DROP OUT| +|08/01/2022 07:20:21| |MOMO IS A MORON| +|08/01/2022 07:20:23| |Aight it's 8am goodbye anons| +|08/01/2022 07:20:23| |>can’t even pass high school| +|08/01/2022 07:20:25| |She looks smart, but is actually dumb| +|08/01/2022 07:20:27| |Damn I actually feel bad for Momo| +|08/01/2022 07:20:27| |I DON'T FUCKING CARE ABOUT MOMO| +|08/01/2022 07:20:28| |why do they care about her| +|08/01/2022 07:20:28| |even dumber plot than school shutdown 2 arc| +|08/01/2022 07:20:29| |No hope for Momo. Press F for respect| +|08/01/2022 07:20:33| |goodnight anon| +|08/01/2022 07:20:33| |dumb hoe moment| +|08/01/2022 07:20:37| F +|08/01/2022 07:20:40| |why tf is smart in gup besides mako| +|08/01/2022 07:20:41| |LEAVE MOMO ALONE!!!| +|08/01/2022 07:20:41| |still find it weird yukari became vice pres| +|08/01/2022 07:20:42| |GANBARE MOMO-CHAN| +|08/01/2022 07:20:43| |momo? more like. Fucking retard| +|08/01/2022 07:20:45| |>guppies moving up in the world| +|08/01/2022 07:20:46| |VICE PREZ YUKARI IS MY GF| +|08/01/2022 07:20:47| |i think momo sucks| +|08/01/2022 07:20:49| |sasuga momo-san| +|08/01/2022 07:20:50| |PRESIDENT ISUZU| +|08/01/2022 07:20:51| |MOMO RETARD| +|08/01/2022 07:20:51| |>student council member is retarded| +|08/01/2022 07:20:53| |YUKARI FOR PRESIDENT| +|08/01/2022 07:20:57| |momo sucking is fact| +|08/01/2022 07:20:57| "yet" +|08/01/2022 07:21:08| |momo the mental homo, heh| +|08/01/2022 07:21:08| |natto is delicious| +|08/01/2022 07:21:08| |Momo a retard| +|08/01/2022 07:21:12| |Who the heck would want to visit a Nattou academy?| +|08/01/2022 07:21:12| |BREAKING NEWS: LOCAL GIRL RETARDED| +|08/01/2022 07:21:13| RONIN +|08/01/2022 07:21:14| |>FOR THE MEMORY| +|08/01/2022 07:21:18| |Azusa can be not retarded when needed| +|08/01/2022 07:21:20| |STATISTALLLY, MOMO IS VERY FUCKABLE| +|08/01/2022 07:21:20| Yukari... +|08/01/2022 07:21:20| |erika is best girl| +|08/01/2022 07:21:22| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 07:21:23| |Momo off to the special ed home| +|08/01/2022 07:21:24| |Is it rumor if Momo really stays back for being dumb?| +|08/01/2022 07:21:28| |TOO RETARDED FOR UNI| +|08/01/2022 07:21:34| |MOMO IS A HARDWORKING GIRL| +|08/01/2022 07:21:39| |momo will have to be put down...| +|08/01/2022 07:21:40| |momo made them do another fucking tournament we could have had something different if she wasn't dumb| +|08/01/2022 07:21:40| |christ its already bright outside| +|08/01/2022 07:21:40| |cute yukari| +|08/01/2022 07:21:43| |MOMO IS A GOOD GIRL| +|08/01/2022 07:21:43| |I NEED YOU| +|08/01/2022 07:21:44| |Not autistic enough for uni| +|08/01/2022 07:21:45| |momo stupid| +|08/01/2022 07:21:48| |It’s okay momo you only need to make babies| +|08/01/2022 07:21:51| |momo does not have the mental capacity for basic education| +|08/01/2022 07:21:53| |Hardworking doesn't equal passing grade though| +|08/01/2022 07:21:54| |MOMO IS A CUTE HARDWORKING GIRL!| +|08/01/2022 07:21:56| |She needs to build a reputation based on lies| +|08/01/2022 07:21:56| |Yukari, Patton went to West Point he was smarter than Momo| +|08/01/2022 07:22:02| |momo should just marry| +|08/01/2022 07:22:02| |momo is a senpai???| +|08/01/2022 07:22:09| |momo can marry me| +|08/01/2022 07:22:11| |SORE DA| +|08/01/2022 07:22:16| |TRACKSUIT TAEKO| +|08/01/2022 07:22:17| |Momo can marry me| +|08/01/2022 07:22:17| |sORE DA| +|08/01/2022 07:22:17| |AD EROS| +|08/01/2022 07:22:18| |sore da| +|08/01/2022 07:22:20| |SORE DA| +|08/01/2022 07:22:22| |Hoshino must be cold in that shirt| +|08/01/2022 07:22:24| |SORE DA| +|08/01/2022 07:22:28| |momo is shit| +|08/01/2022 07:22:30| |why tf do they do that| +|08/01/2022 07:22:30| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 07:22:30| |Ducks have the best winter down| +|08/01/2022 07:22:31| |I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HAT| +|08/01/2022 07:22:35| |SORE DA| +|08/01/2022 07:22:35| |RIP MOMO RIP MOMO | +|08/01/2022 07:22:37| |does momo have the mental capability to consent?| +|08/01/2022 07:22:41| |momo loves big black cocks| +|08/01/2022 07:22:41| |AY OH| +|08/01/2022 07:22:42| |>perfect attendance and still this retarded| +|08/01/2022 07:22:42| |MOMO IS GREAT STOP BEING A FAG| +|08/01/2022 07:22:44| |A O| +|08/01/2022 07:22:44| no +|08/01/2022 07:22:45| NARUHODO +|08/01/2022 07:22:47| |please do not bully momo| +|08/01/2022 07:22:48| OH +|08/01/2022 07:22:48| |A O| +|08/01/2022 07:22:49| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 07:22:50| |is DF "Seamless" as well?| +|08/01/2022 07:22:50| |A O| +|08/01/2022 07:22:51| |all problems can be solved with senshadou| +|08/01/2022 07:22:51| |A O| +|08/01/2022 07:22:55| |MOMO SUCKS AND NOT IN A GOOD WAY| +|08/01/2022 07:22:56| |FUCK I MISSED THE WHOLE LAST HALF OF THE MOVIE| +|08/01/2022 07:22:57| |This video is hosted at www.xvideos.com| +|08/01/2022 07:22:57| |A A O| +|08/01/2022 07:23:03| |AO ToT| +|08/01/2022 07:23:03| |momo is a good girl and needs sex NOW| +|08/01/2022 07:23:04| |stupid ass momo should just marry me| +|08/01/2022 07:23:06| """commander""" +|08/01/2022 07:23:07| |Perfect attendance can't help exams though| +|08/01/2022 07:23:07| MEGUMIN?! +|08/01/2022 07:23:07| |>school closure, school closure, getting momo into uni| +|08/01/2022 07:23:08| |MOMO SUCKS AND NOT MY DICK WHICH IS A PROBLEM| +|08/01/2022 07:23:08| |thank you xvideos.com, very cool| +|08/01/2022 07:23:10| |Plumage. That’s the word I was lookin* for. | +|08/01/2022 07:23:11| |/a/ /o/| +|08/01/2022 07:23:14| |RAPE CORRECTION| +|08/01/2022 07:23:18| |A A O| +|08/01/2022 07:23:20| |A A O| +|08/01/2022 07:23:20| CORRUPTION +|08/01/2022 07:23:22| |i give up arguing with momo tards| +|08/01/2022 07:23:24| |>Lolis screaming about AO| +|08/01/2022 07:23:25| |EY EY OH| +|08/01/2022 07:23:26| CARRY +|08/01/2022 07:23:28| |/a/ /a/ /o/| +|08/01/2022 07:23:29| |AAAO ToT| +|08/01/2022 07:23:29| |EVERYONE LOVES MOMO!!!! YOU GUYS SHOULD TOO!| +|08/01/2022 07:23:29| |we were arguing?| +|08/01/2022 07:23:30| |Is everyone in Ooarai retarded or something| +|08/01/2022 07:23:32| |even mako questioning this shit| +|08/01/2022 07:23:32| |THE BIDEN OF COMMANDERS| +|08/01/2022 07:23:37| |>scamming uni admissions series| +|08/01/2022 07:23:38| |we already lost hope| +|08/01/2022 07:23:40| |But how will they possibly defeat the FINNS?| +|08/01/2022 07:23:42| |>Momo puppet state| +|08/01/2022 07:23:43| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 07:23:44| |now this was a bullshit reason for giving them plot armor| +|08/01/2022 07:23:46| |yes, everyone in Ooarai is retarded besides Sex| +|08/01/2022 07:23:47| |the biden of commanders LOL| +|08/01/2022 07:23:47| |GOD MIHO IS SUCH A FUCKING DORK| +|08/01/2022 07:23:51| |To prevent momo from being held back we need some form of correction| +|08/01/2022 07:23:52| |MOMO DUMB| +|08/01/2022 07:23:53| |SEETHING MOMO| +|08/01/2022 07:23:55| |NO REPEATING| +|08/01/2022 07:23:55| |>scamming uni admin THIS| +|08/01/2022 07:23:57| |just say they gotta defend their honor or some shit| +|08/01/2022 07:23:58| |i'd puppet momo| +|08/01/2022 07:23:59| |NO REPEATING| +|08/01/2022 07:23:59| |Miho a cute| +|08/01/2022 07:24:02| |NO REPEATING| +|08/01/2022 07:24:03| |MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! | +|08/01/2022 07:24:03| |just let her fail the dumbass| +|08/01/2022 07:24:03| SOSH +|08/01/2022 07:24:05| |No losses at all? Big dreams gamer club.| +|08/01/2022 07:24:09| |留年 阻止| +|08/01/2022 07:24:10| |Pupper Commander| +|08/01/2022 07:24:14| |Cope,seethe even, repeate a smester if you will| +|08/01/2022 07:24:18| |and remember: no repeats| +|08/01/2022 07:24:19| SOX!! +|08/01/2022 07:24:19| |Mark IV| +|08/01/2022 07:24:20| |TIME FOR PIRACY| +|08/01/2022 07:24:22| |holy fuck just get in the tanks already| +|08/01/2022 07:24:25| |>below deck| +|08/01/2022 07:24:26| |>Having to cheat to get into uni| +|08/01/2022 07:24:27| |What would be so bad about a job without university exam?| +|08/01/2022 07:24:27| YARR +|08/01/2022 07:24:28| |S ◯ X| +|08/01/2022 07:24:28| |YAR HAR| +|08/01/2022 07:24:30| |DO NOT FUCK THE TANKS| +|08/01/2022 07:24:30| |sodoko sodomy incoming| +|08/01/2022 07:24:32| |omg guys this is illegal how could we| +|08/01/2022 07:24:33| |Ya that fiddle-y dee| +|08/01/2022 07:24:33| |when boat staff only ova| +|08/01/2022 07:24:34| |HERE BE NIGGERS| +|08/01/2022 07:24:36| |RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +|08/01/2022 07:24:37| KONNICHIWA +|08/01/2022 07:24:42| SXARP +|08/01/2022 07:24:43| |cute ship girls| +|08/01/2022 07:24:43| |just get married you fucking sexy dumbass| +|08/01/2022 07:24:43| |Adventure game pov| +|08/01/2022 07:24:45| |I'm ready for fat Miho ass...| +|08/01/2022 07:24:47| |I WILL FUCK THE TANKS| +|08/01/2022 07:24:49| |Why the fuck does Ooarai have a slum| +|08/01/2022 07:24:49| |LITERAL UNDERWORLD| +|08/01/2022 07:24:52| |sasuga 3d animation has come so far| +|08/01/2022 07:24:55| |The rape capital of Oarai| +|08/01/2022 07:24:55| |>time to meet the gnomes(lolis) that maintain the ship| +|08/01/2022 07:24:56| |Johannesburg of Oarai| +|08/01/2022 07:24:57| |>YWN marry a pirate tankgirl| +|08/01/2022 07:24:58| |get ready for miho ass| +|08/01/2022 07:24:58| |FIRST PERSON| +|08/01/2022 07:24:59| |How did they get away with this lmao| +|08/01/2022 07:25:00| |HERE BE NIGERIANS| +|08/01/2022 07:25:01| |RUM IS MINE OK?| +|08/01/2022 07:25:02| |Ooarai homeless camp| +|08/01/2022 07:25:03| |KINO FIRST PERSON| +|08/01/2022 07:25:04| |THE NIGGERS OF NIPPON| +|08/01/2022 07:25:04| |Just enter with a tank scholarship. Didn't some of Alice uni team do that?| +|08/01/2022 07:25:05| SASUGA +|08/01/2022 07:25:06| |There could be niggers here... | +|08/01/2022 07:25:06| WOAH +|08/01/2022 07:25:06| |OOARAI THIRD WORLD SHITHOLE RUN BY NIGGERS| +|08/01/2022 07:25:08| |but why is johannesburg lawless?| +|08/01/2022 07:25:08| |GODHAND NIPPERS| +|08/01/2022 07:25:08| |bc is less class divided then this| +|08/01/2022 07:25:09| |brazil be like| +|08/01/2022 07:25:12| DRAW +|08/01/2022 07:25:13| |gunslinger hana| +|08/01/2022 07:25:14| |>forced animation doesn't exist| +|08/01/2022 07:25:14| |DON'T TOUCH BARBED WIRE LIKE THAT| +|08/01/2022 07:25:15| |>carbon coated pliers| +|08/01/2022 07:25:15| |das rascit| +|08/01/2022 07:25:16| |Becareful of the Mutant cannibals| +|08/01/2022 07:25:18| |WOW MANILA| +|08/01/2022 07:25:20| |This film is dedicated to the brave delinquent fighters of Johannesburg| +|08/01/2022 07:25:21| |DO IT| +|08/01/2022 07:25:23| |carbon coated hands| +|08/01/2022 07:25:25| HOBOS +|08/01/2022 07:25:26| N +|08/01/2022 07:25:27| s-sugoi +|08/01/2022 07:25:28| |Oh boy time for the Shark Jobbers| +|08/01/2022 07:25:28| |good thing I'm packing heat| +|08/01/2022 07:25:28| |druggies galore| +|08/01/2022 07:25:29| |CUTE DELINQUENTS| +|08/01/2022 07:25:30| |THIS IS WHAT HAPPENS WHEN LITTLE GIRLS RUN SHIPS| +|08/01/2022 07:25:32| |>ywn seggs with punk ooarai| +|08/01/2022 07:25:33| |Hana might be an assassin| +|08/01/2022 07:25:35| |"You want to buy killer sticks?| +|08/01/2022 07:25:36| |HANA uses cut its super effective| +|08/01/2022 07:25:36| KAPPA +|08/01/2022 07:25:37| |on foe nem| +|08/01/2022 07:25:39| |BLACK METAL| +|08/01/2022 07:25:42| former +|08/01/2022 07:25:43| druggies +|08/01/2022 07:25:45| nigger +|08/01/2022 07:25:46| |OMORI REFERENCE!!!!| +|08/01/2022 07:25:46| |Ooarai Necromunda| +|08/01/2022 07:25:47| |I WANT DELINQUENTS TO KIDNAP ME| +|08/01/2022 07:25:48| |formerly the president| +|08/01/2022 07:25:50| KAPPA +|08/01/2022 07:25:50| |OOARAI = BRAZIL| +|08/01/2022 07:25:50| |Slums in a ship?| +|08/01/2022 07:25:52| |>too long| +|08/01/2022 07:25:53| >FORMER +|08/01/2022 07:25:54| Toecutter? +|08/01/2022 07:25:54| |THE FEDS| +|08/01/2022 07:25:55| toecutter-chan! +|08/01/2022 07:25:55| |>skirts too long| +|08/01/2022 07:25:57| |>TOO LONG| +|08/01/2022 07:25:59| |The fucking girls are looking like FotNS baddies| +|08/01/2022 07:26:02| |>need seggs with yankee white hair| +|08/01/2022 07:26:03| |that's a boy| +|08/01/2022 07:26:03| KAPPA +|08/01/2022 07:26:04| |TO THE RAPE CAVE| +|08/01/2022 07:26:04| ARRRRRRRRRREEEEEEEEEEEEEE +|08/01/2022 07:26:05| |Delinquents belong in a TANK| +|08/01/2022 07:26:06| KAPPA +|08/01/2022 07:26:07| KAPPA +|08/01/2022 07:26:07| |K A P P A| +|08/01/2022 07:26:07| |shaved eyebrow moe~| +|08/01/2022 07:26:09| |TAKE ME TO THE BROTHELS| +|08/01/2022 07:26:09| areeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +|08/01/2022 07:26:10| |>skirts too long| +|08/01/2022 07:26:10| RAPED +|08/01/2022 07:26:11| AAAAAAAAAAAAAAA +|08/01/2022 07:26:11| KAPPA +|08/01/2022 07:26:12| rape +|08/01/2022 07:26:13| RAPE +|08/01/2022 07:26:13| AREEEEEEEEEEEEEE +|08/01/2022 07:26:14| |This ghetto needs cleaning| +|08/01/2022 07:26:14| RAPE +|08/01/2022 07:26:15| AREEEEEEEEEEEE +|08/01/2022 07:26:16| |SODOKO SODOMY| +|08/01/2022 07:26:16| rape +|08/01/2022 07:26:17| >abduction +|08/01/2022 07:26:17| RAPE +|08/01/2022 07:26:18| NTR +|08/01/2022 07:26:18| MINDBREAK +|08/01/2022 07:26:18| |Chase scene| +|08/01/2022 07:26:19| |The horror, the horror| +|08/01/2022 07:26:21| |I want to kidnap Sodoko too!| +|08/01/2022 07:26:21| KINO +|08/01/2022 07:26:21| |RAPE CORRECTION| +|08/01/2022 07:26:21| YAREYARE +|08/01/2022 07:26:22| KINO +|08/01/2022 07:26:22| |rape rape rape| +|08/01/2022 07:26:23| |KINO SHOTS| +|08/01/2022 07:26:24| |>this cg| +|08/01/2022 07:26:25| AAAAREEEE +|08/01/2022 07:26:27| |I AM MIHO| +|08/01/2022 07:26:27| |SAORI BUTT INCOMING| +|08/01/2022 07:26:27| KINO +|08/01/2022 07:26:28| |wow it's like i'm really there| +|08/01/2022 07:26:28| POV +|08/01/2022 07:26:29| |3D SODOKO| +|08/01/2022 07:26:30| KINO +|08/01/2022 07:26:30| |>rape kino| +|08/01/2022 07:26:30| ASS +|08/01/2022 07:26:32| >3d +|08/01/2022 07:26:32| |RAPE CORRECTION| +|08/01/2022 07:26:32| |which game is this?| +|08/01/2022 07:26:32| |get ready for miho asssssssssssssss| +|08/01/2022 07:26:33| AAAAAAREEEEEEEE +|08/01/2022 07:26:33| |We Doom now.| +|08/01/2022 07:26:34| |THAT 3D IS GARBO| +|08/01/2022 07:26:35| |POV SEQUENCE| +|08/01/2022 07:26:36| |soari ass| +|08/01/2022 07:26:36| |so immersive...| +|08/01/2022 07:26:38| WEW +|08/01/2022 07:26:38| |Miho's fat butt| +|08/01/2022 07:26:38| |ASS TOO FAT| +|08/01/2022 07:26:38| |FAT ASS| +|08/01/2022 07:26:38| |MIHO ASS| +|08/01/2022 07:26:39| ASS +|08/01/2022 07:26:39| |MIHO'S FAT ASS| +|08/01/2022 07:26:40| ASS +|08/01/2022 07:26:40| |FAT BUTT| +|08/01/2022 07:26:40| |HAYAII SUCH SPEED| +|08/01/2022 07:26:42| |B UTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTt| +|08/01/2022 07:26:42| ASS +|08/01/2022 07:26:42| AHHHHHHHH +|08/01/2022 07:26:42| |Imagine if these delinquents graduate before Momo does. Even more embarassment.| +|08/01/2022 07:26:42| E1M1 +|08/01/2022 07:26:43| FAT +|08/01/2022 07:26:43| ASS +|08/01/2022 07:26:43| SNIFFFF +|08/01/2022 07:26:44| ded +|08/01/2022 07:26:44| GIWTWM +|08/01/2022 07:26:44| |i came| +|08/01/2022 07:26:45| |BUTTE HOLD| +|08/01/2022 07:26:46| kino +|08/01/2022 07:26:46| fat +|08/01/2022 07:26:46| |based yukari| +|08/01/2022 07:26:47| |HOLY FUCK HER ASS IS ENORMOUS| +|08/01/2022 07:26:48| SASUGA +|08/01/2022 07:26:49| |Yukari is agile | +|08/01/2022 07:26:49| |this scene is just fucking hilarious| +|08/01/2022 07:26:49| |Reminder that Yukari is packing right now| +|08/01/2022 07:26:50| GMT +|08/01/2022 07:26:52| SEX +|08/01/2022 07:26:52| |GOD I WISH THAT WAS ME| +|08/01/2022 07:26:52| |god I wish that were me| +|08/01/2022 07:26:55| |Nice ass| +|08/01/2022 07:26:55| WEW +|08/01/2022 07:26:55| |god I wish that were me| +|08/01/2022 07:26:55| |KINO INCOMING| +|08/01/2022 07:26:56| |GOD I WISH| +|08/01/2022 07:26:56| |DAT ASS WAS FAT| +|08/01/2022 07:26:57| |ASS STUCK ASS STUCK... PLEASE| +|08/01/2022 07:26:57| |THEY'RE FUCKING DEAD| +|08/01/2022 07:26:58| |HAHA BUTTE HOLD| +|08/01/2022 07:26:59| |Kino drives a motorrad, not a tank you retards| +|08/01/2022 07:27:00| |>yukari just fucking lands it| +|08/01/2022 07:27:00| rrats +|08/01/2022 07:27:02| |yukair got that THANG| +|08/01/2022 07:27:06| |PHAT ASSES| +|08/01/2022 07:27:07| |GMT GMT!| +|08/01/2022 07:27:08| |would help unstuck that ass| +|08/01/2022 07:27:08| |Dark Souls 2| +|08/01/2022 07:27:09| |YUKARI FLIP| +|08/01/2022 07:27:09| |that would be a glorious death| +|08/01/2022 07:27:10| |IT'S THE SEX ROOM| +|08/01/2022 07:27:13| Dork! +|08/01/2022 07:27:14| YARR +|08/01/2022 07:27:15| |SOMALI PIRATES| +|08/01/2022 07:27:15| FLINT +|08/01/2022 07:27:16| |invisible wall ahead| +|08/01/2022 07:27:16| DORK +|08/01/2022 07:27:17| |so where is she keeping that masher?| +|08/01/2022 07:27:19| |sex dungeon| +|08/01/2022 07:27:19| |YO HO| +|08/01/2022 07:27:20| |SING ALONG, FOLKS| +|08/01/2022 07:27:21| |RED ROOM| +|08/01/2022 07:27:21| |the brothel...| +|08/01/2022 07:27:22| |that place looks lewd| +|08/01/2022 07:27:22| |YO HO| +|08/01/2022 07:27:22| YAR +|08/01/2022 07:27:22| |some of you guys are really behind, f5| +|08/01/2022 07:27:22| |RED LIGHT COMPARTMENT| +|08/01/2022 07:27:24| |Her hair duch| +|08/01/2022 07:27:24| |illusory wall ahead| +|08/01/2022 07:27:25| |fuck you sharkies| +|08/01/2022 07:27:25| |FLING FLINT FLINT FLINT| +|08/01/2022 07:27:26| |>forcing sudako to work in a brothel| +|08/01/2022 07:27:27| |I HATE FLINT| +|08/01/2022 07:27:27| Clonk +|08/01/2022 07:27:27| |Up her pooper| +|08/01/2022 07:27:30| |YO HOOO| +|08/01/2022 07:27:31| |liar ahead| +|08/01/2022 07:27:31| HOE +|08/01/2022 07:27:31| |im entering into the sex room | +|08/01/2022 07:27:32| yohoho +|08/01/2022 07:27:35| |fuck flint| +|08/01/2022 07:27:36| HEY +|08/01/2022 07:27:36| |cute flint| +|08/01/2022 07:27:38| |WORST TEAM| +|08/01/2022 07:27:40| |BEST GIRL FLINT| +|08/01/2022 07:27:40| HEY +|08/01/2022 07:27:41| |the fuck is this| +|08/01/2022 07:27:42| HEY! +|08/01/2022 07:27:43| |momo = flint| +|08/01/2022 07:27:43| |SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX| +|08/01/2022 07:27:43| |HEJ HEJ HEJ SOKOLY| +|08/01/2022 07:27:43| |Shut the fuck up Flint| +|08/01/2022 07:27:43| |BEST TEAM| +|08/01/2022 07:27:44| SAA +|08/01/2022 07:27:45| |sekgs dungeon| +|08/01/2022 07:27:45| YAR +|08/01/2022 07:27:47| |What will we will do with a drunken sailor| +|08/01/2022 07:27:49| |fuck pirates| +|08/01/2022 07:27:49| |It's not even real alcohol| +|08/01/2022 07:27:50| |ROW ROW| +|08/01/2022 07:27:51| |RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +|08/01/2022 07:27:51| HEY +|08/01/2022 07:27:53| SAA +|08/01/2022 07:27:53| |Worst team, Worst Tank| +|08/01/2022 07:27:55| |i like the part where yukari explains a tank to these retards| +|08/01/2022 07:27:55| |B A N G E R| +|08/01/2022 07:27:56| |Even anglerfish team is confused| +|08/01/2022 07:27:56| |This ain't a red light district. I want my money back| +|08/01/2022 07:27:57| |Just show the Cute Lass and nobody gets hurt| +|08/01/2022 07:27:57| |Really should have been an alestorm cover.| +|08/01/2022 07:27:58| |Her design is so good but she's so useless, bros...| +|08/01/2022 07:27:59| Cutelass +|08/01/2022 07:28:00| |RUM HOURS| +|08/01/2022 07:28:00| |I'm fucking drunk| +|08/01/2022 07:28:00| |RUM RUM RUM RUM RUM RUM RUM RUM| +|08/01/2022 07:28:01| |A CUTE LASS| +|08/01/2022 07:28:01| |"PLUNDER AND SPLIT THE BOOTY"| +|08/01/2022 07:28:03| CUTLASS!!! +|08/01/2022 07:28:03| |there's the red haired uggo| +|08/01/2022 07:28:04| |Not Wir lagen vor Madagaskar| +|08/01/2022 07:28:07| |RUM IS UGLY| +|08/01/2022 07:28:07| |JOBBER SQUAD| +|08/01/2022 07:28:07| CUTLASS +|08/01/2022 07:28:08| |cutlass only redemption| +|08/01/2022 07:28:09| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 07:28:12| |menu o dozo| +|08/01/2022 07:28:13| |RUM IS MINE| +|08/01/2022 07:28:14| |CUTE ASS!| +|08/01/2022 07:28:16| |mako still hasn't got a milkshake| +|08/01/2022 07:28:18| |MILK DRINKERS| +|08/01/2022 07:28:20| |cute pirate larpers | +|08/01/2022 07:28:21| |DRINK FROM SAORI'S TITS| +|08/01/2022 07:28:23| |Miluk SEKI| +|08/01/2022 07:28:26| OPPAI +|08/01/2022 07:28:27| |mojito pls| +|08/01/2022 07:28:28| |SODOKO DOKO?| +|08/01/2022 07:28:29| MAMA +|08/01/2022 07:28:30| |>it's PA equipment rather than an actual kareoke machine| +|08/01/2022 07:28:31| |MOMMY MILKIES| +|08/01/2022 07:28:32| |I WANT TO DRINK FROM MURAKAMI| +|08/01/2022 07:28:34| |WELCOME TO THE SALTY SPITOON, HOW TOUGH ARE YA?| +|08/01/2022 07:28:34| |MILK THE SEAL| +|08/01/2022 07:28:35| |HOTO COCOA| +|08/01/2022 07:28:37| |>go home and suck on your mom's tits| +|08/01/2022 07:28:38| |MOMMMY MILKIES| +|08/01/2022 07:28:40| |I ways thought Rum was as tiny as Mako| +|08/01/2022 07:28:40| WHO? +|08/01/2022 07:28:44| DORK +|08/01/2022 07:28:46| |GOD I WISH| +|08/01/2022 07:28:46| |Bartender smart. Can't earn rupees if they don't order first| +|08/01/2022 07:28:47| SLAVERY +|08/01/2022 07:28:49| |I had a bowl of nail for breakfast...| +|08/01/2022 07:28:49| |THE DORK| +|08/01/2022 07:28:52| SLAVE +|08/01/2022 07:28:52| |CLEAN IT UP JANNY| +|08/01/2022 07:28:56| |sodoko slave| +|08/01/2022 07:28:56| |God the sound design in this shit is too good| +|08/01/2022 07:28:57| |>being a landlover despite being at sea| +|08/01/2022 07:28:58| |Only Mako can rape her| +|08/01/2022 07:28:59| |get the fuck out of my way| +|08/01/2022 07:28:59| |BIG GIRL| +|08/01/2022 07:28:59| Yes +|08/01/2022 07:29:02| |SODOKO SLAVERY| +|08/01/2022 07:29:04| Jannyko +|08/01/2022 07:29:04| |Fuckin slaves| +|08/01/2022 07:29:05| |>she does it for free| +|08/01/2022 07:29:05| |fatass mukririmrimriamrimr| +|08/01/2022 07:29:06| |THANK YOU SABAKU!| +|08/01/2022 07:29:07| |>YWN HAVE A SODOKO SEX SLAVE| +|08/01/2022 07:29:07| |>she does it for free| +|08/01/2022 07:29:08| |BIG GUY| +|08/01/2022 07:29:10| |Without any soymilk....| +|08/01/2022 07:29:11| |cute drunk| +|08/01/2022 07:29:12| |FOCRING SODOKO TO CLEANM YOUR SHITHOLEEEEEEEE| +|08/01/2022 07:29:13| |RUM A CUTE| +|08/01/2022 07:29:14| |SHE THICCC| +|08/01/2022 07:29:15| DIO +|08/01/2022 07:29:18| |JUST WHACK THEM WITH THE BALL| +|08/01/2022 07:29:19| |RUM A SHIT| +|08/01/2022 07:29:23| |Now that's a FAT girl| +|08/01/2022 07:29:25| |THE ABSOLUTE UNIT| +|08/01/2022 07:29:25| |Rum is cute!| +|08/01/2022 07:29:26| |shoot them| +|08/01/2022 07:29:26| |DRIKING RUM FROM THE BOTTLE| +|08/01/2022 07:29:28| |Sodoko got scammed. No pay and all work?| +|08/01/2022 07:29:28| fatass +|08/01/2022 07:29:28| PUHAAAAA +|08/01/2022 07:29:29| \m/ +|08/01/2022 07:29:30| |HEIL VICE PRESIDENT YUKARI| +|08/01/2022 07:29:30| WEH +|08/01/2022 07:29:30| |big girl!!| +|08/01/2022 07:29:30| |oh god shes hot| +|08/01/2022 07:29:30| |miho fucking dork| +|08/01/2022 07:29:32| |FAT TURTLES| +|08/01/2022 07:29:37| |YUKARI NO| +|08/01/2022 07:29:37| |Underaged Drinking | +|08/01/2022 07:29:40| UEH +|08/01/2022 07:29:40| UEE +|08/01/2022 07:29:43| HWEH +|08/01/2022 07:29:44| |Oka no fune | +|08/01/2022 07:29:46| UEH +|08/01/2022 07:29:46| RETARDS +|08/01/2022 07:29:47| |SHE'S MAD| +|08/01/2022 07:29:47| |FLUFF MAD| +|08/01/2022 07:29:48| |KILL THEM ALL YUKARI| +|08/01/2022 07:29:50| |yukari has the stick grenade up her ass right now| +|08/01/2022 07:29:51| |Yukari gonna commit warcrimes| +|08/01/2022 07:29:52| |RUM IS BOTH CUTE AND MINE| +|08/01/2022 07:29:52| |do it| +|08/01/2022 07:29:53| KILL +|08/01/2022 07:29:56| |I'LL TAKE YOU ALL WITH ME| +|08/01/2022 07:29:57| MOGGED +|08/01/2022 07:29:58| |BLOW THEM UP| +|08/01/2022 07:29:59| |based yukari| +|08/01/2022 07:29:59| |Fat turtle driver here| +|08/01/2022 07:30:00| AUTISM +|08/01/2022 07:30:01| |NO ONE FUCKING CARES ABOUT RUM| +|08/01/2022 07:30:03| |RESPECT YOUR ELDERS| +|08/01/2022 07:30:05| EZ +|08/01/2022 07:30:05| MASAKA +|08/01/2022 07:30:06| HAYAI +|08/01/2022 07:30:06| ??? +|08/01/2022 07:30:07| NERD +|08/01/2022 07:30:08| |I love Rum. Best shark, fight me| +|08/01/2022 07:30:08| |YUKAIR NEEDS BLOOD| +|08/01/2022 07:30:08| |GET FUCKED LARPER| +|08/01/2022 07:30:09| NANI +|08/01/2022 07:30:09| |>you should be able to solve this| +|08/01/2022 07:30:09| NANI +|08/01/2022 07:30:10| |Yukari making a fuckin popeye face lmafao| +|08/01/2022 07:30:12| H-HAYAI +|08/01/2022 07:30:13| |YUKARI BASED ACCEPT ALLAH'S JUDGMENT| +|08/01/2022 07:30:14| |YUKARI POWER| +|08/01/2022 07:30:15| ???????????????? +|08/01/2022 07:30:16| HAYAI +|08/01/2022 07:30:16| SEMAPHORE +|08/01/2022 07:30:17| |SEGGGS WITH CUTLASS| +|08/01/2022 07:30:19| |I DECLARE A THUMB WAR| +|08/01/2022 07:30:20| |Planes > Tanks > Shit >>>>> Boats| +|08/01/2022 07:30:21| MHMHMHMHMHMHHMHMHMHMHMHHM +|08/01/2022 07:30:21| MASAKA +|08/01/2022 07:30:22| NANI +|08/01/2022 07:30:22| |"The pleasure of being cummed inside"| +|08/01/2022 07:30:23| |Sayori mind| +|08/01/2022 07:30:25| GO +|08/01/2022 07:30:27| GOTEM +|08/01/2022 07:30:27| L@DY +|08/01/2022 07:30:27| |yukari is so fucking based| +|08/01/2022 07:30:28| |PARTY HARD| +|08/01/2022 07:30:29| GO +|08/01/2022 07:30:29| BTFO +|08/01/2022 07:30:32| LEWD +|08/01/2022 07:30:34| INTENSE +|08/01/2022 07:30:35| DANCE +|08/01/2022 07:30:36| KINO +|08/01/2022 07:30:36| |autism levels too extreme| +|08/01/2022 07:30:37| |Strong is?| +|08/01/2022 07:30:37| UUUOOOOOHHHH +|08/01/2022 07:30:39| |>uncensored handholding| +|08/01/2022 07:30:40| |is this sex?| +|08/01/2022 07:30:40| RAPE +|08/01/2022 07:30:40| Intense +|08/01/2022 07:30:42| |High actions thumb fighting| +|08/01/2022 07:30:42| DESTROYED!!!!!! +|08/01/2022 07:30:44| |lets go miho fuck her up| +|08/01/2022 07:30:44| |KA KA KA KA KA KACHI DAZE| +|08/01/2022 07:30:44| BDSM +|08/01/2022 07:30:44| |absolute size of this lass| +|08/01/2022 07:30:46| |ULTRA SPINE| +|08/01/2022 07:30:49| |FUCK EM UP MIHO| +|08/01/2022 07:30:49| |Fists are slower than AP shells| +|08/01/2022 07:30:49| MOGGED +|08/01/2022 07:30:50| |ULTRA INSTINCT MIHO| +|08/01/2022 07:30:50| |u u u u| +|08/01/2022 07:30:50| FIGHT +|08/01/2022 07:30:52| |IMAGING THAT HAND ON YOUR PP| +|08/01/2022 07:30:52| |I'd let mako play with my gearstick| +|08/01/2022 07:30:53| |Casually dodges tank shells for a living| +|08/01/2022 07:30:54| |become water| +|08/01/2022 07:30:55| |CUTLASS DEAD| +|08/01/2022 07:30:55| |Mako's dangerous. | +|08/01/2022 07:30:57| |GA GA GA GACHI DAZE| +|08/01/2022 07:30:57| OX>GEN +|08/01/2022 07:30:59| |SHE'S FAST| +|08/01/2022 07:31:00| F +|08/01/2022 07:31:00| |Strong neck because???| +|08/01/2022 07:31:01| PREDICTABO +|08/01/2022 07:31:01| SUMIMASEN +|08/01/2022 07:31:02| PXYGEM +|08/01/2022 07:31:02| F +|08/01/2022 07:31:02| |GUN GUN GUN GUN WO MIHO| +|08/01/2022 07:31:02| |She's not carbon coated| +|08/01/2022 07:31:03| FUCK +|08/01/2022 07:31:03| |OPERATION PUNCHY| +|08/01/2022 07:31:04| |kino fight scene| +|08/01/2022 07:31:05| |CUTLASS IS DEAD| +|08/01/2022 07:31:06| 8888888888 +|08/01/2022 07:31:06| |DEX> STR| +|08/01/2022 07:31:07| |NECK STRENGTH | +|08/01/2022 07:31:07| F +|08/01/2022 07:31:08| H-HAYAI +|08/01/2022 07:31:08| STRONG +|08/01/2022 07:31:08| DESTROYED +|08/01/2022 07:31:09| SUMIMASEN +|08/01/2022 07:31:09| |who could beat the demon of ooarai in a fight?| +|08/01/2022 07:31:09| HAYAI +|08/01/2022 07:31:09| MOGGED +|08/01/2022 07:31:11| |Carbon plated neck| +|08/01/2022 07:31:12| |That back| +|08/01/2022 07:31:12| 88888888 +|08/01/2022 07:31:12| |>that spine| +|08/01/2022 07:31:13| |FRIENDLY FIRE ON| +|08/01/2022 07:31:13| |Miho has too many I frames| +|08/01/2022 07:31:13| Inshallah +|08/01/2022 07:31:14| |she's been carbon coated| +|08/01/2022 07:31:14| |poor Cutelass| +|08/01/2022 07:31:14| HANDSTIELGRANATE +|08/01/2022 07:31:14| |allah akbar| +|08/01/2022 07:31:15| |YUKARI NO| +|08/01/2022 07:31:16| AAAAAAAAAAA +|08/01/2022 07:31:17| |STR FAGS SEETHING| +|08/01/2022 07:31:17| |YUKARI NO DONT| +|08/01/2022 07:31:17| |CUTLASS NO| +|08/01/2022 07:31:18| |ALLAHU AKBAR| +|08/01/2022 07:31:19| |YUKARI NO| +|08/01/2022 07:31:19| |A FUCKING GRENADE| +|08/01/2022 07:31:19| |YUKARI NO| +|08/01/2022 07:31:20| |YUKARI YES| +|08/01/2022 07:31:20| |YUKAIR BLOW IT| +|08/01/2022 07:31:20| |SHE HAS A GRENADE| +|08/01/2022 07:31:22| |DEX > STR| +|08/01/2022 07:31:22| |ullapool caber!| +|08/01/2022 07:31:22| |LIKE HELL I'M NOT TAKIN YOU WITH ME| +|08/01/2022 07:31:23| NADE +|08/01/2022 07:31:23| |YUKARI NO| +|08/01/2022 07:31:23| |ALLAHU AKBAR| +|08/01/2022 07:31:23| |the fucking granade lmao| +|08/01/2022 07:31:23| |I'LL KILL US ALL| +|08/01/2022 07:31:24| |A FUCKING GRENADE| +|08/01/2022 07:31:24| |YUKARI | +|08/01/2022 07:31:24| |POTATO MASHER| +|08/01/2022 07:31:24| |GO WITH ALLAH| +|08/01/2022 07:31:26| |WITNESS ME| +|08/01/2022 07:31:26| |POTATO MASHER!| +|08/01/2022 07:31:26| |right from her ass| +|08/01/2022 07:31:27| |>A FUCKING HANDGRENADE| +|08/01/2022 07:31:27| |YUKARI NOOOOOOO| +|08/01/2022 07:31:28| |A FUCKING GRENADE| +|08/01/2022 07:31:28| INSHALLAH +|08/01/2022 07:31:30| |Allahu akbar| +|08/01/2022 07:31:30| steilhandgranate +|08/01/2022 07:31:30| INSHALLAH +|08/01/2022 07:31:31| |WTF YUKARI| +|08/01/2022 07:31:31| |DEX FAGS| +|08/01/2022 07:31:31| ENTER +|08/01/2022 07:31:32| |A FUCKING GRENADE| +|08/01/2022 07:31:32| |INSHALLA YUKARI| +|08/01/2022 07:31:34| ISHALLAH +|08/01/2022 07:31:35| |SHES A BOMB| +|08/01/2022 07:31:35| |>A FUCKING POTATO MASHER| +|08/01/2022 07:31:36| |Always the bartender getting the end of the stick| +|08/01/2022 07:31:36| |A FUCKING GRENADE| +|08/01/2022 07:31:37| |DEX FAGS| +|08/01/2022 07:31:39| |You were there?| +|08/01/2022 07:31:40| |SHES GOT A BOMB| +|08/01/2022 07:31:43| |fucking larpers| +|08/01/2022 07:31:44| |LOOK IT'S CAPTAIN HARLOCK| +|08/01/2022 07:31:47| |A FUCKING GRENADE| +|08/01/2022 07:31:47| |>NON ALCOHOLIC| +|08/01/2022 07:31:48| |oh boy here comes captain larp| +|08/01/2022 07:31:50| |>non alcoholic| +|08/01/2022 07:31:51| >non-alcoholic +|08/01/2022 07:31:52| |I didn't know being a DEXfag meant carring a fucking bomb| +|08/01/2022 07:31:53| |>non-alhocolic rum| +|08/01/2022 07:31:53| F +|08/01/2022 07:31:53| ded +|08/01/2022 07:31:54| |whats the point| +|08/01/2022 07:31:56| KARAI +|08/01/2022 07:31:57| |Yukari is so goddamn intense| +|08/01/2022 07:31:57| oishisou +|08/01/2022 07:31:59| :3 +|08/01/2022 07:32:00| |>NON-ALCOHOLIC RUM| +|08/01/2022 07:32:03| |NONDE NONDE| +|08/01/2022 07:32:04| |I HATE THESE LARPERS| +|08/01/2022 07:32:07| |Ghost pepper sauce| +|08/01/2022 07:32:09| PEPPA +|08/01/2022 07:32:10| |these chicks drinking tabasco| +|08/01/2022 07:32:11| |Hana bout to hit that mf chug jug| +|08/01/2022 07:32:12| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 07:32:13| |>non alchoholic| +|08/01/2022 07:32:18| |where can I buy non-alcoholic rum| +|08/01/2022 07:32:20| |CHUG CHUG CHUG CHUG| +|08/01/2022 07:32:24| |you see, my special ability is to get drunk| +|08/01/2022 07:32:25| |Stomach of steel| +|08/01/2022 07:32:27| |CHUG CHUG FUG FUG| +|08/01/2022 07:32:30| |it begiiiiiins| +|08/01/2022 07:32:34| |Legolas and Gimli| +|08/01/2022 07:32:34| YAMERO +|08/01/2022 07:32:36| >non-alcoholic +|08/01/2022 07:32:39| |hana is good at this because...| +|08/01/2022 07:32:39| |spicy buttholes| +|08/01/2022 07:32:40| |big whoop, i do this every night| +|08/01/2022 07:32:44| |Damn Hana she’s more heavy weight than me| +|08/01/2022 07:32:45| |God imagine the shits next day| +|08/01/2022 07:32:46| |CHUG CHUG CHUG CHUG CHUG CHUG | +|08/01/2022 07:32:46| |IMAGINE THE TOILET AFTERMATH| +|08/01/2022 07:32:48| |Hana going to show you a good time| +|08/01/2022 07:32:48| |literally me| +|08/01/2022 07:32:48| |BRING IT ON| +|08/01/2022 07:32:50| |You drink ghost pepper sauce?| +|08/01/2022 07:32:51| |She can swallow anything without tasting it.| +|08/01/2022 07:32:51| |God I love to drink tabasco| +|08/01/2022 07:32:54| |imagine the smell| +|08/01/2022 07:32:57| |I love that 90's hair| +|08/01/2022 07:32:57| |BEST LARPERS IN OARAI| +|08/01/2022 07:32:58| CUTE +|08/01/2022 07:33:00| |their shits do fuel the ship...| +|08/01/2022 07:33:02| |IMAGINE THE SMELL| +|08/01/2022 07:33:05| |Which guppies would be the funnest to drink with?| +|08/01/2022 07:33:06| |(6 livers later)| +|08/01/2022 07:33:11| |>that one artist who ships mako with cutlass| +|08/01/2022 07:33:13| |>spiced rum with just the spiced| +|08/01/2022 07:33:18| |What does being a gunner have anything to do with this| +|08/01/2022 07:33:18| |I feel like I could chug a bottle of alcoholic rum| +|08/01/2022 07:33:19| |yer yer yer| +|08/01/2022 07:33:20| |I WANT TO BE HANA'S TOILET| +|08/01/2022 07:33:22| |Smell's going to be worse once it comes out the other end| +|08/01/2022 07:33:23| |Shipping mako with cutlass is kin o| +|08/01/2022 07:33:23| |Hana shits herself to death on the toilet tomorrow| +|08/01/2022 07:33:27| |Spiced rum hold the rum| +|08/01/2022 07:33:28| KINO +|08/01/2022 07:33:29| kino +|08/01/2022 07:33:32| BASED +|08/01/2022 07:33:32| |she's cooughing blood| +|08/01/2022 07:33:32| |she's fuckng hallucinating| +|08/01/2022 07:33:33| |Maho x Anchovy is KINO| +|08/01/2022 07:33:34| |LOCKED ON| +|08/01/2022 07:33:35| |tank analogies| +|08/01/2022 07:33:35| |lol what?| +|08/01/2022 07:33:36| ??? +|08/01/2022 07:33:37| |Autism takes over| +|08/01/2022 07:33:37| |imagine the smell with how little ventilation is in that room... imagine| +|08/01/2022 07:33:39| |mako-cutlass shipper artist is based| +|08/01/2022 07:33:41| |some anons here drank more than this I'm sure of it| +|08/01/2022 07:33:41| CUTE +|08/01/2022 07:33:43| MOGGED +|08/01/2022 07:33:44| |Oh i get it cuz they're shots | +|08/01/2022 07:33:45| |HANA SHIT AFTHERMATH OVA WHEN?| +|08/01/2022 07:33:45| |I LIVED BITCH!!!!| +|08/01/2022 07:33:46| |>dude this is just like shooting a tank| +|08/01/2022 07:33:48| ded +|08/01/2022 07:33:48| rip +|08/01/2022 07:33:49| |>that random pixelated shot| +|08/01/2022 07:33:49| |Bikini Atoll Shit| +|08/01/2022 07:33:50| NOOOOOOOOO +|08/01/2022 07:33:50| |Tries to do it cool| +|08/01/2022 07:33:50| |FULL BROADSIDE COMMANDER | +|08/01/2022 07:33:50| |Coughing tabasco| +|08/01/2022 07:33:51| |Imagine their chilli shits tomorrow| +|08/01/2022 07:33:52| ???????? +|08/01/2022 07:33:53| |Fucking chokes| +|08/01/2022 07:33:54| |it's over| +|08/01/2022 07:33:55| |Piratebros we got cocky....| +|08/01/2022 07:33:57| |SEA SHIPS BTFO| +|08/01/2022 07:34:00| ?????????????????????????? +|08/01/2022 07:34:00| F +|08/01/2022 07:34:00| |Oh great, she's dead| +|08/01/2022 07:34:02| |>SHE FUCKING DIED| +|08/01/2022 07:34:02| |oh i get. Taking shots| +|08/01/2022 07:34:03| |RIP IF F| +|08/01/2022 07:34:04| DEAD +|08/01/2022 07:34:06| landlubbers... +|08/01/2022 07:34:08| F +|08/01/2022 07:34:10| |I CAN'T BELIEVE SHE'S FUCKING DEAD| +|08/01/2022 07:34:10| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 07:34:12| |why is she so large| +|08/01/2022 07:34:13| |Ship sank.| +|08/01/2022 07:34:14| |>sodoko casually carries an iron ball| +|08/01/2022 07:34:21| |Landlubbers stay winning| +|08/01/2022 07:34:21| LANDSHIIIIIIPS +|08/01/2022 07:34:24| |Why are the pirates so useless| +|08/01/2022 07:34:25| |i'm taking my sodoko and leaving| +|08/01/2022 07:34:29| UHU +|08/01/2022 07:34:30| DESU +|08/01/2022 07:34:31| |They could probably ask Saunders for a spare| +|08/01/2022 07:34:32| |tanks = landships| +|08/01/2022 07:34:34| Lanship +|08/01/2022 07:34:36| |Fat turtles win| +|08/01/2022 07:34:37| OHO +|08/01/2022 07:34:37| MOMO +|08/01/2022 07:34:39| YUHU +|08/01/2022 07:34:39| |momo is not a nobody| +|08/01/2022 07:34:39| |momo got raped here once| +|08/01/2022 07:34:41| |Tanks >>>>>>>>>>>>>>>>>>>>>> Boats| +|08/01/2022 07:34:43| |MOMO | +|08/01/2022 07:34:45| AAAAAAAAA +|08/01/2022 07:34:46| |PROTECT MOMO!| +|08/01/2022 07:34:47| pinchi +|08/01/2022 07:34:49| |Momo's past when¡| +|08/01/2022 07:34:50| |REEEEEEETTTTAAAAAAAARRRRRRRDDDDDD MOMO| +|08/01/2022 07:34:50| FUG +|08/01/2022 07:34:52| |i want murakami to snap me in half| +|08/01/2022 07:34:53| |protect the boss| +|08/01/2022 07:34:57| |Momo was a nobody until they realized| +|08/01/2022 07:34:59| |EVERYONE LOVES MOMO!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 07:35:02| |SAVE MOMO| +|08/01/2022 07:35:04| |KIND AND BASED MOMO| +|08/01/2022 07:35:05| |tank thing| +|08/01/2022 07:35:05| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 07:35:07| no +|08/01/2022 07:35:08| |Momo was a delinquent | +|08/01/2022 07:35:11| |STUPID GOTTA STAY TOGETHER| +|08/01/2022 07:35:12| |yukari explains a tank to retards| +|08/01/2022 07:35:13| |OH NO SHES RETARDED| +|08/01/2022 07:35:13| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 07:35:13| |EVERYONE SAY THANKS TO MOMO| +|08/01/2022 07:35:14| |ANO DESU NEE| +|08/01/2022 07:35:14| |a tank is a penis| +|08/01/2022 07:35:14| autism +|08/01/2022 07:35:15| |What the fuck is a tank| +|08/01/2022 07:35:16| |do you have to leave the ship if you are expelled?| +|08/01/2022 07:35:17| |momo should be killed| +|08/01/2022 07:35:20| |I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO | +|08/01/2022 07:35:20| |why is yukari so based| +|08/01/2022 07:35:21| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +|08/01/2022 07:35:24| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 07:35:24| UMAI +|08/01/2022 07:35:25| |What the fuck is a tank| +|08/01/2022 07:35:26| umai +|08/01/2022 07:35:26| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 07:35:26| |Momo let these delinquent larpers stay| +|08/01/2022 07:35:28| |Smoked sausage | +|08/01/2022 07:35:29| |what the fuck| +|08/01/2022 07:35:31| |YUKAIR DORK| +|08/01/2022 07:35:31| |literally image the smell| +|08/01/2022 07:35:31| Sausage +|08/01/2022 07:35:31| DESHOU +|08/01/2022 07:35:33| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +|08/01/2022 07:35:34| |god I wish that sausage was me| +|08/01/2022 07:35:36| |Can't be lonely if you cover for the almost expelled| +|08/01/2022 07:35:39| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 07:35:40| SNIFFFFFFFFFFFFFFFFFFFFFF +|08/01/2022 07:35:42| |putting meat into mako| +|08/01/2022 07:35:43| |MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX | +|08/01/2022 07:35:43| |MY WIFE RUM| +|08/01/2022 07:35:44| |MALCOM REED APPROVES| +|08/01/2022 07:35:47| hot +|08/01/2022 07:35:47| |I love Rum fuight me| +|08/01/2022 07:35:51| |She ate a frozen sausage| +|08/01/2022 07:35:51| |I love sausage| +|08/01/2022 07:35:54| |sex with manko| +|08/01/2022 07:35:56| |shitty ass tank| +|08/01/2022 07:35:58| |slap those sausages and mine| +|08/01/2022 07:35:59| |YES RIDE ME PIRATE GIRL| +|08/01/2022 07:36:00| |i love cock no homo| +|08/01/2022 07:36:04| |The meats always make me hungry for them| +|08/01/2022 07:36:04| |smoking meat is pretty great| +|08/01/2022 07:36:06| |I WANNA FEED MAKO MY SAUSAGE| +|08/01/2022 07:36:06| |CUTE LASS| +|08/01/2022 07:36:09| LANDPIRATES +|08/01/2022 07:36:09| |Thats homo dude| +|08/01/2022 07:36:11| |Riboruba Osherottu| +|08/01/2022 07:36:13| |sargasso pls snusnu| +|08/01/2022 07:36:14| |holy fuck these chuuni| +|08/01/2022 07:36:17| |Aren't they still undercrewed| +|08/01/2022 07:36:17| |i said no homo| +|08/01/2022 07:36:18| |STUPID SEXY FLINT| +|08/01/2022 07:36:20| |EMOTIONLESS SEX WITH CUTLASS| +|08/01/2022 07:36:20| >whitebait +|08/01/2022 07:36:20| |based cutlass| +|08/01/2022 07:36:21| ToT +|08/01/2022 07:36:21| |I WANT CUTLASS' FRESH WHITE THIGHS| +|08/01/2022 07:36:21| |Imagine if Duce found this tank. Holy heavens| +|08/01/2022 07:36:22| |Cutlass and Flint are waifus| +|08/01/2022 07:36:24| |sweaty tomboys| +|08/01/2022 07:36:25| |kinda homo anon| +|08/01/2022 07:36:25| |HOSHINO PITS\| +|08/01/2022 07:36:26| |CUTLASS BEST PIRATE| +|08/01/2022 07:36:29| >waifus +|08/01/2022 07:36:37| |MOMO SEX MOMO SEX MOMO SEX MOMO SEX | +|08/01/2022 07:36:38| |dang, i homo| +|08/01/2022 07:36:39| |FUUUUCK I CAN;T WAIT ANY LONGER FOR ANDOU| +|08/01/2022 07:36:39| |RUM A CUTE| +|08/01/2022 07:36:40| |What do they do about the carbon monoxide poisoning | +|08/01/2022 07:36:43| |pirates aquire| +|08/01/2022 07:36:43| |I want the whitefish special please| +|08/01/2022 07:36:45| CUTE +|08/01/2022 07:36:45| SLAGS +|08/01/2022 07:36:46| phrogs +|08/01/2022 07:36:49| |Be patient Anon| +|08/01/2022 07:36:49| |The pirates makenthe history girls look normal| +|08/01/2022 07:36:51| SLANDER +|08/01/2022 07:36:51| w +|08/01/2022 07:36:51| |andou. andou. andou. andou. | +|08/01/2022 07:36:52| |need momo ryona ASAP| +|08/01/2022 07:36:52| |RUM'S CUTE DANCE| +|08/01/2022 07:36:52| |yuki da| +|08/01/2022 07:36:53| >slags +|08/01/2022 07:36:54| |ANGLOS WILL JOB| +|08/01/2022 07:36:55| >bongs +|08/01/2022 07:36:55| |whitefish special doujin is kino| +|08/01/2022 07:36:55| |redcoats BEWARE| +|08/01/2022 07:36:56| ASAAM +|08/01/2022 07:36:58| |andou. andou. andou. andou. andou. andou. | +|08/01/2022 07:36:58| |Not even British| +|08/01/2022 07:37:01| |>cheeki slags innit| +|08/01/2022 07:37:02| |momo hate nigger hate| +|08/01/2022 07:37:04| ?????????? +|08/01/2022 07:37:04| |RUM DENIERS WILL BE PUNISHED| +|08/01/2022 07:37:06| hippu... +|08/01/2022 07:37:06| BRI'ISH +|08/01/2022 07:37:07| |imagine going to bongistan voluntarily| +|08/01/2022 07:37:07| |>1st repeat in the history of the school| +|08/01/2022 07:37:07| BAKAHIP +|08/01/2022 07:37:09| |Darjeeling is so gonna get bullied in Bongland| +|08/01/2022 07:37:09| |NO DARJ DON'T GO TO ENGLAND| +|08/01/2022 07:37:10| |>MORE IMPORTANT| +|08/01/2022 07:37:11| |Rum is sacred| +|08/01/2022 07:37:12| |remember that saying rosehip| +|08/01/2022 07:37:12| |ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHI| +|08/01/2022 07:37:13| |fooking slag| +|08/01/2022 07:37:13| |finally, some good fucking tea| +|08/01/2022 07:37:13| CUTEHIP +|08/01/2022 07:37:14| bri'ish +|08/01/2022 07:37:15| CUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:37:15| |fucking Teaboo| +|08/01/2022 07:37:16| |Rosehip as commander next season when?| +|08/01/2022 07:37:17| |RUKURIRI HATESEC| +|08/01/2022 07:37:17| >FORESHADOWING +|08/01/2022 07:37:19| ROSEHIP +|08/01/2022 07:37:19| |Why are there slags on my screen?| +|08/01/2022 07:37:20| |katyushas thighs| +|08/01/2022 07:37:20| |MY WIFE, ROSEHIP| +|08/01/2022 07:37:20| |HANDE HOCH| +|08/01/2022 07:37:21| |cute bakahip| +|08/01/2022 07:37:23| |will we get the frog ova cut in?| +|08/01/2022 07:37:23| |Assam laying the truth. "First repeater"| +|08/01/2022 07:37:25| |I don't speak commie| +|08/01/2022 07:37:25| |>FAKE BRIT BOONG| +|08/01/2022 07:37:27| |what the fuck are they saying| +|08/01/2022 07:37:28| |PRAVDA WILL BEAT KMM!!!| +|08/01/2022 07:37:29| DA +|08/01/2022 07:37:29| |my maho wife| +|08/01/2022 07:37:31| HARASHO +|08/01/2022 07:37:34| |you can't learn russian, you don't even know japanese| +|08/01/2022 07:37:34| |THIS ISN'T NIHIONGO| +|08/01/2022 07:37:37| |VNIAMNIE VNIMANIE| +|08/01/2022 07:37:37| blyat +|08/01/2022 07:37:38| |wtf i thought they ded| +|08/01/2022 07:37:38| >ramp +|08/01/2022 07:37:39| |a so| +|08/01/2022 07:37:42| OPACHKI +|08/01/2022 07:37:43| 日本語でおk +|08/01/2022 07:37:44| |stop talking about the ramp| +|08/01/2022 07:37:44| flat +|08/01/2022 07:37:47| |A SO| +|08/01/2022 07:37:49| BORCHST +|08/01/2022 07:37:53| |[speaks bear]| +|08/01/2022 07:37:54| UAZ +|08/01/2022 07:37:54| Tiny +|08/01/2022 07:37:56| |Cute Ah so| +|08/01/2022 07:37:58| |holy fuck so flat| +|08/01/2022 07:37:58| |I thought klara fucking died, what the hell| +|08/01/2022 07:38:00| |"I'm sure we're gonna win this time"| +|08/01/2022 07:38:00| |I love Nonna's rusiaboo VA| +|08/01/2022 07:38:01| santu +|08/01/2022 07:38:02| |ENTER FINS| +|08/01/2022 07:38:04| |Klara still trolling| +|08/01/2022 07:38:05| 日本語で話しなさい +|08/01/2022 07:38:05| |USA USA USA USA USA| +|08/01/2022 07:38:08| shithook! +|08/01/2022 07:38:08| USA +|08/01/2022 07:38:10| |YOU JOBBED TO SPURDOS| +|08/01/2022 07:38:10| |"Yeah we'll win this time!"| +|08/01/2022 07:38:12| HAHAHAHAHAHAHAHAHHAHAHAHA +|08/01/2022 07:38:14| |USA USA USA| +|08/01/2022 07:38:15| MURICA +|08/01/2022 07:38:15| |SHE DID THATS HER GHOST| +|08/01/2022 07:38:15| |YOU FUCKS| +|08/01/2022 07:38:16| |UAZ LADA| +|08/01/2022 07:38:17| |CUTE WANI| +|08/01/2022 07:38:18| CUTE +|08/01/2022 07:38:19| AAAAAAAAAAAAHAHAHAHAHAHAHAHAHAHA +|08/01/2022 07:38:19| |SHE ISN'T EVEN GOING OUT WITH TAKESHI| +|08/01/2022 07:38:19| |nazi waifu| +|08/01/2022 07:38:21| HAHAHAHAHAHAHAHA +|08/01/2022 07:38:22| |TAKASHI | +|08/01/2022 07:38:22| |EVERYONE LAUGH AT THE WANI| +|08/01/2022 07:38:22| |No it's not| +|08/01/2022 07:38:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 07:38:23| |notice me...| +|08/01/2022 07:38:23| TEKSHIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 07:38:24| |MY MAHO WIFE| +|08/01/2022 07:38:24| |>rotor and fixed wing Damn I love Noami| +|08/01/2022 07:38:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE VV| +|08/01/2022 07:38:25| TAKASHI +|08/01/2022 07:38:25| |ERIKA IS CUTE| +|08/01/2022 07:38:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:28| |TAKESHI DUMPED HER BEFORE FUCKING| +|08/01/2022 07:38:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:29| |no fuck off wani| +|08/01/2022 07:38:30| |DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:30| |shes talking about mwe| +|08/01/2022 07:38:30| |whip me pls| +|08/01/2022 07:38:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:31| |Erika! LIVE from the cuckshed| +|08/01/2022 07:38:32| |its dvce time| +|08/01/2022 07:38:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:33| |DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:33| SISISISISISISISIS +|08/01/2022 07:38:33| |Koume, give her a hug.| +|08/01/2022 07:38:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:35| MAHOOOOO +|08/01/2022 07:38:35| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:37| DUCE +|08/01/2022 07:38:37| |HE wont| +|08/01/2022 07:38:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 07:38:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:38| CHANAKATTA +|08/01/2022 07:38:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:38| |Chadkeshintoo busy fucking everony else lmao| +|08/01/2022 07:38:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:39| |Here we go again| +|08/01/2022 07:38:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:39| SISISISISISISISI +|08/01/2022 07:38:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:40| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:41| |>Kay never mentions studying over at the US| +|08/01/2022 07:38:41| | DUCE DUCE DUCE| +|08/01/2022 07:38:41| |I FUCKING LOVE DUCE| +|08/01/2022 07:38:41| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 07:38:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:42| >spam +|08/01/2022 07:38:42| |DUCE DUCE DUCE UCE DUCVE| +|08/01/2022 07:38:42| |TAKESHI WASN'T EVEN GOING OUT WITH HER| +|08/01/2022 07:38:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:43| |DUCE DUCE DUCE| +|08/01/2022 07:38:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:44| |DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:45| |Takeshi found out you taped his radio| +|08/01/2022 07:38:45| |DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:46| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:47| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 07:38:47| |DVCE DVCE DVCE DVCE| +|08/01/2022 07:38:47| |DUCE DUCE DUCE!| +|08/01/2022 07:38:47| |DVCE DVCE DVCE DVCE| +|08/01/2022 07:38:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:48| HA! +|08/01/2022 07:38:48| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 07:38:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:49| HA~ +|08/01/2022 07:38:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:50| |ANZIO STRONK| +|08/01/2022 07:38:52| |DUCE DUCE DUCE| +|08/01/2022 07:38:52| |DUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCE| +|08/01/2022 07:38:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:53| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 07:38:54| TOTSUGEKI +|08/01/2022 07:38:54| TOTSUGEI +|08/01/2022 07:38:54| |\o/ BANZAI \o/| +|08/01/2022 07:38:56| BAKAS +|08/01/2022 07:38:57| BANZAI +|08/01/2022 07:38:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:59| |TO TSU GE KI| +|08/01/2022 07:38:59| |TOTSUGEKI | +|08/01/2022 07:38:59| |>the only screen time maho gets is a brief skype call| +|08/01/2022 07:38:59| TOTSUGEKI +|08/01/2022 07:39:00| |TOTSUGEKI TOTSUGEKI TOTSUGEKI| +|08/01/2022 07:39:01| TOTSUGEKI! +|08/01/2022 07:39:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:39:03| |TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI | +|08/01/2022 07:39:03| TOTSUGEKIIIIIIIIIIIIIIIIIII +|08/01/2022 07:39:04| |charging bakas| +|08/01/2022 07:39:04| TOTSUGEKI +|08/01/2022 07:39:04| TOTSUGEKI +|08/01/2022 07:39:05| |how did these totsugekiniggers beat bracket 1| +|08/01/2022 07:39:07| TOTSUGEKI +|08/01/2022 07:39:08| |Aren't girls the cutest when they're almost retarded| +|08/01/2022 07:39:08| TOTSUGEKI +|08/01/2022 07:39:08| TOTSUGEKI +|08/01/2022 07:39:08| TOTSUGEKI +|08/01/2022 07:39:10| TOTSUGEKI +|08/01/2022 07:39:10| |BANZAI | +|08/01/2022 07:39:11| :DDDDDDDDDDDDDDDDDDDDDDDDDDdddd +|08/01/2022 07:39:11| TOTSUGEKI +|08/01/2022 07:39:13| |Maho's a college girl now. She's legal.| +|08/01/2022 07:39:14| :DDD +|08/01/2022 07:39:15| |absolutely anon| +|08/01/2022 07:39:16| SPRÖLÖLÖÖÖÖÖ +|08/01/2022 07:39:17| |No more TOTSUGEKI| +|08/01/2022 07:39:17| |FUKUDA UOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 07:39:18| |Based retards| +|08/01/2022 07:39:18| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:39:18| |Can't win if you don't charge| +|08/01/2022 07:39:19| :DDDDDDDD +|08/01/2022 07:39:19| BENIS +|08/01/2022 07:39:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:19| :DDDDDDDDDDDDDD +|08/01/2022 07:39:21| |what was that about chubby checkers?| +|08/01/2022 07:39:21| 七生報國 +|08/01/2022 07:39:21| :DDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:22| :DD +|08/01/2022 07:39:22| |SAUNA :DDDDDDDDDDD| +|08/01/2022 07:39:23| |so is alice| +|08/01/2022 07:39:24| VITTU +|08/01/2022 07:39:24| :DDD +|08/01/2022 07:39:24| BENIS +|08/01/2022 07:39:24| :DDDDD +|08/01/2022 07:39:25| |DAMN KIDS| +|08/01/2022 07:39:25| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 07:39:25| |GOD LOOK AT HOW FUCKING FLAT THEY ARE| +|08/01/2022 07:39:26| :DDDDDDDDDDDDDDD +|08/01/2022 07:39:26| |DFC X2| +|08/01/2022 07:39:27| |PERKELE :DDDDDD| +|08/01/2022 07:39:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:28| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:39:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:29| |>finnish """"people""""| +|08/01/2022 07:39:29| |THAT'S FUCKING HOT| +|08/01/2022 07:39:31| :DDDDDDDDDD +|08/01/2022 07:39:31| |SPINNING AKI| +|08/01/2022 07:39:32| :DDDD +|08/01/2022 07:39:33| ANDOU +|08/01/2022 07:39:33| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:33| |Määmi sauna| +|08/01/2022 07:39:34| :DDD +|08/01/2022 07:39:34| |>PLAYING KANTELE IN THE SAUNA| +|08/01/2022 07:39:34| |CUTE :DDDD| +|08/01/2022 07:39:35| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:39:35| |Dirty hobos| +|08/01/2022 07:39:36| :DDD +|08/01/2022 07:39:37| SAUNA:DDDDDDDDDDDDDD +|08/01/2022 07:39:38| |ARISU'S SISTER TOO CUTE| +|08/01/2022 07:39:39| |BINLAND :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 07:39:40| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU AN| +|08/01/2022 07:39:40| |cute finns| +|08/01/2022 07:39:42| 4 +|08/01/2022 07:39:44| |ANDOU IS HERE| +|08/01/2022 07:39:45| Mika! +|08/01/2022 07:39:45| FROGS +|08/01/2022 07:39:47| |bc less gooo| +|08/01/2022 07:39:48| 4 +|08/01/2022 07:39:48| >FREEDOM +|08/01/2022 07:39:49| 4??? +|08/01/2022 07:39:49| |GAY FROGS| +|08/01/2022 07:39:49| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:39:50| FREEDOM +|08/01/2022 07:39:50| VATICAN +|08/01/2022 07:39:51| |4 DOLLARS FOR MOMO| +|08/01/2022 07:39:51| |MON DIEU| +|08/01/2022 07:39:52| TITTIES +|08/01/2022 07:39:52| |ANDOU GANG| +|08/01/2022 07:39:53| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:39:54| BOOBA!! +|08/01/2022 07:39:55| |ARRIBA ESPANA| +|08/01/2022 07:39:55| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:39:56| |OH NO ITS THE FRENCH | +|08/01/2022 07:39:56| BOOBA +|08/01/2022 07:39:57| |KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI | +|08/01/2022 07:39:57| |Nice Spain| +|08/01/2022 07:39:58| |BC MORE LIKE BBC| +|08/01/2022 07:39:59| |brown tits| +|08/01/2022 07:39:59| |I WANNA SEX THE FINNS| +|08/01/2022 07:40:00| |MARIE FAT| +|08/01/2022 07:40:00| >FROGS +|08/01/2022 07:40:00| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:40:01| |BIG SPANISH MILKERS| +|08/01/2022 07:40:01| SEX +|08/01/2022 07:40:02| |fucking onions| +|08/01/2022 07:40:02| |Oh shit the Fr*nch| +|08/01/2022 07:40:02| |HON HON HON HON HON HON| +|08/01/2022 07:40:02| FROGS +|08/01/2022 07:40:04| GAAYYYY +|08/01/2022 07:40:05| |GAY FROGS| +|08/01/2022 07:40:06| |i got jebaited breddy hard the first time| +|08/01/2022 07:40:07| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:40:09| |LESBIAN HATE SEX| +|08/01/2022 07:40:10| |GAY FROGS| +|08/01/2022 07:40:10| |Oh, right. Four is death| +|08/01/2022 07:40:12| |Enter sex bombs| +|08/01/2022 07:40:12| |MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT | +|08/01/2022 07:40:14| FAT +|08/01/2022 07:40:14| >French +|08/01/2022 07:40:15| |JUST FUCK ALREADY| +|08/01/2022 07:40:15| >Fr*nchies +|08/01/2022 07:40:16| |sacre bleu| +|08/01/2022 07:40:17| |My Algerian wife| +|08/01/2022 07:40:17| |ANDOUUUU SEXY BROWN GIRL| +|08/01/2022 07:40:17| |ANDOU, MY WIFE| +|08/01/2022 07:40:18| |>jebaited go back nigger| +|08/01/2022 07:40:19| |French baguettes| +|08/01/2022 07:40:19| |Fr*nch are not people| +|08/01/2022 07:40:19| |yall bitches gonna spit on the keiki| +|08/01/2022 07:40:21| |MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS | +|08/01/2022 07:40:22| |GAYS? IN TANKS?| +|08/01/2022 07:40:22| |Sexy frogs| +|08/01/2022 07:40:23| |HATE SEX| +|08/01/2022 07:40:25| >France +|08/01/2022 07:40:25| |EIFFEL TOWER| +|08/01/2022 07:40:25| |Truth is, Frogs were gay from the start| +|08/01/2022 07:40:26| |imagine the hate sex| +|08/01/2022 07:40:26| Fr*nch +|08/01/2022 07:40:28| |We should remove Fr*nce| +|08/01/2022 07:40:28| |The french designs are fantastic| +|08/01/2022 07:40:31| slums +|08/01/2022 07:40:31| |>150cm >150kg| +|08/01/2022 07:40:31| |>123cm >198kg| +|08/01/2022 07:40:33| |ALSACE LORRAINE IS SERBIAN| +|08/01/2022 07:40:34| |They're not gay, they're just French | +|08/01/2022 07:40:35| |taiyaki war| +|08/01/2022 07:40:35| Smooth +|08/01/2022 07:40:36| |hot and angry /u/ action| +|08/01/2022 07:40:37| |le france| +|08/01/2022 07:40:38| |I want to fuck a frenchie| +|08/01/2022 07:40:39| |Class divide| +|08/01/2022 07:40:39| |>Frogs turning on eachother| +|08/01/2022 07:40:39| |TWO GIRLS CAN'T HAVE SEX INSIDE A TANK| +|08/01/2022 07:40:40| PANTSU +|08/01/2022 07:40:40| |MARIE FAT NAKADASHI THIGH SEX| +|08/01/2022 07:40:41| |OUI OUI VE ARE GHEY| +|08/01/2022 07:40:41| |mhhahaha, the french.....| +|08/01/2022 07:40:43| |EVROPA IS SERBIAN| +|08/01/2022 07:40:43| |nothing new| +|08/01/2022 07:40:44| |TAIYAKI WAR| +|08/01/2022 07:40:46| |FUCKING FRECH| +|08/01/2022 07:40:48| |based small business owner Andou| +|08/01/2022 07:40:50| |THE GHETTO| +|08/01/2022 07:40:51| |are we gonna watch yukari film first?| +|08/01/2022 07:40:54| |ALSACE RIGHTFUL GERMAN CLAY| +|08/01/2022 07:40:54| |what's a big city without slums lmao| +|08/01/2022 07:40:57| |Look at those filthy slums| +|08/01/2022 07:40:58| |anzio did it better| +|08/01/2022 07:40:59| |BROWN FRENCHIES| +|08/01/2022 07:40:59| |Cooking with Andou| +|08/01/2022 07:40:59| |Too bad tanned frenchie doesn't have a driver license.| +|08/01/2022 07:41:02| |>buffering at the french| +|08/01/2022 07:41:03| |looks just like paris| +|08/01/2022 07:41:05| |I LOVE THE ONION| +|08/01/2022 07:41:06| |>frog revolution soon| +|08/01/2022 07:41:08| |that poor dog lmao| +|08/01/2022 07:41:09| |FEED THE DOGGY| +|08/01/2022 07:41:09| |sneaking shit into the taiyaki!| +|08/01/2022 07:41:10| |fucking poorfags| +|08/01/2022 07:41:10| |Ah, yes, authentic French cuisine | +|08/01/2022 07:41:10| |ALSACE IS IN CHINESE HISTORY BOOKS| +|08/01/2022 07:41:10| |fishe au chocolat| +|08/01/2022 07:41:12| |Just look at how fucking oily she is holy shit| +|08/01/2022 07:41:13| |Andou is a shitskin| +|08/01/2022 07:41:13| |>french takoyaki| +|08/01/2022 07:41:13| |very authentic paris vibes| +|08/01/2022 07:41:14| >shit +|08/01/2022 07:41:15| |turds in food?| +|08/01/2022 07:41:15| POOP +|08/01/2022 07:41:17| |LOG OF POO| +|08/01/2022 07:41:17| |SHIT TAYAKI| +|08/01/2022 07:41:18| |inferior cuisine | +|08/01/2022 07:41:18| |HEYO MACHI| +|08/01/2022 07:41:19| taiyaki +|08/01/2022 07:41:20| |traditional french taiyaki| +|08/01/2022 07:41:20| |she has cute eyes| +|08/01/2022 07:41:21| |Anzio would have a heart attack if they saw this| +|08/01/2022 07:41:23| |REP ANDOU| +|08/01/2022 07:41:25| |>angery taeyaki| +|08/01/2022 07:41:25| |The FDA's not gonna like this...| +|08/01/2022 07:41:28| |None of these girls are french| +|08/01/2022 07:41:28| NAZIS +|08/01/2022 07:41:29| |FUCK THE POLICE| +|08/01/2022 07:41:31| SIEG +|08/01/2022 07:41:33| |This is just Paris wtf| +|08/01/2022 07:41:33| |Imagine if this is ghetto Anzou| +|08/01/2022 07:41:33| |PUT SHIT ON TAIYAKI AND THEY WONT REALIZE| +|08/01/2022 07:41:33| |oh fuck, the taxman| +|08/01/2022 07:41:34| |revolution taiyaki| +|08/01/2022 07:41:36| |The FDA can suck my dick| +|08/01/2022 07:41:36| |wazza wazza| +|08/01/2022 07:41:36| GESHTAP +|08/01/2022 07:41:36| |OSHIDA A SHIT A SHITTTTTTTTTTTTTTTTTTTT| +|08/01/2022 07:41:37| |Smelly girls with long, thick, and fluffy hair is my fetish | +|08/01/2022 07:41:37| |VIVE LE REVOLUTION| +|08/01/2022 07:41:37| |>unko taiyaki| +|08/01/2022 07:41:38| |rena my wife| +|08/01/2022 07:41:39| |OH SHIT ITS MORE FR*NCH| +|08/01/2022 07:41:42| LOL +|08/01/2022 07:41:42| |Disdain for plebs| +|08/01/2022 07:41:44| |STINKY FRENCH| +|08/01/2022 07:41:45| |FATASS FROG| +|08/01/2022 07:41:46| IMAGINE +|08/01/2022 07:41:46| |Greesy and sweaty, just like real Frenchmen.| +|08/01/2022 07:41:46| |get these white people out of the hood| +|08/01/2022 07:41:47| |HON HON TIME| +|08/01/2022 07:41:48| SMELLY +|08/01/2022 07:41:51| |imagine the smell| +|08/01/2022 07:41:52| |imagine the smell| +|08/01/2022 07:41:52| |>i'm here to OHOHOHO at you| +|08/01/2022 07:41:53| |GET THE GUILLOTINE| +|08/01/2022 07:41:53| |wtf mean| +|08/01/2022 07:41:54| >pabreeze +|08/01/2022 07:41:56| |BREAK THAT PEASANTS HAND| +|08/01/2022 07:41:58| |I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HAT| +|08/01/2022 07:41:59| |that ship must smell awful| +|08/01/2022 07:41:59| |Animated Asparagus never| +|08/01/2022 07:42:00| |Based aristocrats dabbing on the plebs| +|08/01/2022 07:42:02| |Angry sex| +|08/01/2022 07:42:04| PABREZE +|08/01/2022 07:42:05| |second time something got called tyranny in GuP| +|08/01/2022 07:42:07| |I HATE THE FDA| +|08/01/2022 07:42:08| |Muh dick| +|08/01/2022 07:42:08| |FUCKING DISGUSTING POOR MIGRANT| +|08/01/2022 07:42:13| |SO DA SO DA| +|08/01/2022 07:42:13| |DOWN WITH THE NOBILITY| +|08/01/2022 07:42:14| |what was the first?| +|08/01/2022 07:42:14| |but globohomo made the ships...| +|08/01/2022 07:42:15| |soda soda| +|08/01/2022 07:42:15| |JUST EAT CAKE| +|08/01/2022 07:42:16| |THESE GIRLS ARE BUILT FOR HATE SEX| +|08/01/2022 07:42:16| |Revolution when?| +|08/01/2022 07:42:17| |SODA SODA| +|08/01/2022 07:42:17| |SORA SORA| +|08/01/2022 07:42:18| |IMAGINE THE SMELL| +|08/01/2022 07:42:18| |SODA SODA| +|08/01/2022 07:42:19| |fuck the poor man| +|08/01/2022 07:42:20| |SODA SODA| +|08/01/2022 07:42:22| |SOU DA SOU DA !| +|08/01/2022 07:42:22| |REMOVE KEBAB| +|08/01/2022 07:42:22| |SORA SORA| +|08/01/2022 07:42:22| |SODA SODA| +|08/01/2022 07:42:25| |just eat cake bruh| +|08/01/2022 07:42:26| |BUILT FOR REVOLUTION| +|08/01/2022 07:42:26| |Hear! Hear! | +|08/01/2022 07:42:27| KEBAB +|08/01/2022 07:42:27| |>FRENCH """"CUISINE""""| +|08/01/2022 07:42:28| |make the stalls disappear and make them pay for it| +|08/01/2022 07:42:29| |just stop being poor it's easy| +|08/01/2022 07:42:29| |FUCK the bourgeoisie| +|08/01/2022 07:42:29| TESHOKU +|08/01/2022 07:42:30| |IMAGINE NOT ABLE TO BUY CAVIAR| +|08/01/2022 07:42:32| |IMAGINE BEING A POORFAG| +|08/01/2022 07:42:32| |REMOVE FRANCE| +|08/01/2022 07:42:32| |BASED ANDOU| +|08/01/2022 07:42:33| |SODA SODA| +|08/01/2022 07:42:34| |SODA SODA| +|08/01/2022 07:42:34| |SOUDA SOUDA| +|08/01/2022 07:42:35| |escargot is good| +|08/01/2022 07:42:38| |das racis| +|08/01/2022 07:42:38| |SODA SODA| +|08/01/2022 07:42:39| |ANDOU SEEEEEEEEEXXXXXXXXXXX| +|08/01/2022 07:42:39| |SODA SODA| +|08/01/2022 07:42:40| |FRENCH POLICE DISCRIMINATES MINORITIES 1912 COLORED| +|08/01/2022 07:42:40| |POORFAG BE LIKE| +|08/01/2022 07:42:41| |Tony Kaku| +|08/01/2022 07:42:42| TONIKAKU +|08/01/2022 07:42:43| |TONY KAKU WILL SETTLE THIS| +|08/01/2022 07:42:44| Kek +|08/01/2022 07:42:45| |All of these girls are Japanese*| +|08/01/2022 07:42:45| ooooooo +|08/01/2022 07:42:48| |I like Dr. Pepper| +|08/01/2022 07:42:48| GUILLOTINE +|08/01/2022 07:42:50| |Don't need to pay if you cook it yourself| +|08/01/2022 07:42:51| |Toni Ceaxceaux| +|08/01/2022 07:42:52| |>being poor| +|08/01/2022 07:42:53| |we wuz carnies and shit| +|08/01/2022 07:42:56| |peasants btfo| +|08/01/2022 07:42:57| |POV: YOUR STARTING A REVOLUTION| +|08/01/2022 07:43:00| CUTE +|08/01/2022 07:43:01| sheeeeeeeeit +|08/01/2022 07:43:02| |this is what the french get for letting colonies get citizenship| +|08/01/2022 07:43:02| |ANARCHIST ANDOU| +|08/01/2022 07:43:03| |the niggers of frogs| +|08/01/2022 07:43:04| ;_; +|08/01/2022 07:43:05| |ANDOU OUR NEXT NAPOLEON| +|08/01/2022 07:43:07| Sodomommy +|08/01/2022 07:43:07| |Fuck peasants, | +|08/01/2022 07:43:08| |cute poorfags| +|08/01/2022 07:43:09| dog +|08/01/2022 07:43:10| DOG +|08/01/2022 07:43:11| |loom at that scraggy dog| +|08/01/2022 07:43:12| |literally 1789| +|08/01/2022 07:43:12| |anime eyes dog....| +|08/01/2022 07:43:15| dog +|08/01/2022 07:43:15| look +|08/01/2022 07:43:15| |based poorfags| +|08/01/2022 07:43:16| |WHAT THE DOG DOIN| +|08/01/2022 07:43:17| |cute dog| +|08/01/2022 07:43:17| dooooooooog +|08/01/2022 07:43:18| |Her only choice is to revolutionize the aircraft carrier.| +|08/01/2022 07:43:19| |JUST EAT THE DOG| +|08/01/2022 07:43:20| |They are going to eat that dog| +|08/01/2022 07:43:22| |if only lenin could see us now| +|08/01/2022 07:43:22| >ALGERIANS +|08/01/2022 07:43:22| |ANDOU ROBSPIERRE| +|08/01/2022 07:43:24| |Fluffy hair| +|08/01/2022 07:43:24| |no you dont| +|08/01/2022 07:43:24| |its aight, they got the dog on their side| +|08/01/2022 07:43:25| |>HUMAN RIGHTS| +|08/01/2022 07:43:26| |>frogs busting ou the giloutness again| +|08/01/2022 07:43:27| |CIVIL WAR NOW| +|08/01/2022 07:43:28| LIBERTE +|08/01/2022 07:43:29| |>HUMAN RIGHTS| +|08/01/2022 07:43:30| |ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE | +|08/01/2022 07:43:30| |Based sub-Fr*nch| +|08/01/2022 07:43:30| >FROGS +|08/01/2022 07:43:31| BASEDBASEDBASED +|08/01/2022 07:43:31| |NO MORE!!!!| +|08/01/2022 07:43:31| |no rights| +|08/01/2022 07:43:32| |HI REDDIT| +|08/01/2022 07:43:33| |Filthy brown skin| +|08/01/2022 07:43:34| |1789 LMAO| +|08/01/2022 07:43:35| |WHY CAN'T ALL FROGS LOOK LIKE ANZU| +|08/01/2022 07:43:35| |ATTENTION IT IS NOW FRENCH ALGERIAN QUEEN FRIDAY| +|08/01/2022 07:43:35| |Meanwhile Eclair just has her stomach to worry about| +|08/01/2022 07:43:36| |ZETTAI UNMEI MOKUSHIROKU| +|08/01/2022 07:43:36| REVOLUTION +|08/01/2022 07:43:37| |GULLIOTINE TIME| +|08/01/2022 07:43:37| MOMOAH +|08/01/2022 07:43:37| |AHAHAHHAHAHAHAHAHAHAHA PEASANTS THINK THEYRE HUMAN| +|08/01/2022 07:43:37| |ANDOU RABU ANDOU RABU| +|08/01/2022 07:43:38| |>HUMAN RIGHTS| +|08/01/2022 07:43:38| |NO MORE FOOD| +|08/01/2022 07:43:39| |Just join Duce. They don't hate your cooking as much| +|08/01/2022 07:43:39| |1789 will commence again| +|08/01/2022 07:43:39| |KAKUMEI WO| +|08/01/2022 07:43:40| |fr*nch dont have rights| +|08/01/2022 07:43:43| |These girls are all Japanese* | +|08/01/2022 07:43:43| |PARTY LIKE ITS 1789| +|08/01/2022 07:43:45| |NO MOAH| +|08/01/2022 07:43:45| |CLASS WAR NOW!!!| +|08/01/2022 07:43:46| |escargots are just normal slugs| +|08/01/2022 07:43:48| |FROG LEGS| +|08/01/2022 07:43:48| |God I fucking hate poor people| +|08/01/2022 07:43:51| |DOWN WITH THE RICH| +|08/01/2022 07:43:52| |NO MORE SHIT FRENCH FOOD!!| +|08/01/2022 07:43:54| |no moa frenchoid "cuisine"| +|08/01/2022 07:43:54| |A FUCKING BAGUETTE | +|08/01/2022 07:43:56| BAGUETTE +|08/01/2022 07:43:56| |FUCKING BAGETTE| +|08/01/2022 07:43:57| |FUCK YOU OSHIDA| +|08/01/2022 07:43:58| |frenchfags on /int/ love this image| +|08/01/2022 07:43:58| BREAD +|08/01/2022 07:43:58| |STALE BREAD CLUBS| +|08/01/2022 07:43:59| |OSHIDA BRUTALITY| +|08/01/2022 07:43:59| |DESU WA| +|08/01/2022 07:44:01| A +|08/01/2022 07:44:01| |>fucking bread| +|08/01/2022 07:44:01| >BAGGUETTE +|08/01/2022 07:44:01| |If only the Nobility won the Revolution| +|08/01/2022 07:44:01| >yellowvests +|08/01/2022 07:44:02| |A FUCKING BAUGETTE| +|08/01/2022 07:44:03| BAGUETTE +|08/01/2022 07:44:03| |>implying duce wants these "people"| +|08/01/2022 07:44:03| |NO MORE ESCARGOT| +|08/01/2022 07:44:04| FUCKING +|08/01/2022 07:44:04| |A FUCKING BAGUETTE| +|08/01/2022 07:44:04| |SHE'S FUCKING ARMED| +|08/01/2022 07:44:07| |A FUCKING BAGUTTE| +|08/01/2022 07:44:08| |SHOVE THE BAGUETTE UP HER ASS| +|08/01/2022 07:44:09| |WE WANT TAIYAKI| +|08/01/2022 07:44:10| |rise up/| +|08/01/2022 07:44:10| |stale baguette bludgeons are deadly| +|08/01/2022 07:44:10| REVOLUTIION +|08/01/2022 07:44:11| |>riot police with baguettes| +|08/01/2022 07:44:11| |>FR*NCH RIOTS| +|08/01/2022 07:44:12| |>A FUCKING BAGUETTE| +|08/01/2022 07:44:12| fr*gs +|08/01/2022 07:44:12| |Soy sauce is French? Who knew.| +|08/01/2022 07:44:12| |Bring back Napoleon| +|08/01/2022 07:44:14| |SHE'S DANGEROUS| +|08/01/2022 07:44:15| ENTER +|08/01/2022 07:44:15| |All these girls are Japanese* | +|08/01/2022 07:44:15| SKRRRRRRRRRRRRRT +|08/01/2022 07:44:16| |CARRIAGE DRIFTO| +|08/01/2022 07:44:19| |LOOK OUT SHE'S GOT A BAGUETTE| +|08/01/2022 07:44:20| DRIFT +|08/01/2022 07:44:20| |A FUCKING B A G U E T T E| +|08/01/2022 07:44:21| |DRIFT THE MF CARRIGE| +|08/01/2022 07:44:22| larping +|08/01/2022 07:44:22| |cake god arrives| +|08/01/2022 07:44:22| DRIFTO +|08/01/2022 07:44:24| |EUROBEAT | +|08/01/2022 07:44:24| |THIS FAT FUCK CAN HAVE SEX WITH ME| +|08/01/2022 07:44:26| ENTER +|08/01/2022 07:44:27| ENTER +|08/01/2022 07:44:27| |>A FUCKING BAGUETTE| +|08/01/2022 07:44:29| FAT +|08/01/2022 07:44:31| |Marie Antoinette| +|08/01/2022 07:44:31| IMAGINE +|08/01/2022 07:44:31| |time to behead queen frog| +|08/01/2022 07:44:34| |CARRIAGE DRIFT?!?!?!?!?| +|08/01/2022 07:44:34| |How does a horse pull marie's weight?| +|08/01/2022 07:44:35| |WE WERE THIS CLOSE TO A BLOOD BATH| +|08/01/2022 07:44:35| |Baguette makes best batons| +|08/01/2022 07:44:35| |DON'T DO IT ANDOU DON'T NEGOTIATE WITH THEM| +|08/01/2022 07:44:36| |FUCK THE FRENCH| +|08/01/2022 07:44:36| |MARIE'S FAT FUCKING THIGHS| +|08/01/2022 07:44:36| |how she slim| +|08/01/2022 07:44:37| |BAGUETTE SEGGS | +|08/01/2022 07:44:39| |Can aircraft carriers drift in this world too?| +|08/01/2022 07:44:39| |FUCK LE FRANCE| +|08/01/2022 07:44:40| |There was a non zero percent chance the carriage could've clipped Andou and killed her| +|08/01/2022 07:44:42| |>150 cm >150 kg| +|08/01/2022 07:44:43| |I WANNA FUCK THIS FAT FROG| +|08/01/2022 07:44:44| FAT +|08/01/2022 07:44:44| |-ICKS ON YOUR RIGHT| +|08/01/2022 07:44:48| |a pussy that uses riotshield| +|08/01/2022 07:44:48| |Marie Antoinette| +|08/01/2022 07:44:48| |>Bownl in your left?| +|08/01/2022 07:44:49| |JUST LET THEM EAT CAKE| +|08/01/2022 07:44:52| |The French are always revolting. Nothing is more revolting than a Frenchman except two Frenchmen.| +|08/01/2022 07:44:52| |FRENCH CUNNY| +|08/01/2022 07:44:54| |revolution appeased| +|08/01/2022 07:44:54| |PUT SHIT ON TAIYAKI| +|08/01/2022 07:44:55| |eat cock| +|08/01/2022 07:44:59| |>10 CM >200 KG| +|08/01/2022 07:45:00| hamu +|08/01/2022 07:45:01| POOP!! +|08/01/2022 07:45:02| |THIS REVOLUTION WAS APPEASED| +|08/01/2022 07:45:02| SEX +|08/01/2022 07:45:02| |Just join Anzio and give them better tanks| +|08/01/2022 07:45:05| FAT +|08/01/2022 07:45:07| |All these girls are Japanese* | +|08/01/2022 07:45:09| |CAM ON| +|08/01/2022 07:45:10| |FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE | +|08/01/2022 07:45:11| |I kinda want this| +|08/01/2022 07:45:12| |FRENCH REVOLUTION SOLVED| +|08/01/2022 07:45:12| |LET THEM EAT TAKIYAKI| +|08/01/2022 07:45:13| |HIGH IQ FAT| +|08/01/2022 07:45:13| |Fat Fr*nch| +|08/01/2022 07:45:15| |fucking reformfags ruining another good revolution| +|08/01/2022 07:45:15| |based marie| +|08/01/2022 07:45:17| |HOW FAT IS ANZU'S ASS| +|08/01/2022 07:45:17| |FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK | +|08/01/2022 07:45:17| |I want this too| +|08/01/2022 07:45:19| |>free food| +|08/01/2022 07:45:19| |>PIECE OF YOUTH| +|08/01/2022 07:45:20| |Beheading that fish, how fitting| +|08/01/2022 07:45:20| |*they're all japs from middle aged families| +|08/01/2022 07:45:21| |because shes a fat fuck| +|08/01/2022 07:45:27| |>war solved| +|08/01/2022 07:45:27| |Asparagus isn't canon after all huh| +|08/01/2022 07:45:28| |leave it to an all girl school to eat the fish| +|08/01/2022 07:45:29| |>Anzu >Ass| +|08/01/2022 07:45:29| |>FOOD ANALOGY| +|08/01/2022 07:45:30| |Fat fuck just wanted to eat| +|08/01/2022 07:45:31| |Marie makes up for 80% of her school's weight (including the ship)| +|08/01/2022 07:45:32| |>both sides surrendered| +|08/01/2022 07:45:33| |Custard taiyaki best taiyaki| +|08/01/2022 07:45:36| |red bean taiyaki suck ass| +|08/01/2022 07:45:36| |Now kiss| +|08/01/2022 07:45:37| |EXECUTE MARIE| +|08/01/2022 07:45:37| |delicious non-french food| +|08/01/2022 07:45:40| |Sounds pretty disgusting tbh| +|08/01/2022 07:45:41| |I think shes just fat| +|08/01/2022 07:45:43| |fr*nch have no good side| +|08/01/2022 07:45:43| |God that sounds disgusting| +|08/01/2022 07:45:46| |literally let them eat cake| +|08/01/2022 07:45:47| |two nukes were not enough| +|08/01/2022 07:45:47| |please just fuck each other| +|08/01/2022 07:45:47| ew +|08/01/2022 07:45:49| thick +|08/01/2022 07:45:49| GAAAAYYYYYY +|08/01/2022 07:45:50| UNITY +|08/01/2022 07:45:54| LEWD +|08/01/2022 07:45:56| |It's not gay, it's French| +|08/01/2022 07:45:56| Marie-sama... +|08/01/2022 07:45:57| |DON'T DO IT ANDOU| +|08/01/2022 07:45:58| |>last time marie left teh carrier it raised 6 inches and threated to capsize| +|08/01/2022 07:45:58| mods +|08/01/2022 07:45:58| |NOW FUCK| +|08/01/2022 07:45:58| |something something the friends we made along the way| +|08/01/2022 07:45:59| wtf +|08/01/2022 07:46:00| |3 nukes girls und panzer| +|08/01/2022 07:46:01| |GAY GAY GAY GAY| +|08/01/2022 07:46:01| |wtf I want a race war| +|08/01/2022 07:46:01| |GAE PHROHS| +|08/01/2022 07:46:02| |One struggle| +|08/01/2022 07:46:02| |we cutting to ova now right| +|08/01/2022 07:46:03| |At least one of them is wearing protection| +|08/01/2022 07:46:06| |let them eat each other [out]| +|08/01/2022 07:46:07| |it's that easy| +|08/01/2022 07:46:07| |she didn't remove the glove| +|08/01/2022 07:46:08| |the most pointless conflict of all time| +|08/01/2022 07:46:09| |Soy sauce stuffed fish is going to be next on the menu| +|08/01/2022 07:46:11| |it's a metaphor for eating ass| +|08/01/2022 07:46:11| |race war is postponed| +|08/01/2022 07:46:11| |JUST LOCK THEM IN A ROOM TOGETHER UNTIL THEY BOTH FUCK EACH OTHER LIKE MONKEY| +|08/01/2022 07:46:13| |>no class war in GuP| +|08/01/2022 07:46:13| |>escargot udon| +|08/01/2022 07:46:15| |ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX | +|08/01/2022 07:46:16| |>THE KNOW| +|08/01/2022 07:46:18| |I'm too drunk to get what's going on| +|08/01/2022 07:46:19| |>THEY KNO0W| +|08/01/2022 07:46:20| |Jesus fucking christ does yukari fool anyone at this point| +|08/01/2022 07:46:20| >AWARE +|08/01/2022 07:46:20| ROLLINGU +|08/01/2022 07:46:20| |like that one doujin| +|08/01/2022 07:46:22| |>THEY KNOW| +|08/01/2022 07:46:23| WWWWWWWW +|08/01/2022 07:46:23| |DOUBLE OH SEVEN HERE| +|08/01/2022 07:46:25| |Yes, the one who is certainly not a spy| +|08/01/2022 07:46:26| |CLASS WAR FALSE FLAG| +|08/01/2022 07:46:26| ACTION +|08/01/2022 07:46:28| |>no violent clash that ends in someone getting beheaded| +|08/01/2022 07:46:29| |CUTE DORK| +|08/01/2022 07:46:30| >spy +|08/01/2022 07:46:32| |Totally inconspicous| +|08/01/2022 07:46:33| |Yukari is a blessed autist| +|08/01/2022 07:46:33| |>dumbass yukari is announcing her presence again| +|08/01/2022 07:46:34| |Dumb yukari moment| +|08/01/2022 07:46:35| |The one who's recording and saying that she's a spy| +|08/01/2022 07:46:36| |SGT ODDBALL YOU DUMBASS| +|08/01/2022 07:46:37| |yukari is perv| +|08/01/2022 07:46:38| |I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS | +|08/01/2022 07:46:39| |world's shittest spy| +|08/01/2022 07:46:39| |ACT NATURAL| +|08/01/2022 07:46:40| |USELESS SPY| +|08/01/2022 07:46:45| |how obvious can she be?| +|08/01/2022 07:46:46| |>walking around with a camera| +|08/01/2022 07:46:46| |>carries a handheld camera around Why is Yukari so retarded| +|08/01/2022 07:46:48| |>larping inside another larp| +|08/01/2022 07:46:48| |WORLDS BEST SPY| +|08/01/2022 07:46:48| |CUTE AUTIST| +|08/01/2022 07:46:49| |ASS SLAP INCOMING| +|08/01/2022 07:46:49| |dumb spy | +|08/01/2022 07:46:50| >RPers +|08/01/2022 07:46:51| |cute fluffy spy| +|08/01/2022 07:46:53| |thinking of the mr bean movie| +|08/01/2022 07:46:57| |ASS SLAPPING| +|08/01/2022 07:46:58| LOLING +|08/01/2022 07:46:59| |Surely, she can't be the spy| +|08/01/2022 07:47:00| |OSHIDA ASS| +|08/01/2022 07:47:01| |LET'S SEE THE ASS. SLAP.| +|08/01/2022 07:47:06| |Yukari's Holiday| +|08/01/2022 07:47:06| |DUMBASS SPY VLOGGER| +|08/01/2022 07:47:08| |THIS USED TO WORK, YUKARI ISNT DUMB SHES COCKY| +|08/01/2022 07:47:09| |FAT OSHIDIA ASS| +|08/01/2022 07:47:09| |Never underestimate your enemy| +|08/01/2022 07:47:10| |ITS ALL FAKE WTF| +|08/01/2022 07:47:11| |SOD A SODA| +|08/01/2022 07:47:12| |useless spy, better have sex with me| +|08/01/2022 07:47:12| |>world class spy yukari| +|08/01/2022 07:47:14| |JUST FUCK EACH OTHER ALREADY| +|08/01/2022 07:47:15| |I can't believe floof got played like a sucker| +|08/01/2022 07:47:16| |SHOW TITS| +|08/01/2022 07:47:17| |don't put the camera there yukari| +|08/01/2022 07:47:17| |THAT FAT FROG ASS| +|08/01/2022 07:47:18| ASS +|08/01/2022 07:47:19| ASS +|08/01/2022 07:47:19| LEFS +|08/01/2022 07:47:19| |oh, she gonna get spy checked| +|08/01/2022 07:47:19| WEW +|08/01/2022 07:47:19| |BASED YUKARI| +|08/01/2022 07:47:20| BUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTt +|08/01/2022 07:47:20| NICE +|08/01/2022 07:47:20| |How lewd and uncouth| +|08/01/2022 07:47:21| www +|08/01/2022 07:47:22| CUTE +|08/01/2022 07:47:22| |OSHIDA BLUSH| +|08/01/2022 07:47:22| |AAAAAAAAAA BUTTTT| +|08/01/2022 07:47:22| |"shoot" her ass| +|08/01/2022 07:47:23| |WOAH WOAH WOAH| +|08/01/2022 07:47:23| WEW +|08/01/2022 07:47:24| thick +|08/01/2022 07:47:24| |THERE IT IS| +|08/01/2022 07:47:24| |Is Yukari retarded?| +|08/01/2022 07:47:25| |YUKARI WITH THE COVERT OPERATIONS| +|08/01/2022 07:47:25| |trying to panty shot| +|08/01/2022 07:47:25| |Yukari the best spy| +|08/01/2022 07:47:26| |WHAT'S UP GUYSSS YUKARI-CHAN HERE, BACK WITH ANOTHER VIDEO| +|08/01/2022 07:47:26| UPSKIRT +|08/01/2022 07:47:27| |>that blush| +|08/01/2022 07:47:28| butte +|08/01/2022 07:47:29| |CUTE BLUSH CUTE BUTT| +|08/01/2022 07:47:29| ASSSSSSSSS +|08/01/2022 07:47:30| |>FILMING PANTYSHOTS| +|08/01/2022 07:47:30| |GAY GAY GAY GAY GAY GAY GAY| +|08/01/2022 07:47:30| ANGLE +|08/01/2022 07:47:30| UNF +|08/01/2022 07:47:31| |>low angle Based Yukari| +|08/01/2022 07:47:31| |NAISU HIPPU| +|08/01/2022 07:47:32| |FROG BUTT| +|08/01/2022 07:47:32| |Panty Shot| +|08/01/2022 07:47:32| >retarded +|08/01/2022 07:47:33| |5th generation information warfare| +|08/01/2022 07:47:34| |CUTE BLUSH| +|08/01/2022 07:47:34| |>presence concealed| +|08/01/2022 07:47:35| |what is this retard doing?| +|08/01/2022 07:47:35| |II DESU NE| +|08/01/2022 07:47:36| UNF +|08/01/2022 07:47:36| |oh my| +|08/01/2022 07:47:37| |yukari butt| +|08/01/2022 07:47:37| |yukarin catching the pantishots| +|08/01/2022 07:47:37| |yukari still unnoticed| +|08/01/2022 07:47:38| |Yukari too fluffy to survive being trampled on| +|08/01/2022 07:47:40| |What the fuck is yukari doing| +|08/01/2022 07:47:40| |how does yukari think no one saw her| +|08/01/2022 07:47:41| RAPE +|08/01/2022 07:47:43| |going for the pantsu shots, NICE| +|08/01/2022 07:47:45| TRAMPLED +|08/01/2022 07:47:45| |>the best self proclaimed spy| +|08/01/2022 07:47:46| |spy check!| +|08/01/2022 07:47:46| |Yukari getting more clips for her /u/ folder| +|08/01/2022 07:47:47| |Yooker owned| +|08/01/2022 07:47:48| GOD +|08/01/2022 07:47:49| |So uhh did Yukari just give up or something?| +|08/01/2022 07:47:51| gangbang +|08/01/2022 07:47:51| |NO STOP KICKING YUKARI| +|08/01/2022 07:47:53| F +|08/01/2022 07:47:54| wwwwwwwwwwwwwwwwwwwwww +|08/01/2022 07:47:54| SEX +|08/01/2022 07:47:57| UP-SKIRT +|08/01/2022 07:47:58| RAPE +|08/01/2022 07:47:58| RUSED +|08/01/2022 07:47:59| |>SHE DOESN'T KNOW| +|08/01/2022 07:47:59| |ITS ALL AS PLANNED| +|08/01/2022 07:48:00| |Kick the floof| +|08/01/2022 07:48:00| |SMOKE GRENADE| +|08/01/2022 07:48:02| |kill her| +|08/01/2022 07:48:05| RUSED +|08/01/2022 07:48:05| |She'd gonna turn red at any moment| +|08/01/2022 07:48:06| CUTTTTTTTOOOOOOOOOOO +|08/01/2022 07:48:07| |SMOKE GRENADE!!!!| +|08/01/2022 07:48:08| |Normal day in Paris| +|08/01/2022 07:48:09| |Played like a fiddle| +|08/01/2022 07:48:09| |so are we acting or not| +|08/01/2022 07:48:09| |Dumb floof| +|08/01/2022 07:48:10| CUTTO +|08/01/2022 07:48:10| FAT +|08/01/2022 07:48:10| |I want to lick her cheek| +|08/01/2022 07:48:10| cuta +|08/01/2022 07:48:11| |>dust is smoke grenade I love this series| +|08/01/2022 07:48:12| |yukari is so autistic kek| +|08/01/2022 07:48:13| |that's a wrap!| +|08/01/2022 07:48:13| |ALL ACCORDING TO KEIKAKU *(keikaku means plan)| +|08/01/2022 07:48:13| |>nice ass slap oshida| +|08/01/2022 07:48:16| |SHE BOUGHT IT| +|08/01/2022 07:48:18| |I love the onion| +|08/01/2022 07:48:19| |J'AIME L'OIGNON| +|08/01/2022 07:48:19| |ass slapping| +|08/01/2022 07:48:21| |onion time| +|08/01/2022 07:48:23| |no it wasnt| +|08/01/2022 07:48:25| |vital ass slapping| +|08/01/2022 07:48:26| |I LOVE ONION!!!!| +|08/01/2022 07:48:26| |OOARAI IS GOING TO GET FUCKED| +|08/01/2022 07:48:27| |ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS | +|08/01/2022 07:48:27| |>ad libbing the ass slap what a slut| +|08/01/2022 07:48:28| |impossible how did yukari get played| +|08/01/2022 07:48:29| |all according to keiki| +|08/01/2022 07:48:29| |god I love me a tasty onion| +|08/01/2022 07:48:30| |I LOVE THE ONION| +|08/01/2022 07:48:32| ONION +|08/01/2022 07:48:32| ONION +|08/01/2022 07:48:32| |FRENCH ONION FETISH SONG| +|08/01/2022 07:48:33| GRAPE +|08/01/2022 07:48:34| |AUS PAS| +|08/01/2022 07:48:35| |Actual smoke grenade used| +|08/01/2022 07:48:35| |Critical ass slapping| +|08/01/2022 07:48:36| |J'AIME L'OIGNON| +|08/01/2022 07:48:37| |there's poop on her cheek| +|08/01/2022 07:48:40| |AUSTRIANS LEAVE THIS CHAT RIGHT NOW| +|08/01/2022 07:48:41| |OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD | +|08/01/2022 07:48:41| |AU PAS AU PAS| +|08/01/2022 07:48:42| |onion+garlic+cheese=nothing can go wrong| +|08/01/2022 07:48:43| |ONION GOOD ONION FRIED!| +|08/01/2022 07:48:43| |I LOVE ONION| +|08/01/2022 07:48:43| |AU PAS AU PAS AUPAS| +|08/01/2022 07:48:44| |AU PAS AU PAS| +|08/01/2022 07:48:44| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:44| |AUS PAS CAMARADE| +|08/01/2022 07:48:45| |>oppai oppai oppai| +|08/01/2022 07:48:45| |AU PAS| +|08/01/2022 07:48:46| HONHONHONHON +|08/01/2022 07:48:48| |i hate onion| +|08/01/2022 07:48:49| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:49| |Små grodorna små grodorna| +|08/01/2022 07:48:50| |FUCK AUSTRIANS| +|08/01/2022 07:48:51| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:52| |AU PAS CAMARADES| +|08/01/2022 07:48:52| |au pas au pas au pas| +|08/01/2022 07:48:54| FURENCHU +|08/01/2022 07:48:56| |AU PA CAMARAD AU PA CAMARAD AU PA AU PA AUPA| +|08/01/2022 07:48:56| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:56| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:57| |j'aime l'oignon| +|08/01/2022 07:48:57| OUIOUIOUIOUIOUIOUIOUIOUI +|08/01/2022 07:48:58| |I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +|08/01/2022 07:48:58| |Au pas| +|08/01/2022 07:48:59| | APAS PAS PAS PAS PAS | +|08/01/2022 07:49:00| |AU PAS AU PAS AU PAS| +|08/01/2022 07:49:00| |Why do Frogs sing about Onions| +|08/01/2022 07:49:01| |är lustiga att se| +|08/01/2022 07:49:01| |kino editing| +|08/01/2022 07:49:02| |lmao I didnt remeber that logo| +|08/01/2022 07:49:03| |FUCK YOUR GODDAMN ONIONS| +|08/01/2022 07:49:06| >LUCASFILMS +|08/01/2022 07:49:12| 1941 +|08/01/2022 07:49:13| copyright +|08/01/2022 07:49:14| >1941 +|08/01/2022 07:49:14| >1941 +|08/01/2022 07:49:14| >1941 +|08/01/2022 07:49:15| >1941 +|08/01/2022 07:49:16| >1941 +|08/01/2022 07:49:16| |>Sings french >Cant get the VA to sing in German| +|08/01/2022 07:49:16| |Yukari really is the Lucas of our generation| +|08/01/2022 07:49:20| |Opa? French are greeks now?| +|08/01/2022 07:49:20| >1941 +|08/01/2022 07:49:22| >1941 +|08/01/2022 07:49:23| >1941 +|08/01/2022 07:49:24| |Love me marches, love me onions, 'ate spies simple as| +|08/01/2022 07:49:25| autism +|08/01/2022 07:49:26| |>guppies confirmed to be in ww2| +|08/01/2022 07:49:27| |THX The audience is fluff| +|08/01/2022 07:49:29| |>LUCAS FULM| +|08/01/2022 07:49:31| |love her so fucking much| +|08/01/2022 07:49:35| |REUSED FOOTAGE| +|08/01/2022 07:49:36| |GREAT DOCUMENTARY| +|08/01/2022 07:49:36| |SHES JUST STANDING RIGHT THERE| +|08/01/2022 07:49:36| REVOLUTION +|08/01/2022 07:49:37| |GHX AUDIO| +|08/01/2022 07:49:41| |das racisss| +|08/01/2022 07:49:42| |yukari made the prequels| +|08/01/2022 07:49:46| >colorized +|08/01/2022 07:49:53| |shame the ass slap didn't make the cut| +|08/01/2022 07:49:55| |SODA SODA| +|08/01/2022 07:49:59| |SODA SODA| +|08/01/2022 07:50:03| |SODA SODA| +|08/01/2022 07:50:04| |SODA SODA| +|08/01/2022 07:50:06| |Kino cinematography| +|08/01/2022 07:50:12| |ASS SHOT| +|08/01/2022 07:50:13| |VERY IMPORTANT| +|08/01/2022 07:50:14| |Yukari best spy| +|08/01/2022 07:50:14| |If this is how Yukari does things, how retarded were the Americans not to notice her?| +|08/01/2022 07:50:15| |This feels familiar.....| +|08/01/2022 07:50:15| |World record speed editing| +|08/01/2022 07:50:18| |wait they really remade this from a different angle?| +|08/01/2022 07:50:18| |>no low angle pantsu shot| +|08/01/2022 07:50:19| |let them eat ass| +|08/01/2022 07:50:24| |>no upskirt| +|08/01/2022 07:50:24| |We got something better than the ass shot| +|08/01/2022 07:50:26| BOOBA +|08/01/2022 07:50:28| |wheres the ass shot| +|08/01/2022 07:50:31| |Yukarin loves her yuri| +|08/01/2022 07:50:33| |Marie still eating the whole time| +|08/01/2022 07:50:34| LEGS +|08/01/2022 07:50:35| |>Being surprised that the burgers were retarded| +|08/01/2022 07:50:38| >barbershop +|08/01/2022 07:50:39| pottery +|08/01/2022 07:50:39| |classic film| +|08/01/2022 07:50:47| keiki +|08/01/2022 07:50:50| |How did she do this twice without getting caught?| +|08/01/2022 07:50:51| |kay just laughed when yukari was outted| +|08/01/2022 07:50:52| |is the audio off for anyone else???| +|08/01/2022 07:50:57| |SEX WITH YUKARI| +|08/01/2022 07:50:58| |that fat fuck ain't gonna stop eating aint she| +|08/01/2022 07:50:59| |>yukari pov| +|08/01/2022 07:51:00| |unmute it on the bottom left| +|08/01/2022 07:51:01| |>Yukari knows 3d and compositing softwares as well| +|08/01/2022 07:51:04| |Mako eying up the real cake, Marie| +|08/01/2022 07:51:06| |Momo shut up| +|08/01/2022 07:51:06| |audio seems in sync for me| +|08/01/2022 07:51:13| |There is no sound. Der Finale is a silent film.| +|08/01/2022 07:51:15| |Momo taichou!| +|08/01/2022 07:51:16| Anzu +|08/01/2022 07:51:16| TAICHO? +|08/01/2022 07:51:17| |"do we have enough headlight fluid?"| +|08/01/2022 07:51:19| |momo retard| +|08/01/2022 07:51:21| |just you anon| +|08/01/2022 07:51:24| |cute fluff| +|08/01/2022 07:51:25| TAICHO +|08/01/2022 07:51:31| |biden of commander| +|08/01/2022 07:51:31| |I want to mess up the floof| +|08/01/2022 07:51:32| |>yukari got stepped on by french girls (japanese) giwtwm| +|08/01/2022 07:51:33| |fat fighters| +|08/01/2022 07:51:34| |Who uses antifreeze as ammo?| +|08/01/2022 07:51:36| |cute girl pilots| +|08/01/2022 07:51:38| |momo.exe stopped working| +|08/01/2022 07:51:38| Panes +|08/01/2022 07:51:45| |There's an O-I down there| +|08/01/2022 07:51:47| |imagine a proper war film made by the gup staff| +|08/01/2022 07:51:47| |Some sort of flying tanks?| +|08/01/2022 07:51:47| |>girls in planes| +|08/01/2022 07:51:48| |CABRON COATED PLANES| +|08/01/2022 07:51:51| |Neat planes| +|08/01/2022 07:51:56| |ALISA I LOVE YOU| +|08/01/2022 07:52:02| |Koume midget| +|08/01/2022 07:52:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:52:06| |that O-I is Finn property now| +|08/01/2022 07:52:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:52:10| |Fucking italians| +|08/01/2022 07:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:52:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:52:11| DUCE +|08/01/2022 07:52:12| DUCE +|08/01/2022 07:52:15| |THE STAKES HAVE NEVER BEEN LOWER| +|08/01/2022 07:52:16| |is this still df or df2 already?| +|08/01/2022 07:52:18| >italians +|08/01/2022 07:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:52:21| df1 +|08/01/2022 07:52:22| |You know who DOESN'T love Alisa?| +|08/01/2022 07:52:23| |NEET STRONK| +|08/01/2022 07:52:24| STRONK +|08/01/2022 07:52:24| |pirates soon| +|08/01/2022 07:52:26| |STUG LIFE| +|08/01/2022 07:52:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:52:28| TSUYOI +|08/01/2022 07:52:31| |Nobody loves alisa| +|08/01/2022 07:52:35| stronk +|08/01/2022 07:52:39| |Muscle girls| +|08/01/2022 07:52:42| |cute noriko| +|08/01/2022 07:52:45| |I rabu alisa| +|08/01/2022 07:52:53| YARR +|08/01/2022 07:52:57| WW1 +|08/01/2022 07:52:57| |I HATE THE SHARKS| +|08/01/2022 07:52:59| ENTER +|08/01/2022 07:53:00| |out larped hippo team| +|08/01/2022 07:53:02| SAME-TEAM +|08/01/2022 07:53:02| |useless tank| +|08/01/2022 07:53:04| |BEST TEAM| +|08/01/2022 07:53:04| |YAR HAR| +|08/01/2022 07:53:05| |>they're doing the meme tank thing| +|08/01/2022 07:53:06| |Leave her johnny, leave her~| +|08/01/2022 07:53:07| |Is there any girl here that nobody actually likes?| +|08/01/2022 07:53:09| |SAME TEAM| +|08/01/2022 07:53:09| |STUPID FUCKING MAST| +|08/01/2022 07:53:10| >memeflagot +|08/01/2022 07:53:10| YARRRR +|08/01/2022 07:53:11| |they kept the lewis guns| +|08/01/2022 07:53:12| |ENTER JOBBERS| +|08/01/2022 07:53:14| |Gamers too buff. tossing tank shells like pillows| +|08/01/2022 07:53:14| |Here come the retards| +|08/01/2022 07:53:16| |this panzer looks THICK| +|08/01/2022 07:53:16| |is that a goddamn ww1 tank?????| +|08/01/2022 07:53:18| |the comic relief is here| +|08/01/2022 07:53:19| [piratesofthecaribean.wav] +|08/01/2022 07:53:19| |girls und ships| +|08/01/2022 07:53:22| |That fucking mast| +|08/01/2022 07:53:22| |Enter useless team| +|08/01/2022 07:53:23| ENTER +|08/01/2022 07:53:24| landbote +|08/01/2022 07:53:24| |+baka sqsuad| +|08/01/2022 07:53:25| |>a fucking WWI tank| +|08/01/2022 07:53:34| |Best target practice| +|08/01/2022 07:53:34| |YOU WON'T BE LAUGHING WHEN SHARK KILLS KMM'S A7V| +|08/01/2022 07:53:35| |literally a 100-year old relic| +|08/01/2022 07:53:35| |Somali-tier tank| +|08/01/2022 07:53:36| |muh pollution| +|08/01/2022 07:53:36| |does a panzer need a sail?| +|08/01/2022 07:53:37| |the worst pirates i've ever heard of| +|08/01/2022 07:53:38| |there better be an A7V later on| +|08/01/2022 07:53:39| |I can feel the fucking rivets about to burst| +|08/01/2022 07:53:41| |good god thats an actual ww1 tank| +|08/01/2022 07:53:41| |Mk1 Sheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesh| +|08/01/2022 07:53:41| |MEME TANK| +|08/01/2022 07:53:45| |There's not enough carbon in the world to make that tank safe| +|08/01/2022 07:53:46| |Literally worse than the Type-89| +|08/01/2022 07:53:46| |They should mount an MLRS to this tank| +|08/01/2022 07:53:46| |jesus christ| +|08/01/2022 07:53:47| YAHAAAAARR +|08/01/2022 07:53:48| |BC has a FT; it's a fair march| +|08/01/2022 07:53:48| |So how is this supposed to be useful at all?| +|08/01/2022 07:53:50| |based tank| +|08/01/2022 07:53:52| |>it looks like a potato| +|08/01/2022 07:53:59| SHARK +|08/01/2022 07:54:00| |Enter Hatay team from Indiana Jones school| +|08/01/2022 07:54:00| |yukari stop being autistic| +|08/01/2022 07:54:01| |Lucky shark tank ain't flag tank| +|08/01/2022 07:54:05| |chad murakami stance| +|08/01/2022 07:54:06| |Rum is taller than I expected| +|08/01/2022 07:54:06| |cute sharks| +|08/01/2022 07:54:07| |shark? more like shart| +|08/01/2022 07:54:09| |A literal fucking death trap| +|08/01/2022 07:54:09| |getting drunk on non-alhocolic rum| +|08/01/2022 07:54:09| UWAAAAAAAAAAAA +|08/01/2022 07:54:13| |based underclassman bullying| +|08/01/2022 07:54:14| |do not bully the rabbits| +|08/01/2022 07:54:14| LANDSHIP +|08/01/2022 07:54:15| |Kept you waiting huh?| +|08/01/2022 07:54:17| |To be fair, it does have two short 6pdr's| +|08/01/2022 07:54:18| steelpotat +|08/01/2022 07:54:19| |BULLY RABBITS| +|08/01/2022 07:54:23| |what kind of gun and armor does the landship have? Basically nothing?| +|08/01/2022 07:54:24| |Cutlass = Cute Lass| +|08/01/2022 07:54:25| |useless puppet| +|08/01/2022 07:54:26| |>azusa and saki not being scared| +|08/01/2022 07:54:27| rawr +|08/01/2022 07:54:28| |KEEP YOU WAITING HUH| +|08/01/2022 07:54:29| |Dumb momo| +|08/01/2022 07:54:35| |useless puppet useless puppet useless puppet| +|08/01/2022 07:54:36| |>choker SLUT| +|08/01/2022 07:54:36| >Momo +|08/01/2022 07:54:36| |momo dumb| +|08/01/2022 07:54:39| |momo a dumb| +|08/01/2022 07:54:39| |Momo more like retardmo| +|08/01/2022 07:54:40| |Mark 4 has like 14mm at most| +|08/01/2022 07:54:41| |Straight up threats and a bottle| +|08/01/2022 07:54:43| UUUUEEEHHH +|08/01/2022 07:54:43| OOOOOOOOH +|08/01/2022 07:54:43| |FOR MOMO!| +|08/01/2022 07:54:44| |flint wiggle| +|08/01/2022 07:54:44| |Pupper Commander| +|08/01/2022 07:54:44| OOWOWOWOWWW +|08/01/2022 07:54:45| |CUTE DANCE| +|08/01/2022 07:54:46| |2 6pdr's, 4 Lewis guns, 8-15mm of armour| +|08/01/2022 07:54:47| |ho ho ho hoho| +|08/01/2022 07:54:48| |fucking flint| +|08/01/2022 07:54:49| |flint katyusha| +|08/01/2022 07:54:49| |Armor: A couple of inches. It is barely machinegun-proof.| +|08/01/2022 07:54:50| |I wannt to bully rabbit team| +|08/01/2022 07:54:51| |flint a cute autist| +|08/01/2022 07:54:53| |AAAAAAAAAAAAAAAAH HIPS| +|08/01/2022 07:54:54| |the animation is so lovely| +|08/01/2022 07:54:55| |IF IT WASN'T FOR MOMO YOU WOULDN'T HAVE THESE FILMS!! APOLOGIZE!!!!| +|08/01/2022 07:54:56| |I HATE FLINT| +|08/01/2022 07:54:57| flint_dance.webm +|08/01/2022 07:54:58| |YES I WANT TO FUCK FLINT| +|08/01/2022 07:54:59| |Pirates are too scary for me, I'll stick with a cute girl like Alisa| +|08/01/2022 07:55:00| |oh ok, so it has SOMETHING at least| +|08/01/2022 07:55:01| |you must refer to momo as momo-taichou from now on| +|08/01/2022 07:55:02| lmao +|08/01/2022 07:55:05| |based TK| +|08/01/2022 07:55:06| |fucking frencies lamo| +|08/01/2022 07:55:06| WWWWWWWWWWWW +|08/01/2022 07:55:11| |>implying she commands anything| +|08/01/2022 07:55:12| |incredibl ruse| +|08/01/2022 07:55:13| 礼 +|08/01/2022 07:55:13| |CUTE MESSED UP FRENCHIES| +|08/01/2022 07:55:13| |I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Ta| +|08/01/2022 07:55:20| |the french tanks are pretty sexy| +|08/01/2022 07:55:20| |I REFUSE TO BE PART OF YOUR SYSTEM| +|08/01/2022 07:55:21| RUDE +|08/01/2022 07:55:24| |Based Marie bows to no one| +|08/01/2022 07:55:24| |Andou cute and gay| +|08/01/2022 07:55:29| OST +|08/01/2022 07:55:29| |FUCKING BITCH| +|08/01/2022 07:55:30| |french have sexiest tanks| +|08/01/2022 07:55:30| |my wife andou| +|08/01/2022 07:55:33| |gay frog kung fu| +|08/01/2022 07:55:34| |what a cunt| +|08/01/2022 07:55:40| |I've heard mixed things about french tanks| +|08/01/2022 07:55:41| |your head weights like 500 kilos just let it go| +|08/01/2022 07:55:41| |SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU | +|08/01/2022 07:55:42| OST +|08/01/2022 07:55:44| dodododododododo +|08/01/2022 07:55:44| plotArmor.ost +|08/01/2022 07:55:46| |I want to fondle maries plump thighs| +|08/01/2022 07:55:50| |French too smug| +|08/01/2022 07:55:50| |Imagine the French hate sex| +|08/01/2022 07:55:56| |marie is CUTE| +|08/01/2022 07:55:57| |Lithuanian andou lover I know you're here| +|08/01/2022 07:55:58| |The step up in animation compared to the Der Film one is huge| +|08/01/2022 07:55:59| |playing dumb| +|08/01/2022 07:56:04| |>french topless JKs| +|08/01/2022 07:56:11| |SOUND DESIGN MOTHERFUCKERS| +|08/01/2022 07:56:13| |I cannot lie anons, I love andou| +|08/01/2022 07:56:14| |lads I missed the ending of Der Film. what did I miss in between| +|08/01/2022 07:56:24| intermission +|08/01/2022 07:56:24| |Only the arisu ova| +|08/01/2022 07:56:27| |you missed tank Kino| +|08/01/2022 07:56:28| |>getting chocked out by Marie's fat thighs| +|08/01/2022 07:56:28| |>that porche tiger engine sound| +|08/01/2022 07:56:31| |you missed kino| +|08/01/2022 07:56:37| |You missed intermission and taiyaki war| +|08/01/2022 07:56:38| |Missed UUOOHH| +|08/01/2022 07:56:42| |you missed ferris wheel kino| +|08/01/2022 07:56:43| |Imagine the thighjob Marie would give| +|08/01/2022 07:56:45| |useless momo useless momo useless momo useless momo useless momo useless momo | +|08/01/2022 07:56:47| |can I gt chocked by katyushas's thighs?| +|08/01/2022 07:56:50| |FUCK momo| +|08/01/2022 07:56:53| |fuk der film is my favorite cant believe i only got on right after| +|08/01/2022 07:56:56| |Marie too skinny though| +|08/01/2022 07:56:57| |Imagine getting your dick crushed between Marie's fat thighs| +|08/01/2022 07:56:57| |with pleasure!| +|08/01/2022 07:57:02| |bros... i'm starting to get tired...| +|08/01/2022 07:57:02| |marie's thighjob would crush me like a grape| +|08/01/2022 07:57:14| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 07:57:15| |stay awake| +|08/01/2022 07:57:16| |NO FALLING ASLEEP| +|08/01/2022 07:57:16| |stay stong anon| +|08/01/2022 07:57:20| |I want to grape marie| +|08/01/2022 07:57:25| |Sleep can come later anon| +|08/01/2022 07:57:26| |THAT ELECTRIC ENGINE DOES THINGS TO MY COCK| +|08/01/2022 07:57:29| |>getting tired FUCKING WEAK| +|08/01/2022 07:57:29| |imagine sleeping lamo LIKE A GIRL| +|08/01/2022 07:57:30| |NO SLEEPING. WE WILL ALL MAKE IT| +|08/01/2022 07:57:32| |NO SLEEPING ON DUTY SOLDIER| +|08/01/2022 07:57:33| |GUP is now| +|08/01/2022 07:57:39| 3D +|08/01/2022 07:57:40| |>needing sleep| +|08/01/2022 07:57:40| >sleeping +|08/01/2022 07:57:41| |8 AM here| +|08/01/2022 07:57:42| |pwanza vvvvoa!| +|08/01/2022 07:57:42| |realistically how the hell can the mk IV even keep up | +|08/01/2022 07:57:44| |>imagine being a wagie working tomorrow| +|08/01/2022 07:57:45| |HOW DO I CURE MY INSOMNIA| +|08/01/2022 07:57:46| |the only use for sleep is to pass the time between gup and toot| +|08/01/2022 07:57:46| |Not a man left behind| +|08/01/2022 07:57:46| |CG boy| +|08/01/2022 07:57:49| |we'll all stay up until the end and wake up before snw| +|08/01/2022 07:57:51| |2:55 pm| +|08/01/2022 07:57:52| |Leopon team works miracles| +|08/01/2022 07:57:55| |Surely only girls would watch something like GuP though?| +|08/01/2022 07:57:58| |Mk IV's top speed is like 6 mph| +|08/01/2022 07:57:59| |>imagine working| +|08/01/2022 07:58:00| |Just sleep with your eyes open. Best of both worlds.| +|08/01/2022 07:58:06| |it's almost 9 am here| +|08/01/2022 07:58:08| |They said the Mk4 got custom work| +|08/01/2022 07:58:08| |If I don't go to sleep soon, I may not be awake for the start of SnW.| +|08/01/2022 07:58:11| |we're all girls here, we're the target audience | +|08/01/2022 07:58:11| |Guys its 3:55 am, i don't think i'm going to make it| +|08/01/2022 07:58:39| WEEEEEEE +|08/01/2022 07:58:47| |in about 8 hours anison matrix starts| +|08/01/2022 07:58:52| |snw is in 12 hours| +|08/01/2022 07:58:56| |panzer vor means panzer vor| +|08/01/2022 07:58:57| |SLEEP > WAIFU| +|08/01/2022 07:58:58| |guys it's 1756h here I'm ready| +|08/01/2022 07:58:59| |PANZER VOR| +|08/01/2022 07:58:59| |kono bangumi wa goran no suponsaa no teikyou de okurishimasu| +|08/01/2022 07:59:02| |PANZER VOR| +|08/01/2022 07:59:02| |YOU CAN DO IT MOMO-TAICHOU!| +|08/01/2022 07:59:02| |SAY THE THING| +|08/01/2022 07:59:02| |PANZER VOR| +|08/01/2022 07:59:03| |PANZER VOR| +|08/01/2022 07:59:04| |PANZER VOR| +|08/01/2022 07:59:04| |PANTSAAA FOOOH| +|08/01/2022 07:59:04| |you don't need that much sleep| +|08/01/2022 07:59:05| |TL Note: "Anzu" means "SEX".| +|08/01/2022 07:59:05| |I CLAP| +|08/01/2022 07:59:06| |PANZER VORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR| +|08/01/2022 07:59:06| |PANZER VO| +|08/01/2022 07:59:07| |MOMO CUTE| +|08/01/2022 07:59:08| |Pants her whore| +|08/01/2022 07:59:09| |ppansaa voa| +|08/01/2022 07:59:09| |P-PANZER FOO| +|08/01/2022 07:59:10| |>momo responsible for anything| +|08/01/2022 07:59:10| |PANZER AHO| +|08/01/2022 07:59:11| |PANTSU FOOH| +|08/01/2022 07:59:11| |PANZER VOR| +|08/01/2022 07:59:12| |PPANZER VOR| +|08/01/2022 07:59:13| |panzer vor means sex in a tank| +|08/01/2022 07:59:14| |PANZER VOR| +|08/01/2022 07:59:15| |PANZER VOR| +|08/01/2022 07:59:17| |PANTSU VORE| +|08/01/2022 07:59:19| |panties for?| +|08/01/2022 07:59:21| !23movies.com +|08/01/2022 07:59:21| |thanks tl| +|08/01/2022 07:59:22| WHEEEEEZE +|08/01/2022 07:59:23| |dork levels off the charts| +|08/01/2022 07:59:25| |>using the tiger as a scout| +|08/01/2022 07:59:26| DOOTDOOTDOOOOTDOOTDOOTDOOT +|08/01/2022 07:59:30| |How about Panzer Vore| +|08/01/2022 07:59:30| |panzer vor with maho| +|08/01/2022 07:59:33| |look at this dorks| +|08/01/2022 07:59:34| NOISE +|08/01/2022 07:59:35| |PANZER VOR means Panzer Vor| +|08/01/2022 07:59:38| |ARL-44s - fucking paper tanks| +|08/01/2022 07:59:38| |TL:panzer vore means "Raw dogging Momo's sinful body"| +|08/01/2022 07:59:42| |Pantsu vore| +|08/01/2022 07:59:42| aznable +|08/01/2022 07:59:43| |What does panzer vor mean anons?| +|08/01/2022 07:59:50| |I'm gonna suck Hana's left nut| +|08/01/2022 07:59:51| |Momo's body is NOT sinful| +|08/01/2022 07:59:51| |ARL-44's were built| +|08/01/2022 07:59:52| |FUCKING JOBBERS| +|08/01/2022 07:59:52| USELESS +|08/01/2022 07:59:52| |a hoi| +|08/01/2022 07:59:53| |TAP ASS| +|08/01/2022 07:59:53| |FUCK EM UP USAGIS| +|08/01/2022 07:59:56| |ARL 44 is most powerful tank| +|08/01/2022 07:59:56| |It means "Pleasure of being cummed inside"| +|08/01/2022 07:59:56| |>ship >can't cross a creek | +|08/01/2022 07:59:56| |WW1 tanks| +|08/01/2022 07:59:57| |They were just shit| +|08/01/2022 07:59:57| |panzer vor means sex with Anzu| +|08/01/2022 07:59:58| ahoi +|08/01/2022 07:59:59| |STUPID PIRATES| +|08/01/2022 08:00:00| Ahoy! +|08/01/2022 08:00:01| AHOY +|08/01/2022 08:00:02| |>already dead| +|08/01/2022 08:00:03| kick +|08/01/2022 08:00:04| AAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:00:04| |>landship >struggles in knee height water| +|08/01/2022 08:00:09| |Niggers in paris| +|08/01/2022 08:00:16| |cute delinquents| +|08/01/2022 08:00:18| |who was in paris?| +|08/01/2022 08:00:21| |scam artist| +|08/01/2022 08:00:21| |I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES | +|08/01/2022 08:00:22| |Thanks anon now I know what panzer vor means :)| +|08/01/2022 08:00:23| |i want murakami to crush me| +|08/01/2022 08:00:23| |luv mkiv simple as| +|08/01/2022 08:00:25| |Momo, you weren't shy with the rumors that you might repeat a year, why you shy now?| +|08/01/2022 08:00:26| |tea sluts| +|08/01/2022 08:00:27| |Niggers we in fact in Paris| +|08/01/2022 08:00:31| |>momo didnt make them take that shit down| +|08/01/2022 08:00:33| SMIRK +|08/01/2022 08:00:34| |FROG LOLI UOOOOOOHHHHHHHH| +|08/01/2022 08:00:34| |SERIOUS MUSIC| +|08/01/2022 08:00:35| |I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES | +|08/01/2022 08:00:35| |I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES| +|08/01/2022 08:00:35| |2 People in a 1 Man Turret| +|08/01/2022 08:00:37| <3 +|08/01/2022 08:00:39| |Andou is the nigger is paris| +|08/01/2022 08:00:40| |CUTE HAT| +|08/01/2022 08:00:42| |HON HON HON| +|08/01/2022 08:00:44| |Was it the same niggers that were on the moon?| +|08/01/2022 08:00:44| |look at these fatties| +|08/01/2022 08:00:44| |Shouldn't it be against the rules to have more than one tank with a flag?| +|08/01/2022 08:00:54| |wish i was that gunner| +|08/01/2022 08:00:55| |shifty frog bastards| +|08/01/2022 08:00:56| |no the moon had Nazi Niggers| +|08/01/2022 08:00:59| |Oh shidd its Fr*nch time| +|08/01/2022 08:01:01| |Baguettes bombardment| +|08/01/2022 08:01:03| | Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers | +|08/01/2022 08:01:06| |I wish I was under the gunner| +|08/01/2022 08:01:06| |no the niggers that were on the moon was actually only one nigger| +|08/01/2022 08:01:11| |hello hate niggers| +|08/01/2022 08:01:12| |>WoT tank sniping time| +|08/01/2022 08:01:13| HONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHO +|08/01/2022 08:01:15| |French hats are cute| +|08/01/2022 08:01:17| |THE GAME WAS RIGGED FROM THE START| +|08/01/2022 08:01:18| |I wish I was andou's seat| +|08/01/2022 08:01:21| |the niggers on the moon were the gay ones from outer space| +|08/01/2022 08:01:28| |ANDOU RABU| +|08/01/2022 08:01:32| |Tiger porche op like what the actual fuck| +|08/01/2022 08:01:33| >buffering +|08/01/2022 08:01:38| |L O N G BARREL| +|08/01/2022 08:01:42| |ahh gay niggers from outer space that makes sense| +|08/01/2022 08:01:47| |pivot turning into neutral steering| +|08/01/2022 08:01:47| |I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU | +|08/01/2022 08:01:49| |>french anything >cute| +|08/01/2022 08:01:51| |niggers tougue my anus| +|08/01/2022 08:01:53| |L O O O O O O O N G| +|08/01/2022 08:01:58| |I want Andou to marry Oshida| +|08/01/2022 08:02:00| |my wife andou is so cute| +|08/01/2022 08:02:09| |I would play petanque with you /a/nons| +|08/01/2022 08:02:09| |cute sleepy redhead| +|08/01/2022 08:02:09| pettanko!? +|08/01/2022 08:02:11| pettanko....... +|08/01/2022 08:02:11| |Brit moment| +|08/01/2022 08:02:16| |I WANT TO MARRY ANDOU | +|08/01/2022 08:02:17| ruhroh +|08/01/2022 08:02:19| |NEARSIDE COVER WHERE!?| +|08/01/2022 08:02:21| pettwhat +|08/01/2022 08:02:24| pettanko? +|08/01/2022 08:02:25| |UH OH| +|08/01/2022 08:02:26| PETTAN +|08/01/2022 08:02:27| |>a bridge| +|08/01/2022 08:02:27| |hmm looks safe enough| +|08/01/2022 08:02:28| |>entire column crosses the bridge at once| +|08/01/2022 08:02:32| |playing pettanko on anzu's chest| +|08/01/2022 08:02:34| |y u k k u r i| +|08/01/2022 08:02:35| |BRIDGE ON THE RIVER KAWAII| +|08/01/2022 08:02:35| |Around Fr*nch watch yourselves| +|08/01/2022 08:02:36| |pettan pettan tsurupettan| +|08/01/2022 08:02:37| |NOT A TRAP AT ALL| +|08/01/2022 08:02:38| |>carbon coated bridge| +|08/01/2022 08:02:39| |What a fucking nigger| +|08/01/2022 08:02:40| |pettanko uoooooh| +|08/01/2022 08:02:42| kwaibros +|08/01/2022 08:02:43| |EVER TIME | +|08/01/2022 08:02:48| |Carbon coated bridge| +|08/01/2022 08:02:49| |BEGIN WHISTLING COLONEY BOGEY'S MARCH| +|08/01/2022 08:02:50| |LANDING A JET ON ANZU'S CHEST| +|08/01/2022 08:02:51| |Bridge built by slag hands| +|08/01/2022 08:02:51| |Pettan Pettan Mojipettan!| +|08/01/2022 08:02:53| |yuropoor bridge| +|08/01/2022 08:02:54| |CLASSIC BLUNDER| +|08/01/2022 08:02:56| |Wait I just remembered this was cut from the start| +|08/01/2022 08:02:59| |not carbon coated enough| +|08/01/2022 08:02:59| |NOT THIS BRIDGE | +|08/01/2022 08:02:59| |>old ass wooden bridge > lets all cross at once| +|08/01/2022 08:03:03| |Didn't they get trolled by how they bomb the uni bridge?| +|08/01/2022 08:03:03| |I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +|08/01/2022 08:03:06| |I don't think this bridge can hold 300 tons.| +|08/01/2022 08:03:08| |the studs are reinforced| +|08/01/2022 08:03:09| |Kawhi Leonard is the best slave out there| +|08/01/2022 08:03:10| |I still wonder what that type of neck microhpone is| +|08/01/2022 08:03:11| |carbon wood| +|08/01/2022 08:03:11| |Imagine falling for a trap set by the french| +|08/01/2022 08:03:11| |it's okay, it's made of stalinwood| +|08/01/2022 08:03:15| |THE RAIN WASH ALL CARBON OFFF| +|08/01/2022 08:03:22| |I HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCH| +|08/01/2022 08:03:23| |kino directing| +|08/01/2022 08:03:26| |>eyes drawn through hair| +|08/01/2022 08:03:27| |And also imagine subsequently scoring no kills as the french| +|08/01/2022 08:03:28| UHO +|08/01/2022 08:03:29| UHUH +|08/01/2022 08:03:32| |>rum is drunk as shit as always| +|08/01/2022 08:03:33| UHO +|08/01/2022 08:03:33| |I'm about to eat some pirate's booty | +|08/01/2022 08:03:34| |No Duce to save you this time| +|08/01/2022 08:03:35| ?????????????????????????? +|08/01/2022 08:03:37| |Alexa play Bridge of Kahazad Dum| +|08/01/2022 08:03:37| |>uho, cool single line| +|08/01/2022 08:03:38| UHO +|08/01/2022 08:03:39| |PUTTING CHEMICALS IN THE TAIYAKI TO TURN THE FRICKIN FROGS GAY| +|08/01/2022 08:03:42| |>Sodoko has best eyesight >spots this earliest >poetry| +|08/01/2022 08:03:44| |OH NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 08:03:47| |CUTE SPOTTER LOLI| +|08/01/2022 08:03:48| |HIT THE DECK| +|08/01/2022 08:03:48| |it's hon hon time| +|08/01/2022 08:03:48| >intuition +|08/01/2022 08:03:50| AMBUSH +|08/01/2022 08:03:56| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:03:56| YABAI +|08/01/2022 08:03:57| !! +|08/01/2022 08:03:58| |They LOST...| +|08/01/2022 08:04:04| KILL +|08/01/2022 08:04:04| |OARAI IS FUCKED HOLY SHIT| +|08/01/2022 08:04:06| |enviromental damage binch| +|08/01/2022 08:04:06| |I love tiny tanks| +|08/01/2022 08:04:06| |cute marie| +|08/01/2022 08:04:06| AAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:04:07| |MOMO HATE| +|08/01/2022 08:04:08| |BACKING UP| +|08/01/2022 08:04:11| |>taking the bait| +|08/01/2022 08:04:11| |SHIFT FROG CUNTS| +|08/01/2022 08:04:13| FUCKKKKKKKKKKKKKKKKKKKKKK +|08/01/2022 08:04:14| |REMEMBER THE BRIDGE DRAMA IN THE ORIGINAL THREADS| +|08/01/2022 08:04:14| |Bridge goes boom| +|08/01/2022 08:04:14| |DUMPING OOARAICOIN| +|08/01/2022 08:04:14| |Ooaribros we got too cocky| +|08/01/2022 08:04:14| |Oaraibros how are we gonna get out of this one| +|08/01/2022 08:04:15| |cute tank| +|08/01/2022 08:04:15| |wish i was that pillow| +|08/01/2022 08:04:17| |OOARAI BROS…| +|08/01/2022 08:04:20| |oorai bros... I don't feel so good... | +|08/01/2022 08:04:21| |scrubs smh| +|08/01/2022 08:04:22| |It's so fucking over| +|08/01/2022 08:04:22| |it's fucking over| +|08/01/2022 08:04:23| |OARAI BROS WE GOT COCKY AGAIN| +|08/01/2022 08:04:24| |gg momo is repeating| +|08/01/2022 08:04:24| |ACTIVATE THE PLOT DRAMA| +|08/01/2022 08:04:25| |FUCK FUCK FUCK FUCK NOT LIKE THIS| +|08/01/2022 08:04:26| |IT'S OVER| +|08/01/2022 08:04:28| |Call Duce for support| +|08/01/2022 08:04:30| |15-0 moment| +|08/01/2022 08:04:32| |useless french cant shoot still tank| +|08/01/2022 08:04:32| |V-TEC JUST KICKED IN YOOOO!! V-TEC JUST KICKED IN YOOOO!!| +|08/01/2022 08:04:33| TURBO +|08/01/2022 08:04:33| ACCELERATE +|08/01/2022 08:04:33| |SELL OORAICOIN| +|08/01/2022 08:04:34| ZOOOOOOOOOOOOOOM +|08/01/2022 08:04:34| |$40000 ON BC FREEDOM| +|08/01/2022 08:04:35| |I KNOW, I KNOW I'VE LET YOU DOWN...| +|08/01/2022 08:04:35| |VTEC | +|08/01/2022 08:04:35| |ooarai bros...| +|08/01/2022 08:04:38| |DO YOU LIKE MY TANK| +|08/01/2022 08:04:38| |welp this is it might as well go to sleep now| +|08/01/2022 08:04:39| |GAS GAS GAS| +|08/01/2022 08:04:39| |HIT THAT MF DRIFTO| +|08/01/2022 08:04:40| |V-TEC JUST KICKED IN YOOOO!!| +|08/01/2022 08:04:40| |I LOVE TINY TANKS I LOVE TANKY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY T| +|08/01/2022 08:04:41| |porsche ult has a long cooldown it's fair and balanced| +|08/01/2022 08:04:42| |ARL lef in the dust...| +|08/01/2022 08:04:43| hayai +|08/01/2022 08:04:44| HAYAI +|08/01/2022 08:04:44| |holy shite| +|08/01/2022 08:04:44| W-WOAH +|08/01/2022 08:04:46| |BASED /o/FAGS| +|08/01/2022 08:04:50| |GAS GAS GAS| +|08/01/2022 08:04:52| |played like a damn fiddle| +|08/01/2022 08:04:53| |Leopon drifting abusing engine and regulations again| +|08/01/2022 08:04:53| |skill issue| +|08/01/2022 08:04:53| |VTEC JUST KICKED IN| +|08/01/2022 08:04:55| |launch control master race| +|08/01/2022 08:04:57| |Someone get them a better monitor they can't hit their shots| +|08/01/2022 08:04:58| |marvel quips| +|08/01/2022 08:04:59| |YOU GONNA CARRY ALL THAT WEIGHT| +|08/01/2022 08:04:59| |>race car sfx| +|08/01/2022 08:05:00| SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEXXXXX +|08/01/2022 08:05:03| |IF ONLY THE FRENCH COULD HIT THE BROAD SIDE OF A BARN| +|08/01/2022 08:05:04| |Leopon is too powerful| +|08/01/2022 08:05:09| |floof is spooked| +|08/01/2022 08:05:12| |cute floof| +|08/01/2022 08:05:14| |>fool US| +|08/01/2022 08:05:15| |God I love this OST| +|08/01/2022 08:05:15| |poor floof| +|08/01/2022 08:05:15| |THEY PLAYED US LIKE A DAMN FIDDLE| +|08/01/2022 08:05:18| EH +|08/01/2022 08:05:21| SMUG +|08/01/2022 08:05:21| |11 years later, Motegi's still fucked.| +|08/01/2022 08:05:21| D: +|08/01/2022 08:05:22| |I love yukari| +|08/01/2022 08:05:22| |Floof fucked up| +|08/01/2022 08:05:23| |cute scared floof| +|08/01/2022 08:05:23| |>she gets a second cake| +|08/01/2022 08:05:24| >bongs +|08/01/2022 08:05:24| |Big penetration for small tanks | +|08/01/2022 08:05:25| |YUKARI YOU FUCK| +|08/01/2022 08:05:28| CLANG +|08/01/2022 08:05:29| |cake fattie| +|08/01/2022 08:05:29| |STOP THINKING ABOUT FOOD YOU FAT FUCK| +|08/01/2022 08:05:30| |fat bimch| +|08/01/2022 08:05:35| >underestimated +|08/01/2022 08:05:37| |>carbon coating| +|08/01/2022 08:05:40| |They played us like a dollar store kazoo. You need skill to play a fiddle| +|08/01/2022 08:05:41| |Said the team that loses every year| +|08/01/2022 08:05:43| |maybe yukari shouldn't have landed at their school using a fucking helicopter this time| +|08/01/2022 08:05:53| WHOOOOOOOOOOOOOOOOOSH +|08/01/2022 08:05:55| |ngl, i'd stuff her face and not with cake| +|08/01/2022 08:05:55| |why can't the frog hit anything????| +|08/01/2022 08:05:59| recoiloli +|08/01/2022 08:06:00| |HOLY FUCK JUST KNOCK OUT THE SUPPORT BEAM| +|08/01/2022 08:06:07| |THAT FRENCH GUNNERY| +|08/01/2022 08:06:10| |>like 100 shots fired| +|08/01/2022 08:06:11| |MIHO CURRENTLY HAS 5000 SPLINTERS IN HER FACE| +|08/01/2022 08:06:13| |Cake blocks their sights. Can't aim properly| +|08/01/2022 08:06:14| |Baguettes are in the way| +|08/01/2022 08:06:16| |>not one fucking tank down| +|08/01/2022 08:06:18| |great plan Momo| +|08/01/2022 08:06:23| |100 shots, zero penetrations. THE FRENCH| +|08/01/2022 08:06:25| |don't worry anon, her eyes are carbon coated| +|08/01/2022 08:06:27| |yukari please commit harakiri| +|08/01/2022 08:06:27| |>french gunner| +|08/01/2022 08:06:30| |Yukari is the cutest dork| +|08/01/2022 08:06:31| LANDBOTE +|08/01/2022 08:06:36| |based tank autist| +|08/01/2022 08:06:38| |>hitting every part of the bridge, but not one on the tanks| +|08/01/2022 08:06:41| |>yukari immediately knows what she's thinking CUTE| +|08/01/2022 08:06:43| INABA +|08/01/2022 08:06:47| |KINO NAMES| +|08/01/2022 08:06:48| |FUCK OFF MOMO| +|08/01/2022 08:06:52| |walksu zu plank| +|08/01/2022 08:06:54| |>bridge hasn't collapsed yet| +|08/01/2022 08:06:56| |That name| +|08/01/2022 08:06:58| |WORST ACCURACY IN THE ENTIRE TOURNAMENT: BC FREEDOM| +|08/01/2022 08:06:58| YOOOOSORO +|08/01/2022 08:07:01| YOSORO +|08/01/2022 08:07:03| |worse physics that der film| +|08/01/2022 08:07:04| |wooku za puranku| +|08/01/2022 08:07:05| |Hare of Inaba has to be the least autistic op name she's made| +|08/01/2022 08:07:05| |THIS SHIT IS TOO RETARDED| +|08/01/2022 08:07:06| |anon I told you, the bridge is carbon coated| +|08/01/2022 08:07:07| DORKS +|08/01/2022 08:07:10| Yosoro +|08/01/2022 08:07:12| |still can't hit any one| +|08/01/2022 08:07:12| |Bruh how the fuck| +|08/01/2022 08:07:12| |The only useful thing the pirates will ever do| +|08/01/2022 08:07:13| ????????????????????????????????????????????? +|08/01/2022 08:07:13| TACTICAL +|08/01/2022 08:07:13| |FRENCH BTFO BY PIRATES| +|08/01/2022 08:07:17| |I'm more surprised how the bridge is still standing| +|08/01/2022 08:07:19| |>Chain of commmand | +|08/01/2022 08:07:19| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES | +|08/01/2022 08:07:22| ???????????????????????????????????????????????? +|08/01/2022 08:07:23| MAH +|08/01/2022 08:07:23| |That has to be the best pirate I've ever seen...| +|08/01/2022 08:07:23| WAT +|08/01/2022 08:07:25| |OGNION BROS?!?| +|08/01/2022 08:07:25| |even the frogs are scared| +|08/01/2022 08:07:27| |MON DIEU| +|08/01/2022 08:07:27| |oorari did not deserve this| +|08/01/2022 08:07:28| ?????????????????????????????????????? +|08/01/2022 08:07:30| |frogs missing this many shots is kinda bullshit| +|08/01/2022 08:07:33| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 08:07:33| |I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HAT| +|08/01/2022 08:07:36| |they needed at least a few more minutes to take a tank| +|08/01/2022 08:07:39| |>not ONE loss| +|08/01/2022 08:07:39| |SACRE BLEU| +|08/01/2022 08:07:45| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES | +|08/01/2022 08:07:46| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 08:07:46| |ONE JOB| +|08/01/2022 08:07:47| |ORARI BROS WAS THIS THE PLAN?| +|08/01/2022 08:07:47| |c'est fini| +|08/01/2022 08:07:50| |driving in reverse so turrent don't get damaged, smmart| +|08/01/2022 08:07:50| |FAT FRENCH MOTHERFUCKERS| +|08/01/2022 08:07:51| |I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HAT| +|08/01/2022 08:07:52| |WHAT ARE WE GONNA DO FROGBROS????| +|08/01/2022 08:07:52| |IS THIS THE POWER OF NON ALHOLIC RUM| +|08/01/2022 08:07:55| |PLOT ARMOR > CARBON| +|08/01/2022 08:07:55| |French too slow with loading more shells| +|08/01/2022 08:07:57| |>BRIDGE FINALLY GOES FUCKING DOWN| +|08/01/2022 08:07:58| frogbros... +|08/01/2022 08:08:00| PLOTARMOR.OST +|08/01/2022 08:08:01| |leave it to the frenchoids to miss the fish in a barrel| +|08/01/2022 08:08:04| |SHIT SHIT SHIT SHOULD I BUY OOARAICOIN?| +|08/01/2022 08:08:04| ROLLERCOASTER +|08/01/2022 08:08:05| |>not a single tank has been popped yet| +|08/01/2022 08:08:13| |RIP BRIDGE| +|08/01/2022 08:08:18| |why didnt they kill bridge earlier| +|08/01/2022 08:08:21| |;-;7 bye bridge| +|08/01/2022 08:08:22| |Not even getting one kill here is pretty bad. Worst fight scene in the series by fa| +|08/01/2022 08:08:23| |strongest bridge ever| +|08/01/2022 08:08:27| |>captain casually standing between the flying debris| +|08/01/2022 08:08:28| >retreat +|08/01/2022 08:08:28| |AU PAS INCOMING| +|08/01/2022 08:08:28| |BRIGDGE COLLAPSES AFTER TANKS ARE OUT| +|08/01/2022 08:08:31| |>frogs retreat| +|08/01/2022 08:08:32| FAT +|08/01/2022 08:08:35| |;_; bridge-kun| +|08/01/2022 08:08:37| |FAT FUCK| +|08/01/2022 08:08:38| |French really should have won that| +|08/01/2022 08:08:40| |>THE ABSOLUTE STATE OF THE FR*NCH| +|08/01/2022 08:08:41| |I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +|08/01/2022 08:08:43| |Now the bridge sinks?| +|08/01/2022 08:08:44| |cool idea for a scene but zero tanks dying is kinda dumb| +|08/01/2022 08:08:46| |perfect rretreat, sasuga frogs| +|08/01/2022 08:08:46| |>frog aim| +|08/01/2022 08:08:47| |>French >winning| +|08/01/2022 08:08:48| |ben simmons tier| +|08/01/2022 08:08:48| |RETREAT, SING AND REGROUP| +|08/01/2022 08:08:48| |aaaaaaaand we're back to the start| +|08/01/2022 08:08:50| |No one hit anyone during all that?| +|08/01/2022 08:08:50| |fuck the bridge right?| +|08/01/2022 08:08:51| |I LOVE THE FUCKING ONIION| +|08/01/2022 08:08:53| |FISSON MAILED WE'LL GET EM NEXT TIME| +|08/01/2022 08:08:53| |Even after they got off the bridge they were still surrounded| +|08/01/2022 08:08:54| |O S T| +|08/01/2022 08:08:54| |>Set Trap >Kill 0 Tanks >Retreat >Sing >Mission Accomplished?| +|08/01/2022 08:08:55| |ONION TIME| +|08/01/2022 08:08:56| |SING ALONG| +|08/01/2022 08:08:56| |IMAGINE BEING FRENCH| +|08/01/2022 08:08:57| |I FUCKING HATE ONIONS| +|08/01/2022 08:08:58| |MARIE'S THIGHS ARE 100% FAT| +|08/01/2022 08:08:58| |GOD I LOVE ONIONS| +|08/01/2022 08:08:59| |>BUT FROG MUSIC THO?!??!!| +|08/01/2022 08:08:59| |The classic french retreat| +|08/01/2022 08:09:00| |here we go| +|08/01/2022 08:09:00| |I hate onions| +|08/01/2022 08:09:00| |I LOVE THE ONION| +|08/01/2022 08:09:02| |FUCKING ONION CANT HIT SINGLE TANK| +|08/01/2022 08:09:02| |WAIT, NOT A SINGLE TANK DIED?| +|08/01/2022 08:09:02| |IT'S OIGNON TIME| +|08/01/2022 08:09:03| OST +|08/01/2022 08:09:03| OOOOHONHONHONHONHONHONHONHON +|08/01/2022 08:09:03| |sing along, folks| +|08/01/2022 08:09:04| |I LOVE THE ONION| +|08/01/2022 08:09:04| |I could go for some onion rings rn| +|08/01/2022 08:09:04| |I LOVE THE ONION| +|08/01/2022 08:09:06| >ONIONS +|08/01/2022 08:09:06| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:07| |I LOVE THE SOY| +|08/01/2022 08:09:08| |I FUCKING LOVE ONIONS BROS| +|08/01/2022 08:09:09| |I LOVE THE ONION| +|08/01/2022 08:09:09| |I LOVE THE ONION| +|08/01/2022 08:09:09| |ONION GOOD ONION FRIED| +|08/01/2022 08:09:09| ONIONS +|08/01/2022 08:09:10| |To be fair they are firing AP, thats not going to fdo much to a bridge| +|08/01/2022 08:09:10| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:10| |J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON| +|08/01/2022 08:09:11| |LE FROG| +|08/01/2022 08:09:12| |I HATE THE ONION| +|08/01/2022 08:09:12| |i fucking love onions| +|08/01/2022 08:09:12| |>a fucking onion| +|08/01/2022 08:09:13| |J'AIME L'OIGNON| +|08/01/2022 08:09:13| OUIOUIOUIOUIOUIOUIOUIOUIOUIOUIOUI +|08/01/2022 08:09:15| |AUSTRIANS GET OUT REEEEEEEEEEE| +|08/01/2022 08:09:15| |I LOVE ONIONS| +|08/01/2022 08:09:15| J'AIME +|08/01/2022 08:09:15| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:15| |They would have won if Napoleon was there| +|08/01/2022 08:09:15| |NOOOOOO I DON" WANT TO EAT THE ONION YOU CAN"T MAKE ME| +|08/01/2022 08:09:15| |I WILL EAT THE ONION| +|08/01/2022 08:09:16| |I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONI| +|08/01/2022 08:09:16| |I LOVE THE ONION| +|08/01/2022 08:09:17| ONION +|08/01/2022 08:09:19| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:19| |J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON| +|08/01/2022 08:09:19| |>FRENCH retreating quickly| +|08/01/2022 08:09:19| |J'aime l'oingnon| +|08/01/2022 08:09:20| |Onion > Winning| +|08/01/2022 08:09:20| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:21| |J'aime l'oignon| +|08/01/2022 08:09:21| |wtf is this cut?| +|08/01/2022 08:09:22| |AU PAS CAMERAD| +|08/01/2022 08:09:22| ONIONS!! +|08/01/2022 08:09:22| |AU PAS CAMARADES| +|08/01/2022 08:09:23| |J'aime l'oignon| +|08/01/2022 08:09:24| |AU PAS AU PAS AU PAS | +|08/01/2022 08:09:24| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:25| |I LOVE THE ONION| +|08/01/2022 08:09:26| |AU PAS AU PAS AU PAS | +|08/01/2022 08:09:26| |>A FUCKING ONION| +|08/01/2022 08:09:27| |Fried onions goes well with Saunder subs| +|08/01/2022 08:09:29| |AU PAS AU PAS AU PAS CAMARADES| +|08/01/2022 08:09:29| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:29| |AU PAS KAMERAD AU PAS KAMERAD AU PAS KAMERAD AU PAS KAMERAD | +|08/01/2022 08:09:29| |AU PAS CAMARADES| +|08/01/2022 08:09:30| |>SOY SONG| +|08/01/2022 08:09:30| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:31| |AU PA AU PAS| +|08/01/2022 08:09:31| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:09:31| |BOIL THE FROGS| +|08/01/2022 08:09:32| |AU PAS| +|08/01/2022 08:09:32| |AUPAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE| +|08/01/2022 08:09:32| |AU PAS AU PAS AU PAS | +|08/01/2022 08:09:33| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:09:33| |You WILL eat the Onion| +|08/01/2022 08:09:34| |OMMELETTE DU FROMMAGE| +|08/01/2022 08:09:34| |AU PAS CAMARADES| +|08/01/2022 08:09:34| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:35| |AU PAS CAMARADES AUPAS AU PAS AU PAS| +|08/01/2022 08:09:35| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:35| |WHAT THE FUCK AM I WATCHING| +|08/01/2022 08:09:36| |>they can't get by the filter| +|08/01/2022 08:09:36| |GOD I WANT THAT FRENCH DESSERT PUSSY ON MY FACE| +|08/01/2022 08:09:37| |Au pas camarades| +|08/01/2022 08:09:37| |AU PAS CAMARADES| +|08/01/2022 08:09:37| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:38| |>They march to Onions| +|08/01/2022 08:09:39| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:09:40| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:09:40| |I LOVE THE ONION| +|08/01/2022 08:09:40| |AUS PAS AUS PAS| +|08/01/2022 08:09:41| |AU PAS UA PAS AU PAS | +|08/01/2022 08:09:41| |AU PAS AU PAS| +|08/01/2022 08:09:42| |I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD!| +|08/01/2022 08:09:43| |AU PAS| +|08/01/2022 08:09:43| |OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OP| +|08/01/2022 08:09:44| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:45| |is this oppa korean word??????| +|08/01/2022 08:09:45| |BIG FRENCH COCK| +|08/01/2022 08:09:46| |ONIONBROS, WE WILL WIN DAS FINALE 2| +|08/01/2022 08:09:48| |"Very good!" He said.| +|08/01/2022 08:09:48| |WHAT THE FUCK AM I WATCHING (although I've watched it before)| +|08/01/2022 08:09:48| |YOU WILL EAT THE ONIONS, YOU WILL FEED THE MARIE, YOU WILL PARTICIATE IN CLASS WAR, YOU WILL RIDE THE TANK| +|08/01/2022 08:09:49| |AU PAS UA PAS UA PAS| +|08/01/2022 08:09:49| |AU PAS AU PAS AU PAS | +|08/01/2022 08:09:50| |AU PS| +|08/01/2022 08:09:50| |AU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMAR| +|08/01/2022 08:09:50| |Opa opa pa pa pa| +|08/01/2022 08:09:51| |AU PAS CAMARADE| +|08/01/2022 08:09:52| |LET THEM EAT ONION| +|08/01/2022 08:09:52| |no onions for austrians| +|08/01/2022 08:09:54| |AU PAS| +|08/01/2022 08:09:55| SEAMLESS +|08/01/2022 08:09:55| |>frogs get an onions song but erikafags still waiting| +|08/01/2022 08:09:56| |j'aime l'oignon| +|08/01/2022 08:09:57| URA +|08/01/2022 08:09:58| |two year wait | +|08/01/2022 08:09:59| |love me marches love me onions, 'ate spies 'ate ooarai| +|08/01/2022 08:10:01| |frog legs| +|08/01/2022 08:10:02| |IT'S BEEN TWO YEARS| +|08/01/2022 08:10:04| |French ost is good| +|08/01/2022 08:10:05| |HON HON HON| +|08/01/2022 08:10:06| |where is my INTER INTER MISSION| +|08/01/2022 08:10:07| |Which Frenchy has the biggest cock?| +|08/01/2022 08:10:08| |2 YEAR TIMESKIP| +|08/01/2022 08:10:08| |wow two years really went by quickly| +|08/01/2022 08:10:09| |wow two years went by fast| +|08/01/2022 08:10:11| |TFW AUSTRIAN| +|08/01/2022 08:10:12| |I NEED A PISS| +|08/01/2022 08:10:14| oshida +|08/01/2022 08:10:15| |ENTER MISSION?| +|08/01/2022 08:10:17| |MY WORK HERE IS DONE. >BUT YOU DIDN'T DO ANYTHING| +|08/01/2022 08:10:25| GYAFUNTO +|08/01/2022 08:10:26| |2017 -> 2019| +|08/01/2022 08:10:28| BONBONS +|08/01/2022 08:10:30| |2 YEAR TRANSITION| +|08/01/2022 08:10:32| |I need a bathroom break| +|08/01/2022 08:10:33| |FUCK FROGS (sexually)| +|08/01/2022 08:10:33| |Get a room| +|08/01/2022 08:10:33| |JUST FUCK ALREADY| +|08/01/2022 08:10:34| |>food analogies| +|08/01/2022 08:10:36| |I can't believe it's been two fucking years| +|08/01/2022 08:10:38| brute +|08/01/2022 08:10:38| CAKEFATTIECAKEFATTIECAKEFATTIE +|08/01/2022 08:10:43| |I love andou| +|08/01/2022 08:10:43| DF2? +|08/01/2022 08:10:44| |It's not gay, it's French| +|08/01/2022 08:10:45| |French ain't brave enough to eat onions in their tanks, not like Brits and tea| +|08/01/2022 08:10:48| |Diabetic marie| +|08/01/2022 08:10:50| |two years passed in the blink of an eye| +|08/01/2022 08:10:50| |two years... it got here so fast...| +|08/01/2022 08:10:50| |I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! | +|08/01/2022 08:10:52| |/u/ shitters out| +|08/01/2022 08:10:52| angery +|08/01/2022 08:10:53| |GAY FROGS| +|08/01/2022 08:10:54| |JUST KISS ALREADY| +|08/01/2022 08:10:55| |JUST FUCK ALREADY| +|08/01/2022 08:10:55| |no shit Marie is like tghe cream: FAT| +|08/01/2022 08:10:55| |Youre the best, no youre the best no u no u| +|08/01/2022 08:10:56| /u/ +|08/01/2022 08:10:57| |JUST FUCK ALREADY| +|08/01/2022 08:11:00| |Eating another piece of cake already| +|08/01/2022 08:11:02| |GOD I WANT THAT FRENCH DESSERT EATERS CUNNY IN MY MOUTH| +|08/01/2022 08:11:03| |to bad you can't aim for shit| +|08/01/2022 08:11:03| |VIVA LA BC| +|08/01/2022 08:11:04| |Black Cock| +|08/01/2022 08:11:05| ALLEZ +|08/01/2022 08:11:05| ALLE +|08/01/2022 08:11:06| ALLEZ +|08/01/2022 08:11:07| |Andou is so fucking greasy| +|08/01/2022 08:11:07| |hoy gay frog sex| +|08/01/2022 08:11:09| |YOU MISSED EVERY SHOT| +|08/01/2022 08:11:09| |VIVE LE BC| +|08/01/2022 08:11:10| |are there any french anons still here? how is there french pronunciation?| +|08/01/2022 08:11:10| |VIVA LA BC| +|08/01/2022 08:11:12| |>VIVA LA PUSSY| +|08/01/2022 08:11:13| |VIVE LA BC| +|08/01/2022 08:11:14| |restore the monarchy | +|08/01/2022 08:11:14| |YOU DIDN'T HIT A SINGLE THING| +|08/01/2022 08:11:15| |ALLEZ CAMARADES| +|08/01/2022 08:11:23| |THEY ARE DRIVING AT A CONSTANT SPEED IN A STRAIGHT LINE| +|08/01/2022 08:11:23| |>eating dirty cake| +|08/01/2022 08:11:24| sasuga +|08/01/2022 08:11:32| |smoked cake, french delicacy| +|08/01/2022 08:11:33| |fat fuck only thinks about food holy shit| +|08/01/2022 08:11:33| |its fine the cake is cabron coated| +|08/01/2022 08:11:35| |awesome teamwork| +|08/01/2022 08:11:36| |PRESS B TO RESTORE THE BOURBON DYNASTY| +|08/01/2022 08:11:36| |THEY ARE DRIVING AWAY FROM YOU AT A CONSTANT SPEED IN A STRAIGHT LINE| +|08/01/2022 08:11:37| |BC will lose because Marie's fat ass destroys their tank| +|08/01/2022 08:11:37| |Baguettes ain't tracer rounds| +|08/01/2022 08:11:37| |Cake is Carbon Covered| +|08/01/2022 08:11:37| |>can't hit a single tank despite successful ambush| +|08/01/2022 08:11:39| |grass plain| +|08/01/2022 08:11:43| |BC= baked clams| +|08/01/2022 08:11:44| UHO +|08/01/2022 08:11:44| |>cabron coated| +|08/01/2022 08:11:55| UHO +|08/01/2022 08:11:55| |aye aye| +|08/01/2022 08:11:56| |BC = BIG COCK| +|08/01/2022 08:11:56| |Rum haters will be annihilated| +|08/01/2022 08:11:57| |EI EI SAH| +|08/01/2022 08:11:58| |hate the french, unironically the republic owes my family land| +|08/01/2022 08:11:59| |AYE AYE SAH| +|08/01/2022 08:12:00| |AI AI SAA| +|08/01/2022 08:12:00| |aye ayee| +|08/01/2022 08:12:02| |hedgerow hell| +|08/01/2022 08:12:02| |Cabron coating is pretty amazing| +|08/01/2022 08:12:04| |AI AI SAH| +|08/01/2022 08:12:04| |AYE AYE SAH| +|08/01/2022 08:12:05| >boacge +|08/01/2022 08:12:06| |has shark team ever gotten a kill?| +|08/01/2022 08:12:30| |Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext | +|08/01/2022 08:12:32| |>merely pretending to be acting| +|08/01/2022 08:12:35| |AU PAS CAMARADES| +|08/01/2022 08:12:45| FLOOF +|08/01/2022 08:12:48| |I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES| +|08/01/2022 08:12:51| |imagine trusting yukari's espionage after that| +|08/01/2022 08:12:56| |>changing arena to confined space vs ooaria| +|08/01/2022 08:13:00| Yukari... +|08/01/2022 08:13:00| |She's sounds so old compared to the TV series :(| +|08/01/2022 08:13:02| |Ain't freedom if they still got infighting| +|08/01/2022 08:13:03| |I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH | +|08/01/2022 08:13:05| |imagine running your hands through her floof| +|08/01/2022 08:13:08| |Favorite gup and sex position?| +|08/01/2022 08:13:16| |SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MO| +|08/01/2022 08:13:17| |anzu, mating press| +|08/01/2022 08:13:19| |nonna, paizuri| +|08/01/2022 08:13:19| |yukari lotus| +|08/01/2022 08:13:20| |light bulb lit| +|08/01/2022 08:13:21| |I want to ruffle the floof| +|08/01/2022 08:13:21| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 08:13:23| |anzu, doggy| +|08/01/2022 08:13:23| |Just drive thru the Ardennes. Works every time against the Fr*rch.| +|08/01/2022 08:13:24| |MIHO, RIMJOB| +|08/01/2022 08:13:26| |SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO | +|08/01/2022 08:13:28| |TIME FOR WAR CRIMES| +|08/01/2022 08:13:29| |Queen of the Night? Hana been to shady places| +|08/01/2022 08:13:31| |French dont know their fucking tanks| +|08/01/2022 08:13:32| |maho, missionary| +|08/01/2022 08:13:32| |who sounds old?| +|08/01/2022 08:13:38| |Katyusha naizuri| +|08/01/2022 08:13:39| Mako +|08/01/2022 08:13:40| |I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES| +|08/01/2022 08:13:41| |Katyusha, Cunny Buffet| +|08/01/2022 08:13:41| |kino background art| +|08/01/2022 08:13:43| |It's the same turret| +|08/01/2022 08:13:50| |bocage bros... the Germans will eat us alive| +|08/01/2022 08:13:51| |Chubby Marie| +|08/01/2022 08:13:51| |hana, pronebone| +|08/01/2022 08:13:52| |GORILLA WARFARE| +|08/01/2022 08:13:52| >hedgerows +|08/01/2022 08:13:54| |WHY DID THEY TURN LARGE PARTS OF JAPAN INTO RURAL EUROPE?| +|08/01/2022 08:13:54| |>cunny buffet Kek| +|08/01/2022 08:13:55| |>three cakes| +|08/01/2022 08:13:59| |cum on her cake| +|08/01/2022 08:13:59| |french resistance, hahahahahaha| +|08/01/2022 08:14:00| |>the french resistance| +|08/01/2022 08:14:00| |HAVE YOU HEARD THIS SAYING| +|08/01/2022 08:14:00| FAT +|08/01/2022 08:14:00| |>ywn see gup in theatres| +|08/01/2022 08:14:00| |GORILLA WARFARE| +|08/01/2022 08:14:01| |Chubby belly, chubby thighs| +|08/01/2022 08:14:02| |Reaching 200kg here marie| +|08/01/2022 08:14:02| |BAKARONI WARFARE| +|08/01/2022 08:14:06| |How much does her fat ass weigh?| +|08/01/2022 08:14:06| |how many more cakes does this bitch got| +|08/01/2022 08:14:08| FAT +|08/01/2022 08:14:16| |ANGLED ARMOR| +|08/01/2022 08:14:18| |>shark retards| +|08/01/2022 08:14:28| |Everyone missed| +|08/01/2022 08:14:31| |>third cake in as many scenes| +|08/01/2022 08:14:31| |cant shoot for shit| +|08/01/2022 08:14:32| |45 degree + carbon coating| +|08/01/2022 08:14:33| |0 HITS| +|08/01/2022 08:14:36| How +|08/01/2022 08:14:36| |lovely Tiger placement| +|08/01/2022 08:14:39| |not a single tank has been killed in this| +|08/01/2022 08:14:42| |still can't shoot point blank range| +|08/01/2022 08:14:46| |the firing animations in Das Finale look great| +|08/01/2022 08:14:47| [scared] +|08/01/2022 08:14:47| |what happens if both teams run out of ammo?| +|08/01/2022 08:14:49| |its like 300 m max| +|08/01/2022 08:14:50| |Fuck your wall| +|08/01/2022 08:14:52| |wasting ammo on couple rock and bushes| +|08/01/2022 08:14:54| |It's a distraction you fucking retards| +|08/01/2022 08:14:58| |Frenchbros we fucking suck| +|08/01/2022 08:15:00| |Everyone missed a stationary target while they were shooting while stationary.| +|08/01/2022 08:15:04| |Our IAV is online| +|08/01/2022 08:15:05| |they punch the tanks until the flag pops| +|08/01/2022 08:15:05| |cunny scouts| +|08/01/2022 08:15:08| AZUSA +|08/01/2022 08:15:09| |Dont mind the tank shells whizzing by Azusa| +|08/01/2022 08:15:14| |i love azusa our next ooarai commander| +|08/01/2022 08:15:16| |saving private ryan mirror| +|08/01/2022 08:15:16| |anons... im really feeling the alcoholnow| +|08/01/2022 08:15:17| |carbon-coated cunny| +|08/01/2022 08:15:17| |A big target. I think they were shooting Leopon tank| +|08/01/2022 08:15:17| AZUCUTE +|08/01/2022 08:15:22| |ramming speed| +|08/01/2022 08:15:26| |carbon coated uniforms and skin cream| +|08/01/2022 08:15:26| |love her wing mirror on a stick| +|08/01/2022 08:15:33| |AN ETCH A SKETCH| +|08/01/2022 08:15:35| |I'd love to ramming speed Anzu| +|08/01/2022 08:15:35| |azusa, rape rp| +|08/01/2022 08:15:39| |ETCH-A-SKETCH LETS GOOOO| +|08/01/2022 08:15:40| |>kiddy drawing tablet thing| +|08/01/2022 08:15:41| |Tactical Etch-O-Sketch| +|08/01/2022 08:15:42| |Bait time| +|08/01/2022 08:15:55| |sodomy with sodoko| +|08/01/2022 08:15:55| |>alice has tablet >miho has an etch-n-sketc| +|08/01/2022 08:16:05| |>Waddle tonk| +|08/01/2022 08:16:05| |SLOW DORIFTO| +|08/01/2022 08:16:05| |alice, full nelson| +|08/01/2022 08:16:06| WIGGLING +|08/01/2022 08:16:07| |slow drifting| +|08/01/2022 08:16:08| WIGGLE +|08/01/2022 08:16:08| |CUTE TIGER SHUFFLING| +|08/01/2022 08:16:13| |BON AMI| +|08/01/2022 08:16:14| WRIGGLE +|08/01/2022 08:16:17| |dancing tiger hidden mallard| +|08/01/2022 08:16:18| |where are we, I went to sleep when the chovy showed up the first time| +|08/01/2022 08:16:21| |RICOCHET RICOCHET| +|08/01/2022 08:16:22| |we always talk about Anzio but Ooarai are poorfags as well| +|08/01/2022 08:16:22| |smoke would be handy...| +|08/01/2022 08:16:24| |Wiggle wiggle wiggle| +|08/01/2022 08:16:25| BONK +|08/01/2022 08:16:27| DF2 +|08/01/2022 08:16:27| |DON'T USE YOUR PET NAMES DURING THE MATCH| +|08/01/2022 08:16:27| FLUFF +|08/01/2022 08:16:29| |cute bow| +|08/01/2022 08:16:32| |why did these fr*nch not surrender yet?| +|08/01/2022 08:16:35| |cute floof| +|08/01/2022 08:16:44| |>they fell for it| +|08/01/2022 08:16:44| |SPY CREEPIN AROUD| +|08/01/2022 08:16:45| |>incite revolution war| +|08/01/2022 08:16:48| |CIA FLASE FLAGS| +|08/01/2022 08:16:53| |OSHIDA BUTT| +|08/01/2022 08:16:55| |FROGE BUTT| +|08/01/2022 08:16:55| |SPY CHECK BITCH| +|08/01/2022 08:16:58| |who was in the wrong here?| +|08/01/2022 08:16:59| |Bon ami can't hit regardless. What you think Bon ami can do.| +|08/01/2022 08:17:00| |>they fell for it? >dump it| +|08/01/2022 08:17:00| |CIA FALSE FLAG OPERATION| +|08/01/2022 08:17:05| |glowniggers did this| +|08/01/2022 08:17:06| |DUMB FRENCH| +|08/01/2022 08:17:07| |Dumb frogs| +|08/01/2022 08:17:08| |RACE WAR'S BACK ON THE MENU| +|08/01/2022 08:17:08| TROLLED +|08/01/2022 08:17:09| |BETRAYED BY OUR OWN RACE| +|08/01/2022 08:17:10| |dumb frogs| +|08/01/2022 08:17:12| |Ruse: 100| +|08/01/2022 08:17:12| YAPPARI +|08/01/2022 08:17:13| |own goal| +|08/01/2022 08:17:14| |(((they))) shot you| +|08/01/2022 08:17:14| GLOWDOKO +|08/01/2022 08:17:19| |we do a little trolling| +|08/01/2022 08:17:21| |lets gooo race war| +|08/01/2022 08:17:21| GLOWDOKO +|08/01/2022 08:17:22| |(((HANDS RUBBING)))| +|08/01/2022 08:17:24| |Freedom's back on the menu boys| +|08/01/2022 08:17:24| |CLASS WAR NOW KILL THE RICH| +|08/01/2022 08:17:27| SUBVERTED +|08/01/2022 08:17:28| |The frog fears the glowie | +|08/01/2022 08:17:28| |>frenchies are better at taking eachother out than Ooari| +|08/01/2022 08:17:30| |CURRENTLY KILLED MORE OF THEIR OWN THEN OOARAI| +|08/01/2022 08:17:30| |French rioting again| +|08/01/2022 08:17:31| |TROLLING: COMMENCED| +|08/01/2022 08:17:33| 1776 +|08/01/2022 08:17:34| |CLASS WAR NOW| +|08/01/2022 08:17:34| REVOLUTION +|08/01/2022 08:17:37| |BLUE ENEMIES| +|08/01/2022 08:17:37| |oy vey kappa yo're my greatest ally!| +|08/01/2022 08:17:38| |Fr*nch arent human| +|08/01/2022 08:17:39| |Innocent Somua killed in cold blood by Tyranic Nobles| +|08/01/2022 08:17:40| |ANDOU WILL CONTINUE THE REVOLUTION| +|08/01/2022 08:17:41| CLANG +|08/01/2022 08:17:42| |frenchies now have precision accuracy| +|08/01/2022 08:17:43| |DOWN WITH THE NOBILITY| +|08/01/2022 08:17:47| |TK > anemy| +|08/01/2022 08:17:47| |GIRLS UND RACEWAR| +|08/01/2022 08:17:49| |They could have just driven through the hedges| +|08/01/2022 08:17:50| OLALALALALALALALALA +|08/01/2022 08:17:50| |CLASS WAR CLASS WAR| +|08/01/2022 08:17:50| |CLASS WAR NOT FUCK THE BORJ| +|08/01/2022 08:17:52| |Meanwhile Marie does nothing| +|08/01/2022 08:17:56| |1789 CLASS WAR NOW!!| +|08/01/2022 08:18:00| |GIRLS AND FROG wAR| +|08/01/2022 08:18:01| |EAT THE RICH| +|08/01/2022 08:18:01| |Marie is eating| +|08/01/2022 08:18:01| |too busy eating| +|08/01/2022 08:18:02| |Frogs BTFO| +|08/01/2022 08:18:02| |GAS THE KAPPA CLASS WAR NOWWWWWWWWWWWWWWWWWWWWWWWW| +|08/01/2022 08:18:04| |Sun Tzu said: The highest acme of skill is to make your enemy shoot himself.| +|08/01/2022 08:18:08| |frenchbros why this happen| +|08/01/2022 08:18:09| |BC Freedom burns, and Marie just eats cake| +|08/01/2022 08:18:11| |PEASANTS NEED TO LEARN THEIR PLACE| +|08/01/2022 08:18:12| |So what does management think about this| +|08/01/2022 08:18:13| |SUN TZU SAID THAT| +|08/01/2022 08:18:17| |the eternal (((kappa)))| +|08/01/2022 08:18:19| OUI +|08/01/2022 08:18:20| oui! +|08/01/2022 08:18:22| |Sun Tzu said Baguettes aint good shots either| +|08/01/2022 08:18:26| |sun tzu said: all warfare is based| +|08/01/2022 08:18:27| |SUN TZU SAID THAT ALL WARFARE IS BASED| +|08/01/2022 08:18:28| kino +|08/01/2022 08:18:28| OUI +|08/01/2022 08:18:29| |JE SUIS MONTE| +|08/01/2022 08:18:31| |welcome to republics| +|08/01/2022 08:18:33| |SUN TZU SAID THAT| +|08/01/2022 08:18:39| w +|08/01/2022 08:18:40| |oui bros...| +|08/01/2022 08:18:40| |Jesus christ marie is fucking useless| +|08/01/2022 08:18:41| |So who's in the wrong here?| +|08/01/2022 08:18:45| |Sun Tzu said : PANZE VOR| +|08/01/2022 08:18:45| |FAT FUCK| +|08/01/2022 08:18:49| |AND I THINK HE KNOWS A LIOTTLE MORE ABOUT FIGHTING THAN YOU DO PAL| +|08/01/2022 08:18:49| >bongs +|08/01/2022 08:18:50| |and suntzu invented tanks so he know better than you do pal| +|08/01/2022 08:18:51| |unironically oshida| +|08/01/2022 08:18:52| |The French deserved to lose this match| +|08/01/2022 08:18:53| |and from that day forward anytime a bunch of animals are together in one place it's called a TZU| +|08/01/2022 08:18:54| |mary thighs| +|08/01/2022 08:18:54| |meawhile back at versailles| +|08/01/2022 08:18:56| |>tfw no teaparty cake-glutton midget gf| +|08/01/2022 08:18:59| |THE INTERNATIONAL (((KAPPA)))| +|08/01/2022 08:18:59| RETARDS +|08/01/2022 08:19:00| |CAN'T EVEN KILL AN EARLY WAR FRENCH TANK WITH A LATE WAR FRENCH TANK| +|08/01/2022 08:19:01| |quick reminder, what does panzer vor mean again anons?????????| +|08/01/2022 08:19:05| |carbon caoting| +|08/01/2022 08:19:07| |flexible uoooooooh sooon| +|08/01/2022 08:19:09| |Dessert cunny..............| +|08/01/2022 08:19:12| |it means panzer vor| +|08/01/2022 08:19:12| w +|08/01/2022 08:19:15| |marie boutta abuse that carbon| +|08/01/2022 08:19:16| |I can see how the frenchies were irrelevant till now| +|08/01/2022 08:19:16| |Big tanks got worse aim than the small ones| +|08/01/2022 08:19:16| |That fat face| +|08/01/2022 08:19:17| wwwwwww +|08/01/2022 08:19:17| |I wish she would stomp on my cock like that| +|08/01/2022 08:19:17| |CUTE FATTY| +|08/01/2022 08:19:19| oops +|08/01/2022 08:19:19| |THE TEAM IS FALLING APART AND MARIE STILL EATS CAKE| +|08/01/2022 08:19:21| |SACRE BLEU| +|08/01/2022 08:19:23| |CHOKE ON KEEKI| +|08/01/2022 08:19:25| |The french some how get good at aiming when shooting each other| +|08/01/2022 08:19:30| |LE FROG| +|08/01/2022 08:19:31| |I want to be Maries cushion| +|08/01/2022 08:19:32| |THATS LIKE HER 4th CAKE ON THIS MATCH HOLY SHIT| +|08/01/2022 08:19:32| |french-press was a nice touch there| +|08/01/2022 08:19:33| |GOD Marie is so fucking sexy| +|08/01/2022 08:19:33| |Athletic french cosplayer| +|08/01/2022 08:19:34| WIGGLE +|08/01/2022 08:19:37| WIGGLE +|08/01/2022 08:19:38| |haha french| +|08/01/2022 08:19:38| WIGGLE +|08/01/2022 08:19:39| |CUTE WIGGLE| +|08/01/2022 08:19:39| |lesbian sex| +|08/01/2022 08:19:40| |Marie doing her best french high command impression| +|08/01/2022 08:19:41| cute +|08/01/2022 08:19:41| SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX +|08/01/2022 08:19:41| |WIGGLE WIGGLE| +|08/01/2022 08:19:42| |MARIE WIGGLE| +|08/01/2022 08:19:43| wiggle +|08/01/2022 08:19:43| |UOOOOOOOOOOOOOOOOH ATHLETIC FROG LOLI| +|08/01/2022 08:19:43| |CUTE WIGGLE| +|08/01/2022 08:19:43| |jiggle wiggle| +|08/01/2022 08:19:45| |So limber...| +|08/01/2022 08:19:46| |nice flip| +|08/01/2022 08:19:46| WIGGLE +|08/01/2022 08:19:49| SEEEEEEEEEEX +|08/01/2022 08:19:50| |this lead to doujin| +|08/01/2022 08:19:50| damn +|08/01/2022 08:19:50| |frog legs| +|08/01/2022 08:19:50| |JUST FUCK EACH OTHER ALREADY| +|08/01/2022 08:19:51| UOOOOOOOOOOOOOOOOH +|08/01/2022 08:19:51| |Marie playing limbo| +|08/01/2022 08:19:53| |GOAT HERDER| +|08/01/2022 08:19:54| uoooooh +|08/01/2022 08:19:55| |>goat herder| +|08/01/2022 08:19:55| |CORSICAN GOAT HERDER| +|08/01/2022 08:19:56| |Marie is for lewd acts| +|08/01/2022 08:19:56| |>these two again| +|08/01/2022 08:20:00| |high level insults| +|08/01/2022 08:20:02| |>GOAT HERDER| +|08/01/2022 08:20:03| |Limbo limbo limbo| +|08/01/2022 08:20:04| |SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! | +|08/01/2022 08:20:04| |SO FLEXIBLE| +|08/01/2022 08:20:04| |damn she's nimble for being 150kg| +|08/01/2022 08:20:05| |CORSICA IS RIGHTFUL ITALIAN CLAY| +|08/01/2022 08:20:11| |IF ONLY THEY AIMED AT THE RENAULT| +|08/01/2022 08:20:11| SSSEEEEEEEEEEEGGGGGGGGGGGGSSSSSSSS +|08/01/2022 08:20:13| |150 kg| +|08/01/2022 08:20:15| |DOWN WITH THE BOURBON RESTORATION| +|08/01/2022 08:20:16| >RETARDED +|08/01/2022 08:20:16| |SEX LEGS| +|08/01/2022 08:20:17| |best girl| +|08/01/2022 08:20:17| RETARD +|08/01/2022 08:20:18| |I'm surprised that barrel didn't bend under her weight| +|08/01/2022 08:20:18| |ANY HIT IN ANY LOCATION WOULD HAVE BEEN A KNOCK OUT| +|08/01/2022 08:20:19| |I want to see these frogs sex each other| +|08/01/2022 08:20:23| |oshida retarded| +|08/01/2022 08:20:27| |senshado makes girls dumb| +|08/01/2022 08:20:27| |THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS | +|08/01/2022 08:20:27| OSHIDAAAAAAAAA +|08/01/2022 08:20:29| >RETARDED +|08/01/2022 08:20:36| |ruh roh| +|08/01/2022 08:20:38| |turns out marie's wight is muscle| +|08/01/2022 08:20:38| |Andou is not so retarded| +|08/01/2022 08:20:38| nyoom +|08/01/2022 08:20:40| |AU PAS!!| +|08/01/2022 08:20:42| |fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck | +|08/01/2022 08:20:42| |Friendly fire: ON| +|08/01/2022 08:20:43| |LEFT TANK AIM LEFT| +|08/01/2022 08:20:44| |frenchies are cutest when they're almost retarded| +|08/01/2022 08:20:45| |Senshadou makes girls breedable| +|08/01/2022 08:20:45| |fuck, I'm starting to get tired BUT I WON'T FALL ASLEEP, I CAN THIS| +|08/01/2022 08:20:47| |rrip ducks| +|08/01/2022 08:20:47| F +|08/01/2022 08:20:48| |she's the Kingpin but smol| +|08/01/2022 08:20:50| |TIME TO KISS| +|08/01/2022 08:20:50| |rip sodoko| +|08/01/2022 08:20:54| |Marie ain't got enough chest though. Only thighs. | +|08/01/2022 08:20:54| |o7 ;_;| +|08/01/2022 08:20:55| |FRENCH YURI| +|08/01/2022 08:20:56| |subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subt| +|08/01/2022 08:20:56| Andou-kun +|08/01/2022 08:20:57| |Alas poor Sodoko| +|08/01/2022 08:20:58| |make-up sex| +|08/01/2022 08:20:59| |GAY GAY GAY GAY GAY GAY| +|08/01/2022 08:20:59| |And then they fucked| +|08/01/2022 08:20:59| |JUST FUCK ALREADY| +|08/01/2022 08:20:59| |gay frogs| +|08/01/2022 08:20:59| |SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX | +|08/01/2022 08:21:01| |kiss kiss kiss kiss kiss| +|08/01/2022 08:21:01| GAAAAAAAAAAAAAAAAY +|08/01/2022 08:21:02| |sodoko status: sodomised| +|08/01/2022 08:21:03| |NOW KISS AND MAKE UP| +|08/01/2022 08:21:03| |NOW KISS| +|08/01/2022 08:21:04| |make up sex soon| +|08/01/2022 08:21:05| |NOW KISS| +|08/01/2022 08:21:05| |can't believe sodoko died| +|08/01/2022 08:21:06| |JUST FUCK ALREADY| +|08/01/2022 08:21:08| |enough you your (((kappa)) trickery| +|08/01/2022 08:21:14| |GAY FROGS| +|08/01/2022 08:21:14| |this isn't like the french revolution...| +|08/01/2022 08:21:15| |/u/fags >>>/out/| +|08/01/2022 08:21:19| |WHERE ARE MY MARIE THIGHJOB DOUJINS| +|08/01/2022 08:21:19| |NOW DRAW THEM KISSING| +|08/01/2022 08:21:20| |ONIONBROS LETS GO| +|08/01/2022 08:21:27| |/u/ fags >>>>>/in/| +|08/01/2022 08:21:29| |kino incoming| +|08/01/2022 08:21:30| |WE CAN STILL WIN THIS BCBROS| +|08/01/2022 08:21:32| g/u/p +|08/01/2022 08:21:34| |NOW DRAW HER BEING A GOOD PERSON| +|08/01/2022 08:21:41| |andou is heterosexual and my wife| +|08/01/2022 08:21:42| |HERES HOW BC CAN STILL WIN: | +|08/01/2022 08:21:42| |WHY WASTE SHOTS ON THE HEDGES | +|08/01/2022 08:21:43| |French apology now = Gonna use a baguette on you later| +|08/01/2022 08:21:45| |I put $40000 on BC...| +|08/01/2022 08:21:46| |/u/ ENTER| +|08/01/2022 08:21:54| |3d kino| +|08/01/2022 08:21:55| |BC literally cannot lose| +|08/01/2022 08:21:55| |Battle City.NES| +|08/01/2022 08:21:56| |FAT ASS| +|08/01/2022 08:21:58| |>heterosexual >this show| +|08/01/2022 08:22:00| |NOW DRAW HER BEIGN A GOOD WIFE AND MOTHER| +|08/01/2022 08:22:03| |Your wife is pretty cute can I have her?| +|08/01/2022 08:22:04| |Ooaraifags can't stop winning| +|08/01/2022 08:22:13| |i will commit seppuku if bc lose| +|08/01/2022 08:22:14| |French chest| +|08/01/2022 08:22:18| |BC lose when their shitty gunner cant hit a shit on bridge| +|08/01/2022 08:22:22| |RABBIT TEAM NO| +|08/01/2022 08:22:23| |hets are losers like saori and arisu| +|08/01/2022 08:22:25| |Aint enough rump on Marie backside| +|08/01/2022 08:22:27| |LETS GO BC| +|08/01/2022 08:22:28| |>m3 quietly jobs| +|08/01/2022 08:22:32| SORE +|08/01/2022 08:22:38| 3-some +|08/01/2022 08:22:40| |exact same frame as when they were on the maus| +|08/01/2022 08:22:44| |KINO SCENE| +|08/01/2022 08:22:45| KINO +|08/01/2022 08:22:45| |I hate the Type-89s firing sound in DF2| +|08/01/2022 08:22:46| |IT'S KINO TIME| +|08/01/2022 08:22:46| |onion time| +|08/01/2022 08:22:47| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:22:48| |dual penetration| +|08/01/2022 08:22:49| kino +|08/01/2022 08:22:50| |AU PAS AU PAS AU PAS| +|08/01/2022 08:22:50| |Volleyball club jobs| +|08/01/2022 08:22:50| Kino +|08/01/2022 08:22:50| |looks like we're going on a trip to corsica BC bros| +|08/01/2022 08:22:51| heem +|08/01/2022 08:22:51| |I LOVE THE ONION| +|08/01/2022 08:22:52| KINO +|08/01/2022 08:22:53| |AU PAS CAMARADES| +|08/01/2022 08:22:53| |KINO TIME| +|08/01/2022 08:22:54| |j'aime l'oingon| +|08/01/2022 08:22:55| |I RABBU ONION| +|08/01/2022 08:22:56| speen +|08/01/2022 08:22:56| |AU PAS CAMARADES| +|08/01/2022 08:22:57| |ONION BROS STAND UP| +|08/01/2022 08:22:57| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:22:58| |not the ducks...| +|08/01/2022 08:22:59| |J'AIME L'OIGNON| +|08/01/2022 08:22:59| |AU PAS| +|08/01/2022 08:23:00| >ONIONS +|08/01/2022 08:23:01| |cope song.mp3| +|08/01/2022 08:23:03| |NOOOO NO MORE ONIONS PLEASE| +|08/01/2022 08:23:03| >ONION +|08/01/2022 08:23:04| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:04| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:05| |I LOVE THE ONION| +|08/01/2022 08:23:05| |LE SINGING| +|08/01/2022 08:23:06| |I HATE THE ONION| +|08/01/2022 08:23:07| |EAT THE ONIONS| +|08/01/2022 08:23:07| |last aus pas| +|08/01/2022 08:23:09| |ONION TIME AGAIN| +|08/01/2022 08:23:09| |I LOVE THE ONION| +|08/01/2022 08:23:10| |LETS GO ONION BROS WE CAN WIN THIS| +|08/01/2022 08:23:10| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:10| | AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD | +|08/01/2022 08:23:12| |Frog bros maybe we can do it| +|08/01/2022 08:23:12| |Frenchies, I-I kneel| +|08/01/2022 08:23:13| |ducks jobbed fucking bullshit| +|08/01/2022 08:23:13| |PLEASE MARIE-SAMA NO MORE ONIONS AIIEEEEE| +|08/01/2022 08:23:13| |J'aime l'oignon!!!| +|08/01/2022 08:23:14| COPE +|08/01/2022 08:23:15| |I WILL EAT THE ONION| +|08/01/2022 08:23:16| |WE GOT THIS ONIONBROS| +|08/01/2022 08:23:16| |they got a lot better at pronouncing french| +|08/01/2022 08:23:16| |ONE OF THE BEST SCENES| +|08/01/2022 08:23:16| Embarassing +|08/01/2022 08:23:16| |AU PAS AU PAS AU PAS | +|08/01/2022 08:23:17| |J'aime l'oignon| +|08/01/2022 08:23:18| |Is singing really smart when you're getting assraped| +|08/01/2022 08:23:20| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:23:20| |AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE | +|08/01/2022 08:23:20| |WE HAVE YOU SURROUNDED COME OUT AND EAT YOUR ONIONS | +|08/01/2022 08:23:21| |AUS PAS AUS PAS AUS PAS| +|08/01/2022 08:23:22| |AU PAS CAMARADES| +|08/01/2022 08:23:22| |ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +|08/01/2022 08:23:22| |Fried onions are the best| +|08/01/2022 08:23:23| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:25| |I forgot about this kino| +|08/01/2022 08:23:26| |chant le incantantion honhonhon| +|08/01/2022 08:23:27| |that whirring sound scared the shit out of me| +|08/01/2022 08:23:27| ONIONS +|08/01/2022 08:23:28| |ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +|08/01/2022 08:23:28| |yeah sing about cumraids after wiping half your own forces| +|08/01/2022 08:23:30| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:33| |AU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADES| +|08/01/2022 08:23:35| |ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +|08/01/2022 08:23:36| |they are french!| +|08/01/2022 08:23:36| |CAMARADES doko?| +|08/01/2022 08:23:38| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:39| |I LOVE THE ONION| +|08/01/2022 08:23:39| LOIGNON +|08/01/2022 08:23:42| |I LOVE THE ONION| +|08/01/2022 08:23:42| |O N I O N S| +|08/01/2022 08:23:43| |Time to conquer half of europe| +|08/01/2022 08:23:43| |I WANT TO DIE PROTECTING MY COUNTRY AND DIE WHILE SINGING| +|08/01/2022 08:23:45| |STUG LIFE| +|08/01/2022 08:23:45| |ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +|08/01/2022 08:23:45| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:47| |AU PAS| +|08/01/2022 08:23:47| >Onions +|08/01/2022 08:23:48| |>ONIONS SAUCE| +|08/01/2022 08:23:49| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:23:50| |Au pas camarades| +|08/01/2022 08:23:52| |AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +|08/01/2022 08:23:52| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:52| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:53| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:54| |AU PAS CAMARADES AU PAS AU PAS AU PAN| +|08/01/2022 08:23:55| |AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE | +|08/01/2022 08:23:55| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:56| |singing onion ain't gonna make ya win | +|08/01/2022 08:23:57| |oppai camarades oppai camarades oppai camarades oppai camarades oppaioppaioppaioppai| +|08/01/2022 08:23:58| |Austrians don't deserve onions| +|08/01/2022 08:23:58| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:23:58| |AU PAS AU APAS| +|08/01/2022 08:23:58| F +|08/01/2022 08:23:58| |AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +|08/01/2022 08:23:59| |sticking an onion up your butt| +|08/01/2022 08:23:59| KINO +|08/01/2022 08:23:59| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:24:00| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES | +|08/01/2022 08:24:01| oppai +|08/01/2022 08:24:01| |AU PAS CAMARADES AU PAS AU PAS AU PAN| +|08/01/2022 08:24:01| andoubros... +|08/01/2022 08:24:01| |AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +|08/01/2022 08:24:01| |AU PAS CAMARADES| +|08/01/2022 08:24:02| |And then there was one| +|08/01/2022 08:24:04| oppai +|08/01/2022 08:24:04| |AU PAS CAMARADES AU PAS AU PAS AU PAN| +|08/01/2022 08:24:04| KINO +|08/01/2022 08:24:05| |AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +|08/01/2022 08:24:06| |AU PAS AU PAS AU PAS | +|08/01/2022 08:24:06| |AUS PAS AUS PAS AUS PAS| +|08/01/2022 08:24:07| |Au PAS!!!| +|08/01/2022 08:24:08| |she bouta get fucked| +|08/01/2022 08:24:09| |AU PAS CAMARADE| +|08/01/2022 08:24:09| |AU PAS AU PAS AU PAS| +|08/01/2022 08:24:10| |AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +|08/01/2022 08:24:11| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:24:12| ;_; +|08/01/2022 08:24:12| |THE KINO SOLE SINGER| +|08/01/2022 08:24:12| |LETS GO ONION CHADS| +|08/01/2022 08:24:12| |AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +|08/01/2022 08:24:13| |AU PAS CAMARADES AU PAS AU PAS AU PAS| +|08/01/2022 08:24:13| |AU PAS CAMARADE AU PAS CAMARADE AU PAS AU PAS AU PAS AU PAS CAMARADE AU PAS CAMARADE AU PAS AU PAS AU PAS | +|08/01/2022 08:24:14| OPPA +|08/01/2022 08:24:14| |Onion song too catchy, they synched Miho mouth to the lyrics| +|08/01/2022 08:24:15| |AU PAS AU PAS AU PAS| +|08/01/2022 08:24:17| |AU PAS CAMARADES AU PAS AU PAS AU PAS| +|08/01/2022 08:24:18| |SACRE BLEU!| +|08/01/2022 08:24:18| |PEAK GUP KINO| +|08/01/2022 08:24:19| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:24:20| |AU PAS AU PAS AU PAS| +|08/01/2022 08:24:20| bonk +|08/01/2022 08:24:20| |It's... over| +|08/01/2022 08:24:23| |frog asmr| +|08/01/2022 08:24:24| BONK +|08/01/2022 08:24:26| ;_;7 +|08/01/2022 08:24:26| |carbon coating| +|08/01/2022 08:24:26| |I don't think the renault can kill that from behind| +|08/01/2022 08:24:26| |of fuggg| +|08/01/2022 08:24:27| |>2jz sounds| +|08/01/2022 08:24:27| |;-;7 rip fatty| +|08/01/2022 08:24:27| |not liek this...| +|08/01/2022 08:24:27| |owari da| +|08/01/2022 08:24:28| DEAD +|08/01/2022 08:24:29| |Frog bros....| +|08/01/2022 08:24:29| |oh fuck| +|08/01/2022 08:24:29| 1871 +|08/01/2022 08:24:30| F +|08/01/2022 08:24:30| ;_; +|08/01/2022 08:24:30| BTFO +|08/01/2022 08:24:31| MERDE +|08/01/2022 08:24:32| o7 +|08/01/2022 08:24:32| f +|08/01/2022 08:24:33| |dumb baka| +|08/01/2022 08:24:33| |poor little french girl| +|08/01/2022 08:24:34| |ONION BROS…..| +|08/01/2022 08:24:34| o7 +|08/01/2022 08:24:35| RIP +|08/01/2022 08:24:35| MERDE +|08/01/2022 08:24:35| |CARBON COATED MARIE| +|08/01/2022 08:24:36| BLOCKED +|08/01/2022 08:24:36| DEAD +|08/01/2022 08:24:36| ;_;7 +|08/01/2022 08:24:37| MERDE +|08/01/2022 08:24:37| DEAD +|08/01/2022 08:24:38| |the french heroic sacrifices here are prettty kino| +|08/01/2022 08:24:39| |last meal| +|08/01/2022 08:24:39| ;_;7 +|08/01/2022 08:24:40| |>carbon cake| +|08/01/2022 08:24:40| O7 +|08/01/2022 08:24:40| |not the fifth cake....| +|08/01/2022 08:24:41| MERE +|08/01/2022 08:24:42| |RIP Marie| +|08/01/2022 08:24:42| ded +|08/01/2022 08:24:43| ;_;7 +|08/01/2022 08:24:43| |FRANCE HAS CAPITULATED| +|08/01/2022 08:24:44| |can't believe marie die| +|08/01/2022 08:24:44| |She could have died| +|08/01/2022 08:24:44| |piratebros... WE WON| +|08/01/2022 08:24:44| |let 'em eat cake| +|08/01/2022 08:24:45| |Welp cake time| +|08/01/2022 08:24:45| |she should have surrendered| +|08/01/2022 08:24:46| |WE WERE SO CLOSE BC-BROS| +|08/01/2022 08:24:46| |time for celebratory frog rape| +|08/01/2022 08:24:46| DUCE +|08/01/2022 08:24:47| |cARBON COATED CAKE| +|08/01/2022 08:24:47| |Not even close!| +|08/01/2022 08:24:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:47| |GAY FROGS CAN'T BEAT PLOT ARMOR| +|08/01/2022 08:24:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:24:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:24:50| |they won again, who would've guessed?| +|08/01/2022 08:24:50| |RETARDED ITALIANS| +|08/01/2022 08:24:51| MERDE +|08/01/2022 08:24:51| DUCE +|08/01/2022 08:24:51| |I just want to have sex with Marie...| +|08/01/2022 08:24:51| |what did they sing for| +|08/01/2022 08:24:52| |anzio be like| +|08/01/2022 08:24:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:53| |These girls are all Japanese*| +|08/01/2022 08:24:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:24:53| DUCE +|08/01/2022 08:24:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:54| |MOMO LOVE| +|08/01/2022 08:24:55| DUCE +|08/01/2022 08:24:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:24:56| |DUCE DUCE DUCE| +|08/01/2022 08:24:57| |Holy shit shark team missed at that range| +|08/01/2022 08:24:57| DUCE +|08/01/2022 08:24:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:24:57| SISISISISISISISI +|08/01/2022 08:24:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:57| DVCE +|08/01/2022 08:24:58| |SLEEPY ITALIANS| +|08/01/2022 08:24:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:25:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:25:03| |Shitalians sleep through the match again| +|08/01/2022 08:25:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:25:06| |OPEN FIELD ORGY| +|08/01/2022 08:25:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:25:09| |Duce tents| +|08/01/2022 08:25:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:25:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:25:11| |HOLD YOUR DUCE| +|08/01/2022 08:25:15| |SHE CRIED AT FRANCE'S WEAKNESS| +|08/01/2022 08:25:16| |Based Duce spam| +|08/01/2022 08:25:19| |Did they coat Marie in carbon before the match| +|08/01/2022 08:25:21| |need more chamicals in the water| +|08/01/2022 08:25:24| |what 1 frame of DVCE does to a mf| +|08/01/2022 08:25:25| |premature duce'ing| +|08/01/2022 08:25:30| |"cooperating" "cooperating" "cooperating" "cooperating" "cooperating" | +|08/01/2022 08:25:31| CUTE +|08/01/2022 08:25:32| |bc will never win championship| +|08/01/2022 08:25:33| |CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SH| +|08/01/2022 08:25:37| |Look at those tiddies| +|08/01/2022 08:25:38| |Asumi's asumis| +|08/01/2022 08:25:40| |Drop a deuce in Duce's tent.| +|08/01/2022 08:25:42| REVOLUTION +|08/01/2022 08:25:44| |CUTE FATTY| +|08/01/2022 08:25:44| |shit frogs| +|08/01/2022 08:25:44| |Setting up for the French redemption in the next series!| +|08/01/2022 08:25:46| |SHE ATE LIKE 5 CAKES DURING THE MATCH| +|08/01/2022 08:25:46| |Marie didn't learn anything| +|08/01/2022 08:25:48| |Duce means poop!| +|08/01/2022 08:25:50| |fat fuck| +|08/01/2022 08:25:50| |>AT THE TIME THIS WAS MADE THE BOGS WERE STILL ALIVE| +|08/01/2022 08:25:51| |BIG HATS| +|08/01/2022 08:25:52| Sex +|08/01/2022 08:25:52| |YELLOW TEXT MARKED FOR DECIMATION| +|08/01/2022 08:25:52| |MARIE IS A FEEDER| +|08/01/2022 08:25:53| |mako seiyuu on crack| +|08/01/2022 08:25:55| |SEX WITH MARIE| +|08/01/2022 08:25:55| |let them eat cake| +|08/01/2022 08:25:56| FAT +|08/01/2022 08:26:01| |tl note, revolution means hatefuck| +|08/01/2022 08:26:05| GAMERS +|08/01/2022 08:26:05| |>Create a loveable underdog >Have Ooarai beat them| +|08/01/2022 08:26:05| |GAYMERS RISE UP| +|08/01/2022 08:26:06| |if she were fat she wouldn't share| +|08/01/2022 08:26:10| >/v/ermin +|08/01/2022 08:26:10| nerds +|08/01/2022 08:26:10| |lmao cleaning her fingers on her clothes| +|08/01/2022 08:26:11| nyaa +|08/01/2022 08:26:12| |Why do the losers feed the winners, is it like Pokemon where if you beat up a kid they give you money?| +|08/01/2022 08:26:12| |GAYMERS LETS GOOOOOOOOOO| +|08/01/2022 08:26:12| ONOOOOOOOOOOOOO +|08/01/2022 08:26:12| |funny tank game haha nyaaa| +|08/01/2022 08:26:13| NYAA +|08/01/2022 08:26:20| |flint so cute| +|08/01/2022 08:26:22| |She wants others to be fat| +|08/01/2022 08:26:24| |BASED FISHERWOMEN| +|08/01/2022 08:26:25| |Front Line was a great game fr| +|08/01/2022 08:26:25| |Fuck pirates| +|08/01/2022 08:26:25| |is it teibou tuesday yet?| +|08/01/2022 08:26:26| burn +|08/01/2022 08:26:28| |>create a loveable underdog| +|08/01/2022 08:26:28| |kino bottle sounds| +|08/01/2022 08:26:29| |BULLY THE RABBITS| +|08/01/2022 08:26:31| |wtf they gonna catch there| +|08/01/2022 08:26:31| CUTE +|08/01/2022 08:26:31| |Do not bully the rabbits| +|08/01/2022 08:26:32| |EAT THE RABBITS| +|08/01/2022 08:26:32| |bunny cunnies...| +|08/01/2022 08:26:34| |based bullying| +|08/01/2022 08:26:34| |Maries fetish is chubby tummies and thicc thighs| +|08/01/2022 08:26:35| |saki smile| +|08/01/2022 08:26:36| |Fishing in a lifeboat| +|08/01/2022 08:26:36| |TEIBOU TUESDAY BOYS| +|08/01/2022 08:26:37| |>have slags beat them| +|08/01/2022 08:26:37| |>ankou fishing| +|08/01/2022 08:26:37| |Dumb rabbits| +|08/01/2022 08:26:39| |based hazing| +|08/01/2022 08:26:40| |TL Note: "Anzu" means "SEX".| +|08/01/2022 08:26:41| ZAZA +|08/01/2022 08:26:44| |THANKS TL| +|08/01/2022 08:26:45| |rabbits deserve it| +|08/01/2022 08:26:46| |BULLY ALL THE CUNNIES| +|08/01/2022 08:26:46| |Anzu eating| +|08/01/2022 08:26:48| Anzu +|08/01/2022 08:26:49| |this will seriously impact the trout population| +|08/01/2022 08:26:50| |THANKS TL| +|08/01/2022 08:26:50| |>PRICE NEGOTIABLE| +|08/01/2022 08:26:50| |thanks tl| +|08/01/2022 08:26:50| |Ty TL| +|08/01/2022 08:26:53| |"Price Negotiable"| +|08/01/2022 08:26:54| |Is this Slow Loop?| +|08/01/2022 08:26:55| |DO YOU LIKE MY CAR| +|08/01/2022 08:26:56| |they bought a fucking car????| +|08/01/2022 08:26:57| samui +|08/01/2022 08:26:57| |What even is that car?| +|08/01/2022 08:26:58| |do the girls come with the car| +|08/01/2022 08:27:00| |Cutlass caught something at least| +|08/01/2022 08:27:01| FLOOF +|08/01/2022 08:27:02| |I KNOW WHAT I GOT NO LOWBALLERS| +|08/01/2022 08:27:04| |My first time watching DF2 since release| +|08/01/2022 08:27:05| |DATE TIME| +|08/01/2022 08:27:09| BOKOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 08:27:09| |FLOOF IS TOO CUTE| +|08/01/2022 08:27:12| |DATE WITH LOLI| +|08/01/2022 08:27:12| BOKO +|08/01/2022 08:27:13| BOKO?! +|08/01/2022 08:27:13| ToT +|08/01/2022 08:27:15| BOKO +|08/01/2022 08:27:15| |BOKO AUTISM| +|08/01/2022 08:27:15| |autism date| +|08/01/2022 08:27:15| DEITO?!?!?!?!?! +|08/01/2022 08:27:17| |mako taberu| +|08/01/2022 08:27:17| |CUTE DATE| +|08/01/2022 08:27:18| DAETO? +|08/01/2022 08:27:19| BOKO +|08/01/2022 08:27:19| GANBAAREEE!@!@! +|08/01/2022 08:27:19| |BOKO BOKO BOKO BOKO| +|08/01/2022 08:27:19| |BOKO BROS| +|08/01/2022 08:27:20| |GANBARE BOKO!| +|08/01/2022 08:27:20| DEITO +|08/01/2022 08:27:20| |BOKO BROS WE WILL WIN THIS TIME FOR SURE| +|08/01/2022 08:27:21| |GANBARE BOKO| +|08/01/2022 08:27:21| |GIVE BOKO YOUR ENERGY BROS| +|08/01/2022 08:27:21| |BOKO HARAM AUTISM| +|08/01/2022 08:27:21| |BOKO ABUNAI| +|08/01/2022 08:27:22| |Dumb Boco.| +|08/01/2022 08:27:22| BOKO +|08/01/2022 08:27:22| |GANBARE BOKO| +|08/01/2022 08:27:23| BOKO +|08/01/2022 08:27:23| |YATTE YARU YATTE YARU YATTE YARUZE| +|08/01/2022 08:27:25| BOKOO +|08/01/2022 08:27:26| |boko world irl when?| +|08/01/2022 08:27:26| BOKOOOOOO +|08/01/2022 08:27:26| |BOKO OIRA DAZEEE| +|08/01/2022 08:27:26| |boko if he real| +|08/01/2022 08:27:27| |FUCK CHINA FUCK CHINA FUCK CHINA| +|08/01/2022 08:27:29| |kek a rabid dog| +|08/01/2022 08:27:30| |boko ;_;| +|08/01/2022 08:27:31| |GANBARE BOCO| +|08/01/2022 08:27:31| PUNCHY +|08/01/2022 08:27:32| |GANBARE BOKO| +|08/01/2022 08:27:33| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 08:27:33| |BOKO GANG BOKO GANG BOKO GANG| +|08/01/2022 08:27:33| |GANBARE BOKO!| +|08/01/2022 08:27:33| |BOKO \o/| +|08/01/2022 08:27:34| |JOBBER BOKO| +|08/01/2022 08:27:34| feet +|08/01/2022 08:27:35| |bokofags are mentally ill| +|08/01/2022 08:27:35| |GANBARE BOKOOOOOOO| +|08/01/2022 08:27:35| GANBARE +|08/01/2022 08:27:37| |FUCK EM UP BOKO!| +|08/01/2022 08:27:38| |GANBARE BOKO| +|08/01/2022 08:27:38| |GANBARE BOKO \o/| +|08/01/2022 08:27:38| |RIP BOKO BOZO| +|08/01/2022 08:27:39| |FUCK EM UP BOKO| +|08/01/2022 08:27:39| |Boko ost | +|08/01/2022 08:27:39| |AUTISIM POWERS ACTIVATE| +|08/01/2022 08:27:41| |AUTISISM: ON| +|08/01/2022 08:27:41| GANBARE!!!! +|08/01/2022 08:27:41| |POV U R BOKO| +|08/01/2022 08:27:42| |BOKO GANBARE| +|08/01/2022 08:27:42| autism +|08/01/2022 08:27:42| |God I wish that were me| +|08/01/2022 08:27:42| GANBARE +|08/01/2022 08:27:43| |>the game where the only winning move is to lose| +|08/01/2022 08:27:43| |how hard is Miho right now?| +|08/01/2022 08:27:43| \o?\ +|08/01/2022 08:27:44| |I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOV| +|08/01/2022 08:27:44| |GANBARE BOKO | +|08/01/2022 08:27:45| |POV: You are an Arisu fan| +|08/01/2022 08:27:45| GANBARE! +|08/01/2022 08:27:45| |autism mode| +|08/01/2022 08:27:46| |Boko is Saunders| +|08/01/2022 08:27:49| |Curb stomped| +|08/01/2022 08:27:50| |I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP | +|08/01/2022 08:27:50| 頑張れボコ +|08/01/2022 08:27:51| GANBARE! +|08/01/2022 08:27:53| YATA!!! +|08/01/2022 08:27:54| |\o/ GANBARE \o/| +|08/01/2022 08:27:55| |RIP BOKO| +|08/01/2022 08:27:56| |Imagine smelling Arisu's hair| +|08/01/2022 08:27:56| |GANBARE BOKO| +|08/01/2022 08:27:56| |I LOVE THE CCP | +|08/01/2022 08:27:56| WWF +|08/01/2022 08:27:57| |BEAT THE SHIT OUT OF HIM BOKO| +|08/01/2022 08:27:57| RyonaGODs.... +|08/01/2022 08:27:58| wwF +|08/01/2022 08:27:59| |LETS GO BOKO!| +|08/01/2022 08:28:00| GANBAREEEEEEEEEEE +|08/01/2022 08:28:01| |HANG IN THERE BOKO| +|08/01/2022 08:28:04| |BOKO LETS GO BOKO| +|08/01/2022 08:28:05| clotherslined +|08/01/2022 08:28:05| |>muh WWF| +|08/01/2022 08:28:06| >WWF +|08/01/2022 08:28:07| panzers...? +|08/01/2022 08:28:08| |So these two are the subs in an abusive dyke relationship right?| +|08/01/2022 08:28:09| |FUCK EM UP BOKO!| +|08/01/2022 08:28:09| >WWF +|08/01/2022 08:28:11| |FUCKING JOBBER| +|08/01/2022 08:28:11| |FUCK UM UP BOKO| +|08/01/2022 08:28:12| WWF +|08/01/2022 08:28:14| >WWF +|08/01/2022 08:28:15| boko... +|08/01/2022 08:28:15| |What does Alice smell like, bros?| +|08/01/2022 08:28:17| |m-muh WWF| +|08/01/2022 08:28:19| |FUCK CHINA FUCK CHINA FUCK CHINA| +|08/01/2022 08:28:19| |CHINA WINS YET AGAIN| +|08/01/2022 08:28:20| |Get curb stomped Boko| +|08/01/2022 08:28:21| GANBAREEEEE!! +|08/01/2022 08:28:23| |I WANT TO NIBBLE ON ARISU'S HAIR| +|08/01/2022 08:28:24| |Smells like Boko| +|08/01/2022 08:28:26| |Did he died| +|08/01/2022 08:28:27| |You'll get him next time boko| +|08/01/2022 08:28:27| |GANBARE BOOOOKOOOOOOO| +|08/01/2022 08:28:27| |KAMINARI INAKUNARE!| +|08/01/2022 08:28:28| |Boko jobs harder than Katyusha wtf| +|08/01/2022 08:28:29| |FUCK OFF LIGHTNING| +|08/01/2022 08:28:31| |KAMINARI INAKURARE| +|08/01/2022 08:28:31| |LOOK HOW FUCKING HAPPY MIHO IS BROS| +|08/01/2022 08:28:32| |GIVE BOKO YOUR ENERGY| +|08/01/2022 08:28:33| \o/ +|08/01/2022 08:28:34| INAKUNARE +|08/01/2022 08:28:34| |GO AWAY| +|08/01/2022 08:28:34| |Two boku sexuals| +|08/01/2022 08:28:35| |KAMINARI INAKUNARE| +|08/01/2022 08:28:35| |FUCK OFF LIGHTNING| +|08/01/2022 08:28:36| OOOOOOOOOOOOOOO +|08/01/2022 08:28:36| |FUCK OFF LIGHTNING| +|08/01/2022 08:28:36| |>scare the lightning| +|08/01/2022 08:28:37| |GO AWAY | +|08/01/2022 08:28:37| |>trying to go against the WWE rigging| +|08/01/2022 08:28:38| \o/ +|08/01/2022 08:28:38| |KAMINARI INAKUNARE| +|08/01/2022 08:28:39| |GO AWAY. LIGHTNING| +|08/01/2022 08:28:39| |FUCK YOU LIGHTNING| +|08/01/2022 08:28:39| |\o/ GANBARE \o/| +|08/01/2022 08:28:40| BOKOMOTION +|08/01/2022 08:28:40| |KAMINARI INAKUNARI!!!| +|08/01/2022 08:28:40| ! +|08/01/2022 08:28:41| |GO AWAY LIGHTNING| +|08/01/2022 08:28:41| |WE DID IT FRENS| +|08/01/2022 08:28:42| |TAKE MY ENERGY BOKO| +|08/01/2022 08:28:43| |GO AWAY!!!!| +|08/01/2022 08:28:44| |imagine the after boko show sex| +|08/01/2022 08:28:44| bokomotion! +|08/01/2022 08:28:45| BOKOMOTION +|08/01/2022 08:28:46| BOKOMOTION +|08/01/2022 08:28:46| BOKOMOTION +|08/01/2022 08:28:48| |Give BOKO your energy \o/| +|08/01/2022 08:28:48| |YOU CAN THIS| +|08/01/2022 08:28:49| |:D :D| +|08/01/2022 08:28:50| :D +|08/01/2022 08:28:51| |BOKO NOOO| +|08/01/2022 08:28:51| |BOKO KAKKOI| +|08/01/2022 08:28:52| |Someone actually has to wear the boko costume if it's live action| +|08/01/2022 08:28:52| BOKOMOTION +|08/01/2022 08:28:53| |PRAY THE LIGHTING AWAY| +|08/01/2022 08:28:53| |when the punchy spirit?| +|08/01/2022 08:28:54| F +|08/01/2022 08:28:54| BOKO!?!?!?!!?!? +|08/01/2022 08:28:55| F +|08/01/2022 08:28:55| BOKOBROS..... +|08/01/2022 08:28:55| |lighting OP pls nerf| +|08/01/2022 08:28:56| NOOOOOOO +|08/01/2022 08:28:56| BOKOMOTION +|08/01/2022 08:28:56| F +|08/01/2022 08:28:56| >safe +|08/01/2022 08:28:56| |Bokomotion is what I do with Arisu every night| +|08/01/2022 08:28:57| bokodead +|08/01/2022 08:28:57| BOKOMOTION!!! +|08/01/2022 08:28:58| |IT HAS A SKELETON. IT'S ALIVE| +|08/01/2022 08:28:59| cute +|08/01/2022 08:28:59| NOOOOOOOOOOOOO +|08/01/2022 08:28:59| |FUCKING LIGHTNING| +|08/01/2022 08:29:02| BOCONTAIN +|08/01/2022 08:29:03| GANBARE! +|08/01/2022 08:29:04| |FUCK YOU LIGHTNING| +|08/01/2022 08:29:05| |BOKO NOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 08:29:06| |Thanks ride lady| +|08/01/2022 08:29:07| BORG +|08/01/2022 08:29:08| |BOKO BURGA| +|08/01/2022 08:29:09| |when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? | +|08/01/2022 08:29:09| |>boko burger| +|08/01/2022 08:29:11| |EATING BOKO| +|08/01/2022 08:29:12| |BOKO BURGA| +|08/01/2022 08:29:13| MELLI +|08/01/2022 08:29:13| BOKOBURGER +|08/01/2022 08:29:14| |alice's mom is paying all of these people| +|08/01/2022 08:29:14| |I want that Boko hat.| +|08/01/2022 08:29:14| |HOLY FUCK| +|08/01/2022 08:29:14| |Christmas date| +|08/01/2022 08:29:15| |These two are keeping this place in busiiness| +|08/01/2022 08:29:16| |HEY TL. WHAT DOES BOKOMOTION MEAN????????| +|08/01/2022 08:29:17| BOKOBURGER +|08/01/2022 08:29:17| |boko burg| +|08/01/2022 08:29:17| |who pays for these boko museums| +|08/01/2022 08:29:19| |>miho and arisu singlehandedly keeping boko park in business| +|08/01/2022 08:29:19| |what is operation punchy?| +|08/01/2022 08:29:19| |I can't believe they ate boko| +|08/01/2022 08:29:21| |taking Miho on a date to the Boko museum...| +|08/01/2022 08:29:22| |This doesn't seem very profitable| +|08/01/2022 08:29:22| |LOLI HAET BORGER| +|08/01/2022 08:29:24| |tl note, punchy means boko| +|08/01/2022 08:29:26| |bokomotion means lesbian sex| +|08/01/2022 08:29:27| |holy fuck are those people on the boko museum besides Alice and Miho| +|08/01/2022 08:29:28| |boko brand pregnancy test| +|08/01/2022 08:29:29| |Bokomotion means Panzer Vor| +|08/01/2022 08:29:30| CUTE +|08/01/2022 08:29:31| BORGER +|08/01/2022 08:29:33| |Boko only surviving due to 2 customers| +|08/01/2022 08:29:35| |ANAL PASSPORT| +|08/01/2022 08:29:36| |UNTIL YOU LEARN ITS OPERATION PUNCHY!!!!!!!!!!!!!| +|08/01/2022 08:29:37| CUTE +|08/01/2022 08:29:38| |tl note Boko means Nakadashi inside Arisu| +|08/01/2022 08:29:38| |What does she smell liike bros?| +|08/01/2022 08:29:40| |CUNNY CUNNY CUNNY CUNNY| +|08/01/2022 08:29:40| |WAS THAT A MA| +|08/01/2022 08:29:40| |>SAVED UP MONEY. YOUR MOTHER OWNS THIS PLACE| +|08/01/2022 08:29:44| |GOD I WISH I WAS DATING HER| +|08/01/2022 08:29:45| |WAS THAT A MAN| +|08/01/2022 08:29:45| |BOKOING MIHOS WOMB| +|08/01/2022 08:29:46| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 08:29:46| |BOKO NAIZURI| +|08/01/2022 08:29:50| |I WANT TO COMMIT A CRIME| +|08/01/2022 08:29:52| |other boko fans rise up| +|08/01/2022 08:29:53| |i WANT TO BOKO BOKO'S BOKOS| +|08/01/2022 08:29:54| |Alice is built for mating press| +|08/01/2022 08:29:54| |anon, that was takashi| +|08/01/2022 08:30:02| |boco suviving off of alice's nepotism| +|08/01/2022 08:30:03| |Takeshi no| +|08/01/2022 08:30:03| |THE HEAT COOKS THE EGG| +|08/01/2022 08:30:04| |Yet another series they have set up| +|08/01/2022 08:30:05| |Takashi isn't real Arisa| +|08/01/2022 08:30:06| |>those background posters| +|08/01/2022 08:30:06| |THE FOREHEAD| +|08/01/2022 08:30:06| |oh shit the comfy bgm| +|08/01/2022 08:30:07| FUKUDA +|08/01/2022 08:30:07| |WHY ARE THEY COOKING MY CUM| +|08/01/2022 08:30:07| |segggs with whole volley| +|08/01/2022 08:30:08| totsucunny.... +|08/01/2022 08:30:11| |ducks best team akebi best duck| +|08/01/2022 08:30:14| |CUTE ONAHOLE| +|08/01/2022 08:30:15| |f o r e h e a d| +|08/01/2022 08:30:15| TAEKO +|08/01/2022 08:30:16| |There's other customers in the background of Boko land?| +|08/01/2022 08:30:18| |TN: The heat from the griddle cooks the egg| +|08/01/2022 08:30:18| >foreheads +|08/01/2022 08:30:18| |honorary duck is comf| +|08/01/2022 08:30:19| |FUCKUCHAN UOOOOOH| +|08/01/2022 08:30:21| |based volleyball squad| +|08/01/2022 08:30:21| |I WANT TO FUCK THE SMOL-TOJO| +|08/01/2022 08:30:21| |cute boy and his harem| +|08/01/2022 08:30:23| |Fried vomit.| +|08/01/2022 08:30:24| |nine and a half hours in bros| +|08/01/2022 08:30:25| Taku-san +|08/01/2022 08:30:26| |fukuda added on boy harem| +|08/01/2022 08:30:29| |TRACKSUIT TAEKO| +|08/01/2022 08:30:32| |Japanese portions| +|08/01/2022 08:30:33| DISGUSTAN +|08/01/2022 08:30:34| |The heat from my erection cooks the rice.| +|08/01/2022 08:30:35| |Thanks for the grub| +|08/01/2022 08:30:35| STRONG +|08/01/2022 08:30:37| NORIKO<3 +|08/01/2022 08:30:38| DE-ARIMASU +|08/01/2022 08:30:40| >BOCARDI +|08/01/2022 08:30:42| |Coach got no volleyballs of her own though| +|08/01/2022 08:30:43| |assam, i need you to solve boko lore - darj | +|08/01/2022 08:30:45| |BACKGROUND KATYUSHA PROPAGANDA| +|08/01/2022 08:30:46| |noriko's younger brother| +|08/01/2022 08:30:47| |You telling me a shrimp fried this vomit?| +|08/01/2022 08:30:49| |cute IJA| +|08/01/2022 08:30:52| fivehead +|08/01/2022 08:30:52| |SHE KNEELS| +|08/01/2022 08:30:56| |IMAGINE HOW FUN IT WOULD BE| +|08/01/2022 08:30:57| BOOBA +|08/01/2022 08:30:57| TOTSUGEKI +|08/01/2022 08:30:59| BUTTS +|08/01/2022 08:31:00| orz +|08/01/2022 08:31:01| |NIP ROUND GLASSES| +|08/01/2022 08:31:02| TOTSUGEKI? +|08/01/2022 08:31:02| |NORIKO'S BUTT| +|08/01/2022 08:31:03| |GARUPAN BOOBA| +|08/01/2022 08:31:06| TOTSUGEKI +|08/01/2022 08:31:07| |akebi's big eyes and big akebis| +|08/01/2022 08:31:07| |dard needs the best boko quotes| +|08/01/2022 08:31:07| |KRANKY's advice GIT GUD| +|08/01/2022 08:31:08| |SOME KIND OF NEW TOTSUGEKI| +|08/01/2022 08:31:08| TOTSUGEGKI +|08/01/2022 08:31:08| |VOLLEYBALL TEAM, I KNEEL| +|08/01/2022 08:31:11| BOOOOBBAAAAA +|08/01/2022 08:31:12| |Pulling on her plaits while you slam her!| +|08/01/2022 08:31:13| |TOTSUGEKI TOTSUGEKI TOTSUGEKI| +|08/01/2022 08:31:15| |FOOD ANALOGIES| +|08/01/2022 08:31:17| TOSS +|08/01/2022 08:31:17| |I fucking hate that child| +|08/01/2022 08:31:18| TOSS +|08/01/2022 08:31:21| tossu! +|08/01/2022 08:31:25| TOSS +|08/01/2022 08:31:25| |looks live vomit| +|08/01/2022 08:31:27| |>lets not think of a plan, let's just eat || ah yeah, the Marie| +|08/01/2022 08:31:28| |fuu fuu| +|08/01/2022 08:31:28| |TONY KAKU| +|08/01/2022 08:31:30| |onaji demo| +|08/01/2022 08:31:34| |delicious vomit| +|08/01/2022 08:31:35| |TONY KAKU| +|08/01/2022 08:31:36| |why give advice to your enemy| +|08/01/2022 08:31:38| |>BIG BRAIN TIME| +|08/01/2022 08:31:46| |volleybutts playing with their food| +|08/01/2022 08:31:47| |eat your vomit, apollo| +|08/01/2022 08:31:49| |akebi is so perfect| +|08/01/2022 08:31:49| |who's tony and why he's kaku| +|08/01/2022 08:31:50| |Fucking Australians | +|08/01/2022 08:31:52| |>BIG BRAIN || MORE LIKE BIG FOREHEAD| +|08/01/2022 08:31:52| |There's no way it's a Koala right guys?| +|08/01/2022 08:31:52| |>FUCKING AUSSIE CUNTS M8| +|08/01/2022 08:31:53| |I HATE AUSTRALIANS SO GOD DAMN MUCH| +|08/01/2022 08:31:53| |>THE UPSIDEDOWN PEOPLE| +|08/01/2022 08:31:53| |GOD I HATE AUSTRALIANS| +|08/01/2022 08:31:54| BOCORDI +|08/01/2022 08:31:54| |AUSTRALIA BROS| +|08/01/2022 08:31:55| STRAYA +|08/01/2022 08:31:55| |fucking kangaroos| +|08/01/2022 08:31:55| |KOALA CHADS REPORT IN| +|08/01/2022 08:31:56| |AUSCHADS WHERE WE AT| +|08/01/2022 08:31:57| AUSSIES +|08/01/2022 08:31:57| |Is the Koala a girl too?| +|08/01/2022 08:31:57| AUSSIES +|08/01/2022 08:31:59| |TAEKO IS SO CUTE| +|08/01/2022 08:31:59| |FACK OFF CUNT| +|08/01/2022 08:32:00| >aussies +|08/01/2022 08:32:00| |Now toss a shell like those gamer girls| +|08/01/2022 08:32:00| >aussies +|08/01/2022 08:32:00| |OI CUNT| +|08/01/2022 08:32:01| |A FUCKING KOALA| +|08/01/2022 08:32:02| |KOALA CHADS| +|08/01/2022 08:32:03| |STRAYA MATE| +|08/01/2022 08:32:03| |fucking aussies| +|08/01/2022 08:32:03| |AUSTRALIANS ARE RUINING SENSHADO| +|08/01/2022 08:32:04| KOALABROS +|08/01/2022 08:32:04| |based shitposter| +|08/01/2022 08:32:04| CUNT +|08/01/2022 08:32:05| tits +|08/01/2022 08:32:05| |>Having the dumbest animal on the planet as your commander| +|08/01/2022 08:32:05| |BASED KOALA CUNTS| +|08/01/2022 08:32:06| |FACKING JAPS| +|08/01/2022 08:32:06| Kowalla +|08/01/2022 08:32:06| |AUSFAGS RISE UP| +|08/01/2022 08:32:06| |i hate australians so much| +|08/01/2022 08:32:07| |>a fucking Koala| +|08/01/2022 08:32:08| |SICK CUNT| +|08/01/2022 08:32:08| |What did they mean by this| +|08/01/2022 08:32:10| |AUSSIE BROS| +|08/01/2022 08:32:12| |TOTSUGEKI BAKA| +|08/01/2022 08:32:13| |AUSIES as least not there not KIWIS| +|08/01/2022 08:32:14| |captain is literal pea brain, still smarter than momo| +|08/01/2022 08:32:14| |Actual Koala| +|08/01/2022 08:32:15| |based koala| +|08/01/2022 08:32:15| |Shit they ain't lying| +|08/01/2022 08:32:17| |imagine being koala surrounded by harem| +|08/01/2022 08:32:17| |unironically a legit reflection of ADF command structure| +|08/01/2022 08:32:17| |AUSTRALIAN POWER| +|08/01/2022 08:32:19| |momo is the dumbest animal| +|08/01/2022 08:32:19| |CHARGING IDIOTS| +|08/01/2022 08:32:25| |Benis tank| +|08/01/2022 08:32:26| SHITPOSTERS +|08/01/2022 08:32:26| |>koala is smarter than momo| +|08/01/2022 08:32:27| |dick tank| +|08/01/2022 08:32:27| |WHERE'S THE TOTSUGEK| +|08/01/2022 08:32:28| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 08:32:29| |>totsugeki baka Based Koala| +|08/01/2022 08:32:29| |benis tank :DD| +|08/01/2022 08:32:29| |AUSTRALIAN SPIN OFF WHEN?| +|08/01/2022 08:32:29| |Streuth, 'ere come those nip cunts| +|08/01/2022 08:32:30| |NO ONE FUCKING CARES ABOUT MOMO| +|08/01/2022 08:32:32| |Imagine losing to Chi-Ha.| +|08/01/2022 08:32:34| |did we win Aussie bros?| +|08/01/2022 08:32:34| |koalas are the evolution's cruel joke| +|08/01/2022 08:32:35| |don't shitmouth adf| +|08/01/2022 08:32:35| |AH FUCK HERE COMES THE "PLOT"| +|08/01/2022 08:32:35| |eww momo| +|08/01/2022 08:32:37| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 08:32:37| |They're just shitposting right now as usual| +|08/01/2022 08:32:41| |shamelessly promoting his family business| +|08/01/2022 08:32:41| |Imagine doing LEWD things to Momo| +|08/01/2022 08:32:43| aussiecuntbros... +|08/01/2022 08:32:43| |FUCK OFF MOMO| +|08/01/2022 08:32:43| |SUP CUNTS| +|08/01/2022 08:32:45| |YOU FUCKERS WONT BE SAYING THAT FOR LONG| +|08/01/2022 08:32:46| |Momo have to compete against an actual koala? She'll lose.| +|08/01/2022 08:32:51| |we need ribon warrior to be animated| +|08/01/2022 08:32:52| |I LOVE MOMO I LOVE MOMO I LOVE MOMO| +|08/01/2022 08:32:53| |Introducing the Momolings| +|08/01/2022 08:32:55| |reminder that Japanese beat Australians in almost every engagement simply because their commanders aren't fuckwits like ours| +|08/01/2022 08:32:56| |STOP BULLYING MOMO!!!!!!!!!!!!!!| +|08/01/2022 08:32:57| |momo comes from a fertile family| +|08/01/2022 08:32:57| |no one cares about your family momo| +|08/01/2022 08:32:59| |Do NOT fuck the Koala| +|08/01/2022 08:33:00| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +|08/01/2022 08:33:00| |MOMO'S CHILDREN| +|08/01/2022 08:33:01| |I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! | +|08/01/2022 08:33:03| |i care.| +|08/01/2022 08:33:05| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +|08/01/2022 08:33:05| |would colleges actually fall for this camtain momo farce?| +|08/01/2022 08:33:05| |CAN WE SKIP FORWARD PLEASE| +|08/01/2022 08:33:08| |Monmo is cute| +|08/01/2022 08:33:10| |>losing to japs| +|08/01/2022 08:33:10| |I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! | +|08/01/2022 08:33:10| |MOMO DOESN'T EVEN KNOW HOW TO USE EMAIL| +|08/01/2022 08:33:11| DOOG +|08/01/2022 08:33:12| わしぶんぐ +|08/01/2022 08:33:13| |how close to japs make it to australia irl during ww2?| +|08/01/2022 08:33:14| |I want to barricade the doors and burn down momo's house| +|08/01/2022 08:33:15| |Please do not bully Momo| +|08/01/2022 08:33:19| |this is making me sleep rn| +|08/01/2022 08:33:20| |shit dog| +|08/01/2022 08:33:20| |WAN WAN WAN WAN| +|08/01/2022 08:33:22| |MOMO CHILDREN| +|08/01/2022 08:33:23| |OLD MAN DOG| +|08/01/2022 08:33:25| DOGGY! +|08/01/2022 08:33:25| |momo is a wonderful onee-san i love her say something nice to her| +|08/01/2022 08:33:25| |MOMO IS A SMART GIRL!!!!!!!!!!!!| +|08/01/2022 08:33:25| |GIVING MOMO 10 CHILDREN | +|08/01/2022 08:33:26| |Cute doggo| +|08/01/2022 08:33:26| |shamelessly promoting family business shamelessly promoting family business shamelessly promoting family business| +|08/01/2022 08:33:27| cute +|08/01/2022 08:33:27| |momo's kids| +|08/01/2022 08:33:28| |MOMO DOGGY| +|08/01/2022 08:33:29| |stache dog| +|08/01/2022 08:33:30| |Cute mom| +|08/01/2022 08:33:31| |Momo is a product of a man breeding his wife over nad over| +|08/01/2022 08:33:32| |momo oneesan| +|08/01/2022 08:33:34| |Wow Momo dad still got to hit with how much siblings she has.| +|08/01/2022 08:33:37| |Imagine pumping Momo with 7 kids...| +|08/01/2022 08:33:39| |MOMO IS THE CUTEST| +|08/01/2022 08:33:40| |SEX WITH MOMO-FAMILY| +|08/01/2022 08:33:41| |cute kids| +|08/01/2022 08:33:42| |You just know| +|08/01/2022 08:33:42| WEW +|08/01/2022 08:33:43| |MOMO YOU’RE TOO DUMB FOR COLLEGE BUT YOU CAN BE MY WIFE| +|08/01/2022 08:33:45| |nepotism smh| +|08/01/2022 08:33:45| YJK +|08/01/2022 08:33:48| |Abe dream| +|08/01/2022 08:33:48| |Momo is inbred| +|08/01/2022 08:33:49| |Momo papa been busy| +|08/01/2022 08:33:49| UOOOOOOOOOOOOOOOOOHHHHHHHHHHHH +|08/01/2022 08:33:49| |MOMO made for breeding| +|08/01/2022 08:33:50| |Giving momo an even bigger family| +|08/01/2022 08:33:50| |MOMO-CHAN DAKKO| +|08/01/2022 08:33:51| male +|08/01/2022 08:33:52| |holy shit based dad| +|08/01/2022 08:33:53| |There's only about an hour left, right?| +|08/01/2022 08:33:53| Momolings +|08/01/2022 08:33:54| |tiny kawashimas very cute| +|08/01/2022 08:33:55| UOOOOOOOOOOOOOOOOOOH +|08/01/2022 08:33:56| |sex with momo-chan and her sisters.| +|08/01/2022 08:33:56| UOOOOOOOOOHHHHHHHHHHH +|08/01/2022 08:33:56| |HOLY FUCK HE BANGED HER UNTIL SHE WAS DYING| +|08/01/2022 08:33:58| |no wonder mom looks tired| +|08/01/2022 08:33:58| |imagine what a good mother she would make| +|08/01/2022 08:33:59| |male child alert| +|08/01/2022 08:33:59| |my heart| +|08/01/2022 08:34:00| |>parents watched eva| +|08/01/2022 08:34:02| |Making Momo a loving wife and mother!| +|08/01/2022 08:34:02| |look at al lthis MONEY | +|08/01/2022 08:34:03| |MOMO REDEMPTION| +|08/01/2022 08:34:05| |CUTE ROUND GLASSES| +|08/01/2022 08:34:05| lolis +|08/01/2022 08:34:06| Momocringe +|08/01/2022 08:34:06| |No wonder Momo mama can't walk properly. Momo Papa too busy| +|08/01/2022 08:34:07| |momo holding your child| +|08/01/2022 08:34:09| cunny....................................................................................................................................... +|08/01/2022 08:34:10| |MOMO IS NOT DUMB, MOMO IS A BUSY FAMILY GIRL| +|08/01/2022 08:34:11| |could just sell one of the kids| +|08/01/2022 08:34:11| |parents didn't have no TV| +|08/01/2022 08:34:11| |She's just pregnant again| +|08/01/2022 08:34:12| UOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHh +|08/01/2022 08:34:14| |FRAIL FROM BEING A BREEDING MARE| +|08/01/2022 08:34:14| |YOU WILL FEEL BAD FOR MOMO. YOU WILL CARE ABOUT THE PLOT. YOU WILL WANT OOARAI TO WIN. WHY AREN'T YOU CHEERING THEM GOD DAMMIT.| +|08/01/2022 08:34:16| Poors... +|08/01/2022 08:34:16| |THANKS FOR THE GRUB| +|08/01/2022 08:34:16| POOR! +|08/01/2022 08:34:17| |CUTE MOMO| +|08/01/2022 08:34:18| |>frail from pumping out all those kids| +|08/01/2022 08:34:18| |MOMO CUTE! GOOD SISTER! GOOD MOTHER!| +|08/01/2022 08:34:19| |momo dum| +|08/01/2022 08:34:20| |imagine having so many loli daughters. Blessed life| +|08/01/2022 08:34:20| |>real frail body >makes a ton of kids anyway| +|08/01/2022 08:34:21| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 08:34:24| |>births out six kids| +|08/01/2022 08:34:25| |Little girl erotic| +|08/01/2022 08:34:25| |>Bread slices| +|08/01/2022 08:34:26| ;_; +|08/01/2022 08:34:29| >frail +|08/01/2022 08:34:31| |about 60-90 minutes. rest of this. 40 for df3. 10 for daikon| +|08/01/2022 08:34:32| |CUTE LOLI UOOOOOOOOH| +|08/01/2022 08:34:37| |pumping mom with 6 daughgters and 3 sons| +|08/01/2022 08:34:37| |the next rabbit team is momo's siblings| +|08/01/2022 08:34:38| |i love momo she is so sweet| +|08/01/2022 08:34:38| ToT +|08/01/2022 08:34:40| |I WANT TO HAVE THIS MANY KIDS WITH HANA| +|08/01/2022 08:34:48| |TL Note: "Anzu" means "SEX".| +|08/01/2022 08:34:49| |why college when she needs kids in her belly| +|08/01/2022 08:34:49| |bros im gonna pass out| +|08/01/2022 08:34:50| |I feel bad for Momo. The kids got better glasses than her| +|08/01/2022 08:34:51| stfu +|08/01/2022 08:34:51| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 08:34:53| |Hana would just eat her own kids| +|08/01/2022 08:34:54| ANZU +|08/01/2022 08:34:54| |thanks TL| +|08/01/2022 08:34:56| |momo's parents working hard at night| +|08/01/2022 08:34:57| |Thanks TL| +|08/01/2022 08:34:57| sex +|08/01/2022 08:35:02| a +|08/01/2022 08:35:07| |AUS BROS......| +|08/01/2022 08:35:07| N +|08/01/2022 08:35:08| |LETS GOOOOOOOOOOOOOOOOO| +|08/01/2022 08:35:10| |Spraying all over Anzu's flat chest.| +|08/01/2022 08:35:11| |>they actually won| +|08/01/2022 08:35:14| |Ahh yes, the Totsugeki tards| +|08/01/2022 08:35:15| TOTSUGEKI +|08/01/2022 08:35:16| >straya +|08/01/2022 08:35:16| |ANZU SOCKS| +|08/01/2022 08:35:16| kants +|08/01/2022 08:35:17| |KOALA BROS….| +|08/01/2022 08:35:18| |FIRST EMUS| +|08/01/2022 08:35:18| |If Alice family was as big as Momo, that would be something| +|08/01/2022 08:35:20| |PSA: Anzu means to commit mass genocide in nanking| +|08/01/2022 08:35:20| aussies...... +|08/01/2022 08:35:21| TOTSUGEKI +|08/01/2022 08:35:23| |LETS GOOOOO THE RETARDS DID IT| +|08/01/2022 08:35:28| |how did straya manage to fuck that one up| +|08/01/2022 08:35:30| |they won because duck team idiots helped the enemy| +|08/01/2022 08:35:30| |Aussiebros... WE SUCK| +|08/01/2022 08:35:32| |we need more nankings on china| +|08/01/2022 08:35:33| |OMW TO NANKING| +|08/01/2022 08:35:34| |>they almost lost| +|08/01/2022 08:35:37| |I HATE AUSTRALIANS SO GODDAMN MUCH| +|08/01/2022 08:35:37| |IT WAS YOUR FUCKING FAULT, YUKARI| +|08/01/2022 08:35:38| FLOOF +|08/01/2022 08:35:40| |If the retards could make t so cna you!| +|08/01/2022 08:35:40| |YUZU IS SO HOT HOLY SHIT| +|08/01/2022 08:35:41| |momo is not allowed to talk shit| +|08/01/2022 08:35:41| |fluff still sad foor bad intel| +|08/01/2022 08:35:44| |NANKING NEVER HAPPENED| +|08/01/2022 08:35:44| |ERIKA ERIKA EIRKA| +|08/01/2022 08:35:45| |Poor Eclair| +|08/01/2022 08:35:46| ECLAIR! +|08/01/2022 08:35:46| |GO HOME MAGINOT| +|08/01/2022 08:35:46| |DESU WA| +|08/01/2022 08:35:47| Eclaire +|08/01/2022 08:35:49| eclair +|08/01/2022 08:35:50| |ECLAIR EXISTS| +|08/01/2022 08:35:50| ECLAIR +|08/01/2022 08:35:53| PANZERLIED +|08/01/2022 08:35:54| Eclair-sama +|08/01/2022 08:35:55| |M m montage| +|08/01/2022 08:35:56| |so why are there 2 frog schools| +|08/01/2022 08:35:57| |Koala too high from Australia trees to command properly| +|08/01/2022 08:35:57| |ECLAIR IS CANON| +|08/01/2022 08:35:58| |Being Eclair is suffering| +|08/01/2022 08:35:58| WHO? +|08/01/2022 08:35:58| |its the other frenchies| +|08/01/2022 08:35:59| |TWO WHOLE FRENCH SCHOOLS| +|08/01/2022 08:36:01| |SIEG HEIL o/| +|08/01/2022 08:36:02| PANZERLIED +|08/01/2022 08:36:03| ECLAIR!!!! +|08/01/2022 08:36:03| |DER TAG GLUHEN HEISS| +|08/01/2022 08:36:03| |DER TAG GLÜHEND HEISS| +|08/01/2022 08:36:04| |Eclair is here to job!| +|08/01/2022 08:36:04| UTEEEEEEEEEEE +|08/01/2022 08:36:06| |Eclair never showing up again ;_;| +|08/01/2022 08:36:06| WANIIIIIIIIII +|08/01/2022 08:36:06| pomf +|08/01/2022 08:36:07| 1488 +|08/01/2022 08:36:08| |PRESS S TO STAMP YOUR FEET | +|08/01/2022 08:36:11| |is there jewish school in this universe| +|08/01/2022 08:36:11| eliminate +|08/01/2022 08:36:11| S +|08/01/2022 08:36:12| |absolute state of frogs| +|08/01/2022 08:36:12| S +|08/01/2022 08:36:12| S +|08/01/2022 08:36:12| DENMARK!!!!!!! +|08/01/2022 08:36:14| |imagine can't take down wani| +|08/01/2022 08:36:15| |STURMWIND DAHINN| +|08/01/2022 08:36:16| |ECLAIR NOOOO| +|08/01/2022 08:36:16| |>TFW you will never have a 3some with Marie and Eclair| +|08/01/2022 08:36:17| |2 HOURS| +|08/01/2022 08:36:18| FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +|08/01/2022 08:36:20| |FUCK SW*DES| +|08/01/2022 08:36:21| URAAAAAAAAAAAAA +|08/01/2022 08:36:22| |Erika's back| +|08/01/2022 08:36:22| |SWEDES BTFO| +|08/01/2022 08:36:23| |>hand signals| +|08/01/2022 08:36:23| UYRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:36:23| BORCHT +|08/01/2022 08:36:25| |Literally who?| +|08/01/2022 08:36:27| CUTEYUSHA +|08/01/2022 08:36:28| |norway lore| +|08/01/2022 08:36:28| |Fucking hand signals| +|08/01/2022 08:36:28| |I'm glad GuP was created before the new SJW streak| +|08/01/2022 08:36:29| |Russian onahole loli....| +|08/01/2022 08:36:30| URAAAAAAAAAAAAAA +|08/01/2022 08:36:31| |they're norwegians| +|08/01/2022 08:36:32| KATYUSHA +|08/01/2022 08:36:35| |imagine being viking| +|08/01/2022 08:36:35| Katyusha +|08/01/2022 08:36:35| SPAINISHBROS... +|08/01/2022 08:36:38| |rip vikings| +|08/01/2022 08:36:39| |USA USA USA| +|08/01/2022 08:36:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:40| |USA USA USA USA USA| +|08/01/2022 08:36:40| |whats the difference| +|08/01/2022 08:36:41| |Wish we got to see full matches with all the random jobber schools| +|08/01/2022 08:36:41| |BLUE DIVISION EROTIC| +|08/01/2022 08:36:41| |MASSIVE TITS| +|08/01/2022 08:36:43| TITS +|08/01/2022 08:36:43| |SPANISH TITS| +|08/01/2022 08:36:44| |USA USA USA USA| +|08/01/2022 08:36:45| |ARRIBA ESPAÑA o/| +|08/01/2022 08:36:45| |big tiddies| +|08/01/2022 08:36:45| WEW +|08/01/2022 08:36:45| BOOBA +|08/01/2022 08:36:46| |Saunders 1st win boys| +|08/01/2022 08:36:46| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:48| |BLUE EROTIC| +|08/01/2022 08:36:48| |ARRIBA AZUL| +|08/01/2022 08:36:49| |USA USA USA USA USA| +|08/01/2022 08:36:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:50| |OH FUCK| +|08/01/2022 08:36:50| |UNF tiddie| +|08/01/2022 08:36:50| |KAY VS QUE| +|08/01/2022 08:36:51| GODDAMNNNN +|08/01/2022 08:36:51| |USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:51| |Duck hand signals too strong| +|08/01/2022 08:36:51| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 08:36:51| |KAY VS HER SISTER| +|08/01/2022 08:36:51| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 08:36:52| TITS +|08/01/2022 08:36:53| |EL GRANDE| +|08/01/2022 08:36:53| BOOBA +|08/01/2022 08:36:53| |SPANISH TIDDIES| +|08/01/2022 08:36:53| |USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:54| |spain enjoyers| +|08/01/2022 08:36:54| TIIIITS +|08/01/2022 08:36:54| |ARRIBA ESPANA| +|08/01/2022 08:36:55| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:55| |THOSE TITS| +|08/01/2022 08:36:55| |USA USA USA| +|08/01/2022 08:36:55| |CABRON COATED TANKSSSSSSSSSSS| +|08/01/2022 08:36:56| BOOBA +|08/01/2022 08:36:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:57| USA +|08/01/2022 08:36:58| |SPANIARD TITS| +|08/01/2022 08:36:58| |AVENGE THE MAINE| +|08/01/2022 08:36:59| |FIELD ARTILLERY| +|08/01/2022 08:36:59| |I HATE THE BRITISH| +|08/01/2022 08:36:59| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:37:00| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:37:00| |>using a firefly| +|08/01/2022 08:37:01| GOTEM +|08/01/2022 08:37:02| SNIPED +|08/01/2022 08:37:02| ROSEHIP +|08/01/2022 08:37:02| BRIDGE +|08/01/2022 08:37:03| |brown kay| +|08/01/2022 08:37:03| |great shot| +|08/01/2022 08:37:06| |A BRIDGE TOO FAR| +|08/01/2022 08:37:08| |BAKA INBOUND| +|08/01/2022 08:37:08| |REmeber le taco bell| +|08/01/2022 08:37:09| |BELGIUM IS NOT A REAL COUNTRY| +|08/01/2022 08:37:11| |GO ON HOME| +|08/01/2022 08:37:12| |Kay vs Tanned Kay| +|08/01/2022 08:37:12| |EL PURO PINCHE| +|08/01/2022 08:37:13| KANPAI +|08/01/2022 08:37:13| Kanpai +|08/01/2022 08:37:13| |rosehip moment| +|08/01/2022 08:37:15| KANPAII +|08/01/2022 08:37:19| :DDDDDDDDDD +|08/01/2022 08:37:19| BAKAHIP +|08/01/2022 08:37:19| |CUM PIE| +|08/01/2022 08:37:20| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:21| |>hobos not the flagtank| +|08/01/2022 08:37:22| EBIN +|08/01/2022 08:37:23| |MY WIFE, ROSEHIP| +|08/01/2022 08:37:23| |PERKELE :DDDDDDDD| +|08/01/2022 08:37:24| :DDDDDDDDDDDDDDD +|08/01/2022 08:37:24| |the desert?| +|08/01/2022 08:37:25| |FUGGG :-DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 08:37:25| :DDDDDDDDD +|08/01/2022 08:37:25| :DDDDDDDDD +|08/01/2022 08:37:26| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:26| FUG +|08/01/2022 08:37:26| :DD +|08/01/2022 08:37:26| |Waffles pakeked| +|08/01/2022 08:37:26| :DDDD +|08/01/2022 08:37:27| |FINNISH HYPER WAR| +|08/01/2022 08:37:27| |TULTA :DDDDDDDD| +|08/01/2022 08:37:27| POLKA +|08/01/2022 08:37:27| |BASED BINNS :DDDD| +|08/01/2022 08:37:27| |VOI VITTU| +|08/01/2022 08:37:28| :DDDDDDDDDDDD +|08/01/2022 08:37:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:30| :DDDDDD +|08/01/2022 08:37:30| |FUGGG :DDDDDDD| +|08/01/2022 08:37:30| :DDD +|08/01/2022 08:37:30| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:31| |FUCK POLAND| +|08/01/2022 08:37:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:33| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:33| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:33| |Active sonar :DDDDDDD| +|08/01/2022 08:37:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:35| |secret finnish warp drive| +|08/01/2022 08:37:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:35| |FINNISH WARP DRIVE| +|08/01/2022 08:37:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 08:37:36| :DDDDDDDDDDDDDD +|08/01/2022 08:37:37| |BENIS :DDDD| +|08/01/2022 08:37:37| |DVCE DVCE blue division| +|08/01/2022 08:37:37| |SASUGA DUCE| +|08/01/2022 08:37:37| BONPLE +|08/01/2022 08:37:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:38| |How do they keep doing it| +|08/01/2022 08:37:38| |DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:38| DUCE +|08/01/2022 08:37:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 08:37:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:40| DUCE +|08/01/2022 08:37:40| |DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:41| |JAJKA SEETHING| +|08/01/2022 08:37:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:41| |How the fuck did Anzio win| +|08/01/2022 08:37:41| |TANK SEX| +|08/01/2022 08:37:42| |No Kampai for Assam?| +|08/01/2022 08:37:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:42| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:43| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 08:37:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:44| |POLSKA GUROM| +|08/01/2022 08:37:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:44| |CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT| +|08/01/2022 08:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:45| |DUCE DUCE DUCE| +|08/01/2022 08:37:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:47| |DUCE DUCE DUCE DUCED CEUD CUED DUCE DCEU| +|08/01/2022 08:37:47| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:49| |I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA | +|08/01/2022 08:37:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:51| DUCE +|08/01/2022 08:37:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:53| FUOCO +|08/01/2022 08:37:53| YOSH +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:54| FUOCO +|08/01/2022 08:37:54| DVCE +|08/01/2022 08:37:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:56| DUCEDUCEDUCEDUCEDUCE +|08/01/2022 08:37:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:57| FUCKO +|08/01/2022 08:37:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:59| FUCKER! +|08/01/2022 08:37:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:00| YOSH +|08/01/2022 08:38:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:38:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:38:01| |FUCK? OK| +|08/01/2022 08:38:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:01| |Jump them, Duce| +|08/01/2022 08:38:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:01| fuoco +|08/01/2022 08:38:02| |WE WON DUCE BROS| +|08/01/2022 08:38:02| YOSH +|08/01/2022 08:38:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:04| YOSH +|08/01/2022 08:38:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:07| |fuoco the covy| +|08/01/2022 08:38:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:09| |Fuoco the duce| +|08/01/2022 08:38:10| |>shooting half your team| +|08/01/2022 08:38:11| |pizza pasta put it in a box| +|08/01/2022 08:38:11| |LETS GOOOOO DUCEBROS| +|08/01/2022 08:38:14| |DUCE ALL THE WAY| +|08/01/2022 08:38:16| |I want Anchovy to whip me!| +|08/01/2022 08:38:18| |>Black MEXTa| +|08/01/2022 08:38:21| same +|08/01/2022 08:38:23| |Grumpy Eclair | +|08/01/2022 08:38:24| |Blue division must have the highest screentime:fans ratio| +|08/01/2022 08:38:24| |FUCK ITS THE KAMPENTAI| +|08/01/2022 08:38:27| |Imagine getting beat by fucking Anzio | +|08/01/2022 08:38:28| totsugeki? +|08/01/2022 08:38:28| |MEXT did nothing wrong| +|08/01/2022 08:38:29| |When did they start making flying tanks?| +|08/01/2022 08:38:35| |>34 degrees| +|08/01/2022 08:38:36| |MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! | +|08/01/2022 08:38:36| |Fatass marie| +|08/01/2022 08:38:37| |mext is a hero| +|08/01/2022 08:38:38| |12 cakes| +|08/01/2022 08:38:39| |I wish I was Marie's cake| +|08/01/2022 08:38:40| |EAT MY DICK MARIE| +|08/01/2022 08:38:41| |MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! | +|08/01/2022 08:38:46| |34 degrees? thats freezing| +|08/01/2022 08:38:51| |>TELLING THEM TO LEARN FROM THE CHARGE BAKAS. HOW HUMILITATING.| +|08/01/2022 08:38:52| | is this df1 or 2| +|08/01/2022 08:38:56| DF2 +|08/01/2022 08:38:57| 2 +|08/01/2022 08:38:59| |Marie bites down and your dick is chewed off| +|08/01/2022 08:38:59| |>sojack braindamaged shitposters| +|08/01/2022 08:38:59| |HOLY SHIT NISHIIIIIIIIIIIIIIIII| +|08/01/2022 08:39:00| |they trynna outjapanese each other with the thanks lmfao| +|08/01/2022 08:39:01| |Marie too busy watching cake instead| +|08/01/2022 08:39:02| |its pretty hot, bloody burgers| +|08/01/2022 08:39:05| df4 +|08/01/2022 08:39:05| |thanks chat| +|08/01/2022 08:39:10| o7 +|08/01/2022 08:39:11| DF5 +|08/01/2022 08:39:11| WAKARIMASHITA +|08/01/2022 08:39:11| |please ganbatte| +|08/01/2022 08:39:12| |what's sojack?| +|08/01/2022 08:39:12| |>please win. fuck momo btw| +|08/01/2022 08:39:15| |>WE WIN BECAUSE THE OTHER TEAMS DON'T TRY| +|08/01/2022 08:39:16| O7 +|08/01/2022 08:39:16| |miho understands theyre luckshitters| +|08/01/2022 08:39:19| |dont give them hope miho| +|08/01/2022 08:39:20| DF6??? +|08/01/2022 08:39:22| |does the stream go up to df 4?| +|08/01/2022 08:39:22| |like soyjack but with more typos| +|08/01/2022 08:39:27| 礼 +|08/01/2022 08:39:28| |CUTE JUDGES| +|08/01/2022 08:39:28| |INVEST IN CHIHATAN NOW| +|08/01/2022 08:39:29| Anon... +|08/01/2022 08:39:32| |PANTSU FOA| +|08/01/2022 08:39:33| |PANZER VOR| +|08/01/2022 08:39:33| anon... +|08/01/2022 08:39:33| |yeah, stream ends with df4| +|08/01/2022 08:39:34| |PANZER VOR!!!| +|08/01/2022 08:39:36| |Yup, DF 4| +|08/01/2022 08:39:37| |MOMOOOO CUTE!| +|08/01/2022 08:39:38| >df4 +|08/01/2022 08:39:38| |PANSA FO| +|08/01/2022 08:39:39| |STILL MEDIOCRE PANZER VOR| +|08/01/2022 08:39:39| |SENSHA ZENSHIN| +|08/01/2022 08:39:42| |>jap tanks| +|08/01/2022 08:39:43| |PANZER WHORE| +|08/01/2022 08:39:44| |p-pa-panzer v-vo-vorrrr!!!| +|08/01/2022 08:39:46| |SENSA ZENSHI| +|08/01/2022 08:39:46| >jungle +|08/01/2022 08:39:46| |the stream ends with DF6| +|08/01/2022 08:39:52| df999999999999999999 +|08/01/2022 08:39:53| |p p p p p p p p p p p | +|08/01/2022 08:39:54| |T O T S U G E K I| +|08/01/2022 08:39:56| |WELCOME TO THE JUNGLE| +|08/01/2022 08:39:57| |ANONS WHAT DOES PANZER VOR MEAN AGAIN?| +|08/01/2022 08:39:57| |momom will fail to get a college anyway| +|08/01/2022 08:39:58| |INDIANA JONES| +|08/01/2022 08:39:59| BZZZZZZZZZT +|08/01/2022 08:40:01| >DRONES +|08/01/2022 08:40:02| |THE TREES ARE SPEAKING BAKA| +|08/01/2022 08:40:04| |ur mum| +|08/01/2022 08:40:05| |HBO PRESNTES THE PACIFIC| +|08/01/2022 08:40:05| |WELCOME TO GUADALCANAL| +|08/01/2022 08:40:08| |TL note: Panzer Vore = Sex| +|08/01/2022 08:40:09| |andou andou andou andou andou andou andou andou andou andou andou andou | +|08/01/2022 08:40:10| |holy fuck was that a famas| +|08/01/2022 08:40:11| |what are those flying panzers| +|08/01/2022 08:40:12| |Panzer vor means panzer vor| +|08/01/2022 08:40:15| |TL NOTE: PANZER VOR MEANS PANTRU VORE| +|08/01/2022 08:40:15| |australia should just get nuked| +|08/01/2022 08:40:16| |Panzer Vor = Tanks Forward I think| +|08/01/2022 08:40:20| |fat ass| +|08/01/2022 08:40:20| |THANKS TL| +|08/01/2022 08:40:21| |>cake all over her face| +|08/01/2022 08:40:22| |lots of keeki| +|08/01/2022 08:40:22| CAKEFATTIECAKEFATTIECAKEFATTIE +|08/01/2022 08:40:23| |Sex in a tank, right TL?| +|08/01/2022 08:40:25| |I HATE THE PIRATES| +|08/01/2022 08:40:26| |we're surely fucked now on guadalcanal| +|08/01/2022 08:40:28| |Dirty pig| +|08/01/2022 08:40:34| |stupid pirates| +|08/01/2022 08:40:37| |Piratebros... is it over for our banner?| +|08/01/2022 08:40:37| |flint gang| +|08/01/2022 08:40:38| based +|08/01/2022 08:40:38| |I WANT TO FUCK FLINT'S VOICE| +|08/01/2022 08:40:39| |these people suck| +|08/01/2022 08:40:39| OHO +|08/01/2022 08:40:39| |will watching DF3 for the first time here ruin it>| +|08/01/2022 08:40:41| |dumb pirates| +|08/01/2022 08:40:42| RUM +|08/01/2022 08:40:43| |you will never be a cute high school girl| +|08/01/2022 08:40:44| |the trees speakin japanese| +|08/01/2022 08:40:45| >cute +|08/01/2022 08:40:46| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 08:40:46| CUTE +|08/01/2022 08:40:46| |How come Oarai always has to fight on the enemy's terf| +|08/01/2022 08:40:47| Kek +|08/01/2022 08:40:49| >cute +|08/01/2022 08:40:49| |NOT THE FLAG| +|08/01/2022 08:40:51| RUDE +|08/01/2022 08:40:52| |That face| +|08/01/2022 08:40:53| PUHU +|08/01/2022 08:40:53| |USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK | +|08/01/2022 08:40:54| F +|08/01/2022 08:40:55| |>KAREN CUTE| +|08/01/2022 08:40:57| PIRATEBROS..... +|08/01/2022 08:40:57| |>Shark Jobbers| +|08/01/2022 08:40:57| |FUCK YOUR FLAG| +|08/01/2022 08:40:58| TAMASHII +|08/01/2022 08:40:59| |THEY HAVE BESMIRCHED OUR FLAG| +|08/01/2022 08:41:00| |>no tracer ambush| +|08/01/2022 08:41:00| |PIRATE AUTISM| +|08/01/2022 08:41:03| |Jungle japanese vs normal japanese?| +|08/01/2022 08:41:12| TOTSUGEKI +|08/01/2022 08:41:12| |did that tree just say "TOTSUGEKI"?| +|08/01/2022 08:41:12| COCK +|08/01/2022 08:41:13| |Sasuga Chi-ha tan| +|08/01/2022 08:41:15| |cunny strats| +|08/01/2022 08:41:16| Totsugeki! +|08/01/2022 08:41:17| TOTSUGEKI!!! +|08/01/2022 08:41:18| |they have a mark 4 literally less useful than a cv33| +|08/01/2022 08:41:18| |df3 ends with mex being a based god| +|08/01/2022 08:41:19| TOTSUGEKI +|08/01/2022 08:41:19| |STEPPING CHARGE| +|08/01/2022 08:41:20| tooooooooo +|08/01/2022 08:41:20| TOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKI +|08/01/2022 08:41:21| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:21| |CUTE RETARDS| +|08/01/2022 08:41:21| |imagine being more singleminded than the totsugeki retards| +|08/01/2022 08:41:23| TOTSUGEKI +|08/01/2022 08:41:24| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:41:24| TOTSUGEKI!!!!! +|08/01/2022 08:41:26| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:26| TOTSUGEKIIIIIIIIIIIIIIIIIII +|08/01/2022 08:41:27| |FULL SPEED AHEAD| +|08/01/2022 08:41:29| TOTSUGEKI +|08/01/2022 08:41:29| TOTSUGEKI +|08/01/2022 08:41:29| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:29| TOTSUGEKI +|08/01/2022 08:41:29| |MULTIPLE TOTSUGEKI TIME| +|08/01/2022 08:41:29| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:41:30| |NEGATIVE IQ| +|08/01/2022 08:41:32| 足踏み突撃 +|08/01/2022 08:41:34| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 08:41:35| totsugeki +|08/01/2022 08:41:36| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:37| |How the fuck can these retards breathe on their own| +|08/01/2022 08:41:39| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 08:41:39| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:40| TOTSUGEKI +|08/01/2022 08:41:41| HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA +|08/01/2022 08:41:42| BANZAI +|08/01/2022 08:41:43| |\o/ TENNO HAIKA BANZAI| +|08/01/2022 08:41:44| |Useless Sharks, even Momo is more help.| +|08/01/2022 08:41:44| >>>>>>>>>>>>>>>>>>>>>>>>> +|08/01/2022 08:41:45| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 08:41:45| |Jungle ambushes.| +|08/01/2022 08:41:46| |I HATE THE SHARKS| +|08/01/2022 08:41:47| |Pirates sunk| +|08/01/2022 08:41:50| |just kill the pirates already| +|08/01/2022 08:41:50| SHARKIDIOTS +|08/01/2022 08:41:52| |what's the point of the sharks?| +|08/01/2022 08:41:55| |SAYONARA TOTSUGEKI| +|08/01/2022 08:41:56| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:41:57| |Couldn't they have disabled the Mark IV with a shot from any angle?| +|08/01/2022 08:41:57| |SAYONARA TOTSUGEKI| +|08/01/2022 08:41:57| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +|08/01/2022 08:41:57| |I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHA| +|08/01/2022 08:41:57| BAKAS +|08/01/2022 08:41:58| |WOMB TOTSUGEKI!!| +|08/01/2022 08:41:58| |GOODBYE TOTSUGEKI| +|08/01/2022 08:41:58| TOTSUGEKI +|08/01/2022 08:41:59| BAKAS +|08/01/2022 08:41:59| |And the Pirates all died in the explosion, they were never mourned| +|08/01/2022 08:42:00| |HIGH IQ| +|08/01/2022 08:42:01| |It's fine they were useless anyways| +|08/01/2022 08:42:01| |useless pirates| +|08/01/2022 08:42:01| |TENNO HEIKA BANZAI| +|08/01/2022 08:42:01| |SAYONARA TOTSUGEKI| +|08/01/2022 08:42:02| |CHARGE IS IN THE NAME| +|08/01/2022 08:42:02| |Chiatan are legit retards| +|08/01/2022 08:42:02| |OH FUCK SHE'S THINKING| +|08/01/2022 08:42:03| RETARDS +|08/01/2022 08:42:04| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +|08/01/2022 08:42:04| |SHUT THE FUCK UP HOSOMI| +|08/01/2022 08:42:04| BAKAS +|08/01/2022 08:42:04| |SAYONARA TOTSUGEKI| +|08/01/2022 08:42:04| |\o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:42:04| |I'll pretend Chi ha tan wins this| +|08/01/2022 08:42:04| BAKAS +|08/01/2022 08:42:04| TOTSUGEKI +|08/01/2022 08:42:06| |It's in the name| +|08/01/2022 08:42:07| |iall the sharks but cute lass should walk off the plank| +|08/01/2022 08:42:07| TENNO +|08/01/2022 08:42:08| |6 Japanese tanks need 10 shots to kill a WWI relic, sasuga Nippon| +|08/01/2022 08:42:10| |Dumb hosomi| +|08/01/2022 08:42:10| HEIKA +|08/01/2022 08:42:11| |TOTSUGEKI IS TOTSUGEKI| +|08/01/2022 08:42:11| |SAYOUNARA TOSTUGEKI| +|08/01/2022 08:42:11| |SAYONARA TOTSUGEKI| +|08/01/2022 08:42:14| |QUICK SOMEONE KNOCK HOSOMI OUT| +|08/01/2022 08:42:15| BANZAIIIIIIIIII +|08/01/2022 08:42:19| |DON'T LET HER ASK QUESTIONS| +|08/01/2022 08:42:19| |TL Note: "Anzu" means "SEX".| +|08/01/2022 08:42:20| |Chihatan lost because they forgot the flag tank| +|08/01/2022 08:42:21| |SAYONARA TOTSUGEKI| +|08/01/2022 08:42:21| |chi ha tan isn't interesting| +|08/01/2022 08:42:23| |THANKS TL| +|08/01/2022 08:42:26| ANZU +|08/01/2022 08:42:26| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 08:42:28| |THANKS TL| +|08/01/2022 08:42:28| |Arigato TL| +|08/01/2022 08:42:28| F +|08/01/2022 08:42:30| |TOTSUGEKI enthusiasts | +|08/01/2022 08:42:31| |You go fast. Charge is charge| +|08/01/2022 08:42:33| |thanks TL| +|08/01/2022 08:42:34| |it's carbon so its safe| +|08/01/2022 08:42:36| jobbers +|08/01/2022 08:42:38| |I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS | +|08/01/2022 08:42:40| |Chihatan thought the Mark IV was the flag tank| +|08/01/2022 08:42:41| |your father's not dead, he's just totsugeki'ing from life| +|08/01/2022 08:42:42| |BROS ;__;| +|08/01/2022 08:42:42| |THE HEART| +|08/01/2022 08:42:42| |TL Note: TOSUGEKI means PLEASURE| +|08/01/2022 08:42:44| |cute lass| +|08/01/2022 08:42:45| |Murakami's hard muscular thighs| +|08/01/2022 08:42:47| wisdom +|08/01/2022 08:42:49| ;_; +|08/01/2022 08:42:49| UMU +|08/01/2022 08:42:50| BASED +|08/01/2022 08:42:53| |STUG LYFE| +|08/01/2022 08:42:53| UMU +|08/01/2022 08:42:54| |Cute callback| +|08/01/2022 08:42:55| Based +|08/01/2022 08:42:55| |stfu pirate bitch| +|08/01/2022 08:42:56| |floof hair| +|08/01/2022 08:42:57| UMU +|08/01/2022 08:42:59| |Cutlass ain't fine| +|08/01/2022 08:42:59| |Ooarai deliberatly not put carbon on shark team| +|08/01/2022 08:42:59| |you cant really call the worst talk fielded in the show a jobber| +|08/01/2022 08:43:00| |CONTACT FRONT| +|08/01/2022 08:43:03| |MG42 NOISES| +|08/01/2022 08:43:05| brrrrrr +|08/01/2022 08:43:06| |SAYONARA TOTSUGEKI!| +|08/01/2022 08:43:10| TOTSUGEKI +|08/01/2022 08:43:10| |BYE TOTSUGEKI| +|08/01/2022 08:43:11| さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃 +|08/01/2022 08:43:11| TOTSUGEKI +|08/01/2022 08:43:11| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:43:13| SAYONARA +|08/01/2022 08:43:14| |SAYONARA TOTSUGEKI| +|08/01/2022 08:43:18| SAYOUNARA +|08/01/2022 08:43:19| |SAYONARA TOTSUGEKI| +|08/01/2022 08:43:20| NYA +|08/01/2022 08:43:20| |Really good tactics from Chihatan| +|08/01/2022 08:43:22| |ROID RAGE| +|08/01/2022 08:43:23| |SAYONARA TOTSUGEKI| +|08/01/2022 08:43:24| |FUCK AND SAYONARA| +|08/01/2022 08:43:26| |NEET STRONK| +|08/01/2022 08:43:27| |imagine ryona sex with anteater| +|08/01/2022 08:43:28| TAEKO +|08/01/2022 08:43:29| |NEKONYA HOURS| +|08/01/2022 08:43:32| |man watching Senshado live must be boring as shit if it can last so long| +|08/01/2022 08:43:36| BUG +|08/01/2022 08:43:37| |how many nukes would you send to australia, 1, 2, 10, 20, 100?| +|08/01/2022 08:43:37| |IMAGINE THE SMELL| +|08/01/2022 08:43:38| |SWEATY RABBIT TANK| +|08/01/2022 08:43:39| >women +|08/01/2022 08:43:39| |SWEATY SEX| +|08/01/2022 08:43:39| |BUNNY SWEAT UOHHHHHH| +|08/01/2022 08:43:41| | NAM TACTICS| +|08/01/2022 08:43:43| |this one went 14 hours| +|08/01/2022 08:43:46| |as many as it takes| +|08/01/2022 08:43:48| |fuck the tropics| +|08/01/2022 08:43:48| |tard wrangler| +|08/01/2022 08:43:50| |Imagine Nekonyaa angry sex| +|08/01/2022 08:43:50| |AZUSA TARD WRANGLER| +|08/01/2022 08:43:50| |one for each melbourne and canberra| +|08/01/2022 08:43:52| |all of them to Australia| +|08/01/2022 08:43:54| |SEVERAL HOURS LATER| +|08/01/2022 08:43:55| |Boob map| +|08/01/2022 08:43:56| |>Azusa being competent again| +|08/01/2022 08:44:00| |How many danmaku?| +|08/01/2022 08:44:04| FLOOF +|08/01/2022 08:44:07| |Jungle tanks screaming jungle war cries while charging you. Scary.| +|08/01/2022 08:44:08| 1 +|08/01/2022 08:44:13| 2 +|08/01/2022 08:44:14| |SET THE TREES ON FIRE FLUSH EM OOOOUT| +|08/01/2022 08:44:20| |jungle warfare bros| +|08/01/2022 08:44:25| |IT AINT ME| +|08/01/2022 08:44:25| WAR +|08/01/2022 08:44:25| |how many danmaku countfag| +|08/01/2022 08:44:26| |cute andou| +|08/01/2022 08:44:31| |IT AINT ME IT AINT ME| +|08/01/2022 08:44:31| |Bataan death march when??| +|08/01/2022 08:44:32| |WAR NEVER CHANGES| +|08/01/2022 08:44:36| |Cute andou raincoat| +|08/01/2022 08:44:40| |>you will never bathe with Marie| +|08/01/2022 08:44:40| |a rose bath| +|08/01/2022 08:44:41| |Fucking Marie| +|08/01/2022 08:44:41| |At least they don't paint their faces green like the trees| +|08/01/2022 08:44:43| |PAMPANGA TO TARLAC LETS WALK| +|08/01/2022 08:44:45| |IT AIN'T ME| +|08/01/2022 08:44:45| |unit 731 arc when???| +|08/01/2022 08:44:45| |marie's bath scene ToT| +|08/01/2022 08:44:45| |SEX WITH MARIE| +|08/01/2022 08:44:47| |GUPPIES IN THE MUD| +|08/01/2022 08:44:47| |God I love Marie| +|08/01/2022 08:44:47| |COUNTFAG WHERE THE FUCK ARE YOU| +|08/01/2022 08:44:48| WEW +|08/01/2022 08:44:49| |Imagine Maries bathwater| +|08/01/2022 08:44:52| mudddddddd +|08/01/2022 08:44:53| wew +|08/01/2022 08:44:53| |Why didn't they make the Americans do the jungle combat? Complete with PTSD?| +|08/01/2022 08:44:55| GANGURO +|08/01/2022 08:44:55| |das racis| +|08/01/2022 08:44:56| |sodoko if she nigger| +|08/01/2022 08:44:56| splish +|08/01/2022 08:44:58| MUDOKO +|08/01/2022 08:44:58| muddoko +|08/01/2022 08:44:58| |MARIE BATH SCENE WHEN| +|08/01/2022 08:45:05| |Andou too poor for an umbrella| +|08/01/2022 08:45:08| |cunny beauty practices| +|08/01/2022 08:45:09| |fluffy mechanics| +|08/01/2022 08:45:10| |I CAN COVER YOUR FACE WITH SOME "MINERALS"| +|08/01/2022 08:45:16| |HUKBALAHAP ARC WHEN | +|08/01/2022 08:45:20| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:45:20| |Fat fuck| +|08/01/2022 08:45:22| |>french "tanks"| +|08/01/2022 08:45:23| |me as the pond| +|08/01/2022 08:45:24| |FLIPS GO HOME| +|08/01/2022 08:45:25| |Anon your cum isn't supposed to be brown| +|08/01/2022 08:45:28| POI +|08/01/2022 08:45:33| |mallards can't swim!| +|08/01/2022 08:45:36| |We been through every kind of rain there is.| +|08/01/2022 08:45:43| |se no| +|08/01/2022 08:45:43| | Little bitty stingin' rain and big ol' fat rain, Rain that flew in sideways.| +|08/01/2022 08:45:46| |based porsche| +|08/01/2022 08:45:46| |Se no| +|08/01/2022 08:45:47| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/?| +|08/01/2022 08:45:47| |sodoko stuck| +|08/01/2022 08:45:49| GANBARE +|08/01/2022 08:45:49| doping? +|08/01/2022 08:45:50| DOPING +|08/01/2022 08:45:50| |/o/ where we at| +|08/01/2022 08:45:51| | And sometimes rain even seemed to come straight up from underneath. | +|08/01/2022 08:45:51| >DOPING +|08/01/2022 08:45:52| |NOS I NEED NOS| +|08/01/2022 08:45:56| |>when the water meth hits| +|08/01/2022 08:45:57| WEW +|08/01/2022 08:45:59| | Shoot, it even rained at night.| +|08/01/2022 08:46:00| |using doping| +|08/01/2022 08:46:00| ????????????? +|08/01/2022 08:46:02| |cute | +|08/01/2022 08:46:04| VTEC +|08/01/2022 08:46:04| |STRONK GUPPIES| +|08/01/2022 08:46:05| |YEAH JUST PUSH IT| +|08/01/2022 08:46:05| STRONG +|08/01/2022 08:46:07| |SEEE NOOOO| +|08/01/2022 08:46:07| |STRONG LOLIS| +|08/01/2022 08:46:09| |>mudwrestling with guppies| +|08/01/2022 08:46:09| |Is this where they drown in mud?| +|08/01/2022 08:46:09| |They need to mod their engine like Leopn and they'll be okay| +|08/01/2022 08:46:09| >pushing +|08/01/2022 08:46:10| |>pushing a tank| +|08/01/2022 08:46:11| |whatr two sodoclones gonna do| +|08/01/2022 08:46:12| DOPING? +|08/01/2022 08:46:16| |>German Army a few months into Barbarossa| +|08/01/2022 08:46:16| |Strong enough to push a 28 ton tank| +|08/01/2022 08:46:18| |RAMMING SPEED| +|08/01/2022 08:46:21| |MAKO NO| +|08/01/2022 08:46:21| |Sodoko and Pasomi bisected due to Mako's reckless driving| +|08/01/2022 08:46:21| |MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO | +|08/01/2022 08:46:24| |Mako has seen enough| +|08/01/2022 08:46:25| |Mako has decided to kill Sodoko| +|08/01/2022 08:46:25| |NICE JUMP| +|08/01/2022 08:46:26| |i-ii-is this| +|08/01/2022 08:46:27| Clean? +|08/01/2022 08:46:29| |sodoko is in orbit| +|08/01/2022 08:46:29| SodoPazo +|08/01/2022 08:46:29| 10/10 +|08/01/2022 08:46:30| JUMP +|08/01/2022 08:46:31| |>doesn't even fucking slow down| +|08/01/2022 08:46:32| hop +|08/01/2022 08:46:33| sugoi +|08/01/2022 08:46:34| JOMP +|08/01/2022 08:46:35| |JUMP GOOD| +|08/01/2022 08:46:35| |Those girls are so dirty down there | +|08/01/2022 08:46:35| |BREAK ORBIT| +|08/01/2022 08:46:36| |subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subt| +|08/01/2022 08:46:38| |FLYING CHILD| +|08/01/2022 08:46:38| KECHI +|08/01/2022 08:46:39| Lesbianas +|08/01/2022 08:46:40| |now kiss| +|08/01/2022 08:46:40| |now kiss| +|08/01/2022 08:46:42| SEX +|08/01/2022 08:46:42| /u/ +|08/01/2022 08:46:42| DAME +|08/01/2022 08:46:43| |She saw her chance, she had to take it| +|08/01/2022 08:46:45| | carbon caoting| +|08/01/2022 08:46:46| |THE NEGOTIATOR| +|08/01/2022 08:46:47| kecchi.. +|08/01/2022 08:46:47| KEIICHI +|08/01/2022 08:46:49| TOTSUGEKI? +|08/01/2022 08:46:49| SUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEX +|08/01/2022 08:46:52| TOTSUGEKI +|08/01/2022 08:46:52| TOTSUGEKI +|08/01/2022 08:46:53| |/u/-chads keep winning| +|08/01/2022 08:46:55| TOTSUGEKI +|08/01/2022 08:46:56| BAKAS +|08/01/2022 08:46:57| |/u/fags >>>/out/| +|08/01/2022 08:46:57| |Mako going for the friendly fire| +|08/01/2022 08:46:58| Totsugeki? +|08/01/2022 08:46:59| SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX +|08/01/2022 08:47:00| |ITS IN THE NAME| +|08/01/2022 08:47:01| |SHUT THE FUCK UP HOSOMI| +|08/01/2022 08:47:01| |SOMEON SHUT HOSOMI UP| +|08/01/2022 08:47:02| Sasuga +|08/01/2022 08:47:03| |Baka da na, hosomi!| +|08/01/2022 08:47:04| |Remote CHARGE| +|08/01/2022 08:47:05| |YEAH HOSOME YOU RETARD| +|08/01/2022 08:47:05| TOTSUGEKI +|08/01/2022 08:47:06| TOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSU +|08/01/2022 08:47:06| TOTSUGECCHI +|08/01/2022 08:47:10| |REMOTE TOTSUGEKI| +|08/01/2022 08:47:13| |shut the fuck up hosomi| +|08/01/2022 08:47:14| |AHHHHHHHHHHHHHHHHHHHHHHHHHH SEEEEEEEEEEEEEEEEEEEEEEEEEEEEKUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| +|08/01/2022 08:47:15| 遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃 +|08/01/2022 08:47:16| |cute child| +|08/01/2022 08:47:23| UOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 08:47:27| |Japs coping by rewriting history| +|08/01/2022 08:47:30| |TL Note: "Anzu" means "SEX".| +|08/01/2022 08:47:32| >anzu +|08/01/2022 08:47:34| |Thanks TL| +|08/01/2022 08:47:36| |thanks TL| +|08/01/2022 08:47:36| >SEX +|08/01/2022 08:47:36| |thanks, TL| +|08/01/2022 08:47:36| |>bite on them and wear them down Lews| +|08/01/2022 08:47:37| |THANKS TL| +|08/01/2022 08:47:38| Anzu +|08/01/2022 08:47:39| |Anzu's cooking!| +|08/01/2022 08:47:43| |WE HUNDRED MILLION WILL DIE LIKE SHATTERED JEWELS| +|08/01/2022 08:47:46| |TL DR LET'S DRAG THEM TO A MUDFIGHT| +|08/01/2022 08:47:48| |girls und yurukyan| +|08/01/2022 08:47:52| |Azusa always on guard| +|08/01/2022 08:47:52| |the hip flexibility on these girls| +|08/01/2022 08:47:56| |>singapore campaign | +|08/01/2022 08:48:03| |anzu eating my fermentized sperm| +|08/01/2022 08:48:03| sip +|08/01/2022 08:48:06| |cool bird| +|08/01/2022 08:48:08| |nice birb| +|08/01/2022 08:48:09| HOOT +|08/01/2022 08:48:09| |SUPERB OWL| +|08/01/2022 08:48:10| |MUH SIPPY CUP| +|08/01/2022 08:48:11| |>tank milk| +|08/01/2022 08:48:12| |Time for OST| +|08/01/2022 08:48:13| |KINO SCENE INCOMING| +|08/01/2022 08:48:13| とつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげき +|08/01/2022 08:48:13| |it's called an owl| +|08/01/2022 08:48:15| |weird Aussie noises| +|08/01/2022 08:48:17| |BIG BALLS| +|08/01/2022 08:48:20| |INCOMING KINO| +|08/01/2022 08:48:20| |>During the Burma Campaign, soldiers used to march without trousers due to rampant dyssentary| +|08/01/2022 08:48:21| |RICE BAWLS| +|08/01/2022 08:48:21| SCARED +|08/01/2022 08:48:21| |LIFE GOES ON DAY AFTER DAY AFTER DAY AFTER....| +|08/01/2022 08:48:22| Guadalcanal +|08/01/2022 08:48:22| totsugeki? +|08/01/2022 08:48:25| [SCARED] +|08/01/2022 08:48:26| RABASAN! +|08/01/2022 08:48:27| |fukuda is scared| +|08/01/2022 08:48:29| |do they really eat ntohing but rice balls and crackers?| +|08/01/2022 08:48:29| |JELLY DONUT!~| +|08/01/2022 08:48:31| |Owls are unironically evil| +|08/01/2022 08:48:34| |WE EVEN HAVE TIGERs| +|08/01/2022 08:48:36| |WARERA WA | +|08/01/2022 08:48:37| |cute onahole| +|08/01/2022 08:48:37| |Mako night mode activated| +|08/01/2022 08:48:38| >nips +|08/01/2022 08:48:38| CUTE +|08/01/2022 08:48:39| |Don't leave the boat| +|08/01/2022 08:48:40| cute +|08/01/2022 08:48:45| kinoSong.mp3 +|08/01/2022 08:48:46| |UTOU KA?| +|08/01/2022 08:48:46| RABASAN +|08/01/2022 08:48:47| |Isn't she based off the one Jap tank commander that wasn't retarded?| +|08/01/2022 08:48:48| SINGING +|08/01/2022 08:48:48| HAHAHA +|08/01/2022 08:48:49| |Kino time| +|08/01/2022 08:48:49| |HA HA HA| +|08/01/2022 08:48:50| HAHAHA +|08/01/2022 08:48:52| RABASAAAAAAAANNNNNNN +|08/01/2022 08:48:53| singing? +|08/01/2022 08:48:55| |! BANGER ALERT !| +|08/01/2022 08:48:56| KINO +|08/01/2022 08:48:56| |banger alert| +|08/01/2022 08:48:58| |nightbattle is code for sex in kancolle fanart| +|08/01/2022 08:48:58| |KINO INCOMING| +|08/01/2022 08:48:58| KINO +|08/01/2022 08:49:00| RABAA +|08/01/2022 08:49:00| |BASED NIPS| +|08/01/2022 08:49:00| |HELL YA SONG| +|08/01/2022 08:49:02| RABASAN! +|08/01/2022 08:49:02| |WARERA WA CHIHATAN KOI MONO SHIRAZU| +|08/01/2022 08:49:02| YOIIIIIIIIIIII +|08/01/2022 08:49:03| |KINO JAPANESE IMPERIALIST WAR SONGS| +|08/01/2022 08:49:03| ラバさん +|08/01/2022 08:49:04| |TOTSUGEKI ANTHEM STAND UP| +|08/01/2022 08:49:04| |TOTSUGEKI: THE MUSICAL| +|08/01/2022 08:49:07| |geime me a caguama| +|08/01/2022 08:49:08| |KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 08:49:10| KITAAAAA +|08/01/2022 08:49:11| |WAREWA WA CHIHATAN| +|08/01/2022 08:49:13| KINO +|08/01/2022 08:49:13| |WARERA WA CHIHATAN| +|08/01/2022 08:49:13| |sing along, folks| +|08/01/2022 08:49:13| KITA +|08/01/2022 08:49:14| |KINO ON THE MENU BOYS| +|08/01/2022 08:49:15| CHIHATAN!!!! +|08/01/2022 08:49:16| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:16| |KINO MOMENT| +|08/01/2022 08:49:17| |Warerawa chihatan| +|08/01/2022 08:49:18| |KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 08:49:19| |WAREWA WA CHIHATAN| +|08/01/2022 08:49:19| |Imperial Japan songs are kino| +|08/01/2022 08:49:19| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:20| |\o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:49:20| |The trees can sing now? Scary.| +|08/01/2022 08:49:20| |INOCHI SHIRAZU| +|08/01/2022 08:49:21| YOMOOOOOOOO +|08/01/2022 08:49:22| |VOLUME UP| +|08/01/2022 08:49:24| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:49:27| kino +|08/01/2022 08:49:27| |KINO KINO KINO KINO KION KINO| +|08/01/2022 08:49:28| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:28| |NORE NOREEEE| +|08/01/2022 08:49:29| |NORE NORE SENSHA NI NORE| +|08/01/2022 08:49:30| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 08:49:30| KINO +|08/01/2022 08:49:30| KINO +|08/01/2022 08:49:31| BANZAI!!! +|08/01/2022 08:49:32| \o/ +|08/01/2022 08:49:32| |\o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:49:33| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:34| RABA-SAN +|08/01/2022 08:49:36| |BROS THE TREES ARE SINGING IN JAPANESE IM SCARED| +|08/01/2022 08:49:37| RABASAN +|08/01/2022 08:49:38| |not as kino as frogs| +|08/01/2022 08:49:39| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 08:49:40| |I FEEL THE POWER OF TOTSUGEKI| +|08/01/2022 08:49:41| BANZAI!!!!!! +|08/01/2022 08:49:41| きのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきの +|08/01/2022 08:49:42| |Imagine riding into Nanking with this song basting| +|08/01/2022 08:49:43| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:43| RUBBA-SAN +|08/01/2022 08:49:43| |KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 08:49:44| |BANGER ALERT! BANGER ALERT!| +|08/01/2022 08:49:46| |Bad trees. Scary singing. | +|08/01/2022 08:49:48| |\o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:49:49| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:50| きの +|08/01/2022 08:49:50| |KINO ALERT| +|08/01/2022 08:49:51| |god this soothes my heart so much| +|08/01/2022 08:49:52| |>no karaoke| +|08/01/2022 08:49:53| |TOTSUGEKI IN MY VEINS!| +|08/01/2022 08:49:53| |TOTSUGEKI SONG| +|08/01/2022 08:49:55| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 08:49:56| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:49:56| |note: I am the lover| +|08/01/2022 08:49:58| |KOWAI MONO SHIRAZUUUUUUUUUU| +|08/01/2022 08:49:58| |>ywn ride tanks and sing with the boys| +|08/01/2022 08:49:58| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:50:00| きのきのきのきのきの +|08/01/2022 08:50:01| CHIHATAN +|08/01/2022 08:50:03| BANZAI!!!! +|08/01/2022 08:50:03| |\o/ CHI HA TA N| +|08/01/2022 08:50:04| |STEEL OXEN!| +|08/01/2022 08:50:06| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:50:08| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 08:50:09| |NORE NORE TETSUGYUU NI NOTTE| +|08/01/2022 08:50:11| |why couldn't they get a real life song for this| +|08/01/2022 08:50:12| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:50:12| |NORE NORE TETSUGYUU NI NOTTEEEEEEEEEEE| +|08/01/2022 08:50:14| BANZAIIIIIIIIIIIIIIII +|08/01/2022 08:50:15| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:50:16| RABASAN +|08/01/2022 08:50:16| RABASAN +|08/01/2022 08:50:16| |I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOR| +|08/01/2022 08:50:17| |At least it's not finnish singing in the jungles| +|08/01/2022 08:50:18| BANZAI!!!! +|08/01/2022 08:50:20| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:50:20| BANBANZAI +|08/01/2022 08:50:21| どこにいるの~ +|08/01/2022 08:50:22| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:50:25| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:50:27| |TL NOTE: The "beloved" is me| +|08/01/2022 08:50:27| |NORE NOOORE| +|08/01/2022 08:50:27| |THESE GIRLS HAVE KILLED THOUSANDS OF CHINESE CIVILIANS| +|08/01/2022 08:50:27| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/| +|08/01/2022 08:50:28| |\o/ \o/ \o/ \o/ \o/ \o/ raba san is a lucky raba| +|08/01/2022 08:50:30| |\O/ TENNO HEIKA BANZAI \O/| +|08/01/2022 08:50:32| THAT +|08/01/2022 08:50:33| |NORHT KOREA BEST KOREA| +|08/01/2022 08:50:33| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:50:35| |NAGURA and her huge forehead| +|08/01/2022 08:50:36| >THAT +|08/01/2022 08:50:39| THAT?! +|08/01/2022 08:50:40| THAT +|08/01/2022 08:50:40| |JAPAN DID NOTHING WRONG| +|08/01/2022 08:50:40| |T H A T| +|08/01/2022 08:50:43| THAT +|08/01/2022 08:50:43| |Ah yes THAT| +|08/01/2022 08:50:44| THAT!? +|08/01/2022 08:50:45| |mako is a creature of the night| +|08/01/2022 08:50:45| |>ch*nese "people"| +|08/01/2022 08:50:46| *THAT* +|08/01/2022 08:50:46| |based /his/| +|08/01/2022 08:50:46| THAT +|08/01/2022 08:50:47| |Imperial Japan was kino, Props to them trying to take on westerners in war despite being retarded. | +|08/01/2022 08:50:48| |hana ded| +|08/01/2022 08:50:48| that +|08/01/2022 08:50:49| |Waku waku| +|08/01/2022 08:50:50| suyaa~ +|08/01/2022 08:50:53| |MAKO IS WIRED AS FUCK| +|08/01/2022 08:50:55| |That? you mean war crimes?| +|08/01/2022 08:50:55| |mako is literally me| +|08/01/2022 08:50:57| |NOO, Nishi, don't read THAT| +|08/01/2022 08:50:57| |SHINYU DATTA| +|08/01/2022 08:50:58| |literally me| +|08/01/2022 08:51:01| spooky +|08/01/2022 08:51:01| |Pulling out the TK doujins I see| +|08/01/2022 08:51:02| |LIterally me| +|08/01/2022 08:51:02| |I am the night. -Mako| +|08/01/2022 08:51:03| AAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:51:03| Doppaganga +|08/01/2022 08:51:04| |I HATE CHINA I HATE KOREA I HATE SEA I HATE RUSSIA I HATE CHINA I HATE KOREA I HATE SEA I HATE RUSSIA I HATE CHINA I HATE KOREA I HATE SEA I| +|08/01/2022 08:51:04| DOPELGANGERRRR +|08/01/2022 08:51:05| DOPPELGÄNGER +|08/01/2022 08:51:05| KOWAI +|08/01/2022 08:51:06| |MAKO WOKE AF| +|08/01/2022 08:51:07| Kek +|08/01/2022 08:51:08| spooky +|08/01/2022 08:51:08| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:51:09| |Mako's batman| +|08/01/2022 08:51:11| |You where merely raised by the darkness| +|08/01/2022 08:51:13| Scaredoko +|08/01/2022 08:51:14| RETARD +|08/01/2022 08:51:14| |>SLIM RIVER| +|08/01/2022 08:51:14| |Aren't countries cutest when they're almost retarded?| +|08/01/2022 08:51:15| |Twin Peaks| +|08/01/2022 08:51:17| |If you ask me they didn't kill nearly enough chinks| +|08/01/2022 08:51:17| kek +|08/01/2022 08:51:17| w +|08/01/2022 08:51:20| ZONBI +|08/01/2022 08:51:22| |Rabbit team is evolving | +|08/01/2022 08:51:23| |are red light flashlights tank equpment?| +|08/01/2022 08:51:24| DEATH +|08/01/2022 08:51:27| |Cool croc| +|08/01/2022 08:51:28| wani +|08/01/2022 08:51:28| WANI +|08/01/2022 08:51:28| wani +|08/01/2022 08:51:31| UUUU +|08/01/2022 08:51:31| |SNAAAKE EATERRR| +|08/01/2022 08:51:31| WANI +|08/01/2022 08:51:32| WANI +|08/01/2022 08:51:33| |The crocodiles are speaking Japanese| +|08/01/2022 08:51:34| Erika... +|08/01/2022 08:51:34| |flag da| +|08/01/2022 08:51:34| wani? +|08/01/2022 08:51:35| WANI +|08/01/2022 08:51:35| |kill the wani| +|08/01/2022 08:51:36| |WANI LOOK OUT| +|08/01/2022 08:51:36| EEEEEEERRRRRRRIIIIIKKKKKKKAAAAAAAAA +|08/01/2022 08:51:37| WANI +|08/01/2022 08:51:37| erika? +|08/01/2022 08:51:37| |red flashlights don't kill your nightvision| +|08/01/2022 08:51:39| OBVIOUS +|08/01/2022 08:51:40| |GET OUT OF HERE ERIKA| +|08/01/2022 08:51:41| |Time to break out the tanker chocolate| +|08/01/2022 08:51:41| |JAPS IN THE WIRE| +|08/01/2022 08:51:42| |I'M STILL IN A DREAM... SNAKE EATER!| +|08/01/2022 08:51:42| >FLORIDA +|08/01/2022 08:51:43| |LOOK OUT| +|08/01/2022 08:51:43| |Bit big?| +|08/01/2022 08:51:44| |OH SHIT| +|08/01/2022 08:51:45| AAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:51:45| |Crocidiles eating japs 1945 colorized| +|08/01/2022 08:51:47| |THEY FALL FOR THIS| +|08/01/2022 08:51:47| sus +|08/01/2022 08:51:48| |BASED BGM| +|08/01/2022 08:51:49| DRUMS +|08/01/2022 08:51:50| |>no pen| +|08/01/2022 08:51:52| |how did azusa know>| +|08/01/2022 08:51:53| |IT'S HUGE| +|08/01/2022 08:51:55| |BEAT TO QUARTERS| +|08/01/2022 08:51:55| WANIZILLA +|08/01/2022 08:51:58| |Azusa has more than 3 braincells| +|08/01/2022 08:51:59| |Azusa is very smart| +|08/01/2022 08:51:59| |What's Erika doing here?| +|08/01/2022 08:52:01| TOKAN! +|08/01/2022 08:52:03| |nice angling| +|08/01/2022 08:52:04| |there's been a 10 meter saltwater croc once| +|08/01/2022 08:52:04| TOKKAN +|08/01/2022 08:52:05| |What the fuck the entire fucking tanks was underneath| +|08/01/2022 08:52:05| 吶喊 +|08/01/2022 08:52:07| |When the tank is a boat.| +|08/01/2022 08:52:08| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:52:08| TOKKAN +|08/01/2022 08:52:09| |ERIKA IS SO FUCKING WET RN WATCHING THIS| +|08/01/2022 08:52:09| |THEY MISSED A SLOW MOVING AMPHIBIOUS TARGET | +|08/01/2022 08:52:10| |BAKAS IN THE TREES BAKAS IN THE TREES| +|08/01/2022 08:52:11| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:52:12| BANZAI +|08/01/2022 08:52:13| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:52:14| NIGGERO +|08/01/2022 08:52:14| |How fucking big was the wani| +|08/01/2022 08:52:14| |I wish I had more than 3 braincells| +|08/01/2022 08:52:16| TAKUSAN +|08/01/2022 08:52:16| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:52:22| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:52:25| |GLORY TO NIPPON!!| +|08/01/2022 08:52:25| |THEY ARE IN THE FUCKING TREES| +|08/01/2022 08:52:25| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/| +|08/01/2022 08:52:26| |Now you telling me crocodiles can climb trees and speak jungle Japanese?| +|08/01/2022 08:52:30| 足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +|08/01/2022 08:52:31| |FUCKING SEATANKS| +|08/01/2022 08:52:33| |Interior crocodile alligator. I drive a Chevrolet movie theater.| +|08/01/2022 08:52:35| |those kami are hella durable too| +|08/01/2022 08:52:35| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:52:36| 足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +|08/01/2022 08:52:38| |just don't join Ooarai, Anzio or Chihatan and you'll be fine| +|08/01/2022 08:52:39| Ew +|08/01/2022 08:52:40| 足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +|08/01/2022 08:52:41| |are these tanks real| +|08/01/2022 08:52:42| |I HAVE TO PISS SO BADLY| +|08/01/2022 08:52:44| |go home GI| +|08/01/2022 08:52:45| 足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +|08/01/2022 08:52:47| |GLORY TO NIPPON!!| +|08/01/2022 08:52:49| |Welcome to the rice fields motherfucker | +|08/01/2022 08:52:51| |SUPREME CHAMPION| +|08/01/2022 08:52:51| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:52:51| |stop the moonrune spam| +|08/01/2022 08:52:55| |NIPPON BANZAI| +|08/01/2022 08:53:11| きの +|08/01/2022 08:53:15| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:53:16| KIMO +|08/01/2022 08:53:17| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/ \o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:53:18| |That’s a weird looking tank| +|08/01/2022 08:53:19| |ROOSEVELT EATS SHIT| +|08/01/2022 08:53:19| kaijubros +|08/01/2022 08:53:23| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:53:23| |both are japan| +|08/01/2022 08:53:25| |Duck came back| +|08/01/2022 08:53:31| |HIPPO BROS| +|08/01/2022 08:53:32| |STUG LIFE| +|08/01/2022 08:53:33| "carbon" +|08/01/2022 08:53:38| |NONBIRI TOTSUGEKI| +|08/01/2022 08:53:38| |NONBIRI TOTSUGEKI!| +|08/01/2022 08:53:41| |nonbiri totsugeki| +|08/01/2022 08:53:46| |the (((kappa))) cries in pain as it shoots you| +|08/01/2022 08:53:46| |NONBIRI TOTSUGEKI| +|08/01/2022 08:53:48| |NONBIRI TOSUGEKI| +|08/01/2022 08:53:50| |ALL UNITS SNCHRONIZE YOUR PISS| +|08/01/2022 08:53:50| のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃 +|08/01/2022 08:53:51| |THEY ACTUALLY SURVIVE THIS| +|08/01/2022 08:53:56| |still not disable after shaving top half| +|08/01/2022 08:53:59| (ding) +|08/01/2022 08:54:00| のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃 +|08/01/2022 08:54:03| |NON NON BIYORI TOTSUGEKI?| +|08/01/2022 08:54:03| MAAAAAADA +|08/01/2022 08:54:05| mada +|08/01/2022 08:54:08| |MADA MADA MADA| +|08/01/2022 08:54:09| UTE +|08/01/2022 08:54:09| |MADA MADA MADA MADA| +|08/01/2022 08:54:09| maaaaada +|08/01/2022 08:54:11| UTE!!! +|08/01/2022 08:54:11| ute +|08/01/2022 08:54:12| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TE| +|08/01/2022 08:54:12| TTE +|08/01/2022 08:54:12| TEEEEEEE +|08/01/2022 08:54:14| TEEEEEE +|08/01/2022 08:54:14| |MADA MADA MADA | +|08/01/2022 08:54:16| |UTE UTE UTE| +|08/01/2022 08:54:19| |MADA MADA MADA....| +|08/01/2022 08:54:23| LAJA +|08/01/2022 08:54:23| RICOCHET +|08/01/2022 08:54:24| RAJAA +|08/01/2022 08:54:28| |how are they not all fucking dead| +|08/01/2022 08:54:30| leoponbros... +|08/01/2022 08:54:37| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/ TOTSUGEKI| +|08/01/2022 08:54:39| |GOKIGENYO TOTSUGEKI| +|08/01/2022 08:54:40| |GOKIGENYOU TOTSUGEKI| +|08/01/2022 08:54:41| TOTSUGEKI +|08/01/2022 08:54:43| キノ +|08/01/2022 08:54:45| TOTSUGEKI +|08/01/2022 08:54:46| |GOKIGENYOU TOTSUGEKI| +|08/01/2022 08:54:48| |GOKIGENYO TOTSUGEKI| +|08/01/2022 08:54:53| BRRRRRRRRRRRRRRRR +|08/01/2022 08:54:53| |GOKIGENYOU TOTSUGEKI| +|08/01/2022 08:54:54| |YEAH KILLEM| +|08/01/2022 08:54:56| |FOLLOW MY TRACERS| +|08/01/2022 08:55:01| |Powerful retards| +|08/01/2022 08:55:01| BRTBRTBRTBRTBRTBRTBRT +|08/01/2022 08:55:04| |fuck off captain america| +|08/01/2022 08:55:04| |Oh no Leopon, no more drift| +|08/01/2022 08:55:07| キノ キノキノキノキノキノキノ +|08/01/2022 08:55:09| |TOTO MY TYRES| +|08/01/2022 08:55:23| |Keep firing tracers until we burn this jungle down!| +|08/01/2022 08:55:26| 映画映画 +|08/01/2022 08:55:27| o7 +|08/01/2022 08:55:34| BANZAI +|08/01/2022 08:55:34| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:55:38| |DEEP REGRET| +|08/01/2022 08:55:40| Poorschebros... +|08/01/2022 08:55:41| |go home porsche| +|08/01/2022 08:55:42| |rip /oo/| +|08/01/2022 08:55:44| |SHAMEFUR DISPRAY| +|08/01/2022 08:55:47| チンポ +|08/01/2022 08:55:47| 前進 +|08/01/2022 08:55:48| |DEEP REGRET| +|08/01/2022 08:55:49| |Now the trees can charge? | +|08/01/2022 08:55:53| >Porsche +|08/01/2022 08:55:56| |OUR MEN ARE RUNNING FROM THE BATTLEFIELD| +|08/01/2022 08:55:58| |COMMIT SUDOUKO RIGHT NOW| +|08/01/2022 08:56:03| 前進あるのみ! +|08/01/2022 08:56:04| |HAMADA OUT| +|08/01/2022 08:56:07| |OUR MEN ARE WAVERING| +|08/01/2022 08:56:07| |Fuck i'm in the mood for some HOI4 now| +|08/01/2022 08:56:10| |I demand sodoko commit sodoko!| +|08/01/2022 08:56:12| |Thre trees can even swim? fuck this theater| +|08/01/2022 08:56:12| |sodoko already dieded| +|08/01/2022 08:56:13| 突撃前進 +|08/01/2022 08:56:17| Totsugeki! +|08/01/2022 08:56:19| TOTSUGEKIDEWANAIDAROU +|08/01/2022 08:56:20| WAKARAN +|08/01/2022 08:56:26| |Woah just like what Chihatan would do| +|08/01/2022 08:56:31| |>charging out of desperation. what did she mean by this?| +|08/01/2022 08:56:32| 皆目分からんwww +|08/01/2022 08:56:36| Chihatanbros... +|08/01/2022 08:56:40| |If the trees can fly, we all bouncing| +|08/01/2022 08:56:44| TUEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 08:56:46| |Chihatanbros we can do this!| +|08/01/2022 08:56:46| TEEEEEEEE +|08/01/2022 08:56:50| |OOARAIBROS DID WE GET TOO COCKY?| +|08/01/2022 08:56:50| UTE +|08/01/2022 08:56:51| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:56:51| TEEEE +|08/01/2022 08:56:53| kino +|08/01/2022 08:56:56| |oh shit the serious music| +|08/01/2022 08:56:58| BANZAI +|08/01/2022 08:57:03| |Ooarai is done for| +|08/01/2022 08:57:05| |Chihatan might actually win this| +|08/01/2022 08:57:05| 打てえええええええええええ +|08/01/2022 08:57:09| |OOARAI BROS....IT'S OVER| +|08/01/2022 08:57:10| |stralia a shit| +|08/01/2022 08:57:11| |KINO JUNGLE WARFARE| +|08/01/2022 08:57:13| |OORAI CHADS WE GOT TOO COCKY| +|08/01/2022 08:57:15| |WE HAVE THIS IN THE BAG CHIHABROS| +|08/01/2022 08:57:16| |time to buy chihatancoin| +|08/01/2022 08:57:17| |It's quiet. Too quiet.| +|08/01/2022 08:57:19| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 08:57:23| KONOOOO +|08/01/2022 08:57:30| |Ooarai forgot retards have retard strenght| +|08/01/2022 08:57:33| |>what the fuck am I reading?| +|08/01/2022 08:57:35| |it's a ruse!| +|08/01/2022 08:57:36| 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳  +|08/01/2022 08:57:39| |Good thing those commanders took their carbon supplements, would be bad if the MG rounds could actually hurt them| +|08/01/2022 08:57:42| |Chihatan needs bayonets That's what they're missing.| +|08/01/2022 08:57:43| |WAIT THIS ISN'T THE WAY TO ALBERQUEQUE| +|08/01/2022 08:57:44| |>is this bait?| +|08/01/2022 08:57:46| |THEY'RE EVEN FIRING TRACERS OUT OF DESPERATION! WE CAN DO IT!| +|08/01/2022 08:57:54| BRAKE! +|08/01/2022 08:57:54| |are we still in df2?| +|08/01/2022 08:57:55| |Chihatan needs kamikaze planes| +|08/01/2022 08:58:00| |based on what?| +|08/01/2022 08:58:00| >source? +|08/01/2022 08:58:01| |>DRIVE ME CLOSER, I WANT TO HIT THEM WITH MY SWORD| +|08/01/2022 08:58:02| yeah +|08/01/2022 08:58:03| Ohkas +|08/01/2022 08:58:03| |WE'VE REACHED DF6| +|08/01/2022 08:58:04| けく +|08/01/2022 08:58:04| |Just be good trees and follow the shiny tracers| +|08/01/2022 08:58:04| CURE +|08/01/2022 08:58:05| |I bet those tracer are just Glown in the Dark airsoft BBS LMAO| +|08/01/2022 08:58:23| |CHIHATANBROS THIS IS OUR YEAR| +|08/01/2022 08:58:26| |This cant be happening Chi ha tan bros...| +|08/01/2022 08:58:27| |No way Fukuda| +|08/01/2022 08:58:29| |oh no no no| +|08/01/2022 08:58:31| |OH NO!| +|08/01/2022 08:58:33| |LONG LIVE HIROHITO| +|08/01/2022 08:58:33| |OH NO| +|08/01/2022 08:58:34| |HOW COULD THIS HAPPEN TO US| +|08/01/2022 08:58:34| |Chihatan new protag school| +|08/01/2022 08:58:34| |it's over| +|08/01/2022 08:58:35| |OH NONONONO IS THIS IT CHIHATANBROS| +|08/01/2022 08:58:38| GAH +|08/01/2022 08:58:39| |WHAT THE FUCK I PUT $50000 ON CHIHATAN| +|08/01/2022 08:58:39| AAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:58:40| NIPPONBROS +|08/01/2022 08:58:41| |TOTSUGEKI BROS….| +|08/01/2022 08:58:42| ueh +|08/01/2022 08:58:43| |Nah nah, no trench, just shiny tracers| +|08/01/2022 08:58:43| |totsugeki straight to hell| +|08/01/2022 08:58:43| |Isn't this THEIR ship? how did they fall for that hill?| +|08/01/2022 08:58:44| |WHY DID THE AMPHIBIOUS TANK FOLLOW THEM ONTO LAND| +|08/01/2022 08:58:44| ueh +|08/01/2022 08:58:47| |FUKUDA NOOOOOOOOOOOO| +|08/01/2022 08:58:48| UEH +|08/01/2022 08:58:49| |did we... get too cocky....| +|08/01/2022 08:58:53| |CHIHTAN ACTUALLY SURVIVE THIS| +|08/01/2022 08:58:53| |I'M A GENIUS. OH NO!| +|08/01/2022 08:58:54| |MUDBROS... WE WIN AGAIN| +|08/01/2022 08:58:54| CHIHATANBROS.... +|08/01/2022 08:58:54| |>Know its a trap >Dont break| +|08/01/2022 08:58:55| |nice shot| +|08/01/2022 08:58:55| |oh great, she's dead| +|08/01/2022 08:58:56| |get miho'd| +|08/01/2022 08:58:56| |ooarai turn to miss a lot?| +|08/01/2022 08:58:58| |HOW DID YOU MISS| +|08/01/2022 08:58:59| |THE FOOLS DUG THEIR OWN GRAVE| +|08/01/2022 08:59:01| |IF CHI HA TAN MOVES ME AND MY FAMILY WILL MOVE TO NAGASAKI| +|08/01/2022 08:59:06| |time for the gangbang| +|08/01/2022 08:59:10| |Ooarai is finally on the jobbing block| +|08/01/2022 08:59:11| retard +|08/01/2022 08:59:12| |HOW DID YOU MISS| +|08/01/2022 08:59:14| BANZAAAAAAAAAAAAIIIIIIIIIIIIII +|08/01/2022 08:59:14| |>everyone on oorai suddenly miss every shot| +|08/01/2022 08:59:15| |Look at us, We the trees now| +|08/01/2022 08:59:18| |TIME TO GET BOKO'D| +|08/01/2022 08:59:19| |IT'S OVER CHIHATAN WE HAVE THE HIGH GROUND| +|08/01/2022 08:59:21| |CUTE TURN| +|08/01/2022 08:59:22| SPIN +|08/01/2022 08:59:23| |Nobody in Ooarai can aim| +|08/01/2022 08:59:24| dab +|08/01/2022 08:59:25| >spin +|08/01/2022 08:59:26| SPIIIIIN +|08/01/2022 08:59:27| |RIP TO THE BRO WHO BET AGAINST ORORAI | +|08/01/2022 08:59:27| MAWARE +|08/01/2022 08:59:27| |revenge for the bridge scene| +|08/01/2022 08:59:28| |HOSOMI SPIN| +|08/01/2022 08:59:29| spiiin +|08/01/2022 08:59:30| |MAWARI MIGI| +|08/01/2022 08:59:33| |aussies where they should be| +|08/01/2022 08:59:33| |DONUT SPIN| +|08/01/2022 08:59:34| totsugeki? +|08/01/2022 08:59:34| 回レ +|08/01/2022 08:59:34| |Just drop the nukes already| +|08/01/2022 08:59:37| |Insufficient gun depression| +|08/01/2022 08:59:39| |Even worse aim than the French| +|08/01/2022 08:59:41| TSTSUGEKI +|08/01/2022 08:59:45| |the fools, the trench is too deep, their gun depression can't go that deep| +|08/01/2022 08:59:48| 万歳 万歳 万歳 万歳  +|08/01/2022 08:59:50| TOTSUGEKI +|08/01/2022 08:59:52| ! +|08/01/2022 08:59:53| |COME HOME YELLOWMAN| +|08/01/2022 08:59:53| |WHAT THE FUCK| +|08/01/2022 08:59:53| |lil retarts trynna glitchiong through the wall| +|08/01/2022 08:59:53| WHAT +|08/01/2022 08:59:54| !! +|08/01/2022 08:59:54| WTF +|08/01/2022 08:59:55| NANI +|08/01/2022 08:59:55| !!!!!!!!!!!!!!!!!! +|08/01/2022 08:59:56| |I thought Hana was supposed to be a great gunner?| +|08/01/2022 08:59:58| :O +|08/01/2022 08:59:58| 前進あるのみ! +|08/01/2022 08:59:58| NANI +|08/01/2022 08:59:58| NANI?!?!?! +|08/01/2022 08:59:58| |TETTAI DATTO!?| +|08/01/2022 08:59:59| ! +|08/01/2022 08:59:59| |WHAT THE FUCK| +|08/01/2022 09:00:00| ??????????????? +|08/01/2022 09:00:00| !!!!!!!!!!!!! +|08/01/2022 09:00:01| |THEY ARE STATIONARY| +|08/01/2022 09:00:01| !!!!!!!!!!!!!!!!! +|08/01/2022 09:00:01| MASAKA +|08/01/2022 09:00:01| HUH? +|08/01/2022 09:00:02| |WTF DID SHE JUST SAY| +|08/01/2022 09:00:03| |NISHI WAS EXECUTED THE NEXT DAY| +|08/01/2022 09:00:04| D: +|08/01/2022 09:00:04| ?! +|08/01/2022 09:00:04| |FUKUDA YOU RAT! WE WEREN'T CHARGING! YOU GAVE ME THE OL' SPICY RETREAT! HOW COULD YOU GIVE YOUR OWN SISTERS THE OL' SPICY RETREAT?!| +|08/01/2022 09:00:05| 撤退?!?! +|08/01/2022 09:00:06| NANI +|08/01/2022 09:00:06| |SHOOT THEM| +|08/01/2022 09:00:06| ??!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?! +|08/01/2022 09:00:06| TETTAI +|08/01/2022 09:00:06| ??????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 09:00:07| |Who charges a vertical slope?| +|08/01/2022 09:00:07| BAKANA +|08/01/2022 09:00:07| |DO NOT RETREAT| +|08/01/2022 09:00:08| TETTAI!? +|08/01/2022 09:00:08| ????????????????????????? +|08/01/2022 09:00:09| |SHAMEFUR DISPRAY| +|08/01/2022 09:00:11| |gun cant aim in to pit| +|08/01/2022 09:00:11| |WHY IS NOBODY FIRING| +|08/01/2022 09:00:12| |MEIJI REFORMS| +|08/01/2022 09:00:12| !?!?!?!?!?!?!?!?!?!?!?!?!?!?!"!?!??!?!?!?! +|08/01/2022 09:00:13| |no way| +|08/01/2022 09:00:13| ??????????????????????????????? +|08/01/2022 09:00:14| |how nice of Ooarai to stop their fire| +|08/01/2022 09:00:14| |time for nishi to shine| +|08/01/2022 09:00:14| |NO FUCKING WAY| +|08/01/2022 09:00:15| |>TALKING IS A FREE ACTION, PLZ DONT FIRE| +|08/01/2022 09:00:15| |Totsugekibros... ARE WE RETREATING?!| +|08/01/2022 09:00:16| |WHICH WAY EASTERN WOMAN?| +|08/01/2022 09:00:16| |posting in retreat| +|08/01/2022 09:00:17| |Uhhh oorai bros? Why haven't we won yet? They're trapped...| +|08/01/2022 09:00:19| |not very cash money| +|08/01/2022 09:00:19| |WHY ARE YOU RETREATING| +|08/01/2022 09:00:19| |SHAMEFURE DISPRAY| +|08/01/2022 09:00:20| |Tamada.exe has stopped working| +|08/01/2022 09:00:21| |what the fuck| +|08/01/2022 09:00:23| |HER SMILE AND TOTSUGEKI... GONE| +|08/01/2022 09:00:25| faint +|08/01/2022 09:00:25| O_O +|08/01/2022 09:00:25| |NO NO NO NO HECKIN CHI-HA BROS| +|08/01/2022 09:00:26| |RETROGRADE CHARGE| +|08/01/2022 09:00:26| |YOU HAVE A GUN THAT CAN REACH THEM| +|08/01/2022 09:00:27| UNBELIEVABLE +|08/01/2022 09:00:27| |DISHONURABRE PIGGU| +|08/01/2022 09:00:27| |TOTSUGEKI BROS NOT LIKE THISSSSSSSSSSSSSS| +|08/01/2022 09:00:32| ASS +|08/01/2022 09:00:33| |ANCESTORS CRTING| +|08/01/2022 09:00:34| |TAMADA HAD NEVER SEEN SUCH BULLSHIT| +|08/01/2022 09:00:34| |WHAT IS THIS RETREAT YOU SPEAK OFF?| +|08/01/2022 09:00:34| |No retreat. Just charge opposite direction| +|08/01/2022 09:00:34| |LETS GO CHIHATAN| +|08/01/2022 09:00:35| |SIMILE GONE| +|08/01/2022 09:00:36| |was zum teufel?| +|08/01/2022 09:00:37| |UNIT 731 DIDN'T EXIST| +|08/01/2022 09:00:37| |YOU CAN PENETRATE FROM ANY ANGLE| +|08/01/2022 09:00:38| VOLLEYBUTTS +|08/01/2022 09:00:39| |TAEKO IS CUTE| +|08/01/2022 09:00:41| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:00:44| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:00:46| |this is shameful...| +|08/01/2022 09:00:47| |They RAN| +|08/01/2022 09:00:47| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:00:48| Volleybut +|08/01/2022 09:00:48| |THEY ARE MOVING IN A STRAIGHT LINE| +|08/01/2022 09:00:51| DS3? +|08/01/2022 09:00:51| |kino line holy fuck| +|08/01/2022 09:00:52| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:00:52| |YEAR TIMESKIP| +|08/01/2022 09:00:53| PUSSIES +|08/01/2022 09:00:57| |2 YEAR TARNSITION| +|08/01/2022 09:00:58| |TWO YEARS LATER...| +|08/01/2022 09:00:58| |SHAMEFUR DISPRAY| +|08/01/2022 09:01:01| |TWO YEARS LATER| +|08/01/2022 09:01:02| |DF3 TIME HERE WE GO BROS| +|08/01/2022 09:01:05| 2019? +|08/01/2022 09:01:05| |2019 -> 2021| +|08/01/2022 09:01:06| |2 YEARS LATER| +|08/01/2022 09:01:06| |TWO YEARS LATER...| +|08/01/2022 09:01:07| |2 years in the blink of an eye...| +|08/01/2022 09:01:08| |TIME WARP| +|08/01/2022 09:01:09| |god they're all so fucking flat| +|08/01/2022 09:01:09| |It's been 2 years| +|08/01/2022 09:01:10| |Home stretch.| +|08/01/2022 09:01:10| LESSSSSSSSGOOOOOOOOOO +|08/01/2022 09:01:11| |10 hours in| +|08/01/2022 09:01:13| |two years bros | +|08/01/2022 09:01:14| |WOW THAT WAS FAST| +|08/01/2022 09:01:17| DS3 +|08/01/2022 09:01:19| |YOU KILLED TAMADA| +|08/01/2022 09:01:19| |THE FINAL STRETCH| +|08/01/2022 09:01:20| |CHIHATAN HAS BEEN ON THE RETREAT FOR TWO YEARS| +|08/01/2022 09:01:20| |i hope the frogs brought enough food for 2 years| +|08/01/2022 09:01:23| UOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 09:01:26| |Onion soup| +|08/01/2022 09:01:26| |marie erotic| +|08/01/2022 09:01:29| |>she got in the bath| +|08/01/2022 09:01:30| WEW +|08/01/2022 09:01:30| |3 movies for one match?| +|08/01/2022 09:01:30| LEWD +|08/01/2022 09:01:30| |LETS GO LAST HOUR| +|08/01/2022 09:01:31| |TIME IS CONVULUTED| +|08/01/2022 09:01:31| |motto keeki| +|08/01/2022 09:01:32| |We in the last part now?| +|08/01/2022 09:01:34| |how many anons are still standing?| +|08/01/2022 09:01:35| |UOOOOOOOOOOOOHHHHHH MARIE| +|08/01/2022 09:01:35| |Marie must be a prune by now| +|08/01/2022 09:01:35| OOOOUUUUUUUUUUHH +|08/01/2022 09:01:35| FATTY +|08/01/2022 09:01:36| |I have not slept in 25 hours| +|08/01/2022 09:01:36| |SHE'S FAT| +|08/01/2022 09:01:37| |she ate all 12 cakes| +|08/01/2022 09:01:39| |Does the fat bitch ever stop eating| +|08/01/2022 09:01:40| |LET HER EAT CARAMBER| +|08/01/2022 09:01:42| |So we're gonna get DF4 right after this, r-right?| +|08/01/2022 09:01:44| |delicious french soup| +|08/01/2022 09:01:44| |God i need to fuck Marie| +|08/01/2022 09:01:45| |I haven't seen this yet| +|08/01/2022 09:01:47| |Marie straight up not learning. Shame.| +|08/01/2022 09:01:47| |10 am, still awake| +|08/01/2022 09:01:49| |ONION CAKE| +|08/01/2022 09:01:50| |12 HOUR MOVIE| +|08/01/2022 09:01:50| |FORTY CAKES| +|08/01/2022 09:01:51| |AYE CARAMBAR| +|08/01/2022 09:01:55| STINKY +|08/01/2022 09:01:55| |still strong| +|08/01/2022 09:02:03| |9 AM| +|08/01/2022 09:02:04| |STILL GOING STRONG| +|08/01/2022 09:02:05| |HYPER MAKO| +|08/01/2022 09:02:06| |BERGELE TIEM :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:02:06| |10 hours on the stream still goin| +|08/01/2022 09:02:07| MILKSHAKE +|08/01/2022 09:02:08| kek +|08/01/2022 09:02:08| |MAKO IS FUCKING WIRED| +|08/01/2022 09:02:10| |NIGHT MODE ENABLED| +|08/01/2022 09:02:12| |DOES SHE TAKE HER COFFE BLACK| +|08/01/2022 09:02:13| 9AM +|08/01/2022 09:02:14| |i'm staying up all night tonight too...| +|08/01/2022 09:02:17| |time for a cheese sandwich?| +|08/01/2022 09:02:19| |Midnight here, how about you guys?| +|08/01/2022 09:02:21| |Mako is AWAKE!| +|08/01/2022 09:02:21| |VOLLEYBU CLUB STINKING IN THEIR TYPE-89 UOH| +|08/01/2022 09:02:24| 3AM +|08/01/2022 09:02:24| |EVEN THE GIRLS ARE STAY UP| +|08/01/2022 09:02:26| |Just give these girls panzerschokolade| +|08/01/2022 09:02:26| 19:00 +|08/01/2022 09:02:27| |2am here| +|08/01/2022 09:02:28| |2 AM HERE| +|08/01/2022 09:02:30| |tfw 10am| +|08/01/2022 09:02:30| |why do you have to do that?| +|08/01/2022 09:02:31| |3am bros where we at| +|08/01/2022 09:02:31| 8am +|08/01/2022 09:02:33| |just hit midnight lol| +|08/01/2022 09:02:34| |west coast report in| +|08/01/2022 09:02:35| Anzu +|08/01/2022 09:02:36| |9 am| +|08/01/2022 09:02:37| |3am | +|08/01/2022 09:02:38| |THE GUPPIES FEEL OUR PAIN| +|08/01/2022 09:02:39| |ITS 8 AM I'VE BEEN HERE FOR THE WHOLE THING| +|08/01/2022 09:02:41| |0900 | +|08/01/2022 09:02:41| |2 am| +|08/01/2022 09:02:41| |west coast ez| +|08/01/2022 09:02:41| |>12 hours since match started || >nearly 12 hours since stream started| +|08/01/2022 09:02:42| 1am +|08/01/2022 09:02:43| |SHUT UP MOMO| +|08/01/2022 09:02:44| |Just be Mako, Don't sleep at night.| +|08/01/2022 09:02:45| |COMMIEFORNIA TIME| +|08/01/2022 09:02:46| 12AM +|08/01/2022 09:02:46| |Wouldn't it be rabbit team eating cheese sandwiches| +|08/01/2022 09:02:46| |3am and going strong \o/| +|08/01/2022 09:02:47| |NO STOP TIME MOVING FORWARD REE| +|08/01/2022 09:02:49| |hah 3pm bitch| +|08/01/2022 09:02:50| |>tfw 4 pm asian supremacy| +|08/01/2022 09:02:53| |2am masterrace reportting in| +|08/01/2022 09:02:54| 3am +|08/01/2022 09:02:54| |EAST COAST BEST COAST| +|08/01/2022 09:02:57| |Wow anime mirrors real life anons| +|08/01/2022 09:02:57| |5 am| +|08/01/2022 09:02:57| |it me| +|08/01/2022 09:02:59| |2am help me| +|08/01/2022 09:03:00| |lover-san lover-san| +|08/01/2022 09:03:00| 3AMbros... +|08/01/2022 09:03:00| |GOD I WISH 'lover-san' WAS ME| +|08/01/2022 09:03:01| |12 am here :)| +|08/01/2022 09:03:01| |I WILL PROTECT YOU| +|08/01/2022 09:03:01| |no its me| +|08/01/2022 09:03:01| me +|08/01/2022 09:03:01| |Is it early morning in america or some other third world hellhole| +|08/01/2022 09:03:02| |4pm comfy weekend| +|08/01/2022 09:03:02| |momo should just suck it up and find a man| +|08/01/2022 09:03:04| LOVER-SAN +|08/01/2022 09:03:04| 8am +|08/01/2022 09:03:04| |5am here, didn't even want to watch the stream but| +|08/01/2022 09:03:05| |The entire fucking mudhole subplot was filler!| +|08/01/2022 09:03:06| SCARED +|08/01/2022 09:03:07| |RABU SAN| +|08/01/2022 09:03:10| |All me| +|08/01/2022 09:03:11| |why fukuda keep calling me| +|08/01/2022 09:03:12| |ESTCHADS CAN'T STOP WINNING| +|08/01/2022 09:03:12| |can you imagine sleeping| +|08/01/2022 09:03:13| |Its 8am and im working later| +|08/01/2022 09:03:14| |west coast midnight east coast who cares| +|08/01/2022 09:03:20| |3 AM in Eternally Superior Timezone| +|08/01/2022 09:03:21| |DESTROYING JAPANESE CULTURE | +|08/01/2022 09:03:23| |>working on saturday| +|08/01/2022 09:03:25| Tradbros.... +|08/01/2022 09:03:29| |im a genius| +|08/01/2022 09:03:32| |"WE WERE PRETENDING TO BE RETARDED" - NISHI| +|08/01/2022 09:03:32| >working +|08/01/2022 09:03:33| >working +|08/01/2022 09:03:33| |oh no| +|08/01/2022 09:03:35| |Lover-san is for everybody. Like Mr.Clean| +|08/01/2022 09:03:36| |rip weekend waggie| +|08/01/2022 09:03:39| |>all you have to do is kick in the door| +|08/01/2022 09:03:41| |IGNORE FLANK GET ANGLERFISH| +|08/01/2022 09:03:43| |Totsuegekibros did we get to cocky?| +|08/01/2022 09:03:49| |Just like IJA, tunnel vision on the wrong objectives| +|08/01/2022 09:03:52| |Totsubakas have a chance| +|08/01/2022 09:03:53| |... and the whole rotten structure collapses| +|08/01/2022 09:03:55| !! +|08/01/2022 09:04:00| |its finally over for ooarai| +|08/01/2022 09:04:03| |BAR NOISES| +|08/01/2022 09:04:04| |they just let the flag disappear| +|08/01/2022 09:04:04| |They were better when they were stupid| +|08/01/2022 09:04:04| |NIPPONCHADS WE GOT THIS| +|08/01/2022 09:04:04| |Ooraibros how could we blow that opportunity?| +|08/01/2022 09:04:05| |Work that should have been done yesterday but my other job called me in and you cant garden i the dark| +|08/01/2022 09:04:08| |>can't even hit a tree| +|08/01/2022 09:04:18| |OH GOD MY SKIN| +|08/01/2022 09:04:18| |FOLDED 731 TIMES| +|08/01/2022 09:04:19| |JANNIES BANNED ME FOR 3 DAYS I CAN'T POST MY NISHI PICS| +|08/01/2022 09:04:20| |ROID RAGE| +|08/01/2022 09:04:21| |Wow, Chi tan got actual tactics now.| +|08/01/2022 09:04:22| |I am getting fat watching| +|08/01/2022 09:04:22| SWOLE +|08/01/2022 09:04:23| |SWOLE | +|08/01/2022 09:04:23| |I like that Karina is always on the verge of a mental breakdown when driving| +|08/01/2022 09:04:27| |>staying up is wrong//steam up for last 11 hours| +|08/01/2022 09:04:29| |Whoa they're literally me| +|08/01/2022 09:04:37| |/fit/ + /k/| +|08/01/2022 09:04:38| |i want the neets to snap me in half| +|08/01/2022 09:04:39| |3day ban is nothing I'M FUCKING RANGEBANNED| +|08/01/2022 09:04:44| SNAIL +|08/01/2022 09:04:45| |FOLLOW MY TRACERS OOOOAJ| +|08/01/2022 09:04:46| |CAN'T SEE SHIT| +|08/01/2022 09:04:47| /akfit/ +|08/01/2022 09:04:49| |>He's rangebanned| +|08/01/2022 09:04:51| |I dont care about my skin I want to see gupies | +|08/01/2022 09:04:52| |cute yukari| +|08/01/2022 09:04:54| |MIHO HAS SHIT EYES| +|08/01/2022 09:04:54| |what were you banned for anon| +|08/01/2022 09:04:56| |CUTE EARS| +|08/01/2022 09:04:58| |Who needs sleep when you got muscles?| +|08/01/2022 09:04:59| |/k/ is fat as fuck though| +|08/01/2022 09:05:01| |Reset your router| +|08/01/2022 09:05:02| 前進 +|08/01/2022 09:05:03| ZENSHIN +|08/01/2022 09:05:05| |akebi paizuri...| +|08/01/2022 09:05:05| |>follow my tracers FUCK YOU Captain America| +|08/01/2022 09:05:06| |really though, I like how Chihatans plan to take out the PZIV is exactly what Continuation does| +|08/01/2022 09:05:07| |should of unlocked night vision | +|08/01/2022 09:05:08| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:05:09| |machine gun ASMR| +|08/01/2022 09:05:11| |WHAT'S THE RANGE ON YOUR WEAPON SOLDIER?| +|08/01/2022 09:05:13| |mako is just tuned for yasen| +|08/01/2022 09:05:20| BANZAI +|08/01/2022 09:05:20| |MY EYES| +|08/01/2022 09:05:20| |MY EYES| +|08/01/2022 09:05:22| flare! +|08/01/2022 09:05:23| |I was shit-talking CSW fags by posting fat people getting hit by cars| +|08/01/2022 09:05:23| F:ARE +|08/01/2022 09:05:24| |Book ends the episode really well| +|08/01/2022 09:05:24| |AHHH LIGHTMODE SCREENSHOT| +|08/01/2022 09:05:24| |miho tired of your shit| +|08/01/2022 09:05:26| |DUMB BLIND MIHO| +|08/01/2022 09:05:26| AMBUSH +|08/01/2022 09:05:26| |THE FACE| +|08/01/2022 09:05:26| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ | +|08/01/2022 09:05:26| MEGAAAAAAA +|08/01/2022 09:05:27| |SOLAR FLARE| +|08/01/2022 09:05:29| |LOOK AT THE FLARE MIHO| +|08/01/2022 09:05:29| |TENNO HEIKA BANZAAAAAAAI| +|08/01/2022 09:05:30| FLARE +|08/01/2022 09:05:30| |CUM THE FLARE GUN| +|08/01/2022 09:05:30| AAAAAAAAAAAAAAAAAAAAAAIIIEEEEE +|08/01/2022 09:05:30| |THE FACE| +|08/01/2022 09:05:33| OST +|08/01/2022 09:05:35| BANZAI +|08/01/2022 09:05:35| |retina burned| +|08/01/2022 09:05:38| |BAKAS IN THE TREES BAKAS IN THE TREES| +|08/01/2022 09:05:40| |BANZAI | +|08/01/2022 09:05:46| |welp there goes my night vision| +|08/01/2022 09:05:47| |HOLY FUCK| +|08/01/2022 09:05:47| |BAKAS EVERYWHERE| +|08/01/2022 09:05:48| |FAST NIPS| +|08/01/2022 09:05:49| BOOM +|08/01/2022 09:05:50| |>when the trees start speaking baka| +|08/01/2022 09:05:50| |think of all the worthless kaoalas they're rolling over| +|08/01/2022 09:05:51| |the trees are speaking japanese....| +|08/01/2022 09:05:53| |Wow the flares can deafen you as well| +|08/01/2022 09:05:54| |it's over ooraribros...| +|08/01/2022 09:05:56| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:05:58| |Cod World of War | +|08/01/2022 09:06:03| |I CAN'T SEE SHIT CAPTAIN| +|08/01/2022 09:06:07| |WE NEED TO BURN DOWN THE JUNGLE| +|08/01/2022 09:06:09| |Stop looking at the flares| +|08/01/2022 09:06:10| |MOMO LED THE TEAM TO DEFEAT!| +|08/01/2022 09:06:10| |KEEP LOOKING AT THE FLARE| +|08/01/2022 09:06:14| |Bring out the napalm| +|08/01/2022 09:06:16| |STOP SENDING LIGHTMODE SCREENSHOTS NISHI| +|08/01/2022 09:06:17| |AGENT ORANGE| +|08/01/2022 09:06:18| |NAPALM NAPALM| +|08/01/2022 09:06:20| |Oarai got too cocky this time | +|08/01/2022 09:06:20| |which star wars movie was this| +|08/01/2022 09:06:24| |Saunders would've napalmed the whole course| +|08/01/2022 09:06:25| |KILL IT WITH FIRE| +|08/01/2022 09:06:28| |just close your eyes when flare??/???///???/?| +|08/01/2022 09:06:28| |I WANT THAT TREELINE BOMBED| +|08/01/2022 09:06:35| |DIDI MAO DIDI MAO| +|08/01/2022 09:06:35| |what was miho think bros?| +|08/01/2022 09:06:36| |Rogue One| +|08/01/2022 09:06:37| |episode 3| +|08/01/2022 09:06:37| |Chihatan Strikes Back!| +|08/01/2022 09:06:38| |Miho separated what'll happen!| +|08/01/2022 09:06:38| |Too bad they don't have flamethrowers | +|08/01/2022 09:06:38| |empire strikes back| +|08/01/2022 09:06:41| |Use agent orange to clear the jungle| +|08/01/2022 09:06:41| |CALL BROKEN ARROW| +|08/01/2022 09:06:42| |I love the smell of totsugeki in the morning| +|08/01/2022 09:06:42| |PRESS O TO APPLY A HEALTHY DOSAGE OF AGENT ORANGE TO THE JUNGLE| +|08/01/2022 09:06:46| bonk +|08/01/2022 09:06:47| * +|08/01/2022 09:06:50| |get outta the way bitch| +|08/01/2022 09:06:53| |Should have bought more flares than Chihatan. Then they can't outflare you| +|08/01/2022 09:06:54| |ass too fat knocked them over| +|08/01/2022 09:06:55| |ooarai dont surf...| +|08/01/2022 09:06:55| |the kamis are immortal as fuck| +|08/01/2022 09:06:58| |WE GOT PLANES STACKED UP EVERY 500 FEET!| +|08/01/2022 09:07:08| |they aren't called kamis for nothing| +|08/01/2022 09:07:13| |NOT THE PINCERINHO| +|08/01/2022 09:07:17| BONK +|08/01/2022 09:07:20| |\o/ \o/ TENNO HEIKA BANZAI \o/ \o/| +|08/01/2022 09:07:21| |Holy shit that's the drift Chihatan did| +|08/01/2022 09:07:23| |Hippo butt too big. Boat goes back into water| +|08/01/2022 09:07:23| |Holy shit amazing animation| +|08/01/2022 09:07:25| |NOOOOOOOOOOOO NOT THE HECKING PINCERINOOOOOOOOOO| +|08/01/2022 09:07:26| NAGURAAAAA +|08/01/2022 09:07:36| |IS THIS THE POWER OF UNREAL ENGINE| +|08/01/2022 09:07:37| |>ship tanks| +|08/01/2022 09:07:39| |>checking FUCK OFF| +|08/01/2022 09:07:41| |Cutest chihatan girl| +|08/01/2022 09:07:44| |If they do drive-bys this close, just hit them with a stick| +|08/01/2022 09:07:46| DECAPITATION +|08/01/2022 09:07:47| |>hecking FUCK OFF| +|08/01/2022 09:07:48| CALLBACK +|08/01/2022 09:07:48| |utter bullshit| +|08/01/2022 09:07:48| |nice boat| +|08/01/2022 09:07:49| |SENSHADO IS SAFE| +|08/01/2022 09:07:49| SASUGA +|08/01/2022 09:07:54| |nice boat| +|08/01/2022 09:07:54| |THAT GUNNER IS DEAD| +|08/01/2022 09:07:55| |TANK MELEE| +|08/01/2022 09:07:55| |when are they installing that mirror| +|08/01/2022 09:07:58| |but checking can fuck off too| +|08/01/2022 09:07:59| |She still hasn't bought a slide under mirror| +|08/01/2022 09:07:59| bakas +|08/01/2022 09:08:02| |Mako a murderer| +|08/01/2022 09:08:03| |MAKO DRIVE ME CLOSER I WANNA HIT THEM WITH MY SWRD| +|08/01/2022 09:08:05| NANI +|08/01/2022 09:08:05| |Just flare their tanks if they driveby that close| +|08/01/2022 09:08:06| |I can't believe they drowned| +|08/01/2022 09:08:24| STOMPED +|08/01/2022 09:08:29| |as long as all the crew didn't drown its still k| +|08/01/2022 09:08:30| |PUPPET COMMANDER| +|08/01/2022 09:08:33| |TOTSUGEKIS HAVE FUCKING GORILLA STRENGTH WTF| +|08/01/2022 09:08:34| |How many deaths have there been in the history of tankery?| +|08/01/2022 09:08:40| 0 +|08/01/2022 09:08:43| 0 +|08/01/2022 09:08:43| cute +|08/01/2022 09:08:44| |Everyone has gorilla strength| +|08/01/2022 09:08:44| |cool pontoon bridge| +|08/01/2022 09:08:44| |Volleyball club ressurection is nearly here bros| +|08/01/2022 09:08:45| |0, tankery is safe| +|08/01/2022 09:08:47| STRONG +|08/01/2022 09:08:48| |strong lolis| +|08/01/2022 09:08:48| |cute dorks| +|08/01/2022 09:08:49| |zero (read zero)| +|08/01/2022 09:08:50| |How many people drowned in shallow water?| +|08/01/2022 09:08:50| STRONK +|08/01/2022 09:08:52| |it's perfectly safe| +|08/01/2022 09:08:52| |carbon coated lungs| +|08/01/2022 09:08:52| |love this scene| +|08/01/2022 09:08:53| CARBON +|08/01/2022 09:08:54| |They can beat up all of /a/| +|08/01/2022 09:08:55| bruh +|08/01/2022 09:08:55| |strong spotters| +|08/01/2022 09:08:56| UKETAMAWARASIMASHITA +|08/01/2022 09:08:57| |LOLI STRONK| +|08/01/2022 09:08:57| |HOLY SHIT| +|08/01/2022 09:08:58| dyel +|08/01/2022 09:08:59| |retard strength| +|08/01/2022 09:09:03| |THEY'RE NOT EVEN LOADERS| +|08/01/2022 09:09:03| |SUPERIOR JAPANESE ENGINEERING| +|08/01/2022 09:09:05| |CABRON COATING OP| +|08/01/2022 09:09:06| |oh boy another bridge| +|08/01/2022 09:09:07| |i WISH THEY'D BEAT ME UP| +|08/01/2022 09:09:08| |LOLI STRENGTH | +|08/01/2022 09:09:12| |Instead of going after the flag tank, they go after the other tanks| +|08/01/2022 09:09:15| |armorplot coating| +|08/01/2022 09:09:16| |Separated once again!| +|08/01/2022 09:09:16| |>a bridge| +|08/01/2022 09:09:18| rip +|08/01/2022 09:09:18| |FUCK BRIDGES| +|08/01/2022 09:09:19| |LETS IGNORE THE ISOLATED FLAG TANK| +|08/01/2022 09:09:21| |bridges are meant to be destroyed| +|08/01/2022 09:09:24| ariya +|08/01/2022 09:09:29| AAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:09:31| |flag just diappears| +|08/01/2022 09:09:35| |They knew to not always totsugeki| +|08/01/2022 09:09:37| |Bridges too strong. Not toppled yet| +|08/01/2022 09:09:39| |KINO DUEL| +|08/01/2022 09:09:42| |THE TREES ARE SPEAKING VOLLEYBALL| +|08/01/2022 09:09:44| |LET'S SPLIT UP GANG| +|08/01/2022 09:09:47| |Here comes the Kino| +|08/01/2022 09:09:49| |The suns rising....| +|08/01/2022 09:09:52| |But they forgot to stop the totsugeki in their heart | +|08/01/2022 09:09:55| |what is this 480p bruh | +|08/01/2022 09:10:00| |UOHH CUNNY CREW| +|08/01/2022 09:10:13| |BAKKU ATAKKU| +|08/01/2022 09:10:14| |teleports behind you| +|08/01/2022 09:10:15| |BAKKU ATTAKU| +|08/01/2022 09:10:18| |KINO FIGHT| +|08/01/2022 09:10:19| |Lover-san ain't giving you peace tonight| +|08/01/2022 09:10:19| |TAEKO CUTE| +|08/01/2022 09:10:19| KINO +|08/01/2022 09:10:20| |LOLI DUEL| +|08/01/2022 09:10:21| |THEYRE PENETRATING OUR REAR FLANK| +|08/01/2022 09:10:21| GUTS! +|08/01/2022 09:10:22| |FUKU CHAN| +|08/01/2022 09:10:22| |IN THE END I REALIZED| +|08/01/2022 09:10:23| |MASTER AND APPRENTICE DUEL| +|08/01/2022 09:10:26| |KINO BEGINS| +|08/01/2022 09:10:28| |Here we go on the Kino| +|08/01/2022 09:10:30| |will ducks get the voley club back in the end?| +|08/01/2022 09:10:33| |STANDING HERE| +|08/01/2022 09:10:35| |penetrating rear flank...| +|08/01/2022 09:10:37| |ITS KINO TIMMMMMMMMMMMMMMMMMMMMME| +|08/01/2022 09:10:37| cute +|08/01/2022 09:10:39| |I REALIZE| +|08/01/2022 09:10:45| yush! +|08/01/2022 09:10:45| |Hasegawa a cute| +|08/01/2022 09:10:46| |YOU WERE JUST LIKE ME| +|08/01/2022 09:10:48| mawaru +|08/01/2022 09:10:51| |YOY WERE JUST LIKE ME| +|08/01/2022 09:10:52| UOOAH +|08/01/2022 09:10:52| KINO +|08/01/2022 09:10:53| |TRYING TO CHANGE HISTORY| +|08/01/2022 09:10:54| |TRYING TO MAKE HISTORY| +|08/01/2022 09:10:59| USSHI +|08/01/2022 09:11:05| |BUT WHO'S TO JUDGE| +|08/01/2022 09:11:07| |BUT WHO IS TO JUDGE| +|08/01/2022 09:11:13| |THE RIGHT FROM WRONG| +|08/01/2022 09:11:15| |fucking portable bridging tanks| +|08/01/2022 09:11:15| |THE RIGHT FROM WRONG| +|08/01/2022 09:11:16| |cute arms| +|08/01/2022 09:11:17| |kami tier| +|08/01/2022 09:11:19| TTE +|08/01/2022 09:11:23| TEEEEEEEEEEEEEEEEEE +|08/01/2022 09:11:25| |MOU IKKAI| +|08/01/2022 09:11:25| |>This cgi| +|08/01/2022 09:11:29| |Should have brought a volleyball. At least you can spike their tank| +|08/01/2022 09:11:30| UTEEEEEEE +|08/01/2022 09:11:34| |bakas with tunnel vision brought down by their hubris| +|08/01/2022 09:11:35| |kill the fucking slanteyes| +|08/01/2022 09:11:38| |I have no idea what's happening| +|08/01/2022 09:11:41| 停止 +|08/01/2022 09:11:45| |THEY'RE IN THE TREES| +|08/01/2022 09:11:45| |they're all slanteyes| +|08/01/2022 09:11:47| |ITTEN SHOJUN| +|08/01/2022 09:11:48| |ME EITHER| +|08/01/2022 09:11:49| rip +|08/01/2022 09:11:52| rekt +|08/01/2022 09:11:52| |RIP STUG| +|08/01/2022 09:11:55| |MOU IKKAI| +|08/01/2022 09:11:55| |STUG'S DOWN| +|08/01/2022 09:11:55| |Ooarai is getting fucked| +|08/01/2022 09:11:57| |STUG ;_;| +|08/01/2022 09:12:00| NYAAA +|08/01/2022 09:12:01| NYAA +|08/01/2022 09:12:02| NYA +|08/01/2022 09:12:02| |stug bros...| +|08/01/2022 09:12:04| |theres something sexy about the term for focus fire| +|08/01/2022 09:12:04| NYAAA +|08/01/2022 09:12:04| |2 SHELLS| +|08/01/2022 09:12:05| NYAA +|08/01/2022 09:12:05| NYAA +|08/01/2022 09:12:05| |STRONK NEET| +|08/01/2022 09:12:07| |STUG DOWN| +|08/01/2022 09:12:07| |stug life stug death| +|08/01/2022 09:12:07| |Reminder the entire Stug team are my wives | +|08/01/2022 09:12:07| |OH NO NO NO NO NO| +|08/01/2022 09:12:07| NYAA +|08/01/2022 09:12:08| nyaa +|08/01/2022 09:12:09| |ROID RAGE| +|08/01/2022 09:12:09| nyaaaaaaaaaaaaaaaaaaa\ +|08/01/2022 09:12:11| |how the fuck are none of them dead yet| +|08/01/2022 09:12:13| |duelwielding those 40mm shells holy fuck| +|08/01/2022 09:12:13| |Ooaraibros....I think this is the end.| +|08/01/2022 09:12:14| |WASH AWAY THE ANGER| +|08/01/2022 09:12:14| |NOT LIKE THIS OORAICHADS| +|08/01/2022 09:12:16| |no bridge anymore| +|08/01/2022 09:12:17| |doublefisting shells like nothing| +|08/01/2022 09:12:17| negh +|08/01/2022 09:12:18| |STRONG MAKO| +|08/01/2022 09:12:19| |BITCH YOU THOUGHT| +|08/01/2022 09:12:20| |Oarai got too cocky this time| +|08/01/2022 09:12:20| |FUCK BRIDGES| +|08/01/2022 09:12:22| Nyaa +|08/01/2022 09:12:23| |FULL STOP| +|08/01/2022 09:12:25| |mako brake| +|08/01/2022 09:12:30| Ooaraibros +|08/01/2022 09:12:31| RUSE +|08/01/2022 09:12:31| OOARAIBROS.... +|08/01/2022 09:12:38| BAITED +|08/01/2022 09:12:40| NANI?! +|08/01/2022 09:12:40| |WHO COULD HAVE SEEN THAT COMING| +|08/01/2022 09:12:40| RUSEMASTER +|08/01/2022 09:12:40| GOTTEM +|08/01/2022 09:12:40| |panzer doko| +|08/01/2022 09:12:42| |I'VE BEEN RUSED!| +|08/01/2022 09:12:43| |better invest in chihatancoin| +|08/01/2022 09:12:43| |they fall for this lol| +|08/01/2022 09:12:46| ??????????? +|08/01/2022 09:12:49| BTFO +|08/01/2022 09:12:52| wtf +|08/01/2022 09:12:53| |bamboozled again| +|08/01/2022 09:12:54| |LEAVE IT TO TJHE ANGLER FISH TO BAIT| +|08/01/2022 09:12:58| |KINO KINO KINO| +|08/01/2022 09:13:03| |Most of those shots should have been knock outs| +|08/01/2022 09:13:04| |KINO IS BACK ON THE MENU| +|08/01/2022 09:13:04| TOSS +|08/01/2022 09:13:06| out-heckin-skilled +|08/01/2022 09:13:06| |>no GF crossover yet dorkbros what now??????| +|08/01/2022 09:13:07| |kino battle| +|08/01/2022 09:13:08| |KINO FIGHT| +|08/01/2022 09:13:08| ATTACK +|08/01/2022 09:13:08| |VIOLENCE BREEDS VIOLENCE| +|08/01/2022 09:13:13| |MAKO-CHAN BANZAI| +|08/01/2022 09:13:14| |akebi is so hot bros| +|08/01/2022 09:13:18| |That pz 4 could ragdoll all those MF| +|08/01/2022 09:13:20| kino +|08/01/2022 09:13:20| |BUT IN THE END IT HAS TO BE THIS WAY| +|08/01/2022 09:13:21| |IN THE END IT HAS TO BE THIS WAYYYYYY| +|08/01/2022 09:13:23| |IN THE END IT HAS TO BE THIS WAAAAAAAAAAAAAAAAAY| +|08/01/2022 09:13:26| |BUT IN THE END IT HAS TO BE THIS WAY| +|08/01/2022 09:13:29| |Kino sounds| +|08/01/2022 09:13:34| ORAORAORAORA +|08/01/2022 09:13:35| |>merely pretending| +|08/01/2022 09:13:36| |merely pretending| +|08/01/2022 09:13:36| |>MERELY PRETENDING| +|08/01/2022 09:13:37| ORAORAORAORA +|08/01/2022 09:13:38| |>only pretending to be retarded| +|08/01/2022 09:13:38| |MERELY PRETENDING| +|08/01/2022 09:13:41| |SO NA NO| +|08/01/2022 09:13:42| |holy shit| +|08/01/2022 09:13:43| |I CARVED MY OWN PATH| +|08/01/2022 09:13:45| |NOT RUSED| +|08/01/2022 09:13:45| |LIKE A BOOK| +|08/01/2022 09:13:47| ORYAAAA +|08/01/2022 09:13:49| |Can't outvolleyball the volleyball| +|08/01/2022 09:13:50| |loli tank stroonk| +|08/01/2022 09:13:51| jonks +|08/01/2022 09:13:52| |THAT WAS A KNOCK OUT FUCK YOU| +|08/01/2022 09:13:54| SASUGA +|08/01/2022 09:13:55| |YOU FOLLOWED YOUR WRATH| +|08/01/2022 09:13:55| |IM MY OWN MASTER NOW| +|08/01/2022 09:13:57| |FUCKING TANK| +|08/01/2022 09:13:59| wtf +|08/01/2022 09:14:00| |SHE'S NOT GOING DOWN| +|08/01/2022 09:14:01| |nice moves| +|08/01/2022 09:14:01| |HOW ARE THEY STILL IN THE GAME| +|08/01/2022 09:14:02| |literal garbage weapon| +|08/01/2022 09:14:02| |Carbon coating| +|08/01/2022 09:14:02| |THAT WAS A HIT STRAIGHT TO THE ENGINE BLOCK| +|08/01/2022 09:14:03| |FUCKING TANK UKEMI| +|08/01/2022 09:14:06| |GAS GAS GAAASSS| +|08/01/2022 09:14:07| |AHIRU SAKUSEN| +|08/01/2022 09:14:09| |THIS GAME IS FUCKING RIGGED| +|08/01/2022 09:14:09| |OPERATION DUCK| +|08/01/2022 09:14:13| |superior japanese tank steel| +|08/01/2022 09:14:14| |>tank does a 720~| +|08/01/2022 09:14:14| |SHE IS FUCKING INVINCIBLE| +|08/01/2022 09:14:14| |OPERATION: DUCK| +|08/01/2022 09:14:16| |This is some Looney Tunes tier physics | +|08/01/2022 09:14:19| |WHO THE FUCK NOWS WHAT PLAN THIS IS| +|08/01/2022 09:14:19| |Volleybros Fukuda is nothingm we can do this!| +|08/01/2022 09:14:21| |QUICK THINK LIKE YOU WERE DUMN| +|08/01/2022 09:14:21| |Oh no, she outvolleyball the volleyball| +|08/01/2022 09:14:21| |10000 folded nippon steel| +|08/01/2022 09:14:23| |OH MY REMOVABLE PLATING| +|08/01/2022 09:14:23| |BUT SHE'S USING A JAPANESE TANK | +|08/01/2022 09:14:24| |kami tier| +|08/01/2022 09:14:24| |SECOND LIFE| +|08/01/2022 09:14:26| |light tank, folden 10000 times| +|08/01/2022 09:14:27| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\| +|08/01/2022 09:14:30| |>nippon carbon folded 8 gorillion times| +|08/01/2022 09:14:32| |ROID RAGE| +|08/01/2022 09:14:33| |SE NO| +|08/01/2022 09:14:33| BDASHU +|08/01/2022 09:14:34| |JUST THROW THE SHELLS AT THEM| +|08/01/2022 09:14:34| |TARD RAGE| +|08/01/2022 09:14:35| |acting like reactive armor or some shit| +|08/01/2022 09:14:36| ESC +|08/01/2022 09:14:37| |SE NO| +|08/01/2022 09:14:38| splash +|08/01/2022 09:14:39| |FUCKING NYAAAGERS -Nekonya| +|08/01/2022 09:14:41| GAMERS +|08/01/2022 09:14:43| |eskeepu botan| +|08/01/2022 09:14:44| F +|08/01/2022 09:14:46| F +|08/01/2022 09:14:47| |ringo outo| +|08/01/2022 09:14:48| GAMERBROS.... +|08/01/2022 09:14:49| /fit/bros..... +|08/01/2022 09:14:49| F +|08/01/2022 09:14:49| |NIPPON ARMOR FOLDED OVER 731 TIMES| +|08/01/2022 09:14:50| F +|08/01/2022 09:14:50| rekt +|08/01/2022 09:14:52| |these swimming tanks are fucking invinicible| +|08/01/2022 09:14:54| |gamers o7| +|08/01/2022 09:14:55| |OH MY REMOVABLE PLATING AGAIN| +|08/01/2022 09:14:57| |Gamers hate bugs| +|08/01/2022 09:14:58| ANDOU! +|08/01/2022 09:14:59| ooaraibros... +|08/01/2022 09:15:00| |>fit gamers BTFO| +|08/01/2022 09:15:01| F +|08/01/2022 09:15:02| goodnight +|08/01/2022 09:15:03| oyasumi +|08/01/2022 09:15:03| |CHIHATANBROS THIS IS OUR TIME| +|08/01/2022 09:15:04| UUUUUUUUUUUUUUUUOOOOOOOOOOOOOHHHHHHHHHHH +|08/01/2022 09:15:04| |SLEEPING SEX WITH MARIE| +|08/01/2022 09:15:05| OYASUMI +|08/01/2022 09:15:05| |oyasumi | +|08/01/2022 09:15:05| |THOSE SHOULD HAVE BEEN KNOCK OUTS| +|08/01/2022 09:15:05| oyasumi +|08/01/2022 09:15:07| |>industrial strength bed| +|08/01/2022 09:15:09| |GAMERS ARE THE MOST OPPRESSED GROUP| +|08/01/2022 09:15:09| |Ke-Ni too strong| +|08/01/2022 09:15:10| ;_;7 +|08/01/2022 09:15:10| |based sleeper| +|08/01/2022 09:15:12| lewd +|08/01/2022 09:15:13| |I want to be marie's bed| +|08/01/2022 09:15:14| |MARIE KNOWS WHERE THIS SHIT IS GOING| +|08/01/2022 09:15:15| |Ooraibros.... we had them cornered... how did we job?| +|08/01/2022 09:15:17| |GOD I WANT TO FUCK MAKO SO BAD| +|08/01/2022 09:15:17| |Marie abandoned us streambros...| +|08/01/2022 09:15:22| |Carbon Coated Bed| +|08/01/2022 09:15:22| |shhh marie is sleeping| +|08/01/2022 09:15:24| |blind fuck| +|08/01/2022 09:15:25| |Symbolism (ding)| +|08/01/2022 09:15:29| |Marie ain't watching at this point| +|08/01/2022 09:15:32| |DATO ANKOU! | +|08/01/2022 09:15:33| |>If we can hit that bullseye the rest of the dominoes will fall like a house of cards. Checkmate!| +|08/01/2022 09:15:34| |hype crew swap incoming| +|08/01/2022 09:15:34| BAITED +|08/01/2022 09:15:34| |DATO ANKOU| +|08/01/2022 09:15:37| |DEATH TO ANKOU| +|08/01/2022 09:15:37| |DATO ANKOU!| +|08/01/2022 09:15:38| DATOU +|08/01/2022 09:15:39| |TL note: 打倒鮟鱇 = Totsugeki| +|08/01/2022 09:15:39| |DATOU ANKOU!| +|08/01/2022 09:15:39| |datto anko| +|08/01/2022 09:15:39| |DATO ANKOU| +|08/01/2022 09:15:39| |MAKO SEX| +|08/01/2022 09:15:39| HUBRIS +|08/01/2022 09:15:40| BAKAS +|08/01/2022 09:15:40| 脱党鮟鱇! +|08/01/2022 09:15:41| |DATO ANJOU| +|08/01/2022 09:15:41| |DATO ANKOU| +|08/01/2022 09:15:41| |Marie is literally me| +|08/01/2022 09:15:43| |Lol fucking retards, completely forgetting the mission| +|08/01/2022 09:15:45| |DEATH TO ANKOU| +|08/01/2022 09:15:46| AMAI +|08/01/2022 09:15:46| |I know lets act as bait -Miho again| +|08/01/2022 09:15:50| |DATO ANKOU! | +|08/01/2022 09:15:51| |SEXO ANKOU| +|08/01/2022 09:15:51| 脱党鮟鱇 +|08/01/2022 09:15:51| |Anglerfish lantern bait| +|08/01/2022 09:15:53| |kyute karina| +|08/01/2022 09:15:55| |>fuck focusing on the flag tank| +|08/01/2022 09:15:56| |too thicc| +|08/01/2022 09:15:58| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:15:58| |sono tori| +|08/01/2022 09:16:01| SONATORIIII +|08/01/2022 09:16:01| |SEX THE ANKOUS| +|08/01/2022 09:16:03| |Shouldn't their guns still be able to pen the side of a Lee at 100 meters?| +|08/01/2022 09:16:03| |THE MOMENT IT FALLS APART| +|08/01/2022 09:16:06| |WHAT'S A FLAG TANK?| +|08/01/2022 09:16:07| 打倒アンコウ +|08/01/2022 09:16:09| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:16:16| |4D CHESS RABBIT| +|08/01/2022 09:16:16| |smaat usagi| +|08/01/2022 09:16:17| |HIGH IQ AZUSA| +|08/01/2022 09:16:19| |AZUSA TOO SMART| +|08/01/2022 09:16:21| TTE +|08/01/2022 09:16:22| |Who needs the flag tank if you get the strategist? | +|08/01/2022 09:16:22| |MATRIX LEE| +|08/01/2022 09:16:22| DEJAVU +|08/01/2022 09:16:23| |HOLY BASED| +|08/01/2022 09:16:23| |AZUSA <3| +|08/01/2022 09:16:24| |AZUSA LOVE| +|08/01/2022 09:16:25| |BTFO X 2| +|08/01/2022 09:16:27| HOLY +|08/01/2022 09:16:28| |the small details on the tanks make me coom| +|08/01/2022 09:16:28| |AZUSA YOUR FUTURE COMMANDER| +|08/01/2022 09:16:29| |HIGH IQ| +|08/01/2022 09:16:29| |How much gas do these tanks have?| +|08/01/2022 09:16:29| |GET FUCKED| +|08/01/2022 09:16:30| |DOUBLE KILL| +|08/01/2022 09:16:30| |azusa future tank commander| +|08/01/2022 09:16:31| |OH MY REMOVABLE PLATING| +|08/01/2022 09:16:32| madamada +|08/01/2022 09:16:32| |THE 37mm WAS SLACKING| +|08/01/2022 09:16:33| ENTER +|08/01/2022 09:16:34| |DAMN AZUSA| +|08/01/2022 09:16:34| |Learning from when Miho tricked the Crusaders| +|08/01/2022 09:16:38| |duck duel| +|08/01/2022 09:16:38| BUNNIES +|08/01/2022 09:16:38| ahiru! +|08/01/2022 09:16:40| DUCK +|08/01/2022 09:16:40| |DOUBLE KILL| +|08/01/2022 09:16:41| |THEY'RE BACK| +|08/01/2022 09:16:41| |A FUCKING DUCK| +|08/01/2022 09:16:43| OH +|08/01/2022 09:16:43| DUCK +|08/01/2022 09:16:45| |THEY KEPT THE DUCK BALLOONS| +|08/01/2022 09:16:47| KINOOOOOOOOOOOOOO +|08/01/2022 09:16:47| AHIRU! +|08/01/2022 09:16:48| duckmind +|08/01/2022 09:16:48| |DUCK ON DUCK RAPE| +|08/01/2022 09:16:48| |they use green tech, no gas| +|08/01/2022 09:16:49| |the mighty fucks| +|08/01/2022 09:16:49| |DUCK OUT OF NOWHERE| +|08/01/2022 09:16:49| |Imagine if Asuza was in an actually good tank| +|08/01/2022 09:16:49| |AZUSA "FINN REMOVER" SAWA| +|08/01/2022 09:16:49| |KINO KINO KINO| +|08/01/2022 09:16:50| |SUPREME CHAMPION| +|08/01/2022 09:16:50| |SPIDEMAN POINT MEME.JPG| +|08/01/2022 09:16:52| |DUCK BATTLE| +|08/01/2022 09:16:53| Quack +|08/01/2022 09:16:54| |when tf did they put this on| +|08/01/2022 09:16:59| |OH MY GAAAAA| +|08/01/2022 09:17:01| |wait how did they get the duck heads| +|08/01/2022 09:17:01| |MADA MADA| +|08/01/2022 09:17:01| trickd +|08/01/2022 09:17:02| |GET FUCKED| +|08/01/2022 09:17:02| RUSED +|08/01/2022 09:17:03| CLANG +|08/01/2022 09:17:03| ;_;7 +|08/01/2022 09:17:03| Volleybros... +|08/01/2022 09:17:04| |WE WON| +|08/01/2022 09:17:05| baited +|08/01/2022 09:17:05| |OH SHIT| +|08/01/2022 09:17:06| |out fucking played| +|08/01/2022 09:17:06| OUTFUCKINGSKILLED +|08/01/2022 09:17:06| |BUNNY CUNNY NOOOOOOOOO| +|08/01/2022 09:17:07| GGEZ +|08/01/2022 09:17:08| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:17:09| |WHY WOULD YOU NOT JUST STICK TO THE SIDE| +|08/01/2022 09:17:09| outplayed +|08/01/2022 09:17:09| baited... +|08/01/2022 09:17:09| O7 +|08/01/2022 09:17:11| OST +|08/01/2022 09:17:12| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/ \o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 09:17:12| |Is this it for Ooarai????| +|08/01/2022 09:17:12| QUACK +|08/01/2022 09:17:13| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:17:13| |akebi noooo| +|08/01/2022 09:17:14| o7 +|08/01/2022 09:17:14| |Azusa "Benis Slicer" Sawa| +|08/01/2022 09:17:15| |the student becomes the mastah| +|08/01/2022 09:17:15| |CHIHATANBROS WE'RE WINNING| +|08/01/2022 09:17:16| |DATO ANKOU! | +|08/01/2022 09:17:16| |DATO ANKOU| +|08/01/2022 09:17:16| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:17:17| |dato anko| +|08/01/2022 09:17:18| o7 +|08/01/2022 09:17:18| |OH NONONONNONNONO WE'RE GONNA LOSE OOARAIBROS| +|08/01/2022 09:17:19| |TL note: Datou Ankou = Totsugeki| +|08/01/2022 09:17:20| |DATOU ANKOU| +|08/01/2022 09:17:20| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:17:20| |DATO ANKOU| +|08/01/2022 09:17:22| |GUNGNIR DATTO?| +|08/01/2022 09:17:25| |BENIS :DDDDDD| +|08/01/2022 09:17:26| |BANZAI \O/ \O/| +|08/01/2022 09:17:27| |OORAICHADS IS THIS IS.....!?!?!| +|08/01/2022 09:17:27| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:17:28| DATTO +|08/01/2022 09:17:28| panzerbros... +|08/01/2022 09:17:35| |IF CH HA TAN LOSES I'M COMMITTING SUDOKU| +|08/01/2022 09:17:36| |ooaraibros what will we do????????????| +|08/01/2022 09:17:38| |ooaraibros btfo| +|08/01/2022 09:17:39| |ITS OVER FOR MOMO| +|08/01/2022 09:17:42| |MIHOFAGS ON SUICIDE WATCH| +|08/01/2022 09:17:43| |Can't duck the duck, but the duck can outvolleyball you| +|08/01/2022 09:17:47| |OH GOD THIS IS JUST LIKE PLATOON| +|08/01/2022 09:17:48| BOOM +|08/01/2022 09:17:51| |ever notice they just used a 2JZ for the engine sounds| +|08/01/2022 09:17:52| DED +|08/01/2022 09:17:53| |MIHO CARRING LIKE USUAL| +|08/01/2022 09:17:54| |fuck the duck| +|08/01/2022 09:17:57| |Ooraibros there's no way out... It's over| +|08/01/2022 09:17:58| |HOSOMI LOST HER CURLS| +|08/01/2022 09:18:00| |Kino take down| +|08/01/2022 09:18:04| TOTSUGEKI! +|08/01/2022 09:18:04| |OOARAIBROS WE GOT TOO COCKY.....| +|08/01/2022 09:18:05| |carrying the team| +|08/01/2022 09:18:05| |The Type-89 fears the Panzer| +|08/01/2022 09:18:08| TOTSUGEKI +|08/01/2022 09:18:10| TOTSUGEKI +|08/01/2022 09:18:11| TOTSUGEKI +|08/01/2022 09:18:12| |Haha Ooaraicucks, this is it!| +|08/01/2022 09:18:13| KINOOOOOO +|08/01/2022 09:18:14| |MIHO WILL CARRY| +|08/01/2022 09:18:16| TOTSUGEKI +|08/01/2022 09:18:17| >DBZposting +|08/01/2022 09:18:17| TOTSUGEKI +|08/01/2022 09:18:18| |PLEASE REMOVE MY TOTSUGEKI LIMITERS| +|08/01/2022 09:18:19| TOTSUGEKI +|08/01/2022 09:18:20| |Now thats the chihatan I know| +|08/01/2022 09:18:20| TOTSUGEKI +|08/01/2022 09:18:20| |death flags nooooo| +|08/01/2022 09:18:21| |CUTE EARS| +|08/01/2022 09:18:21| |The German Tanks fear the Nips| +|08/01/2022 09:18:22| |INVEST IN OOARAICOIN| +|08/01/2022 09:18:22| |DATTOU ANKOU| +|08/01/2022 09:18:23| |DATOU ANKOU| +|08/01/2022 09:18:23| |dato ankou| +|08/01/2022 09:18:23| KINOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:18:23| |DATO ANKOU! | +|08/01/2022 09:18:24| |TL note: Datou Ankou = Totsugeki| +|08/01/2022 09:18:24| |Should have just wacked them with the muzzle| +|08/01/2022 09:18:25| |DATO ANKOU| +|08/01/2022 09:18:26| O7 +|08/01/2022 09:18:26| |TUNNEL VISION| +|08/01/2022 09:18:27| |NIPPON BROS WE WILL WIN!!!| +|08/01/2022 09:18:27| AMAI +|08/01/2022 09:18:28| TOTSUGEKI +|08/01/2022 09:18:28| |DATOU ANKOU| +|08/01/2022 09:18:28| |DATO ANKOU| +|08/01/2022 09:18:29| |It's time for Chihatan to shine! TOTSUGEKI!| +|08/01/2022 09:18:29| |DATO ANKOU| +|08/01/2022 09:18:30| |DATO MANKO| +|08/01/2022 09:18:30| |fuck you ankou| +|08/01/2022 09:18:31| |MIHO CLUTCH??????| +|08/01/2022 09:18:32| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:18:34| |If these idiots wont charge then who will?| +|08/01/2022 09:18:35| |MAKO TIME| +|08/01/2022 09:18:35| 打倒アンコウ +|08/01/2022 09:18:35| |DATOU ANKO| +|08/01/2022 09:18:39| TOTSUGEKI +|08/01/2022 09:18:42| |WE ARE ON THE VERGE OF WINNING, JAP BROS| +|08/01/2022 09:18:43| |Fight to totsugeki, totsugeki to fight| +|08/01/2022 09:18:44| |everyone forgot about the flag tank| +|08/01/2022 09:18:47| |>thinking you can get thru plot armor| +|08/01/2022 09:18:48| |German 75 can't penetrate jap steel| +|08/01/2022 09:18:50| |kino swap time?| +|08/01/2022 09:18:51| |BUT THEYRE BOTH JAPANESE| +|08/01/2022 09:18:52| |MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY | +|08/01/2022 09:18:54| |INVEST IN CHIHATAN NOW| +|08/01/2022 09:18:57| |>can't see shit| +|08/01/2022 09:18:57| Forehead-chan +|08/01/2022 09:18:58| |\o/ DATO ANKO \o/| +|08/01/2022 09:18:58| |Tamada's charge is steiner's assualt| +|08/01/2022 09:19:00| |THERE IT IS| +|08/01/2022 09:19:00| |dude i cant see lmao| +|08/01/2022 09:19:00| |FIRING TRACER INDESPERATION| +|08/01/2022 09:19:01| SELLSELLSELL +|08/01/2022 09:19:02| |CAN'T SEE SHIT| +|08/01/2022 09:19:03| |>all those edits in the thread| +|08/01/2022 09:19:04| |MAKE THE EMPEROR PROUD| +|08/01/2022 09:19:04| |OH MY ROLE CHANGE| +|08/01/2022 09:19:04| |MAKO CARRY| +|08/01/2022 09:19:07| |fuck, I'm starting to get really sleepy| +|08/01/2022 09:19:09| |Miho blind as a bat| +|08/01/2022 09:19:11| |1000 TIME FOLD CARBON COATING| +|08/01/2022 09:19:12| |Just put 500000 on chihatan. Theres no way they lose this.| +|08/01/2022 09:19:13| |tank fuel can't melt plot steel| +|08/01/2022 09:19:13| |Greatest moment in das Finale.| +|08/01/2022 09:19:15| |MAKO MVP| +|08/01/2022 09:19:16| |shit i need to go play dnd| +|08/01/2022 09:19:16| |FLUFFY IN THE DRIVERS SEAT| +|08/01/2022 09:19:17| |INCOMING KINO| +|08/01/2022 09:19:19| |But one of them is Jungle Japanese if they're both Japanese| +|08/01/2022 09:19:19| |We can do this Chihabros!| +|08/01/2022 09:19:20| |DASU WARU AIN BEFERU| +|08/01/2022 09:19:20| |MAKO SEX MAKO SEX MAKO SEX| +|08/01/2022 09:19:21| |FLUFF HAPPY| +|08/01/2022 09:19:22| |cute fluff| +|08/01/2022 09:19:22| |yukari upskirt| +|08/01/2022 09:19:22| kitaaaaaaaaaaaa +|08/01/2022 09:19:22| |YUKARI DRIVING| +|08/01/2022 09:19:22| |I LOVE HER SO MUCH| +|08/01/2022 09:19:23| |carbon balance| +|08/01/2022 09:19:23| |YUKARI IN THE DRIVING SEAT| +|08/01/2022 09:19:24| |it's time| +|08/01/2022 09:19:24| |Fluff life| +|08/01/2022 09:19:24| ??????????????? +|08/01/2022 09:19:25| cute +|08/01/2022 09:19:25| |FLOOF IN THE DRIVER SEAT| +|08/01/2022 09:19:26| |They're desperate!| +|08/01/2022 09:19:26| |YUAKRI DRIVER| +|08/01/2022 09:19:26| |CUTE FLUFF| +|08/01/2022 09:19:27| |FLOOF DRIVER| +|08/01/2022 09:19:28| YES +|08/01/2022 09:19:30| |gamer vision| +|08/01/2022 09:19:33| HAWK +|08/01/2022 09:19:34| finally +|08/01/2022 09:19:35| |>Ablative arMakor| +|08/01/2022 09:19:36| |LET THERE BE LIGHT| +|08/01/2022 09:19:36| |that cute sound when she got behind the wheel| +|08/01/2022 09:19:37| |What do you elf eyes see| +|08/01/2022 09:19:42| KINO +|08/01/2022 09:19:44| |So, handheld gear is allowed?| +|08/01/2022 09:19:49| |TANK FUEL CAN'T MELT CARBON COATING| +|08/01/2022 09:19:50| |gimme the headset blind bitch| +|08/01/2022 09:19:52| KINOO +|08/01/2022 09:19:53| hai +|08/01/2022 09:19:53| TTE +|08/01/2022 09:19:54| |smmart role change| +|08/01/2022 09:19:56| |TENNO HEIKA BANZAI| +|08/01/2022 09:19:58| YUKARI +|08/01/2022 09:19:58| |yukari is so happy and cute| +|08/01/2022 09:20:00| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:20:03| |modul;ar crew op| +|08/01/2022 09:20:03| |is there anything yukari can't do?| +|08/01/2022 09:20:04| |TIPPY TOES| +|08/01/2022 09:20:06| |KINO SCENE!!!| +|08/01/2022 09:20:06| AUTISM +|08/01/2022 09:20:08| KINOOOOOOOOOOOOOOOO +|08/01/2022 09:20:10| |CUTE LOAD| +|08/01/2022 09:20:12| |What tdo your elf eyes see Mako san| +|08/01/2022 09:20:12| |LET YUKARI DRIVE ALWAYS| +|08/01/2022 09:20:15| |yukari can't become real| +|08/01/2022 09:20:21| |THE FLUFFS OF HAZZARD| +|08/01/2022 09:20:22| |GOD MAKO IS SO FUCKING PERFECT| +|08/01/2022 09:20:22| YAHOOOOOOOOOOOOOO +|08/01/2022 09:20:22| |Mako should draw on that etch sketch as a real spotter| +|08/01/2022 09:20:22| |THEY'RE TAKING THE HOBBITS TO ISENGARD| +|08/01/2022 09:20:23| |seeing them switch positions is nice. | +|08/01/2022 09:20:24| |SAIKOU DAZE| +|08/01/2022 09:20:25| |HAI HAAAAAI| +|08/01/2022 09:20:27| SAIKOU +|08/01/2022 09:20:27| YAHHHOOO +|08/01/2022 09:20:27| |YAHOOOOO SAIKOUDAZEEEE!!!| +|08/01/2022 09:20:27| |SAIKO DAZEEEEE| +|08/01/2022 09:20:27| |YAHOO SAIKOU DAZE| +|08/01/2022 09:20:27| |LEFT 4 DON'T CUT| +|08/01/2022 09:20:27| |SAIKOU DAZE| +|08/01/2022 09:20:28| |GAS GAS GAS| +|08/01/2022 09:20:29| YAHOO!!!! +|08/01/2022 09:20:29| YAHOOO +|08/01/2022 09:20:29| |SEIKO DAZE| +|08/01/2022 09:20:30| YAHOO +|08/01/2022 09:20:30| |SAIKOU DAZE| +|08/01/2022 09:20:31| YAHOOOOOOOOOOOOOOOO +|08/01/2022 09:20:31| |YAHOOOOOOOO SAIKOU DAZE| +|08/01/2022 09:20:31| |YUKARI REVING IT OUT| +|08/01/2022 09:20:31| |SAIKO DAZE| +|08/01/2022 09:20:32| |LETS GOOOO| +|08/01/2022 09:20:33| YAHOO +|08/01/2022 09:20:33| YAHOOOOOOOOOOOO +|08/01/2022 09:20:34| |SAIKYO DAZE| +|08/01/2022 09:20:34| |i find this hard to believe| +|08/01/2022 09:20:34| |based as fuck position swaps| +|08/01/2022 09:20:34| HOW +|08/01/2022 09:20:34| |YAHOOOOOO SAIKO DAZE| +|08/01/2022 09:20:35| SAIKOU +|08/01/2022 09:20:35| YAHOOOOOOO +|08/01/2022 09:20:39| RIP +|08/01/2022 09:20:40| uoh +|08/01/2022 09:20:41| |DUKES OF HAZZARD| +|08/01/2022 09:20:42| |MW50 is one hell of a drug| +|08/01/2022 09:20:42| |AND THEYLL GO SWIMMINg COIMPLENENTS OF ME| +|08/01/2022 09:20:42| ded +|08/01/2022 09:20:42| |YUKARI IS GONNA REV THE ENGINE OUT| +|08/01/2022 09:20:43| SHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHIT +|08/01/2022 09:20:44| uoh +|08/01/2022 09:20:46| REKT +|08/01/2022 09:20:46| |THE GENERAL FLUFF| +|08/01/2022 09:20:47| |she ded| +|08/01/2022 09:20:48| |tanks can jump| +|08/01/2022 09:20:49| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:20:50| DEAD +|08/01/2022 09:20:51| |im a genius| +|08/01/2022 09:20:52| |INVEST IN CHIHATAN NOW| +|08/01/2022 09:20:53| |ankou ;_;| +|08/01/2022 09:20:54| |BANZAI BROS LETS GO| +|08/01/2022 09:20:55| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:20:56| BANZAI +|08/01/2022 09:20:56| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +|08/01/2022 09:20:57| |its over ooraibro| +|08/01/2022 09:20:57| BANZAI +|08/01/2022 09:20:57| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:20:58| |I like the detail of that one Chiatan's plushies when she goes flying| +|08/01/2022 09:20:58| F +|08/01/2022 09:20:59| |BANZAIIIIIII BANZAIIIII| +|08/01/2022 09:20:59| |RIP ANKOU| +|08/01/2022 09:21:00| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:00| F +|08/01/2022 09:21:00| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:21:00| BANZAI +|08/01/2022 09:21:01| |BANZAI | +|08/01/2022 09:21:01| BANZAI! +|08/01/2022 09:21:01| BANZAI +|08/01/2022 09:21:01| BANZAI! +|08/01/2022 09:21:02| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:02| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:02| BANZAI +|08/01/2022 09:21:02| |Tanks can fly if you believe hard enough| +|08/01/2022 09:21:02| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +|08/01/2022 09:21:02| BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 09:21:02| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:02| CHIHABROS!!!!!! +|08/01/2022 09:21:02| |LADIES AND GENTLEMEN WE GOT EM| +|08/01/2022 09:21:02| BAKAS +|08/01/2022 09:21:02| BANZAI +|08/01/2022 09:21:03| ANKOUBROS... +|08/01/2022 09:21:03| |BANZAI BANZAI BANZAI| +|08/01/2022 09:21:03| |BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:04| BANZAI +|08/01/2022 09:21:04| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:04| BANZAI! +|08/01/2022 09:21:05| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:05| OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:05| BANZAI +|08/01/2022 09:21:05| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:05| BANZAI +|08/01/2022 09:21:05| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:05| BANZAI! +|08/01/2022 09:21:05| BANZAI +|08/01/2022 09:21:05| |Betting my life savings on chihatan| +|08/01/2022 09:21:06| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +|08/01/2022 09:21:06| |I DONT WANT TO WATCH ANYMORE| +|08/01/2022 09:21:06| BANZAI +|08/01/2022 09:21:06| |BANZAI BANZAI BANZAI| +|08/01/2022 09:21:06| BANZAI +|08/01/2022 09:21:06| |GG EZPZ| +|08/01/2022 09:21:06| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:21:06| BANZAI +|08/01/2022 09:21:06| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:06| BANZA89IIII +|08/01/2022 09:21:06| BANZAI +|08/01/2022 09:21:06| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:07| BANZAI +|08/01/2022 09:21:07| \O/ +|08/01/2022 09:21:07| BANZI +|08/01/2022 09:21:07| |oh noooooooooooooooooo| +|08/01/2022 09:21:07| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:07| BANZAI +|08/01/2022 09:21:08| BANZAI +|08/01/2022 09:21:08| BANZAI +|08/01/2022 09:21:08| BANZAI +|08/01/2022 09:21:08| BANZAI +|08/01/2022 09:21:09| BANZAI +|08/01/2022 09:21:09| |BANZAI BANZAI BANZAI| +|08/01/2022 09:21:09| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:09| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/ \o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 09:21:09| BANZAI +|08/01/2022 09:21:09| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:21:10| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:10| BANZAI!!! +|08/01/2022 09:21:10| BANZAI +|08/01/2022 09:21:10| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +|08/01/2022 09:21:10| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:10| BANZAI +|08/01/2022 09:21:11| |Flag tank?| +|08/01/2022 09:21:11| BANZAI! +|08/01/2022 09:21:11| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:12| BANZAIIIIIIIIIIIIIIII +|08/01/2022 09:21:12| BANZAI +|08/01/2022 09:21:12| BANZAI +|08/01/2022 09:21:13| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:13| OOARAIBROS!? +|08/01/2022 09:21:14| BANZAI +|08/01/2022 09:21:14| BANZAI +|08/01/2022 09:21:14| BANZAI +|08/01/2022 09:21:14| 天皇陛下万歳 +|08/01/2022 09:21:14| AMAI +|08/01/2022 09:21:14| BANZAI +|08/01/2022 09:21:14| |What flag tank?| +|08/01/2022 09:21:14| |I'M A GENIUS| +|08/01/2022 09:21:15| BAKAS +|08/01/2022 09:21:15| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:15| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:15| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:15| BANZAI +|08/01/2022 09:21:15| BANZAI +|08/01/2022 09:21:15| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:16| |BANZAI BANZAI| +|08/01/2022 09:21:16| |>what is a flag tank| +|08/01/2022 09:21:18| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! | +|08/01/2022 09:21:18| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:18| BANZAI +|08/01/2022 09:21:18| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:19| |ES IST VORBEI DER KRIEG IST VERLOREN| +|08/01/2022 09:21:19| |OH NO| +|08/01/2022 09:21:19| BANZA- +|08/01/2022 09:21:20| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:20| |DAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAI| +|08/01/2022 09:21:20| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:20| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:20| |BANZAI BANZAI BANZAI| +|08/01/2022 09:21:21| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:22| |HETZER GONNA HETZ| +|08/01/2022 09:21:23| |>I'm a genius >OH NO| +|08/01/2022 09:21:23| Buffer +|08/01/2022 09:21:23| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:24| BANZAIII +|08/01/2022 09:21:24| Chi-Ha-Tanbros............. +|08/01/2022 09:21:24| |HETZER GONNA HETZ| +|08/01/2022 09:21:25| |>OH NOOOO| +|08/01/2022 09:21:25| HUBRIS +|08/01/2022 09:21:25| |THOSE CHIHATAN RETARDS| +|08/01/2022 09:21:25| |Wrong tank| +|08/01/2022 09:21:25| |BANZAI BANZAI BANZAI BANZAI| +|08/01/2022 09:21:26| |OH MY IGNORED FLAG TANK| +|08/01/2022 09:21:26| |OH NO NO NO NO NO| +|08/01/2022 09:21:26| |>SHE FORGOT| +|08/01/2022 09:21:26| oops +|08/01/2022 09:21:26| |BANZAIBROS SEETHING RN| +|08/01/2022 09:21:27| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:27| |OH NO BANZAI BROS WE GOT TOO COCKY| +|08/01/2022 09:21:28| |\o/ BANZAI \o/| +|08/01/2022 09:21:28| BAITED +|08/01/2022 09:21:29| REKT +|08/01/2022 09:21:29| LUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL +|08/01/2022 09:21:29| HUBRIS +|08/01/2022 09:21:30| |>COMPLETELY FORGOT| +|08/01/2022 09:21:30| |WE GOT TOO COCKY!| +|08/01/2022 09:21:30| |SARABA CHI HA TAN| +|08/01/2022 09:21:30| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:31| |WE DID IT CHIHATANSISTERS! JAPAN'S WON THE WAR!| +|08/01/2022 09:21:31| OWARI +|08/01/2022 09:21:31| OOARAIBROS!? +|08/01/2022 09:21:31| BAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAA +|08/01/2022 09:21:31| ..... +|08/01/2022 09:21:32| |Ha, you're not penning frontally with an early war Japan gun| +|08/01/2022 09:21:32| |Poor Kinuyo| +|08/01/2022 09:21:32| DED +|08/01/2022 09:21:33| |UH OH| +|08/01/2022 09:21:33| BROS................ +|08/01/2022 09:21:33| |EZ FUCKING GAME BROS| +|08/01/2022 09:21:34| |Ooarai is the John Cena of Senshado| +|08/01/2022 09:21:34| |FUCK YOU TURTLE| +|08/01/2022 09:21:34| HETZ'D +|08/01/2022 09:21:35| |Momo's first kill| +|08/01/2022 09:21:35| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:35| |GG EZ| +|08/01/2022 09:21:35| |CHIHATAN BROS WE GOT COCKY| +|08/01/2022 09:21:36| GGEZ' +|08/01/2022 09:21:36| AAAAAAAAHAHAHAHAHAHAHAHAHAHAHAA +|08/01/2022 09:21:38| BANZAI +|08/01/2022 09:21:38| |WE GOT TOO COCKY| +|08/01/2022 09:21:38| TOTSUGEKIDIOTS +|08/01/2022 09:21:38| |NOOOOOOOOOOOOOOOOOOOOOOOO MY $10K| +|08/01/2022 09:21:38| |OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!?| +|08/01/2022 09:21:40| |FUCKING I'M A GENIUS MOMENT| +|08/01/2022 09:21:40| |HEY HEY HEY| +|08/01/2022 09:21:41| |I was only pretending to be retarteded| +|08/01/2022 09:21:41| |HEY HEY HEY| +|08/01/2022 09:21:42| |HEY HEY HEY| +|08/01/2022 09:21:43| |HEY HEY HEY| +|08/01/2022 09:21:43| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 09:21:43| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:45| |ANZU CLUTCH| +|08/01/2022 09:21:45| |HEY HEY HEY| +|08/01/2022 09:21:45| |HEY HEY HEY| +|08/01/2022 09:21:45| |HEY HEY HEEEY!| +|08/01/2022 09:21:45| |Mako noooo| +|08/01/2022 09:21:46| |In the end couldn't help but be baka chargers| +|08/01/2022 09:21:47| rip +|08/01/2022 09:21:47| |BRUH HOW DID THEY LOSE| +|08/01/2022 09:21:47| Anzu +|08/01/2022 09:21:47| |MAKO-CHAN I LOVE YOU| +|08/01/2022 09:21:48| |HEY HEY HEY| +|08/01/2022 09:21:48| |hey hey heyyy| +|08/01/2022 09:21:48| Oya +|08/01/2022 09:21:48| |HEJ HEJ HEJ SOKOLY| +|08/01/2022 09:21:48| |broken by the break of day| +|08/01/2022 09:21:49| |literally me| +|08/01/2022 09:21:49| |MAKO DED| +|08/01/2022 09:21:49| |OUT FUCKING SKILLED| +|08/01/2022 09:21:49| |HEY HEY HEY| +|08/01/2022 09:21:49| |HEY HEY HEY| +|08/01/2022 09:21:50| |Why did they have to charge to shoot the flag tank| +|08/01/2022 09:21:50| |It was her turn| +|08/01/2022 09:21:51| |OOARAICHADS... I KNEEL| +|08/01/2022 09:21:52| |I just lost EVERYTHING FUCK FUCK FUCK| +|08/01/2022 09:21:52| |SLEEPY MAKO SEX| +|08/01/2022 09:21:53| |and battery drained| +|08/01/2022 09:21:54| |CHIHABROS WE TOO COCKY| +|08/01/2022 09:21:55| |Literally me| +|08/01/2022 09:21:55| |sun is rising, just like real life| +|08/01/2022 09:21:56| |well never forget you mako| +|08/01/2022 09:21:56| BETTER +|08/01/2022 09:21:56| |PLEASE MARRY ME MAKO-CHAN| +|08/01/2022 09:21:57| |Oh great, she's dead| +|08/01/2022 09:21:59| |I MUST COMMITT SUDOKU| +|08/01/2022 09:22:00| RETARDS +|08/01/2022 09:22:01| |i sleep zzz| +|08/01/2022 09:22:02| PTFO!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 09:22:02| |BAN... BANZaiii,,,| +|08/01/2022 09:22:02| SARABA +|08/01/2022 09:22:03| |JESUS FUCKING CHRIST| +|08/01/2022 09:22:03| |thus Mako died| +|08/01/2022 09:22:03| |They didn't charge. That's how they lost| +|08/01/2022 09:22:05| |Fought like never before. Lost as always.| +|08/01/2022 09:22:09| |I LOST 40K BECAUSE OF THESE IDIOTS| +|08/01/2022 09:22:09| DEKINAI +|08/01/2022 09:22:13| DEKINAIS +|08/01/2022 09:22:14| 感謝 +|08/01/2022 09:22:14| >decknai +|08/01/2022 09:22:15| |fucking japanese| +|08/01/2022 09:22:15| BAKA-TAN +|08/01/2022 09:22:16| |Chihatanbros we were so close...| +|08/01/2022 09:22:16| bakas +|08/01/2022 09:22:16| |>you don't even know japanese| +|08/01/2022 09:22:18| |MAKO IS GONNA MAKE ME SLEEP| +|08/01/2022 09:22:19| |lmao fucking kanji| +|08/01/2022 09:22:21| |zenzen dekinai| +|08/01/2022 09:22:22| |chihatancoin crash| +|08/01/2022 09:22:23| |>Japs cant understand jap| +|08/01/2022 09:22:23| |2 years in the jungle and we are finally out| +|08/01/2022 09:22:25| |Dear Oorai, fuck you all| +|08/01/2022 09:22:26| |Dear Duck, thanks for losing :)| +|08/01/2022 09:22:26| |bitch, just send a text| +|08/01/2022 09:22:27| |DO YOUR REPS| +|08/01/2022 09:22:30| |you will never learn japanese| +|08/01/2022 09:22:32| |Kanji is evil| +|08/01/2022 09:22:33| |nishi is so beautiful| +|08/01/2022 09:22:34| |UOOOOOOOOOOOOOOOOHHHHHHHHHHHH FUKUDA| +|08/01/2022 09:22:38| |dekinai ;_;| +|08/01/2022 09:22:39| |TAEKO IS CUTE| +|08/01/2022 09:22:40| VOLLEYBALL! +|08/01/2022 09:22:41| |cute cute cute| +|08/01/2022 09:22:42| |volleyball with the loli| +|08/01/2022 09:22:42| ;_;7 +|08/01/2022 09:22:45| ;_; +|08/01/2022 09:22:45| |A FUCKING FOOTBALL| +|08/01/2022 09:22:46| ureshiii~ +|08/01/2022 09:22:46| |I entrusts you with Wilson, fuku chan| +|08/01/2022 09:22:47| |I CANT GET OVER THAT CHIHATAN LOSE| +|08/01/2022 09:22:48| |>a fucking volleyball| +|08/01/2022 09:22:49| |FUKU A CUTEEEEEEEEEEEEEEEEEEEEEEE| +|08/01/2022 09:22:55| |dream on| +|08/01/2022 09:22:55| |FUKUDA MUST BE HANGED| +|08/01/2022 09:22:56| |after you learn a bunch of kanji you wish they were used more| +|08/01/2022 09:22:57| |WILLSON | +|08/01/2022 09:22:57| |>even Japs can't learn jap Maybe we should just give up...| +|08/01/2022 09:22:57| lolno +|08/01/2022 09:22:58| |sportmanship ;_;| +|08/01/2022 09:22:58| |Are Ducks that illiterate?| +|08/01/2022 09:22:59| :) +|08/01/2022 09:23:00| Daikon +|08/01/2022 09:23:00| |cool train| +|08/01/2022 09:23:04| |HORSE TIME| +|08/01/2022 09:23:06| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:23:07| BASED +|08/01/2022 09:23:08| |kek special now| +|08/01/2022 09:23:08| HORSE +|08/01/2022 09:23:08| D-D-DA-DAIKON?? +|08/01/2022 09:23:09| SEAMLESS +|08/01/2022 09:23:09| |>you just know| +|08/01/2022 09:23:09| |horsing around| +|08/01/2022 09:23:10| |UMA PYOI| +|08/01/2022 09:23:10| KINOOOOOOOOOOOOOOO +|08/01/2022 09:23:11| |YOU JUST KNOW| +|08/01/2022 09:23:11| YOU +|08/01/2022 09:23:12| |SOMETIMES YOU JUST KNOW| +|08/01/2022 09:23:12| |YOU JUST KNOW| +|08/01/2022 09:23:12| |MY DAY| +|08/01/2022 09:23:13| |QUALITY HORSES| +|08/01/2022 09:23:13| DAIKON +|08/01/2022 09:23:13| |TO THE TOWN OF AGUA FRIA| +|08/01/2022 09:23:13| |sometimes you just know| +|08/01/2022 09:23:13| |YOU JUST KNOW| +|08/01/2022 09:23:14| |oh fug| +|08/01/2022 09:23:14| |GATOGOTO CHOO CHOO| +|08/01/2022 09:23:14| |i want saori to ride me| +|08/01/2022 09:23:15| |That's some serious wheelspin on that train.| +|08/01/2022 09:23:15| |Body bags| +|08/01/2022 09:23:15| IMAGINE +|08/01/2022 09:23:16| >>>/MLP/ +|08/01/2022 09:23:16| |REAL JANE HOURS| +|08/01/2022 09:23:17| |UUUUU UMADACCHI| +|08/01/2022 09:23:17| |YOU JUST KNOW| +|08/01/2022 09:23:17| |OH NO| +|08/01/2022 09:23:17| |But, muh Finns| +|08/01/2022 09:23:17| |YOU JUST KNOW| +|08/01/2022 09:23:19| |I wish I were a horse| +|08/01/2022 09:23:19| SASUGA +|08/01/2022 09:23:20| |>you just know| +|08/01/2022 09:23:20| |I was zoned in to that battle. completely ignored chat| +|08/01/2022 09:23:21| |For a few daikon more| +|08/01/2022 09:23:22| |Oh shit I haven't watched this| +|08/01/2022 09:23:22| |YOU JUST KNOW| +|08/01/2022 09:23:22| |YOU JUST KNOW| +|08/01/2022 09:23:25| |why is the black one called choco| +|08/01/2022 09:23:25| |KIMI NO AIBA GA| +|08/01/2022 09:23:25| |YOU JUST KNOW| +|08/01/2022 09:23:25| CHOCO +|08/01/2022 09:23:26| |WHY ARE THE GIRLS SO BIG| +|08/01/2022 09:23:27| |SUNSET GUPPIEs| +|08/01/2022 09:23:27| nani +|08/01/2022 09:23:27| YOU +|08/01/2022 09:23:28| |HORSE. DICK.| +|08/01/2022 09:23:29| |PART 7 WHEN| +|08/01/2022 09:23:29| |I JUST KNOW| +|08/01/2022 09:23:31| |especially Yukaris horse| +|08/01/2022 09:23:31| |YOU JUST KNOW| +|08/01/2022 09:23:31| |you just know| +|08/01/2022 09:23:31| |YOU JUST KNOW| +|08/01/2022 09:23:32| JUST +|08/01/2022 09:23:33| |THOSE HORSES ARE TINY COMPARED TO THEM| +|08/01/2022 09:23:34| |god I want yukari to ride me| +|08/01/2022 09:23:35| |you just know episode| +|08/01/2022 09:23:36| |girls und horses| +|08/01/2022 09:23:37| |ZUKYUN BAKYUN HASHIRIDASHI| +|08/01/2022 09:23:37| |SNIFFING SADDLES AAAAAAAAAAAAAAAH| +|08/01/2022 09:23:38| |you just know| +|08/01/2022 09:23:38| |YOU JUST KNOW| +|08/01/2022 09:23:39| |my horse is black so is it nigger?| +|08/01/2022 09:23:40| |AHHHHHH MAKO| +|08/01/2022 09:23:42| |IT WAS TOO MUCH| +|08/01/2022 09:23:43| |I wish i was the horse| +|08/01/2022 09:23:45| |Mako too used to riding horses| +|08/01/2022 09:23:45| |you just know moment| +|08/01/2022 09:23:47| |I think that was the best battle we've seen in the series| +|08/01/2022 09:23:49| |I wish I was that horse| +|08/01/2022 09:23:52| |Don't talk about the cgi horses| +|08/01/2022 09:23:55| |That poor horse.| +|08/01/2022 09:23:55| |I love the OVA OST so much| +|08/01/2022 09:23:56| (STUDY) +|08/01/2022 09:24:00| |saori finally found a man| +|08/01/2022 09:24:04| |Cute freckles| +|08/01/2022 09:24:05| |is the ova ost up| +|08/01/2022 09:24:06| |Hick is cutest guppie| +|08/01/2022 09:24:10| |Bellebros this is our year| +|08/01/2022 09:24:10| |a cute| +|08/01/2022 09:24:10| QT +|08/01/2022 09:24:13| |These girls are GIGANTIC| +|08/01/2022 09:24:13| |Where on the ship does this take place| +|08/01/2022 09:24:14| FRECKLES +|08/01/2022 09:24:16| |no habla japones| +|08/01/2022 09:24:17| |Cute farmer| +|08/01/2022 09:24:18| |If this whole place was on the ship, wow...| +|08/01/2022 09:24:19| |THESE GIRLS DON'T EVEN KNOW THEY'RE ON A SHIP| +|08/01/2022 09:24:20| |AS I WALKED BY ON THE STREETS OF OARAI| +|08/01/2022 09:24:23| |>mountains on a carrier| +|08/01/2022 09:24:24| |A FUCKING DESERT| +|08/01/2022 09:24:24| |Sayori x choco is my fetish| +|08/01/2022 09:24:25| |what is this| +|08/01/2022 09:24:26| AINU +|08/01/2022 09:24:26| |hello natives this land is my land now| +|08/01/2022 09:24:27| AUTISM +|08/01/2022 09:24:27| |indian tank when| +|08/01/2022 09:24:27| |lmao random ass desert| +|08/01/2022 09:24:28| ?????????? +|08/01/2022 09:24:28| NATIVES +|08/01/2022 09:24:29| |INJUN LARPERS| +|08/01/2022 09:24:29| |Native Americans| +|08/01/2022 09:24:30| |>cactus valley| +|08/01/2022 09:24:30| |how can they afford artifical mountain ranges?| +|08/01/2022 09:24:30| UUUUUUUUOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 09:24:30| oishisou +|08/01/2022 09:24:34| |the fuck is this| +|08/01/2022 09:24:35| |Give firewater| +|08/01/2022 09:24:35| |That perfect transition| +|08/01/2022 09:24:37| |4 TRILLION WASTED ON THIS PLACE| +|08/01/2022 09:24:38| KEK +|08/01/2022 09:24:39| |native american (japanese)| +|08/01/2022 09:24:39| |what the fuckl| +|08/01/2022 09:24:39| |native americans?| +|08/01/2022 09:24:41| |ae these traditional mutts?| +|08/01/2022 09:24:43| |HEYA HOYA HEYA HOYA HAYO HOHA| +|08/01/2022 09:24:44| |DAS RACIST| +|08/01/2022 09:24:44| |how tf they get on the ship| +|08/01/2022 09:24:44| |Ah, yes, traditional native american indian popcorn| +|08/01/2022 09:24:46| >AINU +|08/01/2022 09:24:47| |lamo this fucking injun autism is something else| +|08/01/2022 09:24:47| |TAKE DRUGS. KILL A BEAR.| +|08/01/2022 09:24:48| holodeck +|08/01/2022 09:24:49| |DICK MOUNTAIN| +|08/01/2022 09:24:49| |injins | +|08/01/2022 09:24:50| |konoko mauntein| +|08/01/2022 09:24:51| |are these ainu?| +|08/01/2022 09:24:51| |Where does Ooari get all this funding?| +|08/01/2022 09:24:54| oishisou +|08/01/2022 09:24:54| CUTE +|08/01/2022 09:24:55| >mushroom +|08/01/2022 09:24:56| oishiisou +|08/01/2022 09:24:57| oishiisou +|08/01/2022 09:24:57| oishisou +|08/01/2022 09:24:57| |frido chiken| +|08/01/2022 09:24:58| |Kino trapper| +|08/01/2022 09:25:01| |Ah, yes, traditional fried chicken| +|08/01/2022 09:25:02| |wtf is the ooarai ship| +|08/01/2022 09:25:04| |literal autis| +|08/01/2022 09:25:04| AWSMAN +|08/01/2022 09:25:05| |Straight up living in huts even though they're Agriculture students| +|08/01/2022 09:25:10| |>MOUNTAINS ON A SHIP| +|08/01/2022 09:25:12| |GENERATIONS HAVE LIVED AND DIED WITHOUT EVER KNOWING THEY WERE ON A SHIP| +|08/01/2022 09:25:13| |i was literally gone for 5 mins why are they cowboys now| +|08/01/2022 09:25:13| |YOU JUST KNOW| +|08/01/2022 09:25:14| |are they still on a ship?| +|08/01/2022 09:25:15| |SAORI FUCKS BLACK HORSES| +|08/01/2022 09:25:15| |you're a pretty big ship| +|08/01/2022 09:25:16| |KFC is traditional Japanese food| +|08/01/2022 09:25:17| |NO WONDER MEXTBRO WANTED TO FUCKING SHUT THIS SHIP DOWN| +|08/01/2022 09:25:20| |BIG SHIP| +|08/01/2022 09:25:20| |>I wannbe in the cavalry| +|08/01/2022 09:25:21| |NO WONDER THEY WANTED TO SHUT THIS SHIP DOWN| +|08/01/2022 09:25:23| UUUU +|08/01/2022 09:25:25| |BELLEBROS WE'RE GOING TO DO IT | +|08/01/2022 09:25:25| |I GOT A PLAN ARTHUR| +|08/01/2022 09:25:25| |TIL Saori is a fast leaner| +|08/01/2022 09:25:26| |the sky is painted, it's alright| +|08/01/2022 09:25:26| |A FUCKING GUN| +|08/01/2022 09:25:27| |THEY"RE HANGING ME TONIGHT| +|08/01/2022 09:25:27| |look's good| +|08/01/2022 09:25:28| KINO +|08/01/2022 09:25:32| KINO +|08/01/2022 09:25:32| butt +|08/01/2022 09:25:32| BUTT +|08/01/2022 09:25:32| JANE +|08/01/2022 09:25:35| |How the fuck does this all fit on a ship| +|08/01/2022 09:25:36| |HAVE SOME GOD DAMMED FAITH| +|08/01/2022 09:25:36| |>MOUNTAINS >DESERT >FOREST >ON A SHIP| +|08/01/2022 09:25:36| |Actual guns| +|08/01/2022 09:25:37| |Is this still on a ship?| +|08/01/2022 09:25:37| |>Carbon-coated horses and carbon-coated vests| +|08/01/2022 09:25:37| Jane +|08/01/2022 09:25:38| |MMMMM JANE BUTT| +|08/01/2022 09:25:38| zr +|08/01/2022 09:25:40| booba +|08/01/2022 09:25:40| LEGS +|08/01/2022 09:25:41| |they're carbon mountains| +|08/01/2022 09:25:42| WEW +|08/01/2022 09:25:42| ass +|08/01/2022 09:25:42| JANE +|08/01/2022 09:25:43| YOOO +|08/01/2022 09:25:43| OO +|08/01/2022 09:25:43| |TAHITI, ARTHUR| +|08/01/2022 09:25:43| |is this why they can't afford senshado?| +|08/01/2022 09:25:44| ASS +|08/01/2022 09:25:45| |> a ship full of cosplayers| +|08/01/2022 09:25:46| |SHES SO HOT BROS| +|08/01/2022 09:25:46| |Bang Bang| +|08/01/2022 09:25:46| TIDDIES +|08/01/2022 09:25:47| tits +|08/01/2022 09:25:48| |WATASHI WA JANE| +|08/01/2022 09:25:48| |maybe we are all on one big ship| +|08/01/2022 09:25:49| |Jane's Janes| +|08/01/2022 09:25:49| JANE +|08/01/2022 09:25:50| SEEEEEEEEEEEEEEEEEX +|08/01/2022 09:25:51| SEEEEEEEEEEEEEEEEEX +|08/01/2022 09:25:51| WEEEEEW +|08/01/2022 09:25:51| |carbon coated pocket dimensional carrier| +|08/01/2022 09:25:51| |CARBON COATED COWGIRL| +|08/01/2022 09:25:51| |They arrived to MArlboro county| +|08/01/2022 09:25:51| LEWD +|08/01/2022 09:25:52| |OH MY GOD THOSE TITS| +|08/01/2022 09:25:53| |sex. with jane| +|08/01/2022 09:25:53| |GOD I WANT TO FUCK THIS SHERIFF| +|08/01/2022 09:25:54| |ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +|08/01/2022 09:25:54| WEW +|08/01/2022 09:25:55| |ARTHUR MORGAN| +|08/01/2022 09:25:55| |SHES HAS A PLAN| +|08/01/2022 09:25:58| |a bit of a calamity| +|08/01/2022 09:25:59| |OH MY GOD THAT MAKO| +|08/01/2022 09:25:59| |Proud Yukarin!| +|08/01/2022 09:26:00| |Janes sinful body is something else| +|08/01/2022 09:26:01| |The pistol was the Devil's Right Hand| +|08/01/2022 09:26:02| |i HAVE a PLAN| +|08/01/2022 09:26:03| HOWDY +|08/01/2022 09:26:04| |Modern Strange Cowgirls | +|08/01/2022 09:26:06| |Jane's tanned and blonde?| +|08/01/2022 09:26:10| howdy +|08/01/2022 09:26:13| |there could be a better tank than the markiv here| +|08/01/2022 09:26:18| LUMBAGO +|08/01/2022 09:26:18| Umai +|08/01/2022 09:26:19| |Jane's Janes| +|08/01/2022 09:26:20| taberu +|08/01/2022 09:26:20| umai +|08/01/2022 09:26:21| nom +|08/01/2022 09:26:21| TABERU +|08/01/2022 09:26:21| DELISH +|08/01/2022 09:26:22| |A FUCKING GUN| +|08/01/2022 09:26:23| |BIG IRON| +|08/01/2022 09:26:23| yoink +|08/01/2022 09:26:24| |good churro :)| +|08/01/2022 09:26:24| CHURUS +|08/01/2022 09:26:25| umai +|08/01/2022 09:26:25| UMAI +|08/01/2022 09:26:25| UMAI +|08/01/2022 09:26:26| |>a fucking gun| +|08/01/2022 09:26:26| WTF +|08/01/2022 09:26:27| |BIG IRON| +|08/01/2022 09:26:27| |I WANT TO FEED MAKO MY CHURRO| +|08/01/2022 09:26:27| umai +|08/01/2022 09:26:27| |I'd feed her my Churo| +|08/01/2022 09:26:27| >lumbago +|08/01/2022 09:26:28| |Actual guns| +|08/01/2022 09:26:28| BUTT +|08/01/2022 09:26:28| |GUNSHOT SFX| +|08/01/2022 09:26:29| butt +|08/01/2022 09:26:30| |BIG IRON| +|08/01/2022 09:26:31| |fluff get the nade| +|08/01/2022 09:26:31| BUTT +|08/01/2022 09:26:31| |These mega-carriers are full on magic. I do want a full tour. It's nutty.| +|08/01/2022 09:26:32| BUTTE +|08/01/2022 09:26:32| |BIG IRON| +|08/01/2022 09:26:33| |BIG BUTT| +|08/01/2022 09:26:34| butte +|08/01/2022 09:26:35| |20 men had tried to take her 20 men had made the slip| +|08/01/2022 09:26:36| |Guns loaded with paintballs| +|08/01/2022 09:26:36| |HOLY FUCK HER ASS IS HUGE| +|08/01/2022 09:26:38| |BIG IRON| +|08/01/2022 09:26:39| |WHAT THE FUCK IS THIS???????????| +|08/01/2022 09:26:42| |ASS TAKING HALF THE SCREEN| +|08/01/2022 09:26:43| |HER FUCKING CHURRO| +|08/01/2022 09:26:43| YURUSENAI +|08/01/2022 09:26:44| |SHES FAST| +|08/01/2022 09:26:44| |F CHURRO| +|08/01/2022 09:26:45| uresarinai +|08/01/2022 09:26:45| |Slut assumes the whore position.| +|08/01/2022 09:26:46| YURUSENAI +|08/01/2022 09:26:46| |IN THE TOWN OF AGUA FRIA AN STRANGER ONE FINE DAY| +|08/01/2022 09:26:47| |FLintstones Sakuse| +|08/01/2022 09:26:49| wew +|08/01/2022 09:26:50| |MAKO SAVES THE DAY| +|08/01/2022 09:26:53| |Ghost Town Gunfight| +|08/01/2022 09:26:53| |>my dick when I see Jane Daikons| +|08/01/2022 09:26:54| |someone gonna die| +|08/01/2022 09:26:57| |PEE MAN| +|08/01/2022 09:27:01| |TEXAS RED| +|08/01/2022 09:27:02| |SAORI ASS| +|08/01/2022 09:27:04| |PEE MAN| +|08/01/2022 09:27:04| |Look at these larpers| +|08/01/2022 09:27:05| |Mako hates Churro shooters| +|08/01/2022 09:27:08| |WHAT THE FUCK IS GOING ON| +|08/01/2022 09:27:09| SAORI +|08/01/2022 09:27:11| |bros what the fuck is happening I thought this was tankgirls I'm too drunk for this shit| +|08/01/2022 09:27:14| |Peak autism| +|08/01/2022 09:27:16| |MAKO BANZAI| +|08/01/2022 09:27:17| |FINGER GUNS| +|08/01/2022 09:27:18| DDDDDDUUUUUUUUUEEEEEEEEELLLLLLL +|08/01/2022 09:27:19| |WE'RE ALL PACKING HEAT| +|08/01/2022 09:27:20| d/u/el +|08/01/2022 09:27:22| |This is all on a Japanese ship, by the way| +|08/01/2022 09:27:23| KINO +|08/01/2022 09:27:23| |deputized guppies| +|08/01/2022 09:27:23| |BELLEBROS THIS IS OUR YEAR| +|08/01/2022 09:27:23| |this is a high school btw| +|08/01/2022 09:27:23| |THEY HAVE A FUCKING BUFFALO| +|08/01/2022 09:27:24| |Tank girls got guns now| +|08/01/2022 09:27:24| |IDK anymore, this rides taken me over| +|08/01/2022 09:27:24| |fucking chuunis| +|08/01/2022 09:27:25| EEEHHH +|08/01/2022 09:27:25| |holy shit | +|08/01/2022 09:27:26| |The ULTIMATE LARP| +|08/01/2022 09:27:28| THIGHS +|08/01/2022 09:27:28| |And you though senshado larper were bad| +|08/01/2022 09:27:28| KINO +|08/01/2022 09:27:28| |BIG IRON| +|08/01/2022 09:27:29| |That's a very pale mexican| +|08/01/2022 09:27:30| |we already in daikon war????| +|08/01/2022 09:27:31| |OH THEY FUCKING| +|08/01/2022 09:27:31| KINO +|08/01/2022 09:27:32| |BIG IRON| +|08/01/2022 09:27:35| |THERE WAS 40 FT BETWEEN THEM| +|08/01/2022 09:27:38| |ONE LAST DUEL| +|08/01/2022 09:27:39| |duel in a sumo arena fuckin kek| +|08/01/2022 09:27:40| |SPANISH COLONIZERS| +|08/01/2022 09:27:41| Thighs.... +|08/01/2022 09:27:41| |HAVE SOME FAITH MIHO| +|08/01/2022 09:27:41| |ONCE UPON A TIME IN OARAI| +|08/01/2022 09:27:42| |THIS MAKES MY IRON BIG IRON| +|08/01/2022 09:27:42| |A BIG IRON ON HIS HIP| +|08/01/2022 09:27:43| |there are actual western larper enthusiasts in japan btw| +|08/01/2022 09:27:44| |Does Yukari still have her grenade?| +|08/01/2022 09:27:45| |what the fuck am i watching| +|08/01/2022 09:27:45| |wah wah wah| +|08/01/2022 09:27:46| |a universe where everyone larps| +|08/01/2022 09:27:46| |SHE DIED| +|08/01/2022 09:27:47| |THE SWIFTNESS OF THE RANGER | +|08/01/2022 09:27:47| DEAD +|08/01/2022 09:27:48| |Bison feet?| +|08/01/2022 09:27:48| |was mako always this short| +|08/01/2022 09:27:48| |IN THE TOWN OF AGUA FRIA| +|08/01/2022 09:27:49| WASTED +|08/01/2022 09:27:49| BRUTAL +|08/01/2022 09:27:49| GORE +|08/01/2022 09:27:50| |big iron on his hip...| +|08/01/2022 09:27:50| F +|08/01/2022 09:27:51| |WHAT THE FUCK| +|08/01/2022 09:27:52| rip +|08/01/2022 09:27:52| HAYAI +|08/01/2022 09:27:52| |BULLET FAIRLY RIPPED| +|08/01/2022 09:27:52| KILL +|08/01/2022 09:27:53| |Mr Bison| +|08/01/2022 09:27:54| BLUTE +|08/01/2022 09:27:54| |she can't shoot from the hip| +|08/01/2022 09:27:54| F +|08/01/2022 09:27:55| FATALITY +|08/01/2022 09:27:55| DED +|08/01/2022 09:27:55| |I CAN'T BELIEVE SHE KILLED HER| +|08/01/2022 09:27:55| f +|08/01/2022 09:27:56| WEW +|08/01/2022 09:27:56| rip +|08/01/2022 09:27:56| |HOLY FUCK SHE DEAD| +|08/01/2022 09:27:57| |TEXAS RANGER| +|08/01/2022 09:27:58| |HOLY FUCK\| +|08/01/2022 09:27:59| |the swiftness of the ranger is still talked about today| +|08/01/2022 09:27:59| |20 notches on her pistol| +|08/01/2022 09:28:00| |BIG IRRRRRRRROOOOOOOOOOON| +|08/01/2022 09:28:02| lame +|08/01/2022 09:28:02| |CARBON COATED SKIN| +|08/01/2022 09:28:02| kersplat +|08/01/2022 09:28:02| F +|08/01/2022 09:28:02| |I SHOT A GIRL IN OARAI JUST TO WATCH HER DIE| +|08/01/2022 09:28:03| |BIG IRON| +|08/01/2022 09:28:03| |FROM THE HIP LIKE A PRO| +|08/01/2022 09:28:04| |that would hurt if no carbon| +|08/01/2022 09:28:05| |Still runs| +|08/01/2022 09:28:06| SASUGA +|08/01/2022 09:28:07| |YOU JUST KNOW| +|08/01/2022 09:28:07| |WELL THE MAN HAD NOT CLEARED LEATHER| +|08/01/2022 09:28:08| |DRENCHED IN BLOOD| +|08/01/2022 09:28:08| COWARD! +|08/01/2022 09:28:09| Kapow +|08/01/2022 09:28:10| |RIDE LIKE THE WIND| +|08/01/2022 09:28:10| |YOU JUST KNOW| +|08/01/2022 09:28:11| YOU +|08/01/2022 09:28:12| |HE HAD SOME BUISNESS WITH THE BIG IRON ON HIS HIP| +|08/01/2022 09:28:13| |BIG IIIIIIIIIIRON BIG IIIIIIIIIIIIIIRon| +|08/01/2022 09:28:13| UMADACCHI +|08/01/2022 09:28:14| |YOU JUST KNOW| +|08/01/2022 09:28:14| |YOU JUST KNOW| +|08/01/2022 09:28:15| |YOU JUST KNOW| +|08/01/2022 09:28:16| |Saori's bf is so fast| +|08/01/2022 09:28:16| |what the fuck| +|08/01/2022 09:28:17| |YOU JUST KNOW| +|08/01/2022 09:28:18| |You just know!| +|08/01/2022 09:28:18| |OH SHIT| +|08/01/2022 09:28:19| |SAORI PLEASE LASSO ME INSTEAD ;____;| +|08/01/2022 09:28:20| |RAPE HORSE TIME| +|08/01/2022 09:28:22| |NO PANSU SHOT| +|08/01/2022 09:28:23| |>she's mastered riding| +|08/01/2022 09:28:24| |RAPE TIME| +|08/01/2022 09:28:24| |You just know| +|08/01/2022 09:28:25| |Saori: A horse is fine too| +|08/01/2022 09:28:25| |popular with horses| +|08/01/2022 09:28:25| |YOU JUST KNOW| +|08/01/2022 09:28:25| |Weird ass tank she's riding| +|08/01/2022 09:28:27| |YOU JUST KNOW| +|08/01/2022 09:28:27| |UMAPYOI UMAPYOI| +|08/01/2022 09:28:27| |>that fucking horse rape face| +|08/01/2022 09:28:27| >YJN +|08/01/2022 09:28:27| |dat horse| +|08/01/2022 09:28:28| |YOU JUST KNOW| +|08/01/2022 09:28:28| |Should have just threw a tomato| +|08/01/2022 09:28:29| |ME ON THE LEFT| +|08/01/2022 09:28:29| YOU +|08/01/2022 09:28:29| |SAORI FUCKS HORSES| +|08/01/2022 09:28:29| |GIW I was choco| +|08/01/2022 09:28:30| |YOU JUST KNOW| +|08/01/2022 09:28:30| |OK SAORI| +|08/01/2022 09:28:33| |YOU JUST KNOW| +|08/01/2022 09:28:33| DAIKON +|08/01/2022 09:28:33| |YOU JUST KNOWWWWWWWWWWWWWWW| +|08/01/2022 09:28:35| DAIKON +|08/01/2022 09:28:36| | WHITE GIRLS| +|08/01/2022 09:28:38| |big daikon conspiracy| +|08/01/2022 09:28:39| |This was just roleplay| +|08/01/2022 09:28:40| |DAIKON WAR| +|08/01/2022 09:28:41| |>SHOVE THEM INSIDE| +|08/01/2022 09:28:42| |>subtle metaphor| +|08/01/2022 09:28:42| |the doujin writes itself!| +|08/01/2022 09:28:44| |daikon thievery| +|08/01/2022 09:28:44| |Popular with horses AND boys| +|08/01/2022 09:28:45| IBURIGAKKO??????? +|08/01/2022 09:28:45| |whiy is she smoking firewood| +|08/01/2022 09:28:47| cute +|08/01/2022 09:28:49| UMAI +|08/01/2022 09:28:49| |YOU JUST KNOW| +|08/01/2022 09:28:51| D-DAIKON? +|08/01/2022 09:28:52| |But... why| +|08/01/2022 09:28:59| oishii +|08/01/2022 09:29:00| |I want to commit a crime| +|08/01/2022 09:29:01| |HODOYOI SHOPPASA| +|08/01/2022 09:29:03| |fragant and salty| +|08/01/2022 09:29:03| |>smoked daikon| +|08/01/2022 09:29:04| |daikon for lonely nights| +|08/01/2022 09:29:05| |>eating stolen goods| +|08/01/2022 09:29:06| |EAT DAIKON KIMCHI| +|08/01/2022 09:29:07| |I DONT GET WHY| +|08/01/2022 09:29:08| |I would like to try some...| +|08/01/2022 09:29:09| |Choco really is choco| +|08/01/2022 09:29:14| |Jesus fucking christ look at those hips| +|08/01/2022 09:29:17| |PECAN PIE| +|08/01/2022 09:29:17| |>misunderstood villian| +|08/01/2022 09:29:23| |gib daikon pls| +|08/01/2022 09:29:25| |i'd give her the D(aikon)| +|08/01/2022 09:29:25| |SO GOOD| +|08/01/2022 09:29:27| |Built for childbearing| +|08/01/2022 09:29:28| |based ranger| +|08/01/2022 09:29:31| Tanks? +|08/01/2022 09:29:32| |goodness gracious Jane is so hot| +|08/01/2022 09:29:32| |So is this the next tank team?| +|08/01/2022 09:29:33| |SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX COWBOY SEX| +|08/01/2022 09:29:33| |>DAIKON CRIMES| +|08/01/2022 09:29:35| |I would give her my daikon| +|08/01/2022 09:29:36| |What guppies aren't built for childbearing?| +|08/01/2022 09:29:37| |MAKO APPROVES| +|08/01/2022 09:29:40| |what is the purpose of this ova?| +|08/01/2022 09:29:40| |they're on a pretty big ship| +|08/01/2022 09:29:41| |/u/ wins again| +|08/01/2022 09:29:42| |MUH 20 ACRES| +|08/01/2022 09:29:42| |>already more likable than sharks| +|08/01/2022 09:29:45| |mako has seen some shit| +|08/01/2022 09:29:52| |mako wire| +|08/01/2022 09:29:53| |ok what was the real reason she wanted those big tubers| +|08/01/2022 09:29:53| Mako... +|08/01/2022 09:29:54| legs! +|08/01/2022 09:29:54| |I cry everynight thinking about how Jane isnt real| +|08/01/2022 09:29:55| |replace sharks with cowboys| +|08/01/2022 09:29:55| |/u/fags >>>/out/| +|08/01/2022 09:29:56| |they wasted so much building this| +|08/01/2022 09:29:57| |WHO in their right mind won't give her their Daikon?| +|08/01/2022 09:29:59| |>mako wide awake| +|08/01/2022 09:30:01| |I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS | +|08/01/2022 09:30:04| |but cutelass can still run the bar| +|08/01/2022 09:30:08| |they may be more likable than the sharks, but the sharks will always be more lovable| +|08/01/2022 09:30:19| |they literally built a mountan range | +|08/01/2022 09:30:20| |KINO MUSIC| +|08/01/2022 09:30:26| |I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON| +|08/01/2022 09:30:27| |dude carbon lmao| +|08/01/2022 09:30:28| KINO +|08/01/2022 09:30:29| |>implying girls being chuunis about random shit is a waste| +|08/01/2022 09:30:30| |Why the fuck is her corset outside| +|08/01/2022 09:30:30| REPEATER +|08/01/2022 09:30:31| BASED +|08/01/2022 09:30:31| |Pretty sure it's just to get more characters to slowly replace the ones who graduate or what ev| +|08/01/2022 09:30:32| |AS IIII WALK DOWN IN THE STREETS OF OARAI| +|08/01/2022 09:30:33| KINO +|08/01/2022 09:30:34| |IS this an OVA? I've never seen this.| +|08/01/2022 09:30:35| |LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK| +|08/01/2022 09:30:35| |CABRON COATED LARPERS| +|08/01/2022 09:30:35| |no wonder mextcuck wanted to close it up| +|08/01/2022 09:30:36| |holodeck tech| +|08/01/2022 09:30:36| |USA USA USA USA USA USA USA USA | +|08/01/2022 09:30:36| >OST +|08/01/2022 09:30:37| |ITS HOT| +|08/01/2022 09:30:37| KINO +|08/01/2022 09:30:38| |K I N O| +|08/01/2022 09:30:40| |This is still a highschool on a ship| +|08/01/2022 09:30:41| |USA USA USA| +|08/01/2022 09:30:41| |girls und horse| +|08/01/2022 09:30:42| |where did jane get the carbon| +|08/01/2022 09:30:43| |did they build a night sky with stars on the ship wtf???????| +|08/01/2022 09:30:44| |>No Horse tank| +|08/01/2022 09:30:45| |>all these horses| +|08/01/2022 09:30:46| KINO +|08/01/2022 09:30:46| |A FISTFUL OF DAIKON| +|08/01/2022 09:30:47| |SADDLE UP| +|08/01/2022 09:30:47| |Jane didn't say no though| +|08/01/2022 09:30:48| Jane... +|08/01/2022 09:30:48| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:30:48| |yes it's an ova bundled with the latest| +|08/01/2022 09:30:49| |There has to be some weird feint in the next battle to make this special make sense.| +|08/01/2022 09:30:49| |KINO COWGIRL RIDES ON| +|08/01/2022 09:30:49| |SEE YOU SHIP COYBOY| +|08/01/2022 09:30:49| |Jane makes my dick carbon coated| +|08/01/2022 09:30:51| |Ooa-rai Ooa-rai | +|08/01/2022 09:30:53| panzah? +|08/01/2022 09:30:53| |YOU JUST KNOW| +|08/01/2022 09:30:53| |so sad| +|08/01/2022 09:30:54| KINO +|08/01/2022 09:30:54| |You just know| +|08/01/2022 09:30:54| KINO +|08/01/2022 09:30:54| |KINO AS FUCK| +|08/01/2022 09:30:56| |Where are the Daltons?| +|08/01/2022 09:30:56| |RED DEAD REDEMPTION 3 LOOKS LIT| +|08/01/2022 09:30:57| |Hotpants are nice| +|08/01/2022 09:30:57| |THIS MUSIC| +|08/01/2022 09:30:57| |BIG SHIP| +|08/01/2022 09:30:58| KINO +|08/01/2022 09:30:58| KINOOOO +|08/01/2022 09:31:00| kino +|08/01/2022 09:31:00| KINO +|08/01/2022 09:31:01| |Ah thanks| +|08/01/2022 09:31:01| KINO +|08/01/2022 09:31:01| |DIRECTED BY CLINT EASTWOOD| +|08/01/2022 09:31:03| |Imagine talking to Jane in 10 years about her dark chuuni past as a cowboy sheriff | +|08/01/2022 09:31:04| |FISFUL OF DAIKONS| +|08/01/2022 09:31:04| |If I could get a whole bunch of teen girls to roleplay as cowgirls I'd spare no expense too| +|08/01/2022 09:31:05| Kino +|08/01/2022 09:31:05| KINO +|08/01/2022 09:31:07| kino +|08/01/2022 09:31:08| OOOOOOOOOOARAI +|08/01/2022 09:31:09| OARARARARARAI +|08/01/2022 09:31:09| KINO +|08/01/2022 09:31:09| |MUSIC :)| +|08/01/2022 09:31:12| |For a few Daikon more| +|08/01/2022 09:31:12| |O ARAI RAI RAI| +|08/01/2022 09:31:13| |RAI RAI| +|08/01/2022 09:31:14| |O ARAI RAI| +|08/01/2022 09:31:14| |O ARAI RAI RAI OARAI| +|08/01/2022 09:31:14| KINO +|08/01/2022 09:31:15| AORIAORIAORIAROAIROAIRORIRIRAOAIRAOIRIAORIAOIAORIAROAIROAIRAORIAORI +|08/01/2022 09:31:15| |big tonks| +|08/01/2022 09:31:16| OARAI +|08/01/2022 09:31:17| |For a Few Daikon More| +|08/01/2022 09:31:17| |what was the point of this ova| +|08/01/2022 09:31:17| |How much does it cost to build a mountain range?| +|08/01/2022 09:31:18| OOOOOOOOOOAAAAAAAAAAAAARRRRRRRRRRRAAAAAAAAIIIIIIIIII +|08/01/2022 09:31:18| OOOOOARAIRAIRAIRAI +|08/01/2022 09:31:19| |NEW WAIFU| +|08/01/2022 09:31:19| UOOORAI +|08/01/2022 09:31:20| |Who put a western in my tank anime| +|08/01/2022 09:31:22| |tbh it would have been better to end the marathon with this OVA| +|08/01/2022 09:31:22| |O RAI RAI OARAI| +|08/01/2022 09:31:22| |Once upon a time in Oarai| +|08/01/2022 09:31:22| |O ARAI RAI RAI RAI RAI| +|08/01/2022 09:31:22| KINO +|08/01/2022 09:31:24| |I'm a poor lonesome cowboy, I'm a poor lonesome cowboy and far away from home| +|08/01/2022 09:31:25| |KINO SONG| +|08/01/2022 09:31:26| OARAI +|08/01/2022 09:31:28| |If Jane was the singer, she got vocals| +|08/01/2022 09:31:28| |goodbye shane| +|08/01/2022 09:31:28| |The quick and the daikon| +|08/01/2022 09:31:31| |O arai Rai Rai Oarai| +|08/01/2022 09:31:32| |BASED WESTERN FANS| +|08/01/2022 09:31:32| |see you in 5 years fuckers| +|08/01/2022 09:31:33| |I hope we see them again| +|08/01/2022 09:31:33| >over +|08/01/2022 09:31:33| 888888 +|08/01/2022 09:31:34| |tree fitty| +|08/01/2022 09:31:34| |THE END| +|08/01/2022 09:31:36| KINO +|08/01/2022 09:31:36| |if you know horses for more than 5 minutes you've also seen horse dicks| +|08/01/2022 09:31:37| |>this is all on a carrier| +|08/01/2022 09:31:38| bravo +|08/01/2022 09:31:38| KINO +|08/01/2022 09:31:39| noooooooooooooooooooooooooooooooooooooooooooo +|08/01/2022 09:31:39| |AND SO THE COWGIRL WHO CHEATED THE ASSIGNEMNTS| +|08/01/2022 09:31:40| |Million dollar daikon| +|08/01/2022 09:31:40| |THE END| +|08/01/2022 09:31:40| |the good, the bad and momo| +|08/01/2022 09:31:40| |THE END| +|08/01/2022 09:31:41| 8888 +|08/01/2022 09:31:42| |>horse stops getting further away| +|08/01/2022 09:31:43| |Maybe they wouldn't have tried to close the school if it didn't have a giant useless mountain range in it| +|08/01/2022 09:31:43| |ITSUMO NO YATSU| +|08/01/2022 09:31:45| |inter inter misiion?| +|08/01/2022 09:31:46| |see yall in 2024| +|08/01/2022 09:31:47| |I want to see a tank shaped like a horse | +|08/01/2022 09:31:47| WHY +|08/01/2022 09:31:47| sip +|08/01/2022 09:31:47| SUGARY +|08/01/2022 09:31:52| SEAMLESS +|08/01/2022 09:31:53| Umai +|08/01/2022 09:31:56| |RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +|08/01/2022 09:31:58| |Perfect cut| +|08/01/2022 09:31:59| |wtf bros we just timetraveled backa few months| +|08/01/2022 09:32:00| |bartender sex| +|08/01/2022 09:32:06| |don't use a flag again you fuckin chuunis| +|08/01/2022 09:32:09| |2 YEARS | +|08/01/2022 09:32:10| |Dumb momo| +|08/01/2022 09:32:11| |Cutelass is the only good shark| +|08/01/2022 09:32:11| SEAMLESS +|08/01/2022 09:32:12| F +|08/01/2022 09:32:14| SEEEEEEEEEEEEEEEEEEEEEX +|08/01/2022 09:32:15| |tags: emotionless sexx| +|08/01/2022 09:32:15| wew +|08/01/2022 09:32:19| |THE BURN IT HURTS SO GOOD| +|08/01/2022 09:32:21| |I HATE THE PIRATES| +|08/01/2022 09:32:22| |2 more years...| +|08/01/2022 09:32:23| |10 TIMES THE SPICE| +|08/01/2022 09:32:24| |I DON'T WANT IT TO END!| +|08/01/2022 09:32:27| |murakami pls crush me| +|08/01/2022 09:32:30| |which shark anons| +|08/01/2022 09:32:30| |It was just Mako's dream| +|08/01/2022 09:32:30| |I LOVE THE PIRATES| +|08/01/2022 09:32:32| |BENIS TIEM :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:32:32| |when does it end?| +|08/01/2022 09:32:33| |Momo can't | +|08/01/2022 09:32:33| |they HAVE to be useful next match| +|08/01/2022 09:32:38| |UGIN GANG| +|08/01/2022 09:32:41| |SHARK TEAM WILL BE USEFUL | +|08/01/2022 09:32:43| |LUL get fucked| +|08/01/2022 09:32:48| |love me rum| +|08/01/2022 09:32:51| |The Shark team has to do something.| +|08/01/2022 09:32:51| UHU +|08/01/2022 09:32:53| ANZU +|08/01/2022 09:32:57| |>WW1 tank No they won't be useful| +|08/01/2022 09:32:58| |Isn't fighting without a flag a warcrime?| +|08/01/2022 09:33:01| |SHARK TEAM WILL GET TAKEN OUT BY AN MG| +|08/01/2022 09:33:02| naso +|08/01/2022 09:33:05| |scorched butt lol| +|08/01/2022 09:33:18| |If Shark kill anything my autism will flare up| +|08/01/2022 09:33:26| |Ogin is going to shoot Youko with an actual gun!| +|08/01/2022 09:33:29| 2ugly4photo +|08/01/2022 09:33:33| Anzu +|08/01/2022 09:33:34| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 09:33:34| |NO IMAGE| +|08/01/2022 09:33:36| |SOUND ONLY Momo| +|08/01/2022 09:33:38| |Anzu SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX| +|08/01/2022 09:33:38| |no photo...| +|08/01/2022 09:33:39| |kek no image| +|08/01/2022 09:33:39| |NO PIC AVAILABLE| +|08/01/2022 09:33:39| noooooooooooooooo +|08/01/2022 09:33:40| ;_; +|08/01/2022 09:33:40| |no image :(| +|08/01/2022 09:33:42| NOOOOOOOOOOOOOOOOOO +|08/01/2022 09:33:44| |NO IMAGE FOR MOMO| +|08/01/2022 09:33:44| |noooo i love them all don't go| +|08/01/2022 09:33:45| |TL what does anzu mean??| +|08/01/2022 09:33:45| |>no picture literally me| +|08/01/2022 09:33:47| |LETS JUST SCROLL OVER MOMO REAL QUICK| +|08/01/2022 09:33:47| |>suzuki is graduating ;_;| +|08/01/2022 09:33:47| MOMONIMOUS +|08/01/2022 09:33:48| |NO IMAGE| +|08/01/2022 09:33:48| ;_; +|08/01/2022 09:33:49| SODOKO +|08/01/2022 09:33:50| |please dont graduate| +|08/01/2022 09:33:53| bros.... +|08/01/2022 09:33:53| |Feels sad| +|08/01/2022 09:33:55| |not my piyotan| +|08/01/2022 09:33:56| |>the ENTIRE auto club| +|08/01/2022 09:33:57| FINALLY +|08/01/2022 09:33:58| |Alexa play Sillanpään marssilaulu| +|08/01/2022 09:33:59| |auto club getting gutted is a major blow| +|08/01/2022 09:34:00| |Pyo-tan is like 50 years old why did she not graduate already| +|08/01/2022 09:34:00| |don't make me cry...| +|08/01/2022 09:34:00| KATYUSHA +|08/01/2022 09:34:00| |KATYUSHACHADS ITS OUR TIME| +|08/01/2022 09:34:00| |The end of an era| +|08/01/2022 09:34:00| |Anzu legs| +|08/01/2022 09:34:01| |Anzu... my cunny| +|08/01/2022 09:34:01| |All this tank battling almost makes me want to play World of Tanks. Still not gonna though.| +|08/01/2022 09:34:01| Anzu... +|08/01/2022 09:34:02| ;_; +|08/01/2022 09:34:03| URAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:34:03| |Anzu TL....| +|08/01/2022 09:34:04| |ERIKA TIME LADS| +|08/01/2022 09:34:04| |EASTERN FRONT| +|08/01/2022 09:34:06| |RIP LEOPON| +|08/01/2022 09:34:06| |WANI WANI WANI WANI| +|08/01/2022 09:34:07| |it's okay guys momo is repeating the year| +|08/01/2022 09:34:07| |HULL DOWN| +|08/01/2022 09:34:09| |OH SHIT ITS KURSK| +|08/01/2022 09:34:09| |stupid midget stupid hubris| +|08/01/2022 09:34:09| |ERIKA BROS!| +|08/01/2022 09:34:09| |what the fuck, who will fix tanks and drift ferocisouly| +|08/01/2022 09:34:10| |>new freshman characters soon| +|08/01/2022 09:34:10| |MIGDET TIME| +|08/01/2022 09:34:12| ERIKA!!! +|08/01/2022 09:34:12| |Auto club ;_;| +|08/01/2022 09:34:13| |pls don't job this time Maus| +|08/01/2022 09:34:14| Erikabros +|08/01/2022 09:34:14| |SIEG HEIL o/| +|08/01/2022 09:34:15| |Prepare to get Wani'd| +|08/01/2022 09:34:15| KURSK +|08/01/2022 09:34:16| |GREMLIM TIME| +|08/01/2022 09:34:17| |ERIKA HOURS| +|08/01/2022 09:34:19| |ERIKA CHARACTER DEVELOPMENT ARC| +|08/01/2022 09:34:20| MAUS +|08/01/2022 09:34:21| |Why the tanned Leopon girls got to graduate?| +|08/01/2022 09:34:21| |REVENGE FOR NORWAY| +|08/01/2022 09:34:22| MASSUGU +|08/01/2022 09:34:23| |hand signal time| +|08/01/2022 09:34:25| ERIKA +|08/01/2022 09:34:25| |DUMB CUTE WANI LOVE | +|08/01/2022 09:34:26| |CUTE WANI| +|08/01/2022 09:34:28| |ZENSHIN ARU NOMI| +|08/01/2022 09:34:32| |>hand signals| +|08/01/2022 09:34:32| |OMG ERIKA EPIC NOW??| +|08/01/2022 09:34:34| |secret signs| +|08/01/2022 09:34:35| |Dumb fucking hand signs, just talk| +|08/01/2022 09:34:35| |>they don't have radios| +|08/01/2022 09:34:36| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:34:37| PRINYATA +|08/01/2022 09:34:37| |Erika we need to develop your character for the semifinals| +|08/01/2022 09:34:38| CUTE +|08/01/2022 09:34:38| |What's the point of the Panzer III?| +|08/01/2022 09:34:39| |you can't learn russian| +|08/01/2022 09:34:40| |The only actual Russian| +|08/01/2022 09:34:42| |tacticool hand signs| +|08/01/2022 09:34:43| cute +|08/01/2022 09:34:44| lmao +|08/01/2022 09:34:45| WHAT? +|08/01/2022 09:34:45| |CYKA BLYAT| +|08/01/2022 09:34:48| |SHES SO CUTE LADS| +|08/01/2022 09:34:48| cute +|08/01/2022 09:34:48| |I LOVE KATYUSHA'S GAY MOMS| +|08/01/2022 09:34:49| |panzer III is cute| +|08/01/2022 09:34:50| CUTE +|08/01/2022 09:34:53| |you don't even know japanese| +|08/01/2022 09:34:54| |NO RUSSIAN ONLY HAND SIGNALS| +|08/01/2022 09:34:54| |Why is she doing hand signals when they have radio| +|08/01/2022 09:34:56| |NIHONGO DE HANASHI NASAI YO!| +|08/01/2022 09:34:56| UOOOOOOOOOOOOHHHHHHH +|08/01/2022 09:34:57| |SHadow puppets lel| +|08/01/2022 09:34:57| |NIHONGO DE HANASHINASAI YO| +|08/01/2022 09:34:58| |Is Karla a haffu?| +|08/01/2022 09:34:58| |GED OUD OF HIR SDALGER| +|08/01/2022 09:34:58| |You will never learn Russian ;_;| +|08/01/2022 09:35:00| OPACHKI +|08/01/2022 09:35:02| |dude vodka lmao| +|08/01/2022 09:35:06| |remember no handsings| +|08/01/2022 09:35:07| btfo +|08/01/2022 09:35:07| |shot trap kitaa| +|08/01/2022 09:35:08| |MAUS BROS.......| +|08/01/2022 09:35:09| CLANG +|08/01/2022 09:35:10| |MAUS JOBBED AGAIN| +|08/01/2022 09:35:11| OMG +|08/01/2022 09:35:11| |Klara is a Russian exchange student| +|08/01/2022 09:35:12| |SHOT TRAP| +|08/01/2022 09:35:12| |You will never be Slavic| +|08/01/2022 09:35:13| pos +|08/01/2022 09:35:13| BAM +|08/01/2022 09:35:14| |Couldn't they just shoot the tracks out on the Maus| +|08/01/2022 09:35:14| |>entrenching your tank all the way up to the turret| +|08/01/2022 09:35:14| |KV-2's FIRST KILL| +|08/01/2022 09:35:14| F +|08/01/2022 09:35:14| ded +|08/01/2022 09:35:15| |hand signals disrespected into shadow puppets| +|08/01/2022 09:35:15| |CRITICL HIT| +|08/01/2022 09:35:16| KV-CHAN!!!! +|08/01/2022 09:35:17| |HOLY SHIT| +|08/01/2022 09:35:19| |the mouse...| +|08/01/2022 09:35:19| |based kv2| +|08/01/2022 09:35:20| |KV2 KILL| +|08/01/2022 09:35:21| |date date date| +|08/01/2022 09:35:21| |maus lol| +|08/01/2022 09:35:21| |Maus? More like JOB| +|08/01/2022 09:35:24| KV-CHAN +|08/01/2022 09:35:25| |DRIVER'S FUCKING DEAD| +|08/01/2022 09:35:26| |Maus bros no way...| +|08/01/2022 09:35:26| OGEY +|08/01/2022 09:35:27| |i want the kv2 grils to beat me up| +|08/01/2022 09:35:27| |6 crew ded| +|08/01/2022 09:35:31| |date date date (for Yukari)| +|08/01/2022 09:35:31| |ERIKA SEETHING| +|08/01/2022 09:35:32| |UNFUCK YOURSELF WANI FUCK| +|08/01/2022 09:35:34| |erika mad| +|08/01/2022 09:35:39| |Charge in like retards!| +|08/01/2022 09:35:39| KUU +|08/01/2022 09:35:40| |is that a fucking ferdinand?| +|08/01/2022 09:35:41| |DUMB WANI| +|08/01/2022 09:35:42| |KAHVEH TAN WE HAVE THIS IN THE BAG| +|08/01/2022 09:35:42| 前進あるのみ! +|08/01/2022 09:35:42| |Mein Gott it's another Stalingrad| +|08/01/2022 09:35:43| WAAAAAAANNNNNNNIIIIIIIIII +|08/01/2022 09:35:43| |UNFUCK YOURSELF WANI FUCK| +|08/01/2022 09:35:45| TOTSUGEKI +|08/01/2022 09:35:45| |kuroromine must hate maus team| +|08/01/2022 09:35:46| |WANI AF| +|08/01/2022 09:35:48| |OH NONONOOOON WANIBRO....THIS IS IT| +|08/01/2022 09:35:48| |KURSK FLASHBACKS| +|08/01/2022 09:35:49| |chihatan moment| +|08/01/2022 09:35:59| 786KB +|08/01/2022 09:36:00| autism +|08/01/2022 09:36:01| |God Koume is so useless| +|08/01/2022 09:36:02| |ERIKA SEETHING| +|08/01/2022 09:36:03| |how many operators does the maus need anyways| +|08/01/2022 09:36:03| Erika... +|08/01/2022 09:36:04| |RED ARMY BROS| +|08/01/2022 09:36:04| |FIND YOUR OWN SENSHADOU| +|08/01/2022 09:36:04| |Its over| +|08/01/2022 09:36:07| >Kursk +|08/01/2022 09:36:08| |Erika, jus B urself. - Maho| +|08/01/2022 09:36:08| EEEEEEEEERIKA +|08/01/2022 09:36:08| |Pay to Win Black Forest| +|08/01/2022 09:36:09| |MY MAHO WIFE| +|08/01/2022 09:36:10| |COPE WANI| +|08/01/2022 09:36:10| |is it really nishizumi way to charge entrenched high ground enemy| +|08/01/2022 09:36:10| BORSCHT +|08/01/2022 09:36:10| (((((786kb)))))) +|08/01/2022 09:36:11| |fucking borscht| +|08/01/2022 09:36:11| BORSCHT +|08/01/2022 09:36:11| FEGELIN +|08/01/2022 09:36:11| shellshock +|08/01/2022 09:36:12| |FORMER CHAMPION: CHARGES FORTIFIED POSITION WITH NO PLAN| +|08/01/2022 09:36:13| SEETH +|08/01/2022 09:36:13| 前進困難です! +|08/01/2022 09:36:14| |We've got this Pravbros| +|08/01/2022 09:36:14| |Erika looking like a soup sandwich| +|08/01/2022 09:36:14| SEETHING +|08/01/2022 09:36:16| |what a loser| +|08/01/2022 09:36:17| |AND THEN ERIKA BECAME A GENIUS| +|08/01/2022 09:36:17| seething +|08/01/2022 09:36:17| |find own senshado = autism| +|08/01/2022 09:36:22| |ganbare erika| +|08/01/2022 09:36:23| |Chuuni wani| +|08/01/2022 09:36:23| |increase autism 400%| +|08/01/2022 09:36:24| |J O M P| +|08/01/2022 09:36:26| |Time for Kino tank jump| +|08/01/2022 09:36:27| |DUMB WANI| +|08/01/2022 09:36:28| |NISHIZUMI STYLE| +|08/01/2022 09:36:29| |Miho be like:| +|08/01/2022 09:36:29| |ENLIGHTENED WANI| +|08/01/2022 09:36:29| WAHOO +|08/01/2022 09:36:35| |LUL prepar to get fucked Stalin| +|08/01/2022 09:36:35| ???????????????????????????? +|08/01/2022 09:36:36| |SHE DID DA JUMP| +|08/01/2022 09:36:37| |At that moment she became less of a bitch| +|08/01/2022 09:36:37| |ASSUMINg DIRECT CONTROL| +|08/01/2022 09:36:38| EEEERIKA +|08/01/2022 09:36:39| |WANI REBORN| +|08/01/2022 09:36:39| |CHUUNI INBOUND| +|08/01/2022 09:36:40| Kohlenklau +|08/01/2022 09:36:40| |MY TANK NOW| +|08/01/2022 09:36:40| |just switch tanks lole| +|08/01/2022 09:36:41| 私だけの戦車道・・・ +|08/01/2022 09:36:43| |Shiho gonna disown Erika for following her own senshado| +|08/01/2022 09:36:43| |Time for Blitz| +|08/01/2022 09:36:45| cute +|08/01/2022 09:36:45| |BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG| +|08/01/2022 09:36:47| |That face| +|08/01/2022 09:36:50| |IT'S SANIC TIME| +|08/01/2022 09:36:53| KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG +|08/01/2022 09:36:53| |Hey that's us!| +|08/01/2022 09:36:56| |Crew art is kino| +|08/01/2022 09:36:56| |lemme just switch tanks mid battle| +|08/01/2022 09:36:57| |danmaku she says| +|08/01/2022 09:36:58| |AROUND THE MAGINOT INT THE ARDENNES| +|08/01/2022 09:37:00| |LITERALLY US | +|08/01/2022 09:37:00| DANMAKU +|08/01/2022 09:37:00| 弾幕! +|08/01/2022 09:37:04| |Panthers are cute| +|08/01/2022 09:37:04| |FUCK SLOW AND STEADY, GO FAST EAT ASS| +|08/01/2022 09:37:04| >_0 +|08/01/2022 09:37:05| TINY +|08/01/2022 09:37:06| |ITS TIME ERIKA BROS!!!!| +|08/01/2022 09:37:07| |GUDERIAN RISES| +|08/01/2022 09:37:08| |GET DOWN FROM THERE IT'S DANGEROUS | +|08/01/2022 09:37:10| |SIEG HEIL o/| +|08/01/2022 09:37:13| |BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG| +|08/01/2022 09:37:14| EEEERIKA +|08/01/2022 09:37:14| |dat shimmy| +|08/01/2022 09:37:14| |BALANCING KATYUSHA| +|08/01/2022 09:37:14| |ITS TIME NAZBROS| +|08/01/2022 09:37:17| o/ +|08/01/2022 09:37:17| ERIKA! +|08/01/2022 09:37:17| EEEEEEERIKA +|08/01/2022 09:37:18| ERIKA +|08/01/2022 09:37:18| |PANZERELITE BORN TO COMPETE| +|08/01/2022 09:37:20| |GREN HILL ZONE (shittyfluted). MP3| +|08/01/2022 09:37:20| |AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELEIN| +|08/01/2022 09:37:20| EEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:20| |AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELEIN| +|08/01/2022 09:37:21| |UND DAS HEIẞT| +|08/01/2022 09:37:21| |UND DAS HEISST| +|08/01/2022 09:37:21| |UND DAS HEISST| +|08/01/2022 09:37:22| EEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:22| ERIKA +|08/01/2022 09:37:22| |HEIL ERIKA o/| +|08/01/2022 09:37:22| |UND DAS HEISST| +|08/01/2022 09:37:23| ERIKAAAAAAAAA +|08/01/2022 09:37:23| ERIKA! +|08/01/2022 09:37:24| |WHEN ARE THEY GONNA SING ERIKA?!?!?!?!?!!?| +|08/01/2022 09:37:24| 前進あるのみ! +|08/01/2022 09:37:25| EEEEEEEEEEEEERIKA +|08/01/2022 09:37:25| Erika +|08/01/2022 09:37:25| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:26| |bum bum bum| +|08/01/2022 09:37:26| |KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG| +|08/01/2022 09:37:27| e +|08/01/2022 09:37:27| EEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:27| EEEEEEEEERIKA +|08/01/2022 09:37:27| ERIKAAAAAAAAAAAAA +|08/01/2022 09:37:28| ERIIIIIIKA +|08/01/2022 09:37:28| |UND DAS HEIST| +|08/01/2022 09:37:29| |KUROMORIMINE UBER ALLES| +|08/01/2022 09:37:29| o7 +|08/01/2022 09:37:30| |we love u erika| +|08/01/2022 09:37:31| ERIKA +|08/01/2022 09:37:31| EEEEERIKA +|08/01/2022 09:37:32| ERIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:37:33| |GO GO GO ERIKAAAAAA| +|08/01/2022 09:37:33| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:34| |PRESS S TO STAMP YOUR FEET TO ERIKA| +|08/01/2022 09:37:36| |WANI WANI WANI| +|08/01/2022 09:37:37| EEEEEERIIIKAAAAAAAAAAAAAAA +|08/01/2022 09:37:37| EEEEEEEEERIKA +|08/01/2022 09:37:37| ERIKAAAAAAAAAA +|08/01/2022 09:37:37| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:38| ERIKAAAA +|08/01/2022 09:37:38| |UND DAST HIEST ERRRIIIKKAAAAAAA| +|08/01/2022 09:37:39| EEEEEEEEEERRRRRRRRRRIIIIIIIIIIIIIIIIIIKKKKKKKKKKKKAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:37:39| |watashi no senshado...| +|08/01/2022 09:37:40| EEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:40| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:40| |ERIKA IS STILL A SHIT| +|08/01/2022 09:37:41| |>THE FUCK IS THIS? THE FUCK IS THAT?| +|08/01/2022 09:37:42| ERIKAAAAA +|08/01/2022 09:37:43| ERIKA +|08/01/2022 09:37:43| |WHAT IF THE REAL RIECH WAS THE FRIENDS WE MADE ALONG THE WAY?????????????????????????????????????????????| +|08/01/2022 09:37:43| |Erika is the smartest| +|08/01/2022 09:37:43| EEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:43| |UND DAST HEIST| +|08/01/2022 09:37:45| EEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:46| |Hartmann is best Erika| +|08/01/2022 09:37:47| EEEEEEEEEEEEERRRRRRRRRRRIKKKKKKKKKKKKKKKAAAAAAAAA +|08/01/2022 09:37:47| |1488 HEIL ERIKA| +|08/01/2022 09:37:53| |Why aren't they just rushing the flag tank too| +|08/01/2022 09:37:55| |kill that commie bastard| +|08/01/2022 09:37:57| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:58| |UND DAS HEISST| +|08/01/2022 09:38:02| |Erika ist meine Frau| +|08/01/2022 09:38:03| :D +|08/01/2022 09:38:03| ERIKA +|08/01/2022 09:38:04| EEEEEEEEEEERIKA +|08/01/2022 09:38:04| EEEEEEEEEEEEERIIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:38:06| EEEEEEEEEEERIKA +|08/01/2022 09:38:07| :D +|08/01/2022 09:38:08| |Don't have to use the Nishizumi way if you ain't Maho| +|08/01/2022 09:38:09| |Erika gehört ins Gas| +|08/01/2022 09:38:10| |Remove Communist| +|08/01/2022 09:38:12| |卐 UND DAS HEIßT EEEERIKAAAAA 卐| +|08/01/2022 09:38:16| |Man Katyusha must be be reall dumb| +|08/01/2022 09:38:17| UTE +|08/01/2022 09:38:18| EEEEEEEERIKA +|08/01/2022 09:38:18| |The music timing| +|08/01/2022 09:38:20| UTE +|08/01/2022 09:38:21| |fat klara| +|08/01/2022 09:38:21| EEEEEEEEEEEEEEEERIKA +|08/01/2022 09:38:22| UTE +|08/01/2022 09:38:25| |Press E to remove Katyusha| +|08/01/2022 09:38:26| KINO +|08/01/2022 09:38:26| |GET FUCKED, KATYUSHA FAGS| +|08/01/2022 09:38:27| stoopid +|08/01/2022 09:38:29| E +|08/01/2022 09:38:32| |lmao good job katyusha| +|08/01/2022 09:38:32| |Klara too thicc| +|08/01/2022 09:38:32| |NOT E| +|08/01/2022 09:38:33| |I FUCKING LOVE ERIKA| +|08/01/2022 09:38:34| TEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:34| TEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:35| |>take two tanks to stop four || sasuga midget| +|08/01/2022 09:38:35| |NISHIZUMI GRADE AUTISM| +|08/01/2022 09:38:35| nukenai +|08/01/2022 09:38:36| |ERIKA AUTISM| +|08/01/2022 09:38:38| CYKA +|08/01/2022 09:38:38| AUTISM +|08/01/2022 09:38:40| AUTISM +|08/01/2022 09:38:41| TTEEEEEE +|08/01/2022 09:38:41| |midgets deserve worse| +|08/01/2022 09:38:41| |LOL YOU TRAPPED DUMB LOLI| +|08/01/2022 09:38:41| TEEEEEEEEEEEE +|08/01/2022 09:38:42| TEEEEEEEEEEEEEE +|08/01/2022 09:38:42| |Cute Erika| +|08/01/2022 09:38:43| TEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:43| |Katyusha and her dumb fucking plan to entrench | +|08/01/2022 09:38:43| AUTISM +|08/01/2022 09:38:43| |Get WRECKED COMMIES| +|08/01/2022 09:38:44| TTEEE +|08/01/2022 09:38:44| |CUTE ERIKA| +|08/01/2022 09:38:45| |[AUTISTIC SCREECHING]| +|08/01/2022 09:38:45| TEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:46| |AUUUTISSSSSSSSMMMMMMMMMMM WAAAAAAAAAAAAAAAA| +|08/01/2022 09:38:47| TEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:48| |THIS RESULT IS AHISTORICAL| +|08/01/2022 09:38:49| |SIEG HEIL| +|08/01/2022 09:38:49| FIRE +|08/01/2022 09:38:49| UGAAAAAAA +|08/01/2022 09:38:50| |ERIKA BROS WE FUCKING MADE IT| +|08/01/2022 09:38:50| CUTE +|08/01/2022 09:38:50| CUTE +|08/01/2022 09:38:51| |CYKA BLYAT| +|08/01/2022 09:38:51| |WEIRD HAND SIGNS| +|08/01/2022 09:38:52| kek +|08/01/2022 09:38:52| |CUTE WANI| +|08/01/2022 09:38:52| CUTEYUSHA +|08/01/2022 09:38:52| |Cute | +|08/01/2022 09:38:52| cute! +|08/01/2022 09:38:52| |CUTE AUTISMO!| +|08/01/2022 09:38:52| dumbtyusha +|08/01/2022 09:38:53| ERIKA +|08/01/2022 09:38:53| CUTE +|08/01/2022 09:38:53| CUTE +|08/01/2022 09:38:54| YATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:38:54| ENDSIEG +|08/01/2022 09:38:54| |stupid midget| +|08/01/2022 09:38:54| CUTE +|08/01/2022 09:38:54| mugoooooo +|08/01/2022 09:38:54| CUTE +|08/01/2022 09:38:55| YATA +|08/01/2022 09:38:55| |>LEFT THE HIGH GROUND FOR THIS| +|08/01/2022 09:38:55| |WANI WON!| +|08/01/2022 09:38:56| |COMMIE MIDGET BTFO| +|08/01/2022 09:38:56| CUTEEEE +|08/01/2022 09:38:56| :DDDD +|08/01/2022 09:38:57| SIEG +|08/01/2022 09:38:58| |cute wani| +|08/01/2022 09:38:58| |consolation sex with Katyusha| +|08/01/2022 09:38:58| |my wani erika too cute| +|08/01/2022 09:38:58| |KATYSUHA NOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 09:38:59| |cute wani| +|08/01/2022 09:39:00| Kaai +|08/01/2022 09:39:00| |cute midget face| +|08/01/2022 09:39:01| HEIL +|08/01/2022 09:39:01| |I'm glad lenin can't see us now.| +|08/01/2022 09:39:01| NOOOOOOOOOOO +|08/01/2022 09:39:01| CUTE +|08/01/2022 09:39:01| |Erika poses| +|08/01/2022 09:39:02| |CUTE CUTE CUTE| +|08/01/2022 09:39:02| YATTA +|08/01/2022 09:39:02| |WANI IS NOT A LOSER!| +|08/01/2022 09:39:03| cuteyusha +|08/01/2022 09:39:04| |happi wani| +|08/01/2022 09:39:04| |Have you already forgetting what a cunt Erika was in S1?| +|08/01/2022 09:39:04| |WIEDER EIN SIEG FUR KMM| +|08/01/2022 09:39:06| DUCE +|08/01/2022 09:39:06| PASTA +|08/01/2022 09:39:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:07| |Russian midget gets rekt by Kraut Autist| +|08/01/2022 09:39:07| |DUN DUNNNNN+| +|08/01/2022 09:39:08| |IS AUTISM AN STD? I THINK ERIKA JUST INHERITED FROM MAHO| +|08/01/2022 09:39:08| |NO BULLI ANZIO| +|08/01/2022 09:39:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:09| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:39:09| |>I never thought they would just go around!| +|08/01/2022 09:39:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:10| FUOCO +|08/01/2022 09:39:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:10| |DUCE | +|08/01/2022 09:39:10| |duce pls| +|08/01/2022 09:39:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:12| |DUCE DUCE DUCE DUCE!| +|08/01/2022 09:39:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:14| |INVEST IN CHOVY NOW| +|08/01/2022 09:39:14| DUCE +|08/01/2022 09:39:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:16| |FUCK COMMUNISM| +|08/01/2022 09:39:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:16| |DUC DUC DUC| +|08/01/2022 09:39:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:17| |DUCE DUCE DUCE| +|08/01/2022 09:39:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:18| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:39:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:21| HANA-CHAN +|08/01/2022 09:39:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:22| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:23| |DUCE DUCE DUCE| +|08/01/2022 09:39:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:23| |GANBARE DUCE| +|08/01/2022 09:39:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:26| |duce DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUC E| +|08/01/2022 09:39:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:26| |LETS GO DUCE BROS| +|08/01/2022 09:39:27| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 09:39:27| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:39:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:27| |ANZIO GANBAREEEEEEE| +|08/01/2022 09:39:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:29| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:30| DVCEDVCEDVCEDVCEDVCEDVCE +|08/01/2022 09:39:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:30| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 09:39:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:31| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:39:32| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:39:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:34| |HINA CHAN| +|08/01/2022 09:39:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:35| DUCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:39:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:35| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:39:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:36| |BEAT THE SLAGS| +|08/01/2022 09:39:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:38| DUUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +|08/01/2022 09:39:38| |DUCE DUCE DUCE| +|08/01/2022 09:39:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:39| |DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:40| |at least get the tankettes with at rifles| +|08/01/2022 09:39:40| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:40| BURN +|08/01/2022 09:39:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:40| BTFO +|08/01/2022 09:39:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:42| |DVCE DVCE DVCE DVCE| +|08/01/2022 09:39:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:43| tru +|08/01/2022 09:39:43| |BONGS BTFO| +|08/01/2022 09:39:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:43| BASED +|08/01/2022 09:39:44| |UNLIMITED DUCE WORK| +|08/01/2022 09:39:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:45| |>BRITISH FOOD| +|08/01/2022 09:39:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:45| |ENGLISH BTFO| +|08/01/2022 09:39:45| |YOUR FOOD SUCKS BRIT| +|08/01/2022 09:39:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:46| |BONGS BTFO| +|08/01/2022 09:39:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:46| |DVCE IS CUTE| +|08/01/2022 09:39:46| BASED +|08/01/2022 09:39:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:47| |they just lost| +|08/01/2022 09:39:47| |STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!| +|08/01/2022 09:39:47| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:48| |>british cuisine| +|08/01/2022 09:39:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:48| dvce +|08/01/2022 09:39:48| |BASED DUCE| +|08/01/2022 09:39:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:50| |TALK THAT SHIT DUCE| +|08/01/2022 09:39:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:50| |BRITBONG GTFO| +|08/01/2022 09:39:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:51| |DUCE AGAINST BAD FOOD| +|08/01/2022 09:39:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:51| |>CV33 || >flagged after one hit || rigged| +|08/01/2022 09:39:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:54| |SLAGS BTFO| +|08/01/2022 09:39:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:54| |>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +|08/01/2022 09:39:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:54| DUCE!!!! +|08/01/2022 09:39:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:55| |STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!| +|08/01/2022 09:39:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:56| |WORLD'S WORST CUISINE| +|08/01/2022 09:39:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE| +|08/01/2022 09:39:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:58| |DUCE DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE| +|08/01/2022 09:39:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:59| |OPERATION FARFALLE| +|08/01/2022 09:39:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:59| |>BRITISH FOOD | +|08/01/2022 09:39:59| |Can't outrun the Rosehip tough| +|08/01/2022 09:39:59| |>british "food"| +|08/01/2022 09:40:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:00| DUCE +|08/01/2022 09:40:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:01| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:02| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:03| LUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL +|08/01/2022 09:40:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:05| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:05| |>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +|08/01/2022 09:40:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:06| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:07| |DUCE DUCE DUCE| +|08/01/2022 09:40:08| |DUCE DUCE DUCE DUCE| +|08/01/2022 09:40:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:10| |DUCE DUCE DUCE DUCE| +|08/01/2022 09:40:10| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:13| |>The food of this country is not very good| +|08/01/2022 09:40:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:14| |inferior cuisine!!!| +|08/01/2022 09:40:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:16| |>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +|08/01/2022 09:40:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:40:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:19| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:19| |Come on England| +|08/01/2022 09:40:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:20| |>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +|08/01/2022 09:40:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:20| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:21| |DUCE i guess| +|08/01/2022 09:40:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:21| |PIZZA PASTA PUT IT IN A BOX| +|08/01/2022 09:40:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:23| |BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""| +|08/01/2022 09:40:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:25| |BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""| +|08/01/2022 09:40:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:26| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:26| |BONG BTFO| +|08/01/2022 09:40:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +|08/01/2022 09:40:28| ..................... +|08/01/2022 09:40:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:29| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:40:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:31| |CAM ON INGERLAND SCORE SAM FACKING PANZERS| +|08/01/2022 09:40:31| |SMART DUCE| +|08/01/2022 09:40:31| |SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI| +|08/01/2022 09:40:31| |cute baka| +|08/01/2022 09:40:32| ????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 09:40:32| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:33| RETARD +|08/01/2022 09:40:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:34| BAKAS +|08/01/2022 09:40:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:35| BAKARONI +|08/01/2022 09:40:35| DUCE... +|08/01/2022 09:40:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:35| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:36| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:36| |LOW IQ| +|08/01/2022 09:40:36| BAKA +|08/01/2022 09:40:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:37| FOUCO +|08/01/2022 09:40:37| |AHHHHHHHHHHHHHH DUCE IS TOO CUTE| +|08/01/2022 09:40:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:38| FUOCO +|08/01/2022 09:40:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:40:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:40| FUOCO +|08/01/2022 09:40:40| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:40| fuoco +|08/01/2022 09:40:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:41| |DUCE PLEASE| +|08/01/2022 09:40:41| FOUCO +|08/01/2022 09:40:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:42| ENTER +|08/01/2022 09:40:43| FUOCO +|08/01/2022 09:40:43| DVCE +|08/01/2022 09:40:44| FUOCO +|08/01/2022 09:40:44| SPEED +|08/01/2022 09:40:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:45| |cute bakaroni| +|08/01/2022 09:40:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:46| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:47| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:47| ROSEHIP +|08/01/2022 09:40:47| |LOOK AT THE CUTE LITTLE TANKLETS| +|08/01/2022 09:40:47| |ROSEHIP TIME| +|08/01/2022 09:40:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:48| |DUMB DVCE| +|08/01/2022 09:40:48| |DVCE DVCE DVCE DVE DVCE| +|08/01/2022 09:40:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:48| |PROTECTDVCE! DVCE! | +|08/01/2022 09:40:49| |DVCE WO MAMORE| +|08/01/2022 09:40:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:50| SPEED +|08/01/2022 09:40:50| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:50| |QUEEN OF SNEED| +|08/01/2022 09:40:50| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:50| |MY WIFE, ROSEHIP| +|08/01/2022 09:40:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:51| |QUEEN OF SPEED| +|08/01/2022 09:40:51| |THE QUEEN OF SNEED HAS ARRIVED| +|08/01/2022 09:40:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:52| |Crazy Rosehip bouncing up and down| +|08/01/2022 09:40:52| DVCE +|08/01/2022 09:40:52| |PROTECT DUCE| +|08/01/2022 09:40:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:53| ROSEHIP +|08/01/2022 09:40:53| |ROSEHIP THE SPEED QUEEN| +|08/01/2022 09:40:53| |GAS GAS GAS| +|08/01/2022 09:40:53| |THAT SLOWMO| +|08/01/2022 09:40:54| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:40:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:56| |I can't beleive Duce is fucking dead!| +|08/01/2022 09:40:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:56| |PROTECT DUCE| +|08/01/2022 09:40:56| |PROTECT DUCE| +|08/01/2022 09:40:56| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:40:57| BAKAHIP +|08/01/2022 09:40:57| |ROSEHIP | +|08/01/2022 09:41:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:00| |top gloriana| +|08/01/2022 09:41:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:01| QUEEEEEEEEEEEEEEEEEEEENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +|08/01/2022 09:41:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:03| |NEED FOR SNEED| +|08/01/2022 09:41:03| |>bringing MG tankettes to a tank fight| +|08/01/2022 09:41:03| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:04| |PIZZA TIME| +|08/01/2022 09:41:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:04| |protect dvce| +|08/01/2022 09:41:04| |DUCE BROS WE GOT THIS| +|08/01/2022 09:41:04| |ITALIAN MARCHES ARE SO KINO| +|08/01/2022 09:41:05| |BRITANIA RULES THE WAVES| +|08/01/2022 09:41:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:06| |THE INVINCIBLE CARRO VEROCE| +|08/01/2022 09:41:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:07| F +|08/01/2022 09:41:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:41:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:07| DUNKED +|08/01/2022 09:41:07| DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +|08/01/2022 09:41:09| |ITALIAN AKKO IS VERY CUTE| +|08/01/2022 09:41:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:11| |DUCE BROS WE'RE WINNING| +|08/01/2022 09:41:11| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:12| |ROSEHIP NOOOOOOOO| +|08/01/2022 09:41:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:13| DEAD +|08/01/2022 09:41:13| |Classic strat| +|08/01/2022 09:41:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:15| |BASD AS FUCK| +|08/01/2022 09:41:15| |GET REKT BONGS| +|08/01/2022 09:41:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:16| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:41:17| F +|08/01/2022 09:41:19| |WE HAVE THIS ANZIO| +|08/01/2022 09:41:19| DROWNED +|08/01/2022 09:41:19| |RAT TAT TAT| +|08/01/2022 09:41:19| |DUCEBROS WE GOT THIS| +|08/01/2022 09:41:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:41:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:23| |WE CAN DO IT| +|08/01/2022 09:41:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:24| |bongs do not rule the waves| +|08/01/2022 09:41:24| |ESCAPE IS WIN| +|08/01/2022 09:41:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:25| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:26| |DVCE BROS LETS FUCKING GOOO| +|08/01/2022 09:41:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:28| |ESCAPE IS WIN| +|08/01/2022 09:41:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:30| |WHAT ARE THOSE MG EVEN FOR| +|08/01/2022 09:41:30| |ESCAPE IS WIN DESUWA| +|08/01/2022 09:41:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:31| ESCAPE +|08/01/2022 09:41:31| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:32| |ESCAPE IS WIN| +|08/01/2022 09:41:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:34| |ESCAPE IS WIN DESUWA| +|08/01/2022 09:41:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:34| |escape is win desu wa| +|08/01/2022 09:41:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:34| |classic anglo behavior| +|08/01/2022 09:41:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:37| |They got 1| +|08/01/2022 09:41:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:37| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:37| |PROTECT DUCE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 09:41:37| |WHOLE TEAM CHASING ONE TANK| +|08/01/2022 09:41:37| |Still can't outrun the Rosehip| +|08/01/2022 09:41:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 09:41:38| |OH NOOOOOOOOOOOOOO| +|08/01/2022 09:41:38| |ESCAPE TO VICTORY| +|08/01/2022 09:41:40| |DUCE NOOOOOOOOOOOOOOOOO| +|08/01/2022 09:41:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:40| |OUT FUCKING SKILLED| +|08/01/2022 09:41:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:41| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:43| |dio mio| +|08/01/2022 09:41:43| FUOCO +|08/01/2022 09:41:44| |PROTECT THE DUVCE| +|08/01/2022 09:41:44| Ducebros... +|08/01/2022 09:41:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:45| |When in Doubt, Testudo it out.| +|08/01/2022 09:41:45| NOOOOOOO +|08/01/2022 09:41:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:46| FOUCO +|08/01/2022 09:41:47| ;_;7 +|08/01/2022 09:41:47| F +|08/01/2022 09:41:47| |RIP DVCE| +|08/01/2022 09:41:48| CRUSHED +|08/01/2022 09:41:48| |Too cocky| +|08/01/2022 09:41:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:49| |FUCKING SLAG| +|08/01/2022 09:41:49| ded +|08/01/2022 09:41:49| RIGGED +|08/01/2022 09:41:49| |They forgot the tank behind her| +|08/01/2022 09:41:50| NOOOOOOOOOOOOOOOO +|08/01/2022 09:41:51| NOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:41:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:41:51| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:51| HOUGEKI +|08/01/2022 09:41:51| |DVCE BROS| +|08/01/2022 09:41:52| |MAMA MIA| +|08/01/2022 09:41:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:41:52| DUCE... +|08/01/2022 09:41:53| |not like this...mamma mia| +|08/01/2022 09:41:53| |skill issue| +|08/01/2022 09:41:53| BRI'ISHED +|08/01/2022 09:41:54| ded +|08/01/2022 09:41:54| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:41:54| |PROTECT DUCE| +|08/01/2022 09:41:55| ;__________________________________; +|08/01/2022 09:41:55| rip +|08/01/2022 09:41:55| |DUCE NOOOOOOOOOO| +|08/01/2022 09:41:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:56| |pastafags... not again...| +|08/01/2022 09:41:56| RIP +|08/01/2022 09:41:56| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:41:56| |can't believe she fucking died| +|08/01/2022 09:41:56| |FUCK ST. GLORIANA| +|08/01/2022 09:41:57| DVCEBROS!? +|08/01/2022 09:41:57| RIP +|08/01/2022 09:41:57| |PILE ON ME| +|08/01/2022 09:41:58| |NOOOOOOOOOOOOOOOOOOOOO IT WAS ANZIOS YEAR| +|08/01/2022 09:41:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE?| +|08/01/2022 09:41:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:59| |RIGGED MATCH RIGGED MATCH RIGGED MATCH RIGGED MATCH| +|08/01/2022 09:41:59| |DVCE ;_;| +|08/01/2022 09:41:59| |DUCEBROS WHAT HAPPENED| +|08/01/2022 09:42:00| ;_;7 +|08/01/2022 09:42:00| |PERFIDIOUS ALBION| +|08/01/2022 09:42:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:42:01| ;_; +|08/01/2022 09:42:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:42:01| |duce is a loser lol| +|08/01/2022 09:42:02| |dvce... no| +|08/01/2022 09:42:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:42:03| |CUTE DUCE| +|08/01/2022 09:42:03| f +|08/01/2022 09:42:04| |WE WERE SUPPOSED TO WIN DVCE BROS| +|08/01/2022 09:42:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:42:04| nooooooooooooooooooooooooooooooooooooooo +|08/01/2022 09:42:05| |GOTT STRAFE ENGLAND| +|08/01/2022 09:42:06| |I HATE ST. GLORIANA SO GODDAMN MUCH| +|08/01/2022 09:42:06| cute +|08/01/2022 09:42:06| DVCEBROS..... +|08/01/2022 09:42:07| FAIYA +|08/01/2022 09:42:07| |TEAM PASTA BLASTS OFF AGAIN| +|08/01/2022 09:42:08| |ONLY KILLED 1 TANK| +|08/01/2022 09:42:08| |>duce graduates this year| +|08/01/2022 09:42:09| |RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED | +|08/01/2022 09:42:09| DUCEBROS +|08/01/2022 09:42:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:42:10| |Duce too banged up| +|08/01/2022 09:42:10| |SUOMI SUOMI SUOMI| +|08/01/2022 09:42:11| |DUCE BROS HOW COULD THIS HAPPEN| +|08/01/2022 09:42:14| |USA USA USA| +|08/01/2022 09:42:15| jabronis +|08/01/2022 09:42:15| |TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +|08/01/2022 09:42:16| |OH NONONONONNOONONONO| +|08/01/2022 09:42:16| |DUCE BROS WTFFFFFFFFFFFFFFFFF| +|08/01/2022 09:42:16| |ALEXA PLAY Jääkärimarssi\| +|08/01/2022 09:42:16| |IT'S JOB TIME, SAUNDER BROS| +|08/01/2022 09:42:16| |FIREBOMB ST. GLORIANA| +|08/01/2022 09:42:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:17| |O SHID :DDDDDDDDDDDDD| +|08/01/2022 09:42:18| |USA USA USA| +|08/01/2022 09:42:18| |ANZIOBROS... HOW COULD THIS BE| +|08/01/2022 09:42:19| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:19| |PERKELE! :dddddddddddddd| +|08/01/2022 09:42:19| |USA USA USA| +|08/01/2022 09:42:20| |DULDA :DDDDDDDDDDDDDDDD| +|08/01/2022 09:42:20| >Jobsters +|08/01/2022 09:42:20| |MIKA STOLE MY HEART| +|08/01/2022 09:42:21| |KAY KAY KAY KAY KAY KAY| +|08/01/2022 09:42:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:22| |usa bros...| +|08/01/2022 09:42:22| |USA USA USA| +|08/01/2022 09:42:24| |Saunders the eternal jobbers| +|08/01/2022 09:42:24| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:24| KAY +|08/01/2022 09:42:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:26| |THE FINNS HAVE ONE ADVANTAGE| +|08/01/2022 09:42:27| |OH NO DUCE BROS| +|08/01/2022 09:42:28| benis +|08/01/2022 09:42:28| |I guess Caesar will comfort Hina-chan tonight| +|08/01/2022 09:42:28| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:28| |She lost because we didn't spam DUCE enough| +|08/01/2022 09:42:28| |Saki knows| +|08/01/2022 09:42:28| joburgers +|08/01/2022 09:42:29| |SUOMI SUOMI SUOMI| +|08/01/2022 09:42:29| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:29| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:30| |wow i wonder if they have a sniper somewhere idk guys| +|08/01/2022 09:42:30| :DDDDDDDDDDDDDD +|08/01/2022 09:42:30| |BENIS :DDDDDD| +|08/01/2022 09:42:30| |DULDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:42:31| |THEY CAN AIM| +|08/01/2022 09:42:31| |USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE | +|08/01/2022 09:42:33| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:33| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 09:42:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:34| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:35| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:35| |based saki| +|08/01/2022 09:42:35| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:36| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:37| |SAKI CAN SEE THE FUTURE| +|08/01/2022 09:42:37| |>CERTIFIED JOBBERS| +|08/01/2022 09:42:38| |Cute bunnies eating WcDonalds| +|08/01/2022 09:42:39| |FUG :DDDDDD| +|08/01/2022 09:42:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:40| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:40| FAT +|08/01/2022 09:42:41| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:41| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:41| HNABAGA +|08/01/2022 09:42:41| HAMBAGA +|08/01/2022 09:42:42| |USA USA USA| +|08/01/2022 09:42:42| HAMBAGA +|08/01/2022 09:42:42| |HIS TRUTH IS MARCHING ON| +|08/01/2022 09:42:43| |ARISA IS CUTE!| +|08/01/2022 09:42:43| >burgers +|08/01/2022 09:42:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:45| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:45| |SILLY SAKI| +|08/01/2022 09:42:47| burgers +|08/01/2022 09:42:47| |USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 09:42:48| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:48| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:49| |saunaklonkku with Mika| +|08/01/2022 09:42:49| |ALISA ALISA ALISA ALISA| +|08/01/2022 09:42:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:51| AMERICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:42:51| |JATKOSOTA BEST WAR| +|08/01/2022 09:42:51| |Arisa. Poor Arisa. Too cocky for Takashi| +|08/01/2022 09:42:52| |GLORY GLORY HALLUJEAH| +|08/01/2022 09:42:52| |Fucking bunnies being huge Westaboos| +|08/01/2022 09:42:53| |GLORY GLORY HALLELUJAH| +|08/01/2022 09:42:53| |HIS TRUTH IS MARCHING ON| +|08/01/2022 09:42:55| |BENIS >>> JOBBERS| +|08/01/2022 09:42:55| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:55| |USA USA USA| +|08/01/2022 09:42:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:56| TOTSUGEKI?? +|08/01/2022 09:42:56| TOTSUGEK +|08/01/2022 09:42:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:57| TOTSUGEKI! +|08/01/2022 09:42:57| |YOU AIN'T GONNA JUMP NO MORE| +|08/01/2022 09:42:57| |juomalauta voi vittu perkele saatanaaaaaaaaaaaaaaaaa| +|08/01/2022 09:42:58| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:58| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:58| |chi ha tan?| +|08/01/2022 09:42:59| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:59| |THIS IS OUR TIME BURGERBROS| +|08/01/2022 09:42:59| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:59| TOTSUEGEKI +|08/01/2022 09:42:59| TOTSUGEKI +|08/01/2022 09:42:59| |haista vittu :DDDD| +|08/01/2022 09:43:00| |BACK TO BACK WORLD WAR CHAMPS| +|08/01/2022 09:43:00| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:02| |GLORY GLORY HALLEUJA | +|08/01/2022 09:43:02| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:03| |TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +|08/01/2022 09:43:03| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:04| |SEX WITH KAY| +|08/01/2022 09:43:04| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:05| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:06| |o fug :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:06| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:08| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 09:43:08| |BUT THE UNION MAKES US STRONG| +|08/01/2022 09:43:08| |SPAM IN RED WHITE BLUE| +|08/01/2022 09:43:08| |NJET MOLOTOFF| +|08/01/2022 09:43:10| |ALL IN ON BINLAND :DDDDDDDDDDDDDDDD| +|08/01/2022 09:43:10| |GORY GORY WHAT A HELL OF A WAY TO DIE| +|08/01/2022 09:43:10| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:12| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:14| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:43:14| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:15| |USA USA USA| +|08/01/2022 09:43:15| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:15| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:18| |USA USA USA USA USA USA USA USA| +|08/01/2022 09:43:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:18| |FROM SEA TO SHINING SEA| +|08/01/2022 09:43:19| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:21| |fugg my ass :DDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:23| |stealth :DDDD| +|08/01/2022 09:43:23| |USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 09:43:24| |USA USA USA USA USA UAS| +|08/01/2022 09:43:24| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:25| |Arisa need Takashi for support| +|08/01/2022 09:43:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:29| |SUOMI SUOMI SUOMI| +|08/01/2022 09:43:30| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:30| LEWD +|08/01/2022 09:43:30| |OH NO| +|08/01/2022 09:43:30| NANI +|08/01/2022 09:43:30| |GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:30| |FUG :DDDDDD| +|08/01/2022 09:43:30| |THE ABSOLUTE MADMEN| +|08/01/2022 09:43:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:33| :DDDDDDDDDDDD +|08/01/2022 09:43:33| |Uh oh| +|08/01/2022 09:43:35| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:35| |GAS GAS GAS| +|08/01/2022 09:43:35| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:35| |god i wish naomi would shoot me| +|08/01/2022 09:43:35| kek +|08/01/2022 09:43:35| |CHRISBIE :DDDDDDDDDDD| +|08/01/2022 09:43:36| PERRRRRRKELE +|08/01/2022 09:43:36| |CHRISDIE SUSBENSION :DDDDDDDDD| +|08/01/2022 09:43:37| |SUOMI SUOMI SUOMI| +|08/01/2022 09:43:37| CHRISTIEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:43:39| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:39| -F-R-E-E-D-O-M- +|08/01/2022 09:43:39| why +|08/01/2022 09:43:39| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:39| |christie suspensiond| +|08/01/2022 09:43:40| |IT'S 2FAST4U TIME| +|08/01/2022 09:43:40| PERKLED +|08/01/2022 09:43:41| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:43| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:44| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:44| SPEEDSTER +|08/01/2022 09:43:45| |fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:45| POLKA +|08/01/2022 09:43:45| |SÄKKIJÄRVEN POLKKA| +|08/01/2022 09:43:46| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:46| |CHRISTIE :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:46| |EBIN :DDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:47| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:47| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD FUGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG| +|08/01/2022 09:43:47| |GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:47| |CHIDDIE SUSBENSION| +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| |GHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| |FUG :DDDDDDDDDDDD| +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| |PERKELE SATANA| +|08/01/2022 09:43:49| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:49| |:DDDDDDDDDDDDDD FUGG| +|08/01/2022 09:43:49| |CRISTY SUSBENTION :DDDDD| +|08/01/2022 09:43:49| :DDDDDDDDDDDDDD +|08/01/2022 09:43:49| :DDDDDDDDDD +|08/01/2022 09:43:49| FUG +|08/01/2022 09:43:49| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:50| |FUGGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDd| +|08/01/2022 09:43:50| |HYVA SUOMI| +|08/01/2022 09:43:51| |No tank treads? Oh no.| +|08/01/2022 09:43:52| :DDDDD +|08/01/2022 09:43:52| :DDDDDDDDDDDDDDDD +|08/01/2022 09:43:52| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:53| FUG +|08/01/2022 09:43:53| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:54| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:54| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:54| :DDDDDDDDDDDD +|08/01/2022 09:43:55| |FUG :DDDDDDDDDDDDDDDD| +|08/01/2022 09:43:55| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:56| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:57| |KINO :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:57| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDD FUGGGGG| +|08/01/2022 09:43:58| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:59| |HYVÄ :-DDDDDDDDDDDDDDDD| +|08/01/2022 09:43:59| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:00| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:00| https://www.youtube.com/watch?v=5kr4nzEAZ8k +|08/01/2022 09:44:00| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:00| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:01| PRÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +|08/01/2022 09:44:01| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:01| |GET FUCKED BURGERS| +|08/01/2022 09:44:01| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:01| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:02| |GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:02| BENISBENIS +|08/01/2022 09:44:02| |CHRISDIE SUSBENSION| +|08/01/2022 09:44:02| :XDDDDd +|08/01/2022 09:44:02| |HORSE SHIT| +|08/01/2022 09:44:02| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:03| benis +|08/01/2022 09:44:03| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:03| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:05| PRÖÖÖÖÖÖÖÖÖH +|08/01/2022 09:44:05| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:06| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:06| |:DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDD| +|08/01/2022 09:44:06| |GID FUGGED :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:06| FUGGGGGGGGGGGGGGGGGGGGGGGG +|08/01/2022 09:44:07| |FUGGGGGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:07| |INVEST IN USA NOW| +|08/01/2022 09:44:08| FUG +|08/01/2022 09:44:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:10| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:10| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:11| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:11| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:11| |SATANA PERKELE :DDDDDDDDDDDDDD| +|08/01/2022 09:44:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:12| |HUMPPAA TAIKKA KUOLE, TAIKKA HUMPPAA, TAIKKA KUOLE| +|08/01/2022 09:44:13| |BENIS :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:13| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:13| |HOW ARE YOU MISSING ALISA| +|08/01/2022 09:44:13| |:DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD | +|08/01/2022 09:44:14| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:14| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:15| |EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDd| +|08/01/2022 09:44:17| |o fug polka :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:17| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:18| |SHE'S RIGHT THERE| +|08/01/2022 09:44:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:18| :( +|08/01/2022 09:44:19| |Why do they keep making Alisas dumb ass the flag tank?| +|08/01/2022 09:44:20| |GID REGDT :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:21| |FUCKING BURGERS| +|08/01/2022 09:44:21| |DO U LEIK BENIS?????? :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:21| V +|08/01/2022 09:44:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:22| |I BET MY LEFT NUTSACKS ON USA WINNING| +|08/01/2022 09:44:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:23| based +|08/01/2022 09:44:23| |USA USA USA USAA USA USA USA USA USA USA| +|08/01/2022 09:44:24| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:24| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:25| |USA SUSA USA USA| +|08/01/2022 09:44:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:25| V +|08/01/2022 09:44:25| |NAOMI SAVES THE DAY| +|08/01/2022 09:44:26| |FUG | +|08/01/2022 09:44:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:27| |NAOMI BROS| +|08/01/2022 09:44:28| |USA USA USA| +|08/01/2022 09:44:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:29| |U S A| +|08/01/2022 09:44:29| |SAUNDERS WE WINNING| +|08/01/2022 09:44:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:32| |CHRISDY SUSBENSION| +|08/01/2022 09:44:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:32| |USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 09:44:32| |:DDDDDDDDDDDDDDDDDDDDDDDD | +|08/01/2022 09:44:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:33| |NAOMI PROTECTING HIS GIRLFRIEND| +|08/01/2022 09:44:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:35| DARE??? +|08/01/2022 09:44:35| |OH NONONONONONONONONONONO| +|08/01/2022 09:44:35| |The Bins have arribed :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:35| XDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:35| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:35| |USA USA USA USA USA USA| +|08/01/2022 09:44:35| |YOU'RE IN THE SNIPER'S SIGHT | +|08/01/2022 09:44:36| |HURRY UP!| +|08/01/2022 09:44:36| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:38| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:38| |o fug :DDDDDDDD| +|08/01/2022 09:44:39| trickd +|08/01/2022 09:44:39| KITA +|08/01/2022 09:44:39| |fuck u fin| +|08/01/2022 09:44:40| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:41| |FINNISH FARMER| +|08/01/2022 09:44:42| M-MASAKA +|08/01/2022 09:44:42| |finnish sniber :DDDDD| +|08/01/2022 09:44:42| |V USA V| +|08/01/2022 09:44:43| JOUKO +|08/01/2022 09:44:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:45| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA US AUSA | +|08/01/2022 09:44:45| |white witch :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:46| |WE CAN DO IT SAUNDERS!| +|08/01/2022 09:44:46| |WHITE DEATH| +|08/01/2022 09:44:46| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:46| benis +|08/01/2022 09:44:46| |USA BTFO| +|08/01/2022 09:44:47| |SNIBER :DDDDDD| +|08/01/2022 09:44:47| :DDDDDDDDDDDDDDDD +|08/01/2022 09:44:48| |USA USA USA USA| +|08/01/2022 09:44:48| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:48| |JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB | +|08/01/2022 09:44:49| |HYVA SUOMI HYVA SUOMI HYVA SUOMI| +|08/01/2022 09:44:49| |ADMIN THEYRE HACKING| +|08/01/2022 09:44:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:50| |SNAIBA :DDDDDDDDD| +|08/01/2022 09:44:50| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:50| |BURGERS ETERNALLY BTFO| +|08/01/2022 09:44:51| |weak ass fin hiding in the mountains| +|08/01/2022 09:44:51| SIMO +|08/01/2022 09:44:51| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:51| |DULDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:51| REKT +|08/01/2022 09:44:51| ;_;7 +|08/01/2022 09:44:51| |Jougo :DDDDDDDDDD| +|08/01/2022 09:44:51| BTFO +|08/01/2022 09:44:51| |THE WHITE DEATH| +|08/01/2022 09:44:52| |SUOMI PERKELE| +|08/01/2022 09:44:53| |OH FUGGG :DDDDD| +|08/01/2022 09:44:53| |OH FUGG :DDDDDD| +|08/01/2022 09:44:53| |White sniper| +|08/01/2022 09:44:54| NIPA +|08/01/2022 09:44:54| |BURGERS BTFO| +|08/01/2022 09:44:54| Burgerbros... +|08/01/2022 09:44:54| |JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB | +|08/01/2022 09:44:54| JOUKO +|08/01/2022 09:44:55| |GG EZ| +|08/01/2022 09:44:55| |PERGELE :DDDDDD| +|08/01/2022 09:44:56| |FUGGGGG :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:56| |MUTTS BTFO| +|08/01/2022 09:44:56| |JOBBED AGAIN| +|08/01/2022 09:44:57| |POOR HELMET-CHAN| +|08/01/2022 09:44:57| |EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:57| |GET FUCKED BURGERS| +|08/01/2022 09:44:57| :DDDDDDDDDDDDDD +|08/01/2022 09:44:57| WHAT +|08/01/2022 09:44:58| |GORY GORY WHAT A HELL OF A WAY TO JOB! SHE AIN'T TANKING NO MORE!| +|08/01/2022 09:44:58| PERKLED +|08/01/2022 09:44:59| SNIPED +|08/01/2022 09:44:59| |the white death| +|08/01/2022 09:45:00| |WORST THAN 9/11| +|08/01/2022 09:45:00| |USA BTFO| +|08/01/2022 09:45:01| |sniber :DDDDDD| +|08/01/2022 09:45:01| |OH MY WHITE DEATH| +|08/01/2022 09:45:02| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:02| |JABRONI JOBURGERS| +|08/01/2022 09:45:03| |FUCKING REKT :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:04| |POOR HELMET CHAN| +|08/01/2022 09:45:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:05| |USA BROS..........................| +|08/01/2022 09:45:05| |GORY GORY WHAT A HELL OF A WAY TO JOB! SHE AIN'T TANKING NO MORE!| +|08/01/2022 09:45:06| |THE ABSOLUTE STATE| +|08/01/2022 09:45:06| |USA BTFO| +|08/01/2022 09:45:06| >AMERILARDS +|08/01/2022 09:45:06| :DDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:07| |RIP HELMET CHAn| +|08/01/2022 09:45:07| |WE GOT TOO COCKY AGAIN| +|08/01/2022 09:45:07| |WE CAN'T STOP JOBBING| +|08/01/2022 09:45:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:08| ... +|08/01/2022 09:45:08| |SNIPED WITH MY FINNISH MOSIN| +|08/01/2022 09:45:08| |Press F to spit on theri graves| +|08/01/2022 09:45:08| |ALISA STFU| +|08/01/2022 09:45:09| |>got dumped| +|08/01/2022 09:45:09| Takeshi.......... +|08/01/2022 09:45:09| >TAKASHI +|08/01/2022 09:45:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:10| |MENTAL BREAKDOWN| +|08/01/2022 09:45:10| helmet-chan +|08/01/2022 09:45:11| |they didn't even hear it coming| +|08/01/2022 09:45:11| |saunders was robbed| +|08/01/2022 09:45:11| |SIMO NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 09:45:12| alisa... +|08/01/2022 09:45:13| |helmet chan| +|08/01/2022 09:45:13| |OH NONONO| +|08/01/2022 09:45:13| SIMO +|08/01/2022 09:45:14| DUMPED +|08/01/2022 09:45:14| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:14| |HELMET CHAN IS CUTE| +|08/01/2022 09:45:15| |FUG ALYSA :DDDDDD| +|08/01/2022 09:45:16| BINNISHED +|08/01/2022 09:45:16| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:16| :DDDD +|08/01/2022 09:45:17| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:18| |HAHAHA :-DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:18| |RESIGNED HELMET-CHAN| +|08/01/2022 09:45:19| |HAHAHAHAHAHAHAHAHAHAA POINT AT HER AND LAUGH| +|08/01/2022 09:45:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:45:20| |Around Finns watch your shins| +|08/01/2022 09:45:21| |Kay and Duce will both graduate as eternal jobbers| +|08/01/2022 09:45:21| |OH NO US BROS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:22| >naomi +|08/01/2022 09:45:22| |PUMPED AND DUMPED| +|08/01/2022 09:45:22| FUG +|08/01/2022 09:45:22| benis +|08/01/2022 09:45:23| FUGGED +|08/01/2022 09:45:24| |>she actually got to date| +|08/01/2022 09:45:25| |SHE KNOWS| +|08/01/2022 09:45:25| HAHAHAHAHAAHHAHAHAAHAHAHAHAHAHAHAHAHAHAHA +|08/01/2022 09:45:26| |JOUKO > USA| +|08/01/2022 09:45:26| |poor alisa| +|08/01/2022 09:45:29| MASAKA +|08/01/2022 09:45:29| |OH NONONONONONONOPNO| +|08/01/2022 09:45:29| |who cares, I'm just here for arisu| +|08/01/2022 09:45:30| |YOUR IN THE SNIPERS SIGHTS| +|08/01/2022 09:45:31| |camping ni-| +|08/01/2022 09:45:31| |holy fuck where is that siber| +|08/01/2022 09:45:32| |>burgers in charge of winning| +|08/01/2022 09:45:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:34| |burgers job as usual| +|08/01/2022 09:45:36| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 09:45:37| |THE ETERNAL JOBBERS| +|08/01/2022 09:45:39| |why are americans so WEAK| +|08/01/2022 09:45:40| |MELLI KURISUMASU| +|08/01/2022 09:45:41| |arisu != arisa| +|08/01/2022 09:45:41| Anzu +|08/01/2022 09:45:41| |when do we see arisu| +|08/01/2022 09:45:41| |SAUNDERS MORE LIKE JOBBERS| +|08/01/2022 09:45:42| |alisa ;_;| +|08/01/2022 09:45:42| |Things were getting good? Takashi is cruel to Arisa| +|08/01/2022 09:45:44| :DDDDDDDDDDDDDD +|08/01/2022 09:45:45| |MERRY CHRISTMAS| +|08/01/2022 09:45:46| MELLI +|08/01/2022 09:45:46| KORVAPUUSTI +|08/01/2022 09:45:46| |binnenland :DDDD| +|08/01/2022 09:45:46| |MELLI KURISUMASU| +|08/01/2022 09:45:47| |I am burger therefore I must job| +|08/01/2022 09:45:48| cuter +|08/01/2022 09:45:48| |SANDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:48| |EBINLAND :DDDDDDDDDD| +|08/01/2022 09:45:48| |FUCK I LOVE MIKA| +|08/01/2022 09:45:48| |MELLI KURISUMASU| +|08/01/2022 09:45:49| |MELLI KURISUMASU| +|08/01/2022 09:45:49| |CHRISTMAS MUSIC| +|08/01/2022 09:45:50| |Meri Kuri| +|08/01/2022 09:45:50| |PADORU PADORU| +|08/01/2022 09:45:50| |Merri kurisumasu| +|08/01/2022 09:45:50| |PADORU PADORUUUUUUUUUUU| +|08/01/2022 09:45:50| |MELLI KURISUMASU| +|08/01/2022 09:45:51| |MERRY CHRISTMAS BROS| +|08/01/2022 09:45:51| |MELLI KURISUMASU| +|08/01/2022 09:45:51| |How big is that tree| +|08/01/2022 09:45:52| |HOBOS IN THE LIMELIGHT| +|08/01/2022 09:45:52| JOULUTORTTU +|08/01/2022 09:45:53| |MERRY CHRISTMAS!| +|08/01/2022 09:45:54| |MELLI KURISUMASU| +|08/01/2022 09:45:54| BOOBA +|08/01/2022 09:45:55| |KURIMASU TRUCE| +|08/01/2022 09:45:55| |what a lovely place| +|08/01/2022 09:45:55| |lul >fuck she's good| +|08/01/2022 09:45:57| MELLI +|08/01/2022 09:45:57| |HOW BIG IS THAT TREE| +|08/01/2022 09:45:57| |o fug ghrisdmas :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:57| |MIARRY CURISTUMASUA| +|08/01/2022 09:45:58| |MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELL| +|08/01/2022 09:45:59| |KORVAPUUSTI :DDDDD| +|08/01/2022 09:46:00| |MERRI CHRIGSMAS| +|08/01/2022 09:46:01| |Melli Kulli| +|08/01/2022 09:46:01| |HOW TALL IS THAT FUCKING TREE| +|08/01/2022 09:46:01| korvapuusti +|08/01/2022 09:46:01| |ARE YOU READY FOR THE AGE OF THE HOBOS| +|08/01/2022 09:46:02| |JINGURU BERU| +|08/01/2022 09:46:03| |HOBO CHRISTMAS| +|08/01/2022 09:46:03| |how big is this ship| +|08/01/2022 09:46:03| |Marlin glögi| +|08/01/2022 09:46:05| |KORVA PUSSY| +|08/01/2022 09:46:06| |YMUUY SPICED WINE| +|08/01/2022 09:46:06| |the finals is so obvious| +|08/01/2022 09:46:07| |Where did they get the money to buy that| +|08/01/2022 09:46:07| |PADORU PADORU| +|08/01/2022 09:46:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:46:07| :DDDDDDDD +|08/01/2022 09:46:08| |makki is so cute| +|08/01/2022 09:46:09| |EARBOOST :DD| +|08/01/2022 09:46:09| |MIKA IS DELICIOUS| +|08/01/2022 09:46:10| |PADORU PADORU PADORUUU| +|08/01/2022 09:46:11| cute +|08/01/2022 09:46:11| |ITS HOBO TIME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 09:46:13| |I miss christmas markets| +|08/01/2022 09:46:14| |More snowmen| +|08/01/2022 09:46:15| |FUCK MIKA FUCKING CUTE| +|08/01/2022 09:46:16| :DDDDDDDDDDDDDD +|08/01/2022 09:46:19| |ARISU'S ONEECHAN...| +|08/01/2022 09:46:22| |CHRIDSMAS :DDDDDDDDDDDDDDDD| +|08/01/2022 09:46:23| |Meri Kuri :DDDDDDDDD| +|08/01/2022 09:46:23| |CUTE :DDDDDDDDD| +|08/01/2022 09:46:25| |they stole that| +|08/01/2022 09:46:26| |JINGO BELL :DDDDDDDD| +|08/01/2022 09:46:26| |MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU | +|08/01/2022 09:46:27| |sanda :DDD| +|08/01/2022 09:46:29| |EBIN GONNA PUT BENIS IN BAGINA :DDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:46:30| |cute cinnamon rolls| +|08/01/2022 09:46:30| kuksa +|08/01/2022 09:46:32| |JINGURU BERU| +|08/01/2022 09:46:33| |CINNAMON ROLL TOO PURE FOR THIS WORLD| +|08/01/2022 09:46:35| :DDDDD +|08/01/2022 09:46:36| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:46:37| |BENI CHRISMAGGG :DDD| +|08/01/2022 09:46:39| >hibernation +|08/01/2022 09:46:42| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:46:43| Arisu....................... +|08/01/2022 09:46:44| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:46:45| /FIT/ +|08/01/2022 09:46:46| /fit/ +|08/01/2022 09:46:47| STRONG +|08/01/2022 09:46:47| /fit/ +|08/01/2022 09:46:49| |ONEGAI MUSCLE| +|08/01/2022 09:46:51| |Mika looks like a Shimada in that cup| +|08/01/2022 09:46:52| |NEET STRONK| +|08/01/2022 09:46:52| |Girls und /Fit/| +|08/01/2022 09:46:52| STRONK +|08/01/2022 09:46:53| |ROID RAGE| +|08/01/2022 09:46:54| |GAMER GIRL BATH WATER| +|08/01/2022 09:46:55| |STRONG nerds| +|08/01/2022 09:46:56| SPAAAAAAAATS +|08/01/2022 09:46:57| ASS +|08/01/2022 09:46:58| |GREAT ESCAPE| +|08/01/2022 09:46:59| |>Finns hybernate | +|08/01/2022 09:47:00| |VOLLEY BUTT| +|08/01/2022 09:47:00| >males +|08/01/2022 09:47:00| |The Great Ecape kek| +|08/01/2022 09:47:02| |MEN SPOTED| +|08/01/2022 09:47:03| |Great escape| +|08/01/2022 09:47:03| |old kino| +|08/01/2022 09:47:07| |Weird looking tanks| +|08/01/2022 09:47:08| |the great escape?| +|08/01/2022 09:47:10| |Great Escape| +|08/01/2022 09:47:10| |The rabbits are training | +|08/01/2022 09:47:11| |What the fuck were those things?| +|08/01/2022 09:47:12| |WHAT'S THAT TWO WHEELED PANZER| +|08/01/2022 09:47:13| |anteaters are gonna end up troons with all those roids| +|08/01/2022 09:47:13| |Great Escape is a brilliant film| +|08/01/2022 09:47:14| |I wonder if this is forshadowing| +|08/01/2022 09:47:15| |Men exist in this unverse after all| +|08/01/2022 09:47:16| |>not liking The Great Escape| +|08/01/2022 09:47:19| |JUST WATCH IT DUMB BUNNIES| +|08/01/2022 09:47:20| |that guy failed lol| +|08/01/2022 09:47:21| |I need to watch that| +|08/01/2022 09:47:25| |I played the game the great escape| +|08/01/2022 09:47:26| |that fluff| +|08/01/2022 09:47:26| MEXT +|08/01/2022 09:47:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:27| |CUTE AUSSIES| +|08/01/2022 09:47:29| |Finnish cheerleaders| +|08/01/2022 09:47:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:30| |fluffy straya| +|08/01/2022 09:47:30| |they didn't get the rights to the great escape, my lawyers will be in touch| +|08/01/2022 09:47:30| |Great Escape will play a part in the final battle| +|08/01/2022 09:47:32| |CHIHATAN COUNCIL| +|08/01/2022 09:47:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:33| |LUCKY KOALA...| +|08/01/2022 09:47:34| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:47:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:36| |australia has MASSIVE fluff| +|08/01/2022 09:47:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:47:36| |Cute background dancing Finns| +|08/01/2022 09:47:37| |DVCE | +|08/01/2022 09:47:37| |DUCE DUCE DUCE| +|08/01/2022 09:47:37| |>japs have never had cheese| +|08/01/2022 09:47:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:47:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:40| PIZZA +|08/01/2022 09:47:40| |>PIZZA WITH CHOPSTICKS| +|08/01/2022 09:47:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:41| |Renta looking for his wife Anzu| +|08/01/2022 09:47:42| cursed +|08/01/2022 09:47:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:43| |DUMB BAKAS| +|08/01/2022 09:47:43| |>Eating pizza with chop sticks| +|08/01/2022 09:47:44| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:45| |DUCE DUCE DUCE| +|08/01/2022 09:47:45| |>pizza with chopsticks| +|08/01/2022 09:47:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:45| |>THEY'VE NEVER HAD CHEESE| +|08/01/2022 09:47:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:46| |FUCKING CHOPSTICKS| +|08/01/2022 09:47:46| >chopsticks +|08/01/2022 09:47:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:47| CHOPSTICKS +|08/01/2022 09:47:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:48| >CHOPSTICKS +|08/01/2022 09:47:49| |>PIZZA WITH CHOPSTICKS| +|08/01/2022 09:47:49| |>PIZZA WITH CHOPSTICKS| +|08/01/2022 09:47:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:51| |>CHOPSTICKS PIZZA| +|08/01/2022 09:47:51| |FUCKING CUTE| +|08/01/2022 09:47:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:47:52| |PIZZA CHOPSTICKS| +|08/01/2022 09:47:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:54| |So are they going to be jumping tanks over a fence or tunneling somehow?| +|08/01/2022 09:47:55| |>ALMOST OVER, SEE YOU IN 2 YEARS?| +|08/01/2022 09:47:55| |>rice balls| +|08/01/2022 09:47:56| |oishii rice| +|08/01/2022 09:47:58| |Aren't nips lactose intolerant| +|08/01/2022 09:47:58| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:47:59| HAMBURGERS +|08/01/2022 09:47:59| |jelly donuts!| +|08/01/2022 09:48:00| 礼 +|08/01/2022 09:48:01| |JELLY DONUTS!!!| +|08/01/2022 09:48:01| balls +|08/01/2022 09:48:03| |GLASS FINLAND| +|08/01/2022 09:48:06| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:48:07| :DDDDDDDDDDDDDD +|08/01/2022 09:48:08| :DDDD +|08/01/2022 09:48:09| |PANTSU VOR| +|08/01/2022 09:48:10| |better panzer vor this time| +|08/01/2022 09:48:10| |These girls are all Japanese*| +|08/01/2022 09:48:11| |PANTSU ARE FOR| +|08/01/2022 09:48:11| |PANZA VO!| +|08/01/2022 09:48:11| |PANZA VOR| +|08/01/2022 09:48:11| |PANZER VOR| +|08/01/2022 09:48:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:48:14| |Momo starting to look the part lmao| +|08/01/2022 09:48:16| |PANZER BOR :DDDDDDDDD| +|08/01/2022 09:48:17| :DDDDDDDDDDDDDD +|08/01/2022 09:48:18| |'OLD STILL WHILE I GLASS YOU| +|08/01/2022 09:48:21| |PANTSU ARE FOR| +|08/01/2022 09:48:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:48:21| |square herzter| +|08/01/2022 09:48:22| |WHAT DOES PANZER VOR MEAN ANONS?| +|08/01/2022 09:48:22| |njet molotov| +|08/01/2022 09:48:23| |WELCOME TO THE FROZEN TUNDRA| +|08/01/2022 09:48:24| |The last Panzer Vor for 2 years| +|08/01/2022 09:48:26| |BANZER VORRRR :DDDDDDDDD| +|08/01/2022 09:48:29| | panssaroitu auto eteenpäin :-DDDDDDDDDDDD-DDDDDDD| +|08/01/2022 09:48:32| nyaa +|08/01/2022 09:48:34| BANZA +|08/01/2022 09:48:34| |NYAAAAAA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:48:34| |Orari got this right?| +|08/01/2022 09:48:36| NYA +|08/01/2022 09:48:37| NYAA +|08/01/2022 09:48:37| |Why aren't they in the treeline| +|08/01/2022 09:48:38| |bros....I don't think we're gonna timewarp again after this....| +|08/01/2022 09:48:39| |OH SHIT HERE IT COMES| +|08/01/2022 09:48:39| |Don't trust snowmen | +|08/01/2022 09:48:41| SIMO +|08/01/2022 09:48:43| |snowman :D| +|08/01/2022 09:48:45| |EZ Ooari victory| +|08/01/2022 09:48:48| |gorilla warfare again| +|08/01/2022 09:48:50| |THEYRE FUCKED| +|08/01/2022 09:48:52| |YOURE IN THE SNIPERS SIGHT, FIRST TO DIE| +|08/01/2022 09:48:52| |>white death| +|08/01/2022 09:48:52| |NJEDD MOLODOBBB:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:48:54| CLANG +|08/01/2022 09:48:55| |Shit I just realized anteater team can't job this round as the flag tank| +|08/01/2022 09:48:56| Nyaa! +|08/01/2022 09:48:56| NYAAAAAA +|08/01/2022 09:48:56| NYA +|08/01/2022 09:48:57| nyaa! +|08/01/2022 09:48:57| |Winter War flashbacks| +|08/01/2022 09:48:57| |OH SHIDD ITS FINNS| +|08/01/2022 09:48:58| NYA +|08/01/2022 09:48:59| NYAA +|08/01/2022 09:48:59| NYAA +|08/01/2022 09:48:59| NYAA +|08/01/2022 09:49:01| |Gamer is the flag tank this time?| +|08/01/2022 09:49:02| NYAA +|08/01/2022 09:49:04| NYAA +|08/01/2022 09:49:05| |why make nerds flag tank? high armor?| +|08/01/2022 09:49:06| Nya +|08/01/2022 09:49:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:11| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:12| |GORILLA WARFARE| +|08/01/2022 09:49:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:14| GORILLA +|08/01/2022 09:49:15| |CUTE BAKA| +|08/01/2022 09:49:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:16| |GORILLA WARFARE| +|08/01/2022 09:49:16| |SHE SAID IT| +|08/01/2022 09:49:17| |why do they destroy ever bridge?| +|08/01/2022 09:49:18| |>CHEESE ON RICEBALLS| +|08/01/2022 09:49:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:49:19| |me on the right| +|08/01/2022 09:49:19| |binland :DDDDDDDDDDDD| +|08/01/2022 09:49:20| |GORILLA WARFARE| +|08/01/2022 09:49:20| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:49:21| |PASTA DESU| +|08/01/2022 09:49:21| |Perkele Benis Suomi| +|08/01/2022 09:49:23| BAKARONI +|08/01/2022 09:49:23| |Suomi tactics| +|08/01/2022 09:49:23| |GORILLA WARFARE| +|08/01/2022 09:49:26| |WAS RUMI A LOLI OR A MOLESTER?| +|08/01/2022 09:49:28| |guerilla des| +|08/01/2022 09:49:28| |GORIBBA :DDDDD| +|08/01/2022 09:49:30| |PIZZA ON CHOPSTICKS????????| +|08/01/2022 09:49:31| |NJET MOLOTOFF| +|08/01/2022 09:49:33| NYAA +|08/01/2022 09:49:37| HOT +|08/01/2022 09:49:40| |Loli and then molester duh| +|08/01/2022 09:49:42| NYAA +|08/01/2022 09:49:43| |WHACK A MOGURA| +|08/01/2022 09:49:45| |I HATE PIRATES| +|08/01/2022 09:49:46| |She grooms Arisu daily| +|08/01/2022 09:49:48| |27,000 Russians dead during the 1939 Winter War. This is bad| +|08/01/2022 09:49:48| |So basically Shimada 2.0 fight| +|08/01/2022 09:49:48| |>lets redo pravda| +|08/01/2022 09:49:48| |camping bitches| +|08/01/2022 09:49:51| |I LOVE PIRATES| +|08/01/2022 09:49:53| |JUST FUCVK UP THAT VIILLAGE| +|08/01/2022 09:49:59| |I WONDER WHAT THOSE SNOWMEN COULD BE| +|08/01/2022 09:49:59| |White tiger| +|08/01/2022 09:50:02| |Don't trust the snow creatures| +|08/01/2022 09:50:02| |BURN THE VILLAGE| +|08/01/2022 09:50:05| TULTA:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:50:06| |sus snowmen| +|08/01/2022 09:50:07| |finn mind game strong oarai loves village zone| +|08/01/2022 09:50:07| |lets go to the trap village| +|08/01/2022 09:50:09| |HMMMMMMMMM WHAT ABOUT THESE GIANT SNOWMEN?| +|08/01/2022 09:50:09| |cute snowmen| +|08/01/2022 09:50:11| |>team duck sees nothing wrong with this situation| +|08/01/2022 09:50:16| |i dont trust these snowmen| +|08/01/2022 09:50:17| |Is it me or are those snowmen suspicious...| +|08/01/2022 09:50:18| |snowmen among us | +|08/01/2022 09:50:18| kowaiiiiii +|08/01/2022 09:50:19| |Azusa "Moomin Destroyer" Sawa| +|08/01/2022 09:50:19| |the snowman is sus| +|08/01/2022 09:50:21| |NYAA those Finnish moles to where they popped up from| +|08/01/2022 09:50:22| |this is fine :-)| +|08/01/2022 09:50:23| |The lesson here is Don't trust Snow niggers| +|08/01/2022 09:50:24| |that's a pretty big snowman| +|08/01/2022 09:50:26| |Shut the fuck up the snowmen are fien| +|08/01/2022 09:50:28| >FINNED +|08/01/2022 09:50:30| |Surely that protrusion coming out of the snowman isn't a tank gun barrel| +|08/01/2022 09:50:31| |>no one suspects anything| +|08/01/2022 09:50:34| |I'M FUCKING FALLING ASLEEP I CAN'T GO ON ANYMORE| +|08/01/2022 09:50:35| |for you| +|08/01/2022 09:50:36| |arent the snowmen small?| +|08/01/2022 09:50:38| uuuu +|08/01/2022 09:50:38| SUOMIED +|08/01/2022 09:50:45| |>the snow starts speaking finnish| +|08/01/2022 09:50:45| |YOU'RE NOT FALLING ASLEEP ANON| +|08/01/2022 09:50:48| |less than 10 min left anon| +|08/01/2022 09:50:49| |THE SNOW IS SPEAKING FINNISH| +|08/01/2022 09:50:50| |STAY UP WITH ME| +|08/01/2022 09:50:52| |ITS LIKE 10 MORE MINUTES| +|08/01/2022 09:50:54| :DDDDDDDDD +|08/01/2022 09:50:54| |(not including the OVA 6)| +|08/01/2022 09:50:55| |BENIS IN THE DREES :DDDD BENIS IN THE DREES :DDDD| +|08/01/2022 09:50:57| |She's accurate with those directions| +|08/01/2022 09:50:59| |The snow speaks Moonin| +|08/01/2022 09:51:00| |>A BT-42 AS FLAG TANK| +|08/01/2022 09:51:10| |IT'S A TRAP| +|08/01/2022 09:51:12| |haha huijattu :-DDDDDDDDDDDDD| +|08/01/2022 09:51:18| |>japs think they can compete agains the spirit of the FINNOKOREAN HYPERWAR WARRIORS| +|08/01/2022 09:51:20| |IF I CAN STAY AWAKE UNTIL 11 AM, YOU CAN IT TOO| +|08/01/2022 09:51:22| |>snow starts speaking finnish| +|08/01/2022 09:51:24| |vihollinen motissa :DDDDDD| +|08/01/2022 09:51:31| benis +|08/01/2022 09:51:33| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:34| :DDDDDDDDD +|08/01/2022 09:51:35| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:35| :DDDDDDDDDDDDDDDDD +|08/01/2022 09:51:37| :DDDD +|08/01/2022 09:51:38| AAAAAAAAAAAAAAAAAA +|08/01/2022 09:51:39| |FUG :DDDDDDDDDDDD| +|08/01/2022 09:51:40| |fug :DDDDDDDD | +|08/01/2022 09:51:40| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:40| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:40| FUG +|08/01/2022 09:51:40| :DDDD +|08/01/2022 09:51:41| |TIME FOR FUG| +|08/01/2022 09:51:41| |o fug polkka :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:41| Russianptsd.web +|08/01/2022 09:51:42| TRÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +|08/01/2022 09:51:42| |ID COMES :DDDDDDDDDDDDD| +|08/01/2022 09:51:42| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:42| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:42| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:42| |HYPERWAR BETERANS:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:44| |PANIC THERES A SNIPER ON THE LOOSE| +|08/01/2022 09:51:44| |IS IT TIME| +|08/01/2022 09:51:45| |Hobo snufkin| +|08/01/2022 09:51:45| |OH FUGGG :DDDDDDDDD| +|08/01/2022 09:51:45| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:45| |ruse cruise| +|08/01/2022 09:51:45| |HOLY FUCK IT WAS A TRAP| +|08/01/2022 09:51:45| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:46| AAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:51:46| |OH SHIDDD :DDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:47| |OOHHHH SH---| +|08/01/2022 09:51:47| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:47| |SURBRISE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:48| |MOOMIN STRIKES AGAIN!| +|08/01/2022 09:51:49| |its a trap| +|08/01/2022 09:51:50| |BENIS :DDDDD| +|08/01/2022 09:51:50| |o fug :DDDDDDDDDDD| +|08/01/2022 09:51:51| |lets gooooooooooooooooooooooooooo| +|08/01/2022 09:51:51| |how did the finns hiding in the snowmen hide their tracks so quickly and well?| +|08/01/2022 09:51:52| |BENIS :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:53| |OH FUG :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:53| |o fug it was ambush :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:53| |YLLÄTYS :DDDDDDDD| +|08/01/2022 09:51:54| |I warned you| +|08/01/2022 09:51:54| |OH NO BROS| +|08/01/2022 09:51:55| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:55| NANI +|08/01/2022 09:51:55| |OH FUGGG :DDDDDDDDDD| +|08/01/2022 09:51:56| |Literally Red Alert 3| +|08/01/2022 09:51:57| TETTAI +|08/01/2022 09:51:59| |SNEAG ADDAGG :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:00| :DD +|08/01/2022 09:52:01| |FUUUUUG :DDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:01| |useless sharks| +|08/01/2022 09:52:02| |oh fugg :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:03| :DDDDD +|08/01/2022 09:52:04| |ITS A TRAP| +|08/01/2022 09:52:05| |IT'S OVER | +|08/01/2022 09:52:06| :DDDDDDDDDDDDDDDDD +|08/01/2022 09:52:08| SUOMI +|08/01/2022 09:52:14| |SNEAG ATTAK :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:15| |PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:16| >BENISSED +|08/01/2022 09:52:17| |SHARK JOB| +|08/01/2022 09:52:17| 8=====================DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:52:18| |They ignored the MK IV lmao| +|08/01/2022 09:52:20| |I HATE THE PIRATES| +|08/01/2022 09:52:23| |HYVA SUOMI| +|08/01/2022 09:52:24| |tank stealth| +|08/01/2022 09:52:25| |SHARK TEAM DO SOMETHING| +|08/01/2022 09:52:25| |stupid fucking shark| +|08/01/2022 09:52:27| |Orari Bros we got cocky....| +|08/01/2022 09:52:28| >Sharks +|08/01/2022 09:52:29| |>everyone just fuckin gignores the mk iv| +|08/01/2022 09:52:29| |DOO GOGGY OORAI :DDDDDDDDDDDD| +|08/01/2022 09:52:29| |jumalauta :DDDDD| +|08/01/2022 09:52:30| OUTPLAYED +|08/01/2022 09:52:32| VITTU +|08/01/2022 09:52:32| |>perfectly surrounds oorai >still gets destroyed| +|08/01/2022 09:52:33| SNIPED +|08/01/2022 09:52:34| NYAA +|08/01/2022 09:52:36| trickshot +|08/01/2022 09:52:36| |stoic loader| +|08/01/2022 09:52:37| NYAA +|08/01/2022 09:52:38| |why are the gamers the flag tank| +|08/01/2022 09:52:39| AIRSHOT +|08/01/2022 09:52:39| >PLANNED +|08/01/2022 09:52:39| |NYAAAAAAAA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:39| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 09:52:41| |AHHHHHHH MAKO-CHAN| +|08/01/2022 09:52:42| |DOUBLE KILL| +|08/01/2022 09:52:44| BULLSHIT +|08/01/2022 09:52:44| |O FUG :DDDDDDDDDDDD| +|08/01/2022 09:52:45| |DOUBLE KILL| +|08/01/2022 09:52:45| |DOUBLE KILL| +|08/01/2022 09:52:46| |DODSUGEGI :-DDDDDDDDDDDDDDDD| +|08/01/2022 09:52:46| SASUGA +|08/01/2022 09:52:47| |THE MARK IV CAN'T DO SHIT. IT COULDN'T EVEN RUN IN MOST SNOWY CONDITIONS| +|08/01/2022 09:52:47| |DOUBLE KILL| +|08/01/2022 09:52:48| |they reused that show of yukari reloading| +|08/01/2022 09:52:48| |OH BABY A DOUBLE| +|08/01/2022 09:52:48| NANI +|08/01/2022 09:52:48| |YO WTF| +|08/01/2022 09:52:50| |Imagine if Mika had actual good tanks| +|08/01/2022 09:52:51| |ONE SHOT TWO KILLS| +|08/01/2022 09:52:51| FUGGGGG +|08/01/2022 09:52:51| GODDAMN +|08/01/2022 09:52:52| |>clear shot at the flag tank || >shoots ankou| +|08/01/2022 09:52:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:52:52| FUG +|08/01/2022 09:52:53| |dddddddddddddddd double kill| +|08/01/2022 09:52:53| |No fucking way| +|08/01/2022 09:52:53| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:52:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:52:54| WTF +|08/01/2022 09:52:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:52:54| WTF? +|08/01/2022 09:52:55| |TWO IN ONE| +|08/01/2022 09:52:55| |ONE IN A BILLION| +|08/01/2022 09:52:55| |INSTANT REPLAY| +|08/01/2022 09:52:56| |d-d-d-d-d-DOUBLE KILL| +|08/01/2022 09:52:56| |You're pretty good| +|08/01/2022 09:52:56| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:52:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:52:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:52:57| >trickshots +|08/01/2022 09:52:58| |bullshit even WT ain't like that| +|08/01/2022 09:53:00| TWOFER +|08/01/2022 09:53:00| NANI?! +|08/01/2022 09:53:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:53:01| real? +|08/01/2022 09:53:01| |DOUBLE KILL!!| +|08/01/2022 09:53:04| :DDDDDDDDDD +|08/01/2022 09:53:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 09:53:04| |FUG :DDDDDDD| +|08/01/2022 09:53:05| |FUG :DDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:06| |IT'S NIPA| +|08/01/2022 09:53:06| |MAKO-CHAN, MASTER OF ASIAN LAND WARS| +|08/01/2022 09:53:06| |SNIBER :DDDDDDDDDDDD| +|08/01/2022 09:53:06| JOUKO +|08/01/2022 09:53:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:53:07| SIMO +|08/01/2022 09:53:07| |OH MY GOD INHUMAN REACTIONS| +|08/01/2022 09:53:07| YOUKO +|08/01/2022 09:53:08| |Oh no...| +|08/01/2022 09:53:09| |YOU'RE IN THE SNIPER'S SIGHT| +|08/01/2022 09:53:09| Sniped +|08/01/2022 09:53:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:53:11| |OH NO| +|08/01/2022 09:53:11| SIMOOOOOO +|08/01/2022 09:53:13| RUNKATA:DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:53:15| SIMOOOOOOOOOO +|08/01/2022 09:53:15| !!! +|08/01/2022 09:53:16| BLIND +|08/01/2022 09:53:16| SNIBER???? +|08/01/2022 09:53:16| |GET SIMO'D| +|08/01/2022 09:53:17| |OOARAIBROS I DON'T FEEL GOOD| +|08/01/2022 09:53:17| |STURMI :DDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:17| AAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:18| |LOOOK OUT| +|08/01/2022 09:53:18| |mako spot stug on 2km is something| +|08/01/2022 09:53:19| |oh fug| +|08/01/2022 09:53:20| AAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:21| |ITS OVER| +|08/01/2022 09:53:21| |MAKO CARRY| +|08/01/2022 09:53:22| |hardscoped :DDDDDDDDDD| +|08/01/2022 09:53:22| |The White Death| +|08/01/2022 09:53:22| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIIIIIIIIIIEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:53:22| |a sexy witch| +|08/01/2022 09:53:23| |LOOK OUT| +|08/01/2022 09:53:23| F +|08/01/2022 09:53:23| |SNIPE :DDDD| +|08/01/2022 09:53:23| |MAJO :DDDDDDDDDDD| +|08/01/2022 09:53:24| |WHITE WITCH| +|08/01/2022 09:53:24| BTFO +|08/01/2022 09:53:25| |FUUUUUUUUUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:25| |AAAAAAAAAAAAAAAAAAAAA NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 09:53:25| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:26| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:27| |Shiroi Majo| +|08/01/2022 09:53:27| |I can't believe Miho is fucking dead| +|08/01/2022 09:53:27| Re:Zero? +|08/01/2022 09:53:27| |Ooarai bros......| +|08/01/2022 09:53:27| |Shiroi majo wa ne| +|08/01/2022 09:53:27| |whide bitch :DDDDDDDDDD| +|08/01/2022 09:53:28| |I CAN'T BELIEVE MIHO IS FUCKING DEAD| +|08/01/2022 09:53:29| |SHID :DDDDDDDD| +|08/01/2022 09:53:29| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:53:30| |ANKOU DEAD!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 09:53:30| MAJO +|08/01/2022 09:53:31| |IT'S OVER OOARI BROS| +|08/01/2022 09:53:31| |BHITE BISH:DDDDDDDDDDDDD| +|08/01/2022 09:53:31| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:32| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:32| JOOOOOOOOOOOOOOOOUUUUUUUUUUUUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:32| |fuck youuuuuuuuuuuuuuuu ooarai| +|08/01/2022 09:53:32| RIP +|08/01/2022 09:53:33| |SNIPPER :DDDD| +|08/01/2022 09:53:34| |FUG :DDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:34| |OH NONONONNNOOONONNONONO MIHOBROS| +|08/01/2022 09:53:36| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:36| |sniper pissed| +|08/01/2022 09:53:36| |FUG :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:37| FFFFFFFFFFF +|08/01/2022 09:53:37| |MIHO IS FUCKING DEAD| +|08/01/2022 09:53:37| F +|08/01/2022 09:53:37| AAAAAAAAAAAAAAA +|08/01/2022 09:53:38| |WHITE DESU| +|08/01/2022 09:53:38| |Did we perhaps get too cocky............| +|08/01/2022 09:53:39| |ankou destroyed| +|08/01/2022 09:53:39| |DUMP OOARARI COIN STAT| +|08/01/2022 09:53:39| ooraribros... +|08/01/2022 09:53:40| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:40| |SNIBER :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:40| |no more plot armor for ooarai| +|08/01/2022 09:53:41| |ALL MY MONEY ON KEIZOKU| +|08/01/2022 09:53:41| AHHHHHHHHHHHHHH +|08/01/2022 09:53:41| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:53:42| |IT'S FUCKING OVER| +|08/01/2022 09:53:43| |OH SHIT| +|08/01/2022 09:53:43| |FUGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:43| |FINALLY | +|08/01/2022 09:53:44| CLIFFHANGER +|08/01/2022 09:53:44| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:53:45| |SERIES OVER| +|08/01/2022 09:53:45| 88888888888888888 +|08/01/2022 09:53:46| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:53:46| |ITS OBER :dddddddddddd| +|08/01/2022 09:53:46| |I can't believe OOARAI FUCKING LOST| +|08/01/2022 09:53:46| |gg its over without miho| +|08/01/2022 09:53:46| |WHAT THE FUCK THAT'S NOT FAIR| +|08/01/2022 09:53:47| |THIS IS THE END MY ONLY FRIEND THE END| +|08/01/2022 09:53:47| |MARINE YOURE THE LASt ONE COMPLETE THE MISSION| +|08/01/2022 09:53:47| |WHO WILL CARRY NOW???| +|08/01/2022 09:53:47| |Oarai got too cocky| +|08/01/2022 09:53:48| >over +|08/01/2022 09:53:48| |see you in two years| +|08/01/2022 09:53:48| |azusa time in 2 years| +|08/01/2022 09:53:49| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:49| |11 fucking hours| +|08/01/2022 09:53:49| |See you in 11 hours, bros| +|08/01/2022 09:53:50| >cliffhanger +|08/01/2022 09:53:50| |kono bangumi wa etc| +|08/01/2022 09:53:50| |IT'S ALL OGRE| +|08/01/2022 09:53:50| |Miho got perkled| +|08/01/2022 09:53:51| |Anglerfish is dead| +|08/01/2022 09:53:51| |its over!| +|08/01/2022 09:53:51| |MISSION FAILED| +|08/01/2022 09:53:51| |FUCKING CHEATERS| +|08/01/2022 09:53:52| |ENTER MISSION TIME MOTHERFUCKER| +|08/01/2022 09:53:52| |See you in 3 years| +|08/01/2022 09:53:52| |SEE YA IN 2 FUCKING YEARS| +|08/01/2022 09:53:52| |Why does it seem like Ooarai always plays away games?| +|08/01/2022 09:53:52| |TIME TO PASS OUT NOW| +|08/01/2022 09:53:53| |2 YEARS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:53:53| |AZUSA'S TIME TO SHINE| +|08/01/2022 09:53:53| |thanks for the stream, see you all in 2 years o7| +|08/01/2022 09:53:53| |DAS FINALE 4 WHEN| +|08/01/2022 09:53:53| |>OVER FOR 2 YEARS| +|08/01/2022 09:53:53| |DF4 NEXT| +|08/01/2022 09:53:54| |ENTER ENTER MISSION| +|08/01/2022 09:53:54| |2 years later| +|08/01/2022 09:53:54| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:53:55| |2 year wait LETS GOOOOOOOOOOO| +|08/01/2022 09:53:55| |OOARAI IS FUCKED| +|08/01/2022 09:53:55| |WELP IM GLAD ITS OVER BOYs.| +|08/01/2022 09:53:55| |TIME WARP INTO DAS FINALE 4 NOW RIGHT| +|08/01/2022 09:53:55| |2 more years in Binland boys| +|08/01/2022 09:53:56| |See yall in 2025| +|08/01/2022 09:53:56| |so the girls are dead | +|08/01/2022 09:53:56| |GUP IS ETERNAL| +|08/01/2022 09:53:56| AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 09:53:57| |1am lol| +|08/01/2022 09:53:57| |OORAI BROS| +|08/01/2022 09:53:57| |see you guys in another few years| +|08/01/2022 09:53:58| >over +|08/01/2022 09:53:58| |AAAAAAAAAAAAAAAAAAA WE HAVE TO WAIT| +|08/01/2022 09:53:59| |we done| +|08/01/2022 09:54:00| |SEE YOU IN TOO YEARS | +|08/01/2022 09:54:00| |2 yearrrrrrrr| +|08/01/2022 09:54:01| |SEE YOU IN 2 FUCKING YEARS| +|08/01/2022 09:54:01| |SEE YOU IN 2 YEARS FAGS| +|08/01/2022 09:54:01| |see you all next year| +|08/01/2022 09:54:03| |ENTER MISSION| +|08/01/2022 09:54:03| |>2 more years| +|08/01/2022 09:54:04| RIP +|08/01/2022 09:54:04| |SEE YOU IN 2 YEARS| +|08/01/2022 09:54:04| |2 FUCKING YEARS FAGGOTS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:54:05| |You can wait a little longer right?| +|08/01/2022 09:54:06| |>2+ years for the next one!| +|08/01/2022 09:54:07| |>2 years | +|08/01/2022 09:54:07| |see you faggots in 2 years| +|08/01/2022 09:54:08| |THANKS FOR THE STREAM| +|08/01/2022 09:54:08| |See you in 10 years for the next one| +|08/01/2022 09:54:08| |JUST SPLASH YOUR FACE WITH COLD WATER YOU'LL BE FINE| +|08/01/2022 09:54:08| |2 years will come in the blink of an eye| +|08/01/2022 09:54:09| |bros can't we just timewarp again| +|08/01/2022 09:54:09| |POST ANCHOVY LEWDS IN THE THREAD| +|08/01/2022 09:54:09| |THIS WAS FAST AS FUCK| +|08/01/2022 09:54:09| |SEE YOU IN 11 HOURS FAGS| +|08/01/2022 09:54:09| |CUTE NISHI| +|08/01/2022 09:54:10| |Sankyuu stream anon| +|08/01/2022 09:54:10| |See you guys in 2 years| +|08/01/2022 09:54:11| |SEE YOU NIBBAS IN 2 YEARS| +|08/01/2022 09:54:12| |WERE SO FUCKED| +|08/01/2022 09:54:12| |Thank you based anon for hosting this| +|08/01/2022 09:54:13| |2 YEARS| +|08/01/2022 09:54:13| |ugly tanks| +|08/01/2022 09:54:13| 2024? +|08/01/2022 09:54:13| |I can't believe that Momo and the Rabbits and the Anteaters and the Sharks are all ognna come in clutch| +|08/01/2022 09:54:14| |8PM :)| +|08/01/2022 09:54:15| |Nearly 11 hours| +|08/01/2022 09:54:15| |ALLLLLLLLLLLLL THIS FOR A CLIFFFF HANGAR THAT WON'T BE RESOLVED FOR FUCKING YEARSSSSSSSSSSSSSSSSSSSSSSSSSSS| +|08/01/2022 09:54:15| |MOMO-TAICHOU WILL PREVAIL BROS| +|08/01/2022 09:54:16| |2 FUCKING YEARSSSSSSSSSSSSSSSSS| +|08/01/2022 09:54:16| |See some of you in the SNW Stream niggers| +|08/01/2022 09:54:17| |How can they win when their flag tang was just knocked out| +|08/01/2022 09:54:17| |>movie ending on a fucking cliffhanger| +|08/01/2022 09:54:18| |THANKS FOR THE STREAM GALAX| +|08/01/2022 09:54:19| |Maybe I can see part 4 in 4D...| +|08/01/2022 09:54:19| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 09:54:19| |thanks anon| +|08/01/2022 09:54:20| |BIGGEST FUCKING SHIPPAI OF ALL TIME| +|08/01/2022 09:54:21| |Until next time| +|08/01/2022 09:54:22| |1 AM HERE| +|08/01/2022 09:54:22| |Can't believe i survived the whole thing| +|08/01/2022 09:54:22| |thanks anons this was fun once again, see you for the wotos| +|08/01/2022 09:54:22| |Thanks for the stream, see you all in the next one| +|08/01/2022 09:54:23| |fuck if ww3 ain't happen until df4| +|08/01/2022 09:54:23| |THANK YOU ANON FOR HOSTING THIS STREAM| +|08/01/2022 09:54:23| |see you later faggots| +|08/01/2022 09:54:25| |SUOMI SAATANA VITTU PERKELE| +|08/01/2022 09:54:25| |sure didn't waste my day| +|08/01/2022 09:54:26| |8 years more if we're lucky for final show| +|08/01/2022 09:54:27| |Thanks for the stream| +|08/01/2022 09:54:28| |>2 fucking years| +|08/01/2022 09:54:28| |>work in 4 hours IT WAS WORTH IT FAGGOTS| +|08/01/2022 09:54:29| |DON'T FORGET THE SNW STREAM| +|08/01/2022 09:54:30| |I MADE IT BANZAI BANZAI BANZAI| +|08/01/2022 09:54:30| |SANKU U SANK U| +|08/01/2022 09:54:31| |FUCK YOU OOARAI| +|08/01/2022 09:54:31| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:31| |See you in 2 years| +|08/01/2022 09:54:31| enter +|08/01/2022 09:54:31| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 09:54:31| ENTAAA +|08/01/2022 09:54:32| |3AM, 11 hours...| +|08/01/2022 09:54:32| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:33| |10 am| +|08/01/2022 09:54:33| |>OVER FOREVER| +|08/01/2022 09:54:33| |ESTBROS REPORT IN| +|08/01/2022 09:54:34| |ENTER ENTER BUFFER| +|08/01/2022 09:54:35| |SARABA NIGGERS | +|08/01/2022 09:54:35| |>unreal engine| +|08/01/2022 09:54:36| |3AM REPORTING| +|08/01/2022 09:54:37| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:37| |THANKS ANON| +|08/01/2022 09:54:37| |ENTAH ENTAH| +|08/01/2022 09:54:38| HAYAKU +|08/01/2022 09:54:38| |ENTER ENTER MISSIONNNNNNNNNNNNNNNNNNNN| +|08/01/2022 09:54:38| |THANK YOU FOR THE STREAM| +|08/01/2022 09:54:38| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:39| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:39| |1 am, ive been here for 12 hours| +|08/01/2022 09:54:40| |very fun, first time i ever participated in a watchalong | +|08/01/2022 09:54:41| |PRESS B TO DO A BOUNCY-TOTSUGEKI| +|08/01/2022 09:54:41| |ENTA ENTA MISSION| +|08/01/2022 09:54:41| |6 hours of sleep until anison matrix| +|08/01/2022 09:54:42| |ENTEH ENTEH MISSSION| +|08/01/2022 09:54:42| |ENTAAAA ENTAAAA MISSION| +|08/01/2022 09:54:43| |Thankyou for the stream| +|08/01/2022 09:54:43| >10am +|08/01/2022 09:54:43| |ENTAR ENTAR MISSION| +|08/01/2022 09:54:43| HAYAKU +|08/01/2022 09:54:43| hayaku +|08/01/2022 09:54:44| |3 YEAR INTER INTER MISSION| +|08/01/2022 09:54:45| |4:00 am boyos| +|08/01/2022 09:54:45| |SEE YOU IN 2024| +|08/01/2022 09:54:46| B +|08/01/2022 09:54:47| |ENTAH ENTAH| +|08/01/2022 09:54:47| |<3 <3 <3| +|08/01/2022 09:54:48| |ENTER ENTER MISSION| +|08/01/2022 09:54:48| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:48| ISSHOUKENMEI +|08/01/2022 09:54:48| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:48| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:48| ISSHOUKENMEI +|08/01/2022 09:54:48| |ENTA ENTA MISSION| +|08/01/2022 09:54:49| B +|08/01/2022 09:54:50| B +|08/01/2022 09:54:50| |ENTER ENTER MISSIOOOOOOOOOOOOOOOOOONNNN| +|08/01/2022 09:54:50| |thanks for the stream anon, have a good night all| +|08/01/2022 09:54:51| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:51| ITSUMO +|08/01/2022 09:54:54| |2 YEAR PISS BREAK| +|08/01/2022 09:54:54| |Thank you Galax| +|08/01/2022 09:54:54| itsumo +|08/01/2022 09:54:54| 08:52 +|08/01/2022 09:54:55| |yes thanks for stream, I came late and only saw the movie right before the main battle started, but was fun thanks| +|08/01/2022 09:54:55| |BUFFER BUFFER MISSION| +|08/01/2022 09:54:57| |HIKARU TAIYOU| +|08/01/2022 09:54:57| |ITSUMO TE WO TSUNAIDE| +|08/01/2022 09:54:58| |3 am here goodnight anons| +|08/01/2022 09:54:58| |9:00 AM - time for sleep| +|08/01/2022 09:54:59| |ENTAH ENTAH MISSIOH| +|08/01/2022 09:54:59| |ENTER , ENTER MISSION| +|08/01/2022 09:55:00| |goodnight ESTbros| +|08/01/2022 09:55:00| >5pm +|08/01/2022 09:55:03| |ZUTTO ISSHO NO MIRAIIIIIIIII| +|08/01/2022 09:55:03| |3AM CHADS REPORT| +|08/01/2022 09:55:03| |ENTER ENTER MISSION| +|08/01/2022 09:55:03| |I SWEAR TO GOD IF WW3 HAPPENS I'LL WADE THROUGH THE RADS TO INTERRIGATE THE NIPS TO GIVE ME THE STORY BOARDS OF THE NEXT MOVIE| +|08/01/2022 09:55:03| |6 am | +|08/01/2022 09:55:06| |ASU NO TAIYOU HIKARI TAIYOU| +|08/01/2022 09:55:06| encore +|08/01/2022 09:55:06| |9am here too| +|08/01/2022 09:55:07| |THEYRE SO CUTE| +|08/01/2022 09:55:08| |WAKE ME UP IN 2024 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:55:09| |>americans complaining about having to stay up until 4am| +|08/01/2022 09:55:10| |i dont wanna go| +|08/01/2022 09:55:11| :D +|08/01/2022 09:55:11| MIRAIIIII +|08/01/2022 09:55:12| 6am +|08/01/2022 09:55:12| |GG BOYS| +|08/01/2022 09:55:12| |SEE YOU GLORIOUS BASTARDS AGAIN IN 2 YEARS!| +|08/01/2022 09:55:12| |2:53 AM| +|08/01/2022 09:55:13| |holy shit it's almost 4 am| +|08/01/2022 09:55:13| |10 AM ._.| +|08/01/2022 09:55:14| |ZUTTO ISSHO NO MIRAI| +|08/01/2022 09:55:18| |umm encore?| +|08/01/2022 09:55:19| |cute IJA| +|08/01/2022 09:55:19| |FINLAND WILL WIN| +|08/01/2022 09:55:20| |11 HOURS LADS WE MADE IT| +|08/01/2022 09:55:21| |EST CHADS REPORT| +|08/01/2022 09:55:22| 5:PM +|08/01/2022 09:55:25| GG +|08/01/2022 09:55:25| |1 hour sleep then work if the weather clears| +|08/01/2022 09:55:25| |LONG LIVE FINLAND| +|08/01/2022 09:55:26| |IT'S 10AM| +|08/01/2022 09:55:27| :D +|08/01/2022 09:55:27| |E N C O R E| +|08/01/2022 09:55:27| DF4? +|08/01/2022 09:55:28| YATTAAAAAA +|08/01/2022 09:55:28| |SEE YOU TOMORROW AND NEXT YEAR!| +|08/01/2022 09:55:29| |keep looping the stream for 2 years| +|08/01/2022 09:55:29| |ENCORE CHADS| +|08/01/2022 09:55:30| |SEE YOU IN 2 YEARS FRIENDS :)| +|08/01/2022 09:55:30| |EST REPORTING IN| +|08/01/2022 09:55:30| |GG NICE STREAM| +|08/01/2022 09:55:30| weeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +|08/01/2022 09:55:32| |DAS FINALE!| +|08/01/2022 09:55:33| |SEE YOU IN 2 YEARS| +|08/01/2022 09:55:33| |its over| +|08/01/2022 09:55:34| |6AM GOOD NIGHT ANONS| +|08/01/2022 09:55:34| |JELLY DONUT!!| +|08/01/2022 09:55:34| |time for sora no woto| +|08/01/2022 09:55:34| OMEDETOU +|08/01/2022 09:55:34| ;_; +|08/01/2022 09:55:35| |2AM MUNCHIES| +|08/01/2022 09:55:35| |PISS TIME| +|08/01/2022 09:55:36| GG +|08/01/2022 09:55:37| |so it's over| +|08/01/2022 09:55:37| |sleep till wotos| +|08/01/2022 09:55:37| |GREAT SHOW AS ALWAYS 8888888888888888888888888888888| +|08/01/2022 09:55:39| |ima miss yall| +|08/01/2022 09:55:39| |SEE YA /A/| +|08/01/2022 09:55:40| |IT WAS REALLY FUN| +|08/01/2022 09:55:40| |That was bloody good| +|08/01/2022 09:55:40| ;_; +|08/01/2022 09:55:40| |IM GONNA NEED MORE REDBULLS FOR THE SNW STREAM| +|08/01/2022 09:55:40| OYAYA +|08/01/2022 09:55:41| |2 FUCKING YEEEEEEEEEEEEAAAAAARRRRRRRRRR| +|08/01/2022 09:55:42| |THANK YOU GALAX| +|08/01/2022 09:55:42| :( +|08/01/2022 09:55:42| |2 more yearrrr ;_;| +|08/01/2022 09:55:43| |SEE YOU GUYS!| +|08/01/2022 09:55:43| |THANKS EVERYONE| +|08/01/2022 09:55:43| 888888888888888888888888888888888888888888888 +|08/01/2022 09:55:43| |reminder to not die before das finale 6| +|08/01/2022 09:55:44| |SEE YOU LADS IN THE SNW STREAM| +|08/01/2022 09:55:44| BRAVO +|08/01/2022 09:55:44| |ARIGATOU MINNA SAN| +|08/01/2022 09:55:44| |SEE YOU IN 2 YEARS | +|08/01/2022 09:55:45| YEAHHHHHHHHHHHHHHHHHH +|08/01/2022 09:55:45| |ZWEI JAHRE| +|08/01/2022 09:55:46| 8888888888888888888888888888888 +|08/01/2022 09:55:46| |NOOOOOOOOOOOOOOOOOOOOOOOOO GIVE ME MORE| +|08/01/2022 09:55:47| |see ya in 2 years anon| +|08/01/2022 09:55:47| |Me in the middle| +|08/01/2022 09:55:48| |I CLAP| +|08/01/2022 09:55:49| |GuP is DEAD| +|08/01/2022 09:55:49| |Goodbye anons| +|08/01/2022 09:55:49| |never forget what a cunt erika was in the anime| +|08/01/2022 09:55:49| TY +|08/01/2022 09:55:49| |GOOD NIGHT ANONS| +|08/01/2022 09:55:49| |Some of you guys are Alright, do come to school tomorrow| +|08/01/2022 09:55:49| |2 years| +|08/01/2022 09:55:50| |<3 | +|08/01/2022 09:55:50| |JOIN SNW TOMORROW| +|08/01/2022 09:55:50| 888888888888888888888888888888888888888888888888888888 +|08/01/2022 09:55:50| |SEE YOU FUCKERS IN 3 YEARS| +|08/01/2022 09:55:50| |TIME TO NOT FUCKING KILL MYSELF | +|08/01/2022 09:55:51| ANZU +|08/01/2022 09:55:51| |thank you streamer overlords| +|08/01/2022 09:55:51| |THESE GIRLS SURE ARE CUTE | +|08/01/2022 09:55:51| |THANK YOU EVERYONE 88888888| +|08/01/2022 09:55:52| |SEE YOU IN 2 YEARS!| +|08/01/2022 09:55:52| |THANK YOU| +|08/01/2022 09:55:53| |CYA IN 2 YEARS ANONS| +|08/01/2022 09:55:54| NINEN +|08/01/2022 09:55:54| 888888888888888888888888888888 +|08/01/2022 09:55:54| |SEE YALL IN 2024| +|08/01/2022 09:55:54| |DANKE MODS| +|08/01/2022 09:55:54| |nooooooooooooooo neeed more| +|08/01/2022 09:55:54| |LEARN FROM ACID ANON, DONT DO DRUGS| +|08/01/2022 09:55:54| AIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:55:55| |one final dvce spam?| +|08/01/2022 09:55:57| |LOVE YOU ALL| +|08/01/2022 09:55:58| |Thankou for being herre| +|08/01/2022 09:55:58| |BYE BYE| +|08/01/2022 09:55:58| |NUR ZWEI JAHRE MEHR| +|08/01/2022 09:55:58| |POST ANCHOVY LEWDS IN THREAD| +|08/01/2022 09:55:59| |my wives mako and arisu are so fucking cute| +|08/01/2022 09:55:59| |Thanks Galax| +|08/01/2022 09:56:01| |It's Ogre| +|08/01/2022 09:56:01| |2024 WOOOOOOOOO| +|08/01/2022 09:56:01| |until next time faggots| +|08/01/2022 09:56:02| |See you in Das Finale 4| +|08/01/2022 09:56:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:04| |GOOD BYE| +|08/01/2022 09:56:05| |Thanks for the stream!| +|08/01/2022 09:56:05| |I better see ALL of you for wotos tomorrow| +|08/01/2022 09:56:05| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:06| |dos anos| +|08/01/2022 09:56:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:07| |I HOPE I'M STILL ALIVE BY THEN HOLY FUCKING SHIT| +|08/01/2022 09:56:07| |I love you guys| +|08/01/2022 09:56:08| |LOVE YA ANONS TAKE CARE| +|08/01/2022 09:56:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:08| |STUDIO SAN I KNEELLLLLLLLLLLLLLLLLLLLLLL| +|08/01/2022 09:56:09| |sayonara buttlickers| +|08/01/2022 09:56:09| DVCE +|08/01/2022 09:56:10| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:56:10| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:10| |Azusa will save Ooarai| +|08/01/2022 09:56:11| |bye thanks for the stream!| +|08/01/2022 09:56:12| |SEE YOU IN 2 YEARS| +|08/01/2022 09:56:12| |DUCE DUCE DUCE DUECE| +|08/01/2022 09:56:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:14| |GuP FOREVER!!!!!!!!!!!!!!!!!!| +|08/01/2022 09:56:14| |SEE YOU <3| +|08/01/2022 09:56:15| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:56:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:15| |see you guys later.| +|08/01/2022 09:56:16| |REMEMBER: YOU CAN"T DIE BEFORE ITS ACTUALLY OVER| +|08/01/2022 09:56:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:20| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:20| |DA SVIDANYA | +|08/01/2022 09:56:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:21| 2024 +|08/01/2022 09:56:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:21| |GET WELL SOON ACID ANON| +|08/01/2022 09:56:22| |See you in wotos| +|08/01/2022 09:56:22| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:56:23| |see ya in 2 years| +|08/01/2022 09:56:23| |bye bye /a/| +|08/01/2022 09:56:23| |FINAL REMINDER THAT ANZU MEANS SEX| +|08/01/2022 09:56:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:25| |BROS OF CULTURE| +|08/01/2022 09:56:25| |DANMANKU IS GOING SO FAST NO ONE NOTICE I LUV ALL OF U FAGGOTS | +|08/01/2022 09:56:26| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:56:26| |TWO YEARS FOR A FUCKING CLIFF HANGAR| +|08/01/2022 09:56:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:27| NORIKO<3 +|08/01/2022 09:56:27| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:30| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:30| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:32| |I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES | +|08/01/2022 09:56:32| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:33| |fuck you shark team| +|08/01/2022 09:56:33| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:34| Thanks! +|08/01/2022 09:56:34| |thanks anons good watching with you all :)| +|08/01/2022 09:56:34| |I NOTICED ANON SUCKS DICKS| +|08/01/2022 09:56:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:35| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:36| |DVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCE| +|08/01/2022 09:56:38| |gg bros| +|08/01/2022 09:56:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:39| |FRIST TIME?| +|08/01/2022 09:56:40| |See you 11 hours| +|08/01/2022 09:56:40| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:41| Dvcrdvcedvce +|08/01/2022 09:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:41| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:42| |I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE AND| +|08/01/2022 09:56:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:43| |Yukari is my wife| +|08/01/2022 09:56:43| |Can't wait to see the shark team be useless again!| +|08/01/2022 09:56:44| |I WANT TO FUCK HANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:56:45| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:45| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:45| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:56:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:47| |what happens in 11 hours?| +|08/01/2022 09:56:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:50| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:56:50| |fuck you shark team| +|08/01/2022 09:56:50| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:51| |I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE AND| +|08/01/2022 09:56:55| |THANKS GALAX| +|08/01/2022 09:56:55| |SNW IN 11 HOURS| +|08/01/2022 09:56:55| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:56| |ANZU UOOOOOOOHHHHHHHHHHHHHHH| +|08/01/2022 09:56:56| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:57| 2024 +|08/01/2022 09:56:57| fug +|08/01/2022 09:56:57| |when is tank corner?| +|08/01/2022 09:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:57:00| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:57:00| |IIII HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATEN IGGHERE I| +|08/01/2022 09:57:06| |ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE | +|08/01/2022 09:57:07| |SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW | +|08/01/2022 09:57:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:57:10| |anon that's racist| +|08/01/2022 09:57:11| |I WANT TO FUCK HANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:57:11| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 09:57:11| |Was was the total Danmaku count?| +|08/01/2022 09:57:12| anzu +|08/01/2022 09:57:16| |I WILL FLUFF YUKARI'S HAIR| +|08/01/2022 09:57:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:57:21| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 09:57:21| |fuck me in the ass| +|08/01/2022 09:57:22| |TL NOTE: ANZU = TOTSUGEKI| +|08/01/2022 09:57:22| |GIVE ME ALL THE LOLISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +|08/01/2022 09:57:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:57:27| |TL NOTE: "Anzu" means "sex"| +|08/01/2022 09:57:28| |I WILL FLUFF YUKARIS PUBES| +|08/01/2022 09:57:29| |THANKS TL| +|08/01/2022 09:57:30| |Thanks for the stream!| +|08/01/2022 09:57:33| |THANK TL| +|08/01/2022 09:57:33| |DANKE TL| +|08/01/2022 09:57:34| |LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI| +|08/01/2022 09:57:38| |I'm GOING to fuck Anzu| +|08/01/2022 09:57:38| |Erika is my wife| +|08/01/2022 09:57:40| |I HATE THE ANITCHRIST| +|08/01/2022 09:57:40| |thanks for the stream| +|08/01/2022 09:57:44| |REMINDER THAT MOMO IS A DORK| +|08/01/2022 09:57:45| |Some of You Guys are Alright, Don't go to School Tomorrow| +|08/01/2022 09:57:48| |I LOVE YOU FUCKERS| +|08/01/2022 09:57:48| |See you at Woto friends, now I rest| +|08/01/2022 09:57:50| |i love garupan| +|08/01/2022 09:57:57| |REMINDER THAT MOMO MARRIED TO ME| +|08/01/2022 09:58:03| o7 +|08/01/2022 09:58:03| |it's over| +|08/01/2022 09:58:04| |bai bai!!!| +|08/01/2022 09:58:05| |i don't wanna go, not yet| +|08/01/2022 09:58:12| |where tank corner| +|08/01/2022 09:58:14| Oyasumi +|08/01/2022 09:58:15| |SEX WITH HANA FOR THE REASON OF PROCREATION| +|08/01/2022 09:58:16| |LATER ANONS O7| +|08/01/2022 09:58:17| |GALAX play this https://youtube.com/watch?v=Z6Ek3h4HTRE| +|08/01/2022 09:58:17| |GOD I WISH I WERE MOMO'S HUSBAND| +|08/01/2022 09:58:21| |I CAN'T BELIEVE MIHO IS DED| +|08/01/2022 09:58:23| |Momo dum| +|08/01/2022 09:58:30| |Momo cum| +|08/01/2022 09:58:39| o7 +|08/01/2022 09:58:42| |is galax asleep| +|08/01/2022 09:58:42| Cunny? +|08/01/2022 09:58:47| o7 +|08/01/2022 09:58:50| |THANKS FOR THE GUPPIES!| +|08/01/2022 09:58:53| pi +|08/01/2022 09:58:57| o/ +|08/01/2022 09:59:02| VODKA! +|08/01/2022 09:59:05| |holy fuck that scared me| +|08/01/2022 09:59:05| VODKAAAAAAAAAA +|08/01/2022 09:59:06| |fug :DDD| +|08/01/2022 09:59:07| |O FUG :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:59:08| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:08| |OH SHIT| +|08/01/2022 09:59:10| |i refresh and what is this| +|08/01/2022 09:59:12| BLODKA +|08/01/2022 09:59:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:13| BENIS +|08/01/2022 09:59:14| BASED +|08/01/2022 09:59:14| |VODKA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:59:16| |CUTE BOOT TAP| +|08/01/2022 09:59:17| :DDDDDDDDDDDD +|08/01/2022 09:59:20| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:23| ウオッカ +|08/01/2022 09:59:23| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:23| KEIZOKUKLAANI +|08/01/2022 09:59:26| ウオッカ +|08/01/2022 09:59:26| |I haven't heard this song in 11 years at least| +|08/01/2022 09:59:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:29| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:29| VODLA +|08/01/2022 09:59:31| ウオッカ +|08/01/2022 09:59:32| |my wife, rosehip| +|08/01/2022 09:59:32| BASED +|08/01/2022 09:59:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:41| |DRINKING IS GOOD FOR YOU| +|08/01/2022 09:59:43| |I FEEL THE PERKEL WITHIN| +|08/01/2022 09:59:43| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD EBIN AFTER CREDITS| +|08/01/2022 09:59:45| :DDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:47| ウオッカ +|08/01/2022 09:59:52| |after party time?| +|08/01/2022 09:59:55| |FUG DIS >:D| +|08/01/2022 10:00:03| |ebin after party| +|08/01/2022 10:00:04| |was so confused what I was hearing and which tab it was from| +|08/01/2022 10:00:09| ウオッカ +|08/01/2022 10:00:13| |fug just end already I need to sleep :DDDD| +|08/01/2022 10:00:15| ウオッカ +|08/01/2022 10:00:16| |we need to end on What is Love, that is tradition| +|08/01/2022 10:00:17| |GREAT AFTER PARTY| +|08/01/2022 10:00:20| ウオッカ +|08/01/2022 10:00:44| MAWARE +|08/01/2022 10:00:46| |does anyone know when the next stream will be in future?| +|08/01/2022 10:00:59| |this is the last stream| +|08/01/2022 10:01:00| |when part 4 is out| +|08/01/2022 10:01:00| |when the next Das Finale comes out| +|08/01/2022 10:01:09| |see you in 2 years| +|08/01/2022 10:01:10| |When Part 4 is released| +|08/01/2022 10:01:11| |the world will end before we get more gup content, this is the end| +|08/01/2022 10:01:19| |WODKA WODKA WODKA| +|08/01/2022 10:01:22| |dont die until 2 years| +|08/01/2022 10:01:30| |did we just watch part 3?| +|08/01/2022 10:01:31| |Next marathon will be 12 hours long| +|08/01/2022 10:01:32| |BI-ANNUAL GUP STREAMS FOREVER| +|08/01/2022 10:01:32| ウオッカ          ウオッカ               ウオッカ           ウオッカ +|08/01/2022 10:01:33| |what can they do in fas finale 4 to utterly and ruthlessly ruin the series| +|08/01/2022 10:01:40| |yeah we just saw das final 3| +|08/01/2022 10:01:45| Okay +|08/01/2022 10:01:53| :DDDDDDDDDDDDDDD +|08/01/2022 10:01:56| |>GuP was in 2012 where did the time go| +|08/01/2022 10:01:57| |this is actually the teaser for df4| +|08/01/2022 10:01:58| |12. Then 13. Then anons die of sleep deprivation| +|08/01/2022 10:01:58| :DDDDD +|08/01/2022 10:01:59| |god I hate finns| +|08/01/2022 10:02:00| |>finnish >not black metal| +|08/01/2022 10:02:00| |EBIN :DDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 10:02:06| |mika boobs| +|08/01/2022 10:02:13| Milka +|08/01/2022 10:02:13| :3 +|08/01/2022 10:02:13| kino +|08/01/2022 10:02:16| Kino +|08/01/2022 10:02:16| :3 +|08/01/2022 10:02:18| Kino! +|08/01/2022 10:02:21| YES +|08/01/2022 10:02:23| KEK +|08/01/2022 10:02:26| SFX +|08/01/2022 10:02:28| |FWEE FWEE FWEE| +|08/01/2022 10:02:32| |One of my Favorite WEBms| +|08/01/2022 10:02:42| toot +|08/01/2022 10:02:43| KINO +|08/01/2022 10:02:44| |FWEE FWEE KNOCK KNOCK BANG BANG| +|08/01/2022 10:03:00| |God the soundporn...| +|08/01/2022 10:03:00| AAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 10:03:07| |okay i take it back, this should be our official ending anthem| +|08/01/2022 10:03:14| |WHAT IS LOVE| +|08/01/2022 10:03:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:16| |WHAT IS LOVE| +|08/01/2022 10:03:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:18| |GET A SUPER CUB NOW| +|08/01/2022 10:03:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:21| |DON'T HURT ME| +|08/01/2022 10:03:21| yes +|08/01/2022 10:03:22| |WHAT IS DUCE| +|08/01/2022 10:03:23| |BABY DON'T HURT ME| +|08/01/2022 10:03:23| |BABY DON'T HURT ME| +|08/01/2022 10:03:24| DUCEDUCEDUCE +|08/01/2022 10:03:24| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 10:03:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:24| |WHAT IS LOVE| +|08/01/2022 10:03:25| |WHAT IS LOVE| +|08/01/2022 10:03:26| |DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:03:27| YES +|08/01/2022 10:03:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:31| |DONT HURT ME| +|08/01/2022 10:03:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:03:37| |DVCE DVCE DVCE| +|08/01/2022 10:03:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:39| |DUCE | +|08/01/2022 10:03:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:42| |DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:42| |DUCE | +|08/01/2022 10:03:42| |will we be getting a stream when the dub comes out?| +|08/01/2022 10:03:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:46| |DUCE | +|08/01/2022 10:03:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:47| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:03:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:50| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:03:51| |DUCE | +|08/01/2022 10:03:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:55| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:03:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:03:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:00| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:04:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:06| |BABY DONT HURT ME| +|08/01/2022 10:04:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:09| DUCE +|08/01/2022 10:04:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:10| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:12| |WHAT IS LOVE| +|08/01/2022 10:04:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:04:16| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:16| |WHAT IS LOVE| +|08/01/2022 10:04:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:20| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:22| DUCE +|08/01/2022 10:04:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:24| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:04:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:25| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:26| |DUCE DUCE DUCE DUCE| +|08/01/2022 10:04:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:27| DUCE +|08/01/2022 10:04:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:30| DUCE +|08/01/2022 10:04:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:32| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:35| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo | +|08/01/2022 10:04:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:35| |DUCE | +|08/01/2022 10:04:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:40| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:04:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCED DVCE| +|08/01/2022 10:04:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:49| |DUCE | +|08/01/2022 10:04:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:51| DUCE +|08/01/2022 10:04:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:53| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:04:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:04:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:59| DUCE +|08/01/2022 10:04:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:12| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |NO MORE| +|08/01/2022 10:05:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:23| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE CUDE CUDE CUCE| +|08/01/2022 10:05:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:26| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:05:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:35| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:05:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:05:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:05:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:42| DUCE +|08/01/2022 10:05:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:57| |WHAT IS LOVE| +|08/01/2022 10:05:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:09| |FUCK I MISSED DF3| +|08/01/2022 10:06:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:17| |DUCE | +|08/01/2022 10:06:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:06:20| |DVCE | +|08/01/2022 10:06:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:36| |DVCE IS LOVE| +|08/01/2022 10:06:36| |YOU SICK BASTARDS I WAS FREEE, I WAS FREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +|08/01/2022 10:06:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:51| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:06:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:54| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:06:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:55| v +|08/01/2022 10:06:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:59| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:07:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:03| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:07:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:07:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:17| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 10:07:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:07:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:22| DOUCHE +|08/01/2022 10:07:23| oOoOoOo +|08/01/2022 10:07:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:28| oOoOoOooOoOoOooOoOoOooOoOoOo +|08/01/2022 10:07:28| |DUCE DUCE DUCE | +|08/01/2022 10:07:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:07:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:33| |o/ o/ o/ o/ o/| +|08/01/2022 10:07:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:34| oOoOoOooOoOoOooOoOoOooOoOoOo +|08/01/2022 10:07:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:07:39| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVC| +|08/01/2022 10:07:39| |WHAT IS LOVE| +|08/01/2022 10:07:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:42| |WHAT IS LOVE| +|08/01/2022 10:07:44| |DUCE IS LOVE| +|08/01/2022 10:07:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:44| |ALL MY FRIENDS ARE DEAD| +|08/01/2022 10:07:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:47| |WHAT IS LOVE| +|08/01/2022 10:07:47| F +|08/01/2022 10:07:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:53| |11 HOURS | +|08/01/2022 10:07:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:08:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:08:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:08:07| |and thus the final duces fade away| +|08/01/2022 10:08:07| |I WAS ALMOST FREE YOU FUCKS, BUT YOU HAD TO PULL ME BACK IN| +|08/01/2022 10:08:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:08:11| DVCE? +|08/01/2022 10:08:14| |>IT'S BEEN 1000 YEARS| +|08/01/2022 10:08:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:08:16| |IS IT OVER?| +|08/01/2022 10:08:20| |DUWANG TIME| +|08/01/2022 10:08:20| |GOOD NIGHT BOYS| +|08/01/2022 10:08:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:08:24| |am I free?| +|08/01/2022 10:08:26| |thanks 4 strim| +|08/01/2022 10:08:27| |go to sleep for 2 years then come back| +|08/01/2022 10:08:28| |WHERE TANK CORNER| +|08/01/2022 10:08:29| |we're... free...?| +|08/01/2022 10:08:31| |GOOD NIGHT AND GOOD DAY /A/| +|08/01/2022 10:08:32| |Bean chariot?| +|08/01/2022 10:08:33| <3 +|08/01/2022 10:08:35| Dvce +|08/01/2022 10:08:37| |THANKS FOR STREAM AND AFTER PARTY| +|08/01/2022 10:08:38| |reminder to stay alive anons, you have to see the end of GuP| +|08/01/2022 10:08:39| |REMINDER THAT YOU'RE STUCK HERE FOREVER| +|08/01/2022 10:08:42| |now that duce has been eliminated we will never see duce drive a tank ever again| +|08/01/2022 10:08:43| |IS IT FINALLY OVER????| +|08/01/2022 10:08:48| |Sleep for 2 years| +|08/01/2022 10:08:48| |ARE WE FREE??| +|08/01/2022 10:08:53| |ANTI DVCEFAGS NEED TO DIE| +|08/01/2022 10:08:54| |You cannot die until DF is finished| +|08/01/2022 10:08:54| OYASUMI +|08/01/2022 10:08:56| |Sleep forever| +|08/01/2022 10:08:57| |IS THIS HELL OVER????????| +|08/01/2022 10:09:01| uoh +|08/01/2022 10:09:05| |You cannot die until Ribbon Warrior is adapted| +|08/01/2022 10:09:07| |YOTSUBA ANIME WHEN????| +|08/01/2022 10:09:07| anons... +|08/01/2022 10:09:09| |Erika <3| +|08/01/2022 10:09:12| .....Totsugeki? +|08/01/2022 10:09:13| |mako is forever| +|08/01/2022 10:09:13| |save the whales| +|08/01/2022 10:09:16| |see you at DF4| +|08/01/2022 10:09:17| |>YOTSUBA ANIME| +|08/01/2022 10:09:17| |YOTSUBA ANIME NEVER| +|08/01/2022 10:09:22| |Sayonara totsugeki!| +|08/01/2022 10:09:27| |AZUMA DOESNT WANT IT| +|08/01/2022 10:09:32| GAY +|08/01/2022 10:09:33| |>ITS TIME TO WAIT ANOTHER 2 YEARS| +|08/01/2022 10:09:37| |SAY IT AIN'T SO| +|08/01/2022 10:09:41| |See you in 2 years| +|08/01/2022 10:09:48| |SEE YOU GUYS!| +|08/01/2022 10:09:49| |later gup bros| +|08/01/2022 10:09:51| |Don't kill yourselves until that| +|08/01/2022 10:09:53| |buh bye| +|08/01/2022 10:09:56| NIGGER +|08/01/2022 10:09:57| |See you guys later in the threads is was fun| +|08/01/2022 10:10:01| cy/a/ +|08/01/2022 10:10:02| |i hope we may meet again here in two years /a/| +|08/01/2022 10:10:03| Based +|08/01/2022 10:10:04| |JUST END ME| +|08/01/2022 10:10:08| HUGGBEES +|08/01/2022 10:10:08| |Remember, you're not allowed to die until GuP is over| +|08/01/2022 10:10:10| |I'll do my best to live for the series| +|08/01/2022 10:10:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:10:22| sayonara +|08/01/2022 10:10:28| |I HATE TEH ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 10:10:31| |LAST FOR DVCE| +|08/01/2022 10:10:40| |LAST FOR SEX WITH MAKO| +|08/01/2022 10:10:44| |last for ARISU| +|08/01/2022 10:10:49| :) +|08/01/2022 10:10:51| |LAST FOR DUCE| +|08/01/2022 10:10:53| |see you tomorrow at woto stream| +|08/01/2022 10:10:55| |Last for slags beating the dumb dog| +|08/01/2022 10:10:55| |LAST FOR LEWDING ALL THE GUPPIES UNDER 5FT| +|08/01/2022 10:10:59| |Last for I love the onion| +|08/01/2022 10:11:01| |gonna have sex with miho | +|08/01/2022 10:11:01| |SAVE THE WHALES!| +|08/01/2022 10:11:14| |How much do you love onion| +|08/01/2022 10:11:15| |LAST FOR SAORI PLEASURING HORSE DICK| +|08/01/2022 10:11:22| |I HATE THE ONION| +|08/01/2022 10:11:26| :( +|08/01/2022 10:11:26| |KEEP YOUR POWDER DRY| +|08/01/2022 10:11:29| |I love the onion| +|08/01/2022 10:11:30| |last for my wife anzu| +|08/01/2022 10:11:38| |anuz, heh| +|08/01/2022 10:11:38| MIHO! +|08/01/2022 10:11:45| |see you in 2024| +|08/01/2022 10:11:45| |WE HAVE YOU SURROUNDED COME EAT YOUR ONIONS | +|08/01/2022 10:11:48| |maho is too sexy| +|08/01/2022 10:11:56| |you misspelled mako| +|08/01/2022 10:11:59| |I HATE THE FROGS I HATE THE FROGS I HATE THE FROGSI HATE THE FROGS| +|08/01/2022 10:12:14| |I HATE THE ANTICHRIST I HATE THE ANTICHRISH I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 10:12:36| |ONIONS HAVE LAYERS | +|08/01/2022 10:12:39| |good night friends| +|08/01/2022 10:12:40| |see you in 2 years o7| +|08/01/2022 10:12:45| |o7 | +|08/01/2022 10:12:48| mataneeeeeeeeeeeeeeeee +|08/01/2022 10:12:52| |REMEMBER TO PRACTICE YOUR SENSHA DOU| +|08/01/2022 10:13:09| danmaku +|08/01/2022 10:13:35| |this is place is so empty no one will see me claim katyusha as my lawfully wedded wife| +|08/01/2022 10:13:45| |I saw that| +|08/01/2022 10:13:50| |katuysha is my lawfully wedded onahole| +|08/01/2022 10:13:53| |she's my wife already, sorry| +|08/01/2022 10:13:54| |are we dead yet?| +|08/01/2022 10:14:12| |UOOOOOH KATYUSHA TUMMY ToT| +|08/01/2022 10:14:51| |so long, and thanks for all the fish| +|08/01/2022 10:15:10| |how many autists remain?| +|08/01/2022 10:15:12| |last for dvce| +|08/01/2022 10:15:25| |last for ARISU| +|08/01/2022 10:15:36| |last for (you)| +|08/01/2022 10:17:50| |i'm going to bed if no one replies for the next minute| +|08/01/2022 10:17:58| |stay up baka| +|08/01/2022 10:18:01| |go to bed| +|08/01/2022 10:18:01| |hah now you have to stay up| +|08/01/2022 10:18:03| SHIT +|08/01/2022 10:18:11| |oyasumi faggots| +|08/01/2022 10:18:13| floof +|08/01/2022 10:18:21| oyasumako +|08/01/2022 10:18:26| ohayou +|08/01/2022 10:18:30| |ma si jolie femme| +|08/01/2022 10:18:37| |frogs out| +|08/01/2022 10:18:48| |BUMPY SEX WITH MAKO| +|08/01/2022 10:21:41| |if you can see this you should be asleep| +|08/01/2022 10:21:48| NAH +|08/01/2022 10:21:52| |I'll never sleep again| +|08/01/2022 10:22:38| |Sleep is a lie| +|08/01/2022 10:22:46| |I WANT TO INSEMINATE HANA WITH MY NECTOR| +|08/01/2022 10:22:52| |well if sleep was an upright that would be weird, haha| +|08/01/2022 10:23:22| |Mako sleeps so you don't have to| +|08/01/2022 10:24:53| |NEVER FORGETTI DVCE| +|08/01/2022 10:25:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:25:18| DVCE +|08/01/2022 10:25:25| benis +|08/01/2022 10:25:26| DVCE +|08/01/2022 10:25:33| DVCE +|08/01/2022 10:25:53| |ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU | +|08/01/2022 10:26:04| |is my wife| +|08/01/2022 10:26:58| |might be your wife if reality allowed a being as perfect as arisu to exist| +|08/01/2022 10:28:01| |WHAT THE FUCK WHERE AM I? I FEEL ASLEEP AND JUST WOKE UP TO A BLACK SCREEN| +|08/01/2022 10:28:13| |it's starting in 5min you're just in time| +|08/01/2022 10:28:27| H-honto? +|08/01/2022 10:28:34| |uso desu| +|08/01/2022 10:30:00| DAREKAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 10:30:05| nani +|08/01/2022 10:32:43| |chat is so dead nobody will know I desperately need to have sex with reizei mako| +|08/01/2022 10:33:10| |just so you know I saw that| +|08/01/2022 10:33:20| |no you didn't| +|08/01/2022 10:33:25| |yes I did| +|08/01/2022 10:37:10| DUCE +|08/01/2022 10:37:16| |Okay this time for real I'll go to bed, time to lucid dream about Mako.| +|08/01/2022 10:38:12| |whatever that was in blue, please summarize, I had my contacts out| +|08/01/2022 10:38:45| |basically having sex with mako in my dreams| +|08/01/2022 10:40:20| |why are we still here, just to suffer?| +|08/01/2022 10:41:02| |there's no other recourse left to us| +|08/01/2022 10:43:01| |where'd the loading indicator go| +|08/01/2022 10:44:00| |somehow 11 hours wasn't enough| +|08/01/2022 10:44:32| gaooo!!! +|08/01/2022 10:46:20| |no length of time could be enough, you guys are the best| +|08/01/2022 10:51:48| |last for mako| +|08/01/2022 10:53:05| |last after my last last for arisu| +|08/01/2022 10:55:24| |sex with miho| +|08/01/2022 10:55:31| |sex with mako| +|08/01/2022 10:55:38| |sex with Yukari| +|08/01/2022 10:55:45| |Sex with arisu| +|08/01/2022 10:55:51| |sex with hana| +|08/01/2022 10:55:58| |sex with nishi| +|08/01/2022 10:56:04| |sex with yuzu| +|08/01/2022 10:56:11| |sex with sae-chan| +|08/01/2022 10:56:18| |sex with nekonya| +|08/01/2022 10:56:24| |sex with chiyo| +|08/01/2022 10:56:27| |sex with mako-chan| +|08/01/2022 10:56:30| |sex with sodoko| +|08/01/2022 10:56:36| |sex with kondou| +|08/01/2022 10:56:40| |sex with arisu| +|08/01/2022 10:56:42| |sex with hoshino| +|08/01/2022 10:56:48| |sex with dvce| +|08/01/2022 10:56:54| |sex with pepperoni| +|08/01/2022 10:57:01| |sex with katyusha| +|08/01/2022 10:57:08| |sex with mika| +|08/01/2022 10:57:10| |sex with anzu| +|08/01/2022 10:57:14| |and lastly| +|08/01/2022 10:57:20| |watching andou and oshida sex| +|08/01/2022 11:06:48| |Sex with Arisu| +|08/01/2022 11:07:10| |Threesome sex with Arisu and Mako| +|08/01/2022 11:09:15| |now i'm all alone| +|08/01/2022 11:09:40| |Sex with Arisu and Mako and Katyusha and Anzu and Sodoko| +|08/01/2022 11:14:09| |it's over| +|08/01/2022 11:18:00| |is it over?| +|08/01/2022 11:18:22| ahem +|08/01/2022 11:18:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 11:18:37| |that is all| +|08/01/2022 12:14:09| danmaku +|08/01/2022 12:36:25| |miss u guys| +|08/01/2022 12:51:32| DANMAKU +|08/01/2022 13:05:26| DDAAAAANMAKU +|08/01/2022 13:33:00| aaaaaaa diff --git a/src/getChat/replay/data/res.text b/src/getChat/replay/data/res.text new file mode 100644 index 0000000..32597bd --- /dev/null +++ b/src/getChat/replay/data/res.text @@ -0,0 +1,1000 @@ + 47909 DUCE + 33810 + 33388 |08/01/2022 + 28349 DVCE + 7878 USA + 4120 | + 2173 |DUCE + 1568 the + 1203 |DVCE + 1111 THE + 1101 I + 929 is + 870 a + 799 to + 759 |I + 677 HATE + 639 DVCE! + 553 BANZAI + 503 DUCE! + 471 in + 450 ÁNZU + 433 A + 406 o/ + 399 for + 397 of + 375 IS + 365 \o/ + 361 |USA + 354 this + 347 you + 347 LOVE + 336 :DDDD + 331 MOMO + 326 DUCEDUCE + 306 PAS + 286 DUCE| + 285 and + 283 CTU + 279 are + 267 TO + 265 with + 264 that + 258 on + 243 KINO + 236 AU + 219 they + 216 my + 215 YOU + 211 have + 207 be + 202 just + 189 TOTSUGEKI + 189 so + 188 it + 187 F + 184 like + 182 IN + 177 was + 177 Duce + 174 fucking + 163 WIG + 160 we + 159 UOH + 158 FUCKING + 156 MY + 152 PIRATES + 151 ANDOU + 147 ANTICHRIST + 146 ENTER + 145 BOKO + 143 FOR + 142 no + 139 OF + 138 will + 137 NO + 135 get + 135 FUCK + 135 DVCE| + 134 SEX + 132 not + 132 her + 132 all + 131 your + 131 |PANZER + 128 THIS + 126 DVCEDVCE + 125 CUTE + 124 tank + 124 |cute + 123 WITH + 123 want + 123 means + 121 |the + 121 at + 120 ON + 119 CHOVY + 119 can + 118 do + 116 |i + 116 fuck + 115 |THE + 115 IT + 115 |CUTE + 115 can't + 113 |OH + 112 as + 111 🍕 + 109 USAUSA + 107 VOR| + 105 ARE + 104 WE + 103 she + 103 |\o/ + 103 CUM + 102 USA| + 102 up + 102 NOT + 101 more + 100 HEIKA + 99 |The + 98 got + 97 ToT + 97 \o/| + 97 |FUCK + 96 AND + 96 🍝 + 95 tank| + 94 UP + 92 THAT + 92 me + 92 HOSHINO + 92 did + 92 ALL + 91 has + 91 an + 91 about + 90 too + 90 PASTA + 90 i + 89 |YOU + 89 |what + 89 one + 89 |AU + 88 love + 88 does + 87 JUST + 86 TENNO + 85 time| + 85 ;_; + 84 never + 83 if + 83 BANZAI! + 82 WILL + 82 |MOMO + 81 TIME + 81 shit + 81 me| + 81 ;_;7 + 80 o7 + 80 MISSION| + 80 ME + 80 cute + 79 |TL + 79 HOSHINO? + 79 FROGS + 78 S + 78 by + 77 |WHAT + 77 TIME| + 75 what + 75 SHIT + 75 |based + 74 YOUR + 74 |why + 74 their + 74 from + 73 would + 73 |WE + 73 WANT + 73 them + 73 BOKO| + 72 still + 71 |NO + 71 it's + 71 |how + 70 JOB + 70 even + 70 AN + 69 |ENTER + 68 than + 68 how + 68 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD + 68 best + 67 when + 67 out + 67 |BOKO + 66 don't + 65 U + 65 some + 64 VSA + 64 NO| + 64 going + 64 CHOBIKO + 64 |A + 63 |What + 63 time + 63 |this + 63 2 + 62 gonna + 62 BE + 61 |How + 61 FAT + 61 ! + 60 go + 60 girls + 59 tanks + 59 |no + 59 ME| + 59 HAVE + 58 JOBBERS + 58 it| + 58 here + 58 GUTS + 58 GO + 58 but + 58 |BASED + 57 |they + 57 RUM + 57 LIKE + 57 |KINO + 57 good + 56 USA! + 56 only + 55 GET + 55 BROS| + 55 ALICE + 55 again| + 54 were + 54 shit| + 54 or + 54 |momo + 54 BROS + 53 this| + 53 these + 53 see + 53 |oh + 53 now| + 53 :DDDDDDDDDDDD + 53 could + 53 ;_;| + 52 MOMO| + 52 |GANBARE + 52 being + 51 those + 51 |SHE + 51 need + 51 |is + 50 SO + 50 SI + 50 make + 50 |I'm + 50 DID + 50 cute| + 50 ANZU + 49 WAS + 48 |you + 48 |my + 48 |Just + 48 |it's + 48 here| + 48 HER + 48 GOT + 48 getting + 48 FRENCH + 48 ERIKA + 48 BTFO| + 47 |Why + 47 |THANKS + 47 |RIP + 47 |just + 47 |ENTAH + 47 carbon + 47 CAN + 46 TL| + 46 right + 46 Note: + 46 |MY + 46 know + 46 believe + 45 should + 45 |NOT + 45 |It's + 45 IT| + 45 Anzu + 44 |You + 44 |They + 44 tanks| + 44 |Momo + 44 |ITS + 44 |IT'S + 44 |imagine + 44 > + 43 WAY + 43 |This + 43 FOOD + 43 dead| + 43 bros| + 42 think + 42 team + 42 sex + 42 PANZER + 42 CAN'T + 41 stream + 41 |SHUT + 41 |SEX + 41 momo + 41 |Imagine + 41 doesn't + 41 didn't + 41 DEAD| + 41 CUTE| + 40 USE + 40 TOTSUGEKI| + 40 SHIT| + 40 really + 40 PAS| + 40 ONION + 40 momo| + 40 many + 40 |its + 40 |fucking + 40 DAS + 40 been + 40 anon| + 39 years + 39 |we + 39 TOO + 39 |thanks + 39 |sex + 39 RIP + 39 over + 39 J'aime + 39 |Is + 39 into + 39 |FUG + 39 |FUCKING + 39 ENTAH + 39 |ANZU + 39 ANTICHRIST| + 38 wish + 38 THIS| + 38 TANK| + 38 |so + 38 MORE + 38 |Cute + 37 UP| + 37 I'm + 36 wife| + 36 UTE + 36 up| + 36 stream| + 36 NE + 36 lmao| + 36 |LETS + 36 KNOW| + 36 kino + 36 |Erika + 36 DO + 36 coated + 36 >BRITISH + 36 |BIG + 36 |BANZAI + 36 actually + 35 WHERE + 35 und + 35 subtext + 35 school + 35 RIGGED + 35 real + 35 next + 35 |Miho + 35 had + 35 DEAD + 35 CAMARADES + 34 wife + 34 WANI| + 34 |THEY + 34 |she + 34 over| + 34 off + 34 |No + 34 much + 34 |JUST + 34 isn't + 34 |HOLY + 34 GIRL + 34 fat + 34 |DVCE! + 34 DUCK + 34 duce + 34 AGAIN| + 33 WEW + 33 |THIS + 33 now + 33 KINO| + 33 KATYUSHA + 33 its + 33 |GET + 33 FREGO + 33 flag + 33 |ERIKA + 33 DON'T + 33 DA| + 33 big + 33 ASS + 33 |2 + 32 win + 32 |who + 32 |UND + 32 |that + 32 OPPAI + 32 NIGGERS + 32 kino| + 32 ITS + 32 |GAS + 32 |fuck + 32 FROM + 32 DOWN| + 32 |BENIS + 32 |Based + 32 ARISU + 32 anzu + 32 after + 31 why + 31 |That + 31 TANK + 31 take + 31 |So + 31 panzer + 31 OST + 31 o/| + 31 NOW| + 31 MIHO + 31 AT + 31 "Anzu" + 30 where + 30 way + 30 |TOTSUGEKI + 30 STUG + 30 |Oh + 30 |MEXT + 30 maho + 30 KANI + 30 GOOD + 30 GONNA + 30 FUCK| + 30 |DUMB + 30 |dumb + 30 DOES + 30 BUTT + 30 |Anzu + 29 |SORE + 29 OUT + 29 O + 29 |nice + 29 Momo + 29 made + 29 LOVE| + 29 HOW + 29 hate + 29 girl + 29 E + 29 better + 29 |BEST + 29 am + 29 8 + 28 YOU| + 28 THEY + 28 T| + 28 rip + 28 miho + 28 heard + 28 gup + 28 ERIKA| + 28 eat + 28 ass + 27 万歳 + 27 |TIME + 27 |Time + 27 there + 27 our + 27 N + 27 |Maho + 27 MAHO + 27 GAS + 27 flat + 27 :DDDDDDDDDDDDDDDDDD + 27 |CARBON + 27 BTFO + 27 boko + 27 BEST + 27 autism + 27 any + 27 always + 26 |Yukari + 26 WORST + 26 VOR + 26 URA + 26 u + 26 that| + 26 |STOP + 26 she's + 26 |o/ + 26 |My + 26 L'oignon + 26 give + 26 |Girls + 26 girl| + 26 GAS| + 26 frit + 26 DVEL! + 26 dont + 26 :DDDDD| + 26 4 + 25 yukari + 25 you| + 25 two + 25 THEM + 25 team| + 25 SNW + 25 sleep + 25 SEX| + 25 sex| + 25 |SEE + 25 rape + 25 R + 25 piss + 25 |panzer + 25 OUR + 25 |O + 25 |miho + 25 least + 25 |HOW + 25 HARD + 25 |GO + 25 |DUCE! + 25 cant + 25 because + 25 AUTISM + 25 ass| + 25 Anzu| + 25 AHN~ + 25 3 + 24 |YUKI + 24 |yukari + 24 WERE + 24 vor + 24 "SEX"| + 24 PARTY + 24 OUT| + 24 other + 24 ONION| + 24 ONE + 24 |not + 24 NEED + 24 literally + 24 kill + 24 hit + 24 HAS + 24 good| + 24 |GOD + 24 |god + 24 FUG + 24 fuck| + 24 FLOOF + 24 EAT + 24 DUCEDUCE| + 24 :DDDDDDDDDDDDDDD| + 24 :DDDDDD + 24 come + 24 COATED + 24 BIG + 24 before + 24 based + 24 |ÁNZU + 24 against + 24 = + 23 |YUKARI + 23 |wtf + 23 who + 23 WAR + 23 use + 23 stop + 23 SHARK + 23 scene + 23 |rip + 23 put + 23 OVER + 23 out| + 23 O| + 23 NUTS + 23 moment| + 23 MEXT + 23 |If + 23 HERE + 23 he + 23 GIRL| + 23 DIE + 23 dead + 23 CUTE! + 23 AZUSA + 23 AM + 23 |a + 22 WHAT + 22 WANI + 22 TOMMY + 22 tl| + 22 ship + 22 OVER| + 22 \O/ + 22 NEVER + 22 Miho + 22 little + 22 |kino + 22 here, + 22 |God + 22 |get + 22 french + 22 FEET + 22 every + 22 Erika + 22 enough + 22 |DON'T + 22 |DO + 22 |:DDDD + 22 :DDDD| + 22 :D + 22 COOKER + 22 |carbon + 22 |big + 22 BANZAI| + 22 back + 21 years| + 21 WIN + 21 |WHY + 21 watching + 21 US + 21 |time + 21 TANKS| + 21 SODOKO + 21 SHUT + 21 show + 21 SHINGUN| + 21 SHE + 21 pretty + 21 ON| + 21 |>not + 21 |MIHO + 21 MIHO| + 21 |MAKO + 21 |maho + 21 look + 21 KNOW + 21 hours + 21 GO| + 21 GIRLS + 21 GAY + 21 fucked + 21 down + 21 |do + 21 CV33 + 21 |boko + 21 BASED + 21 BAKARONI + 21 bad + 21 ANZU| + 21 |All + 20 watch + 20 wani| + 20 thought + 20 they're + 20 THEIR + 20 STILL + 20 ship| + 20 seen + 20 NOW + 20 needs + 20 lost + 20 lol| + 20 |IS + 20 |IMAGINE + 20 |I'M + 20 |HERE + 20 guys + 20 ever + 20 down| + 20 |DEJA + 20 |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD + 20 :DDDDDD| + 20 :DDD| + 20 CARBON + 20 |Can't + 20 |can + 20 anzu| + 20 ain't + 19 Yukari + 19 war + 19 VU| + 19 us + 19 until + 19 thing + 19 THIGHS + 19 there| + 19 |TAN + 19 shoot + 19 |see + 19 ROSEHIP + 19 RIGHT + 19 read + 19 |PIZZA + 19 PIZZA + 19 PIRATE| + 19 |>no + 19 |mako + 19 looks + 19 incoming| + 19 |holy + 19 first + 19 |Duce + 19 |Don't + 19 |did + 19 BY + 19 butt + 19 bros + 19 |best + 19 BACK| + 19 B + 19 ASS| + 19 |are + 19 |ALL + 19 /a/ + 19 10 + 19 - + 18 YEARS| + 18 x + 18 WIFE| + 18 |where + 18 we're + 18 WAY| + 18 UNIDOS + 18 too| + 18 |TO + 18 The + 18 |THAT + 18 |Thanks + 18 TEAM| + 18 TANKS + 18 TAKE + 18 |STUG + 18 |SIEG + 18 say + 18 retard| + 18 poor + 18 |Panzer + 18 |PANTSU + 18 NYAA + 18 note: + 18 |Not + 18 MOMO! + 18 |Marie + 18 makes + 18 MAHO| + 18 long + 18 l'oignon| + 18 know| + 18 Katyusha + 18 |J'aime + 18 INCOMING| + 18 |if + 18 his + 18 GuP + 18 GOD + 18 girls| + 18 |FAT + 18 |F + 18 Erika| + 18 end + 18 |EBIN + 18 DUMB + 18 DU| + 18 |don't + 18 ded + 18 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD + 18 :DDDDDDDDDDDDD + 18 CUNNY + 18 comes + 18 *CLAP* + 18 CAMARADES| + 18 buffering + 18 bitch| + 18 BEEN + 18 |AZUSA + 18 |ANDOU + 18 |10 + 18 01:56:54| + 18 !| + 17 |YES + 17 YEARS + 17 way| + 17 |WANI + 17 TOTSUGEKI! + 17 that's + 17 |TENNO + 17 SUBTEXT + 17 SPEED + 17 |SO + 17 school| + 17 said + 17 part + 17 OFF + 17 NOTE: + 17 no| + 17 NIGGER + 17 NANI + 17 miho| + 17 mean + 17 Kino + 17 keep + 17 katyusha + 17 |IT + 17 |it + 17 IQ| + 17 her| + 17 GOING + 17 go| + 17 film + 17 FEEL + 17 |ENTA + 17 EM + 17 e + 17 DV| + 17 |duce + 17 DOUCHE + 17 DORIFTO + 17 doing + 17 :DDDDDDDDDDDDDD + 17 |DAMN + 17 CUNNY| + 17 COMES + 17 CCP + 17 |Best + 17 BACK + 17 |and + 16 YUKARI| + 16 |Who + 16 |We + 16 through + 16 then + 16 |>the + 16 |that's + 16 |>tfw + 16 |tank + 16 SUSBENSION + 16 STREAM| + 16 SOON + 16 something + 16 SEE + 16 saw + 16 retards| + 16 RAPE + 16 play + 16 |PASTA + 16 one| + 16 |now + 16 |NINA + 16 |Mako + 16 mako| + 16 MAKE + 16 Maho + 16 live + 16 |LET'S + 16 LETS + 16 let + 16 last + 16 KEEP + 16 JOBBIE + 16 il + 16 |IF + 16 |HEY + 16 HERE| + 16 gun + 16 game + 16 |FOR + 16 eyes + 16 EVEN + 16 ESTADOS + 16 ENTA + 16 eating + 16 |Dumb + 16 doujin + 16 :DDDDDDDDD| + 16 COCKY + 16 CAMARADE + 16 BUTT| + 16 |But + 16 bridge + 16 BITCH| + 16 beat + 16 |ANZIO + 16 anzio + 16 ANKOU| + 16 already + 16 ABOUT + 16 01:56:49| + 15 you're + 15 |WHERE + 15 |when + 15 very + 15 TITS| + 15 TIME?? + 15 though| + 15 thighs| + 15 |That's + 15 STOP + 15 song + 15 |SODOKO + 15 sodoko| + 15 SLUT + 15 sleep| + 15 SLAG| + 15 |shut + 15 SEXY + 15 |See + 15 saying + 15 save + 15 PERKELE + 15 people + 15 pasta + 15 Panzer + 15 old + 15 NAKADASHI + 15 must + 15 Momo| + 15 missed + 15 MEANS + 15 Maho| + 15 LIVE + 15 LEWD + 15 leave + 15 |KLARA + 15 killed + 15 |Katyusha + 15 INTER + 15 IM + 15 I'M + 15 im + 15 hope + 15 |HIGH + 15 |haha + 15 |good + 15 gets + 15 GE + 15 gay + 15 |Fuck + 15 floof| + 15 FIRE| + 15 dumb| + 15 DONT + 15 died + 15 die + 15 |DATO + 15 :D| + 15 COULD + 15 |CHRISDIE + 15 car + 15 CANT + 15 CAMARADESAU + 15 BENIS + 15 Banger + 15 BALDIE + 15 BAKAS + 15 back| + 15 AS + 15 |Anzio + 15 Anzio + 15 anons + 15 andou + 15 |all + 14 YUKARI + 14 YEAR| + 14 year + 14 win| + 14 whole + 14 water + 14 wait + 14 WA| + 14 VORE| + 14 useless + 14 used + 14 tiger diff --git a/src/getChat/replay/replay.py b/src/getChat/replay/replay.py new file mode 100644 index 0000000..abbed23 --- /dev/null +++ b/src/getChat/replay/replay.py @@ -0,0 +1,99 @@ +# -*- coding: UTF-8 -*- +# Reader +from datetime import datetime +import threading +import queue +import time +import sys + +import csv + +import sys +import socket +import fcntl, os + + +FILENAME = "data/danmaku.csv" +DATE_FORMAT = "%d/%m/%Y %H:%M:%S" +READER_REFRESH_RATE = 100 +SEND_BUFFER_SIZE = 2048 + +class CSV_Reader(threading.Thread): + def __init__(self, queue, videoStartTime, *args, **kwargs): + super(CSV_Reader, self).__init__(*args, **kwargs) + + self._stop_event = threading.Event() + self.queue = queue + self.is_on = False + + self.video_zero_time = videoStartTime + self.video_zero_time_relative = None + self.danmaku_zero_time = None + self.danmaku_time_delta = 0 + + # SOCKET + self.server_ip = "localhost" + self.server_port = 10000 + self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.sock.connect((self.server_ip, self.server_port)) + fcntl.fcntl(self.sock, fcntl.F_SETFL, os.O_NONBLOCK) + + def run(self): + print("::Running CSV_Reader") + self.is_on = True + + with open(FILENAME, newline='') as csvfile: + spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') + + while self.is_on: + raw_time, raw_data = next(spamreader) + d_time = datetime.strptime(raw_time, DATE_FORMAT) + ts_time = int(datetime.timestamp(d_time)) + + # Set starting point + if self.danmaku_zero_time == None: + self.video_zero_time_relative = time.time() + self.video_zero_time_zero = ts_time + self.danmaku_zero_time = ts_time + + video_elapsed = 0 + delta_time = 1 + while delta_time > video_elapsed: + # Time elapsed relative to the video + video_elapsed = time.time() - self.video_zero_time_relative + delta_time = ts_time - self.danmaku_zero_time + + # Sleep + time.sleep(READER_REFRESH_RATE*0.001) + + print("time: {} ## data: {} ## delta: {}".format(raw_time, raw_data, delta_time)) + data = bytes(raw_data, "utf-8") + data += bytes(SEND_BUFFER_SIZE-len(data)) + self.sock.send(data) + + def stop(self): + print("::Stopping Watcher") + self.is_on = False + self._stop_event.set() + + def toggle(self): + if self.is_on: + print("::Pausing Watcher") + self.is_on = False + elif not self.is_on: + self.run() + + def stopped(self): + return self._stop_event.is_set() + +def main(): + videoStartTime = 0 + if len(sys.argv) == 2: + VideoStartTime = sys.argv[1] + + Q = queue.Queue() + R = CSV_Reader(Q, videoStartTime) + R.start() + +if __name__ == "__main__": + main() diff --git a/src/getChat/replay/sockets/__pycache__/csv_reader.cpython-310.pyc b/src/getChat/replay/sockets/__pycache__/csv_reader.cpython-310.pyc new file mode 100644 index 0000000..d5bad88 Binary files /dev/null and b/src/getChat/replay/sockets/__pycache__/csv_reader.cpython-310.pyc differ diff --git a/src/getChat/replay/sockets/__pycache__/csv_socket.cpython-310.pyc b/src/getChat/replay/sockets/__pycache__/csv_socket.cpython-310.pyc new file mode 100644 index 0000000..b6332ff Binary files /dev/null and b/src/getChat/replay/sockets/__pycache__/csv_socket.cpython-310.pyc differ diff --git a/src/getChat/replay/sockets/csv_reader.py b/src/getChat/replay/sockets/csv_reader.py new file mode 100644 index 0000000..1f99660 --- /dev/null +++ b/src/getChat/replay/sockets/csv_reader.py @@ -0,0 +1,84 @@ +# -*- coding: UTF-8 -*- +# Reader +from datetime import datetime +import threading +import queue +import time +import sys + +import csv + +FILENAME = "data/danmaku.csv" +DATE_FORMAT = "%d/%m/%Y %H:%M:%S" +READER_REFRESH_RATE = 100 + +class CSV_Reader(threading.Thread): + def __init__(self, queue, videoStartTime, *args, **kwargs): + super(CSV_Reader, self).__init__(*args, **kwargs) + + self._stop_event = threading.Event() + self.queue = queue + self.is_on = False + + self.video_zero_time = videoStartTime + self.video_zero_time_relative = None + self.danmaku_zero_time = None + self.danmaku_time_delta = 0 + + def run(self): + print("::Running CSV_Reader") + self.is_on = True + + with open(FILENAME, newline='') as csvfile: + spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') + + while self.is_on: + raw_time, raw_data = next(spamreader) + d_time = datetime.strptime(raw_time, DATE_FORMAT) + ts_time = int(datetime.timestamp(d_time)) + + # Set starting point + if self.danmaku_zero_time == None: + self.video_zero_time_relative = time.time() + self.video_zero_time_zero = ts_time + self.danmaku_zero_time = ts_time + + video_elapsed = 0 + delta_time = 1 + while delta_time > video_elapsed: + # Time elapsed relative to the video + video_elapsed = time.time() - self.video_zero_time_relative + delta_time = ts_time - self.danmaku_zero_time + + # Sleep + time.sleep(READER_REFRESH_RATE*0.001) + + print("time: {} ## data: {} ## delta: {}".format(raw_time, raw_data, delta_time)) + self.queue.put(raw_data) + + def stop(self): + print("::Stopping Watcher") + self.is_on = False + self._stop_event.set() + + def toggle(self): + if self.is_on: + print("::Pausing Watcher") + self.is_on = False + elif not self.is_on: + self.run() + + def stopped(self): + return self._stop_event.is_set() + +def main(): + videoStartTime = 0 + if len(sys.argv) == 2: + VideoStartTime = sys.argv[1] + + Q = queue.Queue() + R = CSV_Reader(Q, videoStartTime) + R.start() + +if __name__ == "__main__": + main() diff --git a/src/getChat/replay/sockets/csv_server.py b/src/getChat/replay/sockets/csv_server.py new file mode 100644 index 0000000..bff0b91 --- /dev/null +++ b/src/getChat/replay/sockets/csv_server.py @@ -0,0 +1,21 @@ +from csv_reader import * +from csv_socket import * + +def main(): + Q = queue.Queue() + + S = CSV_Socket(Q) + R = CSV_Reader(Q) + + S.start() + R.start() + + try: + while 1: + time.sleep(0.1) + except KeyboardInterrupt: + S.stop() + R.stop() + +if __name__ == "__main__": + main() diff --git a/src/getChat/replay/sockets/csv_socket.py b/src/getChat/replay/sockets/csv_socket.py new file mode 100644 index 0000000..d02c8e6 --- /dev/null +++ b/src/getChat/replay/sockets/csv_socket.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 + +""" client.py - Echo client for sending/receiving C-like structs via socket +References: +- Ctypes: https://docs.python.org/3/library/ctypes.html +- Sockets: https://docs.python.org/3/library/socket.html +""" + + +import threading +import socket +import queue +import sys +import time +import random +from ctypes import * + +DATE_FORMAT = "%d/%m/%Y %H:%M:%S" +SERVER_REFRESH_RATE = 100 + +""" This class defines a C-like struct """ +class Payload(Structure): + _fields_ = [("id", c_uint32), + ("counter", c_uint32), + ("data", c_wchar_p)] + +class CSV_Socket(threading.Thread): + def __init__(self, queue, *args, **kwargs): + super(CSV_Socket, self).__init__(*args, **kwargs) + self._stop_event = threading.Event() + self.queue = queue + self.is_on = False + + self.server_addr = ('localhost', 2300) + self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + + def run(self): + print("::Running CSV_Server") + self.is_on = True + + try: + self.socket.connect(self.server_addr) + print("Connected to {:s}".format(repr(self.server_addr))) + + c = 0 + while self.is_on: + if not self.queue.empty(): + raw_data = self.queue.get() + "\0" + payload_out = Payload(c, len(raw_data), raw_data) + print("Sending id={:d}, counter={:d}, data={}".format(payload_out.id, + payload_out.counter, + payload_out.data)) + nsent = self.socket.send(payload_out) + # Alternative: s.sendall(...): coontinues to send data until either + # all data has been sent or an error occurs. No return value. + print("Sent {:d} bytes".format(nsent)) + + #buff = s.recv(sizeof(Payload)) + #payload_in = Payload.from_buffer_copy(buff) + #print("Received id={:d}, counter={:d}, temp={}".format(payload_in.id, + # payload_in.counter, + # payload_in.data)) + + c += 1 + time.sleep(SERVER_REFRESH_RATE*0.001) + except AttributeError as ae: + print("Error creating the socket: {}".format(ae)) + except socket.error as se: + print("Exception on socket: {}".format(se)) + finally: + print("Closing socket") + self.socket.close() + + def stop(self): + print("::Stopping Server") + self.is_on = False + self._stop_event.set() + + def toggle(self): + if self.is_on: + print("::Pausing Server") + self.is_on = False + elif not self.is_on: + self.run() + + def stopped(self): + return self._stop_event.is_set() diff --git a/src/getChat/replay/sockets/data/danmaku.csv b/src/getChat/replay/sockets/data/danmaku.csv new file mode 100644 index 0000000..98242c6 --- /dev/null +++ b/src/getChat/replay/sockets/data/danmaku.csv @@ -0,0 +1,33391 @@ +|08/01/2022 01:44:14| |Premature Duce| +|08/01/2022 01:44:15| |I'll blow your Duce, idiot| +|08/01/2022 01:44:15| |ITS ANZIO YEAR, BELIEVE ME| +|08/01/2022 01:44:16| |SHUT THE FUCK UP WE ARE NEAR THE OVA| +|08/01/2022 01:44:16| |can you guys talk slower so I can read the subs thanks| +|08/01/2022 01:44:19| |PRONTE A OSARE PRONTE A ADIIRE| +|08/01/2022 01:44:19| |just had some taco bell| +|08/01/2022 01:44:20| |Anzio absolute best| +|08/01/2022 01:44:22| |ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW | +|08/01/2022 01:44:23| |Choby smells of shit| +|08/01/2022 01:44:24| ;_; +|08/01/2022 01:44:27| |duce is my wife!| +|08/01/2022 01:44:28| |>cant read subs and chat at the same time| +|08/01/2022 01:44:28| |Edging to DVCE! Blowing my DVCE to DVCE!| +|08/01/2022 01:44:29| |Don't blwo your Duce| +|08/01/2022 01:44:30| |Read faster faggot| +|08/01/2022 01:44:31| |GIOVINEZZZA GIOVINEZZA| +|08/01/2022 01:44:32| BAKARONI +|08/01/2022 01:44:32| SAWREE +|08/01/2022 01:44:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:44:36| |ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET COCKY NOW ANZIO BROS GET | +|08/01/2022 01:44:38| ==___________________________^^x +|08/01/2022 01:44:39| |PRIMAVERA DI BELEZZA| +|08/01/2022 01:44:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:44:41| miiporin +|08/01/2022 01:44:42| MIPORIN! +|08/01/2022 01:44:42| |Just learn Japanese so you won't need subs| +|08/01/2022 01:44:43| Miporin +|08/01/2022 01:44:43| |instead of the whole series can we just watch the anzio episode on repeat?| +|08/01/2022 01:44:44| suya~ +|08/01/2022 01:44:44| |>Not knowing moonrunes and language| +|08/01/2022 01:44:44| |THIS IS OUR YEAR ANZIOBROS| +|08/01/2022 01:44:49| |NEL FASCISMO E LA SALVEZZA| +|08/01/2022 01:44:49| |big seal| +|08/01/2022 01:44:49| |cute fluff| +|08/01/2022 01:44:53| |Ill give her my smoothbore| +|08/01/2022 01:44:55| |DELLA NOSTRA LIBERTA| +|08/01/2022 01:44:56| |Yukari is the Beautiful Dreamer| +|08/01/2022 01:45:00| |can we just listen to Anzion's theme for 20 hours straight?| +|08/01/2022 01:45:01| |Back from peeing| +|08/01/2022 01:45:02| |>LEOPARD 2 >MOST OF THEM ARE NON-OPERATIONAL| +|08/01/2022 01:45:02| |Boat trips are kino t. Greek| +|08/01/2022 01:45:03| |Did we just have a genuine moment?| +|08/01/2022 01:45:04| |>i can hear the moonerunes| +|08/01/2022 01:45:04| |Didn't anzio already lose to the slag?| +|08/01/2022 01:45:08| |this time anzio will win, I feel it in my lemon| +|08/01/2022 01:45:10| FUNICULA +|08/01/2022 01:45:14| |funiculi funicula| +|08/01/2022 01:45:14| FUNICULI +|08/01/2022 01:45:16| |I still haven't watched the third part of Das Finale| +|08/01/2022 01:45:17| """accident""" +|08/01/2022 01:45:17| ;_; +|08/01/2022 01:45:18| |ombattenti di terra, di mare e dell’aria! Camicie nere della rivoluzione e delle legioni! | +|08/01/2022 01:45:19| |ANZIO'S YEAR| +|08/01/2022 01:45:19| ;-; +|08/01/2022 01:45:19| ;_; +|08/01/2022 01:45:20| seal +|08/01/2022 01:45:20| |this shit so sad man| +|08/01/2022 01:45:20| |o/ for DVCE| +|08/01/2022 01:45:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:45:21| SMEEF +|08/01/2022 01:45:22| FUNICULI +|08/01/2022 01:45:22| ;_; +|08/01/2022 01:45:24| BACKSTORY +|08/01/2022 01:45:26| ah... +|08/01/2022 01:45:26| |Remember Granny died in the doujin| +|08/01/2022 01:45:26| FUNICULA +|08/01/2022 01:45:27| |Uomini e donne d’Italia, dell’impero e del regno d’Albania! Ascoltate!| +|08/01/2022 01:45:28| |car accident| +|08/01/2022 01:45:29| o/ +|08/01/2022 01:45:29| |DO NOT WATCH THE 3RD PART OF DAS FINALE HERE IT IS NOT A GOOD IDEA| +|08/01/2022 01:45:31| |NCOPPA JAMME JA| +|08/01/2022 01:45:31| |ASSHOLE MOM| +|08/01/2022 01:45:31| |SHIHO SHIHO SHIHO SHIHO| +|08/01/2022 01:45:32| fuck... +|08/01/2022 01:45:33| |get disowned bitch| +|08/01/2022 01:45:34| |i would smash this milf| +|08/01/2022 01:45:35| MOMMY +|08/01/2022 01:45:35| |Anzio will win!| +|08/01/2022 01:45:36| |FUNICULI FUNICULA| +|08/01/2022 01:45:38| |Mother of the Decade| +|08/01/2022 01:45:39| |JUST GOT BACK DID I MISS DUCE?| +|08/01/2022 01:45:39| MOMMY +|08/01/2022 01:45:40| |WORST MOM BIGGEST SLUT WORST MOM BIGGEST SLUT| +|08/01/2022 01:45:40| |PIZZA PASTA SHITTING IN A BOX| +|08/01/2022 01:45:40| |FUCK YOU MOM I'LL SENSHADO HOW I WANT| +|08/01/2022 01:45:44| |Momo is best girl, Shiho second!| +|08/01/2022 01:45:45| |D I S O W N E D| +|08/01/2022 01:45:46| |Un’ora segnata dal destino batte nel cielo della nostra patria. (Acclamazioni vivissime). | +|08/01/2022 01:45:46| |Shiho, my wife| +|08/01/2022 01:45:47| |That the Chi Ha Tan way I thought| +|08/01/2022 01:45:48| |BITCH SHIHO| +|08/01/2022 01:45:49| |SHIT MUM| +|08/01/2022 01:45:50| |>DO NOT WATCH THE PART 3 OF DF HERE IT'S A BAD IDEA // SHUT THE FUCK UP| +|08/01/2022 01:45:51| |LET THEM DIE| +|08/01/2022 01:45:52| |DUCE STILL INCOMING| +|08/01/2022 01:45:53| |UGLY BASTARD FUCKING MOTHER| +|08/01/2022 01:45:53| |SHIHO SUCKS ALL THE COCKS| +|08/01/2022 01:45:53| |LARP ALERT LARP ALERT| +|08/01/2022 01:45:53| |>senshadou gestapo| +|08/01/2022 01:45:53| |[spoiler]i dont like duce because anons keep on spamming it[/spoiler]| +|08/01/2022 01:45:55| |L’ora delle decisioni irrevocabili. | +|08/01/2022 01:45:56| |shiho my beloved| +|08/01/2022 01:46:01| |by me| +|08/01/2022 01:46:01| |I WANT TO GIVE MIHO A YOUNGER SISTER| +|08/01/2022 01:46:02| |Should have let Koume drown, bitch| +|08/01/2022 01:46:03| PTSD +|08/01/2022 01:46:03| |BAUER AND POMF WERE SACRIFICES| +|08/01/2022 01:46:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:46:06| |La dichiarazione di guerra è già stata consegnata (acclamazioni, grida altissime di “Guerra! Guerra!”) agli ambasciatori di Gran Bretagna e | +|08/01/2022 01:46:08| |miipor eeeeeen| +|08/01/2022 01:46:08| shitho +|08/01/2022 01:46:08| |what happened after saunders match?| +|08/01/2022 01:46:10| ZZZZZZZZ +|08/01/2022 01:46:10| ZZZZZZZZZZZZZZZZZZZZZZZ +|08/01/2022 01:46:10| OHIO +|08/01/2022 01:46:11| |SHIHO+MIHO FUTAXFUTA DOUJINS| +|08/01/2022 01:46:12| zzzzzzzzzzzzzzzzzz +|08/01/2022 01:46:13| |DU CE DU CE DU CE DU CE DU CE DU CE DU CE| +|08/01/2022 01:46:14| |I like Duce because UWAAAAH KOCCHI MITERUZOO is cute| +|08/01/2022 01:46:15| |mako sleep| +|08/01/2022 01:46:18| |It's 2 AM, I need some Miporiun| +|08/01/2022 01:46:18| |Scendiamo in campo contro le democrazie plutocratiche e reazionarie dell’Occidente che, in ogni tempo, hanno ostacolato la marcia, e spesso | +|08/01/2022 01:46:19| |miho just happy she doesn't go to a larp school| +|08/01/2022 01:46:19| |But where's Momo????| +|08/01/2022 01:46:20| |SO DOO O KOOO| +|08/01/2022 01:46:21| |>saori can't carry 1/10th of her body weight| +|08/01/2022 01:46:21| SODOKO +|08/01/2022 01:46:22| |ALL NIGHT LONG| +|08/01/2022 01:46:22| SODOKOOO +|08/01/2022 01:46:23| SODOKO +|08/01/2022 01:46:23| |ohhhhhh sodoko| +|08/01/2022 01:46:24| SODOKO +|08/01/2022 01:46:26| SODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOOSODOKOOO +|08/01/2022 01:46:27| |You will never molest Sodoko| +|08/01/2022 01:46:27| |Molesting Sodoko!| +|08/01/2022 01:46:28| SUEGOY +|08/01/2022 01:46:29| |nice skinship!| +|08/01/2022 01:46:29| kappa +|08/01/2022 01:46:29| SODOKOOO +|08/01/2022 01:46:30| |Yuri rape time| +|08/01/2022 01:46:31| |yuri bait| +|08/01/2022 01:46:31| |Molest the 'Doko| +|08/01/2022 01:46:32| |sodoko feet| +|08/01/2022 01:46:33| SEXDOKO +|08/01/2022 01:46:33| SODOKUUOOOOOOOOOOHHH +|08/01/2022 01:46:34| |thats gonna be me tomorrow morning| +|08/01/2022 01:46:34| |Alcuni lustri della storia più recente si possono riassumere in queste frasi: promesse, minacce, ricatti e, alla fine, quale coronamento del| +|08/01/2022 01:46:34| lewd +|08/01/2022 01:46:36| |SENSHA BALOON| +|08/01/2022 01:46:37| sooooooodoko +|08/01/2022 01:46:38| SODOMYKO +|08/01/2022 01:46:40| |PANZER BALLOON| +|08/01/2022 01:46:43| sooodoooko +|08/01/2022 01:46:44| |La nostra coscienza è assolutamente tranquilla. (Applausi)| +|08/01/2022 01:46:44| |Sodomizing Sodoko's hole| +|08/01/2022 01:46:47| |Panter 4| +|08/01/2022 01:46:49| Sudoku? +|08/01/2022 01:46:51| |HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHI| +|08/01/2022 01:46:51| GIOVINEZZA +|08/01/2022 01:46:52| no +|08/01/2022 01:46:54| Yes +|08/01/2022 01:46:54| |HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? HOSHINO TIME?? | +|08/01/2022 01:46:54| |TOILET SODOKO| +|08/01/2022 01:46:56| |lets eat in our tank| +|08/01/2022 01:46:56| GIOVINEZZA +|08/01/2022 01:46:57| doroo +|08/01/2022 01:47:01| |AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA FLOOOOOOOOOOOOOOOOOF| +|08/01/2022 01:47:05| |PRIMAVERA DI BELLEZZA| +|08/01/2022 01:47:05| |pan time| +|08/01/2022 01:47:05| |HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +|08/01/2022 01:47:08| |Oh yay... bread...| +|08/01/2022 01:47:08| |>tfw pastamen in the chat| +|08/01/2022 01:47:08| |HOSHINO | +|08/01/2022 01:47:08| |Tank Mako Tank Mako| +|08/01/2022 01:47:09| |DON'T EAT INSIDE THE TANK REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +|08/01/2022 01:47:11| |LEOPON time?| +|08/01/2022 01:47:15| |fucking loser eats lunch alone with the tanks every day| +|08/01/2022 01:47:15| |imagine eating an obento with guppies in a tank| +|08/01/2022 01:47:17| |THE PASTA IN MY BLOOD SINGS| +|08/01/2022 01:47:17| |Eating With Your Tank BASED| +|08/01/2022 01:47:20| |italy isn't real| +|08/01/2022 01:47:20| |HOSHINO | +|08/01/2022 01:47:23| porblems +|08/01/2022 01:47:23| cute +|08/01/2022 01:47:25| |saori dont be a snitch| +|08/01/2022 01:47:26| |cute lunch| +|08/01/2022 01:47:26| |good mum| +|08/01/2022 01:47:27| |that's a next level excuse| +|08/01/2022 01:47:29| |cute mom| +|08/01/2022 01:47:30| |CUTE TANK| +|08/01/2022 01:47:30| |THIS NIGGA EATIN BEANS IN THE TANK| +|08/01/2022 01:47:31| |Cute mom| +|08/01/2022 01:47:32| |CUTE LUNCH| +|08/01/2022 01:47:34| |cute bentou| +|08/01/2022 01:47:35| |DELLA VITA, NELL'ASPREZZA| +|08/01/2022 01:47:35| |cute mom ;_;| +|08/01/2022 01:47:37| |remember to snap the pasta in half so it fits in the pot!| +|08/01/2022 01:47:41| |BITCH EATING BEANS IN THE TANK| +|08/01/2022 01:47:42| INVINCIBLE +|08/01/2022 01:47:42| |NOT Invincible| +|08/01/2022 01:47:44| |AMERICA IS NOT INVICBLE| +|08/01/2022 01:47:46| |CUTEST TANK COMMANDER| +|08/01/2022 01:47:47| |Giovinezza, giovinezza| +|08/01/2022 01:47:49| |Bad news, out of apple sauce| +|08/01/2022 01:47:50| |>tfw there's no more circleK in Japan| +|08/01/2022 01:47:51| |Was Saunders ever invincible?| +|08/01/2022 01:47:51| |fanta yo ne| +|08/01/2022 01:48:02| |Saunders, the most vincible of all| +|08/01/2022 01:48:02| |Pass the MRE Anon| +|08/01/2022 01:48:02| |IL TUO CANTO SQUILLA E VA| +|08/01/2022 01:48:06| TANOSHII +|08/01/2022 01:48:09| |SENSHADO IS ABOUT >FUN| +|08/01/2022 01:48:11| |saunders always fuckin gjobs| +|08/01/2022 01:48:12| |E PER BENITO MUSSOLINI| +|08/01/2022 01:48:14| >fun +|08/01/2022 01:48:14| |Con voi il mondo intero è testimone che l’Italia del littorio ha fatto quanto umanamente possibile per evitare la tormenta che sconvolge l’E| +|08/01/2022 01:48:15| |Ciao watashi speak italiano| +|08/01/2022 01:48:17| |THE FRIENDS WE MADE ALONG THE WAY| +|08/01/2022 01:48:17| |from what?| +|08/01/2022 01:48:18| ANAL +|08/01/2022 01:48:19| |F U N| +|08/01/2022 01:48:19| |SENTO GURORIANA| +|08/01/2022 01:48:20| |and winning is fun| +|08/01/2022 01:48:20| |they almost died on that bridge remember| +|08/01/2022 01:48:20| (((fun))) +|08/01/2022 01:48:22| |my butt hurts| +|08/01/2022 01:48:22| funtards +|08/01/2022 01:48:23| OSHIRI +|08/01/2022 01:48:24| |FROM WHAT?| +|08/01/2022 01:48:25| |from her tank| +|08/01/2022 01:48:25| |HAVING FUN WON'T MAKE MOMMY LOVE YOU AGAIN MIHO| +|08/01/2022 01:48:27| |>MAYBE HER BUTT HURTS| +|08/01/2022 01:48:28| ANAL +|08/01/2022 01:48:29| |>her butt hurt| +|08/01/2022 01:48:30| |anon have you shit your pants yet?| +|08/01/2022 01:48:31| KYON-KUN +|08/01/2022 01:48:33| |WTF ANON| +|08/01/2022 01:48:33| costanza.jpg +|08/01/2022 01:48:34| |FUN THINGS ARE FUN| +|08/01/2022 01:48:34| :3 +|08/01/2022 01:48:35| |SAORI ENJOYING ANAL| +|08/01/2022 01:48:35| |Bastava rivedere i trattati per adeguarli alle mutevoli esigenze della vita delle nazioni e non considerarli intangibili per l’eternità; bas| +|08/01/2022 01:48:36| |KYON-KUN DENWA| +|08/01/2022 01:48:37| |>MAYBE HER BUTT HURTS // FROM WHAT| +|08/01/2022 01:48:37| |not yeeet| +|08/01/2022 01:48:38| |Why do we keeping win Bros?| +|08/01/2022 01:48:39| |why did shiho do it?| +|08/01/2022 01:48:40| |Fun things die if they eat senshado| +|08/01/2022 01:48:40| |why does her butt hurt?| +|08/01/2022 01:48:42| |what a slut| +|08/01/2022 01:48:43| |RIP KOUME| +|08/01/2022 01:48:44| |fun things eat dog food| +|08/01/2022 01:48:44| drown +|08/01/2022 01:48:47| |bastava non iniziare la stolta politica delle garanzie, che si è palesata soprattutto micidiale per coloro che le hanno accettate; bastava n| +|08/01/2022 01:48:49| koume... +|08/01/2022 01:48:49| |the tiger 2 mih| +|08/01/2022 01:48:49| FLASHBACK +|08/01/2022 01:48:49| |My pants are brown so it's 50/50| +|08/01/2022 01:48:50| KOUME +|08/01/2022 01:48:52| |OH NO NO NO| +|08/01/2022 01:48:53| |I WAS THERE MIHO, 2000 YEARS AGO| +|08/01/2022 01:48:53| |Fun things cum| +|08/01/2022 01:48:54| KOUME +|08/01/2022 01:48:54| PTSD +|08/01/2022 01:48:54| |ZE RUSSIANS| +|08/01/2022 01:48:55| PTSD +|08/01/2022 01:48:55| |RIP KOUME| +|08/01/2022 01:48:56| |good thing nothing bad happened to them| +|08/01/2022 01:48:56| |what do you think?| +|08/01/2022 01:48:56| |why does the tv match look like this| +|08/01/2022 01:48:57| |SNAKE! SNAKE! SNAAAKE!| +|08/01/2022 01:48:57| |DARK BACKSTORY| +|08/01/2022 01:48:58| |NOOOOO KOUMEEEEEEEEE| +|08/01/2022 01:48:59| PTSD +|08/01/2022 01:48:59| Koume! +|08/01/2022 01:48:59| |Koume drowned| +|08/01/2022 01:48:59| |>The hills are speaking Russian| +|08/01/2022 01:48:59| |non respingere la proposta che il Fuhrer fece il 6 ottobre dell’anno scorso, dopo finita la campagna di Polonia.| +|08/01/2022 01:49:00| |DIE KOUME| +|08/01/2022 01:49:01| TOT +|08/01/2022 01:49:02| |SAVE KOUME| +|08/01/2022 01:49:02| |SHE DEAD| +|08/01/2022 01:49:03| PTSD +|08/01/2022 01:49:03| |PTSD EP| +|08/01/2022 01:49:05| |human casualties. happens in my IT office all the time| +|08/01/2022 01:49:06| |keoume get game ended| +|08/01/2022 01:49:08| |i can't believe koume is fucking dead| +|08/01/2022 01:49:09| |MIHO YOU HAVE TO LET THOSE 5 PEOPLE DIE OR I'LL DISOWN YOU| +|08/01/2022 01:49:09| |PTSD FLASHBACK| +|08/01/2022 01:49:11| |This scene is gonna make me piss myself.| +|08/01/2022 01:49:13| |don't worry miho, she's carbon-coated| +|08/01/2022 01:49:13| |SAVE HER| +|08/01/2022 01:49:16| LOOOL +|08/01/2022 01:49:20| |DONT YOU PISS ON ME, BOY| +|08/01/2022 01:49:23| |MIHO THROWING| +|08/01/2022 01:49:23| |CARBON LUNGS| +|08/01/2022 01:49:24| |Save the fluff!| +|08/01/2022 01:49:25| |why didnt erika just block?| +|08/01/2022 01:49:25| |how tf u swim in that| +|08/01/2022 01:49:26| |carbon coated diving| +|08/01/2022 01:49:27| |"Is tankery safe?"| +|08/01/2022 01:49:29| |MIHO INTED THE MATCH| +|08/01/2022 01:49:29| |GERMAN GIRLS AREN'T CARBON COATED| +|08/01/2022 01:49:30| |Doesnt stop the tank moving though | +|08/01/2022 01:49:31| |PATENTED MIHO THROWS| +|08/01/2022 01:49:32| |SOLD THE MATCH| +|08/01/2022 01:49:33| |remember kids, tank's don't swim| +|08/01/2022 01:49:33| |F 5 guppies| +|08/01/2022 01:49:33| |Miho is such a loser| +|08/01/2022 01:49:33| |wtf was the tiger driver doing| +|08/01/2022 01:49:34| >10TH +|08/01/2022 01:49:35| |Her life is infinitely more important than an award| +|08/01/2022 01:49:37| THREW +|08/01/2022 01:49:39| |Imagine help your teammates over win SHAME| +|08/01/2022 01:49:41| |why didn't they just carbon coat the girls?| +|08/01/2022 01:49:42| |MIHO THREW| +|08/01/2022 01:49:44| |No they hate her| +|08/01/2022 01:49:45| |Ei vittu ku väsyttää nii saatanasti| +|08/01/2022 01:49:47| FLUFF +|08/01/2022 01:49:48| SUGOI +|08/01/2022 01:49:48| |>dont stop the match >let a few highschooelrs drown| +|08/01/2022 01:49:48| |FLOOOOOOOOOOOOOOOOOOOOOOOOOFFF AWWWWWWWWWWWWWWWW| +|08/01/2022 01:49:49| FLUFF +|08/01/2022 01:49:49| FLOOF +|08/01/2022 01:49:49| |>wasting time on blue enemies| +|08/01/2022 01:49:49| |this is what happens when nobody peeks their head out to spot| +|08/01/2022 01:49:51| |koume isn't important| +|08/01/2022 01:49:51| FLOOF +|08/01/2022 01:49:51| |mihos driver was a retard for not moving| +|08/01/2022 01:49:51| |FUWA FUWA| +|08/01/2022 01:49:52| |Fluff overload| +|08/01/2022 01:49:52| FLOOF +|08/01/2022 01:49:52| FLOOF!!!!!!!!!!!!!! +|08/01/2022 01:49:52| FLOOOOOOOOOOF +|08/01/2022 01:49:52| |fluff incoming| +|08/01/2022 01:49:53| FLIFF +|08/01/2022 01:49:53| FLOOF +|08/01/2022 01:49:53| FLUFF +|08/01/2022 01:49:53| FLOOOOOOOOFFFFFFF +|08/01/2022 01:49:53| |Oramai tutto ciò appartiene al passato. Se poi oggi siamo decisi ad affrontare i rischi e i sacrifici di una guerra, gli è che l’onore, gli | +|08/01/2022 01:49:54| FLOOF +|08/01/2022 01:49:54| |Floof rubs!| +|08/01/2022 01:49:54| |NOBODY DIES IN GUP, MIHO MADE A MISTAKE| +|08/01/2022 01:49:54| |DD tanks swim| +|08/01/2022 01:49:54| FLOOFY!!!!!!!!! +|08/01/2022 01:49:54| FLOOOOOF +|08/01/2022 01:49:54| FLOOF +|08/01/2022 01:49:55| |THE THING| +|08/01/2022 01:49:55| |is anzio next?| +|08/01/2022 01:49:56| |SQUIGGLY FLUFF| +|08/01/2022 01:49:56| CUTE +|08/01/2022 01:49:56| YAHOOOOOOOO +|08/01/2022 01:49:56| |SHE DID THE THING| +|08/01/2022 01:49:56| FLUFFY +|08/01/2022 01:49:57| FLOOOF +|08/01/2022 01:49:57| FLOOF +|08/01/2022 01:49:57| |FEEL THE FLOOF| +|08/01/2022 01:49:57| |fuwa fuwa!| +|08/01/2022 01:49:57| FLOOOOOOFFFFF +|08/01/2022 01:49:57| |senshado is hardcore| +|08/01/2022 01:49:58| |SUE GOY| +|08/01/2022 01:49:58| FLUUUUUUUUUUUUUUUUFF +|08/01/2022 01:49:58| FLOOF.gif +|08/01/2022 01:49:58| FLOOF +|08/01/2022 01:49:59| FLOOOOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFFFFFFFFFFFFFFFFF +|08/01/2022 01:49:59| |Teammates are for sacrificing| +|08/01/2022 01:49:59| floof +|08/01/2022 01:49:59| FLOOOOOF +|08/01/2022 01:49:59| FLOOF +|08/01/2022 01:49:59| ふわふわ +|08/01/2022 01:50:00| FLOOF +|08/01/2022 01:50:02| fluff +|08/01/2022 01:50:03| |I WANT TO DO THAT TO HER| +|08/01/2022 01:50:04| |l’avvenire ferramente lo impongono, poichè un grande popolo è veramente tale se considera sacri i suoi impegni e se non evade dalle prove su| +|08/01/2022 01:50:04| |fuwa fuwa time| +|08/01/2022 01:50:06| FLUUUUUUUFFFFFFFFFFFFFFFFF +|08/01/2022 01:50:07| |You're going to have to clean that part of the tank now| +|08/01/2022 01:50:07| |SHE DID THE THING| +|08/01/2022 01:50:08| FLOOOOOOOFF +|08/01/2022 01:50:09| ODDOBOORU +|08/01/2022 01:50:09| |HILJAA SAATANAN HOMO JA JUO LISÄÄ KAHVIA| +|08/01/2022 01:50:11| |SGT FLOOOFBALL| +|08/01/2022 01:50:11| |FLOOF HER HAIR| +|08/01/2022 01:50:13| |That one fluff doujin was godly| +|08/01/2022 01:50:13| |i want to make oddball a mother| +|08/01/2022 01:50:14| |THE FLOOF GIF| +|08/01/2022 01:50:20| |Koume is fluff and you must alway save fluff| +|08/01/2022 01:50:21| |DUCE BROS I TS ALMOST OUR TIME| +|08/01/2022 01:50:22| |that fucking hard cut lmao| +|08/01/2022 01:50:22| |TYPE THE LYRICS BY HAND YOU COPYPASTING FRAUD| +|08/01/2022 01:50:22| aifaheojpaijpta +|08/01/2022 01:50:23| |momo fuckin shit| +|08/01/2022 01:50:25| |MOMO HATE| +|08/01/2022 01:50:27| |DUCE DUCE DUCE | +|08/01/2022 01:50:27| |WITHOUT SEAMS| +|08/01/2022 01:50:28| |GET COCKY DUCE BROS GET COCKY| +|08/01/2022 01:50:28| |DUCE TIME| +|08/01/2022 01:50:28| >momo +|08/01/2022 01:50:29| |Brown town soon| +|08/01/2022 01:50:29| weeeeeeeeeeee +|08/01/2022 01:50:29| |WITHOUT SEAMS| +|08/01/2022 01:50:30| |DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON DUCE SOON | +|08/01/2022 01:50:31| |GETCOCKY DUCE BROS| +|08/01/2022 01:50:31| |Momo... go away...| +|08/01/2022 01:50:32| |how many kids would you give yukari?| +|08/01/2022 01:50:33| DUCE! +|08/01/2022 01:50:34| ANZUUUUUUUUUUUUUUUU +|08/01/2022 01:50:35| |Anzio is an ezclap| +|08/01/2022 01:50:37| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:50:37| |DUCE DUCE DUCE| +|08/01/2022 01:50:37| dvce +|08/01/2022 01:50:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:37| |GET COCKY DUCE BROOOOOOSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +|08/01/2022 01:50:37| DVCE +|08/01/2022 01:50:37| DUCE +|08/01/2022 01:50:37| |momo shitposting in gup thread| +|08/01/2022 01:50:38| >shitaly +|08/01/2022 01:50:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:38| |no way in hell anzio loses this time around| +|08/01/2022 01:50:38| |IS ANZU EVER NOT MUCNHING ON SOMETHING| +|08/01/2022 01:50:38| AAHHHHHH +|08/01/2022 01:50:38| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:39| |DVCE DVCE DVCE | +|08/01/2022 01:50:39| |PIZZA RIME| +|08/01/2022 01:50:39| FOOOOOOOD +|08/01/2022 01:50:39| |IL DUCE IL DUCE IL DUCE| +|08/01/2022 01:50:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:41| DUCE +|08/01/2022 01:50:41| |DVCE DVCE| +|08/01/2022 01:50:42| |Pizza Time| +|08/01/2022 01:50:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:42| DUCE +|08/01/2022 01:50:42| DUCE +|08/01/2022 01:50:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:42| |duce | +|08/01/2022 01:50:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE v| +|08/01/2022 01:50:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:44| |FUNICULI FUNICULA FUNICULI FUNICULAAAAAAAAA| +|08/01/2022 01:50:44| DUCE +|08/01/2022 01:50:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:44| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE v| +|08/01/2022 01:50:45| DVCE +|08/01/2022 01:50:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:45| |DVCE | +|08/01/2022 01:50:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:46| |DVCE | +|08/01/2022 01:50:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:46| |DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:46| |1 MILIONE LIRE SU ANZIO| +|08/01/2022 01:50:46| DUCE +|08/01/2022 01:50:46| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:46| |DVCE DVCE DVCE| +|08/01/2022 01:50:46| DVCE +|08/01/2022 01:50:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:47| |DVCE DVCE DVCE| +|08/01/2022 01:50:47| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:47| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 01:50:47| dvce +|08/01/2022 01:50:47| |Its the freewin round, yeah| +|08/01/2022 01:50:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:48| |Pizza Pasta| +|08/01/2022 01:50:48| DUCE +|08/01/2022 01:50:49| |DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:49| |DUCE DUCE DUCE DUCE DCUD| +|08/01/2022 01:50:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:50| DUCE +|08/01/2022 01:50:50| |HEIL MEIN DVCE| +|08/01/2022 01:50:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:51| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:51| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:51| |JOBBERS JOBBERS JOBBERS| +|08/01/2022 01:50:51| |best gril| +|08/01/2022 01:50:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:51| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 01:50:52| SEAMLESS +|08/01/2022 01:50:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:53| DUCE +|08/01/2022 01:50:53| |Armored Gokarts| +|08/01/2022 01:50:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE| +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:55| |DVCE DVCE DVCE| +|08/01/2022 01:50:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:56| |DVCE DVCE DVCE o/ o/ o/| +|08/01/2022 01:50:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:57| |DUCE DUCE DUCE DUCE DUC E| +|08/01/2022 01:50:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:57| |DVCE DSVCE SDVCE DVCE| +|08/01/2022 01:50:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 01:50:58| |DUCE DUCE DUCE| +|08/01/2022 01:50:58| dvce +|08/01/2022 01:50:58| |DUCE DUCE DUCE| +|08/01/2022 01:50:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| seamless +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:50:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCEDUC| +|08/01/2022 01:51:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:00| | o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ | +|08/01/2022 01:51:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:01| |the chat is going so fast no one will notice im gay| +|08/01/2022 01:51:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:03| |FUNICULI FUNICULA| +|08/01/2022 01:51:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:04| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +|08/01/2022 01:51:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| DUCE +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:08| |i saw that you faggot| +|08/01/2022 01:51:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE| +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:12| | DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +|08/01/2022 01:51:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:12| |I CANT SEE| +|08/01/2022 01:51:12| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:12| |Duce duce DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:12| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 01:51:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:12| |DUCE DUCE DUCE DUCEE| +|08/01/2022 01:51:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DUCE DUCE DUCE| +|08/01/2022 01:51:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:14| |TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |you saw nothing| +|08/01/2022 01:51:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:16| |SI SISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISISIS| +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE UDC EUCDUC EDUC E| +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:16| |DVCE DVCE I RABU DCE| +|08/01/2022 01:51:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:19| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:21| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:21| |Mussolini best girl| +|08/01/2022 01:51:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:23| |DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:24| |hair si fake| +|08/01/2022 01:51:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |I LOVE MEN| +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:25| |JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JOBBERS JOBBER JOBBERS JO| +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:26| |I WANT TO FUCK THE ITALIAN| +|08/01/2022 01:51:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:27| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:27| |SASUGA DUCE| +|08/01/2022 01:51:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:28| |WITH ALL THIS NOISE NO ONE WILL KNOW I WANT TO FUCK PEPARONI| +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:30| |Poor Eclair| +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:32| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:32| |PEPPERONI > DUNCE| +|08/01/2022 01:51:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:32| |NICE WIG| +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:36| |I LOVE DUCE| +|08/01/2022 01:51:36| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:36| D +|08/01/2022 01:51:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:36| |sasuga anon| +|08/01/2022 01:51:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:38| |AVE DVCE| +|08/01/2022 01:51:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:39| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:51:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:41| |ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +|08/01/2022 01:51:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:42| |i dislike duce| +|08/01/2022 01:51:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:43| D +|08/01/2022 01:51:43| |CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +|08/01/2022 01:51:44| RAPEFACE +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:51:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:44| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:45| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCE| +|08/01/2022 01:51:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:45| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:48| |VIVA DUCE| +|08/01/2022 01:51:49| |CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +|08/01/2022 01:51:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:49| |Type DVCE if you're a faggot| +|08/01/2022 01:51:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:52| DUCE +|08/01/2022 01:51:52| |Anzio is bad and so is Chovy| +|08/01/2022 01:51:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:52| |DUCE DUCE| +|08/01/2022 01:51:52| |DUCE IS CTU| +|08/01/2022 01:51:52| |AHEM DUCE| +|08/01/2022 01:51:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:53| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +|08/01/2022 01:51:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:51:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:55| DUCXE +|08/01/2022 01:51:55| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:51:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:56| PIYO-PIYO! +|08/01/2022 01:51:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:57| DYKE +|08/01/2022 01:51:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:58| |FUNICULI FUNICULA| +|08/01/2022 01:51:59| |>Duce spam better then Murica spam| +|08/01/2022 01:51:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:51:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:59| |🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕 DUCE! 🍕| +|08/01/2022 01:51:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:51:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:52:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:00| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:03| |funiculi, funicula, funiculi, funicuLAAAAAAAAAAAAAAA| +|08/01/2022 01:52:03| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 01:52:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:04| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:52:04| |ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +|08/01/2022 01:52:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:05| |DUCE DUCE DUCE DUCE DUCE DUCD EUDCE DUC EDUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:06| CHEM +|08/01/2022 01:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:06| |AVE DVCE| +|08/01/2022 01:52:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:07| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:09| |They call her Anchovy because she smells like fish| +|08/01/2022 01:52:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:10| |Muricans on death watch| +|08/01/2022 01:52:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:11| |FUNICULI FUNICULA FUNICULI FUNICULAAAAAAAAA| +|08/01/2022 01:52:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:12| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:12| |🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +|08/01/2022 01:52:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:14| |Duce fucks niggers| +|08/01/2022 01:52:15| |FUNICULI FUNICULAAAAAAAAAAAAA| +|08/01/2022 01:52:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:17| |ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FREGO ME NE FR| +|08/01/2022 01:52:17| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:17| |🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +|08/01/2022 01:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:19| |🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE 🍝 🍕 DUCE | +|08/01/2022 01:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:19| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 01:52:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:20| |IL PIU FORTE| +|08/01/2022 01:52:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:52:20| BONG +|08/01/2022 01:52:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:21| ah +|08/01/2022 01:52:21| |CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +|08/01/2022 01:52:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:21| >thinking +|08/01/2022 01:52:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:22| |SOME PASTA ON MY BALLS| +|08/01/2022 01:52:23| |>heavy tank| +|08/01/2022 01:52:24| PASTA +|08/01/2022 01:52:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:24| Smelly +|08/01/2022 01:52:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:25| |/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:52:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:26| |o/ o/ o/| +|08/01/2022 01:52:26| |LUNCH TIME| +|08/01/2022 01:52:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:52:27| PASTA +|08/01/2022 01:52:27| |PASTA TIME| +|08/01/2022 01:52:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:52:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:29| https://elwolf6.feen.us/5oqlh6.pnghttps://elwolf6.feen.us/5oqlh6.pnghttps://elwolf6.feen.us/5oqlh6.pnghttps://elwolf6.feen.us/5oqlh6.pnghttp +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:30| |PASTA TIME| +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:30| |pasta time| +|08/01/2022 01:52:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:32| PASTA +|08/01/2022 01:52:32| |NO DVCE| +|08/01/2022 01:52:32| smelly +|08/01/2022 01:52:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:34| |PASTA TIME| +|08/01/2022 01:52:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:52:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:34| |PASTA PASTA| +|08/01/2022 01:52:34| |PASTA TIME| +|08/01/2022 01:52:35| |oh shit its pasta time| +|08/01/2022 01:52:35| |DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED! DVCE OFFSCREENED!| +|08/01/2022 01:52:36| |PIZZA TIME| +|08/01/2022 01:52:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:38| |BENITO MUSSOLINI| +|08/01/2022 01:52:39| |Pizza time| +|08/01/2022 01:52:39| PASTA +|08/01/2022 01:52:39| |PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA| +|08/01/2022 01:52:40| smelly +|08/01/2022 01:52:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:52:40| |LUNCHU LUNCHU| +|08/01/2022 01:52:41| |DUCE DUCE | +|08/01/2022 01:52:41| Awww +|08/01/2022 01:52:42| PASTAAAAAAAAAAAA +|08/01/2022 01:52:42| |PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME | +|08/01/2022 01:52:44| |pasta time | +|08/01/2022 01:52:44| |so sad| +|08/01/2022 01:52:45| |Poor duce| +|08/01/2022 01:52:45| |I've missed this| +|08/01/2022 01:52:45| Duce... +|08/01/2022 01:52:46| |CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU CTU | +|08/01/2022 01:52:46| |Totsugeki has no deceit| +|08/01/2022 01:52:46| |LOTSA SPAGHETTI| +|08/01/2022 01:52:47| |I could go for some 'za| +|08/01/2022 01:52:49| |BAKA DUCE BAKA DUCE BAKA DUCE| +|08/01/2022 01:52:49| :( +|08/01/2022 01:52:49| |POOR DVCE| +|08/01/2022 01:52:51| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:52:51| |duce is ctu| +|08/01/2022 01:52:52| flat +|08/01/2022 01:52:52| |CTU CTU CTU CTU| +|08/01/2022 01:52:53| |Is there any girl better than The Duce?| +|08/01/2022 01:52:54| |GIOVINEZZA, GIOVINEZZA| +|08/01/2022 01:52:54| seDUCED +|08/01/2022 01:52:55| |I love her much| +|08/01/2022 01:52:56| |Nothing honest about that widc, dvce| +|08/01/2022 01:52:57| |PIZZA PASTA PUT IT IN A BOX| +|08/01/2022 01:52:58| |ANZU ANZU ANZU| +|08/01/2022 01:53:02| |Κορόιδο Μουσολίνι| +|08/01/2022 01:53:04| |pizza time | +|08/01/2022 01:53:05| >ITALIAN +|08/01/2022 01:53:06| PASION +|08/01/2022 01:53:08| |ITALIAN """"CULTURE"""| +|08/01/2022 01:53:08| |PRIMAVERA DI BELLEZZA| +|08/01/2022 01:53:12| |κανείς σας δε θα μείνει| +|08/01/2022 01:53:12| >larpers +|08/01/2022 01:53:12| |So a real Italian made it?| +|08/01/2022 01:53:13| |>Italian >Tanks| +|08/01/2022 01:53:14| |CUTE TANKETTES| +|08/01/2022 01:53:14| |E PER BENITO MUSSOLINI EIA EIA ALALA| +|08/01/2022 01:53:14| |god I wish I had pasta| +|08/01/2022 01:53:14| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:53:16| |The pasta in my blood rejoices| +|08/01/2022 01:53:16| |Mul ei oo kahvii, pelkkää viinaa| +|08/01/2022 01:53:17| |I COOKE DA PASTA| +|08/01/2022 01:53:17| |Me too, Hana| +|08/01/2022 01:53:18| |DELLA VITA NELL'ASPREZZA| +|08/01/2022 01:53:21| |viva anzio| +|08/01/2022 01:53:21| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:53:22| |εσύ και η Ιταλία, η πατρίδα σου η γελοία, τρέμετε όλοι το χακί| +|08/01/2022 01:53:25| smelly +|08/01/2022 01:53:25| |she means pizza| +|08/01/2022 01:53:28| |SHI BWI| +|08/01/2022 01:53:29| 🍕🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 +|08/01/2022 01:53:29| |IMAGINE GOING FROM ANCIENT ROME TO MODERN ITALIANS. BIGGEST DOWNGRADE IN HISTORY| +|08/01/2022 01:53:30| |Fiat Panda tanks| +|08/01/2022 01:53:31| foreshadowing? +|08/01/2022 01:53:31| |10 years later, they're still using CV33's| +|08/01/2022 01:53:32| |IL TUO CANTO SQUILLA E VA| +|08/01/2022 01:53:41| |DUCE SMELLS GOOD| +|08/01/2022 01:53:43| YUKARI +|08/01/2022 01:53:44| ENTER +|08/01/2022 01:53:44| ENTER +|08/01/2022 01:53:44| |BASED YUKARI| +|08/01/2022 01:53:45| UNDERCOVER +|08/01/2022 01:53:45| ENTER +|08/01/2022 01:53:46| >ENTER +|08/01/2022 01:53:46| TADAIMAA +|08/01/2022 01:53:46| |Inteligence time| +|08/01/2022 01:53:46| ENTER +|08/01/2022 01:53:47| sugoi +|08/01/2022 01:53:49| |BASED YUKARI| +|08/01/2022 01:53:50| |SHE BACK| +|08/01/2022 01:53:50| ODDBALL +|08/01/2022 01:53:51| SPYFLUFF +|08/01/2022 01:53:51| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:53:52| |FLOOF RECON NUMBER 1| +|08/01/2022 01:53:53| HI +|08/01/2022 01:53:53| HAI +|08/01/2022 01:53:53| |SHE CAN'T KEEP GETTING AWAY WITH IT!| +|08/01/2022 01:53:58| |🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE 🍝 🍕 DVCE | +|08/01/2022 01:53:58| |winky floof| +|08/01/2022 01:54:00| HAI +|08/01/2022 01:54:00| CUTE +|08/01/2022 01:54:01| |Pepperoni's pepperoni nipples| +|08/01/2022 01:54:01| ITALIA +|08/01/2022 01:54:04| |WHEN DOES SHE EDIT IT SHE'S STILL IN THE UNIFORM| +|08/01/2022 01:54:05| |SHE DID IT AGAIN| +|08/01/2022 01:54:07| |METAL GEAR FLOOF| +|08/01/2022 01:54:07| |hope she didn't cut out her undressing this time| +|08/01/2022 01:54:11| |I thought that red text was danmaku am I retarded| +|08/01/2022 01:54:12| |G2 SPOOK YUKARI| +|08/01/2022 01:54:12| SNAAAAAAAAAAAKE +|08/01/2022 01:54:13| |Nice "TS" idiot| +|08/01/2022 01:54:13| |>viinaa || ei helvetti jos joisin nyt ja huomenna taas calvadosta| +|08/01/2022 01:54:14| |WHAT? METAL GEAR?| +|08/01/2022 01:54:17| |MY PC FROOZE FROM ALL THE DUCE SPAMMING...WE GOT TOO COCKY DUCE BROS| +|08/01/2022 01:54:18| lewd +|08/01/2022 01:54:18| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:19| |anzio is amazing| +|08/01/2022 01:54:19| SEX +|08/01/2022 01:54:20| WEW +|08/01/2022 01:54:21| UOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 01:54:21| wewww +|08/01/2022 01:54:22| |What do those Italian bastards have| +|08/01/2022 01:54:23| |NOOOOO KEEP GOING| +|08/01/2022 01:54:23| |BUTT AND BACK| +|08/01/2022 01:54:24| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:24| WEW +|08/01/2022 01:54:25| UUUUOOOOH +|08/01/2022 01:54:26| UOOOOOOOOOOOOOOOOOOOH +|08/01/2022 01:54:27| |SHE CAN'T KEEP GETTING AWAY WITH THIS!!!| +|08/01/2022 01:54:30| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:31| CUTE +|08/01/2022 01:54:32| |white stockings are my fetish| +|08/01/2022 01:54:32| |Anzio uniforms are the cuttest| +|08/01/2022 01:54:33| UOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHH +|08/01/2022 01:54:34| TEASE +|08/01/2022 01:54:36| |CUTE ANZIO GIRLS| +|08/01/2022 01:54:38| |Calvadost on vaa puoli pulloa nii se menee ihan hyvin alas no worries| +|08/01/2022 01:54:39| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:40| |Italo girls <3| +|08/01/2022 01:54:45| Fatties +|08/01/2022 01:54:48| |SHE CAN'T KEEP GETTING AWAY WITH THIS| +|08/01/2022 01:54:48| BINBOU +|08/01/2022 01:54:49| |anzio = best school| +|08/01/2022 01:54:49| |I wanna marry left| +|08/01/2022 01:54:49| SOVL +|08/01/2022 01:54:50| POOR +|08/01/2022 01:54:50| |YOU CAN'T SUFFER IN ANZIO| +|08/01/2022 01:54:53| |>POOR ITALIANS| +|08/01/2022 01:54:53| |EYY I'M WALKIN' 'ERE| +|08/01/2022 01:54:56| FLOOF +|08/01/2022 01:54:57| |cute scarf girl| +|08/01/2022 01:54:57| |SHE'S LUCKY EVERYONE IN THE WORLD SPEAKS JAPANESE LIKE ANY ANIME| +|08/01/2022 01:54:57| |Pepperoni has two younger brothers. The lucky bastards.| +|08/01/2022 01:54:58| |LOTSA SPAGHETTI| +|08/01/2022 01:55:00| BAKARONI +|08/01/2022 01:55:01| PEPPERONI!!!!! +|08/01/2022 01:55:03| PEPERONI +|08/01/2022 01:55:05| BAKARONI +|08/01/2022 01:55:05| PEPPERONI +|08/01/2022 01:55:05| PEPPA +|08/01/2022 01:55:06| |IMAGINE THE SMELL| +|08/01/2022 01:55:06| |OISHII PASTA| +|08/01/2022 01:55:06| |PEPPERONI MY LOVE| +|08/01/2022 01:55:07| |oishiii pasta dayou| +|08/01/2022 01:55:07| PEPPERONI +|08/01/2022 01:55:08| |>ketchup in your pasta| +|08/01/2022 01:55:08| |Pepper chan!| +|08/01/2022 01:55:09| PASTA +|08/01/2022 01:55:09| |our eyes met| +|08/01/2022 01:55:10| |stupid pepperoni| +|08/01/2022 01:55:11| >ketchup +|08/01/2022 01:55:13| |NO ONIONS!?| +|08/01/2022 01:55:14| Bakaroni +|08/01/2022 01:55:14| sex +|08/01/2022 01:55:16| |cute braid| +|08/01/2022 01:55:17| |why is she giving the recipe to a customer| +|08/01/2022 01:55:18| |PEPPERONI IS SEX| +|08/01/2022 01:55:20| BAKARONI +|08/01/2022 01:55:21| |>ITALIAN CUISINE| +|08/01/2022 01:55:21| |fuck im hungry| +|08/01/2022 01:55:23| STUPIDRONI +|08/01/2022 01:55:23| Bakaroni +|08/01/2022 01:55:23| |KETCHUP YOU MORON| +|08/01/2022 01:55:24| |onions are for the french| +|08/01/2022 01:55:24| >ketchup +|08/01/2022 01:55:24| |PEPPERONI | +|08/01/2022 01:55:27| |>3 MILLION| +|08/01/2022 01:55:28| |>Italian "economy"| +|08/01/2022 01:55:29| |it isn't ketchup you mutt fucks| +|08/01/2022 01:55:30| |kek 300 yen| +|08/01/2022 01:55:30| |3 million lira = 3 dollar| +|08/01/2022 01:55:30| |the ketchup cooks the eggs| +|08/01/2022 01:55:31| |I've read this doujin| +|08/01/2022 01:55:32| |LARP FAILED| +|08/01/2022 01:55:32| >INFLATION +|08/01/2022 01:55:33| |3 QUID| +|08/01/2022 01:55:34| |Anchovy > ALL| +|08/01/2022 01:55:35| |in dollars woman| +|08/01/2022 01:55:35| |pay denbts| +|08/01/2022 01:55:36| |DA RO| +|08/01/2022 01:55:38| DAROOO +|08/01/2022 01:55:45| |stupid pepperoni| +|08/01/2022 01:55:45| |She's so lucky Bakaroni is a baka| +|08/01/2022 01:55:46| |she is so fucking stupid| +|08/01/2022 01:55:47| |smol subs| +|08/01/2022 01:55:48| BAKARONI +|08/01/2022 01:55:48| |FUCKING DUMBASS| +|08/01/2022 01:55:48| |DUMB RETARD PEPPERONI| +|08/01/2022 01:55:48| |mutts think tomato sauce tastes like ketchup| +|08/01/2022 01:55:50| |One (1) heavy tank| +|08/01/2022 01:55:50| BAKARONI +|08/01/2022 01:55:50| |>heavy tank| +|08/01/2022 01:55:51| |>TOP SECRET| +|08/01/2022 01:55:51| Bakaroni +|08/01/2022 01:55:53| |Yukari confirmed cunnyseur| +|08/01/2022 01:55:53| |Greasy anzio pasta cheaper than anything my shithole country offers| +|08/01/2022 01:55:54| |Moron ronni| +|08/01/2022 01:55:54| |>Heavy tank| +|08/01/2022 01:55:55| BAKARONI +|08/01/2022 01:55:55| |RONI DUM| +|08/01/2022 01:55:56| BAKARONI +|08/01/2022 01:55:58| "HEAVY" +|08/01/2022 01:56:00| BAKARONI +|08/01/2022 01:56:00| |CUTE FUCKING RETARDED SEX NUKE PEPPERONI| +|08/01/2022 01:56:00| |Is this Minos' VA?| +|08/01/2022 01:56:01| >heavy +|08/01/2022 01:56:05| |she's literally saying this right into the camera| +|08/01/2022 01:56:06| SLAP* +|08/01/2022 01:56:07| |Still more than Orai\| +|08/01/2022 01:56:08| SLAP +|08/01/2022 01:56:10| |longer than i can remember... so this morning?| +|08/01/2022 01:56:10| SLAPPU +|08/01/2022 01:56:13| |Pasta so greasy saunders can refuel from it| +|08/01/2022 01:56:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:13| |WHY ARE RETARDS SO SEXY AAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 01:56:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:14| GENIUS +|08/01/2022 01:56:14| ARRIVEDERCI +|08/01/2022 01:56:15| ARRIVEDERCI +|08/01/2022 01:56:15| ARREVIDERCI! +|08/01/2022 01:56:15| ARRIVEDERCHI +|08/01/2022 01:56:16| arrevaderci +|08/01/2022 01:56:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:19| |cute tankette| +|08/01/2022 01:56:19| TAKNETTE +|08/01/2022 01:56:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:19| |Still better pronunciation than Brad Pitt| +|08/01/2022 01:56:20| |Yukrai is a serious spy please understand| +|08/01/2022 01:56:20| |STOP INSULTING ANZION'S TOP SECRET HEAVY TANK IT WILL BE GLORIOUS THEY WILL WIN AGAINST OOARAI| +|08/01/2022 01:56:21| |A FUCKING CV| +|08/01/2022 01:56:21| |INFOSEC MOTHERFUCKER, DO YOU KNOW OF IT| +|08/01/2022 01:56:21| |Brunno Pepperoni| +|08/01/2022 01:56:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:23| |ARI ARI ARI ARI| +|08/01/2022 01:56:23| ARRIVEDEEERCI +|08/01/2022 01:56:23| |CHEF VN ROUTE| +|08/01/2022 01:56:23| |caruro veloche| +|08/01/2022 01:56:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:27| |DUCE DUCE DUCE| +|08/01/2022 01:56:27| ARRIVADERCI +|08/01/2022 01:56:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:28| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:28| |You will never drive around campus raising morale in your armored car| +|08/01/2022 01:56:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:30| |DUCE | +|08/01/2022 01:56:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:31| ENTER +|08/01/2022 01:56:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:56:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCED| +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:36| DUCE +|08/01/2022 01:56:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:36| |CARRO VELOCE| +|08/01/2022 01:56:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 01:56:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:37| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:38| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 01:56:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |PURE DC TRACTION| +|08/01/2022 01:56:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:41| HA +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:41| |🍕🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 DUCE DUCE DUCE DUCE 🍕🇮🇹🍕🍕🇮🇹🍕🇮🇹🇮🇹🍕 DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:42| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:43| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:43| |DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |AVE AVE AVE| +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUC EDUC DEU DUC E| +|08/01/2022 01:56:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:46| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DU| +|08/01/2022 01:56:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:46| DUCE +|08/01/2022 01:56:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:47| |DVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCEDVCE DVCE| +|08/01/2022 01:56:47| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:48| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:56:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| DUCE +|08/01/2022 01:56:49| duce +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:56:50| DUCE +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:51| |i think bros love duce| +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +|08/01/2022 01:56:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUEC DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:55| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:56| |DUCE DUCE DUCE| +|08/01/2022 01:56:56| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:56| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:56:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE VV| +|08/01/2022 01:56:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:58| DUCE +|08/01/2022 01:56:58| |DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE DOUCHE| +|08/01/2022 01:56:58| |DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 01:57:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:57:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:01| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 01:57:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:04| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:57:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:05| wew +|08/01/2022 01:57:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:57:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:05| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 01:57:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:06| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:57:07| |DUCE DUCE DUCE DUCEEE| +|08/01/2022 01:57:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:09| |o/ DUCE o/ DUCE o/ DUCE| +|08/01/2022 01:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 01:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:57:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:12| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 01:57:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE | +|08/01/2022 01:57:18| >MOMO +|08/01/2022 01:57:18| O7 +|08/01/2022 01:57:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 01:57:27| |SEX WITH MOMO| +|08/01/2022 01:57:28| |understood, faggots?| +|08/01/2022 01:57:31| SEIG +|08/01/2022 01:57:32| |"UNDERSTOOD, FAGGOTS?"| +|08/01/2022 01:57:32| |already blew my horn| +|08/01/2022 01:57:32| |BASED CAESAR| +|08/01/2022 01:57:32| |HAIL CAESAR| +|08/01/2022 01:57:32| |EI EI OH!| +|08/01/2022 01:57:33| |A A O| +|08/01/2022 01:57:34| |bunnies = maggots| +|08/01/2022 01:57:36| |NO CAESAR WE CAN'T SALUTE LIKE THAT ANYMORE| +|08/01/2022 01:57:36| |EI EI OH| +|08/01/2022 01:57:36| |me as anzu's director's chair| +|08/01/2022 01:57:36| |the autism war cry| +|08/01/2022 01:57:37| |EI EI OOO| +|08/01/2022 01:57:37| |A A O| +|08/01/2022 01:57:38| |A A O| +|08/01/2022 01:57:38| |o/ o/ o/| +|08/01/2022 01:57:39| |A A O| +|08/01/2022 01:57:41| |o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/ o/| +|08/01/2022 01:57:42| 勝って兜の緒を締めよ +|08/01/2022 01:57:42| |AYO THA HAND| +|08/01/2022 01:57:44| ayo +|08/01/2022 01:57:47| SEIG +|08/01/2022 01:57:48| WEAK +|08/01/2022 01:57:48| |o/ HAIL CAESAR| +|08/01/2022 01:57:51| |Bunny = Death| +|08/01/2022 01:57:52| duce! +|08/01/2022 01:57:57| |Hippo team is cancelled| +|08/01/2022 01:57:57| weaklings +|08/01/2022 01:57:57| |alright i am too tired for this, see you next time anons, or in the morning, i don't know| +|08/01/2022 01:57:58| |what happens if you drop a live round?| +|08/01/2022 01:57:58| |LEGIO! AETERNA! AETERNA!| +|08/01/2022 01:58:01| |>Not able to lift a shell| +|08/01/2022 01:58:06| |don't, it makes mustard gas| +|08/01/2022 01:58:07| |you die| +|08/01/2022 01:58:07| |are the episode and ova spliced?| +|08/01/2022 01:58:08| NORIKO +|08/01/2022 01:58:10| |goodnight anon| +|08/01/2022 01:58:14| |YEs, they're spliced| +|08/01/2022 01:58:16| |yeah it's the supercut| +|08/01/2022 01:58:17| |If she dies, she dies| +|08/01/2022 01:58:18| |YOU FUCKING NIGGERS CRASHED MY STREAM| +|08/01/2022 01:58:19| ssss +|08/01/2022 01:58:20| |tank weight| +|08/01/2022 01:58:20| |>training arc lasts 30 seconds| +|08/01/2022 01:58:21| |that's what supercut means retard| +|08/01/2022 01:58:21| |>lost weight| +|08/01/2022 01:58:23| |SURE SAORI| +|08/01/2022 01:58:23| >leavers +|08/01/2022 01:58:23| |Sure, Saori. Sure.| +|08/01/2022 01:58:23| |FAGGOT ANON DARING TO SLEEP| +|08/01/2022 01:58:23| |I'll supercut you ,virgin| +|08/01/2022 01:58:23| |they are female children no older than 14yo, they cant be expected to lift tank shells| +|08/01/2022 01:58:25| 日本語はできる? +|08/01/2022 01:58:29| |Nothing its Carbon Coated Shells| +|08/01/2022 01:58:37| |14yo is perfect for breeding| +|08/01/2022 01:58:44| |tankers high they call it| +|08/01/2022 01:58:45| |>Not being swole at 14y old| +|08/01/2022 01:58:48| |lmao lone comment| +|08/01/2022 01:58:51| |her curves are hard| +|08/01/2022 01:58:55| volleybutts +|08/01/2022 01:58:56| |senpai pls help| +|08/01/2022 01:58:56| |Volleyball curves are har| +|08/01/2022 01:58:58| |the volleyball team's curves....| +|08/01/2022 01:58:59| |MY BUTT HURTS| +|08/01/2022 01:59:01| |maybe her butt hurts| +|08/01/2022 01:59:02| |MALE FRIENDS| +|08/01/2022 01:59:03| |>show has a ton of cute milfs >nooo I want 14yo| +|08/01/2022 01:59:04| |butt pillow| +|08/01/2022 01:59:04| >male +|08/01/2022 01:59:04| fags +|08/01/2022 01:59:05| butthurt +|08/01/2022 01:59:06| SENPAI +|08/01/2022 01:59:07| |WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +|08/01/2022 01:59:07| |shaking butts| +|08/01/2022 01:59:08| costanze.png +|08/01/2022 01:59:08| >boyfriend +|08/01/2022 01:59:09| |what a fags| +|08/01/2022 01:59:09| SLUTS +|08/01/2022 01:59:09| |FROM WHAT?| +|08/01/2022 01:59:11| |SEX FRIENDS| +|08/01/2022 01:59:12| FAGS +|08/01/2022 01:59:12| |GET YUUKI A BETTER BOYFRIEND| +|08/01/2022 01:59:13| |WHY DO ALL THEIR BUTTS HURT????????????| +|08/01/2022 01:59:15| |These boys are all fags holy shit| +|08/01/2022 01:59:15| FAGS +|08/01/2022 01:59:15| |eight o| +|08/01/2022 01:59:16| >boyfriend +|08/01/2022 01:59:17| fags +|08/01/2022 01:59:18| |would you dump a Yuki?| +|08/01/2022 01:59:21| |HER BOYFRIEND DUMPED HER YES| +|08/01/2022 01:59:25| |Never dump Yuki| +|08/01/2022 01:59:26| |WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +|08/01/2022 01:59:26| |AIRFOCE BOYS STRONG| +|08/01/2022 01:59:27| |yes, into my bed| +|08/01/2022 01:59:28| |I CAN RESOLVE THE LACK OF BF ISSUE| +|08/01/2022 01:59:28| |what a bunch of faggots| +|08/01/2022 01:59:29| |rip saori| +|08/01/2022 01:59:29| |only faggots I swear| +|08/01/2022 01:59:29| |Milfs are used, dont you want fresh?| +|08/01/2022 01:59:30| |YUUKI THE MEN YOU KEEP IN THE BASEMENT ARE NOT "BOYFRIENDS"| +|08/01/2022 01:59:34| CLANG +|08/01/2022 01:59:35| |don't trust saori with relationship advice| +|08/01/2022 01:59:37| |based stug| +|08/01/2022 01:59:39| |>Saori giving relationship advice| +|08/01/2022 01:59:40| |its a self propelled gun| +|08/01/2022 01:59:41| |The bunnies had boyfriends| +|08/01/2022 01:59:42| |STuG STuG STuG| +|08/01/2022 01:59:43| |is strv 103 an mbt, /a/?| +|08/01/2022 01:59:43| |There are no men left| +|08/01/2022 01:59:46| |SORE DA| +|08/01/2022 01:59:47| |WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +|08/01/2022 01:59:47| |SORE DA!!| +|08/01/2022 01:59:48| |stug is grug| +|08/01/2022 01:59:49| |it's called efficiency| +|08/01/2022 01:59:49| |Don't worry yurifags, those kinds of boyfriends are too gay to touch your girls| +|08/01/2022 01:59:50| |based hippos| +|08/01/2022 01:59:50| |SORE DA| +|08/01/2022 01:59:51| |WE NEED TO CLARIFY THIS| +|08/01/2022 01:59:52| |the strv is an MBT| +|08/01/2022 01:59:54| |Sore DA| +|08/01/2022 01:59:55| |SPEED READER| +|08/01/2022 01:59:56| |THATS IT| +|08/01/2022 01:59:58| |yet whata is an mbt| +|08/01/2022 01:59:58| |All men have died to carbon poisening| +|08/01/2022 02:00:07| |carbon speed reading| +|08/01/2022 02:00:07| |>women driving| +|08/01/2022 02:00:10| |I KNOW KUNG FU| +|08/01/2022 02:00:10| |just read lol| +|08/01/2022 02:00:10| >RTFM +|08/01/2022 02:00:10| RTFM +|08/01/2022 02:00:11| |what the fuck is a manual| +|08/01/2022 02:00:11| RTFM +|08/01/2022 02:00:14| |only ladybodies can handle carbon| +|08/01/2022 02:00:15| >saori +|08/01/2022 02:00:15| rtfm +|08/01/2022 02:00:15| |based Mako| +|08/01/2022 02:00:18| |>asian women driving| +|08/01/2022 02:00:20| |I also give people relationship advice t. KHHV| +|08/01/2022 02:00:20| |What manual? Just tell me what it means, douch| +|08/01/2022 02:00:21| |read nigga| +|08/01/2022 02:00:21| |NISHIZUMI STYLE| +|08/01/2022 02:00:22| 0 +|08/01/2022 02:00:25| SLUT +|08/01/2022 02:00:25| L\ +|08/01/2022 02:00:25| |reading is iard| +|08/01/2022 02:00:26| F +|08/01/2022 02:00:26| |Imagine reading words on paper| +|08/01/2022 02:00:26| |LMAO SAORI BTFO| +|08/01/2022 02:00:27| |>just drive| +|08/01/2022 02:00:27| SLUT +|08/01/2022 02:00:27| |just lie| +|08/01/2022 02:00:27| |UNDERAGE SLUTS| +|08/01/2022 02:00:28| Saori............................ +|08/01/2022 02:00:28| OOF +|08/01/2022 02:00:29| READ +|08/01/2022 02:00:29| |calls out the fat seal| +|08/01/2022 02:00:29| |DON'T LISTEN TO HER RABBITS| +|08/01/2022 02:00:29| |>how many| +|08/01/2022 02:00:30| |MANAGER! READ THE FUCKING MANUAL!| +|08/01/2022 02:00:30| |Carbon has turned all the men into little girls| +|08/01/2022 02:00:30| > +|08/01/2022 02:00:33| |tank boyfriend| +|08/01/2022 02:00:33| > +|08/01/2022 02:00:36| |I want to be a tank| +|08/01/2022 02:00:37| |WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHERE IS HOSHINO WHER| +|08/01/2022 02:00:37| |>HIJIRI'S DOUJIN| +|08/01/2022 02:00:38| WHORES +|08/01/2022 02:00:38| |READ THE PDF| +|08/01/2022 02:00:40| azusa +|08/01/2022 02:00:42| |PURE SLUT| +|08/01/2022 02:00:43| |>I CAN BE HER BOYFRIEND| +|08/01/2022 02:00:44| |can girls love panzer?| +|08/01/2022 02:00:47| |Imagine being a tank| +|08/01/2022 02:00:50| |NEED MORE THAN A DOZEN| +|08/01/2022 02:00:55| |imagine being a girl| +|08/01/2022 02:00:59| |I smell lesbians| +|08/01/2022 02:00:59| |I want to be a tank and have Saori ride me until her butt hurts| +|08/01/2022 02:01:00| |CAN LOVE BLOOM IN A PANZER| +|08/01/2022 02:01:01| |Panzers are all they need to be penetrated| +|08/01/2022 02:01:01| |>doesn't remember| +|08/01/2022 02:01:01| |imagine not being a girl| +|08/01/2022 02:01:02| |we're all little girls here| +|08/01/2022 02:01:04| |MOMO HATE| +|08/01/2022 02:01:05| |flowery girls| +|08/01/2022 02:01:05| |ANZU ANZU ANZU| +|08/01/2022 02:01:05| |dumb hana moment| +|08/01/2022 02:01:06| |I don't know who the fuck you are - Isuzu Hana| +|08/01/2022 02:01:07| KEK +|08/01/2022 02:01:10| |YUZU'S DOUJIN!!!!| +|08/01/2022 02:01:12| |MOMO CHAAAAAAAN| +|08/01/2022 02:01:13| |"I'm CIA"| +|08/01/2022 02:01:14| |CUTE ANZU| +|08/01/2022 02:01:15| |erika would never had a boyfriend (other than me)| +|08/01/2022 02:01:16| |stupid monocle| +|08/01/2022 02:01:17| |Anzu cute| +|08/01/2022 02:01:17| |i'm uhhhh yuzu| +|08/01/2022 02:01:19| Monmo-chan +|08/01/2022 02:01:20| |Shit I gotta takemy pills| +|08/01/2022 02:01:22| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 02:01:22| |Thanks for the bullying| +|08/01/2022 02:01:23| flat +|08/01/2022 02:01:24| |ANZU SMILE| +|08/01/2022 02:01:26| |maho is my gf| +|08/01/2022 02:01:26| |Imagine a Yuzu thighjob| +|08/01/2022 02:01:30| |Dystopian world where 90% of the babies born are girls| +|08/01/2022 02:01:31| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 02:01:33| |I hate Momo too!| +|08/01/2022 02:01:33| |eat your onigiri| +|08/01/2022 02:01:34| |What would happen if I remove the monocle| +|08/01/2022 02:01:36| |I claimed Erika, go away anons| +|08/01/2022 02:01:39| "dystopian" +|08/01/2022 02:01:40| |WE LOVE MOMO| +|08/01/2022 02:01:42| >dystopian +|08/01/2022 02:01:45| |SHUT UP MOMO| +|08/01/2022 02:01:45| |IT WOULD BE EXTREMELY PAINFUL| +|08/01/2022 02:01:48| |Let's All Love Momo| +|08/01/2022 02:01:48| MOMOCLE +|08/01/2022 02:01:49| |based world| +|08/01/2022 02:01:49| >>Dystopian +|08/01/2022 02:01:50| momochads... +|08/01/2022 02:01:50| |momo is worst character, no debate, even that male trying to close down the school is better| +|08/01/2022 02:01:52| iMo +|08/01/2022 02:01:53| |momo looks so stupid with that monocle wtf| +|08/01/2022 02:01:55| |MORE tanks| +|08/01/2022 02:01:56| |YOURE A BIG TANKER| +|08/01/2022 02:01:59| |Momo needs rape (non-correctional)| +|08/01/2022 02:01:59| |MORE TANKS| +|08/01/2022 02:01:59| 4U +|08/01/2022 02:02:03| uuuu +|08/01/2022 02:02:04| |her family can't afford proper glasses| +|08/01/2022 02:02:04| |FO YU| +|08/01/2022 02:02:04| |Yes, it's dystopian. As much as I like girls, I can't have beer with them like with the bois| +|08/01/2022 02:02:04| |cute boy| +|08/01/2022 02:02:05| volleyballs! +|08/01/2022 02:02:06| |FAVORITE TANK GO| +|08/01/2022 02:02:06| |MOAR TONKS?!?!| +|08/01/2022 02:02:07| |OH SHIT SHE'S FLAT| +|08/01/2022 02:02:08| |MEXT IS THE BEST IT HAS GREAT BENEFIT PACKAGES| +|08/01/2022 02:02:08| GUTS! +|08/01/2022 02:02:09| |HANA/YUZU MILK TANKS| +|08/01/2022 02:02:11| SHAKU +|08/01/2022 02:02:12| |TYPE 74 GANG| +|08/01/2022 02:02:14| DIVINATION +|08/01/2022 02:02:17| |LUV TAEKO| +|08/01/2022 02:02:17| HA +|08/01/2022 02:02:18| autism +|08/01/2022 02:02:19| foreshadowing +|08/01/2022 02:02:19| |H A| +|08/01/2022 02:02:24| |SAEMONZA SUMATA| +|08/01/2022 02:02:27| |dumb karina| +|08/01/2022 02:02:28| |history nerd autism| +|08/01/2022 02:02:32| |You will never be mugged in the ship's dark underbelly| +|08/01/2022 02:02:32| EBIN +|08/01/2022 02:02:32| |forced ship lore| +|08/01/2022 02:02:32| |SAKI CAN SEE THROUGH THE WALLS| +|08/01/2022 02:02:34| |We Head East| +|08/01/2022 02:02:35| |Are hippos otaku or chuuni?| +|08/01/2022 02:02:37| |>does it matter?| +|08/01/2022 02:02:38| |dumb rabbits| +|08/01/2022 02:02:38| AzUSA +|08/01/2022 02:02:39| |like the inside of a ship| +|08/01/2022 02:02:43| |All lies| +|08/01/2022 02:02:44| |aaaaa This message was written by 2fast rosehip aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa| +|08/01/2022 02:02:45| |i thought they have ships cause the world is flooded| +|08/01/2022 02:02:46| |because its cool asuza| +|08/01/2022 02:02:48| |more SHIP LORE| +|08/01/2022 02:02:51| |why are their skirts so damn short| +|08/01/2022 02:02:54| |wtf is a tank| +|08/01/2022 02:02:58| |MOAR SAILOR GIRLS| +|08/01/2022 02:02:59| |>school sailor uniform| +|08/01/2022 02:02:59| |Sailor grills are cute| +|08/01/2022 02:03:00| |how the fuck did a tank get in the ship| +|08/01/2022 02:03:01| |CUTE SAILORS| +|08/01/2022 02:03:02| |YET WHAT IS A TANK| +|08/01/2022 02:03:02| butt +|08/01/2022 02:03:05| |BITCH, WE HAVEN'T SEEN TANKS WE'VE BEEN WORKING FOR 8 HOURS WITH NO SLEEP| +|08/01/2022 02:03:07| |A MISERABLE PILE OF SCREWS| +|08/01/2022 02:03:07| >momo +|08/01/2022 02:03:11| |tanks breed in the lower gantries| +|08/01/2022 02:03:11| |fucking Momo| +|08/01/2022 02:03:12| |The skirts are short because ANIME| +|08/01/2022 02:03:13| |TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COMING TAN PIRATE COM| +|08/01/2022 02:03:14| |MOMO HATE| +|08/01/2022 02:03:18| |shut up momo| +|08/01/2022 02:03:21| |SHUT UP MOMO| +|08/01/2022 02:03:22| |>They have taken the lower levels| +|08/01/2022 02:03:22| |TAN PIRATE| +|08/01/2022 02:03:23| |ANZU ANZU| +|08/01/2022 02:03:24| |based lazy anzu| +|08/01/2022 02:03:25| |momo dumb| +|08/01/2022 02:03:25| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 02:03:27| |TAN PIRATE| +|08/01/2022 02:03:29| volleybutt +|08/01/2022 02:03:29| |TAN PIRATE| +|08/01/2022 02:03:29| |who decided to make Momo the focus of the finales?| +|08/01/2022 02:03:31| DOUDESHOUKA? +|08/01/2022 02:03:31| |Just breed tanks| +|08/01/2022 02:03:32| |SNIFF FEET| +|08/01/2022 02:03:32| flat +|08/01/2022 02:03:33| |ANZU BIG CHILLIN| +|08/01/2022 02:03:37| |Someone should plug up Momo's mouth| +|08/01/2022 02:03:38| |explain why no boys doing senshado| +|08/01/2022 02:03:41| |TAN PIRATE| +|08/01/2022 02:03:44| |Momo is cute and has big tats though| +|08/01/2022 02:03:44| |TAN PIRATE| +|08/01/2022 02:03:48| hung +|08/01/2022 02:03:49| |There it is | +|08/01/2022 02:03:49| |tanks are a girl sport duh| +|08/01/2022 02:03:51| |TAN PIRATE| +|08/01/2022 02:03:51| |>hanging laundry on a rusty heavy pipe| +|08/01/2022 02:03:52| buffering +|08/01/2022 02:03:52| |airing their dirty laundry, eh?| +|08/01/2022 02:03:53| |Boys are flying superior planes| +|08/01/2022 02:03:55| |THIS PANZER IS SLEEPING| +|08/01/2022 02:03:55| FROZE +|08/01/2022 02:03:56| BUFFERING +|08/01/2022 02:03:58| bufferign +|08/01/2022 02:03:59| |Le quack| +|08/01/2022 02:04:00| buffering +|08/01/2022 02:04:00| |Tank of the lake| +|08/01/2022 02:04:01| |>French tank| +|08/01/2022 02:04:01| |TANK FOUND| +|08/01/2022 02:04:02| >Renault +|08/01/2022 02:04:02| >renault +|08/01/2022 02:04:03| |rip stream| +|08/01/2022 02:04:05| |AAAAA BUFFERING| +|08/01/2022 02:04:07| F +|08/01/2022 02:04:08| |NAZI BETTER!| +|08/01/2022 02:04:09| >monty +|08/01/2022 02:04:09| |yeah hard buffers| +|08/01/2022 02:04:10| |IT'S OVER| +|08/01/2022 02:04:11| |Shit tank leave it | +|08/01/2022 02:04:11| >Renault +|08/01/2022 02:04:12| |stream buffer| +|08/01/2022 02:04:16| |CRUNCHING NOISES AND LAUGHTER| +|08/01/2022 02:04:18| |rip stream| +|08/01/2022 02:04:18| |IM BOOOOOFERING| +|08/01/2022 02:04:20| |>frog tanks| +|08/01/2022 02:04:20| |>NOT LIKING MONTY >PLEB TASTE| +|08/01/2022 02:04:21| dead +|08/01/2022 02:04:22| |>Renault... i gotta go...| +|08/01/2022 02:04:22| F +|08/01/2022 02:04:23| |ngl like the screenshot| +|08/01/2022 02:04:27| A +|08/01/2022 02:04:27| |Duck is not shit, Duck is good (for 1940)| +|08/01/2022 02:04:27| |BUFFER NO| +|08/01/2022 02:04:28| ANZU +|08/01/2022 02:04:28| flat +|08/01/2022 02:04:30| |>Monty >Good| +|08/01/2022 02:04:32| |TWINGO TANK| +|08/01/2022 02:04:33| |how many tanks are just sleeping aboard the ship| +|08/01/2022 02:04:39| |JUST A TRENCHCOAT| +|08/01/2022 02:04:40| |Monty better than Patton| +|08/01/2022 02:04:42| |Ugh, Yuckari is smiling...| +|08/01/2022 02:04:42| |happy fluff| +|08/01/2022 02:04:42| |no pants| +|08/01/2022 02:04:42| F +|08/01/2022 02:04:43| |and now stream caught up and I'm 15 seconds behind| +|08/01/2022 02:04:47| |they ded| +|08/01/2022 02:04:47| |fluffy wants that gun inside her| +|08/01/2022 02:04:48| |HOW DO THEY LOSE ALL THESE TANKS| +|08/01/2022 02:04:49| MEAOW +|08/01/2022 02:04:54| |Patton called monty a tired little fart| +|08/01/2022 02:04:54| |KYON KUN DENWA| +|08/01/2022 02:04:55| |TAN PIRATE| +|08/01/2022 02:04:56| |What's so "fresh" about freshmen| +|08/01/2022 02:04:57| dumbunnies +|08/01/2022 02:04:57| SPOOPY +|08/01/2022 02:04:59| |TAN PIRATE| +|08/01/2022 02:05:01| |typical officer| +|08/01/2022 02:05:02| |Just go up idiots| +|08/01/2022 02:05:04| |TAN PIRATE| +|08/01/2022 02:05:04| flat +|08/01/2022 02:05:05| |Based Patton, as always| +|08/01/2022 02:05:06| |Vance Stubbs used to run this city-ship| +|08/01/2022 02:05:07| |More German generals knew of Monty than Patton| +|08/01/2022 02:05:08| |>not my problem| +|08/01/2022 02:05:09| |TAN PIRATE| +|08/01/2022 02:05:10| |DON'T TALK TO THE GIRL IN WHITE| +|08/01/2022 02:05:14| |TAN PIRATE| +|08/01/2022 02:05:15| |Patton was a retard| +|08/01/2022 02:05:15| |Hana, fastest gun in the west| +|08/01/2022 02:05:17| |I have to pee| +|08/01/2022 02:05:18| Spoopy +|08/01/2022 02:05:19| |TAN PIRATE| +|08/01/2022 02:05:21| |How did they even get a tank there?| +|08/01/2022 02:05:22| |die joe boo| +|08/01/2022 02:05:23| |use a bottle| +|08/01/2022 02:05:23| |Based Hana| +|08/01/2022 02:05:24| |TAN PIRATE| +|08/01/2022 02:05:25| |Patton was cool| +|08/01/2022 02:05:27| |USE A PISS BOTTLE| +|08/01/2022 02:05:27| |GOVERNOR GENERAL STUBBS| +|08/01/2022 02:05:27| |Patton was a retard, but he was our retard| +|08/01/2022 02:05:29| |TAN PIRATE| +|08/01/2022 02:05:31| ghosts +|08/01/2022 02:05:33| |patton is dead| +|08/01/2022 02:05:34| |TAN PIRATE| +|08/01/2022 02:05:34| |CHO CHO| +|08/01/2022 02:05:36| |Hana has seen some shit| +|08/01/2022 02:05:36| |watch your light asshole| +|08/01/2022 02:05:37| |WTF guys it's too early for pirates | +|08/01/2022 02:05:39| |Haunted tank ship| +|08/01/2022 02:05:39| |Reminder that Patton wanted to drive to Berlin before the Hurtzen was opened| +|08/01/2022 02:05:40| |based maki| +|08/01/2022 02:05:40| |these poor bunnies| +|08/01/2022 02:05:41| |Ghost of Patton| +|08/01/2022 02:05:42| |wtf ghosts are real?!| +|08/01/2022 02:05:43| |imagine finding a bunch of buns| +|08/01/2022 02:05:43| |No tan pirate for a long time yet.| +|08/01/2022 02:05:43| |Eat Saki to survive| +|08/01/2022 02:05:45| |We need to go deeper into the bowels of the rabbits.| +|08/01/2022 02:05:46| ded +|08/01/2022 02:05:46| |they're going to fucking die | +|08/01/2022 02:05:47| |NO AZUSA DON'T CRY| +|08/01/2022 02:05:48| |PETTAN PETTAN TSURUPETTAN| +|08/01/2022 02:05:48| ;_; +|08/01/2022 02:05:48| |Saki uses telepathy| +|08/01/2022 02:05:50| ToT +|08/01/2022 02:05:50| |Hana's seen footage she stays noided| +|08/01/2022 02:05:50| |crying rabbit | +|08/01/2022 02:05:51| ;__; +|08/01/2022 02:05:52| |DVCE | +|08/01/2022 02:05:53| |>Saki looking at a an empty spot| +|08/01/2022 02:05:55| |fucking Saki| +|08/01/2022 02:05:55| |pero pero pero| +|08/01/2022 02:05:55| KAIZA +|08/01/2022 02:05:56| cringe +|08/01/2022 02:05:57| |SOMEONE IS GOING TO BE EATEN| +|08/01/2022 02:05:58| |Saki seeing the future| +|08/01/2022 02:06:01| |pocket chocolates melt| +|08/01/2022 02:06:01| |entertain the children with sweets, classic| +|08/01/2022 02:06:01| |NO SAORI, THIS IS HOW THEY LURE IN THEIR PREY| +|08/01/2022 02:06:02| |I will not tolerate you fools slandering the REINCARNATION OF HANNIBAL himself| +|08/01/2022 02:06:02| YAY +|08/01/2022 02:06:04| |Ha ha, ghosts aren't real, right you guys?| +|08/01/2022 02:06:05| PEW +|08/01/2022 02:06:05| KOWAI +|08/01/2022 02:06:06| |Priceless Mako reaction| +|08/01/2022 02:06:06| |SAORI HOARDING RATIONS| +|08/01/2022 02:06:06| gudewho +|08/01/2022 02:06:08| hi +|08/01/2022 02:06:10| |He also stopped halfway across the rhine when he crossed it to piss over the side| +|08/01/2022 02:06:12| reception? +|08/01/2022 02:06:13| |autism ringtone| +|08/01/2022 02:06:13| kaisar-dono +|08/01/2022 02:06:16| |tank firing as ringtone BASED| +|08/01/2022 02:06:16| |Eat Yuki| +|08/01/2022 02:06:17| |Patton could have captured Berlin if it weren't for the Bretards| +|08/01/2022 02:06:18| |SORO NEIMU| +|08/01/2022 02:06:19| |SOUL NAME| +|08/01/2022 02:06:19| |Mako is a pussy| +|08/01/2022 02:06:20| |>soul name| +|08/01/2022 02:06:24| |just use a compass| +|08/01/2022 02:06:27| |>compass on a ship| +|08/01/2022 02:06:28| |tank ringtone, I need it| +|08/01/2022 02:06:30| cumpass +|08/01/2022 02:06:30| |I WISH WE HAD SOUL NAMES| +|08/01/2022 02:06:31| |>compass inside a metallic ship| +|08/01/2022 02:06:32| |>Nishi zumi| +|08/01/2022 02:06:34| |Patton could have captured Moscow too desu| +|08/01/2022 02:06:34| |Germany should have won| +|08/01/2022 02:06:35| |Imagine being swarmd by relieved lolis| +|08/01/2022 02:06:36| divination? +|08/01/2022 02:06:38| |>compass inside a massive metal ship| +|08/01/2022 02:06:40| |TAN PIRATE| +|08/01/2022 02:06:40| MIIPORIIIIIIIN +|08/01/2022 02:06:43| cum +|08/01/2022 02:06:44| |I grant you anon the soulname "gigafaggot"| +|08/01/2022 02:06:44| |>He doesn't have a soul name| +|08/01/2022 02:06:44| |how else do they navigate on the seas| +|08/01/2022 02:06:44| |TAN PIRATE| +|08/01/2022 02:06:44| |Cute kouhai| +|08/01/2022 02:06:45| ;_; +|08/01/2022 02:06:46| NEKO +|08/01/2022 02:06:46| |saori's harem| +|08/01/2022 02:06:47| |Thanks Saki| +|08/01/2022 02:06:48| |SEX KITTEN| +|08/01/2022 02:06:49| |TAN PIRATE| +|08/01/2022 02:06:49| want +|08/01/2022 02:06:49| NYAAA +|08/01/2022 02:06:51| |COMPASS IS CARBON COATED| +|08/01/2022 02:06:51| |>the herd| +|08/01/2022 02:06:53| |buffering again| +|08/01/2022 02:06:53| |My gamer waifu.| +|08/01/2022 02:06:53| KOT +|08/01/2022 02:06:53| |What is wrong with Yukari?| +|08/01/2022 02:06:56| |Saori is lost. The rabbits have her now.| +|08/01/2022 02:06:56| TONK +|08/01/2022 02:06:58| |I want to be lost with usagi team| +|08/01/2022 02:06:59| GAMER +|08/01/2022 02:07:00| |thanks for the soulname anon| +|08/01/2022 02:07:00| |TANK FOUND| +|08/01/2022 02:07:00| |PORSCHE TIGER| +|08/01/2022 02:07:00| gamer +|08/01/2022 02:07:01| PORSCHE +|08/01/2022 02:07:03| |I HATE THIS FAGGOT CAT SO FUCKING MUCH| +|08/01/2022 02:07:04| |FUCKING NERD| +|08/01/2022 02:07:04| /v/ermin +|08/01/2022 02:07:04| |PORSCHE TIGER| +|08/01/2022 02:07:04| |YOU'VE BEEN UNDER A TANK THIS ENTIRE TIME!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 02:07:05| nyaa... +|08/01/2022 02:07:06| |GAMER GIRLS| +|08/01/2022 02:07:06| |Gamer moment| +|08/01/2022 02:07:06| |us gamers huh| +|08/01/2022 02:07:07| |LITERALLY ME| +|08/01/2022 02:07:07| OVA +|08/01/2022 02:07:07| NEKONYAAA +|08/01/2022 02:07:07| |BEST GORL INCOMING| +|08/01/2022 02:07:08| |be still, thy beating heart| +|08/01/2022 02:07:08| |GAMERS RISE UP!| +|08/01/2022 02:07:10| nekonigger +|08/01/2022 02:07:10| |How do they move the tank| +|08/01/2022 02:07:12| TORILLE +|08/01/2022 02:07:12| |does anyone like anteater team?| +|08/01/2022 02:07:12| |no prob, gigafaggot| +|08/01/2022 02:07:12| |she gonna start a school boat shooting| +|08/01/2022 02:07:13| PERKLE +|08/01/2022 02:07:13| |Tiger P| +|08/01/2022 02:07:13| GAMERS +|08/01/2022 02:07:14| |WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GI| +|08/01/2022 02:07:14| ouch +|08/01/2022 02:07:14| ;______; +|08/01/2022 02:07:15| |Nekonya got owned| +|08/01/2022 02:07:15| |GAMER GIRL| +|08/01/2022 02:07:16| |FINS ARE CANONOICALLY STONG| +|08/01/2022 02:07:16| IGNORED...... +|08/01/2022 02:07:18| >IGNORED +|08/01/2022 02:07:19| ... +|08/01/2022 02:07:19| |fugg off neko| +|08/01/2022 02:07:20| |IGNORE NERDS| +|08/01/2022 02:07:21| |smelly gamer | +|08/01/2022 02:07:22| |filthy otaku| +|08/01/2022 02:07:23| |was it autism?| +|08/01/2022 02:07:24| |Smelly furry gamer| +|08/01/2022 02:07:24| |the most opressed race, GAMERS| +|08/01/2022 02:07:24| |GAMERS ARE SO OPPRSSED| +|08/01/2022 02:07:24| nyaaa +|08/01/2022 02:07:25| |my soul name is MFSB| +|08/01/2022 02:07:27| chickin +|08/01/2022 02:07:27| nyaaaaa +|08/01/2022 02:07:28| NEKONYA +|08/01/2022 02:07:28| CHICKENHEART +|08/01/2022 02:07:30| flat +|08/01/2022 02:07:30| |RISE UP| +|08/01/2022 02:07:31| |GAMERS ARE LITERALLY THE MOST OPPRESSED GROUP!| +|08/01/2022 02:07:33| |average /a/non| +|08/01/2022 02:07:34| NYAA~ +|08/01/2022 02:07:37| >nekonya +|08/01/2022 02:07:38| SODOKO +|08/01/2022 02:07:38| onaholes +|08/01/2022 02:07:38| SODOKOS +|08/01/2022 02:07:38| |erotic forehead| +|08/01/2022 02:07:39| ARARA +|08/01/2022 02:07:40| |gamers will never rise up| +|08/01/2022 02:07:40| |Pazomi is the best| +|08/01/2022 02:07:41| SODOKO +|08/01/2022 02:07:42| |WORST TEAM| +|08/01/2022 02:07:43| |3 sodokos| +|08/01/2022 02:07:43| clones +|08/01/2022 02:07:43| SODOKO +|08/01/2022 02:07:44| KAPPAS +|08/01/2022 02:07:46| CLONES +|08/01/2022 02:07:46| SEEEEEEEEEEEEEEEEEEEX +|08/01/2022 02:07:51| |REVEL UP| +|08/01/2022 02:07:51| |gotta make more clones| +|08/01/2022 02:07:53| CUTEOKOS +|08/01/2022 02:07:53| |Three (3) Sodokos lmao, THREE| +|08/01/2022 02:07:54| |the clone wars| +|08/01/2022 02:07:57| sodoclones +|08/01/2022 02:07:57| |POZOMI IS THE BEST KO| +|08/01/2022 02:07:57| >MOMO +|08/01/2022 02:07:58| f] +|08/01/2022 02:07:58| HAIBORIDU +|08/01/2022 02:07:59| |MALLARDS A CUTE| +|08/01/2022 02:08:00| |ara ara| +|08/01/2022 02:08:00| |ALL HALL MONITORS ARE BASTARDS| +|08/01/2022 02:08:00| |I'm going to refine Sodoko| +|08/01/2022 02:08:00| |SWEATY TOMBOYS SPOTTED| +|08/01/2022 02:08:02| Arara~ +|08/01/2022 02:08:02| ENTER +|08/01/2022 02:08:02| |Scratch that, mechanics are the best| +|08/01/2022 02:08:02| |ara ara| +|08/01/2022 02:08:03| |Here's /o/!| +|08/01/2022 02:08:04| |SHUT UP MOMO| +|08/01/2022 02:08:05| |fucking momo| +|08/01/2022 02:08:06| |CUTE BOY| +|08/01/2022 02:08:06| |BEST TEAM| +|08/01/2022 02:08:07| |MOMO HATE| +|08/01/2022 02:08:07| |based pit crew| +|08/01/2022 02:08:08| |MOMO DUMB| +|08/01/2022 02:08:08| Mexicans +|08/01/2022 02:08:08| |cute boy| +|08/01/2022 02:08:14| |>TFW no sweaty tomboy GF| +|08/01/2022 02:08:16| |WE NEED NOEL| +|08/01/2022 02:08:16| |BASED LEOPON TEAM| +|08/01/2022 02:08:16| |enemy spotted| +|08/01/2022 02:08:18| HOSHINO +|08/01/2022 02:08:19| >hybrid +|08/01/2022 02:08:20| mania +|08/01/2022 02:08:21| |I WANT HOSHINO| +|08/01/2022 02:08:23| clang! +|08/01/2022 02:08:23| EROTIC +|08/01/2022 02:08:24| |meanwhile at /his/ hq| +|08/01/2022 02:08:26| CLANG +|08/01/2022 02:08:27| RERA +|08/01/2022 02:08:29| DIldos +|08/01/2022 02:08:29| /FIT/ +|08/01/2022 02:08:30| /FIT/ +|08/01/2022 02:08:32| |Live rounds don't make that noise| +|08/01/2022 02:08:32| SPATS +|08/01/2022 02:08:34| /fit/! +|08/01/2022 02:08:34| |VENI VIDI VINCI| +|08/01/2022 02:08:35| |>american training| +|08/01/2022 02:08:36| manlet +|08/01/2022 02:08:37| |the fuck is a soul name| +|08/01/2022 02:08:37| |LIVE MUNITIONS| +|08/01/2022 02:08:38| |>one of those goes off| +|08/01/2022 02:08:38| hnnnngh +|08/01/2022 02:08:39| SPQR +|08/01/2022 02:08:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:08:39| soul +|08/01/2022 02:08:40| caesar! +|08/01/2022 02:08:44| |>ywn visit the /his/haus| +|08/01/2022 02:08:44| |SPATS UOHHHHHHH| +|08/01/2022 02:08:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +|08/01/2022 02:08:45| CLANG +|08/01/2022 02:08:45| SWEATY +|08/01/2022 02:08:46| |IMAGINE THE SMELL| +|08/01/2022 02:08:46| SPQR +|08/01/2022 02:08:46| |good training| +|08/01/2022 02:08:47| SPQR +|08/01/2022 02:08:48| eargasm +|08/01/2022 02:08:49| |SOul name is your rap anme| +|08/01/2022 02:08:50| |BEING LOADER IS HARD| +|08/01/2022 02:08:50| |How many of those shells could she fit at once?| +|08/01/2022 02:08:51| |hina chan| +|08/01/2022 02:08:51| |GAY GAY| +|08/01/2022 02:08:51| ass +|08/01/2022 02:08:54| CUTE +|08/01/2022 02:08:55| |hina chan| +|08/01/2022 02:08:56| CARPACCIO! +|08/01/2022 02:08:57| |wtf my soul name is adolf???| +|08/01/2022 02:08:57| * +|08/01/2022 02:08:58| |S P Q R| +|08/01/2022 02:08:58| |WE WANT DVCE NOT HIPPO SHIT| +|08/01/2022 02:08:59| Booba +|08/01/2022 02:09:00| * +|08/01/2022 02:09:01| |I want to sniff her ass| +|08/01/2022 02:09:07| TAKA-CHAN +|08/01/2022 02:09:08| |[HORNY LAUGHTER)| +|08/01/2022 02:09:08| SPQR +|08/01/2022 02:09:10| |hey adolf, my name is willy| +|08/01/2022 02:09:13| |so why do they live together?| +|08/01/2022 02:09:13| SPY! +|08/01/2022 02:09:14| |>Not much| +|08/01/2022 02:09:17| |SENATVS POPVLVSQVE ROMANVS| +|08/01/2022 02:09:18| |SWIGGITY SWOOTY CARPACCIOS COMING FOR THAT BOOTY| +|08/01/2022 02:09:19| CUTE +|08/01/2022 02:09:22| |>he doesn't know latin| +|08/01/2022 02:09:24| |>we don't have a lot| +|08/01/2022 02:09:26| |>DOESN'T SPEAK ITALIAN| +|08/01/2022 02:09:27| |who is taku-san?| +|08/01/2022 02:09:29| |Per tutti i camerati caduti!| +|08/01/2022 02:09:29| ITARIAN +|08/01/2022 02:09:30| AUTISM +|08/01/2022 02:09:30| ITALIAGO +|08/01/2022 02:09:32| Itarian +|08/01/2022 02:09:35| |THAT'S IT!| +|08/01/2022 02:09:36| dorkoo +|08/01/2022 02:09:37| Dekinai +|08/01/2022 02:09:38| |uh yeah we're in the rockies| +|08/01/2022 02:09:39| |>She doesn't know Italian| +|08/01/2022 02:09:44| |>you don't even know japanese| +|08/01/2022 02:09:46| Lame +|08/01/2022 02:09:49| |the power of historical game players| +|08/01/2022 02:09:50| |>pizza pasta spaghetti| +|08/01/2022 02:09:51| |tell me, why does she close the 1 eye?| +|08/01/2022 02:09:57| |>there are people in this stream who don't know latin| +|08/01/2022 02:09:58| |ONE EYE FLAT| +|08/01/2022 02:10:03| |semen in it| +|08/01/2022 02:10:03| ngmi +|08/01/2022 02:10:03| |/his/ nerds| +|08/01/2022 02:10:03| |SSaving it for nightime| +|08/01/2022 02:10:07| |THAT'S IT!| +|08/01/2022 02:10:09| |HAIL CAESAR o/| +|08/01/2022 02:10:09| |SORE DA| +|08/01/2022 02:10:11| |AY' TONE YOU MUST HEAR THIS| +|08/01/2022 02:10:13| OPENYOUREYE +|08/01/2022 02:10:17| |"RIVAL" IS THAT WHAT THE GIRLS ARE CALLING IT| +|08/01/2022 02:10:19| |SORE DA!!!!!| +|08/01/2022 02:10:20| |what's a joe ekins| +|08/01/2022 02:10:21| |SORE DA| +|08/01/2022 02:10:21| |SORE DA| +|08/01/2022 02:10:21| who? +|08/01/2022 02:10:22| |SORE DA!| +|08/01/2022 02:10:22| |SORE DA| +|08/01/2022 02:10:22| |SORE DA| +|08/01/2022 02:10:22| |sore da| +|08/01/2022 02:10:23| |SORE DA| +|08/01/2022 02:10:23| |SORE DA| +|08/01/2022 02:10:24| |SORE DA| +|08/01/2022 02:10:25| EILA +|08/01/2022 02:10:28| |literally who| +|08/01/2022 02:10:30| |>they don't know| +|08/01/2022 02:10:30| |SORE DA!| +|08/01/2022 02:10:31| |if those names existed does that mean ww2 actually happened| +|08/01/2022 02:10:38| |WHO WOULD WIN: PANZER ACE OR BRIT SHOE FACTORY WORKER?| +|08/01/2022 02:10:39| |SEGRETO :DDDDDDDD| +|08/01/2022 02:10:40| PIYOPIYO +|08/01/2022 02:10:40| pyu +|08/01/2022 02:10:42| |AZUSA ON SCREEN| +|08/01/2022 02:10:42| |N O R I K O| +|08/01/2022 02:10:42| |Joseph William Ekins was a World War II British Army veteran. He gained recognition for his action as a tank gunner in France in which he de| +|08/01/2022 02:10:43| |pyon pyon machi| +|08/01/2022 02:10:44| |PIYO PIYP| +|08/01/2022 02:10:49| |Just got off work, what episode are we on?| +|08/01/2022 02:10:56| |Like 8 something| +|08/01/2022 02:10:56| |anzio OVA| +|08/01/2022 02:10:56| Anzio +|08/01/2022 02:11:01| |ep 7/anzio OVA| +|08/01/2022 02:11:02| |This is OVA7| +|08/01/2022 02:11:06| |Lonely text| +|08/01/2022 02:11:10| |>Ankou-team >heavy tank| +|08/01/2022 02:11:11| |still first, no ed yet| +|08/01/2022 02:11:11| |very lonely| +|08/01/2022 02:11:14| |That's no Sheridan, it's a T-80| +|08/01/2022 02:11:16| |hi lonely im dad| +|08/01/2022 02:11:17| |tfw no gf| +|08/01/2022 02:11:21| |PIYO PIYO| +|08/01/2022 02:11:32| |damn how long is this going to be| +|08/01/2022 02:11:33| |More like PU| +|08/01/2022 02:11:36| |Okay I *have* to take pills, jaw is killing me| +|08/01/2022 02:11:36| yes +|08/01/2022 02:11:40| GUTS +|08/01/2022 02:11:40| |evade? in our moment of victory?| +|08/01/2022 02:11:43| >MISSED +|08/01/2022 02:11:44| | can someone do the maths| +|08/01/2022 02:11:45| meds +|08/01/2022 02:11:47| |wow momo can't hit shit| +|08/01/2022 02:11:48| |Aren't we legit going to pee what the fuck| +|08/01/2022 02:11:50| UTE +|08/01/2022 02:11:51| |no meds| +|08/01/2022 02:11:52| |Ugh guys I think I'm gonna need to change my thong, brb| +|08/01/2022 02:11:53| |should be about 7-8 hours left| +|08/01/2022 02:11:57| >momo +|08/01/2022 02:11:59| |momo fucking sucks| +|08/01/2022 02:11:59| |>Needing to pee| +|08/01/2022 02:11:59| |MOMO YOU MISSED| +|08/01/2022 02:12:02| >momo +|08/01/2022 02:12:02| |I HATE MOMO I HATE MOMO | +|08/01/2022 02:12:02| |momo can't hit shit| +|08/01/2022 02:12:02| |piss on the floor| +|08/01/2022 02:12:04| |MOMO YOU RETARD| +|08/01/2022 02:12:04| >thong +|08/01/2022 02:12:06| AzUSA +|08/01/2022 02:12:06| |pee in momo's mouth| +|08/01/2022 02:12:06| |Holy shit momo| +|08/01/2022 02:12:08| |GAS GAS GAS| +|08/01/2022 02:12:08| |MANKO HAYAI| +|08/01/2022 02:12:09| |REMEMBER TO TAKE YOUR ESTROGEN SISTERS| +|08/01/2022 02:12:09| |Store more pee in your balls| +|08/01/2022 02:12:11| |MOMO SUCKS| +|08/01/2022 02:12:13| |Guys I need to change my bra, brb| +|08/01/2022 02:12:19| |they can't pee in the tank so why should you| +|08/01/2022 02:12:21| |MANKO DOCCHI| +|08/01/2022 02:12:24| |remember to take your APDSFS amigos| +|08/01/2022 02:12:30| BONK +|08/01/2022 02:12:33| |mirage tank| +|08/01/2022 02:12:36| test +|08/01/2022 02:12:40| test +|08/01/2022 02:12:40| |you failed| +|08/01/2022 02:12:41| pass +|08/01/2022 02:12:42| test +|08/01/2022 02:12:42| |TEST FAILED| +|08/01/2022 02:12:44| |Stug lyfe| +|08/01/2022 02:12:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:12:49| |what are we drinking tonight bois?| +|08/01/2022 02:12:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:12:52| |testing testing....mic check| +|08/01/2022 02:12:56| WATER +|08/01/2022 02:12:56| |IMAGINE IF YOU WERE TO BE KILLED FROM THAT RANGE. THAT'LL NEVER HAPPEN.| +|08/01/2022 02:12:59| |It'll never happen| +|08/01/2022 02:12:59| |Asahi as usual for me| +|08/01/2022 02:13:01| |Mile long shot| +|08/01/2022 02:13:01| |HELLO CAN YOU HEAR ME| +|08/01/2022 02:13:02| eggnog +|08/01/2022 02:13:03| |Tea now, rum later| +|08/01/2022 02:13:03| |>I didn't choose the StuG life, I was drafted by the wehrmacht| +|08/01/2022 02:13:08| |miho doesn't even blink holy shit| +|08/01/2022 02:13:10| |ONTARIO WILL BE FUCKING NUKED| +|08/01/2022 02:13:11| |Aim for her hea| +|08/01/2022 02:13:12| |History club >>>>>>| +|08/01/2022 02:13:12| |strenght training| +|08/01/2022 02:13:13| |jesus christ get inside| +|08/01/2022 02:13:13| fearless +|08/01/2022 02:13:14| >subs +|08/01/2022 02:13:14| |Best girl| +|08/01/2022 02:13:15| |Beer and vodka atm| +|08/01/2022 02:13:16| a +|08/01/2022 02:13:17| |Thousand mile stare| +|08/01/2022 02:13:18| |carbon coating fears none| +|08/01/2022 02:13:19| |This little training montage is great| +|08/01/2022 02:13:20| |SOne-eyed miho | +|08/01/2022 02:13:24| |sugoi subs| +|08/01/2022 02:13:24| |SOMEWHERE THE WHITE WITCH IS WATCHING| +|08/01/2022 02:13:25| |carbon coated confidence| +|08/01/2022 02:13:29| ontariobros... +|08/01/2022 02:13:29| GUTS +|08/01/2022 02:13:29| |*Stone eyed| +|08/01/2022 02:13:29| rekt +|08/01/2022 02:13:31| OUTSKILLED +|08/01/2022 02:13:32| |X X| +|08/01/2022 02:13:33| |shoot me again fuckers| +|08/01/2022 02:13:34| OBLITERATED +|08/01/2022 02:13:36| |XX - - @ @| +|08/01/2022 02:13:38| GUTS +|08/01/2022 02:13:42| |GAS GAS GAS| +|08/01/2022 02:13:43| GUTS +|08/01/2022 02:13:43| LOUDER +|08/01/2022 02:13:45| GUTS +|08/01/2022 02:13:45| GUTS +|08/01/2022 02:13:47| GUTS +|08/01/2022 02:13:47| GUTS +|08/01/2022 02:13:47| |GATSU GATSU GATSU| +|08/01/2022 02:13:47| GUTS +|08/01/2022 02:13:47| GUTS +|08/01/2022 02:13:47| GUTS! +|08/01/2022 02:13:48| |Based Anzu| +|08/01/2022 02:13:48| GUTS +|08/01/2022 02:13:48| GATTSU +|08/01/2022 02:13:48| GUTS +|08/01/2022 02:13:48| |GUTS DO YOU HAVE IT| +|08/01/2022 02:13:48| GUTS!! +|08/01/2022 02:13:49| GUTS +|08/01/2022 02:13:49| GUTS +|08/01/2022 02:13:50| |>duck team >brains| +|08/01/2022 02:13:50| GUTS +|08/01/2022 02:13:50| GUTS +|08/01/2022 02:13:51| GATSU +|08/01/2022 02:13:52| GUTS +|08/01/2022 02:13:53| |HAI YAI FORCES| +|08/01/2022 02:13:53| |HAYAI FORCE| +|08/01/2022 02:13:54| FASTER +|08/01/2022 02:13:57| MIURA +|08/01/2022 02:13:58| |Running in the 40s| +|08/01/2022 02:13:59| GRRRIIIIIIFFFFFFIIIIITHHHHHHH +|08/01/2022 02:14:02| |based anzu| +|08/01/2022 02:14:04| FORCESMIND... +|08/01/2022 02:14:06| DEJA'VU +|08/01/2022 02:14:08| dorks +|08/01/2022 02:14:09| |Was thtas useful at all for the bunnies?| +|08/01/2022 02:14:10| |MY LOVE FOR YOU IS LIKE A TRUCK| +|08/01/2022 02:14:12| PASTA +|08/01/2022 02:14:13| |BUTTER !| +|08/01/2022 02:14:15| butter +|08/01/2022 02:14:16| BERSERKER +|08/01/2022 02:14:17| bERSERKERERRR +|08/01/2022 02:14:20| |Sorry... I'm peeing myself| +|08/01/2022 02:14:20| BERSERKER +|08/01/2022 02:14:21| |>Using tanks are racing cars| +|08/01/2022 02:14:22| |slice of life time| +|08/01/2022 02:14:24| ITALIA +|08/01/2022 02:14:24| ded +|08/01/2022 02:14:26| |NICE ITALIAN BISTRO| +|08/01/2022 02:14:26| |RAEP RAEP| +|08/01/2022 02:14:29| |PUT YOUR GRASSES ON| +|08/01/2022 02:14:29| WEW +|08/01/2022 02:14:29| |DO YOU WANT TO MAKING FUCK?| +|08/01/2022 02:14:32| um...... +|08/01/2022 02:14:32| |are we watching yukari corner?| +|08/01/2022 02:14:33| |WAKE ME UP INSIDE| +|08/01/2022 02:14:34| |maho pee| +|08/01/2022 02:14:35| |my poop is getting carbon coated from holding it so long| +|08/01/2022 02:14:36| BERSERKER +|08/01/2022 02:14:37| |she's me| +|08/01/2022 02:14:38| |Kanata pls4| +|08/01/2022 02:14:39| |>he doesn't use a diaper| +|08/01/2022 02:14:40| feet +|08/01/2022 02:14:41| umaaaaaaaaaaaaaaaaaa +|08/01/2022 02:14:41| |MANKO FEET| +|08/01/2022 02:14:42| |Yeah, Tank courses after stream| +|08/01/2022 02:14:43| FEET +|08/01/2022 02:14:43| feet +|08/01/2022 02:14:43| |rip in piece mako| +|08/01/2022 02:14:44| |I WANT TO SNIFF HER FEET| +|08/01/2022 02:14:44| |THIS DRIVER IS DEAD| +|08/01/2022 02:14:44| feet +|08/01/2022 02:14:45| |PRONE BONE| +|08/01/2022 02:14:45| |oh great, she's dead| +|08/01/2022 02:14:45| |bare feet| +|08/01/2022 02:14:46| >feet +|08/01/2022 02:14:47| UUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHH +|08/01/2022 02:14:47| |PRONE BONE| +|08/01/2022 02:14:49| |did he say making fuck? | +|08/01/2022 02:14:49| Me +|08/01/2022 02:14:49| |Mako-san that's not a kotatsu| +|08/01/2022 02:14:56| >Ham +|08/01/2022 02:14:57| |make sure your toilet is carbon coated| +|08/01/2022 02:15:01| ehhh +|08/01/2022 02:15:04| |>doesn't watch the stream from hsi toilet the entire time| +|08/01/2022 02:15:06| ;___; +|08/01/2022 02:15:07| hammu +|08/01/2022 02:15:07| |Saori should be strict with me| +|08/01/2022 02:15:07| |Saori the Ham| +|08/01/2022 02:15:08| |Europeans breaking our circadian rhythm| +|08/01/2022 02:15:09| |becoming ham| +|08/01/2022 02:15:09| |RIP my circadian rhythm| +|08/01/2022 02:15:12| |BECOME HAM| +|08/01/2022 02:15:13| |she already is| +|08/01/2022 02:15:15| |cute glasses| +|08/01/2022 02:15:16| |THIGHS! HAM!| +|08/01/2022 02:15:17| |my 5 wives | +|08/01/2022 02:15:18| MEGANE +|08/01/2022 02:15:20| |So when are we buying our tank, guys?| +|08/01/2022 02:15:20| |>not animated | +|08/01/2022 02:15:21| |>SAORI PICKING UP 50 YO MEN ON THE HAM RADIO| +|08/01/2022 02:15:21| |My poopp was so carbon caoted it cloggec the toilet| +|08/01/2022 02:15:22| |I dont want to see Yukari cry| +|08/01/2022 02:15:23| Aprons! +|08/01/2022 02:15:23| |THEY MAY TAKE OUR LIVES BUT THEY'LL NEVER TAKE OUR GRIFFISU| +|08/01/2022 02:15:24| moooooooooooot +|08/01/2022 02:15:24| |ROGER SMITH NO| +|08/01/2022 02:15:24| |cicada rhythm| +|08/01/2022 02:15:25| |reject tank become ham| +|08/01/2022 02:15:26| |SAORI PLEASE BE MY HOUSEWIFE| +|08/01/2022 02:15:27| |CUTE MEGANE| +|08/01/2022 02:15:30| |RIP AND TEAR| +|08/01/2022 02:15:30| |does water actually stop onions from making you cry| +|08/01/2022 02:15:30| |What the fuck is this shit they're calling "food"| +|08/01/2022 02:15:32| |RIP AND TEAR| +|08/01/2022 02:15:35| |STOP TALKING ABOUT POOP| +|08/01/2022 02:15:36| |cute fish| +|08/01/2022 02:15:38| UOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:15:38| |all ready for sora no woto| +|08/01/2022 02:15:38| |Took meds and got more pizza| +|08/01/2022 02:15:39| |>TFW ITLL BE 8AM FOR ME WHEN THIS FINISHES| +|08/01/2022 02:15:40| |is there a god in this universe| +|08/01/2022 02:15:40| |Big Bath!| +|08/01/2022 02:15:40| |Why not make good cuisine, like British?| +|08/01/2022 02:15:41| ToT +|08/01/2022 02:15:41| ToT +|08/01/2022 02:15:41| |Fuck, I want carpaccio| +|08/01/2022 02:15:42| ToT +|08/01/2022 02:15:45| |caprese is good| +|08/01/2022 02:15:46| |I wish I had food ;________;| +|08/01/2022 02:15:46| |UOHHHHH ToT| +|08/01/2022 02:15:46| ToT +|08/01/2022 02:15:49| IKADEKIMASU +|08/01/2022 02:15:49| |which gup poop would you| +|08/01/2022 02:15:50| |did the voices go away anon?| +|08/01/2022 02:15:51| ITADAKIMASU +|08/01/2022 02:15:51| |THEY ARE LITTLE GIRLS YOU SICK FUCKS| +|08/01/2022 02:15:51| |>british cuisine| +|08/01/2022 02:15:52| |POOP POOP POOP POOP POOP| +|08/01/2022 02:15:52| |eat a duck he must| +|08/01/2022 02:15:53| |momo's momos| +|08/01/2022 02:15:54| UOHHHHHH +|08/01/2022 02:15:54| |NO SEAMS| +|08/01/2022 02:15:55| WEW +|08/01/2022 02:15:55| FLAT +|08/01/2022 02:15:55| |Anons, I'm getting tipsy| +|08/01/2022 02:15:56| Momouuuoooghhh +|08/01/2022 02:15:57| uooooooooooooohhhhhhhhhhhhh +|08/01/2022 02:15:58| TIDDIES +|08/01/2022 02:15:59| FLAT +|08/01/2022 02:15:59| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:15:59| |guppie soup...| +|08/01/2022 02:16:00| UOHHHHHHH +|08/01/2022 02:16:00| |NAKED BUNNIES| +|08/01/2022 02:16:01| |small gupies| +|08/01/2022 02:16:01| nice +|08/01/2022 02:16:01| |why wasn't I born in the GuP universe ....| +|08/01/2022 02:16:01| BOOBA +|08/01/2022 02:16:01| |BATH SCENE 2 LETS GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 02:16:02| service +|08/01/2022 02:16:03| |Rabbit stew| +|08/01/2022 02:16:03| |thanks god for giving me vision| +|08/01/2022 02:16:03| BOOBA +|08/01/2022 02:16:03| |stay hydrated| +|08/01/2022 02:16:04| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:04| UUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:04| |AZUSA ON SCREEN| +|08/01/2022 02:16:05| UOHHHHHHH +|08/01/2022 02:16:05| |stand up| +|08/01/2022 02:16:05| |I'm pretty sure these girls don't poop| +|08/01/2022 02:16:05| |D F C| +|08/01/2022 02:16:06| Nice +|08/01/2022 02:16:06| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:07| |Miho back| +|08/01/2022 02:16:07| |UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHH ToT| +|08/01/2022 02:16:07| |ANZU CHEST!| +|08/01/2022 02:16:07| |UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHH ANZU| +|08/01/2022 02:16:08| |THIS CUT MAKES NO SENSE| +|08/01/2022 02:16:08| COOOOMING +|08/01/2022 02:16:09| |UOOOOOH ANZU'S DFC| +|08/01/2022 02:16:09| ERECT +|08/01/2022 02:16:09| |A BOARD| +|08/01/2022 02:16:10| |holy shit anzu is so flat| +|08/01/2022 02:16:10| UOOOOOOOOOOOOOOOHHHHHH +|08/01/2022 02:16:11| |cunny soup| +|08/01/2022 02:16:13| YEAAAAAAAAAAa +|08/01/2022 02:16:13| UUUUUOOOOOHHHHHHHHH +|08/01/2022 02:16:14| aaah +|08/01/2022 02:16:14| |Talking about poop on a pasta ova is a british plot, keep your guard up| +|08/01/2022 02:16:15| UHOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:16| NAKED +|08/01/2022 02:16:17| lol +|08/01/2022 02:16:17| BIG +|08/01/2022 02:16:18| |erwin likes what she sees| +|08/01/2022 02:16:18| uooooooooooohhhhhhhhhhhhhhhhhhhhhh +|08/01/2022 02:16:19| SABISU~~SABISUU +|08/01/2022 02:16:20| |MIHO'S FAT ASS| +|08/01/2022 02:16:20| |SEGGS SEGGS SEGGS SEGGS| +|08/01/2022 02:16:20| |UOOOOOOOOOOOOOOOOOOOOOOHHHHH :_;| +|08/01/2022 02:16:21| UUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHh +|08/01/2022 02:16:22| UOOOOOOOOOHHHHHH +|08/01/2022 02:16:22| wew +|08/01/2022 02:16:23| WOOOOOOOOO +|08/01/2022 02:16:23| |Erwin sees| +|08/01/2022 02:16:23| |naked miho| +|08/01/2022 02:16:24| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:24| ENF! +|08/01/2022 02:16:24| |Pour one out for the blind anons out there| +|08/01/2022 02:16:24| |FULL FRONTAL| +|08/01/2022 02:16:25| |OFF SCREENED | +|08/01/2022 02:16:26| o/ +|08/01/2022 02:16:26| UOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:16:26| LEWD +|08/01/2022 02:16:26| NAISU +|08/01/2022 02:16:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:27| |MIC WHY| +|08/01/2022 02:16:27| Shameless +|08/01/2022 02:16:28| |>skipped batttle scene| +|08/01/2022 02:16:28| |Anzu's boobs are on the negative plane| +|08/01/2022 02:16:29| ooooooooooooooooooooooooooooooooh +|08/01/2022 02:16:31| Sleepy +|08/01/2022 02:16:31| |AIIIIIIIIIIIEEEEEEEEE MY ITALIAN TANKS| +|08/01/2022 02:16:32| JOBBERS +|08/01/2022 02:16:32| |that was quicker than me in bed| +|08/01/2022 02:16:32| OOOOOOOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGGGGGGGGGGGGGGGGGGGG +|08/01/2022 02:16:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:33| RIGGED +|08/01/2022 02:16:33| anziobros... +|08/01/2022 02:16:33| |WHAT THE FUCK| +|08/01/2022 02:16:34| DVCE! +|08/01/2022 02:16:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvvv| +|08/01/2022 02:16:35| DUCE +|08/01/2022 02:16:35| |Well that was quick| +|08/01/2022 02:16:35| DUCE +|08/01/2022 02:16:35| duce... +|08/01/2022 02:16:36| |miho's rallying tits| +|08/01/2022 02:16:36| |yall dvces is late| +|08/01/2022 02:16:36| wait +|08/01/2022 02:16:37| JOBBED +|08/01/2022 02:16:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:37| |Spoiling the next episode| +|08/01/2022 02:16:38| RIGGED +|08/01/2022 02:16:38| |DUCE REKT| +|08/01/2022 02:16:38| SPOILER +|08/01/2022 02:16:38| dvcebros.... +|08/01/2022 02:16:38| |Oops I fucked up| +|08/01/2022 02:16:39| |DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! DVCE OFFSCREEED! | +|08/01/2022 02:16:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +|08/01/2022 02:16:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:39| |ANZIO BTFO| +|08/01/2022 02:16:40| |DUCE DUCE DUCE DUCE| +|08/01/2022 02:16:40| SKIPPED +|08/01/2022 02:16:40| |No match? What?| +|08/01/2022 02:16:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:41| |WE GOT TOO COCKY ANZIOBROS| +|08/01/2022 02:16:41| |Duce... | +|08/01/2022 02:16:42| |Nice supercut faggots| +|08/01/2022 02:16:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:16:44| |DUCE IS FUCKING DEAD| +|08/01/2022 02:16:44| |>not spliced in| +|08/01/2022 02:16:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +|08/01/2022 02:16:45| |wtf why wasn't it spliced in?| +|08/01/2022 02:16:46| SKIPPED +|08/01/2022 02:16:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:47| DUCE? +|08/01/2022 02:16:47| |JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +|08/01/2022 02:16:48| SPOILER +|08/01/2022 02:16:48| |MIHO SAMA I KNEEL PLEASE DONT SHOOT MY SHITALIAN TANKS| +|08/01/2022 02:16:48| |OH BOY I WONDER WHO WILL WIN| +|08/01/2022 02:16:48| SEAMLESS +|08/01/2022 02:16:49| |SPOILERS WTF| +|08/01/2022 02:16:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvv| +|08/01/2022 02:16:50| |why does the supercut show the end first?| +|08/01/2022 02:16:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:50| Duce.... +|08/01/2022 02:16:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:52| |Weird editing| +|08/01/2022 02:16:53| SEAMLESS +|08/01/2022 02:16:54| |SKIPPED LOL| +|08/01/2022 02:16:54| |what is this cut| +|08/01/2022 02:16:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE v| +|08/01/2022 02:16:54| |WITHOUT SEAMS| +|08/01/2022 02:16:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:55| |weird cut| +|08/01/2022 02:16:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:55| |JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +|08/01/2022 02:16:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:56| DUCE +|08/01/2022 02:16:57| FLAT +|08/01/2022 02:16:57| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:16:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:16:58| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:16:58| SPOLILED +|08/01/2022 02:16:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:16:59| |THE FUCK WAS THAT CUT| +|08/01/2022 02:17:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vvvvvv| +|08/01/2022 02:17:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:01| |DUCE DUCE DUCE| +|08/01/2022 02:17:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:01| |>EDITOR-KUN FUCKED UP| +|08/01/2022 02:17:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:02| |i love the little clap hana and yukari have| +|08/01/2022 02:17:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:02| |DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:03| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:05| |cool edit| +|08/01/2022 02:17:05| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:17:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:06| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:07| |what just happened... | +|08/01/2022 02:17:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:08| |editor is FIRED| +|08/01/2022 02:17:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:10| |DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:10| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:17:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE| +|08/01/2022 02:17:10| |CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +|08/01/2022 02:17:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:12| |JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS JOBBERS| +|08/01/2022 02:17:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:13| CHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKOCHOBIKO +|08/01/2022 02:17:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:17:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:16| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:17:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:16| ANCHOVY +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:18| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:17:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:20| |im confuse| +|08/01/2022 02:17:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:21| |WHAT DUCE LOST!?!?!?!?!?!| +|08/01/2022 02:17:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:22| |HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR HANG THE EDITOR| +|08/01/2022 02:17:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:23| gay +|08/01/2022 02:17:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:24| |CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +|08/01/2022 02:17:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:27| |JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE JOBBIE | +|08/01/2022 02:17:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 02:17:29| INTERLOCKED +|08/01/2022 02:17:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:30| DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +|08/01/2022 02:17:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:31| |CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +|08/01/2022 02:17:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:32| DUCE +|08/01/2022 02:17:32| BIG +|08/01/2022 02:17:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:33| O.O +|08/01/2022 02:17:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:34| CUTE +|08/01/2022 02:17:34| Hina-chan! +|08/01/2022 02:17:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:35| |HINA CHAN| +|08/01/2022 02:17:35| |Chubby child| +|08/01/2022 02:17:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:35| |CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOBIKO CHOB| +|08/01/2022 02:17:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:36| gayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +|08/01/2022 02:17:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:17:37| GAAAAAAAAAAAAAAAAAYYYYYYYYYYYYYYYYYYYYYY +|08/01/2022 02:17:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:38| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 02:17:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +|08/01/2022 02:17:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:40| taka-chan!!!!!! +|08/01/2022 02:17:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:17:40| lesbians +|08/01/2022 02:17:42| |LEZ MOMENT| +|08/01/2022 02:17:42| |who is taka| +|08/01/2022 02:17:42| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:17:42| HISASHIBURI +|08/01/2022 02:17:43| |Roman dykery| +|08/01/2022 02:17:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:17:45| HINA-CHAN!!!!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 02:17:46| GAAAYYYY +|08/01/2022 02:17:47| |lewd handholding| +|08/01/2022 02:17:47| SOUL +|08/01/2022 02:17:49| |YURI YURI YURI| +|08/01/2022 02:17:50| |Cute "friends"| +|08/01/2022 02:17:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE vv| +|08/01/2022 02:17:52| hayamin... +|08/01/2022 02:17:52| |bye taka chan| +|08/01/2022 02:17:52| |ONE DIES TODAY| +|08/01/2022 02:17:52| |we want dvce not other italien| +|08/01/2022 02:17:54| |/u/fags >>>out| +|08/01/2022 02:17:54| |definitely lesbians| +|08/01/2022 02:17:54| gays +|08/01/2022 02:17:55| |Big gay energy| +|08/01/2022 02:17:55| Taka-chan +|08/01/2022 02:17:57| |Yuri time| +|08/01/2022 02:18:00| |How do two girls have sex in a tank?| +|08/01/2022 02:18:01| |huuuu huuu| +|08/01/2022 02:18:01| |>FAILED RP| +|08/01/2022 02:18:01| CUTE! +|08/01/2022 02:18:02| |TOMODACHI ;_;| +|08/01/2022 02:18:03| |So gay | +|08/01/2022 02:18:03| |ahhhhh cute| +|08/01/2022 02:18:04| |hue hue~| +|08/01/2022 02:18:04| |don't hold hands thats how you get pregnant| +|08/01/2022 02:18:06| |>blonde >green eyes| +|08/01/2022 02:18:06| Cute +|08/01/2022 02:18:07| |hue hue| +|08/01/2022 02:18:07| |AVE TRUE TO CAESER| +|08/01/2022 02:18:09| OTP +|08/01/2022 02:18:09| |BAI BAI| +|08/01/2022 02:18:09| CUTE +|08/01/2022 02:18:09| baibai +|08/01/2022 02:18:09| |Bye bye!| +|08/01/2022 02:18:10| |best seiyuu| +|08/01/2022 02:18:10| |Bye Bye| +|08/01/2022 02:18:10| |bai bai| +|08/01/2022 02:18:10| |LESBIAN SEX| +|08/01/2022 02:18:11| |bye bye| +|08/01/2022 02:18:11| |HUE HUE HUE| +|08/01/2022 02:18:13| |TAKA CHAN| +|08/01/2022 02:18:13| |fooo fooo| +|08/01/2022 02:18:14| |failed rp lmao| +|08/01/2022 02:18:14| TAKACHAN +|08/01/2022 02:18:15| AVE +|08/01/2022 02:18:16| taka-chan +|08/01/2022 02:18:16| |hyu hyu| +|08/01/2022 02:18:16| |FRIEND FOOTBALL FRIEND| +|08/01/2022 02:18:17| taka-chan +|08/01/2022 02:18:17| HUEHUEHUE +|08/01/2022 02:18:17| |bai bai| +|08/01/2022 02:18:18| DVCE +|08/01/2022 02:18:19| |hyu hyu| +|08/01/2022 02:18:19| |HYU HYU| +|08/01/2022 02:18:21| |kyu kyu| +|08/01/2022 02:18:22| adorbs +|08/01/2022 02:18:22| |cute friends| +|08/01/2022 02:18:23| |GOD CARPACCIO IS MADE FOR BREEDING| +|08/01/2022 02:18:23| cute +|08/01/2022 02:18:24| |i bet oryou smells like cheese| +|08/01/2022 02:18:24| |Yuri shall conquer the worldo| +|08/01/2022 02:18:24| AVANTI +|08/01/2022 02:18:24| |panzer iv| +|08/01/2022 02:18:25| |panza vor| +|08/01/2022 02:18:25| |TOOT TOOOT| +|08/01/2022 02:18:25| AVANTI +|08/01/2022 02:18:25| |panzer who?| +|08/01/2022 02:18:26| |Pantsu VOR | +|08/01/2022 02:18:26| |PANZER FOUR| +|08/01/2022 02:18:27| |Panter Panties 4| +|08/01/2022 02:18:27| AVANTJII +|08/01/2022 02:18:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:27| AVANTI +|08/01/2022 02:18:29| *sip* +|08/01/2022 02:18:29| |cute girls| +|08/01/2022 02:18:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:18:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:33| |Yuri shal conquer the worldo| +|08/01/2022 02:18:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:36| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 02:18:36| PASTA +|08/01/2022 02:18:36| |PANZER VOR PANZER VOR| +|08/01/2022 02:18:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:37| ZUCCHINI +|08/01/2022 02:18:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:18:39| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:39| DUCE +|08/01/2022 02:18:40| |PANZER VOR| +|08/01/2022 02:18:40| |PANTSU VOR| +|08/01/2022 02:18:40| |PANZER VOR| +|08/01/2022 02:18:41| |PANZER VOR| +|08/01/2022 02:18:42| |I'd go for some pasta now| +|08/01/2022 02:18:43| AVANTI +|08/01/2022 02:18:43| |PANZER VOR| +|08/01/2022 02:18:44| |panzer vor!| +|08/01/2022 02:18:45| AVANTI!!!!!!!!!!! +|08/01/2022 02:18:45| AVANTI! +|08/01/2022 02:18:45| AVANTI +|08/01/2022 02:18:45| |o/ for DVCE| +|08/01/2022 02:18:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:47| |PANZER VOR| +|08/01/2022 02:18:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:47| |PANTSU FOR| +|08/01/2022 02:18:48| yosh +|08/01/2022 02:18:48| AVANTI +|08/01/2022 02:18:49| |Panzer dez this nuts| +|08/01/2022 02:18:49| AVANTI +|08/01/2022 02:18:49| |Avanti means susume| +|08/01/2022 02:18:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:18:50| AVANTI +|08/01/2022 02:18:50| AVANTI +|08/01/2022 02:18:51| |FIAMME NERE| +|08/01/2022 02:18:52| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCE| +|08/01/2022 02:18:53| PASTA +|08/01/2022 02:18:53| |WE GOT THIS ONE IN THE BAG ANZIO BROS| +|08/01/2022 02:18:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:54| BAKARONI +|08/01/2022 02:18:55| DUCE +|08/01/2022 02:18:56| Macaroni? +|08/01/2022 02:18:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:18:58| |Goddamnit this is making me hungry | +|08/01/2022 02:18:58| |FOR THE PASTA| +|08/01/2022 02:18:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:18:59| |What does panzer vor mean?| +|08/01/2022 02:18:59| tanketes.... +|08/01/2022 02:18:59| bakaroni +|08/01/2022 02:19:01| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:19:02| |ANZIO HAS SPIRIT| +|08/01/2022 02:19:06| EWHat +|08/01/2022 02:19:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:19:08| |MAMA MIA| +|08/01/2022 02:19:09| |ANZIOBROS GIVE THEM YOUR ENERGY| +|08/01/2022 02:19:11| BAKARONI +|08/01/2022 02:19:11| |UOOH TANKETTES | +|08/01/2022 02:19:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:19:13| bufferoni +|08/01/2022 02:19:13| OKAY +|08/01/2022 02:19:13| |i cooka da pizza| +|08/01/2022 02:19:14| buffering +|08/01/2022 02:19:15| delicious +|08/01/2022 02:19:17| |Panzer vor means "penetrate me"| +|08/01/2022 02:19:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:19:18| |reminder than anchovy's lil bro is fucking EVERYONE in anzio| +|08/01/2022 02:19:22| bufferoni +|08/01/2022 02:19:22| |hard buffers| +|08/01/2022 02:19:24| |IT'S ANZIO'S YEAR| +|08/01/2022 02:19:25| |cute bakas| +|08/01/2022 02:19:27| buff +|08/01/2022 02:19:29| |Leave macaroni alone| +|08/01/2022 02:19:30| |rip stream| +|08/01/2022 02:19:31| |GET THE CARDBOARDS GET THE CARDBOARDS| +|08/01/2022 02:19:32| sbuffghetti +|08/01/2022 02:19:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:19:37| |Operation Macaroni and cheese| +|08/01/2022 02:19:37| |Nice powerpoint bro| +|08/01/2022 02:19:38| |this is our year ducebros!| +|08/01/2022 02:19:43| |WHOA THAT'S A LOTTA TANKS| +|08/01/2022 02:19:44| |UYOHHHH IM GONNA BOOOOOOOOFER| +|08/01/2022 02:19:44| |I just maid some Macaronni| +|08/01/2022 02:19:45| |Get the Pizza boxs| +|08/01/2022 02:19:46| |Piaggio Tanks| +|08/01/2022 02:19:53| UTE +|08/01/2022 02:19:53| |dumb pepperoni put all the cardboards out| +|08/01/2022 02:19:56| totsugeki? +|08/01/2022 02:20:00| totsugeki! +|08/01/2022 02:20:02| |are tank battles like this irl| +|08/01/2022 02:20:03| TOTSUGEKI +|08/01/2022 02:20:03| TOTSUGEKI +|08/01/2022 02:20:03| TOTSUGEKI! +|08/01/2022 02:20:05| totsugeki! +|08/01/2022 02:20:05| |SOMEONE SAY TOTSUGEKI| +|08/01/2022 02:20:05| TOTSUGEKI +|08/01/2022 02:20:06| TOTSUGEKI +|08/01/2022 02:20:06| TOTSUGEKI +|08/01/2022 02:20:06| |So how do they decide how many tanks a team can use, is it a point based system?| +|08/01/2022 02:20:07| TOTSUGEKI +|08/01/2022 02:20:07| yeah +|08/01/2022 02:20:09| |shut up momo| +|08/01/2022 02:20:10| TOTSUGEKIIIIIII +|08/01/2022 02:20:11| TOTSUGEKI +|08/01/2022 02:20:11| |Is Macaronni made of acrdboard?| +|08/01/2022 02:20:13| Maybe +|08/01/2022 02:20:14| LAGGEKI +|08/01/2022 02:20:14| |shitty buffering| +|08/01/2022 02:20:14| |T O T S U G E K I| +|08/01/2022 02:20:15| |No they are NOT like this IRL| +|08/01/2022 02:20:20| |Can confirm tank battles are like this| +|08/01/2022 02:20:21| BUFFERING +|08/01/2022 02:20:22| |STOP BUFFERING| +|08/01/2022 02:20:23| buffering..... +|08/01/2022 02:20:24| |they are exactly like this irl| +|08/01/2022 02:20:26| s +|08/01/2022 02:20:26| BUFFERONI +|08/01/2022 02:20:28| SHAFTED +|08/01/2022 02:20:28| buffering... +|08/01/2022 02:20:29| buff +|08/01/2022 02:20:29| FUG +|08/01/2022 02:20:30| |its a flat number. 10 - 15 tanks| +|08/01/2022 02:20:31| BUFFERING +|08/01/2022 02:20:32| |PRE-RECORDED BUFFERING| +|08/01/2022 02:20:34| |it's an accurate depiction| +|08/01/2022 02:20:34| F +|08/01/2022 02:20:34| |aaaa im boofering| +|08/01/2022 02:20:35| |pastas too fat, stream needs to buffer| +|08/01/2022 02:20:36| BZZZZZZZZZZZZZZZZ +|08/01/2022 02:20:36| |>Anzio so poor, they can't afford live stream| +|08/01/2022 02:20:44| |pause for a second| +|08/01/2022 02:20:46| |Good to know the bufferring isn't just me| +|08/01/2022 02:20:48| siesta +|08/01/2022 02:20:51| |STOP DOWNLOADING DOLPHIN PORN OP| +|08/01/2022 02:20:51| |nowit's fine| +|08/01/2022 02:20:52| |WERKS | +|08/01/2022 02:20:53| FASTER +|08/01/2022 02:20:54| HAYIA +|08/01/2022 02:20:55| |GO FASTER| +|08/01/2022 02:20:56| |GAS GAS GAS| +|08/01/2022 02:20:57| \UNWERK +|08/01/2022 02:21:00| |we all suffer together| +|08/01/2022 02:21:00| |can you pause it i gtg real quick| +|08/01/2022 02:21:01| AZUSA +|08/01/2022 02:21:08| |SHE WANTS TO GO FASTER?!?!| +|08/01/2022 02:21:14| |dumb rabbits| +|08/01/2022 02:21:17| |>Yfw I can't hold all these frames| +|08/01/2022 02:21:19| |sasuga anzio desu ne| +|08/01/2022 02:21:20| dvce +|08/01/2022 02:21:21| |If I had a tank for every pixel on the stream I'd have Anzio| +|08/01/2022 02:21:22| |sasuga anzio desu ne| +|08/01/2022 02:21:23| r*bbits +|08/01/2022 02:21:23| SEX +|08/01/2022 02:21:24| |Anzio is amazing!| +|08/01/2022 02:21:37| |too high IQ for anzio| +|08/01/2022 02:21:38| |dvce is the ctuest| +|08/01/2022 02:21:38| Chouchou +|08/01/2022 02:21:38| AZUSA +|08/01/2022 02:21:39| |Duce is the smartest| +|08/01/2022 02:21:40| |baka saki| +|08/01/2022 02:21:40| |Stupid Saki| +|08/01/2022 02:21:40| >intel +|08/01/2022 02:21:41| |why is saki retarded| +|08/01/2022 02:21:43| |haha Saki is too high| +|08/01/2022 02:21:44| |Cute | +|08/01/2022 02:21:44| |AZUSA WITH BINOCULARS!!| +|08/01/2022 02:21:45| |how the fuck are they falling for this| +|08/01/2022 02:21:47| |6 millions?| +|08/01/2022 02:21:52| |HOLY QUARITY| +|08/01/2022 02:21:52| |smart hana| +|08/01/2022 02:21:52| |pepperoni u fucking idiot u threw!!!| +|08/01/2022 02:21:53| |>video quality| +|08/01/2022 02:21:54| |usagi team doesnt have depth perception| +|08/01/2022 02:21:55| BAKARONI +|08/01/2022 02:21:56| |Saki is always high| +|08/01/2022 02:21:57| |could it bee?| +|08/01/2022 02:21:57| |>Best food >Best girl >Best tanks. Why is Anzio so best?| +|08/01/2022 02:22:01| DAAAMN +|08/01/2022 02:22:01| |sweet mosaic | +|08/01/2022 02:22:01| >VLC +|08/01/2022 02:22:03| |PIXELS AS BIG AS DICKS| +|08/01/2022 02:22:03| |anzio quality| +|08/01/2022 02:22:04| |144p lets go| +|08/01/2022 02:22:05| |LMAO HOLY SHIT| +|08/01/2022 02:22:05| |nice pixels| +|08/01/2022 02:22:06| |oh no| +|08/01/2022 02:22:06| >VLC +|08/01/2022 02:22:06| |oof bitrate| +|08/01/2022 02:22:07| |y'all got anymore of them pixels?| +|08/01/2022 02:22:07| |>prerecorded QUALITY | +|08/01/2022 02:22:08| |the quality| +|08/01/2022 02:22:08| |WHy is it censored?| +|08/01/2022 02:22:08| |MASSIVE PIXELS| +|08/01/2022 02:22:08| 72p +|08/01/2022 02:22:08| |AAAAAAAAAAAAH MIHO HEPL ME THE BITNARETET| +|08/01/2022 02:22:08| >video +|08/01/2022 02:22:09| 360p +|08/01/2022 02:22:09| |ANZIO QUALITY| +|08/01/2022 02:22:10| bloons +|08/01/2022 02:22:10| |This is like streaming naruto in 2004| +|08/01/2022 02:22:10| |>anzio so poor they can only afford 144p| +|08/01/2022 02:22:11| >VLC +|08/01/2022 02:22:12| |as flat as they are| +|08/01/2022 02:22:13| |144P, WE MEET AGAIN| +|08/01/2022 02:22:13| QUALITY +|08/01/2022 02:22:13| |Could I get some more pixels?| +|08/01/2022 02:22:14| |SO MANY PIXELS| +|08/01/2022 02:22:14| |its like its 2013 again| +|08/01/2022 02:22:15| |Quality setting: Volsempfänger| +|08/01/2022 02:22:16| |144p LETS GOOOOOOO| +|08/01/2022 02:22:16| |REMOVE PIXELS remove pixels| +|08/01/2022 02:22:16| 10P +|08/01/2022 02:22:16| |stream had to censor the cardboard| +|08/01/2022 02:22:17| |too lewd| +|08/01/2022 02:22:19| >naruto +|08/01/2022 02:22:19| |>2022 >doesn't watch gup in 32bit graphics| +|08/01/2022 02:22:19| |GuP ON GBA VIDEO| +|08/01/2022 02:22:20| |SAKI EROTIC UOOOOOOOOOOOOOOOOOOOOOHHH ToT| +|08/01/2022 02:22:21| |at least its not stuttering anymore lmao| +|08/01/2022 02:22:21| SOUL +|08/01/2022 02:22:21| |Stream can't handle Duce| +|08/01/2022 02:22:22| |BALLSACK PLAN| +|08/01/2022 02:22:24| 240p +|08/01/2022 02:22:24| balls +|08/01/2022 02:22:24| |I CAN COUNT ALL THE PIZELS| +|08/01/2022 02:22:25| |The True Operation Macaronni| +|08/01/2022 02:22:26| |>Anzio is so powerful they forced the live to 144p| +|08/01/2022 02:22:27| balls +|08/01/2022 02:22:27| |[Censored for gore]| +|08/01/2022 02:22:27| |PEPPA PLAN| +|08/01/2022 02:22:28| BAKARONI +|08/01/2022 02:22:28| |HA HA HA HA | +|08/01/2022 02:22:29| |SHAKING. IN. FEAR| +|08/01/2022 02:22:29| |cunts stole my bitrate cant have shit in anzio| +|08/01/2022 02:22:29| bakaroni +|08/01/2022 02:22:30| SLUT! +|08/01/2022 02:22:30| hahaha +|08/01/2022 02:22:30| |is it 2010 again?| +|08/01/2022 02:22:31| BAKARONI +|08/01/2022 02:22:31| |BIG BRAIN| +|08/01/2022 02:22:33| bakaroni +|08/01/2022 02:22:33| |>mfw the stream is running on VLC| +|08/01/2022 02:22:33| |CRISPY PIXELS| +|08/01/2022 02:22:36| >BRAINS +|08/01/2022 02:22:36| HI10P +|08/01/2022 02:22:38| BAKARONI +|08/01/2022 02:22:38| MASAKA +|08/01/2022 02:22:39| |anzio can't afford pixel| +|08/01/2022 02:22:41| |Please understand, Duce can't afford many things| +|08/01/2022 02:22:42| BAKARONI +|08/01/2022 02:22:43| |>tank fires and rapes the frames| +|08/01/2022 02:22:43| |big brain pepperoni| +|08/01/2022 02:22:54| |Italian 4-pasta internet| +|08/01/2022 02:22:56| |Authentic japanese video experience| +|08/01/2022 02:23:00| bonk +|08/01/2022 02:23:01| |>Having less than 10 pixels in 2022| +|08/01/2022 02:23:03| |tankfags, could a cv33 maching gun pen the type 89?| +|08/01/2022 02:23:04| AAA +|08/01/2022 02:23:04| |MATASE MOMENTE| +|08/01/2022 02:23:04| |dumb aya| +|08/01/2022 02:23:05| DUMBUNNY +|08/01/2022 02:23:07| |>they're real| +|08/01/2022 02:23:12| |Ah! they're real!| +|08/01/2022 02:23:12| |aya wa ayashi..| +|08/01/2022 02:23:13| |this is why you don't stream your animes| +|08/01/2022 02:23:15| |die joe boo| +|08/01/2022 02:23:17| |HONMONO DESU| +|08/01/2022 02:23:18| BUFFER +|08/01/2022 02:23:23| >animes +|08/01/2022 02:23:25| baffa +|08/01/2022 02:23:26| |I JOE| +|08/01/2022 02:23:28| |BAffer pls| +|08/01/2022 02:23:29| |buffer time...| +|08/01/2022 02:23:29| >streaming +|08/01/2022 02:23:30| AAAAAAAAAAAAAA +|08/01/2022 02:23:31| amines +|08/01/2022 02:23:34| |John Moses Browning's M2 Browning .50cal could pen the Type-89| +|08/01/2022 02:23:35| |If you keep buffering I'm legit going to pee break| +|08/01/2022 02:23:36| |buffer AND 72p holy shit| +|08/01/2022 02:23:37| Amino +|08/01/2022 02:23:38| |YOU JOE| +|08/01/2022 02:23:41| |>streaming anime| +|08/01/2022 02:23:45| bruh +|08/01/2022 02:23:45| |>18000 danmaku| +|08/01/2022 02:23:47| |SAEMONZA OPEN YOUR EYES FOR GODS SAKE| +|08/01/2022 02:23:49| |WATASHI TACHI NO HARMONY| +|08/01/2022 02:23:49| |STOP IT JOE| +|08/01/2022 02:23:50| |animo acid| +|08/01/2022 02:23:50| |pee a little between buffers| +|08/01/2022 02:23:50| |i've seen gifs with better quality lul| +|08/01/2022 02:23:52| |thanks for the pen info, anon| +|08/01/2022 02:23:53| /a/migos.... +|08/01/2022 02:23:54| |gambare stream| +|08/01/2022 02:23:55| |>quality improves but immediately starts bufferring| +|08/01/2022 02:23:56| |Too many entities on the server..| +|08/01/2022 02:23:57| |I LOOK FORWARD TO EIGHT MORE HOURS OF THIS | +|08/01/2022 02:23:59| |it's a JOJO of buffering, video quality breakdown, and catch up| +|08/01/2022 02:23:59| |fuck this buffering imma go for a cig| +|08/01/2022 02:24:00| :FIXLAG: +|08/01/2022 02:24:00| |AVANTI ARDITI!! o/ o/ o/| +|08/01/2022 02:24:04| |quick anon use the power of friendship to save the stream| +|08/01/2022 02:24:05| NGMI +|08/01/2022 02:24:05| |Every buffer I release a little pee| +|08/01/2022 02:24:08| |Bros... the stream is dying| +|08/01/2022 02:24:08| |now this is the anzio experience| +|08/01/2022 02:24:09| |if we skip this episode maybe the internet will be fixed| +|08/01/2022 02:24:12| |how many people are watching right now?| +|08/01/2022 02:24:12| |GANBARE STREAM| +|08/01/2022 02:24:15| |I HURT MYSEEELF TODAY| +|08/01/2022 02:24:15| |AS LONG AS IM WITH MY BROS I CAN TAKE ANY QUALITY| +|08/01/2022 02:24:16| |>buffer state| +|08/01/2022 02:24:18| SI +|08/01/2022 02:24:19| |I BLAME ITALY FOR THIS| +|08/01/2022 02:24:20| anzioniggers..... +|08/01/2022 02:24:21| SI +|08/01/2022 02:24:23| SI +|08/01/2022 02:24:24| F +|08/01/2022 02:24:24| |streamed live on anzio wi fi| +|08/01/2022 02:24:24| |Italian 2 maccaroni/second connection| +|08/01/2022 02:24:25| ruined +|08/01/2022 02:24:25| |ANZIO is too based for this stream| +|08/01/2022 02:24:27| |rip stream| +|08/01/2022 02:24:28| |the host spent too much budget on pasta and can't afford any more internet, please understand| +|08/01/2022 02:24:28| |ganbare stream! \ o /| +|08/01/2022 02:24:29| |Drink everytime it frezzes| +|08/01/2022 02:24:29| |SI (YES)| +|08/01/2022 02:24:30| |STOP WATCHING ONEGAI I NEED MORE BANDWIDTH| +|08/01/2022 02:24:30| SHITALY +|08/01/2022 02:24:31| BUFFERONI +|08/01/2022 02:24:32| SI +|08/01/2022 02:24:35| |Fucking cheap Anzio can't afford good internet| +|08/01/2022 02:24:36| |DVCE Episode breaking the stream, sasuga| +|08/01/2022 02:24:37| |i can't drink that fast| +|08/01/2022 02:24:39| |What are you using to stream this? A CV33?| +|08/01/2022 02:24:40| |Anzio is too poor for 480p30.| +|08/01/2022 02:24:41| BUFFERONI +|08/01/2022 02:24:43| |Anzio streaming budget| +|08/01/2022 02:24:43| |STOP BUFFERING AIIIIIIEEEEEEEE| +|08/01/2022 02:24:43| |I will never forgive the italians! \o/| +|08/01/2022 02:24:44| |PEPPERONI DID YOU UNPLUG THE STREAM?| +|08/01/2022 02:24:46| |the stream can't handle all the anzio SOUL| +|08/01/2022 02:24:47| |GANBARE STREAM \O/| +|08/01/2022 02:24:49| \O/ +|08/01/2022 02:24:50| |Inject more bandwith| +|08/01/2022 02:24:50| |the money went towards wig maintenance, not sure for who though| +|08/01/2022 02:24:52| |>disabling danmaku doesn't work | +|08/01/2022 02:24:53| spara! +|08/01/2022 02:24:54| |EASY WAY TO COUNT THE VIEWERS, POST (HERE) IF WATCHING| +|08/01/2022 02:24:54| |We must switch to 144p| +|08/01/2022 02:24:57| |this is unwatchable| +|08/01/2022 02:25:00| (here) +|08/01/2022 02:25:01| Owowowowowowo! +|08/01/2022 02:25:01| itetetetetete +|08/01/2022 02:25:03| OWOWOWOOWOWOWOWOOWOWOW +|08/01/2022 02:25:03| |F for the stream| +|08/01/2022 02:25:03| (here) +|08/01/2022 02:25:04| here +|08/01/2022 02:25:04| (here) +|08/01/2022 02:25:05| Here +|08/01/2022 02:25:05| |DUCE borked the stream| +|08/01/2022 02:25:06| |DUDE STREAMING IS TOTALLY FINE GAHHH| +|08/01/2022 02:25:06| F +|08/01/2022 02:25:06| (here) +|08/01/2022 02:25:07| (here) +|08/01/2022 02:25:07| F +|08/01/2022 02:25:07| (HERE) +|08/01/2022 02:25:07| (HERE) +|08/01/2022 02:25:08| f +|08/01/2022 02:25:08| here +|08/01/2022 02:25:08| |just download more ram | +|08/01/2022 02:25:09| F +|08/01/2022 02:25:09| (here) +|08/01/2022 02:25:09| |CV33s are my spirit animal| +|08/01/2022 02:25:09| |bitches, leave| +|08/01/2022 02:25:09| (here) +|08/01/2022 02:25:09| F +|08/01/2022 02:25:10| |>eva reference| +|08/01/2022 02:25:11| (HERE) +|08/01/2022 02:25:11| (YOU) +|08/01/2022 02:25:12| here +|08/01/2022 02:25:12| |how low can you get the quality| +|08/01/2022 02:25:12| F +|08/01/2022 02:25:13| (here) +|08/01/2022 02:25:14| (HERE) +|08/01/2022 02:25:14| (you) +|08/01/2022 02:25:14| (here) +|08/01/2022 02:25:16| |F stream| +|08/01/2022 02:25:16| |(here) for (you)| +|08/01/2022 02:25:17| |OW OOF MY BITS| +|08/01/2022 02:25:17| (HERE) +|08/01/2022 02:25:17| (here) +|08/01/2022 02:25:17| (here) +|08/01/2022 02:25:18| |chechen beheading quality| +|08/01/2022 02:25:18| |(here) dvce| +|08/01/2022 02:25:21| |OW OOF MY BITS| +|08/01/2022 02:25:22| |(You) 2| +|08/01/2022 02:25:26| |OW OOF MY BITS| +|08/01/2022 02:25:30| |WE'RE LOSING VIEWERS| +|08/01/2022 02:25:31| F +|08/01/2022 02:25:32| |I dont feel so good streambros| +|08/01/2022 02:25:33| |even ISIS had better quality| +|08/01/2022 02:25:33| |rest in fucking rip stream| +|08/01/2022 02:25:35| |nice powerpoint| +|08/01/2022 02:25:35| |STREAM IS FUCKING DEAD| +|08/01/2022 02:25:35| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +|08/01/2022 02:25:35| |( H E R E )| +|08/01/2022 02:25:37| |streambros... | +|08/01/2022 02:25:38| |This is the True Anzio experience| +|08/01/2022 02:25:38| NANI +|08/01/2022 02:25:38| ded +|08/01/2022 02:25:39| >streaming +|08/01/2022 02:25:41| |No audio for phone :/| +|08/01/2022 02:25:41| |a powerpoint is fine too| +|08/01/2022 02:25:41| F +|08/01/2022 02:25:42| |can we drop the stream to 240 for a bit for fun| +|08/01/2022 02:25:43| >0.25FPS +|08/01/2022 02:25:45| F +|08/01/2022 02:25:45| |WORST STREAM DURING THE BEST PART!| +|08/01/2022 02:25:45| |Ah, the podcast version of the stream| +|08/01/2022 02:25:46| ded +|08/01/2022 02:25:46| |>streaming anime| +|08/01/2022 02:25:46| |O MY CARBON COAT| +|08/01/2022 02:25:46| |nice tank| +|08/01/2022 02:25:46| ohnononono +|08/01/2022 02:25:46| |I counted 26| +|08/01/2022 02:25:47| |ANZIO KILLED THE STREAM| +|08/01/2022 02:25:47| |Stream quality reminds me of ~2010 internet| +|08/01/2022 02:25:47| |OH NO NO NO NO THIS CAN'T BE HAPPENNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 02:25:48| |/a/bros... did we get too cocky?| +|08/01/2022 02:25:48| |>watching on phone| +|08/01/2022 02:25:49| |WE'RE FUCKING DEAD| +|08/01/2022 02:25:50| |close your eyes and use your imagination anons| +|08/01/2022 02:25:50| >ph*ne +|08/01/2022 02:25:51| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 02:25:51| |stream kun...| +|08/01/2022 02:25:51| bruh +|08/01/2022 02:25:51| |it stopped| +|08/01/2022 02:25:52| |all you had to do was pay the bills anzio| +|08/01/2022 02:25:53| |>watching streams| +|08/01/2022 02:25:54| RIP +|08/01/2022 02:25:55| |RIP STREAM| +|08/01/2022 02:25:55| F +|08/01/2022 02:25:55| |WHERE WERE YOU WHEN STREAM WAS KILL| +|08/01/2022 02:25:56| |OPERATION STREAMARONI| +|08/01/2022 02:25:56| |It's all falling apart!| +|08/01/2022 02:25:56| |I CAN'T BELIEVE ANZIO RUINED EVERYTHING| +|08/01/2022 02:25:56| |DEAD FOR REAL| +|08/01/2022 02:25:57| F +|08/01/2022 02:25:57| f +|08/01/2022 02:25:57| aaaaaaaaaieeeeeeeeeeeeee +|08/01/2022 02:25:57| F +|08/01/2022 02:25:58| |SHUT IT DOWN| +|08/01/2022 02:25:59| |ANZIO WI-FI| +|08/01/2022 02:25:59| l/a/ds........................... +|08/01/2022 02:26:00| |>staying up for this| +|08/01/2022 02:26:00| |IT'S DEAD JIM| +|08/01/2022 02:26:01| |miho took a fucking tracer round to the head and the stream died| +|08/01/2022 02:26:01| |How much more abuse can this stream take?| +|08/01/2022 02:26:01| F +|08/01/2022 02:26:01| >streaming +|08/01/2022 02:26:03| DEAD +|08/01/2022 02:26:04| |ANZIO DIDNT PAY DENBTS| +|08/01/2022 02:26:07| |It's Dvce's fault the stream is dead| +|08/01/2022 02:26:08| |DUCE betrayed us| +|08/01/2022 02:26:08| |OMAEWA MOU SHINDEIRU| +|08/01/2022 02:26:09| |OPERATOR DOWN| +|08/01/2022 02:26:09| o7 +|08/01/2022 02:26:09| AANZZZIIIIIIOOOOOOOOOOOOOOOO +|08/01/2022 02:26:10| |ITALY RUINS EVERYTHING ONCE AGAIN| +|08/01/2022 02:26:10| |I can't belive Anzio killed the stream| +|08/01/2022 02:26:11| |DMCA RIP| +|08/01/2022 02:26:11| |GUP BROS THIS WAS SUPPOSED TO BE OUR YEAR| +|08/01/2022 02:26:12| |IT ALL COMES TUMBLING DOWN TUMBLING DOWN TUMBLING DOWN| +|08/01/2022 02:26:12| dead +|08/01/2022 02:26:12| |WHAT DOES THIS MEAN BROS?| +|08/01/2022 02:26:13| |STREAM? STREAM!? STREEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAAAAM!!!!!!!!!!!| +|08/01/2022 02:26:13| |well, what do we do now?| +|08/01/2022 02:26:14| |Operation Maccaroni worked| +|08/01/2022 02:26:14| |Duce taskate... | +|08/01/2022 02:26:14| |OPERATOR DOWN| +|08/01/2022 02:26:17| |I am greek| +|08/01/2022 02:26:17| SHIBOU +|08/01/2022 02:26:18| |DVCE bros....| +|08/01/2022 02:26:18| |PANZER DOWN, I REPEAT, PANZER DOWN| +|08/01/2022 02:26:19| DEAD +|08/01/2022 02:26:20| |OPERATOR DOWN| +|08/01/2022 02:26:21| |nice knowing you dvce-bros, sayonara wi-fi| +|08/01/2022 02:26:23| |bought pasta instead of bandwidth sry| +|08/01/2022 02:26:24| |I WANT MY MONEY BACK| +|08/01/2022 02:26:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:26:24| |what happen| +|08/01/2022 02:26:25| |NOT LIKE THIS| +|08/01/2022 02:26:26| |It's over.| +|08/01/2022 02:26:27| |AHHHHH ALL THE DANMAKU AT ONCE| +|08/01/2022 02:26:27| |DUCE DUCE DUCE| +|08/01/2022 02:26:27| flatline..... +|08/01/2022 02:26:30| |DUCEBROS WE GOT TOO COCKY.....| +|08/01/2022 02:26:31| |Poop break? | +|08/01/2022 02:26:31| |Buffer Vor!| +|08/01/2022 02:26:32| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:26:32| F +|08/01/2022 02:26:32| kino +|08/01/2022 02:26:33| |Someone tell a joke while we're waiting| +|08/01/2022 02:26:34| |DUCE NO| +|08/01/2022 02:26:34| |stream ded| +|08/01/2022 02:26:34| |It was fun while it lasted| +|08/01/2022 02:26:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:26:35| >it*lians +|08/01/2022 02:26:36| |SAVE THE STREAM| +|08/01/2022 02:26:36| |this is a good moment to read my k-on! fic| +|08/01/2022 02:26:37| F +|08/01/2022 02:26:37| |time to piss| +|08/01/2022 02:26:40| |KNOCK KNOCK| +|08/01/2022 02:26:40| |go pee| +|08/01/2022 02:26:40| nooooooooo +|08/01/2022 02:26:40| |>italy fucks everything up as usual| +|08/01/2022 02:26:43| |Get food while you can | +|08/01/2022 02:26:44| |>duce stopped the stream to stop Anzio from losing| +|08/01/2022 02:26:45| DVCE.......................... +|08/01/2022 02:26:48| |so this is the power of DUVE| +|08/01/2022 02:26:50| o7 +|08/01/2022 02:26:52| |Toilet break| +|08/01/2022 02:26:52| |I shat in a bottle for this?| +|08/01/2022 02:26:54| |stream couldn| +|08/01/2022 02:26:54| |go get water| +|08/01/2022 02:26:54| |Anzio killed the stream| +|08/01/2022 02:26:55| |FUCKING ITALIANS| +|08/01/2022 02:26:55| |this is a first| +|08/01/2022 02:26:55| |Italia spilled the pasta| +|08/01/2022 02:26:56| |INTER INTER MISSION | +|08/01/2022 02:26:58| |empty your piss bottles| +|08/01/2022 02:26:58| |Duce couldn't make the stream play on time...| +|08/01/2022 02:26:59| |>shitting in a bottle| +|08/01/2022 02:27:00| |nice tracer| +|08/01/2022 02:27:01| |NICE 89| +|08/01/2022 02:27:02| |time to get more drinks| +|08/01/2022 02:27:02| |DUVE DUVE DUVE DUVE| +|08/01/2022 02:27:03| |YES TIME TO SHIIIIIIIIIIIIIIIIIIIIIIT| +|08/01/2022 02:27:04| |the guy that made the GuP doujin also made a K On one equally as distrubing| +|08/01/2022 02:27:04| |small shits| +|08/01/2022 02:27:05| |I shat in a glass faggot| +|08/01/2022 02:27:05| |sasuga DUCE| +|08/01/2022 02:27:05| |Piss Guy Crash Stream So He Piss| +|08/01/2022 02:27:06| |THE ANZAI EFFECT| +|08/01/2022 02:27:07| |How do you shit in a bottle?| +|08/01/2022 02:27:08| |>Italy 3 cheese ethernet melted| +|08/01/2022 02:27:08| |stream couldn't handle duce's power....| +|08/01/2022 02:27:08| |THIS IS OUR BATHROOM BREAK USE IT WHILE YOU CAN| +|08/01/2022 02:27:10| |>intermission, Azio killed the f'ing stream| +|08/01/2022 02:27:10| bruh +|08/01/2022 02:27:10| |Anzio is too fast for the stream| +|08/01/2022 02:27:13| |SHIT IN A BOTTLE| +|08/01/2022 02:27:16| |BREAK TIME USE IT WHILE YOU CAN| +|08/01/2022 02:27:18| |Anzio on dial up| +|08/01/2022 02:27:18| |i come back from an emergency shit and see this| +|08/01/2022 02:27:19| |And I have diahria| +|08/01/2022 02:27:21| |I got bbq chicken sandwich and jack n coke| +|08/01/2022 02:27:21| |post shit bottle pic in thread| +|08/01/2022 02:27:23| |break time| +|08/01/2022 02:27:23| |Don Mai| +|08/01/2022 02:27:27| |SAVE THE WHALES!| +|08/01/2022 02:27:29| |Everyone piss and shit now! together!| +|08/01/2022 02:27:30| Ganbarre +|08/01/2022 02:27:30| |Pics or shittbottle didn't happen| +|08/01/2022 02:27:31| |BREAK TIME BOYS| +|08/01/2022 02:27:33| |ALL HAIL DUCE FOR CRASHING THE STREAM SO WE CAN HAVE A PISS BREAK| +|08/01/2022 02:27:34| |don't PANIC| +|08/01/2022 02:27:34| |this is a hostile act| +|08/01/2022 02:27:36| |ENTER, ENTER MISSION 早くここにおいで一生懸命追いかけたいよ| +|08/01/2022 02:27:38| |NO TIME TO SHIT| +|08/01/2022 02:27:42| |at least roll some ads (笑)| +|08/01/2022 02:27:42| |time for an emergency fap | +|08/01/2022 02:27:43| |Oh no, I'm still mid shit!!!| +|08/01/2022 02:27:44| liv +|08/01/2022 02:27:45| |hold the line| +|08/01/2022 02:27:45| |we now return to TANKS| +|08/01/2022 02:27:45| |STOP SHITTING ITS BACK UP| +|08/01/2022 02:27:48| |Based DVCE giving a peebreak for loyal anons DVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCEDVCE| +|08/01/2022 02:27:51| epic +|08/01/2022 02:27:52| |o/ for DVCE| +|08/01/2022 02:27:52| |>emergency fap| +|08/01/2022 02:27:54| |Bogdanoff, he stream. He stream? Yes. Buffer it| +|08/01/2022 02:27:55| |ANZIO PAID THE INTERNET| +|08/01/2022 02:27:55| Furagu +|08/01/2022 02:27:56| |CHINESE DDOS| +|08/01/2022 02:27:56| |ugh time to look up gup doujins| +|08/01/2022 02:27:57| tets +|08/01/2022 02:27:57| |do we actually have a JP bro or two here| +|08/01/2022 02:27:59| | .| +|08/01/2022 02:28:02| nigger +|08/01/2022 02:28:02| |F5 dumb niggers| +|08/01/2022 02:28:03| |straem died before they lost, truly a propaganda of success| +|08/01/2022 02:28:03| |CANT SHIT ARRRRRRRRRRRGH| +|08/01/2022 02:28:04| |THE BUGMEN GOT US| +|08/01/2022 02:28:04| |are we back?| +|08/01/2022 02:28:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:28:07| |wii u| +|08/01/2022 02:28:08| tets2 +|08/01/2022 02:28:08| Si@ +|08/01/2022 02:28:08| |WERE BACK| +|08/01/2022 02:28:09| |Lucky enough time to quickie jack it| +|08/01/2022 02:28:10| |WE'RE BACK| +|08/01/2022 02:28:11| |WE"RE BACK| +|08/01/2022 02:28:12| BACK +|08/01/2022 02:28:12| |No I'm still peeing| +|08/01/2022 02:28:12| SI +|08/01/2022 02:28:12| |yo whatre you drinking| +|08/01/2022 02:28:14| |okay, all good| +|08/01/2022 02:28:16| |F5 MY BROTHERS, WE'RE BACK| +|08/01/2022 02:28:17| REFRESH +|08/01/2022 02:28:19| |STILL WAITING| +|08/01/2022 02:28:19| LIV +|08/01/2022 02:28:20| tadaima +|08/01/2022 02:28:21| |just don't pee on the stream| +|08/01/2022 02:28:21| water +|08/01/2022 02:28:22| |italians dit this| +|08/01/2022 02:28:22| |REFRESH, WE'RE BACK| +|08/01/2022 02:28:22| |thank you| +|08/01/2022 02:28:22| ANZIOOOOOOOOOOO +|08/01/2022 02:28:24| |REFRESH WE BACK| +|08/01/2022 02:28:26| SNEED +|08/01/2022 02:28:26| |REFRESH THE SITE YOU FAGS| +|08/01/2022 02:28:27| |lol everyone has white text now after f5ing| +|08/01/2022 02:28:27| OKAERI! +|08/01/2022 02:28:27| |**SPOILERS, DUCE WINS**| +|08/01/2022 02:28:28| |WE BACK| +|08/01/2022 02:28:31| /あ/ +|08/01/2022 02:28:31| |Good thing I have my dick out right now| +|08/01/2022 02:28:32| OWOWOWOWOW +|08/01/2022 02:28:34| wowowowowow +|08/01/2022 02:28:35| BACK +|08/01/2022 02:28:36| Refresh +|08/01/2022 02:28:38| ITETETETETETE +|08/01/2022 02:28:39| |The Boys Are Back| +|08/01/2022 02:28:40| |REFRESH THE PAGE IT WORKS| +|08/01/2022 02:28:43| |DUCE BROS WE'RE HOME| +|08/01/2022 02:28:45| |thanks for your hard work stream-kun| +|08/01/2022 02:28:45| |DUCE is unbeatable!| +|08/01/2022 02:28:45| |WE'RE LIVE| +|08/01/2022 02:28:48| based +|08/01/2022 02:28:49| streambros... +|08/01/2022 02:28:49| |refresh works| +|08/01/2022 02:28:49| |rip to the ones who went to the bathroom| +|08/01/2022 02:28:51| |DUCKS STRONG| +|08/01/2022 02:28:52| |$10000000 on DUCE!| +|08/01/2022 02:28:52| |DUCE WON| +|08/01/2022 02:28:53| |back in certified VLC quality| +|08/01/2022 02:28:54| |DVCE spam killed the stream| +|08/01/2022 02:28:54| |D QUICK| +|08/01/2022 02:28:55| SORE +|08/01/2022 02:28:55| |WHITE IS RIGHT | +|08/01/2022 02:28:56| |ANZIO ISN'T WEA- ANZIO IS STRONG!| +|08/01/2022 02:28:57| dick' +|08/01/2022 02:28:58| |GET FUCKED CARRO VELOCE FAGS| +|08/01/2022 02:28:59| |>he isn't watching through mpv| +|08/01/2022 02:28:59| |I love these tiny Italian tanks| +|08/01/2022 02:29:00| |I'll give them a quick D| +|08/01/2022 02:29:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:04| |THANK YOU DVCE| +|08/01/2022 02:29:05| |streambros did we make it| +|08/01/2022 02:29:06| |CARBON COATED STREAM| +|08/01/2022 02:29:08| |SO SMART| +|08/01/2022 02:29:09| |MY CARBON COATED SH....| +|08/01/2022 02:29:09| |WHAT IS LOVE| +|08/01/2022 02:29:10| |Holy shit, is Duce THAT strong? How can Oarai even compete?| +|08/01/2022 02:29:10| |DUMB USAGI| +|08/01/2022 02:29:10| |IRAQ QUALITY STREAM| +|08/01/2022 02:29:11| REFRESH +|08/01/2022 02:29:12| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 02:29:14| |WITHE POWA| +|08/01/2022 02:29:14| |CV FAGS ON SUICIDE WATCH| +|08/01/2022 02:29:16| |naruhodo naruhodo| +|08/01/2022 02:29:16| DUCE +|08/01/2022 02:29:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:17| refresh +|08/01/2022 02:29:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:19| duce +|08/01/2022 02:29:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:29:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:22| |We're all gonna make it bros| +|08/01/2022 02:29:23| |tankfags, what kind of penetration does the semovente have? can it pen the ankou panzer?| +|08/01/2022 02:29:24| |DUCE DAVANTI E DIETRO TUTTI QUANTI| +|08/01/2022 02:29:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:24| MACARONI +|08/01/2022 02:29:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:24| Bakaroni... +|08/01/2022 02:29:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:25| DUCE +|08/01/2022 02:29:25| |DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:29:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:29| |This is why he dumped you Yuki| +|08/01/2022 02:29:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:30| |DUCE DAVANTI E DIETRO TUTTI QUANTI| +|08/01/2022 02:29:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:33| |dumb idiot| +|08/01/2022 02:29:33| |duce duce duce duce duce duce duce | +|08/01/2022 02:29:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:34| bakaroni +|08/01/2022 02:29:35| |DUMB RETARD PEPPA| +|08/01/2022 02:29:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:35| |DVCE DVCE DVCE| +|08/01/2022 02:29:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:36| |Thanks for telling me to refresh| +|08/01/2022 02:29:38| |DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUC| +|08/01/2022 02:29:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:29:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:39| |DUCE DAVANTI E DIETRO TUTTI QUANTI| +|08/01/2022 02:29:39| test +|08/01/2022 02:29:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:41| SASUGA +|08/01/2022 02:29:42| BAKARONI +|08/01/2022 02:29:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:42| |pizza > macaroni| +|08/01/2022 02:29:43| |DUMBASS PEPPERONI| +|08/01/2022 02:29:44| KASHKOI +|08/01/2022 02:29:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:44| AHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHOAHO +|08/01/2022 02:29:45| bakaroni +|08/01/2022 02:29:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:29:46| |Fuck off \I can't see| +|08/01/2022 02:29:46| |if it's the 105, it should cap at around 90 of RHA| +|08/01/2022 02:29:47| BAKARONI +|08/01/2022 02:29:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:29:49| |That one prostitution doujin is fucking god tier I tell you| +|08/01/2022 02:29:52| |SASUGA NEESAN| +|08/01/2022 02:29:52| BAKARONI +|08/01/2022 02:29:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:29:54| |MACARONI MACARONI MACARONI MACARONI MACARONI MACARONI MACARONI| +|08/01/2022 02:29:54| KINO +|08/01/2022 02:29:55| ! +|08/01/2022 02:29:55| |our eyes met| +|08/01/2022 02:29:55| ENTER +|08/01/2022 02:29:57| ! +|08/01/2022 02:29:58| |We're back, refresh.| +|08/01/2022 02:29:58| |EIA EIA ALALALA| +|08/01/2022 02:29:59| kino +|08/01/2022 02:29:59| |>italian IQ| +|08/01/2022 02:30:01| . +|08/01/2022 02:30:03| K-kino... +|08/01/2022 02:30:04| * +|08/01/2022 02:30:04| |taka chan| +|08/01/2022 02:30:07| |That asshole!| +|08/01/2022 02:30:07| |>that asshole| +|08/01/2022 02:30:09| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:30:09| |pasanaru maku?| +|08/01/2022 02:30:11| |LEZZ DUAL| +|08/01/2022 02:30:12| |haha hippo butt| +|08/01/2022 02:30:15| |i recognize that butthole| +|08/01/2022 02:30:16| |i can't believe Oarai is dead| +|08/01/2022 02:30:17| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:30:18| |I'd knwothat ass anywhere| +|08/01/2022 02:30:22| |ITS THAT ASSHOLE TAKACHAN THAT MOTHERFUCKER| +|08/01/2022 02:30:22| kinokinokinokinokinokinokino +|08/01/2022 02:30:26| 1V1 +|08/01/2022 02:30:30| |PICTURE IT! SALVATION!| +|08/01/2022 02:30:30| |DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! | +|08/01/2022 02:30:32| |loader battle loader battle| +|08/01/2022 02:30:32| GAY +|08/01/2022 02:30:37| |GAY DUEL| +|08/01/2022 02:30:39| |THE DEATH OF THE STREAM WAS A NECESSITY| +|08/01/2022 02:30:40| |tip battle| +|08/01/2022 02:30:41| |TANK JOUSTING| +|08/01/2022 02:30:42| w-wew +|08/01/2022 02:30:42| |SWORD FIGHT| +|08/01/2022 02:30:42| |my sword is bigger than yours| +|08/01/2022 02:30:42| |penis duel| +|08/01/2022 02:30:43| |Ooraibros I'm scared| +|08/01/2022 02:30:43| |DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! DVEL! | +|08/01/2022 02:30:43| |THAT'S GAY MIHO| +|08/01/2022 02:30:44| |SWORD FIGHTING TANKS LET'S FUCKING GOOOOOOOOOO| +|08/01/2022 02:30:44| |self insert as STuG| +|08/01/2022 02:30:45| |>gunkata with tanks| +|08/01/2022 02:30:46| |its more like a 4x2| +|08/01/2022 02:30:46| |is this how they fought in WW2?| +|08/01/2022 02:30:47| |>touching tips| +|08/01/2022 02:30:48| |t-they're touching!| +|08/01/2022 02:30:49| DUELING +|08/01/2022 02:30:50| LEWD +|08/01/2022 02:30:51| |this is as gay as that resident evil gunkata fight| +|08/01/2022 02:30:52| tummyswords +|08/01/2022 02:30:52| |is this what it was really like in ww2?| +|08/01/2022 02:30:54| |fellas is it gay if the barrels touch?| +|08/01/2022 02:30:56| |Can a chub really win this bros| +|08/01/2022 02:30:56| |Is this how lesbians have sex?| +|08/01/2022 02:30:58| |DUCE BROS OOARAI IS ON THE ROPES| +|08/01/2022 02:31:03| |DEJA VU| +|08/01/2022 02:31:05| . +|08/01/2022 02:31:06| YATATATATATATATATA +|08/01/2022 02:31:07| |I love the RE gunkata fight| +|08/01/2022 02:31:11| |as long as the tips don't touch it's not yuri| +|08/01/2022 02:31:13| |LETS GO ANZIO| +|08/01/2022 02:31:14| |this is exactly how ww2 looked| +|08/01/2022 02:31:15| |oh god i can hear the bitrate. gotta do what you gotta do i guess| +|08/01/2022 02:31:17| |Oaroi Bros we got cocky again| +|08/01/2022 02:31:18| |>one goes down >another one spawns Fucking video game moment right there| +|08/01/2022 02:31:29| |I just love that we all know the RE gunkata fight| +|08/01/2022 02:31:29| |RIP hippo| +|08/01/2022 02:31:31| |oooo camera tricks| +|08/01/2022 02:31:36| JOUST +|08/01/2022 02:31:36| |NO THE HIPPO| +|08/01/2022 02:31:36| |can a semovente pen a stug?| +|08/01/2022 02:31:38| |GAY LESBIAN DUEL| +|08/01/2022 02:31:41| yes +|08/01/2022 02:31:43| |big dick engery| +|08/01/2022 02:31:50| ENGERy +|08/01/2022 02:31:55| |Tankette belly... | +|08/01/2022 02:31:56| |apart from, perhaps, the transmission housing| +|08/01/2022 02:31:57| |Fast as Fuck Boy| +|08/01/2022 02:31:58| |STRONG ANZIO GIRLS| +|08/01/2022 02:32:00| STRONK +|08/01/2022 02:32:01| |this is just like world of tanks!| +|08/01/2022 02:32:02| |cute taeko| +|08/01/2022 02:32:03| STRONG +|08/01/2022 02:32:03| |ANZIO IS STRONG| +|08/01/2022 02:32:03| |what is the point of the tankette| +|08/01/2022 02:32:04| |ITAILIANS STRONK| +|08/01/2022 02:32:04| stronk +|08/01/2022 02:32:04| stronk +|08/01/2022 02:32:05| |strong italian girls| +|08/01/2022 02:32:06| |PUT YOUR HEAD IN THE MICROWAVE AND GET YOURSELF A TAN| +|08/01/2022 02:32:09| |The Carro Veroce IS invincible| +|08/01/2022 02:32:10| STRONK +|08/01/2022 02:32:10| GUTS +|08/01/2022 02:32:11| |thanks tankfags| +|08/01/2022 02:32:12| GUTS +|08/01/2022 02:32:13| |THE POWER OF PASTA| +|08/01/2022 02:32:13| GUTS +|08/01/2022 02:32:14| NORIKO<3 +|08/01/2022 02:32:14| GUTS +|08/01/2022 02:32:14| |NEED GUTS| +|08/01/2022 02:32:14| GUTS +|08/01/2022 02:32:14| |I love these subs| +|08/01/2022 02:32:14| GUTS +|08/01/2022 02:32:16| |What's the point of italy to be honest| +|08/01/2022 02:32:16| |Swoll Anzio grills| +|08/01/2022 02:32:16| GUTS +|08/01/2022 02:32:18| |>the lighter the tank is, the more invincible it is| +|08/01/2022 02:32:21| |FIGHT ON| +|08/01/2022 02:32:22| |FIGHT ON| +|08/01/2022 02:32:30| |I am sure to win, because my speed is superiour!| +|08/01/2022 02:32:30| GATSO +|08/01/2022 02:32:31| |LIGHT TANK META | +|08/01/2022 02:32:31| |eat pasta and you can flip tanks| +|08/01/2022 02:32:32| |sicily is the point to italy| +|08/01/2022 02:32:32| GUTS +|08/01/2022 02:32:34| SOOORE! +|08/01/2022 02:32:36| |You will never touch swoll anzio biceps| +|08/01/2022 02:32:36| CLANG +|08/01/2022 02:32:37| |That lean| +|08/01/2022 02:32:38| |GUTS GUTS GUTS GUTS GUTS GUTS| +|08/01/2022 02:32:38| GATSU +|08/01/2022 02:32:38| |I'm dying, NORIKO PLEASE BE REAL| +|08/01/2022 02:32:46| |Noriko isn'| +|08/01/2022 02:32:47| |ANZIO BTFO| +|08/01/2022 02:32:50| F +|08/01/2022 02:32:50| |||>| +|08/01/2022 02:32:51| rip +|08/01/2022 02:32:51| DEAD +|08/01/2022 02:32:53| |FLIP IT BACK OVER!| +|08/01/2022 02:32:53| F +|08/01/2022 02:32:54| |Critical Hit| +|08/01/2022 02:32:56| |"im sure to win due to my superior speed"| +|08/01/2022 02:32:57| DVCEBROS... +|08/01/2022 02:32:58| |fucken rekt| +|08/01/2022 02:32:59| |weak pointo| +|08/01/2022 02:33:00| |FRONT RIGHTO| +|08/01/2022 02:33:01| |they are all fucking dead from the trauma| +|08/01/2022 02:33:03| |||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>||>| +|08/01/2022 02:33:05| |the entire tankette is the weak point, dumbo| +|08/01/2022 02:33:05| |NONONONONO WE GOT COCKY ANIZBROS| +|08/01/2022 02:33:06| |DVCE CTU | +|08/01/2022 02:33:06| |fucking rip to anzio| +|08/01/2022 02:33:07| |UHHHHHH DUCEBROS?| +|08/01/2022 02:33:09| |Noriko will never be a woman| +|08/01/2022 02:33:10| |DEXfags BTFO| +|08/01/2022 02:33:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:12| |BASED BUSTY FUCK| +|08/01/2022 02:33:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:12| |Are you feeling now Ducebros| +|08/01/2022 02:33:13| NANDATTE +|08/01/2022 02:33:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:15| |none of them are wearing seatbelts| +|08/01/2022 02:33:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:33:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:16| >naked +|08/01/2022 02:33:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:17| |NAKED DUCE| +|08/01/2022 02:33:17| |Naked DUCE| +|08/01/2022 02:33:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:18| |DUCE BROS....| +|08/01/2022 02:33:19| |>naked duce| +|08/01/2022 02:33:19| |NAKED DUCE| +|08/01/2022 02:33:19| |>Needing a weak point for tankettes| +|08/01/2022 02:33:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:33:19| PRESENTE +|08/01/2022 02:33:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:22| |NAKED DUCE| +|08/01/2022 02:33:22| |NAKED DUCE| +|08/01/2022 02:33:23| |naked duce| +|08/01/2022 02:33:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:24| NAKED?!?!?! +|08/01/2022 02:33:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:33:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:26| |OORAICISTS... MY LEGS... THEY'RE KNEELING ON THEIR OWN| +|08/01/2022 02:33:27| SHIRAN +|08/01/2022 02:33:28| |NAKED DVCE NAKED DVCE NAKED DVCE| +|08/01/2022 02:33:28| |naked the DUCE| +|08/01/2022 02:33:29| |naked Dvce...| +|08/01/2022 02:33:32| |tank drift| +|08/01/2022 02:33:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:33:37| |The jojo (toy) is supposed to be a filipino hunting weapon.| +|08/01/2022 02:33:37| FLAT +|08/01/2022 02:33:42| |Duce cunny| +|08/01/2022 02:33:44| |Imagine the toned bodies of Anzio girls| +|08/01/2022 02:33:54| |duce is ctu| +|08/01/2022 02:33:54| |OPERATION PROSTATE| +|08/01/2022 02:33:57| AZUSA +|08/01/2022 02:34:00| |NAKED DVCE NAKED DVCE NAKED DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:34:01| |DVCE CTU | +|08/01/2022 02:34:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:34:02| AZUSA +|08/01/2022 02:34:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:03| |some are probably nice and soft from that italian diet| +|08/01/2022 02:34:04| |>toned, not with that diet| +|08/01/2022 02:34:04| |The ctuest| +|08/01/2022 02:34:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:34:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:07| |I volunteer to help repopulate the Anzio empire| +|08/01/2022 02:34:10| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:34:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:34:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:34:19| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:34:22| |THEY'RE LEARNING!| +|08/01/2022 02:34:24| |ok then anon, open up your legs| +|08/01/2022 02:34:27| |smart azusa| +|08/01/2022 02:34:28| |HIGH IQ| +|08/01/2022 02:34:28| niggers +|08/01/2022 02:34:29| |azusa is a genius| +|08/01/2022 02:34:31| |smart azusu| +|08/01/2022 02:34:31| snipe +|08/01/2022 02:34:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:34:38| ute +|08/01/2022 02:34:39| |azusa, your future oarai commander| +|08/01/2022 02:34:41| |Ducks getting smart| +|08/01/2022 02:34:42| |What did I miss?| +|08/01/2022 02:34:43| ATATA +|08/01/2022 02:34:44| sugoi +|08/01/2022 02:34:45| |Azusa OP| +|08/01/2022 02:34:48| |UTE UTE| +|08/01/2022 02:34:49| |looks like shitty mobile game| +|08/01/2022 02:34:51| cute +|08/01/2022 02:34:51| |New Miho| +|08/01/2022 02:34:52| |It was foretold| +|08/01/2022 02:34:52| AZUSA! +|08/01/2022 02:34:52| |>STILL GOING| +|08/01/2022 02:34:53| |>like nishizumi| +|08/01/2022 02:34:53| |Is this really all just setup for df4| +|08/01/2022 02:34:56| JOUST +|08/01/2022 02:34:56| |You missed a fucking sword fight with tank cannons| +|08/01/2022 02:35:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:05| |azusa will SMASH CONTINUATION| +|08/01/2022 02:35:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:06| |LET'S GO ANZIO| +|08/01/2022 02:35:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:08| |DVCE | +|08/01/2022 02:35:09| STRONG +|08/01/2022 02:35:09| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 02:35:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:10| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:35:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:12| |SEND DUCE YOUR ENERGY | +|08/01/2022 02:35:12| |All set up| +|08/01/2022 02:35:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:13| STRONG! +|08/01/2022 02:35:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:14| |DVCE DVCE DVCE| +|08/01/2022 02:35:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:35:15| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:35:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:15| |DVCE CTU| +|08/01/2022 02:35:15| |ANZIOBROS THIS IS OUR MOMENT| +|08/01/2022 02:35:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:18| |MOMO HATE| +|08/01/2022 02:35:19| |SHUT UP MOMO| +|08/01/2022 02:35:20| |WE'RE GONNA WIN THIS ANZIO BROS!!!!| +|08/01/2022 02:35:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:23| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:35:24| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 02:35:24| |DUCE CTU!| +|08/01/2022 02:35:25| |DUCE DUCE DUCE DUCE DUCE DUC EDUC E| +|08/01/2022 02:35:25| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:35:25| |MOMO HATE| +|08/01/2022 02:35:26| |I CANT READ SHIT FUICKING STOP| +|08/01/2022 02:35:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:28| |>kill zone| +|08/01/2022 02:35:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:35:30| |HOI HOI| +|08/01/2022 02:35:31| |KILLZONE HAIHAIII| +|08/01/2022 02:35:31| |DUCE THE CTUEST| +|08/01/2022 02:35:31| |HAI HAI| +|08/01/2022 02:35:32| JOUSTING +|08/01/2022 02:35:33| |Can Momo do anything right?| +|08/01/2022 02:35:35| |I CAN FEEL IT BROS!!!| +|08/01/2022 02:35:35| |>still fucking going| +|08/01/2022 02:35:37| gay +|08/01/2022 02:35:42| |DUCE DEMANDS PURPLE POSTER HEADS| +|08/01/2022 02:35:43| |Point blank tank duels| +|08/01/2022 02:35:44| |ANZIO BROS WE'RE GONNA WIN| +|08/01/2022 02:35:46| |Scotland exports sand to saudi arabia.| +|08/01/2022 02:35:47| |I bet my life savings on duce| +|08/01/2022 02:35:47| IDIOT +|08/01/2022 02:35:48| |MOMO YOU MISSED| +|08/01/2022 02:35:49| |honestly? fuck nips| +|08/01/2022 02:35:50| |Did we get a pic of that shit bottle| +|08/01/2022 02:35:55| >shitaly +|08/01/2022 02:35:55| nisan +|08/01/2022 02:35:56| |wieder ein sieg fur anzio!| +|08/01/2022 02:35:57| bersaglieribros............. +|08/01/2022 02:35:58| RIP +|08/01/2022 02:35:58| |Those girls are dead| +|08/01/2022 02:35:59| |NEE SAN| +|08/01/2022 02:36:00| |NEE SAN| +|08/01/2022 02:36:00| |I FIXED MY COOKES| +|08/01/2022 02:36:00| |OH NONONNONONONONONONONONOONNNONONO THIS CAN'T HAPPENING!!!!| +|08/01/2022 02:36:00| GUTS +|08/01/2022 02:36:01| PEW +|08/01/2022 02:36:02| |jamie pull up the shit bottle real quick| +|08/01/2022 02:36:03| F +|08/01/2022 02:36:04| |Pizzabros... | +|08/01/2022 02:36:04| ded +|08/01/2022 02:36:06| |GUN DEPRESSION | +|08/01/2022 02:36:07| NOOOOOOOOOOOOOOOOOOO +|08/01/2022 02:36:08| F +|08/01/2022 02:36:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:08| RIGGED +|08/01/2022 02:36:10| |MURDER ZONE| +|08/01/2022 02:36:10| kino +|08/01/2022 02:36:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:11| |DVCE BROS....| +|08/01/2022 02:36:11| F +|08/01/2022 02:36:11| DED +|08/01/2022 02:36:12| |Ice cold... | +|08/01/2022 02:36:13| dvce............... +|08/01/2022 02:36:13| |Pizza time is over| +|08/01/2022 02:36:13| lol +|08/01/2022 02:36:13| |wow she is dead| +|08/01/2022 02:36:14| ;__;7 +|08/01/2022 02:36:15| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 02:36:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:17| :( +|08/01/2022 02:36:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:17| |fucking F| +|08/01/2022 02:36:18| |Duce ;_;| +|08/01/2022 02:36:18| |STOP THE MATCH| +|08/01/2022 02:36:18| borgar +|08/01/2022 02:36:18| duce... +|08/01/2022 02:36:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:19| OH +|08/01/2022 02:36:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:20| |Anzio brvs... | +|08/01/2022 02:36:20| |>This happened in Greece| +|08/01/2022 02:36:20| anziobros... +|08/01/2022 02:36:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:20| |DUCE IS FUCKING DEAD| +|08/01/2022 02:36:21| RIP +|08/01/2022 02:36:21| |cute duce sounds| +|08/01/2022 02:36:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:22| |Miho has the dark determination| +|08/01/2022 02:36:22| 🍕 +|08/01/2022 02:36:23| NOOOOOOOOO +|08/01/2022 02:36:23| |I hate all these newfag meme posters| +|08/01/2022 02:36:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:24| f +|08/01/2022 02:36:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:25| |i can't believe our girl is fucking dead| +|08/01/2022 02:36:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:26| |duce is okay right?| +|08/01/2022 02:36:26| |o7 DUce| +|08/01/2022 02:36:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:27| |AY' ANCHOVE| +|08/01/2022 02:36:27| |RIP DUCE| +|08/01/2022 02:36:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:29| |I DEAMND A RECOUNT| +|08/01/2022 02:36:29| |DVCE Bros ;___;7| +|08/01/2022 02:36:29| |MY POOR DUCE!| +|08/01/2022 02:36:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:30| |deja vu| +|08/01/2022 02:36:30| |DUCE BROS TOT| +|08/01/2022 02:36:31| |I CANT READ SHIT FUICKING STOP| +|08/01/2022 02:36:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:33| |OORAI CHADS WE WIN AGAIN| +|08/01/2022 02:36:34| |they can't keep getting away with this| +|08/01/2022 02:36:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:35| o7 +|08/01/2022 02:36:35| |I've seen this too many times to count but I thought this time duce would win for sure| +|08/01/2022 02:36:36| |HOW COULD THIS HAPPEN| +|08/01/2022 02:36:36| |fuck off| +|08/01/2022 02:36:36| |Dead DUCE| +|08/01/2022 02:36:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:38| ducebros.... +|08/01/2022 02:36:39| |Damn those are some seriously carbon coated grills| +|08/01/2022 02:36:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:40| |next time without germany| +|08/01/2022 02:36:40| bestofour +|08/01/2022 02:36:40| |DUCE BROS IT WAS OUR YEAR| +|08/01/2022 02:36:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:42| |HERE'S HOW DUCE CAN STILL WIN | +|08/01/2022 02:36:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:43| |Armored Go-Kart bros...| +|08/01/2022 02:36:44| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:36:44| |dvcebros we got too cocky!!| +|08/01/2022 02:36:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:44| |AND NOW PASTA| +|08/01/2022 02:36:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:45| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 02:36:46| ASSPULL +|08/01/2022 02:36:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:47| |Duce was really close this time bros| +|08/01/2022 02:36:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:48| |GRACIOUS DUCE| +|08/01/2022 02:36:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:49| |HERES HOW| +|08/01/2022 02:36:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:49| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 02:36:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:50| WEW +|08/01/2022 02:36:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:51| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +|08/01/2022 02:36:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:55| gay +|08/01/2022 02:36:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:36:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:36:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:36:59| |Are their bones Carbon Coated| +|08/01/2022 02:36:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:59| GIWTWM +|08/01/2022 02:36:59| OOOOOOOO +|08/01/2022 02:36:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:36:59| HAI +|08/01/2022 02:36:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:36:59| |i want to marry duce| +|08/01/2022 02:37:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:00| o/ +|08/01/2022 02:37:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:00| |It was supposed to be DVCE's year ;_;| +|08/01/2022 02:37:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:02| |go she's so perfect| +|08/01/2022 02:37:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 02:37:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:07| o/ +|08/01/2022 02:37:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:07| |DAMN I'M HUNGRY FOR PIZZA| +|08/01/2022 02:37:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:08| |PASTA TIME| +|08/01/2022 02:37:08| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:10| o/ +|08/01/2022 02:37:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:11| |DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE | +|08/01/2022 02:37:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:14| |PARTY TIME| +|08/01/2022 02:37:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:15| |Carbon coated butts!| +|08/01/2022 02:37:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:16| |Pizza Time| +|08/01/2022 02:37:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:19| |party time| +|08/01/2022 02:37:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:20| |PIZZA TIME| +|08/01/2022 02:37:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:21| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:23| sexually? +|08/01/2022 02:37:24| |PASTA TIME| +|08/01/2022 02:37:24| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:24| |PASTA TIME| +|08/01/2022 02:37:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:25| |PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME PASTA TIME | +|08/01/2022 02:37:26| ITADAKIMASU! +|08/01/2022 02:37:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:28| |How are they not fat as fuck?| +|08/01/2022 02:37:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:29| FUNICULAAAAAAAAAAAAAAAA +|08/01/2022 02:37:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:30| |PIZZA TIMEMM| +|08/01/2022 02:37:31| |PIZZA TIME!| +|08/01/2022 02:37:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:31| |ARCHITECT ACADEMY| +|08/01/2022 02:37:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:32| |FUNICULI FUNICULA| +|08/01/2022 02:37:33| |PIZZA PASTA| +|08/01/2022 02:37:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:33| FUNICULI +|08/01/2022 02:37:33| |PIZZA LOGISTICS| +|08/01/2022 02:37:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:34| |PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD| +|08/01/2022 02:37:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:36| |NCOPPA JAMME JA| +|08/01/2022 02:37:37| |PIZZA TIME| +|08/01/2022 02:37:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:39| |PARTY HARD| +|08/01/2022 02:37:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:40| |FUNICULI FUNICULA| +|08/01/2022 02:37:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:40| |FAT GIRLS| +|08/01/2022 02:37:41| |god italian food is so good| +|08/01/2022 02:37:41| |PIZZA TIME| +|08/01/2022 02:37:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:42| |FUNICULI FUNICULA| +|08/01/2022 02:37:43| |DUCE STINKY FAT CARB LOAD| +|08/01/2022 02:37:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:44| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:46| |Tortalini on the Wals| +|08/01/2022 02:37:46| |ON MY BALLS| +|08/01/2022 02:37:47| |EAT A DUCK HE MUST| +|08/01/2022 02:37:48| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 02:37:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:49| |CARBON COATED PIZZA| +|08/01/2022 02:37:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:50| |PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HARD PARTY HA| +|08/01/2022 02:37:50| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 02:37:50| |anzio is so damn comfy| +|08/01/2022 02:37:51| |RUB A DUB DUB| +|08/01/2022 02:37:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:51| |This is why Anzio is poor| +|08/01/2022 02:37:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:37:52| |THANKS FOR THE GRUB| +|08/01/2022 02:37:52| |if only their fightiing was good as their food| +|08/01/2022 02:37:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:53| |Italian food sucks ass| +|08/01/2022 02:37:54| |EAT A DUCK HE MUST| +|08/01/2022 02:37:54| |Can I have some?| +|08/01/2022 02:37:55| |through the dark lord, amen| +|08/01/2022 02:37:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:55| |yukari no!| +|08/01/2022 02:37:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:56| AZUSA +|08/01/2022 02:37:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:56| |FUNICULLI FUNICILLA| +|08/01/2022 02:37:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:57| |Cheesy on peenie| +|08/01/2022 02:37:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:37:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:37:59| |Rub a dub dub| +|08/01/2022 02:38:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:02| |im hungry now bros| +|08/01/2022 02:38:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:03| |im hungy....| +|08/01/2022 02:38:04| |PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME PIZZA TIME | +|08/01/2022 02:38:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:05| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:38:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:06| HAHAHAHA +|08/01/2022 02:38:06| |WHEN THE MOON HITS YOUR EYE LIKE A BIG PIZZA PIE| +|08/01/2022 02:38:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:06| |RUB A DUB DUB| +|08/01/2022 02:38:08| cute +|08/01/2022 02:38:09| |FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! FUNICULI, FUNICULA! | +|08/01/2022 02:38:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:10| |IF I FLIP THESE TANKS MR AZIZ WILL FLIP OUT| +|08/01/2022 02:38:10| |CUTE DUCE| +|08/01/2022 02:38:10| |I'M SO FUCKING HUNGRY| +|08/01/2022 02:38:11| |GAY MOMENT| +|08/01/2022 02:38:11| |YAME YAME JA FUNICULLI _FUNICULLA| +|08/01/2022 02:38:13| |my wife yukari is eating for two!| +|08/01/2022 02:38:14| |BRBR PIZZA BREAK| +|08/01/2022 02:38:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 02:38:14| cute +|08/01/2022 02:38:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:16| |PIZZA PASTA PUT IT IN A BOX| +|08/01/2022 02:38:16| GAY +|08/01/2022 02:38:17| 🍕🍝🍕🍝🍕🍝🍕🍝🍕🍝 +|08/01/2022 02:38:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 02:38:22| |italian food > nip food any day of the week| +|08/01/2022 02:38:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:24| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 02:38:25| |GAY GAY GAY GAY GAY| +|08/01/2022 02:38:26| cute +|08/01/2022 02:38:28| |Anzio best sports | +|08/01/2022 02:38:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 02:38:31| |Erwin is cute| +|08/01/2022 02:38:31| |jej GAYYYYYYYYYYYYYYYYYYYY| +|08/01/2022 02:38:32| |I want them them to have a strength contest| +|08/01/2022 02:38:34| ERIKA>DUCE +|08/01/2022 02:38:36| kiss +|08/01/2022 02:38:39| |>he's never ate pizza sushi| +|08/01/2022 02:38:39| |gay handshake| +|08/01/2022 02:38:40| CAESAR +|08/01/2022 02:38:42| |TAKA CHAN| +|08/01/2022 02:38:42| Disowned +|08/01/2022 02:38:43| CAESAR +|08/01/2022 02:38:43| KAISER +|08/01/2022 02:38:44| CAESAR +|08/01/2022 02:38:44| cringe +|08/01/2022 02:38:44| o/ +|08/01/2022 02:38:45| |HAIL CAESAR o/| +|08/01/2022 02:38:45| AUTISM +|08/01/2022 02:38:46| KAISA +|08/01/2022 02:38:47| |WATASHI WA CAESAR| +|08/01/2022 02:38:47| chad +|08/01/2022 02:38:48| |AVE CAESAR| +|08/01/2022 02:38:49| |ayyy lmao look at caesar's head| +|08/01/2022 02:38:49| KAISER +|08/01/2022 02:38:50| |god damned larper| +|08/01/2022 02:38:50| |MEIN KAISER| +|08/01/2022 02:38:50| |It's apromise totally| +|08/01/2022 02:38:50| chuunibyou +|08/01/2022 02:38:50| CARPACCIO +|08/01/2022 02:38:50| |AVE CEASAR! | +|08/01/2022 02:38:52| |KAISAR, my wife| +|08/01/2022 02:38:54| |NO CEASAR DON'T GO TO THE SENATE| +|08/01/2022 02:38:54| |Is that right lmao larper| +|08/01/2022 02:38:54| |HEIL CAESAR | +|08/01/2022 02:38:55| SHIIIIIIIIIIZAAAAAAAAAA!!!!!!!!! +|08/01/2022 02:38:56| |>name drop| +|08/01/2022 02:38:56| AVE +|08/01/2022 02:38:57| |CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO CARPACCIO | +|08/01/2022 02:38:59| CUTE +|08/01/2022 02:39:00| |MARK MY WORDS YOU PIECE OF SHIT| +|08/01/2022 02:39:02| |ayyyy lmao| +|08/01/2022 02:39:03| PRAVDA +|08/01/2022 02:39:03| |ENTA ENTA MISSION| +|08/01/2022 02:39:04| GASPACCIO? +|08/01/2022 02:39:04| |HAIL CEASAR| +|08/01/2022 02:39:05| |Sexy Cappachio| +|08/01/2022 02:39:05| KAISAR +|08/01/2022 02:39:06| |How do two girls have sex in a tank?| +|08/01/2022 02:39:06| |CHEESI ON MY PEENI AND SOME SAUÇA ON MY BALLS| +|08/01/2022 02:39:07| |GREMLIN BROS| +|08/01/2022 02:39:08| |BIG NONNA TITS| +|08/01/2022 02:39:08| |meanwhile, back at the plot...| +|08/01/2022 02:39:09| smol +|08/01/2022 02:39:10| |ENTER BEST GIRL| +|08/01/2022 02:39:10| STALIN +|08/01/2022 02:39:10| |TIME FOR UOOOOOOOOOOOOOOOOOOOOOOH| +|08/01/2022 02:39:10| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:39:11| |DUMB MIDGET| +|08/01/2022 02:39:11| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:39:12| YES +|08/01/2022 02:39:12| widekatyusha.mp4 +|08/01/2022 02:39:13| URAAAAAAAA +|08/01/2022 02:39:13| E +|08/01/2022 02:39:13| PRAVDA +|08/01/2022 02:39:14| GREMLIM +|08/01/2022 02:39:14| |HAH TIME FOR TETRIS| +|08/01/2022 02:39:15| |NONNA SAMA| +|08/01/2022 02:39:15| |YOU MEAN SEESIR!!!111| +|08/01/2022 02:39:16| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 02:39:16| |A FUCKING RAMP| +|08/01/2022 02:39:16| |YO LOOK AT THIS MIDGET| +|08/01/2022 02:39:16| N +|08/01/2022 02:39:16| UOOOOOOOOOOOOOOOOOH +|08/01/2022 02:39:16| |>136 cm| +|08/01/2022 02:39:16| |WOOOOOO GREMLIN| +|08/01/2022 02:39:17| |HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME HARDBASS TIME | +|08/01/2022 02:39:18| cute&funny +|08/01/2022 02:39:18| COMMIES +|08/01/2022 02:39:20| R +|08/01/2022 02:39:20| nonna.... +|08/01/2022 02:39:20| |Have you heard this saying?| +|08/01/2022 02:39:21| imagine +|08/01/2022 02:39:21| COMMIE +|08/01/2022 02:39:21| BRITBONGS +|08/01/2022 02:39:22| |BEST GIRL| +|08/01/2022 02:39:23| SUMIPE +|08/01/2022 02:39:25| |DUMB MIDGET AND DUMB SLAG| +|08/01/2022 02:39:25| |CUNNY CUNNY CUNNY CUNNY CUNNY CUNNY| +|08/01/2022 02:39:25| |18 years old btw| +|08/01/2022 02:39:25| |COMMUNISM YES| +|08/01/2022 02:39:27| TOT +|08/01/2022 02:39:29| |HIGH IQ| +|08/01/2022 02:39:29| |hey this isnt on the ost| +|08/01/2022 02:39:29| M +|08/01/2022 02:39:32| |the yusha.gif| +|08/01/2022 02:39:32| |based soundtrack| +|08/01/2022 02:39:32| |i dont care saga of pravda is canon in my mind| +|08/01/2022 02:39:32| |BUILT FOR DIRLEWANGER COCK| +|08/01/2022 02:39:32| cute +|08/01/2022 02:39:33| GREMLIN +|08/01/2022 02:39:33| |JAM IN TEA WHAT THE FUCK| +|08/01/2022 02:39:33| Messy +|08/01/2022 02:39:34| IMAGINE +|08/01/2022 02:39:34| |have you heard this s---SHUT THE FUCK UP| +|08/01/2022 02:39:35| S +|08/01/2022 02:39:35| |DUM BMIDGET| +|08/01/2022 02:39:35| |Jam in Tea Shame | +|08/01/2022 02:39:37| |DON'T TELL ME WAHT TO DO NONNA| +|08/01/2022 02:39:37| |IMAGINE HOW FUN IT WOULD BE| +|08/01/2022 02:39:39| |COMMIE CUNNY| +|08/01/2022 02:39:40| N +|08/01/2022 02:39:42| |Yankee comes from dutch "janke", which means small jan.| +|08/01/2022 02:39:43| |cheeki breeki iv damke| +|08/01/2022 02:39:43| |du russians actually do this?| +|08/01/2022 02:39:45| |Brits shown their place| +|08/01/2022 02:39:47| |MY COCK WHEN SHE SPEAKS RUSSIAN UHOOOOOOOOOOOOO| +|08/01/2022 02:39:49| |Smug brat| +|08/01/2022 02:39:51| |>127 cm| +|08/01/2022 02:39:55| |>communist "food"| +|08/01/2022 02:39:55| |dumb midget| +|08/01/2022 02:39:57| imagine +|08/01/2022 02:39:57| IMAGINE +|08/01/2022 02:39:59| |dumbo Katyusha| +|08/01/2022 02:40:01| IMAGINE +|08/01/2022 02:40:03| |Katyusha is so small because she got nothing to eat| +|08/01/2022 02:40:04| |>tfw nonna is 1 cm taller than me| +|08/01/2022 02:40:06| imagine.. +|08/01/2022 02:40:08| |Why are Russians always evil?| +|08/01/2022 02:40:12| |>tfw no katyusha gf| +|08/01/2022 02:40:15| |small nonna| +|08/01/2022 02:40:16| |I WANT TO BE THAT CHAIR| +|08/01/2022 02:40:17| |massive nonna tits| +|08/01/2022 02:40:17| |desu wa| +|08/01/2022 02:40:20| |needs spanking correction| +|08/01/2022 02:40:20| |imagine being shorter than any of the guppies| +|08/01/2022 02:40:22| |HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +|08/01/2022 02:40:23| |russians are the good guys of history| +|08/01/2022 02:40:23| |russians are evil irl too| +|08/01/2022 02:40:23| |YFW Katusha is to small to be my cock sleeve| +|08/01/2022 02:40:26| |BEADY EYES, ANGLO LIES| +|08/01/2022 02:40:30| |L O N D O N| +|08/01/2022 02:40:31| |are they?| +|08/01/2022 02:40:31| LLOONNNNNGGGG +|08/01/2022 02:40:33| |HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO HOSHINO | +|08/01/2022 02:40:36| |F2 boi| +|08/01/2022 02:40:36| |Nonna is taller than the average American male| +|08/01/2022 02:40:36| |It is impossible to sneeze with open eyes.| +|08/01/2022 02:40:36| TSUCHIYA +|08/01/2022 02:40:37| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? v| +|08/01/2022 02:40:39| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? vv| +|08/01/2022 02:40:40| YEAAAAH +|08/01/2022 02:40:43| LEOPON +|08/01/2022 02:40:45| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +|08/01/2022 02:40:45| |Lepon gang| +|08/01/2022 02:40:46| |same BR as G btw| +|08/01/2022 02:40:47| 5'7'' +|08/01/2022 02:40:47| |Auto club real MVPs| +|08/01/2022 02:40:48| ENTER +|08/01/2022 02:40:51| |This is just real representation of history where everyone else but the Finns is evil| +|08/01/2022 02:40:52| |FUCK YEAH LEOPON BEST TEAM| +|08/01/2022 02:40:52| MALLARDS +|08/01/2022 02:40:53| SODOKO +|08/01/2022 02:40:53| CLONES +|08/01/2022 02:40:54| |THE CLONE WARS| +|08/01/2022 02:40:54| onaholes +|08/01/2022 02:40:54| sodoko +|08/01/2022 02:40:54| ENTER +|08/01/2022 02:40:54| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +|08/01/2022 02:40:55| SODOCLONES +|08/01/2022 02:40:56| ENTER +|08/01/2022 02:40:57| sodoks +|08/01/2022 02:40:57| Helemts! +|08/01/2022 02:40:58| |WOST GRILLS| +|08/01/2022 02:40:59| |LEOPON BEST TEAM| +|08/01/2022 02:40:59| SODOKO +|08/01/2022 02:41:01| |SODOKO BTFO| +|08/01/2022 02:41:03| SODOKO +|08/01/2022 02:41:03| |PUBLIC IMMORALITY COMMITTEE| +|08/01/2022 02:41:03| SODOKO +|08/01/2022 02:41:04| |SODOKO LOVE| +|08/01/2022 02:41:04| |LEOPON BEST TEAM| +|08/01/2022 02:41:06| |Finns aren't human, so they don't count| +|08/01/2022 02:41:09| |OH NO NO NO NO LOOK AT THAT HAIR| +|08/01/2022 02:41:10| >shorten +|08/01/2022 02:41:10| CUTE +|08/01/2022 02:41:11| |sodoko and the onaholes| +|08/01/2022 02:41:14| |FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS FUCK NIPS| +|08/01/2022 02:41:17| |Finns are superhuman| +|08/01/2022 02:41:17| |it doesn't look like a mallard miho| +|08/01/2022 02:41:18| |no it douesnt| +|08/01/2022 02:41:19| facts +|08/01/2022 02:41:19| Mallard +|08/01/2022 02:41:22| (sexually) +|08/01/2022 02:41:23| >RTFM +|08/01/2022 02:41:24| |DUCKS ARE THE SUPREME CHAMPIONS| +|08/01/2022 02:41:24| RTFM +|08/01/2022 02:41:27| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +|08/01/2022 02:41:29| |>reading the manual| +|08/01/2022 02:41:30| |Finns are dying everyday| +|08/01/2022 02:41:30| |HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHINO? HOSHI| +|08/01/2022 02:41:34| ownd +|08/01/2022 02:41:35| HAAAAAAI +|08/01/2022 02:41:37| |SHUT UP MMO| +|08/01/2022 02:41:38| haaaaaaaaaaa. +|08/01/2022 02:41:38| haaaaaaaaaaai +|08/01/2022 02:41:39| haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai +|08/01/2022 02:41:39| haaaaaaaaaiiiiiiiiiiiiiiii +|08/01/2022 02:41:40| HAAAAAAAAAAAAAI +|08/01/2022 02:41:42| Haaaiiiiii +|08/01/2022 02:41:42| |SHUT UP MOMO| +|08/01/2022 02:41:42| haaaaaaaaaaaaai +|08/01/2022 02:41:43| |CUTE CUTE CUTE| +|08/01/2022 02:41:45| >momo +|08/01/2022 02:41:48| |>Finna are dying everyday - not fast enough| +|08/01/2022 02:41:48| |we just do okay??| +|08/01/2022 02:41:50| |MOMO HATE| +|08/01/2022 02:41:50| |momo no one cares| +|08/01/2022 02:41:52| foreshadowing +|08/01/2022 02:41:53| |Anons I'm getting drunk...| +|08/01/2022 02:41:55| |time for PLOT!| +|08/01/2022 02:41:56| >subtle +|08/01/2022 02:41:57| |based lazy bunnies| +|08/01/2022 02:41:59| >momo +|08/01/2022 02:42:00| |DAME DA| +|08/01/2022 02:42:00| |Finns have the superior mongol steppe genepool| +|08/01/2022 02:42:01| |CHILL OUT MOMO| +|08/01/2022 02:42:03| MOMO +|08/01/2022 02:42:04| DRAMA +|08/01/2022 02:42:04| ... +|08/01/2022 02:42:04| |The bible does not mention any cats.| +|08/01/2022 02:42:04| >Momo +|08/01/2022 02:42:04| |fucking momo| +|08/01/2022 02:42:06| |MOMO ruining the moment again| +|08/01/2022 02:42:06| :O +|08/01/2022 02:42:08| |shut up momo| +|08/01/2022 02:42:09| |Next year, r-right?| +|08/01/2022 02:42:10| |why are you even here momo| +|08/01/2022 02:42:11| Momobros.... +|08/01/2022 02:42:14| :0 +|08/01/2022 02:42:14| |;0 momo | +|08/01/2022 02:42:17| |i am going to MURDER momo| +|08/01/2022 02:42:17| |P L O T| +|08/01/2022 02:42:23| |the plot is a bit retarded desu| +|08/01/2022 02:42:27| flat +|08/01/2022 02:42:28| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 02:42:34| |CHICKEN KATSU| +|08/01/2022 02:42:34| |Your face is a bit retarded desu| +|08/01/2022 02:42:45| |hot pot| +|08/01/2022 02:42:45| comfy +|08/01/2022 02:42:45| |Anon wtf....| +|08/01/2022 02:42:45| |imagine a guppie in one of those robes and nothing else| +|08/01/2022 02:42:46| |that food looks good| +|08/01/2022 02:42:47| CANNIBALISM +|08/01/2022 02:42:51| |anzu's manko| +|08/01/2022 02:42:51| |perfect wife| +|08/01/2022 02:42:51| |an an an an| +|08/01/2022 02:42:52| Anglerfish1 +|08/01/2022 02:42:52| |break the pasta| +|08/01/2022 02:42:53| |ANKOU NABE| +|08/01/2022 02:42:56| |is anglerfish tasty?| +|08/01/2022 02:42:56| COMFY +|08/01/2022 02:42:56| kek +|08/01/2022 02:42:57| |it only goes retarded levels in der film when they reuse this exact plot| +|08/01/2022 02:43:00| |i want to muder and eat anzu| +|08/01/2022 02:43:02| |Not at all| +|08/01/2022 02:43:05| |I want Anzu's nabe as well| +|08/01/2022 02:43:06| |its oishii| +|08/01/2022 02:43:08| |You are watching this under your kotatsu, right?| +|08/01/2022 02:43:11| |i want anzu to murder and eat me| +|08/01/2022 02:43:11| |does the supercut include the anglerfish dance ova?| +|08/01/2022 02:43:11| |Anzu wants to eat the anglerfish. This confirms it!| +|08/01/2022 02:43:15| |Anzus belly uoooooohhhh| +|08/01/2022 02:43:15| |anzu overrated| +|08/01/2022 02:43:16| |Miho is ruthless| +|08/01/2022 02:43:17| |Anzu Hotpot| +|08/01/2022 02:43:20| |ANKIMO UMAI| +|08/01/2022 02:43:21| |cool momo jacket| +|08/01/2022 02:43:23| |I should buy a kotatsu| +|08/01/2022 02:43:23| |shut down| +|08/01/2022 02:43:24| |BASED MIHO| +|08/01/2022 02:43:25| |>I don't care lol| +|08/01/2022 02:43:29| |i'm sitting under theirs| +|08/01/2022 02:43:29| CUTE +|08/01/2022 02:43:29| |CUTE MOMO| +|08/01/2022 02:43:30| |CUTE ANZU | +|08/01/2022 02:43:32| BOOBA +|08/01/2022 02:43:35| BOOBS +|08/01/2022 02:43:36| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 02:43:36| |ANOTHER CUTE ANZU| +|08/01/2022 02:43:36| |MOMO DORK| +|08/01/2022 02:43:38| UOOOOOOG +|08/01/2022 02:43:38| |big yuzu boobs| +|08/01/2022 02:43:39| UOHHHHHHHHH +|08/01/2022 02:43:40| |YUZU'S FAT TITS| +|08/01/2022 02:43:40| booba +|08/01/2022 02:43:41| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 02:43:43| |Am I supposed to feel bad now?| +|08/01/2022 02:43:43| |stfu momo| +|08/01/2022 02:43:44| |RYONA TIME| +|08/01/2022 02:43:45| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 02:43:47| | +TANOSHI| +|08/01/2022 02:43:48| ;_; +|08/01/2022 02:43:49| |See, Anzu could kick my ass!| +|08/01/2022 02:43:50| |V V| +|08/01/2022 02:43:50| |momo death| +|08/01/2022 02:43:51| >momo +|08/01/2022 02:43:51| |What exactly is Momo good for?| +|08/01/2022 02:43:52| sadge +|08/01/2022 02:43:53| | +TANOSHI| +|08/01/2022 02:43:55| |I HATE MOMO I LOVE MOMO'S MOMOS I HATE MOMO I LOVE MOMO'S MOMOS I HATE MOMO I LOVE MOMO'S MOMOS | +|08/01/2022 02:43:55| |I don't think about Momo at all!| +|08/01/2022 02:43:56| segs +|08/01/2022 02:43:57| |miho noises| +|08/01/2022 02:43:57| |ABSOLUTELY NOTHING| +|08/01/2022 02:43:57| |the good ol' days ;_;| +|08/01/2022 02:43:59| COWARD! +|08/01/2022 02:44:00| |raising siblings| +|08/01/2022 02:44:01| |fanta na| +|08/01/2022 02:44:02| |hottu pottu| +|08/01/2022 02:44:03| |Fun and Momo HAHAHA| +|08/01/2022 02:44:04| |yuki da| +|08/01/2022 02:44:05| |momo is good for domestic violence| +|08/01/2022 02:44:08| |momo has no real personality| +|08/01/2022 02:44:09| |Aight i'mma head of to pee can't deal with this shit| +|08/01/2022 02:44:11| |ryona with momo| +|08/01/2022 02:44:12| |Sergio Leone and Enio Morricone went to the same school.| +|08/01/2022 02:44:12| |They didn't tell her shit| +|08/01/2022 02:44:21| |you're the one suffering the domestic violence| +|08/01/2022 02:44:22| JEWS +|08/01/2022 02:44:25| |not that plot again| +|08/01/2022 02:44:26| |momo on scream piss time| +|08/01/2022 02:44:29| |YOU ALREADY PUT A BURDEN ON HER| +|08/01/2022 02:44:29| Where? +|08/01/2022 02:44:29| |CUTE MOMO| +|08/01/2022 02:44:30| |MUD WRSTLING!| +|08/01/2022 02:44:33| |I AM the domestic violence| +|08/01/2022 02:44:35| |ryona with momo| +|08/01/2022 02:44:37| |this first ep is taking really long| +|08/01/2022 02:44:38| |;_; Mextfag won| +|08/01/2022 02:44:38| |momo used to be cute| +|08/01/2022 02:44:38| |Anzu's mud| +|08/01/2022 02:44:39| |BITCH SHIHO| +|08/01/2022 02:44:40| mommy! +|08/01/2022 02:44:41| SHITHO +|08/01/2022 02:44:43| MAHO +|08/01/2022 02:44:45| |maho is my wife| +|08/01/2022 02:44:46| |my wife maho| +|08/01/2022 02:44:47| |Maho, you must kill her| +|08/01/2022 02:44:47| MAHOOOOO +|08/01/2022 02:44:47| |SHIT MOM| +|08/01/2022 02:44:50| |piss break is when momo shows up again| +|08/01/2022 02:44:51| |oh great, they're dead| +|08/01/2022 02:44:52| DISHONORABRUR +|08/01/2022 02:44:52| |why are moms so quick to disown their daughters| +|08/01/2022 02:44:53| |Spanking Momo! Slapping Momo! Punching Momo! Pissing on Momo!| +|08/01/2022 02:44:54| |haha katyusha looks like a penis| +|08/01/2022 02:44:55| |Shame on Family| +|08/01/2022 02:44:55| |my wife| +|08/01/2022 02:44:55| |FUCK YOU MOM| +|08/01/2022 02:44:56| |FUCK THIS DAUGTER OF MINE| +|08/01/2022 02:44:58| DISHONORABLE +|08/01/2022 02:45:00| |SHIT MUM| +|08/01/2022 02:45:01| |the worst mother in all of senshado| +|08/01/2022 02:45:03| |DEATH TO SHIHO| +|08/01/2022 02:45:03| |GO FUCK AN UGLY BASTARD YOU HAG| +|08/01/2022 02:45:04| |Sad Maho| +|08/01/2022 02:45:09| |name a worse mum| +|08/01/2022 02:45:10| |be more like yukari-mom. don't disown your kids| +|08/01/2022 02:45:11| |SHAMERFUR DISPRAY| +|08/01/2022 02:45:12| |Cute Maho| +|08/01/2022 02:45:15| |just push forward| +|08/01/2022 02:45:15| |HAG LOVE| +|08/01/2022 02:45:17| |mating press the mother NOW| +|08/01/2022 02:45:18| |AD VAN CING!| +|08/01/2022 02:45:19| |FUCK BITCH| +|08/01/2022 02:45:19| |>Just push forward| +|08/01/2022 02:45:20| |HOW DID SUCH A CRAPPY WOMAN GIVE BIRTH TO TWO ANGELS| +|08/01/2022 02:45:22| |FUCK SHIHO| +|08/01/2022 02:45:23| |what zero dick does to a bitch| +|08/01/2022 02:45:24| |BOKO PANTSU| +|08/01/2022 02:45:25| |DISINHERITENCE | +|08/01/2022 02:45:26| |and suddenly, a panty shot| +|08/01/2022 02:45:26| PANTSU +|08/01/2022 02:45:26| PANTSU +|08/01/2022 02:45:26| pantsu +|08/01/2022 02:45:27| |warm pantsu| +|08/01/2022 02:45:27| AZUSA +|08/01/2022 02:45:27| |>piss break >not just carrying the laptop to the toilet| +|08/01/2022 02:45:29| |I WANT TO BE THOSE PANTIES| +|08/01/2022 02:45:29| |UUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHH PANTY| +|08/01/2022 02:45:31| |>no heating| +|08/01/2022 02:45:31| |>lip balm| +|08/01/2022 02:45:34| |>miho is left to die in a cold street if she doesn't win this tournament| +|08/01/2022 02:45:36| |girls und pantsu...........| +|08/01/2022 02:45:37| |bring soup| +|08/01/2022 02:45:38| |sex with usagi...| +|08/01/2022 02:45:38| |Boko bear pantus!!!!| +|08/01/2022 02:45:39| |>shiho will never disown you| +|08/01/2022 02:45:41| |>watching on a laptop| +|08/01/2022 02:45:42| |LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA LOVE AZUSA | +|08/01/2022 02:45:46| |>no fun allowed| +|08/01/2022 02:45:48| |>putting your poop bacteria on your laptop| +|08/01/2022 02:45:49| BASED +|08/01/2022 02:45:50| |where are the males chiyo???| +|08/01/2022 02:45:52| |bear panties| +|08/01/2022 02:45:52| |watching on a laptop is peak comfy| +|08/01/2022 02:45:52| BASED +|08/01/2022 02:45:53| |fun police| +|08/01/2022 02:45:53| eeeeee +|08/01/2022 02:45:53| BASED +|08/01/2022 02:45:54| |I AN'T GONNA LIVE FOREVER| +|08/01/2022 02:45:56| |well said| +|08/01/2022 02:45:57| |based /his/| +|08/01/2022 02:45:57| BASED +|08/01/2022 02:45:57| |Sodoko fuck off| +|08/01/2022 02:45:57| BASED +|08/01/2022 02:45:58| |I AINT GONNA LIVE FOREVER| +|08/01/2022 02:46:00| |LOVE TAEKO| +|08/01/2022 02:46:00| |I AINT GONNA LIVE FOREVER| +|08/01/2022 02:46:02| |>current year /a/ mods| +|08/01/2022 02:46:02| |Erwin wins| +|08/01/2022 02:46:04| |Erwin... | +|08/01/2022 02:46:06| :( +|08/01/2022 02:46:07| |TAEKO LOVE| +|08/01/2022 02:46:15| |yuki da| +|08/01/2022 02:46:16| BOKO +|08/01/2022 02:46:21| |Mods are this cute?| +|08/01/2022 02:46:21| IS-2 +|08/01/2022 02:46:22| |job of the century| +|08/01/2022 02:46:23| |BELAYA ARMIYA CHYORNIY BARON| +|08/01/2022 02:46:26| |How much does Sodoko get paid for all that janny work I wonder| +|08/01/2022 02:46:28| |gay ass tsu| +|08/01/2022 02:46:28| Bokofags +|08/01/2022 02:46:30| |boko jar| +|08/01/2022 02:46:30| boko +|08/01/2022 02:46:30| TOTSUGEKIII +|08/01/2022 02:46:30| |Js 2 or Is 2 Which one Bros?| +|08/01/2022 02:46:32| |literally unplayable| +|08/01/2022 02:46:32| |I thought they were only allowed 10 tanks max?| +|08/01/2022 02:46:33| |HELP ME BOKO| +|08/01/2022 02:46:34| |>she does it for free| +|08/01/2022 02:46:35| |uooooh JS| +|08/01/2022 02:46:37| |she does it for free| +|08/01/2022 02:46:39| |Will I turn into a guppy if I become a mod?| +|08/01/2022 02:46:41| |>a fucking ramp| +|08/01/2022 02:46:44| | Jack the ripper was left handed.| +|08/01/2022 02:46:45| |3rd match can field 15 I think?| +|08/01/2022 02:46:46| Yes +|08/01/2022 02:46:46| |KV-2 Loev| +|08/01/2022 02:46:47| |A FUCKING RAMP| +|08/01/2022 02:46:48| |A FUCKING RAMP| +|08/01/2022 02:46:50| >skirts +|08/01/2022 02:46:51| SAMUI +|08/01/2022 02:46:51| |>cope slope| +|08/01/2022 02:46:52| |it's an aviation cruiser, it's okay!| +|08/01/2022 02:46:52| |A. FUCKING. RAMP| +|08/01/2022 02:46:53| winterketten +|08/01/2022 02:46:55| |10 tanks for only the first few rounds right| +|08/01/2022 02:46:55| >ramp +|08/01/2022 02:46:56| WINTERKETTEN +|08/01/2022 02:47:00| |uhhh the antifreeze?| +|08/01/2022 02:47:02| |no, you'll just be a faggot that does it for no monetary compensation whatsoever| +|08/01/2022 02:47:04| >RAMP +|08/01/2022 02:47:05| |accurate german winter uniforms| +|08/01/2022 02:47:08| |based mako| +|08/01/2022 02:47:09| |there is nothing wrong with having a ramp.| +|08/01/2022 02:47:09| |S O D O K O| +|08/01/2022 02:47:11| SODOKO +|08/01/2022 02:47:14| |Over by Christmas r-right?| +|08/01/2022 02:47:15| |SO DO KO| +|08/01/2022 02:47:16| |rape sodoko| +|08/01/2022 02:47:16| |killer fashion| +|08/01/2022 02:47:17| |rampfag cope| +|08/01/2022 02:47:17| |rabbit figtht| +|08/01/2022 02:47:17| |AZUSA HAVING A SNOWBALL FIGHT| +|08/01/2022 02:47:18| |its 1941 all over again... | +|08/01/2022 02:47:19| BASED +|08/01/2022 02:47:22| |based /his/| +|08/01/2022 02:47:23| ENTER +|08/01/2022 02:47:23| KATYUSHA +|08/01/2022 02:47:24| eheheh +|08/01/2022 02:47:25| | smol| +|08/01/2022 02:47:25| |YUKI NO SHINGUN| +|08/01/2022 02:47:26| ENTER +|08/01/2022 02:47:26| KATYUSHA +|08/01/2022 02:47:26| |RED BLOOD OVER PARADISE!| +|08/01/2022 02:47:26| |THE YUSHA| +|08/01/2022 02:47:27| |>nothing wrong with having a ramp. t. Euro| +|08/01/2022 02:47:27| ENTER +|08/01/2022 02:47:27| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 02:47:27| WIDE +|08/01/2022 02:47:28| |Sodoko died at this point in the doujin| +|08/01/2022 02:47:28| qWIDE +|08/01/2022 02:47:28| ENTER +|08/01/2022 02:47:29| enter +|08/01/2022 02:47:29| |KATYUSHA WALK| +|08/01/2022 02:47:29| KATYUSHA +|08/01/2022 02:47:30| widekatyusha.mp4 +|08/01/2022 02:47:30| ENTER +|08/01/2022 02:47:30| |ENTER THE YUSHA| +|08/01/2022 02:47:32| |SO SMOL| +|08/01/2022 02:47:32| ENTER +|08/01/2022 02:47:32| WIDE +|08/01/2022 02:47:34| |WIDE TUSHA| +|08/01/2022 02:47:34| WIDE +|08/01/2022 02:47:34| |KATYUSHA SAMA| +|08/01/2022 02:47:34| |Undiluted anti freeze, freezes at 10,4 °F (-12 °C).| +|08/01/2022 02:47:34| smol +|08/01/2022 02:47:35| |KATYUSHA! KATYUSHA!| +|08/01/2022 02:47:35| WIDE +|08/01/2022 02:47:36| WIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIDE +|08/01/2022 02:47:36| ENTER +|08/01/2022 02:47:36| wide +|08/01/2022 02:47:37| WIDE +|08/01/2022 02:47:37| |WIDE KATYUSHA | +|08/01/2022 02:47:37| Widetyusha +|08/01/2022 02:47:37| |Красная Армия всех сильней.| +|08/01/2022 02:47:37| WIDE +|08/01/2022 02:47:38| WIDE +|08/01/2022 02:47:38| CUTE +|08/01/2022 02:47:39| WIDEKATYUSHA +|08/01/2022 02:47:40| |LOLI RAGE| +|08/01/2022 02:47:40| WIDE +|08/01/2022 02:47:40| |Yuki no Shingun!| +|08/01/2022 02:47:41| ZIFUBUKI +|08/01/2022 02:47:41| WIDE +|08/01/2022 02:47:42| |NONNA'S NONNAS| +|08/01/2022 02:47:42| WIDE +|08/01/2022 02:47:42| |nutcrackers inbound| +|08/01/2022 02:47:42| >OST +|08/01/2022 02:47:43| |WIDE CUNNY| +|08/01/2022 02:47:43| |>127 cm| +|08/01/2022 02:47:44| |W I D E| +|08/01/2022 02:47:44| |SONG OF DENISE STARTS PLAYIING| +|08/01/2022 02:47:45| |Katyusha thighs Katyusha thighs| +|08/01/2022 02:47:46| |little miss poofy pants| +|08/01/2022 02:47:46| ENTER +|08/01/2022 02:47:46| |WIde nutcracker| +|08/01/2022 02:47:47| |based nutcracker| +|08/01/2022 02:47:47| |MIDGET LAUGH| +|08/01/2022 02:47:48| |that wide edit is great| +|08/01/2022 02:47:48| |WIDE KATYUSHA| +|08/01/2022 02:47:48| AHAHAHAHA +|08/01/2022 02:47:48| >BGM +|08/01/2022 02:47:48| AHAHHAHAHAHAHAHHAHAHAHAHAHAH +|08/01/2022 02:47:49| |SAORI STOCKINGS| +|08/01/2022 02:47:51| |smug katyusha| +|08/01/2022 02:47:51| HAHAHAHAHAHHA +|08/01/2022 02:47:52| |based nutcracker| +|08/01/2022 02:47:53| |Diluted anti freeze with 50% water, starts freezing at -22 °F (-30 °C)| +|08/01/2022 02:47:55| NONNA! +|08/01/2022 02:47:55| |*SONG FOR DENISSE RUMBLES IN THE DISTANCE*| +|08/01/2022 02:47:56| |short and shorter| +|08/01/2022 02:47:56| |I want to crack my nut on Katyusha| +|08/01/2022 02:47:56| |CRIMEA JE SRBJA| +|08/01/2022 02:47:56| |Katyusha is the perfect gulag commander| +|08/01/2022 02:47:57| flat +|08/01/2022 02:48:00| NONNA +|08/01/2022 02:48:00| |bowing down| +|08/01/2022 02:48:00| WIDE +|08/01/2022 02:48:01| |uoh against uoh| +|08/01/2022 02:48:02| |>she has to crouch| +|08/01/2022 02:48:03| NONNA +|08/01/2022 02:48:03| KATYUSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:48:03| MOGGED +|08/01/2022 02:48:03| |Wide af| +|08/01/2022 02:48:05| |Katyusha the nut cracker| +|08/01/2022 02:48:06| KNEEL +|08/01/2022 02:48:07| |big nonna tits| +|08/01/2022 02:48:07| >IMAGINE +|08/01/2022 02:48:08| MOGGED +|08/01/2022 02:48:08| |MASTER BLASTER| +|08/01/2022 02:48:09| CUTE +|08/01/2022 02:48:09| |CHAD YUSHA| +|08/01/2022 02:48:09| |SHE'S HUGE| +|08/01/2022 02:48:09| |GATTAI DA| +|08/01/2022 02:48:10| |Was it autism?| +|08/01/2022 02:48:10| GATTAI +|08/01/2022 02:48:11| |need the Toyota red coolant| +|08/01/2022 02:48:12| |Based brat| +|08/01/2022 02:48:14| gremlinchads? +|08/01/2022 02:48:15| IMAGINE +|08/01/2022 02:48:17| |HOLY SHIT HOW DID SHE GET SO TALL| +|08/01/2022 02:48:17| |CYKA BLYAT| +|08/01/2022 02:48:18| PURGE +|08/01/2022 02:48:18| |little brat... | +|08/01/2022 02:48:20| |MASTER BLASTER RUNS THIS SHIP| +|08/01/2022 02:48:20| |>calling nonna a horse| +|08/01/2022 02:48:21| |you'll be PURGED| +|08/01/2022 02:48:21| 5'11 +|08/01/2022 02:48:21| |god I wish that were me with katyushacunny on my back| +|08/01/2022 02:48:22| |based, fuck nips| +|08/01/2022 02:48:22| |i want her to crack my nuts| +|08/01/2022 02:48:22| >PURGED +|08/01/2022 02:48:24| |God I wish that were me| +|08/01/2022 02:48:24| ara +|08/01/2022 02:48:25| |loli stalin| +|08/01/2022 02:48:26| |HOW DID SHE HAR THAT| +|08/01/2022 02:48:26| |sigma katyusha btfos heightlets| +|08/01/2022 02:48:26| |SEND TO SIBERIA| +|08/01/2022 02:48:26| |plot moment| +|08/01/2022 02:48:28| |PURGE ME PLEASE, KATYUSHA| +|08/01/2022 02:48:30| |ass bigger than Sayori| +|08/01/2022 02:48:30| |CHEEEEKI BREEEKI| +|08/01/2022 02:48:32| UOOOOHHHHH +|08/01/2022 02:48:32| |THE BANTS| +|08/01/2022 02:48:32| |MADE FOR POSTBIRTH DEATH| +|08/01/2022 02:48:33| |NEED RAPE CORRECTION| +|08/01/2022 02:48:35| SERVED +|08/01/2022 02:48:38| BUTT +|08/01/2022 02:48:38| |rape correction needed| +|08/01/2022 02:48:38| PSTD +|08/01/2022 02:48:38| |now im hungry| +|08/01/2022 02:48:40| purge +|08/01/2022 02:48:40| |DO SVIDANYA| +|08/01/2022 02:48:41| |DA SVIDANIYA| +|08/01/2022 02:48:41| |DAB on the Nishizumi style| +|08/01/2022 02:48:42| |DAMN FEMALE KID| +|08/01/2022 02:48:42| |DAMN CHILD| +|08/01/2022 02:48:46| |damn female child... | +|08/01/2022 02:48:46| |spanking needed| +|08/01/2022 02:48:46| |Katyusha built for rape and impregnation| +|08/01/2022 02:48:48| |do svidanya| +|08/01/2022 02:48:48| |Nonna's Katyusha piss smell neck| +|08/01/2022 02:48:49| |you know this saying?| +|08/01/2022 02:48:52| |tony kaku| +|08/01/2022 02:48:54| |How can she be rape corrected by other girls? That makes no sense| +|08/01/2022 02:48:55| |the child...the child...the child...| +|08/01/2022 02:48:56| |My imouto bought me katyusha figure for birthday| +|08/01/2022 02:49:02| |tank shells duh| +|08/01/2022 02:49:04| |cool imouto| +|08/01/2022 02:49:05| |bring more soup| +|08/01/2022 02:49:06| |Based sister| +|08/01/2022 02:49:06| |chi ha tan style| +|08/01/2022 02:49:07| |who wins, tony kaku or taku-san?| +|08/01/2022 02:49:07| |Sex your imouto| +|08/01/2022 02:49:09| UMU +|08/01/2022 02:49:12| |brush her teeth| +|08/01/2022 02:49:12| |we only have to kick in the door bros| +|08/01/2022 02:49:13| >retarded +|08/01/2022 02:49:13| |Красная Армия, марш марш вперёд| +|08/01/2022 02:49:16| IDIOTS +|08/01/2022 02:49:16| |she'll be rape corrected by the old men that pleasure saori| +|08/01/2022 02:49:16| |charge into the KV2 | +|08/01/2022 02:49:17| |NORIKO OK| +|08/01/2022 02:49:18| TOTSUGEKI +|08/01/2022 02:49:19| totsugeki? +|08/01/2022 02:49:21| |my older sister is a bitch| +|08/01/2022 02:49:22| |where's Saki| +|08/01/2022 02:49:22| TOTSUGEKI!!! +|08/01/2022 02:49:22| |NORIKO IS A BOY| +|08/01/2022 02:49:22| |Don't listen to the retards!| +|08/01/2022 02:49:26| GYAFUN +|08/01/2022 02:49:26| >TOTSUGEKI +|08/01/2022 02:49:27| |ya hooon| +|08/01/2022 02:49:27| GYAFUN +|08/01/2022 02:49:27| TOTSUGEKI +|08/01/2022 02:49:28| RETARDS +|08/01/2022 02:49:28| |the whole rotten structure will collapse bros| +|08/01/2022 02:49:28| |GA HOON| +|08/01/2022 02:49:30| |Orange Pekoe-san... have you heard this saying? Darjeeling is ultimate gf built for cuddles, love and marriage.| +|08/01/2022 02:49:31| |NORIKO IS A GIRL| +|08/01/2022 02:49:33| |JUST TOTSUGEKI| +|08/01/2022 02:49:33| TOTSUGEKI! +|08/01/2022 02:49:37| TOTSUGEKI +|08/01/2022 02:49:37| |Miho not so smug| +|08/01/2022 02:49:41| |Just kick the door in | +|08/01/2022 02:49:43| |is ふ hu or fu?| +|08/01/2022 02:49:45| |one more fucking saying darj, i swear| +|08/01/2022 02:49:48| |SUN TZU| +|08/01/2022 02:49:51| TOKKAN! +|08/01/2022 02:49:51| |Its fu | +|08/01/2022 02:49:52| |do you know this saying?| +|08/01/2022 02:49:54| |the whole rotten structure is about to come crashing down| +|08/01/2022 02:49:55| |have you heard this saying| +|08/01/2022 02:49:56| |its hu| +|08/01/2022 02:49:59| |ふ is fu and hu| +|08/01/2022 02:49:59| |PIZDEC VSEM NAHUI| +|08/01/2022 02:50:00| |Punching Momo's stupid face!| +|08/01/2022 02:50:02| |>German army be like| +|08/01/2022 02:50:02| |"All warfare is based"| +|08/01/2022 02:50:05| |SUN TSU: chingchonchang| +|08/01/2022 02:50:05| |fu with your lips like phew| +|08/01/2022 02:50:05| |that'snot True| +|08/01/2022 02:50:06| SEAMLESS +|08/01/2022 02:50:06| |Yeah, Japan would know| +|08/01/2022 02:50:07| TETRIS +|08/01/2022 02:50:08| |no one's benefited from prolonged warfare?| +|08/01/2022 02:50:08| |No seams| +|08/01/2022 02:50:08| ENTER +|08/01/2022 02:50:08| SEAMLESS +|08/01/2022 02:50:08| KATYUSHA +|08/01/2022 02:50:11| |sun tzu said that| +|08/01/2022 02:50:12| |sans seams| +|08/01/2022 02:50:12| |ふ is ふ, got it| +|08/01/2022 02:50:15| |best part| +|08/01/2022 02:50:17| |PANZER VOR| +|08/01/2022 02:50:18| KATYUSHA +|08/01/2022 02:50:20| KATYUSHA +|08/01/2022 02:50:20| KATYUSHA +|08/01/2022 02:50:20| |.... Over by Christmqs....| +|08/01/2022 02:50:21| SEAMS +|08/01/2022 02:50:21| |how many wars did sun tzu win?| +|08/01/2022 02:50:22| |SPASIBO DEDU ZA POBEDU)))))))))))))))))| +|08/01/2022 02:50:22| |IT'S TIME| +|08/01/2022 02:50:23| |EVERYBODY GET READY TO SING ALONG!| +|08/01/2022 02:50:23| |song time?| +|08/01/2022 02:50:24| |TERIS HERE WE GO| +|08/01/2022 02:50:26| KATYUSHA +|08/01/2022 02:50:26| |if you kill youre enemies they win| +|08/01/2022 02:50:26| |Krasnaya Armiya vseh silyney| +|08/01/2022 02:50:27| |TO THE GULAS| +|08/01/2022 02:50:27| |CYKA BLYAT| +|08/01/2022 02:50:28| |better not be the localized version with Tetris| +|08/01/2022 02:50:31| |Napoleon had panic fear of cats.| +|08/01/2022 02:50:31| |So which ep are we on currently?| +|08/01/2022 02:50:31| KATYUSHA +|08/01/2022 02:50:31| |>25 RUBLES| +|08/01/2022 02:50:35| |WHERE THE FUCK IS KATYUSHA SONG?| +|08/01/2022 02:50:35| |/a/ sings| +|08/01/2022 02:50:36| RASTVETALI +|08/01/2022 02:50:38| GULAG +|08/01/2022 02:50:38| |RASTSVETALI YABLONI I GRUSHI| +|08/01/2022 02:50:38| |>ふ is ふ, unironically the best way to see it| +|08/01/2022 02:50:39| URA +|08/01/2022 02:50:39| KATYUSHA +|08/01/2022 02:50:39| |ZA RODINU ZA STALINA| +|08/01/2022 02:50:40| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:41| URA +|08/01/2022 02:50:41| YEAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:41| |to the gulag... | +|08/01/2022 02:50:42| |SONG TIME SONG TIME| +|08/01/2022 02:50:42| |we're on like 7 or 8 i think| +|08/01/2022 02:50:42| |! Banger alert ! Banger alert !| +|08/01/2022 02:50:43| |SING WITH ME| +|08/01/2022 02:50:43| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:44| URA +|08/01/2022 02:50:44| >tetris +|08/01/2022 02:50:44| YPA +|08/01/2022 02:50:44| |SING DAMMIT| +|08/01/2022 02:50:44| |Here we go| +|08/01/2022 02:50:45| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:45| |URA | +|08/01/2022 02:50:45| |this got me into gup| +|08/01/2022 02:50:45| |>not the CR version| +|08/01/2022 02:50:45| |HERE IT IS| +|08/01/2022 02:50:46| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:46| YPAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:46| |LETS GOOOOOOOOOOOOO| +|08/01/2022 02:50:46| URAHHHHHHH +|08/01/2022 02:50:47| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:48| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:48| TETORISU +|08/01/2022 02:50:48| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:50:49| |PAPLOI TURNMANI NAD REKOI| +|08/01/2022 02:50:49| |HERE WE GO| +|08/01/2022 02:50:50| KATYUSHA +|08/01/2022 02:50:50| URAAAAAAAA +|08/01/2022 02:50:50| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:52| URAAAAHHHHH +|08/01/2022 02:50:52| SUMIPEEEEEEEEEEEEEEEE +|08/01/2022 02:50:53| KATYUSHA +|08/01/2022 02:50:53| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:50:53| KATYUSHA +|08/01/2022 02:50:53| URAAAH +|08/01/2022 02:50:53| |1 2 3 4| +|08/01/2022 02:50:54| URRRAAAAAAAAAAA +|08/01/2022 02:50:54| SUBS +|08/01/2022 02:50:55| UUUURRRRRAAAAAAAAA +|08/01/2022 02:50:55| |COMMUNIST WIN!!| +|08/01/2022 02:50:56| URAAAAAAAA +|08/01/2022 02:50:56| |based subs| +|08/01/2022 02:50:57| |HERE WE GO!| +|08/01/2022 02:50:57| HET +|08/01/2022 02:50:57| URRRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:57| wwwwwwwwww +|08/01/2022 02:50:57| |commie time| +|08/01/2022 02:50:57| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:50:57| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:50:57| |Quality subs| +|08/01/2022 02:51:00| UUUURRRRRAAAAAAAAA +|08/01/2022 02:51:01| KATYUSHA +|08/01/2022 02:51:01| KATYUSHA +|08/01/2022 02:51:01| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:02| |CYKA BLYAT| +|08/01/2022 02:51:02| |FUCKING GAY SUBTITLES GET THE FUCK OUT OF MY FACE| +|08/01/2022 02:51:02| URAAAAAAAAAAAAAAA +|08/01/2022 02:51:02| |What is this \fsp-10?| +|08/01/2022 02:51:02| a +|08/01/2022 02:51:02| |nice subs lmao| +|08/01/2022 02:51:02| URRAAAAAAAAA +|08/01/2022 02:51:03| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:03| KATYUSHA +|08/01/2022 02:51:03| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:06| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:06| KATYUSHA +|08/01/2022 02:51:06| |THE FIRST OF MANY SONG!| +|08/01/2022 02:51:06| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:06| |MAX VOLUME| +|08/01/2022 02:51:07| ENTER +|08/01/2022 02:51:07| RED +|08/01/2022 02:51:07| GOMMUNISM +|08/01/2022 02:51:07| |COMRADE KATYUSHA| +|08/01/2022 02:51:07| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:09| Katyusha +|08/01/2022 02:51:09| UUUURRRRRAAAAAAAAA +|08/01/2022 02:51:09| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:10| |VODKA VODKA PIEROGI CHEEKI BREEKI| +|08/01/2022 02:51:11| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:12| |HAIL LENIN, HAIL STALIN, HAIL KATYUSHA| +|08/01/2022 02:51:12| TETRIS +|08/01/2022 02:51:13| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:13| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:13| |MAN, THE OST IS SO GOOOOD| +|08/01/2022 02:51:14| KATYUSHAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:15| URQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ +|08/01/2022 02:51:15| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:15| KHOROSHO +|08/01/2022 02:51:18| |LONG LIVE THE PARTY| +|08/01/2022 02:51:18| |IF YOU ARE NOT RED YOU ARE A FAG| +|08/01/2022 02:51:18| uuuuuuuuuuuuuuuuuuuuurrrrrrrrrrrrrrrrrrrrrrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +|08/01/2022 02:51:21| FANG +|08/01/2022 02:51:23| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:23| |Cute russian larpers| +|08/01/2022 02:51:24| |naisu karaoke| +|08/01/2022 02:51:24| ORLA +|08/01/2022 02:51:26| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:26| |EVERYBODY GO RED| +|08/01/2022 02:51:27| |I don't speak Ruskie| +|08/01/2022 02:51:27| UUURRRRRRRRRRRRRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:28| UUUUUUURRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:28| |PRAT TAVO CHI BISMA PIEREGLA| +|08/01/2022 02:51:29| |It would be a shame if some danmaku covered these tryhard subs| +|08/01/2022 02:51:31| |KATSYUSHA CHEEKI BREEKI KATSUYSHA| +|08/01/2022 02:51:31| UUUUUUUUURRRRRRRRAAAAAAA +|08/01/2022 02:51:32| BERECLA +|08/01/2022 02:51:32| LYLBLYAAAAAAA +|08/01/2022 02:51:34| KINO +|08/01/2022 02:51:34| WOAHHH +|08/01/2022 02:51:36| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:36| |BETTER DEAD THAN RED| +|08/01/2022 02:51:36| URRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:37| UUUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:37| |BETTER DED THEN RED| +|08/01/2022 02:51:39| KINO +|08/01/2022 02:51:40| |THIS IS A COMMUNIST STREAM| +|08/01/2022 02:51:40| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:40| |Выходила, песню заводила Про степного сизого орла Про того, которого любила Про того, чьи письма берегла| +|08/01/2022 02:51:42| |i want to make them a mother land| +|08/01/2022 02:51:42| KINO +|08/01/2022 02:51:42| uuuurrrraaaa +|08/01/2022 02:51:43| |AGAIN AGAIN| +|08/01/2022 02:51:43| |>shot version| +|08/01/2022 02:51:46| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:46| |why does katyusha speak russian here?| +|08/01/2022 02:51:46| |Встава́й, страна́ огро́мная| +|08/01/2022 02:51:48| |EAT SHIT OOARAI| +|08/01/2022 02:51:48| |can't believe i missed that on my first watch| +|08/01/2022 02:51:50| |Better Yellow than smello| +|08/01/2022 02:51:51| ☭☭☭☭ +|08/01/2022 02:51:52| URAAAA!!!!!! +|08/01/2022 02:51:52| ENCORE +|08/01/2022 02:51:53| |How many tank shells could Katyusha take?| +|08/01/2022 02:51:55| |Always with Honour Pyotr Wrangel| +|08/01/2022 02:51:55| BUFFER +|08/01/2022 02:51:55| |hang katyusha for kokoro connect| +|08/01/2022 02:51:57| UUUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:51:57| THIGHS +|08/01/2022 02:51:58| buffering +|08/01/2022 02:51:58| |CYKA BYLAY| +|08/01/2022 02:51:59| thighs +|08/01/2022 02:51:59| |ENCORE ENCORE ENCORE| +|08/01/2022 02:52:00| |FAIR AND BALANCED RUSSIAN TANK ARMOR| +|08/01/2022 02:52:00| LEGS +|08/01/2022 02:52:00| buffering +|08/01/2022 02:52:01| |>tfw still no Erika cover| +|08/01/2022 02:52:04| |commie stream| +|08/01/2022 02:52:05| |buffer time| +|08/01/2022 02:52:05| |communist strim, starts to buffer again| +|08/01/2022 02:52:06| KOHI +|08/01/2022 02:52:06| |fucking katyusha made the stream buffer| +|08/01/2022 02:52:07| NOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 02:52:07| |good point to buffer| +|08/01/2022 02:52:08| |short skirts in freezing weather| +|08/01/2022 02:52:08| FUTOMOMO +|08/01/2022 02:52:11| |STOP KILLING MY STREAM. STOP WATCHING NOW| +|08/01/2022 02:52:12| COCOA +|08/01/2022 02:52:14| choco! +|08/01/2022 02:52:14| |and then she handed me a cheese sandwich| +|08/01/2022 02:52:14| |cheese sandwich| +|08/01/2022 02:52:16| |a fucking cheese sandwich| +|08/01/2022 02:52:17| DOO +|08/01/2022 02:52:17| |stream has been put in gulag| +|08/01/2022 02:52:18| |the finest bandwidth in the soviet union| +|08/01/2022 02:52:18| Bbuffering... +|08/01/2022 02:52:19| |katyusha too wide, stream can't handle| +|08/01/2022 02:52:23| |their veins are carbon coated, it's okay| +|08/01/2022 02:52:23| |NEWFAGGOTS REEEEEEEEEEEEEEEEE| +|08/01/2022 02:52:26| |gommunism killed the stream| +|08/01/2022 02:52:26| |>russian stream quality| +|08/01/2022 02:52:27| |cheese sandwhich. funniest shit i've ever seen| +|08/01/2022 02:52:28| thighs +|08/01/2022 02:52:28| |Drinking Yukari's coco| +|08/01/2022 02:52:28| |I ONLY SPEAK FREEDOM| +|08/01/2022 02:52:30| |big nonna tits| +|08/01/2022 02:52:30| |commie spies sabotaging the stream| +|08/01/2022 02:52:30| |>Commies cause buffering| +|08/01/2022 02:52:31| >REEEEEEEEEEEEEEEEE +|08/01/2022 02:52:32| |God damn commie buffering| +|08/01/2022 02:52:33| |>skirts on the snow| +|08/01/2022 02:52:33| |What dummy| +|08/01/2022 02:52:33| |midget connection| +|08/01/2022 02:52:35| |I blame the russians| +|08/01/2022 02:52:39| |Katyusha is so baka| +|08/01/2022 02:52:39| CHEEKI +|08/01/2022 02:52:39| NONNA! +|08/01/2022 02:52:40| |cheeky breeki| +|08/01/2022 02:52:42| |good stream quality is capitalism| +|08/01/2022 02:52:42| NONNA! +|08/01/2022 02:52:44| |>calls other "namaiki"| +|08/01/2022 02:52:45| |glad we got some cheesesandwich posters| +|08/01/2022 02:52:46| |>Russian internet| +|08/01/2022 02:52:48| |EVERYONES BANDWIDTH| +|08/01/2022 02:52:49| |are we watching der film and das finale| +|08/01/2022 02:52:51| УУУУУУУУУУУУУУУУУУУУУУУУУУУУУРPPPPPPPPPPPPPPPPPPPPPPPPPPPPPАAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:52:54| >slavs +|08/01/2022 02:52:54| |oh no no no no renault bros| +|08/01/2022 02:52:57| |just keep driving| +|08/01/2022 02:52:57| |katyusha killing the stream to hide a war crime| +|08/01/2022 02:52:58| |im retarded| +|08/01/2022 02:52:59| |How can you not cheesesandwhich post| +|08/01/2022 02:53:03| |Pravda is starving their streamers| +|08/01/2022 02:53:03| |It's like I'm actually playing CSGO| +|08/01/2022 02:53:05| |Kick her harder| +|08/01/2022 02:53:07| |>french engineering | +|08/01/2022 02:53:07| snow +|08/01/2022 02:53:07| MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOT +|08/01/2022 02:53:07| |Gomoyo, sodoko and ?| +|08/01/2022 02:53:11| |You guys stay away from MY bandwidth| +|08/01/2022 02:53:12| |get the fuck out| +|08/01/2022 02:53:13| |uoooh legs| +|08/01/2022 02:53:16| pazomiiiiiiiiiiiiii +|08/01/2022 02:53:17| |TAKE MY STRENGTH \O/TAKE MY STRENGTH \O/TAKE MY STRENGTH \O/TAKE MY STRENGTH \O/| +|08/01/2022 02:53:18| CUTIES +|08/01/2022 02:53:20| |aSSERT DOMINANCE| +|08/01/2022 02:53:20| |L2DRIVE RETARD| +|08/01/2022 02:53:21| |PAZOMIIIIIIIIII | +|08/01/2022 02:53:21| |wtf basic geometry| +|08/01/2022 02:53:23| |is it legal to transfer crew?| +|08/01/2022 02:53:24| |French engineering....| +|08/01/2022 02:53:24| |shut up sodoko| +|08/01/2022 02:53:25| paizuri +|08/01/2022 02:53:28| |built for pazomi| +|08/01/2022 02:53:31| |>dial up| +|08/01/2022 02:53:35| |on scale 0-100 how wet sodoko is now| +|08/01/2022 02:53:36| |why is there a snow wall| +|08/01/2022 02:53:39| |hana san could you shoot momo?| +|08/01/2022 02:53:42| |Just shoot the snow lmao| +|08/01/2022 02:53:44| eh? +|08/01/2022 02:53:45| |>HE shell >safe sport| +|08/01/2022 02:53:48| |DO HE shells work like that?| +|08/01/2022 02:53:49| |does that work?| +|08/01/2022 02:53:51| #FUCKSNOW +|08/01/2022 02:53:53| |FUCK FLOWERS| +|08/01/2022 02:53:53| ~60-70 +|08/01/2022 02:53:55| |damn what a bitch| +|08/01/2022 02:53:55| |fuk u mom| +|08/01/2022 02:53:58| |Why are those shells allowed? Seems dangerous for little girls.| +|08/01/2022 02:54:00| test +|08/01/2022 02:54:01| |tsun mom| +|08/01/2022 02:54:02| FUN +|08/01/2022 02:54:02| squirrels! +|08/01/2022 02:54:03| |NIGGA I'M NUTS| +|08/01/2022 02:54:04| Shinzabro +|08/01/2022 02:54:04| Azusa! +|08/01/2022 02:54:05| |risu dayo :DDD| +|08/01/2022 02:54:08| |What are you Saki?| +|08/01/2022 02:54:08| |CARBON COATED| +|08/01/2022 02:54:08| |test failed| +|08/01/2022 02:54:09| BONEY! +|08/01/2022 02:54:09| |Time to brew some coffee for the long haul| +|08/01/2022 02:54:12| |Where's Hanna's dad?| +|08/01/2022 02:54:12| staringrado... +|08/01/2022 02:54:15| |Stalingrad flashbacks| +|08/01/2022 02:54:16| >sTALINGRAD +|08/01/2022 02:54:16| |PAY ATTENTION TO THE MATCH| +|08/01/2022 02:54:17| |this is how you get sports parents that are crazy| +|08/01/2022 02:54:17| >/pol/ +|08/01/2022 02:54:17| |don't mention pls| +|08/01/2022 02:54:19| |>erwin having flashbacks| +|08/01/2022 02:54:19| |This is our stalingrad, Ooaraibros| +|08/01/2022 02:54:20| |staringrado is serious business| +|08/01/2022 02:54:20| |shells are carbon coated so their safe| +|08/01/2022 02:54:20| |Stalingrad - Massengrab| +|08/01/2022 02:54:21| Stalingrad.. +|08/01/2022 02:54:21| STALINGRADOU +|08/01/2022 02:54:22| >gUPPIEGRAD +|08/01/2022 02:54:22| |stalingrad isn't real| +|08/01/2022 02:54:22| |we could have won| +|08/01/2022 02:54:25| |Hana's Dad died in childbirth| +|08/01/2022 02:54:27| |EVERY SEVEN SECONDS| +|08/01/2022 02:54:28| |>Not having your snow CDarbnon Coated| +|08/01/2022 02:54:35| g +|08/01/2022 02:54:38| fire +|08/01/2022 02:54:39| LOUDER +|08/01/2022 02:54:40| |Stalingrad so fucked up GuP won't even joke about it | +|08/01/2022 02:54:40| |g. so True.| +|08/01/2022 02:54:40| g +|08/01/2022 02:54:42| |There is no phsysical evidence of Stalingrad...| +|08/01/2022 02:54:43| hougeki! +|08/01/2022 02:54:44| g +|08/01/2022 02:54:46| |Alle sieben Sekunden stirbt ein Guppie| +|08/01/2022 02:54:51| g +|08/01/2022 02:54:53| NORIKO +|08/01/2022 02:54:56| |PRAVDABROS WE GOT TOO COCKY| +|08/01/2022 02:54:56| ez +|08/01/2022 02:54:57| |Long barrel Panzer IV best Panzer IV| +|08/01/2022 02:54:58| Easy +|08/01/2022 02:55:00| |GO GO| +|08/01/2022 02:55:02| |T-34 bros... | +|08/01/2022 02:55:03| |go! go!| +|08/01/2022 02:55:03| |GO GO| +|08/01/2022 02:55:04| |GO GO| +|08/01/2022 02:55:05| |GO GO| +|08/01/2022 02:55:07| GOGO +|08/01/2022 02:55:07| |OORAI ON A ROLL| +|08/01/2022 02:55:08| |go go| +|08/01/2022 02:55:09| worried +|08/01/2022 02:55:09| |smart miho| +|08/01/2022 02:55:10| |I can't believe Yukari is autistic| +|08/01/2022 02:55:10| sus +|08/01/2022 02:55:12| |IT'S A TRAP| +|08/01/2022 02:55:14| |STFU YUKARI| +|08/01/2022 02:55:15| |Pravda flashbacks| +|08/01/2022 02:55:16| |>is this bait?| +|08/01/2022 02:55:18| |>they use fake retreats| +|08/01/2022 02:55:18| |ITS A TRAP| +|08/01/2022 02:55:19| OST +|08/01/2022 02:55:20| |T34 is indistructible!| +|08/01/2022 02:55:21| >OST +|08/01/2022 02:55:22| TOTSUGEKI +|08/01/2022 02:55:23| |all bait| +|08/01/2022 02:55:26| |i wonder why| +|08/01/2022 02:55:26| |£400000000000 on Pravda please| +|08/01/2022 02:55:28| |SELL OOARAICOIN| +|08/01/2022 02:55:29| |NOT ONE STEP BACK| +|08/01/2022 02:55:35| |Yeah idiot| +|08/01/2022 02:55:37| |LOLI BAIT TACTICS| +|08/01/2022 02:55:38| SLUT +|08/01/2022 02:55:38| >sealori +|08/01/2022 02:55:40| slut +|08/01/2022 02:55:40| |no way in hell ooarai wins| +|08/01/2022 02:55:40| slut +|08/01/2022 02:55:41| IDIOTS +|08/01/2022 02:55:43| |but the commander LITERALLY said we shouldnt fall for their feint retreat| +|08/01/2022 02:55:43| |you do what now?| +|08/01/2022 02:55:43| |AZUSA SIgHTED| +|08/01/2022 02:55:44| |Pravda surely can't lose| +|08/01/2022 02:55:44| |big baka moment| +|08/01/2022 02:55:44| |Saori is a rapist| +|08/01/2022 02:55:45| |they pulled this exact trap in their first battle| +|08/01/2022 02:55:46| |ooarai bros...| +|08/01/2022 02:55:47| |Is katyusha the first commander to use any sort of a strategy| +|08/01/2022 02:55:47| |How many Ooaricoin for Momo?| +|08/01/2022 02:55:47| |Why does she chase fags| +|08/01/2022 02:55:48| |master baiters| +|08/01/2022 02:55:50| TOTSUGEKI +|08/01/2022 02:55:50| |GO GO!| +|08/01/2022 02:55:51| NORIKO<3 +|08/01/2022 02:55:51| ATTACK +|08/01/2022 02:55:51| TOTSUGEKI +|08/01/2022 02:55:52| TOTSUGEKI +|08/01/2022 02:55:52| TOTSUGEKI +|08/01/2022 02:55:52| |I'm going all in on Katyusha. I got a good feeling| +|08/01/2022 02:55:53| TOTSUGEKI +|08/01/2022 02:55:54| |Momo, pls| +|08/01/2022 02:55:55| TOTSUGEKI +|08/01/2022 02:55:57| TOTSUGEKI +|08/01/2022 02:56:01| |>the original totsugeki retard| +|08/01/2022 02:56:03| |same, life savings on katyusha| +|08/01/2022 02:56:05| |ooarai bros i dont feel so good....| +|08/01/2022 02:56:07| blitzkrieg +|08/01/2022 02:56:10| |This Lee is from America? I guess they are keeping all the good stuff for themselves...| +|08/01/2022 02:56:11| TOTSUGEKIIIIII +|08/01/2022 02:56:13| 突撃 +|08/01/2022 02:56:16| |if katyusha loses i wont be able to afford rent| +|08/01/2022 02:56:18| 突撃 +|08/01/2022 02:56:19| |My mother's kidney on Katyusha| +|08/01/2022 02:56:20| 突撃 +|08/01/2022 02:56:21| |my maho wife| +|08/01/2022 02:56:22| |SAEMONZA OPEN YOUR FUCKING EYES| +|08/01/2022 02:56:23| |>bodyblock the flag tank| +|08/01/2022 02:56:23| |I've got 1 BTC on pravda winning| +|08/01/2022 02:56:24| |No segs nishi in tv --- hurts| +|08/01/2022 02:56:25| TOTSUGEKI +|08/01/2022 02:56:27| BLITZKRIEG +|08/01/2022 02:56:27| TOKKAN +|08/01/2022 02:56:28| BLITZKRIEG +|08/01/2022 02:56:29| WAIT +|08/01/2022 02:56:29| TOTSUGEKI +|08/01/2022 02:56:29| |katyusha never lose| +|08/01/2022 02:56:31| 吶喊 +|08/01/2022 02:56:31| TOTSUGEKI +|08/01/2022 02:56:32| |All my BTC on Pravda| +|08/01/2022 02:56:33| BERSERKER +|08/01/2022 02:56:33| とつげき +|08/01/2022 02:56:34| TOTSUGEKI +|08/01/2022 02:56:34| blitzkrieg +|08/01/2022 02:56:37| |MY SOUL ON SOVIET QUALITY STEEL| +|08/01/2022 02:56:40| TOTSUGEKI +|08/01/2022 02:56:41| |operation barbarossa be like| +|08/01/2022 02:56:42| |NO DONT GO INTO THE VILLAGE DONT DO IT| +|08/01/2022 02:56:44| |this is why you don't totsugeki| +|08/01/2022 02:56:44| |>3d miho| +|08/01/2022 02:56:44| |GERMANS PULLING AN ITALIAN| +|08/01/2022 02:56:48| |time to buy Oaraicoin| +|08/01/2022 02:56:49| |>soviet quality| +|08/01/2022 02:56:53| |Hulls blessed by Stalin himself| +|08/01/2022 02:56:56| |>soviet >quality| +|08/01/2022 02:56:57| |looks like Ooarai might win| +|08/01/2022 02:56:58| |Stalinium will win rightt?| +|08/01/2022 02:56:59| |1991 worst day of my life| +|08/01/2022 02:57:00| |OH NO| +|08/01/2022 02:57:01| |oh no no no no| +|08/01/2022 02:57:05| AAAAAAA +|08/01/2022 02:57:08| |oh n-| +|08/01/2022 02:57:09| |OH NO OH NO| +|08/01/2022 02:57:09| |IT'S A TRAP| +|08/01/2022 02:57:10| >Momo +|08/01/2022 02:57:11| OORARIBROS... +|08/01/2022 02:57:12| |OH NO| +|08/01/2022 02:57:12| |OH N-| +|08/01/2022 02:57:13| |UHHHHHHH OOARAI BROS?| +|08/01/2022 02:57:13| |Ooaribros we got too cocky| +|08/01/2022 02:57:14| |OH NO NO NO OORAI BROS WE GOT TOO COCKY| +|08/01/2022 02:57:15| TRAPPED +|08/01/2022 02:57:15| |>not using red text for the russian match | +|08/01/2022 02:57:16| |my oaraicoin aaaaaaaaaaaaaaaaaaaaaaaa| +|08/01/2022 02:57:16| |I can't believe Ooarai is about to loose...| +|08/01/2022 02:57:19| |Why is Momo so shit?| +|08/01/2022 02:57:19| |UH OH, SISTERS! | +|08/01/2022 02:57:20| |GULAG TIME| +|08/01/2022 02:57:20| ooraibros... +|08/01/2022 02:57:20| |it's over| +|08/01/2022 02:57:20| Ooaraibros... +|08/01/2022 02:57:21| |imagine fielding tier IV against tier VII| +|08/01/2022 02:57:21| |OH NO NO NO OORAIBROS| +|08/01/2022 02:57:22| |Git fucked Orrai nerds| +|08/01/2022 02:57:23| |THEY'RE MULTIPLYING LIKE FLIES| +|08/01/2022 02:57:23| |MIHO YOU FUCK| +|08/01/2022 02:57:24| |ITS OVER| +|08/01/2022 02:57:25| |oh no| +|08/01/2022 02:57:25| |russian bias| +|08/01/2022 02:57:26| |WE GOT TOO COCKY| +|08/01/2022 02:57:27| |played like a damn fiddle| +|08/01/2022 02:57:27| |Surely the Reds will win| +|08/01/2022 02:57:27| |surprise mothertrucker| +|08/01/2022 02:57:28| |ALL MY MONEY ON PRAVDA| +|08/01/2022 02:57:28| |I didn't expect the Spanish inquisition| +|08/01/2022 02:57:28| UUUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 02:57:31| gasp +|08/01/2022 02:57:31| |ANKOUSISTERS ITS OVER!| +|08/01/2022 02:57:32| LOUD +|08/01/2022 02:57:32| |THAT SOUND| +|08/01/2022 02:57:32| URRRAAA +|08/01/2022 02:57:32| |we cant keep winning pravdabros!!!| +|08/01/2022 02:57:32| |LOUDER AAAAAAAAAAAAAAAAAA| +|08/01/2022 02:57:33| |RED TEXT ONLY TELLS THE TRUTH| +|08/01/2022 02:57:33| UUUUUUUUUUURRRRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAA!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 02:57:34| |OH NO NO NO| +|08/01/2022 02:57:34| |SerB approved| +|08/01/2022 02:57:35| BOOMSHAKALAKA +|08/01/2022 02:57:35| URRRAAAAAA +|08/01/2022 02:57:36| alamo +|08/01/2022 02:57:36| |T-34 OP| +|08/01/2022 02:57:37| |>all these shounenshitter memes| +|08/01/2022 02:57:38| |RUSSIAN AIM| +|08/01/2022 02:57:39| |audiogasm | +|08/01/2022 02:57:39| |GOOD THING RUSSIANS CAN'T AIM FOR SHIT| +|08/01/2022 02:57:39| UUURRRRRAAAAAA +|08/01/2022 02:57:40| boom +|08/01/2022 02:57:40| |Kapitulieren? Nein !| +|08/01/2022 02:57:40| EARRAPE +|08/01/2022 02:57:41| |>fighting a land war in asia| +|08/01/2022 02:57:44| |TFW YOU GET "UNPERSONED" BY A MIDGET RUSSKIE| +|08/01/2022 02:57:44| |i came from those guns| +|08/01/2022 02:57:45| aim +|08/01/2022 02:57:45| |retreat into the church, the commies won't attack there| +|08/01/2022 02:57:46| |T-34BROS I'M FEELING IT| +|08/01/2022 02:57:47| |IF PRAVDA WINS I'M REPORTING MY FATHER TO THE NKVD| +|08/01/2022 02:57:48| |KATYUSHA HAS THIS IN THE BAG| +|08/01/2022 02:57:50| |THE WINTER WAR HAS SHOWN THE INCAPABILITY OF THE RED ARMY AND AIR FORCE| +|08/01/2022 02:57:51| |Stalinium will carry them to victory\| +|08/01/2022 02:57:57| |T-34 bros cant lose| +|08/01/2022 02:57:58| |press N to take a Nap| +|08/01/2022 02:57:59| BUROKINGU! +|08/01/2022 02:58:02| N +|08/01/2022 02:58:06| |NOT N WTF| +|08/01/2022 02:58:07| N +|08/01/2022 02:58:08| |ASS TO ASS| +|08/01/2022 02:58:13| |ASS TO ASS| +|08/01/2022 02:58:14| |NOT N MOTHERFUCKER| +|08/01/2022 02:58:15| |literally impossible for ooarai to win| +|08/01/2022 02:58:19| ASS2ASS +|08/01/2022 02:58:19| |they'll never find us in here| +|08/01/2022 02:58:19| |so why did she take a nap in the middle of this| +|08/01/2022 02:58:20| KAPTULIEREN +|08/01/2022 02:58:21| |now what's the next step of your master plan| +|08/01/2022 02:58:22| |Press R to report dissenters to Comrade Katyusha| +|08/01/2022 02:58:23| |carbon-coated church to resist communist shells| +|08/01/2022 02:58:25| |lmao im glad I betted on Pravda| +|08/01/2022 02:58:26| Kneel +|08/01/2022 02:58:26| |OWARI DA| +|08/01/2022 02:58:27| R +|08/01/2022 02:58:28| |do it| +|08/01/2022 02:58:29| |Just drink more, no need for naps.| +|08/01/2022 02:58:29| |They said that If Pravda wins they will release my family from the gulag| +|08/01/2022 02:58:29| SHOOT +|08/01/2022 02:58:30| |>french flag| +|08/01/2022 02:58:30| |KAPITULIEREN? NEIN!| +|08/01/2022 02:58:31| |it's over| +|08/01/2022 02:58:31| |They're done for| +|08/01/2022 02:58:31| |it's over ...| +|08/01/2022 02:58:32| |MAGNANIMOUS KATYUSHA!| +|08/01/2022 02:58:33| NUTS +|08/01/2022 02:58:33| NUTS +|08/01/2022 02:58:33| |shoot the messangers| +|08/01/2022 02:58:33| |plot armor power incoming| +|08/01/2022 02:58:34| |Just collpase the building on them, its fine because of carbon coating.| +|08/01/2022 02:58:35| |SOYUZ NERUSHIMI.....| +|08/01/2022 02:58:35| |FRENCH TACTICS| +|08/01/2022 02:58:36| NUTS +|08/01/2022 02:58:36| NUTS! +|08/01/2022 02:58:36| |TAKE THEM PRISONER| +|08/01/2022 02:58:37| "NUTS" +|08/01/2022 02:58:37| NUTS +|08/01/2022 02:58:37| |communists can't even kill a church lmao| +|08/01/2022 02:58:38| NUTS +|08/01/2022 02:58:38| NUTS +|08/01/2022 02:58:38| DOGEZA +|08/01/2022 02:58:38| |WE HAVEN'T THE PROPER FACILITIES TO TAKE YOU ALL PRISONER| +|08/01/2022 02:58:38| NUTS +|08/01/2022 02:58:39| NUTS +|08/01/2022 02:58:39| NUTS +|08/01/2022 02:58:41| |Holy shit midget putin is a tryhard| +|08/01/2022 02:58:41| KNEEL +|08/01/2022 02:58:41| NUTS +|08/01/2022 02:58:41| NUTS +|08/01/2022 02:58:42| "Nuts" +|08/01/2022 02:58:42| NUTS +|08/01/2022 02:58:42| NUTS +|08/01/2022 02:58:42| NUTS +|08/01/2022 02:58:42| NUTS +|08/01/2022 02:58:43| |rape the messengers| +|08/01/2022 02:58:43| NUTS +|08/01/2022 02:58:44| |NIGGA THAT'S NUTS!!!!| +|08/01/2022 02:58:44| |SHOOT THEM| +|08/01/2022 02:58:44| NUTS +|08/01/2022 02:58:45| SUGONDESE +|08/01/2022 02:58:45| NUTS +|08/01/2022 02:58:45| NUTS +|08/01/2022 02:58:45| |that a lots a nuts!| +|08/01/2022 02:58:45| NUTS +|08/01/2022 02:58:45| NUTS +|08/01/2022 02:58:45| natsu +|08/01/2022 02:58:46| NUTS +|08/01/2022 02:58:46| NUTS +|08/01/2022 02:58:47| |Nuts Cracker| +|08/01/2022 02:58:49| NATSU +|08/01/2022 02:58:50| |>kneel before katyushas >still taller| +|08/01/2022 02:58:51| |Easy Pravda win. All Katyusha has to do now is crush them and not waste any time.| +|08/01/2022 02:58:51| |KILL THESE FAGS| +|08/01/2022 02:58:52| |Kneel before superior communism| +|08/01/2022 02:58:53| |Ooraibros... we lost| +|08/01/2022 02:58:53| SLUT +|08/01/2022 02:58:54| |AZUSA ON THE LEFT| +|08/01/2022 02:58:55| |Imagine submitting to little girl, haha. Who'd do that?| +|08/01/2022 02:58:57| |tl-kun what does "nuts" mean| +|08/01/2022 02:58:58| |NOT UNDERSTANDING TERMS OF SURRENDER| +|08/01/2022 02:58:58| |BRING MORE SOUP| +|08/01/2022 02:58:58| |That'll be 4 bucks baby| +|08/01/2022 02:58:59| |KAPITULIEREN? NEIN!!!| +|08/01/2022 02:59:00| УУУУУУУУУУУУУУУУPPPРАААААААААААААААААААА +|08/01/2022 02:59:02| |MR ELECTRIC DISMEMBER THIS NIGGA| +|08/01/2022 02:59:04| |KRASNAYA ARMIJA VSEH SILNEY| +|08/01/2022 02:59:04| |6'' VS 5''11| +|08/01/2022 02:59:04| |she left with nuts!| +|08/01/2022 02:59:04| |manlets seething rn| +|08/01/2022 02:59:11| |Nutup or shutup| +|08/01/2022 02:59:11| >kneeling +|08/01/2022 02:59:12| |AIEEEEEEE KATYUSHA-SAMA... I KNEEL| +|08/01/2022 02:59:12| SLUT +|08/01/2022 02:59:14| |Pravda has this in the bag. Unless they do something stupid like take a nap| +|08/01/2022 02:59:14| |Bunch of submissive sluts| +|08/01/2022 02:59:17| |sex with momo| +|08/01/2022 02:59:17| |DAME DA| +|08/01/2022 02:59:20| |katyusha-sama... i kneel...| +|08/01/2022 02:59:20| |MOMO HATE| +|08/01/2022 02:59:21| HET +|08/01/2022 02:59:21| |ZEN ZEN DAME DA| +|08/01/2022 02:59:23| |big reveal| +|08/01/2022 02:59:23| |stop momo| +|08/01/2022 02:59:26| cope +|08/01/2022 02:59:27| KATSUDA +|08/01/2022 02:59:28| DORAMA! +|08/01/2022 02:59:29| It +|08/01/2022 02:59:30| |momo seething| +|08/01/2022 02:59:30| |B-but why?!| +|08/01/2022 02:59:32| |I HATE MOMO| +|08/01/2022 02:59:33| |K N E E L| +|08/01/2022 02:59:36| >FUN +|08/01/2022 02:59:36| |fire a HE shell from the KV2 into the church right now| +|08/01/2022 02:59:36| |It's just a game bro| +|08/01/2022 02:59:37| |shut up momo!| +|08/01/2022 02:59:37| WHAT +|08/01/2022 02:59:38| |Would rape fix Momo?| +|08/01/2022 02:59:38| |I want to hug momo| +|08/01/2022 02:59:39| |why momo-san| +|08/01/2022 02:59:40| |>not war| +|08/01/2022 02:59:40| |>Kneeling, was that a meme or did they actually said that| +|08/01/2022 02:59:44| >momo +|08/01/2022 02:59:44| |PLOT TWIST INBOUND!| +|08/01/2022 02:59:44| |Senshado never changes...| +|08/01/2022 02:59:46| |>she doesn't know| +|08/01/2022 02:59:46| |thats what got you disowned Miho| +|08/01/2022 02:59:46| |it's only game| +|08/01/2022 02:59:49| |we dont care about the fucking school momo| +|08/01/2022 02:59:49| |ITS ONLY GAME| +|08/01/2022 02:59:50| WTF +|08/01/2022 02:59:52| |Momo.. go away...| +|08/01/2022 02:59:53| |why you have to be mad| +|08/01/2022 02:59:53| |and here's where they drop the other shoe| +|08/01/2022 02:59:54| |based momo victory or death| +|08/01/2022 02:59:54| |Senshado was the friends we made aling the way| +|08/01/2022 02:59:56| |Идёт война́ наро́дная| +|08/01/2022 02:59:56| |>she doesn't know| +|08/01/2022 02:59:56| |they said dogeza| +|08/01/2022 02:59:56| |WE'RE GETTING FUCKING SHUT DOWN| +|08/01/2022 02:59:58| |plot armor: engage| +|08/01/2022 02:59:59| |WHAT A TWIIIIIIIIIIST| +|08/01/2022 03:00:00| |loser attitude| +|08/01/2022 03:00:00| |why you have to be mad| +|08/01/2022 03:00:01| PLOT +|08/01/2022 03:00:02| DRAMA +|08/01/2022 03:00:03| |OH SHI...| +|08/01/2022 03:00:04| PLOT +|08/01/2022 03:00:06| JEWS +|08/01/2022 03:00:06| GASP +|08/01/2022 03:00:06| >male +|08/01/2022 03:00:07| NANI +|08/01/2022 03:00:07| TWIST +|08/01/2022 03:00:07| GONE???? +|08/01/2022 03:00:08| TWIST +|08/01/2022 03:00:08| nakunaru.... +|08/01/2022 03:00:08| |HOLY SMOKES!!!! | +|08/01/2022 03:00:09| :O +|08/01/2022 03:00:11| Nakunaru +|08/01/2022 03:00:11| |WOAH WHAT?!?| +|08/01/2022 03:00:12| TWIST +|08/01/2022 03:00:12| |>its over...| +|08/01/2022 03:00:12| |What a twist!| +|08/01/2022 03:00:12| |so a win win| +|08/01/2022 03:00:13| |>forced school closure| +|08/01/2022 03:00:13| |more than kneeling dekinai-kun| +|08/01/2022 03:00:13| |the darkest hour| +|08/01/2022 03:00:13| |OH SHIT THEY RAISED THE STAKES| +|08/01/2022 03:00:13| |NOT THE MEXT MAN?| +|08/01/2022 03:00:13| |this dude based| +|08/01/2022 03:00:14| |Oraibros, can we even win?| +|08/01/2022 03:00:14| |I bet the Hebrews did this...| +|08/01/2022 03:00:15| HUGGBEES +|08/01/2022 03:00:16| what? +|08/01/2022 03:00:16| |Dissolution of the Oarai Union| +|08/01/2022 03:00:16| |OY VEYS ARE SHUTTING OORAI DOWN| +|08/01/2022 03:00:16| MASAKA +|08/01/2022 03:00:17| |NO WAY!| +|08/01/2022 03:00:18| masaka +|08/01/2022 03:00:19| |OH MAI GAW| +|08/01/2022 03:00:19| |OH NO OOARAI BROS| +|08/01/2022 03:00:19| |MEXT WHAT THE FUCK| +|08/01/2022 03:00:20| :O +|08/01/2022 03:00:20| |Jews done this.| +|08/01/2022 03:00:21| /ourguy/ +|08/01/2022 03:00:23| |JEWS JEWS JEWS JEWS JEWS JEWS JEWS | +|08/01/2022 03:00:23| |OH JEEZ!| +|08/01/2022 03:00:24| ENTER +|08/01/2022 03:00:25| /ourguy/ +|08/01/2022 03:00:26| |FUCK MEXT| +|08/01/2022 03:00:26| NANIANIANINANI???? +|08/01/2022 03:00:26| |should have become idols instead| +|08/01/2022 03:00:27| MEXT +|08/01/2022 03:00:29| MEXTguy +|08/01/2022 03:00:29| ENTER +|08/01/2022 03:00:31| |OY VEYYY | +|08/01/2022 03:00:32| |thats crazy! surely they wont reuse this same plot point again| +|08/01/2022 03:00:32| |MEXT ARE JEW NIGGERS| +|08/01/2022 03:00:32| |MEXT CHAD| +|08/01/2022 03:00:33| |The best Male ENTERs| +|08/01/2022 03:00:33| MEXTfags +|08/01/2022 03:00:36| MEXT +|08/01/2022 03:00:36| |Forced drama..... ENGAGE| +|08/01/2022 03:00:38| |EWWWWWW MALE| +|08/01/2022 03:00:38| |giving us GuP for years and years| +|08/01/2022 03:00:39| (((()))) +|08/01/2022 03:00:40| SIGMA +|08/01/2022 03:00:40| |oorari bros never saw this coming| +|08/01/2022 03:00:41| |MY BOY TSUJI| +|08/01/2022 03:00:43| |based MEXT, fuck oorai| +|08/01/2022 03:00:44| |>casting couch| +|08/01/2022 03:00:44| /ourguy/ +|08/01/2022 03:00:45| |you have a wild west outlaw on your ship| +|08/01/2022 03:00:48| |Where is his figure?| +|08/01/2022 03:00:48| shenshahoe +|08/01/2022 03:00:49| COUCHED? +|08/01/2022 03:00:49| |THE CHAD| +|08/01/2022 03:00:50| |WHAT IS >HE DOING HERE?| +|08/01/2022 03:00:52| |MEXT ARE JEW NIGGER FAGGOTS| +|08/01/2022 03:00:53| |baka gakkou| +|08/01/2022 03:00:56| |MEXT guy was right all along| +|08/01/2022 03:00:59| >male +|08/01/2022 03:01:00| |>adjusts glasses| +|08/01/2022 03:01:00| |THere he is| +|08/01/2022 03:01:01| |OY VEY| +|08/01/2022 03:01:02| ENTER +|08/01/2022 03:01:02| |what's his endgame?| +|08/01/2022 03:01:02| |MEXT chad sacrificed himself to give us more gup| +|08/01/2022 03:01:03| |Bring Terry back in command| +|08/01/2022 03:01:04| |just win| +|08/01/2022 03:01:05| |stop hating on mext, they'll fund my trip to ooarai| +|08/01/2022 03:01:06| |WASTING 4 TRILLON ON WILD WEST| +|08/01/2022 03:01:07| |Males t=ruin eveything| +|08/01/2022 03:01:10| |he should have done the gendo pose| +|08/01/2022 03:01:10| |He buff under the suit| +|08/01/2022 03:01:12| |Become guppie| +|08/01/2022 03:01:13| |They could just clamp down on the criminal gangs living lower levels of the ship instead of trying senshado| +|08/01/2022 03:01:13| |TRY ME, KID| +|08/01/2022 03:01:15| |mext guy's gonna carry that weight| +|08/01/2022 03:01:16| |Can't have all the best students in just one school| +|08/01/2022 03:01:16| |OY VEY GOY YOUR SHIP IS GOING TO BE ANOTHER TANKER FOR ISREAL| +|08/01/2022 03:01:17| |fuck M*les| +|08/01/2022 03:01:19| |TIME TO SING, BROS!| +|08/01/2022 03:01:20| |>good thing we don't need this in writing| +|08/01/2022 03:01:25| |He didn't say no though, baka Anzu| +|08/01/2022 03:01:29| |Mext > Momo| +|08/01/2022 03:01:33| |based male, giving us more GuP to watch| +|08/01/2022 03:01:34| |oy vey| +|08/01/2022 03:01:36| |should've made him pinky promise| +|08/01/2022 03:01:43| |>good thing they won't get shut down again after this right?| +|08/01/2022 03:01:43| |WELL TIME TO PULL A KIRK MOVE OUT OF MY ASS| +|08/01/2022 03:01:43| |Anons, i can;'t type straight anymore| +|08/01/2022 03:01:48| MEXTbros... +|08/01/2022 03:01:49| |I believe in him| +|08/01/2022 03:01:50| |>selling your tanks instead of selling the girls | +|08/01/2022 03:01:52| |Drink water| +|08/01/2022 03:01:52| |Couldn't they have sold Momo's body?| +|08/01/2022 03:01:57| |drink more water now to avoid a hangover| +|08/01/2022 03:01:59| |Momo's worthless though| +|08/01/2022 03:02:00| |waste of taxpayer dollars tbh| +|08/01/2022 03:02:00| |>Not getting your contract in writing and signed in blood| +|08/01/2022 03:02:02| |Sell bathwater stupids| +|08/01/2022 03:02:05| |who the fuck would pay anything for momo's body?| +|08/01/2022 03:02:06| |time to become a tank idol| +|08/01/2022 03:02:06| |how much is Momo's body worth?| +|08/01/2022 03:02:09| |Momo would give her body for free, so they couldn't sell it| +|08/01/2022 03:02:13| |IT AINT OVER THIS ITS OVER| +|08/01/2022 03:02:13| |volleyball chads, it's all over| +|08/01/2022 03:02:15| |turn them all into pleasure girls and keep the tanks| +|08/01/2022 03:02:16| |I will buy the loliharem| +|08/01/2022 03:02:16| |das Finale 4: Momo will flunk AND we will close the school| +|08/01/2022 03:02:18| |SHUT IT DOWN| +|08/01/2022 03:02:20| |Sell Saki| +|08/01/2022 03:02:21| |I will drink more vodka instead| +|08/01/2022 03:02:22| |About 0| +|08/01/2022 03:02:24| |they clearly didnt read ribbon warrior| +|08/01/2022 03:02:25| ;__; +|08/01/2022 03:02:25| |Mako was robbed| +|08/01/2022 03:02:27| ;_; +|08/01/2022 03:02:28| AZUSA!! +|08/01/2022 03:02:29| |you can't market momo| +|08/01/2022 03:02:30| ;_; +|08/01/2022 03:02:34| |SLAV RAPE BABY MAKING TIME| +|08/01/2022 03:02:35| |just win | +|08/01/2022 03:02:36| |Based anons, now's the time for vodka| +|08/01/2022 03:02:39| ToT +|08/01/2022 03:02:39| |das finale 4: erika ***| +|08/01/2022 03:02:39| DG +|08/01/2022 03:02:40| |Sell dates with floof| +|08/01/2022 03:02:41| |das finale 6: momo gets disowned| +|08/01/2022 03:02:41| |oh yeah, next year| +|08/01/2022 03:02:44| |Minna ;_; OST| +|08/01/2022 03:02:46| |>sad piano theme| +|08/01/2022 03:02:48| minna... +|08/01/2022 03:02:48| |this is the part where i cry| +|08/01/2022 03:02:50| |I'm sorry, but did Ooarai already lose? Oh, that's right. The show isn't even over yet.| +|08/01/2022 03:02:52| |horny bastard slavs waiting and salivating| +|08/01/2022 03:02:54| |Das Finale 7: Revenge| +|08/01/2022 03:02:55| |LE'TS BUY THEIR SCHOOL, I HAVE 5 IN MY POCKET| +|08/01/2022 03:02:57| |It's raining alright| +|08/01/2022 03:02:57| SLUT +|08/01/2022 03:03:00| |one fluffy for 1000000| +|08/01/2022 03:03:01| nigger +|08/01/2022 03:03:04| TATAKE +|08/01/2022 03:03:09| |HUG MOMO| +|08/01/2022 03:03:15| no +|08/01/2022 03:03:16| |WE SHALL FIGHT ON THE BEACHES, WE SHALL FIGHT ON THE LANDING GROUNDS| +|08/01/2022 03:03:16| nigger +|08/01/2022 03:03:17| |I love the GUPpies. that is all. | +|08/01/2022 03:03:20| |ALL MOMO'S FAULT.| +|08/01/2022 03:03:21| |Steiner will be here soon we just have to hold out | +|08/01/2022 03:03:22| |Punch Momo| +|08/01/2022 03:03:22| HAI +|08/01/2022 03:03:23| |Beleiev in the heart| +|08/01/2022 03:03:23| |Das Finale 6: Momo becomes senshado comfort girl| +|08/01/2022 03:03:23| |I'm falling asleep please help| +|08/01/2022 03:03:24| pekoe +|08/01/2022 03:03:25| |AND WE SHALL NEVER SURRENDER| +|08/01/2022 03:03:27| |I HATE NIGGERSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +|08/01/2022 03:03:27| |PROTECT MOMO| +|08/01/2022 03:03:28| >pants +|08/01/2022 03:03:29| |POLYUSHKO POLYE| +|08/01/2022 03:03:29| |>Just starve them out| +|08/01/2022 03:03:30| |EVERY GUPPIE WILL DO THEIR DUTY| +|08/01/2022 03:03:33| |i fucking hate NIGGERS| +|08/01/2022 03:03:34| |JOE TATAKE| +|08/01/2022 03:03:35| Based +|08/01/2022 03:03:37| |you know this saying?| +|08/01/2022 03:03:38| |UOOOOOOOOOOOOHHHHHHHHHH PEKOE| +|08/01/2022 03:03:39| |BASED SIS| +|08/01/2022 03:03:40| |>when you smell a fat lazy nigg| +|08/01/2022 03:03:40| |my wife maho| +|08/01/2022 03:03:40| SLAGS +|08/01/2022 03:03:41| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 03:03:42| ?????????????????????????????????????????????????????????????????????????? +|08/01/2022 03:03:42| |In the end of Das Finale nothing matters because mext guy shuts down the school anyway, and nobody graduates.| +|08/01/2022 03:03:43| |if you think about it katyusha let them win| +|08/01/2022 03:03:44| |Smug brattiness| +|08/01/2022 03:03:44| ?????????????????????????????????? +|08/01/2022 03:03:47| |Oh shut the fuck up already| +|08/01/2022 03:03:49| >throwing +|08/01/2022 03:03:50| |>yeah bro lets just leave these sofas out in the snow| +|08/01/2022 03:03:50| |I want to crush nips with pravda | +|08/01/2022 03:03:52| |SEX WITH KATYUSHA| +|08/01/2022 03:03:52| |Aren't they cold?| +|08/01/2022 03:03:52| |amelia watson is getting FUCKED| +|08/01/2022 03:03:53| |my maho wife| +|08/01/2022 03:03:53| MOMMY +|08/01/2022 03:03:53| |mother of the year| +|08/01/2022 03:03:54| MAHO +|08/01/2022 03:03:54| |Fuck this shit I'm out| +|08/01/2022 03:03:54| |Darjeeling has a cute AMI voice | +|08/01/2022 03:03:56| RAGEQUITTING +|08/01/2022 03:03:57| |Dumb bitch mother| +|08/01/2022 03:03:59| oishisou +|08/01/2022 03:04:02| |Sit the fuck down Paulus you ain't going nowhere| +|08/01/2022 03:04:03| BORSCHT +|08/01/2022 03:04:05| midget +|08/01/2022 03:04:05| |Maho my beloved| +|08/01/2022 03:04:05| YUSHA +|08/01/2022 03:04:06| |Maho is such a good girl| +|08/01/2022 03:04:06| kashira +|08/01/2022 03:04:07| |NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER NIGGER | +|08/01/2022 03:04:09| |based Katyu| +|08/01/2022 03:04:10| |>amelia watson| +|08/01/2022 03:04:11| |CUTE ONAHOLE| +|08/01/2022 03:04:11| sleeptusha +|08/01/2022 03:04:12| |KATYUSHA RELEASE MY PARENTS FROM BURYATIA NOW| +|08/01/2022 03:04:14| zzzzzzzzzzzzzzzz +|08/01/2022 03:04:14| |nap time comrades, oyasumi| +|08/01/2022 03:04:15| >boy +|08/01/2022 03:04:15| >itttering +|08/01/2022 03:04:15| |>127 cm| +|08/01/2022 03:04:16| |sleepy time...| +|08/01/2022 03:04:17| CUNNYUSHA +|08/01/2022 03:04:17| |Nap time| +|08/01/2022 03:04:18| >boy +|08/01/2022 03:04:20| zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +|08/01/2022 03:04:22| |NAP time| +|08/01/2022 03:04:22| |18 years old| +|08/01/2022 03:04:23| |what's the thing katyusha's in| +|08/01/2022 03:04:23| |>VTuber cancer| +|08/01/2022 03:04:23| suyaa~ +|08/01/2022 03:04:24| |bayushki bayu.............| +|08/01/2022 03:04:26| |Katyusha the Chernobyle powerplant please| +|08/01/2022 03:04:26| |CUNNY NAP| +|08/01/2022 03:04:27| |>russians > heart| +|08/01/2022 03:04:28| Burn +|08/01/2022 03:04:29| |do we get to take a nap break with the gremlin?| +|08/01/2022 03:04:29| |KATUSHA IS A JEW! PRAVDA IS RUN BY JEWS| +|08/01/2022 03:04:30| |IT'S 12 OCLOCK, AND TIME FOR HIS NAP| +|08/01/2022 03:04:30| |oh yeah sue me| +|08/01/2022 03:04:31| oyasuminasai +|08/01/2022 03:04:31| >boy +|08/01/2022 03:04:31| |katyushas massive ego| +|08/01/2022 03:04:32| |CUNNYUSHA CUNNYUSGA CUNNYUSHA CUNNYUSHA| +|08/01/2022 03:04:33| boy +|08/01/2022 03:04:33| |she's as flat as that plain as well| +|08/01/2022 03:04:33| |SOYUZ NERUSHIMI.....| +|08/01/2022 03:04:34| oyasumi +|08/01/2022 03:04:35| |cute boy| +|08/01/2022 03:04:36| SHIBERIA +|08/01/2022 03:04:37| >boy +|08/01/2022 03:04:37| creepy +|08/01/2022 03:04:37| |CYKA BLYAT| +|08/01/2022 03:04:37| |boys are physically incapable of doing senshadou| +|08/01/2022 03:04:37| >boy +|08/01/2022 03:04:39| >boy +|08/01/2022 03:04:41| Nonna +|08/01/2022 03:04:41| dicks +|08/01/2022 03:04:41| |STILL WOULD| +|08/01/2022 03:04:41| >boy +|08/01/2022 03:04:42| >boy +|08/01/2022 03:04:42| |>beautiful boy| +|08/01/2022 03:04:44| |>Nonna will never sing you to sleep| +|08/01/2022 03:04:45| |TAEKO LOVE| +|08/01/2022 03:04:46| BUTT +|08/01/2022 03:04:46| |I want a katyusha daughteru| +|08/01/2022 03:04:46| Sumirebros +|08/01/2022 03:04:47| TAEKo +|08/01/2022 03:04:47| OVA +|08/01/2022 03:04:47| |GED OUDDA HERE SDALGER| +|08/01/2022 03:04:49| |Goodbye, time to slep| +|08/01/2022 03:04:49| BAYUYUSHIKI +|08/01/2022 03:04:50| |WHERE DO I BUY A KATYUSHA WIFE| +|08/01/2022 03:04:50| |YUKI NO SHINGUN| +|08/01/2022 03:04:51| cute +|08/01/2022 03:04:52| |beautiful world| +|08/01/2022 03:04:52| |god i wish Oshino was here| +|08/01/2022 03:04:53| |I literally AM Nonna| +|08/01/2022 03:04:55| |Dumb Yuuki| +|08/01/2022 03:04:55| Russia +|08/01/2022 03:04:57| |rise for the anthem| +|08/01/2022 03:04:58| |Katyusha was dude all along?| +|08/01/2022 03:05:01| time4splicing +|08/01/2022 03:05:01| |>daughter >wife| +|08/01/2022 03:05:01| |will anon sing me to sleep?| +|08/01/2022 03:05:02| o7 +|08/01/2022 03:05:03| |YUKI NO SHINGUN| +|08/01/2022 03:05:04| |yuki no| +|08/01/2022 03:05:04| TIME +|08/01/2022 03:05:05| |Boys can';t do senshado as tank can;'t penetrate boys| +|08/01/2022 03:05:06| YEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEES +|08/01/2022 03:05:06| |ncie map| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:06| |Best part| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:06| |YUKI NO SHINGUN| +|08/01/2022 03:05:07| |YUKI NO SHINGUN| +|08/01/2022 03:05:08| YEEEEEEEEAAAAAAAAAAAH +|08/01/2022 03:05:09| |BEST EPISODE NOW| +|08/01/2022 03:05:09| |YUKI NO SHINGUN| +|08/01/2022 03:05:10| KINO +|08/01/2022 03:05:10| TOTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 03:05:10| |YUKI NO SHINGUN!!!!!!| +|08/01/2022 03:05:10| |>You will never sing Katyusha to sleep| +|08/01/2022 03:05:10| |Best song!| +|08/01/2022 03:05:11| |YUKI NO SHINGUN| +|08/01/2022 03:05:11| |YUKI NO SHINGUN| +|08/01/2022 03:05:11| |impregnate boyusha| +|08/01/2022 03:05:13| |! Banger alert ! Banger alert !| +|08/01/2022 03:05:14| |YUKI NO SHINGUN| +|08/01/2022 03:05:15| |YUKI NO SHINGUN| +|08/01/2022 03:05:16| |Like, go out the back?| +|08/01/2022 03:05:18| |Best scene; no doubt| +|08/01/2022 03:05:18| |MINNA NO TEKI NO KUNI| +|08/01/2022 03:05:19| >feet +|08/01/2022 03:05:20| |YUKI NO SHINGUN| +|08/01/2022 03:05:20| |feee.. feee... feeet???| +|08/01/2022 03:05:22| FEET +|08/01/2022 03:05:23| |cute larpers| +|08/01/2022 03:05:23| |YUKI NO SHINGUN| +|08/01/2022 03:05:24| |>only the feet| +|08/01/2022 03:05:24| |За здоровье!| +|08/01/2022 03:05:25| |I cuming | +|08/01/2022 03:05:26| |love this!| +|08/01/2022 03:05:27| |I WANT TO SEE FEET| +|08/01/2022 03:05:28| |LET ME SEE YOUR FEET| +|08/01/2022 03:05:30| cold +|08/01/2022 03:05:30| |KI NO MAMA| +|08/01/2022 03:05:30| kini +|08/01/2022 03:05:30| |BEST SONG| +|08/01/2022 03:05:32| |NUT: BUSTED| +|08/01/2022 03:05:32| |>Just strolling trough cold snow| +|08/01/2022 03:05:32| |no clothes| +|08/01/2022 03:05:34| |erwin socks......| +|08/01/2022 03:05:36| |ERWINS FEET MMMMMMMMMMMMMM| +|08/01/2022 03:05:36| FEET +|08/01/2022 03:05:36| |Erwin's feet... | +|08/01/2022 03:05:36| feet? +|08/01/2022 03:05:37| |ERWIN'S FROSTBITE FEET| +|08/01/2022 03:05:38| |CUTE FLOOF| +|08/01/2022 03:05:38| |COLD FEET| +|08/01/2022 03:05:38| Feet +|08/01/2022 03:05:39| FEEEEEEET +|08/01/2022 03:05:39| FEET +|08/01/2022 03:05:40| >footfags +|08/01/2022 03:05:42| FEEEEEEEET +|08/01/2022 03:05:42| footfags.... +|08/01/2022 03:05:43| >feetfags +|08/01/2022 03:05:43| lewd +|08/01/2022 03:05:44| |DEEP SNIFF| +|08/01/2022 03:05:44| >feet +|08/01/2022 03:05:45| |DASHING THROUGH THE SNOW| +|08/01/2022 03:05:45| |BASED FOOTFAG YUKARI| +|08/01/2022 03:05:45| |let me see your feet| +|08/01/2022 03:05:45| |>wearing skirts in the snow| +|08/01/2022 03:05:46| FEET +|08/01/2022 03:05:46| |Yukari no| +|08/01/2022 03:05:47| |ERwin sweaty feet| +|08/01/2022 03:05:48| EROI +|08/01/2022 03:05:49| FEET +|08/01/2022 03:05:50| yes +|08/01/2022 03:05:51| |WHAT COMES OUT OF THE PENIS-| +|08/01/2022 03:05:51| |The one True pairing| +|08/01/2022 03:05:51| |footfag yukari| +|08/01/2022 03:05:51| |letting Yukari see your feet...| +|08/01/2022 03:05:53| FEET +|08/01/2022 03:05:55| Kongou.jpg +|08/01/2022 03:05:55| |>seasoned feet| +|08/01/2022 03:05:56| |Clever Yukari| +|08/01/2022 03:05:58| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:05:58| |IMAGINE THE SMELL| +|08/01/2022 03:05:58| |I tried this once. couldn't get my feet in with the paper| +|08/01/2022 03:05:59| |erwin x yukari i ship| +|08/01/2022 03:06:00| |KILL YOURSELVES FOOTFAGS| +|08/01/2022 03:06:01| ;_; +|08/01/2022 03:06:03| FEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEETTTTTTTTTTT +|08/01/2022 03:06:03| |Footr seasoning?| +|08/01/2022 03:06:04| |>spicy feet| +|08/01/2022 03:06:05| FEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET +|08/01/2022 03:06:06| |LICK IT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 03:06:07| |Yukari touch Erwin feet| +|08/01/2022 03:06:07| |a little salt and pepper on your feet| +|08/01/2022 03:06:07| spicy +|08/01/2022 03:06:08| |Yukari likes spicy feet| +|08/01/2022 03:06:10| |I CAN KEEP THEIR FEET WARM WITH MY MOUTH| +|08/01/2022 03:06:14| |Erwin's frozen foot sweat| +|08/01/2022 03:06:14| |footcare is important in warfare| +|08/01/2022 03:06:14| |Yukarin making friends :)| +|08/01/2022 03:06:16| |Over by christmas ;____;| +|08/01/2022 03:06:20| |just piss in your boots| +|08/01/2022 03:06:20| Morons +|08/01/2022 03:06:26| LORE +|08/01/2022 03:06:30| /k/ +|08/01/2022 03:06:32| |bandage foot| +|08/01/2022 03:06:33| |erwin must be tank in disquise, | +|08/01/2022 03:06:34| |>tank corner OST| +|08/01/2022 03:06:35| |real lore| +|08/01/2022 03:06:36| |Just kill the russians and take their boots| +|08/01/2022 03:06:37| |I'M LEARNING BROS| +|08/01/2022 03:06:39| |SPICY GuP FEEEEEEEEEEEET| +|08/01/2022 03:06:40| |SLAVS ARE PART MUMMY| +|08/01/2022 03:06:40| |FEET LORE| +|08/01/2022 03:06:43| |>just wear socks bro| +|08/01/2022 03:06:44| >commies +|08/01/2022 03:06:44| |WRAP MY FEET, AKIYAMA-DONO!| +|08/01/2022 03:06:48| >feetfags +|08/01/2022 03:06:49| VAATI +|08/01/2022 03:06:50| |fucking nerds| +|08/01/2022 03:06:52| |SS uniform erwin| +|08/01/2022 03:06:54| |>girls and their shoes| +|08/01/2022 03:06:54| |Now I will never have cold feet| +|08/01/2022 03:06:54| |don't lie yukari| +|08/01/2022 03:06:54| |change your socks| +|08/01/2022 03:06:55| |DEEPEST LORE| +|08/01/2022 03:06:55| bootfags +|08/01/2022 03:06:56| |based larpers| +|08/01/2022 03:06:58| |cute fluff| +|08/01/2022 03:06:58| |CUTE | +|08/01/2022 03:06:58| |yukari feet....| +|08/01/2022 03:07:02| |who tf is taku-san| +|08/01/2022 03:07:03| CUTE +|08/01/2022 03:07:05| |CUTW <3| +|08/01/2022 03:07:06| |CUTE NERD COUPLE| +|08/01/2022 03:07:06| |DESU YO NE??| +|08/01/2022 03:07:07| |Typical girls talking about shoes | +|08/01/2022 03:07:08| CUTE +|08/01/2022 03:07:08| |taka san| +|08/01/2022 03:07:09| |desuyo neeeee| +|08/01/2022 03:07:10| |Bootsu Desu| +|08/01/2022 03:07:10| |CUTE FOX| +|08/01/2022 03:07:10| CTU +|08/01/2022 03:07:10| |ERWIN DOOJIN WHERE| +|08/01/2022 03:07:11| |Imagine sniffing Yukaris boots haha| +|08/01/2022 03:07:11| |F I R S T T I M E| +|08/01/2022 03:07:13| |girls und boots| +|08/01/2022 03:07:14| |>only two feet| +|08/01/2022 03:07:15| |based mom| +|08/01/2022 03:07:16| DESU +|08/01/2022 03:07:17| qt +|08/01/2022 03:07:19| |So which one tops?| +|08/01/2022 03:07:20| |ich liebe yukari| +|08/01/2022 03:07:20| |>she has only two feet| +|08/01/2022 03:07:20| |AHHHHHH I WANT YUKARI GF| +|08/01/2022 03:07:22| |love this bit| +|08/01/2022 03:07:23| |NEED MORE ERWIN| +|08/01/2022 03:07:25| |Cute girlls talking about cute boots| +|08/01/2022 03:07:25| |>tfw no wehraboo gf| +|08/01/2022 03:07:28| |REFRESH REFRESH REFRESH SOME OF YOU ARE REALLY OUT OF SYNC| +|08/01/2022 03:07:28| |Imagine the smell of her footsweat haha| +|08/01/2022 03:07:28| |WHY ARE MOMS LIKE THAT?| +|08/01/2022 03:07:32| |is this girl talk?| +|08/01/2022 03:07:32| |how long we talking about dis| +|08/01/2022 03:07:34| |THIGH HIGH BOOTS| +|08/01/2022 03:07:38| |is this how girl talk is?| +|08/01/2022 03:07:45| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 03:07:46| |noo, don't buffer now| +|08/01/2022 03:07:46| based +|08/01/2022 03:07:46| |its autism talk| +|08/01/2022 03:07:48| |yes, just listen| +|08/01/2022 03:07:49| |i hope so| +|08/01/2022 03:07:51| |USA USA USA USA| +|08/01/2022 03:07:52| |THE LORE DEEPEST | +|08/01/2022 03:07:52| |WHERE ARE THE TANKS?| +|08/01/2022 03:07:55| |JSDF chads| +|08/01/2022 03:07:56| |>refresh >loose all your coins No way fag| +|08/01/2022 03:07:56| |that's how BEST girls talk anon| +|08/01/2022 03:07:56| |You will nbevern smell stinky Yukari feet| +|08/01/2022 03:07:57| |WHAT ARE THOOOOOOOOOOOOOOOOOOOSE| +|08/01/2022 03:07:58| |USA BTFO| +|08/01/2022 03:07:58| MURICA +|08/01/2022 03:08:00| USABROS... +|08/01/2022 03:08:01| |USA USA USA| +|08/01/2022 03:08:04| |not just that he was in ww fucking 1| +|08/01/2022 03:08:04| |I thought everyone was on boats?| +|08/01/2022 03:08:04| men? +|08/01/2022 03:08:05| |You did order your kommandostore boots, right anon?| +|08/01/2022 03:08:05| usabros... +|08/01/2022 03:08:06| PANIC +|08/01/2022 03:08:08| BANZAI +|08/01/2022 03:08:09| >men +|08/01/2022 03:08:10| |wtf why is the USA so incompetent| +|08/01/2022 03:08:10| |source: my ass| +|08/01/2022 03:08:11| |korea all over again......| +|08/01/2022 03:08:12| |>jap propaganda| +|08/01/2022 03:08:13| |Ugh, Yuckari keeps talking about her weird military stuff...| +|08/01/2022 03:08:13| |burgers BTFO by nippon| +|08/01/2022 03:08:14| |jap bias| +|08/01/2022 03:08:15| |>the absolute state of burgers| +|08/01/2022 03:08:18| |Bervidin patch :DDD| +|08/01/2022 03:08:23| >AMERICANS +|08/01/2022 03:08:23| |based JSDF| +|08/01/2022 03:08:24| idiots +|08/01/2022 03:08:25| |: DDDDDDDDDDDDDDDDD| +|08/01/2022 03:08:26| EEEEEEE +|08/01/2022 03:08:27| comfy +|08/01/2022 03:08:29| |JSDF STRONK| +|08/01/2022 03:08:30| |>the absolute state of the Japanese military| +|08/01/2022 03:08:30| |nippon 1:0 usa| +|08/01/2022 03:08:30| BENIS +|08/01/2022 03:08:30| |No they are fucking NOT used to training in cold weather| +|08/01/2022 03:08:32| |JDSF > Burgers| +|08/01/2022 03:08:37| |why are americans so weak| +|08/01/2022 03:08:41| |That's a blatant fucking lie lmao| +|08/01/2022 03:08:43| |can you even buy snow in walmart| +|08/01/2022 03:08:43| |usa bros....| +|08/01/2022 03:08:45| >JSDF +|08/01/2022 03:08:48| |snow is too spicy| +|08/01/2022 03:08:48| |They used heat coins| +|08/01/2022 03:08:48| |>JSDF propaganda| +|08/01/2022 03:08:49| |THE HUWAITO PIGGU FEARS THE COLD| +|08/01/2022 03:08:50| |SNOW BALL FIGHT > WAR| +|08/01/2022 03:08:50| |RETURNED JUST IN TIME FOR THE AUTISTS| +|08/01/2022 03:08:50| |Im pretty sure the US has at least 2 points against japan| +|08/01/2022 03:08:50| |mutts seething| +|08/01/2022 03:08:51| |THIS IS BIAS RIGHT????? AMERICA BROS?!?!?!?!| +|08/01/2022 03:08:53| |I remember my dad going on exercises against Americans| +|08/01/2022 03:08:53| |cute girls and propaganda| +|08/01/2022 03:08:53| |glorious nippon, I kneel| +|08/01/2022 03:08:54| |Fake news| +|08/01/2022 03:08:54| |>Burgers can't stand cold| +|08/01/2022 03:08:55| |JDSF FAGS| +|08/01/2022 03:08:55| |AMERICANS COPING IN CHAT| +|08/01/2022 03:08:56| |The US army bows to the JSDF| +|08/01/2022 03:08:58| |americans are only good at making burgers| +|08/01/2022 03:08:58| |USA WEAKNESS = MRI, SNOW| +|08/01/2022 03:08:58| |Is recon some hip slang for sex| +|08/01/2022 03:09:00| >foreshadowing +|08/01/2022 03:09:01| SODOKO +|08/01/2022 03:09:01| |>J >S >D >F...| +|08/01/2022 03:09:02| |Molotov... | +|08/01/2022 03:09:03| |Based on a True story| +|08/01/2022 03:09:03| |The Americans were shit and gave in in the end| +|08/01/2022 03:09:06| |>Jap autistic nationalists| +|08/01/2022 03:09:06| |AMERICANS CANT EVEN MAKE BURGERS| +|08/01/2022 03:09:06| |W-we were just concerned for our tropical allies...| +|08/01/2022 03:09:07| |nips would beat the americans in any war| +|08/01/2022 03:09:09| |Kneel you burgers| +|08/01/2022 03:09:11| |Why hasn't the JSDF taken over the world yet?| +|08/01/2022 03:09:14| |AMERICANS ARE ONLY GOOD AT EATING BURGERS| +|08/01/2022 03:09:16| |THE FATTY FEARS THE SNOW| +|08/01/2022 03:09:17| |good vision ladies| +|08/01/2022 03:09:18| REMAKO +|08/01/2022 03:09:18| |anthem time| +|08/01/2022 03:09:18| SONG +|08/01/2022 03:09:18| REMAKO +|08/01/2022 03:09:19| REMAKO +|08/01/2022 03:09:20| |Get btfo by weather? Do americans really?| +|08/01/2022 03:09:20| SODOCUTE +|08/01/2022 03:09:21| |Americans only function when they have their supply chain| +|08/01/2022 03:09:22| REMAKO +|08/01/2022 03:09:22| SONG +|08/01/2022 03:09:23| |MESHI NI| +|08/01/2022 03:09:24| OUTPLAYED +|08/01/2022 03:09:24| REMAKO +|08/01/2022 03:09:25| REMANKO +|08/01/2022 03:09:27| DUMBASS +|08/01/2022 03:09:29| |RUN IT'S THE NKVD| +|08/01/2022 03:09:30| |Sodoko you dumbass| +|08/01/2022 03:09:30| |Sodoko's fault| +|08/01/2022 03:09:31| |RE MA N KO| +|08/01/2022 03:09:31| |NIPS WOULD BE THE MASTERS OF THE WORLD IF THEY COULD STOP SUICIDING| +|08/01/2022 03:09:31| |kv-2 tan mentioned!| +|08/01/2022 03:09:38| |! Banger alert ! Banger alert !| +|08/01/2022 03:09:42| |Mako's manko...| +|08/01/2022 03:09:43| |SAMUSA NO TAKIBI| +|08/01/2022 03:09:43| |JSDF is like, kind of a joke | +|08/01/2022 03:09:48| |2nd best song| +|08/01/2022 03:09:49| |Two retards in the snow| +|08/01/2022 03:09:50| |YO GIVE ME THE AUX| +|08/01/2022 03:09:51| |KOUMYOU BANASHI| +|08/01/2022 03:09:51| |these girls should sing more| +|08/01/2022 03:09:52| |yal are behind as hell| +|08/01/2022 03:09:53| |thsi song slaps fr fr| +|08/01/2022 03:09:53| |Is banger some zoomer slang| +|08/01/2022 03:09:55| |japanese military music are bangers| +|08/01/2022 03:09:58| Hitosu~ +|08/01/2022 03:09:59| ! +|08/01/2022 03:09:59| |Then what's the punchline?| +|08/01/2022 03:09:59| pronebone +|08/01/2022 03:10:00| |Target Spotted| +|08/01/2022 03:10:08| |pronebone in the cold| +|08/01/2022 03:10:08| YES +|08/01/2022 03:10:09| |YES SIR!| +|08/01/2022 03:10:11| UTEEEEE +|08/01/2022 03:10:11| |YES SIR| +|08/01/2022 03:10:11| |Why didn't they bring the tanks with them and snipe them?| +|08/01/2022 03:10:14| |she's so happy :)| +|08/01/2022 03:10:15| |YES SIR| +|08/01/2022 03:10:16| |the only thing banging is yukari's body| +|08/01/2022 03:10:20| |cuddling with yukari for warmth| +|08/01/2022 03:10:24| CUTE +|08/01/2022 03:10:25| |YES SAH| +|08/01/2022 03:10:25| YESSAAAAAAAA +|08/01/2022 03:10:26| yessa +|08/01/2022 03:10:27| YESSAAAAAAA +|08/01/2022 03:10:27| o7 +|08/01/2022 03:10:27| |YES SIR| +|08/01/2022 03:10:30| |YES SAAAAAAAA| +|08/01/2022 03:10:30| QTTTT +|08/01/2022 03:10:32| |Good ol' memesubs| +|08/01/2022 03:10:33| |Guys, can you start referring to me as Yukari? Thanks.| +|08/01/2022 03:10:33| |Hiding in Yukari's hair for warmth| +|08/01/2022 03:10:34| |I want to squeeze Yukari's firm belly| +|08/01/2022 03:10:34| |EYESSSSS SAHHH| +|08/01/2022 03:10:34| |YESSA o7| +|08/01/2022 03:10:35| |this is a banger| +|08/01/2022 03:10:35| \o/ +|08/01/2022 03:10:38| |Cute squad| +|08/01/2022 03:10:41| |I feel like the chat is operating on 2 timelines| +|08/01/2022 03:10:41| |cute cute cute| +|08/01/2022 03:10:43| |You still remember the basic of CQC Yukari right| +|08/01/2022 03:10:43| |You will never be Yukari| +|08/01/2022 03:10:44| (Yukari) +|08/01/2022 03:10:45| |TENNO HEIKA| +|08/01/2022 03:10:46| |head bopper| +|08/01/2022 03:10:47| where???? +|08/01/2022 03:10:50| |nice shovel| +|08/01/2022 03:10:50| |what else does she carry?| +|08/01/2022 03:10:51| |A FUCKING SHOVEL| +|08/01/2022 03:10:51| |>took a shovel out of her ass| +|08/01/2022 03:10:52| BAAAAAAAAAAAANNNNNNZAAAAAAAAAAAAAIIIIIIIIIIIII +|08/01/2022 03:10:58| |Yukari's shovel...| +|08/01/2022 03:10:59| |I'm drunk, I operate on my own timeline| +|08/01/2022 03:11:01| |POCKET SHUVEL| +|08/01/2022 03:11:02| |put the glasses on you retard| +|08/01/2022 03:11:02| |CUTE FLOOF| +|08/01/2022 03:11:05| |now have sex| +|08/01/2022 03:11:10| |i own a shovel just like that :D| +|08/01/2022 03:11:12| |Floof best girl| +|08/01/2022 03:11:12| |comfy cave| +|08/01/2022 03:11:12| SUUPUU +|08/01/2022 03:11:14| |shovel floof| +|08/01/2022 03:11:15| SEEEEEEEEEEEEEEX +|08/01/2022 03:11:15| |>tfw no cave dwelling gf| +|08/01/2022 03:11:15| |sex for warmth, now| +|08/01/2022 03:11:15| |it collapsed and they died| +|08/01/2022 03:11:16| |Shovels, grenades, maps, everything!| +|08/01/2022 03:11:17| Klappspaten +|08/01/2022 03:11:17| |SEX IN THE SNOW CAVE| +|08/01/2022 03:11:18| |The Yukari grotto| +|08/01/2022 03:11:20| |same here anon!| +|08/01/2022 03:11:21| |The scouts aredead ;_;| +|08/01/2022 03:11:22| |Yukari's sex cave| +|08/01/2022 03:11:23| |Where's duce| +|08/01/2022 03:11:24| SOUUUUP +|08/01/2022 03:11:28| |Shouldn't these two be absolutely freezing?| +|08/01/2022 03:11:31| |i want to go camping bros| +|08/01/2022 03:11:31| |DUCE died| +|08/01/2022 03:11:32| |F I R S T T I M E| +|08/01/2022 03:11:34| |god i want to cum in her hair| +|08/01/2022 03:11:35| |I'M AT SOUP| +|08/01/2022 03:11:36| CARBON +|08/01/2022 03:11:39| |Cute grills don;tr frteese| +|08/01/2022 03:11:41| |JUST USE HEAT COINS YOU DUMB FLOOF| +|08/01/2022 03:11:41| d-duce +|08/01/2022 03:11:44| |Rice Rations| +|08/01/2022 03:11:46| |CARBON COATED RICE| +|08/01/2022 03:11:46| NARUHODO +|08/01/2022 03:11:47| duce +|08/01/2022 03:11:47| |FAKE WINTER| +|08/01/2022 03:11:48| |frozen jelly donuts?| +|08/01/2022 03:11:48| COMUNISM +|08/01/2022 03:11:48| |>he doesnt know about how snow works underground| +|08/01/2022 03:11:49| |FUCK CAMPING, AND FUCK YURU CAMP| +|08/01/2022 03:11:51| |the soup aisle?| +|08/01/2022 03:11:53| |Just get out of the soup section| +|08/01/2022 03:11:55| |Caesar can't understnad basic thermodynamics| +|08/01/2022 03:11:55| |Carbon Coating defeats col;d| +|08/01/2022 03:12:00| BULGE +|08/01/2022 03:12:00| |ITS STILL SOUP| +|08/01/2022 03:12:01| |good taste in entrenching equipment| +|08/01/2022 03:12:04| Bulge... +|08/01/2022 03:12:08| BULGE +|08/01/2022 03:12:10| |Technically, the Lee was equiped with a supplementary gas heater...| +|08/01/2022 03:12:12| |squeeze the german bulge....| +|08/01/2022 03:12:13| |Are Yukarin's legs carbon-coated| +|08/01/2022 03:12:14| |yukari will battle my bulge| +|08/01/2022 03:12:16| |LARP ALERT LARP ALERT| +|08/01/2022 03:12:17| BARJI +|08/01/2022 03:12:18| BULGE +|08/01/2022 03:12:20| |Look at how their beverages steam; it's obviously real cold| +|08/01/2022 03:12:21| |Good ol' LARP| +|08/01/2022 03:12:23| |>she will use it in das finale 4| +|08/01/2022 03:12:24| |Dorks | +|08/01/2022 03:12:25| AUTISM +|08/01/2022 03:12:26| |autistic roleplay| +|08/01/2022 03:12:28| |those jelly donust look pretty good| +|08/01/2022 03:12:29| |!LARP ALERT!| +|08/01/2022 03:12:33| |haha momo| +|08/01/2022 03:12:34| |TL NOTE| +|08/01/2022 03:12:35| |best grils| +|08/01/2022 03:12:36| dorks +|08/01/2022 03:12:36| |Das Finale is a lie| +|08/01/2022 03:12:36| |WHAT IS SNOW?| +|08/01/2022 03:12:38| |cute dorks| +|08/01/2022 03:12:38| |God I wish I was autistic too| +|08/01/2022 03:12:38| LARP +|08/01/2022 03:12:38| |CUTE LARP| +|08/01/2022 03:12:38| |what tf is snow| +|08/01/2022 03:12:39| CUTE +|08/01/2022 03:12:40| cuties +|08/01/2022 03:12:40| |BASED LARP| +|08/01/2022 03:12:41| kawaii +|08/01/2022 03:12:42| HAHAHAHAHAHA +|08/01/2022 03:12:43| |eternal torment and misery| +|08/01/2022 03:12:43| |HELL YEAH| +|08/01/2022 03:12:46| |I can't believe Yuakri is fucking dead| +|08/01/2022 03:12:46| |HOLY FUCK YUKARI IS DEAD| +|08/01/2022 03:12:47| |autistic falling| +|08/01/2022 03:12:48| F +|08/01/2022 03:12:48| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:12:48| Autism +|08/01/2022 03:12:49| |HOLY SHIT IS YUKARI DEAD BROS| +|08/01/2022 03:12:49| |F FOR YUKARI| +|08/01/2022 03:12:49| DESU +|08/01/2022 03:12:50| water +|08/01/2022 03:12:50| RIP +|08/01/2022 03:12:51| F +|08/01/2022 03:12:51| F +|08/01/2022 03:12:51| dead +|08/01/2022 03:12:51| |yeah! what is snow?| +|08/01/2022 03:12:52| AUTISM +|08/01/2022 03:12:52| WWWWWWWWWWWWWWWWWWWW +|08/01/2022 03:12:52| |I CAN'T BELIVE YUKARI IS DEAD| +|08/01/2022 03:12:53| Larpers +|08/01/2022 03:12:53| KEK +|08/01/2022 03:12:53| |I can't believe yukari is fucking dead| +|08/01/2022 03:12:53| |PRESS F YUKARI| +|08/01/2022 03:12:53| CUTE +|08/01/2022 03:12:53| |Baby dont hurt me| +|08/01/2022 03:12:54| HAKKOUDA +|08/01/2022 03:12:54| |CUTE AUTISM| +|08/01/2022 03:12:54| WTF +|08/01/2022 03:12:55| F +|08/01/2022 03:12:55| |what IS snow?| +|08/01/2022 03:12:55| |RIP YUKARI| +|08/01/2022 03:12:57| F +|08/01/2022 03:12:57| |TL note -------------------------->| +|08/01/2022 03:12:59| |cute larping| +|08/01/2022 03:13:00| F +|08/01/2022 03:13:01| F +|08/01/2022 03:13:01| F +|08/01/2022 03:13:02| |Cute baka| +|08/01/2022 03:13:02| |I CANT BELIEVE YUKARI IS DED| +|08/01/2022 03:13:02| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:13:03| rip +|08/01/2022 03:13:03| |YUKARI IS DEAD| +|08/01/2022 03:13:03| RIP +|08/01/2022 03:13:03| F +|08/01/2022 03:13:03| RIP +|08/01/2022 03:13:03| autism +|08/01/2022 03:13:04| F +|08/01/2022 03:13:05| rip +|08/01/2022 03:13:05| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 03:13:05| F +|08/01/2022 03:13:05| f +|08/01/2022 03:13:06| |its over| +|08/01/2022 03:13:07| F +|08/01/2022 03:13:07| |YUKARI IS UFCKING DEAD| +|08/01/2022 03:13:07| |Fluff is dead| +|08/01/2022 03:13:08| F +|08/01/2022 03:13:08| F +|08/01/2022 03:13:08| |SHE DIED| +|08/01/2022 03:13:10| Cute +|08/01/2022 03:13:11| |TOOO PURE| +|08/01/2022 03:13:11| |TL NOTE: YUKI MEANS SNOW| +|08/01/2022 03:13:12| |I can't believe she's fucking dead| +|08/01/2022 03:13:12| |oh great, she's dead| +|08/01/2022 03:13:13| |theyre dead| +|08/01/2022 03:13:13| |I want to do it with Yukari| +|08/01/2022 03:13:14| F +|08/01/2022 03:13:14| |I can;t believe Yukari is dead| +|08/01/2022 03:13:15| |was it autism?| +|08/01/2022 03:13:15| |tumbling down| +|08/01/2022 03:13:16| F +|08/01/2022 03:13:20| cutecutecute +|08/01/2022 03:13:23| |Still warm| +|08/01/2022 03:13:27| |Update the stream, bakas, you're behidn| +|08/01/2022 03:13:27| dildos +|08/01/2022 03:13:27| |TL NOTE: YUKARI MEANS BEST GIRL| +|08/01/2022 03:13:28| ctuctuctu +|08/01/2022 03:13:29| |based prepper| +|08/01/2022 03:13:32| |peculiar tools| +|08/01/2022 03:13:37| |INSUPEKTA GADUJETTU| +|08/01/2022 03:13:47| |I haven't drunk a single drop of water, wat do| +|08/01/2022 03:13:49| |>Yfw Yukair can outlift me| +|08/01/2022 03:13:49| |Yukari is peculiar indeed...| +|08/01/2022 03:13:53| |I'm so behind that I'm still at Anzio| +|08/01/2022 03:13:54| |drink some wa'a| +|08/01/2022 03:13:57| |drink alcohol| +|08/01/2022 03:13:57| Die +|08/01/2022 03:14:01| |don't worry, they have carbon coated thighs. Comfy, warm, cute.| +|08/01/2022 03:14:03| |anzio never ended| +|08/01/2022 03:14:03| |I skipped class just for this| +|08/01/2022 03:14:04| |and a grenade| +|08/01/2022 03:14:07| |>TFW no Yukari GF| +|08/01/2022 03:14:07| |even a fucking bomb| +|08/01/2022 03:14:09| spies +|08/01/2022 03:14:09| |Time to do some trolling...| +|08/01/2022 03:14:10| |carbon coated internal organs| +|08/01/2022 03:14:11| |Yukari carries this Franchise| +|08/01/2022 03:14:12| |sneeki breeki| +|08/01/2022 03:14:12| |Off to find wah| +|08/01/2022 03:14:15| |we do a little trolling| +|08/01/2022 03:14:16| |anzio eternal| +|08/01/2022 03:14:16| |C4 Rush!| +|08/01/2022 03:14:19| |flaggu tanku| +|08/01/2022 03:14:21| |They should offer Momo's body as a peace offering| +|08/01/2022 03:14:23| NINA +|08/01/2022 03:14:23| |>Not having christmass vaction this week| +|08/01/2022 03:14:23| |TANK BUTT| +|08/01/2022 03:14:24| |NINA YOU GO TO GULAG| +|08/01/2022 03:14:24| |Do Yukari always carry condoms?| +|08/01/2022 03:14:24| nina +|08/01/2022 03:14:26| |Operation Snowy Blowy| +|08/01/2022 03:14:27| |NINA NINA NINA| +|08/01/2022 03:14:28| |Stealth 100| +|08/01/2022 03:14:29| |Hello fellow russians| +|08/01/2022 03:14:29| NINA +|08/01/2022 03:14:29| |cute soviet| +|08/01/2022 03:14:31| |Nina a cute| +|08/01/2022 03:14:33| |Comrade Nina!| +|08/01/2022 03:14:33| |Nina no baka| +|08/01/2022 03:14:33| |HOW DO YOU DO MY FELLOW COMMUNISTS| +|08/01/2022 03:14:33| |NINA WAS NEVER SEEN AGAIN| +|08/01/2022 03:14:36| |tiny little nina| +|08/01/2022 03:14:38| |nina baka| +|08/01/2022 03:14:38| |Senpai is so generous!| +|08/01/2022 03:14:38| |TALL FLOOF| +|08/01/2022 03:14:40| |my fellow russians,| +|08/01/2022 03:14:41| |GREETINGS COMRADE | +|08/01/2022 03:14:41| |TOVARISH NINA| +|08/01/2022 03:14:41| UOOOOOOOOOHHHHHH +|08/01/2022 03:14:44| moan +|08/01/2022 03:14:46| |so cute| +|08/01/2022 03:14:48| |Hello fellow ruskie scum| +|08/01/2022 03:14:50| |what the heck Yukari forgot to record it this time| +|08/01/2022 03:14:51| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 03:14:52| |nina is so fucking cute bros| +|08/01/2022 03:14:52| uuuuuuuuuuuuoooooooooooooooooooooohhh +|08/01/2022 03:14:54| NINA +|08/01/2022 03:14:54| ToT +|08/01/2022 03:14:54| |cute slavs| +|08/01/2022 03:14:56| UUUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 03:14:56| CUTE +|08/01/2022 03:14:57| |I Serve the Soviet Union| +|08/01/2022 03:14:58| |Fellow comrades| +|08/01/2022 03:14:58| |cute nina| +|08/01/2022 03:14:58| sus +|08/01/2022 03:14:59| |>40 small girls inside a trench coat| +|08/01/2022 03:15:01| CUTE +|08/01/2022 03:15:03| |I too kick dance for leisure| +|08/01/2022 03:15:03| |ERWIN YOU DUMB| +|08/01/2022 03:15:07| NANDEMONAI +|08/01/2022 03:15:08| |Trickery 100| +|08/01/2022 03:15:12| |KATYUSHA STATUS: OWNED| +|08/01/2022 03:15:13| |Soviet YunYun| +|08/01/2022 03:15:13| |>like a chile| +|08/01/2022 03:15:14| |don't be fooled. this loli WILL break you in half| +|08/01/2022 03:15:16| |Yukari spying once again| +|08/01/2022 03:15:18| |damn female child...| +|08/01/2022 03:15:19| |dumb ruskies| +|08/01/2022 03:15:19| |dumb hick accent| +|08/01/2022 03:15:20| NOBODY +|08/01/2022 03:15:20| DAYONEEEEE~ +|08/01/2022 03:15:21| |facts, based nina| +|08/01/2022 03:15:21| EXPOSED +|08/01/2022 03:15:24| |Katyusha is an adult| +|08/01/2022 03:15:26| dayoneeeee~ +|08/01/2022 03:15:26| |Can orai win once without cheatingf| +|08/01/2022 03:15:27| |Hello Fellow Russian| +|08/01/2022 03:15:27| |ching chong ping pong fellow ruskis| +|08/01/2022 03:15:28| |HAHA CHILD| +|08/01/2022 03:15:28| DAYONEEEEEEEE +|08/01/2022 03:15:29| |Yuri Erwin's the name| +|08/01/2022 03:15:29| |Yukari best honeypot | +|08/01/2022 03:15:29| |That's it Nina, you're going to Siberia| +|08/01/2022 03:15:34| |UOOOOOOOHHHHHHHHHHH KATYUSHA UOOOOOOOOOOOOOOOOOHHHHHHHHHH| +|08/01/2022 03:15:37| |how do you do fellow pravdans?| +|08/01/2022 03:15:37| |EROTIC RUSKIE CHILD| +|08/01/2022 03:15:37| |NINA NO| +|08/01/2022 03:15:41| KABE +|08/01/2022 03:15:42| DAYONEEEEEEEE +|08/01/2022 03:15:43| |NINA YES| +|08/01/2022 03:15:43| Owned +|08/01/2022 03:15:44| |NINA THOSE ARE STATE SECRETS| +|08/01/2022 03:15:48| |What will Nina's punishment be?| +|08/01/2022 03:15:50| |that looks a LOT like a grisdie susbension tonk!| +|08/01/2022 03:15:50| |Nina's going to gulag for this| +|08/01/2022 03:15:53| Rape +|08/01/2022 03:15:55| |to gulag| +|08/01/2022 03:15:56| |NO NINA YOU'LL GET THE GULAG| +|08/01/2022 03:15:56| |Dumb red| +|08/01/2022 03:15:58| SIBERIA +|08/01/2022 03:16:00| KAABEE-TAN +|08/01/2022 03:16:01| |Firing Squad | +|08/01/2022 03:16:01| |Guppies are always punished with rape| +|08/01/2022 03:16:03| |NINA STOP OR KATYUSHA WILL SEND YOU TO SIBERIA| +|08/01/2022 03:16:03| |rape correction| +|08/01/2022 03:16:04| |Nina gonna suck some thick dicks for this| +|08/01/2022 03:16:05| |Top-tier, no, YUKARI-tier espionage!| +|08/01/2022 03:16:07| |KV A QT| +|08/01/2022 03:16:07| |Nina and her family was later sent to Siberia| +|08/01/2022 03:16:07| |is nina the strongest loader| +|08/01/2022 03:16:08| |NINA STFU THE NKVD IS LISTENING| +|08/01/2022 03:16:09| |NINA NOOOOOO| +|08/01/2022 03:16:12| BAKABAKA +|08/01/2022 03:16:12| Nigger +|08/01/2022 03:16:15| savage +|08/01/2022 03:16:16| CUUUUUUUUUUTE +|08/01/2022 03:16:16| |so cute| +|08/01/2022 03:16:19| |Press R to inform on Nina| +|08/01/2022 03:16:23| R +|08/01/2022 03:16:24| |Stalinium approved| +|08/01/2022 03:16:26| |NOT R| +|08/01/2022 03:16:26| RRRRRRRRRRRRRRRRRR +|08/01/2022 03:16:27| no +|08/01/2022 03:16:27| R +|08/01/2022 03:16:28| |Nina gonna get whipped in the gulag| +|08/01/2022 03:16:28| R +|08/01/2022 03:16:33| |WHY'D YOU SPILL YER BEANS| +|08/01/2022 03:16:34| |I WILL COME INSIDE OF NINA| +|08/01/2022 03:16:34| |Hard R| +|08/01/2022 03:16:34| |such nice spies| +|08/01/2022 03:16:35| |COCOA SAN| +|08/01/2022 03:16:36| |Press B to blackmail Nina instead of reporting| +|08/01/2022 03:16:37| |ALINA IS A SNITCH| +|08/01/2022 03:16:37| |NINA YOU"RE GOING TO CHECHNYA GO FIGHT THE REBELS| +|08/01/2022 03:16:37| |I want to make some Gogo now| +|08/01/2022 03:16:37| |Who's Nina? There's no one at Pravda by that name...| +|08/01/2022 03:16:38| CUTEYUSHA +|08/01/2022 03:16:39| |ALINA IS LISTENING NINA NO| +|08/01/2022 03:16:39| B +|08/01/2022 03:16:39| B +|08/01/2022 03:16:40| KEK +|08/01/2022 03:16:41| |Why does this child have such a short skirt? | +|08/01/2022 03:16:42| |Ironic Lolicons get run over by my tank| +|08/01/2022 03:16:44| BBBBBB +|08/01/2022 03:16:44| |RIP IN PIECE NINA| +|08/01/2022 03:16:45| B +|08/01/2022 03:16:45| |Nina is gonna be made a cocksleeve| +|08/01/2022 03:16:46| |Pure elation| +|08/01/2022 03:16:46| cute +|08/01/2022 03:16:48| |DAYS OF DASH| +|08/01/2022 03:16:48| |Katyu an egotist| +|08/01/2022 03:16:50| LMAO +|08/01/2022 03:16:52| |it was at taht moment alina decided she didnt see anything| +|08/01/2022 03:16:53| |CUTE HORLY FLOOF| +|08/01/2022 03:16:56| |dat face| +|08/01/2022 03:16:57| |Oh God Yukari is so cute| +|08/01/2022 03:16:57| |>forcing the ironic lolicon meme| +|08/01/2022 03:16:59| song +|08/01/2022 03:17:00| |lessss goooo banger| +|08/01/2022 03:17:01| |I hope their sweet thighs don't get frostbite| +|08/01/2022 03:17:01| |they're our senpais dummy| +|08/01/2022 03:17:02| |>she's unaware| +|08/01/2022 03:17:03| |Cute retard| +|08/01/2022 03:17:04| RUN +|08/01/2022 03:17:04| \o/ +|08/01/2022 03:17:05| |>She doesn't know| +|08/01/2022 03:17:06| |Fucking idiots| +|08/01/2022 03:17:07| |>ironic lolicon| +|08/01/2022 03:17:09| |Nina is such a retrard| +|08/01/2022 03:17:09| |TH PERFECT CRIME| +|08/01/2022 03:17:10| >ironic +|08/01/2022 03:17:11| \o/ +|08/01/2022 03:17:11| |I'M DREAMING| +|08/01/2022 03:17:11| |>nina cost them the match| +|08/01/2022 03:17:12| |Charisma lock passed| +|08/01/2022 03:17:14| >ironic +|08/01/2022 03:17:14| |cheese it| +|08/01/2022 03:17:14| |CARBON COATED THIGHS AAAAAAAAAAAA| +|08/01/2022 03:17:15| |! Banger alert ! Banger alert !| +|08/01/2022 03:17:15| Ahahahah +|08/01/2022 03:17:15| banger?! +|08/01/2022 03:17:16| |no irony here faggot| +|08/01/2022 03:17:17| '_'7 +|08/01/2022 03:17:20| |LOL LMAO| +|08/01/2022 03:17:25| >banger +|08/01/2022 03:17:27| SEAMLESS +|08/01/2022 03:17:28| MAKOOOOOOOOOOO +|08/01/2022 03:17:30| |Dark song| +|08/01/2022 03:17:31| |that cut| +|08/01/2022 03:17:40| SEAMLESS +|08/01/2022 03:17:42| |How haven't their thigh frozen over already| +|08/01/2022 03:17:44| |What is "fun"?| +|08/01/2022 03:17:44| |damn female child...| +|08/01/2022 03:17:45| |But they did come home alve| +|08/01/2022 03:17:45| |WITHOUT SEAMS| +|08/01/2022 03:17:50| |>it changed to a lower key| +|08/01/2022 03:17:51| |I hate fun| +|08/01/2022 03:17:51| |! BANGER ALERT !| +|08/01/2022 03:17:52| |high tech 3d| +|08/01/2022 03:17:54| |edited to perfection| +|08/01/2022 03:17:56| |Carbon Coated Thighs | +|08/01/2022 03:18:00| |MY FUCKING STREAM| +|08/01/2022 03:18:04| |SLAV MUSIC| +|08/01/2022 03:18:07| |Carbon coated teacups| +|08/01/2022 03:18:08| |red tanks| +|08/01/2022 03:18:12| >MORALE +|08/01/2022 03:18:13| |love this music| +|08/01/2022 03:18:13| |POLYUSHKA POLYE| +|08/01/2022 03:18:14| |Have yo uheard this saying?| +|08/01/2022 03:18:15| |get outta here stalker| +|08/01/2022 03:18:20| |wanna dance on my table now| +|08/01/2022 03:18:21| |3D of the future| +|08/01/2022 03:18:25| |PECO KAWAII| +|08/01/2022 03:18:26| AZUSA +|08/01/2022 03:18:26| |You Know this Saying Right?| +|08/01/2022 03:18:27| |I want to unheard all those sayings plz| +|08/01/2022 03:18:30| |cyka blyat| +|08/01/2022 03:18:30| |The dance| +|08/01/2022 03:18:30| |TOVARISCH POLKOVNIK| +|08/01/2022 03:18:34| |Get ready to dance your way to victory!| +|08/01/2022 03:18:35| |imagine Stalingrad, but with cute girls| +|08/01/2022 03:18:39| |BREED RABBITS| +|08/01/2022 03:18:40| |IT'S GOOD TO SEE YOU ALL HERE TODAY| +|08/01/2022 03:18:42| |thats it| +|08/01/2022 03:18:43| |Not time to dance yet| +|08/01/2022 03:18:47| |SORE DA ;_;| +|08/01/2022 03:18:49| |NEED MORE SOUP| +|08/01/2022 03:18:50| |BUT IT WILL BE EVEN BETTER TO SEE YOU SOON| +|08/01/2022 03:18:51| |dumb duckd| +|08/01/2022 03:18:54| |STEP COUNTER ;___;| +|08/01/2022 03:18:57| |BREAKING THROUGH THAT WALL| +|08/01/2022 03:18:57| |Saki will freeze over| +|08/01/2022 03:18:57| |based /his/| +|08/01/2022 03:18:58| |butt on the ground| +|08/01/2022 03:19:05| |The Guppies are sleeping...| +|08/01/2022 03:19:05| Paizuri +|08/01/2022 03:19:05| cute +|08/01/2022 03:19:08| |YOU HEAR THAT, ANON? DON'T FALL ASLEEP!| +|08/01/2022 03:19:09| NERDS +|08/01/2022 03:19:09| |AHHHH SHE FELL ASLEEP| +|08/01/2022 03:19:13| |BY ME| +|08/01/2022 03:19:13| |IF ONLY THEY WORE APPROPRIATE CLOTHING| +|08/01/2022 03:19:14| snowbare +|08/01/2022 03:19:15| |why are we here just to suffer| +|08/01/2022 03:19:16| |typical russians| +|08/01/2022 03:19:17| |How much do these faggots eat| +|08/01/2022 03:19:17| |comfy sodoko| +|08/01/2022 03:19:17| |do the dance miho or you are getting disowned again| +|08/01/2022 03:19:17| |THE DANCE| +|08/01/2022 03:19:18| |cute helmets| +|08/01/2022 03:19:18| KHOROSHO +|08/01/2022 03:19:18| |THE SODOKO CACOON| +|08/01/2022 03:19:19| |CHEEKI BREEKI| +|08/01/2022 03:19:20| |You heard Sodoko; no sleeping.| +|08/01/2022 03:19:21| BORSCHT +|08/01/2022 03:19:21| |THERE IT IS| +|08/01/2022 03:19:30| |BRING MORE SOUP| +|08/01/2022 03:19:31| |lol lmao| +|08/01/2022 03:19:31| |PARTY HARD| +|08/01/2022 03:19:31| |slav gunna slav| +|08/01/2022 03:19:33| KOSACHOV +|08/01/2022 03:19:33| |cyka blyat| +|08/01/2022 03:19:34| |smart communists| +|08/01/2022 03:19:36| |terrible way to put out a fire| +|08/01/2022 03:19:37| |WAIT: none of them wears adidas| +|08/01/2022 03:19:39| |Kick dance!| +|08/01/2022 03:19:39| BLYAT +|08/01/2022 03:19:42| |Dumb communist dorks| +|08/01/2022 03:19:44| |CHEEKI BREEKI IV DAMKE| +|08/01/2022 03:19:46| gopnitsas +|08/01/2022 03:19:52| |the right way to put out a fire is with piss| +|08/01/2022 03:19:53| Yes +|08/01/2022 03:19:56| |flower in snow????!!!111| +|08/01/2022 03:19:57| |dork dance incoming| +|08/01/2022 03:20:03| |ponyatno have a nice day| +|08/01/2022 03:20:07| |ANKOU TIEM| +|08/01/2022 03:20:08| |ahn ahn ahn| +|08/01/2022 03:20:11| |AUTISM ALERT| +|08/01/2022 03:20:13| |TIME FOR AUTISM| +|08/01/2022 03:20:14| |O I| +|08/01/2022 03:20:15| |do the funny| +|08/01/2022 03:20:20| |pissing on a fire or on a sauna smells like shit and you breathe the piss vapour| +|08/01/2022 03:20:20| |BY TAAL| +|08/01/2022 03:20:22| |AUTISTIC DANCE INCOMING| +|08/01/2022 03:20:22| |what would maho do in this time of need?| +|08/01/2022 03:20:22| |"do the thing"| +|08/01/2022 03:20:24| |ANKOU DANCE TIME| +|08/01/2022 03:20:25| |AN AH AN AN| +|08/01/2022 03:20:25| |do the stanky leg| +|08/01/2022 03:20:25| |INCOMING AUTISM. BRACE| +|08/01/2022 03:20:26| |do it| +|08/01/2022 03:20:27| |wtf? Is Momo right for once?| +|08/01/2022 03:20:28| |AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ | +|08/01/2022 03:20:28| |So can I piss before the infamous SnW episode tomorrow?| +|08/01/2022 03:20:29| |ITS TIME| +|08/01/2022 03:20:30| |AN AN AN AN| +|08/01/2022 03:20:30| |AN AN AN AN| +|08/01/2022 03:20:30| A-A-A-A-A-AN +|08/01/2022 03:20:30| |low energy| +|08/01/2022 03:20:31| |this bit is ten times funnier remembering ribbon warrior| +|08/01/2022 03:20:31| |A A AN AN A A AN AN A A AN AA AN AN AN AN| +|08/01/2022 03:20:31| |ah ah ah ah ah ah ah an| +|08/01/2022 03:20:33| |BEST DANCE| +|08/01/2022 03:20:33| |WAR DANCE INCOMING| +|08/01/2022 03:20:33| AAAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNN +|08/01/2022 03:20:34| AUTISM +|08/01/2022 03:20:34| Cringe +|08/01/2022 03:20:34| terrifying +|08/01/2022 03:20:35| |AAANG AAANG AAAANG| +|08/01/2022 03:20:35| |AN AN AN AN| +|08/01/2022 03:20:35| |an an an| +|08/01/2022 03:20:35| |a-a-an an a-a-an| +|08/01/2022 03:20:36| ANANANANANANANANANANANA +|08/01/2022 03:20:36| |a a an an| +|08/01/2022 03:20:36| |AUTISM INBOUND| +|08/01/2022 03:20:37| |it's autism hours| +|08/01/2022 03:20:37| |AN AN AN AN AN AN| +|08/01/2022 03:20:38| |AH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANGAH AH ANG| +|08/01/2022 03:20:38| |Time for a sigma (fe)male move| +|08/01/2022 03:20:40| |! Bange- b... banger? Banger alert...?| +|08/01/2022 03:20:41| |AN AN AN AN AN| +|08/01/2022 03:20:43| |SHE IS GOING CRAZYYYYYYYYYYYYYY| +|08/01/2022 03:20:44| |THIS IS THE DANCE OF MY PEOPLE| +|08/01/2022 03:20:44| |AAANG AAANG AAANG| +|08/01/2022 03:20:45| |A A AN AN A A AN AN A A AN AN A A AN AN A A AN AN| +|08/01/2022 03:20:46| |AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ AHN~ | +|08/01/2022 03:20:46| |ANG ANG ANG| +|08/01/2022 03:20:47| BANGER +|08/01/2022 03:20:47| |AHN AHN AHN| +|08/01/2022 03:20:48| |the virgin Kazotsky Kick vs the chad Anglerfish dance| +|08/01/2022 03:20:49| |A A AN AN| +|08/01/2022 03:20:50| |ah hah ah ang| +|08/01/2022 03:20:50| KINO +|08/01/2022 03:20:50| |NOW SHE'S LOST IT| +|08/01/2022 03:20:51| |AN ANG ANG ANG| +|08/01/2022 03:20:51| |Ribbon warrior turned this into something menacing| +|08/01/2022 03:20:52| |AHN AHN AHN| +|08/01/2022 03:20:52| pepega +|08/01/2022 03:20:53| A-A-AN +|08/01/2022 03:20:53| |a a an a a an a a an a a an a a an a a an a a an a a an a a an a a an | +|08/01/2022 03:20:53| |we watching the OVA that is just this right| +|08/01/2022 03:20:54| |AN AN AN AN AN AN AN AN AN AN AN AN | +|08/01/2022 03:20:56| |This is your mind on panzers| +|08/01/2022 03:20:56| |AN AN AN AN AN AN| +|08/01/2022 03:20:56| |ANG ANG ANG| +|08/01/2022 03:20:56| |Actual best song| +|08/01/2022 03:20:57| |AHN AHN| +|08/01/2022 03:20:57| |BY ME| +|08/01/2022 03:20:57| |A A ANG ANG| +|08/01/2022 03:20:58| |A A AN AN AN ANG ANG| +|08/01/2022 03:21:00| |Ahn~ Ahn~ Ahn~| +|08/01/2022 03:21:01| |ANG ANG ANG| +|08/01/2022 03:21:01| SEXY +|08/01/2022 03:21:02| mindBROKEN +|08/01/2022 03:21:04| |ahn ahn ahn~| +|08/01/2022 03:21:04| |shake it!| +|08/01/2022 03:21:04| |FLAT ANZU| +|08/01/2022 03:21:05| AUTISM +|08/01/2022 03:21:07| |OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS OARIA=DORKS | +|08/01/2022 03:21:08| |>dad walks in| +|08/01/2022 03:21:09| |MIND CRUSH| +|08/01/2022 03:21:10| | ! BANGER ALERT ! ! BANGER ALERT !| +|08/01/2022 03:21:10| |YOUR BRAIN ON ANG ANG| +|08/01/2022 03:21:11| |ANG ANG| +|08/01/2022 03:21:12| DISOWNED +|08/01/2022 03:21:12| |MOYASHIT KOGASHITE YURAYURA| +|08/01/2022 03:21:12| |Miho is a cute dork| +|08/01/2022 03:21:12| |"i want to go home maho"| +|08/01/2022 03:21:14| |SHAMEFUR DISPRAY| +|08/01/2022 03:21:14| lmao +|08/01/2022 03:21:15| |AN AN AN!| +|08/01/2022 03:21:16| autism +|08/01/2022 03:21:16| |ANG ANG ANG| +|08/01/2022 03:21:17| |yOU BETTER BE DANCING ANON| +|08/01/2022 03:21:17| |based Yukari| +|08/01/2022 03:21:17| |Ooari guppies dateability: 0| +|08/01/2022 03:21:19| ASORE +|08/01/2022 03:21:19| wtf +|08/01/2022 03:21:19| |>da fuck is my daughter doing?| +|08/01/2022 03:21:20| AUTISM +|08/01/2022 03:21:21| AYOISHO +|08/01/2022 03:21:21| |>I'll never find a husband for my daughter now| +|08/01/2022 03:21:22| |the pride of the nishizumi school!| +|08/01/2022 03:21:22| |they are no longer fit for marriage| +|08/01/2022 03:21:23| Powerful +|08/01/2022 03:21:23| |what is shiho's problem?| +|08/01/2022 03:21:25| |Need the outfits, now it's not sexy| +|08/01/2022 03:21:26| |hana's mom is dissappoint| +|08/01/2022 03:21:27| |>are ya winnin' son?| +|08/01/2022 03:21:28| |WE STILL HAVEN'T THE PROPER FACILITIES TO TAKE YOU ALL PRISONER| +|08/01/2022 03:21:29| | ANG ANG| +|08/01/2022 03:21:29| |do they know this shit is on tv?| +|08/01/2022 03:21:30| HARASSHO +|08/01/2022 03:21:30| |NO WAY FAG| +|08/01/2022 03:21:31| |ANG ANG ANG| +|08/01/2022 03:21:32| |>are ya winin oarai?| +|08/01/2022 03:21:33| |Shiho so disappointed| +|08/01/2022 03:21:33| |I KNEEL| +|08/01/2022 03:21:35| ToT +|08/01/2022 03:21:35| |>I was right to disown my daughter| +|08/01/2022 03:21:36| DEAAAAAAAAAAAAAATTTTTTTTTHHHHHHHHHHHHHHH +|08/01/2022 03:21:39| |You interrupted our war dance for this?| +|08/01/2022 03:21:39| |I will not dance but I will drink more| +|08/01/2022 03:21:39| |FUCK OFF| +|08/01/2022 03:21:40| |katyusha sleep| +|08/01/2022 03:21:41| |HOW EMBARASSING| +|08/01/2022 03:21:41| Cuteyusha! +|08/01/2022 03:21:43| THIGHS +|08/01/2022 03:21:43| |Imagine molesting Katyushas butt as she sleeps| +|08/01/2022 03:21:48| |OORAIBROS... WE WILL NOT KNEEL...| +|08/01/2022 03:21:49| CUTEYUSHA +|08/01/2022 03:21:49| |KATYUSHA-SAMA, I DON'T KNEEL| +|08/01/2022 03:21:50| ROHIRRIM +|08/01/2022 03:21:51| |NOT KNEELING TODAY| +|08/01/2022 03:21:57| |what is everyone drinking? I got a bourbon here| +|08/01/2022 03:21:58| |WE SHALL FIGHT IN THE STREETS AND IN THE HILLS| +|08/01/2022 03:21:59| |why is the commander a child| +|08/01/2022 03:21:59| |WILL NOT KNEEL| +|08/01/2022 03:22:00| |>Interrupting their dance for a offer off surrender| +|08/01/2022 03:22:00| >127cm +|08/01/2022 03:22:01| |its clobberin time| +|08/01/2022 03:22:01| WATER +|08/01/2022 03:22:01| |AAAAA ANZU| +|08/01/2022 03:22:02| |DO GET THAT| +|08/01/2022 03:22:02| |WE SHALL NEVER SURRENDER| +|08/01/2022 03:22:04| |PRAVDABROS WE'LL BE FINE| +|08/01/2022 03:22:05| |ain't no nigger| +|08/01/2022 03:22:06| |Motorboating Kayusha| +|08/01/2022 03:22:07| |HERE WE GO| +|08/01/2022 03:22:08| |Never kneel it shorties| +|08/01/2022 03:22:08| |trump card trump card| +|08/01/2022 03:22:09| |COMMANDER NISHIZUMI FIGHTS ALONE| +|08/01/2022 03:22:10| |cool, clear water| +|08/01/2022 03:22:11| |Who else put everything on Pravda?| +|08/01/2022 03:22:14| |Could you not set up a fucking death flag you flat foodie midget you| +|08/01/2022 03:22:15| |NOT ALONE| +|08/01/2022 03:22:16| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 03:22:16| >surrendering +|08/01/2022 03:22:17| |PANZER VOR!| +|08/01/2022 03:22:18| |PANZER VOR| +|08/01/2022 03:22:18| |Pravdabros we won| +|08/01/2022 03:22:19| |JELLY JIGGLE TIME!| +|08/01/2022 03:22:19| |pravdabros we can't lose| +|08/01/2022 03:22:21| |gween tea| +|08/01/2022 03:22:21| |PANZER VORE| +|08/01/2022 03:22:21| |What does it mean, /a/?| +|08/01/2022 03:22:21| |pravda has this in the bag| +|08/01/2022 03:22:21| |PRAVDA BROS WE WILL CRUSH THE OOARAI CAPITALIST PIGS| +|08/01/2022 03:22:22| |PANZER VOR| +|08/01/2022 03:22:23| |PANZER VOR| +|08/01/2022 03:22:23| |PANTSU FOR| +|08/01/2022 03:22:24| PERFLAT +|08/01/2022 03:22:24| |I put my house on Pravada| +|08/01/2022 03:22:25| SNOW!! +|08/01/2022 03:22:29| SNOW +|08/01/2022 03:22:29| |KV-2 my beloved| +|08/01/2022 03:22:30| |PANZER VOR| +|08/01/2022 03:22:30| |JELLY JIGGLE| +|08/01/2022 03:22:32| |PANZER VOR| +|08/01/2022 03:22:32| |PANTSU VOR| +|08/01/2022 03:22:33| |PANZER VORE| +|08/01/2022 03:22:34| |JELLY JIGGLE| +|08/01/2022 03:22:36| |Panzer Vore| +|08/01/2022 03:22:37| |PRAVDABROS LOOKS LIKE WE GONNA HAVE TO STOMP THEM| +|08/01/2022 03:22:38| |wtf does panzer vor mean?| +|08/01/2022 03:22:38| |ARISE ARISE TANKERS OF OARAI| +|08/01/2022 03:22:39| |Pravda will win, they can't beat superior Stalinium| +|08/01/2022 03:22:39| |my left ballsack on Pravda to win| +|08/01/2022 03:22:45| |what does panzer vor mean?| +|08/01/2022 03:22:46| |pantsu vore| +|08/01/2022 03:22:48| katyusha-dono..... +|08/01/2022 03:22:50| >subtlke +|08/01/2022 03:22:51| ToT +|08/01/2022 03:22:54| |Panzer vor means Panzer vor| +|08/01/2022 03:22:54| |ALL ON KATYUSHA-SAMA| +|08/01/2022 03:22:55| |panzer vor means senshado| +|08/01/2022 03:22:55| |COMMIES SHALL REIGN SUPREME| +|08/01/2022 03:22:56| |pantsu whore| +|08/01/2022 03:22:57| |I want to lift Katyusha then yeet her into the snow| +|08/01/2022 03:22:58| |Katysha 4D plan: I sleep| +|08/01/2022 03:22:58| |I want them to Panzer For me| +|08/01/2022 03:23:01| |katyusha can sandwich me| +|08/01/2022 03:23:03| |is it nonstop buffering for anyone else right now too? | +|08/01/2022 03:23:09| no +|08/01/2022 03:23:09| |За женщин!| +|08/01/2022 03:23:09| |buffering for me too| +|08/01/2022 03:23:10| |works on my machine| +|08/01/2022 03:23:11| |works on my machine :)| +|08/01/2022 03:23:11| |It's your end| +|08/01/2022 03:23:11| Refresh +|08/01/2022 03:23:12| |if buffer refresh| +|08/01/2022 03:23:12| TOTSUGEKIIIIIIIIIIII +|08/01/2022 03:23:13| nyet +|08/01/2022 03:23:13| |working here| +|08/01/2022 03:23:13| refresh +|08/01/2022 03:23:13| |Running fine for me| +|08/01/2022 03:23:13| |No buffers, it's your end| +|08/01/2022 03:23:15| TOTSUGEKI +|08/01/2022 03:23:15| TOTSUGEKI +|08/01/2022 03:23:16| |no buffering rn for me| +|08/01/2022 03:23:18| TOTSUGEKI +|08/01/2022 03:23:18| TOTSUGEKI +|08/01/2022 03:23:18| poorfag +|08/01/2022 03:23:19| TOTSUGEKI +|08/01/2022 03:23:19| nyoom +|08/01/2022 03:23:19| |MUH DEEP BATT;E| +|08/01/2022 03:23:19| totsugeki +|08/01/2022 03:23:20| |Couldn't they have just shot a hole in the back?| +|08/01/2022 03:23:20| |>I can already see their face with tears streaming :sob:| +|08/01/2022 03:23:20| totsugeki +|08/01/2022 03:23:21| TOTSUGEKI +|08/01/2022 03:23:21| totsugeki? +|08/01/2022 03:23:21| |WORKS FINE FOR ME| +|08/01/2022 03:23:23| |Just get a better GPU nerd| +|08/01/2022 03:23:24| TOTSUGEKI +|08/01/2022 03:23:24| |no bufferign here chief| +|08/01/2022 03:23:25| TOTSUGEKI +|08/01/2022 03:23:26| TOTSUGEKI +|08/01/2022 03:23:27| TOTSUGEKI +|08/01/2022 03:23:30| 突撃 +|08/01/2022 03:23:30| |cute gremlin| +|08/01/2022 03:23:30| TOTSUGEK +|08/01/2022 03:23:31| |I AM THE GREATEST| +|08/01/2022 03:23:33| |works on my machine™| +|08/01/2022 03:23:33| |sasuga watashi ^_^^| +|08/01/2022 03:23:34| |just download more bitrate| +|08/01/2022 03:23:34| |突撃 突撃 突撃 突撃| +|08/01/2022 03:23:34| VGTG +|08/01/2022 03:23:36| TOTSUGEKI +|08/01/2022 03:23:43| CUTE +|08/01/2022 03:23:46| T-O-T-S-U-G-E-K-I +|08/01/2022 03:23:47| |I AM THE GREATEST! OH NO| +|08/01/2022 03:23:47| |IT'S TIME!| +|08/01/2022 03:23:48| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 03:23:49| CTU +|08/01/2022 03:23:50| |SHE IS THE GREATEST| +|08/01/2022 03:23:52| >momo +|08/01/2022 03:23:52| ANZU +|08/01/2022 03:23:53| |KATYUSHA IS A GENIUS| +|08/01/2022 03:23:53| |KAY IS BAE| +|08/01/2022 03:23:55| |I want anzu to sit on my lap ToT| +|08/01/2022 03:23:55| |cute actually competent gunner| +|08/01/2022 03:23:57| |ANZU ALWAYS WINS| +|08/01/2022 03:23:57| |OH NO| +|08/01/2022 03:24:03| |Anzu butt| +|08/01/2022 03:24:04| |LET'S GO ANZU| +|08/01/2022 03:24:04| HAXXXXXX +|08/01/2022 03:24:05| |KOMBAT | +|08/01/2022 03:24:06| DZZZZZZZZZZZZZZ +|08/01/2022 03:24:07| |anzu always wins baby| +|08/01/2022 03:24:08| |I want to cuddle Erika| +|08/01/2022 03:24:08| |BEST OORAI go!| +|08/01/2022 03:24:09| |why is Momo so useless?| +|08/01/2022 03:24:11| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 03:24:12| |>capable but does nothing most of the time| +|08/01/2022 03:24:14| |nice yuzu| +|08/01/2022 03:24:19| |>this is my ultimate job| +|08/01/2022 03:24:20| |Anzu best gunner!| +|08/01/2022 03:24:22| |ANZU SUPERIORITY| +|08/01/2022 03:24:25| |p-pravdabros... this isnt going according to plan...| +|08/01/2022 03:24:31| |TRUST THE PLAN| +|08/01/2022 03:24:32| |>tfw chat dead 4 me| +|08/01/2022 03:24:32| |4 ENEMIES POSSIBLY MORE| +|08/01/2022 03:24:33| |I STILL BELIEVE IN PRAVDA| +|08/01/2022 03:24:37| |stalin ka| +|08/01/2022 03:24:39| |>anzu gimped herself the entire time by letting momo aim| +|08/01/2022 03:24:40| |How are they beating our glorius Stalinium?| +|08/01/2022 03:24:41| |>ignoring yuzu's driving skills| +|08/01/2022 03:24:42| |2 more minutes| +|08/01/2022 03:24:49| |Trust in Katyusha's genius, tovarish| +|08/01/2022 03:24:49| |I'll be the white on your rice ;)| +|08/01/2022 03:24:52| |penetrating stalinium| +|08/01/2022 03:24:52| |A FUCKING STALIN| +|08/01/2022 03:24:53| |ZA NAMI ROSSIYA MOSKVA Y ARBAT| +|08/01/2022 03:24:54| |its been 4+ hours of watching lesbians fight each other in tanks how the fuck did my life end up like this| +|08/01/2022 03:24:55| |WHITES OF THEIR EYES ON RICE BOIS| +|08/01/2022 03:24:57| |sex with stalin| +|08/01/2022 03:25:00| |I believe in the commies. No way they're losing this| +|08/01/2022 03:25:02| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 03:25:02| STALINIUM +|08/01/2022 03:25:03| |time to buy pravdacoin| +|08/01/2022 03:25:04| |"we need to save our school but I wont gun even though Im good at it"| +|08/01/2022 03:25:05| |A V CHISTOM POLE SISTEMA GRAD| +|08/01/2022 03:25:05| |PENETRATE ANZU| +|08/01/2022 03:25:06| penetration +|08/01/2022 03:25:11| |Since when did the chat become a gay porn platform| +|08/01/2022 03:25:11| |I wanmt to penetrate Stalin| +|08/01/2022 03:25:12| |PENETRATE ANZU AT POINT BLANK RANGE| +|08/01/2022 03:25:12| |COMMUNISM WILL WIN| +|08/01/2022 03:25:13| |you can leave any time faggot| +|08/01/2022 03:25:14| |ZA NAMI PUTIN I STALINGRAD| +|08/01/2022 03:25:20| |KOMBAT BACHANYA BACHANYA KOMBAT| +|08/01/2022 03:25:22| |Anzu OP| +|08/01/2022 03:25:23| |stalin naizuri| +|08/01/2022 03:25:23| ANZU!!!!!!!! +|08/01/2022 03:25:24| |LET'S GO ANZU!!!!| +|08/01/2022 03:25:29| |ANZU SUPERIORITY| +|08/01/2022 03:25:33| |ANZU too OP pls nerf| +|08/01/2022 03:25:33| |SE NO!| +|08/01/2022 03:25:33| |ANZU KILLING SPREE| +|08/01/2022 03:25:33| |Mo Icho| +|08/01/2022 03:25:34| |LETS GO ANZU!!!| +|08/01/2022 03:25:36| |seems too good| +|08/01/2022 03:25:36| |DAVAI VTOROY RAZ ZA SPETSNAZ| +|08/01/2022 03:25:36| |MOBILITY CRITICAL| +|08/01/2022 03:25:36| |MOU ICCHO| +|08/01/2022 03:25:36| |ANZU BTFOS COMMIES| +|08/01/2022 03:25:39| |remember carbon coating| +|08/01/2022 03:25:40| |AAANNNNNNNNZZZZZUUUUUUU UUUUUUUUUUOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 03:25:41| |ANZU UOOOOOOOOOOOOOH| +|08/01/2022 03:25:41| |will momo hit something?| +|08/01/2022 03:25:41| F +|08/01/2022 03:25:41| |anzu OP| +|08/01/2022 03:25:41| |who can stop this flattie?| +|08/01/2022 03:25:42| |my wife anzu taking names| +|08/01/2022 03:25:43| |Absolute God mode| +|08/01/2022 03:25:44| GODLIKE +|08/01/2022 03:25:44| F +|08/01/2022 03:25:45| owned +|08/01/2022 03:25:46| >skedaddle +|08/01/2022 03:25:47| |SE NO| +|08/01/2022 03:25:47| REKT +|08/01/2022 03:25:47| F +|08/01/2022 03:25:48| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:25:49| F +|08/01/2022 03:25:49| NOOOOOOOOOOOOOO +|08/01/2022 03:25:50| |Too OP she needs to be nerfed by being lazy| +|08/01/2022 03:25:50| DEAD +|08/01/2022 03:25:50| F +|08/01/2022 03:25:50| F +|08/01/2022 03:25:50| |WICKED SICK| +|08/01/2022 03:25:51| F +|08/01/2022 03:25:51| |FUCK COMMIES| +|08/01/2022 03:25:51| |MURDER SPREE| +|08/01/2022 03:25:51| |why does momo exist?| +|08/01/2022 03:25:52| NOOOOOOOOOOOOO +|08/01/2022 03:25:52| YARETA +|08/01/2022 03:25:53| |carbon coated physics| +|08/01/2022 03:25:53| GG +|08/01/2022 03:25:53| |Nonna will breach them| +|08/01/2022 03:25:54| WASTED +|08/01/2022 03:25:54| F +|08/01/2022 03:25:56| F +|08/01/2022 03:25:56| |bone>carbon coating| +|08/01/2022 03:25:56| heh +|08/01/2022 03:25:56| F +|08/01/2022 03:25:57| SKEDADDLE +|08/01/2022 03:25:57| |Riggity rekt| +|08/01/2022 03:25:57| |>ITS OVER| +|08/01/2022 03:25:58| F +|08/01/2022 03:25:58| URRAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:26:00| skedaddle +|08/01/2022 03:26:00| F +|08/01/2022 03:26:01| RIP +|08/01/2022 03:26:01| F +|08/01/2022 03:26:02| F +|08/01/2022 03:26:02| RIP +|08/01/2022 03:26:02| |commanding and shooting at the same time is a complete pain in the ass| +|08/01/2022 03:26:04| |YUZU ASS| +|08/01/2022 03:26:08| |YUZU THICC| +|08/01/2022 03:26:10| |YUZU FAT ASS| +|08/01/2022 03:26:11| |REST IN PEPPERONI| +|08/01/2022 03:26:12| |Momo exist to be my cocksleeve as I penetrate Erika| +|08/01/2022 03:26:12| f +|08/01/2022 03:26:14| |go men| +|08/01/2022 03:26:15| DUCE +|08/01/2022 03:26:16| |momo exists to give us big titties| +|08/01/2022 03:26:17| BUTTE +|08/01/2022 03:26:29| |you think?| +|08/01/2022 03:26:29| |bros i thought t34 was the best in the world what the fuck happen.| +|08/01/2022 03:26:30| |What's an up dog then| +|08/01/2022 03:26:30| |PEKO UOH| +|08/01/2022 03:26:31| |>zero casualties| +|08/01/2022 03:26:31| |JUNK WAGONS| +|08/01/2022 03:26:31| |but yuzu is the tits of turtle team| +|08/01/2022 03:26:37| |amlost empty bleachers| +|08/01/2022 03:26:40| ?????????????????????????????????????????????????????????????? +|08/01/2022 03:26:41| |" "| +|08/01/2022 03:26:43| |Pravda Bro Has Stalin Abandon | +|08/01/2022 03:26:45| T34bros... +|08/01/2022 03:26:51| djb +|08/01/2022 03:26:53| |Orange Pekoe's sweet piss| +|08/01/2022 03:26:54| |Are we okay, /a/?| +|08/01/2022 03:26:54| F35bros... +|08/01/2022 03:26:55| |T34 will not lose, have faith| +|08/01/2022 03:26:56| DAIJOUBU +|08/01/2022 03:26:57| R34bros... +|08/01/2022 03:26:58| |Peko, have you heard this saying? "We got too cocky pravdabros!!!" It is said when fools believe themselves infallible.| +|08/01/2022 03:26:59| DIAJOOBU +|08/01/2022 03:27:01| |would you freeze your ass off for oorai?| +|08/01/2022 03:27:04| |WE"RE OKAY| +|08/01/2022 03:27:06| YES +|08/01/2022 03:27:07| |Not sure if I'm drunk or if the chat is getting more incoherent| +|08/01/2022 03:27:10| |<< HEY KID, WE LOOK GREAT! >>| +|08/01/2022 03:27:11| |it's over bros we're going to Vorkuta| +|08/01/2022 03:27:12| |Gloriuous stalinium will not loose| +|08/01/2022 03:27:15| oisemfoijwefa4,lrtq4.galh,k5oyma +|08/01/2022 03:27:16| DAIJOUBU +|08/01/2022 03:27:16| |ooarai should have surrendered| +|08/01/2022 03:27:19| |LET'S GO PRAVDA| +|08/01/2022 03:27:21| ooakdnjbrhg +|08/01/2022 03:27:22| |For me, it's the Beute Stalin| +|08/01/2022 03:27:22| |MIHO GET DOWN| +|08/01/2022 03:27:23| |It's just you anon| +|08/01/2022 03:27:24| TAMAYA! +|08/01/2022 03:27:26| |damn I need to take a shit| +|08/01/2022 03:27:27| |jobs to an early wahah2 tank| +|08/01/2022 03:27:27| |>Miho takes one to the head| +|08/01/2022 03:27:27| |i would stick my face on hetzer's hull in the middle of winter for ooarai| +|08/01/2022 03:27:28| |<>| +|08/01/2022 03:27:28| |ooarai have no chance| +|08/01/2022 03:27:34| help +|08/01/2022 03:27:35| |PRAVDA. WILL. WIN.| +|08/01/2022 03:27:38| |early on, the chat was lewd| +|08/01/2022 03:27:41| |That's a lot of tracers| +|08/01/2022 03:27:43| |now it's bizarre| +|08/01/2022 03:27:44| |maho pee| +|08/01/2022 03:27:44| |kino aa tracers| +|08/01/2022 03:27:48| |the game was rigged from the start| +|08/01/2022 03:27:49| |за правду| +|08/01/2022 03:27:49| |for me, it's the Pzkpfw 747(r)| +|08/01/2022 03:27:50| |Machine guns gomBRRRRRT| +|08/01/2022 03:27:50| |Is this touhou?| +|08/01/2022 03:27:52| |eventually it will get scary| +|08/01/2022 03:27:52| |i lost my shit when that guy got shot in fury| +|08/01/2022 03:27:52| |I will bet my dacha on Pravda| +|08/01/2022 03:27:56| |ZA RODINU| +|08/01/2022 03:27:59| |FOR MOTHER RUSSIA| +|08/01/2022 03:28:00| |Can we make it lewd AND bizarre| +|08/01/2022 03:28:05| |girls und panzer is the ace combat of anime| +|08/01/2022 03:28:06| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:28:07| tankhoumojo +|08/01/2022 03:28:10| |RUSSIAN 2HU| +|08/01/2022 03:28:16| |KRASNAYA ARMIYA VSEH SILNEY| +|08/01/2022 03:28:16| |mako pee is the dark souls of garupan| +|08/01/2022 03:28:18| |STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG | +|08/01/2022 03:28:20| |wich 2hu would u fug| +|08/01/2022 03:28:21| |Isn't Kotobuki the Ace Combat of anime?| +|08/01/2022 03:28:22| |Is this Iron Hummingbirds?| +|08/01/2022 03:28:24| |chad stand| +|08/01/2022 03:28:24| |katyusha swearing| +|08/01/2022 03:28:24| |Time for a cup of I JOE YOU JOE| +|08/01/2022 03:28:25| |she said a cuss word omg| +|08/01/2022 03:28:25| |a rat's ass| +|08/01/2022 03:28:25| УРАААААААААААААА +|08/01/2022 03:28:26| |that stance| +|08/01/2022 03:28:26| STAND +|08/01/2022 03:28:28| Punt +|08/01/2022 03:28:29| CHAD +|08/01/2022 03:28:30| |hold on to your pravdacoins bros| +|08/01/2022 03:28:31| |SIT THE FUCK DOWN MIHO| +|08/01/2022 03:28:32| |mako stance| +|08/01/2022 03:28:32| |Reimu > all other 2hus| +|08/01/2022 03:28:32| |CHAD STANE| +|08/01/2022 03:28:33| Cheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeen +|08/01/2022 03:28:33| based +|08/01/2022 03:28:33| |AUTOBOTS ROLL OUT!| +|08/01/2022 03:28:35| |perfect tuck and roll| +|08/01/2022 03:28:35| |katusya idiot| +|08/01/2022 03:28:37| WEW +|08/01/2022 03:28:38| OST +|08/01/2022 03:28:38| OST +|08/01/2022 03:28:40| |yukari later died of hypothermia| +|08/01/2022 03:28:40| 10/10 +|08/01/2022 03:28:41| ASS +|08/01/2022 03:28:41| woah +|08/01/2022 03:28:41| |power stance| +|08/01/2022 03:28:42| |lunge mine time| +|08/01/2022 03:28:42| KATYUSHA +|08/01/2022 03:28:42| |SOYUZ NERUSHIMI.....| +|08/01/2022 03:28:42| |did a flip| +|08/01/2022 03:28:43| |roll spammer| +|08/01/2022 03:28:44| KITAAAAAAAAA +|08/01/2022 03:28:45| KITAAAAAAAA +|08/01/2022 03:28:46| |! Banger alert ! Banger alert !| +|08/01/2022 03:28:46| MUSIC +|08/01/2022 03:28:46| NONNA +|08/01/2022 03:28:47| |Power stance| +|08/01/2022 03:28:48| |this sucks play koreblinki tetris| +|08/01/2022 03:28:50| |I want to segs duce in all her 7 holes| +|08/01/2022 03:28:50| kitaaaaaaaa +|08/01/2022 03:28:50| |suicide bomber fluff| +|08/01/2022 03:28:50| |KITA <3| +|08/01/2022 03:28:51| |RESPUBLIK SVABODI| +|08/01/2022 03:28:54| キターーーーーーー +|08/01/2022 03:28:54| HOOOOOH +|08/01/2022 03:28:55| |DO A BARREL ROLL| +|08/01/2022 03:28:55| |senshadou is souls like?| +|08/01/2022 03:28:56| |Carbon-coated fluff| +|08/01/2022 03:28:57| UUUUUUURRRRRRAAAAAAAAAAAA +|08/01/2022 03:28:58| |Is this legal?| +|08/01/2022 03:29:01| VYKHODILA +|08/01/2022 03:29:01| ! +|08/01/2022 03:29:01| KITAA +|08/01/2022 03:29:03| KITA +|08/01/2022 03:29:04| |enemy spotted| +|08/01/2022 03:29:05| |METAL GEAR SOLID FLOOF| +|08/01/2022 03:29:05| |What does the proletariat think of this?| +|08/01/2022 03:29:07| |Did she just jumpo out of a driving tank?| +|08/01/2022 03:29:08| >tetris +|08/01/2022 03:29:09| |kino alert| +|08/01/2022 03:29:09| ZOOOOOOM +|08/01/2022 03:29:10| |Katyusha will make it legal| +|08/01/2022 03:29:15| asd +|08/01/2022 03:29:19| |if only lenin could see us now| +|08/01/2022 03:29:24| SPEEEEEEDDD +|08/01/2022 03:29:24| |Time for a real banger| +|08/01/2022 03:29:29| КИНО +|08/01/2022 03:29:29| |panicu panicu| +|08/01/2022 03:29:32| |BANGER ALERT!| +|08/01/2022 03:29:34| |lenin would be proud| +|08/01/2022 03:29:36| |oh fug| +|08/01/2022 03:29:37| |fanta ne| +|08/01/2022 03:29:38| |Boiled bunnies| +|08/01/2022 03:29:41| |Shut up Nodoka]| +|08/01/2022 03:29:42| CUNNNNNNNNNNNY +|08/01/2022 03:29:43| TOTSUGEKI +|08/01/2022 03:29:44| AZUSA +|08/01/2022 03:29:46| |bunnies get shot in the ass....| +|08/01/2022 03:29:47| |dont look fine| +|08/01/2022 03:29:47| |lol no injuries | +|08/01/2022 03:29:48| |$140 glasses| +|08/01/2022 03:29:50| |MY GLASSES| +|08/01/2022 03:29:52| |Vnimanie Kino incoming| +|08/01/2022 03:29:55| |F for the megames we lost| +|08/01/2022 03:29:56| |Not the glasses!| +|08/01/2022 03:29:58| NYET +|08/01/2022 03:29:58| |insured glasses| +|08/01/2022 03:29:59| NYET +|08/01/2022 03:29:59| |Why didn't she have carbon coated glasses?| +|08/01/2022 03:30:01| |GLASSES NOOO| +|08/01/2022 03:30:02| Nyet! +|08/01/2022 03:30:02| NYET +|08/01/2022 03:30:03| F +|08/01/2022 03:30:04| |NOT THE MEGANE| +|08/01/2022 03:30:04| |Megane no more| +|08/01/2022 03:30:05| |Translator's note: nyet means no| +|08/01/2022 03:30:06| |she said russian????| +|08/01/2022 03:30:07| | NYET| +|08/01/2022 03:30:08| ("No!") +|08/01/2022 03:30:10| |NJET MOLOTOFF| +|08/01/2022 03:30:10| F +|08/01/2022 03:30:11| |thanks tl| +|08/01/2022 03:30:11| |Glaases are actually exspensive F| +|08/01/2022 03:30:14| |They havent spent enough time to be carbon coated yet| +|08/01/2022 03:30:14| |Nyet desu| +|08/01/2022 03:30:16| buffer? +|08/01/2022 03:30:19| NYET +|08/01/2022 03:30:21| |What's the appeal of Katyuha again?| +|08/01/2022 03:30:23| NYET +|08/01/2022 03:30:25| |nah it's smooth here| +|08/01/2022 03:30:25| enter +|08/01/2022 03:30:26| IMAGINE +|08/01/2022 03:30:27| |just dodge the tank shells| +|08/01/2022 03:30:30| |BIG NINA CANNON| +|08/01/2022 03:30:31| |balans has entered the chat| +|08/01/2022 03:30:33| UTE +|08/01/2022 03:30:36| |NINA NOOOOOO| +|08/01/2022 03:30:38| |she can struggle but not excape| +|08/01/2022 03:30:38| |Shoot the treads you fucks| +|08/01/2022 03:30:40| KEBITSU +|08/01/2022 03:30:40| blyacht +|08/01/2022 03:30:43| |p-pravdabros... | +|08/01/2022 03:30:45| |the only appeal of katyusha is she comes with nonna| +|08/01/2022 03:30:46| |>appeal of Katyusha // Body and personality duh| +|08/01/2022 03:30:49| |21k let's FUCK it!| +|08/01/2022 03:30:50| |GO DUCKS| +|08/01/2022 03:30:53| |Katushas existence is to be my cocksleeve as I fuck Erika again| +|08/01/2022 03:30:54| |rip in piece nina| +|08/01/2022 03:30:56| |CAM ON DUCKS| +|08/01/2022 03:30:59| rekt +|08/01/2022 03:31:03| |time to BURY!| +|08/01/2022 03:31:05| |THE STUGS ARE MY WIVES| +|08/01/2022 03:31:06| |it's over| +|08/01/2022 03:31:10| |>when the shot isn't guided by Stalin's spirit| +|08/01/2022 03:31:10| |There is still hope Pravda bros!| +|08/01/2022 03:31:12| |$20,000 ON KATYUSHA. PLEASE PLEASE PLEASE| +|08/01/2022 03:31:13| |LETS GO PRAVDA| +|08/01/2022 03:31:15| |The 28-3 of Senshado incoming...| +|08/01/2022 03:31:17| |BASED VOLLEYBALL SQUAD| +|08/01/2022 03:31:22| GUTS +|08/01/2022 03:31:22| |GuP DF6: Return of the Volleyball Club| +|08/01/2022 03:31:24| |SORE SORE SORE| +|08/01/2022 03:31:27| |SORE DA| +|08/01/2022 03:31:29| |Atlanta Falconbros...| +|08/01/2022 03:31:30| GUTS +|08/01/2022 03:31:31| |Volley butts will win the day| +|08/01/2022 03:31:31| |IF PRAVDA LOSES SEND ME TO VORKUTA| +|08/01/2022 03:31:34| |v o l l e y s q u i d| +|08/01/2022 03:31:35| GATSO +|08/01/2022 03:31:36| |we need a pravda championship repeat| +|08/01/2022 03:31:37| GUTS +|08/01/2022 03:31:38| Totsugecxkmy!!!!!!!!!! +|08/01/2022 03:31:39| GUTS +|08/01/2022 03:31:42| |OorariBros im losing hope| +|08/01/2022 03:31:43| nyaa +|08/01/2022 03:31:47| |SEND OOARAI TO GULAG KATYUSHA!!!!| +|08/01/2022 03:31:48| jesus +|08/01/2022 03:31:48| |Guts dont stand a chance against soviet steel!| +|08/01/2022 03:31:49| |MILITARY REPORTS OORAI HANGED AT GITMO, COMPATRIOTS IN CONTROL -Q| +|08/01/2022 03:31:51| |wait why is guts the flag tank| +|08/01/2022 03:31:51| rigged +|08/01/2022 03:31:51| |Where are the nerds?| +|08/01/2022 03:31:53| |Guys I think Oarai is gonna lose.| +|08/01/2022 03:31:54| |its over ooaraibros| +|08/01/2022 03:32:00| |I bet my left ballsacks on Katyusha winning| +|08/01/2022 03:32:00| |sex gulag| +|08/01/2022 03:32:00| |Stalins spitrit will; prevai;l| +|08/01/2022 03:32:01| GUTS +|08/01/2022 03:32:05| |df6 will be hobos vs erika where erika cries while youko snipes them off one by one| +|08/01/2022 03:32:06| |pew pew| +|08/01/2022 03:32:13| |TRUST OARAI'S PLAN| +|08/01/2022 03:32:16| F +|08/01/2022 03:32:16| |I think we're getting the firing squad| +|08/01/2022 03:32:17| |I JUST FEEL MY DREAM| +|08/01/2022 03:32:19| |nonna never misses a shot| +|08/01/2022 03:32:22| |That was for Ivan Denisovich, you commie fucks| +|08/01/2022 03:32:22| |NOOOOOOOO NOT DORIKO| +|08/01/2022 03:32:23| STUGGED +|08/01/2022 03:32:25| rigged +|08/01/2022 03:32:26| |STOP THE COUNT. PRAVDA WON| +|08/01/2022 03:32:26| |commie bros......| +|08/01/2022 03:32:26| STUGGED +|08/01/2022 03:32:28| SHOURI! +|08/01/2022 03:32:28| |Pravdabros... its over...| +|08/01/2022 03:32:28| |4 girls 1 stug| +|08/01/2022 03:32:29| |get stugged| +|08/01/2022 03:32:29| boom +|08/01/2022 03:32:30| who? +|08/01/2022 03:32:30| bro... +|08/01/2022 03:32:30| |OHNONONO COMMIEBROS?| +|08/01/2022 03:32:31| Stuglife +|08/01/2022 03:32:31| |STUG LIFE| +|08/01/2022 03:32:32| NUKED +|08/01/2022 03:32:33| ! +|08/01/2022 03:32:33| |STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUG STUGGGGGGGGGGGG| +|08/01/2022 03:32:35| |NICE SPLICE IDIOT| +|08/01/2022 03:32:35| RIP +|08/01/2022 03:32:35| STUGGED +|08/01/2022 03:32:36| |STOP THE MATCH! RIGGED| +|08/01/2022 03:32:36| |BASED HIPPOS| +|08/01/2022 03:32:37| Nyeeeeeeeeeeeet +|08/01/2022 03:32:37| |STUG STUG STUG| +|08/01/2022 03:32:38| STUGCHADS +|08/01/2022 03:32:40| |STUG LIFE| +|08/01/2022 03:32:40| |(Hit +20)| +|08/01/2022 03:32:40| huh? +|08/01/2022 03:32:41| |STUG STUG STUG| +|08/01/2022 03:32:41| "seamless" +|08/01/2022 03:32:41| |pravada bros????| +|08/01/2022 03:32:41| STUGGED +|08/01/2022 03:32:41| |ENTER ENTER MISSION| +|08/01/2022 03:32:42| |Ohnononono Pravda bros| +|08/01/2022 03:32:42| |DEJA VU| +|08/01/2022 03:32:42| |STUG LIFE| +|08/01/2022 03:32:43| |STUG LIFE| +|08/01/2022 03:32:44| SEAM +|08/01/2022 03:32:45| |haha fuck you oaraifags.... wait| +|08/01/2022 03:32:45| |Hanna 360 no sciope those pravda fucks| +|08/01/2022 03:32:46| DAB +|08/01/2022 03:32:48| StuGCHADS +|08/01/2022 03:32:48| |STUG LIFE STUG LIFE STUG LIFE STUG LIFE STUG LIFE STUG LIFE | +|08/01/2022 03:32:50| |OOARAICHADS.... IM KNEELING| +|08/01/2022 03:32:50| |so what was the discussion like for the week between that cut?| +|08/01/2022 03:32:50| |stalin bros....| +|08/01/2022 03:32:51| STUGG"D! +|08/01/2022 03:32:51| |miho payed the refs wtf!!!| +|08/01/2022 03:32:52| |DUCKS LIVE| +|08/01/2022 03:32:52| |FUCK YEAH| +|08/01/2022 03:32:54| FILLER +|08/01/2022 03:32:55| |SEAMS DOKO| +|08/01/2022 03:32:55| |seamless purely seamless| +|08/01/2022 03:32:56| |COMMIES BTFO| +|08/01/2022 03:32:56| |;______________________; so this is how it ends| +|08/01/2022 03:32:56| |russos get rekt| +|08/01/2022 03:32:58| |why didnt the flag pop?| +|08/01/2022 03:32:58| |HOW HOW HOW HOW HOW| +|08/01/2022 03:32:59| |Katyusha chads... what went wrong?| +|08/01/2022 03:32:59| |COMMIES BTFO| +|08/01/2022 03:33:01| |russia lost again| +|08/01/2022 03:33:01| |THEY DID IT| +|08/01/2022 03:33:01| WIN +|08/01/2022 03:33:01| |LETS FUCKING GOOOOOOOOOOOOOOOO| +|08/01/2022 03:33:01| |WE WIN AGAIN BROS| +|08/01/2022 03:33:01| SEAMFULJ +|08/01/2022 03:33:02| |Nice one pravdabros now face the wall| +|08/01/2022 03:33:02| |I LOVE IT WHEN A PLAN COMES TOGETHER| +|08/01/2022 03:33:03| |DEMOCRACY WINS AGAIN BABY| +|08/01/2022 03:33:04| |wtf I spent my life's savings on pravdacoin| +|08/01/2022 03:33:04| ALIVE +|08/01/2022 03:33:04| ez +|08/01/2022 03:33:05| speechless +|08/01/2022 03:33:06| BANZAI +|08/01/2022 03:33:06| ALIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIVE +|08/01/2022 03:33:06| BANZAI +|08/01/2022 03:33:07| |WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOARI| +|08/01/2022 03:33:07| rigged +|08/01/2022 03:33:07| |CUMMIES LOST| +|08/01/2022 03:33:07| :_: +|08/01/2022 03:33:07| SUGOI +|08/01/2022 03:33:07| |All my savings ;________;| +|08/01/2022 03:33:08| |BETTER DEAD THAN READ| +|08/01/2022 03:33:08| |My money noooooooooo| +|08/01/2022 03:33:08| |STOP THE COUNT| +|08/01/2022 03:33:10| RIGGED +|08/01/2022 03:33:10| |FAK U COMMIE TRASH| +|08/01/2022 03:33:10| |STUGGGGG :DDDDDDDDDD| +|08/01/2022 03:33:11| BANZAI +|08/01/2022 03:33:11| bs +|08/01/2022 03:33:11| |katyusha is gonna start crying| +|08/01/2022 03:33:11| |BASED BASED BASED BASED| +|08/01/2022 03:33:12| BANZAI +|08/01/2022 03:33:12| |nippon panzer folded 1000 times| +|08/01/2022 03:33:12| ;-; +|08/01/2022 03:33:12| BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 03:33:12| BANZAI +|08/01/2022 03:33:12| |COMMIES REKT| +|08/01/2022 03:33:12| LMAO +|08/01/2022 03:33:13| |UOOOOOOOOOH ;_;| +|08/01/2022 03:33:13| |damn female kid| +|08/01/2022 03:33:15| ;_; +|08/01/2022 03:33:15| ;_; +|08/01/2022 03:33:16| |EAT SHIT| +|08/01/2022 03:33:16| |Oorai on;ly wins because of plot armour| +|08/01/2022 03:33:16| |LENIN A SHIT| +|08/01/2022 03:33:16| |BETTER DEAD THAN RED| +|08/01/2022 03:33:17| banzi +|08/01/2022 03:33:17| ASSPULL +|08/01/2022 03:33:17| :___: +|08/01/2022 03:33:17| ;_; +|08/01/2022 03:33:18| Stuglife +|08/01/2022 03:33:18| |YEAH CRY LOLI SLUT| +|08/01/2022 03:33:18| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 03:33:18| |pravdabros we got too cocky| +|08/01/2022 03:33:18| |CRY MORE| +|08/01/2022 03:33:18| |poor kid| +|08/01/2022 03:33:18| |delicious commie tears| +|08/01/2022 03:33:19| |HOW CAN THIS HAPPEN. THIS WAS OUR YEAR| +|08/01/2022 03:33:19| |PravdaBros they can't keep getting away with this| +|08/01/2022 03:33:21| |EVERYONE LAUGHT AT THIS FUCKING LOSER| +|08/01/2022 03:33:21| |the only good commie is a dead commie| +|08/01/2022 03:33:22| |NOOOOOOO MY DACHA IN SOCHI IS GONE| +|08/01/2022 03:33:22| |Get fucked midget, jk ily| +|08/01/2022 03:33:23| YATTA +|08/01/2022 03:33:23| |CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM CAPITALISM| +|08/01/2022 03:33:23| BANZAI +|08/01/2022 03:33:24| |rip kat| +|08/01/2022 03:33:25| |spanking punishment time| +|08/01/2022 03:33:26| |MR LOLICHOV TEAR DOWN THAT WALL| +|08/01/2022 03:33:26| ;________: +|08/01/2022 03:33:26| |u mad?| +|08/01/2022 03:33:26| |FUCK COMMIES| +|08/01/2022 03:33:27| |FUCCK COMMIES| +|08/01/2022 03:33:28| |START CRYING MIDGET| +|08/01/2022 03:33:28| DUMBTYUSHA +|08/01/2022 03:33:30| |Reminder: inTHAT doujin Ktyusha is shot by Nonna| +|08/01/2022 03:33:31| BANZIA +|08/01/2022 03:33:31| ;_; +|08/01/2022 03:33:32| leninbros... +|08/01/2022 03:33:32| BANZAI +|08/01/2022 03:33:34| ;_; +|08/01/2022 03:33:34| |LOLI BTFO| +|08/01/2022 03:33:34| |MAXIMUM CAPITALISM!| +|08/01/2022 03:33:36| |CAPITALISM WINS AGAIN| +|08/01/2022 03:33:37| |Pap Stalin is going to be pissed| +|08/01/2022 03:33:37| ;______: +|08/01/2022 03:33:38| |CAPITALISM VICTORIOUS AGAIN| +|08/01/2022 03:33:38| midge +|08/01/2022 03:33:41| |6' VS 5'11| +|08/01/2022 03:33:41| |>its over...| +|08/01/2022 03:33:42| DOZO +|08/01/2022 03:33:42| |COMMUNISM BTFO AMERICA WINS| +|08/01/2022 03:33:44| |miniskirts in the snow is Japan's gift to the world| +|08/01/2022 03:33:45| |I actually liked THAT doujin pretty unironically| +|08/01/2022 03:33:45| |GOMMUNISM BTFO| +|08/01/2022 03:33:45| b-baka +|08/01/2022 03:33:45| |Katyusha will suck on nonna's tits tonight for consolation| +|08/01/2022 03:33:46| |Pravda tsars...| +|08/01/2022 03:33:47| |that's what stalin thought too| +|08/01/2022 03:33:48| |TONY KAKU| +|08/01/2022 03:33:48| V +|08/01/2022 03:33:51| |>when Lenin can't see us now| +|08/01/2022 03:33:53| |cute gremlim| +|08/01/2022 03:33:53| |cute dere!| +|08/01/2022 03:33:53| |The march of capitalism cannot be opposed!| +|08/01/2022 03:33:53| |SHE HATES IT| +|08/01/2022 03:33:54| F +|08/01/2022 03:33:56| |SEETHE KATYUSHA| +|08/01/2022 03:33:57| |now that the snow has settled, what went wrong?| +|08/01/2022 03:33:57| >over +|08/01/2022 03:33:57| |IT'S JUST LIKE THE BERLIN WALL| +|08/01/2022 03:33:58| |>ooarai >capitalism| +|08/01/2022 03:33:59| |so many would have losts| +|08/01/2022 03:34:00| |How did Stalin loose?| +|08/01/2022 03:34:00| |Uh which one's Raskolnikov?| +|08/01/2022 03:34:00| |Who's that Tony Kaku?| +|08/01/2022 03:34:01| |Uma Noona| +|08/01/2022 03:34:02| |A CUTE!| +|08/01/2022 03:34:03| |cope and seethe| +|08/01/2022 03:34:05| |god i wish communism was defeated in my country ;-;| +|08/01/2022 03:34:06| |LOLI ONAHOLE| +|08/01/2022 03:34:07| |Tony Kaku| +|08/01/2022 03:34:09| o7 +|08/01/2022 03:34:10| KUYASHII +|08/01/2022 03:34:10| |>ooarai >capitalism| +|08/01/2022 03:34:11| |why is she so small? malnourishment?| +|08/01/2022 03:34:12| |lol midget| +|08/01/2022 03:34:13| |my wife maho| +|08/01/2022 03:34:14| |SHIHO REKT| +|08/01/2022 03:34:14| o/ +|08/01/2022 03:34:14| |>Tony's cock| +|08/01/2022 03:34:15| |10 second personality change| +|08/01/2022 03:34:15| |cute kid| +|08/01/2022 03:34:16| |my maho wife| +|08/01/2022 03:34:16| |EAT SHIT SHIHO| +|08/01/2022 03:34:17| |SKILLZ MOM| +|08/01/2022 03:34:17| prolebros... +|08/01/2022 03:34:18| |PURE SKILL| +|08/01/2022 03:34:19| |PAT HER INSTEAED| +|08/01/2022 03:34:19| |same level| +|08/01/2022 03:34:20| |100% skill| +|08/01/2022 03:34:20| MAHOOOOOO +|08/01/2022 03:34:21| |>127 cm| +|08/01/2022 03:34:21| |OUT FUCKING SKILLED| +|08/01/2022 03:34:24| |SHIHO COPING| +|08/01/2022 03:34:24| IMAGINE +|08/01/2022 03:34:25| |All this talk about Tony Kaku but nobody remembers best girl Beth Suni| +|08/01/2022 03:34:26| |Kaytusha-san, TEAR DOWN THIS WALL| +|08/01/2022 03:34:27| hai +|08/01/2022 03:34:29| |triumph of skill| +|08/01/2022 03:34:29| JADOU +|08/01/2022 03:34:29| HERESY +|08/01/2022 03:34:31| |Maho is such a good girl| +|08/01/2022 03:34:31| HERESY +|08/01/2022 03:34:31| |BURN THE WITCH| +|08/01/2022 03:34:32| cope +|08/01/2022 03:34:32| HERESY! +|08/01/2022 03:34:34| |fuck you mommy| +|08/01/2022 03:34:34| HERESY +|08/01/2022 03:34:34| |Loli bully not so tough after being beaten| +|08/01/2022 03:34:35| |nishizumi style actually just sucks| +|08/01/2022 03:34:36| |giver her some credit shiho| +|08/01/2022 03:34:37| |>Teamwork is heresy'| +|08/01/2022 03:34:37| |SHIHO STOP BEING A BITCH| +|08/01/2022 03:34:37| |dumb mom| +|08/01/2022 03:34:37| |>Beth SUni| +|08/01/2022 03:34:38| |Oh shut up Shiho| +|08/01/2022 03:34:38| |"skill" lol| +|08/01/2022 03:34:41| |I WANT TO BE MIHO AND MAHO'S STEP DADDY| +|08/01/2022 03:34:42| >heresy +|08/01/2022 03:34:44| |I can't believe we won OorariBros| +|08/01/2022 03:34:46| BLASPHEMER!! +|08/01/2022 03:34:47| |HARD WORK NEVER WINS| +|08/01/2022 03:34:47| HERESY +|08/01/2022 03:34:48| |WE ARE THE CHAMPIONS!| +|08/01/2022 03:34:48| |I forgot how fucked up shiho is| +|08/01/2022 03:34:52| |What the fuck is a Tiny kaku?| +|08/01/2022 03:35:00| teega +|08/01/2022 03:35:01| |pour one out for Pravda, comrades| +|08/01/2022 03:35:01| |black forest ham| +|08/01/2022 03:35:02| >tiny +|08/01/2022 03:35:02| |yeah shiho is a legit pyscho| +|08/01/2022 03:35:02| |Little brother of tony kaku| +|08/01/2022 03:35:02| |MAHO TIME| +|08/01/2022 03:35:03| |Shiho is truly the worst mom in anime| +|08/01/2022 03:35:08| |Don't be like Shiho. Be more like Yukari-mom| +|08/01/2022 03:35:09| |tomo kaku's brother| +|08/01/2022 03:35:11| |kino match| +|08/01/2022 03:35:13| |Haters prayin for my downfall...| +|08/01/2022 03:35:13| |20 tanks!!| +|08/01/2022 03:35:18| teeegar +|08/01/2022 03:35:21| |discount tank dealership| +|08/01/2022 03:35:22| |its over ooarai bros. we cant possibly win against kmm| +|08/01/2022 03:35:28| |Fuck I'm so sleepy what the fuckkk| +|08/01/2022 03:35:31| Hoshino! +|08/01/2022 03:35:32| |They actually BOUGHT the Hetzer kit??| +|08/01/2022 03:35:33| |TIGER PANTHER JAGDPANTHER| +|08/01/2022 03:35:35| |Just race the other schools for pinks| +|08/01/2022 03:35:35| |I can't believe it's fucking over bros| +|08/01/2022 03:35:35| |man ima sleep| +|08/01/2022 03:35:36| |ooraibros we got too cocky| +|08/01/2022 03:35:37| |its only 8:30| +|08/01/2022 03:35:38| |it's only 2:30am| +|08/01/2022 03:35:39| 3:33 +|08/01/2022 03:35:44| Sucky +|08/01/2022 03:35:44| >hybrid +|08/01/2022 03:35:45| |BEST CLUB INCOMING| +|08/01/2022 03:35:46| |YEAR OF TIGER| +|08/01/2022 03:35:46| |>Yeah it's actually a Porsche Tiger, sorry...| +|08/01/2022 03:35:47| |4:33 here| +|08/01/2022 03:35:47| |BEST CLUB WITH THE BEST TANK| +|08/01/2022 03:35:48| |it's only 1333h| +|08/01/2022 03:35:51| |JOB INCOMING| +|08/01/2022 03:35:51| |23:33 here| +|08/01/2022 03:35:51| LEOPON +|08/01/2022 03:35:52| |RARE RARE RARE RARE| +|08/01/2022 03:35:52| porenter +|08/01/2022 03:35:53| |who else here /6:30/| +|08/01/2022 03:35:54| |it's only 2:33| +|08/01/2022 03:35:54| |moshi moshi| +|08/01/2022 03:35:54| >Porsche +|08/01/2022 03:35:55| |NICE "TANK" IDIOTS LMFAO GERMAN ENGINEERING FTL| +|08/01/2022 03:35:55| |PORSCHE TIGER!| +|08/01/2022 03:35:55| |LEOPON BEST TEAM| +|08/01/2022 03:35:57| |It's 4:33 faggots| +|08/01/2022 03:35:57| |How will they even dream of defeating Superiour German Engineering| +|08/01/2022 03:36:00| Fire +|08/01/2022 03:36:01| |>ya we got that big single 2JZ in there | +|08/01/2022 03:36:01| PORSCHE +|08/01/2022 03:36:01| |PORSHE BROS...| +|08/01/2022 03:36:01| |9:30 est bros| +|08/01/2022 03:36:02| |\/o/'s year baby| +|08/01/2022 03:36:03| buffering +|08/01/2022 03:36:04| |SUPERIOR GERMAN ENGINEERING| +|08/01/2022 03:36:05| |0333 gang king of hours| +|08/01/2022 03:36:05| |LE TIGRE? BLUE FRERRARI? IT'S THE SAME LOOK | +|08/01/2022 03:36:07| |COOL TANK| +|08/01/2022 03:36:07| germanbros... +|08/01/2022 03:36:08| >Porsche +|08/01/2022 03:36:08| HOSHINO +|08/01/2022 03:36:08| |the piece of shit that is the porsche tiger| +|08/01/2022 03:36:08| Sxarp.............. +|08/01/2022 03:36:09| |oh nono| +|08/01/2022 03:36:09| |Porche Tiger-quality stream...| +|08/01/2022 03:36:09| |GERMAN ENGINEERING STRONK| +|08/01/2022 03:36:09| |BEST TANK OPERATED BY BEST CLUB| +|08/01/2022 03:36:09| |FLEXIN IN A PORSCHE, GET GOOD POORFAGS| +|08/01/2022 03:36:10| |buff team| +|08/01/2022 03:36:11| |the Tiger really does sound sexy in this show| +|08/01/2022 03:36:11| propaganda +|08/01/2022 03:36:11| (笑) +|08/01/2022 03:36:12| 😂😂😂 +|08/01/2022 03:36:12| |EST BROS ARE BEST BROS| +|08/01/2022 03:36:12| |PORSCHE TIGER| +|08/01/2022 03:36:13| RARE +|08/01/2022 03:36:13| VTOL +|08/01/2022 03:36:14| krauts... +|08/01/2022 03:36:16| |BREAKING SO HARD ITS BUFFERING| +|08/01/2022 03:36:16| |PM bros wya| +|08/01/2022 03:36:16| |based porsche overengineering| +|08/01/2022 03:36:16| wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww +|08/01/2022 03:36:17| |Sxarp lost home....| +|08/01/2022 03:36:18| |Porsche bros| +|08/01/2022 03:36:20| |LEOPON BEST TEAM| +|08/01/2022 03:36:20| |BURN BABY BURN| +|08/01/2022 03:36:23| |But Tiger P looks cute so it's okay isn't it| +|08/01/2022 03:36:23| 草 +|08/01/2022 03:36:24| |2034 here still good to go the rest of the night| +|08/01/2022 03:36:25| |just add more armour| +|08/01/2022 03:36:26| |FUN IS YOUR ENEMY| +|08/01/2022 03:36:27| |>german engineering best in the world| +|08/01/2022 03:36:27| |>When you can walk faster than the fucking tank| +|08/01/2022 03:36:27| RERA +|08/01/2022 03:36:28| |oh great,it's dead| +|08/01/2022 03:36:29| |DEUTSCH QUALITÄT| +|08/01/2022 03:36:29| |PRECISION GERMAN ENGINEERING| +|08/01/2022 03:36:29| |So this is the power of electric drive| +|08/01/2022 03:36:29| |FUN IS THE ENEMY| +|08/01/2022 03:36:30| |ahh i missed the porsche skit| +|08/01/2022 03:36:31| SXAAAAARP +|08/01/2022 03:36:32| |TANNED TOMBOY WAIFU CLUB| +|08/01/2022 03:36:33| |STOP HAVING FUN| +|08/01/2022 03:36:34| |PM chads| +|08/01/2022 03:36:35| |NO FUN ALLOWED | +|08/01/2022 03:36:35| |>german engineering| +|08/01/2022 03:36:36| |>loved by all| +|08/01/2022 03:36:37| |DON'T HAVE FUN| +|08/01/2022 03:36:37| |sodomy for sodoko| +|08/01/2022 03:36:39| AZUSAAA!!! +|08/01/2022 03:36:40| Slander +|08/01/2022 03:36:41| |NO FUUUUUUN| +|08/01/2022 03:36:42| |you know, i'm starting to get tired of ooaraiwinslol, hope it doesn't continue too long| +|08/01/2022 03:36:44| |the carfags manning a porsche tank is absolute SOVL| +|08/01/2022 03:36:46| |STOP HAVING FUN| +|08/01/2022 03:36:48| |>unused tanks| +|08/01/2022 03:36:50| |FUN IS AN ENEMY OF THE STATE| +|08/01/2022 03:36:51| |space case Saki| +|08/01/2022 03:36:52| |Stay indoors| +|08/01/2022 03:36:53| |TANKS COULD BE ANYWHERE| +|08/01/2022 03:36:54| |02:33am here, will go on no matter| +|08/01/2022 03:36:55| |love sodoko (sexually)| +|08/01/2022 03:36:55| |damn female kid| +|08/01/2022 03:36:56| |Tanned girlls best grills| +|08/01/2022 03:36:58| |>thigh high socks -- good lord| +|08/01/2022 03:36:58| |No fun| +|08/01/2022 03:36:58| |FUN IS THE ENEMY OF WINNING| +|08/01/2022 03:36:58| >HETSHIT +|08/01/2022 03:36:58| |HETZER HYPE| +|08/01/2022 03:36:59| |SAKI THE GAWD| +|08/01/2022 03:36:59| |PLEASE CHECK YOUR CLOSETS FOR SPARE TANKS| +|08/01/2022 03:37:00| |lovely name| +|08/01/2022 03:37:01| |>upgrade kit| +|08/01/2022 03:37:03| RE:CZECHNOLOGY +|08/01/2022 03:37:03| |>no local tank recycling girsl| +|08/01/2022 03:37:03| |i saw it| +|08/01/2022 03:37:03| |ALMOST 4AM| +|08/01/2022 03:37:04| |So now that the dust has settled; how much Yuuki fucks her boyfriend| +|08/01/2022 03:37:04| |Anzu is flat| +|08/01/2022 03:37:05| |hetzers gonna hetz| +|08/01/2022 03:37:06| sodomyko +|08/01/2022 03:37:08| www +|08/01/2022 03:37:09| |13:35 in best australia| +|08/01/2022 03:37:09| |yuuki-chan is SLUT| +|08/01/2022 03:37:11| flat +|08/01/2022 03:37:11| ganers +|08/01/2022 03:37:12| |g-gamer girl...| +|08/01/2022 03:37:12| |Who's this smelly girl?| +|08/01/2022 03:37:12| |WHAT IS THIS NERD DOING HERE| +|08/01/2022 03:37:12| ENTER +|08/01/2022 03:37:13| HIDOI +|08/01/2022 03:37:14| HETZER +|08/01/2022 03:37:14| |Imagine just walking around town picking up lonely tanks| +|08/01/2022 03:37:16| |Tanned tomboys 4ever| +|08/01/2022 03:37:16| ここに日本語に入れられます!!!!! +|08/01/2022 03:37:16| |LITERALLY ME| +|08/01/2022 03:37:17| /ourguys/ +|08/01/2022 03:37:17| |it's cute| +|08/01/2022 03:37:17| |GAMER GIRL| +|08/01/2022 03:37:18| >austrailia +|08/01/2022 03:37:19| |sex with anzu| +|08/01/2022 03:37:20| neets +|08/01/2022 03:37:21| NEEERD! +|08/01/2022 03:37:21| |End extrovert privilege!| +|08/01/2022 03:37:22| CUTE +|08/01/2022 03:37:22| GAMERS +|08/01/2022 03:37:23| |HETZERS GONNA HETZ| +|08/01/2022 03:37:23| |Smelly gamer girl...| +|08/01/2022 03:37:24| |SOMEONE GET THE NERD OUT OF THE SCENE GOD| +|08/01/2022 03:37:24| |GET HUGE| +|08/01/2022 03:37:24| |get your boostie aussie| +|08/01/2022 03:37:25| |go home gamer girl| +|08/01/2022 03:37:25| GAMER +|08/01/2022 03:37:25| |ANZU LOVE| +|08/01/2022 03:37:27| |imagine what anteater team's tank smells like| +|08/01/2022 03:37:27| /ourgamers/ +|08/01/2022 03:37:28| |GIV CREEPY KOT GF| +|08/01/2022 03:37:30| THATTTT +|08/01/2022 03:37:30| >that +|08/01/2022 03:37:30| |I'm going to fuck Anzu| +|08/01/2022 03:37:31| |GAMERS RISE UP| +|08/01/2022 03:37:31| |dibs on the nekonyaa| +|08/01/2022 03:37:33| NERRRRRRRRRRRRRRRRDDDDDDDDDDD +|08/01/2022 03:37:34| |GO HOME GAMER GIRL| +|08/01/2022 03:37:35| |gamer sight| +|08/01/2022 03:37:36| |WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GIRL WORST GI| +|08/01/2022 03:37:38| |Nice ts bb ;)| +|08/01/2022 03:37:39| |>Its just there| +|08/01/2022 03:37:40| |Australia isn't real anon| +|08/01/2022 03:37:40| |NEW TANK| +|08/01/2022 03:37:44| |THAT one| +|08/01/2022 03:37:44| |gamers out| +|08/01/2022 03:37:45| 日本語ってなに +|08/01/2022 03:37:45| |Gamer girl most swole girl| +|08/01/2022 03:37:46| |anzu is my side piece| +|08/01/2022 03:37:47| |THAT one| +|08/01/2022 03:37:48| |>They targeted gamers...| +|08/01/2022 03:37:50| HOSHINO! +|08/01/2022 03:37:50| |CUTE GREEN EYED WIFE| +|08/01/2022 03:37:50| |Nekonya will rip you in half| +|08/01/2022 03:37:50| |>ywn purchase an AFV from webuyanycar.com| +|08/01/2022 03:37:50| YAAAAAAAASSSS +|08/01/2022 03:37:51| |BASED TEAM| +|08/01/2022 03:37:53| THAT? +|08/01/2022 03:37:55| DORIFUTO +|08/01/2022 03:37:55| |SEXY TAN| +|08/01/2022 03:37:55| |DORIFTO DORIFTO| +|08/01/2022 03:37:56| |ireland should have joined ww2 | +|08/01/2022 03:37:57| dorifto +|08/01/2022 03:37:57| |hybrid powaaaaaa| +|08/01/2022 03:37:57| |chink shit | +|08/01/2022 03:37:58| |HOSHINO MY WIFE| +|08/01/2022 03:37:59| DORIFTO +|08/01/2022 03:37:59| > +|08/01/2022 03:37:59| HOSHINO +|08/01/2022 03:38:00| |WORTH IT| +|08/01/2022 03:38:01| TAN +|08/01/2022 03:38:01| DORIFTO +|08/01/2022 03:38:02| |b l a c k| +|08/01/2022 03:38:03| |NIGHT OF FIRE| +|08/01/2022 03:38:03| |soo many tomboys.....| +|08/01/2022 03:38:03| |OOARAI DORIFUTO| +|08/01/2022 03:38:04| |fixing tanks by washing them| +|08/01/2022 03:38:04| LEWD +|08/01/2022 03:38:05| |Initial T| +|08/01/2022 03:38:06| dorfito +|08/01/2022 03:38:07| :o +|08/01/2022 03:38:08| |>Australia >land hooks| +|08/01/2022 03:38:08| |DEJAU VU| +|08/01/2022 03:38:09| |>can't drift in a tank| +|08/01/2022 03:38:09| 日本語は日本語ですよー +|08/01/2022 03:38:10| |LEOPON BEST| +|08/01/2022 03:38:10| DORIFUTO +|08/01/2022 03:38:10| DORIFTO +|08/01/2022 03:38:11| |>electric transmission| +|08/01/2022 03:38:12| TSUCHIYA +|08/01/2022 03:38:14| |brown girls.....| +|08/01/2022 03:38:15| DURIFTOOO +|08/01/2022 03:38:16| DORIFTO +|08/01/2022 03:38:16| DORIFTO +|08/01/2022 03:38:17| Nerds +|08/01/2022 03:38:17| |>online friends| +|08/01/2022 03:38:17| CUTE +|08/01/2022 03:38:19| nerds +|08/01/2022 03:38:20| |GAMER GIRLS| +|08/01/2022 03:38:20| >GAYMERS +|08/01/2022 03:38:20| >/v/ermin +|08/01/2022 03:38:21| |WoT BROS WHO HERE| +|08/01/2022 03:38:21| KAKKOIII +|08/01/2022 03:38:22| based! +|08/01/2022 03:38:23| |The fuck is that on her eye | +|08/01/2022 03:38:24| |World of SPG| +|08/01/2022 03:38:25| |KANSEI DORIFTO| +|08/01/2022 03:38:25| |>ONLINE TANK GAME| +|08/01/2022 03:38:25| |cute momoga!| +|08/01/2022 03:38:26| piyotan! +|08/01/2022 03:38:26| |there is no good tank game yet| +|08/01/2022 03:38:27| |THE FIT GAYMERS| +|08/01/2022 03:38:27| |Tanned goddess| +|08/01/2022 03:38:27| |O-ooarai Dorifto?!?| +|08/01/2022 03:38:28| |based rounded gamer shoulders| +|08/01/2022 03:38:28| hehehe +|08/01/2022 03:38:30| |THEY ARE US BROS| +|08/01/2022 03:38:30| |A momo obviously| +|08/01/2022 03:38:31| |I WISH WE PLAYED TOGETHER| +|08/01/2022 03:38:32| |war thunder > wot| +|08/01/2022 03:38:33| |big titty gamer girl piyotan| +|08/01/2022 03:38:34| |dark flame master| +|08/01/2022 03:38:35| >sauce +|08/01/2022 03:38:35| /fitv/ +|08/01/2022 03:38:36| |CUTE DORKS| +|08/01/2022 03:38:36| |AWESOME SAUCE| +|08/01/2022 03:38:37| >WoT +|08/01/2022 03:38:38| |WOW THIS IS JUST LIKE MY BIDEO GAMES| +|08/01/2022 03:38:38| CZECHNOLOGY +|08/01/2022 03:38:39| |it's an /a/ team| +|08/01/2022 03:38:39| ORAI +|08/01/2022 03:38:40| |>these fucking nerds| +|08/01/2022 03:38:40| |riaru hajimemashite| +|08/01/2022 03:38:41| |OO RAI| +|08/01/2022 03:38:42| |wait they didnt know each other before? lol i forgot that| +|08/01/2022 03:38:45| |Can't wait till they get stronk af in S2| +|08/01/2022 03:38:46| |How often do the gamer girls bathe?| +|08/01/2022 03:38:46| |do they ERP?| +|08/01/2022 03:38:47| |BEST TANK COMING THROUGH | +|08/01/2022 03:38:47| |let's play some tanks /a/| +|08/01/2022 03:38:49| |FUCKIN RIAJUS| +|08/01/2022 03:38:50| |/fitv/ will win Das 4| +|08/01/2022 03:38:50| |MAJI YABAI| +|08/01/2022 03:38:51| |awesome sauce| +|08/01/2022 03:38:54| |cute gamers| +|08/01/2022 03:38:54| aah +|08/01/2022 03:38:55| OORAI +|08/01/2022 03:38:55| |>mark IV| +|08/01/2022 03:38:56| |Anzu eating again| +|08/01/2022 03:39:00| |Czechnology is so powerful, can't wait for them to unfuck Colt| +|08/01/2022 03:39:00| |MAKO BEST| +|08/01/2022 03:39:02| |imagine the smell of taking all three at once| +|08/01/2022 03:39:02| fweeeeeeeeeeeeeeeeeeeeeeeeee +|08/01/2022 03:39:02| |>not Sprocket| +|08/01/2022 03:39:02| |Of course they ERP, that's why they were so embarrassed| +|08/01/2022 03:39:02| |what tank would the /a/ team use?| +|08/01/2022 03:39:03| yukari..................... +|08/01/2022 03:39:05| |BEST GIRL| +|08/01/2022 03:39:05| |>Panzer IV | +|08/01/2022 03:39:06| |Best granny| +|08/01/2022 03:39:12| |marko four| +|08/01/2022 03:39:14| |Thanks granny| +|08/01/2022 03:39:15| |/a/ would use the bob semple| +|08/01/2022 03:39:16| |BASED GRANNY| +|08/01/2022 03:39:18| |OBA SAMA NEVER DIES| +|08/01/2022 03:39:21| |GuP has best montages| +|08/01/2022 03:39:21| |FLOOF SPOTTED| +|08/01/2022 03:39:21| |miho-san, i just shit myself| +|08/01/2022 03:39:22| |/a/ team would use the shittiest tank available| +|08/01/2022 03:39:22| |DATE ZITH HANQ| +|08/01/2022 03:39:25| |True best girl and grandmother in law| +|08/01/2022 03:39:35| |based bob semple anon| +|08/01/2022 03:39:36| |20 lloyd tankettes| +|08/01/2022 03:39:37| |My wife loves flowers| +|08/01/2022 03:39:37| |What is the shittiest tank? inb4 muh bob semple| +|08/01/2022 03:39:38| |/a/'s tank would STINK| +|08/01/2022 03:39:42| Steaky +|08/01/2022 03:39:42| |take it or leave it| +|08/01/2022 03:39:43| STEAKY +|08/01/2022 03:39:43| |FLOWER DATE| +|08/01/2022 03:39:44| |only 4 from /a/ would be allowed| +|08/01/2022 03:39:47| |Is threw gonna be a break between the series and movies?| +|08/01/2022 03:39:48| |the anzio tankettes| +|08/01/2022 03:39:51| STEAKY +|08/01/2022 03:39:55| DRINK +|08/01/2022 03:39:55| Tomk +|08/01/2022 03:39:55| |Back it up a minute, I had to pee| +|08/01/2022 03:39:56| STICKY +|08/01/2022 03:39:57| |I want to sniff Hana's flower. | +|08/01/2022 03:39:57| STEAKY +|08/01/2022 03:39:57| |FLOWER TANK| +|08/01/2022 03:39:59| STEAKY +|08/01/2022 03:39:59| SUGOI +|08/01/2022 03:39:59| |wheres the 4chan cup but tanks instead of soccer| +|08/01/2022 03:40:00| |>a fucking tank| +|08/01/2022 03:40:01| |Is this a recreation of Patton's last drive?| +|08/01/2022 03:40:01| |it's alright at best| +|08/01/2022 03:40:02| Kirei +|08/01/2022 03:40:03| |If we're the /a/team, I call Hannibal's role| +|08/01/2022 03:40:10| SUGOI +|08/01/2022 03:40:10| |TL Note: Hana means flower| +|08/01/2022 03:40:12| |>like you| +|08/01/2022 03:40:13| |This would be a sweet scene if I gave a fuck about Hana| +|08/01/2022 03:40:13| |>not crewing an armored John Deere tractor| +|08/01/2022 03:40:14| |Hourly reminder to hydrate| +|08/01/2022 03:40:14| |cute flowers but what about tht tanks?| +|08/01/2022 03:40:15| EXPLOSION +|08/01/2022 03:40:17| |thanks tl| +|08/01/2022 03:40:18| |thanks tl| +|08/01/2022 03:40:18| |is every single girl autistic?| +|08/01/2022 03:40:19| |Thanks TL | +|08/01/2022 03:40:20| |guys can you pause the stream i have to go to my dad's funeral| +|08/01/2022 03:40:21| |TL Note: Hana means Hana| +|08/01/2022 03:40:22| |THERE'S THE TANK| +|08/01/2022 03:40:24| |TL NOTE: hana means "nose"| +|08/01/2022 03:40:24| HAAAAAAAAAAAAAAAAAGGGGGGGGGGGGGG +|08/01/2022 03:40:27| |4chan senshado when?| +|08/01/2022 03:40:28| |thanks tl| +|08/01/2022 03:40:29| womanlet +|08/01/2022 03:40:30| Autism +|08/01/2022 03:40:31| |femcel mom| +|08/01/2022 03:40:32| |>90% of the /a/ team has to shield the tank with their bodies| +|08/01/2022 03:40:32| |tanks tl | +|08/01/2022 03:40:35| |hana means aaaaaaaaaaaaaaaaaaaaaaa| +|08/01/2022 03:40:36| |big hana| +|08/01/2022 03:40:40| k +|08/01/2022 03:40:42| |BROKE NEW GROUNDDDDDDD| +|08/01/2022 03:40:43| |yuri redemption arc| +|08/01/2022 03:40:43| :D +|08/01/2022 03:40:43| |hana means hana| +|08/01/2022 03:40:45| mommy +|08/01/2022 03:40:46| CUTE +|08/01/2022 03:40:46| |SEX with HANA'S MOM| +|08/01/2022 03:40:47| |thanks mom| +|08/01/2022 03:40:47| |No longer disowned| +|08/01/2022 03:40:48| |FLOWER ARRANGEMENT REVOLUTION!| +|08/01/2022 03:40:48| |It'd be fun to run some 4chan gup tournament| +|08/01/2022 03:40:49| RECONCILIATION +|08/01/2022 03:40:49| |CHARACTER DEVELOPMENT| +|08/01/2022 03:40:49| |my cute wife hana is so cute| +|08/01/2022 03:40:50| |SHE BROKE NEW GROUUUUUND| +|08/01/2022 03:40:51| |hana tarkoittaa hanaa| +|08/01/2022 03:40:51| |wow this is like le character development| +|08/01/2022 03:40:57| |you bring great shame to your famiry| +|08/01/2022 03:40:58| |SHE BROKE NEW GROUND| +|08/01/2022 03:40:59| butt +|08/01/2022 03:41:00| volleybutt +|08/01/2022 03:41:00| |TAEKO BUTT| +|08/01/2022 03:41:01| |thighs and BUTTE| +|08/01/2022 03:41:01| |everyone on /a/ is a little girl so itl fi| +|08/01/2022 03:41:02| |hana : DDDDDDDDDDDDDDDDDDDD| +|08/01/2022 03:41:02| |>no longer disowned >reowned| +|08/01/2022 03:41:06| |we did it Hanabros| +|08/01/2022 03:41:06| volleybutts +|08/01/2022 03:41:06| |90% of the /a/ team would be too fat to enter the tank| +|08/01/2022 03:41:09| |Tanks and flowers aren't so different after all... | +|08/01/2022 03:41:09| |that's not an apology| +|08/01/2022 03:41:12| |Just did a rancid booze fart lads| +|08/01/2022 03:41:12| |PANZER VOR!| +|08/01/2022 03:41:17| |So nobody thought about a tankpot before?| +|08/01/2022 03:41:22| |90% of /a/ is shaped like a p-47| +|08/01/2022 03:41:23| |thanks for the info anon| +|08/01/2022 03:41:25| |Miho has an announcement:| +|08/01/2022 03:41:28| |/sp/ has shitty football simulation tournaments so why don't we have tanks| +|08/01/2022 03:41:30| |will miho have a friendly conversation with shiho before the series ends?| +|08/01/2022 03:41:30| |>his body isn't a (fat-)tank on its own| +|08/01/2022 03:41:32| TRAITOR +|08/01/2022 03:41:32| |lads, post scriptum has real senshado mod| +|08/01/2022 03:41:34| |EVERYONE I HAVE AN ANNOUNCEMENT| +|08/01/2022 03:41:35| butte +|08/01/2022 03:41:35| |THAT's A HUGE BITCH | +|08/01/2022 03:41:35| |nigger forest | +|08/01/2022 03:41:36| |nice butt| +|08/01/2022 03:41:38| |Change your pants, boozefarter.| +|08/01/2022 03:41:41| |the /a/ team would succumb to social anxiety the moment they made contact with the enemy| +|08/01/2022 03:41:45| AH +|08/01/2022 03:41:46| |Hana is avant-garde florist confirmed| +|08/01/2022 03:41:47| |I'm making an online gup ttrpg but it's gnna suck ass| +|08/01/2022 03:41:50| |miho used [Inspiring speech]| +|08/01/2022 03:41:53| :) +|08/01/2022 03:41:54| MAHO +|08/01/2022 03:41:56| |Boozefarter shidd himself| +|08/01/2022 03:41:58| |MAHO'S MAHOS| +|08/01/2022 03:41:58| |those are some big cats| +|08/01/2022 03:41:59| |o/ SIEG HEIL| +|08/01/2022 03:41:59| |HOLY SHIT I FUCKING LOVE MAHO| +|08/01/2022 03:41:59| BOOZEFAHTAR +|08/01/2022 03:42:00| ): +|08/01/2022 03:42:01| saild +|08/01/2022 03:42:03| |Hey guys, Miho here, thanks for watching my anime lol| +|08/01/2022 03:42:04| |the enemy doesnt have enough bullets to stop the /a/ mass| +|08/01/2022 03:42:05| o/ +|08/01/2022 03:42:05| |I'd turn on the /a/ tank if I were inside it| +|08/01/2022 03:42:06| |Mark, honey, this is your mom. can you go upstairs and clean your room | +|08/01/2022 03:42:07| o/ +|08/01/2022 03:42:09| |miho has low CHA| +|08/01/2022 03:42:10| salud +|08/01/2022 03:42:10| |Maho's autism readings are off the charts!| +|08/01/2022 03:42:12| |poopenfarten regards: panzerwaffe| +|08/01/2022 03:42:15| |youre welcome miporin| +|08/01/2022 03:42:15| TAEKO +|08/01/2022 03:42:18| |I'm up to ttrpg, advertize it in the threads sometime| +|08/01/2022 03:42:20| |/a/ tank smells?| +|08/01/2022 03:42:26| |maho is my wife btw| +|08/01/2022 03:42:27| |is all of Kelly's Heroes spiced into this?| +|08/01/2022 03:42:28| |CHICKEN KATSU| +|08/01/2022 03:42:28| |Heil Maho| +|08/01/2022 03:42:32| |Mark if you're watching this drink| +|08/01/2022 03:42:33| |DON'T BE CHICKEN AND EAT THIS CHICKEN| +|08/01/2022 03:42:34| |seconded, guppie ttrpg sounds cool| +|08/01/2022 03:42:35| |maho is my wife btw| +|08/01/2022 03:42:35| |"that" place| +|08/01/2022 03:42:36| |the gup wargame is fun| +|08/01/2022 03:42:37| THAT +|08/01/2022 03:42:37| カツ +|08/01/2022 03:42:37| |AHN AHN AHNG| +|08/01/2022 03:42:38| |KATSU TAIMU!| +|08/01/2022 03:42:38| katsu +|08/01/2022 03:42:40| |Tying up Momo! Gagging Momo! Whipping Momo! Spanking Momo! | +|08/01/2022 03:42:45| Male! +|08/01/2022 03:42:45| カツカツ +|08/01/2022 03:42:45| |CATS CATS| +|08/01/2022 03:42:45| カツカツ +|08/01/2022 03:42:46| |cute currey tank | +|08/01/2022 03:42:47| hot +|08/01/2022 03:42:51| |DON'T BE A CHICKEN| +|08/01/2022 03:42:52| >momo +|08/01/2022 03:42:53| |PORKU DINNAR| +|08/01/2022 03:42:54| KATSU +|08/01/2022 03:42:55| anzu +|08/01/2022 03:42:55| |anzu wwww| +|08/01/2022 03:42:56| KATSU +|08/01/2022 03:42:56| カツカツwwwww +|08/01/2022 03:42:57| 勝つ +|08/01/2022 03:42:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:42:59| |whats the name of the ttrpg?| +|08/01/2022 03:42:59| |THAT place?| +|08/01/2022 03:43:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:01| |I LOVE CHICKEN KATSU| +|08/01/2022 03:43:01| ITALIA! +|08/01/2022 03:43:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:02| already? +|08/01/2022 03:43:03| |/a/ would be black forest but with a swastik as their symbol | +|08/01/2022 03:43:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:04| DUCE +|08/01/2022 03:43:04| かつかつするな! +|08/01/2022 03:43:04| DUCE +|08/01/2022 03:43:04| bufferoni +|08/01/2022 03:43:04| |Why can't more food be tank shaped? >.>| +|08/01/2022 03:43:05| dvce +|08/01/2022 03:43:06| |DVCE DVCE DVCE| +|08/01/2022 03:43:06| |KATSKOI NE| +|08/01/2022 03:43:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:07| |delicious tankkatsu| +|08/01/2022 03:43:07| |DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:07| |dvce | +|08/01/2022 03:43:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:08| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 03:43:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:09| DUCE +|08/01/2022 03:43:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:09| |italian planning| +|08/01/2022 03:43:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:11| DUCE +|08/01/2022 03:43:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:13| |gababool my fellow anziobros| +|08/01/2022 03:43:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:13| DVCE +|08/01/2022 03:43:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:13| KATSU +|08/01/2022 03:43:13| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 03:43:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:15| DUCE +|08/01/2022 03:43:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:17| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 03:43:17| DUCE +|08/01/2022 03:43:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:18| |DUCE! | +|08/01/2022 03:43:18| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 03:43:19| duce +|08/01/2022 03:43:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:22| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 03:43:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:24| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DU| +|08/01/2022 03:43:24| DUCE +|08/01/2022 03:43:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:27| |AY TONE| +|08/01/2022 03:43:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:29| DVCE +|08/01/2022 03:43:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:29| MUSSOLINI +|08/01/2022 03:43:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:32| |DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE| +|08/01/2022 03:43:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:34| |DUCE DUCE DUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE DUCEDUCE| +|08/01/2022 03:43:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 03:43:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:35| DVCE +|08/01/2022 03:43:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:36| FORZA +|08/01/2022 03:43:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:37| |THANKS FOR THE GRUB| +|08/01/2022 03:43:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:39| |put me in the screencap!!!!!!!!!!!!!| +|08/01/2022 03:43:39| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 03:43:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:40| DUCE +|08/01/2022 03:43:41| |TL NOTE: DVCE means PIZZA PASTA| +|08/01/2022 03:43:41| |SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. | +|08/01/2022 03:43:42| |RUB A DUB DUB | +|08/01/2022 03:43:42| |NO SLEEP NAO!| +|08/01/2022 03:43:42| WOOOOO +|08/01/2022 03:43:42| |dvce fucks her little brother| +|08/01/2022 03:43:42| |Cute Miho| +|08/01/2022 03:43:42| |FORZA ITALIA| +|08/01/2022 03:43:43| |rub a dub dub| +|08/01/2022 03:43:43| |The mother of all tailgate parties.| +|08/01/2022 03:43:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:44| |rub a dub dub| +|08/01/2022 03:43:45| |SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. SMELLY AND WEARS A WIG. | +|08/01/2022 03:43:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 03:43:46| FORZA +|08/01/2022 03:43:47| |god to be an italian tank school| +|08/01/2022 03:43:47| |THANKS TL| +|08/01/2022 03:43:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 03:43:49| |weird cut| +|08/01/2022 03:43:49| |I'M SO HUNGRY| +|08/01/2022 03:43:50| |cute munch| +|08/01/2022 03:43:50| |>hadena subds| +|08/01/2022 03:43:51| |Best dorks| +|08/01/2022 03:43:51| |TO ME| +|08/01/2022 03:43:52| |what is pizza pasta| +|08/01/2022 03:43:53| |just driving fast and eating pasta| +|08/01/2022 03:43:53| itadakimasu +|08/01/2022 03:43:53| JAN +|08/01/2022 03:43:55| |DING DING| +|08/01/2022 03:43:56| SLUT +|08/01/2022 03:43:57| |I thought two girls couldn't get married??????| +|08/01/2022 03:43:57| |SEAMS DOKO?| +|08/01/2022 03:43:59| OISHII +|08/01/2022 03:44:00| |DUCE SMELLS GOOD AND HAS REAL HAIR| +|08/01/2022 03:44:01| |and here's where I realize I'm so far behind| +|08/01/2022 03:44:01| ameteuter +|08/01/2022 03:44:02| DORK +|08/01/2022 03:44:02| |HIGH IQ| +|08/01/2022 03:44:03| wait +|08/01/2022 03:44:03| CUTE +|08/01/2022 03:44:04| |HAM NERDS RISE UP!| +|08/01/2022 03:44:07| nom +|08/01/2022 03:44:07| |Did she get married to herself??| +|08/01/2022 03:44:08| |SMELLY AND WEARS A WIG| +|08/01/2022 03:44:08| |GOT A LOICENSE FOR THAT THERE RADIO????| +|08/01/2022 03:44:10| |Saori looking for a boyfriend on 121.5!| +|08/01/2022 03:44:11| |SAORI, FART INTO ZE RADIO| +|08/01/2022 03:44:12| cute +|08/01/2022 03:44:13| MEGANE +|08/01/2022 03:44:17| |What'e her callsign?| +|08/01/2022 03:44:18| BTFO +|08/01/2022 03:44:21| |5th wheel 5th wheel!| +|08/01/2022 03:44:23| 73737373 +|08/01/2022 03:44:24| |Slut Actual| +|08/01/2022 03:44:26| |"Fat Nigger 3"| +|08/01/2022 03:44:26| |DUCE DOES NOT WEAR A WIG! DUCE DOES NOT SMELL!| +|08/01/2022 03:44:29| 69.9 +|08/01/2022 03:44:29| |Callsign SEAL| +|08/01/2022 03:44:31| |How uch ABV is this tream?| +|08/01/2022 03:44:34| |TOO MUCH FUCKING RICE| +|08/01/2022 03:44:36| BTFO +|08/01/2022 03:44:36| |with me| +|08/01/2022 03:44:38| |to me!| +|08/01/2022 03:44:38| SLUT +|08/01/2022 03:44:41| |>Radio license. What the fuck does that even mean| +|08/01/2022 03:44:42| SLUT +|08/01/2022 03:44:42| SLUT +|08/01/2022 03:44:43| |OH NO NO NO NO NO| +|08/01/2022 03:44:44| |DUCE DOES SMELL AND I WANT TO SMELL HER| +|08/01/2022 03:44:45| lesbians +|08/01/2022 03:44:45| |hitched with me| +|08/01/2022 03:44:45| |yeah, with me| +|08/01/2022 03:44:45| |I have never drunk alcohol in my life| +|08/01/2022 03:44:46| BOKOSEXUAL +|08/01/2022 03:44:46| |Hana is a hungry girl.| +|08/01/2022 03:44:47| test +|08/01/2022 03:44:49| |OI YOU GOT A LOICENSE FOR THAT RADIO?| +|08/01/2022 03:44:50| |WITH ME| +|08/01/2022 03:44:51| |to me| +|08/01/2022 03:44:51| SLUT +|08/01/2022 03:44:51| |Miporin has ARISU!| +|08/01/2022 03:44:53| |breast shaped rice mound| +|08/01/2022 03:44:53| |WITH ME| +|08/01/2022 03:44:53| |WITH ME| +|08/01/2022 03:44:54| BOKO +|08/01/2022 03:44:56| SENSHASEXUAL +|08/01/2022 03:44:56| |DAGNO? I thought that was DANGO because Saori is FAT| +|08/01/2022 03:44:57| |>never drunk alcohol| +|08/01/2022 03:44:58| |THOSE POOR BOKOS| +|08/01/2022 03:44:58| BOKOBOKOBOOKOBOKOBOKOBOKOBOKOBOKO +|08/01/2022 03:44:59| |Time for more pizza| +|08/01/2022 03:45:00| CUTE +|08/01/2022 03:45:00| |SHE'S TANK SEXUAL LEAVE HER ALONE| +|08/01/2022 03:45:02| Confession +|08/01/2022 03:45:03| |yukari wet| +|08/01/2022 03:45:03| |I'm bokusexual| +|08/01/2022 03:45:05| |don't worry bros I can be miho's bf| +|08/01/2022 03:45:05| |One of you guys needs to marry Saori. Take responsibility. | +|08/01/2022 03:45:06| |/u/ BROS| +|08/01/2022 03:45:06| |>asks about boyfriends >cuts to Boko| +|08/01/2022 03:45:06| |blushy Yukari| +|08/01/2022 03:45:07| |she's a lesbian| +|08/01/2022 03:45:09| |shes gonna marry boko| +|08/01/2022 03:45:10| CUTE +|08/01/2022 03:45:10| |>aomushi is canon| +|08/01/2022 03:45:11| FLOOF +|08/01/2022 03:45:12| |yukari is pure| +|08/01/2022 03:45:13| |girls can't like girls| +|08/01/2022 03:45:13| FUEH?! +|08/01/2022 03:45:13| eeeeeeeeeeh +|08/01/2022 03:45:14| |SLUT WHORE| +|08/01/2022 03:45:15| |I want to squeeze Saori's fat belly| +|08/01/2022 03:45:15| lel +|08/01/2022 03:45:15| |MIHO X YUKARI CONFIRMED| +|08/01/2022 03:45:16| |/u/ STAY WINNING| +|08/01/2022 03:45:16| |cute I love this dork| +|08/01/2022 03:45:17| NORIKO +|08/01/2022 03:45:18| |yukari is pure sex| +|08/01/2022 03:45:18| |TO ME| +|08/01/2022 03:45:19| CUTE +|08/01/2022 03:45:20| |/u/fags >>>/out/| +|08/01/2022 03:45:21| |HELL YEAH,FLOOF L/U/V| +|08/01/2022 03:45:21| |you got a license for that radio| +|08/01/2022 03:45:23| |it isn't right | +|08/01/2022 03:45:23| |miho literally has never met a boy| +|08/01/2022 03:45:24| |floof overload| +|08/01/2022 03:45:25| |SAORI IS A HOMOPHOBE| +|08/01/2022 03:45:25| |BOKO NFTs| +|08/01/2022 03:45:26| |I want to CW with Saori| +|08/01/2022 03:45:27| |/u/ has entered the chat| +|08/01/2022 03:45:28| KATSU! +|08/01/2022 03:45:28| |BASED SAORI| +|08/01/2022 03:45:30| GUTS +|08/01/2022 03:45:32| |/u/ out| +|08/01/2022 03:45:33| |>ost | +|08/01/2022 03:45:33| |Imagine being British. couldn't be me.| +|08/01/2022 03:45:35| KATSUDON +|08/01/2022 03:45:36| DORKS +|08/01/2022 03:45:39| |Based lesbian bullying| +|08/01/2022 03:45:39| katsu..... +|08/01/2022 03:45:42| |RARE TENK| +|08/01/2022 03:45:44| /o/ +|08/01/2022 03:45:45| |STUG CREW IS MY WIFE| +|08/01/2022 03:45:46| |almost at intermission| +|08/01/2022 03:45:49| HOSHINOOOOOOOOOOOOOOOOOO +|08/01/2022 03:45:49| |>there are brits in this chat| +|08/01/2022 03:45:49| |ooraibros... we are ngmi next match...| +|08/01/2022 03:45:50| |/tg/ demands garupan hex and chit games| +|08/01/2022 03:45:52| |NERD GANG GANG| +|08/01/2022 03:45:54| KATSU! +|08/01/2022 03:45:54| |Hoshino gf doko| +|08/01/2022 03:45:55| |TONY KAKU CURRY| +|08/01/2022 03:45:58| |kelly's heroes doko| +|08/01/2022 03:46:02| |why do they shill the chicken so much| +|08/01/2022 03:46:02| /v/ +|08/01/2022 03:46:02| wholesome +|08/01/2022 03:46:04| |cute gamers| +|08/01/2022 03:46:05| |TONKATSU CURRY| +|08/01/2022 03:46:06| |GAMER FUEL| +|08/01/2022 03:46:06| |cant wait for ooarai dorifuto at the df4 portion of the strream| +|08/01/2022 03:46:08| |nyan is too hot| +|08/01/2022 03:46:08| |NO FUN| +|08/01/2022 03:46:11| |>there are british people communicating with you right now| +|08/01/2022 03:46:11| jannies +|08/01/2022 03:46:12| |KELLYS HEROES| +|08/01/2022 03:46:14| |I WANT TO RAPE THEM| +|08/01/2022 03:46:15| KINO +|08/01/2022 03:46:15| burgers +|08/01/2022 03:46:15| |weeb crew| +|08/01/2022 03:46:16| |KELLY'S HEROES| +|08/01/2022 03:46:18| |sodoclone gangbang| +|08/01/2022 03:46:18| |>EU's >Being awake at this hour| +|08/01/2022 03:46:18| ハンバガ! +|08/01/2022 03:46:19| OST +|08/01/2022 03:46:19| KINO +|08/01/2022 03:46:21| ;_; +|08/01/2022 03:46:21| |IT'S AzUSA!!!!!!! AAHHH| +|08/01/2022 03:46:21| |THAT'S PAINT| +|08/01/2022 03:46:22| Kinoplex +|08/01/2022 03:46:22| /tv/ +|08/01/2022 03:46:23| ;_; +|08/01/2022 03:46:25| |Based film tbh| +|08/01/2022 03:46:25| ;_; +|08/01/2022 03:46:25| |I want to eat pickles with Sodoko... no innuendo!| +|08/01/2022 03:46:25| |Based bunnies| +|08/01/2022 03:46:26| |what film?| +|08/01/2022 03:46:27| |more like hogan's heroes| +|08/01/2022 03:46:29| |Saki is absorbing it| +|08/01/2022 03:46:29| |BROS THE PANZER IS STUCK :((((| +|08/01/2022 03:46:29| ;_; +|08/01/2022 03:46:29| ;_; +|08/01/2022 03:46:31| ;_; +|08/01/2022 03:46:33| |eu KINGS represent| +|08/01/2022 03:46:33| ;_; +|08/01/2022 03:46:34| :_: +|08/01/2022 03:46:35| |Kelly's Heroes, dumbass| +|08/01/2022 03:46:36| |BASED CUNNY KINOSSEURS| +|08/01/2022 03:46:36| ;_; +|08/01/2022 03:46:38| aaaaaa +|08/01/2022 03:46:38| |Real tears| +|08/01/2022 03:46:38| |>crying at a comedy| +|08/01/2022 03:46:40| |that poor tank| +|08/01/2022 03:46:42| rude +|08/01/2022 03:46:43| |kelly's hero'| +|08/01/2022 03:46:46| |rip tank| +|08/01/2022 03:46:47| |;_; Tiger-kun| +|08/01/2022 03:46:49| |what are you doing step tank| +|08/01/2022 03:46:49| ;__; +|08/01/2022 03:46:49| |battle of the bulge in my pants| +|08/01/2022 03:46:49| |I want to watch Das Boot with Maho| +|08/01/2022 03:46:51| |kunny's heros| +|08/01/2022 03:46:52| |tigerbros... its over...| +|08/01/2022 03:46:58| |in NY, a hero ain't nothin' but a sandwich| +|08/01/2022 03:47:00| FAKE-TIGER +|08/01/2022 03:47:01| |That was a god anime| +|08/01/2022 03:47:03| |Poor TRigre| +|08/01/2022 03:47:03| |Train to the western zone| +|08/01/2022 03:47:05| |See you next year| +|08/01/2022 03:47:08| |I-i'm not crying it's just rain| +|08/01/2022 03:47:09| |IM SCHLEEP CUH| +|08/01/2022 03:47:10| |mako sleep| +|08/01/2022 03:47:11| |bonding time with the tanks| +|08/01/2022 03:47:11| |my grandpa loves kelly's heroes should i show him GuP?| +|08/01/2022 03:47:12| |GLASSES BACKGROUND GIRL| +|08/01/2022 03:47:13| FUJI-SAN +|08/01/2022 03:47:14| cute +|08/01/2022 03:47:15| |What's your favourite tank, /a/?| +|08/01/2022 03:47:16| |REPORTER GIRL CUTE| +|08/01/2022 03:47:16| |>next year| +|08/01/2022 03:47:16| |real model kits| +|08/01/2022 03:47:16| |fun fact lads i now know enough deutsch to watch das boot unsubbed| +|08/01/2022 03:47:17| v +|08/01/2022 03:47:21| gimi +|08/01/2022 03:47:21| |TAIGA'S YEAR| +|08/01/2022 03:47:21| |YEAR OF THE TAIGA| +|08/01/2022 03:47:22| I +|08/01/2022 03:47:24| |BUYING YUKARI A MODEL TANK| +|08/01/2022 03:47:24| |see you in woto more like| +|08/01/2022 03:47:25| |Why don't you cut it out with those negative waves...| +|08/01/2022 03:47:28| |the porsche tiger of course| +|08/01/2022 03:47:29| bri'ish +|08/01/2022 03:47:29| |feel free| +|08/01/2022 03:47:31| |keep it up deutsch anon| +|08/01/2022 03:47:32| |I'm a big Panther fan| +|08/01/2022 03:47:32| |Yes anon show him| +|08/01/2022 03:47:32| |PZ IV with the sex-plates obviously| +|08/01/2022 03:47:33| bongs +|08/01/2022 03:47:34| |SLAG! <3| +|08/01/2022 03:47:34| TEA? +|08/01/2022 03:47:35| |luv me darj| +|08/01/2022 03:47:35| |Is Pekoe... slow?| +|08/01/2022 03:47:35| GOKIGENYOU +|08/01/2022 03:47:36| GOKIGENYOU +|08/01/2022 03:47:37| |BRI 'ISH| +|08/01/2022 03:47:38| DARJ +|08/01/2022 03:47:40| slags +|08/01/2022 03:47:43| pekoe.... +|08/01/2022 03:47:44| |this saying| +|08/01/2022 03:47:45| |my wife| +|08/01/2022 03:47:45| |How will I survive both this and Woto's stream?| +|08/01/2022 03:47:45| |wanna hear this saying?| +|08/01/2022 03:47:47| |PEEEEEEEEEEKKKKKKKKOOOOOOOOO UUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 03:47:49| |you wot?| +|08/01/2022 03:47:49| |hip when?| +|08/01/2022 03:47:50| GOKIGENYOU +|08/01/2022 03:47:50| :o +|08/01/2022 03:47:51| |My wife Darjeeling is so cute.| +|08/01/2022 03:47:53| |Have you heard this saying? "Darj and Pekoe are the best girls."| +|08/01/2022 03:47:53| |hi miho have you heard this saying?| +|08/01/2022 03:47:56| |>10/10 in bongland| +|08/01/2022 03:47:57| |No Duce..........| +|08/01/2022 03:47:57| pekoe................ +|08/01/2022 03:47:58| Gokigenyo +|08/01/2022 03:47:58| |Darjeeling x kay x me| +|08/01/2022 03:47:58| |BURGERS OUT| +|08/01/2022 03:47:59| |EXCITING CRAZY| +|08/01/2022 03:47:59| |You need GUTS to live through snw| +|08/01/2022 03:47:59| MUTT +|08/01/2022 03:47:59| |your wife is dumb| +|08/01/2022 03:48:00| USA +|08/01/2022 03:48:01| KUREIJI +|08/01/2022 03:48:01| |Have you heard this saying? There's no shitting without peeing| +|08/01/2022 03:48:03| KURAIJI +|08/01/2022 03:48:03| |KICK SOME ASS| +|08/01/2022 03:48:03| Peeko +|08/01/2022 03:48:04| Crazy +|08/01/2022 03:48:05| |usa usa| +|08/01/2022 03:48:06| |HOP IN LOSERS WE'RE GOING SHOPPING| +|08/01/2022 03:48:06| |DVCE is crying off screen right now| +|08/01/2022 03:48:06| CURAAAZHI +|08/01/2022 03:48:06| CURAHYEZEEE +|08/01/2022 03:48:07| FIGHTO +|08/01/2022 03:48:08| MURICA +|08/01/2022 03:48:08| N +|08/01/2022 03:48:09| mihong! +|08/01/2022 03:48:09| |GOOT LAAK| +|08/01/2022 03:48:09| |GUT LUCJ\K| +|08/01/2022 03:48:10| |GOOD LUCK| +|08/01/2022 03:48:10| |FAITO! GOOD RUCK!| +|08/01/2022 03:48:10| |Pekoe rapes Drajeeling| +|08/01/2022 03:48:10| |GOOD LUCK| +|08/01/2022 03:48:11| |miho x maho when?????| +|08/01/2022 03:48:11| |HELL YEAH| +|08/01/2022 03:48:12| |KAy is baye| +|08/01/2022 03:48:13| |>fighto means kick some ass| +|08/01/2022 03:48:13| |IMAGINE BEING BRITISH| +|08/01/2022 03:48:14| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 03:48:14| |USA USA USA| +|08/01/2022 03:48:14| |my wife| +|08/01/2022 03:48:14| |good ruck!| +|08/01/2022 03:48:15| |FAT KAY TITS| +|08/01/2022 03:48:15| |USA USA USA USA| +|08/01/2022 03:48:15| |good ruck| +|08/01/2022 03:48:15| MIDGET +|08/01/2022 03:48:17| |JA NE| +|08/01/2022 03:48:18| :o +|08/01/2022 03:48:19| |BOKO BOKO| +|08/01/2022 03:48:19| KUUUUUUNNNNNYYYY +|08/01/2022 03:48:20| |I WANT TO SNIFF KATYUSHA THIGHS| +|08/01/2022 03:48:20| FIGHTON +|08/01/2022 03:48:21| FIGHT-O! +|08/01/2022 03:48:22| UUUOOOOOOOOH +|08/01/2022 03:48:22| |EXAITINGU CREYZY FAITO| +|08/01/2022 03:48:24| |russian loli onahole| +|08/01/2022 03:48:25| |character says: faito subs say:kick some ass ?????| +|08/01/2022 03:48:26| |Imagine squeez\ing Kays fat ass| +|08/01/2022 03:48:26| |USA USA USA USA| +|08/01/2022 03:48:26| |SPEAK ENGLISH FAGGOT| +|08/01/2022 03:48:27| |Oh shut the fuck up| +|08/01/2022 03:48:28| |DO SVIDANYA| +|08/01/2022 03:48:28| >SLAGS +|08/01/2022 03:48:28| AAAAAAAAAAAAAAAA +|08/01/2022 03:48:33| |sniffing katyushas butt| +|08/01/2022 03:48:33| |what does piroshki mean?| +|08/01/2022 03:48:33| |REMOVE SLAG| +|08/01/2022 03:48:37| |fuck off darj| +|08/01/2022 03:48:37| npooooooooo +|08/01/2022 03:48:38| dumplings +|08/01/2022 03:48:39| |>you're a strange person| +|08/01/2022 03:48:39| slags +|08/01/2022 03:48:40| |STEAKY PEOPLE| +|08/01/2022 03:48:40| DEEP +|08/01/2022 03:48:41| BLYAT +|08/01/2022 03:48:42| ?????????????????? +|08/01/2022 03:48:43| |YOU'RE STILL HERE?| +|08/01/2022 03:48:44| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 03:48:44| |DARJ IS MY WIFE| +|08/01/2022 03:48:44| proverb +|08/01/2022 03:48:45| ????????????????????????????????????????? +|08/01/2022 03:48:45| ??? +|08/01/2022 03:48:45| ????????????????????? +|08/01/2022 03:48:45| ???????????????????????????????????????????? +|08/01/2022 03:48:45| |Shut up, Darjeeling| +|08/01/2022 03:48:46| |DARJELING WHAT THE FUCK ARE YOU TALKING ABOUT| +|08/01/2022 03:48:46| |stop it, my ears| +|08/01/2022 03:48:47| ????????????????? +|08/01/2022 03:48:47| |she spilled her tea, never forget| +|08/01/2022 03:48:47| |SHUT UP BONG| +|08/01/2022 03:48:47| |MUH ENGLISH PROVERB| +|08/01/2022 03:48:48| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 03:48:48| ha??????? +|08/01/2022 03:48:48| |based and have you heard this?pilled| +|08/01/2022 03:48:50| ????????????? +|08/01/2022 03:48:50| |all the side girls were better than the main ones tbh| +|08/01/2022 03:48:50| |where are the italians?| +|08/01/2022 03:48:50| |STFU | +|08/01/2022 03:48:50| ?????????????? +|08/01/2022 03:48:50| |That's not English| +|08/01/2022 03:48:51| ????????? +|08/01/2022 03:48:52| |This is a shonen anime confirmed.| +|08/01/2022 03:48:52| |mahou shojou miho it all makes sense| +|08/01/2022 03:48:52| |ok this one made sense| +|08/01/2022 03:48:53| |WHAT IS WRONG WITH THE BONGS| +|08/01/2022 03:48:53| |????????????????????????????????????????? brit meds| +|08/01/2022 03:48:53| |thanks a ton for the proverb, Darjeeling| +|08/01/2022 03:48:54| |SHUT UP DARJ| +|08/01/2022 03:48:54| ERIKA +|08/01/2022 03:48:55| |DUMB WANI| +|08/01/2022 03:48:55| |I never read Darj's proverbs | +|08/01/2022 03:48:56| ???????? +|08/01/2022 03:48:56| |WHAT DOES SLAG MEAN?!| +|08/01/2022 03:48:56| |OH GOD I WANT TO FUCK ERIKA| +|08/01/2022 03:48:57| |Uma Musume reference?| +|08/01/2022 03:48:58| ???????? +|08/01/2022 03:48:59| ???????????? +|08/01/2022 03:48:59| |I still dont get the american hell telephone joke| +|08/01/2022 03:49:01| |have you heard this saying?| +|08/01/2022 03:49:01| |Momo the #22| +|08/01/2022 03:49:02| |FUCK ERIKA| +|08/01/2022 03:49:05| WANI +|08/01/2022 03:49:05| |F R I E D S H I P| +|08/01/2022 03:49:06| |!!! D e u t s c h l a n d !!!| +|08/01/2022 03:49:06| |WANI SMUG| +|08/01/2022 03:49:06| |SEX WITH MAHO| +|08/01/2022 03:49:06| |Look at that dumb bitch Erika| +|08/01/2022 03:49:07| |Shut up, Erika.| +|08/01/2022 03:49:07| |DO BONGS REALLY| +|08/01/2022 03:49:07| BITCH +|08/01/2022 03:49:08| |DARJ HATERS HAVE BEEN COURT MARTIALLED BY PATRIOTS -Q| +|08/01/2022 03:49:08| Eroka +|08/01/2022 03:49:08| |RAPE THE WANI| +|08/01/2022 03:49:09| |my maho wife| +|08/01/2022 03:49:09| |have you heard the news| +|08/01/2022 03:49:09| MAHO +|08/01/2022 03:49:10| |UND DAS HEISST| +|08/01/2022 03:49:11| |UND DAS HEIST| +|08/01/2022 03:49:12| |SHHHHHHH QUIET The Italians are asleep | +|08/01/2022 03:49:12| |DUMB WANI| +|08/01/2022 03:49:13| |hmph, undermensch| +|08/01/2022 03:49:13| |SIBLING DEATH MATCH| +|08/01/2022 03:49:13| |ERIKA GONA WIN| +|08/01/2022 03:49:13| |get fuckt| +|08/01/2022 03:49:14| |I THINK ERIKA SUCKS| +|08/01/2022 03:49:14| WANI +|08/01/2022 03:49:14| |I want to rape Erika| +|08/01/2022 03:49:15| |LET'S GO DEUTSCHLAND| +|08/01/2022 03:49:15| |Thanks for sharing that stupid shit darj| +|08/01/2022 03:49:15| RUDE +|08/01/2022 03:49:15| |ERIKA MY WIFE| +|08/01/2022 03:49:17| |Translators Note: Dosvidaniya means sayonara| +|08/01/2022 03:49:18| |EAST VS WEST GERMANY| +|08/01/2022 03:49:19| |FUCKIN WANI| +|08/01/2022 03:49:23| Ericunny +|08/01/2022 03:49:23| EEEEEERIKA +|08/01/2022 03:49:25| |FUCK OFF ERIKA| +|08/01/2022 03:49:26| WAI +|08/01/2022 03:49:26| |ami chan | +|08/01/2022 03:49:27| |AMI BUTT| +|08/01/2022 03:49:27| |My beautiful wife Maho and her pig dog Erika| +|08/01/2022 03:49:29| |ES BRAUST EIN RUF WIE DONNERHALL| +|08/01/2022 03:49:29| EEEEEEEEEEEEERIKA +|08/01/2022 03:49:31| WANI +|08/01/2022 03:49:31| |Smug Erika| +|08/01/2022 03:49:32| |TWENTY FUCKING WEHRABOOS!| +|08/01/2022 03:49:33| |THAT WANI WILL DIE IN 100 DAYSSSSSSSS| +|08/01/2022 03:49:34| |Erika will lose| +|08/01/2022 03:49:36| |SHUT UP WANI| +|08/01/2022 03:49:37| |FUCKING LOSER SITS ALL BY HERSELF| +|08/01/2022 03:49:39| IDEALS +|08/01/2022 03:49:40| |Erika is such a bitch| +|08/01/2022 03:49:40| |FUCK OFF BITCH| +|08/01/2022 03:49:40| |LONG LIVE DDR FUCK WEST GERMANY| +|08/01/2022 03:49:41| |My wife can't be this smug| +|08/01/2022 03:49:41| |REMOVE ERIKA| +|08/01/2022 03:49:42| |bitch alert| +|08/01/2022 03:49:43| HERETIC +|08/01/2022 03:49:43| |BASED WANI| +|08/01/2022 03:49:43| |Shut up, Erika| +|08/01/2022 03:49:44| |Fuck Erika I hate Erika | +|08/01/2022 03:49:46| EEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:49:46| HERESY +|08/01/2022 03:49:48| |I like how new Erika is a different character| +|08/01/2022 03:49:48| |HATE FUCK ERIKA| +|08/01/2022 03:49:48| |Erika my beloved| +|08/01/2022 03:49:49| |erika fuckin shit| +|08/01/2022 03:49:49| |Erika for brutal doggy style and impregnation| +|08/01/2022 03:49:49| |LIEB VATERLAND MAGST RUHIG SEIN| +|08/01/2022 03:49:51| |You're asking for a dicking Erika| +|08/01/2022 03:49:51| |K O U M E | +|08/01/2022 03:49:51| |I like Erika's eyes | +|08/01/2022 03:49:51| |What ideals Miho even has lmao| +|08/01/2022 03:49:52| KOUME +|08/01/2022 03:49:54| |>thanks for not letting me die| +|08/01/2022 03:49:54| |death to koume| +|08/01/2022 03:49:54| |SS floof| +|08/01/2022 03:49:55| |drown again pls| +|08/01/2022 03:49:55| |BEST GERM| +|08/01/2022 03:49:55| |KOUME YESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSs| +|08/01/2022 03:49:56| |Choking Erika!| +|08/01/2022 03:49:56| |KOUME! >3| +|08/01/2022 03:49:56| *pomf* +|08/01/2022 03:49:57| |how did wani get a following| +|08/01/2022 03:49:57| KOUME +|08/01/2022 03:49:58| |literally who| +|08/01/2022 03:49:58| |Based Fluff| +|08/01/2022 03:49:58| CUTE +|08/01/2022 03:49:58| Cowme +|08/01/2022 03:49:58| WANI +|08/01/2022 03:49:59| |"i should of let you die"| +|08/01/2022 03:50:00| CUTE +|08/01/2022 03:50:02| |DUMB WANI| +|08/01/2022 03:50:02| |PTSD | +|08/01/2022 03:50:04| KARMA +|08/01/2022 03:50:05| |>should of| +|08/01/2022 03:50:06| KOUMEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 03:50:06| |how fast did miho dip that she couldnt thank her| +|08/01/2022 03:50:07| |THANKS FOR SAVING ME FROM DROWNING| +|08/01/2022 03:50:08| |KUOME LIVES| +|08/01/2022 03:50:09| pomf +|08/01/2022 03:50:10| |my angel!| +|08/01/2022 03:50:11| |just kill her right now to make amends| +|08/01/2022 03:50:14| |I want Erika to smash me| +|08/01/2022 03:50:14| *pomf* +|08/01/2022 03:50:14| |KUOME LIVES IN DEATH| +|08/01/2022 03:50:15| Cumme +|08/01/2022 03:50:16| |>erika wanted this to drown Dumb bitch| +|08/01/2022 03:50:16| |koume midget| +|08/01/2022 03:50:16| sweetness +|08/01/2022 03:50:19| |another floof....| +|08/01/2022 03:50:19| |PTSD Inducing stare| +|08/01/2022 03:50:19| |I honestly forgot how much of a shitter wani was in the tv series. she's much better in the films| +|08/01/2022 03:50:19| |Erika will show you her bewegungskrieg soon enough just see| +|08/01/2022 03:50:19| |Read that one fan manga about her| +|08/01/2022 03:50:20| |now kiss| +|08/01/2022 03:50:22| |I DIDN'T BOTHER BRINGING IT UP FOR YEARS| +|08/01/2022 03:50:23| |mount a water canon on the tank| +|08/01/2022 03:50:23| |miho take your meds| +|08/01/2022 03:50:23| kuome....... +|08/01/2022 03:50:25| |>shes not real| +|08/01/2022 03:50:27| |"wani following" she a cute and tsun tsun, how did you stop being a faggot -- oh you didn't| +|08/01/2022 03:50:29| |I THINK ERIKA SUCKS| +|08/01/2022 03:50:30| |Erika SEETHING| +|08/01/2022 03:50:30| |killing intent| +|08/01/2022 03:50:33| |DEATH TO MERCEDES| +|08/01/2022 03:50:34| |tasty midget| +|08/01/2022 03:50:34| |did her mom also want her to drown?| +|08/01/2022 03:50:34| |>Erika mad Koume is still alive| +|08/01/2022 03:50:38| |I LOVE THE TONK I LOVE THE TONK| +|08/01/2022 03:50:39| |based granny| +|08/01/2022 03:50:40| |erika mad| +|08/01/2022 03:50:41| |Maho is my wife btw| +|08/01/2022 03:50:41| |Erika going to haze her| +|08/01/2022 03:50:42| BLITZ +|08/01/2022 03:50:43| |theres this saying about drowning during a match| +|08/01/2022 03:50:44| |ooraibros... it's time| +|08/01/2022 03:50:45| |Erika sucks my dick alright| +|08/01/2022 03:50:45| |wtf this show has a Nazi team...?| +|08/01/2022 03:50:45| |based grandma| +|08/01/2022 03:50:47| |Erika's laughter in the final| +|08/01/2022 03:50:48| |>Its been 10 years since the accident Miho, you have to let me go| +|08/01/2022 03:50:51| Saki +|08/01/2022 03:50:55| |>Takahi left arisu for koume| +|08/01/2022 03:50:59| |GET TO YOUR VEHICLES| +|08/01/2022 03:51:01| HAI +|08/01/2022 03:51:08| |Oorari vs /a/| +|08/01/2022 03:51:17| |BE WELL, MY LITTLE WAR-MACHINE!| +|08/01/2022 03:51:17| >oorari +|08/01/2022 03:51:18| OOrararai +|08/01/2022 03:51:19| |It's afraid| +|08/01/2022 03:51:20| |it's a good thing she has plot armour| +|08/01/2022 03:51:21| l-lewd +|08/01/2022 03:51:21| |Opening move: Rape Correction| +|08/01/2022 03:51:23| lewd +|08/01/2022 03:51:25| |Just got here, this show any good?| +|08/01/2022 03:51:26| |its afraid| +|08/01/2022 03:51:29| O +|08/01/2022 03:51:31| yea +|08/01/2022 03:51:33| |/a/ gets beaten to a pulp. simultaneously covered in their own semen| +|08/01/2022 03:51:33| |QUICK PICK YOUR TANKFU| +|08/01/2022 03:51:34| |O ARA ARA ARA ARAI| +|08/01/2022 03:51:34| |Warcrimes will be committed today.| +|08/01/2022 03:51:38| |is it stopping for everyone else?| +|08/01/2022 03:51:38| |i want to choke maho| +|08/01/2022 03:51:41| |FUR DEUTSCHLAND | +|08/01/2022 03:51:42| o +|08/01/2022 03:51:42| |SIEG HEIL VIKTORIA| +|08/01/2022 03:51:42| |this is the only good thing to come out of j*pan| +|08/01/2022 03:51:42| |KLOTZEN NICHT KLECKERN| +|08/01/2022 03:51:45| o/ +|08/01/2022 03:51:47| no +|08/01/2022 03:51:47| |no buffers| +|08/01/2022 03:51:48| |>quoting Yukari| +|08/01/2022 03:51:48| |PANZER VOR| +|08/01/2022 03:51:49| |FOR WHAT| +|08/01/2022 03:51:49| |PANZER VOR| +|08/01/2022 03:51:49| |what does it mean, /a/?| +|08/01/2022 03:51:49| |PANZER VOR| +|08/01/2022 03:51:49| |PANZER VOR| +|08/01/2022 03:51:50| |PANTSU VOR| +|08/01/2022 03:51:50| |PANZER VOR!!| +|08/01/2022 03:51:51| |PANZER VOR| +|08/01/2022 03:51:51| |PANZER VOR| +|08/01/2022 03:51:52| |covering myself in my own semen for my favorite GuP girl| +|08/01/2022 03:51:52| |PANZER VOR| +|08/01/2022 03:51:52| |WHAT DOES IT MEAN?| +|08/01/2022 03:51:52| |Panzer For| +|08/01/2022 03:51:52| |PANZER VOR| +|08/01/2022 03:51:53| |PANZA VOR| +|08/01/2022 03:51:54| |PANZER VOR| +|08/01/2022 03:51:54| |PANTS ARE FOR| +|08/01/2022 03:51:55| |PANZER VOR | +|08/01/2022 03:51:55| TOTSUGEKI +|08/01/2022 03:51:55| |PANZER VORE| +|08/01/2022 03:51:56| |PANZER VOR| +|08/01/2022 03:51:56| |PANZER VOR| +|08/01/2022 03:51:57| |Pantsu Four!| +|08/01/2022 03:51:58| |PANZER VOR| +|08/01/2022 03:51:59| |CUTE WANI| +|08/01/2022 03:51:59| |ARMORED VORTEX| +|08/01/2022 03:51:59| |Panzer Vor means Panzer Vor| +|08/01/2022 03:52:00| |Kinoplex moment| +|08/01/2022 03:52:01| |PANZA VORE| +|08/01/2022 03:52:03| |panzer vor means panzer vor| +|08/01/2022 03:52:03| |VANER POR| +|08/01/2022 03:52:03| |PANZER VOR| +|08/01/2022 03:52:04| |Why are you on /a/ if you hate every other anime wtf anon| +|08/01/2022 03:52:05| |pnzr 4| +|08/01/2022 03:52:06| |PANSY FOUR| +|08/01/2022 03:52:07| |virgin speech vs the chad PANZER VOR| +|08/01/2022 03:52:09| |tanks please move forward pls| +|08/01/2022 03:52:11| |type 88 bros, it's our time| +|08/01/2022 03:52:14| |How does one series have so many kino moments| +|08/01/2022 03:52:15| |TL NOTE: PANZER VOR means PANZER VOR| +|08/01/2022 03:52:17| FLOOF +|08/01/2022 03:52:17| |Stream is completely fucked for me, looks like no tanks this year bros| +|08/01/2022 03:52:18| 88 +|08/01/2022 03:52:18| |/a/ dont even get to the field they get kicked out for kidnapping usagi teamu| +|08/01/2022 03:52:20| |my maho wife| +|08/01/2022 03:52:20| 88 +|08/01/2022 03:52:21| |>she can't tell| +|08/01/2022 03:52:21| |Panzer Vor means Penetrate Anon| +|08/01/2022 03:52:22| |So which one of you will be dressing up as Yukari for the /a/ team?| +|08/01/2022 03:52:24| |SO PRECIOUS| +|08/01/2022 03:52:28| me +|08/01/2022 03:52:29| |manko teamu| +|08/01/2022 03:52:36| |SORE DE IIN DA YO NE| +|08/01/2022 03:52:36| |TL note: "Panzer Vor" means "Darj and Pekoe are best girls"| +|08/01/2022 03:52:37| |nishizumi swag incoming| +|08/01/2022 03:52:44| |Saori, fart into the radio, immediately.| +|08/01/2022 03:52:45| poi +|08/01/2022 03:52:45| パンツァーフォー +|08/01/2022 03:52:46| |>/a/non dresses up as yukari as a joke >/a/non is molested to death| +|08/01/2022 03:52:47| |Non Slut Sayori| +|08/01/2022 03:52:48| |>over and out| +|08/01/2022 03:52:49| CUTE +|08/01/2022 03:52:50| PEW +|08/01/2022 03:52:52| |>you're not a pro in bed| +|08/01/2022 03:52:53| |who drives darj's churchill???????| +|08/01/2022 03:52:56| |WTF HOW| +|08/01/2022 03:52:56| |based mako| +|08/01/2022 03:52:57| |I can't believe it took this long for someone to go MANKO TEAMU| +|08/01/2022 03:52:58| |Fun is over| +|08/01/2022 03:52:58| tot +|08/01/2022 03:52:59| AAAAAAAAAAAAAAAAAAH +|08/01/2022 03:53:00| NANI +|08/01/2022 03:53:00| DEAD +|08/01/2022 03:53:00| EEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:01| |Pro Bass| +|08/01/2022 03:53:02| NANI +|08/01/2022 03:53:05| |KINO TIME| +|08/01/2022 03:53:05| |can confirm I would rape dressed up /a/non in a game of pretend| +|08/01/2022 03:53:06| |nazi time| +|08/01/2022 03:53:07| |through the forest wow this is like a history reference| +|08/01/2022 03:53:08| |! Banger alert ! Banger alert !| +|08/01/2022 03:53:08| |UND DAS HEIST| +|08/01/2022 03:53:09| |KUROMORIMINE UBER ALLES| +|08/01/2022 03:53:09| KINO +|08/01/2022 03:53:10| SIEG +|08/01/2022 03:53:10| |ITS OVER| +|08/01/2022 03:53:10| |AUF DER HEIDE | +|08/01/2022 03:53:11| |AUF DER HEIDE| +|08/01/2022 03:53:11| ERIKA +|08/01/2022 03:53:11| |SIEG HEIL VIKTORIA| +|08/01/2022 03:53:12| uhhhh +|08/01/2022 03:53:12| |HOLY SHIT OORAI IS DONE| +|08/01/2022 03:53:12| |AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELIEN| +|08/01/2022 03:53:12| |NAZI TIME BBY| +|08/01/2022 03:53:12| ERIKA +|08/01/2022 03:53:13| |>they went through the forest| +|08/01/2022 03:53:13| ERIKA +|08/01/2022 03:53:13| |UND DAS HEIßT| +|08/01/2022 03:53:13| |WAKE PU| +|08/01/2022 03:53:14| |OH NO NO NO NO NO NO| +|08/01/2022 03:53:16| |its over Oorari Bros we got to cocky | +|08/01/2022 03:53:16| |AUF DER HEIDE| +|08/01/2022 03:53:16| |UND DAS HEISST| +|08/01/2022 03:53:17| EEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:17| ERIKA +|08/01/2022 03:53:17| ERIKA +|08/01/2022 03:53:17| |ERIKA TIME| +|08/01/2022 03:53:18| ERIKA +|08/01/2022 03:53:18| |UND DAS HEISST| +|08/01/2022 03:53:18| |UND DAS HEIST| +|08/01/2022 03:53:18| ERIKA +|08/01/2022 03:53:18| |UND DAS HEISST| +|08/01/2022 03:53:18| ERIKA +|08/01/2022 03:53:19| |UND DAS HEIST| +|08/01/2022 03:53:19| EEEEERIKA +|08/01/2022 03:53:20| ERIKA +|08/01/2022 03:53:20| |ONLY DUCE COULD WIN THIS| +|08/01/2022 03:53:20| ERIKA +|08/01/2022 03:53:20| EEEEERIKA +|08/01/2022 03:53:20| |UND DAS HEISST | +|08/01/2022 03:53:20| ERIKA +|08/01/2022 03:53:21| o/ +|08/01/2022 03:53:22| ERIKAAAAAA +|08/01/2022 03:53:22| |UND DAS HEISST... ERIKA!| +|08/01/2022 03:53:22| ERRRRRRRRIIIIIIIIKKKKKKKKKKAAAAAAAAAAA +|08/01/2022 03:53:22| |UN DAS HEIST| +|08/01/2022 03:53:23| AzUA +|08/01/2022 03:53:24| |o/ HEIL ERIKA| +|08/01/2022 03:53:24| |AUF HER HEIDE BLUT EIN KLEINES BLUBELEIN| +|08/01/2022 03:53:24| |UND DAS HEIST| +|08/01/2022 03:53:25| EEEEEEEEEEEEEEEEEEEEEEEEEEERRIKA +|08/01/2022 03:53:25| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:25| ERIKA!! +|08/01/2022 03:53:25| |no more wholesome gup| +|08/01/2022 03:53:27| ERIKA +|08/01/2022 03:53:27| |DAS HEIST| +|08/01/2022 03:53:28| EEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:28| |UN DAST IST ERIKA| +|08/01/2022 03:53:29| |AUF DER HEIDE| +|08/01/2022 03:53:30| |HEIL ERIKA| +|08/01/2022 03:53:30| |HEIL HITLER| +|08/01/2022 03:53:31| ERIKA +|08/01/2022 03:53:32| |I'M WHISTLEING AS LOUD I CAN RIGHT NOW| +|08/01/2022 03:53:32| ERIKA +|08/01/2022 03:53:32| ERIKA +|08/01/2022 03:53:34| |NIGGAZUMI STYLE| +|08/01/2022 03:53:34| エリカ様!!!! +|08/01/2022 03:53:35| |Just Charge| +|08/01/2022 03:53:35| o/ +|08/01/2022 03:53:35| |NISHGZUME StYLE| +|08/01/2022 03:53:35| EEEEEEEEEEERIKA +|08/01/2022 03:53:35| |german steel folded by a 1000 slaves| +|08/01/2022 03:53:36| |UND DAS HEIßT| +|08/01/2022 03:53:36| |DUMB DUMB DUMB ERIIIIIIIIIIIIKKKKKKKKKKAAAAAAAAAAAA| +|08/01/2022 03:53:37| |I'm glad I all inned on Kuromorimine winning| +|08/01/2022 03:53:37| EEEERIKA +|08/01/2022 03:53:37| EEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:38| BLUMENLIED +|08/01/2022 03:53:38| |UND DAS HEISST ERIKA| +|08/01/2022 03:53:38| EEEERIIKAAAAAAAAAAAA +|08/01/2022 03:53:40| ERIKA +|08/01/2022 03:53:40| EEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:41| 1488 +|08/01/2022 03:53:41| |WANI! WANI! WANI!| +|08/01/2022 03:53:41| EEEERIKA +|08/01/2022 03:53:42| |Auf der Heide blueht ein kleines bluemelein| +|08/01/2022 03:53:42| ERIKAAA +|08/01/2022 03:53:42| NIGGAZUME +|08/01/2022 03:53:43| |BAM BAM BAM | +|08/01/2022 03:53:43| Erika'd +|08/01/2022 03:53:43| |HALE HORTLER| +|08/01/2022 03:53:44| |NISHIZUMI STYLE IS SUGOI| +|08/01/2022 03:53:44| |o/ o/ o/| +|08/01/2022 03:53:45| EEEEEEEEEEEEEEEERIKA +|08/01/2022 03:53:46| |BOOM BOOM BOOM| +|08/01/2022 03:53:46| ERIKA +|08/01/2022 03:53:49| |DUMB WANI| +|08/01/2022 03:53:49| RIP +|08/01/2022 03:53:50| |SO STIFF!| +|08/01/2022 03:53:50| 1488 +|08/01/2022 03:53:51| ERIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:53:51| |UND DAS HEIST| +|08/01/2022 03:53:53| ERIKAAAAAAAAAAAAAAAAAAA +|08/01/2022 03:53:55| |Erika showiong who is boss| +|08/01/2022 03:53:55| EEERICKA +|08/01/2022 03:53:56| |kmm singing this song when?| +|08/01/2022 03:53:56| |JUST LIKE ME!| +|08/01/2022 03:53:56| |SIEG HEIL VIKTORIA| +|08/01/2022 03:53:59| |UND DAS HEIST | +|08/01/2022 03:54:00| |SIEG HEIL| +|08/01/2022 03:54:01| |gamers meet rl| +|08/01/2022 03:54:03| |SIEG HEIL| +|08/01/2022 03:54:04| |exterminate the gamers| +|08/01/2022 03:54:04| UTE +|08/01/2022 03:54:05| |GAME OVER| +|08/01/2022 03:54:05| EEEEEEEERIKA +|08/01/2022 03:54:06| |DIE FAHNE HOCH| +|08/01/2022 03:54:07| |PUT THAT BITCH IN REVERSE AND DUMP THAT CLUTCH| +|08/01/2022 03:54:07| |gamer girls just saved oorari right here| +|08/01/2022 03:54:07| |wait did they never practice driving before the match?| +|08/01/2022 03:54:08| USEFUL +|08/01/2022 03:54:08| |Its over for Nishitzumi| +|08/01/2022 03:54:09| |GAMERS SAY NO TO WANI| +|08/01/2022 03:54:10| |gamer bros... its over...| +|08/01/2022 03:54:11| |WORST TEAM = GONE| +|08/01/2022 03:54:11| |GAYMERS SAVE THE DAY| +|08/01/2022 03:54:11| SAVED +|08/01/2022 03:54:12| |THEY SAVED THE DAY| +|08/01/2022 03:54:13| |NONONOONON GAMERBROS.....| +|08/01/2022 03:54:13| |I love marches so much| +|08/01/2022 03:54:13| |GAMERS FUCKING JOBBED| +|08/01/2022 03:54:13| |WE DID IT GAYMERS!!| +|08/01/2022 03:54:13| |GAMERS NO| +|08/01/2022 03:54:13| totsugeki? +|08/01/2022 03:54:14| |SIEG KMM. SIEG MAHO| +|08/01/2022 03:54:15| 卐卐卐卐卐卐卐卐卐卐卐 +|08/01/2022 03:54:15| |SIEGU HEIL| +|08/01/2022 03:54:16| |unintentional sacrifice| +|08/01/2022 03:54:17| |I'M HEILING SO HARD RIGHT NOW | +|08/01/2022 03:54:17| |GAYMER FUEL| +|08/01/2022 03:54:18| |/fitv/ with the save| +|08/01/2022 03:54:19| o/ +|08/01/2022 03:54:20| BTFO +|08/01/2022 03:54:20| |GAMER GIRLS....| +|08/01/2022 03:54:21| |took one for the team| +|08/01/2022 03:54:22| |cum loaded| +|08/01/2022 03:54:24| |pro gammer move| +|08/01/2022 03:54:25| |Wapanese tank blown apart| +|08/01/2022 03:54:26| |Gamers absolutely blown the fuck out| +|08/01/2022 03:54:27| |>gamers job, as usual| +|08/01/2022 03:54:28| |nice job jobbing| +|08/01/2022 03:54:32| |can you heil with your dick?| +|08/01/2022 03:54:33| |NO TRANSMISSION GANG| +|08/01/2022 03:54:36| |HEIL SCHWARZWALDSPITZE!| +|08/01/2022 03:54:37| |stupid wani| +|08/01/2022 03:54:37| |GAME... OVER| +|08/01/2022 03:54:38| |I LOVE ERIKA| +|08/01/2022 03:54:38| |"Japanese" "Tanks"| +|08/01/2022 03:54:39| |GAMERS RISE UP| +|08/01/2022 03:54:39| Hu +|08/01/2022 03:54:40| \o +|08/01/2022 03:54:43| |the gamers should be used to nazis BTFOing them online already so its fine| +|08/01/2022 03:54:43| |they blocked for miho, its ok| +|08/01/2022 03:54:43| |DUMB WANI| +|08/01/2022 03:54:44| |Gamers will rise again| +|08/01/2022 03:54:46| |TL note: "It's a fierce battle" means 'it is a fierce battle'| +|08/01/2022 03:54:50| |NAOMI IS SO FUCKING UGLY| +|08/01/2022 03:54:52| |Japanese """""""""tanks""""""""""| +|08/01/2022 03:54:54| |thanks tl kun| +|08/01/2022 03:54:55| |thanks tl | +|08/01/2022 03:54:55| |GAME OVER| +|08/01/2022 03:54:55| diejob +|08/01/2022 03:54:56| |It isn't jobbing if it's your first time. It's just losing| +|08/01/2022 03:54:57| |pls describe battle| +|08/01/2022 03:54:58| |GEEMU OBAH| +|08/01/2022 03:54:58| a-okay +|08/01/2022 03:54:59| |YOU TAKE THAT BACK| +|08/01/2022 03:55:00| |MOU GE-MU O-BA| +|08/01/2022 03:55:04| |Are you okay, /a/?| +|08/01/2022 03:55:05| |NAOMI > ALL| +|08/01/2022 03:55:07| |I WILL NOT TAKE IT BACK| +|08/01/2022 03:55:11| |GAME OVER YEAAAAAAAAHHHHH| +|08/01/2022 03:55:11| |>Imagine not killing the nerds| +|08/01/2022 03:55:12| |wowie! panthers!| +|08/01/2022 03:55:12| |Should have bought the Battle Pass| +|08/01/2022 03:55:12| |FUCK U| +|08/01/2022 03:55:13| |oh yeah the tanks| +|08/01/2022 03:55:13| SMOKEY +|08/01/2022 03:55:13| |Dear god she's lost an eye!| +|08/01/2022 03:55:13| smokey +|08/01/2022 03:55:14| |buster wolf?| +|08/01/2022 03:55:15| |LITERALLY RUINED THE WHOLE SHOW| +|08/01/2022 03:55:16| |smokey smokes| +|08/01/2022 03:55:18| |>king tinger spam| +|08/01/2022 03:55:20| SMOKEY +|08/01/2022 03:55:20| |FEST STEHT UND TREU DI WACHT DIE WACHT AM RHEIN| +|08/01/2022 03:55:22| |Now I'll proceed to shotgun this glass of vodka pray for me anons| +|08/01/2022 03:55:22| |Smoke em if you got em| +|08/01/2022 03:55:23| |shut up nakkun| +|08/01/2022 03:55:23| |ONLY YOU CAN PREVER SMOKE FIRES| +|08/01/2022 03:55:23| |BRAVO RELIC| +|08/01/2022 03:55:23| |Speaking or, smoke break when=| +|08/01/2022 03:55:24| |moko moko | +|08/01/2022 03:55:24| |MOKUMOKU YOI| +|08/01/2022 03:55:25| |COULD DUCE GET FERRARI ENGINES?| +|08/01/2022 03:55:26| |smokey joe| +|08/01/2022 03:55:26| |mokumoku yaoi| +|08/01/2022 03:55:26| |MOKU MOKU YO| +|08/01/2022 03:55:27| IKZ +|08/01/2022 03:55:28| |moku moku yoi| +|08/01/2022 03:55:31| |operation smoke key| +|08/01/2022 03:55:31| MOKUMOKU +|08/01/2022 03:55:32| |MOKU MOKU| +|08/01/2022 03:55:33| GASSSSSSSSSSSSSSSSSSSS +|08/01/2022 03:55:33| |SHID AND FARD| +|08/01/2022 03:55:34| もくもく +|08/01/2022 03:55:35| |MOKU MOKU| +|08/01/2022 03:55:36| |MOKU MOKU HAJIME| +|08/01/2022 03:55:37| |Dude weed lmao| +|08/01/2022 03:55:38| |moku moku yoi!| +|08/01/2022 03:55:38| GASSED +|08/01/2022 03:55:38| |MOKU MOKU| +|08/01/2022 03:55:38| |moku moku| +|08/01/2022 03:55:40| |MOKU MOKU| +|08/01/2022 03:55:40| BRAAAAAAP +|08/01/2022 03:55:41| |Gas the j| +|08/01/2022 03:55:41| |WO ALLE STRASSEN ENDEN| +|08/01/2022 03:55:43| |420 | +|08/01/2022 03:55:43| |blaze it| +|08/01/2022 03:55:45| DUDE +|08/01/2022 03:55:47| |ROLLIN COAL| +|08/01/2022 03:55:49| |GAS THEM| +|08/01/2022 03:55:49| |>popping smoke in an open field| +|08/01/2022 03:55:50| |Mustard Gas| +|08/01/2022 03:55:50| |MOKU MOKU| +|08/01/2022 03:55:50| |SHUT UP WANI| +|08/01/2022 03:55:52| |DUDE WEED| +|08/01/2022 03:55:52| もくもくすごい +|08/01/2022 03:55:52| |is that legal?| +|08/01/2022 03:55:53| |r u doubting the nishizumi erika????| +|08/01/2022 03:55:54| |ZEHNTAUSEND MAN| +|08/01/2022 03:55:55| |ERIKA o/| +|08/01/2022 03:55:56| |dumb wani| +|08/01/2022 03:55:57| |zyklon b | +|08/01/2022 03:55:57| |CONSERVE YOUR AMMO| +|08/01/2022 03:55:58| |>shooting tanks| +|08/01/2022 03:56:00| |can guppies even run out of shells?| +|08/01/2022 03:56:01| MAHoo~ +|08/01/2022 03:56:02| |tiger II's are so sexy| +|08/01/2022 03:56:03| |The alligator fears the smoke| +|08/01/2022 03:56:04| |>stray round hits Miho| +|08/01/2022 03:56:04| |Smart Maho and stupid Wani| +|08/01/2022 03:56:05| |Erika is so bad at this| +|08/01/2022 03:56:05| |dumb wani| +|08/01/2022 03:56:06| YES +|08/01/2022 03:56:06| |machine guns are kino| +|08/01/2022 03:56:09| |I want Erika to dominate me completely| +|08/01/2022 03:56:10| |panzer turrets are like penises| +|08/01/2022 03:56:12| |NINJA SUREYA DESU| +|08/01/2022 03:56:13| |yes but don't worry about shells| +|08/01/2022 03:56:13| yaaas +|08/01/2022 03:56:14| >Porsche +|08/01/2022 03:56:15| |PEKOE CUTE| +|08/01/2022 03:56:16| |has anyone ever run out of shells?| +|08/01/2022 03:56:17| ????????????????????? +|08/01/2022 03:56:17| |STFU SLAG| +|08/01/2022 03:56:18| ???????????? +|08/01/2022 03:56:18| |they have a porsche tiger brehs| +|08/01/2022 03:56:18| ????????????????????????????????????? +|08/01/2022 03:56:19| bongs +|08/01/2022 03:56:19| ??????????????????????????????? +|08/01/2022 03:56:20| ???????????????????????????????? +|08/01/2022 03:56:20| |SHUT UP SLAG| +|08/01/2022 03:56:20| |so True darj| +|08/01/2022 03:56:22| ?????????????????????????????? +|08/01/2022 03:56:22| |ALL IS FAIR IN LOVE AND WAR| +|08/01/2022 03:56:22| |WHO ASKED???| +|08/01/2022 03:56:23| |>Smokescreens are for powergamers| +|08/01/2022 03:56:23| ??????????????????????????? +|08/01/2022 03:56:23| |STFU DARJEELING| +|08/01/2022 03:56:23| |AHHHHH ENGRISH| +|08/01/2022 03:56:24| |SHUT UP SLAG| +|08/01/2022 03:56:24| |ORU IS | +|08/01/2022 03:56:25| ???????????????????????? +|08/01/2022 03:56:25| |You said that one ALREADY!| +|08/01/2022 03:56:25| |I want to dominate Erika completely | +|08/01/2022 03:56:25| |what did darj just say? I dont speak english| +|08/01/2022 03:56:25| |But it's not war?| +|08/01/2022 03:56:26| >bongs +|08/01/2022 03:56:26| ????? +|08/01/2022 03:56:27| |shut upppp| +|08/01/2022 03:56:27| ???????????????''' +|08/01/2022 03:56:27| |SPEAK ENGLISH PLEASE| +|08/01/2022 03:56:27| |in english, poindexter| +|08/01/2022 03:56:27| |THE FUCK WAS THAT DUMB SLAG| +|08/01/2022 03:56:28| |DARJEELING SHUT THE FUCK UP| +|08/01/2022 03:56:29| |thick tank| +|08/01/2022 03:56:30| |WHAT DID SHE MEAN BY THIS?| +|08/01/2022 03:56:30| |Finally a real proverb| +|08/01/2022 03:56:31| 3head +|08/01/2022 03:56:32| |Have you heard this saying?| +|08/01/2022 03:56:33| |*bomb civilians*| +|08/01/2022 03:56:34| |My cas come to watch| +|08/01/2022 03:56:34| FAT +|08/01/2022 03:56:35| |WHAT THE FUCK DOES THAT MEAN| +|08/01/2022 03:56:36| ????????????????????????? +|08/01/2022 03:56:36| |to be fair that is a real saying| +|08/01/2022 03:56:37| |kek we towed it| +|08/01/2022 03:56:38| |WHAT THE FUCKS WAS THAT JUST NOW DUMB SLAG| +|08/01/2022 03:56:38| |Tiger leave cover to chase the enemy its fury all over again| +|08/01/2022 03:56:39| FAT +|08/01/2022 03:56:39| ????????????????? +|08/01/2022 03:56:39| |WHAT DID SHE MEAN BY THIS| +|08/01/2022 03:56:41| CUTE +|08/01/2022 03:56:41| cute +|08/01/2022 03:56:43| *Cat +|08/01/2022 03:56:43| |no one understands English, stop speaking it Darj| +|08/01/2022 03:56:44| |KAYUSHA CUNNY ON MY NECK| +|08/01/2022 03:56:44| |SHUT THE FUCK UP BONG| +|08/01/2022 03:56:46| |CUTE KATYU| +|08/01/2022 03:56:46| |can we get a translator's note on "All is fair in love and war" ?| +|08/01/2022 03:56:46| |poor time to masturbate, katyusha| +|08/01/2022 03:56:46| |katyushas thighs| +|08/01/2022 03:56:46| かわいい +|08/01/2022 03:56:46| |>Fat shaming a tank| +|08/01/2022 03:56:46| CUTE +|08/01/2022 03:56:48| CUTE +|08/01/2022 03:56:48| |oh god my final drive| +|08/01/2022 03:56:48| CUTE +|08/01/2022 03:56:49| |THE POWER OF FRIENDSIHP| +|08/01/2022 03:56:49| thighs +|08/01/2022 03:56:49| |just fire backwards to propel itself| +|08/01/2022 03:56:50| Cute! +|08/01/2022 03:56:50| CUTE +|08/01/2022 03:56:50| |ARR IZ FAYYA IN RUBU ANDO WAAA| +|08/01/2022 03:56:50| TEAMWORK +|08/01/2022 03:56:51| KUTETUSHA +|08/01/2022 03:56:53| |PROSHU TIGA| +|08/01/2022 03:56:53| |God I wish that were me| +|08/01/2022 03:56:53| CUTEEEE +|08/01/2022 03:56:54| midget +|08/01/2022 03:56:54| cute +|08/01/2022 03:56:56| |are the smoke launchers legal?| +|08/01/2022 03:56:56| OST +|08/01/2022 03:56:56| |>russian loli will never fuck the back of your head| +|08/01/2022 03:56:59| buffering +|08/01/2022 03:57:00| thighs +|08/01/2022 03:57:01| |kay and darj speak engrish to eachother| +|08/01/2022 03:57:03| CUTE +|08/01/2022 03:57:04| buffers +|08/01/2022 03:57:05| |are we the baddies?| +|08/01/2022 03:57:09| |STUPID DUCKS AND THEIR BUFFERING| +|08/01/2022 03:57:09| GAS +|08/01/2022 03:57:09| |from what| +|08/01/2022 03:57:09| |LETS ROOL SOME COAL| +|08/01/2022 03:57:09| |pre-recorded buffering again| +|08/01/2022 03:57:10| butt +|08/01/2022 03:57:11| BUTTHURT +|08/01/2022 03:57:12| |there is this saying about pulling a tiger up a hill| +|08/01/2022 03:57:19| |my hands cramp from typing| +|08/01/2022 03:57:19| |why does her butt hurt?| +|08/01/2022 03:57:22| |Her butt hurts? From what?| +|08/01/2022 03:57:24| BUTT +|08/01/2022 03:57:26| |(TL's note: "Delinquents" means "niggers")| +|08/01/2022 03:57:27| |you know| +|08/01/2022 03:57:27| costanza.jpg +|08/01/2022 03:57:28| |from butt secks| +|08/01/2022 03:57:28| |boko map| +|08/01/2022 03:57:29| BOKO +|08/01/2022 03:57:29| |>my feet hurt | +|08/01/2022 03:57:30| |I now understand the Wani hate. I forgot she was like this in the show| +|08/01/2022 03:57:36| |I can';t ype anymore| +|08/01/2022 03:57:37| |thanks tl kun| +|08/01/2022 03:57:39| |tl:UTE means "fire"| +|08/01/2022 03:57:40| FEUER +|08/01/2022 03:57:44| |its ok because charcter development| +|08/01/2022 03:57:45| |>this tank is cramped| +|08/01/2022 03:57:45| |shut up darj| +|08/01/2022 03:57:46| boko +|08/01/2022 03:57:46| |Erika redemption arc soon | +|08/01/2022 03:57:47| TTTTTTTEEEEEEEEEEEEEEEE +|08/01/2022 03:57:48| |bro what is this video quality 360p?| +|08/01/2022 03:57:50| |UTE MEANS UTE| +|08/01/2022 03:57:51| ??????????????????????? +|08/01/2022 03:57:51| |SHUT UP DUMB SLAG| +|08/01/2022 03:57:52| |godlike ost here| +|08/01/2022 03:57:53| |shiho is the biggest bitch ever| +|08/01/2022 03:57:55| |CUTE PEKOE| +|08/01/2022 03:57:56| HETZER +|08/01/2022 03:57:57| |cute peko blush| +|08/01/2022 03:57:57| |tl note: "ute" means 撃て| +|08/01/2022 03:57:58| |YES DARJEELING NOW STFU| +|08/01/2022 03:57:58| |hetzer gonna hetz| +|08/01/2022 03:57:59| |UTE UTE| +|08/01/2022 03:58:01| |REMINDS ME OF A SAYING| +|08/01/2022 03:58:01| |CHAD HETZER| +|08/01/2022 03:58:02| |Shyut up darjeerling, just be tea agaiun| +|08/01/2022 03:58:03| |SEX WITH ANZU| +|08/01/2022 03:58:07| |TL Note: Hetzter means tank| +|08/01/2022 03:58:09| |WHY DIDN'T THEY JUST SHOOT THE FLAG TANK?????| +|08/01/2022 03:58:09| flat +|08/01/2022 03:58:13| |Momo should stick to loading| +|08/01/2022 03:58:14| |pekoe save gloriana from this crazy woman| +|08/01/2022 03:58:18| |Why is Kaicho so powerful| +|08/01/2022 03:58:20| |SEX WITH AN ANIME GIRL| +|08/01/2022 03:58:20| |I love reloading animations| +|08/01/2022 03:58:20| |they can't pen it| +|08/01/2022 03:58:21| |ANNO CHIBI| +|08/01/2022 03:58:26| |TL Note: Panzer means sensha| +|08/01/2022 03:58:28| |TL Note: "Anzu" means "SEX"| +|08/01/2022 03:58:29| |when does pekoe choke darj in her sleep| +|08/01/2022 03:58:29| |Pekoe best loader| +|08/01/2022 03:58:30| |THEIR GUN CANT PENETRATE IT RETARD| +|08/01/2022 03:58:30| |CZECH THIS OUT| +|08/01/2022 03:58:33| |THANKS TL| +|08/01/2022 03:58:34| |thanks tl| +|08/01/2022 03:58:37| |why did she take out the flag tank?| +|08/01/2022 03:58:37| |THANKS TLS| +|08/01/2022 03:58:40| |when does pekoe choke darj in her sleep| +|08/01/2022 03:58:41| |HILL SCENE!| +|08/01/2022 03:58:44| |where have I seen this scene before?| +|08/01/2022 03:58:45| |pravda copied this| +|08/01/2022 03:58:46| ute +|08/01/2022 03:58:49| |TL Note: "Flat" = "perfect"| +|08/01/2022 03:58:51| |lamo look at that tank with the tiny little gun lamo| +|08/01/2022 03:58:51| |>Imagine a hill defeating superiour German engineering| +|08/01/2022 03:58:52| |everynight but darj isnt sleeping| +|08/01/2022 03:58:52| |STAND YOUR GROUND| +|08/01/2022 03:58:54| |image fagmiliar| +|08/01/2022 03:58:57| |what happened to move foward?| +|08/01/2022 03:58:58| |VOLLEY FIRE| +|08/01/2022 03:59:04| |imagine trying to win against the nishizumi style| +|08/01/2022 03:59:06| |*transmission bursts into flames*| +|08/01/2022 03:59:07| |ah shit, here we go again| +|08/01/2022 03:59:07| |looks familiar....| +|08/01/2022 03:59:09| |TL Note: Schneizel just made an illegal move in chess, so it doesn't make sense that he could say checkmate, he might possibly| +|08/01/2022 03:59:11| |russians would have simply dug out the hill| +|08/01/2022 03:59:12| |10 min river scene coming up| +|08/01/2022 03:59:13| |OB'S STURMT ODER SCHNEIT| +|08/01/2022 03:59:14| |there is no maus to snipe| +|08/01/2022 03:59:15| |they're no match for the nishizumi style| +|08/01/2022 03:59:15| |ALRIGHT EVERYONE LET'S DIRECTLY ASSAULT A PREPARED POSITION| +|08/01/2022 03:59:16| FEUER +|08/01/2022 03:59:20| |TL Note: Ute is a geman feminine name| +|08/01/2022 03:59:22| |PEW PEW| +|08/01/2022 03:59:27| |where is the maus right now?| +|08/01/2022 03:59:29| |thanks tl| +|08/01/2022 03:59:30| |Transmisson: my time has come| +|08/01/2022 03:59:30| |>cut off copypasta| +|08/01/2022 03:59:34| |in transit| +|08/01/2022 03:59:35| |TL NOTE: ute is an australian truck| +|08/01/2022 03:59:37| |ES BRAUST UNSER PANZER IM STURMWIND DAHIN| +|08/01/2022 03:59:38| |just like kursk boys| +|08/01/2022 03:59:39| |Ob die Sonne uns lacht| +|08/01/2022 03:59:40| |STUG STUG STUG STUG| +|08/01/2022 03:59:43| |OH NO GERMAN BROS| +|08/01/2022 03:59:45| |I HATE THE ANTI MIHO| +|08/01/2022 03:59:47| |TL Note: Panzerlied means Erika| +|08/01/2022 03:59:54| |TL note; UTE is my dick splerginh| +|08/01/2022 03:59:56| KITAAAAAAAAA +|08/01/2022 03:59:56| |IT'S OVER MAHO I HAVE THE HIGH GROUND| +|08/01/2022 03:59:57| |hetzer no oniichan mitaina yastsu| +|08/01/2022 03:59:57| |FUCKING DEAD| +|08/01/2022 03:59:59| |I wanna penetrate Yukaris rear armor with my KwK L/70 if you know what I mean| +|08/01/2022 04:00:00| |the fuck is a stuart going to do against a king tiger| +|08/01/2022 04:00:02| |panzerlied means that u cant trust a tank| +|08/01/2022 04:00:03| KITAAAAA +|08/01/2022 04:00:03| |tl note: maho is my wife| +|08/01/2022 04:00:03| |jagdbros... its over...| +|08/01/2022 04:00:06| |NIPPON ICHI| +|08/01/2022 04:00:07| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH +|08/01/2022 04:00:07| Shinzobubro +|08/01/2022 04:00:07| |Tl note: I'm retaded| +|08/01/2022 04:00:08| | ITS OVER| +|08/01/2022 04:00:09| ENTER +|08/01/2022 04:00:11| JAGDTIGER +|08/01/2022 04:00:12| |NIPPON ICHI| +|08/01/2022 04:00:12| KITAAAAAAAAAAAAA +|08/01/2022 04:00:12| ENTER +|08/01/2022 04:00:12| ownd +|08/01/2022 04:00:12| NIPPONICHI +|08/01/2022 04:00:12| |big boy| +|08/01/2022 04:00:13| MAHO +|08/01/2022 04:00:13| ENTER +|08/01/2022 04:00:14| ENTER +|08/01/2022 04:00:15| ENTER +|08/01/2022 04:00:15| ENTER +|08/01/2022 04:00:15| |OH NO| +|08/01/2022 04:00:16| |NICE MISS| +|08/01/2022 04:00:16| enter +|08/01/2022 04:00:18| Uhoh +|08/01/2022 04:00:18| |Where were they even hiding this thing| +|08/01/2022 04:00:18| |FAT TANK| +|08/01/2022 04:00:19| |JAGDTIGER A SHIT| +|08/01/2022 04:00:19| |JEW SENSHA| +|08/01/2022 04:00:19| |OH SHIT ITS THE JAGDTIGER| +|08/01/2022 04:00:20| |Yagdo tea gar| +|08/01/2022 04:00:21| |isn't the jagdtiger kinda shit?| +|08/01/2022 04:00:21| |TL note: I'm wasted| +|08/01/2022 04:00:21| |transmission explodes| +|08/01/2022 04:00:21| |NIPPON ICHIIIIIIIIIIIII| +|08/01/2022 04:00:22| folded +|08/01/2022 04:00:22| |That'a a big tank| +|08/01/2022 04:00:25| |ENTAAA ENTAAA JADGTIGER| +|08/01/2022 04:00:30| |not the jagdnigger! anything but that!| +|08/01/2022 04:00:31| |It's Saypri level fat| +|08/01/2022 04:00:32| |they were hiding it off screen| +|08/01/2022 04:00:32| F +|08/01/2022 04:00:35| |>no casualties| +|08/01/2022 04:00:35| |Aim for the tracks.| +|08/01/2022 04:00:41| Saypri... +|08/01/2022 04:00:44| |LIEB VATERLAND MAGST RUHIG SEIN| +|08/01/2022 04:00:46| |like retards?| +|08/01/2022 04:00:46| |>champions fight by spamming heavy tanks| +|08/01/2022 04:00:47| |>jew sensha| +|08/01/2022 04:00:48| |Fucking pay to win| +|08/01/2022 04:00:50| GUTS +|08/01/2022 04:00:51| |they havent hit shit| +|08/01/2022 04:00:54| |lovely smoke effects on the explosions | +|08/01/2022 04:00:55| >champions +|08/01/2022 04:00:55| |What does the Type 89 even hope to achieve?| +|08/01/2022 04:01:01| |GANBARE STUG| +|08/01/2022 04:01:02| |nigger forest| +|08/01/2022 04:01:02| |DEUS VULT| +|08/01/2022 04:01:03| SASUGA +|08/01/2022 04:01:03| |Just load gold ammo | +|08/01/2022 04:01:03| |WE GOT TOO COCKY| +|08/01/2022 04:01:03| |pay2win nigger forest| +|08/01/2022 04:01:03| Ottomanbros... +|08/01/2022 04:01:04| |history gang rise up| +|08/01/2022 04:01:07| |DEUS VULT| +|08/01/2022 04:01:14| |>lazy fucking stu counicl| +|08/01/2022 04:01:15| ANzu +|08/01/2022 04:01:20| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:01:22| /his/ +|08/01/2022 04:01:23| |just chillin| +|08/01/2022 04:01:24| |Yukari a cute| +|08/01/2022 04:01:25| |THANKS TL| +|08/01/2022 04:01:25| |thanks tl| +|08/01/2022 04:01:26| |hull down| +|08/01/2022 04:01:27| anzu +|08/01/2022 04:01:29| |Anzu means UOOOOOOOOOOOOHHHHHHHHH| +|08/01/2022 04:01:29| |18 > 7, How is this even legal| +|08/01/2022 04:01:31| |Yukari is so cute| +|08/01/2022 04:01:33| |OUR THING| +|08/01/2022 04:01:33| BAITER +|08/01/2022 04:01:35| >bait +|08/01/2022 04:01:35| |master baiter| +|08/01/2022 04:01:36| BAIT! +|08/01/2022 04:01:36| >BAIT +|08/01/2022 04:01:37| |THIS IS BAIT| +|08/01/2022 04:01:38| BAITED +|08/01/2022 04:01:38| BAITER +|08/01/2022 04:01:38| BAITER +|08/01/2022 04:01:39| |This is Bait| +|08/01/2022 04:01:40| |THIS IS BAIT| +|08/01/2022 04:01:41| BAITER +|08/01/2022 04:01:41| OST +|08/01/2022 04:01:41| |this is bait| +|08/01/2022 04:01:42| HETZER +|08/01/2022 04:01:43| |lesser Baiters| +|08/01/2022 04:01:43| |I'm baitin'| +|08/01/2022 04:01:44| >bait +|08/01/2022 04:01:44| OST +|08/01/2022 04:01:44| Masterb8 +|08/01/2022 04:01:44| OST +|08/01/2022 04:01:45| |heavy tanks legit useless in senshado just shoot the track| +|08/01/2022 04:01:45| |>baits their whole team| +|08/01/2022 04:01:45| b8 +|08/01/2022 04:01:46| |master baiter| +|08/01/2022 04:01:47| |THIS LOOKS LIKE A JOB FOR ME| +|08/01/2022 04:01:47| |cute extra| +|08/01/2022 04:01:47| |Choot them in the anoos| +|08/01/2022 04:01:49| |THE THING| +|08/01/2022 04:01:49| |THE MASTER BAITER| +|08/01/2022 04:01:50| |they're going to use THAT?| +|08/01/2022 04:01:50| |UNLIMITED BAIT WORKS| +|08/01/2022 04:01:50| THAT +|08/01/2022 04:01:51| |GLORIOUS CZECHNOLOGY| +|08/01/2022 04:01:52| |MASTER BAITING WITH ANZU| +|08/01/2022 04:01:53| |they're about to do THAT| +|08/01/2022 04:01:54| JAGDPANTHER-CHAN! +|08/01/2022 04:01:54| |its not even bait at this point| +|08/01/2022 04:01:55| jobbed +|08/01/2022 04:01:55| |BUTT SEGGS BUTT SEGGS| +|08/01/2022 04:01:55| bait +|08/01/2022 04:01:56| *that* +|08/01/2022 04:01:56| |this is bait| +|08/01/2022 04:01:56| owned +|08/01/2022 04:01:56| |GOT EM| +|08/01/2022 04:01:57| |GONNA HETZ| +|08/01/2022 04:01:57| |NOT AGAIN| +|08/01/2022 04:01:57| Baited +|08/01/2022 04:01:58| |SEE YOU LATER NERDS| +|08/01/2022 04:01:58| KONOOOOOO +|08/01/2022 04:01:58| |poor Emi| +|08/01/2022 04:02:00| cucked +|08/01/2022 04:02:00| |fixed turret monkey| +|08/01/2022 04:02:01| TROLLLED +|08/01/2022 04:02:01| |JAGPANTHER GIRL BEST GIRL| +|08/01/2022 04:02:01| |no name| +|08/01/2022 04:02:02| KONOOOOOOOOO +|08/01/2022 04:02:02| w +|08/01/2022 04:02:02| |Wow, czech out this asshole, who does he think he is| +|08/01/2022 04:02:03| |No not my cute german unnamed waifu| +|08/01/2022 04:02:03| |ez u mad| +|08/01/2022 04:02:04| TOTSUGEKI +|08/01/2022 04:02:04| TOTSUGEKI +|08/01/2022 04:02:05| |MOBILITY KILL LOL| +|08/01/2022 04:02:05| ANGERY +|08/01/2022 04:02:05| TOTSUGEKI +|08/01/2022 04:02:05| TOTSUGEKI +|08/01/2022 04:02:07| TOTSUGEKI +|08/01/2022 04:02:07| >TRACKED +|08/01/2022 04:02:07| TOTSUGEKI! +|08/01/2022 04:02:08| TOTSUGEKI +|08/01/2022 04:02:08| |Nishi style| +|08/01/2022 04:02:09| TOTSUGEKI +|08/01/2022 04:02:09| TOTSUGEKI +|08/01/2022 04:02:09| |krauts btfo| +|08/01/2022 04:02:10| TOTSUGEKI +|08/01/2022 04:02:11| |SHE MAD| +|08/01/2022 04:02:11| TOTSUGEKI +|08/01/2022 04:02:11| TOOOOOOOOOOOOOTSSSSUUUUUUUUUUUUUGEEEEEEEEEKIIIIIIIIIIIIIIIIIII +|08/01/2022 04:02:13| TOTSUGEKI +|08/01/2022 04:02:13| |HIT THEIR ENGINES| +|08/01/2022 04:02:14| TOTSUGEKI +|08/01/2022 04:02:14| |T O T S U G E K I| +|08/01/2022 04:02:14| 突撃 +|08/01/2022 04:02:14| |Did someone jsut say Totsugeki?| +|08/01/2022 04:02:17| TOTSUGEKI +|08/01/2022 04:02:17| |TOTSUGEKI!!!!!!!!!!!!!!! IT ALWAYS WORKS| +|08/01/2022 04:02:18| TOTSUGEKI +|08/01/2022 04:02:20| |Anzu about to ram some ass| +|08/01/2022 04:02:20| TOTSUGEKI +|08/01/2022 04:02:21| TOTSUGEKI +|08/01/2022 04:02:22| PENETRATED +|08/01/2022 04:02:23| |What mango?| +|08/01/2022 04:02:24| CHAD +|08/01/2022 04:02:24| GIW +|08/01/2022 04:02:25| GOD +|08/01/2022 04:02:27| |'cha looking at?| +|08/01/2022 04:02:28| |TO TSU GE KI| +|08/01/2022 04:02:30| >penetrated +|08/01/2022 04:02:33| |I want to penetrate Maho's line| +|08/01/2022 04:02:33| |hello fellow krauts| +|08/01/2022 04:02:34| |Hetzer gonnaq hetzer| +|08/01/2022 04:02:34| |the panther commander is seriously cute| +|08/01/2022 04:02:36| |BODY BLOCKS | +|08/01/2022 04:02:36| BAITED +|08/01/2022 04:02:39| |HETZERS GONNA HETZ| +|08/01/2022 04:02:41| |TENNOHEIKA BANZIA!!!| +|08/01/2022 04:02:42| |kicking girl best girl| +|08/01/2022 04:02:42| |tfw no gun depression| +|08/01/2022 04:02:43| |TOP TIER STRATS| +|08/01/2022 04:02:43| KICK +|08/01/2022 04:02:46| |FAT FUCKING TANKS CAN'T GET UP HILL| +|08/01/2022 04:02:47| |why didn't they get a faster tank to do the baiting| +|08/01/2022 04:02:51| baited +|08/01/2022 04:02:51| |is this the nishizumi style?| +|08/01/2022 04:02:51| |ANZU PENETRATING ME FROM BEHIND| +|08/01/2022 04:02:54| CUTEYUSHA +|08/01/2022 04:02:55| |Nishizumi style a shit| +|08/01/2022 04:02:55| CUUUUUUUUUUUUUTE +|08/01/2022 04:02:57| |CUTE | +|08/01/2022 04:02:58| nishizumibros +|08/01/2022 04:02:58| |katyushas thighs!| +|08/01/2022 04:02:58| cute +|08/01/2022 04:02:59| |StuGIII Crew are my wives| +|08/01/2022 04:03:00| |ANZU PENETRATING STYLE| +|08/01/2022 04:03:01| |cute yusha| +|08/01/2022 04:03:02| baited +|08/01/2022 04:03:03| CUTE +|08/01/2022 04:03:04| かわいいすぎる +|08/01/2022 04:03:04| thighs +|08/01/2022 04:03:05| |MY LITTLE STALIN CAN'T BE THIS CUTE| +|08/01/2022 04:03:06| cute +|08/01/2022 04:03:07| KYUTEUSHA +|08/01/2022 04:03:08| forehead! +|08/01/2022 04:03:08| |What is the Nishizumi style?| +|08/01/2022 04:03:09| midget +|08/01/2022 04:03:14| |USA USA USA| +|08/01/2022 04:03:15| |does katyusha get horny rubbing on Nonna like that?| +|08/01/2022 04:03:16| |cute jobbers| +|08/01/2022 04:03:17| |STFU ALISA| +|08/01/2022 04:03:18| |was the real Stalin this cute too?| +|08/01/2022 04:03:18| |smart kay| +|08/01/2022 04:03:19| かわいいよね~ +|08/01/2022 04:03:20| |KAY READ THE MANGA| +|08/01/2022 04:03:24| |absolute state| +|08/01/2022 04:03:26| |ONE TRICK PONIES| +|08/01/2022 04:03:26| |Kay is smart| +|08/01/2022 04:03:26| |nonna is the one that gets horny| +|08/01/2022 04:03:27| |she rubs on nonna because it makes her horny| +|08/01/2022 04:03:28| |Nishizumi Style is when you get fucked because your enemy is on a hill| +|08/01/2022 04:03:30| |smart kay| +|08/01/2022 04:03:30| |The primary function of Nonna is to be rubbed| +|08/01/2022 04:03:31| F +|08/01/2022 04:03:35| |What happening /a/ why are they running circle around us| +|08/01/2022 04:03:38| |so this is the nishizumi style| +|08/01/2022 04:03:41| |tonk CHARGGGGGGGGGGGGGE| +|08/01/2022 04:03:46| |Nishizumi Style is letting your comrades drown| +|08/01/2022 04:03:46| sayonara +|08/01/2022 04:03:48| |How does that even work| +|08/01/2022 04:03:50| TOTSUGEKI! +|08/01/2022 04:03:53| |GAS GAS GAS| +|08/01/2022 04:03:53| RICHOCHET +|08/01/2022 04:03:53| |FUCKING BULLSHIT RICHOCET| +|08/01/2022 04:03:54| |So this is the power of frontal assaults on prepared positions| +|08/01/2022 04:03:54| |SAYONARA TOTSTUGEKI| +|08/01/2022 04:03:55| TOTSUGEKI +|08/01/2022 04:03:59| |Yare yare~| +|08/01/2022 04:04:01| やれやれ +|08/01/2022 04:04:01| |yare yare| +|08/01/2022 04:04:01| |Why doesn't every tank just use smoke, seems like op strat| +|08/01/2022 04:04:01| yahoo +|08/01/2022 04:04:03| |Is the tigers armor really that strong?| +|08/01/2022 04:04:05| |yare yare| +|08/01/2022 04:04:06| |why did they dismount the hail again| +|08/01/2022 04:04:09| |>Plot armor| +|08/01/2022 04:04:10| |Nishizumi-style is the jobber's choice of tactic| +|08/01/2022 04:04:11| |PLOT ARMOR STYLE| +|08/01/2022 04:04:12| USA +|08/01/2022 04:04:13| CHOMP +|08/01/2022 04:04:13| |THERE IT IS| +|08/01/2022 04:04:14| |sun tzu: "so much for mountain warfare"| +|08/01/2022 04:04:17| |americans eating again| +|08/01/2022 04:04:18| |BEST TEAM| +|08/01/2022 04:04:20| |AMERILARDS EATING POPCORN| +|08/01/2022 04:04:20| |sun tzu said that.| +|08/01/2022 04:04:21| |>fat ameriburger shoveling corn into her face| +|08/01/2022 04:04:22| |MUH +100mm PLATE| +|08/01/2022 04:04:22| |NO HOSHINO | +|08/01/2022 04:04:23| |LEOPON BEST| +|08/01/2022 04:04:23| |WITNESS ME!| +|08/01/2022 04:04:23| |porsche tigerbros...| +|08/01/2022 04:04:23| F +|08/01/2022 04:04:25| |>live repairs| +|08/01/2022 04:04:27| qt +|08/01/2022 04:04:27| BASED\ +|08/01/2022 04:04:27| |My German tank can't possibly be this shit| +|08/01/2022 04:04:27| |>Carbon coated| +|08/01/2022 04:04:28| diajabou +|08/01/2022 04:04:28| |he really did| +|08/01/2022 04:04:28| |cute engineer| +|08/01/2022 04:04:29| |BASED /o/fags| +|08/01/2022 04:04:29| /o/ +|08/01/2022 04:04:30| |based /o/ team| +|08/01/2022 04:04:32| |CALM ME DOWN PLEASE| +|08/01/2022 04:04:33| SASUGA +|08/01/2022 04:04:33| CUTE +|08/01/2022 04:04:38| |God i whish i was that Leopon| +|08/01/2022 04:04:38| |Love this team| +|08/01/2022 04:04:40| |CARBON PLATING| +|08/01/2022 04:04:45| |Those better be asbestos gloves.| +|08/01/2022 04:04:46| TROLLED +|08/01/2022 04:04:47| |Sun Tzu: "never be saunders or anzio as they job"| +|08/01/2022 04:04:48| ! +|08/01/2022 04:04:49| |DUMB WANI| +|08/01/2022 04:04:49| CLANG +|08/01/2022 04:04:50| |german engineering moment| +|08/01/2022 04:04:50| |God dammit I knew we should have got the mishimoto| +|08/01/2022 04:04:51| |get fucked erika| +|08/01/2022 04:04:52| LMAO +|08/01/2022 04:04:55| |SUPERIOR GERMAN ENGINEERING| +|08/01/2022 04:04:56| |get dabbed on erishit| +|08/01/2022 04:04:58| |Erika BTFO| +|08/01/2022 04:04:59| |SASUGA RERA| +|08/01/2022 04:05:00| |LUCK | +|08/01/2022 04:05:02| |Fate conspires against Erika| +|08/01/2022 04:05:04| SEETHING +|08/01/2022 04:05:04| |girl has the best view of the house| +|08/01/2022 04:05:06| |>just the tracks| +|08/01/2022 04:05:07| |ERIKA SEETHING| +|08/01/2022 04:05:08| |STUCK WANI| +|08/01/2022 04:05:09| |[AUTISTIC SCREECHING]| +|08/01/2022 04:05:09| |NIPPON ICHI| +|08/01/2022 04:05:09| GERMANS +|08/01/2022 04:05:10| hitler-sama... +|08/01/2022 04:05:10| |Have you heard this saying?| +|08/01/2022 04:05:10| ` +|08/01/2022 04:05:11| |KONIGSTIGER TRANSMISSION | +|08/01/2022 04:05:11| |PEKOE CUTE| +|08/01/2022 04:05:12| >ducks! +|08/01/2022 04:05:12| Tantrum +|08/01/2022 04:05:13| SEETHING +|08/01/2022 04:05:13| |SEETHING WANI| +|08/01/2022 04:05:14| |Orai trash > famed German heavy tanks| +|08/01/2022 04:05:15| |CUTE WANI| +|08/01/2022 04:05:15| |wani spazzing out| +|08/01/2022 04:05:15| |I LOVE ERIKA| +|08/01/2022 04:05:16| |germans be like "yeah lets just have two rows of wheels"| +|08/01/2022 04:05:18| |COPE AND SEETHE YOU DUMB WANI| +|08/01/2022 04:05:18| |>GERMAN ENGINEERING| +|08/01/2022 04:05:20| PTSD +|08/01/2022 04:05:20| |FORD THE RIVER| +|08/01/2022 04:05:22| REEEEEEEE +|08/01/2022 04:05:22| |Erika is so cute when she's angry| +|08/01/2022 04:05:22| |waaay too long river scene| +|08/01/2022 04:05:25| |WANI IS VERY CUTE| +|08/01/2022 04:05:25| |get ready for moon jumps\| +|08/01/2022 04:05:26| |stomp stomp| +|08/01/2022 04:05:28| |HIGH IQ| +|08/01/2022 04:05:29| |DIE FAHNE HOCH| +|08/01/2022 04:05:29| |it was a lot more than two rows lol| +|08/01/2022 04:05:30| |Rolling that wheel like a bike wheel| +|08/01/2022 04:05:31| |kino time| +|08/01/2022 04:05:31| |SHE IS MY WIFE| +|08/01/2022 04:05:36| |water 2 stronk| +|08/01/2022 04:05:43| |M3 BROS I DON'T FEEL SO GOOD| +|08/01/2022 04:05:43| |Erika is so cute| +|08/01/2022 04:05:43| F +|08/01/2022 04:05:44| |>let me drown my teammates again| +|08/01/2022 04:05:44| |Even more Kino incoming| +|08/01/2022 04:05:46| |miho getting ptsd rn| +|08/01/2022 04:05:46| |ITS TIME FOR THE KINO| +|08/01/2022 04:05:47| RIP +|08/01/2022 04:05:48| |Time to FLYYYYYYYYYYYYY| +|08/01/2022 04:05:48| AAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:05:49| |i have lost litres of cum to Erika| +|08/01/2022 04:05:49| |was it 4 rows| +|08/01/2022 04:05:50| |time 2 JUMP!| +|08/01/2022 04:05:50| |WHAT ARE YOU DOING FRESHMEN| +|08/01/2022 04:05:50| BONK +|08/01/2022 04:05:50| |bros our heavy tank killer is STUCK| +|08/01/2022 04:05:51| AAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:05:51| |No... the bunnies...| +|08/01/2022 04:05:52| |Dumb bunnies| +|08/01/2022 04:05:53| |Sensha wo Kakeru Shoujo| +|08/01/2022 04:05:56| |imagine waterlogging a tank| +|08/01/2022 04:05:58| |i cant remember muh tiger drive system| +|08/01/2022 04:06:00| |Cinematic parallels to df3| +|08/01/2022 04:06:05| |>tfw when hydrolock your shitbox| +|08/01/2022 04:06:05| |TANK STUCK. PLEASE. I BEG YOU| +|08/01/2022 04:06:06| |USAGI SAN CHIIMU| +|08/01/2022 04:06:06| |>using american tanks| +|08/01/2022 04:06:07| |just leave them to die| +|08/01/2022 04:06:08| AZUSA! +|08/01/2022 04:06:08| |Who will rescue our previous bunnies?!!!!| +|08/01/2022 04:06:10| |i want to leave the usagis to drown and bask in the ambiance of their gargling screams| +|08/01/2022 04:06:10| |Just use them as meat shields| +|08/01/2022 04:06:10| |SAVE THE RABBITS| +|08/01/2022 04:06:13| >Usagis +|08/01/2022 04:06:13| |sasuga director san| +|08/01/2022 04:06:14| |rabbits are so useless| +|08/01/2022 04:06:15| |Bunnies in position for rape correction| +|08/01/2022 04:06:16| |YEah ditch em| +|08/01/2022 04:06:17| |just j out| +|08/01/2022 04:06:17| |>american engineeringh| +|08/01/2022 04:06:19| |DON'T LET THE BUNNIES DIE| +|08/01/2022 04:06:19| |useless cunny team| +|08/01/2022 04:06:23| PTSD +|08/01/2022 04:06:24| |>The entire crew of M3 Lee leaves the tank to engage enemy on foot| +|08/01/2022 04:06:25| >hand-twitch +|08/01/2022 04:06:25| PTSD +|08/01/2022 04:06:26| DRAMA +|08/01/2022 04:06:26| |lmao die| +|08/01/2022 04:06:26| |REMINDER: TANKS ARE NOT BOATS| +|08/01/2022 04:06:26| PTSD +|08/01/2022 04:06:27| KILL +|08/01/2022 04:06:28| |NOT AGAIN| +|08/01/2022 04:06:28| |Time for kino| +|08/01/2022 04:06:29| |PTSD EPISODE NOW| +|08/01/2022 04:06:29| |SAY IT WITH ME| +|08/01/2022 04:06:29| |great fucking job azusa| +|08/01/2022 04:06:29| PTSD +|08/01/2022 04:06:31| PTSD +|08/01/2022 04:06:31| |NOT THE WATER| +|08/01/2022 04:06:31| |Its happen again| +|08/01/2022 04:06:32| >trauma +|08/01/2022 04:06:33| |usagi san chiimu| +|08/01/2022 04:06:33| KILL! +|08/01/2022 04:06:33| PTSD +|08/01/2022 04:06:34| |leave me....| +|08/01/2022 04:06:35| ptsd +|08/01/2022 04:06:36| |Don't buly Azusa purple anon| +|08/01/2022 04:06:36| KINOOOOOOOOOOOOOOO +|08/01/2022 04:06:41| |Do it yourself lazy bitch| +|08/01/2022 04:06:41| |cunny san chiimu| +|08/01/2022 04:06:42| jobbers +|08/01/2022 04:06:42| cute +|08/01/2022 04:06:44| kino +|08/01/2022 04:06:45| KINO +|08/01/2022 04:06:45| |LIVE AND LET LIVE| +|08/01/2022 04:06:45| |Fly Miho fly!!!!| +|08/01/2022 04:06:46| CUTE +|08/01/2022 04:06:47| |CUTE FLUFF| +|08/01/2022 04:06:47| |Saori would be the first one to die| +|08/01/2022 04:06:48| CUTE +|08/01/2022 04:06:49| Azuzabros.... +|08/01/2022 04:06:50| |ROPE THE LOLIS| +|08/01/2022 04:06:50| |kino moment| +|08/01/2022 04:06:52| FLOOF +|08/01/2022 04:06:52| CUTE +|08/01/2022 04:06:52| |OH NO IM GONNA SAY THE K WORD| +|08/01/2022 04:06:52| eyes +|08/01/2022 04:06:52| |OOOH GOD IS THAT W-WATER!! SAVE ME SAORI-SAN!!| +|08/01/2022 04:06:56| |X to jump| +|08/01/2022 04:06:57| |I love her shiney eyes| +|08/01/2022 04:06:58| |BUNNIES GET THE ROPE| +|08/01/2022 04:06:58| |BEST FLUFF| +|08/01/2022 04:06:59| |CUTE HAI| +|08/01/2022 04:07:00| |miho gets the rope| +|08/01/2022 04:07:01| |Ja wer marschiert in feidensland| +|08/01/2022 04:07:01| |>Get the rope... | +|08/01/2022 04:07:04| HOP +|08/01/2022 04:07:04| |BEST GIRL| +|08/01/2022 04:07:04| |HARDCORE PARKOUR| +|08/01/2022 04:07:08| |>Trying to save the useless M3| +|08/01/2022 04:07:09| |anti-grav jumping: enabled| +|08/01/2022 04:07:09| |how is some rope meant to hold an m3| +|08/01/2022 04:07:16| |lemme just turn gravity down a little bit 'ere| +|08/01/2022 04:07:17| |FLOOF was the best moment in episode all downhill from here| +|08/01/2022 04:07:17| |MIHO IS SUICIDAL| +|08/01/2022 04:07:18| |USAGIS GET THE ROPE| +|08/01/2022 04:07:19| |sv_cheats 1| +|08/01/2022 04:07:19| |>double bowline hitch| +|08/01/2022 04:07:19| |our girl ;_;| +|08/01/2022 04:07:20| |really mako????| +|08/01/2022 04:07:20| |Long G hax| +|08/01/2022 04:07:20| |what is this type of neck microphone called?| +|08/01/2022 04:07:21| |miho bringing the rope to lynch azusa for drowning the tank| +|08/01/2022 04:07:22| |LOW GRAVITY: ON| +|08/01/2022 04:07:22| |that's some strong rope| +|08/01/2022 04:07:23| |cos it has wheels anon| +|08/01/2022 04:07:24| |Ropes and knots are pretty based | +|08/01/2022 04:07:25| |Save Azusa and Saki leave the rest| +|08/01/2022 04:07:25| |Miho is crazy| +|08/01/2022 04:07:26| |miho shouldve just tell them to rope themselves after jumping all the way to them and giving them the rope| +|08/01/2022 04:07:26| noclip +|08/01/2022 04:07:27| :stopmusic: +|08/01/2022 04:07:30| |YOU CAN(T) DO IT| +|08/01/2022 04:07:31| |Little did the world know, but Miho Nishizumi would later win the olympics in the long jump| +|08/01/2022 04:07:31| |Teammates > Win| +|08/01/2022 04:07:33| >OST +|08/01/2022 04:07:33| |no way in hell miho can tie a better knot than floof| +|08/01/2022 04:07:33| |u can pull a train with a rope| +|08/01/2022 04:07:33| |carbon coated rope| +|08/01/2022 04:07:36| |miho san yappari miho san ne| +|08/01/2022 04:07:39| |Just give me the rope Miho| +|08/01/2022 04:07:44| |I'M DEFYING GRAVITY| +|08/01/2022 04:07:48| |Miho channeling her inner Lupin| +|08/01/2022 04:07:48| >wahoo! +|08/01/2022 04:07:48| KINOOOOOOOOOOOO +|08/01/2022 04:07:48| |DOUBLE JUMP| +|08/01/2022 04:07:48| |Miho more like Mario| +|08/01/2022 04:07:49| |shinji would've given up long before this point| +|08/01/2022 04:07:50| |JA JA MOND JA| +|08/01/2022 04:07:51| |NEVER SKIP LEG DAY| +|08/01/2022 04:07:51| KINO +|08/01/2022 04:07:51| |BUNNY JUMP| +|08/01/2022 04:07:52| |FUCK gravity| +|08/01/2022 04:07:53| FLY +|08/01/2022 04:07:54| |gravity? who gives a crap about gravity?| +|08/01/2022 04:07:55| WOAH +|08/01/2022 04:07:56| KION +|08/01/2022 04:07:56| KINO +|08/01/2022 04:07:56| what!!! +|08/01/2022 04:07:57| KINO +|08/01/2022 04:07:57| |MIHO'S CREED| +|08/01/2022 04:07:58| KINO +|08/01/2022 04:07:58| |KINO KINO KINO KINO KINO KINO| +|08/01/2022 04:07:58| |is she wearing the german boot or the russian boot is the real question| +|08/01/2022 04:07:58| |BING BONG WAHOO| +|08/01/2022 04:07:59| |BUNNY JUMP| +|08/01/2022 04:07:59| |YURI PHYSICS| +|08/01/2022 04:08:00| |she can jump far...| +|08/01/2022 04:08:00| TODOKETE +|08/01/2022 04:08:00| |now this is senshado| +|08/01/2022 04:08:00| SUGOIIIIIIIIIIIIIII +|08/01/2022 04:08:00| |GRAVITY NOOOOO| +|08/01/2022 04:08:01| |Super Mihorio Galaxy| +|08/01/2022 04:08:01| OST +|08/01/2022 04:08:01| |STOP SAYING KINO| +|08/01/2022 04:08:01| |NICE JUMP| +|08/01/2022 04:08:02| |miho jump| +|08/01/2022 04:08:02| KINO +|08/01/2022 04:08:03| |HOW DOES SHE JUMP SO FAR| +|08/01/2022 04:08:03| KINO +|08/01/2022 04:08:03| |Olympic level longjump | +|08/01/2022 04:08:03| how +|08/01/2022 04:08:03| |>You will never jump as far as Miho| +|08/01/2022 04:08:05| KNO +|08/01/2022 04:08:06| noclip +|08/01/2022 04:08:06| |KINO KINO KINO| +|08/01/2022 04:08:06| gravitybros... +|08/01/2022 04:08:07| |KINO MOMENT WITH CUTE POKOE| +|08/01/2022 04:08:07| PEKO +|08/01/2022 04:08:08| |cute grasshopper| +|08/01/2022 04:08:08| WAHOO +|08/01/2022 04:08:08| |Finn boots| +|08/01/2022 04:08:08| |katyushas thighs!| +|08/01/2022 04:08:08| |IS THIS NISHIZUMI STYLE| +|08/01/2022 04:08:09| KATSU +|08/01/2022 04:08:09| |PEKOE CUTE| +|08/01/2022 04:08:10| GRAVITYBROS...... +|08/01/2022 04:08:10| |katyushas thighs!| +|08/01/2022 04:08:11| |ZETTAI MANESHINAIDE NE| +|08/01/2022 04:08:13| |FUCK HETEROPHYSICS| +|08/01/2022 04:08:13| |I CRY EVERYTIME| +|08/01/2022 04:08:13| TINY +|08/01/2022 04:08:16| GANBARE!! +|08/01/2022 04:08:16| |bing bing wahoooooo| +|08/01/2022 04:08:17| |aerodynamic Miho generates lift| +|08/01/2022 04:08:17| SHINZABRO +|08/01/2022 04:08:18| |FROM IVY OUT CONNECTOR| +|08/01/2022 04:08:21| |momo fappign| +|08/01/2022 04:08:21| |REKT | +|08/01/2022 04:08:22| |MOMO HATE| +|08/01/2022 04:08:22| >MOMO +|08/01/2022 04:08:23| |BASED LESGRAVITY DOMINATION| +|08/01/2022 04:08:24| FLYYYYYYYYYYYYYYYY +|08/01/2022 04:08:24| |FUCK OFF MOMO| +|08/01/2022 04:08:24| |GRAVITY... I CAN'T KNEEL... IM FLOATING| +|08/01/2022 04:08:24| |how fucking powerful are her legs look at those jumps| +|08/01/2022 04:08:25| kek +|08/01/2022 04:08:26| |I'm legit tearing up| +|08/01/2022 04:08:29| |Miho Mom: SHAME| +|08/01/2022 04:08:30| |SIR! ;_;7| +|08/01/2022 04:08:30| uohh +|08/01/2022 04:08:30| |SHUT THE FUCK UP MOMO| +|08/01/2022 04:08:31| |STFU MOMO| +|08/01/2022 04:08:31| |A VALKYRIE| +|08/01/2022 04:08:31| |>momo being shit as usual| +|08/01/2022 04:08:31| AZUSA!! +|08/01/2022 04:08:31| |How thick are Miho thighs to be able to jump like that| +|08/01/2022 04:08:31| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:08:32| |sv_gravity 400| +|08/01/2022 04:08:33| |>tfw can't see danmaku | +|08/01/2022 04:08:35| |Saki doesn't care| +|08/01/2022 04:08:36| |CUTE RABBITS| +|08/01/2022 04:08:39| |yuri physics| +|08/01/2022 04:08:39| |>here neck yourselves| +|08/01/2022 04:08:40| |disowned once more| +|08/01/2022 04:08:42| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 04:08:44| |Mihos thighs could strangle any man| +|08/01/2022 04:08:47| |My tears dry on their own ;_;| +|08/01/2022 04:08:50| kakoi +|08/01/2022 04:08:53| |WHERE DOES SHE KEEP THAT SCOPE| +|08/01/2022 04:08:55| YOISHO +|08/01/2022 04:08:57| YOISSHO +|08/01/2022 04:08:58| SAKI +|08/01/2022 04:09:00| |lol casemate-tards| +|08/01/2022 04:09:01| |CUNNY HEAVE| +|08/01/2022 04:09:02| YOIHO +|08/01/2022 04:09:02| |YOU ARE SO COOL COMMANDER NISHIZUMI| +|08/01/2022 04:09:05| |is yukari allowed to use a panzerschrek?| +|08/01/2022 04:09:05| |they could have just done that themselves| +|08/01/2022 04:09:06| AZUSA!! +|08/01/2022 04:09:06| ;_;7 +|08/01/2022 04:09:07| |Double Disowned| +|08/01/2022 04:09:09| ;_; +|08/01/2022 04:09:10| CUTE +|08/01/2022 04:09:11| |PRECIOUS RABBITS| +|08/01/2022 04:09:11| CUTE +|08/01/2022 04:09:12| |All seeing Saki| +|08/01/2022 04:09:12| |TAKE MY AUTOGRAPTH MIHO| +|08/01/2022 04:09:13| CUTE +|08/01/2022 04:09:13| |STUG LIFE| +|08/01/2022 04:09:14| ERIKA +|08/01/2022 04:09:14| KINO +|08/01/2022 04:09:17| ;_; +|08/01/2022 04:09:17| naisu +|08/01/2022 04:09:18| |Erika ANGERY| +|08/01/2022 04:09:18| |her smile and optimism: gone| +|08/01/2022 04:09:19| |cute useless| +|08/01/2022 04:09:19| bitch +|08/01/2022 04:09:19| |dumb wani| +|08/01/2022 04:09:20| |Not amused| +|08/01/2022 04:09:22| |Now jump back.| +|08/01/2022 04:09:23| seethe +|08/01/2022 04:09:23| |BUTT SEGGS BUTT SRGGS| +|08/01/2022 04:09:24| Dialate +|08/01/2022 04:09:25| |ERIKA SEETHE| +|08/01/2022 04:09:25| |DUMB WANI| +|08/01/2022 04:09:26| |right behind you| +|08/01/2022 04:09:27| KILL +|08/01/2022 04:09:28| |Sexy Erika eyes | +|08/01/2022 04:09:29| |SHE MAD| +|08/01/2022 04:09:29| |OH NO| +|08/01/2022 04:09:29| |my wife maho| +|08/01/2022 04:09:31| |We must protecct rabbits at all costs| +|08/01/2022 04:09:36| jumpscared +|08/01/2022 04:09:36| |my wife maho| +|08/01/2022 04:09:36| |Erika is so cutye| +|08/01/2022 04:09:37| |first tranny comment of the day| +|08/01/2022 04:09:37| F +|08/01/2022 04:09:38| |SHE SAW| +|08/01/2022 04:09:42| |keep seething you dumb cute wani| +|08/01/2022 04:09:43| |WE GOT TOO COCKY HETZERBROS| +|08/01/2022 04:09:43| ara +|08/01/2022 04:09:44| |Usagi Teamu real command tank| +|08/01/2022 04:09:44| tatul +|08/01/2022 04:09:45| |OH NO ANZU BROS....| +|08/01/2022 04:09:48| knower +|08/01/2022 04:09:49| |still in play| +|08/01/2022 04:09:50| |Maho says trans rights!| +|08/01/2022 04:09:51| |FISSION MAILED| +|08/01/2022 04:09:51| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:09:52| |OH N-| +|08/01/2022 04:09:56| |THANKS TL| +|08/01/2022 04:09:57| |MAXIMUM POWER!!!!!| +|08/01/2022 04:09:59| |THANKS TL| +|08/01/2022 04:09:59| |Maho hates troons| +|08/01/2022 04:10:00| |thanks tl| +|08/01/2022 04:10:00| |Anzu with Anzu!| +|08/01/2022 04:10:01| |rope snap| +|08/01/2022 04:10:01| |You're gonna flood it...| +|08/01/2022 04:10:08| |>american engineering| +|08/01/2022 04:10:11| RIPPEN +|08/01/2022 04:10:12| |The only trans i support is trans siberian railway| +|08/01/2022 04:10:12| |I'm going to Anzu Anzu| +|08/01/2022 04:10:15| |WE DID IT AZUZABROS| +|08/01/2022 04:10:15| |My aunt's name is anzu this shit is dumb| +|08/01/2022 04:10:19| |glorious detroit steel| +|08/01/2022 04:10:20| |AMERICAN ENGINEERING USA USA USA USA| +|08/01/2022 04:10:25| |theres only one thing bunnies are good for | +|08/01/2022 04:10:25| |I WILL FUCK YOUR AUNT| +|08/01/2022 04:10:25| |>hydrolocked engine justwerks American engineering everyone| +|08/01/2022 04:10:26| |is your aunt flat?| +|08/01/2022 04:10:26| |uohh anzu's nephew| +|08/01/2022 04:10:28| hooah +|08/01/2022 04:10:32| |Best science in the world| +|08/01/2022 04:10:33| |Maho so cool!| +|08/01/2022 04:10:33| |>american engineering almost cost them the match| +|08/01/2022 04:10:33| |grorious detroit steel folded 3 times| +|08/01/2022 04:10:35| |I want to fuck anons aunt| +|08/01/2022 04:10:35| |shit aim| +|08/01/2022 04:10:36| |Maho is deaf| +|08/01/2022 04:10:40| |I'm becoming deaf| +|08/01/2022 04:10:43| |Erika > Maho| +|08/01/2022 04:10:49| |Mahochads assemble| +|08/01/2022 04:10:49| |maho doesn't care| +|08/01/2022 04:10:51| |The bridge that leads to Seize| +|08/01/2022 04:10:51| REIMANGEN +|08/01/2022 04:10:52| |yeah that bridge looks really stable| +|08/01/2022 04:10:52| KINO +|08/01/2022 04:10:52| |BRIDGE OVER THE RIVER KAWAII| +|08/01/2022 04:10:55| Kill +|08/01/2022 04:10:55| NIGGER +|08/01/2022 04:10:55| |team leopon on their way to ruin priceless architectural heritage| +|08/01/2022 04:10:55| |HEIL MAHO| +|08/01/2022 04:10:56| >reimangen +|08/01/2022 04:10:57| |erika is shit when maho is around| +|08/01/2022 04:10:58| |just blow the bridge| +|08/01/2022 04:10:59| |i love the sound of a cannon firing| +|08/01/2022 04:11:01| |so that's the bridge Martini took| +|08/01/2022 04:11:01| |what a nice bridge| +|08/01/2022 04:11:01| |Hit the NO2| +|08/01/2022 04:11:02| |Maho > Erika| +|08/01/2022 04:11:03| |*Maho > Erika. Please dont post shit opinions| +|08/01/2022 04:11:03| |BEST TEAM| +|08/01/2022 04:11:04| H-HAYAI +|08/01/2022 04:11:06| \o +|08/01/2022 04:11:06| |SICK BURNOOUTS| +|08/01/2022 04:11:06| MEGANE +|08/01/2022 04:11:07| TONGUE +|08/01/2022 04:11:07| |ERIKA A CUTE| +|08/01/2022 04:11:07| SPEEEEEEEEEEEEEEEEEEEEEEEED +|08/01/2022 04:11:08| HUMMMMMMMMMMMMMMMMMMMM +|08/01/2022 04:11:08| oh... +|08/01/2022 04:11:09| HAYAI +|08/01/2022 04:11:10| |stable bridge| +|08/01/2022 04:11:11| HO +|08/01/2022 04:11:12| SPEEEEEEEEEEEEDDDDDDD +|08/01/2022 04:11:12| |LIVE AND LEARN| +|08/01/2022 04:11:13| |DO YOU WANT TOTAL WAR| +|08/01/2022 04:11:13| |>time for the water meth and n2o| +|08/01/2022 04:11:14| lol +|08/01/2022 04:11:14| bruh +|08/01/2022 04:11:14| wow... +|08/01/2022 04:11:15| |HIT THE BRIDGE, DROP THEIR FLAG| +|08/01/2022 04:11:16| |NIGHT OF FIRE| +|08/01/2022 04:11:16| based +|08/01/2022 04:11:17| based +|08/01/2022 04:11:17| mischief +|08/01/2022 04:11:17| |VTEC JUST KICKED IN YO| +|08/01/2022 04:11:17| |FLOOR IT| +|08/01/2022 04:11:17| |GOD THAT'S FAT| +|08/01/2022 04:11:18| |i want leopon to do that but on my dick| +|08/01/2022 04:11:18| |god that porsche sounds so SEXY| +|08/01/2022 04:11:19| |hybrid power like a prius| +|08/01/2022 04:11:20| ????? +|08/01/2022 04:11:20| |destroying local infrastrucutre LIKE A BOSS| +|08/01/2022 04:11:21| |SEETHING ERIKA| +|08/01/2022 04:11:22| |GuP do love their bridges | +|08/01/2022 04:11:24| |TOTALER KRIEG| +|08/01/2022 04:11:24| |GAS GAS GAS| +|08/01/2022 04:11:25| |That's not legal, right?| +|08/01/2022 04:11:26| |Bridge on the River Kwai| +|08/01/2022 04:11:27| |THINK OF THE SPONSORS| +|08/01/2022 04:11:33| |GAS GAS GAs| +|08/01/2022 04:11:34| |DUMB WANI| +|08/01/2022 04:11:35| |River Kawaii| +|08/01/2022 04:11:36| |that was a UNICEF heritage bridge| +|08/01/2022 04:11:39| |River Kawaii| +|08/01/2022 04:11:41| |Leopon... the advertisers...| +|08/01/2022 04:11:41| CONVOYYYYYYYY +|08/01/2022 04:11:41| |Miho lives rent-free in Erika's head| +|08/01/2022 04:11:41| |PROPERTY DAMAGE| +|08/01/2022 04:11:48| |Fucking up local roads with tracks... priceless| +|08/01/2022 04:11:49| |fuck the city| +|08/01/2022 04:11:50| |More Kino incoming| +|08/01/2022 04:11:50| |Hope you like urban warfare.| +|08/01/2022 04:11:50| |in ribbon warrior they legit set fire to a town| +|08/01/2022 04:11:50| |Trippy CG| +|08/01/2022 04:11:54| |soon bros are thicc boy is coming| +|08/01/2022 04:11:54| |This literally looks like some fucking wot map| +|08/01/2022 04:11:54| |maus soon bros| +|08/01/2022 04:11:55| |MAUSA DA!| +|08/01/2022 04:11:58| |>the panzer 3 that erika switches to| +|08/01/2022 04:11:58| nerd +|08/01/2022 04:11:59| |the maus is coming bros| +|08/01/2022 04:12:03| |FIRST EPISODE CALLBACK| +|08/01/2022 04:12:03| |HERE COMES A SPECIAL BOY| +|08/01/2022 04:12:04| |Generic Soviet district| +|08/01/2022 04:12:05| |INITIAL P| +|08/01/2022 04:12:05| CUTE! +|08/01/2022 04:12:06| |why do I hear boss music bros| +|08/01/2022 04:12:07| |cute panzer | +|08/01/2022 04:12:07| LUCHS +|08/01/2022 04:12:08| |PANZER III......| +|08/01/2022 04:12:09| |this is just like one of my japanese animes| +|08/01/2022 04:12:10| |Saori is a Panzer whore now| +|08/01/2022 04:12:10| |German commiblocks| +|08/01/2022 04:12:10| |Maus soon| +|08/01/2022 04:12:15| |PANZER III A CUTE| +|08/01/2022 04:12:15| |master baiter reverse| +|08/01/2022 04:12:16| |>falling for the bait| +|08/01/2022 04:12:17| |LUCHSBROS WHERE WE AT| +|08/01/2022 04:12:18| |PANZER WHORE!| +|08/01/2022 04:12:19| |ねずみ inbound| +|08/01/2022 04:12:22| |It's orgre for Oarai now| +|08/01/2022 04:12:24| SFX +|08/01/2022 04:12:24| |>is this bait?| +|08/01/2022 04:12:24| |MAUSU MAUSU PASUKON MAUSU| +|08/01/2022 04:12:25| |GAS GAS GAS| +|08/01/2022 04:12:26| jabaited +|08/01/2022 04:12:27| |OB STURM ODER SCHNEIT| +|08/01/2022 04:12:28| |>hook line and sinker| +|08/01/2022 04:12:30| |sex with commie blocks| +|08/01/2022 04:12:30| |Oarai is gonna lose in a sec| +|08/01/2022 04:12:33| |Bass pro shop doko| +|08/01/2022 04:12:34| ENTER +|08/01/2022 04:12:34| ooraibros... +|08/01/2022 04:12:37| ENTER +|08/01/2022 04:12:37| ENTER +|08/01/2022 04:12:37| |THE BAIT IS TOO POWERFUL| +|08/01/2022 04:12:38| Maused +|08/01/2022 04:12:39| |DOBUNEZUMI MITAI NI| +|08/01/2022 04:12:39| ENTER +|08/01/2022 04:12:40| ENTER +|08/01/2022 04:12:40| |Mickey Maus| +|08/01/2022 04:12:40| |comfy armored warfare asmr| +|08/01/2022 04:12:41| |we got too cocky...| +|08/01/2022 04:12:41| |>literally everyone chasing one tank| +|08/01/2022 04:12:42| |Maus-san | +|08/01/2022 04:12:42| ENTER +|08/01/2022 04:12:42| KRUPPSCHTALL +|08/01/2022 04:12:43| |OOOOOH SHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIT| +|08/01/2022 04:12:43| |The Maus That Roared| +|08/01/2022 04:12:43| MAUS +|08/01/2022 04:12:43| |CRYPTIC METAPHOR!| +|08/01/2022 04:12:44| ENTER +|08/01/2022 04:12:44| ENTER +|08/01/2022 04:12:45| |it's the gif| +|08/01/2022 04:12:45| |Kino moment| +|08/01/2022 04:12:45| ENTER +|08/01/2022 04:12:45| |uh oh| +|08/01/2022 04:12:45| OHNONONONONO +|08/01/2022 04:12:46| |A BIG GUY| +|08/01/2022 04:12:46| COMMIEBLOCKS +|08/01/2022 04:12:46| ENTER +|08/01/2022 04:12:46| |OH NO| +|08/01/2022 04:12:46| |SHE'S A BIG TANK| +|08/01/2022 04:12:47| |oh oh| +|08/01/2022 04:12:47| ENTER +|08/01/2022 04:12:48| AAAAAAAAAAAAAAAA +|08/01/2022 04:12:48| mausu +|08/01/2022 04:12:48| ENTER +|08/01/2022 04:12:48| |EL GRANDE TANQUE| +|08/01/2022 04:12:49| |A WALL?| +|08/01/2022 04:12:49| ENTER +|08/01/2022 04:12:49| |DAMN BOI HE THICC| +|08/01/2022 04:12:49| |OH NO| +|08/01/2022 04:12:50| NANI +|08/01/2022 04:12:50| |for you| +|08/01/2022 04:12:51| YOSHI +|08/01/2022 04:12:51| |you're a big tank| +|08/01/2022 04:12:52| |Ooari bros ohnononononono| +|08/01/2022 04:12:52| UUU +|08/01/2022 04:12:52| mausumausu +|08/01/2022 04:12:52| MOGGED +|08/01/2022 04:12:52| ENTER +|08/01/2022 04:12:53| 4U +|08/01/2022 04:12:53| ENTER +|08/01/2022 04:12:53| |STOP RUNNIGN COWARD| +|08/01/2022 04:12:54| |The Shagohad| +|08/01/2022 04:12:54| |IT AIN'T DISNEY WITHOUT MICKEY| +|08/01/2022 04:12:54| \o +|08/01/2022 04:12:55| big +|08/01/2022 04:12:55| |LE GROS TANK APPROCHE| +|08/01/2022 04:12:55| |DO YOU FEEL IN CHARGE| +|08/01/2022 04:12:55| TONK +|08/01/2022 04:12:55| MAUS +|08/01/2022 04:12:55| |Big ENTER| +|08/01/2022 04:12:56| MAUKO +|08/01/2022 04:12:56| |ENTER MOUSE| +|08/01/2022 04:12:57| |OARAIBROS WE GOT TOO COCKY| +|08/01/2022 04:12:57| |EL RATON| +|08/01/2022 04:12:58| |My waifu finally apopears| +|08/01/2022 04:12:59| MOGGED +|08/01/2022 04:13:00| MAUS +|08/01/2022 04:13:00| |DER WUNDERWAFFE| +|08/01/2022 04:13:00| ENTER +|08/01/2022 04:13:01| THICC +|08/01/2022 04:13:01| SIEG +|08/01/2022 04:13:01| GUTENTAG +|08/01/2022 04:13:02| |SUE GOY| +|08/01/2022 04:13:02| |el tanke stretchy| +|08/01/2022 04:13:02| ENTER +|08/01/2022 04:13:02| |WE GOT TOO COCKY| +|08/01/2022 04:13:03| |X GONNA GIVE IT TO YOU| +|08/01/2022 04:13:04| |rat when?| +|08/01/2022 04:13:04| |THICC TONK| +|08/01/2022 04:13:05| MAOOS +|08/01/2022 04:13:06| |OMG WTF BBQ| +|08/01/2022 04:13:06| |You Fucked Up| +|08/01/2022 04:13:06| >jobs +|08/01/2022 04:13:12| Maus... +|08/01/2022 04:13:13| THICK +|08/01/2022 04:13:15| |heckin chonker| +|08/01/2022 04:13:16| |Oh look, target practice for the US Army Air Corps| +|08/01/2022 04:13:16| |RUSSIAN LOLI| +|08/01/2022 04:13:18| |>when they see my maus| +|08/01/2022 04:13:18| |Yukari is absolutely sopping| +|08/01/2022 04:13:18| CUTE +|08/01/2022 04:13:19| |>NOT CHARGING| +|08/01/2022 04:13:20| |I love how Yukari implies there might be more out there| +|08/01/2022 04:13:20| Mausu +|08/01/2022 04:13:20| THICCC +|08/01/2022 04:13:23| |MY EARS| +|08/01/2022 04:13:24| YARARETA +|08/01/2022 04:13:25| |its time| +|08/01/2022 04:13:26| |HAHA I GET IT ITS BIG BUT ITS NAMED MOUSE| +|08/01/2022 04:13:28| yarareta +|08/01/2022 04:13:28| >MISSED +|08/01/2022 04:13:29| |If I took off your turret, would you die?| +|08/01/2022 04:13:30| |>gets btfo by 2 shermans| +|08/01/2022 04:13:31| |MIKI MAUS?| +|08/01/2022 04:13:31| >subs +|08/01/2022 04:13:32| |YA RA RE TA| +|08/01/2022 04:13:32| YA~DA~RE~TTA! +|08/01/2022 04:13:33| |>german humor| +|08/01/2022 04:13:33| |>shot so powerful it causes video artifacts| +|08/01/2022 04:13:35| |In awe at the size of this lad| +|08/01/2022 04:13:36| >missed +|08/01/2022 04:13:38| rip +|08/01/2022 04:13:38| WEW +|08/01/2022 04:13:38| |mausu mausu pasokon mausu| +|08/01/2022 04:13:39| |GOOD THING THE GIRLS ARE CARBON COATED| +|08/01/2022 04:13:39| |DAMN BRAT| +|08/01/2022 04:13:39| wew +|08/01/2022 04:13:39| |>don't anyone shoot the tracks or anything| +|08/01/2022 04:13:40| BTFO +|08/01/2022 04:13:40| |Welcome to the Mickey Maus Funhaus| +|08/01/2022 04:13:40| huge +|08/01/2022 04:13:41| |>they all live| +|08/01/2022 04:13:41| |ITS OVER| +|08/01/2022 04:13:42| |BIG COCK| +|08/01/2022 04:13:42| ANZU +|08/01/2022 04:13:42| |SODOKO DEAD| +|08/01/2022 04:13:42| |SODOKO NO| +|08/01/2022 04:13:43| F +|08/01/2022 04:13:44| DEAD +|08/01/2022 04:13:45| |F Sodoko| +|08/01/2022 04:13:45| MOGGED +|08/01/2022 04:13:47| |>huge and cocky| +|08/01/2022 04:13:47| |SODOKO IS DEAD| +|08/01/2022 04:13:48| DEAD +|08/01/2022 04:13:48| DEAD +|08/01/2022 04:13:48| |IF I PULL THAT OFF WILL YOU DIE| +|08/01/2022 04:13:48| REKT +|08/01/2022 04:13:49| PANZERLIED +|08/01/2022 04:13:49| |BIG TANK| +|08/01/2022 04:13:49| f +|08/01/2022 04:13:50| |O S T| +|08/01/2022 04:13:51| |YOU DUMB| +|08/01/2022 04:13:51| GOD +|08/01/2022 04:13:51| |SODOKO IS FUCKING DEAD| +|08/01/2022 04:13:52| COCK +|08/01/2022 04:13:52| |YA RA RE TA| +|08/01/2022 04:13:53| |CAN'T BEAT THE COCK| +|08/01/2022 04:13:53| |O S T| +|08/01/2022 04:13:53| |average sodoko mogging| +|08/01/2022 04:13:54| |Absolute Unit | +|08/01/2022 04:13:54| |M3 put into its plcxae| +|08/01/2022 04:13:54| |SODOKO STATUS: SODOMIZED| +|08/01/2022 04:13:55| GGNORE +|08/01/2022 04:13:55| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +|08/01/2022 04:13:55| OST +|08/01/2022 04:13:57| |>that's what they all say to oji-san| +|08/01/2022 04:13:57| |Do not taunt happy fun tank| +|08/01/2022 04:13:57| SHREKY +|08/01/2022 04:13:59| |you're a big tank| +|08/01/2022 04:13:59| |20KPH LADS| +|08/01/2022 04:14:01| |CLAP ALONG WITH THE MUSIC LADS| +|08/01/2022 04:14:01| |Goodnight sweet SoGoPa| +|08/01/2022 04:14:03| |! Banger alert ! Banger alert !| +|08/01/2022 04:14:03| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +|08/01/2022 04:14:04| PANZERLIED +|08/01/2022 04:14:04| |OB'S STÜRM ODER SCHNEIT| +|08/01/2022 04:14:04| |OBS STURMT ODER SCHNEIT| +|08/01/2022 04:14:05| |DER TAG GLUHEND HEIST| +|08/01/2022 04:14:05| |O S T| +|08/01/2022 04:14:05| RIP +|08/01/2022 04:14:07| |that's against school regulations| +|08/01/2022 04:14:07| |Can't beat the cock| +|08/01/2022 04:14:07| |OB DIE SONNE UNS LACHT| +|08/01/2022 04:14:08| |OBS STÜRMT ODER SCHNEIT| +|08/01/2022 04:14:08| |CLAP CLAP CLAP CLAP| +|08/01/2022 04:14:10| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +|08/01/2022 04:14:11| |ODER SINN| +|08/01/2022 04:14:11| SING +|08/01/2022 04:14:12| PANZERLIED +|08/01/2022 04:14:13| |PING PING PING| +|08/01/2022 04:14:13| |Maus too heavy for the stream| +|08/01/2022 04:14:14| >germ*ns +|08/01/2022 04:14:14| |MY FUCKING EARS ARE RINGING| +|08/01/2022 04:14:15| LAUTER +|08/01/2022 04:14:16| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT| +|08/01/2022 04:14:17| LOUDER +|08/01/2022 04:14:17| LOUDER +|08/01/2022 04:14:18| |ODER EISKALT DIE NACHT| +|08/01/2022 04:14:18| |Best marching song\| +|08/01/2022 04:14:19| |ODER EISKALT| +|08/01/2022 04:14:20| |I'M LITTERALLY CLAPPING RIGHT NOW| +|08/01/2022 04:14:21| |WE CAN GO LOUDER| +|08/01/2022 04:14:22| LOUDER +|08/01/2022 04:14:22| |KUROMORIMINE UBER ALLES| +|08/01/2022 04:14:22| SING +|08/01/2022 04:14:23| |OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT!!!!!| +|08/01/2022 04:14:23| |DOCH FORH| +|08/01/2022 04:14:25| |BESTAUBT SIND DIE GESICHTER| +|08/01/2022 04:14:25| |DOCH FROH IST UNSER SINN| +|08/01/2022 04:14:28| |revenge for east germany| +|08/01/2022 04:14:28| |ES RAST UNSER PANZER IM STURMWIND DAHIN| +|08/01/2022 04:14:29| F +|08/01/2022 04:14:29| WHAT? +|08/01/2022 04:14:29| |SIEG HEIL | +|08/01/2022 04:14:29| SHREKT +|08/01/2022 04:14:30| ONORE +|08/01/2022 04:14:30| NOOOOOOOOOOOOOOOOO +|08/01/2022 04:14:30| |F /his/| +|08/01/2022 04:14:31| STUGBROS...................... +|08/01/2022 04:14:31| |ES BRAUST UNSER PANZER| +|08/01/2022 04:14:32| |DOCH FROH| +|08/01/2022 04:14:33| |ES BRAUST UNSER PANZER IM STURMWIND DAHIN| +|08/01/2022 04:14:33| ONOREE +|08/01/2022 04:14:38| |UOOOH I'M CLAPPING| +|08/01/2022 04:14:38| |UNSER SINN!| +|08/01/2022 04:14:39| |wtf nooo| +|08/01/2022 04:14:39| |1488 OB'S STÜRMT ODER SCHNEIT OB DIE SONNE UNS LACHT 1488| +|08/01/2022 04:14:39| STUGBROS.... +|08/01/2022 04:14:39| LOUDER! +|08/01/2022 04:14:40| STOMP +|08/01/2022 04:14:40| |ES BRAUST UNSER PANZER| +|08/01/2022 04:14:40| |CLAP CLAP CLAP CLAP| +|08/01/2022 04:14:41| o/ +|08/01/2022 04:14:42| 88888888888888888888 +|08/01/2022 04:14:46| |they stomping| +|08/01/2022 04:14:46| KINOKINOKINO +|08/01/2022 04:14:47| | 8 8 8 8 8 8 8 | +|08/01/2022 04:14:48| wherBONER +|08/01/2022 04:14:48| |8 8 8 8 8 8| +|08/01/2022 04:14:49| |STOMP STOMP STOMP STOMP STOMP STOMP STOMP| +|08/01/2022 04:14:49| |DER TAG GLUHEN HEISS| +|08/01/2022 04:14:49| |MEIN FUHRER!| +|08/01/2022 04:14:50| |STOMP STOMP STOMP| +|08/01/2022 04:14:50| |CLAP CLAP CLAP CLAP| +|08/01/2022 04:14:52| |KINO 1488| +|08/01/2022 04:14:54| |SIEG HEIL o/ o/ o/| +|08/01/2022 04:14:56| |EVERYONE STOMP| +|08/01/2022 04:14:57| |why not just make that shit your flag tank?| +|08/01/2022 04:14:58| |JA UNSER SINN| +|08/01/2022 04:14:59| |MY FUHRER I CAN WALK!| +|08/01/2022 04:14:59| KAWAII +|08/01/2022 04:15:00| |march march march march| +|08/01/2022 04:15:01| |\o \o \o| +|08/01/2022 04:15:02| o/ +|08/01/2022 04:15:03| o/ +|08/01/2022 04:15:03| |These Tiger IIs are moving much too swiftly| +|08/01/2022 04:15:04| |BESTAUBT SIND DIE GESICHTER DOCH FROH IST UNSER SINN| +|08/01/2022 04:15:04| |UN MEIN GATT| +|08/01/2022 04:15:05| o/ +|08/01/2022 04:15:06| SING! +|08/01/2022 04:15:06| |ES BRASUST UNSER PANZER IM STURMWIND DAHIN| +|08/01/2022 04:15:08| niyari +|08/01/2022 04:15:08| FEGELEIN +|08/01/2022 04:15:10| |Goosesteping noises| +|08/01/2022 04:15:10| |o/ o/ o/ o/| +|08/01/2022 04:15:11| Stomp +|08/01/2022 04:15:12| |You can say much about the Germans but they made some bangers\| +|08/01/2022 04:15:12| |wani smug| +|08/01/2022 04:15:14| |SIEG HEIL| +|08/01/2022 04:15:17| |\o/ whoo| +|08/01/2022 04:15:18| |FINAL EPISODE| +|08/01/2022 04:15:18| MAJESTIC +|08/01/2022 04:15:18| GIMI +|08/01/2022 04:15:21| |probably because if the maus breaks down, you lose the flagtank| +|08/01/2022 04:15:21| |smug erika| +|08/01/2022 04:15:22| |My wife Maho is so handsome| +|08/01/2022 04:15:25| |just make every tank a maus| +|08/01/2022 04:15:25| |DEATH HAIKU| +|08/01/2022 04:15:25| |LAST EPISODE| +|08/01/2022 04:15:26| |/his/ ;_;7| +|08/01/2022 04:15:28| |ITS JERK| +|08/01/2022 04:15:32| RAT +|08/01/2022 04:15:32| >mouse +|08/01/2022 04:15:34| |poor helmets| +|08/01/2022 04:15:35| |why is the mouse so big?| +|08/01/2022 04:15:36| |P1000 WHEN| +|08/01/2022 04:15:38| |Thats the joke| +|08/01/2022 04:15:38| |POV: You Got Uptiered| +|08/01/2022 04:15:39| |Maybe the millions dead were worth it for these bangers huh| +|08/01/2022 04:15:41| RRAT +|08/01/2022 04:15:42| rrat +|08/01/2022 04:15:43| |german humour| +|08/01/2022 04:15:43| |test1 +test2| +|08/01/2022 04:15:45| |sasuga mausu| +|08/01/2022 04:15:47| ????????????????????????????????????????????????????????????????? +|08/01/2022 04:15:48| |you failed| +|08/01/2022 04:15:49| ogey +|08/01/2022 04:15:49| |saying time| +|08/01/2022 04:15:51| ogey +|08/01/2022 04:15:51| >slag +|08/01/2022 04:15:51| |Orange Pekora| +|08/01/2022 04:15:52| ??????????????????????????????????????????????????????????????????????????????? +|08/01/2022 04:15:54| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 04:15:54| |orange peko rrat| +|08/01/2022 04:15:55| |>not having a tank that can burrow underground as your flag tank| +|08/01/2022 04:15:55| ??????????????? +|08/01/2022 04:15:56| ?????????????? +|08/01/2022 04:15:56| |ogey rrat| +|08/01/2022 04:15:56| ?????????????????????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 04:15:58| |Have you heard this saying?| +|08/01/2022 04:15:58| |But do you know THIS Proverb?!| +|08/01/2022 04:15:59| |SHUT UP SLAG| +|08/01/2022 04:16:00| |no rrat bros plz stop| +|08/01/2022 04:16:01| ogey +|08/01/2022 04:16:02| okay +|08/01/2022 04:16:02| >vniggers +|08/01/2022 04:16:03| |basically: GUTS| +|08/01/2022 04:16:03| ????????????????? +|08/01/2022 04:16:03| |WHAT THE FUCK WAS THAT YOU SLUG| +|08/01/2022 04:16:03| ??????????????? +|08/01/2022 04:16:03| ?????????????????????????????????????????????? +|08/01/2022 04:16:04| |its like this saying| +|08/01/2022 04:16:05| |Maus is so sexy...| +|08/01/2022 04:16:06| RRAT +|08/01/2022 04:16:08| rrat +|08/01/2022 04:16:09| |cute peashooters| +|08/01/2022 04:16:10| |Fat lot of good that did.| +|08/01/2022 04:16:10| |/VT// OUT| +|08/01/2022 04:16:11| |>m3 actually hits something| +|08/01/2022 04:16:11| wwwwwwwwww +|08/01/2022 04:16:11| |I thought the Danmaku had slowed down. It's not working for some?| +|08/01/2022 04:16:19| |marine > pekora| +|08/01/2022 04:16:21| |>mausu cant pen concrete| +|08/01/2022 04:16:21| B..BAKANA +|08/01/2022 04:16:25| |SO sexy...| +|08/01/2022 04:16:25| |THE SHELLS! THEY DO NOTHING| +|08/01/2022 04:16:25| |innocent building? YEAH DESTROY IT| +|08/01/2022 04:16:26| |IT BUT A SCRATCH| +|08/01/2022 04:16:31| |sensha chuuba when?| +|08/01/2022 04:16:34| |in awe at the size of this lad| +|08/01/2022 04:16:35| |MOMO STFU | +|08/01/2022 04:16:38| |I SUPPOSE IF THEY WERE LUCKY THEY COULD GIVE US A HEADACHE| +|08/01/2022 04:16:39| >VTUBER +|08/01/2022 04:16:40| btfo +|08/01/2022 04:16:41| ohohohoh- +|08/01/2022 04:16:41| |oh great, they're dead| +|08/01/2022 04:16:42| jej +|08/01/2022 04:16:43| DORK +|08/01/2022 04:16:44| REKt +|08/01/2022 04:16:45| |ABSOLUTE UNIT| +|08/01/2022 04:16:45| kek +|08/01/2022 04:16:46| lel +|08/01/2022 04:16:46| wwwwwwww +|08/01/2022 04:16:47| LUCHBROS... +|08/01/2022 04:16:47| BTFO +|08/01/2022 04:16:47| |JUST TRACK IT RETARDS| +|08/01/2022 04:16:48| |Hahahahaha.... DED| +|08/01/2022 04:16:49| |THATS A THICC BOY| +|08/01/2022 04:16:49| |we got too cocky | +|08/01/2022 04:16:49| kek +|08/01/2022 04:16:50| |i'd watch tank chuuba| +|08/01/2022 04:16:50| kek +|08/01/2022 04:16:51| owned +|08/01/2022 04:16:52| |PANZER 3 REKT| +|08/01/2022 04:16:56| |I want to penetrate her armor with my firepower| +|08/01/2022 04:16:57| HA +|08/01/2022 04:17:04| REKT +|08/01/2022 04:17:04| |i kid you not, if you look real close at the maus's camo paint, you can see an among us, no clown| +|08/01/2022 04:17:04| |SHOT TRAP IT| +|08/01/2022 04:17:05| IDEA! +|08/01/2022 04:17:05| ! +|08/01/2022 04:17:05| |You can't track the Maus you goober| +|08/01/2022 04:17:08| boko! +|08/01/2022 04:17:08| |LMAO 2TANK| +|08/01/2022 04:17:08| |GREAT IDEA| +|08/01/2022 04:17:09| |wait, what did you say| +|08/01/2022 04:17:10| ! +|08/01/2022 04:17:10| |boko manual| +|08/01/2022 04:17:10| |inspiration strikes| +|08/01/2022 04:17:10| |>impenatrable armour BRAVO RELIC| +|08/01/2022 04:17:10| |GORILLA WARFARE| +|08/01/2022 04:17:11| ! +|08/01/2022 04:17:12| mogus +|08/01/2022 04:17:14| |saori calling you ookisugi| +|08/01/2022 04:17:15| L-lewd +|08/01/2022 04:17:15| |Monmo is getting too cocky there| +|08/01/2022 04:17:15| huh? +|08/01/2022 04:17:15| AAAAMOGUS>??????? +|08/01/2022 04:17:16| KITA +|08/01/2022 04:17:17| |I JUST GOT AN IDEA| +|08/01/2022 04:17:19| |Can't kill the rrat, ogey| +|08/01/2022 04:17:20| |its like this one boko movie| +|08/01/2022 04:17:20| |>thats it .... lets put a tank on that tank| +|08/01/2022 04:17:20| |Just think what would Boko do| +|08/01/2022 04:17:20| |>pretty crazy| +|08/01/2022 04:17:22| \NORIKO +|08/01/2022 04:17:24| |i fucking love hinterhalt tarnung| +|08/01/2022 04:17:28| |no room for error| +|08/01/2022 04:17:33| |listen closely | +|08/01/2022 04:17:37| error +|08/01/2022 04:17:37| |NANDEMO SURU YO| +|08/01/2022 04:17:38| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:17:38| |WELL WE TRIED OORARI BROS BUT THERE NO WIN THIS | +|08/01/2022 04:17:39| |Tuvok mode engaged| +|08/01/2022 04:17:39| |Blocks your ptah| +|08/01/2022 04:17:39| |>they lose to an ambush| +|08/01/2022 04:17:42| |THANKS TL| +|08/01/2022 04:17:43| |RAMMING SPEED| +|08/01/2022 04:17:45| |CODEX ASTARTES CALLS THIS MANOEUVER STEEL RAIN| +|08/01/2022 04:17:45| |THANKS TL| +|08/01/2022 04:17:47| Soyjak.party +|08/01/2022 04:17:49| ALLAH +|08/01/2022 04:17:50| |the lads| +|08/01/2022 04:17:50| |Peak realism incoming| +|08/01/2022 04:17:51| TOTSUGEKI +|08/01/2022 04:17:52| |X with Anzu, is X: a) tea b) SEX c) panzerfahren| +|08/01/2022 04:17:55| TOTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 04:17:55| gem +|08/01/2022 04:17:57| TOTSUGEKIIIIIII +|08/01/2022 04:17:59| |YOU OGEY'D YOUR LAST RRAT!| +|08/01/2022 04:17:59| |thank God for carbon| +|08/01/2022 04:18:00| |I would like the see the Maus team just a bit| +|08/01/2022 04:18:00| tokkun +|08/01/2022 04:18:01| B +|08/01/2022 04:18:02| |WE'RE THE EMPEROR'S FURY| +|08/01/2022 04:18:02| TOTSUGEKI +|08/01/2022 04:18:04| |tank mounting| +|08/01/2022 04:18:05| WOW +|08/01/2022 04:18:05| SPEED +|08/01/2022 04:18:06| INSHALLAH +|08/01/2022 04:18:06| WOW +|08/01/2022 04:18:06| |Wouldn't now be the best time for KMM to show up? Where the hell are they | +|08/01/2022 04:18:08| |here we go| +|08/01/2022 04:18:08| dead +|08/01/2022 04:18:08| WOW +|08/01/2022 04:18:08| BONK +|08/01/2022 04:18:09| WOW +|08/01/2022 04:18:10| WAO +|08/01/2022 04:18:10| WOW +|08/01/2022 04:18:11| wow! +|08/01/2022 04:18:12| *BOOM* +|08/01/2022 04:18:12| wow +|08/01/2022 04:18:13| logic +|08/01/2022 04:18:13| wow +|08/01/2022 04:18:13| |EPIC STRATS| +|08/01/2022 04:18:13| |TENNOHEIKA BANZAI!!!!!| +|08/01/2022 04:18:13| |dead on impact| +|08/01/2022 04:18:15| WOOOW +|08/01/2022 04:18:16| Mausa-chan... +|08/01/2022 04:18:16| IMPLYING +|08/01/2022 04:18:17| |ALLAHU AKBAR| +|08/01/2022 04:18:18| |CARBON COATED HETZER| +|08/01/2022 04:18:18| |>WH40K memems| +|08/01/2022 04:18:19| |pew pew| +|08/01/2022 04:18:20| |it's over| +|08/01/2022 04:18:20| |How sturdy are the 300m blocks these ships are made of?| +|08/01/2022 04:18:20| |SIEG THIS| +|08/01/2022 04:18:20| |CARBON TOO STRONG| +|08/01/2022 04:18:21| |By allah those girls harbor such iolence| +|08/01/2022 04:18:21| |Allahu akbar| +|08/01/2022 04:18:21| UTE +|08/01/2022 04:18:22| |pew pew pew pew| +|08/01/2022 04:18:22| |maus commander <3| +|08/01/2022 04:18:23| |oh no no no| +|08/01/2022 04:18:23| ALLLLLLLLLLLLAAAAAAAAAAAAAAAAAAAAAH +|08/01/2022 04:18:23| |TENNO HEKKA BANZAIIIIIII| +|08/01/2022 04:18:23| |Kono bangumi wa goran no suponsaa no teikyou de okurishimasu| +|08/01/2022 04:18:29| RAPE +|08/01/2022 04:18:30| SORRE +|08/01/2022 04:18:31| |no way that turret can traverse that fast| +|08/01/2022 04:18:33| GUTS +|08/01/2022 04:18:34| GOD +|08/01/2022 04:18:35| NIGEROO +|08/01/2022 04:18:36| |MAU MAU| +|08/01/2022 04:18:36| ???????????????????????????? +|08/01/2022 04:18:37| RAPE +|08/01/2022 04:18:38| snug... +|08/01/2022 04:18:38| |PANZER STACKING| +|08/01/2022 04:18:41| |what u doing man get off| +|08/01/2022 04:18:41| |was it rape?| +|08/01/2022 04:18:42| MOUNTED +|08/01/2022 04:18:42| 200iq +|08/01/2022 04:18:43| |PANER SEX| +|08/01/2022 04:18:44| |Don't wanna| +|08/01/2022 04:18:45| |DON'T WANNA| +|08/01/2022 04:18:45| |how did it get up the hetzter?| +|08/01/2022 04:18:46| GUTS +|08/01/2022 04:18:48| |>get off my roof| +|08/01/2022 04:18:48| |*snuggles on your turret*| +|08/01/2022 04:18:49| cute +|08/01/2022 04:18:49| |PANZER SEX| +|08/01/2022 04:18:51| BTFO +|08/01/2022 04:18:51| TECHNICALLY +|08/01/2022 04:18:51| |this is how germany lost ww2| +|08/01/2022 04:18:52| |No way| +|08/01/2022 04:18:53| |peak realism| +|08/01/2022 04:18:54| |>Get decapitated| +|08/01/2022 04:18:54| BTFO +|08/01/2022 04:18:57| |TANK ON TANK ACTION| +|08/01/2022 04:18:57| iyadesu +|08/01/2022 04:18:58| |CARBON COATING| +|08/01/2022 04:19:00| moooooooooooooot +|08/01/2022 04:19:00| GUTS +|08/01/2022 04:19:00| NO +|08/01/2022 04:19:00| |imagine not knowing that| +|08/01/2022 04:19:01| |get the fuck off| +|08/01/2022 04:19:02| |CARBON COATING| +|08/01/2022 04:19:02| |CARBON COATING| +|08/01/2022 04:19:03| GAATTTSU +|08/01/2022 04:19:04| |CARBON COATING| +|08/01/2022 04:19:04| CARUBON +|08/01/2022 04:19:05| |CARBON COATING| +|08/01/2022 04:19:05| |is this how baby tanks are made?| +|08/01/2022 04:19:06| |CARBON COATING FAIL| +|08/01/2022 04:19:06| CARBON +|08/01/2022 04:19:06| |get off me bro | +|08/01/2022 04:19:06| |why doesnt the maus just reverse| +|08/01/2022 04:19:08| KARBON +|08/01/2022 04:19:09| |all according to keikaku| +|08/01/2022 04:19:09| |how tf is this even possible wtf| +|08/01/2022 04:19:09| |tank drift tank drift| +|08/01/2022 04:19:11| |GET OUT OF MY YARD| +|08/01/2022 04:19:11| |did they just hop?| +|08/01/2022 04:19:12| |TARGET THE SLIT| +|08/01/2022 04:19:13| |NOT THE CARBON COATING| +|08/01/2022 04:19:15| |muh carbon| +|08/01/2022 04:19:16| Anzu +|08/01/2022 04:19:16| |HAND OF DESTINY| +|08/01/2022 04:19:16| GUTS +|08/01/2022 04:19:17| |KEIKAKU DOORI DA| +|08/01/2022 04:19:17| UTE +|08/01/2022 04:19:20| |RIP Mauko| +|08/01/2022 04:19:20| GUTS +|08/01/2022 04:19:20| GUTS +|08/01/2022 04:19:20| |You're pretty good...| +|08/01/2022 04:19:21| GUTS +|08/01/2022 04:19:21| GUTS +|08/01/2022 04:19:21| TAEKO +|08/01/2022 04:19:22| SPATS +|08/01/2022 04:19:22| |WHAT ARE YOU DOING STEP TANK| +|08/01/2022 04:19:22| |SHUT UP MOMO| +|08/01/2022 04:19:23| CASCA +|08/01/2022 04:19:24| GUTS +|08/01/2022 04:19:25| |F Maus| +|08/01/2022 04:19:25| 888888888888888888888 +|08/01/2022 04:19:26| |USHIRO NO SURITO| +|08/01/2022 04:19:26| 888888888888888888 +|08/01/2022 04:19:26| |Tanks procreating colorized| +|08/01/2022 04:19:27| |actually pushing| +|08/01/2022 04:19:27| |ez | +|08/01/2022 04:19:28| |I want to target the slit on Miho's rear| +|08/01/2022 04:19:28| |>SLIT ON ITS REAR| +|08/01/2022 04:19:28| |MAUS BTFO| +|08/01/2022 04:19:29| 88888888888888888888888888888 +|08/01/2022 04:19:29| |DON'T WANNA| +|08/01/2022 04:19:30| |AIM FOR THE SLIT| +|08/01/2022 04:19:31| FFFFFFF +|08/01/2022 04:19:31| 8888888888888888 +|08/01/2022 04:19:31| MOUSEBROS......... +|08/01/2022 04:19:31| |Dead RRAT| +|08/01/2022 04:19:32| 888888888888888888888888888888888888 +|08/01/2022 04:19:32| |THE MAUS IS DOWN| +|08/01/2022 04:19:33| 8888888888888888888888888888 +|08/01/2022 04:19:33| SHITTERS +|08/01/2022 04:19:33| |MAUS BTFO| +|08/01/2022 04:19:33| 888888888888888 +|08/01/2022 04:19:33| |SUGOI | +|08/01/2022 04:19:34| OARAI'D +|08/01/2022 04:19:34| rekt +|08/01/2022 04:19:36| |I'LL TARGET THE SLIT ON MIHO'S REAR| +|08/01/2022 04:19:36| ?????????????????????? +|08/01/2022 04:19:37| |WE GOT TOO COCKY KUROMOROMINEBROS| +|08/01/2022 04:19:37| |They could have just reversed... | +|08/01/2022 04:19:37| |nerd down| +|08/01/2022 04:19:38| |where are the other tanks| +|08/01/2022 04:19:39| |rip peko| +|08/01/2022 04:19:40| |Slit is the weak spot| +|08/01/2022 04:19:40| SUGOIIIIIIII +|08/01/2022 04:19:45| >MAUSKEKS +|08/01/2022 04:19:47| |THIS CAN"T BE HAPPENING MAUSBROS| +|08/01/2022 04:19:50| mausbros... +|08/01/2022 04:19:51| KAWAII +|08/01/2022 04:19:52| |hetzer wins again| +|08/01/2022 04:19:52| |floppy cannon| +|08/01/2022 04:19:53| |HETZERBROS NOT LIKE THIS| +|08/01/2022 04:19:55| |Maus bros..... We lost| +|08/01/2022 04:19:57| |hai taxi~| +|08/01/2022 04:19:58| |so that's how baby tanks are made huh| +|08/01/2022 04:19:59| |ooarai cant possibly win this one| +|08/01/2022 04:19:59| ;_;7 +|08/01/2022 04:20:00| F +|08/01/2022 04:20:00| |RIP THICC BOY| +|08/01/2022 04:20:01| F +|08/01/2022 04:20:01| |cute tank sparks| +|08/01/2022 04:20:01| RIP +|08/01/2022 04:20:02| flacid +|08/01/2022 04:20:02| |czechnology... | +|08/01/2022 04:20:04| F +|08/01/2022 04:20:04| F +|08/01/2022 04:20:05| F +|08/01/2022 04:20:05| rip +|08/01/2022 04:20:05| |Goodnight sweet hetzer ;_;| +|08/01/2022 04:20:05| |HETZERBROS WE JOBBED| +|08/01/2022 04:20:06| |ITS OVER| +|08/01/2022 04:20:06| o7 +|08/01/2022 04:20:07| F +|08/01/2022 04:20:08| F +|08/01/2022 04:20:08| F +|08/01/2022 04:20:09| F +|08/01/2022 04:20:09| rip +|08/01/2022 04:20:09| ;_;7 +|08/01/2022 04:20:09| f +|08/01/2022 04:20:10| o7 +|08/01/2022 04:20:10| ;_;7 +|08/01/2022 04:20:10| |AAAAAAAAAANNNNNNNNNNZZZZZZZZZZZZUUUUUUUUUUUUUUUUU UUUUUUUUOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 04:20:10| |Riop Hetzewr| +|08/01/2022 04:20:10| o7 +|08/01/2022 04:20:11| o7 +|08/01/2022 04:20:11| ;__;7 +|08/01/2022 04:20:12| F +|08/01/2022 04:20:12| >THAT +|08/01/2022 04:20:13| rip +|08/01/2022 04:20:13| |HETZERCHAD ;___;7| +|08/01/2022 04:20:13| FFFFFF +|08/01/2022 04:20:14| ;_;7 +|08/01/2022 04:20:14| |sasuga hetzer| +|08/01/2022 04:20:14| F +|08/01/2022 04:20:15| NOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:20:15| F +|08/01/2022 04:20:16| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:20:17| |and they survived that much| +|08/01/2022 04:20:17| |;_;7 hetzer-kun| +|08/01/2022 04:20:17| o7 +|08/01/2022 04:20:17| o7 +|08/01/2022 04:20:17| o7 +|08/01/2022 04:20:17| RIP +|08/01/2022 04:20:17| o7 +|08/01/2022 04:20:18| ;__;7 +|08/01/2022 04:20:18| |>our job here is done >you didn't do anything| +|08/01/2022 04:20:19| ;_;7 +|08/01/2022 04:20:19| LOUDER +|08/01/2022 04:20:19| FAITO +|08/01/2022 04:20:20| |thanks tl| +|08/01/2022 04:20:21| ;_;7 +|08/01/2022 04:20:23| ANZU +|08/01/2022 04:20:23| ;_;7 +|08/01/2022 04:20:23| FAITO +|08/01/2022 04:20:24| |>it was a good run| +|08/01/2022 04:20:24| o7 +|08/01/2022 04:20:25| F +|08/01/2022 04:20:25| |F crushed by Thicc tank| +|08/01/2022 04:20:29| |IM SURE THIS WONT IMPACT HER UNIVERSITY ENTRANCE| +|08/01/2022 04:20:37| |haha yeah| +|08/01/2022 04:20:37| |4-14 ez dubs| +|08/01/2022 04:20:39| |98% CHANCE OF VICTORY| +|08/01/2022 04:20:39| |DORIKO GATSU| +|08/01/2022 04:20:41| |Momobros we got too cocky| +|08/01/2022 04:20:45| |4 v 14 gg ez no re| +|08/01/2022 04:20:50| LEOPON +|08/01/2022 04:20:50| |tfw noriko makes me tear up | +|08/01/2022 04:20:52| Elefant +|08/01/2022 04:20:54| 1v18? +|08/01/2022 04:20:56| AZUDA +|08/01/2022 04:20:57| |GIVE EM HELL| +|08/01/2022 04:20:58| jagdnigger........... +|08/01/2022 04:20:58| |cunny bunnies| +|08/01/2022 04:20:59| |>Trying to 1v1 a superiour tank| +|08/01/2022 04:21:02| okee +|08/01/2022 04:21:03| ogey +|08/01/2022 04:21:03| |no crying in senshado!| +|08/01/2022 04:21:04| |azusa ascending| +|08/01/2022 04:21:05| oohkayyyy +|08/01/2022 04:21:05| Manko +|08/01/2022 04:21:06| |time to be MVP Leopon chads| +|08/01/2022 04:21:07| okaaay +|08/01/2022 04:21:07| okee +|08/01/2022 04:21:09| ogey +|08/01/2022 04:21:13| OKEH +|08/01/2022 04:21:15| |DIZZY WANDER| +|08/01/2022 04:21:15| |FURAFURA SAKUSEN| +|08/01/2022 04:21:16| |Superior tank with infeiror crew| +|08/01/2022 04:21:16| |o g e y | +|08/01/2022 04:21:17| |DRUNK DRIVING MAKO| +|08/01/2022 04:21:24| FUWAFUWA +|08/01/2022 04:21:24| フラフラ作戦って +|08/01/2022 04:21:33| |MAKO MAKE SURE YOU DRIVE LIKE A DRUNK BITCH| +|08/01/2022 04:21:37| |fura fura taimu| +|08/01/2022 04:21:44| |Did you just call my waify inferiour, anon?| +|08/01/2022 04:21:44| |who could be behind this post| +|08/01/2022 04:21:46| プータロー作戦みたいなもんやろ +|08/01/2022 04:21:48| |LET'S GO MAHO CHADS| +|08/01/2022 04:21:48| |buffering time| +|08/01/2022 04:21:51| |bros i;m getting tired| +|08/01/2022 04:21:52| |GuP x K-ON when| +|08/01/2022 04:21:53| ふらふら時間 +|08/01/2022 04:21:54| https://soyjak.party/soy//res/275227.html +|08/01/2022 04:21:58| MAHOBVLLS +|08/01/2022 04:22:01| |infantry support? just support your konigstiger with another konigstiger| +|08/01/2022 04:22:02| |SNW TOMORROW| +|08/01/2022 04:22:04| |YOU MUST NOT FALL ASLEEP| +|08/01/2022 04:22:08| |kill yourself sojak retard| +|08/01/2022 04:22:11| |rip to all those that passed out already| +|08/01/2022 04:22:14| |lads I pissed. please forgive me| +|08/01/2022 04:22:21| |>passing out | +|08/01/2022 04:22:21| |Infantry support is just a meme| +|08/01/2022 04:22:22| |piss in my mouth| +|08/01/2022 04:22:22| |IM HOLDING ON BROS| +|08/01/2022 04:22:23| |I was hoping I'd last the film but I don't know folk| +|08/01/2022 04:22:26| |RAPE WANI IN THE MOUTH| +|08/01/2022 04:22:28| KONO +|08/01/2022 04:22:29| |RIP to all those who died and will die before das finale 6| +|08/01/2022 04:22:29| |please face the wall now| +|08/01/2022 04:22:30| |as long as it was in a bottle pissing is ok| +|08/01/2022 04:22:33| |I still haven't shat| +|08/01/2022 04:22:33| |>still needing basic human needs like sleeping| +|08/01/2022 04:22:34| |idk man i think taking a der film nap is worth it| +|08/01/2022 04:22:36| |HEAVY TANK KILLERS!| +|08/01/2022 04:22:36| |>kill yourself soyjak retard| +|08/01/2022 04:22:38| |>they learned from the mo vie| +|08/01/2022 04:22:39| aye! +|08/01/2022 04:22:40| |AZUDA HI| +|08/01/2022 04:22:40| |HAI HAI HAI| +|08/01/2022 04:22:41| Ö +|08/01/2022 04:22:42| aye? +|08/01/2022 04:22:42| |aye aye aye!| +|08/01/2022 04:22:42| |wow this is just like kelly's heroes| +|08/01/2022 04:22:42| |AYE AYE AYE| +|08/01/2022 04:22:43| |soyjaks incoming| +|08/01/2022 04:22:44| tsukimontsukimontsukimon +|08/01/2022 04:22:46| KINO +|08/01/2022 04:22:46| |NAME DROP| +|08/01/2022 04:22:48| Kino +|08/01/2022 04:22:50| |RIGHT TURN| +|08/01/2022 04:22:50| |operation kino| +|08/01/2022 04:22:50| KINO +|08/01/2022 04:22:54| |Sleeping > GuP STREAM | +|08/01/2022 04:22:55| |Name drop? they dead now| +|08/01/2022 04:22:55| |fucking Kino| +|08/01/2022 04:22:56| KINO +|08/01/2022 04:22:56| |who's kelly?| +|08/01/2022 04:22:57| KINO +|08/01/2022 04:22:57| |Rip Ferdinand| +|08/01/2022 04:22:57| |HOGANS HEROES| +|08/01/2022 04:22:59| Ö +|08/01/2022 04:23:00| |>Imagine the eearth still be in one piece by the time DF6 comes out| +|08/01/2022 04:23:01| |FAT SHAMED| +|08/01/2022 04:23:01| ELEFANTBROS... +|08/01/2022 04:23:02| |>soyjaks incoming | +|08/01/2022 04:23:02| |THAT'S PAINT| +|08/01/2022 04:23:02| |DUMB FAT TANK| +|08/01/2022 04:23:03| |truly ikinography| +|08/01/2022 04:23:04| BASED +|08/01/2022 04:23:05| ANAL +|08/01/2022 04:23:05| |ITS OVER| +|08/01/2022 04:23:06| Ö +|08/01/2022 04:23:07| FAT +|08/01/2022 04:23:07| RIP +|08/01/2022 04:23:08| |maus too fat| +|08/01/2022 04:23:10| |>>soyjaks incoming| +|08/01/2022 04:23:11| ここは出来ない名無し人々いっぱいですよね~~~ +|08/01/2022 04:23:12| |CHO CHO| +|08/01/2022 04:23:13| |SIZE MATTERS BROS| +|08/01/2022 04:23:14| o7 +|08/01/2022 04:23:15| |ferdinand too fat| +|08/01/2022 04:23:16| GENIUS +|08/01/2022 04:23:16| |SAKI THE GAWD| +|08/01/2022 04:23:16| |500 IQ| +|08/01/2022 04:23:16| |too big| +|08/01/2022 04:23:17| saki? +|08/01/2022 04:23:17| SAKI!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 04:23:18| |BASED AUTIST SAKI| +|08/01/2022 04:23:18| butterfly? +|08/01/2022 04:23:19| |SHE SPOKE| +|08/01/2022 04:23:19| SAKI +|08/01/2022 04:23:20| genius +|08/01/2022 04:23:21| |SE NO| +|08/01/2022 04:23:21| Saki!!! +|08/01/2022 04:23:22| |Big brained| +|08/01/2022 04:23:24| SAKI2SMART +|08/01/2022 04:23:24| |how does this girls head work| +|08/01/2022 04:23:27| |999999999 IQ| +|08/01/2022 04:23:28| |ass blasted| +|08/01/2022 04:23:28| |Em, you just killed the crew| +|08/01/2022 04:23:28| rekt +|08/01/2022 04:23:29| |OH N-| +|08/01/2022 04:23:29| |ERIKA SEETHING| +|08/01/2022 04:23:29| |AUTISM SPEAKS| +|08/01/2022 04:23:29| |bunny cunnies... | +|08/01/2022 04:23:31| b +|08/01/2022 04:23:34| OST +|08/01/2022 04:23:39| |ass blasted| +|08/01/2022 04:23:39| https://soyjak.party/soy//res/275227.html +|08/01/2022 04:23:41| |autism > erika| +|08/01/2022 04:23:41| lmao +|08/01/2022 04:23:49| |>attempted murder| +|08/01/2022 04:23:49| >soyjacks +|08/01/2022 04:23:50| |nobody will click your links, cancer| +|08/01/2022 04:23:55| GUTS! +|08/01/2022 04:23:57| |fuck off to reddit| +|08/01/2022 04:23:57| |:tf: u mad?| +|08/01/2022 04:24:03| GUTS +|08/01/2022 04:24:04| >:tf: +|08/01/2022 04:24:05| |posting links here lmoa| +|08/01/2022 04:24:05| https://suckmyass +|08/01/2022 04:24:07| guts +|08/01/2022 04:24:08| UTE +|08/01/2022 04:24:10| |SOYJACK A SHIT| +|08/01/2022 04:24:11| lemonparty.org +|08/01/2022 04:24:12| |>nobody will click your links cancer| +|08/01/2022 04:24:12| |pepega why you mad though| +|08/01/2022 04:24:12| |these poor bunneies| +|08/01/2022 04:24:14| GUTS +|08/01/2022 04:24:15| |>kys soyjack| +|08/01/2022 04:24:16| Ö +|08/01/2022 04:24:19| goatse.cx +|08/01/2022 04:24:19| |200 IQ| +|08/01/2022 04:24:20| |Mine Were Of Trouble Peter Kemp| +|08/01/2022 04:24:20| |>the redditor showed up| +|08/01/2022 04:24:21| TROLLED +|08/01/2022 04:24:21| https://TLNOTEANZUMEANSSEX.com +|08/01/2022 04:24:25| |AZUSA TOO SMART| +|08/01/2022 04:24:27| tubgirl.jpg +|08/01/2022 04:24:28| |o fuk...| +|08/01/2022 04:24:28| www.blacked.com +|08/01/2022 04:24:29| |>live soyjak | +|08/01/2022 04:24:30| |what are we drinking tonight boys| +|08/01/2022 04:24:35| beer +|08/01/2022 04:24:36| water +|08/01/2022 04:24:36| Pee +|08/01/2022 04:24:38| water +|08/01/2022 04:24:38| |Why can't I penetrate Jagdpanzer's rear?| +|08/01/2022 04:24:39| fanta +|08/01/2022 04:24:41| darjeeling +|08/01/2022 04:24:42| RIP +|08/01/2022 04:24:42| |BEER BEER BEER| +|08/01/2022 04:24:43| Bathwater +|08/01/2022 04:24:43| water +|08/01/2022 04:24:44| |rum, vodka, wine| +|08/01/2022 04:24:45| |atama ii| +|08/01/2022 04:24:45| |they dead| +|08/01/2022 04:24:48| ASAHI +|08/01/2022 04:24:50| ardbeg +|08/01/2022 04:24:50| |Now kiss| +|08/01/2022 04:24:50| |brown liquor| +|08/01/2022 04:24:50| |I'd rather penetrate Anzus rear| +|08/01/2022 04:24:51| kowaii... +|08/01/2022 04:24:52| |chat is degenerating| +|08/01/2022 04:24:53| GIN +|08/01/2022 04:24:54| |TURRET FENCING| +|08/01/2022 04:24:54| |wait what| +|08/01/2022 04:24:58| |HIGH IQ| +|08/01/2022 04:24:58| |specifically homebrew| +|08/01/2022 04:24:59| |jagdnigger bros........| +|08/01/2022 04:24:59| JOUST +|08/01/2022 04:25:00| |Chat is reclining...| +|08/01/2022 04:25:01| AZUSA!!! +|08/01/2022 04:25:02| |how is this happening| +|08/01/2022 04:25:03| |chat falling apart at the kino as expected| +|08/01/2022 04:25:04| |capwisun time| +|08/01/2022 04:25:04| 卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐 +|08/01/2022 04:25:07| |Chat is returning to native state of degeneration| +|08/01/2022 04:25:07| jagdtigerbros... +|08/01/2022 04:25:08| |AZUSA BASED!| +|08/01/2022 04:25:09| |the music| +|08/01/2022 04:25:09| OUCH +|08/01/2022 04:25:10| rip +|08/01/2022 04:25:11| jej +|08/01/2022 04:25:12| F +|08/01/2022 04:25:13| |NOT THE CUNNY| +|08/01/2022 04:25:13| |RIP turret| +|08/01/2022 04:25:13| OUCH +|08/01/2022 04:25:15| |lmao get fucked| +|08/01/2022 04:25:16| |the front fell off| +|08/01/2022 04:25:16| dead +|08/01/2022 04:25:16| kek +|08/01/2022 04:25:16| wwwww +|08/01/2022 04:25:17| F +|08/01/2022 04:25:17| rip +|08/01/2022 04:25:17| ouch +|08/01/2022 04:25:17| aaaaaaaaaaaaaaah +|08/01/2022 04:25:17| |Broken ponos!| +|08/01/2022 04:25:17| damn +|08/01/2022 04:25:17| JESUS +|08/01/2022 04:25:18| GORE +|08/01/2022 04:25:18| RIP +|08/01/2022 04:25:18| F +|08/01/2022 04:25:18| |jagdcucks how could this happen.....| +|08/01/2022 04:25:19| |it's over| +|08/01/2022 04:25:19| WHy +|08/01/2022 04:25:20| |I felt that| +|08/01/2022 04:25:20| F +|08/01/2022 04:25:21| CRHIST +|08/01/2022 04:25:21| |its over...| +|08/01/2022 04:25:21| |i felt that| +|08/01/2022 04:25:21| |JAGDBROS HOW COULD IT COME TO THIS| +|08/01/2022 04:25:21| 草wwwww +|08/01/2022 04:25:22| NOOOOO +|08/01/2022 04:25:23| |out fucking skilled| +|08/01/2022 04:25:24| |Azusa love| +|08/01/2022 04:25:25| |AZUSAbros we won| +|08/01/2022 04:25:25| |RIP Cunnytonk| +|08/01/2022 04:25:26| F +|08/01/2022 04:25:26| https://soyjak.party/soy//res/275227.html +|08/01/2022 04:25:28| >smellefant +|08/01/2022 04:25:28| |lmaoing at JAGDNIGGERS| +|08/01/2022 04:25:30| |Jagdnigger out kek| +|08/01/2022 04:25:30| F +|08/01/2022 04:25:33| rabbitbros +|08/01/2022 04:25:35| |AYA GLASSES ARE RIP| +|08/01/2022 04:25:36| 卐卐卐卐 +|08/01/2022 04:25:39| |you WILL stop posting links retard| +|08/01/2022 04:25:39| |mina daijoubu desu| +|08/01/2022 04:25:44| |>Saki doesn't respond| +|08/01/2022 04:25:47| https://soyjak.party/soy//res/275227.html +|08/01/2022 04:25:49| |How do you even expect people to click that link here like wtf retard| +|08/01/2022 04:25:50| sakibros... +|08/01/2022 04:25:52| |she dead| +|08/01/2022 04:25:55| |WE CAN STILL WIN THIS KUROMORIMINE BROS | +|08/01/2022 04:25:55| |THE LAST STAND| +|08/01/2022 04:25:55| |here we go lads| +|08/01/2022 04:25:57| |haha soyjacks funny| +|08/01/2022 04:25:58| |DO NOT ENTER| +|08/01/2022 04:25:59| |Saki is a product of group hallucination| +|08/01/2022 04:26:00| |you should stop posting links....NOW!| +|08/01/2022 04:26:01| o7 +|08/01/2022 04:26:02| o7 +|08/01/2022 04:26:02| |ROCKSTAR PARK| +|08/01/2022 04:26:02| Ö +|08/01/2022 04:26:02| KITA +|08/01/2022 04:26:03| |soyjackoff my nutz | +|08/01/2022 04:26:04| Kitaaaaaaaaaa! +|08/01/2022 04:26:04| |1v1 time| +|08/01/2022 04:26:04| |Oh yeah this part| +|08/01/2022 04:26:04| |HOLD THE LINE| +|08/01/2022 04:26:04| |THOU SHALL NOT PASS| +|08/01/2022 04:26:06| |GAVE THEIR LIVES SO BOLDLY| +|08/01/2022 04:26:06| |YOU SHALL NOT PASS| +|08/01/2022 04:26:06| |Fuck kikes and spammers| +|08/01/2022 04:26:06| |soyjacks are for 15 year olds| +|08/01/2022 04:26:07| |the alamo approaches | +|08/01/2022 04:26:08| |PURE KINO INCOMING| +|08/01/2022 04:26:10| o/ +|08/01/2022 04:26:10| |wojack is...le funny| +|08/01/2022 04:26:12| |KUROMOROMINEBROS WE ARE GOING TO MAKE IT| +|08/01/2022 04:26:12| |LOVE ISN'T ALWAYS ON TIME| +|08/01/2022 04:26:12| |Time for kino| +|08/01/2022 04:26:15| DUEL! +|08/01/2022 04:26:15| |SISTER DUEL| +|08/01/2022 04:26:19| SNAAAAAAKE +|08/01/2022 04:26:19| MAHO +|08/01/2022 04:26:20| |1V1 FAGGET| +|08/01/2022 04:26:20| |1V1 ME | +|08/01/2022 04:26:21| HODL +|08/01/2022 04:26:22| DVEL! +|08/01/2022 04:26:24| seemless +|08/01/2022 04:26:24| |WE SETTLE THIS HERE| +|08/01/2022 04:26:26| |MULTI-TREAD DRIFTING| +|08/01/2022 04:26:26| HONOURRRRR +|08/01/2022 04:26:26| |NIGERUNDAYO | +|08/01/2022 04:26:27| |IMOUTO x ONEESAN| +|08/01/2022 04:26:27| |TONIGHT, TODAY| +|08/01/2022 04:26:28| |IT'S TIME TO D-D-D-DUEL| +|08/01/2022 04:26:29| |DEJA VU| +|08/01/2022 04:26:29| DU-DU-DUEL +|08/01/2022 04:26:30| |1v1 me fagget| +|08/01/2022 04:26:32| |WE ACE COMBAT ZERO NOW| +|08/01/2022 04:26:32| |holy shit leopon is the sexiest tank| +|08/01/2022 04:26:32| |SOYJACK A SHIT AND SO ARE ITS LOSER POSTERS| +|08/01/2022 04:26:32| |Mano a mano? More like... Miho a Maho| +|08/01/2022 04:26:35| nani? +|08/01/2022 04:26:36| |STANDING HERE| +|08/01/2022 04:26:39| |miho x maho| +|08/01/2022 04:26:41| |I REALIZE| +|08/01/2022 04:26:41| KINO +|08/01/2022 04:26:42| |STANDING HERE| +|08/01/2022 04:26:43| |is it really a sexy tank?| +|08/01/2022 04:26:44| |WTF ERIKA DONT CALL MY PORSCHE A FAILED WEAPON| +|08/01/2022 04:26:44| |I REALIZE| +|08/01/2022 04:26:44| |SISTA DORIFTO!| +|08/01/2022 04:26:45| |MAHO MAHO MAHO| +|08/01/2022 04:26:45| |Maho's Mahos....| +|08/01/2022 04:26:45| KINO +|08/01/2022 04:26:46| KINO +|08/01/2022 04:26:47| |pz iv vs tiger bro| +|08/01/2022 04:26:48| |THAT IN THE END| +|08/01/2022 04:26:49| |What's this show called again?| +|08/01/2022 04:26:51| |DRIFT ON MY COCK| +|08/01/2022 04:26:51| |YOU WERE JUST LIKE ME| +|08/01/2022 04:26:52| |BONDING TIME| +|08/01/2022 04:26:52| |YOU WERE JUST LIKE ME| +|08/01/2022 04:26:53| |Tiger? More like NIGGER!| +|08/01/2022 04:26:53| |YOU WERE JUST LIKE ME | +|08/01/2022 04:26:53| |Miho x Maho but in bed| +|08/01/2022 04:26:53| KINO +|08/01/2022 04:26:56| |initial t| +|08/01/2022 04:26:56| |YOU WERE JUST LIKE ME| +|08/01/2022 04:26:56| |cute 3D| +|08/01/2022 04:26:57| |YOU WERE JUST LIKE ME| +|08/01/2022 04:26:57| k-on +|08/01/2022 04:27:00| |TRYING TO MAKE HISTORY| +|08/01/2022 04:27:01| |Iron Idols| +|08/01/2022 04:27:01| |TRYING TO MAKE HISTORY| +|08/01/2022 04:27:03| |i bet maho wants to suck miho's mihos| +|08/01/2022 04:27:05| KINO +|08/01/2022 04:27:07| |LET'S GO MAHO| +|08/01/2022 04:27:07| |BUT WHOS TO JUDGE| +|08/01/2022 04:27:08| |tfw no stabilisers| +|08/01/2022 04:27:10| |NIGHT OF FIRE| +|08/01/2022 04:27:10| |I NEED cock miho| +|08/01/2022 04:27:10| |no doubt| +|08/01/2022 04:27:10| |female + IFV| +|08/01/2022 04:27:11| |FIGHTING SISTER AGAINST SISTER TO THE BITTER END| +|08/01/2022 04:27:12| |Pekoe-san, have you heard this saying? "Reminder Darj best waifu".| +|08/01/2022 04:27:13| |who doesn't want to suck mihos mihos| +|08/01/2022 04:27:14| |BUT WHO'S TO JUDGE| +|08/01/2022 04:27:14| |THE RIGHT FROM WRONG| +|08/01/2022 04:27:15| |THE RIGHT FROM WRONG| +|08/01/2022 04:27:15| |I FOLLOWED MY WRATH| +|08/01/2022 04:27:16| |erika wants to join| +|08/01/2022 04:27:17| |I bet I want to suck on Miho's Mihos| +|08/01/2022 04:27:18| |winner gets to be on top| +|08/01/2022 04:27:21| |Mako is the True MVP of this duel| +|08/01/2022 04:27:21| |TANK DUEL| +|08/01/2022 04:27:23| |OPERATION PUNCHY!| +|08/01/2022 04:27:23| |thats a shit syinh| +|08/01/2022 04:27:26| |WHEN YOUR GUARD IS DOWN I THINK WE'LL ALL AGREE| +|08/01/2022 04:27:27| |I'M BURNIN UP FOR YOU| +|08/01/2022 04:27:27| |I FUCKING LOVE MAHO!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:27:29| |I THINK WE'LL BOTH AGREE | +|08/01/2022 04:27:30| buffer +|08/01/2022 04:27:33| |Erika is being cucked right now| +|08/01/2022 04:27:35| |presss 3 for a threesome with Erika| +|08/01/2022 04:27:36| |KILL HER MAHOO| +|08/01/2022 04:27:36| |VIOLENCE BREEDS VIOLENCE| +|08/01/2022 04:27:38| |Maho wins every time| +|08/01/2022 04:27:38| |Maho smart| +|08/01/2022 04:27:38| 3 +|08/01/2022 04:27:38| |CARBON HELP ME| +|08/01/2022 04:27:40| |THAT IN THE END IT HAS TO BE THIS WAY~| +|08/01/2022 04:27:42| |VIOLENCE BREEDS VIOLENCE| +|08/01/2022 04:27:42| |Violence breeds violence| +|08/01/2022 04:27:44| GG +|08/01/2022 04:27:45| |BUT IN THE END IT HAS TO BE THIS WAYYYYYYYYYYY| +|08/01/2022 04:27:46| |The same strategy the Wani uses in DF3 to defeat Kat| +|08/01/2022 04:27:47| rammed +|08/01/2022 04:27:48| |I BURN EVERY TIME THAT I'M CLOSE TO YOU| +|08/01/2022 04:27:50| |NOT LIKE THIS| +|08/01/2022 04:27:50| |war never changes| +|08/01/2022 04:27:51| |cute maho| +|08/01/2022 04:27:54| 卐卐卐卐卐卐 +|08/01/2022 04:27:55| |BURNIN UP FOR YOU| +|08/01/2022 04:27:58| |maho is always cute| +|08/01/2022 04:27:58| KUSO +|08/01/2022 04:27:59| |FOR THE GRACE FOR THE MIGHT OF OUR LORD, IN THE NAME OF HIS GLORY| +|08/01/2022 04:28:00| |solid snek told me war has changed though?| +|08/01/2022 04:28:04| based +|08/01/2022 04:28:06| |how many concussions did that move cause?| +|08/01/2022 04:28:06| |BURNIIIIIIIING UP FOR YOOOOOUUU| +|08/01/2022 04:28:08| |how can they not disable a stationary target| +|08/01/2022 04:28:10| >though +|08/01/2022 04:28:12| |war never changes...| +|08/01/2022 04:28:13| |AMAAAZING GRAACEEE| +|08/01/2022 04:28:13| |NIGHT OF FIRE| +|08/01/2022 04:28:14| |F FOR DUCKS| +|08/01/2022 04:28:15| |KINO KINO KINO KINO| +|08/01/2022 04:28:15| >BUFFER +|08/01/2022 04:28:16| |Need for Speed: Carbon Coating| +|08/01/2022 04:28:18| >BUFFERING +|08/01/2022 04:28:18| |how can they not disable an angled Tiger P| +|08/01/2022 04:28:18| F +|08/01/2022 04:28:19| |its over...| +|08/01/2022 04:28:19| BUFFERONI +|08/01/2022 04:28:20| RIP +|08/01/2022 04:28:21| HOLD +|08/01/2022 04:28:22| buff +|08/01/2022 04:28:22| |war has changed| +|08/01/2022 04:28:24| |buffer time| +|08/01/2022 04:28:24| |So this porsche power, huh?| +|08/01/2022 04:28:26| |DEJA VU| +|08/01/2022 04:28:26| F +|08/01/2022 04:28:26| |RIP MEDIUM TANK BROS| +|08/01/2022 04:28:27| Kino +|08/01/2022 04:28:27| |>Shitbox porsche survives 300 direct hits| +|08/01/2022 04:28:28| |TIGER STAY WINNING| +|08/01/2022 04:28:28| |not buffering shit again| +|08/01/2022 04:28:29| |$1000 on BLACK FORSET to win| +|08/01/2022 04:28:30| |corner plate is like 80mm thick| +|08/01/2022 04:28:30| |LEOPON HOLD| +|08/01/2022 04:28:30| |fucking hell| +|08/01/2022 04:28:31| |bug buff| +|08/01/2022 04:28:31| |GAVE THEIR LIVES SO BOLDLY| +|08/01/2022 04:28:32| |IF KUROMORIMINE LOSES IM GETTING SENT TO BIRKENAU| +|08/01/2022 04:28:33| |goddam buffering| +|08/01/2022 04:28:34| |rip clutch tank| +|08/01/2022 04:28:35| |LEOPON HOLD| +|08/01/2022 04:28:36| |the tiger has been put down| +|08/01/2022 04:28:37| ;_;7 +|08/01/2022 04:28:37| NORIKO +|08/01/2022 04:28:38| |IN THE NAME OF GOD| +|08/01/2022 04:28:38| RIP! +|08/01/2022 04:28:38| |Porsche ;_;7| +|08/01/2022 04:28:39| F +|08/01/2022 04:28:40| MVP +|08/01/2022 04:28:40| |Leopon ;_;| +|08/01/2022 04:28:41| |EYE OF THE TIGER| +|08/01/2022 04:28:41| F +|08/01/2022 04:28:41| |RIP BROWN GIRL TEAM| +|08/01/2022 04:28:42| F +|08/01/2022 04:28:43| F +|08/01/2022 04:28:44| o7 +|08/01/2022 04:28:44| F +|08/01/2022 04:28:44| |DEFEND LIKE A LION| +|08/01/2022 04:28:44| proschebros... +|08/01/2022 04:28:44| |If KMM lose imma commit| +|08/01/2022 04:28:45| ;_;7 +|08/01/2022 04:28:45| o7 +|08/01/2022 04:28:46| TOTSUGEKI +|08/01/2022 04:28:46| TOTSUGEKI +|08/01/2022 04:28:46| F +|08/01/2022 04:28:46| |what would gimi do?| +|08/01/2022 04:28:47| TOTSUGEKI +|08/01/2022 04:28:47| ;_;7 +|08/01/2022 04:28:48| TOTSUGEKI +|08/01/2022 04:28:50| TOTSUGEKI? +|08/01/2022 04:28:51| TOTSUGEKI +|08/01/2022 04:28:51| |Oarai it's over| +|08/01/2022 04:28:52| |PORUSHE TIGAAAAAAA| +|08/01/2022 04:28:54| smugs +|08/01/2022 04:28:54| |porsche tiger is the strongest| +|08/01/2022 04:28:54| |YUUKURI DE II YO| +|08/01/2022 04:28:55| |RED SUN| +|08/01/2022 04:28:55| |BEST TEAM EVEN IN DEATH| +|08/01/2022 04:28:57| |yukkuri de ii yo~| +|08/01/2022 04:29:00| |TOTSUGEKI! O/| +|08/01/2022 04:29:02| ゆっくりねえええ +|08/01/2022 04:29:02| |WE GOT THIS IN THE BAG GERMAN BROS| +|08/01/2022 04:29:05| |Hourly reminder to HYDRATE| +|08/01/2022 04:29:05| |WE'VE GOT THIS MAHOCHADS| +|08/01/2022 04:29:10| |I love the pov shots| +|08/01/2022 04:29:11| |they used 3D really well| +|08/01/2022 04:29:12| |Accurate representation of how WW2 ended in Europe| +|08/01/2022 04:29:12| |yukkuri de ii yo~| +|08/01/2022 04:29:13| |Guys I think the german tank is gonna win this one| +|08/01/2022 04:29:15| |COME ON OOARI I HAVE $10k ON THIS SHIT| +|08/01/2022 04:29:15| |BET THE FARM ON KMM| +|08/01/2022 04:29:18| |NIGHT OF FIRE| +|08/01/2022 04:29:21| |LET'S GO HITLER CHADS| +|08/01/2022 04:29:21| |DEJA VU!| +|08/01/2022 04:29:23| |NOOO MAIKEL NOO THIS IS SO NOT RIGHT| +|08/01/2022 04:29:24| vince_orgasm.gif +|08/01/2022 04:29:28| |All I have to drink is my piss bottle...| +|08/01/2022 04:29:28| |BET MY WIFES BRIDE PRICE ON MAHO| +|08/01/2022 04:29:29| |GAS GAS GAS| +|08/01/2022 04:29:30| |KMM sounds like KLM| +|08/01/2022 04:29:30| |I'M BURNIN UP FOR YOU| +|08/01/2022 04:29:32| |KUROMORIMINE UBERMENSCH| +|08/01/2022 04:29:32| |CAM ON OORAI| +|08/01/2022 04:29:32| |IT LOOK LIKE ARE LUCK RAN OUT OARAIBROS| +|08/01/2022 04:29:33| |KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 04:29:34| |I put 1000000000000000000000000$ on ooooarai| +|08/01/2022 04:29:34| |Hitler vs Stalin 1v1 tank battle| +|08/01/2022 04:29:36| |The arrival of Steiner's army will save us, right Kuromorominebros?| +|08/01/2022 04:29:36| |>not firing at the driver's vision slit| +|08/01/2022 04:29:38| |NO ONE SLEEP IN TOKYO| +|08/01/2022 04:29:39| |BURN EVERYTIME THAT I'M CLOSE TO YOU| +|08/01/2022 04:29:39| |WE GAAAANNNNNNNNN| +|08/01/2022 04:29:39| |20K ON KUROMORIMINE| +|08/01/2022 04:29:40| |KMM UBER ALLES| +|08/01/2022 04:29:42| |SCORE SAM FACKING SHELLS| +|08/01/2022 04:29:44| LEWD +|08/01/2022 04:29:46| |why tf u shoot at the tiger vision port| +|08/01/2022 04:29:48| guys... +|08/01/2022 04:29:49| |INCOMING KINO| +|08/01/2022 04:29:52| FLOOF +|08/01/2022 04:29:52| |tank on tank action| +|08/01/2022 04:29:54| |HERE WE GO| +|08/01/2022 04:29:56| |>reload even faster| +|08/01/2022 04:29:58| |Toto, it's called Panzerfahren| +|08/01/2022 04:29:59| |CLUTCH FLOOF| +|08/01/2022 04:29:59| |MAXIMUM OVERFLUFF| +|08/01/2022 04:29:59| |BEst fluffer| +|08/01/2022 04:30:00| |der angriff steiners ist nicht erfolgt| +|08/01/2022 04:30:01| |FLOOF HAI| +|08/01/2022 04:30:03| |Full throttle kino| +|08/01/2022 04:30:04| |>just reload faster bro| +|08/01/2022 04:30:06| |DONT FLATSPOT THE TREADS MAKO| +|08/01/2022 04:30:07| |SPEED MORE SPEED| +|08/01/2022 04:30:07| |BELIEVE THE FLUFF| +|08/01/2022 04:30:10| |TEAMWORK MAKES THE DREAM WORK!| +|08/01/2022 04:30:11| |KAPITULIEREN? NEIN!!| +|08/01/2022 04:30:12| |DIE JOE BOO| +|08/01/2022 04:30:13| |DAS WAR EIN BEFEHL| +|08/01/2022 04:30:13| |>her job is to press r| +|08/01/2022 04:30:14| |ALL OR NOTHING| +|08/01/2022 04:30:14| |THE NEED FOR SNEED| +|08/01/2022 04:30:14| |its time| +|08/01/2022 04:30:16| |erika wants the futa cock| +|08/01/2022 04:30:17| |THE THING| +|08/01/2022 04:30:17| |ERIKA NTR| +|08/01/2022 04:30:18| |FINAL MOVE| +|08/01/2022 04:30:19| |PRO GAMER MOVE TIME| +|08/01/2022 04:30:19| |COPE ERIKA| +|08/01/2022 04:30:20| COMMMANDER! +|08/01/2022 04:30:21| |ITS OVER ERIKA| +|08/01/2022 04:30:22| |Erika late again| +|08/01/2022 04:30:22| |POWER AND SPEED SOLVES MANY THINGS| +|08/01/2022 04:30:22| TAICHOU!!!!! +|08/01/2022 04:30:22| |haha Erika| +|08/01/2022 04:30:22| |HERE IT IS BREHS| +|08/01/2022 04:30:23| |Erika.... go away.| +|08/01/2022 04:30:23| |<<>>| +|08/01/2022 04:30:24| |DEATH TO DMM| +|08/01/2022 04:30:24| |FEGELEIN FEGELEIN FEGELEIN FEGELEIN FEGELEIN | +|08/01/2022 04:30:25| SNEED +|08/01/2022 04:30:25| |LESBIAN INCEST DRIFTING| +|08/01/2022 04:30:26| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:30:29| >Erika +|08/01/2022 04:30:30| |THANKS TL| +|08/01/2022 04:30:31| AZUSAN +|08/01/2022 04:30:31| |LET'S GO MAHO CHADS| +|08/01/2022 04:30:31| Lews +|08/01/2022 04:30:31| |ERIKA KOPE| +|08/01/2022 04:30:32| FEGELEIN +|08/01/2022 04:30:33| ANZU +|08/01/2022 04:30:35| |Thanks TL| +|08/01/2022 04:30:35| |DAS WAS EIN BEFEHL| +|08/01/2022 04:30:35| |MOMO DUMB| +|08/01/2022 04:30:35| |LOAD FASTER JOHANN| +|08/01/2022 04:30:35| |want sex miho| +|08/01/2022 04:30:37| ANZU +|08/01/2022 04:30:38| KINO +|08/01/2022 04:30:39| |just one| +|08/01/2022 04:30:40| jews +|08/01/2022 04:30:41| |Momo's stupid fucking face...| +|08/01/2022 04:30:41| |WANI LATE TO BLOCK THE FLAG TANK AGAIN| +|08/01/2022 04:30:42| ZENSHIN +|08/01/2022 04:30:44| \O/ +|08/01/2022 04:30:47| |KMM LETS GOOOOOOOO| +|08/01/2022 04:30:47| |K I N O| +|08/01/2022 04:30:48| |>TL miho means "sloppy fuck"| +|08/01/2022 04:30:48| |>hitler seething| +|08/01/2022 04:30:51| |NIGHT OF FIRE| +|08/01/2022 04:30:52| UTE +|08/01/2022 04:30:54| |o/ Maho wins SIEG HEIL| +|08/01/2022 04:30:55| |tank drift| +|08/01/2022 04:30:56| UTE +|08/01/2022 04:30:57| |DEJA VU| +|08/01/2022 04:30:58| |DORIFTO DORIFTO| +|08/01/2022 04:30:59| |DEJA VU| +|08/01/2022 04:30:59| DORIFTOOOOOO +|08/01/2022 04:31:00| |DEJA VU| +|08/01/2022 04:31:01| |DEJA VU I'VE JUST BEEN IN THIS PLACE BEFORE| +|08/01/2022 04:31:01| drifting +|08/01/2022 04:31:01| DORIFTO +|08/01/2022 04:31:02| |DEJA VU| +|08/01/2022 04:31:02| DRIFT +|08/01/2022 04:31:03| |DEJA VU| +|08/01/2022 04:31:03| DORIFTO +|08/01/2022 04:31:04| DOOOORRRRRRRRRRRIIIIIIIIIIIIIIIFFFFFFFFFFFFFTTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:31:04| |NINJA SHIT| +|08/01/2022 04:31:05| |RULES OF NATURE| +|08/01/2022 04:31:05| |PANZER DRIFT| +|08/01/2022 04:31:05| NANI +|08/01/2022 04:31:06| |DEJA VU| +|08/01/2022 04:31:06| DORIFUTO +|08/01/2022 04:31:06| |KANSEI DORIFUTO| +|08/01/2022 04:31:06| |DEJA VU| +|08/01/2022 04:31:07| |MULTI-TREAD DRIFTING| +|08/01/2022 04:31:07| |I CAME UP FROM THE BOTTOM AND INTO THE TOP - FOR THE FIRST TIME I FEEL ALIVE| +|08/01/2022 04:31:08| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:31:08| |DEJA VU| +|08/01/2022 04:31:08| |Tl note: Gloriana means shit food| +|08/01/2022 04:31:09| DORIFTO +|08/01/2022 04:31:10| dorifto +|08/01/2022 04:31:10| |I'VE JUST BEEN IN THIS PLACE BEFORE| +|08/01/2022 04:31:10| |T I R O F I N A L E| +|08/01/2022 04:31:10| |KINO DRIFTOOOO| +|08/01/2022 04:31:11| NANI +|08/01/2022 04:31:11| AHHHHHHHHHHHH +|08/01/2022 04:31:11| KINO +|08/01/2022 04:31:11| PEW +|08/01/2022 04:31:12| |OOOARAAII DOOO RIIII FFUUUU TOOOOOO| +|08/01/2022 04:31:12| |Maho's ute is ses| +|08/01/2022 04:31:12| |WE DID IT KMM BROS| +|08/01/2022 04:31:13| |RUNNING IN THE 90S| +|08/01/2022 04:31:13| |NIGHT ON FIRE| +|08/01/2022 04:31:14| |I CAN FLY LIKE AN EAGLE AND STRIKE LIKE A HAWK| +|08/01/2022 04:31:14| DRIIIIIIFTO +|08/01/2022 04:31:15| KINO +|08/01/2022 04:31:15| |DEJA VU| +|08/01/2022 04:31:16| KINO +|08/01/2022 04:31:16| KINO +|08/01/2022 04:31:16| |KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 04:31:17| V +|08/01/2022 04:31:17| KINO +|08/01/2022 04:31:17| KINOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:31:17| |DORIFTO BATTLE| +|08/01/2022 04:31:18| KINO +|08/01/2022 04:31:18| |NO NO NO MAIKEL| +|08/01/2022 04:31:18| |YOU CAN'T DRIFT IN A TANK| +|08/01/2022 04:31:18| FUZAKERUNA +|08/01/2022 04:31:18| |Mami died | +|08/01/2022 04:31:19| KINOOOOOOOOOOOOOOO +|08/01/2022 04:31:20| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:31:20| KINO +|08/01/2022 04:31:20| |Cross Counter| +|08/01/2022 04:31:20| KINO +|08/01/2022 04:31:20| KINO +|08/01/2022 04:31:21| KINO +|08/01/2022 04:31:22| KINO +|08/01/2022 04:31:22| |GAS GAS GAS| +|08/01/2022 04:31:22| ! +|08/01/2022 04:31:23| KINOOOOOOOOOOOOOOOO +|08/01/2022 04:31:23| |destroyed ass| +|08/01/2022 04:31:24| |ITS SOOO NOT RIGHT| +|08/01/2022 04:31:24| |Can't believe OArai lost...| +|08/01/2022 04:31:24| |IT'S OVER OARAI| +|08/01/2022 04:31:24| KINO +|08/01/2022 04:31:26| |KILLING MY LOVE| +|08/01/2022 04:31:26| KINO +|08/01/2022 04:31:26| |COMPRESSION ARTIFACTS| +|08/01/2022 04:31:27| |PURE KINO| +|08/01/2022 04:31:28| |maho bros....| +|08/01/2022 04:31:28| |KUROMOROMINEBROS ITS OVER| +|08/01/2022 04:31:29| キターーーーーーーーーーーーーー~! +|08/01/2022 04:31:29| |Eurobeat grade kino| +|08/01/2022 04:31:29| |so satisfying| +|08/01/2022 04:31:30| |ERIKA IS SHOOK| +|08/01/2022 04:31:30| O: +|08/01/2022 04:31:30| :O +|08/01/2022 04:31:31| KINONOOOOOO +|08/01/2022 04:31:32| [scared] +|08/01/2022 04:31:32| |dumb erika| +|08/01/2022 04:31:32| |erika shock| +|08/01/2022 04:31:34| scared +|08/01/2022 04:31:35| |MAHO STAYS WINING| +|08/01/2022 04:31:35| leopold +|08/01/2022 04:31:36| ...... +|08/01/2022 04:31:36| |ERIKA YOU DUMB BITCh| +|08/01/2022 04:31:36| |KEIKAKU DOORI| +|08/01/2022 04:31:36| やべ +|08/01/2022 04:31:37| |Bespectacled wani| +|08/01/2022 04:31:37| |dumb wani| +|08/01/2022 04:31:38| |CUTE HEAD| +|08/01/2022 04:31:38| |u WA SHOCK| +|08/01/2022 04:31:39| WIN +|08/01/2022 04:31:39| scared... +|08/01/2022 04:31:39| >scaredmiho.png +|08/01/2022 04:31:40| :O +|08/01/2022 04:31:40| |OH NO OH NO OH NO KRAUTBROS| +|08/01/2022 04:31:41| |BLOWN THE FUCK OUT| +|08/01/2022 04:31:41| Kino!!!!!!! +|08/01/2022 04:31:41| NOOO +|08/01/2022 04:31:41| ENDSIEG +|08/01/2022 04:31:42| |WANI: RATTLED| +|08/01/2022 04:31:43| |IS THAT TV ON AN ARTILLERY PIECE| +|08/01/2022 04:31:44| MAKEMASHITA +|08/01/2022 04:31:44| |OORAI WINS AGAIN| +|08/01/2022 04:31:44| |NOOOOOOOOO KUROMORIMINEBROS WE FUCKING LOST| +|08/01/2022 04:31:44| >erika +|08/01/2022 04:31:45| YATTA +|08/01/2022 04:31:46| |NOOOOOOO KRAUTBROS| +|08/01/2022 04:31:46| |EAT SHIT KMM| +|08/01/2022 04:31:46| |THEY LOSSSSSTTTTTT AAAAAAAAAAAAAA IM GETTING SENT TO THE EASTERN FRONT| +|08/01/2022 04:31:47| |WE DID IT BOYS | +|08/01/2022 04:31:48| 888888888888888888 +|08/01/2022 04:31:48| |(((THEY))) did this... | +|08/01/2022 04:31:49| |YAAAAAAAAAAAAAAAAA OOOOOOARIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +|08/01/2022 04:31:49| YAAAAAAAAAAAAAAAAAAAAAAAAAY +|08/01/2022 04:31:49| KATTA +|08/01/2022 04:31:49| |WE DID IT BROS| +|08/01/2022 04:31:50| leopold +|08/01/2022 04:31:50| BANZAI +|08/01/2022 04:31:51| NOOOOOOOOOOO +|08/01/2022 04:31:51| YEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEY +|08/01/2022 04:31:51| |gg easy| +|08/01/2022 04:31:51| |gj guys we did it| +|08/01/2022 04:31:51| YATTA +|08/01/2022 04:31:52| BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 04:31:52| |LETS GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 04:31:52| |WANI: SEETHING| +|08/01/2022 04:31:52| YATTA +|08/01/2022 04:31:53| |OORAI BANZAI| +|08/01/2022 04:31:53| |WE WON OOARAIBROS| +|08/01/2022 04:31:53| Yoshaaaa +|08/01/2022 04:31:53| |TOTALER ENDSIEG| +|08/01/2022 04:31:53| 8888888888888888 +|08/01/2022 04:31:53| |We made it bros...| +|08/01/2022 04:31:54| pachipachipachipachi +|08/01/2022 04:31:54| |OOARI CHADS WE WON| +|08/01/2022 04:31:54| YATTAAAAAAAAAAAAAAA +|08/01/2022 04:31:54| |MY WIFE| +|08/01/2022 04:31:54| hug +|08/01/2022 04:31:54| |WTF IS WAS OUR YEAR| +|08/01/2022 04:31:54| 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 +|08/01/2022 04:31:54| 888888888888888888888888 +|08/01/2022 04:31:55| |GG EZ| +|08/01/2022 04:31:55| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:31:55| 大洗の勝利!!!!!! +|08/01/2022 04:31:56| OORAI +|08/01/2022 04:31:56| RIGGED +|08/01/2022 04:31:56| YOSHAAAAAA +|08/01/2022 04:31:57| |OOARAIWINSLOL OOARAIWINSLOL OOARAIWINSLOL| +|08/01/2022 04:31:58| YATTA +|08/01/2022 04:31:58| |GG EZ NO RE| +|08/01/2022 04:31:58| YATTAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:31:59| |HOLY SHIT HOW DID THEY MANAGE THIS| +|08/01/2022 04:31:59| anzu +|08/01/2022 04:31:59| |IT'S 1945 ALL OVER AGAIN NOOOOOO| +|08/01/2022 04:31:59| 88 +|08/01/2022 04:31:59| |YEAHHHHHHHHHHHHHHHHHHHHHH BITHCES| +|08/01/2022 04:32:01| 8888888888888888888888888888888888888888888888888888888888888888888888 +|08/01/2022 04:32:01| >momo +|08/01/2022 04:32:01| |STOP THE COUNT| +|08/01/2022 04:32:02| |The school is saved!| +|08/01/2022 04:32:03| nazibros... +|08/01/2022 04:32:03| |THANKS TL| +|08/01/2022 04:32:03| |YUZU JIGGLY TITS| +|08/01/2022 04:32:03| |KMM means Kilometer Mile| +|08/01/2022 04:32:04| YATTTTTTTTTTTTTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:32:06| |KUROMOROMINE LOCKED UP AT GITMO TRUST THE PLAN -Q| +|08/01/2022 04:32:07| |WA HA HA| +|08/01/2022 04:32:08| ASSPULL +|08/01/2022 04:32:08| MIPORIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIN +|08/01/2022 04:32:10| D-Duce? +|08/01/2022 04:32:13| |Maybe the real KMM was the friends we made along the way?| +|08/01/2022 04:32:14| MIPORIN! +|08/01/2022 04:32:15| |DVCE DVCE DVCE| +|08/01/2022 04:32:16| |NAIZURI WITH PORSCHE TIGER| +|08/01/2022 04:32:16| |MIPORIN I NEED COCK| +|08/01/2022 04:32:16| DVCE +|08/01/2022 04:32:17| YAHO +|08/01/2022 04:32:19| |where is dvce?| +|08/01/2022 04:32:19| |Duce slept through the match| +|08/01/2022 04:32:20| |BROS WE DID IT| +|08/01/2022 04:32:21| |I CAN'T BELEIVE THEY DID IT| +|08/01/2022 04:32:21| |SUGOI DESU WA| +|08/01/2022 04:32:22| |KMM means Kill My Mom| +|08/01/2022 04:32:23| |Like the good old days after 1945| +|08/01/2022 04:32:24| Excellento! +|08/01/2022 04:32:27| |nice quick| +|08/01/2022 04:32:27| |Ducebros... did we get too sleepy....| +|08/01/2022 04:32:28| |Nice Quicku| +|08/01/2022 04:32:30| |nice quick| +|08/01/2022 04:32:30| YAHOO +|08/01/2022 04:32:31| |DVCE YOU DUMB FUCK | +|08/01/2022 04:32:33| |MEXT NOOOOOOO| +|08/01/2022 04:32:35| |Fuck I missed it, curse my ned to shit.,| +|08/01/2022 04:32:36| |DUCE WAKE UP| +|08/01/2022 04:32:39| FAT +|08/01/2022 04:32:40| |MADLADS DID IT| +|08/01/2022 04:32:41| |that's a strond truck to tow that tank| +|08/01/2022 04:32:41| |dvce where the fuck r u| +|08/01/2022 04:32:42| |maho sent to the work camps afterward| +|08/01/2022 04:32:42| |NAISU QUICKU| +|08/01/2022 04:32:43| piss +|08/01/2022 04:32:43| |>school is saved woohoo| +|08/01/2022 04:32:45| |we got too sleepy duce bros.......| +|08/01/2022 04:32:45| |can I have my piss break now| +|08/01/2022 04:32:47| |DVCEbros we overslept...| +|08/01/2022 04:32:47| |DUCE PLEASE WAKU UPU| +|08/01/2022 04:32:48| |Don't blame Dvce, they eat too well to not sleep| +|08/01/2022 04:32:50| DUCE? +|08/01/2022 04:32:51| ^_^ +|08/01/2022 04:32:52| DVCEBROS... +|08/01/2022 04:32:52| |Miho died| +|08/01/2022 04:32:55| |DVCE WAKE UP PLEASE| +|08/01/2022 04:32:56| |WE WEW ROBBED, KMMBROS| +|08/01/2022 04:32:56| |PASTA TIME BROS| +|08/01/2022 04:32:56| |DVCE WAKE UP IT'S BEEN NINE YEARS| +|08/01/2022 04:32:56| |>u dont have a piss bottle| +|08/01/2022 04:32:57| DVCEEE +|08/01/2022 04:32:58| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:32:59| |Just use a piss bottle bro| +|08/01/2022 04:32:59| ;_; +|08/01/2022 04:33:00| otsukareeeee +|08/01/2022 04:33:01| |Anzio will be here soon, r-right?| +|08/01/2022 04:33:01| |YOU'RE WINNER| +|08/01/2022 04:33:03| |THANKS TL| +|08/01/2022 04:33:03| cry +|08/01/2022 04:33:04| ANZU +|08/01/2022 04:33:05| ^____^ +|08/01/2022 04:33:06| |HUGGO! <3| +|08/01/2022 04:33:06| Anzu +|08/01/2022 04:33:07| DORK +|08/01/2022 04:33:07| ;____; +|08/01/2022 04:33:08| bawl +|08/01/2022 04:33:08| ;-; +|08/01/2022 04:33:09| ;__; +|08/01/2022 04:33:09| |[THIS DUCE IS DECEASED]| +|08/01/2022 04:33:10| ;_; +|08/01/2022 04:33:10| |tiger a shit| +|08/01/2022 04:33:10| |MOMO DUMB| +|08/01/2022 04:33:10| ;_; +|08/01/2022 04:33:11| boobs +|08/01/2022 04:33:12| ;_____; +|08/01/2022 04:33:12| |MOMO HATE| +|08/01/2022 04:33:12| MOMO-CHAN +|08/01/2022 04:33:12| ;;;) +|08/01/2022 04:33:12| |momo such a baby| +|08/01/2022 04:33:13| ;_; +|08/01/2022 04:33:13| |HUG MOMO| +|08/01/2022 04:33:14| >implying +|08/01/2022 04:33:14| :_: +|08/01/2022 04:33:14| |Cry bitch, it's sexy| +|08/01/2022 04:33:14| T_T +|08/01/2022 04:33:14| |crying bitch| +|08/01/2022 04:33:15| |CUTE DORK| +|08/01/2022 04:33:16| stfu +|08/01/2022 04:33:17| |>all this effort just to keep going to school| +|08/01/2022 04:33:17| |MOMO IS CRYING! CRYBABY!!| +|08/01/2022 04:33:18| flat +|08/01/2022 04:33:18| |MOMO HATE| +|08/01/2022 04:33:18| |CUTE ANZU| +|08/01/2022 04:33:18| |>Shitting in a piss bottle.| +|08/01/2022 04:33:18| |Momo still dumb| +|08/01/2022 04:33:19| |TL Note: "Anzu" means "SEX"| +|08/01/2022 04:33:19| ;__; +|08/01/2022 04:33:20| |want to hug anzu| +|08/01/2022 04:33:20| LOL +|08/01/2022 04:33:21| |momo is so cute| +|08/01/2022 04:33:21| |PROTECT MOMO| +|08/01/2022 04:33:21| |I-I'm not crying it's just the rain I swear| +|08/01/2022 04:33:21| |Will Momo cry in Das 5?| +|08/01/2022 04:33:22| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 04:33:23| |sex with anzu| +|08/01/2022 04:33:24| |WAKE THE FUCK UP DUCE WE'VE GOT A PASTA TO MaKE| +|08/01/2022 04:33:25| |ooraibros... we really made it...| +|08/01/2022 04:33:25| |ULTRA SUPER MEGA CUTE ANZU| +|08/01/2022 04:33:25| |>he didnt pinky promise| +|08/01/2022 04:33:26| >SAved +|08/01/2022 04:33:26| |UNTIL THE MOVIE THAT IS| +|08/01/2022 04:33:26| |HUG MOMO| +|08/01/2022 04:33:28| ANZUUUUU +|08/01/2022 04:33:28| |>our school won't be shutting down| +|08/01/2022 04:33:29| |kek you will never graduate| +|08/01/2022 04:33:30| GOD +|08/01/2022 04:33:30| |>not closing down| +|08/01/2022 04:33:31| |WAKE UP DUCE| +|08/01/2022 04:33:32| WEW +|08/01/2022 04:33:32| |Look how flat she is| +|08/01/2022 04:33:34| |time for the /u/ SEX| +|08/01/2022 04:33:34| |GOD I FUCKING WISH| +|08/01/2022 04:33:35| |then they realize they no sign paper| +|08/01/2022 04:33:35| LEWD +|08/01/2022 04:33:35| |>anzu will never give you a hug| +|08/01/2022 04:33:35| cute +|08/01/2022 04:33:36| |LEG LOCKED| +|08/01/2022 04:33:37| |God, I wish that were me| +|08/01/2022 04:33:37| |the shool has like 10 more minutes| +|08/01/2022 04:33:37| |I wish I was Miho| +|08/01/2022 04:33:38| UOHHHHHH +|08/01/2022 04:33:38| |MATING PRESS ANZU| +|08/01/2022 04:33:40| |>school won't shut down....... yeah about that| +|08/01/2022 04:33:42| fwip +|08/01/2022 04:33:43| |>anzu will never hug you like that Why even live?| +|08/01/2022 04:33:43| |GOD I WISH| +|08/01/2022 04:33:44| |CORRECT THE RECORD| +|08/01/2022 04:33:45| |i just want to sex anzu| +|08/01/2022 04:33:45| DELET +|08/01/2022 04:33:48| |Anu coping a feel of Miho's big futa cock| +|08/01/2022 04:33:48| |BASED SODOKO| +|08/01/2022 04:33:49| CORRUPTION +|08/01/2022 04:33:50| |AWAKEN MY MEXT CHADS| +|08/01/2022 04:33:50| SODOKO +|08/01/2022 04:33:51| DELETED +|08/01/2022 04:33:51| CORRUPTION +|08/01/2022 04:33:51| |I WANT TO BE HUGGED BY ANZU| +|08/01/2022 04:33:51| |that's against the rules sodoko| +|08/01/2022 04:33:51| DELETED +|08/01/2022 04:33:53| |yeeeesssss lesss gooo sodoko| +|08/01/2022 04:33:53| |incoming karina-bomb| +|08/01/2022 04:33:54| Cute +|08/01/2022 04:33:54| |CUTE MANKO| +|08/01/2022 04:33:54| |CLEAN SLATE| +|08/01/2022 04:33:55| |MAKO X SODOKO| +|08/01/2022 04:33:55| |CORRUPTION 100%| +|08/01/2022 04:33:55| UOOOOOOOOH +|08/01/2022 04:33:55| |Jewish lies| +|08/01/2022 04:33:55| DELETED +|08/01/2022 04:33:56| |FUN IS BACK ON THE MENU BOYSS| +|08/01/2022 04:33:56| |>251 late arrivals| +|08/01/2022 04:33:57| おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお +|08/01/2022 04:33:57| SODOKO +|08/01/2022 04:33:58| CORRUPTION +|08/01/2022 04:33:58| |>tablet attached to a clipboard| +|08/01/2022 04:33:58| |RECORD STATUS: CORRECTED| +|08/01/2022 04:33:58| |ENTER MEXT CHAD!| +|08/01/2022 04:33:59| |SODOKO A CUTE| +|08/01/2022 04:33:59| SODOKOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:33:59| OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:33:59| |It's time for the Sayori boyfriends| +|08/01/2022 04:34:00| |tangible autism| +|08/01/2022 04:34:00| UUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOHHHH +|08/01/2022 04:34:00| HAGGU +|08/01/2022 04:34:00| :o: +|08/01/2022 04:34:00| |SODOKO | +|08/01/2022 04:34:00| CUTE +|08/01/2022 04:34:01| |The Party controls the past| +|08/01/2022 04:34:01| :) +|08/01/2022 04:34:01| ARIGATO +|08/01/2022 04:34:02| |based sodoko| +|08/01/2022 04:34:03| |SODOMY FOR SODOKO| +|08/01/2022 04:34:03| SOGKODKOGDKODKOKO +|08/01/2022 04:34:04| CORRUPTION +|08/01/2022 04:34:05| |I want to hug Sodoko| +|08/01/2022 04:34:05| |MakoxSadoko confirmed| +|08/01/2022 04:34:05| |ALL NIGHT MAKO SODOKO SEX| +|08/01/2022 04:34:08| |ALPHA WAVES| +|08/01/2022 04:34:08| UUUOOOHHH +|08/01/2022 04:34:08| |>gaymer shake| +|08/01/2022 04:34:09| ganbatte +|08/01/2022 04:34:12| SODOMYKO +|08/01/2022 04:34:12| AZUSA +|08/01/2022 04:34:12| |EI EI O| +|08/01/2022 04:34:13| |>corruption MEXT GUY WAS RIGHT ALL ALONG| +|08/01/2022 04:34:17| |SODOKO WONT LET HER GET HUGGED| +|08/01/2022 04:34:17| |SDOMIZE SADOKO| +|08/01/2022 04:34:17| |AH shit i actually teared up| +|08/01/2022 04:34:18| |HOSHINO CHAD WYA| +|08/01/2022 04:34:19| |EI EI OOOOH| +|08/01/2022 04:34:20| |A A O| +|08/01/2022 04:34:20| |A A O| +|08/01/2022 04:34:20| |EI EI OU| +|08/01/2022 04:34:21| |A A O| +|08/01/2022 04:34:22| |thats it| +|08/01/2022 04:34:23| |A A O| +|08/01/2022 04:34:23| ;_; +|08/01/2022 04:34:24| \o/ +|08/01/2022 04:34:24| AAO +|08/01/2022 04:34:26| |LEOPON MVP| +|08/01/2022 04:34:27| |EI, EI, OOOOO| +|08/01/2022 04:34:27| |/a/ /a/ /o/| +|08/01/2022 04:34:28| Onee-chan! +|08/01/2022 04:34:29| |HAHA YOU FUCKING BITCH YOU LOST| +|08/01/2022 04:34:29| oneechan +|08/01/2022 04:34:29| |momo-chan babu| +|08/01/2022 04:34:32| MAHO +|08/01/2022 04:34:34| MAHO +|08/01/2022 04:34:35| |Maho is so sexy| +|08/01/2022 04:34:35| kino +|08/01/2022 04:34:35| shortie +|08/01/2022 04:34:35| |Cute Maho| +|08/01/2022 04:34:36| |I love my wife Maho!| +|08/01/2022 04:34:36| |They saved the school right?| +|08/01/2022 04:34:37| /u//u//u/ +|08/01/2022 04:34:37| |you're dead to me miho| +|08/01/2022 04:34:38| |/a/ /a/ /o/!| +|08/01/2022 04:34:38| |SEXIEST GUPPIE| +|08/01/2022 04:34:38| omedetou +|08/01/2022 04:34:39| ERRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRIKA +|08/01/2022 04:34:40| MAAHOoo~ +|08/01/2022 04:34:41| |/a/ /a/ /o/!| +|08/01/2022 04:34:41| |CUTE ONEESAN| +|08/01/2022 04:34:41| KANPAI +|08/01/2022 04:34:42| KANPAI +|08/01/2022 04:34:43| KANPAI +|08/01/2022 04:34:43| Maho +|08/01/2022 04:34:44| KINO +|08/01/2022 04:34:45| o7 +|08/01/2022 04:34:45| |who has bigger tits| +|08/01/2022 04:34:45| Maho....... +|08/01/2022 04:34:46| :) +|08/01/2022 04:34:46| |LOVE MAHO COOLEST GUPPIE| +|08/01/2022 04:34:47| KANPAI +|08/01/2022 04:34:47| |maho > miho| +|08/01/2022 04:34:47| |So sweet! ;_;| +|08/01/2022 04:34:47| |CUM PIE| +|08/01/2022 04:34:49| |Sunset kino| +|08/01/2022 04:34:49| |HANDSHAKE BOYS WE WON| +|08/01/2022 04:34:49| LEWD +|08/01/2022 04:34:50| INCEST +|08/01/2022 04:34:50| WEW +|08/01/2022 04:34:51| MAHO +|08/01/2022 04:34:52| |we made it mihobros...| +|08/01/2022 04:34:52| |I NEED cock maho| +|08/01/2022 04:34:53| KANPAI +|08/01/2022 04:34:53| WINCEST +|08/01/2022 04:34:54| ;_______; +|08/01/2022 04:34:54| |ALL SMILES :)| +|08/01/2022 04:34:55| |maho is a breast demon| +|08/01/2022 04:34:55| |alls well that ends well right| +|08/01/2022 04:34:55| ;_;7 +|08/01/2022 04:34:56| |after this maho vigriously flicked the bean to miho's old panties| +|08/01/2022 04:34:56| KINO +|08/01/2022 04:34:58| |MAHO WILL BE HIT BY HER MOTHER| +|08/01/2022 04:34:58| |CAN I GET RID OF MY CARBON COATED GIANT SHIT LOG HOGGING MY BUTTHOLE NOW| +|08/01/2022 04:34:58| KINO +|08/01/2022 04:34:59| |Maho is bigger| +|08/01/2022 04:34:59| |maho pee| +|08/01/2022 04:34:59| |Sisterly love| +|08/01/2022 04:34:59| o7 +|08/01/2022 04:34:59| KINO +|08/01/2022 04:35:00| Erikabros... +|08/01/2022 04:35:00| |The Itachi of the Nishizumi...| +|08/01/2022 04:35:02| KINO +|08/01/2022 04:35:02| yes +|08/01/2022 04:35:04| |but they both have cock| +|08/01/2022 04:35:04| |Then they had sex| +|08/01/2022 04:35:05| |FUTAxFUTA BATTLE| +|08/01/2022 04:35:07| |God I love this series....| +|08/01/2022 04:35:10| KNOOO +|08/01/2022 04:35:10| |MOTTO SENSHADO!| +|08/01/2022 04:35:12| |my own panzerfahren| +|08/01/2022 04:35:13| |The real friends were the sisters who loved us along the way| +|08/01/2022 04:35:13| KINO +|08/01/2022 04:35:13| CUTE +|08/01/2022 04:35:15| |after this maho was sent to the concentration camps| +|08/01/2022 04:35:18| |SEX SEX SEX| +|08/01/2022 04:35:19| KINO +|08/01/2022 04:35:20| |lol yeah right scrub| +|08/01/2022 04:35:20| |My Own Senshado (tm)| +|08/01/2022 04:35:20| |WATASHI NO SENSHADO| +|08/01/2022 04:35:20| cope +|08/01/2022 04:35:21| |CUTE WANI| +|08/01/2022 04:35:22| |COPE SEETHE AND DILATE ERIKA| +|08/01/2022 04:35:22| :) +|08/01/2022 04:35:22| |10/10 ign| +|08/01/2022 04:35:23| SOUL +|08/01/2022 04:35:23| |What's her senshado though| +|08/01/2022 04:35:23| >Erika +|08/01/2022 04:35:24| |experiencing the grinning like a retard effect| +|08/01/2022 04:35:24| |SHUT UP ERIKA| +|08/01/2022 04:35:24| OST +|08/01/2022 04:35:25| |DUMB WANI| +|08/01/2022 04:35:25| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:35:26| :') +|08/01/2022 04:35:26| OMEDETOU +|08/01/2022 04:35:26| |WAVE YOUR FLAAAAAAAG| +|08/01/2022 04:35:26| |CUTE ERIKA| +|08/01/2022 04:35:26| |>loses next time| +|08/01/2022 04:35:28| |>I found my own Girls und Panzer| +|08/01/2022 04:35:28| WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:35:28| |WANI COPE| +|08/01/2022 04:35:29| BANZAI +|08/01/2022 04:35:29| KINOOOOOOO +|08/01/2022 04:35:29| |>next time| +|08/01/2022 04:35:30| |hana has perfect legs| +|08/01/2022 04:35:30| TENNO +|08/01/2022 04:35:31| BANZAIIIIII +|08/01/2022 04:35:31| |STUGBROS WE WON| +|08/01/2022 04:35:32| KINO +|08/01/2022 04:35:33| BANZAI +|08/01/2022 04:35:33| |RAISE YOUR FLAG| +|08/01/2022 04:35:33| 88888888888888888888888888888888888888888888888888888888 +|08/01/2022 04:35:33| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:35:35| OMEDETOU +|08/01/2022 04:35:36| |Ribbon Warrior read along next| +|08/01/2022 04:35:36| OMEDETO +|08/01/2022 04:35:38| |THANK YOU GUPPERS FROM SAVING ME FROM SUICIDE| +|08/01/2022 04:35:38| HARASHOOOOOO +|08/01/2022 04:35:38| omedetou +|08/01/2022 04:35:39| SPQR +|08/01/2022 04:35:39| [clap] +|08/01/2022 04:35:39| omedetou +|08/01/2022 04:35:40| omedetou +|08/01/2022 04:35:40| HARASHO +|08/01/2022 04:35:40| |CONGRATULATION 88888888888888888888888| +|08/01/2022 04:35:40| Omedetou +|08/01/2022 04:35:41| CONGRATULATIONS +|08/01/2022 04:35:41| congraturations +|08/01/2022 04:35:41| 88888888888888888888888888888888888888 +|08/01/2022 04:35:41| |I've done it, I've truly become Girls und Panzer| +|08/01/2022 04:35:41| |ERIKA STOLE MIHO'S SENSHADOU| +|08/01/2022 04:35:42| CONGRATULATIONS +|08/01/2022 04:35:42| CONGRATULATIONS +|08/01/2022 04:35:42| OMEDETOU +|08/01/2022 04:35:42| OJOUUUUUUUU +|08/01/2022 04:35:43| |HORROR SHOW| +|08/01/2022 04:35:43| 8888888888888888 +|08/01/2022 04:35:44| |end of gup| +|08/01/2022 04:35:45| Ducebros........ +|08/01/2022 04:35:45| volleybutts +|08/01/2022 04:35:46| SUMIPE +|08/01/2022 04:35:46| BANZAI +|08/01/2022 04:35:46| OMEDETOU +|08/01/2022 04:35:46| 88888888888888888888888888888888888888888888888888888 +|08/01/2022 04:35:46| |**CLAP* CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* *CLAP* | +|08/01/2022 04:35:47| CONGRATURATION +|08/01/2022 04:35:47| OMEDETOU +|08/01/2022 04:35:47| CONGURADURATIONS +|08/01/2022 04:35:47| 888888888888888888888888888 +|08/01/2022 04:35:47| CONGRATS +|08/01/2022 04:35:48| OJOOOOOOOOOOOOOOOUUUUUUUUUUU +|08/01/2022 04:35:48| KHOROSHO +|08/01/2022 04:35:48| |they did it| +|08/01/2022 04:35:48| |8 8 8| +|08/01/2022 04:35:48| |WAY TO Go| +|08/01/2022 04:35:49| M'LADY +|08/01/2022 04:35:49| 8888888888888888888888888888888888888888 +|08/01/2022 04:35:49| 888888888888888 +|08/01/2022 04:35:49| CONGRATULATIONS +|08/01/2022 04:35:49| omedateou +|08/01/2022 04:35:50| |SHIHO A SHIT| +|08/01/2022 04:35:50| *CLAP* +|08/01/2022 04:35:52| OMEDETOU +|08/01/2022 04:35:53| DVCE... +|08/01/2022 04:35:53| OMEDETOU +|08/01/2022 04:35:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:35:54| |we truly are, girls und panzer| +|08/01/2022 04:35:54| |DEATH TO MERCEDES, DEATH TO FIAMG| +|08/01/2022 04:35:54| |OMEDETAI NA| +|08/01/2022 04:35:55| 88888888 +|08/01/2022 04:35:55| |ANGRY MOM| +|08/01/2022 04:35:55| DVCE +|08/01/2022 04:35:55| |I stood up and clapped| +|08/01/2022 04:35:55| |FUCK SHIHO DUMB BITCH| +|08/01/2022 04:35:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:35:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:35:57| 88888888888888888 +|08/01/2022 04:35:57| |thanks mom| +|08/01/2022 04:35:57| |NOT BAD, GUPPERS| +|08/01/2022 04:35:57| MOM +|08/01/2022 04:35:57| |8 8 8| +|08/01/2022 04:35:57| |NAKADASHI SHIO| +|08/01/2022 04:35:57| CLAPPU +|08/01/2022 04:35:57| MOMMY +|08/01/2022 04:35:57| |8 8 8 8| +|08/01/2022 04:35:57| |8 8 8 8 8| +|08/01/2022 04:35:58| undisowned +|08/01/2022 04:35:58| |TORPEDO TITTIES| +|08/01/2022 04:35:59| |Maybe the real senshadou was the friends we made along the way| +|08/01/2022 04:35:59| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 04:35:59| 88888888 +|08/01/2022 04:35:59| |oh boy cant wait for 4 more hours of movies| +|08/01/2022 04:35:59| |The anime that saved /a/| +|08/01/2022 04:35:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:00| |Evangelion reference?| +|08/01/2022 04:36:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:00| DUCE +|08/01/2022 04:36:00| DUCE +|08/01/2022 04:36:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:01| seething +|08/01/2022 04:36:01| DUCE +|08/01/2022 04:36:02| *clap* +|08/01/2022 04:36:02| DVCE +|08/01/2022 04:36:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:02| DVCE +|08/01/2022 04:36:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:02| DUCE +|08/01/2022 04:36:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:03| |all those burning bridges that have fallen after meee| +|08/01/2022 04:36:03| |Bravo DVCE| +|08/01/2022 04:36:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:03| D-DUCE +|08/01/2022 04:36:03| DVCE +|08/01/2022 04:36:04| ENTER +|08/01/2022 04:36:04| |DUCE DUCE DUCE| +|08/01/2022 04:36:04| DVCE +|08/01/2022 04:36:04| |haha italians| +|08/01/2022 04:36:04| |DUCE who?| +|08/01/2022 04:36:05| DVCE +|08/01/2022 04:36:05| |DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:05| DUCE +|08/01/2022 04:36:05| |DVCE BAKA| +|08/01/2022 04:36:05| DUCE +|08/01/2022 04:36:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:06| |ENTER ENETER| +|08/01/2022 04:36:06| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 04:36:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:06| |ENTER ENTER MISSION| +|08/01/2022 04:36:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:06| >OVER +|08/01/2022 04:36:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:07| DVCEBROS... +|08/01/2022 04:36:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:07| |dumb italians| +|08/01/2022 04:36:07| ENTER +|08/01/2022 04:36:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:07| UCE +|08/01/2022 04:36:08| |ENTER ENTER MISSION| +|08/01/2022 04:36:08| DUMBASS +|08/01/2022 04:36:08| LATECE +|08/01/2022 04:36:09| |ENTER ENTER| +|08/01/2022 04:36:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:09| |IT WAS ALL A DREAM| +|08/01/2022 04:36:09| kek +|08/01/2022 04:36:10| |ENTAH ENTAH MISSION| +|08/01/2022 04:36:10| KEK +|08/01/2022 04:36:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:10| |ENTER ENTER MISSION| +|08/01/2022 04:36:11| Ducebros.... +|08/01/2022 04:36:11| |ENTA ENTA MISSION| +|08/01/2022 04:36:11| |ENTAAAAAAAAAAAAAAAAAAAAAAAAAH ENTAHHHHHHHH MISHION| +|08/01/2022 04:36:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:11| |DORK DVCE| +|08/01/2022 04:36:12| |ENTAH ENTAH MISSION| +|08/01/2022 04:36:12| DVCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 04:36:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:12| DUCE +|08/01/2022 04:36:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:13| | DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCEDUCE D| +|08/01/2022 04:36:14| BAITED +|08/01/2022 04:36:15| |DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE CTU DVCE | +|08/01/2022 04:36:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 04:36:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:16| |ENTAH ENTAH| +|08/01/2022 04:36:16| |PANZER VOR| +|08/01/2022 04:36:16| |ENTA ENTA MISSION| +|08/01/2022 04:36:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:17| |your DVCEs are late| +|08/01/2022 04:36:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:17| |ENTAH ENTAH MISSION| +|08/01/2022 04:36:17| eeeeeeeeeeentah +|08/01/2022 04:36:19| |PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:36:19| |8 8 8 8 8| +|08/01/2022 04:36:19| |say something, bitch| +|08/01/2022 04:36:20| DVUCE +|08/01/2022 04:36:21| AUTISM +|08/01/2022 04:36:22| |Dumb Dvce| +|08/01/2022 04:36:22| |PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:36:22| |PANZER VOR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:36:22| |PANZER VOR| +|08/01/2022 04:36:24| |PANZER VOR| +|08/01/2022 04:36:24| |PANZER VOR| +|08/01/2022 04:36:24| |Mission has been Entered| +|08/01/2022 04:36:24| |PANZER VOR!| +|08/01/2022 04:36:24| |PANZER VOR| +|08/01/2022 04:36:24| |Holy shit that chick is tall | +|08/01/2022 04:36:24| |PANZER VORRR| +|08/01/2022 04:36:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 04:36:25| |PANZER VOR| +|08/01/2022 04:36:25| |PANZER VOR| +|08/01/2022 04:36:25| |PANZER VOR| +|08/01/2022 04:36:26| |PANZER VOR| +|08/01/2022 04:36:26| |PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +|08/01/2022 04:36:26| |PANZER VORE| +|08/01/2022 04:36:26| |PANZER VOR| +|08/01/2022 04:36:26| |DVCE DVCE DVCE| +|08/01/2022 04:36:26| |PANZA VOR| +|08/01/2022 04:36:27| |PANZER VOR| +|08/01/2022 04:36:27| |FOR WHAT| +|08/01/2022 04:36:27| |GOOD THING SCHOOL WONT CLOSE AND WE DON'T NEED A MOVIE| +|08/01/2022 04:36:27| |PANZER VOR| +|08/01/2022 04:36:27| |PANTSU FOR| +|08/01/2022 04:36:27| |PANTSAR FOR| +|08/01/2022 04:36:27| |PANZER VOR| +|08/01/2022 04:36:27| |Look at that dork| +|08/01/2022 04:36:28| |PANZER VOR| +|08/01/2022 04:36:28| |PANZER VOR!| +|08/01/2022 04:36:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 04:36:28| |PANTS ARE FOR!| +|08/01/2022 04:36:28| |Happy ending right?| +|08/01/2022 04:36:28| |dork face| +|08/01/2022 04:36:29| |PANZER VOR| +|08/01/2022 04:36:29| |panzer vor!| +|08/01/2022 04:36:29| |PANZER VOR| +|08/01/2022 04:36:29| |PANZER VOR| +|08/01/2022 04:36:29| |all those burning bridges that have fallen after meee| +|08/01/2022 04:36:30| |PANSA VOA| +|08/01/2022 04:36:30| |panzer VORE| +|08/01/2022 04:36:31| |PANZER VOR| +|08/01/2022 04:36:31| OOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:36:31| |ENTER MISSION~~~~~~~~~~| +|08/01/2022 04:36:32| |ENTA ENTA MISSION| +|08/01/2022 04:36:32| |PANZER VOR| +|08/01/2022 04:36:32| |PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +|08/01/2022 04:36:32| |TAEKO LOVE| +|08/01/2022 04:36:33| dorks +|08/01/2022 04:36:33| |PANZER VOOOOORRRR| +|08/01/2022 04:36:34| |PANZER VOR| +|08/01/2022 04:36:34| |>we never experienced the ED| +|08/01/2022 04:36:34| KINO +|08/01/2022 04:36:35| |PANZER VOR| +|08/01/2022 04:36:35| |PANZER VORRRRRRRRRRR!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 04:36:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 04:36:36| |Panther vore| +|08/01/2022 04:36:36| |VICTORY PARADE| +|08/01/2022 04:36:37| |SHOURI, MINNA!| +|08/01/2022 04:36:38| |PANZER VOR| +|08/01/2022 04:36:38| |ENTAH ENTAH MISSION HAYAKU| +|08/01/2022 04:36:38| |PANZER VOR PANZER VOR PANZER VOR PANZER VOR| +|08/01/2022 04:36:39| |ROLL CREDITS| +|08/01/2022 04:36:39| |SHE SAID THE THING| +|08/01/2022 04:36:40| |PANZER VOR| +|08/01/2022 04:36:41| |play the song lesss goooo| +|08/01/2022 04:36:41| |bunch of fucking nerds| +|08/01/2022 04:36:44| |Mission status: Entered| +|08/01/2022 04:36:45| |I H AVE BEEN WAITING ALL NIGHT FOR THIS | +|08/01/2022 04:36:46| |FUCKING KINOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 04:36:46| |IM GOING TO CUM| +|08/01/2022 04:36:47| |>tanks are suddenly good to go| +|08/01/2022 04:36:47| |NOT LIKE THIS| +|08/01/2022 04:36:47| KINOOOO +|08/01/2022 04:36:48| o7 +|08/01/2022 04:36:49| |TIME FOR A FUCKING INTER INTER MISSION| +|08/01/2022 04:36:49| buffering +|08/01/2022 04:36:51| |ENTAAH ENTAAH MIHO| +|08/01/2022 04:36:51| kino +|08/01/2022 04:36:51| |Nothing wrong will happen next right?| +|08/01/2022 04:36:52| TAEKO +|08/01/2022 04:36:52| |finally, the first episode is over| +|08/01/2022 04:36:52| HAPPY +|08/01/2022 04:36:52| |So what is left, besides the Das Finales?| +|08/01/2022 04:36:55| HAPPY +|08/01/2022 04:36:56| o/ +|08/01/2022 04:36:57| |Mission Completed | +|08/01/2022 04:36:57| HAPPI +|08/01/2022 04:36:58| ;_; +|08/01/2022 04:36:58| |im not gonna make it bros im wasted af already| +|08/01/2022 04:36:59| |BRAVO NOLAN| +|08/01/2022 04:36:59| NORIKO<3 +|08/01/2022 04:36:59| |jamin jamin jamin| +|08/01/2022 04:37:00| |BOTH EYES OPEN| +|08/01/2022 04:37:00| |SUICIDE STATUS: AVERTED| +|08/01/2022 04:37:02| |MISSION COMPLETE| +|08/01/2022 04:37:02| |I LOVE BLASTING THIS SHIT WOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 04:37:02| |I JOE YOU JOE| +|08/01/2022 04:37:04| |>tfw joined late at the pravada match| +|08/01/2022 04:37:04| |dude we got like 4 films| +|08/01/2022 04:37:07| |JUST GET MORE WASTED| +|08/01/2022 04:37:07| |The film anon, the film| +|08/01/2022 04:37:07| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:09| |ENTER ENTER MISSION| +|08/01/2022 04:37:09| |ENTER ENTER MISSION | +|08/01/2022 04:37:09| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:09| |ENTER ENTER| +|08/01/2022 04:37:10| ENTAA +|08/01/2022 04:37:10| |Mission entered| +|08/01/2022 04:37:10| |NOOOOOOOOOOOOOOOOOOOO BUFFERING| +|08/01/2022 04:37:10| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:10| |ENTA ENTA MISSION| +|08/01/2022 04:37:11| |ENTAA ENTAAA| +|08/01/2022 04:37:12| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:13| HAYAKU +|08/01/2022 04:37:14| |we are more than half way i think| +|08/01/2022 04:37:14| |THE WASTED GOES AROUND| +|08/01/2022 04:37:15| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:15| MISSSION +|08/01/2022 04:37:15| |ENTER ENTER MISSION| +|08/01/2022 04:37:16| |ENTER BUFFER| +|08/01/2022 04:37:16| |ENTA ENTA MISSIOn| +|08/01/2022 04:37:17| |NO ONE MOVES, IT's PENIS INSPECTION INTERMISSION| +|08/01/2022 04:37:17| ENTER +|08/01/2022 04:37:18| ISSHOUKENMEI +|08/01/2022 04:37:18| |ENTER ENTER MISSION| +|08/01/2022 04:37:18| |ENTAH ENTAH MISHUN| +|08/01/2022 04:37:18| |MI SHION| +|08/01/2022 04:37:19| |ENTAH ENTAH MIHO| +|08/01/2022 04:37:19| |ENTAH ENTA MISSION| +|08/01/2022 04:37:19| |ENTA ENTA MISSIHO| +|08/01/2022 04:37:20| OIKAKEYOUNE +|08/01/2022 04:37:22| |Der Film, 3 Das Finales| +|08/01/2022 04:37:22| |WHY NOW GALAX ANON| +|08/01/2022 04:37:22| |ENTER ENTER MISSIOOOOOOOOOOOOOOOOONNN| +|08/01/2022 04:37:24| |ENTER ENTER MISSSION| +|08/01/2022 04:37:25| |ENTA ENTA MISSHION| +|08/01/2022 04:37:25| |ENTER ENTER| +|08/01/2022 04:37:25| |BUFFER BUFFER MISSION| +|08/01/2022 04:37:25| HAYAKU +|08/01/2022 04:37:26| |ENTER ENTER MISSION| +|08/01/2022 04:37:27| |ENTAH ENTAH| +|08/01/2022 04:37:27| |BUFFERING HERE CMOONNNNNN| +|08/01/2022 04:37:27| |ENTA ENTA MISSHION| +|08/01/2022 04:37:28| |ENTAH ENTAH MISSION| +|08/01/2022 04:37:28| |SHIKARA IPPAI| +|08/01/2022 04:37:28| |ENTER ENTER BUFFER| +|08/01/2022 04:37:28| |>stream lags for the chorus | +|08/01/2022 04:37:30| |ENTAA MISSION| +|08/01/2022 04:37:33| |>tfw buffering| +|08/01/2022 04:37:34| BUFFER +|08/01/2022 04:37:34| |Bro we aren't even half way and your fucked| +|08/01/2022 04:37:34| |ENTER ENTER MISSION| +|08/01/2022 04:37:35| |BUFFER BUFFER MISSION| +|08/01/2022 04:37:36| |ENTER ENTER MISSION| +|08/01/2022 04:37:36| |GET IT GRANDMA| +|08/01/2022 04:37:36| |ENTER ENTER MISSION| +|08/01/2022 04:37:37| |entah entah misssion| +|08/01/2022 04:37:37| |Cute Granny| +|08/01/2022 04:37:37| |CUTE FLOOF| +|08/01/2022 04:37:38| o7 +|08/01/2022 04:37:38| man +|08/01/2022 04:37:38| www +|08/01/2022 04:37:38| |ENTAA ENTAA MISSHON| +|08/01/2022 04:37:41| |ENTER ENTER BUFFERING| +|08/01/2022 04:37:41| |i hope duce gets a malboro sponsorship next season| +|08/01/2022 04:37:42| |based granny| +|08/01/2022 04:37:43| |ENTER ENTER MISSION!| +|08/01/2022 04:37:43| BAFFUA +|08/01/2022 04:37:44| |CUTE DANCE| +|08/01/2022 04:37:44| WTF +|08/01/2022 04:37:44| |ENTER ENTER BUFFER| +|08/01/2022 04:37:44| |Das Film should be next no?| +|08/01/2022 04:37:44| Bufferoni +|08/01/2022 04:37:45| |YOU HAD ONE JOB| +|08/01/2022 04:37:45| |DROP THE VIDEO | +|08/01/2022 04:37:45| GRAMA +|08/01/2022 04:37:46| |enter buffer| +|08/01/2022 04:37:47| |YAAAAAA GRANDMA| +|08/01/2022 04:37:47| |>always buffering during iconic moments| +|08/01/2022 04:37:48| MIRAIIIIIIII +|08/01/2022 04:37:48| |grandma got tha swagger still| +|08/01/2022 04:37:48| |YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW YOU JUST KNOW | +|08/01/2022 04:37:52| REWIND +|08/01/2022 04:37:52| bufferoni +|08/01/2022 04:37:52| |MOTTO SENSHADO!| +|08/01/2022 04:37:53| |bath scene| +|08/01/2022 04:37:53| |Saoris old men lol| +|08/01/2022 04:37:56| |Still got a quartur of rum left, lets make it a blast| +|08/01/2022 04:37:57| | \o/ \o/ \o/ \o/ \o/| +|08/01/2022 04:37:57| |PANZER VOR| +|08/01/2022 04:37:59| |AND THEN THEY LIVED HAPPILY EVER AFTER| +|08/01/2022 04:38:01| |whats next?| +|08/01/2022 04:38:03| \o/ +|08/01/2022 04:38:03| |bath time| +|08/01/2022 04:38:04| |in universe old men jack off to shenshado on tv| +|08/01/2022 04:38:05| \o/ +|08/01/2022 04:38:05| |Why don't we fuck Fluff's brains out?| +|08/01/2022 04:38:06| |OVA next| +|08/01/2022 04:38:06| |the movie?| +|08/01/2022 04:38:07| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/| +|08/01/2022 04:38:08| |IT'S TIME| +|08/01/2022 04:38:08| |>saori attracts old men| +|08/01/2022 04:38:08| |WIN OR LOSE WE BOOZE| +|08/01/2022 04:38:09| |Der Film is next| +|08/01/2022 04:38:10| o/ +|08/01/2022 04:38:11| |The end| +|08/01/2022 04:38:13| |it's over| +|08/01/2022 04:38:15| KINO +|08/01/2022 04:38:15| |ENTER DER FILM| +|08/01/2022 04:38:16| |S1 OVER| +|08/01/2022 04:38:16| |THANK GOD THERE ARE NO MORE CONFLICTS AFTER THIS| +|08/01/2022 04:38:17| |IT'S OVER| +|08/01/2022 04:38:18| |inb4 no masturbation break| +|08/01/2022 04:38:18| |The ship is saved| +|08/01/2022 04:38:18| |INTERMISSION BROS| +|08/01/2022 04:38:20| |INTERMISSION TIME| +|08/01/2022 04:38:20| |TRULY WE WERE THE| +|08/01/2022 04:38:21| |OVA NEXT| +|08/01/2022 04:38:21| |PISS BREAK| +|08/01/2022 04:38:22| owari +|08/01/2022 04:38:23| |REFILL NOW| +|08/01/2022 04:38:23| |And then the ship sunk| +|08/01/2022 04:38:23| |I CAN'T BELIEVE GUP IS FUCKING OVER| +|08/01/2022 04:38:24| |THE SCHOOL REMAINS OPEN THE END| +|08/01/2022 04:38:24| |will the das finale 3 on? or till 2| +|08/01/2022 04:38:25| |And that's all the guppie content we ever got| +|08/01/2022 04:38:25| |I NEED INTERMISSION| +|08/01/2022 04:38:26| |OVA before movie retards| +|08/01/2022 04:38:26| |TIME FOR MY BEAUTIFUL BAKA WIFE TO SHOW UP| +|08/01/2022 04:38:26| |piss break!| +|08/01/2022 04:38:27| |S2 now| +|08/01/2022 04:38:28| |its over for mext guy| +|08/01/2022 04:38:28| |how much cum can you fit in the fuel tank of a tiger 2?| +|08/01/2022 04:38:29| |IS THIS A PISS BREAK?| +|08/01/2022 04:38:29| |how long is intermission?| +|08/01/2022 04:38:29| |REFILS REFILLS REFILLS| +|08/01/2022 04:38:29| |bros I'm so tired I don't know if I can manage the film too| +|08/01/2022 04:38:30| |Where's Banquet War?| +|08/01/2022 04:38:31| |Its been so long i can finally piss| +|08/01/2022 04:38:31| |Have a sweel interMISSION, everyone| +|08/01/2022 04:38:32| |ENTAAA ENTAAA INTERMISSON| +|08/01/2022 04:38:32| |TIME TO GET RID OF MY CARBON COATED MASSIVE SHIT LOG| +|08/01/2022 04:38:32| robert?? +|08/01/2022 04:38:32| |anyone who leaves to piss will be shot| +|08/01/2022 04:38:32| |EMPTY YOUR PISS BOTTLES| +|08/01/2022 04:38:33| |Piss bucket emptying break| +|08/01/2022 04:38:33| |momo get ur grades together u bitch| +|08/01/2022 04:38:34| |Awesome that no one tries to close their school| +|08/01/2022 04:38:34| |GATA GOTTO CHU CHU| +|08/01/2022 04:38:35| |see you when the first movie airs| +|08/01/2022 04:38:37| |INTER INTER MISSION| +|08/01/2022 04:38:39| |INTER INTER MISSION| +|08/01/2022 04:38:40| >Intermission +|08/01/2022 04:38:42| tinermissson +|08/01/2022 04:38:44| |WILL ORARI WIN THE NEXT BATTLE FOUND OUT NEXT TIME ON DRAGON BALL Z| +|08/01/2022 04:38:44| |SMOKE EM IF YOU GOT EM| +|08/01/2022 04:38:45| |THANKS GALAX| +|08/01/2022 04:38:46| |how long is intermission?????| +|08/01/2022 04:38:46| intermission +|08/01/2022 04:38:47| |Are you guys pussies| +|08/01/2022 04:38:48| |Time to empty the poop bottle| +|08/01/2022 04:38:49| |5 minute sleep lets go| +|08/01/2022 04:38:52| |FEGELEIN | +|08/01/2022 04:38:54| |how long is the intermission| +|08/01/2022 04:38:54| |Can't believe I'm still here at 4:30 AM| +|08/01/2022 04:38:54| |time to PISS| +|08/01/2022 04:38:56| |need more panzer chocolate| +|08/01/2022 04:38:58| |Just got my drinks out, at least entertain me for the duration of this intermission fuckers| +|08/01/2022 04:39:00| |5 mins slepp? SUSSY| +|08/01/2022 04:39:00| |HOW LONG HOW LONG HOW LONG HOW LONG HOW LONG| +|08/01/2022 04:39:04| |>NO INTERMISSION SONG| +|08/01/2022 04:39:04| |How short it short?| +|08/01/2022 04:39:04| |INTER INTERMISSION| +|08/01/2022 04:39:05| |Piss break| +|08/01/2022 04:39:05| |PISS TIME | +|08/01/2022 04:39:11| |2 YEARS| +|08/01/2022 04:39:12| |Kono bangumi wa goran no suponsaa no teikyou de okurishimasu!| +|08/01/2022 04:39:12| |robert pls| +|08/01/2022 04:39:13| |10 mins| +|08/01/2022 04:39:14| t-thanks +|08/01/2022 04:39:16| |sex with nona| +|08/01/2022 04:39:17| |thank you editor-san| +|08/01/2022 04:39:17| |10 minutes to take a shit lets goooooooooooooo| +|08/01/2022 04:39:22| |WHERE INTERMISSION SONGGGGGGG????????????????????????????| +|08/01/2022 04:39:23| |Steiner's forces will relieve Maho in the courtyard duel... then we can save Berlin| +|08/01/2022 04:39:28| |TIME TO PISS NONSTOP FOR 10 MINUTES| +|08/01/2022 04:39:29| |Time to time of Katyusha while pissing| +|08/01/2022 04:39:29| |Can't believe Renta Tsuji still hasn't fucked Anzu| +|08/01/2022 04:39:29| |KINO EDITION| +|08/01/2022 04:39:31| |I NEED TO CUM UOOOOOHHHHHHHHHH| +|08/01/2022 04:39:31| |inter mission music NOW!| +|08/01/2022 04:39:31| |TFW have to do shit from 3:00 to 4:00| +|08/01/2022 04:39:35| RUDE +|08/01/2022 04:39:35| |10 mins isnt enough to take shitSTOP BEING SUSSY| +|08/01/2022 04:39:37| |THIS ISNT ENOUGH FOR MY MASSIVE CARBON COATED SHIT LOG| +|08/01/2022 04:39:37| |who you calling a baka| +|08/01/2022 04:39:38| |dont leave me bros| +|08/01/2022 04:39:42| |post what you've been drinking tonight guys| +|08/01/2022 04:39:43| |PLAY PANZERLIED FOR 10 MINS| +|08/01/2022 04:39:48| water +|08/01/2022 04:39:52| |SPRITE ALL DAY LONG| +|08/01/2022 04:39:53| wasser +|08/01/2022 04:39:54| |27k worthless danmakus| +|08/01/2022 04:39:56| |I'm gonna sleep, thanks for the company St. Glorianachads| +|08/01/2022 04:39:57| |TL Note: Water means mizu| +|08/01/2022 04:39:59| |10 BAKA MINUTES| +|08/01/2022 04:40:04| |grapefuit juice, I'm saving myself for the wotos| +|08/01/2022 04:40:13| |10 minutes won't be enough to piss out what I drank| +|08/01/2022 04:40:14| |never watched wotos | +|08/01/2022 04:40:15| |SONG DOKO?| +|08/01/2022 04:40:17| |DRINK SEITOKAI ONSEN WATER AAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 04:40:17| |I have "honey" aclohol but it's not good| +|08/01/2022 04:40:23| |is the woto show good?| +|08/01/2022 04:40:29| |Does it matters?| +|08/01/2022 04:40:29| |FAP BREAK, TIME FOR MAHO DOUJINS| +|08/01/2022 04:40:31| |shimada mika doko| +|08/01/2022 04:40:32| yes +|08/01/2022 04:40:37| |ok good| +|08/01/2022 04:40:38| |which doujins| +|08/01/2022 04:40:42| |mead is great with beer though| +|08/01/2022 04:40:43| |Chinpo yakuza miporin| +|08/01/2022 04:40:44| |snw is kino indeed| +|08/01/2022 04:40:48| |brew your own mead| +|08/01/2022 04:40:49| |Time to jack off to Mika while listening to Finnish Music| +|08/01/2022 04:40:51| ez +|08/01/2022 04:40:52| |fap break time| +|08/01/2022 04:41:00| |KAUAN | +|08/01/2022 04:41:01| |Shota impregnation sex with Maho!| +|08/01/2022 04:41:21| |Fapping to bunnies being trapped in the cold!| +|08/01/2022 04:41:23| https://exhentai.org/g/2106075/f12f5eab42/ +|08/01/2022 04:41:25| |CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +|08/01/2022 04:41:31| |God gives his heaviest tanks to his tiniest girls| +|08/01/2022 04:41:33| |CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +|08/01/2022 04:41:42| |CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM CUM | +|08/01/2022 04:41:43| kanpai~ +|08/01/2022 04:41:45| |Anon I can't click that hentai link| +|08/01/2022 04:41:46| |shut up| +|08/01/2022 04:41:49| |The tamara hosomi one is excelent| +|08/01/2022 04:41:50| https://miho.lives.rent.free/in/ERIKAS-head.rtf +|08/01/2022 04:41:57| |TOTSUGEKIS NEXT| +|08/01/2022 04:41:59| |>quick fap break time| +|08/01/2022 04:41:59| |who needs hentai link fuck off| +|08/01/2022 04:42:04| |hi, i'd like to say i hate niggers, that's all thanks| +|08/01/2022 04:42:06| |sup nerds| +|08/01/2022 04:42:07| |post pics in chat| +|08/01/2022 04:42:09| |MY WIFE NISHI| +|08/01/2022 04:42:16| |HOW MANY HOURS LEFT? 5?| +|08/01/2022 04:42:21| |Anon-kun... just transcribe that link| +|08/01/2022 04:42:22| |Someone beat me to typing the n word| +|08/01/2022 04:42:23| |my wife tan Nishi| +|08/01/2022 04:42:24| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 04:42:26| |I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE | +|08/01/2022 04:42:29| |Don't use white text No one can read that shit| +|08/01/2022 04:42:32| |*TINK* *TINK* *TINK* GENTLEMEN, I HAVE AN ANNOUNCEMENT TO MAKE| +|08/01/2022 04:42:33| |bruh i need at least 30 mins to fap| +|08/01/2022 04:42:34| |I HATE THE CHINESE I HATE THE CHINESE I HATE THE CHINESE | +|08/01/2022 04:42:46| |fuck COVID19| +|08/01/2022 04:42:46| |/purple/sisters ww@| +|08/01/2022 04:42:47| |are we watching the finales after this| +|08/01/2022 04:42:50| |I need atleast 2 hrs of edging| +|08/01/2022 04:42:56| |AHEM, Niggers. That is all| +|08/01/2022 04:42:56| |Farming /GuP/ threads for my folder | +|08/01/2022 04:42:57| |SOUTH CHINA SEA BELONGS TO CHINA| +|08/01/2022 04:42:57| |i need 3| +|08/01/2022 04:42:57| |you get 7 fap or no fap | +|08/01/2022 04:42:58| Anzu +|08/01/2022 04:43:02| |>he doesn't fap in 30 seconds| +|08/01/2022 04:43:02| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 04:43:03| |I HATE ThE ANTICRIST| +|08/01/2022 04:43:03| |yukari akiyama's tank course included?| +|08/01/2022 04:43:04| :DDDDDDD +|08/01/2022 04:43:07| |post your favorite gup doujins| +|08/01/2022 04:43:07| |no it fucking doesent| +|08/01/2022 04:43:09| |FUCK NIGGERS FUCK KIKES FUCK NIGGERS FUCK JANNIES AND FUCK DARJEELING| +|08/01/2022 04:43:11| |benis :DDDD| +|08/01/2022 04:43:11| |BASED GALAX| +|08/01/2022 04:43:13| |SENKAKU ISLANDS| +|08/01/2022 04:43:15| |THERE WE GO INTERMISSION MUSIC| +|08/01/2022 04:43:16| |Time to take a beer soaked shit| +|08/01/2022 04:43:17| |popping prescription painkillers with yukari| +|08/01/2022 04:43:17| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:43:17| tulta +|08/01/2022 04:43:17| |not letting this nut go until the end of DF3 bros| +|08/01/2022 04:43:18| :D +|08/01/2022 04:43:20| |SEX WITH FINNS| +|08/01/2022 04:43:20| |RUSSIAN BROS DON'T LOOK| +|08/01/2022 04:43:21| |EBIN :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:21| FINNNNNS +|08/01/2022 04:43:24| |FUG :DDDDDDDDDDD| +|08/01/2022 04:43:24| DULDA +|08/01/2022 04:43:26| |FUG :DDDDDDDDDDDDDDDD| +|08/01/2022 04:43:26| ebig +|08/01/2022 04:43:26| gimi +|08/01/2022 04:43:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:43:29| :DDDDDDDDD +|08/01/2022 04:43:29| :DDDDDDDDDDDDD +|08/01/2022 04:43:30| |NYET MOLOTOV| +|08/01/2022 04:43:31| |fug :DDDDDDDDDDDDDD| +|08/01/2022 04:43:32| |fug :DDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:33| |OI VITTU SAATANA PERRRRRRRKELE| +|08/01/2022 04:43:33| |SUOMI PERKELE| +|08/01/2022 04:43:33| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 04:43:33| |EBINNN :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:34| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:34| |Based music| +|08/01/2022 04:43:34| |ebin :DDD| +|08/01/2022 04:43:36| |BENIS :DDDDDDDDDDDDDDDD| +|08/01/2022 04:43:37| |mika tiddies :DDDDDD| +|08/01/2022 04:43:39| |MIGA BESD GUB :DDDDDD| +|08/01/2022 04:43:40| |Saving my nut for Alice OVA| +|08/01/2022 04:43:41| |BASED COMMIE KILLING FINNS| +|08/01/2022 04:43:42| |had to leave at maus part. missed the end. feels bad| +|08/01/2022 04:43:43| |FUGGG IDS FINN DIME :DDDDDDDDDDDDD| +|08/01/2022 04:43:44| :DDDDDDDDDDDDDDDDDDDDDDddddd +|08/01/2022 04:43:45| |Fuggggg :DDD| +|08/01/2022 04:43:45| |KAUAN ON KARSITTY| +|08/01/2022 04:43:45| |miga :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:43:46| |its disustinglye finnish in here right now| +|08/01/2022 04:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:43:49| BENIS +|08/01/2022 04:43:49| |oh fugg :D| +|08/01/2022 04:43:51| |SSCHIBBEN SNAB XDDDD| +|08/01/2022 04:43:54| |dulda :DDD| +|08/01/2022 04:43:55| |i wish i was finnish| +|08/01/2022 04:43:56| |Gandeke /DDDDD| +|08/01/2022 04:43:56| |CHRISDIEEEEE :DDDDDdd| +|08/01/2022 04:43:56| |NJET MOLOTFF| +|08/01/2022 04:43:56| |benis :D| +|08/01/2022 04:43:57| |PERKELE :DDDDDDDDDDD| +|08/01/2022 04:43:58| |chrisdie susbension :DDDDDD| +|08/01/2022 04:44:00| Finna +|08/01/2022 04:44:05| |Niet Molotov| +|08/01/2022 04:44:06| SUOMI +|08/01/2022 04:44:06| |PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:44:07| |SEKEJERVEN POLKAA :DDD| +|08/01/2022 04:44:11| |What episode are we on?| +|08/01/2022 04:44:11| |Jumalauta :DDDDDDD| +|08/01/2022 04:44:14| |Simo :DDDDDDDDDDDDDDDDD| +|08/01/2022 04:44:15| TUL-TA! +|08/01/2022 04:44:21| |Sergeant I lost my rifle :D| +|08/01/2022 04:44:21| |Bergel :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:44:22| |show's over, movie time| +|08/01/2022 04:44:24| |>he came to the stream late| +|08/01/2022 04:44:28| |saunaklonkku with keizoku| +|08/01/2022 04:44:30| |BRUH WADDUP NIGGAS| +|08/01/2022 04:44:32| |Anyone make it through the whole stream| +|08/01/2022 04:44:33| |oh shid :DDDDD| +|08/01/2022 04:44:36| |maho is my wife btw| +|08/01/2022 04:44:39| |Yeah I did| +|08/01/2022 04:44:47| |5 minutes| +|08/01/2022 04:44:48| |lazy sex with mika| +|08/01/2022 04:44:49| |Ive had under 7 hours sleep across what is now 3 nights| +|08/01/2022 04:44:49| |youko is pretty cute| +|08/01/2022 04:44:50| |Thank you all for being here, Anons!| +|08/01/2022 04:44:50| |I want to go to SUOMI| +|08/01/2022 04:44:56| |FIVE MINUDS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:44:57| |for me its mako| +|08/01/2022 04:44:58| |I'm Maho btw. (Miho 4eva)| +|08/01/2022 04:45:01| |Thankyou for being here anon| +|08/01/2022 04:45:02| |rip to all bros we lose on the way| +|08/01/2022 04:45:03| |fug :DDD just type this fast: https://exhentai.org/g/2106075/f12f5eab42/| +|08/01/2022 04:45:13| |*AHEM* flat anzu chest| +|08/01/2022 04:45:14| |nursing handjob from Hana| +|08/01/2022 04:45:21| |i ain't clickin dat shit nigga| +|08/01/2022 04:45:24| |SUOMALIANEN CUNNY| +|08/01/2022 04:45:24| >flowerjob +|08/01/2022 04:45:34| |sqeezing saori's tits| +|08/01/2022 04:45:36| |The sun is rising| +|08/01/2022 04:45:37| |tfw buffering| +|08/01/2022 04:45:39| |>use to read gup hentai >start watching the show >now feel too guilty to read gup hentai| +|08/01/2022 04:45:42| |you're a nigger if you write in yellow lol| +|08/01/2022 04:45:49| |I want to stick my dick into Hana's rose| +|08/01/2022 04:45:50| |red gang| +|08/01/2022 04:45:51| |can someone link the hentai where erika is tickled in a swimsuit| +|08/01/2022 04:45:53| |What color amI?| +|08/01/2022 04:45:54| |AYOOO HOLD UP| +|08/01/2022 04:45:56| |Playing Warhammer on Anzu's chest| +|08/01/2022 04:45:57| |PINK GANG 4 LYF| +|08/01/2022 04:46:01| |>read gup hentai >watch gup >now read more gup hentai| +|08/01/2022 04:46:04| |purple best color| +|08/01/2022 04:46:06| |EEEEEEEEEEEEIIIIIIIIIIIII WADDUP| +|08/01/2022 04:46:07| |Red supremacy| +|08/01/2022 04:46:09| |this ^| +|08/01/2022 04:46:11| |killing and consuming the flesh of momo kawashima| +|08/01/2022 04:46:11| perkele +|08/01/2022 04:46:13| |I simply do not read yellow posts| +|08/01/2022 04:46:13| >pink +|08/01/2022 04:46:15| |I have never fapped to guppies and never will. They are for each other. I am the chad here.| +|08/01/2022 04:46:15| BLYAT +|08/01/2022 04:46:18| |i'm a white supremacist| +|08/01/2022 04:46:18| RASVETALI +|08/01/2022 04:46:21| >yellow +|08/01/2022 04:46:24| |cunny bros....| +|08/01/2022 04:46:24| |this be lit asf doe fr fr ngl| +|08/01/2022 04:46:25| |>typing in green| +|08/01/2022 04:46:25| hail +|08/01/2022 04:46:26| |based greenchad| +|08/01/2022 04:46:27| |HALF TIME FAP TIME| +|08/01/2022 04:46:28| |It's more of a magenta| +|08/01/2022 04:46:30| |best song btw| +|08/01/2022 04:46:34| |KRASNAYA ARIJA| +|08/01/2022 04:46:34| |Redfags can't see this | +|08/01/2022 04:46:34| |CYKA BLYAT| +|08/01/2022 04:46:35| UUUUUURRRRRRAAAAAAAAAAAAA +|08/01/2022 04:46:35| RASTVITALI +|08/01/2022 04:46:38| >tetris +|08/01/2022 04:46:39| |Press R to report dissenters| +|08/01/2022 04:46:39| URA +|08/01/2022 04:46:41| dumbass +|08/01/2022 04:46:42| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:46:43| |DAILY REMINDER TO LOVE YOUR STATION| +|08/01/2022 04:46:43| |who gives a shit about the distinction between purple and magenta| +|08/01/2022 04:46:46| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:46:46| CYKA +|08/01/2022 04:46:47| ypaaaaaaaaaaaaaaaaaaaa +|08/01/2022 04:46:48| Cunners... +|08/01/2022 04:46:49| |>he just needs 3 minutes to fap| +|08/01/2022 04:46:52| |PRAVDA BROS ARE TIME IS COMING| +|08/01/2022 04:46:53| |>TFW no Kyutusha daughterwife| +|08/01/2022 04:46:57| |CYKA BLYAT URAAAAAAAAAAAAAAAA CHEEKI BREEKI| +|08/01/2022 04:47:00| |>Not fapping for over a hour| +|08/01/2022 04:47:01| |crush capitalism!!| +|08/01/2022 04:47:02| |i sit on my fap throne for 20 minutes at least| +|08/01/2022 04:47:03| |CHEEKI BREEKI| +|08/01/2022 04:47:03| |damn female kid| +|08/01/2022 04:47:09| |im going to | +|08/01/2022 04:47:09| |>tfw no klara/nona harem| +|08/01/2022 04:47:10| |KOSMOS BLYAT| +|08/01/2022 04:47:12| |>ywn hear maho singing panzerlied or erika| +|08/01/2022 04:47:12| |>Tfw no buryat waifu| +|08/01/2022 04:47:16| |lawyer here you have permission to stream this?| +|08/01/2022 04:47:17| |Need rape correction!! !| +|08/01/2022 04:47:19| |>TFW can go for over 2 hours | +|08/01/2022 04:47:22| |TRAV TRAV U DOMA| +|08/01/2022 04:47:23| |invisible text| +|08/01/2022 04:47:30| |I wish I could have Erika as my waif| +|08/01/2022 04:47:31| |super lawyer here, you have my permission to stream| +|08/01/2022 04:47:31| |>ywn be shorter than nonna| +|08/01/2022 04:47:32| |lawyer here, he has permission| +|08/01/2022 04:47:34| |PROSHAI NAVEKI| +|08/01/2022 04:47:35| |We have an invisible thot here| +|08/01/2022 04:47:37| |Shit? Taken Beer? Grabbed Penis? In hand. Yep it's GuP stream time| +|08/01/2022 04:47:40| |I haven't had a good edging sesh in months| +|08/01/2022 04:47:40| |rape lawyers| +|08/01/2022 04:47:41| |I was hoping what is love duce or some other sick edits here tbh| +|08/01/2022 04:47:45| |CHOOSE ONE: NONNA OR MAHO| +|08/01/2022 04:47:47| |>tfw shorter than nonna by 1 cm| +|08/01/2022 04:47:50| KLARA +|08/01/2022 04:47:50| maho +|08/01/2022 04:47:50| NONNA +|08/01/2022 04:47:51| Nonna +|08/01/2022 04:47:52| Nonna +|08/01/2022 04:47:54| |cant rape me if i consent| +|08/01/2022 04:47:54| Nonna +|08/01/2022 04:47:56| |maho everyday| +|08/01/2022 04:47:56| nonna +|08/01/2022 04:47:57| |Maho > Nonna| +|08/01/2022 04:47:58| |SEX WIH MAHO ALL DAY| +|08/01/2022 04:48:00| |Lawyer here. what are they gonna do, DMCA?| +|08/01/2022 04:48:05| |nonna posters are fags| +|08/01/2022 04:48:07| |can't accuse me of rape if i kill you after| +|08/01/2022 04:48:08| |SEX WITH MEXT| +|08/01/2022 04:48:14| |lawyer here, they can lick my balls| +|08/01/2022 04:48:14| |tfw shorter than Katyusha| +|08/01/2022 04:48:16| |lawyer here, i'm gay| +|08/01/2022 04:48:17| |Lawyer here, I'm emailing Actas right now| +|08/01/2022 04:48:17| |But Erika > All| +|08/01/2022 04:48:17| |my butt hurts| +|08/01/2022 04:48:19| |Sex with fukuda| +|08/01/2022 04:48:21| HUGGBEES +|08/01/2022 04:48:23| |i want to smother my face on nonna's nonnas| +|08/01/2022 04:48:25| |katyusha or anzu tho| +|08/01/2022 04:48:32| |Anzu with Anzu| +|08/01/2022 04:48:32| |Lawyer here, I'm having sex with Galax rn| +|08/01/2022 04:48:32| |Fukuda on the Tokyo Trials| +|08/01/2022 04:48:35| |haven't seen df3 yet, ive got a good feeling about duce| +|08/01/2022 04:48:35| |Not a Lawer, they can lick my dick and call me daddy| +|08/01/2022 04:48:43| |Katyusha and Anzu at the same time...| +|08/01/2022 04:48:43| |should we tell him...| +|08/01/2022 04:48:44| ducebro.... +|08/01/2022 04:48:44| |lawyer here, duce is objectively the best gup| +|08/01/2022 04:48:51| |ONE MINUTE REMAINING| +|08/01/2022 04:48:53| |FEEL MY SHINE| +|08/01/2022 04:48:54| |how come no one ever posts nonna in gup threads?| +|08/01/2022 04:48:55| |Lawyer here, I'm just dying from alcohol| +|08/01/2022 04:48:56| |Anzu is for Mextguy, her husband| +|08/01/2022 04:48:56| 1M +|08/01/2022 04:48:57| EXCITE +|08/01/2022 04:48:58| |>there are some anons that didn't go do something else during the intermission| +|08/01/2022 04:49:02| |I JSUT FEEL MY SHIIIIIIIIIIIIIINE| +|08/01/2022 04:49:03| |I JUST FEEL MY WIIIIIIIIND| +|08/01/2022 04:49:03| |Who here watching GuP and Conair at the same time?| +|08/01/2022 04:49:04| |Can't get sentenced if you swallow a cyanide pill| +|08/01/2022 04:49:05| |Lawyer here this stream needs to be redacted| +|08/01/2022 04:49:06| |nonna is too hot| +|08/01/2022 04:49:08| |MY MASSIVE CARBON COATED SHIT LOG TURNED INTO A CONSTIPATION SO NOTHING WAS RESOLVED THANKS FAGGOT| +|08/01/2022 04:49:09| |RISE AND RIDE| +|08/01/2022 04:49:10| |bros... i wasted the intermission...| +|08/01/2022 04:49:11| |Nonna is too sexy for GuP threads| +|08/01/2022 04:49:11| |GET YOUR LOAD READY| +|08/01/2022 04:49:16| |OP TIME| +|08/01/2022 04:49:17| |based and cyanidepilled| +|08/01/2022 04:49:21| 30 +|08/01/2022 04:49:22| |Drink MRE coffee anon| +|08/01/2022 04:49:24| |I am greek| +|08/01/2022 04:49:25| |First episode finally starting| +|08/01/2022 04:49:27| |GALAX I wasn't ready, can we have 5 more minutes :)| +|08/01/2022 04:49:31| 20 +|08/01/2022 04:49:32| |>greeks in my stream| +|08/01/2022 04:49:33| seanigger +|08/01/2022 04:49:36| >FEET +|08/01/2022 04:49:39| |Greek? You mean fake Roman?| +|08/01/2022 04:49:41| 10 +|08/01/2022 04:49:42| |Greeks are too poor to join| +|08/01/2022 04:49:42| |fat nick is that you?| +|08/01/2022 04:49:44| |there better not be any fucking greeks here| +|08/01/2022 04:49:45| LATE +|08/01/2022 04:49:45| |>Being to only NL anon| +|08/01/2022 04:49:46| |Here we go| +|08/01/2022 04:49:46| |greece is based| +|08/01/2022 04:49:46| |IT TIME BROS | +|08/01/2022 04:49:48| KITAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:49:50| |lessss gooooooooooooooooooooooooooooooooooooooooooooo| +|08/01/2022 04:49:51| START +|08/01/2022 04:49:53| |Coffee, Instant, Type I or Type II?| +|08/01/2022 04:49:56| |I'm fucking finnish| +|08/01/2022 04:49:57| TM +|08/01/2022 04:49:59| |WAIT FOR SONG| +|08/01/2022 04:50:04| |LET'S GO BOYS TRY NOT TO PASS OUT| +|08/01/2022 04:50:04| |I AM FUCKING FINNISHED| +|08/01/2022 04:50:07| |I'm Malaysian| +|08/01/2022 04:50:10| |just got to the stream, where are >we in the show rn | +|08/01/2022 04:50:11| |can't read whitefags HAHA| +|08/01/2022 04:50:14| |WE GOT MOVIE SIGN| +|08/01/2022 04:50:15| >boys +|08/01/2022 04:50:16| |TL NOTE: TM means Tasty Maho| +|08/01/2022 04:50:19| |ewww, seaniggers| +|08/01/2022 04:50:19| FEEEEEEET +|08/01/2022 04:50:20| >SEANIGS +|08/01/2022 04:50:20| |where are my /7:50pm/ chads at?| +|08/01/2022 04:50:20| |Euro bro here, im dying| +|08/01/2022 04:50:22| |RISE TO MY FEEEEEEEEEEEEEEEEEEEEEEET| +|08/01/2022 04:50:25| >WHITE +|08/01/2022 04:50:26| kinokinokino +|08/01/2022 04:50:26| KITA +|08/01/2022 04:50:27| FEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET +|08/01/2022 04:50:29| >slags +|08/01/2022 04:50:29| |0448 gang sound off| +|08/01/2022 04:50:31| |das film > akira| +|08/01/2022 04:50:31| |SEANIGGERS WER U AT| +|08/01/2022 04:50:31| |EU Bro still going strong| +|08/01/2022 04:50:31| |kino time| +|08/01/2022 04:50:32| TEA +|08/01/2022 04:50:32| TEA +|08/01/2022 04:50:33| KITAAAAAAAAAAAA +|08/01/2022 04:50:34| ??????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 04:50:35| |cute slag tea| +|08/01/2022 04:50:35| tea +|08/01/2022 04:50:35| finna +|08/01/2022 04:50:36| |SHUT UP SLAG| +|08/01/2022 04:50:36| ?????????????????????? +|08/01/2022 04:50:36| |TL NOTE: NIGGERS means KINO| +|08/01/2022 04:50:37| ?????????????????????? +|08/01/2022 04:50:37| URA +|08/01/2022 04:50:38| SLAGS +|08/01/2022 04:50:38| |HERE WE GO| +|08/01/2022 04:50:38| |UK anon, im living on weremacht energy| +|08/01/2022 04:50:38| |SHUT UP SLAG| +|08/01/2022 04:50:39| |STANDING UP| +|08/01/2022 04:50:40| ????? +|08/01/2022 04:50:41| ???????????????????????????????????????????????????????????????? +|08/01/2022 04:50:42| ??????? +|08/01/2022 04:50:42| |time for TOTSUGEKI| +|08/01/2022 04:50:43| ???????????????????????????????????? +|08/01/2022 04:50:43| |hip time| +|08/01/2022 04:50:44| |SHIIIIIIIIIIIIIIIT I DIDN'T PISS ALREADY| +|08/01/2022 04:50:45| |dars tea!!| +|08/01/2022 04:50:45| |Didn't we have some aftershow OVAs btw| +|08/01/2022 04:50:46| |TEA TIME!| +|08/01/2022 04:50:46| |shut up Darj| +|08/01/2022 04:50:47| ???????????????????? +|08/01/2022 04:50:48| |>drinking tea with shit floating in it| +|08/01/2022 04:50:48| ??????????????????????????????????????? +|08/01/2022 04:50:49| |it's not tea, it's piss| +|08/01/2022 04:50:49| |LONG LIVE THE IRA| +|08/01/2022 04:50:50| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 04:50:51| |WHAT THE FUCK ARE YOU TALKING ABOUT | +|08/01/2022 04:50:52| ???????????????????????????????? +|08/01/2022 04:50:52| ???????????????????????????????????????????????????????????????? +|08/01/2022 04:50:52| ???????????????????/ +|08/01/2022 04:50:53| sayings? +|08/01/2022 04:50:53| |>wow we're fucking losing huh| +|08/01/2022 04:50:54| """great""" +|08/01/2022 04:50:55| |she on drugs| +|08/01/2022 04:50:57| |der film is the cinematic milestone of the 21st century| +|08/01/2022 04:50:57| BUKKAKEEE +|08/01/2022 04:50:58| |3D CGI!!!!| +|08/01/2022 04:50:59| |READY YOUR TOTSUGEKIS LADS| +|08/01/2022 04:50:59| |HAVE YOU HEAR THIS SAYING?| +|08/01/2022 04:50:59| |DRINK THE BROTH| +|08/01/2022 04:51:00| |I WAS BORN IN A DUBLIN STREET| +|08/01/2022 04:51:04| |SHUT UP DARJEELING| +|08/01/2022 04:51:05| |PEKOE HAS HAD ENOUGH| +|08/01/2022 04:51:05| |>massive jump in animation quality| +|08/01/2022 04:51:07| |AUDIO PORN| +|08/01/2022 04:51:07| |best use of a golf course ever seen| +|08/01/2022 04:51:09| FAITOOOO +|08/01/2022 04:51:09| |That detailed barel| +|08/01/2022 04:51:10| |hail hitler| +|08/01/2022 04:51:11| |CHI-HA PLS GO| +|08/01/2022 04:51:12| KINO +|08/01/2022 04:51:13| |DON'T YOU SEE, PEKOE!? SALVATION| +|08/01/2022 04:51:14| |why are they in a golf course?| +|08/01/2022 04:51:14| |what heppaned I went to go pee and missed the end of last ep| +|08/01/2022 04:51:15| |BAKA ALERT ! BAKA ALERT !| +|08/01/2022 04:51:16| FINNS +|08/01/2022 04:51:16| >hail +|08/01/2022 04:51:16| |'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO 'ERE WE GO | +|08/01/2022 04:51:18| Nishi +|08/01/2022 04:51:19| |ENTER HOBO| +|08/01/2022 04:51:19| |FUGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:51:20| BENIS +|08/01/2022 04:51:20| :DDDDDDDDDD +|08/01/2022 04:51:20| |HEIL MAHO| +|08/01/2022 04:51:20| TOTSGEK +|08/01/2022 04:51:21| |Like wasn't there plenty OVA left where they just fuck around before the film or am I tripping| +|08/01/2022 04:51:22| |FUG :DDDDDDDDD| +|08/01/2022 04:51:23| SALVATION! +|08/01/2022 04:51:23| FINLAND +|08/01/2022 04:51:24| TORILLE +|08/01/2022 04:51:24| |benis :DDDDDDDDDDDDDddd| +|08/01/2022 04:51:24| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:51:24| BENIS +|08/01/2022 04:51:25| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 04:51:26| |hail was an ancient middle age greeting| +|08/01/2022 04:51:26| |CHINA 444444444444444444444444444444| +|08/01/2022 04:51:28| BENIS +|08/01/2022 04:51:28| hobo +|08/01/2022 04:51:29| |BENIS :DDDD| +|08/01/2022 04:51:29| |CAM ON OORAI| +|08/01/2022 04:51:29| EBIN +|08/01/2022 04:51:31| MIKAAAAAAAAAAAAAAA +|08/01/2022 04:51:32| |FUG :DDD| +|08/01/2022 04:51:32| :DDDDDDDDDDDDD +|08/01/2022 04:51:33| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:33| |BENIS :D| +|08/01/2022 04:51:33| |o fug :D| +|08/01/2022 04:51:33| |darj 2| +|08/01/2022 04:51:34| |CUM ON ENGERLAND *BANG BANG BANG*| +|08/01/2022 04:51:34| FINNS! +|08/01/2022 04:51:34| |BRITS CAMPING AGAIN| +|08/01/2022 04:51:34| |She should be playing black metal| +|08/01/2022 04:51:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:35| |FUGGG :DDDDDD| +|08/01/2022 04:51:35| :DDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:35| |THERE SHE IS :DDDD| +|08/01/2022 04:51:35| |The finnish whores| +|08/01/2022 04:51:36| |CHIHA 444444444444444444444444444444| +|08/01/2022 04:51:36| KERMAVILLI +|08/01/2022 04:51:36| |BENIS :DDDDDDDDD| +|08/01/2022 04:51:36| :D +|08/01/2022 04:51:37| |BERGELE :DDDDD| +|08/01/2022 04:51:37| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:38| |Koskenkorva :DDD| +|08/01/2022 04:51:38| DULDA +|08/01/2022 04:51:39| :DDD +|08/01/2022 04:51:39| |OH FUG :| +|08/01/2022 04:51:40| :DDDDDDDDDDDDDDD +|08/01/2022 04:51:40| |SPURDO SPÄRDE| +|08/01/2022 04:51:41| PRÖÖÖH +|08/01/2022 04:51:42| |FUGGG :DDDD| +|08/01/2022 04:51:42| |Who /hereillä/ here| +|08/01/2022 04:51:42| :DDDD +|08/01/2022 04:51:42| HOBOS +|08/01/2022 04:51:43| |Hitler had the Jews; just let me have the F*nns| +|08/01/2022 04:51:43| HOBO +|08/01/2022 04:51:44| VODKA +|08/01/2022 04:51:44| |miko shimada| +|08/01/2022 04:51:45| |Fun fact: this movie contains 107 different fonts| +|08/01/2022 04:51:45| |EBIN TIME :DDDDDDDDDDDD| +|08/01/2022 04:51:45| KLEPTO +|08/01/2022 04:51:46| |PERGELE :DDDDDDDDDDDD| +|08/01/2022 04:51:46| FUG +|08/01/2022 04:51:48| |Tanks are life| +|08/01/2022 04:51:48| |for the benis| +|08/01/2022 04:51:49| :DDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 04:51:50| SUOMI +|08/01/2022 04:51:50| PERKELE +|08/01/2022 04:51:52| PLANE +|08/01/2022 04:51:52| |what do we spam for the finns?| +|08/01/2022 04:51:52| |/hereillä/ represent| +|08/01/2022 04:51:52| | nani yo sore| +|08/01/2022 04:51:54| |>for the free stuff| +|08/01/2022 04:51:54| SAATANA +|08/01/2022 04:51:54| |BENIS :DDDDDDDDDD| +|08/01/2022 04:51:56| PERKELE +|08/01/2022 04:51:57| KERMAVIILI +|08/01/2022 04:51:58| |fug :DDDDDDDDDDDDDDDDD| +|08/01/2022 04:52:02| :DDDDDD +|08/01/2022 04:52:02| |>Important lessons| +|08/01/2022 04:52:03| SAATAANA +|08/01/2022 04:52:03| |hereillä, mää kuolen saatana| +|08/01/2022 04:52:04| |TORILLE TAVATAAN| +|08/01/2022 04:52:06| |Who's driving?| +|08/01/2022 04:52:06| |satana perkele| +|08/01/2022 04:52:07| |WHAT DID SHE MEAN?| +|08/01/2022 04:52:09| |PEKOE UOOOOOOOHHHHHHHHHHH| +|08/01/2022 04:52:09| |VOI VITTU| +|08/01/2022 04:52:09| |gimi :DDDDDDDDDDDDDDDDD| +|08/01/2022 04:52:13| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 04:52:14| ???? +|08/01/2022 04:52:15| |WELL THERE'S THIS SAYING| +|08/01/2022 04:52:17| |be elegant | +|08/01/2022 04:52:18| ???????? +|08/01/2022 04:52:18| ASSAM +|08/01/2022 04:52:19| |She means she wants to steal something| +|08/01/2022 04:52:19| |does shiho still hate miho?| +|08/01/2022 04:52:20| ?!?!?!?!?!? +|08/01/2022 04:52:20| | and colonize Tanzania during the 19th century. I want to invade Darjeeling’s vulnerable parts just like when Ugandan dictator Idi Amin inva| +|08/01/2022 04:52:21| |What did she mean by this?| +|08/01/2022 04:52:22| |did you know that the winterwar, sign of finn resistance, was actually a shame for the finns| +|08/01/2022 04:52:23| ?????????????????????????????????????????????????????????????????????? +|08/01/2022 04:52:23| ASSam +|08/01/2022 04:52:24| |ASSAM MY WIFE| +|08/01/2022 04:52:25| !?!?!??!?!?!?! +|08/01/2022 04:52:26| ??????????????????????????????? +|08/01/2022 04:52:28| |imagine fucking losing from this position| +|08/01/2022 04:52:29| |There's this saying: vittu ku väsyttää saatana| +|08/01/2022 04:52:29| ????????????? +|08/01/2022 04:52:29| |who tf is driving| +|08/01/2022 04:52:29| >MILK +|08/01/2022 04:52:32| |my QUEEEEEEN| +|08/01/2022 04:52:32| |based mako| +|08/01/2022 04:52:33| |Just drink tea 4Head| +|08/01/2022 04:52:33| CUMSHAKE +|08/01/2022 04:52:33| ????????????????? +|08/01/2022 04:52:34| |I'm sorry, but did Ooarai already lose? Oh, that's right. The game isn't even over yet. In fact, it's only halftime. | +|08/01/2022 04:52:34| |Best girl has best taste I see| +|08/01/2022 04:52:37| |GO ON HOME BRITISH SOLDIERS GO ON HOME HAVE YOU GOT NO FUCKING HOMES OF YOUR OWN| +|08/01/2022 04:52:38| |ASSAM SEXU| +|08/01/2022 04:52:39| |I want to break her hymen like a scone| +|08/01/2022 04:52:39| |Finland doesn't exist. Think about it. Have you ever been to Finland? Ever met a Finn?| +|08/01/2022 04:52:40| milkushaku +|08/01/2022 04:52:43| MILLKSHAKE +|08/01/2022 04:52:44| |Saori's milk| +|08/01/2022 04:52:45| |SHOW ME SOME FUCKIN' ROSEHIPS| +|08/01/2022 04:52:45| slowly? +|08/01/2022 04:52:46| |MAKO MILKERS| +|08/01/2022 04:52:47| |FOR EIGHT HUNDRED YEARS| +|08/01/2022 04:52:47| |mako best| +|08/01/2022 04:52:48| |There's also this saying: La pomme ne tombe pas lojn de l'arbre| +|08/01/2022 04:52:51| TOTSUBAKAS +|08/01/2022 04:52:52| |statistically speaking, finns dont exist| +|08/01/2022 04:52:54| |WE'VE FOUGHT YOU WITHOUT FEAR| +|08/01/2022 04:52:56| |stop firing to make time for tea| +|08/01/2022 04:52:56| |PANZER VOR| +|08/01/2022 04:52:57| |Eggs in a milkshake????| +|08/01/2022 04:52:57| |Panzer vor| +|08/01/2022 04:52:58| |PANZER VOR| +|08/01/2022 04:52:58| |Our girls have come so far ;_;| +|08/01/2022 04:52:58| |PANZER VOR| +|08/01/2022 04:52:59| |Finnland is a Japanese fishing colony| +|08/01/2022 04:53:00| |Does not having the tank advantage at halftime count as a loss? Is that what you're saying?| +|08/01/2022 04:53:00| |Panza Vooor| +|08/01/2022 04:53:02| |PANZER VOR!| +|08/01/2022 04:53:03| |cutest panzer vor ever | +|08/01/2022 04:53:04| |AND WE SHALL FIGHT YOU, FOR 800 MORE| +|08/01/2022 04:53:05| |Theres this saying: Niggers are just like poop| +|08/01/2022 04:53:06| NISHI +|08/01/2022 04:53:06| mongolian* +|08/01/2022 04:53:06| TOTSUGK +|08/01/2022 04:53:06| |bakas... | +|08/01/2022 04:53:07| TAMARA +|08/01/2022 04:53:08| |who's that retard?| +|08/01/2022 04:53:08| ACHTUNG +|08/01/2022 04:53:09| |TOTSUGEKI INSTEAD| +|08/01/2022 04:53:09| |Cute Nishi| +|08/01/2022 04:53:10| |PANZER VOR| +|08/01/2022 04:53:10| |PANZER VOR| +|08/01/2022 04:53:11| WAIFUUUUUUU +|08/01/2022 04:53:12| |PANZA FOH| +|08/01/2022 04:53:12| |PANZER VOR| +|08/01/2022 04:53:15| |panzer vor| +|08/01/2022 04:53:15| |panzer vor means panzer vor| +|08/01/2022 04:53:16| |PANZER VOR| +|08/01/2022 04:53:17| |destroy them kudasai| +|08/01/2022 04:53:17| |>pantsu | +|08/01/2022 04:53:18| |panzer vor means tank canabalism| +|08/01/2022 04:53:19| |Panzer vor means panzer vor| +|08/01/2022 04:53:19| |PANTSU ARE FOR| +|08/01/2022 04:53:19| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:20| |I want to put my finger in there| +|08/01/2022 04:53:20| PANZABOR +|08/01/2022 04:53:20| naruhodo +|08/01/2022 04:53:20| |Panzer vor means panzer vor| +|08/01/2022 04:53:22| ??????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 04:53:23| ??? +|08/01/2022 04:53:23| |TL NOTE: PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:24| |Panzer Vor means Erika best GuP| +|08/01/2022 04:53:24| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:24| |Panzer vor? can we get a TL?| +|08/01/2022 04:53:24| |wait, did someone say charge?| +|08/01/2022 04:53:25| |DUMB TOSUBAKAS| +|08/01/2022 04:53:26| TOTSUGEKI +|08/01/2022 04:53:26| AHHHHHHHHHHHHHH +|08/01/2022 04:53:28| henlo +|08/01/2022 04:53:29| ??????????????? +|08/01/2022 04:53:30| |it means panzer vor| +|08/01/2022 04:53:31| rigged +|08/01/2022 04:53:31| |DANKE TL| +|08/01/2022 04:53:32| BANZAI +|08/01/2022 04:53:33| |SENSHA ZENSHIN| +|08/01/2022 04:53:33| |SENSHA ZENSHINNNNNNNNNNN| +|08/01/2022 04:53:34| |SENSHA ZENSHIN| +|08/01/2022 04:53:34| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:35| |Panzer Vor means Panzer Vor| +|08/01/2022 04:53:35| ZENSHIN! +|08/01/2022 04:53:36| TOTSUGEKI +|08/01/2022 04:53:36| |PANZER VOR| +|08/01/2022 04:53:37| |no No NO| +|08/01/2022 04:53:37| |TL NOTE: PANZER VOR MEANS TOTSUGEKI| +|08/01/2022 04:53:38| |PANTSU VOR| +|08/01/2022 04:53:38| |what does tanks forward mean?| +|08/01/2022 04:53:38| |SENSHA ZENSHIN| +|08/01/2022 04:53:39| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 04:53:39| TOTSUGEKI +|08/01/2022 04:53:39| ANZU +|08/01/2022 04:53:40| TOTSUGEKI? +|08/01/2022 04:53:42| |PANZER SENSHIN| +|08/01/2022 04:53:42| |TOTSUGEKI | +|08/01/2022 04:53:43| |big mistake miho...| +|08/01/2022 04:53:43| TOTSUGEKI +|08/01/2022 04:53:43| |aaaaaaaaaaaaaaa its buffering so much for me| +|08/01/2022 04:53:45| OST +|08/01/2022 04:53:47| TOTSUGEKI +|08/01/2022 04:53:48| |tanks forward means sensha zenshin| +|08/01/2022 04:53:50| |PANZER VOR| +|08/01/2022 04:53:51| |Who's this new broad?| +|08/01/2022 04:53:51| |TENNO HEIKA BANZAIIIII| +|08/01/2022 04:53:51| HOSOMI +|08/01/2022 04:53:52| |Pantsu 4| +|08/01/2022 04:53:54| |PANZER VOR| +|08/01/2022 04:53:56| TOTSUGEKI +|08/01/2022 04:53:57| |PANZAA VOR| +|08/01/2022 04:53:57| BAAAAAAAANNZZZZZZZAAAAAAIIIIIIIIIIII +|08/01/2022 04:53:57| TOTSUGEKIII +|08/01/2022 04:54:02| |did they paint the panzer iv?| +|08/01/2022 04:54:02| |Pantsu 4| +|08/01/2022 04:54:05| |>PANTSU WHORE| +|08/01/2022 04:54:06| KINOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 04:54:08| |wasn't it blue?| +|08/01/2022 04:54:08| |WARE WA KANGUN WAGA TEKI WA| +|08/01/2022 04:54:09| OST +|08/01/2022 04:54:10| |I think she was called Nishi-zumi or some shit| +|08/01/2022 04:54:11| SOUUUUUUUUUUUUUUUUUUUUUUUUUUUULLLLLLLLLLLLLLLLLLL +|08/01/2022 04:54:11| kino +|08/01/2022 04:54:13| |I restart browser when it buffers for me and sometimes it works| +|08/01/2022 04:54:15| |such lovely tunes| +|08/01/2022 04:54:15| |CHI-HA CHI-HA CHI-HA CHI-HA CHI-HA CHI-HA| +|08/01/2022 04:54:16| |they have money now| +|08/01/2022 04:54:16| KINO +|08/01/2022 04:54:17| |TL note: Kino means kino| +|08/01/2022 04:54:17| PANTSU +|08/01/2022 04:54:18| kino +|08/01/2022 04:54:19| |ALL QUIET ON THE KINO FRONT| +|08/01/2022 04:54:19| |>Imagine using shit jap tanks| +|08/01/2022 04:54:22| |That pleases the ears| +|08/01/2022 04:54:22| Nishizoomer +|08/01/2022 04:54:23| |fuckin kino| +|08/01/2022 04:54:24| |cute panzers| +|08/01/2022 04:54:25| * +|08/01/2022 04:54:27| KINO +|08/01/2022 04:54:29| ass +|08/01/2022 04:54:29| |SING IT WIT ME| +|08/01/2022 04:54:29| > +|08/01/2022 04:54:30| Ass +|08/01/2022 04:54:31| ASS +|08/01/2022 04:54:31| |>losing to shit jap tanks| +|08/01/2022 04:54:32| Anushole +|08/01/2022 04:54:32| asshole +|08/01/2022 04:54:32| |WE KINOS HEROES NOW LADS| +|08/01/2022 04:54:33| |film and finales are way better than the show desu| +|08/01/2022 04:54:33| GUTS +|08/01/2022 04:54:36| |TRACKP PHYSICS| +|08/01/2022 04:54:37| |( * )| +|08/01/2022 04:54:38| |best opening scene ever| +|08/01/2022 04:54:38| mooning +|08/01/2022 04:54:38| BUTT +|08/01/2022 04:54:41| HIPPOS +|08/01/2022 04:54:45| HET +|08/01/2022 04:54:49| |Turtle club| +|08/01/2022 04:54:49| |fag anteater| +|08/01/2022 04:54:49| ASS +|08/01/2022 04:54:51| |fast turdle| +|08/01/2022 04:54:51| |>still can't drive straight| +|08/01/2022 04:54:52| |GAMER GIRLS| +|08/01/2022 04:54:52| x +|08/01/2022 04:54:53| |Murder bunnies| +|08/01/2022 04:54:57| ASSEATER +|08/01/2022 04:54:58| |BUNNY CUNNY| +|08/01/2022 04:54:58| @ +|08/01/2022 04:55:00| BELLY +|08/01/2022 04:55:00| |>stupid tama gonna squeeze| +|08/01/2022 04:55:01| |That's a weird ass looking turtle| +|08/01/2022 04:55:02| |>world of tanks bgm| +|08/01/2022 04:55:04| |KILLER RABBITS| +|08/01/2022 04:55:06| ew +|08/01/2022 04:55:07| quacl +|08/01/2022 04:55:08| BUNNIES +|08/01/2022 04:55:12| |how can you be a msygonist incel shit and still like gup?| +|08/01/2022 04:55:15| shuba +|08/01/2022 04:55:16| sodokooooooo +|08/01/2022 04:55:19| |that leopon has seen some shit| +|08/01/2022 04:55:21| |WHAT DID I MISS| +|08/01/2022 04:55:21| |Leopon's seen some shit.| +|08/01/2022 04:55:25| |LEOPON BEST| +|08/01/2022 04:55:26| guppy +|08/01/2022 04:55:26| everything +|08/01/2022 04:55:26| |The classic| +|08/01/2022 04:55:27| LE/O/PON +|08/01/2022 04:55:27| |cute ankou| +|08/01/2022 04:55:32| |how can you be a msygonist incel shit and still like gup?| +|08/01/2022 04:55:33| |Leopon's seen footage they stay noided| +|08/01/2022 04:55:33| |REMINDER TO ALL: The StuGIII Crew are my wives.| +|08/01/2022 04:55:33| |TIGER SEXIEST TANK| +|08/01/2022 04:55:36| |BANDA NO SAKURA KA ERI NO IRO| +|08/01/2022 04:55:36| |ankou based| +|08/01/2022 04:55:45| NORIKO<3 +|08/01/2022 04:55:46| nyaa +|08/01/2022 04:55:47| |Hana is my wife| +|08/01/2022 04:55:48| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 04:55:52| ANZU +|08/01/2022 04:55:52| |Noriko is OLEV| +|08/01/2022 04:55:52| nyaa!~ +|08/01/2022 04:55:55| |MAN, THE DETAIL IMPROVED SO MUCH| +|08/01/2022 04:55:58| |Based Schizo | +|08/01/2022 04:55:58| |why is anzu so cute bros| +|08/01/2022 04:56:02| |Reminder: Erika is mine. You get your filythy hands offmher| +|08/01/2022 04:56:03| |red 6 ready| +|08/01/2022 04:56:03| HOOOOOOOSHIINOOOOOO +|08/01/2022 04:56:07| |ANZU UOHH| +|08/01/2022 04:56:11| |is it just me or is it quieter than before| +|08/01/2022 04:56:12| TOTSUGEKI +|08/01/2022 04:56:12| |tfw no panzer gf| +|08/01/2022 04:56:12| BOOOOOOOOOOOOOOOOOOOOOOOOOOOOM +|08/01/2022 04:56:14| |Wew the chat is becoming more schizo by the moment| +|08/01/2022 04:56:15| |fox 2, FUCK THE FIA| +|08/01/2022 04:56:15| HOSHINO +|08/01/2022 04:56:16| |ANZU VORE| +|08/01/2022 04:56:23| |Erika is for every anon here| +|08/01/2022 04:56:23| |imagine still not winning in this position though| +|08/01/2022 04:56:24| |volume seems quieter| +|08/01/2022 04:56:28| |Tea intact| +|08/01/2022 04:56:29| |Killstealing japs| +|08/01/2022 04:56:29| bonk +|08/01/2022 04:56:32| |what does Anzu feel about being loli bait? I bet she likes being appreciated| +|08/01/2022 04:56:32| |Chat is quieter, it's 6 am| +|08/01/2022 04:56:38| |matildas BTFO| +|08/01/2022 04:56:39| *snap* +|08/01/2022 04:56:39| TOTSUGEKI +|08/01/2022 04:56:40| |II DESU NE| +|08/01/2022 04:56:42| |has anyone here played dream tank match?| +|08/01/2022 04:56:42| |5am here| +|08/01/2022 04:56:43| TOTSUGEKI +|08/01/2022 04:56:43| HOSOMI +|08/01/2022 04:56:43| |Euroslot struggling| +|08/01/2022 04:56:44| |TOTSUGEKI | +|08/01/2022 04:56:44| TOTSUGEKI! +|08/01/2022 04:56:44| TOTSUGEKI +|08/01/2022 04:56:46| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 04:56:46| |>Imagine being KO'ed by a jap tank| +|08/01/2022 04:56:46| BANZAI! +|08/01/2022 04:56:47| |No stop| +|08/01/2022 04:56:47| TOTSUGEKI +|08/01/2022 04:56:47| |That was Assam just there| +|08/01/2022 04:56:48| |too sleepy to shitpost effectively| +|08/01/2022 04:56:48| |i dont care about any of this, just skip to duce parts| +|08/01/2022 04:56:48| TOTSUGEKI +|08/01/2022 04:56:48| |TOTSUGEKI | +|08/01/2022 04:56:49| TOTSUGEKI +|08/01/2022 04:56:50| THROWING +|08/01/2022 04:56:50| TOTSUGEKIIIIIIII +|08/01/2022 04:56:51| |TOTSUGEKI | +|08/01/2022 04:56:52| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 04:56:52| TOTSUGEKIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 04:56:52| |imagine using euro time| +|08/01/2022 04:56:52| SUGOI +|08/01/2022 04:56:53| Tosukeki +|08/01/2022 04:56:53| sugeeeeeeee +|08/01/2022 04:56:55| TOTSUGEKI +|08/01/2022 04:56:55| TOTSUGEKI +|08/01/2022 04:56:56| TOTSUGEKI? +|08/01/2022 04:56:57| TOTSUGEKI +|08/01/2022 04:56:57| |TOTSUGEKI | +|08/01/2022 04:56:57| TOTSUGEKI +|08/01/2022 04:56:58| TOTSUGEKI +|08/01/2022 04:56:58| TOTSUGEKI +|08/01/2022 04:56:58| |TO TSU GE KI| +|08/01/2022 04:56:59| |ching chang to you too, young lady| +|08/01/2022 04:56:59| TOTSUGEKI +|08/01/2022 04:57:00| TOKKAN +|08/01/2022 04:57:00| TOTSUUUUUUU +|08/01/2022 04:57:00| TOTSUGEKIIIIIIIIIIIIIIIII +|08/01/2022 04:57:01| TOTSUGEKI +|08/01/2022 04:57:01| TOTSUGEKIU +|08/01/2022 04:57:01| TOTSUGEKI +|08/01/2022 04:57:02| |baka ass hoes| +|08/01/2022 04:57:02| TOTSUGEKI +|08/01/2022 04:57:02| TOKKAN +|08/01/2022 04:57:04| TOKKAN! +|08/01/2022 04:57:04| TOTSUGEKI +|08/01/2022 04:57:05| TOTSUGEKI +|08/01/2022 04:57:05| TOTSUGEKI! +|08/01/2022 04:57:06| |TOTSUGEKI | +|08/01/2022 04:57:06| |>jap tactics| +|08/01/2022 04:57:06| BANZAI +|08/01/2022 04:57:07| totsygeki +|08/01/2022 04:57:07| BAKAS +|08/01/2022 04:57:07| TOTSUGK +|08/01/2022 04:57:07| TOTSUGEKI +|08/01/2022 04:57:07| |o7 TOTSUGEKI| +|08/01/2022 04:57:07| |YUKI NO SHINGUN| +|08/01/2022 04:57:08| BANZAI +|08/01/2022 04:57:08| |YUKI NO SHINGUN| +|08/01/2022 04:57:08| |TAKKAN BITCHES!!| +|08/01/2022 04:57:08| o7 +|08/01/2022 04:57:09| TOTSUGEKI +|08/01/2022 04:57:10| o7 +|08/01/2022 04:57:10| |im going in| +|08/01/2022 04:57:10| TOTSUGEKI +|08/01/2022 04:57:11| |YUKI NO SHINGUN| +|08/01/2022 04:57:11| |YUKI NO SHINGUN, KOORI O FUNDE| +|08/01/2022 04:57:13| >CHARGETARDS +|08/01/2022 04:57:13| TOTSUGEKI +|08/01/2022 04:57:14| o7 +|08/01/2022 04:57:14| o7 +|08/01/2022 04:57:15| TOTSUGEKI +|08/01/2022 04:57:15| O7 +|08/01/2022 04:57:15| |YUKI NOSHINGUN| +|08/01/2022 04:57:15| anthem +|08/01/2022 04:57:15| TOKKAN +|08/01/2022 04:57:15| |and they all died the end | +|08/01/2022 04:57:15| o7 +|08/01/2022 04:57:16| |the march of fools| +|08/01/2022 04:57:17| o7 +|08/01/2022 04:57:17| |YUKI NO SHINGUN| +|08/01/2022 04:57:17| o7 +|08/01/2022 04:57:18| BANZAI +|08/01/2022 04:57:19| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:57:20| |TONO HEIKA BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +|08/01/2022 04:57:20| |Why does she look like she just did something profound| +|08/01/2022 04:57:20| o7 +|08/01/2022 04:57:21| |I like how the japs make jokes about their own school| +|08/01/2022 04:57:22| o7 +|08/01/2022 04:57:22| |is this the media where alice appears?| +|08/01/2022 04:57:23| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:57:24| |TENNO HEIKA BAANZAIIIIIIIIIIIIIII| +|08/01/2022 04:57:25| |its been an honor and a pleasure miporin| +|08/01/2022 04:57:25| |IS THIS THE WAY BROS| +|08/01/2022 04:57:26| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:57:27| |LIVE FOR TOTSUGEKI. DIE FOR TOTSUGEKI| +|08/01/2022 04:57:27| KAMIKAZE +|08/01/2022 04:57:28| |BAKA DA NE| +|08/01/2022 04:57:31| |LETS FUCKING GOOOOOOOOO| +|08/01/2022 04:57:32| |TENNO HEIKA BANZAI| +|08/01/2022 04:57:33| KAMIKAZE +|08/01/2022 04:57:33| BANZAI! +|08/01/2022 04:57:33| TOTSUGEKI +|08/01/2022 04:57:35| |the scone has decided to break itself| +|08/01/2022 04:57:37| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:57:37| |Either go all in or die| +|08/01/2022 04:57:38| |TENNA HEIKA BANZAI| +|08/01/2022 04:57:42| |haha funny quote darj| +|08/01/2022 04:57:42| |>can't hit stationary target| +|08/01/2022 04:57:42| TOTSUGEKI +|08/01/2022 04:57:44| |Can I enjoy your taste Pekoe?| +|08/01/2022 04:57:46| ! +|08/01/2022 04:57:49| SANDWIC? +|08/01/2022 04:57:49| |NIPPON BANZAIII| +|08/01/2022 04:57:50| |should've won here| +|08/01/2022 04:57:52| |I want to enjoy pekoe's taste....| +|08/01/2022 04:57:52| ??????????????? +|08/01/2022 04:57:52| IDIOTS +|08/01/2022 04:57:53| |shut the fuck up darj| +|08/01/2022 04:57:53| |TENNO HEIKA BANZAIIIIIII| +|08/01/2022 04:57:55| |imagine enjoying Darj's taste| +|08/01/2022 04:57:55| >? +|08/01/2022 04:57:57| |who drives darj's tank?| +|08/01/2022 04:57:57| |churchill is cat| +|08/01/2022 04:57:58| ???????????????????? +|08/01/2022 04:58:03| |YAMI WO KIRISAKU OPEN FIRE| +|08/01/2022 04:58:03| |Based Darjeeling| +|08/01/2022 04:58:05| |FUKUDA UOOOOOOOOOOOOOHHHHHHHHHHH| +|08/01/2022 04:58:06| |haha totsubakas getting rekt| +|08/01/2022 04:58:06| |Delicious Darjeeling | +|08/01/2022 04:58:07| |SEX WITH PANZERS| +|08/01/2022 04:58:08| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:58:09| |coward finnish ur charge!| +|08/01/2022 04:58:10| |Anon dies in a bad trip| +|08/01/2022 04:58:10| |ara ara| +|08/01/2022 04:58:11| o7 +|08/01/2022 04:58:11| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 04:58:16| |>Doubting the BANZAI| +|08/01/2022 04:58:18| |GRORIOUS CHARGE| +|08/01/2022 04:58:20| TOTSUGEKIDIOTS +|08/01/2022 04:58:20| kek +|08/01/2022 04:58:20| |ONE MILLION CHIHATANS| +|08/01/2022 04:58:21| NAGURAAAAA +|08/01/2022 04:58:21| TENNO +|08/01/2022 04:58:22| |TOTSUGEKI | +|08/01/2022 04:58:24| retard +|08/01/2022 04:58:25| BANZAI +|08/01/2022 04:58:25| Owned +|08/01/2022 04:58:26| HEIKA +|08/01/2022 04:58:28| CUTE +|08/01/2022 04:58:28| UOOOOOOOOOOOOHHHHHHHHHH +|08/01/2022 04:58:31| TOTSUGEKI! +|08/01/2022 04:58:32| BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 04:58:33| HARU-CHAN +|08/01/2022 04:58:34| |DON'T TOTSUGEKI | +|08/01/2022 04:58:34| homu +|08/01/2022 04:58:35| FUKUDA +|08/01/2022 04:58:35| TOTUSGEKI +|08/01/2022 04:58:37| |TENNOU HEIKA BANZAI| +|08/01/2022 04:58:38| |"quit throwing!"| +|08/01/2022 04:58:38| |STOP RIGHT THERE| +|08/01/2022 04:58:39| CUNNY +|08/01/2022 04:58:41| |TOTSUGEKI | +|08/01/2022 04:58:43| |Totsugeki is the pinnacle of sensha-do| +|08/01/2022 04:58:43| |braids make good blowjob handles| +|08/01/2022 04:58:45| |DAMN SUICIDAL CHILD| +|08/01/2022 04:58:46| |FOLLOW FUCKING ORDERS YOU NIP CUNT| +|08/01/2022 04:58:49| |but TRADITION| +|08/01/2022 04:58:51| |CUTE ONAHOLE| +|08/01/2022 04:58:52| |cute and funny panzer operator| +|08/01/2022 04:58:52| |Keep hydrated anon kudasai| +|08/01/2022 04:58:53| |Sodonaka STFU| +|08/01/2022 04:58:54| |DAMN KID| +|08/01/2022 04:58:54| |For all the talk about sandwiches Darjeeling spends too much time in tank, instad of kitchen| +|08/01/2022 04:58:54| |THATS THE RULES| +|08/01/2022 04:58:57| ENTER +|08/01/2022 04:58:58| |KATYUSHA INBOUND| +|08/01/2022 04:59:01| |LETS GOOOOOOOO GREMLIM BROS| +|08/01/2022 04:59:01| URAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:02| KATYUSHA!!! +|08/01/2022 04:59:02| |LET'S FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 04:59:03| |IT"S SHAMEFUL TO LLIVE| +|08/01/2022 04:59:04| KATYUSHA +|08/01/2022 04:59:04| |>rules lawyers| +|08/01/2022 04:59:05| |HERE IT IS AGAIN| +|08/01/2022 04:59:05| |Did Fuka's voice change between movies?| +|08/01/2022 04:59:08| |Just like my World of Tanks| +|08/01/2022 04:59:08| |ITS TIME| +|08/01/2022 04:59:08| |Kept you waiting huh?| +|08/01/2022 04:59:09| |>55,000 T-34s arrive| +|08/01/2022 04:59:10| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:10| YPA +|08/01/2022 04:59:11| UUUUUURRRRAAAAAAAAAAAAAAAA +|08/01/2022 04:59:12| |>BANZAI BLOCKED| +|08/01/2022 04:59:14| |I ORDER you to stay strong and remain with the stream, Anon!| +|08/01/2022 04:59:14| UUUUURRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:14| |K L A R A| +|08/01/2022 04:59:15| |The Sovishits are here| +|08/01/2022 04:59:15| |PRESS R TO REPORT DISSIDENTS| +|08/01/2022 04:59:16| URAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:17| |CRUSH CAPITALISM!!| +|08/01/2022 04:59:18| |KEPT YOU WAITING HUH?| +|08/01/2022 04:59:18| |MY WIIIIIIIIIIIIIIIIIIIIVES AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 04:59:19| |Metal Gear?!| +|08/01/2022 04:59:20| ENTER +|08/01/2022 04:59:20| YPAAAAAAAAA +|08/01/2022 04:59:20| ypppppppppppppaaaaaaaaaaaaaaaaaaaaaaaaaaaa +|08/01/2022 04:59:20| |kept you waiting huh| +|08/01/2022 04:59:21| |KEPT YOU WAITING, HUH?| +|08/01/2022 04:59:21| UUUUUUUUUUURRRRAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:24| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:26| UYRAAAAAAAAAAAAAAAAAA +|08/01/2022 04:59:26| |how were a few shitty tanks holding off pravda?| +|08/01/2022 04:59:26| |IF ONLY LENIN COULD SEE US NOW| +|08/01/2022 04:59:27| |what the fuck are they saying| +|08/01/2022 04:59:27| KLARA +|08/01/2022 04:59:28| SUMIPEEEEEEEEEEEEEEEEEEE +|08/01/2022 04:59:29| |What Metal Gear?| +|08/01/2022 04:59:29| |SPEAK JAPANESE| +|08/01/2022 04:59:29| DEKINAI +|08/01/2022 04:59:30| |Anu cheeki breeki iv damke| +|08/01/2022 04:59:31| |>ooari gets shafted with Totsubakas| +|08/01/2022 04:59:32| |Russian Larpers| +|08/01/2022 04:59:32| |fuka is ear cancer| +|08/01/2022 04:59:33| |Glorious russian| +|08/01/2022 04:59:34| |>RUSSIAN BIAS WORLD OF TANKS| +|08/01/2022 04:59:35| |CYKA BLYAD| +|08/01/2022 04:59:35| |PA RUSSKOM GOVORI, PA RUSSKOM| +|08/01/2022 04:59:38| |Klara best girl| +|08/01/2022 04:59:39| |who is driving| +|08/01/2022 04:59:40| |CYKA BLYAT| +|08/01/2022 04:59:40| |NIHONGO DE HANASHI NASAI YO| +|08/01/2022 04:59:40| DEKINAI +|08/01/2022 04:59:40| >tetris +|08/01/2022 04:59:40| |REMEMBER NO RUSSIAN| +|08/01/2022 04:59:43| |YOU WILL NEVER SPEAK JAPANESE| +|08/01/2022 04:59:44| |BLYADD DDDDDDDD:| +|08/01/2022 04:59:44| |NIHONGO DE| +|08/01/2022 04:59:45| CYKA +|08/01/2022 04:59:46| |CYKA BLYAT| +|08/01/2022 04:59:50| sumirebros +|08/01/2022 04:59:54| HETZER +|08/01/2022 04:59:55| |BAKAHIP WOOOOOOOOO| +|08/01/2022 04:59:56| |God the blonde one is beautiful | +|08/01/2022 04:59:56| BAKAHIP +|08/01/2022 04:59:56| |DISENGAGING THE LIMITERS| +|08/01/2022 04:59:57| KANI +|08/01/2022 04:59:58| |MY BAKA WIFE| +|08/01/2022 04:59:59| CUNNY? +|08/01/2022 04:59:59| BAKAHIP +|08/01/2022 05:00:00| BAKAHIP!!!!! +|08/01/2022 05:00:01| ROSEHIPPU +|08/01/2022 05:00:07| ROSEHIP +|08/01/2022 05:00:08| ROSEHIP +|08/01/2022 05:00:08| |HIP TIME| +|08/01/2022 05:00:11| |Crusaderbros... we're fast| +|08/01/2022 05:00:11| |IS BAKAHIP irish or scottish?| +|08/01/2022 05:00:11| KANI +|08/01/2022 05:00:15| |REV UP THAT 2JZGTE| +|08/01/2022 05:00:17| |i swear to fucking god if you tall bitches speak russian i'm gonna do nothing about it because i'm a midget | +|08/01/2022 05:00:17| |gas gas gas| +|08/01/2022 05:00:17| |Rosehip is pretty cool not gonna lie| +|08/01/2022 05:00:18| |HIGH BOOST ALL THE TIME WITH ROSEHIP| +|08/01/2022 05:00:18| Yes +|08/01/2022 05:00:19| |I never realised rosehip wasn't even introduced yet| +|08/01/2022 05:00:23| |IMAGINE ROSEHIPS SWEAT IN YOUR TEA HAHAHA| +|08/01/2022 05:00:26| |SORE GA CHIHATAN| +|08/01/2022 05:00:36| chansu +|08/01/2022 05:00:36| |>nishi's slight cleavage| +|08/01/2022 05:00:37| HOBOS +|08/01/2022 05:00:38| |WARERA WA CHIHATAN| +|08/01/2022 05:00:38| :DDDDDDDDDDDDDDDD +|08/01/2022 05:00:40| :DDDDDDDDDDD +|08/01/2022 05:00:41| HOBO +|08/01/2022 05:00:42| chansu +|08/01/2022 05:00:42| ???? +|08/01/2022 05:00:42| |Imagine retreating to brits or russians| +|08/01/2022 05:00:42| :DDDDDDDDDDDDD +|08/01/2022 05:00:43| hobros.... +|08/01/2022 05:00:44| :DDDDDDDDD +|08/01/2022 05:00:46| |BENIS :DDDDDDDDDDDDDD| +|08/01/2022 05:00:47| :DDD +|08/01/2022 05:00:48| |FUG :DDDDD| +|08/01/2022 05:00:48| |that strum| +|08/01/2022 05:00:49| :------DDDDDD +|08/01/2022 05:00:50| |CHANCE TIME| +|08/01/2022 05:00:51| HOBOS +|08/01/2022 05:00:51| :DDDDDDDDDDDD +|08/01/2022 05:00:51| EBIN +|08/01/2022 05:00:53| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:00:54| CHANCEO +|08/01/2022 05:00:54| SOUL +|08/01/2022 05:00:55| |Humans are sinful and stupid| +|08/01/2022 05:00:57| |FUGGG :DDDD| +|08/01/2022 05:01:01| :DDDDDDD +|08/01/2022 05:01:05| |KOCCHI OKCCHI | +|08/01/2022 05:01:06| |fucking thrower team| +|08/01/2022 05:01:11| |You are never more thana mile from a Finn| +|08/01/2022 05:01:14| |What does unlimited dan| +|08/01/2022 05:01:15| |Some advisor on the staff actually played kantele in one of the interviews| +|08/01/2022 05:01:15| |GOOCHI GOOCHI| +|08/01/2022 05:01:16| |TIME TO DESTROY THE TOWN| +|08/01/2022 05:01:17| |Azusa "Salmiakki Remover" Sawa| +|08/01/2022 05:01:19| |chi ha tan reported| +|08/01/2022 05:01:23| |what does unlimited danmaku do?| +|08/01/2022 05:01:27| are? +|08/01/2022 05:01:29| |mika salo is somehow responsible| +|08/01/2022 05:01:29| |removes the limiter| +|08/01/2022 05:01:30| |it makes mustad gas| +|08/01/2022 05:01:30| ZOREEE +|08/01/2022 05:01:31| |TOTSUGEKI KANYOU| +|08/01/2022 05:01:31| |It unlimits your danmaku| +|08/01/2022 05:01:34| chihantan +|08/01/2022 05:01:35| |Unlimites thedakku| +|08/01/2022 05:01:37| |it makes the danmaku unlimited| +|08/01/2022 05:01:37| |CARBON COATED BUILDINGS| +|08/01/2022 05:01:40| SKRRRRT +|08/01/2022 05:01:44| |who the fuck is dan maku| +|08/01/2022 05:01:44| |Unlimited autism | +|08/01/2022 05:01:45| |It spreads the danmaku to the very botton when there's a lot of spam like DUCE| +|08/01/2022 05:01:45| |>that drift| +|08/01/2022 05:01:49| |GAS GAS GAS| +|08/01/2022 05:01:50| |ZA DONBAS| +|08/01/2022 05:01:52| |Where's that one guy's shop. I think he needs another one. | +|08/01/2022 05:01:52| |>hippo team| +|08/01/2022 05:01:52| |turn unlimited danmaku on and enjoy when duce comes on screen| +|08/01/2022 05:01:56| fukt +|08/01/2022 05:01:56| |rosehip yes| +|08/01/2022 05:01:59| |ive only seen it at the bottom during anzio OVA| +|08/01/2022 05:02:00| |BAKAHIP IS HERE| +|08/01/2022 05:02:00| |DONBASS I| +|08/01/2022 05:02:01| |>charge the enemy you'll be fine| +|08/01/2022 05:02:01| |I finally had enough Alcohol to disable my self awareness center in the brain| +|08/01/2022 05:02:04| |F-ZERO grinding speedhax| +|08/01/2022 05:02:05| |Der Film is such a blessing| +|08/01/2022 05:02:06| |duce is the strongest| +|08/01/2022 05:02:09| |CRIMEA IS CHINESE| +|08/01/2022 05:02:10| |tl note: danmaku means 弾幕| +|08/01/2022 05:02:16| |Der Film | +|08/01/2022 05:02:17| |tanks tl | +|08/01/2022 05:02:20| |Taiwan je Srbija| +|08/01/2022 05:02:21| |Danmaku means bullet hell| +|08/01/2022 05:02:22| |KOSOVO BELONGS TO ARGENTINE| +|08/01/2022 05:02:23| >BAITED +|08/01/2022 05:02:24| |What does that even mean Miho| +|08/01/2022 05:02:31| |por favor| +|08/01/2022 05:02:32| |>France is Algerian| +|08/01/2022 05:02:33| wut +|08/01/2022 05:02:35| |Very tired anon here about to shit in a bottle AMA| +|08/01/2022 05:02:36| |Alexander was Romanian| +|08/01/2022 05:02:37| |Danmaku is moving mtoi fat, mny drunk brain can't kleep up| +|08/01/2022 05:02:41| |imagine a guppie school shooting| +|08/01/2022 05:02:44| |LET ME IN YOU JAPS| +|08/01/2022 05:02:48| |Will you be posting a picture of the bottle?| +|08/01/2022 05:02:48| |post pics shitbottle-kun| +|08/01/2022 05:02:49| |Better be at least a Gatorade bottle| +|08/01/2022 05:02:53| |puro pinche rosehip| +|08/01/2022 05:02:55| |HANA PUT DOWN THE GUN!| +|08/01/2022 05:02:57| |guppie school shooting would require at the very least a PTRD| +|08/01/2022 05:02:59| |They got this| +|08/01/2022 05:03:01| |>M3 bros| +|08/01/2022 05:03:03| AZUSA +|08/01/2022 05:03:03| |OPERATION REAR ENTRY| +|08/01/2022 05:03:06| bunnies +|08/01/2022 05:03:08| |i think ill be dead by the time we start finales lads| +|08/01/2022 05:03:13| KARINA +|08/01/2022 05:03:13| L +|08/01/2022 05:03:15| |don't worry saki saw a butterfl| +|08/01/2022 05:03:15| |Can't shoot carbon coated schoolgirls| +|08/01/2022 05:03:17| |Hitler was, may God forgive me for uttering this word, Filipino| +|08/01/2022 05:03:18| rip +|08/01/2022 05:03:18| bonk +|08/01/2022 05:03:18| |RUN AWAY | +|08/01/2022 05:03:18| |Nonna gives 0 shits| +|08/01/2022 05:03:19| |bunny cunnies....| +|08/01/2022 05:03:19| poke +|08/01/2022 05:03:21| |NONNA IS ICE COLD| +|08/01/2022 05:03:21| DERAILED +|08/01/2022 05:03:23| CLANG +|08/01/2022 05:03:25| |Has someone drunk only water?| +|08/01/2022 05:03:25| dong +|08/01/2022 05:03:25| STOPPU +|08/01/2022 05:03:26| UYRAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:03:27| TAMED +|08/01/2022 05:03:29| |BASED NONNA| +|08/01/2022 05:03:30| BUTTERFLY!!!!!!! +|08/01/2022 05:03:31| choucho +|08/01/2022 05:03:32| |chou chou| +|08/01/2022 05:03:32| SAKI!!!!!!!!!!!!!!!!! +|08/01/2022 05:03:33| butterfly +|08/01/2022 05:03:33| |CHO CGHO| +|08/01/2022 05:03:34| ONORE~ +|08/01/2022 05:03:35| Chouchou +|08/01/2022 05:03:37| CHOUCHOU +|08/01/2022 05:03:37| chouchou +|08/01/2022 05:03:37| BUTTERFLY +|08/01/2022 05:03:38| |Cute Autismo| +|08/01/2022 05:03:38| |MOSURA WA MOSURA| +|08/01/2022 05:03:39| |AZUSA NO| +|08/01/2022 05:03:39| SAKI +|08/01/2022 05:03:39| genius +|08/01/2022 05:03:39| ??????? +|08/01/2022 05:03:39| F +|08/01/2022 05:03:40| |LOOKING AT WALKING TRASH| +|08/01/2022 05:03:40| |SHE IS FUCKING DEAD| +|08/01/2022 05:03:40| |Nonna has no mercy| +|08/01/2022 05:03:41| chouchou +|08/01/2022 05:03:41| CUTEEEEEEEE! +|08/01/2022 05:03:42| |BASED SAKI| +|08/01/2022 05:03:43| CHOUCHOU +|08/01/2022 05:03:43| butterfry +|08/01/2022 05:03:44| chinchin +|08/01/2022 05:03:45| DEAD +|08/01/2022 05:03:45| saki? +|08/01/2022 05:03:45| |>nonna kills the rabbit team| +|08/01/2022 05:03:46| |CHOUCHOU :D| +|08/01/2022 05:03:47| butterfly +|08/01/2022 05:03:48| ??????????????????????????????????????? +|08/01/2022 05:03:48| NOTHING +|08/01/2022 05:03:48| CHOUCHOU +|08/01/2022 05:03:49| |based nonna| +|08/01/2022 05:03:50| chouchou +|08/01/2022 05:03:50| |BUNNY CUNNY| +|08/01/2022 05:03:50| |Remember Chouchou fro; katanagatari ;_;?| +|08/01/2022 05:03:51| |I can't believe the rabbits are all fucking dead| +|08/01/2022 05:03:53| autism +|08/01/2022 05:03:53| DEAD +|08/01/2022 05:03:53| |ALLES KLAR| +|08/01/2022 05:03:54| |ALLES KLAR| +|08/01/2022 05:03:54| |saki is pekka?!?!?| +|08/01/2022 05:03:54| |SAKI TANOSHII| +|08/01/2022 05:03:55| ARESKRAR:-DDDD +|08/01/2022 05:03:56| |CARBON COATING| +|08/01/2022 05:03:57| |What level of autism is this| +|08/01/2022 05:03:57| |ALLES KLAR| +|08/01/2022 05:03:57| |What is amsaki>?\| +|08/01/2022 05:03:58| areskrar +|08/01/2022 05:04:00| |Sakinknew they would lose either way| +|08/01/2022 05:04:00| |>it was nothing| +|08/01/2022 05:04:03| ALLESKLAR +|08/01/2022 05:04:04| |ALLES KLAR| +|08/01/2022 05:04:06| OH-WAI?! +|08/01/2022 05:04:06| |DON"T WORRY THEY ARE CABON COATED| +|08/01/2022 05:04:06| |ERWIN DEUTCH??| +|08/01/2022 05:04:07| >nothing +|08/01/2022 05:04:08| |UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE UTE | +|08/01/2022 05:04:10| |Reminder: The StuGIII Crew are my wives.| +|08/01/2022 05:04:13| |Can carbon coated girls get pregnant?| +|08/01/2022 05:04:14| |DAT SOUND| +|08/01/2022 05:04:14| Klar(a) +|08/01/2022 05:04:15| |how many lolis died in early days| +|08/01/2022 05:04:15| UTE +|08/01/2022 05:04:18| |Mitä vittua mikä pekka häh| +|08/01/2022 05:04:18| |ALLAHU Klar| +|08/01/2022 05:04:21| |anon's cute wives| +|08/01/2022 05:04:24| |carbon coated wombs| +|08/01/2022 05:04:26| |NICE SHOT| +|08/01/2022 05:04:27| |no lolis died during the filming of this film| +|08/01/2022 05:04:28| |do it| +|08/01/2022 05:04:30| |you cannot have penetrative sex with guppies (they are carbon coated)| +|08/01/2022 05:04:30| |The carbon coating makes them extra fertile | +|08/01/2022 05:04:31| gaymers +|08/01/2022 05:04:33| PEW +|08/01/2022 05:04:33| |ONLY WITH CABON COATED SPERM| +|08/01/2022 05:04:34| |totsugeki | +|08/01/2022 05:04:34| |Visible confusion| +|08/01/2022 05:04:35| |the jobbers did it| +|08/01/2022 05:04:36| TOTSUGEKI?! +|08/01/2022 05:04:37| jesus +|08/01/2022 05:04:38| |ANGERY YELLING| +|08/01/2022 05:04:39| totsugeki? +|08/01/2022 05:04:43| |WHERE'S THE TOTSUGEKI| +|08/01/2022 05:04:43| |SPEAK JAPANESE| +|08/01/2022 05:04:44| huh +|08/01/2022 05:04:45| |speak japanese| +|08/01/2022 05:04:46| |Anzu can still handjob me| +|08/01/2022 05:04:46| TOTSUGEKI? +|08/01/2022 05:04:46| |ah blhasdf mn sasdfy zxldkvj asdf| +|08/01/2022 05:04:47| |i want to steal her hat| +|08/01/2022 05:04:48| |I WANT TO IMPREGNATE SAORIN| +|08/01/2022 05:04:49| |SEX WITH CARBON COATED KATYUSHA| +|08/01/2022 05:04:50| |My seed can pentrate even carbon coating| +|08/01/2022 05:04:50| |NIHONGE DE HANASHI| +|08/01/2022 05:04:51| |WOW RUSSIAN JUST LIKE IN MY METRO GAMES| +|08/01/2022 05:04:54| KLARA +|08/01/2022 05:04:54| |TOTSUGEKI WHEN| +|08/01/2022 05:04:55| |REMEMBER NO RUSSIAN| +|08/01/2022 05:04:56| |Is there something that isn't carbon coated in this show?| +|08/01/2022 05:05:00| bchat +|08/01/2022 05:05:02| |ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP ROSEHIP | +|08/01/2022 05:05:02| ENTER +|08/01/2022 05:05:02| |THE BAKA IS HERE DESUWA!| +|08/01/2022 05:05:03| |I7m so fucking late| +|08/01/2022 05:05:03| |BASED ROSEHIP| +|08/01/2022 05:05:04| PRIYETY +|08/01/2022 05:05:05| |DESU WA| +|08/01/2022 05:05:05| BAKAHIP +|08/01/2022 05:05:05| |So you could - in theory - kill a guppie if you use semen-coated bullets?| +|08/01/2022 05:05:06| slagmode +|08/01/2022 05:05:06| |cyka blyad tovarishche| +|08/01/2022 05:05:07| |WOOOO SPEED DAEMON| +|08/01/2022 05:05:07| BAKAHIP +|08/01/2022 05:05:08| 日本語でおk +|08/01/2022 05:05:09| DESUWA +|08/01/2022 05:05:10| |>TFW no Klara gf| +|08/01/2022 05:05:10| |Who's the redhead?| +|08/01/2022 05:05:11| |Baka baka baka| +|08/01/2022 05:05:13| speedu +|08/01/2022 05:05:13| |SPEED I AM SPEED| +|08/01/2022 05:05:14| |ROSEHIP ROSEHIP ROSEHIP | +|08/01/2022 05:05:16| mochirondegozaimasu +|08/01/2022 05:05:20| SPEEEEEEEEEEEEEEEEEEEEEEEEEEEEED +|08/01/2022 05:05:20| |DESU WA| +|08/01/2022 05:05:20| DORIFTO +|08/01/2022 05:05:21| |rosehip > dvce| +|08/01/2022 05:05:23| BAKAHIP +|08/01/2022 05:05:24| |best bong coming through desuwa| +|08/01/2022 05:05:24| |rosehip tea is unironaclly great| +|08/01/2022 05:05:25| |THE QUEEN OF SPEED HAS ARRIVED!| +|08/01/2022 05:05:26| |haha yeah| +|08/01/2022 05:05:26| |Crusaders go BRRRRRRTTT| +|08/01/2022 05:05:28| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:05:29| DESU-WA +|08/01/2022 05:05:29| |GOTTA GO FAST| +|08/01/2022 05:05:31| |duce > rosehip| +|08/01/2022 05:05:31| DEKINAI +|08/01/2022 05:05:32| |BROS IT'S BEEN 25 SECONDS SINCE THE LAST TOTSUGEKI WTF| +|08/01/2022 05:05:32| |ROSEHIP FOR LEWD SWEATY HIGHSPEED | +|08/01/2022 05:05:33| |The Boco Museum wasn't carbon coated.| +|08/01/2022 05:05:35| |Push myself | +|08/01/2022 05:05:37| |ANZUU IS ALWAYS EATING WTF| +|08/01/2022 05:05:38| |Yes. The problem is that their aren't enough males in GuP to harvest all the semen.| +|08/01/2022 05:05:39| FASTER +|08/01/2022 05:05:40| |stupid sexy Anzu...| +|08/01/2022 05:05:44| |LET'S GET THIS PARTY STARTED| +|08/01/2022 05:05:44| |O S T| +|08/01/2022 05:05:45| |Rosehip is high-speed low-drag| +|08/01/2022 05:05:47| ANZUU +|08/01/2022 05:05:47| |why is anzu so sexual| +|08/01/2022 05:05:47| |ANZUU IS ALWAYS EATING BUT SHE DOESNT GET BIGGER| +|08/01/2022 05:05:48| |Anzu potatos are unironically great| +|08/01/2022 05:05:50| |TL note: Anzu means pig| +|08/01/2022 05:05:51| |HIGH SPEED HIGH SPEED| +|08/01/2022 05:05:52| |HIGH SPEED LOW DRAG| +|08/01/2022 05:05:54| |she's FLAT| +|08/01/2022 05:05:54| *pop* +|08/01/2022 05:05:55| DESUWA +|08/01/2022 05:05:55| |Anzu trying her hardest to get taller| +|08/01/2022 05:05:56| |Yeah rosehip is great but let's not get ahead ourselves here non-Dvce people| +|08/01/2022 05:05:58| |THANKS TL| +|08/01/2022 05:05:58| bang +|08/01/2022 05:06:02| |Some talk of Alexander, and some of Hercules| +|08/01/2022 05:06:05| |CAM ON INGERLAND| +|08/01/2022 05:06:06| |NONSTOP SEX KEEPS ANZU SLIM| +|08/01/2022 05:06:08| |skill issue| +|08/01/2022 05:06:09| |Does rosehip drink tea or coffee?| +|08/01/2022 05:06:10| |ZA QUEEN OF SUPEEDOO| +|08/01/2022 05:06:11| |Anzu's bewlly is a calory devouring reactor| +|08/01/2022 05:06:17| |she puts redbull in her tea| +|08/01/2022 05:06:18| |nonstop sex with who?????| +|08/01/2022 05:06:19| |SCOAR SUM FACKEN TANKS| +|08/01/2022 05:06:19| |rosehip drinks gamer piss| +|08/01/2022 05:06:21| |Is vanilla a character?| +|08/01/2022 05:06:23| |THAT'S A FUCKING HOSPITAL| +|08/01/2022 05:06:29| nyaaa +|08/01/2022 05:06:33| |KO U TA I| +|08/01/2022 05:06:33| NYAAA +|08/01/2022 05:06:36| TOTSUGEKI? +|08/01/2022 05:06:36| |FUCK THE HOSPITAL| +|08/01/2022 05:06:37| |KO U TA I| +|08/01/2022 05:06:37| |imagine being in gloriana and you get stuck with cranberry| +|08/01/2022 05:06:38| |We destroyhospitals in senshado| +|08/01/2022 05:06:38| |TO TSU GE KI| +|08/01/2022 05:06:39| TO-TSU-GE-KI +|08/01/2022 05:06:39| |KO U TA I| +|08/01/2022 05:06:39| |TO TSU GE KI?!| +|08/01/2022 05:06:40| TOTSUGEKI +|08/01/2022 05:06:41| TOTSUGEKI +|08/01/2022 05:06:41| |Me meanwhile whill gain atleast 3 kg this weakend| +|08/01/2022 05:06:41| |fucking up local infrastructure is the inner dream of every man| +|08/01/2022 05:06:41| TOTSUGEKI +|08/01/2022 05:06:41| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:06:42| TOTSUGEKI! +|08/01/2022 05:06:43| |TO TSU GE KI| +|08/01/2022 05:06:43| TOTSUGEKI +|08/01/2022 05:06:43| tonsukeki! +|08/01/2022 05:06:44| baka +|08/01/2022 05:06:44| |capable soldier| +|08/01/2022 05:06:45| |TO TSU GE KI| +|08/01/2022 05:06:46| 突撃!! +|08/01/2022 05:06:46| TO-TSU-GE-KI +|08/01/2022 05:06:46| TOT-SU-GE-KI +|08/01/2022 05:06:47| TOTSUGEKI +|08/01/2022 05:06:47| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:06:48| LMAO +|08/01/2022 05:06:48| wwwwwwwwwwww +|08/01/2022 05:06:49| |TO TSU GE KI| +|08/01/2022 05:06:49| BAKA +|08/01/2022 05:06:50| TOTSUGEKI! +|08/01/2022 05:06:50| >>>> +|08/01/2022 05:06:51| TOTSUGEKI!!!!!!! +|08/01/2022 05:06:51| |TOT SU GE KI| +|08/01/2022 05:06:51| TOTSUGEKI +|08/01/2022 05:06:51| |CUTE RETARD| +|08/01/2022 05:06:51| |TO TSU GE KI| +|08/01/2022 05:06:52| |TO TSU GE KI| +|08/01/2022 05:06:52| 吶喊 +|08/01/2022 05:06:52| TOTSUGEKI +|08/01/2022 05:06:53| TOTSUGEKI? +|08/01/2022 05:06:53| TOKKAN +|08/01/2022 05:06:53| |TOTSUGEKI | +|08/01/2022 05:06:54| 吶喊 +|08/01/2022 05:06:54| Retreat? +|08/01/2022 05:06:54| |BANZAI! BANZAI!| +|08/01/2022 05:06:55| RIP +|08/01/2022 05:06:55| |TO TSU GE KI| +|08/01/2022 05:06:55| |what was her plan there?| +|08/01/2022 05:06:56| |TOT SU GE KI| +|08/01/2022 05:06:56| TOKKAN +|08/01/2022 05:06:56| o7 +|08/01/2022 05:06:57| |how do muzzle brakes on a tank work?| +|08/01/2022 05:06:57| DUMBASS +|08/01/2022 05:06:58| TOTSUGEKI +|08/01/2022 05:06:58| RETARDED +|08/01/2022 05:06:58| |TO TSU GE KI| +|08/01/2022 05:06:59| TENNO +|08/01/2022 05:06:59| |what a fucking jobber| +|08/01/2022 05:06:59| |Not a capable soldier| +|08/01/2022 05:07:00| |>not a capable soldier| +|08/01/2022 05:07:00| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 05:07:01| REKT +|08/01/2022 05:07:02| |>NOT A CAPABLE SOLDIER| +|08/01/2022 05:07:02| BANZAI +|08/01/2022 05:07:02| |Not a capable soldier| +|08/01/2022 05:07:02| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 05:07:03| BANZAI +|08/01/2022 05:07:03| O7 +|08/01/2022 05:07:03| RETARD +|08/01/2022 05:07:03| TO-KAN +|08/01/2022 05:07:03| TOKKAN! +|08/01/2022 05:07:03| |retard nip is good| +|08/01/2022 05:07:03| AITAAA +|08/01/2022 05:07:04| Ba~ka +|08/01/2022 05:07:04| |TENNO HEIKA BANZAI| +|08/01/2022 05:07:05| retard +|08/01/2022 05:07:06| jobber +|08/01/2022 05:07:06| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 05:07:06| NYAAA +|08/01/2022 05:07:07| |What the fuck was she thinking| +|08/01/2022 05:07:07| |let her die| +|08/01/2022 05:07:09| |cute and funny| +|08/01/2022 05:07:10| |shamefur dispray| +|08/01/2022 05:07:10| TAEKO +|08/01/2022 05:07:12| |SHAMEFUR DISPRAY| +|08/01/2022 05:07:12| |SHAMEFUR DISPRAY| +|08/01/2022 05:07:16| |>NOT a capable soldier| +|08/01/2022 05:07:16| |TENNO HEIKA BANZAI!!!!| +|08/01/2022 05:07:17| STOPPU +|08/01/2022 05:07:18| |>NOT A CAPABLE SOLDIER| +|08/01/2022 05:07:19| REPORTED +|08/01/2022 05:07:20| |SHAMEFURU DISPRAY| +|08/01/2022 05:07:20| TAEKO +|08/01/2022 05:07:23| SHAMEFUR +|08/01/2022 05:07:24| |How did she survive that?| +|08/01/2022 05:07:30| Banzai +|08/01/2022 05:07:30| BARA-KETSU +|08/01/2022 05:07:30| |>gets speeding ticket| +|08/01/2022 05:07:31| BANZAI +|08/01/2022 05:07:32| |hummng nonna| +|08/01/2022 05:07:35| |good thing her drink just disappears| +|08/01/2022 05:07:35| |what the fuck is that red shit she's drinking| +|08/01/2022 05:07:36| |Is SPEEDSTER a title| +|08/01/2022 05:07:39| |I NEED SPEED| +|08/01/2022 05:07:40| |I love whatever retard idea I have to post there will be a least 2 other anons with the same idea| +|08/01/2022 05:07:40| |she speedy| +|08/01/2022 05:07:41| |ULTRA LATE BRAKINGGU!| +|08/01/2022 05:07:42| |GOOD SHOOTING| +|08/01/2022 05:07:43| realistic +|08/01/2022 05:07:43| |Miho the God| +|08/01/2022 05:07:44| |where does she get all the tea after spilling ti| +|08/01/2022 05:07:46| UTE +|08/01/2022 05:07:47| SPEEDSTER +|08/01/2022 05:07:52| TROLLED +|08/01/2022 05:07:54| |LEOPON o7| +|08/01/2022 05:07:54| |Press F for the Posche| +|08/01/2022 05:07:56| |tea = spilled| +|08/01/2022 05:07:57| |I want to fuck the shit out of Roship's driver| +|08/01/2022 05:07:57| |How do these tracks even survive| +|08/01/2022 05:07:57| |Fucking german shitbox| +|08/01/2022 05:07:58| |>tea is pink >hair is also pink| +|08/01/2022 05:07:59| |was that a wz34?| +|08/01/2022 05:07:59| dorifto +|08/01/2022 05:08:00| OHOHOHHOOHHO +|08/01/2022 05:08:00| F +|08/01/2022 05:08:01| |DESU WA| +|08/01/2022 05:08:01| OHHHHHHHHHHOOOOOOOOHOHOHOHO +|08/01/2022 05:08:01| F +|08/01/2022 05:08:02| F +|08/01/2022 05:08:02| |DESU WA| +|08/01/2022 05:08:03| |speedster is our word, but you can say speedsta| +|08/01/2022 05:08:04| |I love the fact every idea I post has been posted by at least 2 anons| +|08/01/2022 05:08:05| ohohohohohoh +|08/01/2022 05:08:06| |DESU WA| +|08/01/2022 05:08:09| |carbon coated tracks| +|08/01/2022 05:08:09|  OHOHOHOHOHOHOHO +|08/01/2022 05:08:11| OHOHOHOHOHO +|08/01/2022 05:08:12| |PANZER DRIFT| +|08/01/2022 05:08:12| |The anglerfish is one well oiled machine| +|08/01/2022 05:08:12| desu-wa +|08/01/2022 05:08:14| OHOHOHOHOHO +|08/01/2022 05:08:15| |DESU WA| +|08/01/2022 05:08:15| |ROSEHIPS DRIVER IS AN ABSOLUTE MAD LASS| +|08/01/2022 05:08:16| DESUWA!~ +|08/01/2022 05:08:21| |>well oiled| +|08/01/2022 05:08:23| |get her klara| +|08/01/2022 05:08:27| |rosehip solos her tank| +|08/01/2022 05:08:27| |why isnt her driver a named character| +|08/01/2022 05:08:30| |Sex with klara| +|08/01/2022 05:08:36| |Mako's Drunken Driving is sublime| +|08/01/2022 05:08:38| |I have to pee already| +|08/01/2022 05:08:44| |Me too| +|08/01/2022 05:08:46| |weak bladder| +|08/01/2022 05:08:47| INCOMING +|08/01/2022 05:08:52| |wow the 3D use| +|08/01/2022 05:08:53| |OH N-| +|08/01/2022 05:08:54| |SAME SHOP| +|08/01/2022 05:08:54| |pee in yukari's mouth| +|08/01/2022 05:08:57| |ROSEHIP NOOOOOOO| +|08/01/2022 05:08:57| IGGER +|08/01/2022 05:08:57| |NOT AGAIN| +|08/01/2022 05:08:57| |tfw weak bladder INCOMING| +|08/01/2022 05:08:59| DODODODODODO +|08/01/2022 05:08:59| DODODODODDO +|08/01/2022 05:09:00| |>not having a carbon coated bladder| +|08/01/2022 05:09:00| |ro ro ro ro ro| +|08/01/2022 05:09:01| dododoodododo +|08/01/2022 05:09:01| |This shop IRL got increased business from this show| +|08/01/2022 05:09:02| DODODOODOD +|08/01/2022 05:09:02| DODODOD +|08/01/2022 05:09:02| |LARGE BRIT DESTROYS RUSSIAN FROM BEHIND| +|08/01/2022 05:09:03| |How much stamina would you need to satisfy rosehip| +|08/01/2022 05:09:03| |this shits making me dizzy| +|08/01/2022 05:09:04| DEAD +|08/01/2022 05:09:04| |MA JI DE SU NO| +|08/01/2022 05:09:04| NOOOOOOOOO +|08/01/2022 05:09:04| DED +|08/01/2022 05:09:04| |BASED PROPERTY DAMAGE| +|08/01/2022 05:09:04| |thanks rosehip, very cool| +|08/01/2022 05:09:05| F +|08/01/2022 05:09:06| |they should carbon coat that shop | +|08/01/2022 05:09:06| WEW +|08/01/2022 05:09:08| dumbhip +|08/01/2022 05:09:08| DODODODODOD +|08/01/2022 05:09:09| SPEEEEEED +|08/01/2022 05:09:10| |Lucky bastard| +|08/01/2022 05:09:10| based +|08/01/2022 05:09:11| allah +|08/01/2022 05:09:11| |YES FUCK UP LOCAL INFRASTRUCTURE| +|08/01/2022 05:09:11| >>>>>>> +|08/01/2022 05:09:11| |think of 3D what you will but they use 3D well| +|08/01/2022 05:09:12| |SHE DED| +|08/01/2022 05:09:12| |ROSEHIP NO| +|08/01/2022 05:09:12| F +|08/01/2022 05:09:13| DEAD +|08/01/2022 05:09:14| AGAIN! +|08/01/2022 05:09:14| F +|08/01/2022 05:09:15| |KLARA AND ROSEHIP DEAD| +|08/01/2022 05:09:15| DEAD +|08/01/2022 05:09:15| DEAD +|08/01/2022 05:09:15| DON~ +|08/01/2022 05:09:16| |Rolling in insurance baby| +|08/01/2022 05:09:18| F +|08/01/2022 05:09:19| |I cant believe rosehip and klara are dead| +|08/01/2022 05:09:20| |YES! MY SHOP!| +|08/01/2022 05:09:21| |>crashed, rammed into, exploded cant harm the carbon coating| +|08/01/2022 05:09:24| |>ROOF COLLAPSED| +|08/01/2022 05:09:24| giwtwm +|08/01/2022 05:09:27| |being an insurance broker would be hell| +|08/01/2022 05:09:27| |rosehip killed in a fireball| +|08/01/2022 05:09:33| |>zero causalties| +|08/01/2022 05:09:33| |FUCKING BUFFERING| +|08/01/2022 05:09:35| |Why don't they just carbon coat there infrastructure| +|08/01/2022 05:09:38| |even by gup logic they should be dead| +|08/01/2022 05:09:40| |Guy just lost all his posessions| +|08/01/2022 05:09:40| |This week rosehip fucking crashes and dies| +|08/01/2022 05:09:40| |JUST FUCK THE TOWN UP| +|08/01/2022 05:09:43| |I can't believe Rosehip is fucking dead | +|08/01/2022 05:09:47| |I buffered only once for 1 second| +|08/01/2022 05:09:53| HINA-CHAN +|08/01/2022 05:09:54| HETZER +|08/01/2022 05:09:59| NAPOLI-TURN +|08/01/2022 05:09:59| |>FIXED TURRETS| +|08/01/2022 05:10:01| |GAS GAS GAS| +|08/01/2022 05:10:01| |PREASE HELPU DUCK DONO| +|08/01/2022 05:10:02| |get it, napoli-turn?| +|08/01/2022 05:10:04| |OH SHIT| +|08/01/2022 05:10:04| |>i'm a genius >oh no!| +|08/01/2022 05:10:05| |KAVE-TAN ENTER!| +|08/01/2022 05:10:07| |180 no scope| +|08/01/2022 05:10:09| DORIFUTO +|08/01/2022 05:10:19| |Please destroy my home!| +|08/01/2022 05:10:20| |The StuGIII crew are my wives.| +|08/01/2022 05:10:22| |180 quick scope| +|08/01/2022 05:10:23| |Bro i think your wives just deaded| +|08/01/2022 05:10:25| BUFFERING +|08/01/2022 05:10:28| trickstabbed +|08/01/2022 05:10:29| |>russian internet again| +|08/01/2022 05:10:31| |violating traffic rules| +|08/01/2022 05:10:33| |>babysit a team of retards || >still do decently against a combination of two of the best teams || Oarai is OP as fuck.| +|08/01/2022 05:10:36| BUFFERING +|08/01/2022 05:10:36| |you arent getting out of this one no way| +|08/01/2022 05:10:37| |>imagine buffering| +|08/01/2022 05:10:45| |RIP CIVVIES| +|08/01/2022 05:10:46| |ENTA ENTA MISSION| +|08/01/2022 05:10:49| |cute little tank| +|08/01/2022 05:10:49| |sly dogs| +|08/01/2022 05:10:49| |DO IT| +|08/01/2022 05:10:50| L +|08/01/2022 05:10:50| |sheep led by a lion| +|08/01/2022 05:10:51| bonk +|08/01/2022 05:10:51| rekt +|08/01/2022 05:10:52| |seems dangerous still| +|08/01/2022 05:10:52| |WORLD OF SPG SIGN| +|08/01/2022 05:10:52| |World of SPG| +|08/01/2022 05:10:53| BOMK +|08/01/2022 05:10:54| |>using civvies as cover| +|08/01/2022 05:10:55| |That's enough to kill somebody| +|08/01/2022 05:10:55| F +|08/01/2022 05:10:55| |>non carbon coated audience| +|08/01/2022 05:10:56| |Thank god for her helmet| +|08/01/2022 05:10:56| *BONK* +|08/01/2022 05:10:57| BONK +|08/01/2022 05:10:57| |OARAI SHILLING| +|08/01/2022 05:10:58| |buffered again shit| +|08/01/2022 05:11:00| HAPPY +|08/01/2022 05:11:00| |wtf i never heard this cover before| +|08/01/2022 05:11:02| |CARBON COATED GLASS| +|08/01/2022 05:11:02| |that's a storng ass escalator| +|08/01/2022 05:11:03| w-why +|08/01/2022 05:11:04| |Is this a war crime?| +|08/01/2022 05:11:06| |ED TAIMU!| +|08/01/2022 05:11:06| |lawyer here, using civilians as cover is in fact a war crime| +|08/01/2022 05:11:06| warcrimes.png +|08/01/2022 05:11:07| |The image of bouncing tanks fills my mind| +|08/01/2022 05:11:08| |>he doesn't drive through his local shopping centre| +|08/01/2022 05:11:08| |civilian casualties are OK| +|08/01/2022 05:11:09| |How did she not get decapicitated?| +|08/01/2022 05:11:11| yes +|08/01/2022 05:11:13| |PLAY WORLD OF SPG NOW| +|08/01/2022 05:11:15| deadscalator +|08/01/2022 05:11:15| -DONO +|08/01/2022 05:11:16| |DUCK-DONO DE-ARIMASU| +|08/01/2022 05:11:16| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:11:16| |ENTAH ENTAH MISSION| +|08/01/2022 05:11:25| anzu +|08/01/2022 05:11:27| |If they are enemy civilians then they are enemies too| +|08/01/2022 05:11:27| |THANKS TL| +|08/01/2022 05:11:30| |SUPER MORALS COMMITTEE ATTACK!| +|08/01/2022 05:11:30| BAYBAY +|08/01/2022 05:11:32| |It's time to do "that" | +|08/01/2022 05:11:33| |Guys... where's Duce?| +|08/01/2022 05:11:34| TEAMWORK +|08/01/2022 05:11:35| baby +|08/01/2022 05:11:35| Utep +|08/01/2022 05:11:36| BAYBAYT +|08/01/2022 05:11:36| BABY +|08/01/2022 05:11:36| BAYBEE +|08/01/2022 05:11:36| ownd +|08/01/2022 05:11:37| BABY +|08/01/2022 05:11:38| |niceu baby~| +|08/01/2022 05:11:43| |>that one anon dropping acid in the thread| +|08/01/2022 05:11:45| |chats dying we need dvce back| +|08/01/2022 05:11:46| |THEY'RE BOOSTING| +|08/01/2022 05:11:48| |COOL POV| +|08/01/2022 05:11:51| |Let's trash these steps lmao| +|08/01/2022 05:11:54| Rollercoaster +|08/01/2022 05:11:57| |DOWNHILL TANKERY!| +|08/01/2022 05:11:57| IMAGINE +|08/01/2022 05:12:00| |Nonna: The things I put up with for that sweet loli cunny| +|08/01/2022 05:12:01| |last time i dropped acid watching one piece i had a blast| +|08/01/2022 05:12:03| |tall hat| +|08/01/2022 05:12:07| |dont push yourself, gremlim| +|08/01/2022 05:12:08| |lmao Nonna praying| +|08/01/2022 05:12:12| |>wan piss| +|08/01/2022 05:12:12| |not this time| +|08/01/2022 05:12:14| |GUNNER, CARBON, PC!| +|08/01/2022 05:12:14| |seething midget| +|08/01/2022 05:12:15| |butt slut incoming| +|08/01/2022 05:12:15| /\ +|08/01/2022 05:12:17| |DEJA VU| +|08/01/2022 05:12:19| |best girl| +|08/01/2022 05:12:19| >again +|08/01/2022 05:12:19| |Ruruki a cutie| +|08/01/2022 05:12:20| ANAL +|08/01/2022 05:12:20| |Splice mistake?| +|08/01/2022 05:12:22| |DEJA VU| +|08/01/2022 05:12:22| baiters +|08/01/2022 05:12:22| |Never done drugs and your performance doesn't really convince me otherwise| +|08/01/2022 05:12:24| |DUMB SLAG| +|08/01/2022 05:12:25| |WAIT A SECOND WEVE SEEN THIS BEFORE| +|08/01/2022 05:12:25| |DEJA VU| +|08/01/2022 05:12:25| |deja vu| +|08/01/2022 05:12:26| |poor acidanon is shitting his pants| +|08/01/2022 05:12:26| |OH NO NO NO NO NO NOT AGAIN| +|08/01/2022 05:12:28| |200Iq pl;ayh incoming| +|08/01/2022 05:12:28| |>falling for it again| +|08/01/2022 05:12:29| |HAHA Ruri again| +|08/01/2022 05:12:30| |lol lmao| +|08/01/2022 05:12:31| |I've seen this scene before| +|08/01/2022 05:12:31| |>I'm not falling for this one again...| +|08/01/2022 05:12:32| |ruruki is so dumb| +|08/01/2022 05:12:32| |OH NONONONONONO| +|08/01/2022 05:12:36| ENTER +|08/01/2022 05:12:36| BAITED +|08/01/2022 05:12:37| |THEY CAME FROM BEHIND| +|08/01/2022 05:12:37| rurikuri +|08/01/2022 05:12:37| |oh n-| +|08/01/2022 05:12:38| baka +|08/01/2022 05:12:39| |STUPID BITCH| +|08/01/2022 05:12:40| baited +|08/01/2022 05:12:41| |SHE FELL FOR IT AGAIN| +|08/01/2022 05:12:42| KEK +|08/01/2022 05:12:42| BTFO +|08/01/2022 05:12:43| Rukuriribros... +|08/01/2022 05:12:44| OWNED +|08/01/2022 05:12:45| |DUMB SLAG| +|08/01/2022 05:12:45| |THE TASTE OF VICTORY | +|08/01/2022 05:12:45| AHIRU-DONO +|08/01/2022 05:12:46| RURI... +|08/01/2022 05:12:47| BTFO +|08/01/2022 05:12:47| ARIGATO +|08/01/2022 05:12:48| BTFO +|08/01/2022 05:12:51| |>the garage is speaking japanese| +|08/01/2022 05:12:52| |poor soviets| +|08/01/2022 05:12:53| |Saori's saoris| +|08/01/2022 05:12:53| UKULELE +|08/01/2022 05:12:54| |rukuriri never do shit| +|08/01/2022 05:12:57| |SAORI'S JIGGLY TITS| +|08/01/2022 05:12:58| |>stupid brit || you could have just said brit| +|08/01/2022 05:12:59| UKULELE +|08/01/2022 05:13:08| |katyusha saying darjeeling 😭| +|08/01/2022 05:13:16| |>churchill >fast| +|08/01/2022 05:13:19| |So when is the Panzer IV gonna get that underside mirror?| +|08/01/2022 05:13:20| |You insulting usa brits anon| +|08/01/2022 05:13:24| drown +|08/01/2022 05:13:25| |SEA MONSTER| +|08/01/2022 05:13:26| ENTER +|08/01/2022 05:13:28| ENTER +|08/01/2022 05:13:29| ENTER +|08/01/2022 05:13:30| |the drowned| +|08/01/2022 05:13:32| |>trustworthy ally| +|08/01/2022 05:13:32| ENTER +|08/01/2022 05:13:32| KV-TAN +|08/01/2022 05:13:35| |KV-2 my beloved| +|08/01/2022 05:13:35| |RIP WAGIES| +|08/01/2022 05:13:35| NINA +|08/01/2022 05:13:39| KV-NII +|08/01/2022 05:13:39| |would this work irl?| +|08/01/2022 05:13:40| KAABEE-TAN +|08/01/2022 05:13:40| |YES FUCK UP THAT OFFICE| +|08/01/2022 05:13:43| |sweet fucking lord| +|08/01/2022 05:13:44| |THOUSANDS DEAD| +|08/01/2022 05:13:45| |MY HOUSE| +|08/01/2022 05:13:45| |FUCK YOUR SHIT| +|08/01/2022 05:13:45| |$46 billion in damages| +|08/01/2022 05:13:46| |FUCK YOUR CITY| +|08/01/2022 05:13:47| Warcires! +|08/01/2022 05:13:48| damn +|08/01/2022 05:13:48| |now that's stopping power| +|08/01/2022 05:13:48| |jesus christ| +|08/01/2022 05:13:49| |>russian magic defends against hydrolock| +|08/01/2022 05:13:49| |FUCK SHIT UP| +|08/01/2022 05:13:49| F +|08/01/2022 05:13:51| |NO SURVIVORS| +|08/01/2022 05:13:53| |RIP 100 wagies| +|08/01/2022 05:13:55| |holy shit| +|08/01/2022 05:13:56| bang +|08/01/2022 05:13:56| |why don't they just hide their flag tank in the water| +|08/01/2022 05:13:56| |super HEHE| +|08/01/2022 05:13:56| |FUCK... anzu!| +|08/01/2022 05:13:56| |FUCK THAT HOSPITAL| +|08/01/2022 05:13:57| |That was literally a hospital| +|08/01/2022 05:13:57| |the power of 9mm| +|08/01/2022 05:13:57| |someone call tank police| +|08/01/2022 05:13:58| |How many people were in that hospital, do you think| +|08/01/2022 05:13:59| |>property damage| +|08/01/2022 05:13:59| |HOLY SHIT| +|08/01/2022 05:14:00| |COME VISIT OORAI| +|08/01/2022 05:14:01| L +|08/01/2022 05:14:01| |KILL THEM ALL NINA| +|08/01/2022 05:14:03| |just fuck my city up| +|08/01/2022 05:14:03| |43 dead in hotel explosion, ruled as a skill issue| +|08/01/2022 05:14:04| bakas +|08/01/2022 05:14:04| WARKURAIMY +|08/01/2022 05:14:04| |*260 wagies| +|08/01/2022 05:14:04| oh +|08/01/2022 05:14:06| |Don't woory anons the people are carbon coated| +|08/01/2022 05:14:07| |DUMB LOLI TANK| +|08/01/2022 05:14:08| breh +|08/01/2022 05:14:08| FLOOF +|08/01/2022 05:14:08| F +|08/01/2022 05:14:09| WASTED +|08/01/2022 05:14:10| |ara ara| +|08/01/2022 05:14:11| KV-bros +|08/01/2022 05:14:11| |Oh no no no...| +|08/01/2022 05:14:12| dummies +|08/01/2022 05:14:13| NYAAA! +|08/01/2022 05:14:13| F +|08/01/2022 05:14:13| |ARA ARA| +|08/01/2022 05:14:14| NYAA +|08/01/2022 05:14:15| |KV baka| +|08/01/2022 05:14:15| NYAA~ +|08/01/2022 05:14:15| NYAAA +|08/01/2022 05:14:16| |DAMN KIDS| +|08/01/2022 05:14:17| |how do you miss that bad?| +|08/01/2022 05:14:17| NYAA +|08/01/2022 05:14:17| NYAAAA +|08/01/2022 05:14:18| NYAA +|08/01/2022 05:14:18| |GENEVE CONVENTION DOES NOT APPLY| +|08/01/2022 05:14:19| nyaa +|08/01/2022 05:14:19| NYAAA +|08/01/2022 05:14:19| NYAAA +|08/01/2022 05:14:21| |ANTEATER NO| +|08/01/2022 05:14:26| |Screen reserved for this danmaku| +|08/01/2022 05:14:30| |KV crew sent to siberia| +|08/01/2022 05:14:30| |BEACH ASSAULT| +|08/01/2022 05:14:31| |TL Note: KV-2 means "Fat"| +|08/01/2022 05:14:31| |Momo's momos...| +|08/01/2022 05:14:31| |ANTEATERS OUT AGAIN| +|08/01/2022 05:14:35| |Will momo finally kill| +|08/01/2022 05:14:35| |MOMO CHAN YOU MISSED| +|08/01/2022 05:14:36| MOMO-CHAN... +|08/01/2022 05:14:39| |tanks tl | +|08/01/2022 05:14:40| saki +|08/01/2022 05:14:41| |momo you missed| +|08/01/2022 05:14:41| |the hospital was empty, this world doesn't know covid| +|08/01/2022 05:14:43| budderfly +|08/01/2022 05:14:43| |MOMO SHIT| +|08/01/2022 05:14:45| KILL!!! +|08/01/2022 05:14:46| |>kill them| +|08/01/2022 05:14:47| F +|08/01/2022 05:14:49| KILL +|08/01/2022 05:14:49| |FRENCH TANKS ARE SHIT| +|08/01/2022 05:14:49| F +|08/01/2022 05:14:52| F +|08/01/2022 05:14:52| Charbros... +|08/01/2022 05:14:53| |no one got hurt no worry| +|08/01/2022 05:14:53| |KILL THEM ALL| +|08/01/2022 05:14:54| |Duck dono ;_; | +|08/01/2022 05:14:55| Brutal +|08/01/2022 05:14:55| f +|08/01/2022 05:14:56| |Coofvid didn't existed in 2015| +|08/01/2022 05:14:56| |that wasn't a hospital retard| +|08/01/2022 05:14:56| |SODOCLONES DEAD| +|08/01/2022 05:14:58| F +|08/01/2022 05:15:01| |>french """"""""tanks"""""""""| +|08/01/2022 05:15:01| |katyushas thighs| +|08/01/2022 05:15:01| dead +|08/01/2022 05:15:06| APOLOGIZE +|08/01/2022 05:15:07| BAITED +|08/01/2022 05:15:09| |Carbon coated girls| +|08/01/2022 05:15:13| |>AAAAAAAAAAAAAAAAAA KLARA NONNA SAVE ME PLEEEEEEEEEEEEEAAAAAAAASSSSSEEEEEEEEEEE| +|08/01/2022 05:15:13| |no drifting toay| +|08/01/2022 05:15:13| |tfw no russian loli gf| +|08/01/2022 05:15:14| APOLOJIZZ +|08/01/2022 05:15:15| |Drift: denied| +|08/01/2022 05:15:18| |shitty reaction time from gunner there| +|08/01/2022 05:15:21| |Fuck your drifting| +|08/01/2022 05:15:21| |BALLS OF STEEL| +|08/01/2022 05:15:37| Danmaku +|08/01/2022 05:15:39| DESUWA +|08/01/2022 05:15:39| FIYAAAAAAAAAAAAAAA +|08/01/2022 05:15:39| |DESU WA| +|08/01/2022 05:15:40| |DESU WA| +|08/01/2022 05:15:40| |cheers love| +|08/01/2022 05:15:43| ROSEHIP +|08/01/2022 05:15:43| |punished rosehip| +|08/01/2022 05:15:44| |a kills a kill| +|08/01/2022 05:15:44| HOW +|08/01/2022 05:15:45| |can panzer iv pen a churchhill?| +|08/01/2022 05:15:45| |SHE DID IT| +|08/01/2022 05:15:46| MOMO +|08/01/2022 05:15:46| |SHINUCHI SANJOU DESU WA| +|08/01/2022 05:15:46| |a hush falls upon the crowd| +|08/01/2022 05:15:46| SPEEEED +|08/01/2022 05:15:46| Momo... +|08/01/2022 05:15:47| |MOMO HIT SOMETHING| +|08/01/2022 05:15:49| rekt +|08/01/2022 05:15:49| |HOW THE FUCK DID THAT SHOT WENT ALL THE WAY TO THE RIGHT| +|08/01/2022 05:15:49| RIP +|08/01/2022 05:15:50| |MOMO YOU MISSED| +|08/01/2022 05:15:51| |bakahip saves the day| +|08/01/2022 05:15:52| ROSEHIIIIIIIIP +|08/01/2022 05:15:53| ns +|08/01/2022 05:15:53| |Momo you fucking idiot| +|08/01/2022 05:15:54| |with APCR, yes| +|08/01/2022 05:15:54| F +|08/01/2022 05:15:54| |not in frontal aspect| +|08/01/2022 05:15:54| |Momo MVP| +|08/01/2022 05:15:55| SASUGA +|08/01/2022 05:15:55| |rosehip dies again| +|08/01/2022 05:15:57| |Momo no longer kill virgin| +|08/01/2022 05:15:59| 真打惨状 +|08/01/2022 05:16:02| |LET'S GO OOARAI| +|08/01/2022 05:16:03| |>Momo's first kill is a total fluke| +|08/01/2022 05:16:05| F +|08/01/2022 05:16:07| BTFO +|08/01/2022 05:16:07| |no longer any virgin either| +|08/01/2022 05:16:07| F +|08/01/2022 05:16:07| F +|08/01/2022 05:16:08| |>5lber gun penetrating shit| +|08/01/2022 05:16:09| F +|08/01/2022 05:16:09| F +|08/01/2022 05:16:09| RIP +|08/01/2022 05:16:09| |PROCLAIM THE SCORE| +|08/01/2022 05:16:10| |kay oh| +|08/01/2022 05:16:10| F +|08/01/2022 05:16:10| rigged +|08/01/2022 05:16:11| |OOARAI JUST CANT WIN| +|08/01/2022 05:16:11| |DARJEELING. CAN'T. STOP. WINNING.| +|08/01/2022 05:16:12| |FUCK ENGLAND| +|08/01/2022 05:16:12| F +|08/01/2022 05:16:13| JOBBED +|08/01/2022 05:16:13| F +|08/01/2022 05:16:14| |tTWO FOR TWO BITCHES| +|08/01/2022 05:16:14| GAAAAAAAAY +|08/01/2022 05:16:17| |NO TEAM| +|08/01/2022 05:16:17| :DDDDDDDDDDDDDDD +|08/01/2022 05:16:18| |how was rosehips tank not eliminated earlier?| +|08/01/2022 05:16:18| |Darjeeling undefeated| +|08/01/2022 05:16:18| HOBO +|08/01/2022 05:16:19| |This cant be real| +|08/01/2022 05:16:20| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDd +|08/01/2022 05:16:20| |FUG :DDDDDDDDDD| +|08/01/2022 05:16:20| |should have charged more| +|08/01/2022 05:16:21| RIGGED +|08/01/2022 05:16:21| |RIGGED MATCH| +|08/01/2022 05:16:21| |DARJEELING BROS WE JUST CAN'T LOVE| +|08/01/2022 05:16:21| :DDDDDDD +|08/01/2022 05:16:22| :DDDD +|08/01/2022 05:16:22| |oorai stuc with jobbers| +|08/01/2022 05:16:22| |FUG :DDD| +|08/01/2022 05:16:23| LOOOSERSSSSS +|08/01/2022 05:16:23| |:D DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:16:23| |ORARI BROS?| +|08/01/2022 05:16:23| |BENIS :DDDDDDD| +|08/01/2022 05:16:24| :DDDDDDDDDDD +|08/01/2022 05:16:25| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 05:16:25| |FUCK ST. GLORIANA| +|08/01/2022 05:16:25| |FUG :DDDDDDDDDDD| +|08/01/2022 05:16:25| |THE ETERNAL ANGLO| +|08/01/2022 05:16:27| |yukari quickload holy shit| +|08/01/2022 05:16:28| :DDDDDDDDD +|08/01/2022 05:16:28| FUGGGGGGGGGGGGGGGG +|08/01/2022 05:16:28| |Perkele :DDD| +|08/01/2022 05:16:29| FUGGG +|08/01/2022 05:16:29| :DDDDDDDDDDDDDDDD +|08/01/2022 05:16:29| |Orai 's win was a fluke| +|08/01/2022 05:16:31| |GAME WAS RIGGED FROM THE START| +|08/01/2022 05:16:31| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:16:32| |CHIHATAN BASED| +|08/01/2022 05:16:32| |SEX WITH MIKA| +|08/01/2022 05:16:33| |beis :DDDDDDDDDDDDDDD| +|08/01/2022 05:16:34| pengin! +|08/01/2022 05:16:34| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:16:34| PERKELE +|08/01/2022 05:16:35| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:16:35| |oh fug :--DDDD| +|08/01/2022 05:16:36| |GOTT STRAFFE ENGLAND| +|08/01/2022 05:16:36| ???????? +|08/01/2022 05:16:37| |FOR SALVATION| +|08/01/2022 05:16:37| |13 penguins dead during Ooarai/Gloriana training match| +|08/01/2022 05:16:37| |What was with that unfair team distribution| +|08/01/2022 05:16:37| FUG +|08/01/2022 05:16:39| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:16:39| |PERFIDIOUS ALBION| +|08/01/2022 05:16:39| |FUG :DDDDDDDDDDDDD| +|08/01/2022 05:16:39| :DDDDDDDDDDDD +|08/01/2022 05:16:39| |>no penguin deaths| +|08/01/2022 05:16:39| naked +|08/01/2022 05:16:40| :DDDDDDDDDDDDD +|08/01/2022 05:16:40| |BENIS xDDDDDDDDDDDDDDD| +|08/01/2022 05:16:40| |oh okay| +|08/01/2022 05:16:40| |Momo stands for "Mmmm, it seems I can't aim"| +|08/01/2022 05:16:40| |ALL HAIL BRITANNIA| +|08/01/2022 05:16:41| PENGI +|08/01/2022 05:16:41| :DDDDDDD +|08/01/2022 05:16:42| |TOO BAD THERE WILL NEVER BE A REMATCH BETWEEN OOARAI AND GLORIANA| +|08/01/2022 05:16:43| |PENGUIN CASUALTIES| +|08/01/2022 05:16:44| |grape-kun ;_;| +|08/01/2022 05:16:44| |>carbon coated penguins| +|08/01/2022 05:16:45| tits +|08/01/2022 05:16:45| Pen-Pen? +|08/01/2022 05:16:46| WEW +|08/01/2022 05:16:46| |>MC team and japan team up >lose| +|08/01/2022 05:16:47| UOOOOOOOOOOOOOOOOOOOHHHHHHHHHH +|08/01/2022 05:16:49| WEW +|08/01/2022 05:16:49| |NA>KD GIR>KLLS| +|08/01/2022 05:16:50| WEW +|08/01/2022 05:16:50| GOKUGOKU +|08/01/2022 05:16:50| |Carbon coated penguins| +|08/01/2022 05:16:51| |Protecc pengies.\| +|08/01/2022 05:16:51| |rip penpen| +|08/01/2022 05:16:51| :DDDDDDD +|08/01/2022 05:16:52| |RIP PINGU| +|08/01/2022 05:16:52| NINA +|08/01/2022 05:16:52| |RIP Grape-kun| +|08/01/2022 05:16:53| |CUTE PENGUINS| +|08/01/2022 05:16:53| MUH +|08/01/2022 05:16:55| |YOU WILL NEVER BATHE WITH THE GUPPIES| +|08/01/2022 05:16:55| ToT +|08/01/2022 05:16:56| |more bathes| +|08/01/2022 05:16:56| |VICTORY SHOWER| +|08/01/2022 05:16:57| UOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:16:57| WEEEEEEEEEEEEEEEW +|08/01/2022 05:16:57| SEEEEEEEEEEEX +|08/01/2022 05:16:58| a +|08/01/2022 05:16:58| WEW +|08/01/2022 05:16:59| UOHHHHHHHH +|08/01/2022 05:16:59| |can a churchill pen pen-pen?| +|08/01/2022 05:17:00| |MOMO, NAGAI| +|08/01/2022 05:17:01| |IMAGINE THE SMELL| +|08/01/2022 05:17:01| |grape-kun ;________;| +|08/01/2022 05:17:01| |Im gonna coom| +|08/01/2022 05:17:02| |I NEED RAPE PROTECTION ToT| +|08/01/2022 05:17:02| |so BIG| +|08/01/2022 05:17:02| UUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:17:03| |labia soup | +|08/01/2022 05:17:04| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:17:05| |ANZUS FLAT CHEST| +|08/01/2022 05:17:06| |flat and stacked| +|08/01/2022 05:17:06| |CAN I DRINK THAT BATHWATER?| +|08/01/2022 05:17:07| FLAT +|08/01/2022 05:17:07| ERECT +|08/01/2022 05:17:07| FLAT +|08/01/2022 05:17:08| |Anzu soup| +|08/01/2022 05:17:08| OOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:17:09| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:17:10| UOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:17:11| |I like that| +|08/01/2022 05:17:13| momo's +|08/01/2022 05:17:14| BIG +|08/01/2022 05:17:14| |PEKOE UOOOOOOOOOOOOOOOH| +|08/01/2022 05:17:15| |ANZU'S CHEST UOOOOHHH| +|08/01/2022 05:17:16| |Darjeeling is STACKED| +|08/01/2022 05:17:17| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:17:17| |NONNA HUGE TITS| +|08/01/2022 05:17:19| flat +|08/01/2022 05:17:19| |PEKOE UOOOO| +|08/01/2022 05:17:20| FLAT +|08/01/2022 05:17:20| |DRINKING ANZU'S ONSEN WATER| +|08/01/2022 05:17:21| |Desu wa?| +|08/01/2022 05:17:21| |MOMO'S MOMOS| +|08/01/2022 05:17:22| |oh fuck my pp| +|08/01/2022 05:17:22| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:17:23| UOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:17:23| |KATYUSHA UOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH| +|08/01/2022 05:17:23| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:17:24| |SHOW ME| +|08/01/2022 05:17:25| SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEKUSU +|08/01/2022 05:17:25| OUUUUUUUUUUUUUUUUUUUUUUUUUUUHH +|08/01/2022 05:17:26| |Naked girls...| +|08/01/2022 05:17:26| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 05:17:27| |bath water with anzu and katyusha| +|08/01/2022 05:17:27| |FFFFFFFFLLLLLLLLLLLLLLLAAAAAATTTTTTTTT CCCCCCCCCCHHHHHHHHHEEEEEESSSSSSSSSTTTTTTTTTTTTTTTTTTTT| +|08/01/2022 05:17:28| |YUou will never Darjeerling's Darjeerling's| +|08/01/2022 05:17:29| |EXHIBITIONISM MATCH| +|08/01/2022 05:17:29| |MASSIVE NONNA KNOCKERS| +|08/01/2022 05:17:30| |Nonna is large| +|08/01/2022 05:17:31| UOHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:17:32| |IM GONNA SOOOOOOOOOOOOOOB| +|08/01/2022 05:17:33| UUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHH +|08/01/2022 05:17:33| |TOO LEWD| +|08/01/2022 05:17:33| |Katyusha's flat chest...| +|08/01/2022 05:17:33| ToT +|08/01/2022 05:17:33| |if they drink too much tea they will PEE| +|08/01/2022 05:17:34| 127CM +|08/01/2022 05:17:34| 日本語でおk +|08/01/2022 05:17:35| |they should bottle that bathwater | +|08/01/2022 05:17:36| |SEX WITH HANA| +|08/01/2022 05:17:38| |SPEAK JAPANESE | +|08/01/2022 05:17:39| |The gremlin fears the titty monsters| +|08/01/2022 05:17:39| |cock out| +|08/01/2022 05:17:40| |she still counting| +|08/01/2022 05:17:40| |Nishi bun!| +|08/01/2022 05:17:42| |cute russian| +|08/01/2022 05:17:42| |I LOST| +|08/01/2022 05:17:42| |Now I need to pee| +|08/01/2022 05:17:44| TITSUGEKI +|08/01/2022 05:17:44| |NIHONGO MOTHERFUCKER DO YOU SPEAK IT?| +|08/01/2022 05:17:44| |SEX WITH NISHI| +|08/01/2022 05:17:45| |Nishi's Nishi's in Nishiwater Nishi Nishi| +|08/01/2022 05:17:46| |ANZU IN THE BACK| +|08/01/2022 05:17:49| |>gaming instead of bathing Lmao| +|08/01/2022 05:17:50| |>ALL THE FLAT CHESTS| +|08/01/2022 05:17:51| FLUFF!!! +|08/01/2022 05:17:52| BANZAI +|08/01/2022 05:17:52| |FEEL THE FLUFF| +|08/01/2022 05:17:52| |Yukarying Yukari's Yukaris| +|08/01/2022 05:17:53| |pee in the guppy bath| +|08/01/2022 05:17:53| NARUHODO +|08/01/2022 05:17:55| FLOOF +|08/01/2022 05:17:58| |STEAMY SEX WITH HANA| +|08/01/2022 05:17:58| |ENDLESS EIGHT| +|08/01/2022 05:17:59| DFC +|08/01/2022 05:17:59| |GUPPY WATER| +|08/01/2022 05:18:00| hanasemasen +|08/01/2022 05:18:03| |mako pls| +|08/01/2022 05:18:03| |NO MAKO| +|08/01/2022 05:18:03| |Fuck school| +|08/01/2022 05:18:04| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:18:05| |that can be arranged| +|08/01/2022 05:18:06| |ENTER MEXT| +|08/01/2022 05:18:06| |Saoris oppai| +|08/01/2022 05:18:07| |Can Nishi puke on my cock| +|08/01/2022 05:18:08| |NEVER WORK| +|08/01/2022 05:18:08| FLAG!! +|08/01/2022 05:18:09| MEXTERMINATOR +|08/01/2022 05:18:09| ENTER +|08/01/2022 05:18:09| |MAKO NO| +|08/01/2022 05:18:10| |mako just altered reality by willing it| +|08/01/2022 05:18:11| |Erika best grill| +|08/01/2022 05:18:11| |THANKS TL| +|08/01/2022 05:18:12| AAAAAAAAAA +|08/01/2022 05:18:12| |oh fr?| +|08/01/2022 05:18:12| |take me mako| +|08/01/2022 05:18:14| |mako jinxed it| +|08/01/2022 05:18:14| |>about that| +|08/01/2022 05:18:16| |ANON, WHICH GUPPIE YOU WANT TO TOTSUGEKI IN? | +|08/01/2022 05:18:17| TAEKO +|08/01/2022 05:18:19| UUUUUUUUUUUUUUUOOOOOOOOOOOOOO +|08/01/2022 05:18:19| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:18:19| ESPANA +|08/01/2022 05:18:20| FLAT +|08/01/2022 05:18:20| |so fucking FLAT| +|08/01/2022 05:18:23| |nice boat| +|08/01/2022 05:18:23| 3D +|08/01/2022 05:18:26| |PAIZURI WITH HANA| +|08/01/2022 05:18:26| |TONY KAKU| +|08/01/2022 05:18:27| |so many fat gup titties| +|08/01/2022 05:18:28| |>those volleyballs| +|08/01/2022 05:18:28| BOOBA +|08/01/2022 05:18:28| |ANZU HAIR BUNS AND FLAT CHEST UOOOOHHHHH| +|08/01/2022 05:18:28| |TOTSUGEKI YUKARI MY WIFE <3| +|08/01/2022 05:18:30| |>oh yeah we're just gonna shut down the school again lamo| +|08/01/2022 05:18:30| |>also don't put on any clothes please| +|08/01/2022 05:18:32| |bros i want to live in a world where the most feminine thing a girl can do is driving tanks| +|08/01/2022 05:18:34| |not good| +|08/01/2022 05:18:34| | UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 05:18:38| |DId the aspect ratio change?| +|08/01/2022 05:18:40| |KEEP OUT| +|08/01/2022 05:18:41| |NAIZURI with Jagdtpanzer| +|08/01/2022 05:18:41| |UH OHHH| +|08/01/2022 05:18:43| |I'm claiming Momo. Since no one else wants her, she'll be ALL MINE| +|08/01/2022 05:18:46| outo +|08/01/2022 05:18:47| |oh noes| +|08/01/2022 05:18:47| |KEEP FIT| +|08/01/2022 05:18:48| wtf +|08/01/2022 05:18:50| |Rip school| +|08/01/2022 05:18:51| |OH NO OOARAI BROS| +|08/01/2022 05:18:51| |Why hasn't Renta Tsuji fucked Anzu yet| +|08/01/2022 05:18:52| ??????????????? +|08/01/2022 05:18:52| >male +|08/01/2022 05:18:52| lol +|08/01/2022 05:18:53| ENTER +|08/01/2022 05:18:53| OURGUY +|08/01/2022 05:18:53| |ENTER MEXT| +|08/01/2022 05:18:55| |ENTER MALE| +|08/01/2022 05:18:57| |BREHS WE'RE IN TROUBLE| +|08/01/2022 05:18:57| MEXT +|08/01/2022 05:18:57| |hot nakadashi sex with kay!| +|08/01/2022 05:18:58| |thousands of refugees| +|08/01/2022 05:18:58| ENTER +|08/01/2022 05:18:59| |team mext lets gooooo| +|08/01/2022 05:19:00| MALE +|08/01/2022 05:19:01| ENTER +|08/01/2022 05:19:01| >male +|08/01/2022 05:19:01| |BEST BOY| +|08/01/2022 05:19:01| |i can't read| +|08/01/2022 05:19:01| azusa... +|08/01/2022 05:19:01| |WE DIDN'T MAKE IT BROS| +|08/01/2022 05:19:01| MEXT +|08/01/2022 05:19:01| |/our guy/| +|08/01/2022 05:19:01| |KEEP OUT MEANS KEEP OUT| +|08/01/2022 05:19:02| ENTER +|08/01/2022 05:19:02| |it means time for me to fuck the entire volleyball teamn| +|08/01/2022 05:19:02| /ourlad/ +|08/01/2022 05:19:02| |MEXT GUY DID NOTHING WRONG| +|08/01/2022 05:19:03| ????????????? +|08/01/2022 05:19:03| ENTER +|08/01/2022 05:19:03| KISAMA +|08/01/2022 05:19:04| ENTER +|08/01/2022 05:19:05| |TL NOTE: KEEP OUT means PANZER VOR| +|08/01/2022 05:19:05| |WHAT THE FUCK SENSHADO FEDERATION MAN| +|08/01/2022 05:19:05| ! +|08/01/2022 05:19:07| |THE MAN| +|08/01/2022 05:19:08| |MEXTFAG IS HERE| +|08/01/2022 05:19:08| INSHALLAH +|08/01/2022 05:19:08| ENTER +|08/01/2022 05:19:08| |just julius caesar him| +|08/01/2022 05:19:09| |A man!| +|08/01/2022 05:19:10| |Kill the MALE| +|08/01/2022 05:19:11| |at least 30000 displaced| +|08/01/2022 05:19:11| |Reused plot| +|08/01/2022 05:19:11| |we wooooooon| +|08/01/2022 05:19:11| M*LE +|08/01/2022 05:19:11| /ourboy/ +|08/01/2022 05:19:13| |KEEP OUT, WE NEED MORE TANK BATTLES TO FILM| +|08/01/2022 05:19:14| |THE LEGEND| +|08/01/2022 05:19:16| |OOARAI BTFO| +|08/01/2022 05:19:17| |MAN KEEPIN US DOWN| +|08/01/2022 05:19:17| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:19:20| |HE'S THE REASON WE HAVE SO MUCH GUP. KNEEL. | +|08/01/2022 05:19:21| |THANKS TL| +|08/01/2022 05:19:22| |THANKS TL| +|08/01/2022 05:19:22| |SEX WITH MEXT LESSSSSSGGGGGOOOOOOOO| +|08/01/2022 05:19:22| |THAT PLOT| +|08/01/2022 05:19:23| |thousands of homes destroyed| +|08/01/2022 05:19:23| |BASED MEXT GUY GIVING US MORE CONETNT| +|08/01/2022 05:19:24| |SCHOOLS OUT!!| +|08/01/2022 05:19:24| EHH +|08/01/2022 05:19:25| SCRAPPED +|08/01/2022 05:19:25| anzu +|08/01/2022 05:19:26| |Chad male vs virgin females| +|08/01/2022 05:19:26| |>we ran out of plot btw so heres a rehash| +|08/01/2022 05:19:27| rip +|08/01/2022 05:19:28| EXIT +|08/01/2022 05:19:29| |THE FUCKING JEWS GOT US | +|08/01/2022 05:19:29| |she sold the school for more dried sweet potatoes| +|08/01/2022 05:19:30| WHY? +|08/01/2022 05:19:31| |MEXT GUY GIVING US A SEQUEL| +|08/01/2022 05:19:31| |FUCK FUCK FUCK FUCK FUCK| +|08/01/2022 05:19:33| |he ****** anzu| +|08/01/2022 05:19:35| mextermniator +|08/01/2022 05:19:36| |No way| +|08/01/2022 05:19:36| ??????????????? +|08/01/2022 05:19:37| |stupid tankers not caring about school finances| +|08/01/2022 05:19:38| tragedy +|08/01/2022 05:19:38| |MEXT guy is gup fan| +|08/01/2022 05:19:39| |It's over| +|08/01/2022 05:19:40| |TASUJI RENTA WAS RIGHT| +|08/01/2022 05:19:41| |LMAO GET FUCKED OOARAI| +|08/01/2022 05:19:44| |we all *****ed anzu| +|08/01/2022 05:19:44| |i have changed the deal| +|08/01/2022 05:19:44| |it's fucking over...| +|08/01/2022 05:19:46| TRICKED +|08/01/2022 05:19:46| |Damn you Kikes!!!!| +|08/01/2022 05:19:48| |so was there absolutely nothing they could think of but the same thing again| +|08/01/2022 05:19:50| |MEXT DID NOTHING WRONG| +|08/01/2022 05:19:52| |Momo about to cry again| +|08/01/2022 05:19:54| |Rukia's execution has been moved| +|08/01/2022 05:19:54| |ooraitards btfo once more ;-;| +|08/01/2022 05:19:54| |show's over, bye layds| +|08/01/2022 05:19:55| |MEXT MEXT MEXT MEXT | +|08/01/2022 05:19:55| |>the kikes won| +|08/01/2022 05:19:55| |Somehow government has money to recompense all the senshado damages, but has no money to fund schools.| +|08/01/2022 05:19:56| |THEY LIED AHHHHHH| +|08/01/2022 05:19:56| |Those sexy volleyball uniforms| +|08/01/2022 05:19:56| |WOAH SRS??!?| +|08/01/2022 05:19:58| |>it was a ruse, I deceived you| +|08/01/2022 05:20:02| ratings +|08/01/2022 05:20:02| |Girl's und Homeless| +|08/01/2022 05:20:05| |WHAT AM I FIGHTING FOOOOOOOOOOOOOOOOOOOOORRRRRRRRRRRR| +|08/01/2022 05:20:05| |WHAT AM I FIGHTING FOOOAAAAAAAAAAAAAAAAAR| +|08/01/2022 05:20:06| |Senkai de rabu raibu| +|08/01/2022 05:20:08| TOTSUGEKI@ +|08/01/2022 05:20:08| |>jk lmao| +|08/01/2022 05:20:10| |you always fight for ratings| +|08/01/2022 05:20:11| |Anzu will now be hanged for corruption| +|08/01/2022 05:20:11| |ANZU RUNS A CORRUPT SLUM SYSTEM BELOW DECKS. MEXT WAS RIGHT.| +|08/01/2022 05:20:12| |Played for an absolute fool! Federationbros win again!| +|08/01/2022 05:20:13| |mext need the money| +|08/01/2022 05:20:13| |DEATH TO MEXT, DEATH TO KMM, DEATH TO ERIKA| +|08/01/2022 05:20:14| |now that the ship is gone anzu has to move in with me, oh no| +|08/01/2022 05:20:16| |DONT ASK I DONT GIVE A DAMN| +|08/01/2022 05:20:17| |ANZU A BEST| +|08/01/2022 05:20:19| |POTEMKIN BUSTER| +|08/01/2022 05:20:21| |THEY CAN'T KEEP GETTING AWAY WITH THIS!| +|08/01/2022 05:20:21| |OCCUPY OORAI| +|08/01/2022 05:20:21| |Just go to glorious German high school| +|08/01/2022 05:20:21| |she's cooking the fucking books| +|08/01/2022 05:20:22| |PIRATE CARIER| +|08/01/2022 05:20:24| |Theres an easy way for them all to make money| +|08/01/2022 05:20:24| |Sink the ship in protest| +|08/01/2022 05:20:26| |YES FIGHT, FIRE YOUR TANKS AT THEM~| +|08/01/2022 05:20:27| |All these Guppies are going to be homeless soon. Who do you take in?| +|08/01/2022 05:20:27| |Ethnic cleansing next| +|08/01/2022 05:20:29| |hang miho for losing| +|08/01/2022 05:20:30| |the jews won| +|08/01/2022 05:20:31| |>LOVE LIVE PLOT| +|08/01/2022 05:20:33| anzu +|08/01/2022 05:20:36| |SHUT IT DOWN| +|08/01/2022 05:20:39| |JUST LOOK AT MAKO'S DOCTORED RECORDS OFFICER| +|08/01/2022 05:20:39| |BECOME YOUR OWN NATION. AN OUTER HEAVEN.| +|08/01/2022 05:20:40| |"let's force 100,000 people to move out" yeah fuck that shit| +|08/01/2022 05:20:40| |wait i missed the naked darj scene| +|08/01/2022 05:20:42| |MEXT chad purging all infidels| +|08/01/2022 05:20:43| |my wife anzu is so cute| +|08/01/2022 05:20:44| |THEY KNOW SHUT IT DOWN| +|08/01/2022 05:20:44| |>sodoko only cares about power| +|08/01/2022 05:20:45| |All dreams are gone| +|08/01/2022 05:20:46| |sex with anzu| +|08/01/2022 05:20:47| |TIME TO SLUM IT UP IN A RANDOM BUILDING| +|08/01/2022 05:20:49| (((MEXT))) +|08/01/2022 05:20:50| |Prez was gambling on shitcoins | +|08/01/2022 05:20:52| |True NEETdom| +|08/01/2022 05:20:54| |the /o/fags are so based| +|08/01/2022 05:20:54| NEETO +|08/01/2022 05:20:56| |I guess we have to kill... the PRIME MINISTER| +|08/01/2022 05:20:57| |REAL NEETO| +|08/01/2022 05:20:57| |serious question, would you eat anzus period discharge| +|08/01/2022 05:20:58| |Anzu cunny!| +|08/01/2022 05:21:02| |HOMELESS NEET| +|08/01/2022 05:21:03| |They can all come live with me| +|08/01/2022 05:21:04| |REAL NEET| +|08/01/2022 05:21:07| |Rape MEXT| +|08/01/2022 05:21:07| |All those clubs will bo lost like tears in the rain| +|08/01/2022 05:21:08| |MEXTbros we might close down this school after all| +|08/01/2022 05:21:10| |gotta suck mext dick| +|08/01/2022 05:21:11| |Quick anons, how do we save oorai?????| +|08/01/2022 05:21:11| |future NEETS| +|08/01/2022 05:21:13| |Girls und Homeless| +|08/01/2022 05:21:13| |this series is so good| +|08/01/2022 05:21:14| |I'll adopt the StuG autists| +|08/01/2022 05:21:15| |They will now live my live| +|08/01/2022 05:21:15| |Real fuckin' neeto| +|08/01/2022 05:21:19| |FUCK EVERYTHING INCLUDING THE GUPS| +|08/01/2022 05:21:19| |THEY BOUGHT IT?| +|08/01/2022 05:21:20| |THE LEADERSHIP OF MEXT IS SHUTTING DOWN SCHOOLSHIPS IN ORDER TO MAKE THE FREAKEN' FROGS GAY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 05:21:22| |IDEA! LETS DO THE SAME SHIT AGAIN!| +|08/01/2022 05:21:24| |pls adopt a homeless GuPie today| +|08/01/2022 05:21:26| FLOOF +|08/01/2022 05:21:29| |they gups should sell their bodies on the streets| +|08/01/2022 05:21:29| |I'm betting the farm on this MEXT plan| +|08/01/2022 05:21:29| FROGS +|08/01/2022 05:21:31| MEXT +|08/01/2022 05:21:33| |Girls und Brothel| +|08/01/2022 05:21:39| anzu +|08/01/2022 05:21:39| |Bunny team can share my room| +|08/01/2022 05:21:40| |They have a fucking tank. They can't tell them what to do.| +|08/01/2022 05:21:41| |I second that plan| +|08/01/2022 05:21:42| |YOU CAN TAKE OUR LIVES BUT YOU WILL NEVER TAKE OUR TANKS| +|08/01/2022 05:21:44| SOBER +|08/01/2022 05:21:44| |Girls und Camping| +|08/01/2022 05:21:45| |Momo >>> Anzu| +|08/01/2022 05:21:46| |I get Saki| +|08/01/2022 05:21:47| |Girls und Sobriety| +|08/01/2022 05:21:48| SHALL +|08/01/2022 05:21:49| |>i never thought saying goodbye was how i'd say goodbye| +|08/01/2022 05:21:51| |Kamurocho needs more hostess| +|08/01/2022 05:21:52| |Press R to rape Anzu now| +|08/01/2022 05:21:54| |GUPPIE INSURRECTION WHEN| +|08/01/2022 05:21:55| R +|08/01/2022 05:21:55| |Girls und Society| +|08/01/2022 05:21:55| |I can save them... | +|08/01/2022 05:21:56| R +|08/01/2022 05:21:57| ;_;7 +|08/01/2022 05:21:57| |packu appu| +|08/01/2022 05:21:58| NOT +|08/01/2022 05:21:58| |R BUT GENTLY | +|08/01/2022 05:21:59| R +|08/01/2022 05:22:00| USAGI +|08/01/2022 05:22:00| rabbits +|08/01/2022 05:22:01| |What episode is this?| +|08/01/2022 05:22:01| |I'll take in all the loli gruppies| +|08/01/2022 05:22:02| |RIP future budget| +|08/01/2022 05:22:02| BE +|08/01/2022 05:22:03| |cute bunnies| +|08/01/2022 05:22:05| |Girls und unemployment| +|08/01/2022 05:22:07| |But heir MBT woul;d wreck their WW2 relics| +|08/01/2022 05:22:10| CLOSED +|08/01/2022 05:22:12| |PRESS B TO BECOME ANZU'S CHAIR| +|08/01/2022 05:22:13| |It's the 1st movie| +|08/01/2022 05:22:14| |bunny cunnies| +|08/01/2022 05:22:14| |all guppies under 5 ft have a home with me| +|08/01/2022 05:22:15| |GIRLS UND ARBEITO| +|08/01/2022 05:22:15| B +|08/01/2022 05:22:16| B +|08/01/2022 05:22:18| V +|08/01/2022 05:22:18| |Remember girls, steal anything that isn't nailed down| +|08/01/2022 05:22:18| AZUSAAAAA +|08/01/2022 05:22:18| B +|08/01/2022 05:22:19| |b b b b bbb| +|08/01/2022 05:22:20| |Voleyball club's resurrection...| +|08/01/2022 05:22:21| CLANGED +|08/01/2022 05:22:21| |Cunny rabbit| +|08/01/2022 05:22:22| B +|08/01/2022 05:22:22| B +|08/01/2022 05:22:25| |You can tell who's drunk| +|08/01/2022 05:22:27| |Bunnies and cunny and cunny bunnies ToT| +|08/01/2022 05:22:28| SHIROTABI +|08/01/2022 05:22:28| |Girls und Freeter| +|08/01/2022 05:22:28| |Noriko will have to sell his body to onee-sans now!| +|08/01/2022 05:22:31| |no more morals| +|08/01/2022 05:22:31| |Girls und Arbeit Macht Frei| +|08/01/2022 05:22:31| |VAREBU 4EVAR!| +|08/01/2022 05:22:33| |the sign was nailed down and they took that too| +|08/01/2022 05:22:34| jannies +|08/01/2022 05:22:35| |I ant to become anzus chair but I am ropulused aby press newfdagh presddffffffffffffffff| +|08/01/2022 05:22:37| |my life...| +|08/01/2022 05:22:39| |>Imagiune not being drunk right nowe| +|08/01/2022 05:22:39| |CLEAN IT UP| +|08/01/2022 05:22:40| |>he isn't looting literally everything on the ship that isn't bolted dowwn NGMI| +|08/01/2022 05:22:40| |TAKE THE GATE| +|08/01/2022 05:22:43| |NOW... I'VE LOST IT| +|08/01/2022 05:22:44| F +|08/01/2022 05:22:46| TAEKO +|08/01/2022 05:22:47| F +|08/01/2022 05:22:47| F +|08/01/2022 05:22:47| DRIFTO +|08/01/2022 05:22:50| |SODOKO IS DEAD| +|08/01/2022 05:22:50| bonk +|08/01/2022 05:22:51| |fucking died| +|08/01/2022 05:22:54| USAGIS +|08/01/2022 05:22:54| |Girls und Arbeitslose| +|08/01/2022 05:22:54| |WAIT THIS IS LIKE THE ONLY SCHOOL ON THIS BOAT HOW CAN SHUT IT DOWN| +|08/01/2022 05:22:55| |Girls und real War| +|08/01/2022 05:22:55| |GAS GAS GAS| +|08/01/2022 05:22:55| |dibs on the thirty foot diameter cannons| +|08/01/2022 05:22:56| rip +|08/01/2022 05:22:56| DORIFUTO +|08/01/2022 05:22:56| |Take everything that isn't nailed down.| +|08/01/2022 05:22:57| |*EUROBEAT PLAYS IN THE DISTANCE*| +|08/01/2022 05:22:57| |SPEEDY SPEED BPY| +|08/01/2022 05:22:58| |GAS GAS GAS| +|08/01/2022 05:22:58| |BASED CARFAGS| +|08/01/2022 05:22:58| |AZUSA NOO| +|08/01/2022 05:23:00| |NIGHT OF FIRE| +|08/01/2022 05:23:00| |>V8 dound| +|08/01/2022 05:23:00| |this is what happens when you drink and drive| +|08/01/2022 05:23:02| |bunny cunnies' bunnies| +|08/01/2022 05:23:02| |NIGHT ON FIRE| +|08/01/2022 05:23:03| DRIFTO +|08/01/2022 05:23:04| |Girls und GI Bill| +|08/01/2022 05:23:04| DRIFt +|08/01/2022 05:23:05| |final acceleration to the jewish question| +|08/01/2022 05:23:05| whao! +|08/01/2022 05:23:05| Dorifto +|08/01/2022 05:23:06| DORIFUTOOOO +|08/01/2022 05:23:06| | /o/'s year baby| +|08/01/2022 05:23:06| |based night drive| +|08/01/2022 05:23:07| |GAS GAS GAS| +|08/01/2022 05:23:07| |GAS GAS GAS| +|08/01/2022 05:23:07| |THE WHOLE BOAT IS SHUTTING DOWN| +|08/01/2022 05:23:07| |IM GONNA STEP ON THE GAS| +|08/01/2022 05:23:09| |Deja vu!| +|08/01/2022 05:23:12| |DRFT MY COCK| +|08/01/2022 05:23:13| |GAS GA S AGSS| +|08/01/2022 05:23:13| |GAS GAS GAS| +|08/01/2022 05:23:13| DORIFUTO +|08/01/2022 05:23:13| |IM BURNIG UP FOR YOU| +|08/01/2022 05:23:13| |GAS GAS| +|08/01/2022 05:23:14| |>ywn get an initial d spinoff with leopons| +|08/01/2022 05:23:15| kek +|08/01/2022 05:23:15| |WHEELPOWER AND GO| +|08/01/2022 05:23:16| |DEJA VU| +|08/01/2022 05:23:16| |Girls und PMC| +|08/01/2022 05:23:16| |I might just take a walk| +|08/01/2022 05:23:17| who?? +|08/01/2022 05:23:17| |Mexicans stealing another caR| +|08/01/2022 05:23:17| |fucking hugboxes| +|08/01/2022 05:23:17| >male +|08/01/2022 05:23:18| |WE LIVE IN A SOCIETY.| +|08/01/2022 05:23:19| DORIFUTO +|08/01/2022 05:23:21| GAYMAN +|08/01/2022 05:23:22| >vidya +|08/01/2022 05:23:24| 'tism +|08/01/2022 05:23:26| |No more homes| +|08/01/2022 05:23:29| >male +|08/01/2022 05:23:29| Mogged +|08/01/2022 05:23:30| |based dad| +|08/01/2022 05:23:32| |game looks like shit tbh| +|08/01/2022 05:23:32| betrayal +|08/01/2022 05:23:33| mummy!! +|08/01/2022 05:23:35| |based slave| +|08/01/2022 05:23:37| |Poor struggling business owner| +|08/01/2022 05:23:38| |cute floof| +|08/01/2022 05:23:39| |hes always shouting| +|08/01/2022 05:23:41| |>men arent allowed to live on land| +|08/01/2022 05:23:41| |OJOU NO GAKKOU DA| +|08/01/2022 05:23:42| |RIP BOZOS| +|08/01/2022 05:23:44| |Yukari-mom too good for this world| +|08/01/2022 05:23:47| |you just know| +|08/01/2022 05:23:47| |RIP BOZOS| +|08/01/2022 05:23:48| |THE WHOLE BOAT IS THE SCHOOL FOR THOSE WHO STILL DONT GET IT| +|08/01/2022 05:23:51| |I like Yukari| +|08/01/2022 05:23:57| CUUUUUUUUUUUUUUUUUUTE +|08/01/2022 05:23:59| |I like Anzu| +|08/01/2022 05:24:01| |suicide via smothering| +|08/01/2022 05:24:02| CTU +|08/01/2022 05:24:03| |What about the Shark team | +|08/01/2022 05:24:04| |Men will be shot as the ship is decommisnioned| +|08/01/2022 05:24:05| boko +|08/01/2022 05:24:06| |i am anzu| +|08/01/2022 05:24:07| |THEY"RE TARGETING SMALL BUSINESS OWNERS BECAUSE THEY're BASED| +|08/01/2022 05:24:10| |I like all of them, except Erika| +|08/01/2022 05:24:12| |shark? more like shart| +|08/01/2022 05:24:12| |Commit sudoku| +|08/01/2022 05:24:14| |>you will never sleep the day away with Mako| +|08/01/2022 05:24:14| |are you actually anzu| +|08/01/2022 05:24:17| iktf... +|08/01/2022 05:24:17| Bokosexual +|08/01/2022 05:24:18| |I'm actually leaking | +|08/01/2022 05:24:19| |Sad Boko| +|08/01/2022 05:24:19| |im going to cum on her pillow and make it shatter| +|08/01/2022 05:24:19| |ERIKA BEST GuP| +|08/01/2022 05:24:20| |BROS WE CAN"T LIVE ON LAND I JUST CAN"T| +|08/01/2022 05:24:20| |I like Erika, no one else| +|08/01/2022 05:24:22| |shut down due to COVID| +|08/01/2022 05:24:22| |mext support big business | +|08/01/2022 05:24:23| |I like all of them especially Erika | +|08/01/2022 05:24:24| D: +|08/01/2022 05:24:24| |With that, Boko suffocated.| +|08/01/2022 05:24:25| |I'm going to fuck you| +|08/01/2022 05:24:25| |Never get verbal agreements kids| +|08/01/2022 05:24:25| |I was the monster... all along?| +|08/01/2022 05:24:27| |Every man not working on a ship is drafted into the massive giga war happening in the asian continent| +|08/01/2022 05:24:27| |Shark Team are currently smuggling 10,000 kilos of coke into North America| +|08/01/2022 05:24:28| |yes it is I, your wife, anzu| +|08/01/2022 05:24:28| ((((((MEXT)))))))) +|08/01/2022 05:24:30| |yeah but what about the engineering gnomes(lolis) that live in the bowels of the ship and maintain it?????| +|08/01/2022 05:24:30| |by me| +|08/01/2022 05:24:32| AZUSA +|08/01/2022 05:24:34| |I HATE THIS I HATE THIS I HATE THIS NO SAD| +|08/01/2022 05:24:34| KMMext +|08/01/2022 05:24:35| |DAYS OF DASH| +|08/01/2022 05:24:36| |Johannesburg..... we can't let them do this...| +|08/01/2022 05:24:36| |holy shit real life anzu inside my computer| +|08/01/2022 05:24:38| |girly run lmao| +|08/01/2022 05:24:38| |LOOK AT THAT DORK RUN| +|08/01/2022 05:24:39| |Miho with the lanky run| +|08/01/2022 05:24:39| |HI SZUSA| +|08/01/2022 05:24:41| |Grand Theft Sensha| +|08/01/2022 05:24:43| AZUSAA!!!!! +|08/01/2022 05:24:44| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:24:48| |What a scrapyard| +|08/01/2022 05:24:52| |HELP anzu is climing out of my screen| +|08/01/2022 05:24:56| |Doing hood-rat shit with your tomodachi...| +|08/01/2022 05:24:56| |My wives| +|08/01/2022 05:24:58| nice +|08/01/2022 05:24:58| |needs more panthers| +|08/01/2022 05:25:00| |morals committee looting the placard| +|08/01/2022 05:25:02| |W-why am I crying| +|08/01/2022 05:25:02| |Use the tanks to conquer the school. Become pirates.| +|08/01/2022 05:25:05| |mass suicide with panzers!| +|08/01/2022 05:25:08| |Stug life...| +|08/01/2022 05:25:10| :'( +|08/01/2022 05:25:11| CUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 05:25:14| |Panzer Nomore| +|08/01/2022 05:25:14| |AMERICA! FUCK YEAH!| +|08/01/2022 05:25:14| |I wish Anzu were climingout of my screen| +|08/01/2022 05:25:14| |Riot with tanks| +|08/01/2022 05:25:15| |guppies must resort to stealing shoes in detroit with the sug| +|08/01/2022 05:25:16| T_T +|08/01/2022 05:25:17| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:19| o7 +|08/01/2022 05:25:20| naked +|08/01/2022 05:25:20| |i will sponsor oorai, but they will have to paint their tanks in my company's colors| +|08/01/2022 05:25:20| |BASED BURGERS| +|08/01/2022 05:25:20| |saunders earrape| +|08/01/2022 05:25:21| |USA USA USA USA USA USA| +|08/01/2022 05:25:21| |pirates you say? that gives me an idea...| +|08/01/2022 05:25:22| |USA USA USA| +|08/01/2022 05:25:22| |AMERICANS SAVE THE DAY| +|08/01/2022 05:25:23| |USA USA USA USA USA USA USA| +|08/01/2022 05:25:23| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:24| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:24| |USA USA USA USA USA USA| +|08/01/2022 05:25:24| o7 +|08/01/2022 05:25:24| |AMERICA FUCK YEAH| +|08/01/2022 05:25:24| |USA USA USA USA USA USA| +|08/01/2022 05:25:26| Amurika +|08/01/2022 05:25:26| |REAL AMERICAN HEROES| +|08/01/2022 05:25:26| ENTER +|08/01/2022 05:25:27| AAAAAAAAAAAAAAAMMMMMMMEEEEEEERRRRRIIIIIIICCCCCCCAAAAAAAAA +|08/01/2022 05:25:27| |USA USA USA USA USA DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:25:28| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:28| |usa usa usa| +|08/01/2022 05:25:28| |USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:28| | USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:29| |USA USA USA USA| +|08/01/2022 05:25:29| |OVER HILL OVER DALE| +|08/01/2022 05:25:30| |U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A !| +|08/01/2022 05:25:30| |HERE COMES THE CAVALRY| +|08/01/2022 05:25:30| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:30| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:31| |BURGER TIMEE!!| +|08/01/2022 05:25:32| |USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 05:25:32| |Ugh, fucking burgers| +|08/01/2022 05:25:33| |AMERICAN AIR SUPERIORITY| +|08/01/2022 05:25:33| |U S A U S A U S A U S A U S A U S A U S A U S A U S A U S A U S A | +|08/01/2022 05:25:33| |SUDDENLY YANK TERRORISTS| +|08/01/2022 05:25:33| |USA USA USA USA| +|08/01/2022 05:25:34| |usa USA| +|08/01/2022 05:25:34| MURICA +|08/01/2022 05:25:34| |USA USA USA USA USA| +|08/01/2022 05:25:35| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:35| |America's taking your shit| +|08/01/2022 05:25:36| |USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +|08/01/2022 05:25:36| BURGERS +|08/01/2022 05:25:36| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:36| |I HATE AMERICAA| +|08/01/2022 05:25:36| |Enter the sexiest guppie| +|08/01/2022 05:25:36| |USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:37| |PUTTING BASED IN CARRIER BASED| +|08/01/2022 05:25:38| |USA USA USA USA| +|08/01/2022 05:25:38| AMERICAAAAAA +|08/01/2022 05:25:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:40| USA +|08/01/2022 05:25:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:40| |THERES A GUN ON MY SCREEN| +|08/01/2022 05:25:40| | USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:41| |DOG BLESS AMERIGA| +|08/01/2022 05:25:41| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:41| |USA USA USA USA USA USA| +|08/01/2022 05:25:42| |USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +|08/01/2022 05:25:42| |QUICK HID THE OIL| +|08/01/2022 05:25:42| |COME TO SAVE THE MOTHERFUCKING DAY YEAH| +|08/01/2022 05:25:42| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:42| |U S A U S A U S A U S A U S A U S A U S A U S A| +|08/01/2022 05:25:42| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:43| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:43| |HI HI HE IN THE FIELD ARTILLERY| +|08/01/2022 05:25:43| |USA ALL THE WAY| +|08/01/2022 05:25:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:44| |U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! U S A ! | +|08/01/2022 05:25:45| |I CLAPPED| +|08/01/2022 05:25:46| |VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA | +|08/01/2022 05:25:46| |i hate america| +|08/01/2022 05:25:46| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:46| |FUCK YEAH| +|08/01/2022 05:25:46| USA +|08/01/2022 05:25:47| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:47| |HEARD YOU GIRLS WERE IN NEED OF SOME FREEDOM!| +|08/01/2022 05:25:47| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:48| |SUPA GALASHI DESU| +|08/01/2022 05:25:48| |SEMEN SHIPMENTS INCOMING| +|08/01/2022 05:25:48| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:50| AMERICA +|08/01/2022 05:25:51| |i wish i had a recreational c-5| +|08/01/2022 05:25:51| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:52| |Orai to poor to buy fighters| +|08/01/2022 05:25:52| |ENEMY AC-130 ABOVE| +|08/01/2022 05:25:52| |VSA VSA VSA | +|08/01/2022 05:25:53| |SANDASU SUPA GALAXUY| +|08/01/2022 05:25:53| |America bought you out| +|08/01/2022 05:25:54| |USA USA USA US AUAS USA UAS USA USA USA USA USA USA UAS USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:25:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:54| |USA USA USA USA USA USA| +|08/01/2022 05:25:55| |the cia is after mext| +|08/01/2022 05:25:55| |SUPA GALAXY| +|08/01/2022 05:25:55| |US KAY| +|08/01/2022 05:25:56| |I LOST ALL OF MY TANKS IN A BOATING ACCIDENT| +|08/01/2022 05:25:56| |DID I HEAR OIL? THAT SHIT MINE| +|08/01/2022 05:25:56| |Fuel Air Bomb deployed| +|08/01/2022 05:25:56| |DAIJOUBU NAN DESUKA| +|08/01/2022 05:25:57| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:25:59| USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +|08/01/2022 05:26:00| |>saunders of all shits| +|08/01/2022 05:26:00| |USA USA USA USA| +|08/01/2022 05:26:01| |SHII GO-EMU!| +|08/01/2022 05:26:01| |ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTAD| +|08/01/2022 05:26:02| |USA USA USA USA USA USA| +|08/01/2022 05:26:03| |so why are 16 year olds piloting a cargo plane| +|08/01/2022 05:26:03| ANZU +|08/01/2022 05:26:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:04| |STEALING IS WRONG!| +|08/01/2022 05:26:05| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:05| |lol we lost the tonks lmao| +|08/01/2022 05:26:05| |We're here to liberate your tanks!| +|08/01/2022 05:26:05| |kept yo uwaiting huh?| +|08/01/2022 05:26:05| |ARISA I LOVE YOUUUU| +|08/01/2022 05:26:06| """""lost""""" +|08/01/2022 05:26:06| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:26:07| |HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY HOWDY | +|08/01/2022 05:26:07| |THANK YOU THANK YOU| +|08/01/2022 05:26:07| SANKYU +|08/01/2022 05:26:09| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:09| |tragic boating accident| +|08/01/2022 05:26:09| |VSA VSA VSA | +|08/01/2022 05:26:09| |JOINING THE KAY KAY KAY| +|08/01/2022 05:26:11| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:12| |CIA interfering with sensado| +|08/01/2022 05:26:13| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:13| |DAILY FLYBYS OVER NAGASAKI| +|08/01/2022 05:26:13| |raving Anzu| +|08/01/2022 05:26:14| |SANKYUU SANKYUU| +|08/01/2022 05:26:14| |Yeah we just lost all of our tanks | +|08/01/2022 05:26:14| |HARRY APU| +|08/01/2022 05:26:15| |ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTADOS UNIDOS ESTAD| +|08/01/2022 05:26:15| Sankyuu +|08/01/2022 05:26:16| |I LOVE KAY| +|08/01/2022 05:26:16| |COMING AGAIN TO SAVE THE MOTHERFUCKING SAY YEAH| +|08/01/2022 05:26:16| |My nice wife Kay is so helpful!| +|08/01/2022 05:26:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:17| |hari ap| +|08/01/2022 05:26:18| |Hurrah Uppu| +|08/01/2022 05:26:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:19| |I am Arisa's boyfriend. Ask me anything.| +|08/01/2022 05:26:19| |sank you sank you| +|08/01/2022 05:26:21| SANKYUUU +|08/01/2022 05:26:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:22| |For once, Freedom is Free| +|08/01/2022 05:26:23| 39 +|08/01/2022 05:26:23| |AND THE ARMY GOES ROLLING ALONG| +|08/01/2022 05:26:25| |what a tragic boating accident mr mext| +|08/01/2022 05:26:28| |It ain't theft; it's appropriation| +|08/01/2022 05:26:28| |Spank Arisa Y/Y| +|08/01/2022 05:26:29| |USA USA USA USA| +|08/01/2022 05:26:30| |How is someonme as thic as Kay only 16 yers| +|08/01/2022 05:26:31| |>THE SILVERPLATES ARE HERE AGAIN!| +|08/01/2022 05:26:32| |Why did you dump her?| +|08/01/2022 05:26:32| |MERICA INTERFERING IN OTHERS AFFAIRS| +|08/01/2022 05:26:33| |o7 I LOVE AMERICA| +|08/01/2022 05:26:33| |Reaching 30k danmaku | +|08/01/2022 05:26:35| |Why is Arisa a shitter?| +|08/01/2022 05:26:35| |does Kay smuggle cocaine between ships to fuel Saunder's immense budget?| +|08/01/2022 05:26:36| |USS LIBERTY| +|08/01/2022 05:26:36| |FIREBOMBING CHI-HAI TAN EVERY DAY| +|08/01/2022 05:26:37| |MIHO, I'M MEXT| +|08/01/2022 05:26:37| |Overloaded C5| +|08/01/2022 05:26:37| Y +|08/01/2022 05:26:41| |I'm off to sleep, it's been fun| +|08/01/2022 05:26:42| |>they never bring them back| +|08/01/2022 05:26:43| |Remember to steal the copper from the walls!| +|08/01/2022 05:26:45| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:26:45| |kAY IS AMERICAN THATS WHY SHE'S THICK| +|08/01/2022 05:26:45| |o7 Godspeed| +|08/01/2022 05:26:47| |yes mext that's right, a boating accident| +|08/01/2022 05:26:48| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:26:48| |Takeshi has fucked every girl im Saunders except Alisa| +|08/01/2022 05:26:49| |goodnight anon| +|08/01/2022 05:26:50| |CRASHING THIS PLANE| +|08/01/2022 05:26:50| |why is saunders flying so close to the towers?| +|08/01/2022 05:26:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:51| |REMINDER HIGH SCHOOL GIRLS HAVE A PILOTS LICENSE| +|08/01/2022 05:26:52| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:26:53| |CARBON COATED C5 ENGINES| +|08/01/2022 05:26:53| |All our sensha were lost in a tragic boating accident, ATF BTFO| +|08/01/2022 05:26:54| |200m takeoff roll| +|08/01/2022 05:26:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:55| |Lease lend| +|08/01/2022 05:26:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:57| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:26:57| |RAMIREZ, THERE'S A STINGER ON THE ROOF OF THAT BURGET TOWN, GET TO IT| +|08/01/2022 05:26:57| USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +|08/01/2022 05:27:00| |WITH NO SURVIVORS| +|08/01/2022 05:27:00| |WHY WOULD YOU SHOOT A TANK BEFORE THROWING IT OUT OF APLNE| +|08/01/2022 05:27:01| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:27:01| ' +|08/01/2022 05:27:02| |they're never getting those tanks back| +|08/01/2022 05:27:03| |THE RIGHT FOR GUPPIES TO OWN TANKS SHALL NOT BE INFRINGED| +|08/01/2022 05:27:03| |Carbon Coated planes| +|08/01/2022 05:27:03| |protect Anzus flat chest| +|08/01/2022 05:27:04| |I HAVE 15 TANKS LEFT BECAUSE I LIED TO THOSE COMMIE BASTARDS| +|08/01/2022 05:27:05| |Takeshi is a lucky man| +|08/01/2022 05:27:06| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:27:08| |TANKS PROTECTED| +|08/01/2022 05:27:11| |they should've released them in the ocean | +|08/01/2022 05:27:12| |RAMIREZ, MOVE YOUR ASS!| +|08/01/2022 05:27:13| |How do you "lose" a tank?| +|08/01/2022 05:27:13| |THEY GIVE THEM BACK RIGHT?| +|08/01/2022 05:27:13| |I saw GUTS| +|08/01/2022 05:27:15| |>surrendering your guns| +|08/01/2022 05:27:15| |I love carbon coated takeoff rolls| +|08/01/2022 05:27:18| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:27:21| ;_; +|08/01/2022 05:27:22| |THANKS TL| +|08/01/2022 05:27:23| |THX TL| +|08/01/2022 05:27:25| |tanks tl| +|08/01/2022 05:27:26| |my bladder is exploding| +|08/01/2022 05:27:27| ;-; +|08/01/2022 05:27:28| |ty tl| +|08/01/2022 05:27:28| |you lose a tank just like i lost all my guns ina boating accident| +|08/01/2022 05:27:28| SAYONARA +|08/01/2022 05:27:30| |They lost all of them on the boat somehow to begin with| +|08/01/2022 05:27:30| |THE END| +|08/01/2022 05:27:30| |THANKS TL| +|08/01/2022 05:27:32| |>entrusting your entire army to americans| +|08/01/2022 05:27:32| TOOOOOOOOOOOOOOT +|08/01/2022 05:27:33| |boko is still on the ship turn back!| +|08/01/2022 05:27:34| |TL Note: Mext is Sext| +|08/01/2022 05:27:34| ;_; +|08/01/2022 05:27:35| |Go piss purpleanon| +|08/01/2022 05:27:35| |TL NOTE: ANZU IS MY LOVING WIFE| +|08/01/2022 05:27:35| Anzu +|08/01/2022 05:27:36| |pretend slut| +|08/01/2022 05:27:36| |Go pee anon| +|08/01/2022 05:27:39| |Yukari is moving in with me by the way| +|08/01/2022 05:27:41| ARIGATOU +|08/01/2022 05:27:42| |a terrible day for rain| +|08/01/2022 05:27:42| |WHATS GONNA HAPPEN NEXT| +|08/01/2022 05:27:42| |tanks tl| +|08/01/2022 05:27:44| |Pretty sad ending tbh, | +|08/01/2022 05:27:44| |cute bunnies| +|08/01/2022 05:27:45| ;_;7 +|08/01/2022 05:27:45| TOOOOOOOOOOOOOT +|08/01/2022 05:27:46| |sayonara Zuikaku ;_;| +|08/01/2022 05:27:46| |shouldve pissed during the intermission| +|08/01/2022 05:27:46| ;_;7 +|08/01/2022 05:27:46| |CONCENTRATION CAMP ARC| +|08/01/2022 05:27:47| |>boyfriend SLUT| +|08/01/2022 05:27:49| |Well at least it's not raining| +|08/01/2022 05:27:49| |imagine the smell beneath those bunny cunny skirts| +|08/01/2022 05:27:49| SAYONARA~! +|08/01/2022 05:27:50| |Don't worry, they'll make a shitty rip off anime about you| +|08/01/2022 05:27:51| |how tf they even scrap that| +|08/01/2022 05:27:51| ;____________; +|08/01/2022 05:27:51| SAYOUNARA +|08/01/2022 05:27:52| |damn this is some shat shit| +|08/01/2022 05:27:52| |It's raining| +|08/01/2022 05:27:53| |COME BACK I CANT LEAVE WITHOUT YOU| +|08/01/2022 05:27:53| |autism sounds| +|08/01/2022 05:27:54| |Ikanaide ;___;7| +|08/01/2022 05:27:54| |AZSAAA :;_;| +|08/01/2022 05:27:54| ;_;7 +|08/01/2022 05:27:55| ;-;7 +|08/01/2022 05:27:56| SAYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:27:57| BRAZIL +|08/01/2022 05:27:57| |MY HOME ;_;| +|08/01/2022 05:27:58| ;__; +|08/01/2022 05:27:58| SAYONARA +|08/01/2022 05:27:58| |Saki not cheering| +|08/01/2022 05:27:59| magic +|08/01/2022 05:27:59| ;_; +|08/01/2022 05:28:00| |autist in the back| +|08/01/2022 05:28:00| ;_;7 +|08/01/2022 05:28:00| ;-; +|08/01/2022 05:28:01| ;__;7 +|08/01/2022 05:28:01| F +|08/01/2022 05:28:01| ;_________________; +|08/01/2022 05:28:01| ;_; +|08/01/2022 05:28:01| |fact: THE GNOMES(ENGINEER LOLIS) ARE STILL ON THE SHIP AND WON'T LEAVE| +|08/01/2022 05:28:02| SAYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:28:02| SAYONARAAAAAAAAAAAAAAAA +|08/01/2022 05:28:02| SYONARARARARARAR +|08/01/2022 05:28:02| ;_; +|08/01/2022 05:28:03| ;_;7 +|08/01/2022 05:28:03| ;_;7 +|08/01/2022 05:28:05| ;_;7 +|08/01/2022 05:28:05| |"Fuck the Fed" - Oarai High School| +|08/01/2022 05:28:06| |jews did this| +|08/01/2022 05:28:06| |SAYONARA ;_______________________;7| +|08/01/2022 05:28:07| |I-is it raining? ;_;| +|08/01/2022 05:28:07| fwip +|08/01/2022 05:28:07| SAYONARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:28:08| ;_;7 +|08/01/2022 05:28:08| サヨウナラ +|08/01/2022 05:28:08| |Literally ruined by autistic flag shit| +|08/01/2022 05:28:09| |WAVE THE FLAG| +|08/01/2022 05:28:09| |Only the tanks girls lived on the boat?| +|08/01/2022 05:28:09| ;_; +|08/01/2022 05:28:09| SAYONARAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:28:11| ;_; +|08/01/2022 05:28:11| ;_; +|08/01/2022 05:28:12| |It's raining| +|08/01/2022 05:28:16| |The shark team is still onboard| +|08/01/2022 05:28:17| |ya it's raining| +|08/01/2022 05:28:20| |THESE ARE WIERD TANKS| +|08/01/2022 05:28:21| |FIRST 911 AND NOW THIS | +|08/01/2022 05:28:22| |good night sweet prince| +|08/01/2022 05:28:22| |Saki is too autistic to understand what's happening | +|08/01/2022 05:28:22| BANSISHED +|08/01/2022 05:28:23| |JEWS could be here, he thought.| +|08/01/2022 05:28:24| |Landlocked like peasants now| +|08/01/2022 05:28:27| |that ship is worth more than 80% of the world's nations| +|08/01/2022 05:28:31| |Going to Chernobyl be like| +|08/01/2022 05:28:32| |what kind of tanks are these| +|08/01/2022 05:28:32| BUFFERING +|08/01/2022 05:28:33| |Girls and Buses| +|08/01/2022 05:28:35| |TO THE CAMPS| +|08/01/2022 05:28:38| |TL NOTE: Anzu is Renta's cunnywife| +|08/01/2022 05:28:40| |Weird-looking tanks...| +|08/01/2022 05:28:41| |50000 tanks used to live here| +|08/01/2022 05:28:41| |>there are landlubbers watching this stream| +|08/01/2022 05:28:42| |everyone is based| +|08/01/2022 05:28:44| BUSSY +|08/01/2022 05:28:44| |CAMPS AND MAKE EM LAMPS| +|08/01/2022 05:28:45| |Life is about losing friends you see| +|08/01/2022 05:28:46| |panzer tl| +|08/01/2022 05:28:48| |we /n/ now| +|08/01/2022 05:28:50| |>Sorted based on their clubs| +|08/01/2022 05:28:52| |Bros, we're homeless... like Jews...| +|08/01/2022 05:28:53| |they are going to the camps| +|08/01/2022 05:28:54| |retard shit| +|08/01/2022 05:28:55| |WE GAAAN| +|08/01/2022 05:28:55| |CAMP ARC| +|08/01/2022 05:28:56| |doubly landlocked mating press with the entire oorai student body| +|08/01/2022 05:28:57| |This entire evacuation thing reminds me of chernobyl to be honest and I'm glad someone said it before me| +|08/01/2022 05:28:57| |Bus sex with Anzu uoh]| +|08/01/2022 05:28:57| HUNGRY +|08/01/2022 05:28:58| |girls und buses| +|08/01/2022 05:28:58| |fat fuck lol| +|08/01/2022 05:28:59| ;_; +|08/01/2022 05:29:00| |>A LAND SCHOOL| +|08/01/2022 05:29:04| |Saorio you fat fuck| +|08/01/2022 05:29:04| |Damn this reminds me the final epsiode of that cute girls manning a destroyer anime| +|08/01/2022 05:29:04| |never forget the shoah oy vey| +|08/01/2022 05:29:05| |can those buses deflect 75mm rounds/| +|08/01/2022 05:29:06| |panzer camp| +|08/01/2022 05:29:07| |let's eat snacks together, anons| +|08/01/2022 05:29:07| |Pack all your stuff, but you have to leave it on the boat. What the hell, MEXT?| +|08/01/2022 05:29:10| |Girls und Lumberjacking| +|08/01/2022 05:29:10| |Girls Und Concentration Camp| +|08/01/2022 05:29:13| |>land school| +|08/01/2022 05:29:14| |Wilkommen in den Konzentratzionslager| +|08/01/2022 05:29:15| |Momo dumb| +|08/01/2022 05:29:19| |Girls und Dachau| +|08/01/2022 05:29:20| |>nobody will ever ask you whether you're diejobuh| +|08/01/2022 05:29:21| |ANZU WILL SAVE US BROS| +|08/01/2022 05:29:21| |>he goes to school on land| +|08/01/2022 05:29:23| |Girls und Dormitories| +|08/01/2022 05:29:24| |"LAND SCHOOL"| +|08/01/2022 05:29:26| |ARBEIT MACHT FREI| +|08/01/2022 05:29:28| |Anzu always thinks of something| +|08/01/2022 05:29:30| |>land plebs| +|08/01/2022 05:29:30| |All these nameless cuties| +|08/01/2022 05:29:31| |where are their parents?| +|08/01/2022 05:29:31| |wife material| +|08/01/2022 05:29:32| BUTT +|08/01/2022 05:29:33| butt +|08/01/2022 05:29:35| |pekoe, have you heard the saying "work will set you free"?| +|08/01/2022 05:29:36| |Yukari is strong and cute| +|08/01/2022 05:29:36| |Girls Und Sp*m| +|08/01/2022 05:29:36| butt +|08/01/2022 05:29:36| BUTT +|08/01/2022 05:29:37| |SCHOOL GIRLS.....EROTIC| +|08/01/2022 05:29:37| |I always think of Anzu| +|08/01/2022 05:29:38| |BUTT spotted| +|08/01/2022 05:29:39| |Are you daijoubu, anon?| +|08/01/2022 05:29:40| |she likes humming that song huh| +|08/01/2022 05:29:40| BUTT +|08/01/2022 05:29:40| |WHEN JOHNNY COMES MARCHING HOME AGAIN| +|08/01/2022 05:29:41| |CUTE YUKARIN| +|08/01/2022 05:29:42| sausage... +|08/01/2022 05:29:42| |Floof best girl| +|08/01/2022 05:29:45| ;_; +|08/01/2022 05:29:52| ;__; +|08/01/2022 05:29:54| |wh-where'd every one?| +|08/01/2022 05:29:55| |YUKARI LEGS| +|08/01/2022 05:29:58| |>literally can see the see right now| +|08/01/2022 05:29:58| |And we'll all feel gay when | +|08/01/2022 05:29:58| |>BEING A HILL PLEB| +|08/01/2022 05:29:59| |BASED BURGERS| +|08/01/2022 05:29:59| |i hate land| +|08/01/2022 05:30:02| |>inferior hills| +|08/01/2022 05:30:02| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:03| |VSA VSA VSA| +|08/01/2022 05:30:03| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:03| |USA USA USA USA| +|08/01/2022 05:30:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:03| |SENSHA GA KITA~!| +|08/01/2022 05:30:03| |just a bunch of landlubbers now| +|08/01/2022 05:30:04| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:05| |Tank delivery.| +|08/01/2022 05:30:06| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:06| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:07| |America: supplying the world's freedom fighters since 1776| +|08/01/2022 05:30:07| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:07| |USA USA USA USA| +|08/01/2022 05:30:08| |Haibane renmei is GuP done right| +|08/01/2022 05:30:08| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:09| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:09| |Imagine the country is just one big boat girls| +|08/01/2022 05:30:09| USAAAAAAAAAAAA +|08/01/2022 05:30:10| |USA USA USA USA USA| +|08/01/2022 05:30:10| |USA ALL THE WAY| +|08/01/2022 05:30:11| | USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:11| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:11| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:12| USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA!USA! +|08/01/2022 05:30:12| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:13| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:13| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:14| |REAL AMERICAN HEROES| +|08/01/2022 05:30:14| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:14| |>QUALIFIED PILOT| +|08/01/2022 05:30:14| |>low pass based| +|08/01/2022 05:30:15| |DOG BLESS| +|08/01/2022 05:30:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:17| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:17| |>even saki runs| +|08/01/2022 05:30:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:18| |USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:18| MOMOOOOOOOOOOOOOOOOOOOO +|08/01/2022 05:30:19| |USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:19| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:19| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA UAS| +|08/01/2022 05:30:20| USAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSAUSA +|08/01/2022 05:30:20| kinostairs +|08/01/2022 05:30:20| |USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? USA AGAIN? | +|08/01/2022 05:30:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:20| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:22| >europoors +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:22| |America is numba one!!!| +|08/01/2022 05:30:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:23| |HERE COMES NUKE NUMBER 3| +|08/01/2022 05:30:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:26| |USA USA USA USA US A USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA US A| +|08/01/2022 05:30:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:27| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:28| |USA ALL THE WAY| +|08/01/2022 05:30:28| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:29| |USA USA USA USA| +|08/01/2022 05:30:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:30| |>PULL UP PULL UP| +|08/01/2022 05:30:31| |Usa Usa Usa| +|08/01/2022 05:30:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:32| |HERE'S YOUR FUCKING TANKS| +|08/01/2022 05:30:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:33| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:33| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:33| |CIA CIA CIA CIA CIA CIA CIA| +|08/01/2022 05:30:33| |USA USA USA USA USA| +|08/01/2022 05:30:33| |HETZERBROS WE WON| +|08/01/2022 05:30:33| |COMMAND AND CONQUER BROS WW@| +|08/01/2022 05:30:34| |I CAN FEEL MY BLOOD TURN RED WHITE BLUE| +|08/01/2022 05:30:34| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:36| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:37| |Danmaku going so fadt no one will see I'm gonna pee| +|08/01/2022 05:30:38| usa +|08/01/2022 05:30:39| |USA USA USA USA USA SUA USA USA USA USAUS AUSA USA USA| +|08/01/2022 05:30:39| ????? +|08/01/2022 05:30:39| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:39| |USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:40| |GRAND THEFT SENSHA| +|08/01/2022 05:30:40| |COMING AGAIN TO SAVE THE MOTHERFUCKING DAY NOW| +|08/01/2022 05:30:41| |USA USA USA USA| +|08/01/2022 05:30:41| |there goes the MEXT guy's car| +|08/01/2022 05:30:41| |Just a little flyby| +|08/01/2022 05:30:41| |WHOOP WHOOP| +|08/01/2022 05:30:42| |BASED AMERICA| +|08/01/2022 05:30:43| |>we'll just leave em here lmao| +|08/01/2022 05:30:43| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:43| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:44| |burgers...i kneel...| +|08/01/2022 05:30:47| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:30:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:49| |YO THIS ANON IS PEEING| +|08/01/2022 05:30:50| |Land of the free| +|08/01/2022 05:30:51| |ORARI GO AMERICAN BACKING| +|08/01/2022 05:30:52| |LOW ALTITUDE| +|08/01/2022 05:30:53| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:54| |WHATEVER YOU DO DO NOT PEE| +|08/01/2022 05:30:54| |UPS UPS UPS UPS UPS UPS UPS UPS UPS UPS | +|08/01/2022 05:30:55| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:30:56| |Thank you Kay| +|08/01/2022 05:30:57| |FREEDOM AIN'T FREE| +|08/01/2022 05:30:57| |THEY LANDED ON ONE OF THE GIRLS| +|08/01/2022 05:30:57| |That cost at least 50 command points| +|08/01/2022 05:30:58| |I WILL SEE YOU PEE| +|08/01/2022 05:30:58| |ye sure| +|08/01/2022 05:30:58| |still jobbers| +|08/01/2022 05:30:59| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 05:30:59| |God be with you now spread your wings and fly!| +|08/01/2022 05:31:00| |haha jobbers| +|08/01/2022 05:31:00| |>Tank laundering\| +|08/01/2022 05:31:05| |alisa has a very sexy voice| +|08/01/2022 05:31:05| |the c-5m does not have tactical airlift capability| +|08/01/2022 05:31:06| |IT'S MOMOOOOOOOOOO| +|08/01/2022 05:31:07| |CUTE CHEATER| +|08/01/2022 05:31:08| POG +|08/01/2022 05:31:08| |even the bassist| +|08/01/2022 05:31:09| |Spank Naomi and Alisa Y/Y| +|08/01/2022 05:31:09| |>actual load plates Amazing detail| +|08/01/2022 05:31:09| |HOT CUNNY| +|08/01/2022 05:31:11| |>you have to fight for israel| +|08/01/2022 05:31:12| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:31:14| |Cute tryhard| +|08/01/2022 05:31:18| |What kind of punishment did Alisa receive? She seemed a lot nicer than last time| +|08/01/2022 05:31:20| |Takashi was the bassist| +|08/01/2022 05:31:20| |the meaning behind the mask| +|08/01/2022 05:31:21| Y +|08/01/2022 05:31:21| Anzu +|08/01/2022 05:31:22| |Ty TL| +|08/01/2022 05:31:22| |THANKS TL| +|08/01/2022 05:31:23| |GET HER MOMO| +|08/01/2022 05:31:26| |rape correction| +|08/01/2022 05:31:27| |sex with anzu?| +|08/01/2022 05:31:31| |look at these retards lol| +|08/01/2022 05:31:32| flat +|08/01/2022 05:31:32| |;-; sad kappas| +|08/01/2022 05:31:33| |Alisa sounds like she fucks band members (except bassists)| +|08/01/2022 05:31:33| |ORGEY | +|08/01/2022 05:31:34| |TL note: Anzu means "Uwoooooooooooh"| +|08/01/2022 05:31:35| |Cute clones| +|08/01/2022 05:31:35| lewd +|08/01/2022 05:31:35| |They've gone ferral.| +|08/01/2022 05:31:38| SEX +|08/01/2022 05:31:38| |BAD TO THE BONE| +|08/01/2022 05:31:38| ptsd +|08/01/2022 05:31:39| |abandoned children| +|08/01/2022 05:31:39| |THANKS TL ;_;| +|08/01/2022 05:31:40| |Angery mumu| +|08/01/2022 05:31:40| |so fucking cute bros| +|08/01/2022 05:31:41| |NO DISCIPLINE| +|08/01/2022 05:31:42| |EXCEPT TAKASHI| +|08/01/2022 05:31:42| |Delinquent comittee| +|08/01/2022 05:31:44| |Return to native| +|08/01/2022 05:31:45| SEEEEEEEEGGGGGGS +|08/01/2022 05:31:45| DELINQUENT +|08/01/2022 05:31:46| |TAKING ADVANTAGE AND HAVING YOUR WAY WITH ALL THE SUDAKOS| +|08/01/2022 05:31:47| |sleepy kappas| +|08/01/2022 05:31:47| |Cute sodoko| +|08/01/2022 05:31:47| kappa +|08/01/2022 05:31:47| |she looks like she's gonna break| +|08/01/2022 05:31:48| |YOUR WHAT?| +|08/01/2022 05:31:51| |SEX WITH SODOKO| +|08/01/2022 05:31:54| |literally me| +|08/01/2022 05:31:54| SEEEEEEEEEEEEEEGGGGGGGGGGGGS +|08/01/2022 05:31:56| |LITERALLY ME| +|08/01/2022 05:31:57| |Delinquent Sodoko| +|08/01/2022 05:31:57| LAZYDOKO +|08/01/2022 05:31:58| SODOKO +|08/01/2022 05:32:00| SEEEEEEEEEEEEGGGGGGGGGS +|08/01/2022 05:32:01| |cute sodoko| +|08/01/2022 05:32:01| Me +|08/01/2022 05:32:02| |me tomorrow morning| +|08/01/2022 05:32:02| |sodoclone foursome| +|08/01/2022 05:32:02| |lewd bastard poor sodoko| +|08/01/2022 05:32:02| |Why even moralize... it's hopeless| +|08/01/2022 05:32:02| |nihilist sodoko| +|08/01/2022 05:32:03| |Hai shuriyo| +|08/01/2022 05:32:05| |Punished Sodoko| +|08/01/2022 05:32:06| sodokoooooooo +|08/01/2022 05:32:07| |Me right now| +|08/01/2022 05:32:07| |Sodoko&Mako synced up| +|08/01/2022 05:32:08| |Time for the rape correction| +|08/01/2022 05:32:13| |>all those skirts IMAGINE THE SMELL| +|08/01/2022 05:32:15| Tags:moral_degradation +|08/01/2022 05:32:19| swole +|08/01/2022 05:32:19| |Girls und /fit/| +|08/01/2022 05:32:19| STRONG +|08/01/2022 05:32:19| |She's like fuck you mako| +|08/01/2022 05:32:21| |ONEGAI MUSCLE| +|08/01/2022 05:32:22| TAEKO +|08/01/2022 05:32:22| |SO RE| +|08/01/2022 05:32:23| |Does it technically count as watching the stream if I sleep on my chair???| +|08/01/2022 05:32:23| |/fit/ here| +|08/01/2022 05:32:23| /fit/ +|08/01/2022 05:32:24| |GETTING BIG| +|08/01/2022 05:32:24| /FIT/IZENS +|08/01/2022 05:32:25| SWOLE +|08/01/2022 05:32:25| |Time to get swole.| +|08/01/2022 05:32:27| /vfit/ +|08/01/2022 05:32:27| /fit/ +|08/01/2022 05:32:27| |BEACH VOLLEYBALL EPISODE| +|08/01/2022 05:32:27| |YOU'RE ALL GONNA MAKE IT, BRAH!| +|08/01/2022 05:32:28| STRONK +|08/01/2022 05:32:28| >DYELlets +|08/01/2022 05:32:30| /FIT/ +|08/01/2022 05:32:30| GOMAD +|08/01/2022 05:32:30| /fitv/! +|08/01/2022 05:32:30| GAINZ +|08/01/2022 05:32:30| |Lets get ripped!| +|08/01/2022 05:32:30| FIT +|08/01/2022 05:32:32| |/fit/ gang| +|08/01/2022 05:32:33| |GOTTA EAT BIG TO GET BIG COME ON| +|08/01/2022 05:32:34| |i'll take all three at once| +|08/01/2022 05:32:34| cute +|08/01/2022 05:32:34| |SWOLE PATROL| +|08/01/2022 05:32:36| |gonna make it| +|08/01/2022 05:32:37| |SORE DA| +|08/01/2022 05:32:37| /out/ +|08/01/2022 05:32:41| |GET FIT FOR ANIKI| +|08/01/2022 05:32:45| |they all make it bros| +|08/01/2022 05:32:46| |AZUSA CUTE| +|08/01/2022 05:32:46| |They discovered fire!| +|08/01/2022 05:32:49| |aniki ;__;| +|08/01/2022 05:32:49| |Aniki ;_;| +|08/01/2022 05:32:54| |>aniki death anniversary in less than 2 months| +|08/01/2022 05:32:55| aniki... +|08/01/2022 05:32:55| |FISH FEAR ME| +|08/01/2022 05:32:57| |how do they afford fuel ;_;| +|08/01/2022 05:32:58| |based hivemind| +|08/01/2022 05:32:58| ;__; +|08/01/2022 05:32:59| GOBY? +|08/01/2022 05:33:00| zetsubouuuuuuuuuuuuuuuuuuuuuuu +|08/01/2022 05:33:02| MIODU +|08/01/2022 05:33:03| comfy +|08/01/2022 05:33:07| |WOMEN FEAR ME| +|08/01/2022 05:33:07| |night of fire| +|08/01/2022 05:33:08| |THE SODOCLONES JUST ROBBED THAT STORE| +|08/01/2022 05:33:08| mood +|08/01/2022 05:33:09| |im waiting for duce| +|08/01/2022 05:33:09| |sleepy time| +|08/01/2022 05:33:10| |Delinquent clones| +|08/01/2022 05:33:10| |CUT EDELINQUENTS| +|08/01/2022 05:33:10| |aniki smiles upon ye| +|08/01/2022 05:33:10| PAJAMA +|08/01/2022 05:33:14| zzzzz +|08/01/2022 05:33:15| |They really are homeless| +|08/01/2022 05:33:16| |Girls und Slice of Life| +|08/01/2022 05:33:19| |how many years has it been now bros?| +|08/01/2022 05:33:20| |Girls und Duce| +|08/01/2022 05:33:21| |Imagine rping the Sodoklones| +|08/01/2022 05:33:24| |Ganbare Boko| +|08/01/2022 05:33:25| |Girls und Nothing| +|08/01/2022 05:33:25| |holding up combini with tanks| +|08/01/2022 05:33:30| |that's against school regulations| +|08/01/2022 05:33:31| |10 years now| +|08/01/2022 05:33:32| |Girls Und Squaters| +|08/01/2022 05:33:34| |Girls und Nihlism| +|08/01/2022 05:33:35| |consesual sex with the sodoclones!| +|08/01/2022 05:33:38| SLUT +|08/01/2022 05:33:38| |yeah ok saori| +|08/01/2022 05:33:39| |>saori >marrying| +|08/01/2022 05:33:40| |Saori Arranged Marriage| +|08/01/2022 05:33:44| >marrying +|08/01/2022 05:33:45| |>Using tanks as cars| +|08/01/2022 05:33:45| |raising our 40 sodoclone children!| +|08/01/2022 05:33:47| |I skip the part between battles when rewatching the film. Honestly forgot this was even here| +|08/01/2022 05:33:51| a +|08/01/2022 05:33:53| |MAMA TAIMU| +|08/01/2022 05:34:00| |marriage? are you sersious anon? have you seen "THAT DANCE"????!??!?!?!| +|08/01/2022 05:34:01| |homeless people be like| +|08/01/2022 05:34:01| |UH OH| +|08/01/2022 05:34:06| |SHIHO HERE I COME| +|08/01/2022 05:34:16| |Miho completely ignoring Hana for a boko sign| +|08/01/2022 05:34:18| |I HATE BOKO STUPID FUCKING BEAR| +|08/01/2022 05:34:19| |Maho can adopt Miho | +|08/01/2022 05:34:19| |NAKADASHI SHIHO| +|08/01/2022 05:34:20| BOKO +|08/01/2022 05:34:21| |Can Miho even move back in with shiho?| +|08/01/2022 05:34:22| |ITS FUCKING BOKO HOLY SHIT GUYS STOP THE TANK | +|08/01/2022 05:34:23| |OPERATION PUNCHY?| +|08/01/2022 05:34:24| STOP!!!! +|08/01/2022 05:34:25| |And here comes the worst part of the film| +|08/01/2022 05:34:29| |sex with boko| +|08/01/2022 05:34:29| |IN THE NAME OF BOKO!| +|08/01/2022 05:34:29| Bokoland! +|08/01/2022 05:34:31| |HOLY FUCK ITS BOKO| +|08/01/2022 05:34:31| |IS THAT MOTHERFUCKING BOKO| +|08/01/2022 05:34:31| |Time to get WACKY!| +|08/01/2022 05:34:32| |THE BEAR| +|08/01/2022 05:34:32| |ITS FUCKING BOKO| +|08/01/2022 05:34:33| |BOKOO | +|08/01/2022 05:34:35| |HOLY SHIT STOP ITS BOKO| +|08/01/2022 05:34:35| BOKO +|08/01/2022 05:34:36| BOKO +|08/01/2022 05:34:36| |BOKO GANBARE| +|08/01/2022 05:34:36| BOKO +|08/01/2022 05:34:36| |Miho wants to fuck a Boko| +|08/01/2022 05:34:37| |BOKO WE LOVE YOU| +|08/01/2022 05:34:37| BOKOOOOOOOOOOOOOOOO!! +|08/01/2022 05:34:38| BOKO +|08/01/2022 05:34:39| |THE FUCK DID YOU SAY ABOUT BOKO| +|08/01/2022 05:34:40| BOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKOBOKO +|08/01/2022 05:34:40| BOKO +|08/01/2022 05:34:40| |B O K O| +|08/01/2022 05:34:41| |BOKO HARAM| +|08/01/2022 05:34:41| |HOLY SHIT BOKO?!?!?!?!?!?!??!?!?!| +|08/01/2022 05:34:41| hauuuuuu~ +|08/01/2022 05:34:41| CUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 05:34:41| |BOKO HARAM| +|08/01/2022 05:34:42| |BOKO BOKO SLUT| +|08/01/2022 05:34:42| |BOKO BOKO| +|08/01/2022 05:34:42| |BOKO AUTISM| +|08/01/2022 05:34:42| |BOKO DA| +|08/01/2022 05:34:43| |HOLY SHIT ITS BOKO| +|08/01/2022 05:34:43| |HOLY SHIT ITS BOKO| +|08/01/2022 05:34:43| |GANBARE BOKO!| +|08/01/2022 05:34:43| |Tankfags, how many miles per gallon does a panzer get?| +|08/01/2022 05:34:43| BOKO +|08/01/2022 05:34:43| |BOKO POGGERS| +|08/01/2022 05:34:44| BOCOCK +|08/01/2022 05:34:44| CUTE +|08/01/2022 05:34:45| BOKO +|08/01/2022 05:34:45| |her smile and optimism: RESTORED| +|08/01/2022 05:34:47| BOKO +|08/01/2022 05:34:48| BOKOOOO +|08/01/2022 05:34:48| |GANBARE BOKOOOOOOOO!!!!!!!| +|08/01/2022 05:34:48| |Fuckin Silent Hill 2 in here| +|08/01/2022 05:34:48| |YOU GOT THIS BOKO KEEP FIGHTING| +|08/01/2022 05:34:49| BOKO +|08/01/2022 05:34:49| BOKO! +|08/01/2022 05:34:49| |It's eat up like the real Boko!!| +|08/01/2022 05:34:49| BOKO +|08/01/2022 05:34:49| CUTE +|08/01/2022 05:34:51| |YATTE YARU YATTE YARU YATTE YARUZE| +|08/01/2022 05:34:51| |Miho is so fucking cute bros| +|08/01/2022 05:34:52| BKO +|08/01/2022 05:34:53| BOKO +|08/01/2022 05:34:53| |Operation punchy!| +|08/01/2022 05:34:54| |Ganbare Boco| +|08/01/2022 05:34:54| ;_; +|08/01/2022 05:34:54| |TOY BEAR > YOU| +|08/01/2022 05:34:55| |Stupid bear| +|08/01/2022 05:34:55| |COME ON BOKO| +|08/01/2022 05:34:56| |GARBAGE BEAR| +|08/01/2022 05:34:57| |YATTE YARU| +|08/01/2022 05:34:59| |BOKO ;_;| +|08/01/2022 05:34:59| |GAAANNNBBAAREE BOOOKOOO!| +|08/01/2022 05:34:59| |TIME FOR BEST GIRL'S INTRODUCTION| +|08/01/2022 05:35:00| |GUYS ITS BOKO| +|08/01/2022 05:35:00| |boko boko| +|08/01/2022 05:35:01| FIGHT +|08/01/2022 05:35:04| |WHAT A DUMP| +|08/01/2022 05:35:05| |>ITALY BTFO| +|08/01/2022 05:35:05| |uuuoooh when?| +|08/01/2022 05:35:06| BTFO +|08/01/2022 05:35:06| |BOKO BOKO BOKO BOKO| +|08/01/2022 05:35:07| |GANBARE, BOKO| +|08/01/2022 05:35:07| |kek yukari styling on italy| +|08/01/2022 05:35:08| LMAO +|08/01/2022 05:35:08| |I love Boko| +|08/01/2022 05:35:09| >shitaly +|08/01/2022 05:35:09| d-duce +|08/01/2022 05:35:10| |ITALY BTFO| +|08/01/2022 05:35:10| |BOKO LETS FUCKING GOOOOOO| +|08/01/2022 05:35:10| |ITALY BTFO| +|08/01/2022 05:35:12| |YOU CAN THIS!| +|08/01/2022 05:35:13| |Pasta bros...| +|08/01/2022 05:35:13| |ITALY BTFO| +|08/01/2022 05:35:14| |BOKO CULT BOKO CULT| +|08/01/2022 05:35:14| |BOKO WORLD| +|08/01/2022 05:35:16| |BOKO IS MY WIFE!| +|08/01/2022 05:35:17| >ducew +|08/01/2022 05:35:18| |BOKO BOKO'D| +|08/01/2022 05:35:18| |YOU CAN THIS!| +|08/01/2022 05:35:19| |OH NO ITALYBROS...| +|08/01/2022 05:35:20| |Wow, calling out Italy like that| +|08/01/2022 05:35:20| |Italy absolutely destroyed| +|08/01/2022 05:35:20| |YOU CAN THIS| +|08/01/2022 05:35:22| |BOKO GANBARE| +|08/01/2022 05:35:22| |Look at how happy that retard miho is| +|08/01/2022 05:35:24| GANBARE!!! +|08/01/2022 05:35:24| |me on the left| +|08/01/2022 05:35:25| |COME ON BOKO| +|08/01/2022 05:35:27| |Is Miho OK| +|08/01/2022 05:35:27| |OH NO BOKO WATCH OUT| +|08/01/2022 05:35:28| |CUTE MIHO| +|08/01/2022 05:35:28| |BOKO ;_;| +|08/01/2022 05:35:28| |GANBARE BOKO| +|08/01/2022 05:35:28| |It's a boko kinda world| +|08/01/2022 05:35:29| |I believe in Boko| +|08/01/2022 05:35:30| |FUCK EM UP BOKO!| +|08/01/2022 05:35:31| |BOKO ;_;| +|08/01/2022 05:35:32| |YOU GOT THIS BOKO| +|08/01/2022 05:35:32| |Oh God. I wish I was Boco| +|08/01/2022 05:35:32| |ONLY MIHO CAN SEE THIS. HER MIND IS BROKEN.| +|08/01/2022 05:35:33| |\o/ GANBAREEEEEEEE| +|08/01/2022 05:35:34| |SMOL NERD!| +|08/01/2022 05:35:34| |who actually likes this crap| +|08/01/2022 05:35:34| |GANBARE BOKO| +|08/01/2022 05:35:35| COCK +|08/01/2022 05:35:36| WWW.BOKOED.COM +|08/01/2022 05:35:36| |GANBARE BOKO| +|08/01/2022 05:35:37| |Miho my autistic wife| +|08/01/2022 05:35:37| GANBARE +|08/01/2022 05:35:37| |BOKO BEST GIRL| +|08/01/2022 05:35:37| |BOKO GANBARE| +|08/01/2022 05:35:37| |GANBARE BOKO| +|08/01/2022 05:35:38| |BOKOOOOOOOOOO NOOOOOOOOOOOOOO| +|08/01/2022 05:35:38| |GANBARE \o/| +|08/01/2022 05:35:38| |GANBARE BOKO| +|08/01/2022 05:35:38| |GANBARE BOKO| +|08/01/2022 05:35:38| |KEEP FIGHTING BOKO| +|08/01/2022 05:35:38| |CHEER LOUDER| +|08/01/2022 05:35:39| |Killed or be Killed, Jack| +|08/01/2022 05:35:39| GANBARE +|08/01/2022 05:35:39| |GANBARE BOKO| +|08/01/2022 05:35:39| Ganabre! +|08/01/2022 05:35:39| |MY HEART!!!| +|08/01/2022 05:35:40| |GANBAREEEEEEEEEE BOKOOO| +|08/01/2022 05:35:40| BOKOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 05:35:40| |GANBARE | +|08/01/2022 05:35:40| |GANBARE BOKO| +|08/01/2022 05:35:41| |GANBARE BOKO| +|08/01/2022 05:35:41| Arisu... +|08/01/2022 05:35:41| |COME ON BOKO| +|08/01/2022 05:35:42| |GO BOKO| +|08/01/2022 05:35:43| GANBARE +|08/01/2022 05:35:43| ALICE +|08/01/2022 05:35:43| |BOKO | +|08/01/2022 05:35:44| |GANBAREEEE BOKO| +|08/01/2022 05:35:45| |GANBARE BOKO| +|08/01/2022 05:35:45| |GANBARE BOKO| +|08/01/2022 05:35:46| |GANBARE BOKO!!| +|08/01/2022 05:35:46| |GANBARE BOKO| +|08/01/2022 05:35:46| |BOKO GANBARE| +|08/01/2022 05:35:46| GANBAREEEEEEEEEEEEEEEEEE +|08/01/2022 05:35:46| UOOOOOOOHHHHHHHHHHHHHHHH +|08/01/2022 05:35:47| |miho is a psycho wtf| +|08/01/2022 05:35:47| GANBARE +|08/01/2022 05:35:48| |COME ON BOKO| +|08/01/2022 05:35:48| |GO BOKO| +|08/01/2022 05:35:49| |GANBARE BOKO| +|08/01/2022 05:35:49| GANBAREEEE +|08/01/2022 05:35:50| |GANBARE BOKO| +|08/01/2022 05:35:50| GANBAREEEEEEEEEEE +|08/01/2022 05:35:50| |Boko fightO| +|08/01/2022 05:35:50| |GANBARE BOKO| +|08/01/2022 05:35:51| |HOLY SHIT HERE IT IS | +|08/01/2022 05:35:51| |GANBARE BOKOOOOOOOOO| +|08/01/2022 05:35:51| KATAKITA +|08/01/2022 05:35:51| |WE GOOTA HELP HIM!| +|08/01/2022 05:35:51| |THERE'S THE BITCH GET HER| +|08/01/2022 05:35:51| |GANBARE BOKO| +|08/01/2022 05:35:52| GANBAREEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 05:35:52| |BOKO ;_;| +|08/01/2022 05:35:52| |Arisu teh autst| +|08/01/2022 05:35:52| OOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:35:53| |Ganbare boko!!!| +|08/01/2022 05:35:53| Arisu... +|08/01/2022 05:35:53| 頑張れぇぇぇぇぇ +|08/01/2022 05:35:54| |believe it!| +|08/01/2022 05:35:54| |DAMN KID| +|08/01/2022 05:35:55| |GAMBAREE BOKOOOO| +|08/01/2022 05:35:55| GANBAREEEEEEE +|08/01/2022 05:35:56| |THE PEAK OF ANIMATIMOMN| +|08/01/2022 05:35:57| |GANBARE BOKO!| +|08/01/2022 05:35:57| GANBAREEEEEEEEEEEEE +|08/01/2022 05:35:58| |BOKO! GANBARE!| +|08/01/2022 05:35:58| |GET UP BOKO| +|08/01/2022 05:35:58| /o/ +|08/01/2022 05:35:59| |GANBARE BOKOOO| +|08/01/2022 05:35:59| BOKOOOOOOOOOOOO +|08/01/2022 05:35:59| |Go Boko!| +|08/01/2022 05:35:59| FIGHTO +|08/01/2022 05:36:00| |BOKO GET UP| +|08/01/2022 05:36:01| |wow boko jobs| +|08/01/2022 05:36:02| |COME ON GUYS WE NEED BOKO TO GET THE DUB THIS TIME| +|08/01/2022 05:36:03| |BOKO GANBARE| +|08/01/2022 05:36:03| F +|08/01/2022 05:36:05| |FIGHT BACK| +|08/01/2022 05:36:05| |BOKO ;___;| +|08/01/2022 05:36:05| |such retarded shit| +|08/01/2022 05:36:07| |Keep it up Boko| +|08/01/2022 05:36:07| |boko being beaten up by niggers| +|08/01/2022 05:36:07| |KICK HIS ASS SEABASS| +|08/01/2022 05:36:07| |I can't believe Miho is a ryonaqueen...| +|08/01/2022 05:36:08| |CMON BOKO GET UP| +|08/01/2022 05:36:10| |I'm bleeding making me the victor| +|08/01/2022 05:36:11| >jobs +|08/01/2022 05:36:13| ARISUUUUUUUUUUUUUUUUU +|08/01/2022 05:36:15| |no dont give it to her| +|08/01/2022 05:36:16| GANBARE +|08/01/2022 05:36:17| |>10 YEARS OF GUP >STILL NO BOKO ANIME| +|08/01/2022 05:36:19| |BEAT THAT LOLI'S ASS AND TAKE IT MIHO| +|08/01/2022 05:36:20| |boko is just like pravda| +|08/01/2022 05:36:20| |MY BOKO!| +|08/01/2022 05:36:21| |UH OH| +|08/01/2022 05:36:22| |20 YEARS OLD!| +|08/01/2022 05:36:22| UOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:36:23| |EROTIC CHILD| +|08/01/2022 05:36:23| UOOOOOHHHHHHHHHH +|08/01/2022 05:36:23| |SUPER RARE| +|08/01/2022 05:36:24| NAKADASHI +|08/01/2022 05:36:25| |stream those films if you're so great| +|08/01/2022 05:36:25| UOOOOOOOOOOOOOOOOOOOOOOOOOHHHHH +|08/01/2022 05:36:27| r00d +|08/01/2022 05:36:27| CUTE +|08/01/2022 05:36:28| |ARISU MOMENT| +|08/01/2022 05:36:28| |Can't fucking believe that they're stealing merch| +|08/01/2022 05:36:30| RUDE +|08/01/2022 05:36:30| |FAIL TS| +|08/01/2022 05:36:32| |>gup is 30 years old| +|08/01/2022 05:36:33| |cute npc| +|08/01/2022 05:36:33| RUDE +|08/01/2022 05:36:37| |Miho's future wife| +|08/01/2022 05:36:37| |AT LEAST SAY THANK YOU YOU MINI AUTIST| +|08/01/2022 05:36:38| |Guys... I think I'm a lolicon| +|08/01/2022 05:36:38| |ARISU NAKADASHI| +|08/01/2022 05:36:38| autist +|08/01/2022 05:36:39| |based mext| +|08/01/2022 05:36:41| CHAD +|08/01/2022 05:36:42| |LOOK AT THAT ADORABLE UNI STUDENT| +|08/01/2022 05:36:44| |CUTE BF AND GF| +|08/01/2022 05:36:44| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:36:45| >males +|08/01/2022 05:36:45| |That side character was cute| +|08/01/2022 05:36:47| |Enter chad| +|08/01/2022 05:36:47| ENTER +|08/01/2022 05:36:48| |RANDOSERU PERSUATION| +|08/01/2022 05:36:49| |THANKS TL| +|08/01/2022 05:36:50| |Anzu paying with her body| +|08/01/2022 05:36:50| /ourguy/ +|08/01/2022 05:36:50| |smh shoulda got a pinky promise| +|08/01/2022 05:36:52| |no seriously wtf is this guys problem?| +|08/01/2022 05:36:52| |HOLY FUCK SHE'S AS TALL AS HIM SITTING DOWN| +|08/01/2022 05:36:52| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:36:54| ABUSED +|08/01/2022 05:36:55| |The agreement is being held to we got a movie| +|08/01/2022 05:36:55| |OY VEY SHUT IT DOWN| +|08/01/2022 05:36:56| ANZU +|08/01/2022 05:36:58| |>prease understando| +|08/01/2022 05:36:58| flat +|08/01/2022 05:36:58| |MADE FOR CORRECTION| +|08/01/2022 05:36:59| TREASONM +|08/01/2022 05:37:00| |PREAUSURE SUNDERASTANDTOD| +|08/01/2022 05:37:00| |Non Verbal sorry| +|08/01/2022 05:37:02| |>PUREAZE UNDERSTAND| +|08/01/2022 05:37:03| |Oh God Anzu is so hot| +|08/01/2022 05:37:04| |smug | +|08/01/2022 05:37:04| |You can have my sensha, when you pry it from MY COLD DEAD HANDS| +|08/01/2022 05:37:07| TRAIOTOR +|08/01/2022 05:37:07| |It's just business| +|08/01/2022 05:37:07| |Reminder that Anzu is Renta's wife| +|08/01/2022 05:37:09| |preasu understandu| +|08/01/2022 05:37:12| |Lawyer anons?| +|08/01/2022 05:37:12| |giga chad MEXT| +|08/01/2022 05:37:12| |MAKING DEALS WITH JEWS SHAME| +|08/01/2022 05:37:12| |WORDS MEAN NOTHING, REJECT SCHOOLSHIP| +|08/01/2022 05:37:13| |gup is actually sold in universe as merch for the team| +|08/01/2022 05:37:15| |SEX WITH ALICE A 20 YEAR OLD UNIVERSITY STUDENT| +|08/01/2022 05:37:16| "something" +|08/01/2022 05:37:18| |he did all he could to shut Ooarai down| +|08/01/2022 05:37:19| |Oh God I wish Momo is my Wife| +|08/01/2022 05:37:21| |Mans got that Gendo Ikari tint| +|08/01/2022 05:37:25| |Checks out in the eyes of the law| +|08/01/2022 05:37:27| |it's ove| +|08/01/2022 05:37:30| CUTE +|08/01/2022 05:37:31| |>momo ever doing a good job| +|08/01/2022 05:37:32| //////////////////// +|08/01/2022 05:37:37| |The rice cooker's broken and we're out of toilet paper.| +|08/01/2022 05:37:40| |lawyer here, it makes sense to me| +|08/01/2022 05:37:41| |Anzu is sexing with me| +|08/01/2022 05:37:42| |\o HEIL KAICHOU| +|08/01/2022 05:37:42| |Sudakos need rape correction| +|08/01/2022 05:37:45| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:37:45| HAMSTERS +|08/01/2022 05:37:47| |If only Momo could aim as good| +|08/01/2022 05:37:47| |Momo's doing her best - don't bully her!!!!!!| +|08/01/2022 05:38:00| |I recognize that haifuri reference. s2 when| +|08/01/2022 05:38:00| |fatass is eating all slices by himself isnt he| +|08/01/2022 05:38:00| |oji san made it in| +|08/01/2022 05:38:01| |i like this old fuck| +|08/01/2022 05:38:03| |SAORIS LOVER| +|08/01/2022 05:38:05| |ANZU UOH| +|08/01/2022 05:38:06| |fuck that guy| +|08/01/2022 05:38:07| bald +|08/01/2022 05:38:09| |FAT OLD MAN| +|08/01/2022 05:38:11| |USED TANKS| +|08/01/2022 05:38:12| |Ugly bastard| +|08/01/2022 05:38:13| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:38:13| |Press S to have bribe sex with Anzu| +|08/01/2022 05:38:14| |looked like ANN| +|08/01/2022 05:38:16| |ugly bastard| +|08/01/2022 05:38:16| |what a fat ugly old bastard| +|08/01/2022 05:38:17| |THANKS TL| +|08/01/2022 05:38:18| |where tf were you for the last 6 hours| +|08/01/2022 05:38:18| |I'M FORMING A TEAM. IT'S CALLED THE "TANK CAKE" INITIATIVE.| +|08/01/2022 05:38:19| |Saori does fuck that guy| +|08/01/2022 05:38:20| |ty tl| +|08/01/2022 05:38:24| |>trying to get the yakuza to lose face over tank funnies| +|08/01/2022 05:38:25| |holy fuck he's so bald| +|08/01/2022 05:38:26| |prease stop spamming anzu means sex| +|08/01/2022 05:38:31| |I want to correct Anzu| +|08/01/2022 05:38:35| |But Anzu does mean sex| +|08/01/2022 05:38:36| |Give him Hana| +|08/01/2022 05:38:36| |but anzu does mean sex| +|08/01/2022 05:38:38| |Anzu Means Sex| +|08/01/2022 05:38:40| prorig +|08/01/2022 05:38:42| |who the fuck keeps saying "anzu means sex" stfu| +|08/01/2022 05:38:43| |Anzu does mean sex| +|08/01/2022 05:38:44| |holy fuck its been 6 hours ._.| +|08/01/2022 05:38:45| |prog knife| +|08/01/2022 05:38:46| |Its dangerous for Anzu to even be in the same room as him| +|08/01/2022 05:38:47| |anzu means sex for procreation| +|08/01/2022 05:38:48| ? +|08/01/2022 05:38:50| traurug +|08/01/2022 05:38:52| |anzu means sex btw| +|08/01/2022 05:38:55| ANZU +|08/01/2022 05:38:55| flat +|08/01/2022 05:38:55| |is that a motherfucking ironclad???| +|08/01/2022 05:38:55| |Red Potato| +|08/01/2022 05:38:55| |TL note: Anzu means soz| +|08/01/2022 05:38:55| |anzu means sex| +|08/01/2022 05:38:56| |but anzu means sex| +|08/01/2022 05:38:56| |I want to Anzu Anzu's Anzu| +|08/01/2022 05:38:58| MAHO +|08/01/2022 05:38:59| eh? +|08/01/2022 05:38:59| |i want to touch mahos mahos| +|08/01/2022 05:38:59| |MY MAHO WIFE| +|08/01/2022 05:39:00| |Tl keeps saying anzu means sex| +|08/01/2022 05:39:00| |i just want to hug anzu| +|08/01/2022 05:39:00| |MAHO'S MAHOS| +|08/01/2022 05:39:00| |CASUAL MAHO| +|08/01/2022 05:39:01| |Did you know? Anzu means sex| +|08/01/2022 05:39:02| |cute dog| +|08/01/2022 05:39:02| |what does anzu mean please respond| +|08/01/2022 05:39:03| |Dog :)| +|08/01/2022 05:39:03| CUTE +|08/01/2022 05:39:04| |YOU JUST KNOW| +|08/01/2022 05:39:04| |Maho chan| +|08/01/2022 05:39:05| MAHO +|08/01/2022 05:39:05| |Anzu means "Uwooooohhhh"| +|08/01/2022 05:39:05| |CUTE MAHO| +|08/01/2022 05:39:06| |I love Maho| +|08/01/2022 05:39:07| |UOOOOOOOOH ;_;| +|08/01/2022 05:39:08| MAHOOOOOOOOO +|08/01/2022 05:39:08| |YOU JUST KNOW| +|08/01/2022 05:39:08| |anzu would not survive childbirth| +|08/01/2022 05:39:09| |CUTE FAMILY| +|08/01/2022 05:39:09| MAHO +|08/01/2022 05:39:09| |i'm going to breed a baseball team of mini-anzus with anzu| +|08/01/2022 05:39:10| doggy! +|08/01/2022 05:39:10| |>dog YOU JUST KNOW| +|08/01/2022 05:39:10| |WAN WAN WAN| +|08/01/2022 05:39:10| |You just know.| +|08/01/2022 05:39:10| MAHO +|08/01/2022 05:39:11| |FAT MAHOS!| +|08/01/2022 05:39:11| YJK +|08/01/2022 05:39:11| |MAHO"S MAHOS AAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 05:39:11| MAHO +|08/01/2022 05:39:13| |Cute wanko| +|08/01/2022 05:39:13| |MAHO WIFE| +|08/01/2022 05:39:14| |sex with Anzu?| +|08/01/2022 05:39:14| |CASUAL MISSIONARY WITH CASUAL MAHO| +|08/01/2022 05:39:15| |LOOK AT THE SIZE OF THEM| +|08/01/2022 05:39:16| okairi +|08/01/2022 05:39:17| MAPORIN +|08/01/2022 05:39:17| |SEEEEEEEEEEEEEEEEEX WITH MAHO| +|08/01/2022 05:39:18| BREEEEEDDDDDDD +|08/01/2022 05:39:19| BOOBA +|08/01/2022 05:39:21| |TL Note: "Anzu" means "UOHHHHH"| +|08/01/2022 05:39:25| >DISOWNED +|08/01/2022 05:39:25| |yeah maho does have bigger tits| +|08/01/2022 05:39:26| |thanks tl| +|08/01/2022 05:39:27| |Why is she walking Erika on a leash?| +|08/01/2022 05:39:27| |UOOOOOOOOOOOOOOOH ;_;| +|08/01/2022 05:39:28| so? +|08/01/2022 05:39:30| |Maho's Maho Milkers| +|08/01/2022 05:39:31| |SHIHO'S SHIHOS| +|08/01/2022 05:39:31| |Maho got some big Maho's| +|08/01/2022 05:39:36| |UOOOOH SHIHO NAKADASI| +|08/01/2022 05:39:36| |BBBOOOOOOOOOOOOOOOBBBBBBBBBBS | +|08/01/2022 05:39:37| |I did not have sexual relations with Nishizumi Maho| +|08/01/2022 05:39:38| |Maho is my wife| +|08/01/2022 05:39:44| |This is probably my favorite part of the franchise really| +|08/01/2022 05:39:45| |Miho's situation is really sad when you think about it| +|08/01/2022 05:39:45| |I want to have kids with their Mom| +|08/01/2022 05:39:47| |>mom still a cunt| +|08/01/2022 05:39:48| |this scene is so kino| +|08/01/2022 05:39:48| |bobs and vegene| +|08/01/2022 05:39:50| BOKO! +|08/01/2022 05:39:51| undisowned? +|08/01/2022 05:39:55| PANZERFAUST +|08/01/2022 05:39:57| |MOMMY MILKIES PLEASE| +|08/01/2022 05:39:57| |missile in the corner| +|08/01/2022 05:39:58| |the whole family situation is fucked| +|08/01/2022 05:40:00| UOOOOOOOOOOOOOOOOH +|08/01/2022 05:40:02| |Will shiho ever talk to miho again?| +|08/01/2022 05:40:04| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 05:40:04| UOOOOOOOOOOOH +|08/01/2022 05:40:04| |PANZERFAUST PRESENT| +|08/01/2022 05:40:04| CUTE +|08/01/2022 05:40:05| |you just know maho is gonna steal mihos used panties | +|08/01/2022 05:40:07| |make that fucking bed| +|08/01/2022 05:40:08| |cute panzerfaust| +|08/01/2022 05:40:08| |>but mom i just want to watch boko not play senshado| +|08/01/2022 05:40:08| |THAT'S FUCKING ILLEGAL| +|08/01/2022 05:40:08| ;_; +|08/01/2022 05:40:09| uoh +|08/01/2022 05:40:09| |Their childhood memories are surprisingly nice characterization in a series about tanks and shit| +|08/01/2022 05:40:09| CUTE +|08/01/2022 05:40:10| |Lovely flashback| +|08/01/2022 05:40:11| |why doesn't their dad fuck the mom? all their problems could be fixed| +|08/01/2022 05:40:11| |UOOOOOOOOOOOOOOOOOOOOOOOOOOOH PHOTO| +|08/01/2022 05:40:12| |skirts that short with thighs that slim are criminal| +|08/01/2022 05:40:12| SHH +|08/01/2022 05:40:13| |I'm just snorting in my shirt| +|08/01/2022 05:40:14| |QUICK MIHO SAVE YOUR FATHER HE'S LOCKED UP DOWNSTAIRS| +|08/01/2022 05:40:14| |that smile can melt ice| +|08/01/2022 05:40:14| |>A fucking panzerfaust| +|08/01/2022 05:40:15| |Maho is my wife| +|08/01/2022 05:40:15| OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUUUUUUUUUHHHHHHHHHHHHH +|08/01/2022 05:40:18| UUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:40:18| |Spank Miho and Maho Y/Y| +|08/01/2022 05:40:19| |sneaky maho| +|08/01/2022 05:40:19| |Maho lies about her pregnancy with that look....| +|08/01/2022 05:40:20| |Shiho signed it| +|08/01/2022 05:40:21| |CUTE ONEE-CHAN| +|08/01/2022 05:40:22| |FAIL TS| +|08/01/2022 05:40:23| FORGERY!!! +|08/01/2022 05:40:23| CUTE +|08/01/2022 05:40:23| |panzer 2 bros| +|08/01/2022 05:40:23| CUUUUUUUUUUUUUUTE +|08/01/2022 05:40:24| |THAT'S A CRIME| +|08/01/2022 05:40:24| |Kino flashback| +|08/01/2022 05:40:24| |Oh God Maho is so sexy| +|08/01/2022 05:40:25| |O S T| +|08/01/2022 05:40:25| |CUTE TANK| +|08/01/2022 05:40:27| |sex with Anzu? YES or NO| +|08/01/2022 05:40:27| |kino | +|08/01/2022 05:40:27| |you saw nothing| +|08/01/2022 05:40:29| |CUTE TONK| +|08/01/2022 05:40:30| KINO +|08/01/2022 05:40:30| |WHAT WHERE DOES MIHO LIVE IF SHE CAN'T GO?| +|08/01/2022 05:40:32| UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 05:40:32| |YES YES YES| +|08/01/2022 05:40:33| |Wait, that's illegal| +|08/01/2022 05:40:33| O-s-t +|08/01/2022 05:40:34| |warning, miho x maho sex scene inbound| +|08/01/2022 05:40:34| |kino track| +|08/01/2022 05:40:35| CUTE +|08/01/2022 05:40:36| |Cute child Miho!| +|08/01/2022 05:40:36| cute +|08/01/2022 05:40:36| KINO +|08/01/2022 05:40:37| ;_________________; +|08/01/2022 05:40:37| 😭😭😭 +|08/01/2022 05:40:37| KINO +|08/01/2022 05:40:39| |>5-year olds driving a tank| +|08/01/2022 05:40:41| uohhhh +|08/01/2022 05:40:42| ME +|08/01/2022 05:40:42| 😭 +|08/01/2022 05:40:43| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:40:44| |>that animation| +|08/01/2022 05:40:44| |>hip movement| +|08/01/2022 05:40:44| |DAMN KID!!| +|08/01/2022 05:40:45| |>Miho will never rape you| +|08/01/2022 05:40:46| |unironic kino| +|08/01/2022 05:40:46| uoh +|08/01/2022 05:40:46| |SEX WITH MIHO (8)| +|08/01/2022 05:40:48| |>you will never enjoy the JP countryside with your two girls and tank| +|08/01/2022 05:40:48| |>letting a kid drive a tank| +|08/01/2022 05:40:50| UOOOOOOOOOOOOOOOH +|08/01/2022 05:40:51| ;__; +|08/01/2022 05:40:51| |quit humping miho!| +|08/01/2022 05:40:51| |IT'S THE THING| +|08/01/2022 05:40:51| |NISHIZUMI STYLE CUNNNNYYYYYYYYYYYYYYYYYYYYYYY| +|08/01/2022 05:40:51| |You will never hump a panzer 2| +|08/01/2022 05:40:52| |KANI KANI KANI KANI KANI KANI| +|08/01/2022 05:40:52| |This is so sweet I love this| +|08/01/2022 05:40:52| |maho could drive a tank before she could walk| +|08/01/2022 05:40:53| |The kid... the kid... the kid... the kid...| +|08/01/2022 05:40:53| WEW +|08/01/2022 05:40:57| |Miho and Maho is so cute| +|08/01/2022 05:40:58| |Maho is very handsome| +|08/01/2022 05:40:58| Win +|08/01/2022 05:41:00| cute +|08/01/2022 05:41:01| |smug miho| +|08/01/2022 05:41:01| KINO +|08/01/2022 05:41:03| |Fail TS hire someone better| +|08/01/2022 05:41:05| |cute dork faces| +|08/01/2022 05:41:05| cute +|08/01/2022 05:41:08| WINRAR +|08/01/2022 05:41:08| |i just want miho and maho to be happy together again| +|08/01/2022 05:41:10| jumpu +|08/01/2022 05:41:11| |you will never kiss two underage daughters| +|08/01/2022 05:41:12| MUD +|08/01/2022 05:41:12| |these girls sure are cute| +|08/01/2022 05:41:14| SAVED +|08/01/2022 05:41:14| CUNNY....................................................................................................................................... +|08/01/2022 05:41:14| |Letting elementary schoolers drive a tank.| +|08/01/2022 05:41:14| |dirty cuties| +|08/01/2022 05:41:15| |Good form on that| +|08/01/2022 05:41:15| |why is this so better animated| +|08/01/2022 05:41:16| STRONG +|08/01/2022 05:41:16| |muddy niggers| +|08/01/2022 05:41:16| kek +|08/01/2022 05:41:16| |>Shiho ruined this| +|08/01/2022 05:41:17| |cute sisters| +|08/01/2022 05:41:17| UOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:41:17| |Danke tl| +|08/01/2022 05:41:18| |cute girl + boy| +|08/01/2022 05:41:22| ToT +|08/01/2022 05:41:23| |Sex in a tank| +|08/01/2022 05:41:24| |FIGHTING IN MUD WITH MIHO UOOOOOOOOOOOOOOOOHHHHHHH| +|08/01/2022 05:41:24| |Confident miho best miho| +|08/01/2022 05:41:25| |Great shot, right here.| +|08/01/2022 05:41:27| |fute and cunny| +|08/01/2022 05:41:27| |3p with them| +|08/01/2022 05:41:27| 😭😭😭😭😭😭 +|08/01/2022 05:41:28| >blackface +|08/01/2022 05:41:28| dynamic +|08/01/2022 05:41:30| 😭😭😭😭😭😭 +|08/01/2022 05:41:30| |T o T| +|08/01/2022 05:41:31| Kino... +|08/01/2022 05:41:33| |TSUNEO DIED FOR THIS| +|08/01/2022 05:41:35| |My maho wife| +|08/01/2022 05:41:35| ToT +|08/01/2022 05:41:35| |why is that funny?| +|08/01/2022 05:41:35| ToT +|08/01/2022 05:41:36| UOOOH +|08/01/2022 05:41:36| ;_; +|08/01/2022 05:41:38| KINO +|08/01/2022 05:41:40| |kino ToT| +|08/01/2022 05:41:45| NINJA +|08/01/2022 05:41:47| |it's funny because it's cute| +|08/01/2022 05:41:50| |REPENT NOW BITCH| +|08/01/2022 05:41:52| |i mean yeah i can see how it's cute but what's so funny?| +|08/01/2022 05:41:56| |ARE YOU A BAD ENOUGH DUDE TO SAVE OARAI| +|08/01/2022 05:41:57| |Why didn't shiho disown maho?| +|08/01/2022 05:41:59| |too old| +|08/01/2022 05:41:59| |FUCK YOU SHIHO| +|08/01/2022 05:42:02| him. +|08/01/2022 05:42:12| |based mex, keeping gup alive| +|08/01/2022 05:42:12| >males +|08/01/2022 05:42:13| |buracku forest| +|08/01/2022 05:42:14| |>bullying MEXT lad| +|08/01/2022 05:42:16| |MEXTbros did we perhaps get too cocky?| +|08/01/2022 05:42:19| |2 MALES IN THE SAME ROOM WTF????| +|08/01/2022 05:42:19| |BALD FUCK ENTER| +|08/01/2022 05:42:20| |Megane won't back down| +|08/01/2022 05:42:20| |WORLD CHAMPIONSHIP SEASON 2| +|08/01/2022 05:42:20| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:42:22| |Mext simps for shiho| +|08/01/2022 05:42:24| |mext bros....| +|08/01/2022 05:42:24| |I WANT SHIHO TO BERATE ME FOR NOT BEING ABLE TO GIVE HER A THIRD CHILD| +|08/01/2022 05:42:25| |You can't die before I fuck you as payback| +|08/01/2022 05:42:25| |ANZUUUUUUUUUUUUUUUuoooooooooooh 😭😭😭| +|08/01/2022 05:42:31| |BASED MOM| +|08/01/2022 05:42:34| ANZU +|08/01/2022 05:42:36| "skill" +|08/01/2022 05:42:36| |>NO LUCK| +|08/01/2022 05:42:39| |ANGRY MOM VS THE PTA| +|08/01/2022 05:42:40| |>NO LUCK| +|08/01/2022 05:42:40| |Fucking hags reeee| +|08/01/2022 05:42:40| |BITCH PLEASE| +|08/01/2022 05:42:41| wakarimashita! +|08/01/2022 05:42:42| |>NO LUCK| +|08/01/2022 05:42:42| |married impegnation sex with Anzu| +|08/01/2022 05:42:42| EHhh? +|08/01/2022 05:42:43| |the fucking nerve to shittalk her daughter| +|08/01/2022 05:42:43| |MEXT lad has it hard| +|08/01/2022 05:42:45| |THIS SHALL BE SETTLED WITH A SEX BATTLE| +|08/01/2022 05:42:45| GOTTEEM +|08/01/2022 05:42:46| |I NEED to fuck Anzu| +|08/01/2022 05:42:49| |LUCK = SHAME| +|08/01/2022 05:42:50| |I going to furiously masturbate to Mommy| +|08/01/2022 05:42:51| |she knows they have plot power| +|08/01/2022 05:42:52| |stand your ground mext| +|08/01/2022 05:42:52| |GET FUCKED TSUJI| +|08/01/2022 05:42:53| |mext had a hard life| +|08/01/2022 05:42:54| neeeeeeeee~~ +|08/01/2022 05:42:55| |The situation is under control| +|08/01/2022 05:42:58| |Renta bullied by his future wife Anzu| +|08/01/2022 05:42:58| MIKA +|08/01/2022 05:42:58| reversal +|08/01/2022 05:42:59| EX-LOVERS +|08/01/2022 05:43:01| |I've read a doujin where they fuck| +|08/01/2022 05:43:02| |I thought that was a gun for a second| +|08/01/2022 05:43:03| |HAG MEETUP| +|08/01/2022 05:43:03| |SMUG LOLI| +|08/01/2022 05:43:05| |MIKA'S MOM| +|08/01/2022 05:43:08| Hot +|08/01/2022 05:43:09| |MOMMY MOMMY| +|08/01/2022 05:43:10| |still don't get this guys objectives| +|08/01/2022 05:43:12| |Cute mom| +|08/01/2022 05:43:14| |HOT SINGLE MILF IN YOUR AREA| +|08/01/2022 05:43:15| |MOMMY MOMMY| +|08/01/2022 05:43:16| |marrying the mother the gain access to the daughter| +|08/01/2022 05:43:16| |old hag moment| +|08/01/2022 05:43:18| |Dual MILF action| +|08/01/2022 05:43:18| SHERMAN +|08/01/2022 05:43:18| |what gun would anzu use| +|08/01/2022 05:43:19| |mext is everybodies father| +|08/01/2022 05:43:20| |All i wanted was to close down their school fuck!| +|08/01/2022 05:43:21| |RUMI UOOOOH| +|08/01/2022 05:43:23| |his obj is to give us more GuP| +|08/01/2022 05:43:24| |>missing boko for a tank battle| +|08/01/2022 05:43:24| |USA USA USA| +|08/01/2022 05:43:24| |man those white shermans are hot| +|08/01/2022 05:43:24| Arisu... +|08/01/2022 05:43:25| ninja +|08/01/2022 05:43:26| |NINJA CHINPO| +|08/01/2022 05:43:28| ACTAS +|08/01/2022 05:43:29| ARISU +|08/01/2022 05:43:30| |he holds a grudge against oarai for some reason, never explained, money thing is a farse| +|08/01/2022 05:43:32| |HAGSS REEEEEE GET OUT| +|08/01/2022 05:43:33| |ninja | +|08/01/2022 05:43:35| >ACTAS +|08/01/2022 05:43:35| |ARISU UOOOOOOOOH| +|08/01/2022 05:43:35| |Bermuda attack my prostate...| +|08/01/2022 05:43:39| |recording Arisu| +|08/01/2022 05:43:40| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHH +|08/01/2022 05:43:42| |MEXT GUY IS A MARTYR\| +|08/01/2022 05:43:43| |all white shermans in the soviet winter would've been kino| +|08/01/2022 05:43:45| ACTAS +|08/01/2022 05:43:46| |BOKO'S ON STOP THE MATCH| +|08/01/2022 05:43:46| |That yuri doujin between Miho and Alice's moms| +|08/01/2022 05:43:47| |Arisu is only 13| +|08/01/2022 05:43:47| |Arisu the grey -> arisu the white| +|08/01/2022 05:43:59| |COLLEGE STUDENT| +|08/01/2022 05:44:00| |seriously though mext might have fucked shiho | +|08/01/2022 05:44:00| |lamo boko weeb| +|08/01/2022 05:44:02| |Cute Boko picnic| +|08/01/2022 05:44:02| |would you let your loli wear a skirt that short?| +|08/01/2022 05:44:03| |GANBARE BOKO MUSEUM| +|08/01/2022 05:44:03| DESTROY +|08/01/2022 05:44:05| |guuys i'lm going home boko is on| +|08/01/2022 05:44:06| |BIG phone| +|08/01/2022 05:44:06| |>20 years old| +|08/01/2022 05:44:07| |Chiyo: The fuck is a Boko?| +|08/01/2022 05:44:08| |he doesn't have any motive, literally worse villain than sword art online| +|08/01/2022 05:44:08| |can't be helped| +|08/01/2022 05:44:09| |YOU DID GET APPROVE FROM YOUR WAIFU MOTHER RIGHT ANON| +|08/01/2022 05:44:09| |RAPE CORRECTION| +|08/01/2022 05:44:10| |He became the bad guy to give us more content | +|08/01/2022 05:44:10| |boko ;_;| +|08/01/2022 05:44:12| |press M if you have Maps all over your bedroom walls| +|08/01/2022 05:44:16| |I want to bone that loli| +|08/01/2022 05:44:16| |BOKO ;_;| +|08/01/2022 05:44:16| |DAMN UNIVERSITY CHILD| +|08/01/2022 05:44:18| |give the museum carbon coating| +|08/01/2022 05:44:18| m +|08/01/2022 05:44:19| m +|08/01/2022 05:44:19| Cuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuute! +|08/01/2022 05:44:19| |I'M GONNA BREAK ARISUS BED| +|08/01/2022 05:44:19| /m +|08/01/2022 05:44:23| |I got like 2 maps| +|08/01/2022 05:44:23| |GANBARE MOMO| +|08/01/2022 05:44:26| fail +|08/01/2022 05:44:26| ded +|08/01/2022 05:44:26| |Momo dies during chair incident| +|08/01/2022 05:44:27| CHAIRS +|08/01/2022 05:44:28| >dead +|08/01/2022 05:44:28| |MOMOOO GANBAREE| +|08/01/2022 05:44:28| SEX +|08/01/2022 05:44:29| dead +|08/01/2022 05:44:29| |Poor momo| +|08/01/2022 05:44:30| |stupid momo| +|08/01/2022 05:44:30| kily +|08/01/2022 05:44:30| |KAICHOU ;_;| +|08/01/2022 05:44:31| RIP +|08/01/2022 05:44:31| F +|08/01/2022 05:44:31| GANBARE +|08/01/2022 05:44:32| L +|08/01/2022 05:44:32| |anglerfish reference| +|08/01/2022 05:44:32| |>SHE WILL NEVER SAVE YOU :_:| +|08/01/2022 05:44:32| DEAD +|08/01/2022 05:44:32| |Momo just died| +|08/01/2022 05:44:33| |what happened to momo's family| +|08/01/2022 05:44:34| HAHAHA +|08/01/2022 05:44:34| |DIE MOMO DIE| +|08/01/2022 05:44:34| |ANZU RETURNS| +|08/01/2022 05:44:35| |Mom, if I do good, could you save my fav. franchise for me?| +|08/01/2022 05:44:35| worthless +|08/01/2022 05:44:35| F +|08/01/2022 05:44:36| F +|08/01/2022 05:44:36| |actually dead| +|08/01/2022 05:44:37| |Farewell momo...| +|08/01/2022 05:44:39| ded +|08/01/2022 05:44:39| |Momo tries very hard!| +|08/01/2022 05:44:39| |carbon coated girls| +|08/01/2022 05:44:39| TADAIMA +|08/01/2022 05:44:39| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:44:39| |bAKA BAKA BAKA| +|08/01/2022 05:44:39| owned +|08/01/2022 05:44:40| OOOOOOOOOOOOOANZU +|08/01/2022 05:44:40| F +|08/01/2022 05:44:40| |DUMBASS | +|08/01/2022 05:44:40| ANZU +|08/01/2022 05:44:42| UOOOH +|08/01/2022 05:44:42| F +|08/01/2022 05:44:42| |Poor Momo| +|08/01/2022 05:44:43| |;-; | +|08/01/2022 05:44:43| cry +|08/01/2022 05:44:43| |Anzu, sex, ...| +|08/01/2022 05:44:43| momocry +|08/01/2022 05:44:43| UUUOOOH +|08/01/2022 05:44:44| |I cant beleive Momo is dead| +|08/01/2022 05:44:45| |THANKS TL| +|08/01/2022 05:44:45| |Don't bully Momo!!!!!!!!!| +|08/01/2022 05:44:46| |CUTE MOMO| +|08/01/2022 05:44:47| flat +|08/01/2022 05:44:48| KAAAIIIIIIIIIIIICHOOOOOOOOOOOOO +|08/01/2022 05:44:48| |ANZU GIVE ME SEX| +|08/01/2022 05:44:49| |PROTECT MOMO| +|08/01/2022 05:44:49| Kaichou!!!! +|08/01/2022 05:44:50| crotch +|08/01/2022 05:44:50| okaeri +|08/01/2022 05:44:51| |KAICHOUUUUUUUUUUUUUUUUUUUUUU ;_______;| +|08/01/2022 05:44:51| |;_____________; KAICHOU| +|08/01/2022 05:44:51| ;_; +|08/01/2022 05:44:52| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 05:44:52| anzu +|08/01/2022 05:44:52| |Anzus perfectly flat chest| +|08/01/2022 05:44:52| ;-; +|08/01/2022 05:44:52| cunnnnnyyyy +|08/01/2022 05:44:52| |her face...| +|08/01/2022 05:44:53| |UOH UOH UOH| +|08/01/2022 05:44:53| |face right in the cunny| +|08/01/2022 05:44:54| ;_; +|08/01/2022 05:44:55| |cute voice crack| +|08/01/2022 05:44:58| /u/ +|08/01/2022 05:45:00| |cute voice| +|08/01/2022 05:45:00| |tony kaku| +|08/01/2022 05:45:01| |TONY KAKU| +|08/01/2022 05:45:02| STRONK +|08/01/2022 05:45:03| |/fit/ gamers| +|08/01/2022 05:45:04| damn +|08/01/2022 05:45:05| IKU-NYA +|08/01/2022 05:45:05| |UUOOOOOOOOOH KAICHOU| +|08/01/2022 05:45:05| |FUCKING JACKED| +|08/01/2022 05:45:06| BUFFGALS +|08/01/2022 05:45:07| |TONY WILL SAVE OORAI| +|08/01/2022 05:45:08| HUEG +|08/01/2022 05:45:08| SWOLE +|08/01/2022 05:45:08| |>toses the bar FIT AF| +|08/01/2022 05:45:08| /FIT. +|08/01/2022 05:45:09| |powered up| +|08/01/2022 05:45:09| BUFF +|08/01/2022 05:45:09| |UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 05:45:09| GAINZ +|08/01/2022 05:45:12| /fit/ +|08/01/2022 05:45:13| 😭😭😭😭😭😭 +|08/01/2022 05:45:13| |GET BIG| +|08/01/2022 05:45:13| IKU-NYA +|08/01/2022 05:45:14| buffffffffer +|08/01/2022 05:45:14| FIT +|08/01/2022 05:45:14| ToT +|08/01/2022 05:45:15| |MOMO DUMB| +|08/01/2022 05:45:17| |hobo bunnies| +|08/01/2022 05:45:17| |she still crying| +|08/01/2022 05:45:18| SWOLE +|08/01/2022 05:45:19| |Ripped Nyaa| +|08/01/2022 05:45:19| 😭😭😭😭 +|08/01/2022 05:45:21| |FIT BITCH| +|08/01/2022 05:45:22| |EAT BIG TO GET BIG COME ON| +|08/01/2022 05:45:23| |sobbing momo| +|08/01/2022 05:45:25| |Cute dumb Monmo| +|08/01/2022 05:45:26| |Momo is so cute| +|08/01/2022 05:45:26| :ToT: +|08/01/2022 05:45:30| |Mallard Team killed seven people| +|08/01/2022 05:45:32| |They've gone feral| +|08/01/2022 05:45:32| |AZUSA IN ON SCREEN GUYS!!!| +|08/01/2022 05:45:33| Monobrow +|08/01/2022 05:45:33| |do you forgive Momo?| +|08/01/2022 05:45:35| |dumb deliquents| +|08/01/2022 05:45:38| >monobrow +|08/01/2022 05:45:38| NEETS +|08/01/2022 05:45:38| |who tf thinks momo is cute| +|08/01/2022 05:45:38| |lookit bunny| +|08/01/2022 05:45:40| |A PACK OF WILD SODOKOS| +|08/01/2022 05:45:41| YADA +|08/01/2022 05:45:42| mono-chan! +|08/01/2022 05:45:42| |STUPID DELINQUENTS| +|08/01/2022 05:45:43| |Get over here you shits!| +|08/01/2022 05:45:43| sodokos +|08/01/2022 05:45:44| |SODOCLONE SEEEEEEEEEEEEEX| +|08/01/2022 05:45:44| |cute delinquents| +|08/01/2022 05:45:45| |I THINK MOMO ISVERY CUTE| +|08/01/2022 05:45:46| |Feral kappas| +|08/01/2022 05:45:47| |>they're doing cucumbers in the rabbit cage| +|08/01/2022 05:45:48| sodoko +|08/01/2022 05:45:48| WAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:45:49| |no morals| +|08/01/2022 05:45:50| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +|08/01/2022 05:45:51| |NANI SORE| +|08/01/2022 05:45:54| ;_; +|08/01/2022 05:45:55| CUUUUUUUUUUUTE +|08/01/2022 05:45:57| ;_; +|08/01/2022 05:45:57| |Momo is cute! Momo does her best! Momo is a good girl!| +|08/01/2022 05:45:57| |RAPE correct them, Mako| +|08/01/2022 05:45:58| ToT +|08/01/2022 05:45:58| |Sad lolis| +|08/01/2022 05:45:59| |momo is the definition of unsexy| +|08/01/2022 05:45:59| |cutest train| +|08/01/2022 05:45:59| ;__; +|08/01/2022 05:46:00| ;_; +|08/01/2022 05:46:00| :o: +|08/01/2022 05:46:00| ;_; +|08/01/2022 05:46:01| UOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 05:46:02| |AS EXPECTED OF COUNTRY VEGETABLES| +|08/01/2022 05:46:03| |need moral correction| +|08/01/2022 05:46:03| |geta haircut, and join them mako| +|08/01/2022 05:46:06| |ANZU PULLS THROUGH| +|08/01/2022 05:46:15| |TL Note: "Anzu" means "SEX"| +|08/01/2022 05:46:16| |"""for sure"""| +|08/01/2022 05:46:16| ANZU +|08/01/2022 05:46:18| |MOMO SEXY NICE JOKE BRO| +|08/01/2022 05:46:18| |THANKS TL| +|08/01/2022 05:46:19| |this time for reals guys trust the plan| +|08/01/2022 05:46:20| |THANKS TL| +|08/01/2022 05:46:22| |THANKS TL| +|08/01/2022 05:46:24| |it's True because this paper says so| +|08/01/2022 05:46:24| |tanks tl| +|08/01/2022 05:46:24| |brb eating bread| +|08/01/2022 05:46:25| |anzU ANZU| +|08/01/2022 05:46:28| |I didnt say sexy I said cute| +|08/01/2022 05:46:31| ない +|08/01/2022 05:46:33| SODA +|08/01/2022 05:46:33| NAI! +|08/01/2022 05:46:34| |Elim match against 30 tanks I think we're getting to cocky madam SEX| +|08/01/2022 05:46:35| SASUGA +|08/01/2022 05:46:35| |I want to Anzu Anzu's Anzu| +|08/01/2022 05:46:37| Soda? +|08/01/2022 05:46:39| SODA +|08/01/2022 05:46:42| tabun +|08/01/2022 05:46:43| SODA +|08/01/2022 05:46:44| SODA +|08/01/2022 05:46:45| |kana ueda's voice is pure sex| +|08/01/2022 05:46:45| |is there a real difference in the gup community| +|08/01/2022 05:46:49| KANI? +|08/01/2022 05:46:50| FANTA +|08/01/2022 05:46:51| PEPSI +|08/01/2022 05:46:52| >subs +|08/01/2022 05:46:55| OOOOOOOOOH +|08/01/2022 05:46:56| KANI!! +|08/01/2022 05:46:58| YAROO! +|08/01/2022 05:47:00| SPRITE? +|08/01/2022 05:47:01| |BUNNY TUMMY UOOOOOOOOOH| +|08/01/2022 05:47:03| kani +|08/01/2022 05:47:03| |KANI KAERO| +|08/01/2022 05:47:04| FLOOF +|08/01/2022 05:47:06| |HELL YEAH| +|08/01/2022 05:47:09| UOOOOOHHH +|08/01/2022 05:47:10| GANBARE +|08/01/2022 05:47:11| cheer +|08/01/2022 05:47:11| Workerbros... +|08/01/2022 05:47:12| |HAI HAI| +|08/01/2022 05:47:13| ARISU +|08/01/2022 05:47:15| |Miho autism: Activate| +|08/01/2022 05:47:15| |Getting way too cocky here| +|08/01/2022 05:47:16| GANBARE! +|08/01/2022 05:47:17| |umi 1 umi 2 umi 3| +|08/01/2022 05:47:22| |I'm going to FUCK Anzu| +|08/01/2022 05:47:22| |rip workers strike| +|08/01/2022 05:47:24| |smart cunny| +|08/01/2022 05:47:25| |Nah couldn't be| +|08/01/2022 05:47:25| |TENSAI SHOUJO| +|08/01/2022 05:47:30| |anon is going to FUCK me| +|08/01/2022 05:47:30| |what do you think about Arisu?| +|08/01/2022 05:47:32| |ADULT BODY| +|08/01/2022 05:47:33| |is it a reference to korean war?| +|08/01/2022 05:47:36| |CUNNY CUNNY CUNNY CUNNY| +|08/01/2022 05:47:39| |I love Alice| +|08/01/2022 05:47:39| yes +|08/01/2022 05:47:40| |nishizumi style is the worst | +|08/01/2022 05:47:41| |rip, going to bed bros| +|08/01/2022 05:47:43| |oh no| +|08/01/2022 05:47:44| |DO YOU THINK THAT THE FINAL FILM WILL HAVE THE TEAMS USE THE MODERN TANKS?| +|08/01/2022 05:47:45| CRAB +|08/01/2022 05:47:46| |UNiversity, get it| +|08/01/2022 05:47:49| |enjoy the marathon| +|08/01/2022 05:47:51| |CRAB 17| +|08/01/2022 05:47:53| ANZU +|08/01/2022 05:47:55| |remember to wake up to das finale 3| +|08/01/2022 05:48:02| |gn anon| +|08/01/2022 05:48:02| |RIP bogs| +|08/01/2022 05:48:05| |Call in the crew| +|08/01/2022 05:48:07| |>MODERN MBTs >TANKS WITH SOUL >PICK ONE| +|08/01/2022 05:48:08| |rip ;_;| +|08/01/2022 05:48:10| |eee bowt| +|08/01/2022 05:48:10| |lmao get fucked Ooarai| +|08/01/2022 05:48:11| RIP +|08/01/2022 05:48:13| |100 TANK MATCH WHEN| +|08/01/2022 05:48:15| |Im gonna call some friends...| +|08/01/2022 05:48:15| |FUCK MEXT| +|08/01/2022 05:48:15| |They won?... Close it| +|08/01/2022 05:48:16| >males +|08/01/2022 05:48:17| |domp eeeeeet| +|08/01/2022 05:48:21| |done eating bread| +|08/01/2022 05:48:22| hello +|08/01/2022 05:48:22| |MEXT loves GUP!| +|08/01/2022 05:48:26| |This fuck| +|08/01/2022 05:48:28| |Based Males| +|08/01/2022 05:48:32| |MOMO NOOO| +|08/01/2022 05:48:32| |Based man| +|08/01/2022 05:48:33| |RIGGED MATCH| +|08/01/2022 05:48:34| ;_; +|08/01/2022 05:48:36| |plant landmines | +|08/01/2022 05:48:36| |no way| +|08/01/2022 05:48:37| |big ree| +|08/01/2022 05:48:38| momo +|08/01/2022 05:48:38| |i hope you had good bread anon| +|08/01/2022 05:48:38| |CHAD MEXT| +|08/01/2022 05:48:41| |Dat OST tho| +|08/01/2022 05:48:44| ORZ +|08/01/2022 05:48:44| |THE JEWS DID AGAIN| +|08/01/2022 05:48:45| |Annihilation rules are the funnest rules anyways tbh| +|08/01/2022 05:48:45| RIGGED +|08/01/2022 05:48:47| |momo ;_______;| +|08/01/2022 05:48:48| |yeah, fuckin landmines| +|08/01/2022 05:48:50| |The match was rigged from the start| +|08/01/2022 05:48:51| |TRUTH IS THE MATCH WAS RIGGED FROM THE START| +|08/01/2022 05:48:53| |Slit their throats while they sleep| +|08/01/2022 05:48:54| |Fucker is going to get run over| +|08/01/2022 05:48:54| ((((((MEXT)))))) +|08/01/2022 05:48:56| anzu +|08/01/2022 05:48:59| |DEFEAT IS NOT AN OPTION| +|08/01/2022 05:49:01| anzu +|08/01/2022 05:49:01| |how does Miho fucking do it| +|08/01/2022 05:49:03| |Sudden Death is boring anyway| +|08/01/2022 05:49:03| |This match is fair| +|08/01/2022 05:49:03| |train dogs to run under their tanks with explosives | +|08/01/2022 05:49:03| |it was good bread| +|08/01/2022 05:49:09| |yukari miner helmet| +|08/01/2022 05:49:10| |Just win then 4Head| +|08/01/2022 05:49:10| :D +|08/01/2022 05:49:11| |Yukari's autistic headlight| +|08/01/2022 05:49:12| |>implying /ourlad/ is a jew WRONG| +|08/01/2022 05:49:12| |MEXT brothers and sisters, we can scrap this piece of shit ship| +|08/01/2022 05:49:12| |RING A DING BABY| +|08/01/2022 05:49:12| |look at that cute dork with the headlamp| +|08/01/2022 05:49:14| |How many tournaments has MEXT guy been kicked out of? 109?| +|08/01/2022 05:49:14| NORIKO<3 +|08/01/2022 05:49:14| <<<((({{{MEXT}}})))>>> +|08/01/2022 05:49:20| :D +|08/01/2022 05:49:22| |What film is that?| +|08/01/2022 05:49:26| 1941 +|08/01/2022 05:49:27| |hogans heroes| +|08/01/2022 05:49:27| |More movies| +|08/01/2022 05:49:28| 1941 +|08/01/2022 05:49:34| |NERD GIRLS ARE GETTING FIT| +|08/01/2022 05:49:37| sobs +|08/01/2022 05:49:37| >SLAG +|08/01/2022 05:49:40| |USA USA USA USA USA USA USA USA | +|08/01/2022 05:49:40| |Thank god for autopilot| +|08/01/2022 05:49:41| ???????????? +|08/01/2022 05:49:41| |WHAT THE FUCK ARE YOU TALKING ABOUT DARJELING| +|08/01/2022 05:49:41| |SHUT THE FUCK UP| +|08/01/2022 05:49:41| |BONO MY TRACKS| +|08/01/2022 05:49:43| |USA USA USA| +|08/01/2022 05:49:47| ??????????????? +|08/01/2022 05:49:48| ???????????? +|08/01/2022 05:49:48| |Messy gremlin| +|08/01/2022 05:49:49| ERIKA +|08/01/2022 05:49:50| |BLESSED DARJEELING| +|08/01/2022 05:49:50| |you know this saying?| +|08/01/2022 05:49:52| |WHAT IS THIS SLUT SAYING| +|08/01/2022 05:49:53| |This video is hosted www.123movies.com| +|08/01/2022 05:49:53| ????????????????????????????????????????????????????????????? +|08/01/2022 05:49:54| hobo +|08/01/2022 05:49:54| ????????????????/ +|08/01/2022 05:49:54| |do they have the rights to kelly's heroes and 1941? gonna call my lawyer| +|08/01/2022 05:49:54| |kek Erika driving a blimp| +|08/01/2022 05:49:54| |SHUT THE FUCK UP DARJEELING| +|08/01/2022 05:49:55| ???????????????? +|08/01/2022 05:49:56| |Shut up, dumb brit| +|08/01/2022 05:49:56| :DDDDD +|08/01/2022 05:49:56| |>Using the code given to the French Resistance that D Day was starting >Clever GuP| +|08/01/2022 05:49:57| :DDDDDDDD +|08/01/2022 05:49:57| |this song is is home sweet home btw| +|08/01/2022 05:49:57| HOBOS +|08/01/2022 05:49:58| nerd +|08/01/2022 05:49:59| HEDONISM +|08/01/2022 05:50:00| |fug :DDDDDDD| +|08/01/2022 05:50:03| |let the invasion commence| +|08/01/2022 05:50:06| Fuggg +|08/01/2022 05:50:06| |Spank Naomi and Alisa Y/Y| +|08/01/2022 05:50:06| |I do| +|08/01/2022 05:50:06| |benis :DDD| +|08/01/2022 05:50:07| :DDD +|08/01/2022 05:50:07| |I condone hedonism with Mika| +|08/01/2022 05:50:08| BENIS +|08/01/2022 05:50:08| |I still don't know what Darjeeling was quoting there| +|08/01/2022 05:50:09| :DDDDDDDDDDDDDDDDDD +|08/01/2022 05:50:11| :DDDDDDDD +|08/01/2022 05:50:13| Y +|08/01/2022 05:50:14| :DDDDDD +|08/01/2022 05:50:15| |I like this scene very much, bros.| +|08/01/2022 05:50:16| YYYYYYYYYYYYYYYYYYY +|08/01/2022 05:50:16| Verlaine +|08/01/2022 05:50:20| |This school is FUCKED| +|08/01/2022 05:50:21| |Mika's senshado of ascetism| +|08/01/2022 05:50:24| Ebin +|08/01/2022 05:50:25| |CUTE ALICE| +|08/01/2022 05:50:27| |Want to watch Boko together?| +|08/01/2022 05:50:28| |UOOOOOOOOOHHHHHH ARISU| +|08/01/2022 05:50:30| Arisu... +|08/01/2022 05:50:30| |Maho sounds kinda weird here| +|08/01/2022 05:50:30| ENTER +|08/01/2022 05:50:31| |WE GOT THIS BROS RIGHT?| +|08/01/2022 05:50:34| MATTEEEEEEE +|08/01/2022 05:50:34| |Why are the referees so fucking sexy?| +|08/01/2022 05:50:34| |Oorai's got this| +|08/01/2022 05:50:34| |Can't believe Darjeeling is gathering everyone to laugh at Miho's defeat against University| +|08/01/2022 05:50:34| ENTER +|08/01/2022 05:50:37| ENTER +|08/01/2022 05:50:39| ! +|08/01/2022 05:50:39| |OB DIE SONNNE UNS LACVHT| +|08/01/2022 05:50:39| |tea time| +|08/01/2022 05:50:40| |Best scene in the whole anime here| +|08/01/2022 05:50:41| MAHO +|08/01/2022 05:50:41| ENTER +|08/01/2022 05:50:41| |SIEG HEIL| +|08/01/2022 05:50:41| PANZERLIED +|08/01/2022 05:50:41| ENTER +|08/01/2022 05:50:42| |E N T E R| +|08/01/2022 05:50:43| |VOLUNTEER OORAI'S| +|08/01/2022 05:50:43| ENTER +|08/01/2022 05:50:43| ENTER +|08/01/2022 05:50:43| |>Miho is bigger than Alice| +|08/01/2022 05:50:44| |no montage | +|08/01/2022 05:50:45| |KITA :D| +|08/01/2022 05:50:46| Cavalry! +|08/01/2022 05:50:46| |Maho is my wife| +|08/01/2022 05:50:47| MATTE +|08/01/2022 05:50:48| 88 +|08/01/2022 05:50:48| |EISKALT DIE NACHT| +|08/01/2022 05:50:48| |OB DIE SUNNE UNS LACHT| +|08/01/2022 05:50:49| ONEECHAN +|08/01/2022 05:50:49| |SIEG HEIL| +|08/01/2022 05:50:50| |HERE COMES THE CAVALRY| +|08/01/2022 05:50:50| |HAIL MAHO| +|08/01/2022 05:50:50| |OOOOOO MAHO| +|08/01/2022 05:50:50| |BIG MAHOOS| +|08/01/2022 05:50:50| based +|08/01/2022 05:50:51| ENTER +|08/01/2022 05:50:51| |HAIL HITLER| +|08/01/2022 05:50:51| CUTE +|08/01/2022 05:50:52| MATTAAAA +|08/01/2022 05:50:52| |$60 000 ON ARISU. I CAN FEEL IT| +|08/01/2022 05:50:52| |sex with Alice Y/N?| +|08/01/2022 05:50:54| |our panzer waifus are here| +|08/01/2022 05:50:55| Kino +|08/01/2022 05:50:55| ONAJIKU +|08/01/2022 05:50:55| 1488 +|08/01/2022 05:50:56| |FROH IST UNSER SINN| +|08/01/2022 05:50:56| Y +|08/01/2022 05:50:57| |HEIL HITLER| +|08/01/2022 05:50:58| WOHOI +|08/01/2022 05:50:59| Y +|08/01/2022 05:51:00| |BIG MAHOS| +|08/01/2022 05:51:00| |Send Volunteer Divisions?| +|08/01/2022 05:51:00| |ERKIAm CUTE| +|08/01/2022 05:51:00| |Damn shes stacked| +|08/01/2022 05:51:02| ERRRRRRRRRRRRRRRRRRRRRRRRRRIKA +|08/01/2022 05:51:02| |Wani redemption begins now| +|08/01/2022 05:51:02| |IN STURMWIND DAHIN| +|08/01/2022 05:51:02| |REDEMPTION ARC| +|08/01/2022 05:51:03| Y +|08/01/2022 05:51:03| KINO +|08/01/2022 05:51:06| |ERIKA IS MY WIFE| +|08/01/2022 05:51:06| |BESTAUBT SIND DIE GESICHTER DOCH FROH IST UNSER SINN| +|08/01/2022 05:51:07| Y +|08/01/2022 05:51:07| 1488 +|08/01/2022 05:51:07| O/ +|08/01/2022 05:51:08| |WANI KAWAIIIIIII| +|08/01/2022 05:51:08| |WANI KANI| +|08/01/2022 05:51:10| |Erika's really cute with that uniform| +|08/01/2022 05:51:11| WANI +|08/01/2022 05:51:11| N +|08/01/2022 05:51:11| |REVERSE RIGGING| +|08/01/2022 05:51:12| UNITY +|08/01/2022 05:51:13| |WANI WANI WANI| +|08/01/2022 05:51:13| |MEXT NOOOOOOOO| +|08/01/2022 05:51:13| |best part of the movie right here| +|08/01/2022 05:51:14| |ENTER X2| +|08/01/2022 05:51:14| |HEIL MAHO| +|08/01/2022 05:51:14| |GAS MEXT SENSHADO WARS NOW| +|08/01/2022 05:51:15| |AMERICANS!!!! USA!! USA !| +|08/01/2022 05:51:15| KINO +|08/01/2022 05:51:16| |Nobody will doubt my cute waif| +|08/01/2022 05:51:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:19| |U S A | +|08/01/2022 05:51:20| ENTER +|08/01/2022 05:51:20| |>that's underhanded| +|08/01/2022 05:51:20| |MASSIVE KAY MILKERS| +|08/01/2022 05:51:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:21| |They're adding them without Alice's consent?| +|08/01/2022 05:51:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:21| |USA USA USA USA| +|08/01/2022 05:51:22| USA +|08/01/2022 05:51:22| |USA USA USA| +|08/01/2022 05:51:22| |USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +|08/01/2022 05:51:23| murrica +|08/01/2022 05:51:23| |alright man| +|08/01/2022 05:51:24| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:24| |USA USA USA| +|08/01/2022 05:51:24| |USA USA USA| +|08/01/2022 05:51:25| |VSA VSA VSA VSA VSA VSA VSA VSA VSA | +|08/01/2022 05:51:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:25| |USA USA USA| +|08/01/2022 05:51:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:26| |LETS FUCKING GOOOOOO| +|08/01/2022 05:51:27| |SEETHING MEXT| +|08/01/2022 05:51:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:27| |USA USA USA| +|08/01/2022 05:51:28| |USA USA USA USA USA YSA| +|08/01/2022 05:51:28| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:28| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 05:51:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:29| |USA USA USA USA USA USA | +|08/01/2022 05:51:29| CUEKCEd +|08/01/2022 05:51:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:29| |USA USA USA USA| +|08/01/2022 05:51:30| |That's not fair| +|08/01/2022 05:51:31| |ENTER X3| +|08/01/2022 05:51:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:33| |EDF DEPLOYS| +|08/01/2022 05:51:33| |USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:51:34| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:34| |usa USA usa USA usa USA usa USA usa USA usa USA | +|08/01/2022 05:51:34| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:34| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 05:51:35| |USA USA USA USA USA USA| +|08/01/2022 05:51:35| KATYUSHA??!! +|08/01/2022 05:51:35| |USSR USSR USSR USSR !!!!| +|08/01/2022 05:51:36| |come marching in| +|08/01/2022 05:51:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:37| |HIS TRUTH IS MARCHING ON| +|08/01/2022 05:51:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:37| |NONNA'S KNOCKERS| +|08/01/2022 05:51:38| |ALL THE HEROES| +|08/01/2022 05:51:38| |URA URA URA URA URA URA URA URA URA| +|08/01/2022 05:51:38| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:38| |pff why is the gremlim here| +|08/01/2022 05:51:39| URA +|08/01/2022 05:51:39| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:39| UOOOOOOOOOOOOOOHHHHHHHHHHH +|08/01/2022 05:51:40| |USA USA USA| +|08/01/2022 05:51:40| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:40| UUUUURAAAAAAA +|08/01/2022 05:51:40| |usa stop now| +|08/01/2022 05:51:40| |USA USA USA USA USA USA USA USA | +|08/01/2022 05:51:41| |USSR USSR USSR USSR USSR| +|08/01/2022 05:51:42| |cute child| +|08/01/2022 05:51:42| KATYUSHA +|08/01/2022 05:51:43| URAA +|08/01/2022 05:51:44| |USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 05:51:44| |Spank Alisa and Naomi Y/Y| +|08/01/2022 05:51:46| |KATYUSHA KATYUSHA KATYUSHA| +|08/01/2022 05:51:46| |ENTER X4| +|08/01/2022 05:51:46| URAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:48| |USSR USSR USSR USSR| +|08/01/2022 05:51:48| UUUUUUUURRRRRRRRRRAAAAAAAAAAAAAAAAA +|08/01/2022 05:51:48| |CAM ON INGERLAND| +|08/01/2022 05:51:50| ROSSIYA +|08/01/2022 05:51:50| URAAA +|08/01/2022 05:51:51| |oy it's 12 bong| +|08/01/2022 05:51:52| Smuhtuysha +|08/01/2022 05:51:52| |katyishas thighs| +|08/01/2022 05:51:52| |FUCK YES HYPE| +|08/01/2022 05:51:52| |BRITISH GRENADIERS | +|08/01/2022 05:51:53| |SLEEVE JOBS| +|08/01/2022 05:51:53| |You know this saying?| +|08/01/2022 05:51:54| SLAGS +|08/01/2022 05:51:54| |FUCK OFF SLAG| +|08/01/2022 05:51:54| >Fleshfang +|08/01/2022 05:51:54| >slags +|08/01/2022 05:51:55| sleeeves +|08/01/2022 05:51:55| |Cute sleeves| +|08/01/2022 05:51:56| |ENTER BONGS| +|08/01/2022 05:51:57| ?????????????????????????????? +|08/01/2022 05:51:57| ??????????????????????????????????????????????? +|08/01/2022 05:51:58| |REMEMBER LADS| +|08/01/2022 05:51:58| |INGLAND INGLAND INGLAND INGLAND| +|08/01/2022 05:51:59| ducebros? +|08/01/2022 05:52:00| |PRESS P TO PEE IN DARJEELING'S TEA| +|08/01/2022 05:52:01| ?????????????????????????????????????????????????? +|08/01/2022 05:52:01| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE!| +|08/01/2022 05:52:01| |DVCE DVCE DVCE| +|08/01/2022 05:52:02| PEKOEEEEE +|08/01/2022 05:52:02| |DARL TEAJOB| +|08/01/2022 05:52:02| UK? +|08/01/2022 05:52:02| bongs +|08/01/2022 05:52:02| ???????!!! +|08/01/2022 05:52:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:03| |BEST GIRL| +|08/01/2022 05:52:03| DUCE +|08/01/2022 05:52:04| >bongs +|08/01/2022 05:52:05| ????????????? +|08/01/2022 05:52:05| WHOOO +|08/01/2022 05:52:05| P +|08/01/2022 05:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:06| ?????????????????? +|08/01/2022 05:52:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:07| |DUCE DUCE DUCE| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE \| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:07| |DARJEELING IS A DORK| +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:07| DVCE +|08/01/2022 05:52:07| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:52:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:08| DVCE +|08/01/2022 05:52:09| |DUCE DUCE| +|08/01/2022 05:52:09| ????????????? +|08/01/2022 05:52:09| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:52:09| |DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:09| |FUNICULI FUNICULA| +|08/01/2022 05:52:09| |DUCE DUCE DUCE| +|08/01/2022 05:52:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:10| |REAL MVP| +|08/01/2022 05:52:10| |ENTER X5| +|08/01/2022 05:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:11| Duce +|08/01/2022 05:52:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:11| |DUCE DUCE DUCE| +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:12| DUCE +|08/01/2022 05:52:12| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:52:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:13| |CAM ON DARJEELINGERLAND| +|08/01/2022 05:52:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:14| |DVCE DVCE| +|08/01/2022 05:52:14| TAKA-CHAN +|08/01/2022 05:52:14| |DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:15| DUCE +|08/01/2022 05:52:15| |DVCE DVCE DVCE DVEC DEVEC| +|08/01/2022 05:52:15| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:15| DUCE +|08/01/2022 05:52:16| |DUCE DUCE DUCE| +|08/01/2022 05:52:16| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:18| |DUCE DUCE| +|08/01/2022 05:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:18| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 05:52:18| |DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:19| :DDDDDDDDDDDDDDDD +|08/01/2022 05:52:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:20| |DUCE DUCE| +|08/01/2022 05:52:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:21| |DUCE DUCE DUCE| +|08/01/2022 05:52:21| DUCE +|08/01/2022 05:52:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:22| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:22| :DDDDDDDDDDDDD +|08/01/2022 05:52:22| |DUCE DUCE DUCE | +|08/01/2022 05:52:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:22| |finns :DDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:52:23| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:23| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:23| |:DDDDDDD | +|08/01/2022 05:52:24| :DDDDDD +|08/01/2022 05:52:25| |DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:25| |DUCE DUCE DUCE DUCE| +|08/01/2022 05:52:25| |DVCE DVCE DVCE DVCE| +|08/01/2022 05:52:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:26| |FUGG BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:52:26| |DUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCE| +|08/01/2022 05:52:26| :DDDDDDDDDD +|08/01/2022 05:52:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:26| |BENIS :DDDDD| +|08/01/2022 05:52:26| |PERKELE :D| +|08/01/2022 05:52:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:26| EBIN +|08/01/2022 05:52:26| |FUGGG :DDDDD| +|08/01/2022 05:52:27| |fug :-DDDDDDDDDDDDDDD| +|08/01/2022 05:52:27| |Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce Duce | +|08/01/2022 05:52:27| |:DDDDDDD | +|08/01/2022 05:52:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:27| |DUCE DUCE| +|08/01/2022 05:52:27| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:27| |FUG :DDDDDDDDDDDDD| +|08/01/2022 05:52:28| :DDDDD +|08/01/2022 05:52:28| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:28| |BENIS :DDDDDDDDDDDDDDDDDDDDDdddddddddddddddddddddd| +|08/01/2022 05:52:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:52:28| :DDDDDDDDDDDDDDDDDDDDDDDd +|08/01/2022 05:52:29| |DUCE i guess| +|08/01/2022 05:52:29| |OH FUGGGG :DDDDDDDDDDD| +|08/01/2022 05:52:30| :DDDDDDDDDDDDDD +|08/01/2022 05:52:30| |PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 05:52:30| :DDDDDDD +|08/01/2022 05:52:30| |BERGELE :DDDDDDDDD| +|08/01/2022 05:52:30| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:52:31| |FUGG :DDDDD| +|08/01/2022 05:52:31| |SUOMI PERKELE| +|08/01/2022 05:52:32| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:32| |:D :D :D| +|08/01/2022 05:52:32| :DDDDD +|08/01/2022 05:52:32| DDDD +|08/01/2022 05:52:33| |>THE WIND| +|08/01/2022 05:52:33| Bakas +|08/01/2022 05:52:33| |not dvce :(| +|08/01/2022 05:52:33| TOTSUGEKI! +|08/01/2022 05:52:34| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:52:34| ???? +|08/01/2022 05:52:34| |MIGA :DDDDD| +|08/01/2022 05:52:35| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:35| |BAKA BRIGADE IS HERE| +|08/01/2022 05:52:35| |Who the devil are you?| +|08/01/2022 05:52:35| BANZAI +|08/01/2022 05:52:36| TOTSUGEKI +|08/01/2022 05:52:36| |MIGA :DDDDD| +|08/01/2022 05:52:36| |fugg :DDDDDDDDDDDD| +|08/01/2022 05:52:36| :DDDDDDDDDDDDDDDDD +|08/01/2022 05:52:37| TOTSUGEKI +|08/01/2022 05:52:37| |Who are these nerds?| +|08/01/2022 05:52:37| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:52:37| |TOTSUGEKI TOTSUGEKI| +|08/01/2022 05:52:38| TOTSUGEKI +|08/01/2022 05:52:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 05:52:38| |What are finns called even?| +|08/01/2022 05:52:38| |BEENIIIS :DDDDDDDDDDD| +|08/01/2022 05:52:39| IDIOTS +|08/01/2022 05:52:40| |YUKI NO SHINGUN| +|08/01/2022 05:52:40| |why did mika agree to fight her sister?| +|08/01/2022 05:52:40| TOTSUTKEGI +|08/01/2022 05:52:40| BENIS +|08/01/2022 05:52:40| >22 +|08/01/2022 05:52:40| BAKAS +|08/01/2022 05:52:41| |TENNO HEIKA BANZAI!!!!!| +|08/01/2022 05:52:41| |TOTSUGEKI | +|08/01/2022 05:52:42| TOTSUGEKI +|08/01/2022 05:52:42| bakas +|08/01/2022 05:52:43| TOTSUGEKI +|08/01/2022 05:52:43| |fucking totsubakas| +|08/01/2022 05:52:45| >MEMEHITAN +|08/01/2022 05:52:45| |TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI| +|08/01/2022 05:52:46| retard +|08/01/2022 05:52:46| bsks +|08/01/2022 05:52:47| BANZAAAIII +|08/01/2022 05:52:48| BANZAI +|08/01/2022 05:52:49| |CO-SENSHADO SPHERE| +|08/01/2022 05:52:51| |TENNO HEIKA BANZAI!!!!!| +|08/01/2022 05:52:54| |NOT A CAPABLE SOLDIER| +|08/01/2022 05:52:54| |FUCKING KINO SCENE| +|08/01/2022 05:52:55| |big heart on that one| +|08/01/2022 05:53:00| KINO +|08/01/2022 05:53:02| |KINO AF| +|08/01/2022 05:53:03| |TOO FUCKING KINO| +|08/01/2022 05:53:03| |Caesar x carpaccio | +|08/01/2022 05:53:04| |My favorite scene in this anime| +|08/01/2022 05:53:05| |They all look cute wearing Oarai's uniform| +|08/01/2022 05:53:05| |Arisu so cool| +|08/01/2022 05:53:06| |Megane subverted| +|08/01/2022 05:53:06| |ALICE IS 20 AND IN UNVERSITY| +|08/01/2022 05:53:06| |OPERATION BOUNCY| +|08/01/2022 05:53:08| |WHO BROUGHT THE GUN BIKE?| +|08/01/2022 05:53:09| >BIKEART +|08/01/2022 05:53:11| |THE SWAG?| +|08/01/2022 05:53:11| |arisu's hebe cunny| +|08/01/2022 05:53:12| |they shouldve brought more panthers instead of 6 jap tanks| +|08/01/2022 05:53:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:53:13| |BASED ALICE| +|08/01/2022 05:53:16| |if I take away your school, will you die?| +|08/01/2022 05:53:21| |DUCE DUCE DUCE| +|08/01/2022 05:53:21| >WESTERNERS +|08/01/2022 05:53:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:53:22| qt +|08/01/2022 05:53:23| |RIDE ME KATYUSHA| +|08/01/2022 05:53:23| |DEATH STARE| +|08/01/2022 05:53:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:53:24| SCARY +|08/01/2022 05:53:25| maho_glare.png +|08/01/2022 05:53:25| MOGGED +|08/01/2022 05:53:26| |THE SLAVS FEAR THE GERMANS| +|08/01/2022 05:53:26| |It would be very sad| +|08/01/2022 05:53:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:53:27| Anzu +|08/01/2022 05:53:28| |Superious bike machine gun\| +|08/01/2022 05:53:28| |Based Westerners| +|08/01/2022 05:53:28| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:53:29| |WEST IS BEST| +|08/01/2022 05:53:29| |katyishas thighs| +|08/01/2022 05:53:30| |Maho shutting Katyusha down| +|08/01/2022 05:53:31| CUTE +|08/01/2022 05:53:32| Kowai!!! +|08/01/2022 05:53:39| |CUTE CUTE CUTE| +|08/01/2022 05:53:44| |CTU CTU CTU| +|08/01/2022 05:53:46| |press C to have Nonna Crush your skull with her thighs| +|08/01/2022 05:53:47| |CTU CTU CTU CTU CTU| +|08/01/2022 05:53:47| |Too bad BC isn't here for this| +|08/01/2022 05:53:48| |katysusha will never fuck the back of your head| +|08/01/2022 05:53:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:53:53| C +|08/01/2022 05:53:56| tampopo +|08/01/2022 05:53:56| C +|08/01/2022 05:53:58| CUTE +|08/01/2022 05:53:58| POPOTAN +|08/01/2022 05:54:00| AN +|08/01/2022 05:54:01| |Morning Glory means boner | +|08/01/2022 05:54:03| |I'd rather have katyusha crush me| +|08/01/2022 05:54:06| totsugeki +|08/01/2022 05:54:09| |Let Miho make the plan retards| +|08/01/2022 05:54:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:13| uhh +|08/01/2022 05:54:13| |Want some pasta?| +|08/01/2022 05:54:13| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 05:54:13| TOTSUGEKI +|08/01/2022 05:54:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:14| TOTSUGEKI +|08/01/2022 05:54:14| TOTSUGEKI +|08/01/2022 05:54:14| DUCE +|08/01/2022 05:54:15| |No, only Erika's thighs are allowed to crush me| +|08/01/2022 05:54:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:15| PASTA +|08/01/2022 05:54:15| TOTSUGEKI +|08/01/2022 05:54:16| |DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:16| DUCE +|08/01/2022 05:54:17| >Pasta +|08/01/2022 05:54:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:17| |JUST STALL FOR WINTER| +|08/01/2022 05:54:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:18| TOTSUGEKI +|08/01/2022 05:54:18| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:54:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:19| PASTA +|08/01/2022 05:54:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:20| TOTSUGEKI +|08/01/2022 05:54:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:21| pasta +|08/01/2022 05:54:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:22| |Shut up Nishi| +|08/01/2022 05:54:23| |PASTA | +|08/01/2022 05:54:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 05:54:25| TOTSUGEKI +|08/01/2022 05:54:25| |Best plan is pasta| +|08/01/2022 05:54:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:27| |DUCE IS CTU| +|08/01/2022 05:54:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:28| CTU +|08/01/2022 05:54:28| |just wait until winter lol| +|08/01/2022 05:54:29| |BASED DUCE| +|08/01/2022 05:54:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:34| |LOOK AT ALL THOSE TITS| +|08/01/2022 05:54:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:34| |Yeah but what about the pasta?| +|08/01/2022 05:54:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:37| DUCE +|08/01/2022 05:54:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:39| |Put the finn in the bin| +|08/01/2022 05:54:39| MIKAAAAA +|08/01/2022 05:54:40| |OPERATION SAYING| +|08/01/2022 05:54:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:54:41| OPERA! +|08/01/2022 05:54:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:41| |3 CHEESE PIZZA| +|08/01/2022 05:54:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:46| pizza +|08/01/2022 05:54:46| ??????????????? +|08/01/2022 05:54:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:54:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:54:48| |worst cuisine| +|08/01/2022 05:54:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:54:48| |ITS HERE| +|08/01/2022 05:54:49| |fish n chips love| +|08/01/2022 05:54:51| |>BRITISH FOOD| +|08/01/2022 05:54:51| |>fish and chips| +|08/01/2022 05:54:51| |IT DOESN'T HAVE TO BE BEEF| +|08/01/2022 05:54:51| |no darj| +|08/01/2022 05:54:51| |>BEEF STROGANOFF >HELLO /SGG/| +|08/01/2022 05:54:52| |>GRAVY SAUCE| +|08/01/2022 05:54:53| ??????????????? +|08/01/2022 05:54:53| Fug +|08/01/2022 05:54:54| |DUCECHADS REPORT| +|08/01/2022 05:54:56| |stfu | +|08/01/2022 05:54:56| |OPERATION GO AROUND| +|08/01/2022 05:54:58| |bri'ish food| +|08/01/2022 05:54:58| |fish n chips| +|08/01/2022 05:54:59| |Kay best| +|08/01/2022 05:54:59| |Who is the biggest GuP?| +|08/01/2022 05:54:59| |OPERATION DUCE | +|08/01/2022 05:54:59| |Wait for winter may be a legit strategy if they sail north.| +|08/01/2022 05:54:59| |BOYS DON'T KNOW| +|08/01/2022 05:55:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 05:55:04| |BOYS DON'T KNOW ABOUT BEEF STROGANOFF| +|08/01/2022 05:55:05| autism +|08/01/2022 05:55:06| |love Momo screaming at Maho| +|08/01/2022 05:55:07| |CUTE HATS| +|08/01/2022 05:55:08| CHUUNI +|08/01/2022 05:55:08| |SORE DA| +|08/01/2022 05:55:08| |Sour cream, you mean Smetana?| +|08/01/2022 05:55:08| WHO +|08/01/2022 05:55:08| |Darjeeling best| +|08/01/2022 05:55:09| |>katyusha killed the stream again| +|08/01/2022 05:55:09| |These fucking dorks| +|08/01/2022 05:55:09| ANZU +|08/01/2022 05:55:09| autist +|08/01/2022 05:55:10| |NURENBURG LAWS| +|08/01/2022 05:55:11| |Fucking tism| +|08/01/2022 05:55:11| CHUUNI +|08/01/2022 05:55:13| autism +|08/01/2022 05:55:13| |what the fuck| +|08/01/2022 05:55:15| BUMPY +|08/01/2022 05:55:15| BUMPY +|08/01/2022 05:55:15| BUMPY +|08/01/2022 05:55:15| Bumpy? +|08/01/2022 05:55:17| BUMPY +|08/01/2022 05:55:17| |Maho owned| +|08/01/2022 05:55:18| w +|08/01/2022 05:55:20| bumpy +|08/01/2022 05:55:20| |BUMP DE BUMP| +|08/01/2022 05:55:20| Autismos +|08/01/2022 05:55:20| |bumpy bumps| +|08/01/2022 05:55:20| ?????????? +|08/01/2022 05:55:20| |folks, what about "TOTSUGEKI PASTA SAKUSEN?!?!?| +|08/01/2022 05:55:21| >bumpy +|08/01/2022 05:55:22| ?????? +|08/01/2022 05:55:22| |german autism| +|08/01/2022 05:55:23| ? +|08/01/2022 05:55:23| |I preferred sneaky beaky| +|08/01/2022 05:55:23| BUMPY +|08/01/2022 05:55:23| |based autist| +|08/01/2022 05:55:24| BUMPY +|08/01/2022 05:55:24| |I GET IT| +|08/01/2022 05:55:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:55:24| |The plan is to just wander into their fire| +|08/01/2022 05:55:24| DUCE +|08/01/2022 05:55:25| |IT DOESN'T HAVE TO BE BEEF| +|08/01/2022 05:55:25| WAT +|08/01/2022 05:55:28| |A least it's not food| +|08/01/2022 05:55:29| Eh? +|08/01/2022 05:55:30| >bumpy +|08/01/2022 05:55:31| Anzu +|08/01/2022 05:55:33| |I DONT GET IT| +|08/01/2022 05:55:33| |PANZER FOUR| +|08/01/2022 05:55:34| |ERIKA BTFO| +|08/01/2022 05:55:34| |PANZER VOR| +|08/01/2022 05:55:35| Eh? +|08/01/2022 05:55:36| bump +|08/01/2022 05:55:36| |Wani REKT| +|08/01/2022 05:55:36| |PANTSU NO AHO| +|08/01/2022 05:55:37| |PANTSU FOR?| +|08/01/2022 05:55:37| |PANZER VOR| +|08/01/2022 05:55:37| |SHE SAID THE THING| +|08/01/2022 05:55:38| |PANZER VORE| +|08/01/2022 05:55:38| |Miho and her dumb op names| +|08/01/2022 05:55:38| |panzer vor!!| +|08/01/2022 05:55:38| |PANZER VOR| +|08/01/2022 05:55:40| |PANZA WHORE| +|08/01/2022 05:55:40| |Panzer vor| +|08/01/2022 05:55:40| |PAnzer 4| +|08/01/2022 05:55:40| |PANZER VOR| +|08/01/2022 05:55:41| |PANTSU GA AHO| +|08/01/2022 05:55:41| |PUSH THEM BACK FROM THE 38TH| +|08/01/2022 05:55:41| |PANZER VOR| +|08/01/2022 05:55:41| |pant are for???| +|08/01/2022 05:55:43| |Not even the best Wagner Opera, bad taste Maho| +|08/01/2022 05:55:45| |zelda music again| +|08/01/2022 05:55:46| |PANZER VOR| +|08/01/2022 05:55:46| |PANZER VOR| +|08/01/2022 05:55:47| |panzer VORE| +|08/01/2022 05:55:50| |DELETE THE UN| +|08/01/2022 05:55:52| |man i really wanna sleep but this is the best part of the series| +|08/01/2022 05:55:52| Advanced! +|08/01/2022 05:55:52| |CUNNY sob sob sob| +|08/01/2022 05:55:52| |How crazy would it be if one of the teams had a railway gun haha?| +|08/01/2022 05:56:01| |Our plan is to just go straight| +|08/01/2022 05:56:03| |wreck these blue helmet smurfs| +|08/01/2022 05:56:04| |Imagine kowtowing to the UN LAMO| +|08/01/2022 05:56:07| |WHICH ONES PANZER FOUR???| +|08/01/2022 05:56:08| |rumi <3| +|08/01/2022 05:56:09| |tactical geniusw| +|08/01/2022 05:56:09| |ALICE LEGS UOOOOOOOOHHHHHHH| +|08/01/2022 05:56:09| ihatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchristihatetheanitchrist +|08/01/2022 05:56:13| |I HATE THE ANTICHRIST| +|08/01/2022 05:56:14| |REMOVE UN| +|08/01/2022 05:56:15| |>just go forward lmao| +|08/01/2022 05:56:15| |un larpers| +|08/01/2022 05:56:17| |I HATE THE ANTICHRIST| +|08/01/2022 05:56:18| KINO +|08/01/2022 05:56:18| |I HATE THE ANTICHRIST| +|08/01/2022 05:56:20| |(((United Nations)))| +|08/01/2022 05:56:20| >14fps +|08/01/2022 05:56:20| |Under NATO| +|08/01/2022 05:56:23| |3 fps cgi| +|08/01/2022 05:56:24| |luv me corn syrup| +|08/01/2022 05:56:24| |COCK AND BALL TORTURE| +|08/01/2022 05:56:25| |I HATE THE ANTICHRIST| +|08/01/2022 05:56:28| |kino shot| +|08/01/2022 05:56:28| OST +|08/01/2022 05:56:28| KINO +|08/01/2022 05:56:30| ((((((UN)))))) +|08/01/2022 05:56:30| |YOU VILL EAT ZE BUGS| +|08/01/2022 05:56:32| |24 fps baby| +|08/01/2022 05:56:33| |i love this artstyle| +|08/01/2022 05:56:33| kino +|08/01/2022 05:56:33| |I HATE THE ANTI CHRIST| +|08/01/2022 05:56:38| |What's your Sensha-dō anon?| +|08/01/2022 05:56:39| ((((((UN)))))) +|08/01/2022 05:56:43| |Lets go pop blue ultrasmurf helmet fags| +|08/01/2022 05:56:44| |>hobo stream| +|08/01/2022 05:56:45| |fucking up local rice fields for fun| +|08/01/2022 05:56:49| |this is the 2nd most kino shot in the franchise| +|08/01/2022 05:56:51| |I HATE THE ANTICHRIST I HATET HE ANTICHRIST| +|08/01/2022 05:56:52| |Get in the fucking sensha, shinji| +|08/01/2022 05:56:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:56:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:56:59| |What's satan got to do with it?| +|08/01/2022 05:57:00| WIG +|08/01/2022 05:57:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:02| |GET FUCKING READY BROS| +|08/01/2022 05:57:03| |nice 3d to 2d| +|08/01/2022 05:57:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:03| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 05:57:04| |Srebrenica never forget| +|08/01/2022 05:57:04| |duce duce duce| +|08/01/2022 05:57:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:04| WIG +|08/01/2022 05:57:05| |Fuck those feilds| +|08/01/2022 05:57:06| |NOT A WIG| +|08/01/2022 05:57:06| |ITS NATURAL| +|08/01/2022 05:57:07| DVCE +|08/01/2022 05:57:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:09| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 05:57:09| |WIG WIG WIG WIG| +|08/01/2022 05:57:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:09| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 05:57:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DU| +|08/01/2022 05:57:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:12| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 05:57:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:13| |NOT A WIG| +|08/01/2022 05:57:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:13| |NOT A WIG| +|08/01/2022 05:57:14| ITA +|08/01/2022 05:57:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:15| >wig +|08/01/2022 05:57:15| |DUCE DUCE DUCE| +|08/01/2022 05:57:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:16| |NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +|08/01/2022 05:57:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:19| |It's REAL| +|08/01/2022 05:57:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:23| |DUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCE| +|08/01/2022 05:57:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:24| |IT'S A WIG??????| +|08/01/2022 05:57:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 05:57:25| |DUVE DUVE DUVE DUVE DUVE| +|08/01/2022 05:57:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 05:57:26| |>LIKING A GIRL WEARING A WIG| +|08/01/2022 05:57:27| |THE HAIR IS REAL| +|08/01/2022 05:57:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 05:57:28| |They're handlebars| +|08/01/2022 05:57:30| |NOT A WIG! VERY REAL HAIR!| +|08/01/2022 05:57:35| |duce spamming a shit| +|08/01/2022 05:57:35| |dvce would never wear a wig| +|08/01/2022 05:57:36| |Real genuine hair!| +|08/01/2022 05:57:39| |DUCE CANT PAY FOR BITRATE| +|08/01/2022 05:57:40| |DUCE IS BALD HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA| +|08/01/2022 05:57:42| |DUCE BROS YOUR WIFE'S HAIR IS FAKE | +|08/01/2022 05:57:47| |best scene in the franchise is when hobos take out the carl| +|08/01/2022 05:57:59| |big head| +|08/01/2022 05:58:05| |huge head| +|08/01/2022 05:58:06| |the best scene in the series is when miho upskirts anzu| +|08/01/2022 05:58:10| |massive head| +|08/01/2022 05:58:15| |SHE HATES BLACKS| +|08/01/2022 05:58:15| |dumb midget| +|08/01/2022 05:58:17| fang +|08/01/2022 05:58:19| |stfu midget| +|08/01/2022 05:58:20| |SHE DISLIKES BLACKS| +|08/01/2022 05:58:23| |SHE HATES BLACKS| +|08/01/2022 05:58:23| HI +|08/01/2022 05:58:24| |SNOW IS BACK| +|08/01/2022 05:58:25| 5head +|08/01/2022 05:58:25| |cult of personality| +|08/01/2022 05:58:26| BTFO +|08/01/2022 05:58:27| |when will katyusha grow into her head?| +|08/01/2022 05:58:28| BTFO'D +|08/01/2022 05:58:29| POUTYUSHA +|08/01/2022 05:58:30| |my master is black| +|08/01/2022 05:58:32| Owned +|08/01/2022 05:58:32| |SHE HATE THE NIGGER| +|08/01/2022 05:58:33| |NONNA WTF| +|08/01/2022 05:58:33| |khruschev won| +|08/01/2022 05:58:36| |BWAHAHAHAHAHAHA SHUT THE FUCK UP MIDGET| +|08/01/2022 05:58:40| |katyusha btfos niggers| +|08/01/2022 05:58:40| |Hill 203| +|08/01/2022 05:58:43| |Wait snow is white?| +|08/01/2022 05:58:45| |Hopefully katysha never grows| +|08/01/2022 05:58:49| |dumb midget| +|08/01/2022 05:58:50| |>getting beat by blacks 10 years in a row| +|08/01/2022 05:59:00| ?????????????? +|08/01/2022 05:59:01| ??????????????????????????????????????????????? +|08/01/2022 05:59:02| |deserves the height| +|08/01/2022 05:59:03| |AHH THIS SAYING| +|08/01/2022 05:59:04| ????????????????????????????? +|08/01/2022 05:59:05| |NONNA THE "WHITE" RUSSIAN| +|08/01/2022 05:59:05| ????????????????????? +|08/01/2022 05:59:06| ????????????????????????????????????? +|08/01/2022 05:59:07| ?????????????? +|08/01/2022 05:59:07| ????????????????????????????????? +|08/01/2022 05:59:09| ???????????? +|08/01/2022 05:59:10| |DO YOU KNOW| +|08/01/2022 05:59:11| |SHUT THE FUCK UP DARJ| +|08/01/2022 05:59:11| |mommy | +|08/01/2022 05:59:12| ?!?!?!?!?!?!?!?! +|08/01/2022 05:59:13| |I like tat one| +|08/01/2022 05:59:14| |WHAT the fuck did she mean by that?| +|08/01/2022 05:59:16| ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 05:59:18| |I like mommy's pants| +|08/01/2022 05:59:18| |go nina go| +|08/01/2022 05:59:21| |NINA IS CUTE!| +|08/01/2022 05:59:22| kino +|08/01/2022 05:59:22| |NINA A FAT| +|08/01/2022 05:59:25| |I like koume and her panther| +|08/01/2022 05:59:27| |That one was simple to understand| +|08/01/2022 05:59:28| SUMIMASEN +|08/01/2022 05:59:28| |/k/ as fuck| +|08/01/2022 05:59:31| |Where we’re going we don’t need roads| +|08/01/2022 05:59:32| |INSERT SAYING HERE| +|08/01/2022 05:59:35| |maps looks like a penis| +|08/01/2022 05:59:36| |>penis map| +|08/01/2022 05:59:37| |benis :DDD| +|08/01/2022 05:59:38| sex? +|08/01/2022 05:59:40| |THE MAP IS A PENIS| +|08/01/2022 05:59:41| |>Using tryhard cammouflage| +|08/01/2022 05:59:47| |can someone explain the american hotline to hell joke?| +|08/01/2022 05:59:48| |SEX MAP????| +|08/01/2022 05:59:50| |Benis to bagina| +|08/01/2022 05:59:50| |senshado is serious business| +|08/01/2022 05:59:50| Dongland +|08/01/2022 05:59:56| |>penis map lmao| +|08/01/2022 05:59:58| |nice snap| +|08/01/2022 05:59:58| |NOT THE BASSIST| +|08/01/2022 05:59:59| |no I don't understand it either| +|08/01/2022 05:59:59| |BENIS :DDDDDD| +|08/01/2022 05:59:59| Takeshi..... +|08/01/2022 06:00:01| |ARISA IS CUTE!| +|08/01/2022 06:00:02| |it means america a shit| +|08/01/2022 06:00:05| |kay zr| +|08/01/2022 06:00:05| |I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HA-| +|08/01/2022 06:00:06| |THE TREES ARE SPEAKING JAPANESE| +|08/01/2022 06:00:06| |bong humor| +|08/01/2022 06:00:07| BANG +|08/01/2022 06:00:08| |KAY THIGHS| +|08/01/2022 06:00:11| TOTSUGEKI +|08/01/2022 06:00:12| AZUDA +|08/01/2022 06:00:12| |ughhh Kay thighs...| +|08/01/2022 06:00:16| |pekoe, have you heard the saying "we're fucked"| +|08/01/2022 06:00:17| TOTSUGEKI +|08/01/2022 06:00:18| |SHAKY SHAKY| +|08/01/2022 06:00:18| |why does kay keep trusting alisa| +|08/01/2022 06:00:19| |CQ CQ| +|08/01/2022 06:00:19| |bong """humour"""| +|08/01/2022 06:00:19| |I want Kay| +|08/01/2022 06:00:23| |I HATE THE ANTICHRIST| +|08/01/2022 06:00:24| TOTSUGEKI +|08/01/2022 06:00:26| |Time for some high speed tactical waterfowl| +|08/01/2022 06:00:27| >YARDS +|08/01/2022 06:00:33| |Okay I'm falling asleep on my chair goodbye anons finish the fight for me| +|08/01/2022 06:00:37| PERSHINGU +|08/01/2022 06:00:38| |NOT HOLDING TEA NOW ARE YOU YOU BITCH| +|08/01/2022 06:00:38| |LOOK AT THE FOREHEAD ON ASSAM. THATS SEX INCARNATE.| +|08/01/2022 06:00:39| |Driver name???| +|08/01/2022 06:00:39| |MY WIFE DARJEELING| +|08/01/2022 06:00:40| |goodnight anon| +|08/01/2022 06:00:40| yessir +|08/01/2022 06:00:40| >leavers +|08/01/2022 06:00:43| |STAY STRONG| +|08/01/2022 06:00:44| |sweet dreams anon| +|08/01/2022 06:00:48| |YOU'RE THE DRIVER DONT SLEEP| +|08/01/2022 06:00:50| |oyasumi sleepy anons| +|08/01/2022 06:00:52| |what year is the pershing? 1945?| +|08/01/2022 06:00:54| |COWARDS WILL BE HANGED | +|08/01/2022 06:00:57| |this is peak tbh| +|08/01/2022 06:00:57| |FAITO | +|08/01/2022 06:00:58| |nigger just shitpost more| +|08/01/2022 06:01:01| |do NOT totsugeki| +|08/01/2022 06:01:01| |DON'T FALL ASLEEP ANON, YOU CAN THIS| +|08/01/2022 06:01:02| |NO TOTSUGEKI| +|08/01/2022 06:01:05| |>Nishi-san, dont be a retard| +|08/01/2022 06:01:06| |>this level in the game| +|08/01/2022 06:01:07| |All these weak anons| +|08/01/2022 06:01:11| URA +|08/01/2022 06:01:11| URA +|08/01/2022 06:01:13| |But pointful charges are okay?| +|08/01/2022 06:01:16| OOORAI +|08/01/2022 06:01:16| ypaaaaaaaaaaa +|08/01/2022 06:01:19| |>Windows XP| +|08/01/2022 06:01:20| |Episode 4.44: You Can (Not) This| +|08/01/2022 06:01:21| |TOTSUGEKI, BUT IN PLACE| +|08/01/2022 06:01:26| |god so many cute hats...| +|08/01/2022 06:01:29| USA +|08/01/2022 06:01:30| |Why is she dumping shells? They didn't fire| +|08/01/2022 06:01:34| |I was about to fall asleep but I caught my second wind| +|08/01/2022 06:01:35| |bruh which movis is this| +|08/01/2022 06:01:41| UTE +|08/01/2022 06:01:42| |der Film| +|08/01/2022 06:01:43| |Der Film| +|08/01/2022 06:01:43| |DER FILM| +|08/01/2022 06:01:45| UTE +|08/01/2022 06:01:45| |the onle movie| +|08/01/2022 06:01:46| |IMPORTANT: My pizza has been delivered.| +|08/01/2022 06:01:47| |STATIONARY TOTSUGEKI| +|08/01/2022 06:01:51| |Saving private ryan| +|08/01/2022 06:01:54| |why didn't bakaroni put the cardboard up this time| +|08/01/2022 06:01:54| |what kinda pizza?| +|08/01/2022 06:01:57| |pizza time| +|08/01/2022 06:01:57| SHIT +|08/01/2022 06:01:58| Shita +|08/01/2022 06:01:59| |I wish I had pizza| +|08/01/2022 06:01:59| SHIT!! +|08/01/2022 06:02:00| SHIT!!! +|08/01/2022 06:02:00| SHIT! +|08/01/2022 06:02:01| SHIT +|08/01/2022 06:02:01| TOTSUGEKI +|08/01/2022 06:02:01| SHIESHT +|08/01/2022 06:02:02| SHIT +|08/01/2022 06:02:02| SHIT +|08/01/2022 06:02:02| SHIT +|08/01/2022 06:02:02| TOTSUGEKI +|08/01/2022 06:02:03| TOTSUGEKI! +|08/01/2022 06:02:03| SHIT +|08/01/2022 06:02:03| TOTSUGEKI +|08/01/2022 06:02:03| SHIT +|08/01/2022 06:02:03| ONOREEEEEE +|08/01/2022 06:02:05| |but it's 6 AM| +|08/01/2022 06:02:05| |Boku no Panzer| +|08/01/2022 06:02:05| CHIT +|08/01/2022 06:02:05| Shit +|08/01/2022 06:02:06| |dumb japs| +|08/01/2022 06:02:06| ONORE +|08/01/2022 06:02:07| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 06:02:08| |SURPRESSED BITCH| +|08/01/2022 06:02:08| |UTE UTE| +|08/01/2022 06:02:09| SHIIT +|08/01/2022 06:02:09| |jealous of you pizza anon| +|08/01/2022 06:02:10| SHIT +|08/01/2022 06:02:11| |Spank Naomi Y/Y| +|08/01/2022 06:02:12| |pekoe, have you heard the saying "SHIT!"| +|08/01/2022 06:02:13| TOTSUGEKI +|08/01/2022 06:02:15| \o/ +|08/01/2022 06:02:15| |OUTTA MY WAY NIPS FUCKING SHITS| +|08/01/2022 06:02:17| Y +|08/01/2022 06:02:18| |YOU GOT PIZZA FOR US ASWELL RIGHT BRO| +|08/01/2022 06:02:18| |>NOBODY LISTENS TO THE COMMANDER| +|08/01/2022 06:02:20| shamefur +|08/01/2022 06:02:22| |HONORABLE DEATH| +|08/01/2022 06:02:22| |SHAMEFUL DISPLAY| +|08/01/2022 06:02:24| TOTUGEKI... +|08/01/2022 06:02:25| TOTSUGEKIDIOTS +|08/01/2022 06:02:28| |i've got a pizza hut pepperoni and italian sausage, pretty tasty| +|08/01/2022 06:02:28| SHAMEFUR +|08/01/2022 06:02:29| urgh +|08/01/2022 06:02:30| |YES MOM| +|08/01/2022 06:02:32| |YES MOM| +|08/01/2022 06:02:34| |HELMET CHAN| +|08/01/2022 06:02:34| |YES MOM| +|08/01/2022 06:02:34| |yes maam| +|08/01/2022 06:02:39| |MOMMY KAY| +|08/01/2022 06:02:40| |Helmet chan...| +|08/01/2022 06:02:40| >TOSTUGEKI +|08/01/2022 06:02:41| |Poor helmet chan...| +|08/01/2022 06:02:42| |HELMET CHAN| +|08/01/2022 06:02:45| SPALLING +|08/01/2022 06:02:47| |at least she was wearing a helmet| +|08/01/2022 06:02:47| >DIES +|08/01/2022 06:02:48| |i wish Kay was my mom| +|08/01/2022 06:02:49| |Helmettoo chan| +|08/01/2022 06:02:49| |AMERICAN ARMOR| +|08/01/2022 06:02:52| |why the FUCK did miho waste slots on totsugeki retards| +|08/01/2022 06:02:52| |I wish Alisa would call me mom…| +|08/01/2022 06:02:54| |THAT'S WHAT YOU GET FOR FORGETTING THE BASSIST| +|08/01/2022 06:02:56| |HURRY UP| +|08/01/2022 06:02:57| |harry up!| +|08/01/2022 06:02:59| >shermans +|08/01/2022 06:02:59| TOMMYCOOKER! +|08/01/2022 06:03:00| |>fucking dies| +|08/01/2022 06:03:03| |WATCH OUT| +|08/01/2022 06:03:09| |Some say they discovered parts of Koume's floof in the next prefecture over.| +|08/01/2022 06:03:09| DON! +|08/01/2022 06:03:10| |NUKE INC| +|08/01/2022 06:03:11| DED +|08/01/2022 06:03:11| hiroshima +|08/01/2022 06:03:12| |Koume out here jobbing again| +|08/01/2022 06:03:12| WTF +|08/01/2022 06:03:12| |UTEee | +|08/01/2022 06:03:12| OWNED +|08/01/2022 06:03:13| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:03:13| |ACTUALLY DEAD| +|08/01/2022 06:03:13| |K A R L| +|08/01/2022 06:03:13| |Does Takeshi play the bass?| +|08/01/2022 06:03:13| Carlos +|08/01/2022 06:03:13| >fair +|08/01/2022 06:03:14| |Right? should've taken more german, american, or russian tanks| +|08/01/2022 06:03:14| |>A FUCKING NUKE| +|08/01/2022 06:03:15| UEEEEEEEEEEEEEE +|08/01/2022 06:03:15| |get fucked midget| +|08/01/2022 06:03:15| |KOUME DEAD| +|08/01/2022 06:03:15| |TACTICAL NUKE INCOMING| +|08/01/2022 06:03:16| |>gg no re. get rekked poor fags.| +|08/01/2022 06:03:16| UTEEE +|08/01/2022 06:03:17| WUB +|08/01/2022 06:03:17| AAAAAHHHHH +|08/01/2022 06:03:17| |>fucking nuked| +|08/01/2022 06:03:17| AAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:03:17| rip +|08/01/2022 06:03:18| |K A R L| +|08/01/2022 06:03:18| NUKED +|08/01/2022 06:03:18| |THE BASS CANNON| +|08/01/2022 06:03:19| OP +|08/01/2022 06:03:19| |katyushas thighs| +|08/01/2022 06:03:21| 3x3x3x3x3x3x3x +|08/01/2022 06:03:21| >fair +|08/01/2022 06:03:21| |Fucking MEXT...| +|08/01/2022 06:03:22| |2 BOMBS WASN'T ENOUGH| +|08/01/2022 06:03:23| RIGGED +|08/01/2022 06:03:23| |>Using nukes| +|08/01/2022 06:03:27| |Holy fuck| +|08/01/2022 06:03:27| |I can't believe kuome is fucking dead| +|08/01/2022 06:03:28| |I can't believ Katyusha is fucking dead| +|08/01/2022 06:03:30| |Koume getting fucked once again| +|08/01/2022 06:03:32| |carbon coating| +|08/01/2022 06:03:32| "SAFE" +|08/01/2022 06:03:33| |LUCK THEY WERE CARBON COATED| +|08/01/2022 06:03:34| CUTE +|08/01/2022 06:03:34| |BIG shell| +|08/01/2022 06:03:35| |University team deploying the late war Fat Man| +|08/01/2022 06:03:37| |CUTE SMOL FLUFF| +|08/01/2022 06:03:39| |GOD BEANS| +|08/01/2022 06:03:40| |UN has mini nukes| +|08/01/2022 06:03:41| |>from her scrapbook| +|08/01/2022 06:03:46| |That's a fast reload| +|08/01/2022 06:03:46| fuck +|08/01/2022 06:03:49| |did you catch that forehead on nonna?| +|08/01/2022 06:03:49| |INSTANT DEATH| +|08/01/2022 06:03:49| BOOM +|08/01/2022 06:03:51| :( +|08/01/2022 06:03:51| |BIG BULLET| +|08/01/2022 06:03:51| |ashes to ashes| +|08/01/2022 06:03:52| |Dont worry, they carbon coat the girls| +|08/01/2022 06:03:52| |Y E E T| +|08/01/2022 06:03:53| |KOUME DEAD. AGAIN| +|08/01/2022 06:03:53| wtf +|08/01/2022 06:03:55| |RIP Panthers| +|08/01/2022 06:03:56| |imagine being this desperate for a win| +|08/01/2022 06:03:57| Koume... +|08/01/2022 06:03:58| ERIKA +|08/01/2022 06:03:58| |>no deaths| +|08/01/2022 06:03:59| |That's a big gun| +|08/01/2022 06:03:59| |CARBON COATING| +|08/01/2022 06:04:04| 4U +|08/01/2022 06:04:05| owned +|08/01/2022 06:04:06| |AIM FOR THE TRACKS| +|08/01/2022 06:04:08| 4U +|08/01/2022 06:04:08| |"SAFE SPORT"| +|08/01/2022 06:04:11| |I can;'t believe those girls are fucking dead| +|08/01/2022 06:04:21| |we have you surronded at least from this side| +|08/01/2022 06:04:21| |SAY YOU HATE THE ANTICRIST AGAIN | +|08/01/2022 06:04:23| |Carbon coated tanks, uniforms, and skin-cram| +|08/01/2022 06:04:23| |F FOR THE PANTHERS| +|08/01/2022 06:04:27| |I HATE THE ANTICHRIST| +|08/01/2022 06:04:28| |eargasm with those explosions | +|08/01/2022 06:04:31| |Best way out of a double envelopment| +|08/01/2022 06:04:31| |I HATE THE ANTICHRIST| +|08/01/2022 06:04:31| |my maho wife| +|08/01/2022 06:04:32| |I HATE THE ANTI CHRIST| +|08/01/2022 06:04:33| |8x30 elimination match against a more experienced team and the fucker still pulls this shit lmao| +|08/01/2022 06:04:34| |you vill dreenk the corn syroop| +|08/01/2022 06:04:35| |I HATE THE ANTICHRIST!| +|08/01/2022 06:04:36| F +|08/01/2022 06:04:37| |I HATE THE ANTICHRIST| +|08/01/2022 06:04:38| MAHOOO** +|08/01/2022 06:04:40| |I HATE THE ANITCHRIST| +|08/01/2022 06:04:49| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:04:49| |Actually, the anti-christ isn't so bad| +|08/01/2022 06:04:50| |Man, I saw the shell before it blew| +|08/01/2022 06:04:52| KINO +|08/01/2022 06:04:53| |close the fucking hatch katyusha| +|08/01/2022 06:04:54| NONNA +|08/01/2022 06:04:55| |I HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRISTI HATE THE ANITCHRIST| +|08/01/2022 06:04:56| |kino shots| +|08/01/2022 06:04:59| noooooo +|08/01/2022 06:05:00| |I like communism| +|08/01/2022 06:05:01| KINO +|08/01/2022 06:05:02| |KINO KINO KINO| +|08/01/2022 06:05:02| |I lost this mission several times in the game. kept driving off of the cliff| +|08/01/2022 06:05:03| |DAT SOUND| +|08/01/2022 06:05:03| |That's some great leading to hit that close on a moving target| +|08/01/2022 06:05:03| KINOOOOOO +|08/01/2022 06:05:05| |sacrifice yourself nonna| +|08/01/2022 06:05:06| |KLARA NOOOOO| +|08/01/2022 06:05:07| ;__;7 +|08/01/2022 06:05:08| BASED +|08/01/2022 06:05:10| |KLARA NO!| +|08/01/2022 06:05:11| b8 +|08/01/2022 06:05:11| |KINO MOMENT| +|08/01/2022 06:05:11| ;_:7 +|08/01/2022 06:05:11| KLARRRAAAAA!!!! +|08/01/2022 06:05:11| SOUND +|08/01/2022 06:05:11| |GIVE YOUR LIVES FOR THE GREAT LEADER.| +|08/01/2022 06:05:12| |KLARA NOOOOOOOO| +|08/01/2022 06:05:12| |KINO KINO KINO KINO| +|08/01/2022 06:05:12| |KLARA NO| +|08/01/2022 06:05:13| |KLARA NOOOOOOOOOOOOO| +|08/01/2022 06:05:13| ;_;7 +|08/01/2022 06:05:13| KLARA +|08/01/2022 06:05:13| |KLARA NO| +|08/01/2022 06:05:14| NOOOOOOOOOOOOO +|08/01/2022 06:05:14| ;_;7 +|08/01/2022 06:05:16| |Klara ;_____;| +|08/01/2022 06:05:16| NOOOOOOOOOOOO +|08/01/2022 06:05:17| |KLARA ;_;| +|08/01/2022 06:05:17| ;_;7 +|08/01/2022 06:05:17| |Klara ;_;7| +|08/01/2022 06:05:17| |Klara noo| +|08/01/2022 06:05:18| |Klara ;_;l| +|08/01/2022 06:05:18| |KLARAAAAAAAAAAAAAAAAAA ;_;7| +|08/01/2022 06:05:19| |this scene is kino| +|08/01/2022 06:05:19| KLARA +|08/01/2022 06:05:19| |>Input Danmaku, hit Enter| +|08/01/2022 06:05:19| ???? +|08/01/2022 06:05:19| |KLARA NOOOO| +|08/01/2022 06:05:20| ;________________; +|08/01/2022 06:05:20| |is katyusha literally stalin?| +|08/01/2022 06:05:21| o7 +|08/01/2022 06:05:21| |KLARA NOOOOOOOOO| +|08/01/2022 06:05:21| |KLARA DIES WITH HONOUR FOR MOTHER KATYUSHA| +|08/01/2022 06:05:22| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:05:22| |katyusha tebe razlubit..........................| +|08/01/2022 06:05:23| KLAAAAAARAAAAAAA +|08/01/2022 06:05:23| |KATYUSHA ISN'T WORTH IT| +|08/01/2022 06:05:23| |KINO | +|08/01/2022 06:05:23| |Most useless sacrifice ever| +|08/01/2022 06:05:24| ;-;7 +|08/01/2022 06:05:26| |;_;7 you were the best son maybe even the best| +|08/01/2022 06:05:26| |KLARA WILL BE REMEMBERED AS A HERO OF PRAVDA| +|08/01/2022 06:05:27| |KLARA NOOOOOOOOOOO| +|08/01/2022 06:05:27| o7 +|08/01/2022 06:05:28| ;_;7 +|08/01/2022 06:05:29| |SHE SPEAKS| +|08/01/2022 06:05:29| ;_; +|08/01/2022 06:05:30| ;_;7 +|08/01/2022 06:05:30| GOKYGENYOU +|08/01/2022 06:05:30| NIHONGO +|08/01/2022 06:05:30| ;__;7 +|08/01/2022 06:05:31| ;_;7 +|08/01/2022 06:05:31| ;_;7 +|08/01/2022 06:05:31| |This is objectively the best part of the movie| +|08/01/2022 06:05:32| |For pravda| +|08/01/2022 06:05:32| |U DESERVE BETTER| +|08/01/2022 06:05:33| gokigenyou +|08/01/2022 06:05:33| GOKIGENYOU +|08/01/2022 06:05:33| KLARAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:05:34| |AAAAAAAAAAAHHHHHHHHHH MOTHER LAND| +|08/01/2022 06:05:34| |i cry everytime| +|08/01/2022 06:05:34| w +|08/01/2022 06:05:34| |I CRY EVERYTIME I SEE THIS SCENE| +|08/01/2022 06:05:34| ;_;7 +|08/01/2022 06:05:35| ;_;7 +|08/01/2022 06:05:35| ;________;7 +|08/01/2022 06:05:35| ;_;7 +|08/01/2022 06:05:35| |I'M FUCKING CRYING| +|08/01/2022 06:05:36| ;_;7 +|08/01/2022 06:05:37| 日本語で喋りなさい +|08/01/2022 06:05:37| klarabros... +|08/01/2022 06:05:37| ;_;7 +|08/01/2022 06:05:37| ;_; +|08/01/2022 06:05:38| o7 +|08/01/2022 06:05:38| UDACHIIIIIIIII +|08/01/2022 06:05:38| |KLARA NO| +|08/01/2022 06:05:39| o7 +|08/01/2022 06:05:39| ;_;7 +|08/01/2022 06:05:39| KLARAAAAAAAAAAAA +|08/01/2022 06:05:39| |I cried| +|08/01/2022 06:05:40| |For Pravda!| +|08/01/2022 06:05:41| o7 +|08/01/2022 06:05:41| KLAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:05:41| o7 +|08/01/2022 06:05:41| KLARAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:05:41| |:_: 7| +|08/01/2022 06:05:42| |DON'T DO SOMETHING STUPID KLARA| +|08/01/2022 06:05:42| o7 +|08/01/2022 06:05:42| ;___________; +|08/01/2022 06:05:43| |;_;7 KLARAAAAAAAAAA| +|08/01/2022 06:05:43| o7 +|08/01/2022 06:05:43| ;_;7 +|08/01/2022 06:05:44| |ZA PRAVDU| +|08/01/2022 06:05:44| ;_;7 +|08/01/2022 06:05:44| ;_;7 +|08/01/2022 06:05:44| |IM CRINE| +|08/01/2022 06:05:46| |KLARA? KLARA?| +|08/01/2022 06:05:46| |ZA PRAVDU ;_________________________________________;7| +|08/01/2022 06:05:46| |Klara ;_;7| +|08/01/2022 06:05:46| |would you fight for a loli?| +|08/01/2022 06:05:47| ;_;7 +|08/01/2022 06:05:47| ;_;7 +|08/01/2022 06:05:47| |but she's not dead| +|08/01/2022 06:05:48| RIP +|08/01/2022 06:05:48| o7 +|08/01/2022 06:05:48| ;_:7 +|08/01/2022 06:05:48| |UDACHI KOMARAD| +|08/01/2022 06:05:48| ;_;/ +|08/01/2022 06:05:48| |FOR PRAVDA| +|08/01/2022 06:05:49| |ZAAA PRAVDUUUUUUU| +|08/01/2022 06:05:49| NOOOOOOOOOOOOo +|08/01/2022 06:05:49| ;_;7 +|08/01/2022 06:05:49| o7 +|08/01/2022 06:05:49| |;_;7 NEVER FORGET| +|08/01/2022 06:05:49| |Goodnight sweet princess| +|08/01/2022 06:05:49| |KLARA IS DEAD| +|08/01/2022 06:05:50| |o7 o7 o7 o7 ;_;| +|08/01/2022 06:05:50| |ZA PRAVDU| +|08/01/2022 06:05:50| |ZA PRAVDU| +|08/01/2022 06:05:50| ;_;7 +|08/01/2022 06:05:50| NOOOOOO +|08/01/2022 06:05:51| |hold up isn't this a safe sport?\| +|08/01/2022 06:05:51| DEAD +|08/01/2022 06:05:51| NOOOOOOOOOOOOOOo +|08/01/2022 06:05:52| |ACTUAL F| +|08/01/2022 06:05:52| bros... +|08/01/2022 06:05:52| ded +|08/01/2022 06:05:53| ;_;7 +|08/01/2022 06:05:53| SNAAAAAAAAAAAKEEEE +|08/01/2022 06:05:53| |FOR PRAVDA| +|08/01/2022 06:05:53| |ALL GLORY TO THE COMMIE LOLI| +|08/01/2022 06:05:53| RIP +|08/01/2022 06:05:54| |ZA PRAVDU| +|08/01/2022 06:05:54| o7 +|08/01/2022 06:05:54| |;_; 7| +|08/01/2022 06:05:54| |FOR THE MOTHERLAND| +|08/01/2022 06:05:55| DED +|08/01/2022 06:05:56| UUUUUUUUURRRRRRRRRRRAAAAAAAAAAAA +|08/01/2022 06:05:57| 07 +|08/01/2022 06:05:57| |carbon coated, she's fine| +|08/01/2022 06:05:57| T_T7 +|08/01/2022 06:05:58| |It's just raining guys...| +|08/01/2022 06:06:00| |COMRADE KLARA IS DEAD| +|08/01/2022 06:06:00| ;_______________________;7 +|08/01/2022 06:06:00| |FOR THE EMPORER| +|08/01/2022 06:06:01| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:06:02| |FOR THE LOLILANd| +|08/01/2022 06:06:02| |NOT ONE STEP BACK!| +|08/01/2022 06:06:02| ;_;7 +|08/01/2022 06:06:03| |Lost but not forgotten ;_;7| +|08/01/2022 06:06:04| |SHE FUCKING DIED| +|08/01/2022 06:06:04| |A TERRIBLE DAY FOR RAIN| +|08/01/2022 06:06:05| ;_;7 +|08/01/2022 06:06:05| |ZA RODINU| +|08/01/2022 06:06:05| |COMRADE NINA!| +|08/01/2022 06:06:05| ;__________________; +|08/01/2022 06:06:06| ;__; +|08/01/2022 06:06:06| ;_;7 +|08/01/2022 06:06:08| |She searved the Soviet Union!| +|08/01/2022 06:06:08| LOLITANK +|08/01/2022 06:06:08| YAMEROOOOO +|08/01/2022 06:06:09| |HUMAN FLESH SHIELD| +|08/01/2022 06:06:10| |I'm literally fucking crying right now i can't believe they just killed a character| +|08/01/2022 06:06:10| IKUBE +|08/01/2022 06:06:10| |FUUUUUUUUUUUUUUUUUUUUUUUUUUU THIS GAY eART| +|08/01/2022 06:06:11| IKUBE +|08/01/2022 06:06:11| |BIG SHELL| +|08/01/2022 06:06:12| |NINA NO| +|08/01/2022 06:06:13| ;_; +|08/01/2022 06:06:14| |CUNNY ;_;7| +|08/01/2022 06:06:15| ;_;7 +|08/01/2022 06:06:16| |carbon coated spines| +|08/01/2022 06:06:16| |SACRED WAR| +|08/01/2022 06:06:16| |wide is my motherland| +|08/01/2022 06:06:17| |4 second reload cunny...| +|08/01/2022 06:06:18| |KV-TAN ;_____;| +|08/01/2022 06:06:18| |NINA ;_;7| +|08/01/2022 06:06:18| KV-TAN +|08/01/2022 06:06:18| |NO, KV| +|08/01/2022 06:06:19| NINA +|08/01/2022 06:06:20| ;_; +|08/01/2022 06:06:20| |NOOOOOOOOO NINA| +|08/01/2022 06:06:22| IKUBI +|08/01/2022 06:06:22| |NOT ONE STEP BACK| +|08/01/2022 06:06:23| |would lolis fight for you?| +|08/01/2022 06:06:24| |LOLI POWA| +|08/01/2022 06:06:24| |KV tan..... ;_;7| +|08/01/2022 06:06:27| |YOU'RE NOT AGAINST EARLY WAR TANKS| +|08/01/2022 06:06:27| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:06:28| |NOT ONE STEP BACK!!!| +|08/01/2022 06:06:30| |I WISH I HAD CARBON COATED TEAR DUCTS| +|08/01/2022 06:06:30| ;____________________________________;7 +|08/01/2022 06:06:31| |NONNA NOT YOU TOO!| +|08/01/2022 06:06:32| ;_:7 +|08/01/2022 06:06:32| ;_; +|08/01/2022 06:06:32| ;_; +|08/01/2022 06:06:33| |NONNA NO| +|08/01/2022 06:06:33| |NOT THE LOLISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS!!| +|08/01/2022 06:06:33| |KV-tan ;_;| +|08/01/2022 06:06:36| |I'd reload faster if you know what I mean| +|08/01/2022 06:06:37| ;_; +|08/01/2022 06:06:38| ;__________________________________________; +|08/01/2022 06:06:40| |TOO MUCH KINO I'M OVERLOADING| +|08/01/2022 06:06:40| ;_;7 +|08/01/2022 06:06:40| |NOOOOO NOT NONNA TOO| +|08/01/2022 06:06:41| |EVERYONE'S DYING| +|08/01/2022 06:06:41| |KAABEE-TAN NOOOOO| +|08/01/2022 06:06:42| ;_; +|08/01/2022 06:06:42| ;_;7 +|08/01/2022 06:06:44| ;___;7 +|08/01/2022 06:06:45| ;_; +|08/01/2022 06:06:45| |NONNA, KLARA AND THE LOLIS?!| +|08/01/2022 06:06:46| ;______________; +|08/01/2022 06:06:46| |NONNO NOOOOO| +|08/01/2022 06:06:47| |Ka ve tan...| +|08/01/2022 06:06:47| |BIG WAIFUS ARE GONE NOOOOOOO| +|08/01/2022 06:06:47| ;_;7 +|08/01/2022 06:06:48| |THEY GAVE THEIR LIVES FOR THE MOTHERLAND| +|08/01/2022 06:06:48| |NONNA NOOOOOOOOOO| +|08/01/2022 06:06:49| KINO +|08/01/2022 06:06:49| |But y tho| +|08/01/2022 06:06:50| ;-;7 +|08/01/2022 06:06:51| ;_;7 +|08/01/2022 06:06:52| O_O +|08/01/2022 06:06:52| :_; +|08/01/2022 06:06:55| ;_;7 +|08/01/2022 06:06:55| ;___;7 +|08/01/2022 06:06:55| |LONG LIVE THE CCCP o7| +|08/01/2022 06:06:55| NONNAAAAAAAAAAAAAAAAA +|08/01/2022 06:06:56| KINO +|08/01/2022 06:06:57| |;_; 7| +|08/01/2022 06:06:57| |RAMMING SPEED| +|08/01/2022 06:06:57| >BUFFERING +|08/01/2022 06:06:58| |RIP BIG TITTIES| +|08/01/2022 06:06:59| ;_;7 +|08/01/2022 06:07:01| ;_;7 +|08/01/2022 06:07:01| |IMA DESU| +|08/01/2022 06:07:01| ;_;7 +|08/01/2022 06:07:01| ToT +|08/01/2022 06:07:02| ZETSUBOUSHITA +|08/01/2022 06:07:04| bros... +|08/01/2022 06:07:05| NOOOOOOOOOOO +|08/01/2022 06:07:05| КиноКиноКиноКиноКино +|08/01/2022 06:07:06| ;_;7 +|08/01/2022 06:07:07| |But you're not dead| +|08/01/2022 06:07:07| |URAAAAAAAAAAAAA FOR PRAVDA!!!!!!!!!!!| +|08/01/2022 06:07:07| ;_;7 +|08/01/2022 06:07:08| ;_;7 +|08/01/2022 06:07:08| ;_; +|08/01/2022 06:07:11| URAAAAA +|08/01/2022 06:07:11| |BY ME| +|08/01/2022 06:07:13| Кино +|08/01/2022 06:07:13| URAAAA! +|08/01/2022 06:07:14| ;________________; +|08/01/2022 06:07:14| F +|08/01/2022 06:07:14| KINO +|08/01/2022 06:07:15| NOOOOOOOO +|08/01/2022 06:07:17| ;_; +|08/01/2022 06:07:17| ;_; +|08/01/2022 06:07:18| |URA VIVE LE CCCP| +|08/01/2022 06:07:18| NONNA +|08/01/2022 06:07:19| URAAAAA +|08/01/2022 06:07:19| |so was this supposed to be emotional? it's not like they're dying| +|08/01/2022 06:07:19| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:20| KINO +|08/01/2022 06:07:20| ;_; +|08/01/2022 06:07:20| URAAAAA +|08/01/2022 06:07:21| N-nonna +|08/01/2022 06:07:21| ;_;7 +|08/01/2022 06:07:21| |ITS NOT FAIR BROS| +|08/01/2022 06:07:21| AAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:23| |BY ME| +|08/01/2022 06:07:24| |bros I'm crying| +|08/01/2022 06:07:24| |mind broken| +|08/01/2022 06:07:25| NOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:07:26| AAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:26| |HEROS OF THE SOVIET UNION| +|08/01/2022 06:07:27| ;_;7 +|08/01/2022 06:07:27| ;_;7 +|08/01/2022 06:07:27| |tags: mindbreak| +|08/01/2022 06:07:27| |TRAUMATIZED BY WAR| +|08/01/2022 06:07:28| |I'M CRYING| +|08/01/2022 06:07:29| |Punished Katyusha| +|08/01/2022 06:07:29| o7 +|08/01/2022 06:07:29| |is it raining? yes it is| +|08/01/2022 06:07:30| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:07:30| |I can't believe nonna is fucking dead| +|08/01/2022 06:07:30| |KV's literally getting torn apart| +|08/01/2022 06:07:30| |It's over| +|08/01/2022 06:07:31| NONNNAAAAAAA +|08/01/2022 06:07:32| PTSD +|08/01/2022 06:07:33| NONNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:33| |THEYRE ALL DEAD| +|08/01/2022 06:07:33| NOOOOOOOOOOOONAAAAAAAAAAAAAAAAA +|08/01/2022 06:07:34| |THEY DIED FOR THE MOTHERLAND| +|08/01/2022 06:07:35| |I serve the Soviet Union| +|08/01/2022 06:07:35| NOOOOOOOO +|08/01/2022 06:07:35| |SADDEST PART IN THE SERIES| +|08/01/2022 06:07:37| |Alexa play Tyomnaya Noch| +|08/01/2022 06:07:38| |NINA DOWN| +|08/01/2022 06:07:39| NOOOO +|08/01/2022 06:07:40| |Those M26s have garbage aim| +|08/01/2022 06:07:41| |Punished commie loli| +|08/01/2022 06:07:41| |PSTD HERE WE COME| +|08/01/2022 06:07:41| |NOT THE KV| +|08/01/2022 06:07:42| |she died well| +|08/01/2022 06:07:42| |it's raining in my house...| +|08/01/2022 06:07:43| |>5 fucking tanks lost| +|08/01/2022 06:07:43| |strange, its raining in my bedroom....| +|08/01/2022 06:07:44| |IT'S LIKE ANOTHER BERLIN WALL| +|08/01/2022 06:07:44| |IVAN'S CHILDHOOD: THE ANIME| +|08/01/2022 06:07:46| |THEY GAVE THEIR LIVES FOR RUSSIA| +|08/01/2022 06:07:47| |WHY ARE WE HERE JUST TO SUFFER| +|08/01/2022 06:07:47| |DEAD CUNYY UOOOOOOOOOOH| +|08/01/2022 06:07:50| |RIP ;_;7| +|08/01/2022 06:07:51| 😭7 +|08/01/2022 06:07:52| |Can't even kill a KV from the side| +|08/01/2022 06:07:53| |How is it raining indoors?| +|08/01/2022 06:07:54| |BEST GIRLS BEST GIRLS BEST GIRLS BEST GIRLS| +|08/01/2022 06:07:55| |BROS ITS RAINING| +|08/01/2022 06:07:57| |wHATS THE SCORE RIGHT NOW?| +|08/01/2022 06:07:58| |WET TITS| +|08/01/2022 06:08:01| >THAT +|08/01/2022 06:08:01| ARE +|08/01/2022 06:08:02| |Shiho's jodhpurs are sexy| +|08/01/2022 06:08:03| |cute raincoat kay| +|08/01/2022 06:08:04| MASAKA +|08/01/2022 06:08:04| |alexa play Государственный гимн СССР| +|08/01/2022 06:08:04| |Oraibros, it doesn't look good| +|08/01/2022 06:08:05| |Simulated rain| +|08/01/2022 06:08:05| THAT? +|08/01/2022 06:08:05| |who the fuck was talking? I couldn't see anything| +|08/01/2022 06:08:06| >THAT +|08/01/2022 06:08:07| THAT +|08/01/2022 06:08:08| |ooarai team is getting purely fucked atm| +|08/01/2022 06:08:08| THAT????? +|08/01/2022 06:08:10| SLUT +|08/01/2022 06:08:11| >boyfriend +|08/01/2022 06:08:13| BTFO +|08/01/2022 06:08:14| >boyfriend +|08/01/2022 06:08:15| |Time for bullying| +|08/01/2022 06:08:15| |they mentioned male| +|08/01/2022 06:08:15| AZusa!!!!! +|08/01/2022 06:08:17| REKT +|08/01/2022 06:08:17| |God dang, girls in ponchos are cute| +|08/01/2022 06:08:18| |ALISA BTFO| +|08/01/2022 06:08:18| |based get fucked arisa| +|08/01/2022 06:08:19| |Takeshi broke up with her because she eavesdrops | +|08/01/2022 06:08:21| |BASED AND REDPILLED TAKASHI| +|08/01/2022 06:08:21| |TAKAHASHI SAN| +|08/01/2022 06:08:21| |TAKESHI KISAMA| +|08/01/2022 06:08:21| bullied +|08/01/2022 06:08:21| Takeshi... +|08/01/2022 06:08:22| |BULLY ARISA!| +|08/01/2022 06:08:22| |would you die for kytyushas cute&funny?| +|08/01/2022 06:08:22| |Naomi is Takashi| +|08/01/2022 06:08:22| w +|08/01/2022 06:08:24| KEK +|08/01/2022 06:08:26| |Tank lover| +|08/01/2022 06:08:29| |that's me by the way | +|08/01/2022 06:08:30| THAT +|08/01/2022 06:08:33| >that +|08/01/2022 06:08:33| |"that thing"| +|08/01/2022 06:08:33| Bass +|08/01/2022 06:08:34| |Spank Alisa Y/Y| +|08/01/2022 06:08:35| THAT +|08/01/2022 06:08:35| |Naomi has Kay| +|08/01/2022 06:08:36| |>It's okay to be alone // Hahaha... ;_;| +|08/01/2022 06:08:37| |No I'm takeshi| +|08/01/2022 06:08:38| |Takeshi?! SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEXXXXXX| +|08/01/2022 06:08:40| Y +|08/01/2022 06:08:41| Y +|08/01/2022 06:08:43| |DAS DING| +|08/01/2022 06:08:55| THAT +|08/01/2022 06:08:56| |half of these characters could be fixed if takahashi fucked them| +|08/01/2022 06:08:56| DUCE +|08/01/2022 06:08:57| ANCHOVYYYYYYYYYYY +|08/01/2022 06:08:59| |TL Note: "Anzu" means "SEX"| +|08/01/2022 06:09:00| DUCE! +|08/01/2022 06:09:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:02| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:09:02| KINO +|08/01/2022 06:09:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:03| ANCHOVYYYYYYY +|08/01/2022 06:09:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:05| CHOVY +|08/01/2022 06:09:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:07| |Кино incoming| +|08/01/2022 06:09:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:07| CHOVY +|08/01/2022 06:09:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:08| |Tiny tank| +|08/01/2022 06:09:08| |MORE LIKE DUCHE| +|08/01/2022 06:09:08| |WHat a squad| +|08/01/2022 06:09:09| CHOVY +|08/01/2022 06:09:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:11| |did i miss alisa's meltdown?| +|08/01/2022 06:09:12| ANZU +|08/01/2022 06:09:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:12| chovy +|08/01/2022 06:09:12| CHOVY! +|08/01/2022 06:09:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:12| Chobi +|08/01/2022 06:09:12| :DDDDDDDDDD +|08/01/2022 06:09:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:13| |Imagine getting hit by a 1000kg projectile| +|08/01/2022 06:09:13| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +|08/01/2022 06:09:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:14| |enter the chubby child| +|08/01/2022 06:09:14| |:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +|08/01/2022 06:09:15| |It's almost time| +|08/01/2022 06:09:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:09:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:16| :DDDDDDDDDD +|08/01/2022 06:09:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:18| |ACTUAL best moment in the film incoming| +|08/01/2022 06:09:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE vDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:18| |the KINO BATALLION| +|08/01/2022 06:09:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:21| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY | +|08/01/2022 06:09:22| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +|08/01/2022 06:09:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:23| |:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +|08/01/2022 06:09:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:24| |YOU MISSED?| +|08/01/2022 06:09:25| |ENTER THE FINS| +|08/01/2022 06:09:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:27| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY | +|08/01/2022 06:09:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:28| |DVCE DVCE| +|08/01/2022 06:09:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:28| ? +|08/01/2022 06:09:29| DUCE +|08/01/2022 06:09:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:09:32| |KINO MOMENT| +|08/01/2022 06:09:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:34| |the dvces are getting weaker :(| +|08/01/2022 06:09:34| DUCE +|08/01/2022 06:09:35| BUFFERING +|08/01/2022 06:09:37| |Kino scene coming up| +|08/01/2022 06:09:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:37| ENTER +|08/01/2022 06:09:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:38| |anchovy smells good and does not wear a wig| +|08/01/2022 06:09:38| |ENTER CARLOS| +|08/01/2022 06:09:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:39| ENTER +|08/01/2022 06:09:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:39| >buffering +|08/01/2022 06:09:39| |FUCKING ITALIAN INTERNET| +|08/01/2022 06:09:40| DEKAI +|08/01/2022 06:09:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:41| |carbon coated tears ;_;| +|08/01/2022 06:09:41| |DVCE DVCE DVCE DVCE| +|08/01/2022 06:09:42| |:DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDD | +|08/01/2022 06:09:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:42| |here comes possible one of the most kino scenes in the entire series| +|08/01/2022 06:09:42| |BUFFER | +|08/01/2022 06:09:42| |CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 | +|08/01/2022 06:09:43| |NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +|08/01/2022 06:09:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:09:44| CARLOS +|08/01/2022 06:09:44| |Karu worfu| +|08/01/2022 06:09:45| >600mm +|08/01/2022 06:09:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:45| |ITS CARL| +|08/01/2022 06:09:46| |Light tanks with the tactical advantage. | +|08/01/2022 06:09:46| |ENTER, Кино| +|08/01/2022 06:09:46| |BBK (big black Karl)| +|08/01/2022 06:09:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:47| 600!? +|08/01/2022 06:09:47| |DUMB BAKARONI| +|08/01/2022 06:09:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:50| |Chat’s moving so fast nobody will see me say that I hate Duceposting| +|08/01/2022 06:09:50| |NOT A TANK!| +|08/01/2022 06:09:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:52| |>600 MM| +|08/01/2022 06:09:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:52| |>Tank match >Using railway artillery| +|08/01/2022 06:09:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:09:55| |For real I bet even her feet actually smell good| +|08/01/2022 06:09:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:09:59| ABUNAI +|08/01/2022 06:09:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:10:00| |fucking pepperoni| +|08/01/2022 06:10:00| |It's okay, it's only a short barrel| +|08/01/2022 06:10:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:10:01| |LMAO FUCKING BULLSHIT| +|08/01/2022 06:10:05| |DAMN CARL| +|08/01/2022 06:10:05| |DUCE DUCE DUCE| +|08/01/2022 06:10:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:10:06| |DUCE | +|08/01/2022 06:10:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:10:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:10:07| |DUM RETARD PEPPA| +|08/01/2022 06:10:07| RIGGED +|08/01/2022 06:10:09| >males +|08/01/2022 06:10:10| |>fair and balanced| +|08/01/2022 06:10:13| |just get like 12 of these| +|08/01/2022 06:10:13| |MEXT-KUN FUCKING CHILL| +|08/01/2022 06:10:13| |what a nigger| +|08/01/2022 06:10:13| |D E V I L I S H| +|08/01/2022 06:10:15| |Smug Males| +|08/01/2022 06:10:15| |GHOST CREW| +|08/01/2022 06:10:15| (((MEXT)))) +|08/01/2022 06:10:17| |R I G G E D| +|08/01/2022 06:10:19| |oy vey| +|08/01/2022 06:10:19| |I'LL KILL YOU FOUR EYES| +|08/01/2022 06:10:20| |other guy seems rather pissed| +|08/01/2022 06:10:21| |MEXT KUN GOES HARD| +|08/01/2022 06:10:21| |MEXT JEW| +|08/01/2022 06:10:23| |MEXT brothers we can do this| +|08/01/2022 06:10:25| |SUGOI DEKAI| +|08/01/2022 06:10:26| |Not a fucking tank| +|08/01/2022 06:10:26| (((MEXT))) +|08/01/2022 06:10:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:10:28| |A MATTER OF PERPSECTIVE| +|08/01/2022 06:10:28| |TL Note: "Anzu" means "SEX"| +|08/01/2022 06:10:30| |Megane master| +|08/01/2022 06:10:30| |RIGGED MATCH STOP THE STEAL| +|08/01/2022 06:10:31| |raw pasta| +|08/01/2022 06:10:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:10:33| momo=jew +|08/01/2022 06:10:34| |A CREW OF SPOOKS| +|08/01/2022 06:10:34| |is that thing remote controlled or something?| +|08/01/2022 06:10:35| |MEX CHADS THIS IS OUR YEAR| +|08/01/2022 06:10:36| Anzu +|08/01/2022 06:10:37| |thanks tl| +|08/01/2022 06:10:38| |i want to sex glasses guy| +|08/01/2022 06:10:38| |IT'S MEXT'S YEAR| +|08/01/2022 06:10:41| GUTS +|08/01/2022 06:10:44| |Kino time| +|08/01/2022 06:10:44| momo=mossad +|08/01/2022 06:10:45| bakahippu +|08/01/2022 06:10:46| |Noriko is still a sexy boy| +|08/01/2022 06:10:46| |HOW DID YOU MISS AGAIN| +|08/01/2022 06:10:47| ONOREEEEEE +|08/01/2022 06:10:47| |ROOZUHIPPU MODORINASAI| +|08/01/2022 06:10:47| |MY WIFE, ROSEHIP| +|08/01/2022 06:10:47| ONOREEEE +|08/01/2022 06:10:48| BAKA +|08/01/2022 06:10:49| |HERE IT COMES| +|08/01/2022 06:10:50| |Best girl spotted| +|08/01/2022 06:10:50| |rosehip remember the saying| +|08/01/2022 06:10:51| :DDD +|08/01/2022 06:10:51| POLKA! +|08/01/2022 06:10:51| ENTER +|08/01/2022 06:10:52| |TEAM GLOW-IN-THE-DARK| +|08/01/2022 06:10:53| KITA +|08/01/2022 06:10:53| |Rosehip is cute| +|08/01/2022 06:10:53| |did i miss the alisa meltdown?| +|08/01/2022 06:10:53| :DDDDDDDDD +|08/01/2022 06:10:53| :DDDDDDDDDDDDDD +|08/01/2022 06:10:53| :DDDD +|08/01/2022 06:10:54| |Rosehip best hip| +|08/01/2022 06:10:54| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:10:55| PERKELE +|08/01/2022 06:10:55| PERKELE +|08/01/2022 06:10:55| |BASED NORIKO| +|08/01/2022 06:10:56| |OH BOY HERE WE GO| +|08/01/2022 06:10:56| benis +|08/01/2022 06:10:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:10:57| ENTER +|08/01/2022 06:10:57| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:10:57| :-DDD +|08/01/2022 06:10:58| :DDDDDDDDDDDDDD +|08/01/2022 06:10:58| |KINO TIME| +|08/01/2022 06:10:58| |Rosehip speed| +|08/01/2022 06:10:59| :DDDDDDDDDDDDDDDD +|08/01/2022 06:11:00| benis +|08/01/2022 06:11:00| |hit it| +|08/01/2022 06:11:00| :DDDDDDDDDDDDDDDDD +|08/01/2022 06:11:01| |GHRISDIE SUSBENSION:DDDDDDDDDDD| +|08/01/2022 06:11:01| |ARE YOU READY BROS?| +|08/01/2022 06:11:02| YEEAAAAHHHHHHHH +|08/01/2022 06:11:02| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:02| |best scene incoming| +|08/01/2022 06:11:03| BENIS +|08/01/2022 06:11:03| |The Finns are strong because they don't miss| +|08/01/2022 06:11:04| |:DDDDDDDDDDD :DDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:04| |Peak moment of the series right here| +|08/01/2022 06:11:04| :DDDDDDDDDDDDD +|08/01/2022 06:11:04| |HUMPPAAA TAIKKA KUOLE| +|08/01/2022 06:11:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:05| |HAISTA VITTU :DDDDDDDDDDDDD| +|08/01/2022 06:11:05| |>When the trees start speaking Finnish| +|08/01/2022 06:11:05| :DDDDDDDDDDDDDDD +|08/01/2022 06:11:06| :DDD +|08/01/2022 06:11:06| :DDDDDDDDDDDDDD +|08/01/2022 06:11:07| PERKELEEEEEEEE +|08/01/2022 06:11:07| :DDDDDDDDDDDDD +|08/01/2022 06:11:07| |>Using cheating artillery >Still keep missing| +|08/01/2022 06:11:07| |MY HOBO WIFE MIKA| +|08/01/2022 06:11:07| |fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:07| |BENIS TIME| +|08/01/2022 06:11:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:07| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:08| :D +|08/01/2022 06:11:08| Кино +|08/01/2022 06:11:08| |EBIN :DDDDDDDDDDDDDD| +|08/01/2022 06:11:08| jammin +|08/01/2022 06:11:08| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:08| |PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:08| KITAAAAAAA +|08/01/2022 06:11:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:10| :DDDDDDDDDDDDDD +|08/01/2022 06:11:10| |BENIS :DDDDDDDD| +|08/01/2022 06:11:10| :DDDDDDDDDDD +|08/01/2022 06:11:11| KINO +|08/01/2022 06:11:11| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:11| |BERGELE :DDDDDDD| +|08/01/2022 06:11:11| |TIME FOR EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:11| KITAAAAAAAAAAAAAAAA +|08/01/2022 06:11:11| |FUGGGGG :DDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:11| |ENDER :DDDDDDDDDDDDDDDDDDDDdddddddddddddddd| +|08/01/2022 06:11:11| |EBIN :DDDDDDDDDDD| +|08/01/2022 06:11:11| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:11| :DDDDDDD +|08/01/2022 06:11:11| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :D| +|08/01/2022 06:11:12| |HERE WE GOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 06:11:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:12| |FUGGGGG :DDDDDDD| +|08/01/2022 06:11:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:13| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:13| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:13| :DDDDDDDDDDDDD +|08/01/2022 06:11:13| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:13| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:13| PERKELE +|08/01/2022 06:11:14| OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:11:14| |I wanna fug Aki| +|08/01/2022 06:11:15| :DDDD +|08/01/2022 06:11:15| perkele +|08/01/2022 06:11:15| SUOMI +|08/01/2022 06:11:15| :DDDDDDDDDDDDD +|08/01/2022 06:11:15| |LETS FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 06:11:15| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:15| |BENIS :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:16| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:16| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:16| SAAATAAAANAAAAAAAA +|08/01/2022 06:11:16| |PERKELE :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:16| |FUGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:16| |BENIS :DDDDD| +|08/01/2022 06:11:17| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:17| |FUG :DDDDDDDDDDD| +|08/01/2022 06:11:17| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:18| :DDDDDDDDDDDDD +|08/01/2022 06:11:18| :D +|08/01/2022 06:11:18| PERKELE +|08/01/2022 06:11:18| benis +|08/01/2022 06:11:18| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:18| |FUG :DDDDDDDDDDDD| +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:19| |FUG :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDD +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:20| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:20| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:20| |Ebin :DDDDD| +|08/01/2022 06:11:20| PERKELE +|08/01/2022 06:11:20| :----DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:21| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:21| :DDDDDDDDDDDD +|08/01/2022 06:11:21| OST +|08/01/2022 06:11:21| PERKELE +|08/01/2022 06:11:22| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:22| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD | +|08/01/2022 06:11:22| |SUOMI SUOMI FUG| +|08/01/2022 06:11:22| |OH FUGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:22| PERKELE +|08/01/2022 06:11:23| |KINO KINO KINO KINO :DDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:23| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:23| :DDDDDDDDDDDDD +|08/01/2022 06:11:23| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:23| |Viimeinen suomalainen hereillä| +|08/01/2022 06:11:24| |FUG :DDDDDDDDDDDD| +|08/01/2022 06:11:24| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:25| |PERGELE :DDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:25| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD benis| +|08/01/2022 06:11:25| |SATANA :DDDD| +|08/01/2022 06:11:25| |TULTA MUNILLE| +|08/01/2022 06:11:25| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:25| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:25| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:26| |Active sonar| +|08/01/2022 06:11:27| ::DDDDDDDD +|08/01/2022 06:11:27| |KINO KINO KINO KINO :DDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:27| :DDDDDDDDDDDDD +|08/01/2022 06:11:27| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:28| |EBIN :DDDDDDDDDDDDDDDD| +|08/01/2022 06:11:28| DULDA +|08/01/2022 06:11:28| |It's Kantele Time| +|08/01/2022 06:11:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:28| |Do you know benis?| +|08/01/2022 06:11:29| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:29| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:29| |PERKELE SAATANA VITTU :DDDDDDDDDDDDDD| +|08/01/2022 06:11:30| |FUUUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:30| |FUCK YEAR| +|08/01/2022 06:11:31| |EBIN :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:31| |tonks?fuggg :DDDDD| +|08/01/2022 06:11:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:32| |BRAP BRAP BRAP| +|08/01/2022 06:11:32| :DDDDDDDDDDDDD +|08/01/2022 06:11:33| |NJET MOLOTOV| +|08/01/2022 06:11:34| |SPURDO SPÄRDE| +|08/01/2022 06:11:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:34| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:34| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:34| |fugg :DDDDDDDDDDDDD| +|08/01/2022 06:11:35| :DDDDDDDD +|08/01/2022 06:11:35| EBIN +|08/01/2022 06:11:35| |:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +|08/01/2022 06:11:37| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddd +|08/01/2022 06:11:37| |:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +|08/01/2022 06:11:37| |PERKELE :DDDDDDD| +|08/01/2022 06:11:37| |ON TÄÄLLÄ TOINENKIN| +|08/01/2022 06:11:38| :DDDDDDDDDDDDD +|08/01/2022 06:11:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:38| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:38| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD FUG| +|08/01/2022 06:11:38| |ISHKENI KAIKESHTA VAPAUTAN| +|08/01/2022 06:11:39| |EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:39| DORIFTO +|08/01/2022 06:11:42| EBINNED +|08/01/2022 06:11:42| |FUG :DDDDDD| +|08/01/2022 06:11:43| :DDDDDDDDDDDDDDDDD +|08/01/2022 06:11:43| :DDDDDDDDDDDDD +|08/01/2022 06:11:43| |ebin ebin| +|08/01/2022 06:11:46| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:46| |WE NOT GONNA TALK ABOUT THAT DRIFTO?| +|08/01/2022 06:11:46| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:46| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD BENIS| +|08/01/2022 06:11:47| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:47| D;D;D;D;D;D;D;D;D;;d:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D +|08/01/2022 06:11:47| :DDDDDDDDDDDDD +|08/01/2022 06:11:47| PROOOOOOH +|08/01/2022 06:11:47| :DDDDDDDDDDDDDDDDD +|08/01/2022 06:11:48| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:48| :DDDDDDDDDDDDD +|08/01/2022 06:11:48| |GANDELE BERVIDIN BERGELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:49| |EBIN :DDDD| +|08/01/2022 06:11:49| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:50| |GOT THAT 454 BIG BLOCK| +|08/01/2022 06:11:51| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:11:52| |O FUG GARL :DDDDDDDDDDD| +|08/01/2022 06:11:52| |bubbering :DDDDD| +|08/01/2022 06:11:52| |stinky helsiniki| +|08/01/2022 06:11:53| |SEX WITH MIKAAAAAAAAAAAA| +|08/01/2022 06:11:53| |:DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD :DDDD | +|08/01/2022 06:11:53| |SPURDO SPÄRDE :DDDD| +|08/01/2022 06:11:54| |DUCE DUCE DUCE :DDDDDD | +|08/01/2022 06:11:54| |Beautiful Kantele playing| +|08/01/2022 06:11:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:11:55| |EBINNED AND FUGGED :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:11:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:11:55| |FUGGIN CARL GUN :DDDDDDDDD| +|08/01/2022 06:11:56| |GRISDY SUSBENSION| +|08/01/2022 06:11:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:11:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:11:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:11:58| |:DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD :DDDDDD | +|08/01/2022 06:11:59| |BENIS :DDDDDD| +|08/01/2022 06:11:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:01| |SUOMI :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:02| |DUCE? FUG :DDD| +|08/01/2022 06:12:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:02| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:04| SOOOOOOOOREEEEEEEEEEEEEEEEEEE +|08/01/2022 06:12:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:04| SHIMAYTSA +|08/01/2022 06:12:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:04| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:04| |Such a dumb plan| +|08/01/2022 06:12:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:05| |KOCCHI MITERU ZO| +|08/01/2022 06:12:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE VVVDUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:07| |Åbo represent| +|08/01/2022 06:12:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:07| |UWAAAAAAAAAAAAAAAAAA KOCCHI MITERUZO| +|08/01/2022 06:12:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:08| |DUCE CANNON| +|08/01/2022 06:12:08| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:08| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:09| |NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG NOT A WIG | +|08/01/2022 06:12:09| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:10| |IF ONLY WE BLEW THE BRIDGE BEFOREHAND| +|08/01/2022 06:12:10| DUCE +|08/01/2022 06:12:10| :D +|08/01/2022 06:12:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:12| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:12| |100% dead| +|08/01/2022 06:12:12| |DUCE DUCE| +|08/01/2022 06:12:13| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:13| |EBIN CHRISDIE SUSBENSION :DDDDDDDDDD| +|08/01/2022 06:12:13| |FUCCCCKK TOO MUFCH KINO| +|08/01/2022 06:12:13| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:15| |CARBON COATING| +|08/01/2022 06:12:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:20| |DVCE DVCE DVCE| +|08/01/2022 06:12:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:23| |DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:23| ROCK +|08/01/2022 06:12:23| |600 600 600 600 600 600 600 600 600 600 600 600 | +|08/01/2022 06:12:23| |DUCE DUCE DUCE DUCE| +|08/01/2022 06:12:23| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:24| BENIS +|08/01/2022 06:12:24| |DUCE DUCE DUCE| +|08/01/2022 06:12:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:24| |Oulu on paskakaupunni| +|08/01/2022 06:12:25| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:12:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:27| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:27| |ANTITANK ROCK| +|08/01/2022 06:12:27| DEAD +|08/01/2022 06:12:28| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:28| :P +|08/01/2022 06:12:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:12:30| 🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕 +|08/01/2022 06:12:31| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:31| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:31| |CHRISBIE SUSBENSION :DDDDDDDDDDDDD| +|08/01/2022 06:12:31| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:32| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:12:32| EEE +|08/01/2022 06:12:33| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:34| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:34| |FUG :DDDDDDDDDD| +|08/01/2022 06:12:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:12:35| |:DDDDDDDDDDD :DDDDDDDDDDD :DDDDDDDDDDD| +|08/01/2022 06:12:36| RIP +|08/01/2022 06:12:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:12:36| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:36| PERKELE +|08/01/2022 06:12:36| F +|08/01/2022 06:12:37| ............................................... +|08/01/2022 06:12:38| RIP +|08/01/2022 06:12:38| :DDDDDDDDDDD +|08/01/2022 06:12:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:38| ... +|08/01/2022 06:12:40| FUGG +|08/01/2022 06:12:40| RIP???? +|08/01/2022 06:12:40| |OH FUG :DDD| +|08/01/2022 06:12:40| Fuggg +|08/01/2022 06:12:41| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:41| |OH FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:41| |FUCKING DED| +|08/01/2022 06:12:41| FUUUUUUUUUUUUUUUUUUUUGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +|08/01/2022 06:12:41| fugg +|08/01/2022 06:12:42| FUGGG +|08/01/2022 06:12:42| F? +|08/01/2022 06:12:43| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:43| |O FUG :DDDDDDDDD| +|08/01/2022 06:12:43| |MORE KINO INCOMING :d| +|08/01/2022 06:12:43| FUUUUUG +|08/01/2022 06:12:44| damn +|08/01/2022 06:12:44| |TRACKS ARE FOR SUCKERS| +|08/01/2022 06:12:44| |CARBON COATING| +|08/01/2022 06:12:44| F +|08/01/2022 06:12:45| |CHRISDIE SUSBENSIONS :DDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:45| |binland bros...| +|08/01/2022 06:12:45| |FUGGGGG :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:45| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:45| FUGGGG +|08/01/2022 06:12:46| FUG +|08/01/2022 06:12:46| |PERKELEEEEEEE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:46| FUGGGGGGGGGG +|08/01/2022 06:12:47| DDDD: +|08/01/2022 06:12:47| |CHRISDIE SUSBENSION| +|08/01/2022 06:12:47| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:48| |PART 2 BITCH| +|08/01/2022 06:12:48| NOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:12:48| |CHRISDIE SUSBENSION :DDDDDDDDD| +|08/01/2022 06:12:49| Surprise! +|08/01/2022 06:12:49| :DDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddddd +|08/01/2022 06:12:49| |CHRISDIE SUSBENSIONS :DDDDDDDDDD| +|08/01/2022 06:12:49| |RAYQUAZA NO| +|08/01/2022 06:12:49| |shiddd :-DDDDDD| +|08/01/2022 06:12:50| |DOKTOR, TURN OFF MY WHEEL INHIBITORS| +|08/01/2022 06:12:50| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:50| |FUGG :DDD| +|08/01/2022 06:12:50| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:51| |CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:51| :DDDDDDDDDD +|08/01/2022 06:12:52| |CHRISDIE SUSBENSION CHRISDIE SUSBENSION :DDDDD| +|08/01/2022 06:12:52| |SPURDO SPÄRDE :DDDD| +|08/01/2022 06:12:52| |FINNISH TRICKERY| +|08/01/2022 06:12:52| |GHRISDIE SUSBENSION :DDDDDDDDDDDDDD| +|08/01/2022 06:12:52| :DDDDDD +|08/01/2022 06:12:52| NANI?!?! +|08/01/2022 06:12:52| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:12:52| KINO +|08/01/2022 06:12:53| |THIS IS THE POWER OF :D| +|08/01/2022 06:12:54| However... +|08/01/2022 06:12:54| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:55| |GRISDIE SUSBENSION| +|08/01/2022 06:12:55| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:55| :DDDDDDDDDDDDDDDD +|08/01/2022 06:12:56| 🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮🇫🇮 +|08/01/2022 06:12:56| |FUGGGGGGGGGGGG :DDDDD| +|08/01/2022 06:12:56| |TRACKERS FOR FAGS| +|08/01/2022 06:12:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:57| |CHRISDIE SUSBENSION| +|08/01/2022 06:12:57| |lets goooooooo| +|08/01/2022 06:12:57| |WE DON'T NEED TRACKS WHERE WE'RE GOING| +|08/01/2022 06:12:57| NAMENNA! +|08/01/2022 06:12:57| |CHRISTIE OP| +|08/01/2022 06:12:58| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:58| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:12:58| |grisdie susbension :-DDDDD| +|08/01/2022 06:12:58| |CHRIBSDIE SUBSBENDSION :DDDDD| +|08/01/2022 06:12:58| |CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:12:59| |CHRISDIE SUSBENSIONS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:13:00| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:00| FUGGGGGGG +|08/01/2022 06:13:00| FUG +|08/01/2022 06:13:00| |GAS GAS GAS| +|08/01/2022 06:13:01| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:03| |CHRISDIE SUSBENSIONS| +|08/01/2022 06:13:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:03| :DDDDDDDDDDDDDDDDDDDDDDDDDDddddddddddddddd +|08/01/2022 06:13:04| |MY LIMIDERS :DDDDDDDDD| +|08/01/2022 06:13:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:05| |CHRISDIE SUSBENSION :D| +|08/01/2022 06:13:05| |CHRISDIE SUSBENSION :dddddd| +|08/01/2022 06:13:05| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:06| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:07| |IGE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:13:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:07| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:09| |SHE SAID THE LINE| +|08/01/2022 06:13:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:09| |MAZUROYO NERA EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +|08/01/2022 06:13:10| |so this is the power of finland| +|08/01/2022 06:13:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:11| |ANCHOVY FLIGHT| +|08/01/2022 06:13:11| |DUCE DUCE DUCE DUCE| +|08/01/2022 06:13:12| NANIIIIIIIIII???!!!! +|08/01/2022 06:13:12| |CHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:13:12| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:13| |FLYInG PANZA| +|08/01/2022 06:13:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:14| |HIGH IQ| +|08/01/2022 06:13:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:16| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:16| DUCEPULT +|08/01/2022 06:13:16| FUOCO +|08/01/2022 06:13:16| ??????????????????????????????????????????? +|08/01/2022 06:13:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:17| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:17| |IMA DA| +|08/01/2022 06:13:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:18| |DUCE DUCE DUCE| +|08/01/2022 06:13:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:18| dumb +|08/01/2022 06:13:18| |PIZZA DELIVERY| +|08/01/2022 06:13:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:22| |CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 CV33 | +|08/01/2022 06:13:22| L +|08/01/2022 06:13:22| 2smart4u +|08/01/2022 06:13:22| Are +|08/01/2022 06:13:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:23| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:24| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:24| NORIKO<3 +|08/01/2022 06:13:24| ARE? +|08/01/2022 06:13:25| |FUCKING HOW??????????????????| +|08/01/2022 06:13:25| |FLYING ANCHOVIES| +|08/01/2022 06:13:26| F +|08/01/2022 06:13:26| DVCE +|08/01/2022 06:13:26| |christie suspensionnnnnnnnnn| +|08/01/2022 06:13:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:27| DUCE +|08/01/2022 06:13:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:13:28| |in all serious what would a maching gun do against that?| +|08/01/2022 06:13:28| :DDDDDDDDDDDDDD +|08/01/2022 06:13:30| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:30| あれ? +|08/01/2022 06:13:30| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:31| |AN AMERICAN TANK'S ONE WEAKNESS| +|08/01/2022 06:13:31| |>it didn't work| +|08/01/2022 06:13:31| |Smart they ain’t. But that’s why I love them| +|08/01/2022 06:13:32| :D +|08/01/2022 06:13:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:34| :DDDD +|08/01/2022 06:13:35| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:35| |DRIVING IN CIRCLES| +|08/01/2022 06:13:37| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:38| DFCE +|08/01/2022 06:13:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:41| |Smug finish waifu| +|08/01/2022 06:13:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:42| |PASTA TIME| +|08/01/2022 06:13:43| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:43| PASTA +|08/01/2022 06:13:43| |JUST TULTA ALREADY| +|08/01/2022 06:13:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:44| PASTA +|08/01/2022 06:13:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:45| ANZUUUUUUUUUU +|08/01/2022 06:13:47| PASTA? +|08/01/2022 06:13:47| |TL Note: "Anzu" means "SEX"| +|08/01/2022 06:13:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:47| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:48| PASTA +|08/01/2022 06:13:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:48| PASTA +|08/01/2022 06:13:48| |PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA | +|08/01/2022 06:13:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:48| PASTA! +|08/01/2022 06:13:48| PASTA? +|08/01/2022 06:13:49| MAJISUKA +|08/01/2022 06:13:49| PASTA?! +|08/01/2022 06:13:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:49| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:51| PASTA +|08/01/2022 06:13:51| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:13:51| |PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA PASTA | +|08/01/2022 06:13:51| PASTA +|08/01/2022 06:13:52| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:13:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:53| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:54| |THANKS TL| +|08/01/2022 06:13:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:13:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:13:57| YOSH +|08/01/2022 06:13:57| KAICHOOOOOOO +|08/01/2022 06:13:57| WEW +|08/01/2022 06:13:58| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:13:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:58| Anzu +|08/01/2022 06:13:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:13:59| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:01| PASTAAA +|08/01/2022 06:14:01| |Flying Hetzer| +|08/01/2022 06:14:01| HETZER +|08/01/2022 06:14:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:14:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:14:03| docking +|08/01/2022 06:14:03| |:DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DUCE :DDDD DU| +|08/01/2022 06:14:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:05| |ANZU ANZU ANZU ANZU| +|08/01/2022 06:14:06| |LET'S GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 06:14:06| AIRSHOT +|08/01/2022 06:14:07| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:14:08| |PERKELE :DDD| +|08/01/2022 06:14:09| |R E K T| +|08/01/2022 06:14:09| YATA +|08/01/2022 06:14:10| YATTA +|08/01/2022 06:14:10| FLYING +|08/01/2022 06:14:11| |YADDA :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:12| Tulta! +|08/01/2022 06:14:12| |Right in the hole| +|08/01/2022 06:14:12| |ANZU STRONK| +|08/01/2022 06:14:12| |OH NO, NOT THE GHOST CREW| +|08/01/2022 06:14:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:13| SUCCESS +|08/01/2022 06:14:13| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:14| |nice air| +|08/01/2022 06:14:17| |KARL NO| +|08/01/2022 06:14:17| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:18| :DDDDDDDDDDDDDD +|08/01/2022 06:14:19| |anzu the sharpshooter| +|08/01/2022 06:14:20| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:20| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:21| CUte +|08/01/2022 06:14:21| TUTLA +|08/01/2022 06:14:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:22| |Couldn't they have gotten an engine shot right there?| +|08/01/2022 06:14:23| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:23| |FUGGGGGGG :DDDDDDDDDDDDD| +|08/01/2022 06:14:24| |FUGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:24| :DDDDDDDDD +|08/01/2022 06:14:24| KINO +|08/01/2022 06:14:25| PERKELE +|08/01/2022 06:14:25| |EBIN STREAM :DDDDD| +|08/01/2022 06:14:26| PERKELE +|08/01/2022 06:14:26| |did the finns really have panzers?| +|08/01/2022 06:14:26| |Khrome is a faget :DD| +|08/01/2022 06:14:27| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:27| |WHY ARE RUNNING?| +|08/01/2022 06:14:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:28| |SWIGGITY SWAGGITY COMING FOR DAT BOOTY :DDDDD| +|08/01/2022 06:14:29| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:29| TULTA!!!!!!!!!!!!!!!!!! +|08/01/2022 06:14:29| |Why didn't they just shoot them from behind| +|08/01/2022 06:14:30| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:30| TUTA +|08/01/2022 06:14:30| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:30| |HETZER GONNA HETZ| +|08/01/2022 06:14:30| TUTE +|08/01/2022 06:14:31| TULTA +|08/01/2022 06:14:32| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:32| SAAATAAAAANAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:14:32| |>needing wheels| +|08/01/2022 06:14:32| TULTA +|08/01/2022 06:14:33| |:DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD :DDDDDDDDDDDD | +|08/01/2022 06:14:33| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:33| |MONEY SHOT BITCH| +|08/01/2022 06:14:33| |TULTA :DDDDDDDDDD| +|08/01/2022 06:14:33| |DULDA :DDDDDDDDDDDDDDDDDDDDDDddddddddddddddddd| +|08/01/2022 06:14:33| |DULDA :DDDD| +|08/01/2022 06:14:33| FUG +|08/01/2022 06:14:33| Tulta +|08/01/2022 06:14:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:34| TULTA +|08/01/2022 06:14:34| TULTA +|08/01/2022 06:14:34| TULTA! +|08/01/2022 06:14:35| |why does she go in front of them :DDDDDD| +|08/01/2022 06:14:36| |PERKELE :DDDDDDDDDD| +|08/01/2022 06:14:36| TULTA +|08/01/2022 06:14:36| |TULTA :DDDDDDDDDD| +|08/01/2022 06:14:36| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:36| TUlta +|08/01/2022 06:14:37| |why did they pull in front of their barrel?| +|08/01/2022 06:14:37| rip +|08/01/2022 06:14:37| |TULTA :DDDDDD| +|08/01/2022 06:14:37| |TULDA :DDDDDDDDDDD| +|08/01/2022 06:14:37| TUTA +|08/01/2022 06:14:38| |DULKDA :DD| +|08/01/2022 06:14:39| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:39| |DULDA :DDDDDDDDDDDDDDDD| +|08/01/2022 06:14:40| TULTA +|08/01/2022 06:14:40| |DULDA :DDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:40| |oh fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:40| :D +|08/01/2022 06:14:40| TULTA +|08/01/2022 06:14:41| |WIDNESS FINNISH ENGINEERINGN| +|08/01/2022 06:14:41| |DULDA :DDDDD| +|08/01/2022 06:14:41| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:41| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:14:41| |TUL TA| +|08/01/2022 06:14:42| |HOW THE FUCK| +|08/01/2022 06:14:42| PERKELE +|08/01/2022 06:14:43| |TULTA :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:43| KINO +|08/01/2022 06:14:43| |mic drop| +|08/01/2022 06:14:43| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDD| +|08/01/2022 06:14:45| Bwring +|08/01/2022 06:14:45| |>bicycling a tank| +|08/01/2022 06:14:46| TULDA:DDDDDD +|08/01/2022 06:14:46| Kino~ +|08/01/2022 06:14:47| |EBIN :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:14:47| |They could have knocked it out| +|08/01/2022 06:14:48| |stream redeemed| +|08/01/2022 06:14:48| :DDDDDDDDDDDDDD +|08/01/2022 06:14:49| |so they could WITNESS| +|08/01/2022 06:14:49| |K I N O| +|08/01/2022 06:14:50| |Most kino moment| +|08/01/2022 06:14:50| |WITH FINNS YOU WIN| +|08/01/2022 06:14:50| |BASED FINNS| +|08/01/2022 06:14:53| |MOST KINO MOMENT| +|08/01/2022 06:14:53| |MIKA OUT| +|08/01/2022 06:14:53| |EBIN :DDDDDDDDDDDD| +|08/01/2022 06:14:55| JS-2 +|08/01/2022 06:14:57| |EBIN :DDDDDDD| +|08/01/2022 06:14:58| |That was so stupif| +|08/01/2022 06:14:58| |fuck yeah that's such a great scene| +|08/01/2022 06:14:58| |ILLEGAL SONAR DEVICE| +|08/01/2022 06:14:58| ebin... +|08/01/2022 06:14:59| |best scene in television and film history| +|08/01/2022 06:14:59| |fucking kino| +|08/01/2022 06:15:01| :DD +|08/01/2022 06:15:04| |Kino at its finest| +|08/01/2022 06:15:04| |Around finns the ice is thin| +|08/01/2022 06:15:05| |you were stupid| +|08/01/2022 06:15:05| :DDDDDDDDDDDDDDDD +|08/01/2022 06:15:07| |I GOTTA PISSSSSSSSSSSS| +|08/01/2022 06:15:11| DVCE +|08/01/2022 06:15:11| |*glab glab glab* :DDDDDDDDDDDDDD| +|08/01/2022 06:15:12| DUCE +|08/01/2022 06:15:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:15:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:15:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:18| |duce duce duce duce| +|08/01/2022 06:15:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:15:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:22| TOTSUGEKI +|08/01/2022 06:15:24| ;_; +|08/01/2022 06:15:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:27| PTSD +|08/01/2022 06:15:28| |here the saying katyusha| +|08/01/2022 06:15:28| |nishi nishi nishi nishi| +|08/01/2022 06:15:28| |SEX WITH KATYUSHA| +|08/01/2022 06:15:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:15:29| ;_;7 +|08/01/2022 06:15:29| |cry more midget| +|08/01/2022 06:15:31| ;_; +|08/01/2022 06:15:31| SLAGGGGGGG +|08/01/2022 06:15:31| |SHAMFUR DISDRAY| +|08/01/2022 06:15:33| |The last commie| +|08/01/2022 06:15:33| ;_; +|08/01/2022 06:15:37| *sip* +|08/01/2022 06:15:39| |ruskies no more| +|08/01/2022 06:15:43| >bongs +|08/01/2022 06:15:44| |<3 KAY| +|08/01/2022 06:15:47| |FIND YOUR POWN SENSHADO| +|08/01/2022 06:15:48| |just be urself| +|08/01/2022 06:15:48| |just got here, have the muricans died yet?| +|08/01/2022 06:15:49| |Miho style| +|08/01/2022 06:15:49| |Kay's just here for the ride| +|08/01/2022 06:15:50| |my maho wife| +|08/01/2022 06:15:55| |Wani owned| +|08/01/2022 06:15:56| |Communisnm on deaths door| +|08/01/2022 06:15:56| ERIKA +|08/01/2022 06:15:57| |the mutts lost| +|08/01/2022 06:15:58| |Erika BTFO| +|08/01/2022 06:16:00| ERIKA +|08/01/2022 06:16:00| |SHUT DOWN| +|08/01/2022 06:16:01| |SHUT UP ERIKA| +|08/01/2022 06:16:01| |shut ut wani| +|08/01/2022 06:16:01| |ERIKA SHUT THE FUCK UP| +|08/01/2022 06:16:02| |WANI BTFO| +|08/01/2022 06:16:03| |wani owned epic style| +|08/01/2022 06:16:04| |That swaying hair is really cute| +|08/01/2022 06:16:05| WANI +|08/01/2022 06:16:05| |UND DAS HEISST| +|08/01/2022 06:16:10| |WANI STATUS: DESTROYED| +|08/01/2022 06:16:10| Erika... +|08/01/2022 06:16:10| |erika is always getting put in her place| +|08/01/2022 06:16:12| |ERIKA is right| +|08/01/2022 06:16:13| |PANZER VOR| +|08/01/2022 06:16:14| EEEEEEERIKA +|08/01/2022 06:16:15| |PANZER VORE| +|08/01/2022 06:16:16| |PANZER VOR| +|08/01/2022 06:16:16| |WANI CANT STOP LOSING| +|08/01/2022 06:16:17| |PANZA VOR| +|08/01/2022 06:16:17| |fucking wani| +|08/01/2022 06:16:19| |BANSER VOR :DDDD| +|08/01/2022 06:16:20| |PANTSU 4| +|08/01/2022 06:16:21| |PANZER 4| +|08/01/2022 06:16:23| |PANZER VOR| +|08/01/2022 06:16:23| |Pantsu for all| +|08/01/2022 06:16:24| |Best battleground of all time| +|08/01/2022 06:16:27| |ENTER KINO| +|08/01/2022 06:16:29| |wanibros post your face when we beat the slag| +|08/01/2022 06:16:29| |P{ANTSU VORE| +|08/01/2022 06:16:29| >buffering +|08/01/2022 06:16:30| |TOSUGEKI INTO WANI'S WANI| +|08/01/2022 06:16:31| |FUCKING ISEKAI LOOKING ASS PLACE| +|08/01/2022 06:16:33| |tl what does "panzer vor" mean again?| +|08/01/2022 06:16:36| |Why didn't they go into the park in the first place| +|08/01/2022 06:16:37| |can't wait for the tsar tank| +|08/01/2022 06:16:37| |I HATE THE ANTICHRIST| +|08/01/2022 06:16:38| totsugeki? +|08/01/2022 06:16:39| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 06:16:40| |kino battleground| +|08/01/2022 06:16:42| TOTSUGEKI +|08/01/2022 06:16:44| |panzer vor means sex with Anzu| +|08/01/2022 06:16:46| |PANZER VOR MEANS PANZER VOR| +|08/01/2022 06:16:48| |thanks tl| +|08/01/2022 06:16:50| |DATABASE DATABASE| +|08/01/2022 06:16:50| ?????????????????????????????????????? +|08/01/2022 06:16:50| |assam the datanigger| +|08/01/2022 06:16:51| |TL Note: "Panzer vor" means "Panzer vor"| +|08/01/2022 06:16:52| ??????????????????????? +|08/01/2022 06:16:54| ??????????????????????????????????????????? +|08/01/2022 06:16:55| ?????????????????????????????????????? +|08/01/2022 06:16:56| ???????????????????????????????????????? +|08/01/2022 06:16:56| ?????????????????????????????????? +|08/01/2022 06:16:56| |che pizdish| +|08/01/2022 06:16:56| |was that magic| +|08/01/2022 06:16:56| ????????????? +|08/01/2022 06:16:57| ??????????????????????? +|08/01/2022 06:16:57| ??????????????????? +|08/01/2022 06:16:58| ?????????!? +|08/01/2022 06:16:58| |ty tl| +|08/01/2022 06:16:59| |Panzer vor means Erika is best girl| +|08/01/2022 06:17:00| ???????????????????????????????????????????????????? +|08/01/2022 06:17:00| |WTF IS SHE SAYING NOW???| +|08/01/2022 06:17:01| |HIGH IQ ASSAM| +|08/01/2022 06:17:02| |sex with wani| +|08/01/2022 06:17:02| ????????????????? +|08/01/2022 06:17:03| |JUST LIVING IN THE DATAASE| +|08/01/2022 06:17:04| |that does make sense| +|08/01/2022 06:17:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:04| |have you heard this saying anon?| +|08/01/2022 06:17:04| |WHAT THE FUCK ARE YOU TALKING ABOUT DARJELING| +|08/01/2022 06:17:09| totsugeki? +|08/01/2022 06:17:10| Nope +|08/01/2022 06:17:12| 6head +|08/01/2022 06:17:14| TOTSUGEK +|08/01/2022 06:17:14| baka +|08/01/2022 06:17:16| Totsugeki +|08/01/2022 06:17:17| |no totsugeki???| +|08/01/2022 06:17:18| |NO WAY| +|08/01/2022 06:17:18| |Darjeeling best girl| +|08/01/2022 06:17:20| |Don't listen to Darjeeling, she's trying to make you gay| +|08/01/2022 06:17:20| |Damn rosehip is so fucking cute bros...| +|08/01/2022 06:17:21| |are naomi and alisa still up?| +|08/01/2022 06:17:24| |TL NOTE; Totsugeki means Poopenfahren | +|08/01/2022 06:17:27| |I HATE THE ANTICHRIST| +|08/01/2022 06:17:27| |uwaaah bermuda| +|08/01/2022 06:17:27| |Hide in the long grass and bayonet people| +|08/01/2022 06:17:27| |pekoe, have you heard this saying, "rtgijowtij45tbn34h5twbnjht5 w4jtbw4hj5"| +|08/01/2022 06:17:32| |Naomi and Alisa are still up| +|08/01/2022 06:17:35| |nothin' fun about UN..........| +|08/01/2022 06:17:38| thanks +|08/01/2022 06:17:39| |totsugek :DDDDDDDDDDDDDDD| +|08/01/2022 06:17:42| |I'm still up in a couple ways| +|08/01/2022 06:17:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:45| DVCE +|08/01/2022 06:17:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:47| DUCE +|08/01/2022 06:17:48| O____________________O +|08/01/2022 06:17:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:17:48| DUCE +|08/01/2022 06:17:49| |Spank Naomi and Alisa Y/Y| +|08/01/2022 06:17:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:49| >CG +|08/01/2022 06:17:50| MAGIC +|08/01/2022 06:17:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:51| |TL Note: Totsugeki means useless| +|08/01/2022 06:17:52| |I am Duce's girlfriend. AMA.| +|08/01/2022 06:17:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:53| DUCE +|08/01/2022 06:17:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:17:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:55| |DUCE butt| +|08/01/2022 06:17:55| |ANZU ANZU ANZU ANZU| +|08/01/2022 06:17:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:57| |DUCEEE AASS| +|08/01/2022 06:17:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:17:58| |DUCE SPY| +|08/01/2022 06:17:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:17:59| |DUCE DUCE| +|08/01/2022 06:17:59| |DUCE BUTT| +|08/01/2022 06:17:59| |DUCE DUCE DUCE| +|08/01/2022 06:17:59| |DUCE BUTT| +|08/01/2022 06:18:00| |BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE BALDIE | +|08/01/2022 06:18:00| |CG DUCE| +|08/01/2022 06:18:00| IMAGINE +|08/01/2022 06:18:00| |Sex with DVCE's 3d model| +|08/01/2022 06:18:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:02| |THE UN WHEN YOU DON'T TAKE ANY REFUGEES| +|08/01/2022 06:18:02| |CHOBI BUTT| +|08/01/2022 06:18:02| |duce butt| +|08/01/2022 06:18:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:04| |DUCE DUCE DUCE| +|08/01/2022 06:18:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:18:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:07| |DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT DUCE BUTT | +|08/01/2022 06:18:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:17| |gotta go fast| +|08/01/2022 06:18:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:18| |Maybe the M3 Lee will finally do something| +|08/01/2022 06:18:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:20| |Duce with the big brain play, Intelligence wins wars| +|08/01/2022 06:18:20| |IS IT PASTA TIME YET??| +|08/01/2022 06:18:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:24| |italian flag achieved| +|08/01/2022 06:18:27| |DUCE DUCE DVCE DVCEvDUCE DUCE DVCE DVCEvvDUCE DUCE DVCE DVCEDUCE DUCE DVCE DVCEvDUCE DUCE DVCE DVCE| +|08/01/2022 06:18:35| |DUCE | +|08/01/2022 06:18:38| |it's just smoke| +|08/01/2022 06:18:39| ute +|08/01/2022 06:18:40| ute +|08/01/2022 06:18:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:44| |Why fire when you can't see the target| +|08/01/2022 06:18:45| |>is this bait?| +|08/01/2022 06:18:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:51| |JOHNNY COMES MARCHING HOME INBOUND| +|08/01/2022 06:18:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:18:52| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 06:18:52| |I HATE THE ANTICHRIST| +|08/01/2022 06:18:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:18:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:56| |i can't see shit captain| +|08/01/2022 06:18:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:18:58| |This is actually closer to real tank battles| +|08/01/2022 06:19:04| |WHEN JOHNNY COMES MARCHING HOME | +|08/01/2022 06:19:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:19:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:07| |johnny comes marching home is one of the most kino scenes| +|08/01/2022 06:19:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:19:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:11| RUSED +|08/01/2022 06:19:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:18| HEEEEHOOOO? +|08/01/2022 06:19:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:19:20| heihou +|08/01/2022 06:19:22| |ASTUTE OBSERVATION DUCE| +|08/01/2022 06:19:22| 煙幕だ +|08/01/2022 06:19:22| |HEY HOE| +|08/01/2022 06:19:23| |HEY HO| +|08/01/2022 06:19:24| Stratagen +|08/01/2022 06:19:25| Heehoo?? +|08/01/2022 06:19:31| TOTSUGEKI! +|08/01/2022 06:19:33| TINY +|08/01/2022 06:19:33| TOTSUGEKI +|08/01/2022 06:19:34| TOTSUGEKI +|08/01/2022 06:19:36| |they foreshadowed johnny comes marching home when yukari sung it| +|08/01/2022 06:19:36| TOTSUGEKI! +|08/01/2022 06:19:37| totsugeki +|08/01/2022 06:19:37| |STFU FUKUDA| +|08/01/2022 06:19:38| Totsugeki? +|08/01/2022 06:19:39| |SAY IT WITH ME LADS, TO TSU GE KI| +|08/01/2022 06:19:40| SHAME! +|08/01/2022 06:19:40| IMAGINE +|08/01/2022 06:19:40| |stealth tactics time| +|08/01/2022 06:19:40| |TENNO HEIKA BANZAI \o/| +|08/01/2022 06:19:41| BRAIDS +|08/01/2022 06:19:43| |ANTI SHAMEFUR| +|08/01/2022 06:19:43| SHAMEFUR? +|08/01/2022 06:19:43| |UOOOOOOOOOOO FUKUDA UOOOOOOOOOHHHHHHHHHH| +|08/01/2022 06:19:45| SHAMFUR +|08/01/2022 06:19:45| TOTSUGEKI? +|08/01/2022 06:19:45| |NO TOTSUGEKI?| +|08/01/2022 06:19:46| |WHAT'S THAT ?| +|08/01/2022 06:19:47| Totsugeki +|08/01/2022 06:19:48| ducks +|08/01/2022 06:19:48| 西側の西さん!? +|08/01/2022 06:19:50| |>not doing totsugeki| +|08/01/2022 06:19:52| |SHUT THE FUCK UP FUKUDA| +|08/01/2022 06:19:52| JOHNNY +|08/01/2022 06:19:52| CHAFEEEEEEE +|08/01/2022 06:19:53| BOOM +|08/01/2022 06:19:53| |TOTSUGEKI SHAMEFUL???!?!?!?!| +|08/01/2022 06:19:54| Totsugeki +|08/01/2022 06:19:54| ENTER +|08/01/2022 06:19:54| IKUZOOOOO +|08/01/2022 06:19:54| |K I N O| +|08/01/2022 06:19:55| ADHDHIP +|08/01/2022 06:19:55| |\o/ BANZAI| +|08/01/2022 06:19:56| |Rosehip you tard| +|08/01/2022 06:19:56| TOTSUGEKIIIIIII +|08/01/2022 06:19:57| |>DON'T WORRY GUYS, I HAVE A PLAN| +|08/01/2022 06:19:57| |MY WIFE, ROSEHIP| +|08/01/2022 06:19:57| |"What if we charged later?"| +|08/01/2022 06:19:58| |ENTER T-28| +|08/01/2022 06:19:58| ENTER +|08/01/2022 06:19:59| Enter +|08/01/2022 06:19:59| ENTER +|08/01/2022 06:19:59| ENTER +|08/01/2022 06:20:00| AAAAAAAAAAA +|08/01/2022 06:20:00| |rosehip plz| +|08/01/2022 06:20:00| ENTER +|08/01/2022 06:20:01| |YOU'RE A BIG GUY| +|08/01/2022 06:20:01| ROSEHIPPUU +|08/01/2022 06:20:02| |BIG GUY COMIN THROUGH| +|08/01/2022 06:20:03| |ROSEHIP NO| +|08/01/2022 06:20:03| HIPPU +|08/01/2022 06:20:03| |>time of need >americans nowhere to be seen| +|08/01/2022 06:20:03| ROSEHIP +|08/01/2022 06:20:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:04| ENTER +|08/01/2022 06:20:04| Kino +|08/01/2022 06:20:04| |That's no chaffee| +|08/01/2022 06:20:05| MOGGED +|08/01/2022 06:20:06| ENTER +|08/01/2022 06:20:06| ENTER +|08/01/2022 06:20:07| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:07| KINO +|08/01/2022 06:20:07| |I love rosehip just challenging the Chaffee as if it'd be on point| +|08/01/2022 06:20:07| |TANK GRINDAN| +|08/01/2022 06:20:07| |Enter, JOHNNY| +|08/01/2022 06:20:07| T28 +|08/01/2022 06:20:08| ENTER +|08/01/2022 06:20:10| |O S T| +|08/01/2022 06:20:11| |RUN AWAY| +|08/01/2022 06:20:11| |Is that the 90mm or the 105?| +|08/01/2022 06:20:11| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:11| |How the heck Rosehip drift that fast?| +|08/01/2022 06:20:11| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:12| |HURA HURA| +|08/01/2022 06:20:12| |ENTER ENTER MISSION| +|08/01/2022 06:20:12| |Rosehip, have you heard this saying: come back| +|08/01/2022 06:20:12| |Hurrah Hurrah| +|08/01/2022 06:20:13| |WHEN JOHNNY COMES MARCHING HOME| +|08/01/2022 06:20:13| |Big tonk| +|08/01/2022 06:20:14| ENTER +|08/01/2022 06:20:15| MOGGED +|08/01/2022 06:20:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:17| o7 +|08/01/2022 06:20:17| |JOHNNY I HARDLY KNEW YE| +|08/01/2022 06:20:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:20:17| ENTER +|08/01/2022 06:20:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:17| |WHEN JOHNNY BOY COMES MARCHING HOME| +|08/01/2022 06:20:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:18| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:19| t95 +|08/01/2022 06:20:20| Kino +|08/01/2022 06:20:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:20| |MARCHING IN| +|08/01/2022 06:20:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:22| |VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA VSA | +|08/01/2022 06:20:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:23| OST +|08/01/2022 06:20:23| HURRAH +|08/01/2022 06:20:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:23| |AND WE'LL ALL FEEL GAY| +|08/01/2022 06:20:24| |IT'S THE FAT FUCK| +|08/01/2022 06:20:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:25| |WHEN THE SAINTS COME MARCHING HOME| +|08/01/2022 06:20:26| BEEEEEEEEEEEEEEEEG +|08/01/2022 06:20:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:28| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:29| |USA USA USA USA USA| +|08/01/2022 06:20:30| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:30| |Here comes best tank| +|08/01/2022 06:20:32| |big boi| +|08/01/2022 06:20:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:20:33| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:33| |Spoiler: Johnny never did come marching home| +|08/01/2022 06:20:33| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:34| |AIM FOR THE TRACKS| +|08/01/2022 06:20:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:20:40| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:20:40| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:41| |WE"LL GIVE THE HERO THREE TIMES THREE| +|08/01/2022 06:20:42| |AMERILARDS CANT EVEN WALK 5M| +|08/01/2022 06:20:44| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:45| JABBERWOCK +|08/01/2022 06:20:46| What? +|08/01/2022 06:20:47| |Johnny got his gun| +|08/01/2022 06:20:48| ?????????????????????????? +|08/01/2022 06:20:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:49| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:20:50| |I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +|08/01/2022 06:20:51| ???????????????????????????????????????????? +|08/01/2022 06:20:52| |JUST LET IT RUN UNTIL ENGINE DOWN| +|08/01/2022 06:20:52| |Bandersnatch ??????????????| +|08/01/2022 06:20:53| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:55| |Kek Rosehip| +|08/01/2022 06:20:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:20:56| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:56| |>it looks like this thing that isn't real| +|08/01/2022 06:20:57| |ITS HUGE| +|08/01/2022 06:20:57| KINO +|08/01/2022 06:20:59| |I HATE THE ANTICHRIST| +|08/01/2022 06:20:59| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:21:00| DEKAI +|08/01/2022 06:21:01| |I HATE THE ANTICHRIST| +|08/01/2022 06:21:03| |CHRIST IS KING| +|08/01/2022 06:21:03| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:21:05| ((((((((UN)))))))) +|08/01/2022 06:21:06| |Darjeeling's snatch.........| +|08/01/2022 06:21:07| |I HATE THE ANTICHRIST| +|08/01/2022 06:21:08| |I'm not that big come on| +|08/01/2022 06:21:09| |I'd band er snatch| +|08/01/2022 06:21:14| |God, I love Rosehippu...| +|08/01/2022 06:21:14| |HE IS THAT BIG| +|08/01/2022 06:21:16| MEGUMI +|08/01/2022 06:21:18| >amerilates +|08/01/2022 06:21:19| |I love the antichrist| +|08/01/2022 06:21:21| |FOR YOU| +|08/01/2022 06:21:24| |KORE MO SAKUSEN DA| +|08/01/2022 06:21:29| |subtext subtext subtext subtext subtext| +|08/01/2022 06:21:32| |TINY KATYUSHA HANDS UOOOOOOOH| +|08/01/2022 06:21:32| ERIKA +|08/01/2022 06:21:34| |TOP TEXT| +|08/01/2022 06:21:35| HAPPY +|08/01/2022 06:21:36| |smiling erika| +|08/01/2022 06:21:36| HAI +|08/01/2022 06:21:38| |GO ERIKA GO| +|08/01/2022 06:21:39| |HAPPI ERIKA ;DDDDDD| +|08/01/2022 06:21:40| ERIKA!!!!! +|08/01/2022 06:21:41| |YURI TEXT| +|08/01/2022 06:21:44| |I LOVE ERIKA| +|08/01/2022 06:21:44| |ERIKA DO SOMETHING| +|08/01/2022 06:21:46| |how come Americans always show up late?| +|08/01/2022 06:21:48| |HAPPY ERIKA| +|08/01/2022 06:21:49| |Erika mega simp| +|08/01/2022 06:21:51| WANI +|08/01/2022 06:21:52| |my maho wife| +|08/01/2022 06:21:52| |fuggg u chafi :-DD| +|08/01/2022 06:21:55| |mutrs are lazy and dumb| +|08/01/2022 06:21:58| |they're hiding in the ducks...| +|08/01/2022 06:22:00| |OH BOY FUN LAND HERE WE GO| +|08/01/2022 06:22:02| |Impregnate Erika| +|08/01/2022 06:22:02| OST +|08/01/2022 06:22:07| |BEST BGM| +|08/01/2022 06:22:07| |they're eating chicken and drinking cola| +|08/01/2022 06:22:08| |Pershing getting BTFO'ed| +|08/01/2022 06:22:08| |THEY COULD BE COMING FRAM ALL SIDES| +|08/01/2022 06:22:08| |HAHAHA TIME FOR KINO| +|08/01/2022 06:22:09| |Tactical ducks!| +|08/01/2022 06:22:09| |Now that's how you Charge. | +|08/01/2022 06:22:10| BANZAI +|08/01/2022 06:22:11| |Erika loves it when Maho acknowledges her | +|08/01/2022 06:22:14| |Drum ost| +|08/01/2022 06:22:16| |what sort of totsugeki is this| +|08/01/2022 06:22:17| |VERY SNEAKY| +|08/01/2022 06:22:18| |THEYRE SITTING DUCKS| +|08/01/2022 06:22:19| |even more kino coming up| +|08/01/2022 06:22:20| Finally +|08/01/2022 06:22:21| |SURPRISE MOTHAFUCKA| +|08/01/2022 06:22:22| |Time to die American dog| +|08/01/2022 06:22:22| |THEY'RE EVERYWHERE| +|08/01/2022 06:22:23| |WHO HERE /OLD JAPANESE KINO/| +|08/01/2022 06:22:24| |when the ducks start speaking japanese| +|08/01/2022 06:22:24| |Who doesn't love Disney Land where the ducks got guns?| +|08/01/2022 06:22:25| |DONG DONG - DONG DONG - OOOOOOOOHHHHHHHHHHH| +|08/01/2022 06:22:26| EHHHHHHHH???? +|08/01/2022 06:22:26| |how is this totsugeki| +|08/01/2022 06:22:27| |GUERILLA WARFARE| +|08/01/2022 06:22:28| |the water is speaking japanese...| +|08/01/2022 06:22:29| |mesugaki tanks...| +|08/01/2022 06:22:31| TOTSUGEKI +|08/01/2022 06:22:35| |TENNO HEIKA BANZAIIIII!!!!!!!!!!!!| +|08/01/2022 06:22:36| TOTSUGEKI +|08/01/2022 06:22:36| ONORE +|08/01/2022 06:22:37| ONOREEE +|08/01/2022 06:22:38| ONOREEEEEEE +|08/01/2022 06:22:39| rip +|08/01/2022 06:22:39| |>They survive| +|08/01/2022 06:22:41| |WELCOME OT THE RICEFIELDS MOTHERFUCKER| +|08/01/2022 06:22:48| |kuso... kono mesugakira...| +|08/01/2022 06:22:48| |TOTSUGEKIS IN THE TREES TOTSUGEKIS IN THE TREES| +|08/01/2022 06:22:52| |>the water is speaking japanese| +|08/01/2022 06:22:54| |"THERE WASNT SUPPOSED TO BE ANY RESISTANCE"| +|08/01/2022 06:22:54| |I THINK CHAFFEE SUCKS| +|08/01/2022 06:22:56| |GO HOME GI| +|08/01/2022 06:23:02| |But all of them speak japanese | +|08/01/2022 06:23:06| |Mada mada| +|08/01/2022 06:23:08| |sitting ducks| +|08/01/2022 06:23:08| |LZ IS NOT CLEAR| +|08/01/2022 06:23:09| wakarimasu +|08/01/2022 06:23:11| |STEALTH TOTSUGEKI| +|08/01/2022 06:23:13| |EVEN THE JAPANESE ARE SPEAKING JAPANESE| +|08/01/2022 06:23:15| DUCKS +|08/01/2022 06:23:22| |where did they get the balloons?| +|08/01/2022 06:23:22| |Extreme retardation at work| +|08/01/2022 06:23:25| ENTER +|08/01/2022 06:23:29| ENTER +|08/01/2022 06:23:29| |FUCKING BAKAS| +|08/01/2022 06:23:29| |fucking retards| +|08/01/2022 06:23:32| ENTER +|08/01/2022 06:23:33| UTE +|08/01/2022 06:23:34| |>no compass| +|08/01/2022 06:23:37| |Novelty tank turret sized balloons | +|08/01/2022 06:23:38| |WHICH WAY IS THE SUN?| +|08/01/2022 06:23:44| |>buffering every fucking second| +|08/01/2022 06:23:46| |stealth never works| +|08/01/2022 06:23:48| CUTE +|08/01/2022 06:23:55| |not that much buffering here| +|08/01/2022 06:23:57| |I love that they throw shade at the IJA. | +|08/01/2022 06:24:00| |restart your browser or something| +|08/01/2022 06:24:00| |when kino?| +|08/01/2022 06:24:00| |Sun Tzu said: Cunny makes you stronger.| +|08/01/2022 06:24:01| |not quite cologne| +|08/01/2022 06:24:04| |WHY always BUFFERING| +|08/01/2022 06:24:05| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:06| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:08| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:09| 3D +|08/01/2022 06:24:09| |not buffering here| +|08/01/2022 06:24:10| |GABADDE :DDDDD| +|08/01/2022 06:24:10| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:10| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:10| :DDDDDDDDDDDDDDDD +|08/01/2022 06:24:11| :DDDDDDDDDDDD +|08/01/2022 06:24:12| :-DDDDD +|08/01/2022 06:24:13| benis +|08/01/2022 06:24:14| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:14| |Just get internet lmao| +|08/01/2022 06:24:14| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:24:15| |HER IMOUTO| +|08/01/2022 06:24:16| TRÖÖÖH +|08/01/2022 06:24:18| :DDDDDDDDDDDDDDD +|08/01/2022 06:24:18| |why is mikko driving the recovery boat| +|08/01/2022 06:24:18| TRAPPED +|08/01/2022 06:24:23| |POINY YO| +|08/01/2022 06:24:25| |Finn status = binned| +|08/01/2022 06:24:25| |ITS A TRAP| +|08/01/2022 06:24:26| |dame da| +|08/01/2022 06:24:27| POCKETHUB +|08/01/2022 06:24:30| |quick everyone, into the death trap| +|08/01/2022 06:24:30| YABEEEE +|08/01/2022 06:24:35| |ai yo| +|08/01/2022 06:24:36| |how do i get 3d duce model?| +|08/01/2022 06:24:36| |KINO INC.| +|08/01/2022 06:24:41| |HERE COMES THE WHEEL| +|08/01/2022 06:24:42| butterfly +|08/01/2022 06:24:43| |TIME FOR FERRIS WHEEL KINO| +|08/01/2022 06:24:45| AAAAAAAAAAAAAAAAAAA +|08/01/2022 06:24:49| |CUTE DUCK TANKS| +|08/01/2022 06:24:51| |follow a tutorial and make one yourself| +|08/01/2022 06:24:52| |saki saves the day| +|08/01/2022 06:24:52| |ON MY POSITION| +|08/01/2022 06:24:53| |did someone call for KINO???| +|08/01/2022 06:24:54| TOTSUGEKI +|08/01/2022 06:24:54| TOTSUGEKI! +|08/01/2022 06:24:55| TOTSUGEKI +|08/01/2022 06:24:55| |ITS OVER OOARAI BROS| +|08/01/2022 06:24:55| |Berris | +|08/01/2022 06:24:55| UOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 06:24:56| BAKAS +|08/01/2022 06:24:57| IDIOTS +|08/01/2022 06:24:58| TOTSUGEKI +|08/01/2022 06:24:59| >Japs +|08/01/2022 06:24:59| |AAAAAAAAAA AW UOOWOWWOO| +|08/01/2022 06:25:01| UOHHHHHHHHHHHHHHHHH +|08/01/2022 06:25:02| Bakas +|08/01/2022 06:25:02| |Rip tracks| +|08/01/2022 06:25:02| |BERRIS :DDDDDDD| +|08/01/2022 06:25:03| TOTSUGEKIDIOTS +|08/01/2022 06:25:04| |\o/ BANZAI| +|08/01/2022 06:25:04| |WE HAVE YOU SURROUNDED COME OUT AND TAKE YOUR MEDS| +|08/01/2022 06:25:04| |I SHOUDLVE BOUGHT MEXT COIN| +|08/01/2022 06:25:05| UOOOOHHHHHHHHHHHH +|08/01/2022 06:25:06| |I think this is it...| +|08/01/2022 06:25:08| |Benis Bheel :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:25:10| ENTER] +|08/01/2022 06:25:11| |BIG BOY COMIN THROUGH| +|08/01/2022 06:25:12| |nice job retards| +|08/01/2022 06:25:14| |HOW DO THEY SURVIVE THIS?| +|08/01/2022 06:25:15| |ENTER, THE WHEEL| +|08/01/2022 06:25:15| |Why'd they all go there?| +|08/01/2022 06:25:17| |YOU WILL LOVE THE (((UN)))| +|08/01/2022 06:25:17| |I HATE THE ANTICHRIST| +|08/01/2022 06:25:19| |I HATE THE ANTICHRIST| +|08/01/2022 06:25:20| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:25:20| |tsar tank| +|08/01/2022 06:25:20| |Senshado prodigy Saki-chan saves the day| +|08/01/2022 06:25:22| SHIMADA +|08/01/2022 06:25:22| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:25:24| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:25:24| Butterfly +|08/01/2022 06:25:24| TOTSUGEKI +|08/01/2022 06:25:25| AZUSA +|08/01/2022 06:25:27| |WE’VE GIT YOU SURROUNDED| +|08/01/2022 06:25:27| BUTTERFLY +|08/01/2022 06:25:28| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:25:29| |YOU WILL LOVE THE (((ANTICHRIST)))| +|08/01/2022 06:25:29| SAKI! +|08/01/2022 06:25:29| Totsugeki! +|08/01/2022 06:25:30| chouchou +|08/01/2022 06:25:30| butterfry +|08/01/2022 06:25:31| TOTSUGEKI +|08/01/2022 06:25:31| |I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +|08/01/2022 06:25:32| Kanransha... +|08/01/2022 06:25:32| |Actually, the anti-christ isn't so bad.| +|08/01/2022 06:25:32| |FUCKING SAKI| +|08/01/2022 06:25:33| CHOUCHOU +|08/01/2022 06:25:33| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:25:33| |Genius strikes again| +|08/01/2022 06:25:35| |BASED PSYCHIC| +|08/01/2022 06:25:35| SAKI +|08/01/2022 06:25:35| |Saki, the prodegy | +|08/01/2022 06:25:36| |Alice is so sexy| +|08/01/2022 06:25:36| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:25:37| ! +|08/01/2022 06:25:37| |LEAVE IT SAKI| +|08/01/2022 06:25:37| WHaT +|08/01/2022 06:25:39| |KINO TIME| +|08/01/2022 06:25:40| |CHOU CHOU| +|08/01/2022 06:25:41| SOOKA +|08/01/2022 06:25:41| |TACTICAL GENIUS| +|08/01/2022 06:25:42| |THE FERRIS WHEEL| +|08/01/2022 06:25:43| |FERRIS WHEEL| +|08/01/2022 06:25:44| SOOOKA +|08/01/2022 06:25:45| |999 I| +|08/01/2022 06:25:47| |Even MORE kino | +|08/01/2022 06:25:49| |The plan| +|08/01/2022 06:25:50| |And people don't think that that Asuza can't lead them to victory next match| +|08/01/2022 06:25:51| |THE ABSOLUTE MADLOLIS| +|08/01/2022 06:25:51| |BULLSHIT INCOMING| +|08/01/2022 06:25:52| |SAKI SMART| +|08/01/2022 06:25:53| |GATA GOTO| +|08/01/2022 06:25:54| YOSH +|08/01/2022 06:25:55| |YOU WILL EAT THE BUGS, LIVE IN THE POD, CLOSE THE SCHOOL| +|08/01/2022 06:25:55| |imagine the M3 hitting something| +|08/01/2022 06:25:56| 1941 +|08/01/2022 06:25:56| |Rabbit is the strongest | +|08/01/2022 06:25:56| 5HEAD +|08/01/2022 06:25:56| |TACTICAL GENIUS TO RIVAL CREED| +|08/01/2022 06:25:56| |Butterfly too strong. 4d chess over here| +|08/01/2022 06:25:57| |Is she, "special"?| +|08/01/2022 06:25:57| |BENNIS WHEL:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:25:59| IKIMAAAASU +|08/01/2022 06:25:59| |why are they called butterfly and not margarineflies| +|08/01/2022 06:26:00| |>lamo just trust in the carbon coating| +|08/01/2022 06:26:01| |Bros, why is Alice perfect for breeding?| +|08/01/2022 06:26:02| |Holy shit| +|08/01/2022 06:26:02| |Over 9000 iq plan| +|08/01/2022 06:26:03| BOOM +|08/01/2022 06:26:03| |BIG BRAIN| +|08/01/2022 06:26:04| WHEEEEEEEEEEEEEEEEEE +|08/01/2022 06:26:04| |BUNNY CUNNY| +|08/01/2022 06:26:05| |Why didn't the college team fire yet?| +|08/01/2022 06:26:07| |1941 reference, based /tv/ team| +|08/01/2022 06:26:07| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:26:07| |2k iq plan| +|08/01/2022 06:26:08| |AAAHHHHH MY EARS| +|08/01/2022 06:26:09| |would that work?| +|08/01/2022 06:26:11| WHEEEEEEEEEEEEE +|08/01/2022 06:26:11| TENSAI +|08/01/2022 06:26:13| |OH NO| +|08/01/2022 06:26:14| |>oh noooooo| +|08/01/2022 06:26:15| |HAHAHAHAHAHAHAHAHA GOD I LOVE DER FILM SO GODDAMN MUCH| +|08/01/2022 06:26:15| |DRIVE TO THE SIDE NOT WITH IT| +|08/01/2022 06:26:16| |THE ANTICHRIST FEARS THE WHEEL| +|08/01/2022 06:26:17| NIGEROOOOOOOOOOOOOOO +|08/01/2022 06:26:21| |RUN AWAY| +|08/01/2022 06:26:21| |HIGH IQ| +|08/01/2022 06:26:22| |>rolls the wrong way| +|08/01/2022 06:26:24| |BLUE HELMETS BTFO| +|08/01/2022 06:26:24| |>I AM A GENIUS! >OH NO| +|08/01/2022 06:26:25| |>not retarded| +|08/01/2022 06:26:25| RETARDED +|08/01/2022 06:26:27| |2000 IQ| +|08/01/2022 06:26:30| RART +|08/01/2022 06:26:30| |THE JEW FEARS THE FERRIS WHEEL| +|08/01/2022 06:26:31| ENTER +|08/01/2022 06:26:33| |ferris wheel btfos antichrist| +|08/01/2022 06:26:34| AHAHAHAHAHAHAHAHAHA +|08/01/2022 06:26:34| |Prometheus (2012)| +|08/01/2022 06:26:36| |smurfs didn't see this one coming| +|08/01/2022 06:26:38| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:26:39| |No brakes| +|08/01/2022 06:26:40| WAO +|08/01/2022 06:26:41| |Shoot first. Butterfly later. Always works.| +|08/01/2022 06:26:41| PANJANDRUM +|08/01/2022 06:26:42| WAO +|08/01/2022 06:26:42| WOW +|08/01/2022 06:26:42| |Based Rosehip immediately shoots at it| +|08/01/2022 06:26:42| WOW +|08/01/2022 06:26:43| WOW +|08/01/2022 06:26:43| WOW +|08/01/2022 06:26:43| WOW +|08/01/2022 06:26:43| WOW +|08/01/2022 06:26:43| Wow! +|08/01/2022 06:26:44| WAO +|08/01/2022 06:26:44| Wow~ +|08/01/2022 06:26:45| |UN GLOBOHOMO TEAM BTFO| +|08/01/2022 06:26:45| |EVASIVE MANUEVERS AGAINST THIS WHEEL| +|08/01/2022 06:26:45| |WHEEL > TANKS| +|08/01/2022 06:26:46| TRÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +|08/01/2022 06:26:46| WAO\ +|08/01/2022 06:26:47| |Attempted mass murder| +|08/01/2022 06:26:47| WOW~ +|08/01/2022 06:26:48| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:26:49| WAOO +|08/01/2022 06:26:50| >rosehip +|08/01/2022 06:26:50| |STOP SHOOTING IT ROSEHIP| +|08/01/2022 06:26:51| |>shooting the ferris wheel| +|08/01/2022 06:26:52| |ANTICHRIST BROS WE GOT TOO COCKY| +|08/01/2022 06:26:54| WOW +|08/01/2022 06:26:55| |why tank run from that thing| +|08/01/2022 06:26:55| |what they doin'| +|08/01/2022 06:26:55| |ROSEHIP IT'S OURS| +|08/01/2022 06:26:56| >rosehip +|08/01/2022 06:26:57| |SHOOT THAT FAIRY WHEEL| +|08/01/2022 06:27:00| UTEEEE +|08/01/2022 06:27:00| |FERRIS WHEEL WUNDER WAFFLE| +|08/01/2022 06:27:03| |DESU WA| +|08/01/2022 06:27:04| |bakahip shoots first, asks questions later| +|08/01/2022 06:27:04| |thanks for the help rosehip| +|08/01/2022 06:27:07| |REVENGE FOR BOSNIA| +|08/01/2022 06:27:07| |SHOOT IT DOWN| +|08/01/2022 06:27:08| |die wheel die| +|08/01/2022 06:27:08| |>shooting it| +|08/01/2022 06:27:10| |THE ANTICHRIST LIVETH IN FEAR, FOR HE KNOWS THE FERRIS WHEEL COMETH| +|08/01/2022 06:27:10| |WHY ARE YOU SHOOTING AT THE FERRIS WHEEL| +|08/01/2022 06:27:11| |WHY DOES THE FERRIS WHEEL HAVE TRACKING| +|08/01/2022 06:27:14| |based sharpshooter| +|08/01/2022 06:27:16| |Based sonnenrad ferrisweel crushinf the jewery and the antichrist| +|08/01/2022 06:27:18| |Hitler wouldv'e won if he built a couple of these| +|08/01/2022 06:27:21| |why you hsoot| +|08/01/2022 06:27:22| |>shooting the plot ferris wheel| +|08/01/2022 06:27:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:27:24| |ENTER THE TSAR TANK| +|08/01/2022 06:27:25| |DUCE GPS| +|08/01/2022 06:27:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:27:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:27:27| BUFFERING +|08/01/2022 06:27:31| BUFFFFFFFFFFFFFFERING +|08/01/2022 06:27:35| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:27:35| |FERRIS-SAN MVP!| +|08/01/2022 06:27:37| ;_;7 +|08/01/2022 06:27:38| |>buffering on kino| +|08/01/2022 06:27:39| F +|08/01/2022 06:27:40| C-U +|08/01/2022 06:27:40| o7 +|08/01/2022 06:27:40| :_; +|08/01/2022 06:27:40| |see yuu| +|08/01/2022 06:27:40| ;_;7 +|08/01/2022 06:27:40| |SEE YOU| +|08/01/2022 06:27:41| |RIP Ferris-chan| +|08/01/2022 06:27:42| |C U| +|08/01/2022 06:27:42| |C U| +|08/01/2022 06:27:42| |DAMN ANTICHRISTS| +|08/01/2022 06:27:43| |SAVE FERRIS!| +|08/01/2022 06:27:43| o7 +|08/01/2022 06:27:44| o7 +|08/01/2022 06:27:44| |Goodbye ferris-chan| +|08/01/2022 06:27:44| o7 +|08/01/2022 06:27:45| ;_;7 +|08/01/2022 06:27:47| |BYE FERRIS-CHAN O7| +|08/01/2022 06:27:47| ;_;7 +|08/01/2022 06:27:48| NNY +|08/01/2022 06:27:48| |FERRIS REAL MVP| +|08/01/2022 06:27:49| ;_;7 +|08/01/2022 06:27:50| o7 +|08/01/2022 06:27:52| |WHAT DOES THE HEAVY KILLER MANUAL SAY| +|08/01/2022 06:27:53| RIP +|08/01/2022 06:27:56| THINGY +|08/01/2022 06:27:57| AZUSA +|08/01/2022 06:27:58| TuT +|08/01/2022 06:27:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:27:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:27:59| |Bai kan chan| +|08/01/2022 06:28:00| |CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CHOVY CH| +|08/01/2022 06:28:01| |azusa sugou| +|08/01/2022 06:28:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:28:04| |just kill the heavy tank man do it| +|08/01/2022 06:28:11| |dvce dvce dvce| +|08/01/2022 06:28:12| |KAT CHAN| +|08/01/2022 06:28:12| Kacchan +|08/01/2022 06:28:14| |Azusa is too cute when she's thinking| +|08/01/2022 06:28:14| KAT-CHAN +|08/01/2022 06:28:17| KAT-CHAN +|08/01/2022 06:28:18| KATCHAN +|08/01/2022 06:28:18| |kat chan| +|08/01/2022 06:28:19| kat-chan~ +|08/01/2022 06:28:19| |KAT CHAN| +|08/01/2022 06:28:19| kratchan +|08/01/2022 06:28:21| |kat chan| +|08/01/2022 06:28:23| CUTE +|08/01/2022 06:28:24| |Pyo | +|08/01/2022 06:28:26| KAT-CHAN! +|08/01/2022 06:28:29| |"katy" in the dub btw| +|08/01/2022 06:28:30| |Mechanic team and nerd team| +|08/01/2022 06:28:33| |CUTE DUCKS| +|08/01/2022 06:28:33| |cute hats| +|08/01/2022 06:28:34| |onaji chiimu da nya~| +|08/01/2022 06:28:39| |DUCK DONO| +|08/01/2022 06:28:42| |duck gang| +|08/01/2022 06:28:43| THOMAS +|08/01/2022 06:28:44| THOMAS +|08/01/2022 06:28:44| DUCKS +|08/01/2022 06:28:45| |Duck squad!| +|08/01/2022 06:28:46| |THOMAS THE TANK| +|08/01/2022 06:28:46| |is that Thomas the Tank?| +|08/01/2022 06:28:47| |Enter, THOMAS| +|08/01/2022 06:28:47| |thomas the tank engine| +|08/01/2022 06:28:48| hetzer +|08/01/2022 06:28:48| THOMAS +|08/01/2022 06:28:48| t-thomas? +|08/01/2022 06:28:49| |I'm going blind, what do?| +|08/01/2022 06:28:50| wtf +|08/01/2022 06:28:52| Faiai +|08/01/2022 06:28:52| |Thomas the nightmare engine...| +|08/01/2022 06:28:53| |DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK DUCK | +|08/01/2022 06:28:55| |duck fuck| +|08/01/2022 06:28:55| |>miho gets decapitated by arch| +|08/01/2022 06:28:55| BONK +|08/01/2022 06:28:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:29:00| OST +|08/01/2022 06:29:00| thomas +|08/01/2022 06:29:00| owowowoowowowo +|08/01/2022 06:29:01| |>thomas the tank engine| +|08/01/2022 06:29:01| |BIG PASTA BRAIN| +|08/01/2022 06:29:01| AWAWAWa +|08/01/2022 06:29:04| |Based Stug| +|08/01/2022 06:29:05| |Based trickery | +|08/01/2022 06:29:05| |this town ain't big enough for the boffa us| +|08/01/2022 06:29:06| OWOWOWOWOWOWWO +|08/01/2022 06:29:06| |Oh hey its dikon war| +|08/01/2022 06:29:07| |WILD WEST| +|08/01/2022 06:29:08| HOWDY +|08/01/2022 06:29:08| AWAWAWAWAWAWAWAWAWA +|08/01/2022 06:29:08| |dvce dvce| +|08/01/2022 06:29:09| AWAWWAWAWAWAWAW +|08/01/2022 06:29:09| ALALALLALALALALALALALA +|08/01/2022 06:29:09| AWAWAWAAWAWAAWAAWAAWAWA +|08/01/2022 06:29:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:29:10| OWOWOWOWO +|08/01/2022 06:29:10| AWOWOWOWOWOWOWOWOW +|08/01/2022 06:29:10| HAWAWAWAWA +|08/01/2022 06:29:11| |Daikon war already?| +|08/01/2022 06:29:11| KINO +|08/01/2022 06:29:12| AWAWAWAWAWAWAWAWA +|08/01/2022 06:29:12| |DATS RACIST| +|08/01/2022 06:29:13| AWAWAWAWA +|08/01/2022 06:29:14| awawawawa +|08/01/2022 06:29:14| KEK +|08/01/2022 06:29:15| |daikon sounds'| +|08/01/2022 06:29:16| WWWWWWWWWWWWW +|08/01/2022 06:29:20| |DAS RACIST| +|08/01/2022 06:29:20| |WILD WEST ANIME GIRL TANK WARFARE| +|08/01/2022 06:29:21| AYAYA +|08/01/2022 06:29:22| |They fell for it!| +|08/01/2022 06:29:23| |>falling for it twice| +|08/01/2022 06:29:26| |WELCOME TO THE DAICON FIELDS MOTHER FUCKER| +|08/01/2022 06:29:28| GERONIMO +|08/01/2022 06:29:29| |They fucking love westerns| +|08/01/2022 06:29:30| |they cant keep getting away with it| +|08/01/2022 06:29:30| GERONIMO +|08/01/2022 06:29:32| GERONIMO +|08/01/2022 06:29:32| |IS THIS FORESHADOWING?!?!| +|08/01/2022 06:29:33| GERONIMO +|08/01/2022 06:29:39| |daikon was ass| +|08/01/2022 06:29:40| |Oh shit it’s daikon war| +|08/01/2022 06:29:41| |GIRLS UND /FIT/| +|08/01/2022 06:29:42| KINO +|08/01/2022 06:29:44| |DAS FINALE 3 OVA SPOILERS| +|08/01/2022 06:29:46| POWER +|08/01/2022 06:29:46| KINO +|08/01/2022 06:29:48| |Daikon had ass| +|08/01/2022 06:29:48| STRONK +|08/01/2022 06:29:50| |FUCKING HUGE| +|08/01/2022 06:29:50| FIT +|08/01/2022 06:29:50| |ONE HANDED| +|08/01/2022 06:29:52| |/fit/ gains| +|08/01/2022 06:29:53| |SPEED MOMENTUM VIOLENCE| +|08/01/2022 06:29:53| |Swole gamers| +|08/01/2022 06:29:54| |magnificent seven theme| +|08/01/2022 06:29:54| SWOLE +|08/01/2022 06:29:55| |Stronk gamers| +|08/01/2022 06:29:55| |REMINDER: The StuGIII Crew are my wives.| +|08/01/2022 06:29:55| |POWER KINO| +|08/01/2022 06:29:56| 8888888 +|08/01/2022 06:29:56| KINO +|08/01/2022 06:29:56| GERONIMO +|08/01/2022 06:29:57| |IF I HAD A NICKE FOR EVERY TIME GUP DID A WESTERN PARODY I'D HAVE TWO NICKLES.| +|08/01/2022 06:29:57| /FIT/ +|08/01/2022 06:29:58| |cute arm on that one| +|08/01/2022 06:30:00| |STONK NERDS| +|08/01/2022 06:30:00| |Just a few daikon more| +|08/01/2022 06:30:03| DF1 +|08/01/2022 06:30:04| |wall hacks incoming| +|08/01/2022 06:30:10| |a fistful of daicon| +|08/01/2022 06:30:12| |ducks and pig| +|08/01/2022 06:30:15| |maze...as in bc freedom maze?????| +|08/01/2022 06:30:15| |best BGM| +|08/01/2022 06:30:15| |they fucking killed captain america| +|08/01/2022 06:30:17| |Maze is based| +|08/01/2022 06:30:21| |cute duck| +|08/01/2022 06:30:22| |Just drive through the maze| +|08/01/2022 06:30:26| |ENTER DUCKS| +|08/01/2022 06:30:28| |>Tom Nook| +|08/01/2022 06:30:30| |You're a tank| +|08/01/2022 06:30:32| |4H30 TO GO, LADS!| +|08/01/2022 06:30:33| |Nice shot| +|08/01/2022 06:30:34| SHIMATTA +|08/01/2022 06:30:35| |Why not just drive through the shrubbery?| +|08/01/2022 06:30:36| |these binks| +|08/01/2022 06:30:39| |TENNO HEIKA BANZAI \o/| +|08/01/2022 06:30:42| |lol Tom nook, never noticed that| +|08/01/2022 06:30:46| |>shit tanks| +|08/01/2022 06:30:46| TRICKED +|08/01/2022 06:30:47| |duck rape| +|08/01/2022 06:30:48| >buffering +|08/01/2022 06:30:52| |FOR THE EMPEROR!!!| +|08/01/2022 06:30:53| |shot trap| +|08/01/2022 06:30:55| |How can they even see| +|08/01/2022 06:31:02| |driver hatch| +|08/01/2022 06:31:02| |The ducks are blocking the periscopes | +|08/01/2022 06:31:02| GUTS +|08/01/2022 06:31:03| |muh dick| +|08/01/2022 06:31:05| cunny.... +|08/01/2022 06:31:07| |More pushing| +|08/01/2022 06:31:08| GUTS! +|08/01/2022 06:31:08| |HIROHITO SAMA| +|08/01/2022 06:31:10| GUUTS +|08/01/2022 06:31:11| TANKZURI +|08/01/2022 06:31:11| |COCK BLOCKED| +|08/01/2022 06:31:12| GUTS +|08/01/2022 06:31:12| >tittyfuck +|08/01/2022 06:31:13| GUTS! +|08/01/2022 06:31:13| |tank paizuri| +|08/01/2022 06:31:15| |duck duck duck| +|08/01/2022 06:31:15| GUUUUUUTS!!!!! +|08/01/2022 06:31:16| Pincer +|08/01/2022 06:31:16| |god I wish that was me| +|08/01/2022 06:31:18| |i watch for the plot| +|08/01/2022 06:31:20| |fun fact, ducks have corkscrew penises| +|08/01/2022 06:31:22| |NICE FIGHT| +|08/01/2022 06:31:22| RATTE +|08/01/2022 06:31:23| maze +|08/01/2022 06:31:24| >eh +|08/01/2022 06:31:25| RATTE! +|08/01/2022 06:31:26| quacked +|08/01/2022 06:31:28| |I love the ducks bros| +|08/01/2022 06:31:31| |i need to see now| +|08/01/2022 06:31:33| |classic blunder| +|08/01/2022 06:31:34| |NAISU FAITO| +|08/01/2022 06:31:38| HACK +|08/01/2022 06:31:39| QUACKED +|08/01/2022 06:31:43| RUMI +|08/01/2022 06:31:47| |rumi | +|08/01/2022 06:31:52| WAKAWAKAWAKA +|08/01/2022 06:31:55| |panzer hurrrrr| +|08/01/2022 06:31:55| |MIHO STANCE| +|08/01/2022 06:31:57| |Chafee you fucking idiot| +|08/01/2022 06:31:58| |NO I WILL NOT DRINK THE CORN SYRUP| +|08/01/2022 06:32:02| |YOU BLOCKHEAD| +|08/01/2022 06:32:07| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:32:09| |>IMAGINE LOSING TO A MAZE| +|08/01/2022 06:32:11| |do the 3 umis even have different personalities if personality at all?| +|08/01/2022 06:32:12| |let's go, friendly fire | +|08/01/2022 06:32:12| |RUMI BUTT| +|08/01/2022 06:32:13| WAKAWAKAWAKAWAKA +|08/01/2022 06:32:14| |It's a hedgemaze| +|08/01/2022 06:32:15| |Do you WANT to fall off?| +|08/01/2022 06:32:17| |>filtered to a maze| +|08/01/2022 06:32:20| btfo +|08/01/2022 06:32:21| >newtypes +|08/01/2022 06:32:22| |>not lighting up the bushes with tracers| +|08/01/2022 06:32:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:23| MAZE'D +|08/01/2022 06:32:24| |lmao eat shit| +|08/01/2022 06:32:25| |lol lmao| +|08/01/2022 06:32:25| |DVCE GUARDIAN ANGEL | +|08/01/2022 06:32:25| WALLHAX +|08/01/2022 06:32:27| |COMPLETELY HIDDEN| +|08/01/2022 06:32:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:32:28| |Oh right its just bushes lmao| +|08/01/2022 06:32:28| |IMAGINE LOSING TO HIGHSCHOOLERS| +|08/01/2022 06:32:29| ARISU +|08/01/2022 06:32:30| dvce +|08/01/2022 06:32:30| |GANBARE BOKO| +|08/01/2022 06:32:31| DUCE +|08/01/2022 06:32:31| WALLHACK +|08/01/2022 06:32:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:32| DUCE +|08/01/2022 06:32:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:33| DUCE +|08/01/2022 06:32:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:34| |Imagine losing to Duce spotting| +|08/01/2022 06:32:34| DUCE +|08/01/2022 06:32:34| Anzu +|08/01/2022 06:32:35| |NO ONE WILL EVER SEE THEM| +|08/01/2022 06:32:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:37| ENTER +|08/01/2022 06:32:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:38| |BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +|08/01/2022 06:32:38| UOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:32:39| |DUCE DUCE DUCE| +|08/01/2022 06:32:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:40| |DUCE DUCE DUCE DUCE| +|08/01/2022 06:32:40| |BOKO TIME| +|08/01/2022 06:32:40| |Not enough pasta for Duce diabetes| +|08/01/2022 06:32:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:42| |DUCE DUCE DUCE| +|08/01/2022 06:32:43| GANBARE +|08/01/2022 06:32:44| |BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +|08/01/2022 06:32:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:32:46| boko! +|08/01/2022 06:32:47| BOKO +|08/01/2022 06:32:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:32:47| |FUCK EM UP BOKO!| +|08/01/2022 06:32:48| |GANBARE BOKO| +|08/01/2022 06:32:49| |UOOOOOOOOOOOOOOOOH UOOOOOOOOOOOOOH| +|08/01/2022 06:32:49| |oh no boko autism| +|08/01/2022 06:32:50| CUTE +|08/01/2022 06:32:50| |>Alice talking to her doll| +|08/01/2022 06:32:51| |YATTE ARU YATTE ARU YATTE ARU ZE| +|08/01/2022 06:32:51| AUTISM +|08/01/2022 06:32:52| |was it autism?| +|08/01/2022 06:32:52| CUTE +|08/01/2022 06:32:52| AUTISM +|08/01/2022 06:32:53| ENTER +|08/01/2022 06:32:53| KINOKINOKINO +|08/01/2022 06:32:53| BOKO?! +|08/01/2022 06:32:53| |BOKO WAR CRY| +|08/01/2022 06:32:53| |FUCK EM BOKO | +|08/01/2022 06:32:55| autism +|08/01/2022 06:32:55| |KICK THEIR ASS BOKO| +|08/01/2022 06:32:56| |oh no ooarai bros| +|08/01/2022 06:32:56| UOOOOOOOOOOOOOH +|08/01/2022 06:32:56| AUTISM +|08/01/2022 06:32:56| |BOKO BOKO| +|08/01/2022 06:32:56| |DUCE SPOTTING LIKE ITS BATTLEFIELD| +|08/01/2022 06:32:57| BOKO +|08/01/2022 06:32:57| |BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +|08/01/2022 06:32:57| ENTER +|08/01/2022 06:32:57| |YATTE YARO| +|08/01/2022 06:32:59| |>loli about to get boko'd| +|08/01/2022 06:32:59| |GETTEM BOKO!| +|08/01/2022 06:33:00| |YOU CAN THIS| +|08/01/2022 06:33:00| autism +|08/01/2022 06:33:00| |BOKO WILL LEAD US| +|08/01/2022 06:33:01| autism +|08/01/2022 06:33:01| |>singing over the mic| +|08/01/2022 06:33:01| |CUNNY AUTISM| +|08/01/2022 06:33:01| |YATTE YARU| +|08/01/2022 06:33:02| |THE WAR CRY OF MY PEOPLE| +|08/01/2022 06:33:03| |Boko song| +|08/01/2022 06:33:03| |cute arisu| +|08/01/2022 06:33:03| autism +|08/01/2022 06:33:03| AUTISM +|08/01/2022 06:33:03| |YATTE YARU!| +|08/01/2022 06:33:03| UOOOOOOOOOOOOOH +|08/01/2022 06:33:04| |YATTE YATTE YARO| +|08/01/2022 06:33:04| |FUCK THE ENTRANCE| +|08/01/2022 06:33:06| |WE'RE REACHING LEVELS OF AUTISM THAT WE NEVER THOUGH POSSIBLE| +|08/01/2022 06:33:06| |YOU CAN THIS BOKO| +|08/01/2022 06:33:06| |LETS GO BOKOOO| +|08/01/2022 06:33:06| AAAAAAAAAAAAAAA +|08/01/2022 06:33:07| |Crusader KINO| +|08/01/2022 06:33:07| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:33:10| |Oh no, the disabled bear is coming to the rescue| +|08/01/2022 06:33:11| UOOOOOOOOOOOOOH +|08/01/2022 06:33:12| |Alice's is gonna have some severe back pain from carrying these shitters.| +|08/01/2022 06:33:13| |GET READY TO GET BOKOED| +|08/01/2022 06:33:13| ! +|08/01/2022 06:33:14| bonk +|08/01/2022 06:33:14| |BOKO ANTHEM| +|08/01/2022 06:33:15| MASAKA +|08/01/2022 06:33:15| |FAT SHAMED| +|08/01/2022 06:33:15| |FUCK EM UP BOKO| +|08/01/2022 06:33:15| AAAAAAAAAAAAA +|08/01/2022 06:33:16| |THUNDERBOLT GUNDAM| +|08/01/2022 06:33:16| |ITS FUCKING TIME FOR MORE KNIO LADS| +|08/01/2022 06:33:18| wtf +|08/01/2022 06:33:19| HENSHIN +|08/01/2022 06:33:19| |Our autistic commander left the radio keyed again.| +|08/01/2022 06:33:20| |Alice about to go ham| +|08/01/2022 06:33:21| |Quick conversion| +|08/01/2022 06:33:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:33:21| |AMERICAN ENGINEERING| +|08/01/2022 06:33:22| |I HATE THE ANTICHRIST| +|08/01/2022 06:33:22| kino +|08/01/2022 06:33:22| |BITCH YOU THOUGHT| +|08/01/2022 06:33:23| |THEY COME OFF?| +|08/01/2022 06:33:25| Masaka +|08/01/2022 06:33:26| |NOT A THIRD TIME| +|08/01/2022 06:33:29| LEWD +|08/01/2022 06:33:29| NAZE +|08/01/2022 06:33:31| |rthis entrance was like sex with alice| +|08/01/2022 06:33:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:32| KINO +|08/01/2022 06:33:34| DVCE +|08/01/2022 06:33:34| |SUPERIOR AMERICAN ENGINEERING| +|08/01/2022 06:33:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:42| BARETA +|08/01/2022 06:33:43| |oh wow| +|08/01/2022 06:33:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:44| |thats a bad idea| +|08/01/2022 06:33:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:48| |HOW DID YOU FIT A +20 TON CHAFFE UP THERE| +|08/01/2022 06:33:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:49| |OH SHIT| +|08/01/2022 06:33:49| |that's one solid rollercoaster| +|08/01/2022 06:33:50| |OH NO BROS DUCE WAS FOUND OUT| +|08/01/2022 06:33:50| WEEEEEEEEEEE +|08/01/2022 06:33:50| |best BGM right here| +|08/01/2022 06:33:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:54| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:33:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:55| KINO +|08/01/2022 06:33:55| YAHOOOOOOOOOOOO +|08/01/2022 06:33:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:56| OST +|08/01/2022 06:33:56| WTF +|08/01/2022 06:33:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:33:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:33:59| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:33:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:00| |Burger ad in front of a Japanese place? Not obvious much| +|08/01/2022 06:34:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:03| duce!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 06:34:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:06| |! BANGER ALERT !| +|08/01/2022 06:34:07| |WAI WAI WAI!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 06:34:07| |DUCK TANKS| +|08/01/2022 06:34:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:34:08| |would that work?| +|08/01/2022 06:34:10| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 06:34:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:11| |Ways to die painfully.| +|08/01/2022 06:34:12| |TENNO HEIKA| +|08/01/2022 06:34:12| |this OST is so great| +|08/01/2022 06:34:12| |imagine being mad about tankettes| +|08/01/2022 06:34:13| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 06:34:13| UTEEEEEEEEEE +|08/01/2022 06:34:14| BANZAI +|08/01/2022 06:34:14| TOTSUGEKI +|08/01/2022 06:34:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:34:17| |how did she win here| +|08/01/2022 06:34:17| UTEEEEE +|08/01/2022 06:34:21| |BEST DRIVER| +|08/01/2022 06:34:22| |Christ bros...| +|08/01/2022 06:34:22| |ALICE FUCKING THEM UP| +|08/01/2022 06:34:23| BTFO +|08/01/2022 06:34:23| NIMBLE +|08/01/2022 06:34:24| |SUGOI ALICE| +|08/01/2022 06:34:24| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 06:34:24| BOKO +|08/01/2022 06:34:27| AITAAAAA +|08/01/2022 06:34:28| JUKED +|08/01/2022 06:34:28| |I HATE THE ANTICHRIST| +|08/01/2022 06:34:31| DONMAI +|08/01/2022 06:34:31| TANKFUUUUU +|08/01/2022 06:34:31| GUTS +|08/01/2022 06:34:31| GUTS +|08/01/2022 06:34:33| |ALICE HYPE| +|08/01/2022 06:34:34| |ARISU TOO STRONK| +|08/01/2022 06:34:35| GUUUUTS +|08/01/2022 06:34:35| |GUTS GUTS GUTS GUTS| +|08/01/2022 06:34:35| GUTS +|08/01/2022 06:34:36| |NICE TANK| +|08/01/2022 06:34:37| |>We jobbed as usual| +|08/01/2022 06:34:40| |5 tanks in 30 seconds fuck| +|08/01/2022 06:34:40| |Alice just soloing those crubs| +|08/01/2022 06:34:41| |KILLE EM ALL| +|08/01/2022 06:34:41| mogged +|08/01/2022 06:34:42| |No they are gonna force me to drink the corn syrup...| +|08/01/2022 06:34:42| |CUNNY TOO STRONG| +|08/01/2022 06:34:42| SHAMEFURR +|08/01/2022 06:34:45| |ALICE HAS HAD ENOUGH| +|08/01/2022 06:34:47| |DRIVER CHAN???| +|08/01/2022 06:34:48| |SCRUB STOMP| +|08/01/2022 06:34:49| >naomi +|08/01/2022 06:34:51| |i haven't been to /a/ in years explain this jobbing meme| +|08/01/2022 06:34:54| PENTAKEEEEEELLLLL +|08/01/2022 06:34:55| lewd... +|08/01/2022 06:34:56| |So THIS is the power of cunny... sugoi...| +|08/01/2022 06:34:58| |BASED BRITS| +|08/01/2022 06:35:05| |jobbing comes from wrestling| +|08/01/2022 06:35:06| |There's no way Darjeeling could lose| +|08/01/2022 06:35:08| |jobbing is crossboarder shit| +|08/01/2022 06:35:08| |alice isnt doing shit its the driver and gunner| +|08/01/2022 06:35:09| |I'VE HAD IT WITH THESE MOTHERFUCKING HIGHSCHOOLERS ON MY BATTLEFIELD| +|08/01/2022 06:35:10| |The crew is dead| +|08/01/2022 06:35:11| out-fucking-skilled +|08/01/2022 06:35:11| |Ultra instict Alice doing cleanup| +|08/01/2022 06:35:13| o7 +|08/01/2022 06:35:13| o7 +|08/01/2022 06:35:14| |Just shoot the side with the 17pdr you dumb fucking slag| +|08/01/2022 06:35:14| |RIP TEA| +|08/01/2022 06:35:14| |TL Note: "Jobbing" means "Jobbign"| +|08/01/2022 06:35:15| |ASSAM WINSLOL| +|08/01/2022 06:35:15| |Spank Noami Y/Y?| +|08/01/2022 06:35:16| ;___;7 +|08/01/2022 06:35:16| |CARBON COATING| +|08/01/2022 06:35:18| o7 +|08/01/2022 06:35:19| BERMUDAAAAA +|08/01/2022 06:35:19| |jobbing comes from /dbs/| +|08/01/2022 06:35:20| |That was the fucking Operaton Flashpoint vehicle explosion sound| +|08/01/2022 06:35:20| o7 +|08/01/2022 06:35:20| |RIP bong| +|08/01/2022 06:35:21| ????????????????????????????? +|08/01/2022 06:35:21| o7 +|08/01/2022 06:35:21| o7 +|08/01/2022 06:35:22| |SLAGS DOUBLE PENETRATED| +|08/01/2022 06:35:23| |fucking slag| +|08/01/2022 06:35:23| o7 +|08/01/2022 06:35:23| ?????????????????? +|08/01/2022 06:35:24| o7 +|08/01/2022 06:35:24| ????????? +|08/01/2022 06:35:24| |bye bye girl who speaks in riddles| +|08/01/2022 06:35:26| |DUCE NO| +|08/01/2022 06:35:26| |Crew killed as ammo cooked off| +|08/01/2022 06:35:26| |BERMUDA ATTACK| +|08/01/2022 06:35:28| |the data assam what does it mean???| +|08/01/2022 06:35:28| 突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃突撃 +|08/01/2022 06:35:28| ATTACKU +|08/01/2022 06:35:29| |how do I marry Alice?| +|08/01/2022 06:35:30| |SLAAAAAAAAAAAAAAAAAAAAAAG NOOOOO| +|08/01/2022 06:35:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:38| UOOOOOOOOOOOOOOOOO +|08/01/2022 06:35:38| |pekoe have you heard this saying, "i'm fucking dead"?| +|08/01/2022 06:35:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:39| |>tank goes up| +|08/01/2022 06:35:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:39| |DUCE still dodging | +|08/01/2022 06:35:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:42| WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 06:35:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:35:45| |GO DVCE GO| +|08/01/2022 06:35:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:47| WEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 06:35:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:47| |BOTH ENDS| +|08/01/2022 06:35:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:48| DP'D +|08/01/2022 06:35:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:49| LEWD +|08/01/2022 06:35:52| |orange pekoe you daft idiot that was my chevvy| +|08/01/2022 06:35:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:53| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:35:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:35:56| L-LEWD +|08/01/2022 06:35:57| |RABBIT TEAM GOT 2 KILLS| +|08/01/2022 06:35:57| o7 +|08/01/2022 06:35:58| AUTISM +|08/01/2022 06:35:59| ;_; +|08/01/2022 06:36:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:36:00| |BASED DUCKS| +|08/01/2022 06:36:02| |bunny cunnies...| +|08/01/2022 06:36:02| Pog +|08/01/2022 06:36:04| |RIP CUN| +|08/01/2022 06:36:05| |OH N-| +|08/01/2022 06:36:05| ;_; +|08/01/2022 06:36:07| |Butterfly can't save you from Boko| +|08/01/2022 06:36:11| |USAGIS FINALLY USEFUL| +|08/01/2022 06:36:11| |rip bunny cunny| +|08/01/2022 06:36:12| |Jobbing is originally a wrestling term, it means someone loses a fight they shouldn't/fighting poorer than they should| +|08/01/2022 06:36:12| |poor bunnies| +|08/01/2022 06:36:15| |god I wish I was Karina| +|08/01/2022 06:36:15| DORIFTO +|08/01/2022 06:36:17| WEW +|08/01/2022 06:36:17| |Alice outcunnied them| +|08/01/2022 06:36:18| |all this fucking tank drifting lamo| +|08/01/2022 06:36:18| |STOP THERE| +|08/01/2022 06:36:18| |TRI STAR| +|08/01/2022 06:36:20| TRIANGLE'D +|08/01/2022 06:36:20| DORIFTO +|08/01/2022 06:36:22| ONOREEEEEEEEE +|08/01/2022 06:36:23| |TRACK STILL INTACT| +|08/01/2022 06:36:24| |ALISA DEAD| +|08/01/2022 06:36:24| DORIFTO +|08/01/2022 06:36:24| ONOREEEEEEE +|08/01/2022 06:36:24| |AMERICAN JOBBERS| +|08/01/2022 06:36:25| DORIFTO +|08/01/2022 06:36:25| |Of course Alisa got knocked out| +|08/01/2022 06:36:26| |HELMET CHAN| +|08/01/2022 06:36:30| |GAS GAS GAS| +|08/01/2022 06:36:30| fuck +|08/01/2022 06:36:30| |NAOMI NOOOO| +|08/01/2022 06:36:31| DORIFTO +|08/01/2022 06:36:31| oops... +|08/01/2022 06:36:32| oops +|08/01/2022 06:36:32| Whoops +|08/01/2022 06:36:33| NO +|08/01/2022 06:36:33| DEATH +|08/01/2022 06:36:34| EH? +|08/01/2022 06:36:34| drifting +|08/01/2022 06:36:34| >saunders +|08/01/2022 06:36:34| |jobbing comes from bejita| +|08/01/2022 06:36:35| oops +|08/01/2022 06:36:35| |SIMULTANIOUS DORIFTO| +|08/01/2022 06:36:35| OOPS +|08/01/2022 06:36:35| |MASH, ORTEGA. LAUNCH A JET STREAM ATTACK ON THAT SHERMAN| +|08/01/2022 06:36:35| |3X DRIFTO?| +|08/01/2022 06:36:36| |Syncronised drifting| +|08/01/2022 06:36:36| OOPS +|08/01/2022 06:36:37| |lmao outplayed| +|08/01/2022 06:36:37| OOPD +|08/01/2022 06:36:37| OOPS +|08/01/2022 06:36:37| OOPS +|08/01/2022 06:36:37| OOPS +|08/01/2022 06:36:37| |MULTI TANK DRIFTING| +|08/01/2022 06:36:38| ;_;7 +|08/01/2022 06:36:38| OOPS +|08/01/2022 06:36:38| OOOOOOOPS +|08/01/2022 06:36:38| Oops +|08/01/2022 06:36:39| woops +|08/01/2022 06:36:39| |fUCK THE USA 2 TOWERS WERENT ENOUGH| +|08/01/2022 06:36:43| OOPS +|08/01/2022 06:36:44| |remember >sanders from one of this faildubs?| +|08/01/2022 06:36:44| |BYE BYE JOBBERS| +|08/01/2022 06:36:44| |MURICA BTFO| +|08/01/2022 06:36:46| |Simultaneous drifto kino| +|08/01/2022 06:36:46| YARAETA +|08/01/2022 06:36:47| 2STRONG +|08/01/2022 06:36:48| |how fucking strong is she| +|08/01/2022 06:36:48| |Gamers too buff| +|08/01/2022 06:36:49| |did saunders do anything this match?| +|08/01/2022 06:36:50| |too stronk| +|08/01/2022 06:36:50| |ROSEHIP | +|08/01/2022 06:36:52| SPEED +|08/01/2022 06:36:52| |LIMITER OFF| +|08/01/2022 06:36:55| |Momo too strong| +|08/01/2022 06:36:56| SPEED +|08/01/2022 06:36:56| FASTER +|08/01/2022 06:36:57| |NIGHT OF FIRE| +|08/01/2022 06:36:57| |MY WIFE, ROSEHIP| +|08/01/2022 06:36:58| |REMOVE MY INHIBTORS| +|08/01/2022 06:36:59| DOKTOR +|08/01/2022 06:37:00| |HEY TAXI| +|08/01/2022 06:37:01| TAXI +|08/01/2022 06:37:02| |HEI TAXIII| +|08/01/2022 06:37:03| |the speed limiter is gone| +|08/01/2022 06:37:03| |HEY TASHI| +|08/01/2022 06:37:04| |hey taxi| +|08/01/2022 06:37:06| |Fleet passings| +|08/01/2022 06:37:06| |so many panzers| +|08/01/2022 06:37:07| |BREAKING MY LIMIT| +|08/01/2022 06:37:08| DORIFTO +|08/01/2022 06:37:08| |DOKTOR TURN OFF MY SPEED INHIBITORS| +|08/01/2022 06:37:08| |HEY TAKSHI| +|08/01/2022 06:37:09| |RELEASE MY SPEED INHIBITORS| +|08/01/2022 06:37:13| |I'M BURNING UP FOR YOU| +|08/01/2022 06:37:14| |RUKURIRI JOBBING AGAIN| +|08/01/2022 06:37:15| |ROSEHIP SPEED| +|08/01/2022 06:37:15| |there is so much shit going on at once| +|08/01/2022 06:37:16| |Now's the crusader kino. | +|08/01/2022 06:37:16| ROSUHIPU +|08/01/2022 06:37:17| REALISM +|08/01/2022 06:37:18| M-MASAKA +|08/01/2022 06:37:19| SPEEEEED +|08/01/2022 06:37:21| |Based Rsehip| +|08/01/2022 06:37:21| |I WANT TO BELIEVE| +|08/01/2022 06:37:21| ROSEHIP +|08/01/2022 06:37:23| HAYAI +|08/01/2022 06:37:23| |less goooo rosehip| +|08/01/2022 06:37:24| |BASED ROSEHIP| +|08/01/2022 06:37:25| |speed kills| +|08/01/2022 06:37:30| |>Chovy will never ask for a ride and climb on your back ;__;| +|08/01/2022 06:37:30| o7 +|08/01/2022 06:37:32| |TIME FOR DUCE| +|08/01/2022 06:37:33| |FUCK THE RULES| +|08/01/2022 06:37:33| |DUCE IS JESUS| +|08/01/2022 06:37:34| |SODOKO WHY| +|08/01/2022 06:37:34| RULES +|08/01/2022 06:37:37| |can tanks really carry tanks| +|08/01/2022 06:37:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:37:41| |LETS FUCKING GO SODOKO| +|08/01/2022 06:37:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:37:42| |DEJA VU| +|08/01/2022 06:37:42| DVCE' +|08/01/2022 06:37:42| |FUCK THE RULES| +|08/01/2022 06:37:44| |>never pens| +|08/01/2022 06:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:37:45| |SLEEP STREAM?| +|08/01/2022 06:37:47| |how is rosehip not dead, she gets rekt everytime| +|08/01/2022 06:37:48| KONOOOOOO +|08/01/2022 06:37:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:52| FUFUN +|08/01/2022 06:37:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:37:55| huhu +|08/01/2022 06:37:55| TANKLET +|08/01/2022 06:37:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:57| YOSH +|08/01/2022 06:37:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:37:58| |TIANAMEN SQUARE| +|08/01/2022 06:38:00| |dumb cunt| +|08/01/2022 06:38:01| DEPRESSION +|08/01/2022 06:38:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:03| |CHINKS BTFOD| +|08/01/2022 06:38:04| |DEATH BY DROWNING| +|08/01/2022 06:38:05| |3 POINT| +|08/01/2022 06:38:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:38:06| |DUCE IS DEAD AAAAAAAAAA| +|08/01/2022 06:38:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:08| F +|08/01/2022 06:38:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:08| |>OH NO| +|08/01/2022 06:38:09| LMAO +|08/01/2022 06:38:09| |NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO DUCEBROS| +|08/01/2022 06:38:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:38:09| RIP +|08/01/2022 06:38:10| |tanks can't skip on water| +|08/01/2022 06:38:10| |YATTA SEIKO DA TANKETTE DE SAIKYO| +|08/01/2022 06:38:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:38:11| |DUCE BROS……| +|08/01/2022 06:38:11| |DUCE NO| +|08/01/2022 06:38:12| YATTA +|08/01/2022 06:38:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:12| wow +|08/01/2022 06:38:13| |TANK SKIPPING| +|08/01/2022 06:38:13| |NOOOOOOOOOOOOOOOOOO DUCE| +|08/01/2022 06:38:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:38:14| realistic +|08/01/2022 06:38:14| DVC- +|08/01/2022 06:38:15| F +|08/01/2022 06:38:15| ;_;7 +|08/01/2022 06:38:15| RIP +|08/01/2022 06:38:16| |DUCE NOOOOOOOOOOOO ;_;7| +|08/01/2022 06:38:17| MOGGED +|08/01/2022 06:38:18| ducebros...... +|08/01/2022 06:38:18| |FUCK ALLICE| +|08/01/2022 06:38:18| DUCE +|08/01/2022 06:38:19| DUUUUUCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 06:38:20| REKT +|08/01/2022 06:38:20| CHISAI +|08/01/2022 06:38:21| |I CANT BELIEVE DUCE IS FUCKING DEAD| +|08/01/2022 06:38:21| ;___;7 +|08/01/2022 06:38:21| |oh no........| +|08/01/2022 06:38:21| VROOOOOOOOM +|08/01/2022 06:38:22| ??????????????????????? +|08/01/2022 06:38:22| |wtf is going on| +|08/01/2022 06:38:24| |I HATE THE ANTICHRIST| +|08/01/2022 06:38:24| RUMIIIIIIIIIIIIIIII +|08/01/2022 06:38:24| |WHO /o/ HERE?!| +|08/01/2022 06:38:24| VROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM +|08/01/2022 06:38:25| HOW +|08/01/2022 06:38:25| jobbed +|08/01/2022 06:38:25| |Leopon straight up modding their speed wagon| +|08/01/2022 06:38:25| |ALICE KILLED DUCE| +|08/01/2022 06:38:25| |GODDAMNIT THIS MOVE IS SO FUCKING GOOD| +|08/01/2022 06:38:26| D-DUCEBROS?! +|08/01/2022 06:38:27| |GAS GAS GAS| +|08/01/2022 06:38:27| >VTOL +|08/01/2022 06:38:28| |BASED /O/| +|08/01/2022 06:38:29| GASGAGAS +|08/01/2022 06:38:29| |>WAR THUNDER BE LIKE| +|08/01/2022 06:38:31| |LIMITERS REMOVED| +|08/01/2022 06:38:32| |WHEN VTEC KICKS IN YO| +|08/01/2022 06:38:32| *MOVIE +|08/01/2022 06:38:33| |Based cheaters| +|08/01/2022 06:38:34| |NIGHT OF FIRE| +|08/01/2022 06:38:35| |dvce immortal| +|08/01/2022 06:38:35| 0_0 +|08/01/2022 06:38:37| |DUCE IS FUCKING DEAD| +|08/01/2022 06:38:38| AUTODUMMIES +|08/01/2022 06:38:38| |YEAH YEAH YEAH| +|08/01/2022 06:38:39| rip +|08/01/2022 06:38:40| |GAS GAS GAS| +|08/01/2022 06:38:40| |YOU'LL NEVER CATCH ME KRABS | +|08/01/2022 06:38:40| NOOOOOOO +|08/01/2022 06:38:40| |VTEC JUST KICKED IN| +|08/01/2022 06:38:41| |RUNNING IN THE 90S| +|08/01/2022 06:38:42| |>1000 shot of NOS| +|08/01/2022 06:38:50| |how soft are katyushas thighs?| +|08/01/2022 06:38:53| |Time for kino| +|08/01/2022 06:38:53| |So who is /our/ tank now, now Duce is daed?| +|08/01/2022 06:38:54| |so much dorifto| +|08/01/2022 06:38:54| |FINAL DESTINATION| +|08/01/2022 06:38:54| |ERIKA AND KAT DEAD| +|08/01/2022 06:38:55| |LIKE BUTTER| +|08/01/2022 06:38:55| |THIS IS IT| +|08/01/2022 06:38:56| |ENTER KINO| +|08/01/2022 06:39:00| |SOUND DESIGN KINO| +|08/01/2022 06:39:01| |KINO INCOMING| +|08/01/2022 06:39:03| |so it's like a 5v1 now| +|08/01/2022 06:39:03| |ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE | +|08/01/2022 06:39:04| |ARE YOU READY FOR KINO?| +|08/01/2022 06:39:04| |BULLITT TIME| +|08/01/2022 06:39:04| |OH SHITTTTTTTTTTT| +|08/01/2022 06:39:05| >buffering +|08/01/2022 06:39:05| |All of the Russians dying for Katyusha to get one(1) kill| +|08/01/2022 06:39:06| |TIME FOR MORE KINO HAHAHAH| +|08/01/2022 06:39:07| |Worst scene in the movie| +|08/01/2022 06:39:09| |ducebros... time to go home| +|08/01/2022 06:39:09| |Imagine being Eika and Katyusha and getting a 3x1 exchange| +|08/01/2022 06:39:09| |V2 my beloved | +|08/01/2022 06:39:10| |Final boss| +|08/01/2022 06:39:12| |3 v 2| +|08/01/2022 06:39:12| |SOund porn time| +|08/01/2022 06:39:12| |uoooooooh tank turret sound| +|08/01/2022 06:39:13| |get ready for shitty cgi| +|08/01/2022 06:39:14| |YOU ALREADY KNOW WHAT TIME IT ISSS| +|08/01/2022 06:39:15| |How can they pack so much Kino into a single movie?| +|08/01/2022 06:39:15| |Give me some hype SOT| +|08/01/2022 06:39:16| >prefire +|08/01/2022 06:39:19| |Alice is pretty cute and funny| +|08/01/2022 06:39:20| |dat sfx| +|08/01/2022 06:39:20| |Gimme some music| +|08/01/2022 06:39:21| |ORARI BROS I DON'T THINK WILL BE WIN THIS ONE | +|08/01/2022 06:39:26| |serious buffering| +|08/01/2022 06:39:26| >buffering +|08/01/2022 06:39:27| |Faggot shit silence art piece| +|08/01/2022 06:39:29| |GIVE OORAI YOUR ENERGY \O/| +|08/01/2022 06:39:30| |where have i seen this before| +|08/01/2022 06:39:32| |damm buffering| +|08/01/2022 06:39:33| BOKO +|08/01/2022 06:39:35| |did saunders get any kills?| +|08/01/2022 06:39:36| >buffering +|08/01/2022 06:39:42| |wtf why no music| +|08/01/2022 06:39:42| |University has this in the bag| +|08/01/2022 06:39:43| |kino moment| +|08/01/2022 06:39:44| |DIRECTOR! WE FORGOT THE BGM| +|08/01/2022 06:39:48| |LETS GO GLOBOHOMO TEAM| +|08/01/2022 06:39:50| KINO +|08/01/2022 06:39:50| |Naomi got some| +|08/01/2022 06:39:51| |too serious for music| +|08/01/2022 06:39:54| |this kino scene| +|08/01/2022 06:39:57| |the tensions is great without the music| +|08/01/2022 06:39:58| |How the heck did the French survive as the 2nd last uni tank?| +|08/01/2022 06:39:59| HEADSHOT +|08/01/2022 06:40:01| |the BGM is the beautiful sound of steel on steel| +|08/01/2022 06:40:01| wew +|08/01/2022 06:40:01| |hand on the shoulder kino| +|08/01/2022 06:40:01| Kino +|08/01/2022 06:40:03| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:40:03| |GOT YA BITCH| +|08/01/2022 06:40:03| |EAT SHIT UNIVERSITY| +|08/01/2022 06:40:04| |I actually really like that they just do the sound effects here| +|08/01/2022 06:40:04| KINO +|08/01/2022 06:40:05| |how did she know they where getting aimed at from behind| +|08/01/2022 06:40:12| |mad drifto| +|08/01/2022 06:40:13| |PERSHING BTFO| +|08/01/2022 06:40:14| |makes it seem super focused| +|08/01/2022 06:40:15| GONG +|08/01/2022 06:40:18| |These sound effects are fucking kino| +|08/01/2022 06:40:19| GOTTEEEEM +|08/01/2022 06:40:21| |christ maho| +|08/01/2022 06:40:21| DEATH +|08/01/2022 06:40:21| CABON +|08/01/2022 06:40:22| WEW +|08/01/2022 06:40:23| |they really abused phyiscs in this| +|08/01/2022 06:40:23| DECAPITATED +|08/01/2022 06:40:24| |bgm isn't necessary to be on 100% of the time| +|08/01/2022 06:40:24| REKT +|08/01/2022 06:40:26| |WYA MR MERCEDES| +|08/01/2022 06:40:27| |Being a guppie means being partially psychic| +|08/01/2022 06:40:27| |Holy shit Maho| +|08/01/2022 06:40:28| DEAD +|08/01/2022 06:40:28| |maho gets decapitated| +|08/01/2022 06:40:30| |REKT REKT REKT| +|08/01/2022 06:40:34| SISTERHOOD +|08/01/2022 06:40:36| NINA +|08/01/2022 06:40:37| |bozo m26| +|08/01/2022 06:40:37| |truck commies| +|08/01/2022 06:40:37| |Serious whiplash damage there| +|08/01/2022 06:40:39| ..... +|08/01/2022 06:40:40| |THAT BOAT JUST KICKED A +50 TON TANK| +|08/01/2022 06:40:40| |INSANE OUTPLAYS| +|08/01/2022 06:40:40| |guys, Ooarai might win| +|08/01/2022 06:40:42| |BGM is back| +|08/01/2022 06:40:43| |>carbon coating more like cabron coating| +|08/01/2022 06:40:44| |off to the camps| +|08/01/2022 06:40:47| |2 v 1, Ourai bros we got this| +|08/01/2022 06:40:48| >might +|08/01/2022 06:40:49| |YO IS OORAI GONNA WIN| +|08/01/2022 06:40:50| Kino +|08/01/2022 06:40:50| |shiho still refuses to let miho back into the house| +|08/01/2022 06:40:55| |ALAMO | +|08/01/2022 06:40:57| |Oarai might just win somehow...| +|08/01/2022 06:40:58| |Nice driving skills| +|08/01/2022 06:40:59| |>cabron coating kek| +|08/01/2022 06:41:00| |TANK JOUSTING| +|08/01/2022 06:41:02| |GIVE GALAX'S SERVERS ENERGY \O/| +|08/01/2022 06:41:03| |COMIN IN HOT| +|08/01/2022 06:41:03| |alicebros what's our game plan| +|08/01/2022 06:41:04| |alice getting double futa cock| +|08/01/2022 06:41:06| |LETS GO ALICE CUNNY| +|08/01/2022 06:41:08| \O/ +|08/01/2022 06:41:09| |HERE WE GO| +|08/01/2022 06:41:09| \o/ +|08/01/2022 06:41:09| |University bros, did we get too cocky?| +|08/01/2022 06:41:11| | \o/ \o/ \o/| +|08/01/2022 06:41:12| \o/ +|08/01/2022 06:41:13| BUFFERING +|08/01/2022 06:41:13| \o/ +|08/01/2022 06:41:14| |GAMBARE, SERVER-CHAN| +|08/01/2022 06:41:14| >buffering +|08/01/2022 06:41:15| BUFFERAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:41:15| |\o/ JUST STARTED BUFFERING FOR ME| +|08/01/2022 06:41:17| DRIFT +|08/01/2022 06:41:19| AAAAAAAAAAAAAA +|08/01/2022 06:41:20| |SO THIS IS THE POWER OF CUNNY| +|08/01/2022 06:41:20| >buffering +|08/01/2022 06:41:21| \o/ +|08/01/2022 06:41:21| |BUFFERING YOU FUCK| +|08/01/2022 06:41:23| \o/ +|08/01/2022 06:41:23| |>cunny vs JK THE FINAL BATTLE| +|08/01/2022 06:41:25| |THE MOST INTENSE FIGHT OF ALL| +|08/01/2022 06:41:26| |JET ENGINES| +|08/01/2022 06:41:26| |FUCK EM UP SERVERS!| +|08/01/2022 06:41:27| GALAAAAAAAAAAAAAAAAAAAAAX +|08/01/2022 06:41:29| |this is like a 12 year old doing all this | +|08/01/2022 06:41:29| | \o/ \o/ \o/| +|08/01/2022 06:41:29| |\O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ \O/ | +|08/01/2022 06:41:30| \o/ +|08/01/2022 06:41:31| >BUFFERING +|08/01/2022 06:41:31| fubbering +|08/01/2022 06:41:32| |SO MUCH BUFFERING AAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 06:41:32| |SERVERS ARE BACK| +|08/01/2022 06:41:32| |track still intact| +|08/01/2022 06:41:34| |CUNNY TO STRONG THAT ITS BUFFFERING| +|08/01/2022 06:41:36| |STREAM CAN'T HANDLE THIS TANK BATTLE| +|08/01/2022 06:41:37| |UN GLOBOHOMO TEAM WILL WIN| +|08/01/2022 06:41:37| |They are trying to l;ag switch us bros| +|08/01/2022 06:41:38| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 06:41:39| |SHUT IT DOWN| +|08/01/2022 06:41:40| |SHOT BOUNCED| +|08/01/2022 06:41:41| \m/ +|08/01/2022 06:41:41| |TAKE MY ENERGY MIHO| +|08/01/2022 06:41:42| \o/ +|08/01/2022 06:41:43| |WE DIDN'T EVEN SCRATCH THEM| +|08/01/2022 06:41:44| \o/ +|08/01/2022 06:41:46| |who is supposed to be seeing her hand signals?| +|08/01/2022 06:41:46| KINO +|08/01/2022 06:41:47| |>ACTUAL ROCKET| +|08/01/2022 06:41:48| |WOW CHEATER| +|08/01/2022 06:41:49| ???????? +|08/01/2022 06:41:50| \m/ +|08/01/2022 06:41:51| |COME FLY WITH ME| +|08/01/2022 06:41:53| WTF +|08/01/2022 06:41:53| |That was just unnecessary lmao| +|08/01/2022 06:41:53| \O? +|08/01/2022 06:41:54| |KINO KINO KINO| +|08/01/2022 06:41:54| |>a fucking rocket| +|08/01/2022 06:41:54| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:41:55| |RUBE GOLBERG?| +|08/01/2022 06:41:56| |HERE COMES THE NUKEE| +|08/01/2022 06:41:58| |WHERE IS MY WIFE ORANGE PEKOE?| +|08/01/2022 06:41:58| |KINO TIME| +|08/01/2022 06:42:00| |NOT THE WHEEL| +|08/01/2022 06:42:01| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:42:06| AHAHAHAHAHAHAHA +|08/01/2022 06:42:07| |Pekoe's dead anon| +|08/01/2022 06:42:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:42:09| |ANTICHRIST BROS? I DONT FEEL SO GOOD| +|08/01/2022 06:42:11| Bear +|08/01/2022 06:42:14| |that bear wins the match| +|08/01/2022 06:42:16| |FPS POV| +|08/01/2022 06:42:17| |die joe boo| +|08/01/2022 06:42:17| |saved by boco| +|08/01/2022 06:42:17| |plot twist activated| +|08/01/2022 06:42:18| |PoV you are an autist| +|08/01/2022 06:42:21| |FIRST PERSON KINO| +|08/01/2022 06:42:21| F[S +|08/01/2022 06:42:23| KINOOOOO +|08/01/2022 06:42:25| >boko +|08/01/2022 06:42:28| |activate armor plot| +|08/01/2022 06:42:30| |BOKO HALAL| +|08/01/2022 06:42:31| |Boko literally saves the day| +|08/01/2022 06:42:32| |ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE ALICE AL| +|08/01/2022 06:42:33| |KINO IS BACK ON THE MENU BOYS| +|08/01/2022 06:42:36| |Bullshit on that shot, that woulda penned| +|08/01/2022 06:42:40| |fuck em up boko| +|08/01/2022 06:42:43| |that Tiger I is just sex| +|08/01/2022 06:42:44| |CUNNY CUNNY CUNNY CUNNY| +|08/01/2022 06:42:48| |POV shots are kino| +|08/01/2022 06:42:48| |AHHHHH SAVE ME BOKO MAN| +|08/01/2022 06:42:50| |GANBARE BOKO!| +|08/01/2022 06:42:51| |I CAN'T BELIEVE I TURNED INTO A LITTLE GIRL| +|08/01/2022 06:42:53| |STOP ITS BOKO STOP PLS DON'T HARM HIM HES JUST A BOKO| +|08/01/2022 06:42:53| |GO CUNNY GO BOKO GO UN| +|08/01/2022 06:42:54| |O MY BEAR RIDE| +|08/01/2022 06:42:54| |Boko trolling again. Who side are you really on Boko?| +|08/01/2022 06:42:54| KINO +|08/01/2022 06:42:54| |BOCO TRUCE| +|08/01/2022 06:42:56| |PENETRATE ALICE WITH A 17 POUNDER| +|08/01/2022 06:42:56| |UOOOOOOOOH IMPREGNATE ALICE| +|08/01/2022 06:42:57| |thank you boko| +|08/01/2022 06:42:57| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:42:58| BOKO +|08/01/2022 06:42:58| |BOKO NO| +|08/01/2022 06:42:58| ! +|08/01/2022 06:42:58| |BEAR SAVE| +|08/01/2022 06:42:59| boko! +|08/01/2022 06:42:59| BOKO +|08/01/2022 06:43:00| |KAY IS BAE| +|08/01/2022 06:43:00| |O MY RUBBER BEAR| +|08/01/2022 06:43:01| BOKOOOOOOO +|08/01/2022 06:43:01| boko +|08/01/2022 06:43:03| BOKO +|08/01/2022 06:43:03| BOKO +|08/01/2022 06:43:03| Autism +|08/01/2022 06:43:03| D: +|08/01/2022 06:43:05| BOKO +|08/01/2022 06:43:05| BOKO +|08/01/2022 06:43:05| |BEAR VICTORY| +|08/01/2022 06:43:06| |BOKO SAVES THE DAY| +|08/01/2022 06:43:06| BOKOMVP +|08/01/2022 06:43:06| |BOKO MVP| +|08/01/2022 06:43:06| BOCO +|08/01/2022 06:43:07| |BOCO MORE POWERFUL THAN TANKS| +|08/01/2022 06:43:08| Kek +|08/01/2022 06:43:09| KINO +|08/01/2022 06:43:09| |boko sides with miho| +|08/01/2022 06:43:09| |why did the gunner hesitate?| +|08/01/2022 06:43:10| |THAT BOKO ISN'T CARBON COATED | +|08/01/2022 06:43:10| |OH MY RUBBER BOKO| +|08/01/2022 06:43:11| 3fps +|08/01/2022 06:43:12| |BOCO HALAL| +|08/01/2022 06:43:13| |THIS IS IT LADS| +|08/01/2022 06:43:14| |Time to finish this| +|08/01/2022 06:43:14| |actual autism| +|08/01/2022 06:43:16| |BEAR > WINNING| +|08/01/2022 06:43:17| |boko cunny mvp| +|08/01/2022 06:43:17| KINO +|08/01/2022 06:43:18| |GODDESS OF VICTORY BOKO| +|08/01/2022 06:43:19| |BOKO > DVCE| +|08/01/2022 06:43:20| KINO +|08/01/2022 06:43:21| |surely, the gunner didnt even see boko?| +|08/01/2022 06:43:21| |THEY HAVE THE HIGHGROUND| +|08/01/2022 06:43:24| |I HAVE THE HIGH GROUND| +|08/01/2022 06:43:24| |13 year old| +|08/01/2022 06:43:25| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:43:26| |ITS OVER ANAKIN| +|08/01/2022 06:43:27| |Just shoot them from there| +|08/01/2022 06:43:28| JOUST +|08/01/2022 06:43:29| |REV IT UP| +|08/01/2022 06:43:29| KINOOOOOOOOOOOO +|08/01/2022 06:43:30| |KINO TIMEEEEEEEEEEEEE| +|08/01/2022 06:43:31| |IT'S OVER ALICE, WE HAVE THE HIGH GROUND| +|08/01/2022 06:43:31| |Who's the number one boko fan now bitch?| +|08/01/2022 06:43:32| KINO +|08/01/2022 06:43:32| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:43:32| |ITS OVER ALICE WE HAVE THE HIGH GROUND| +|08/01/2022 06:43:33| VROOOOOM +|08/01/2022 06:43:35| BUFFERING +|08/01/2022 06:43:35| |NO WAY| +|08/01/2022 06:43:36| |They're driving directly at you| +|08/01/2022 06:43:36| |That Maho sad face. I can't| +|08/01/2022 06:43:37| |literal autism| +|08/01/2022 06:43:37| |IT'S OVER ERIKA, WE HAVE THE HIGH GROUND| +|08/01/2022 06:43:39| |HERE COMES THE KINO| +|08/01/2022 06:43:39| |CANNON SUPPORT| +|08/01/2022 06:43:40| |GALAXY BRAIN| +|08/01/2022 06:43:41| |Top 10 anime betrayal| +|08/01/2022 06:43:41| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:43:41| WEW +|08/01/2022 06:43:42| COCK +|08/01/2022 06:43:43| |ANKOU HAYAI| +|08/01/2022 06:43:44| GUBO??? +|08/01/2022 06:43:44| BOOSTO +|08/01/2022 06:43:44| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST| +|08/01/2022 06:43:44| BOOSTO +|08/01/2022 06:43:46| KINO +|08/01/2022 06:43:49| |i wish maho would fire a blank at my ass| +|08/01/2022 06:43:49| BTFO +|08/01/2022 06:43:49| KINOKINOKINO +|08/01/2022 06:43:49| |SLINGSHOT ENGAGED| +|08/01/2022 06:43:50| |HOLY KINO| +|08/01/2022 06:43:50| |GOD HOLY SHIT| +|08/01/2022 06:43:51| KINO +|08/01/2022 06:43:52| KINO +|08/01/2022 06:43:52| KINO +|08/01/2022 06:43:53| KINOOO +|08/01/2022 06:43:53| |Centurions aint shit but hoes n tricks| +|08/01/2022 06:43:53| KINO +|08/01/2022 06:43:53| |HORYY SHITTTT| +|08/01/2022 06:43:53| |HYYYYYYYYYYYYPE AS FUCK| +|08/01/2022 06:43:54| kino +|08/01/2022 06:43:54| BTFO +|08/01/2022 06:43:54| |THE FUCKING SFX| +|08/01/2022 06:43:54| kino +|08/01/2022 06:43:55| KINOGRAPHY +|08/01/2022 06:43:56| KINOOOO +|08/01/2022 06:43:56| |WE DID IT BROS | +|08/01/2022 06:43:56| |HOLY KINO| +|08/01/2022 06:43:56| Kino +|08/01/2022 06:43:57| VICTORY +|08/01/2022 06:43:57| |SHOOTING YOURSELF| +|08/01/2022 06:43:58| KINO +|08/01/2022 06:43:58| UOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:43:59| KINOOOOOOO +|08/01/2022 06:44:00| KINO +|08/01/2022 06:44:00| |KAY OH| +|08/01/2022 06:44:00| |I AM THE PROJECTILE | +|08/01/2022 06:44:01| |NOOOOO CUNNY LOSE| +|08/01/2022 06:44:02| KINOOOOOOOOOOOO +|08/01/2022 06:44:04| SEGGSSSSSSS +|08/01/2022 06:44:05| |Dangerously kino| +|08/01/2022 06:44:05| |GET FUCKED (UN)IVERSITY| +|08/01/2022 06:44:07| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:44:08| |SHOOT IT IN ME ONEE-CHAN| +|08/01/2022 06:44:09| |this is war| +|08/01/2022 06:44:11| |Miho is a fucking genius| +|08/01/2022 06:44:12| |gg boyos| +|08/01/2022 06:44:13| |miho taking it from behind| +|08/01/2022 06:44:14| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:44:17| |RIP T28| +|08/01/2022 06:44:17| |TIger last man standing| +|08/01/2022 06:44:21| |WAR. WAR NEVER CHANGES| +|08/01/2022 06:44:22| |I LOVE THE ANTICHRIST| +|08/01/2022 06:44:23| MIPORIN +|08/01/2022 06:44:24| |IMPREGNATE JUDGE| +|08/01/2022 06:44:25| ENDSIEG +|08/01/2022 06:44:25| |HOLY FUCK OOARAI WON!?| +|08/01/2022 06:44:27| |LETS FUCKING GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 06:44:27| YOSHAAAAAA +|08/01/2022 06:44:29| |if only it didn't stop to buffer 4 times during that scene| +|08/01/2022 06:44:29| YOSHAAAAAAA +|08/01/2022 06:44:29| OOOOJOUUUUU +|08/01/2022 06:44:29| |MEXT BTFO| +|08/01/2022 06:44:30| |I HAVE BEEN SAVED I HAVE BEEN SAVED| +|08/01/2022 06:44:30| |WOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOARIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII| +|08/01/2022 06:44:30| 88888888888888888888888888888888888888888888888888888888888888888888888888888 +|08/01/2022 06:44:31| \o/ +|08/01/2022 06:44:31| Oaraiwinslol +|08/01/2022 06:44:31| |OORAI MEMED TO VICTORY ONCE AGAIN| +|08/01/2022 06:44:32| |ooaraibros... we won...| +|08/01/2022 06:44:32| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:44:32| YOSH +|08/01/2022 06:44:32| |MEXT bros.....| +|08/01/2022 06:44:33| YOSHAAA +|08/01/2022 06:44:33| |EI EI OUUUUU| +|08/01/2022 06:44:33| |CUTE ERIKA| +|08/01/2022 06:44:33| 88888888888888888888888888888888888888888888888 +|08/01/2022 06:44:34| YOSHAAAAAAAAAAa +|08/01/2022 06:44:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:44:35| DUCE +|08/01/2022 06:44:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:44:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:44:35| |Can't believe I didn't get the university joke until now| +|08/01/2022 06:44:35| WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:44:36| |WE DID BOYS| +|08/01/2022 06:44:36| |Miho's a mad lad. Ain't disqualified if flag ain't out yet.| +|08/01/2022 06:44:36| |THEY FUCKING DID IT| +|08/01/2022 06:44:36| |ANTICHRIST FAGS BTFO| +|08/01/2022 06:44:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:44:37| WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOW +|08/01/2022 06:44:37| BANZAI +|08/01/2022 06:44:37| XOROSHO +|08/01/2022 06:44:38| |/fit/ gamers| +|08/01/2022 06:44:38| BANZAI +|08/01/2022 06:44:38| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:44:38| BANZAI +|08/01/2022 06:44:39| |LETS MUSCLE| +|08/01/2022 06:44:40| BANZAI +|08/01/2022 06:44:40| |We won?| +|08/01/2022 06:44:41| VODKA +|08/01/2022 06:44:41| YAY +|08/01/2022 06:44:41| 888888888888888888888888888888888888 +|08/01/2022 06:44:42| |GLOBOHOMO TEAM BTFO| +|08/01/2022 06:44:42| BANZAI +|08/01/2022 06:44:42| males +|08/01/2022 06:44:43| |I HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRISTI HATE THE ANTICHRIST| +|08/01/2022 06:44:43| URA +|08/01/2022 06:44:43| |HORROR SHOW| +|08/01/2022 06:44:44| YATTA +|08/01/2022 06:44:44| |klara with vodka lol| +|08/01/2022 06:44:44| |THE BEST| +|08/01/2022 06:44:44| |\o/ BANZAI| +|08/01/2022 06:44:45| |Mext bros....| +|08/01/2022 06:44:46| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:44:46| MEXTbros... +|08/01/2022 06:44:46| |Globohomo bros....| +|08/01/2022 06:44:46| |LETS FUCKING GOOOOOOOOOOOOOOOOO| +|08/01/2022 06:44:46| >non-alcoholic +|08/01/2022 06:44:46| MOMO +|08/01/2022 06:44:47| |WE WON OOARI BROS| +|08/01/2022 06:44:47| Anzu +|08/01/2022 06:44:47| |LOL BUFFERING| +|08/01/2022 06:44:48| |MEXT LADS WTFFFFF???| +|08/01/2022 06:44:48| |MEXT BTFO| +|08/01/2022 06:44:48| |was it vodka?| +|08/01/2022 06:44:49| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:44:49| BANZAI +|08/01/2022 06:44:49| UYRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:44:49| |SURELY MOMO WILL BE ABLE TO GRADUATE AFTER THIS| +|08/01/2022 06:44:52| YATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:44:52| |TAKE SHOTS NOW!| +|08/01/2022 06:44:52| |MEXT BROS NEXT TIME| +|08/01/2022 06:44:52| |BASED MOVIE| +|08/01/2022 06:44:53| NORIKO<3 +|08/01/2022 06:44:53| |cry momo cry| +|08/01/2022 06:44:54| YATTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 06:44:55| |Guys, we did it....| +|08/01/2022 06:44:56| |I want to rape Rosehip's driver| +|08/01/2022 06:44:57| |NO GLOBOHOMO| +|08/01/2022 06:44:58| URAAAAAAA +|08/01/2022 06:44:58| |Rosehip is sad there because she isn't going fast| +|08/01/2022 06:44:58| KINOOOOOOOO +|08/01/2022 06:45:02| |a fycking rubber bear| +|08/01/2022 06:45:02| |TAKE SHOTS NOW!| +|08/01/2022 06:45:02| |THEY CAN"T KEEP GETTING AWAY WITH THIS | +|08/01/2022 06:45:04| |we didit bros| +|08/01/2022 06:45:04| |don't celebrate yet momo it's still over for you| +|08/01/2022 06:45:04| |MEXT guy thinking how hes gonna give us more content| +|08/01/2022 06:45:04| |Now everyone can get into a good college!| +|08/01/2022 06:45:05| KINOOOOOOOOOOOOOOOOO +|08/01/2022 06:45:08| |ANZU UPSKIRT| +|08/01/2022 06:45:08| |WHAT A GOOD MOMENT TO END THE SERIES ON OH WAIT| +|08/01/2022 06:45:10| |will shiho let miho back in the house now?| +|08/01/2022 06:45:10| Upskirt +|08/01/2022 06:45:11| |Ankou been through hell| +|08/01/2022 06:45:11| GIWTWM +|08/01/2022 06:45:11| |woah anzu| +|08/01/2022 06:45:12| UOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 06:45:12| MAHOOOOOO +|08/01/2022 06:45:13| |ANZU CUNNY| +|08/01/2022 06:45:13| NISHIZUMICHAN +|08/01/2022 06:45:14| |GOD I WISH I WERE MIHO| +|08/01/2022 06:45:14| |MEXT bros... we got too cocky| +|08/01/2022 06:45:14| |LEG LOCK| +|08/01/2022 06:45:14| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:45:14| |god I wish that were me| +|08/01/2022 06:45:15| Cunny! +|08/01/2022 06:45:17| |don't cwy, Momo| +|08/01/2022 06:45:17| |This will have no effect on Momo's grades| +|08/01/2022 06:45:17| |This OST is beautiful| +|08/01/2022 06:45:18| |>Anzu hug| +|08/01/2022 06:45:19| giwtwm +|08/01/2022 06:45:19| |BEST ANZU| +|08/01/2022 06:45:21| SUBTEXTSUBTEXTSUBTEXTSUBTEXTSUBTEXTSUBTEXT +|08/01/2022 06:45:22| |IMAGINE | +|08/01/2022 06:45:22| |ANZU LEG LOCK UOHHHHHH| +|08/01/2022 06:45:23| |I want to be pounched by Anzu| +|08/01/2022 06:45:24| Congratulations! +|08/01/2022 06:45:25| |OMEDETOU SHINJI| +|08/01/2022 06:45:25| |a fucking bear| +|08/01/2022 06:45:26| CUTE +|08/01/2022 06:45:26| |NEVER EVER| +|08/01/2022 06:45:29| OMEDETOU +|08/01/2022 06:45:29| |WHY IS IT SO KINO BROS???| +|08/01/2022 06:45:29| Autism +|08/01/2022 06:45:31| ENTER +|08/01/2022 06:45:32| CUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 06:45:32| |ARISU ;_;| +|08/01/2022 06:45:33| |DORK ALERT| +|08/01/2022 06:45:34| boco! +|08/01/2022 06:45:34| |I want Anzu to hug me like that...| +|08/01/2022 06:45:34| BOKO +|08/01/2022 06:45:35| |boko moment boko moment| +|08/01/2022 06:45:36| autism +|08/01/2022 06:45:36| BOKO +|08/01/2022 06:45:36| |>you will never get legged lock by anzu| +|08/01/2022 06:45:36| CUTE +|08/01/2022 06:45:36| bokobros... +|08/01/2022 06:45:36| |a fucking BOKO| +|08/01/2022 06:45:37| Arisu.... +|08/01/2022 06:45:37| UOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 06:45:37| |Bear mount| +|08/01/2022 06:45:37| |WHAT DA BEAR DOIN| +|08/01/2022 06:45:38| CUUUUUUUUUNNNNNNNNNNYYYYYYYYYY +|08/01/2022 06:45:38| BOKO?! +|08/01/2022 06:45:38| AUTISM +|08/01/2022 06:45:39| TuT +|08/01/2022 06:45:39| |Enter autismo| +|08/01/2022 06:45:39| |Autism incarnate| +|08/01/2022 06:45:39| |Thanks Boko| +|08/01/2022 06:45:39| |friends, you kneel to no one| +|08/01/2022 06:45:40| |MY STEED| +|08/01/2022 06:45:40| |Was it autism?| +|08/01/2022 06:45:41| arisu... +|08/01/2022 06:45:41| |CUTE AUTIST| +|08/01/2022 06:45:42| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:45:42| autism +|08/01/2022 06:45:43| |BOKO HARAM| +|08/01/2022 06:45:44| UOOOOOOOOOOOOOOOH +|08/01/2022 06:45:44| UOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:45:44| ARISU +|08/01/2022 06:45:45| WITNESSED +|08/01/2022 06:45:46| |ALICE CUTE| +|08/01/2022 06:45:47| |NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO | +|08/01/2022 06:45:48| |Fuck that stupid bear autism| +|08/01/2022 06:45:48| |UOOOOOOOOOHHHHHHHHHHHHHHHHHHHHh ;_;| +|08/01/2022 06:45:48| |CUTE AUTISM| +|08/01/2022 06:45:49| |I KNEEL| +|08/01/2022 06:45:51| |BOKO HARAM| +|08/01/2022 06:45:51| |she staring at booba| +|08/01/2022 06:45:51| |SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT| +|08/01/2022 06:45:52| |SAVE THE MUSEUM| +|08/01/2022 06:45:53| |BEAR VOR| +|08/01/2022 06:45:53| |BOKO SHOULD HAVE WON| +|08/01/2022 06:45:53| BOOOOKKKOOOOOOOOO +|08/01/2022 06:45:54| CUTE +|08/01/2022 06:45:54| |HALF HER SIZE| +|08/01/2022 06:45:54| Alicetism +|08/01/2022 06:45:55| |the boko museum is FUCKED| +|08/01/2022 06:45:55| AUTISM +|08/01/2022 06:45:56| |I KNEEL| +|08/01/2022 06:45:56| |GET THAT SHIT OUTTA MY FACE| +|08/01/2022 06:45:57| |Alice is for uwooooohh| +|08/01/2022 06:45:57| ????????/ +|08/01/2022 06:45:57| |CUTE ALICE | +|08/01/2022 06:45:58| |aw my heart| +|08/01/2022 06:45:58| :DDDDDDDDDDD +|08/01/2022 06:45:58| BOOBS +|08/01/2022 06:45:59| |DEFEAT MEANS FRIENDSHIP| +|08/01/2022 06:45:59| |RARE MIHO IS GIVEN| +|08/01/2022 06:45:59| |BERGELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 06:45:59| |Is it the uniform or did Duce behind look bigger?| +|08/01/2022 06:46:00| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:00| |CUTE AUTIST| +|08/01/2022 06:46:01| cute +|08/01/2022 06:46:02| |a fucking bear| +|08/01/2022 06:46:03| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:46:03| |UOOOOO BLUSH| +|08/01/2022 06:46:04| Benis +|08/01/2022 06:46:05| /////////////////////////////// +|08/01/2022 06:46:06| |13 years old| +|08/01/2022 06:46:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:08| |Participation Medal of Honour| +|08/01/2022 06:46:08| |arisu a cute, CUUUUUUUUUUUUUUUUUUUUUUUUUUUTE| +|08/01/2022 06:46:09| ;_;7 +|08/01/2022 06:46:09| |CUTE ALICE| +|08/01/2022 06:46:10| HOBROS +|08/01/2022 06:46:10| 😭😭😭 +|08/01/2022 06:46:10| |NO STEAKS| +|08/01/2022 06:46:16| :DDDDDDDDDDD +|08/01/2022 06:46:16| |FINNS :DDDDDDDDD| +|08/01/2022 06:46:16| :DDDD +|08/01/2022 06:46:17| :DDDDDDDD +|08/01/2022 06:46:17| :DDDDDDD +|08/01/2022 06:46:19| benis +|08/01/2022 06:46:19| |FUG :DDDDDDD| +|08/01/2022 06:46:19| :DDDDDDDDD +|08/01/2022 06:46:20| |REMATCH CONFIRMED| +|08/01/2022 06:46:20| :DDDDDD +|08/01/2022 06:46:20| :DDDDDDDDDDDDDDDDDDDDddddddd +|08/01/2022 06:46:20| |AAAAAAAA THIS ED ;_____;| +|08/01/2022 06:46:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:21| SEGGGGGGS +|08/01/2022 06:46:22| ::DDDDDDDDDDDDDD +|08/01/2022 06:46:22| |APOLOGIZE TO THE FINISH| +|08/01/2022 06:46:22| :DDDDDDDDDDD +|08/01/2022 06:46:22| :DDDDDDDDDDDDDDDDD +|08/01/2022 06:46:22| :DDDDDDDDDDDDDDD +|08/01/2022 06:46:22| TRÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +|08/01/2022 06:46:22| :DD +|08/01/2022 06:46:22| |My wife mika| +|08/01/2022 06:46:22| >f*nns +|08/01/2022 06:46:23| |nice boat| +|08/01/2022 06:46:23| :DDD +|08/01/2022 06:46:23| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:23| |ok fin darj| +|08/01/2022 06:46:23| |I hope Momo graduates| +|08/01/2022 06:46:23| EBIN +|08/01/2022 06:46:24| |ebin :dddd| +|08/01/2022 06:46:24| |OVA W H E N| +|08/01/2022 06:46:24| |fugg :DDD| +|08/01/2022 06:46:25| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:25| |FUCK IM OUT OF PISS BOTTLES| +|08/01/2022 06:46:26| |Daro :DDDD| +|08/01/2022 06:46:27| FINNS +|08/01/2022 06:46:27| |MOVIE 2 CONFIRMED| +|08/01/2022 06:46:28| ;_;7 +|08/01/2022 06:46:28| :DDDDDDDDDDDDD +|08/01/2022 06:46:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:29| |Oh God this is so sad seeing this Ending| +|08/01/2022 06:46:30| o7 +|08/01/2022 06:46:30| KINOKINOKINO +|08/01/2022 06:46:31| 888888888888888888888888888888888888888888888888888 +|08/01/2022 06:46:32| |HOLY KINO| +|08/01/2022 06:46:33| |NICE BOTE| +|08/01/2022 06:46:33| :DDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:35| :DDDDDDDDD +|08/01/2022 06:46:35| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:35| :DDDDDDDD +|08/01/2022 06:46:35| |THIS IS THE END OH WAIT….| +|08/01/2022 06:46:36| |RATE IT| +|08/01/2022 06:46:36| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:46:36| |YEEEESSS MOVIE ED| +|08/01/2022 06:46:36| |too Kino| +|08/01/2022 06:46:37| |MVP WHEEL| +|08/01/2022 06:46:38| Q_Q +|08/01/2022 06:46:38| ED +|08/01/2022 06:46:41| |I just can't | +|08/01/2022 06:46:42| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:42| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST | +|08/01/2022 06:46:43| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:43| :) +|08/01/2022 06:46:43| ED +|08/01/2022 06:46:44| |piss break| +|08/01/2022 06:46:44| |Good stream lads| +|08/01/2022 06:46:44| |so for a while did you think this was the end of gup| +|08/01/2022 06:46:45| |best character| +|08/01/2022 06:46:45| |Honestly hate how sad the ending feels and sounds| +|08/01/2022 06:46:45| KINO +|08/01/2022 06:46:46| |THANK YOU WHEEL ;-;7| +|08/01/2022 06:46:47| |ITS OVER!| +|08/01/2022 06:46:48| |KINO ED| +|08/01/2022 06:46:49| |OTSUKARE FERRIS-CHAN| +|08/01/2022 06:46:50| KINO +|08/01/2022 06:46:50| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:46:51| :DDDDDDDDDDDDDDDD +|08/01/2022 06:46:52| | FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +|08/01/2022 06:46:53| |:) 8888888888888888888888888888888888| +|08/01/2022 06:46:54| |WHERE ARE THE ED CREDITS TL????| +|08/01/2022 06:46:55| |ANTICHRIST = LOST | +|08/01/2022 06:46:55| |>OWARI DA| +|08/01/2022 06:46:56| |BEAUTIFUL ENDING| +|08/01/2022 06:46:58| |it's over| +|08/01/2022 06:47:00| |Big Wheel is truly our greatest ally| +|08/01/2022 06:47:02| |piss taimu| +|08/01/2022 06:47:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:05| |Ending sounds peaceful after the climax fight| +|08/01/2022 06:47:06| |HELL YA FUCK THE ANTICHRIST| +|08/01/2022 06:47:08| |incest time???| +|08/01/2022 06:47:09| |>Der Film came out 7 years ago| +|08/01/2022 06:47:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:09| ;_________________; +|08/01/2022 06:47:11| |MIHO X MAHO FUTA SEX NONSTOP| +|08/01/2022 06:47:11| |Ribbon Warrior readalong next| +|08/01/2022 06:47:12| |what they talkin about| +|08/01/2022 06:47:14| |So kino...| +|08/01/2022 06:47:15| |THANK YOU GUP CREW FOR EXISTING| +|08/01/2022 06:47:15| MAHO +|08/01/2022 06:47:15| |INCEST CEREMONY| +|08/01/2022 06:47:15| |Next time I'll shoot it in you onee-chan| +|08/01/2022 06:47:18| gay +|08/01/2022 06:47:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:20| |Maho cute| +|08/01/2022 06:47:20| sovl... +|08/01/2022 06:47:21| |its already been 7 years...| +|08/01/2022 06:47:22| |I hope GuP never ends...| +|08/01/2022 06:47:22| gae +|08/01/2022 06:47:24| |My Maho wife| +|08/01/2022 06:47:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:26| |miho x maho time| +|08/01/2022 06:47:29| |I love this series so much| +|08/01/2022 06:47:31| |so much soul....| +|08/01/2022 06:47:31| |I FUCKING LOVE THIS SONG| +|08/01/2022 06:47:32| |We still have like 3 hours LETS GO| +|08/01/2022 06:47:33| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:34| |Probably talking about not being disowned by Shiho| +|08/01/2022 06:47:35| |maho more like AHO AHAHAHAHAHHAHAHAHAHAHAHAHAHAHAHAH| +|08/01/2022 06:47:37| |Who will continue the GuP legacy after the Finale?| +|08/01/2022 06:47:39| |SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX WITH HANA| +|08/01/2022 06:47:40| |BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO BOKO | +|08/01/2022 06:47:40| SOVL +|08/01/2022 06:47:40| |ENTA MISSION WHEN?| +|08/01/2022 06:47:40| |we'll get them next time mext bros| +|08/01/2022 06:47:41| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:47:41| |the end credits always hit me for some reason| +|08/01/2022 06:47:47| |2 more years for next OVA, stay strong guppers| +|08/01/2022 06:47:47| | O S T| +|08/01/2022 06:47:48| |I FUCKING LOVE THIS SONG| +|08/01/2022 06:47:50| |me flying the C5| +|08/01/2022 06:47:51| |i fucking love all u no homo| +|08/01/2022 06:47:52| |Oarai, Ibaraki's existence hinges on GuP's success| +|08/01/2022 06:47:53| #taberu +|08/01/2022 06:47:53| |Fuck me has it been 7 years?| +|08/01/2022 06:47:54| ?????????????????????????????????????????? +|08/01/2022 06:47:56| |USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! USA! | +|08/01/2022 06:47:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:47:57| !!!!!!!!! +|08/01/2022 06:47:57| BURGS +|08/01/2022 06:47:57| BORG +|08/01/2022 06:47:58| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:48:00| |COMFY AMERICANS| +|08/01/2022 06:48:00| |BIG BITE| +|08/01/2022 06:48:00| |I WILL LEARN JAPANESE, I WILL WATCH DAS FINALE IN THEATERS| +|08/01/2022 06:48:01| USAUSAUSA +|08/01/2022 06:48:01| >burgers +|08/01/2022 06:48:02| |PUT THAT BURGER DOWN| +|08/01/2022 06:48:02| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:48:02| |best community| +|08/01/2022 06:48:02| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 06:48:03| |TAKESHI NO| +|08/01/2022 06:48:03| |SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT SUBTEXT | +|08/01/2022 06:48:06| |Wake up and take the meds anon| +|08/01/2022 06:48:07| |OOMM OOOMM OOOMMMM| +|08/01/2022 06:48:07| |WHAT ARE WE SNACKIN ON TONIGHT FELLAS| +|08/01/2022 06:48:08| |TEA TIME| +|08/01/2022 06:48:10| |YOU WILL NOT DIE UNTIL GUP IS FINISHED| +|08/01/2022 06:48:10| |Kotobuki is fucking DEAD| +|08/01/2022 06:48:10| DEKINAI +|08/01/2022 06:48:12| |NOTHING ON THE DASH IT FUCKING OBSTRUCS VISION| +|08/01/2022 06:48:12| never +|08/01/2022 06:48:13| ?????????????????????????????????? +|08/01/2022 06:48:14| |soft katysuhsha| +|08/01/2022 06:48:14| CREPES +|08/01/2022 06:48:14| |Spank Naomi and Alisa Y/Y| +|08/01/2022 06:48:15| ????????????? +|08/01/2022 06:48:16| |ROSEHIP IS A DORK| +|08/01/2022 06:48:19| |ASSAM SICK OF THIS SHIT| +|08/01/2022 06:48:21| |DRINKING BOOZE MAKES THE GUPPIES CUTER| +|08/01/2022 06:48:23| |DARJFAG SPOTTED| +|08/01/2022 06:48:24| |CYKA BLYET| +|08/01/2022 06:48:25| |this is buffer hell, im out boys| +|08/01/2022 06:48:26| NONNA! +|08/01/2022 06:48:26| uoooooooooooooooooooooohhhhhhhhhhhhh +|08/01/2022 06:48:26| |MY WIFE, ROSEHIP| +|08/01/2022 06:48:27| |We're literally are going to wait 6-8 for the conclusion of the series lmao| +|08/01/2022 06:48:27| suya~ +|08/01/2022 06:48:29| |NONNO <3| +|08/01/2022 06:48:29| |PEKOE SEGGGGGGGSSSSS| +|08/01/2022 06:48:29| |Cute moms and child| +|08/01/2022 06:48:33| |Rukuriri jobbed and got zero(0) knockouts again| +|08/01/2022 06:48:39| |NO YOU STAY RIGHT HERE ANON| +|08/01/2022 06:48:40| |6-8 potatoes?| +|08/01/2022 06:48:43| |zero (o)?| +|08/01/2022 06:48:44| |I will be 40 when I watch das Finale's last episode| +|08/01/2022 06:48:45| |maho and her wife| +|08/01/2022 06:48:46| |WHAT IS LOVE| +|08/01/2022 06:48:47| |don't care erika lol| +|08/01/2022 06:48:48| |god damn it fine| +|08/01/2022 06:48:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:48:52| |SLEEP IS NOT AN OPTION| +|08/01/2022 06:48:53| |STFU WANI| +|08/01/2022 06:48:54| DVCE +|08/01/2022 06:48:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:48:56| |TOTSUGEKI | +|08/01/2022 06:48:56| |Sleepy Dorks| +|08/01/2022 06:48:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:48:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:48:58| TOTSUBAKAS +|08/01/2022 06:48:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:00| |Is it too much to ask for an antomotive club tanned tomboy waifu| +|08/01/2022 06:49:00| |WHAT IS LOVE, BABY DON'T HURT ME| +|08/01/2022 06:49:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:00| DVCE +|08/01/2022 06:49:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:02| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:03| |GG BOIS, LETS MEET BACK TO WATCH THE CONCLUSION IN 50 YEARS| +|08/01/2022 06:49:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:03| BANZAI +|08/01/2022 06:49:03| DVCE! +|08/01/2022 06:49:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:03| |WHAT IS DVCE| +|08/01/2022 06:49:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:04| |WHAT IS LOVE, BABY DON'T HURT ME| +|08/01/2022 06:49:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:05| |WHAT IS DUCE| +|08/01/2022 06:49:05| |NICE BOAT| +|08/01/2022 06:49:06| |WHAT IS LOVE| +|08/01/2022 06:49:06| |Worse track record compared tot he glorious Kah Veh-tan| +|08/01/2022 06:49:06| DVCE +|08/01/2022 06:49:06| |what is duce| +|08/01/2022 06:49:06| |NO TIME FOR REST, TOTSUGEKI| +|08/01/2022 06:49:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:08| |>when we were younger| +|08/01/2022 06:49:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:09| |WHAT IS LOVE| +|08/01/2022 06:49:10| |Nice to have something to look forward to| +|08/01/2022 06:49:10| |WHAT IS DUCE???? WHAT IS DUCE????| +|08/01/2022 06:49:11| |WHAT IS LOVE, BABY DON'T HURT ME NO MORE| +|08/01/2022 06:49:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:11| |WHAT IS LOVE?| +|08/01/2022 06:49:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:12| |I don't think I could have made it this far without GuP| +|08/01/2022 06:49:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:14| DVCE +|08/01/2022 06:49:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:14| |DUCE DUCE DUCE| +|08/01/2022 06:49:16| |WATASHI NO DEKIRU KOTO| +|08/01/2022 06:49:17| |>lights on| +|08/01/2022 06:49:18| |WHAT IS LOVE| +|08/01/2022 06:49:18| DVVVVVCE +|08/01/2022 06:49:18| |open eyes or u crash| +|08/01/2022 06:49:20| |DUCE DUCE DUCE| +|08/01/2022 06:49:20| |>missed the duce posting| +|08/01/2022 06:49:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:49:30| |duce spam is cancer| +|08/01/2022 06:49:31| |FUCK IM BEHIND| +|08/01/2022 06:49:31| jhjh +|08/01/2022 06:49:32| |Good end| +|08/01/2022 06:49:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:49:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 06:49:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:35| bunnies... +|08/01/2022 06:49:36| |Sleepy rabbits| +|08/01/2022 06:49:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:38| |dvce spam is life| +|08/01/2022 06:49:39| SODOKO +|08/01/2022 06:49:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:41| |Omg Azusa Sawa| +|08/01/2022 06:49:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:45| |MOMO A SHIT| +|08/01/2022 06:49:46| |das Finale 6 in 2028 if Actas doesn't slow down even more| +|08/01/2022 06:49:47| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 06:49:47| NEETS +|08/01/2022 06:49:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:48| gamergirls +|08/01/2022 06:49:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:49:50| |DUCE DUCE DUCE| +|08/01/2022 06:49:50| |boko RESTORED| +|08/01/2022 06:49:50| |volleyball tits| +|08/01/2022 06:49:51| |She is always awake, always at the ready | +|08/01/2022 06:49:51| |TOMBOY WAIFU!| +|08/01/2022 06:49:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:49:54| |MORALITY: RESTORED| +|08/01/2022 06:49:55| |>mako and sodoko see the ship first| +|08/01/2022 06:49:55| Kraftfahrzeughaftpflichtversicherung +|08/01/2022 06:49:55| |arisu 13 years old| +|08/01/2022 06:49:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DCUE DUCE DUCE| +|08/01/2022 06:49:57| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 06:49:57| |See you all in six years!| +|08/01/2022 06:49:58| |BASED /HIS/| +|08/01/2022 06:50:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:50:01| ;_; +|08/01/2022 06:50:01| |Good movie| +|08/01/2022 06:50:02| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 06:50:03| |*WARGAMING JAPAN*| +|08/01/2022 06:50:04| |fuck mom and darj, praise boko and dvce| +|08/01/2022 06:50:05| |I HATE MOMO | +|08/01/2022 06:50:06| |ALICE IS 20 AND IN UNIVERSITY| +|08/01/2022 06:50:07| Cute +|08/01/2022 06:50:07| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 06:50:11| |So is it OVA time now?| +|08/01/2022 06:50:12| |BOCO LIVES ON| +|08/01/2022 06:50:13| WOJTEK!!!!!! +|08/01/2022 06:50:15| wojtek +|08/01/2022 06:50:15| WOJAK?! +|08/01/2022 06:50:16| WOJTEK???? +|08/01/2022 06:50:16| |there she is boys| +|08/01/2022 06:50:17| |OVA TAIMU| +|08/01/2022 06:50:18| |AGAIN FAPP BREAK TIME?| +|08/01/2022 06:50:19| |Boko moment| +|08/01/2022 06:50:19| wojak +|08/01/2022 06:50:19| |I JUST WANT TO WATCH THE STREAM WITH THE GIRLS BUT IT KEEPS BUFFERING| +|08/01/2022 06:50:22| |Girls und OVA| +|08/01/2022 06:50:23| KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG +|08/01/2022 06:50:23| |need to piss| +|08/01/2022 06:50:23| |Arisu War! next| +|08/01/2022 06:50:23| :D +|08/01/2022 06:50:26| |WHATS NEXT?| +|08/01/2022 06:50:27| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 06:50:27| |dat callback| +|08/01/2022 06:50:28| :D +|08/01/2022 06:50:32| |MIHO SMILE SO PRECIOUS| +|08/01/2022 06:50:36| :) +|08/01/2022 06:50:38| :D +|08/01/2022 06:50:38| |SEX WITH HANA| +|08/01/2022 06:50:39| |nice boat| +|08/01/2022 06:50:41| |Congrats, Schizos | +|08/01/2022 06:50:41| |I love you guys| +|08/01/2022 06:50:42| |nice boat| +|08/01/2022 06:50:43| |Yukari's wife Miho| +|08/01/2022 06:50:43| :) +|08/01/2022 06:50:44| ;_; +|08/01/2022 06:50:46| |I LOVE YOU TOO| +|08/01/2022 06:50:46| |its coming home| +|08/01/2022 06:50:46| |bonus ova?| +|08/01/2022 06:50:47| |WHICH ONE IS NEXT| +|08/01/2022 06:50:47| |WHAT IS DUCE????| +|08/01/2022 06:50:48| kino +|08/01/2022 06:50:49| <3 +|08/01/2022 06:50:51| |HAPPY NEW YEAR GENTS| +|08/01/2022 06:50:55| :^) +|08/01/2022 06:50:55| |WHAT IS LOVE| +|08/01/2022 06:50:55| <3 +|08/01/2022 06:50:56| ARISU +|08/01/2022 06:50:57| |BABY DONT HURT ME| +|08/01/2022 06:50:59| |pls i need break| +|08/01/2022 06:50:59| <3 +|08/01/2022 06:50:59| |BABY DON'T HURT ME| +|08/01/2022 06:51:02| |BEST OVA| +|08/01/2022 06:51:02| |NO BREAK BITCHES| +|08/01/2022 06:51:03| |NO MORE| +|08/01/2022 06:51:03| |seggs with alice| +|08/01/2022 06:51:04| |ooaraibros why are my eyes wet| +|08/01/2022 06:51:06| ARISU! +|08/01/2022 06:51:07| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:51:07| |NO MORE| +|08/01/2022 06:51:09| Anzu +|08/01/2022 06:51:10| |Get your duce spam ready for this she doesn't show up for a while| +|08/01/2022 06:51:11| |arisu school scouting ova| +|08/01/2022 06:51:11| NOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:51:12| |im fucking dying| +|08/01/2022 06:51:13| UUUUUUUUUUOOOOOOOOOOHHHHHHHHHHHHHHHHHH +|08/01/2022 06:51:19| |ALICE CUUUTE| +|08/01/2022 06:51:20| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHH +|08/01/2022 06:51:20| |CUNNY UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH| +|08/01/2022 06:51:21| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 06:51:24| JC? +|08/01/2022 06:51:25| V +|08/01/2022 06:51:26| |UOOOOOOOOOOOOOOOOOOH UOOOOOOOOOOOOOOOOOOOOOOH| +|08/01/2022 06:51:27| |this is such a bullshit plot point| +|08/01/2022 06:51:28| |ARISU IS UNDER 14 YEARS OLD| +|08/01/2022 06:51:29| ARISU +|08/01/2022 06:51:29| |ALICE VORE| +|08/01/2022 06:51:30| ;0; +|08/01/2022 06:51:31| |ARISU WHORE| +|08/01/2022 06:51:32| UUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 06:51:33| |OST JAM| +|08/01/2022 06:51:33| |I WANT TO SQUEEZE KARINA| +|08/01/2022 06:51:37| USAGIS +|08/01/2022 06:51:38| |YUUKI AAAAAAAAAA| +|08/01/2022 06:51:39| UOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 06:51:41| ToT +|08/01/2022 06:51:41| |ARISU VORE!| +|08/01/2022 06:51:43| AZUSA!!! +|08/01/2022 06:51:43| |Anzu is so cute and genki| +|08/01/2022 06:51:44| |get ready to spam duce she doesn't show for a while| +|08/01/2022 06:51:47| |MUST... FUCK... MOMOOOOOOOO| +|08/01/2022 06:51:48| |And then they convince her to join literally any other school| +|08/01/2022 06:51:48| |UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 06:51:49| |impregnate karina| +|08/01/2022 06:51:49| |(T o T)| +|08/01/2022 06:51:51| |my cute daughters| +|08/01/2022 06:51:51| |CUTE AIRSU| +|08/01/2022 06:51:55| |SO CUTE| +|08/01/2022 06:51:58| |>more uooooh UOH BROS MY DICK HURTS TOO MUCH I CAN'T TAKE IT| +|08/01/2022 06:52:00| CUTE!!! +|08/01/2022 06:52:02| SEMPAI +|08/01/2022 06:52:03| CUUUUUUUUUUUUUUTE +|08/01/2022 06:52:06| |azusa fucking cute| +|08/01/2022 06:52:06| |T o T| +|08/01/2022 06:52:10| SENPAI +|08/01/2022 06:52:12| foreshadowing +|08/01/2022 06:52:12| |CUUUUUUUUUUUUTE ToT| +|08/01/2022 06:52:13| |invest in azusa| +|08/01/2022 06:52:16| SENPAI +|08/01/2022 06:52:16| |Rabbit team strong| +|08/01/2022 06:52:20| |REMINDER TO LOVE YOUR STATION| +|08/01/2022 06:52:22| |FUCK OFF MOMO| +|08/01/2022 06:52:24| UNCOMFIRMED +|08/01/2022 06:52:26| |(T o T) UUUUUUOHHHHHHHHHHH (T o T)| +|08/01/2022 06:52:26| |alice loves balls| +|08/01/2022 06:52:27| |momo mood killer| +|08/01/2022 06:52:28| |STOP HAVING FUN YOU ASSHOLES| +|08/01/2022 06:52:28| TAEKO +|08/01/2022 06:52:29| |>MOMO "NO FUN ALLOWED" RETARD| +|08/01/2022 06:52:30| |FUCK MOMO| +|08/01/2022 06:52:30| |DUMB MOMO CUNT| +|08/01/2022 06:52:31| |no fun allowed| +|08/01/2022 06:52:31| |momo ruin fun| +|08/01/2022 06:52:32| |I RABU MY STATION| +|08/01/2022 06:52:32| |I RABU MY STATION| +|08/01/2022 06:52:35| |cute boy| +|08/01/2022 06:52:39| |TRAIN TRAIN| +|08/01/2022 06:52:40| |I LOVE YOU| +|08/01/2022 06:52:41| |dumb momo she deserved to be locked out of uni| +|08/01/2022 06:52:43| NORIKO +|08/01/2022 06:52:43| VOLLEYTITS +|08/01/2022 06:52:45| |alice likes balls?| +|08/01/2022 06:52:46| |cute boy and his harem| +|08/01/2022 06:52:49| boy +|08/01/2022 06:52:53| PINPON +|08/01/2022 06:52:53| boobs +|08/01/2022 06:52:56| |you just know| +|08/01/2022 06:52:57| |Desert Fox| +|08/01/2022 06:52:59| |FUWA FUWA TIME| +|08/01/2022 06:53:00| |impregnate taka-chan| +|08/01/2022 06:53:00| KEION +|08/01/2022 06:53:03| |>liking anime| +|08/01/2022 06:53:03| |holy tits| +|08/01/2022 06:53:05| MANNERHEIM +|08/01/2022 06:53:07| TAKA-CHAN +|08/01/2022 06:53:07| /HIS/ +|08/01/2022 06:53:10| |FUN THINGS ARE FUN| +|08/01/2022 06:53:10| |The volleyball girls are sonfucking sexy| +|08/01/2022 06:53:12| |cringe squad| +|08/01/2022 06:53:13| |They just want to revive the volleyball club| +|08/01/2022 06:53:15| |budget walking| +|08/01/2022 06:53:17| ISHYGDDT +|08/01/2022 06:53:18| |imagine liking anime right guys| +|08/01/2022 06:53:20| |ALEXANDER WAS A BULGAR| +|08/01/2022 06:53:20| |What was the point of this OVA| +|08/01/2022 06:53:20| |BASED SQUAD| +|08/01/2022 06:53:21| |I love Akebi so much bros| +|08/01/2022 06:53:23| |Who's going to tell them senshado isn't volleyball | +|08/01/2022 06:53:23| |dork squad| +|08/01/2022 06:53:24| |NORIKO IS A GIRL| +|08/01/2022 06:53:26| |Imagine Alice in an auto club uniform. Stained with oil.| +|08/01/2022 06:53:26| |>Having volleyball autism| +|08/01/2022 06:53:28| |>ironic weeb| +|08/01/2022 06:53:28| who? +|08/01/2022 06:53:29| |>NOT LIKING ANIME| +|08/01/2022 06:53:30| |cunny,, that wewas the point| +|08/01/2022 06:53:31| |imagine 3some this whore| +|08/01/2022 06:53:31| |FUN POLICE PATROLLING THE STREETS| +|08/01/2022 06:53:32| |shes not a nerd| +|08/01/2022 06:53:32| Nerd! +|08/01/2022 06:53:32| |THATS IT!| +|08/01/2022 06:53:33| |SORE DA | +|08/01/2022 06:53:35| |SODOCLONE SEX| +|08/01/2022 06:53:35| |SORE DA!!| +|08/01/2022 06:53:37| |sore da| +|08/01/2022 06:53:37| |SORE DA| +|08/01/2022 06:53:38| |SORE DA| +|08/01/2022 06:53:38| >subs +|08/01/2022 06:53:39| |look we need to save movie for the movies ok?| +|08/01/2022 06:53:45| *PUFF* +|08/01/2022 06:53:45| |LEFT FOR ME| +|08/01/2022 06:53:45| |blazed af| +|08/01/2022 06:53:47| |ARISU IS A DELINQUENT| +|08/01/2022 06:53:49| Pasomi +|08/01/2022 06:53:50| |underage smoking? how about underage marriage| +|08/01/2022 06:53:53| |420 blaze it| +|08/01/2022 06:53:54| |Doing a burnout in front of the sodoclones| +|08/01/2022 06:53:55| |Based rebel| +|08/01/2022 06:53:56| |>school ship jannies| +|08/01/2022 06:53:57| yes +|08/01/2022 06:53:59| CREED +|08/01/2022 06:54:00| >typesetting +|08/01/2022 06:54:01| DUDE +|08/01/2022 06:54:02| |Wow Alice is so cool| +|08/01/2022 06:54:02| wwwwwwwwww +|08/01/2022 06:54:02| *puff8 +|08/01/2022 06:54:02| SMOKING +|08/01/2022 06:54:02| DUDE +|08/01/2022 06:54:03| |GANBARE GOMOYO!| +|08/01/2022 06:54:05| WEED +|08/01/2022 06:54:09| |she doesn't even have anything in her hand| +|08/01/2022 06:54:10| CREED +|08/01/2022 06:54:10| DUDE +|08/01/2022 06:54:11| LMAO +|08/01/2022 06:54:12| |FUCK EM UP GOMOYO| +|08/01/2022 06:54:13| |DUDE TOBACCO LMAO| +|08/01/2022 06:54:13| LMAO +|08/01/2022 06:54:13| DAGUMI +|08/01/2022 06:54:17| DUDE +|08/01/2022 06:54:17| |CUTE BROWN GIRLS| +|08/01/2022 06:54:20| |return to delinquent| +|08/01/2022 06:54:21| |need tomboy gf| +|08/01/2022 06:54:22| |SEX WITH ARISU| +|08/01/2022 06:54:22| |>unknwon driver| +|08/01/2022 06:54:23| |I LOVE creed, have you ever heard of creed| +|08/01/2022 06:54:23| |>no tabako| +|08/01/2022 06:54:24| |no smokin wtf| +|08/01/2022 06:54:29| |KAM ON SANNER| +|08/01/2022 06:54:31| |return to dude| +|08/01/2022 06:54:32| |ANZU CLONE| +|08/01/2022 06:54:32| /o/ +|08/01/2022 06:54:32| |Girls...Alice doesn't drive| +|08/01/2022 06:54:33| |But Alice is a commander| +|08/01/2022 06:54:35| brown +|08/01/2022 06:54:37| |BROWN GIRLS| +|08/01/2022 06:54:37| |cute morals committee| +|08/01/2022 06:54:39| |Best uniform| +|08/01/2022 06:54:39| |Nice shitbox| +|08/01/2022 06:54:41| who +|08/01/2022 06:54:41| |Rally English| +|08/01/2022 06:54:42| |Alice doesn't drive...| +|08/01/2022 06:54:43| |GIRLS UND RALLY| +|08/01/2022 06:54:43| |Arisu wasn't driving though?| +|08/01/2022 06:54:43| |INITIAL g| +|08/01/2022 06:54:44| |Wasn't she commanding | +|08/01/2022 06:54:45| |Alice is 13....| +|08/01/2022 06:54:51| |based /o/| +|08/01/2022 06:54:51| who? +|08/01/2022 06:54:52| NOOOO +|08/01/2022 06:54:53| GAMERS +|08/01/2022 06:54:54| >PSP +|08/01/2022 06:54:55| |TANNED BODY| +|08/01/2022 06:54:56| |PURO PINCHE| +|08/01/2022 06:54:57| |if you like brown girls save it for andou, not on these wh/o/res| +|08/01/2022 06:54:58| |NIKI LAUDA| +|08/01/2022 06:55:02| monhunbros... +|08/01/2022 06:55:03| F1 +|08/01/2022 06:55:04| |WHaT ABOUT MUH COPYRIGHT| +|08/01/2022 06:55:04| |I bet Arisu is at least a decent driver though| +|08/01/2022 06:55:05| |NO MAYKEL NO NO| +|08/01/2022 06:55:06| |BRING BACK GROUP B| +|08/01/2022 06:55:06| /v/ +|08/01/2022 06:55:06| |TANNED GIRLS ARE THE BEST| +|08/01/2022 06:55:08| >w/o/res +|08/01/2022 06:55:08| |MAX MAX MAX SUPER MAX MAX| +|08/01/2022 06:55:09| GROOMERS +|08/01/2022 06:55:09| |THE PERMISSIONS| +|08/01/2022 06:55:10| |Rise up panzer bros| +|08/01/2022 06:55:18| |NEKOTA IS A NEET| +|08/01/2022 06:55:19| |GAMERS ARE THE MOST OPRESSED RACE IN THE WORLD| +|08/01/2022 06:55:19| |Who's going to tell them senshado isn't street racing | +|08/01/2022 06:55:19| |SUPER MAX MAX SUPER SUPER MAX| +|08/01/2022 06:55:19| |GAMER GIRLS| +|08/01/2022 06:55:19| |>psp >not getting hipchecked by plesioth| +|08/01/2022 06:55:20| |IDOLSHIT STRIKES AGAIN| +|08/01/2022 06:55:20| MIURA +|08/01/2022 06:55:21| pokemon +|08/01/2022 06:55:23| |PANZER BED| +|08/01/2022 06:55:24| |FUCKING CASUALS| +|08/01/2022 06:55:25| NYAN +|08/01/2022 06:55:27| |fucking casuals| +|08/01/2022 06:55:28| FLOOG +|08/01/2022 06:55:28| IDOLM@STER +|08/01/2022 06:55:30| NEEEEERD +|08/01/2022 06:55:31| CASUALS +|08/01/2022 06:55:33| |I LOVE HARUKA| +|08/01/2022 06:55:33| |Calling Alice a normie, these gamers are| +|08/01/2022 06:55:35| |WRECK ARISU'S CUNNY| +|08/01/2022 06:55:36| TODOKETE +|08/01/2022 06:55:36| |/v/ btfo| +|08/01/2022 06:55:36| >bokotists +|08/01/2022 06:55:37| bokotism +|08/01/2022 06:55:37| |alice plays war thunder| +|08/01/2022 06:55:37| /v/irgins +|08/01/2022 06:55:37| |I cant believe the/o/ girls are gonna graduate bros...| +|08/01/2022 06:55:38| |NORMIES REEEE| +|08/01/2022 06:55:39| |filthy handheld players| +|08/01/2022 06:55:39| tankbed +|08/01/2022 06:55:40| Bokosexual +|08/01/2022 06:55:40| |segggs with boko dildo| +|08/01/2022 06:55:41| |GANG NYA| +|08/01/2022 06:55:42| |UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 06:55:45| UOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:55:49| |GANBARE BOKO!| +|08/01/2022 06:55:50| |Based Mako| +|08/01/2022 06:55:51| |TWO GIRLS CAN'T HAVE SEX| +|08/01/2022 06:55:51| |SLEEPY MAKO| +|08/01/2022 06:55:54| |SIESTA CHADS| +|08/01/2022 06:55:56| |AHHHHHHHHHHHHHHHHHHHHH MY ASS HURTTTTSS| +|08/01/2022 06:55:57| |boko boko| +|08/01/2022 06:55:57| |SIESTA SYSTEM| +|08/01/2022 06:55:58| |SLEEPY SEX WITH MAKO| +|08/01/2022 06:56:00| |WHO TRYNA WATCH THE BOKO DVD| +|08/01/2022 06:56:00| |BUY THE DVDS| +|08/01/2022 06:56:02| |MIHO X ALICE| +|08/01/2022 06:56:04| |boko haram| +|08/01/2022 06:56:05| |Reminder to do a quick refresh everyone| +|08/01/2022 06:56:06| |I wish I could visit the Boko Museum with someone| +|08/01/2022 06:56:06| |she sleep| +|08/01/2022 06:56:07| based +|08/01/2022 06:56:10| |Boko's bokos| +|08/01/2022 06:56:13| |Boko halal| +|08/01/2022 06:56:14| |Alice x Futa Miho| +|08/01/2022 06:56:16| |UOH UOH UOH | +|08/01/2022 06:56:17| |miho x boko| +|08/01/2022 06:56:17| |I-I'll visit wit h oyu, anon| +|08/01/2022 06:56:19| |RAPE CORRECTION| +|08/01/2022 06:56:19| yes +|08/01/2022 06:56:22| |SLEEPY SLEEP WITH MAKO| +|08/01/2022 06:56:24| |>half glasses| +|08/01/2022 06:56:25| |>capture ar 13 year old heart| +|08/01/2022 06:56:26| |aomushi canon| +|08/01/2022 06:56:26| CUTE +|08/01/2022 06:56:28| |Azusa you fucking dork| +|08/01/2022 06:56:29| |masochist bitch| +|08/01/2022 06:56:34| |dumb momo| +|08/01/2022 06:56:36| DORKS +|08/01/2022 06:56:36| |Need correction| +|08/01/2022 06:56:39| |aomushi should add balls tbh| +|08/01/2022 06:56:42| aZUSA!!!! +|08/01/2022 06:56:42| KAWAII +|08/01/2022 06:56:44| retard +|08/01/2022 06:56:49| Anzu +|08/01/2022 06:56:49| |momo retard| +|08/01/2022 06:56:50| NORIKO +|08/01/2022 06:56:52| |bruh momento| +|08/01/2022 06:56:52| GEIMU +|08/01/2022 06:56:53| |FUCK YOU MOMO| +|08/01/2022 06:56:56| |Ha, implying we have a budget | +|08/01/2022 06:56:58| |let them vibe momo| +|08/01/2022 06:56:58| |how did momo get into the student council| +|08/01/2022 06:57:00| |I LOVE YOU MOMO| +|08/01/2022 06:57:00| |MOMO IS CUTE! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 06:57:03| 却下 +|08/01/2022 06:57:04| |FUCK YOU MOMO| +|08/01/2022 06:57:06| |No budget? Momo's a cheapskate| +|08/01/2022 06:57:09| >normal +|08/01/2022 06:57:09| nepotism +|08/01/2022 06:57:09| |who tf loves momo| +|08/01/2022 06:57:09| |I HATE MOMO| +|08/01/2022 06:57:12| |MOMO SEETHING| +|08/01/2022 06:57:12| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 06:57:14| |LOVE YUO MOMO| +|08/01/2022 06:57:15| |NO FUN ALLOWED| +|08/01/2022 06:57:16| |Momo worst girl| +|08/01/2022 06:57:16| |go home momo| +|08/01/2022 06:57:16| |I LOVE MOMO VERY MUCH| +|08/01/2022 06:57:17| |none of them are normal| +|08/01/2022 06:57:18| |I hope Momo doesn't repeat| +|08/01/2022 06:57:19| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 06:57:19| |not even momo's parents love her| +|08/01/2022 06:57:20| |JUST BE YOUR SELF| +|08/01/2022 06:57:24| |FUTSUU TTE IUNA| +|08/01/2022 06:57:24| |MOMO RETARD| +|08/01/2022 06:57:24| |just b urself| +|08/01/2022 06:57:26| F +|08/01/2022 06:57:26| |>just b urself bro| +|08/01/2022 06:57:27| ded +|08/01/2022 06:57:28| |just b yourself| +|08/01/2022 06:57:28| |MY WIFE ARISU TOO CUTE| +|08/01/2022 06:57:28| f +|08/01/2022 06:57:29| |tfw momo| +|08/01/2022 06:57:32| DEAD +|08/01/2022 06:57:33| RIP +|08/01/2022 06:57:33| F +|08/01/2022 06:57:33| |O S T| +|08/01/2022 06:57:34| F +|08/01/2022 06:57:34| |Wow, miho is so smart| +|08/01/2022 06:57:35| |>lol jus b ur self| +|08/01/2022 06:57:36| |I can't believe Arisu is fucking dead| +|08/01/2022 06:57:37| |F on arrival| +|08/01/2022 06:57:38| |Rape correction Rape correction Rape correction Rape correction Rape correction| +|08/01/2022 06:57:39| |every one is an autist already so it's fine| +|08/01/2022 06:57:39| |SHE FUKCING DIED| +|08/01/2022 06:57:40| |Big tender for a big school ship.| +|08/01/2022 06:57:40| f +|08/01/2022 06:57:40| |True boko fan| +|08/01/2022 06:57:40| |DRINKING ARISUS VOMIt| +|08/01/2022 06:57:40| seasick +|08/01/2022 06:57:41| |The only normal high school girl| +|08/01/2022 06:57:42| |>she's fucking dead| +|08/01/2022 06:57:43| DEATH +|08/01/2022 06:57:44| |(T o T)| +|08/01/2022 06:57:45| ded +|08/01/2022 06:57:46| Seasick>> +|08/01/2022 06:57:47| |SOMEONE TAKE MY WIFE TO THE SICK BAY| +|08/01/2022 06:57:48| |alice moment| +|08/01/2022 06:57:48| |MOMO YOU CAN'T EVEN HIT THE BROADSIDE OF THE BARN YOU DUMB BITCH| +|08/01/2022 06:57:50| YOUKOSO +|08/01/2022 06:57:51| F +|08/01/2022 06:57:51| UOOOOOOOOOOHHHHHH +|08/01/2022 06:57:51| lel +|08/01/2022 06:57:53| Arisu... +|08/01/2022 06:57:53| Rapable?? +|08/01/2022 06:57:53| >ded +|08/01/2022 06:57:54| F +|08/01/2022 06:57:54| |is she okay| +|08/01/2022 06:57:54| bruh +|08/01/2022 06:57:55| |ARISU IS DEAD !!| +|08/01/2022 06:57:55| UOOOOOOHHHH +|08/01/2022 06:57:55| |LAND LUBBER| +|08/01/2022 06:57:55| F +|08/01/2022 06:57:56| |>closing eyes| +|08/01/2022 06:57:56| |would you even get seasick on a ship that big?| +|08/01/2022 06:57:56| |SHE'S FUCKING DEAD| +|08/01/2022 06:57:56| |Oh great, she's dead| +|08/01/2022 06:57:57| RIP +|08/01/2022 06:57:58| 5HEAD +|08/01/2022 06:57:59| |>IT WORKED| +|08/01/2022 06:57:59| |UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH UOH | +|08/01/2022 06:58:00| |Momo is such a fucking dork| +|08/01/2022 06:58:01| |LAND LUBBER| +|08/01/2022 06:58:02| FOREHEAD +|08/01/2022 06:58:02| |that sfx| +|08/01/2022 06:58:03| Kek +|08/01/2022 06:58:03| potatoE +|08/01/2022 06:58:03| |>it worked| +|08/01/2022 06:58:05| |What a DORK| +|08/01/2022 06:58:06| UOOOOOHHHHHHHHH +|08/01/2022 06:58:07| |SASUGA KAICHOU| +|08/01/2022 06:58:07| |feeling seasick? just forget about it| +|08/01/2022 06:58:10| |stick my dick on arisu forehead| +|08/01/2022 06:58:11| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 06:58:11| |ANZU IS SO SMART| +|08/01/2022 06:58:11| ???????????????????????? +|08/01/2022 06:58:13| |CUNNY POTATO| +|08/01/2022 06:58:14| DUCE +|08/01/2022 06:58:15| POTATO'D +|08/01/2022 06:58:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:15| |momo retard| +|08/01/2022 06:58:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:16| ????????????????????????????? +|08/01/2022 06:58:16| wat +|08/01/2022 06:58:16| |DUCE | +|08/01/2022 06:58:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:17| ITALIANS +|08/01/2022 06:58:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:19| CUTE +|08/01/2022 06:58:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:20| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 06:58:21| |DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:22| GIWTWM +|08/01/2022 06:58:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:22| pastaaaaaaaaaaa +|08/01/2022 06:58:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:23| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:23| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:25| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:28| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE!| +|08/01/2022 06:58:28| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:58:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:29| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:30| |MORE DUCE| +|08/01/2022 06:58:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:31| |DVCE PLEASE RUB ON MY CHEEK| +|08/01/2022 06:58:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:32| |DUCE DUCE DUCE| +|08/01/2022 06:58:32| GIWTWM +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:33| ? +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +|08/01/2022 06:58:34| |DUCE DUCE DUCE| +|08/01/2022 06:58:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:35| PEPPERONI +|08/01/2022 06:58:35| |I WANT DUCE TO RUB HERSELF ONTO ME| +|08/01/2022 06:58:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:58:36| BTFO +|08/01/2022 06:58:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:37| |lolis hate pizza| +|08/01/2022 06:58:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUC E DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:40| |join anzio alice| +|08/01/2022 06:58:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:58:41| |ARISU DABBING ON ITALIANS| +|08/01/2022 06:58:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:42| wwwwwwwwwwwwww +|08/01/2022 06:58:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:42| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:58:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:44| RAPE +|08/01/2022 06:58:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:45| |DUCEBROS.....I WANT TO FEEL| +|08/01/2022 06:58:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 06:58:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:47| |Awful taste| +|08/01/2022 06:58:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:47| EROTIC +|08/01/2022 06:58:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:48| |DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCE| +|08/01/2022 06:58:49| |Not liking cheese, what a pleb taste| +|08/01/2022 06:58:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:58:50| CUTE +|08/01/2022 06:58:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:50| |GOD I WISH THAT WERE ME| +|08/01/2022 06:58:50| |SMELLY AND WEARS A WIG| +|08/01/2022 06:58:51| |UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH TuT| +|08/01/2022 06:58:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:51| |DUCE SMELLS GOOD| +|08/01/2022 06:58:51| uoh +|08/01/2022 06:58:51| |WTF I HATE ALICE NOW| +|08/01/2022 06:58:51| |DVCE HIJACK| +|08/01/2022 06:58:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:53| |NO ONE WILL KNOW I WANT TO RAPE ARISU| +|08/01/2022 06:58:53| CUTE +|08/01/2022 06:58:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 06:58:56| |WHAT THE FUCK| +|08/01/2022 06:58:56| |>SHIT TASTE| +|08/01/2022 06:58:56| |Wow Alice, such disrespect to Duce. Must punish the Johnnies with pasta and diabetes| +|08/01/2022 06:58:56| duce. +|08/01/2022 06:58:57| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 06:58:57| uooooooooooooooooooooooooooooooooooooohhhhhhhhhhhhhhh +|08/01/2022 06:58:58| uwooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooh +|08/01/2022 06:58:58| UOOOOOOOOOOOOOOOHHHHHHHHHHHHHHH +|08/01/2022 06:58:58| |I want duce to rub against me| +|08/01/2022 06:58:58| |IT'S THE THING| +|08/01/2022 06:58:59| CUTE +|08/01/2022 06:58:59| |duce commit sex assult| +|08/01/2022 06:59:00| OOOOOOOOOOUUUUUUUUUUUUUUUUUUUUUU +|08/01/2022 06:59:00| |so smol| +|08/01/2022 06:59:00| |YOU WHAT| +|08/01/2022 06:59:01| |stop duce spamming retards| +|08/01/2022 06:59:02| ZANNEN +|08/01/2022 06:59:02| |Alice ToT| +|08/01/2022 06:59:05| |what kid doesn't like cheese?| +|08/01/2022 06:59:09| |DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 06:59:10| UOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHH +|08/01/2022 06:59:10| |What school DID she go to? She doesn't appear in any of the schools in the Finale| +|08/01/2022 06:59:11| no +|08/01/2022 06:59:12| |CUTE CUTE CUTE| +|08/01/2022 06:59:12| |DAMN SEXY CHILD| +|08/01/2022 06:59:12| |>DORK CLUB| +|08/01/2022 06:59:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 06:59:15| UOHHHHHHHHH +|08/01/2022 06:59:16| |need ninja club ova| +|08/01/2022 06:59:16| PRPRPRPRPPRPRRPPRR +|08/01/2022 06:59:17| UUUUUUUOOOOOOOOOOOOOHHHHHHHHHHHHHHH +|08/01/2022 06:59:17| ToT +|08/01/2022 06:59:18| |DAMN KID| +|08/01/2022 06:59:18| |ninja training?| +|08/01/2022 06:59:18| |I didn't| +|08/01/2022 06:59:19| |There's cheese all over my room faggot| +|08/01/2022 06:59:20| |Italian school so good. Drive fast and eat past| +|08/01/2022 06:59:20| |>ninja tactics| +|08/01/2022 06:59:21| OOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 06:59:22| |she went to universiy| +|08/01/2022 06:59:22| uoooooooooooooooooooh +|08/01/2022 06:59:22| |wtf is that in the background i never saw it before| +|08/01/2022 06:59:23| |this only needs the futa cock and it'll be perfect| +|08/01/2022 06:59:26| ToT +|08/01/2022 06:59:29| futa +|08/01/2022 06:59:30| PASS +|08/01/2022 06:59:34| |size of penis?| +|08/01/2022 06:59:35| DUCK +|08/01/2022 06:59:37| NINJAS +|08/01/2022 06:59:38| BOIPUSSY +|08/01/2022 06:59:38| |duck team raping noriko| +|08/01/2022 06:59:40| |nice duck| +|08/01/2022 06:59:41| TAEKO +|08/01/2022 06:59:41| autism +|08/01/2022 06:59:44| |This school is based as fuck| +|08/01/2022 06:59:44| |ALICE HIPS UOOOOOOOOOH| +|08/01/2022 06:59:45| |TEAM AUTISM| +|08/01/2022 06:59:47| |does miho or maho have better futa cock| +|08/01/2022 06:59:52| |Miho duh| +|08/01/2022 06:59:53| AVE +|08/01/2022 06:59:53| |I CANT HANDLE THIS AUTISM| +|08/01/2022 06:59:54| DUCKS +|08/01/2022 06:59:55| |boy shorter than miho| +|08/01/2022 06:59:56| |based /his/| +|08/01/2022 06:59:57| |time to ball up| +|08/01/2022 06:59:58| autism +|08/01/2022 06:59:58| duck +|08/01/2022 06:59:59| autists +|08/01/2022 06:59:59| |all teams are team autist| +|08/01/2022 07:00:00| MIHO +|08/01/2022 07:00:04| |GOBLIN SLAYER| +|08/01/2022 07:00:08| KAISER +|08/01/2022 07:00:10| |/his/ even top autistic for Alice| +|08/01/2022 07:00:11| SOUL +|08/01/2022 07:00:13| |She's so cute and funny| +|08/01/2022 07:00:14| 😭 +|08/01/2022 07:00:14| |BASED /HIS/| +|08/01/2022 07:00:14| SENPAI +|08/01/2022 07:00:15| SEMPAI +|08/01/2022 07:00:16| |dont let her near the sluts| +|08/01/2022 07:00:16| |wanna breed the rabbits| +|08/01/2022 07:00:20| NEEEEERD +|08/01/2022 07:00:21| KYAAAAAA +|08/01/2022 07:00:23| |Saki completely missing the reaction qte| +|08/01/2022 07:00:23| UUOOOOOOOOOOH +|08/01/2022 07:00:24| OYAKATA-SAMA +|08/01/2022 07:00:25| |rabbits are gonna corrupt arisu| +|08/01/2022 07:00:25| |UUUOOOHH SENPAI| +|08/01/2022 07:00:26| CUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:00:31| |arisu smart!| +|08/01/2022 07:00:32| 86 +|08/01/2022 07:00:32| |STRAIGHT SIX BROS| +|08/01/2022 07:00:33| /o/ +|08/01/2022 07:00:33| UOOOOOOOOOOOOOH +|08/01/2022 07:00:34| |Alice tensau| +|08/01/2022 07:00:34| KYAAAAAAA +|08/01/2022 07:00:35| |STRAITO 6| +|08/01/2022 07:00:36| |STRAIGHT SEX| +|08/01/2022 07:00:38| |FUCK THE RULES| +|08/01/2022 07:00:38| |C T U| +|08/01/2022 07:00:41| /fit/ +|08/01/2022 07:00:42| tsuyoi +|08/01/2022 07:00:43| |SMELLY BROWN MECHANIC| +|08/01/2022 07:00:44| RIPPED +|08/01/2022 07:00:44| |DO YOU LIKE MY CAR| +|08/01/2022 07:00:45| PEUGOT +|08/01/2022 07:00:45| |FUCKI OFF JANNIES| +|08/01/2022 07:00:45| |>EUROBEATS INTENSIFY| +|08/01/2022 07:00:45| /FIT/ +|08/01/2022 07:00:46| |>Cunny UOOOH-ing over cunny | +|08/01/2022 07:00:47| MIRIN +|08/01/2022 07:00:48| |ripped gamer| +|08/01/2022 07:00:48| |>that much displacement increase| +|08/01/2022 07:00:48| |TWO SCOOPS| +|08/01/2022 07:00:52| sugoiiii +|08/01/2022 07:00:52| SWOLE +|08/01/2022 07:00:53| WEW +|08/01/2022 07:00:53| car +|08/01/2022 07:00:55| |/fit/bros RISE UP| +|08/01/2022 07:01:00| |post physique| +|08/01/2022 07:01:00| SWOLE +|08/01/2022 07:01:00| |Nekota going in hard| +|08/01/2022 07:01:00| GUNS +|08/01/2022 07:01:01| FLUFF +|08/01/2022 07:01:02| |Mako is literally me| +|08/01/2022 07:01:02| NYA +|08/01/2022 07:01:04| /fit/ +|08/01/2022 07:01:07| |NYAN AF| +|08/01/2022 07:01:08| GUNS-NYA +|08/01/2022 07:01:11| |I want nekota to pin me down and rape me| +|08/01/2022 07:01:13| |NYA WITH THE BICEPS| +|08/01/2022 07:01:16| ost +|08/01/2022 07:01:17| |Holy autism| +|08/01/2022 07:01:18| |Bribing the child with trips to boko| +|08/01/2022 07:01:23| |take the invermectin alice| +|08/01/2022 07:01:25| |slice of life| +|08/01/2022 07:01:26| |YUKARI IS MY SPIRIT ANIMAL| +|08/01/2022 07:01:27| |Too bad the child craves war| +|08/01/2022 07:01:30| |Imagine the gamers manhandling Alice's tiny body.....| +|08/01/2022 07:01:30| |PEKO PEKO| +|08/01/2022 07:01:31| |all wives| +|08/01/2022 07:01:31| SOUL +|08/01/2022 07:01:34| ToT +|08/01/2022 07:01:37| |Sunkus ;_;7| +|08/01/2022 07:01:39| |theyre on a ship still, right?| +|08/01/2022 07:01:40| |COMFY SOL| +|08/01/2022 07:01:40| :D +|08/01/2022 07:01:40| |Still not as bad as when the university girls groomed her| +|08/01/2022 07:01:41| |yummy food| +|08/01/2022 07:01:43| NABESHIKO +|08/01/2022 07:01:43| CUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:01:44| CUTE +|08/01/2022 07:01:45| |rip sunkus| +|08/01/2022 07:01:45| UOHHHHHHHHHHHH +|08/01/2022 07:01:45| CUTE +|08/01/2022 07:01:45| AUTISM +|08/01/2022 07:01:46| |C CUTTTTTTTTTTTTTTTTTTTTTTTEEEEEEEEEEEEEEE| +|08/01/2022 07:01:47| CUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:01:47| UOOOOOOOOHHHHHHH +|08/01/2022 07:01:47| CUTE +|08/01/2022 07:01:48| UOHHHHHHHHHH +|08/01/2022 07:01:49| Autism +|08/01/2022 07:01:49| Haaaaaaa +|08/01/2022 07:01:49| |fucking small town on the ship| +|08/01/2022 07:01:50| |BOKO PJs| +|08/01/2022 07:01:50| >flashbacks +|08/01/2022 07:01:51| CUTE +|08/01/2022 07:01:51| CUUUUUUUUUUUUUUUUUUUUUUUTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 07:01:52| UWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHH +|08/01/2022 07:01:52| UUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:01:52| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:01:53| TOT +|08/01/2022 07:01:53| UOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:01:53| UOOOOOOOOOOOOOOOH +|08/01/2022 07:01:54| |BUNNY BOKO| +|08/01/2022 07:01:54| WOAH +|08/01/2022 07:01:54| CUTE +|08/01/2022 07:01:54| UOOOOOOHHHHHH +|08/01/2022 07:01:54| hnnnnnghh +|08/01/2022 07:01:55| |i know my life would be perfect here, but that rivalry doe| +|08/01/2022 07:01:56| UOOOOOOOOOOOOH +|08/01/2022 07:01:57| |UOOOOOOOOOOOOH 😭| +|08/01/2022 07:01:57| |CUTE CUTE CUTE CUTE| +|08/01/2022 07:01:58| |LETS ALL LOVE ALICE| +|08/01/2022 07:01:58| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:01:59| UOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:01:59| |THIS MESUGAKIIIIII| +|08/01/2022 07:02:01| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +|08/01/2022 07:02:02| |NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI NAKADASHI | +|08/01/2022 07:02:02| CUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:02:03| |I want to impregnate Alice| +|08/01/2022 07:02:04| |I WANT TO C T U ALIS| +|08/01/2022 07:02:04| UOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:02:04| |LETS ALL LOVE ALICE| +|08/01/2022 07:02:05| UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 07:02:06| |Wasn't the french uni girl borederline crazy in the manga?| +|08/01/2022 07:02:07| |boko pjs| +|08/01/2022 07:02:07| kawaiiiiiiii +|08/01/2022 07:02:07| CUTE +|08/01/2022 07:02:07| |ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +|08/01/2022 07:02:08| |KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI KANI | +|08/01/2022 07:02:08| BOKOOOOOOOOOOOOOOOOOO +|08/01/2022 07:02:09| 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 +|08/01/2022 07:02:09| | ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE FEET ALICE F| +|08/01/2022 07:02:10| |Y U K A R I IS MY W I F E| +|08/01/2022 07:02:10| |BASED GRAPE CHAN| +|08/01/2022 07:02:10| >subs +|08/01/2022 07:02:10| CUTE +|08/01/2022 07:02:10| |What a weird fetish]| +|08/01/2022 07:02:11| GANBARE +|08/01/2022 07:02:11| |GANBARE BOKO| +|08/01/2022 07:02:11| BOKO +|08/01/2022 07:02:12| |Miho the cunnysouer| +|08/01/2022 07:02:12| UOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:02:13| cute +|08/01/2022 07:02:13| CUTE +|08/01/2022 07:02:13| BOKO!!! +|08/01/2022 07:02:13| |ganbare boko| +|08/01/2022 07:02:13| |i know where this is going| +|08/01/2022 07:02:14| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:02:15| |IT'S TIME| +|08/01/2022 07:02:15| |GANBARE BOKO| +|08/01/2022 07:02:15| Uooooooooooooooohoohohoohohoohhoho +|08/01/2022 07:02:15| |GANBARE BOKOOOOO| +|08/01/2022 07:02:16| |FUCKING MURDER THEM BOKO| +|08/01/2022 07:02:17| |LETS ALL HIT BOKO| +|08/01/2022 07:02:19| BOKOOOO +|08/01/2022 07:02:20| |ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +|08/01/2022 07:02:21| |Who exactly is the target audience for Boko?| +|08/01/2022 07:02:23| |>ywn watch dumb shit with Miho| +|08/01/2022 07:02:23| |AOMUSHI CANON??| +|08/01/2022 07:02:25| |>All those doujins| +|08/01/2022 07:02:27| |YOU CAN THIS, BOKO| +|08/01/2022 07:02:28| |NO ARISU DON'T DRINK THE TEA IT HAS APHRODISIACS| +|08/01/2022 07:02:28| |canon doujin canon doujin canon doujin canon doujin canon doujin canon doujin | +|08/01/2022 07:02:29| Autists +|08/01/2022 07:02:29| |RIP BOKO| +|08/01/2022 07:02:29| SUBS +|08/01/2022 07:02:30| |THANKS SUBS| +|08/01/2022 07:02:30| |BOKO HARAM| +|08/01/2022 07:02:30| |SLEEPING ARISU EROTIC| +|08/01/2022 07:02:32| |I fear for their future husbands | +|08/01/2022 07:02:33| |GANBARE BOKO| +|08/01/2022 07:02:34| CUTE +|08/01/2022 07:02:34| UOH +|08/01/2022 07:02:35| |UOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHH SSSSSSSSSEEEEEEEEEEEEEEEEGGGGGGGGGGGGGGGGSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS | +|08/01/2022 07:02:35| |Get wrecked Boko!| +|08/01/2022 07:02:35| |Miho and Arisu apparently| +|08/01/2022 07:02:36| |THE DOUJINS WRITE THEMSELVES| +|08/01/2022 07:02:36| SEX? +|08/01/2022 07:02:37| |masochist bitch| +|08/01/2022 07:02:37| |I want to sleep with Miho.....| +|08/01/2022 07:02:38| CUTE +|08/01/2022 07:02:38| |Ganbare Boko!!!| +|08/01/2022 07:02:39| CUTE +|08/01/2022 07:02:39| SUS +|08/01/2022 07:02:40| |DON'T LET MIHO RAPE ARISU| +|08/01/2022 07:02:41| |i never read this doujin| +|08/01/2022 07:02:42| |shiohama doujin so good| +|08/01/2022 07:02:43| |OPERATION PUNCHY| +|08/01/2022 07:02:45| |Mere moments from being Operation Punchy'd| +|08/01/2022 07:02:46| CUTE +|08/01/2022 07:02:46| |I want Arisu to beat me up and call me boko| +|08/01/2022 07:02:46| based +|08/01/2022 07:02:49| |NONSTOP MIHO X ARISU FUTA SEX| +|08/01/2022 07:02:49| ANZU +|08/01/2022 07:02:50| |COMMENCE OPERATION PUNCHY| +|08/01/2022 07:02:53| |boko bitch maker| +|08/01/2022 07:02:53| |ToT | +|08/01/2022 07:02:55| |THE CUTEST| +|08/01/2022 07:02:56| UOOOOOOOOOOOOOH +|08/01/2022 07:02:59| |Wait, I can't friendly fire a teammate | +|08/01/2022 07:03:00| AUTISM +|08/01/2022 07:03:02| >foreshadowing +|08/01/2022 07:03:02| F +|08/01/2022 07:03:02| |OH SHI-| +|08/01/2022 07:03:03| >graduate +|08/01/2022 07:03:04| |oh no| +|08/01/2022 07:03:07| |AH FUCK| +|08/01/2022 07:03:07| EH +|08/01/2022 07:03:08| |Arisu is literally autism| +|08/01/2022 07:03:08| |And so she left | +|08/01/2022 07:03:09| lmao +|08/01/2022 07:03:11| F +|08/01/2022 07:03:11| FORESHADOWING +|08/01/2022 07:03:11| |And yet, she never fights Miho again...| +|08/01/2022 07:03:11| |Oh no| +|08/01/2022 07:03:12| RUINED +|08/01/2022 07:03:13| f +|08/01/2022 07:03:14| Based +|08/01/2022 07:03:15| |SO CLOSE.............| +|08/01/2022 07:03:16| |lmao bye| +|08/01/2022 07:03:18| |>Momo >graduate| +|08/01/2022 07:03:21| |Mission failed: well get em next time| +|08/01/2022 07:03:22| |>foreshadowing this hard| +|08/01/2022 07:03:23| |seriously though| +|08/01/2022 07:03:24| |REMINDER THAT MOMO WILL REPEAT A YEAR| +|08/01/2022 07:03:26| EEEEEEEEEEEEEEH? +|08/01/2022 07:03:27| wwwwwwwwwwwwwwwwwwwwwwww +|08/01/2022 07:03:27| |WOW MOMO FUCK YOU| +|08/01/2022 07:03:27| ED? +|08/01/2022 07:03:28| foreshadowing +|08/01/2022 07:03:30| |MOMO IS CUTE! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 07:03:31| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:31| |ENTER ENTER| +|08/01/2022 07:03:32| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:32| |I'm slain| +|08/01/2022 07:03:33| |wtf momo| +|08/01/2022 07:03:33| ED?!?!?!?! +|08/01/2022 07:03:33| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:34| |MOMO IS A DUMB| +|08/01/2022 07:03:34| |ENTER ENTER| +|08/01/2022 07:03:34| ENTER +|08/01/2022 07:03:35| |ENTAH ENTAH| +|08/01/2022 07:03:35| |LMAO fucking Momo| +|08/01/2022 07:03:36| |Holy shit!| +|08/01/2022 07:03:36| |MOMO RETARD| +|08/01/2022 07:03:37| EEEEEEEEEEEEEEEEEEEEHH +|08/01/2022 07:03:37| |Just wait until she teams up with her sister [spoiler]Mika[/spoiler]| +|08/01/2022 07:03:37| |ENTAH ENTAH| +|08/01/2022 07:03:37| |ENTA ENTA MISSION| +|08/01/2022 07:03:38| Anzu +|08/01/2022 07:03:38| |>ENTER MISSION FOR THE FIRST TIME| +|08/01/2022 07:03:39| ISSHOUKENMEI +|08/01/2022 07:03:39| |Miho status: Entered| +|08/01/2022 07:03:40| |ENTER ENTER MISSION| +|08/01/2022 07:03:41| |Mission status: Entered| +|08/01/2022 07:03:41| |MISSION STATUS:| +|08/01/2022 07:03:42| |HOLY SHIT ITS ENTER ENTER MISSION| +|08/01/2022 07:03:43| |join koromourimine| +|08/01/2022 07:03:44| |IS IT DF1 next??| +|08/01/2022 07:03:44| |FIRST ENTAH ENTAH| +|08/01/2022 07:03:45| |COME ON| +|08/01/2022 07:03:45| |ENTER ENTER MISSION| +|08/01/2022 07:03:45| eeeeeeeeeeeeeeh +|08/01/2022 07:03:47| |I love this ending| +|08/01/2022 07:03:48| |ENTA ENTA MISSION| +|08/01/2022 07:03:49| |Momo fuming. No Shimada fundings| +|08/01/2022 07:03:49| |IN THE END, NOTHING REALLY MATTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTERED| +|08/01/2022 07:03:49| |arisu tonk| +|08/01/2022 07:03:50| |ENTA ENTA| +|08/01/2022 07:03:50| |INTER INTER MISSION| +|08/01/2022 07:03:51| |PRESS B TO BOUNCE | +|08/01/2022 07:03:51| OST +|08/01/2022 07:03:52| |ENTAH ENTAH| +|08/01/2022 07:03:52| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:52| |It's been eight hours!| +|08/01/2022 07:03:53| |ENTER ENTER MISSIOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNN| +|08/01/2022 07:03:53| |ENTER ENTER MISSION| +|08/01/2022 07:03:53| |ENTER ENTER | +|08/01/2022 07:03:53| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:54| |ENTAH ENTAH MISSHUN| +|08/01/2022 07:03:54| |It's 7 am lads, how much more to go?| +|08/01/2022 07:03:55| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:56| |LYRICS ;_;| +|08/01/2022 07:03:56| |enter enter mission| +|08/01/2022 07:03:57| |ENTAH ENTAH MISSIOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOON| +|08/01/2022 07:03:57| |ENTAH ENTAH MISSION| +|08/01/2022 07:03:59| |ISSHOU KENMEI| +|08/01/2022 07:03:59| |BOUNCE VBOUNCE| +|08/01/2022 07:03:59| |entah entah| +|08/01/2022 07:03:59| |ENTAH ENTAH MISSION!!!!| +|08/01/2022 07:04:02| |WIll there be an Inter Inter Mission?| +|08/01/2022 07:04:03| |ENTER ENTER MISSION| +|08/01/2022 07:04:04| KINISHINAI +|08/01/2022 07:04:04| |COME ON| +|08/01/2022 07:04:04| |IS DF1 NEXT???| +|08/01/2022 07:04:05| |CUTE ARISU| +|08/01/2022 07:04:05| |will the french ova be before or after df1? spliced in?| +|08/01/2022 07:04:07| |come on| +|08/01/2022 07:04:08| |>8 hours| +|08/01/2022 07:04:08| |ENTEH ENTEHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 07:04:09| |pissed we didn't see this 12 times| +|08/01/2022 07:04:09| |bam bam bama bam| +|08/01/2022 07:04:09| |*bounce* *bounce*| +|08/01/2022 07:04:09| |MINNA DENE| +|08/01/2022 07:04:10| |ISSHO CAM ON| +|08/01/2022 07:04:12| INTERMISSION? +|08/01/2022 07:04:12| |Cute chibi| +|08/01/2022 07:04:14| HAPPY +|08/01/2022 07:04:17| |8 hours and going strong \o/| +|08/01/2022 07:04:18| riureuiuefiuewfiunduuuu +|08/01/2022 07:04:20| UOOOOOOOOOOOOOOH +|08/01/2022 07:04:22| |GENJITSU NI NARU| +|08/01/2022 07:04:26| cute +|08/01/2022 07:04:26| |>TFW NO ONE BELIVES IN YOU| +|08/01/2022 07:04:29| |ENTAH ENTAH MISSION| +|08/01/2022 07:04:29| |has it really been 8 hours| +|08/01/2022 07:04:30| chib +|08/01/2022 07:04:31| dene +|08/01/2022 07:04:31| |ENTAH ENTAH| +|08/01/2022 07:04:33| |ENTA ENTA MISSION| +|08/01/2022 07:04:33| |ENTER ENTER MISSION| +|08/01/2022 07:04:33| |CUTE AND ADORABLE| +|08/01/2022 07:04:34| |why is she alone| +|08/01/2022 07:04:34| |we should have seen this every episode| +|08/01/2022 07:04:35| ISSHOUKENMEI +|08/01/2022 07:04:36| |WAKE UP ANON| +|08/01/2022 07:04:36| |>As of September 1, 2016, all Circle K Sunkus stores have been rebranded as FamilyMart stores| +|08/01/2022 07:04:37| |BAI NI NARU HAPPI| +|08/01/2022 07:04:39| |IS DF1 NEXT| +|08/01/2022 07:04:40| |INTER INTER MISSION?| +|08/01/2022 07:04:42| |ENTAH ENTAH MISSION| +|08/01/2022 07:04:45| ENTER +|08/01/2022 07:04:46| |Chikara ippai!| +|08/01/2022 07:04:46| |SEX WITH ALICE| +|08/01/2022 07:04:47| |best part| +|08/01/2022 07:04:48| HEIKI +|08/01/2022 07:04:49| |ENTAH ENTAH MISSION| +|08/01/2022 07:04:49| |ENTAA ENTAA MIHO| +|08/01/2022 07:04:51| |ENTAH ENTAH MISSHUN| +|08/01/2022 07:04:52| Bear +|08/01/2022 07:04:52| |ENTAH ENTAH MISSION| +|08/01/2022 07:04:53| |Futa cockskap alice| +|08/01/2022 07:04:54| CUNNY!!! +|08/01/2022 07:04:54| |DF1 should be next| +|08/01/2022 07:04:55| |ZUTTO ISSHO NO MIRAI| +|08/01/2022 07:04:59| |I wonder how many anons will come back for DF3| +|08/01/2022 07:05:01| noooooooo +|08/01/2022 07:05:02| HAPY +|08/01/2022 07:05:03| |THROWING UP BEFORE snw| +|08/01/2022 07:05:05| |after intermission| +|08/01/2022 07:05:05| |CHIKARA IPPAI| +|08/01/2022 07:05:06| whyyyyyyyyyy +|08/01/2022 07:05:08| |>come back I NEVER LEFT| +|08/01/2022 07:05:09| |ENTER INTERMISSION| +|08/01/2022 07:05:10| |FAP BREAK| +|08/01/2022 07:05:14| |eyes growing heavy| +|08/01/2022 07:05:14| nice +|08/01/2022 07:05:17| |good, I need to piss| +|08/01/2022 07:05:18| |INTER INTER MISSION| +|08/01/2022 07:05:19| |shit break| +|08/01/2022 07:05:19| |TIME TO FAP| +|08/01/2022 07:05:20| |INTER INTER MISSION?| +|08/01/2022 07:05:21| |REMEMBER TO POST SEXY MAHOS IN THE THREAD| +|08/01/2022 07:05:21| |INTER INTER MISSION| +|08/01/2022 07:05:22| |intermissions are for PUSSIES| +|08/01/2022 07:05:22| |URINE HOLDERS OUR TIME HAS COME| +|08/01/2022 07:05:23| |pee time| +|08/01/2022 07:05:23| |still strong. ready for sharks| +|08/01/2022 07:05:24| |piss piss piss piss piss piss piss piss | +|08/01/2022 07:05:24| |Time to get more tea and schokacola| +|08/01/2022 07:05:25| |10 minutes to take a shit lets gooooooooo| +|08/01/2022 07:05:26| |TIME FOR POO POO| +|08/01/2022 07:05:26| |IM thirsty >:)| +|08/01/2022 07:05:30| |I'm almost out of it bros| +|08/01/2022 07:05:31| |DF1 next?| +|08/01/2022 07:05:33| |see u later fags| +|08/01/2022 07:05:35| |TIME TO FAP TO ARISU| +|08/01/2022 07:05:36| |i know 1/2 of you are gonna watch the alice x miho futa porn| +|08/01/2022 07:05:38| |Frog OVA | +|08/01/2022 07:05:39| |POO POO TIME| +|08/01/2022 07:05:41| |fuck i don't want to go to work tomorrow morning| +|08/01/2022 07:05:43| |Yes, DF1 now| +|08/01/2022 07:05:44| |Anyone got any good fap material| +|08/01/2022 07:05:45| |Of course| +|08/01/2022 07:05:47| |ENTER INTER MISSION HAYAKU| +|08/01/2022 07:05:49| |Nice. gonna go Masturbate to Miho's Mom| +|08/01/2022 07:05:52| |Just search aomushi on panda| +|08/01/2022 07:05:52| |I have slept from episode Anzu to the beginning of der Film, I am ashamed| +|08/01/2022 07:05:55| |FUTA MIHO| +|08/01/2022 07:05:56| |>being a wageslave| +|08/01/2022 07:05:58| |Wish benantoka did a gup doujin| +|08/01/2022 07:05:59| |F FOR THE ANONS WHO DIDNT MAKE IT| +|08/01/2022 07:06:02| |Just watch this on the toilet. Don't need to run to the bathroom if you already in there| +|08/01/2022 07:06:04| |>2 am, still 3 hours worth of GuP, work at 10 am| +|08/01/2022 07:06:06| F +|08/01/2022 07:06:06| |I WANT MOMMY MILKIES| +|08/01/2022 07:06:07| F +|08/01/2022 07:06:08| |>waging on a saturday| +|08/01/2022 07:06:08| |WHERE IS THE MUSIC| +|08/01/2022 07:06:09| |futa best invention since sliced bread| +|08/01/2022 07:06:12| |but benantoka did a gup doujin?| +|08/01/2022 07:06:12| |10pm here| +|08/01/2022 07:06:20| |>it's fucking 7am here| +|08/01/2022 07:06:22| |1:00 here| +|08/01/2022 07:06:25| |midnight bros where we at| +|08/01/2022 07:06:27| |sound off /a/nons. how many of us are left| +|08/01/2022 07:06:28| |MY WIFE ERIKA| +|08/01/2022 07:06:29| |AUF DAST HEIST| +|08/01/2022 07:06:30| ERIKAAAAAA +|08/01/2022 07:06:30| ERIKA +|08/01/2022 07:06:31| |UND DAS HIEST| +|08/01/2022 07:06:32| |t e x a n| +|08/01/2022 07:06:32| |UND DAS HEIIST| +|08/01/2022 07:06:34| EEEEEEEEEEEEEERIKA +|08/01/2022 07:06:35| ERIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:06:35| |SIEG HEIL o/| +|08/01/2022 07:06:36| ERIKA +|08/01/2022 07:06:36| |god fucking dammit its 7am| +|08/01/2022 07:06:39| EEEEEERRIKAAAA +|08/01/2022 07:06:39| |Been here since an hour before start \o/| +|08/01/2022 07:06:39| |UND DAS HEISST| +|08/01/2022 07:06:40| EEEEEERIKKAAAA +|08/01/2022 07:06:40| |>wake up for snw| +|08/01/2022 07:06:40| |Glad I was able to get off early enough to catch most of the movie and finale| +|08/01/2022 07:06:40| |still here going strong, KANPAI| +|08/01/2022 07:06:42| ERIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:06:42| ERIKKKA +|08/01/2022 07:06:43| |AZ 11pm| +|08/01/2022 07:06:44| 5PM +|08/01/2022 07:06:45| EEEEEEEEEERIKA +|08/01/2022 07:06:45| |SIEGU HEIL| +|08/01/2022 07:06:45| |dreaming of Alice in the Boko pjs| +|08/01/2022 07:06:46| |Erika is ugly and lesbian| +|08/01/2022 07:06:46| |BON BONK| +|08/01/2022 07:06:46| |wani song| +|08/01/2022 07:06:49| ERIIIIIIIIIIIIIIIIIIIIIIIIIIIKA +|08/01/2022 07:06:49| ERIKA +|08/01/2022 07:06:50| ERIKA +|08/01/2022 07:06:50| |ERIKA IS DUMB AND UGLY| +|08/01/2022 07:06:51| |卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +|08/01/2022 07:06:51| EEEEEEEEEEERIKA +|08/01/2022 07:06:52| |BUM BUM BUM | +|08/01/2022 07:06:52| ERIKKKKKKAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:06:53| |UND DAS HEIST| +|08/01/2022 07:06:56| |o/ o/ o/| +|08/01/2022 07:06:56| |10PM PST| +|08/01/2022 07:06:57| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERRRRRRRRIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKKKKKKKKKKKKKKKKKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:06:58| 卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐卐 +|08/01/2022 07:06:59| 88 +|08/01/2022 07:07:04| 06:05 +|08/01/2022 07:07:04| |卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +|08/01/2022 07:07:05| |\o \o \o| +|08/01/2022 07:07:05| |>ywn see maho singing this - hurts just a little| +|08/01/2022 07:07:06| EEEEEEEEEEEEEEEERIKA +|08/01/2022 07:07:06| !14 +|08/01/2022 07:07:06| |UND DAS HEIST| +|08/01/2022 07:07:06| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 07:07:07| |SIEG | +|08/01/2022 07:07:07| |Working on a saturday lmao| +|08/01/2022 07:07:07| |UND DAS HEISST| +|08/01/2022 07:07:15| |1488 PANZER WAR NOW| +|08/01/2022 07:07:16| |HEIL MAHO| +|08/01/2022 07:07:16| |UND DAS HEISST| +|08/01/2022 07:07:16| \O\O\O +|08/01/2022 07:07:17| |timezones anon| +|08/01/2022 07:07:18| 88 +|08/01/2022 07:07:22| |BUM BUM BUM| +|08/01/2022 07:07:25| |KUROMORIMINE UBER ALLES| +|08/01/2022 07:07:29| o/ +|08/01/2022 07:07:29| |卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +|08/01/2022 07:07:30| |GAS THE SLAGS, SENSHA WAR NOW| +|08/01/2022 07:07:31| |katyusha got one but erika didn't--COMMIES ALWAYS WIN| +|08/01/2022 07:07:31| EEERIKA +|08/01/2022 07:07:32| o/ +|08/01/2022 07:07:33| |dun dun dun| +|08/01/2022 07:07:40| |If Erika was tanned, you could just slap her with the auto club. I think she got a driver license already.| +|08/01/2022 07:07:43| |卐 UND DAS HEIßT ERIIIIIKAAAAAAAAA 卐| +|08/01/2022 07:08:02| |if erika was tanned she wouldn't be aryan| +|08/01/2022 07:08:03| |HEIL TO THE NISHIZUMIS| +|08/01/2022 07:08:08| |HEIL DEUTSCHLAND| +|08/01/2022 07:08:09| |o/ o/ o/| +|08/01/2022 07:08:23| |TOTALEN KRIEG | +|08/01/2022 07:08:25| |PANZER PANZER PANZER PANZER PANZER PANZER | +|08/01/2022 07:08:27| GESICHTER +|08/01/2022 07:08:29| |More pizza!| +|08/01/2022 07:08:31| JA! +|08/01/2022 07:08:31| 8 +|08/01/2022 07:08:32| |PANZER VOR| +|08/01/2022 07:08:38| |JAWOHL | +|08/01/2022 07:08:46| |goodnight bros. best of luck surviving the rest of the night o7| +|08/01/2022 07:08:47| LOUDER!! +|08/01/2022 07:09:08| |Europe, sound off!| +|08/01/2022 07:09:22| |there are some good duce spam caps in the thread| +|08/01/2022 07:09:25| |They need more shots of Duce behinds. At least flaunt what she has.| +|08/01/2022 07:09:27| |o/ o/ o/ o/ o/| +|08/01/2022 07:09:33| |ES BRUAST UNSER PANZER| +|08/01/2022 07:09:49| :-) +|08/01/2022 07:09:50| fuggg +|08/01/2022 07:10:19| |maho is my wife| +|08/01/2022 07:10:30| >br*t +|08/01/2022 07:10:35| |i want to sleep with mako| +|08/01/2022 07:10:36| |REMEMBER LADS| +|08/01/2022 07:10:39| |fucking slags| +|08/01/2022 07:10:42| ???????????????????????????????????? +|08/01/2022 07:10:44| |me too| +|08/01/2022 07:10:50| |I'm gonna throw up, who with me?| +|08/01/2022 07:10:52| |REMEMBER WHAT?| +|08/01/2022 07:10:54| |MY WIFE, ROSEHIP| +|08/01/2022 07:11:17| |imagine being a br*t, can't be me| +|08/01/2022 07:11:22| |Is having Shiho as your mother in law that worth it?| +|08/01/2022 07:11:26| |Nekonyaa ~| +|08/01/2022 07:11:45| |Shiho mother in law would be worth it for maho wife| +|08/01/2022 07:11:47| A*glos +|08/01/2022 07:12:06| sex? +|08/01/2022 07:12:10| Drugs? +|08/01/2022 07:12:11| ? +|08/01/2022 07:12:14| |i'm gonna say it| +|08/01/2022 07:12:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 07:12:17| |Based America music| +|08/01/2022 07:12:18| |Best track| +|08/01/2022 07:12:21| |Rocke and Roll?| +|08/01/2022 07:12:21| |USA USA USA USA| +|08/01/2022 07:12:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 07:12:27| |Rock and Roll| +|08/01/2022 07:12:28| |Where is Anzu| +|08/01/2022 07:12:39| |Burger land| +|08/01/2022 07:12:42| |*crack* Yeeeep they just don't make OSTs like they used to| +|08/01/2022 07:12:49| BORGAR +|08/01/2022 07:12:50| |Alisa’s mental breakdown theme song| +|08/01/2022 07:12:58| |gup came out in like 2012| +|08/01/2022 07:12:59| |who is your favorite character added after the show? mine is rosehip or mika| +|08/01/2022 07:13:02| |fuck alisa honestly| +|08/01/2022 07:13:05| |Then again, Shiho sounds safer as a mother in law than Chiyo.| +|08/01/2022 07:13:17| |shiho a psycho| +|08/01/2022 07:13:17| |POLYUSKA POYLE| +|08/01/2022 07:13:22| |CYKA BLYAT| +|08/01/2022 07:13:30| |anooo cheeki breeki iv danke| +|08/01/2022 07:13:31| URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 07:13:34| BLYAT +|08/01/2022 07:13:40| Хорошо +|08/01/2022 07:13:41| ypa +|08/01/2022 07:13:47| |You're more likely to get disowned by Shiho than survive a questioning by Chiyo| +|08/01/2022 07:13:54| |URA URA URA URA URA URA URA URA URA URA URA| +|08/01/2022 07:13:54| |have we skipped over some ovas?| +|08/01/2022 07:13:56| pantsu +|08/01/2022 07:14:03| |Shiho can't disown you if you're not her child| +|08/01/2022 07:14:15| |fuck commies| +|08/01/2022 07:14:15| |Get out of here stalker| +|08/01/2022 07:14:16| |adopts you just to disown you| +|08/01/2022 07:14:21| |If you married her child, you're family already| +|08/01/2022 07:14:25| |where do we send you bandwidth| +|08/01/2022 07:14:42| |JUST DOWNLOAD MORE BANDWITH YOU RETARDS| +|08/01/2022 07:14:46| |Моя красивая женщина Нонна| +|08/01/2022 07:14:46| |what if you marry miho? who is already disowned| +|08/01/2022 07:14:50| |prep the dvce spam| +|08/01/2022 07:14:58| |miho cannot percieve guys| +|08/01/2022 07:15:06| |I don't give a shit about momo getting into uni| +|08/01/2022 07:15:06| |wait what| +|08/01/2022 07:15:07| fair +|08/01/2022 07:15:07| |here we go| +|08/01/2022 07:15:14| |Lets finish this strong| +|08/01/2022 07:15:15| LATE +|08/01/2022 07:15:24| |SOON TM| +|08/01/2022 07:15:27| |ANON stop jerking off stream is starting soon| +|08/01/2022 07:15:28| 5 +|08/01/2022 07:15:33| |I am now remembering how boring the first half of df1 is| +|08/01/2022 07:15:41| |a-a-an an | +|08/01/2022 07:15:44| |certified retard| +|08/01/2022 07:15:45| |AA AA AAN| +|08/01/2022 07:15:46| sex +|08/01/2022 07:15:46| |I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 07:15:50| |sex voice| +|08/01/2022 07:15:52| |AHN AHN AHN| +|08/01/2022 07:15:53| |the song| +|08/01/2022 07:15:55| |AA AA AAN| +|08/01/2022 07:15:55| |ang dance ova when?| +|08/01/2022 07:15:56| |ahn ahn ahn| +|08/01/2022 07:15:57| |based christ is king anon| +|08/01/2022 07:15:59| |YUURA YUURA| +|08/01/2022 07:16:00| |now she can't get married| +|08/01/2022 07:16:04| |ANG ANG| +|08/01/2022 07:16:06| |Do the dance miho| +|08/01/2022 07:16:16| |the no cock song| +|08/01/2022 07:16:17| ASORE +|08/01/2022 07:16:19| |should have shown the anglerfish ova during intermission| +|08/01/2022 07:16:22| |i will sacrifice myself and marry miho| +|08/01/2022 07:16:23| |AN AN AN| +|08/01/2022 07:16:28| |sexy miho dancing| +|08/01/2022 07:16:29| ASORE +|08/01/2022 07:16:31| ASORE +|08/01/2022 07:16:31| Asore +|08/01/2022 07:16:31| |I'm getting old. I can't read any of these messages anymore| +|08/01/2022 07:16:34| |AA SORE| +|08/01/2022 07:16:43| |i want to go home| +|08/01/2022 07:16:47| |Anko song becomes better when you realize there's nothing else behind that skinsuit| +|08/01/2022 07:16:50| |aieaieaie sore| +|08/01/2022 07:16:51| IYAIYAIYA +|08/01/2022 07:16:54| ASORE +|08/01/2022 07:16:59| |I couldn't read them either until I switched to mpv and slowed it way down| +|08/01/2022 07:17:00| |and anzu's is still loose| +|08/01/2022 07:17:03| |i miss my bed| +|08/01/2022 07:17:05| |finale when| +|08/01/2022 07:17:11| SOON +|08/01/2022 07:17:12| |ITS TIME BOIS| +|08/01/2022 07:17:14| |SHOW TIME!!| +|08/01/2022 07:17:14| |LETS GOOOOO| +|08/01/2022 07:17:15| |what time is it for you euro anons?| +|08/01/2022 07:17:15| |‘Ere we go| +|08/01/2022 07:17:16| ASORE +|08/01/2022 07:17:16| NOW +|08/01/2022 07:17:17| |we proud| +|08/01/2022 07:17:18| |WE ARE PROUD OF THE TRUE YOUTH STORIES| +|08/01/2022 07:17:21| |OH SHITTT| +|08/01/2022 07:17:23| :D +|08/01/2022 07:17:23| |2:15 am GANG| +|08/01/2022 07:17:23| 7am +|08/01/2022 07:17:27| |WE BACKKK| +|08/01/2022 07:17:28| |Too bad the judges will never wear the anko suits| +|08/01/2022 07:17:28| SHOOT +|08/01/2022 07:17:28| |this song is kino| +|08/01/2022 07:17:28| |This intro is so fucking good| +|08/01/2022 07:17:30| |GLORIOUS DAYS!!| +|08/01/2022 07:17:32| |ESTBROS REPORT IN| +|08/01/2022 07:17:32| |DF > Film| +|08/01/2022 07:17:33| |im only 1:15| +|08/01/2022 07:17:35| |10 pm gang| +|08/01/2022 07:17:36| |7:15 AM| +|08/01/2022 07:17:36| |LETS FUCKING GOOOOO| +|08/01/2022 07:17:36| |CENTRAL TIMEZONE GANG| +|08/01/2022 07:17:39| |UK reporting in| +|08/01/2022 07:17:40| |AHAHAHAHAHA LAUGHING AT AMERILARDS ITS 17:15 IN AUS| +|08/01/2022 07:17:41| |EST LET'S GO| +|08/01/2022 07:17:41| |I AM SO TIRED, WHO ELSE IS TIRED?| +|08/01/2022 07:17:41| |AWESOME INTRO| +|08/01/2022 07:17:41| |we full anime now| +|08/01/2022 07:17:42| | FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FRO| +|08/01/2022 07:17:43| |EST CHADS HERE| +|08/01/2022 07:17:44| |westcoas gang| +|08/01/2022 07:17:44| |7.15 here too| +|08/01/2022 07:17:46| 11pm +|08/01/2022 07:17:46| BOKO +|08/01/2022 07:17:50| TAEKO +|08/01/2022 07:17:50| |12am GANG LETS GOOOOO| +|08/01/2022 07:17:50| |6am clique| +|08/01/2022 07:17:51| |SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS SEX WITH FROGS | +|08/01/2022 07:17:52| | FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +|08/01/2022 07:17:52| |those glorious days :_:| +|08/01/2022 07:17:52| |est represent| +|08/01/2022 07:17:53| |MAGGOT CHEESE| +|08/01/2022 07:17:54| |/10pm/ here| +|08/01/2022 07:17:54| shooot +|08/01/2022 07:17:56| |and in 13 hours I need to be ready for the other stream| +|08/01/2022 07:17:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:17:59| >buffering +|08/01/2022 07:17:59| |1AM EST| +|08/01/2022 07:18:03| |ANDOU SEXXXXXXXXXXUUUUUUOOOOOOOOOOHHHHHHHHHHHHHHH| +|08/01/2022 07:18:04| |DUCE DUCE DUCE| +|08/01/2022 07:18:04| |1215am fag here| +|08/01/2022 07:18:08| |BUFFERING GANG GANG GANG GANG| +|08/01/2022 07:18:08| |what other stream>| +|08/01/2022 07:18:10| |stupid europoors| +|08/01/2022 07:18:14| | FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS FROGS | +|08/01/2022 07:18:16| |8am reporting in, please kill me| +|08/01/2022 07:18:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:18:16| |RAPE SODOKOCLONES| +|08/01/2022 07:18:16| |OOOARAI DORIFUTO| +|08/01/2022 07:18:18| |ooh right, first episode introduce pirate team| +|08/01/2022 07:18:19| |the sora no woto stream| +|08/01/2022 07:18:19| |Its literally going to be dawn when this finishes for me| +|08/01/2022 07:18:23| |>not planning your new year's sleep schedule entirely around the streams| +|08/01/2022 07:18:24| |find it on /a/| +|08/01/2022 07:18:26| |FROGS ONIONS| +|08/01/2022 07:18:33| |IMAGINE NOT BEING A CENTRAL AMERICAN AND ENJOYING THE BENIFITS OF 12AM DRINKING| +|08/01/2022 07:18:33| |this song gives me energy to stay up longer| +|08/01/2022 07:18:34| DORIFUTO! +|08/01/2022 07:18:38| |WHEN THE SUN GOES DOWN| +|08/01/2022 07:18:40| |fucking momo| +|08/01/2022 07:18:42| |i want to sexually fuck momo| +|08/01/2022 07:18:42| |OH BOY THE MOMO IS A MORON OVAS| +|08/01/2022 07:18:42| |MOMO A SHIT| +|08/01/2022 07:18:44| |WHO ONION GANG HERE???| +|08/01/2022 07:18:45| |I hate the sharks| +|08/01/2022 07:18:45| |not today, old friend| +|08/01/2022 07:18:45| |I love the onion fried iin oil| +|08/01/2022 07:18:45| |this bufferring| +|08/01/2022 07:18:47| |>fucking momo| +|08/01/2022 07:18:47| ;_;7 +|08/01/2022 07:18:48| BUFFER +|08/01/2022 07:18:49| |we proud| +|08/01/2022 07:18:52| DORIFTO +|08/01/2022 07:18:53| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 07:18:54| o7 +|08/01/2022 07:18:54| |Leopon drifting!| +|08/01/2022 07:18:57| |hahahaha dumb wani| +|08/01/2022 07:18:57| Dog +|08/01/2022 07:18:59| UOOOH +|08/01/2022 07:19:00| |loser sitting by herself| +|08/01/2022 07:19:00| |fucking loser sits all alone| +|08/01/2022 07:19:00| |pls stop buffering| +|08/01/2022 07:19:00| |Erika alone lol| +|08/01/2022 07:19:00| |>YOU JUST KNOW| +|08/01/2022 07:19:01| ERIKA +|08/01/2022 07:19:01| |Erika suffers Maho withdrawal| +|08/01/2022 07:19:02| |useless wani| +|08/01/2022 07:19:02| WANI +|08/01/2022 07:19:03| DAYS +|08/01/2022 07:19:03| ERIKA +|08/01/2022 07:19:04| dog +|08/01/2022 07:19:09| |how many years until leopon drift ;_;| +|08/01/2022 07:19:09| DESU +|08/01/2022 07:19:12| |CUTE GOLIATH| +|08/01/2022 07:19:12| war +|08/01/2022 07:19:14| |panzer drones| +|08/01/2022 07:19:15| |war never changes| +|08/01/2022 07:19:16| DAIIIIIIZZZZZ +|08/01/2022 07:19:16| |I am also suffering maho withdrawal| +|08/01/2022 07:19:17| |tank police| +|08/01/2022 07:19:18| |the original suicide drone| +|08/01/2022 07:19:19| daaaaaaaaaaaaaaaayyyyys +|08/01/2022 07:19:19| |Goliath a cute| +|08/01/2022 07:19:23| |We USA now| +|08/01/2022 07:19:25| |>Making columbine look like a joke| +|08/01/2022 07:19:25| |Erika took some tips from Johnny for her poses| +|08/01/2022 07:19:28| |man this scene was so odd| +|08/01/2022 07:19:35| |here's your screenshot bro| +|08/01/2022 07:19:36| yata! +|08/01/2022 07:19:41| |DUMB RETARD MOMO| +|08/01/2022 07:19:41| beepbeep +|08/01/2022 07:19:44| |>saki just autisting as usual| +|08/01/2022 07:19:45| |is this DF1?| +|08/01/2022 07:19:46| |Momo is a fucking retarded hoe| +|08/01/2022 07:19:46| |feel free to screenshot| +|08/01/2022 07:19:47| |Baka Momo| +|08/01/2022 07:19:47| |MOMO CANCELLED| +|08/01/2022 07:19:48| |EXTREME RETARD| +|08/01/2022 07:19:48| RETARD +|08/01/2022 07:19:48| Lmao +|08/01/2022 07:19:49| |fuck you momo| +|08/01/2022 07:19:50| |MOMO CONFIRMED RETARDED| +|08/01/2022 07:19:50| |GET A FUCKING GRIP ON YOUR GRADES MOMO HOLY SHIT YOU SHOULDNT BE DOING THIS RN| +|08/01/2022 07:19:50| |MOMO IS SO DUMB| +|08/01/2022 07:19:53| |LOW IQ| +|08/01/2022 07:19:54| GOUGAI! +|08/01/2022 07:19:54| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 07:19:54| RETARD +|08/01/2022 07:19:54| |Momo dum| +|08/01/2022 07:19:55| RETARD +|08/01/2022 07:19:55| |RETARD ALERT| +|08/01/2022 07:19:56| |>first indignity| +|08/01/2022 07:19:57| |RETARD ALERT GIRLS| +|08/01/2022 07:19:58| |SUPER RETARD| +|08/01/2022 07:19:58| >momo +|08/01/2022 07:19:58| |TWITTER DID THIS| +|08/01/2022 07:20:00| CONFIRMED +|08/01/2022 07:20:02| NORIKO<3 +|08/01/2022 07:20:03| |TARD TARD TARD| +|08/01/2022 07:20:03| |Momo forgets she's not in a submarine| +|08/01/2022 07:20:03| |>Momo is actually and really retarded| +|08/01/2022 07:20:04| |MOMO DUMB PUBLISHIZED| +|08/01/2022 07:20:04| |>looking for tanks instead of studying| +|08/01/2022 07:20:04| |FOR SHAME MOMO| +|08/01/2022 07:20:05| |Sasuga Momo| +|08/01/2022 07:20:05| |FUCK MOMO SUPPORTERS| +|08/01/2022 07:20:06| |dumbass momo | +|08/01/2022 07:20:06| |>momo so retarded it makes local news| +|08/01/2022 07:20:10| KEK +|08/01/2022 07:20:10| |Dumb hoe deserves to be held back| +|08/01/2022 07:20:12| |MOMO KUSO...| +|08/01/2022 07:20:12| |FAKE NEWS| +|08/01/2022 07:20:13| |>THE ABSOLUTE STATE OF MOMO| +|08/01/2022 07:20:14| |SHAMEFUR DISPRAY| +|08/01/2022 07:20:14| |OH NO, SHES RETARDED!| +|08/01/2022 07:20:14| :D +|08/01/2022 07:20:15| |Tard wrangling arc| +|08/01/2022 07:20:17| Anzu +|08/01/2022 07:20:17| |NEXT LEVEL AUTISM| +|08/01/2022 07:20:18| |Why do they have an antique television store?| +|08/01/2022 07:20:20| |Baka Moho| +|08/01/2022 07:20:20| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 07:20:21| |MOMO SHOULD JUST DROP OUT| +|08/01/2022 07:20:21| |MOMO IS A MORON| +|08/01/2022 07:20:23| |Aight it's 8am goodbye anons| +|08/01/2022 07:20:23| |>can’t even pass high school| +|08/01/2022 07:20:25| |She looks smart, but is actually dumb| +|08/01/2022 07:20:27| |Damn I actually feel bad for Momo| +|08/01/2022 07:20:27| |I DON'T FUCKING CARE ABOUT MOMO| +|08/01/2022 07:20:28| |why do they care about her| +|08/01/2022 07:20:28| |even dumber plot than school shutdown 2 arc| +|08/01/2022 07:20:29| |No hope for Momo. Press F for respect| +|08/01/2022 07:20:33| |goodnight anon| +|08/01/2022 07:20:33| |dumb hoe moment| +|08/01/2022 07:20:37| F +|08/01/2022 07:20:40| |why tf is smart in gup besides mako| +|08/01/2022 07:20:41| |LEAVE MOMO ALONE!!!| +|08/01/2022 07:20:41| |still find it weird yukari became vice pres| +|08/01/2022 07:20:42| |GANBARE MOMO-CHAN| +|08/01/2022 07:20:43| |momo? more like. Fucking retard| +|08/01/2022 07:20:45| |>guppies moving up in the world| +|08/01/2022 07:20:46| |VICE PREZ YUKARI IS MY GF| +|08/01/2022 07:20:47| |i think momo sucks| +|08/01/2022 07:20:49| |sasuga momo-san| +|08/01/2022 07:20:50| |PRESIDENT ISUZU| +|08/01/2022 07:20:51| |MOMO RETARD| +|08/01/2022 07:20:51| |>student council member is retarded| +|08/01/2022 07:20:53| |YUKARI FOR PRESIDENT| +|08/01/2022 07:20:57| |momo sucking is fact| +|08/01/2022 07:20:57| "yet" +|08/01/2022 07:21:08| |momo the mental homo, heh| +|08/01/2022 07:21:08| |natto is delicious| +|08/01/2022 07:21:08| |Momo a retard| +|08/01/2022 07:21:12| |Who the heck would want to visit a Nattou academy?| +|08/01/2022 07:21:12| |BREAKING NEWS: LOCAL GIRL RETARDED| +|08/01/2022 07:21:13| RONIN +|08/01/2022 07:21:14| |>FOR THE MEMORY| +|08/01/2022 07:21:18| |Azusa can be not retarded when needed| +|08/01/2022 07:21:20| |STATISTALLLY, MOMO IS VERY FUCKABLE| +|08/01/2022 07:21:20| Yukari... +|08/01/2022 07:21:20| |erika is best girl| +|08/01/2022 07:21:22| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 07:21:23| |Momo off to the special ed home| +|08/01/2022 07:21:24| |Is it rumor if Momo really stays back for being dumb?| +|08/01/2022 07:21:28| |TOO RETARDED FOR UNI| +|08/01/2022 07:21:34| |MOMO IS A HARDWORKING GIRL| +|08/01/2022 07:21:39| |momo will have to be put down...| +|08/01/2022 07:21:40| |momo made them do another fucking tournament we could have had something different if she wasn't dumb| +|08/01/2022 07:21:40| |christ its already bright outside| +|08/01/2022 07:21:40| |cute yukari| +|08/01/2022 07:21:43| |MOMO IS A GOOD GIRL| +|08/01/2022 07:21:43| |I NEED YOU| +|08/01/2022 07:21:44| |Not autistic enough for uni| +|08/01/2022 07:21:45| |momo stupid| +|08/01/2022 07:21:48| |It’s okay momo you only need to make babies| +|08/01/2022 07:21:51| |momo does not have the mental capacity for basic education| +|08/01/2022 07:21:53| |Hardworking doesn't equal passing grade though| +|08/01/2022 07:21:54| |MOMO IS A CUTE HARDWORKING GIRL!| +|08/01/2022 07:21:56| |She needs to build a reputation based on lies| +|08/01/2022 07:21:56| |Yukari, Patton went to West Point he was smarter than Momo| +|08/01/2022 07:22:02| |momo should just marry| +|08/01/2022 07:22:02| |momo is a senpai???| +|08/01/2022 07:22:09| |momo can marry me| +|08/01/2022 07:22:11| |SORE DA| +|08/01/2022 07:22:16| |TRACKSUIT TAEKO| +|08/01/2022 07:22:17| |Momo can marry me| +|08/01/2022 07:22:17| |sORE DA| +|08/01/2022 07:22:17| |AD EROS| +|08/01/2022 07:22:18| |sore da| +|08/01/2022 07:22:20| |SORE DA| +|08/01/2022 07:22:22| |Hoshino must be cold in that shirt| +|08/01/2022 07:22:24| |SORE DA| +|08/01/2022 07:22:28| |momo is shit| +|08/01/2022 07:22:30| |why tf do they do that| +|08/01/2022 07:22:30| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 07:22:30| |Ducks have the best winter down| +|08/01/2022 07:22:31| |I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HAT| +|08/01/2022 07:22:35| |SORE DA| +|08/01/2022 07:22:35| |RIP MOMO RIP MOMO | +|08/01/2022 07:22:37| |does momo have the mental capability to consent?| +|08/01/2022 07:22:41| |momo loves big black cocks| +|08/01/2022 07:22:41| |AY OH| +|08/01/2022 07:22:42| |>perfect attendance and still this retarded| +|08/01/2022 07:22:42| |MOMO IS GREAT STOP BEING A FAG| +|08/01/2022 07:22:44| |A O| +|08/01/2022 07:22:44| no +|08/01/2022 07:22:45| NARUHODO +|08/01/2022 07:22:47| |please do not bully momo| +|08/01/2022 07:22:48| OH +|08/01/2022 07:22:48| |A O| +|08/01/2022 07:22:49| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 07:22:50| |is DF "Seamless" as well?| +|08/01/2022 07:22:50| |A O| +|08/01/2022 07:22:51| |all problems can be solved with senshadou| +|08/01/2022 07:22:51| |A O| +|08/01/2022 07:22:55| |MOMO SUCKS AND NOT IN A GOOD WAY| +|08/01/2022 07:22:56| |FUCK I MISSED THE WHOLE LAST HALF OF THE MOVIE| +|08/01/2022 07:22:57| |This video is hosted at www.xvideos.com| +|08/01/2022 07:22:57| |A A O| +|08/01/2022 07:23:03| |AO ToT| +|08/01/2022 07:23:03| |momo is a good girl and needs sex NOW| +|08/01/2022 07:23:04| |stupid ass momo should just marry me| +|08/01/2022 07:23:06| """commander""" +|08/01/2022 07:23:07| |Perfect attendance can't help exams though| +|08/01/2022 07:23:07| MEGUMIN?! +|08/01/2022 07:23:07| |>school closure, school closure, getting momo into uni| +|08/01/2022 07:23:08| |MOMO SUCKS AND NOT MY DICK WHICH IS A PROBLEM| +|08/01/2022 07:23:08| |thank you xvideos.com, very cool| +|08/01/2022 07:23:10| |Plumage. That’s the word I was lookin* for. | +|08/01/2022 07:23:11| |/a/ /o/| +|08/01/2022 07:23:14| |RAPE CORRECTION| +|08/01/2022 07:23:18| |A A O| +|08/01/2022 07:23:20| |A A O| +|08/01/2022 07:23:20| CORRUPTION +|08/01/2022 07:23:22| |i give up arguing with momo tards| +|08/01/2022 07:23:24| |>Lolis screaming about AO| +|08/01/2022 07:23:25| |EY EY OH| +|08/01/2022 07:23:26| CARRY +|08/01/2022 07:23:28| |/a/ /a/ /o/| +|08/01/2022 07:23:29| |AAAO ToT| +|08/01/2022 07:23:29| |EVERYONE LOVES MOMO!!!! YOU GUYS SHOULD TOO!| +|08/01/2022 07:23:29| |we were arguing?| +|08/01/2022 07:23:30| |Is everyone in Ooarai retarded or something| +|08/01/2022 07:23:32| |even mako questioning this shit| +|08/01/2022 07:23:32| |THE BIDEN OF COMMANDERS| +|08/01/2022 07:23:37| |>scamming uni admissions series| +|08/01/2022 07:23:38| |we already lost hope| +|08/01/2022 07:23:40| |But how will they possibly defeat the FINNS?| +|08/01/2022 07:23:42| |>Momo puppet state| +|08/01/2022 07:23:43| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 07:23:44| |now this was a bullshit reason for giving them plot armor| +|08/01/2022 07:23:46| |yes, everyone in Ooarai is retarded besides Sex| +|08/01/2022 07:23:47| |the biden of commanders LOL| +|08/01/2022 07:23:47| |GOD MIHO IS SUCH A FUCKING DORK| +|08/01/2022 07:23:51| |To prevent momo from being held back we need some form of correction| +|08/01/2022 07:23:52| |MOMO DUMB| +|08/01/2022 07:23:53| |SEETHING MOMO| +|08/01/2022 07:23:55| |NO REPEATING| +|08/01/2022 07:23:55| |>scamming uni admin THIS| +|08/01/2022 07:23:57| |just say they gotta defend their honor or some shit| +|08/01/2022 07:23:58| |i'd puppet momo| +|08/01/2022 07:23:59| |NO REPEATING| +|08/01/2022 07:23:59| |Miho a cute| +|08/01/2022 07:24:02| |NO REPEATING| +|08/01/2022 07:24:03| |MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! MOMO CUTE! | +|08/01/2022 07:24:03| |just let her fail the dumbass| +|08/01/2022 07:24:03| SOSH +|08/01/2022 07:24:05| |No losses at all? Big dreams gamer club.| +|08/01/2022 07:24:09| |留年 阻止| +|08/01/2022 07:24:10| |Pupper Commander| +|08/01/2022 07:24:14| |Cope,seethe even, repeate a smester if you will| +|08/01/2022 07:24:18| |and remember: no repeats| +|08/01/2022 07:24:19| SOX!! +|08/01/2022 07:24:19| |Mark IV| +|08/01/2022 07:24:20| |TIME FOR PIRACY| +|08/01/2022 07:24:22| |holy fuck just get in the tanks already| +|08/01/2022 07:24:25| |>below deck| +|08/01/2022 07:24:26| |>Having to cheat to get into uni| +|08/01/2022 07:24:27| |What would be so bad about a job without university exam?| +|08/01/2022 07:24:27| YARR +|08/01/2022 07:24:28| |S ◯ X| +|08/01/2022 07:24:28| |YAR HAR| +|08/01/2022 07:24:30| |DO NOT FUCK THE TANKS| +|08/01/2022 07:24:30| |sodoko sodomy incoming| +|08/01/2022 07:24:32| |omg guys this is illegal how could we| +|08/01/2022 07:24:33| |Ya that fiddle-y dee| +|08/01/2022 07:24:33| |when boat staff only ova| +|08/01/2022 07:24:34| |HERE BE NIGGERS| +|08/01/2022 07:24:36| |RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +|08/01/2022 07:24:37| KONNICHIWA +|08/01/2022 07:24:42| SXARP +|08/01/2022 07:24:43| |cute ship girls| +|08/01/2022 07:24:43| |just get married you fucking sexy dumbass| +|08/01/2022 07:24:43| |Adventure game pov| +|08/01/2022 07:24:45| |I'm ready for fat Miho ass...| +|08/01/2022 07:24:47| |I WILL FUCK THE TANKS| +|08/01/2022 07:24:49| |Why the fuck does Ooarai have a slum| +|08/01/2022 07:24:49| |LITERAL UNDERWORLD| +|08/01/2022 07:24:52| |sasuga 3d animation has come so far| +|08/01/2022 07:24:55| |The rape capital of Oarai| +|08/01/2022 07:24:55| |>time to meet the gnomes(lolis) that maintain the ship| +|08/01/2022 07:24:56| |Johannesburg of Oarai| +|08/01/2022 07:24:57| |>YWN marry a pirate tankgirl| +|08/01/2022 07:24:58| |get ready for miho ass| +|08/01/2022 07:24:58| |FIRST PERSON| +|08/01/2022 07:24:59| |How did they get away with this lmao| +|08/01/2022 07:25:00| |HERE BE NIGERIANS| +|08/01/2022 07:25:01| |RUM IS MINE OK?| +|08/01/2022 07:25:02| |Ooarai homeless camp| +|08/01/2022 07:25:03| |KINO FIRST PERSON| +|08/01/2022 07:25:04| |THE NIGGERS OF NIPPON| +|08/01/2022 07:25:04| |Just enter with a tank scholarship. Didn't some of Alice uni team do that?| +|08/01/2022 07:25:05| SASUGA +|08/01/2022 07:25:06| |There could be niggers here... | +|08/01/2022 07:25:06| WOAH +|08/01/2022 07:25:06| |OOARAI THIRD WORLD SHITHOLE RUN BY NIGGERS| +|08/01/2022 07:25:08| |but why is johannesburg lawless?| +|08/01/2022 07:25:08| |GODHAND NIPPERS| +|08/01/2022 07:25:08| |bc is less class divided then this| +|08/01/2022 07:25:09| |brazil be like| +|08/01/2022 07:25:12| DRAW +|08/01/2022 07:25:13| |gunslinger hana| +|08/01/2022 07:25:14| |>forced animation doesn't exist| +|08/01/2022 07:25:14| |DON'T TOUCH BARBED WIRE LIKE THAT| +|08/01/2022 07:25:15| |>carbon coated pliers| +|08/01/2022 07:25:15| |das rascit| +|08/01/2022 07:25:16| |Becareful of the Mutant cannibals| +|08/01/2022 07:25:18| |WOW MANILA| +|08/01/2022 07:25:20| |This film is dedicated to the brave delinquent fighters of Johannesburg| +|08/01/2022 07:25:21| |DO IT| +|08/01/2022 07:25:23| |carbon coated hands| +|08/01/2022 07:25:25| HOBOS +|08/01/2022 07:25:26| N +|08/01/2022 07:25:27| s-sugoi +|08/01/2022 07:25:28| |Oh boy time for the Shark Jobbers| +|08/01/2022 07:25:28| |good thing I'm packing heat| +|08/01/2022 07:25:28| |druggies galore| +|08/01/2022 07:25:29| |CUTE DELINQUENTS| +|08/01/2022 07:25:30| |THIS IS WHAT HAPPENS WHEN LITTLE GIRLS RUN SHIPS| +|08/01/2022 07:25:32| |>ywn seggs with punk ooarai| +|08/01/2022 07:25:33| |Hana might be an assassin| +|08/01/2022 07:25:35| |"You want to buy killer sticks?| +|08/01/2022 07:25:36| |HANA uses cut its super effective| +|08/01/2022 07:25:36| KAPPA +|08/01/2022 07:25:37| |on foe nem| +|08/01/2022 07:25:39| |BLACK METAL| +|08/01/2022 07:25:42| former +|08/01/2022 07:25:43| druggies +|08/01/2022 07:25:45| nigger +|08/01/2022 07:25:46| |OMORI REFERENCE!!!!| +|08/01/2022 07:25:46| |Ooarai Necromunda| +|08/01/2022 07:25:47| |I WANT DELINQUENTS TO KIDNAP ME| +|08/01/2022 07:25:48| |formerly the president| +|08/01/2022 07:25:50| KAPPA +|08/01/2022 07:25:50| |OOARAI = BRAZIL| +|08/01/2022 07:25:50| |Slums in a ship?| +|08/01/2022 07:25:52| |>too long| +|08/01/2022 07:25:53| >FORMER +|08/01/2022 07:25:54| Toecutter? +|08/01/2022 07:25:54| |THE FEDS| +|08/01/2022 07:25:55| toecutter-chan! +|08/01/2022 07:25:55| |>skirts too long| +|08/01/2022 07:25:57| |>TOO LONG| +|08/01/2022 07:25:59| |The fucking girls are looking like FotNS baddies| +|08/01/2022 07:26:02| |>need seggs with yankee white hair| +|08/01/2022 07:26:03| |that's a boy| +|08/01/2022 07:26:03| KAPPA +|08/01/2022 07:26:04| |TO THE RAPE CAVE| +|08/01/2022 07:26:04| ARRRRRRRRRREEEEEEEEEEEEEE +|08/01/2022 07:26:05| |Delinquents belong in a TANK| +|08/01/2022 07:26:06| KAPPA +|08/01/2022 07:26:07| KAPPA +|08/01/2022 07:26:07| |K A P P A| +|08/01/2022 07:26:07| |shaved eyebrow moe~| +|08/01/2022 07:26:09| |TAKE ME TO THE BROTHELS| +|08/01/2022 07:26:09| areeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +|08/01/2022 07:26:10| |>skirts too long| +|08/01/2022 07:26:10| RAPED +|08/01/2022 07:26:11| AAAAAAAAAAAAAAA +|08/01/2022 07:26:11| KAPPA +|08/01/2022 07:26:12| rape +|08/01/2022 07:26:13| RAPE +|08/01/2022 07:26:13| AREEEEEEEEEEEEEE +|08/01/2022 07:26:14| |This ghetto needs cleaning| +|08/01/2022 07:26:14| RAPE +|08/01/2022 07:26:15| AREEEEEEEEEEEE +|08/01/2022 07:26:16| |SODOKO SODOMY| +|08/01/2022 07:26:16| rape +|08/01/2022 07:26:17| >abduction +|08/01/2022 07:26:17| RAPE +|08/01/2022 07:26:18| NTR +|08/01/2022 07:26:18| MINDBREAK +|08/01/2022 07:26:18| |Chase scene| +|08/01/2022 07:26:19| |The horror, the horror| +|08/01/2022 07:26:21| |I want to kidnap Sodoko too!| +|08/01/2022 07:26:21| KINO +|08/01/2022 07:26:21| |RAPE CORRECTION| +|08/01/2022 07:26:21| YAREYARE +|08/01/2022 07:26:22| KINO +|08/01/2022 07:26:22| |rape rape rape| +|08/01/2022 07:26:23| |KINO SHOTS| +|08/01/2022 07:26:24| |>this cg| +|08/01/2022 07:26:25| AAAAREEEE +|08/01/2022 07:26:27| |I AM MIHO| +|08/01/2022 07:26:27| |SAORI BUTT INCOMING| +|08/01/2022 07:26:27| KINO +|08/01/2022 07:26:28| |wow it's like i'm really there| +|08/01/2022 07:26:28| POV +|08/01/2022 07:26:29| |3D SODOKO| +|08/01/2022 07:26:30| KINO +|08/01/2022 07:26:30| |>rape kino| +|08/01/2022 07:26:30| ASS +|08/01/2022 07:26:32| >3d +|08/01/2022 07:26:32| |RAPE CORRECTION| +|08/01/2022 07:26:32| |which game is this?| +|08/01/2022 07:26:32| |get ready for miho asssssssssssssss| +|08/01/2022 07:26:33| AAAAAAREEEEEEEE +|08/01/2022 07:26:33| |We Doom now.| +|08/01/2022 07:26:34| |THAT 3D IS GARBO| +|08/01/2022 07:26:35| |POV SEQUENCE| +|08/01/2022 07:26:36| |soari ass| +|08/01/2022 07:26:36| |so immersive...| +|08/01/2022 07:26:38| WEW +|08/01/2022 07:26:38| |Miho's fat butt| +|08/01/2022 07:26:38| |ASS TOO FAT| +|08/01/2022 07:26:38| |FAT ASS| +|08/01/2022 07:26:38| |MIHO ASS| +|08/01/2022 07:26:39| ASS +|08/01/2022 07:26:39| |MIHO'S FAT ASS| +|08/01/2022 07:26:40| ASS +|08/01/2022 07:26:40| |FAT BUTT| +|08/01/2022 07:26:40| |HAYAII SUCH SPEED| +|08/01/2022 07:26:42| |B UTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTt| +|08/01/2022 07:26:42| ASS +|08/01/2022 07:26:42| AHHHHHHHH +|08/01/2022 07:26:42| |Imagine if these delinquents graduate before Momo does. Even more embarassment.| +|08/01/2022 07:26:42| E1M1 +|08/01/2022 07:26:43| FAT +|08/01/2022 07:26:43| ASS +|08/01/2022 07:26:43| SNIFFFF +|08/01/2022 07:26:44| ded +|08/01/2022 07:26:44| GIWTWM +|08/01/2022 07:26:44| |i came| +|08/01/2022 07:26:45| |BUTTE HOLD| +|08/01/2022 07:26:46| kino +|08/01/2022 07:26:46| fat +|08/01/2022 07:26:46| |based yukari| +|08/01/2022 07:26:47| |HOLY FUCK HER ASS IS ENORMOUS| +|08/01/2022 07:26:48| SASUGA +|08/01/2022 07:26:49| |Yukari is agile | +|08/01/2022 07:26:49| |this scene is just fucking hilarious| +|08/01/2022 07:26:49| |Reminder that Yukari is packing right now| +|08/01/2022 07:26:50| GMT +|08/01/2022 07:26:52| SEX +|08/01/2022 07:26:52| |GOD I WISH THAT WAS ME| +|08/01/2022 07:26:52| |god I wish that were me| +|08/01/2022 07:26:55| |Nice ass| +|08/01/2022 07:26:55| WEW +|08/01/2022 07:26:55| |god I wish that were me| +|08/01/2022 07:26:55| |KINO INCOMING| +|08/01/2022 07:26:56| |GOD I WISH| +|08/01/2022 07:26:56| |DAT ASS WAS FAT| +|08/01/2022 07:26:57| |ASS STUCK ASS STUCK... PLEASE| +|08/01/2022 07:26:57| |THEY'RE FUCKING DEAD| +|08/01/2022 07:26:58| |HAHA BUTTE HOLD| +|08/01/2022 07:26:59| |Kino drives a motorrad, not a tank you retards| +|08/01/2022 07:27:00| |>yukari just fucking lands it| +|08/01/2022 07:27:00| rrats +|08/01/2022 07:27:02| |yukair got that THANG| +|08/01/2022 07:27:06| |PHAT ASSES| +|08/01/2022 07:27:07| |GMT GMT!| +|08/01/2022 07:27:08| |would help unstuck that ass| +|08/01/2022 07:27:08| |Dark Souls 2| +|08/01/2022 07:27:09| |YUKARI FLIP| +|08/01/2022 07:27:09| |that would be a glorious death| +|08/01/2022 07:27:10| |IT'S THE SEX ROOM| +|08/01/2022 07:27:13| Dork! +|08/01/2022 07:27:14| YARR +|08/01/2022 07:27:15| |SOMALI PIRATES| +|08/01/2022 07:27:15| FLINT +|08/01/2022 07:27:16| |invisible wall ahead| +|08/01/2022 07:27:16| DORK +|08/01/2022 07:27:17| |so where is she keeping that masher?| +|08/01/2022 07:27:19| |sex dungeon| +|08/01/2022 07:27:19| |YO HO| +|08/01/2022 07:27:20| |SING ALONG, FOLKS| +|08/01/2022 07:27:21| |RED ROOM| +|08/01/2022 07:27:21| |the brothel...| +|08/01/2022 07:27:22| |that place looks lewd| +|08/01/2022 07:27:22| |YO HO| +|08/01/2022 07:27:22| YAR +|08/01/2022 07:27:22| |some of you guys are really behind, f5| +|08/01/2022 07:27:22| |RED LIGHT COMPARTMENT| +|08/01/2022 07:27:24| |Her hair duch| +|08/01/2022 07:27:24| |illusory wall ahead| +|08/01/2022 07:27:25| |fuck you sharkies| +|08/01/2022 07:27:25| |FLING FLINT FLINT FLINT| +|08/01/2022 07:27:26| |>forcing sudako to work in a brothel| +|08/01/2022 07:27:27| |I HATE FLINT| +|08/01/2022 07:27:27| Clonk +|08/01/2022 07:27:27| |Up her pooper| +|08/01/2022 07:27:30| |YO HOOO| +|08/01/2022 07:27:31| |liar ahead| +|08/01/2022 07:27:31| HOE +|08/01/2022 07:27:31| |im entering into the sex room | +|08/01/2022 07:27:32| yohoho +|08/01/2022 07:27:35| |fuck flint| +|08/01/2022 07:27:36| HEY +|08/01/2022 07:27:36| |cute flint| +|08/01/2022 07:27:38| |WORST TEAM| +|08/01/2022 07:27:40| |BEST GIRL FLINT| +|08/01/2022 07:27:40| HEY +|08/01/2022 07:27:41| |the fuck is this| +|08/01/2022 07:27:42| HEY! +|08/01/2022 07:27:43| |momo = flint| +|08/01/2022 07:27:43| |SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX| +|08/01/2022 07:27:43| |HEJ HEJ HEJ SOKOLY| +|08/01/2022 07:27:43| |Shut the fuck up Flint| +|08/01/2022 07:27:43| |BEST TEAM| +|08/01/2022 07:27:44| SAA +|08/01/2022 07:27:45| |sekgs dungeon| +|08/01/2022 07:27:45| YAR +|08/01/2022 07:27:47| |What will we will do with a drunken sailor| +|08/01/2022 07:27:49| |fuck pirates| +|08/01/2022 07:27:49| |It's not even real alcohol| +|08/01/2022 07:27:50| |ROW ROW| +|08/01/2022 07:27:51| |RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +|08/01/2022 07:27:51| HEY +|08/01/2022 07:27:53| SAA +|08/01/2022 07:27:53| |Worst team, Worst Tank| +|08/01/2022 07:27:55| |i like the part where yukari explains a tank to these retards| +|08/01/2022 07:27:55| |B A N G E R| +|08/01/2022 07:27:56| |Even anglerfish team is confused| +|08/01/2022 07:27:56| |This ain't a red light district. I want my money back| +|08/01/2022 07:27:57| |Just show the Cute Lass and nobody gets hurt| +|08/01/2022 07:27:57| |Really should have been an alestorm cover.| +|08/01/2022 07:27:58| |Her design is so good but she's so useless, bros...| +|08/01/2022 07:27:59| Cutelass +|08/01/2022 07:28:00| |RUM HOURS| +|08/01/2022 07:28:00| |I'm fucking drunk| +|08/01/2022 07:28:00| |RUM RUM RUM RUM RUM RUM RUM RUM| +|08/01/2022 07:28:01| |A CUTE LASS| +|08/01/2022 07:28:01| |"PLUNDER AND SPLIT THE BOOTY"| +|08/01/2022 07:28:03| CUTLASS!!! +|08/01/2022 07:28:03| |there's the red haired uggo| +|08/01/2022 07:28:04| |Not Wir lagen vor Madagaskar| +|08/01/2022 07:28:07| |RUM IS UGLY| +|08/01/2022 07:28:07| |JOBBER SQUAD| +|08/01/2022 07:28:07| CUTLASS +|08/01/2022 07:28:08| |cutlass only redemption| +|08/01/2022 07:28:09| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 07:28:12| |menu o dozo| +|08/01/2022 07:28:13| |RUM IS MINE| +|08/01/2022 07:28:14| |CUTE ASS!| +|08/01/2022 07:28:16| |mako still hasn't got a milkshake| +|08/01/2022 07:28:18| |MILK DRINKERS| +|08/01/2022 07:28:20| |cute pirate larpers | +|08/01/2022 07:28:21| |DRINK FROM SAORI'S TITS| +|08/01/2022 07:28:23| |Miluk SEKI| +|08/01/2022 07:28:26| OPPAI +|08/01/2022 07:28:27| |mojito pls| +|08/01/2022 07:28:28| |SODOKO DOKO?| +|08/01/2022 07:28:29| MAMA +|08/01/2022 07:28:30| |>it's PA equipment rather than an actual kareoke machine| +|08/01/2022 07:28:31| |MOMMY MILKIES| +|08/01/2022 07:28:32| |I WANT TO DRINK FROM MURAKAMI| +|08/01/2022 07:28:34| |WELCOME TO THE SALTY SPITOON, HOW TOUGH ARE YA?| +|08/01/2022 07:28:34| |MILK THE SEAL| +|08/01/2022 07:28:35| |HOTO COCOA| +|08/01/2022 07:28:37| |>go home and suck on your mom's tits| +|08/01/2022 07:28:38| |MOMMMY MILKIES| +|08/01/2022 07:28:40| |I ways thought Rum was as tiny as Mako| +|08/01/2022 07:28:40| WHO? +|08/01/2022 07:28:44| DORK +|08/01/2022 07:28:46| |GOD I WISH| +|08/01/2022 07:28:46| |Bartender smart. Can't earn rupees if they don't order first| +|08/01/2022 07:28:47| SLAVERY +|08/01/2022 07:28:49| |I had a bowl of nail for breakfast...| +|08/01/2022 07:28:49| |THE DORK| +|08/01/2022 07:28:52| SLAVE +|08/01/2022 07:28:52| |CLEAN IT UP JANNY| +|08/01/2022 07:28:56| |sodoko slave| +|08/01/2022 07:28:56| |God the sound design in this shit is too good| +|08/01/2022 07:28:57| |>being a landlover despite being at sea| +|08/01/2022 07:28:58| |Only Mako can rape her| +|08/01/2022 07:28:59| |get the fuck out of my way| +|08/01/2022 07:28:59| |BIG GIRL| +|08/01/2022 07:28:59| Yes +|08/01/2022 07:29:02| |SODOKO SLAVERY| +|08/01/2022 07:29:04| Jannyko +|08/01/2022 07:29:04| |Fuckin slaves| +|08/01/2022 07:29:05| |>she does it for free| +|08/01/2022 07:29:05| |fatass mukririmrimriamrimr| +|08/01/2022 07:29:06| |THANK YOU SABAKU!| +|08/01/2022 07:29:07| |>YWN HAVE A SODOKO SEX SLAVE| +|08/01/2022 07:29:07| |>she does it for free| +|08/01/2022 07:29:08| |BIG GUY| +|08/01/2022 07:29:10| |Without any soymilk....| +|08/01/2022 07:29:11| |cute drunk| +|08/01/2022 07:29:12| |FOCRING SODOKO TO CLEANM YOUR SHITHOLEEEEEEEE| +|08/01/2022 07:29:13| |RUM A CUTE| +|08/01/2022 07:29:14| |SHE THICCC| +|08/01/2022 07:29:15| DIO +|08/01/2022 07:29:18| |JUST WHACK THEM WITH THE BALL| +|08/01/2022 07:29:19| |RUM A SHIT| +|08/01/2022 07:29:23| |Now that's a FAT girl| +|08/01/2022 07:29:25| |THE ABSOLUTE UNIT| +|08/01/2022 07:29:25| |Rum is cute!| +|08/01/2022 07:29:26| |shoot them| +|08/01/2022 07:29:26| |DRIKING RUM FROM THE BOTTLE| +|08/01/2022 07:29:28| |Sodoko got scammed. No pay and all work?| +|08/01/2022 07:29:28| fatass +|08/01/2022 07:29:28| PUHAAAAA +|08/01/2022 07:29:29| \m/ +|08/01/2022 07:29:30| |HEIL VICE PRESIDENT YUKARI| +|08/01/2022 07:29:30| WEH +|08/01/2022 07:29:30| |big girl!!| +|08/01/2022 07:29:30| |oh god shes hot| +|08/01/2022 07:29:30| |miho fucking dork| +|08/01/2022 07:29:32| |FAT TURTLES| +|08/01/2022 07:29:37| |YUKARI NO| +|08/01/2022 07:29:37| |Underaged Drinking | +|08/01/2022 07:29:40| UEH +|08/01/2022 07:29:40| UEE +|08/01/2022 07:29:43| HWEH +|08/01/2022 07:29:44| |Oka no fune | +|08/01/2022 07:29:46| UEH +|08/01/2022 07:29:46| RETARDS +|08/01/2022 07:29:47| |SHE'S MAD| +|08/01/2022 07:29:47| |FLUFF MAD| +|08/01/2022 07:29:48| |KILL THEM ALL YUKARI| +|08/01/2022 07:29:50| |yukari has the stick grenade up her ass right now| +|08/01/2022 07:29:51| |Yukari gonna commit warcrimes| +|08/01/2022 07:29:52| |RUM IS BOTH CUTE AND MINE| +|08/01/2022 07:29:52| |do it| +|08/01/2022 07:29:53| KILL +|08/01/2022 07:29:56| |I'LL TAKE YOU ALL WITH ME| +|08/01/2022 07:29:57| MOGGED +|08/01/2022 07:29:58| |BLOW THEM UP| +|08/01/2022 07:29:59| |based yukari| +|08/01/2022 07:29:59| |Fat turtle driver here| +|08/01/2022 07:30:00| AUTISM +|08/01/2022 07:30:01| |NO ONE FUCKING CARES ABOUT RUM| +|08/01/2022 07:30:03| |RESPECT YOUR ELDERS| +|08/01/2022 07:30:05| EZ +|08/01/2022 07:30:05| MASAKA +|08/01/2022 07:30:06| HAYAI +|08/01/2022 07:30:06| ??? +|08/01/2022 07:30:07| NERD +|08/01/2022 07:30:08| |I love Rum. Best shark, fight me| +|08/01/2022 07:30:08| |YUKAIR NEEDS BLOOD| +|08/01/2022 07:30:08| |GET FUCKED LARPER| +|08/01/2022 07:30:09| NANI +|08/01/2022 07:30:09| |>you should be able to solve this| +|08/01/2022 07:30:09| NANI +|08/01/2022 07:30:10| |Yukari making a fuckin popeye face lmafao| +|08/01/2022 07:30:12| H-HAYAI +|08/01/2022 07:30:13| |YUKARI BASED ACCEPT ALLAH'S JUDGMENT| +|08/01/2022 07:30:14| |YUKARI POWER| +|08/01/2022 07:30:15| ???????????????? +|08/01/2022 07:30:16| HAYAI +|08/01/2022 07:30:16| SEMAPHORE +|08/01/2022 07:30:17| |SEGGGS WITH CUTLASS| +|08/01/2022 07:30:19| |I DECLARE A THUMB WAR| +|08/01/2022 07:30:20| |Planes > Tanks > Shit >>>>> Boats| +|08/01/2022 07:30:21| MHMHMHMHMHMHHMHMHMHMHMHHM +|08/01/2022 07:30:21| MASAKA +|08/01/2022 07:30:22| NANI +|08/01/2022 07:30:22| |"The pleasure of being cummed inside"| +|08/01/2022 07:30:23| |Sayori mind| +|08/01/2022 07:30:25| GO +|08/01/2022 07:30:27| GOTEM +|08/01/2022 07:30:27| L@DY +|08/01/2022 07:30:27| |yukari is so fucking based| +|08/01/2022 07:30:28| |PARTY HARD| +|08/01/2022 07:30:29| GO +|08/01/2022 07:30:29| BTFO +|08/01/2022 07:30:32| LEWD +|08/01/2022 07:30:34| INTENSE +|08/01/2022 07:30:35| DANCE +|08/01/2022 07:30:36| KINO +|08/01/2022 07:30:36| |autism levels too extreme| +|08/01/2022 07:30:37| |Strong is?| +|08/01/2022 07:30:37| UUUOOOOOHHHH +|08/01/2022 07:30:39| |>uncensored handholding| +|08/01/2022 07:30:40| |is this sex?| +|08/01/2022 07:30:40| RAPE +|08/01/2022 07:30:40| Intense +|08/01/2022 07:30:42| |High actions thumb fighting| +|08/01/2022 07:30:42| DESTROYED!!!!!! +|08/01/2022 07:30:44| |lets go miho fuck her up| +|08/01/2022 07:30:44| |KA KA KA KA KA KACHI DAZE| +|08/01/2022 07:30:44| BDSM +|08/01/2022 07:30:44| |absolute size of this lass| +|08/01/2022 07:30:46| |ULTRA SPINE| +|08/01/2022 07:30:49| |FUCK EM UP MIHO| +|08/01/2022 07:30:49| |Fists are slower than AP shells| +|08/01/2022 07:30:49| MOGGED +|08/01/2022 07:30:50| |ULTRA INSTINCT MIHO| +|08/01/2022 07:30:50| |u u u u| +|08/01/2022 07:30:50| FIGHT +|08/01/2022 07:30:52| |IMAGING THAT HAND ON YOUR PP| +|08/01/2022 07:30:52| |I'd let mako play with my gearstick| +|08/01/2022 07:30:53| |Casually dodges tank shells for a living| +|08/01/2022 07:30:54| |become water| +|08/01/2022 07:30:55| |CUTLASS DEAD| +|08/01/2022 07:30:55| |Mako's dangerous. | +|08/01/2022 07:30:57| |GA GA GA GACHI DAZE| +|08/01/2022 07:30:57| OX>GEN +|08/01/2022 07:30:59| |SHE'S FAST| +|08/01/2022 07:31:00| F +|08/01/2022 07:31:00| |Strong neck because???| +|08/01/2022 07:31:01| PREDICTABO +|08/01/2022 07:31:01| SUMIMASEN +|08/01/2022 07:31:02| PXYGEM +|08/01/2022 07:31:02| F +|08/01/2022 07:31:02| |GUN GUN GUN GUN WO MIHO| +|08/01/2022 07:31:02| |She's not carbon coated| +|08/01/2022 07:31:03| FUCK +|08/01/2022 07:31:03| |OPERATION PUNCHY| +|08/01/2022 07:31:04| |kino fight scene| +|08/01/2022 07:31:05| |CUTLASS IS DEAD| +|08/01/2022 07:31:06| 8888888888 +|08/01/2022 07:31:06| |DEX> STR| +|08/01/2022 07:31:07| |NECK STRENGTH | +|08/01/2022 07:31:07| F +|08/01/2022 07:31:08| H-HAYAI +|08/01/2022 07:31:08| STRONG +|08/01/2022 07:31:08| DESTROYED +|08/01/2022 07:31:09| SUMIMASEN +|08/01/2022 07:31:09| |who could beat the demon of ooarai in a fight?| +|08/01/2022 07:31:09| HAYAI +|08/01/2022 07:31:09| MOGGED +|08/01/2022 07:31:11| |Carbon plated neck| +|08/01/2022 07:31:12| |That back| +|08/01/2022 07:31:12| 88888888 +|08/01/2022 07:31:12| |>that spine| +|08/01/2022 07:31:13| |FRIENDLY FIRE ON| +|08/01/2022 07:31:13| |Miho has too many I frames| +|08/01/2022 07:31:13| Inshallah +|08/01/2022 07:31:14| |she's been carbon coated| +|08/01/2022 07:31:14| |poor Cutelass| +|08/01/2022 07:31:14| HANDSTIELGRANATE +|08/01/2022 07:31:14| |allah akbar| +|08/01/2022 07:31:15| |YUKARI NO| +|08/01/2022 07:31:16| AAAAAAAAAAA +|08/01/2022 07:31:17| |STR FAGS SEETHING| +|08/01/2022 07:31:17| |YUKARI NO DONT| +|08/01/2022 07:31:17| |CUTLASS NO| +|08/01/2022 07:31:18| |ALLAHU AKBAR| +|08/01/2022 07:31:19| |YUKARI NO| +|08/01/2022 07:31:19| |A FUCKING GRENADE| +|08/01/2022 07:31:19| |YUKARI NO| +|08/01/2022 07:31:20| |YUKARI YES| +|08/01/2022 07:31:20| |YUKAIR BLOW IT| +|08/01/2022 07:31:20| |SHE HAS A GRENADE| +|08/01/2022 07:31:22| |DEX > STR| +|08/01/2022 07:31:22| |ullapool caber!| +|08/01/2022 07:31:22| |LIKE HELL I'M NOT TAKIN YOU WITH ME| +|08/01/2022 07:31:23| NADE +|08/01/2022 07:31:23| |YUKARI NO| +|08/01/2022 07:31:23| |ALLAHU AKBAR| +|08/01/2022 07:31:23| |the fucking granade lmao| +|08/01/2022 07:31:23| |I'LL KILL US ALL| +|08/01/2022 07:31:24| |A FUCKING GRENADE| +|08/01/2022 07:31:24| |YUKARI | +|08/01/2022 07:31:24| |POTATO MASHER| +|08/01/2022 07:31:24| |GO WITH ALLAH| +|08/01/2022 07:31:26| |WITNESS ME| +|08/01/2022 07:31:26| |POTATO MASHER!| +|08/01/2022 07:31:26| |right from her ass| +|08/01/2022 07:31:27| |>A FUCKING HANDGRENADE| +|08/01/2022 07:31:27| |YUKARI NOOOOOOO| +|08/01/2022 07:31:28| |A FUCKING GRENADE| +|08/01/2022 07:31:28| INSHALLAH +|08/01/2022 07:31:30| |Allahu akbar| +|08/01/2022 07:31:30| steilhandgranate +|08/01/2022 07:31:30| INSHALLAH +|08/01/2022 07:31:31| |WTF YUKARI| +|08/01/2022 07:31:31| |DEX FAGS| +|08/01/2022 07:31:31| ENTER +|08/01/2022 07:31:32| |A FUCKING GRENADE| +|08/01/2022 07:31:32| |INSHALLA YUKARI| +|08/01/2022 07:31:34| ISHALLAH +|08/01/2022 07:31:35| |SHES A BOMB| +|08/01/2022 07:31:35| |>A FUCKING POTATO MASHER| +|08/01/2022 07:31:36| |Always the bartender getting the end of the stick| +|08/01/2022 07:31:36| |A FUCKING GRENADE| +|08/01/2022 07:31:37| |DEX FAGS| +|08/01/2022 07:31:39| |You were there?| +|08/01/2022 07:31:40| |SHES GOT A BOMB| +|08/01/2022 07:31:43| |fucking larpers| +|08/01/2022 07:31:44| |LOOK IT'S CAPTAIN HARLOCK| +|08/01/2022 07:31:47| |A FUCKING GRENADE| +|08/01/2022 07:31:47| |>NON ALCOHOLIC| +|08/01/2022 07:31:48| |oh boy here comes captain larp| +|08/01/2022 07:31:50| |>non alcoholic| +|08/01/2022 07:31:51| >non-alcoholic +|08/01/2022 07:31:52| |I didn't know being a DEXfag meant carring a fucking bomb| +|08/01/2022 07:31:53| |>non-alhocolic rum| +|08/01/2022 07:31:53| F +|08/01/2022 07:31:53| ded +|08/01/2022 07:31:54| |whats the point| +|08/01/2022 07:31:56| KARAI +|08/01/2022 07:31:57| |Yukari is so goddamn intense| +|08/01/2022 07:31:57| oishisou +|08/01/2022 07:31:59| :3 +|08/01/2022 07:32:00| |>NON-ALCOHOLIC RUM| +|08/01/2022 07:32:03| |NONDE NONDE| +|08/01/2022 07:32:04| |I HATE THESE LARPERS| +|08/01/2022 07:32:07| |Ghost pepper sauce| +|08/01/2022 07:32:09| PEPPA +|08/01/2022 07:32:10| |these chicks drinking tabasco| +|08/01/2022 07:32:11| |Hana bout to hit that mf chug jug| +|08/01/2022 07:32:12| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 07:32:13| |>non alchoholic| +|08/01/2022 07:32:18| |where can I buy non-alcoholic rum| +|08/01/2022 07:32:20| |CHUG CHUG CHUG CHUG| +|08/01/2022 07:32:24| |you see, my special ability is to get drunk| +|08/01/2022 07:32:25| |Stomach of steel| +|08/01/2022 07:32:27| |CHUG CHUG FUG FUG| +|08/01/2022 07:32:30| |it begiiiiiins| +|08/01/2022 07:32:34| |Legolas and Gimli| +|08/01/2022 07:32:34| YAMERO +|08/01/2022 07:32:36| >non-alcoholic +|08/01/2022 07:32:39| |hana is good at this because...| +|08/01/2022 07:32:39| |spicy buttholes| +|08/01/2022 07:32:40| |big whoop, i do this every night| +|08/01/2022 07:32:44| |Damn Hana she’s more heavy weight than me| +|08/01/2022 07:32:45| |God imagine the shits next day| +|08/01/2022 07:32:46| |CHUG CHUG CHUG CHUG CHUG CHUG | +|08/01/2022 07:32:46| |IMAGINE THE TOILET AFTERMATH| +|08/01/2022 07:32:48| |Hana going to show you a good time| +|08/01/2022 07:32:48| |literally me| +|08/01/2022 07:32:48| |BRING IT ON| +|08/01/2022 07:32:50| |You drink ghost pepper sauce?| +|08/01/2022 07:32:51| |She can swallow anything without tasting it.| +|08/01/2022 07:32:51| |God I love to drink tabasco| +|08/01/2022 07:32:54| |imagine the smell| +|08/01/2022 07:32:57| |I love that 90's hair| +|08/01/2022 07:32:57| |BEST LARPERS IN OARAI| +|08/01/2022 07:32:58| CUTE +|08/01/2022 07:33:00| |their shits do fuel the ship...| +|08/01/2022 07:33:02| |IMAGINE THE SMELL| +|08/01/2022 07:33:05| |Which guppies would be the funnest to drink with?| +|08/01/2022 07:33:06| |(6 livers later)| +|08/01/2022 07:33:11| |>that one artist who ships mako with cutlass| +|08/01/2022 07:33:13| |>spiced rum with just the spiced| +|08/01/2022 07:33:18| |What does being a gunner have anything to do with this| +|08/01/2022 07:33:18| |I feel like I could chug a bottle of alcoholic rum| +|08/01/2022 07:33:19| |yer yer yer| +|08/01/2022 07:33:20| |I WANT TO BE HANA'S TOILET| +|08/01/2022 07:33:22| |Smell's going to be worse once it comes out the other end| +|08/01/2022 07:33:23| |Shipping mako with cutlass is kin o| +|08/01/2022 07:33:23| |Hana shits herself to death on the toilet tomorrow| +|08/01/2022 07:33:27| |Spiced rum hold the rum| +|08/01/2022 07:33:28| KINO +|08/01/2022 07:33:29| kino +|08/01/2022 07:33:32| BASED +|08/01/2022 07:33:32| |she's cooughing blood| +|08/01/2022 07:33:32| |she's fuckng hallucinating| +|08/01/2022 07:33:33| |Maho x Anchovy is KINO| +|08/01/2022 07:33:34| |LOCKED ON| +|08/01/2022 07:33:35| |tank analogies| +|08/01/2022 07:33:35| |lol what?| +|08/01/2022 07:33:36| ??? +|08/01/2022 07:33:37| |Autism takes over| +|08/01/2022 07:33:37| |imagine the smell with how little ventilation is in that room... imagine| +|08/01/2022 07:33:39| |mako-cutlass shipper artist is based| +|08/01/2022 07:33:41| |some anons here drank more than this I'm sure of it| +|08/01/2022 07:33:41| CUTE +|08/01/2022 07:33:43| MOGGED +|08/01/2022 07:33:44| |Oh i get it cuz they're shots | +|08/01/2022 07:33:45| |HANA SHIT AFTHERMATH OVA WHEN?| +|08/01/2022 07:33:45| |I LIVED BITCH!!!!| +|08/01/2022 07:33:46| |>dude this is just like shooting a tank| +|08/01/2022 07:33:48| ded +|08/01/2022 07:33:48| rip +|08/01/2022 07:33:49| |>that random pixelated shot| +|08/01/2022 07:33:49| |Bikini Atoll Shit| +|08/01/2022 07:33:50| NOOOOOOOOO +|08/01/2022 07:33:50| |Tries to do it cool| +|08/01/2022 07:33:50| |FULL BROADSIDE COMMANDER | +|08/01/2022 07:33:50| |Coughing tabasco| +|08/01/2022 07:33:51| |Imagine their chilli shits tomorrow| +|08/01/2022 07:33:52| ???????? +|08/01/2022 07:33:53| |Fucking chokes| +|08/01/2022 07:33:54| |it's over| +|08/01/2022 07:33:55| |Piratebros we got cocky....| +|08/01/2022 07:33:57| |SEA SHIPS BTFO| +|08/01/2022 07:34:00| ?????????????????????????? +|08/01/2022 07:34:00| F +|08/01/2022 07:34:00| |Oh great, she's dead| +|08/01/2022 07:34:02| |>SHE FUCKING DIED| +|08/01/2022 07:34:02| |oh i get. Taking shots| +|08/01/2022 07:34:03| |RIP IF F| +|08/01/2022 07:34:04| DEAD +|08/01/2022 07:34:06| landlubbers... +|08/01/2022 07:34:08| F +|08/01/2022 07:34:10| |I CAN'T BELIEVE SHE'S FUCKING DEAD| +|08/01/2022 07:34:10| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 07:34:12| |why is she so large| +|08/01/2022 07:34:13| |Ship sank.| +|08/01/2022 07:34:14| |>sodoko casually carries an iron ball| +|08/01/2022 07:34:21| |Landlubbers stay winning| +|08/01/2022 07:34:21| LANDSHIIIIIIPS +|08/01/2022 07:34:24| |Why are the pirates so useless| +|08/01/2022 07:34:25| |i'm taking my sodoko and leaving| +|08/01/2022 07:34:29| UHU +|08/01/2022 07:34:30| DESU +|08/01/2022 07:34:31| |They could probably ask Saunders for a spare| +|08/01/2022 07:34:32| |tanks = landships| +|08/01/2022 07:34:34| Lanship +|08/01/2022 07:34:36| |Fat turtles win| +|08/01/2022 07:34:37| OHO +|08/01/2022 07:34:37| MOMO +|08/01/2022 07:34:39| YUHU +|08/01/2022 07:34:39| |momo is not a nobody| +|08/01/2022 07:34:39| |momo got raped here once| +|08/01/2022 07:34:41| |Tanks >>>>>>>>>>>>>>>>>>>>>> Boats| +|08/01/2022 07:34:43| |MOMO | +|08/01/2022 07:34:45| AAAAAAAAA +|08/01/2022 07:34:46| |PROTECT MOMO!| +|08/01/2022 07:34:47| pinchi +|08/01/2022 07:34:49| |Momo's past when¡| +|08/01/2022 07:34:50| |REEEEEEETTTTAAAAAAAARRRRRRRDDDDDD MOMO| +|08/01/2022 07:34:50| FUG +|08/01/2022 07:34:52| |i want murakami to snap me in half| +|08/01/2022 07:34:53| |protect the boss| +|08/01/2022 07:34:57| |Momo was a nobody until they realized| +|08/01/2022 07:34:59| |EVERYONE LOVES MOMO!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 07:35:02| |SAVE MOMO| +|08/01/2022 07:35:04| |KIND AND BASED MOMO| +|08/01/2022 07:35:05| |tank thing| +|08/01/2022 07:35:05| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 07:35:07| no +|08/01/2022 07:35:08| |Momo was a delinquent | +|08/01/2022 07:35:11| |STUPID GOTTA STAY TOGETHER| +|08/01/2022 07:35:12| |yukari explains a tank to retards| +|08/01/2022 07:35:13| |OH NO SHES RETARDED| +|08/01/2022 07:35:13| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 07:35:13| |EVERYONE SAY THANKS TO MOMO| +|08/01/2022 07:35:14| |ANO DESU NEE| +|08/01/2022 07:35:14| |a tank is a penis| +|08/01/2022 07:35:14| autism +|08/01/2022 07:35:15| |What the fuck is a tank| +|08/01/2022 07:35:16| |do you have to leave the ship if you are expelled?| +|08/01/2022 07:35:17| |momo should be killed| +|08/01/2022 07:35:20| |I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO I HATE THE PIRATES I HATE MOMO | +|08/01/2022 07:35:20| |why is yukari so based| +|08/01/2022 07:35:21| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +|08/01/2022 07:35:24| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL! DON'T BULLY MOMO!| +|08/01/2022 07:35:24| UMAI +|08/01/2022 07:35:25| |What the fuck is a tank| +|08/01/2022 07:35:26| umai +|08/01/2022 07:35:26| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 07:35:26| |Momo let these delinquent larpers stay| +|08/01/2022 07:35:28| |Smoked sausage | +|08/01/2022 07:35:29| |what the fuck| +|08/01/2022 07:35:31| |YUKAIR DORK| +|08/01/2022 07:35:31| |literally image the smell| +|08/01/2022 07:35:31| Sausage +|08/01/2022 07:35:31| DESHOU +|08/01/2022 07:35:33| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +|08/01/2022 07:35:34| |god I wish that sausage was me| +|08/01/2022 07:35:36| |Can't be lonely if you cover for the almost expelled| +|08/01/2022 07:35:39| |I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE MOMO I LOVE M| +|08/01/2022 07:35:40| SNIFFFFFFFFFFFFFFFFFFFFFF +|08/01/2022 07:35:42| |putting meat into mako| +|08/01/2022 07:35:43| |MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX MOMO SEX | +|08/01/2022 07:35:43| |MY WIFE RUM| +|08/01/2022 07:35:44| |MALCOM REED APPROVES| +|08/01/2022 07:35:47| hot +|08/01/2022 07:35:47| |I love Rum fuight me| +|08/01/2022 07:35:51| |She ate a frozen sausage| +|08/01/2022 07:35:51| |I love sausage| +|08/01/2022 07:35:54| |sex with manko| +|08/01/2022 07:35:56| |shitty ass tank| +|08/01/2022 07:35:58| |slap those sausages and mine| +|08/01/2022 07:35:59| |YES RIDE ME PIRATE GIRL| +|08/01/2022 07:36:00| |i love cock no homo| +|08/01/2022 07:36:04| |The meats always make me hungry for them| +|08/01/2022 07:36:04| |smoking meat is pretty great| +|08/01/2022 07:36:06| |I WANNA FEED MAKO MY SAUSAGE| +|08/01/2022 07:36:06| |CUTE LASS| +|08/01/2022 07:36:09| LANDPIRATES +|08/01/2022 07:36:09| |Thats homo dude| +|08/01/2022 07:36:11| |Riboruba Osherottu| +|08/01/2022 07:36:13| |sargasso pls snusnu| +|08/01/2022 07:36:14| |holy fuck these chuuni| +|08/01/2022 07:36:17| |Aren't they still undercrewed| +|08/01/2022 07:36:17| |i said no homo| +|08/01/2022 07:36:18| |STUPID SEXY FLINT| +|08/01/2022 07:36:20| |EMOTIONLESS SEX WITH CUTLASS| +|08/01/2022 07:36:20| >whitebait +|08/01/2022 07:36:20| |based cutlass| +|08/01/2022 07:36:21| ToT +|08/01/2022 07:36:21| |I WANT CUTLASS' FRESH WHITE THIGHS| +|08/01/2022 07:36:21| |Imagine if Duce found this tank. Holy heavens| +|08/01/2022 07:36:22| |Cutlass and Flint are waifus| +|08/01/2022 07:36:24| |sweaty tomboys| +|08/01/2022 07:36:25| |kinda homo anon| +|08/01/2022 07:36:25| |HOSHINO PITS\| +|08/01/2022 07:36:26| |CUTLASS BEST PIRATE| +|08/01/2022 07:36:29| >waifus +|08/01/2022 07:36:37| |MOMO SEX MOMO SEX MOMO SEX MOMO SEX | +|08/01/2022 07:36:38| |dang, i homo| +|08/01/2022 07:36:39| |FUUUUCK I CAN;T WAIT ANY LONGER FOR ANDOU| +|08/01/2022 07:36:39| |RUM A CUTE| +|08/01/2022 07:36:40| |What do they do about the carbon monoxide poisoning | +|08/01/2022 07:36:43| |pirates aquire| +|08/01/2022 07:36:43| |I want the whitefish special please| +|08/01/2022 07:36:45| CUTE +|08/01/2022 07:36:45| SLAGS +|08/01/2022 07:36:46| phrogs +|08/01/2022 07:36:49| |Be patient Anon| +|08/01/2022 07:36:49| |The pirates makenthe history girls look normal| +|08/01/2022 07:36:51| SLANDER +|08/01/2022 07:36:51| w +|08/01/2022 07:36:51| |andou. andou. andou. andou. | +|08/01/2022 07:36:52| |need momo ryona ASAP| +|08/01/2022 07:36:52| |RUM'S CUTE DANCE| +|08/01/2022 07:36:52| |yuki da| +|08/01/2022 07:36:53| >slags +|08/01/2022 07:36:54| |ANGLOS WILL JOB| +|08/01/2022 07:36:55| >bongs +|08/01/2022 07:36:55| |whitefish special doujin is kino| +|08/01/2022 07:36:55| |redcoats BEWARE| +|08/01/2022 07:36:56| ASAAM +|08/01/2022 07:36:58| |andou. andou. andou. andou. andou. andou. | +|08/01/2022 07:36:58| |Not even British| +|08/01/2022 07:37:01| |>cheeki slags innit| +|08/01/2022 07:37:02| |momo hate nigger hate| +|08/01/2022 07:37:04| ?????????? +|08/01/2022 07:37:04| |RUM DENIERS WILL BE PUNISHED| +|08/01/2022 07:37:06| hippu... +|08/01/2022 07:37:06| BRI'ISH +|08/01/2022 07:37:07| |imagine going to bongistan voluntarily| +|08/01/2022 07:37:07| |>1st repeat in the history of the school| +|08/01/2022 07:37:07| BAKAHIP +|08/01/2022 07:37:09| |Darjeeling is so gonna get bullied in Bongland| +|08/01/2022 07:37:09| |NO DARJ DON'T GO TO ENGLAND| +|08/01/2022 07:37:10| |>MORE IMPORTANT| +|08/01/2022 07:37:11| |Rum is sacred| +|08/01/2022 07:37:12| |remember that saying rosehip| +|08/01/2022 07:37:12| |ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHIDA ANDOU OSHI| +|08/01/2022 07:37:13| |fooking slag| +|08/01/2022 07:37:13| |finally, some good fucking tea| +|08/01/2022 07:37:13| CUTEHIP +|08/01/2022 07:37:14| bri'ish +|08/01/2022 07:37:15| CUUUUUUUUUUUUUUUUUUUUUUUUTE +|08/01/2022 07:37:15| |fucking Teaboo| +|08/01/2022 07:37:16| |Rosehip as commander next season when?| +|08/01/2022 07:37:17| |RUKURIRI HATESEC| +|08/01/2022 07:37:17| >FORESHADOWING +|08/01/2022 07:37:19| ROSEHIP +|08/01/2022 07:37:19| |Why are there slags on my screen?| +|08/01/2022 07:37:20| |katyushas thighs| +|08/01/2022 07:37:20| |MY WIFE, ROSEHIP| +|08/01/2022 07:37:20| |HANDE HOCH| +|08/01/2022 07:37:21| |cute bakahip| +|08/01/2022 07:37:23| |will we get the frog ova cut in?| +|08/01/2022 07:37:23| |Assam laying the truth. "First repeater"| +|08/01/2022 07:37:25| |I don't speak commie| +|08/01/2022 07:37:25| |>FAKE BRIT BOONG| +|08/01/2022 07:37:27| |what the fuck are they saying| +|08/01/2022 07:37:28| |PRAVDA WILL BEAT KMM!!!| +|08/01/2022 07:37:29| DA +|08/01/2022 07:37:29| |my maho wife| +|08/01/2022 07:37:31| HARASHO +|08/01/2022 07:37:34| |you can't learn russian, you don't even know japanese| +|08/01/2022 07:37:34| |THIS ISN'T NIHIONGO| +|08/01/2022 07:37:37| |VNIAMNIE VNIMANIE| +|08/01/2022 07:37:37| blyat +|08/01/2022 07:37:38| |wtf i thought they ded| +|08/01/2022 07:37:38| >ramp +|08/01/2022 07:37:39| |a so| +|08/01/2022 07:37:42| OPACHKI +|08/01/2022 07:37:43| 日本語でおk +|08/01/2022 07:37:44| |stop talking about the ramp| +|08/01/2022 07:37:44| flat +|08/01/2022 07:37:47| |A SO| +|08/01/2022 07:37:49| BORCHST +|08/01/2022 07:37:53| |[speaks bear]| +|08/01/2022 07:37:54| UAZ +|08/01/2022 07:37:54| Tiny +|08/01/2022 07:37:56| |Cute Ah so| +|08/01/2022 07:37:58| |holy fuck so flat| +|08/01/2022 07:37:58| |I thought klara fucking died, what the hell| +|08/01/2022 07:38:00| |"I'm sure we're gonna win this time"| +|08/01/2022 07:38:00| |I love Nonna's rusiaboo VA| +|08/01/2022 07:38:01| santu +|08/01/2022 07:38:02| |ENTER FINS| +|08/01/2022 07:38:04| |Klara still trolling| +|08/01/2022 07:38:05| 日本語で話しなさい +|08/01/2022 07:38:05| |USA USA USA USA USA| +|08/01/2022 07:38:08| shithook! +|08/01/2022 07:38:08| USA +|08/01/2022 07:38:10| |YOU JOBBED TO SPURDOS| +|08/01/2022 07:38:10| |"Yeah we'll win this time!"| +|08/01/2022 07:38:12| HAHAHAHAHAHAHAHAHHAHAHAHA +|08/01/2022 07:38:14| |USA USA USA| +|08/01/2022 07:38:15| MURICA +|08/01/2022 07:38:15| |SHE DID THATS HER GHOST| +|08/01/2022 07:38:15| |YOU FUCKS| +|08/01/2022 07:38:16| |UAZ LADA| +|08/01/2022 07:38:17| |CUTE WANI| +|08/01/2022 07:38:18| CUTE +|08/01/2022 07:38:19| AAAAAAAAAAAAHAHAHAHAHAHAHAHAHAHA +|08/01/2022 07:38:19| |SHE ISN'T EVEN GOING OUT WITH TAKESHI| +|08/01/2022 07:38:19| |nazi waifu| +|08/01/2022 07:38:21| HAHAHAHAHAHAHAHA +|08/01/2022 07:38:22| |TAKASHI | +|08/01/2022 07:38:22| |EVERYONE LAUGH AT THE WANI| +|08/01/2022 07:38:22| |No it's not| +|08/01/2022 07:38:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 07:38:23| |notice me...| +|08/01/2022 07:38:23| TEKSHIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 07:38:24| |MY MAHO WIFE| +|08/01/2022 07:38:24| |>rotor and fixed wing Damn I love Noami| +|08/01/2022 07:38:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE VV| +|08/01/2022 07:38:25| TAKASHI +|08/01/2022 07:38:25| |ERIKA IS CUTE| +|08/01/2022 07:38:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:28| |TAKESHI DUMPED HER BEFORE FUCKING| +|08/01/2022 07:38:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:29| |no fuck off wani| +|08/01/2022 07:38:30| |DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:30| |shes talking about mwe| +|08/01/2022 07:38:30| |whip me pls| +|08/01/2022 07:38:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:31| |Erika! LIVE from the cuckshed| +|08/01/2022 07:38:32| |its dvce time| +|08/01/2022 07:38:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:33| |DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:33| SISISISISISISISIS +|08/01/2022 07:38:33| |Koume, give her a hug.| +|08/01/2022 07:38:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:35| MAHOOOOO +|08/01/2022 07:38:35| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:37| DUCE +|08/01/2022 07:38:37| |HE wont| +|08/01/2022 07:38:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 07:38:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:38| CHANAKATTA +|08/01/2022 07:38:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:38| |Chadkeshintoo busy fucking everony else lmao| +|08/01/2022 07:38:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:39| |Here we go again| +|08/01/2022 07:38:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:39| SISISISISISISISI +|08/01/2022 07:38:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:40| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:41| |>Kay never mentions studying over at the US| +|08/01/2022 07:38:41| | DUCE DUCE DUCE| +|08/01/2022 07:38:41| |I FUCKING LOVE DUCE| +|08/01/2022 07:38:41| |WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG WIG | +|08/01/2022 07:38:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:42| >spam +|08/01/2022 07:38:42| |DUCE DUCE DUCE UCE DUCVE| +|08/01/2022 07:38:42| |TAKESHI WASN'T EVEN GOING OUT WITH HER| +|08/01/2022 07:38:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:43| |DUCE DUCE DUCE| +|08/01/2022 07:38:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:44| |DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:45| |Takeshi found out you taped his radio| +|08/01/2022 07:38:45| |DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:46| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:47| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 07:38:47| |DVCE DVCE DVCE DVCE| +|08/01/2022 07:38:47| |DUCE DUCE DUCE!| +|08/01/2022 07:38:47| |DVCE DVCE DVCE DVCE| +|08/01/2022 07:38:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:48| HA! +|08/01/2022 07:38:48| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 07:38:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:49| HA~ +|08/01/2022 07:38:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:38:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:50| |ANZIO STRONK| +|08/01/2022 07:38:52| |DUCE DUCE DUCE| +|08/01/2022 07:38:52| |DUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCEDUCE DUCE DUCE| +|08/01/2022 07:38:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:38:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:53| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 07:38:54| TOTSUGEKI +|08/01/2022 07:38:54| TOTSUGEI +|08/01/2022 07:38:54| |\o/ BANZAI \o/| +|08/01/2022 07:38:56| BAKAS +|08/01/2022 07:38:57| BANZAI +|08/01/2022 07:38:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:38:59| |TO TSU GE KI| +|08/01/2022 07:38:59| |TOTSUGEKI | +|08/01/2022 07:38:59| |>the only screen time maho gets is a brief skype call| +|08/01/2022 07:38:59| TOTSUGEKI +|08/01/2022 07:39:00| |TOTSUGEKI TOTSUGEKI TOTSUGEKI| +|08/01/2022 07:39:01| TOTSUGEKI! +|08/01/2022 07:39:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:39:03| |TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI TOTSUGEKI | +|08/01/2022 07:39:03| TOTSUGEKIIIIIIIIIIIIIIIIIII +|08/01/2022 07:39:04| |charging bakas| +|08/01/2022 07:39:04| TOTSUGEKI +|08/01/2022 07:39:04| TOTSUGEKI +|08/01/2022 07:39:05| |how did these totsugekiniggers beat bracket 1| +|08/01/2022 07:39:07| TOTSUGEKI +|08/01/2022 07:39:08| |Aren't girls the cutest when they're almost retarded| +|08/01/2022 07:39:08| TOTSUGEKI +|08/01/2022 07:39:08| TOTSUGEKI +|08/01/2022 07:39:08| TOTSUGEKI +|08/01/2022 07:39:10| TOTSUGEKI +|08/01/2022 07:39:10| |BANZAI | +|08/01/2022 07:39:11| :DDDDDDDDDDDDDDDDDDDDDDDDDDdddd +|08/01/2022 07:39:11| TOTSUGEKI +|08/01/2022 07:39:13| |Maho's a college girl now. She's legal.| +|08/01/2022 07:39:14| :DDD +|08/01/2022 07:39:15| |absolutely anon| +|08/01/2022 07:39:16| SPRÖLÖLÖÖÖÖÖ +|08/01/2022 07:39:17| |No more TOTSUGEKI| +|08/01/2022 07:39:17| |FUKUDA UOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH| +|08/01/2022 07:39:18| |Based retards| +|08/01/2022 07:39:18| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:39:18| |Can't win if you don't charge| +|08/01/2022 07:39:19| :DDDDDDDD +|08/01/2022 07:39:19| BENIS +|08/01/2022 07:39:19| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:19| :DDDDDDDDDDDDDD +|08/01/2022 07:39:21| |what was that about chubby checkers?| +|08/01/2022 07:39:21| 七生報國 +|08/01/2022 07:39:21| :DDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:22| :DD +|08/01/2022 07:39:22| |SAUNA :DDDDDDDDDDD| +|08/01/2022 07:39:23| |so is alice| +|08/01/2022 07:39:24| VITTU +|08/01/2022 07:39:24| :DDD +|08/01/2022 07:39:24| BENIS +|08/01/2022 07:39:24| :DDDDD +|08/01/2022 07:39:25| |DAMN KIDS| +|08/01/2022 07:39:25| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 07:39:25| |GOD LOOK AT HOW FUCKING FLAT THEY ARE| +|08/01/2022 07:39:26| :DDDDDDDDDDDDDDD +|08/01/2022 07:39:26| |DFC X2| +|08/01/2022 07:39:27| |PERKELE :DDDDDD| +|08/01/2022 07:39:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:28| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 07:39:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:29| |>finnish """"people""""| +|08/01/2022 07:39:29| |THAT'S FUCKING HOT| +|08/01/2022 07:39:31| :DDDDDDDDDD +|08/01/2022 07:39:31| |SPINNING AKI| +|08/01/2022 07:39:32| :DDDD +|08/01/2022 07:39:33| ANDOU +|08/01/2022 07:39:33| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 07:39:33| |Määmi sauna| +|08/01/2022 07:39:34| :DDD +|08/01/2022 07:39:34| |>PLAYING KANTELE IN THE SAUNA| +|08/01/2022 07:39:34| |CUTE :DDDD| +|08/01/2022 07:39:35| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 07:39:35| |Dirty hobos| +|08/01/2022 07:39:36| :DDD +|08/01/2022 07:39:37| SAUNA:DDDDDDDDDDDDDD +|08/01/2022 07:39:38| |ARISU'S SISTER TOO CUTE| +|08/01/2022 07:39:39| |BINLAND :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 07:39:40| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU AN| +|08/01/2022 07:39:40| |cute finns| +|08/01/2022 07:39:42| 4 +|08/01/2022 07:39:44| |ANDOU IS HERE| +|08/01/2022 07:39:45| Mika! +|08/01/2022 07:39:45| FROGS +|08/01/2022 07:39:47| |bc less gooo| +|08/01/2022 07:39:48| 4 +|08/01/2022 07:39:48| >FREEDOM +|08/01/2022 07:39:49| 4??? +|08/01/2022 07:39:49| |GAY FROGS| +|08/01/2022 07:39:49| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:39:50| FREEDOM +|08/01/2022 07:39:50| VATICAN +|08/01/2022 07:39:51| |4 DOLLARS FOR MOMO| +|08/01/2022 07:39:51| |MON DIEU| +|08/01/2022 07:39:52| TITTIES +|08/01/2022 07:39:52| |ANDOU GANG| +|08/01/2022 07:39:53| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:39:54| BOOBA!! +|08/01/2022 07:39:55| |ARRIBA ESPANA| +|08/01/2022 07:39:55| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:39:56| |OH NO ITS THE FRENCH | +|08/01/2022 07:39:56| BOOBA +|08/01/2022 07:39:57| |KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI KIMI NO SEI | +|08/01/2022 07:39:57| |Nice Spain| +|08/01/2022 07:39:58| |BC MORE LIKE BBC| +|08/01/2022 07:39:59| |brown tits| +|08/01/2022 07:39:59| |I WANNA SEX THE FINNS| +|08/01/2022 07:40:00| |MARIE FAT| +|08/01/2022 07:40:00| >FROGS +|08/01/2022 07:40:00| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:40:01| |BIG SPANISH MILKERS| +|08/01/2022 07:40:01| SEX +|08/01/2022 07:40:02| |fucking onions| +|08/01/2022 07:40:02| |Oh shit the Fr*nch| +|08/01/2022 07:40:02| |HON HON HON HON HON HON| +|08/01/2022 07:40:02| FROGS +|08/01/2022 07:40:04| GAAYYYY +|08/01/2022 07:40:05| |GAY FROGS| +|08/01/2022 07:40:06| |i got jebaited breddy hard the first time| +|08/01/2022 07:40:07| |ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU ANDOU | +|08/01/2022 07:40:09| |LESBIAN HATE SEX| +|08/01/2022 07:40:10| |GAY FROGS| +|08/01/2022 07:40:10| |Oh, right. Four is death| +|08/01/2022 07:40:12| |Enter sex bombs| +|08/01/2022 07:40:12| |MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT | +|08/01/2022 07:40:14| FAT +|08/01/2022 07:40:14| >French +|08/01/2022 07:40:15| |JUST FUCK ALREADY| +|08/01/2022 07:40:15| >Fr*nchies +|08/01/2022 07:40:16| |sacre bleu| +|08/01/2022 07:40:17| |My Algerian wife| +|08/01/2022 07:40:17| |ANDOUUUU SEXY BROWN GIRL| +|08/01/2022 07:40:17| |ANDOU, MY WIFE| +|08/01/2022 07:40:18| |>jebaited go back nigger| +|08/01/2022 07:40:19| |French baguettes| +|08/01/2022 07:40:19| |Fr*nch are not people| +|08/01/2022 07:40:19| |yall bitches gonna spit on the keiki| +|08/01/2022 07:40:21| |MARIE'S FAT ASS MARIE'S FAT ASS MARIE'S FAT ASS | +|08/01/2022 07:40:22| |GAYS? IN TANKS?| +|08/01/2022 07:40:22| |Sexy frogs| +|08/01/2022 07:40:23| |HATE SEX| +|08/01/2022 07:40:25| >France +|08/01/2022 07:40:25| |EIFFEL TOWER| +|08/01/2022 07:40:25| |Truth is, Frogs were gay from the start| +|08/01/2022 07:40:26| |imagine the hate sex| +|08/01/2022 07:40:26| Fr*nch +|08/01/2022 07:40:28| |We should remove Fr*nce| +|08/01/2022 07:40:28| |The french designs are fantastic| +|08/01/2022 07:40:31| slums +|08/01/2022 07:40:31| |>150cm >150kg| +|08/01/2022 07:40:31| |>123cm >198kg| +|08/01/2022 07:40:33| |ALSACE LORRAINE IS SERBIAN| +|08/01/2022 07:40:34| |They're not gay, they're just French | +|08/01/2022 07:40:35| |taiyaki war| +|08/01/2022 07:40:35| Smooth +|08/01/2022 07:40:36| |hot and angry /u/ action| +|08/01/2022 07:40:37| |le france| +|08/01/2022 07:40:38| |I want to fuck a frenchie| +|08/01/2022 07:40:39| |Class divide| +|08/01/2022 07:40:39| |>Frogs turning on eachother| +|08/01/2022 07:40:39| |TWO GIRLS CAN'T HAVE SEX INSIDE A TANK| +|08/01/2022 07:40:40| PANTSU +|08/01/2022 07:40:40| |MARIE FAT NAKADASHI THIGH SEX| +|08/01/2022 07:40:41| |OUI OUI VE ARE GHEY| +|08/01/2022 07:40:41| |mhhahaha, the french.....| +|08/01/2022 07:40:43| |EVROPA IS SERBIAN| +|08/01/2022 07:40:43| |nothing new| +|08/01/2022 07:40:44| |TAIYAKI WAR| +|08/01/2022 07:40:46| |FUCKING FRECH| +|08/01/2022 07:40:48| |based small business owner Andou| +|08/01/2022 07:40:50| |THE GHETTO| +|08/01/2022 07:40:51| |are we gonna watch yukari film first?| +|08/01/2022 07:40:54| |ALSACE RIGHTFUL GERMAN CLAY| +|08/01/2022 07:40:54| |what's a big city without slums lmao| +|08/01/2022 07:40:57| |Look at those filthy slums| +|08/01/2022 07:40:58| |anzio did it better| +|08/01/2022 07:40:59| |BROWN FRENCHIES| +|08/01/2022 07:40:59| |Cooking with Andou| +|08/01/2022 07:40:59| |Too bad tanned frenchie doesn't have a driver license.| +|08/01/2022 07:41:02| |>buffering at the french| +|08/01/2022 07:41:03| |looks just like paris| +|08/01/2022 07:41:05| |I LOVE THE ONION| +|08/01/2022 07:41:06| |>frog revolution soon| +|08/01/2022 07:41:08| |that poor dog lmao| +|08/01/2022 07:41:09| |FEED THE DOGGY| +|08/01/2022 07:41:09| |sneaking shit into the taiyaki!| +|08/01/2022 07:41:10| |fucking poorfags| +|08/01/2022 07:41:10| |Ah, yes, authentic French cuisine | +|08/01/2022 07:41:10| |ALSACE IS IN CHINESE HISTORY BOOKS| +|08/01/2022 07:41:10| |fishe au chocolat| +|08/01/2022 07:41:12| |Just look at how fucking oily she is holy shit| +|08/01/2022 07:41:13| |Andou is a shitskin| +|08/01/2022 07:41:13| |>french takoyaki| +|08/01/2022 07:41:13| |very authentic paris vibes| +|08/01/2022 07:41:14| >shit +|08/01/2022 07:41:15| |turds in food?| +|08/01/2022 07:41:15| POOP +|08/01/2022 07:41:17| |LOG OF POO| +|08/01/2022 07:41:17| |SHIT TAYAKI| +|08/01/2022 07:41:18| |inferior cuisine | +|08/01/2022 07:41:18| |HEYO MACHI| +|08/01/2022 07:41:19| taiyaki +|08/01/2022 07:41:20| |traditional french taiyaki| +|08/01/2022 07:41:20| |she has cute eyes| +|08/01/2022 07:41:21| |Anzio would have a heart attack if they saw this| +|08/01/2022 07:41:23| |REP ANDOU| +|08/01/2022 07:41:25| |>angery taeyaki| +|08/01/2022 07:41:25| |The FDA's not gonna like this...| +|08/01/2022 07:41:28| |None of these girls are french| +|08/01/2022 07:41:28| NAZIS +|08/01/2022 07:41:29| |FUCK THE POLICE| +|08/01/2022 07:41:31| SIEG +|08/01/2022 07:41:33| |This is just Paris wtf| +|08/01/2022 07:41:33| |Imagine if this is ghetto Anzou| +|08/01/2022 07:41:33| |PUT SHIT ON TAIYAKI AND THEY WONT REALIZE| +|08/01/2022 07:41:33| |oh fuck, the taxman| +|08/01/2022 07:41:34| |revolution taiyaki| +|08/01/2022 07:41:36| |The FDA can suck my dick| +|08/01/2022 07:41:36| |wazza wazza| +|08/01/2022 07:41:36| GESHTAP +|08/01/2022 07:41:36| |OSHIDA A SHIT A SHITTTTTTTTTTTTTTTTTTTT| +|08/01/2022 07:41:37| |Smelly girls with long, thick, and fluffy hair is my fetish | +|08/01/2022 07:41:37| |VIVE LE REVOLUTION| +|08/01/2022 07:41:37| |>unko taiyaki| +|08/01/2022 07:41:38| |rena my wife| +|08/01/2022 07:41:39| |OH SHIT ITS MORE FR*NCH| +|08/01/2022 07:41:42| LOL +|08/01/2022 07:41:42| |Disdain for plebs| +|08/01/2022 07:41:44| |STINKY FRENCH| +|08/01/2022 07:41:45| |FATASS FROG| +|08/01/2022 07:41:46| IMAGINE +|08/01/2022 07:41:46| |Greesy and sweaty, just like real Frenchmen.| +|08/01/2022 07:41:46| |get these white people out of the hood| +|08/01/2022 07:41:47| |HON HON TIME| +|08/01/2022 07:41:48| SMELLY +|08/01/2022 07:41:51| |imagine the smell| +|08/01/2022 07:41:52| |imagine the smell| +|08/01/2022 07:41:52| |>i'm here to OHOHOHO at you| +|08/01/2022 07:41:53| |GET THE GUILLOTINE| +|08/01/2022 07:41:53| |wtf mean| +|08/01/2022 07:41:54| >pabreeze +|08/01/2022 07:41:56| |BREAK THAT PEASANTS HAND| +|08/01/2022 07:41:58| |I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HATE THE FDA I HAT| +|08/01/2022 07:41:59| |that ship must smell awful| +|08/01/2022 07:41:59| |Animated Asparagus never| +|08/01/2022 07:42:00| |Based aristocrats dabbing on the plebs| +|08/01/2022 07:42:02| |Angry sex| +|08/01/2022 07:42:04| PABREZE +|08/01/2022 07:42:05| |second time something got called tyranny in GuP| +|08/01/2022 07:42:07| |I HATE THE FDA| +|08/01/2022 07:42:08| |Muh dick| +|08/01/2022 07:42:08| |FUCKING DISGUSTING POOR MIGRANT| +|08/01/2022 07:42:13| |SO DA SO DA| +|08/01/2022 07:42:13| |DOWN WITH THE NOBILITY| +|08/01/2022 07:42:14| |what was the first?| +|08/01/2022 07:42:14| |but globohomo made the ships...| +|08/01/2022 07:42:15| |soda soda| +|08/01/2022 07:42:15| |JUST EAT CAKE| +|08/01/2022 07:42:16| |THESE GIRLS ARE BUILT FOR HATE SEX| +|08/01/2022 07:42:16| |Revolution when?| +|08/01/2022 07:42:17| |SODA SODA| +|08/01/2022 07:42:17| |SORA SORA| +|08/01/2022 07:42:18| |IMAGINE THE SMELL| +|08/01/2022 07:42:18| |SODA SODA| +|08/01/2022 07:42:19| |fuck the poor man| +|08/01/2022 07:42:20| |SODA SODA| +|08/01/2022 07:42:22| |SOU DA SOU DA !| +|08/01/2022 07:42:22| |REMOVE KEBAB| +|08/01/2022 07:42:22| |SORA SORA| +|08/01/2022 07:42:22| |SODA SODA| +|08/01/2022 07:42:25| |just eat cake bruh| +|08/01/2022 07:42:26| |BUILT FOR REVOLUTION| +|08/01/2022 07:42:26| |Hear! Hear! | +|08/01/2022 07:42:27| KEBAB +|08/01/2022 07:42:27| |>FRENCH """"CUISINE""""| +|08/01/2022 07:42:28| |make the stalls disappear and make them pay for it| +|08/01/2022 07:42:29| |just stop being poor it's easy| +|08/01/2022 07:42:29| |FUCK the bourgeoisie| +|08/01/2022 07:42:29| TESHOKU +|08/01/2022 07:42:30| |IMAGINE NOT ABLE TO BUY CAVIAR| +|08/01/2022 07:42:32| |IMAGINE BEING A POORFAG| +|08/01/2022 07:42:32| |REMOVE FRANCE| +|08/01/2022 07:42:32| |BASED ANDOU| +|08/01/2022 07:42:33| |SODA SODA| +|08/01/2022 07:42:34| |SODA SODA| +|08/01/2022 07:42:34| |SOUDA SOUDA| +|08/01/2022 07:42:35| |escargot is good| +|08/01/2022 07:42:38| |das racis| +|08/01/2022 07:42:38| |SODA SODA| +|08/01/2022 07:42:39| |ANDOU SEEEEEEEEEXXXXXXXXXXX| +|08/01/2022 07:42:39| |SODA SODA| +|08/01/2022 07:42:40| |FRENCH POLICE DISCRIMINATES MINORITIES 1912 COLORED| +|08/01/2022 07:42:40| |POORFAG BE LIKE| +|08/01/2022 07:42:41| |Tony Kaku| +|08/01/2022 07:42:42| TONIKAKU +|08/01/2022 07:42:43| |TONY KAKU WILL SETTLE THIS| +|08/01/2022 07:42:44| Kek +|08/01/2022 07:42:45| |All of these girls are Japanese*| +|08/01/2022 07:42:45| ooooooo +|08/01/2022 07:42:48| |I like Dr. Pepper| +|08/01/2022 07:42:48| GUILLOTINE +|08/01/2022 07:42:50| |Don't need to pay if you cook it yourself| +|08/01/2022 07:42:51| |Toni Ceaxceaux| +|08/01/2022 07:42:52| |>being poor| +|08/01/2022 07:42:53| |we wuz carnies and shit| +|08/01/2022 07:42:56| |peasants btfo| +|08/01/2022 07:42:57| |POV: YOUR STARTING A REVOLUTION| +|08/01/2022 07:43:00| CUTE +|08/01/2022 07:43:01| sheeeeeeeeit +|08/01/2022 07:43:02| |this is what the french get for letting colonies get citizenship| +|08/01/2022 07:43:02| |ANARCHIST ANDOU| +|08/01/2022 07:43:03| |the niggers of frogs| +|08/01/2022 07:43:04| ;_; +|08/01/2022 07:43:05| |ANDOU OUR NEXT NAPOLEON| +|08/01/2022 07:43:07| Sodomommy +|08/01/2022 07:43:07| |Fuck peasants, | +|08/01/2022 07:43:08| |cute poorfags| +|08/01/2022 07:43:09| dog +|08/01/2022 07:43:10| DOG +|08/01/2022 07:43:11| |loom at that scraggy dog| +|08/01/2022 07:43:12| |literally 1789| +|08/01/2022 07:43:12| |anime eyes dog....| +|08/01/2022 07:43:15| dog +|08/01/2022 07:43:15| look +|08/01/2022 07:43:15| |based poorfags| +|08/01/2022 07:43:16| |WHAT THE DOG DOIN| +|08/01/2022 07:43:17| |cute dog| +|08/01/2022 07:43:17| dooooooooog +|08/01/2022 07:43:18| |Her only choice is to revolutionize the aircraft carrier.| +|08/01/2022 07:43:19| |JUST EAT THE DOG| +|08/01/2022 07:43:20| |They are going to eat that dog| +|08/01/2022 07:43:22| |if only lenin could see us now| +|08/01/2022 07:43:22| >ALGERIANS +|08/01/2022 07:43:22| |ANDOU ROBSPIERRE| +|08/01/2022 07:43:24| |Fluffy hair| +|08/01/2022 07:43:24| |no you dont| +|08/01/2022 07:43:24| |its aight, they got the dog on their side| +|08/01/2022 07:43:25| |>HUMAN RIGHTS| +|08/01/2022 07:43:26| |>frogs busting ou the giloutness again| +|08/01/2022 07:43:27| |CIVIL WAR NOW| +|08/01/2022 07:43:28| LIBERTE +|08/01/2022 07:43:29| |>HUMAN RIGHTS| +|08/01/2022 07:43:30| |ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE ANDOU LOVE | +|08/01/2022 07:43:30| |Based sub-Fr*nch| +|08/01/2022 07:43:30| >FROGS +|08/01/2022 07:43:31| BASEDBASEDBASED +|08/01/2022 07:43:31| |NO MORE!!!!| +|08/01/2022 07:43:31| |no rights| +|08/01/2022 07:43:32| |HI REDDIT| +|08/01/2022 07:43:33| |Filthy brown skin| +|08/01/2022 07:43:34| |1789 LMAO| +|08/01/2022 07:43:35| |WHY CAN'T ALL FROGS LOOK LIKE ANZU| +|08/01/2022 07:43:35| |ATTENTION IT IS NOW FRENCH ALGERIAN QUEEN FRIDAY| +|08/01/2022 07:43:35| |Meanwhile Eclair just has her stomach to worry about| +|08/01/2022 07:43:36| |ZETTAI UNMEI MOKUSHIROKU| +|08/01/2022 07:43:36| REVOLUTION +|08/01/2022 07:43:37| |GULLIOTINE TIME| +|08/01/2022 07:43:37| MOMOAH +|08/01/2022 07:43:37| |AHAHAHHAHAHAHAHAHAHAHA PEASANTS THINK THEYRE HUMAN| +|08/01/2022 07:43:37| |ANDOU RABU ANDOU RABU| +|08/01/2022 07:43:38| |>HUMAN RIGHTS| +|08/01/2022 07:43:38| |NO MORE FOOD| +|08/01/2022 07:43:39| |Just join Duce. They don't hate your cooking as much| +|08/01/2022 07:43:39| |1789 will commence again| +|08/01/2022 07:43:39| |KAKUMEI WO| +|08/01/2022 07:43:40| |fr*nch dont have rights| +|08/01/2022 07:43:43| |These girls are all Japanese* | +|08/01/2022 07:43:43| |PARTY LIKE ITS 1789| +|08/01/2022 07:43:45| |NO MOAH| +|08/01/2022 07:43:45| |CLASS WAR NOW!!!| +|08/01/2022 07:43:46| |escargots are just normal slugs| +|08/01/2022 07:43:48| |FROG LEGS| +|08/01/2022 07:43:48| |God I fucking hate poor people| +|08/01/2022 07:43:51| |DOWN WITH THE RICH| +|08/01/2022 07:43:52| |NO MORE SHIT FRENCH FOOD!!| +|08/01/2022 07:43:54| |no moa frenchoid "cuisine"| +|08/01/2022 07:43:54| |A FUCKING BAGUETTE | +|08/01/2022 07:43:56| BAGUETTE +|08/01/2022 07:43:56| |FUCKING BAGETTE| +|08/01/2022 07:43:57| |FUCK YOU OSHIDA| +|08/01/2022 07:43:58| |frenchfags on /int/ love this image| +|08/01/2022 07:43:58| BREAD +|08/01/2022 07:43:58| |STALE BREAD CLUBS| +|08/01/2022 07:43:59| |OSHIDA BRUTALITY| +|08/01/2022 07:43:59| |DESU WA| +|08/01/2022 07:44:01| A +|08/01/2022 07:44:01| |>fucking bread| +|08/01/2022 07:44:01| >BAGGUETTE +|08/01/2022 07:44:01| |If only the Nobility won the Revolution| +|08/01/2022 07:44:01| >yellowvests +|08/01/2022 07:44:02| |A FUCKING BAUGETTE| +|08/01/2022 07:44:03| BAGUETTE +|08/01/2022 07:44:03| |>implying duce wants these "people"| +|08/01/2022 07:44:03| |NO MORE ESCARGOT| +|08/01/2022 07:44:04| FUCKING +|08/01/2022 07:44:04| |A FUCKING BAGUETTE| +|08/01/2022 07:44:04| |SHE'S FUCKING ARMED| +|08/01/2022 07:44:07| |A FUCKING BAGUTTE| +|08/01/2022 07:44:08| |SHOVE THE BAGUETTE UP HER ASS| +|08/01/2022 07:44:09| |WE WANT TAIYAKI| +|08/01/2022 07:44:10| |rise up/| +|08/01/2022 07:44:10| |stale baguette bludgeons are deadly| +|08/01/2022 07:44:10| REVOLUTIION +|08/01/2022 07:44:11| |>riot police with baguettes| +|08/01/2022 07:44:11| |>FR*NCH RIOTS| +|08/01/2022 07:44:12| |>A FUCKING BAGUETTE| +|08/01/2022 07:44:12| fr*gs +|08/01/2022 07:44:12| |Soy sauce is French? Who knew.| +|08/01/2022 07:44:12| |Bring back Napoleon| +|08/01/2022 07:44:14| |SHE'S DANGEROUS| +|08/01/2022 07:44:15| ENTER +|08/01/2022 07:44:15| |All these girls are Japanese* | +|08/01/2022 07:44:15| SKRRRRRRRRRRRRRT +|08/01/2022 07:44:16| |CARRIAGE DRIFTO| +|08/01/2022 07:44:19| |LOOK OUT SHE'S GOT A BAGUETTE| +|08/01/2022 07:44:20| DRIFT +|08/01/2022 07:44:20| |A FUCKING B A G U E T T E| +|08/01/2022 07:44:21| |DRIFT THE MF CARRIGE| +|08/01/2022 07:44:22| larping +|08/01/2022 07:44:22| |cake god arrives| +|08/01/2022 07:44:22| DRIFTO +|08/01/2022 07:44:24| |EUROBEAT | +|08/01/2022 07:44:24| |THIS FAT FUCK CAN HAVE SEX WITH ME| +|08/01/2022 07:44:26| ENTER +|08/01/2022 07:44:27| ENTER +|08/01/2022 07:44:27| |>A FUCKING BAGUETTE| +|08/01/2022 07:44:29| FAT +|08/01/2022 07:44:31| |Marie Antoinette| +|08/01/2022 07:44:31| IMAGINE +|08/01/2022 07:44:31| |time to behead queen frog| +|08/01/2022 07:44:34| |CARRIAGE DRIFT?!?!?!?!?| +|08/01/2022 07:44:34| |How does a horse pull marie's weight?| +|08/01/2022 07:44:35| |WE WERE THIS CLOSE TO A BLOOD BATH| +|08/01/2022 07:44:35| |Baguette makes best batons| +|08/01/2022 07:44:35| |DON'T DO IT ANDOU DON'T NEGOTIATE WITH THEM| +|08/01/2022 07:44:36| |FUCK THE FRENCH| +|08/01/2022 07:44:36| |MARIE'S FAT FUCKING THIGHS| +|08/01/2022 07:44:36| |how she slim| +|08/01/2022 07:44:37| |BAGUETTE SEGGS | +|08/01/2022 07:44:39| |Can aircraft carriers drift in this world too?| +|08/01/2022 07:44:39| |FUCK LE FRANCE| +|08/01/2022 07:44:40| |There was a non zero percent chance the carriage could've clipped Andou and killed her| +|08/01/2022 07:44:42| |>150 cm >150 kg| +|08/01/2022 07:44:43| |I WANNA FUCK THIS FAT FROG| +|08/01/2022 07:44:44| FAT +|08/01/2022 07:44:44| |-ICKS ON YOUR RIGHT| +|08/01/2022 07:44:48| |a pussy that uses riotshield| +|08/01/2022 07:44:48| |Marie Antoinette| +|08/01/2022 07:44:48| |>Bownl in your left?| +|08/01/2022 07:44:49| |JUST LET THEM EAT CAKE| +|08/01/2022 07:44:52| |The French are always revolting. Nothing is more revolting than a Frenchman except two Frenchmen.| +|08/01/2022 07:44:52| |FRENCH CUNNY| +|08/01/2022 07:44:54| |revolution appeased| +|08/01/2022 07:44:54| |PUT SHIT ON TAIYAKI| +|08/01/2022 07:44:55| |eat cock| +|08/01/2022 07:44:59| |>10 CM >200 KG| +|08/01/2022 07:45:00| hamu +|08/01/2022 07:45:01| POOP!! +|08/01/2022 07:45:02| |THIS REVOLUTION WAS APPEASED| +|08/01/2022 07:45:02| SEX +|08/01/2022 07:45:02| |Just join Anzio and give them better tanks| +|08/01/2022 07:45:05| FAT +|08/01/2022 07:45:07| |All these girls are Japanese* | +|08/01/2022 07:45:09| |CAM ON| +|08/01/2022 07:45:10| |FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE FAT MARIE | +|08/01/2022 07:45:11| |I kinda want this| +|08/01/2022 07:45:12| |FRENCH REVOLUTION SOLVED| +|08/01/2022 07:45:12| |LET THEM EAT TAKIYAKI| +|08/01/2022 07:45:13| |HIGH IQ FAT| +|08/01/2022 07:45:13| |Fat Fr*nch| +|08/01/2022 07:45:15| |fucking reformfags ruining another good revolution| +|08/01/2022 07:45:15| |based marie| +|08/01/2022 07:45:17| |HOW FAT IS ANZU'S ASS| +|08/01/2022 07:45:17| |FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK FAT FUCK | +|08/01/2022 07:45:17| |I want this too| +|08/01/2022 07:45:19| |>free food| +|08/01/2022 07:45:19| |>PIECE OF YOUTH| +|08/01/2022 07:45:20| |Beheading that fish, how fitting| +|08/01/2022 07:45:20| |*they're all japs from middle aged families| +|08/01/2022 07:45:21| |because shes a fat fuck| +|08/01/2022 07:45:27| |>war solved| +|08/01/2022 07:45:27| |Asparagus isn't canon after all huh| +|08/01/2022 07:45:28| |leave it to an all girl school to eat the fish| +|08/01/2022 07:45:29| |>Anzu >Ass| +|08/01/2022 07:45:29| |>FOOD ANALOGY| +|08/01/2022 07:45:30| |Fat fuck just wanted to eat| +|08/01/2022 07:45:31| |Marie makes up for 80% of her school's weight (including the ship)| +|08/01/2022 07:45:32| |>both sides surrendered| +|08/01/2022 07:45:33| |Custard taiyaki best taiyaki| +|08/01/2022 07:45:36| |red bean taiyaki suck ass| +|08/01/2022 07:45:36| |Now kiss| +|08/01/2022 07:45:37| |EXECUTE MARIE| +|08/01/2022 07:45:37| |delicious non-french food| +|08/01/2022 07:45:40| |Sounds pretty disgusting tbh| +|08/01/2022 07:45:41| |I think shes just fat| +|08/01/2022 07:45:43| |fr*nch have no good side| +|08/01/2022 07:45:43| |God that sounds disgusting| +|08/01/2022 07:45:46| |literally let them eat cake| +|08/01/2022 07:45:47| |two nukes were not enough| +|08/01/2022 07:45:47| |please just fuck each other| +|08/01/2022 07:45:47| ew +|08/01/2022 07:45:49| thick +|08/01/2022 07:45:49| GAAAAYYYYYY +|08/01/2022 07:45:50| UNITY +|08/01/2022 07:45:54| LEWD +|08/01/2022 07:45:56| |It's not gay, it's French| +|08/01/2022 07:45:56| Marie-sama... +|08/01/2022 07:45:57| |DON'T DO IT ANDOU| +|08/01/2022 07:45:58| |>last time marie left teh carrier it raised 6 inches and threated to capsize| +|08/01/2022 07:45:58| mods +|08/01/2022 07:45:58| |NOW FUCK| +|08/01/2022 07:45:58| |something something the friends we made along the way| +|08/01/2022 07:45:59| wtf +|08/01/2022 07:46:00| |3 nukes girls und panzer| +|08/01/2022 07:46:01| |GAY GAY GAY GAY| +|08/01/2022 07:46:01| |wtf I want a race war| +|08/01/2022 07:46:01| |GAE PHROHS| +|08/01/2022 07:46:02| |One struggle| +|08/01/2022 07:46:02| |we cutting to ova now right| +|08/01/2022 07:46:03| |At least one of them is wearing protection| +|08/01/2022 07:46:06| |let them eat each other [out]| +|08/01/2022 07:46:07| |it's that easy| +|08/01/2022 07:46:07| |she didn't remove the glove| +|08/01/2022 07:46:08| |the most pointless conflict of all time| +|08/01/2022 07:46:09| |Soy sauce stuffed fish is going to be next on the menu| +|08/01/2022 07:46:11| |it's a metaphor for eating ass| +|08/01/2022 07:46:11| |race war is postponed| +|08/01/2022 07:46:11| |JUST LOCK THEM IN A ROOM TOGETHER UNTIL THEY BOTH FUCK EACH OTHER LIKE MONKEY| +|08/01/2022 07:46:13| |>no class war in GuP| +|08/01/2022 07:46:13| |>escargot udon| +|08/01/2022 07:46:15| |ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX ANDOU SEX | +|08/01/2022 07:46:16| |>THE KNOW| +|08/01/2022 07:46:18| |I'm too drunk to get what's going on| +|08/01/2022 07:46:19| |>THEY KNO0W| +|08/01/2022 07:46:20| |Jesus fucking christ does yukari fool anyone at this point| +|08/01/2022 07:46:20| >AWARE +|08/01/2022 07:46:20| ROLLINGU +|08/01/2022 07:46:20| |like that one doujin| +|08/01/2022 07:46:22| |>THEY KNOW| +|08/01/2022 07:46:23| WWWWWWWW +|08/01/2022 07:46:23| |DOUBLE OH SEVEN HERE| +|08/01/2022 07:46:25| |Yes, the one who is certainly not a spy| +|08/01/2022 07:46:26| |CLASS WAR FALSE FLAG| +|08/01/2022 07:46:26| ACTION +|08/01/2022 07:46:28| |>no violent clash that ends in someone getting beheaded| +|08/01/2022 07:46:29| |CUTE DORK| +|08/01/2022 07:46:30| >spy +|08/01/2022 07:46:32| |Totally inconspicous| +|08/01/2022 07:46:33| |Yukari is a blessed autist| +|08/01/2022 07:46:33| |>dumbass yukari is announcing her presence again| +|08/01/2022 07:46:34| |Dumb yukari moment| +|08/01/2022 07:46:35| |The one who's recording and saying that she's a spy| +|08/01/2022 07:46:36| |SGT ODDBALL YOU DUMBASS| +|08/01/2022 07:46:37| |yukari is perv| +|08/01/2022 07:46:38| |I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS I HATE FRENCH FILMS | +|08/01/2022 07:46:39| |world's shittest spy| +|08/01/2022 07:46:39| |ACT NATURAL| +|08/01/2022 07:46:40| |USELESS SPY| +|08/01/2022 07:46:45| |how obvious can she be?| +|08/01/2022 07:46:46| |>walking around with a camera| +|08/01/2022 07:46:46| |>carries a handheld camera around Why is Yukari so retarded| +|08/01/2022 07:46:48| |>larping inside another larp| +|08/01/2022 07:46:48| |WORLDS BEST SPY| +|08/01/2022 07:46:48| |CUTE AUTIST| +|08/01/2022 07:46:49| |ASS SLAP INCOMING| +|08/01/2022 07:46:49| |dumb spy | +|08/01/2022 07:46:50| >RPers +|08/01/2022 07:46:51| |cute fluffy spy| +|08/01/2022 07:46:53| |thinking of the mr bean movie| +|08/01/2022 07:46:57| |ASS SLAPPING| +|08/01/2022 07:46:58| LOLING +|08/01/2022 07:46:59| |Surely, she can't be the spy| +|08/01/2022 07:47:00| |OSHIDA ASS| +|08/01/2022 07:47:01| |LET'S SEE THE ASS. SLAP.| +|08/01/2022 07:47:06| |Yukari's Holiday| +|08/01/2022 07:47:06| |DUMBASS SPY VLOGGER| +|08/01/2022 07:47:08| |THIS USED TO WORK, YUKARI ISNT DUMB SHES COCKY| +|08/01/2022 07:47:09| |FAT OSHIDIA ASS| +|08/01/2022 07:47:09| |Never underestimate your enemy| +|08/01/2022 07:47:10| |ITS ALL FAKE WTF| +|08/01/2022 07:47:11| |SOD A SODA| +|08/01/2022 07:47:12| |useless spy, better have sex with me| +|08/01/2022 07:47:12| |>world class spy yukari| +|08/01/2022 07:47:14| |JUST FUCK EACH OTHER ALREADY| +|08/01/2022 07:47:15| |I can't believe floof got played like a sucker| +|08/01/2022 07:47:16| |SHOW TITS| +|08/01/2022 07:47:17| |don't put the camera there yukari| +|08/01/2022 07:47:17| |THAT FAT FROG ASS| +|08/01/2022 07:47:18| ASS +|08/01/2022 07:47:19| ASS +|08/01/2022 07:47:19| LEFS +|08/01/2022 07:47:19| |oh, she gonna get spy checked| +|08/01/2022 07:47:19| WEW +|08/01/2022 07:47:19| |BASED YUKARI| +|08/01/2022 07:47:20| BUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTt +|08/01/2022 07:47:20| NICE +|08/01/2022 07:47:20| |How lewd and uncouth| +|08/01/2022 07:47:21| www +|08/01/2022 07:47:22| CUTE +|08/01/2022 07:47:22| |OSHIDA BLUSH| +|08/01/2022 07:47:22| |AAAAAAAAAA BUTTTT| +|08/01/2022 07:47:22| |"shoot" her ass| +|08/01/2022 07:47:23| |WOAH WOAH WOAH| +|08/01/2022 07:47:23| WEW +|08/01/2022 07:47:24| thick +|08/01/2022 07:47:24| |THERE IT IS| +|08/01/2022 07:47:24| |Is Yukari retarded?| +|08/01/2022 07:47:25| |YUKARI WITH THE COVERT OPERATIONS| +|08/01/2022 07:47:25| |trying to panty shot| +|08/01/2022 07:47:25| |Yukari the best spy| +|08/01/2022 07:47:26| |WHAT'S UP GUYSSS YUKARI-CHAN HERE, BACK WITH ANOTHER VIDEO| +|08/01/2022 07:47:26| UPSKIRT +|08/01/2022 07:47:27| |>that blush| +|08/01/2022 07:47:28| butte +|08/01/2022 07:47:29| |CUTE BLUSH CUTE BUTT| +|08/01/2022 07:47:29| ASSSSSSSSS +|08/01/2022 07:47:30| |>FILMING PANTYSHOTS| +|08/01/2022 07:47:30| |GAY GAY GAY GAY GAY GAY GAY| +|08/01/2022 07:47:30| ANGLE +|08/01/2022 07:47:30| UNF +|08/01/2022 07:47:31| |>low angle Based Yukari| +|08/01/2022 07:47:31| |NAISU HIPPU| +|08/01/2022 07:47:32| |FROG BUTT| +|08/01/2022 07:47:32| |Panty Shot| +|08/01/2022 07:47:32| >retarded +|08/01/2022 07:47:33| |5th generation information warfare| +|08/01/2022 07:47:34| |CUTE BLUSH| +|08/01/2022 07:47:34| |>presence concealed| +|08/01/2022 07:47:35| |what is this retard doing?| +|08/01/2022 07:47:35| |II DESU NE| +|08/01/2022 07:47:36| UNF +|08/01/2022 07:47:36| |oh my| +|08/01/2022 07:47:37| |yukari butt| +|08/01/2022 07:47:37| |yukarin catching the pantishots| +|08/01/2022 07:47:37| |yukari still unnoticed| +|08/01/2022 07:47:38| |Yukari too fluffy to survive being trampled on| +|08/01/2022 07:47:40| |What the fuck is yukari doing| +|08/01/2022 07:47:40| |how does yukari think no one saw her| +|08/01/2022 07:47:41| RAPE +|08/01/2022 07:47:43| |going for the pantsu shots, NICE| +|08/01/2022 07:47:45| TRAMPLED +|08/01/2022 07:47:45| |>the best self proclaimed spy| +|08/01/2022 07:47:46| |spy check!| +|08/01/2022 07:47:46| |Yukari getting more clips for her /u/ folder| +|08/01/2022 07:47:47| |Yooker owned| +|08/01/2022 07:47:48| GOD +|08/01/2022 07:47:49| |So uhh did Yukari just give up or something?| +|08/01/2022 07:47:51| gangbang +|08/01/2022 07:47:51| |NO STOP KICKING YUKARI| +|08/01/2022 07:47:53| F +|08/01/2022 07:47:54| wwwwwwwwwwwwwwwwwwwwww +|08/01/2022 07:47:54| SEX +|08/01/2022 07:47:57| UP-SKIRT +|08/01/2022 07:47:58| RAPE +|08/01/2022 07:47:58| RUSED +|08/01/2022 07:47:59| |>SHE DOESN'T KNOW| +|08/01/2022 07:47:59| |ITS ALL AS PLANNED| +|08/01/2022 07:48:00| |Kick the floof| +|08/01/2022 07:48:00| |SMOKE GRENADE| +|08/01/2022 07:48:02| |kill her| +|08/01/2022 07:48:05| RUSED +|08/01/2022 07:48:05| |She'd gonna turn red at any moment| +|08/01/2022 07:48:06| CUTTTTTTTOOOOOOOOOOO +|08/01/2022 07:48:07| |SMOKE GRENADE!!!!| +|08/01/2022 07:48:08| |Normal day in Paris| +|08/01/2022 07:48:09| |Played like a fiddle| +|08/01/2022 07:48:09| |so are we acting or not| +|08/01/2022 07:48:09| |Dumb floof| +|08/01/2022 07:48:10| CUTTO +|08/01/2022 07:48:10| FAT +|08/01/2022 07:48:10| |I want to lick her cheek| +|08/01/2022 07:48:10| cuta +|08/01/2022 07:48:11| |>dust is smoke grenade I love this series| +|08/01/2022 07:48:12| |yukari is so autistic kek| +|08/01/2022 07:48:13| |that's a wrap!| +|08/01/2022 07:48:13| |ALL ACCORDING TO KEIKAKU *(keikaku means plan)| +|08/01/2022 07:48:13| |>nice ass slap oshida| +|08/01/2022 07:48:16| |SHE BOUGHT IT| +|08/01/2022 07:48:18| |I love the onion| +|08/01/2022 07:48:19| |J'AIME L'OIGNON| +|08/01/2022 07:48:19| |ass slapping| +|08/01/2022 07:48:21| |onion time| +|08/01/2022 07:48:23| |no it wasnt| +|08/01/2022 07:48:25| |vital ass slapping| +|08/01/2022 07:48:26| |I LOVE ONION!!!!| +|08/01/2022 07:48:26| |OOARAI IS GOING TO GET FUCKED| +|08/01/2022 07:48:27| |ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS ONION FROGS | +|08/01/2022 07:48:27| |>ad libbing the ass slap what a slut| +|08/01/2022 07:48:28| |impossible how did yukari get played| +|08/01/2022 07:48:29| |all according to keiki| +|08/01/2022 07:48:29| |god I love me a tasty onion| +|08/01/2022 07:48:30| |I LOVE THE ONION| +|08/01/2022 07:48:32| ONION +|08/01/2022 07:48:32| ONION +|08/01/2022 07:48:32| |FRENCH ONION FETISH SONG| +|08/01/2022 07:48:33| GRAPE +|08/01/2022 07:48:34| |AUS PAS| +|08/01/2022 07:48:35| |Actual smoke grenade used| +|08/01/2022 07:48:35| |Critical ass slapping| +|08/01/2022 07:48:36| |J'AIME L'OIGNON| +|08/01/2022 07:48:37| |there's poop on her cheek| +|08/01/2022 07:48:40| |AUSTRIANS LEAVE THIS CHAT RIGHT NOW| +|08/01/2022 07:48:41| |OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD OPPAI KAMERAD | +|08/01/2022 07:48:41| |AU PAS AU PAS| +|08/01/2022 07:48:42| |onion+garlic+cheese=nothing can go wrong| +|08/01/2022 07:48:43| |ONION GOOD ONION FRIED!| +|08/01/2022 07:48:43| |I LOVE ONION| +|08/01/2022 07:48:43| |AU PAS AU PAS AUPAS| +|08/01/2022 07:48:44| |AU PAS AU PAS| +|08/01/2022 07:48:44| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:44| |AUS PAS CAMARADE| +|08/01/2022 07:48:45| |>oppai oppai oppai| +|08/01/2022 07:48:45| |AU PAS| +|08/01/2022 07:48:46| HONHONHONHON +|08/01/2022 07:48:48| |i hate onion| +|08/01/2022 07:48:49| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:49| |Små grodorna små grodorna| +|08/01/2022 07:48:50| |FUCK AUSTRIANS| +|08/01/2022 07:48:51| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:52| |AU PAS CAMARADES| +|08/01/2022 07:48:52| |au pas au pas au pas| +|08/01/2022 07:48:54| FURENCHU +|08/01/2022 07:48:56| |AU PA CAMARAD AU PA CAMARAD AU PA AU PA AUPA| +|08/01/2022 07:48:56| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:56| |AU PAS AU PAS AU PAS| +|08/01/2022 07:48:57| |j'aime l'oignon| +|08/01/2022 07:48:57| OUIOUIOUIOUIOUIOUIOUIOUI +|08/01/2022 07:48:58| |I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +|08/01/2022 07:48:58| |Au pas| +|08/01/2022 07:48:59| | APAS PAS PAS PAS PAS | +|08/01/2022 07:49:00| |AU PAS AU PAS AU PAS| +|08/01/2022 07:49:00| |Why do Frogs sing about Onions| +|08/01/2022 07:49:01| |är lustiga att se| +|08/01/2022 07:49:01| |kino editing| +|08/01/2022 07:49:02| |lmao I didnt remeber that logo| +|08/01/2022 07:49:03| |FUCK YOUR GODDAMN ONIONS| +|08/01/2022 07:49:06| >LUCASFILMS +|08/01/2022 07:49:12| 1941 +|08/01/2022 07:49:13| copyright +|08/01/2022 07:49:14| >1941 +|08/01/2022 07:49:14| >1941 +|08/01/2022 07:49:14| >1941 +|08/01/2022 07:49:15| >1941 +|08/01/2022 07:49:16| >1941 +|08/01/2022 07:49:16| |>Sings french >Cant get the VA to sing in German| +|08/01/2022 07:49:16| |Yukari really is the Lucas of our generation| +|08/01/2022 07:49:20| |Opa? French are greeks now?| +|08/01/2022 07:49:20| >1941 +|08/01/2022 07:49:22| >1941 +|08/01/2022 07:49:23| >1941 +|08/01/2022 07:49:24| |Love me marches, love me onions, 'ate spies simple as| +|08/01/2022 07:49:25| autism +|08/01/2022 07:49:26| |>guppies confirmed to be in ww2| +|08/01/2022 07:49:27| |THX The audience is fluff| +|08/01/2022 07:49:29| |>LUCAS FULM| +|08/01/2022 07:49:31| |love her so fucking much| +|08/01/2022 07:49:35| |REUSED FOOTAGE| +|08/01/2022 07:49:36| |GREAT DOCUMENTARY| +|08/01/2022 07:49:36| |SHES JUST STANDING RIGHT THERE| +|08/01/2022 07:49:36| REVOLUTION +|08/01/2022 07:49:37| |GHX AUDIO| +|08/01/2022 07:49:41| |das racisss| +|08/01/2022 07:49:42| |yukari made the prequels| +|08/01/2022 07:49:46| >colorized +|08/01/2022 07:49:53| |shame the ass slap didn't make the cut| +|08/01/2022 07:49:55| |SODA SODA| +|08/01/2022 07:49:59| |SODA SODA| +|08/01/2022 07:50:03| |SODA SODA| +|08/01/2022 07:50:04| |SODA SODA| +|08/01/2022 07:50:06| |Kino cinematography| +|08/01/2022 07:50:12| |ASS SHOT| +|08/01/2022 07:50:13| |VERY IMPORTANT| +|08/01/2022 07:50:14| |Yukari best spy| +|08/01/2022 07:50:14| |If this is how Yukari does things, how retarded were the Americans not to notice her?| +|08/01/2022 07:50:15| |This feels familiar.....| +|08/01/2022 07:50:15| |World record speed editing| +|08/01/2022 07:50:18| |wait they really remade this from a different angle?| +|08/01/2022 07:50:18| |>no low angle pantsu shot| +|08/01/2022 07:50:19| |let them eat ass| +|08/01/2022 07:50:24| |>no upskirt| +|08/01/2022 07:50:24| |We got something better than the ass shot| +|08/01/2022 07:50:26| BOOBA +|08/01/2022 07:50:28| |wheres the ass shot| +|08/01/2022 07:50:31| |Yukarin loves her yuri| +|08/01/2022 07:50:33| |Marie still eating the whole time| +|08/01/2022 07:50:34| LEGS +|08/01/2022 07:50:35| |>Being surprised that the burgers were retarded| +|08/01/2022 07:50:38| >barbershop +|08/01/2022 07:50:39| pottery +|08/01/2022 07:50:39| |classic film| +|08/01/2022 07:50:47| keiki +|08/01/2022 07:50:50| |How did she do this twice without getting caught?| +|08/01/2022 07:50:51| |kay just laughed when yukari was outted| +|08/01/2022 07:50:52| |is the audio off for anyone else???| +|08/01/2022 07:50:57| |SEX WITH YUKARI| +|08/01/2022 07:50:58| |that fat fuck ain't gonna stop eating aint she| +|08/01/2022 07:50:59| |>yukari pov| +|08/01/2022 07:51:00| |unmute it on the bottom left| +|08/01/2022 07:51:01| |>Yukari knows 3d and compositing softwares as well| +|08/01/2022 07:51:04| |Mako eying up the real cake, Marie| +|08/01/2022 07:51:06| |Momo shut up| +|08/01/2022 07:51:06| |audio seems in sync for me| +|08/01/2022 07:51:13| |There is no sound. Der Finale is a silent film.| +|08/01/2022 07:51:15| |Momo taichou!| +|08/01/2022 07:51:16| Anzu +|08/01/2022 07:51:16| TAICHO? +|08/01/2022 07:51:17| |"do we have enough headlight fluid?"| +|08/01/2022 07:51:19| |momo retard| +|08/01/2022 07:51:21| |just you anon| +|08/01/2022 07:51:24| |cute fluff| +|08/01/2022 07:51:25| TAICHO +|08/01/2022 07:51:31| |biden of commander| +|08/01/2022 07:51:31| |I want to mess up the floof| +|08/01/2022 07:51:32| |>yukari got stepped on by french girls (japanese) giwtwm| +|08/01/2022 07:51:33| |fat fighters| +|08/01/2022 07:51:34| |Who uses antifreeze as ammo?| +|08/01/2022 07:51:36| |cute girl pilots| +|08/01/2022 07:51:38| |momo.exe stopped working| +|08/01/2022 07:51:38| Panes +|08/01/2022 07:51:45| |There's an O-I down there| +|08/01/2022 07:51:47| |imagine a proper war film made by the gup staff| +|08/01/2022 07:51:47| |Some sort of flying tanks?| +|08/01/2022 07:51:47| |>girls in planes| +|08/01/2022 07:51:48| |CABRON COATED PLANES| +|08/01/2022 07:51:51| |Neat planes| +|08/01/2022 07:51:56| |ALISA I LOVE YOU| +|08/01/2022 07:52:02| |Koume midget| +|08/01/2022 07:52:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:52:06| |that O-I is Finn property now| +|08/01/2022 07:52:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 07:52:10| |Fucking italians| +|08/01/2022 07:52:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:52:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:52:11| DUCE +|08/01/2022 07:52:12| DUCE +|08/01/2022 07:52:15| |THE STAKES HAVE NEVER BEEN LOWER| +|08/01/2022 07:52:16| |is this still df or df2 already?| +|08/01/2022 07:52:18| >italians +|08/01/2022 07:52:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 07:52:21| df1 +|08/01/2022 07:52:22| |You know who DOESN'T love Alisa?| +|08/01/2022 07:52:23| |NEET STRONK| +|08/01/2022 07:52:24| STRONK +|08/01/2022 07:52:24| |pirates soon| +|08/01/2022 07:52:26| |STUG LIFE| +|08/01/2022 07:52:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 07:52:28| TSUYOI +|08/01/2022 07:52:31| |Nobody loves alisa| +|08/01/2022 07:52:35| stronk +|08/01/2022 07:52:39| |Muscle girls| +|08/01/2022 07:52:42| |cute noriko| +|08/01/2022 07:52:45| |I rabu alisa| +|08/01/2022 07:52:53| YARR +|08/01/2022 07:52:57| WW1 +|08/01/2022 07:52:57| |I HATE THE SHARKS| +|08/01/2022 07:52:59| ENTER +|08/01/2022 07:53:00| |out larped hippo team| +|08/01/2022 07:53:02| SAME-TEAM +|08/01/2022 07:53:02| |useless tank| +|08/01/2022 07:53:04| |BEST TEAM| +|08/01/2022 07:53:04| |YAR HAR| +|08/01/2022 07:53:05| |>they're doing the meme tank thing| +|08/01/2022 07:53:06| |Leave her johnny, leave her~| +|08/01/2022 07:53:07| |Is there any girl here that nobody actually likes?| +|08/01/2022 07:53:09| |SAME TEAM| +|08/01/2022 07:53:09| |STUPID FUCKING MAST| +|08/01/2022 07:53:10| >memeflagot +|08/01/2022 07:53:10| YARRRR +|08/01/2022 07:53:11| |they kept the lewis guns| +|08/01/2022 07:53:12| |ENTER JOBBERS| +|08/01/2022 07:53:14| |Gamers too buff. tossing tank shells like pillows| +|08/01/2022 07:53:14| |Here come the retards| +|08/01/2022 07:53:16| |this panzer looks THICK| +|08/01/2022 07:53:16| |is that a goddamn ww1 tank?????| +|08/01/2022 07:53:18| |the comic relief is here| +|08/01/2022 07:53:19| [piratesofthecaribean.wav] +|08/01/2022 07:53:19| |girls und ships| +|08/01/2022 07:53:22| |That fucking mast| +|08/01/2022 07:53:22| |Enter useless team| +|08/01/2022 07:53:23| ENTER +|08/01/2022 07:53:24| landbote +|08/01/2022 07:53:24| |+baka sqsuad| +|08/01/2022 07:53:25| |>a fucking WWI tank| +|08/01/2022 07:53:34| |Best target practice| +|08/01/2022 07:53:34| |YOU WON'T BE LAUGHING WHEN SHARK KILLS KMM'S A7V| +|08/01/2022 07:53:35| |literally a 100-year old relic| +|08/01/2022 07:53:35| |Somali-tier tank| +|08/01/2022 07:53:36| |muh pollution| +|08/01/2022 07:53:36| |does a panzer need a sail?| +|08/01/2022 07:53:37| |the worst pirates i've ever heard of| +|08/01/2022 07:53:38| |there better be an A7V later on| +|08/01/2022 07:53:39| |I can feel the fucking rivets about to burst| +|08/01/2022 07:53:41| |good god thats an actual ww1 tank| +|08/01/2022 07:53:41| |Mk1 Sheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesh| +|08/01/2022 07:53:41| |MEME TANK| +|08/01/2022 07:53:45| |There's not enough carbon in the world to make that tank safe| +|08/01/2022 07:53:46| |Literally worse than the Type-89| +|08/01/2022 07:53:46| |They should mount an MLRS to this tank| +|08/01/2022 07:53:46| |jesus christ| +|08/01/2022 07:53:47| YAHAAAAARR +|08/01/2022 07:53:48| |BC has a FT; it's a fair march| +|08/01/2022 07:53:48| |So how is this supposed to be useful at all?| +|08/01/2022 07:53:50| |based tank| +|08/01/2022 07:53:52| |>it looks like a potato| +|08/01/2022 07:53:59| SHARK +|08/01/2022 07:54:00| |Enter Hatay team from Indiana Jones school| +|08/01/2022 07:54:00| |yukari stop being autistic| +|08/01/2022 07:54:01| |Lucky shark tank ain't flag tank| +|08/01/2022 07:54:05| |chad murakami stance| +|08/01/2022 07:54:06| |Rum is taller than I expected| +|08/01/2022 07:54:06| |cute sharks| +|08/01/2022 07:54:07| |shark? more like shart| +|08/01/2022 07:54:09| |A literal fucking death trap| +|08/01/2022 07:54:09| |getting drunk on non-alhocolic rum| +|08/01/2022 07:54:09| UWAAAAAAAAAAAA +|08/01/2022 07:54:13| |based underclassman bullying| +|08/01/2022 07:54:14| |do not bully the rabbits| +|08/01/2022 07:54:14| LANDSHIP +|08/01/2022 07:54:15| |Kept you waiting huh?| +|08/01/2022 07:54:17| |To be fair, it does have two short 6pdr's| +|08/01/2022 07:54:18| steelpotat +|08/01/2022 07:54:19| |BULLY RABBITS| +|08/01/2022 07:54:23| |what kind of gun and armor does the landship have? Basically nothing?| +|08/01/2022 07:54:24| |Cutlass = Cute Lass| +|08/01/2022 07:54:25| |useless puppet| +|08/01/2022 07:54:26| |>azusa and saki not being scared| +|08/01/2022 07:54:27| rawr +|08/01/2022 07:54:28| |KEEP YOU WAITING HUH| +|08/01/2022 07:54:29| |Dumb momo| +|08/01/2022 07:54:35| |useless puppet useless puppet useless puppet| +|08/01/2022 07:54:36| |>choker SLUT| +|08/01/2022 07:54:36| >Momo +|08/01/2022 07:54:36| |momo dumb| +|08/01/2022 07:54:39| |momo a dumb| +|08/01/2022 07:54:39| |Momo more like retardmo| +|08/01/2022 07:54:40| |Mark 4 has like 14mm at most| +|08/01/2022 07:54:41| |Straight up threats and a bottle| +|08/01/2022 07:54:43| UUUUEEEHHH +|08/01/2022 07:54:43| OOOOOOOOH +|08/01/2022 07:54:43| |FOR MOMO!| +|08/01/2022 07:54:44| |flint wiggle| +|08/01/2022 07:54:44| |Pupper Commander| +|08/01/2022 07:54:44| OOWOWOWOWWW +|08/01/2022 07:54:45| |CUTE DANCE| +|08/01/2022 07:54:46| |2 6pdr's, 4 Lewis guns, 8-15mm of armour| +|08/01/2022 07:54:47| |ho ho ho hoho| +|08/01/2022 07:54:48| |fucking flint| +|08/01/2022 07:54:49| |flint katyusha| +|08/01/2022 07:54:49| |Armor: A couple of inches. It is barely machinegun-proof.| +|08/01/2022 07:54:50| |I wannt to bully rabbit team| +|08/01/2022 07:54:51| |flint a cute autist| +|08/01/2022 07:54:53| |AAAAAAAAAAAAAAAAH HIPS| +|08/01/2022 07:54:54| |the animation is so lovely| +|08/01/2022 07:54:55| |IF IT WASN'T FOR MOMO YOU WOULDN'T HAVE THESE FILMS!! APOLOGIZE!!!!| +|08/01/2022 07:54:56| |I HATE FLINT| +|08/01/2022 07:54:57| flint_dance.webm +|08/01/2022 07:54:58| |YES I WANT TO FUCK FLINT| +|08/01/2022 07:54:59| |Pirates are too scary for me, I'll stick with a cute girl like Alisa| +|08/01/2022 07:55:00| |oh ok, so it has SOMETHING at least| +|08/01/2022 07:55:01| |you must refer to momo as momo-taichou from now on| +|08/01/2022 07:55:02| lmao +|08/01/2022 07:55:05| |based TK| +|08/01/2022 07:55:06| |fucking frencies lamo| +|08/01/2022 07:55:06| WWWWWWWWWWWW +|08/01/2022 07:55:11| |>implying she commands anything| +|08/01/2022 07:55:12| |incredibl ruse| +|08/01/2022 07:55:13| 礼 +|08/01/2022 07:55:13| |CUTE MESSED UP FRENCHIES| +|08/01/2022 07:55:13| |I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Taichou! I love Momo-Ta| +|08/01/2022 07:55:20| |the french tanks are pretty sexy| +|08/01/2022 07:55:20| |I REFUSE TO BE PART OF YOUR SYSTEM| +|08/01/2022 07:55:21| RUDE +|08/01/2022 07:55:24| |Based Marie bows to no one| +|08/01/2022 07:55:24| |Andou cute and gay| +|08/01/2022 07:55:29| OST +|08/01/2022 07:55:29| |FUCKING BITCH| +|08/01/2022 07:55:30| |french have sexiest tanks| +|08/01/2022 07:55:30| |my wife andou| +|08/01/2022 07:55:33| |gay frog kung fu| +|08/01/2022 07:55:34| |what a cunt| +|08/01/2022 07:55:40| |I've heard mixed things about french tanks| +|08/01/2022 07:55:41| |your head weights like 500 kilos just let it go| +|08/01/2022 07:55:41| |SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU SEXY ANDOU | +|08/01/2022 07:55:42| OST +|08/01/2022 07:55:44| dodododododododo +|08/01/2022 07:55:44| plotArmor.ost +|08/01/2022 07:55:46| |I want to fondle maries plump thighs| +|08/01/2022 07:55:50| |French too smug| +|08/01/2022 07:55:50| |Imagine the French hate sex| +|08/01/2022 07:55:56| |marie is CUTE| +|08/01/2022 07:55:57| |Lithuanian andou lover I know you're here| +|08/01/2022 07:55:58| |The step up in animation compared to the Der Film one is huge| +|08/01/2022 07:55:59| |playing dumb| +|08/01/2022 07:56:04| |>french topless JKs| +|08/01/2022 07:56:11| |SOUND DESIGN MOTHERFUCKERS| +|08/01/2022 07:56:13| |I cannot lie anons, I love andou| +|08/01/2022 07:56:14| |lads I missed the ending of Der Film. what did I miss in between| +|08/01/2022 07:56:24| intermission +|08/01/2022 07:56:24| |Only the arisu ova| +|08/01/2022 07:56:27| |you missed tank Kino| +|08/01/2022 07:56:28| |>getting chocked out by Marie's fat thighs| +|08/01/2022 07:56:28| |>that porche tiger engine sound| +|08/01/2022 07:56:31| |you missed kino| +|08/01/2022 07:56:37| |You missed intermission and taiyaki war| +|08/01/2022 07:56:38| |Missed UUOOHH| +|08/01/2022 07:56:42| |you missed ferris wheel kino| +|08/01/2022 07:56:43| |Imagine the thighjob Marie would give| +|08/01/2022 07:56:45| |useless momo useless momo useless momo useless momo useless momo useless momo | +|08/01/2022 07:56:47| |can I gt chocked by katyushas's thighs?| +|08/01/2022 07:56:50| |FUCK momo| +|08/01/2022 07:56:53| |fuk der film is my favorite cant believe i only got on right after| +|08/01/2022 07:56:56| |Marie too skinny though| +|08/01/2022 07:56:57| |Imagine getting your dick crushed between Marie's fat thighs| +|08/01/2022 07:56:57| |with pleasure!| +|08/01/2022 07:57:02| |bros... i'm starting to get tired...| +|08/01/2022 07:57:02| |marie's thighjob would crush me like a grape| +|08/01/2022 07:57:14| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 07:57:15| |stay awake| +|08/01/2022 07:57:16| |NO FALLING ASLEEP| +|08/01/2022 07:57:16| |stay stong anon| +|08/01/2022 07:57:20| |I want to grape marie| +|08/01/2022 07:57:25| |Sleep can come later anon| +|08/01/2022 07:57:26| |THAT ELECTRIC ENGINE DOES THINGS TO MY COCK| +|08/01/2022 07:57:29| |>getting tired FUCKING WEAK| +|08/01/2022 07:57:29| |imagine sleeping lamo LIKE A GIRL| +|08/01/2022 07:57:30| |NO SLEEPING. WE WILL ALL MAKE IT| +|08/01/2022 07:57:32| |NO SLEEPING ON DUTY SOLDIER| +|08/01/2022 07:57:33| |GUP is now| +|08/01/2022 07:57:39| 3D +|08/01/2022 07:57:40| |>needing sleep| +|08/01/2022 07:57:40| >sleeping +|08/01/2022 07:57:41| |8 AM here| +|08/01/2022 07:57:42| |pwanza vvvvoa!| +|08/01/2022 07:57:42| |realistically how the hell can the mk IV even keep up | +|08/01/2022 07:57:44| |>imagine being a wagie working tomorrow| +|08/01/2022 07:57:45| |HOW DO I CURE MY INSOMNIA| +|08/01/2022 07:57:46| |the only use for sleep is to pass the time between gup and toot| +|08/01/2022 07:57:46| |Not a man left behind| +|08/01/2022 07:57:46| |CG boy| +|08/01/2022 07:57:49| |we'll all stay up until the end and wake up before snw| +|08/01/2022 07:57:51| |2:55 pm| +|08/01/2022 07:57:52| |Leopon team works miracles| +|08/01/2022 07:57:55| |Surely only girls would watch something like GuP though?| +|08/01/2022 07:57:58| |Mk IV's top speed is like 6 mph| +|08/01/2022 07:57:59| |>imagine working| +|08/01/2022 07:58:00| |Just sleep with your eyes open. Best of both worlds.| +|08/01/2022 07:58:06| |it's almost 9 am here| +|08/01/2022 07:58:08| |They said the Mk4 got custom work| +|08/01/2022 07:58:08| |If I don't go to sleep soon, I may not be awake for the start of SnW.| +|08/01/2022 07:58:11| |we're all girls here, we're the target audience | +|08/01/2022 07:58:11| |Guys its 3:55 am, i don't think i'm going to make it| +|08/01/2022 07:58:39| WEEEEEEE +|08/01/2022 07:58:47| |in about 8 hours anison matrix starts| +|08/01/2022 07:58:52| |snw is in 12 hours| +|08/01/2022 07:58:56| |panzer vor means panzer vor| +|08/01/2022 07:58:57| |SLEEP > WAIFU| +|08/01/2022 07:58:58| |guys it's 1756h here I'm ready| +|08/01/2022 07:58:59| |PANZER VOR| +|08/01/2022 07:58:59| |kono bangumi wa goran no suponsaa no teikyou de okurishimasu| +|08/01/2022 07:59:02| |PANZER VOR| +|08/01/2022 07:59:02| |YOU CAN DO IT MOMO-TAICHOU!| +|08/01/2022 07:59:02| |SAY THE THING| +|08/01/2022 07:59:02| |PANZER VOR| +|08/01/2022 07:59:03| |PANZER VOR| +|08/01/2022 07:59:04| |PANZER VOR| +|08/01/2022 07:59:04| |PANTSAAA FOOOH| +|08/01/2022 07:59:04| |you don't need that much sleep| +|08/01/2022 07:59:05| |TL Note: "Anzu" means "SEX".| +|08/01/2022 07:59:05| |I CLAP| +|08/01/2022 07:59:06| |PANZER VORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR| +|08/01/2022 07:59:06| |PANZER VO| +|08/01/2022 07:59:07| |MOMO CUTE| +|08/01/2022 07:59:08| |Pants her whore| +|08/01/2022 07:59:09| |ppansaa voa| +|08/01/2022 07:59:09| |P-PANZER FOO| +|08/01/2022 07:59:10| |>momo responsible for anything| +|08/01/2022 07:59:10| |PANZER AHO| +|08/01/2022 07:59:11| |PANTSU FOOH| +|08/01/2022 07:59:11| |PANZER VOR| +|08/01/2022 07:59:12| |PPANZER VOR| +|08/01/2022 07:59:13| |panzer vor means sex in a tank| +|08/01/2022 07:59:14| |PANZER VOR| +|08/01/2022 07:59:15| |PANZER VOR| +|08/01/2022 07:59:17| |PANTSU VORE| +|08/01/2022 07:59:19| |panties for?| +|08/01/2022 07:59:21| !23movies.com +|08/01/2022 07:59:21| |thanks tl| +|08/01/2022 07:59:22| WHEEEEEZE +|08/01/2022 07:59:23| |dork levels off the charts| +|08/01/2022 07:59:25| |>using the tiger as a scout| +|08/01/2022 07:59:26| DOOTDOOTDOOOOTDOOTDOOTDOOT +|08/01/2022 07:59:30| |How about Panzer Vore| +|08/01/2022 07:59:30| |panzer vor with maho| +|08/01/2022 07:59:33| |look at this dorks| +|08/01/2022 07:59:34| NOISE +|08/01/2022 07:59:35| |PANZER VOR means Panzer Vor| +|08/01/2022 07:59:38| |ARL-44s - fucking paper tanks| +|08/01/2022 07:59:38| |TL:panzer vore means "Raw dogging Momo's sinful body"| +|08/01/2022 07:59:42| |Pantsu vore| +|08/01/2022 07:59:42| aznable +|08/01/2022 07:59:43| |What does panzer vor mean anons?| +|08/01/2022 07:59:50| |I'm gonna suck Hana's left nut| +|08/01/2022 07:59:51| |Momo's body is NOT sinful| +|08/01/2022 07:59:51| |ARL-44's were built| +|08/01/2022 07:59:52| |FUCKING JOBBERS| +|08/01/2022 07:59:52| USELESS +|08/01/2022 07:59:52| |a hoi| +|08/01/2022 07:59:53| |TAP ASS| +|08/01/2022 07:59:53| |FUCK EM UP USAGIS| +|08/01/2022 07:59:56| |ARL 44 is most powerful tank| +|08/01/2022 07:59:56| |It means "Pleasure of being cummed inside"| +|08/01/2022 07:59:56| |>ship >can't cross a creek | +|08/01/2022 07:59:56| |WW1 tanks| +|08/01/2022 07:59:57| |They were just shit| +|08/01/2022 07:59:57| |panzer vor means sex with Anzu| +|08/01/2022 07:59:58| ahoi +|08/01/2022 07:59:59| |STUPID PIRATES| +|08/01/2022 08:00:00| Ahoy! +|08/01/2022 08:00:01| AHOY +|08/01/2022 08:00:02| |>already dead| +|08/01/2022 08:00:03| kick +|08/01/2022 08:00:04| AAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:00:04| |>landship >struggles in knee height water| +|08/01/2022 08:00:09| |Niggers in paris| +|08/01/2022 08:00:16| |cute delinquents| +|08/01/2022 08:00:18| |who was in paris?| +|08/01/2022 08:00:21| |scam artist| +|08/01/2022 08:00:21| |I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES | +|08/01/2022 08:00:22| |Thanks anon now I know what panzer vor means :)| +|08/01/2022 08:00:23| |i want murakami to crush me| +|08/01/2022 08:00:23| |luv mkiv simple as| +|08/01/2022 08:00:25| |Momo, you weren't shy with the rumors that you might repeat a year, why you shy now?| +|08/01/2022 08:00:26| |tea sluts| +|08/01/2022 08:00:27| |Niggers we in fact in Paris| +|08/01/2022 08:00:31| |>momo didnt make them take that shit down| +|08/01/2022 08:00:33| SMIRK +|08/01/2022 08:00:34| |FROG LOLI UOOOOOOHHHHHHHH| +|08/01/2022 08:00:34| |SERIOUS MUSIC| +|08/01/2022 08:00:35| |I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES | +|08/01/2022 08:00:35| |I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES I LOVE PIRATES| +|08/01/2022 08:00:35| |2 People in a 1 Man Turret| +|08/01/2022 08:00:37| <3 +|08/01/2022 08:00:39| |Andou is the nigger is paris| +|08/01/2022 08:00:40| |CUTE HAT| +|08/01/2022 08:00:42| |HON HON HON| +|08/01/2022 08:00:44| |Was it the same niggers that were on the moon?| +|08/01/2022 08:00:44| |look at these fatties| +|08/01/2022 08:00:44| |Shouldn't it be against the rules to have more than one tank with a flag?| +|08/01/2022 08:00:54| |wish i was that gunner| +|08/01/2022 08:00:55| |shifty frog bastards| +|08/01/2022 08:00:56| |no the moon had Nazi Niggers| +|08/01/2022 08:00:59| |Oh shidd its Fr*nch time| +|08/01/2022 08:01:01| |Baguettes bombardment| +|08/01/2022 08:01:03| | Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers Im Nate Higgers | +|08/01/2022 08:01:06| |I wish I was under the gunner| +|08/01/2022 08:01:06| |no the niggers that were on the moon was actually only one nigger| +|08/01/2022 08:01:11| |hello hate niggers| +|08/01/2022 08:01:12| |>WoT tank sniping time| +|08/01/2022 08:01:13| HONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHO +|08/01/2022 08:01:15| |French hats are cute| +|08/01/2022 08:01:17| |THE GAME WAS RIGGED FROM THE START| +|08/01/2022 08:01:18| |I wish I was andou's seat| +|08/01/2022 08:01:21| |the niggers on the moon were the gay ones from outer space| +|08/01/2022 08:01:28| |ANDOU RABU| +|08/01/2022 08:01:32| |Tiger porche op like what the actual fuck| +|08/01/2022 08:01:33| >buffering +|08/01/2022 08:01:38| |L O N G BARREL| +|08/01/2022 08:01:42| |ahh gay niggers from outer space that makes sense| +|08/01/2022 08:01:47| |pivot turning into neutral steering| +|08/01/2022 08:01:47| |I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU I WANT TO MARRY ANDOU | +|08/01/2022 08:01:49| |>french anything >cute| +|08/01/2022 08:01:51| |niggers tougue my anus| +|08/01/2022 08:01:53| |L O O O O O O O N G| +|08/01/2022 08:01:58| |I want Andou to marry Oshida| +|08/01/2022 08:02:00| |my wife andou is so cute| +|08/01/2022 08:02:09| |I would play petanque with you /a/nons| +|08/01/2022 08:02:09| |cute sleepy redhead| +|08/01/2022 08:02:09| pettanko!? +|08/01/2022 08:02:11| pettanko....... +|08/01/2022 08:02:11| |Brit moment| +|08/01/2022 08:02:16| |I WANT TO MARRY ANDOU | +|08/01/2022 08:02:17| ruhroh +|08/01/2022 08:02:19| |NEARSIDE COVER WHERE!?| +|08/01/2022 08:02:21| pettwhat +|08/01/2022 08:02:24| pettanko? +|08/01/2022 08:02:25| |UH OH| +|08/01/2022 08:02:26| PETTAN +|08/01/2022 08:02:27| |>a bridge| +|08/01/2022 08:02:27| |hmm looks safe enough| +|08/01/2022 08:02:28| |>entire column crosses the bridge at once| +|08/01/2022 08:02:32| |playing pettanko on anzu's chest| +|08/01/2022 08:02:34| |y u k k u r i| +|08/01/2022 08:02:35| |BRIDGE ON THE RIVER KAWAII| +|08/01/2022 08:02:35| |Around Fr*nch watch yourselves| +|08/01/2022 08:02:36| |pettan pettan tsurupettan| +|08/01/2022 08:02:37| |NOT A TRAP AT ALL| +|08/01/2022 08:02:38| |>carbon coated bridge| +|08/01/2022 08:02:39| |What a fucking nigger| +|08/01/2022 08:02:40| |pettanko uoooooh| +|08/01/2022 08:02:42| kwaibros +|08/01/2022 08:02:43| |EVER TIME | +|08/01/2022 08:02:48| |Carbon coated bridge| +|08/01/2022 08:02:49| |BEGIN WHISTLING COLONEY BOGEY'S MARCH| +|08/01/2022 08:02:50| |LANDING A JET ON ANZU'S CHEST| +|08/01/2022 08:02:51| |Bridge built by slag hands| +|08/01/2022 08:02:51| |Pettan Pettan Mojipettan!| +|08/01/2022 08:02:53| |yuropoor bridge| +|08/01/2022 08:02:54| |CLASSIC BLUNDER| +|08/01/2022 08:02:56| |Wait I just remembered this was cut from the start| +|08/01/2022 08:02:59| |not carbon coated enough| +|08/01/2022 08:02:59| |NOT THIS BRIDGE | +|08/01/2022 08:02:59| |>old ass wooden bridge > lets all cross at once| +|08/01/2022 08:03:03| |Didn't they get trolled by how they bomb the uni bridge?| +|08/01/2022 08:03:03| |I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +|08/01/2022 08:03:06| |I don't think this bridge can hold 300 tons.| +|08/01/2022 08:03:08| |the studs are reinforced| +|08/01/2022 08:03:09| |Kawhi Leonard is the best slave out there| +|08/01/2022 08:03:10| |I still wonder what that type of neck microhpone is| +|08/01/2022 08:03:11| |carbon wood| +|08/01/2022 08:03:11| |Imagine falling for a trap set by the french| +|08/01/2022 08:03:11| |it's okay, it's made of stalinwood| +|08/01/2022 08:03:15| |THE RAIN WASH ALL CARBON OFFF| +|08/01/2022 08:03:22| |I HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCHI HATE THE FRENCH| +|08/01/2022 08:03:23| |kino directing| +|08/01/2022 08:03:26| |>eyes drawn through hair| +|08/01/2022 08:03:27| |And also imagine subsequently scoring no kills as the french| +|08/01/2022 08:03:28| UHO +|08/01/2022 08:03:29| UHUH +|08/01/2022 08:03:32| |>rum is drunk as shit as always| +|08/01/2022 08:03:33| UHO +|08/01/2022 08:03:33| |I'm about to eat some pirate's booty | +|08/01/2022 08:03:34| |No Duce to save you this time| +|08/01/2022 08:03:35| ?????????????????????????? +|08/01/2022 08:03:37| |Alexa play Bridge of Kahazad Dum| +|08/01/2022 08:03:37| |>uho, cool single line| +|08/01/2022 08:03:38| UHO +|08/01/2022 08:03:39| |PUTTING CHEMICALS IN THE TAIYAKI TO TURN THE FRICKIN FROGS GAY| +|08/01/2022 08:03:42| |>Sodoko has best eyesight >spots this earliest >poetry| +|08/01/2022 08:03:44| |OH NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 08:03:47| |CUTE SPOTTER LOLI| +|08/01/2022 08:03:48| |HIT THE DECK| +|08/01/2022 08:03:48| |it's hon hon time| +|08/01/2022 08:03:48| >intuition +|08/01/2022 08:03:50| AMBUSH +|08/01/2022 08:03:56| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:03:56| YABAI +|08/01/2022 08:03:57| !! +|08/01/2022 08:03:58| |They LOST...| +|08/01/2022 08:04:04| KILL +|08/01/2022 08:04:04| |OARAI IS FUCKED HOLY SHIT| +|08/01/2022 08:04:06| |enviromental damage binch| +|08/01/2022 08:04:06| |I love tiny tanks| +|08/01/2022 08:04:06| |cute marie| +|08/01/2022 08:04:06| AAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:04:07| |MOMO HATE| +|08/01/2022 08:04:08| |BACKING UP| +|08/01/2022 08:04:11| |>taking the bait| +|08/01/2022 08:04:11| |SHIFT FROG CUNTS| +|08/01/2022 08:04:13| FUCKKKKKKKKKKKKKKKKKKKKKK +|08/01/2022 08:04:14| |REMEMBER THE BRIDGE DRAMA IN THE ORIGINAL THREADS| +|08/01/2022 08:04:14| |Bridge goes boom| +|08/01/2022 08:04:14| |DUMPING OOARAICOIN| +|08/01/2022 08:04:14| |Ooaribros we got too cocky| +|08/01/2022 08:04:14| |Oaraibros how are we gonna get out of this one| +|08/01/2022 08:04:15| |cute tank| +|08/01/2022 08:04:15| |wish i was that pillow| +|08/01/2022 08:04:17| |OOARAI BROS…| +|08/01/2022 08:04:20| |oorai bros... I don't feel so good... | +|08/01/2022 08:04:21| |scrubs smh| +|08/01/2022 08:04:22| |It's so fucking over| +|08/01/2022 08:04:22| |it's fucking over| +|08/01/2022 08:04:23| |OARAI BROS WE GOT COCKY AGAIN| +|08/01/2022 08:04:24| |gg momo is repeating| +|08/01/2022 08:04:24| |ACTIVATE THE PLOT DRAMA| +|08/01/2022 08:04:25| |FUCK FUCK FUCK FUCK NOT LIKE THIS| +|08/01/2022 08:04:26| |IT'S OVER| +|08/01/2022 08:04:28| |Call Duce for support| +|08/01/2022 08:04:30| |15-0 moment| +|08/01/2022 08:04:32| |useless french cant shoot still tank| +|08/01/2022 08:04:32| |V-TEC JUST KICKED IN YOOOO!! V-TEC JUST KICKED IN YOOOO!!| +|08/01/2022 08:04:33| TURBO +|08/01/2022 08:04:33| ACCELERATE +|08/01/2022 08:04:33| |SELL OORAICOIN| +|08/01/2022 08:04:34| ZOOOOOOOOOOOOOOM +|08/01/2022 08:04:34| |$40000 ON BC FREEDOM| +|08/01/2022 08:04:35| |I KNOW, I KNOW I'VE LET YOU DOWN...| +|08/01/2022 08:04:35| |VTEC | +|08/01/2022 08:04:35| |ooarai bros...| +|08/01/2022 08:04:38| |DO YOU LIKE MY TANK| +|08/01/2022 08:04:38| |welp this is it might as well go to sleep now| +|08/01/2022 08:04:39| |GAS GAS GAS| +|08/01/2022 08:04:39| |HIT THAT MF DRIFTO| +|08/01/2022 08:04:40| |V-TEC JUST KICKED IN YOOOO!!| +|08/01/2022 08:04:40| |I LOVE TINY TANKS I LOVE TANKY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY TANKS I LOVE TINY T| +|08/01/2022 08:04:41| |porsche ult has a long cooldown it's fair and balanced| +|08/01/2022 08:04:42| |ARL lef in the dust...| +|08/01/2022 08:04:43| hayai +|08/01/2022 08:04:44| HAYAI +|08/01/2022 08:04:44| |holy shite| +|08/01/2022 08:04:44| W-WOAH +|08/01/2022 08:04:46| |BASED /o/FAGS| +|08/01/2022 08:04:50| |GAS GAS GAS| +|08/01/2022 08:04:52| |played like a damn fiddle| +|08/01/2022 08:04:53| |Leopon drifting abusing engine and regulations again| +|08/01/2022 08:04:53| |skill issue| +|08/01/2022 08:04:53| |VTEC JUST KICKED IN| +|08/01/2022 08:04:55| |launch control master race| +|08/01/2022 08:04:57| |Someone get them a better monitor they can't hit their shots| +|08/01/2022 08:04:58| |marvel quips| +|08/01/2022 08:04:59| |YOU GONNA CARRY ALL THAT WEIGHT| +|08/01/2022 08:04:59| |>race car sfx| +|08/01/2022 08:05:00| SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEXXXXX +|08/01/2022 08:05:03| |IF ONLY THE FRENCH COULD HIT THE BROAD SIDE OF A BARN| +|08/01/2022 08:05:04| |Leopon is too powerful| +|08/01/2022 08:05:09| |floof is spooked| +|08/01/2022 08:05:12| |cute floof| +|08/01/2022 08:05:14| |>fool US| +|08/01/2022 08:05:15| |God I love this OST| +|08/01/2022 08:05:15| |poor floof| +|08/01/2022 08:05:15| |THEY PLAYED US LIKE A DAMN FIDDLE| +|08/01/2022 08:05:18| EH +|08/01/2022 08:05:21| SMUG +|08/01/2022 08:05:21| |11 years later, Motegi's still fucked.| +|08/01/2022 08:05:21| D: +|08/01/2022 08:05:22| |I love yukari| +|08/01/2022 08:05:22| |Floof fucked up| +|08/01/2022 08:05:23| |cute scared floof| +|08/01/2022 08:05:23| |>she gets a second cake| +|08/01/2022 08:05:24| >bongs +|08/01/2022 08:05:24| |Big penetration for small tanks | +|08/01/2022 08:05:25| |YUKARI YOU FUCK| +|08/01/2022 08:05:28| CLANG +|08/01/2022 08:05:29| |cake fattie| +|08/01/2022 08:05:29| |STOP THINKING ABOUT FOOD YOU FAT FUCK| +|08/01/2022 08:05:30| |fat bimch| +|08/01/2022 08:05:35| >underestimated +|08/01/2022 08:05:37| |>carbon coating| +|08/01/2022 08:05:40| |They played us like a dollar store kazoo. You need skill to play a fiddle| +|08/01/2022 08:05:41| |Said the team that loses every year| +|08/01/2022 08:05:43| |maybe yukari shouldn't have landed at their school using a fucking helicopter this time| +|08/01/2022 08:05:53| WHOOOOOOOOOOOOOOOOOSH +|08/01/2022 08:05:55| |ngl, i'd stuff her face and not with cake| +|08/01/2022 08:05:55| |why can't the frog hit anything????| +|08/01/2022 08:05:59| recoiloli +|08/01/2022 08:06:00| |HOLY FUCK JUST KNOCK OUT THE SUPPORT BEAM| +|08/01/2022 08:06:07| |THAT FRENCH GUNNERY| +|08/01/2022 08:06:10| |>like 100 shots fired| +|08/01/2022 08:06:11| |MIHO CURRENTLY HAS 5000 SPLINTERS IN HER FACE| +|08/01/2022 08:06:13| |Cake blocks their sights. Can't aim properly| +|08/01/2022 08:06:14| |Baguettes are in the way| +|08/01/2022 08:06:16| |>not one fucking tank down| +|08/01/2022 08:06:18| |great plan Momo| +|08/01/2022 08:06:23| |100 shots, zero penetrations. THE FRENCH| +|08/01/2022 08:06:25| |don't worry anon, her eyes are carbon coated| +|08/01/2022 08:06:27| |yukari please commit harakiri| +|08/01/2022 08:06:27| |>french gunner| +|08/01/2022 08:06:30| |Yukari is the cutest dork| +|08/01/2022 08:06:31| LANDBOTE +|08/01/2022 08:06:36| |based tank autist| +|08/01/2022 08:06:38| |>hitting every part of the bridge, but not one on the tanks| +|08/01/2022 08:06:41| |>yukari immediately knows what she's thinking CUTE| +|08/01/2022 08:06:43| INABA +|08/01/2022 08:06:47| |KINO NAMES| +|08/01/2022 08:06:48| |FUCK OFF MOMO| +|08/01/2022 08:06:52| |walksu zu plank| +|08/01/2022 08:06:54| |>bridge hasn't collapsed yet| +|08/01/2022 08:06:56| |That name| +|08/01/2022 08:06:58| |WORST ACCURACY IN THE ENTIRE TOURNAMENT: BC FREEDOM| +|08/01/2022 08:06:58| YOOOOSORO +|08/01/2022 08:07:01| YOSORO +|08/01/2022 08:07:03| |worse physics that der film| +|08/01/2022 08:07:04| |wooku za puranku| +|08/01/2022 08:07:05| |Hare of Inaba has to be the least autistic op name she's made| +|08/01/2022 08:07:05| |THIS SHIT IS TOO RETARDED| +|08/01/2022 08:07:06| |anon I told you, the bridge is carbon coated| +|08/01/2022 08:07:07| DORKS +|08/01/2022 08:07:10| Yosoro +|08/01/2022 08:07:12| |still can't hit any one| +|08/01/2022 08:07:12| |Bruh how the fuck| +|08/01/2022 08:07:12| |The only useful thing the pirates will ever do| +|08/01/2022 08:07:13| ????????????????????????????????????????????? +|08/01/2022 08:07:13| TACTICAL +|08/01/2022 08:07:13| |FRENCH BTFO BY PIRATES| +|08/01/2022 08:07:17| |I'm more surprised how the bridge is still standing| +|08/01/2022 08:07:19| |>Chain of commmand | +|08/01/2022 08:07:19| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES | +|08/01/2022 08:07:22| ???????????????????????????????????????????????? +|08/01/2022 08:07:23| MAH +|08/01/2022 08:07:23| |That has to be the best pirate I've ever seen...| +|08/01/2022 08:07:23| WAT +|08/01/2022 08:07:25| |OGNION BROS?!?| +|08/01/2022 08:07:25| |even the frogs are scared| +|08/01/2022 08:07:27| |MON DIEU| +|08/01/2022 08:07:27| |oorari did not deserve this| +|08/01/2022 08:07:28| ?????????????????????????????????????? +|08/01/2022 08:07:30| |frogs missing this many shots is kinda bullshit| +|08/01/2022 08:07:33| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 08:07:33| |I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HAT| +|08/01/2022 08:07:36| |they needed at least a few more minutes to take a tank| +|08/01/2022 08:07:39| |>not ONE loss| +|08/01/2022 08:07:39| |SACRE BLEU| +|08/01/2022 08:07:45| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES | +|08/01/2022 08:07:46| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 08:07:46| |ONE JOB| +|08/01/2022 08:07:47| |ORARI BROS WAS THIS THE PLAN?| +|08/01/2022 08:07:47| |c'est fini| +|08/01/2022 08:07:50| |driving in reverse so turrent don't get damaged, smmart| +|08/01/2022 08:07:50| |FAT FRENCH MOTHERFUCKERS| +|08/01/2022 08:07:51| |I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HAT| +|08/01/2022 08:07:52| |WHAT ARE WE GONNA DO FROGBROS????| +|08/01/2022 08:07:52| |IS THIS THE POWER OF NON ALHOLIC RUM| +|08/01/2022 08:07:55| |PLOT ARMOR > CARBON| +|08/01/2022 08:07:55| |French too slow with loading more shells| +|08/01/2022 08:07:57| |>BRIDGE FINALLY GOES FUCKING DOWN| +|08/01/2022 08:07:58| frogbros... +|08/01/2022 08:08:00| PLOTARMOR.OST +|08/01/2022 08:08:01| |leave it to the frenchoids to miss the fish in a barrel| +|08/01/2022 08:08:04| |SHIT SHIT SHIT SHOULD I BUY OOARAICOIN?| +|08/01/2022 08:08:04| ROLLERCOASTER +|08/01/2022 08:08:05| |>not a single tank has been popped yet| +|08/01/2022 08:08:13| |RIP BRIDGE| +|08/01/2022 08:08:18| |why didnt they kill bridge earlier| +|08/01/2022 08:08:21| |;-;7 bye bridge| +|08/01/2022 08:08:22| |Not even getting one kill here is pretty bad. Worst fight scene in the series by fa| +|08/01/2022 08:08:23| |strongest bridge ever| +|08/01/2022 08:08:27| |>captain casually standing between the flying debris| +|08/01/2022 08:08:28| >retreat +|08/01/2022 08:08:28| |AU PAS INCOMING| +|08/01/2022 08:08:28| |BRIGDGE COLLAPSES AFTER TANKS ARE OUT| +|08/01/2022 08:08:31| |>frogs retreat| +|08/01/2022 08:08:32| FAT +|08/01/2022 08:08:35| |;_; bridge-kun| +|08/01/2022 08:08:37| |FAT FUCK| +|08/01/2022 08:08:38| |French really should have won that| +|08/01/2022 08:08:40| |>THE ABSOLUTE STATE OF THE FR*NCH| +|08/01/2022 08:08:41| |I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRENCH I HATE THE FRE| +|08/01/2022 08:08:43| |Now the bridge sinks?| +|08/01/2022 08:08:44| |cool idea for a scene but zero tanks dying is kinda dumb| +|08/01/2022 08:08:46| |perfect rretreat, sasuga frogs| +|08/01/2022 08:08:46| |>frog aim| +|08/01/2022 08:08:47| |>French >winning| +|08/01/2022 08:08:48| |ben simmons tier| +|08/01/2022 08:08:48| |RETREAT, SING AND REGROUP| +|08/01/2022 08:08:48| |aaaaaaaand we're back to the start| +|08/01/2022 08:08:50| |No one hit anyone during all that?| +|08/01/2022 08:08:50| |fuck the bridge right?| +|08/01/2022 08:08:51| |I LOVE THE FUCKING ONIION| +|08/01/2022 08:08:53| |FISSON MAILED WE'LL GET EM NEXT TIME| +|08/01/2022 08:08:53| |Even after they got off the bridge they were still surrounded| +|08/01/2022 08:08:54| |O S T| +|08/01/2022 08:08:54| |>Set Trap >Kill 0 Tanks >Retreat >Sing >Mission Accomplished?| +|08/01/2022 08:08:55| |ONION TIME| +|08/01/2022 08:08:56| |SING ALONG| +|08/01/2022 08:08:56| |IMAGINE BEING FRENCH| +|08/01/2022 08:08:57| |I FUCKING HATE ONIONS| +|08/01/2022 08:08:58| |MARIE'S THIGHS ARE 100% FAT| +|08/01/2022 08:08:58| |GOD I LOVE ONIONS| +|08/01/2022 08:08:59| |>BUT FROG MUSIC THO?!??!!| +|08/01/2022 08:08:59| |The classic french retreat| +|08/01/2022 08:09:00| |here we go| +|08/01/2022 08:09:00| |I hate onions| +|08/01/2022 08:09:00| |I LOVE THE ONION| +|08/01/2022 08:09:02| |FUCKING ONION CANT HIT SINGLE TANK| +|08/01/2022 08:09:02| |WAIT, NOT A SINGLE TANK DIED?| +|08/01/2022 08:09:02| |IT'S OIGNON TIME| +|08/01/2022 08:09:03| OST +|08/01/2022 08:09:03| OOOOHONHONHONHONHONHONHONHON +|08/01/2022 08:09:03| |sing along, folks| +|08/01/2022 08:09:04| |I LOVE THE ONION| +|08/01/2022 08:09:04| |I could go for some onion rings rn| +|08/01/2022 08:09:04| |I LOVE THE ONION| +|08/01/2022 08:09:06| >ONIONS +|08/01/2022 08:09:06| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:07| |I LOVE THE SOY| +|08/01/2022 08:09:08| |I FUCKING LOVE ONIONS BROS| +|08/01/2022 08:09:09| |I LOVE THE ONION| +|08/01/2022 08:09:09| |I LOVE THE ONION| +|08/01/2022 08:09:09| |ONION GOOD ONION FRIED| +|08/01/2022 08:09:09| ONIONS +|08/01/2022 08:09:10| |To be fair they are firing AP, thats not going to fdo much to a bridge| +|08/01/2022 08:09:10| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:10| |J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON| +|08/01/2022 08:09:11| |LE FROG| +|08/01/2022 08:09:12| |I HATE THE ONION| +|08/01/2022 08:09:12| |i fucking love onions| +|08/01/2022 08:09:12| |>a fucking onion| +|08/01/2022 08:09:13| |J'AIME L'OIGNON| +|08/01/2022 08:09:13| OUIOUIOUIOUIOUIOUIOUIOUIOUIOUIOUI +|08/01/2022 08:09:15| |AUSTRIANS GET OUT REEEEEEEEEEE| +|08/01/2022 08:09:15| |I LOVE ONIONS| +|08/01/2022 08:09:15| J'AIME +|08/01/2022 08:09:15| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:15| |They would have won if Napoleon was there| +|08/01/2022 08:09:15| |NOOOOOO I DON" WANT TO EAT THE ONION YOU CAN"T MAKE ME| +|08/01/2022 08:09:15| |I WILL EAT THE ONION| +|08/01/2022 08:09:16| |I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONION I HATE ONI| +|08/01/2022 08:09:16| |I LOVE THE ONION| +|08/01/2022 08:09:17| ONION +|08/01/2022 08:09:19| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:19| |J'AIME L'OIGNON J'AIME L'OIGNON J'AIME L'OIGNON| +|08/01/2022 08:09:19| |>FRENCH retreating quickly| +|08/01/2022 08:09:19| |J'aime l'oingnon| +|08/01/2022 08:09:20| |Onion > Winning| +|08/01/2022 08:09:20| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:21| |J'aime l'oignon| +|08/01/2022 08:09:21| |wtf is this cut?| +|08/01/2022 08:09:22| |AU PAS CAMERAD| +|08/01/2022 08:09:22| ONIONS!! +|08/01/2022 08:09:22| |AU PAS CAMARADES| +|08/01/2022 08:09:23| |J'aime l'oignon| +|08/01/2022 08:09:24| |AU PAS AU PAS AU PAS | +|08/01/2022 08:09:24| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:09:25| |I LOVE THE ONION| +|08/01/2022 08:09:26| |AU PAS AU PAS AU PAS | +|08/01/2022 08:09:26| |>A FUCKING ONION| +|08/01/2022 08:09:27| |Fried onions goes well with Saunder subs| +|08/01/2022 08:09:29| |AU PAS AU PAS AU PAS CAMARADES| +|08/01/2022 08:09:29| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:29| |AU PAS KAMERAD AU PAS KAMERAD AU PAS KAMERAD AU PAS KAMERAD | +|08/01/2022 08:09:29| |AU PAS CAMARADES| +|08/01/2022 08:09:30| |>SOY SONG| +|08/01/2022 08:09:30| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:31| |AU PA AU PAS| +|08/01/2022 08:09:31| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:09:31| |BOIL THE FROGS| +|08/01/2022 08:09:32| |AU PAS| +|08/01/2022 08:09:32| |AUPAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE| +|08/01/2022 08:09:32| |AU PAS AU PAS AU PAS | +|08/01/2022 08:09:33| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:09:33| |You WILL eat the Onion| +|08/01/2022 08:09:34| |OMMELETTE DU FROMMAGE| +|08/01/2022 08:09:34| |AU PAS CAMARADES| +|08/01/2022 08:09:34| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:35| |AU PAS CAMARADES AUPAS AU PAS AU PAS| +|08/01/2022 08:09:35| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:35| |WHAT THE FUCK AM I WATCHING| +|08/01/2022 08:09:36| |>they can't get by the filter| +|08/01/2022 08:09:36| |GOD I WANT THAT FRENCH DESSERT PUSSY ON MY FACE| +|08/01/2022 08:09:37| |Au pas camarades| +|08/01/2022 08:09:37| |AU PAS CAMARADES| +|08/01/2022 08:09:37| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:38| |>They march to Onions| +|08/01/2022 08:09:39| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:09:40| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:09:40| |I LOVE THE ONION| +|08/01/2022 08:09:40| |AUS PAS AUS PAS| +|08/01/2022 08:09:41| |AU PAS UA PAS AU PAS | +|08/01/2022 08:09:41| |AU PAS AU PAS| +|08/01/2022 08:09:42| |I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD!| +|08/01/2022 08:09:43| |AU PAS| +|08/01/2022 08:09:43| |OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OPPAI OP| +|08/01/2022 08:09:44| |AU PAS AU PAS AU PAS| +|08/01/2022 08:09:45| |is this oppa korean word??????| +|08/01/2022 08:09:45| |BIG FRENCH COCK| +|08/01/2022 08:09:46| |ONIONBROS, WE WILL WIN DAS FINALE 2| +|08/01/2022 08:09:48| |"Very good!" He said.| +|08/01/2022 08:09:48| |WHAT THE FUCK AM I WATCHING (although I've watched it before)| +|08/01/2022 08:09:48| |YOU WILL EAT THE ONIONS, YOU WILL FEED THE MARIE, YOU WILL PARTICIATE IN CLASS WAR, YOU WILL RIDE THE TANK| +|08/01/2022 08:09:49| |AU PAS UA PAS UA PAS| +|08/01/2022 08:09:49| |AU PAS AU PAS AU PAS | +|08/01/2022 08:09:50| |AU PS| +|08/01/2022 08:09:50| |AU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMAR| +|08/01/2022 08:09:50| |Opa opa pa pa pa| +|08/01/2022 08:09:51| |AU PAS CAMARADE| +|08/01/2022 08:09:52| |LET THEM EAT ONION| +|08/01/2022 08:09:52| |no onions for austrians| +|08/01/2022 08:09:54| |AU PAS| +|08/01/2022 08:09:55| SEAMLESS +|08/01/2022 08:09:55| |>frogs get an onions song but erikafags still waiting| +|08/01/2022 08:09:56| |j'aime l'oignon| +|08/01/2022 08:09:57| URA +|08/01/2022 08:09:58| |two year wait | +|08/01/2022 08:09:59| |love me marches love me onions, 'ate spies 'ate ooarai| +|08/01/2022 08:10:01| |frog legs| +|08/01/2022 08:10:02| |IT'S BEEN TWO YEARS| +|08/01/2022 08:10:04| |French ost is good| +|08/01/2022 08:10:05| |HON HON HON| +|08/01/2022 08:10:06| |where is my INTER INTER MISSION| +|08/01/2022 08:10:07| |Which Frenchy has the biggest cock?| +|08/01/2022 08:10:08| |2 YEAR TIMESKIP| +|08/01/2022 08:10:08| |wow two years really went by quickly| +|08/01/2022 08:10:09| |wow two years went by fast| +|08/01/2022 08:10:11| |TFW AUSTRIAN| +|08/01/2022 08:10:12| |I NEED A PISS| +|08/01/2022 08:10:14| oshida +|08/01/2022 08:10:15| |ENTER MISSION?| +|08/01/2022 08:10:17| |MY WORK HERE IS DONE. >BUT YOU DIDN'T DO ANYTHING| +|08/01/2022 08:10:25| GYAFUNTO +|08/01/2022 08:10:26| |2017 -> 2019| +|08/01/2022 08:10:28| BONBONS +|08/01/2022 08:10:30| |2 YEAR TRANSITION| +|08/01/2022 08:10:32| |I need a bathroom break| +|08/01/2022 08:10:33| |FUCK FROGS (sexually)| +|08/01/2022 08:10:33| |Get a room| +|08/01/2022 08:10:33| |JUST FUCK ALREADY| +|08/01/2022 08:10:34| |>food analogies| +|08/01/2022 08:10:36| |I can't believe it's been two fucking years| +|08/01/2022 08:10:38| brute +|08/01/2022 08:10:38| CAKEFATTIECAKEFATTIECAKEFATTIE +|08/01/2022 08:10:43| |I love andou| +|08/01/2022 08:10:43| DF2? +|08/01/2022 08:10:44| |It's not gay, it's French| +|08/01/2022 08:10:45| |French ain't brave enough to eat onions in their tanks, not like Brits and tea| +|08/01/2022 08:10:48| |Diabetic marie| +|08/01/2022 08:10:50| |two years passed in the blink of an eye| +|08/01/2022 08:10:50| |two years... it got here so fast...| +|08/01/2022 08:10:50| |I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! I WANT MARIES FAT THIGHS CRUSHING MY HEAD! | +|08/01/2022 08:10:52| |/u/ shitters out| +|08/01/2022 08:10:52| angery +|08/01/2022 08:10:53| |GAY FROGS| +|08/01/2022 08:10:54| |JUST KISS ALREADY| +|08/01/2022 08:10:55| |JUST FUCK ALREADY| +|08/01/2022 08:10:55| |no shit Marie is like tghe cream: FAT| +|08/01/2022 08:10:55| |Youre the best, no youre the best no u no u| +|08/01/2022 08:10:56| /u/ +|08/01/2022 08:10:57| |JUST FUCK ALREADY| +|08/01/2022 08:11:00| |Eating another piece of cake already| +|08/01/2022 08:11:02| |GOD I WANT THAT FRENCH DESSERT EATERS CUNNY IN MY MOUTH| +|08/01/2022 08:11:03| |to bad you can't aim for shit| +|08/01/2022 08:11:03| |VIVA LA BC| +|08/01/2022 08:11:04| |Black Cock| +|08/01/2022 08:11:05| ALLEZ +|08/01/2022 08:11:05| ALLE +|08/01/2022 08:11:06| ALLEZ +|08/01/2022 08:11:07| |Andou is so fucking greasy| +|08/01/2022 08:11:07| |hoy gay frog sex| +|08/01/2022 08:11:09| |YOU MISSED EVERY SHOT| +|08/01/2022 08:11:09| |VIVE LE BC| +|08/01/2022 08:11:10| |are there any french anons still here? how is there french pronunciation?| +|08/01/2022 08:11:10| |VIVA LA BC| +|08/01/2022 08:11:12| |>VIVA LA PUSSY| +|08/01/2022 08:11:13| |VIVE LA BC| +|08/01/2022 08:11:14| |restore the monarchy | +|08/01/2022 08:11:14| |YOU DIDN'T HIT A SINGLE THING| +|08/01/2022 08:11:15| |ALLEZ CAMARADES| +|08/01/2022 08:11:23| |THEY ARE DRIVING AT A CONSTANT SPEED IN A STRAIGHT LINE| +|08/01/2022 08:11:23| |>eating dirty cake| +|08/01/2022 08:11:24| sasuga +|08/01/2022 08:11:32| |smoked cake, french delicacy| +|08/01/2022 08:11:33| |fat fuck only thinks about food holy shit| +|08/01/2022 08:11:33| |its fine the cake is cabron coated| +|08/01/2022 08:11:35| |awesome teamwork| +|08/01/2022 08:11:36| |PRESS B TO RESTORE THE BOURBON DYNASTY| +|08/01/2022 08:11:36| |THEY ARE DRIVING AWAY FROM YOU AT A CONSTANT SPEED IN A STRAIGHT LINE| +|08/01/2022 08:11:37| |BC will lose because Marie's fat ass destroys their tank| +|08/01/2022 08:11:37| |Baguettes ain't tracer rounds| +|08/01/2022 08:11:37| |Cake is Carbon Covered| +|08/01/2022 08:11:37| |>can't hit a single tank despite successful ambush| +|08/01/2022 08:11:39| |grass plain| +|08/01/2022 08:11:43| |BC= baked clams| +|08/01/2022 08:11:44| UHO +|08/01/2022 08:11:44| |>cabron coated| +|08/01/2022 08:11:55| UHO +|08/01/2022 08:11:55| |aye aye| +|08/01/2022 08:11:56| |BC = BIG COCK| +|08/01/2022 08:11:56| |Rum haters will be annihilated| +|08/01/2022 08:11:57| |EI EI SAH| +|08/01/2022 08:11:58| |hate the french, unironically the republic owes my family land| +|08/01/2022 08:11:59| |AYE AYE SAH| +|08/01/2022 08:12:00| |AI AI SAA| +|08/01/2022 08:12:00| |aye ayee| +|08/01/2022 08:12:02| |hedgerow hell| +|08/01/2022 08:12:02| |Cabron coating is pretty amazing| +|08/01/2022 08:12:04| |AI AI SAH| +|08/01/2022 08:12:04| |AYE AYE SAH| +|08/01/2022 08:12:05| >boacge +|08/01/2022 08:12:06| |has shark team ever gotten a kill?| +|08/01/2022 08:12:30| |Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext Subtext | +|08/01/2022 08:12:32| |>merely pretending to be acting| +|08/01/2022 08:12:35| |AU PAS CAMARADES| +|08/01/2022 08:12:45| FLOOF +|08/01/2022 08:12:48| |I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES| +|08/01/2022 08:12:51| |imagine trusting yukari's espionage after that| +|08/01/2022 08:12:56| |>changing arena to confined space vs ooaria| +|08/01/2022 08:13:00| Yukari... +|08/01/2022 08:13:00| |She's sounds so old compared to the TV series :(| +|08/01/2022 08:13:02| |Ain't freedom if they still got infighting| +|08/01/2022 08:13:03| |I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH I HATE FRENCH | +|08/01/2022 08:13:05| |imagine running your hands through her floof| +|08/01/2022 08:13:08| |Favorite gup and sex position?| +|08/01/2022 08:13:16| |SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MOMO SHUT UP MO| +|08/01/2022 08:13:17| |anzu, mating press| +|08/01/2022 08:13:19| |nonna, paizuri| +|08/01/2022 08:13:19| |yukari lotus| +|08/01/2022 08:13:20| |light bulb lit| +|08/01/2022 08:13:21| |I want to ruffle the floof| +|08/01/2022 08:13:21| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 08:13:23| |anzu, doggy| +|08/01/2022 08:13:23| |Just drive thru the Ardennes. Works every time against the Fr*rch.| +|08/01/2022 08:13:24| |MIHO, RIMJOB| +|08/01/2022 08:13:26| |SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO SPEAK MORE MOMO | +|08/01/2022 08:13:28| |TIME FOR WAR CRIMES| +|08/01/2022 08:13:29| |Queen of the Night? Hana been to shady places| +|08/01/2022 08:13:31| |French dont know their fucking tanks| +|08/01/2022 08:13:32| |maho, missionary| +|08/01/2022 08:13:32| |who sounds old?| +|08/01/2022 08:13:38| |Katyusha naizuri| +|08/01/2022 08:13:39| Mako +|08/01/2022 08:13:40| |I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES I HATE FRENCHIES| +|08/01/2022 08:13:41| |Katyusha, Cunny Buffet| +|08/01/2022 08:13:41| |kino background art| +|08/01/2022 08:13:43| |It's the same turret| +|08/01/2022 08:13:50| |bocage bros... the Germans will eat us alive| +|08/01/2022 08:13:51| |Chubby Marie| +|08/01/2022 08:13:51| |hana, pronebone| +|08/01/2022 08:13:52| |GORILLA WARFARE| +|08/01/2022 08:13:52| >hedgerows +|08/01/2022 08:13:54| |WHY DID THEY TURN LARGE PARTS OF JAPAN INTO RURAL EUROPE?| +|08/01/2022 08:13:54| |>cunny buffet Kek| +|08/01/2022 08:13:55| |>three cakes| +|08/01/2022 08:13:59| |cum on her cake| +|08/01/2022 08:13:59| |french resistance, hahahahahaha| +|08/01/2022 08:14:00| |>the french resistance| +|08/01/2022 08:14:00| |HAVE YOU HEARD THIS SAYING| +|08/01/2022 08:14:00| FAT +|08/01/2022 08:14:00| |>ywn see gup in theatres| +|08/01/2022 08:14:00| |GORILLA WARFARE| +|08/01/2022 08:14:01| |Chubby belly, chubby thighs| +|08/01/2022 08:14:02| |Reaching 200kg here marie| +|08/01/2022 08:14:02| |BAKARONI WARFARE| +|08/01/2022 08:14:06| |How much does her fat ass weigh?| +|08/01/2022 08:14:06| |how many more cakes does this bitch got| +|08/01/2022 08:14:08| FAT +|08/01/2022 08:14:16| |ANGLED ARMOR| +|08/01/2022 08:14:18| |>shark retards| +|08/01/2022 08:14:28| |Everyone missed| +|08/01/2022 08:14:31| |>third cake in as many scenes| +|08/01/2022 08:14:31| |cant shoot for shit| +|08/01/2022 08:14:32| |45 degree + carbon coating| +|08/01/2022 08:14:33| |0 HITS| +|08/01/2022 08:14:36| How +|08/01/2022 08:14:36| |lovely Tiger placement| +|08/01/2022 08:14:39| |not a single tank has been killed in this| +|08/01/2022 08:14:42| |still can't shoot point blank range| +|08/01/2022 08:14:46| |the firing animations in Das Finale look great| +|08/01/2022 08:14:47| [scared] +|08/01/2022 08:14:47| |what happens if both teams run out of ammo?| +|08/01/2022 08:14:49| |its like 300 m max| +|08/01/2022 08:14:50| |Fuck your wall| +|08/01/2022 08:14:52| |wasting ammo on couple rock and bushes| +|08/01/2022 08:14:54| |It's a distraction you fucking retards| +|08/01/2022 08:14:58| |Frenchbros we fucking suck| +|08/01/2022 08:15:00| |Everyone missed a stationary target while they were shooting while stationary.| +|08/01/2022 08:15:04| |Our IAV is online| +|08/01/2022 08:15:05| |they punch the tanks until the flag pops| +|08/01/2022 08:15:05| |cunny scouts| +|08/01/2022 08:15:08| AZUSA +|08/01/2022 08:15:09| |Dont mind the tank shells whizzing by Azusa| +|08/01/2022 08:15:14| |i love azusa our next ooarai commander| +|08/01/2022 08:15:16| |saving private ryan mirror| +|08/01/2022 08:15:16| |anons... im really feeling the alcoholnow| +|08/01/2022 08:15:17| |carbon-coated cunny| +|08/01/2022 08:15:17| |A big target. I think they were shooting Leopon tank| +|08/01/2022 08:15:17| AZUCUTE +|08/01/2022 08:15:22| |ramming speed| +|08/01/2022 08:15:26| |carbon coated uniforms and skin cream| +|08/01/2022 08:15:26| |love her wing mirror on a stick| +|08/01/2022 08:15:33| |AN ETCH A SKETCH| +|08/01/2022 08:15:35| |I'd love to ramming speed Anzu| +|08/01/2022 08:15:35| |azusa, rape rp| +|08/01/2022 08:15:39| |ETCH-A-SKETCH LETS GOOOO| +|08/01/2022 08:15:40| |>kiddy drawing tablet thing| +|08/01/2022 08:15:41| |Tactical Etch-O-Sketch| +|08/01/2022 08:15:42| |Bait time| +|08/01/2022 08:15:55| |sodomy with sodoko| +|08/01/2022 08:15:55| |>alice has tablet >miho has an etch-n-sketc| +|08/01/2022 08:16:05| |>Waddle tonk| +|08/01/2022 08:16:05| |SLOW DORIFTO| +|08/01/2022 08:16:05| |alice, full nelson| +|08/01/2022 08:16:06| WIGGLING +|08/01/2022 08:16:07| |slow drifting| +|08/01/2022 08:16:08| WIGGLE +|08/01/2022 08:16:08| |CUTE TIGER SHUFFLING| +|08/01/2022 08:16:13| |BON AMI| +|08/01/2022 08:16:14| WRIGGLE +|08/01/2022 08:16:17| |dancing tiger hidden mallard| +|08/01/2022 08:16:18| |where are we, I went to sleep when the chovy showed up the first time| +|08/01/2022 08:16:21| |RICOCHET RICOCHET| +|08/01/2022 08:16:22| |we always talk about Anzio but Ooarai are poorfags as well| +|08/01/2022 08:16:22| |smoke would be handy...| +|08/01/2022 08:16:24| |Wiggle wiggle wiggle| +|08/01/2022 08:16:25| BONK +|08/01/2022 08:16:27| DF2 +|08/01/2022 08:16:27| |DON'T USE YOUR PET NAMES DURING THE MATCH| +|08/01/2022 08:16:27| FLUFF +|08/01/2022 08:16:29| |cute bow| +|08/01/2022 08:16:32| |why did these fr*nch not surrender yet?| +|08/01/2022 08:16:35| |cute floof| +|08/01/2022 08:16:44| |>they fell for it| +|08/01/2022 08:16:44| |SPY CREEPIN AROUD| +|08/01/2022 08:16:45| |>incite revolution war| +|08/01/2022 08:16:48| |CIA FLASE FLAGS| +|08/01/2022 08:16:53| |OSHIDA BUTT| +|08/01/2022 08:16:55| |FROGE BUTT| +|08/01/2022 08:16:55| |SPY CHECK BITCH| +|08/01/2022 08:16:58| |who was in the wrong here?| +|08/01/2022 08:16:59| |Bon ami can't hit regardless. What you think Bon ami can do.| +|08/01/2022 08:17:00| |>they fell for it? >dump it| +|08/01/2022 08:17:00| |CIA FALSE FLAG OPERATION| +|08/01/2022 08:17:05| |glowniggers did this| +|08/01/2022 08:17:06| |DUMB FRENCH| +|08/01/2022 08:17:07| |Dumb frogs| +|08/01/2022 08:17:08| |RACE WAR'S BACK ON THE MENU| +|08/01/2022 08:17:08| TROLLED +|08/01/2022 08:17:09| |BETRAYED BY OUR OWN RACE| +|08/01/2022 08:17:10| |dumb frogs| +|08/01/2022 08:17:12| |Ruse: 100| +|08/01/2022 08:17:12| YAPPARI +|08/01/2022 08:17:13| |own goal| +|08/01/2022 08:17:14| |(((they))) shot you| +|08/01/2022 08:17:14| GLOWDOKO +|08/01/2022 08:17:19| |we do a little trolling| +|08/01/2022 08:17:21| |lets gooo race war| +|08/01/2022 08:17:21| GLOWDOKO +|08/01/2022 08:17:22| |(((HANDS RUBBING)))| +|08/01/2022 08:17:24| |Freedom's back on the menu boys| +|08/01/2022 08:17:24| |CLASS WAR NOW KILL THE RICH| +|08/01/2022 08:17:27| SUBVERTED +|08/01/2022 08:17:28| |The frog fears the glowie | +|08/01/2022 08:17:28| |>frenchies are better at taking eachother out than Ooari| +|08/01/2022 08:17:30| |CURRENTLY KILLED MORE OF THEIR OWN THEN OOARAI| +|08/01/2022 08:17:30| |French rioting again| +|08/01/2022 08:17:31| |TROLLING: COMMENCED| +|08/01/2022 08:17:33| 1776 +|08/01/2022 08:17:34| |CLASS WAR NOW| +|08/01/2022 08:17:34| REVOLUTION +|08/01/2022 08:17:37| |BLUE ENEMIES| +|08/01/2022 08:17:37| |oy vey kappa yo're my greatest ally!| +|08/01/2022 08:17:38| |Fr*nch arent human| +|08/01/2022 08:17:39| |Innocent Somua killed in cold blood by Tyranic Nobles| +|08/01/2022 08:17:40| |ANDOU WILL CONTINUE THE REVOLUTION| +|08/01/2022 08:17:41| CLANG +|08/01/2022 08:17:42| |frenchies now have precision accuracy| +|08/01/2022 08:17:43| |DOWN WITH THE NOBILITY| +|08/01/2022 08:17:47| |TK > anemy| +|08/01/2022 08:17:47| |GIRLS UND RACEWAR| +|08/01/2022 08:17:49| |They could have just driven through the hedges| +|08/01/2022 08:17:50| OLALALALALALALALALA +|08/01/2022 08:17:50| |CLASS WAR CLASS WAR| +|08/01/2022 08:17:50| |CLASS WAR NOT FUCK THE BORJ| +|08/01/2022 08:17:52| |Meanwhile Marie does nothing| +|08/01/2022 08:17:56| |1789 CLASS WAR NOW!!| +|08/01/2022 08:18:00| |GIRLS AND FROG wAR| +|08/01/2022 08:18:01| |EAT THE RICH| +|08/01/2022 08:18:01| |Marie is eating| +|08/01/2022 08:18:01| |too busy eating| +|08/01/2022 08:18:02| |Frogs BTFO| +|08/01/2022 08:18:02| |GAS THE KAPPA CLASS WAR NOWWWWWWWWWWWWWWWWWWWWWWWW| +|08/01/2022 08:18:04| |Sun Tzu said: The highest acme of skill is to make your enemy shoot himself.| +|08/01/2022 08:18:08| |frenchbros why this happen| +|08/01/2022 08:18:09| |BC Freedom burns, and Marie just eats cake| +|08/01/2022 08:18:11| |PEASANTS NEED TO LEARN THEIR PLACE| +|08/01/2022 08:18:12| |So what does management think about this| +|08/01/2022 08:18:13| |SUN TZU SAID THAT| +|08/01/2022 08:18:17| |the eternal (((kappa)))| +|08/01/2022 08:18:19| OUI +|08/01/2022 08:18:20| oui! +|08/01/2022 08:18:22| |Sun Tzu said Baguettes aint good shots either| +|08/01/2022 08:18:26| |sun tzu said: all warfare is based| +|08/01/2022 08:18:27| |SUN TZU SAID THAT ALL WARFARE IS BASED| +|08/01/2022 08:18:28| kino +|08/01/2022 08:18:28| OUI +|08/01/2022 08:18:29| |JE SUIS MONTE| +|08/01/2022 08:18:31| |welcome to republics| +|08/01/2022 08:18:33| |SUN TZU SAID THAT| +|08/01/2022 08:18:39| w +|08/01/2022 08:18:40| |oui bros...| +|08/01/2022 08:18:40| |Jesus christ marie is fucking useless| +|08/01/2022 08:18:41| |So who's in the wrong here?| +|08/01/2022 08:18:45| |Sun Tzu said : PANZE VOR| +|08/01/2022 08:18:45| |FAT FUCK| +|08/01/2022 08:18:49| |AND I THINK HE KNOWS A LIOTTLE MORE ABOUT FIGHTING THAN YOU DO PAL| +|08/01/2022 08:18:49| >bongs +|08/01/2022 08:18:50| |and suntzu invented tanks so he know better than you do pal| +|08/01/2022 08:18:51| |unironically oshida| +|08/01/2022 08:18:52| |The French deserved to lose this match| +|08/01/2022 08:18:53| |and from that day forward anytime a bunch of animals are together in one place it's called a TZU| +|08/01/2022 08:18:54| |mary thighs| +|08/01/2022 08:18:54| |meawhile back at versailles| +|08/01/2022 08:18:56| |>tfw no teaparty cake-glutton midget gf| +|08/01/2022 08:18:59| |THE INTERNATIONAL (((KAPPA)))| +|08/01/2022 08:18:59| RETARDS +|08/01/2022 08:19:00| |CAN'T EVEN KILL AN EARLY WAR FRENCH TANK WITH A LATE WAR FRENCH TANK| +|08/01/2022 08:19:01| |quick reminder, what does panzer vor mean again anons?????????| +|08/01/2022 08:19:05| |carbon caoting| +|08/01/2022 08:19:07| |flexible uoooooooh sooon| +|08/01/2022 08:19:09| |Dessert cunny..............| +|08/01/2022 08:19:12| |it means panzer vor| +|08/01/2022 08:19:12| w +|08/01/2022 08:19:15| |marie boutta abuse that carbon| +|08/01/2022 08:19:16| |I can see how the frenchies were irrelevant till now| +|08/01/2022 08:19:16| |Big tanks got worse aim than the small ones| +|08/01/2022 08:19:16| |That fat face| +|08/01/2022 08:19:17| wwwwwww +|08/01/2022 08:19:17| |I wish she would stomp on my cock like that| +|08/01/2022 08:19:17| |CUTE FATTY| +|08/01/2022 08:19:19| oops +|08/01/2022 08:19:19| |THE TEAM IS FALLING APART AND MARIE STILL EATS CAKE| +|08/01/2022 08:19:21| |SACRE BLEU| +|08/01/2022 08:19:23| |CHOKE ON KEEKI| +|08/01/2022 08:19:25| |The french some how get good at aiming when shooting each other| +|08/01/2022 08:19:30| |LE FROG| +|08/01/2022 08:19:31| |I want to be Maries cushion| +|08/01/2022 08:19:32| |THATS LIKE HER 4th CAKE ON THIS MATCH HOLY SHIT| +|08/01/2022 08:19:32| |french-press was a nice touch there| +|08/01/2022 08:19:33| |GOD Marie is so fucking sexy| +|08/01/2022 08:19:33| |Athletic french cosplayer| +|08/01/2022 08:19:34| WIGGLE +|08/01/2022 08:19:37| WIGGLE +|08/01/2022 08:19:38| |haha french| +|08/01/2022 08:19:38| WIGGLE +|08/01/2022 08:19:39| |CUTE WIGGLE| +|08/01/2022 08:19:39| |lesbian sex| +|08/01/2022 08:19:40| |Marie doing her best french high command impression| +|08/01/2022 08:19:41| cute +|08/01/2022 08:19:41| SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX +|08/01/2022 08:19:41| |WIGGLE WIGGLE| +|08/01/2022 08:19:42| |MARIE WIGGLE| +|08/01/2022 08:19:43| wiggle +|08/01/2022 08:19:43| |UOOOOOOOOOOOOOOOOH ATHLETIC FROG LOLI| +|08/01/2022 08:19:43| |CUTE WIGGLE| +|08/01/2022 08:19:43| |jiggle wiggle| +|08/01/2022 08:19:45| |So limber...| +|08/01/2022 08:19:46| |nice flip| +|08/01/2022 08:19:46| WIGGLE +|08/01/2022 08:19:49| SEEEEEEEEEEX +|08/01/2022 08:19:50| |this lead to doujin| +|08/01/2022 08:19:50| damn +|08/01/2022 08:19:50| |frog legs| +|08/01/2022 08:19:50| |JUST FUCK EACH OTHER ALREADY| +|08/01/2022 08:19:51| UOOOOOOOOOOOOOOOOH +|08/01/2022 08:19:51| |Marie playing limbo| +|08/01/2022 08:19:53| |GOAT HERDER| +|08/01/2022 08:19:54| uoooooh +|08/01/2022 08:19:55| |>goat herder| +|08/01/2022 08:19:55| |CORSICAN GOAT HERDER| +|08/01/2022 08:19:56| |Marie is for lewd acts| +|08/01/2022 08:19:56| |>these two again| +|08/01/2022 08:20:00| |high level insults| +|08/01/2022 08:20:02| |>GOAT HERDER| +|08/01/2022 08:20:03| |Limbo limbo limbo| +|08/01/2022 08:20:04| |SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! SEX WITH MARIE! | +|08/01/2022 08:20:04| |SO FLEXIBLE| +|08/01/2022 08:20:04| |damn she's nimble for being 150kg| +|08/01/2022 08:20:05| |CORSICA IS RIGHTFUL ITALIAN CLAY| +|08/01/2022 08:20:11| |IF ONLY THEY AIMED AT THE RENAULT| +|08/01/2022 08:20:11| SSSEEEEEEEEEEEGGGGGGGGGGGGSSSSSSSS +|08/01/2022 08:20:13| |150 kg| +|08/01/2022 08:20:15| |DOWN WITH THE BOURBON RESTORATION| +|08/01/2022 08:20:16| >RETARDED +|08/01/2022 08:20:16| |SEX LEGS| +|08/01/2022 08:20:17| |best girl| +|08/01/2022 08:20:17| RETARD +|08/01/2022 08:20:18| |I'm surprised that barrel didn't bend under her weight| +|08/01/2022 08:20:18| |ANY HIT IN ANY LOCATION WOULD HAVE BEEN A KNOCK OUT| +|08/01/2022 08:20:19| |I want to see these frogs sex each other| +|08/01/2022 08:20:23| |oshida retarded| +|08/01/2022 08:20:27| |senshado makes girls dumb| +|08/01/2022 08:20:27| |THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS THIGHS | +|08/01/2022 08:20:27| OSHIDAAAAAAAAA +|08/01/2022 08:20:29| >RETARDED +|08/01/2022 08:20:36| |ruh roh| +|08/01/2022 08:20:38| |turns out marie's wight is muscle| +|08/01/2022 08:20:38| |Andou is not so retarded| +|08/01/2022 08:20:38| nyoom +|08/01/2022 08:20:40| |AU PAS!!| +|08/01/2022 08:20:42| |fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck fat fuck | +|08/01/2022 08:20:42| |Friendly fire: ON| +|08/01/2022 08:20:43| |LEFT TANK AIM LEFT| +|08/01/2022 08:20:44| |frenchies are cutest when they're almost retarded| +|08/01/2022 08:20:45| |Senshadou makes girls breedable| +|08/01/2022 08:20:45| |fuck, I'm starting to get tired BUT I WON'T FALL ASLEEP, I CAN THIS| +|08/01/2022 08:20:47| |rrip ducks| +|08/01/2022 08:20:47| F +|08/01/2022 08:20:48| |she's the Kingpin but smol| +|08/01/2022 08:20:50| |TIME TO KISS| +|08/01/2022 08:20:50| |rip sodoko| +|08/01/2022 08:20:54| |Marie ain't got enough chest though. Only thighs. | +|08/01/2022 08:20:54| |o7 ;_;| +|08/01/2022 08:20:55| |FRENCH YURI| +|08/01/2022 08:20:56| |subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subt| +|08/01/2022 08:20:56| Andou-kun +|08/01/2022 08:20:57| |Alas poor Sodoko| +|08/01/2022 08:20:58| |make-up sex| +|08/01/2022 08:20:59| |GAY GAY GAY GAY GAY GAY| +|08/01/2022 08:20:59| |And then they fucked| +|08/01/2022 08:20:59| |JUST FUCK ALREADY| +|08/01/2022 08:20:59| |gay frogs| +|08/01/2022 08:20:59| |SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX | +|08/01/2022 08:21:01| |kiss kiss kiss kiss kiss| +|08/01/2022 08:21:01| GAAAAAAAAAAAAAAAAY +|08/01/2022 08:21:02| |sodoko status: sodomised| +|08/01/2022 08:21:03| |NOW KISS AND MAKE UP| +|08/01/2022 08:21:03| |NOW KISS| +|08/01/2022 08:21:04| |make up sex soon| +|08/01/2022 08:21:05| |NOW KISS| +|08/01/2022 08:21:05| |can't believe sodoko died| +|08/01/2022 08:21:06| |JUST FUCK ALREADY| +|08/01/2022 08:21:08| |enough you your (((kappa)) trickery| +|08/01/2022 08:21:14| |GAY FROGS| +|08/01/2022 08:21:14| |this isn't like the french revolution...| +|08/01/2022 08:21:15| |/u/fags >>>/out/| +|08/01/2022 08:21:19| |WHERE ARE MY MARIE THIGHJOB DOUJINS| +|08/01/2022 08:21:19| |NOW DRAW THEM KISSING| +|08/01/2022 08:21:20| |ONIONBROS LETS GO| +|08/01/2022 08:21:27| |/u/ fags >>>>>/in/| +|08/01/2022 08:21:29| |kino incoming| +|08/01/2022 08:21:30| |WE CAN STILL WIN THIS BCBROS| +|08/01/2022 08:21:32| g/u/p +|08/01/2022 08:21:34| |NOW DRAW HER BEING A GOOD PERSON| +|08/01/2022 08:21:41| |andou is heterosexual and my wife| +|08/01/2022 08:21:42| |HERES HOW BC CAN STILL WIN: | +|08/01/2022 08:21:42| |WHY WASTE SHOTS ON THE HEDGES | +|08/01/2022 08:21:43| |French apology now = Gonna use a baguette on you later| +|08/01/2022 08:21:45| |I put $40000 on BC...| +|08/01/2022 08:21:46| |/u/ ENTER| +|08/01/2022 08:21:54| |3d kino| +|08/01/2022 08:21:55| |BC literally cannot lose| +|08/01/2022 08:21:55| |Battle City.NES| +|08/01/2022 08:21:56| |FAT ASS| +|08/01/2022 08:21:58| |>heterosexual >this show| +|08/01/2022 08:22:00| |NOW DRAW HER BEIGN A GOOD WIFE AND MOTHER| +|08/01/2022 08:22:03| |Your wife is pretty cute can I have her?| +|08/01/2022 08:22:04| |Ooaraifags can't stop winning| +|08/01/2022 08:22:13| |i will commit seppuku if bc lose| +|08/01/2022 08:22:14| |French chest| +|08/01/2022 08:22:18| |BC lose when their shitty gunner cant hit a shit on bridge| +|08/01/2022 08:22:22| |RABBIT TEAM NO| +|08/01/2022 08:22:23| |hets are losers like saori and arisu| +|08/01/2022 08:22:25| |Aint enough rump on Marie backside| +|08/01/2022 08:22:27| |LETS GO BC| +|08/01/2022 08:22:28| |>m3 quietly jobs| +|08/01/2022 08:22:32| SORE +|08/01/2022 08:22:38| 3-some +|08/01/2022 08:22:40| |exact same frame as when they were on the maus| +|08/01/2022 08:22:44| |KINO SCENE| +|08/01/2022 08:22:45| KINO +|08/01/2022 08:22:45| |I hate the Type-89s firing sound in DF2| +|08/01/2022 08:22:46| |IT'S KINO TIME| +|08/01/2022 08:22:46| |onion time| +|08/01/2022 08:22:47| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:22:48| |dual penetration| +|08/01/2022 08:22:49| kino +|08/01/2022 08:22:50| |AU PAS AU PAS AU PAS| +|08/01/2022 08:22:50| |Volleyball club jobs| +|08/01/2022 08:22:50| Kino +|08/01/2022 08:22:50| |looks like we're going on a trip to corsica BC bros| +|08/01/2022 08:22:51| heem +|08/01/2022 08:22:51| |I LOVE THE ONION| +|08/01/2022 08:22:52| KINO +|08/01/2022 08:22:53| |AU PAS CAMARADES| +|08/01/2022 08:22:53| |KINO TIME| +|08/01/2022 08:22:54| |j'aime l'oingon| +|08/01/2022 08:22:55| |I RABBU ONION| +|08/01/2022 08:22:56| speen +|08/01/2022 08:22:56| |AU PAS CAMARADES| +|08/01/2022 08:22:57| |ONION BROS STAND UP| +|08/01/2022 08:22:57| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:22:58| |not the ducks...| +|08/01/2022 08:22:59| |J'AIME L'OIGNON| +|08/01/2022 08:22:59| |AU PAS| +|08/01/2022 08:23:00| >ONIONS +|08/01/2022 08:23:01| |cope song.mp3| +|08/01/2022 08:23:03| |NOOOO NO MORE ONIONS PLEASE| +|08/01/2022 08:23:03| >ONION +|08/01/2022 08:23:04| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:04| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:05| |I LOVE THE ONION| +|08/01/2022 08:23:05| |LE SINGING| +|08/01/2022 08:23:06| |I HATE THE ONION| +|08/01/2022 08:23:07| |EAT THE ONIONS| +|08/01/2022 08:23:07| |last aus pas| +|08/01/2022 08:23:09| |ONION TIME AGAIN| +|08/01/2022 08:23:09| |I LOVE THE ONION| +|08/01/2022 08:23:10| |LETS GO ONION BROS WE CAN WIN THIS| +|08/01/2022 08:23:10| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:10| | AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD AU PAS CAMERAD | +|08/01/2022 08:23:12| |Frog bros maybe we can do it| +|08/01/2022 08:23:12| |Frenchies, I-I kneel| +|08/01/2022 08:23:13| |ducks jobbed fucking bullshit| +|08/01/2022 08:23:13| |PLEASE MARIE-SAMA NO MORE ONIONS AIIEEEEE| +|08/01/2022 08:23:13| |J'aime l'oignon!!!| +|08/01/2022 08:23:14| COPE +|08/01/2022 08:23:15| |I WILL EAT THE ONION| +|08/01/2022 08:23:16| |WE GOT THIS ONIONBROS| +|08/01/2022 08:23:16| |they got a lot better at pronouncing french| +|08/01/2022 08:23:16| |ONE OF THE BEST SCENES| +|08/01/2022 08:23:16| Embarassing +|08/01/2022 08:23:16| |AU PAS AU PAS AU PAS | +|08/01/2022 08:23:17| |J'aime l'oignon| +|08/01/2022 08:23:18| |Is singing really smart when you're getting assraped| +|08/01/2022 08:23:20| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:23:20| |AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE | +|08/01/2022 08:23:20| |WE HAVE YOU SURROUNDED COME OUT AND EAT YOUR ONIONS | +|08/01/2022 08:23:21| |AUS PAS AUS PAS AUS PAS| +|08/01/2022 08:23:22| |AU PAS CAMARADES| +|08/01/2022 08:23:22| |ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +|08/01/2022 08:23:22| |Fried onions are the best| +|08/01/2022 08:23:23| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:25| |I forgot about this kino| +|08/01/2022 08:23:26| |chant le incantantion honhonhon| +|08/01/2022 08:23:27| |that whirring sound scared the shit out of me| +|08/01/2022 08:23:27| ONIONS +|08/01/2022 08:23:28| |ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +|08/01/2022 08:23:28| |yeah sing about cumraids after wiping half your own forces| +|08/01/2022 08:23:30| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:33| |AU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADESAU PAS CAMARADES| +|08/01/2022 08:23:35| |ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +|08/01/2022 08:23:36| |they are french!| +|08/01/2022 08:23:36| |CAMARADES doko?| +|08/01/2022 08:23:38| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:39| |I LOVE THE ONION| +|08/01/2022 08:23:39| LOIGNON +|08/01/2022 08:23:42| |I LOVE THE ONION| +|08/01/2022 08:23:42| |O N I O N S| +|08/01/2022 08:23:43| |Time to conquer half of europe| +|08/01/2022 08:23:43| |I WANT TO DIE PROTECTING MY COUNTRY AND DIE WHILE SINGING| +|08/01/2022 08:23:45| |STUG LIFE| +|08/01/2022 08:23:45| |ONION GUD ONION FRIED! ONION GUD ONION FRIED!| +|08/01/2022 08:23:45| |J'aime L'oignon frit a huile J'aime l'oignon car il est bon J'aime L'oignon frit a l'huile, J'aime l'oignon, j'aime l'oignon| +|08/01/2022 08:23:47| |AU PAS| +|08/01/2022 08:23:47| >Onions +|08/01/2022 08:23:48| |>ONIONS SAUCE| +|08/01/2022 08:23:49| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:23:50| |Au pas camarades| +|08/01/2022 08:23:52| |AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +|08/01/2022 08:23:52| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:52| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:53| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:54| |AU PAS CAMARADES AU PAS AU PAS AU PAN| +|08/01/2022 08:23:55| |AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE AU PAS CAMARADE | +|08/01/2022 08:23:55| |AU PAS AU PAS AU PAS| +|08/01/2022 08:23:56| |singing onion ain't gonna make ya win | +|08/01/2022 08:23:57| |oppai camarades oppai camarades oppai camarades oppai camarades oppaioppaioppaioppai| +|08/01/2022 08:23:58| |Austrians don't deserve onions| +|08/01/2022 08:23:58| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:23:58| |AU PAS AU APAS| +|08/01/2022 08:23:58| F +|08/01/2022 08:23:58| |AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +|08/01/2022 08:23:59| |sticking an onion up your butt| +|08/01/2022 08:23:59| KINO +|08/01/2022 08:23:59| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:24:00| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES | +|08/01/2022 08:24:01| oppai +|08/01/2022 08:24:01| |AU PAS CAMARADES AU PAS AU PAS AU PAN| +|08/01/2022 08:24:01| andoubros... +|08/01/2022 08:24:01| |AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +|08/01/2022 08:24:01| |AU PAS CAMARADES| +|08/01/2022 08:24:02| |And then there was one| +|08/01/2022 08:24:04| oppai +|08/01/2022 08:24:04| |AU PAS CAMARADES AU PAS AU PAS AU PAN| +|08/01/2022 08:24:04| KINO +|08/01/2022 08:24:05| |AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +|08/01/2022 08:24:06| |AU PAS AU PAS AU PAS | +|08/01/2022 08:24:06| |AUS PAS AUS PAS AUS PAS| +|08/01/2022 08:24:07| |Au PAS!!!| +|08/01/2022 08:24:08| |she bouta get fucked| +|08/01/2022 08:24:09| |AU PAS CAMARADE| +|08/01/2022 08:24:09| |AU PAS AU PAS AU PAS| +|08/01/2022 08:24:10| |AU PAS CAMARADES AU PAS CAMARADES AU PAS AU PAS AU PAS | +|08/01/2022 08:24:11| |AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS AU PAS | +|08/01/2022 08:24:12| ;_; +|08/01/2022 08:24:12| |THE KINO SOLE SINGER| +|08/01/2022 08:24:12| |LETS GO ONION CHADS| +|08/01/2022 08:24:12| |AU PAS CAMERADE AU PAS CAMERADE AU PAS AU PAS AU PAS | +|08/01/2022 08:24:13| |AU PAS CAMARADES AU PAS AU PAS AU PAS| +|08/01/2022 08:24:13| |AU PAS CAMARADE AU PAS CAMARADE AU PAS AU PAS AU PAS AU PAS CAMARADE AU PAS CAMARADE AU PAS AU PAS AU PAS | +|08/01/2022 08:24:14| OPPA +|08/01/2022 08:24:14| |Onion song too catchy, they synched Miho mouth to the lyrics| +|08/01/2022 08:24:15| |AU PAS AU PAS AU PAS| +|08/01/2022 08:24:17| |AU PAS CAMARADES AU PAS AU PAS AU PAS| +|08/01/2022 08:24:18| |SACRE BLEU!| +|08/01/2022 08:24:18| |PEAK GUP KINO| +|08/01/2022 08:24:19| |AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES AU PAS CAMARADES| +|08/01/2022 08:24:20| |AU PAS AU PAS AU PAS| +|08/01/2022 08:24:20| bonk +|08/01/2022 08:24:20| |It's... over| +|08/01/2022 08:24:23| |frog asmr| +|08/01/2022 08:24:24| BONK +|08/01/2022 08:24:26| ;_;7 +|08/01/2022 08:24:26| |carbon coating| +|08/01/2022 08:24:26| |I don't think the renault can kill that from behind| +|08/01/2022 08:24:26| |of fuggg| +|08/01/2022 08:24:27| |>2jz sounds| +|08/01/2022 08:24:27| |;-;7 rip fatty| +|08/01/2022 08:24:27| |not liek this...| +|08/01/2022 08:24:27| |owari da| +|08/01/2022 08:24:28| DEAD +|08/01/2022 08:24:29| |Frog bros....| +|08/01/2022 08:24:29| |oh fuck| +|08/01/2022 08:24:29| 1871 +|08/01/2022 08:24:30| F +|08/01/2022 08:24:30| ;_; +|08/01/2022 08:24:30| BTFO +|08/01/2022 08:24:31| MERDE +|08/01/2022 08:24:32| o7 +|08/01/2022 08:24:32| f +|08/01/2022 08:24:33| |dumb baka| +|08/01/2022 08:24:33| |poor little french girl| +|08/01/2022 08:24:34| |ONION BROS…..| +|08/01/2022 08:24:34| o7 +|08/01/2022 08:24:35| RIP +|08/01/2022 08:24:35| MERDE +|08/01/2022 08:24:35| |CARBON COATED MARIE| +|08/01/2022 08:24:36| BLOCKED +|08/01/2022 08:24:36| DEAD +|08/01/2022 08:24:36| ;_;7 +|08/01/2022 08:24:37| MERDE +|08/01/2022 08:24:37| DEAD +|08/01/2022 08:24:38| |the french heroic sacrifices here are prettty kino| +|08/01/2022 08:24:39| |last meal| +|08/01/2022 08:24:39| ;_;7 +|08/01/2022 08:24:40| |>carbon cake| +|08/01/2022 08:24:40| O7 +|08/01/2022 08:24:40| |not the fifth cake....| +|08/01/2022 08:24:41| MERE +|08/01/2022 08:24:42| |RIP Marie| +|08/01/2022 08:24:42| ded +|08/01/2022 08:24:43| ;_;7 +|08/01/2022 08:24:43| |FRANCE HAS CAPITULATED| +|08/01/2022 08:24:44| |can't believe marie die| +|08/01/2022 08:24:44| |She could have died| +|08/01/2022 08:24:44| |piratebros... WE WON| +|08/01/2022 08:24:44| |let 'em eat cake| +|08/01/2022 08:24:45| |Welp cake time| +|08/01/2022 08:24:45| |she should have surrendered| +|08/01/2022 08:24:46| |WE WERE SO CLOSE BC-BROS| +|08/01/2022 08:24:46| |time for celebratory frog rape| +|08/01/2022 08:24:46| DUCE +|08/01/2022 08:24:47| |cARBON COATED CAKE| +|08/01/2022 08:24:47| |Not even close!| +|08/01/2022 08:24:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:47| |GAY FROGS CAN'T BEAT PLOT ARMOR| +|08/01/2022 08:24:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:24:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:24:50| |they won again, who would've guessed?| +|08/01/2022 08:24:50| |RETARDED ITALIANS| +|08/01/2022 08:24:51| MERDE +|08/01/2022 08:24:51| DUCE +|08/01/2022 08:24:51| |I just want to have sex with Marie...| +|08/01/2022 08:24:51| |what did they sing for| +|08/01/2022 08:24:52| |anzio be like| +|08/01/2022 08:24:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:53| |These girls are all Japanese*| +|08/01/2022 08:24:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:24:53| DUCE +|08/01/2022 08:24:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:54| |MOMO LOVE| +|08/01/2022 08:24:55| DUCE +|08/01/2022 08:24:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:24:56| |DUCE DUCE DUCE| +|08/01/2022 08:24:57| |Holy shit shark team missed at that range| +|08/01/2022 08:24:57| DUCE +|08/01/2022 08:24:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:24:57| SISISISISISISISI +|08/01/2022 08:24:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:57| DVCE +|08/01/2022 08:24:58| |SLEEPY ITALIANS| +|08/01/2022 08:24:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:24:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:25:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:25:03| |Shitalians sleep through the match again| +|08/01/2022 08:25:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:25:06| |OPEN FIELD ORGY| +|08/01/2022 08:25:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:25:09| |Duce tents| +|08/01/2022 08:25:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:25:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:25:11| |HOLD YOUR DUCE| +|08/01/2022 08:25:15| |SHE CRIED AT FRANCE'S WEAKNESS| +|08/01/2022 08:25:16| |Based Duce spam| +|08/01/2022 08:25:19| |Did they coat Marie in carbon before the match| +|08/01/2022 08:25:21| |need more chamicals in the water| +|08/01/2022 08:25:24| |what 1 frame of DVCE does to a mf| +|08/01/2022 08:25:25| |premature duce'ing| +|08/01/2022 08:25:30| |"cooperating" "cooperating" "cooperating" "cooperating" "cooperating" | +|08/01/2022 08:25:31| CUTE +|08/01/2022 08:25:32| |bc will never win championship| +|08/01/2022 08:25:33| |CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SH| +|08/01/2022 08:25:37| |Look at those tiddies| +|08/01/2022 08:25:38| |Asumi's asumis| +|08/01/2022 08:25:40| |Drop a deuce in Duce's tent.| +|08/01/2022 08:25:42| REVOLUTION +|08/01/2022 08:25:44| |CUTE FATTY| +|08/01/2022 08:25:44| |shit frogs| +|08/01/2022 08:25:44| |Setting up for the French redemption in the next series!| +|08/01/2022 08:25:46| |SHE ATE LIKE 5 CAKES DURING THE MATCH| +|08/01/2022 08:25:46| |Marie didn't learn anything| +|08/01/2022 08:25:48| |Duce means poop!| +|08/01/2022 08:25:50| |fat fuck| +|08/01/2022 08:25:50| |>AT THE TIME THIS WAS MADE THE BOGS WERE STILL ALIVE| +|08/01/2022 08:25:51| |BIG HATS| +|08/01/2022 08:25:52| Sex +|08/01/2022 08:25:52| |YELLOW TEXT MARKED FOR DECIMATION| +|08/01/2022 08:25:52| |MARIE IS A FEEDER| +|08/01/2022 08:25:53| |mako seiyuu on crack| +|08/01/2022 08:25:55| |SEX WITH MARIE| +|08/01/2022 08:25:55| |let them eat cake| +|08/01/2022 08:25:56| FAT +|08/01/2022 08:26:01| |tl note, revolution means hatefuck| +|08/01/2022 08:26:05| GAMERS +|08/01/2022 08:26:05| |>Create a loveable underdog >Have Ooarai beat them| +|08/01/2022 08:26:05| |GAYMERS RISE UP| +|08/01/2022 08:26:06| |if she were fat she wouldn't share| +|08/01/2022 08:26:10| >/v/ermin +|08/01/2022 08:26:10| nerds +|08/01/2022 08:26:10| |lmao cleaning her fingers on her clothes| +|08/01/2022 08:26:11| nyaa +|08/01/2022 08:26:12| |Why do the losers feed the winners, is it like Pokemon where if you beat up a kid they give you money?| +|08/01/2022 08:26:12| |GAYMERS LETS GOOOOOOOOOO| +|08/01/2022 08:26:12| ONOOOOOOOOOOOOO +|08/01/2022 08:26:12| |funny tank game haha nyaaa| +|08/01/2022 08:26:13| NYAA +|08/01/2022 08:26:20| |flint so cute| +|08/01/2022 08:26:22| |She wants others to be fat| +|08/01/2022 08:26:24| |BASED FISHERWOMEN| +|08/01/2022 08:26:25| |Front Line was a great game fr| +|08/01/2022 08:26:25| |Fuck pirates| +|08/01/2022 08:26:25| |is it teibou tuesday yet?| +|08/01/2022 08:26:26| burn +|08/01/2022 08:26:28| |>create a loveable underdog| +|08/01/2022 08:26:28| |kino bottle sounds| +|08/01/2022 08:26:29| |BULLY THE RABBITS| +|08/01/2022 08:26:31| |wtf they gonna catch there| +|08/01/2022 08:26:31| CUTE +|08/01/2022 08:26:31| |Do not bully the rabbits| +|08/01/2022 08:26:32| |EAT THE RABBITS| +|08/01/2022 08:26:32| |bunny cunnies...| +|08/01/2022 08:26:34| |based bullying| +|08/01/2022 08:26:34| |Maries fetish is chubby tummies and thicc thighs| +|08/01/2022 08:26:35| |saki smile| +|08/01/2022 08:26:36| |Fishing in a lifeboat| +|08/01/2022 08:26:36| |TEIBOU TUESDAY BOYS| +|08/01/2022 08:26:37| |>have slags beat them| +|08/01/2022 08:26:37| |>ankou fishing| +|08/01/2022 08:26:37| |Dumb rabbits| +|08/01/2022 08:26:39| |based hazing| +|08/01/2022 08:26:40| |TL Note: "Anzu" means "SEX".| +|08/01/2022 08:26:41| ZAZA +|08/01/2022 08:26:44| |THANKS TL| +|08/01/2022 08:26:45| |rabbits deserve it| +|08/01/2022 08:26:46| |BULLY ALL THE CUNNIES| +|08/01/2022 08:26:46| |Anzu eating| +|08/01/2022 08:26:48| Anzu +|08/01/2022 08:26:49| |this will seriously impact the trout population| +|08/01/2022 08:26:50| |THANKS TL| +|08/01/2022 08:26:50| |>PRICE NEGOTIABLE| +|08/01/2022 08:26:50| |thanks tl| +|08/01/2022 08:26:50| |Ty TL| +|08/01/2022 08:26:53| |"Price Negotiable"| +|08/01/2022 08:26:54| |Is this Slow Loop?| +|08/01/2022 08:26:55| |DO YOU LIKE MY CAR| +|08/01/2022 08:26:56| |they bought a fucking car????| +|08/01/2022 08:26:57| samui +|08/01/2022 08:26:57| |What even is that car?| +|08/01/2022 08:26:58| |do the girls come with the car| +|08/01/2022 08:27:00| |Cutlass caught something at least| +|08/01/2022 08:27:01| FLOOF +|08/01/2022 08:27:02| |I KNOW WHAT I GOT NO LOWBALLERS| +|08/01/2022 08:27:04| |My first time watching DF2 since release| +|08/01/2022 08:27:05| |DATE TIME| +|08/01/2022 08:27:09| BOKOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 08:27:09| |FLOOF IS TOO CUTE| +|08/01/2022 08:27:12| |DATE WITH LOLI| +|08/01/2022 08:27:12| BOKO +|08/01/2022 08:27:13| BOKO?! +|08/01/2022 08:27:13| ToT +|08/01/2022 08:27:15| BOKO +|08/01/2022 08:27:15| |BOKO AUTISM| +|08/01/2022 08:27:15| |autism date| +|08/01/2022 08:27:15| DEITO?!?!?!?!?! +|08/01/2022 08:27:17| |mako taberu| +|08/01/2022 08:27:17| |CUTE DATE| +|08/01/2022 08:27:18| DAETO? +|08/01/2022 08:27:19| BOKO +|08/01/2022 08:27:19| GANBAAREEE!@!@! +|08/01/2022 08:27:19| |BOKO BOKO BOKO BOKO| +|08/01/2022 08:27:19| |BOKO BROS| +|08/01/2022 08:27:20| |GANBARE BOKO!| +|08/01/2022 08:27:20| DEITO +|08/01/2022 08:27:20| |BOKO BROS WE WILL WIN THIS TIME FOR SURE| +|08/01/2022 08:27:21| |GANBARE BOKO| +|08/01/2022 08:27:21| |GIVE BOKO YOUR ENERGY BROS| +|08/01/2022 08:27:21| |BOKO HARAM AUTISM| +|08/01/2022 08:27:21| |BOKO ABUNAI| +|08/01/2022 08:27:22| |Dumb Boco.| +|08/01/2022 08:27:22| BOKO +|08/01/2022 08:27:22| |GANBARE BOKO| +|08/01/2022 08:27:23| BOKO +|08/01/2022 08:27:23| |YATTE YARU YATTE YARU YATTE YARUZE| +|08/01/2022 08:27:25| BOKOO +|08/01/2022 08:27:26| |boko world irl when?| +|08/01/2022 08:27:26| BOKOOOOOO +|08/01/2022 08:27:26| |BOKO OIRA DAZEEE| +|08/01/2022 08:27:26| |boko if he real| +|08/01/2022 08:27:27| |FUCK CHINA FUCK CHINA FUCK CHINA| +|08/01/2022 08:27:29| |kek a rabid dog| +|08/01/2022 08:27:30| |boko ;_;| +|08/01/2022 08:27:31| |GANBARE BOCO| +|08/01/2022 08:27:31| PUNCHY +|08/01/2022 08:27:32| |GANBARE BOKO| +|08/01/2022 08:27:33| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 08:27:33| |BOKO GANG BOKO GANG BOKO GANG| +|08/01/2022 08:27:33| |GANBARE BOKO!| +|08/01/2022 08:27:33| |BOKO \o/| +|08/01/2022 08:27:34| |JOBBER BOKO| +|08/01/2022 08:27:34| feet +|08/01/2022 08:27:35| |bokofags are mentally ill| +|08/01/2022 08:27:35| |GANBARE BOKOOOOOOO| +|08/01/2022 08:27:35| GANBARE +|08/01/2022 08:27:37| |FUCK EM UP BOKO!| +|08/01/2022 08:27:38| |GANBARE BOKO| +|08/01/2022 08:27:38| |GANBARE BOKO \o/| +|08/01/2022 08:27:38| |RIP BOKO BOZO| +|08/01/2022 08:27:39| |FUCK EM UP BOKO| +|08/01/2022 08:27:39| |Boko ost | +|08/01/2022 08:27:39| |AUTISIM POWERS ACTIVATE| +|08/01/2022 08:27:41| |AUTISISM: ON| +|08/01/2022 08:27:41| GANBARE!!!! +|08/01/2022 08:27:41| |POV U R BOKO| +|08/01/2022 08:27:42| |BOKO GANBARE| +|08/01/2022 08:27:42| autism +|08/01/2022 08:27:42| |God I wish that were me| +|08/01/2022 08:27:42| GANBARE +|08/01/2022 08:27:43| |>the game where the only winning move is to lose| +|08/01/2022 08:27:43| |how hard is Miho right now?| +|08/01/2022 08:27:43| \o?\ +|08/01/2022 08:27:44| |I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOV| +|08/01/2022 08:27:44| |GANBARE BOKO | +|08/01/2022 08:27:45| |POV: You are an Arisu fan| +|08/01/2022 08:27:45| GANBARE! +|08/01/2022 08:27:45| |autism mode| +|08/01/2022 08:27:46| |Boko is Saunders| +|08/01/2022 08:27:49| |Curb stomped| +|08/01/2022 08:27:50| |I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP I LOVE THE CCP | +|08/01/2022 08:27:50| 頑張れボコ +|08/01/2022 08:27:51| GANBARE! +|08/01/2022 08:27:53| YATA!!! +|08/01/2022 08:27:54| |\o/ GANBARE \o/| +|08/01/2022 08:27:55| |RIP BOKO| +|08/01/2022 08:27:56| |Imagine smelling Arisu's hair| +|08/01/2022 08:27:56| |GANBARE BOKO| +|08/01/2022 08:27:56| |I LOVE THE CCP | +|08/01/2022 08:27:56| WWF +|08/01/2022 08:27:57| |BEAT THE SHIT OUT OF HIM BOKO| +|08/01/2022 08:27:57| RyonaGODs.... +|08/01/2022 08:27:58| wwF +|08/01/2022 08:27:59| |LETS GO BOKO!| +|08/01/2022 08:28:00| GANBAREEEEEEEEEEE +|08/01/2022 08:28:01| |HANG IN THERE BOKO| +|08/01/2022 08:28:04| |BOKO LETS GO BOKO| +|08/01/2022 08:28:05| clotherslined +|08/01/2022 08:28:05| |>muh WWF| +|08/01/2022 08:28:06| >WWF +|08/01/2022 08:28:07| panzers...? +|08/01/2022 08:28:08| |So these two are the subs in an abusive dyke relationship right?| +|08/01/2022 08:28:09| |FUCK EM UP BOKO!| +|08/01/2022 08:28:09| >WWF +|08/01/2022 08:28:11| |FUCKING JOBBER| +|08/01/2022 08:28:11| |FUCK UM UP BOKO| +|08/01/2022 08:28:12| WWF +|08/01/2022 08:28:14| >WWF +|08/01/2022 08:28:15| boko... +|08/01/2022 08:28:15| |What does Alice smell like, bros?| +|08/01/2022 08:28:17| |m-muh WWF| +|08/01/2022 08:28:19| |FUCK CHINA FUCK CHINA FUCK CHINA| +|08/01/2022 08:28:19| |CHINA WINS YET AGAIN| +|08/01/2022 08:28:20| |Get curb stomped Boko| +|08/01/2022 08:28:21| GANBAREEEEE!! +|08/01/2022 08:28:23| |I WANT TO NIBBLE ON ARISU'S HAIR| +|08/01/2022 08:28:24| |Smells like Boko| +|08/01/2022 08:28:26| |Did he died| +|08/01/2022 08:28:27| |You'll get him next time boko| +|08/01/2022 08:28:27| |GANBARE BOOOOKOOOOOOO| +|08/01/2022 08:28:27| |KAMINARI INAKUNARE!| +|08/01/2022 08:28:28| |Boko jobs harder than Katyusha wtf| +|08/01/2022 08:28:29| |FUCK OFF LIGHTNING| +|08/01/2022 08:28:31| |KAMINARI INAKURARE| +|08/01/2022 08:28:31| |LOOK HOW FUCKING HAPPY MIHO IS BROS| +|08/01/2022 08:28:32| |GIVE BOKO YOUR ENERGY| +|08/01/2022 08:28:33| \o/ +|08/01/2022 08:28:34| INAKUNARE +|08/01/2022 08:28:34| |GO AWAY| +|08/01/2022 08:28:34| |Two boku sexuals| +|08/01/2022 08:28:35| |KAMINARI INAKUNARE| +|08/01/2022 08:28:35| |FUCK OFF LIGHTNING| +|08/01/2022 08:28:36| OOOOOOOOOOOOOOO +|08/01/2022 08:28:36| |FUCK OFF LIGHTNING| +|08/01/2022 08:28:36| |>scare the lightning| +|08/01/2022 08:28:37| |GO AWAY | +|08/01/2022 08:28:37| |>trying to go against the WWE rigging| +|08/01/2022 08:28:38| \o/ +|08/01/2022 08:28:38| |KAMINARI INAKUNARE| +|08/01/2022 08:28:39| |GO AWAY. LIGHTNING| +|08/01/2022 08:28:39| |FUCK YOU LIGHTNING| +|08/01/2022 08:28:39| |\o/ GANBARE \o/| +|08/01/2022 08:28:40| BOKOMOTION +|08/01/2022 08:28:40| |KAMINARI INAKUNARI!!!| +|08/01/2022 08:28:40| ! +|08/01/2022 08:28:41| |GO AWAY LIGHTNING| +|08/01/2022 08:28:41| |WE DID IT FRENS| +|08/01/2022 08:28:42| |TAKE MY ENERGY BOKO| +|08/01/2022 08:28:43| |GO AWAY!!!!| +|08/01/2022 08:28:44| |imagine the after boko show sex| +|08/01/2022 08:28:44| bokomotion! +|08/01/2022 08:28:45| BOKOMOTION +|08/01/2022 08:28:46| BOKOMOTION +|08/01/2022 08:28:46| BOKOMOTION +|08/01/2022 08:28:48| |Give BOKO your energy \o/| +|08/01/2022 08:28:48| |YOU CAN THIS| +|08/01/2022 08:28:49| |:D :D| +|08/01/2022 08:28:50| :D +|08/01/2022 08:28:51| |BOKO NOOO| +|08/01/2022 08:28:51| |BOKO KAKKOI| +|08/01/2022 08:28:52| |Someone actually has to wear the boko costume if it's live action| +|08/01/2022 08:28:52| BOKOMOTION +|08/01/2022 08:28:53| |PRAY THE LIGHTING AWAY| +|08/01/2022 08:28:53| |when the punchy spirit?| +|08/01/2022 08:28:54| F +|08/01/2022 08:28:54| BOKO!?!?!?!!?!? +|08/01/2022 08:28:55| F +|08/01/2022 08:28:55| BOKOBROS..... +|08/01/2022 08:28:55| |lighting OP pls nerf| +|08/01/2022 08:28:56| NOOOOOOO +|08/01/2022 08:28:56| BOKOMOTION +|08/01/2022 08:28:56| F +|08/01/2022 08:28:56| >safe +|08/01/2022 08:28:56| |Bokomotion is what I do with Arisu every night| +|08/01/2022 08:28:57| bokodead +|08/01/2022 08:28:57| BOKOMOTION!!! +|08/01/2022 08:28:58| |IT HAS A SKELETON. IT'S ALIVE| +|08/01/2022 08:28:59| cute +|08/01/2022 08:28:59| NOOOOOOOOOOOOO +|08/01/2022 08:28:59| |FUCKING LIGHTNING| +|08/01/2022 08:29:02| BOCONTAIN +|08/01/2022 08:29:03| GANBARE! +|08/01/2022 08:29:04| |FUCK YOU LIGHTNING| +|08/01/2022 08:29:05| |BOKO NOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 08:29:06| |Thanks ride lady| +|08/01/2022 08:29:07| BORG +|08/01/2022 08:29:08| |BOKO BURGA| +|08/01/2022 08:29:09| |when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? when punchy? | +|08/01/2022 08:29:09| |>boko burger| +|08/01/2022 08:29:11| |EATING BOKO| +|08/01/2022 08:29:12| |BOKO BURGA| +|08/01/2022 08:29:13| MELLI +|08/01/2022 08:29:13| BOKOBURGER +|08/01/2022 08:29:14| |alice's mom is paying all of these people| +|08/01/2022 08:29:14| |I want that Boko hat.| +|08/01/2022 08:29:14| |HOLY FUCK| +|08/01/2022 08:29:14| |Christmas date| +|08/01/2022 08:29:15| |These two are keeping this place in busiiness| +|08/01/2022 08:29:16| |HEY TL. WHAT DOES BOKOMOTION MEAN????????| +|08/01/2022 08:29:17| BOKOBURGER +|08/01/2022 08:29:17| |boko burg| +|08/01/2022 08:29:17| |who pays for these boko museums| +|08/01/2022 08:29:19| |>miho and arisu singlehandedly keeping boko park in business| +|08/01/2022 08:29:19| |what is operation punchy?| +|08/01/2022 08:29:19| |I can't believe they ate boko| +|08/01/2022 08:29:21| |taking Miho on a date to the Boko museum...| +|08/01/2022 08:29:22| |This doesn't seem very profitable| +|08/01/2022 08:29:22| |LOLI HAET BORGER| +|08/01/2022 08:29:24| |tl note, punchy means boko| +|08/01/2022 08:29:26| |bokomotion means lesbian sex| +|08/01/2022 08:29:27| |holy fuck are those people on the boko museum besides Alice and Miho| +|08/01/2022 08:29:28| |boko brand pregnancy test| +|08/01/2022 08:29:29| |Bokomotion means Panzer Vor| +|08/01/2022 08:29:30| CUTE +|08/01/2022 08:29:31| BORGER +|08/01/2022 08:29:33| |Boko only surviving due to 2 customers| +|08/01/2022 08:29:35| |ANAL PASSPORT| +|08/01/2022 08:29:36| |UNTIL YOU LEARN ITS OPERATION PUNCHY!!!!!!!!!!!!!| +|08/01/2022 08:29:37| CUTE +|08/01/2022 08:29:38| |tl note Boko means Nakadashi inside Arisu| +|08/01/2022 08:29:38| |What does she smell liike bros?| +|08/01/2022 08:29:40| |CUNNY CUNNY CUNNY CUNNY| +|08/01/2022 08:29:40| |WAS THAT A MA| +|08/01/2022 08:29:40| |>SAVED UP MONEY. YOUR MOTHER OWNS THIS PLACE| +|08/01/2022 08:29:44| |GOD I WISH I WAS DATING HER| +|08/01/2022 08:29:45| |WAS THAT A MAN| +|08/01/2022 08:29:45| |BOKOING MIHOS WOMB| +|08/01/2022 08:29:46| UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH +|08/01/2022 08:29:46| |BOKO NAIZURI| +|08/01/2022 08:29:50| |I WANT TO COMMIT A CRIME| +|08/01/2022 08:29:52| |other boko fans rise up| +|08/01/2022 08:29:53| |i WANT TO BOKO BOKO'S BOKOS| +|08/01/2022 08:29:54| |Alice is built for mating press| +|08/01/2022 08:29:54| |anon, that was takashi| +|08/01/2022 08:30:02| |boco suviving off of alice's nepotism| +|08/01/2022 08:30:03| |Takeshi no| +|08/01/2022 08:30:03| |THE HEAT COOKS THE EGG| +|08/01/2022 08:30:04| |Yet another series they have set up| +|08/01/2022 08:30:05| |Takashi isn't real Arisa| +|08/01/2022 08:30:06| |>those background posters| +|08/01/2022 08:30:06| |THE FOREHEAD| +|08/01/2022 08:30:06| |oh shit the comfy bgm| +|08/01/2022 08:30:07| FUKUDA +|08/01/2022 08:30:07| |WHY ARE THEY COOKING MY CUM| +|08/01/2022 08:30:07| |segggs with whole volley| +|08/01/2022 08:30:08| totsucunny.... +|08/01/2022 08:30:11| |ducks best team akebi best duck| +|08/01/2022 08:30:14| |CUTE ONAHOLE| +|08/01/2022 08:30:15| |f o r e h e a d| +|08/01/2022 08:30:15| TAEKO +|08/01/2022 08:30:16| |There's other customers in the background of Boko land?| +|08/01/2022 08:30:18| |TN: The heat from the griddle cooks the egg| +|08/01/2022 08:30:18| >foreheads +|08/01/2022 08:30:18| |honorary duck is comf| +|08/01/2022 08:30:19| |FUCKUCHAN UOOOOOH| +|08/01/2022 08:30:21| |based volleyball squad| +|08/01/2022 08:30:21| |I WANT TO FUCK THE SMOL-TOJO| +|08/01/2022 08:30:21| |cute boy and his harem| +|08/01/2022 08:30:23| |Fried vomit.| +|08/01/2022 08:30:24| |nine and a half hours in bros| +|08/01/2022 08:30:25| Taku-san +|08/01/2022 08:30:26| |fukuda added on boy harem| +|08/01/2022 08:30:29| |TRACKSUIT TAEKO| +|08/01/2022 08:30:32| |Japanese portions| +|08/01/2022 08:30:33| DISGUSTAN +|08/01/2022 08:30:34| |The heat from my erection cooks the rice.| +|08/01/2022 08:30:35| |Thanks for the grub| +|08/01/2022 08:30:35| STRONG +|08/01/2022 08:30:37| NORIKO<3 +|08/01/2022 08:30:38| DE-ARIMASU +|08/01/2022 08:30:40| >BOCARDI +|08/01/2022 08:30:42| |Coach got no volleyballs of her own though| +|08/01/2022 08:30:43| |assam, i need you to solve boko lore - darj | +|08/01/2022 08:30:45| |BACKGROUND KATYUSHA PROPAGANDA| +|08/01/2022 08:30:46| |noriko's younger brother| +|08/01/2022 08:30:47| |You telling me a shrimp fried this vomit?| +|08/01/2022 08:30:49| |cute IJA| +|08/01/2022 08:30:52| fivehead +|08/01/2022 08:30:52| |SHE KNEELS| +|08/01/2022 08:30:56| |IMAGINE HOW FUN IT WOULD BE| +|08/01/2022 08:30:57| BOOBA +|08/01/2022 08:30:57| TOTSUGEKI +|08/01/2022 08:30:59| BUTTS +|08/01/2022 08:31:00| orz +|08/01/2022 08:31:01| |NIP ROUND GLASSES| +|08/01/2022 08:31:02| TOTSUGEKI? +|08/01/2022 08:31:02| |NORIKO'S BUTT| +|08/01/2022 08:31:03| |GARUPAN BOOBA| +|08/01/2022 08:31:06| TOTSUGEKI +|08/01/2022 08:31:07| |akebi's big eyes and big akebis| +|08/01/2022 08:31:07| |dard needs the best boko quotes| +|08/01/2022 08:31:07| |KRANKY's advice GIT GUD| +|08/01/2022 08:31:08| |SOME KIND OF NEW TOTSUGEKI| +|08/01/2022 08:31:08| TOTSUGEGKI +|08/01/2022 08:31:08| |VOLLEYBALL TEAM, I KNEEL| +|08/01/2022 08:31:11| BOOOOBBAAAAA +|08/01/2022 08:31:12| |Pulling on her plaits while you slam her!| +|08/01/2022 08:31:13| |TOTSUGEKI TOTSUGEKI TOTSUGEKI| +|08/01/2022 08:31:15| |FOOD ANALOGIES| +|08/01/2022 08:31:17| TOSS +|08/01/2022 08:31:17| |I fucking hate that child| +|08/01/2022 08:31:18| TOSS +|08/01/2022 08:31:21| tossu! +|08/01/2022 08:31:25| TOSS +|08/01/2022 08:31:25| |looks live vomit| +|08/01/2022 08:31:27| |>lets not think of a plan, let's just eat || ah yeah, the Marie| +|08/01/2022 08:31:28| |fuu fuu| +|08/01/2022 08:31:28| |TONY KAKU| +|08/01/2022 08:31:30| |onaji demo| +|08/01/2022 08:31:34| |delicious vomit| +|08/01/2022 08:31:35| |TONY KAKU| +|08/01/2022 08:31:36| |why give advice to your enemy| +|08/01/2022 08:31:38| |>BIG BRAIN TIME| +|08/01/2022 08:31:46| |volleybutts playing with their food| +|08/01/2022 08:31:47| |eat your vomit, apollo| +|08/01/2022 08:31:49| |akebi is so perfect| +|08/01/2022 08:31:49| |who's tony and why he's kaku| +|08/01/2022 08:31:50| |Fucking Australians | +|08/01/2022 08:31:52| |>BIG BRAIN || MORE LIKE BIG FOREHEAD| +|08/01/2022 08:31:52| |There's no way it's a Koala right guys?| +|08/01/2022 08:31:52| |>FUCKING AUSSIE CUNTS M8| +|08/01/2022 08:31:53| |I HATE AUSTRALIANS SO GOD DAMN MUCH| +|08/01/2022 08:31:53| |>THE UPSIDEDOWN PEOPLE| +|08/01/2022 08:31:53| |GOD I HATE AUSTRALIANS| +|08/01/2022 08:31:54| BOCORDI +|08/01/2022 08:31:54| |AUSTRALIA BROS| +|08/01/2022 08:31:55| STRAYA +|08/01/2022 08:31:55| |fucking kangaroos| +|08/01/2022 08:31:55| |KOALA CHADS REPORT IN| +|08/01/2022 08:31:56| |AUSCHADS WHERE WE AT| +|08/01/2022 08:31:57| AUSSIES +|08/01/2022 08:31:57| |Is the Koala a girl too?| +|08/01/2022 08:31:57| AUSSIES +|08/01/2022 08:31:59| |TAEKO IS SO CUTE| +|08/01/2022 08:31:59| |FACK OFF CUNT| +|08/01/2022 08:32:00| >aussies +|08/01/2022 08:32:00| |Now toss a shell like those gamer girls| +|08/01/2022 08:32:00| >aussies +|08/01/2022 08:32:00| |OI CUNT| +|08/01/2022 08:32:01| |A FUCKING KOALA| +|08/01/2022 08:32:02| |KOALA CHADS| +|08/01/2022 08:32:03| |STRAYA MATE| +|08/01/2022 08:32:03| |fucking aussies| +|08/01/2022 08:32:03| |AUSTRALIANS ARE RUINING SENSHADO| +|08/01/2022 08:32:04| KOALABROS +|08/01/2022 08:32:04| |based shitposter| +|08/01/2022 08:32:04| CUNT +|08/01/2022 08:32:05| tits +|08/01/2022 08:32:05| |>Having the dumbest animal on the planet as your commander| +|08/01/2022 08:32:05| |BASED KOALA CUNTS| +|08/01/2022 08:32:06| |FACKING JAPS| +|08/01/2022 08:32:06| Kowalla +|08/01/2022 08:32:06| |AUSFAGS RISE UP| +|08/01/2022 08:32:06| |i hate australians so much| +|08/01/2022 08:32:07| |>a fucking Koala| +|08/01/2022 08:32:08| |SICK CUNT| +|08/01/2022 08:32:08| |What did they mean by this| +|08/01/2022 08:32:10| |AUSSIE BROS| +|08/01/2022 08:32:12| |TOTSUGEKI BAKA| +|08/01/2022 08:32:13| |AUSIES as least not there not KIWIS| +|08/01/2022 08:32:14| |captain is literal pea brain, still smarter than momo| +|08/01/2022 08:32:14| |Actual Koala| +|08/01/2022 08:32:15| |based koala| +|08/01/2022 08:32:15| |Shit they ain't lying| +|08/01/2022 08:32:17| |imagine being koala surrounded by harem| +|08/01/2022 08:32:17| |unironically a legit reflection of ADF command structure| +|08/01/2022 08:32:17| |AUSTRALIAN POWER| +|08/01/2022 08:32:19| |momo is the dumbest animal| +|08/01/2022 08:32:19| |CHARGING IDIOTS| +|08/01/2022 08:32:25| |Benis tank| +|08/01/2022 08:32:26| SHITPOSTERS +|08/01/2022 08:32:26| |>koala is smarter than momo| +|08/01/2022 08:32:27| |dick tank| +|08/01/2022 08:32:27| |WHERE'S THE TOTSUGEK| +|08/01/2022 08:32:28| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 08:32:29| |>totsugeki baka Based Koala| +|08/01/2022 08:32:29| |benis tank :DD| +|08/01/2022 08:32:29| |AUSTRALIAN SPIN OFF WHEN?| +|08/01/2022 08:32:29| |Streuth, 'ere come those nip cunts| +|08/01/2022 08:32:30| |NO ONE FUCKING CARES ABOUT MOMO| +|08/01/2022 08:32:32| |Imagine losing to Chi-Ha.| +|08/01/2022 08:32:34| |did we win Aussie bros?| +|08/01/2022 08:32:34| |koalas are the evolution's cruel joke| +|08/01/2022 08:32:35| |don't shitmouth adf| +|08/01/2022 08:32:35| |AH FUCK HERE COMES THE "PLOT"| +|08/01/2022 08:32:35| |eww momo| +|08/01/2022 08:32:37| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO | +|08/01/2022 08:32:37| |They're just shitposting right now as usual| +|08/01/2022 08:32:41| |shamelessly promoting his family business| +|08/01/2022 08:32:41| |Imagine doing LEWD things to Momo| +|08/01/2022 08:32:43| aussiecuntbros... +|08/01/2022 08:32:43| |FUCK OFF MOMO| +|08/01/2022 08:32:43| |SUP CUNTS| +|08/01/2022 08:32:45| |YOU FUCKERS WONT BE SAYING THAT FOR LONG| +|08/01/2022 08:32:46| |Momo have to compete against an actual koala? She'll lose.| +|08/01/2022 08:32:51| |we need ribon warrior to be animated| +|08/01/2022 08:32:52| |I LOVE MOMO I LOVE MOMO I LOVE MOMO| +|08/01/2022 08:32:53| |Introducing the Momolings| +|08/01/2022 08:32:55| |reminder that Japanese beat Australians in almost every engagement simply because their commanders aren't fuckwits like ours| +|08/01/2022 08:32:56| |STOP BULLYING MOMO!!!!!!!!!!!!!!| +|08/01/2022 08:32:57| |momo comes from a fertile family| +|08/01/2022 08:32:57| |no one cares about your family momo| +|08/01/2022 08:32:59| |Do NOT fuck the Koala| +|08/01/2022 08:33:00| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +|08/01/2022 08:33:00| |MOMO'S CHILDREN| +|08/01/2022 08:33:01| |I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! | +|08/01/2022 08:33:03| |i care.| +|08/01/2022 08:33:05| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO| +|08/01/2022 08:33:05| |would colleges actually fall for this camtain momo farce?| +|08/01/2022 08:33:05| |CAN WE SKIP FORWARD PLEASE| +|08/01/2022 08:33:08| |Monmo is cute| +|08/01/2022 08:33:10| |>losing to japs| +|08/01/2022 08:33:10| |I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! I LOVE MOMO! | +|08/01/2022 08:33:10| |MOMO DOESN'T EVEN KNOW HOW TO USE EMAIL| +|08/01/2022 08:33:11| DOOG +|08/01/2022 08:33:12| わしぶんぐ +|08/01/2022 08:33:13| |how close to japs make it to australia irl during ww2?| +|08/01/2022 08:33:14| |I want to barricade the doors and burn down momo's house| +|08/01/2022 08:33:15| |Please do not bully Momo| +|08/01/2022 08:33:19| |this is making me sleep rn| +|08/01/2022 08:33:20| |shit dog| +|08/01/2022 08:33:20| |WAN WAN WAN WAN| +|08/01/2022 08:33:22| |MOMO CHILDREN| +|08/01/2022 08:33:23| |OLD MAN DOG| +|08/01/2022 08:33:25| DOGGY! +|08/01/2022 08:33:25| |momo is a wonderful onee-san i love her say something nice to her| +|08/01/2022 08:33:25| |MOMO IS A SMART GIRL!!!!!!!!!!!!| +|08/01/2022 08:33:25| |GIVING MOMO 10 CHILDREN | +|08/01/2022 08:33:26| |Cute doggo| +|08/01/2022 08:33:26| |shamelessly promoting family business shamelessly promoting family business shamelessly promoting family business| +|08/01/2022 08:33:27| cute +|08/01/2022 08:33:27| |momo's kids| +|08/01/2022 08:33:28| |MOMO DOGGY| +|08/01/2022 08:33:29| |stache dog| +|08/01/2022 08:33:30| |Cute mom| +|08/01/2022 08:33:31| |Momo is a product of a man breeding his wife over nad over| +|08/01/2022 08:33:32| |momo oneesan| +|08/01/2022 08:33:34| |Wow Momo dad still got to hit with how much siblings she has.| +|08/01/2022 08:33:37| |Imagine pumping Momo with 7 kids...| +|08/01/2022 08:33:39| |MOMO IS THE CUTEST| +|08/01/2022 08:33:40| |SEX WITH MOMO-FAMILY| +|08/01/2022 08:33:41| |cute kids| +|08/01/2022 08:33:42| |You just know| +|08/01/2022 08:33:42| WEW +|08/01/2022 08:33:43| |MOMO YOU’RE TOO DUMB FOR COLLEGE BUT YOU CAN BE MY WIFE| +|08/01/2022 08:33:45| |nepotism smh| +|08/01/2022 08:33:45| YJK +|08/01/2022 08:33:48| |Abe dream| +|08/01/2022 08:33:48| |Momo is inbred| +|08/01/2022 08:33:49| |Momo papa been busy| +|08/01/2022 08:33:49| UOOOOOOOOOOOOOOOOOHHHHHHHHHHHH +|08/01/2022 08:33:49| |MOMO made for breeding| +|08/01/2022 08:33:50| |Giving momo an even bigger family| +|08/01/2022 08:33:50| |MOMO-CHAN DAKKO| +|08/01/2022 08:33:51| male +|08/01/2022 08:33:52| |holy shit based dad| +|08/01/2022 08:33:53| |There's only about an hour left, right?| +|08/01/2022 08:33:53| Momolings +|08/01/2022 08:33:54| |tiny kawashimas very cute| +|08/01/2022 08:33:55| UOOOOOOOOOOOOOOOOOOH +|08/01/2022 08:33:56| |sex with momo-chan and her sisters.| +|08/01/2022 08:33:56| UOOOOOOOOOHHHHHHHHHHH +|08/01/2022 08:33:56| |HOLY FUCK HE BANGED HER UNTIL SHE WAS DYING| +|08/01/2022 08:33:58| |no wonder mom looks tired| +|08/01/2022 08:33:58| |imagine what a good mother she would make| +|08/01/2022 08:33:59| |male child alert| +|08/01/2022 08:33:59| |my heart| +|08/01/2022 08:34:00| |>parents watched eva| +|08/01/2022 08:34:02| |Making Momo a loving wife and mother!| +|08/01/2022 08:34:02| |look at al lthis MONEY | +|08/01/2022 08:34:03| |MOMO REDEMPTION| +|08/01/2022 08:34:05| |CUTE ROUND GLASSES| +|08/01/2022 08:34:05| lolis +|08/01/2022 08:34:06| Momocringe +|08/01/2022 08:34:06| |No wonder Momo mama can't walk properly. Momo Papa too busy| +|08/01/2022 08:34:07| |momo holding your child| +|08/01/2022 08:34:09| cunny....................................................................................................................................... +|08/01/2022 08:34:10| |MOMO IS NOT DUMB, MOMO IS A BUSY FAMILY GIRL| +|08/01/2022 08:34:11| |could just sell one of the kids| +|08/01/2022 08:34:11| |parents didn't have no TV| +|08/01/2022 08:34:11| |She's just pregnant again| +|08/01/2022 08:34:12| UOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHh +|08/01/2022 08:34:14| |FRAIL FROM BEING A BREEDING MARE| +|08/01/2022 08:34:14| |YOU WILL FEEL BAD FOR MOMO. YOU WILL CARE ABOUT THE PLOT. YOU WILL WANT OOARAI TO WIN. WHY AREN'T YOU CHEERING THEM GOD DAMMIT.| +|08/01/2022 08:34:16| Poors... +|08/01/2022 08:34:16| |THANKS FOR THE GRUB| +|08/01/2022 08:34:16| POOR! +|08/01/2022 08:34:17| |CUTE MOMO| +|08/01/2022 08:34:18| |>frail from pumping out all those kids| +|08/01/2022 08:34:18| |MOMO CUTE! GOOD SISTER! GOOD MOTHER!| +|08/01/2022 08:34:19| |momo dum| +|08/01/2022 08:34:20| |imagine having so many loli daughters. Blessed life| +|08/01/2022 08:34:20| |>real frail body >makes a ton of kids anyway| +|08/01/2022 08:34:21| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 08:34:24| |>births out six kids| +|08/01/2022 08:34:25| |Little girl erotic| +|08/01/2022 08:34:25| |>Bread slices| +|08/01/2022 08:34:26| ;_; +|08/01/2022 08:34:29| >frail +|08/01/2022 08:34:31| |about 60-90 minutes. rest of this. 40 for df3. 10 for daikon| +|08/01/2022 08:34:32| |CUTE LOLI UOOOOOOOOH| +|08/01/2022 08:34:37| |pumping mom with 6 daughgters and 3 sons| +|08/01/2022 08:34:37| |the next rabbit team is momo's siblings| +|08/01/2022 08:34:38| |i love momo she is so sweet| +|08/01/2022 08:34:38| ToT +|08/01/2022 08:34:40| |I WANT TO HAVE THIS MANY KIDS WITH HANA| +|08/01/2022 08:34:48| |TL Note: "Anzu" means "SEX".| +|08/01/2022 08:34:49| |why college when she needs kids in her belly| +|08/01/2022 08:34:49| |bros im gonna pass out| +|08/01/2022 08:34:50| |I feel bad for Momo. The kids got better glasses than her| +|08/01/2022 08:34:51| stfu +|08/01/2022 08:34:51| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 08:34:53| |Hana would just eat her own kids| +|08/01/2022 08:34:54| ANZU +|08/01/2022 08:34:54| |thanks TL| +|08/01/2022 08:34:56| |momo's parents working hard at night| +|08/01/2022 08:34:57| |Thanks TL| +|08/01/2022 08:34:57| sex +|08/01/2022 08:35:02| a +|08/01/2022 08:35:07| |AUS BROS......| +|08/01/2022 08:35:07| N +|08/01/2022 08:35:08| |LETS GOOOOOOOOOOOOOOOOO| +|08/01/2022 08:35:10| |Spraying all over Anzu's flat chest.| +|08/01/2022 08:35:11| |>they actually won| +|08/01/2022 08:35:14| |Ahh yes, the Totsugeki tards| +|08/01/2022 08:35:15| TOTSUGEKI +|08/01/2022 08:35:16| >straya +|08/01/2022 08:35:16| |ANZU SOCKS| +|08/01/2022 08:35:16| kants +|08/01/2022 08:35:17| |KOALA BROS….| +|08/01/2022 08:35:18| |FIRST EMUS| +|08/01/2022 08:35:18| |If Alice family was as big as Momo, that would be something| +|08/01/2022 08:35:20| |PSA: Anzu means to commit mass genocide in nanking| +|08/01/2022 08:35:20| aussies...... +|08/01/2022 08:35:21| TOTSUGEKI +|08/01/2022 08:35:23| |LETS GOOOOO THE RETARDS DID IT| +|08/01/2022 08:35:28| |how did straya manage to fuck that one up| +|08/01/2022 08:35:30| |they won because duck team idiots helped the enemy| +|08/01/2022 08:35:30| |Aussiebros... WE SUCK| +|08/01/2022 08:35:32| |we need more nankings on china| +|08/01/2022 08:35:33| |OMW TO NANKING| +|08/01/2022 08:35:34| |>they almost lost| +|08/01/2022 08:35:37| |I HATE AUSTRALIANS SO GODDAMN MUCH| +|08/01/2022 08:35:37| |IT WAS YOUR FUCKING FAULT, YUKARI| +|08/01/2022 08:35:38| FLOOF +|08/01/2022 08:35:40| |If the retards could make t so cna you!| +|08/01/2022 08:35:40| |YUZU IS SO HOT HOLY SHIT| +|08/01/2022 08:35:41| |momo is not allowed to talk shit| +|08/01/2022 08:35:41| |fluff still sad foor bad intel| +|08/01/2022 08:35:44| |NANKING NEVER HAPPENED| +|08/01/2022 08:35:44| |ERIKA ERIKA EIRKA| +|08/01/2022 08:35:45| |Poor Eclair| +|08/01/2022 08:35:46| ECLAIR! +|08/01/2022 08:35:46| |GO HOME MAGINOT| +|08/01/2022 08:35:46| |DESU WA| +|08/01/2022 08:35:47| Eclaire +|08/01/2022 08:35:49| eclair +|08/01/2022 08:35:50| |ECLAIR EXISTS| +|08/01/2022 08:35:50| ECLAIR +|08/01/2022 08:35:53| PANZERLIED +|08/01/2022 08:35:54| Eclair-sama +|08/01/2022 08:35:55| |M m montage| +|08/01/2022 08:35:56| |so why are there 2 frog schools| +|08/01/2022 08:35:57| |Koala too high from Australia trees to command properly| +|08/01/2022 08:35:57| |ECLAIR IS CANON| +|08/01/2022 08:35:58| |Being Eclair is suffering| +|08/01/2022 08:35:58| WHO? +|08/01/2022 08:35:58| |its the other frenchies| +|08/01/2022 08:35:59| |TWO WHOLE FRENCH SCHOOLS| +|08/01/2022 08:36:01| |SIEG HEIL o/| +|08/01/2022 08:36:02| PANZERLIED +|08/01/2022 08:36:03| ECLAIR!!!! +|08/01/2022 08:36:03| |DER TAG GLUHEN HEISS| +|08/01/2022 08:36:03| |DER TAG GLÜHEND HEISS| +|08/01/2022 08:36:04| |Eclair is here to job!| +|08/01/2022 08:36:04| UTEEEEEEEEEEE +|08/01/2022 08:36:06| |Eclair never showing up again ;_;| +|08/01/2022 08:36:06| WANIIIIIIIIII +|08/01/2022 08:36:06| pomf +|08/01/2022 08:36:07| 1488 +|08/01/2022 08:36:08| |PRESS S TO STAMP YOUR FEET | +|08/01/2022 08:36:11| |is there jewish school in this universe| +|08/01/2022 08:36:11| eliminate +|08/01/2022 08:36:11| S +|08/01/2022 08:36:12| |absolute state of frogs| +|08/01/2022 08:36:12| S +|08/01/2022 08:36:12| S +|08/01/2022 08:36:12| DENMARK!!!!!!! +|08/01/2022 08:36:14| |imagine can't take down wani| +|08/01/2022 08:36:15| |STURMWIND DAHINN| +|08/01/2022 08:36:16| |ECLAIR NOOOO| +|08/01/2022 08:36:16| |>TFW you will never have a 3some with Marie and Eclair| +|08/01/2022 08:36:17| |2 HOURS| +|08/01/2022 08:36:18| FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +|08/01/2022 08:36:20| |FUCK SW*DES| +|08/01/2022 08:36:21| URAAAAAAAAAAAAA +|08/01/2022 08:36:22| |Erika's back| +|08/01/2022 08:36:22| |SWEDES BTFO| +|08/01/2022 08:36:23| |>hand signals| +|08/01/2022 08:36:23| UYRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:36:23| BORCHT +|08/01/2022 08:36:25| |Literally who?| +|08/01/2022 08:36:27| CUTEYUSHA +|08/01/2022 08:36:28| |norway lore| +|08/01/2022 08:36:28| |Fucking hand signals| +|08/01/2022 08:36:28| |I'm glad GuP was created before the new SJW streak| +|08/01/2022 08:36:29| |Russian onahole loli....| +|08/01/2022 08:36:30| URAAAAAAAAAAAAAA +|08/01/2022 08:36:31| |they're norwegians| +|08/01/2022 08:36:32| KATYUSHA +|08/01/2022 08:36:35| |imagine being viking| +|08/01/2022 08:36:35| Katyusha +|08/01/2022 08:36:35| SPAINISHBROS... +|08/01/2022 08:36:38| |rip vikings| +|08/01/2022 08:36:39| |USA USA USA| +|08/01/2022 08:36:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:40| |USA USA USA USA USA| +|08/01/2022 08:36:40| |whats the difference| +|08/01/2022 08:36:41| |Wish we got to see full matches with all the random jobber schools| +|08/01/2022 08:36:41| |BLUE DIVISION EROTIC| +|08/01/2022 08:36:41| |MASSIVE TITS| +|08/01/2022 08:36:43| TITS +|08/01/2022 08:36:43| |SPANISH TITS| +|08/01/2022 08:36:44| |USA USA USA USA| +|08/01/2022 08:36:45| |ARRIBA ESPAÑA o/| +|08/01/2022 08:36:45| |big tiddies| +|08/01/2022 08:36:45| WEW +|08/01/2022 08:36:45| BOOBA +|08/01/2022 08:36:46| |Saunders 1st win boys| +|08/01/2022 08:36:46| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:48| |BLUE EROTIC| +|08/01/2022 08:36:48| |ARRIBA AZUL| +|08/01/2022 08:36:49| |USA USA USA USA USA| +|08/01/2022 08:36:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:49| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:50| |OH FUCK| +|08/01/2022 08:36:50| |UNF tiddie| +|08/01/2022 08:36:50| |KAY VS QUE| +|08/01/2022 08:36:51| GODDAMNNNN +|08/01/2022 08:36:51| |USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:51| |Duck hand signals too strong| +|08/01/2022 08:36:51| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 08:36:51| |KAY VS HER SISTER| +|08/01/2022 08:36:51| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 08:36:52| TITS +|08/01/2022 08:36:53| |EL GRANDE| +|08/01/2022 08:36:53| BOOBA +|08/01/2022 08:36:53| |SPANISH TIDDIES| +|08/01/2022 08:36:53| |USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:54| |spain enjoyers| +|08/01/2022 08:36:54| TIIIITS +|08/01/2022 08:36:54| |ARRIBA ESPANA| +|08/01/2022 08:36:55| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:55| |THOSE TITS| +|08/01/2022 08:36:55| |USA USA USA| +|08/01/2022 08:36:55| |CABRON COATED TANKSSSSSSSSSSS| +|08/01/2022 08:36:56| BOOBA +|08/01/2022 08:36:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:36:57| USA +|08/01/2022 08:36:58| |SPANIARD TITS| +|08/01/2022 08:36:58| |AVENGE THE MAINE| +|08/01/2022 08:36:59| |FIELD ARTILLERY| +|08/01/2022 08:36:59| |I HATE THE BRITISH| +|08/01/2022 08:36:59| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:37:00| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 08:37:00| |>using a firefly| +|08/01/2022 08:37:01| GOTEM +|08/01/2022 08:37:02| SNIPED +|08/01/2022 08:37:02| ROSEHIP +|08/01/2022 08:37:02| BRIDGE +|08/01/2022 08:37:03| |brown kay| +|08/01/2022 08:37:03| |great shot| +|08/01/2022 08:37:06| |A BRIDGE TOO FAR| +|08/01/2022 08:37:08| |BAKA INBOUND| +|08/01/2022 08:37:08| |REmeber le taco bell| +|08/01/2022 08:37:09| |BELGIUM IS NOT A REAL COUNTRY| +|08/01/2022 08:37:11| |GO ON HOME| +|08/01/2022 08:37:12| |Kay vs Tanned Kay| +|08/01/2022 08:37:12| |EL PURO PINCHE| +|08/01/2022 08:37:13| KANPAI +|08/01/2022 08:37:13| Kanpai +|08/01/2022 08:37:13| |rosehip moment| +|08/01/2022 08:37:15| KANPAII +|08/01/2022 08:37:19| :DDDDDDDDDD +|08/01/2022 08:37:19| BAKAHIP +|08/01/2022 08:37:19| |CUM PIE| +|08/01/2022 08:37:20| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:21| |>hobos not the flagtank| +|08/01/2022 08:37:22| EBIN +|08/01/2022 08:37:23| |MY WIFE, ROSEHIP| +|08/01/2022 08:37:23| |PERKELE :DDDDDDDD| +|08/01/2022 08:37:24| :DDDDDDDDDDDDDDD +|08/01/2022 08:37:24| |the desert?| +|08/01/2022 08:37:25| |FUGGG :-DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 08:37:25| :DDDDDDDDD +|08/01/2022 08:37:25| :DDDDDDDDD +|08/01/2022 08:37:26| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:26| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:26| FUG +|08/01/2022 08:37:26| :DD +|08/01/2022 08:37:26| |Waffles pakeked| +|08/01/2022 08:37:26| :DDDD +|08/01/2022 08:37:27| |FINNISH HYPER WAR| +|08/01/2022 08:37:27| |TULTA :DDDDDDDD| +|08/01/2022 08:37:27| POLKA +|08/01/2022 08:37:27| |BASED BINNS :DDDD| +|08/01/2022 08:37:27| |VOI VITTU| +|08/01/2022 08:37:28| :DDDDDDDDDDDD +|08/01/2022 08:37:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:30| :DDDDDD +|08/01/2022 08:37:30| |FUGGG :DDDDDDD| +|08/01/2022 08:37:30| :DDD +|08/01/2022 08:37:30| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:31| |FUCK POLAND| +|08/01/2022 08:37:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:33| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:33| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:33| |Active sonar :DDDDDDD| +|08/01/2022 08:37:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 08:37:35| |secret finnish warp drive| +|08/01/2022 08:37:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:35| |FINNISH WARP DRIVE| +|08/01/2022 08:37:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 08:37:36| :DDDDDDDDDDDDDD +|08/01/2022 08:37:37| |BENIS :DDDD| +|08/01/2022 08:37:37| |DVCE DVCE blue division| +|08/01/2022 08:37:37| |SASUGA DUCE| +|08/01/2022 08:37:37| BONPLE +|08/01/2022 08:37:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:38| |How do they keep doing it| +|08/01/2022 08:37:38| |DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:38| DUCE +|08/01/2022 08:37:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 08:37:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:40| DUCE +|08/01/2022 08:37:40| |DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:41| |JAJKA SEETHING| +|08/01/2022 08:37:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:41| |How the fuck did Anzio win| +|08/01/2022 08:37:41| |TANK SEX| +|08/01/2022 08:37:42| |No Kampai for Assam?| +|08/01/2022 08:37:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:42| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:43| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 08:37:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:44| |POLSKA GUROM| +|08/01/2022 08:37:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:44| |CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT CHOVY A SHIT| +|08/01/2022 08:37:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:45| |DUCE DUCE DUCE| +|08/01/2022 08:37:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:47| |DUCE DUCE DUCE DUCED CEUD CUED DUCE DCEU| +|08/01/2022 08:37:47| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:49| |I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA I LOVE JAJKA | +|08/01/2022 08:37:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:51| DUCE +|08/01/2022 08:37:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:53| FUOCO +|08/01/2022 08:37:53| YOSH +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:54| FUOCO +|08/01/2022 08:37:54| DVCE +|08/01/2022 08:37:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:56| DUCEDUCEDUCEDUCEDUCE +|08/01/2022 08:37:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:57| FUCKO +|08/01/2022 08:37:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:59| FUCKER! +|08/01/2022 08:37:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:37:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:37:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:00| YOSH +|08/01/2022 08:38:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:38:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 08:38:01| |FUCK? OK| +|08/01/2022 08:38:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:01| |Jump them, Duce| +|08/01/2022 08:38:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:01| fuoco +|08/01/2022 08:38:02| |WE WON DUCE BROS| +|08/01/2022 08:38:02| YOSH +|08/01/2022 08:38:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:04| YOSH +|08/01/2022 08:38:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:07| |fuoco the covy| +|08/01/2022 08:38:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 08:38:09| |Fuoco the duce| +|08/01/2022 08:38:10| |>shooting half your team| +|08/01/2022 08:38:11| |pizza pasta put it in a box| +|08/01/2022 08:38:11| |LETS GOOOOO DUCEBROS| +|08/01/2022 08:38:14| |DUCE ALL THE WAY| +|08/01/2022 08:38:16| |I want Anchovy to whip me!| +|08/01/2022 08:38:18| |>Black MEXTa| +|08/01/2022 08:38:21| same +|08/01/2022 08:38:23| |Grumpy Eclair | +|08/01/2022 08:38:24| |Blue division must have the highest screentime:fans ratio| +|08/01/2022 08:38:24| |FUCK ITS THE KAMPENTAI| +|08/01/2022 08:38:27| |Imagine getting beat by fucking Anzio | +|08/01/2022 08:38:28| totsugeki? +|08/01/2022 08:38:28| |MEXT did nothing wrong| +|08/01/2022 08:38:29| |When did they start making flying tanks?| +|08/01/2022 08:38:35| |>34 degrees| +|08/01/2022 08:38:36| |MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! | +|08/01/2022 08:38:36| |Fatass marie| +|08/01/2022 08:38:37| |mext is a hero| +|08/01/2022 08:38:38| |12 cakes| +|08/01/2022 08:38:39| |I wish I was Marie's cake| +|08/01/2022 08:38:40| |EAT MY DICK MARIE| +|08/01/2022 08:38:41| |MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! MEXTNIGGERS MALDING LMAO! | +|08/01/2022 08:38:46| |34 degrees? thats freezing| +|08/01/2022 08:38:51| |>TELLING THEM TO LEARN FROM THE CHARGE BAKAS. HOW HUMILITATING.| +|08/01/2022 08:38:52| | is this df1 or 2| +|08/01/2022 08:38:56| DF2 +|08/01/2022 08:38:57| 2 +|08/01/2022 08:38:59| |Marie bites down and your dick is chewed off| +|08/01/2022 08:38:59| |>sojack braindamaged shitposters| +|08/01/2022 08:38:59| |HOLY SHIT NISHIIIIIIIIIIIIIIIII| +|08/01/2022 08:39:00| |they trynna outjapanese each other with the thanks lmfao| +|08/01/2022 08:39:01| |Marie too busy watching cake instead| +|08/01/2022 08:39:02| |its pretty hot, bloody burgers| +|08/01/2022 08:39:05| df4 +|08/01/2022 08:39:05| |thanks chat| +|08/01/2022 08:39:10| o7 +|08/01/2022 08:39:11| DF5 +|08/01/2022 08:39:11| WAKARIMASHITA +|08/01/2022 08:39:11| |please ganbatte| +|08/01/2022 08:39:12| |what's sojack?| +|08/01/2022 08:39:12| |>please win. fuck momo btw| +|08/01/2022 08:39:15| |>WE WIN BECAUSE THE OTHER TEAMS DON'T TRY| +|08/01/2022 08:39:16| O7 +|08/01/2022 08:39:16| |miho understands theyre luckshitters| +|08/01/2022 08:39:19| |dont give them hope miho| +|08/01/2022 08:39:20| DF6??? +|08/01/2022 08:39:22| |does the stream go up to df 4?| +|08/01/2022 08:39:22| |like soyjack but with more typos| +|08/01/2022 08:39:27| 礼 +|08/01/2022 08:39:28| |CUTE JUDGES| +|08/01/2022 08:39:28| |INVEST IN CHIHATAN NOW| +|08/01/2022 08:39:29| Anon... +|08/01/2022 08:39:32| |PANTSU FOA| +|08/01/2022 08:39:33| |PANZER VOR| +|08/01/2022 08:39:33| anon... +|08/01/2022 08:39:33| |yeah, stream ends with df4| +|08/01/2022 08:39:34| |PANZER VOR!!!| +|08/01/2022 08:39:36| |Yup, DF 4| +|08/01/2022 08:39:37| |MOMOOOO CUTE!| +|08/01/2022 08:39:38| >df4 +|08/01/2022 08:39:38| |PANSA FO| +|08/01/2022 08:39:39| |STILL MEDIOCRE PANZER VOR| +|08/01/2022 08:39:39| |SENSHA ZENSHIN| +|08/01/2022 08:39:42| |>jap tanks| +|08/01/2022 08:39:43| |PANZER WHORE| +|08/01/2022 08:39:44| |p-pa-panzer v-vo-vorrrr!!!| +|08/01/2022 08:39:46| |SENSA ZENSHI| +|08/01/2022 08:39:46| >jungle +|08/01/2022 08:39:46| |the stream ends with DF6| +|08/01/2022 08:39:52| df999999999999999999 +|08/01/2022 08:39:53| |p p p p p p p p p p p | +|08/01/2022 08:39:54| |T O T S U G E K I| +|08/01/2022 08:39:56| |WELCOME TO THE JUNGLE| +|08/01/2022 08:39:57| |ANONS WHAT DOES PANZER VOR MEAN AGAIN?| +|08/01/2022 08:39:57| |momom will fail to get a college anyway| +|08/01/2022 08:39:58| |INDIANA JONES| +|08/01/2022 08:39:59| BZZZZZZZZZT +|08/01/2022 08:40:01| >DRONES +|08/01/2022 08:40:02| |THE TREES ARE SPEAKING BAKA| +|08/01/2022 08:40:04| |ur mum| +|08/01/2022 08:40:05| |HBO PRESNTES THE PACIFIC| +|08/01/2022 08:40:05| |WELCOME TO GUADALCANAL| +|08/01/2022 08:40:08| |TL note: Panzer Vore = Sex| +|08/01/2022 08:40:09| |andou andou andou andou andou andou andou andou andou andou andou andou | +|08/01/2022 08:40:10| |holy fuck was that a famas| +|08/01/2022 08:40:11| |what are those flying panzers| +|08/01/2022 08:40:12| |Panzer vor means panzer vor| +|08/01/2022 08:40:15| |TL NOTE: PANZER VOR MEANS PANTRU VORE| +|08/01/2022 08:40:15| |australia should just get nuked| +|08/01/2022 08:40:16| |Panzer Vor = Tanks Forward I think| +|08/01/2022 08:40:20| |fat ass| +|08/01/2022 08:40:20| |THANKS TL| +|08/01/2022 08:40:21| |>cake all over her face| +|08/01/2022 08:40:22| |lots of keeki| +|08/01/2022 08:40:22| CAKEFATTIECAKEFATTIECAKEFATTIE +|08/01/2022 08:40:23| |Sex in a tank, right TL?| +|08/01/2022 08:40:25| |I HATE THE PIRATES| +|08/01/2022 08:40:26| |we're surely fucked now on guadalcanal| +|08/01/2022 08:40:28| |Dirty pig| +|08/01/2022 08:40:34| |stupid pirates| +|08/01/2022 08:40:37| |Piratebros... is it over for our banner?| +|08/01/2022 08:40:37| |flint gang| +|08/01/2022 08:40:38| based +|08/01/2022 08:40:38| |I WANT TO FUCK FLINT'S VOICE| +|08/01/2022 08:40:39| |these people suck| +|08/01/2022 08:40:39| OHO +|08/01/2022 08:40:39| |will watching DF3 for the first time here ruin it>| +|08/01/2022 08:40:41| |dumb pirates| +|08/01/2022 08:40:42| RUM +|08/01/2022 08:40:43| |you will never be a cute high school girl| +|08/01/2022 08:40:44| |the trees speakin japanese| +|08/01/2022 08:40:45| >cute +|08/01/2022 08:40:46| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 08:40:46| CUTE +|08/01/2022 08:40:46| |How come Oarai always has to fight on the enemy's terf| +|08/01/2022 08:40:47| Kek +|08/01/2022 08:40:49| >cute +|08/01/2022 08:40:49| |NOT THE FLAG| +|08/01/2022 08:40:51| RUDE +|08/01/2022 08:40:52| |That face| +|08/01/2022 08:40:53| PUHU +|08/01/2022 08:40:53| |USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK USELESS SHARK | +|08/01/2022 08:40:54| F +|08/01/2022 08:40:55| |>KAREN CUTE| +|08/01/2022 08:40:57| PIRATEBROS..... +|08/01/2022 08:40:57| |>Shark Jobbers| +|08/01/2022 08:40:57| |FUCK YOUR FLAG| +|08/01/2022 08:40:58| TAMASHII +|08/01/2022 08:40:59| |THEY HAVE BESMIRCHED OUR FLAG| +|08/01/2022 08:41:00| |>no tracer ambush| +|08/01/2022 08:41:00| |PIRATE AUTISM| +|08/01/2022 08:41:03| |Jungle japanese vs normal japanese?| +|08/01/2022 08:41:12| TOTSUGEKI +|08/01/2022 08:41:12| |did that tree just say "TOTSUGEKI"?| +|08/01/2022 08:41:12| COCK +|08/01/2022 08:41:13| |Sasuga Chi-ha tan| +|08/01/2022 08:41:15| |cunny strats| +|08/01/2022 08:41:16| Totsugeki! +|08/01/2022 08:41:17| TOTSUGEKI!!! +|08/01/2022 08:41:18| |they have a mark 4 literally less useful than a cv33| +|08/01/2022 08:41:18| |df3 ends with mex being a based god| +|08/01/2022 08:41:19| TOTSUGEKI +|08/01/2022 08:41:19| |STEPPING CHARGE| +|08/01/2022 08:41:20| tooooooooo +|08/01/2022 08:41:20| TOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKI +|08/01/2022 08:41:21| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:21| |CUTE RETARDS| +|08/01/2022 08:41:21| |imagine being more singleminded than the totsugeki retards| +|08/01/2022 08:41:23| TOTSUGEKI +|08/01/2022 08:41:24| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:41:24| TOTSUGEKI!!!!! +|08/01/2022 08:41:26| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:26| TOTSUGEKIIIIIIIIIIIIIIIIIII +|08/01/2022 08:41:27| |FULL SPEED AHEAD| +|08/01/2022 08:41:29| TOTSUGEKI +|08/01/2022 08:41:29| TOTSUGEKI +|08/01/2022 08:41:29| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:29| TOTSUGEKI +|08/01/2022 08:41:29| |MULTIPLE TOTSUGEKI TIME| +|08/01/2022 08:41:29| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:41:30| |NEGATIVE IQ| +|08/01/2022 08:41:32| 足踏み突撃 +|08/01/2022 08:41:34| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 08:41:35| totsugeki +|08/01/2022 08:41:36| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:37| |How the fuck can these retards breathe on their own| +|08/01/2022 08:41:39| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 08:41:39| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:41:40| TOTSUGEKI +|08/01/2022 08:41:41| HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA +|08/01/2022 08:41:42| BANZAI +|08/01/2022 08:41:43| |\o/ TENNO HAIKA BANZAI| +|08/01/2022 08:41:44| |Useless Sharks, even Momo is more help.| +|08/01/2022 08:41:44| >>>>>>>>>>>>>>>>>>>>>>>>> +|08/01/2022 08:41:45| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 08:41:45| |Jungle ambushes.| +|08/01/2022 08:41:46| |I HATE THE SHARKS| +|08/01/2022 08:41:47| |Pirates sunk| +|08/01/2022 08:41:50| |just kill the pirates already| +|08/01/2022 08:41:50| SHARKIDIOTS +|08/01/2022 08:41:52| |what's the point of the sharks?| +|08/01/2022 08:41:55| |SAYONARA TOTSUGEKI| +|08/01/2022 08:41:56| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:41:57| |Couldn't they have disabled the Mark IV with a shot from any angle?| +|08/01/2022 08:41:57| |SAYONARA TOTSUGEKI| +|08/01/2022 08:41:57| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +|08/01/2022 08:41:57| |I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHARK I HATE SHA| +|08/01/2022 08:41:57| BAKAS +|08/01/2022 08:41:58| |WOMB TOTSUGEKI!!| +|08/01/2022 08:41:58| |GOODBYE TOTSUGEKI| +|08/01/2022 08:41:58| TOTSUGEKI +|08/01/2022 08:41:59| BAKAS +|08/01/2022 08:41:59| |And the Pirates all died in the explosion, they were never mourned| +|08/01/2022 08:42:00| |HIGH IQ| +|08/01/2022 08:42:01| |It's fine they were useless anyways| +|08/01/2022 08:42:01| |useless pirates| +|08/01/2022 08:42:01| |TENNO HEIKA BANZAI| +|08/01/2022 08:42:01| |SAYONARA TOTSUGEKI| +|08/01/2022 08:42:02| |CHARGE IS IN THE NAME| +|08/01/2022 08:42:02| |Chiatan are legit retards| +|08/01/2022 08:42:02| |OH FUCK SHE'S THINKING| +|08/01/2022 08:42:03| RETARDS +|08/01/2022 08:42:04| |I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES I LOVE THE PIRATES| +|08/01/2022 08:42:04| |SHUT THE FUCK UP HOSOMI| +|08/01/2022 08:42:04| BAKAS +|08/01/2022 08:42:04| |SAYONARA TOTSUGEKI| +|08/01/2022 08:42:04| |\o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:42:04| |I'll pretend Chi ha tan wins this| +|08/01/2022 08:42:04| BAKAS +|08/01/2022 08:42:04| TOTSUGEKI +|08/01/2022 08:42:06| |It's in the name| +|08/01/2022 08:42:07| |iall the sharks but cute lass should walk off the plank| +|08/01/2022 08:42:07| TENNO +|08/01/2022 08:42:08| |6 Japanese tanks need 10 shots to kill a WWI relic, sasuga Nippon| +|08/01/2022 08:42:10| |Dumb hosomi| +|08/01/2022 08:42:10| HEIKA +|08/01/2022 08:42:11| |TOTSUGEKI IS TOTSUGEKI| +|08/01/2022 08:42:11| |SAYOUNARA TOSTUGEKI| +|08/01/2022 08:42:11| |SAYONARA TOTSUGEKI| +|08/01/2022 08:42:14| |QUICK SOMEONE KNOCK HOSOMI OUT| +|08/01/2022 08:42:15| BANZAIIIIIIIIII +|08/01/2022 08:42:19| |DON'T LET HER ASK QUESTIONS| +|08/01/2022 08:42:19| |TL Note: "Anzu" means "SEX".| +|08/01/2022 08:42:20| |Chihatan lost because they forgot the flag tank| +|08/01/2022 08:42:21| |SAYONARA TOTSUGEKI| +|08/01/2022 08:42:21| |chi ha tan isn't interesting| +|08/01/2022 08:42:23| |THANKS TL| +|08/01/2022 08:42:26| ANZU +|08/01/2022 08:42:26| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES | +|08/01/2022 08:42:28| |THANKS TL| +|08/01/2022 08:42:28| |Arigato TL| +|08/01/2022 08:42:28| F +|08/01/2022 08:42:30| |TOTSUGEKI enthusiasts | +|08/01/2022 08:42:31| |You go fast. Charge is charge| +|08/01/2022 08:42:33| |thanks TL| +|08/01/2022 08:42:34| |it's carbon so its safe| +|08/01/2022 08:42:36| jobbers +|08/01/2022 08:42:38| |I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS I HATE SHARKS | +|08/01/2022 08:42:40| |Chihatan thought the Mark IV was the flag tank| +|08/01/2022 08:42:41| |your father's not dead, he's just totsugeki'ing from life| +|08/01/2022 08:42:42| |BROS ;__;| +|08/01/2022 08:42:42| |THE HEART| +|08/01/2022 08:42:42| |TL Note: TOSUGEKI means PLEASURE| +|08/01/2022 08:42:44| |cute lass| +|08/01/2022 08:42:45| |Murakami's hard muscular thighs| +|08/01/2022 08:42:47| wisdom +|08/01/2022 08:42:49| ;_; +|08/01/2022 08:42:49| UMU +|08/01/2022 08:42:50| BASED +|08/01/2022 08:42:53| |STUG LYFE| +|08/01/2022 08:42:53| UMU +|08/01/2022 08:42:54| |Cute callback| +|08/01/2022 08:42:55| Based +|08/01/2022 08:42:55| |stfu pirate bitch| +|08/01/2022 08:42:56| |floof hair| +|08/01/2022 08:42:57| UMU +|08/01/2022 08:42:59| |Cutlass ain't fine| +|08/01/2022 08:42:59| |Ooarai deliberatly not put carbon on shark team| +|08/01/2022 08:42:59| |you cant really call the worst talk fielded in the show a jobber| +|08/01/2022 08:43:00| |CONTACT FRONT| +|08/01/2022 08:43:03| |MG42 NOISES| +|08/01/2022 08:43:05| brrrrrr +|08/01/2022 08:43:06| |SAYONARA TOTSUGEKI!| +|08/01/2022 08:43:10| TOTSUGEKI +|08/01/2022 08:43:10| |BYE TOTSUGEKI| +|08/01/2022 08:43:11| さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃さようなら突撃 +|08/01/2022 08:43:11| TOTSUGEKI +|08/01/2022 08:43:11| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:43:13| SAYONARA +|08/01/2022 08:43:14| |SAYONARA TOTSUGEKI| +|08/01/2022 08:43:18| SAYOUNARA +|08/01/2022 08:43:19| |SAYONARA TOTSUGEKI| +|08/01/2022 08:43:20| NYA +|08/01/2022 08:43:20| |Really good tactics from Chihatan| +|08/01/2022 08:43:22| |ROID RAGE| +|08/01/2022 08:43:23| |SAYONARA TOTSUGEKI| +|08/01/2022 08:43:24| |FUCK AND SAYONARA| +|08/01/2022 08:43:26| |NEET STRONK| +|08/01/2022 08:43:27| |imagine ryona sex with anteater| +|08/01/2022 08:43:28| TAEKO +|08/01/2022 08:43:29| |NEKONYA HOURS| +|08/01/2022 08:43:32| |man watching Senshado live must be boring as shit if it can last so long| +|08/01/2022 08:43:36| BUG +|08/01/2022 08:43:37| |how many nukes would you send to australia, 1, 2, 10, 20, 100?| +|08/01/2022 08:43:37| |IMAGINE THE SMELL| +|08/01/2022 08:43:38| |SWEATY RABBIT TANK| +|08/01/2022 08:43:39| >women +|08/01/2022 08:43:39| |SWEATY SEX| +|08/01/2022 08:43:39| |BUNNY SWEAT UOHHHHHH| +|08/01/2022 08:43:41| | NAM TACTICS| +|08/01/2022 08:43:43| |this one went 14 hours| +|08/01/2022 08:43:46| |as many as it takes| +|08/01/2022 08:43:48| |fuck the tropics| +|08/01/2022 08:43:48| |tard wrangler| +|08/01/2022 08:43:50| |Imagine Nekonyaa angry sex| +|08/01/2022 08:43:50| |AZUSA TARD WRANGLER| +|08/01/2022 08:43:50| |one for each melbourne and canberra| +|08/01/2022 08:43:52| |all of them to Australia| +|08/01/2022 08:43:54| |SEVERAL HOURS LATER| +|08/01/2022 08:43:55| |Boob map| +|08/01/2022 08:43:56| |>Azusa being competent again| +|08/01/2022 08:44:00| |How many danmaku?| +|08/01/2022 08:44:04| FLOOF +|08/01/2022 08:44:07| |Jungle tanks screaming jungle war cries while charging you. Scary.| +|08/01/2022 08:44:08| 1 +|08/01/2022 08:44:13| 2 +|08/01/2022 08:44:14| |SET THE TREES ON FIRE FLUSH EM OOOOUT| +|08/01/2022 08:44:20| |jungle warfare bros| +|08/01/2022 08:44:25| |IT AINT ME| +|08/01/2022 08:44:25| WAR +|08/01/2022 08:44:25| |how many danmaku countfag| +|08/01/2022 08:44:26| |cute andou| +|08/01/2022 08:44:31| |IT AINT ME IT AINT ME| +|08/01/2022 08:44:31| |Bataan death march when??| +|08/01/2022 08:44:32| |WAR NEVER CHANGES| +|08/01/2022 08:44:36| |Cute andou raincoat| +|08/01/2022 08:44:40| |>you will never bathe with Marie| +|08/01/2022 08:44:40| |a rose bath| +|08/01/2022 08:44:41| |Fucking Marie| +|08/01/2022 08:44:41| |At least they don't paint their faces green like the trees| +|08/01/2022 08:44:43| |PAMPANGA TO TARLAC LETS WALK| +|08/01/2022 08:44:45| |IT AIN'T ME| +|08/01/2022 08:44:45| |unit 731 arc when???| +|08/01/2022 08:44:45| |marie's bath scene ToT| +|08/01/2022 08:44:45| |SEX WITH MARIE| +|08/01/2022 08:44:47| |GUPPIES IN THE MUD| +|08/01/2022 08:44:47| |God I love Marie| +|08/01/2022 08:44:47| |COUNTFAG WHERE THE FUCK ARE YOU| +|08/01/2022 08:44:48| WEW +|08/01/2022 08:44:49| |Imagine Maries bathwater| +|08/01/2022 08:44:52| mudddddddd +|08/01/2022 08:44:53| wew +|08/01/2022 08:44:53| |Why didn't they make the Americans do the jungle combat? Complete with PTSD?| +|08/01/2022 08:44:55| GANGURO +|08/01/2022 08:44:55| |das racis| +|08/01/2022 08:44:56| |sodoko if she nigger| +|08/01/2022 08:44:56| splish +|08/01/2022 08:44:58| MUDOKO +|08/01/2022 08:44:58| muddoko +|08/01/2022 08:44:58| |MARIE BATH SCENE WHEN| +|08/01/2022 08:45:05| |Andou too poor for an umbrella| +|08/01/2022 08:45:08| |cunny beauty practices| +|08/01/2022 08:45:09| |fluffy mechanics| +|08/01/2022 08:45:10| |I CAN COVER YOUR FACE WITH SOME "MINERALS"| +|08/01/2022 08:45:16| |HUKBALAHAP ARC WHEN | +|08/01/2022 08:45:20| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:45:20| |Fat fuck| +|08/01/2022 08:45:22| |>french "tanks"| +|08/01/2022 08:45:23| |me as the pond| +|08/01/2022 08:45:24| |FLIPS GO HOME| +|08/01/2022 08:45:25| |Anon your cum isn't supposed to be brown| +|08/01/2022 08:45:28| POI +|08/01/2022 08:45:33| |mallards can't swim!| +|08/01/2022 08:45:36| |We been through every kind of rain there is.| +|08/01/2022 08:45:43| |se no| +|08/01/2022 08:45:43| | Little bitty stingin' rain and big ol' fat rain, Rain that flew in sideways.| +|08/01/2022 08:45:46| |based porsche| +|08/01/2022 08:45:46| |Se no| +|08/01/2022 08:45:47| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/?| +|08/01/2022 08:45:47| |sodoko stuck| +|08/01/2022 08:45:49| GANBARE +|08/01/2022 08:45:49| doping? +|08/01/2022 08:45:50| DOPING +|08/01/2022 08:45:50| |/o/ where we at| +|08/01/2022 08:45:51| | And sometimes rain even seemed to come straight up from underneath. | +|08/01/2022 08:45:51| >DOPING +|08/01/2022 08:45:52| |NOS I NEED NOS| +|08/01/2022 08:45:56| |>when the water meth hits| +|08/01/2022 08:45:57| WEW +|08/01/2022 08:45:59| | Shoot, it even rained at night.| +|08/01/2022 08:46:00| |using doping| +|08/01/2022 08:46:00| ????????????? +|08/01/2022 08:46:02| |cute | +|08/01/2022 08:46:04| VTEC +|08/01/2022 08:46:04| |STRONK GUPPIES| +|08/01/2022 08:46:05| |YEAH JUST PUSH IT| +|08/01/2022 08:46:05| STRONG +|08/01/2022 08:46:07| |SEEE NOOOO| +|08/01/2022 08:46:07| |STRONG LOLIS| +|08/01/2022 08:46:09| |>mudwrestling with guppies| +|08/01/2022 08:46:09| |Is this where they drown in mud?| +|08/01/2022 08:46:09| |They need to mod their engine like Leopn and they'll be okay| +|08/01/2022 08:46:09| >pushing +|08/01/2022 08:46:10| |>pushing a tank| +|08/01/2022 08:46:11| |whatr two sodoclones gonna do| +|08/01/2022 08:46:12| DOPING? +|08/01/2022 08:46:16| |>German Army a few months into Barbarossa| +|08/01/2022 08:46:16| |Strong enough to push a 28 ton tank| +|08/01/2022 08:46:18| |RAMMING SPEED| +|08/01/2022 08:46:21| |MAKO NO| +|08/01/2022 08:46:21| |Sodoko and Pasomi bisected due to Mako's reckless driving| +|08/01/2022 08:46:21| |MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO MUDBATH WITH MIHO | +|08/01/2022 08:46:24| |Mako has seen enough| +|08/01/2022 08:46:25| |Mako has decided to kill Sodoko| +|08/01/2022 08:46:25| |NICE JUMP| +|08/01/2022 08:46:26| |i-ii-is this| +|08/01/2022 08:46:27| Clean? +|08/01/2022 08:46:29| |sodoko is in orbit| +|08/01/2022 08:46:29| SodoPazo +|08/01/2022 08:46:29| 10/10 +|08/01/2022 08:46:30| JUMP +|08/01/2022 08:46:31| |>doesn't even fucking slow down| +|08/01/2022 08:46:32| hop +|08/01/2022 08:46:33| sugoi +|08/01/2022 08:46:34| JOMP +|08/01/2022 08:46:35| |JUMP GOOD| +|08/01/2022 08:46:35| |Those girls are so dirty down there | +|08/01/2022 08:46:35| |BREAK ORBIT| +|08/01/2022 08:46:36| |subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subtext subt| +|08/01/2022 08:46:38| |FLYING CHILD| +|08/01/2022 08:46:38| KECHI +|08/01/2022 08:46:39| Lesbianas +|08/01/2022 08:46:40| |now kiss| +|08/01/2022 08:46:40| |now kiss| +|08/01/2022 08:46:42| SEX +|08/01/2022 08:46:42| /u/ +|08/01/2022 08:46:42| DAME +|08/01/2022 08:46:43| |She saw her chance, she had to take it| +|08/01/2022 08:46:45| | carbon caoting| +|08/01/2022 08:46:46| |THE NEGOTIATOR| +|08/01/2022 08:46:47| kecchi.. +|08/01/2022 08:46:47| KEIICHI +|08/01/2022 08:46:49| TOTSUGEKI? +|08/01/2022 08:46:49| SUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEXSUBSEX +|08/01/2022 08:46:52| TOTSUGEKI +|08/01/2022 08:46:52| TOTSUGEKI +|08/01/2022 08:46:53| |/u/-chads keep winning| +|08/01/2022 08:46:55| TOTSUGEKI +|08/01/2022 08:46:56| BAKAS +|08/01/2022 08:46:57| |/u/fags >>>/out/| +|08/01/2022 08:46:57| |Mako going for the friendly fire| +|08/01/2022 08:46:58| Totsugeki? +|08/01/2022 08:46:59| SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX +|08/01/2022 08:47:00| |ITS IN THE NAME| +|08/01/2022 08:47:01| |SHUT THE FUCK UP HOSOMI| +|08/01/2022 08:47:01| |SOMEON SHUT HOSOMI UP| +|08/01/2022 08:47:02| Sasuga +|08/01/2022 08:47:03| |Baka da na, hosomi!| +|08/01/2022 08:47:04| |Remote CHARGE| +|08/01/2022 08:47:05| |YEAH HOSOME YOU RETARD| +|08/01/2022 08:47:05| TOTSUGEKI +|08/01/2022 08:47:06| TOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSUGEKITOTSU +|08/01/2022 08:47:06| TOTSUGECCHI +|08/01/2022 08:47:10| |REMOTE TOTSUGEKI| +|08/01/2022 08:47:13| |shut the fuck up hosomi| +|08/01/2022 08:47:14| |AHHHHHHHHHHHHHHHHHHHHHHHHHH SEEEEEEEEEEEEEEEEEEEEEEEEEEEEKUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| +|08/01/2022 08:47:15| 遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃遠隔突撃 +|08/01/2022 08:47:16| |cute child| +|08/01/2022 08:47:23| UOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 08:47:27| |Japs coping by rewriting history| +|08/01/2022 08:47:30| |TL Note: "Anzu" means "SEX".| +|08/01/2022 08:47:32| >anzu +|08/01/2022 08:47:34| |Thanks TL| +|08/01/2022 08:47:36| |thanks TL| +|08/01/2022 08:47:36| >SEX +|08/01/2022 08:47:36| |thanks, TL| +|08/01/2022 08:47:36| |>bite on them and wear them down Lews| +|08/01/2022 08:47:37| |THANKS TL| +|08/01/2022 08:47:38| Anzu +|08/01/2022 08:47:39| |Anzu's cooking!| +|08/01/2022 08:47:43| |WE HUNDRED MILLION WILL DIE LIKE SHATTERED JEWELS| +|08/01/2022 08:47:46| |TL DR LET'S DRAG THEM TO A MUDFIGHT| +|08/01/2022 08:47:48| |girls und yurukyan| +|08/01/2022 08:47:52| |Azusa always on guard| +|08/01/2022 08:47:52| |the hip flexibility on these girls| +|08/01/2022 08:47:56| |>singapore campaign | +|08/01/2022 08:48:03| |anzu eating my fermentized sperm| +|08/01/2022 08:48:03| sip +|08/01/2022 08:48:06| |cool bird| +|08/01/2022 08:48:08| |nice birb| +|08/01/2022 08:48:09| HOOT +|08/01/2022 08:48:09| |SUPERB OWL| +|08/01/2022 08:48:10| |MUH SIPPY CUP| +|08/01/2022 08:48:11| |>tank milk| +|08/01/2022 08:48:12| |Time for OST| +|08/01/2022 08:48:13| |KINO SCENE INCOMING| +|08/01/2022 08:48:13| とつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげきとつげき +|08/01/2022 08:48:13| |it's called an owl| +|08/01/2022 08:48:15| |weird Aussie noises| +|08/01/2022 08:48:17| |BIG BALLS| +|08/01/2022 08:48:20| |INCOMING KINO| +|08/01/2022 08:48:20| |>During the Burma Campaign, soldiers used to march without trousers due to rampant dyssentary| +|08/01/2022 08:48:21| |RICE BAWLS| +|08/01/2022 08:48:21| SCARED +|08/01/2022 08:48:21| |LIFE GOES ON DAY AFTER DAY AFTER DAY AFTER....| +|08/01/2022 08:48:22| Guadalcanal +|08/01/2022 08:48:22| totsugeki? +|08/01/2022 08:48:25| [SCARED] +|08/01/2022 08:48:26| RABASAN! +|08/01/2022 08:48:27| |fukuda is scared| +|08/01/2022 08:48:29| |do they really eat ntohing but rice balls and crackers?| +|08/01/2022 08:48:29| |JELLY DONUT!~| +|08/01/2022 08:48:31| |Owls are unironically evil| +|08/01/2022 08:48:34| |WE EVEN HAVE TIGERs| +|08/01/2022 08:48:36| |WARERA WA | +|08/01/2022 08:48:37| |cute onahole| +|08/01/2022 08:48:37| |Mako night mode activated| +|08/01/2022 08:48:38| >nips +|08/01/2022 08:48:38| CUTE +|08/01/2022 08:48:39| |Don't leave the boat| +|08/01/2022 08:48:40| cute +|08/01/2022 08:48:45| kinoSong.mp3 +|08/01/2022 08:48:46| |UTOU KA?| +|08/01/2022 08:48:46| RABASAN +|08/01/2022 08:48:47| |Isn't she based off the one Jap tank commander that wasn't retarded?| +|08/01/2022 08:48:48| SINGING +|08/01/2022 08:48:48| HAHAHA +|08/01/2022 08:48:49| |Kino time| +|08/01/2022 08:48:49| |HA HA HA| +|08/01/2022 08:48:50| HAHAHA +|08/01/2022 08:48:52| RABASAAAAAAAANNNNNNN +|08/01/2022 08:48:53| singing? +|08/01/2022 08:48:55| |! BANGER ALERT !| +|08/01/2022 08:48:56| KINO +|08/01/2022 08:48:56| |banger alert| +|08/01/2022 08:48:58| |nightbattle is code for sex in kancolle fanart| +|08/01/2022 08:48:58| |KINO INCOMING| +|08/01/2022 08:48:58| KINO +|08/01/2022 08:49:00| RABAA +|08/01/2022 08:49:00| |BASED NIPS| +|08/01/2022 08:49:00| |HELL YA SONG| +|08/01/2022 08:49:02| RABASAN! +|08/01/2022 08:49:02| |WARERA WA CHIHATAN KOI MONO SHIRAZU| +|08/01/2022 08:49:02| YOIIIIIIIIIIII +|08/01/2022 08:49:03| |KINO JAPANESE IMPERIALIST WAR SONGS| +|08/01/2022 08:49:03| ラバさん +|08/01/2022 08:49:04| |TOTSUGEKI ANTHEM STAND UP| +|08/01/2022 08:49:04| |TOTSUGEKI: THE MUSICAL| +|08/01/2022 08:49:07| |geime me a caguama| +|08/01/2022 08:49:08| |KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 08:49:10| KITAAAAA +|08/01/2022 08:49:11| |WAREWA WA CHIHATAN| +|08/01/2022 08:49:13| KINO +|08/01/2022 08:49:13| |WARERA WA CHIHATAN| +|08/01/2022 08:49:13| |sing along, folks| +|08/01/2022 08:49:13| KITA +|08/01/2022 08:49:14| |KINO ON THE MENU BOYS| +|08/01/2022 08:49:15| CHIHATAN!!!! +|08/01/2022 08:49:16| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:16| |KINO MOMENT| +|08/01/2022 08:49:17| |Warerawa chihatan| +|08/01/2022 08:49:18| |KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 08:49:19| |WAREWA WA CHIHATAN| +|08/01/2022 08:49:19| |Imperial Japan songs are kino| +|08/01/2022 08:49:19| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:20| |\o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:49:20| |The trees can sing now? Scary.| +|08/01/2022 08:49:20| |INOCHI SHIRAZU| +|08/01/2022 08:49:21| YOMOOOOOOOO +|08/01/2022 08:49:22| |VOLUME UP| +|08/01/2022 08:49:24| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:49:27| kino +|08/01/2022 08:49:27| |KINO KINO KINO KINO KION KINO| +|08/01/2022 08:49:28| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:28| |NORE NOREEEE| +|08/01/2022 08:49:29| |NORE NORE SENSHA NI NORE| +|08/01/2022 08:49:30| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 08:49:30| KINO +|08/01/2022 08:49:30| KINO +|08/01/2022 08:49:31| BANZAI!!! +|08/01/2022 08:49:32| \o/ +|08/01/2022 08:49:32| |\o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:49:33| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:34| RABA-SAN +|08/01/2022 08:49:36| |BROS THE TREES ARE SINGING IN JAPANESE IM SCARED| +|08/01/2022 08:49:37| RABASAN +|08/01/2022 08:49:38| |not as kino as frogs| +|08/01/2022 08:49:39| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 08:49:40| |I FEEL THE POWER OF TOTSUGEKI| +|08/01/2022 08:49:41| BANZAI!!!!!! +|08/01/2022 08:49:41| きのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきのきの +|08/01/2022 08:49:42| |Imagine riding into Nanking with this song basting| +|08/01/2022 08:49:43| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:43| RUBBA-SAN +|08/01/2022 08:49:43| |KINO KINO KINO KINO KINO KINO KINO KINO KINO KINO | +|08/01/2022 08:49:44| |BANGER ALERT! BANGER ALERT!| +|08/01/2022 08:49:46| |Bad trees. Scary singing. | +|08/01/2022 08:49:48| |\o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:49:49| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:49:50| きの +|08/01/2022 08:49:50| |KINO ALERT| +|08/01/2022 08:49:51| |god this soothes my heart so much| +|08/01/2022 08:49:52| |>no karaoke| +|08/01/2022 08:49:53| |TOTSUGEKI IN MY VEINS!| +|08/01/2022 08:49:53| |TOTSUGEKI SONG| +|08/01/2022 08:49:55| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 08:49:56| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:49:56| |note: I am the lover| +|08/01/2022 08:49:58| |KOWAI MONO SHIRAZUUUUUUUUUU| +|08/01/2022 08:49:58| |>ywn ride tanks and sing with the boys| +|08/01/2022 08:49:58| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:50:00| きのきのきのきのきの +|08/01/2022 08:50:01| CHIHATAN +|08/01/2022 08:50:03| BANZAI!!!! +|08/01/2022 08:50:03| |\o/ CHI HA TA N| +|08/01/2022 08:50:04| |STEEL OXEN!| +|08/01/2022 08:50:06| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:50:08| |\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ | +|08/01/2022 08:50:09| |NORE NORE TETSUGYUU NI NOTTE| +|08/01/2022 08:50:11| |why couldn't they get a real life song for this| +|08/01/2022 08:50:12| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:50:12| |NORE NORE TETSUGYUU NI NOTTEEEEEEEEEEE| +|08/01/2022 08:50:14| BANZAIIIIIIIIIIIIIIII +|08/01/2022 08:50:15| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:50:16| RABASAN +|08/01/2022 08:50:16| RABASAN +|08/01/2022 08:50:16| |I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOREA I HATE KOR| +|08/01/2022 08:50:17| |At least it's not finnish singing in the jungles| +|08/01/2022 08:50:18| BANZAI!!!! +|08/01/2022 08:50:20| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:50:20| BANBANZAI +|08/01/2022 08:50:21| どこにいるの~ +|08/01/2022 08:50:22| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:50:25| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:50:27| |TL NOTE: The "beloved" is me| +|08/01/2022 08:50:27| |NORE NOOORE| +|08/01/2022 08:50:27| |THESE GIRLS HAVE KILLED THOUSANDS OF CHINESE CIVILIANS| +|08/01/2022 08:50:27| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/| +|08/01/2022 08:50:28| |\o/ \o/ \o/ \o/ \o/ \o/ raba san is a lucky raba| +|08/01/2022 08:50:30| |\O/ TENNO HEIKA BANZAI \O/| +|08/01/2022 08:50:32| THAT +|08/01/2022 08:50:33| |NORHT KOREA BEST KOREA| +|08/01/2022 08:50:33| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:50:35| |NAGURA and her huge forehead| +|08/01/2022 08:50:36| >THAT +|08/01/2022 08:50:39| THAT?! +|08/01/2022 08:50:40| THAT +|08/01/2022 08:50:40| |JAPAN DID NOTHING WRONG| +|08/01/2022 08:50:40| |T H A T| +|08/01/2022 08:50:43| THAT +|08/01/2022 08:50:43| |Ah yes THAT| +|08/01/2022 08:50:44| THAT!? +|08/01/2022 08:50:45| |mako is a creature of the night| +|08/01/2022 08:50:45| |>ch*nese "people"| +|08/01/2022 08:50:46| *THAT* +|08/01/2022 08:50:46| |based /his/| +|08/01/2022 08:50:46| THAT +|08/01/2022 08:50:47| |Imperial Japan was kino, Props to them trying to take on westerners in war despite being retarded. | +|08/01/2022 08:50:48| |hana ded| +|08/01/2022 08:50:48| that +|08/01/2022 08:50:49| |Waku waku| +|08/01/2022 08:50:50| suyaa~ +|08/01/2022 08:50:53| |MAKO IS WIRED AS FUCK| +|08/01/2022 08:50:55| |That? you mean war crimes?| +|08/01/2022 08:50:55| |mako is literally me| +|08/01/2022 08:50:57| |NOO, Nishi, don't read THAT| +|08/01/2022 08:50:57| |SHINYU DATTA| +|08/01/2022 08:50:58| |literally me| +|08/01/2022 08:51:01| spooky +|08/01/2022 08:51:01| |Pulling out the TK doujins I see| +|08/01/2022 08:51:02| |LIterally me| +|08/01/2022 08:51:02| |I am the night. -Mako| +|08/01/2022 08:51:03| AAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:51:03| Doppaganga +|08/01/2022 08:51:04| |I HATE CHINA I HATE KOREA I HATE SEA I HATE RUSSIA I HATE CHINA I HATE KOREA I HATE SEA I HATE RUSSIA I HATE CHINA I HATE KOREA I HATE SEA I| +|08/01/2022 08:51:04| DOPELGANGERRRR +|08/01/2022 08:51:05| DOPPELGÄNGER +|08/01/2022 08:51:05| KOWAI +|08/01/2022 08:51:06| |MAKO WOKE AF| +|08/01/2022 08:51:07| Kek +|08/01/2022 08:51:08| spooky +|08/01/2022 08:51:08| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:51:09| |Mako's batman| +|08/01/2022 08:51:11| |You where merely raised by the darkness| +|08/01/2022 08:51:13| Scaredoko +|08/01/2022 08:51:14| RETARD +|08/01/2022 08:51:14| |>SLIM RIVER| +|08/01/2022 08:51:14| |Aren't countries cutest when they're almost retarded?| +|08/01/2022 08:51:15| |Twin Peaks| +|08/01/2022 08:51:17| |If you ask me they didn't kill nearly enough chinks| +|08/01/2022 08:51:17| kek +|08/01/2022 08:51:17| w +|08/01/2022 08:51:20| ZONBI +|08/01/2022 08:51:22| |Rabbit team is evolving | +|08/01/2022 08:51:23| |are red light flashlights tank equpment?| +|08/01/2022 08:51:24| DEATH +|08/01/2022 08:51:27| |Cool croc| +|08/01/2022 08:51:28| wani +|08/01/2022 08:51:28| WANI +|08/01/2022 08:51:28| wani +|08/01/2022 08:51:31| UUUU +|08/01/2022 08:51:31| |SNAAAKE EATERRR| +|08/01/2022 08:51:31| WANI +|08/01/2022 08:51:32| WANI +|08/01/2022 08:51:33| |The crocodiles are speaking Japanese| +|08/01/2022 08:51:34| Erika... +|08/01/2022 08:51:34| |flag da| +|08/01/2022 08:51:34| wani? +|08/01/2022 08:51:35| WANI +|08/01/2022 08:51:35| |kill the wani| +|08/01/2022 08:51:36| |WANI LOOK OUT| +|08/01/2022 08:51:36| EEEEEEERRRRRRRIIIIIKKKKKKKAAAAAAAAA +|08/01/2022 08:51:37| WANI +|08/01/2022 08:51:37| erika? +|08/01/2022 08:51:37| |red flashlights don't kill your nightvision| +|08/01/2022 08:51:39| OBVIOUS +|08/01/2022 08:51:40| |GET OUT OF HERE ERIKA| +|08/01/2022 08:51:41| |Time to break out the tanker chocolate| +|08/01/2022 08:51:41| |JAPS IN THE WIRE| +|08/01/2022 08:51:42| |I'M STILL IN A DREAM... SNAKE EATER!| +|08/01/2022 08:51:42| >FLORIDA +|08/01/2022 08:51:43| |LOOK OUT| +|08/01/2022 08:51:43| |Bit big?| +|08/01/2022 08:51:44| |OH SHIT| +|08/01/2022 08:51:45| AAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:51:45| |Crocidiles eating japs 1945 colorized| +|08/01/2022 08:51:47| |THEY FALL FOR THIS| +|08/01/2022 08:51:47| sus +|08/01/2022 08:51:48| |BASED BGM| +|08/01/2022 08:51:49| DRUMS +|08/01/2022 08:51:50| |>no pen| +|08/01/2022 08:51:52| |how did azusa know>| +|08/01/2022 08:51:53| |IT'S HUGE| +|08/01/2022 08:51:55| |BEAT TO QUARTERS| +|08/01/2022 08:51:55| WANIZILLA +|08/01/2022 08:51:58| |Azusa has more than 3 braincells| +|08/01/2022 08:51:59| |Azusa is very smart| +|08/01/2022 08:51:59| |What's Erika doing here?| +|08/01/2022 08:52:01| TOKAN! +|08/01/2022 08:52:03| |nice angling| +|08/01/2022 08:52:04| |there's been a 10 meter saltwater croc once| +|08/01/2022 08:52:04| TOKKAN +|08/01/2022 08:52:05| |What the fuck the entire fucking tanks was underneath| +|08/01/2022 08:52:05| 吶喊 +|08/01/2022 08:52:07| |When the tank is a boat.| +|08/01/2022 08:52:08| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:52:08| TOKKAN +|08/01/2022 08:52:09| |ERIKA IS SO FUCKING WET RN WATCHING THIS| +|08/01/2022 08:52:09| |THEY MISSED A SLOW MOVING AMPHIBIOUS TARGET | +|08/01/2022 08:52:10| |BAKAS IN THE TREES BAKAS IN THE TREES| +|08/01/2022 08:52:11| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:52:12| BANZAI +|08/01/2022 08:52:13| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:52:14| NIGGERO +|08/01/2022 08:52:14| |How fucking big was the wani| +|08/01/2022 08:52:14| |I wish I had more than 3 braincells| +|08/01/2022 08:52:16| TAKUSAN +|08/01/2022 08:52:16| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:52:22| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:52:25| |GLORY TO NIPPON!!| +|08/01/2022 08:52:25| |THEY ARE IN THE FUCKING TREES| +|08/01/2022 08:52:25| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/| +|08/01/2022 08:52:26| |Now you telling me crocodiles can climb trees and speak jungle Japanese?| +|08/01/2022 08:52:30| 足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +|08/01/2022 08:52:31| |FUCKING SEATANKS| +|08/01/2022 08:52:33| |Interior crocodile alligator. I drive a Chevrolet movie theater.| +|08/01/2022 08:52:35| |those kami are hella durable too| +|08/01/2022 08:52:35| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 08:52:36| 足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +|08/01/2022 08:52:38| |just don't join Ooarai, Anzio or Chihatan and you'll be fine| +|08/01/2022 08:52:39| Ew +|08/01/2022 08:52:40| 足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +|08/01/2022 08:52:41| |are these tanks real| +|08/01/2022 08:52:42| |I HAVE TO PISS SO BADLY| +|08/01/2022 08:52:44| |go home GI| +|08/01/2022 08:52:45| 足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃足踏み突撃 +|08/01/2022 08:52:47| |GLORY TO NIPPON!!| +|08/01/2022 08:52:49| |Welcome to the rice fields motherfucker | +|08/01/2022 08:52:51| |SUPREME CHAMPION| +|08/01/2022 08:52:51| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:52:51| |stop the moonrune spam| +|08/01/2022 08:52:55| |NIPPON BANZAI| +|08/01/2022 08:53:11| きの +|08/01/2022 08:53:15| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:53:16| KIMO +|08/01/2022 08:53:17| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/ \o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 08:53:18| |That’s a weird looking tank| +|08/01/2022 08:53:19| |ROOSEVELT EATS SHIT| +|08/01/2022 08:53:19| kaijubros +|08/01/2022 08:53:23| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:53:23| |both are japan| +|08/01/2022 08:53:25| |Duck came back| +|08/01/2022 08:53:31| |HIPPO BROS| +|08/01/2022 08:53:32| |STUG LIFE| +|08/01/2022 08:53:33| "carbon" +|08/01/2022 08:53:38| |NONBIRI TOTSUGEKI| +|08/01/2022 08:53:38| |NONBIRI TOTSUGEKI!| +|08/01/2022 08:53:41| |nonbiri totsugeki| +|08/01/2022 08:53:46| |the (((kappa))) cries in pain as it shoots you| +|08/01/2022 08:53:46| |NONBIRI TOTSUGEKI| +|08/01/2022 08:53:48| |NONBIRI TOSUGEKI| +|08/01/2022 08:53:50| |ALL UNITS SNCHRONIZE YOUR PISS| +|08/01/2022 08:53:50| のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃 +|08/01/2022 08:53:51| |THEY ACTUALLY SURVIVE THIS| +|08/01/2022 08:53:56| |still not disable after shaving top half| +|08/01/2022 08:53:59| (ding) +|08/01/2022 08:54:00| のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃のんびり突撃 +|08/01/2022 08:54:03| |NON NON BIYORI TOTSUGEKI?| +|08/01/2022 08:54:03| MAAAAAADA +|08/01/2022 08:54:05| mada +|08/01/2022 08:54:08| |MADA MADA MADA| +|08/01/2022 08:54:09| UTE +|08/01/2022 08:54:09| |MADA MADA MADA MADA| +|08/01/2022 08:54:09| maaaaada +|08/01/2022 08:54:11| UTE!!! +|08/01/2022 08:54:11| ute +|08/01/2022 08:54:12| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TE| +|08/01/2022 08:54:12| TTE +|08/01/2022 08:54:12| TEEEEEEE +|08/01/2022 08:54:14| TEEEEEE +|08/01/2022 08:54:14| |MADA MADA MADA | +|08/01/2022 08:54:16| |UTE UTE UTE| +|08/01/2022 08:54:19| |MADA MADA MADA....| +|08/01/2022 08:54:23| LAJA +|08/01/2022 08:54:23| RICOCHET +|08/01/2022 08:54:24| RAJAA +|08/01/2022 08:54:28| |how are they not all fucking dead| +|08/01/2022 08:54:30| leoponbros... +|08/01/2022 08:54:37| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/ TOTSUGEKI| +|08/01/2022 08:54:39| |GOKIGENYO TOTSUGEKI| +|08/01/2022 08:54:40| |GOKIGENYOU TOTSUGEKI| +|08/01/2022 08:54:41| TOTSUGEKI +|08/01/2022 08:54:43| キノ +|08/01/2022 08:54:45| TOTSUGEKI +|08/01/2022 08:54:46| |GOKIGENYOU TOTSUGEKI| +|08/01/2022 08:54:48| |GOKIGENYO TOTSUGEKI| +|08/01/2022 08:54:53| BRRRRRRRRRRRRRRRR +|08/01/2022 08:54:53| |GOKIGENYOU TOTSUGEKI| +|08/01/2022 08:54:54| |YEAH KILLEM| +|08/01/2022 08:54:56| |FOLLOW MY TRACERS| +|08/01/2022 08:55:01| |Powerful retards| +|08/01/2022 08:55:01| BRTBRTBRTBRTBRTBRTBRT +|08/01/2022 08:55:04| |fuck off captain america| +|08/01/2022 08:55:04| |Oh no Leopon, no more drift| +|08/01/2022 08:55:07| キノ キノキノキノキノキノキノ +|08/01/2022 08:55:09| |TOTO MY TYRES| +|08/01/2022 08:55:23| |Keep firing tracers until we burn this jungle down!| +|08/01/2022 08:55:26| 映画映画 +|08/01/2022 08:55:27| o7 +|08/01/2022 08:55:34| BANZAI +|08/01/2022 08:55:34| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:55:38| |DEEP REGRET| +|08/01/2022 08:55:40| Poorschebros... +|08/01/2022 08:55:41| |go home porsche| +|08/01/2022 08:55:42| |rip /oo/| +|08/01/2022 08:55:44| |SHAMEFUR DISPRAY| +|08/01/2022 08:55:47| チンポ +|08/01/2022 08:55:47| 前進 +|08/01/2022 08:55:48| |DEEP REGRET| +|08/01/2022 08:55:49| |Now the trees can charge? | +|08/01/2022 08:55:53| >Porsche +|08/01/2022 08:55:56| |OUR MEN ARE RUNNING FROM THE BATTLEFIELD| +|08/01/2022 08:55:58| |COMMIT SUDOUKO RIGHT NOW| +|08/01/2022 08:56:03| 前進あるのみ! +|08/01/2022 08:56:04| |HAMADA OUT| +|08/01/2022 08:56:07| |OUR MEN ARE WAVERING| +|08/01/2022 08:56:07| |Fuck i'm in the mood for some HOI4 now| +|08/01/2022 08:56:10| |I demand sodoko commit sodoko!| +|08/01/2022 08:56:12| |Thre trees can even swim? fuck this theater| +|08/01/2022 08:56:12| |sodoko already dieded| +|08/01/2022 08:56:13| 突撃前進 +|08/01/2022 08:56:17| Totsugeki! +|08/01/2022 08:56:19| TOTSUGEKIDEWANAIDAROU +|08/01/2022 08:56:20| WAKARAN +|08/01/2022 08:56:26| |Woah just like what Chihatan would do| +|08/01/2022 08:56:31| |>charging out of desperation. what did she mean by this?| +|08/01/2022 08:56:32| 皆目分からんwww +|08/01/2022 08:56:36| Chihatanbros... +|08/01/2022 08:56:40| |If the trees can fly, we all bouncing| +|08/01/2022 08:56:44| TUEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 08:56:46| |Chihatanbros we can do this!| +|08/01/2022 08:56:46| TEEEEEEEE +|08/01/2022 08:56:50| |OOARAIBROS DID WE GET TOO COCKY?| +|08/01/2022 08:56:50| UTE +|08/01/2022 08:56:51| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 08:56:51| TEEEE +|08/01/2022 08:56:53| kino +|08/01/2022 08:56:56| |oh shit the serious music| +|08/01/2022 08:56:58| BANZAI +|08/01/2022 08:57:03| |Ooarai is done for| +|08/01/2022 08:57:05| |Chihatan might actually win this| +|08/01/2022 08:57:05| 打てえええええええええええ +|08/01/2022 08:57:09| |OOARAI BROS....IT'S OVER| +|08/01/2022 08:57:10| |stralia a shit| +|08/01/2022 08:57:11| |KINO JUNGLE WARFARE| +|08/01/2022 08:57:13| |OORAI CHADS WE GOT TOO COCKY| +|08/01/2022 08:57:15| |WE HAVE THIS IN THE BAG CHIHABROS| +|08/01/2022 08:57:16| |time to buy chihatancoin| +|08/01/2022 08:57:17| |It's quiet. Too quiet.| +|08/01/2022 08:57:19| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 08:57:23| KONOOOO +|08/01/2022 08:57:30| |Ooarai forgot retards have retard strenght| +|08/01/2022 08:57:33| |>what the fuck am I reading?| +|08/01/2022 08:57:35| |it's a ruse!| +|08/01/2022 08:57:36| 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳 万歳  +|08/01/2022 08:57:39| |Good thing those commanders took their carbon supplements, would be bad if the MG rounds could actually hurt them| +|08/01/2022 08:57:42| |Chihatan needs bayonets That's what they're missing.| +|08/01/2022 08:57:43| |WAIT THIS ISN'T THE WAY TO ALBERQUEQUE| +|08/01/2022 08:57:44| |>is this bait?| +|08/01/2022 08:57:46| |THEY'RE EVEN FIRING TRACERS OUT OF DESPERATION! WE CAN DO IT!| +|08/01/2022 08:57:54| BRAKE! +|08/01/2022 08:57:54| |are we still in df2?| +|08/01/2022 08:57:55| |Chihatan needs kamikaze planes| +|08/01/2022 08:58:00| |based on what?| +|08/01/2022 08:58:00| >source? +|08/01/2022 08:58:01| |>DRIVE ME CLOSER, I WANT TO HIT THEM WITH MY SWORD| +|08/01/2022 08:58:02| yeah +|08/01/2022 08:58:03| Ohkas +|08/01/2022 08:58:03| |WE'VE REACHED DF6| +|08/01/2022 08:58:04| けく +|08/01/2022 08:58:04| |Just be good trees and follow the shiny tracers| +|08/01/2022 08:58:04| CURE +|08/01/2022 08:58:05| |I bet those tracer are just Glown in the Dark airsoft BBS LMAO| +|08/01/2022 08:58:23| |CHIHATANBROS THIS IS OUR YEAR| +|08/01/2022 08:58:26| |This cant be happening Chi ha tan bros...| +|08/01/2022 08:58:27| |No way Fukuda| +|08/01/2022 08:58:29| |oh no no no| +|08/01/2022 08:58:31| |OH NO!| +|08/01/2022 08:58:33| |LONG LIVE HIROHITO| +|08/01/2022 08:58:33| |OH NO| +|08/01/2022 08:58:34| |HOW COULD THIS HAPPEN TO US| +|08/01/2022 08:58:34| |Chihatan new protag school| +|08/01/2022 08:58:34| |it's over| +|08/01/2022 08:58:35| |OH NONONONO IS THIS IT CHIHATANBROS| +|08/01/2022 08:58:38| GAH +|08/01/2022 08:58:39| |WHAT THE FUCK I PUT $50000 ON CHIHATAN| +|08/01/2022 08:58:39| AAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 08:58:40| NIPPONBROS +|08/01/2022 08:58:41| |TOTSUGEKI BROS….| +|08/01/2022 08:58:42| ueh +|08/01/2022 08:58:43| |Nah nah, no trench, just shiny tracers| +|08/01/2022 08:58:43| |totsugeki straight to hell| +|08/01/2022 08:58:43| |Isn't this THEIR ship? how did they fall for that hill?| +|08/01/2022 08:58:44| |WHY DID THE AMPHIBIOUS TANK FOLLOW THEM ONTO LAND| +|08/01/2022 08:58:44| ueh +|08/01/2022 08:58:47| |FUKUDA NOOOOOOOOOOOO| +|08/01/2022 08:58:48| UEH +|08/01/2022 08:58:49| |did we... get too cocky....| +|08/01/2022 08:58:53| |CHIHTAN ACTUALLY SURVIVE THIS| +|08/01/2022 08:58:53| |I'M A GENIUS. OH NO!| +|08/01/2022 08:58:54| |MUDBROS... WE WIN AGAIN| +|08/01/2022 08:58:54| CHIHATANBROS.... +|08/01/2022 08:58:54| |>Know its a trap >Dont break| +|08/01/2022 08:58:55| |nice shot| +|08/01/2022 08:58:55| |oh great, she's dead| +|08/01/2022 08:58:56| |get miho'd| +|08/01/2022 08:58:56| |ooarai turn to miss a lot?| +|08/01/2022 08:58:58| |HOW DID YOU MISS| +|08/01/2022 08:58:59| |THE FOOLS DUG THEIR OWN GRAVE| +|08/01/2022 08:59:01| |IF CHI HA TAN MOVES ME AND MY FAMILY WILL MOVE TO NAGASAKI| +|08/01/2022 08:59:06| |time for the gangbang| +|08/01/2022 08:59:10| |Ooarai is finally on the jobbing block| +|08/01/2022 08:59:11| retard +|08/01/2022 08:59:12| |HOW DID YOU MISS| +|08/01/2022 08:59:14| BANZAAAAAAAAAAAAIIIIIIIIIIIIII +|08/01/2022 08:59:14| |>everyone on oorai suddenly miss every shot| +|08/01/2022 08:59:15| |Look at us, We the trees now| +|08/01/2022 08:59:18| |TIME TO GET BOKO'D| +|08/01/2022 08:59:19| |IT'S OVER CHIHATAN WE HAVE THE HIGH GROUND| +|08/01/2022 08:59:21| |CUTE TURN| +|08/01/2022 08:59:22| SPIN +|08/01/2022 08:59:23| |Nobody in Ooarai can aim| +|08/01/2022 08:59:24| dab +|08/01/2022 08:59:25| >spin +|08/01/2022 08:59:26| SPIIIIIN +|08/01/2022 08:59:27| |RIP TO THE BRO WHO BET AGAINST ORORAI | +|08/01/2022 08:59:27| MAWARE +|08/01/2022 08:59:27| |revenge for the bridge scene| +|08/01/2022 08:59:28| |HOSOMI SPIN| +|08/01/2022 08:59:29| spiiin +|08/01/2022 08:59:30| |MAWARI MIGI| +|08/01/2022 08:59:33| |aussies where they should be| +|08/01/2022 08:59:33| |DONUT SPIN| +|08/01/2022 08:59:34| totsugeki? +|08/01/2022 08:59:34| 回レ +|08/01/2022 08:59:34| |Just drop the nukes already| +|08/01/2022 08:59:37| |Insufficient gun depression| +|08/01/2022 08:59:39| |Even worse aim than the French| +|08/01/2022 08:59:41| TSTSUGEKI +|08/01/2022 08:59:45| |the fools, the trench is too deep, their gun depression can't go that deep| +|08/01/2022 08:59:48| 万歳 万歳 万歳 万歳  +|08/01/2022 08:59:50| TOTSUGEKI +|08/01/2022 08:59:52| ! +|08/01/2022 08:59:53| |COME HOME YELLOWMAN| +|08/01/2022 08:59:53| |WHAT THE FUCK| +|08/01/2022 08:59:53| |lil retarts trynna glitchiong through the wall| +|08/01/2022 08:59:53| WHAT +|08/01/2022 08:59:54| !! +|08/01/2022 08:59:54| WTF +|08/01/2022 08:59:55| NANI +|08/01/2022 08:59:55| !!!!!!!!!!!!!!!!!! +|08/01/2022 08:59:56| |I thought Hana was supposed to be a great gunner?| +|08/01/2022 08:59:58| :O +|08/01/2022 08:59:58| 前進あるのみ! +|08/01/2022 08:59:58| NANI +|08/01/2022 08:59:58| NANI?!?!?! +|08/01/2022 08:59:58| |TETTAI DATTO!?| +|08/01/2022 08:59:59| ! +|08/01/2022 08:59:59| |WHAT THE FUCK| +|08/01/2022 09:00:00| ??????????????? +|08/01/2022 09:00:00| !!!!!!!!!!!!! +|08/01/2022 09:00:01| |THEY ARE STATIONARY| +|08/01/2022 09:00:01| !!!!!!!!!!!!!!!!! +|08/01/2022 09:00:01| MASAKA +|08/01/2022 09:00:01| HUH? +|08/01/2022 09:00:02| |WTF DID SHE JUST SAY| +|08/01/2022 09:00:03| |NISHI WAS EXECUTED THE NEXT DAY| +|08/01/2022 09:00:04| D: +|08/01/2022 09:00:04| ?! +|08/01/2022 09:00:04| |FUKUDA YOU RAT! WE WEREN'T CHARGING! YOU GAVE ME THE OL' SPICY RETREAT! HOW COULD YOU GIVE YOUR OWN SISTERS THE OL' SPICY RETREAT?!| +|08/01/2022 09:00:05| 撤退?!?! +|08/01/2022 09:00:06| NANI +|08/01/2022 09:00:06| |SHOOT THEM| +|08/01/2022 09:00:06| ??!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?! +|08/01/2022 09:00:06| TETTAI +|08/01/2022 09:00:06| ??????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 09:00:07| |Who charges a vertical slope?| +|08/01/2022 09:00:07| BAKANA +|08/01/2022 09:00:07| |DO NOT RETREAT| +|08/01/2022 09:00:08| TETTAI!? +|08/01/2022 09:00:08| ????????????????????????? +|08/01/2022 09:00:09| |SHAMEFUR DISPRAY| +|08/01/2022 09:00:11| |gun cant aim in to pit| +|08/01/2022 09:00:11| |WHY IS NOBODY FIRING| +|08/01/2022 09:00:12| |MEIJI REFORMS| +|08/01/2022 09:00:12| !?!?!?!?!?!?!?!?!?!?!?!?!?!?!"!?!??!?!?!?! +|08/01/2022 09:00:13| |no way| +|08/01/2022 09:00:13| ??????????????????????????????? +|08/01/2022 09:00:14| |how nice of Ooarai to stop their fire| +|08/01/2022 09:00:14| |time for nishi to shine| +|08/01/2022 09:00:14| |NO FUCKING WAY| +|08/01/2022 09:00:15| |>TALKING IS A FREE ACTION, PLZ DONT FIRE| +|08/01/2022 09:00:15| |Totsugekibros... ARE WE RETREATING?!| +|08/01/2022 09:00:16| |WHICH WAY EASTERN WOMAN?| +|08/01/2022 09:00:16| |posting in retreat| +|08/01/2022 09:00:17| |Uhhh oorai bros? Why haven't we won yet? They're trapped...| +|08/01/2022 09:00:19| |not very cash money| +|08/01/2022 09:00:19| |WHY ARE YOU RETREATING| +|08/01/2022 09:00:19| |SHAMEFURE DISPRAY| +|08/01/2022 09:00:20| |Tamada.exe has stopped working| +|08/01/2022 09:00:21| |what the fuck| +|08/01/2022 09:00:23| |HER SMILE AND TOTSUGEKI... GONE| +|08/01/2022 09:00:25| faint +|08/01/2022 09:00:25| O_O +|08/01/2022 09:00:25| |NO NO NO NO HECKIN CHI-HA BROS| +|08/01/2022 09:00:26| |RETROGRADE CHARGE| +|08/01/2022 09:00:26| |YOU HAVE A GUN THAT CAN REACH THEM| +|08/01/2022 09:00:27| UNBELIEVABLE +|08/01/2022 09:00:27| |DISHONURABRE PIGGU| +|08/01/2022 09:00:27| |TOTSUGEKI BROS NOT LIKE THISSSSSSSSSSSSSS| +|08/01/2022 09:00:32| ASS +|08/01/2022 09:00:33| |ANCESTORS CRTING| +|08/01/2022 09:00:34| |TAMADA HAD NEVER SEEN SUCH BULLSHIT| +|08/01/2022 09:00:34| |WHAT IS THIS RETREAT YOU SPEAK OFF?| +|08/01/2022 09:00:34| |No retreat. Just charge opposite direction| +|08/01/2022 09:00:34| |LETS GO CHIHATAN| +|08/01/2022 09:00:35| |SIMILE GONE| +|08/01/2022 09:00:36| |was zum teufel?| +|08/01/2022 09:00:37| |UNIT 731 DIDN'T EXIST| +|08/01/2022 09:00:37| |YOU CAN PENETRATE FROM ANY ANGLE| +|08/01/2022 09:00:38| VOLLEYBUTTS +|08/01/2022 09:00:39| |TAEKO IS CUTE| +|08/01/2022 09:00:41| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:00:44| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:00:46| |this is shameful...| +|08/01/2022 09:00:47| |They RAN| +|08/01/2022 09:00:47| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:00:48| Volleybut +|08/01/2022 09:00:48| |THEY ARE MOVING IN A STRAIGHT LINE| +|08/01/2022 09:00:51| DS3? +|08/01/2022 09:00:51| |kino line holy fuck| +|08/01/2022 09:00:52| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:00:52| |YEAR TIMESKIP| +|08/01/2022 09:00:53| PUSSIES +|08/01/2022 09:00:57| |2 YEAR TARNSITION| +|08/01/2022 09:00:58| |TWO YEARS LATER...| +|08/01/2022 09:00:58| |SHAMEFUR DISPRAY| +|08/01/2022 09:01:01| |TWO YEARS LATER| +|08/01/2022 09:01:02| |DF3 TIME HERE WE GO BROS| +|08/01/2022 09:01:05| 2019? +|08/01/2022 09:01:05| |2019 -> 2021| +|08/01/2022 09:01:06| |2 YEARS LATER| +|08/01/2022 09:01:06| |TWO YEARS LATER...| +|08/01/2022 09:01:07| |2 years in the blink of an eye...| +|08/01/2022 09:01:08| |TIME WARP| +|08/01/2022 09:01:09| |god they're all so fucking flat| +|08/01/2022 09:01:09| |It's been 2 years| +|08/01/2022 09:01:10| |Home stretch.| +|08/01/2022 09:01:10| LESSSSSSSSGOOOOOOOOOO +|08/01/2022 09:01:11| |10 hours in| +|08/01/2022 09:01:13| |two years bros | +|08/01/2022 09:01:14| |WOW THAT WAS FAST| +|08/01/2022 09:01:17| DS3 +|08/01/2022 09:01:19| |YOU KILLED TAMADA| +|08/01/2022 09:01:19| |THE FINAL STRETCH| +|08/01/2022 09:01:20| |CHIHATAN HAS BEEN ON THE RETREAT FOR TWO YEARS| +|08/01/2022 09:01:20| |i hope the frogs brought enough food for 2 years| +|08/01/2022 09:01:23| UOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 09:01:26| |Onion soup| +|08/01/2022 09:01:26| |marie erotic| +|08/01/2022 09:01:29| |>she got in the bath| +|08/01/2022 09:01:30| WEW +|08/01/2022 09:01:30| |3 movies for one match?| +|08/01/2022 09:01:30| LEWD +|08/01/2022 09:01:30| |LETS GO LAST HOUR| +|08/01/2022 09:01:31| |TIME IS CONVULUTED| +|08/01/2022 09:01:31| |motto keeki| +|08/01/2022 09:01:32| |We in the last part now?| +|08/01/2022 09:01:34| |how many anons are still standing?| +|08/01/2022 09:01:35| |UOOOOOOOOOOOOHHHHHH MARIE| +|08/01/2022 09:01:35| |Marie must be a prune by now| +|08/01/2022 09:01:35| OOOOUUUUUUUUUUHH +|08/01/2022 09:01:35| FATTY +|08/01/2022 09:01:36| |I have not slept in 25 hours| +|08/01/2022 09:01:36| |SHE'S FAT| +|08/01/2022 09:01:37| |she ate all 12 cakes| +|08/01/2022 09:01:39| |Does the fat bitch ever stop eating| +|08/01/2022 09:01:40| |LET HER EAT CARAMBER| +|08/01/2022 09:01:42| |So we're gonna get DF4 right after this, r-right?| +|08/01/2022 09:01:44| |delicious french soup| +|08/01/2022 09:01:44| |God i need to fuck Marie| +|08/01/2022 09:01:45| |I haven't seen this yet| +|08/01/2022 09:01:47| |Marie straight up not learning. Shame.| +|08/01/2022 09:01:47| |10 am, still awake| +|08/01/2022 09:01:49| |ONION CAKE| +|08/01/2022 09:01:50| |12 HOUR MOVIE| +|08/01/2022 09:01:50| |FORTY CAKES| +|08/01/2022 09:01:51| |AYE CARAMBAR| +|08/01/2022 09:01:55| STINKY +|08/01/2022 09:01:55| |still strong| +|08/01/2022 09:02:03| |9 AM| +|08/01/2022 09:02:04| |STILL GOING STRONG| +|08/01/2022 09:02:05| |HYPER MAKO| +|08/01/2022 09:02:06| |BERGELE TIEM :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:02:06| |10 hours on the stream still goin| +|08/01/2022 09:02:07| MILKSHAKE +|08/01/2022 09:02:08| kek +|08/01/2022 09:02:08| |MAKO IS FUCKING WIRED| +|08/01/2022 09:02:10| |NIGHT MODE ENABLED| +|08/01/2022 09:02:12| |DOES SHE TAKE HER COFFE BLACK| +|08/01/2022 09:02:13| 9AM +|08/01/2022 09:02:14| |i'm staying up all night tonight too...| +|08/01/2022 09:02:17| |time for a cheese sandwich?| +|08/01/2022 09:02:19| |Midnight here, how about you guys?| +|08/01/2022 09:02:21| |Mako is AWAKE!| +|08/01/2022 09:02:21| |VOLLEYBU CLUB STINKING IN THEIR TYPE-89 UOH| +|08/01/2022 09:02:24| 3AM +|08/01/2022 09:02:24| |EVEN THE GIRLS ARE STAY UP| +|08/01/2022 09:02:26| |Just give these girls panzerschokolade| +|08/01/2022 09:02:26| 19:00 +|08/01/2022 09:02:27| |2am here| +|08/01/2022 09:02:28| |2 AM HERE| +|08/01/2022 09:02:30| |tfw 10am| +|08/01/2022 09:02:30| |why do you have to do that?| +|08/01/2022 09:02:31| |3am bros where we at| +|08/01/2022 09:02:31| 8am +|08/01/2022 09:02:33| |just hit midnight lol| +|08/01/2022 09:02:34| |west coast report in| +|08/01/2022 09:02:35| Anzu +|08/01/2022 09:02:36| |9 am| +|08/01/2022 09:02:37| |3am | +|08/01/2022 09:02:38| |THE GUPPIES FEEL OUR PAIN| +|08/01/2022 09:02:39| |ITS 8 AM I'VE BEEN HERE FOR THE WHOLE THING| +|08/01/2022 09:02:41| |0900 | +|08/01/2022 09:02:41| |2 am| +|08/01/2022 09:02:41| |west coast ez| +|08/01/2022 09:02:41| |>12 hours since match started || >nearly 12 hours since stream started| +|08/01/2022 09:02:42| 1am +|08/01/2022 09:02:43| |SHUT UP MOMO| +|08/01/2022 09:02:44| |Just be Mako, Don't sleep at night.| +|08/01/2022 09:02:45| |COMMIEFORNIA TIME| +|08/01/2022 09:02:46| 12AM +|08/01/2022 09:02:46| |Wouldn't it be rabbit team eating cheese sandwiches| +|08/01/2022 09:02:46| |3am and going strong \o/| +|08/01/2022 09:02:47| |NO STOP TIME MOVING FORWARD REE| +|08/01/2022 09:02:49| |hah 3pm bitch| +|08/01/2022 09:02:50| |>tfw 4 pm asian supremacy| +|08/01/2022 09:02:53| |2am masterrace reportting in| +|08/01/2022 09:02:54| 3am +|08/01/2022 09:02:54| |EAST COAST BEST COAST| +|08/01/2022 09:02:57| |Wow anime mirrors real life anons| +|08/01/2022 09:02:57| |5 am| +|08/01/2022 09:02:57| |it me| +|08/01/2022 09:02:59| |2am help me| +|08/01/2022 09:03:00| |lover-san lover-san| +|08/01/2022 09:03:00| 3AMbros... +|08/01/2022 09:03:00| |GOD I WISH 'lover-san' WAS ME| +|08/01/2022 09:03:01| |12 am here :)| +|08/01/2022 09:03:01| |I WILL PROTECT YOU| +|08/01/2022 09:03:01| |no its me| +|08/01/2022 09:03:01| me +|08/01/2022 09:03:01| |Is it early morning in america or some other third world hellhole| +|08/01/2022 09:03:02| |4pm comfy weekend| +|08/01/2022 09:03:02| |momo should just suck it up and find a man| +|08/01/2022 09:03:04| LOVER-SAN +|08/01/2022 09:03:04| 8am +|08/01/2022 09:03:04| |5am here, didn't even want to watch the stream but| +|08/01/2022 09:03:05| |The entire fucking mudhole subplot was filler!| +|08/01/2022 09:03:06| SCARED +|08/01/2022 09:03:07| |RABU SAN| +|08/01/2022 09:03:10| |All me| +|08/01/2022 09:03:11| |why fukuda keep calling me| +|08/01/2022 09:03:12| |ESTCHADS CAN'T STOP WINNING| +|08/01/2022 09:03:12| |can you imagine sleeping| +|08/01/2022 09:03:13| |Its 8am and im working later| +|08/01/2022 09:03:14| |west coast midnight east coast who cares| +|08/01/2022 09:03:20| |3 AM in Eternally Superior Timezone| +|08/01/2022 09:03:21| |DESTROYING JAPANESE CULTURE | +|08/01/2022 09:03:23| |>working on saturday| +|08/01/2022 09:03:25| Tradbros.... +|08/01/2022 09:03:29| |im a genius| +|08/01/2022 09:03:32| |"WE WERE PRETENDING TO BE RETARDED" - NISHI| +|08/01/2022 09:03:32| >working +|08/01/2022 09:03:33| >working +|08/01/2022 09:03:33| |oh no| +|08/01/2022 09:03:35| |Lover-san is for everybody. Like Mr.Clean| +|08/01/2022 09:03:36| |rip weekend waggie| +|08/01/2022 09:03:39| |>all you have to do is kick in the door| +|08/01/2022 09:03:41| |IGNORE FLANK GET ANGLERFISH| +|08/01/2022 09:03:43| |Totsuegekibros did we get to cocky?| +|08/01/2022 09:03:49| |Just like IJA, tunnel vision on the wrong objectives| +|08/01/2022 09:03:52| |Totsubakas have a chance| +|08/01/2022 09:03:53| |... and the whole rotten structure collapses| +|08/01/2022 09:03:55| !! +|08/01/2022 09:04:00| |its finally over for ooarai| +|08/01/2022 09:04:03| |BAR NOISES| +|08/01/2022 09:04:04| |they just let the flag disappear| +|08/01/2022 09:04:04| |They were better when they were stupid| +|08/01/2022 09:04:04| |NIPPONCHADS WE GOT THIS| +|08/01/2022 09:04:04| |Ooraibros how could we blow that opportunity?| +|08/01/2022 09:04:05| |Work that should have been done yesterday but my other job called me in and you cant garden i the dark| +|08/01/2022 09:04:08| |>can't even hit a tree| +|08/01/2022 09:04:18| |OH GOD MY SKIN| +|08/01/2022 09:04:18| |FOLDED 731 TIMES| +|08/01/2022 09:04:19| |JANNIES BANNED ME FOR 3 DAYS I CAN'T POST MY NISHI PICS| +|08/01/2022 09:04:20| |ROID RAGE| +|08/01/2022 09:04:21| |Wow, Chi tan got actual tactics now.| +|08/01/2022 09:04:22| |I am getting fat watching| +|08/01/2022 09:04:22| SWOLE +|08/01/2022 09:04:23| |SWOLE | +|08/01/2022 09:04:23| |I like that Karina is always on the verge of a mental breakdown when driving| +|08/01/2022 09:04:27| |>staying up is wrong//steam up for last 11 hours| +|08/01/2022 09:04:29| |Whoa they're literally me| +|08/01/2022 09:04:37| |/fit/ + /k/| +|08/01/2022 09:04:38| |i want the neets to snap me in half| +|08/01/2022 09:04:39| |3day ban is nothing I'M FUCKING RANGEBANNED| +|08/01/2022 09:04:44| SNAIL +|08/01/2022 09:04:45| |FOLLOW MY TRACERS OOOOAJ| +|08/01/2022 09:04:46| |CAN'T SEE SHIT| +|08/01/2022 09:04:47| /akfit/ +|08/01/2022 09:04:49| |>He's rangebanned| +|08/01/2022 09:04:51| |I dont care about my skin I want to see gupies | +|08/01/2022 09:04:52| |cute yukari| +|08/01/2022 09:04:54| |MIHO HAS SHIT EYES| +|08/01/2022 09:04:54| |what were you banned for anon| +|08/01/2022 09:04:56| |CUTE EARS| +|08/01/2022 09:04:58| |Who needs sleep when you got muscles?| +|08/01/2022 09:04:59| |/k/ is fat as fuck though| +|08/01/2022 09:05:01| |Reset your router| +|08/01/2022 09:05:02| 前進 +|08/01/2022 09:05:03| ZENSHIN +|08/01/2022 09:05:05| |akebi paizuri...| +|08/01/2022 09:05:05| |>follow my tracers FUCK YOU Captain America| +|08/01/2022 09:05:06| |really though, I like how Chihatans plan to take out the PZIV is exactly what Continuation does| +|08/01/2022 09:05:07| |should of unlocked night vision | +|08/01/2022 09:05:08| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:05:09| |machine gun ASMR| +|08/01/2022 09:05:11| |WHAT'S THE RANGE ON YOUR WEAPON SOLDIER?| +|08/01/2022 09:05:13| |mako is just tuned for yasen| +|08/01/2022 09:05:20| BANZAI +|08/01/2022 09:05:20| |MY EYES| +|08/01/2022 09:05:20| |MY EYES| +|08/01/2022 09:05:22| flare! +|08/01/2022 09:05:23| |I was shit-talking CSW fags by posting fat people getting hit by cars| +|08/01/2022 09:05:23| F:ARE +|08/01/2022 09:05:24| |Book ends the episode really well| +|08/01/2022 09:05:24| |AHHH LIGHTMODE SCREENSHOT| +|08/01/2022 09:05:24| |miho tired of your shit| +|08/01/2022 09:05:26| |DUMB BLIND MIHO| +|08/01/2022 09:05:26| AMBUSH +|08/01/2022 09:05:26| |THE FACE| +|08/01/2022 09:05:26| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\o/ \o/ \o/ | +|08/01/2022 09:05:26| MEGAAAAAAA +|08/01/2022 09:05:27| |SOLAR FLARE| +|08/01/2022 09:05:29| |LOOK AT THE FLARE MIHO| +|08/01/2022 09:05:29| |TENNO HEIKA BANZAAAAAAAI| +|08/01/2022 09:05:30| FLARE +|08/01/2022 09:05:30| |CUM THE FLARE GUN| +|08/01/2022 09:05:30| AAAAAAAAAAAAAAAAAAAAAAIIIEEEEE +|08/01/2022 09:05:30| |THE FACE| +|08/01/2022 09:05:33| OST +|08/01/2022 09:05:35| BANZAI +|08/01/2022 09:05:35| |retina burned| +|08/01/2022 09:05:38| |BAKAS IN THE TREES BAKAS IN THE TREES| +|08/01/2022 09:05:40| |BANZAI | +|08/01/2022 09:05:46| |welp there goes my night vision| +|08/01/2022 09:05:47| |HOLY FUCK| +|08/01/2022 09:05:47| |BAKAS EVERYWHERE| +|08/01/2022 09:05:48| |FAST NIPS| +|08/01/2022 09:05:49| BOOM +|08/01/2022 09:05:50| |>when the trees start speaking baka| +|08/01/2022 09:05:50| |think of all the worthless kaoalas they're rolling over| +|08/01/2022 09:05:51| |the trees are speaking japanese....| +|08/01/2022 09:05:53| |Wow the flares can deafen you as well| +|08/01/2022 09:05:54| |it's over ooraribros...| +|08/01/2022 09:05:56| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:05:58| |Cod World of War | +|08/01/2022 09:06:03| |I CAN'T SEE SHIT CAPTAIN| +|08/01/2022 09:06:07| |WE NEED TO BURN DOWN THE JUNGLE| +|08/01/2022 09:06:09| |Stop looking at the flares| +|08/01/2022 09:06:10| |MOMO LED THE TEAM TO DEFEAT!| +|08/01/2022 09:06:10| |KEEP LOOKING AT THE FLARE| +|08/01/2022 09:06:14| |Bring out the napalm| +|08/01/2022 09:06:16| |STOP SENDING LIGHTMODE SCREENSHOTS NISHI| +|08/01/2022 09:06:17| |AGENT ORANGE| +|08/01/2022 09:06:18| |NAPALM NAPALM| +|08/01/2022 09:06:20| |Oarai got too cocky this time | +|08/01/2022 09:06:20| |which star wars movie was this| +|08/01/2022 09:06:24| |Saunders would've napalmed the whole course| +|08/01/2022 09:06:25| |KILL IT WITH FIRE| +|08/01/2022 09:06:28| |just close your eyes when flare??/???///???/?| +|08/01/2022 09:06:28| |I WANT THAT TREELINE BOMBED| +|08/01/2022 09:06:35| |DIDI MAO DIDI MAO| +|08/01/2022 09:06:35| |what was miho think bros?| +|08/01/2022 09:06:36| |Rogue One| +|08/01/2022 09:06:37| |episode 3| +|08/01/2022 09:06:37| |Chihatan Strikes Back!| +|08/01/2022 09:06:38| |Miho separated what'll happen!| +|08/01/2022 09:06:38| |Too bad they don't have flamethrowers | +|08/01/2022 09:06:38| |empire strikes back| +|08/01/2022 09:06:41| |Use agent orange to clear the jungle| +|08/01/2022 09:06:41| |CALL BROKEN ARROW| +|08/01/2022 09:06:42| |I love the smell of totsugeki in the morning| +|08/01/2022 09:06:42| |PRESS O TO APPLY A HEALTHY DOSAGE OF AGENT ORANGE TO THE JUNGLE| +|08/01/2022 09:06:46| bonk +|08/01/2022 09:06:47| * +|08/01/2022 09:06:50| |get outta the way bitch| +|08/01/2022 09:06:53| |Should have bought more flares than Chihatan. Then they can't outflare you| +|08/01/2022 09:06:54| |ass too fat knocked them over| +|08/01/2022 09:06:55| |ooarai dont surf...| +|08/01/2022 09:06:55| |the kamis are immortal as fuck| +|08/01/2022 09:06:58| |WE GOT PLANES STACKED UP EVERY 500 FEET!| +|08/01/2022 09:07:08| |they aren't called kamis for nothing| +|08/01/2022 09:07:13| |NOT THE PINCERINHO| +|08/01/2022 09:07:17| BONK +|08/01/2022 09:07:20| |\o/ \o/ TENNO HEIKA BANZAI \o/ \o/| +|08/01/2022 09:07:21| |Holy shit that's the drift Chihatan did| +|08/01/2022 09:07:23| |Hippo butt too big. Boat goes back into water| +|08/01/2022 09:07:23| |Holy shit amazing animation| +|08/01/2022 09:07:25| |NOOOOOOOOOOOO NOT THE HECKING PINCERINOOOOOOOOOO| +|08/01/2022 09:07:26| NAGURAAAAA +|08/01/2022 09:07:36| |IS THIS THE POWER OF UNREAL ENGINE| +|08/01/2022 09:07:37| |>ship tanks| +|08/01/2022 09:07:39| |>checking FUCK OFF| +|08/01/2022 09:07:41| |Cutest chihatan girl| +|08/01/2022 09:07:44| |If they do drive-bys this close, just hit them with a stick| +|08/01/2022 09:07:46| DECAPITATION +|08/01/2022 09:07:47| |>hecking FUCK OFF| +|08/01/2022 09:07:48| CALLBACK +|08/01/2022 09:07:48| |utter bullshit| +|08/01/2022 09:07:48| |nice boat| +|08/01/2022 09:07:49| |SENSHADO IS SAFE| +|08/01/2022 09:07:49| SASUGA +|08/01/2022 09:07:54| |nice boat| +|08/01/2022 09:07:54| |THAT GUNNER IS DEAD| +|08/01/2022 09:07:55| |TANK MELEE| +|08/01/2022 09:07:55| |when are they installing that mirror| +|08/01/2022 09:07:58| |but checking can fuck off too| +|08/01/2022 09:07:59| |She still hasn't bought a slide under mirror| +|08/01/2022 09:07:59| bakas +|08/01/2022 09:08:02| |Mako a murderer| +|08/01/2022 09:08:03| |MAKO DRIVE ME CLOSER I WANNA HIT THEM WITH MY SWRD| +|08/01/2022 09:08:05| NANI +|08/01/2022 09:08:05| |Just flare their tanks if they driveby that close| +|08/01/2022 09:08:06| |I can't believe they drowned| +|08/01/2022 09:08:24| STOMPED +|08/01/2022 09:08:29| |as long as all the crew didn't drown its still k| +|08/01/2022 09:08:30| |PUPPET COMMANDER| +|08/01/2022 09:08:33| |TOTSUGEKIS HAVE FUCKING GORILLA STRENGTH WTF| +|08/01/2022 09:08:34| |How many deaths have there been in the history of tankery?| +|08/01/2022 09:08:40| 0 +|08/01/2022 09:08:43| 0 +|08/01/2022 09:08:43| cute +|08/01/2022 09:08:44| |Everyone has gorilla strength| +|08/01/2022 09:08:44| |cool pontoon bridge| +|08/01/2022 09:08:44| |Volleyball club ressurection is nearly here bros| +|08/01/2022 09:08:45| |0, tankery is safe| +|08/01/2022 09:08:47| STRONG +|08/01/2022 09:08:48| |strong lolis| +|08/01/2022 09:08:48| |cute dorks| +|08/01/2022 09:08:49| |zero (read zero)| +|08/01/2022 09:08:50| |How many people drowned in shallow water?| +|08/01/2022 09:08:50| STRONK +|08/01/2022 09:08:52| |it's perfectly safe| +|08/01/2022 09:08:52| |carbon coated lungs| +|08/01/2022 09:08:52| |love this scene| +|08/01/2022 09:08:53| CARBON +|08/01/2022 09:08:54| |They can beat up all of /a/| +|08/01/2022 09:08:55| bruh +|08/01/2022 09:08:55| |strong spotters| +|08/01/2022 09:08:56| UKETAMAWARASIMASHITA +|08/01/2022 09:08:57| |LOLI STRONK| +|08/01/2022 09:08:57| |HOLY SHIT| +|08/01/2022 09:08:58| dyel +|08/01/2022 09:08:59| |retard strength| +|08/01/2022 09:09:03| |THEY'RE NOT EVEN LOADERS| +|08/01/2022 09:09:03| |SUPERIOR JAPANESE ENGINEERING| +|08/01/2022 09:09:05| |CABRON COATING OP| +|08/01/2022 09:09:06| |oh boy another bridge| +|08/01/2022 09:09:07| |i WISH THEY'D BEAT ME UP| +|08/01/2022 09:09:08| |LOLI STRENGTH | +|08/01/2022 09:09:12| |Instead of going after the flag tank, they go after the other tanks| +|08/01/2022 09:09:15| |armorplot coating| +|08/01/2022 09:09:16| |Separated once again!| +|08/01/2022 09:09:16| |>a bridge| +|08/01/2022 09:09:18| rip +|08/01/2022 09:09:18| |FUCK BRIDGES| +|08/01/2022 09:09:19| |LETS IGNORE THE ISOLATED FLAG TANK| +|08/01/2022 09:09:21| |bridges are meant to be destroyed| +|08/01/2022 09:09:24| ariya +|08/01/2022 09:09:29| AAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:09:31| |flag just diappears| +|08/01/2022 09:09:35| |They knew to not always totsugeki| +|08/01/2022 09:09:37| |Bridges too strong. Not toppled yet| +|08/01/2022 09:09:39| |KINO DUEL| +|08/01/2022 09:09:42| |THE TREES ARE SPEAKING VOLLEYBALL| +|08/01/2022 09:09:44| |LET'S SPLIT UP GANG| +|08/01/2022 09:09:47| |Here comes the Kino| +|08/01/2022 09:09:49| |The suns rising....| +|08/01/2022 09:09:52| |But they forgot to stop the totsugeki in their heart | +|08/01/2022 09:09:55| |what is this 480p bruh | +|08/01/2022 09:10:00| |UOHH CUNNY CREW| +|08/01/2022 09:10:13| |BAKKU ATAKKU| +|08/01/2022 09:10:14| |teleports behind you| +|08/01/2022 09:10:15| |BAKKU ATTAKU| +|08/01/2022 09:10:18| |KINO FIGHT| +|08/01/2022 09:10:19| |Lover-san ain't giving you peace tonight| +|08/01/2022 09:10:19| |TAEKO CUTE| +|08/01/2022 09:10:19| KINO +|08/01/2022 09:10:20| |LOLI DUEL| +|08/01/2022 09:10:21| |THEYRE PENETRATING OUR REAR FLANK| +|08/01/2022 09:10:21| GUTS! +|08/01/2022 09:10:22| |FUKU CHAN| +|08/01/2022 09:10:22| |IN THE END I REALIZED| +|08/01/2022 09:10:23| |MASTER AND APPRENTICE DUEL| +|08/01/2022 09:10:26| |KINO BEGINS| +|08/01/2022 09:10:28| |Here we go on the Kino| +|08/01/2022 09:10:30| |will ducks get the voley club back in the end?| +|08/01/2022 09:10:33| |STANDING HERE| +|08/01/2022 09:10:35| |penetrating rear flank...| +|08/01/2022 09:10:37| |ITS KINO TIMMMMMMMMMMMMMMMMMMMMME| +|08/01/2022 09:10:37| cute +|08/01/2022 09:10:39| |I REALIZE| +|08/01/2022 09:10:45| yush! +|08/01/2022 09:10:45| |Hasegawa a cute| +|08/01/2022 09:10:46| |YOU WERE JUST LIKE ME| +|08/01/2022 09:10:48| mawaru +|08/01/2022 09:10:51| |YOY WERE JUST LIKE ME| +|08/01/2022 09:10:52| UOOAH +|08/01/2022 09:10:52| KINO +|08/01/2022 09:10:53| |TRYING TO CHANGE HISTORY| +|08/01/2022 09:10:54| |TRYING TO MAKE HISTORY| +|08/01/2022 09:10:59| USSHI +|08/01/2022 09:11:05| |BUT WHO'S TO JUDGE| +|08/01/2022 09:11:07| |BUT WHO IS TO JUDGE| +|08/01/2022 09:11:13| |THE RIGHT FROM WRONG| +|08/01/2022 09:11:15| |fucking portable bridging tanks| +|08/01/2022 09:11:15| |THE RIGHT FROM WRONG| +|08/01/2022 09:11:16| |cute arms| +|08/01/2022 09:11:17| |kami tier| +|08/01/2022 09:11:19| TTE +|08/01/2022 09:11:23| TEEEEEEEEEEEEEEEEEE +|08/01/2022 09:11:25| |MOU IKKAI| +|08/01/2022 09:11:25| |>This cgi| +|08/01/2022 09:11:29| |Should have brought a volleyball. At least you can spike their tank| +|08/01/2022 09:11:30| UTEEEEEEE +|08/01/2022 09:11:34| |bakas with tunnel vision brought down by their hubris| +|08/01/2022 09:11:35| |kill the fucking slanteyes| +|08/01/2022 09:11:38| |I have no idea what's happening| +|08/01/2022 09:11:41| 停止 +|08/01/2022 09:11:45| |THEY'RE IN THE TREES| +|08/01/2022 09:11:45| |they're all slanteyes| +|08/01/2022 09:11:47| |ITTEN SHOJUN| +|08/01/2022 09:11:48| |ME EITHER| +|08/01/2022 09:11:49| rip +|08/01/2022 09:11:52| rekt +|08/01/2022 09:11:52| |RIP STUG| +|08/01/2022 09:11:55| |MOU IKKAI| +|08/01/2022 09:11:55| |STUG'S DOWN| +|08/01/2022 09:11:55| |Ooarai is getting fucked| +|08/01/2022 09:11:57| |STUG ;_;| +|08/01/2022 09:12:00| NYAAA +|08/01/2022 09:12:01| NYAA +|08/01/2022 09:12:02| NYA +|08/01/2022 09:12:02| |stug bros...| +|08/01/2022 09:12:04| |theres something sexy about the term for focus fire| +|08/01/2022 09:12:04| NYAAA +|08/01/2022 09:12:04| |2 SHELLS| +|08/01/2022 09:12:05| NYAA +|08/01/2022 09:12:05| NYAA +|08/01/2022 09:12:05| |STRONK NEET| +|08/01/2022 09:12:07| |STUG DOWN| +|08/01/2022 09:12:07| |stug life stug death| +|08/01/2022 09:12:07| |Reminder the entire Stug team are my wives | +|08/01/2022 09:12:07| |OH NO NO NO NO NO| +|08/01/2022 09:12:07| NYAA +|08/01/2022 09:12:08| nyaa +|08/01/2022 09:12:09| |ROID RAGE| +|08/01/2022 09:12:09| nyaaaaaaaaaaaaaaaaaaa\ +|08/01/2022 09:12:11| |how the fuck are none of them dead yet| +|08/01/2022 09:12:13| |duelwielding those 40mm shells holy fuck| +|08/01/2022 09:12:13| |Ooaraibros....I think this is the end.| +|08/01/2022 09:12:14| |WASH AWAY THE ANGER| +|08/01/2022 09:12:14| |NOT LIKE THIS OORAICHADS| +|08/01/2022 09:12:16| |no bridge anymore| +|08/01/2022 09:12:17| |doublefisting shells like nothing| +|08/01/2022 09:12:17| negh +|08/01/2022 09:12:18| |STRONG MAKO| +|08/01/2022 09:12:19| |BITCH YOU THOUGHT| +|08/01/2022 09:12:20| |Oarai got too cocky this time| +|08/01/2022 09:12:20| |FUCK BRIDGES| +|08/01/2022 09:12:22| Nyaa +|08/01/2022 09:12:23| |FULL STOP| +|08/01/2022 09:12:25| |mako brake| +|08/01/2022 09:12:30| Ooaraibros +|08/01/2022 09:12:31| RUSE +|08/01/2022 09:12:31| OOARAIBROS.... +|08/01/2022 09:12:38| BAITED +|08/01/2022 09:12:40| NANI?! +|08/01/2022 09:12:40| |WHO COULD HAVE SEEN THAT COMING| +|08/01/2022 09:12:40| RUSEMASTER +|08/01/2022 09:12:40| GOTTEM +|08/01/2022 09:12:40| |panzer doko| +|08/01/2022 09:12:42| |I'VE BEEN RUSED!| +|08/01/2022 09:12:43| |better invest in chihatancoin| +|08/01/2022 09:12:43| |they fall for this lol| +|08/01/2022 09:12:46| ??????????? +|08/01/2022 09:12:49| BTFO +|08/01/2022 09:12:52| wtf +|08/01/2022 09:12:53| |bamboozled again| +|08/01/2022 09:12:54| |LEAVE IT TO TJHE ANGLER FISH TO BAIT| +|08/01/2022 09:12:58| |KINO KINO KINO| +|08/01/2022 09:13:03| |Most of those shots should have been knock outs| +|08/01/2022 09:13:04| |KINO IS BACK ON THE MENU| +|08/01/2022 09:13:04| TOSS +|08/01/2022 09:13:06| out-heckin-skilled +|08/01/2022 09:13:06| |>no GF crossover yet dorkbros what now??????| +|08/01/2022 09:13:07| |kino battle| +|08/01/2022 09:13:08| |KINO FIGHT| +|08/01/2022 09:13:08| ATTACK +|08/01/2022 09:13:08| |VIOLENCE BREEDS VIOLENCE| +|08/01/2022 09:13:13| |MAKO-CHAN BANZAI| +|08/01/2022 09:13:14| |akebi is so hot bros| +|08/01/2022 09:13:18| |That pz 4 could ragdoll all those MF| +|08/01/2022 09:13:20| kino +|08/01/2022 09:13:20| |BUT IN THE END IT HAS TO BE THIS WAY| +|08/01/2022 09:13:21| |IN THE END IT HAS TO BE THIS WAYYYYYY| +|08/01/2022 09:13:23| |IN THE END IT HAS TO BE THIS WAAAAAAAAAAAAAAAAAY| +|08/01/2022 09:13:26| |BUT IN THE END IT HAS TO BE THIS WAY| +|08/01/2022 09:13:29| |Kino sounds| +|08/01/2022 09:13:34| ORAORAORAORA +|08/01/2022 09:13:35| |>merely pretending| +|08/01/2022 09:13:36| |merely pretending| +|08/01/2022 09:13:36| |>MERELY PRETENDING| +|08/01/2022 09:13:37| ORAORAORAORA +|08/01/2022 09:13:38| |>only pretending to be retarded| +|08/01/2022 09:13:38| |MERELY PRETENDING| +|08/01/2022 09:13:41| |SO NA NO| +|08/01/2022 09:13:42| |holy shit| +|08/01/2022 09:13:43| |I CARVED MY OWN PATH| +|08/01/2022 09:13:45| |NOT RUSED| +|08/01/2022 09:13:45| |LIKE A BOOK| +|08/01/2022 09:13:47| ORYAAAA +|08/01/2022 09:13:49| |Can't outvolleyball the volleyball| +|08/01/2022 09:13:50| |loli tank stroonk| +|08/01/2022 09:13:51| jonks +|08/01/2022 09:13:52| |THAT WAS A KNOCK OUT FUCK YOU| +|08/01/2022 09:13:54| SASUGA +|08/01/2022 09:13:55| |YOU FOLLOWED YOUR WRATH| +|08/01/2022 09:13:55| |IM MY OWN MASTER NOW| +|08/01/2022 09:13:57| |FUCKING TANK| +|08/01/2022 09:13:59| wtf +|08/01/2022 09:14:00| |SHE'S NOT GOING DOWN| +|08/01/2022 09:14:01| |nice moves| +|08/01/2022 09:14:01| |HOW ARE THEY STILL IN THE GAME| +|08/01/2022 09:14:02| |literal garbage weapon| +|08/01/2022 09:14:02| |Carbon coating| +|08/01/2022 09:14:02| |THAT WAS A HIT STRAIGHT TO THE ENGINE BLOCK| +|08/01/2022 09:14:03| |FUCKING TANK UKEMI| +|08/01/2022 09:14:06| |GAS GAS GAAASSS| +|08/01/2022 09:14:07| |AHIRU SAKUSEN| +|08/01/2022 09:14:09| |THIS GAME IS FUCKING RIGGED| +|08/01/2022 09:14:09| |OPERATION DUCK| +|08/01/2022 09:14:13| |superior japanese tank steel| +|08/01/2022 09:14:14| |>tank does a 720~| +|08/01/2022 09:14:14| |SHE IS FUCKING INVINCIBLE| +|08/01/2022 09:14:14| |OPERATION: DUCK| +|08/01/2022 09:14:16| |This is some Looney Tunes tier physics | +|08/01/2022 09:14:19| |WHO THE FUCK NOWS WHAT PLAN THIS IS| +|08/01/2022 09:14:19| |Volleybros Fukuda is nothingm we can do this!| +|08/01/2022 09:14:21| |QUICK THINK LIKE YOU WERE DUMN| +|08/01/2022 09:14:21| |Oh no, she outvolleyball the volleyball| +|08/01/2022 09:14:21| |10000 folded nippon steel| +|08/01/2022 09:14:23| |OH MY REMOVABLE PLATING| +|08/01/2022 09:14:23| |BUT SHE'S USING A JAPANESE TANK | +|08/01/2022 09:14:24| |kami tier| +|08/01/2022 09:14:24| |SECOND LIFE| +|08/01/2022 09:14:26| |light tank, folden 10000 times| +|08/01/2022 09:14:27| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/\| +|08/01/2022 09:14:30| |>nippon carbon folded 8 gorillion times| +|08/01/2022 09:14:32| |ROID RAGE| +|08/01/2022 09:14:33| |SE NO| +|08/01/2022 09:14:33| BDASHU +|08/01/2022 09:14:34| |JUST THROW THE SHELLS AT THEM| +|08/01/2022 09:14:34| |TARD RAGE| +|08/01/2022 09:14:35| |acting like reactive armor or some shit| +|08/01/2022 09:14:36| ESC +|08/01/2022 09:14:37| |SE NO| +|08/01/2022 09:14:38| splash +|08/01/2022 09:14:39| |FUCKING NYAAAGERS -Nekonya| +|08/01/2022 09:14:41| GAMERS +|08/01/2022 09:14:43| |eskeepu botan| +|08/01/2022 09:14:44| F +|08/01/2022 09:14:46| F +|08/01/2022 09:14:47| |ringo outo| +|08/01/2022 09:14:48| GAMERBROS.... +|08/01/2022 09:14:49| /fit/bros..... +|08/01/2022 09:14:49| F +|08/01/2022 09:14:49| |NIPPON ARMOR FOLDED OVER 731 TIMES| +|08/01/2022 09:14:50| F +|08/01/2022 09:14:50| rekt +|08/01/2022 09:14:52| |these swimming tanks are fucking invinicible| +|08/01/2022 09:14:54| |gamers o7| +|08/01/2022 09:14:55| |OH MY REMOVABLE PLATING AGAIN| +|08/01/2022 09:14:57| |Gamers hate bugs| +|08/01/2022 09:14:58| ANDOU! +|08/01/2022 09:14:59| ooaraibros... +|08/01/2022 09:15:00| |>fit gamers BTFO| +|08/01/2022 09:15:01| F +|08/01/2022 09:15:02| goodnight +|08/01/2022 09:15:03| oyasumi +|08/01/2022 09:15:03| |CHIHATANBROS THIS IS OUR TIME| +|08/01/2022 09:15:04| UUUUUUUUUUUUUUUUOOOOOOOOOOOOOHHHHHHHHHHH +|08/01/2022 09:15:04| |SLEEPING SEX WITH MARIE| +|08/01/2022 09:15:05| OYASUMI +|08/01/2022 09:15:05| |oyasumi | +|08/01/2022 09:15:05| |THOSE SHOULD HAVE BEEN KNOCK OUTS| +|08/01/2022 09:15:05| oyasumi +|08/01/2022 09:15:07| |>industrial strength bed| +|08/01/2022 09:15:09| |GAMERS ARE THE MOST OPPRESSED GROUP| +|08/01/2022 09:15:09| |Ke-Ni too strong| +|08/01/2022 09:15:10| ;_;7 +|08/01/2022 09:15:10| |based sleeper| +|08/01/2022 09:15:12| lewd +|08/01/2022 09:15:13| |I want to be marie's bed| +|08/01/2022 09:15:14| |MARIE KNOWS WHERE THIS SHIT IS GOING| +|08/01/2022 09:15:15| |Ooraibros.... we had them cornered... how did we job?| +|08/01/2022 09:15:17| |GOD I WANT TO FUCK MAKO SO BAD| +|08/01/2022 09:15:17| |Marie abandoned us streambros...| +|08/01/2022 09:15:22| |Carbon Coated Bed| +|08/01/2022 09:15:22| |shhh marie is sleeping| +|08/01/2022 09:15:24| |blind fuck| +|08/01/2022 09:15:25| |Symbolism (ding)| +|08/01/2022 09:15:29| |Marie ain't watching at this point| +|08/01/2022 09:15:32| |DATO ANKOU! | +|08/01/2022 09:15:33| |>If we can hit that bullseye the rest of the dominoes will fall like a house of cards. Checkmate!| +|08/01/2022 09:15:34| |hype crew swap incoming| +|08/01/2022 09:15:34| BAITED +|08/01/2022 09:15:34| |DATO ANKOU| +|08/01/2022 09:15:37| |DEATH TO ANKOU| +|08/01/2022 09:15:37| |DATO ANKOU!| +|08/01/2022 09:15:38| DATOU +|08/01/2022 09:15:39| |TL note: 打倒鮟鱇 = Totsugeki| +|08/01/2022 09:15:39| |DATOU ANKOU!| +|08/01/2022 09:15:39| |datto anko| +|08/01/2022 09:15:39| |DATO ANKOU| +|08/01/2022 09:15:39| |MAKO SEX| +|08/01/2022 09:15:39| HUBRIS +|08/01/2022 09:15:40| BAKAS +|08/01/2022 09:15:40| 脱党鮟鱇! +|08/01/2022 09:15:41| |DATO ANJOU| +|08/01/2022 09:15:41| |DATO ANKOU| +|08/01/2022 09:15:41| |Marie is literally me| +|08/01/2022 09:15:43| |Lol fucking retards, completely forgetting the mission| +|08/01/2022 09:15:45| |DEATH TO ANKOU| +|08/01/2022 09:15:46| AMAI +|08/01/2022 09:15:46| |I know lets act as bait -Miho again| +|08/01/2022 09:15:50| |DATO ANKOU! | +|08/01/2022 09:15:51| |SEXO ANKOU| +|08/01/2022 09:15:51| 脱党鮟鱇 +|08/01/2022 09:15:51| |Anglerfish lantern bait| +|08/01/2022 09:15:53| |kyute karina| +|08/01/2022 09:15:55| |>fuck focusing on the flag tank| +|08/01/2022 09:15:56| |too thicc| +|08/01/2022 09:15:58| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:15:58| |sono tori| +|08/01/2022 09:16:01| SONATORIIII +|08/01/2022 09:16:01| |SEX THE ANKOUS| +|08/01/2022 09:16:03| |Shouldn't their guns still be able to pen the side of a Lee at 100 meters?| +|08/01/2022 09:16:03| |THE MOMENT IT FALLS APART| +|08/01/2022 09:16:06| |WHAT'S A FLAG TANK?| +|08/01/2022 09:16:07| 打倒アンコウ +|08/01/2022 09:16:09| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:16:16| |4D CHESS RABBIT| +|08/01/2022 09:16:16| |smaat usagi| +|08/01/2022 09:16:17| |HIGH IQ AZUSA| +|08/01/2022 09:16:19| |AZUSA TOO SMART| +|08/01/2022 09:16:21| TTE +|08/01/2022 09:16:22| |Who needs the flag tank if you get the strategist? | +|08/01/2022 09:16:22| |MATRIX LEE| +|08/01/2022 09:16:22| DEJAVU +|08/01/2022 09:16:23| |HOLY BASED| +|08/01/2022 09:16:23| |AZUSA <3| +|08/01/2022 09:16:24| |AZUSA LOVE| +|08/01/2022 09:16:25| |BTFO X 2| +|08/01/2022 09:16:27| HOLY +|08/01/2022 09:16:28| |the small details on the tanks make me coom| +|08/01/2022 09:16:28| |AZUSA YOUR FUTURE COMMANDER| +|08/01/2022 09:16:29| |HIGH IQ| +|08/01/2022 09:16:29| |How much gas do these tanks have?| +|08/01/2022 09:16:29| |GET FUCKED| +|08/01/2022 09:16:30| |DOUBLE KILL| +|08/01/2022 09:16:30| |azusa future tank commander| +|08/01/2022 09:16:31| |OH MY REMOVABLE PLATING| +|08/01/2022 09:16:32| madamada +|08/01/2022 09:16:32| |THE 37mm WAS SLACKING| +|08/01/2022 09:16:33| ENTER +|08/01/2022 09:16:34| |DAMN AZUSA| +|08/01/2022 09:16:34| |Learning from when Miho tricked the Crusaders| +|08/01/2022 09:16:38| |duck duel| +|08/01/2022 09:16:38| BUNNIES +|08/01/2022 09:16:38| ahiru! +|08/01/2022 09:16:40| DUCK +|08/01/2022 09:16:40| |DOUBLE KILL| +|08/01/2022 09:16:41| |THEY'RE BACK| +|08/01/2022 09:16:41| |A FUCKING DUCK| +|08/01/2022 09:16:43| OH +|08/01/2022 09:16:43| DUCK +|08/01/2022 09:16:45| |THEY KEPT THE DUCK BALLOONS| +|08/01/2022 09:16:47| KINOOOOOOOOOOOOOO +|08/01/2022 09:16:47| AHIRU! +|08/01/2022 09:16:48| duckmind +|08/01/2022 09:16:48| |DUCK ON DUCK RAPE| +|08/01/2022 09:16:48| |they use green tech, no gas| +|08/01/2022 09:16:49| |the mighty fucks| +|08/01/2022 09:16:49| |DUCK OUT OF NOWHERE| +|08/01/2022 09:16:49| |Imagine if Asuza was in an actually good tank| +|08/01/2022 09:16:49| |AZUSA "FINN REMOVER" SAWA| +|08/01/2022 09:16:49| |KINO KINO KINO| +|08/01/2022 09:16:50| |SUPREME CHAMPION| +|08/01/2022 09:16:50| |SPIDEMAN POINT MEME.JPG| +|08/01/2022 09:16:52| |DUCK BATTLE| +|08/01/2022 09:16:53| Quack +|08/01/2022 09:16:54| |when tf did they put this on| +|08/01/2022 09:16:59| |OH MY GAAAAA| +|08/01/2022 09:17:01| |wait how did they get the duck heads| +|08/01/2022 09:17:01| |MADA MADA| +|08/01/2022 09:17:01| trickd +|08/01/2022 09:17:02| |GET FUCKED| +|08/01/2022 09:17:02| RUSED +|08/01/2022 09:17:03| CLANG +|08/01/2022 09:17:03| ;_;7 +|08/01/2022 09:17:03| Volleybros... +|08/01/2022 09:17:04| |WE WON| +|08/01/2022 09:17:05| baited +|08/01/2022 09:17:05| |OH SHIT| +|08/01/2022 09:17:06| |out fucking played| +|08/01/2022 09:17:06| OUTFUCKINGSKILLED +|08/01/2022 09:17:06| |BUNNY CUNNY NOOOOOOOOO| +|08/01/2022 09:17:07| GGEZ +|08/01/2022 09:17:08| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:17:09| |WHY WOULD YOU NOT JUST STICK TO THE SIDE| +|08/01/2022 09:17:09| outplayed +|08/01/2022 09:17:09| baited... +|08/01/2022 09:17:09| O7 +|08/01/2022 09:17:11| OST +|08/01/2022 09:17:12| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/ \o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 09:17:12| |Is this it for Ooarai????| +|08/01/2022 09:17:12| QUACK +|08/01/2022 09:17:13| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:17:13| |akebi noooo| +|08/01/2022 09:17:14| o7 +|08/01/2022 09:17:14| |Azusa "Benis Slicer" Sawa| +|08/01/2022 09:17:15| |the student becomes the mastah| +|08/01/2022 09:17:15| |CHIHATANBROS WE'RE WINNING| +|08/01/2022 09:17:16| |DATO ANKOU! | +|08/01/2022 09:17:16| |DATO ANKOU| +|08/01/2022 09:17:16| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:17:17| |dato anko| +|08/01/2022 09:17:18| o7 +|08/01/2022 09:17:18| |OH NONONONNONNONO WE'RE GONNA LOSE OOARAIBROS| +|08/01/2022 09:17:19| |TL note: Datou Ankou = Totsugeki| +|08/01/2022 09:17:20| |DATOU ANKOU| +|08/01/2022 09:17:20| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:17:20| |DATO ANKOU| +|08/01/2022 09:17:22| |GUNGNIR DATTO?| +|08/01/2022 09:17:25| |BENIS :DDDDDD| +|08/01/2022 09:17:26| |BANZAI \O/ \O/| +|08/01/2022 09:17:27| |OORAICHADS IS THIS IS.....!?!?!| +|08/01/2022 09:17:27| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:17:28| DATTO +|08/01/2022 09:17:28| panzerbros... +|08/01/2022 09:17:35| |IF CH HA TAN LOSES I'M COMMITTING SUDOKU| +|08/01/2022 09:17:36| |ooaraibros what will we do????????????| +|08/01/2022 09:17:38| |ooaraibros btfo| +|08/01/2022 09:17:39| |ITS OVER FOR MOMO| +|08/01/2022 09:17:42| |MIHOFAGS ON SUICIDE WATCH| +|08/01/2022 09:17:43| |Can't duck the duck, but the duck can outvolleyball you| +|08/01/2022 09:17:47| |OH GOD THIS IS JUST LIKE PLATOON| +|08/01/2022 09:17:48| BOOM +|08/01/2022 09:17:51| |ever notice they just used a 2JZ for the engine sounds| +|08/01/2022 09:17:52| DED +|08/01/2022 09:17:53| |MIHO CARRING LIKE USUAL| +|08/01/2022 09:17:54| |fuck the duck| +|08/01/2022 09:17:57| |Ooraibros there's no way out... It's over| +|08/01/2022 09:17:58| |HOSOMI LOST HER CURLS| +|08/01/2022 09:18:00| |Kino take down| +|08/01/2022 09:18:04| TOTSUGEKI! +|08/01/2022 09:18:04| |OOARAIBROS WE GOT TOO COCKY.....| +|08/01/2022 09:18:05| |carrying the team| +|08/01/2022 09:18:05| |The Type-89 fears the Panzer| +|08/01/2022 09:18:08| TOTSUGEKI +|08/01/2022 09:18:10| TOTSUGEKI +|08/01/2022 09:18:11| TOTSUGEKI +|08/01/2022 09:18:12| |Haha Ooaraicucks, this is it!| +|08/01/2022 09:18:13| KINOOOOOO +|08/01/2022 09:18:14| |MIHO WILL CARRY| +|08/01/2022 09:18:16| TOTSUGEKI +|08/01/2022 09:18:17| >DBZposting +|08/01/2022 09:18:17| TOTSUGEKI +|08/01/2022 09:18:18| |PLEASE REMOVE MY TOTSUGEKI LIMITERS| +|08/01/2022 09:18:19| TOTSUGEKI +|08/01/2022 09:18:20| |Now thats the chihatan I know| +|08/01/2022 09:18:20| TOTSUGEKI +|08/01/2022 09:18:20| |death flags nooooo| +|08/01/2022 09:18:21| |CUTE EARS| +|08/01/2022 09:18:21| |The German Tanks fear the Nips| +|08/01/2022 09:18:22| |INVEST IN OOARAICOIN| +|08/01/2022 09:18:22| |DATTOU ANKOU| +|08/01/2022 09:18:23| |DATOU ANKOU| +|08/01/2022 09:18:23| |dato ankou| +|08/01/2022 09:18:23| KINOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:18:23| |DATO ANKOU! | +|08/01/2022 09:18:24| |TL note: Datou Ankou = Totsugeki| +|08/01/2022 09:18:24| |Should have just wacked them with the muzzle| +|08/01/2022 09:18:25| |DATO ANKOU| +|08/01/2022 09:18:26| O7 +|08/01/2022 09:18:26| |TUNNEL VISION| +|08/01/2022 09:18:27| |NIPPON BROS WE WILL WIN!!!| +|08/01/2022 09:18:27| AMAI +|08/01/2022 09:18:28| TOTSUGEKI +|08/01/2022 09:18:28| |DATOU ANKOU| +|08/01/2022 09:18:28| |DATO ANKOU| +|08/01/2022 09:18:29| |It's time for Chihatan to shine! TOTSUGEKI!| +|08/01/2022 09:18:29| |DATO ANKOU| +|08/01/2022 09:18:30| |DATO MANKO| +|08/01/2022 09:18:30| |fuck you ankou| +|08/01/2022 09:18:31| |MIHO CLUTCH??????| +|08/01/2022 09:18:32| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:18:34| |If these idiots wont charge then who will?| +|08/01/2022 09:18:35| |MAKO TIME| +|08/01/2022 09:18:35| 打倒アンコウ +|08/01/2022 09:18:35| |DATOU ANKO| +|08/01/2022 09:18:39| TOTSUGEKI +|08/01/2022 09:18:42| |WE ARE ON THE VERGE OF WINNING, JAP BROS| +|08/01/2022 09:18:43| |Fight to totsugeki, totsugeki to fight| +|08/01/2022 09:18:44| |everyone forgot about the flag tank| +|08/01/2022 09:18:47| |>thinking you can get thru plot armor| +|08/01/2022 09:18:48| |German 75 can't penetrate jap steel| +|08/01/2022 09:18:50| |kino swap time?| +|08/01/2022 09:18:51| |BUT THEYRE BOTH JAPANESE| +|08/01/2022 09:18:52| |MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY MIHO CARRY | +|08/01/2022 09:18:54| |INVEST IN CHIHATAN NOW| +|08/01/2022 09:18:57| |>can't see shit| +|08/01/2022 09:18:57| Forehead-chan +|08/01/2022 09:18:58| |\o/ DATO ANKO \o/| +|08/01/2022 09:18:58| |Tamada's charge is steiner's assualt| +|08/01/2022 09:19:00| |THERE IT IS| +|08/01/2022 09:19:00| |dude i cant see lmao| +|08/01/2022 09:19:00| |FIRING TRACER INDESPERATION| +|08/01/2022 09:19:01| SELLSELLSELL +|08/01/2022 09:19:02| |CAN'T SEE SHIT| +|08/01/2022 09:19:03| |>all those edits in the thread| +|08/01/2022 09:19:04| |MAKE THE EMPEROR PROUD| +|08/01/2022 09:19:04| |OH MY ROLE CHANGE| +|08/01/2022 09:19:04| |MAKO CARRY| +|08/01/2022 09:19:07| |fuck, I'm starting to get really sleepy| +|08/01/2022 09:19:09| |Miho blind as a bat| +|08/01/2022 09:19:11| |1000 TIME FOLD CARBON COATING| +|08/01/2022 09:19:12| |Just put 500000 on chihatan. Theres no way they lose this.| +|08/01/2022 09:19:13| |tank fuel can't melt plot steel| +|08/01/2022 09:19:13| |Greatest moment in das Finale.| +|08/01/2022 09:19:15| |MAKO MVP| +|08/01/2022 09:19:16| |shit i need to go play dnd| +|08/01/2022 09:19:16| |FLUFFY IN THE DRIVERS SEAT| +|08/01/2022 09:19:17| |INCOMING KINO| +|08/01/2022 09:19:19| |But one of them is Jungle Japanese if they're both Japanese| +|08/01/2022 09:19:19| |We can do this Chihabros!| +|08/01/2022 09:19:20| |DASU WARU AIN BEFERU| +|08/01/2022 09:19:20| |MAKO SEX MAKO SEX MAKO SEX| +|08/01/2022 09:19:21| |FLUFF HAPPY| +|08/01/2022 09:19:22| |cute fluff| +|08/01/2022 09:19:22| |yukari upskirt| +|08/01/2022 09:19:22| kitaaaaaaaaaaaa +|08/01/2022 09:19:22| |YUKARI DRIVING| +|08/01/2022 09:19:22| |I LOVE HER SO MUCH| +|08/01/2022 09:19:23| |carbon balance| +|08/01/2022 09:19:23| |YUKARI IN THE DRIVING SEAT| +|08/01/2022 09:19:24| |it's time| +|08/01/2022 09:19:24| |Fluff life| +|08/01/2022 09:19:24| ??????????????? +|08/01/2022 09:19:25| cute +|08/01/2022 09:19:25| |FLOOF IN THE DRIVER SEAT| +|08/01/2022 09:19:26| |They're desperate!| +|08/01/2022 09:19:26| |YUAKRI DRIVER| +|08/01/2022 09:19:26| |CUTE FLUFF| +|08/01/2022 09:19:27| |FLOOF DRIVER| +|08/01/2022 09:19:28| YES +|08/01/2022 09:19:30| |gamer vision| +|08/01/2022 09:19:33| HAWK +|08/01/2022 09:19:34| finally +|08/01/2022 09:19:35| |>Ablative arMakor| +|08/01/2022 09:19:36| |LET THERE BE LIGHT| +|08/01/2022 09:19:36| |that cute sound when she got behind the wheel| +|08/01/2022 09:19:37| |What do you elf eyes see| +|08/01/2022 09:19:42| KINO +|08/01/2022 09:19:44| |So, handheld gear is allowed?| +|08/01/2022 09:19:49| |TANK FUEL CAN'T MELT CARBON COATING| +|08/01/2022 09:19:50| |gimme the headset blind bitch| +|08/01/2022 09:19:52| KINOO +|08/01/2022 09:19:53| hai +|08/01/2022 09:19:53| TTE +|08/01/2022 09:19:54| |smmart role change| +|08/01/2022 09:19:56| |TENNO HEIKA BANZAI| +|08/01/2022 09:19:58| YUKARI +|08/01/2022 09:19:58| |yukari is so happy and cute| +|08/01/2022 09:20:00| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:20:03| |modul;ar crew op| +|08/01/2022 09:20:03| |is there anything yukari can't do?| +|08/01/2022 09:20:04| |TIPPY TOES| +|08/01/2022 09:20:06| |KINO SCENE!!!| +|08/01/2022 09:20:06| AUTISM +|08/01/2022 09:20:08| KINOOOOOOOOOOOOOOOO +|08/01/2022 09:20:10| |CUTE LOAD| +|08/01/2022 09:20:12| |What tdo your elf eyes see Mako san| +|08/01/2022 09:20:12| |LET YUKARI DRIVE ALWAYS| +|08/01/2022 09:20:15| |yukari can't become real| +|08/01/2022 09:20:21| |THE FLUFFS OF HAZZARD| +|08/01/2022 09:20:22| |GOD MAKO IS SO FUCKING PERFECT| +|08/01/2022 09:20:22| YAHOOOOOOOOOOOOOO +|08/01/2022 09:20:22| |Mako should draw on that etch sketch as a real spotter| +|08/01/2022 09:20:22| |THEY'RE TAKING THE HOBBITS TO ISENGARD| +|08/01/2022 09:20:23| |seeing them switch positions is nice. | +|08/01/2022 09:20:24| |SAIKOU DAZE| +|08/01/2022 09:20:25| |HAI HAAAAAI| +|08/01/2022 09:20:27| SAIKOU +|08/01/2022 09:20:27| YAHHHOOO +|08/01/2022 09:20:27| |YAHOOOOO SAIKOUDAZEEEE!!!| +|08/01/2022 09:20:27| |SAIKO DAZEEEEE| +|08/01/2022 09:20:27| |YAHOO SAIKOU DAZE| +|08/01/2022 09:20:27| |LEFT 4 DON'T CUT| +|08/01/2022 09:20:27| |SAIKOU DAZE| +|08/01/2022 09:20:28| |GAS GAS GAS| +|08/01/2022 09:20:29| YAHOO!!!! +|08/01/2022 09:20:29| YAHOOO +|08/01/2022 09:20:29| |SEIKO DAZE| +|08/01/2022 09:20:30| YAHOO +|08/01/2022 09:20:30| |SAIKOU DAZE| +|08/01/2022 09:20:31| YAHOOOOOOOOOOOOOOOO +|08/01/2022 09:20:31| |YAHOOOOOOOO SAIKOU DAZE| +|08/01/2022 09:20:31| |YUKARI REVING IT OUT| +|08/01/2022 09:20:31| |SAIKO DAZE| +|08/01/2022 09:20:32| |LETS GOOOO| +|08/01/2022 09:20:33| YAHOO +|08/01/2022 09:20:33| YAHOOOOOOOOOOOO +|08/01/2022 09:20:34| |SAIKYO DAZE| +|08/01/2022 09:20:34| |i find this hard to believe| +|08/01/2022 09:20:34| |based as fuck position swaps| +|08/01/2022 09:20:34| HOW +|08/01/2022 09:20:34| |YAHOOOOOO SAIKO DAZE| +|08/01/2022 09:20:35| SAIKOU +|08/01/2022 09:20:35| YAHOOOOOOO +|08/01/2022 09:20:39| RIP +|08/01/2022 09:20:40| uoh +|08/01/2022 09:20:41| |DUKES OF HAZZARD| +|08/01/2022 09:20:42| |MW50 is one hell of a drug| +|08/01/2022 09:20:42| |AND THEYLL GO SWIMMINg COIMPLENENTS OF ME| +|08/01/2022 09:20:42| ded +|08/01/2022 09:20:42| |YUKARI IS GONNA REV THE ENGINE OUT| +|08/01/2022 09:20:43| SHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHITSHIT +|08/01/2022 09:20:44| uoh +|08/01/2022 09:20:46| REKT +|08/01/2022 09:20:46| |THE GENERAL FLUFF| +|08/01/2022 09:20:47| |she ded| +|08/01/2022 09:20:48| |tanks can jump| +|08/01/2022 09:20:49| |\o/ \o/ \o/ TENNO HEIKA BANZAI \o/ \o/ \o/| +|08/01/2022 09:20:50| DEAD +|08/01/2022 09:20:51| |im a genius| +|08/01/2022 09:20:52| |INVEST IN CHIHATAN NOW| +|08/01/2022 09:20:53| |ankou ;_;| +|08/01/2022 09:20:54| |BANZAI BROS LETS GO| +|08/01/2022 09:20:55| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:20:56| BANZAI +|08/01/2022 09:20:56| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +|08/01/2022 09:20:57| |its over ooraibro| +|08/01/2022 09:20:57| BANZAI +|08/01/2022 09:20:57| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:20:58| |I like the detail of that one Chiatan's plushies when she goes flying| +|08/01/2022 09:20:58| F +|08/01/2022 09:20:59| |BANZAIIIIIII BANZAIIIII| +|08/01/2022 09:20:59| |RIP ANKOU| +|08/01/2022 09:21:00| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:00| F +|08/01/2022 09:21:00| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:21:00| BANZAI +|08/01/2022 09:21:01| |BANZAI | +|08/01/2022 09:21:01| BANZAI! +|08/01/2022 09:21:01| BANZAI +|08/01/2022 09:21:01| BANZAI! +|08/01/2022 09:21:02| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:02| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:02| BANZAI +|08/01/2022 09:21:02| |Tanks can fly if you believe hard enough| +|08/01/2022 09:21:02| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +|08/01/2022 09:21:02| BANZAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +|08/01/2022 09:21:02| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:02| CHIHABROS!!!!!! +|08/01/2022 09:21:02| |LADIES AND GENTLEMEN WE GOT EM| +|08/01/2022 09:21:02| BAKAS +|08/01/2022 09:21:02| BANZAI +|08/01/2022 09:21:03| ANKOUBROS... +|08/01/2022 09:21:03| |BANZAI BANZAI BANZAI| +|08/01/2022 09:21:03| |BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:04| BANZAI +|08/01/2022 09:21:04| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:04| BANZAI! +|08/01/2022 09:21:05| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:05| OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:05| BANZAI +|08/01/2022 09:21:05| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:05| BANZAI +|08/01/2022 09:21:05| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:05| BANZAI! +|08/01/2022 09:21:05| BANZAI +|08/01/2022 09:21:05| |Betting my life savings on chihatan| +|08/01/2022 09:21:06| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +|08/01/2022 09:21:06| |I DONT WANT TO WATCH ANYMORE| +|08/01/2022 09:21:06| BANZAI +|08/01/2022 09:21:06| |BANZAI BANZAI BANZAI| +|08/01/2022 09:21:06| BANZAI +|08/01/2022 09:21:06| |GG EZPZ| +|08/01/2022 09:21:06| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:21:06| BANZAI +|08/01/2022 09:21:06| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:06| BANZA89IIII +|08/01/2022 09:21:06| BANZAI +|08/01/2022 09:21:06| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:07| BANZAI +|08/01/2022 09:21:07| \O/ +|08/01/2022 09:21:07| BANZI +|08/01/2022 09:21:07| |oh noooooooooooooooooo| +|08/01/2022 09:21:07| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:07| BANZAI +|08/01/2022 09:21:08| BANZAI +|08/01/2022 09:21:08| BANZAI +|08/01/2022 09:21:08| BANZAI +|08/01/2022 09:21:08| BANZAI +|08/01/2022 09:21:09| BANZAI +|08/01/2022 09:21:09| |BANZAI BANZAI BANZAI| +|08/01/2022 09:21:09| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:09| |\o/ \o/ \o/ 天皇陛下万歳 \o/ \o/ \o/ \o/ \o/ \o/ 七生報國 \o/ \o/ \o/| +|08/01/2022 09:21:09| BANZAI +|08/01/2022 09:21:09| |\o/ TENNO HEIKA BANZAI \o/| +|08/01/2022 09:21:10| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:10| BANZAI!!! +|08/01/2022 09:21:10| BANZAI +|08/01/2022 09:21:10| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI!| +|08/01/2022 09:21:10| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:10| BANZAI +|08/01/2022 09:21:11| |Flag tank?| +|08/01/2022 09:21:11| BANZAI! +|08/01/2022 09:21:11| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:12| BANZAIIIIIIIIIIIIIIII +|08/01/2022 09:21:12| BANZAI +|08/01/2022 09:21:12| BANZAI +|08/01/2022 09:21:13| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:13| OOARAIBROS!? +|08/01/2022 09:21:14| BANZAI +|08/01/2022 09:21:14| BANZAI +|08/01/2022 09:21:14| BANZAI +|08/01/2022 09:21:14| 天皇陛下万歳 +|08/01/2022 09:21:14| AMAI +|08/01/2022 09:21:14| BANZAI +|08/01/2022 09:21:14| |What flag tank?| +|08/01/2022 09:21:14| |I'M A GENIUS| +|08/01/2022 09:21:15| BAKAS +|08/01/2022 09:21:15| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:15| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:15| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:15| BANZAI +|08/01/2022 09:21:15| BANZAI +|08/01/2022 09:21:15| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:16| |BANZAI BANZAI| +|08/01/2022 09:21:16| |>what is a flag tank| +|08/01/2022 09:21:18| |BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! BANZAI! | +|08/01/2022 09:21:18| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:18| BANZAI +|08/01/2022 09:21:18| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:19| |ES IST VORBEI DER KRIEG IST VERLOREN| +|08/01/2022 09:21:19| |OH NO| +|08/01/2022 09:21:19| BANZA- +|08/01/2022 09:21:20| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:20| |DAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAIDAI SEKAI| +|08/01/2022 09:21:20| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:20| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:20| |BANZAI BANZAI BANZAI| +|08/01/2022 09:21:21| |BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI BANZAI | +|08/01/2022 09:21:22| |HETZER GONNA HETZ| +|08/01/2022 09:21:23| |>I'm a genius >OH NO| +|08/01/2022 09:21:23| Buffer +|08/01/2022 09:21:23| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:24| BANZAIII +|08/01/2022 09:21:24| Chi-Ha-Tanbros............. +|08/01/2022 09:21:24| |HETZER GONNA HETZ| +|08/01/2022 09:21:25| |>OH NOOOO| +|08/01/2022 09:21:25| HUBRIS +|08/01/2022 09:21:25| |THOSE CHIHATAN RETARDS| +|08/01/2022 09:21:25| |Wrong tank| +|08/01/2022 09:21:25| |BANZAI BANZAI BANZAI BANZAI| +|08/01/2022 09:21:26| |OH MY IGNORED FLAG TANK| +|08/01/2022 09:21:26| |OH NO NO NO NO NO| +|08/01/2022 09:21:26| |>SHE FORGOT| +|08/01/2022 09:21:26| oops +|08/01/2022 09:21:26| |BANZAIBROS SEETHING RN| +|08/01/2022 09:21:27| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:27| |OH NO BANZAI BROS WE GOT TOO COCKY| +|08/01/2022 09:21:28| |\o/ BANZAI \o/| +|08/01/2022 09:21:28| BAITED +|08/01/2022 09:21:29| REKT +|08/01/2022 09:21:29| LUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL +|08/01/2022 09:21:29| HUBRIS +|08/01/2022 09:21:30| |>COMPLETELY FORGOT| +|08/01/2022 09:21:30| |WE GOT TOO COCKY!| +|08/01/2022 09:21:30| |SARABA CHI HA TAN| +|08/01/2022 09:21:30| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:31| |WE DID IT CHIHATANSISTERS! JAPAN'S WON THE WAR!| +|08/01/2022 09:21:31| OWARI +|08/01/2022 09:21:31| OOARAIBROS!? +|08/01/2022 09:21:31| BAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAA +|08/01/2022 09:21:31| ..... +|08/01/2022 09:21:32| |Ha, you're not penning frontally with an early war Japan gun| +|08/01/2022 09:21:32| |Poor Kinuyo| +|08/01/2022 09:21:32| DED +|08/01/2022 09:21:33| |UH OH| +|08/01/2022 09:21:33| BROS................ +|08/01/2022 09:21:33| |EZ FUCKING GAME BROS| +|08/01/2022 09:21:34| |Ooarai is the John Cena of Senshado| +|08/01/2022 09:21:34| |FUCK YOU TURTLE| +|08/01/2022 09:21:34| HETZ'D +|08/01/2022 09:21:35| |Momo's first kill| +|08/01/2022 09:21:35| 万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/万歳\(^o^)/  +|08/01/2022 09:21:35| |GG EZ| +|08/01/2022 09:21:35| |CHIHATAN BROS WE GOT COCKY| +|08/01/2022 09:21:36| GGEZ' +|08/01/2022 09:21:36| AAAAAAAAHAHAHAHAHAHAHAHAHAHAHAA +|08/01/2022 09:21:38| BANZAI +|08/01/2022 09:21:38| |WE GOT TOO COCKY| +|08/01/2022 09:21:38| TOTSUGEKIDIOTS +|08/01/2022 09:21:38| |NOOOOOOOOOOOOOOOOOOOOOOOO MY $10K| +|08/01/2022 09:21:38| |OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!? OOARAIBROS!?| +|08/01/2022 09:21:40| |FUCKING I'M A GENIUS MOMENT| +|08/01/2022 09:21:40| |HEY HEY HEY| +|08/01/2022 09:21:41| |I was only pretending to be retarteded| +|08/01/2022 09:21:41| |HEY HEY HEY| +|08/01/2022 09:21:42| |HEY HEY HEY| +|08/01/2022 09:21:43| |HEY HEY HEY| +|08/01/2022 09:21:43| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 09:21:43| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:21:45| |ANZU CLUTCH| +|08/01/2022 09:21:45| |HEY HEY HEY| +|08/01/2022 09:21:45| |HEY HEY HEY| +|08/01/2022 09:21:45| |HEY HEY HEEEY!| +|08/01/2022 09:21:45| |Mako noooo| +|08/01/2022 09:21:46| |In the end couldn't help but be baka chargers| +|08/01/2022 09:21:47| rip +|08/01/2022 09:21:47| |BRUH HOW DID THEY LOSE| +|08/01/2022 09:21:47| Anzu +|08/01/2022 09:21:47| |MAKO-CHAN I LOVE YOU| +|08/01/2022 09:21:48| |HEY HEY HEY| +|08/01/2022 09:21:48| |hey hey heyyy| +|08/01/2022 09:21:48| Oya +|08/01/2022 09:21:48| |HEJ HEJ HEJ SOKOLY| +|08/01/2022 09:21:48| |broken by the break of day| +|08/01/2022 09:21:49| |literally me| +|08/01/2022 09:21:49| |MAKO DED| +|08/01/2022 09:21:49| |OUT FUCKING SKILLED| +|08/01/2022 09:21:49| |HEY HEY HEY| +|08/01/2022 09:21:49| |HEY HEY HEY| +|08/01/2022 09:21:50| |Why did they have to charge to shoot the flag tank| +|08/01/2022 09:21:50| |It was her turn| +|08/01/2022 09:21:51| |OOARAICHADS... I KNEEL| +|08/01/2022 09:21:52| |I just lost EVERYTHING FUCK FUCK FUCK| +|08/01/2022 09:21:52| |SLEEPY MAKO SEX| +|08/01/2022 09:21:53| |and battery drained| +|08/01/2022 09:21:54| |CHIHABROS WE TOO COCKY| +|08/01/2022 09:21:55| |Literally me| +|08/01/2022 09:21:55| |sun is rising, just like real life| +|08/01/2022 09:21:56| |well never forget you mako| +|08/01/2022 09:21:56| BETTER +|08/01/2022 09:21:56| |PLEASE MARRY ME MAKO-CHAN| +|08/01/2022 09:21:57| |Oh great, she's dead| +|08/01/2022 09:21:59| |I MUST COMMITT SUDOKU| +|08/01/2022 09:22:00| RETARDS +|08/01/2022 09:22:01| |i sleep zzz| +|08/01/2022 09:22:02| PTFO!!!!!!!!!!!!!!!!!!!!!! +|08/01/2022 09:22:02| |BAN... BANZaiii,,,| +|08/01/2022 09:22:02| SARABA +|08/01/2022 09:22:03| |JESUS FUCKING CHRIST| +|08/01/2022 09:22:03| |thus Mako died| +|08/01/2022 09:22:03| |They didn't charge. That's how they lost| +|08/01/2022 09:22:05| |Fought like never before. Lost as always.| +|08/01/2022 09:22:09| |I LOST 40K BECAUSE OF THESE IDIOTS| +|08/01/2022 09:22:09| DEKINAI +|08/01/2022 09:22:13| DEKINAIS +|08/01/2022 09:22:14| 感謝 +|08/01/2022 09:22:14| >decknai +|08/01/2022 09:22:15| |fucking japanese| +|08/01/2022 09:22:15| BAKA-TAN +|08/01/2022 09:22:16| |Chihatanbros we were so close...| +|08/01/2022 09:22:16| bakas +|08/01/2022 09:22:16| |>you don't even know japanese| +|08/01/2022 09:22:18| |MAKO IS GONNA MAKE ME SLEEP| +|08/01/2022 09:22:19| |lmao fucking kanji| +|08/01/2022 09:22:21| |zenzen dekinai| +|08/01/2022 09:22:22| |chihatancoin crash| +|08/01/2022 09:22:23| |>Japs cant understand jap| +|08/01/2022 09:22:23| |2 years in the jungle and we are finally out| +|08/01/2022 09:22:25| |Dear Oorai, fuck you all| +|08/01/2022 09:22:26| |Dear Duck, thanks for losing :)| +|08/01/2022 09:22:26| |bitch, just send a text| +|08/01/2022 09:22:27| |DO YOUR REPS| +|08/01/2022 09:22:30| |you will never learn japanese| +|08/01/2022 09:22:32| |Kanji is evil| +|08/01/2022 09:22:33| |nishi is so beautiful| +|08/01/2022 09:22:34| |UOOOOOOOOOOOOOOOOHHHHHHHHHHHH FUKUDA| +|08/01/2022 09:22:38| |dekinai ;_;| +|08/01/2022 09:22:39| |TAEKO IS CUTE| +|08/01/2022 09:22:40| VOLLEYBALL! +|08/01/2022 09:22:41| |cute cute cute| +|08/01/2022 09:22:42| |volleyball with the loli| +|08/01/2022 09:22:42| ;_;7 +|08/01/2022 09:22:45| ;_; +|08/01/2022 09:22:45| |A FUCKING FOOTBALL| +|08/01/2022 09:22:46| ureshiii~ +|08/01/2022 09:22:46| |I entrusts you with Wilson, fuku chan| +|08/01/2022 09:22:47| |I CANT GET OVER THAT CHIHATAN LOSE| +|08/01/2022 09:22:48| |>a fucking volleyball| +|08/01/2022 09:22:49| |FUKU A CUTEEEEEEEEEEEEEEEEEEEEEEE| +|08/01/2022 09:22:55| |dream on| +|08/01/2022 09:22:55| |FUKUDA MUST BE HANGED| +|08/01/2022 09:22:56| |after you learn a bunch of kanji you wish they were used more| +|08/01/2022 09:22:57| |WILLSON | +|08/01/2022 09:22:57| |>even Japs can't learn jap Maybe we should just give up...| +|08/01/2022 09:22:57| lolno +|08/01/2022 09:22:58| |sportmanship ;_;| +|08/01/2022 09:22:58| |Are Ducks that illiterate?| +|08/01/2022 09:22:59| :) +|08/01/2022 09:23:00| Daikon +|08/01/2022 09:23:00| |cool train| +|08/01/2022 09:23:04| |HORSE TIME| +|08/01/2022 09:23:06| KINOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:23:07| BASED +|08/01/2022 09:23:08| |kek special now| +|08/01/2022 09:23:08| HORSE +|08/01/2022 09:23:08| D-D-DA-DAIKON?? +|08/01/2022 09:23:09| SEAMLESS +|08/01/2022 09:23:09| |>you just know| +|08/01/2022 09:23:09| |horsing around| +|08/01/2022 09:23:10| |UMA PYOI| +|08/01/2022 09:23:10| KINOOOOOOOOOOOOOOO +|08/01/2022 09:23:11| |YOU JUST KNOW| +|08/01/2022 09:23:11| YOU +|08/01/2022 09:23:12| |SOMETIMES YOU JUST KNOW| +|08/01/2022 09:23:12| |YOU JUST KNOW| +|08/01/2022 09:23:12| |MY DAY| +|08/01/2022 09:23:13| |QUALITY HORSES| +|08/01/2022 09:23:13| DAIKON +|08/01/2022 09:23:13| |TO THE TOWN OF AGUA FRIA| +|08/01/2022 09:23:13| |sometimes you just know| +|08/01/2022 09:23:13| |YOU JUST KNOW| +|08/01/2022 09:23:14| |oh fug| +|08/01/2022 09:23:14| |GATOGOTO CHOO CHOO| +|08/01/2022 09:23:14| |i want saori to ride me| +|08/01/2022 09:23:15| |That's some serious wheelspin on that train.| +|08/01/2022 09:23:15| |Body bags| +|08/01/2022 09:23:15| IMAGINE +|08/01/2022 09:23:16| >>>/MLP/ +|08/01/2022 09:23:16| |REAL JANE HOURS| +|08/01/2022 09:23:17| |UUUUU UMADACCHI| +|08/01/2022 09:23:17| |YOU JUST KNOW| +|08/01/2022 09:23:17| |OH NO| +|08/01/2022 09:23:17| |But, muh Finns| +|08/01/2022 09:23:17| |YOU JUST KNOW| +|08/01/2022 09:23:19| |I wish I were a horse| +|08/01/2022 09:23:19| SASUGA +|08/01/2022 09:23:20| |>you just know| +|08/01/2022 09:23:20| |I was zoned in to that battle. completely ignored chat| +|08/01/2022 09:23:21| |For a few daikon more| +|08/01/2022 09:23:22| |Oh shit I haven't watched this| +|08/01/2022 09:23:22| |YOU JUST KNOW| +|08/01/2022 09:23:22| |YOU JUST KNOW| +|08/01/2022 09:23:25| |why is the black one called choco| +|08/01/2022 09:23:25| |KIMI NO AIBA GA| +|08/01/2022 09:23:25| |YOU JUST KNOW| +|08/01/2022 09:23:25| CHOCO +|08/01/2022 09:23:26| |WHY ARE THE GIRLS SO BIG| +|08/01/2022 09:23:27| |SUNSET GUPPIEs| +|08/01/2022 09:23:27| nani +|08/01/2022 09:23:27| YOU +|08/01/2022 09:23:28| |HORSE. DICK.| +|08/01/2022 09:23:29| |PART 7 WHEN| +|08/01/2022 09:23:29| |I JUST KNOW| +|08/01/2022 09:23:31| |especially Yukaris horse| +|08/01/2022 09:23:31| |YOU JUST KNOW| +|08/01/2022 09:23:31| |you just know| +|08/01/2022 09:23:31| |YOU JUST KNOW| +|08/01/2022 09:23:32| JUST +|08/01/2022 09:23:33| |THOSE HORSES ARE TINY COMPARED TO THEM| +|08/01/2022 09:23:34| |god I want yukari to ride me| +|08/01/2022 09:23:35| |you just know episode| +|08/01/2022 09:23:36| |girls und horses| +|08/01/2022 09:23:37| |ZUKYUN BAKYUN HASHIRIDASHI| +|08/01/2022 09:23:37| |SNIFFING SADDLES AAAAAAAAAAAAAAAH| +|08/01/2022 09:23:38| |you just know| +|08/01/2022 09:23:38| |YOU JUST KNOW| +|08/01/2022 09:23:39| |my horse is black so is it nigger?| +|08/01/2022 09:23:40| |AHHHHHH MAKO| +|08/01/2022 09:23:42| |IT WAS TOO MUCH| +|08/01/2022 09:23:43| |I wish i was the horse| +|08/01/2022 09:23:45| |Mako too used to riding horses| +|08/01/2022 09:23:45| |you just know moment| +|08/01/2022 09:23:47| |I think that was the best battle we've seen in the series| +|08/01/2022 09:23:49| |I wish I was that horse| +|08/01/2022 09:23:52| |Don't talk about the cgi horses| +|08/01/2022 09:23:55| |That poor horse.| +|08/01/2022 09:23:55| |I love the OVA OST so much| +|08/01/2022 09:23:56| (STUDY) +|08/01/2022 09:24:00| |saori finally found a man| +|08/01/2022 09:24:04| |Cute freckles| +|08/01/2022 09:24:05| |is the ova ost up| +|08/01/2022 09:24:06| |Hick is cutest guppie| +|08/01/2022 09:24:10| |Bellebros this is our year| +|08/01/2022 09:24:10| |a cute| +|08/01/2022 09:24:10| QT +|08/01/2022 09:24:13| |These girls are GIGANTIC| +|08/01/2022 09:24:13| |Where on the ship does this take place| +|08/01/2022 09:24:14| FRECKLES +|08/01/2022 09:24:16| |no habla japones| +|08/01/2022 09:24:17| |Cute farmer| +|08/01/2022 09:24:18| |If this whole place was on the ship, wow...| +|08/01/2022 09:24:19| |THESE GIRLS DON'T EVEN KNOW THEY'RE ON A SHIP| +|08/01/2022 09:24:20| |AS I WALKED BY ON THE STREETS OF OARAI| +|08/01/2022 09:24:23| |>mountains on a carrier| +|08/01/2022 09:24:24| |A FUCKING DESERT| +|08/01/2022 09:24:24| |Sayori x choco is my fetish| +|08/01/2022 09:24:25| |what is this| +|08/01/2022 09:24:26| AINU +|08/01/2022 09:24:26| |hello natives this land is my land now| +|08/01/2022 09:24:27| AUTISM +|08/01/2022 09:24:27| |indian tank when| +|08/01/2022 09:24:27| |lmao random ass desert| +|08/01/2022 09:24:28| ?????????? +|08/01/2022 09:24:28| NATIVES +|08/01/2022 09:24:29| |INJUN LARPERS| +|08/01/2022 09:24:29| |Native Americans| +|08/01/2022 09:24:30| |>cactus valley| +|08/01/2022 09:24:30| |how can they afford artifical mountain ranges?| +|08/01/2022 09:24:30| UUUUUUUUOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 09:24:30| oishisou +|08/01/2022 09:24:34| |the fuck is this| +|08/01/2022 09:24:35| |Give firewater| +|08/01/2022 09:24:35| |That perfect transition| +|08/01/2022 09:24:37| |4 TRILLION WASTED ON THIS PLACE| +|08/01/2022 09:24:38| KEK +|08/01/2022 09:24:39| |native american (japanese)| +|08/01/2022 09:24:39| |what the fuckl| +|08/01/2022 09:24:39| |native americans?| +|08/01/2022 09:24:41| |ae these traditional mutts?| +|08/01/2022 09:24:43| |HEYA HOYA HEYA HOYA HAYO HOHA| +|08/01/2022 09:24:44| |DAS RACIST| +|08/01/2022 09:24:44| |how tf they get on the ship| +|08/01/2022 09:24:44| |Ah, yes, traditional native american indian popcorn| +|08/01/2022 09:24:46| >AINU +|08/01/2022 09:24:47| |lamo this fucking injun autism is something else| +|08/01/2022 09:24:47| |TAKE DRUGS. KILL A BEAR.| +|08/01/2022 09:24:48| holodeck +|08/01/2022 09:24:49| |DICK MOUNTAIN| +|08/01/2022 09:24:49| |injins | +|08/01/2022 09:24:50| |konoko mauntein| +|08/01/2022 09:24:51| |are these ainu?| +|08/01/2022 09:24:51| |Where does Ooari get all this funding?| +|08/01/2022 09:24:54| oishisou +|08/01/2022 09:24:54| CUTE +|08/01/2022 09:24:55| >mushroom +|08/01/2022 09:24:56| oishiisou +|08/01/2022 09:24:57| oishiisou +|08/01/2022 09:24:57| oishisou +|08/01/2022 09:24:57| |frido chiken| +|08/01/2022 09:24:58| |Kino trapper| +|08/01/2022 09:25:01| |Ah, yes, traditional fried chicken| +|08/01/2022 09:25:02| |wtf is the ooarai ship| +|08/01/2022 09:25:04| |literal autis| +|08/01/2022 09:25:04| AWSMAN +|08/01/2022 09:25:05| |Straight up living in huts even though they're Agriculture students| +|08/01/2022 09:25:10| |>MOUNTAINS ON A SHIP| +|08/01/2022 09:25:12| |GENERATIONS HAVE LIVED AND DIED WITHOUT EVER KNOWING THEY WERE ON A SHIP| +|08/01/2022 09:25:13| |i was literally gone for 5 mins why are they cowboys now| +|08/01/2022 09:25:13| |YOU JUST KNOW| +|08/01/2022 09:25:14| |are they still on a ship?| +|08/01/2022 09:25:15| |SAORI FUCKS BLACK HORSES| +|08/01/2022 09:25:15| |you're a pretty big ship| +|08/01/2022 09:25:16| |KFC is traditional Japanese food| +|08/01/2022 09:25:17| |NO WONDER MEXTBRO WANTED TO FUCKING SHUT THIS SHIP DOWN| +|08/01/2022 09:25:20| |BIG SHIP| +|08/01/2022 09:25:20| |>I wannbe in the cavalry| +|08/01/2022 09:25:21| |NO WONDER THEY WANTED TO SHUT THIS SHIP DOWN| +|08/01/2022 09:25:23| UUUU +|08/01/2022 09:25:25| |BELLEBROS WE'RE GOING TO DO IT | +|08/01/2022 09:25:25| |I GOT A PLAN ARTHUR| +|08/01/2022 09:25:25| |TIL Saori is a fast leaner| +|08/01/2022 09:25:26| |the sky is painted, it's alright| +|08/01/2022 09:25:26| |A FUCKING GUN| +|08/01/2022 09:25:27| |THEY"RE HANGING ME TONIGHT| +|08/01/2022 09:25:27| |look's good| +|08/01/2022 09:25:28| KINO +|08/01/2022 09:25:32| KINO +|08/01/2022 09:25:32| butt +|08/01/2022 09:25:32| BUTT +|08/01/2022 09:25:32| JANE +|08/01/2022 09:25:35| |How the fuck does this all fit on a ship| +|08/01/2022 09:25:36| |HAVE SOME GOD DAMMED FAITH| +|08/01/2022 09:25:36| |>MOUNTAINS >DESERT >FOREST >ON A SHIP| +|08/01/2022 09:25:36| |Actual guns| +|08/01/2022 09:25:37| |Is this still on a ship?| +|08/01/2022 09:25:37| |>Carbon-coated horses and carbon-coated vests| +|08/01/2022 09:25:37| Jane +|08/01/2022 09:25:38| |MMMMM JANE BUTT| +|08/01/2022 09:25:38| zr +|08/01/2022 09:25:40| booba +|08/01/2022 09:25:40| LEGS +|08/01/2022 09:25:41| |they're carbon mountains| +|08/01/2022 09:25:42| WEW +|08/01/2022 09:25:42| ass +|08/01/2022 09:25:42| JANE +|08/01/2022 09:25:43| YOOO +|08/01/2022 09:25:43| OO +|08/01/2022 09:25:43| |TAHITI, ARTHUR| +|08/01/2022 09:25:43| |is this why they can't afford senshado?| +|08/01/2022 09:25:44| ASS +|08/01/2022 09:25:45| |> a ship full of cosplayers| +|08/01/2022 09:25:46| |SHES SO HOT BROS| +|08/01/2022 09:25:46| |Bang Bang| +|08/01/2022 09:25:46| TIDDIES +|08/01/2022 09:25:47| tits +|08/01/2022 09:25:48| |WATASHI WA JANE| +|08/01/2022 09:25:48| |maybe we are all on one big ship| +|08/01/2022 09:25:49| |Jane's Janes| +|08/01/2022 09:25:49| JANE +|08/01/2022 09:25:50| SEEEEEEEEEEEEEEEEEX +|08/01/2022 09:25:51| SEEEEEEEEEEEEEEEEEX +|08/01/2022 09:25:51| WEEEEEW +|08/01/2022 09:25:51| |carbon coated pocket dimensional carrier| +|08/01/2022 09:25:51| |CARBON COATED COWGIRL| +|08/01/2022 09:25:51| |They arrived to MArlboro county| +|08/01/2022 09:25:51| LEWD +|08/01/2022 09:25:52| |OH MY GOD THOSE TITS| +|08/01/2022 09:25:53| |sex. with jane| +|08/01/2022 09:25:53| |GOD I WANT TO FUCK THIS SHERIFF| +|08/01/2022 09:25:54| |ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT ToT | +|08/01/2022 09:25:54| WEW +|08/01/2022 09:25:55| |ARTHUR MORGAN| +|08/01/2022 09:25:55| |SHES HAS A PLAN| +|08/01/2022 09:25:58| |a bit of a calamity| +|08/01/2022 09:25:59| |OH MY GOD THAT MAKO| +|08/01/2022 09:25:59| |Proud Yukarin!| +|08/01/2022 09:26:00| |Janes sinful body is something else| +|08/01/2022 09:26:01| |The pistol was the Devil's Right Hand| +|08/01/2022 09:26:02| |i HAVE a PLAN| +|08/01/2022 09:26:03| HOWDY +|08/01/2022 09:26:04| |Modern Strange Cowgirls | +|08/01/2022 09:26:06| |Jane's tanned and blonde?| +|08/01/2022 09:26:10| howdy +|08/01/2022 09:26:13| |there could be a better tank than the markiv here| +|08/01/2022 09:26:18| LUMBAGO +|08/01/2022 09:26:18| Umai +|08/01/2022 09:26:19| |Jane's Janes| +|08/01/2022 09:26:20| taberu +|08/01/2022 09:26:20| umai +|08/01/2022 09:26:21| nom +|08/01/2022 09:26:21| TABERU +|08/01/2022 09:26:21| DELISH +|08/01/2022 09:26:22| |A FUCKING GUN| +|08/01/2022 09:26:23| |BIG IRON| +|08/01/2022 09:26:23| yoink +|08/01/2022 09:26:24| |good churro :)| +|08/01/2022 09:26:24| CHURUS +|08/01/2022 09:26:25| umai +|08/01/2022 09:26:25| UMAI +|08/01/2022 09:26:25| UMAI +|08/01/2022 09:26:26| |>a fucking gun| +|08/01/2022 09:26:26| WTF +|08/01/2022 09:26:27| |BIG IRON| +|08/01/2022 09:26:27| |I WANT TO FEED MAKO MY CHURRO| +|08/01/2022 09:26:27| umai +|08/01/2022 09:26:27| |I'd feed her my Churo| +|08/01/2022 09:26:27| >lumbago +|08/01/2022 09:26:28| |Actual guns| +|08/01/2022 09:26:28| BUTT +|08/01/2022 09:26:28| |GUNSHOT SFX| +|08/01/2022 09:26:29| butt +|08/01/2022 09:26:30| |BIG IRON| +|08/01/2022 09:26:31| |fluff get the nade| +|08/01/2022 09:26:31| BUTT +|08/01/2022 09:26:31| |These mega-carriers are full on magic. I do want a full tour. It's nutty.| +|08/01/2022 09:26:32| BUTTE +|08/01/2022 09:26:32| |BIG IRON| +|08/01/2022 09:26:33| |BIG BUTT| +|08/01/2022 09:26:34| butte +|08/01/2022 09:26:35| |20 men had tried to take her 20 men had made the slip| +|08/01/2022 09:26:36| |Guns loaded with paintballs| +|08/01/2022 09:26:36| |HOLY FUCK HER ASS IS HUGE| +|08/01/2022 09:26:38| |BIG IRON| +|08/01/2022 09:26:39| |WHAT THE FUCK IS THIS???????????| +|08/01/2022 09:26:42| |ASS TAKING HALF THE SCREEN| +|08/01/2022 09:26:43| |HER FUCKING CHURRO| +|08/01/2022 09:26:43| YURUSENAI +|08/01/2022 09:26:44| |SHES FAST| +|08/01/2022 09:26:44| |F CHURRO| +|08/01/2022 09:26:45| uresarinai +|08/01/2022 09:26:45| |Slut assumes the whore position.| +|08/01/2022 09:26:46| YURUSENAI +|08/01/2022 09:26:46| |IN THE TOWN OF AGUA FRIA AN STRANGER ONE FINE DAY| +|08/01/2022 09:26:47| |FLintstones Sakuse| +|08/01/2022 09:26:49| wew +|08/01/2022 09:26:50| |MAKO SAVES THE DAY| +|08/01/2022 09:26:53| |Ghost Town Gunfight| +|08/01/2022 09:26:53| |>my dick when I see Jane Daikons| +|08/01/2022 09:26:54| |someone gonna die| +|08/01/2022 09:26:57| |PEE MAN| +|08/01/2022 09:27:01| |TEXAS RED| +|08/01/2022 09:27:02| |SAORI ASS| +|08/01/2022 09:27:04| |PEE MAN| +|08/01/2022 09:27:04| |Look at these larpers| +|08/01/2022 09:27:05| |Mako hates Churro shooters| +|08/01/2022 09:27:08| |WHAT THE FUCK IS GOING ON| +|08/01/2022 09:27:09| SAORI +|08/01/2022 09:27:11| |bros what the fuck is happening I thought this was tankgirls I'm too drunk for this shit| +|08/01/2022 09:27:14| |Peak autism| +|08/01/2022 09:27:16| |MAKO BANZAI| +|08/01/2022 09:27:17| |FINGER GUNS| +|08/01/2022 09:27:18| DDDDDDUUUUUUUUUEEEEEEEEELLLLLLL +|08/01/2022 09:27:19| |WE'RE ALL PACKING HEAT| +|08/01/2022 09:27:20| d/u/el +|08/01/2022 09:27:22| |This is all on a Japanese ship, by the way| +|08/01/2022 09:27:23| KINO +|08/01/2022 09:27:23| |deputized guppies| +|08/01/2022 09:27:23| |BELLEBROS THIS IS OUR YEAR| +|08/01/2022 09:27:23| |this is a high school btw| +|08/01/2022 09:27:23| |THEY HAVE A FUCKING BUFFALO| +|08/01/2022 09:27:24| |Tank girls got guns now| +|08/01/2022 09:27:24| |IDK anymore, this rides taken me over| +|08/01/2022 09:27:24| |fucking chuunis| +|08/01/2022 09:27:25| EEEHHH +|08/01/2022 09:27:25| |holy shit | +|08/01/2022 09:27:26| |The ULTIMATE LARP| +|08/01/2022 09:27:28| THIGHS +|08/01/2022 09:27:28| |And you though senshado larper were bad| +|08/01/2022 09:27:28| KINO +|08/01/2022 09:27:28| |BIG IRON| +|08/01/2022 09:27:29| |That's a very pale mexican| +|08/01/2022 09:27:30| |we already in daikon war????| +|08/01/2022 09:27:31| |OH THEY FUCKING| +|08/01/2022 09:27:31| KINO +|08/01/2022 09:27:32| |BIG IRON| +|08/01/2022 09:27:35| |THERE WAS 40 FT BETWEEN THEM| +|08/01/2022 09:27:38| |ONE LAST DUEL| +|08/01/2022 09:27:39| |duel in a sumo arena fuckin kek| +|08/01/2022 09:27:40| |SPANISH COLONIZERS| +|08/01/2022 09:27:41| Thighs.... +|08/01/2022 09:27:41| |HAVE SOME FAITH MIHO| +|08/01/2022 09:27:41| |ONCE UPON A TIME IN OARAI| +|08/01/2022 09:27:42| |THIS MAKES MY IRON BIG IRON| +|08/01/2022 09:27:42| |A BIG IRON ON HIS HIP| +|08/01/2022 09:27:43| |there are actual western larper enthusiasts in japan btw| +|08/01/2022 09:27:44| |Does Yukari still have her grenade?| +|08/01/2022 09:27:45| |what the fuck am i watching| +|08/01/2022 09:27:45| |wah wah wah| +|08/01/2022 09:27:46| |a universe where everyone larps| +|08/01/2022 09:27:46| |SHE DIED| +|08/01/2022 09:27:47| |THE SWIFTNESS OF THE RANGER | +|08/01/2022 09:27:47| DEAD +|08/01/2022 09:27:48| |Bison feet?| +|08/01/2022 09:27:48| |was mako always this short| +|08/01/2022 09:27:48| |IN THE TOWN OF AGUA FRIA| +|08/01/2022 09:27:49| WASTED +|08/01/2022 09:27:49| BRUTAL +|08/01/2022 09:27:49| GORE +|08/01/2022 09:27:50| |big iron on his hip...| +|08/01/2022 09:27:50| F +|08/01/2022 09:27:51| |WHAT THE FUCK| +|08/01/2022 09:27:52| rip +|08/01/2022 09:27:52| HAYAI +|08/01/2022 09:27:52| |BULLET FAIRLY RIPPED| +|08/01/2022 09:27:52| KILL +|08/01/2022 09:27:53| |Mr Bison| +|08/01/2022 09:27:54| BLUTE +|08/01/2022 09:27:54| |she can't shoot from the hip| +|08/01/2022 09:27:54| F +|08/01/2022 09:27:55| FATALITY +|08/01/2022 09:27:55| DED +|08/01/2022 09:27:55| |I CAN'T BELIEVE SHE KILLED HER| +|08/01/2022 09:27:55| f +|08/01/2022 09:27:56| WEW +|08/01/2022 09:27:56| rip +|08/01/2022 09:27:56| |HOLY FUCK SHE DEAD| +|08/01/2022 09:27:57| |TEXAS RANGER| +|08/01/2022 09:27:58| |HOLY FUCK\| +|08/01/2022 09:27:59| |the swiftness of the ranger is still talked about today| +|08/01/2022 09:27:59| |20 notches on her pistol| +|08/01/2022 09:28:00| |BIG IRRRRRRRROOOOOOOOOOON| +|08/01/2022 09:28:02| lame +|08/01/2022 09:28:02| |CARBON COATED SKIN| +|08/01/2022 09:28:02| kersplat +|08/01/2022 09:28:02| F +|08/01/2022 09:28:02| |I SHOT A GIRL IN OARAI JUST TO WATCH HER DIE| +|08/01/2022 09:28:03| |BIG IRON| +|08/01/2022 09:28:03| |FROM THE HIP LIKE A PRO| +|08/01/2022 09:28:04| |that would hurt if no carbon| +|08/01/2022 09:28:05| |Still runs| +|08/01/2022 09:28:06| SASUGA +|08/01/2022 09:28:07| |YOU JUST KNOW| +|08/01/2022 09:28:07| |WELL THE MAN HAD NOT CLEARED LEATHER| +|08/01/2022 09:28:08| |DRENCHED IN BLOOD| +|08/01/2022 09:28:08| COWARD! +|08/01/2022 09:28:09| Kapow +|08/01/2022 09:28:10| |RIDE LIKE THE WIND| +|08/01/2022 09:28:10| |YOU JUST KNOW| +|08/01/2022 09:28:11| YOU +|08/01/2022 09:28:12| |HE HAD SOME BUISNESS WITH THE BIG IRON ON HIS HIP| +|08/01/2022 09:28:13| |BIG IIIIIIIIIIRON BIG IIIIIIIIIIIIIIRon| +|08/01/2022 09:28:13| UMADACCHI +|08/01/2022 09:28:14| |YOU JUST KNOW| +|08/01/2022 09:28:14| |YOU JUST KNOW| +|08/01/2022 09:28:15| |YOU JUST KNOW| +|08/01/2022 09:28:16| |Saori's bf is so fast| +|08/01/2022 09:28:16| |what the fuck| +|08/01/2022 09:28:17| |YOU JUST KNOW| +|08/01/2022 09:28:18| |You just know!| +|08/01/2022 09:28:18| |OH SHIT| +|08/01/2022 09:28:19| |SAORI PLEASE LASSO ME INSTEAD ;____;| +|08/01/2022 09:28:20| |RAPE HORSE TIME| +|08/01/2022 09:28:22| |NO PANSU SHOT| +|08/01/2022 09:28:23| |>she's mastered riding| +|08/01/2022 09:28:24| |RAPE TIME| +|08/01/2022 09:28:24| |You just know| +|08/01/2022 09:28:25| |Saori: A horse is fine too| +|08/01/2022 09:28:25| |popular with horses| +|08/01/2022 09:28:25| |YOU JUST KNOW| +|08/01/2022 09:28:25| |Weird ass tank she's riding| +|08/01/2022 09:28:27| |YOU JUST KNOW| +|08/01/2022 09:28:27| |UMAPYOI UMAPYOI| +|08/01/2022 09:28:27| |>that fucking horse rape face| +|08/01/2022 09:28:27| >YJN +|08/01/2022 09:28:27| |dat horse| +|08/01/2022 09:28:28| |YOU JUST KNOW| +|08/01/2022 09:28:28| |Should have just threw a tomato| +|08/01/2022 09:28:29| |ME ON THE LEFT| +|08/01/2022 09:28:29| YOU +|08/01/2022 09:28:29| |SAORI FUCKS HORSES| +|08/01/2022 09:28:29| |GIW I was choco| +|08/01/2022 09:28:30| |YOU JUST KNOW| +|08/01/2022 09:28:30| |OK SAORI| +|08/01/2022 09:28:33| |YOU JUST KNOW| +|08/01/2022 09:28:33| DAIKON +|08/01/2022 09:28:33| |YOU JUST KNOWWWWWWWWWWWWWWW| +|08/01/2022 09:28:35| DAIKON +|08/01/2022 09:28:36| | WHITE GIRLS| +|08/01/2022 09:28:38| |big daikon conspiracy| +|08/01/2022 09:28:39| |This was just roleplay| +|08/01/2022 09:28:40| |DAIKON WAR| +|08/01/2022 09:28:41| |>SHOVE THEM INSIDE| +|08/01/2022 09:28:42| |>subtle metaphor| +|08/01/2022 09:28:42| |the doujin writes itself!| +|08/01/2022 09:28:44| |daikon thievery| +|08/01/2022 09:28:44| |Popular with horses AND boys| +|08/01/2022 09:28:45| IBURIGAKKO??????? +|08/01/2022 09:28:45| |whiy is she smoking firewood| +|08/01/2022 09:28:47| cute +|08/01/2022 09:28:49| UMAI +|08/01/2022 09:28:49| |YOU JUST KNOW| +|08/01/2022 09:28:51| D-DAIKON? +|08/01/2022 09:28:52| |But... why| +|08/01/2022 09:28:59| oishii +|08/01/2022 09:29:00| |I want to commit a crime| +|08/01/2022 09:29:01| |HODOYOI SHOPPASA| +|08/01/2022 09:29:03| |fragant and salty| +|08/01/2022 09:29:03| |>smoked daikon| +|08/01/2022 09:29:04| |daikon for lonely nights| +|08/01/2022 09:29:05| |>eating stolen goods| +|08/01/2022 09:29:06| |EAT DAIKON KIMCHI| +|08/01/2022 09:29:07| |I DONT GET WHY| +|08/01/2022 09:29:08| |I would like to try some...| +|08/01/2022 09:29:09| |Choco really is choco| +|08/01/2022 09:29:14| |Jesus fucking christ look at those hips| +|08/01/2022 09:29:17| |PECAN PIE| +|08/01/2022 09:29:17| |>misunderstood villian| +|08/01/2022 09:29:23| |gib daikon pls| +|08/01/2022 09:29:25| |i'd give her the D(aikon)| +|08/01/2022 09:29:25| |SO GOOD| +|08/01/2022 09:29:27| |Built for childbearing| +|08/01/2022 09:29:28| |based ranger| +|08/01/2022 09:29:31| Tanks? +|08/01/2022 09:29:32| |goodness gracious Jane is so hot| +|08/01/2022 09:29:32| |So is this the next tank team?| +|08/01/2022 09:29:33| |SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX SEX COWBOY SEX| +|08/01/2022 09:29:33| |>DAIKON CRIMES| +|08/01/2022 09:29:35| |I would give her my daikon| +|08/01/2022 09:29:36| |What guppies aren't built for childbearing?| +|08/01/2022 09:29:37| |MAKO APPROVES| +|08/01/2022 09:29:40| |what is the purpose of this ova?| +|08/01/2022 09:29:40| |they're on a pretty big ship| +|08/01/2022 09:29:41| |/u/ wins again| +|08/01/2022 09:29:42| |MUH 20 ACRES| +|08/01/2022 09:29:42| |>already more likable than sharks| +|08/01/2022 09:29:45| |mako has seen some shit| +|08/01/2022 09:29:52| |mako wire| +|08/01/2022 09:29:53| |ok what was the real reason she wanted those big tubers| +|08/01/2022 09:29:53| Mako... +|08/01/2022 09:29:54| legs! +|08/01/2022 09:29:54| |I cry everynight thinking about how Jane isnt real| +|08/01/2022 09:29:55| |replace sharks with cowboys| +|08/01/2022 09:29:55| |/u/fags >>>/out/| +|08/01/2022 09:29:56| |they wasted so much building this| +|08/01/2022 09:29:57| |WHO in their right mind won't give her their Daikon?| +|08/01/2022 09:29:59| |>mako wide awake| +|08/01/2022 09:30:01| |I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS I LOVE THE COWBOYS | +|08/01/2022 09:30:04| |but cutelass can still run the bar| +|08/01/2022 09:30:08| |they may be more likable than the sharks, but the sharks will always be more lovable| +|08/01/2022 09:30:19| |they literally built a mountan range | +|08/01/2022 09:30:20| |KINO MUSIC| +|08/01/2022 09:30:26| |I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON I WILL EAT THE DAIKON| +|08/01/2022 09:30:27| |dude carbon lmao| +|08/01/2022 09:30:28| KINO +|08/01/2022 09:30:29| |>implying girls being chuunis about random shit is a waste| +|08/01/2022 09:30:30| |Why the fuck is her corset outside| +|08/01/2022 09:30:30| REPEATER +|08/01/2022 09:30:31| BASED +|08/01/2022 09:30:31| |Pretty sure it's just to get more characters to slowly replace the ones who graduate or what ev| +|08/01/2022 09:30:32| |AS IIII WALK DOWN IN THE STREETS OF OARAI| +|08/01/2022 09:30:33| KINO +|08/01/2022 09:30:34| |IS this an OVA? I've never seen this.| +|08/01/2022 09:30:35| |LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK LOVE COWBOY HATE SHARK| +|08/01/2022 09:30:35| |CABRON COATED LARPERS| +|08/01/2022 09:30:35| |no wonder mextcuck wanted to close it up| +|08/01/2022 09:30:36| |holodeck tech| +|08/01/2022 09:30:36| |USA USA USA USA USA USA USA USA | +|08/01/2022 09:30:36| >OST +|08/01/2022 09:30:37| |ITS HOT| +|08/01/2022 09:30:37| KINO +|08/01/2022 09:30:38| |K I N O| +|08/01/2022 09:30:40| |This is still a highschool on a ship| +|08/01/2022 09:30:41| |USA USA USA| +|08/01/2022 09:30:41| |girls und horse| +|08/01/2022 09:30:42| |where did jane get the carbon| +|08/01/2022 09:30:43| |did they build a night sky with stars on the ship wtf???????| +|08/01/2022 09:30:44| |>No Horse tank| +|08/01/2022 09:30:45| |>all these horses| +|08/01/2022 09:30:46| KINO +|08/01/2022 09:30:46| |A FISTFUL OF DAIKON| +|08/01/2022 09:30:47| |SADDLE UP| +|08/01/2022 09:30:47| |Jane didn't say no though| +|08/01/2022 09:30:48| Jane... +|08/01/2022 09:30:48| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:30:48| |yes it's an ova bundled with the latest| +|08/01/2022 09:30:49| |There has to be some weird feint in the next battle to make this special make sense.| +|08/01/2022 09:30:49| |KINO COWGIRL RIDES ON| +|08/01/2022 09:30:49| |SEE YOU SHIP COYBOY| +|08/01/2022 09:30:49| |Jane makes my dick carbon coated| +|08/01/2022 09:30:51| |Ooa-rai Ooa-rai | +|08/01/2022 09:30:53| panzah? +|08/01/2022 09:30:53| |YOU JUST KNOW| +|08/01/2022 09:30:53| |so sad| +|08/01/2022 09:30:54| KINO +|08/01/2022 09:30:54| |You just know| +|08/01/2022 09:30:54| KINO +|08/01/2022 09:30:54| |KINO AS FUCK| +|08/01/2022 09:30:56| |Where are the Daltons?| +|08/01/2022 09:30:56| |RED DEAD REDEMPTION 3 LOOKS LIT| +|08/01/2022 09:30:57| |Hotpants are nice| +|08/01/2022 09:30:57| |THIS MUSIC| +|08/01/2022 09:30:57| |BIG SHIP| +|08/01/2022 09:30:58| KINO +|08/01/2022 09:30:58| KINOOOO +|08/01/2022 09:31:00| kino +|08/01/2022 09:31:00| KINO +|08/01/2022 09:31:01| |Ah thanks| +|08/01/2022 09:31:01| KINO +|08/01/2022 09:31:01| |DIRECTED BY CLINT EASTWOOD| +|08/01/2022 09:31:03| |Imagine talking to Jane in 10 years about her dark chuuni past as a cowboy sheriff | +|08/01/2022 09:31:04| |FISFUL OF DAIKONS| +|08/01/2022 09:31:04| |If I could get a whole bunch of teen girls to roleplay as cowgirls I'd spare no expense too| +|08/01/2022 09:31:05| Kino +|08/01/2022 09:31:05| KINO +|08/01/2022 09:31:07| kino +|08/01/2022 09:31:08| OOOOOOOOOOARAI +|08/01/2022 09:31:09| OARARARARARAI +|08/01/2022 09:31:09| KINO +|08/01/2022 09:31:09| |MUSIC :)| +|08/01/2022 09:31:12| |For a few Daikon more| +|08/01/2022 09:31:12| |O ARAI RAI RAI| +|08/01/2022 09:31:13| |RAI RAI| +|08/01/2022 09:31:14| |O ARAI RAI| +|08/01/2022 09:31:14| |O ARAI RAI RAI OARAI| +|08/01/2022 09:31:14| KINO +|08/01/2022 09:31:15| AORIAORIAORIAROAIROAIRORIRIRAOAIRAOIRIAORIAOIAORIAROAIROAIRAORIAORI +|08/01/2022 09:31:15| |big tonks| +|08/01/2022 09:31:16| OARAI +|08/01/2022 09:31:17| |For a Few Daikon More| +|08/01/2022 09:31:17| |what was the point of this ova| +|08/01/2022 09:31:17| |How much does it cost to build a mountain range?| +|08/01/2022 09:31:18| OOOOOOOOOOAAAAAAAAAAAAARRRRRRRRRRRAAAAAAAAIIIIIIIIII +|08/01/2022 09:31:18| OOOOOARAIRAIRAIRAI +|08/01/2022 09:31:19| |NEW WAIFU| +|08/01/2022 09:31:19| UOOORAI +|08/01/2022 09:31:20| |Who put a western in my tank anime| +|08/01/2022 09:31:22| |tbh it would have been better to end the marathon with this OVA| +|08/01/2022 09:31:22| |O RAI RAI OARAI| +|08/01/2022 09:31:22| |Once upon a time in Oarai| +|08/01/2022 09:31:22| |O ARAI RAI RAI RAI RAI| +|08/01/2022 09:31:22| KINO +|08/01/2022 09:31:24| |I'm a poor lonesome cowboy, I'm a poor lonesome cowboy and far away from home| +|08/01/2022 09:31:25| |KINO SONG| +|08/01/2022 09:31:26| OARAI +|08/01/2022 09:31:28| |If Jane was the singer, she got vocals| +|08/01/2022 09:31:28| |goodbye shane| +|08/01/2022 09:31:28| |The quick and the daikon| +|08/01/2022 09:31:31| |O arai Rai Rai Oarai| +|08/01/2022 09:31:32| |BASED WESTERN FANS| +|08/01/2022 09:31:32| |see you in 5 years fuckers| +|08/01/2022 09:31:33| |I hope we see them again| +|08/01/2022 09:31:33| >over +|08/01/2022 09:31:33| 888888 +|08/01/2022 09:31:34| |tree fitty| +|08/01/2022 09:31:34| |THE END| +|08/01/2022 09:31:36| KINO +|08/01/2022 09:31:36| |if you know horses for more than 5 minutes you've also seen horse dicks| +|08/01/2022 09:31:37| |>this is all on a carrier| +|08/01/2022 09:31:38| bravo +|08/01/2022 09:31:38| KINO +|08/01/2022 09:31:39| noooooooooooooooooooooooooooooooooooooooooooo +|08/01/2022 09:31:39| |AND SO THE COWGIRL WHO CHEATED THE ASSIGNEMNTS| +|08/01/2022 09:31:40| |Million dollar daikon| +|08/01/2022 09:31:40| |THE END| +|08/01/2022 09:31:40| |the good, the bad and momo| +|08/01/2022 09:31:40| |THE END| +|08/01/2022 09:31:41| 8888 +|08/01/2022 09:31:42| |>horse stops getting further away| +|08/01/2022 09:31:43| |Maybe they wouldn't have tried to close the school if it didn't have a giant useless mountain range in it| +|08/01/2022 09:31:43| |ITSUMO NO YATSU| +|08/01/2022 09:31:45| |inter inter misiion?| +|08/01/2022 09:31:46| |see yall in 2024| +|08/01/2022 09:31:47| |I want to see a tank shaped like a horse | +|08/01/2022 09:31:47| WHY +|08/01/2022 09:31:47| sip +|08/01/2022 09:31:47| SUGARY +|08/01/2022 09:31:52| SEAMLESS +|08/01/2022 09:31:53| Umai +|08/01/2022 09:31:56| |RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM RUM | +|08/01/2022 09:31:58| |Perfect cut| +|08/01/2022 09:31:59| |wtf bros we just timetraveled backa few months| +|08/01/2022 09:32:00| |bartender sex| +|08/01/2022 09:32:06| |don't use a flag again you fuckin chuunis| +|08/01/2022 09:32:09| |2 YEARS | +|08/01/2022 09:32:10| |Dumb momo| +|08/01/2022 09:32:11| |Cutelass is the only good shark| +|08/01/2022 09:32:11| SEAMLESS +|08/01/2022 09:32:12| F +|08/01/2022 09:32:14| SEEEEEEEEEEEEEEEEEEEEEX +|08/01/2022 09:32:15| |tags: emotionless sexx| +|08/01/2022 09:32:15| wew +|08/01/2022 09:32:19| |THE BURN IT HURTS SO GOOD| +|08/01/2022 09:32:21| |I HATE THE PIRATES| +|08/01/2022 09:32:22| |2 more years...| +|08/01/2022 09:32:23| |10 TIMES THE SPICE| +|08/01/2022 09:32:24| |I DON'T WANT IT TO END!| +|08/01/2022 09:32:27| |murakami pls crush me| +|08/01/2022 09:32:30| |which shark anons| +|08/01/2022 09:32:30| |It was just Mako's dream| +|08/01/2022 09:32:30| |I LOVE THE PIRATES| +|08/01/2022 09:32:32| |BENIS TIEM :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:32:32| |when does it end?| +|08/01/2022 09:32:33| |Momo can't | +|08/01/2022 09:32:33| |they HAVE to be useful next match| +|08/01/2022 09:32:38| |UGIN GANG| +|08/01/2022 09:32:41| |SHARK TEAM WILL BE USEFUL | +|08/01/2022 09:32:43| |LUL get fucked| +|08/01/2022 09:32:48| |love me rum| +|08/01/2022 09:32:51| |The Shark team has to do something.| +|08/01/2022 09:32:51| UHU +|08/01/2022 09:32:53| ANZU +|08/01/2022 09:32:57| |>WW1 tank No they won't be useful| +|08/01/2022 09:32:58| |Isn't fighting without a flag a warcrime?| +|08/01/2022 09:33:01| |SHARK TEAM WILL GET TAKEN OUT BY AN MG| +|08/01/2022 09:33:02| naso +|08/01/2022 09:33:05| |scorched butt lol| +|08/01/2022 09:33:18| |If Shark kill anything my autism will flare up| +|08/01/2022 09:33:26| |Ogin is going to shoot Youko with an actual gun!| +|08/01/2022 09:33:29| 2ugly4photo +|08/01/2022 09:33:33| Anzu +|08/01/2022 09:33:34| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 09:33:34| |NO IMAGE| +|08/01/2022 09:33:36| |SOUND ONLY Momo| +|08/01/2022 09:33:38| |Anzu SEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEX| +|08/01/2022 09:33:38| |no photo...| +|08/01/2022 09:33:39| |kek no image| +|08/01/2022 09:33:39| |NO PIC AVAILABLE| +|08/01/2022 09:33:39| noooooooooooooooo +|08/01/2022 09:33:40| ;_; +|08/01/2022 09:33:40| |no image :(| +|08/01/2022 09:33:42| NOOOOOOOOOOOOOOOOOO +|08/01/2022 09:33:44| |NO IMAGE FOR MOMO| +|08/01/2022 09:33:44| |noooo i love them all don't go| +|08/01/2022 09:33:45| |TL what does anzu mean??| +|08/01/2022 09:33:45| |>no picture literally me| +|08/01/2022 09:33:47| |LETS JUST SCROLL OVER MOMO REAL QUICK| +|08/01/2022 09:33:47| |>suzuki is graduating ;_;| +|08/01/2022 09:33:47| MOMONIMOUS +|08/01/2022 09:33:48| |NO IMAGE| +|08/01/2022 09:33:48| ;_; +|08/01/2022 09:33:49| SODOKO +|08/01/2022 09:33:50| |please dont graduate| +|08/01/2022 09:33:53| bros.... +|08/01/2022 09:33:53| |Feels sad| +|08/01/2022 09:33:55| |not my piyotan| +|08/01/2022 09:33:56| |>the ENTIRE auto club| +|08/01/2022 09:33:57| FINALLY +|08/01/2022 09:33:58| |Alexa play Sillanpään marssilaulu| +|08/01/2022 09:33:59| |auto club getting gutted is a major blow| +|08/01/2022 09:34:00| |Pyo-tan is like 50 years old why did she not graduate already| +|08/01/2022 09:34:00| |don't make me cry...| +|08/01/2022 09:34:00| KATYUSHA +|08/01/2022 09:34:00| |KATYUSHACHADS ITS OUR TIME| +|08/01/2022 09:34:00| |The end of an era| +|08/01/2022 09:34:00| |Anzu legs| +|08/01/2022 09:34:01| |Anzu... my cunny| +|08/01/2022 09:34:01| |All this tank battling almost makes me want to play World of Tanks. Still not gonna though.| +|08/01/2022 09:34:01| Anzu... +|08/01/2022 09:34:02| ;_; +|08/01/2022 09:34:03| URAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:34:03| |Anzu TL....| +|08/01/2022 09:34:04| |ERIKA TIME LADS| +|08/01/2022 09:34:04| |EASTERN FRONT| +|08/01/2022 09:34:06| |RIP LEOPON| +|08/01/2022 09:34:06| |WANI WANI WANI WANI| +|08/01/2022 09:34:07| |it's okay guys momo is repeating the year| +|08/01/2022 09:34:07| |HULL DOWN| +|08/01/2022 09:34:09| |OH SHIT ITS KURSK| +|08/01/2022 09:34:09| |stupid midget stupid hubris| +|08/01/2022 09:34:09| |ERIKA BROS!| +|08/01/2022 09:34:09| |what the fuck, who will fix tanks and drift ferocisouly| +|08/01/2022 09:34:10| |>new freshman characters soon| +|08/01/2022 09:34:10| |MIGDET TIME| +|08/01/2022 09:34:12| ERIKA!!! +|08/01/2022 09:34:12| |Auto club ;_;| +|08/01/2022 09:34:13| |pls don't job this time Maus| +|08/01/2022 09:34:14| Erikabros +|08/01/2022 09:34:14| |SIEG HEIL o/| +|08/01/2022 09:34:15| |Prepare to get Wani'd| +|08/01/2022 09:34:15| KURSK +|08/01/2022 09:34:16| |GREMLIM TIME| +|08/01/2022 09:34:17| |ERIKA HOURS| +|08/01/2022 09:34:19| |ERIKA CHARACTER DEVELOPMENT ARC| +|08/01/2022 09:34:20| MAUS +|08/01/2022 09:34:21| |Why the tanned Leopon girls got to graduate?| +|08/01/2022 09:34:21| |REVENGE FOR NORWAY| +|08/01/2022 09:34:22| MASSUGU +|08/01/2022 09:34:23| |hand signal time| +|08/01/2022 09:34:25| ERIKA +|08/01/2022 09:34:25| |DUMB CUTE WANI LOVE | +|08/01/2022 09:34:26| |CUTE WANI| +|08/01/2022 09:34:28| |ZENSHIN ARU NOMI| +|08/01/2022 09:34:32| |>hand signals| +|08/01/2022 09:34:32| |OMG ERIKA EPIC NOW??| +|08/01/2022 09:34:34| |secret signs| +|08/01/2022 09:34:35| |Dumb fucking hand signs, just talk| +|08/01/2022 09:34:35| |>they don't have radios| +|08/01/2022 09:34:36| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:34:37| PRINYATA +|08/01/2022 09:34:37| |Erika we need to develop your character for the semifinals| +|08/01/2022 09:34:38| CUTE +|08/01/2022 09:34:38| |What's the point of the Panzer III?| +|08/01/2022 09:34:39| |you can't learn russian| +|08/01/2022 09:34:40| |The only actual Russian| +|08/01/2022 09:34:42| |tacticool hand signs| +|08/01/2022 09:34:43| cute +|08/01/2022 09:34:44| lmao +|08/01/2022 09:34:45| WHAT? +|08/01/2022 09:34:45| |CYKA BLYAT| +|08/01/2022 09:34:48| |SHES SO CUTE LADS| +|08/01/2022 09:34:48| cute +|08/01/2022 09:34:48| |I LOVE KATYUSHA'S GAY MOMS| +|08/01/2022 09:34:49| |panzer III is cute| +|08/01/2022 09:34:50| CUTE +|08/01/2022 09:34:53| |you don't even know japanese| +|08/01/2022 09:34:54| |NO RUSSIAN ONLY HAND SIGNALS| +|08/01/2022 09:34:54| |Why is she doing hand signals when they have radio| +|08/01/2022 09:34:56| |NIHONGO DE HANASHI NASAI YO!| +|08/01/2022 09:34:56| UOOOOOOOOOOOOHHHHHHH +|08/01/2022 09:34:57| |SHadow puppets lel| +|08/01/2022 09:34:57| |NIHONGO DE HANASHINASAI YO| +|08/01/2022 09:34:58| |Is Karla a haffu?| +|08/01/2022 09:34:58| |GED OUD OF HIR SDALGER| +|08/01/2022 09:34:58| |You will never learn Russian ;_;| +|08/01/2022 09:35:00| OPACHKI +|08/01/2022 09:35:02| |dude vodka lmao| +|08/01/2022 09:35:06| |remember no handsings| +|08/01/2022 09:35:07| btfo +|08/01/2022 09:35:07| |shot trap kitaa| +|08/01/2022 09:35:08| |MAUS BROS.......| +|08/01/2022 09:35:09| CLANG +|08/01/2022 09:35:10| |MAUS JOBBED AGAIN| +|08/01/2022 09:35:11| OMG +|08/01/2022 09:35:11| |Klara is a Russian exchange student| +|08/01/2022 09:35:12| |SHOT TRAP| +|08/01/2022 09:35:12| |You will never be Slavic| +|08/01/2022 09:35:13| pos +|08/01/2022 09:35:13| BAM +|08/01/2022 09:35:14| |Couldn't they just shoot the tracks out on the Maus| +|08/01/2022 09:35:14| |>entrenching your tank all the way up to the turret| +|08/01/2022 09:35:14| |KV-2's FIRST KILL| +|08/01/2022 09:35:14| F +|08/01/2022 09:35:14| ded +|08/01/2022 09:35:15| |hand signals disrespected into shadow puppets| +|08/01/2022 09:35:15| |CRITICL HIT| +|08/01/2022 09:35:16| KV-CHAN!!!! +|08/01/2022 09:35:17| |HOLY SHIT| +|08/01/2022 09:35:19| |the mouse...| +|08/01/2022 09:35:19| |based kv2| +|08/01/2022 09:35:20| |KV2 KILL| +|08/01/2022 09:35:21| |date date date| +|08/01/2022 09:35:21| |maus lol| +|08/01/2022 09:35:21| |Maus? More like JOB| +|08/01/2022 09:35:24| KV-CHAN +|08/01/2022 09:35:25| |DRIVER'S FUCKING DEAD| +|08/01/2022 09:35:26| |Maus bros no way...| +|08/01/2022 09:35:26| OGEY +|08/01/2022 09:35:27| |i want the kv2 grils to beat me up| +|08/01/2022 09:35:27| |6 crew ded| +|08/01/2022 09:35:31| |date date date (for Yukari)| +|08/01/2022 09:35:31| |ERIKA SEETHING| +|08/01/2022 09:35:32| |UNFUCK YOURSELF WANI FUCK| +|08/01/2022 09:35:34| |erika mad| +|08/01/2022 09:35:39| |Charge in like retards!| +|08/01/2022 09:35:39| KUU +|08/01/2022 09:35:40| |is that a fucking ferdinand?| +|08/01/2022 09:35:41| |DUMB WANI| +|08/01/2022 09:35:42| |KAHVEH TAN WE HAVE THIS IN THE BAG| +|08/01/2022 09:35:42| 前進あるのみ! +|08/01/2022 09:35:42| |Mein Gott it's another Stalingrad| +|08/01/2022 09:35:43| WAAAAAAANNNNNNNIIIIIIIIII +|08/01/2022 09:35:43| |UNFUCK YOURSELF WANI FUCK| +|08/01/2022 09:35:45| TOTSUGEKI +|08/01/2022 09:35:45| |kuroromine must hate maus team| +|08/01/2022 09:35:46| |WANI AF| +|08/01/2022 09:35:48| |OH NONONOOOON WANIBRO....THIS IS IT| +|08/01/2022 09:35:48| |KURSK FLASHBACKS| +|08/01/2022 09:35:49| |chihatan moment| +|08/01/2022 09:35:59| 786KB +|08/01/2022 09:36:00| autism +|08/01/2022 09:36:01| |God Koume is so useless| +|08/01/2022 09:36:02| |ERIKA SEETHING| +|08/01/2022 09:36:03| |how many operators does the maus need anyways| +|08/01/2022 09:36:03| Erika... +|08/01/2022 09:36:04| |RED ARMY BROS| +|08/01/2022 09:36:04| |FIND YOUR OWN SENSHADOU| +|08/01/2022 09:36:04| |Its over| +|08/01/2022 09:36:07| >Kursk +|08/01/2022 09:36:08| |Erika, jus B urself. - Maho| +|08/01/2022 09:36:08| EEEEEEEEERIKA +|08/01/2022 09:36:08| |Pay to Win Black Forest| +|08/01/2022 09:36:09| |MY MAHO WIFE| +|08/01/2022 09:36:10| |COPE WANI| +|08/01/2022 09:36:10| |is it really nishizumi way to charge entrenched high ground enemy| +|08/01/2022 09:36:10| BORSCHT +|08/01/2022 09:36:10| (((((786kb)))))) +|08/01/2022 09:36:11| |fucking borscht| +|08/01/2022 09:36:11| BORSCHT +|08/01/2022 09:36:11| FEGELIN +|08/01/2022 09:36:11| shellshock +|08/01/2022 09:36:12| |FORMER CHAMPION: CHARGES FORTIFIED POSITION WITH NO PLAN| +|08/01/2022 09:36:13| SEETH +|08/01/2022 09:36:13| 前進困難です! +|08/01/2022 09:36:14| |We've got this Pravbros| +|08/01/2022 09:36:14| |Erika looking like a soup sandwich| +|08/01/2022 09:36:14| SEETHING +|08/01/2022 09:36:16| |what a loser| +|08/01/2022 09:36:17| |AND THEN ERIKA BECAME A GENIUS| +|08/01/2022 09:36:17| seething +|08/01/2022 09:36:17| |find own senshado = autism| +|08/01/2022 09:36:22| |ganbare erika| +|08/01/2022 09:36:23| |Chuuni wani| +|08/01/2022 09:36:23| |increase autism 400%| +|08/01/2022 09:36:24| |J O M P| +|08/01/2022 09:36:26| |Time for Kino tank jump| +|08/01/2022 09:36:27| |DUMB WANI| +|08/01/2022 09:36:28| |NISHIZUMI STYLE| +|08/01/2022 09:36:29| |Miho be like:| +|08/01/2022 09:36:29| |ENLIGHTENED WANI| +|08/01/2022 09:36:29| WAHOO +|08/01/2022 09:36:35| |LUL prepar to get fucked Stalin| +|08/01/2022 09:36:35| ???????????????????????????? +|08/01/2022 09:36:36| |SHE DID DA JUMP| +|08/01/2022 09:36:37| |At that moment she became less of a bitch| +|08/01/2022 09:36:37| |ASSUMINg DIRECT CONTROL| +|08/01/2022 09:36:38| EEEERIKA +|08/01/2022 09:36:39| |WANI REBORN| +|08/01/2022 09:36:39| |CHUUNI INBOUND| +|08/01/2022 09:36:40| Kohlenklau +|08/01/2022 09:36:40| |MY TANK NOW| +|08/01/2022 09:36:40| |just switch tanks lole| +|08/01/2022 09:36:41| 私だけの戦車道・・・ +|08/01/2022 09:36:43| |Shiho gonna disown Erika for following her own senshado| +|08/01/2022 09:36:43| |Time for Blitz| +|08/01/2022 09:36:45| cute +|08/01/2022 09:36:45| |BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG| +|08/01/2022 09:36:47| |That face| +|08/01/2022 09:36:50| |IT'S SANIC TIME| +|08/01/2022 09:36:53| KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG +|08/01/2022 09:36:53| |Hey that's us!| +|08/01/2022 09:36:56| |Crew art is kino| +|08/01/2022 09:36:56| |lemme just switch tanks mid battle| +|08/01/2022 09:36:57| |danmaku she says| +|08/01/2022 09:36:58| |AROUND THE MAGINOT INT THE ARDENNES| +|08/01/2022 09:37:00| |LITERALLY US | +|08/01/2022 09:37:00| DANMAKU +|08/01/2022 09:37:00| 弾幕! +|08/01/2022 09:37:04| |Panthers are cute| +|08/01/2022 09:37:04| |FUCK SLOW AND STEADY, GO FAST EAT ASS| +|08/01/2022 09:37:04| >_0 +|08/01/2022 09:37:05| TINY +|08/01/2022 09:37:06| |ITS TIME ERIKA BROS!!!!| +|08/01/2022 09:37:07| |GUDERIAN RISES| +|08/01/2022 09:37:08| |GET DOWN FROM THERE IT'S DANGEROUS | +|08/01/2022 09:37:10| |SIEG HEIL o/| +|08/01/2022 09:37:13| |BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG BEWEGUNGSKRIEG| +|08/01/2022 09:37:14| EEEERIKA +|08/01/2022 09:37:14| |dat shimmy| +|08/01/2022 09:37:14| |BALANCING KATYUSHA| +|08/01/2022 09:37:14| |ITS TIME NAZBROS| +|08/01/2022 09:37:17| o/ +|08/01/2022 09:37:17| ERIKA! +|08/01/2022 09:37:17| EEEEEEERIKA +|08/01/2022 09:37:18| ERIKA +|08/01/2022 09:37:18| |PANZERELITE BORN TO COMPETE| +|08/01/2022 09:37:20| |GREN HILL ZONE (shittyfluted). MP3| +|08/01/2022 09:37:20| |AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELEIN| +|08/01/2022 09:37:20| EEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:20| |AUF DER HEIDE BLÜHT EIN KLEINES BLÜMELEIN| +|08/01/2022 09:37:21| |UND DAS HEIẞT| +|08/01/2022 09:37:21| |UND DAS HEISST| +|08/01/2022 09:37:21| |UND DAS HEISST| +|08/01/2022 09:37:22| EEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:22| ERIKA +|08/01/2022 09:37:22| |HEIL ERIKA o/| +|08/01/2022 09:37:22| |UND DAS HEISST| +|08/01/2022 09:37:23| ERIKAAAAAAAAA +|08/01/2022 09:37:23| ERIKA! +|08/01/2022 09:37:24| |WHEN ARE THEY GONNA SING ERIKA?!?!?!?!?!!?| +|08/01/2022 09:37:24| 前進あるのみ! +|08/01/2022 09:37:25| EEEEEEEEEEEEERIKA +|08/01/2022 09:37:25| Erika +|08/01/2022 09:37:25| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:26| |bum bum bum| +|08/01/2022 09:37:26| |KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG KRAFTFAHRZEUGHAFTPFLICHTVERSICHERUNG| +|08/01/2022 09:37:27| e +|08/01/2022 09:37:27| EEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:27| EEEEEEEEERIKA +|08/01/2022 09:37:27| ERIKAAAAAAAAAAAAA +|08/01/2022 09:37:28| ERIIIIIIKA +|08/01/2022 09:37:28| |UND DAS HEIST| +|08/01/2022 09:37:29| |KUROMORIMINE UBER ALLES| +|08/01/2022 09:37:29| o7 +|08/01/2022 09:37:30| |we love u erika| +|08/01/2022 09:37:31| ERIKA +|08/01/2022 09:37:31| EEEEERIKA +|08/01/2022 09:37:32| ERIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:37:33| |GO GO GO ERIKAAAAAA| +|08/01/2022 09:37:33| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:34| |PRESS S TO STAMP YOUR FEET TO ERIKA| +|08/01/2022 09:37:36| |WANI WANI WANI| +|08/01/2022 09:37:37| EEEEEERIIIKAAAAAAAAAAAAAAA +|08/01/2022 09:37:37| EEEEEEEEERIKA +|08/01/2022 09:37:37| ERIKAAAAAAAAAA +|08/01/2022 09:37:37| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:38| ERIKAAAA +|08/01/2022 09:37:38| |UND DAST HIEST ERRRIIIKKAAAAAAA| +|08/01/2022 09:37:39| EEEEEEEEEERRRRRRRRRRIIIIIIIIIIIIIIIIIIKKKKKKKKKKKKAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:37:39| |watashi no senshado...| +|08/01/2022 09:37:40| EEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:40| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:40| |ERIKA IS STILL A SHIT| +|08/01/2022 09:37:41| |>THE FUCK IS THIS? THE FUCK IS THAT?| +|08/01/2022 09:37:42| ERIKAAAAA +|08/01/2022 09:37:43| ERIKA +|08/01/2022 09:37:43| |WHAT IF THE REAL RIECH WAS THE FRIENDS WE MADE ALONG THE WAY?????????????????????????????????????????????| +|08/01/2022 09:37:43| |Erika is the smartest| +|08/01/2022 09:37:43| EEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:43| |UND DAST HEIST| +|08/01/2022 09:37:45| EEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:46| |Hartmann is best Erika| +|08/01/2022 09:37:47| EEEEEEEEEEEEERRRRRRRRRRRIKKKKKKKKKKKKKKKAAAAAAAAA +|08/01/2022 09:37:47| |1488 HEIL ERIKA| +|08/01/2022 09:37:53| |Why aren't they just rushing the flag tank too| +|08/01/2022 09:37:55| |kill that commie bastard| +|08/01/2022 09:37:57| EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERIKA +|08/01/2022 09:37:58| |UND DAS HEISST| +|08/01/2022 09:38:02| |Erika ist meine Frau| +|08/01/2022 09:38:03| :D +|08/01/2022 09:38:03| ERIKA +|08/01/2022 09:38:04| EEEEEEEEEEERIKA +|08/01/2022 09:38:04| EEEEEEEEEEEEERIIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:38:06| EEEEEEEEEEERIKA +|08/01/2022 09:38:07| :D +|08/01/2022 09:38:08| |Don't have to use the Nishizumi way if you ain't Maho| +|08/01/2022 09:38:09| |Erika gehört ins Gas| +|08/01/2022 09:38:10| |Remove Communist| +|08/01/2022 09:38:12| |卐 UND DAS HEIßT EEEERIKAAAAA 卐| +|08/01/2022 09:38:16| |Man Katyusha must be be reall dumb| +|08/01/2022 09:38:17| UTE +|08/01/2022 09:38:18| EEEEEEEERIKA +|08/01/2022 09:38:18| |The music timing| +|08/01/2022 09:38:20| UTE +|08/01/2022 09:38:21| |fat klara| +|08/01/2022 09:38:21| EEEEEEEEEEEEEEEERIKA +|08/01/2022 09:38:22| UTE +|08/01/2022 09:38:25| |Press E to remove Katyusha| +|08/01/2022 09:38:26| KINO +|08/01/2022 09:38:26| |GET FUCKED, KATYUSHA FAGS| +|08/01/2022 09:38:27| stoopid +|08/01/2022 09:38:29| E +|08/01/2022 09:38:32| |lmao good job katyusha| +|08/01/2022 09:38:32| |Klara too thicc| +|08/01/2022 09:38:32| |NOT E| +|08/01/2022 09:38:33| |I FUCKING LOVE ERIKA| +|08/01/2022 09:38:34| TEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:34| TEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:35| |>take two tanks to stop four || sasuga midget| +|08/01/2022 09:38:35| |NISHIZUMI GRADE AUTISM| +|08/01/2022 09:38:35| nukenai +|08/01/2022 09:38:36| |ERIKA AUTISM| +|08/01/2022 09:38:38| CYKA +|08/01/2022 09:38:38| AUTISM +|08/01/2022 09:38:40| AUTISM +|08/01/2022 09:38:41| TTEEEEEE +|08/01/2022 09:38:41| |midgets deserve worse| +|08/01/2022 09:38:41| |LOL YOU TRAPPED DUMB LOLI| +|08/01/2022 09:38:41| TEEEEEEEEEEEE +|08/01/2022 09:38:42| TEEEEEEEEEEEEEE +|08/01/2022 09:38:42| |Cute Erika| +|08/01/2022 09:38:43| TEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:43| |Katyusha and her dumb fucking plan to entrench | +|08/01/2022 09:38:43| AUTISM +|08/01/2022 09:38:43| |Get WRECKED COMMIES| +|08/01/2022 09:38:44| TTEEE +|08/01/2022 09:38:44| |CUTE ERIKA| +|08/01/2022 09:38:45| |[AUTISTIC SCREECHING]| +|08/01/2022 09:38:45| TEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:46| |AUUUTISSSSSSSSMMMMMMMMMMM WAAAAAAAAAAAAAAAA| +|08/01/2022 09:38:47| TEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:38:48| |THIS RESULT IS AHISTORICAL| +|08/01/2022 09:38:49| |SIEG HEIL| +|08/01/2022 09:38:49| FIRE +|08/01/2022 09:38:49| UGAAAAAAA +|08/01/2022 09:38:50| |ERIKA BROS WE FUCKING MADE IT| +|08/01/2022 09:38:50| CUTE +|08/01/2022 09:38:50| CUTE +|08/01/2022 09:38:51| |CYKA BLYAT| +|08/01/2022 09:38:51| |WEIRD HAND SIGNS| +|08/01/2022 09:38:52| kek +|08/01/2022 09:38:52| |CUTE WANI| +|08/01/2022 09:38:52| CUTEYUSHA +|08/01/2022 09:38:52| |Cute | +|08/01/2022 09:38:52| cute! +|08/01/2022 09:38:52| |CUTE AUTISMO!| +|08/01/2022 09:38:52| dumbtyusha +|08/01/2022 09:38:53| ERIKA +|08/01/2022 09:38:53| CUTE +|08/01/2022 09:38:53| CUTE +|08/01/2022 09:38:54| YATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:38:54| ENDSIEG +|08/01/2022 09:38:54| |stupid midget| +|08/01/2022 09:38:54| CUTE +|08/01/2022 09:38:54| mugoooooo +|08/01/2022 09:38:54| CUTE +|08/01/2022 09:38:55| YATA +|08/01/2022 09:38:55| |>LEFT THE HIGH GROUND FOR THIS| +|08/01/2022 09:38:55| |WANI WON!| +|08/01/2022 09:38:56| |COMMIE MIDGET BTFO| +|08/01/2022 09:38:56| CUTEEEE +|08/01/2022 09:38:56| :DDDD +|08/01/2022 09:38:57| SIEG +|08/01/2022 09:38:58| |cute wani| +|08/01/2022 09:38:58| |consolation sex with Katyusha| +|08/01/2022 09:38:58| |my wani erika too cute| +|08/01/2022 09:38:58| |KATYSUHA NOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 09:38:59| |cute wani| +|08/01/2022 09:39:00| Kaai +|08/01/2022 09:39:00| |cute midget face| +|08/01/2022 09:39:01| HEIL +|08/01/2022 09:39:01| |I'm glad lenin can't see us now.| +|08/01/2022 09:39:01| NOOOOOOOOOOO +|08/01/2022 09:39:01| CUTE +|08/01/2022 09:39:01| |Erika poses| +|08/01/2022 09:39:02| |CUTE CUTE CUTE| +|08/01/2022 09:39:02| YATTA +|08/01/2022 09:39:02| |WANI IS NOT A LOSER!| +|08/01/2022 09:39:03| cuteyusha +|08/01/2022 09:39:04| |happi wani| +|08/01/2022 09:39:04| |Have you already forgetting what a cunt Erika was in S1?| +|08/01/2022 09:39:04| |WIEDER EIN SIEG FUR KMM| +|08/01/2022 09:39:06| DUCE +|08/01/2022 09:39:06| PASTA +|08/01/2022 09:39:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:07| |Russian midget gets rekt by Kraut Autist| +|08/01/2022 09:39:07| |DUN DUNNNNN+| +|08/01/2022 09:39:08| |IS AUTISM AN STD? I THINK ERIKA JUST INHERITED FROM MAHO| +|08/01/2022 09:39:08| |NO BULLI ANZIO| +|08/01/2022 09:39:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:09| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:39:09| |>I never thought they would just go around!| +|08/01/2022 09:39:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:10| FUOCO +|08/01/2022 09:39:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:10| |DUCE | +|08/01/2022 09:39:10| |duce pls| +|08/01/2022 09:39:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:12| |DUCE DUCE DUCE DUCE!| +|08/01/2022 09:39:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:14| |INVEST IN CHOVY NOW| +|08/01/2022 09:39:14| DUCE +|08/01/2022 09:39:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:16| |FUCK COMMUNISM| +|08/01/2022 09:39:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:16| |DUC DUC DUC| +|08/01/2022 09:39:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:17| |DUCE DUCE DUCE| +|08/01/2022 09:39:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:18| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:39:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:21| HANA-CHAN +|08/01/2022 09:39:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:22| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:23| |DUCE DUCE DUCE| +|08/01/2022 09:39:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:23| |GANBARE DUCE| +|08/01/2022 09:39:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:26| |duce DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUC E| +|08/01/2022 09:39:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:26| |LETS GO DUCE BROS| +|08/01/2022 09:39:27| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 09:39:27| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:39:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:27| |ANZIO GANBAREEEEEEE| +|08/01/2022 09:39:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:29| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:30| DVCEDVCEDVCEDVCEDVCEDVCE +|08/01/2022 09:39:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:30| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DV| +|08/01/2022 09:39:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:31| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:39:32| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:39:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:34| |HINA CHAN| +|08/01/2022 09:39:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:35| DUCEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:39:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:35| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:39:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:36| |BEAT THE SLAGS| +|08/01/2022 09:39:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:38| DUUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +|08/01/2022 09:39:38| |DUCE DUCE DUCE| +|08/01/2022 09:39:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:39| |DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:40| |at least get the tankettes with at rifles| +|08/01/2022 09:39:40| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:40| BURN +|08/01/2022 09:39:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:40| BTFO +|08/01/2022 09:39:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:42| |DVCE DVCE DVCE DVCE| +|08/01/2022 09:39:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:43| tru +|08/01/2022 09:39:43| |BONGS BTFO| +|08/01/2022 09:39:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:43| BASED +|08/01/2022 09:39:44| |UNLIMITED DUCE WORK| +|08/01/2022 09:39:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:45| |>BRITISH FOOD| +|08/01/2022 09:39:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:45| |ENGLISH BTFO| +|08/01/2022 09:39:45| |YOUR FOOD SUCKS BRIT| +|08/01/2022 09:39:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:46| |BONGS BTFO| +|08/01/2022 09:39:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:46| |DVCE IS CUTE| +|08/01/2022 09:39:46| BASED +|08/01/2022 09:39:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:47| |they just lost| +|08/01/2022 09:39:47| |STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!| +|08/01/2022 09:39:47| |DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:39:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:48| |>british cuisine| +|08/01/2022 09:39:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:48| dvce +|08/01/2022 09:39:48| |BASED DUCE| +|08/01/2022 09:39:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:50| |TALK THAT SHIT DUCE| +|08/01/2022 09:39:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:50| |BRITBONG GTFO| +|08/01/2022 09:39:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:51| |DUCE AGAINST BAD FOOD| +|08/01/2022 09:39:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:51| |>CV33 || >flagged after one hit || rigged| +|08/01/2022 09:39:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:54| |SLAGS BTFO| +|08/01/2022 09:39:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:54| |>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +|08/01/2022 09:39:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:54| DUCE!!!! +|08/01/2022 09:39:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:55| |STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!STOOOBID BEBBERONI!!| +|08/01/2022 09:39:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:56| |WORLD'S WORST CUISINE| +|08/01/2022 09:39:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE| +|08/01/2022 09:39:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:39:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:58| |DUCE DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE| +|08/01/2022 09:39:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:39:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:59| |OPERATION FARFALLE| +|08/01/2022 09:39:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:39:59| |>BRITISH FOOD | +|08/01/2022 09:39:59| |Can't outrun the Rosehip tough| +|08/01/2022 09:39:59| |>british "food"| +|08/01/2022 09:40:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:00| DUCE +|08/01/2022 09:40:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:01| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:02| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:03| LUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL +|08/01/2022 09:40:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:05| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:05| |>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +|08/01/2022 09:40:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:06| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:07| |DUCE DUCE DUCE| +|08/01/2022 09:40:08| |DUCE DUCE DUCE DUCE| +|08/01/2022 09:40:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:10| |DUCE DUCE DUCE DUCE| +|08/01/2022 09:40:10| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:13| |>The food of this country is not very good| +|08/01/2022 09:40:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:14| |inferior cuisine!!!| +|08/01/2022 09:40:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:16| |>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +|08/01/2022 09:40:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:40:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:18| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:19| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:19| |Come on England| +|08/01/2022 09:40:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:20| |>BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD >BRITISH FOOD | +|08/01/2022 09:40:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:20| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:21| |DUCE i guess| +|08/01/2022 09:40:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:21| |PIZZA PASTA PUT IT IN A BOX| +|08/01/2022 09:40:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:23| |BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""| +|08/01/2022 09:40:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:25| |BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""BRITISH """""FOOD"""""| +|08/01/2022 09:40:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:26| |DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:26| |BONG BTFO| +|08/01/2022 09:40:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE V| +|08/01/2022 09:40:28| ..................... +|08/01/2022 09:40:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:29| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:40:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:31| |CAM ON INGERLAND SCORE SAM FACKING PANZERS| +|08/01/2022 09:40:31| |SMART DUCE| +|08/01/2022 09:40:31| |SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI SI| +|08/01/2022 09:40:31| |cute baka| +|08/01/2022 09:40:32| ????????????????????????????????????????????????????????????????????????????????? +|08/01/2022 09:40:32| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:33| RETARD +|08/01/2022 09:40:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:34| BAKAS +|08/01/2022 09:40:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:35| BAKARONI +|08/01/2022 09:40:35| DUCE... +|08/01/2022 09:40:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:35| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:36| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:36| |LOW IQ| +|08/01/2022 09:40:36| BAKA +|08/01/2022 09:40:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:37| FOUCO +|08/01/2022 09:40:37| |AHHHHHHHHHHHHHH DUCE IS TOO CUTE| +|08/01/2022 09:40:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:38| FUOCO +|08/01/2022 09:40:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:40:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:40| FUOCO +|08/01/2022 09:40:40| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:40| fuoco +|08/01/2022 09:40:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:41| |DUCE PLEASE| +|08/01/2022 09:40:41| FOUCO +|08/01/2022 09:40:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:42| ENTER +|08/01/2022 09:40:43| FUOCO +|08/01/2022 09:40:43| DVCE +|08/01/2022 09:40:44| FUOCO +|08/01/2022 09:40:44| SPEED +|08/01/2022 09:40:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:44| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:45| |cute bakaroni| +|08/01/2022 09:40:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:46| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:47| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:47| ROSEHIP +|08/01/2022 09:40:47| |LOOK AT THE CUTE LITTLE TANKLETS| +|08/01/2022 09:40:47| |ROSEHIP TIME| +|08/01/2022 09:40:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:48| |DUMB DVCE| +|08/01/2022 09:40:48| |DVCE DVCE DVCE DVE DVCE| +|08/01/2022 09:40:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:48| |PROTECTDVCE! DVCE! | +|08/01/2022 09:40:49| |DVCE WO MAMORE| +|08/01/2022 09:40:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:50| SPEED +|08/01/2022 09:40:50| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:40:50| |QUEEN OF SNEED| +|08/01/2022 09:40:50| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:50| |MY WIFE, ROSEHIP| +|08/01/2022 09:40:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:51| |QUEEN OF SPEED| +|08/01/2022 09:40:51| |THE QUEEN OF SNEED HAS ARRIVED| +|08/01/2022 09:40:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:52| |Crazy Rosehip bouncing up and down| +|08/01/2022 09:40:52| DVCE +|08/01/2022 09:40:52| |PROTECT DUCE| +|08/01/2022 09:40:53| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:53| ROSEHIP +|08/01/2022 09:40:53| |ROSEHIP THE SPEED QUEEN| +|08/01/2022 09:40:53| |GAS GAS GAS| +|08/01/2022 09:40:53| |THAT SLOWMO| +|08/01/2022 09:40:54| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:40:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:40:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:40:56| |I can't beleive Duce is fucking dead!| +|08/01/2022 09:40:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:40:56| |PROTECT DUCE| +|08/01/2022 09:40:56| |PROTECT DUCE| +|08/01/2022 09:40:56| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:40:57| BAKAHIP +|08/01/2022 09:40:57| |ROSEHIP | +|08/01/2022 09:41:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:00| |top gloriana| +|08/01/2022 09:41:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:01| QUEEEEEEEEEEEEEEEEEEEENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +|08/01/2022 09:41:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:03| |NEED FOR SNEED| +|08/01/2022 09:41:03| |>bringing MG tankettes to a tank fight| +|08/01/2022 09:41:03| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:04| |PIZZA TIME| +|08/01/2022 09:41:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:04| |protect dvce| +|08/01/2022 09:41:04| |DUCE BROS WE GOT THIS| +|08/01/2022 09:41:04| |ITALIAN MARCHES ARE SO KINO| +|08/01/2022 09:41:05| |BRITANIA RULES THE WAVES| +|08/01/2022 09:41:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:06| |THE INVINCIBLE CARRO VEROCE| +|08/01/2022 09:41:06| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:07| F +|08/01/2022 09:41:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:41:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:07| DUNKED +|08/01/2022 09:41:07| DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCE +|08/01/2022 09:41:09| |ITALIAN AKKO IS VERY CUTE| +|08/01/2022 09:41:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:11| |DUCE BROS WE'RE WINNING| +|08/01/2022 09:41:11| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:12| |ROSEHIP NOOOOOOOO| +|08/01/2022 09:41:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:13| DEAD +|08/01/2022 09:41:13| |Classic strat| +|08/01/2022 09:41:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:15| |BASD AS FUCK| +|08/01/2022 09:41:15| |GET REKT BONGS| +|08/01/2022 09:41:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:16| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:41:17| F +|08/01/2022 09:41:19| |WE HAVE THIS ANZIO| +|08/01/2022 09:41:19| DROWNED +|08/01/2022 09:41:19| |RAT TAT TAT| +|08/01/2022 09:41:19| |DUCEBROS WE GOT THIS| +|08/01/2022 09:41:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:41:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:23| |WE CAN DO IT| +|08/01/2022 09:41:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:24| |bongs do not rule the waves| +|08/01/2022 09:41:24| |ESCAPE IS WIN| +|08/01/2022 09:41:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:25| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:26| |DVCE BROS LETS FUCKING GOOO| +|08/01/2022 09:41:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:28| |ESCAPE IS WIN| +|08/01/2022 09:41:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:30| |WHAT ARE THOSE MG EVEN FOR| +|08/01/2022 09:41:30| |ESCAPE IS WIN DESUWA| +|08/01/2022 09:41:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:31| ESCAPE +|08/01/2022 09:41:31| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:32| |ESCAPE IS WIN| +|08/01/2022 09:41:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:34| |ESCAPE IS WIN DESUWA| +|08/01/2022 09:41:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:34| |escape is win desu wa| +|08/01/2022 09:41:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:34| |classic anglo behavior| +|08/01/2022 09:41:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:37| |They got 1| +|08/01/2022 09:41:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:37| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:37| |PROTECT DUCE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 09:41:37| |WHOLE TEAM CHASING ONE TANK| +|08/01/2022 09:41:37| |Still can't outrun the Rosehip| +|08/01/2022 09:41:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 09:41:38| |OH NOOOOOOOOOOOOOO| +|08/01/2022 09:41:38| |ESCAPE TO VICTORY| +|08/01/2022 09:41:40| |DUCE NOOOOOOOOOOOOOOOOO| +|08/01/2022 09:41:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:40| |OUT FUCKING SKILLED| +|08/01/2022 09:41:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:41| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:43| |dio mio| +|08/01/2022 09:41:43| FUOCO +|08/01/2022 09:41:44| |PROTECT THE DUVCE| +|08/01/2022 09:41:44| Ducebros... +|08/01/2022 09:41:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:45| |When in Doubt, Testudo it out.| +|08/01/2022 09:41:45| NOOOOOOO +|08/01/2022 09:41:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:46| FOUCO +|08/01/2022 09:41:47| ;_;7 +|08/01/2022 09:41:47| F +|08/01/2022 09:41:47| |RIP DVCE| +|08/01/2022 09:41:48| CRUSHED +|08/01/2022 09:41:48| |Too cocky| +|08/01/2022 09:41:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:41:49| |FUCKING SLAG| +|08/01/2022 09:41:49| ded +|08/01/2022 09:41:49| RIGGED +|08/01/2022 09:41:49| |They forgot the tank behind her| +|08/01/2022 09:41:50| NOOOOOOOOOOOOOOOO +|08/01/2022 09:41:51| NOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:41:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCE DUCEDUCE| +|08/01/2022 09:41:51| |DUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE DUCEDUCE DUCE DUCE DUCE | +|08/01/2022 09:41:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:51| HOUGEKI +|08/01/2022 09:41:51| |DVCE BROS| +|08/01/2022 09:41:52| |MAMA MIA| +|08/01/2022 09:41:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:41:52| DUCE... +|08/01/2022 09:41:53| |not like this...mamma mia| +|08/01/2022 09:41:53| |skill issue| +|08/01/2022 09:41:53| BRI'ISHED +|08/01/2022 09:41:54| ded +|08/01/2022 09:41:54| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:41:54| |PROTECT DUCE| +|08/01/2022 09:41:55| ;__________________________________; +|08/01/2022 09:41:55| rip +|08/01/2022 09:41:55| |DUCE NOOOOOOOOOO| +|08/01/2022 09:41:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:56| |pastafags... not again...| +|08/01/2022 09:41:56| RIP +|08/01/2022 09:41:56| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:41:56| |can't believe she fucking died| +|08/01/2022 09:41:56| |FUCK ST. GLORIANA| +|08/01/2022 09:41:57| DVCEBROS!? +|08/01/2022 09:41:57| RIP +|08/01/2022 09:41:57| |PILE ON ME| +|08/01/2022 09:41:58| |NOOOOOOOOOOOOOOOOOOOOO IT WAS ANZIOS YEAR| +|08/01/2022 09:41:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE?| +|08/01/2022 09:41:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:41:59| |RIGGED MATCH RIGGED MATCH RIGGED MATCH RIGGED MATCH| +|08/01/2022 09:41:59| |DVCE ;_;| +|08/01/2022 09:41:59| |DUCEBROS WHAT HAPPENED| +|08/01/2022 09:42:00| ;_;7 +|08/01/2022 09:42:00| |PERFIDIOUS ALBION| +|08/01/2022 09:42:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:42:01| ;_; +|08/01/2022 09:42:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:42:01| |duce is a loser lol| +|08/01/2022 09:42:02| |dvce... no| +|08/01/2022 09:42:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:42:03| |CUTE DUCE| +|08/01/2022 09:42:03| f +|08/01/2022 09:42:04| |WE WERE SUPPOSED TO WIN DVCE BROS| +|08/01/2022 09:42:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:42:04| nooooooooooooooooooooooooooooooooooooooo +|08/01/2022 09:42:05| |GOTT STRAFE ENGLAND| +|08/01/2022 09:42:06| |I HATE ST. GLORIANA SO GODDAMN MUCH| +|08/01/2022 09:42:06| cute +|08/01/2022 09:42:06| DVCEBROS..... +|08/01/2022 09:42:07| FAIYA +|08/01/2022 09:42:07| |TEAM PASTA BLASTS OFF AGAIN| +|08/01/2022 09:42:08| |ONLY KILLED 1 TANK| +|08/01/2022 09:42:08| |>duce graduates this year| +|08/01/2022 09:42:09| |RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED RIGGED | +|08/01/2022 09:42:09| DUCEBROS +|08/01/2022 09:42:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:42:10| |Duce too banged up| +|08/01/2022 09:42:10| |SUOMI SUOMI SUOMI| +|08/01/2022 09:42:11| |DUCE BROS HOW COULD THIS HAPPEN| +|08/01/2022 09:42:14| |USA USA USA| +|08/01/2022 09:42:15| jabronis +|08/01/2022 09:42:15| |TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +|08/01/2022 09:42:16| |OH NONONONONNOONONONO| +|08/01/2022 09:42:16| |DUCE BROS WTFFFFFFFFFFFFFFFFF| +|08/01/2022 09:42:16| |ALEXA PLAY Jääkärimarssi\| +|08/01/2022 09:42:16| |IT'S JOB TIME, SAUNDER BROS| +|08/01/2022 09:42:16| |FIREBOMB ST. GLORIANA| +|08/01/2022 09:42:17| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:17| |O SHID :DDDDDDDDDDDDD| +|08/01/2022 09:42:18| |USA USA USA| +|08/01/2022 09:42:18| |ANZIOBROS... HOW COULD THIS BE| +|08/01/2022 09:42:19| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:19| |PERKELE! :dddddddddddddd| +|08/01/2022 09:42:19| |USA USA USA| +|08/01/2022 09:42:20| |DULDA :DDDDDDDDDDDDDDDD| +|08/01/2022 09:42:20| >Jobsters +|08/01/2022 09:42:20| |MIKA STOLE MY HEART| +|08/01/2022 09:42:21| |KAY KAY KAY KAY KAY KAY| +|08/01/2022 09:42:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:22| |usa bros...| +|08/01/2022 09:42:22| |USA USA USA| +|08/01/2022 09:42:24| |Saunders the eternal jobbers| +|08/01/2022 09:42:24| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:24| KAY +|08/01/2022 09:42:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:26| |THE FINNS HAVE ONE ADVANTAGE| +|08/01/2022 09:42:27| |OH NO DUCE BROS| +|08/01/2022 09:42:28| benis +|08/01/2022 09:42:28| |I guess Caesar will comfort Hina-chan tonight| +|08/01/2022 09:42:28| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:28| |She lost because we didn't spam DUCE enough| +|08/01/2022 09:42:28| |Saki knows| +|08/01/2022 09:42:28| joburgers +|08/01/2022 09:42:29| |SUOMI SUOMI SUOMI| +|08/01/2022 09:42:29| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:29| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:29| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:30| |wow i wonder if they have a sniper somewhere idk guys| +|08/01/2022 09:42:30| :DDDDDDDDDDDDDD +|08/01/2022 09:42:30| |BENIS :DDDDDD| +|08/01/2022 09:42:30| |DULDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:42:31| |THEY CAN AIM| +|08/01/2022 09:42:31| |USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE USE | +|08/01/2022 09:42:33| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:33| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 09:42:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:34| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:35| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:35| |based saki| +|08/01/2022 09:42:35| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:36| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:37| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:37| |SAKI CAN SEE THE FUTURE| +|08/01/2022 09:42:37| |>CERTIFIED JOBBERS| +|08/01/2022 09:42:38| |Cute bunnies eating WcDonalds| +|08/01/2022 09:42:39| |FUG :DDDDDD| +|08/01/2022 09:42:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:40| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:40| FAT +|08/01/2022 09:42:41| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:41| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:41| HNABAGA +|08/01/2022 09:42:41| HAMBAGA +|08/01/2022 09:42:42| |USA USA USA| +|08/01/2022 09:42:42| HAMBAGA +|08/01/2022 09:42:42| |HIS TRUTH IS MARCHING ON| +|08/01/2022 09:42:43| |ARISA IS CUTE!| +|08/01/2022 09:42:43| >burgers +|08/01/2022 09:42:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:45| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:45| |SILLY SAKI| +|08/01/2022 09:42:47| burgers +|08/01/2022 09:42:47| |USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 09:42:48| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:48| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:49| |saunaklonkku with Mika| +|08/01/2022 09:42:49| |ALISA ALISA ALISA ALISA| +|08/01/2022 09:42:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:51| AMERICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:42:51| |JATKOSOTA BEST WAR| +|08/01/2022 09:42:51| |Arisa. Poor Arisa. Too cocky for Takashi| +|08/01/2022 09:42:52| |GLORY GLORY HALLUJEAH| +|08/01/2022 09:42:52| |Fucking bunnies being huge Westaboos| +|08/01/2022 09:42:53| |GLORY GLORY HALLELUJAH| +|08/01/2022 09:42:53| |HIS TRUTH IS MARCHING ON| +|08/01/2022 09:42:55| |BENIS >>> JOBBERS| +|08/01/2022 09:42:55| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:55| |USA USA USA| +|08/01/2022 09:42:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:56| TOTSUGEKI?? +|08/01/2022 09:42:56| TOTSUGEK +|08/01/2022 09:42:56| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:57| TOTSUGEKI! +|08/01/2022 09:42:57| |YOU AIN'T GONNA JUMP NO MORE| +|08/01/2022 09:42:57| |juomalauta voi vittu perkele saatanaaaaaaaaaaaaaaaaa| +|08/01/2022 09:42:58| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:42:58| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:58| |chi ha tan?| +|08/01/2022 09:42:59| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:42:59| |THIS IS OUR TIME BURGERBROS| +|08/01/2022 09:42:59| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:42:59| TOTSUEGEKI +|08/01/2022 09:42:59| TOTSUGEKI +|08/01/2022 09:42:59| |haista vittu :DDDD| +|08/01/2022 09:43:00| |BACK TO BACK WORLD WAR CHAMPS| +|08/01/2022 09:43:00| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:02| |GLORY GLORY HALLEUJA | +|08/01/2022 09:43:02| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:03| |TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER TOMMY COOKER| +|08/01/2022 09:43:03| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:04| |SEX WITH KAY| +|08/01/2022 09:43:04| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:05| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:06| |o fug :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:06| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:08| |USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY USA ALL THE WAY| +|08/01/2022 09:43:08| |BUT THE UNION MAKES US STRONG| +|08/01/2022 09:43:08| |SPAM IN RED WHITE BLUE| +|08/01/2022 09:43:08| |NJET MOLOTOFF| +|08/01/2022 09:43:10| |ALL IN ON BINLAND :DDDDDDDDDDDDDDDD| +|08/01/2022 09:43:10| |GORY GORY WHAT A HELL OF A WAY TO DIE| +|08/01/2022 09:43:10| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:12| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:14| |USA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USAUSA USA| +|08/01/2022 09:43:14| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:15| |USA USA USA| +|08/01/2022 09:43:15| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:15| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:16| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:18| |USA USA USA USA USA USA USA USA| +|08/01/2022 09:43:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:18| |FROM SEA TO SHINING SEA| +|08/01/2022 09:43:19| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:21| |fugg my ass :DDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:23| |stealth :DDDD| +|08/01/2022 09:43:23| |USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 09:43:24| |USA USA USA USA USA UAS| +|08/01/2022 09:43:24| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:25| |Arisa need Takashi for support| +|08/01/2022 09:43:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:26| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:29| |SUOMI SUOMI SUOMI| +|08/01/2022 09:43:30| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:30| LEWD +|08/01/2022 09:43:30| |OH NO| +|08/01/2022 09:43:30| NANI +|08/01/2022 09:43:30| |GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:30| |FUG :DDDDDD| +|08/01/2022 09:43:30| |THE ABSOLUTE MADMEN| +|08/01/2022 09:43:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:33| :DDDDDDDDDDDD +|08/01/2022 09:43:33| |Uh oh| +|08/01/2022 09:43:35| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:35| |GAS GAS GAS| +|08/01/2022 09:43:35| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:35| |god i wish naomi would shoot me| +|08/01/2022 09:43:35| kek +|08/01/2022 09:43:35| |CHRISBIE :DDDDDDDDDDD| +|08/01/2022 09:43:36| PERRRRRRKELE +|08/01/2022 09:43:36| |CHRISDIE SUSBENSION :DDDDDDDDD| +|08/01/2022 09:43:37| |SUOMI SUOMI SUOMI| +|08/01/2022 09:43:37| CHRISTIEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:43:39| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:39| -F-R-E-E-D-O-M- +|08/01/2022 09:43:39| why +|08/01/2022 09:43:39| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:39| |christie suspensiond| +|08/01/2022 09:43:40| |IT'S 2FAST4U TIME| +|08/01/2022 09:43:40| PERKLED +|08/01/2022 09:43:41| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:43| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:44| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:44| SPEEDSTER +|08/01/2022 09:43:45| |fug :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:45| POLKA +|08/01/2022 09:43:45| |SÄKKIJÄRVEN POLKKA| +|08/01/2022 09:43:46| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:46| |CHRISTIE :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:46| |EBIN :DDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:47| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:47| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD FUGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG| +|08/01/2022 09:43:47| |GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:47| |CHIDDIE SUSBENSION| +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| |GHRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| |FUG :DDDDDDDDDDDD| +|08/01/2022 09:43:48| :DDDDDDDDDDDDDDDDD +|08/01/2022 09:43:48| |PERKELE SATANA| +|08/01/2022 09:43:49| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:49| |:DDDDDDDDDDDDDD FUGG| +|08/01/2022 09:43:49| |CRISTY SUSBENTION :DDDDD| +|08/01/2022 09:43:49| :DDDDDDDDDDDDDD +|08/01/2022 09:43:49| :DDDDDDDDDD +|08/01/2022 09:43:49| FUG +|08/01/2022 09:43:49| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:50| |FUGGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDd| +|08/01/2022 09:43:50| |HYVA SUOMI| +|08/01/2022 09:43:51| |No tank treads? Oh no.| +|08/01/2022 09:43:52| :DDDDD +|08/01/2022 09:43:52| :DDDDDDDDDDDDDDDD +|08/01/2022 09:43:52| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:53| FUG +|08/01/2022 09:43:53| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:54| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:54| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:54| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:43:54| :DDDDDDDDDDDD +|08/01/2022 09:43:55| |FUG :DDDDDDDDDDDDDDDD| +|08/01/2022 09:43:55| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:43:56| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:57| |KINO :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:57| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDD FUGGGGG| +|08/01/2022 09:43:58| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:43:59| |HYVÄ :-DDDDDDDDDDDDDDDD| +|08/01/2022 09:43:59| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:00| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:00| https://www.youtube.com/watch?v=5kr4nzEAZ8k +|08/01/2022 09:44:00| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:00| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:01| PRÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +|08/01/2022 09:44:01| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:01| |GET FUCKED BURGERS| +|08/01/2022 09:44:01| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:01| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:02| |GRISDIE SUSBENSION :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:02| BENISBENIS +|08/01/2022 09:44:02| |CHRISDIE SUSBENSION| +|08/01/2022 09:44:02| :XDDDDd +|08/01/2022 09:44:02| |HORSE SHIT| +|08/01/2022 09:44:02| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:03| benis +|08/01/2022 09:44:03| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:03| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:05| PRÖÖÖÖÖÖÖÖÖH +|08/01/2022 09:44:05| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:06| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:06| |:DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDD| +|08/01/2022 09:44:06| |GID FUGGED :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:06| FUGGGGGGGGGGGGGGGGGGGGGGGG +|08/01/2022 09:44:07| |FUGGGGGGGGGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:07| |INVEST IN USA NOW| +|08/01/2022 09:44:08| FUG +|08/01/2022 09:44:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:10| :DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:10| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:11| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:11| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:11| |SATANA PERKELE :DDDDDDDDDDDDDD| +|08/01/2022 09:44:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:12| |HUMPPAA TAIKKA KUOLE, TAIKKA HUMPPAA, TAIKKA KUOLE| +|08/01/2022 09:44:13| |BENIS :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:13| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:13| |HOW ARE YOU MISSING ALISA| +|08/01/2022 09:44:13| |:DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD :DDDDDDDDDDDDDDDDDDDDDDDD | +|08/01/2022 09:44:14| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:14| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:15| |EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDd| +|08/01/2022 09:44:17| |o fug polka :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:17| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:18| |SHE'S RIGHT THERE| +|08/01/2022 09:44:18| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:18| :( +|08/01/2022 09:44:19| |Why do they keep making Alisas dumb ass the flag tank?| +|08/01/2022 09:44:20| |GID REGDT :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:21| |FUCKING BURGERS| +|08/01/2022 09:44:21| |DO U LEIK BENIS?????? :DDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:21| V +|08/01/2022 09:44:21| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:22| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:22| |I BET MY LEFT NUTSACKS ON USA WINNING| +|08/01/2022 09:44:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:23| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:23| based +|08/01/2022 09:44:23| |USA USA USA USAA USA USA USA USA USA USA| +|08/01/2022 09:44:24| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:24| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:25| |USA SUSA USA USA| +|08/01/2022 09:44:25| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:25| V +|08/01/2022 09:44:25| |NAOMI SAVES THE DAY| +|08/01/2022 09:44:26| |FUG | +|08/01/2022 09:44:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:27| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:27| |NAOMI BROS| +|08/01/2022 09:44:28| |USA USA USA| +|08/01/2022 09:44:28| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:29| |U S A| +|08/01/2022 09:44:29| |SAUNDERS WE WINNING| +|08/01/2022 09:44:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:31| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:32| |CHRISDY SUSBENSION| +|08/01/2022 09:44:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:32| |USA USA USA USA USA USA USA USA USA USA USA USA| +|08/01/2022 09:44:32| |:DDDDDDDDDDDDDDDDDDDDDDDD | +|08/01/2022 09:44:32| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:33| |NAOMI PROTECTING HIS GIRLFRIEND| +|08/01/2022 09:44:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:35| DARE??? +|08/01/2022 09:44:35| |OH NONONONONONONONONONONO| +|08/01/2022 09:44:35| |The Bins have arribed :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:35| XDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:35| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:35| |USA USA USA USA USA USA| +|08/01/2022 09:44:35| |YOU'RE IN THE SNIPER'S SIGHT | +|08/01/2022 09:44:36| |HURRY UP!| +|08/01/2022 09:44:36| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:38| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:38| |o fug :DDDDDDDD| +|08/01/2022 09:44:39| trickd +|08/01/2022 09:44:39| KITA +|08/01/2022 09:44:39| |fuck u fin| +|08/01/2022 09:44:40| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:40| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:41| |FINNISH FARMER| +|08/01/2022 09:44:42| M-MASAKA +|08/01/2022 09:44:42| |finnish sniber :DDDDD| +|08/01/2022 09:44:42| |V USA V| +|08/01/2022 09:44:43| JOUKO +|08/01/2022 09:44:44| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:45| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA US AUSA | +|08/01/2022 09:44:45| |white witch :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:46| |WE CAN DO IT SAUNDERS!| +|08/01/2022 09:44:46| |WHITE DEATH| +|08/01/2022 09:44:46| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:46| benis +|08/01/2022 09:44:46| |USA BTFO| +|08/01/2022 09:44:47| |SNIBER :DDDDDD| +|08/01/2022 09:44:47| :DDDDDDDDDDDDDDDD +|08/01/2022 09:44:48| |USA USA USA USA| +|08/01/2022 09:44:48| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:48| |JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB | +|08/01/2022 09:44:49| |HYVA SUOMI HYVA SUOMI HYVA SUOMI| +|08/01/2022 09:44:49| |ADMIN THEYRE HACKING| +|08/01/2022 09:44:50| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:44:50| |SNAIBA :DDDDDDDDD| +|08/01/2022 09:44:50| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:50| |BURGERS ETERNALLY BTFO| +|08/01/2022 09:44:51| |weak ass fin hiding in the mountains| +|08/01/2022 09:44:51| SIMO +|08/01/2022 09:44:51| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:51| |DULDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:51| REKT +|08/01/2022 09:44:51| ;_;7 +|08/01/2022 09:44:51| |Jougo :DDDDDDDDDD| +|08/01/2022 09:44:51| BTFO +|08/01/2022 09:44:51| |THE WHITE DEATH| +|08/01/2022 09:44:52| |SUOMI PERKELE| +|08/01/2022 09:44:53| |OH FUGGG :DDDDD| +|08/01/2022 09:44:53| |OH FUGG :DDDDDD| +|08/01/2022 09:44:53| |White sniper| +|08/01/2022 09:44:54| NIPA +|08/01/2022 09:44:54| |BURGERS BTFO| +|08/01/2022 09:44:54| Burgerbros... +|08/01/2022 09:44:54| |JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB JOB | +|08/01/2022 09:44:54| JOUKO +|08/01/2022 09:44:55| |GG EZ| +|08/01/2022 09:44:55| |PERGELE :DDDDDD| +|08/01/2022 09:44:56| |FUGGGGG :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:56| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:44:56| |MUTTS BTFO| +|08/01/2022 09:44:56| |JOBBED AGAIN| +|08/01/2022 09:44:57| |POOR HELMET-CHAN| +|08/01/2022 09:44:57| |EBIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:44:57| |GET FUCKED BURGERS| +|08/01/2022 09:44:57| :DDDDDDDDDDDDDD +|08/01/2022 09:44:57| WHAT +|08/01/2022 09:44:58| |GORY GORY WHAT A HELL OF A WAY TO JOB! SHE AIN'T TANKING NO MORE!| +|08/01/2022 09:44:58| PERKLED +|08/01/2022 09:44:59| SNIPED +|08/01/2022 09:44:59| |the white death| +|08/01/2022 09:45:00| |WORST THAN 9/11| +|08/01/2022 09:45:00| |USA BTFO| +|08/01/2022 09:45:01| |sniber :DDDDDD| +|08/01/2022 09:45:01| |OH MY WHITE DEATH| +|08/01/2022 09:45:02| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:02| |JABRONI JOBURGERS| +|08/01/2022 09:45:03| |FUCKING REKT :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:04| |POOR HELMET CHAN| +|08/01/2022 09:45:04| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:05| |USA BROS..........................| +|08/01/2022 09:45:05| |GORY GORY WHAT A HELL OF A WAY TO JOB! SHE AIN'T TANKING NO MORE!| +|08/01/2022 09:45:06| |THE ABSOLUTE STATE| +|08/01/2022 09:45:06| |USA BTFO| +|08/01/2022 09:45:06| >AMERILARDS +|08/01/2022 09:45:06| :DDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:07| |RIP HELMET CHAn| +|08/01/2022 09:45:07| |WE GOT TOO COCKY AGAIN| +|08/01/2022 09:45:07| |WE CAN'T STOP JOBBING| +|08/01/2022 09:45:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:08| ... +|08/01/2022 09:45:08| |SNIPED WITH MY FINNISH MOSIN| +|08/01/2022 09:45:08| |Press F to spit on theri graves| +|08/01/2022 09:45:08| |ALISA STFU| +|08/01/2022 09:45:09| |>got dumped| +|08/01/2022 09:45:09| Takeshi.......... +|08/01/2022 09:45:09| >TAKASHI +|08/01/2022 09:45:09| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:10| |MENTAL BREAKDOWN| +|08/01/2022 09:45:10| helmet-chan +|08/01/2022 09:45:11| |they didn't even hear it coming| +|08/01/2022 09:45:11| |saunders was robbed| +|08/01/2022 09:45:11| |SIMO NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 09:45:12| alisa... +|08/01/2022 09:45:13| |helmet chan| +|08/01/2022 09:45:13| |OH NONONO| +|08/01/2022 09:45:13| SIMO +|08/01/2022 09:45:14| DUMPED +|08/01/2022 09:45:14| :DDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:14| |HELMET CHAN IS CUTE| +|08/01/2022 09:45:15| |FUG ALYSA :DDDDDD| +|08/01/2022 09:45:16| BINNISHED +|08/01/2022 09:45:16| :DDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:16| :DDDD +|08/01/2022 09:45:17| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:18| |HAHAHA :-DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:18| |RESIGNED HELMET-CHAN| +|08/01/2022 09:45:19| |HAHAHAHAHAHAHAHAHAHAA POINT AT HER AND LAUGH| +|08/01/2022 09:45:20| |USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA USA | +|08/01/2022 09:45:20| |Around Finns watch your shins| +|08/01/2022 09:45:21| |Kay and Duce will both graduate as eternal jobbers| +|08/01/2022 09:45:21| |OH NO US BROS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:22| >naomi +|08/01/2022 09:45:22| |PUMPED AND DUMPED| +|08/01/2022 09:45:22| FUG +|08/01/2022 09:45:22| benis +|08/01/2022 09:45:23| FUGGED +|08/01/2022 09:45:24| |>she actually got to date| +|08/01/2022 09:45:25| |SHE KNOWS| +|08/01/2022 09:45:25| HAHAHAHAHAAHHAHAHAAHAHAHAHAHAHAHAHAHAHAHA +|08/01/2022 09:45:26| |JOUKO > USA| +|08/01/2022 09:45:26| |poor alisa| +|08/01/2022 09:45:29| MASAKA +|08/01/2022 09:45:29| |OH NONONONONONONOPNO| +|08/01/2022 09:45:29| |who cares, I'm just here for arisu| +|08/01/2022 09:45:30| |YOUR IN THE SNIPERS SIGHTS| +|08/01/2022 09:45:31| |camping ni-| +|08/01/2022 09:45:31| |holy fuck where is that siber| +|08/01/2022 09:45:32| |>burgers in charge of winning| +|08/01/2022 09:45:32| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:45:34| |burgers job as usual| +|08/01/2022 09:45:36| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 09:45:37| |THE ETERNAL JOBBERS| +|08/01/2022 09:45:39| |why are americans so WEAK| +|08/01/2022 09:45:40| |MELLI KURISUMASU| +|08/01/2022 09:45:41| |arisu != arisa| +|08/01/2022 09:45:41| Anzu +|08/01/2022 09:45:41| |when do we see arisu| +|08/01/2022 09:45:41| |SAUNDERS MORE LIKE JOBBERS| +|08/01/2022 09:45:42| |alisa ;_;| +|08/01/2022 09:45:42| |Things were getting good? Takashi is cruel to Arisa| +|08/01/2022 09:45:44| :DDDDDDDDDDDDDD +|08/01/2022 09:45:45| |MERRY CHRISTMAS| +|08/01/2022 09:45:46| MELLI +|08/01/2022 09:45:46| KORVAPUUSTI +|08/01/2022 09:45:46| |binnenland :DDDD| +|08/01/2022 09:45:46| |MELLI KURISUMASU| +|08/01/2022 09:45:47| |I am burger therefore I must job| +|08/01/2022 09:45:48| cuter +|08/01/2022 09:45:48| |SANDA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:48| |EBINLAND :DDDDDDDDDD| +|08/01/2022 09:45:48| |FUCK I LOVE MIKA| +|08/01/2022 09:45:48| |MELLI KURISUMASU| +|08/01/2022 09:45:49| |MELLI KURISUMASU| +|08/01/2022 09:45:49| |CHRISTMAS MUSIC| +|08/01/2022 09:45:50| |Meri Kuri| +|08/01/2022 09:45:50| |PADORU PADORU| +|08/01/2022 09:45:50| |Merri kurisumasu| +|08/01/2022 09:45:50| |PADORU PADORUUUUUUUUUUU| +|08/01/2022 09:45:50| |MELLI KURISUMASU| +|08/01/2022 09:45:51| |MERRY CHRISTMAS BROS| +|08/01/2022 09:45:51| |MELLI KURISUMASU| +|08/01/2022 09:45:51| |How big is that tree| +|08/01/2022 09:45:52| |HOBOS IN THE LIMELIGHT| +|08/01/2022 09:45:52| JOULUTORTTU +|08/01/2022 09:45:53| |MERRY CHRISTMAS!| +|08/01/2022 09:45:54| |MELLI KURISUMASU| +|08/01/2022 09:45:54| BOOBA +|08/01/2022 09:45:55| |KURIMASU TRUCE| +|08/01/2022 09:45:55| |what a lovely place| +|08/01/2022 09:45:55| |lul >fuck she's good| +|08/01/2022 09:45:57| MELLI +|08/01/2022 09:45:57| |HOW BIG IS THAT TREE| +|08/01/2022 09:45:57| |o fug ghrisdmas :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:45:57| |MIARRY CURISTUMASUA| +|08/01/2022 09:45:58| |MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELL| +|08/01/2022 09:45:59| |KORVAPUUSTI :DDDDD| +|08/01/2022 09:46:00| |MERRI CHRIGSMAS| +|08/01/2022 09:46:01| |Melli Kulli| +|08/01/2022 09:46:01| |HOW TALL IS THAT FUCKING TREE| +|08/01/2022 09:46:01| korvapuusti +|08/01/2022 09:46:01| |ARE YOU READY FOR THE AGE OF THE HOBOS| +|08/01/2022 09:46:02| |JINGURU BERU| +|08/01/2022 09:46:03| |HOBO CHRISTMAS| +|08/01/2022 09:46:03| |how big is this ship| +|08/01/2022 09:46:03| |Marlin glögi| +|08/01/2022 09:46:05| |KORVA PUSSY| +|08/01/2022 09:46:06| |YMUUY SPICED WINE| +|08/01/2022 09:46:06| |the finals is so obvious| +|08/01/2022 09:46:07| |Where did they get the money to buy that| +|08/01/2022 09:46:07| |PADORU PADORU| +|08/01/2022 09:46:07| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:46:07| :DDDDDDDD +|08/01/2022 09:46:08| |makki is so cute| +|08/01/2022 09:46:09| |EARBOOST :DD| +|08/01/2022 09:46:09| |MIKA IS DELICIOUS| +|08/01/2022 09:46:10| |PADORU PADORU PADORUUU| +|08/01/2022 09:46:11| cute +|08/01/2022 09:46:11| |ITS HOBO TIME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 09:46:13| |I miss christmas markets| +|08/01/2022 09:46:14| |More snowmen| +|08/01/2022 09:46:15| |FUCK MIKA FUCKING CUTE| +|08/01/2022 09:46:16| :DDDDDDDDDDDDDD +|08/01/2022 09:46:19| |ARISU'S ONEECHAN...| +|08/01/2022 09:46:22| |CHRIDSMAS :DDDDDDDDDDDDDDDD| +|08/01/2022 09:46:23| |Meri Kuri :DDDDDDDDD| +|08/01/2022 09:46:23| |CUTE :DDDDDDDDD| +|08/01/2022 09:46:25| |they stole that| +|08/01/2022 09:46:26| |JINGO BELL :DDDDDDDD| +|08/01/2022 09:46:26| |MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU MELLI KURISUMASU | +|08/01/2022 09:46:27| |sanda :DDD| +|08/01/2022 09:46:29| |EBIN GONNA PUT BENIS IN BAGINA :DDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:46:30| |cute cinnamon rolls| +|08/01/2022 09:46:30| kuksa +|08/01/2022 09:46:32| |JINGURU BERU| +|08/01/2022 09:46:33| |CINNAMON ROLL TOO PURE FOR THIS WORLD| +|08/01/2022 09:46:35| :DDDDD +|08/01/2022 09:46:36| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:46:37| |BENI CHRISMAGGG :DDD| +|08/01/2022 09:46:39| >hibernation +|08/01/2022 09:46:42| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:46:43| Arisu....................... +|08/01/2022 09:46:44| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:46:45| /FIT/ +|08/01/2022 09:46:46| /fit/ +|08/01/2022 09:46:47| STRONG +|08/01/2022 09:46:47| /fit/ +|08/01/2022 09:46:49| |ONEGAI MUSCLE| +|08/01/2022 09:46:51| |Mika looks like a Shimada in that cup| +|08/01/2022 09:46:52| |NEET STRONK| +|08/01/2022 09:46:52| |Girls und /Fit/| +|08/01/2022 09:46:52| STRONK +|08/01/2022 09:46:53| |ROID RAGE| +|08/01/2022 09:46:54| |GAMER GIRL BATH WATER| +|08/01/2022 09:46:55| |STRONG nerds| +|08/01/2022 09:46:56| SPAAAAAAAATS +|08/01/2022 09:46:57| ASS +|08/01/2022 09:46:58| |GREAT ESCAPE| +|08/01/2022 09:46:59| |>Finns hybernate | +|08/01/2022 09:47:00| |VOLLEY BUTT| +|08/01/2022 09:47:00| >males +|08/01/2022 09:47:00| |The Great Ecape kek| +|08/01/2022 09:47:02| |MEN SPOTED| +|08/01/2022 09:47:03| |Great escape| +|08/01/2022 09:47:03| |old kino| +|08/01/2022 09:47:07| |Weird looking tanks| +|08/01/2022 09:47:08| |the great escape?| +|08/01/2022 09:47:10| |Great Escape| +|08/01/2022 09:47:10| |The rabbits are training | +|08/01/2022 09:47:11| |What the fuck were those things?| +|08/01/2022 09:47:12| |WHAT'S THAT TWO WHEELED PANZER| +|08/01/2022 09:47:13| |anteaters are gonna end up troons with all those roids| +|08/01/2022 09:47:13| |Great Escape is a brilliant film| +|08/01/2022 09:47:14| |I wonder if this is forshadowing| +|08/01/2022 09:47:15| |Men exist in this unverse after all| +|08/01/2022 09:47:16| |>not liking The Great Escape| +|08/01/2022 09:47:19| |JUST WATCH IT DUMB BUNNIES| +|08/01/2022 09:47:20| |that guy failed lol| +|08/01/2022 09:47:21| |I need to watch that| +|08/01/2022 09:47:25| |I played the game the great escape| +|08/01/2022 09:47:26| |that fluff| +|08/01/2022 09:47:26| MEXT +|08/01/2022 09:47:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:27| |CUTE AUSSIES| +|08/01/2022 09:47:29| |Finnish cheerleaders| +|08/01/2022 09:47:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:30| |fluffy straya| +|08/01/2022 09:47:30| |they didn't get the rights to the great escape, my lawyers will be in touch| +|08/01/2022 09:47:30| |Great Escape will play a part in the final battle| +|08/01/2022 09:47:32| |CHIHATAN COUNCIL| +|08/01/2022 09:47:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:33| |LUCKY KOALA...| +|08/01/2022 09:47:34| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:47:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:36| |australia has MASSIVE fluff| +|08/01/2022 09:47:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:47:36| |Cute background dancing Finns| +|08/01/2022 09:47:37| |DVCE | +|08/01/2022 09:47:37| |DUCE DUCE DUCE| +|08/01/2022 09:47:37| |>japs have never had cheese| +|08/01/2022 09:47:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:47:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:40| PIZZA +|08/01/2022 09:47:40| |>PIZZA WITH CHOPSTICKS| +|08/01/2022 09:47:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:41| |Renta looking for his wife Anzu| +|08/01/2022 09:47:42| cursed +|08/01/2022 09:47:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:43| |DUMB BAKAS| +|08/01/2022 09:47:43| |>Eating pizza with chop sticks| +|08/01/2022 09:47:44| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:45| |DUCE DUCE DUCE| +|08/01/2022 09:47:45| |>pizza with chopsticks| +|08/01/2022 09:47:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:45| |>THEY'VE NEVER HAD CHEESE| +|08/01/2022 09:47:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:46| |FUCKING CHOPSTICKS| +|08/01/2022 09:47:46| >chopsticks +|08/01/2022 09:47:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:47| CHOPSTICKS +|08/01/2022 09:47:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:48| >CHOPSTICKS +|08/01/2022 09:47:49| |>PIZZA WITH CHOPSTICKS| +|08/01/2022 09:47:49| |>PIZZA WITH CHOPSTICKS| +|08/01/2022 09:47:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:51| |>CHOPSTICKS PIZZA| +|08/01/2022 09:47:51| |FUCKING CUTE| +|08/01/2022 09:47:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:47:52| |PIZZA CHOPSTICKS| +|08/01/2022 09:47:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:47:54| |So are they going to be jumping tanks over a fence or tunneling somehow?| +|08/01/2022 09:47:55| |>ALMOST OVER, SEE YOU IN 2 YEARS?| +|08/01/2022 09:47:55| |>rice balls| +|08/01/2022 09:47:56| |oishii rice| +|08/01/2022 09:47:58| |Aren't nips lactose intolerant| +|08/01/2022 09:47:58| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:47:59| HAMBURGERS +|08/01/2022 09:47:59| |jelly donuts!| +|08/01/2022 09:48:00| 礼 +|08/01/2022 09:48:01| |JELLY DONUTS!!!| +|08/01/2022 09:48:01| balls +|08/01/2022 09:48:03| |GLASS FINLAND| +|08/01/2022 09:48:06| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:48:07| :DDDDDDDDDDDDDD +|08/01/2022 09:48:08| :DDDD +|08/01/2022 09:48:09| |PANTSU VOR| +|08/01/2022 09:48:10| |better panzer vor this time| +|08/01/2022 09:48:10| |These girls are all Japanese*| +|08/01/2022 09:48:11| |PANTSU ARE FOR| +|08/01/2022 09:48:11| |PANZA VO!| +|08/01/2022 09:48:11| |PANZA VOR| +|08/01/2022 09:48:11| |PANZER VOR| +|08/01/2022 09:48:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:48:14| |Momo starting to look the part lmao| +|08/01/2022 09:48:16| |PANZER BOR :DDDDDDDDD| +|08/01/2022 09:48:17| :DDDDDDDDDDDDDD +|08/01/2022 09:48:18| |'OLD STILL WHILE I GLASS YOU| +|08/01/2022 09:48:21| |PANTSU ARE FOR| +|08/01/2022 09:48:21| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:48:21| |square herzter| +|08/01/2022 09:48:22| |WHAT DOES PANZER VOR MEAN ANONS?| +|08/01/2022 09:48:22| |njet molotov| +|08/01/2022 09:48:23| |WELCOME TO THE FROZEN TUNDRA| +|08/01/2022 09:48:24| |The last Panzer Vor for 2 years| +|08/01/2022 09:48:26| |BANZER VORRRR :DDDDDDDDD| +|08/01/2022 09:48:29| | panssaroitu auto eteenpäin :-DDDDDDDDDDDD-DDDDDDD| +|08/01/2022 09:48:32| nyaa +|08/01/2022 09:48:34| BANZA +|08/01/2022 09:48:34| |NYAAAAAA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:48:34| |Orari got this right?| +|08/01/2022 09:48:36| NYA +|08/01/2022 09:48:37| NYAA +|08/01/2022 09:48:37| |Why aren't they in the treeline| +|08/01/2022 09:48:38| |bros....I don't think we're gonna timewarp again after this....| +|08/01/2022 09:48:39| |OH SHIT HERE IT COMES| +|08/01/2022 09:48:39| |Don't trust snowmen | +|08/01/2022 09:48:41| SIMO +|08/01/2022 09:48:43| |snowman :D| +|08/01/2022 09:48:45| |EZ Ooari victory| +|08/01/2022 09:48:48| |gorilla warfare again| +|08/01/2022 09:48:50| |THEYRE FUCKED| +|08/01/2022 09:48:52| |YOURE IN THE SNIPERS SIGHT, FIRST TO DIE| +|08/01/2022 09:48:52| |>white death| +|08/01/2022 09:48:52| |NJEDD MOLODOBBB:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:48:54| CLANG +|08/01/2022 09:48:55| |Shit I just realized anteater team can't job this round as the flag tank| +|08/01/2022 09:48:56| Nyaa! +|08/01/2022 09:48:56| NYAAAAAA +|08/01/2022 09:48:56| NYA +|08/01/2022 09:48:57| nyaa! +|08/01/2022 09:48:57| |Winter War flashbacks| +|08/01/2022 09:48:57| |OH SHIDD ITS FINNS| +|08/01/2022 09:48:58| NYA +|08/01/2022 09:48:59| NYAA +|08/01/2022 09:48:59| NYAA +|08/01/2022 09:48:59| NYAA +|08/01/2022 09:49:01| |Gamer is the flag tank this time?| +|08/01/2022 09:49:02| NYAA +|08/01/2022 09:49:04| NYAA +|08/01/2022 09:49:05| |why make nerds flag tank? high armor?| +|08/01/2022 09:49:06| Nya +|08/01/2022 09:49:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:11| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:12| |GORILLA WARFARE| +|08/01/2022 09:49:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:14| GORILLA +|08/01/2022 09:49:15| |CUTE BAKA| +|08/01/2022 09:49:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:49:16| |GORILLA WARFARE| +|08/01/2022 09:49:16| |SHE SAID IT| +|08/01/2022 09:49:17| |why do they destroy ever bridge?| +|08/01/2022 09:49:18| |>CHEESE ON RICEBALLS| +|08/01/2022 09:49:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:49:19| |me on the right| +|08/01/2022 09:49:19| |binland :DDDDDDDDDDDD| +|08/01/2022 09:49:20| |GORILLA WARFARE| +|08/01/2022 09:49:20| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:49:21| |PASTA DESU| +|08/01/2022 09:49:21| |Perkele Benis Suomi| +|08/01/2022 09:49:23| BAKARONI +|08/01/2022 09:49:23| |Suomi tactics| +|08/01/2022 09:49:23| |GORILLA WARFARE| +|08/01/2022 09:49:26| |WAS RUMI A LOLI OR A MOLESTER?| +|08/01/2022 09:49:28| |guerilla des| +|08/01/2022 09:49:28| |GORIBBA :DDDDD| +|08/01/2022 09:49:30| |PIZZA ON CHOPSTICKS????????| +|08/01/2022 09:49:31| |NJET MOLOTOFF| +|08/01/2022 09:49:33| NYAA +|08/01/2022 09:49:37| HOT +|08/01/2022 09:49:40| |Loli and then molester duh| +|08/01/2022 09:49:42| NYAA +|08/01/2022 09:49:43| |WHACK A MOGURA| +|08/01/2022 09:49:45| |I HATE PIRATES| +|08/01/2022 09:49:46| |She grooms Arisu daily| +|08/01/2022 09:49:48| |27,000 Russians dead during the 1939 Winter War. This is bad| +|08/01/2022 09:49:48| |So basically Shimada 2.0 fight| +|08/01/2022 09:49:48| |>lets redo pravda| +|08/01/2022 09:49:48| |camping bitches| +|08/01/2022 09:49:51| |I LOVE PIRATES| +|08/01/2022 09:49:53| |JUST FUCVK UP THAT VIILLAGE| +|08/01/2022 09:49:59| |I WONDER WHAT THOSE SNOWMEN COULD BE| +|08/01/2022 09:49:59| |White tiger| +|08/01/2022 09:50:02| |Don't trust the snow creatures| +|08/01/2022 09:50:02| |BURN THE VILLAGE| +|08/01/2022 09:50:05| TULTA:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:50:06| |sus snowmen| +|08/01/2022 09:50:07| |finn mind game strong oarai loves village zone| +|08/01/2022 09:50:07| |lets go to the trap village| +|08/01/2022 09:50:09| |HMMMMMMMMM WHAT ABOUT THESE GIANT SNOWMEN?| +|08/01/2022 09:50:09| |cute snowmen| +|08/01/2022 09:50:11| |>team duck sees nothing wrong with this situation| +|08/01/2022 09:50:16| |i dont trust these snowmen| +|08/01/2022 09:50:17| |Is it me or are those snowmen suspicious...| +|08/01/2022 09:50:18| |snowmen among us | +|08/01/2022 09:50:18| kowaiiiiii +|08/01/2022 09:50:19| |Azusa "Moomin Destroyer" Sawa| +|08/01/2022 09:50:19| |the snowman is sus| +|08/01/2022 09:50:21| |NYAA those Finnish moles to where they popped up from| +|08/01/2022 09:50:22| |this is fine :-)| +|08/01/2022 09:50:23| |The lesson here is Don't trust Snow niggers| +|08/01/2022 09:50:24| |that's a pretty big snowman| +|08/01/2022 09:50:26| |Shut the fuck up the snowmen are fien| +|08/01/2022 09:50:28| >FINNED +|08/01/2022 09:50:30| |Surely that protrusion coming out of the snowman isn't a tank gun barrel| +|08/01/2022 09:50:31| |>no one suspects anything| +|08/01/2022 09:50:34| |I'M FUCKING FALLING ASLEEP I CAN'T GO ON ANYMORE| +|08/01/2022 09:50:35| |for you| +|08/01/2022 09:50:36| |arent the snowmen small?| +|08/01/2022 09:50:38| uuuu +|08/01/2022 09:50:38| SUOMIED +|08/01/2022 09:50:45| |>the snow starts speaking finnish| +|08/01/2022 09:50:45| |YOU'RE NOT FALLING ASLEEP ANON| +|08/01/2022 09:50:48| |less than 10 min left anon| +|08/01/2022 09:50:49| |THE SNOW IS SPEAKING FINNISH| +|08/01/2022 09:50:50| |STAY UP WITH ME| +|08/01/2022 09:50:52| |ITS LIKE 10 MORE MINUTES| +|08/01/2022 09:50:54| :DDDDDDDDD +|08/01/2022 09:50:54| |(not including the OVA 6)| +|08/01/2022 09:50:55| |BENIS IN THE DREES :DDDD BENIS IN THE DREES :DDDD| +|08/01/2022 09:50:57| |She's accurate with those directions| +|08/01/2022 09:50:59| |The snow speaks Moonin| +|08/01/2022 09:51:00| |>A BT-42 AS FLAG TANK| +|08/01/2022 09:51:10| |IT'S A TRAP| +|08/01/2022 09:51:12| |haha huijattu :-DDDDDDDDDDDDD| +|08/01/2022 09:51:18| |>japs think they can compete agains the spirit of the FINNOKOREAN HYPERWAR WARRIORS| +|08/01/2022 09:51:20| |IF I CAN STAY AWAKE UNTIL 11 AM, YOU CAN IT TOO| +|08/01/2022 09:51:22| |>snow starts speaking finnish| +|08/01/2022 09:51:24| |vihollinen motissa :DDDDDD| +|08/01/2022 09:51:31| benis +|08/01/2022 09:51:33| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:34| :DDDDDDDDD +|08/01/2022 09:51:35| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:35| :DDDDDDDDDDDDDDDDD +|08/01/2022 09:51:37| :DDDD +|08/01/2022 09:51:38| AAAAAAAAAAAAAAAAAA +|08/01/2022 09:51:39| |FUG :DDDDDDDDDDDD| +|08/01/2022 09:51:40| |fug :DDDDDDDD | +|08/01/2022 09:51:40| :DDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:40| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:40| FUG +|08/01/2022 09:51:40| :DDDD +|08/01/2022 09:51:41| |TIME FOR FUG| +|08/01/2022 09:51:41| |o fug polkka :DDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:41| Russianptsd.web +|08/01/2022 09:51:42| TRÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖH +|08/01/2022 09:51:42| |ID COMES :DDDDDDDDDDDDD| +|08/01/2022 09:51:42| |BENIS :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:42| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:42| :DDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:42| |HYPERWAR BETERANS:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:44| |PANIC THERES A SNIPER ON THE LOOSE| +|08/01/2022 09:51:44| |IS IT TIME| +|08/01/2022 09:51:45| |Hobo snufkin| +|08/01/2022 09:51:45| |OH FUGGG :DDDDDDDDD| +|08/01/2022 09:51:45| :DDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:45| |ruse cruise| +|08/01/2022 09:51:45| |HOLY FUCK IT WAS A TRAP| +|08/01/2022 09:51:45| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:46| AAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:51:46| |OH SHIDDD :DDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:47| |OOHHHH SH---| +|08/01/2022 09:51:47| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:47| |SURBRISE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:48| |MOOMIN STRIKES AGAIN!| +|08/01/2022 09:51:49| |its a trap| +|08/01/2022 09:51:50| |BENIS :DDDDD| +|08/01/2022 09:51:50| |o fug :DDDDDDDDDDD| +|08/01/2022 09:51:51| |lets gooooooooooooooooooooooooooo| +|08/01/2022 09:51:51| |how did the finns hiding in the snowmen hide their tracks so quickly and well?| +|08/01/2022 09:51:52| |BENIS :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:53| |OH FUG :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:53| |o fug it was ambush :DDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:51:53| |YLLÄTYS :DDDDDDDD| +|08/01/2022 09:51:54| |I warned you| +|08/01/2022 09:51:54| |OH NO BROS| +|08/01/2022 09:51:55| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:51:55| NANI +|08/01/2022 09:51:55| |OH FUGGG :DDDDDDDDDD| +|08/01/2022 09:51:56| |Literally Red Alert 3| +|08/01/2022 09:51:57| TETTAI +|08/01/2022 09:51:59| |SNEAG ADDAGG :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:00| :DD +|08/01/2022 09:52:01| |FUUUUUG :DDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:01| |useless sharks| +|08/01/2022 09:52:02| |oh fugg :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:03| :DDDDD +|08/01/2022 09:52:04| |ITS A TRAP| +|08/01/2022 09:52:05| |IT'S OVER | +|08/01/2022 09:52:06| :DDDDDDDDDDDDDDDDD +|08/01/2022 09:52:08| SUOMI +|08/01/2022 09:52:14| |SNEAG ATTAK :DDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:15| |PERKELE :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:16| >BENISSED +|08/01/2022 09:52:17| |SHARK JOB| +|08/01/2022 09:52:17| 8=====================DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:52:18| |They ignored the MK IV lmao| +|08/01/2022 09:52:20| |I HATE THE PIRATES| +|08/01/2022 09:52:23| |HYVA SUOMI| +|08/01/2022 09:52:24| |tank stealth| +|08/01/2022 09:52:25| |SHARK TEAM DO SOMETHING| +|08/01/2022 09:52:25| |stupid fucking shark| +|08/01/2022 09:52:27| |Orari Bros we got cocky....| +|08/01/2022 09:52:28| >Sharks +|08/01/2022 09:52:29| |>everyone just fuckin gignores the mk iv| +|08/01/2022 09:52:29| |DOO GOGGY OORAI :DDDDDDDDDDDD| +|08/01/2022 09:52:29| |jumalauta :DDDDD| +|08/01/2022 09:52:30| OUTPLAYED +|08/01/2022 09:52:32| VITTU +|08/01/2022 09:52:32| |>perfectly surrounds oorai >still gets destroyed| +|08/01/2022 09:52:33| SNIPED +|08/01/2022 09:52:34| NYAA +|08/01/2022 09:52:36| trickshot +|08/01/2022 09:52:36| |stoic loader| +|08/01/2022 09:52:37| NYAA +|08/01/2022 09:52:38| |why are the gamers the flag tank| +|08/01/2022 09:52:39| AIRSHOT +|08/01/2022 09:52:39| >PLANNED +|08/01/2022 09:52:39| |NYAAAAAAAA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:52:39| |I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE THE PIRATES I HATE | +|08/01/2022 09:52:41| |AHHHHHHH MAKO-CHAN| +|08/01/2022 09:52:42| |DOUBLE KILL| +|08/01/2022 09:52:44| BULLSHIT +|08/01/2022 09:52:44| |O FUG :DDDDDDDDDDDD| +|08/01/2022 09:52:45| |DOUBLE KILL| +|08/01/2022 09:52:45| |DOUBLE KILL| +|08/01/2022 09:52:46| |DODSUGEGI :-DDDDDDDDDDDDDDDD| +|08/01/2022 09:52:46| SASUGA +|08/01/2022 09:52:47| |THE MARK IV CAN'T DO SHIT. IT COULDN'T EVEN RUN IN MOST SNOWY CONDITIONS| +|08/01/2022 09:52:47| |DOUBLE KILL| +|08/01/2022 09:52:48| |they reused that show of yukari reloading| +|08/01/2022 09:52:48| |OH BABY A DOUBLE| +|08/01/2022 09:52:48| NANI +|08/01/2022 09:52:48| |YO WTF| +|08/01/2022 09:52:50| |Imagine if Mika had actual good tanks| +|08/01/2022 09:52:51| |ONE SHOT TWO KILLS| +|08/01/2022 09:52:51| FUGGGGG +|08/01/2022 09:52:51| GODDAMN +|08/01/2022 09:52:52| |>clear shot at the flag tank || >shoots ankou| +|08/01/2022 09:52:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:52:52| FUG +|08/01/2022 09:52:53| |dddddddddddddddd double kill| +|08/01/2022 09:52:53| |No fucking way| +|08/01/2022 09:52:53| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:52:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:52:54| WTF +|08/01/2022 09:52:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:52:54| WTF? +|08/01/2022 09:52:55| |TWO IN ONE| +|08/01/2022 09:52:55| |ONE IN A BILLION| +|08/01/2022 09:52:55| |INSTANT REPLAY| +|08/01/2022 09:52:56| |d-d-d-d-d-DOUBLE KILL| +|08/01/2022 09:52:56| |You're pretty good| +|08/01/2022 09:52:56| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:52:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:52:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:52:57| >trickshots +|08/01/2022 09:52:58| |bullshit even WT ain't like that| +|08/01/2022 09:53:00| TWOFER +|08/01/2022 09:53:00| NANI?! +|08/01/2022 09:53:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:53:01| real? +|08/01/2022 09:53:01| |DOUBLE KILL!!| +|08/01/2022 09:53:04| :DDDDDDDDDD +|08/01/2022 09:53:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE V| +|08/01/2022 09:53:04| |FUG :DDDDDDD| +|08/01/2022 09:53:05| |FUG :DDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:06| |IT'S NIPA| +|08/01/2022 09:53:06| |MAKO-CHAN, MASTER OF ASIAN LAND WARS| +|08/01/2022 09:53:06| |SNIBER :DDDDDDDDDDDD| +|08/01/2022 09:53:06| JOUKO +|08/01/2022 09:53:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:53:07| SIMO +|08/01/2022 09:53:07| |OH MY GOD INHUMAN REACTIONS| +|08/01/2022 09:53:07| YOUKO +|08/01/2022 09:53:08| |Oh no...| +|08/01/2022 09:53:09| |YOU'RE IN THE SNIPER'S SIGHT| +|08/01/2022 09:53:09| Sniped +|08/01/2022 09:53:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:53:11| |OH NO| +|08/01/2022 09:53:11| SIMOOOOOO +|08/01/2022 09:53:13| RUNKATA:DDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:53:15| SIMOOOOOOOOOO +|08/01/2022 09:53:15| !!! +|08/01/2022 09:53:16| BLIND +|08/01/2022 09:53:16| SNIBER???? +|08/01/2022 09:53:16| |GET SIMO'D| +|08/01/2022 09:53:17| |OOARAIBROS I DON'T FEEL GOOD| +|08/01/2022 09:53:17| |STURMI :DDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:17| AAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:18| |LOOOK OUT| +|08/01/2022 09:53:18| |mako spot stug on 2km is something| +|08/01/2022 09:53:19| |oh fug| +|08/01/2022 09:53:20| AAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:21| |ITS OVER| +|08/01/2022 09:53:21| |MAKO CARRY| +|08/01/2022 09:53:22| |hardscoped :DDDDDDDDDD| +|08/01/2022 09:53:22| |The White Death| +|08/01/2022 09:53:22| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIIIIIIIIIIEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:53:22| |a sexy witch| +|08/01/2022 09:53:23| |LOOK OUT| +|08/01/2022 09:53:23| F +|08/01/2022 09:53:23| |SNIPE :DDDD| +|08/01/2022 09:53:23| |MAJO :DDDDDDDDDDD| +|08/01/2022 09:53:24| |WHITE WITCH| +|08/01/2022 09:53:24| BTFO +|08/01/2022 09:53:25| |FUUUUUUUUUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:25| |AAAAAAAAAAAAAAAAAAAAA NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 09:53:25| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:26| |FUG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:27| |Shiroi Majo| +|08/01/2022 09:53:27| |I can't believe Miho is fucking dead| +|08/01/2022 09:53:27| Re:Zero? +|08/01/2022 09:53:27| |Ooarai bros......| +|08/01/2022 09:53:27| |Shiroi majo wa ne| +|08/01/2022 09:53:27| |whide bitch :DDDDDDDDDD| +|08/01/2022 09:53:28| |I CAN'T BELIEVE MIHO IS FUCKING DEAD| +|08/01/2022 09:53:29| |SHID :DDDDDDDD| +|08/01/2022 09:53:29| :DDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:53:30| |ANKOU DEAD!!!!!!!!!!!!!!!!!!!!!!!| +|08/01/2022 09:53:30| MAJO +|08/01/2022 09:53:31| |IT'S OVER OOARI BROS| +|08/01/2022 09:53:31| |BHITE BISH:DDDDDDDDDDDDD| +|08/01/2022 09:53:31| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:32| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:32| JOOOOOOOOOOOOOOOOUUUUUUUUUUUUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:32| |fuck youuuuuuuuuuuuuuuu ooarai| +|08/01/2022 09:53:32| RIP +|08/01/2022 09:53:33| |SNIPPER :DDDD| +|08/01/2022 09:53:34| |FUG :DDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:34| |OH NONONONNNOOONONNONONO MIHOBROS| +|08/01/2022 09:53:36| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:36| |sniper pissed| +|08/01/2022 09:53:36| |FUG :DDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:37| FFFFFFFFFFF +|08/01/2022 09:53:37| |MIHO IS FUCKING DEAD| +|08/01/2022 09:53:37| F +|08/01/2022 09:53:37| AAAAAAAAAAAAAAA +|08/01/2022 09:53:38| |WHITE DESU| +|08/01/2022 09:53:38| |Did we perhaps get too cocky............| +|08/01/2022 09:53:39| |ankou destroyed| +|08/01/2022 09:53:39| |DUMP OOARARI COIN STAT| +|08/01/2022 09:53:39| ooraribros... +|08/01/2022 09:53:40| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:40| |SNIBER :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:40| |no more plot armor for ooarai| +|08/01/2022 09:53:41| |ALL MY MONEY ON KEIZOKU| +|08/01/2022 09:53:41| AHHHHHHHHHHHHHH +|08/01/2022 09:53:41| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:53:42| |IT'S FUCKING OVER| +|08/01/2022 09:53:43| |OH SHIT| +|08/01/2022 09:53:43| |FUGGGG :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:53:43| |FINALLY | +|08/01/2022 09:53:44| CLIFFHANGER +|08/01/2022 09:53:44| NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +|08/01/2022 09:53:45| |SERIES OVER| +|08/01/2022 09:53:45| 88888888888888888 +|08/01/2022 09:53:46| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:53:46| |ITS OBER :dddddddddddd| +|08/01/2022 09:53:46| |I can't believe OOARAI FUCKING LOST| +|08/01/2022 09:53:46| |gg its over without miho| +|08/01/2022 09:53:46| |WHAT THE FUCK THAT'S NOT FAIR| +|08/01/2022 09:53:47| |THIS IS THE END MY ONLY FRIEND THE END| +|08/01/2022 09:53:47| |MARINE YOURE THE LASt ONE COMPLETE THE MISSION| +|08/01/2022 09:53:47| |WHO WILL CARRY NOW???| +|08/01/2022 09:53:47| |Oarai got too cocky| +|08/01/2022 09:53:48| >over +|08/01/2022 09:53:48| |see you in two years| +|08/01/2022 09:53:48| |azusa time in 2 years| +|08/01/2022 09:53:49| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 09:53:49| |11 fucking hours| +|08/01/2022 09:53:49| |See you in 11 hours, bros| +|08/01/2022 09:53:50| >cliffhanger +|08/01/2022 09:53:50| |kono bangumi wa etc| +|08/01/2022 09:53:50| |IT'S ALL OGRE| +|08/01/2022 09:53:50| |Miho got perkled| +|08/01/2022 09:53:51| |Anglerfish is dead| +|08/01/2022 09:53:51| |its over!| +|08/01/2022 09:53:51| |MISSION FAILED| +|08/01/2022 09:53:51| |FUCKING CHEATERS| +|08/01/2022 09:53:52| |ENTER MISSION TIME MOTHERFUCKER| +|08/01/2022 09:53:52| |See you in 3 years| +|08/01/2022 09:53:52| |SEE YA IN 2 FUCKING YEARS| +|08/01/2022 09:53:52| |Why does it seem like Ooarai always plays away games?| +|08/01/2022 09:53:52| |TIME TO PASS OUT NOW| +|08/01/2022 09:53:53| |2 YEARS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:53:53| |AZUSA'S TIME TO SHINE| +|08/01/2022 09:53:53| |thanks for the stream, see you all in 2 years o7| +|08/01/2022 09:53:53| |DAS FINALE 4 WHEN| +|08/01/2022 09:53:53| |>OVER FOR 2 YEARS| +|08/01/2022 09:53:53| |DF4 NEXT| +|08/01/2022 09:53:54| |ENTER ENTER MISSION| +|08/01/2022 09:53:54| |2 years later| +|08/01/2022 09:53:54| :DDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:53:55| |2 year wait LETS GOOOOOOOOOOO| +|08/01/2022 09:53:55| |OOARAI IS FUCKED| +|08/01/2022 09:53:55| |WELP IM GLAD ITS OVER BOYs.| +|08/01/2022 09:53:55| |TIME WARP INTO DAS FINALE 4 NOW RIGHT| +|08/01/2022 09:53:55| |2 more years in Binland boys| +|08/01/2022 09:53:56| |See yall in 2025| +|08/01/2022 09:53:56| |so the girls are dead | +|08/01/2022 09:53:56| |GUP IS ETERNAL| +|08/01/2022 09:53:56| AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +|08/01/2022 09:53:57| |1am lol| +|08/01/2022 09:53:57| |OORAI BROS| +|08/01/2022 09:53:57| |see you guys in another few years| +|08/01/2022 09:53:58| >over +|08/01/2022 09:53:58| |AAAAAAAAAAAAAAAAAAA WE HAVE TO WAIT| +|08/01/2022 09:53:59| |we done| +|08/01/2022 09:54:00| |SEE YOU IN TOO YEARS | +|08/01/2022 09:54:00| |2 yearrrrrrrr| +|08/01/2022 09:54:01| |SEE YOU IN 2 FUCKING YEARS| +|08/01/2022 09:54:01| |SEE YOU IN 2 YEARS FAGS| +|08/01/2022 09:54:01| |see you all next year| +|08/01/2022 09:54:03| |ENTER MISSION| +|08/01/2022 09:54:03| |>2 more years| +|08/01/2022 09:54:04| RIP +|08/01/2022 09:54:04| |SEE YOU IN 2 YEARS| +|08/01/2022 09:54:04| |2 FUCKING YEARS FAGGOTS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:54:05| |You can wait a little longer right?| +|08/01/2022 09:54:06| |>2+ years for the next one!| +|08/01/2022 09:54:07| |>2 years | +|08/01/2022 09:54:07| |see you faggots in 2 years| +|08/01/2022 09:54:08| |THANKS FOR THE STREAM| +|08/01/2022 09:54:08| |See you in 10 years for the next one| +|08/01/2022 09:54:08| |JUST SPLASH YOUR FACE WITH COLD WATER YOU'LL BE FINE| +|08/01/2022 09:54:08| |2 years will come in the blink of an eye| +|08/01/2022 09:54:09| |bros can't we just timewarp again| +|08/01/2022 09:54:09| |POST ANCHOVY LEWDS IN THE THREAD| +|08/01/2022 09:54:09| |THIS WAS FAST AS FUCK| +|08/01/2022 09:54:09| |SEE YOU IN 11 HOURS FAGS| +|08/01/2022 09:54:09| |CUTE NISHI| +|08/01/2022 09:54:10| |Sankyuu stream anon| +|08/01/2022 09:54:10| |See you guys in 2 years| +|08/01/2022 09:54:11| |SEE YOU NIBBAS IN 2 YEARS| +|08/01/2022 09:54:12| |WERE SO FUCKED| +|08/01/2022 09:54:12| |Thank you based anon for hosting this| +|08/01/2022 09:54:13| |2 YEARS| +|08/01/2022 09:54:13| |ugly tanks| +|08/01/2022 09:54:13| 2024? +|08/01/2022 09:54:13| |I can't believe that Momo and the Rabbits and the Anteaters and the Sharks are all ognna come in clutch| +|08/01/2022 09:54:14| |8PM :)| +|08/01/2022 09:54:15| |Nearly 11 hours| +|08/01/2022 09:54:15| |ALLLLLLLLLLLLL THIS FOR A CLIFFFF HANGAR THAT WON'T BE RESOLVED FOR FUCKING YEARSSSSSSSSSSSSSSSSSSSSSSSSSSS| +|08/01/2022 09:54:15| |MOMO-TAICHOU WILL PREVAIL BROS| +|08/01/2022 09:54:16| |2 FUCKING YEARSSSSSSSSSSSSSSSSS| +|08/01/2022 09:54:16| |See some of you in the SNW Stream niggers| +|08/01/2022 09:54:17| |How can they win when their flag tang was just knocked out| +|08/01/2022 09:54:17| |>movie ending on a fucking cliffhanger| +|08/01/2022 09:54:18| |THANKS FOR THE STREAM GALAX| +|08/01/2022 09:54:19| |Maybe I can see part 4 in 4D...| +|08/01/2022 09:54:19| |I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE MOMO I HATE M| +|08/01/2022 09:54:19| |thanks anon| +|08/01/2022 09:54:20| |BIGGEST FUCKING SHIPPAI OF ALL TIME| +|08/01/2022 09:54:21| |Until next time| +|08/01/2022 09:54:22| |1 AM HERE| +|08/01/2022 09:54:22| |Can't believe i survived the whole thing| +|08/01/2022 09:54:22| |thanks anons this was fun once again, see you for the wotos| +|08/01/2022 09:54:22| |Thanks for the stream, see you all in the next one| +|08/01/2022 09:54:23| |fuck if ww3 ain't happen until df4| +|08/01/2022 09:54:23| |THANK YOU ANON FOR HOSTING THIS STREAM| +|08/01/2022 09:54:23| |see you later faggots| +|08/01/2022 09:54:25| |SUOMI SAATANA VITTU PERKELE| +|08/01/2022 09:54:25| |sure didn't waste my day| +|08/01/2022 09:54:26| |8 years more if we're lucky for final show| +|08/01/2022 09:54:27| |Thanks for the stream| +|08/01/2022 09:54:28| |>2 fucking years| +|08/01/2022 09:54:28| |>work in 4 hours IT WAS WORTH IT FAGGOTS| +|08/01/2022 09:54:29| |DON'T FORGET THE SNW STREAM| +|08/01/2022 09:54:30| |I MADE IT BANZAI BANZAI BANZAI| +|08/01/2022 09:54:30| |SANKU U SANK U| +|08/01/2022 09:54:31| |FUCK YOU OOARAI| +|08/01/2022 09:54:31| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:31| |See you in 2 years| +|08/01/2022 09:54:31| enter +|08/01/2022 09:54:31| |MOMO IS CUTE! MOMO IS SMART! MOMO DOES HER BEST! MOMO IS A GOOD GIRL!| +|08/01/2022 09:54:31| ENTAAA +|08/01/2022 09:54:32| |3AM, 11 hours...| +|08/01/2022 09:54:32| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:33| |10 am| +|08/01/2022 09:54:33| |>OVER FOREVER| +|08/01/2022 09:54:33| |ESTBROS REPORT IN| +|08/01/2022 09:54:34| |ENTER ENTER BUFFER| +|08/01/2022 09:54:35| |SARABA NIGGERS | +|08/01/2022 09:54:35| |>unreal engine| +|08/01/2022 09:54:36| |3AM REPORTING| +|08/01/2022 09:54:37| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:37| |THANKS ANON| +|08/01/2022 09:54:37| |ENTAH ENTAH| +|08/01/2022 09:54:38| HAYAKU +|08/01/2022 09:54:38| |ENTER ENTER MISSIONNNNNNNNNNNNNNNNNNNN| +|08/01/2022 09:54:38| |THANK YOU FOR THE STREAM| +|08/01/2022 09:54:38| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:39| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:39| |1 am, ive been here for 12 hours| +|08/01/2022 09:54:40| |very fun, first time i ever participated in a watchalong | +|08/01/2022 09:54:41| |PRESS B TO DO A BOUNCY-TOTSUGEKI| +|08/01/2022 09:54:41| |ENTA ENTA MISSION| +|08/01/2022 09:54:41| |6 hours of sleep until anison matrix| +|08/01/2022 09:54:42| |ENTEH ENTEH MISSSION| +|08/01/2022 09:54:42| |ENTAAAA ENTAAAA MISSION| +|08/01/2022 09:54:43| |Thankyou for the stream| +|08/01/2022 09:54:43| >10am +|08/01/2022 09:54:43| |ENTAR ENTAR MISSION| +|08/01/2022 09:54:43| HAYAKU +|08/01/2022 09:54:43| hayaku +|08/01/2022 09:54:44| |3 YEAR INTER INTER MISSION| +|08/01/2022 09:54:45| |4:00 am boyos| +|08/01/2022 09:54:45| |SEE YOU IN 2024| +|08/01/2022 09:54:46| B +|08/01/2022 09:54:47| |ENTAH ENTAH| +|08/01/2022 09:54:47| |<3 <3 <3| +|08/01/2022 09:54:48| |ENTER ENTER MISSION| +|08/01/2022 09:54:48| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:48| ISSHOUKENMEI +|08/01/2022 09:54:48| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:48| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:48| ISSHOUKENMEI +|08/01/2022 09:54:48| |ENTA ENTA MISSION| +|08/01/2022 09:54:49| B +|08/01/2022 09:54:50| B +|08/01/2022 09:54:50| |ENTER ENTER MISSIOOOOOOOOOOOOOOOOOONNNN| +|08/01/2022 09:54:50| |thanks for the stream anon, have a good night all| +|08/01/2022 09:54:51| |ENTAH ENTAH MISSION| +|08/01/2022 09:54:51| ITSUMO +|08/01/2022 09:54:54| |2 YEAR PISS BREAK| +|08/01/2022 09:54:54| |Thank you Galax| +|08/01/2022 09:54:54| itsumo +|08/01/2022 09:54:54| 08:52 +|08/01/2022 09:54:55| |yes thanks for stream, I came late and only saw the movie right before the main battle started, but was fun thanks| +|08/01/2022 09:54:55| |BUFFER BUFFER MISSION| +|08/01/2022 09:54:57| |HIKARU TAIYOU| +|08/01/2022 09:54:57| |ITSUMO TE WO TSUNAIDE| +|08/01/2022 09:54:58| |3 am here goodnight anons| +|08/01/2022 09:54:58| |9:00 AM - time for sleep| +|08/01/2022 09:54:59| |ENTAH ENTAH MISSIOH| +|08/01/2022 09:54:59| |ENTER , ENTER MISSION| +|08/01/2022 09:55:00| |goodnight ESTbros| +|08/01/2022 09:55:00| >5pm +|08/01/2022 09:55:03| |ZUTTO ISSHO NO MIRAIIIIIIIII| +|08/01/2022 09:55:03| |3AM CHADS REPORT| +|08/01/2022 09:55:03| |ENTER ENTER MISSION| +|08/01/2022 09:55:03| |I SWEAR TO GOD IF WW3 HAPPENS I'LL WADE THROUGH THE RADS TO INTERRIGATE THE NIPS TO GIVE ME THE STORY BOARDS OF THE NEXT MOVIE| +|08/01/2022 09:55:03| |6 am | +|08/01/2022 09:55:06| |ASU NO TAIYOU HIKARI TAIYOU| +|08/01/2022 09:55:06| encore +|08/01/2022 09:55:06| |9am here too| +|08/01/2022 09:55:07| |THEYRE SO CUTE| +|08/01/2022 09:55:08| |WAKE ME UP IN 2024 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:55:09| |>americans complaining about having to stay up until 4am| +|08/01/2022 09:55:10| |i dont wanna go| +|08/01/2022 09:55:11| :D +|08/01/2022 09:55:11| MIRAIIIII +|08/01/2022 09:55:12| 6am +|08/01/2022 09:55:12| |GG BOYS| +|08/01/2022 09:55:12| |SEE YOU GLORIOUS BASTARDS AGAIN IN 2 YEARS!| +|08/01/2022 09:55:12| |2:53 AM| +|08/01/2022 09:55:13| |holy shit it's almost 4 am| +|08/01/2022 09:55:13| |10 AM ._.| +|08/01/2022 09:55:14| |ZUTTO ISSHO NO MIRAI| +|08/01/2022 09:55:18| |umm encore?| +|08/01/2022 09:55:19| |cute IJA| +|08/01/2022 09:55:19| |FINLAND WILL WIN| +|08/01/2022 09:55:20| |11 HOURS LADS WE MADE IT| +|08/01/2022 09:55:21| |EST CHADS REPORT| +|08/01/2022 09:55:22| 5:PM +|08/01/2022 09:55:25| GG +|08/01/2022 09:55:25| |1 hour sleep then work if the weather clears| +|08/01/2022 09:55:25| |LONG LIVE FINLAND| +|08/01/2022 09:55:26| |IT'S 10AM| +|08/01/2022 09:55:27| :D +|08/01/2022 09:55:27| |E N C O R E| +|08/01/2022 09:55:27| DF4? +|08/01/2022 09:55:28| YATTAAAAAA +|08/01/2022 09:55:28| |SEE YOU TOMORROW AND NEXT YEAR!| +|08/01/2022 09:55:29| |keep looping the stream for 2 years| +|08/01/2022 09:55:29| |ENCORE CHADS| +|08/01/2022 09:55:30| |SEE YOU IN 2 YEARS FRIENDS :)| +|08/01/2022 09:55:30| |EST REPORTING IN| +|08/01/2022 09:55:30| |GG NICE STREAM| +|08/01/2022 09:55:30| weeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +|08/01/2022 09:55:32| |DAS FINALE!| +|08/01/2022 09:55:33| |SEE YOU IN 2 YEARS| +|08/01/2022 09:55:33| |its over| +|08/01/2022 09:55:34| |6AM GOOD NIGHT ANONS| +|08/01/2022 09:55:34| |JELLY DONUT!!| +|08/01/2022 09:55:34| |time for sora no woto| +|08/01/2022 09:55:34| OMEDETOU +|08/01/2022 09:55:34| ;_; +|08/01/2022 09:55:35| |2AM MUNCHIES| +|08/01/2022 09:55:35| |PISS TIME| +|08/01/2022 09:55:36| GG +|08/01/2022 09:55:37| |so it's over| +|08/01/2022 09:55:37| |sleep till wotos| +|08/01/2022 09:55:37| |GREAT SHOW AS ALWAYS 8888888888888888888888888888888| +|08/01/2022 09:55:39| |ima miss yall| +|08/01/2022 09:55:39| |SEE YA /A/| +|08/01/2022 09:55:40| |IT WAS REALLY FUN| +|08/01/2022 09:55:40| |That was bloody good| +|08/01/2022 09:55:40| ;_; +|08/01/2022 09:55:40| |IM GONNA NEED MORE REDBULLS FOR THE SNW STREAM| +|08/01/2022 09:55:40| OYAYA +|08/01/2022 09:55:41| |2 FUCKING YEEEEEEEEEEEEAAAAAARRRRRRRRRR| +|08/01/2022 09:55:42| |THANK YOU GALAX| +|08/01/2022 09:55:42| :( +|08/01/2022 09:55:42| |2 more yearrrr ;_;| +|08/01/2022 09:55:43| |SEE YOU GUYS!| +|08/01/2022 09:55:43| |THANKS EVERYONE| +|08/01/2022 09:55:43| 888888888888888888888888888888888888888888888 +|08/01/2022 09:55:43| |reminder to not die before das finale 6| +|08/01/2022 09:55:44| |SEE YOU LADS IN THE SNW STREAM| +|08/01/2022 09:55:44| BRAVO +|08/01/2022 09:55:44| |ARIGATOU MINNA SAN| +|08/01/2022 09:55:44| |SEE YOU IN 2 YEARS | +|08/01/2022 09:55:45| YEAHHHHHHHHHHHHHHHHHH +|08/01/2022 09:55:45| |ZWEI JAHRE| +|08/01/2022 09:55:46| 8888888888888888888888888888888 +|08/01/2022 09:55:46| |NOOOOOOOOOOOOOOOOOOOOOOOOO GIVE ME MORE| +|08/01/2022 09:55:47| |see ya in 2 years anon| +|08/01/2022 09:55:47| |Me in the middle| +|08/01/2022 09:55:48| |I CLAP| +|08/01/2022 09:55:49| |GuP is DEAD| +|08/01/2022 09:55:49| |Goodbye anons| +|08/01/2022 09:55:49| |never forget what a cunt erika was in the anime| +|08/01/2022 09:55:49| TY +|08/01/2022 09:55:49| |GOOD NIGHT ANONS| +|08/01/2022 09:55:49| |Some of you guys are Alright, do come to school tomorrow| +|08/01/2022 09:55:49| |2 years| +|08/01/2022 09:55:50| |<3 | +|08/01/2022 09:55:50| |JOIN SNW TOMORROW| +|08/01/2022 09:55:50| 888888888888888888888888888888888888888888888888888888 +|08/01/2022 09:55:50| |SEE YOU FUCKERS IN 3 YEARS| +|08/01/2022 09:55:50| |TIME TO NOT FUCKING KILL MYSELF | +|08/01/2022 09:55:51| ANZU +|08/01/2022 09:55:51| |thank you streamer overlords| +|08/01/2022 09:55:51| |THESE GIRLS SURE ARE CUTE | +|08/01/2022 09:55:51| |THANK YOU EVERYONE 88888888| +|08/01/2022 09:55:52| |SEE YOU IN 2 YEARS!| +|08/01/2022 09:55:52| |THANK YOU| +|08/01/2022 09:55:53| |CYA IN 2 YEARS ANONS| +|08/01/2022 09:55:54| NINEN +|08/01/2022 09:55:54| 888888888888888888888888888888 +|08/01/2022 09:55:54| |SEE YALL IN 2024| +|08/01/2022 09:55:54| |DANKE MODS| +|08/01/2022 09:55:54| |nooooooooooooooo neeed more| +|08/01/2022 09:55:54| |LEARN FROM ACID ANON, DONT DO DRUGS| +|08/01/2022 09:55:54| AIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +|08/01/2022 09:55:55| |one final dvce spam?| +|08/01/2022 09:55:57| |LOVE YOU ALL| +|08/01/2022 09:55:58| |Thankou for being herre| +|08/01/2022 09:55:58| |BYE BYE| +|08/01/2022 09:55:58| |NUR ZWEI JAHRE MEHR| +|08/01/2022 09:55:58| |POST ANCHOVY LEWDS IN THREAD| +|08/01/2022 09:55:59| |my wives mako and arisu are so fucking cute| +|08/01/2022 09:55:59| |Thanks Galax| +|08/01/2022 09:56:01| |It's Ogre| +|08/01/2022 09:56:01| |2024 WOOOOOOOOO| +|08/01/2022 09:56:01| |until next time faggots| +|08/01/2022 09:56:02| |See you in Das Finale 4| +|08/01/2022 09:56:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:04| |GOOD BYE| +|08/01/2022 09:56:05| |Thanks for the stream!| +|08/01/2022 09:56:05| |I better see ALL of you for wotos tomorrow| +|08/01/2022 09:56:05| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:06| |dos anos| +|08/01/2022 09:56:07| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:07| |I HOPE I'M STILL ALIVE BY THEN HOLY FUCKING SHIT| +|08/01/2022 09:56:07| |I love you guys| +|08/01/2022 09:56:08| |LOVE YA ANONS TAKE CARE| +|08/01/2022 09:56:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:08| |STUDIO SAN I KNEELLLLLLLLLLLLLLLLLLLLLLL| +|08/01/2022 09:56:09| |sayonara buttlickers| +|08/01/2022 09:56:09| DVCE +|08/01/2022 09:56:10| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:56:10| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:10| |Azusa will save Ooarai| +|08/01/2022 09:56:11| |bye thanks for the stream!| +|08/01/2022 09:56:12| |SEE YOU IN 2 YEARS| +|08/01/2022 09:56:12| |DUCE DUCE DUCE DUECE| +|08/01/2022 09:56:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:14| |GuP FOREVER!!!!!!!!!!!!!!!!!!| +|08/01/2022 09:56:14| |SEE YOU <3| +|08/01/2022 09:56:15| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:56:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:15| |see you guys later.| +|08/01/2022 09:56:16| |REMEMBER: YOU CAN"T DIE BEFORE ITS ACTUALLY OVER| +|08/01/2022 09:56:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:20| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:20| |DA SVIDANYA | +|08/01/2022 09:56:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:21| 2024 +|08/01/2022 09:56:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:21| |GET WELL SOON ACID ANON| +|08/01/2022 09:56:22| |See you in wotos| +|08/01/2022 09:56:22| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:56:23| |see ya in 2 years| +|08/01/2022 09:56:23| |bye bye /a/| +|08/01/2022 09:56:23| |FINAL REMINDER THAT ANZU MEANS SEX| +|08/01/2022 09:56:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:25| |BROS OF CULTURE| +|08/01/2022 09:56:25| |DANMANKU IS GOING SO FAST NO ONE NOTICE I LUV ALL OF U FAGGOTS | +|08/01/2022 09:56:26| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE | +|08/01/2022 09:56:26| |TWO YEARS FOR A FUCKING CLIFF HANGAR| +|08/01/2022 09:56:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:27| NORIKO<3 +|08/01/2022 09:56:27| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:30| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:30| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:32| |I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES I HATE PIRATES | +|08/01/2022 09:56:32| |DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:33| |fuck you shark team| +|08/01/2022 09:56:33| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:34| Thanks! +|08/01/2022 09:56:34| |thanks anons good watching with you all :)| +|08/01/2022 09:56:34| |I NOTICED ANON SUCKS DICKS| +|08/01/2022 09:56:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:35| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:36| |DVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCEDVCE DVCE DVCE| +|08/01/2022 09:56:38| |gg bros| +|08/01/2022 09:56:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:39| |FRIST TIME?| +|08/01/2022 09:56:40| |See you 11 hours| +|08/01/2022 09:56:40| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:41| Dvcrdvcedvce +|08/01/2022 09:56:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:41| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:42| |I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE AND| +|08/01/2022 09:56:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:43| |Yukari is my wife| +|08/01/2022 09:56:43| |Can't wait to see the shark team be useless again!| +|08/01/2022 09:56:44| |I WANT TO FUCK HANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:56:45| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:56:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:56:45| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:45| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:56:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:47| |what happens in 11 hours?| +|08/01/2022 09:56:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:56:50| |DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! DVCE! | +|08/01/2022 09:56:50| |fuck you shark team| +|08/01/2022 09:56:50| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:51| |I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE ANDOU I LOVE AND| +|08/01/2022 09:56:55| |THANKS GALAX| +|08/01/2022 09:56:55| |SNW IN 11 HOURS| +|08/01/2022 09:56:55| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:56:56| |ANZU UOOOOOOOHHHHHHHHHHHHHHH| +|08/01/2022 09:56:56| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 09:56:57| 2024 +|08/01/2022 09:56:57| fug +|08/01/2022 09:56:57| |when is tank corner?| +|08/01/2022 09:56:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:57:00| | DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 09:57:00| |IIII HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATE NIGGERS I HATEN IGGHERE I| +|08/01/2022 09:57:06| |ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE ANZU LOVE | +|08/01/2022 09:57:07| |SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW SNW | +|08/01/2022 09:57:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:57:10| |anon that's racist| +|08/01/2022 09:57:11| |I WANT TO FUCK HANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA| +|08/01/2022 09:57:11| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 09:57:11| |Was was the total Danmaku count?| +|08/01/2022 09:57:12| anzu +|08/01/2022 09:57:16| |I WILL FLUFF YUKARI'S HAIR| +|08/01/2022 09:57:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 09:57:21| |ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU ÁNZU | +|08/01/2022 09:57:21| |fuck me in the ass| +|08/01/2022 09:57:22| |TL NOTE: ANZU = TOTSUGEKI| +|08/01/2022 09:57:22| |GIVE ME ALL THE LOLISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS| +|08/01/2022 09:57:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 09:57:27| |TL NOTE: "Anzu" means "sex"| +|08/01/2022 09:57:28| |I WILL FLUFF YUKARIS PUBES| +|08/01/2022 09:57:29| |THANKS TL| +|08/01/2022 09:57:30| |Thanks for the stream!| +|08/01/2022 09:57:33| |THANK TL| +|08/01/2022 09:57:33| |DANKE TL| +|08/01/2022 09:57:34| |LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI LOVE NISHI| +|08/01/2022 09:57:38| |I'm GOING to fuck Anzu| +|08/01/2022 09:57:38| |Erika is my wife| +|08/01/2022 09:57:40| |I HATE THE ANITCHRIST| +|08/01/2022 09:57:40| |thanks for the stream| +|08/01/2022 09:57:44| |REMINDER THAT MOMO IS A DORK| +|08/01/2022 09:57:45| |Some of You Guys are Alright, Don't go to School Tomorrow| +|08/01/2022 09:57:48| |I LOVE YOU FUCKERS| +|08/01/2022 09:57:48| |See you at Woto friends, now I rest| +|08/01/2022 09:57:50| |i love garupan| +|08/01/2022 09:57:57| |REMINDER THAT MOMO MARRIED TO ME| +|08/01/2022 09:58:03| o7 +|08/01/2022 09:58:03| |it's over| +|08/01/2022 09:58:04| |bai bai!!!| +|08/01/2022 09:58:05| |i don't wanna go, not yet| +|08/01/2022 09:58:12| |where tank corner| +|08/01/2022 09:58:14| Oyasumi +|08/01/2022 09:58:15| |SEX WITH HANA FOR THE REASON OF PROCREATION| +|08/01/2022 09:58:16| |LATER ANONS O7| +|08/01/2022 09:58:17| |GALAX play this https://youtube.com/watch?v=Z6Ek3h4HTRE| +|08/01/2022 09:58:17| |GOD I WISH I WERE MOMO'S HUSBAND| +|08/01/2022 09:58:21| |I CAN'T BELIEVE MIHO IS DED| +|08/01/2022 09:58:23| |Momo dum| +|08/01/2022 09:58:30| |Momo cum| +|08/01/2022 09:58:39| o7 +|08/01/2022 09:58:42| |is galax asleep| +|08/01/2022 09:58:42| Cunny? +|08/01/2022 09:58:47| o7 +|08/01/2022 09:58:50| |THANKS FOR THE GUPPIES!| +|08/01/2022 09:58:53| pi +|08/01/2022 09:58:57| o/ +|08/01/2022 09:59:02| VODKA! +|08/01/2022 09:59:05| |holy fuck that scared me| +|08/01/2022 09:59:05| VODKAAAAAAAAAA +|08/01/2022 09:59:06| |fug :DDD| +|08/01/2022 09:59:07| |O FUG :DDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:59:08| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:08| |OH SHIT| +|08/01/2022 09:59:10| |i refresh and what is this| +|08/01/2022 09:59:12| BLODKA +|08/01/2022 09:59:12| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:13| BENIS +|08/01/2022 09:59:14| BASED +|08/01/2022 09:59:14| |VODKA :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 09:59:16| |CUTE BOOT TAP| +|08/01/2022 09:59:17| :DDDDDDDDDDDD +|08/01/2022 09:59:20| :DDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:23| ウオッカ +|08/01/2022 09:59:23| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:23| KEIZOKUKLAANI +|08/01/2022 09:59:26| ウオッカ +|08/01/2022 09:59:26| |I haven't heard this song in 11 years at least| +|08/01/2022 09:59:27| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:29| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:29| VODLA +|08/01/2022 09:59:31| ウオッカ +|08/01/2022 09:59:32| |my wife, rosehip| +|08/01/2022 09:59:32| BASED +|08/01/2022 09:59:34| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:38| :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:41| |DRINKING IS GOOD FOR YOU| +|08/01/2022 09:59:43| |I FEEL THE PERKEL WITHIN| +|08/01/2022 09:59:43| |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD EBIN AFTER CREDITS| +|08/01/2022 09:59:45| :DDDDDDDDDDDDDDDDDD +|08/01/2022 09:59:47| ウオッカ +|08/01/2022 09:59:52| |after party time?| +|08/01/2022 09:59:55| |FUG DIS >:D| +|08/01/2022 10:00:03| |ebin after party| +|08/01/2022 10:00:04| |was so confused what I was hearing and which tab it was from| +|08/01/2022 10:00:09| ウオッカ +|08/01/2022 10:00:13| |fug just end already I need to sleep :DDDD| +|08/01/2022 10:00:15| ウオッカ +|08/01/2022 10:00:16| |we need to end on What is Love, that is tradition| +|08/01/2022 10:00:17| |GREAT AFTER PARTY| +|08/01/2022 10:00:20| ウオッカ +|08/01/2022 10:00:44| MAWARE +|08/01/2022 10:00:46| |does anyone know when the next stream will be in future?| +|08/01/2022 10:00:59| |this is the last stream| +|08/01/2022 10:01:00| |when part 4 is out| +|08/01/2022 10:01:00| |when the next Das Finale comes out| +|08/01/2022 10:01:09| |see you in 2 years| +|08/01/2022 10:01:10| |When Part 4 is released| +|08/01/2022 10:01:11| |the world will end before we get more gup content, this is the end| +|08/01/2022 10:01:19| |WODKA WODKA WODKA| +|08/01/2022 10:01:22| |dont die until 2 years| +|08/01/2022 10:01:30| |did we just watch part 3?| +|08/01/2022 10:01:31| |Next marathon will be 12 hours long| +|08/01/2022 10:01:32| |BI-ANNUAL GUP STREAMS FOREVER| +|08/01/2022 10:01:32| ウオッカ          ウオッカ               ウオッカ           ウオッカ +|08/01/2022 10:01:33| |what can they do in fas finale 4 to utterly and ruthlessly ruin the series| +|08/01/2022 10:01:40| |yeah we just saw das final 3| +|08/01/2022 10:01:45| Okay +|08/01/2022 10:01:53| :DDDDDDDDDDDDDDD +|08/01/2022 10:01:56| |>GuP was in 2012 where did the time go| +|08/01/2022 10:01:57| |this is actually the teaser for df4| +|08/01/2022 10:01:58| |12. Then 13. Then anons die of sleep deprivation| +|08/01/2022 10:01:58| :DDDDD +|08/01/2022 10:01:59| |god I hate finns| +|08/01/2022 10:02:00| |>finnish >not black metal| +|08/01/2022 10:02:00| |EBIN :DDDDDDDDDDDDDDDDDDDDDDDD| +|08/01/2022 10:02:06| |mika boobs| +|08/01/2022 10:02:13| Milka +|08/01/2022 10:02:13| :3 +|08/01/2022 10:02:13| kino +|08/01/2022 10:02:16| Kino +|08/01/2022 10:02:16| :3 +|08/01/2022 10:02:18| Kino! +|08/01/2022 10:02:21| YES +|08/01/2022 10:02:23| KEK +|08/01/2022 10:02:26| SFX +|08/01/2022 10:02:28| |FWEE FWEE FWEE| +|08/01/2022 10:02:32| |One of my Favorite WEBms| +|08/01/2022 10:02:42| toot +|08/01/2022 10:02:43| KINO +|08/01/2022 10:02:44| |FWEE FWEE KNOCK KNOCK BANG BANG| +|08/01/2022 10:03:00| |God the soundporn...| +|08/01/2022 10:03:00| AAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 10:03:07| |okay i take it back, this should be our official ending anthem| +|08/01/2022 10:03:14| |WHAT IS LOVE| +|08/01/2022 10:03:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:16| |WHAT IS LOVE| +|08/01/2022 10:03:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:18| |GET A SUPER CUB NOW| +|08/01/2022 10:03:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:21| |DON'T HURT ME| +|08/01/2022 10:03:21| yes +|08/01/2022 10:03:22| |WHAT IS DUCE| +|08/01/2022 10:03:23| |BABY DON'T HURT ME| +|08/01/2022 10:03:23| |BABY DON'T HURT ME| +|08/01/2022 10:03:24| DUCEDUCEDUCE +|08/01/2022 10:03:24| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 10:03:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:24| |WHAT IS LOVE| +|08/01/2022 10:03:25| |WHAT IS LOVE| +|08/01/2022 10:03:26| |DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:03:27| YES +|08/01/2022 10:03:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:31| |DONT HURT ME| +|08/01/2022 10:03:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:03:37| |DVCE DVCE DVCE| +|08/01/2022 10:03:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:39| |DUCE | +|08/01/2022 10:03:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:39| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:41| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:42| |DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:42| |DUCE | +|08/01/2022 10:03:42| |will we be getting a stream when the dub comes out?| +|08/01/2022 10:03:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:46| |DUCE | +|08/01/2022 10:03:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:47| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:47| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:03:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:03:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:50| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:03:51| |DUCE | +|08/01/2022 10:03:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:55| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:03:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:03:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:03:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:00| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:04| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:04:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:06| |BABY DONT HURT ME| +|08/01/2022 10:04:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:09| DUCE +|08/01/2022 10:04:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:10| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:12| |WHAT IS LOVE| +|08/01/2022 10:04:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:04:16| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:16| |WHAT IS LOVE| +|08/01/2022 10:04:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:20| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:22| DUCE +|08/01/2022 10:04:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:24| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:04:24| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:25| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:26| |DUCE DUCE DUCE DUCE| +|08/01/2022 10:04:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:27| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:27| DUCE +|08/01/2022 10:04:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:30| DUCE +|08/01/2022 10:04:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:32| |DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! DUCE! | +|08/01/2022 10:04:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:35| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo | +|08/01/2022 10:04:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:35| |DUCE | +|08/01/2022 10:04:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:40| |DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:04:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCED DVCE| +|08/01/2022 10:04:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:43| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:49| |DUCE | +|08/01/2022 10:04:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:51| DUCE +|08/01/2022 10:04:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:53| |DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:04:53| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:04:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:04:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:04:59| DUCE +|08/01/2022 10:04:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:01| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:03| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:11| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:12| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:12| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:13| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:14| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |NO MORE| +|08/01/2022 10:05:16| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:18| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:22| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:23| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:23| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE CUDE CUDE CUCE| +|08/01/2022 10:05:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:26| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:05:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:31| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:34| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:35| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:05:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE| +|08/01/2022 10:05:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:05:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:42| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:42| DUCE +|08/01/2022 10:05:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:49| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:49| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:05:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:52| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:54| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:57| |WHAT IS LOVE| +|08/01/2022 10:05:57| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:58| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:05:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:05:59| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:04| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:09| |FUCK I MISSED DF3| +|08/01/2022 10:06:09| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:17| |DUCE | +|08/01/2022 10:06:19| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:06:20| |DVCE | +|08/01/2022 10:06:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:27| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:28| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:29| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:33| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:34| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:36| |DVCE IS LOVE| +|08/01/2022 10:06:36| |YOU SICK BASTARDS I WAS FREEE, I WAS FREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE| +|08/01/2022 10:06:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:37| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:40| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:42| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:43| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:45| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:47| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:48| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:06:48| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:51| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:51| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:06:51| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:52| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:54| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:06:54| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:55| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:06:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:55| v +|08/01/2022 10:06:56| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:57| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:58| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:06:59| |oOoOoOooOoOoOooOoOoOooOoOoOooOoOoOooOoOoOo OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| +|08/01/2022 10:07:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:02| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:03| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:03| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE| +|08/01/2022 10:07:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:05| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:05| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:06| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:07| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:08| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:07:08| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:10| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:10| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:11| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:12| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:13| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:14| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:15| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:16| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:17| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:17| DUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCEDUCE +|08/01/2022 10:07:19| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:07:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:20| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:20| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:21| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:21| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:22| DOUCHE +|08/01/2022 10:07:23| oOoOoOo +|08/01/2022 10:07:23| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:24| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:25| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:25| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:26| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:26| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:28| oOoOoOooOoOoOooOoOoOooOoOoOo +|08/01/2022 10:07:28| |DUCE DUCE DUCE | +|08/01/2022 10:07:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:30| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:07:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:30| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:31| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:32| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:32| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:33| |o/ o/ o/ o/ o/| +|08/01/2022 10:07:33| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:34| oOoOoOooOoOoOooOoOoOooOoOoOo +|08/01/2022 10:07:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:35| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:35| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:36| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:36| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:37| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:38| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:38| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCEDVCE DVCE DVCE DVCE DV| +|08/01/2022 10:07:39| | DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVC| +|08/01/2022 10:07:39| |WHAT IS LOVE| +|08/01/2022 10:07:39| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:40| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:41| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:42| |WHAT IS LOVE| +|08/01/2022 10:07:44| |DUCE IS LOVE| +|08/01/2022 10:07:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:44| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:44| |ALL MY FRIENDS ARE DEAD| +|08/01/2022 10:07:45| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:46| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:46| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:47| |WHAT IS LOVE| +|08/01/2022 10:07:47| F +|08/01/2022 10:07:50| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:50| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:53| |11 HOURS | +|08/01/2022 10:07:55| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:07:56| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:07:59| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:08:00| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:08:00| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:08:07| |and thus the final duces fade away| +|08/01/2022 10:08:07| |I WAS ALMOST FREE YOU FUCKS, BUT YOU HAD TO PULL ME BACK IN| +|08/01/2022 10:08:09| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:08:11| DVCE? +|08/01/2022 10:08:14| |>IT'S BEEN 1000 YEARS| +|08/01/2022 10:08:15| |DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE DVCE | +|08/01/2022 10:08:16| |IS IT OVER?| +|08/01/2022 10:08:20| |DUWANG TIME| +|08/01/2022 10:08:20| |GOOD NIGHT BOYS| +|08/01/2022 10:08:22| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:08:24| |am I free?| +|08/01/2022 10:08:26| |thanks 4 strim| +|08/01/2022 10:08:27| |go to sleep for 2 years then come back| +|08/01/2022 10:08:28| |WHERE TANK CORNER| +|08/01/2022 10:08:29| |we're... free...?| +|08/01/2022 10:08:31| |GOOD NIGHT AND GOOD DAY /A/| +|08/01/2022 10:08:32| |Bean chariot?| +|08/01/2022 10:08:33| <3 +|08/01/2022 10:08:35| Dvce +|08/01/2022 10:08:37| |THANKS FOR STREAM AND AFTER PARTY| +|08/01/2022 10:08:38| |reminder to stay alive anons, you have to see the end of GuP| +|08/01/2022 10:08:39| |REMINDER THAT YOU'RE STUCK HERE FOREVER| +|08/01/2022 10:08:42| |now that duce has been eliminated we will never see duce drive a tank ever again| +|08/01/2022 10:08:43| |IS IT FINALLY OVER????| +|08/01/2022 10:08:48| |Sleep for 2 years| +|08/01/2022 10:08:48| |ARE WE FREE??| +|08/01/2022 10:08:53| |ANTI DVCEFAGS NEED TO DIE| +|08/01/2022 10:08:54| |You cannot die until DF is finished| +|08/01/2022 10:08:54| OYASUMI +|08/01/2022 10:08:56| |Sleep forever| +|08/01/2022 10:08:57| |IS THIS HELL OVER????????| +|08/01/2022 10:09:01| uoh +|08/01/2022 10:09:05| |You cannot die until Ribbon Warrior is adapted| +|08/01/2022 10:09:07| |YOTSUBA ANIME WHEN????| +|08/01/2022 10:09:07| anons... +|08/01/2022 10:09:09| |Erika <3| +|08/01/2022 10:09:12| .....Totsugeki? +|08/01/2022 10:09:13| |mako is forever| +|08/01/2022 10:09:13| |save the whales| +|08/01/2022 10:09:16| |see you at DF4| +|08/01/2022 10:09:17| |>YOTSUBA ANIME| +|08/01/2022 10:09:17| |YOTSUBA ANIME NEVER| +|08/01/2022 10:09:22| |Sayonara totsugeki!| +|08/01/2022 10:09:27| |AZUMA DOESNT WANT IT| +|08/01/2022 10:09:32| GAY +|08/01/2022 10:09:33| |>ITS TIME TO WAIT ANOTHER 2 YEARS| +|08/01/2022 10:09:37| |SAY IT AIN'T SO| +|08/01/2022 10:09:41| |See you in 2 years| +|08/01/2022 10:09:48| |SEE YOU GUYS!| +|08/01/2022 10:09:49| |later gup bros| +|08/01/2022 10:09:51| |Don't kill yourselves until that| +|08/01/2022 10:09:53| |buh bye| +|08/01/2022 10:09:56| NIGGER +|08/01/2022 10:09:57| |See you guys later in the threads is was fun| +|08/01/2022 10:10:01| cy/a/ +|08/01/2022 10:10:02| |i hope we may meet again here in two years /a/| +|08/01/2022 10:10:03| Based +|08/01/2022 10:10:04| |JUST END ME| +|08/01/2022 10:10:08| HUGGBEES +|08/01/2022 10:10:08| |Remember, you're not allowed to die until GuP is over| +|08/01/2022 10:10:10| |I'll do my best to live for the series| +|08/01/2022 10:10:17| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:10:22| sayonara +|08/01/2022 10:10:28| |I HATE TEH ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 10:10:31| |LAST FOR DVCE| +|08/01/2022 10:10:40| |LAST FOR SEX WITH MAKO| +|08/01/2022 10:10:44| |last for ARISU| +|08/01/2022 10:10:49| :) +|08/01/2022 10:10:51| |LAST FOR DUCE| +|08/01/2022 10:10:53| |see you tomorrow at woto stream| +|08/01/2022 10:10:55| |Last for slags beating the dumb dog| +|08/01/2022 10:10:55| |LAST FOR LEWDING ALL THE GUPPIES UNDER 5FT| +|08/01/2022 10:10:59| |Last for I love the onion| +|08/01/2022 10:11:01| |gonna have sex with miho | +|08/01/2022 10:11:01| |SAVE THE WHALES!| +|08/01/2022 10:11:14| |How much do you love onion| +|08/01/2022 10:11:15| |LAST FOR SAORI PLEASURING HORSE DICK| +|08/01/2022 10:11:22| |I HATE THE ONION| +|08/01/2022 10:11:26| :( +|08/01/2022 10:11:26| |KEEP YOUR POWDER DRY| +|08/01/2022 10:11:29| |I love the onion| +|08/01/2022 10:11:30| |last for my wife anzu| +|08/01/2022 10:11:38| |anuz, heh| +|08/01/2022 10:11:38| MIHO! +|08/01/2022 10:11:45| |see you in 2024| +|08/01/2022 10:11:45| |WE HAVE YOU SURROUNDED COME EAT YOUR ONIONS | +|08/01/2022 10:11:48| |maho is too sexy| +|08/01/2022 10:11:56| |you misspelled mako| +|08/01/2022 10:11:59| |I HATE THE FROGS I HATE THE FROGS I HATE THE FROGSI HATE THE FROGS| +|08/01/2022 10:12:14| |I HATE THE ANTICHRIST I HATE THE ANTICHRISH I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE THE ANTICHRIST I HATE T| +|08/01/2022 10:12:36| |ONIONS HAVE LAYERS | +|08/01/2022 10:12:39| |good night friends| +|08/01/2022 10:12:40| |see you in 2 years o7| +|08/01/2022 10:12:45| |o7 | +|08/01/2022 10:12:48| mataneeeeeeeeeeeeeeeee +|08/01/2022 10:12:52| |REMEMBER TO PRACTICE YOUR SENSHA DOU| +|08/01/2022 10:13:09| danmaku +|08/01/2022 10:13:35| |this is place is so empty no one will see me claim katyusha as my lawfully wedded wife| +|08/01/2022 10:13:45| |I saw that| +|08/01/2022 10:13:50| |katuysha is my lawfully wedded onahole| +|08/01/2022 10:13:53| |she's my wife already, sorry| +|08/01/2022 10:13:54| |are we dead yet?| +|08/01/2022 10:14:12| |UOOOOOH KATYUSHA TUMMY ToT| +|08/01/2022 10:14:51| |so long, and thanks for all the fish| +|08/01/2022 10:15:10| |how many autists remain?| +|08/01/2022 10:15:12| |last for dvce| +|08/01/2022 10:15:25| |last for ARISU| +|08/01/2022 10:15:36| |last for (you)| +|08/01/2022 10:17:50| |i'm going to bed if no one replies for the next minute| +|08/01/2022 10:17:58| |stay up baka| +|08/01/2022 10:18:01| |go to bed| +|08/01/2022 10:18:01| |hah now you have to stay up| +|08/01/2022 10:18:03| SHIT +|08/01/2022 10:18:11| |oyasumi faggots| +|08/01/2022 10:18:13| floof +|08/01/2022 10:18:21| oyasumako +|08/01/2022 10:18:26| ohayou +|08/01/2022 10:18:30| |ma si jolie femme| +|08/01/2022 10:18:37| |frogs out| +|08/01/2022 10:18:48| |BUMPY SEX WITH MAKO| +|08/01/2022 10:21:41| |if you can see this you should be asleep| +|08/01/2022 10:21:48| NAH +|08/01/2022 10:21:52| |I'll never sleep again| +|08/01/2022 10:22:38| |Sleep is a lie| +|08/01/2022 10:22:46| |I WANT TO INSEMINATE HANA WITH MY NECTOR| +|08/01/2022 10:22:52| |well if sleep was an upright that would be weird, haha| +|08/01/2022 10:23:22| |Mako sleeps so you don't have to| +|08/01/2022 10:24:53| |NEVER FORGETTI DVCE| +|08/01/2022 10:25:01| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 10:25:18| DVCE +|08/01/2022 10:25:25| benis +|08/01/2022 10:25:26| DVCE +|08/01/2022 10:25:33| DVCE +|08/01/2022 10:25:53| |ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU ARISU | +|08/01/2022 10:26:04| |is my wife| +|08/01/2022 10:26:58| |might be your wife if reality allowed a being as perfect as arisu to exist| +|08/01/2022 10:28:01| |WHAT THE FUCK WHERE AM I? I FEEL ASLEEP AND JUST WOKE UP TO A BLACK SCREEN| +|08/01/2022 10:28:13| |it's starting in 5min you're just in time| +|08/01/2022 10:28:27| H-honto? +|08/01/2022 10:28:34| |uso desu| +|08/01/2022 10:30:00| DAREKAAAAAAAAAAAAAAAAAAAAAAA +|08/01/2022 10:30:05| nani +|08/01/2022 10:32:43| |chat is so dead nobody will know I desperately need to have sex with reizei mako| +|08/01/2022 10:33:10| |just so you know I saw that| +|08/01/2022 10:33:20| |no you didn't| +|08/01/2022 10:33:25| |yes I did| +|08/01/2022 10:37:10| DUCE +|08/01/2022 10:37:16| |Okay this time for real I'll go to bed, time to lucid dream about Mako.| +|08/01/2022 10:38:12| |whatever that was in blue, please summarize, I had my contacts out| +|08/01/2022 10:38:45| |basically having sex with mako in my dreams| +|08/01/2022 10:40:20| |why are we still here, just to suffer?| +|08/01/2022 10:41:02| |there's no other recourse left to us| +|08/01/2022 10:43:01| |where'd the loading indicator go| +|08/01/2022 10:44:00| |somehow 11 hours wasn't enough| +|08/01/2022 10:44:32| gaooo!!! +|08/01/2022 10:46:20| |no length of time could be enough, you guys are the best| +|08/01/2022 10:51:48| |last for mako| +|08/01/2022 10:53:05| |last after my last last for arisu| +|08/01/2022 10:55:24| |sex with miho| +|08/01/2022 10:55:31| |sex with mako| +|08/01/2022 10:55:38| |sex with Yukari| +|08/01/2022 10:55:45| |Sex with arisu| +|08/01/2022 10:55:51| |sex with hana| +|08/01/2022 10:55:58| |sex with nishi| +|08/01/2022 10:56:04| |sex with yuzu| +|08/01/2022 10:56:11| |sex with sae-chan| +|08/01/2022 10:56:18| |sex with nekonya| +|08/01/2022 10:56:24| |sex with chiyo| +|08/01/2022 10:56:27| |sex with mako-chan| +|08/01/2022 10:56:30| |sex with sodoko| +|08/01/2022 10:56:36| |sex with kondou| +|08/01/2022 10:56:40| |sex with arisu| +|08/01/2022 10:56:42| |sex with hoshino| +|08/01/2022 10:56:48| |sex with dvce| +|08/01/2022 10:56:54| |sex with pepperoni| +|08/01/2022 10:57:01| |sex with katyusha| +|08/01/2022 10:57:08| |sex with mika| +|08/01/2022 10:57:10| |sex with anzu| +|08/01/2022 10:57:14| |and lastly| +|08/01/2022 10:57:20| |watching andou and oshida sex| +|08/01/2022 11:06:48| |Sex with Arisu| +|08/01/2022 11:07:10| |Threesome sex with Arisu and Mako| +|08/01/2022 11:09:15| |now i'm all alone| +|08/01/2022 11:09:40| |Sex with Arisu and Mako and Katyusha and Anzu and Sodoko| +|08/01/2022 11:14:09| |it's over| +|08/01/2022 11:18:00| |is it over?| +|08/01/2022 11:18:22| ahem +|08/01/2022 11:18:28| |DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE DUCE | +|08/01/2022 11:18:37| |that is all| +|08/01/2022 12:14:09| danmaku +|08/01/2022 12:36:25| |miss u guys| +|08/01/2022 12:51:32| DANMAKU +|08/01/2022 13:05:26| DDAAAAANMAKU +|08/01/2022 13:33:00| aaaaaaa diff --git a/src/getChat/replay/sockets/data/res.text b/src/getChat/replay/sockets/data/res.text new file mode 100644 index 0000000..32597bd --- /dev/null +++ b/src/getChat/replay/sockets/data/res.text @@ -0,0 +1,1000 @@ + 47909 DUCE + 33810 + 33388 |08/01/2022 + 28349 DVCE + 7878 USA + 4120 | + 2173 |DUCE + 1568 the + 1203 |DVCE + 1111 THE + 1101 I + 929 is + 870 a + 799 to + 759 |I + 677 HATE + 639 DVCE! + 553 BANZAI + 503 DUCE! + 471 in + 450 ÁNZU + 433 A + 406 o/ + 399 for + 397 of + 375 IS + 365 \o/ + 361 |USA + 354 this + 347 you + 347 LOVE + 336 :DDDD + 331 MOMO + 326 DUCEDUCE + 306 PAS + 286 DUCE| + 285 and + 283 CTU + 279 are + 267 TO + 265 with + 264 that + 258 on + 243 KINO + 236 AU + 219 they + 216 my + 215 YOU + 211 have + 207 be + 202 just + 189 TOTSUGEKI + 189 so + 188 it + 187 F + 184 like + 182 IN + 177 was + 177 Duce + 174 fucking + 163 WIG + 160 we + 159 UOH + 158 FUCKING + 156 MY + 152 PIRATES + 151 ANDOU + 147 ANTICHRIST + 146 ENTER + 145 BOKO + 143 FOR + 142 no + 139 OF + 138 will + 137 NO + 135 get + 135 FUCK + 135 DVCE| + 134 SEX + 132 not + 132 her + 132 all + 131 your + 131 |PANZER + 128 THIS + 126 DVCEDVCE + 125 CUTE + 124 tank + 124 |cute + 123 WITH + 123 want + 123 means + 121 |the + 121 at + 120 ON + 119 CHOVY + 119 can + 118 do + 116 |i + 116 fuck + 115 |THE + 115 IT + 115 |CUTE + 115 can't + 113 |OH + 112 as + 111 🍕 + 109 USAUSA + 107 VOR| + 105 ARE + 104 WE + 103 she + 103 |\o/ + 103 CUM + 102 USA| + 102 up + 102 NOT + 101 more + 100 HEIKA + 99 |The + 98 got + 97 ToT + 97 \o/| + 97 |FUCK + 96 AND + 96 🍝 + 95 tank| + 94 UP + 92 THAT + 92 me + 92 HOSHINO + 92 did + 92 ALL + 91 has + 91 an + 91 about + 90 too + 90 PASTA + 90 i + 89 |YOU + 89 |what + 89 one + 89 |AU + 88 love + 88 does + 87 JUST + 86 TENNO + 85 time| + 85 ;_; + 84 never + 83 if + 83 BANZAI! + 82 WILL + 82 |MOMO + 81 TIME + 81 shit + 81 me| + 81 ;_;7 + 80 o7 + 80 MISSION| + 80 ME + 80 cute + 79 |TL + 79 HOSHINO? + 79 FROGS + 78 S + 78 by + 77 |WHAT + 77 TIME| + 75 what + 75 SHIT + 75 |based + 74 YOUR + 74 |why + 74 their + 74 from + 73 would + 73 |WE + 73 WANT + 73 them + 73 BOKO| + 72 still + 71 |NO + 71 it's + 71 |how + 70 JOB + 70 even + 70 AN + 69 |ENTER + 68 than + 68 how + 68 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD + 68 best + 67 when + 67 out + 67 |BOKO + 66 don't + 65 U + 65 some + 64 VSA + 64 NO| + 64 going + 64 CHOBIKO + 64 |A + 63 |What + 63 time + 63 |this + 63 2 + 62 gonna + 62 BE + 61 |How + 61 FAT + 61 ! + 60 go + 60 girls + 59 tanks + 59 |no + 59 ME| + 59 HAVE + 58 JOBBERS + 58 it| + 58 here + 58 GUTS + 58 GO + 58 but + 58 |BASED + 57 |they + 57 RUM + 57 LIKE + 57 |KINO + 57 good + 56 USA! + 56 only + 55 GET + 55 BROS| + 55 ALICE + 55 again| + 54 were + 54 shit| + 54 or + 54 |momo + 54 BROS + 53 this| + 53 these + 53 see + 53 |oh + 53 now| + 53 :DDDDDDDDDDDD + 53 could + 53 ;_;| + 52 MOMO| + 52 |GANBARE + 52 being + 51 those + 51 |SHE + 51 need + 51 |is + 50 SO + 50 SI + 50 make + 50 |I'm + 50 DID + 50 cute| + 50 ANZU + 49 WAS + 48 |you + 48 |my + 48 |Just + 48 |it's + 48 here| + 48 HER + 48 GOT + 48 getting + 48 FRENCH + 48 ERIKA + 48 BTFO| + 47 |Why + 47 |THANKS + 47 |RIP + 47 |just + 47 |ENTAH + 47 carbon + 47 CAN + 46 TL| + 46 right + 46 Note: + 46 |MY + 46 know + 46 believe + 45 should + 45 |NOT + 45 |It's + 45 IT| + 45 Anzu + 44 |You + 44 |They + 44 tanks| + 44 |Momo + 44 |ITS + 44 |IT'S + 44 |imagine + 44 > + 43 WAY + 43 |This + 43 FOOD + 43 dead| + 43 bros| + 42 think + 42 team + 42 sex + 42 PANZER + 42 CAN'T + 41 stream + 41 |SHUT + 41 |SEX + 41 momo + 41 |Imagine + 41 doesn't + 41 didn't + 41 DEAD| + 41 CUTE| + 40 USE + 40 TOTSUGEKI| + 40 SHIT| + 40 really + 40 PAS| + 40 ONION + 40 momo| + 40 many + 40 |its + 40 |fucking + 40 DAS + 40 been + 40 anon| + 39 years + 39 |we + 39 TOO + 39 |thanks + 39 |sex + 39 RIP + 39 over + 39 J'aime + 39 |Is + 39 into + 39 |FUG + 39 |FUCKING + 39 ENTAH + 39 |ANZU + 39 ANTICHRIST| + 38 wish + 38 THIS| + 38 TANK| + 38 |so + 38 MORE + 38 |Cute + 37 UP| + 37 I'm + 36 wife| + 36 UTE + 36 up| + 36 stream| + 36 NE + 36 lmao| + 36 |LETS + 36 KNOW| + 36 kino + 36 |Erika + 36 DO + 36 coated + 36 >BRITISH + 36 |BIG + 36 |BANZAI + 36 actually + 35 WHERE + 35 und + 35 subtext + 35 school + 35 RIGGED + 35 real + 35 next + 35 |Miho + 35 had + 35 DEAD + 35 CAMARADES + 34 wife + 34 WANI| + 34 |THEY + 34 |she + 34 over| + 34 off + 34 |No + 34 much + 34 |JUST + 34 isn't + 34 |HOLY + 34 GIRL + 34 fat + 34 |DVCE! + 34 DUCK + 34 duce + 34 AGAIN| + 33 WEW + 33 |THIS + 33 now + 33 KINO| + 33 KATYUSHA + 33 its + 33 |GET + 33 FREGO + 33 flag + 33 |ERIKA + 33 DON'T + 33 DA| + 33 big + 33 ASS + 33 |2 + 32 win + 32 |who + 32 |UND + 32 |that + 32 OPPAI + 32 NIGGERS + 32 kino| + 32 ITS + 32 |GAS + 32 |fuck + 32 FROM + 32 DOWN| + 32 |BENIS + 32 |Based + 32 ARISU + 32 anzu + 32 after + 31 why + 31 |That + 31 TANK + 31 take + 31 |So + 31 panzer + 31 OST + 31 o/| + 31 NOW| + 31 MIHO + 31 AT + 31 "Anzu" + 30 where + 30 way + 30 |TOTSUGEKI + 30 STUG + 30 |Oh + 30 |MEXT + 30 maho + 30 KANI + 30 GOOD + 30 GONNA + 30 FUCK| + 30 |DUMB + 30 |dumb + 30 DOES + 30 BUTT + 30 |Anzu + 29 |SORE + 29 OUT + 29 O + 29 |nice + 29 Momo + 29 made + 29 LOVE| + 29 HOW + 29 hate + 29 girl + 29 E + 29 better + 29 |BEST + 29 am + 29 8 + 28 YOU| + 28 THEY + 28 T| + 28 rip + 28 miho + 28 heard + 28 gup + 28 ERIKA| + 28 eat + 28 ass + 27 万歳 + 27 |TIME + 27 |Time + 27 there + 27 our + 27 N + 27 |Maho + 27 MAHO + 27 GAS + 27 flat + 27 :DDDDDDDDDDDDDDDDDD + 27 |CARBON + 27 BTFO + 27 boko + 27 BEST + 27 autism + 27 any + 27 always + 26 |Yukari + 26 WORST + 26 VOR + 26 URA + 26 u + 26 that| + 26 |STOP + 26 she's + 26 |o/ + 26 |My + 26 L'oignon + 26 give + 26 |Girls + 26 girl| + 26 GAS| + 26 frit + 26 DVEL! + 26 dont + 26 :DDDDD| + 26 4 + 25 yukari + 25 you| + 25 two + 25 THEM + 25 team| + 25 SNW + 25 sleep + 25 SEX| + 25 sex| + 25 |SEE + 25 rape + 25 R + 25 piss + 25 |panzer + 25 OUR + 25 |O + 25 |miho + 25 least + 25 |HOW + 25 HARD + 25 |GO + 25 |DUCE! + 25 cant + 25 because + 25 AUTISM + 25 ass| + 25 Anzu| + 25 AHN~ + 25 3 + 24 |YUKI + 24 |yukari + 24 WERE + 24 vor + 24 "SEX"| + 24 PARTY + 24 OUT| + 24 other + 24 ONION| + 24 ONE + 24 |not + 24 NEED + 24 literally + 24 kill + 24 hit + 24 HAS + 24 good| + 24 |GOD + 24 |god + 24 FUG + 24 fuck| + 24 FLOOF + 24 EAT + 24 DUCEDUCE| + 24 :DDDDDDDDDDDDDDD| + 24 :DDDDDD + 24 come + 24 COATED + 24 BIG + 24 before + 24 based + 24 |ÁNZU + 24 against + 24 = + 23 |YUKARI + 23 |wtf + 23 who + 23 WAR + 23 use + 23 stop + 23 SHARK + 23 scene + 23 |rip + 23 put + 23 OVER + 23 out| + 23 O| + 23 NUTS + 23 moment| + 23 MEXT + 23 |If + 23 HERE + 23 he + 23 GIRL| + 23 DIE + 23 dead + 23 CUTE! + 23 AZUSA + 23 AM + 23 |a + 22 WHAT + 22 WANI + 22 TOMMY + 22 tl| + 22 ship + 22 OVER| + 22 \O/ + 22 NEVER + 22 Miho + 22 little + 22 |kino + 22 here, + 22 |God + 22 |get + 22 french + 22 FEET + 22 every + 22 Erika + 22 enough + 22 |DON'T + 22 |DO + 22 |:DDDD + 22 :DDDD| + 22 :D + 22 COOKER + 22 |carbon + 22 |big + 22 BANZAI| + 22 back + 21 years| + 21 WIN + 21 |WHY + 21 watching + 21 US + 21 |time + 21 TANKS| + 21 SODOKO + 21 SHUT + 21 show + 21 SHINGUN| + 21 SHE + 21 pretty + 21 ON| + 21 |>not + 21 |MIHO + 21 MIHO| + 21 |MAKO + 21 |maho + 21 look + 21 KNOW + 21 hours + 21 GO| + 21 GIRLS + 21 GAY + 21 fucked + 21 down + 21 |do + 21 CV33 + 21 |boko + 21 BASED + 21 BAKARONI + 21 bad + 21 ANZU| + 21 |All + 20 watch + 20 wani| + 20 thought + 20 they're + 20 THEIR + 20 STILL + 20 ship| + 20 seen + 20 NOW + 20 needs + 20 lost + 20 lol| + 20 |IS + 20 |IMAGINE + 20 |I'M + 20 |HERE + 20 guys + 20 ever + 20 down| + 20 |DEJA + 20 |:DDDDDDDDDDDDDDDDDDDDDDDDDDDDD + 20 :DDDDDD| + 20 :DDD| + 20 CARBON + 20 |Can't + 20 |can + 20 anzu| + 20 ain't + 19 Yukari + 19 war + 19 VU| + 19 us + 19 until + 19 thing + 19 THIGHS + 19 there| + 19 |TAN + 19 shoot + 19 |see + 19 ROSEHIP + 19 RIGHT + 19 read + 19 |PIZZA + 19 PIZZA + 19 PIRATE| + 19 |>no + 19 |mako + 19 looks + 19 incoming| + 19 |holy + 19 first + 19 |Duce + 19 |Don't + 19 |did + 19 BY + 19 butt + 19 bros + 19 |best + 19 BACK| + 19 B + 19 ASS| + 19 |are + 19 |ALL + 19 /a/ + 19 10 + 19 - + 18 YEARS| + 18 x + 18 WIFE| + 18 |where + 18 we're + 18 WAY| + 18 UNIDOS + 18 too| + 18 |TO + 18 The + 18 |THAT + 18 |Thanks + 18 TEAM| + 18 TANKS + 18 TAKE + 18 |STUG + 18 |SIEG + 18 say + 18 retard| + 18 poor + 18 |Panzer + 18 |PANTSU + 18 NYAA + 18 note: + 18 |Not + 18 MOMO! + 18 |Marie + 18 makes + 18 MAHO| + 18 long + 18 l'oignon| + 18 know| + 18 Katyusha + 18 |J'aime + 18 INCOMING| + 18 |if + 18 his + 18 GuP + 18 GOD + 18 girls| + 18 |FAT + 18 |F + 18 Erika| + 18 end + 18 |EBIN + 18 DUMB + 18 DU| + 18 |don't + 18 ded + 18 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD + 18 :DDDDDDDDDDDDD + 18 CUNNY + 18 comes + 18 *CLAP* + 18 CAMARADES| + 18 buffering + 18 bitch| + 18 BEEN + 18 |AZUSA + 18 |ANDOU + 18 |10 + 18 01:56:54| + 18 !| + 17 |YES + 17 YEARS + 17 way| + 17 |WANI + 17 TOTSUGEKI! + 17 that's + 17 |TENNO + 17 SUBTEXT + 17 SPEED + 17 |SO + 17 school| + 17 said + 17 part + 17 OFF + 17 NOTE: + 17 no| + 17 NIGGER + 17 NANI + 17 miho| + 17 mean + 17 Kino + 17 keep + 17 katyusha + 17 |IT + 17 |it + 17 IQ| + 17 her| + 17 GOING + 17 go| + 17 film + 17 FEEL + 17 |ENTA + 17 EM + 17 e + 17 DV| + 17 |duce + 17 DOUCHE + 17 DORIFTO + 17 doing + 17 :DDDDDDDDDDDDDD + 17 |DAMN + 17 CUNNY| + 17 COMES + 17 CCP + 17 |Best + 17 BACK + 17 |and + 16 YUKARI| + 16 |Who + 16 |We + 16 through + 16 then + 16 |>the + 16 |that's + 16 |>tfw + 16 |tank + 16 SUSBENSION + 16 STREAM| + 16 SOON + 16 something + 16 SEE + 16 saw + 16 retards| + 16 RAPE + 16 play + 16 |PASTA + 16 one| + 16 |now + 16 |NINA + 16 |Mako + 16 mako| + 16 MAKE + 16 Maho + 16 live + 16 |LET'S + 16 LETS + 16 let + 16 last + 16 KEEP + 16 JOBBIE + 16 il + 16 |IF + 16 |HEY + 16 HERE| + 16 gun + 16 game + 16 |FOR + 16 eyes + 16 EVEN + 16 ESTADOS + 16 ENTA + 16 eating + 16 |Dumb + 16 doujin + 16 :DDDDDDDDD| + 16 COCKY + 16 CAMARADE + 16 BUTT| + 16 |But + 16 bridge + 16 BITCH| + 16 beat + 16 |ANZIO + 16 anzio + 16 ANKOU| + 16 already + 16 ABOUT + 16 01:56:49| + 15 you're + 15 |WHERE + 15 |when + 15 very + 15 TITS| + 15 TIME?? + 15 though| + 15 thighs| + 15 |That's + 15 STOP + 15 song + 15 |SODOKO + 15 sodoko| + 15 SLUT + 15 sleep| + 15 SLAG| + 15 |shut + 15 SEXY + 15 |See + 15 saying + 15 save + 15 PERKELE + 15 people + 15 pasta + 15 Panzer + 15 old + 15 NAKADASHI + 15 must + 15 Momo| + 15 missed + 15 MEANS + 15 Maho| + 15 LIVE + 15 LEWD + 15 leave + 15 |KLARA + 15 killed + 15 |Katyusha + 15 INTER + 15 IM + 15 I'M + 15 im + 15 hope + 15 |HIGH + 15 |haha + 15 |good + 15 gets + 15 GE + 15 gay + 15 |Fuck + 15 floof| + 15 FIRE| + 15 dumb| + 15 DONT + 15 died + 15 die + 15 |DATO + 15 :D| + 15 COULD + 15 |CHRISDIE + 15 car + 15 CANT + 15 CAMARADESAU + 15 BENIS + 15 Banger + 15 BALDIE + 15 BAKAS + 15 back| + 15 AS + 15 |Anzio + 15 Anzio + 15 anons + 15 andou + 15 |all + 14 YUKARI + 14 YEAR| + 14 year + 14 win| + 14 whole + 14 water + 14 wait + 14 WA| + 14 VORE| + 14 useless + 14 used + 14 tiger diff --git a/src/getChat/replay/sockets/py_server.py b/src/getChat/replay/sockets/py_server.py new file mode 100644 index 0000000..52512f9 --- /dev/null +++ b/src/getChat/replay/sockets/py_server.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 + +""" server.py - Echo server for sending/receiving C-like structs via socket +References: +- Ctypes: https://docs.python.org/3/library/ctypes.html +- Sockets: https://docs.python.org/3/library/socket.html +""" +import codecs + +import socket +import sys +import random +from ctypes import * + + +""" This class defines a C-like struct """ +class Payload(Structure): + _fields_ = [("id", c_uint32), + ("counter", c_uint32), + ("data", c_wchar_p)] +def main(): + PORT = 2300 + server_addr = ('localhost', PORT) + ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + print("Socket created") + + try: + # bind the server socket and listen + ssock.bind(server_addr) + print("Bind done") + ssock.listen(3) + print("Server listening on port {:d}".format(PORT)) + + while True: + csock, client_address = ssock.accept() + print("Accepted connection from {:s}".format(client_address[0])) + + buff = csock.recv(512) + while buff: + print("\nReceived {:d} bytes".format(len(buff))) + payload_in = Payload.from_buffer_copy(buff) + t = payload_in.data + #print("Received contents id={:d}, counter={:d}, data={}".format(payload_in.id, payload_in.counter, payload_in.data)) + buff = csock.recv(512) + + print("Closing connection to client") + print("----------------------------") + csock.close() + + except AttributeError as ae: + print("Error creating the socket: {}".format(ae)) + except socket.error as se: + print("Exception on socket: {}".format(se)) + except KeyboardInterrupt: + ssock.close() + finally: + print("Closing socket") + ssock.close() + + +if __name__ == "__main__": + main() diff --git a/src/getChat/wsChat.py b/src/getChat/wsChat.py new file mode 100644 index 0000000..be60b23 --- /dev/null +++ b/src/getChat/wsChat.py @@ -0,0 +1,5 @@ +from wsInterface import * + +if __name__ == "__main__": + S = Socket_() + S.listenForever() diff --git a/src/getChat/wsInterface.py b/src/getChat/wsInterface.py new file mode 100644 index 0000000..bc8a363 --- /dev/null +++ b/src/getChat/wsInterface.py @@ -0,0 +1,104 @@ +import json +import queue +import requests +import websocket + +from helper import * + +import sys +import socket +import fcntl, os + +SEND_BUFFER_SIZE = 2048 +connected = 0 + +try: import thread +except ImportError: import _thread as thread + +class Socket_: + def __init__(self, queue = None): + self.URL = None + self.sid = None + self.sidWSS = None + self.parser = Parser().parser + self.queue = queue + self.ws = None + + self.sock = None + + # Start the connection + self.handshake() + + def handshake(self): + # First, establish a polling-transport HTTP connection + resp_1 = requests.get(POLLING_URL_1, headers = HEADER) + print('Resp 1: ', resp_1.text) + # Ignore the bin-packed preliminaries and extract the session ID + # WOTOS: self.sid = json.loads(str(resp_1.content)[3:-1])['sid'] + self.sid = json.loads(str(resp_1.content)[3:-1])['sid'] + # Second polling with POST, response should be 'ok' + resp_2 = requests.post(POLLING_URL_2.format(self.sid), headers = HEADER, data = b'40') + print('Resp 2: ', resp_2.text) + # Third polling + resp_3 = requests.get(POLLING_URL_3.format(self.sid), headers = HEADER) + print('Resp 3: ', resp_3.text) + # WOTOS: self.sid = json.loads(str(resp_1.content)[3:-1])['sid'] + index = str(resp_3.content).find('\\x1e42[') + substr = str(resp_3.content)[4:index] + self.sidWSS = json.loads(substr)['sid'] + # Fourth polling with POST + resp_4 = requests.post(POLLING_URL_4.format(self.sid), headers = HEADER, data = b'42["joinChannel",{"name":"testam"}]') + print('Resp 4: ', resp_4.text) + # Fourth polling with GET + resp_5 = requests.get(POLLING_URL_5.format(self.sid), headers = HEADER) + print('Resp 5: ', resp_5.text) + + + # WSS url + self.URL = WSS_URL.format(self.sid) + print(self.URL) + + def on_open(self, ws): + print('### Socket open ###') + ws.send("2probe") + def on_close(self, ws): + print("### Socket closed ###") + self.sock.close() + def on_error(self, ws, error): + print('\nSocket error :\n{}\n'.format(error)) + + def on_message(self, ws, message): + if message == '2': ws.send('3') + elif message == '3probe': ws.send('5') + elif message[:2] == '42': + j = message[2:].replace("'", '"') + parsed = json.loads(j) + print("received: ", message) + reason = parsed[0] + if reason == 'chatMsg': + data = bytes(parsed[1]['msg'], "utf-8") + data += bytes(SEND_BUFFER_SIZE-len(data)) + self.sock.send(data) + print(data) + else: pass + + def listenForever(self): + # SOCKET + server_ip = "localhost" + server_port = 10000 + self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.sock.connect((server_ip, server_port)) + fcntl.fcntl(self.sock, fcntl.F_SETFL, os.O_NONBLOCK) + + try: + #websocket.enableTrace(True) + self.ws = websocket.WebSocketApp(self.URL, + on_open = self.on_open, + on_message = self.on_message, + on_error = self.on_error, + on_close = self.on_close, + header = HEADER_WSS + ) + self.ws.run_forever(ping_interval = 25, ping_timeout = 5 ) + except Exception as e: + print("Socket::ListenForever: Exception {}", format(e)) diff --git a/src/gfx/bitmap.c b/src/gfx/bitmap.c new file mode 100644 index 0000000..33ccdaf --- /dev/null +++ b/src/gfx/bitmap.c @@ -0,0 +1,58 @@ +#include "bitmap.h" + +//void makeBitmaps(std::map& Characters){ +// ///////// FREETYPE2 INIT +// FT_Library ft; +// if (FT_Init_FreeType(&ft)){ +// std::cout << "ERROR::FREETYPE: Could not init FreeType Library" << std::endl; +// exit(EXIT_FAILURE); +// } +// FT_Face face; +// if (FT_New_Face(ft, "/usr/share/fonts/TTF/DejaVuSans.ttf", 0, &face)){ +// std::cout << "ERROR::FREETYPE: Failed to load font" << std::endl; +// exit(EXIT_FAILURE); +// } +// FT_Set_Pixel_Sizes(face, 0, GLYPH_SIZE); +// glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // disable byte-alignment restriction +// glEnable(GL_BLEND); +// +// +// for (unsigned char c = 0; c < 128; c++){ +// // load character glyph +// if (FT_Load_Char(face, c, FT_LOAD_RENDER)){ +// std::cout << "ERROR::FREETYTPE: Failed to load Glyph" << std::endl; +// continue; +// } +// // generate texture +// unsigned int texture; +// glGenTextures(1, &texture); +// glBindTexture(GL_TEXTURE_2D, texture); +// glTexImage2D( +// GL_TEXTURE_2D, +// 0, +// GL_RED, +// face->glyph->bitmap.width, +// face->glyph->bitmap.rows, +// 0, +// GL_RED, +// GL_UNSIGNED_BYTE, +// face->glyph->bitmap.buffer +// ); +// // set texture options +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); +// // now store character for later use +// Character character = { +// texture, +// glm::ivec2(face->glyph->bitmap.width, face->glyph->bitmap.rows), +// glm::ivec2(face->glyph->bitmap_left, face->glyph->bitmap_top), +// face->glyph->advance.x +// }; +// Characters.insert(std::pair(c, character)); +// } +// /// Clear glyphs +// FT_Done_Face(face); +// FT_Done_FreeType(ft); +//} diff --git a/src/gfx/bitmap.h b/src/gfx/bitmap.h new file mode 100644 index 0000000..cf5372a --- /dev/null +++ b/src/gfx/bitmap.h @@ -0,0 +1,15 @@ +#ifndef _BITMAP_H_ +#define _BITMAP_H_ + +#include +#include FT_FREETYPE_H + +//typedef struct Character { +// unsigned int TextureID; // ID handle of the glyph texture +// glm::ivec2 Size; // Size of glyph +// glm::ivec2 Bearing; // Offset from baseline to left/top of glyph +// long int Advance; // Offset to advance to next glyph +//} Character; + + +#endif diff --git a/src/gfx/gfx.h b/src/gfx/gfx.h new file mode 100644 index 0000000..5591b62 --- /dev/null +++ b/src/gfx/gfx.h @@ -0,0 +1,9 @@ +#ifndef _GFX_H_ +#define _GFX_H_ + +#include + +#define GLFW_INCLUDE_NONE +#include + +#endif diff --git a/src/gfx/player.c b/src/gfx/player.c new file mode 100644 index 0000000..a79d318 --- /dev/null +++ b/src/gfx/player.c @@ -0,0 +1,82 @@ +#include "player.h" + +static void *get_proc_address(void *ctx, const char *name); +static void on_mpv_render_update(void *ctx); +static void on_mpv_events(void *ctx); +static inline void check_error(int); + +void player_init(struct Player *self) { + + *self = (struct Player) {0}; + self->handle = mpv_create(); + + if (mpv_initialize(self->handle) < MPV_ERROR_SUCCESS){ + printf("ERROR::MPV::Failed to initialize mpv\n"); + exit(1); + } + + mpv_opengl_init_params opengl_init_params = {get_proc_address, NULL}; + int adv = 1; // we will use the update callback + mpv_render_param render_param[] = { + {MPV_RENDER_PARAM_API_TYPE, (char *)(MPV_RENDER_API_TYPE_OPENGL)}, + {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &opengl_init_params}, + {MPV_RENDER_PARAM_ADVANCED_CONTROL, &adv}, + {MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, NULL}, + {MPV_RENDER_PARAM_INVALID, NULL}, + }; + + if (mpv_render_context_create(&(self->ctx), self->handle, render_param) < MPV_ERROR_SUCCESS){ + printf("ERROR::MPV::Failed to create MPV render context\n"); + exit(1); + } + + mpv_set_wakeup_callback(self->handle, on_mpv_events, NULL); + mpv_render_context_set_update_callback(self->ctx, on_mpv_render_update, NULL); + + //const char *cmd[] = {"loadfile", argv[1], NULL}; + //mpv_command(mpv, cmd); + mpv_set_option_string(self->handle, "loop", ""); + mpv_set_option_string(self->handle, "gpu-api", "opengl"); + mpv_set_option_string(self->handle, "hwdec", "auto"); + mpv_set_option_string(self->handle, "vd-lavc-dr", "yes"); + mpv_set_option_string(self->handle, "terminal", "yes"); + // mpv_set_option_string(mpv, "video-timing-offset", "0"); // this need manual fps adjustment mpv_render_frame_info() + check_error(mpv_set_option_string(self->handle, "input-default-bindings", "yes")); + mpv_set_option_string(self->handle, "input-vo-keyboard", "yes"); + int val = 1; + check_error(mpv_set_option(self->handle, "osc", MPV_FORMAT_FLAG, &val)); +} + +struct Player* player_create() { + return malloc(sizeof(struct Player)); +} + +void player_destroy(struct Player* op) { + free(op); +} + + +static void *get_proc_address(void *ctx, const char *name) +{ + glfwGetCurrentContext(); + return (void *)(glfwGetProcAddress(name)); +} + +static void on_mpv_render_update(void *ctx) +{ + // we set the wakeup flag here to enable the mpv_render_context_render path in the main loop. + //wakeup = 1; +} + +static void on_mpv_events(void *ctx) +{ + printf("INFO::%s\n",__func__); +} + +static inline void check_error(int status) +{ + if(status < 0) { + printf("MPV API error: %s\n", mpv_error_string(status)); + exit(1); + } +} diff --git a/src/gfx/player.h b/src/gfx/player.h new file mode 100644 index 0000000..339d25d --- /dev/null +++ b/src/gfx/player.h @@ -0,0 +1,20 @@ +#ifndef _PLAYER_H_ +#define _PLAYER_H_ + +#include +#include + +#include "gfx.h" +#include +#include + +struct Player { + mpv_handle *handle; + mpv_render_context *ctx; +}; + +struct Player* player_create(); +void player_init(struct Player *self); +void player_destroy(struct Player *self); + +#endif diff --git a/src/gfx/shader.c b/src/gfx/shader.c new file mode 100644 index 0000000..487fffa --- /dev/null +++ b/src/gfx/shader.c @@ -0,0 +1,131 @@ +#include "shader.h" + +static void _log_and_fail( + GLint handle, const char *adverb, const char *path, + void (*getlog)(GLuint, GLsizei, GLsizei *, GLchar*), + void (*getiv)(GLuint, GLenum, GLint *)) { + GLint loglen; + getiv(handle, GL_INFO_LOG_LENGTH, &loglen); + + char *logtext = calloc(1, loglen); + getlog(handle, loglen, NULL, logtext); + fprintf(stderr, "Error %s shader at %s:\n%s", adverb, path, logtext); + + free(logtext); + exit(1); +} + +static GLint _compile(char *path, GLenum type) { + FILE *f; + char *text; + long len; + + f = fopen(path, "rb"); + if (f == NULL) { + fprintf(stderr, "error loading shader at %s\n", path); + exit(1); + } + + fseek(f, 0, SEEK_END); + len = ftell(f); + assert(len > 0); + fseek(f, 0, SEEK_SET); + text = calloc(1, len); + assert(text != NULL); + fread(text, 1, len, f); + assert(strlen(text) > 0); + fclose(f); + + GLuint handle = glCreateShader(type); + glShaderSource(handle,1, (const GLchar *const *) &text, (const GLint *) &len); + glCompileShader(handle); + + GLint compiled; + glGetShaderiv(handle, GL_COMPILE_STATUS, &compiled); + + // Check OpenGL logs if compilation failed + if (compiled == 0) { + _log_and_fail(handle, "compiling", path, glGetShaderInfoLog, glGetShaderiv); + } + + free(text); + return handle; +} + +struct Shader shader_create(char *vs_path, char *fs_path, size_t n, struct VertexAttr attributes[]) { + struct Shader self; + self.vs_handle = _compile(vs_path, GL_VERTEX_SHADER); + self.fs_handle = _compile(fs_path, GL_FRAGMENT_SHADER); + self.handle = glCreateProgram(); + + // Link shader program + glAttachShader(self.handle, self.vs_handle); + glAttachShader(self.handle, self.fs_handle); + + // Bind vertex attributes + for (size_t i = 0; i < n; i++) { + glBindAttribLocation(self.handle, attributes[i].index, attributes[i].name); + } + + glLinkProgram(self.handle); + + // Check link status + GLint linked; + glGetProgramiv(self.handle, GL_LINK_STATUS, &linked); + + if (linked == 0) { + char buf[512]; + snprintf(buf, 512, "[%s, %s]", vs_path, fs_path); + _log_and_fail(self.handle, "linking", buf, glGetProgramInfoLog, glGetProgramiv); + } + + return self; +} + +void shader_destroy(struct Shader self) { + glDeleteProgram(self.handle); + glDeleteShader(self.vs_handle); + glDeleteShader(self.fs_handle); +} + +void shader_bind(struct Shader self) { + glUseProgram(self.handle); +} + +//void shader_uniform_mat4(struct Shader self, char *name, mat4s m) { +// glUniformMatrix4fv(glGetUniformLocation(self.handle, name), 1, GL_FALSE, (const GLfloat *) &m.raw); +//} +// +//void shader_uniform_view_proj(struct Shader self, struct ViewProj view_proj) { +// shader_uniform_mat4(self, "p", view_proj.proj); +// shader_uniform_mat4(self, "v", view_proj.view); +//} +// +//void shader_uniform_texture2D(struct Shader self, char *name, struct Texture texture, GLuint n) { +// glActiveTexture(GL_TEXTURE0 + n); +// texture_bind(texture); +// glUniform1i(glGetUniformLocation(self.handle, (const GLchar *) name), n); +//} +// +//void shader_uniform_float(struct Shader self, char *name, f32 f) { +// glUniform1f(glGetUniformLocation(self.handle, name), f); +//} +// +//void shader_uniform_vec2(struct Shader self, char *name, vec2s v) { +// glUniform2f(glGetUniformLocation(self.handle, name), v.x, v.y); +//} +// +//void shader_uniform_vec3(struct Shader self, char *name, vec3s v) { +// glUniform3f(glGetUniformLocation(self.handle, name), v.x, v.y, v.z); +//} +// +//void shader_uniform_vec4(struct Shader self, char *name, vec4s v) { +// glUniform4f(glGetUniformLocation(self.handle, name), v.x, v.y, v.z, v.w); +//} +// +//void shader_uniform_int(struct Shader self, char *name, int v) { +// glUniform1i(glGetUniformLocation(self.handle, name), v); +//} +//void shader_uniform_uint(struct Shader self, char *name, unsigned int v) { +// glUniform1ui(glGetUniformLocation(self.handle, name), v); +//} diff --git a/src/gfx/shader.h b/src/gfx/shader.h new file mode 100644 index 0000000..7d45beb --- /dev/null +++ b/src/gfx/shader.h @@ -0,0 +1,31 @@ +#ifndef SHADER_H +#define SHADER_H + +#include "gfx.h" +#include "texture.h" +#include "../util/util.h" + +struct VertexAttr { + GLuint index; + const GLchar *name; +}; + +struct Shader { + GLuint handle, vs_handle, fs_handle; +}; + +struct Shader shader_create(char *vs_path, char *fs_path, size_t n, struct VertexAttr attributes[]); +void shader_destroy(struct Shader self); +void shader_bind(struct Shader self); + +//void shader_uniform_mat4(struct Shader self, char *name, mat4s m); +//void shader_uniform_view_proj(struct Shader self, struct ViewProj view_proj); +//void shader_uniform_texture2D(struct Shader self, char *name, struct Texture texture, GLuint n); +//void shader_uniform_float(struct Shader self, char *name, f32 f); +//void shader_uniform_vec2(struct Shader self, char *name, vec2s v); +//void shader_uniform_vec3(struct Shader self, char *name, vec3s v); +//void shader_uniform_vec4(struct Shader self, char *name, vec4s v); +//void shader_uniform_int(struct Shader self, char *name, int v); +//void shader_uniform_uint(struct Shader self, char *name, unsigned int v); + +#endif diff --git a/src/gfx/texture.c b/src/gfx/texture.c new file mode 100644 index 0000000..d5432f0 --- /dev/null +++ b/src/gfx/texture.c @@ -0,0 +1,55 @@ +#define STB_IMAGE_IMPLEMENTATION +#include + +#include "texture.h" + +void texture_load_pixels(char *path, u8 **pixels_out, size_t *width_out, size_t *height_out) { + int width, height, channels; + + // OpenGL has texture coordinates with (0, 0) on bottom + stbi_set_flip_vertically_on_load(true); + unsigned char *image = stbi_load(path, &width, &height, &channels, STBI_rgb_alpha); + assert(image != NULL); + + *pixels_out = malloc(width * height * 4); + memcpy(*pixels_out, image, width * height * 4); + *width_out = width; + *height_out = height; + + stbi_image_free(image); +} + +struct Texture texture_create_from_pixels(u8 *pixels, size_t width, size_t height) { + struct Texture self = { + .size = (ivec2s) {{ width, height }} + }; + + glGenTextures(1, &self.handle); + glBindTexture(GL_TEXTURE_2D, self.handle); + + // No interpolation + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); + return self; +} + +struct Texture texture_create_from_path(char *path) { + u8 *pixels; + size_t width, height; + texture_load_pixels(path, &pixels, &width, &height); + struct Texture self = texture_create_from_pixels(pixels, width, height); + free(pixels); + return self; +} + +void texture_destroy(struct Texture self) { + glDeleteTextures(1, &self.handle); +} + +void texture_bind(struct Texture self) { + glBindTexture(GL_TEXTURE_2D, self.handle); +} diff --git a/src/gfx/texture.h b/src/gfx/texture.h new file mode 100644 index 0000000..1389e53 --- /dev/null +++ b/src/gfx/texture.h @@ -0,0 +1,18 @@ +#ifndef TEXTURE_H +#define TEXTURE_H + +#include "gfx.h" +#include "../util/util.h" + +struct Texture { + GLuint handle; + ivec2s size; + vec2s uv_unit; +}; + +void texture_load_pixels(char *path, u8 **pixels_out, size_t *width_out, size_t *height_out); +struct Texture texture_create_from_pixels(u8 *pixels, size_t width, size_t height); +struct Texture texture_create_from_path(char *path); +void texture_destroy(struct Texture self); +void texture_bind(struct Texture self); +#endif diff --git a/src/gfx/vao.c b/src/gfx/vao.c new file mode 100644 index 0000000..e92de18 --- /dev/null +++ b/src/gfx/vao.c @@ -0,0 +1,42 @@ +#include "vao.h" + +struct VAO vao_create() { + struct VAO self; + glGenVertexArrays(1, &self.handle); + return self; +} + +void vao_destroy(struct VAO self) { + glDeleteVertexArrays(1, &self.handle); +} + +void vao_bind(struct VAO self) { + glBindVertexArray(self.handle); +} + +void vao_attr( + struct VAO self, struct VBO vbo, GLuint index, GLint size, GLenum type, + GLsizei stride, size_t offset) { + vao_bind(self); + vbo_bind(vbo); + + // NOTE: glVertexAttribPointer will AUTO-CONVERT integer values to floating point. + // Integer vertex attributes must be specified with glVertexAttribIPointer. + // THIS IS EVIL. OpenGL is bad. Who designed this to fail silently? + switch (type) { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + case GL_SHORT: + case GL_UNSIGNED_SHORT: + case GL_INT: + case GL_UNSIGNED_INT: + case GL_INT_2_10_10_10_REV: + case GL_UNSIGNED_INT_2_10_10_10_REV: + glVertexAttribIPointer(index, size, type, stride, (void *) offset); + break; + default: + glVertexAttribPointer(index, size, type, GL_FALSE, stride, (void *) offset); + break; + } + glEnableVertexAttribArray(index); +} diff --git a/src/gfx/vao.h b/src/gfx/vao.h new file mode 100644 index 0000000..45e7b6f --- /dev/null +++ b/src/gfx/vao.h @@ -0,0 +1,19 @@ +#ifndef VAO_H +#define VAO_H + +#include "../util/util.h" +#include "gfx.h" +#include "vbo.h" + +struct VAO { + GLuint handle; +}; + +struct VAO vao_create(); +void vao_destroy(struct VAO self); +void vao_bind(struct VAO self); +void vao_attr( + struct VAO self, struct VBO vbo, GLuint index, GLint size, GLenum type, + GLsizei stride, size_t offset); + +#endif diff --git a/src/gfx/vbo.c b/src/gfx/vbo.c new file mode 100644 index 0000000..9fe389a --- /dev/null +++ b/src/gfx/vbo.c @@ -0,0 +1,23 @@ +#include "vbo.h" + +struct VBO vbo_create(GLint type, bool dynamic) { + struct VBO self = { + .type = type, + .dynamic = dynamic + }; + glGenBuffers(1, &self.handle); + return self; +} + +void vbo_destroy(struct VBO self) { + glDeleteBuffers(1, &self.handle); +} + +void vbo_bind(struct VBO self) { + glBindBuffer(self.type, self.handle); +} + +void vbo_buffer(struct VBO self, void *data, size_t offset, size_t count) { + vbo_bind(self); + glBufferData(self.type, count - offset, data, self.dynamic ? GL_DYNAMIC_DRAW : GL_STATIC_DRAW); +} diff --git a/src/gfx/vbo.h b/src/gfx/vbo.h new file mode 100644 index 0000000..a443ce9 --- /dev/null +++ b/src/gfx/vbo.h @@ -0,0 +1,21 @@ +#ifndef VBO_H +#define VBO_H + +#include "../util/util.h" +#include "gfx.h" + +struct VBO { + GLuint handle; + GLint type; + bool dynamic; +}; + +struct VBO vbo_create(GLint type, bool dynamic); + +void vbo_destroy(struct VBO self); + +void vbo_bind(struct VBO self); + +void vbo_buffer(struct VBO self, void *data, size_t offset, size_t count); + +#endif diff --git a/src/gfx/window.c b/src/gfx/window.c new file mode 100644 index 0000000..c25dd5d --- /dev/null +++ b/src/gfx/window.c @@ -0,0 +1,198 @@ +#include "window.h" + +#include +#include + +// global window +struct Window window; + +static void _size_callback(GLFWwindow *handle, int width, int height) { + glViewport(0, 0, width, height); + window.size = (ivec2s) {{height, width}}; +} + +//static void _cursor_callback(GLFWwindow *handle, double xp, double yp) { +// vec2s p = {{xp, yp}}; +// +// window.mouse.delta = glms_vec2_sub(p, window.mouse.position); +// window.mouse.delta.x = clamp(window.mouse.delta.x, -100.0f, 100.0f); +// window.mouse.delta.y = clamp(window.mouse.delta.y, -100.0f, 100.0f); +// +// window.mouse.position = p; +//} + +//static void _key_callback(GLFWwindow *handle, int key, int scancode, int action, int mods) { +// if (key < 0) { +// return; +// } +// +// switch (action) { +// case GLFW_PRESS: +// window.keyboard.keys[key].down = true; +// break; +// case GLFW_RELEASE: +// window.keyboard.keys[key].down = false; +// break; +// default: +// break; +// } +//} + +//static void _mouse_callback(GLFWwindow *handle, int button, int action, int mods) { +// if (button < 0) { +// return; +// } +// +// switch (action) { +// case GLFW_PRESS: +// window.mouse.buttons[button].down = true; +// break; +// case GLFW_RELEASE: +// window.mouse.buttons[button].down = false; +// break; +// default: +// break; +// } +//} + +static void _error_callback(int code, const char *description) { + fprintf(stderr, "GLFW error %d: %s\n", code, description); +} + +void window_create(FWindow init, FWindow destroy, FWindow tick, FWindow update, FWindow render) { + window.init = init; + window.destroy = destroy; + window.tick = tick; + window.update = update; + window.render = render; + + window.last_frame = NOW(); + window.last_second = NOW(); + + glfwSetErrorCallback(_error_callback); + + if (!glfwInit()){ + fprintf(stderr, "%s", "error initializing GLFW\n"); + exit(1); + } + + glfwWindowHint(GLFW_RESIZABLE, GL_TRUE); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); + + window.size = (ivec2s) {{1280, 720}}; + window.handle = glfwCreateWindow(window.size.x, window.size.y, "Project", NULL, NULL); + if (window.handle == NULL) { + fprintf(stderr, "%s", "error creating window\n"); + glfwTerminate(); + exit(1); + } + + glfwMakeContextCurrent(window.handle); + + // configure callbacks + glfwSetFramebufferSizeCallback(window.handle, _size_callback); + //glfwSetCursorPosCallback(window.handle, _cursor_callback); + //glfwSetKeyCallback(window.handle, _key_callback); + //glfwSetMouseButtonCallback(window.handle, _mouse_callback); + + if (!gladLoadGLLoader((GLADloadproc) glfwGetProcAddress)) { + fprintf(stderr, "%s", "error initializing GLAD\n"); + glfwTerminate(); + exit(1); + } + + glfwSwapInterval(1); +} + +static void button_array_tick(size_t n, struct Button *buttons) { + for (size_t i = 0; i < n; i++) { + buttons[i].pressed_tick = buttons[i].down && !buttons[i].last_tick; + buttons[i].last_tick = buttons[i].down; + } +} + +static void button_array_update(size_t n, struct Button *buttons) { + for (size_t i = 0; i < n; i++) { + buttons[i].pressed = buttons[i].down && !buttons[i].last; + buttons[i].last = buttons[i].down; + } +} + +static void _init() { + window.init(); +} + +static void _destroy() { + window.destroy(); + glfwTerminate(); +} + +static void _tick() { + window.ticks++; + button_array_tick(GLFW_MOUSE_BUTTON_LAST, window.mouse.buttons); + button_array_tick(GLFW_KEY_LAST, window.keyboard.keys); + window.tick(); +} + +static void _update() { + button_array_update(GLFW_MOUSE_BUTTON_LAST, window.mouse.buttons); + button_array_update(GLFW_KEY_LAST, window.keyboard.keys); + window.update(); + + // reset update delta + window.mouse.delta = GLMS_VEC2_ZERO; +} + +static void _render() { + window.frames++; + window.render(); +} + +void window_loop() { + _init(); + + while (!glfwWindowShouldClose(window.handle)) { + const u64 now = NOW(); + + window.frame_delta = now - window.last_frame; + window.last_frame = now; + + if (now - window.last_second > NS_PER_SECOND) { + window.fps = window.frames; + window.tps = window.ticks; + window.frames = 0; + window.ticks = 0; + window.last_second = now; + + printf("FPS: %lld | TPS: %lld\n", window.fps, window.tps); + } + + // tick processing + const u64 NS_PER_TICK = (NS_PER_SECOND / 60); + u64 tick_time = window.frame_delta + window.tick_remainder; + while (tick_time > NS_PER_TICK) { + _tick(); + tick_time -= NS_PER_TICK; + } + window.tick_remainder = max(tick_time, 0); + + _update(); + _render(); + glfwSwapBuffers(window.handle); + glfwPollEvents(); + } + + _destroy(); + exit(0); +} + +void mouse_set_grabbed(bool grabbed) { + glfwSetInputMode(window.handle, GLFW_CURSOR, grabbed ? GLFW_CURSOR_DISABLED : GLFW_CURSOR_NORMAL); +} + +bool mouse_get_grabbed() { + return glfwGetInputMode(window.handle, GLFW_CURSOR) == GLFW_CURSOR_DISABLED; +} diff --git a/src/gfx/window.h b/src/gfx/window.h new file mode 100644 index 0000000..f5bc7d3 --- /dev/null +++ b/src/gfx/window.h @@ -0,0 +1,45 @@ +#ifndef _WINDOW_H_ +#define _WINDOW_H_ + +#include "gfx.h" +#include "../util/util.h" + +struct Button { + bool down, last, last_tick, pressed, pressed_tick; +}; + + +struct Mouse { + struct Button buttons[GLFW_MOUSE_BUTTON_LAST]; + vec2s position, delta; +}; + +struct Keyboard { + struct Button keys[GLFW_KEY_LAST]; +}; + +typedef void (*FWindow)(); + +struct Window { + GLFWwindow *handle; + ivec2s size; + FWindow init, destroy, tick, update, render; + struct Mouse mouse; + struct Keyboard keyboard; + + // timing variables + u64 last_second; + u64 frames, fps, last_frame, frame_delta; + u64 ticks, tps, tick_remainder; +}; + +// global window +extern struct Window window; + +void window_loop(); +void window_create(FWindow init, FWindow destroy, FWindow tick, FWindow update, FWindow render); +//void mouse_set_grabbed(bool grabbed); +//bool mouse_get_grabbed(); + + +#endif diff --git a/src/glad/include/KHR/khrplatform.h b/src/glad/include/KHR/khrplatform.h new file mode 100644 index 0000000..5b55ea2 --- /dev/null +++ b/src/glad/include/KHR/khrplatform.h @@ -0,0 +1,290 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(KHRONOS_STATIC) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef _WIN64 +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/src/glad/include/glad/glad.h b/src/glad/include/glad/glad.h new file mode 100644 index 0000000..4edcae9 --- /dev/null +++ b/src/glad/include/glad/glad.h @@ -0,0 +1,15685 @@ +/* + + OpenGL loader generated by glad 0.1.33 on Sat Apr 4 06:11:30 2020. + + Language/Generator: C/C++ + Specification: gl + APIs: gl=4.1 + Profile: core + Extensions: + GL_3DFX_multisample, + GL_3DFX_tbuffer, + GL_3DFX_texture_compression_FXT1, + GL_AMD_blend_minmax_factor, + GL_AMD_conservative_depth, + GL_AMD_debug_output, + GL_AMD_depth_clamp_separate, + GL_AMD_draw_buffers_blend, + GL_AMD_framebuffer_multisample_advanced, + GL_AMD_framebuffer_sample_positions, + GL_AMD_gcn_shader, + GL_AMD_gpu_shader_half_float, + GL_AMD_gpu_shader_int16, + GL_AMD_gpu_shader_int64, + GL_AMD_interleaved_elements, + GL_AMD_multi_draw_indirect, + GL_AMD_name_gen_delete, + GL_AMD_occlusion_query_event, + GL_AMD_performance_monitor, + GL_AMD_pinned_memory, + GL_AMD_query_buffer_object, + GL_AMD_sample_positions, + GL_AMD_seamless_cubemap_per_texture, + GL_AMD_shader_atomic_counter_ops, + GL_AMD_shader_ballot, + GL_AMD_shader_explicit_vertex_parameter, + GL_AMD_shader_gpu_shader_half_float_fetch, + GL_AMD_shader_image_load_store_lod, + GL_AMD_shader_stencil_export, + GL_AMD_shader_trinary_minmax, + GL_AMD_sparse_texture, + GL_AMD_stencil_operation_extended, + GL_AMD_texture_gather_bias_lod, + GL_AMD_texture_texture4, + GL_AMD_transform_feedback3_lines_triangles, + GL_AMD_transform_feedback4, + GL_AMD_vertex_shader_layer, + GL_AMD_vertex_shader_tessellator, + GL_AMD_vertex_shader_viewport_index, + GL_APPLE_aux_depth_stencil, + GL_APPLE_client_storage, + GL_APPLE_element_array, + GL_APPLE_fence, + GL_APPLE_float_pixels, + GL_APPLE_flush_buffer_range, + GL_APPLE_object_purgeable, + GL_APPLE_rgb_422, + GL_APPLE_row_bytes, + GL_APPLE_specular_vector, + GL_APPLE_texture_range, + GL_APPLE_transform_hint, + GL_APPLE_vertex_array_object, + GL_APPLE_vertex_array_range, + GL_APPLE_vertex_program_evaluators, + GL_APPLE_ycbcr_422, + GL_ARB_ES2_compatibility, + GL_ARB_ES3_1_compatibility, + GL_ARB_ES3_2_compatibility, + GL_ARB_ES3_compatibility, + GL_ARB_arrays_of_arrays, + GL_ARB_base_instance, + GL_ARB_bindless_texture, + GL_ARB_blend_func_extended, + GL_ARB_buffer_storage, + GL_ARB_cl_event, + GL_ARB_clear_buffer_object, + GL_ARB_clear_texture, + GL_ARB_clip_control, + GL_ARB_color_buffer_float, + GL_ARB_compatibility, + GL_ARB_compressed_texture_pixel_storage, + GL_ARB_compute_shader, + GL_ARB_compute_variable_group_size, + GL_ARB_conditional_render_inverted, + GL_ARB_conservative_depth, + GL_ARB_copy_buffer, + GL_ARB_copy_image, + GL_ARB_cull_distance, + GL_ARB_debug_output, + GL_ARB_depth_buffer_float, + GL_ARB_depth_clamp, + GL_ARB_depth_texture, + GL_ARB_derivative_control, + GL_ARB_direct_state_access, + GL_ARB_draw_buffers, + GL_ARB_draw_buffers_blend, + GL_ARB_draw_elements_base_vertex, + GL_ARB_draw_indirect, + GL_ARB_draw_instanced, + GL_ARB_enhanced_layouts, + GL_ARB_explicit_attrib_location, + GL_ARB_explicit_uniform_location, + GL_ARB_fragment_coord_conventions, + GL_ARB_fragment_layer_viewport, + GL_ARB_fragment_program, + GL_ARB_fragment_program_shadow, + GL_ARB_fragment_shader, + GL_ARB_fragment_shader_interlock, + GL_ARB_framebuffer_no_attachments, + GL_ARB_framebuffer_object, + GL_ARB_framebuffer_sRGB, + GL_ARB_geometry_shader4, + GL_ARB_get_program_binary, + GL_ARB_get_texture_sub_image, + GL_ARB_gl_spirv, + GL_ARB_gpu_shader5, + GL_ARB_gpu_shader_fp64, + GL_ARB_gpu_shader_int64, + GL_ARB_half_float_pixel, + GL_ARB_half_float_vertex, + GL_ARB_imaging, + GL_ARB_indirect_parameters, + GL_ARB_instanced_arrays, + GL_ARB_internalformat_query, + GL_ARB_internalformat_query2, + GL_ARB_invalidate_subdata, + GL_ARB_map_buffer_alignment, + GL_ARB_map_buffer_range, + GL_ARB_matrix_palette, + GL_ARB_multi_bind, + GL_ARB_multi_draw_indirect, + GL_ARB_multisample, + GL_ARB_multitexture, + GL_ARB_occlusion_query, + GL_ARB_occlusion_query2, + GL_ARB_parallel_shader_compile, + GL_ARB_pipeline_statistics_query, + GL_ARB_pixel_buffer_object, + GL_ARB_point_parameters, + GL_ARB_point_sprite, + GL_ARB_polygon_offset_clamp, + GL_ARB_post_depth_coverage, + GL_ARB_program_interface_query, + GL_ARB_provoking_vertex, + GL_ARB_query_buffer_object, + GL_ARB_robust_buffer_access_behavior, + GL_ARB_robustness, + GL_ARB_robustness_isolation, + GL_ARB_sample_locations, + GL_ARB_sample_shading, + GL_ARB_sampler_objects, + GL_ARB_seamless_cube_map, + GL_ARB_seamless_cubemap_per_texture, + GL_ARB_separate_shader_objects, + GL_ARB_shader_atomic_counter_ops, + GL_ARB_shader_atomic_counters, + GL_ARB_shader_ballot, + GL_ARB_shader_bit_encoding, + GL_ARB_shader_clock, + GL_ARB_shader_draw_parameters, + GL_ARB_shader_group_vote, + GL_ARB_shader_image_load_store, + GL_ARB_shader_image_size, + GL_ARB_shader_objects, + GL_ARB_shader_precision, + GL_ARB_shader_stencil_export, + GL_ARB_shader_storage_buffer_object, + GL_ARB_shader_subroutine, + GL_ARB_shader_texture_image_samples, + GL_ARB_shader_texture_lod, + GL_ARB_shader_viewport_layer_array, + GL_ARB_shading_language_100, + GL_ARB_shading_language_420pack, + GL_ARB_shading_language_include, + GL_ARB_shading_language_packing, + GL_ARB_shadow, + GL_ARB_shadow_ambient, + GL_ARB_sparse_buffer, + GL_ARB_sparse_texture, + GL_ARB_sparse_texture2, + GL_ARB_sparse_texture_clamp, + GL_ARB_spirv_extensions, + GL_ARB_stencil_texturing, + GL_ARB_sync, + GL_ARB_tessellation_shader, + GL_ARB_texture_barrier, + GL_ARB_texture_border_clamp, + GL_ARB_texture_buffer_object, + GL_ARB_texture_buffer_object_rgb32, + GL_ARB_texture_buffer_range, + GL_ARB_texture_compression, + GL_ARB_texture_compression_bptc, + GL_ARB_texture_compression_rgtc, + GL_ARB_texture_cube_map, + GL_ARB_texture_cube_map_array, + GL_ARB_texture_env_add, + GL_ARB_texture_env_combine, + GL_ARB_texture_env_crossbar, + GL_ARB_texture_env_dot3, + GL_ARB_texture_filter_anisotropic, + GL_ARB_texture_filter_minmax, + GL_ARB_texture_float, + GL_ARB_texture_gather, + GL_ARB_texture_mirror_clamp_to_edge, + GL_ARB_texture_mirrored_repeat, + GL_ARB_texture_multisample, + GL_ARB_texture_non_power_of_two, + GL_ARB_texture_query_levels, + GL_ARB_texture_query_lod, + GL_ARB_texture_rectangle, + GL_ARB_texture_rg, + GL_ARB_texture_rgb10_a2ui, + GL_ARB_texture_stencil8, + GL_ARB_texture_storage, + GL_ARB_texture_storage_multisample, + GL_ARB_texture_swizzle, + GL_ARB_texture_view, + GL_ARB_timer_query, + GL_ARB_transform_feedback2, + GL_ARB_transform_feedback3, + GL_ARB_transform_feedback_instanced, + GL_ARB_transform_feedback_overflow_query, + GL_ARB_transpose_matrix, + GL_ARB_uniform_buffer_object, + GL_ARB_vertex_array_bgra, + GL_ARB_vertex_array_object, + GL_ARB_vertex_attrib_64bit, + GL_ARB_vertex_attrib_binding, + GL_ARB_vertex_blend, + GL_ARB_vertex_buffer_object, + GL_ARB_vertex_program, + GL_ARB_vertex_shader, + GL_ARB_vertex_type_10f_11f_11f_rev, + GL_ARB_vertex_type_2_10_10_10_rev, + GL_ARB_viewport_array, + GL_ARB_window_pos, + GL_ATI_draw_buffers, + GL_ATI_element_array, + GL_ATI_envmap_bumpmap, + GL_ATI_fragment_shader, + GL_ATI_map_object_buffer, + GL_ATI_meminfo, + GL_ATI_pixel_format_float, + GL_ATI_pn_triangles, + GL_ATI_separate_stencil, + GL_ATI_text_fragment_shader, + GL_ATI_texture_env_combine3, + GL_ATI_texture_float, + GL_ATI_texture_mirror_once, + GL_ATI_vertex_array_object, + GL_ATI_vertex_attrib_array_object, + GL_ATI_vertex_streams, + GL_EXT_422_pixels, + GL_EXT_EGL_image_storage, + GL_EXT_EGL_sync, + GL_EXT_abgr, + GL_EXT_bgra, + GL_EXT_bindable_uniform, + GL_EXT_blend_color, + GL_EXT_blend_equation_separate, + GL_EXT_blend_func_separate, + GL_EXT_blend_logic_op, + GL_EXT_blend_minmax, + GL_EXT_blend_subtract, + GL_EXT_clip_volume_hint, + GL_EXT_cmyka, + GL_EXT_color_subtable, + GL_EXT_compiled_vertex_array, + GL_EXT_convolution, + GL_EXT_coordinate_frame, + GL_EXT_copy_texture, + GL_EXT_cull_vertex, + GL_EXT_debug_label, + GL_EXT_debug_marker, + GL_EXT_depth_bounds_test, + GL_EXT_direct_state_access, + GL_EXT_draw_buffers2, + GL_EXT_draw_instanced, + GL_EXT_draw_range_elements, + GL_EXT_external_buffer, + GL_EXT_fog_coord, + GL_EXT_framebuffer_blit, + GL_EXT_framebuffer_multisample, + GL_EXT_framebuffer_multisample_blit_scaled, + GL_EXT_framebuffer_object, + GL_EXT_framebuffer_sRGB, + GL_EXT_geometry_shader4, + GL_EXT_gpu_program_parameters, + GL_EXT_gpu_shader4, + GL_EXT_histogram, + GL_EXT_index_array_formats, + GL_EXT_index_func, + GL_EXT_index_material, + GL_EXT_index_texture, + GL_EXT_light_texture, + GL_EXT_memory_object, + GL_EXT_memory_object_fd, + GL_EXT_memory_object_win32, + GL_EXT_misc_attribute, + GL_EXT_multi_draw_arrays, + GL_EXT_multisample, + GL_EXT_multiview_tessellation_geometry_shader, + GL_EXT_multiview_texture_multisample, + GL_EXT_multiview_timer_query, + GL_EXT_packed_depth_stencil, + GL_EXT_packed_float, + GL_EXT_packed_pixels, + GL_EXT_paletted_texture, + GL_EXT_pixel_buffer_object, + GL_EXT_pixel_transform, + GL_EXT_pixel_transform_color_table, + GL_EXT_point_parameters, + GL_EXT_polygon_offset, + GL_EXT_polygon_offset_clamp, + GL_EXT_post_depth_coverage, + GL_EXT_provoking_vertex, + GL_EXT_raster_multisample, + GL_EXT_rescale_normal, + GL_EXT_secondary_color, + GL_EXT_semaphore, + GL_EXT_semaphore_fd, + GL_EXT_semaphore_win32, + GL_EXT_separate_shader_objects, + GL_EXT_separate_specular_color, + GL_EXT_shader_framebuffer_fetch, + GL_EXT_shader_framebuffer_fetch_non_coherent, + GL_EXT_shader_image_load_formatted, + GL_EXT_shader_image_load_store, + GL_EXT_shader_integer_mix, + GL_EXT_shadow_funcs, + GL_EXT_shared_texture_palette, + GL_EXT_sparse_texture2, + GL_EXT_stencil_clear_tag, + GL_EXT_stencil_two_side, + GL_EXT_stencil_wrap, + GL_EXT_subtexture, + GL_EXT_texture, + GL_EXT_texture3D, + GL_EXT_texture_array, + GL_EXT_texture_buffer_object, + GL_EXT_texture_compression_latc, + GL_EXT_texture_compression_rgtc, + GL_EXT_texture_compression_s3tc, + GL_EXT_texture_cube_map, + GL_EXT_texture_env_add, + GL_EXT_texture_env_combine, + GL_EXT_texture_env_dot3, + GL_EXT_texture_filter_anisotropic, + GL_EXT_texture_filter_minmax, + GL_EXT_texture_integer, + GL_EXT_texture_lod_bias, + GL_EXT_texture_mirror_clamp, + GL_EXT_texture_object, + GL_EXT_texture_perturb_normal, + GL_EXT_texture_sRGB, + GL_EXT_texture_sRGB_R8, + GL_EXT_texture_sRGB_decode, + GL_EXT_texture_shadow_lod, + GL_EXT_texture_shared_exponent, + GL_EXT_texture_snorm, + GL_EXT_texture_swizzle, + GL_EXT_timer_query, + GL_EXT_transform_feedback, + GL_EXT_vertex_array, + GL_EXT_vertex_array_bgra, + GL_EXT_vertex_attrib_64bit, + GL_EXT_vertex_shader, + GL_EXT_vertex_weighting, + GL_EXT_win32_keyed_mutex, + GL_EXT_window_rectangles, + GL_EXT_x11_sync_object, + GL_GREMEDY_frame_terminator, + GL_GREMEDY_string_marker, + GL_HP_convolution_border_modes, + GL_HP_image_transform, + GL_HP_occlusion_test, + GL_HP_texture_lighting, + GL_IBM_cull_vertex, + GL_IBM_multimode_draw_arrays, + GL_IBM_rasterpos_clip, + GL_IBM_static_data, + GL_IBM_texture_mirrored_repeat, + GL_IBM_vertex_array_lists, + GL_INGR_blend_func_separate, + GL_INGR_color_clamp, + GL_INGR_interlace_read, + GL_INTEL_blackhole_render, + GL_INTEL_conservative_rasterization, + GL_INTEL_fragment_shader_ordering, + GL_INTEL_framebuffer_CMAA, + GL_INTEL_map_texture, + GL_INTEL_parallel_arrays, + GL_INTEL_performance_query, + GL_KHR_blend_equation_advanced, + GL_KHR_blend_equation_advanced_coherent, + GL_KHR_context_flush_control, + GL_KHR_debug, + GL_KHR_no_error, + GL_KHR_parallel_shader_compile, + GL_KHR_robust_buffer_access_behavior, + GL_KHR_robustness, + GL_KHR_shader_subgroup, + GL_KHR_texture_compression_astc_hdr, + GL_KHR_texture_compression_astc_ldr, + GL_KHR_texture_compression_astc_sliced_3d, + GL_MESAX_texture_stack, + GL_MESA_framebuffer_flip_y, + GL_MESA_pack_invert, + GL_MESA_program_binary_formats, + GL_MESA_resize_buffers, + GL_MESA_shader_integer_functions, + GL_MESA_tile_raster_order, + GL_MESA_window_pos, + GL_MESA_ycbcr_texture, + GL_NVX_blend_equation_advanced_multi_draw_buffers, + GL_NVX_conditional_render, + GL_NVX_gpu_memory_info, + GL_NVX_gpu_multicast2, + GL_NVX_linked_gpu_multicast, + GL_NVX_progress_fence, + GL_NV_alpha_to_coverage_dither_control, + GL_NV_bindless_multi_draw_indirect, + GL_NV_bindless_multi_draw_indirect_count, + GL_NV_bindless_texture, + GL_NV_blend_equation_advanced, + GL_NV_blend_equation_advanced_coherent, + GL_NV_blend_minmax_factor, + GL_NV_blend_square, + GL_NV_clip_space_w_scaling, + GL_NV_command_list, + GL_NV_compute_program5, + GL_NV_compute_shader_derivatives, + GL_NV_conditional_render, + GL_NV_conservative_raster, + GL_NV_conservative_raster_dilate, + GL_NV_conservative_raster_pre_snap, + GL_NV_conservative_raster_pre_snap_triangles, + GL_NV_conservative_raster_underestimation, + GL_NV_copy_depth_to_color, + GL_NV_copy_image, + GL_NV_deep_texture3D, + GL_NV_depth_buffer_float, + GL_NV_depth_clamp, + GL_NV_draw_texture, + GL_NV_draw_vulkan_image, + GL_NV_evaluators, + GL_NV_explicit_multisample, + GL_NV_fence, + GL_NV_fill_rectangle, + GL_NV_float_buffer, + GL_NV_fog_distance, + GL_NV_fragment_coverage_to_color, + GL_NV_fragment_program, + GL_NV_fragment_program2, + GL_NV_fragment_program4, + GL_NV_fragment_program_option, + GL_NV_fragment_shader_barycentric, + GL_NV_fragment_shader_interlock, + GL_NV_framebuffer_mixed_samples, + GL_NV_framebuffer_multisample_coverage, + GL_NV_geometry_program4, + GL_NV_geometry_shader4, + GL_NV_geometry_shader_passthrough, + GL_NV_gpu_multicast, + GL_NV_gpu_program4, + GL_NV_gpu_program5, + GL_NV_gpu_program5_mem_extended, + GL_NV_gpu_shader5, + GL_NV_half_float, + GL_NV_internalformat_sample_query, + GL_NV_light_max_exponent, + GL_NV_memory_attachment, + GL_NV_mesh_shader, + GL_NV_multisample_coverage, + GL_NV_multisample_filter_hint, + GL_NV_occlusion_query, + GL_NV_packed_depth_stencil, + GL_NV_parameter_buffer_object, + GL_NV_parameter_buffer_object2, + GL_NV_path_rendering, + GL_NV_path_rendering_shared_edge, + GL_NV_pixel_data_range, + GL_NV_point_sprite, + GL_NV_present_video, + GL_NV_primitive_restart, + GL_NV_query_resource, + GL_NV_query_resource_tag, + GL_NV_register_combiners, + GL_NV_register_combiners2, + GL_NV_representative_fragment_test, + GL_NV_robustness_video_memory_purge, + GL_NV_sample_locations, + GL_NV_sample_mask_override_coverage, + GL_NV_scissor_exclusive, + GL_NV_shader_atomic_counters, + GL_NV_shader_atomic_float, + GL_NV_shader_atomic_float64, + GL_NV_shader_atomic_fp16_vector, + GL_NV_shader_atomic_int64, + GL_NV_shader_buffer_load, + GL_NV_shader_buffer_store, + GL_NV_shader_storage_buffer_object, + GL_NV_shader_subgroup_partitioned, + GL_NV_shader_texture_footprint, + GL_NV_shader_thread_group, + GL_NV_shader_thread_shuffle, + GL_NV_shading_rate_image, + GL_NV_stereo_view_rendering, + GL_NV_tessellation_program5, + GL_NV_texgen_emboss, + GL_NV_texgen_reflection, + GL_NV_texture_barrier, + GL_NV_texture_compression_vtc, + GL_NV_texture_env_combine4, + GL_NV_texture_expand_normal, + GL_NV_texture_multisample, + GL_NV_texture_rectangle, + GL_NV_texture_rectangle_compressed, + GL_NV_texture_shader, + GL_NV_texture_shader2, + GL_NV_texture_shader3, + GL_NV_transform_feedback, + GL_NV_transform_feedback2, + GL_NV_uniform_buffer_unified_memory, + GL_NV_vdpau_interop, + GL_NV_vdpau_interop2, + GL_NV_vertex_array_range, + GL_NV_vertex_array_range2, + GL_NV_vertex_attrib_integer_64bit, + GL_NV_vertex_buffer_unified_memory, + GL_NV_vertex_program, + GL_NV_vertex_program1_1, + GL_NV_vertex_program2, + GL_NV_vertex_program2_option, + GL_NV_vertex_program3, + GL_NV_vertex_program4, + GL_NV_video_capture, + GL_NV_viewport_array2, + GL_NV_viewport_swizzle, + GL_OES_byte_coordinates, + GL_OES_compressed_paletted_texture, + GL_OES_fixed_point, + GL_OES_query_matrix, + GL_OES_read_format, + GL_OES_single_precision, + GL_OML_interlace, + GL_OML_resample, + GL_OML_subsample, + GL_OVR_multiview, + GL_OVR_multiview2, + GL_PGI_misc_hints, + GL_PGI_vertex_hints, + GL_REND_screen_coordinates, + GL_S3_s3tc, + GL_SGIS_detail_texture, + GL_SGIS_fog_function, + GL_SGIS_generate_mipmap, + GL_SGIS_multisample, + GL_SGIS_pixel_texture, + GL_SGIS_point_line_texgen, + GL_SGIS_point_parameters, + GL_SGIS_sharpen_texture, + GL_SGIS_texture4D, + GL_SGIS_texture_border_clamp, + GL_SGIS_texture_color_mask, + GL_SGIS_texture_edge_clamp, + GL_SGIS_texture_filter4, + GL_SGIS_texture_lod, + GL_SGIS_texture_select, + GL_SGIX_async, + GL_SGIX_async_histogram, + GL_SGIX_async_pixel, + GL_SGIX_blend_alpha_minmax, + GL_SGIX_calligraphic_fragment, + GL_SGIX_clipmap, + GL_SGIX_convolution_accuracy, + GL_SGIX_depth_pass_instrument, + GL_SGIX_depth_texture, + GL_SGIX_flush_raster, + GL_SGIX_fog_offset, + GL_SGIX_fragment_lighting, + GL_SGIX_framezoom, + GL_SGIX_igloo_interface, + GL_SGIX_instruments, + GL_SGIX_interlace, + GL_SGIX_ir_instrument1, + GL_SGIX_list_priority, + GL_SGIX_pixel_texture, + GL_SGIX_pixel_tiles, + GL_SGIX_polynomial_ffd, + GL_SGIX_reference_plane, + GL_SGIX_resample, + GL_SGIX_scalebias_hint, + GL_SGIX_shadow, + GL_SGIX_shadow_ambient, + GL_SGIX_sprite, + GL_SGIX_subsample, + GL_SGIX_tag_sample_buffer, + GL_SGIX_texture_add_env, + GL_SGIX_texture_coordinate_clamp, + GL_SGIX_texture_lod_bias, + GL_SGIX_texture_multi_buffer, + GL_SGIX_texture_scale_bias, + GL_SGIX_vertex_preclip, + GL_SGIX_ycrcb, + GL_SGIX_ycrcb_subsample, + GL_SGIX_ycrcba, + GL_SGI_color_matrix, + GL_SGI_color_table, + GL_SGI_texture_color_table, + GL_SUNX_constant_data, + GL_SUN_convolution_border_modes, + GL_SUN_global_alpha, + GL_SUN_mesh_array, + GL_SUN_slice_accum, + GL_SUN_triangle_list, + GL_SUN_vertex, + GL_WIN_phong_shading, + GL_WIN_specular_fog + Loader: True + Local files: False + Omit khrplatform: False + Reproducible: False + + Commandline: + --profile="core" --api="gl=4.1" --generator="c" --spec="gl" --extensions="GL_3DFX_multisample,GL_3DFX_tbuffer,GL_3DFX_texture_compression_FXT1,GL_AMD_blend_minmax_factor,GL_AMD_conservative_depth,GL_AMD_debug_output,GL_AMD_depth_clamp_separate,GL_AMD_draw_buffers_blend,GL_AMD_framebuffer_multisample_advanced,GL_AMD_framebuffer_sample_positions,GL_AMD_gcn_shader,GL_AMD_gpu_shader_half_float,GL_AMD_gpu_shader_int16,GL_AMD_gpu_shader_int64,GL_AMD_interleaved_elements,GL_AMD_multi_draw_indirect,GL_AMD_name_gen_delete,GL_AMD_occlusion_query_event,GL_AMD_performance_monitor,GL_AMD_pinned_memory,GL_AMD_query_buffer_object,GL_AMD_sample_positions,GL_AMD_seamless_cubemap_per_texture,GL_AMD_shader_atomic_counter_ops,GL_AMD_shader_ballot,GL_AMD_shader_explicit_vertex_parameter,GL_AMD_shader_gpu_shader_half_float_fetch,GL_AMD_shader_image_load_store_lod,GL_AMD_shader_stencil_export,GL_AMD_shader_trinary_minmax,GL_AMD_sparse_texture,GL_AMD_stencil_operation_extended,GL_AMD_texture_gather_bias_lod,GL_AMD_texture_texture4,GL_AMD_transform_feedback3_lines_triangles,GL_AMD_transform_feedback4,GL_AMD_vertex_shader_layer,GL_AMD_vertex_shader_tessellator,GL_AMD_vertex_shader_viewport_index,GL_APPLE_aux_depth_stencil,GL_APPLE_client_storage,GL_APPLE_element_array,GL_APPLE_fence,GL_APPLE_float_pixels,GL_APPLE_flush_buffer_range,GL_APPLE_object_purgeable,GL_APPLE_rgb_422,GL_APPLE_row_bytes,GL_APPLE_specular_vector,GL_APPLE_texture_range,GL_APPLE_transform_hint,GL_APPLE_vertex_array_object,GL_APPLE_vertex_array_range,GL_APPLE_vertex_program_evaluators,GL_APPLE_ycbcr_422,GL_ARB_ES2_compatibility,GL_ARB_ES3_1_compatibility,GL_ARB_ES3_2_compatibility,GL_ARB_ES3_compatibility,GL_ARB_arrays_of_arrays,GL_ARB_base_instance,GL_ARB_bindless_texture,GL_ARB_blend_func_extended,GL_ARB_buffer_storage,GL_ARB_cl_event,GL_ARB_clear_buffer_object,GL_ARB_clear_texture,GL_ARB_clip_control,GL_ARB_color_buffer_float,GL_ARB_compatibility,GL_ARB_compressed_texture_pixel_storage,GL_ARB_compute_shader,GL_ARB_compute_variable_group_size,GL_ARB_conditional_render_inverted,GL_ARB_conservative_depth,GL_ARB_copy_buffer,GL_ARB_copy_image,GL_ARB_cull_distance,GL_ARB_debug_output,GL_ARB_depth_buffer_float,GL_ARB_depth_clamp,GL_ARB_depth_texture,GL_ARB_derivative_control,GL_ARB_direct_state_access,GL_ARB_draw_buffers,GL_ARB_draw_buffers_blend,GL_ARB_draw_elements_base_vertex,GL_ARB_draw_indirect,GL_ARB_draw_instanced,GL_ARB_enhanced_layouts,GL_ARB_explicit_attrib_location,GL_ARB_explicit_uniform_location,GL_ARB_fragment_coord_conventions,GL_ARB_fragment_layer_viewport,GL_ARB_fragment_program,GL_ARB_fragment_program_shadow,GL_ARB_fragment_shader,GL_ARB_fragment_shader_interlock,GL_ARB_framebuffer_no_attachments,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_get_program_binary,GL_ARB_get_texture_sub_image,GL_ARB_gl_spirv,GL_ARB_gpu_shader5,GL_ARB_gpu_shader_fp64,GL_ARB_gpu_shader_int64,GL_ARB_half_float_pixel,GL_ARB_half_float_vertex,GL_ARB_imaging,GL_ARB_indirect_parameters,GL_ARB_instanced_arrays,GL_ARB_internalformat_query,GL_ARB_internalformat_query2,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_alignment,GL_ARB_map_buffer_range,GL_ARB_matrix_palette,GL_ARB_multi_bind,GL_ARB_multi_draw_indirect,GL_ARB_multisample,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_occlusion_query2,GL_ARB_parallel_shader_compile,GL_ARB_pipeline_statistics_query,GL_ARB_pixel_buffer_object,GL_ARB_point_parameters,GL_ARB_point_sprite,GL_ARB_polygon_offset_clamp,GL_ARB_post_depth_coverage,GL_ARB_program_interface_query,GL_ARB_provoking_vertex,GL_ARB_query_buffer_object,GL_ARB_robust_buffer_access_behavior,GL_ARB_robustness,GL_ARB_robustness_isolation,GL_ARB_sample_locations,GL_ARB_sample_shading,GL_ARB_sampler_objects,GL_ARB_seamless_cube_map,GL_ARB_seamless_cubemap_per_texture,GL_ARB_separate_shader_objects,GL_ARB_shader_atomic_counter_ops,GL_ARB_shader_atomic_counters,GL_ARB_shader_ballot,GL_ARB_shader_bit_encoding,GL_ARB_shader_clock,GL_ARB_shader_draw_parameters,GL_ARB_shader_group_vote,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_precision,GL_ARB_shader_stencil_export,GL_ARB_shader_storage_buffer_object,GL_ARB_shader_subroutine,GL_ARB_shader_texture_image_samples,GL_ARB_shader_texture_lod,GL_ARB_shader_viewport_layer_array,GL_ARB_shading_language_100,GL_ARB_shading_language_420pack,GL_ARB_shading_language_include,GL_ARB_shading_language_packing,GL_ARB_shadow,GL_ARB_shadow_ambient,GL_ARB_sparse_buffer,GL_ARB_sparse_texture,GL_ARB_sparse_texture2,GL_ARB_sparse_texture_clamp,GL_ARB_spirv_extensions,GL_ARB_stencil_texturing,GL_ARB_sync,GL_ARB_tessellation_shader,GL_ARB_texture_barrier,GL_ARB_texture_border_clamp,GL_ARB_texture_buffer_object,GL_ARB_texture_buffer_object_rgb32,GL_ARB_texture_buffer_range,GL_ARB_texture_compression,GL_ARB_texture_compression_bptc,GL_ARB_texture_compression_rgtc,GL_ARB_texture_cube_map,GL_ARB_texture_cube_map_array,GL_ARB_texture_env_add,GL_ARB_texture_env_combine,GL_ARB_texture_env_crossbar,GL_ARB_texture_env_dot3,GL_ARB_texture_filter_anisotropic,GL_ARB_texture_filter_minmax,GL_ARB_texture_float,GL_ARB_texture_gather,GL_ARB_texture_mirror_clamp_to_edge,GL_ARB_texture_mirrored_repeat,GL_ARB_texture_multisample,GL_ARB_texture_non_power_of_two,GL_ARB_texture_query_levels,GL_ARB_texture_query_lod,GL_ARB_texture_rectangle,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_texture_stencil8,GL_ARB_texture_storage,GL_ARB_texture_storage_multisample,GL_ARB_texture_swizzle,GL_ARB_texture_view,GL_ARB_timer_query,GL_ARB_transform_feedback2,GL_ARB_transform_feedback3,GL_ARB_transform_feedback_instanced,GL_ARB_transform_feedback_overflow_query,GL_ARB_transpose_matrix,GL_ARB_uniform_buffer_object,GL_ARB_vertex_array_bgra,GL_ARB_vertex_array_object,GL_ARB_vertex_attrib_64bit,GL_ARB_vertex_attrib_binding,GL_ARB_vertex_blend,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_10f_11f_11f_rev,GL_ARB_vertex_type_2_10_10_10_rev,GL_ARB_viewport_array,GL_ARB_window_pos,GL_ATI_draw_buffers,GL_ATI_element_array,GL_ATI_envmap_bumpmap,GL_ATI_fragment_shader,GL_ATI_map_object_buffer,GL_ATI_meminfo,GL_ATI_pixel_format_float,GL_ATI_pn_triangles,GL_ATI_separate_stencil,GL_ATI_text_fragment_shader,GL_ATI_texture_env_combine3,GL_ATI_texture_float,GL_ATI_texture_mirror_once,GL_ATI_vertex_array_object,GL_ATI_vertex_attrib_array_object,GL_ATI_vertex_streams,GL_EXT_422_pixels,GL_EXT_EGL_image_storage,GL_EXT_EGL_sync,GL_EXT_abgr,GL_EXT_bgra,GL_EXT_bindable_uniform,GL_EXT_blend_color,GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate,GL_EXT_blend_logic_op,GL_EXT_blend_minmax,GL_EXT_blend_subtract,GL_EXT_clip_volume_hint,GL_EXT_cmyka,GL_EXT_color_subtable,GL_EXT_compiled_vertex_array,GL_EXT_convolution,GL_EXT_coordinate_frame,GL_EXT_copy_texture,GL_EXT_cull_vertex,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_bounds_test,GL_EXT_direct_state_access,GL_EXT_draw_buffers2,GL_EXT_draw_instanced,GL_EXT_draw_range_elements,GL_EXT_external_buffer,GL_EXT_fog_coord,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_program_parameters,GL_EXT_gpu_shader4,GL_EXT_histogram,GL_EXT_index_array_formats,GL_EXT_index_func,GL_EXT_index_material,GL_EXT_index_texture,GL_EXT_light_texture,GL_EXT_memory_object,GL_EXT_memory_object_fd,GL_EXT_memory_object_win32,GL_EXT_misc_attribute,GL_EXT_multi_draw_arrays,GL_EXT_multisample,GL_EXT_multiview_tessellation_geometry_shader,GL_EXT_multiview_texture_multisample,GL_EXT_multiview_timer_query,GL_EXT_packed_depth_stencil,GL_EXT_packed_float,GL_EXT_packed_pixels,GL_EXT_paletted_texture,GL_EXT_pixel_buffer_object,GL_EXT_pixel_transform,GL_EXT_pixel_transform_color_table,GL_EXT_point_parameters,GL_EXT_polygon_offset,GL_EXT_polygon_offset_clamp,GL_EXT_post_depth_coverage,GL_EXT_provoking_vertex,GL_EXT_raster_multisample,GL_EXT_rescale_normal,GL_EXT_secondary_color,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_semaphore_win32,GL_EXT_separate_shader_objects,GL_EXT_separate_specular_color,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_image_load_formatted,GL_EXT_shader_image_load_store,GL_EXT_shader_integer_mix,GL_EXT_shadow_funcs,GL_EXT_shared_texture_palette,GL_EXT_sparse_texture2,GL_EXT_stencil_clear_tag,GL_EXT_stencil_two_side,GL_EXT_stencil_wrap,GL_EXT_subtexture,GL_EXT_texture,GL_EXT_texture3D,GL_EXT_texture_array,GL_EXT_texture_buffer_object,GL_EXT_texture_compression_latc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_cube_map,GL_EXT_texture_env_add,GL_EXT_texture_env_combine,GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_filter_minmax,GL_EXT_texture_integer,GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp,GL_EXT_texture_object,GL_EXT_texture_perturb_normal,GL_EXT_texture_sRGB,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_shared_exponent,GL_EXT_texture_snorm,GL_EXT_texture_swizzle,GL_EXT_timer_query,GL_EXT_transform_feedback,GL_EXT_vertex_array,GL_EXT_vertex_array_bgra,GL_EXT_vertex_attrib_64bit,GL_EXT_vertex_shader,GL_EXT_vertex_weighting,GL_EXT_win32_keyed_mutex,GL_EXT_window_rectangles,GL_EXT_x11_sync_object,GL_GREMEDY_frame_terminator,GL_GREMEDY_string_marker,GL_HP_convolution_border_modes,GL_HP_image_transform,GL_HP_occlusion_test,GL_HP_texture_lighting,GL_IBM_cull_vertex,GL_IBM_multimode_draw_arrays,GL_IBM_rasterpos_clip,GL_IBM_static_data,GL_IBM_texture_mirrored_repeat,GL_IBM_vertex_array_lists,GL_INGR_blend_func_separate,GL_INGR_color_clamp,GL_INGR_interlace_read,GL_INTEL_blackhole_render,GL_INTEL_conservative_rasterization,GL_INTEL_fragment_shader_ordering,GL_INTEL_framebuffer_CMAA,GL_INTEL_map_texture,GL_INTEL_parallel_arrays,GL_INTEL_performance_query,GL_KHR_blend_equation_advanced,GL_KHR_blend_equation_advanced_coherent,GL_KHR_context_flush_control,GL_KHR_debug,GL_KHR_no_error,GL_KHR_parallel_shader_compile,GL_KHR_robust_buffer_access_behavior,GL_KHR_robustness,GL_KHR_shader_subgroup,GL_KHR_texture_compression_astc_hdr,GL_KHR_texture_compression_astc_ldr,GL_KHR_texture_compression_astc_sliced_3d,GL_MESAX_texture_stack,GL_MESA_framebuffer_flip_y,GL_MESA_pack_invert,GL_MESA_program_binary_formats,GL_MESA_resize_buffers,GL_MESA_shader_integer_functions,GL_MESA_tile_raster_order,GL_MESA_window_pos,GL_MESA_ycbcr_texture,GL_NVX_blend_equation_advanced_multi_draw_buffers,GL_NVX_conditional_render,GL_NVX_gpu_memory_info,GL_NVX_gpu_multicast2,GL_NVX_linked_gpu_multicast,GL_NVX_progress_fence,GL_NV_alpha_to_coverage_dither_control,GL_NV_bindless_multi_draw_indirect,GL_NV_bindless_multi_draw_indirect_count,GL_NV_bindless_texture,GL_NV_blend_equation_advanced,GL_NV_blend_equation_advanced_coherent,GL_NV_blend_minmax_factor,GL_NV_blend_square,GL_NV_clip_space_w_scaling,GL_NV_command_list,GL_NV_compute_program5,GL_NV_compute_shader_derivatives,GL_NV_conditional_render,GL_NV_conservative_raster,GL_NV_conservative_raster_dilate,GL_NV_conservative_raster_pre_snap,GL_NV_conservative_raster_pre_snap_triangles,GL_NV_conservative_raster_underestimation,GL_NV_copy_depth_to_color,GL_NV_copy_image,GL_NV_deep_texture3D,GL_NV_depth_buffer_float,GL_NV_depth_clamp,GL_NV_draw_texture,GL_NV_draw_vulkan_image,GL_NV_evaluators,GL_NV_explicit_multisample,GL_NV_fence,GL_NV_fill_rectangle,GL_NV_float_buffer,GL_NV_fog_distance,GL_NV_fragment_coverage_to_color,GL_NV_fragment_program,GL_NV_fragment_program2,GL_NV_fragment_program4,GL_NV_fragment_program_option,GL_NV_fragment_shader_barycentric,GL_NV_fragment_shader_interlock,GL_NV_framebuffer_mixed_samples,GL_NV_framebuffer_multisample_coverage,GL_NV_geometry_program4,GL_NV_geometry_shader4,GL_NV_geometry_shader_passthrough,GL_NV_gpu_multicast,GL_NV_gpu_program4,GL_NV_gpu_program5,GL_NV_gpu_program5_mem_extended,GL_NV_gpu_shader5,GL_NV_half_float,GL_NV_internalformat_sample_query,GL_NV_light_max_exponent,GL_NV_memory_attachment,GL_NV_mesh_shader,GL_NV_multisample_coverage,GL_NV_multisample_filter_hint,GL_NV_occlusion_query,GL_NV_packed_depth_stencil,GL_NV_parameter_buffer_object,GL_NV_parameter_buffer_object2,GL_NV_path_rendering,GL_NV_path_rendering_shared_edge,GL_NV_pixel_data_range,GL_NV_point_sprite,GL_NV_present_video,GL_NV_primitive_restart,GL_NV_query_resource,GL_NV_query_resource_tag,GL_NV_register_combiners,GL_NV_register_combiners2,GL_NV_representative_fragment_test,GL_NV_robustness_video_memory_purge,GL_NV_sample_locations,GL_NV_sample_mask_override_coverage,GL_NV_scissor_exclusive,GL_NV_shader_atomic_counters,GL_NV_shader_atomic_float,GL_NV_shader_atomic_float64,GL_NV_shader_atomic_fp16_vector,GL_NV_shader_atomic_int64,GL_NV_shader_buffer_load,GL_NV_shader_buffer_store,GL_NV_shader_storage_buffer_object,GL_NV_shader_subgroup_partitioned,GL_NV_shader_texture_footprint,GL_NV_shader_thread_group,GL_NV_shader_thread_shuffle,GL_NV_shading_rate_image,GL_NV_stereo_view_rendering,GL_NV_tessellation_program5,GL_NV_texgen_emboss,GL_NV_texgen_reflection,GL_NV_texture_barrier,GL_NV_texture_compression_vtc,GL_NV_texture_env_combine4,GL_NV_texture_expand_normal,GL_NV_texture_multisample,GL_NV_texture_rectangle,GL_NV_texture_rectangle_compressed,GL_NV_texture_shader,GL_NV_texture_shader2,GL_NV_texture_shader3,GL_NV_transform_feedback,GL_NV_transform_feedback2,GL_NV_uniform_buffer_unified_memory,GL_NV_vdpau_interop,GL_NV_vdpau_interop2,GL_NV_vertex_array_range,GL_NV_vertex_array_range2,GL_NV_vertex_attrib_integer_64bit,GL_NV_vertex_buffer_unified_memory,GL_NV_vertex_program,GL_NV_vertex_program1_1,GL_NV_vertex_program2,GL_NV_vertex_program2_option,GL_NV_vertex_program3,GL_NV_vertex_program4,GL_NV_video_capture,GL_NV_viewport_array2,GL_NV_viewport_swizzle,GL_OES_byte_coordinates,GL_OES_compressed_paletted_texture,GL_OES_fixed_point,GL_OES_query_matrix,GL_OES_read_format,GL_OES_single_precision,GL_OML_interlace,GL_OML_resample,GL_OML_subsample,GL_OVR_multiview,GL_OVR_multiview2,GL_PGI_misc_hints,GL_PGI_vertex_hints,GL_REND_screen_coordinates,GL_S3_s3tc,GL_SGIS_detail_texture,GL_SGIS_fog_function,GL_SGIS_generate_mipmap,GL_SGIS_multisample,GL_SGIS_pixel_texture,GL_SGIS_point_line_texgen,GL_SGIS_point_parameters,GL_SGIS_sharpen_texture,GL_SGIS_texture4D,GL_SGIS_texture_border_clamp,GL_SGIS_texture_color_mask,GL_SGIS_texture_edge_clamp,GL_SGIS_texture_filter4,GL_SGIS_texture_lod,GL_SGIS_texture_select,GL_SGIX_async,GL_SGIX_async_histogram,GL_SGIX_async_pixel,GL_SGIX_blend_alpha_minmax,GL_SGIX_calligraphic_fragment,GL_SGIX_clipmap,GL_SGIX_convolution_accuracy,GL_SGIX_depth_pass_instrument,GL_SGIX_depth_texture,GL_SGIX_flush_raster,GL_SGIX_fog_offset,GL_SGIX_fragment_lighting,GL_SGIX_framezoom,GL_SGIX_igloo_interface,GL_SGIX_instruments,GL_SGIX_interlace,GL_SGIX_ir_instrument1,GL_SGIX_list_priority,GL_SGIX_pixel_texture,GL_SGIX_pixel_tiles,GL_SGIX_polynomial_ffd,GL_SGIX_reference_plane,GL_SGIX_resample,GL_SGIX_scalebias_hint,GL_SGIX_shadow,GL_SGIX_shadow_ambient,GL_SGIX_sprite,GL_SGIX_subsample,GL_SGIX_tag_sample_buffer,GL_SGIX_texture_add_env,GL_SGIX_texture_coordinate_clamp,GL_SGIX_texture_lod_bias,GL_SGIX_texture_multi_buffer,GL_SGIX_texture_scale_bias,GL_SGIX_vertex_preclip,GL_SGIX_ycrcb,GL_SGIX_ycrcb_subsample,GL_SGIX_ycrcba,GL_SGI_color_matrix,GL_SGI_color_table,GL_SGI_texture_color_table,GL_SUNX_constant_data,GL_SUN_convolution_border_modes,GL_SUN_global_alpha,GL_SUN_mesh_array,GL_SUN_slice_accum,GL_SUN_triangle_list,GL_SUN_vertex,GL_WIN_phong_shading,GL_WIN_specular_fog" + Online: + Too many extensions +*/ + + +#ifndef __glad_h_ +#define __glad_h_ + +#ifdef __gl_h_ +#error OpenGL header already included, remove this include, glad already provides it +#endif +#define __gl_h_ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define APIENTRY __stdcall +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY APIENTRY +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct gladGLversionStruct { + int major; + int minor; +}; + +typedef void* (* GLADloadproc)(const char *name); + +#ifndef GLAPI +# if defined(GLAD_GLAPI_EXPORT) +# if defined(_WIN32) || defined(__CYGWIN__) +# if defined(GLAD_GLAPI_EXPORT_BUILD) +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllexport)) extern +# else +# define GLAPI __declspec(dllexport) extern +# endif +# else +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllimport)) extern +# else +# define GLAPI __declspec(dllimport) extern +# endif +# endif +# elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) +# define GLAPI __attribute__ ((visibility ("default"))) extern +# else +# define GLAPI extern +# endif +# else +# define GLAPI extern +# endif +#endif + +GLAPI struct gladGLversionStruct GLVersion; + +GLAPI int gladLoadGL(void); + +GLAPI int gladLoadGLLoader(GLADloadproc); + +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef int GLint; +typedef unsigned int GLuint; +typedef khronos_int32_t GLclampx; +typedef int GLsizei; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void *GLeglClientBufferEXT; +typedef void *GLeglImageOES; +typedef char GLchar; +typedef char GLcharARB; +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef khronos_uint16_t GLhalf; +typedef khronos_uint16_t GLhalfARB; +typedef khronos_int32_t GLfixed; +typedef khronos_intptr_t GLintptr; +typedef khronos_intptr_t GLintptrARB; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_ssize_t GLsizeiptrARB; +typedef khronos_int64_t GLint64; +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64; +typedef khronos_uint64_t GLuint64EXT; +typedef struct __GLsync *GLsync; +struct _cl_context; +struct _cl_event; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +typedef unsigned short GLhalfNV; +typedef GLintptr GLvdpauSurfaceNV; +typedef void (APIENTRY *GLVULKANPROCNV)(void); +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_NONE 0 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_VIEWPORT 0x0BA2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_REPEAT 0x2901 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_DOUBLE 0x140A +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_PATCHES 0x000E +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_ISOLINES 0x8E7A +#define GL_QUADS 0x0007 +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_RGB565 0x8D62 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_MAX_VIEWPORTS 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_UNDEFINED_VERTEX 0x8260 +#ifndef GL_VERSION_1_0 +#define GL_VERSION_1_0 1 +GLAPI int GLAD_GL_VERSION_1_0; +typedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); +GLAPI PFNGLCULLFACEPROC glad_glCullFace; +#define glCullFace glad_glCullFace +typedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); +GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; +#define glFrontFace glad_glFrontFace +typedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); +GLAPI PFNGLHINTPROC glad_glHint; +#define glHint glad_glHint +typedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); +GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; +#define glLineWidth glad_glLineWidth +typedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size); +GLAPI PFNGLPOINTSIZEPROC glad_glPointSize; +#define glPointSize glad_glPointSize +typedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); +GLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode; +#define glPolygonMode glad_glPolygonMode +typedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSORPROC glad_glScissor; +#define glScissor glad_glScissor +typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +#define glTexParameterf glad_glTexParameterf +typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +#define glTexParameterfv glad_glTexParameterfv +typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +#define glTexParameteri glad_glTexParameteri +typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +#define glTexParameteriv glad_glTexParameteriv +typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +#define glTexImage1D glad_glTexImage1D +typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +#define glTexImage2D glad_glTexImage2D +typedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf); +GLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +#define glDrawBuffer glad_glDrawBuffer +typedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); +GLAPI PFNGLCLEARPROC glad_glClear; +#define glClear glad_glClear +typedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; +#define glClearColor glad_glClearColor +typedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); +GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; +#define glClearStencil glad_glClearStencil +typedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth); +GLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth; +#define glClearDepth glad_glClearDepth +typedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); +GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; +#define glStencilMask glad_glStencilMask +typedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI PFNGLCOLORMASKPROC glad_glColorMask; +#define glColorMask glad_glColorMask +typedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); +GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; +#define glDepthMask glad_glDepthMask +typedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap); +GLAPI PFNGLDISABLEPROC glad_glDisable; +#define glDisable glad_glDisable +typedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap); +GLAPI PFNGLENABLEPROC glad_glEnable; +#define glEnable glad_glEnable +typedef void (APIENTRYP PFNGLFINISHPROC)(void); +GLAPI PFNGLFINISHPROC glad_glFinish; +#define glFinish glad_glFinish +typedef void (APIENTRYP PFNGLFLUSHPROC)(void); +GLAPI PFNGLFLUSHPROC glad_glFlush; +#define glFlush glad_glFlush +typedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; +#define glBlendFunc glad_glBlendFunc +typedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode); +GLAPI PFNGLLOGICOPPROC glad_glLogicOp; +#define glLogicOp glad_glLogicOp +typedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; +#define glStencilFunc glad_glStencilFunc +typedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; +#define glStencilOp glad_glStencilOp +typedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); +GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; +#define glDepthFunc glad_glDepthFunc +typedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref; +#define glPixelStoref glad_glPixelStoref +typedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; +#define glPixelStorei glad_glPixelStorei +typedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src); +GLAPI PFNGLREADBUFFERPROC glad_glReadBuffer; +#define glReadBuffer glad_glReadBuffer +typedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; +#define glReadPixels glad_glReadPixels +typedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); +GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +#define glGetBooleanv glad_glGetBooleanv +typedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); +GLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev; +#define glGetDoublev glad_glGetDoublev +typedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void); +GLAPI PFNGLGETERRORPROC glad_glGetError; +#define glGetError glad_glGetError +typedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); +GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; +#define glGetFloatv glad_glGetFloatv +typedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); +GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; +#define glGetIntegerv glad_glGetIntegerv +typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); +GLAPI PFNGLGETSTRINGPROC glad_glGetString; +#define glGetString glad_glGetString +typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +#define glGetTexImage glad_glGetTexImage +typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +#define glGetTexParameterfv glad_glGetTexParameterfv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +#define glGetTexParameteriv glad_glGetTexParameteriv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv +typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); +GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; +#define glIsEnabled glad_glIsEnabled +typedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange; +#define glDepthRange glad_glDepthRange +typedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLVIEWPORTPROC glad_glViewport; +#define glViewport glad_glViewport +#endif +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 +GLAPI int GLAD_GL_VERSION_1_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; +#define glDrawArrays glad_glDrawArrays +typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; +#define glDrawElements glad_glDrawElements +typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +#define glPolygonOffset glad_glPolygonOffset +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +#define glCopyTexImage1D glad_glCopyTexImage1D +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +#define glCopyTexImage2D glad_glCopyTexImage2D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +#define glCopyTexSubImage1D glad_glCopyTexSubImage1D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +#define glCopyTexSubImage2D glad_glCopyTexSubImage2D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +#define glTexSubImage1D glad_glTexSubImage1D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +#define glTexSubImage2D glad_glTexSubImage2D +typedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; +#define glBindTexture glad_glBindTexture +typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); +GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +#define glDeleteTextures glad_glDeleteTextures +typedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); +GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; +#define glGenTextures glad_glGenTextures +typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); +GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; +#define glIsTexture glad_glIsTexture +#endif +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +GLAPI int GLAD_GL_VERSION_1_2; +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +#define glDrawRangeElements glad_glDrawRangeElements +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +#define glTexImage3D glad_glTexImage3D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +#define glTexSubImage3D glad_glTexSubImage3D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +#define glCopyTexSubImage3D glad_glCopyTexSubImage3D +#endif +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +GLAPI int GLAD_GL_VERSION_1_3; +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); +GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +#define glActiveTexture glad_glActiveTexture +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +#define glSampleCoverage glad_glSampleCoverage +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +#define glCompressedTexImage3D glad_glCompressedTexImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +#define glCompressedTexImage2D glad_glCompressedTexImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +#define glCompressedTexImage1D glad_glCompressedTexImage1D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); +GLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +#define glGetCompressedTexImage glad_glGetCompressedTexImage +#endif +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +GLAPI int GLAD_GL_VERSION_1_4; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +#define glBlendFuncSeparate glad_glBlendFuncSeparate +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +GLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +#define glMultiDrawArrays glad_glMultiDrawArrays +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); +GLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +#define glMultiDrawElements glad_glMultiDrawElements +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +#define glPointParameterf glad_glPointParameterf +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +#define glPointParameterfv glad_glPointParameterfv +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +#define glPointParameteri glad_glPointParameteri +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +#define glPointParameteriv glad_glPointParameteriv +typedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; +#define glBlendColor glad_glBlendColor +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); +GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +#define glBlendEquation glad_glBlendEquation +#endif +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +GLAPI int GLAD_GL_VERSION_1_5; +typedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENQUERIESPROC glad_glGenQueries; +#define glGenQueries glad_glGenQueries +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +#define glDeleteQueries glad_glDeleteQueries +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id); +GLAPI PFNGLISQUERYPROC glad_glIsQuery; +#define glIsQuery glad_glIsQuery +typedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); +GLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery; +#define glBeginQuery glad_glBeginQuery +typedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target); +GLAPI PFNGLENDQUERYPROC glad_glEndQuery; +#define glEndQuery glad_glEndQuery +typedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv; +#define glGetQueryiv glad_glGetQueryiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +#define glGetQueryObjectiv glad_glGetQueryObjectiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +#define glGetQueryObjectuiv glad_glGetQueryObjectuiv +typedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; +#define glBindBuffer glad_glBindBuffer +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); +GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +#define glDeleteBuffers glad_glDeleteBuffers +typedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); +GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; +#define glGenBuffers glad_glGenBuffers +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); +GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; +#define glIsBuffer glad_glIsBuffer +typedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; +#define glBufferData glad_glBufferData +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +#define glBufferSubData glad_glBufferSubData +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); +GLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +#define glGetBufferSubData glad_glGetBufferSubData +typedef void * (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +GLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer; +#define glMapBuffer glad_glMapBuffer +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); +GLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +#define glUnmapBuffer glad_glUnmapBuffer +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +#define glGetBufferParameteriv glad_glGetBufferParameteriv +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); +GLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +#define glGetBufferPointerv glad_glGetBufferPointerv +#endif +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +GLAPI int GLAD_GL_VERSION_2_0; +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +#define glBlendEquationSeparate glad_glBlendEquationSeparate +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); +GLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +#define glDrawBuffers glad_glDrawBuffers +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +#define glStencilOpSeparate glad_glStencilOpSeparate +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +#define glStencilFuncSeparate glad_glStencilFuncSeparate +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +#define glStencilMaskSeparate glad_glStencilMaskSeparate +typedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; +#define glAttachShader glad_glAttachShader +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name); +GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +#define glBindAttribLocation glad_glBindAttribLocation +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); +GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; +#define glCompileShader glad_glCompileShader +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void); +GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +#define glCreateProgram glad_glCreateProgram +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); +GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; +#define glCreateShader glad_glCreateShader +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); +GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +#define glDeleteProgram glad_glDeleteProgram +typedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); +GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; +#define glDeleteShader glad_glDeleteShader +typedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; +#define glDetachShader glad_glDetachShader +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +#define glDisableVertexAttribArray glad_glDisableVertexAttribArray +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +#define glEnableVertexAttribArray glad_glEnableVertexAttribArray +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +#define glGetActiveAttrib glad_glGetActiveAttrib +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +#define glGetActiveUniform glad_glGetActiveUniform +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +#define glGetAttachedShaders glad_glGetAttachedShaders +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +#define glGetAttribLocation glad_glGetAttribLocation +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +#define glGetProgramiv glad_glGetProgramiv +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +#define glGetProgramInfoLog glad_glGetProgramInfoLog +typedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); +GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; +#define glGetShaderiv glad_glGetShaderiv +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +#define glGetShaderInfoLog glad_glGetShaderInfoLog +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +#define glGetShaderSource glad_glGetShaderSource +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +#define glGetUniformLocation glad_glGetUniformLocation +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); +GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +#define glGetUniformfv glad_glGetUniformfv +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); +GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +#define glGetUniformiv glad_glGetUniformiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +#define glGetVertexAttribdv glad_glGetVertexAttribdv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +#define glGetVertexAttribfv glad_glGetVertexAttribfv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +#define glGetVertexAttribiv glad_glGetVertexAttribiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); +GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; +#define glIsProgram glad_glIsProgram +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader); +GLAPI PFNGLISSHADERPROC glad_glIsShader; +#define glIsShader glad_glIsShader +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); +GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; +#define glLinkProgram glad_glLinkProgram +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; +#define glShaderSource glad_glShaderSource +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); +GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; +#define glUseProgram glad_glUseProgram +typedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; +#define glUniform1f glad_glUniform1f +typedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; +#define glUniform2f glad_glUniform2f +typedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; +#define glUniform3f glad_glUniform3f +typedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; +#define glUniform4f glad_glUniform4f +typedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; +#define glUniform1i glad_glUniform1i +typedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; +#define glUniform2i glad_glUniform2i +typedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; +#define glUniform3i glad_glUniform3i +typedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; +#define glUniform4i glad_glUniform4i +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; +#define glUniform1fv glad_glUniform1fv +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; +#define glUniform2fv glad_glUniform2fv +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; +#define glUniform3fv glad_glUniform3fv +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; +#define glUniform4fv glad_glUniform4fv +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; +#define glUniform1iv glad_glUniform1iv +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; +#define glUniform2iv glad_glUniform2iv +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; +#define glUniform3iv glad_glUniform3iv +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; +#define glUniform4iv glad_glUniform4iv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +#define glUniformMatrix2fv glad_glUniformMatrix2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +#define glUniformMatrix3fv glad_glUniformMatrix3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +#define glUniformMatrix4fv glad_glUniformMatrix4fv +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); +GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +#define glValidateProgram glad_glValidateProgram +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +#define glVertexAttrib1d glad_glVertexAttrib1d +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +#define glVertexAttrib1dv glad_glVertexAttrib1dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +#define glVertexAttrib1f glad_glVertexAttrib1f +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +#define glVertexAttrib1fv glad_glVertexAttrib1fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +GLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +#define glVertexAttrib1s glad_glVertexAttrib1s +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +#define glVertexAttrib1sv glad_glVertexAttrib1sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +#define glVertexAttrib2d glad_glVertexAttrib2d +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +#define glVertexAttrib2dv glad_glVertexAttrib2dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +#define glVertexAttrib2f glad_glVertexAttrib2f +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +#define glVertexAttrib2fv glad_glVertexAttrib2fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +GLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +#define glVertexAttrib2s glad_glVertexAttrib2s +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +#define glVertexAttrib2sv glad_glVertexAttrib2sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +#define glVertexAttrib3d glad_glVertexAttrib3d +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +#define glVertexAttrib3dv glad_glVertexAttrib3dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +#define glVertexAttrib3f glad_glVertexAttrib3f +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +#define glVertexAttrib3fv glad_glVertexAttrib3fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +#define glVertexAttrib3s glad_glVertexAttrib3s +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +#define glVertexAttrib3sv glad_glVertexAttrib3sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +#define glVertexAttrib4Niv glad_glVertexAttrib4Niv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +#define glVertexAttrib4Nub glad_glVertexAttrib4Nub +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +#define glVertexAttrib4bv glad_glVertexAttrib4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +#define glVertexAttrib4d glad_glVertexAttrib4d +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +#define glVertexAttrib4dv glad_glVertexAttrib4dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +#define glVertexAttrib4f glad_glVertexAttrib4f +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +#define glVertexAttrib4fv glad_glVertexAttrib4fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +#define glVertexAttrib4iv glad_glVertexAttrib4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +#define glVertexAttrib4s glad_glVertexAttrib4s +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +#define glVertexAttrib4sv glad_glVertexAttrib4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +#define glVertexAttrib4ubv glad_glVertexAttrib4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +#define glVertexAttrib4uiv glad_glVertexAttrib4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +#define glVertexAttrib4usv glad_glVertexAttrib4usv +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +#define glVertexAttribPointer glad_glVertexAttribPointer +#endif +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +GLAPI int GLAD_GL_VERSION_2_1; +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv +#endif +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +GLAPI int GLAD_GL_VERSION_3_0; +typedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI PFNGLCOLORMASKIPROC glad_glColorMaski; +#define glColorMaski glad_glColorMaski +typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); +GLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +#define glGetBooleani_v glad_glGetBooleani_v +typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); +GLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +#define glGetIntegeri_v glad_glGetIntegeri_v +typedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); +GLAPI PFNGLENABLEIPROC glad_glEnablei; +#define glEnablei glad_glEnablei +typedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); +GLAPI PFNGLDISABLEIPROC glad_glDisablei; +#define glDisablei glad_glDisablei +typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +GLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi; +#define glIsEnabledi glad_glIsEnabledi +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +#define glBeginTransformFeedback glad_glBeginTransformFeedback +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +#define glEndTransformFeedback glad_glEndTransformFeedback +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +#define glBindBufferRange glad_glBindBufferRange +typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +GLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +#define glBindBufferBase glad_glBindBufferBase +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying +typedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +GLAPI PFNGLCLAMPCOLORPROC glad_glClampColor; +#define glClampColor glad_glClampColor +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); +GLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +#define glBeginConditionalRender glad_glBeginConditionalRender +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); +GLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +#define glEndConditionalRender glad_glEndConditionalRender +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +#define glVertexAttribIPointer glad_glVertexAttribIPointer +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +#define glGetVertexAttribIiv glad_glGetVertexAttribIiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params); +GLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +GLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +#define glVertexAttribI1i glad_glVertexAttribI1i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +GLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +#define glVertexAttribI2i glad_glVertexAttribI2i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +#define glVertexAttribI3i glad_glVertexAttribI3i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +#define glVertexAttribI4i glad_glVertexAttribI4i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +GLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +#define glVertexAttribI1ui glad_glVertexAttribI1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +GLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +#define glVertexAttribI2ui glad_glVertexAttribI2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +#define glVertexAttribI3ui glad_glVertexAttribI3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +#define glVertexAttribI4ui glad_glVertexAttribI4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +#define glVertexAttribI1iv glad_glVertexAttribI1iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +#define glVertexAttribI2iv glad_glVertexAttribI2iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +#define glVertexAttribI3iv glad_glVertexAttribI3iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +#define glVertexAttribI4iv glad_glVertexAttribI4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +#define glVertexAttribI1uiv glad_glVertexAttribI1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +#define glVertexAttribI2uiv glad_glVertexAttribI2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +#define glVertexAttribI3uiv glad_glVertexAttribI3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +#define glVertexAttribI4uiv glad_glVertexAttribI4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +#define glVertexAttribI4bv glad_glVertexAttribI4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +#define glVertexAttribI4sv glad_glVertexAttribI4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +#define glVertexAttribI4ubv glad_glVertexAttribI4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +#define glVertexAttribI4usv glad_glVertexAttribI4usv +typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +#define glGetUniformuiv glad_glGetUniformuiv +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +#define glBindFragDataLocation glad_glBindFragDataLocation +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +#define glGetFragDataLocation glad_glGetFragDataLocation +typedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +GLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui; +#define glUniform1ui glad_glUniform1ui +typedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui; +#define glUniform2ui glad_glUniform2ui +typedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui; +#define glUniform3ui glad_glUniform3ui +typedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui; +#define glUniform4ui glad_glUniform4ui +typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +#define glUniform1uiv glad_glUniform1uiv +typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +#define glUniform2uiv glad_glUniform2uiv +typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +#define glUniform3uiv glad_glUniform3uiv +typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +#define glUniform4uiv glad_glUniform4uiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +#define glTexParameterIiv glad_glTexParameterIiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +#define glTexParameterIuiv glad_glTexParameterIuiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +#define glGetTexParameterIiv glad_glGetTexParameterIiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +#define glGetTexParameterIuiv glad_glGetTexParameterIuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +#define glClearBufferiv glad_glClearBufferiv +typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +#define glClearBufferuiv glad_glClearBufferuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +#define glClearBufferfv glad_glClearBufferfv +typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +#define glClearBufferfi glad_glClearBufferfi +typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); +GLAPI PFNGLGETSTRINGIPROC glad_glGetStringi; +#define glGetStringi glad_glGetStringi +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +#define glIsRenderbuffer glad_glIsRenderbuffer +typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +#define glBindRenderbuffer glad_glBindRenderbuffer +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); +GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +#define glDeleteRenderbuffers glad_glDeleteRenderbuffers +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +#define glGenRenderbuffers glad_glGenRenderbuffers +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +#define glRenderbufferStorage glad_glRenderbufferStorage +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +#define glIsFramebuffer glad_glIsFramebuffer +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +#define glBindFramebuffer glad_glBindFramebuffer +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); +GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +#define glDeleteFramebuffers glad_glDeleteFramebuffers +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +#define glGenFramebuffers glad_glGenFramebuffers +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +#define glCheckFramebufferStatus glad_glCheckFramebufferStatus +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +#define glFramebufferTexture1D glad_glFramebufferTexture1D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +#define glFramebufferTexture2D glad_glFramebufferTexture2D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +#define glFramebufferTexture3D glad_glFramebufferTexture3D +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv +typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); +GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +#define glGenerateMipmap glad_glGenerateMipmap +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +#define glBlitFramebuffer glad_glBlitFramebuffer +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +#define glFramebufferTextureLayer glad_glFramebufferTextureLayer +typedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +#define glMapBufferRange glad_glMapBufferRange +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +#define glFlushMappedBufferRange glad_glFlushMappedBufferRange +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); +GLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +#define glBindVertexArray glad_glBindVertexArray +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); +GLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +#define glDeleteVertexArrays glad_glDeleteVertexArrays +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +GLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +#define glGenVertexArrays glad_glGenVertexArrays +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); +GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +#define glIsVertexArray glad_glIsVertexArray +#endif +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +GLAPI int GLAD_GL_VERSION_3_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +#define glDrawArraysInstanced glad_glDrawArraysInstanced +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +#define glDrawElementsInstanced glad_glDrawElementsInstanced +typedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; +#define glTexBuffer glad_glTexBuffer +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); +GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +#define glCopyBufferSubData glad_glCopyBufferSubData +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +#define glGetUniformIndices glad_glGetUniformIndices +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +#define glGetActiveUniformsiv glad_glGetActiveUniformsiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +#define glGetActiveUniformName glad_glGetActiveUniformName +typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName); +GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +#define glGetUniformBlockIndex glad_glGetUniformBlockIndex +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName +typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +#define glUniformBlockBinding glad_glUniformBlockBinding +#endif +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +GLAPI int GLAD_GL_VERSION_3_2; +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); +GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +#define glProvokingVertex glad_glProvokingVertex +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; +#define glFenceSync glad_glFenceSync +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync); +GLAPI PFNGLISSYNCPROC glad_glIsSync; +#define glIsSync glad_glIsSync +typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); +GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; +#define glDeleteSync glad_glDeleteSync +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +#define glClientWaitSync glad_glClientWaitSync +typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; +#define glWaitSync glad_glWaitSync +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); +GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +#define glGetInteger64v glad_glGetInteger64v +typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; +#define glGetSynciv glad_glGetSynciv +typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); +GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +#define glGetInteger64i_v glad_glGetInteger64i_v +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params); +GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +#define glGetBufferParameteri64v glad_glGetBufferParameteri64v +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +#define glFramebufferTexture glad_glFramebufferTexture +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +#define glTexImage2DMultisample glad_glTexImage2DMultisample +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +#define glTexImage3DMultisample glad_glTexImage3DMultisample +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); +GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +#define glGetMultisamplefv glad_glGetMultisamplefv +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +#define glSampleMaski glad_glSampleMaski +#endif +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +GLAPI int GLAD_GL_VERSION_3_3; +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; +#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed +typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; +#define glGetFragDataIndex glad_glGetFragDataIndex +typedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); +GLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers; +#define glGenSamplers glad_glGenSamplers +typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); +GLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; +#define glDeleteSamplers glad_glDeleteSamplers +typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); +GLAPI PFNGLISSAMPLERPROC glad_glIsSampler; +#define glIsSampler glad_glIsSampler +typedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); +GLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler; +#define glBindSampler glad_glBindSampler +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); +GLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; +#define glSamplerParameteri glad_glSamplerParameteri +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param); +GLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; +#define glSamplerParameteriv glad_glSamplerParameteriv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); +GLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; +#define glSamplerParameterf glad_glSamplerParameterf +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param); +GLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; +#define glSamplerParameterfv glad_glSamplerParameterfv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param); +GLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; +#define glSamplerParameterIiv glad_glSamplerParameterIiv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param); +GLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; +#define glSamplerParameterIuiv glad_glSamplerParameterIuiv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; +#define glGetSamplerParameteriv glad_glGetSamplerParameteriv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; +#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params); +GLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; +#define glGetSamplerParameterfv glad_glGetSamplerParameterfv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; +#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv +typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); +GLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter; +#define glQueryCounter glad_glQueryCounter +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); +GLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; +#define glGetQueryObjecti64v glad_glGetQueryObjecti64v +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); +GLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; +#define glGetQueryObjectui64v glad_glGetQueryObjectui64v +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); +GLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; +#define glVertexAttribDivisor glad_glVertexAttribDivisor +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; +#define glVertexAttribP1ui glad_glVertexAttribP1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; +#define glVertexAttribP1uiv glad_glVertexAttribP1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; +#define glVertexAttribP2ui glad_glVertexAttribP2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; +#define glVertexAttribP2uiv glad_glVertexAttribP2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; +#define glVertexAttribP3ui glad_glVertexAttribP3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; +#define glVertexAttribP3uiv glad_glVertexAttribP3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; +#define glVertexAttribP4ui glad_glVertexAttribP4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; +#define glVertexAttribP4uiv glad_glVertexAttribP4uiv +typedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui; +#define glVertexP2ui glad_glVertexP2ui +typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; +#define glVertexP2uiv glad_glVertexP2uiv +typedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui; +#define glVertexP3ui glad_glVertexP3ui +typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; +#define glVertexP3uiv glad_glVertexP3uiv +typedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui; +#define glVertexP4ui glad_glVertexP4ui +typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; +#define glVertexP4uiv glad_glVertexP4uiv +typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; +#define glTexCoordP1ui glad_glTexCoordP1ui +typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; +#define glTexCoordP1uiv glad_glTexCoordP1uiv +typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; +#define glTexCoordP2ui glad_glTexCoordP2ui +typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; +#define glTexCoordP2uiv glad_glTexCoordP2uiv +typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; +#define glTexCoordP3ui glad_glTexCoordP3ui +typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; +#define glTexCoordP3uiv glad_glTexCoordP3uiv +typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; +#define glTexCoordP4ui glad_glTexCoordP4ui +typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; +#define glTexCoordP4uiv glad_glTexCoordP4uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; +#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; +#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; +#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; +#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; +#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; +#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; +#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; +#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv +typedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui; +#define glNormalP3ui glad_glNormalP3ui +typedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; +#define glNormalP3uiv glad_glNormalP3uiv +typedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui; +#define glColorP3ui glad_glColorP3ui +typedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv; +#define glColorP3uiv glad_glColorP3uiv +typedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui; +#define glColorP4ui glad_glColorP4ui +typedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv; +#define glColorP4uiv glad_glColorP4uiv +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; +#define glSecondaryColorP3ui glad_glSecondaryColorP3ui +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; +#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv +#endif +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +GLAPI int GLAD_GL_VERSION_4_0; +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value); +GLAPI PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading; +#define glMinSampleShading glad_glMinSampleShading +typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); +GLAPI PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi; +#define glBlendEquationi glad_glBlendEquationi +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei; +#define glBlendEquationSeparatei glad_glBlendEquationSeparatei +typedef void (APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); +GLAPI PFNGLBLENDFUNCIPROC glad_glBlendFunci; +#define glBlendFunci glad_glBlendFunci +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei; +#define glBlendFuncSeparatei glad_glBlendFuncSeparatei +typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); +GLAPI PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; +#define glDrawArraysIndirect glad_glDrawArraysIndirect +typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect); +GLAPI PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; +#define glDrawElementsIndirect glad_glDrawElementsIndirect +typedef void (APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); +GLAPI PFNGLUNIFORM1DPROC glad_glUniform1d; +#define glUniform1d glad_glUniform1d +typedef void (APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); +GLAPI PFNGLUNIFORM2DPROC glad_glUniform2d; +#define glUniform2d glad_glUniform2d +typedef void (APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLUNIFORM3DPROC glad_glUniform3d; +#define glUniform3d glad_glUniform3d +typedef void (APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLUNIFORM4DPROC glad_glUniform4d; +#define glUniform4d glad_glUniform4d +typedef void (APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM1DVPROC glad_glUniform1dv; +#define glUniform1dv glad_glUniform1dv +typedef void (APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM2DVPROC glad_glUniform2dv; +#define glUniform2dv glad_glUniform2dv +typedef void (APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM3DVPROC glad_glUniform3dv; +#define glUniform3dv glad_glUniform3dv +typedef void (APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM4DVPROC glad_glUniform4dv; +#define glUniform4dv glad_glUniform4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; +#define glUniformMatrix2dv glad_glUniformMatrix2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; +#define glUniformMatrix3dv glad_glUniformMatrix3dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; +#define glUniformMatrix4dv glad_glUniformMatrix4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; +#define glUniformMatrix2x3dv glad_glUniformMatrix2x3dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; +#define glUniformMatrix2x4dv glad_glUniformMatrix2x4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; +#define glUniformMatrix3x2dv glad_glUniformMatrix3x2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; +#define glUniformMatrix3x4dv glad_glUniformMatrix3x4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; +#define glUniformMatrix4x2dv glad_glUniformMatrix4x2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; +#define glUniformMatrix4x3dv glad_glUniformMatrix4x3dv +typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); +GLAPI PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; +#define glGetUniformdv glad_glGetUniformdv +typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar *name); +GLAPI PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; +#define glGetSubroutineUniformLocation glad_glGetSubroutineUniformLocation +typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar *name); +GLAPI PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; +#define glGetSubroutineIndex glad_glGetSubroutineIndex +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; +#define glGetActiveSubroutineUniformiv glad_glGetActiveSubroutineUniformiv +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; +#define glGetActiveSubroutineUniformName glad_glGetActiveSubroutineUniformName +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; +#define glGetActiveSubroutineName glad_glGetActiveSubroutineName +typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint *indices); +GLAPI PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; +#define glUniformSubroutinesuiv glad_glUniformSubroutinesuiv +typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; +#define glGetUniformSubroutineuiv glad_glGetUniformSubroutineuiv +typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); +GLAPI PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; +#define glGetProgramStageiv glad_glGetProgramStageiv +typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); +GLAPI PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; +#define glPatchParameteri glad_glPatchParameteri +typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); +GLAPI PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; +#define glPatchParameterfv glad_glPatchParameterfv +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); +GLAPI PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; +#define glBindTransformFeedback glad_glBindTransformFeedback +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; +#define glDeleteTransformFeedbacks glad_glDeleteTransformFeedbacks +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; +#define glGenTransformFeedbacks glad_glGenTransformFeedbacks +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); +GLAPI PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; +#define glIsTransformFeedback glad_glIsTransformFeedback +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; +#define glPauseTransformFeedback glad_glPauseTransformFeedback +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; +#define glResumeTransformFeedback glad_glResumeTransformFeedback +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; +#define glDrawTransformFeedback glad_glDrawTransformFeedback +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; +#define glDrawTransformFeedbackStream glad_glDrawTransformFeedbackStream +typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); +GLAPI PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; +#define glBeginQueryIndexed glad_glBeginQueryIndexed +typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); +GLAPI PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; +#define glEndQueryIndexed glad_glEndQueryIndexed +typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; +#define glGetQueryIndexediv glad_glGetQueryIndexediv +#endif +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +GLAPI int GLAD_GL_VERSION_4_1; +typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); +GLAPI PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; +#define glReleaseShaderCompiler glad_glReleaseShaderCompiler +typedef void (APIENTRYP PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +GLAPI PFNGLSHADERBINARYPROC glad_glShaderBinary; +#define glShaderBinary glad_glShaderBinary +typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GLAPI PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; +#define glGetShaderPrecisionFormat glad_glGetShaderPrecisionFormat +typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); +GLAPI PFNGLDEPTHRANGEFPROC glad_glDepthRangef; +#define glDepthRangef glad_glDepthRangef +typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); +GLAPI PFNGLCLEARDEPTHFPROC glad_glClearDepthf; +#define glClearDepthf glad_glClearDepthf +typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GLAPI PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; +#define glGetProgramBinary glad_glGetProgramBinary +typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +GLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary; +#define glProgramBinary glad_glProgramBinary +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); +GLAPI PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; +#define glProgramParameteri glad_glProgramParameteri +typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); +GLAPI PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; +#define glUseProgramStages glad_glUseProgramStages +typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); +GLAPI PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; +#define glActiveShaderProgram glad_glActiveShaderProgram +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar *const*strings); +GLAPI PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; +#define glCreateShaderProgramv glad_glCreateShaderProgramv +typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; +#define glBindProgramPipeline glad_glBindProgramPipeline +typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); +GLAPI PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; +#define glDeleteProgramPipelines glad_glDeleteProgramPipelines +typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +GLAPI PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; +#define glGenProgramPipelines glad_glGenProgramPipelines +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; +#define glIsProgramPipeline glad_glIsProgramPipeline +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; +#define glGetProgramPipelineiv glad_glGetProgramPipelineiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); +GLAPI PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; +#define glProgramUniform1i glad_glProgramUniform1i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; +#define glProgramUniform1iv glad_glProgramUniform1iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); +GLAPI PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; +#define glProgramUniform1f glad_glProgramUniform1f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; +#define glProgramUniform1fv glad_glProgramUniform1fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); +GLAPI PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; +#define glProgramUniform1d glad_glProgramUniform1d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; +#define glProgramUniform1dv glad_glProgramUniform1dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); +GLAPI PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; +#define glProgramUniform1ui glad_glProgramUniform1ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; +#define glProgramUniform1uiv glad_glProgramUniform1uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1); +GLAPI PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; +#define glProgramUniform2i glad_glProgramUniform2i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; +#define glProgramUniform2iv glad_glProgramUniform2iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; +#define glProgramUniform2f glad_glProgramUniform2f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; +#define glProgramUniform2fv glad_glProgramUniform2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1); +GLAPI PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; +#define glProgramUniform2d glad_glProgramUniform2d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; +#define glProgramUniform2dv glad_glProgramUniform2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; +#define glProgramUniform2ui glad_glProgramUniform2ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; +#define glProgramUniform2uiv glad_glProgramUniform2uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; +#define glProgramUniform3i glad_glProgramUniform3i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; +#define glProgramUniform3iv glad_glProgramUniform3iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; +#define glProgramUniform3f glad_glProgramUniform3f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; +#define glProgramUniform3fv glad_glProgramUniform3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +GLAPI PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; +#define glProgramUniform3d glad_glProgramUniform3d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; +#define glProgramUniform3dv glad_glProgramUniform3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; +#define glProgramUniform3ui glad_glProgramUniform3ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; +#define glProgramUniform3uiv glad_glProgramUniform3uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; +#define glProgramUniform4i glad_glProgramUniform4i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; +#define glProgramUniform4iv glad_glProgramUniform4iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; +#define glProgramUniform4f glad_glProgramUniform4f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; +#define glProgramUniform4fv glad_glProgramUniform4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +GLAPI PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; +#define glProgramUniform4d glad_glProgramUniform4d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; +#define glProgramUniform4dv glad_glProgramUniform4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; +#define glProgramUniform4ui glad_glProgramUniform4ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; +#define glProgramUniform4uiv glad_glProgramUniform4uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; +#define glProgramUniformMatrix2fv glad_glProgramUniformMatrix2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; +#define glProgramUniformMatrix3fv glad_glProgramUniformMatrix3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; +#define glProgramUniformMatrix4fv glad_glProgramUniformMatrix4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; +#define glProgramUniformMatrix2dv glad_glProgramUniformMatrix2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; +#define glProgramUniformMatrix3dv glad_glProgramUniformMatrix3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; +#define glProgramUniformMatrix4dv glad_glProgramUniformMatrix4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; +#define glProgramUniformMatrix2x3fv glad_glProgramUniformMatrix2x3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; +#define glProgramUniformMatrix3x2fv glad_glProgramUniformMatrix3x2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; +#define glProgramUniformMatrix2x4fv glad_glProgramUniformMatrix2x4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; +#define glProgramUniformMatrix4x2fv glad_glProgramUniformMatrix4x2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; +#define glProgramUniformMatrix3x4fv glad_glProgramUniformMatrix3x4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; +#define glProgramUniformMatrix4x3fv glad_glProgramUniformMatrix4x3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; +#define glProgramUniformMatrix2x3dv glad_glProgramUniformMatrix2x3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; +#define glProgramUniformMatrix3x2dv glad_glProgramUniformMatrix3x2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; +#define glProgramUniformMatrix2x4dv glad_glProgramUniformMatrix2x4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; +#define glProgramUniformMatrix4x2dv glad_glProgramUniformMatrix4x2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; +#define glProgramUniformMatrix3x4dv glad_glProgramUniformMatrix3x4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; +#define glProgramUniformMatrix4x3dv glad_glProgramUniformMatrix4x3dv +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; +#define glValidateProgramPipeline glad_glValidateProgramPipeline +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; +#define glGetProgramPipelineInfoLog glad_glGetProgramPipelineInfoLog +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; +#define glVertexAttribL1d glad_glVertexAttribL1d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; +#define glVertexAttribL2d glad_glVertexAttribL2d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; +#define glVertexAttribL3d glad_glVertexAttribL3d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; +#define glVertexAttribL4d glad_glVertexAttribL4d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; +#define glVertexAttribL1dv glad_glVertexAttribL1dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; +#define glVertexAttribL2dv glad_glVertexAttribL2dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; +#define glVertexAttribL3dv glad_glVertexAttribL3dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; +#define glVertexAttribL4dv glad_glVertexAttribL4dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; +#define glVertexAttribLPointer glad_glVertexAttribLPointer +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; +#define glGetVertexAttribLdv glad_glGetVertexAttribLdv +typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); +GLAPI PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; +#define glViewportArrayv glad_glViewportArrayv +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GLAPI PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; +#define glViewportIndexedf glad_glViewportIndexedf +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; +#define glViewportIndexedfv glad_glViewportIndexedfv +typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); +GLAPI PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; +#define glScissorArrayv glad_glScissorArrayv +typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; +#define glScissorIndexed glad_glScissorIndexed +typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; +#define glScissorIndexedv glad_glScissorIndexedv +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble *v); +GLAPI PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; +#define glDepthRangeArrayv glad_glDepthRangeArrayv +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; +#define glDepthRangeIndexed glad_glDepthRangeIndexed +typedef void (APIENTRYP PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); +GLAPI PFNGLGETFLOATI_VPROC glad_glGetFloati_v; +#define glGetFloati_v glad_glGetFloati_v +typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); +GLAPI PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; +#define glGetDoublei_v glad_glGetDoublei_v +#endif +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 +#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 +#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 +#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A +#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B +#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C +#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D +#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E +#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F +#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 +#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 +#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 +#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 +#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 +#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE +#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF +#define GL_ALL_PIXELS_AMD 0xFFFFFFFF +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 +#define GL_DATA_BUFFER_AMD 0x9151 +#define GL_PERFORMANCE_MONITOR_AMD 0x9152 +#define GL_QUERY_OBJECT_AMD 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 +#define GL_SAMPLER_OBJECT_AMD 0x9155 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#define GL_QUERY_BUFFER_AMD 0x9192 +#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 +#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 +#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A +#define GL_MIN_SPARSE_LEVEL_AMD 0x919B +#define GL_MIN_LOD_WARNING_AMD 0x919C +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +#define GL_SET_AMD 0x874A +#define GL_REPLACE_VALUE_AMD 0x874B +#define GL_STENCIL_OP_VALUE_AMD 0x874C +#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_DISCRETE_AMD 0x9006 +#define GL_CONTINUOUS_AMD 0x9007 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#define GL_ELEMENT_ARRAY_APPLE 0x8A0C +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B +#define GL_HALF_APPLE 0x140B +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_RETAINED_APPLE 0x8A1B +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_PURGEABLE_APPLE 0x8A1D +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 +#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 +#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 +#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 +#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_UNSIGNED_INT64_ARB 0x140F +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#define GL_TEXTURE_TARGET 0x1006 +#define GL_QUERY_TARGET 0x82EA +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_INDEX 0x8222 +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 +#define GL_SPIR_V_BINARY_ARB 0x9552 +#define GL_INT64_ARB 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 +#define GL_HALF_FLOAT_ARB 0x140B +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_MIPMAP 0x8293 +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_COLOR_ENCODING 0x8296 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_SRGB_DECODE_ARB 0x8299 +#define GL_FILTER 0x829A +#define GL_VERTEX_TEXTURE 0x829B +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_VIEW_CLASS_EAC_R11 0x9383 +#define GL_VIEW_CLASS_EAC_RG11 0x9384 +#define GL_VIEW_CLASS_ETC2_RGB 0x9385 +#define GL_VIEW_CLASS_ETC2_RGBA 0x9386 +#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387 +#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388 +#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389 +#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A +#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B +#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C +#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D +#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E +#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F +#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390 +#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391 +#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392 +#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393 +#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394 +#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395 +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_COMPLETION_STATUS_ARB 0x91B1 +#define GL_VERTICES_SUBMITTED_ARB 0x82EE +#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_NAME_LENGTH 0x92F9 +#define GL_TYPE 0x92FA +#define GL_ARRAY_SIZE 0x92FB +#define GL_OFFSET 0x92FC +#define GL_BLOCK_INDEX 0x92FD +#define GL_ARRAY_STRIDE 0x92FE +#define GL_MATRIX_STRIDE 0x92FF +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_LOCATION 0x930E +#define GL_LOCATION_INDEX 0x930F +#define GL_IS_PER_PATCH 0x92E7 +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 +#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#define GL_ABGR_EXT 0x8000 +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_SAMPLER 0x82E6 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +#define GL_TEXTURE_TILING_EXT 0x9580 +#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 +#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B +#define GL_NUM_TILING_TYPES_EXT 0x9582 +#define GL_TILING_TYPES_EXT 0x9583 +#define GL_OPTIMAL_TILING_EXT 0x9584 +#define GL_LINEAR_TILING_EXT 0x9585 +#define GL_NUM_DEVICE_UUIDS_EXT 0x9596 +#define GL_DEVICE_UUID_EXT 0x9597 +#define GL_DRIVER_UUID_EXT 0x9598 +#define GL_UUID_SIZE_EXT 16 +#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588 +#define GL_DEVICE_LUID_EXT 0x9599 +#define GL_DEVICE_NODE_MASK_EXT 0x959A +#define GL_LUID_SIZE_EXT 8 +#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589 +#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A +#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B +#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_PROVOKING_VERTEX_EXT 0x8E4F +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +#define GL_RESCALE_NORMAL_EXT 0x803A +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +#define GL_LAYOUT_GENERAL_EXT 0x958D +#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E +#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F +#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590 +#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 +#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 +#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 +#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 +#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 +#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594 +#define GL_D3D12_FENCE_VALUE_EXT 0x9595 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 +#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A +#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B +#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C +#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D +#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E +#define GL_IMAGE_1D_EXT 0x904C +#define GL_IMAGE_2D_EXT 0x904D +#define GL_IMAGE_3D_EXT 0x904E +#define GL_IMAGE_2D_RECT_EXT 0x904F +#define GL_IMAGE_CUBE_EXT 0x9050 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_IMAGE_1D_ARRAY_EXT 0x9052 +#define GL_IMAGE_2D_ARRAY_EXT 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 +#define GL_INT_IMAGE_1D_EXT 0x9057 +#define GL_INT_IMAGE_2D_EXT 0x9058 +#define GL_INT_IMAGE_3D_EXT 0x9059 +#define GL_INT_IMAGE_2D_RECT_EXT 0x905A +#define GL_INT_IMAGE_CUBE_EXT 0x905B +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D +#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C +#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D +#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 +#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 +#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#define GL_SR8_EXT 0x8FBD +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#define GL_ALPHA_SNORM 0x9010 +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_ALPHA8_SNORM 0x9014 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_ALPHA16_SNORM 0x9018 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_INTENSITY16_SNORM 0x901B +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE +#define GL_DOUBLE_MAT2_EXT 0x8F46 +#define GL_DOUBLE_MAT3_EXT 0x8F47 +#define GL_DOUBLE_MAT4_EXT 0x8F48 +#define GL_DOUBLE_MAT2x3_EXT 0x8F49 +#define GL_DOUBLE_MAT2x4_EXT 0x8F4A +#define GL_DOUBLE_MAT3x2_EXT 0x8F4B +#define GL_DOUBLE_MAT3x4_EXT 0x8F4C +#define GL_DOUBLE_MAT4x2_EXT 0x8F4D +#define GL_DOUBLE_MAT4x3_EXT 0x8F4E +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +#define GL_SYNC_X11_FENCE_EXT 0x90E1 +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#define GL_CULL_VERTEX_IBM 103050 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#define GL_ALL_STATIC_DATA_IBM 103060 +#define GL_STATIC_VERTEX_ARRAY_IBM 103061 +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#define GL_INTERLACE_READ_INGR 0x8568 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_QUERY 0x82E3 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +#define GL_DISPLAY_LIST 0x82E7 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_CONTEXT_LOST 0x0507 +#define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +#define GL_SUBGROUP_SIZE_KHR 0x9532 +#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 +#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 +#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 +#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 +#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 +#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 +#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 +#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 +#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 +#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 +#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB +#define GL_PACK_INVERT_MESA 0x8758 +#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F +#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8 +#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9 +#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#define GL_UPLOAD_GPU_MASK_NVX 0x954A +#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800 +#define GL_MAX_LGPU_GPUS_NVX 0x92BA +#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D +#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E +#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F +#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 +#define GL_NOP_COMMAND_NV 0x0001 +#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 +#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 +#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 +#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 +#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 +#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 +#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 +#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 +#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A +#define GL_BLEND_COLOR_COMMAND_NV 0x000B +#define GL_STENCIL_REF_COMMAND_NV 0x000C +#define GL_LINE_WIDTH_COMMAND_NV 0x000D +#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E +#define GL_ALPHA_REF_COMMAND_NV 0x000F +#define GL_VIEWPORT_COMMAND_NV 0x0010 +#define GL_SCISSOR_COMMAND_NV 0x0011 +#define GL_FRONT_FACE_COMMAND_NV 0x0012 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +#define GL_DEPTH_CLAMP_NV 0x864F +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 +#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#define GL_FILL_RECTANGLE_NV 0x933C +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#define GL_EYE_PLANE 0x2502 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +#define GL_PER_GPU_STORAGE_BIT_NV 0x0800 +#define GL_MULTICAST_GPUS_NV 0x92BA +#define GL_RENDER_GPU_MASK_NV 0x9558 +#define GL_PER_GPU_STORAGE_NV 0x9548 +#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C +#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F +#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 +#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 +#define GL_HALF_FLOAT_NV 0x140B +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4 +#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 +#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 +#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 +#define GL_MEMORY_ATTACHABLE_NV 0x95A8 +#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 +#define GL_DETACHED_TEXTURES_NV 0x95AA +#define GL_DETACHED_BUFFERS_NV 0x95AB +#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC +#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD +#define GL_MESH_SHADER_NV 0x9559 +#define GL_TASK_SHADER_NV 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 +#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 +#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 +#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 +#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A +#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D +#define GL_MAX_MESH_VIEWS_NV 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 +#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B +#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C +#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E +#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F +#define GL_MESH_VERTICES_OUT_NV 0x9579 +#define GL_MESH_PRIMITIVES_OUT_NV 0x957A +#define GL_MESH_OUTPUT_TYPE_NV 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 +#define GL_MESH_SHADER_BIT_NV 0x00000040 +#define GL_TASK_SHADER_BIT_NV 0x00000080 +#define GL_MESH_SUBROUTINE_NV 0x957C +#define GL_TASK_SUBROUTINE_NV 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_CONVEX_HULL_NV 0x908B +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_2_BYTES_NV 0x1407 +#define GL_3_BYTES_NV 0x1408 +#define GL_4_BYTES_NV 0x1409 +#define GL_EYE_LINEAR_NV 0x2400 +#define GL_OBJECT_LINEAR_NV 0x2401 +#define GL_CONSTANT_NV 0x8576 +#define GL_PATH_FOG_GEN_MODE_NV 0x90AC +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D +#define GL_SHARED_EDGE_NV 0xC0 +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +#define GL_FRAME_NV 0x8E26 +#define GL_FIELDS_NV 0x8E27 +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESENT_DURATION_NV 0x8E2B +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540 +#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542 +#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544 +#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545 +#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546 +#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +#define GL_FOG 0x0B60 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F +#define GL_PURGED_CONTEXT_RESET_NV 0x92BB +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 +#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_SM_COUNT_NV 0x933B +#define GL_SHADING_RATE_IMAGE_NV 0x9563 +#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 +#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 +#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 +#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A +#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B +#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C +#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D +#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E +#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F +#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B +#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C +#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D +#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E +#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F +#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE +#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF +#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 +#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 +#define GL_TESS_CONTROL_PROGRAM_NV 0x891E +#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F +#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 +#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#define GL_LAYER_NV 0x8DAA +#define GL_NEXT_BUFFER_NV -2 +#define GL_SKIP_COMPONENTS4_NV -3 +#define GL_SKIP_COMPONENTS3_NV -4 +#define GL_SKIP_COMPONENTS2_NV -5 +#define GL_SKIP_COMPONENTS1_NV -6 +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 +#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E +#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F +#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_WRITE_DISCARD_NV 0x88BE +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +#define GL_VIDEO_BUFFER_NV 0x9020 +#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 +#define GL_FIELD_UPPER_NV 0x9022 +#define GL_FIELD_LOWER_NV 0x9023 +#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 +#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 +#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 +#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 +#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 +#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 +#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A +#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B +#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C +#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D +#define GL_PARTIAL_SUCCESS_NV 0x902E +#define GL_SUCCESS_NV 0x902F +#define GL_FAILURE_NV 0x9030 +#define GL_YCBYCR8_422_NV 0x9031 +#define GL_YCBAYCR8A_4224_NV 0x9032 +#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 +#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 +#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 +#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 +#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 +#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 +#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 +#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A +#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B +#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#define GL_FIXED_OES 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA4_S3TC 0x83A3 +#define GL_RGBA_DXT5_S3TC 0x83A4 +#define GL_RGBA4_DXT5_S3TC 0x83A5 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#define GL_ASYNC_MARKER_SGIX 0x8329 +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +#define GL_INTERLACE_SGIX 0x8094 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#define GL_LIST_PRIORITY_SGIX 0x8182 +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +#define GL_WRAP_BORDER_SUN 0x81D4 +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 +#define GL_SLICE_ACCUM_SUN 0x85CC +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +GLAPI int GLAD_GL_3DFX_multisample; +#endif +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 +GLAPI int GLAD_GL_3DFX_tbuffer; +typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC)(GLuint mask); +GLAPI PFNGLTBUFFERMASK3DFXPROC glad_glTbufferMask3DFX; +#define glTbufferMask3DFX glad_glTbufferMask3DFX +#endif +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +GLAPI int GLAD_GL_3DFX_texture_compression_FXT1; +#endif +#ifndef GL_AMD_blend_minmax_factor +#define GL_AMD_blend_minmax_factor 1 +GLAPI int GLAD_GL_AMD_blend_minmax_factor; +#endif +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 +GLAPI int GLAD_GL_AMD_conservative_depth; +#endif +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 +GLAPI int GLAD_GL_AMD_debug_output; +typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC)(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI PFNGLDEBUGMESSAGEENABLEAMDPROC glad_glDebugMessageEnableAMD; +#define glDebugMessageEnableAMD glad_glDebugMessageEnableAMD +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC)(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); +GLAPI PFNGLDEBUGMESSAGEINSERTAMDPROC glad_glDebugMessageInsertAMD; +#define glDebugMessageInsertAMD glad_glDebugMessageInsertAMD +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC)(GLDEBUGPROCAMD callback, void *userParam); +GLAPI PFNGLDEBUGMESSAGECALLBACKAMDPROC glad_glDebugMessageCallbackAMD; +#define glDebugMessageCallbackAMD glad_glDebugMessageCallbackAMD +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC)(GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +GLAPI PFNGLGETDEBUGMESSAGELOGAMDPROC glad_glGetDebugMessageLogAMD; +#define glGetDebugMessageLogAMD glad_glGetDebugMessageLogAMD +#endif +#ifndef GL_AMD_depth_clamp_separate +#define GL_AMD_depth_clamp_separate 1 +GLAPI int GLAD_GL_AMD_depth_clamp_separate; +#endif +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 +GLAPI int GLAD_GL_AMD_draw_buffers_blend; +typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC)(GLuint buf, GLenum src, GLenum dst); +GLAPI PFNGLBLENDFUNCINDEXEDAMDPROC glad_glBlendFuncIndexedAMD; +#define glBlendFuncIndexedAMD glad_glBlendFuncIndexedAMD +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC glad_glBlendFuncSeparateIndexedAMD; +#define glBlendFuncSeparateIndexedAMD glad_glBlendFuncSeparateIndexedAMD +typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC)(GLuint buf, GLenum mode); +GLAPI PFNGLBLENDEQUATIONINDEXEDAMDPROC glad_glBlendEquationIndexedAMD; +#define glBlendEquationIndexedAMD glad_glBlendEquationIndexedAMD +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC glad_glBlendEquationSeparateIndexedAMD; +#define glBlendEquationSeparateIndexedAMD glad_glBlendEquationSeparateIndexedAMD +#endif +#ifndef GL_AMD_framebuffer_multisample_advanced +#define GL_AMD_framebuffer_multisample_advanced 1 +GLAPI int GLAD_GL_AMD_framebuffer_multisample_advanced; +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)(GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glRenderbufferStorageMultisampleAdvancedAMD; +#define glRenderbufferStorageMultisampleAdvancedAMD glad_glRenderbufferStorageMultisampleAdvancedAMD +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)(GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glNamedRenderbufferStorageMultisampleAdvancedAMD; +#define glNamedRenderbufferStorageMultisampleAdvancedAMD glad_glNamedRenderbufferStorageMultisampleAdvancedAMD +#endif +#ifndef GL_AMD_framebuffer_sample_positions +#define GL_AMD_framebuffer_sample_positions 1 +GLAPI int GLAD_GL_AMD_framebuffer_sample_positions; +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +GLAPI PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC glad_glFramebufferSamplePositionsfvAMD; +#define glFramebufferSamplePositionsfvAMD glad_glFramebufferSamplePositionsfvAMD +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +GLAPI PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC glad_glNamedFramebufferSamplePositionsfvAMD; +#define glNamedFramebufferSamplePositionsfvAMD glad_glNamedFramebufferSamplePositionsfvAMD +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +GLAPI PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC glad_glGetFramebufferParameterfvAMD; +#define glGetFramebufferParameterfvAMD glad_glGetFramebufferParameterfvAMD +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +GLAPI PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC glad_glGetNamedFramebufferParameterfvAMD; +#define glGetNamedFramebufferParameterfvAMD glad_glGetNamedFramebufferParameterfvAMD +#endif +#ifndef GL_AMD_gcn_shader +#define GL_AMD_gcn_shader 1 +GLAPI int GLAD_GL_AMD_gcn_shader; +#endif +#ifndef GL_AMD_gpu_shader_half_float +#define GL_AMD_gpu_shader_half_float 1 +GLAPI int GLAD_GL_AMD_gpu_shader_half_float; +#endif +#ifndef GL_AMD_gpu_shader_int16 +#define GL_AMD_gpu_shader_int16 1 +GLAPI int GLAD_GL_AMD_gpu_shader_int16; +#endif +#ifndef GL_AMD_gpu_shader_int64 +#define GL_AMD_gpu_shader_int64 1 +GLAPI int GLAD_GL_AMD_gpu_shader_int64; +typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC)(GLint location, GLint64EXT x); +GLAPI PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV; +#define glUniform1i64NV glad_glUniform1i64NV +typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y); +GLAPI PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV; +#define glUniform2i64NV glad_glUniform2i64NV +typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV; +#define glUniform3i64NV glad_glUniform3i64NV +typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV; +#define glUniform4i64NV glad_glUniform4i64NV +typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV; +#define glUniform1i64vNV glad_glUniform1i64vNV +typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV; +#define glUniform2i64vNV glad_glUniform2i64vNV +typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV; +#define glUniform3i64vNV glad_glUniform3i64vNV +typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV; +#define glUniform4i64vNV glad_glUniform4i64vNV +typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC)(GLint location, GLuint64EXT x); +GLAPI PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV; +#define glUniform1ui64NV glad_glUniform1ui64NV +typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV; +#define glUniform2ui64NV glad_glUniform2ui64NV +typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV; +#define glUniform3ui64NV glad_glUniform3ui64NV +typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV; +#define glUniform4ui64NV glad_glUniform4ui64NV +typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV; +#define glUniform1ui64vNV glad_glUniform1ui64vNV +typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV; +#define glUniform2ui64vNV glad_glUniform2ui64vNV +typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV; +#define glUniform3ui64vNV glad_glUniform3ui64vNV +typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV; +#define glUniform4ui64vNV glad_glUniform4ui64vNV +typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC)(GLuint program, GLint location, GLint64EXT *params); +GLAPI PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV; +#define glGetUniformi64vNV glad_glGetUniformi64vNV +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC)(GLuint program, GLint location, GLuint64EXT *params); +GLAPI PFNGLGETUNIFORMUI64VNVPROC glad_glGetUniformui64vNV; +#define glGetUniformui64vNV glad_glGetUniformui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC)(GLuint program, GLint location, GLint64EXT x); +GLAPI PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV; +#define glProgramUniform1i64NV glad_glProgramUniform1i64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GLAPI PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV; +#define glProgramUniform2i64NV glad_glProgramUniform2i64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV; +#define glProgramUniform3i64NV glad_glProgramUniform3i64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV; +#define glProgramUniform4i64NV glad_glProgramUniform4i64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV; +#define glProgramUniform1i64vNV glad_glProgramUniform1i64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV; +#define glProgramUniform2i64vNV glad_glProgramUniform2i64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV; +#define glProgramUniform3i64vNV glad_glProgramUniform3i64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV; +#define glProgramUniform4i64vNV glad_glProgramUniform4i64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x); +GLAPI PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV; +#define glProgramUniform1ui64NV glad_glProgramUniform1ui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV; +#define glProgramUniform2ui64NV glad_glProgramUniform2ui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV; +#define glProgramUniform3ui64NV glad_glProgramUniform3ui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV; +#define glProgramUniform4ui64NV glad_glProgramUniform4ui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV; +#define glProgramUniform1ui64vNV glad_glProgramUniform1ui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV; +#define glProgramUniform2ui64vNV glad_glProgramUniform2ui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV; +#define glProgramUniform3ui64vNV glad_glProgramUniform3ui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV; +#define glProgramUniform4ui64vNV glad_glProgramUniform4ui64vNV +#endif +#ifndef GL_AMD_interleaved_elements +#define GL_AMD_interleaved_elements 1 +GLAPI int GLAD_GL_AMD_interleaved_elements; +typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC)(GLuint index, GLenum pname, GLint param); +GLAPI PFNGLVERTEXATTRIBPARAMETERIAMDPROC glad_glVertexAttribParameteriAMD; +#define glVertexAttribParameteriAMD glad_glVertexAttribParameteriAMD +#endif +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 +GLAPI int GLAD_GL_AMD_multi_draw_indirect; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)(GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC glad_glMultiDrawArraysIndirectAMD; +#define glMultiDrawArraysIndirectAMD glad_glMultiDrawArraysIndirectAMD +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC glad_glMultiDrawElementsIndirectAMD; +#define glMultiDrawElementsIndirectAMD glad_glMultiDrawElementsIndirectAMD +#endif +#ifndef GL_AMD_name_gen_delete +#define GL_AMD_name_gen_delete 1 +GLAPI int GLAD_GL_AMD_name_gen_delete; +typedef void (APIENTRYP PFNGLGENNAMESAMDPROC)(GLenum identifier, GLuint num, GLuint *names); +GLAPI PFNGLGENNAMESAMDPROC glad_glGenNamesAMD; +#define glGenNamesAMD glad_glGenNamesAMD +typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC)(GLenum identifier, GLuint num, const GLuint *names); +GLAPI PFNGLDELETENAMESAMDPROC glad_glDeleteNamesAMD; +#define glDeleteNamesAMD glad_glDeleteNamesAMD +typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC)(GLenum identifier, GLuint name); +GLAPI PFNGLISNAMEAMDPROC glad_glIsNameAMD; +#define glIsNameAMD glad_glIsNameAMD +#endif +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 +GLAPI int GLAD_GL_AMD_occlusion_query_event; +typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC)(GLenum target, GLuint id, GLenum pname, GLuint param); +GLAPI PFNGLQUERYOBJECTPARAMETERUIAMDPROC glad_glQueryObjectParameteruiAMD; +#define glQueryObjectParameteruiAMD glad_glQueryObjectParameteruiAMD +#endif +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +GLAPI int GLAD_GL_AMD_performance_monitor; +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GLAPI PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD; +#define glGetPerfMonitorGroupsAMD glad_glGetPerfMonitorGroupsAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC)(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GLAPI PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD; +#define glGetPerfMonitorCountersAMD glad_glGetPerfMonitorCountersAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GLAPI PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD; +#define glGetPerfMonitorGroupStringAMD glad_glGetPerfMonitorGroupStringAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GLAPI PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD; +#define glGetPerfMonitorCounterStringAMD glad_glGetPerfMonitorCounterStringAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, GLenum pname, void *data); +GLAPI PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD; +#define glGetPerfMonitorCounterInfoAMD glad_glGetPerfMonitorCounterInfoAMD +typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); +GLAPI PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD; +#define glGenPerfMonitorsAMD glad_glGenPerfMonitorsAMD +typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); +GLAPI PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD; +#define glDeletePerfMonitorsAMD glad_glDeletePerfMonitorsAMD +typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GLAPI PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD; +#define glSelectPerfMonitorCountersAMD glad_glSelectPerfMonitorCountersAMD +typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); +GLAPI PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD; +#define glBeginPerfMonitorAMD glad_glBeginPerfMonitorAMD +typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); +GLAPI PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD; +#define glEndPerfMonitorAMD glad_glEndPerfMonitorAMD +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +GLAPI PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD; +#define glGetPerfMonitorCounterDataAMD glad_glGetPerfMonitorCounterDataAMD +#endif +#ifndef GL_AMD_pinned_memory +#define GL_AMD_pinned_memory 1 +GLAPI int GLAD_GL_AMD_pinned_memory; +#endif +#ifndef GL_AMD_query_buffer_object +#define GL_AMD_query_buffer_object 1 +GLAPI int GLAD_GL_AMD_query_buffer_object; +#endif +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 +GLAPI int GLAD_GL_AMD_sample_positions; +typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC)(GLenum pname, GLuint index, const GLfloat *val); +GLAPI PFNGLSETMULTISAMPLEFVAMDPROC glad_glSetMultisamplefvAMD; +#define glSetMultisamplefvAMD glad_glSetMultisamplefvAMD +#endif +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 +GLAPI int GLAD_GL_AMD_seamless_cubemap_per_texture; +#endif +#ifndef GL_AMD_shader_atomic_counter_ops +#define GL_AMD_shader_atomic_counter_ops 1 +GLAPI int GLAD_GL_AMD_shader_atomic_counter_ops; +#endif +#ifndef GL_AMD_shader_ballot +#define GL_AMD_shader_ballot 1 +GLAPI int GLAD_GL_AMD_shader_ballot; +#endif +#ifndef GL_AMD_shader_explicit_vertex_parameter +#define GL_AMD_shader_explicit_vertex_parameter 1 +GLAPI int GLAD_GL_AMD_shader_explicit_vertex_parameter; +#endif +#ifndef GL_AMD_shader_gpu_shader_half_float_fetch +#define GL_AMD_shader_gpu_shader_half_float_fetch 1 +GLAPI int GLAD_GL_AMD_shader_gpu_shader_half_float_fetch; +#endif +#ifndef GL_AMD_shader_image_load_store_lod +#define GL_AMD_shader_image_load_store_lod 1 +GLAPI int GLAD_GL_AMD_shader_image_load_store_lod; +#endif +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 +GLAPI int GLAD_GL_AMD_shader_stencil_export; +#endif +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 +GLAPI int GLAD_GL_AMD_shader_trinary_minmax; +#endif +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 +GLAPI int GLAD_GL_AMD_sparse_texture; +typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC)(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +GLAPI PFNGLTEXSTORAGESPARSEAMDPROC glad_glTexStorageSparseAMD; +#define glTexStorageSparseAMD glad_glTexStorageSparseAMD +typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC)(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +GLAPI PFNGLTEXTURESTORAGESPARSEAMDPROC glad_glTextureStorageSparseAMD; +#define glTextureStorageSparseAMD glad_glTextureStorageSparseAMD +#endif +#ifndef GL_AMD_stencil_operation_extended +#define GL_AMD_stencil_operation_extended 1 +GLAPI int GLAD_GL_AMD_stencil_operation_extended; +typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC)(GLenum face, GLuint value); +GLAPI PFNGLSTENCILOPVALUEAMDPROC glad_glStencilOpValueAMD; +#define glStencilOpValueAMD glad_glStencilOpValueAMD +#endif +#ifndef GL_AMD_texture_gather_bias_lod +#define GL_AMD_texture_gather_bias_lod 1 +GLAPI int GLAD_GL_AMD_texture_gather_bias_lod; +#endif +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 +GLAPI int GLAD_GL_AMD_texture_texture4; +#endif +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 +GLAPI int GLAD_GL_AMD_transform_feedback3_lines_triangles; +#endif +#ifndef GL_AMD_transform_feedback4 +#define GL_AMD_transform_feedback4 1 +GLAPI int GLAD_GL_AMD_transform_feedback4; +#endif +#ifndef GL_AMD_vertex_shader_layer +#define GL_AMD_vertex_shader_layer 1 +GLAPI int GLAD_GL_AMD_vertex_shader_layer; +#endif +#ifndef GL_AMD_vertex_shader_tessellator +#define GL_AMD_vertex_shader_tessellator 1 +GLAPI int GLAD_GL_AMD_vertex_shader_tessellator; +typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC)(GLfloat factor); +GLAPI PFNGLTESSELLATIONFACTORAMDPROC glad_glTessellationFactorAMD; +#define glTessellationFactorAMD glad_glTessellationFactorAMD +typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC)(GLenum mode); +GLAPI PFNGLTESSELLATIONMODEAMDPROC glad_glTessellationModeAMD; +#define glTessellationModeAMD glad_glTessellationModeAMD +#endif +#ifndef GL_AMD_vertex_shader_viewport_index +#define GL_AMD_vertex_shader_viewport_index 1 +GLAPI int GLAD_GL_AMD_vertex_shader_viewport_index; +#endif +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 +GLAPI int GLAD_GL_APPLE_aux_depth_stencil; +#endif +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 +GLAPI int GLAD_GL_APPLE_client_storage; +#endif +#ifndef GL_APPLE_element_array +#define GL_APPLE_element_array 1 +GLAPI int GLAD_GL_APPLE_element_array; +typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC)(GLenum type, const void *pointer); +GLAPI PFNGLELEMENTPOINTERAPPLEPROC glad_glElementPointerAPPLE; +#define glElementPointerAPPLE glad_glElementPointerAPPLE +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, GLint first, GLsizei count); +GLAPI PFNGLDRAWELEMENTARRAYAPPLEPROC glad_glDrawElementArrayAPPLE; +#define glDrawElementArrayAPPLE glad_glDrawElementArrayAPPLE +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +GLAPI PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC glad_glDrawRangeElementArrayAPPLE; +#define glDrawRangeElementArrayAPPLE glad_glDrawRangeElementArrayAPPLE +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC glad_glMultiDrawElementArrayAPPLE; +#define glMultiDrawElementArrayAPPLE glad_glMultiDrawElementArrayAPPLE +typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC glad_glMultiDrawRangeElementArrayAPPLE; +#define glMultiDrawRangeElementArrayAPPLE glad_glMultiDrawRangeElementArrayAPPLE +#endif +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 +GLAPI int GLAD_GL_APPLE_fence; +typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC)(GLsizei n, GLuint *fences); +GLAPI PFNGLGENFENCESAPPLEPROC glad_glGenFencesAPPLE; +#define glGenFencesAPPLE glad_glGenFencesAPPLE +typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC)(GLsizei n, const GLuint *fences); +GLAPI PFNGLDELETEFENCESAPPLEPROC glad_glDeleteFencesAPPLE; +#define glDeleteFencesAPPLE glad_glDeleteFencesAPPLE +typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC)(GLuint fence); +GLAPI PFNGLSETFENCEAPPLEPROC glad_glSetFenceAPPLE; +#define glSetFenceAPPLE glad_glSetFenceAPPLE +typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC)(GLuint fence); +GLAPI PFNGLISFENCEAPPLEPROC glad_glIsFenceAPPLE; +#define glIsFenceAPPLE glad_glIsFenceAPPLE +typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC)(GLuint fence); +GLAPI PFNGLTESTFENCEAPPLEPROC glad_glTestFenceAPPLE; +#define glTestFenceAPPLE glad_glTestFenceAPPLE +typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC)(GLuint fence); +GLAPI PFNGLFINISHFENCEAPPLEPROC glad_glFinishFenceAPPLE; +#define glFinishFenceAPPLE glad_glFinishFenceAPPLE +typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC)(GLenum object, GLuint name); +GLAPI PFNGLTESTOBJECTAPPLEPROC glad_glTestObjectAPPLE; +#define glTestObjectAPPLE glad_glTestObjectAPPLE +typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC)(GLenum object, GLint name); +GLAPI PFNGLFINISHOBJECTAPPLEPROC glad_glFinishObjectAPPLE; +#define glFinishObjectAPPLE glad_glFinishObjectAPPLE +#endif +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +GLAPI int GLAD_GL_APPLE_float_pixels; +#endif +#ifndef GL_APPLE_flush_buffer_range +#define GL_APPLE_flush_buffer_range 1 +GLAPI int GLAD_GL_APPLE_flush_buffer_range; +typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLBUFFERPARAMETERIAPPLEPROC glad_glBufferParameteriAPPLE; +#define glBufferParameteriAPPLE glad_glBufferParameteriAPPLE +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)(GLenum target, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glad_glFlushMappedBufferRangeAPPLE; +#define glFlushMappedBufferRangeAPPLE glad_glFlushMappedBufferRangeAPPLE +#endif +#ifndef GL_APPLE_object_purgeable +#define GL_APPLE_object_purgeable 1 +GLAPI int GLAD_GL_APPLE_object_purgeable; +typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, GLenum option); +GLAPI PFNGLOBJECTPURGEABLEAPPLEPROC glad_glObjectPurgeableAPPLE; +#define glObjectPurgeableAPPLE glad_glObjectPurgeableAPPLE +typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, GLenum option); +GLAPI PFNGLOBJECTUNPURGEABLEAPPLEPROC glad_glObjectUnpurgeableAPPLE; +#define glObjectUnpurgeableAPPLE glad_glObjectUnpurgeableAPPLE +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC)(GLenum objectType, GLuint name, GLenum pname, GLint *params); +GLAPI PFNGLGETOBJECTPARAMETERIVAPPLEPROC glad_glGetObjectParameterivAPPLE; +#define glGetObjectParameterivAPPLE glad_glGetObjectParameterivAPPLE +#endif +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +GLAPI int GLAD_GL_APPLE_rgb_422; +#endif +#ifndef GL_APPLE_row_bytes +#define GL_APPLE_row_bytes 1 +GLAPI int GLAD_GL_APPLE_row_bytes; +#endif +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +GLAPI int GLAD_GL_APPLE_specular_vector; +#endif +#ifndef GL_APPLE_texture_range +#define GL_APPLE_texture_range 1 +GLAPI int GLAD_GL_APPLE_texture_range; +typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC)(GLenum target, GLsizei length, const void *pointer); +GLAPI PFNGLTEXTURERANGEAPPLEPROC glad_glTextureRangeAPPLE; +#define glTextureRangeAPPLE glad_glTextureRangeAPPLE +typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)(GLenum target, GLenum pname, void **params); +GLAPI PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC glad_glGetTexParameterPointervAPPLE; +#define glGetTexParameterPointervAPPLE glad_glGetTexParameterPointervAPPLE +#endif +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +GLAPI int GLAD_GL_APPLE_transform_hint; +#endif +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 +GLAPI int GLAD_GL_APPLE_vertex_array_object; +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC)(GLuint array); +GLAPI PFNGLBINDVERTEXARRAYAPPLEPROC glad_glBindVertexArrayAPPLE; +#define glBindVertexArrayAPPLE glad_glBindVertexArrayAPPLE +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC)(GLsizei n, const GLuint *arrays); +GLAPI PFNGLDELETEVERTEXARRAYSAPPLEPROC glad_glDeleteVertexArraysAPPLE; +#define glDeleteVertexArraysAPPLE glad_glDeleteVertexArraysAPPLE +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC)(GLsizei n, GLuint *arrays); +GLAPI PFNGLGENVERTEXARRAYSAPPLEPROC glad_glGenVertexArraysAPPLE; +#define glGenVertexArraysAPPLE glad_glGenVertexArraysAPPLE +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC)(GLuint array); +GLAPI PFNGLISVERTEXARRAYAPPLEPROC glad_glIsVertexArrayAPPLE; +#define glIsVertexArrayAPPLE glad_glIsVertexArrayAPPLE +#endif +#ifndef GL_APPLE_vertex_array_range +#define GL_APPLE_vertex_array_range 1 +GLAPI int GLAD_GL_APPLE_vertex_array_range; +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); +GLAPI PFNGLVERTEXARRAYRANGEAPPLEPROC glad_glVertexArrayRangeAPPLE; +#define glVertexArrayRangeAPPLE glad_glVertexArrayRangeAPPLE +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); +GLAPI PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC glad_glFlushVertexArrayRangeAPPLE; +#define glFlushVertexArrayRangeAPPLE glad_glFlushVertexArrayRangeAPPLE +typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)(GLenum pname, GLint param); +GLAPI PFNGLVERTEXARRAYPARAMETERIAPPLEPROC glad_glVertexArrayParameteriAPPLE; +#define glVertexArrayParameteriAPPLE glad_glVertexArrayParameteriAPPLE +#endif +#ifndef GL_APPLE_vertex_program_evaluators +#define GL_APPLE_vertex_program_evaluators 1 +GLAPI int GLAD_GL_APPLE_vertex_program_evaluators; +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +GLAPI PFNGLENABLEVERTEXATTRIBAPPLEPROC glad_glEnableVertexAttribAPPLE; +#define glEnableVertexAttribAPPLE glad_glEnableVertexAttribAPPLE +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +GLAPI PFNGLDISABLEVERTEXATTRIBAPPLEPROC glad_glDisableVertexAttribAPPLE; +#define glDisableVertexAttribAPPLE glad_glDisableVertexAttribAPPLE +typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)(GLuint index, GLenum pname); +GLAPI PFNGLISVERTEXATTRIBENABLEDAPPLEPROC glad_glIsVertexAttribEnabledAPPLE; +#define glIsVertexAttribEnabledAPPLE glad_glIsVertexAttribEnabledAPPLE +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +GLAPI PFNGLMAPVERTEXATTRIB1DAPPLEPROC glad_glMapVertexAttrib1dAPPLE; +#define glMapVertexAttrib1dAPPLE glad_glMapVertexAttrib1dAPPLE +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +GLAPI PFNGLMAPVERTEXATTRIB1FAPPLEPROC glad_glMapVertexAttrib1fAPPLE; +#define glMapVertexAttrib1fAPPLE glad_glMapVertexAttrib1fAPPLE +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +GLAPI PFNGLMAPVERTEXATTRIB2DAPPLEPROC glad_glMapVertexAttrib2dAPPLE; +#define glMapVertexAttrib2dAPPLE glad_glMapVertexAttrib2dAPPLE +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +GLAPI PFNGLMAPVERTEXATTRIB2FAPPLEPROC glad_glMapVertexAttrib2fAPPLE; +#define glMapVertexAttrib2fAPPLE glad_glMapVertexAttrib2fAPPLE +#endif +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 +GLAPI int GLAD_GL_APPLE_ycbcr_422; +#endif +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 +GLAPI int GLAD_GL_ARB_ES2_compatibility; +#endif +#ifndef GL_ARB_ES3_1_compatibility +#define GL_ARB_ES3_1_compatibility 1 +GLAPI int GLAD_GL_ARB_ES3_1_compatibility; +typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); +GLAPI PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion; +#define glMemoryBarrierByRegion glad_glMemoryBarrierByRegion +#endif +#ifndef GL_ARB_ES3_2_compatibility +#define GL_ARB_ES3_2_compatibility 1 +GLAPI int GLAD_GL_ARB_ES3_2_compatibility; +typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +GLAPI PFNGLPRIMITIVEBOUNDINGBOXARBPROC glad_glPrimitiveBoundingBoxARB; +#define glPrimitiveBoundingBoxARB glad_glPrimitiveBoundingBoxARB +#endif +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 +GLAPI int GLAD_GL_ARB_ES3_compatibility; +#endif +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 +GLAPI int GLAD_GL_ARB_arrays_of_arrays; +#endif +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 +GLAPI int GLAD_GL_ARB_base_instance; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GLAPI PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance; +#define glDrawArraysInstancedBaseInstance glad_glDrawArraysInstancedBaseInstance +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance; +#define glDrawElementsInstancedBaseInstance glad_glDrawElementsInstancedBaseInstance +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance; +#define glDrawElementsInstancedBaseVertexBaseInstance glad_glDrawElementsInstancedBaseVertexBaseInstance +#endif +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 +GLAPI int GLAD_GL_ARB_bindless_texture; +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC)(GLuint texture); +GLAPI PFNGLGETTEXTUREHANDLEARBPROC glad_glGetTextureHandleARB; +#define glGetTextureHandleARB glad_glGetTextureHandleARB +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC)(GLuint texture, GLuint sampler); +GLAPI PFNGLGETTEXTURESAMPLERHANDLEARBPROC glad_glGetTextureSamplerHandleARB; +#define glGetTextureSamplerHandleARB glad_glGetTextureSamplerHandleARB +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glad_glMakeTextureHandleResidentARB; +#define glMakeTextureHandleResidentARB glad_glMakeTextureHandleResidentARB +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glad_glMakeTextureHandleNonResidentARB; +#define glMakeTextureHandleNonResidentARB glad_glMakeTextureHandleNonResidentARB +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI PFNGLGETIMAGEHANDLEARBPROC glad_glGetImageHandleARB; +#define glGetImageHandleARB glad_glGetImageHandleARB +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle, GLenum access); +GLAPI PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glad_glMakeImageHandleResidentARB; +#define glMakeImageHandleResidentARB glad_glMakeImageHandleResidentARB +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glad_glMakeImageHandleNonResidentARB; +#define glMakeImageHandleNonResidentARB glad_glMakeImageHandleNonResidentARB +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC)(GLint location, GLuint64 value); +GLAPI PFNGLUNIFORMHANDLEUI64ARBPROC glad_glUniformHandleui64ARB; +#define glUniformHandleui64ARB glad_glUniformHandleui64ARB +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORMHANDLEUI64VARBPROC glad_glUniformHandleui64vARB; +#define glUniformHandleui64vARB glad_glUniformHandleui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)(GLuint program, GLint location, GLuint64 value); +GLAPI PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glad_glProgramUniformHandleui64ARB; +#define glProgramUniformHandleui64ARB glad_glProgramUniformHandleui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glad_glProgramUniformHandleui64vARB; +#define glProgramUniformHandleui64vARB glad_glProgramUniformHandleui64vARB +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLISTEXTUREHANDLERESIDENTARBPROC glad_glIsTextureHandleResidentARB; +#define glIsTextureHandleResidentARB glad_glIsTextureHandleResidentARB +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle); +GLAPI PFNGLISIMAGEHANDLERESIDENTARBPROC glad_glIsImageHandleResidentARB; +#define glIsImageHandleResidentARB glad_glIsImageHandleResidentARB +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC)(GLuint index, GLuint64EXT x); +GLAPI PFNGLVERTEXATTRIBL1UI64ARBPROC glad_glVertexAttribL1ui64ARB; +#define glVertexAttribL1ui64ARB glad_glVertexAttribL1ui64ARB +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL1UI64VARBPROC glad_glVertexAttribL1ui64vARB; +#define glVertexAttribL1ui64vARB glad_glVertexAttribL1ui64vARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC)(GLuint index, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETVERTEXATTRIBLUI64VARBPROC glad_glGetVertexAttribLui64vARB; +#define glGetVertexAttribLui64vARB glad_glGetVertexAttribLui64vARB +#endif +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 +GLAPI int GLAD_GL_ARB_blend_func_extended; +#endif +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 +GLAPI int GLAD_GL_ARB_buffer_storage; +typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI PFNGLBUFFERSTORAGEPROC glad_glBufferStorage; +#define glBufferStorage glad_glBufferStorage +#endif +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 +GLAPI int GLAD_GL_ARB_cl_event; +typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC)(struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +GLAPI PFNGLCREATESYNCFROMCLEVENTARBPROC glad_glCreateSyncFromCLeventARB; +#define glCreateSyncFromCLeventARB glad_glCreateSyncFromCLeventARB +#endif +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 +GLAPI int GLAD_GL_ARB_clear_buffer_object; +typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData; +#define glClearBufferData glad_glClearBufferData +typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData; +#define glClearBufferSubData glad_glClearBufferSubData +#endif +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 +GLAPI int GLAD_GL_ARB_clear_texture; +typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage; +#define glClearTexImage glad_glClearTexImage +typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage; +#define glClearTexSubImage glad_glClearTexSubImage +#endif +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 +GLAPI int GLAD_GL_ARB_clip_control; +typedef void (APIENTRYP PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); +GLAPI PFNGLCLIPCONTROLPROC glad_glClipControl; +#define glClipControl glad_glClipControl +#endif +#ifndef GL_ARB_color_buffer_float +#define GL_ARB_color_buffer_float 1 +GLAPI int GLAD_GL_ARB_color_buffer_float; +typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC)(GLenum target, GLenum clamp); +GLAPI PFNGLCLAMPCOLORARBPROC glad_glClampColorARB; +#define glClampColorARB glad_glClampColorARB +#endif +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 +GLAPI int GLAD_GL_ARB_compatibility; +#endif +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 1 +GLAPI int GLAD_GL_ARB_compressed_texture_pixel_storage; +#endif +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 +GLAPI int GLAD_GL_ARB_compute_shader; +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +GLAPI PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute; +#define glDispatchCompute glad_glDispatchCompute +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); +GLAPI PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect; +#define glDispatchComputeIndirect glad_glDispatchComputeIndirect +#endif +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 +GLAPI int GLAD_GL_ARB_compute_variable_group_size; +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +GLAPI PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glad_glDispatchComputeGroupSizeARB; +#define glDispatchComputeGroupSizeARB glad_glDispatchComputeGroupSizeARB +#endif +#ifndef GL_ARB_conditional_render_inverted +#define GL_ARB_conditional_render_inverted 1 +GLAPI int GLAD_GL_ARB_conditional_render_inverted; +#endif +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 +GLAPI int GLAD_GL_ARB_conservative_depth; +#endif +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 +GLAPI int GLAD_GL_ARB_copy_buffer; +#endif +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 +GLAPI int GLAD_GL_ARB_copy_image; +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +GLAPI PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData; +#define glCopyImageSubData glad_glCopyImageSubData +#endif +#ifndef GL_ARB_cull_distance +#define GL_ARB_cull_distance 1 +GLAPI int GLAD_GL_ARB_cull_distance; +#endif +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 +GLAPI int GLAD_GL_ARB_debug_output; +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB; +#define glDebugMessageControlARB glad_glDebugMessageControlARB +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB; +#define glDebugMessageInsertARB glad_glDebugMessageInsertARB +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, const void *userParam); +GLAPI PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB; +#define glDebugMessageCallbackARB glad_glDebugMessageCallbackARB +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB; +#define glGetDebugMessageLogARB glad_glGetDebugMessageLogARB +#endif +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 +GLAPI int GLAD_GL_ARB_depth_buffer_float; +#endif +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +GLAPI int GLAD_GL_ARB_depth_clamp; +#endif +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +GLAPI int GLAD_GL_ARB_depth_texture; +#endif +#ifndef GL_ARB_derivative_control +#define GL_ARB_derivative_control 1 +GLAPI int GLAD_GL_ARB_derivative_control; +#endif +#ifndef GL_ARB_direct_state_access +#define GL_ARB_direct_state_access 1 +GLAPI int GLAD_GL_ARB_direct_state_access; +typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks; +#define glCreateTransformFeedbacks glad_glCreateTransformFeedbacks +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, GLuint buffer); +GLAPI PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase; +#define glTransformFeedbackBufferBase glad_glTransformFeedbackBufferBase +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange; +#define glTransformFeedbackBufferRange glad_glTransformFeedbackBufferRange +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint *param); +GLAPI PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv; +#define glGetTransformFeedbackiv glad_glGetTransformFeedbackiv +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint *param); +GLAPI PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v; +#define glGetTransformFeedbacki_v glad_glGetTransformFeedbacki_v +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); +GLAPI PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v; +#define glGetTransformFeedbacki64_v glad_glGetTransformFeedbacki64_v +typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint *buffers); +GLAPI PFNGLCREATEBUFFERSPROC glad_glCreateBuffers; +#define glCreateBuffers glad_glCreateBuffers +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage; +#define glNamedBufferStorage glad_glNamedBufferStorage +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData; +#define glNamedBufferData glad_glNamedBufferData +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData; +#define glNamedBufferSubData glad_glNamedBufferSubData +typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData; +#define glCopyNamedBufferSubData glad_glCopyNamedBufferSubData +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData; +#define glClearNamedBufferData glad_glClearNamedBufferData +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData; +#define glClearNamedBufferSubData glad_glClearNamedBufferSubData +typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); +GLAPI PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer; +#define glMapNamedBuffer glad_glMapNamedBuffer +typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange; +#define glMapNamedBufferRange glad_glMapNamedBufferRange +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); +GLAPI PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer; +#define glUnmapNamedBuffer glad_glUnmapNamedBuffer +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange; +#define glFlushMappedNamedBufferRange glad_glFlushMappedNamedBufferRange +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv; +#define glGetNamedBufferParameteriv glad_glGetNamedBufferParameteriv +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, GLint64 *params); +GLAPI PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v; +#define glGetNamedBufferParameteri64v glad_glGetNamedBufferParameteri64v +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, void **params); +GLAPI PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv; +#define glGetNamedBufferPointerv glad_glGetNamedBufferPointerv +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData; +#define glGetNamedBufferSubData glad_glGetNamedBufferSubData +typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +GLAPI PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers; +#define glCreateFramebuffers glad_glCreateFramebuffers +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer; +#define glNamedFramebufferRenderbuffer glad_glNamedFramebufferRenderbuffer +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, GLint param); +GLAPI PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri; +#define glNamedFramebufferParameteri glad_glNamedFramebufferParameteri +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture; +#define glNamedFramebufferTexture glad_glNamedFramebufferTexture +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer; +#define glNamedFramebufferTextureLayer glad_glNamedFramebufferTextureLayer +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); +GLAPI PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer; +#define glNamedFramebufferDrawBuffer glad_glNamedFramebufferDrawBuffer +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers; +#define glNamedFramebufferDrawBuffers glad_glNamedFramebufferDrawBuffers +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); +GLAPI PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer; +#define glNamedFramebufferReadBuffer glad_glNamedFramebufferReadBuffer +typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); +GLAPI PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData; +#define glInvalidateNamedFramebufferData glad_glInvalidateNamedFramebufferData +typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData; +#define glInvalidateNamedFramebufferSubData glad_glInvalidateNamedFramebufferSubData +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv; +#define glClearNamedFramebufferiv glad_glClearNamedFramebufferiv +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv; +#define glClearNamedFramebufferuiv glad_glClearNamedFramebufferuiv +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv; +#define glClearNamedFramebufferfv glad_glClearNamedFramebufferfv +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi; +#define glClearNamedFramebufferfi glad_glClearNamedFramebufferfi +typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer; +#define glBlitNamedFramebuffer glad_glBlitNamedFramebuffer +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, GLenum target); +GLAPI PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus; +#define glCheckNamedFramebufferStatus glad_glCheckNamedFramebufferStatus +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, GLenum pname, GLint *param); +GLAPI PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv; +#define glGetNamedFramebufferParameteriv glad_glGetNamedFramebufferParameteriv +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv; +#define glGetNamedFramebufferAttachmentParameteriv glad_glGetNamedFramebufferAttachmentParameteriv +typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +GLAPI PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers; +#define glCreateRenderbuffers glad_glCreateRenderbuffers +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage; +#define glNamedRenderbufferStorage glad_glNamedRenderbufferStorage +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample; +#define glNamedRenderbufferStorageMultisample glad_glNamedRenderbufferStorageMultisample +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv; +#define glGetNamedRenderbufferParameteriv glad_glGetNamedRenderbufferParameteriv +typedef void (APIENTRYP PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint *textures); +GLAPI PFNGLCREATETEXTURESPROC glad_glCreateTextures; +#define glCreateTextures glad_glCreateTextures +typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer; +#define glTextureBuffer glad_glTextureBuffer +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange; +#define glTextureBufferRange glad_glTextureBufferRange +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D; +#define glTextureStorage1D glad_glTextureStorage1D +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D; +#define glTextureStorage2D glad_glTextureStorage2D +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D; +#define glTextureStorage3D glad_glTextureStorage3D +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample; +#define glTextureStorage2DMultisample glad_glTextureStorage2DMultisample +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample; +#define glTextureStorage3DMultisample glad_glTextureStorage3DMultisample +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D; +#define glTextureSubImage1D glad_glTextureSubImage1D +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D; +#define glTextureSubImage2D glad_glTextureSubImage2D +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D; +#define glTextureSubImage3D glad_glTextureSubImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D; +#define glCompressedTextureSubImage1D glad_glCompressedTextureSubImage1D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D; +#define glCompressedTextureSubImage2D glad_glCompressedTextureSubImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D; +#define glCompressedTextureSubImage3D glad_glCompressedTextureSubImage3D +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D; +#define glCopyTextureSubImage1D glad_glCopyTextureSubImage1D +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D; +#define glCopyTextureSubImage2D glad_glCopyTextureSubImage2D +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D; +#define glCopyTextureSubImage3D glad_glCopyTextureSubImage3D +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); +GLAPI PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf; +#define glTextureParameterf glad_glTextureParameterf +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, const GLfloat *param); +GLAPI PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv; +#define glTextureParameterfv glad_glTextureParameterfv +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); +GLAPI PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri; +#define glTextureParameteri glad_glTextureParameteri +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, const GLint *params); +GLAPI PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv; +#define glTextureParameterIiv glad_glTextureParameterIiv +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv; +#define glTextureParameterIuiv glad_glTextureParameterIuiv +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, const GLint *param); +GLAPI PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv; +#define glTextureParameteriv glad_glTextureParameteriv +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); +GLAPI PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap; +#define glGenerateTextureMipmap glad_glGenerateTextureMipmap +typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); +GLAPI PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit; +#define glBindTextureUnit glad_glBindTextureUnit +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage; +#define glGetTextureImage glad_glGetTextureImage +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLsizei bufSize, void *pixels); +GLAPI PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage; +#define glGetCompressedTextureImage glad_glGetCompressedTextureImage +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv; +#define glGetTextureLevelParameterfv glad_glGetTextureLevelParameterfv +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv; +#define glGetTextureLevelParameteriv glad_glGetTextureLevelParameteriv +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv; +#define glGetTextureParameterfv glad_glGetTextureParameterfv +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv; +#define glGetTextureParameterIiv glad_glGetTextureParameterIiv +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv; +#define glGetTextureParameterIuiv glad_glGetTextureParameterIuiv +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv; +#define glGetTextureParameteriv glad_glGetTextureParameteriv +typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +GLAPI PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays; +#define glCreateVertexArrays glad_glCreateVertexArrays +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +GLAPI PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib; +#define glDisableVertexArrayAttrib glad_glDisableVertexArrayAttrib +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +GLAPI PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib; +#define glEnableVertexArrayAttrib glad_glEnableVertexArrayAttrib +typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); +GLAPI PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer; +#define glVertexArrayElementBuffer glad_glVertexArrayElementBuffer +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer; +#define glVertexArrayVertexBuffer glad_glVertexArrayVertexBuffer +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +GLAPI PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers; +#define glVertexArrayVertexBuffers glad_glVertexArrayVertexBuffers +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding; +#define glVertexArrayAttribBinding glad_glVertexArrayAttribBinding +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat; +#define glVertexArrayAttribFormat glad_glVertexArrayAttribFormat +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat; +#define glVertexArrayAttribIFormat glad_glVertexArrayAttribIFormat +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat; +#define glVertexArrayAttribLFormat glad_glVertexArrayAttribLFormat +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); +GLAPI PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor; +#define glVertexArrayBindingDivisor glad_glVertexArrayBindingDivisor +typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint *param); +GLAPI PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv; +#define glGetVertexArrayiv glad_glGetVertexArrayiv +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv; +#define glGetVertexArrayIndexediv glad_glGetVertexArrayIndexediv +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); +GLAPI PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv; +#define glGetVertexArrayIndexed64iv glad_glGetVertexArrayIndexed64iv +typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint *samplers); +GLAPI PFNGLCREATESAMPLERSPROC glad_glCreateSamplers; +#define glCreateSamplers glad_glCreateSamplers +typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +GLAPI PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines; +#define glCreateProgramPipelines glad_glCreateProgramPipelines +typedef void (APIENTRYP PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint *ids); +GLAPI PFNGLCREATEQUERIESPROC glad_glCreateQueries; +#define glCreateQueries glad_glCreateQueries +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v; +#define glGetQueryBufferObjecti64v glad_glGetQueryBufferObjecti64v +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv; +#define glGetQueryBufferObjectiv glad_glGetQueryBufferObjectiv +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v; +#define glGetQueryBufferObjectui64v glad_glGetQueryBufferObjectui64v +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv; +#define glGetQueryBufferObjectuiv glad_glGetQueryBufferObjectuiv +#endif +#ifndef GL_ARB_draw_buffers +#define GL_ARB_draw_buffers 1 +GLAPI int GLAD_GL_ARB_draw_buffers; +typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC)(GLsizei n, const GLenum *bufs); +GLAPI PFNGLDRAWBUFFERSARBPROC glad_glDrawBuffersARB; +#define glDrawBuffersARB glad_glDrawBuffersARB +#endif +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 +GLAPI int GLAD_GL_ARB_draw_buffers_blend; +typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC)(GLuint buf, GLenum mode); +GLAPI PFNGLBLENDEQUATIONIARBPROC glad_glBlendEquationiARB; +#define glBlendEquationiARB glad_glBlendEquationiARB +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEIARBPROC glad_glBlendEquationSeparateiARB; +#define glBlendEquationSeparateiARB glad_glBlendEquationSeparateiARB +typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC)(GLuint buf, GLenum src, GLenum dst); +GLAPI PFNGLBLENDFUNCIARBPROC glad_glBlendFunciARB; +#define glBlendFunciARB glad_glBlendFunciARB +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEIARBPROC glad_glBlendFuncSeparateiARB; +#define glBlendFuncSeparateiARB glad_glBlendFuncSeparateiARB +#endif +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +GLAPI int GLAD_GL_ARB_draw_elements_base_vertex; +#endif +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 +GLAPI int GLAD_GL_ARB_draw_indirect; +#endif +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 +GLAPI int GLAD_GL_ARB_draw_instanced; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GLAPI PFNGLDRAWARRAYSINSTANCEDARBPROC glad_glDrawArraysInstancedARB; +#define glDrawArraysInstancedARB glad_glDrawArraysInstancedARB +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GLAPI PFNGLDRAWELEMENTSINSTANCEDARBPROC glad_glDrawElementsInstancedARB; +#define glDrawElementsInstancedARB glad_glDrawElementsInstancedARB +#endif +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 +GLAPI int GLAD_GL_ARB_enhanced_layouts; +#endif +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 +GLAPI int GLAD_GL_ARB_explicit_attrib_location; +#endif +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 +GLAPI int GLAD_GL_ARB_explicit_uniform_location; +#endif +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +GLAPI int GLAD_GL_ARB_fragment_coord_conventions; +#endif +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 +GLAPI int GLAD_GL_ARB_fragment_layer_viewport; +#endif +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 +GLAPI int GLAD_GL_ARB_fragment_program; +typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI PFNGLPROGRAMSTRINGARBPROC glad_glProgramStringARB; +#define glProgramStringARB glad_glProgramStringARB +typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program); +GLAPI PFNGLBINDPROGRAMARBPROC glad_glBindProgramARB; +#define glBindProgramARB glad_glBindProgramARB +typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint *programs); +GLAPI PFNGLDELETEPROGRAMSARBPROC glad_glDeleteProgramsARB; +#define glDeleteProgramsARB glad_glDeleteProgramsARB +typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint *programs); +GLAPI PFNGLGENPROGRAMSARBPROC glad_glGenProgramsARB; +#define glGenProgramsARB glad_glGenProgramsARB +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMENVPARAMETER4DARBPROC glad_glProgramEnvParameter4dARB; +#define glProgramEnvParameter4dARB glad_glProgramEnvParameter4dARB +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble *params); +GLAPI PFNGLPROGRAMENVPARAMETER4DVARBPROC glad_glProgramEnvParameter4dvARB; +#define glProgramEnvParameter4dvARB glad_glProgramEnvParameter4dvARB +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLPROGRAMENVPARAMETER4FARBPROC glad_glProgramEnvParameter4fARB; +#define glProgramEnvParameter4fARB glad_glProgramEnvParameter4fARB +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat *params); +GLAPI PFNGLPROGRAMENVPARAMETER4FVARBPROC glad_glProgramEnvParameter4fvARB; +#define glProgramEnvParameter4fvARB glad_glProgramEnvParameter4fvARB +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMLOCALPARAMETER4DARBPROC glad_glProgramLocalParameter4dARB; +#define glProgramLocalParameter4dARB glad_glProgramLocalParameter4dARB +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble *params); +GLAPI PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glad_glProgramLocalParameter4dvARB; +#define glProgramLocalParameter4dvARB glad_glProgramLocalParameter4dvARB +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLPROGRAMLOCALPARAMETER4FARBPROC glad_glProgramLocalParameter4fARB; +#define glProgramLocalParameter4fARB glad_glProgramLocalParameter4fARB +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat *params); +GLAPI PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glad_glProgramLocalParameter4fvARB; +#define glProgramLocalParameter4fvARB glad_glProgramLocalParameter4fvARB +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble *params); +GLAPI PFNGLGETPROGRAMENVPARAMETERDVARBPROC glad_glGetProgramEnvParameterdvARB; +#define glGetProgramEnvParameterdvARB glad_glGetProgramEnvParameterdvARB +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat *params); +GLAPI PFNGLGETPROGRAMENVPARAMETERFVARBPROC glad_glGetProgramEnvParameterfvARB; +#define glGetProgramEnvParameterfvARB glad_glGetProgramEnvParameterfvARB +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble *params); +GLAPI PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glad_glGetProgramLocalParameterdvARB; +#define glGetProgramLocalParameterdvARB glad_glGetProgramLocalParameterdvARB +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat *params); +GLAPI PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glad_glGetProgramLocalParameterfvARB; +#define glGetProgramLocalParameterfvARB glad_glGetProgramLocalParameterfvARB +typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMIVARBPROC glad_glGetProgramivARB; +#define glGetProgramivARB glad_glGetProgramivARB +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, void *string); +GLAPI PFNGLGETPROGRAMSTRINGARBPROC glad_glGetProgramStringARB; +#define glGetProgramStringARB glad_glGetProgramStringARB +typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC)(GLuint program); +GLAPI PFNGLISPROGRAMARBPROC glad_glIsProgramARB; +#define glIsProgramARB glad_glIsProgramARB +#endif +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 +GLAPI int GLAD_GL_ARB_fragment_program_shadow; +#endif +#ifndef GL_ARB_fragment_shader +#define GL_ARB_fragment_shader 1 +GLAPI int GLAD_GL_ARB_fragment_shader; +#endif +#ifndef GL_ARB_fragment_shader_interlock +#define GL_ARB_fragment_shader_interlock 1 +GLAPI int GLAD_GL_ARB_fragment_shader_interlock; +#endif +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 +GLAPI int GLAD_GL_ARB_framebuffer_no_attachments; +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri; +#define glFramebufferParameteri glad_glFramebufferParameteri +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv; +#define glGetFramebufferParameteriv glad_glGetFramebufferParameteriv +#endif +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 +GLAPI int GLAD_GL_ARB_framebuffer_object; +#endif +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 +GLAPI int GLAD_GL_ARB_framebuffer_sRGB; +#endif +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 +GLAPI int GLAD_GL_ARB_geometry_shader4; +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, GLint value); +GLAPI PFNGLPROGRAMPARAMETERIARBPROC glad_glProgramParameteriARB; +#define glProgramParameteriARB glad_glProgramParameteriARB +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTUREARBPROC glad_glFramebufferTextureARB; +#define glFramebufferTextureARB glad_glFramebufferTextureARB +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYERARBPROC glad_glFramebufferTextureLayerARB; +#define glFramebufferTextureLayerARB glad_glFramebufferTextureLayerARB +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI PFNGLFRAMEBUFFERTEXTUREFACEARBPROC glad_glFramebufferTextureFaceARB; +#define glFramebufferTextureFaceARB glad_glFramebufferTextureFaceARB +#endif +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 +GLAPI int GLAD_GL_ARB_get_program_binary; +#endif +#ifndef GL_ARB_get_texture_sub_image +#define GL_ARB_get_texture_sub_image 1 +GLAPI int GLAD_GL_ARB_get_texture_sub_image; +typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage; +#define glGetTextureSubImage glad_glGetTextureSubImage +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); +GLAPI PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; +#define glGetCompressedTextureSubImage glad_glGetCompressedTextureSubImage +#endif +#ifndef GL_ARB_gl_spirv +#define GL_ARB_gl_spirv 1 +GLAPI int GLAD_GL_ARB_gl_spirv; +typedef void (APIENTRYP PFNGLSPECIALIZESHADERARBPROC)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +GLAPI PFNGLSPECIALIZESHADERARBPROC glad_glSpecializeShaderARB; +#define glSpecializeShaderARB glad_glSpecializeShaderARB +#endif +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 +GLAPI int GLAD_GL_ARB_gpu_shader5; +#endif +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 +GLAPI int GLAD_GL_ARB_gpu_shader_fp64; +#endif +#ifndef GL_ARB_gpu_shader_int64 +#define GL_ARB_gpu_shader_int64 1 +GLAPI int GLAD_GL_ARB_gpu_shader_int64; +typedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC)(GLint location, GLint64 x); +GLAPI PFNGLUNIFORM1I64ARBPROC glad_glUniform1i64ARB; +#define glUniform1i64ARB glad_glUniform1i64ARB +typedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC)(GLint location, GLint64 x, GLint64 y); +GLAPI PFNGLUNIFORM2I64ARBPROC glad_glUniform2i64ARB; +#define glUniform2i64ARB glad_glUniform2i64ARB +typedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI PFNGLUNIFORM3I64ARBPROC glad_glUniform3i64ARB; +#define glUniform3i64ARB glad_glUniform3i64ARB +typedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI PFNGLUNIFORM4I64ARBPROC glad_glUniform4i64ARB; +#define glUniform4i64ARB glad_glUniform4i64ARB +typedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC)(GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLUNIFORM1I64VARBPROC glad_glUniform1i64vARB; +#define glUniform1i64vARB glad_glUniform1i64vARB +typedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC)(GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLUNIFORM2I64VARBPROC glad_glUniform2i64vARB; +#define glUniform2i64vARB glad_glUniform2i64vARB +typedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC)(GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLUNIFORM3I64VARBPROC glad_glUniform3i64vARB; +#define glUniform3i64vARB glad_glUniform3i64vARB +typedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC)(GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLUNIFORM4I64VARBPROC glad_glUniform4i64vARB; +#define glUniform4i64vARB glad_glUniform4i64vARB +typedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC)(GLint location, GLuint64 x); +GLAPI PFNGLUNIFORM1UI64ARBPROC glad_glUniform1ui64ARB; +#define glUniform1ui64ARB glad_glUniform1ui64ARB +typedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y); +GLAPI PFNGLUNIFORM2UI64ARBPROC glad_glUniform2ui64ARB; +#define glUniform2ui64ARB glad_glUniform2ui64ARB +typedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI PFNGLUNIFORM3UI64ARBPROC glad_glUniform3ui64ARB; +#define glUniform3ui64ARB glad_glUniform3ui64ARB +typedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI PFNGLUNIFORM4UI64ARBPROC glad_glUniform4ui64ARB; +#define glUniform4ui64ARB glad_glUniform4ui64ARB +typedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORM1UI64VARBPROC glad_glUniform1ui64vARB; +#define glUniform1ui64vARB glad_glUniform1ui64vARB +typedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORM2UI64VARBPROC glad_glUniform2ui64vARB; +#define glUniform2ui64vARB glad_glUniform2ui64vARB +typedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORM3UI64VARBPROC glad_glUniform3ui64vARB; +#define glUniform3ui64vARB glad_glUniform3ui64vARB +typedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORM4UI64VARBPROC glad_glUniform4ui64vARB; +#define glUniform4ui64vARB glad_glUniform4ui64vARB +typedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC)(GLuint program, GLint location, GLint64 *params); +GLAPI PFNGLGETUNIFORMI64VARBPROC glad_glGetUniformi64vARB; +#define glGetUniformi64vARB glad_glGetUniformi64vARB +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLuint64 *params); +GLAPI PFNGLGETUNIFORMUI64VARBPROC glad_glGetUniformui64vARB; +#define glGetUniformui64vARB glad_glGetUniformui64vARB +typedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint64 *params); +GLAPI PFNGLGETNUNIFORMI64VARBPROC glad_glGetnUniformi64vARB; +#define glGetnUniformi64vARB glad_glGetnUniformi64vARB +typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); +GLAPI PFNGLGETNUNIFORMUI64VARBPROC glad_glGetnUniformui64vARB; +#define glGetnUniformui64vARB glad_glGetnUniformui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC)(GLuint program, GLint location, GLint64 x); +GLAPI PFNGLPROGRAMUNIFORM1I64ARBPROC glad_glProgramUniform1i64ARB; +#define glProgramUniform1i64ARB glad_glProgramUniform1i64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y); +GLAPI PFNGLPROGRAMUNIFORM2I64ARBPROC glad_glProgramUniform2i64ARB; +#define glProgramUniform2i64ARB glad_glProgramUniform2i64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI PFNGLPROGRAMUNIFORM3I64ARBPROC glad_glProgramUniform3i64ARB; +#define glProgramUniform3i64ARB glad_glProgramUniform3i64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI PFNGLPROGRAMUNIFORM4I64ARBPROC glad_glProgramUniform4i64ARB; +#define glProgramUniform4i64ARB glad_glProgramUniform4i64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLPROGRAMUNIFORM1I64VARBPROC glad_glProgramUniform1i64vARB; +#define glProgramUniform1i64vARB glad_glProgramUniform1i64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLPROGRAMUNIFORM2I64VARBPROC glad_glProgramUniform2i64vARB; +#define glProgramUniform2i64vARB glad_glProgramUniform2i64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLPROGRAMUNIFORM3I64VARBPROC glad_glProgramUniform3i64vARB; +#define glProgramUniform3i64vARB glad_glProgramUniform3i64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI PFNGLPROGRAMUNIFORM4I64VARBPROC glad_glProgramUniform4i64vARB; +#define glProgramUniform4i64vARB glad_glProgramUniform4i64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC)(GLuint program, GLint location, GLuint64 x); +GLAPI PFNGLPROGRAMUNIFORM1UI64ARBPROC glad_glProgramUniform1ui64ARB; +#define glProgramUniform1ui64ARB glad_glProgramUniform1ui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y); +GLAPI PFNGLPROGRAMUNIFORM2UI64ARBPROC glad_glProgramUniform2ui64ARB; +#define glProgramUniform2ui64ARB glad_glProgramUniform2ui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI PFNGLPROGRAMUNIFORM3UI64ARBPROC glad_glProgramUniform3ui64ARB; +#define glProgramUniform3ui64ARB glad_glProgramUniform3ui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI PFNGLPROGRAMUNIFORM4UI64ARBPROC glad_glProgramUniform4ui64ARB; +#define glProgramUniform4ui64ARB glad_glProgramUniform4ui64ARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLPROGRAMUNIFORM1UI64VARBPROC glad_glProgramUniform1ui64vARB; +#define glProgramUniform1ui64vARB glad_glProgramUniform1ui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLPROGRAMUNIFORM2UI64VARBPROC glad_glProgramUniform2ui64vARB; +#define glProgramUniform2ui64vARB glad_glProgramUniform2ui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLPROGRAMUNIFORM3UI64VARBPROC glad_glProgramUniform3ui64vARB; +#define glProgramUniform3ui64vARB glad_glProgramUniform3ui64vARB +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLPROGRAMUNIFORM4UI64VARBPROC glad_glProgramUniform4ui64vARB; +#define glProgramUniform4ui64vARB glad_glProgramUniform4ui64vARB +#endif +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 +GLAPI int GLAD_GL_ARB_half_float_pixel; +#endif +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 +GLAPI int GLAD_GL_ARB_half_float_vertex; +#endif +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 +GLAPI int GLAD_GL_ARB_imaging; +typedef void (APIENTRYP PFNGLCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI PFNGLCOLORTABLEPROC glad_glColorTable; +#define glColorTable glad_glColorTable +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLCOLORTABLEPARAMETERFVPROC glad_glColorTableParameterfv; +#define glColorTableParameterfv glad_glColorTableParameterfv +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLCOLORTABLEPARAMETERIVPROC glad_glColorTableParameteriv; +#define glColorTableParameteriv glad_glColorTableParameteriv +typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCOLORTABLEPROC glad_glCopyColorTable; +#define glCopyColorTable glad_glCopyColorTable +typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, void *table); +GLAPI PFNGLGETCOLORTABLEPROC glad_glGetColorTable; +#define glGetColorTable glad_glGetColorTable +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERFVPROC glad_glGetColorTableParameterfv; +#define glGetColorTableParameterfv glad_glGetColorTableParameterfv +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERIVPROC glad_glGetColorTableParameteriv; +#define glGetColorTableParameteriv glad_glGetColorTableParameteriv +typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCOLORSUBTABLEPROC glad_glColorSubTable; +#define glColorSubTable glad_glColorSubTable +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCOLORSUBTABLEPROC glad_glCopyColorSubTable; +#define glCopyColorSubTable glad_glCopyColorSubTable +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI PFNGLCONVOLUTIONFILTER1DPROC glad_glConvolutionFilter1D; +#define glConvolutionFilter1D glad_glConvolutionFilter1D +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI PFNGLCONVOLUTIONFILTER2DPROC glad_glConvolutionFilter2D; +#define glConvolutionFilter2D glad_glConvolutionFilter2D +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat params); +GLAPI PFNGLCONVOLUTIONPARAMETERFPROC glad_glConvolutionParameterf; +#define glConvolutionParameterf glad_glConvolutionParameterf +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLCONVOLUTIONPARAMETERFVPROC glad_glConvolutionParameterfv; +#define glConvolutionParameterfv glad_glConvolutionParameterfv +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC)(GLenum target, GLenum pname, GLint params); +GLAPI PFNGLCONVOLUTIONPARAMETERIPROC glad_glConvolutionParameteri; +#define glConvolutionParameteri glad_glConvolutionParameteri +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLCONVOLUTIONPARAMETERIVPROC glad_glConvolutionParameteriv; +#define glConvolutionParameteriv glad_glConvolutionParameteriv +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCONVOLUTIONFILTER1DPROC glad_glCopyConvolutionFilter1D; +#define glCopyConvolutionFilter1D glad_glCopyConvolutionFilter1D +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYCONVOLUTIONFILTER2DPROC glad_glCopyConvolutionFilter2D; +#define glCopyConvolutionFilter2D glad_glCopyConvolutionFilter2D +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC)(GLenum target, GLenum format, GLenum type, void *image); +GLAPI PFNGLGETCONVOLUTIONFILTERPROC glad_glGetConvolutionFilter; +#define glGetConvolutionFilter glad_glGetConvolutionFilter +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERFVPROC glad_glGetConvolutionParameterfv; +#define glGetConvolutionParameterfv glad_glGetConvolutionParameterfv +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERIVPROC glad_glGetConvolutionParameteriv; +#define glGetConvolutionParameteriv glad_glGetConvolutionParameteriv +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI PFNGLGETSEPARABLEFILTERPROC glad_glGetSeparableFilter; +#define glGetSeparableFilter glad_glGetSeparableFilter +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +GLAPI PFNGLSEPARABLEFILTER2DPROC glad_glSeparableFilter2D; +#define glSeparableFilter2D glad_glSeparableFilter2D +typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI PFNGLGETHISTOGRAMPROC glad_glGetHistogram; +#define glGetHistogram glad_glGetHistogram +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERFVPROC glad_glGetHistogramParameterfv; +#define glGetHistogramParameterfv glad_glGetHistogramParameterfv +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERIVPROC glad_glGetHistogramParameteriv; +#define glGetHistogramParameteriv glad_glGetHistogramParameteriv +typedef void (APIENTRYP PFNGLGETMINMAXPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI PFNGLGETMINMAXPROC glad_glGetMinmax; +#define glGetMinmax glad_glGetMinmax +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMINMAXPARAMETERFVPROC glad_glGetMinmaxParameterfv; +#define glGetMinmaxParameterfv glad_glGetMinmaxParameterfv +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMINMAXPARAMETERIVPROC glad_glGetMinmaxParameteriv; +#define glGetMinmaxParameteriv glad_glGetMinmaxParameteriv +typedef void (APIENTRYP PFNGLHISTOGRAMPROC)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI PFNGLHISTOGRAMPROC glad_glHistogram; +#define glHistogram glad_glHistogram +typedef void (APIENTRYP PFNGLMINMAXPROC)(GLenum target, GLenum internalformat, GLboolean sink); +GLAPI PFNGLMINMAXPROC glad_glMinmax; +#define glMinmax glad_glMinmax +typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC)(GLenum target); +GLAPI PFNGLRESETHISTOGRAMPROC glad_glResetHistogram; +#define glResetHistogram glad_glResetHistogram +typedef void (APIENTRYP PFNGLRESETMINMAXPROC)(GLenum target); +GLAPI PFNGLRESETMINMAXPROC glad_glResetMinmax; +#define glResetMinmax glad_glResetMinmax +#endif +#ifndef GL_ARB_indirect_parameters +#define GL_ARB_indirect_parameters 1 +GLAPI int GLAD_GL_ARB_indirect_parameters; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glad_glMultiDrawArraysIndirectCountARB; +#define glMultiDrawArraysIndirectCountARB glad_glMultiDrawArraysIndirectCountARB +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glad_glMultiDrawElementsIndirectCountARB; +#define glMultiDrawElementsIndirectCountARB glad_glMultiDrawElementsIndirectCountARB +#endif +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 +GLAPI int GLAD_GL_ARB_instanced_arrays; +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor); +GLAPI PFNGLVERTEXATTRIBDIVISORARBPROC glad_glVertexAttribDivisorARB; +#define glVertexAttribDivisorARB glad_glVertexAttribDivisorARB +#endif +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 +GLAPI int GLAD_GL_ARB_internalformat_query; +typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params); +GLAPI PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; +#define glGetInternalformativ glad_glGetInternalformativ +#endif +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 +GLAPI int GLAD_GL_ARB_internalformat_query2; +typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params); +GLAPI PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v; +#define glGetInternalformati64v glad_glGetInternalformati64v +#endif +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 +GLAPI int GLAD_GL_ARB_invalidate_subdata; +typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage; +#define glInvalidateTexSubImage glad_glInvalidateTexSubImage +typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); +GLAPI PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage; +#define glInvalidateTexImage glad_glInvalidateTexImage +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData; +#define glInvalidateBufferSubData glad_glInvalidateBufferSubData +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); +GLAPI PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData; +#define glInvalidateBufferData glad_glInvalidateBufferData +typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments); +GLAPI PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; +#define glInvalidateFramebuffer glad_glInvalidateFramebuffer +typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; +#define glInvalidateSubFramebuffer glad_glInvalidateSubFramebuffer +#endif +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 +GLAPI int GLAD_GL_ARB_map_buffer_alignment; +#endif +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 +GLAPI int GLAD_GL_ARB_map_buffer_range; +#endif +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +GLAPI int GLAD_GL_ARB_matrix_palette; +typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC)(GLint index); +GLAPI PFNGLCURRENTPALETTEMATRIXARBPROC glad_glCurrentPaletteMatrixARB; +#define glCurrentPaletteMatrixARB glad_glCurrentPaletteMatrixARB +typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC)(GLint size, const GLubyte *indices); +GLAPI PFNGLMATRIXINDEXUBVARBPROC glad_glMatrixIndexubvARB; +#define glMatrixIndexubvARB glad_glMatrixIndexubvARB +typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC)(GLint size, const GLushort *indices); +GLAPI PFNGLMATRIXINDEXUSVARBPROC glad_glMatrixIndexusvARB; +#define glMatrixIndexusvARB glad_glMatrixIndexusvARB +typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC)(GLint size, const GLuint *indices); +GLAPI PFNGLMATRIXINDEXUIVARBPROC glad_glMatrixIndexuivARB; +#define glMatrixIndexuivARB glad_glMatrixIndexuivARB +typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLMATRIXINDEXPOINTERARBPROC glad_glMatrixIndexPointerARB; +#define glMatrixIndexPointerARB glad_glMatrixIndexPointerARB +#endif +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 +GLAPI int GLAD_GL_ARB_multi_bind; +typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +GLAPI PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase; +#define glBindBuffersBase glad_glBindBuffersBase +typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +GLAPI PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange; +#define glBindBuffersRange glad_glBindBuffersRange +typedef void (APIENTRYP PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, const GLuint *textures); +GLAPI PFNGLBINDTEXTURESPROC glad_glBindTextures; +#define glBindTextures glad_glBindTextures +typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, const GLuint *samplers); +GLAPI PFNGLBINDSAMPLERSPROC glad_glBindSamplers; +#define glBindSamplers glad_glBindSamplers +typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, const GLuint *textures); +GLAPI PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures; +#define glBindImageTextures glad_glBindImageTextures +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC)(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +GLAPI PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers; +#define glBindVertexBuffers glad_glBindVertexBuffers +#endif +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 +GLAPI int GLAD_GL_ARB_multi_draw_indirect; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect; +#define glMultiDrawArraysIndirect glad_glMultiDrawArraysIndirect +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect; +#define glMultiDrawElementsIndirect glad_glMultiDrawElementsIndirect +#endif +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +GLAPI int GLAD_GL_ARB_multisample; +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC)(GLfloat value, GLboolean invert); +GLAPI PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB; +#define glSampleCoverageARB glad_glSampleCoverageARB +#endif +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +GLAPI int GLAD_GL_ARB_multitexture; +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC)(GLenum texture); +GLAPI PFNGLACTIVETEXTUREARBPROC glad_glActiveTextureARB; +#define glActiveTextureARB glad_glActiveTextureARB +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture); +GLAPI PFNGLCLIENTACTIVETEXTUREARBPROC glad_glClientActiveTextureARB; +#define glClientActiveTextureARB glad_glClientActiveTextureARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s); +GLAPI PFNGLMULTITEXCOORD1DARBPROC glad_glMultiTexCoord1dARB; +#define glMultiTexCoord1dARB glad_glMultiTexCoord1dARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD1DVARBPROC glad_glMultiTexCoord1dvARB; +#define glMultiTexCoord1dvARB glad_glMultiTexCoord1dvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s); +GLAPI PFNGLMULTITEXCOORD1FARBPROC glad_glMultiTexCoord1fARB; +#define glMultiTexCoord1fARB glad_glMultiTexCoord1fARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD1FVARBPROC glad_glMultiTexCoord1fvARB; +#define glMultiTexCoord1fvARB glad_glMultiTexCoord1fvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s); +GLAPI PFNGLMULTITEXCOORD1IARBPROC glad_glMultiTexCoord1iARB; +#define glMultiTexCoord1iARB glad_glMultiTexCoord1iARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD1IVARBPROC glad_glMultiTexCoord1ivARB; +#define glMultiTexCoord1ivARB glad_glMultiTexCoord1ivARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s); +GLAPI PFNGLMULTITEXCOORD1SARBPROC glad_glMultiTexCoord1sARB; +#define glMultiTexCoord1sARB glad_glMultiTexCoord1sARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD1SVARBPROC glad_glMultiTexCoord1svARB; +#define glMultiTexCoord1svARB glad_glMultiTexCoord1svARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t); +GLAPI PFNGLMULTITEXCOORD2DARBPROC glad_glMultiTexCoord2dARB; +#define glMultiTexCoord2dARB glad_glMultiTexCoord2dARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD2DVARBPROC glad_glMultiTexCoord2dvARB; +#define glMultiTexCoord2dvARB glad_glMultiTexCoord2dvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t); +GLAPI PFNGLMULTITEXCOORD2FARBPROC glad_glMultiTexCoord2fARB; +#define glMultiTexCoord2fARB glad_glMultiTexCoord2fARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD2FVARBPROC glad_glMultiTexCoord2fvARB; +#define glMultiTexCoord2fvARB glad_glMultiTexCoord2fvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t); +GLAPI PFNGLMULTITEXCOORD2IARBPROC glad_glMultiTexCoord2iARB; +#define glMultiTexCoord2iARB glad_glMultiTexCoord2iARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD2IVARBPROC glad_glMultiTexCoord2ivARB; +#define glMultiTexCoord2ivARB glad_glMultiTexCoord2ivARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t); +GLAPI PFNGLMULTITEXCOORD2SARBPROC glad_glMultiTexCoord2sARB; +#define glMultiTexCoord2sARB glad_glMultiTexCoord2sARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD2SVARBPROC glad_glMultiTexCoord2svARB; +#define glMultiTexCoord2svARB glad_glMultiTexCoord2svARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI PFNGLMULTITEXCOORD3DARBPROC glad_glMultiTexCoord3dARB; +#define glMultiTexCoord3dARB glad_glMultiTexCoord3dARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD3DVARBPROC glad_glMultiTexCoord3dvARB; +#define glMultiTexCoord3dvARB glad_glMultiTexCoord3dvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI PFNGLMULTITEXCOORD3FARBPROC glad_glMultiTexCoord3fARB; +#define glMultiTexCoord3fARB glad_glMultiTexCoord3fARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD3FVARBPROC glad_glMultiTexCoord3fvARB; +#define glMultiTexCoord3fvARB glad_glMultiTexCoord3fvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r); +GLAPI PFNGLMULTITEXCOORD3IARBPROC glad_glMultiTexCoord3iARB; +#define glMultiTexCoord3iARB glad_glMultiTexCoord3iARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD3IVARBPROC glad_glMultiTexCoord3ivARB; +#define glMultiTexCoord3ivARB glad_glMultiTexCoord3ivARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI PFNGLMULTITEXCOORD3SARBPROC glad_glMultiTexCoord3sARB; +#define glMultiTexCoord3sARB glad_glMultiTexCoord3sARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD3SVARBPROC glad_glMultiTexCoord3svARB; +#define glMultiTexCoord3svARB glad_glMultiTexCoord3svARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI PFNGLMULTITEXCOORD4DARBPROC glad_glMultiTexCoord4dARB; +#define glMultiTexCoord4dARB glad_glMultiTexCoord4dARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD4DVARBPROC glad_glMultiTexCoord4dvARB; +#define glMultiTexCoord4dvARB glad_glMultiTexCoord4dvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI PFNGLMULTITEXCOORD4FARBPROC glad_glMultiTexCoord4fARB; +#define glMultiTexCoord4fARB glad_glMultiTexCoord4fARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD4FVARBPROC glad_glMultiTexCoord4fvARB; +#define glMultiTexCoord4fvARB glad_glMultiTexCoord4fvARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI PFNGLMULTITEXCOORD4IARBPROC glad_glMultiTexCoord4iARB; +#define glMultiTexCoord4iARB glad_glMultiTexCoord4iARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD4IVARBPROC glad_glMultiTexCoord4ivARB; +#define glMultiTexCoord4ivARB glad_glMultiTexCoord4ivARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI PFNGLMULTITEXCOORD4SARBPROC glad_glMultiTexCoord4sARB; +#define glMultiTexCoord4sARB glad_glMultiTexCoord4sARB +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD4SVARBPROC glad_glMultiTexCoord4svARB; +#define glMultiTexCoord4svARB glad_glMultiTexCoord4svARB +#endif +#ifndef GL_ARB_occlusion_query +#define GL_ARB_occlusion_query 1 +GLAPI int GLAD_GL_ARB_occlusion_query; +typedef void (APIENTRYP PFNGLGENQUERIESARBPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENQUERIESARBPROC glad_glGenQueriesARB; +#define glGenQueriesARB glad_glGenQueriesARB +typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETEQUERIESARBPROC glad_glDeleteQueriesARB; +#define glDeleteQueriesARB glad_glDeleteQueriesARB +typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC)(GLuint id); +GLAPI PFNGLISQUERYARBPROC glad_glIsQueryARB; +#define glIsQueryARB glad_glIsQueryARB +typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC)(GLenum target, GLuint id); +GLAPI PFNGLBEGINQUERYARBPROC glad_glBeginQueryARB; +#define glBeginQueryARB glad_glBeginQueryARB +typedef void (APIENTRYP PFNGLENDQUERYARBPROC)(GLenum target); +GLAPI PFNGLENDQUERYARBPROC glad_glEndQueryARB; +#define glEndQueryARB glad_glEndQueryARB +typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYIVARBPROC glad_glGetQueryivARB; +#define glGetQueryivARB glad_glGetQueryivARB +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYOBJECTIVARBPROC glad_glGetQueryObjectivARB; +#define glGetQueryObjectivARB glad_glGetQueryObjectivARB +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC)(GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLGETQUERYOBJECTUIVARBPROC glad_glGetQueryObjectuivARB; +#define glGetQueryObjectuivARB glad_glGetQueryObjectuivARB +#endif +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 +GLAPI int GLAD_GL_ARB_occlusion_query2; +#endif +#ifndef GL_ARB_parallel_shader_compile +#define GL_ARB_parallel_shader_compile 1 +GLAPI int GLAD_GL_ARB_parallel_shader_compile; +typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC)(GLuint count); +GLAPI PFNGLMAXSHADERCOMPILERTHREADSARBPROC glad_glMaxShaderCompilerThreadsARB; +#define glMaxShaderCompilerThreadsARB glad_glMaxShaderCompilerThreadsARB +#endif +#ifndef GL_ARB_pipeline_statistics_query +#define GL_ARB_pipeline_statistics_query 1 +GLAPI int GLAD_GL_ARB_pipeline_statistics_query; +#endif +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +GLAPI int GLAD_GL_ARB_pixel_buffer_object; +#endif +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +GLAPI int GLAD_GL_ARB_point_parameters; +typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFARBPROC glad_glPointParameterfARB; +#define glPointParameterfARB glad_glPointParameterfARB +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVARBPROC glad_glPointParameterfvARB; +#define glPointParameterfvARB glad_glPointParameterfvARB +#endif +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 +GLAPI int GLAD_GL_ARB_point_sprite; +#endif +#ifndef GL_ARB_polygon_offset_clamp +#define GL_ARB_polygon_offset_clamp 1 +GLAPI int GLAD_GL_ARB_polygon_offset_clamp; +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, GLfloat clamp); +GLAPI PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp; +#define glPolygonOffsetClamp glad_glPolygonOffsetClamp +#endif +#ifndef GL_ARB_post_depth_coverage +#define GL_ARB_post_depth_coverage 1 +GLAPI int GLAD_GL_ARB_post_depth_coverage; +#endif +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 +GLAPI int GLAD_GL_ARB_program_interface_query; +typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv; +#define glGetProgramInterfaceiv glad_glGetProgramInterfaceiv +typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name); +GLAPI PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex; +#define glGetProgramResourceIndex glad_glGetProgramResourceIndex +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName; +#define glGetProgramResourceName glad_glGetProgramResourceName +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params); +GLAPI PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv; +#define glGetProgramResourceiv glad_glGetProgramResourceiv +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, GLenum programInterface, const GLchar *name); +GLAPI PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation; +#define glGetProgramResourceLocation glad_glGetProgramResourceLocation +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name); +GLAPI PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex; +#define glGetProgramResourceLocationIndex glad_glGetProgramResourceLocationIndex +#endif +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +GLAPI int GLAD_GL_ARB_provoking_vertex; +#endif +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 +GLAPI int GLAD_GL_ARB_query_buffer_object; +#endif +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 +GLAPI int GLAD_GL_ARB_robust_buffer_access_behavior; +#endif +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +GLAPI int GLAD_GL_ARB_robustness; +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void); +GLAPI PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB; +#define glGetGraphicsResetStatusARB glad_glGetGraphicsResetStatusARB +typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +GLAPI PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB; +#define glGetnTexImageARB glad_glGetnTexImageARB +typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB; +#define glReadnPixelsARB glad_glReadnPixelsARB +typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, GLsizei bufSize, void *img); +GLAPI PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB; +#define glGetnCompressedTexImageARB glad_glGetnCompressedTexImageARB +typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB; +#define glGetnUniformfvARB glad_glGetnUniformfvARB +typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB; +#define glGetnUniformivARB glad_glGetnUniformivARB +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB; +#define glGetnUniformuivARB glad_glGetnUniformuivARB +typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +GLAPI PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB; +#define glGetnUniformdvARB glad_glGetnUniformdvARB +typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +GLAPI PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB; +#define glGetnMapdvARB glad_glGetnMapdvARB +typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +GLAPI PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB; +#define glGetnMapfvARB glad_glGetnMapfvARB +typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); +GLAPI PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB; +#define glGetnMapivARB glad_glGetnMapivARB +typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC)(GLenum map, GLsizei bufSize, GLfloat *values); +GLAPI PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB; +#define glGetnPixelMapfvARB glad_glGetnPixelMapfvARB +typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC)(GLenum map, GLsizei bufSize, GLuint *values); +GLAPI PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB; +#define glGetnPixelMapuivARB glad_glGetnPixelMapuivARB +typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC)(GLenum map, GLsizei bufSize, GLushort *values); +GLAPI PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB; +#define glGetnPixelMapusvARB glad_glGetnPixelMapusvARB +typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC)(GLsizei bufSize, GLubyte *pattern); +GLAPI PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB; +#define glGetnPolygonStippleARB glad_glGetnPolygonStippleARB +typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +GLAPI PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB; +#define glGetnColorTableARB glad_glGetnColorTableARB +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +GLAPI PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB; +#define glGetnConvolutionFilterARB glad_glGetnConvolutionFilterARB +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +GLAPI PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB; +#define glGetnSeparableFilterARB glad_glGetnSeparableFilterARB +typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB; +#define glGetnHistogramARB glad_glGetnHistogramARB +typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB; +#define glGetnMinmaxARB glad_glGetnMinmaxARB +#endif +#ifndef GL_ARB_robustness_isolation +#define GL_ARB_robustness_isolation 1 +GLAPI int GLAD_GL_ARB_robustness_isolation; +#endif +#ifndef GL_ARB_sample_locations +#define GL_ARB_sample_locations 1 +GLAPI int GLAD_GL_ARB_sample_locations; +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glFramebufferSampleLocationsfvARB; +#define glFramebufferSampleLocationsfvARB glad_glFramebufferSampleLocationsfvARB +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glNamedFramebufferSampleLocationsfvARB; +#define glNamedFramebufferSampleLocationsfvARB glad_glNamedFramebufferSampleLocationsfvARB +typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC)(void); +GLAPI PFNGLEVALUATEDEPTHVALUESARBPROC glad_glEvaluateDepthValuesARB; +#define glEvaluateDepthValuesARB glad_glEvaluateDepthValuesARB +#endif +#ifndef GL_ARB_sample_shading +#define GL_ARB_sample_shading 1 +GLAPI int GLAD_GL_ARB_sample_shading; +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC)(GLfloat value); +GLAPI PFNGLMINSAMPLESHADINGARBPROC glad_glMinSampleShadingARB; +#define glMinSampleShadingARB glad_glMinSampleShadingARB +#endif +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 +GLAPI int GLAD_GL_ARB_sampler_objects; +#endif +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +GLAPI int GLAD_GL_ARB_seamless_cube_map; +#endif +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 +GLAPI int GLAD_GL_ARB_seamless_cubemap_per_texture; +#endif +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 +GLAPI int GLAD_GL_ARB_separate_shader_objects; +#endif +#ifndef GL_ARB_shader_atomic_counter_ops +#define GL_ARB_shader_atomic_counter_ops 1 +GLAPI int GLAD_GL_ARB_shader_atomic_counter_ops; +#endif +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 +GLAPI int GLAD_GL_ARB_shader_atomic_counters; +typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv; +#define glGetActiveAtomicCounterBufferiv glad_glGetActiveAtomicCounterBufferiv +#endif +#ifndef GL_ARB_shader_ballot +#define GL_ARB_shader_ballot 1 +GLAPI int GLAD_GL_ARB_shader_ballot; +#endif +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 +GLAPI int GLAD_GL_ARB_shader_bit_encoding; +#endif +#ifndef GL_ARB_shader_clock +#define GL_ARB_shader_clock 1 +GLAPI int GLAD_GL_ARB_shader_clock; +#endif +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 +GLAPI int GLAD_GL_ARB_shader_draw_parameters; +#endif +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 +GLAPI int GLAD_GL_ARB_shader_group_vote; +#endif +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 +GLAPI int GLAD_GL_ARB_shader_image_load_store; +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +GLAPI PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture; +#define glBindImageTexture glad_glBindImageTexture +typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); +GLAPI PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier; +#define glMemoryBarrier glad_glMemoryBarrier +#endif +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 +GLAPI int GLAD_GL_ARB_shader_image_size; +#endif +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 +GLAPI int GLAD_GL_ARB_shader_objects; +typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC)(GLhandleARB obj); +GLAPI PFNGLDELETEOBJECTARBPROC glad_glDeleteObjectARB; +#define glDeleteObjectARB glad_glDeleteObjectARB +typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC)(GLenum pname); +GLAPI PFNGLGETHANDLEARBPROC glad_glGetHandleARB; +#define glGetHandleARB glad_glGetHandleARB +typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB attachedObj); +GLAPI PFNGLDETACHOBJECTARBPROC glad_glDetachObjectARB; +#define glDetachObjectARB glad_glDetachObjectARB +typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC)(GLenum shaderType); +GLAPI PFNGLCREATESHADEROBJECTARBPROC glad_glCreateShaderObjectARB; +#define glCreateShaderObjectARB glad_glCreateShaderObjectARB +typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC)(GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); +GLAPI PFNGLSHADERSOURCEARBPROC glad_glShaderSourceARB; +#define glShaderSourceARB glad_glShaderSourceARB +typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC)(GLhandleARB shaderObj); +GLAPI PFNGLCOMPILESHADERARBPROC glad_glCompileShaderARB; +#define glCompileShaderARB glad_glCompileShaderARB +typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC)(void); +GLAPI PFNGLCREATEPROGRAMOBJECTARBPROC glad_glCreateProgramObjectARB; +#define glCreateProgramObjectARB glad_glCreateProgramObjectARB +typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB obj); +GLAPI PFNGLATTACHOBJECTARBPROC glad_glAttachObjectARB; +#define glAttachObjectARB glad_glAttachObjectARB +typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC)(GLhandleARB programObj); +GLAPI PFNGLLINKPROGRAMARBPROC glad_glLinkProgramARB; +#define glLinkProgramARB glad_glLinkProgramARB +typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC)(GLhandleARB programObj); +GLAPI PFNGLUSEPROGRAMOBJECTARBPROC glad_glUseProgramObjectARB; +#define glUseProgramObjectARB glad_glUseProgramObjectARB +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC)(GLhandleARB programObj); +GLAPI PFNGLVALIDATEPROGRAMARBPROC glad_glValidateProgramARB; +#define glValidateProgramARB glad_glValidateProgramARB +typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC)(GLint location, GLfloat v0); +GLAPI PFNGLUNIFORM1FARBPROC glad_glUniform1fARB; +#define glUniform1fARB glad_glUniform1fARB +typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC)(GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLUNIFORM2FARBPROC glad_glUniform2fARB; +#define glUniform2fARB glad_glUniform2fARB +typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLUNIFORM3FARBPROC glad_glUniform3fARB; +#define glUniform3fARB glad_glUniform3fARB +typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLUNIFORM4FARBPROC glad_glUniform4fARB; +#define glUniform4fARB glad_glUniform4fARB +typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC)(GLint location, GLint v0); +GLAPI PFNGLUNIFORM1IARBPROC glad_glUniform1iARB; +#define glUniform1iARB glad_glUniform1iARB +typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC)(GLint location, GLint v0, GLint v1); +GLAPI PFNGLUNIFORM2IARBPROC glad_glUniform2iARB; +#define glUniform2iARB glad_glUniform2iARB +typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLUNIFORM3IARBPROC glad_glUniform3iARB; +#define glUniform3iARB glad_glUniform3iARB +typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLUNIFORM4IARBPROC glad_glUniform4iARB; +#define glUniform4iARB glad_glUniform4iARB +typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM1FVARBPROC glad_glUniform1fvARB; +#define glUniform1fvARB glad_glUniform1fvARB +typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM2FVARBPROC glad_glUniform2fvARB; +#define glUniform2fvARB glad_glUniform2fvARB +typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM3FVARBPROC glad_glUniform3fvARB; +#define glUniform3fvARB glad_glUniform3fvARB +typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM4FVARBPROC glad_glUniform4fvARB; +#define glUniform4fvARB glad_glUniform4fvARB +typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM1IVARBPROC glad_glUniform1ivARB; +#define glUniform1ivARB glad_glUniform1ivARB +typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM2IVARBPROC glad_glUniform2ivARB; +#define glUniform2ivARB glad_glUniform2ivARB +typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM3IVARBPROC glad_glUniform3ivARB; +#define glUniform3ivARB glad_glUniform3ivARB +typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM4IVARBPROC glad_glUniform4ivARB; +#define glUniform4ivARB glad_glUniform4ivARB +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2FVARBPROC glad_glUniformMatrix2fvARB; +#define glUniformMatrix2fvARB glad_glUniformMatrix2fvARB +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3FVARBPROC glad_glUniformMatrix3fvARB; +#define glUniformMatrix3fvARB glad_glUniformMatrix3fvARB +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4FVARBPROC glad_glUniformMatrix4fvARB; +#define glUniformMatrix4fvARB glad_glUniformMatrix4fvARB +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC)(GLhandleARB obj, GLenum pname, GLfloat *params); +GLAPI PFNGLGETOBJECTPARAMETERFVARBPROC glad_glGetObjectParameterfvARB; +#define glGetObjectParameterfvARB glad_glGetObjectParameterfvARB +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC)(GLhandleARB obj, GLenum pname, GLint *params); +GLAPI PFNGLGETOBJECTPARAMETERIVARBPROC glad_glGetObjectParameterivARB; +#define glGetObjectParameterivARB glad_glGetObjectParameterivARB +typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +GLAPI PFNGLGETINFOLOGARBPROC glad_glGetInfoLogARB; +#define glGetInfoLogARB glad_glGetInfoLogARB +typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC)(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +GLAPI PFNGLGETATTACHEDOBJECTSARBPROC glad_glGetAttachedObjectsARB; +#define glGetAttachedObjectsARB glad_glGetAttachedObjectsARB +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj, const GLcharARB *name); +GLAPI PFNGLGETUNIFORMLOCATIONARBPROC glad_glGetUniformLocationARB; +#define glGetUniformLocationARB glad_glGetUniformLocationARB +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI PFNGLGETACTIVEUNIFORMARBPROC glad_glGetActiveUniformARB; +#define glGetActiveUniformARB glad_glGetActiveUniformARB +typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC)(GLhandleARB programObj, GLint location, GLfloat *params); +GLAPI PFNGLGETUNIFORMFVARBPROC glad_glGetUniformfvARB; +#define glGetUniformfvARB glad_glGetUniformfvARB +typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC)(GLhandleARB programObj, GLint location, GLint *params); +GLAPI PFNGLGETUNIFORMIVARBPROC glad_glGetUniformivARB; +#define glGetUniformivARB glad_glGetUniformivARB +typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +GLAPI PFNGLGETSHADERSOURCEARBPROC glad_glGetShaderSourceARB; +#define glGetShaderSourceARB glad_glGetShaderSourceARB +#endif +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 +GLAPI int GLAD_GL_ARB_shader_precision; +#endif +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 +GLAPI int GLAD_GL_ARB_shader_stencil_export; +#endif +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 +GLAPI int GLAD_GL_ARB_shader_storage_buffer_object; +typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +GLAPI PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding; +#define glShaderStorageBlockBinding glad_glShaderStorageBlockBinding +#endif +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 +GLAPI int GLAD_GL_ARB_shader_subroutine; +#endif +#ifndef GL_ARB_shader_texture_image_samples +#define GL_ARB_shader_texture_image_samples 1 +GLAPI int GLAD_GL_ARB_shader_texture_image_samples; +#endif +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 +GLAPI int GLAD_GL_ARB_shader_texture_lod; +#endif +#ifndef GL_ARB_shader_viewport_layer_array +#define GL_ARB_shader_viewport_layer_array 1 +GLAPI int GLAD_GL_ARB_shader_viewport_layer_array; +#endif +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 +GLAPI int GLAD_GL_ARB_shading_language_100; +#endif +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 +GLAPI int GLAD_GL_ARB_shading_language_420pack; +#endif +#ifndef GL_ARB_shading_language_include +#define GL_ARB_shading_language_include 1 +GLAPI int GLAD_GL_ARB_shading_language_include; +typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC)(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +GLAPI PFNGLNAMEDSTRINGARBPROC glad_glNamedStringARB; +#define glNamedStringARB glad_glNamedStringARB +typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); +GLAPI PFNGLDELETENAMEDSTRINGARBPROC glad_glDeleteNamedStringARB; +#define glDeleteNamedStringARB glad_glDeleteNamedStringARB +typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC)(GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); +GLAPI PFNGLCOMPILESHADERINCLUDEARBPROC glad_glCompileShaderIncludeARB; +#define glCompileShaderIncludeARB glad_glCompileShaderIncludeARB +typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); +GLAPI PFNGLISNAMEDSTRINGARBPROC glad_glIsNamedStringARB; +#define glIsNamedStringARB glad_glIsNamedStringARB +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +GLAPI PFNGLGETNAMEDSTRINGARBPROC glad_glGetNamedStringARB; +#define glGetNamedStringARB glad_glGetNamedStringARB +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC)(GLint namelen, const GLchar *name, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDSTRINGIVARBPROC glad_glGetNamedStringivARB; +#define glGetNamedStringivARB glad_glGetNamedStringivARB +#endif +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 +GLAPI int GLAD_GL_ARB_shading_language_packing; +#endif +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +GLAPI int GLAD_GL_ARB_shadow; +#endif +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +GLAPI int GLAD_GL_ARB_shadow_ambient; +#endif +#ifndef GL_ARB_sparse_buffer +#define GL_ARB_sparse_buffer 1 +GLAPI int GLAD_GL_ARB_sparse_buffer; +typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC)(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI PFNGLBUFFERPAGECOMMITMENTARBPROC glad_glBufferPageCommitmentARB; +#define glBufferPageCommitmentARB glad_glBufferPageCommitmentARB +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC glad_glNamedBufferPageCommitmentEXT; +#define glNamedBufferPageCommitmentEXT glad_glNamedBufferPageCommitmentEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC glad_glNamedBufferPageCommitmentARB; +#define glNamedBufferPageCommitmentARB glad_glNamedBufferPageCommitmentARB +#endif +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 +GLAPI int GLAD_GL_ARB_sparse_texture; +typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +GLAPI PFNGLTEXPAGECOMMITMENTARBPROC glad_glTexPageCommitmentARB; +#define glTexPageCommitmentARB glad_glTexPageCommitmentARB +#endif +#ifndef GL_ARB_sparse_texture2 +#define GL_ARB_sparse_texture2 1 +GLAPI int GLAD_GL_ARB_sparse_texture2; +#endif +#ifndef GL_ARB_sparse_texture_clamp +#define GL_ARB_sparse_texture_clamp 1 +GLAPI int GLAD_GL_ARB_sparse_texture_clamp; +#endif +#ifndef GL_ARB_spirv_extensions +#define GL_ARB_spirv_extensions 1 +GLAPI int GLAD_GL_ARB_spirv_extensions; +#endif +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 +GLAPI int GLAD_GL_ARB_stencil_texturing; +#endif +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +GLAPI int GLAD_GL_ARB_sync; +#endif +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 +GLAPI int GLAD_GL_ARB_tessellation_shader; +#endif +#ifndef GL_ARB_texture_barrier +#define GL_ARB_texture_barrier 1 +GLAPI int GLAD_GL_ARB_texture_barrier; +typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC)(void); +GLAPI PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier; +#define glTextureBarrier glad_glTextureBarrier +#endif +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +GLAPI int GLAD_GL_ARB_texture_border_clamp; +#endif +#ifndef GL_ARB_texture_buffer_object +#define GL_ARB_texture_buffer_object 1 +GLAPI int GLAD_GL_ARB_texture_buffer_object; +typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXBUFFERARBPROC glad_glTexBufferARB; +#define glTexBufferARB glad_glTexBufferARB +#endif +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 +GLAPI int GLAD_GL_ARB_texture_buffer_object_rgb32; +#endif +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 +GLAPI int GLAD_GL_ARB_texture_buffer_range; +typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange; +#define glTexBufferRange glad_glTexBufferRange +#endif +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +GLAPI int GLAD_GL_ARB_texture_compression; +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glad_glCompressedTexImage3DARB; +#define glCompressedTexImage3DARB glad_glCompressedTexImage3DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glad_glCompressedTexImage2DARB; +#define glCompressedTexImage2DARB glad_glCompressedTexImage2DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glad_glCompressedTexImage1DARB; +#define glCompressedTexImage1DARB glad_glCompressedTexImage1DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glad_glCompressedTexSubImage3DARB; +#define glCompressedTexSubImage3DARB glad_glCompressedTexSubImage3DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glad_glCompressedTexSubImage2DARB; +#define glCompressedTexSubImage2DARB glad_glCompressedTexSubImage2DARB +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glad_glCompressedTexSubImage1DARB; +#define glCompressedTexSubImage1DARB glad_glCompressedTexSubImage1DARB +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint level, void *img); +GLAPI PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glad_glGetCompressedTexImageARB; +#define glGetCompressedTexImageARB glad_glGetCompressedTexImageARB +#endif +#ifndef GL_ARB_texture_compression_bptc +#define GL_ARB_texture_compression_bptc 1 +GLAPI int GLAD_GL_ARB_texture_compression_bptc; +#endif +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 +GLAPI int GLAD_GL_ARB_texture_compression_rgtc; +#endif +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +GLAPI int GLAD_GL_ARB_texture_cube_map; +#endif +#ifndef GL_ARB_texture_cube_map_array +#define GL_ARB_texture_cube_map_array 1 +GLAPI int GLAD_GL_ARB_texture_cube_map_array; +#endif +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +GLAPI int GLAD_GL_ARB_texture_env_add; +#endif +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +GLAPI int GLAD_GL_ARB_texture_env_combine; +#endif +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +GLAPI int GLAD_GL_ARB_texture_env_crossbar; +#endif +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +GLAPI int GLAD_GL_ARB_texture_env_dot3; +#endif +#ifndef GL_ARB_texture_filter_anisotropic +#define GL_ARB_texture_filter_anisotropic 1 +GLAPI int GLAD_GL_ARB_texture_filter_anisotropic; +#endif +#ifndef GL_ARB_texture_filter_minmax +#define GL_ARB_texture_filter_minmax 1 +GLAPI int GLAD_GL_ARB_texture_filter_minmax; +#endif +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 +GLAPI int GLAD_GL_ARB_texture_float; +#endif +#ifndef GL_ARB_texture_gather +#define GL_ARB_texture_gather 1 +GLAPI int GLAD_GL_ARB_texture_gather; +#endif +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 +GLAPI int GLAD_GL_ARB_texture_mirror_clamp_to_edge; +#endif +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +GLAPI int GLAD_GL_ARB_texture_mirrored_repeat; +#endif +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +GLAPI int GLAD_GL_ARB_texture_multisample; +#endif +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +GLAPI int GLAD_GL_ARB_texture_non_power_of_two; +#endif +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 +GLAPI int GLAD_GL_ARB_texture_query_levels; +#endif +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 +GLAPI int GLAD_GL_ARB_texture_query_lod; +#endif +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +GLAPI int GLAD_GL_ARB_texture_rectangle; +#endif +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 +GLAPI int GLAD_GL_ARB_texture_rg; +#endif +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 +GLAPI int GLAD_GL_ARB_texture_rgb10_a2ui; +#endif +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 +GLAPI int GLAD_GL_ARB_texture_stencil8; +#endif +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 +GLAPI int GLAD_GL_ARB_texture_storage; +typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D; +#define glTexStorage1D glad_glTexStorage1D +typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; +#define glTexStorage2D glad_glTexStorage2D +typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; +#define glTexStorage3D glad_glTexStorage3D +#endif +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 +GLAPI int GLAD_GL_ARB_texture_storage_multisample; +typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample; +#define glTexStorage2DMultisample glad_glTexStorage2DMultisample +typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample; +#define glTexStorage3DMultisample glad_glTexStorage3DMultisample +#endif +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 +GLAPI int GLAD_GL_ARB_texture_swizzle; +#endif +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 +GLAPI int GLAD_GL_ARB_texture_view; +typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +GLAPI PFNGLTEXTUREVIEWPROC glad_glTextureView; +#define glTextureView glad_glTextureView +#endif +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 +GLAPI int GLAD_GL_ARB_timer_query; +#endif +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 +GLAPI int GLAD_GL_ARB_transform_feedback2; +#endif +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 +GLAPI int GLAD_GL_ARB_transform_feedback3; +#endif +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 +GLAPI int GLAD_GL_ARB_transform_feedback_instanced; +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, GLsizei instancecount); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced; +#define glDrawTransformFeedbackInstanced glad_glDrawTransformFeedbackInstanced +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced; +#define glDrawTransformFeedbackStreamInstanced glad_glDrawTransformFeedbackStreamInstanced +#endif +#ifndef GL_ARB_transform_feedback_overflow_query +#define GL_ARB_transform_feedback_overflow_query 1 +GLAPI int GLAD_GL_ARB_transform_feedback_overflow_query; +#endif +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +GLAPI int GLAD_GL_ARB_transpose_matrix; +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); +GLAPI PFNGLLOADTRANSPOSEMATRIXFARBPROC glad_glLoadTransposeMatrixfARB; +#define glLoadTransposeMatrixfARB glad_glLoadTransposeMatrixfARB +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); +GLAPI PFNGLLOADTRANSPOSEMATRIXDARBPROC glad_glLoadTransposeMatrixdARB; +#define glLoadTransposeMatrixdARB glad_glLoadTransposeMatrixdARB +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); +GLAPI PFNGLMULTTRANSPOSEMATRIXFARBPROC glad_glMultTransposeMatrixfARB; +#define glMultTransposeMatrixfARB glad_glMultTransposeMatrixfARB +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); +GLAPI PFNGLMULTTRANSPOSEMATRIXDARBPROC glad_glMultTransposeMatrixdARB; +#define glMultTransposeMatrixdARB glad_glMultTransposeMatrixdARB +#endif +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 +GLAPI int GLAD_GL_ARB_uniform_buffer_object; +#endif +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +GLAPI int GLAD_GL_ARB_vertex_array_bgra; +#endif +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 +GLAPI int GLAD_GL_ARB_vertex_array_object; +#endif +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 +GLAPI int GLAD_GL_ARB_vertex_attrib_64bit; +#endif +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 +GLAPI int GLAD_GL_ARB_vertex_attrib_binding; +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer; +#define glBindVertexBuffer glad_glBindVertexBuffer +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat; +#define glVertexAttribFormat glad_glVertexAttribFormat +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat; +#define glVertexAttribIFormat glad_glVertexAttribIFormat +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat; +#define glVertexAttribLFormat glad_glVertexAttribLFormat +typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); +GLAPI PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding; +#define glVertexAttribBinding glad_glVertexAttribBinding +typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); +GLAPI PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor; +#define glVertexBindingDivisor glad_glVertexBindingDivisor +#endif +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +GLAPI int GLAD_GL_ARB_vertex_blend; +typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC)(GLint size, const GLbyte *weights); +GLAPI PFNGLWEIGHTBVARBPROC glad_glWeightbvARB; +#define glWeightbvARB glad_glWeightbvARB +typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC)(GLint size, const GLshort *weights); +GLAPI PFNGLWEIGHTSVARBPROC glad_glWeightsvARB; +#define glWeightsvARB glad_glWeightsvARB +typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC)(GLint size, const GLint *weights); +GLAPI PFNGLWEIGHTIVARBPROC glad_glWeightivARB; +#define glWeightivARB glad_glWeightivARB +typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC)(GLint size, const GLfloat *weights); +GLAPI PFNGLWEIGHTFVARBPROC glad_glWeightfvARB; +#define glWeightfvARB glad_glWeightfvARB +typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC)(GLint size, const GLdouble *weights); +GLAPI PFNGLWEIGHTDVARBPROC glad_glWeightdvARB; +#define glWeightdvARB glad_glWeightdvARB +typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC)(GLint size, const GLubyte *weights); +GLAPI PFNGLWEIGHTUBVARBPROC glad_glWeightubvARB; +#define glWeightubvARB glad_glWeightubvARB +typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC)(GLint size, const GLushort *weights); +GLAPI PFNGLWEIGHTUSVARBPROC glad_glWeightusvARB; +#define glWeightusvARB glad_glWeightusvARB +typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC)(GLint size, const GLuint *weights); +GLAPI PFNGLWEIGHTUIVARBPROC glad_glWeightuivARB; +#define glWeightuivARB glad_glWeightuivARB +typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLWEIGHTPOINTERARBPROC glad_glWeightPointerARB; +#define glWeightPointerARB glad_glWeightPointerARB +typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC)(GLint count); +GLAPI PFNGLVERTEXBLENDARBPROC glad_glVertexBlendARB; +#define glVertexBlendARB glad_glVertexBlendARB +#endif +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 +GLAPI int GLAD_GL_ARB_vertex_buffer_object; +typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC)(GLenum target, GLuint buffer); +GLAPI PFNGLBINDBUFFERARBPROC glad_glBindBufferARB; +#define glBindBufferARB glad_glBindBufferARB +typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint *buffers); +GLAPI PFNGLDELETEBUFFERSARBPROC glad_glDeleteBuffersARB; +#define glDeleteBuffersARB glad_glDeleteBuffersARB +typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC)(GLsizei n, GLuint *buffers); +GLAPI PFNGLGENBUFFERSARBPROC glad_glGenBuffersARB; +#define glGenBuffersARB glad_glGenBuffersARB +typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC)(GLuint buffer); +GLAPI PFNGLISBUFFERARBPROC glad_glIsBufferARB; +#define glIsBufferARB glad_glIsBufferARB +typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC)(GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +GLAPI PFNGLBUFFERDATAARBPROC glad_glBufferDataARB; +#define glBufferDataARB glad_glBufferDataARB +typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +GLAPI PFNGLBUFFERSUBDATAARBPROC glad_glBufferSubDataARB; +#define glBufferSubDataARB glad_glBufferSubDataARB +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +GLAPI PFNGLGETBUFFERSUBDATAARBPROC glad_glGetBufferSubDataARB; +#define glGetBufferSubDataARB glad_glGetBufferSubDataARB +typedef void * (APIENTRYP PFNGLMAPBUFFERARBPROC)(GLenum target, GLenum access); +GLAPI PFNGLMAPBUFFERARBPROC glad_glMapBufferARB; +#define glMapBufferARB glad_glMapBufferARB +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC)(GLenum target); +GLAPI PFNGLUNMAPBUFFERARBPROC glad_glUnmapBufferARB; +#define glUnmapBufferARB glad_glUnmapBufferARB +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETBUFFERPARAMETERIVARBPROC glad_glGetBufferParameterivARB; +#define glGetBufferParameterivARB glad_glGetBufferParameterivARB +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC)(GLenum target, GLenum pname, void **params); +GLAPI PFNGLGETBUFFERPOINTERVARBPROC glad_glGetBufferPointervARB; +#define glGetBufferPointervARB glad_glGetBufferPointervARB +#endif +#ifndef GL_ARB_vertex_program +#define GL_ARB_vertex_program 1 +GLAPI int GLAD_GL_ARB_vertex_program; +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIB1DARBPROC glad_glVertexAttrib1dARB; +#define glVertexAttrib1dARB glad_glVertexAttrib1dARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB1DVARBPROC glad_glVertexAttrib1dvARB; +#define glVertexAttrib1dvARB glad_glVertexAttrib1dvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC)(GLuint index, GLfloat x); +GLAPI PFNGLVERTEXATTRIB1FARBPROC glad_glVertexAttrib1fARB; +#define glVertexAttrib1fARB glad_glVertexAttrib1fARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB1FVARBPROC glad_glVertexAttrib1fvARB; +#define glVertexAttrib1fvARB glad_glVertexAttrib1fvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC)(GLuint index, GLshort x); +GLAPI PFNGLVERTEXATTRIB1SARBPROC glad_glVertexAttrib1sARB; +#define glVertexAttrib1sARB glad_glVertexAttrib1sARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB1SVARBPROC glad_glVertexAttrib1svARB; +#define glVertexAttrib1svARB glad_glVertexAttrib1svARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIB2DARBPROC glad_glVertexAttrib2dARB; +#define glVertexAttrib2dARB glad_glVertexAttrib2dARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB2DVARBPROC glad_glVertexAttrib2dvARB; +#define glVertexAttrib2dvARB glad_glVertexAttrib2dvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC)(GLuint index, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXATTRIB2FARBPROC glad_glVertexAttrib2fARB; +#define glVertexAttrib2fARB glad_glVertexAttrib2fARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB2FVARBPROC glad_glVertexAttrib2fvARB; +#define glVertexAttrib2fvARB glad_glVertexAttrib2fvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC)(GLuint index, GLshort x, GLshort y); +GLAPI PFNGLVERTEXATTRIB2SARBPROC glad_glVertexAttrib2sARB; +#define glVertexAttrib2sARB glad_glVertexAttrib2sARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB2SVARBPROC glad_glVertexAttrib2svARB; +#define glVertexAttrib2svARB glad_glVertexAttrib2svARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIB3DARBPROC glad_glVertexAttrib3dARB; +#define glVertexAttrib3dARB glad_glVertexAttrib3dARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB3DVARBPROC glad_glVertexAttrib3dvARB; +#define glVertexAttrib3dvARB glad_glVertexAttrib3dvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXATTRIB3FARBPROC glad_glVertexAttrib3fARB; +#define glVertexAttrib3fARB glad_glVertexAttrib3fARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB3FVARBPROC glad_glVertexAttrib3fvARB; +#define glVertexAttrib3fvARB glad_glVertexAttrib3fvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXATTRIB3SARBPROC glad_glVertexAttrib3sARB; +#define glVertexAttrib3sARB glad_glVertexAttrib3sARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB3SVARBPROC glad_glVertexAttrib3svARB; +#define glVertexAttrib3svARB glad_glVertexAttrib3svARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4NBVARBPROC glad_glVertexAttrib4NbvARB; +#define glVertexAttrib4NbvARB glad_glVertexAttrib4NbvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4NIVARBPROC glad_glVertexAttrib4NivARB; +#define glVertexAttrib4NivARB glad_glVertexAttrib4NivARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4NSVARBPROC glad_glVertexAttrib4NsvARB; +#define glVertexAttrib4NsvARB glad_glVertexAttrib4NsvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI PFNGLVERTEXATTRIB4NUBARBPROC glad_glVertexAttrib4NubARB; +#define glVertexAttrib4NubARB glad_glVertexAttrib4NubARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4NUBVARBPROC glad_glVertexAttrib4NubvARB; +#define glVertexAttrib4NubvARB glad_glVertexAttrib4NubvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4NUIVARBPROC glad_glVertexAttrib4NuivARB; +#define glVertexAttrib4NuivARB glad_glVertexAttrib4NuivARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4NUSVARBPROC glad_glVertexAttrib4NusvARB; +#define glVertexAttrib4NusvARB glad_glVertexAttrib4NusvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4BVARBPROC glad_glVertexAttrib4bvARB; +#define glVertexAttrib4bvARB glad_glVertexAttrib4bvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIB4DARBPROC glad_glVertexAttrib4dARB; +#define glVertexAttrib4dARB glad_glVertexAttrib4dARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB4DVARBPROC glad_glVertexAttrib4dvARB; +#define glVertexAttrib4dvARB glad_glVertexAttrib4dvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXATTRIB4FARBPROC glad_glVertexAttrib4fARB; +#define glVertexAttrib4fARB glad_glVertexAttrib4fARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB4FVARBPROC glad_glVertexAttrib4fvARB; +#define glVertexAttrib4fvARB glad_glVertexAttrib4fvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4IVARBPROC glad_glVertexAttrib4ivARB; +#define glVertexAttrib4ivARB glad_glVertexAttrib4ivARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXATTRIB4SARBPROC glad_glVertexAttrib4sARB; +#define glVertexAttrib4sARB glad_glVertexAttrib4sARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4SVARBPROC glad_glVertexAttrib4svARB; +#define glVertexAttrib4svARB glad_glVertexAttrib4svARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4UBVARBPROC glad_glVertexAttrib4ubvARB; +#define glVertexAttrib4ubvARB glad_glVertexAttrib4ubvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4UIVARBPROC glad_glVertexAttrib4uivARB; +#define glVertexAttrib4uivARB glad_glVertexAttrib4uivARB +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4USVARBPROC glad_glVertexAttrib4usvARB; +#define glVertexAttrib4usvARB glad_glVertexAttrib4usvARB +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBPOINTERARBPROC glad_glVertexAttribPointerARB; +#define glVertexAttribPointerARB glad_glVertexAttribPointerARB +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +GLAPI PFNGLENABLEVERTEXATTRIBARRAYARBPROC glad_glEnableVertexAttribArrayARB; +#define glEnableVertexAttribArrayARB glad_glEnableVertexAttribArrayARB +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +GLAPI PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glad_glDisableVertexAttribArrayARB; +#define glDisableVertexAttribArrayARB glad_glDisableVertexAttribArrayARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBDVARBPROC glad_glGetVertexAttribdvARB; +#define glGetVertexAttribdvARB glad_glGetVertexAttribdvARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBFVARBPROC glad_glGetVertexAttribfvARB; +#define glGetVertexAttribfvARB glad_glGetVertexAttribfvARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIVARBPROC glad_glGetVertexAttribivARB; +#define glGetVertexAttribivARB glad_glGetVertexAttribivARB +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC)(GLuint index, GLenum pname, void **pointer); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVARBPROC glad_glGetVertexAttribPointervARB; +#define glGetVertexAttribPointervARB glad_glGetVertexAttribPointervARB +#endif +#ifndef GL_ARB_vertex_shader +#define GL_ARB_vertex_shader 1 +GLAPI int GLAD_GL_ARB_vertex_shader; +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC)(GLhandleARB programObj, GLuint index, const GLcharARB *name); +GLAPI PFNGLBINDATTRIBLOCATIONARBPROC glad_glBindAttribLocationARB; +#define glBindAttribLocationARB glad_glBindAttribLocationARB +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI PFNGLGETACTIVEATTRIBARBPROC glad_glGetActiveAttribARB; +#define glGetActiveAttribARB glad_glGetActiveAttribARB +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC)(GLhandleARB programObj, const GLcharARB *name); +GLAPI PFNGLGETATTRIBLOCATIONARBPROC glad_glGetAttribLocationARB; +#define glGetAttribLocationARB glad_glGetAttribLocationARB +#endif +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +GLAPI int GLAD_GL_ARB_vertex_type_10f_11f_11f_rev; +#endif +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +GLAPI int GLAD_GL_ARB_vertex_type_2_10_10_10_rev; +#endif +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 +GLAPI int GLAD_GL_ARB_viewport_array; +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYDVNVPROC)(GLuint first, GLsizei count, const GLdouble *v); +GLAPI PFNGLDEPTHRANGEARRAYDVNVPROC glad_glDepthRangeArraydvNV; +#define glDepthRangeArraydvNV glad_glDepthRangeArraydvNV +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDDNVPROC)(GLuint index, GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEINDEXEDDNVPROC glad_glDepthRangeIndexeddNV; +#define glDepthRangeIndexeddNV glad_glDepthRangeIndexeddNV +#endif +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 +GLAPI int GLAD_GL_ARB_window_pos; +typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC)(GLdouble x, GLdouble y); +GLAPI PFNGLWINDOWPOS2DARBPROC glad_glWindowPos2dARB; +#define glWindowPos2dARB glad_glWindowPos2dARB +typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS2DVARBPROC glad_glWindowPos2dvARB; +#define glWindowPos2dvARB glad_glWindowPos2dvARB +typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC)(GLfloat x, GLfloat y); +GLAPI PFNGLWINDOWPOS2FARBPROC glad_glWindowPos2fARB; +#define glWindowPos2fARB glad_glWindowPos2fARB +typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS2FVARBPROC glad_glWindowPos2fvARB; +#define glWindowPos2fvARB glad_glWindowPos2fvARB +typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC)(GLint x, GLint y); +GLAPI PFNGLWINDOWPOS2IARBPROC glad_glWindowPos2iARB; +#define glWindowPos2iARB glad_glWindowPos2iARB +typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS2IVARBPROC glad_glWindowPos2ivARB; +#define glWindowPos2ivARB glad_glWindowPos2ivARB +typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC)(GLshort x, GLshort y); +GLAPI PFNGLWINDOWPOS2SARBPROC glad_glWindowPos2sARB; +#define glWindowPos2sARB glad_glWindowPos2sARB +typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS2SVARBPROC glad_glWindowPos2svARB; +#define glWindowPos2svARB glad_glWindowPos2svARB +typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLWINDOWPOS3DARBPROC glad_glWindowPos3dARB; +#define glWindowPos3dARB glad_glWindowPos3dARB +typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS3DVARBPROC glad_glWindowPos3dvARB; +#define glWindowPos3dvARB glad_glWindowPos3dvARB +typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLWINDOWPOS3FARBPROC glad_glWindowPos3fARB; +#define glWindowPos3fARB glad_glWindowPos3fARB +typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS3FVARBPROC glad_glWindowPos3fvARB; +#define glWindowPos3fvARB glad_glWindowPos3fvARB +typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC)(GLint x, GLint y, GLint z); +GLAPI PFNGLWINDOWPOS3IARBPROC glad_glWindowPos3iARB; +#define glWindowPos3iARB glad_glWindowPos3iARB +typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS3IVARBPROC glad_glWindowPos3ivARB; +#define glWindowPos3ivARB glad_glWindowPos3ivARB +typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC)(GLshort x, GLshort y, GLshort z); +GLAPI PFNGLWINDOWPOS3SARBPROC glad_glWindowPos3sARB; +#define glWindowPos3sARB glad_glWindowPos3sARB +typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS3SVARBPROC glad_glWindowPos3svARB; +#define glWindowPos3svARB glad_glWindowPos3svARB +#endif +#ifndef GL_ATI_draw_buffers +#define GL_ATI_draw_buffers 1 +GLAPI int GLAD_GL_ATI_draw_buffers; +typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC)(GLsizei n, const GLenum *bufs); +GLAPI PFNGLDRAWBUFFERSATIPROC glad_glDrawBuffersATI; +#define glDrawBuffersATI glad_glDrawBuffersATI +#endif +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +GLAPI int GLAD_GL_ATI_element_array; +typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC)(GLenum type, const void *pointer); +GLAPI PFNGLELEMENTPOINTERATIPROC glad_glElementPointerATI; +#define glElementPointerATI glad_glElementPointerATI +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC)(GLenum mode, GLsizei count); +GLAPI PFNGLDRAWELEMENTARRAYATIPROC glad_glDrawElementArrayATI; +#define glDrawElementArrayATI glad_glDrawElementArrayATI +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count); +GLAPI PFNGLDRAWRANGEELEMENTARRAYATIPROC glad_glDrawRangeElementArrayATI; +#define glDrawRangeElementArrayATI glad_glDrawRangeElementArrayATI +#endif +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +GLAPI int GLAD_GL_ATI_envmap_bumpmap; +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC)(GLenum pname, const GLint *param); +GLAPI PFNGLTEXBUMPPARAMETERIVATIPROC glad_glTexBumpParameterivATI; +#define glTexBumpParameterivATI glad_glTexBumpParameterivATI +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC)(GLenum pname, const GLfloat *param); +GLAPI PFNGLTEXBUMPPARAMETERFVATIPROC glad_glTexBumpParameterfvATI; +#define glTexBumpParameterfvATI glad_glTexBumpParameterfvATI +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC)(GLenum pname, GLint *param); +GLAPI PFNGLGETTEXBUMPPARAMETERIVATIPROC glad_glGetTexBumpParameterivATI; +#define glGetTexBumpParameterivATI glad_glGetTexBumpParameterivATI +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC)(GLenum pname, GLfloat *param); +GLAPI PFNGLGETTEXBUMPPARAMETERFVATIPROC glad_glGetTexBumpParameterfvATI; +#define glGetTexBumpParameterfvATI glad_glGetTexBumpParameterfvATI +#endif +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +GLAPI int GLAD_GL_ATI_fragment_shader; +typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range); +GLAPI PFNGLGENFRAGMENTSHADERSATIPROC glad_glGenFragmentShadersATI; +#define glGenFragmentShadersATI glad_glGenFragmentShadersATI +typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id); +GLAPI PFNGLBINDFRAGMENTSHADERATIPROC glad_glBindFragmentShaderATI; +#define glBindFragmentShaderATI glad_glBindFragmentShaderATI +typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id); +GLAPI PFNGLDELETEFRAGMENTSHADERATIPROC glad_glDeleteFragmentShaderATI; +#define glDeleteFragmentShaderATI glad_glDeleteFragmentShaderATI +typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC)(void); +GLAPI PFNGLBEGINFRAGMENTSHADERATIPROC glad_glBeginFragmentShaderATI; +#define glBeginFragmentShaderATI glad_glBeginFragmentShaderATI +typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC)(void); +GLAPI PFNGLENDFRAGMENTSHADERATIPROC glad_glEndFragmentShaderATI; +#define glEndFragmentShaderATI glad_glEndFragmentShaderATI +typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle); +GLAPI PFNGLPASSTEXCOORDATIPROC glad_glPassTexCoordATI; +#define glPassTexCoordATI glad_glPassTexCoordATI +typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle); +GLAPI PFNGLSAMPLEMAPATIPROC glad_glSampleMapATI; +#define glSampleMapATI glad_glSampleMapATI +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI PFNGLCOLORFRAGMENTOP1ATIPROC glad_glColorFragmentOp1ATI; +#define glColorFragmentOp1ATI glad_glColorFragmentOp1ATI +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI PFNGLCOLORFRAGMENTOP2ATIPROC glad_glColorFragmentOp2ATI; +#define glColorFragmentOp2ATI glad_glColorFragmentOp2ATI +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +GLAPI PFNGLCOLORFRAGMENTOP3ATIPROC glad_glColorFragmentOp3ATI; +#define glColorFragmentOp3ATI glad_glColorFragmentOp3ATI +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI PFNGLALPHAFRAGMENTOP1ATIPROC glad_glAlphaFragmentOp1ATI; +#define glAlphaFragmentOp1ATI glad_glAlphaFragmentOp1ATI +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI PFNGLALPHAFRAGMENTOP2ATIPROC glad_glAlphaFragmentOp2ATI; +#define glAlphaFragmentOp2ATI glad_glAlphaFragmentOp2ATI +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +GLAPI PFNGLALPHAFRAGMENTOP3ATIPROC glad_glAlphaFragmentOp3ATI; +#define glAlphaFragmentOp3ATI glad_glAlphaFragmentOp3ATI +typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat *value); +GLAPI PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glad_glSetFragmentShaderConstantATI; +#define glSetFragmentShaderConstantATI glad_glSetFragmentShaderConstantATI +#endif +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 +GLAPI int GLAD_GL_ATI_map_object_buffer; +typedef void * (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer); +GLAPI PFNGLMAPOBJECTBUFFERATIPROC glad_glMapObjectBufferATI; +#define glMapObjectBufferATI glad_glMapObjectBufferATI +typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer); +GLAPI PFNGLUNMAPOBJECTBUFFERATIPROC glad_glUnmapObjectBufferATI; +#define glUnmapObjectBufferATI glad_glUnmapObjectBufferATI +#endif +#ifndef GL_ATI_meminfo +#define GL_ATI_meminfo 1 +GLAPI int GLAD_GL_ATI_meminfo; +#endif +#ifndef GL_ATI_pixel_format_float +#define GL_ATI_pixel_format_float 1 +GLAPI int GLAD_GL_ATI_pixel_format_float; +#endif +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +GLAPI int GLAD_GL_ATI_pn_triangles; +typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPNTRIANGLESIATIPROC glad_glPNTrianglesiATI; +#define glPNTrianglesiATI glad_glPNTrianglesiATI +typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPNTRIANGLESFATIPROC glad_glPNTrianglesfATI; +#define glPNTrianglesfATI glad_glPNTrianglesfATI +#endif +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 +GLAPI int GLAD_GL_ATI_separate_stencil; +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI PFNGLSTENCILOPSEPARATEATIPROC glad_glStencilOpSeparateATI; +#define glStencilOpSeparateATI glad_glStencilOpSeparateATI +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCSEPARATEATIPROC glad_glStencilFuncSeparateATI; +#define glStencilFuncSeparateATI glad_glStencilFuncSeparateATI +#endif +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 +GLAPI int GLAD_GL_ATI_text_fragment_shader; +#endif +#ifndef GL_ATI_texture_env_combine3 +#define GL_ATI_texture_env_combine3 1 +GLAPI int GLAD_GL_ATI_texture_env_combine3; +#endif +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +GLAPI int GLAD_GL_ATI_texture_float; +#endif +#ifndef GL_ATI_texture_mirror_once +#define GL_ATI_texture_mirror_once 1 +GLAPI int GLAD_GL_ATI_texture_mirror_once; +#endif +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +GLAPI int GLAD_GL_ATI_vertex_array_object; +typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC)(GLsizei size, const void *pointer, GLenum usage); +GLAPI PFNGLNEWOBJECTBUFFERATIPROC glad_glNewObjectBufferATI; +#define glNewObjectBufferATI glad_glNewObjectBufferATI +typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC)(GLuint buffer); +GLAPI PFNGLISOBJECTBUFFERATIPROC glad_glIsObjectBufferATI; +#define glIsObjectBufferATI glad_glIsObjectBufferATI +typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC)(GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +GLAPI PFNGLUPDATEOBJECTBUFFERATIPROC glad_glUpdateObjectBufferATI; +#define glUpdateObjectBufferATI glad_glUpdateObjectBufferATI +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC)(GLuint buffer, GLenum pname, GLfloat *params); +GLAPI PFNGLGETOBJECTBUFFERFVATIPROC glad_glGetObjectBufferfvATI; +#define glGetObjectBufferfvATI glad_glGetObjectBufferfvATI +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC)(GLuint buffer, GLenum pname, GLint *params); +GLAPI PFNGLGETOBJECTBUFFERIVATIPROC glad_glGetObjectBufferivATI; +#define glGetObjectBufferivATI glad_glGetObjectBufferivATI +typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC)(GLuint buffer); +GLAPI PFNGLFREEOBJECTBUFFERATIPROC glad_glFreeObjectBufferATI; +#define glFreeObjectBufferATI glad_glFreeObjectBufferATI +typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC)(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI PFNGLARRAYOBJECTATIPROC glad_glArrayObjectATI; +#define glArrayObjectATI glad_glArrayObjectATI +typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC)(GLenum array, GLenum pname, GLfloat *params); +GLAPI PFNGLGETARRAYOBJECTFVATIPROC glad_glGetArrayObjectfvATI; +#define glGetArrayObjectfvATI glad_glGetArrayObjectfvATI +typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC)(GLenum array, GLenum pname, GLint *params); +GLAPI PFNGLGETARRAYOBJECTIVATIPROC glad_glGetArrayObjectivATI; +#define glGetArrayObjectivATI glad_glGetArrayObjectivATI +typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC)(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI PFNGLVARIANTARRAYOBJECTATIPROC glad_glVariantArrayObjectATI; +#define glVariantArrayObjectATI glad_glVariantArrayObjectATI +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC)(GLuint id, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVARIANTARRAYOBJECTFVATIPROC glad_glGetVariantArrayObjectfvATI; +#define glGetVariantArrayObjectfvATI glad_glGetVariantArrayObjectfvATI +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETVARIANTARRAYOBJECTIVATIPROC glad_glGetVariantArrayObjectivATI; +#define glGetVariantArrayObjectivATI glad_glGetVariantArrayObjectivATI +#endif +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 +GLAPI int GLAD_GL_ATI_vertex_attrib_array_object; +typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glad_glVertexAttribArrayObjectATI; +#define glVertexAttribArrayObjectATI glad_glVertexAttribArrayObjectATI +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC glad_glGetVertexAttribArrayObjectfvATI; +#define glGetVertexAttribArrayObjectfvATI glad_glGetVertexAttribArrayObjectfvATI +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC glad_glGetVertexAttribArrayObjectivATI; +#define glGetVertexAttribArrayObjectivATI glad_glGetVertexAttribArrayObjectivATI +#endif +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +GLAPI int GLAD_GL_ATI_vertex_streams; +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC)(GLenum stream, GLshort x); +GLAPI PFNGLVERTEXSTREAM1SATIPROC glad_glVertexStream1sATI; +#define glVertexStream1sATI glad_glVertexStream1sATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLVERTEXSTREAM1SVATIPROC glad_glVertexStream1svATI; +#define glVertexStream1svATI glad_glVertexStream1svATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC)(GLenum stream, GLint x); +GLAPI PFNGLVERTEXSTREAM1IATIPROC glad_glVertexStream1iATI; +#define glVertexStream1iATI glad_glVertexStream1iATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLVERTEXSTREAM1IVATIPROC glad_glVertexStream1ivATI; +#define glVertexStream1ivATI glad_glVertexStream1ivATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC)(GLenum stream, GLfloat x); +GLAPI PFNGLVERTEXSTREAM1FATIPROC glad_glVertexStream1fATI; +#define glVertexStream1fATI glad_glVertexStream1fATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLVERTEXSTREAM1FVATIPROC glad_glVertexStream1fvATI; +#define glVertexStream1fvATI glad_glVertexStream1fvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC)(GLenum stream, GLdouble x); +GLAPI PFNGLVERTEXSTREAM1DATIPROC glad_glVertexStream1dATI; +#define glVertexStream1dATI glad_glVertexStream1dATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLVERTEXSTREAM1DVATIPROC glad_glVertexStream1dvATI; +#define glVertexStream1dvATI glad_glVertexStream1dvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC)(GLenum stream, GLshort x, GLshort y); +GLAPI PFNGLVERTEXSTREAM2SATIPROC glad_glVertexStream2sATI; +#define glVertexStream2sATI glad_glVertexStream2sATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLVERTEXSTREAM2SVATIPROC glad_glVertexStream2svATI; +#define glVertexStream2svATI glad_glVertexStream2svATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC)(GLenum stream, GLint x, GLint y); +GLAPI PFNGLVERTEXSTREAM2IATIPROC glad_glVertexStream2iATI; +#define glVertexStream2iATI glad_glVertexStream2iATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLVERTEXSTREAM2IVATIPROC glad_glVertexStream2ivATI; +#define glVertexStream2ivATI glad_glVertexStream2ivATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC)(GLenum stream, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXSTREAM2FATIPROC glad_glVertexStream2fATI; +#define glVertexStream2fATI glad_glVertexStream2fATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLVERTEXSTREAM2FVATIPROC glad_glVertexStream2fvATI; +#define glVertexStream2fvATI glad_glVertexStream2fvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC)(GLenum stream, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXSTREAM2DATIPROC glad_glVertexStream2dATI; +#define glVertexStream2dATI glad_glVertexStream2dATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLVERTEXSTREAM2DVATIPROC glad_glVertexStream2dvATI; +#define glVertexStream2dvATI glad_glVertexStream2dvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXSTREAM3SATIPROC glad_glVertexStream3sATI; +#define glVertexStream3sATI glad_glVertexStream3sATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLVERTEXSTREAM3SVATIPROC glad_glVertexStream3svATI; +#define glVertexStream3svATI glad_glVertexStream3svATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC)(GLenum stream, GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEXSTREAM3IATIPROC glad_glVertexStream3iATI; +#define glVertexStream3iATI glad_glVertexStream3iATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLVERTEXSTREAM3IVATIPROC glad_glVertexStream3ivATI; +#define glVertexStream3ivATI glad_glVertexStream3ivATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXSTREAM3FATIPROC glad_glVertexStream3fATI; +#define glVertexStream3fATI glad_glVertexStream3fATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLVERTEXSTREAM3FVATIPROC glad_glVertexStream3fvATI; +#define glVertexStream3fvATI glad_glVertexStream3fvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC)(GLenum stream, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXSTREAM3DATIPROC glad_glVertexStream3dATI; +#define glVertexStream3dATI glad_glVertexStream3dATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLVERTEXSTREAM3DVATIPROC glad_glVertexStream3dvATI; +#define glVertexStream3dvATI glad_glVertexStream3dvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXSTREAM4SATIPROC glad_glVertexStream4sATI; +#define glVertexStream4sATI glad_glVertexStream4sATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLVERTEXSTREAM4SVATIPROC glad_glVertexStream4svATI; +#define glVertexStream4svATI glad_glVertexStream4svATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC)(GLenum stream, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEXSTREAM4IATIPROC glad_glVertexStream4iATI; +#define glVertexStream4iATI glad_glVertexStream4iATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLVERTEXSTREAM4IVATIPROC glad_glVertexStream4ivATI; +#define glVertexStream4ivATI glad_glVertexStream4ivATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXSTREAM4FATIPROC glad_glVertexStream4fATI; +#define glVertexStream4fATI glad_glVertexStream4fATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLVERTEXSTREAM4FVATIPROC glad_glVertexStream4fvATI; +#define glVertexStream4fvATI glad_glVertexStream4fvATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXSTREAM4DATIPROC glad_glVertexStream4dATI; +#define glVertexStream4dATI glad_glVertexStream4dATI +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLVERTEXSTREAM4DVATIPROC glad_glVertexStream4dvATI; +#define glVertexStream4dvATI glad_glVertexStream4dvATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC)(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI PFNGLNORMALSTREAM3BATIPROC glad_glNormalStream3bATI; +#define glNormalStream3bATI glad_glNormalStream3bATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC)(GLenum stream, const GLbyte *coords); +GLAPI PFNGLNORMALSTREAM3BVATIPROC glad_glNormalStream3bvATI; +#define glNormalStream3bvATI glad_glNormalStream3bvATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC)(GLenum stream, GLshort nx, GLshort ny, GLshort nz); +GLAPI PFNGLNORMALSTREAM3SATIPROC glad_glNormalStream3sATI; +#define glNormalStream3sATI glad_glNormalStream3sATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); +GLAPI PFNGLNORMALSTREAM3SVATIPROC glad_glNormalStream3svATI; +#define glNormalStream3svATI glad_glNormalStream3svATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC)(GLenum stream, GLint nx, GLint ny, GLint nz); +GLAPI PFNGLNORMALSTREAM3IATIPROC glad_glNormalStream3iATI; +#define glNormalStream3iATI glad_glNormalStream3iATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); +GLAPI PFNGLNORMALSTREAM3IVATIPROC glad_glNormalStream3ivATI; +#define glNormalStream3ivATI glad_glNormalStream3ivATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI PFNGLNORMALSTREAM3FATIPROC glad_glNormalStream3fATI; +#define glNormalStream3fATI glad_glNormalStream3fATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); +GLAPI PFNGLNORMALSTREAM3FVATIPROC glad_glNormalStream3fvATI; +#define glNormalStream3fvATI glad_glNormalStream3fvATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI PFNGLNORMALSTREAM3DATIPROC glad_glNormalStream3dATI; +#define glNormalStream3dATI glad_glNormalStream3dATI +typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); +GLAPI PFNGLNORMALSTREAM3DVATIPROC glad_glNormalStream3dvATI; +#define glNormalStream3dvATI glad_glNormalStream3dvATI +typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)(GLenum stream); +GLAPI PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC glad_glClientActiveVertexStreamATI; +#define glClientActiveVertexStreamATI glad_glClientActiveVertexStreamATI +typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC)(GLenum pname, GLint param); +GLAPI PFNGLVERTEXBLENDENVIATIPROC glad_glVertexBlendEnviATI; +#define glVertexBlendEnviATI glad_glVertexBlendEnviATI +typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLVERTEXBLENDENVFATIPROC glad_glVertexBlendEnvfATI; +#define glVertexBlendEnvfATI glad_glVertexBlendEnvfATI +#endif +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +GLAPI int GLAD_GL_EXT_422_pixels; +#endif +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +GLAPI int GLAD_GL_EXT_EGL_image_storage; +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)(GLenum target, GLeglImageOES image, const GLint* attrib_list); +GLAPI PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC glad_glEGLImageTargetTexStorageEXT; +#define glEGLImageTargetTexStorageEXT glad_glEGLImageTargetTexStorageEXT +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)(GLuint texture, GLeglImageOES image, const GLint* attrib_list); +GLAPI PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC glad_glEGLImageTargetTextureStorageEXT; +#define glEGLImageTargetTextureStorageEXT glad_glEGLImageTargetTextureStorageEXT +#endif +#ifndef GL_EXT_EGL_sync +#define GL_EXT_EGL_sync 1 +GLAPI int GLAD_GL_EXT_EGL_sync; +#endif +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +GLAPI int GLAD_GL_EXT_abgr; +#endif +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +GLAPI int GLAD_GL_EXT_bgra; +#endif +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +GLAPI int GLAD_GL_EXT_bindable_uniform; +typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC)(GLuint program, GLint location, GLuint buffer); +GLAPI PFNGLUNIFORMBUFFEREXTPROC glad_glUniformBufferEXT; +#define glUniformBufferEXT glad_glUniformBufferEXT +typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC)(GLuint program, GLint location); +GLAPI PFNGLGETUNIFORMBUFFERSIZEEXTPROC glad_glGetUniformBufferSizeEXT; +#define glGetUniformBufferSizeEXT glad_glGetUniformBufferSizeEXT +typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC)(GLuint program, GLint location); +GLAPI PFNGLGETUNIFORMOFFSETEXTPROC glad_glGetUniformOffsetEXT; +#define glGetUniformOffsetEXT glad_glGetUniformOffsetEXT +#endif +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +GLAPI int GLAD_GL_EXT_blend_color; +typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLBLENDCOLOREXTPROC glad_glBlendColorEXT; +#define glBlendColorEXT glad_glBlendColorEXT +#endif +#ifndef GL_EXT_blend_equation_separate +#define GL_EXT_blend_equation_separate 1 +GLAPI int GLAD_GL_EXT_blend_equation_separate; +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC)(GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEEXTPROC glad_glBlendEquationSeparateEXT; +#define glBlendEquationSeparateEXT glad_glBlendEquationSeparateEXT +#endif +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +GLAPI int GLAD_GL_EXT_blend_func_separate; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEEXTPROC glad_glBlendFuncSeparateEXT; +#define glBlendFuncSeparateEXT glad_glBlendFuncSeparateEXT +#endif +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +GLAPI int GLAD_GL_EXT_blend_logic_op; +#endif +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +GLAPI int GLAD_GL_EXT_blend_minmax; +typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC)(GLenum mode); +GLAPI PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT; +#define glBlendEquationEXT glad_glBlendEquationEXT +#endif +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +GLAPI int GLAD_GL_EXT_blend_subtract; +#endif +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +GLAPI int GLAD_GL_EXT_clip_volume_hint; +#endif +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +GLAPI int GLAD_GL_EXT_cmyka; +#endif +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 +GLAPI int GLAD_GL_EXT_color_subtable; +typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCOLORSUBTABLEEXTPROC glad_glColorSubTableEXT; +#define glColorSubTableEXT glad_glColorSubTableEXT +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCOLORSUBTABLEEXTPROC glad_glCopyColorSubTableEXT; +#define glCopyColorSubTableEXT glad_glCopyColorSubTableEXT +#endif +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +GLAPI int GLAD_GL_EXT_compiled_vertex_array; +typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC)(GLint first, GLsizei count); +GLAPI PFNGLLOCKARRAYSEXTPROC glad_glLockArraysEXT; +#define glLockArraysEXT glad_glLockArraysEXT +typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC)(void); +GLAPI PFNGLUNLOCKARRAYSEXTPROC glad_glUnlockArraysEXT; +#define glUnlockArraysEXT glad_glUnlockArraysEXT +#endif +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +GLAPI int GLAD_GL_EXT_convolution; +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI PFNGLCONVOLUTIONFILTER1DEXTPROC glad_glConvolutionFilter1DEXT; +#define glConvolutionFilter1DEXT glad_glConvolutionFilter1DEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI PFNGLCONVOLUTIONFILTER2DEXTPROC glad_glConvolutionFilter2DEXT; +#define glConvolutionFilter2DEXT glad_glConvolutionFilter2DEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC)(GLenum target, GLenum pname, GLfloat params); +GLAPI PFNGLCONVOLUTIONPARAMETERFEXTPROC glad_glConvolutionParameterfEXT; +#define glConvolutionParameterfEXT glad_glConvolutionParameterfEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLCONVOLUTIONPARAMETERFVEXTPROC glad_glConvolutionParameterfvEXT; +#define glConvolutionParameterfvEXT glad_glConvolutionParameterfvEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC)(GLenum target, GLenum pname, GLint params); +GLAPI PFNGLCONVOLUTIONPARAMETERIEXTPROC glad_glConvolutionParameteriEXT; +#define glConvolutionParameteriEXT glad_glConvolutionParameteriEXT +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLCONVOLUTIONPARAMETERIVEXTPROC glad_glConvolutionParameterivEXT; +#define glConvolutionParameterivEXT glad_glConvolutionParameterivEXT +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC glad_glCopyConvolutionFilter1DEXT; +#define glCopyConvolutionFilter1DEXT glad_glCopyConvolutionFilter1DEXT +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC glad_glCopyConvolutionFilter2DEXT; +#define glCopyConvolutionFilter2DEXT glad_glCopyConvolutionFilter2DEXT +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, void *image); +GLAPI PFNGLGETCONVOLUTIONFILTEREXTPROC glad_glGetConvolutionFilterEXT; +#define glGetConvolutionFilterEXT glad_glGetConvolutionFilterEXT +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC glad_glGetConvolutionParameterfvEXT; +#define glGetConvolutionParameterfvEXT glad_glGetConvolutionParameterfvEXT +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glad_glGetConvolutionParameterivEXT; +#define glGetConvolutionParameterivEXT glad_glGetConvolutionParameterivEXT +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI PFNGLGETSEPARABLEFILTEREXTPROC glad_glGetSeparableFilterEXT; +#define glGetSeparableFilterEXT glad_glGetSeparableFilterEXT +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +GLAPI PFNGLSEPARABLEFILTER2DEXTPROC glad_glSeparableFilter2DEXT; +#define glSeparableFilter2DEXT glad_glSeparableFilter2DEXT +#endif +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +GLAPI int GLAD_GL_EXT_coordinate_frame; +typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC)(GLbyte tx, GLbyte ty, GLbyte tz); +GLAPI PFNGLTANGENT3BEXTPROC glad_glTangent3bEXT; +#define glTangent3bEXT glad_glTangent3bEXT +typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC)(const GLbyte *v); +GLAPI PFNGLTANGENT3BVEXTPROC glad_glTangent3bvEXT; +#define glTangent3bvEXT glad_glTangent3bvEXT +typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC)(GLdouble tx, GLdouble ty, GLdouble tz); +GLAPI PFNGLTANGENT3DEXTPROC glad_glTangent3dEXT; +#define glTangent3dEXT glad_glTangent3dEXT +typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC)(const GLdouble *v); +GLAPI PFNGLTANGENT3DVEXTPROC glad_glTangent3dvEXT; +#define glTangent3dvEXT glad_glTangent3dvEXT +typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC)(GLfloat tx, GLfloat ty, GLfloat tz); +GLAPI PFNGLTANGENT3FEXTPROC glad_glTangent3fEXT; +#define glTangent3fEXT glad_glTangent3fEXT +typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC)(const GLfloat *v); +GLAPI PFNGLTANGENT3FVEXTPROC glad_glTangent3fvEXT; +#define glTangent3fvEXT glad_glTangent3fvEXT +typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC)(GLint tx, GLint ty, GLint tz); +GLAPI PFNGLTANGENT3IEXTPROC glad_glTangent3iEXT; +#define glTangent3iEXT glad_glTangent3iEXT +typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC)(const GLint *v); +GLAPI PFNGLTANGENT3IVEXTPROC glad_glTangent3ivEXT; +#define glTangent3ivEXT glad_glTangent3ivEXT +typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC)(GLshort tx, GLshort ty, GLshort tz); +GLAPI PFNGLTANGENT3SEXTPROC glad_glTangent3sEXT; +#define glTangent3sEXT glad_glTangent3sEXT +typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC)(const GLshort *v); +GLAPI PFNGLTANGENT3SVEXTPROC glad_glTangent3svEXT; +#define glTangent3svEXT glad_glTangent3svEXT +typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC)(GLbyte bx, GLbyte by, GLbyte bz); +GLAPI PFNGLBINORMAL3BEXTPROC glad_glBinormal3bEXT; +#define glBinormal3bEXT glad_glBinormal3bEXT +typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC)(const GLbyte *v); +GLAPI PFNGLBINORMAL3BVEXTPROC glad_glBinormal3bvEXT; +#define glBinormal3bvEXT glad_glBinormal3bvEXT +typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC)(GLdouble bx, GLdouble by, GLdouble bz); +GLAPI PFNGLBINORMAL3DEXTPROC glad_glBinormal3dEXT; +#define glBinormal3dEXT glad_glBinormal3dEXT +typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC)(const GLdouble *v); +GLAPI PFNGLBINORMAL3DVEXTPROC glad_glBinormal3dvEXT; +#define glBinormal3dvEXT glad_glBinormal3dvEXT +typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC)(GLfloat bx, GLfloat by, GLfloat bz); +GLAPI PFNGLBINORMAL3FEXTPROC glad_glBinormal3fEXT; +#define glBinormal3fEXT glad_glBinormal3fEXT +typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC)(const GLfloat *v); +GLAPI PFNGLBINORMAL3FVEXTPROC glad_glBinormal3fvEXT; +#define glBinormal3fvEXT glad_glBinormal3fvEXT +typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC)(GLint bx, GLint by, GLint bz); +GLAPI PFNGLBINORMAL3IEXTPROC glad_glBinormal3iEXT; +#define glBinormal3iEXT glad_glBinormal3iEXT +typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC)(const GLint *v); +GLAPI PFNGLBINORMAL3IVEXTPROC glad_glBinormal3ivEXT; +#define glBinormal3ivEXT glad_glBinormal3ivEXT +typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC)(GLshort bx, GLshort by, GLshort bz); +GLAPI PFNGLBINORMAL3SEXTPROC glad_glBinormal3sEXT; +#define glBinormal3sEXT glad_glBinormal3sEXT +typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC)(const GLshort *v); +GLAPI PFNGLBINORMAL3SVEXTPROC glad_glBinormal3svEXT; +#define glBinormal3svEXT glad_glBinormal3svEXT +typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLTANGENTPOINTEREXTPROC glad_glTangentPointerEXT; +#define glTangentPointerEXT glad_glTangentPointerEXT +typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLBINORMALPOINTEREXTPROC glad_glBinormalPointerEXT; +#define glBinormalPointerEXT glad_glBinormalPointerEXT +#endif +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 +GLAPI int GLAD_GL_EXT_copy_texture; +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYTEXIMAGE1DEXTPROC glad_glCopyTexImage1DEXT; +#define glCopyTexImage1DEXT glad_glCopyTexImage1DEXT +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYTEXIMAGE2DEXTPROC glad_glCopyTexImage2DEXT; +#define glCopyTexImage2DEXT glad_glCopyTexImage2DEXT +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXSUBIMAGE1DEXTPROC glad_glCopyTexSubImage1DEXT; +#define glCopyTexSubImage1DEXT glad_glCopyTexSubImage1DEXT +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE2DEXTPROC glad_glCopyTexSubImage2DEXT; +#define glCopyTexSubImage2DEXT glad_glCopyTexSubImage2DEXT +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE3DEXTPROC glad_glCopyTexSubImage3DEXT; +#define glCopyTexSubImage3DEXT glad_glCopyTexSubImage3DEXT +#endif +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +GLAPI int GLAD_GL_EXT_cull_vertex; +typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC)(GLenum pname, GLdouble *params); +GLAPI PFNGLCULLPARAMETERDVEXTPROC glad_glCullParameterdvEXT; +#define glCullParameterdvEXT glad_glCullParameterdvEXT +typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC)(GLenum pname, GLfloat *params); +GLAPI PFNGLCULLPARAMETERFVEXTPROC glad_glCullParameterfvEXT; +#define glCullParameterfvEXT glad_glCullParameterfvEXT +#endif +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +GLAPI int GLAD_GL_EXT_debug_label; +typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC)(GLenum type, GLuint object, GLsizei length, const GLchar *label); +GLAPI PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT; +#define glLabelObjectEXT glad_glLabelObjectEXT +typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC)(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT; +#define glGetObjectLabelEXT glad_glGetObjectLabelEXT +#endif +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +GLAPI int GLAD_GL_EXT_debug_marker; +typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar *marker); +GLAPI PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT; +#define glInsertEventMarkerEXT glad_glInsertEventMarkerEXT +typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar *marker); +GLAPI PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT; +#define glPushGroupMarkerEXT glad_glPushGroupMarkerEXT +typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC)(void); +GLAPI PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT; +#define glPopGroupMarkerEXT glad_glPopGroupMarkerEXT +#endif +#ifndef GL_EXT_depth_bounds_test +#define GL_EXT_depth_bounds_test 1 +GLAPI int GLAD_GL_EXT_depth_bounds_test; +typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC)(GLclampd zmin, GLclampd zmax); +GLAPI PFNGLDEPTHBOUNDSEXTPROC glad_glDepthBoundsEXT; +#define glDepthBoundsEXT glad_glDepthBoundsEXT +#endif +#ifndef GL_EXT_direct_state_access +#define GL_EXT_direct_state_access 1 +GLAPI int GLAD_GL_EXT_direct_state_access; +typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat *m); +GLAPI PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT; +#define glMatrixLoadfEXT glad_glMatrixLoadfEXT +typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble *m); +GLAPI PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT; +#define glMatrixLoaddEXT glad_glMatrixLoaddEXT +typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat *m); +GLAPI PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT; +#define glMatrixMultfEXT glad_glMatrixMultfEXT +typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble *m); +GLAPI PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT; +#define glMatrixMultdEXT glad_glMatrixMultdEXT +typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode); +GLAPI PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT; +#define glMatrixLoadIdentityEXT glad_glMatrixLoadIdentityEXT +typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT; +#define glMatrixRotatefEXT glad_glMatrixRotatefEXT +typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT; +#define glMatrixRotatedEXT glad_glMatrixRotatedEXT +typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT; +#define glMatrixScalefEXT glad_glMatrixScalefEXT +typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT; +#define glMatrixScaledEXT glad_glMatrixScaledEXT +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT; +#define glMatrixTranslatefEXT glad_glMatrixTranslatefEXT +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT; +#define glMatrixTranslatedEXT glad_glMatrixTranslatedEXT +typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT; +#define glMatrixFrustumEXT glad_glMatrixFrustumEXT +typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT; +#define glMatrixOrthoEXT glad_glMatrixOrthoEXT +typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC)(GLenum mode); +GLAPI PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT; +#define glMatrixPopEXT glad_glMatrixPopEXT +typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC)(GLenum mode); +GLAPI PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT; +#define glMatrixPushEXT glad_glMatrixPushEXT +typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +GLAPI PFNGLCLIENTATTRIBDEFAULTEXTPROC glad_glClientAttribDefaultEXT; +#define glClientAttribDefaultEXT glad_glClientAttribDefaultEXT +typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +GLAPI PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC glad_glPushClientAttribDefaultEXT; +#define glPushClientAttribDefaultEXT glad_glPushClientAttribDefaultEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLTEXTUREPARAMETERFEXTPROC glad_glTextureParameterfEXT; +#define glTextureParameterfEXT glad_glTextureParameterfEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLTEXTUREPARAMETERFVEXTPROC glad_glTextureParameterfvEXT; +#define glTextureParameterfvEXT glad_glTextureParameterfvEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint param); +GLAPI PFNGLTEXTUREPARAMETERIEXTPROC glad_glTextureParameteriEXT; +#define glTextureParameteriEXT glad_glTextureParameteriEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXTUREPARAMETERIVEXTPROC glad_glTextureParameterivEXT; +#define glTextureParameterivEXT glad_glTextureParameterivEXT +typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTUREIMAGE1DEXTPROC glad_glTextureImage1DEXT; +#define glTextureImage1DEXT glad_glTextureImage1DEXT +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTUREIMAGE2DEXTPROC glad_glTextureImage2DEXT; +#define glTextureImage2DEXT glad_glTextureImage2DEXT +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE1DEXTPROC glad_glTextureSubImage1DEXT; +#define glTextureSubImage1DEXT glad_glTextureSubImage1DEXT +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE2DEXTPROC glad_glTextureSubImage2DEXT; +#define glTextureSubImage2DEXT glad_glTextureSubImage2DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYTEXTUREIMAGE1DEXTPROC glad_glCopyTextureImage1DEXT; +#define glCopyTextureImage1DEXT glad_glCopyTextureImage1DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYTEXTUREIMAGE2DEXTPROC glad_glCopyTextureImage2DEXT; +#define glCopyTextureImage2DEXT glad_glCopyTextureImage2DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glad_glCopyTextureSubImage1DEXT; +#define glCopyTextureSubImage1DEXT glad_glCopyTextureSubImage1DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glad_glCopyTextureSubImage2DEXT; +#define glCopyTextureSubImage2DEXT glad_glCopyTextureSubImage2DEXT +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLGETTEXTUREIMAGEEXTPROC glad_glGetTextureImageEXT; +#define glGetTextureImageEXT glad_glGetTextureImageEXT +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXTUREPARAMETERFVEXTPROC glad_glGetTextureParameterfvEXT; +#define glGetTextureParameterfvEXT glad_glGetTextureParameterfvEXT +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIVEXTPROC glad_glGetTextureParameterivEXT; +#define glGetTextureParameterivEXT glad_glGetTextureParameterivEXT +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glad_glGetTextureLevelParameterfvEXT; +#define glGetTextureLevelParameterfvEXT glad_glGetTextureLevelParameterfvEXT +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glad_glGetTextureLevelParameterivEXT; +#define glGetTextureLevelParameterivEXT glad_glGetTextureLevelParameterivEXT +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTUREIMAGE3DEXTPROC glad_glTextureImage3DEXT; +#define glTextureImage3DEXT glad_glTextureImage3DEXT +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXTURESUBIMAGE3DEXTPROC glad_glTextureSubImage3DEXT; +#define glTextureSubImage3DEXT glad_glTextureSubImage3DEXT +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glad_glCopyTextureSubImage3DEXT; +#define glCopyTextureSubImage3DEXT glad_glCopyTextureSubImage3DEXT +typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, GLuint texture); +GLAPI PFNGLBINDMULTITEXTUREEXTPROC glad_glBindMultiTextureEXT; +#define glBindMultiTextureEXT glad_glBindMultiTextureEXT +typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC)(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLMULTITEXCOORDPOINTEREXTPROC glad_glMultiTexCoordPointerEXT; +#define glMultiTexCoordPointerEXT glad_glMultiTexCoordPointerEXT +typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLMULTITEXENVFEXTPROC glad_glMultiTexEnvfEXT; +#define glMultiTexEnvfEXT glad_glMultiTexEnvfEXT +typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLMULTITEXENVFVEXTPROC glad_glMultiTexEnvfvEXT; +#define glMultiTexEnvfvEXT glad_glMultiTexEnvfvEXT +typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI PFNGLMULTITEXENVIEXTPROC glad_glMultiTexEnviEXT; +#define glMultiTexEnviEXT glad_glMultiTexEnviEXT +typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLMULTITEXENVIVEXTPROC glad_glMultiTexEnvivEXT; +#define glMultiTexEnvivEXT glad_glMultiTexEnvivEXT +typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +GLAPI PFNGLMULTITEXGENDEXTPROC glad_glMultiTexGendEXT; +#define glMultiTexGendEXT glad_glMultiTexGendEXT +typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); +GLAPI PFNGLMULTITEXGENDVEXTPROC glad_glMultiTexGendvEXT; +#define glMultiTexGendvEXT glad_glMultiTexGendvEXT +typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +GLAPI PFNGLMULTITEXGENFEXTPROC glad_glMultiTexGenfEXT; +#define glMultiTexGenfEXT glad_glMultiTexGenfEXT +typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); +GLAPI PFNGLMULTITEXGENFVEXTPROC glad_glMultiTexGenfvEXT; +#define glMultiTexGenfvEXT glad_glMultiTexGenfvEXT +typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint param); +GLAPI PFNGLMULTITEXGENIEXTPROC glad_glMultiTexGeniEXT; +#define glMultiTexGeniEXT glad_glMultiTexGeniEXT +typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLint *params); +GLAPI PFNGLMULTITEXGENIVEXTPROC glad_glMultiTexGenivEXT; +#define glMultiTexGenivEXT glad_glMultiTexGenivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMULTITEXENVFVEXTPROC glad_glGetMultiTexEnvfvEXT; +#define glGetMultiTexEnvfvEXT glad_glGetMultiTexEnvfvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXENVIVEXTPROC glad_glGetMultiTexEnvivEXT; +#define glGetMultiTexEnvivEXT glad_glGetMultiTexEnvivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); +GLAPI PFNGLGETMULTITEXGENDVEXTPROC glad_glGetMultiTexGendvEXT; +#define glGetMultiTexGendvEXT glad_glGetMultiTexGendvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMULTITEXGENFVEXTPROC glad_glGetMultiTexGenfvEXT; +#define glGetMultiTexGenfvEXT glad_glGetMultiTexGenfvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXGENIVEXTPROC glad_glGetMultiTexGenivEXT; +#define glGetMultiTexGenivEXT glad_glGetMultiTexGenivEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI PFNGLMULTITEXPARAMETERIEXTPROC glad_glMultiTexParameteriEXT; +#define glMultiTexParameteriEXT glad_glMultiTexParameteriEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLMULTITEXPARAMETERIVEXTPROC glad_glMultiTexParameterivEXT; +#define glMultiTexParameterivEXT glad_glMultiTexParameterivEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLMULTITEXPARAMETERFEXTPROC glad_glMultiTexParameterfEXT; +#define glMultiTexParameterfEXT glad_glMultiTexParameterfEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLMULTITEXPARAMETERFVEXTPROC glad_glMultiTexParameterfvEXT; +#define glMultiTexParameterfvEXT glad_glMultiTexParameterfvEXT +typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXIMAGE1DEXTPROC glad_glMultiTexImage1DEXT; +#define glMultiTexImage1DEXT glad_glMultiTexImage1DEXT +typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXIMAGE2DEXTPROC glad_glMultiTexImage2DEXT; +#define glMultiTexImage2DEXT glad_glMultiTexImage2DEXT +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXSUBIMAGE1DEXTPROC glad_glMultiTexSubImage1DEXT; +#define glMultiTexSubImage1DEXT glad_glMultiTexSubImage1DEXT +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXSUBIMAGE2DEXTPROC glad_glMultiTexSubImage2DEXT; +#define glMultiTexSubImage2DEXT glad_glMultiTexSubImage2DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYMULTITEXIMAGE1DEXTPROC glad_glCopyMultiTexImage1DEXT; +#define glCopyMultiTexImage1DEXT glad_glCopyMultiTexImage1DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYMULTITEXIMAGE2DEXTPROC glad_glCopyMultiTexImage2DEXT; +#define glCopyMultiTexImage2DEXT glad_glCopyMultiTexImage2DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glad_glCopyMultiTexSubImage1DEXT; +#define glCopyMultiTexSubImage1DEXT glad_glCopyMultiTexSubImage1DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glad_glCopyMultiTexSubImage2DEXT; +#define glCopyMultiTexSubImage2DEXT glad_glCopyMultiTexSubImage2DEXT +typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLGETMULTITEXIMAGEEXTPROC glad_glGetMultiTexImageEXT; +#define glGetMultiTexImageEXT glad_glGetMultiTexImageEXT +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMULTITEXPARAMETERFVEXTPROC glad_glGetMultiTexParameterfvEXT; +#define glGetMultiTexParameterfvEXT glad_glGetMultiTexParameterfvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXPARAMETERIVEXTPROC glad_glGetMultiTexParameterivEXT; +#define glGetMultiTexParameterivEXT glad_glGetMultiTexParameterivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glad_glGetMultiTexLevelParameterfvEXT; +#define glGetMultiTexLevelParameterfvEXT glad_glGetMultiTexLevelParameterfvEXT +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glad_glGetMultiTexLevelParameterivEXT; +#define glGetMultiTexLevelParameterivEXT glad_glGetMultiTexLevelParameterivEXT +typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXIMAGE3DEXTPROC glad_glMultiTexImage3DEXT; +#define glMultiTexImage3DEXT glad_glMultiTexImage3DEXT +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLMULTITEXSUBIMAGE3DEXTPROC glad_glMultiTexSubImage3DEXT; +#define glMultiTexSubImage3DEXT glad_glMultiTexSubImage3DEXT +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glad_glCopyMultiTexSubImage3DEXT; +#define glCopyMultiTexSubImage3DEXT glad_glCopyMultiTexSubImage3DEXT +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +GLAPI PFNGLENABLECLIENTSTATEINDEXEDEXTPROC glad_glEnableClientStateIndexedEXT; +#define glEnableClientStateIndexedEXT glad_glEnableClientStateIndexedEXT +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +GLAPI PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC glad_glDisableClientStateIndexedEXT; +#define glDisableClientStateIndexedEXT glad_glDisableClientStateIndexedEXT +typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, GLfloat *data); +GLAPI PFNGLGETFLOATINDEXEDVEXTPROC glad_glGetFloatIndexedvEXT; +#define glGetFloatIndexedvEXT glad_glGetFloatIndexedvEXT +typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, GLdouble *data); +GLAPI PFNGLGETDOUBLEINDEXEDVEXTPROC glad_glGetDoubleIndexedvEXT; +#define glGetDoubleIndexedvEXT glad_glGetDoubleIndexedvEXT +typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, void **data); +GLAPI PFNGLGETPOINTERINDEXEDVEXTPROC glad_glGetPointerIndexedvEXT; +#define glGetPointerIndexedvEXT glad_glGetPointerIndexedvEXT +typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +GLAPI PFNGLENABLEINDEXEDEXTPROC glad_glEnableIndexedEXT; +#define glEnableIndexedEXT glad_glEnableIndexedEXT +typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +GLAPI PFNGLDISABLEINDEXEDEXTPROC glad_glDisableIndexedEXT; +#define glDisableIndexedEXT glad_glDisableIndexedEXT +typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index); +GLAPI PFNGLISENABLEDINDEXEDEXTPROC glad_glIsEnabledIndexedEXT; +#define glIsEnabledIndexedEXT glad_glIsEnabledIndexedEXT +typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, GLint *data); +GLAPI PFNGLGETINTEGERINDEXEDVEXTPROC glad_glGetIntegerIndexedvEXT; +#define glGetIntegerIndexedvEXT glad_glGetIntegerIndexedvEXT +typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, GLboolean *data); +GLAPI PFNGLGETBOOLEANINDEXEDVEXTPROC glad_glGetBooleanIndexedvEXT; +#define glGetBooleanIndexedvEXT glad_glGetBooleanIndexedvEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glad_glCompressedTextureImage3DEXT; +#define glCompressedTextureImage3DEXT glad_glCompressedTextureImage3DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glad_glCompressedTextureImage2DEXT; +#define glCompressedTextureImage2DEXT glad_glCompressedTextureImage2DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glad_glCompressedTextureImage1DEXT; +#define glCompressedTextureImage1DEXT glad_glCompressedTextureImage1DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glad_glCompressedTextureSubImage3DEXT; +#define glCompressedTextureSubImage3DEXT glad_glCompressedTextureSubImage3DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glad_glCompressedTextureSubImage2DEXT; +#define glCompressedTextureSubImage2DEXT glad_glCompressedTextureSubImage2DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glad_glCompressedTextureSubImage1DEXT; +#define glCompressedTextureSubImage1DEXT glad_glCompressedTextureSubImage1DEXT +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint lod, void *img); +GLAPI PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glad_glGetCompressedTextureImageEXT; +#define glGetCompressedTextureImageEXT glad_glGetCompressedTextureImageEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glad_glCompressedMultiTexImage3DEXT; +#define glCompressedMultiTexImage3DEXT glad_glCompressedMultiTexImage3DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glad_glCompressedMultiTexImage2DEXT; +#define glCompressedMultiTexImage2DEXT glad_glCompressedMultiTexImage2DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glad_glCompressedMultiTexImage1DEXT; +#define glCompressedMultiTexImage1DEXT glad_glCompressedMultiTexImage1DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glad_glCompressedMultiTexSubImage3DEXT; +#define glCompressedMultiTexSubImage3DEXT glad_glCompressedMultiTexSubImage3DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glad_glCompressedMultiTexSubImage2DEXT; +#define glCompressedMultiTexSubImage2DEXT glad_glCompressedMultiTexSubImage2DEXT +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glad_glCompressedMultiTexSubImage1DEXT; +#define glCompressedMultiTexSubImage1DEXT glad_glCompressedMultiTexSubImage1DEXT +typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint lod, void *img); +GLAPI PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glad_glGetCompressedMultiTexImageEXT; +#define glGetCompressedMultiTexImageEXT glad_glGetCompressedMultiTexImageEXT +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); +GLAPI PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT; +#define glMatrixLoadTransposefEXT glad_glMatrixLoadTransposefEXT +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); +GLAPI PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT; +#define glMatrixLoadTransposedEXT glad_glMatrixLoadTransposedEXT +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); +GLAPI PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT; +#define glMatrixMultTransposefEXT glad_glMatrixMultTransposefEXT +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); +GLAPI PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT; +#define glMatrixMultTransposedEXT glad_glMatrixMultTransposedEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI PFNGLNAMEDBUFFERDATAEXTPROC glad_glNamedBufferDataEXT; +#define glNamedBufferDataEXT glad_glNamedBufferDataEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLNAMEDBUFFERSUBDATAEXTPROC glad_glNamedBufferSubDataEXT; +#define glNamedBufferSubDataEXT glad_glNamedBufferSubDataEXT +typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access); +GLAPI PFNGLMAPNAMEDBUFFEREXTPROC glad_glMapNamedBufferEXT; +#define glMapNamedBufferEXT glad_glMapNamedBufferEXT +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer); +GLAPI PFNGLUNMAPNAMEDBUFFEREXTPROC glad_glUnmapNamedBufferEXT; +#define glUnmapNamedBufferEXT glad_glUnmapNamedBufferEXT +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glad_glGetNamedBufferParameterivEXT; +#define glGetNamedBufferParameterivEXT glad_glGetNamedBufferParameterivEXT +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, void **params); +GLAPI PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glad_glGetNamedBufferPointervEXT; +#define glGetNamedBufferPointervEXT glad_glGetNamedBufferPointervEXT +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glad_glGetNamedBufferSubDataEXT; +#define glGetNamedBufferSubDataEXT glad_glGetNamedBufferSubDataEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, GLfloat v0); +GLAPI PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT; +#define glProgramUniform1fEXT glad_glProgramUniform1fEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT; +#define glProgramUniform2fEXT glad_glProgramUniform2fEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT; +#define glProgramUniform3fEXT glad_glProgramUniform3fEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT; +#define glProgramUniform4fEXT glad_glProgramUniform4fEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0); +GLAPI PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT; +#define glProgramUniform1iEXT glad_glProgramUniform1iEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1); +GLAPI PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT; +#define glProgramUniform2iEXT glad_glProgramUniform2iEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT; +#define glProgramUniform3iEXT glad_glProgramUniform3iEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT; +#define glProgramUniform4iEXT glad_glProgramUniform4iEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT; +#define glProgramUniform1fvEXT glad_glProgramUniform1fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT; +#define glProgramUniform2fvEXT glad_glProgramUniform2fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT; +#define glProgramUniform3fvEXT glad_glProgramUniform3fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT; +#define glProgramUniform4fvEXT glad_glProgramUniform4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT; +#define glProgramUniform1ivEXT glad_glProgramUniform1ivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT; +#define glProgramUniform2ivEXT glad_glProgramUniform2ivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT; +#define glProgramUniform3ivEXT glad_glProgramUniform3ivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT; +#define glProgramUniform4ivEXT glad_glProgramUniform4ivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT; +#define glProgramUniformMatrix2fvEXT glad_glProgramUniformMatrix2fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT; +#define glProgramUniformMatrix3fvEXT glad_glProgramUniformMatrix3fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT; +#define glProgramUniformMatrix4fvEXT glad_glProgramUniformMatrix4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT; +#define glProgramUniformMatrix2x3fvEXT glad_glProgramUniformMatrix2x3fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT; +#define glProgramUniformMatrix3x2fvEXT glad_glProgramUniformMatrix3x2fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT; +#define glProgramUniformMatrix2x4fvEXT glad_glProgramUniformMatrix2x4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT; +#define glProgramUniformMatrix4x2fvEXT glad_glProgramUniformMatrix4x2fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT; +#define glProgramUniformMatrix3x4fvEXT glad_glProgramUniformMatrix3x4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT; +#define glProgramUniformMatrix4x3fvEXT glad_glProgramUniformMatrix4x3fvEXT +typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXTUREBUFFEREXTPROC glad_glTextureBufferEXT; +#define glTextureBufferEXT glad_glTextureBufferEXT +typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLMULTITEXBUFFEREXTPROC glad_glMultiTexBufferEXT; +#define glMultiTexBufferEXT glad_glMultiTexBufferEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXTUREPARAMETERIIVEXTPROC glad_glTextureParameterIivEXT; +#define glTextureParameterIivEXT glad_glTextureParameterIivEXT +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXTUREPARAMETERIUIVEXTPROC glad_glTextureParameterIuivEXT; +#define glTextureParameterIuivEXT glad_glTextureParameterIuivEXT +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIIVEXTPROC glad_glGetTextureParameterIivEXT; +#define glGetTextureParameterIivEXT glad_glGetTextureParameterIivEXT +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glad_glGetTextureParameterIuivEXT; +#define glGetTextureParameterIuivEXT glad_glGetTextureParameterIuivEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLMULTITEXPARAMETERIIVEXTPROC glad_glMultiTexParameterIivEXT; +#define glMultiTexParameterIivEXT glad_glMultiTexParameterIivEXT +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLMULTITEXPARAMETERIUIVEXTPROC glad_glMultiTexParameterIuivEXT; +#define glMultiTexParameterIuivEXT glad_glMultiTexParameterIuivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMULTITEXPARAMETERIIVEXTPROC glad_glGetMultiTexParameterIivEXT; +#define glGetMultiTexParameterIivEXT glad_glGetMultiTexParameterIivEXT +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glad_glGetMultiTexParameterIuivEXT; +#define glGetMultiTexParameterIuivEXT glad_glGetMultiTexParameterIuivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, GLuint v0); +GLAPI PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT; +#define glProgramUniform1uiEXT glad_glProgramUniform1uiEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT; +#define glProgramUniform2uiEXT glad_glProgramUniform2uiEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT; +#define glProgramUniform3uiEXT glad_glProgramUniform3uiEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT; +#define glProgramUniform4uiEXT glad_glProgramUniform4uiEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT; +#define glProgramUniform1uivEXT glad_glProgramUniform1uivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT; +#define glProgramUniform2uivEXT glad_glProgramUniform2uivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT; +#define glProgramUniform3uivEXT glad_glProgramUniform3uivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT; +#define glProgramUniform4uivEXT glad_glProgramUniform4uivEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glNamedProgramLocalParameters4fvEXT; +#define glNamedProgramLocalParameters4fvEXT glad_glNamedProgramLocalParameters4fvEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC glad_glNamedProgramLocalParameterI4iEXT; +#define glNamedProgramLocalParameterI4iEXT glad_glNamedProgramLocalParameterI4iEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLint *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC glad_glNamedProgramLocalParameterI4ivEXT; +#define glNamedProgramLocalParameterI4ivEXT glad_glNamedProgramLocalParameterI4ivEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC glad_glNamedProgramLocalParametersI4ivEXT; +#define glNamedProgramLocalParametersI4ivEXT glad_glNamedProgramLocalParametersI4ivEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC glad_glNamedProgramLocalParameterI4uiEXT; +#define glNamedProgramLocalParameterI4uiEXT glad_glNamedProgramLocalParameterI4uiEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLuint *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC glad_glNamedProgramLocalParameterI4uivEXT; +#define glNamedProgramLocalParameterI4uivEXT glad_glNamedProgramLocalParameterI4uivEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC glad_glNamedProgramLocalParametersI4uivEXT; +#define glNamedProgramLocalParametersI4uivEXT glad_glNamedProgramLocalParametersI4uivEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLint *params); +GLAPI PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC glad_glGetNamedProgramLocalParameterIivEXT; +#define glGetNamedProgramLocalParameterIivEXT glad_glGetNamedProgramLocalParameterIivEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLuint *params); +GLAPI PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC glad_glGetNamedProgramLocalParameterIuivEXT; +#define glGetNamedProgramLocalParameterIuivEXT glad_glGetNamedProgramLocalParameterIuivEXT +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); +GLAPI PFNGLENABLECLIENTSTATEIEXTPROC glad_glEnableClientStateiEXT; +#define glEnableClientStateiEXT glad_glEnableClientStateiEXT +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); +GLAPI PFNGLDISABLECLIENTSTATEIEXTPROC glad_glDisableClientStateiEXT; +#define glDisableClientStateiEXT glad_glDisableClientStateiEXT +typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC)(GLenum pname, GLuint index, GLfloat *params); +GLAPI PFNGLGETFLOATI_VEXTPROC glad_glGetFloati_vEXT; +#define glGetFloati_vEXT glad_glGetFloati_vEXT +typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC)(GLenum pname, GLuint index, GLdouble *params); +GLAPI PFNGLGETDOUBLEI_VEXTPROC glad_glGetDoublei_vEXT; +#define glGetDoublei_vEXT glad_glGetDoublei_vEXT +typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC)(GLenum pname, GLuint index, void **params); +GLAPI PFNGLGETPOINTERI_VEXTPROC glad_glGetPointeri_vEXT; +#define glGetPointeri_vEXT glad_glGetPointeri_vEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI PFNGLNAMEDPROGRAMSTRINGEXTPROC glad_glNamedProgramStringEXT; +#define glNamedProgramStringEXT glad_glNamedProgramStringEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC glad_glNamedProgramLocalParameter4dEXT; +#define glNamedProgramLocalParameter4dEXT glad_glNamedProgramLocalParameter4dEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLdouble *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC glad_glNamedProgramLocalParameter4dvEXT; +#define glNamedProgramLocalParameter4dvEXT glad_glNamedProgramLocalParameter4dvEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC glad_glNamedProgramLocalParameter4fEXT; +#define glNamedProgramLocalParameter4fEXT glad_glNamedProgramLocalParameter4fEXT +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLfloat *params); +GLAPI PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC glad_glNamedProgramLocalParameter4fvEXT; +#define glNamedProgramLocalParameter4fvEXT glad_glNamedProgramLocalParameter4fvEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)(GLuint program, GLenum target, GLuint index, GLdouble *params); +GLAPI PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC glad_glGetNamedProgramLocalParameterdvEXT; +#define glGetNamedProgramLocalParameterdvEXT glad_glGetNamedProgramLocalParameterdvEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)(GLuint program, GLenum target, GLuint index, GLfloat *params); +GLAPI PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC glad_glGetNamedProgramLocalParameterfvEXT; +#define glGetNamedProgramLocalParameterfvEXT glad_glGetNamedProgramLocalParameterfvEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDPROGRAMIVEXTPROC glad_glGetNamedProgramivEXT; +#define glGetNamedProgramivEXT glad_glGetNamedProgramivEXT +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum pname, void *string); +GLAPI PFNGLGETNAMEDPROGRAMSTRINGEXTPROC glad_glGetNamedProgramStringEXT; +#define glGetNamedProgramStringEXT glad_glGetNamedProgramStringEXT +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glad_glNamedRenderbufferStorageEXT; +#define glNamedRenderbufferStorageEXT glad_glNamedRenderbufferStorageEXT +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glad_glGetNamedRenderbufferParameterivEXT; +#define glGetNamedRenderbufferParameterivEXT glad_glGetNamedRenderbufferParameterivEXT +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glNamedRenderbufferStorageMultisampleEXT; +#define glNamedRenderbufferStorageMultisampleEXT glad_glNamedRenderbufferStorageMultisampleEXT +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC glad_glNamedRenderbufferStorageMultisampleCoverageEXT; +#define glNamedRenderbufferStorageMultisampleCoverageEXT glad_glNamedRenderbufferStorageMultisampleCoverageEXT +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, GLenum target); +GLAPI PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glad_glCheckNamedFramebufferStatusEXT; +#define glCheckNamedFramebufferStatusEXT glad_glCheckNamedFramebufferStatusEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glad_glNamedFramebufferTexture1DEXT; +#define glNamedFramebufferTexture1DEXT glad_glNamedFramebufferTexture1DEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glad_glNamedFramebufferTexture2DEXT; +#define glNamedFramebufferTexture2DEXT glad_glNamedFramebufferTexture2DEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glad_glNamedFramebufferTexture3DEXT; +#define glNamedFramebufferTexture3DEXT glad_glNamedFramebufferTexture3DEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glad_glNamedFramebufferRenderbufferEXT; +#define glNamedFramebufferRenderbufferEXT glad_glNamedFramebufferRenderbufferEXT +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetNamedFramebufferAttachmentParameterivEXT; +#define glGetNamedFramebufferAttachmentParameterivEXT glad_glGetNamedFramebufferAttachmentParameterivEXT +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target); +GLAPI PFNGLGENERATETEXTUREMIPMAPEXTPROC glad_glGenerateTextureMipmapEXT; +#define glGenerateTextureMipmapEXT glad_glGenerateTextureMipmapEXT +typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target); +GLAPI PFNGLGENERATEMULTITEXMIPMAPEXTPROC glad_glGenerateMultiTexMipmapEXT; +#define glGenerateMultiTexMipmapEXT glad_glGenerateMultiTexMipmapEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +GLAPI PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glad_glFramebufferDrawBufferEXT; +#define glFramebufferDrawBufferEXT glad_glFramebufferDrawBufferEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glad_glFramebufferDrawBuffersEXT; +#define glFramebufferDrawBuffersEXT glad_glFramebufferDrawBuffersEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +GLAPI PFNGLFRAMEBUFFERREADBUFFEREXTPROC glad_glFramebufferReadBufferEXT; +#define glFramebufferReadBufferEXT glad_glFramebufferReadBufferEXT +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetFramebufferParameterivEXT; +#define glGetFramebufferParameterivEXT glad_glGetFramebufferParameterivEXT +typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glad_glNamedCopyBufferSubDataEXT; +#define glNamedCopyBufferSubDataEXT glad_glNamedCopyBufferSubDataEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glad_glNamedFramebufferTextureEXT; +#define glNamedFramebufferTextureEXT glad_glNamedFramebufferTextureEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glad_glNamedFramebufferTextureLayerEXT; +#define glNamedFramebufferTextureLayerEXT glad_glNamedFramebufferTextureLayerEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC glad_glNamedFramebufferTextureFaceEXT; +#define glNamedFramebufferTextureFaceEXT glad_glNamedFramebufferTextureFaceEXT +typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, GLuint renderbuffer); +GLAPI PFNGLTEXTURERENDERBUFFEREXTPROC glad_glTextureRenderbufferEXT; +#define glTextureRenderbufferEXT glad_glTextureRenderbufferEXT +typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, GLuint renderbuffer); +GLAPI PFNGLMULTITEXRENDERBUFFEREXTPROC glad_glMultiTexRenderbufferEXT; +#define glMultiTexRenderbufferEXT glad_glMultiTexRenderbufferEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC glad_glVertexArrayVertexOffsetEXT; +#define glVertexArrayVertexOffsetEXT glad_glVertexArrayVertexOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYCOLOROFFSETEXTPROC glad_glVertexArrayColorOffsetEXT; +#define glVertexArrayColorOffsetEXT glad_glVertexArrayColorOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC glad_glVertexArrayEdgeFlagOffsetEXT; +#define glVertexArrayEdgeFlagOffsetEXT glad_glVertexArrayEdgeFlagOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYINDEXOFFSETEXTPROC glad_glVertexArrayIndexOffsetEXT; +#define glVertexArrayIndexOffsetEXT glad_glVertexArrayIndexOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYNORMALOFFSETEXTPROC glad_glVertexArrayNormalOffsetEXT; +#define glVertexArrayNormalOffsetEXT glad_glVertexArrayNormalOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC glad_glVertexArrayTexCoordOffsetEXT; +#define glVertexArrayTexCoordOffsetEXT glad_glVertexArrayTexCoordOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC glad_glVertexArrayMultiTexCoordOffsetEXT; +#define glVertexArrayMultiTexCoordOffsetEXT glad_glVertexArrayMultiTexCoordOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC glad_glVertexArrayFogCoordOffsetEXT; +#define glVertexArrayFogCoordOffsetEXT glad_glVertexArrayFogCoordOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC glad_glVertexArraySecondaryColorOffsetEXT; +#define glVertexArraySecondaryColorOffsetEXT glad_glVertexArraySecondaryColorOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glad_glVertexArrayVertexAttribOffsetEXT; +#define glVertexArrayVertexAttribOffsetEXT glad_glVertexArrayVertexAttribOffsetEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glad_glVertexArrayVertexAttribIOffsetEXT; +#define glVertexArrayVertexAttribIOffsetEXT glad_glVertexArrayVertexAttribIOffsetEXT +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); +GLAPI PFNGLENABLEVERTEXARRAYEXTPROC glad_glEnableVertexArrayEXT; +#define glEnableVertexArrayEXT glad_glEnableVertexArrayEXT +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); +GLAPI PFNGLDISABLEVERTEXARRAYEXTPROC glad_glDisableVertexArrayEXT; +#define glDisableVertexArrayEXT glad_glDisableVertexArrayEXT +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); +GLAPI PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glad_glEnableVertexArrayAttribEXT; +#define glEnableVertexArrayAttribEXT glad_glEnableVertexArrayAttribEXT +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); +GLAPI PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glad_glDisableVertexArrayAttribEXT; +#define glDisableVertexArrayAttribEXT glad_glDisableVertexArrayAttribEXT +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC)(GLuint vaobj, GLenum pname, GLint *param); +GLAPI PFNGLGETVERTEXARRAYINTEGERVEXTPROC glad_glGetVertexArrayIntegervEXT; +#define glGetVertexArrayIntegervEXT glad_glGetVertexArrayIntegervEXT +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC)(GLuint vaobj, GLenum pname, void **param); +GLAPI PFNGLGETVERTEXARRAYPOINTERVEXTPROC glad_glGetVertexArrayPointervEXT; +#define glGetVertexArrayPointervEXT glad_glGetVertexArrayPointervEXT +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glad_glGetVertexArrayIntegeri_vEXT; +#define glGetVertexArrayIntegeri_vEXT glad_glGetVertexArrayIntegeri_vEXT +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)(GLuint vaobj, GLuint index, GLenum pname, void **param); +GLAPI PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glad_glGetVertexArrayPointeri_vEXT; +#define glGetVertexArrayPointeri_vEXT glad_glGetVertexArrayPointeri_vEXT +typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI PFNGLMAPNAMEDBUFFERRANGEEXTPROC glad_glMapNamedBufferRangeEXT; +#define glMapNamedBufferRangeEXT glad_glMapNamedBufferRangeEXT +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glad_glFlushMappedNamedBufferRangeEXT; +#define glFlushMappedNamedBufferRangeEXT glad_glFlushMappedNamedBufferRangeEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI PFNGLNAMEDBUFFERSTORAGEEXTPROC glad_glNamedBufferStorageEXT; +#define glNamedBufferStorageEXT glad_glNamedBufferStorageEXT +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARNAMEDBUFFERDATAEXTPROC glad_glClearNamedBufferDataEXT; +#define glClearNamedBufferDataEXT glad_glClearNamedBufferDataEXT +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glad_glClearNamedBufferSubDataEXT; +#define glClearNamedBufferSubDataEXT glad_glClearNamedBufferSubDataEXT +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)(GLuint framebuffer, GLenum pname, GLint param); +GLAPI PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glad_glNamedFramebufferParameteriEXT; +#define glNamedFramebufferParameteriEXT glad_glNamedFramebufferParameteriEXT +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint *params); +GLAPI PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetNamedFramebufferParameterivEXT; +#define glGetNamedFramebufferParameterivEXT glad_glGetNamedFramebufferParameterivEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC)(GLuint program, GLint location, GLdouble x); +GLAPI PFNGLPROGRAMUNIFORM1DEXTPROC glad_glProgramUniform1dEXT; +#define glProgramUniform1dEXT glad_glProgramUniform1dEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y); +GLAPI PFNGLPROGRAMUNIFORM2DEXTPROC glad_glProgramUniform2dEXT; +#define glProgramUniform2dEXT glad_glProgramUniform2dEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLPROGRAMUNIFORM3DEXTPROC glad_glProgramUniform3dEXT; +#define glProgramUniform3dEXT glad_glProgramUniform3dEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMUNIFORM4DEXTPROC glad_glProgramUniform4dEXT; +#define glProgramUniform4dEXT glad_glProgramUniform4dEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM1DVEXTPROC glad_glProgramUniform1dvEXT; +#define glProgramUniform1dvEXT glad_glProgramUniform1dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM2DVEXTPROC glad_glProgramUniform2dvEXT; +#define glProgramUniform2dvEXT glad_glProgramUniform2dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM3DVEXTPROC glad_glProgramUniform3dvEXT; +#define glProgramUniform3dvEXT glad_glProgramUniform3dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM4DVEXTPROC glad_glProgramUniform4dvEXT; +#define glProgramUniform4dvEXT glad_glProgramUniform4dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC glad_glProgramUniformMatrix2dvEXT; +#define glProgramUniformMatrix2dvEXT glad_glProgramUniformMatrix2dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC glad_glProgramUniformMatrix3dvEXT; +#define glProgramUniformMatrix3dvEXT glad_glProgramUniformMatrix3dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC glad_glProgramUniformMatrix4dvEXT; +#define glProgramUniformMatrix4dvEXT glad_glProgramUniformMatrix4dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC glad_glProgramUniformMatrix2x3dvEXT; +#define glProgramUniformMatrix2x3dvEXT glad_glProgramUniformMatrix2x3dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC glad_glProgramUniformMatrix2x4dvEXT; +#define glProgramUniformMatrix2x4dvEXT glad_glProgramUniformMatrix2x4dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC glad_glProgramUniformMatrix3x2dvEXT; +#define glProgramUniformMatrix3x2dvEXT glad_glProgramUniformMatrix3x2dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC glad_glProgramUniformMatrix3x4dvEXT; +#define glProgramUniformMatrix3x4dvEXT glad_glProgramUniformMatrix3x4dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC glad_glProgramUniformMatrix4x2dvEXT; +#define glProgramUniformMatrix4x2dvEXT glad_glProgramUniformMatrix4x2dvEXT +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC glad_glProgramUniformMatrix4x3dvEXT; +#define glProgramUniformMatrix4x3dvEXT glad_glProgramUniformMatrix4x3dvEXT +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLTEXTUREBUFFERRANGEEXTPROC glad_glTextureBufferRangeEXT; +#define glTextureBufferRangeEXT glad_glTextureBufferRangeEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT; +#define glTextureStorage1DEXT glad_glTextureStorage1DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT; +#define glTextureStorage2DEXT glad_glTextureStorage2DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT; +#define glTextureStorage3DEXT glad_glTextureStorage3DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC glad_glTextureStorage2DMultisampleEXT; +#define glTextureStorage2DMultisampleEXT glad_glTextureStorage2DMultisampleEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC glad_glTextureStorage3DMultisampleEXT; +#define glTextureStorage3DMultisampleEXT glad_glTextureStorage3DMultisampleEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glad_glVertexArrayBindVertexBufferEXT; +#define glVertexArrayBindVertexBufferEXT glad_glVertexArrayBindVertexBufferEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glad_glVertexArrayVertexAttribFormatEXT; +#define glVertexArrayVertexAttribFormatEXT glad_glVertexArrayVertexAttribFormatEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glad_glVertexArrayVertexAttribIFormatEXT; +#define glVertexArrayVertexAttribIFormatEXT glad_glVertexArrayVertexAttribIFormatEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glad_glVertexArrayVertexAttribLFormatEXT; +#define glVertexArrayVertexAttribLFormatEXT glad_glVertexArrayVertexAttribLFormatEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glad_glVertexArrayVertexAttribBindingEXT; +#define glVertexArrayVertexAttribBindingEXT glad_glVertexArrayVertexAttribBindingEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); +GLAPI PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glad_glVertexArrayVertexBindingDivisorEXT; +#define glVertexArrayVertexBindingDivisorEXT glad_glVertexArrayVertexBindingDivisorEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glad_glVertexArrayVertexAttribLOffsetEXT; +#define glVertexArrayVertexAttribLOffsetEXT glad_glVertexArrayVertexAttribLOffsetEXT +typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +GLAPI PFNGLTEXTUREPAGECOMMITMENTEXTPROC glad_glTexturePageCommitmentEXT; +#define glTexturePageCommitmentEXT glad_glTexturePageCommitmentEXT +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)(GLuint vaobj, GLuint index, GLuint divisor); +GLAPI PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glad_glVertexArrayVertexAttribDivisorEXT; +#define glVertexArrayVertexAttribDivisorEXT glad_glVertexArrayVertexAttribDivisorEXT +#endif +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 +GLAPI int GLAD_GL_EXT_draw_buffers2; +typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI PFNGLCOLORMASKINDEXEDEXTPROC glad_glColorMaskIndexedEXT; +#define glColorMaskIndexedEXT glad_glColorMaskIndexedEXT +#endif +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +GLAPI int GLAD_GL_EXT_draw_instanced; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GLAPI PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT; +#define glDrawArraysInstancedEXT glad_glDrawArraysInstancedEXT +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GLAPI PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT; +#define glDrawElementsInstancedEXT glad_glDrawElementsInstancedEXT +#endif +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +GLAPI int GLAD_GL_EXT_draw_range_elements; +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWRANGEELEMENTSEXTPROC glad_glDrawRangeElementsEXT; +#define glDrawRangeElementsEXT glad_glDrawRangeElementsEXT +#endif +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +GLAPI int GLAD_GL_EXT_external_buffer; +typedef void (APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC)(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GLAPI PFNGLBUFFERSTORAGEEXTERNALEXTPROC glad_glBufferStorageExternalEXT; +#define glBufferStorageExternalEXT glad_glBufferStorageExternalEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GLAPI PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC glad_glNamedBufferStorageExternalEXT; +#define glNamedBufferStorageExternalEXT glad_glNamedBufferStorageExternalEXT +#endif +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +GLAPI int GLAD_GL_EXT_fog_coord; +typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC)(GLfloat coord); +GLAPI PFNGLFOGCOORDFEXTPROC glad_glFogCoordfEXT; +#define glFogCoordfEXT glad_glFogCoordfEXT +typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC)(const GLfloat *coord); +GLAPI PFNGLFOGCOORDFVEXTPROC glad_glFogCoordfvEXT; +#define glFogCoordfvEXT glad_glFogCoordfvEXT +typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC)(GLdouble coord); +GLAPI PFNGLFOGCOORDDEXTPROC glad_glFogCoorddEXT; +#define glFogCoorddEXT glad_glFogCoorddEXT +typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC)(const GLdouble *coord); +GLAPI PFNGLFOGCOORDDVEXTPROC glad_glFogCoorddvEXT; +#define glFogCoorddvEXT glad_glFogCoorddvEXT +typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLFOGCOORDPOINTEREXTPROC glad_glFogCoordPointerEXT; +#define glFogCoordPointerEXT glad_glFogCoordPointerEXT +#endif +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 +GLAPI int GLAD_GL_EXT_framebuffer_blit; +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT; +#define glBlitFramebufferEXT glad_glBlitFramebufferEXT +#endif +#ifndef GL_EXT_framebuffer_multisample +#define GL_EXT_framebuffer_multisample 1 +GLAPI int GLAD_GL_EXT_framebuffer_multisample; +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT; +#define glRenderbufferStorageMultisampleEXT glad_glRenderbufferStorageMultisampleEXT +#endif +#ifndef GL_EXT_framebuffer_multisample_blit_scaled +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +GLAPI int GLAD_GL_EXT_framebuffer_multisample_blit_scaled; +#endif +#ifndef GL_EXT_framebuffer_object +#define GL_EXT_framebuffer_object 1 +GLAPI int GLAD_GL_EXT_framebuffer_object; +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer); +GLAPI PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT; +#define glIsRenderbufferEXT glad_glIsRenderbufferEXT +typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer); +GLAPI PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT; +#define glBindRenderbufferEXT glad_glBindRenderbufferEXT +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint *renderbuffers); +GLAPI PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT; +#define glDeleteRenderbuffersEXT glad_glDeleteRenderbuffersEXT +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint *renderbuffers); +GLAPI PFNGLGENRENDERBUFFERSEXTPROC glad_glGenRenderbuffersEXT; +#define glGenRenderbuffersEXT glad_glGenRenderbuffersEXT +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEEXTPROC glad_glRenderbufferStorageEXT; +#define glRenderbufferStorageEXT glad_glRenderbufferStorageEXT +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glad_glGetRenderbufferParameterivEXT; +#define glGetRenderbufferParameterivEXT glad_glGetRenderbufferParameterivEXT +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer); +GLAPI PFNGLISFRAMEBUFFEREXTPROC glad_glIsFramebufferEXT; +#define glIsFramebufferEXT glad_glIsFramebufferEXT +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer); +GLAPI PFNGLBINDFRAMEBUFFEREXTPROC glad_glBindFramebufferEXT; +#define glBindFramebufferEXT glad_glBindFramebufferEXT +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint *framebuffers); +GLAPI PFNGLDELETEFRAMEBUFFERSEXTPROC glad_glDeleteFramebuffersEXT; +#define glDeleteFramebuffersEXT glad_glDeleteFramebuffersEXT +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint *framebuffers); +GLAPI PFNGLGENFRAMEBUFFERSEXTPROC glad_glGenFramebuffersEXT; +#define glGenFramebuffersEXT glad_glGenFramebuffersEXT +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target); +GLAPI PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glad_glCheckFramebufferStatusEXT; +#define glCheckFramebufferStatusEXT glad_glCheckFramebufferStatusEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glad_glFramebufferTexture1DEXT; +#define glFramebufferTexture1DEXT glad_glFramebufferTexture1DEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glad_glFramebufferTexture2DEXT; +#define glFramebufferTexture2DEXT glad_glFramebufferTexture2DEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT; +#define glFramebufferTexture3DEXT glad_glFramebufferTexture3DEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT; +#define glFramebufferRenderbufferEXT glad_glFramebufferRenderbufferEXT +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT; +#define glGetFramebufferAttachmentParameterivEXT glad_glGetFramebufferAttachmentParameterivEXT +typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC)(GLenum target); +GLAPI PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT; +#define glGenerateMipmapEXT glad_glGenerateMipmapEXT +#endif +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 +GLAPI int GLAD_GL_EXT_framebuffer_sRGB; +#endif +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 +GLAPI int GLAD_GL_EXT_geometry_shader4; +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC)(GLuint program, GLenum pname, GLint value); +GLAPI PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT; +#define glProgramParameteriEXT glad_glProgramParameteriEXT +#endif +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 +GLAPI int GLAD_GL_EXT_gpu_program_parameters; +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI PFNGLPROGRAMENVPARAMETERS4FVEXTPROC glad_glProgramEnvParameters4fvEXT; +#define glProgramEnvParameters4fvEXT glad_glProgramEnvParameters4fvEXT +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glProgramLocalParameters4fvEXT; +#define glProgramLocalParameters4fvEXT glad_glProgramLocalParameters4fvEXT +#endif +#ifndef GL_EXT_gpu_shader4 +#define GL_EXT_gpu_shader4 1 +GLAPI int GLAD_GL_EXT_gpu_shader4; +typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT; +#define glGetUniformuivEXT glad_glGetUniformuivEXT +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT; +#define glBindFragDataLocationEXT glad_glBindFragDataLocationEXT +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT; +#define glGetFragDataLocationEXT glad_glGetFragDataLocationEXT +typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0); +GLAPI PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT; +#define glUniform1uiEXT glad_glUniform1uiEXT +typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT; +#define glUniform2uiEXT glad_glUniform2uiEXT +typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT; +#define glUniform3uiEXT glad_glUniform3uiEXT +typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT; +#define glUniform4uiEXT glad_glUniform4uiEXT +typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT; +#define glUniform1uivEXT glad_glUniform1uivEXT +typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT; +#define glUniform2uivEXT glad_glUniform2uivEXT +typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT; +#define glUniform3uivEXT glad_glUniform3uivEXT +typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT; +#define glUniform4uivEXT glad_glUniform4uivEXT +#endif +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +GLAPI int GLAD_GL_EXT_histogram; +typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI PFNGLGETHISTOGRAMEXTPROC glad_glGetHistogramEXT; +#define glGetHistogramEXT glad_glGetHistogramEXT +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERFVEXTPROC glad_glGetHistogramParameterfvEXT; +#define glGetHistogramParameterfvEXT glad_glGetHistogramParameterfvEXT +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERIVEXTPROC glad_glGetHistogramParameterivEXT; +#define glGetHistogramParameterivEXT glad_glGetHistogramParameterivEXT +typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI PFNGLGETMINMAXEXTPROC glad_glGetMinmaxEXT; +#define glGetMinmaxEXT glad_glGetMinmaxEXT +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMINMAXPARAMETERFVEXTPROC glad_glGetMinmaxParameterfvEXT; +#define glGetMinmaxParameterfvEXT glad_glGetMinmaxParameterfvEXT +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMINMAXPARAMETERIVEXTPROC glad_glGetMinmaxParameterivEXT; +#define glGetMinmaxParameterivEXT glad_glGetMinmaxParameterivEXT +typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI PFNGLHISTOGRAMEXTPROC glad_glHistogramEXT; +#define glHistogramEXT glad_glHistogramEXT +typedef void (APIENTRYP PFNGLMINMAXEXTPROC)(GLenum target, GLenum internalformat, GLboolean sink); +GLAPI PFNGLMINMAXEXTPROC glad_glMinmaxEXT; +#define glMinmaxEXT glad_glMinmaxEXT +typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC)(GLenum target); +GLAPI PFNGLRESETHISTOGRAMEXTPROC glad_glResetHistogramEXT; +#define glResetHistogramEXT glad_glResetHistogramEXT +typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC)(GLenum target); +GLAPI PFNGLRESETMINMAXEXTPROC glad_glResetMinmaxEXT; +#define glResetMinmaxEXT glad_glResetMinmaxEXT +#endif +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +GLAPI int GLAD_GL_EXT_index_array_formats; +#endif +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +GLAPI int GLAD_GL_EXT_index_func; +typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC)(GLenum func, GLclampf ref); +GLAPI PFNGLINDEXFUNCEXTPROC glad_glIndexFuncEXT; +#define glIndexFuncEXT glad_glIndexFuncEXT +#endif +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +GLAPI int GLAD_GL_EXT_index_material; +typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC)(GLenum face, GLenum mode); +GLAPI PFNGLINDEXMATERIALEXTPROC glad_glIndexMaterialEXT; +#define glIndexMaterialEXT glad_glIndexMaterialEXT +#endif +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +GLAPI int GLAD_GL_EXT_index_texture; +#endif +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +GLAPI int GLAD_GL_EXT_light_texture; +typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC)(GLenum mode); +GLAPI PFNGLAPPLYTEXTUREEXTPROC glad_glApplyTextureEXT; +#define glApplyTextureEXT glad_glApplyTextureEXT +typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC)(GLenum pname); +GLAPI PFNGLTEXTURELIGHTEXTPROC glad_glTextureLightEXT; +#define glTextureLightEXT glad_glTextureLightEXT +typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC)(GLenum face, GLenum mode); +GLAPI PFNGLTEXTUREMATERIALEXTPROC glad_glTextureMaterialEXT; +#define glTextureMaterialEXT glad_glTextureMaterialEXT +#endif +#ifndef GL_EXT_memory_object +#define GL_EXT_memory_object 1 +GLAPI int GLAD_GL_EXT_memory_object; +typedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC)(GLenum pname, GLubyte *data); +GLAPI PFNGLGETUNSIGNEDBYTEVEXTPROC glad_glGetUnsignedBytevEXT; +#define glGetUnsignedBytevEXT glad_glGetUnsignedBytevEXT +typedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC)(GLenum target, GLuint index, GLubyte *data); +GLAPI PFNGLGETUNSIGNEDBYTEI_VEXTPROC glad_glGetUnsignedBytei_vEXT; +#define glGetUnsignedBytei_vEXT glad_glGetUnsignedBytei_vEXT +typedef void (APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC)(GLsizei n, const GLuint *memoryObjects); +GLAPI PFNGLDELETEMEMORYOBJECTSEXTPROC glad_glDeleteMemoryObjectsEXT; +#define glDeleteMemoryObjectsEXT glad_glDeleteMemoryObjectsEXT +typedef GLboolean (APIENTRYP PFNGLISMEMORYOBJECTEXTPROC)(GLuint memoryObject); +GLAPI PFNGLISMEMORYOBJECTEXTPROC glad_glIsMemoryObjectEXT; +#define glIsMemoryObjectEXT glad_glIsMemoryObjectEXT +typedef void (APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC)(GLsizei n, GLuint *memoryObjects); +GLAPI PFNGLCREATEMEMORYOBJECTSEXTPROC glad_glCreateMemoryObjectsEXT; +#define glCreateMemoryObjectsEXT glad_glCreateMemoryObjectsEXT +typedef void (APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, const GLint *params); +GLAPI PFNGLMEMORYOBJECTPARAMETERIVEXTPROC glad_glMemoryObjectParameterivEXT; +#define glMemoryObjectParameterivEXT glad_glMemoryObjectParameterivEXT +typedef void (APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, GLint *params); +GLAPI PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC glad_glGetMemoryObjectParameterivEXT; +#define glGetMemoryObjectParameterivEXT glad_glGetMemoryObjectParameterivEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM2DEXTPROC glad_glTexStorageMem2DEXT; +#define glTexStorageMem2DEXT glad_glTexStorageMem2DEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTexStorageMem2DMultisampleEXT; +#define glTexStorageMem2DMultisampleEXT glad_glTexStorageMem2DMultisampleEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM3DEXTPROC glad_glTexStorageMem3DEXT; +#define glTexStorageMem3DEXT glad_glTexStorageMem3DEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTexStorageMem3DMultisampleEXT; +#define glTexStorageMem3DMultisampleEXT glad_glTexStorageMem3DMultisampleEXT +typedef void (APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GLAPI PFNGLBUFFERSTORAGEMEMEXTPROC glad_glBufferStorageMemEXT; +#define glBufferStorageMemEXT glad_glBufferStorageMemEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM2DEXTPROC glad_glTextureStorageMem2DEXT; +#define glTextureStorageMem2DEXT glad_glTextureStorageMem2DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTextureStorageMem2DMultisampleEXT; +#define glTextureStorageMem2DMultisampleEXT glad_glTextureStorageMem2DMultisampleEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM3DEXTPROC glad_glTextureStorageMem3DEXT; +#define glTextureStorageMem3DEXT glad_glTextureStorageMem3DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTextureStorageMem3DMultisampleEXT; +#define glTextureStorageMem3DMultisampleEXT glad_glTextureStorageMem3DMultisampleEXT +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +GLAPI PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC glad_glNamedBufferStorageMemEXT; +#define glNamedBufferStorageMemEXT glad_glNamedBufferStorageMemEXT +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM1DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXSTORAGEMEM1DEXTPROC glad_glTexStorageMem1DEXT; +#define glTexStorageMem1DEXT glad_glTexStorageMem1DEXT +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM1DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTURESTORAGEMEM1DEXTPROC glad_glTextureStorageMem1DEXT; +#define glTextureStorageMem1DEXT glad_glTextureStorageMem1DEXT +#endif +#ifndef GL_EXT_memory_object_fd +#define GL_EXT_memory_object_fd 1 +GLAPI int GLAD_GL_EXT_memory_object_fd; +typedef void (APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +GLAPI PFNGLIMPORTMEMORYFDEXTPROC glad_glImportMemoryFdEXT; +#define glImportMemoryFdEXT glad_glImportMemoryFdEXT +#endif +#ifndef GL_EXT_memory_object_win32 +#define GL_EXT_memory_object_win32 1 +GLAPI int GLAD_GL_EXT_memory_object_win32; +typedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GLAPI PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC glad_glImportMemoryWin32HandleEXT; +#define glImportMemoryWin32HandleEXT glad_glImportMemoryWin32HandleEXT +typedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, const void *name); +GLAPI PFNGLIMPORTMEMORYWIN32NAMEEXTPROC glad_glImportMemoryWin32NameEXT; +#define glImportMemoryWin32NameEXT glad_glImportMemoryWin32NameEXT +#endif +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +GLAPI int GLAD_GL_EXT_misc_attribute; +#endif +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +GLAPI int GLAD_GL_EXT_multi_draw_arrays; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT; +#define glMultiDrawArraysEXT glad_glMultiDrawArraysEXT +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +GLAPI PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT; +#define glMultiDrawElementsEXT glad_glMultiDrawElementsEXT +#endif +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +GLAPI int GLAD_GL_EXT_multisample; +typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC)(GLclampf value, GLboolean invert); +GLAPI PFNGLSAMPLEMASKEXTPROC glad_glSampleMaskEXT; +#define glSampleMaskEXT glad_glSampleMaskEXT +typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC)(GLenum pattern); +GLAPI PFNGLSAMPLEPATTERNEXTPROC glad_glSamplePatternEXT; +#define glSamplePatternEXT glad_glSamplePatternEXT +#endif +#ifndef GL_EXT_multiview_tessellation_geometry_shader +#define GL_EXT_multiview_tessellation_geometry_shader 1 +GLAPI int GLAD_GL_EXT_multiview_tessellation_geometry_shader; +#endif +#ifndef GL_EXT_multiview_texture_multisample +#define GL_EXT_multiview_texture_multisample 1 +GLAPI int GLAD_GL_EXT_multiview_texture_multisample; +#endif +#ifndef GL_EXT_multiview_timer_query +#define GL_EXT_multiview_timer_query 1 +GLAPI int GLAD_GL_EXT_multiview_timer_query; +#endif +#ifndef GL_EXT_packed_depth_stencil +#define GL_EXT_packed_depth_stencil 1 +GLAPI int GLAD_GL_EXT_packed_depth_stencil; +#endif +#ifndef GL_EXT_packed_float +#define GL_EXT_packed_float 1 +GLAPI int GLAD_GL_EXT_packed_float; +#endif +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +GLAPI int GLAD_GL_EXT_packed_pixels; +#endif +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +GLAPI int GLAD_GL_EXT_paletted_texture; +typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI PFNGLCOLORTABLEEXTPROC glad_glColorTableEXT; +#define glColorTableEXT glad_glColorTableEXT +typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC)(GLenum target, GLenum format, GLenum type, void *data); +GLAPI PFNGLGETCOLORTABLEEXTPROC glad_glGetColorTableEXT; +#define glGetColorTableEXT glad_glGetColorTableEXT +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glad_glGetColorTableParameterivEXT; +#define glGetColorTableParameterivEXT glad_glGetColorTableParameterivEXT +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glad_glGetColorTableParameterfvEXT; +#define glGetColorTableParameterfvEXT glad_glGetColorTableParameterfvEXT +#endif +#ifndef GL_EXT_pixel_buffer_object +#define GL_EXT_pixel_buffer_object 1 +GLAPI int GLAD_GL_EXT_pixel_buffer_object; +#endif +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +GLAPI int GLAD_GL_EXT_pixel_transform; +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLPIXELTRANSFORMPARAMETERIEXTPROC glad_glPixelTransformParameteriEXT; +#define glPixelTransformParameteriEXT glad_glPixelTransformParameteriEXT +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLPIXELTRANSFORMPARAMETERFEXTPROC glad_glPixelTransformParameterfEXT; +#define glPixelTransformParameterfEXT glad_glPixelTransformParameterfEXT +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC glad_glPixelTransformParameterivEXT; +#define glPixelTransformParameterivEXT glad_glPixelTransformParameterivEXT +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC glad_glPixelTransformParameterfvEXT; +#define glPixelTransformParameterfvEXT glad_glPixelTransformParameterfvEXT +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC glad_glGetPixelTransformParameterivEXT; +#define glGetPixelTransformParameterivEXT glad_glGetPixelTransformParameterivEXT +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC glad_glGetPixelTransformParameterfvEXT; +#define glGetPixelTransformParameterfvEXT glad_glGetPixelTransformParameterfvEXT +#endif +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +GLAPI int GLAD_GL_EXT_pixel_transform_color_table; +#endif +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +GLAPI int GLAD_GL_EXT_point_parameters; +typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFEXTPROC glad_glPointParameterfEXT; +#define glPointParameterfEXT glad_glPointParameterfEXT +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVEXTPROC glad_glPointParameterfvEXT; +#define glPointParameterfvEXT glad_glPointParameterfvEXT +#endif +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +GLAPI int GLAD_GL_EXT_polygon_offset; +typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC)(GLfloat factor, GLfloat bias); +GLAPI PFNGLPOLYGONOFFSETEXTPROC glad_glPolygonOffsetEXT; +#define glPolygonOffsetEXT glad_glPolygonOffsetEXT +#endif +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +GLAPI int GLAD_GL_EXT_polygon_offset_clamp; +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC)(GLfloat factor, GLfloat units, GLfloat clamp); +GLAPI PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT; +#define glPolygonOffsetClampEXT glad_glPolygonOffsetClampEXT +#endif +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +GLAPI int GLAD_GL_EXT_post_depth_coverage; +#endif +#ifndef GL_EXT_provoking_vertex +#define GL_EXT_provoking_vertex 1 +GLAPI int GLAD_GL_EXT_provoking_vertex; +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC)(GLenum mode); +GLAPI PFNGLPROVOKINGVERTEXEXTPROC glad_glProvokingVertexEXT; +#define glProvokingVertexEXT glad_glProvokingVertexEXT +#endif +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +GLAPI int GLAD_GL_EXT_raster_multisample; +typedef void (APIENTRYP PFNGLRASTERSAMPLESEXTPROC)(GLuint samples, GLboolean fixedsamplelocations); +GLAPI PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT; +#define glRasterSamplesEXT glad_glRasterSamplesEXT +#endif +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +GLAPI int GLAD_GL_EXT_rescale_normal; +#endif +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +GLAPI int GLAD_GL_EXT_secondary_color; +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC)(GLbyte red, GLbyte green, GLbyte blue); +GLAPI PFNGLSECONDARYCOLOR3BEXTPROC glad_glSecondaryColor3bEXT; +#define glSecondaryColor3bEXT glad_glSecondaryColor3bEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC)(const GLbyte *v); +GLAPI PFNGLSECONDARYCOLOR3BVEXTPROC glad_glSecondaryColor3bvEXT; +#define glSecondaryColor3bvEXT glad_glSecondaryColor3bvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC)(GLdouble red, GLdouble green, GLdouble blue); +GLAPI PFNGLSECONDARYCOLOR3DEXTPROC glad_glSecondaryColor3dEXT; +#define glSecondaryColor3dEXT glad_glSecondaryColor3dEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC)(const GLdouble *v); +GLAPI PFNGLSECONDARYCOLOR3DVEXTPROC glad_glSecondaryColor3dvEXT; +#define glSecondaryColor3dvEXT glad_glSecondaryColor3dvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC)(GLfloat red, GLfloat green, GLfloat blue); +GLAPI PFNGLSECONDARYCOLOR3FEXTPROC glad_glSecondaryColor3fEXT; +#define glSecondaryColor3fEXT glad_glSecondaryColor3fEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC)(const GLfloat *v); +GLAPI PFNGLSECONDARYCOLOR3FVEXTPROC glad_glSecondaryColor3fvEXT; +#define glSecondaryColor3fvEXT glad_glSecondaryColor3fvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC)(GLint red, GLint green, GLint blue); +GLAPI PFNGLSECONDARYCOLOR3IEXTPROC glad_glSecondaryColor3iEXT; +#define glSecondaryColor3iEXT glad_glSecondaryColor3iEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC)(const GLint *v); +GLAPI PFNGLSECONDARYCOLOR3IVEXTPROC glad_glSecondaryColor3ivEXT; +#define glSecondaryColor3ivEXT glad_glSecondaryColor3ivEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC)(GLshort red, GLshort green, GLshort blue); +GLAPI PFNGLSECONDARYCOLOR3SEXTPROC glad_glSecondaryColor3sEXT; +#define glSecondaryColor3sEXT glad_glSecondaryColor3sEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC)(const GLshort *v); +GLAPI PFNGLSECONDARYCOLOR3SVEXTPROC glad_glSecondaryColor3svEXT; +#define glSecondaryColor3svEXT glad_glSecondaryColor3svEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC)(GLubyte red, GLubyte green, GLubyte blue); +GLAPI PFNGLSECONDARYCOLOR3UBEXTPROC glad_glSecondaryColor3ubEXT; +#define glSecondaryColor3ubEXT glad_glSecondaryColor3ubEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC)(const GLubyte *v); +GLAPI PFNGLSECONDARYCOLOR3UBVEXTPROC glad_glSecondaryColor3ubvEXT; +#define glSecondaryColor3ubvEXT glad_glSecondaryColor3ubvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC)(GLuint red, GLuint green, GLuint blue); +GLAPI PFNGLSECONDARYCOLOR3UIEXTPROC glad_glSecondaryColor3uiEXT; +#define glSecondaryColor3uiEXT glad_glSecondaryColor3uiEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC)(const GLuint *v); +GLAPI PFNGLSECONDARYCOLOR3UIVEXTPROC glad_glSecondaryColor3uivEXT; +#define glSecondaryColor3uivEXT glad_glSecondaryColor3uivEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC)(GLushort red, GLushort green, GLushort blue); +GLAPI PFNGLSECONDARYCOLOR3USEXTPROC glad_glSecondaryColor3usEXT; +#define glSecondaryColor3usEXT glad_glSecondaryColor3usEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC)(const GLushort *v); +GLAPI PFNGLSECONDARYCOLOR3USVEXTPROC glad_glSecondaryColor3usvEXT; +#define glSecondaryColor3usvEXT glad_glSecondaryColor3usvEXT +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLSECONDARYCOLORPOINTEREXTPROC glad_glSecondaryColorPointerEXT; +#define glSecondaryColorPointerEXT glad_glSecondaryColorPointerEXT +#endif +#ifndef GL_EXT_semaphore +#define GL_EXT_semaphore 1 +GLAPI int GLAD_GL_EXT_semaphore; +typedef void (APIENTRYP PFNGLGENSEMAPHORESEXTPROC)(GLsizei n, GLuint *semaphores); +GLAPI PFNGLGENSEMAPHORESEXTPROC glad_glGenSemaphoresEXT; +#define glGenSemaphoresEXT glad_glGenSemaphoresEXT +typedef void (APIENTRYP PFNGLDELETESEMAPHORESEXTPROC)(GLsizei n, const GLuint *semaphores); +GLAPI PFNGLDELETESEMAPHORESEXTPROC glad_glDeleteSemaphoresEXT; +#define glDeleteSemaphoresEXT glad_glDeleteSemaphoresEXT +typedef GLboolean (APIENTRYP PFNGLISSEMAPHOREEXTPROC)(GLuint semaphore); +GLAPI PFNGLISSEMAPHOREEXTPROC glad_glIsSemaphoreEXT; +#define glIsSemaphoreEXT glad_glIsSemaphoreEXT +typedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, const GLuint64 *params); +GLAPI PFNGLSEMAPHOREPARAMETERUI64VEXTPROC glad_glSemaphoreParameterui64vEXT; +#define glSemaphoreParameterui64vEXT glad_glSemaphoreParameterui64vEXT +typedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, GLuint64 *params); +GLAPI PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC glad_glGetSemaphoreParameterui64vEXT; +#define glGetSemaphoreParameterui64vEXT glad_glGetSemaphoreParameterui64vEXT +typedef void (APIENTRYP PFNGLWAITSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GLAPI PFNGLWAITSEMAPHOREEXTPROC glad_glWaitSemaphoreEXT; +#define glWaitSemaphoreEXT glad_glWaitSemaphoreEXT +typedef void (APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +GLAPI PFNGLSIGNALSEMAPHOREEXTPROC glad_glSignalSemaphoreEXT; +#define glSignalSemaphoreEXT glad_glSignalSemaphoreEXT +#endif +#ifndef GL_EXT_semaphore_fd +#define GL_EXT_semaphore_fd 1 +GLAPI int GLAD_GL_EXT_semaphore_fd; +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC)(GLuint semaphore, GLenum handleType, GLint fd); +GLAPI PFNGLIMPORTSEMAPHOREFDEXTPROC glad_glImportSemaphoreFdEXT; +#define glImportSemaphoreFdEXT glad_glImportSemaphoreFdEXT +#endif +#ifndef GL_EXT_semaphore_win32 +#define GL_EXT_semaphore_win32 1 +GLAPI int GLAD_GL_EXT_semaphore_win32; +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)(GLuint semaphore, GLenum handleType, void *handle); +GLAPI PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC glad_glImportSemaphoreWin32HandleEXT; +#define glImportSemaphoreWin32HandleEXT glad_glImportSemaphoreWin32HandleEXT +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)(GLuint semaphore, GLenum handleType, const void *name); +GLAPI PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC glad_glImportSemaphoreWin32NameEXT; +#define glImportSemaphoreWin32NameEXT glad_glImportSemaphoreWin32NameEXT +#endif +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +GLAPI int GLAD_GL_EXT_separate_shader_objects; +typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC)(GLenum type, GLuint program); +GLAPI PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT; +#define glUseShaderProgramEXT glad_glUseShaderProgramEXT +typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC)(GLuint program); +GLAPI PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT; +#define glActiveProgramEXT glad_glActiveProgramEXT +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC)(GLenum type, const GLchar *string); +GLAPI PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT; +#define glCreateShaderProgramEXT glad_glCreateShaderProgramEXT +typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC)(GLuint pipeline, GLuint program); +GLAPI PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT; +#define glActiveShaderProgramEXT glad_glActiveShaderProgramEXT +typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC)(GLuint pipeline); +GLAPI PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT; +#define glBindProgramPipelineEXT glad_glBindProgramPipelineEXT +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC)(GLenum type, GLsizei count, const GLchar **strings); +GLAPI PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT; +#define glCreateShaderProgramvEXT glad_glCreateShaderProgramvEXT +typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC)(GLsizei n, const GLuint *pipelines); +GLAPI PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT; +#define glDeleteProgramPipelinesEXT glad_glDeleteProgramPipelinesEXT +typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC)(GLsizei n, GLuint *pipelines); +GLAPI PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT; +#define glGenProgramPipelinesEXT glad_glGenProgramPipelinesEXT +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT; +#define glGetProgramPipelineInfoLogEXT glad_glGetProgramPipelineInfoLogEXT +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC)(GLuint pipeline, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT; +#define glGetProgramPipelineivEXT glad_glGetProgramPipelineivEXT +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC)(GLuint pipeline); +GLAPI PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT; +#define glIsProgramPipelineEXT glad_glIsProgramPipelineEXT +typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC)(GLuint pipeline, GLbitfield stages, GLuint program); +GLAPI PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT; +#define glUseProgramStagesEXT glad_glUseProgramStagesEXT +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)(GLuint pipeline); +GLAPI PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT; +#define glValidateProgramPipelineEXT glad_glValidateProgramPipelineEXT +#endif +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +GLAPI int GLAD_GL_EXT_separate_specular_color; +#endif +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +GLAPI int GLAD_GL_EXT_shader_framebuffer_fetch; +#endif +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +GLAPI int GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent; +typedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)(void); +GLAPI PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC glad_glFramebufferFetchBarrierEXT; +#define glFramebufferFetchBarrierEXT glad_glFramebufferFetchBarrierEXT +#endif +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 +GLAPI int GLAD_GL_EXT_shader_image_load_formatted; +#endif +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 +GLAPI int GLAD_GL_EXT_shader_image_load_store; +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC)(GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +GLAPI PFNGLBINDIMAGETEXTUREEXTPROC glad_glBindImageTextureEXT; +#define glBindImageTextureEXT glad_glBindImageTextureEXT +typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC)(GLbitfield barriers); +GLAPI PFNGLMEMORYBARRIEREXTPROC glad_glMemoryBarrierEXT; +#define glMemoryBarrierEXT glad_glMemoryBarrierEXT +#endif +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +GLAPI int GLAD_GL_EXT_shader_integer_mix; +#endif +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 +GLAPI int GLAD_GL_EXT_shadow_funcs; +#endif +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +GLAPI int GLAD_GL_EXT_shared_texture_palette; +#endif +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +GLAPI int GLAD_GL_EXT_sparse_texture2; +#endif +#ifndef GL_EXT_stencil_clear_tag +#define GL_EXT_stencil_clear_tag 1 +GLAPI int GLAD_GL_EXT_stencil_clear_tag; +typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC)(GLsizei stencilTagBits, GLuint stencilClearTag); +GLAPI PFNGLSTENCILCLEARTAGEXTPROC glad_glStencilClearTagEXT; +#define glStencilClearTagEXT glad_glStencilClearTagEXT +#endif +#ifndef GL_EXT_stencil_two_side +#define GL_EXT_stencil_two_side 1 +GLAPI int GLAD_GL_EXT_stencil_two_side; +typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC)(GLenum face); +GLAPI PFNGLACTIVESTENCILFACEEXTPROC glad_glActiveStencilFaceEXT; +#define glActiveStencilFaceEXT glad_glActiveStencilFaceEXT +#endif +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +GLAPI int GLAD_GL_EXT_stencil_wrap; +#endif +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 +GLAPI int GLAD_GL_EXT_subtexture; +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE1DEXTPROC glad_glTexSubImage1DEXT; +#define glTexSubImage1DEXT glad_glTexSubImage1DEXT +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE2DEXTPROC glad_glTexSubImage2DEXT; +#define glTexSubImage2DEXT glad_glTexSubImage2DEXT +#endif +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +GLAPI int GLAD_GL_EXT_texture; +#endif +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +GLAPI int GLAD_GL_EXT_texture3D; +typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE3DEXTPROC glad_glTexImage3DEXT; +#define glTexImage3DEXT glad_glTexImage3DEXT +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE3DEXTPROC glad_glTexSubImage3DEXT; +#define glTexSubImage3DEXT glad_glTexSubImage3DEXT +#endif +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 +GLAPI int GLAD_GL_EXT_texture_array; +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC glad_glFramebufferTextureLayerEXT; +#define glFramebufferTextureLayerEXT glad_glFramebufferTextureLayerEXT +#endif +#ifndef GL_EXT_texture_buffer_object +#define GL_EXT_texture_buffer_object 1 +GLAPI int GLAD_GL_EXT_texture_buffer_object; +typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC)(GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT; +#define glTexBufferEXT glad_glTexBufferEXT +#endif +#ifndef GL_EXT_texture_compression_latc +#define GL_EXT_texture_compression_latc 1 +GLAPI int GLAD_GL_EXT_texture_compression_latc; +#endif +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +GLAPI int GLAD_GL_EXT_texture_compression_rgtc; +#endif +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +GLAPI int GLAD_GL_EXT_texture_compression_s3tc; +#endif +#ifndef GL_EXT_texture_cube_map +#define GL_EXT_texture_cube_map 1 +GLAPI int GLAD_GL_EXT_texture_cube_map; +#endif +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +GLAPI int GLAD_GL_EXT_texture_env_add; +#endif +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +GLAPI int GLAD_GL_EXT_texture_env_combine; +#endif +#ifndef GL_EXT_texture_env_dot3 +#define GL_EXT_texture_env_dot3 1 +GLAPI int GLAD_GL_EXT_texture_env_dot3; +#endif +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +GLAPI int GLAD_GL_EXT_texture_filter_anisotropic; +#endif +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +GLAPI int GLAD_GL_EXT_texture_filter_minmax; +#endif +#ifndef GL_EXT_texture_integer +#define GL_EXT_texture_integer 1 +GLAPI int GLAD_GL_EXT_texture_integer; +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT; +#define glTexParameterIivEXT glad_glTexParameterIivEXT +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT; +#define glTexParameterIuivEXT glad_glTexParameterIuivEXT +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT; +#define glGetTexParameterIivEXT glad_glGetTexParameterIivEXT +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT; +#define glGetTexParameterIuivEXT glad_glGetTexParameterIuivEXT +typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC)(GLint red, GLint green, GLint blue, GLint alpha); +GLAPI PFNGLCLEARCOLORIIEXTPROC glad_glClearColorIiEXT; +#define glClearColorIiEXT glad_glClearColorIiEXT +typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha); +GLAPI PFNGLCLEARCOLORIUIEXTPROC glad_glClearColorIuiEXT; +#define glClearColorIuiEXT glad_glClearColorIuiEXT +#endif +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +GLAPI int GLAD_GL_EXT_texture_lod_bias; +#endif +#ifndef GL_EXT_texture_mirror_clamp +#define GL_EXT_texture_mirror_clamp 1 +GLAPI int GLAD_GL_EXT_texture_mirror_clamp; +#endif +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +GLAPI int GLAD_GL_EXT_texture_object; +typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC)(GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI PFNGLARETEXTURESRESIDENTEXTPROC glad_glAreTexturesResidentEXT; +#define glAreTexturesResidentEXT glad_glAreTexturesResidentEXT +typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC)(GLenum target, GLuint texture); +GLAPI PFNGLBINDTEXTUREEXTPROC glad_glBindTextureEXT; +#define glBindTextureEXT glad_glBindTextureEXT +typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC)(GLsizei n, const GLuint *textures); +GLAPI PFNGLDELETETEXTURESEXTPROC glad_glDeleteTexturesEXT; +#define glDeleteTexturesEXT glad_glDeleteTexturesEXT +typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC)(GLsizei n, GLuint *textures); +GLAPI PFNGLGENTEXTURESEXTPROC glad_glGenTexturesEXT; +#define glGenTexturesEXT glad_glGenTexturesEXT +typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC)(GLuint texture); +GLAPI PFNGLISTEXTUREEXTPROC glad_glIsTextureEXT; +#define glIsTextureEXT glad_glIsTextureEXT +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC)(GLsizei n, const GLuint *textures, const GLclampf *priorities); +GLAPI PFNGLPRIORITIZETEXTURESEXTPROC glad_glPrioritizeTexturesEXT; +#define glPrioritizeTexturesEXT glad_glPrioritizeTexturesEXT +#endif +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +GLAPI int GLAD_GL_EXT_texture_perturb_normal; +typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC)(GLenum mode); +GLAPI PFNGLTEXTURENORMALEXTPROC glad_glTextureNormalEXT; +#define glTextureNormalEXT glad_glTextureNormalEXT +#endif +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +GLAPI int GLAD_GL_EXT_texture_sRGB; +#endif +#ifndef GL_EXT_texture_sRGB_R8 +#define GL_EXT_texture_sRGB_R8 1 +GLAPI int GLAD_GL_EXT_texture_sRGB_R8; +#endif +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +GLAPI int GLAD_GL_EXT_texture_sRGB_decode; +#endif +#ifndef GL_EXT_texture_shadow_lod +#define GL_EXT_texture_shadow_lod 1 +GLAPI int GLAD_GL_EXT_texture_shadow_lod; +#endif +#ifndef GL_EXT_texture_shared_exponent +#define GL_EXT_texture_shared_exponent 1 +GLAPI int GLAD_GL_EXT_texture_shared_exponent; +#endif +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 +GLAPI int GLAD_GL_EXT_texture_snorm; +#endif +#ifndef GL_EXT_texture_swizzle +#define GL_EXT_texture_swizzle 1 +GLAPI int GLAD_GL_EXT_texture_swizzle; +#endif +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 +GLAPI int GLAD_GL_EXT_timer_query; +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC)(GLuint id, GLenum pname, GLint64 *params); +GLAPI PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT; +#define glGetQueryObjecti64vEXT glad_glGetQueryObjecti64vEXT +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC)(GLuint id, GLenum pname, GLuint64 *params); +GLAPI PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT; +#define glGetQueryObjectui64vEXT glad_glGetQueryObjectui64vEXT +#endif +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 +GLAPI int GLAD_GL_EXT_transform_feedback; +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)(GLenum primitiveMode); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glad_glBeginTransformFeedbackEXT; +#define glBeginTransformFeedbackEXT glad_glBeginTransformFeedbackEXT +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC)(void); +GLAPI PFNGLENDTRANSFORMFEEDBACKEXTPROC glad_glEndTransformFeedbackEXT; +#define glEndTransformFeedbackEXT glad_glEndTransformFeedbackEXT +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLBINDBUFFERRANGEEXTPROC glad_glBindBufferRangeEXT; +#define glBindBufferRangeEXT glad_glBindBufferRangeEXT +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI PFNGLBINDBUFFEROFFSETEXTPROC glad_glBindBufferOffsetEXT; +#define glBindBufferOffsetEXT glad_glBindBufferOffsetEXT +typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC)(GLenum target, GLuint index, GLuint buffer); +GLAPI PFNGLBINDBUFFERBASEEXTPROC glad_glBindBufferBaseEXT; +#define glBindBufferBaseEXT glad_glBindBufferBaseEXT +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glad_glTransformFeedbackVaryingsEXT; +#define glTransformFeedbackVaryingsEXT glad_glTransformFeedbackVaryingsEXT +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glad_glGetTransformFeedbackVaryingEXT; +#define glGetTransformFeedbackVaryingEXT glad_glGetTransformFeedbackVaryingEXT +#endif +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +GLAPI int GLAD_GL_EXT_vertex_array; +typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC)(GLint i); +GLAPI PFNGLARRAYELEMENTEXTPROC glad_glArrayElementEXT; +#define glArrayElementEXT glad_glArrayElementEXT +typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLCOLORPOINTEREXTPROC glad_glColorPointerEXT; +#define glColorPointerEXT glad_glColorPointerEXT +typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC)(GLenum mode, GLint first, GLsizei count); +GLAPI PFNGLDRAWARRAYSEXTPROC glad_glDrawArraysEXT; +#define glDrawArraysEXT glad_glDrawArraysEXT +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC)(GLsizei stride, GLsizei count, const GLboolean *pointer); +GLAPI PFNGLEDGEFLAGPOINTEREXTPROC glad_glEdgeFlagPointerEXT; +#define glEdgeFlagPointerEXT glad_glEdgeFlagPointerEXT +typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC)(GLenum pname, void **params); +GLAPI PFNGLGETPOINTERVEXTPROC glad_glGetPointervEXT; +#define glGetPointervEXT glad_glGetPointervEXT +typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLINDEXPOINTEREXTPROC glad_glIndexPointerEXT; +#define glIndexPointerEXT glad_glIndexPointerEXT +typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLNORMALPOINTEREXTPROC glad_glNormalPointerEXT; +#define glNormalPointerEXT glad_glNormalPointerEXT +typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLTEXCOORDPOINTEREXTPROC glad_glTexCoordPointerEXT; +#define glTexCoordPointerEXT glad_glTexCoordPointerEXT +typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI PFNGLVERTEXPOINTEREXTPROC glad_glVertexPointerEXT; +#define glVertexPointerEXT glad_glVertexPointerEXT +#endif +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 +GLAPI int GLAD_GL_EXT_vertex_array_bgra; +#endif +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 +GLAPI int GLAD_GL_EXT_vertex_attrib_64bit; +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIBL1DEXTPROC glad_glVertexAttribL1dEXT; +#define glVertexAttribL1dEXT glad_glVertexAttribL1dEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIBL2DEXTPROC glad_glVertexAttribL2dEXT; +#define glVertexAttribL2dEXT glad_glVertexAttribL2dEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIBL3DEXTPROC glad_glVertexAttribL3dEXT; +#define glVertexAttribL3dEXT glad_glVertexAttribL3dEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIBL4DEXTPROC glad_glVertexAttribL4dEXT; +#define glVertexAttribL4dEXT glad_glVertexAttribL4dEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL1DVEXTPROC glad_glVertexAttribL1dvEXT; +#define glVertexAttribL1dvEXT glad_glVertexAttribL1dvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL2DVEXTPROC glad_glVertexAttribL2dvEXT; +#define glVertexAttribL2dvEXT glad_glVertexAttribL2dvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL3DVEXTPROC glad_glVertexAttribL3dvEXT; +#define glVertexAttribL3dvEXT glad_glVertexAttribL3dvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL4DVEXTPROC glad_glVertexAttribL4dvEXT; +#define glVertexAttribL4dvEXT glad_glVertexAttribL4dvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBLPOINTEREXTPROC glad_glVertexAttribLPointerEXT; +#define glVertexAttribLPointerEXT glad_glVertexAttribLPointerEXT +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBLDVEXTPROC glad_glGetVertexAttribLdvEXT; +#define glGetVertexAttribLdvEXT glad_glGetVertexAttribLdvEXT +#endif +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +GLAPI int GLAD_GL_EXT_vertex_shader; +typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC)(void); +GLAPI PFNGLBEGINVERTEXSHADEREXTPROC glad_glBeginVertexShaderEXT; +#define glBeginVertexShaderEXT glad_glBeginVertexShaderEXT +typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC)(void); +GLAPI PFNGLENDVERTEXSHADEREXTPROC glad_glEndVertexShaderEXT; +#define glEndVertexShaderEXT glad_glEndVertexShaderEXT +typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC)(GLuint id); +GLAPI PFNGLBINDVERTEXSHADEREXTPROC glad_glBindVertexShaderEXT; +#define glBindVertexShaderEXT glad_glBindVertexShaderEXT +typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC)(GLuint range); +GLAPI PFNGLGENVERTEXSHADERSEXTPROC glad_glGenVertexShadersEXT; +#define glGenVertexShadersEXT glad_glGenVertexShadersEXT +typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC)(GLuint id); +GLAPI PFNGLDELETEVERTEXSHADEREXTPROC glad_glDeleteVertexShaderEXT; +#define glDeleteVertexShaderEXT glad_glDeleteVertexShaderEXT +typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC)(GLenum op, GLuint res, GLuint arg1); +GLAPI PFNGLSHADEROP1EXTPROC glad_glShaderOp1EXT; +#define glShaderOp1EXT glad_glShaderOp1EXT +typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); +GLAPI PFNGLSHADEROP2EXTPROC glad_glShaderOp2EXT; +#define glShaderOp2EXT glad_glShaderOp2EXT +typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +GLAPI PFNGLSHADEROP3EXTPROC glad_glShaderOp3EXT; +#define glShaderOp3EXT glad_glShaderOp3EXT +typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI PFNGLSWIZZLEEXTPROC glad_glSwizzleEXT; +#define glSwizzleEXT glad_glSwizzleEXT +typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI PFNGLWRITEMASKEXTPROC glad_glWriteMaskEXT; +#define glWriteMaskEXT glad_glWriteMaskEXT +typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +GLAPI PFNGLINSERTCOMPONENTEXTPROC glad_glInsertComponentEXT; +#define glInsertComponentEXT glad_glInsertComponentEXT +typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +GLAPI PFNGLEXTRACTCOMPONENTEXTPROC glad_glExtractComponentEXT; +#define glExtractComponentEXT glad_glExtractComponentEXT +typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +GLAPI PFNGLGENSYMBOLSEXTPROC glad_glGenSymbolsEXT; +#define glGenSymbolsEXT glad_glGenSymbolsEXT +typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC)(GLuint id, GLenum type, const void *addr); +GLAPI PFNGLSETINVARIANTEXTPROC glad_glSetInvariantEXT; +#define glSetInvariantEXT glad_glSetInvariantEXT +typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC)(GLuint id, GLenum type, const void *addr); +GLAPI PFNGLSETLOCALCONSTANTEXTPROC glad_glSetLocalConstantEXT; +#define glSetLocalConstantEXT glad_glSetLocalConstantEXT +typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC)(GLuint id, const GLbyte *addr); +GLAPI PFNGLVARIANTBVEXTPROC glad_glVariantbvEXT; +#define glVariantbvEXT glad_glVariantbvEXT +typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC)(GLuint id, const GLshort *addr); +GLAPI PFNGLVARIANTSVEXTPROC glad_glVariantsvEXT; +#define glVariantsvEXT glad_glVariantsvEXT +typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC)(GLuint id, const GLint *addr); +GLAPI PFNGLVARIANTIVEXTPROC glad_glVariantivEXT; +#define glVariantivEXT glad_glVariantivEXT +typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC)(GLuint id, const GLfloat *addr); +GLAPI PFNGLVARIANTFVEXTPROC glad_glVariantfvEXT; +#define glVariantfvEXT glad_glVariantfvEXT +typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC)(GLuint id, const GLdouble *addr); +GLAPI PFNGLVARIANTDVEXTPROC glad_glVariantdvEXT; +#define glVariantdvEXT glad_glVariantdvEXT +typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC)(GLuint id, const GLubyte *addr); +GLAPI PFNGLVARIANTUBVEXTPROC glad_glVariantubvEXT; +#define glVariantubvEXT glad_glVariantubvEXT +typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC)(GLuint id, const GLushort *addr); +GLAPI PFNGLVARIANTUSVEXTPROC glad_glVariantusvEXT; +#define glVariantusvEXT glad_glVariantusvEXT +typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC)(GLuint id, const GLuint *addr); +GLAPI PFNGLVARIANTUIVEXTPROC glad_glVariantuivEXT; +#define glVariantuivEXT glad_glVariantuivEXT +typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC)(GLuint id, GLenum type, GLuint stride, const void *addr); +GLAPI PFNGLVARIANTPOINTEREXTPROC glad_glVariantPointerEXT; +#define glVariantPointerEXT glad_glVariantPointerEXT +typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +GLAPI PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glad_glEnableVariantClientStateEXT; +#define glEnableVariantClientStateEXT glad_glEnableVariantClientStateEXT +typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +GLAPI PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glad_glDisableVariantClientStateEXT; +#define glDisableVariantClientStateEXT glad_glDisableVariantClientStateEXT +typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC)(GLenum light, GLenum value); +GLAPI PFNGLBINDLIGHTPARAMETEREXTPROC glad_glBindLightParameterEXT; +#define glBindLightParameterEXT glad_glBindLightParameterEXT +typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC)(GLenum face, GLenum value); +GLAPI PFNGLBINDMATERIALPARAMETEREXTPROC glad_glBindMaterialParameterEXT; +#define glBindMaterialParameterEXT glad_glBindMaterialParameterEXT +typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC)(GLenum unit, GLenum coord, GLenum value); +GLAPI PFNGLBINDTEXGENPARAMETEREXTPROC glad_glBindTexGenParameterEXT; +#define glBindTexGenParameterEXT glad_glBindTexGenParameterEXT +typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)(GLenum unit, GLenum value); +GLAPI PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glad_glBindTextureUnitParameterEXT; +#define glBindTextureUnitParameterEXT glad_glBindTextureUnitParameterEXT +typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC)(GLenum value); +GLAPI PFNGLBINDPARAMETEREXTPROC glad_glBindParameterEXT; +#define glBindParameterEXT glad_glBindParameterEXT +typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC)(GLuint id, GLenum cap); +GLAPI PFNGLISVARIANTENABLEDEXTPROC glad_glIsVariantEnabledEXT; +#define glIsVariantEnabledEXT glad_glIsVariantEnabledEXT +typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean *data); +GLAPI PFNGLGETVARIANTBOOLEANVEXTPROC glad_glGetVariantBooleanvEXT; +#define glGetVariantBooleanvEXT glad_glGetVariantBooleanvEXT +typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +GLAPI PFNGLGETVARIANTINTEGERVEXTPROC glad_glGetVariantIntegervEXT; +#define glGetVariantIntegervEXT glad_glGetVariantIntegervEXT +typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +GLAPI PFNGLGETVARIANTFLOATVEXTPROC glad_glGetVariantFloatvEXT; +#define glGetVariantFloatvEXT glad_glGetVariantFloatvEXT +typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC)(GLuint id, GLenum value, void **data); +GLAPI PFNGLGETVARIANTPOINTERVEXTPROC glad_glGetVariantPointervEXT; +#define glGetVariantPointervEXT glad_glGetVariantPointervEXT +typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean *data); +GLAPI PFNGLGETINVARIANTBOOLEANVEXTPROC glad_glGetInvariantBooleanvEXT; +#define glGetInvariantBooleanvEXT glad_glGetInvariantBooleanvEXT +typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +GLAPI PFNGLGETINVARIANTINTEGERVEXTPROC glad_glGetInvariantIntegervEXT; +#define glGetInvariantIntegervEXT glad_glGetInvariantIntegervEXT +typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +GLAPI PFNGLGETINVARIANTFLOATVEXTPROC glad_glGetInvariantFloatvEXT; +#define glGetInvariantFloatvEXT glad_glGetInvariantFloatvEXT +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean *data); +GLAPI PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glad_glGetLocalConstantBooleanvEXT; +#define glGetLocalConstantBooleanvEXT glad_glGetLocalConstantBooleanvEXT +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +GLAPI PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glad_glGetLocalConstantIntegervEXT; +#define glGetLocalConstantIntegervEXT glad_glGetLocalConstantIntegervEXT +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +GLAPI PFNGLGETLOCALCONSTANTFLOATVEXTPROC glad_glGetLocalConstantFloatvEXT; +#define glGetLocalConstantFloatvEXT glad_glGetLocalConstantFloatvEXT +#endif +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +GLAPI int GLAD_GL_EXT_vertex_weighting; +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC)(GLfloat weight); +GLAPI PFNGLVERTEXWEIGHTFEXTPROC glad_glVertexWeightfEXT; +#define glVertexWeightfEXT glad_glVertexWeightfEXT +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC)(const GLfloat *weight); +GLAPI PFNGLVERTEXWEIGHTFVEXTPROC glad_glVertexWeightfvEXT; +#define glVertexWeightfvEXT glad_glVertexWeightfvEXT +typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXWEIGHTPOINTEREXTPROC glad_glVertexWeightPointerEXT; +#define glVertexWeightPointerEXT glad_glVertexWeightPointerEXT +#endif +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +GLAPI int GLAD_GL_EXT_win32_keyed_mutex; +typedef GLboolean (APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key, GLuint timeout); +GLAPI PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC glad_glAcquireKeyedMutexWin32EXT; +#define glAcquireKeyedMutexWin32EXT glad_glAcquireKeyedMutexWin32EXT +typedef GLboolean (APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key); +GLAPI PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC glad_glReleaseKeyedMutexWin32EXT; +#define glReleaseKeyedMutexWin32EXT glad_glReleaseKeyedMutexWin32EXT +#endif +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +GLAPI int GLAD_GL_EXT_window_rectangles; +typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC)(GLenum mode, GLsizei count, const GLint *box); +GLAPI PFNGLWINDOWRECTANGLESEXTPROC glad_glWindowRectanglesEXT; +#define glWindowRectanglesEXT glad_glWindowRectanglesEXT +#endif +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 +GLAPI int GLAD_GL_EXT_x11_sync_object; +typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +GLAPI PFNGLIMPORTSYNCEXTPROC glad_glImportSyncEXT; +#define glImportSyncEXT glad_glImportSyncEXT +#endif +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 +GLAPI int GLAD_GL_GREMEDY_frame_terminator; +typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC)(void); +GLAPI PFNGLFRAMETERMINATORGREMEDYPROC glad_glFrameTerminatorGREMEDY; +#define glFrameTerminatorGREMEDY glad_glFrameTerminatorGREMEDY +#endif +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 +GLAPI int GLAD_GL_GREMEDY_string_marker; +typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC)(GLsizei len, const void *string); +GLAPI PFNGLSTRINGMARKERGREMEDYPROC glad_glStringMarkerGREMEDY; +#define glStringMarkerGREMEDY glad_glStringMarkerGREMEDY +#endif +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +GLAPI int GLAD_GL_HP_convolution_border_modes; +#endif +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +GLAPI int GLAD_GL_HP_image_transform; +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLIMAGETRANSFORMPARAMETERIHPPROC glad_glImageTransformParameteriHP; +#define glImageTransformParameteriHP glad_glImageTransformParameteriHP +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLIMAGETRANSFORMPARAMETERFHPPROC glad_glImageTransformParameterfHP; +#define glImageTransformParameterfHP glad_glImageTransformParameterfHP +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLIMAGETRANSFORMPARAMETERIVHPPROC glad_glImageTransformParameterivHP; +#define glImageTransformParameterivHP glad_glImageTransformParameterivHP +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLIMAGETRANSFORMPARAMETERFVHPPROC glad_glImageTransformParameterfvHP; +#define glImageTransformParameterfvHP glad_glImageTransformParameterfvHP +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC glad_glGetImageTransformParameterivHP; +#define glGetImageTransformParameterivHP glad_glGetImageTransformParameterivHP +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC glad_glGetImageTransformParameterfvHP; +#define glGetImageTransformParameterfvHP glad_glGetImageTransformParameterfvHP +#endif +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +GLAPI int GLAD_GL_HP_occlusion_test; +#endif +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +GLAPI int GLAD_GL_HP_texture_lighting; +#endif +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +GLAPI int GLAD_GL_IBM_cull_vertex; +#endif +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 +GLAPI int GLAD_GL_IBM_multimode_draw_arrays; +typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +GLAPI PFNGLMULTIMODEDRAWARRAYSIBMPROC glad_glMultiModeDrawArraysIBM; +#define glMultiModeDrawArraysIBM glad_glMultiModeDrawArraysIBM +typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC)(const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride); +GLAPI PFNGLMULTIMODEDRAWELEMENTSIBMPROC glad_glMultiModeDrawElementsIBM; +#define glMultiModeDrawElementsIBM glad_glMultiModeDrawElementsIBM +#endif +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +GLAPI int GLAD_GL_IBM_rasterpos_clip; +#endif +#ifndef GL_IBM_static_data +#define GL_IBM_static_data 1 +GLAPI int GLAD_GL_IBM_static_data; +typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC)(GLenum target); +GLAPI PFNGLFLUSHSTATICDATAIBMPROC glad_glFlushStaticDataIBM; +#define glFlushStaticDataIBM glad_glFlushStaticDataIBM +#endif +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 +GLAPI int GLAD_GL_IBM_texture_mirrored_repeat; +#endif +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +GLAPI int GLAD_GL_IBM_vertex_array_lists; +typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLCOLORPOINTERLISTIBMPROC glad_glColorPointerListIBM; +#define glColorPointerListIBM glad_glColorPointerListIBM +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLSECONDARYCOLORPOINTERLISTIBMPROC glad_glSecondaryColorPointerListIBM; +#define glSecondaryColorPointerListIBM glad_glSecondaryColorPointerListIBM +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC)(GLint stride, const GLboolean **pointer, GLint ptrstride); +GLAPI PFNGLEDGEFLAGPOINTERLISTIBMPROC glad_glEdgeFlagPointerListIBM; +#define glEdgeFlagPointerListIBM glad_glEdgeFlagPointerListIBM +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLFOGCOORDPOINTERLISTIBMPROC glad_glFogCoordPointerListIBM; +#define glFogCoordPointerListIBM glad_glFogCoordPointerListIBM +typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLINDEXPOINTERLISTIBMPROC glad_glIndexPointerListIBM; +#define glIndexPointerListIBM glad_glIndexPointerListIBM +typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLNORMALPOINTERLISTIBMPROC glad_glNormalPointerListIBM; +#define glNormalPointerListIBM glad_glNormalPointerListIBM +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLTEXCOORDPOINTERLISTIBMPROC glad_glTexCoordPointerListIBM; +#define glTexCoordPointerListIBM glad_glTexCoordPointerListIBM +typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI PFNGLVERTEXPOINTERLISTIBMPROC glad_glVertexPointerListIBM; +#define glVertexPointerListIBM glad_glVertexPointerListIBM +#endif +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 +GLAPI int GLAD_GL_INGR_blend_func_separate; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEINGRPROC glad_glBlendFuncSeparateINGR; +#define glBlendFuncSeparateINGR glad_glBlendFuncSeparateINGR +#endif +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +GLAPI int GLAD_GL_INGR_color_clamp; +#endif +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +GLAPI int GLAD_GL_INGR_interlace_read; +#endif +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +GLAPI int GLAD_GL_INTEL_blackhole_render; +#endif +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +GLAPI int GLAD_GL_INTEL_conservative_rasterization; +#endif +#ifndef GL_INTEL_fragment_shader_ordering +#define GL_INTEL_fragment_shader_ordering 1 +GLAPI int GLAD_GL_INTEL_fragment_shader_ordering; +#endif +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 +GLAPI int GLAD_GL_INTEL_framebuffer_CMAA; +typedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)(void); +GLAPI PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL; +#define glApplyFramebufferAttachmentCMAAINTEL glad_glApplyFramebufferAttachmentCMAAINTEL +#endif +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 +GLAPI int GLAD_GL_INTEL_map_texture; +typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC)(GLuint texture); +GLAPI PFNGLSYNCTEXTUREINTELPROC glad_glSyncTextureINTEL; +#define glSyncTextureINTEL glad_glSyncTextureINTEL +typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level); +GLAPI PFNGLUNMAPTEXTURE2DINTELPROC glad_glUnmapTexture2DINTEL; +#define glUnmapTexture2DINTEL glad_glUnmapTexture2DINTEL +typedef void * (APIENTRYP PFNGLMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout); +GLAPI PFNGLMAPTEXTURE2DINTELPROC glad_glMapTexture2DINTEL; +#define glMapTexture2DINTEL glad_glMapTexture2DINTEL +#endif +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +GLAPI int GLAD_GL_INTEL_parallel_arrays; +typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC)(GLint size, GLenum type, const void **pointer); +GLAPI PFNGLVERTEXPOINTERVINTELPROC glad_glVertexPointervINTEL; +#define glVertexPointervINTEL glad_glVertexPointervINTEL +typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC)(GLenum type, const void **pointer); +GLAPI PFNGLNORMALPOINTERVINTELPROC glad_glNormalPointervINTEL; +#define glNormalPointervINTEL glad_glNormalPointervINTEL +typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC)(GLint size, GLenum type, const void **pointer); +GLAPI PFNGLCOLORPOINTERVINTELPROC glad_glColorPointervINTEL; +#define glColorPointervINTEL glad_glColorPointervINTEL +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC)(GLint size, GLenum type, const void **pointer); +GLAPI PFNGLTEXCOORDPOINTERVINTELPROC glad_glTexCoordPointervINTEL; +#define glTexCoordPointervINTEL glad_glTexCoordPointervINTEL +#endif +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +GLAPI int GLAD_GL_INTEL_performance_query; +typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC)(GLuint queryHandle); +GLAPI PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL; +#define glBeginPerfQueryINTEL glad_glBeginPerfQueryINTEL +typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC)(GLuint queryId, GLuint *queryHandle); +GLAPI PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL; +#define glCreatePerfQueryINTEL glad_glCreatePerfQueryINTEL +typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC)(GLuint queryHandle); +GLAPI PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL; +#define glDeletePerfQueryINTEL glad_glDeletePerfQueryINTEL +typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC)(GLuint queryHandle); +GLAPI PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL; +#define glEndPerfQueryINTEL glad_glEndPerfQueryINTEL +typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC)(GLuint *queryId); +GLAPI PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL; +#define glGetFirstPerfQueryIdINTEL glad_glGetFirstPerfQueryIdINTEL +typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC)(GLuint queryId, GLuint *nextQueryId); +GLAPI PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL; +#define glGetNextPerfQueryIdINTEL glad_glGetNextPerfQueryIdINTEL +typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC)(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GLAPI PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL; +#define glGetPerfCounterInfoINTEL glad_glGetPerfCounterInfoINTEL +typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC)(GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GLAPI PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL; +#define glGetPerfQueryDataINTEL glad_glGetPerfQueryDataINTEL +typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC)(GLchar *queryName, GLuint *queryId); +GLAPI PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL; +#define glGetPerfQueryIdByNameINTEL glad_glGetPerfQueryIdByNameINTEL +typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC)(GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +GLAPI PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL; +#define glGetPerfQueryInfoINTEL glad_glGetPerfQueryInfoINTEL +#endif +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +GLAPI int GLAD_GL_KHR_blend_equation_advanced; +typedef void (APIENTRYP PFNGLBLENDBARRIERKHRPROC)(void); +GLAPI PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR; +#define glBlendBarrierKHR glad_glBlendBarrierKHR +#endif +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +GLAPI int GLAD_GL_KHR_blend_equation_advanced_coherent; +#endif +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +GLAPI int GLAD_GL_KHR_context_flush_control; +#endif +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +GLAPI int GLAD_GL_KHR_debug; +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; +#define glDebugMessageControl glad_glDebugMessageControl +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; +#define glDebugMessageInsert glad_glDebugMessageInsert +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void *userParam); +GLAPI PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; +#define glDebugMessageCallback glad_glDebugMessageCallback +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; +#define glGetDebugMessageLog glad_glGetDebugMessageLog +typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar *message); +GLAPI PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; +#define glPushDebugGroup glad_glPushDebugGroup +typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC)(void); +GLAPI PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; +#define glPopDebugGroup glad_glPopDebugGroup +typedef void (APIENTRYP PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GLAPI PFNGLOBJECTLABELPROC glad_glObjectLabel; +#define glObjectLabel glad_glObjectLabel +typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; +#define glGetObjectLabel glad_glGetObjectLabel +typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC)(const void *ptr, GLsizei length, const GLchar *label); +GLAPI PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; +#define glObjectPtrLabel glad_glObjectPtrLabel +typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; +#define glGetObjectPtrLabel glad_glGetObjectPtrLabel +typedef void (APIENTRYP PFNGLGETPOINTERVPROC)(GLenum pname, void **params); +GLAPI PFNGLGETPOINTERVPROC glad_glGetPointerv; +#define glGetPointerv glad_glGetPointerv +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR; +#define glDebugMessageControlKHR glad_glDebugMessageControlKHR +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR; +#define glDebugMessageInsertKHR glad_glDebugMessageInsertKHR +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC)(GLDEBUGPROCKHR callback, const void *userParam); +GLAPI PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR; +#define glDebugMessageCallbackKHR glad_glDebugMessageCallbackKHR +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR; +#define glGetDebugMessageLogKHR glad_glGetDebugMessageLogKHR +typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC)(GLenum source, GLuint id, GLsizei length, const GLchar *message); +GLAPI PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR; +#define glPushDebugGroupKHR glad_glPushDebugGroupKHR +typedef void (APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC)(void); +GLAPI PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR; +#define glPopDebugGroupKHR glad_glPopDebugGroupKHR +typedef void (APIENTRYP PFNGLOBJECTLABELKHRPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GLAPI PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR; +#define glObjectLabelKHR glad_glObjectLabelKHR +typedef void (APIENTRYP PFNGLGETOBJECTLABELKHRPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR; +#define glGetObjectLabelKHR glad_glGetObjectLabelKHR +typedef void (APIENTRYP PFNGLOBJECTPTRLABELKHRPROC)(const void *ptr, GLsizei length, const GLchar *label); +GLAPI PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR; +#define glObjectPtrLabelKHR glad_glObjectPtrLabelKHR +typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR; +#define glGetObjectPtrLabelKHR glad_glGetObjectPtrLabelKHR +typedef void (APIENTRYP PFNGLGETPOINTERVKHRPROC)(GLenum pname, void **params); +GLAPI PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR; +#define glGetPointervKHR glad_glGetPointervKHR +#endif +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +GLAPI int GLAD_GL_KHR_no_error; +#endif +#ifndef GL_KHR_parallel_shader_compile +#define GL_KHR_parallel_shader_compile 1 +GLAPI int GLAD_GL_KHR_parallel_shader_compile; +typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)(GLuint count); +GLAPI PFNGLMAXSHADERCOMPILERTHREADSKHRPROC glad_glMaxShaderCompilerThreadsKHR; +#define glMaxShaderCompilerThreadsKHR glad_glMaxShaderCompilerThreadsKHR +#endif +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +GLAPI int GLAD_GL_KHR_robust_buffer_access_behavior; +#endif +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +GLAPI int GLAD_GL_KHR_robustness; +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC)(void); +GLAPI PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus; +#define glGetGraphicsResetStatus glad_glGetGraphicsResetStatus +typedef void (APIENTRYP PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI PFNGLREADNPIXELSPROC glad_glReadnPixels; +#define glReadnPixels glad_glReadnPixels +typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv; +#define glGetnUniformfv glad_glGetnUniformfv +typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv; +#define glGetnUniformiv glad_glGetnUniformiv +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; +#define glGetnUniformuiv glad_glGetnUniformuiv +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC)(void); +GLAPI PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR; +#define glGetGraphicsResetStatusKHR glad_glGetGraphicsResetStatusKHR +typedef void (APIENTRYP PFNGLREADNPIXELSKHRPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR; +#define glReadnPixelsKHR glad_glReadnPixelsKHR +typedef void (APIENTRYP PFNGLGETNUNIFORMFVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR; +#define glGetnUniformfvKHR glad_glGetnUniformfvKHR +typedef void (APIENTRYP PFNGLGETNUNIFORMIVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR; +#define glGetnUniformivKHR glad_glGetnUniformivKHR +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR; +#define glGetnUniformuivKHR glad_glGetnUniformuivKHR +#endif +#ifndef GL_KHR_shader_subgroup +#define GL_KHR_shader_subgroup 1 +GLAPI int GLAD_GL_KHR_shader_subgroup; +#endif +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +GLAPI int GLAD_GL_KHR_texture_compression_astc_hdr; +#endif +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +GLAPI int GLAD_GL_KHR_texture_compression_astc_ldr; +#endif +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +GLAPI int GLAD_GL_KHR_texture_compression_astc_sliced_3d; +#endif +#ifndef GL_MESAX_texture_stack +#define GL_MESAX_texture_stack 1 +GLAPI int GLAD_GL_MESAX_texture_stack; +#endif +#ifndef GL_MESA_framebuffer_flip_y +#define GL_MESA_framebuffer_flip_y 1 +GLAPI int GLAD_GL_MESA_framebuffer_flip_y; +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLFRAMEBUFFERPARAMETERIMESAPROC glad_glFramebufferParameteriMESA; +#define glFramebufferParameteriMESA glad_glFramebufferParameteriMESA +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC glad_glGetFramebufferParameterivMESA; +#define glGetFramebufferParameterivMESA glad_glGetFramebufferParameterivMESA +#endif +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 +GLAPI int GLAD_GL_MESA_pack_invert; +#endif +#ifndef GL_MESA_program_binary_formats +#define GL_MESA_program_binary_formats 1 +GLAPI int GLAD_GL_MESA_program_binary_formats; +#endif +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 +GLAPI int GLAD_GL_MESA_resize_buffers; +typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC)(void); +GLAPI PFNGLRESIZEBUFFERSMESAPROC glad_glResizeBuffersMESA; +#define glResizeBuffersMESA glad_glResizeBuffersMESA +#endif +#ifndef GL_MESA_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +GLAPI int GLAD_GL_MESA_shader_integer_functions; +#endif +#ifndef GL_MESA_tile_raster_order +#define GL_MESA_tile_raster_order 1 +GLAPI int GLAD_GL_MESA_tile_raster_order; +#endif +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 +GLAPI int GLAD_GL_MESA_window_pos; +typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC)(GLdouble x, GLdouble y); +GLAPI PFNGLWINDOWPOS2DMESAPROC glad_glWindowPos2dMESA; +#define glWindowPos2dMESA glad_glWindowPos2dMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS2DVMESAPROC glad_glWindowPos2dvMESA; +#define glWindowPos2dvMESA glad_glWindowPos2dvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC)(GLfloat x, GLfloat y); +GLAPI PFNGLWINDOWPOS2FMESAPROC glad_glWindowPos2fMESA; +#define glWindowPos2fMESA glad_glWindowPos2fMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS2FVMESAPROC glad_glWindowPos2fvMESA; +#define glWindowPos2fvMESA glad_glWindowPos2fvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC)(GLint x, GLint y); +GLAPI PFNGLWINDOWPOS2IMESAPROC glad_glWindowPos2iMESA; +#define glWindowPos2iMESA glad_glWindowPos2iMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS2IVMESAPROC glad_glWindowPos2ivMESA; +#define glWindowPos2ivMESA glad_glWindowPos2ivMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC)(GLshort x, GLshort y); +GLAPI PFNGLWINDOWPOS2SMESAPROC glad_glWindowPos2sMESA; +#define glWindowPos2sMESA glad_glWindowPos2sMESA +typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS2SVMESAPROC glad_glWindowPos2svMESA; +#define glWindowPos2svMESA glad_glWindowPos2svMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLWINDOWPOS3DMESAPROC glad_glWindowPos3dMESA; +#define glWindowPos3dMESA glad_glWindowPos3dMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS3DVMESAPROC glad_glWindowPos3dvMESA; +#define glWindowPos3dvMESA glad_glWindowPos3dvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLWINDOWPOS3FMESAPROC glad_glWindowPos3fMESA; +#define glWindowPos3fMESA glad_glWindowPos3fMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS3FVMESAPROC glad_glWindowPos3fvMESA; +#define glWindowPos3fvMESA glad_glWindowPos3fvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC)(GLint x, GLint y, GLint z); +GLAPI PFNGLWINDOWPOS3IMESAPROC glad_glWindowPos3iMESA; +#define glWindowPos3iMESA glad_glWindowPos3iMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS3IVMESAPROC glad_glWindowPos3ivMESA; +#define glWindowPos3ivMESA glad_glWindowPos3ivMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC)(GLshort x, GLshort y, GLshort z); +GLAPI PFNGLWINDOWPOS3SMESAPROC glad_glWindowPos3sMESA; +#define glWindowPos3sMESA glad_glWindowPos3sMESA +typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS3SVMESAPROC glad_glWindowPos3svMESA; +#define glWindowPos3svMESA glad_glWindowPos3svMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLWINDOWPOS4DMESAPROC glad_glWindowPos4dMESA; +#define glWindowPos4dMESA glad_glWindowPos4dMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS4DVMESAPROC glad_glWindowPos4dvMESA; +#define glWindowPos4dvMESA glad_glWindowPos4dvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLWINDOWPOS4FMESAPROC glad_glWindowPos4fMESA; +#define glWindowPos4fMESA glad_glWindowPos4fMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS4FVMESAPROC glad_glWindowPos4fvMESA; +#define glWindowPos4fvMESA glad_glWindowPos4fvMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC)(GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLWINDOWPOS4IMESAPROC glad_glWindowPos4iMESA; +#define glWindowPos4iMESA glad_glWindowPos4iMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS4IVMESAPROC glad_glWindowPos4ivMESA; +#define glWindowPos4ivMESA glad_glWindowPos4ivMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLWINDOWPOS4SMESAPROC glad_glWindowPos4sMESA; +#define glWindowPos4sMESA glad_glWindowPos4sMESA +typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS4SVMESAPROC glad_glWindowPos4svMESA; +#define glWindowPos4svMESA glad_glWindowPos4svMESA +#endif +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 +GLAPI int GLAD_GL_MESA_ycbcr_texture; +#endif +#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +GLAPI int GLAD_GL_NVX_blend_equation_advanced_multi_draw_buffers; +#endif +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 +GLAPI int GLAD_GL_NVX_conditional_render; +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC)(GLuint id); +GLAPI PFNGLBEGINCONDITIONALRENDERNVXPROC glad_glBeginConditionalRenderNVX; +#define glBeginConditionalRenderNVX glad_glBeginConditionalRenderNVX +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC)(void); +GLAPI PFNGLENDCONDITIONALRENDERNVXPROC glad_glEndConditionalRenderNVX; +#define glEndConditionalRenderNVX glad_glEndConditionalRenderNVX +#endif +#ifndef GL_NVX_gpu_memory_info +#define GL_NVX_gpu_memory_info 1 +GLAPI int GLAD_GL_NVX_gpu_memory_info; +#endif +#ifndef GL_NVX_gpu_multicast2 +#define GL_NVX_gpu_multicast2 1 +GLAPI int GLAD_GL_NVX_gpu_multicast2; +typedef void (APIENTRYP PFNGLUPLOADGPUMASKNVXPROC)(GLbitfield mask); +GLAPI PFNGLUPLOADGPUMASKNVXPROC glad_glUploadGpuMaskNVX; +#define glUploadGpuMaskNVX glad_glUploadGpuMaskNVX +typedef void (APIENTRYP PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)(GLuint gpu, GLuint first, GLsizei count, const GLfloat *v); +GLAPI PFNGLMULTICASTVIEWPORTARRAYVNVXPROC glad_glMulticastViewportArrayvNVX; +#define glMulticastViewportArrayvNVX glad_glMulticastViewportArrayvNVX +typedef void (APIENTRYP PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)(GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff); +GLAPI PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC glad_glMulticastViewportPositionWScaleNVX; +#define glMulticastViewportPositionWScaleNVX glad_glMulticastViewportPositionWScaleNVX +typedef void (APIENTRYP PFNGLMULTICASTSCISSORARRAYVNVXPROC)(GLuint gpu, GLuint first, GLsizei count, const GLint *v); +GLAPI PFNGLMULTICASTSCISSORARRAYVNVXPROC glad_glMulticastScissorArrayvNVX; +#define glMulticastScissorArrayvNVX glad_glMulticastScissorArrayvNVX +typedef GLuint (APIENTRYP PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)(GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +GLAPI PFNGLASYNCCOPYBUFFERSUBDATANVXPROC glad_glAsyncCopyBufferSubDataNVX; +#define glAsyncCopyBufferSubDataNVX glad_glAsyncCopyBufferSubDataNVX +typedef GLuint (APIENTRYP PFNGLASYNCCOPYIMAGESUBDATANVXPROC)(GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +GLAPI PFNGLASYNCCOPYIMAGESUBDATANVXPROC glad_glAsyncCopyImageSubDataNVX; +#define glAsyncCopyImageSubDataNVX glad_glAsyncCopyImageSubDataNVX +#endif +#ifndef GL_NVX_linked_gpu_multicast +#define GL_NVX_linked_gpu_multicast 1 +GLAPI int GLAD_GL_NVX_linked_gpu_multicast; +typedef void (APIENTRYP PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC glad_glLGPUNamedBufferSubDataNVX; +#define glLGPUNamedBufferSubDataNVX glad_glLGPUNamedBufferSubDataNVX +typedef void (APIENTRYP PFNGLLGPUCOPYIMAGESUBDATANVXPROC)(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLLGPUCOPYIMAGESUBDATANVXPROC glad_glLGPUCopyImageSubDataNVX; +#define glLGPUCopyImageSubDataNVX glad_glLGPUCopyImageSubDataNVX +typedef void (APIENTRYP PFNGLLGPUINTERLOCKNVXPROC)(void); +GLAPI PFNGLLGPUINTERLOCKNVXPROC glad_glLGPUInterlockNVX; +#define glLGPUInterlockNVX glad_glLGPUInterlockNVX +#endif +#ifndef GL_NVX_progress_fence +#define GL_NVX_progress_fence 1 +GLAPI int GLAD_GL_NVX_progress_fence; +typedef GLuint (APIENTRYP PFNGLCREATEPROGRESSFENCENVXPROC)(void); +GLAPI PFNGLCREATEPROGRESSFENCENVXPROC glad_glCreateProgressFenceNVX; +#define glCreateProgressFenceNVX glad_glCreateProgressFenceNVX +typedef void (APIENTRYP PFNGLSIGNALSEMAPHOREUI64NVXPROC)(GLuint signalGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +GLAPI PFNGLSIGNALSEMAPHOREUI64NVXPROC glad_glSignalSemaphoreui64NVX; +#define glSignalSemaphoreui64NVX glad_glSignalSemaphoreui64NVX +typedef void (APIENTRYP PFNGLWAITSEMAPHOREUI64NVXPROC)(GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +GLAPI PFNGLWAITSEMAPHOREUI64NVXPROC glad_glWaitSemaphoreui64NVX; +#define glWaitSemaphoreui64NVX glad_glWaitSemaphoreui64NVX +typedef void (APIENTRYP PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)(GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +GLAPI PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC glad_glClientWaitSemaphoreui64NVX; +#define glClientWaitSemaphoreui64NVX glad_glClientWaitSemaphoreui64NVX +#endif +#ifndef GL_NV_alpha_to_coverage_dither_control +#define GL_NV_alpha_to_coverage_dither_control 1 +GLAPI int GLAD_GL_NV_alpha_to_coverage_dither_control; +typedef void (APIENTRYP PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)(GLenum mode); +GLAPI PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC glad_glAlphaToCoverageDitherControlNV; +#define glAlphaToCoverageDitherControlNV glad_glAlphaToCoverageDitherControlNV +#endif +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 +GLAPI int GLAD_GL_NV_bindless_multi_draw_indirect; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC glad_glMultiDrawArraysIndirectBindlessNV; +#define glMultiDrawArraysIndirectBindlessNV glad_glMultiDrawArraysIndirectBindlessNV +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC glad_glMultiDrawElementsIndirectBindlessNV; +#define glMultiDrawElementsIndirectBindlessNV glad_glMultiDrawElementsIndirectBindlessNV +#endif +#ifndef GL_NV_bindless_multi_draw_indirect_count +#define GL_NV_bindless_multi_draw_indirect_count 1 +GLAPI int GLAD_GL_NV_bindless_multi_draw_indirect_count; +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawArraysIndirectBindlessCountNV; +#define glMultiDrawArraysIndirectBindlessCountNV glad_glMultiDrawArraysIndirectBindlessCountNV +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawElementsIndirectBindlessCountNV; +#define glMultiDrawElementsIndirectBindlessCountNV glad_glMultiDrawElementsIndirectBindlessCountNV +#endif +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 +GLAPI int GLAD_GL_NV_bindless_texture; +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC)(GLuint texture); +GLAPI PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV; +#define glGetTextureHandleNV glad_glGetTextureHandleNV +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC)(GLuint texture, GLuint sampler); +GLAPI PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV; +#define glGetTextureSamplerHandleNV glad_glGetTextureSamplerHandleNV +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV; +#define glMakeTextureHandleResidentNV glad_glMakeTextureHandleResidentNV +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV; +#define glMakeTextureHandleNonResidentNV glad_glMakeTextureHandleNonResidentNV +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV; +#define glGetImageHandleNV glad_glGetImageHandleNV +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle, GLenum access); +GLAPI PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV; +#define glMakeImageHandleResidentNV glad_glMakeImageHandleResidentNV +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV; +#define glMakeImageHandleNonResidentNV glad_glMakeImageHandleNonResidentNV +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC)(GLint location, GLuint64 value); +GLAPI PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV; +#define glUniformHandleui64NV glad_glUniformHandleui64NV +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC)(GLint location, GLsizei count, const GLuint64 *value); +GLAPI PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV; +#define glUniformHandleui64vNV glad_glUniformHandleui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)(GLuint program, GLint location, GLuint64 value); +GLAPI PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV; +#define glProgramUniformHandleui64NV glad_glProgramUniformHandleui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV; +#define glProgramUniformHandleui64vNV glad_glProgramUniformHandleui64vNV +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV; +#define glIsTextureHandleResidentNV glad_glIsTextureHandleResidentNV +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle); +GLAPI PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV; +#define glIsImageHandleResidentNV glad_glIsImageHandleResidentNV +#endif +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +GLAPI int GLAD_GL_NV_blend_equation_advanced; +typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC)(GLenum pname, GLint value); +GLAPI PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV; +#define glBlendParameteriNV glad_glBlendParameteriNV +typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC)(void); +GLAPI PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV; +#define glBlendBarrierNV glad_glBlendBarrierNV +#endif +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +GLAPI int GLAD_GL_NV_blend_equation_advanced_coherent; +#endif +#ifndef GL_NV_blend_minmax_factor +#define GL_NV_blend_minmax_factor 1 +GLAPI int GLAD_GL_NV_blend_minmax_factor; +#endif +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +GLAPI int GLAD_GL_NV_blend_square; +#endif +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +GLAPI int GLAD_GL_NV_clip_space_w_scaling; +typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC)(GLuint index, GLfloat xcoeff, GLfloat ycoeff); +GLAPI PFNGLVIEWPORTPOSITIONWSCALENVPROC glad_glViewportPositionWScaleNV; +#define glViewportPositionWScaleNV glad_glViewportPositionWScaleNV +#endif +#ifndef GL_NV_command_list +#define GL_NV_command_list 1 +GLAPI int GLAD_GL_NV_command_list; +typedef void (APIENTRYP PFNGLCREATESTATESNVPROC)(GLsizei n, GLuint *states); +GLAPI PFNGLCREATESTATESNVPROC glad_glCreateStatesNV; +#define glCreateStatesNV glad_glCreateStatesNV +typedef void (APIENTRYP PFNGLDELETESTATESNVPROC)(GLsizei n, const GLuint *states); +GLAPI PFNGLDELETESTATESNVPROC glad_glDeleteStatesNV; +#define glDeleteStatesNV glad_glDeleteStatesNV +typedef GLboolean (APIENTRYP PFNGLISSTATENVPROC)(GLuint state); +GLAPI PFNGLISSTATENVPROC glad_glIsStateNV; +#define glIsStateNV glad_glIsStateNV +typedef void (APIENTRYP PFNGLSTATECAPTURENVPROC)(GLuint state, GLenum mode); +GLAPI PFNGLSTATECAPTURENVPROC glad_glStateCaptureNV; +#define glStateCaptureNV glad_glStateCaptureNV +typedef GLuint (APIENTRYP PFNGLGETCOMMANDHEADERNVPROC)(GLenum tokenID, GLuint size); +GLAPI PFNGLGETCOMMANDHEADERNVPROC glad_glGetCommandHeaderNV; +#define glGetCommandHeaderNV glad_glGetCommandHeaderNV +typedef GLushort (APIENTRYP PFNGLGETSTAGEINDEXNVPROC)(GLenum shadertype); +GLAPI PFNGLGETSTAGEINDEXNVPROC glad_glGetStageIndexNV; +#define glGetStageIndexNV glad_glGetStageIndexNV +typedef void (APIENTRYP PFNGLDRAWCOMMANDSNVPROC)(GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); +GLAPI PFNGLDRAWCOMMANDSNVPROC glad_glDrawCommandsNV; +#define glDrawCommandsNV glad_glDrawCommandsNV +typedef void (APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC)(GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); +GLAPI PFNGLDRAWCOMMANDSADDRESSNVPROC glad_glDrawCommandsAddressNV; +#define glDrawCommandsAddressNV glad_glDrawCommandsAddressNV +typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC)(GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI PFNGLDRAWCOMMANDSSTATESNVPROC glad_glDrawCommandsStatesNV; +#define glDrawCommandsStatesNV glad_glDrawCommandsStatesNV +typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)(const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC glad_glDrawCommandsStatesAddressNV; +#define glDrawCommandsStatesAddressNV glad_glDrawCommandsStatesAddressNV +typedef void (APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC)(GLsizei n, GLuint *lists); +GLAPI PFNGLCREATECOMMANDLISTSNVPROC glad_glCreateCommandListsNV; +#define glCreateCommandListsNV glad_glCreateCommandListsNV +typedef void (APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC)(GLsizei n, const GLuint *lists); +GLAPI PFNGLDELETECOMMANDLISTSNVPROC glad_glDeleteCommandListsNV; +#define glDeleteCommandListsNV glad_glDeleteCommandListsNV +typedef GLboolean (APIENTRYP PFNGLISCOMMANDLISTNVPROC)(GLuint list); +GLAPI PFNGLISCOMMANDLISTNVPROC glad_glIsCommandListNV; +#define glIsCommandListNV glad_glIsCommandListNV +typedef void (APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)(GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC glad_glListDrawCommandsStatesClientNV; +#define glListDrawCommandsStatesClientNV glad_glListDrawCommandsStatesClientNV +typedef void (APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC)(GLuint list, GLuint segments); +GLAPI PFNGLCOMMANDLISTSEGMENTSNVPROC glad_glCommandListSegmentsNV; +#define glCommandListSegmentsNV glad_glCommandListSegmentsNV +typedef void (APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC)(GLuint list); +GLAPI PFNGLCOMPILECOMMANDLISTNVPROC glad_glCompileCommandListNV; +#define glCompileCommandListNV glad_glCompileCommandListNV +typedef void (APIENTRYP PFNGLCALLCOMMANDLISTNVPROC)(GLuint list); +GLAPI PFNGLCALLCOMMANDLISTNVPROC glad_glCallCommandListNV; +#define glCallCommandListNV glad_glCallCommandListNV +#endif +#ifndef GL_NV_compute_program5 +#define GL_NV_compute_program5 1 +GLAPI int GLAD_GL_NV_compute_program5; +#endif +#ifndef GL_NV_compute_shader_derivatives +#define GL_NV_compute_shader_derivatives 1 +GLAPI int GLAD_GL_NV_compute_shader_derivatives; +#endif +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +GLAPI int GLAD_GL_NV_conditional_render; +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode); +GLAPI PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV; +#define glBeginConditionalRenderNV glad_glBeginConditionalRenderNV +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC)(void); +GLAPI PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV; +#define glEndConditionalRenderNV glad_glEndConditionalRenderNV +#endif +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +GLAPI int GLAD_GL_NV_conservative_raster; +typedef void (APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC)(GLuint xbits, GLuint ybits); +GLAPI PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV; +#define glSubpixelPrecisionBiasNV glad_glSubpixelPrecisionBiasNV +#endif +#ifndef GL_NV_conservative_raster_dilate +#define GL_NV_conservative_raster_dilate 1 +GLAPI int GLAD_GL_NV_conservative_raster_dilate; +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)(GLenum pname, GLfloat value); +GLAPI PFNGLCONSERVATIVERASTERPARAMETERFNVPROC glad_glConservativeRasterParameterfNV; +#define glConservativeRasterParameterfNV glad_glConservativeRasterParameterfNV +#endif +#ifndef GL_NV_conservative_raster_pre_snap +#define GL_NV_conservative_raster_pre_snap 1 +GLAPI int GLAD_GL_NV_conservative_raster_pre_snap; +#endif +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +GLAPI int GLAD_GL_NV_conservative_raster_pre_snap_triangles; +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC)(GLenum pname, GLint param); +GLAPI PFNGLCONSERVATIVERASTERPARAMETERINVPROC glad_glConservativeRasterParameteriNV; +#define glConservativeRasterParameteriNV glad_glConservativeRasterParameteriNV +#endif +#ifndef GL_NV_conservative_raster_underestimation +#define GL_NV_conservative_raster_underestimation 1 +GLAPI int GLAD_GL_NV_conservative_raster_underestimation; +#endif +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +GLAPI int GLAD_GL_NV_copy_depth_to_color; +#endif +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 +GLAPI int GLAD_GL_NV_copy_image; +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +GLAPI PFNGLCOPYIMAGESUBDATANVPROC glad_glCopyImageSubDataNV; +#define glCopyImageSubDataNV glad_glCopyImageSubDataNV +#endif +#ifndef GL_NV_deep_texture3D +#define GL_NV_deep_texture3D 1 +GLAPI int GLAD_GL_NV_deep_texture3D; +#endif +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +GLAPI int GLAD_GL_NV_depth_buffer_float; +typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar); +GLAPI PFNGLDEPTHRANGEDNVPROC glad_glDepthRangedNV; +#define glDepthRangedNV glad_glDepthRangedNV +typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC)(GLdouble depth); +GLAPI PFNGLCLEARDEPTHDNVPROC glad_glClearDepthdNV; +#define glClearDepthdNV glad_glClearDepthdNV +typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax); +GLAPI PFNGLDEPTHBOUNDSDNVPROC glad_glDepthBoundsdNV; +#define glDepthBoundsdNV glad_glDepthBoundsdNV +#endif +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +GLAPI int GLAD_GL_NV_depth_clamp; +#endif +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 +GLAPI int GLAD_GL_NV_draw_texture; +typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC)(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GLAPI PFNGLDRAWTEXTURENVPROC glad_glDrawTextureNV; +#define glDrawTextureNV glad_glDrawTextureNV +#endif +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +GLAPI int GLAD_GL_NV_draw_vulkan_image; +typedef void (APIENTRYP PFNGLDRAWVKIMAGENVPROC)(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GLAPI PFNGLDRAWVKIMAGENVPROC glad_glDrawVkImageNV; +#define glDrawVkImageNV glad_glDrawVkImageNV +typedef GLVULKANPROCNV (APIENTRYP PFNGLGETVKPROCADDRNVPROC)(const GLchar *name); +GLAPI PFNGLGETVKPROCADDRNVPROC glad_glGetVkProcAddrNV; +#define glGetVkProcAddrNV glad_glGetVkProcAddrNV +typedef void (APIENTRYP PFNGLWAITVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); +GLAPI PFNGLWAITVKSEMAPHORENVPROC glad_glWaitVkSemaphoreNV; +#define glWaitVkSemaphoreNV glad_glWaitVkSemaphoreNV +typedef void (APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); +GLAPI PFNGLSIGNALVKSEMAPHORENVPROC glad_glSignalVkSemaphoreNV; +#define glSignalVkSemaphoreNV glad_glSignalVkSemaphoreNV +typedef void (APIENTRYP PFNGLSIGNALVKFENCENVPROC)(GLuint64 vkFence); +GLAPI PFNGLSIGNALVKFENCENVPROC glad_glSignalVkFenceNV; +#define glSignalVkFenceNV glad_glSignalVkFenceNV +#endif +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +GLAPI int GLAD_GL_NV_evaluators; +typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +GLAPI PFNGLMAPCONTROLPOINTSNVPROC glad_glMapControlPointsNV; +#define glMapControlPointsNV glad_glMapControlPointsNV +typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLMAPPARAMETERIVNVPROC glad_glMapParameterivNV; +#define glMapParameterivNV glad_glMapParameterivNV +typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLMAPPARAMETERFVNVPROC glad_glMapParameterfvNV; +#define glMapParameterfvNV glad_glMapParameterfvNV +typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +GLAPI PFNGLGETMAPCONTROLPOINTSNVPROC glad_glGetMapControlPointsNV; +#define glGetMapControlPointsNV glad_glGetMapControlPointsNV +typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETMAPPARAMETERIVNVPROC glad_glGetMapParameterivNV; +#define glGetMapParameterivNV glad_glGetMapParameterivNV +typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMAPPARAMETERFVNVPROC glad_glGetMapParameterfvNV; +#define glGetMapParameterfvNV glad_glGetMapParameterfvNV +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETMAPATTRIBPARAMETERIVNVPROC glad_glGetMapAttribParameterivNV; +#define glGetMapAttribParameterivNV glad_glGetMapAttribParameterivNV +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMAPATTRIBPARAMETERFVNVPROC glad_glGetMapAttribParameterfvNV; +#define glGetMapAttribParameterfvNV glad_glGetMapAttribParameterfvNV +typedef void (APIENTRYP PFNGLEVALMAPSNVPROC)(GLenum target, GLenum mode); +GLAPI PFNGLEVALMAPSNVPROC glad_glEvalMapsNV; +#define glEvalMapsNV glad_glEvalMapsNV +#endif +#ifndef GL_NV_explicit_multisample +#define GL_NV_explicit_multisample 1 +GLAPI int GLAD_GL_NV_explicit_multisample; +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC)(GLenum pname, GLuint index, GLfloat *val); +GLAPI PFNGLGETMULTISAMPLEFVNVPROC glad_glGetMultisamplefvNV; +#define glGetMultisamplefvNV glad_glGetMultisamplefvNV +typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC)(GLuint index, GLbitfield mask); +GLAPI PFNGLSAMPLEMASKINDEXEDNVPROC glad_glSampleMaskIndexedNV; +#define glSampleMaskIndexedNV glad_glSampleMaskIndexedNV +typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC)(GLenum target, GLuint renderbuffer); +GLAPI PFNGLTEXRENDERBUFFERNVPROC glad_glTexRenderbufferNV; +#define glTexRenderbufferNV glad_glTexRenderbufferNV +#endif +#ifndef GL_NV_fence +#define GL_NV_fence 1 +GLAPI int GLAD_GL_NV_fence; +typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint *fences); +GLAPI PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV; +#define glDeleteFencesNV glad_glDeleteFencesNV +typedef void (APIENTRYP PFNGLGENFENCESNVPROC)(GLsizei n, GLuint *fences); +GLAPI PFNGLGENFENCESNVPROC glad_glGenFencesNV; +#define glGenFencesNV glad_glGenFencesNV +typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC)(GLuint fence); +GLAPI PFNGLISFENCENVPROC glad_glIsFenceNV; +#define glIsFenceNV glad_glIsFenceNV +typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC)(GLuint fence); +GLAPI PFNGLTESTFENCENVPROC glad_glTestFenceNV; +#define glTestFenceNV glad_glTestFenceNV +typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint *params); +GLAPI PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV; +#define glGetFenceivNV glad_glGetFenceivNV +typedef void (APIENTRYP PFNGLFINISHFENCENVPROC)(GLuint fence); +GLAPI PFNGLFINISHFENCENVPROC glad_glFinishFenceNV; +#define glFinishFenceNV glad_glFinishFenceNV +typedef void (APIENTRYP PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); +GLAPI PFNGLSETFENCENVPROC glad_glSetFenceNV; +#define glSetFenceNV glad_glSetFenceNV +#endif +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +GLAPI int GLAD_GL_NV_fill_rectangle; +#endif +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +GLAPI int GLAD_GL_NV_float_buffer; +#endif +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +GLAPI int GLAD_GL_NV_fog_distance; +#endif +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +GLAPI int GLAD_GL_NV_fragment_coverage_to_color; +typedef void (APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC)(GLuint color); +GLAPI PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV; +#define glFragmentCoverageColorNV glad_glFragmentCoverageColorNV +#endif +#ifndef GL_NV_fragment_program +#define GL_NV_fragment_program 1 +GLAPI int GLAD_GL_NV_fragment_program; +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLPROGRAMNAMEDPARAMETER4FNVPROC glad_glProgramNamedParameter4fNV; +#define glProgramNamedParameter4fNV glad_glProgramNamedParameter4fNV +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +GLAPI PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC glad_glProgramNamedParameter4fvNV; +#define glProgramNamedParameter4fvNV glad_glProgramNamedParameter4fvNV +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMNAMEDPARAMETER4DNVPROC glad_glProgramNamedParameter4dNV; +#define glProgramNamedParameter4dNV glad_glProgramNamedParameter4dNV +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); +GLAPI PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC glad_glProgramNamedParameter4dvNV; +#define glProgramNamedParameter4dvNV glad_glProgramNamedParameter4dvNV +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); +GLAPI PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glad_glGetProgramNamedParameterfvNV; +#define glGetProgramNamedParameterfvNV glad_glGetProgramNamedParameterfvNV +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +GLAPI PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glad_glGetProgramNamedParameterdvNV; +#define glGetProgramNamedParameterdvNV glad_glGetProgramNamedParameterdvNV +#endif +#ifndef GL_NV_fragment_program2 +#define GL_NV_fragment_program2 1 +GLAPI int GLAD_GL_NV_fragment_program2; +#endif +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 +GLAPI int GLAD_GL_NV_fragment_program4; +#endif +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 +GLAPI int GLAD_GL_NV_fragment_program_option; +#endif +#ifndef GL_NV_fragment_shader_barycentric +#define GL_NV_fragment_shader_barycentric 1 +GLAPI int GLAD_GL_NV_fragment_shader_barycentric; +#endif +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +GLAPI int GLAD_GL_NV_fragment_shader_interlock; +#endif +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +GLAPI int GLAD_GL_NV_framebuffer_mixed_samples; +typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC)(GLsizei n, const GLfloat *v); +GLAPI PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV; +#define glCoverageModulationTableNV glad_glCoverageModulationTableNV +typedef void (APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC)(GLsizei bufSize, GLfloat *v); +GLAPI PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV; +#define glGetCoverageModulationTableNV glad_glGetCoverageModulationTableNV +typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC)(GLenum components); +GLAPI PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV; +#define glCoverageModulationNV glad_glCoverageModulationNV +#endif +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +GLAPI int GLAD_GL_NV_framebuffer_multisample_coverage; +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC glad_glRenderbufferStorageMultisampleCoverageNV; +#define glRenderbufferStorageMultisampleCoverageNV glad_glRenderbufferStorageMultisampleCoverageNV +#endif +#ifndef GL_NV_geometry_program4 +#define GL_NV_geometry_program4 1 +GLAPI int GLAD_GL_NV_geometry_program4; +typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC)(GLenum target, GLint limit); +GLAPI PFNGLPROGRAMVERTEXLIMITNVPROC glad_glProgramVertexLimitNV; +#define glProgramVertexLimitNV glad_glProgramVertexLimitNV +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT; +#define glFramebufferTextureEXT glad_glFramebufferTextureEXT +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC glad_glFramebufferTextureFaceEXT; +#define glFramebufferTextureFaceEXT glad_glFramebufferTextureFaceEXT +#endif +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 +GLAPI int GLAD_GL_NV_geometry_shader4; +#endif +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +GLAPI int GLAD_GL_NV_geometry_shader_passthrough; +#endif +#ifndef GL_NV_gpu_multicast +#define GL_NV_gpu_multicast 1 +GLAPI int GLAD_GL_NV_gpu_multicast; +typedef void (APIENTRYP PFNGLRENDERGPUMASKNVPROC)(GLbitfield mask); +GLAPI PFNGLRENDERGPUMASKNVPROC glad_glRenderGpuMaskNV; +#define glRenderGpuMaskNV glad_glRenderGpuMaskNV +typedef void (APIENTRYP PFNGLMULTICASTBUFFERSUBDATANVPROC)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLMULTICASTBUFFERSUBDATANVPROC glad_glMulticastBufferSubDataNV; +#define glMulticastBufferSubDataNV glad_glMulticastBufferSubDataNV +typedef void (APIENTRYP PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC glad_glMulticastCopyBufferSubDataNV; +#define glMulticastCopyBufferSubDataNV glad_glMulticastCopyBufferSubDataNV +typedef void (APIENTRYP PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +GLAPI PFNGLMULTICASTCOPYIMAGESUBDATANVPROC glad_glMulticastCopyImageSubDataNV; +#define glMulticastCopyImageSubDataNV glad_glMulticastCopyImageSubDataNV +typedef void (APIENTRYP PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLMULTICASTBLITFRAMEBUFFERNVPROC glad_glMulticastBlitFramebufferNV; +#define glMulticastBlitFramebufferNV glad_glMulticastBlitFramebufferNV +typedef void (APIENTRYP PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glMulticastFramebufferSampleLocationsfvNV; +#define glMulticastFramebufferSampleLocationsfvNV glad_glMulticastFramebufferSampleLocationsfvNV +typedef void (APIENTRYP PFNGLMULTICASTBARRIERNVPROC)(void); +GLAPI PFNGLMULTICASTBARRIERNVPROC glad_glMulticastBarrierNV; +#define glMulticastBarrierNV glad_glMulticastBarrierNV +typedef void (APIENTRYP PFNGLMULTICASTWAITSYNCNVPROC)(GLuint signalGpu, GLbitfield waitGpuMask); +GLAPI PFNGLMULTICASTWAITSYNCNVPROC glad_glMulticastWaitSyncNV; +#define glMulticastWaitSyncNV glad_glMulticastWaitSyncNV +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLMULTICASTGETQUERYOBJECTIVNVPROC glad_glMulticastGetQueryObjectivNV; +#define glMulticastGetQueryObjectivNV glad_glMulticastGetQueryObjectivNV +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC glad_glMulticastGetQueryObjectuivNV; +#define glMulticastGetQueryObjectuivNV glad_glMulticastGetQueryObjectuivNV +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLint64 *params); +GLAPI PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC glad_glMulticastGetQueryObjecti64vNV; +#define glMulticastGetQueryObjecti64vNV glad_glMulticastGetQueryObjecti64vNV +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); +GLAPI PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC glad_glMulticastGetQueryObjectui64vNV; +#define glMulticastGetQueryObjectui64vNV glad_glMulticastGetQueryObjectui64vNV +#endif +#ifndef GL_NV_gpu_program4 +#define GL_NV_gpu_program4 1 +GLAPI int GLAD_GL_NV_gpu_program4; +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLPROGRAMLOCALPARAMETERI4INVPROC glad_glProgramLocalParameterI4iNV; +#define glProgramLocalParameterI4iNV glad_glProgramLocalParameterI4iNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)(GLenum target, GLuint index, const GLint *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC glad_glProgramLocalParameterI4ivNV; +#define glProgramLocalParameterI4ivNV glad_glProgramLocalParameterI4ivNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC glad_glProgramLocalParametersI4ivNV; +#define glProgramLocalParametersI4ivNV glad_glProgramLocalParametersI4ivNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLPROGRAMLOCALPARAMETERI4UINVPROC glad_glProgramLocalParameterI4uiNV; +#define glProgramLocalParameterI4uiNV glad_glProgramLocalParameterI4uiNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, const GLuint *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC glad_glProgramLocalParameterI4uivNV; +#define glProgramLocalParameterI4uivNV glad_glProgramLocalParameterI4uivNV +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC glad_glProgramLocalParametersI4uivNV; +#define glProgramLocalParametersI4uivNV glad_glProgramLocalParametersI4uivNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLPROGRAMENVPARAMETERI4INVPROC glad_glProgramEnvParameterI4iNV; +#define glProgramEnvParameterI4iNV glad_glProgramEnvParameterI4iNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC)(GLenum target, GLuint index, const GLint *params); +GLAPI PFNGLPROGRAMENVPARAMETERI4IVNVPROC glad_glProgramEnvParameterI4ivNV; +#define glProgramEnvParameterI4ivNV glad_glProgramEnvParameterI4ivNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI PFNGLPROGRAMENVPARAMETERSI4IVNVPROC glad_glProgramEnvParametersI4ivNV; +#define glProgramEnvParametersI4ivNV glad_glProgramEnvParametersI4ivNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLPROGRAMENVPARAMETERI4UINVPROC glad_glProgramEnvParameterI4uiNV; +#define glProgramEnvParameterI4uiNV glad_glProgramEnvParameterI4uiNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, const GLuint *params); +GLAPI PFNGLPROGRAMENVPARAMETERI4UIVNVPROC glad_glProgramEnvParameterI4uivNV; +#define glProgramEnvParameterI4uivNV glad_glProgramEnvParameterI4uivNV +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC glad_glProgramEnvParametersI4uivNV; +#define glProgramEnvParametersI4uivNV glad_glProgramEnvParametersI4uivNV +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)(GLenum target, GLuint index, GLint *params); +GLAPI PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC glad_glGetProgramLocalParameterIivNV; +#define glGetProgramLocalParameterIivNV glad_glGetProgramLocalParameterIivNV +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)(GLenum target, GLuint index, GLuint *params); +GLAPI PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC glad_glGetProgramLocalParameterIuivNV; +#define glGetProgramLocalParameterIuivNV glad_glGetProgramLocalParameterIuivNV +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)(GLenum target, GLuint index, GLint *params); +GLAPI PFNGLGETPROGRAMENVPARAMETERIIVNVPROC glad_glGetProgramEnvParameterIivNV; +#define glGetProgramEnvParameterIivNV glad_glGetProgramEnvParameterIivNV +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)(GLenum target, GLuint index, GLuint *params); +GLAPI PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC glad_glGetProgramEnvParameterIuivNV; +#define glGetProgramEnvParameterIuivNV glad_glGetProgramEnvParameterIuivNV +#endif +#ifndef GL_NV_gpu_program5 +#define GL_NV_gpu_program5 1 +GLAPI int GLAD_GL_NV_gpu_program5; +typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)(GLenum target, GLsizei count, const GLuint *params); +GLAPI PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC glad_glProgramSubroutineParametersuivNV; +#define glProgramSubroutineParametersuivNV glad_glProgramSubroutineParametersuivNV +typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)(GLenum target, GLuint index, GLuint *param); +GLAPI PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC glad_glGetProgramSubroutineParameteruivNV; +#define glGetProgramSubroutineParameteruivNV glad_glGetProgramSubroutineParameteruivNV +#endif +#ifndef GL_NV_gpu_program5_mem_extended +#define GL_NV_gpu_program5_mem_extended 1 +GLAPI int GLAD_GL_NV_gpu_program5_mem_extended; +#endif +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +GLAPI int GLAD_GL_NV_gpu_shader5; +#endif +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 +GLAPI int GLAD_GL_NV_half_float; +typedef void (APIENTRYP PFNGLVERTEX2HNVPROC)(GLhalfNV x, GLhalfNV y); +GLAPI PFNGLVERTEX2HNVPROC glad_glVertex2hNV; +#define glVertex2hNV glad_glVertex2hNV +typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLVERTEX2HVNVPROC glad_glVertex2hvNV; +#define glVertex2hvNV glad_glVertex2hvNV +typedef void (APIENTRYP PFNGLVERTEX3HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI PFNGLVERTEX3HNVPROC glad_glVertex3hNV; +#define glVertex3hNV glad_glVertex3hNV +typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLVERTEX3HVNVPROC glad_glVertex3hvNV; +#define glVertex3hvNV glad_glVertex3hvNV +typedef void (APIENTRYP PFNGLVERTEX4HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI PFNGLVERTEX4HNVPROC glad_glVertex4hNV; +#define glVertex4hNV glad_glVertex4hNV +typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLVERTEX4HVNVPROC glad_glVertex4hvNV; +#define glVertex4hvNV glad_glVertex4hvNV +typedef void (APIENTRYP PFNGLNORMAL3HNVPROC)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +GLAPI PFNGLNORMAL3HNVPROC glad_glNormal3hNV; +#define glNormal3hNV glad_glNormal3hNV +typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLNORMAL3HVNVPROC glad_glNormal3hvNV; +#define glNormal3hvNV glad_glNormal3hvNV +typedef void (APIENTRYP PFNGLCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI PFNGLCOLOR3HNVPROC glad_glColor3hNV; +#define glColor3hNV glad_glColor3hNV +typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLCOLOR3HVNVPROC glad_glColor3hvNV; +#define glColor3hvNV glad_glColor3hvNV +typedef void (APIENTRYP PFNGLCOLOR4HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +GLAPI PFNGLCOLOR4HNVPROC glad_glColor4hNV; +#define glColor4hNV glad_glColor4hNV +typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLCOLOR4HVNVPROC glad_glColor4hvNV; +#define glColor4hvNV glad_glColor4hvNV +typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC)(GLhalfNV s); +GLAPI PFNGLTEXCOORD1HNVPROC glad_glTexCoord1hNV; +#define glTexCoord1hNV glad_glTexCoord1hNV +typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLTEXCOORD1HVNVPROC glad_glTexCoord1hvNV; +#define glTexCoord1hvNV glad_glTexCoord1hvNV +typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC)(GLhalfNV s, GLhalfNV t); +GLAPI PFNGLTEXCOORD2HNVPROC glad_glTexCoord2hNV; +#define glTexCoord2hNV glad_glTexCoord2hNV +typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLTEXCOORD2HVNVPROC glad_glTexCoord2hvNV; +#define glTexCoord2hvNV glad_glTexCoord2hvNV +typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI PFNGLTEXCOORD3HNVPROC glad_glTexCoord3hNV; +#define glTexCoord3hNV glad_glTexCoord3hNV +typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLTEXCOORD3HVNVPROC glad_glTexCoord3hvNV; +#define glTexCoord3hvNV glad_glTexCoord3hvNV +typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI PFNGLTEXCOORD4HNVPROC glad_glTexCoord4hNV; +#define glTexCoord4hNV glad_glTexCoord4hNV +typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLTEXCOORD4HVNVPROC glad_glTexCoord4hvNV; +#define glTexCoord4hvNV glad_glTexCoord4hvNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC)(GLenum target, GLhalfNV s); +GLAPI PFNGLMULTITEXCOORD1HNVPROC glad_glMultiTexCoord1hNV; +#define glMultiTexCoord1hNV glad_glMultiTexCoord1hNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC)(GLenum target, const GLhalfNV *v); +GLAPI PFNGLMULTITEXCOORD1HVNVPROC glad_glMultiTexCoord1hvNV; +#define glMultiTexCoord1hvNV glad_glMultiTexCoord1hvNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t); +GLAPI PFNGLMULTITEXCOORD2HNVPROC glad_glMultiTexCoord2hNV; +#define glMultiTexCoord2hNV glad_glMultiTexCoord2hNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC)(GLenum target, const GLhalfNV *v); +GLAPI PFNGLMULTITEXCOORD2HVNVPROC glad_glMultiTexCoord2hvNV; +#define glMultiTexCoord2hvNV glad_glMultiTexCoord2hvNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI PFNGLMULTITEXCOORD3HNVPROC glad_glMultiTexCoord3hNV; +#define glMultiTexCoord3hNV glad_glMultiTexCoord3hNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC)(GLenum target, const GLhalfNV *v); +GLAPI PFNGLMULTITEXCOORD3HVNVPROC glad_glMultiTexCoord3hvNV; +#define glMultiTexCoord3hvNV glad_glMultiTexCoord3hvNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI PFNGLMULTITEXCOORD4HNVPROC glad_glMultiTexCoord4hNV; +#define glMultiTexCoord4hNV glad_glMultiTexCoord4hNV +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC)(GLenum target, const GLhalfNV *v); +GLAPI PFNGLMULTITEXCOORD4HVNVPROC glad_glMultiTexCoord4hvNV; +#define glMultiTexCoord4hvNV glad_glMultiTexCoord4hvNV +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC)(GLhalfNV fog); +GLAPI PFNGLFOGCOORDHNVPROC glad_glFogCoordhNV; +#define glFogCoordhNV glad_glFogCoordhNV +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC)(const GLhalfNV *fog); +GLAPI PFNGLFOGCOORDHVNVPROC glad_glFogCoordhvNV; +#define glFogCoordhvNV glad_glFogCoordhvNV +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI PFNGLSECONDARYCOLOR3HNVPROC glad_glSecondaryColor3hNV; +#define glSecondaryColor3hNV glad_glSecondaryColor3hNV +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC)(const GLhalfNV *v); +GLAPI PFNGLSECONDARYCOLOR3HVNVPROC glad_glSecondaryColor3hvNV; +#define glSecondaryColor3hvNV glad_glSecondaryColor3hvNV +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC)(GLhalfNV weight); +GLAPI PFNGLVERTEXWEIGHTHNVPROC glad_glVertexWeighthNV; +#define glVertexWeighthNV glad_glVertexWeighthNV +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC)(const GLhalfNV *weight); +GLAPI PFNGLVERTEXWEIGHTHVNVPROC glad_glVertexWeighthvNV; +#define glVertexWeighthvNV glad_glVertexWeighthvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC)(GLuint index, GLhalfNV x); +GLAPI PFNGLVERTEXATTRIB1HNVPROC glad_glVertexAttrib1hNV; +#define glVertexAttrib1hNV glad_glVertexAttrib1hNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC)(GLuint index, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIB1HVNVPROC glad_glVertexAttrib1hvNV; +#define glVertexAttrib1hvNV glad_glVertexAttrib1hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y); +GLAPI PFNGLVERTEXATTRIB2HNVPROC glad_glVertexAttrib2hNV; +#define glVertexAttrib2hNV glad_glVertexAttrib2hNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC)(GLuint index, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIB2HVNVPROC glad_glVertexAttrib2hvNV; +#define glVertexAttrib2hvNV glad_glVertexAttrib2hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI PFNGLVERTEXATTRIB3HNVPROC glad_glVertexAttrib3hNV; +#define glVertexAttrib3hNV glad_glVertexAttrib3hNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC)(GLuint index, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIB3HVNVPROC glad_glVertexAttrib3hvNV; +#define glVertexAttrib3hvNV glad_glVertexAttrib3hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI PFNGLVERTEXATTRIB4HNVPROC glad_glVertexAttrib4hNV; +#define glVertexAttrib4hNV glad_glVertexAttrib4hNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC)(GLuint index, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIB4HVNVPROC glad_glVertexAttrib4hvNV; +#define glVertexAttrib4hvNV glad_glVertexAttrib4hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIBS1HVNVPROC glad_glVertexAttribs1hvNV; +#define glVertexAttribs1hvNV glad_glVertexAttribs1hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIBS2HVNVPROC glad_glVertexAttribs2hvNV; +#define glVertexAttribs2hvNV glad_glVertexAttribs2hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIBS3HVNVPROC glad_glVertexAttribs3hvNV; +#define glVertexAttribs3hvNV glad_glVertexAttribs3hvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI PFNGLVERTEXATTRIBS4HVNVPROC glad_glVertexAttribs4hvNV; +#define glVertexAttribs4hvNV glad_glVertexAttribs4hvNV +#endif +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +GLAPI int GLAD_GL_NV_internalformat_sample_query; +typedef void (APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +GLAPI PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV; +#define glGetInternalformatSampleivNV glad_glGetInternalformatSampleivNV +#endif +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +GLAPI int GLAD_GL_NV_light_max_exponent; +#endif +#ifndef GL_NV_memory_attachment +#define GL_NV_memory_attachment 1 +GLAPI int GLAD_GL_NV_memory_attachment; +typedef void (APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)(GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GLAPI PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC glad_glGetMemoryObjectDetachedResourcesuivNV; +#define glGetMemoryObjectDetachedResourcesuivNV glad_glGetMemoryObjectDetachedResourcesuivNV +typedef void (APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)(GLuint memory, GLenum pname); +GLAPI PFNGLRESETMEMORYOBJECTPARAMETERNVPROC glad_glResetMemoryObjectParameterNV; +#define glResetMemoryObjectParameterNV glad_glResetMemoryObjectParameterNV +typedef void (APIENTRYP PFNGLTEXATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXATTACHMEMORYNVPROC glad_glTexAttachMemoryNV; +#define glTexAttachMemoryNV glad_glTexAttachMemoryNV +typedef void (APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset); +GLAPI PFNGLBUFFERATTACHMEMORYNVPROC glad_glBufferAttachMemoryNV; +#define glBufferAttachMemoryNV glad_glBufferAttachMemoryNV +typedef void (APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC)(GLuint texture, GLuint memory, GLuint64 offset); +GLAPI PFNGLTEXTUREATTACHMEMORYNVPROC glad_glTextureAttachMemoryNV; +#define glTextureAttachMemoryNV glad_glTextureAttachMemoryNV +typedef void (APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)(GLuint buffer, GLuint memory, GLuint64 offset); +GLAPI PFNGLNAMEDBUFFERATTACHMEMORYNVPROC glad_glNamedBufferAttachMemoryNV; +#define glNamedBufferAttachMemoryNV glad_glNamedBufferAttachMemoryNV +#endif +#ifndef GL_NV_mesh_shader +#define GL_NV_mesh_shader 1 +GLAPI int GLAD_GL_NV_mesh_shader; +typedef void (APIENTRYP PFNGLDRAWMESHTASKSNVPROC)(GLuint first, GLuint count); +GLAPI PFNGLDRAWMESHTASKSNVPROC glad_glDrawMeshTasksNV; +#define glDrawMeshTasksNV glad_glDrawMeshTasksNV +typedef void (APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect); +GLAPI PFNGLDRAWMESHTASKSINDIRECTNVPROC glad_glDrawMeshTasksIndirectNV; +#define glDrawMeshTasksIndirectNV glad_glDrawMeshTasksIndirectNV +typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect, GLsizei drawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC glad_glMultiDrawMeshTasksIndirectNV; +#define glMultiDrawMeshTasksIndirectNV glad_glMultiDrawMeshTasksIndirectNV +typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)(GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC glad_glMultiDrawMeshTasksIndirectCountNV; +#define glMultiDrawMeshTasksIndirectCountNV glad_glMultiDrawMeshTasksIndirectCountNV +#endif +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 +GLAPI int GLAD_GL_NV_multisample_coverage; +#endif +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +GLAPI int GLAD_GL_NV_multisample_filter_hint; +#endif +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +GLAPI int GLAD_GL_NV_occlusion_query; +typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENOCCLUSIONQUERIESNVPROC glad_glGenOcclusionQueriesNV; +#define glGenOcclusionQueriesNV glad_glGenOcclusionQueriesNV +typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETEOCCLUSIONQUERIESNVPROC glad_glDeleteOcclusionQueriesNV; +#define glDeleteOcclusionQueriesNV glad_glDeleteOcclusionQueriesNV +typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC)(GLuint id); +GLAPI PFNGLISOCCLUSIONQUERYNVPROC glad_glIsOcclusionQueryNV; +#define glIsOcclusionQueryNV glad_glIsOcclusionQueryNV +typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC)(GLuint id); +GLAPI PFNGLBEGINOCCLUSIONQUERYNVPROC glad_glBeginOcclusionQueryNV; +#define glBeginOcclusionQueryNV glad_glBeginOcclusionQueryNV +typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC)(void); +GLAPI PFNGLENDOCCLUSIONQUERYNVPROC glad_glEndOcclusionQueryNV; +#define glEndOcclusionQueryNV glad_glEndOcclusionQueryNV +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETOCCLUSIONQUERYIVNVPROC glad_glGetOcclusionQueryivNV; +#define glGetOcclusionQueryivNV glad_glGetOcclusionQueryivNV +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC)(GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLGETOCCLUSIONQUERYUIVNVPROC glad_glGetOcclusionQueryuivNV; +#define glGetOcclusionQueryuivNV glad_glGetOcclusionQueryuivNV +#endif +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +GLAPI int GLAD_GL_NV_packed_depth_stencil; +#endif +#ifndef GL_NV_parameter_buffer_object +#define GL_NV_parameter_buffer_object 1 +GLAPI int GLAD_GL_NV_parameter_buffer_object; +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); +GLAPI PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC glad_glProgramBufferParametersfvNV; +#define glProgramBufferParametersfvNV glad_glProgramBufferParametersfvNV +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); +GLAPI PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC glad_glProgramBufferParametersIivNV; +#define glProgramBufferParametersIivNV glad_glProgramBufferParametersIivNV +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); +GLAPI PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC glad_glProgramBufferParametersIuivNV; +#define glProgramBufferParametersIuivNV glad_glProgramBufferParametersIuivNV +#endif +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 +GLAPI int GLAD_GL_NV_parameter_buffer_object2; +#endif +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +GLAPI int GLAD_GL_NV_path_rendering; +typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC)(GLsizei range); +GLAPI PFNGLGENPATHSNVPROC glad_glGenPathsNV; +#define glGenPathsNV glad_glGenPathsNV +typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range); +GLAPI PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV; +#define glDeletePathsNV glad_glDeletePathsNV +typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC)(GLuint path); +GLAPI PFNGLISPATHNVPROC glad_glIsPathNV; +#define glIsPathNV glad_glIsPathNV +typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC)(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV; +#define glPathCommandsNV glad_glPathCommandsNV +typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC)(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV; +#define glPathCoordsNV glad_glPathCoordsNV +typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC)(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV; +#define glPathSubCommandsNV glad_glPathSubCommandsNV +typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC)(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV; +#define glPathSubCoordsNV glad_glPathSubCoordsNV +typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC)(GLuint path, GLenum format, GLsizei length, const void *pathString); +GLAPI PFNGLPATHSTRINGNVPROC glad_glPathStringNV; +#define glPathStringNV glad_glPathStringNV +typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV; +#define glPathGlyphsNV glad_glPathGlyphsNV +typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV; +#define glPathGlyphRangeNV glad_glPathGlyphRangeNV +typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC)(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GLAPI PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV; +#define glWeightPathsNV glad_glWeightPathsNV +typedef void (APIENTRYP PFNGLCOPYPATHNVPROC)(GLuint resultPath, GLuint srcPath); +GLAPI PFNGLCOPYPATHNVPROC glad_glCopyPathNV; +#define glCopyPathNV glad_glCopyPathNV +typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GLAPI PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV; +#define glInterpolatePathsNV glad_glInterpolatePathsNV +typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC)(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV; +#define glTransformPathNV glad_glTransformPathNV +typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, const GLint *value); +GLAPI PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV; +#define glPathParameterivNV glad_glPathParameterivNV +typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC)(GLuint path, GLenum pname, GLint value); +GLAPI PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV; +#define glPathParameteriNV glad_glPathParameteriNV +typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, const GLfloat *value); +GLAPI PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV; +#define glPathParameterfvNV glad_glPathParameterfvNV +typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC)(GLuint path, GLenum pname, GLfloat value); +GLAPI PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV; +#define glPathParameterfNV glad_glPathParameterfNV +typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC)(GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GLAPI PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV; +#define glPathDashArrayNV glad_glPathDashArrayNV +typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV; +#define glPathStencilFuncNV glad_glPathStencilFuncNV +typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC)(GLfloat factor, GLfloat units); +GLAPI PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV; +#define glPathStencilDepthOffsetNV glad_glPathStencilDepthOffsetNV +typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask); +GLAPI PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV; +#define glStencilFillPathNV glad_glStencilFillPathNV +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask); +GLAPI PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV; +#define glStencilStrokePathNV glad_glStencilStrokePathNV +typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV; +#define glStencilFillPathInstancedNV glad_glStencilFillPathInstancedNV +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV; +#define glStencilStrokePathInstancedNV glad_glStencilStrokePathInstancedNV +typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC)(GLenum func); +GLAPI PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV; +#define glPathCoverDepthFuncNV glad_glPathCoverDepthFuncNV +typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode); +GLAPI PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV; +#define glCoverFillPathNV glad_glCoverFillPathNV +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode); +GLAPI PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV; +#define glCoverStrokePathNV glad_glCoverStrokePathNV +typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV; +#define glCoverFillPathInstancedNV glad_glCoverFillPathInstancedNV +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV; +#define glCoverStrokePathInstancedNV glad_glCoverStrokePathInstancedNV +typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, GLint *value); +GLAPI PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV; +#define glGetPathParameterivNV glad_glGetPathParameterivNV +typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, GLfloat *value); +GLAPI PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV; +#define glGetPathParameterfvNV glad_glGetPathParameterfvNV +typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC)(GLuint path, GLubyte *commands); +GLAPI PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV; +#define glGetPathCommandsNV glad_glGetPathCommandsNV +typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC)(GLuint path, GLfloat *coords); +GLAPI PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV; +#define glGetPathCoordsNV glad_glGetPathCoordsNV +typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC)(GLuint path, GLfloat *dashArray); +GLAPI PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV; +#define glGetPathDashArrayNV glad_glGetPathDashArrayNV +typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC)(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GLAPI PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV; +#define glGetPathMetricsNV glad_glGetPathMetricsNV +typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC)(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GLAPI PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV; +#define glGetPathMetricRangeNV glad_glGetPathMetricRangeNV +typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC)(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GLAPI PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV; +#define glGetPathSpacingNV glad_glGetPathSpacingNV +typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC)(GLuint path, GLuint mask, GLfloat x, GLfloat y); +GLAPI PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV; +#define glIsPointInFillPathNV glad_glIsPointInFillPathNV +typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC)(GLuint path, GLfloat x, GLfloat y); +GLAPI PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV; +#define glIsPointInStrokePathNV glad_glIsPointInStrokePathNV +typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC)(GLuint path, GLsizei startSegment, GLsizei numSegments); +GLAPI PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV; +#define glGetPathLengthNV glad_glGetPathLengthNV +typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC)(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GLAPI PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV; +#define glPointAlongPathNV glad_glPointAlongPathNV +typedef void (APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV; +#define glMatrixLoad3x2fNV glad_glMatrixLoad3x2fNV +typedef void (APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV; +#define glMatrixLoad3x3fNV glad_glMatrixLoad3x3fNV +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV; +#define glMatrixLoadTranspose3x3fNV glad_glMatrixLoadTranspose3x3fNV +typedef void (APIENTRYP PFNGLMATRIXMULT3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV; +#define glMatrixMult3x2fNV glad_glMatrixMult3x2fNV +typedef void (APIENTRYP PFNGLMATRIXMULT3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV; +#define glMatrixMult3x3fNV glad_glMatrixMult3x3fNV +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +GLAPI PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV; +#define glMatrixMultTranspose3x3fNV glad_glMatrixMultTranspose3x3fNV +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GLAPI PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV; +#define glStencilThenCoverFillPathNV glad_glStencilThenCoverFillPathNV +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GLAPI PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV; +#define glStencilThenCoverStrokePathNV glad_glStencilThenCoverStrokePathNV +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV; +#define glStencilThenCoverFillPathInstancedNV glad_glStencilThenCoverFillPathInstancedNV +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV; +#define glStencilThenCoverStrokePathInstancedNV glad_glStencilThenCoverStrokePathInstancedNV +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC)(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +GLAPI PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV; +#define glPathGlyphIndexRangeNV glad_glPathGlyphIndexRangeNV +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV; +#define glPathGlyphIndexArrayNV glad_glPathGlyphIndexArrayNV +typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV; +#define glPathMemoryGlyphIndexArrayNV glad_glPathMemoryGlyphIndexArrayNV +typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV; +#define glProgramPathFragmentInputGenNV glad_glProgramPathFragmentInputGenNV +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GLAPI PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV; +#define glGetProgramResourcefvNV glad_glGetProgramResourcefvNV +typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); +GLAPI PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV; +#define glPathColorGenNV glad_glPathColorGenNV +typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC)(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV; +#define glPathTexGenNV glad_glPathTexGenNV +typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC)(GLenum genMode); +GLAPI PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV; +#define glPathFogGenNV glad_glPathFogGenNV +typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC)(GLenum color, GLenum pname, GLint *value); +GLAPI PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV; +#define glGetPathColorGenivNV glad_glGetPathColorGenivNV +typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC)(GLenum color, GLenum pname, GLfloat *value); +GLAPI PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV; +#define glGetPathColorGenfvNV glad_glGetPathColorGenfvNV +typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC)(GLenum texCoordSet, GLenum pname, GLint *value); +GLAPI PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV; +#define glGetPathTexGenivNV glad_glGetPathTexGenivNV +typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC)(GLenum texCoordSet, GLenum pname, GLfloat *value); +GLAPI PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV; +#define glGetPathTexGenfvNV glad_glGetPathTexGenfvNV +#endif +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +GLAPI int GLAD_GL_NV_path_rendering_shared_edge; +#endif +#ifndef GL_NV_pixel_data_range +#define GL_NV_pixel_data_range 1 +GLAPI int GLAD_GL_NV_pixel_data_range; +typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC)(GLenum target, GLsizei length, const void *pointer); +GLAPI PFNGLPIXELDATARANGENVPROC glad_glPixelDataRangeNV; +#define glPixelDataRangeNV glad_glPixelDataRangeNV +typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC)(GLenum target); +GLAPI PFNGLFLUSHPIXELDATARANGENVPROC glad_glFlushPixelDataRangeNV; +#define glFlushPixelDataRangeNV glad_glFlushPixelDataRangeNV +#endif +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +GLAPI int GLAD_GL_NV_point_sprite; +typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC)(GLenum pname, GLint param); +GLAPI PFNGLPOINTPARAMETERINVPROC glad_glPointParameteriNV; +#define glPointParameteriNV glad_glPointParameteriNV +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLPOINTPARAMETERIVNVPROC glad_glPointParameterivNV; +#define glPointParameterivNV glad_glPointParameterivNV +#endif +#ifndef GL_NV_present_video +#define GL_NV_present_video 1 +GLAPI int GLAD_GL_NV_present_video; +typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +GLAPI PFNGLPRESENTFRAMEKEYEDNVPROC glad_glPresentFrameKeyedNV; +#define glPresentFrameKeyedNV glad_glPresentFrameKeyedNV +typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +GLAPI PFNGLPRESENTFRAMEDUALFILLNVPROC glad_glPresentFrameDualFillNV; +#define glPresentFrameDualFillNV glad_glPresentFrameDualFillNV +typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC)(GLuint video_slot, GLenum pname, GLint *params); +GLAPI PFNGLGETVIDEOIVNVPROC glad_glGetVideoivNV; +#define glGetVideoivNV glad_glGetVideoivNV +typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC)(GLuint video_slot, GLenum pname, GLuint *params); +GLAPI PFNGLGETVIDEOUIVNVPROC glad_glGetVideouivNV; +#define glGetVideouivNV glad_glGetVideouivNV +typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC)(GLuint video_slot, GLenum pname, GLint64EXT *params); +GLAPI PFNGLGETVIDEOI64VNVPROC glad_glGetVideoi64vNV; +#define glGetVideoi64vNV glad_glGetVideoi64vNV +typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC)(GLuint video_slot, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETVIDEOUI64VNVPROC glad_glGetVideoui64vNV; +#define glGetVideoui64vNV glad_glGetVideoui64vNV +#endif +#ifndef GL_NV_primitive_restart +#define GL_NV_primitive_restart 1 +GLAPI int GLAD_GL_NV_primitive_restart; +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC)(void); +GLAPI PFNGLPRIMITIVERESTARTNVPROC glad_glPrimitiveRestartNV; +#define glPrimitiveRestartNV glad_glPrimitiveRestartNV +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC)(GLuint index); +GLAPI PFNGLPRIMITIVERESTARTINDEXNVPROC glad_glPrimitiveRestartIndexNV; +#define glPrimitiveRestartIndexNV glad_glPrimitiveRestartIndexNV +#endif +#ifndef GL_NV_query_resource +#define GL_NV_query_resource 1 +GLAPI int GLAD_GL_NV_query_resource; +typedef GLint (APIENTRYP PFNGLQUERYRESOURCENVPROC)(GLenum queryType, GLint tagId, GLuint count, GLint *buffer); +GLAPI PFNGLQUERYRESOURCENVPROC glad_glQueryResourceNV; +#define glQueryResourceNV glad_glQueryResourceNV +#endif +#ifndef GL_NV_query_resource_tag +#define GL_NV_query_resource_tag 1 +GLAPI int GLAD_GL_NV_query_resource_tag; +typedef void (APIENTRYP PFNGLGENQUERYRESOURCETAGNVPROC)(GLsizei n, GLint *tagIds); +GLAPI PFNGLGENQUERYRESOURCETAGNVPROC glad_glGenQueryResourceTagNV; +#define glGenQueryResourceTagNV glad_glGenQueryResourceTagNV +typedef void (APIENTRYP PFNGLDELETEQUERYRESOURCETAGNVPROC)(GLsizei n, const GLint *tagIds); +GLAPI PFNGLDELETEQUERYRESOURCETAGNVPROC glad_glDeleteQueryResourceTagNV; +#define glDeleteQueryResourceTagNV glad_glDeleteQueryResourceTagNV +typedef void (APIENTRYP PFNGLQUERYRESOURCETAGNVPROC)(GLint tagId, const GLchar *tagString); +GLAPI PFNGLQUERYRESOURCETAGNVPROC glad_glQueryResourceTagNV; +#define glQueryResourceTagNV glad_glQueryResourceTagNV +#endif +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +GLAPI int GLAD_GL_NV_register_combiners; +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLCOMBINERPARAMETERFVNVPROC glad_glCombinerParameterfvNV; +#define glCombinerParameterfvNV glad_glCombinerParameterfvNV +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLCOMBINERPARAMETERFNVPROC glad_glCombinerParameterfNV; +#define glCombinerParameterfNV glad_glCombinerParameterfNV +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLCOMBINERPARAMETERIVNVPROC glad_glCombinerParameterivNV; +#define glCombinerParameterivNV glad_glCombinerParameterivNV +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC)(GLenum pname, GLint param); +GLAPI PFNGLCOMBINERPARAMETERINVPROC glad_glCombinerParameteriNV; +#define glCombinerParameteriNV glad_glCombinerParameteriNV +typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI PFNGLCOMBINERINPUTNVPROC glad_glCombinerInputNV; +#define glCombinerInputNV glad_glCombinerInputNV +typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +GLAPI PFNGLCOMBINEROUTPUTNVPROC glad_glCombinerOutputNV; +#define glCombinerOutputNV glad_glCombinerOutputNV +typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI PFNGLFINALCOMBINERINPUTNVPROC glad_glFinalCombinerInputNV; +#define glFinalCombinerInputNV glad_glFinalCombinerInputNV +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glad_glGetCombinerInputParameterfvNV; +#define glGetCombinerInputParameterfvNV glad_glGetCombinerInputParameterfvNV +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +GLAPI PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glad_glGetCombinerInputParameterivNV; +#define glGetCombinerInputParameterivNV glad_glGetCombinerInputParameterivNV +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glad_glGetCombinerOutputParameterfvNV; +#define glGetCombinerOutputParameterfvNV glad_glGetCombinerOutputParameterfvNV +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, GLenum pname, GLint *params); +GLAPI PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glad_glGetCombinerOutputParameterivNV; +#define glGetCombinerOutputParameterivNV glad_glGetCombinerOutputParameterivNV +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)(GLenum variable, GLenum pname, GLfloat *params); +GLAPI PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glad_glGetFinalCombinerInputParameterfvNV; +#define glGetFinalCombinerInputParameterfvNV glad_glGetFinalCombinerInputParameterfvNV +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)(GLenum variable, GLenum pname, GLint *params); +GLAPI PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glad_glGetFinalCombinerInputParameterivNV; +#define glGetFinalCombinerInputParameterivNV glad_glGetFinalCombinerInputParameterivNV +#endif +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +GLAPI int GLAD_GL_NV_register_combiners2; +typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, const GLfloat *params); +GLAPI PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glad_glCombinerStageParameterfvNV; +#define glCombinerStageParameterfvNV glad_glCombinerStageParameterfvNV +typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glad_glGetCombinerStageParameterfvNV; +#define glGetCombinerStageParameterfvNV glad_glGetCombinerStageParameterfvNV +#endif +#ifndef GL_NV_representative_fragment_test +#define GL_NV_representative_fragment_test 1 +GLAPI int GLAD_GL_NV_representative_fragment_test; +#endif +#ifndef GL_NV_robustness_video_memory_purge +#define GL_NV_robustness_video_memory_purge 1 +GLAPI int GLAD_GL_NV_robustness_video_memory_purge; +#endif +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +GLAPI int GLAD_GL_NV_sample_locations; +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV; +#define glFramebufferSampleLocationsfvNV glad_glFramebufferSampleLocationsfvNV +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV; +#define glNamedFramebufferSampleLocationsfvNV glad_glNamedFramebufferSampleLocationsfvNV +typedef void (APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC)(void); +GLAPI PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV; +#define glResolveDepthValuesNV glad_glResolveDepthValuesNV +#endif +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +GLAPI int GLAD_GL_NV_sample_mask_override_coverage; +#endif +#ifndef GL_NV_scissor_exclusive +#define GL_NV_scissor_exclusive 1 +GLAPI int GLAD_GL_NV_scissor_exclusive; +typedef void (APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSOREXCLUSIVENVPROC glad_glScissorExclusiveNV; +#define glScissorExclusiveNV glad_glScissorExclusiveNV +typedef void (APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)(GLuint first, GLsizei count, const GLint *v); +GLAPI PFNGLSCISSOREXCLUSIVEARRAYVNVPROC glad_glScissorExclusiveArrayvNV; +#define glScissorExclusiveArrayvNV glad_glScissorExclusiveArrayvNV +#endif +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 +GLAPI int GLAD_GL_NV_shader_atomic_counters; +#endif +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 +GLAPI int GLAD_GL_NV_shader_atomic_float; +#endif +#ifndef GL_NV_shader_atomic_float64 +#define GL_NV_shader_atomic_float64 1 +GLAPI int GLAD_GL_NV_shader_atomic_float64; +#endif +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 +GLAPI int GLAD_GL_NV_shader_atomic_fp16_vector; +#endif +#ifndef GL_NV_shader_atomic_int64 +#define GL_NV_shader_atomic_int64 1 +GLAPI int GLAD_GL_NV_shader_atomic_int64; +#endif +#ifndef GL_NV_shader_buffer_load +#define GL_NV_shader_buffer_load 1 +GLAPI int GLAD_GL_NV_shader_buffer_load; +typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC)(GLenum target, GLenum access); +GLAPI PFNGLMAKEBUFFERRESIDENTNVPROC glad_glMakeBufferResidentNV; +#define glMakeBufferResidentNV glad_glMakeBufferResidentNV +typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC)(GLenum target); +GLAPI PFNGLMAKEBUFFERNONRESIDENTNVPROC glad_glMakeBufferNonResidentNV; +#define glMakeBufferNonResidentNV glad_glMakeBufferNonResidentNV +typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC)(GLenum target); +GLAPI PFNGLISBUFFERRESIDENTNVPROC glad_glIsBufferResidentNV; +#define glIsBufferResidentNV glad_glIsBufferResidentNV +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)(GLuint buffer, GLenum access); +GLAPI PFNGLMAKENAMEDBUFFERRESIDENTNVPROC glad_glMakeNamedBufferResidentNV; +#define glMakeNamedBufferResidentNV glad_glMakeNamedBufferResidentNV +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)(GLuint buffer); +GLAPI PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC glad_glMakeNamedBufferNonResidentNV; +#define glMakeNamedBufferNonResidentNV glad_glMakeNamedBufferNonResidentNV +typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC)(GLuint buffer); +GLAPI PFNGLISNAMEDBUFFERRESIDENTNVPROC glad_glIsNamedBufferResidentNV; +#define glIsNamedBufferResidentNV glad_glIsNamedBufferResidentNV +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC)(GLenum target, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETBUFFERPARAMETERUI64VNVPROC glad_glGetBufferParameterui64vNV; +#define glGetBufferParameterui64vNV glad_glGetBufferParameterui64vNV +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)(GLuint buffer, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC glad_glGetNamedBufferParameterui64vNV; +#define glGetNamedBufferParameterui64vNV glad_glGetNamedBufferParameterui64vNV +typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC)(GLenum value, GLuint64EXT *result); +GLAPI PFNGLGETINTEGERUI64VNVPROC glad_glGetIntegerui64vNV; +#define glGetIntegerui64vNV glad_glGetIntegerui64vNV +typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC)(GLint location, GLuint64EXT value); +GLAPI PFNGLUNIFORMUI64NVPROC glad_glUniformui64NV; +#define glUniformui64NV glad_glUniformui64NV +typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLUNIFORMUI64VNVPROC glad_glUniformui64vNV; +#define glUniformui64vNV glad_glUniformui64vNV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC)(GLuint program, GLint location, GLuint64EXT value); +GLAPI PFNGLPROGRAMUNIFORMUI64NVPROC glad_glProgramUniformui64NV; +#define glProgramUniformui64NV glad_glProgramUniformui64NV +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI PFNGLPROGRAMUNIFORMUI64VNVPROC glad_glProgramUniformui64vNV; +#define glProgramUniformui64vNV glad_glProgramUniformui64vNV +#endif +#ifndef GL_NV_shader_buffer_store +#define GL_NV_shader_buffer_store 1 +GLAPI int GLAD_GL_NV_shader_buffer_store; +#endif +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 +GLAPI int GLAD_GL_NV_shader_storage_buffer_object; +#endif +#ifndef GL_NV_shader_subgroup_partitioned +#define GL_NV_shader_subgroup_partitioned 1 +GLAPI int GLAD_GL_NV_shader_subgroup_partitioned; +#endif +#ifndef GL_NV_shader_texture_footprint +#define GL_NV_shader_texture_footprint 1 +GLAPI int GLAD_GL_NV_shader_texture_footprint; +#endif +#ifndef GL_NV_shader_thread_group +#define GL_NV_shader_thread_group 1 +GLAPI int GLAD_GL_NV_shader_thread_group; +#endif +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 +GLAPI int GLAD_GL_NV_shader_thread_shuffle; +#endif +#ifndef GL_NV_shading_rate_image +#define GL_NV_shading_rate_image 1 +GLAPI int GLAD_GL_NV_shading_rate_image; +typedef void (APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC)(GLuint texture); +GLAPI PFNGLBINDSHADINGRATEIMAGENVPROC glad_glBindShadingRateImageNV; +#define glBindShadingRateImageNV glad_glBindShadingRateImageNV +typedef void (APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint entry, GLenum *rate); +GLAPI PFNGLGETSHADINGRATEIMAGEPALETTENVPROC glad_glGetShadingRateImagePaletteNV; +#define glGetShadingRateImagePaletteNV glad_glGetShadingRateImagePaletteNV +typedef void (APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)(GLenum rate, GLuint samples, GLuint index, GLint *location); +GLAPI PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC glad_glGetShadingRateSampleLocationivNV; +#define glGetShadingRateSampleLocationivNV glad_glGetShadingRateSampleLocationivNV +typedef void (APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC)(GLboolean synchronize); +GLAPI PFNGLSHADINGRATEIMAGEBARRIERNVPROC glad_glShadingRateImageBarrierNV; +#define glShadingRateImageBarrierNV glad_glShadingRateImageBarrierNV +typedef void (APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GLAPI PFNGLSHADINGRATEIMAGEPALETTENVPROC glad_glShadingRateImagePaletteNV; +#define glShadingRateImagePaletteNV glad_glShadingRateImagePaletteNV +typedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC)(GLenum order); +GLAPI PFNGLSHADINGRATESAMPLEORDERNVPROC glad_glShadingRateSampleOrderNV; +#define glShadingRateSampleOrderNV glad_glShadingRateSampleOrderNV +typedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)(GLenum rate, GLuint samples, const GLint *locations); +GLAPI PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC glad_glShadingRateSampleOrderCustomNV; +#define glShadingRateSampleOrderCustomNV glad_glShadingRateSampleOrderCustomNV +#endif +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +GLAPI int GLAD_GL_NV_stereo_view_rendering; +#endif +#ifndef GL_NV_tessellation_program5 +#define GL_NV_tessellation_program5 1 +GLAPI int GLAD_GL_NV_tessellation_program5; +#endif +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +GLAPI int GLAD_GL_NV_texgen_emboss; +#endif +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +GLAPI int GLAD_GL_NV_texgen_reflection; +#endif +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 +GLAPI int GLAD_GL_NV_texture_barrier; +typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC)(void); +GLAPI PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV; +#define glTextureBarrierNV glad_glTextureBarrierNV +#endif +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +GLAPI int GLAD_GL_NV_texture_compression_vtc; +#endif +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +GLAPI int GLAD_GL_NV_texture_env_combine4; +#endif +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 +GLAPI int GLAD_GL_NV_texture_expand_normal; +#endif +#ifndef GL_NV_texture_multisample +#define GL_NV_texture_multisample 1 +GLAPI int GLAD_GL_NV_texture_multisample; +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTexImage2DMultisampleCoverageNV; +#define glTexImage2DMultisampleCoverageNV glad_glTexImage2DMultisampleCoverageNV +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTexImage3DMultisampleCoverageNV; +#define glTexImage3DMultisampleCoverageNV glad_glTexImage3DMultisampleCoverageNV +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC glad_glTextureImage2DMultisampleNV; +#define glTextureImage2DMultisampleNV glad_glTextureImage2DMultisampleNV +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC glad_glTextureImage3DMultisampleNV; +#define glTextureImage3DMultisampleNV glad_glTextureImage3DMultisampleNV +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTextureImage2DMultisampleCoverageNV; +#define glTextureImage2DMultisampleCoverageNV glad_glTextureImage2DMultisampleCoverageNV +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTextureImage3DMultisampleCoverageNV; +#define glTextureImage3DMultisampleCoverageNV glad_glTextureImage3DMultisampleCoverageNV +#endif +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +GLAPI int GLAD_GL_NV_texture_rectangle; +#endif +#ifndef GL_NV_texture_rectangle_compressed +#define GL_NV_texture_rectangle_compressed 1 +GLAPI int GLAD_GL_NV_texture_rectangle_compressed; +#endif +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +GLAPI int GLAD_GL_NV_texture_shader; +#endif +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +GLAPI int GLAD_GL_NV_texture_shader2; +#endif +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +GLAPI int GLAD_GL_NV_texture_shader3; +#endif +#ifndef GL_NV_transform_feedback +#define GL_NV_transform_feedback 1 +GLAPI int GLAD_GL_NV_transform_feedback; +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC)(GLenum primitiveMode); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKNVPROC glad_glBeginTransformFeedbackNV; +#define glBeginTransformFeedbackNV glad_glBeginTransformFeedbackNV +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC)(void); +GLAPI PFNGLENDTRANSFORMFEEDBACKNVPROC glad_glEndTransformFeedbackNV; +#define glEndTransformFeedbackNV glad_glEndTransformFeedbackNV +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)(GLsizei count, const GLint *attribs, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC glad_glTransformFeedbackAttribsNV; +#define glTransformFeedbackAttribsNV glad_glTransformFeedbackAttribsNV +typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLBINDBUFFERRANGENVPROC glad_glBindBufferRangeNV; +#define glBindBufferRangeNV glad_glBindBufferRangeNV +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI PFNGLBINDBUFFEROFFSETNVPROC glad_glBindBufferOffsetNV; +#define glBindBufferOffsetNV glad_glBindBufferOffsetNV +typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC)(GLenum target, GLuint index, GLuint buffer); +GLAPI PFNGLBINDBUFFERBASENVPROC glad_glBindBufferBaseNV; +#define glBindBufferBaseNV glad_glBindBufferBaseNV +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC glad_glTransformFeedbackVaryingsNV; +#define glTransformFeedbackVaryingsNV glad_glTransformFeedbackVaryingsNV +typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLACTIVEVARYINGNVPROC glad_glActiveVaryingNV; +#define glActiveVaryingNV glad_glActiveVaryingNV +typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETVARYINGLOCATIONNVPROC glad_glGetVaryingLocationNV; +#define glGetVaryingLocationNV glad_glGetVaryingLocationNV +typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEVARYINGNVPROC glad_glGetActiveVaryingNV; +#define glGetActiveVaryingNV glad_glGetActiveVaryingNV +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)(GLuint program, GLuint index, GLint *location); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC glad_glGetTransformFeedbackVaryingNV; +#define glGetTransformFeedbackVaryingNV glad_glGetTransformFeedbackVaryingNV +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC glad_glTransformFeedbackStreamAttribsNV; +#define glTransformFeedbackStreamAttribsNV glad_glTransformFeedbackStreamAttribsNV +#endif +#ifndef GL_NV_transform_feedback2 +#define GL_NV_transform_feedback2 1 +GLAPI int GLAD_GL_NV_transform_feedback2; +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC)(GLenum target, GLuint id); +GLAPI PFNGLBINDTRANSFORMFEEDBACKNVPROC glad_glBindTransformFeedbackNV; +#define glBindTransformFeedbackNV glad_glBindTransformFeedbackNV +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETETRANSFORMFEEDBACKSNVPROC glad_glDeleteTransformFeedbacksNV; +#define glDeleteTransformFeedbacksNV glad_glDeleteTransformFeedbacksNV +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENTRANSFORMFEEDBACKSNVPROC glad_glGenTransformFeedbacksNV; +#define glGenTransformFeedbacksNV glad_glGenTransformFeedbacksNV +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC)(GLuint id); +GLAPI PFNGLISTRANSFORMFEEDBACKNVPROC glad_glIsTransformFeedbackNV; +#define glIsTransformFeedbackNV glad_glIsTransformFeedbackNV +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC)(void); +GLAPI PFNGLPAUSETRANSFORMFEEDBACKNVPROC glad_glPauseTransformFeedbackNV; +#define glPauseTransformFeedbackNV glad_glPauseTransformFeedbackNV +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC)(void); +GLAPI PFNGLRESUMETRANSFORMFEEDBACKNVPROC glad_glResumeTransformFeedbackNV; +#define glResumeTransformFeedbackNV glad_glResumeTransformFeedbackNV +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC)(GLenum mode, GLuint id); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKNVPROC glad_glDrawTransformFeedbackNV; +#define glDrawTransformFeedbackNV glad_glDrawTransformFeedbackNV +#endif +#ifndef GL_NV_uniform_buffer_unified_memory +#define GL_NV_uniform_buffer_unified_memory 1 +GLAPI int GLAD_GL_NV_uniform_buffer_unified_memory; +#endif +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 +GLAPI int GLAD_GL_NV_vdpau_interop; +typedef void (APIENTRYP PFNGLVDPAUINITNVPROC)(const void *vdpDevice, const void *getProcAddress); +GLAPI PFNGLVDPAUINITNVPROC glad_glVDPAUInitNV; +#define glVDPAUInitNV glad_glVDPAUInitNV +typedef void (APIENTRYP PFNGLVDPAUFININVPROC)(void); +GLAPI PFNGLVDPAUFININVPROC glad_glVDPAUFiniNV; +#define glVDPAUFiniNV glad_glVDPAUFiniNV +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI PFNGLVDPAUREGISTERVIDEOSURFACENVPROC glad_glVDPAURegisterVideoSurfaceNV; +#define glVDPAURegisterVideoSurfaceNV glad_glVDPAURegisterVideoSurfaceNV +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC glad_glVDPAURegisterOutputSurfaceNV; +#define glVDPAURegisterOutputSurfaceNV glad_glVDPAURegisterOutputSurfaceNV +typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC)(GLvdpauSurfaceNV surface); +GLAPI PFNGLVDPAUISSURFACENVPROC glad_glVDPAUIsSurfaceNV; +#define glVDPAUIsSurfaceNV glad_glVDPAUIsSurfaceNV +typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC)(GLvdpauSurfaceNV surface); +GLAPI PFNGLVDPAUUNREGISTERSURFACENVPROC glad_glVDPAUUnregisterSurfaceNV; +#define glVDPAUUnregisterSurfaceNV glad_glVDPAUUnregisterSurfaceNV +typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC)(GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI PFNGLVDPAUGETSURFACEIVNVPROC glad_glVDPAUGetSurfaceivNV; +#define glVDPAUGetSurfaceivNV glad_glVDPAUGetSurfaceivNV +typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC)(GLvdpauSurfaceNV surface, GLenum access); +GLAPI PFNGLVDPAUSURFACEACCESSNVPROC glad_glVDPAUSurfaceAccessNV; +#define glVDPAUSurfaceAccessNV glad_glVDPAUSurfaceAccessNV +typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC)(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); +GLAPI PFNGLVDPAUMAPSURFACESNVPROC glad_glVDPAUMapSurfacesNV; +#define glVDPAUMapSurfacesNV glad_glVDPAUMapSurfacesNV +typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC)(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); +GLAPI PFNGLVDPAUUNMAPSURFACESNVPROC glad_glVDPAUUnmapSurfacesNV; +#define glVDPAUUnmapSurfacesNV glad_glVDPAUUnmapSurfacesNV +#endif +#ifndef GL_NV_vdpau_interop2 +#define GL_NV_vdpau_interop2 1 +GLAPI int GLAD_GL_NV_vdpau_interop2; +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure); +GLAPI PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC glad_glVDPAURegisterVideoSurfaceWithPictureStructureNV; +#define glVDPAURegisterVideoSurfaceWithPictureStructureNV glad_glVDPAURegisterVideoSurfaceWithPictureStructureNV +#endif +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +GLAPI int GLAD_GL_NV_vertex_array_range; +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC)(void); +GLAPI PFNGLFLUSHVERTEXARRAYRANGENVPROC glad_glFlushVertexArrayRangeNV; +#define glFlushVertexArrayRangeNV glad_glFlushVertexArrayRangeNV +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC)(GLsizei length, const void *pointer); +GLAPI PFNGLVERTEXARRAYRANGENVPROC glad_glVertexArrayRangeNV; +#define glVertexArrayRangeNV glad_glVertexArrayRangeNV +#endif +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +GLAPI int GLAD_GL_NV_vertex_array_range2; +#endif +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 +GLAPI int GLAD_GL_NV_vertex_attrib_integer_64bit; +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC)(GLuint index, GLint64EXT x); +GLAPI PFNGLVERTEXATTRIBL1I64NVPROC glad_glVertexAttribL1i64NV; +#define glVertexAttribL1i64NV glad_glVertexAttribL1i64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y); +GLAPI PFNGLVERTEXATTRIBL2I64NVPROC glad_glVertexAttribL2i64NV; +#define glVertexAttribL2i64NV glad_glVertexAttribL2i64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI PFNGLVERTEXATTRIBL3I64NVPROC glad_glVertexAttribL3i64NV; +#define glVertexAttribL3i64NV glad_glVertexAttribL3i64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI PFNGLVERTEXATTRIBL4I64NVPROC glad_glVertexAttribL4i64NV; +#define glVertexAttribL4i64NV glad_glVertexAttribL4i64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC)(GLuint index, const GLint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL1I64VNVPROC glad_glVertexAttribL1i64vNV; +#define glVertexAttribL1i64vNV glad_glVertexAttribL1i64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC)(GLuint index, const GLint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL2I64VNVPROC glad_glVertexAttribL2i64vNV; +#define glVertexAttribL2i64vNV glad_glVertexAttribL2i64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC)(GLuint index, const GLint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL3I64VNVPROC glad_glVertexAttribL3i64vNV; +#define glVertexAttribL3i64vNV glad_glVertexAttribL3i64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC)(GLuint index, const GLint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL4I64VNVPROC glad_glVertexAttribL4i64vNV; +#define glVertexAttribL4i64vNV glad_glVertexAttribL4i64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC)(GLuint index, GLuint64EXT x); +GLAPI PFNGLVERTEXATTRIBL1UI64NVPROC glad_glVertexAttribL1ui64NV; +#define glVertexAttribL1ui64NV glad_glVertexAttribL1ui64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y); +GLAPI PFNGLVERTEXATTRIBL2UI64NVPROC glad_glVertexAttribL2ui64NV; +#define glVertexAttribL2ui64NV glad_glVertexAttribL2ui64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI PFNGLVERTEXATTRIBL3UI64NVPROC glad_glVertexAttribL3ui64NV; +#define glVertexAttribL3ui64NV glad_glVertexAttribL3ui64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI PFNGLVERTEXATTRIBL4UI64NVPROC glad_glVertexAttribL4ui64NV; +#define glVertexAttribL4ui64NV glad_glVertexAttribL4ui64NV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL1UI64VNVPROC glad_glVertexAttribL1ui64vNV; +#define glVertexAttribL1ui64vNV glad_glVertexAttribL1ui64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL2UI64VNVPROC glad_glVertexAttribL2ui64vNV; +#define glVertexAttribL2ui64vNV glad_glVertexAttribL2ui64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL3UI64VNVPROC glad_glVertexAttribL3ui64vNV; +#define glVertexAttribL3ui64vNV glad_glVertexAttribL3ui64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +GLAPI PFNGLVERTEXATTRIBL4UI64VNVPROC glad_glVertexAttribL4ui64vNV; +#define glVertexAttribL4ui64vNV glad_glVertexAttribL4ui64vNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC)(GLuint index, GLenum pname, GLint64EXT *params); +GLAPI PFNGLGETVERTEXATTRIBLI64VNVPROC glad_glGetVertexAttribLi64vNV; +#define glGetVertexAttribLi64vNV glad_glGetVertexAttribLi64vNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC)(GLuint index, GLenum pname, GLuint64EXT *params); +GLAPI PFNGLGETVERTEXATTRIBLUI64VNVPROC glad_glGetVertexAttribLui64vNV; +#define glGetVertexAttribLui64vNV glad_glGetVertexAttribLui64vNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLVERTEXATTRIBLFORMATNVPROC glad_glVertexAttribLFormatNV; +#define glVertexAttribLFormatNV glad_glVertexAttribLFormatNV +#endif +#ifndef GL_NV_vertex_buffer_unified_memory +#define GL_NV_vertex_buffer_unified_memory 1 +GLAPI int GLAD_GL_NV_vertex_buffer_unified_memory; +typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +GLAPI PFNGLBUFFERADDRESSRANGENVPROC glad_glBufferAddressRangeNV; +#define glBufferAddressRangeNV glad_glBufferAddressRangeNV +typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLVERTEXFORMATNVPROC glad_glVertexFormatNV; +#define glVertexFormatNV glad_glVertexFormatNV +typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC)(GLenum type, GLsizei stride); +GLAPI PFNGLNORMALFORMATNVPROC glad_glNormalFormatNV; +#define glNormalFormatNV glad_glNormalFormatNV +typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLCOLORFORMATNVPROC glad_glColorFormatNV; +#define glColorFormatNV glad_glColorFormatNV +typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC)(GLenum type, GLsizei stride); +GLAPI PFNGLINDEXFORMATNVPROC glad_glIndexFormatNV; +#define glIndexFormatNV glad_glIndexFormatNV +typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLTEXCOORDFORMATNVPROC glad_glTexCoordFormatNV; +#define glTexCoordFormatNV glad_glTexCoordFormatNV +typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC)(GLsizei stride); +GLAPI PFNGLEDGEFLAGFORMATNVPROC glad_glEdgeFlagFormatNV; +#define glEdgeFlagFormatNV glad_glEdgeFlagFormatNV +typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLSECONDARYCOLORFORMATNVPROC glad_glSecondaryColorFormatNV; +#define glSecondaryColorFormatNV glad_glSecondaryColorFormatNV +typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC)(GLenum type, GLsizei stride); +GLAPI PFNGLFOGCOORDFORMATNVPROC glad_glFogCoordFormatNV; +#define glFogCoordFormatNV glad_glFogCoordFormatNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +GLAPI PFNGLVERTEXATTRIBFORMATNVPROC glad_glVertexAttribFormatNV; +#define glVertexAttribFormatNV glad_glVertexAttribFormatNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride); +GLAPI PFNGLVERTEXATTRIBIFORMATNVPROC glad_glVertexAttribIFormatNV; +#define glVertexAttribIFormatNV glad_glVertexAttribIFormatNV +typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC)(GLenum value, GLuint index, GLuint64EXT *result); +GLAPI PFNGLGETINTEGERUI64I_VNVPROC glad_glGetIntegerui64i_vNV; +#define glGetIntegerui64i_vNV glad_glGetIntegerui64i_vNV +#endif +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +GLAPI int GLAD_GL_NV_vertex_program; +typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC)(GLsizei n, const GLuint *programs, GLboolean *residences); +GLAPI PFNGLAREPROGRAMSRESIDENTNVPROC glad_glAreProgramsResidentNV; +#define glAreProgramsResidentNV glad_glAreProgramsResidentNV +typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC)(GLenum target, GLuint id); +GLAPI PFNGLBINDPROGRAMNVPROC glad_glBindProgramNV; +#define glBindProgramNV glad_glBindProgramNV +typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); +GLAPI PFNGLDELETEPROGRAMSNVPROC glad_glDeleteProgramsNV; +#define glDeleteProgramsNV glad_glDeleteProgramsNV +typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC)(GLenum target, GLuint id, const GLfloat *params); +GLAPI PFNGLEXECUTEPROGRAMNVPROC glad_glExecuteProgramNV; +#define glExecuteProgramNV glad_glExecuteProgramNV +typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC)(GLsizei n, GLuint *programs); +GLAPI PFNGLGENPROGRAMSNVPROC glad_glGenProgramsNV; +#define glGenProgramsNV glad_glGenProgramsNV +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC)(GLenum target, GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETPROGRAMPARAMETERDVNVPROC glad_glGetProgramParameterdvNV; +#define glGetProgramParameterdvNV glad_glGetProgramParameterdvNV +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETPROGRAMPARAMETERFVNVPROC glad_glGetProgramParameterfvNV; +#define glGetProgramParameterfvNV glad_glGetProgramParameterfvNV +typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMIVNVPROC glad_glGetProgramivNV; +#define glGetProgramivNV glad_glGetProgramivNV +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC)(GLuint id, GLenum pname, GLubyte *program); +GLAPI PFNGLGETPROGRAMSTRINGNVPROC glad_glGetProgramStringNV; +#define glGetProgramStringNV glad_glGetProgramStringNV +typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC)(GLenum target, GLuint address, GLenum pname, GLint *params); +GLAPI PFNGLGETTRACKMATRIXIVNVPROC glad_glGetTrackMatrixivNV; +#define glGetTrackMatrixivNV glad_glGetTrackMatrixivNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBDVNVPROC glad_glGetVertexAttribdvNV; +#define glGetVertexAttribdvNV glad_glGetVertexAttribdvNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBFVNVPROC glad_glGetVertexAttribfvNV; +#define glGetVertexAttribfvNV glad_glGetVertexAttribfvNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIVNVPROC glad_glGetVertexAttribivNV; +#define glGetVertexAttribivNV glad_glGetVertexAttribivNV +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC)(GLuint index, GLenum pname, void **pointer); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVNVPROC glad_glGetVertexAttribPointervNV; +#define glGetVertexAttribPointervNV glad_glGetVertexAttribPointervNV +typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC)(GLuint id); +GLAPI PFNGLISPROGRAMNVPROC glad_glIsProgramNV; +#define glIsProgramNV glad_glIsProgramNV +typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC)(GLenum target, GLuint id, GLsizei len, const GLubyte *program); +GLAPI PFNGLLOADPROGRAMNVPROC glad_glLoadProgramNV; +#define glLoadProgramNV glad_glLoadProgramNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLPROGRAMPARAMETER4DNVPROC glad_glProgramParameter4dNV; +#define glProgramParameter4dNV glad_glProgramParameter4dNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC)(GLenum target, GLuint index, const GLdouble *v); +GLAPI PFNGLPROGRAMPARAMETER4DVNVPROC glad_glProgramParameter4dvNV; +#define glProgramParameter4dvNV glad_glProgramParameter4dvNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLPROGRAMPARAMETER4FNVPROC glad_glProgramParameter4fNV; +#define glProgramParameter4fNV glad_glProgramParameter4fNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC)(GLenum target, GLuint index, const GLfloat *v); +GLAPI PFNGLPROGRAMPARAMETER4FVNVPROC glad_glProgramParameter4fvNV; +#define glProgramParameter4fvNV glad_glProgramParameter4fvNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLPROGRAMPARAMETERS4DVNVPROC glad_glProgramParameters4dvNV; +#define glProgramParameters4dvNV glad_glProgramParameters4dvNV +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLPROGRAMPARAMETERS4FVNVPROC glad_glProgramParameters4fvNV; +#define glProgramParameters4fvNV glad_glProgramParameters4fvNV +typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); +GLAPI PFNGLREQUESTRESIDENTPROGRAMSNVPROC glad_glRequestResidentProgramsNV; +#define glRequestResidentProgramsNV glad_glRequestResidentProgramsNV +typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC)(GLenum target, GLuint address, GLenum matrix, GLenum transform); +GLAPI PFNGLTRACKMATRIXNVPROC glad_glTrackMatrixNV; +#define glTrackMatrixNV glad_glTrackMatrixNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC)(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBPOINTERNVPROC glad_glVertexAttribPointerNV; +#define glVertexAttribPointerNV glad_glVertexAttribPointerNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIB1DNVPROC glad_glVertexAttrib1dNV; +#define glVertexAttrib1dNV glad_glVertexAttrib1dNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB1DVNVPROC glad_glVertexAttrib1dvNV; +#define glVertexAttrib1dvNV glad_glVertexAttrib1dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC)(GLuint index, GLfloat x); +GLAPI PFNGLVERTEXATTRIB1FNVPROC glad_glVertexAttrib1fNV; +#define glVertexAttrib1fNV glad_glVertexAttrib1fNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB1FVNVPROC glad_glVertexAttrib1fvNV; +#define glVertexAttrib1fvNV glad_glVertexAttrib1fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC)(GLuint index, GLshort x); +GLAPI PFNGLVERTEXATTRIB1SNVPROC glad_glVertexAttrib1sNV; +#define glVertexAttrib1sNV glad_glVertexAttrib1sNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB1SVNVPROC glad_glVertexAttrib1svNV; +#define glVertexAttrib1svNV glad_glVertexAttrib1svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIB2DNVPROC glad_glVertexAttrib2dNV; +#define glVertexAttrib2dNV glad_glVertexAttrib2dNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB2DVNVPROC glad_glVertexAttrib2dvNV; +#define glVertexAttrib2dvNV glad_glVertexAttrib2dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC)(GLuint index, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXATTRIB2FNVPROC glad_glVertexAttrib2fNV; +#define glVertexAttrib2fNV glad_glVertexAttrib2fNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB2FVNVPROC glad_glVertexAttrib2fvNV; +#define glVertexAttrib2fvNV glad_glVertexAttrib2fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC)(GLuint index, GLshort x, GLshort y); +GLAPI PFNGLVERTEXATTRIB2SNVPROC glad_glVertexAttrib2sNV; +#define glVertexAttrib2sNV glad_glVertexAttrib2sNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB2SVNVPROC glad_glVertexAttrib2svNV; +#define glVertexAttrib2svNV glad_glVertexAttrib2svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIB3DNVPROC glad_glVertexAttrib3dNV; +#define glVertexAttrib3dNV glad_glVertexAttrib3dNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB3DVNVPROC glad_glVertexAttrib3dvNV; +#define glVertexAttrib3dvNV glad_glVertexAttrib3dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXATTRIB3FNVPROC glad_glVertexAttrib3fNV; +#define glVertexAttrib3fNV glad_glVertexAttrib3fNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB3FVNVPROC glad_glVertexAttrib3fvNV; +#define glVertexAttrib3fvNV glad_glVertexAttrib3fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXATTRIB3SNVPROC glad_glVertexAttrib3sNV; +#define glVertexAttrib3sNV glad_glVertexAttrib3sNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB3SVNVPROC glad_glVertexAttrib3svNV; +#define glVertexAttrib3svNV glad_glVertexAttrib3svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIB4DNVPROC glad_glVertexAttrib4dNV; +#define glVertexAttrib4dNV glad_glVertexAttrib4dNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB4DVNVPROC glad_glVertexAttrib4dvNV; +#define glVertexAttrib4dvNV glad_glVertexAttrib4dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXATTRIB4FNVPROC glad_glVertexAttrib4fNV; +#define glVertexAttrib4fNV glad_glVertexAttrib4fNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB4FVNVPROC glad_glVertexAttrib4fvNV; +#define glVertexAttrib4fvNV glad_glVertexAttrib4fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXATTRIB4SNVPROC glad_glVertexAttrib4sNV; +#define glVertexAttrib4sNV glad_glVertexAttrib4sNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4SVNVPROC glad_glVertexAttrib4svNV; +#define glVertexAttrib4svNV glad_glVertexAttrib4svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI PFNGLVERTEXATTRIB4UBNVPROC glad_glVertexAttrib4ubNV; +#define glVertexAttrib4ubNV glad_glVertexAttrib4ubNV +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4UBVNVPROC glad_glVertexAttrib4ubvNV; +#define glVertexAttrib4ubvNV glad_glVertexAttrib4ubvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC)(GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBS1DVNVPROC glad_glVertexAttribs1dvNV; +#define glVertexAttribs1dvNV glad_glVertexAttribs1dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC)(GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIBS1FVNVPROC glad_glVertexAttribs1fvNV; +#define glVertexAttribs1fvNV glad_glVertexAttribs1fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC)(GLuint index, GLsizei count, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBS1SVNVPROC glad_glVertexAttribs1svNV; +#define glVertexAttribs1svNV glad_glVertexAttribs1svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC)(GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBS2DVNVPROC glad_glVertexAttribs2dvNV; +#define glVertexAttribs2dvNV glad_glVertexAttribs2dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC)(GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIBS2FVNVPROC glad_glVertexAttribs2fvNV; +#define glVertexAttribs2fvNV glad_glVertexAttribs2fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC)(GLuint index, GLsizei count, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBS2SVNVPROC glad_glVertexAttribs2svNV; +#define glVertexAttribs2svNV glad_glVertexAttribs2svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC)(GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBS3DVNVPROC glad_glVertexAttribs3dvNV; +#define glVertexAttribs3dvNV glad_glVertexAttribs3dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC)(GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIBS3FVNVPROC glad_glVertexAttribs3fvNV; +#define glVertexAttribs3fvNV glad_glVertexAttribs3fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC)(GLuint index, GLsizei count, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBS3SVNVPROC glad_glVertexAttribs3svNV; +#define glVertexAttribs3svNV glad_glVertexAttribs3svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC)(GLuint index, GLsizei count, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBS4DVNVPROC glad_glVertexAttribs4dvNV; +#define glVertexAttribs4dvNV glad_glVertexAttribs4dvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC)(GLuint index, GLsizei count, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIBS4FVNVPROC glad_glVertexAttribs4fvNV; +#define glVertexAttribs4fvNV glad_glVertexAttribs4fvNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC)(GLuint index, GLsizei count, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBS4SVNVPROC glad_glVertexAttribs4svNV; +#define glVertexAttribs4svNV glad_glVertexAttribs4svNV +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC)(GLuint index, GLsizei count, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIBS4UBVNVPROC glad_glVertexAttribs4ubvNV; +#define glVertexAttribs4ubvNV glad_glVertexAttribs4ubvNV +#endif +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +GLAPI int GLAD_GL_NV_vertex_program1_1; +#endif +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 +GLAPI int GLAD_GL_NV_vertex_program2; +#endif +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 +GLAPI int GLAD_GL_NV_vertex_program2_option; +#endif +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 +GLAPI int GLAD_GL_NV_vertex_program3; +#endif +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 +GLAPI int GLAD_GL_NV_vertex_program4; +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x); +GLAPI PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT; +#define glVertexAttribI1iEXT glad_glVertexAttribI1iEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y); +GLAPI PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT; +#define glVertexAttribI2iEXT glad_glVertexAttribI2iEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT; +#define glVertexAttribI3iEXT glad_glVertexAttribI3iEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT; +#define glVertexAttribI4iEXT glad_glVertexAttribI4iEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x); +GLAPI PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT; +#define glVertexAttribI1uiEXT glad_glVertexAttribI1uiEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y); +GLAPI PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT; +#define glVertexAttribI2uiEXT glad_glVertexAttribI2uiEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT; +#define glVertexAttribI3uiEXT glad_glVertexAttribI3uiEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT; +#define glVertexAttribI4uiEXT glad_glVertexAttribI4uiEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT; +#define glVertexAttribI1ivEXT glad_glVertexAttribI1ivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT; +#define glVertexAttribI2ivEXT glad_glVertexAttribI2ivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT; +#define glVertexAttribI3ivEXT glad_glVertexAttribI3ivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT; +#define glVertexAttribI4ivEXT glad_glVertexAttribI4ivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT; +#define glVertexAttribI1uivEXT glad_glVertexAttribI1uivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT; +#define glVertexAttribI2uivEXT glad_glVertexAttribI2uivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT; +#define glVertexAttribI3uivEXT glad_glVertexAttribI3uivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT; +#define glVertexAttribI4uivEXT glad_glVertexAttribI4uivEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT; +#define glVertexAttribI4bvEXT glad_glVertexAttribI4bvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT; +#define glVertexAttribI4svEXT glad_glVertexAttribI4svEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT; +#define glVertexAttribI4ubvEXT glad_glVertexAttribI4ubvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT; +#define glVertexAttribI4usvEXT glad_glVertexAttribI4usvEXT +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT; +#define glVertexAttribIPointerEXT glad_glVertexAttribIPointerEXT +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT; +#define glGetVertexAttribIivEXT glad_glGetVertexAttribIivEXT +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, GLuint *params); +GLAPI PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT; +#define glGetVertexAttribIuivEXT glad_glGetVertexAttribIuivEXT +#endif +#ifndef GL_NV_video_capture +#define GL_NV_video_capture 1 +GLAPI int GLAD_GL_NV_video_capture; +typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC)(GLuint video_capture_slot); +GLAPI PFNGLBEGINVIDEOCAPTURENVPROC glad_glBeginVideoCaptureNV; +#define glBeginVideoCaptureNV glad_glBeginVideoCaptureNV +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +GLAPI PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC glad_glBindVideoCaptureStreamBufferNV; +#define glBindVideoCaptureStreamBufferNV glad_glBindVideoCaptureStreamBufferNV +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +GLAPI PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC glad_glBindVideoCaptureStreamTextureNV; +#define glBindVideoCaptureStreamTextureNV glad_glBindVideoCaptureStreamTextureNV +typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC)(GLuint video_capture_slot); +GLAPI PFNGLENDVIDEOCAPTURENVPROC glad_glEndVideoCaptureNV; +#define glEndVideoCaptureNV glad_glEndVideoCaptureNV +typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC)(GLuint video_capture_slot, GLenum pname, GLint *params); +GLAPI PFNGLGETVIDEOCAPTUREIVNVPROC glad_glGetVideoCaptureivNV; +#define glGetVideoCaptureivNV glad_glGetVideoCaptureivNV +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); +GLAPI PFNGLGETVIDEOCAPTURESTREAMIVNVPROC glad_glGetVideoCaptureStreamivNV; +#define glGetVideoCaptureStreamivNV glad_glGetVideoCaptureStreamivNV +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVIDEOCAPTURESTREAMFVNVPROC glad_glGetVideoCaptureStreamfvNV; +#define glGetVideoCaptureStreamfvNV glad_glGetVideoCaptureStreamfvNV +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVIDEOCAPTURESTREAMDVNVPROC glad_glGetVideoCaptureStreamdvNV; +#define glGetVideoCaptureStreamdvNV glad_glGetVideoCaptureStreamdvNV +typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC)(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); +GLAPI PFNGLVIDEOCAPTURENVPROC glad_glVideoCaptureNV; +#define glVideoCaptureNV glad_glVideoCaptureNV +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); +GLAPI PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC glad_glVideoCaptureStreamParameterivNV; +#define glVideoCaptureStreamParameterivNV glad_glVideoCaptureStreamParameterivNV +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); +GLAPI PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC glad_glVideoCaptureStreamParameterfvNV; +#define glVideoCaptureStreamParameterfvNV glad_glVideoCaptureStreamParameterfvNV +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); +GLAPI PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC glad_glVideoCaptureStreamParameterdvNV; +#define glVideoCaptureStreamParameterdvNV glad_glVideoCaptureStreamParameterdvNV +#endif +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +GLAPI int GLAD_GL_NV_viewport_array2; +#endif +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +GLAPI int GLAD_GL_NV_viewport_swizzle; +typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +GLAPI PFNGLVIEWPORTSWIZZLENVPROC glad_glViewportSwizzleNV; +#define glViewportSwizzleNV glad_glViewportSwizzleNV +#endif +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +GLAPI int GLAD_GL_OES_byte_coordinates; +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC)(GLenum texture, GLbyte s); +GLAPI PFNGLMULTITEXCOORD1BOESPROC glad_glMultiTexCoord1bOES; +#define glMultiTexCoord1bOES glad_glMultiTexCoord1bOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC)(GLenum texture, const GLbyte *coords); +GLAPI PFNGLMULTITEXCOORD1BVOESPROC glad_glMultiTexCoord1bvOES; +#define glMultiTexCoord1bvOES glad_glMultiTexCoord1bvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC)(GLenum texture, GLbyte s, GLbyte t); +GLAPI PFNGLMULTITEXCOORD2BOESPROC glad_glMultiTexCoord2bOES; +#define glMultiTexCoord2bOES glad_glMultiTexCoord2bOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC)(GLenum texture, const GLbyte *coords); +GLAPI PFNGLMULTITEXCOORD2BVOESPROC glad_glMultiTexCoord2bvOES; +#define glMultiTexCoord2bvOES glad_glMultiTexCoord2bvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC)(GLenum texture, GLbyte s, GLbyte t, GLbyte r); +GLAPI PFNGLMULTITEXCOORD3BOESPROC glad_glMultiTexCoord3bOES; +#define glMultiTexCoord3bOES glad_glMultiTexCoord3bOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC)(GLenum texture, const GLbyte *coords); +GLAPI PFNGLMULTITEXCOORD3BVOESPROC glad_glMultiTexCoord3bvOES; +#define glMultiTexCoord3bvOES glad_glMultiTexCoord3bvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC)(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI PFNGLMULTITEXCOORD4BOESPROC glad_glMultiTexCoord4bOES; +#define glMultiTexCoord4bOES glad_glMultiTexCoord4bOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC)(GLenum texture, const GLbyte *coords); +GLAPI PFNGLMULTITEXCOORD4BVOESPROC glad_glMultiTexCoord4bvOES; +#define glMultiTexCoord4bvOES glad_glMultiTexCoord4bvOES +typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC)(GLbyte s); +GLAPI PFNGLTEXCOORD1BOESPROC glad_glTexCoord1bOES; +#define glTexCoord1bOES glad_glTexCoord1bOES +typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLTEXCOORD1BVOESPROC glad_glTexCoord1bvOES; +#define glTexCoord1bvOES glad_glTexCoord1bvOES +typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC)(GLbyte s, GLbyte t); +GLAPI PFNGLTEXCOORD2BOESPROC glad_glTexCoord2bOES; +#define glTexCoord2bOES glad_glTexCoord2bOES +typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLTEXCOORD2BVOESPROC glad_glTexCoord2bvOES; +#define glTexCoord2bvOES glad_glTexCoord2bvOES +typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC)(GLbyte s, GLbyte t, GLbyte r); +GLAPI PFNGLTEXCOORD3BOESPROC glad_glTexCoord3bOES; +#define glTexCoord3bOES glad_glTexCoord3bOES +typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLTEXCOORD3BVOESPROC glad_glTexCoord3bvOES; +#define glTexCoord3bvOES glad_glTexCoord3bvOES +typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC)(GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI PFNGLTEXCOORD4BOESPROC glad_glTexCoord4bOES; +#define glTexCoord4bOES glad_glTexCoord4bOES +typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLTEXCOORD4BVOESPROC glad_glTexCoord4bvOES; +#define glTexCoord4bvOES glad_glTexCoord4bvOES +typedef void (APIENTRYP PFNGLVERTEX2BOESPROC)(GLbyte x, GLbyte y); +GLAPI PFNGLVERTEX2BOESPROC glad_glVertex2bOES; +#define glVertex2bOES glad_glVertex2bOES +typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLVERTEX2BVOESPROC glad_glVertex2bvOES; +#define glVertex2bvOES glad_glVertex2bvOES +typedef void (APIENTRYP PFNGLVERTEX3BOESPROC)(GLbyte x, GLbyte y, GLbyte z); +GLAPI PFNGLVERTEX3BOESPROC glad_glVertex3bOES; +#define glVertex3bOES glad_glVertex3bOES +typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLVERTEX3BVOESPROC glad_glVertex3bvOES; +#define glVertex3bvOES glad_glVertex3bvOES +typedef void (APIENTRYP PFNGLVERTEX4BOESPROC)(GLbyte x, GLbyte y, GLbyte z, GLbyte w); +GLAPI PFNGLVERTEX4BOESPROC glad_glVertex4bOES; +#define glVertex4bOES glad_glVertex4bOES +typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC)(const GLbyte *coords); +GLAPI PFNGLVERTEX4BVOESPROC glad_glVertex4bvOES; +#define glVertex4bvOES glad_glVertex4bvOES +#endif +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +GLAPI int GLAD_GL_OES_compressed_paletted_texture; +#endif +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +GLAPI int GLAD_GL_OES_fixed_point; +typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC)(GLenum func, GLfixed ref); +GLAPI PFNGLALPHAFUNCXOESPROC glad_glAlphaFuncxOES; +#define glAlphaFuncxOES glad_glAlphaFuncxOES +typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI PFNGLCLEARCOLORXOESPROC glad_glClearColorxOES; +#define glClearColorxOES glad_glClearColorxOES +typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC)(GLfixed depth); +GLAPI PFNGLCLEARDEPTHXOESPROC glad_glClearDepthxOES; +#define glClearDepthxOES glad_glClearDepthxOES +typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC)(GLenum plane, const GLfixed *equation); +GLAPI PFNGLCLIPPLANEXOESPROC glad_glClipPlanexOES; +#define glClipPlanexOES glad_glClipPlanexOES +typedef void (APIENTRYP PFNGLCOLOR4XOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI PFNGLCOLOR4XOESPROC glad_glColor4xOES; +#define glColor4xOES glad_glColor4xOES +typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC)(GLfixed n, GLfixed f); +GLAPI PFNGLDEPTHRANGEXOESPROC glad_glDepthRangexOES; +#define glDepthRangexOES glad_glDepthRangexOES +typedef void (APIENTRYP PFNGLFOGXOESPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLFOGXOESPROC glad_glFogxOES; +#define glFogxOES glad_glFogxOES +typedef void (APIENTRYP PFNGLFOGXVOESPROC)(GLenum pname, const GLfixed *param); +GLAPI PFNGLFOGXVOESPROC glad_glFogxvOES; +#define glFogxvOES glad_glFogxvOES +typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI PFNGLFRUSTUMXOESPROC glad_glFrustumxOES; +#define glFrustumxOES glad_glFrustumxOES +typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC)(GLenum plane, GLfixed *equation); +GLAPI PFNGLGETCLIPPLANEXOESPROC glad_glGetClipPlanexOES; +#define glGetClipPlanexOES glad_glGetClipPlanexOES +typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC)(GLenum pname, GLfixed *params); +GLAPI PFNGLGETFIXEDVOESPROC glad_glGetFixedvOES; +#define glGetFixedvOES glad_glGetFixedvOES +typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +GLAPI PFNGLGETTEXENVXVOESPROC glad_glGetTexEnvxvOES; +#define glGetTexEnvxvOES glad_glGetTexEnvxvOES +typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +GLAPI PFNGLGETTEXPARAMETERXVOESPROC glad_glGetTexParameterxvOES; +#define glGetTexParameterxvOES glad_glGetTexParameterxvOES +typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLLIGHTMODELXOESPROC glad_glLightModelxOES; +#define glLightModelxOES glad_glLightModelxOES +typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC)(GLenum pname, const GLfixed *param); +GLAPI PFNGLLIGHTMODELXVOESPROC glad_glLightModelxvOES; +#define glLightModelxvOES glad_glLightModelxvOES +typedef void (APIENTRYP PFNGLLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed param); +GLAPI PFNGLLIGHTXOESPROC glad_glLightxOES; +#define glLightxOES glad_glLightxOES +typedef void (APIENTRYP PFNGLLIGHTXVOESPROC)(GLenum light, GLenum pname, const GLfixed *params); +GLAPI PFNGLLIGHTXVOESPROC glad_glLightxvOES; +#define glLightxvOES glad_glLightxvOES +typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC)(GLfixed width); +GLAPI PFNGLLINEWIDTHXOESPROC glad_glLineWidthxOES; +#define glLineWidthxOES glad_glLineWidthxOES +typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC)(const GLfixed *m); +GLAPI PFNGLLOADMATRIXXOESPROC glad_glLoadMatrixxOES; +#define glLoadMatrixxOES glad_glLoadMatrixxOES +typedef void (APIENTRYP PFNGLMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +GLAPI PFNGLMATERIALXOESPROC glad_glMaterialxOES; +#define glMaterialxOES glad_glMaterialxOES +typedef void (APIENTRYP PFNGLMATERIALXVOESPROC)(GLenum face, GLenum pname, const GLfixed *param); +GLAPI PFNGLMATERIALXVOESPROC glad_glMaterialxvOES; +#define glMaterialxvOES glad_glMaterialxvOES +typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC)(const GLfixed *m); +GLAPI PFNGLMULTMATRIXXOESPROC glad_glMultMatrixxOES; +#define glMultMatrixxOES glad_glMultMatrixxOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI PFNGLMULTITEXCOORD4XOESPROC glad_glMultiTexCoord4xOES; +#define glMultiTexCoord4xOES glad_glMultiTexCoord4xOES +typedef void (APIENTRYP PFNGLNORMAL3XOESPROC)(GLfixed nx, GLfixed ny, GLfixed nz); +GLAPI PFNGLNORMAL3XOESPROC glad_glNormal3xOES; +#define glNormal3xOES glad_glNormal3xOES +typedef void (APIENTRYP PFNGLORTHOXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI PFNGLORTHOXOESPROC glad_glOrthoxOES; +#define glOrthoxOES glad_glOrthoxOES +typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC)(GLenum pname, const GLfixed *params); +GLAPI PFNGLPOINTPARAMETERXVOESPROC glad_glPointParameterxvOES; +#define glPointParameterxvOES glad_glPointParameterxvOES +typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC)(GLfixed size); +GLAPI PFNGLPOINTSIZEXOESPROC glad_glPointSizexOES; +#define glPointSizexOES glad_glPointSizexOES +typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC)(GLfixed factor, GLfixed units); +GLAPI PFNGLPOLYGONOFFSETXOESPROC glad_glPolygonOffsetxOES; +#define glPolygonOffsetxOES glad_glPolygonOffsetxOES +typedef void (APIENTRYP PFNGLROTATEXOESPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLROTATEXOESPROC glad_glRotatexOES; +#define glRotatexOES glad_glRotatexOES +typedef void (APIENTRYP PFNGLSCALEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLSCALEXOESPROC glad_glScalexOES; +#define glScalexOES glad_glScalexOES +typedef void (APIENTRYP PFNGLTEXENVXOESPROC)(GLenum target, GLenum pname, GLfixed param); +GLAPI PFNGLTEXENVXOESPROC glad_glTexEnvxOES; +#define glTexEnvxOES glad_glTexEnvxOES +typedef void (APIENTRYP PFNGLTEXENVXVOESPROC)(GLenum target, GLenum pname, const GLfixed *params); +GLAPI PFNGLTEXENVXVOESPROC glad_glTexEnvxvOES; +#define glTexEnvxvOES glad_glTexEnvxvOES +typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); +GLAPI PFNGLTEXPARAMETERXOESPROC glad_glTexParameterxOES; +#define glTexParameterxOES glad_glTexParameterxOES +typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed *params); +GLAPI PFNGLTEXPARAMETERXVOESPROC glad_glTexParameterxvOES; +#define glTexParameterxvOES glad_glTexParameterxvOES +typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLTRANSLATEXOESPROC glad_glTranslatexOES; +#define glTranslatexOES glad_glTranslatexOES +typedef void (APIENTRYP PFNGLGETLIGHTXVOESPROC)(GLenum light, GLenum pname, GLfixed *params); +GLAPI PFNGLGETLIGHTXVOESPROC glad_glGetLightxvOES; +#define glGetLightxvOES glad_glGetLightxvOES +typedef void (APIENTRYP PFNGLGETMATERIALXVOESPROC)(GLenum face, GLenum pname, GLfixed *params); +GLAPI PFNGLGETMATERIALXVOESPROC glad_glGetMaterialxvOES; +#define glGetMaterialxvOES glad_glGetMaterialxvOES +typedef void (APIENTRYP PFNGLPOINTPARAMETERXOESPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLPOINTPARAMETERXOESPROC glad_glPointParameterxOES; +#define glPointParameterxOES glad_glPointParameterxOES +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEXOESPROC)(GLclampx value, GLboolean invert); +GLAPI PFNGLSAMPLECOVERAGEXOESPROC glad_glSampleCoveragexOES; +#define glSampleCoveragexOES glad_glSampleCoveragexOES +typedef void (APIENTRYP PFNGLACCUMXOESPROC)(GLenum op, GLfixed value); +GLAPI PFNGLACCUMXOESPROC glad_glAccumxOES; +#define glAccumxOES glad_glAccumxOES +typedef void (APIENTRYP PFNGLBITMAPXOESPROC)(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +GLAPI PFNGLBITMAPXOESPROC glad_glBitmapxOES; +#define glBitmapxOES glad_glBitmapxOES +typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI PFNGLBLENDCOLORXOESPROC glad_glBlendColorxOES; +#define glBlendColorxOES glad_glBlendColorxOES +typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI PFNGLCLEARACCUMXOESPROC glad_glClearAccumxOES; +#define glClearAccumxOES glad_glClearAccumxOES +typedef void (APIENTRYP PFNGLCOLOR3XOESPROC)(GLfixed red, GLfixed green, GLfixed blue); +GLAPI PFNGLCOLOR3XOESPROC glad_glColor3xOES; +#define glColor3xOES glad_glColor3xOES +typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC)(const GLfixed *components); +GLAPI PFNGLCOLOR3XVOESPROC glad_glColor3xvOES; +#define glColor3xvOES glad_glColor3xvOES +typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC)(const GLfixed *components); +GLAPI PFNGLCOLOR4XVOESPROC glad_glColor4xvOES; +#define glColor4xvOES glad_glColor4xvOES +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); +GLAPI PFNGLCONVOLUTIONPARAMETERXOESPROC glad_glConvolutionParameterxOES; +#define glConvolutionParameterxOES glad_glConvolutionParameterxOES +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed *params); +GLAPI PFNGLCONVOLUTIONPARAMETERXVOESPROC glad_glConvolutionParameterxvOES; +#define glConvolutionParameterxvOES glad_glConvolutionParameterxvOES +typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC)(GLfixed u); +GLAPI PFNGLEVALCOORD1XOESPROC glad_glEvalCoord1xOES; +#define glEvalCoord1xOES glad_glEvalCoord1xOES +typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLEVALCOORD1XVOESPROC glad_glEvalCoord1xvOES; +#define glEvalCoord1xvOES glad_glEvalCoord1xvOES +typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC)(GLfixed u, GLfixed v); +GLAPI PFNGLEVALCOORD2XOESPROC glad_glEvalCoord2xOES; +#define glEvalCoord2xOES glad_glEvalCoord2xOES +typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLEVALCOORD2XVOESPROC glad_glEvalCoord2xvOES; +#define glEvalCoord2xvOES glad_glEvalCoord2xvOES +typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC)(GLsizei n, GLenum type, const GLfixed *buffer); +GLAPI PFNGLFEEDBACKBUFFERXOESPROC glad_glFeedbackBufferxOES; +#define glFeedbackBufferxOES glad_glFeedbackBufferxOES +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +GLAPI PFNGLGETCONVOLUTIONPARAMETERXVOESPROC glad_glGetConvolutionParameterxvOES; +#define glGetConvolutionParameterxvOES glad_glGetConvolutionParameterxvOES +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +GLAPI PFNGLGETHISTOGRAMPARAMETERXVOESPROC glad_glGetHistogramParameterxvOES; +#define glGetHistogramParameterxvOES glad_glGetHistogramParameterxvOES +typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed *params); +GLAPI PFNGLGETLIGHTXOESPROC glad_glGetLightxOES; +#define glGetLightxOES glad_glGetLightxOES +typedef void (APIENTRYP PFNGLGETMAPXVOESPROC)(GLenum target, GLenum query, GLfixed *v); +GLAPI PFNGLGETMAPXVOESPROC glad_glGetMapxvOES; +#define glGetMapxvOES glad_glGetMapxvOES +typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +GLAPI PFNGLGETMATERIALXOESPROC glad_glGetMaterialxOES; +#define glGetMaterialxOES glad_glGetMaterialxOES +typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC)(GLenum map, GLint size, GLfixed *values); +GLAPI PFNGLGETPIXELMAPXVPROC glad_glGetPixelMapxv; +#define glGetPixelMapxv glad_glGetPixelMapxv +typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC)(GLenum coord, GLenum pname, GLfixed *params); +GLAPI PFNGLGETTEXGENXVOESPROC glad_glGetTexGenxvOES; +#define glGetTexGenxvOES glad_glGetTexGenxvOES +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC)(GLenum target, GLint level, GLenum pname, GLfixed *params); +GLAPI PFNGLGETTEXLEVELPARAMETERXVOESPROC glad_glGetTexLevelParameterxvOES; +#define glGetTexLevelParameterxvOES glad_glGetTexLevelParameterxvOES +typedef void (APIENTRYP PFNGLINDEXXOESPROC)(GLfixed component); +GLAPI PFNGLINDEXXOESPROC glad_glIndexxOES; +#define glIndexxOES glad_glIndexxOES +typedef void (APIENTRYP PFNGLINDEXXVOESPROC)(const GLfixed *component); +GLAPI PFNGLINDEXXVOESPROC glad_glIndexxvOES; +#define glIndexxvOES glad_glIndexxvOES +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); +GLAPI PFNGLLOADTRANSPOSEMATRIXXOESPROC glad_glLoadTransposeMatrixxOES; +#define glLoadTransposeMatrixxOES glad_glLoadTransposeMatrixxOES +typedef void (APIENTRYP PFNGLMAP1XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +GLAPI PFNGLMAP1XOESPROC glad_glMap1xOES; +#define glMap1xOES glad_glMap1xOES +typedef void (APIENTRYP PFNGLMAP2XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +GLAPI PFNGLMAP2XOESPROC glad_glMap2xOES; +#define glMap2xOES glad_glMap2xOES +typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC)(GLint n, GLfixed u1, GLfixed u2); +GLAPI PFNGLMAPGRID1XOESPROC glad_glMapGrid1xOES; +#define glMapGrid1xOES glad_glMapGrid1xOES +typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +GLAPI PFNGLMAPGRID2XOESPROC glad_glMapGrid2xOES; +#define glMapGrid2xOES glad_glMapGrid2xOES +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); +GLAPI PFNGLMULTTRANSPOSEMATRIXXOESPROC glad_glMultTransposeMatrixxOES; +#define glMultTransposeMatrixxOES glad_glMultTransposeMatrixxOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC)(GLenum texture, GLfixed s); +GLAPI PFNGLMULTITEXCOORD1XOESPROC glad_glMultiTexCoord1xOES; +#define glMultiTexCoord1xOES glad_glMultiTexCoord1xOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC)(GLenum texture, const GLfixed *coords); +GLAPI PFNGLMULTITEXCOORD1XVOESPROC glad_glMultiTexCoord1xvOES; +#define glMultiTexCoord1xvOES glad_glMultiTexCoord1xvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC)(GLenum texture, GLfixed s, GLfixed t); +GLAPI PFNGLMULTITEXCOORD2XOESPROC glad_glMultiTexCoord2xOES; +#define glMultiTexCoord2xOES glad_glMultiTexCoord2xOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC)(GLenum texture, const GLfixed *coords); +GLAPI PFNGLMULTITEXCOORD2XVOESPROC glad_glMultiTexCoord2xvOES; +#define glMultiTexCoord2xvOES glad_glMultiTexCoord2xvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r); +GLAPI PFNGLMULTITEXCOORD3XOESPROC glad_glMultiTexCoord3xOES; +#define glMultiTexCoord3xOES glad_glMultiTexCoord3xOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC)(GLenum texture, const GLfixed *coords); +GLAPI PFNGLMULTITEXCOORD3XVOESPROC glad_glMultiTexCoord3xvOES; +#define glMultiTexCoord3xvOES glad_glMultiTexCoord3xvOES +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC)(GLenum texture, const GLfixed *coords); +GLAPI PFNGLMULTITEXCOORD4XVOESPROC glad_glMultiTexCoord4xvOES; +#define glMultiTexCoord4xvOES glad_glMultiTexCoord4xvOES +typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLNORMAL3XVOESPROC glad_glNormal3xvOES; +#define glNormal3xvOES glad_glNormal3xvOES +typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC)(GLfixed token); +GLAPI PFNGLPASSTHROUGHXOESPROC glad_glPassThroughxOES; +#define glPassThroughxOES glad_glPassThroughxOES +typedef void (APIENTRYP PFNGLPIXELMAPXPROC)(GLenum map, GLint size, const GLfixed *values); +GLAPI PFNGLPIXELMAPXPROC glad_glPixelMapx; +#define glPixelMapx glad_glPixelMapx +typedef void (APIENTRYP PFNGLPIXELSTOREXPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLPIXELSTOREXPROC glad_glPixelStorex; +#define glPixelStorex glad_glPixelStorex +typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC)(GLenum pname, GLfixed param); +GLAPI PFNGLPIXELTRANSFERXOESPROC glad_glPixelTransferxOES; +#define glPixelTransferxOES glad_glPixelTransferxOES +typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC)(GLfixed xfactor, GLfixed yfactor); +GLAPI PFNGLPIXELZOOMXOESPROC glad_glPixelZoomxOES; +#define glPixelZoomxOES glad_glPixelZoomxOES +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC)(GLsizei n, const GLuint *textures, const GLfixed *priorities); +GLAPI PFNGLPRIORITIZETEXTURESXOESPROC glad_glPrioritizeTexturesxOES; +#define glPrioritizeTexturesxOES glad_glPrioritizeTexturesxOES +typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC)(GLfixed x, GLfixed y); +GLAPI PFNGLRASTERPOS2XOESPROC glad_glRasterPos2xOES; +#define glRasterPos2xOES glad_glRasterPos2xOES +typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLRASTERPOS2XVOESPROC glad_glRasterPos2xvOES; +#define glRasterPos2xvOES glad_glRasterPos2xvOES +typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC)(GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLRASTERPOS3XOESPROC glad_glRasterPos3xOES; +#define glRasterPos3xOES glad_glRasterPos3xOES +typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLRASTERPOS3XVOESPROC glad_glRasterPos3xvOES; +#define glRasterPos3xvOES glad_glRasterPos3xvOES +typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed w); +GLAPI PFNGLRASTERPOS4XOESPROC glad_glRasterPos4xOES; +#define glRasterPos4xOES glad_glRasterPos4xOES +typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLRASTERPOS4XVOESPROC glad_glRasterPos4xvOES; +#define glRasterPos4xvOES glad_glRasterPos4xvOES +typedef void (APIENTRYP PFNGLRECTXOESPROC)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +GLAPI PFNGLRECTXOESPROC glad_glRectxOES; +#define glRectxOES glad_glRectxOES +typedef void (APIENTRYP PFNGLRECTXVOESPROC)(const GLfixed *v1, const GLfixed *v2); +GLAPI PFNGLRECTXVOESPROC glad_glRectxvOES; +#define glRectxvOES glad_glRectxvOES +typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC)(GLfixed s); +GLAPI PFNGLTEXCOORD1XOESPROC glad_glTexCoord1xOES; +#define glTexCoord1xOES glad_glTexCoord1xOES +typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLTEXCOORD1XVOESPROC glad_glTexCoord1xvOES; +#define glTexCoord1xvOES glad_glTexCoord1xvOES +typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC)(GLfixed s, GLfixed t); +GLAPI PFNGLTEXCOORD2XOESPROC glad_glTexCoord2xOES; +#define glTexCoord2xOES glad_glTexCoord2xOES +typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLTEXCOORD2XVOESPROC glad_glTexCoord2xvOES; +#define glTexCoord2xvOES glad_glTexCoord2xvOES +typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC)(GLfixed s, GLfixed t, GLfixed r); +GLAPI PFNGLTEXCOORD3XOESPROC glad_glTexCoord3xOES; +#define glTexCoord3xOES glad_glTexCoord3xOES +typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLTEXCOORD3XVOESPROC glad_glTexCoord3xvOES; +#define glTexCoord3xvOES glad_glTexCoord3xvOES +typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC)(GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI PFNGLTEXCOORD4XOESPROC glad_glTexCoord4xOES; +#define glTexCoord4xOES glad_glTexCoord4xOES +typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLTEXCOORD4XVOESPROC glad_glTexCoord4xvOES; +#define glTexCoord4xvOES glad_glTexCoord4xvOES +typedef void (APIENTRYP PFNGLTEXGENXOESPROC)(GLenum coord, GLenum pname, GLfixed param); +GLAPI PFNGLTEXGENXOESPROC glad_glTexGenxOES; +#define glTexGenxOES glad_glTexGenxOES +typedef void (APIENTRYP PFNGLTEXGENXVOESPROC)(GLenum coord, GLenum pname, const GLfixed *params); +GLAPI PFNGLTEXGENXVOESPROC glad_glTexGenxvOES; +#define glTexGenxvOES glad_glTexGenxvOES +typedef void (APIENTRYP PFNGLVERTEX2XOESPROC)(GLfixed x); +GLAPI PFNGLVERTEX2XOESPROC glad_glVertex2xOES; +#define glVertex2xOES glad_glVertex2xOES +typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLVERTEX2XVOESPROC glad_glVertex2xvOES; +#define glVertex2xvOES glad_glVertex2xvOES +typedef void (APIENTRYP PFNGLVERTEX3XOESPROC)(GLfixed x, GLfixed y); +GLAPI PFNGLVERTEX3XOESPROC glad_glVertex3xOES; +#define glVertex3xOES glad_glVertex3xOES +typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLVERTEX3XVOESPROC glad_glVertex3xvOES; +#define glVertex3xvOES glad_glVertex3xvOES +typedef void (APIENTRYP PFNGLVERTEX4XOESPROC)(GLfixed x, GLfixed y, GLfixed z); +GLAPI PFNGLVERTEX4XOESPROC glad_glVertex4xOES; +#define glVertex4xOES glad_glVertex4xOES +typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC)(const GLfixed *coords); +GLAPI PFNGLVERTEX4XVOESPROC glad_glVertex4xvOES; +#define glVertex4xvOES glad_glVertex4xvOES +#endif +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +GLAPI int GLAD_GL_OES_query_matrix; +typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC)(GLfixed *mantissa, GLint *exponent); +GLAPI PFNGLQUERYMATRIXXOESPROC glad_glQueryMatrixxOES; +#define glQueryMatrixxOES glad_glQueryMatrixxOES +#endif +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +GLAPI int GLAD_GL_OES_read_format; +#endif +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +GLAPI int GLAD_GL_OES_single_precision; +typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC)(GLclampf depth); +GLAPI PFNGLCLEARDEPTHFOESPROC glad_glClearDepthfOES; +#define glClearDepthfOES glad_glClearDepthfOES +typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC)(GLenum plane, const GLfloat *equation); +GLAPI PFNGLCLIPPLANEFOESPROC glad_glClipPlanefOES; +#define glClipPlanefOES glad_glClipPlanefOES +typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC)(GLclampf n, GLclampf f); +GLAPI PFNGLDEPTHRANGEFOESPROC glad_glDepthRangefOES; +#define glDepthRangefOES glad_glDepthRangefOES +typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +GLAPI PFNGLFRUSTUMFOESPROC glad_glFrustumfOES; +#define glFrustumfOES glad_glFrustumfOES +typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC)(GLenum plane, GLfloat *equation); +GLAPI PFNGLGETCLIPPLANEFOESPROC glad_glGetClipPlanefOES; +#define glGetClipPlanefOES glad_glGetClipPlanefOES +typedef void (APIENTRYP PFNGLORTHOFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +GLAPI PFNGLORTHOFOESPROC glad_glOrthofOES; +#define glOrthofOES glad_glOrthofOES +#endif +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +GLAPI int GLAD_GL_OML_interlace; +#endif +#ifndef GL_OML_resample +#define GL_OML_resample 1 +GLAPI int GLAD_GL_OML_resample; +#endif +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +GLAPI int GLAD_GL_OML_subsample; +#endif +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +GLAPI int GLAD_GL_OVR_multiview; +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +GLAPI PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR; +#define glFramebufferTextureMultiviewOVR glad_glFramebufferTextureMultiviewOVR +#endif +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +GLAPI int GLAD_GL_OVR_multiview2; +#endif +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +GLAPI int GLAD_GL_PGI_misc_hints; +typedef void (APIENTRYP PFNGLHINTPGIPROC)(GLenum target, GLint mode); +GLAPI PFNGLHINTPGIPROC glad_glHintPGI; +#define glHintPGI glad_glHintPGI +#endif +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +GLAPI int GLAD_GL_PGI_vertex_hints; +#endif +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +GLAPI int GLAD_GL_REND_screen_coordinates; +#endif +#ifndef GL_S3_s3tc +#define GL_S3_s3tc 1 +GLAPI int GLAD_GL_S3_s3tc; +#endif +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +GLAPI int GLAD_GL_SGIS_detail_texture; +typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat *points); +GLAPI PFNGLDETAILTEXFUNCSGISPROC glad_glDetailTexFuncSGIS; +#define glDetailTexFuncSGIS glad_glDetailTexFuncSGIS +typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC)(GLenum target, GLfloat *points); +GLAPI PFNGLGETDETAILTEXFUNCSGISPROC glad_glGetDetailTexFuncSGIS; +#define glGetDetailTexFuncSGIS glad_glGetDetailTexFuncSGIS +#endif +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +GLAPI int GLAD_GL_SGIS_fog_function; +typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC)(GLsizei n, const GLfloat *points); +GLAPI PFNGLFOGFUNCSGISPROC glad_glFogFuncSGIS; +#define glFogFuncSGIS glad_glFogFuncSGIS +typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC)(GLfloat *points); +GLAPI PFNGLGETFOGFUNCSGISPROC glad_glGetFogFuncSGIS; +#define glGetFogFuncSGIS glad_glGetFogFuncSGIS +#endif +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +GLAPI int GLAD_GL_SGIS_generate_mipmap; +#endif +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +GLAPI int GLAD_GL_SGIS_multisample; +typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC)(GLclampf value, GLboolean invert); +GLAPI PFNGLSAMPLEMASKSGISPROC glad_glSampleMaskSGIS; +#define glSampleMaskSGIS glad_glSampleMaskSGIS +typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC)(GLenum pattern); +GLAPI PFNGLSAMPLEPATTERNSGISPROC glad_glSamplePatternSGIS; +#define glSamplePatternSGIS glad_glSamplePatternSGIS +#endif +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +GLAPI int GLAD_GL_SGIS_pixel_texture; +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC)(GLenum pname, GLint param); +GLAPI PFNGLPIXELTEXGENPARAMETERISGISPROC glad_glPixelTexGenParameteriSGIS; +#define glPixelTexGenParameteriSGIS glad_glPixelTexGenParameteriSGIS +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLPIXELTEXGENPARAMETERIVSGISPROC glad_glPixelTexGenParameterivSGIS; +#define glPixelTexGenParameterivSGIS glad_glPixelTexGenParameterivSGIS +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPIXELTEXGENPARAMETERFSGISPROC glad_glPixelTexGenParameterfSGIS; +#define glPixelTexGenParameterfSGIS glad_glPixelTexGenParameterfSGIS +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPIXELTEXGENPARAMETERFVSGISPROC glad_glPixelTexGenParameterfvSGIS; +#define glPixelTexGenParameterfvSGIS glad_glPixelTexGenParameterfvSGIS +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, GLint *params); +GLAPI PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC glad_glGetPixelTexGenParameterivSGIS; +#define glGetPixelTexGenParameterivSGIS glad_glGetPixelTexGenParameterivSGIS +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, GLfloat *params); +GLAPI PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC glad_glGetPixelTexGenParameterfvSGIS; +#define glGetPixelTexGenParameterfvSGIS glad_glGetPixelTexGenParameterfvSGIS +#endif +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +GLAPI int GLAD_GL_SGIS_point_line_texgen; +#endif +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +GLAPI int GLAD_GL_SGIS_point_parameters; +typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFSGISPROC glad_glPointParameterfSGIS; +#define glPointParameterfSGIS glad_glPointParameterfSGIS +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVSGISPROC glad_glPointParameterfvSGIS; +#define glPointParameterfvSGIS glad_glPointParameterfvSGIS +#endif +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +GLAPI int GLAD_GL_SGIS_sharpen_texture; +typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat *points); +GLAPI PFNGLSHARPENTEXFUNCSGISPROC glad_glSharpenTexFuncSGIS; +#define glSharpenTexFuncSGIS glad_glSharpenTexFuncSGIS +typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC)(GLenum target, GLfloat *points); +GLAPI PFNGLGETSHARPENTEXFUNCSGISPROC glad_glGetSharpenTexFuncSGIS; +#define glGetSharpenTexFuncSGIS glad_glGetSharpenTexFuncSGIS +#endif +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +GLAPI int GLAD_GL_SGIS_texture4D; +typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE4DSGISPROC glad_glTexImage4DSGIS; +#define glTexImage4DSGIS glad_glTexImage4DSGIS +typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE4DSGISPROC glad_glTexSubImage4DSGIS; +#define glTexSubImage4DSGIS glad_glTexSubImage4DSGIS +#endif +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +GLAPI int GLAD_GL_SGIS_texture_border_clamp; +#endif +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +GLAPI int GLAD_GL_SGIS_texture_color_mask; +typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI PFNGLTEXTURECOLORMASKSGISPROC glad_glTextureColorMaskSGIS; +#define glTextureColorMaskSGIS glad_glTextureColorMaskSGIS +#endif +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +GLAPI int GLAD_GL_SGIS_texture_edge_clamp; +#endif +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +GLAPI int GLAD_GL_SGIS_texture_filter4; +typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLfloat *weights); +GLAPI PFNGLGETTEXFILTERFUNCSGISPROC glad_glGetTexFilterFuncSGIS; +#define glGetTexFilterFuncSGIS glad_glGetTexFilterFuncSGIS +typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +GLAPI PFNGLTEXFILTERFUNCSGISPROC glad_glTexFilterFuncSGIS; +#define glTexFilterFuncSGIS glad_glTexFilterFuncSGIS +#endif +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +GLAPI int GLAD_GL_SGIS_texture_lod; +#endif +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 +GLAPI int GLAD_GL_SGIS_texture_select; +#endif +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +GLAPI int GLAD_GL_SGIX_async; +typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC)(GLuint marker); +GLAPI PFNGLASYNCMARKERSGIXPROC glad_glAsyncMarkerSGIX; +#define glAsyncMarkerSGIX glad_glAsyncMarkerSGIX +typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC)(GLuint *markerp); +GLAPI PFNGLFINISHASYNCSGIXPROC glad_glFinishAsyncSGIX; +#define glFinishAsyncSGIX glad_glFinishAsyncSGIX +typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC)(GLuint *markerp); +GLAPI PFNGLPOLLASYNCSGIXPROC glad_glPollAsyncSGIX; +#define glPollAsyncSGIX glad_glPollAsyncSGIX +typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC)(GLsizei range); +GLAPI PFNGLGENASYNCMARKERSSGIXPROC glad_glGenAsyncMarkersSGIX; +#define glGenAsyncMarkersSGIX glad_glGenAsyncMarkersSGIX +typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC)(GLuint marker, GLsizei range); +GLAPI PFNGLDELETEASYNCMARKERSSGIXPROC glad_glDeleteAsyncMarkersSGIX; +#define glDeleteAsyncMarkersSGIX glad_glDeleteAsyncMarkersSGIX +typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC)(GLuint marker); +GLAPI PFNGLISASYNCMARKERSGIXPROC glad_glIsAsyncMarkerSGIX; +#define glIsAsyncMarkerSGIX glad_glIsAsyncMarkerSGIX +#endif +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +GLAPI int GLAD_GL_SGIX_async_histogram; +#endif +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +GLAPI int GLAD_GL_SGIX_async_pixel; +#endif +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +GLAPI int GLAD_GL_SGIX_blend_alpha_minmax; +#endif +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +GLAPI int GLAD_GL_SGIX_calligraphic_fragment; +#endif +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +GLAPI int GLAD_GL_SGIX_clipmap; +#endif +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +GLAPI int GLAD_GL_SGIX_convolution_accuracy; +#endif +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +GLAPI int GLAD_GL_SGIX_depth_pass_instrument; +#endif +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +GLAPI int GLAD_GL_SGIX_depth_texture; +#endif +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 +GLAPI int GLAD_GL_SGIX_flush_raster; +typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC)(void); +GLAPI PFNGLFLUSHRASTERSGIXPROC glad_glFlushRasterSGIX; +#define glFlushRasterSGIX glad_glFlushRasterSGIX +#endif +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +GLAPI int GLAD_GL_SGIX_fog_offset; +#endif +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +GLAPI int GLAD_GL_SGIX_fragment_lighting; +typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC)(GLenum face, GLenum mode); +GLAPI PFNGLFRAGMENTCOLORMATERIALSGIXPROC glad_glFragmentColorMaterialSGIX; +#define glFragmentColorMaterialSGIX glad_glFragmentColorMaterialSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC)(GLenum light, GLenum pname, GLfloat param); +GLAPI PFNGLFRAGMENTLIGHTFSGIXPROC glad_glFragmentLightfSGIX; +#define glFragmentLightfSGIX glad_glFragmentLightfSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, const GLfloat *params); +GLAPI PFNGLFRAGMENTLIGHTFVSGIXPROC glad_glFragmentLightfvSGIX; +#define glFragmentLightfvSGIX glad_glFragmentLightfvSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC)(GLenum light, GLenum pname, GLint param); +GLAPI PFNGLFRAGMENTLIGHTISGIXPROC glad_glFragmentLightiSGIX; +#define glFragmentLightiSGIX glad_glFragmentLightiSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, const GLint *params); +GLAPI PFNGLFRAGMENTLIGHTIVSGIXPROC glad_glFragmentLightivSGIX; +#define glFragmentLightivSGIX glad_glFragmentLightivSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLFRAGMENTLIGHTMODELFSGIXPROC glad_glFragmentLightModelfSGIX; +#define glFragmentLightModelfSGIX glad_glFragmentLightModelfSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLFRAGMENTLIGHTMODELFVSGIXPROC glad_glFragmentLightModelfvSGIX; +#define glFragmentLightModelfvSGIX glad_glFragmentLightModelfvSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC)(GLenum pname, GLint param); +GLAPI PFNGLFRAGMENTLIGHTMODELISGIXPROC glad_glFragmentLightModeliSGIX; +#define glFragmentLightModeliSGIX glad_glFragmentLightModeliSGIX +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLFRAGMENTLIGHTMODELIVSGIXPROC glad_glFragmentLightModelivSGIX; +#define glFragmentLightModelivSGIX glad_glFragmentLightModelivSGIX +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC)(GLenum face, GLenum pname, GLfloat param); +GLAPI PFNGLFRAGMENTMATERIALFSGIXPROC glad_glFragmentMaterialfSGIX; +#define glFragmentMaterialfSGIX glad_glFragmentMaterialfSGIX +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, const GLfloat *params); +GLAPI PFNGLFRAGMENTMATERIALFVSGIXPROC glad_glFragmentMaterialfvSGIX; +#define glFragmentMaterialfvSGIX glad_glFragmentMaterialfvSGIX +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC)(GLenum face, GLenum pname, GLint param); +GLAPI PFNGLFRAGMENTMATERIALISGIXPROC glad_glFragmentMaterialiSGIX; +#define glFragmentMaterialiSGIX glad_glFragmentMaterialiSGIX +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, const GLint *params); +GLAPI PFNGLFRAGMENTMATERIALIVSGIXPROC glad_glFragmentMaterialivSGIX; +#define glFragmentMaterialivSGIX glad_glFragmentMaterialivSGIX +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, GLfloat *params); +GLAPI PFNGLGETFRAGMENTLIGHTFVSGIXPROC glad_glGetFragmentLightfvSGIX; +#define glGetFragmentLightfvSGIX glad_glGetFragmentLightfvSGIX +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAGMENTLIGHTIVSGIXPROC glad_glGetFragmentLightivSGIX; +#define glGetFragmentLightivSGIX glad_glGetFragmentLightivSGIX +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, GLfloat *params); +GLAPI PFNGLGETFRAGMENTMATERIALFVSGIXPROC glad_glGetFragmentMaterialfvSGIX; +#define glGetFragmentMaterialfvSGIX glad_glGetFragmentMaterialfvSGIX +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAGMENTMATERIALIVSGIXPROC glad_glGetFragmentMaterialivSGIX; +#define glGetFragmentMaterialivSGIX glad_glGetFragmentMaterialivSGIX +typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC)(GLenum pname, GLint param); +GLAPI PFNGLLIGHTENVISGIXPROC glad_glLightEnviSGIX; +#define glLightEnviSGIX glad_glLightEnviSGIX +#endif +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +GLAPI int GLAD_GL_SGIX_framezoom; +typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC)(GLint factor); +GLAPI PFNGLFRAMEZOOMSGIXPROC glad_glFrameZoomSGIX; +#define glFrameZoomSGIX glad_glFrameZoomSGIX +#endif +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 +GLAPI int GLAD_GL_SGIX_igloo_interface; +typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC)(GLenum pname, const void *params); +GLAPI PFNGLIGLOOINTERFACESGIXPROC glad_glIglooInterfaceSGIX; +#define glIglooInterfaceSGIX glad_glIglooInterfaceSGIX +#endif +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +GLAPI int GLAD_GL_SGIX_instruments; +typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC)(void); +GLAPI PFNGLGETINSTRUMENTSSGIXPROC glad_glGetInstrumentsSGIX; +#define glGetInstrumentsSGIX glad_glGetInstrumentsSGIX +typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC)(GLsizei size, GLint *buffer); +GLAPI PFNGLINSTRUMENTSBUFFERSGIXPROC glad_glInstrumentsBufferSGIX; +#define glInstrumentsBufferSGIX glad_glInstrumentsBufferSGIX +typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC)(GLint *marker_p); +GLAPI PFNGLPOLLINSTRUMENTSSGIXPROC glad_glPollInstrumentsSGIX; +#define glPollInstrumentsSGIX glad_glPollInstrumentsSGIX +typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC)(GLint marker); +GLAPI PFNGLREADINSTRUMENTSSGIXPROC glad_glReadInstrumentsSGIX; +#define glReadInstrumentsSGIX glad_glReadInstrumentsSGIX +typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC)(void); +GLAPI PFNGLSTARTINSTRUMENTSSGIXPROC glad_glStartInstrumentsSGIX; +#define glStartInstrumentsSGIX glad_glStartInstrumentsSGIX +typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC)(GLint marker); +GLAPI PFNGLSTOPINSTRUMENTSSGIXPROC glad_glStopInstrumentsSGIX; +#define glStopInstrumentsSGIX glad_glStopInstrumentsSGIX +#endif +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +GLAPI int GLAD_GL_SGIX_interlace; +#endif +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +GLAPI int GLAD_GL_SGIX_ir_instrument1; +#endif +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +GLAPI int GLAD_GL_SGIX_list_priority; +typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, GLfloat *params); +GLAPI PFNGLGETLISTPARAMETERFVSGIXPROC glad_glGetListParameterfvSGIX; +#define glGetListParameterfvSGIX glad_glGetListParameterfvSGIX +typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, GLint *params); +GLAPI PFNGLGETLISTPARAMETERIVSGIXPROC glad_glGetListParameterivSGIX; +#define glGetListParameterivSGIX glad_glGetListParameterivSGIX +typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC)(GLuint list, GLenum pname, GLfloat param); +GLAPI PFNGLLISTPARAMETERFSGIXPROC glad_glListParameterfSGIX; +#define glListParameterfSGIX glad_glListParameterfSGIX +typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, const GLfloat *params); +GLAPI PFNGLLISTPARAMETERFVSGIXPROC glad_glListParameterfvSGIX; +#define glListParameterfvSGIX glad_glListParameterfvSGIX +typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC)(GLuint list, GLenum pname, GLint param); +GLAPI PFNGLLISTPARAMETERISGIXPROC glad_glListParameteriSGIX; +#define glListParameteriSGIX glad_glListParameteriSGIX +typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, const GLint *params); +GLAPI PFNGLLISTPARAMETERIVSGIXPROC glad_glListParameterivSGIX; +#define glListParameterivSGIX glad_glListParameterivSGIX +#endif +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +GLAPI int GLAD_GL_SGIX_pixel_texture; +typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC)(GLenum mode); +GLAPI PFNGLPIXELTEXGENSGIXPROC glad_glPixelTexGenSGIX; +#define glPixelTexGenSGIX glad_glPixelTexGenSGIX +#endif +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +GLAPI int GLAD_GL_SGIX_pixel_tiles; +#endif +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +GLAPI int GLAD_GL_SGIX_polynomial_ffd; +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +GLAPI PFNGLDEFORMATIONMAP3DSGIXPROC glad_glDeformationMap3dSGIX; +#define glDeformationMap3dSGIX glad_glDeformationMap3dSGIX +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +GLAPI PFNGLDEFORMATIONMAP3FSGIXPROC glad_glDeformationMap3fSGIX; +#define glDeformationMap3fSGIX glad_glDeformationMap3fSGIX +typedef void (APIENTRYP PFNGLDEFORMSGIXPROC)(GLbitfield mask); +GLAPI PFNGLDEFORMSGIXPROC glad_glDeformSGIX; +#define glDeformSGIX glad_glDeformSGIX +typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)(GLbitfield mask); +GLAPI PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC glad_glLoadIdentityDeformationMapSGIX; +#define glLoadIdentityDeformationMapSGIX glad_glLoadIdentityDeformationMapSGIX +#endif +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +GLAPI int GLAD_GL_SGIX_reference_plane; +typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC)(const GLdouble *equation); +GLAPI PFNGLREFERENCEPLANESGIXPROC glad_glReferencePlaneSGIX; +#define glReferencePlaneSGIX glad_glReferencePlaneSGIX +#endif +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +GLAPI int GLAD_GL_SGIX_resample; +#endif +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +GLAPI int GLAD_GL_SGIX_scalebias_hint; +#endif +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +GLAPI int GLAD_GL_SGIX_shadow; +#endif +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +GLAPI int GLAD_GL_SGIX_shadow_ambient; +#endif +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +GLAPI int GLAD_GL_SGIX_sprite; +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLSPRITEPARAMETERFSGIXPROC glad_glSpriteParameterfSGIX; +#define glSpriteParameterfSGIX glad_glSpriteParameterfSGIX +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLSPRITEPARAMETERFVSGIXPROC glad_glSpriteParameterfvSGIX; +#define glSpriteParameterfvSGIX glad_glSpriteParameterfvSGIX +typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC)(GLenum pname, GLint param); +GLAPI PFNGLSPRITEPARAMETERISGIXPROC glad_glSpriteParameteriSGIX; +#define glSpriteParameteriSGIX glad_glSpriteParameteriSGIX +typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLSPRITEPARAMETERIVSGIXPROC glad_glSpriteParameterivSGIX; +#define glSpriteParameterivSGIX glad_glSpriteParameterivSGIX +#endif +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +GLAPI int GLAD_GL_SGIX_subsample; +#endif +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 +GLAPI int GLAD_GL_SGIX_tag_sample_buffer; +typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC)(void); +GLAPI PFNGLTAGSAMPLEBUFFERSGIXPROC glad_glTagSampleBufferSGIX; +#define glTagSampleBufferSGIX glad_glTagSampleBufferSGIX +#endif +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +GLAPI int GLAD_GL_SGIX_texture_add_env; +#endif +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +GLAPI int GLAD_GL_SGIX_texture_coordinate_clamp; +#endif +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +GLAPI int GLAD_GL_SGIX_texture_lod_bias; +#endif +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +GLAPI int GLAD_GL_SGIX_texture_multi_buffer; +#endif +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +GLAPI int GLAD_GL_SGIX_texture_scale_bias; +#endif +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +GLAPI int GLAD_GL_SGIX_vertex_preclip; +#endif +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +GLAPI int GLAD_GL_SGIX_ycrcb; +#endif +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +GLAPI int GLAD_GL_SGIX_ycrcb_subsample; +#endif +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +GLAPI int GLAD_GL_SGIX_ycrcba; +#endif +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 +GLAPI int GLAD_GL_SGI_color_matrix; +#endif +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +GLAPI int GLAD_GL_SGI_color_table; +typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI PFNGLCOLORTABLESGIPROC glad_glColorTableSGI; +#define glColorTableSGI glad_glColorTableSGI +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLCOLORTABLEPARAMETERFVSGIPROC glad_glColorTableParameterfvSGI; +#define glColorTableParameterfvSGI glad_glColorTableParameterfvSGI +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLCOLORTABLEPARAMETERIVSGIPROC glad_glColorTableParameterivSGI; +#define glColorTableParameterivSGI glad_glColorTableParameterivSGI +typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYCOLORTABLESGIPROC glad_glCopyColorTableSGI; +#define glCopyColorTableSGI glad_glCopyColorTableSGI +typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC)(GLenum target, GLenum format, GLenum type, void *table); +GLAPI PFNGLGETCOLORTABLESGIPROC glad_glGetColorTableSGI; +#define glGetColorTableSGI glad_glGetColorTableSGI +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERFVSGIPROC glad_glGetColorTableParameterfvSGI; +#define glGetColorTableParameterfvSGI glad_glGetColorTableParameterfvSGI +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETCOLORTABLEPARAMETERIVSGIPROC glad_glGetColorTableParameterivSGI; +#define glGetColorTableParameterivSGI glad_glGetColorTableParameterivSGI +#endif +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +GLAPI int GLAD_GL_SGI_texture_color_table; +#endif +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +GLAPI int GLAD_GL_SUNX_constant_data; +typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC)(void); +GLAPI PFNGLFINISHTEXTURESUNXPROC glad_glFinishTextureSUNX; +#define glFinishTextureSUNX glad_glFinishTextureSUNX +#endif +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +GLAPI int GLAD_GL_SUN_convolution_border_modes; +#endif +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +GLAPI int GLAD_GL_SUN_global_alpha; +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC)(GLbyte factor); +GLAPI PFNGLGLOBALALPHAFACTORBSUNPROC glad_glGlobalAlphaFactorbSUN; +#define glGlobalAlphaFactorbSUN glad_glGlobalAlphaFactorbSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC)(GLshort factor); +GLAPI PFNGLGLOBALALPHAFACTORSSUNPROC glad_glGlobalAlphaFactorsSUN; +#define glGlobalAlphaFactorsSUN glad_glGlobalAlphaFactorsSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC)(GLint factor); +GLAPI PFNGLGLOBALALPHAFACTORISUNPROC glad_glGlobalAlphaFactoriSUN; +#define glGlobalAlphaFactoriSUN glad_glGlobalAlphaFactoriSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC)(GLfloat factor); +GLAPI PFNGLGLOBALALPHAFACTORFSUNPROC glad_glGlobalAlphaFactorfSUN; +#define glGlobalAlphaFactorfSUN glad_glGlobalAlphaFactorfSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC)(GLdouble factor); +GLAPI PFNGLGLOBALALPHAFACTORDSUNPROC glad_glGlobalAlphaFactordSUN; +#define glGlobalAlphaFactordSUN glad_glGlobalAlphaFactordSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC)(GLubyte factor); +GLAPI PFNGLGLOBALALPHAFACTORUBSUNPROC glad_glGlobalAlphaFactorubSUN; +#define glGlobalAlphaFactorubSUN glad_glGlobalAlphaFactorubSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC)(GLushort factor); +GLAPI PFNGLGLOBALALPHAFACTORUSSUNPROC glad_glGlobalAlphaFactorusSUN; +#define glGlobalAlphaFactorusSUN glad_glGlobalAlphaFactorusSUN +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC)(GLuint factor); +GLAPI PFNGLGLOBALALPHAFACTORUISUNPROC glad_glGlobalAlphaFactoruiSUN; +#define glGlobalAlphaFactoruiSUN glad_glGlobalAlphaFactoruiSUN +#endif +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +GLAPI int GLAD_GL_SUN_mesh_array; +typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC)(GLenum mode, GLint first, GLsizei count, GLsizei width); +GLAPI PFNGLDRAWMESHARRAYSSUNPROC glad_glDrawMeshArraysSUN; +#define glDrawMeshArraysSUN glad_glDrawMeshArraysSUN +#endif +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +GLAPI int GLAD_GL_SUN_slice_accum; +#endif +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +GLAPI int GLAD_GL_SUN_triangle_list; +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC)(GLuint code); +GLAPI PFNGLREPLACEMENTCODEUISUNPROC glad_glReplacementCodeuiSUN; +#define glReplacementCodeuiSUN glad_glReplacementCodeuiSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC)(GLushort code); +GLAPI PFNGLREPLACEMENTCODEUSSUNPROC glad_glReplacementCodeusSUN; +#define glReplacementCodeusSUN glad_glReplacementCodeusSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC)(GLubyte code); +GLAPI PFNGLREPLACEMENTCODEUBSUNPROC glad_glReplacementCodeubSUN; +#define glReplacementCodeubSUN glad_glReplacementCodeubSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC)(const GLuint *code); +GLAPI PFNGLREPLACEMENTCODEUIVSUNPROC glad_glReplacementCodeuivSUN; +#define glReplacementCodeuivSUN glad_glReplacementCodeuivSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC)(const GLushort *code); +GLAPI PFNGLREPLACEMENTCODEUSVSUNPROC glad_glReplacementCodeusvSUN; +#define glReplacementCodeusvSUN glad_glReplacementCodeusvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC)(const GLubyte *code); +GLAPI PFNGLREPLACEMENTCODEUBVSUNPROC glad_glReplacementCodeubvSUN; +#define glReplacementCodeubvSUN glad_glReplacementCodeubvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC)(GLenum type, GLsizei stride, const void **pointer); +GLAPI PFNGLREPLACEMENTCODEPOINTERSUNPROC glad_glReplacementCodePointerSUN; +#define glReplacementCodePointerSUN glad_glReplacementCodePointerSUN +#endif +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 +GLAPI int GLAD_GL_SUN_vertex; +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +GLAPI PFNGLCOLOR4UBVERTEX2FSUNPROC glad_glColor4ubVertex2fSUN; +#define glColor4ubVertex2fSUN glad_glColor4ubVertex2fSUN +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC)(const GLubyte *c, const GLfloat *v); +GLAPI PFNGLCOLOR4UBVERTEX2FVSUNPROC glad_glColor4ubVertex2fvSUN; +#define glColor4ubVertex2fvSUN glad_glColor4ubVertex2fvSUN +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLCOLOR4UBVERTEX3FSUNPROC glad_glColor4ubVertex3fSUN; +#define glColor4ubVertex3fSUN glad_glColor4ubVertex3fSUN +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC)(const GLubyte *c, const GLfloat *v); +GLAPI PFNGLCOLOR4UBVERTEX3FVSUNPROC glad_glColor4ubVertex3fvSUN; +#define glColor4ubVertex3fvSUN glad_glColor4ubVertex3fvSUN +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLCOLOR3FVERTEX3FSUNPROC glad_glColor3fVertex3fSUN; +#define glColor3fVertex3fSUN glad_glColor3fVertex3fSUN +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *v); +GLAPI PFNGLCOLOR3FVERTEX3FVSUNPROC glad_glColor3fVertex3fvSUN; +#define glColor3fVertex3fvSUN glad_glColor3fVertex3fvSUN +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLNORMAL3FVERTEX3FSUNPROC glad_glNormal3fVertex3fSUN; +#define glNormal3fVertex3fSUN glad_glNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *n, const GLfloat *v); +GLAPI PFNGLNORMAL3FVERTEX3FVSUNPROC glad_glNormal3fVertex3fvSUN; +#define glNormal3fVertex3fvSUN glad_glNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glColor4fNormal3fVertex3fSUN; +#define glColor4fNormal3fVertex3fSUN glad_glColor4fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glColor4fNormal3fVertex3fvSUN; +#define glColor4fNormal3fVertex3fvSUN glad_glColor4fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FVERTEX3FSUNPROC glad_glTexCoord2fVertex3fSUN; +#define glTexCoord2fVertex3fSUN glad_glTexCoord2fVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FVERTEX3FVSUNPROC glad_glTexCoord2fVertex3fvSUN; +#define glTexCoord2fVertex3fvSUN glad_glTexCoord2fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLTEXCOORD4FVERTEX4FSUNPROC glad_glTexCoord4fVertex4fSUN; +#define glTexCoord4fVertex4fSUN glad_glTexCoord4fVertex4fSUN +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC)(const GLfloat *tc, const GLfloat *v); +GLAPI PFNGLTEXCOORD4FVERTEX4FVSUNPROC glad_glTexCoord4fVertex4fvSUN; +#define glTexCoord4fVertex4fvSUN glad_glTexCoord4fVertex4fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC glad_glTexCoord2fColor4ubVertex3fSUN; +#define glTexCoord2fColor4ubVertex3fSUN glad_glTexCoord2fColor4ubVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)(const GLfloat *tc, const GLubyte *c, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC glad_glTexCoord2fColor4ubVertex3fvSUN; +#define glTexCoord2fColor4ubVertex3fvSUN glad_glTexCoord2fColor4ubVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC glad_glTexCoord2fColor3fVertex3fSUN; +#define glTexCoord2fColor3fVertex3fSUN glad_glTexCoord2fColor3fVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *c, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC glad_glTexCoord2fColor3fVertex3fvSUN; +#define glTexCoord2fColor3fVertex3fvSUN glad_glTexCoord2fColor3fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fNormal3fVertex3fSUN; +#define glTexCoord2fNormal3fVertex3fSUN glad_glTexCoord2fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fNormal3fVertex3fvSUN; +#define glTexCoord2fNormal3fVertex3fvSUN glad_glTexCoord2fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fSUN; +#define glTexCoord2fColor4fNormal3fVertex3fSUN glad_glTexCoord2fColor4fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fvSUN; +#define glTexCoord2fColor4fNormal3fVertex3fvSUN glad_glTexCoord2fColor4fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fSUN; +#define glTexCoord4fColor4fNormal3fVertex4fSUN glad_glTexCoord4fColor4fNormal3fVertex4fSUN +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fvSUN; +#define glTexCoord4fColor4fNormal3fVertex4fvSUN glad_glTexCoord4fColor4fNormal3fVertex4fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)(GLuint rc, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC glad_glReplacementCodeuiVertex3fSUN; +#define glReplacementCodeuiVertex3fSUN glad_glReplacementCodeuiVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC glad_glReplacementCodeuiVertex3fvSUN; +#define glReplacementCodeuiVertex3fvSUN glad_glReplacementCodeuiVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC glad_glReplacementCodeuiColor4ubVertex3fSUN; +#define glReplacementCodeuiColor4ubVertex3fSUN glad_glReplacementCodeuiColor4ubVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)(const GLuint *rc, const GLubyte *c, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4ubVertex3fvSUN; +#define glReplacementCodeuiColor4ubVertex3fvSUN glad_glReplacementCodeuiColor4ubVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor3fVertex3fSUN; +#define glReplacementCodeuiColor3fVertex3fSUN glad_glReplacementCodeuiColor3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *c, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor3fVertex3fvSUN; +#define glReplacementCodeuiColor3fVertex3fvSUN glad_glReplacementCodeuiColor3fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiNormal3fVertex3fSUN; +#define glReplacementCodeuiNormal3fVertex3fSUN glad_glReplacementCodeuiNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiNormal3fVertex3fvSUN; +#define glReplacementCodeuiNormal3fVertex3fvSUN glad_glReplacementCodeuiNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN; +#define glReplacementCodeuiColor4fNormal3fVertex3fSUN glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; +#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fSUN; +#define glReplacementCodeuiTexCoord2fVertex3fSUN glad_glReplacementCodeuiTexCoord2fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *tc, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fvSUN; +#define glReplacementCodeuiTexCoord2fVertex3fvSUN glad_glReplacementCodeuiTexCoord2fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN +#endif +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +GLAPI int GLAD_GL_WIN_phong_shading; +#endif +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +GLAPI int GLAD_GL_WIN_specular_fog; +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/glad/src/glad.c b/src/glad/src/glad.c new file mode 100644 index 0000000..1bf442b --- /dev/null +++ b/src/glad/src/glad.c @@ -0,0 +1,9098 @@ +/* + + OpenGL loader generated by glad 0.1.33 on Sat Apr 4 06:11:30 2020. + + Language/Generator: C/C++ + Specification: gl + APIs: gl=4.1 + Profile: core + Extensions: + GL_3DFX_multisample, + GL_3DFX_tbuffer, + GL_3DFX_texture_compression_FXT1, + GL_AMD_blend_minmax_factor, + GL_AMD_conservative_depth, + GL_AMD_debug_output, + GL_AMD_depth_clamp_separate, + GL_AMD_draw_buffers_blend, + GL_AMD_framebuffer_multisample_advanced, + GL_AMD_framebuffer_sample_positions, + GL_AMD_gcn_shader, + GL_AMD_gpu_shader_half_float, + GL_AMD_gpu_shader_int16, + GL_AMD_gpu_shader_int64, + GL_AMD_interleaved_elements, + GL_AMD_multi_draw_indirect, + GL_AMD_name_gen_delete, + GL_AMD_occlusion_query_event, + GL_AMD_performance_monitor, + GL_AMD_pinned_memory, + GL_AMD_query_buffer_object, + GL_AMD_sample_positions, + GL_AMD_seamless_cubemap_per_texture, + GL_AMD_shader_atomic_counter_ops, + GL_AMD_shader_ballot, + GL_AMD_shader_explicit_vertex_parameter, + GL_AMD_shader_gpu_shader_half_float_fetch, + GL_AMD_shader_image_load_store_lod, + GL_AMD_shader_stencil_export, + GL_AMD_shader_trinary_minmax, + GL_AMD_sparse_texture, + GL_AMD_stencil_operation_extended, + GL_AMD_texture_gather_bias_lod, + GL_AMD_texture_texture4, + GL_AMD_transform_feedback3_lines_triangles, + GL_AMD_transform_feedback4, + GL_AMD_vertex_shader_layer, + GL_AMD_vertex_shader_tessellator, + GL_AMD_vertex_shader_viewport_index, + GL_APPLE_aux_depth_stencil, + GL_APPLE_client_storage, + GL_APPLE_element_array, + GL_APPLE_fence, + GL_APPLE_float_pixels, + GL_APPLE_flush_buffer_range, + GL_APPLE_object_purgeable, + GL_APPLE_rgb_422, + GL_APPLE_row_bytes, + GL_APPLE_specular_vector, + GL_APPLE_texture_range, + GL_APPLE_transform_hint, + GL_APPLE_vertex_array_object, + GL_APPLE_vertex_array_range, + GL_APPLE_vertex_program_evaluators, + GL_APPLE_ycbcr_422, + GL_ARB_ES2_compatibility, + GL_ARB_ES3_1_compatibility, + GL_ARB_ES3_2_compatibility, + GL_ARB_ES3_compatibility, + GL_ARB_arrays_of_arrays, + GL_ARB_base_instance, + GL_ARB_bindless_texture, + GL_ARB_blend_func_extended, + GL_ARB_buffer_storage, + GL_ARB_cl_event, + GL_ARB_clear_buffer_object, + GL_ARB_clear_texture, + GL_ARB_clip_control, + GL_ARB_color_buffer_float, + GL_ARB_compatibility, + GL_ARB_compressed_texture_pixel_storage, + GL_ARB_compute_shader, + GL_ARB_compute_variable_group_size, + GL_ARB_conditional_render_inverted, + GL_ARB_conservative_depth, + GL_ARB_copy_buffer, + GL_ARB_copy_image, + GL_ARB_cull_distance, + GL_ARB_debug_output, + GL_ARB_depth_buffer_float, + GL_ARB_depth_clamp, + GL_ARB_depth_texture, + GL_ARB_derivative_control, + GL_ARB_direct_state_access, + GL_ARB_draw_buffers, + GL_ARB_draw_buffers_blend, + GL_ARB_draw_elements_base_vertex, + GL_ARB_draw_indirect, + GL_ARB_draw_instanced, + GL_ARB_enhanced_layouts, + GL_ARB_explicit_attrib_location, + GL_ARB_explicit_uniform_location, + GL_ARB_fragment_coord_conventions, + GL_ARB_fragment_layer_viewport, + GL_ARB_fragment_program, + GL_ARB_fragment_program_shadow, + GL_ARB_fragment_shader, + GL_ARB_fragment_shader_interlock, + GL_ARB_framebuffer_no_attachments, + GL_ARB_framebuffer_object, + GL_ARB_framebuffer_sRGB, + GL_ARB_geometry_shader4, + GL_ARB_get_program_binary, + GL_ARB_get_texture_sub_image, + GL_ARB_gl_spirv, + GL_ARB_gpu_shader5, + GL_ARB_gpu_shader_fp64, + GL_ARB_gpu_shader_int64, + GL_ARB_half_float_pixel, + GL_ARB_half_float_vertex, + GL_ARB_imaging, + GL_ARB_indirect_parameters, + GL_ARB_instanced_arrays, + GL_ARB_internalformat_query, + GL_ARB_internalformat_query2, + GL_ARB_invalidate_subdata, + GL_ARB_map_buffer_alignment, + GL_ARB_map_buffer_range, + GL_ARB_matrix_palette, + GL_ARB_multi_bind, + GL_ARB_multi_draw_indirect, + GL_ARB_multisample, + GL_ARB_multitexture, + GL_ARB_occlusion_query, + GL_ARB_occlusion_query2, + GL_ARB_parallel_shader_compile, + GL_ARB_pipeline_statistics_query, + GL_ARB_pixel_buffer_object, + GL_ARB_point_parameters, + GL_ARB_point_sprite, + GL_ARB_polygon_offset_clamp, + GL_ARB_post_depth_coverage, + GL_ARB_program_interface_query, + GL_ARB_provoking_vertex, + GL_ARB_query_buffer_object, + GL_ARB_robust_buffer_access_behavior, + GL_ARB_robustness, + GL_ARB_robustness_isolation, + GL_ARB_sample_locations, + GL_ARB_sample_shading, + GL_ARB_sampler_objects, + GL_ARB_seamless_cube_map, + GL_ARB_seamless_cubemap_per_texture, + GL_ARB_separate_shader_objects, + GL_ARB_shader_atomic_counter_ops, + GL_ARB_shader_atomic_counters, + GL_ARB_shader_ballot, + GL_ARB_shader_bit_encoding, + GL_ARB_shader_clock, + GL_ARB_shader_draw_parameters, + GL_ARB_shader_group_vote, + GL_ARB_shader_image_load_store, + GL_ARB_shader_image_size, + GL_ARB_shader_objects, + GL_ARB_shader_precision, + GL_ARB_shader_stencil_export, + GL_ARB_shader_storage_buffer_object, + GL_ARB_shader_subroutine, + GL_ARB_shader_texture_image_samples, + GL_ARB_shader_texture_lod, + GL_ARB_shader_viewport_layer_array, + GL_ARB_shading_language_100, + GL_ARB_shading_language_420pack, + GL_ARB_shading_language_include, + GL_ARB_shading_language_packing, + GL_ARB_shadow, + GL_ARB_shadow_ambient, + GL_ARB_sparse_buffer, + GL_ARB_sparse_texture, + GL_ARB_sparse_texture2, + GL_ARB_sparse_texture_clamp, + GL_ARB_spirv_extensions, + GL_ARB_stencil_texturing, + GL_ARB_sync, + GL_ARB_tessellation_shader, + GL_ARB_texture_barrier, + GL_ARB_texture_border_clamp, + GL_ARB_texture_buffer_object, + GL_ARB_texture_buffer_object_rgb32, + GL_ARB_texture_buffer_range, + GL_ARB_texture_compression, + GL_ARB_texture_compression_bptc, + GL_ARB_texture_compression_rgtc, + GL_ARB_texture_cube_map, + GL_ARB_texture_cube_map_array, + GL_ARB_texture_env_add, + GL_ARB_texture_env_combine, + GL_ARB_texture_env_crossbar, + GL_ARB_texture_env_dot3, + GL_ARB_texture_filter_anisotropic, + GL_ARB_texture_filter_minmax, + GL_ARB_texture_float, + GL_ARB_texture_gather, + GL_ARB_texture_mirror_clamp_to_edge, + GL_ARB_texture_mirrored_repeat, + GL_ARB_texture_multisample, + GL_ARB_texture_non_power_of_two, + GL_ARB_texture_query_levels, + GL_ARB_texture_query_lod, + GL_ARB_texture_rectangle, + GL_ARB_texture_rg, + GL_ARB_texture_rgb10_a2ui, + GL_ARB_texture_stencil8, + GL_ARB_texture_storage, + GL_ARB_texture_storage_multisample, + GL_ARB_texture_swizzle, + GL_ARB_texture_view, + GL_ARB_timer_query, + GL_ARB_transform_feedback2, + GL_ARB_transform_feedback3, + GL_ARB_transform_feedback_instanced, + GL_ARB_transform_feedback_overflow_query, + GL_ARB_transpose_matrix, + GL_ARB_uniform_buffer_object, + GL_ARB_vertex_array_bgra, + GL_ARB_vertex_array_object, + GL_ARB_vertex_attrib_64bit, + GL_ARB_vertex_attrib_binding, + GL_ARB_vertex_blend, + GL_ARB_vertex_buffer_object, + GL_ARB_vertex_program, + GL_ARB_vertex_shader, + GL_ARB_vertex_type_10f_11f_11f_rev, + GL_ARB_vertex_type_2_10_10_10_rev, + GL_ARB_viewport_array, + GL_ARB_window_pos, + GL_ATI_draw_buffers, + GL_ATI_element_array, + GL_ATI_envmap_bumpmap, + GL_ATI_fragment_shader, + GL_ATI_map_object_buffer, + GL_ATI_meminfo, + GL_ATI_pixel_format_float, + GL_ATI_pn_triangles, + GL_ATI_separate_stencil, + GL_ATI_text_fragment_shader, + GL_ATI_texture_env_combine3, + GL_ATI_texture_float, + GL_ATI_texture_mirror_once, + GL_ATI_vertex_array_object, + GL_ATI_vertex_attrib_array_object, + GL_ATI_vertex_streams, + GL_EXT_422_pixels, + GL_EXT_EGL_image_storage, + GL_EXT_EGL_sync, + GL_EXT_abgr, + GL_EXT_bgra, + GL_EXT_bindable_uniform, + GL_EXT_blend_color, + GL_EXT_blend_equation_separate, + GL_EXT_blend_func_separate, + GL_EXT_blend_logic_op, + GL_EXT_blend_minmax, + GL_EXT_blend_subtract, + GL_EXT_clip_volume_hint, + GL_EXT_cmyka, + GL_EXT_color_subtable, + GL_EXT_compiled_vertex_array, + GL_EXT_convolution, + GL_EXT_coordinate_frame, + GL_EXT_copy_texture, + GL_EXT_cull_vertex, + GL_EXT_debug_label, + GL_EXT_debug_marker, + GL_EXT_depth_bounds_test, + GL_EXT_direct_state_access, + GL_EXT_draw_buffers2, + GL_EXT_draw_instanced, + GL_EXT_draw_range_elements, + GL_EXT_external_buffer, + GL_EXT_fog_coord, + GL_EXT_framebuffer_blit, + GL_EXT_framebuffer_multisample, + GL_EXT_framebuffer_multisample_blit_scaled, + GL_EXT_framebuffer_object, + GL_EXT_framebuffer_sRGB, + GL_EXT_geometry_shader4, + GL_EXT_gpu_program_parameters, + GL_EXT_gpu_shader4, + GL_EXT_histogram, + GL_EXT_index_array_formats, + GL_EXT_index_func, + GL_EXT_index_material, + GL_EXT_index_texture, + GL_EXT_light_texture, + GL_EXT_memory_object, + GL_EXT_memory_object_fd, + GL_EXT_memory_object_win32, + GL_EXT_misc_attribute, + GL_EXT_multi_draw_arrays, + GL_EXT_multisample, + GL_EXT_multiview_tessellation_geometry_shader, + GL_EXT_multiview_texture_multisample, + GL_EXT_multiview_timer_query, + GL_EXT_packed_depth_stencil, + GL_EXT_packed_float, + GL_EXT_packed_pixels, + GL_EXT_paletted_texture, + GL_EXT_pixel_buffer_object, + GL_EXT_pixel_transform, + GL_EXT_pixel_transform_color_table, + GL_EXT_point_parameters, + GL_EXT_polygon_offset, + GL_EXT_polygon_offset_clamp, + GL_EXT_post_depth_coverage, + GL_EXT_provoking_vertex, + GL_EXT_raster_multisample, + GL_EXT_rescale_normal, + GL_EXT_secondary_color, + GL_EXT_semaphore, + GL_EXT_semaphore_fd, + GL_EXT_semaphore_win32, + GL_EXT_separate_shader_objects, + GL_EXT_separate_specular_color, + GL_EXT_shader_framebuffer_fetch, + GL_EXT_shader_framebuffer_fetch_non_coherent, + GL_EXT_shader_image_load_formatted, + GL_EXT_shader_image_load_store, + GL_EXT_shader_integer_mix, + GL_EXT_shadow_funcs, + GL_EXT_shared_texture_palette, + GL_EXT_sparse_texture2, + GL_EXT_stencil_clear_tag, + GL_EXT_stencil_two_side, + GL_EXT_stencil_wrap, + GL_EXT_subtexture, + GL_EXT_texture, + GL_EXT_texture3D, + GL_EXT_texture_array, + GL_EXT_texture_buffer_object, + GL_EXT_texture_compression_latc, + GL_EXT_texture_compression_rgtc, + GL_EXT_texture_compression_s3tc, + GL_EXT_texture_cube_map, + GL_EXT_texture_env_add, + GL_EXT_texture_env_combine, + GL_EXT_texture_env_dot3, + GL_EXT_texture_filter_anisotropic, + GL_EXT_texture_filter_minmax, + GL_EXT_texture_integer, + GL_EXT_texture_lod_bias, + GL_EXT_texture_mirror_clamp, + GL_EXT_texture_object, + GL_EXT_texture_perturb_normal, + GL_EXT_texture_sRGB, + GL_EXT_texture_sRGB_R8, + GL_EXT_texture_sRGB_decode, + GL_EXT_texture_shadow_lod, + GL_EXT_texture_shared_exponent, + GL_EXT_texture_snorm, + GL_EXT_texture_swizzle, + GL_EXT_timer_query, + GL_EXT_transform_feedback, + GL_EXT_vertex_array, + GL_EXT_vertex_array_bgra, + GL_EXT_vertex_attrib_64bit, + GL_EXT_vertex_shader, + GL_EXT_vertex_weighting, + GL_EXT_win32_keyed_mutex, + GL_EXT_window_rectangles, + GL_EXT_x11_sync_object, + GL_GREMEDY_frame_terminator, + GL_GREMEDY_string_marker, + GL_HP_convolution_border_modes, + GL_HP_image_transform, + GL_HP_occlusion_test, + GL_HP_texture_lighting, + GL_IBM_cull_vertex, + GL_IBM_multimode_draw_arrays, + GL_IBM_rasterpos_clip, + GL_IBM_static_data, + GL_IBM_texture_mirrored_repeat, + GL_IBM_vertex_array_lists, + GL_INGR_blend_func_separate, + GL_INGR_color_clamp, + GL_INGR_interlace_read, + GL_INTEL_blackhole_render, + GL_INTEL_conservative_rasterization, + GL_INTEL_fragment_shader_ordering, + GL_INTEL_framebuffer_CMAA, + GL_INTEL_map_texture, + GL_INTEL_parallel_arrays, + GL_INTEL_performance_query, + GL_KHR_blend_equation_advanced, + GL_KHR_blend_equation_advanced_coherent, + GL_KHR_context_flush_control, + GL_KHR_debug, + GL_KHR_no_error, + GL_KHR_parallel_shader_compile, + GL_KHR_robust_buffer_access_behavior, + GL_KHR_robustness, + GL_KHR_shader_subgroup, + GL_KHR_texture_compression_astc_hdr, + GL_KHR_texture_compression_astc_ldr, + GL_KHR_texture_compression_astc_sliced_3d, + GL_MESAX_texture_stack, + GL_MESA_framebuffer_flip_y, + GL_MESA_pack_invert, + GL_MESA_program_binary_formats, + GL_MESA_resize_buffers, + GL_MESA_shader_integer_functions, + GL_MESA_tile_raster_order, + GL_MESA_window_pos, + GL_MESA_ycbcr_texture, + GL_NVX_blend_equation_advanced_multi_draw_buffers, + GL_NVX_conditional_render, + GL_NVX_gpu_memory_info, + GL_NVX_gpu_multicast2, + GL_NVX_linked_gpu_multicast, + GL_NVX_progress_fence, + GL_NV_alpha_to_coverage_dither_control, + GL_NV_bindless_multi_draw_indirect, + GL_NV_bindless_multi_draw_indirect_count, + GL_NV_bindless_texture, + GL_NV_blend_equation_advanced, + GL_NV_blend_equation_advanced_coherent, + GL_NV_blend_minmax_factor, + GL_NV_blend_square, + GL_NV_clip_space_w_scaling, + GL_NV_command_list, + GL_NV_compute_program5, + GL_NV_compute_shader_derivatives, + GL_NV_conditional_render, + GL_NV_conservative_raster, + GL_NV_conservative_raster_dilate, + GL_NV_conservative_raster_pre_snap, + GL_NV_conservative_raster_pre_snap_triangles, + GL_NV_conservative_raster_underestimation, + GL_NV_copy_depth_to_color, + GL_NV_copy_image, + GL_NV_deep_texture3D, + GL_NV_depth_buffer_float, + GL_NV_depth_clamp, + GL_NV_draw_texture, + GL_NV_draw_vulkan_image, + GL_NV_evaluators, + GL_NV_explicit_multisample, + GL_NV_fence, + GL_NV_fill_rectangle, + GL_NV_float_buffer, + GL_NV_fog_distance, + GL_NV_fragment_coverage_to_color, + GL_NV_fragment_program, + GL_NV_fragment_program2, + GL_NV_fragment_program4, + GL_NV_fragment_program_option, + GL_NV_fragment_shader_barycentric, + GL_NV_fragment_shader_interlock, + GL_NV_framebuffer_mixed_samples, + GL_NV_framebuffer_multisample_coverage, + GL_NV_geometry_program4, + GL_NV_geometry_shader4, + GL_NV_geometry_shader_passthrough, + GL_NV_gpu_multicast, + GL_NV_gpu_program4, + GL_NV_gpu_program5, + GL_NV_gpu_program5_mem_extended, + GL_NV_gpu_shader5, + GL_NV_half_float, + GL_NV_internalformat_sample_query, + GL_NV_light_max_exponent, + GL_NV_memory_attachment, + GL_NV_mesh_shader, + GL_NV_multisample_coverage, + GL_NV_multisample_filter_hint, + GL_NV_occlusion_query, + GL_NV_packed_depth_stencil, + GL_NV_parameter_buffer_object, + GL_NV_parameter_buffer_object2, + GL_NV_path_rendering, + GL_NV_path_rendering_shared_edge, + GL_NV_pixel_data_range, + GL_NV_point_sprite, + GL_NV_present_video, + GL_NV_primitive_restart, + GL_NV_query_resource, + GL_NV_query_resource_tag, + GL_NV_register_combiners, + GL_NV_register_combiners2, + GL_NV_representative_fragment_test, + GL_NV_robustness_video_memory_purge, + GL_NV_sample_locations, + GL_NV_sample_mask_override_coverage, + GL_NV_scissor_exclusive, + GL_NV_shader_atomic_counters, + GL_NV_shader_atomic_float, + GL_NV_shader_atomic_float64, + GL_NV_shader_atomic_fp16_vector, + GL_NV_shader_atomic_int64, + GL_NV_shader_buffer_load, + GL_NV_shader_buffer_store, + GL_NV_shader_storage_buffer_object, + GL_NV_shader_subgroup_partitioned, + GL_NV_shader_texture_footprint, + GL_NV_shader_thread_group, + GL_NV_shader_thread_shuffle, + GL_NV_shading_rate_image, + GL_NV_stereo_view_rendering, + GL_NV_tessellation_program5, + GL_NV_texgen_emboss, + GL_NV_texgen_reflection, + GL_NV_texture_barrier, + GL_NV_texture_compression_vtc, + GL_NV_texture_env_combine4, + GL_NV_texture_expand_normal, + GL_NV_texture_multisample, + GL_NV_texture_rectangle, + GL_NV_texture_rectangle_compressed, + GL_NV_texture_shader, + GL_NV_texture_shader2, + GL_NV_texture_shader3, + GL_NV_transform_feedback, + GL_NV_transform_feedback2, + GL_NV_uniform_buffer_unified_memory, + GL_NV_vdpau_interop, + GL_NV_vdpau_interop2, + GL_NV_vertex_array_range, + GL_NV_vertex_array_range2, + GL_NV_vertex_attrib_integer_64bit, + GL_NV_vertex_buffer_unified_memory, + GL_NV_vertex_program, + GL_NV_vertex_program1_1, + GL_NV_vertex_program2, + GL_NV_vertex_program2_option, + GL_NV_vertex_program3, + GL_NV_vertex_program4, + GL_NV_video_capture, + GL_NV_viewport_array2, + GL_NV_viewport_swizzle, + GL_OES_byte_coordinates, + GL_OES_compressed_paletted_texture, + GL_OES_fixed_point, + GL_OES_query_matrix, + GL_OES_read_format, + GL_OES_single_precision, + GL_OML_interlace, + GL_OML_resample, + GL_OML_subsample, + GL_OVR_multiview, + GL_OVR_multiview2, + GL_PGI_misc_hints, + GL_PGI_vertex_hints, + GL_REND_screen_coordinates, + GL_S3_s3tc, + GL_SGIS_detail_texture, + GL_SGIS_fog_function, + GL_SGIS_generate_mipmap, + GL_SGIS_multisample, + GL_SGIS_pixel_texture, + GL_SGIS_point_line_texgen, + GL_SGIS_point_parameters, + GL_SGIS_sharpen_texture, + GL_SGIS_texture4D, + GL_SGIS_texture_border_clamp, + GL_SGIS_texture_color_mask, + GL_SGIS_texture_edge_clamp, + GL_SGIS_texture_filter4, + GL_SGIS_texture_lod, + GL_SGIS_texture_select, + GL_SGIX_async, + GL_SGIX_async_histogram, + GL_SGIX_async_pixel, + GL_SGIX_blend_alpha_minmax, + GL_SGIX_calligraphic_fragment, + GL_SGIX_clipmap, + GL_SGIX_convolution_accuracy, + GL_SGIX_depth_pass_instrument, + GL_SGIX_depth_texture, + GL_SGIX_flush_raster, + GL_SGIX_fog_offset, + GL_SGIX_fragment_lighting, + GL_SGIX_framezoom, + GL_SGIX_igloo_interface, + GL_SGIX_instruments, + GL_SGIX_interlace, + GL_SGIX_ir_instrument1, + GL_SGIX_list_priority, + GL_SGIX_pixel_texture, + GL_SGIX_pixel_tiles, + GL_SGIX_polynomial_ffd, + GL_SGIX_reference_plane, + GL_SGIX_resample, + GL_SGIX_scalebias_hint, + GL_SGIX_shadow, + GL_SGIX_shadow_ambient, + GL_SGIX_sprite, + GL_SGIX_subsample, + GL_SGIX_tag_sample_buffer, + GL_SGIX_texture_add_env, + GL_SGIX_texture_coordinate_clamp, + GL_SGIX_texture_lod_bias, + GL_SGIX_texture_multi_buffer, + GL_SGIX_texture_scale_bias, + GL_SGIX_vertex_preclip, + GL_SGIX_ycrcb, + GL_SGIX_ycrcb_subsample, + GL_SGIX_ycrcba, + GL_SGI_color_matrix, + GL_SGI_color_table, + GL_SGI_texture_color_table, + GL_SUNX_constant_data, + GL_SUN_convolution_border_modes, + GL_SUN_global_alpha, + GL_SUN_mesh_array, + GL_SUN_slice_accum, + GL_SUN_triangle_list, + GL_SUN_vertex, + GL_WIN_phong_shading, + GL_WIN_specular_fog + Loader: True + Local files: False + Omit khrplatform: False + Reproducible: False + + Commandline: + --profile="core" --api="gl=4.1" --generator="c" --spec="gl" --extensions="GL_3DFX_multisample,GL_3DFX_tbuffer,GL_3DFX_texture_compression_FXT1,GL_AMD_blend_minmax_factor,GL_AMD_conservative_depth,GL_AMD_debug_output,GL_AMD_depth_clamp_separate,GL_AMD_draw_buffers_blend,GL_AMD_framebuffer_multisample_advanced,GL_AMD_framebuffer_sample_positions,GL_AMD_gcn_shader,GL_AMD_gpu_shader_half_float,GL_AMD_gpu_shader_int16,GL_AMD_gpu_shader_int64,GL_AMD_interleaved_elements,GL_AMD_multi_draw_indirect,GL_AMD_name_gen_delete,GL_AMD_occlusion_query_event,GL_AMD_performance_monitor,GL_AMD_pinned_memory,GL_AMD_query_buffer_object,GL_AMD_sample_positions,GL_AMD_seamless_cubemap_per_texture,GL_AMD_shader_atomic_counter_ops,GL_AMD_shader_ballot,GL_AMD_shader_explicit_vertex_parameter,GL_AMD_shader_gpu_shader_half_float_fetch,GL_AMD_shader_image_load_store_lod,GL_AMD_shader_stencil_export,GL_AMD_shader_trinary_minmax,GL_AMD_sparse_texture,GL_AMD_stencil_operation_extended,GL_AMD_texture_gather_bias_lod,GL_AMD_texture_texture4,GL_AMD_transform_feedback3_lines_triangles,GL_AMD_transform_feedback4,GL_AMD_vertex_shader_layer,GL_AMD_vertex_shader_tessellator,GL_AMD_vertex_shader_viewport_index,GL_APPLE_aux_depth_stencil,GL_APPLE_client_storage,GL_APPLE_element_array,GL_APPLE_fence,GL_APPLE_float_pixels,GL_APPLE_flush_buffer_range,GL_APPLE_object_purgeable,GL_APPLE_rgb_422,GL_APPLE_row_bytes,GL_APPLE_specular_vector,GL_APPLE_texture_range,GL_APPLE_transform_hint,GL_APPLE_vertex_array_object,GL_APPLE_vertex_array_range,GL_APPLE_vertex_program_evaluators,GL_APPLE_ycbcr_422,GL_ARB_ES2_compatibility,GL_ARB_ES3_1_compatibility,GL_ARB_ES3_2_compatibility,GL_ARB_ES3_compatibility,GL_ARB_arrays_of_arrays,GL_ARB_base_instance,GL_ARB_bindless_texture,GL_ARB_blend_func_extended,GL_ARB_buffer_storage,GL_ARB_cl_event,GL_ARB_clear_buffer_object,GL_ARB_clear_texture,GL_ARB_clip_control,GL_ARB_color_buffer_float,GL_ARB_compatibility,GL_ARB_compressed_texture_pixel_storage,GL_ARB_compute_shader,GL_ARB_compute_variable_group_size,GL_ARB_conditional_render_inverted,GL_ARB_conservative_depth,GL_ARB_copy_buffer,GL_ARB_copy_image,GL_ARB_cull_distance,GL_ARB_debug_output,GL_ARB_depth_buffer_float,GL_ARB_depth_clamp,GL_ARB_depth_texture,GL_ARB_derivative_control,GL_ARB_direct_state_access,GL_ARB_draw_buffers,GL_ARB_draw_buffers_blend,GL_ARB_draw_elements_base_vertex,GL_ARB_draw_indirect,GL_ARB_draw_instanced,GL_ARB_enhanced_layouts,GL_ARB_explicit_attrib_location,GL_ARB_explicit_uniform_location,GL_ARB_fragment_coord_conventions,GL_ARB_fragment_layer_viewport,GL_ARB_fragment_program,GL_ARB_fragment_program_shadow,GL_ARB_fragment_shader,GL_ARB_fragment_shader_interlock,GL_ARB_framebuffer_no_attachments,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_get_program_binary,GL_ARB_get_texture_sub_image,GL_ARB_gl_spirv,GL_ARB_gpu_shader5,GL_ARB_gpu_shader_fp64,GL_ARB_gpu_shader_int64,GL_ARB_half_float_pixel,GL_ARB_half_float_vertex,GL_ARB_imaging,GL_ARB_indirect_parameters,GL_ARB_instanced_arrays,GL_ARB_internalformat_query,GL_ARB_internalformat_query2,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_alignment,GL_ARB_map_buffer_range,GL_ARB_matrix_palette,GL_ARB_multi_bind,GL_ARB_multi_draw_indirect,GL_ARB_multisample,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_occlusion_query2,GL_ARB_parallel_shader_compile,GL_ARB_pipeline_statistics_query,GL_ARB_pixel_buffer_object,GL_ARB_point_parameters,GL_ARB_point_sprite,GL_ARB_polygon_offset_clamp,GL_ARB_post_depth_coverage,GL_ARB_program_interface_query,GL_ARB_provoking_vertex,GL_ARB_query_buffer_object,GL_ARB_robust_buffer_access_behavior,GL_ARB_robustness,GL_ARB_robustness_isolation,GL_ARB_sample_locations,GL_ARB_sample_shading,GL_ARB_sampler_objects,GL_ARB_seamless_cube_map,GL_ARB_seamless_cubemap_per_texture,GL_ARB_separate_shader_objects,GL_ARB_shader_atomic_counter_ops,GL_ARB_shader_atomic_counters,GL_ARB_shader_ballot,GL_ARB_shader_bit_encoding,GL_ARB_shader_clock,GL_ARB_shader_draw_parameters,GL_ARB_shader_group_vote,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_precision,GL_ARB_shader_stencil_export,GL_ARB_shader_storage_buffer_object,GL_ARB_shader_subroutine,GL_ARB_shader_texture_image_samples,GL_ARB_shader_texture_lod,GL_ARB_shader_viewport_layer_array,GL_ARB_shading_language_100,GL_ARB_shading_language_420pack,GL_ARB_shading_language_include,GL_ARB_shading_language_packing,GL_ARB_shadow,GL_ARB_shadow_ambient,GL_ARB_sparse_buffer,GL_ARB_sparse_texture,GL_ARB_sparse_texture2,GL_ARB_sparse_texture_clamp,GL_ARB_spirv_extensions,GL_ARB_stencil_texturing,GL_ARB_sync,GL_ARB_tessellation_shader,GL_ARB_texture_barrier,GL_ARB_texture_border_clamp,GL_ARB_texture_buffer_object,GL_ARB_texture_buffer_object_rgb32,GL_ARB_texture_buffer_range,GL_ARB_texture_compression,GL_ARB_texture_compression_bptc,GL_ARB_texture_compression_rgtc,GL_ARB_texture_cube_map,GL_ARB_texture_cube_map_array,GL_ARB_texture_env_add,GL_ARB_texture_env_combine,GL_ARB_texture_env_crossbar,GL_ARB_texture_env_dot3,GL_ARB_texture_filter_anisotropic,GL_ARB_texture_filter_minmax,GL_ARB_texture_float,GL_ARB_texture_gather,GL_ARB_texture_mirror_clamp_to_edge,GL_ARB_texture_mirrored_repeat,GL_ARB_texture_multisample,GL_ARB_texture_non_power_of_two,GL_ARB_texture_query_levels,GL_ARB_texture_query_lod,GL_ARB_texture_rectangle,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_texture_stencil8,GL_ARB_texture_storage,GL_ARB_texture_storage_multisample,GL_ARB_texture_swizzle,GL_ARB_texture_view,GL_ARB_timer_query,GL_ARB_transform_feedback2,GL_ARB_transform_feedback3,GL_ARB_transform_feedback_instanced,GL_ARB_transform_feedback_overflow_query,GL_ARB_transpose_matrix,GL_ARB_uniform_buffer_object,GL_ARB_vertex_array_bgra,GL_ARB_vertex_array_object,GL_ARB_vertex_attrib_64bit,GL_ARB_vertex_attrib_binding,GL_ARB_vertex_blend,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_10f_11f_11f_rev,GL_ARB_vertex_type_2_10_10_10_rev,GL_ARB_viewport_array,GL_ARB_window_pos,GL_ATI_draw_buffers,GL_ATI_element_array,GL_ATI_envmap_bumpmap,GL_ATI_fragment_shader,GL_ATI_map_object_buffer,GL_ATI_meminfo,GL_ATI_pixel_format_float,GL_ATI_pn_triangles,GL_ATI_separate_stencil,GL_ATI_text_fragment_shader,GL_ATI_texture_env_combine3,GL_ATI_texture_float,GL_ATI_texture_mirror_once,GL_ATI_vertex_array_object,GL_ATI_vertex_attrib_array_object,GL_ATI_vertex_streams,GL_EXT_422_pixels,GL_EXT_EGL_image_storage,GL_EXT_EGL_sync,GL_EXT_abgr,GL_EXT_bgra,GL_EXT_bindable_uniform,GL_EXT_blend_color,GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate,GL_EXT_blend_logic_op,GL_EXT_blend_minmax,GL_EXT_blend_subtract,GL_EXT_clip_volume_hint,GL_EXT_cmyka,GL_EXT_color_subtable,GL_EXT_compiled_vertex_array,GL_EXT_convolution,GL_EXT_coordinate_frame,GL_EXT_copy_texture,GL_EXT_cull_vertex,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_bounds_test,GL_EXT_direct_state_access,GL_EXT_draw_buffers2,GL_EXT_draw_instanced,GL_EXT_draw_range_elements,GL_EXT_external_buffer,GL_EXT_fog_coord,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_program_parameters,GL_EXT_gpu_shader4,GL_EXT_histogram,GL_EXT_index_array_formats,GL_EXT_index_func,GL_EXT_index_material,GL_EXT_index_texture,GL_EXT_light_texture,GL_EXT_memory_object,GL_EXT_memory_object_fd,GL_EXT_memory_object_win32,GL_EXT_misc_attribute,GL_EXT_multi_draw_arrays,GL_EXT_multisample,GL_EXT_multiview_tessellation_geometry_shader,GL_EXT_multiview_texture_multisample,GL_EXT_multiview_timer_query,GL_EXT_packed_depth_stencil,GL_EXT_packed_float,GL_EXT_packed_pixels,GL_EXT_paletted_texture,GL_EXT_pixel_buffer_object,GL_EXT_pixel_transform,GL_EXT_pixel_transform_color_table,GL_EXT_point_parameters,GL_EXT_polygon_offset,GL_EXT_polygon_offset_clamp,GL_EXT_post_depth_coverage,GL_EXT_provoking_vertex,GL_EXT_raster_multisample,GL_EXT_rescale_normal,GL_EXT_secondary_color,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_semaphore_win32,GL_EXT_separate_shader_objects,GL_EXT_separate_specular_color,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_image_load_formatted,GL_EXT_shader_image_load_store,GL_EXT_shader_integer_mix,GL_EXT_shadow_funcs,GL_EXT_shared_texture_palette,GL_EXT_sparse_texture2,GL_EXT_stencil_clear_tag,GL_EXT_stencil_two_side,GL_EXT_stencil_wrap,GL_EXT_subtexture,GL_EXT_texture,GL_EXT_texture3D,GL_EXT_texture_array,GL_EXT_texture_buffer_object,GL_EXT_texture_compression_latc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_cube_map,GL_EXT_texture_env_add,GL_EXT_texture_env_combine,GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_filter_minmax,GL_EXT_texture_integer,GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp,GL_EXT_texture_object,GL_EXT_texture_perturb_normal,GL_EXT_texture_sRGB,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_shared_exponent,GL_EXT_texture_snorm,GL_EXT_texture_swizzle,GL_EXT_timer_query,GL_EXT_transform_feedback,GL_EXT_vertex_array,GL_EXT_vertex_array_bgra,GL_EXT_vertex_attrib_64bit,GL_EXT_vertex_shader,GL_EXT_vertex_weighting,GL_EXT_win32_keyed_mutex,GL_EXT_window_rectangles,GL_EXT_x11_sync_object,GL_GREMEDY_frame_terminator,GL_GREMEDY_string_marker,GL_HP_convolution_border_modes,GL_HP_image_transform,GL_HP_occlusion_test,GL_HP_texture_lighting,GL_IBM_cull_vertex,GL_IBM_multimode_draw_arrays,GL_IBM_rasterpos_clip,GL_IBM_static_data,GL_IBM_texture_mirrored_repeat,GL_IBM_vertex_array_lists,GL_INGR_blend_func_separate,GL_INGR_color_clamp,GL_INGR_interlace_read,GL_INTEL_blackhole_render,GL_INTEL_conservative_rasterization,GL_INTEL_fragment_shader_ordering,GL_INTEL_framebuffer_CMAA,GL_INTEL_map_texture,GL_INTEL_parallel_arrays,GL_INTEL_performance_query,GL_KHR_blend_equation_advanced,GL_KHR_blend_equation_advanced_coherent,GL_KHR_context_flush_control,GL_KHR_debug,GL_KHR_no_error,GL_KHR_parallel_shader_compile,GL_KHR_robust_buffer_access_behavior,GL_KHR_robustness,GL_KHR_shader_subgroup,GL_KHR_texture_compression_astc_hdr,GL_KHR_texture_compression_astc_ldr,GL_KHR_texture_compression_astc_sliced_3d,GL_MESAX_texture_stack,GL_MESA_framebuffer_flip_y,GL_MESA_pack_invert,GL_MESA_program_binary_formats,GL_MESA_resize_buffers,GL_MESA_shader_integer_functions,GL_MESA_tile_raster_order,GL_MESA_window_pos,GL_MESA_ycbcr_texture,GL_NVX_blend_equation_advanced_multi_draw_buffers,GL_NVX_conditional_render,GL_NVX_gpu_memory_info,GL_NVX_gpu_multicast2,GL_NVX_linked_gpu_multicast,GL_NVX_progress_fence,GL_NV_alpha_to_coverage_dither_control,GL_NV_bindless_multi_draw_indirect,GL_NV_bindless_multi_draw_indirect_count,GL_NV_bindless_texture,GL_NV_blend_equation_advanced,GL_NV_blend_equation_advanced_coherent,GL_NV_blend_minmax_factor,GL_NV_blend_square,GL_NV_clip_space_w_scaling,GL_NV_command_list,GL_NV_compute_program5,GL_NV_compute_shader_derivatives,GL_NV_conditional_render,GL_NV_conservative_raster,GL_NV_conservative_raster_dilate,GL_NV_conservative_raster_pre_snap,GL_NV_conservative_raster_pre_snap_triangles,GL_NV_conservative_raster_underestimation,GL_NV_copy_depth_to_color,GL_NV_copy_image,GL_NV_deep_texture3D,GL_NV_depth_buffer_float,GL_NV_depth_clamp,GL_NV_draw_texture,GL_NV_draw_vulkan_image,GL_NV_evaluators,GL_NV_explicit_multisample,GL_NV_fence,GL_NV_fill_rectangle,GL_NV_float_buffer,GL_NV_fog_distance,GL_NV_fragment_coverage_to_color,GL_NV_fragment_program,GL_NV_fragment_program2,GL_NV_fragment_program4,GL_NV_fragment_program_option,GL_NV_fragment_shader_barycentric,GL_NV_fragment_shader_interlock,GL_NV_framebuffer_mixed_samples,GL_NV_framebuffer_multisample_coverage,GL_NV_geometry_program4,GL_NV_geometry_shader4,GL_NV_geometry_shader_passthrough,GL_NV_gpu_multicast,GL_NV_gpu_program4,GL_NV_gpu_program5,GL_NV_gpu_program5_mem_extended,GL_NV_gpu_shader5,GL_NV_half_float,GL_NV_internalformat_sample_query,GL_NV_light_max_exponent,GL_NV_memory_attachment,GL_NV_mesh_shader,GL_NV_multisample_coverage,GL_NV_multisample_filter_hint,GL_NV_occlusion_query,GL_NV_packed_depth_stencil,GL_NV_parameter_buffer_object,GL_NV_parameter_buffer_object2,GL_NV_path_rendering,GL_NV_path_rendering_shared_edge,GL_NV_pixel_data_range,GL_NV_point_sprite,GL_NV_present_video,GL_NV_primitive_restart,GL_NV_query_resource,GL_NV_query_resource_tag,GL_NV_register_combiners,GL_NV_register_combiners2,GL_NV_representative_fragment_test,GL_NV_robustness_video_memory_purge,GL_NV_sample_locations,GL_NV_sample_mask_override_coverage,GL_NV_scissor_exclusive,GL_NV_shader_atomic_counters,GL_NV_shader_atomic_float,GL_NV_shader_atomic_float64,GL_NV_shader_atomic_fp16_vector,GL_NV_shader_atomic_int64,GL_NV_shader_buffer_load,GL_NV_shader_buffer_store,GL_NV_shader_storage_buffer_object,GL_NV_shader_subgroup_partitioned,GL_NV_shader_texture_footprint,GL_NV_shader_thread_group,GL_NV_shader_thread_shuffle,GL_NV_shading_rate_image,GL_NV_stereo_view_rendering,GL_NV_tessellation_program5,GL_NV_texgen_emboss,GL_NV_texgen_reflection,GL_NV_texture_barrier,GL_NV_texture_compression_vtc,GL_NV_texture_env_combine4,GL_NV_texture_expand_normal,GL_NV_texture_multisample,GL_NV_texture_rectangle,GL_NV_texture_rectangle_compressed,GL_NV_texture_shader,GL_NV_texture_shader2,GL_NV_texture_shader3,GL_NV_transform_feedback,GL_NV_transform_feedback2,GL_NV_uniform_buffer_unified_memory,GL_NV_vdpau_interop,GL_NV_vdpau_interop2,GL_NV_vertex_array_range,GL_NV_vertex_array_range2,GL_NV_vertex_attrib_integer_64bit,GL_NV_vertex_buffer_unified_memory,GL_NV_vertex_program,GL_NV_vertex_program1_1,GL_NV_vertex_program2,GL_NV_vertex_program2_option,GL_NV_vertex_program3,GL_NV_vertex_program4,GL_NV_video_capture,GL_NV_viewport_array2,GL_NV_viewport_swizzle,GL_OES_byte_coordinates,GL_OES_compressed_paletted_texture,GL_OES_fixed_point,GL_OES_query_matrix,GL_OES_read_format,GL_OES_single_precision,GL_OML_interlace,GL_OML_resample,GL_OML_subsample,GL_OVR_multiview,GL_OVR_multiview2,GL_PGI_misc_hints,GL_PGI_vertex_hints,GL_REND_screen_coordinates,GL_S3_s3tc,GL_SGIS_detail_texture,GL_SGIS_fog_function,GL_SGIS_generate_mipmap,GL_SGIS_multisample,GL_SGIS_pixel_texture,GL_SGIS_point_line_texgen,GL_SGIS_point_parameters,GL_SGIS_sharpen_texture,GL_SGIS_texture4D,GL_SGIS_texture_border_clamp,GL_SGIS_texture_color_mask,GL_SGIS_texture_edge_clamp,GL_SGIS_texture_filter4,GL_SGIS_texture_lod,GL_SGIS_texture_select,GL_SGIX_async,GL_SGIX_async_histogram,GL_SGIX_async_pixel,GL_SGIX_blend_alpha_minmax,GL_SGIX_calligraphic_fragment,GL_SGIX_clipmap,GL_SGIX_convolution_accuracy,GL_SGIX_depth_pass_instrument,GL_SGIX_depth_texture,GL_SGIX_flush_raster,GL_SGIX_fog_offset,GL_SGIX_fragment_lighting,GL_SGIX_framezoom,GL_SGIX_igloo_interface,GL_SGIX_instruments,GL_SGIX_interlace,GL_SGIX_ir_instrument1,GL_SGIX_list_priority,GL_SGIX_pixel_texture,GL_SGIX_pixel_tiles,GL_SGIX_polynomial_ffd,GL_SGIX_reference_plane,GL_SGIX_resample,GL_SGIX_scalebias_hint,GL_SGIX_shadow,GL_SGIX_shadow_ambient,GL_SGIX_sprite,GL_SGIX_subsample,GL_SGIX_tag_sample_buffer,GL_SGIX_texture_add_env,GL_SGIX_texture_coordinate_clamp,GL_SGIX_texture_lod_bias,GL_SGIX_texture_multi_buffer,GL_SGIX_texture_scale_bias,GL_SGIX_vertex_preclip,GL_SGIX_ycrcb,GL_SGIX_ycrcb_subsample,GL_SGIX_ycrcba,GL_SGI_color_matrix,GL_SGI_color_table,GL_SGI_texture_color_table,GL_SUNX_constant_data,GL_SUN_convolution_border_modes,GL_SUN_global_alpha,GL_SUN_mesh_array,GL_SUN_slice_accum,GL_SUN_triangle_list,GL_SUN_vertex,GL_WIN_phong_shading,GL_WIN_specular_fog" + Online: + Too many extensions +*/ + +#include +#include +#include +#include + +static void* get_proc(const char *namez); + +#if defined(_WIN32) || defined(__CYGWIN__) +#ifndef _WINDOWS_ +#undef APIENTRY +#endif +#include +static HMODULE libGL; + +typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*); +static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; + +#ifdef _MSC_VER +#ifdef __has_include + #if __has_include() + #define HAVE_WINAPIFAMILY 1 + #endif +#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ + #define HAVE_WINAPIFAMILY 1 +#endif +#endif + +#ifdef HAVE_WINAPIFAMILY + #include + #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + #define IS_UWP 1 + #endif +#endif + +static +int open_gl(void) { +#ifndef IS_UWP + libGL = LoadLibraryW(L"opengl32.dll"); + if(libGL != NULL) { + void (* tmp)(void); + tmp = (void(*)(void)) GetProcAddress(libGL, "wglGetProcAddress"); + gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp; + return gladGetProcAddressPtr != NULL; + } +#endif + + return 0; +} + +static +void close_gl(void) { + if(libGL != NULL) { + FreeLibrary((HMODULE) libGL); + libGL = NULL; + } +} +#else +#include +static void* libGL; + +#if !defined(__APPLE__) && !defined(__HAIKU__) +typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*); +static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; +#endif + +static +int open_gl(void) { +#ifdef __APPLE__ + static const char *NAMES[] = { + "../Frameworks/OpenGL.framework/OpenGL", + "/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" + }; +#else + static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; +#endif + + unsigned int index = 0; + for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { + libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); + + if(libGL != NULL) { +#if defined(__APPLE__) || defined(__HAIKU__) + return 1; +#else + gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, + "glXGetProcAddressARB"); + return gladGetProcAddressPtr != NULL; +#endif + } + } + + return 0; +} + +static +void close_gl(void) { + if(libGL != NULL) { + dlclose(libGL); + libGL = NULL; + } +} +#endif + +static +void* get_proc(const char *namez) { + void* result = NULL; + if(libGL == NULL) return NULL; + +#if !defined(__APPLE__) && !defined(__HAIKU__) + if(gladGetProcAddressPtr != NULL) { + result = gladGetProcAddressPtr(namez); + } +#endif + if(result == NULL) { +#if defined(_WIN32) || defined(__CYGWIN__) + result = (void*)GetProcAddress((HMODULE) libGL, namez); +#else + result = dlsym(libGL, namez); +#endif + } + + return result; +} + +int gladLoadGL(void) { + int status = 0; + + if(open_gl()) { + status = gladLoadGLLoader(&get_proc); + close_gl(); + } + + return status; +} + +struct gladGLversionStruct GLVersion = { 0, 0 }; + +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) +#define _GLAD_IS_SOME_NEW_VERSION 1 +#endif + +static int max_loaded_major; +static int max_loaded_minor; + +static const char *exts = NULL; +static int num_exts_i = 0; +static char **exts_i = NULL; + +static int get_exts(void) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if(max_loaded_major < 3) { +#endif + exts = (const char *)glGetString(GL_EXTENSIONS); +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + unsigned int index; + + num_exts_i = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); + if (num_exts_i > 0) { + exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); + } + + if (exts_i == NULL) { + return 0; + } + + for(index = 0; index < (unsigned)num_exts_i; index++) { + const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); + size_t len = strlen(gl_str_tmp); + + char *local_str = (char*)malloc((len+1) * sizeof(char)); + if(local_str != NULL) { + memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char)); + } + exts_i[index] = local_str; + } + } +#endif + return 1; +} + +static void free_exts(void) { + if (exts_i != NULL) { + int index; + for(index = 0; index < num_exts_i; index++) { + free((char *)exts_i[index]); + } + free((void *)exts_i); + exts_i = NULL; + } +} + +static int has_ext(const char *ext) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if(max_loaded_major < 3) { +#endif + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if(extensions == NULL || ext == NULL) { + return 0; + } + + while(1) { + loc = strstr(extensions, ext); + if(loc == NULL) { + return 0; + } + + terminator = loc + strlen(ext); + if((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) { + return 1; + } + extensions = terminator; + } +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + int index; + if(exts_i == NULL) return 0; + for(index = 0; index < num_exts_i; index++) { + const char *e = exts_i[index]; + + if(exts_i[index] != NULL && strcmp(e, ext) == 0) { + return 1; + } + } + } +#endif + + return 0; +} +int GLAD_GL_VERSION_1_0 = 0; +int GLAD_GL_VERSION_1_1 = 0; +int GLAD_GL_VERSION_1_2 = 0; +int GLAD_GL_VERSION_1_3 = 0; +int GLAD_GL_VERSION_1_4 = 0; +int GLAD_GL_VERSION_1_5 = 0; +int GLAD_GL_VERSION_2_0 = 0; +int GLAD_GL_VERSION_2_1 = 0; +int GLAD_GL_VERSION_3_0 = 0; +int GLAD_GL_VERSION_3_1 = 0; +int GLAD_GL_VERSION_3_2 = 0; +int GLAD_GL_VERSION_3_3 = 0; +int GLAD_GL_VERSION_4_0 = 0; +int GLAD_GL_VERSION_4_1 = 0; +PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram = NULL; +PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; +PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; +PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL; +PFNGLBEGINQUERYPROC glad_glBeginQuery = NULL; +PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed = NULL; +PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; +PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; +PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; +PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; +PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL; +PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; +PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline = NULL; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; +PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; +PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; +PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback = NULL; +PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; +PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; +PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei = NULL; +PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi = NULL; +PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; +PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei = NULL; +PFNGLBLENDFUNCIPROC glad_glBlendFunci = NULL; +PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL; +PFNGLBUFFERDATAPROC glad_glBufferData = NULL; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; +PFNGLCLAMPCOLORPROC glad_glClampColor = NULL; +PFNGLCLEARPROC glad_glClear = NULL; +PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL; +PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL; +PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL; +PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; +PFNGLCLEARCOLORPROC glad_glClearColor = NULL; +PFNGLCLEARDEPTHPROC glad_glClearDepth = NULL; +PFNGLCLEARDEPTHFPROC glad_glClearDepthf = NULL; +PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; +PFNGLCOLORMASKPROC glad_glColorMask = NULL; +PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; +PFNGLCOLORP3UIPROC glad_glColorP3ui = NULL; +PFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL; +PFNGLCOLORP4UIPROC glad_glColorP4ui = NULL; +PFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL; +PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; +PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; +PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; +PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; +PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; +PFNGLCREATESHADERPROC glad_glCreateShader = NULL; +PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv = NULL; +PFNGLCULLFACEPROC glad_glCullFace = NULL; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; +PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines = NULL; +PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; +PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; +PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; +PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; +PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks = NULL; +PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; +PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; +PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; +PFNGLDEPTHRANGEPROC glad_glDepthRange = NULL; +PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv = NULL; +PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed = NULL; +PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; +PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; +PFNGLDISABLEPROC glad_glDisable = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; +PFNGLDISABLEIPROC glad_glDisablei = NULL; +PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; +PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect = NULL; +PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; +PFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL; +PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; +PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; +PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; +PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect = NULL; +PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL; +PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; +PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback = NULL; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream = NULL; +PFNGLENABLEPROC glad_glEnable = NULL; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; +PFNGLENABLEIPROC glad_glEnablei = NULL; +PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL; +PFNGLENDQUERYPROC glad_glEndQuery = NULL; +PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed = NULL; +PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; +PFNGLFENCESYNCPROC glad_glFenceSync = NULL; +PFNGLFINISHPROC glad_glFinish = NULL; +PFNGLFLUSHPROC glad_glFlush = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; +PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; +PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; +PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL; +PFNGLFRONTFACEPROC glad_glFrontFace = NULL; +PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; +PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines = NULL; +PFNGLGENQUERIESPROC glad_glGenQueries = NULL; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; +PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; +PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; +PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks = NULL; +PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; +PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName = NULL; +PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName = NULL; +PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv = NULL; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; +PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL; +PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; +PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; +PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; +PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; +PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL; +PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL; +PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v = NULL; +PFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL; +PFNGLGETERRORPROC glad_glGetError = NULL; +PFNGLGETFLOATI_VPROC glad_glGetFloati_v = NULL; +PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; +PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL; +PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; +PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; +PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; +PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; +PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; +PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary = NULL; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; +PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog = NULL; +PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv = NULL; +PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv = NULL; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; +PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv = NULL; +PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL; +PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL; +PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL; +PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; +PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; +PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; +PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; +PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; +PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; +PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat = NULL; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; +PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; +PFNGLGETSTRINGPROC glad_glGetString = NULL; +PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; +PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex = NULL; +PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation = NULL; +PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; +PFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL; +PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; +PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; +PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL; +PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; +PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; +PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; +PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv = NULL; +PFNGLGETUNIFORMDVPROC glad_glGetUniformdv = NULL; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; +PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL; +PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL; +PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL; +PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv = NULL; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; +PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; +PFNGLHINTPROC glad_glHint = NULL; +PFNGLISBUFFERPROC glad_glIsBuffer = NULL; +PFNGLISENABLEDPROC glad_glIsEnabled = NULL; +PFNGLISENABLEDIPROC glad_glIsEnabledi = NULL; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; +PFNGLISPROGRAMPROC glad_glIsProgram = NULL; +PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline = NULL; +PFNGLISQUERYPROC glad_glIsQuery = NULL; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; +PFNGLISSAMPLERPROC glad_glIsSampler = NULL; +PFNGLISSHADERPROC glad_glIsShader = NULL; +PFNGLISSYNCPROC glad_glIsSync = NULL; +PFNGLISTEXTUREPROC glad_glIsTexture = NULL; +PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback = NULL; +PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; +PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; +PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; +PFNGLLOGICOPPROC glad_glLogicOp = NULL; +PFNGLMAPBUFFERPROC glad_glMapBuffer = NULL; +PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; +PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading = NULL; +PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL; +PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL; +PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL; +PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL; +PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL; +PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL; +PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL; +PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL; +PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL; +PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL; +PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL; +PFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL; +PFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL; +PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv = NULL; +PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri = NULL; +PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback = NULL; +PFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL; +PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; +PFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL; +PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL; +PFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL; +PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL; +PFNGLPOINTSIZEPROC glad_glPointSize = NULL; +PFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; +PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL; +PFNGLPROGRAMBINARYPROC glad_glProgramBinary = NULL; +PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri = NULL; +PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d = NULL; +PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv = NULL; +PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f = NULL; +PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv = NULL; +PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i = NULL; +PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv = NULL; +PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui = NULL; +PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv = NULL; +PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d = NULL; +PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv = NULL; +PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f = NULL; +PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv = NULL; +PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i = NULL; +PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv = NULL; +PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui = NULL; +PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv = NULL; +PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d = NULL; +PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv = NULL; +PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f = NULL; +PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv = NULL; +PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i = NULL; +PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv = NULL; +PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui = NULL; +PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv = NULL; +PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d = NULL; +PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv = NULL; +PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f = NULL; +PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv = NULL; +PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i = NULL; +PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv = NULL; +PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui = NULL; +PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv = NULL; +PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL; +PFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL; +PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; +PFNGLREADPIXELSPROC glad_glReadPixels = NULL; +PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler = NULL; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL; +PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback = NULL; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; +PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; +PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; +PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; +PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; +PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; +PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; +PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; +PFNGLSCISSORPROC glad_glScissor = NULL; +PFNGLSCISSORARRAYVPROC glad_glScissorArrayv = NULL; +PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed = NULL; +PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv = NULL; +PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL; +PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL; +PFNGLSHADERBINARYPROC glad_glShaderBinary = NULL; +PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; +PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; +PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; +PFNGLSTENCILOPPROC glad_glStencilOp = NULL; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; +PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; +PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL; +PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL; +PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL; +PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL; +PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL; +PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL; +PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL; +PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL; +PFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; +PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL; +PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; +PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL; +PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; +PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; +PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; +PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL; +PFNGLUNIFORM1DPROC glad_glUniform1d = NULL; +PFNGLUNIFORM1DVPROC glad_glUniform1dv = NULL; +PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; +PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; +PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; +PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; +PFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL; +PFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL; +PFNGLUNIFORM2DPROC glad_glUniform2d = NULL; +PFNGLUNIFORM2DVPROC glad_glUniform2dv = NULL; +PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; +PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; +PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; +PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; +PFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL; +PFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL; +PFNGLUNIFORM3DPROC glad_glUniform3d = NULL; +PFNGLUNIFORM3DVPROC glad_glUniform3dv = NULL; +PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; +PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; +PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; +PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; +PFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL; +PFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL; +PFNGLUNIFORM4DPROC glad_glUniform4d = NULL; +PFNGLUNIFORM4DVPROC glad_glUniform4dv = NULL; +PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; +PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; +PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; +PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; +PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; +PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; +PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; +PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv = NULL; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; +PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv = NULL; +PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; +PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv = NULL; +PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; +PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv = NULL; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; +PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv = NULL; +PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL; +PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv = NULL; +PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL; +PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv = NULL; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; +PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv = NULL; +PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL; +PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv = NULL; +PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL; +PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv = NULL; +PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL; +PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; +PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages = NULL; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; +PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline = NULL; +PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL; +PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; +PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL; +PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL; +PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL; +PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; +PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL; +PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL; +PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL; +PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; +PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL; +PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL; +PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL; +PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL; +PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL; +PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL; +PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL; +PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL; +PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL; +PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL; +PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL; +PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; +PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL; +PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL; +PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL; +PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL; +PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL; +PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL; +PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; +PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL; +PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL; +PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL; +PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL; +PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL; +PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL; +PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL; +PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL; +PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL; +PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL; +PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL; +PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL; +PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL; +PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL; +PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL; +PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL; +PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL; +PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; +PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; +PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL; +PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; +PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d = NULL; +PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv = NULL; +PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d = NULL; +PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv = NULL; +PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d = NULL; +PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv = NULL; +PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d = NULL; +PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv = NULL; +PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer = NULL; +PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL; +PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL; +PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL; +PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL; +PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL; +PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL; +PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL; +PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; +PFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL; +PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL; +PFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL; +PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL; +PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; +PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; +PFNGLVIEWPORTPROC glad_glViewport = NULL; +PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv = NULL; +PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf = NULL; +PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv = NULL; +PFNGLWAITSYNCPROC glad_glWaitSync = NULL; +int GLAD_GL_3DFX_multisample = 0; +int GLAD_GL_3DFX_tbuffer = 0; +int GLAD_GL_3DFX_texture_compression_FXT1 = 0; +int GLAD_GL_AMD_blend_minmax_factor = 0; +int GLAD_GL_AMD_conservative_depth = 0; +int GLAD_GL_AMD_debug_output = 0; +int GLAD_GL_AMD_depth_clamp_separate = 0; +int GLAD_GL_AMD_draw_buffers_blend = 0; +int GLAD_GL_AMD_framebuffer_multisample_advanced = 0; +int GLAD_GL_AMD_framebuffer_sample_positions = 0; +int GLAD_GL_AMD_gcn_shader = 0; +int GLAD_GL_AMD_gpu_shader_half_float = 0; +int GLAD_GL_AMD_gpu_shader_int16 = 0; +int GLAD_GL_AMD_gpu_shader_int64 = 0; +int GLAD_GL_AMD_interleaved_elements = 0; +int GLAD_GL_AMD_multi_draw_indirect = 0; +int GLAD_GL_AMD_name_gen_delete = 0; +int GLAD_GL_AMD_occlusion_query_event = 0; +int GLAD_GL_AMD_performance_monitor = 0; +int GLAD_GL_AMD_pinned_memory = 0; +int GLAD_GL_AMD_query_buffer_object = 0; +int GLAD_GL_AMD_sample_positions = 0; +int GLAD_GL_AMD_seamless_cubemap_per_texture = 0; +int GLAD_GL_AMD_shader_atomic_counter_ops = 0; +int GLAD_GL_AMD_shader_ballot = 0; +int GLAD_GL_AMD_shader_explicit_vertex_parameter = 0; +int GLAD_GL_AMD_shader_gpu_shader_half_float_fetch = 0; +int GLAD_GL_AMD_shader_image_load_store_lod = 0; +int GLAD_GL_AMD_shader_stencil_export = 0; +int GLAD_GL_AMD_shader_trinary_minmax = 0; +int GLAD_GL_AMD_sparse_texture = 0; +int GLAD_GL_AMD_stencil_operation_extended = 0; +int GLAD_GL_AMD_texture_gather_bias_lod = 0; +int GLAD_GL_AMD_texture_texture4 = 0; +int GLAD_GL_AMD_transform_feedback3_lines_triangles = 0; +int GLAD_GL_AMD_transform_feedback4 = 0; +int GLAD_GL_AMD_vertex_shader_layer = 0; +int GLAD_GL_AMD_vertex_shader_tessellator = 0; +int GLAD_GL_AMD_vertex_shader_viewport_index = 0; +int GLAD_GL_APPLE_aux_depth_stencil = 0; +int GLAD_GL_APPLE_client_storage = 0; +int GLAD_GL_APPLE_element_array = 0; +int GLAD_GL_APPLE_fence = 0; +int GLAD_GL_APPLE_float_pixels = 0; +int GLAD_GL_APPLE_flush_buffer_range = 0; +int GLAD_GL_APPLE_object_purgeable = 0; +int GLAD_GL_APPLE_rgb_422 = 0; +int GLAD_GL_APPLE_row_bytes = 0; +int GLAD_GL_APPLE_specular_vector = 0; +int GLAD_GL_APPLE_texture_range = 0; +int GLAD_GL_APPLE_transform_hint = 0; +int GLAD_GL_APPLE_vertex_array_object = 0; +int GLAD_GL_APPLE_vertex_array_range = 0; +int GLAD_GL_APPLE_vertex_program_evaluators = 0; +int GLAD_GL_APPLE_ycbcr_422 = 0; +int GLAD_GL_ARB_ES2_compatibility = 0; +int GLAD_GL_ARB_ES3_1_compatibility = 0; +int GLAD_GL_ARB_ES3_2_compatibility = 0; +int GLAD_GL_ARB_ES3_compatibility = 0; +int GLAD_GL_ARB_arrays_of_arrays = 0; +int GLAD_GL_ARB_base_instance = 0; +int GLAD_GL_ARB_bindless_texture = 0; +int GLAD_GL_ARB_blend_func_extended = 0; +int GLAD_GL_ARB_buffer_storage = 0; +int GLAD_GL_ARB_cl_event = 0; +int GLAD_GL_ARB_clear_buffer_object = 0; +int GLAD_GL_ARB_clear_texture = 0; +int GLAD_GL_ARB_clip_control = 0; +int GLAD_GL_ARB_color_buffer_float = 0; +int GLAD_GL_ARB_compatibility = 0; +int GLAD_GL_ARB_compressed_texture_pixel_storage = 0; +int GLAD_GL_ARB_compute_shader = 0; +int GLAD_GL_ARB_compute_variable_group_size = 0; +int GLAD_GL_ARB_conditional_render_inverted = 0; +int GLAD_GL_ARB_conservative_depth = 0; +int GLAD_GL_ARB_copy_buffer = 0; +int GLAD_GL_ARB_copy_image = 0; +int GLAD_GL_ARB_cull_distance = 0; +int GLAD_GL_ARB_debug_output = 0; +int GLAD_GL_ARB_depth_buffer_float = 0; +int GLAD_GL_ARB_depth_clamp = 0; +int GLAD_GL_ARB_depth_texture = 0; +int GLAD_GL_ARB_derivative_control = 0; +int GLAD_GL_ARB_direct_state_access = 0; +int GLAD_GL_ARB_draw_buffers = 0; +int GLAD_GL_ARB_draw_buffers_blend = 0; +int GLAD_GL_ARB_draw_elements_base_vertex = 0; +int GLAD_GL_ARB_draw_indirect = 0; +int GLAD_GL_ARB_draw_instanced = 0; +int GLAD_GL_ARB_enhanced_layouts = 0; +int GLAD_GL_ARB_explicit_attrib_location = 0; +int GLAD_GL_ARB_explicit_uniform_location = 0; +int GLAD_GL_ARB_fragment_coord_conventions = 0; +int GLAD_GL_ARB_fragment_layer_viewport = 0; +int GLAD_GL_ARB_fragment_program = 0; +int GLAD_GL_ARB_fragment_program_shadow = 0; +int GLAD_GL_ARB_fragment_shader = 0; +int GLAD_GL_ARB_fragment_shader_interlock = 0; +int GLAD_GL_ARB_framebuffer_no_attachments = 0; +int GLAD_GL_ARB_framebuffer_object = 0; +int GLAD_GL_ARB_framebuffer_sRGB = 0; +int GLAD_GL_ARB_geometry_shader4 = 0; +int GLAD_GL_ARB_get_program_binary = 0; +int GLAD_GL_ARB_get_texture_sub_image = 0; +int GLAD_GL_ARB_gl_spirv = 0; +int GLAD_GL_ARB_gpu_shader5 = 0; +int GLAD_GL_ARB_gpu_shader_fp64 = 0; +int GLAD_GL_ARB_gpu_shader_int64 = 0; +int GLAD_GL_ARB_half_float_pixel = 0; +int GLAD_GL_ARB_half_float_vertex = 0; +int GLAD_GL_ARB_imaging = 0; +int GLAD_GL_ARB_indirect_parameters = 0; +int GLAD_GL_ARB_instanced_arrays = 0; +int GLAD_GL_ARB_internalformat_query = 0; +int GLAD_GL_ARB_internalformat_query2 = 0; +int GLAD_GL_ARB_invalidate_subdata = 0; +int GLAD_GL_ARB_map_buffer_alignment = 0; +int GLAD_GL_ARB_map_buffer_range = 0; +int GLAD_GL_ARB_matrix_palette = 0; +int GLAD_GL_ARB_multi_bind = 0; +int GLAD_GL_ARB_multi_draw_indirect = 0; +int GLAD_GL_ARB_multisample = 0; +int GLAD_GL_ARB_multitexture = 0; +int GLAD_GL_ARB_occlusion_query = 0; +int GLAD_GL_ARB_occlusion_query2 = 0; +int GLAD_GL_ARB_parallel_shader_compile = 0; +int GLAD_GL_ARB_pipeline_statistics_query = 0; +int GLAD_GL_ARB_pixel_buffer_object = 0; +int GLAD_GL_ARB_point_parameters = 0; +int GLAD_GL_ARB_point_sprite = 0; +int GLAD_GL_ARB_polygon_offset_clamp = 0; +int GLAD_GL_ARB_post_depth_coverage = 0; +int GLAD_GL_ARB_program_interface_query = 0; +int GLAD_GL_ARB_provoking_vertex = 0; +int GLAD_GL_ARB_query_buffer_object = 0; +int GLAD_GL_ARB_robust_buffer_access_behavior = 0; +int GLAD_GL_ARB_robustness = 0; +int GLAD_GL_ARB_robustness_isolation = 0; +int GLAD_GL_ARB_sample_locations = 0; +int GLAD_GL_ARB_sample_shading = 0; +int GLAD_GL_ARB_sampler_objects = 0; +int GLAD_GL_ARB_seamless_cube_map = 0; +int GLAD_GL_ARB_seamless_cubemap_per_texture = 0; +int GLAD_GL_ARB_separate_shader_objects = 0; +int GLAD_GL_ARB_shader_atomic_counter_ops = 0; +int GLAD_GL_ARB_shader_atomic_counters = 0; +int GLAD_GL_ARB_shader_ballot = 0; +int GLAD_GL_ARB_shader_bit_encoding = 0; +int GLAD_GL_ARB_shader_clock = 0; +int GLAD_GL_ARB_shader_draw_parameters = 0; +int GLAD_GL_ARB_shader_group_vote = 0; +int GLAD_GL_ARB_shader_image_load_store = 0; +int GLAD_GL_ARB_shader_image_size = 0; +int GLAD_GL_ARB_shader_objects = 0; +int GLAD_GL_ARB_shader_precision = 0; +int GLAD_GL_ARB_shader_stencil_export = 0; +int GLAD_GL_ARB_shader_storage_buffer_object = 0; +int GLAD_GL_ARB_shader_subroutine = 0; +int GLAD_GL_ARB_shader_texture_image_samples = 0; +int GLAD_GL_ARB_shader_texture_lod = 0; +int GLAD_GL_ARB_shader_viewport_layer_array = 0; +int GLAD_GL_ARB_shading_language_100 = 0; +int GLAD_GL_ARB_shading_language_420pack = 0; +int GLAD_GL_ARB_shading_language_include = 0; +int GLAD_GL_ARB_shading_language_packing = 0; +int GLAD_GL_ARB_shadow = 0; +int GLAD_GL_ARB_shadow_ambient = 0; +int GLAD_GL_ARB_sparse_buffer = 0; +int GLAD_GL_ARB_sparse_texture = 0; +int GLAD_GL_ARB_sparse_texture2 = 0; +int GLAD_GL_ARB_sparse_texture_clamp = 0; +int GLAD_GL_ARB_spirv_extensions = 0; +int GLAD_GL_ARB_stencil_texturing = 0; +int GLAD_GL_ARB_sync = 0; +int GLAD_GL_ARB_tessellation_shader = 0; +int GLAD_GL_ARB_texture_barrier = 0; +int GLAD_GL_ARB_texture_border_clamp = 0; +int GLAD_GL_ARB_texture_buffer_object = 0; +int GLAD_GL_ARB_texture_buffer_object_rgb32 = 0; +int GLAD_GL_ARB_texture_buffer_range = 0; +int GLAD_GL_ARB_texture_compression = 0; +int GLAD_GL_ARB_texture_compression_bptc = 0; +int GLAD_GL_ARB_texture_compression_rgtc = 0; +int GLAD_GL_ARB_texture_cube_map = 0; +int GLAD_GL_ARB_texture_cube_map_array = 0; +int GLAD_GL_ARB_texture_env_add = 0; +int GLAD_GL_ARB_texture_env_combine = 0; +int GLAD_GL_ARB_texture_env_crossbar = 0; +int GLAD_GL_ARB_texture_env_dot3 = 0; +int GLAD_GL_ARB_texture_filter_anisotropic = 0; +int GLAD_GL_ARB_texture_filter_minmax = 0; +int GLAD_GL_ARB_texture_float = 0; +int GLAD_GL_ARB_texture_gather = 0; +int GLAD_GL_ARB_texture_mirror_clamp_to_edge = 0; +int GLAD_GL_ARB_texture_mirrored_repeat = 0; +int GLAD_GL_ARB_texture_multisample = 0; +int GLAD_GL_ARB_texture_non_power_of_two = 0; +int GLAD_GL_ARB_texture_query_levels = 0; +int GLAD_GL_ARB_texture_query_lod = 0; +int GLAD_GL_ARB_texture_rectangle = 0; +int GLAD_GL_ARB_texture_rg = 0; +int GLAD_GL_ARB_texture_rgb10_a2ui = 0; +int GLAD_GL_ARB_texture_stencil8 = 0; +int GLAD_GL_ARB_texture_storage = 0; +int GLAD_GL_ARB_texture_storage_multisample = 0; +int GLAD_GL_ARB_texture_swizzle = 0; +int GLAD_GL_ARB_texture_view = 0; +int GLAD_GL_ARB_timer_query = 0; +int GLAD_GL_ARB_transform_feedback2 = 0; +int GLAD_GL_ARB_transform_feedback3 = 0; +int GLAD_GL_ARB_transform_feedback_instanced = 0; +int GLAD_GL_ARB_transform_feedback_overflow_query = 0; +int GLAD_GL_ARB_transpose_matrix = 0; +int GLAD_GL_ARB_uniform_buffer_object = 0; +int GLAD_GL_ARB_vertex_array_bgra = 0; +int GLAD_GL_ARB_vertex_array_object = 0; +int GLAD_GL_ARB_vertex_attrib_64bit = 0; +int GLAD_GL_ARB_vertex_attrib_binding = 0; +int GLAD_GL_ARB_vertex_blend = 0; +int GLAD_GL_ARB_vertex_buffer_object = 0; +int GLAD_GL_ARB_vertex_program = 0; +int GLAD_GL_ARB_vertex_shader = 0; +int GLAD_GL_ARB_vertex_type_10f_11f_11f_rev = 0; +int GLAD_GL_ARB_vertex_type_2_10_10_10_rev = 0; +int GLAD_GL_ARB_viewport_array = 0; +int GLAD_GL_ARB_window_pos = 0; +int GLAD_GL_ATI_draw_buffers = 0; +int GLAD_GL_ATI_element_array = 0; +int GLAD_GL_ATI_envmap_bumpmap = 0; +int GLAD_GL_ATI_fragment_shader = 0; +int GLAD_GL_ATI_map_object_buffer = 0; +int GLAD_GL_ATI_meminfo = 0; +int GLAD_GL_ATI_pixel_format_float = 0; +int GLAD_GL_ATI_pn_triangles = 0; +int GLAD_GL_ATI_separate_stencil = 0; +int GLAD_GL_ATI_text_fragment_shader = 0; +int GLAD_GL_ATI_texture_env_combine3 = 0; +int GLAD_GL_ATI_texture_float = 0; +int GLAD_GL_ATI_texture_mirror_once = 0; +int GLAD_GL_ATI_vertex_array_object = 0; +int GLAD_GL_ATI_vertex_attrib_array_object = 0; +int GLAD_GL_ATI_vertex_streams = 0; +int GLAD_GL_EXT_422_pixels = 0; +int GLAD_GL_EXT_EGL_image_storage = 0; +int GLAD_GL_EXT_EGL_sync = 0; +int GLAD_GL_EXT_abgr = 0; +int GLAD_GL_EXT_bgra = 0; +int GLAD_GL_EXT_bindable_uniform = 0; +int GLAD_GL_EXT_blend_color = 0; +int GLAD_GL_EXT_blend_equation_separate = 0; +int GLAD_GL_EXT_blend_func_separate = 0; +int GLAD_GL_EXT_blend_logic_op = 0; +int GLAD_GL_EXT_blend_minmax = 0; +int GLAD_GL_EXT_blend_subtract = 0; +int GLAD_GL_EXT_clip_volume_hint = 0; +int GLAD_GL_EXT_cmyka = 0; +int GLAD_GL_EXT_color_subtable = 0; +int GLAD_GL_EXT_compiled_vertex_array = 0; +int GLAD_GL_EXT_convolution = 0; +int GLAD_GL_EXT_coordinate_frame = 0; +int GLAD_GL_EXT_copy_texture = 0; +int GLAD_GL_EXT_cull_vertex = 0; +int GLAD_GL_EXT_debug_label = 0; +int GLAD_GL_EXT_debug_marker = 0; +int GLAD_GL_EXT_depth_bounds_test = 0; +int GLAD_GL_EXT_direct_state_access = 0; +int GLAD_GL_EXT_draw_buffers2 = 0; +int GLAD_GL_EXT_draw_instanced = 0; +int GLAD_GL_EXT_draw_range_elements = 0; +int GLAD_GL_EXT_external_buffer = 0; +int GLAD_GL_EXT_fog_coord = 0; +int GLAD_GL_EXT_framebuffer_blit = 0; +int GLAD_GL_EXT_framebuffer_multisample = 0; +int GLAD_GL_EXT_framebuffer_multisample_blit_scaled = 0; +int GLAD_GL_EXT_framebuffer_object = 0; +int GLAD_GL_EXT_framebuffer_sRGB = 0; +int GLAD_GL_EXT_geometry_shader4 = 0; +int GLAD_GL_EXT_gpu_program_parameters = 0; +int GLAD_GL_EXT_gpu_shader4 = 0; +int GLAD_GL_EXT_histogram = 0; +int GLAD_GL_EXT_index_array_formats = 0; +int GLAD_GL_EXT_index_func = 0; +int GLAD_GL_EXT_index_material = 0; +int GLAD_GL_EXT_index_texture = 0; +int GLAD_GL_EXT_light_texture = 0; +int GLAD_GL_EXT_memory_object = 0; +int GLAD_GL_EXT_memory_object_fd = 0; +int GLAD_GL_EXT_memory_object_win32 = 0; +int GLAD_GL_EXT_misc_attribute = 0; +int GLAD_GL_EXT_multi_draw_arrays = 0; +int GLAD_GL_EXT_multisample = 0; +int GLAD_GL_EXT_multiview_tessellation_geometry_shader = 0; +int GLAD_GL_EXT_multiview_texture_multisample = 0; +int GLAD_GL_EXT_multiview_timer_query = 0; +int GLAD_GL_EXT_packed_depth_stencil = 0; +int GLAD_GL_EXT_packed_float = 0; +int GLAD_GL_EXT_packed_pixels = 0; +int GLAD_GL_EXT_paletted_texture = 0; +int GLAD_GL_EXT_pixel_buffer_object = 0; +int GLAD_GL_EXT_pixel_transform = 0; +int GLAD_GL_EXT_pixel_transform_color_table = 0; +int GLAD_GL_EXT_point_parameters = 0; +int GLAD_GL_EXT_polygon_offset = 0; +int GLAD_GL_EXT_polygon_offset_clamp = 0; +int GLAD_GL_EXT_post_depth_coverage = 0; +int GLAD_GL_EXT_provoking_vertex = 0; +int GLAD_GL_EXT_raster_multisample = 0; +int GLAD_GL_EXT_rescale_normal = 0; +int GLAD_GL_EXT_secondary_color = 0; +int GLAD_GL_EXT_semaphore = 0; +int GLAD_GL_EXT_semaphore_fd = 0; +int GLAD_GL_EXT_semaphore_win32 = 0; +int GLAD_GL_EXT_separate_shader_objects = 0; +int GLAD_GL_EXT_separate_specular_color = 0; +int GLAD_GL_EXT_shader_framebuffer_fetch = 0; +int GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent = 0; +int GLAD_GL_EXT_shader_image_load_formatted = 0; +int GLAD_GL_EXT_shader_image_load_store = 0; +int GLAD_GL_EXT_shader_integer_mix = 0; +int GLAD_GL_EXT_shadow_funcs = 0; +int GLAD_GL_EXT_shared_texture_palette = 0; +int GLAD_GL_EXT_sparse_texture2 = 0; +int GLAD_GL_EXT_stencil_clear_tag = 0; +int GLAD_GL_EXT_stencil_two_side = 0; +int GLAD_GL_EXT_stencil_wrap = 0; +int GLAD_GL_EXT_subtexture = 0; +int GLAD_GL_EXT_texture = 0; +int GLAD_GL_EXT_texture3D = 0; +int GLAD_GL_EXT_texture_array = 0; +int GLAD_GL_EXT_texture_buffer_object = 0; +int GLAD_GL_EXT_texture_compression_latc = 0; +int GLAD_GL_EXT_texture_compression_rgtc = 0; +int GLAD_GL_EXT_texture_compression_s3tc = 0; +int GLAD_GL_EXT_texture_cube_map = 0; +int GLAD_GL_EXT_texture_env_add = 0; +int GLAD_GL_EXT_texture_env_combine = 0; +int GLAD_GL_EXT_texture_env_dot3 = 0; +int GLAD_GL_EXT_texture_filter_anisotropic = 0; +int GLAD_GL_EXT_texture_filter_minmax = 0; +int GLAD_GL_EXT_texture_integer = 0; +int GLAD_GL_EXT_texture_lod_bias = 0; +int GLAD_GL_EXT_texture_mirror_clamp = 0; +int GLAD_GL_EXT_texture_object = 0; +int GLAD_GL_EXT_texture_perturb_normal = 0; +int GLAD_GL_EXT_texture_sRGB = 0; +int GLAD_GL_EXT_texture_sRGB_R8 = 0; +int GLAD_GL_EXT_texture_sRGB_decode = 0; +int GLAD_GL_EXT_texture_shadow_lod = 0; +int GLAD_GL_EXT_texture_shared_exponent = 0; +int GLAD_GL_EXT_texture_snorm = 0; +int GLAD_GL_EXT_texture_swizzle = 0; +int GLAD_GL_EXT_timer_query = 0; +int GLAD_GL_EXT_transform_feedback = 0; +int GLAD_GL_EXT_vertex_array = 0; +int GLAD_GL_EXT_vertex_array_bgra = 0; +int GLAD_GL_EXT_vertex_attrib_64bit = 0; +int GLAD_GL_EXT_vertex_shader = 0; +int GLAD_GL_EXT_vertex_weighting = 0; +int GLAD_GL_EXT_win32_keyed_mutex = 0; +int GLAD_GL_EXT_window_rectangles = 0; +int GLAD_GL_EXT_x11_sync_object = 0; +int GLAD_GL_GREMEDY_frame_terminator = 0; +int GLAD_GL_GREMEDY_string_marker = 0; +int GLAD_GL_HP_convolution_border_modes = 0; +int GLAD_GL_HP_image_transform = 0; +int GLAD_GL_HP_occlusion_test = 0; +int GLAD_GL_HP_texture_lighting = 0; +int GLAD_GL_IBM_cull_vertex = 0; +int GLAD_GL_IBM_multimode_draw_arrays = 0; +int GLAD_GL_IBM_rasterpos_clip = 0; +int GLAD_GL_IBM_static_data = 0; +int GLAD_GL_IBM_texture_mirrored_repeat = 0; +int GLAD_GL_IBM_vertex_array_lists = 0; +int GLAD_GL_INGR_blend_func_separate = 0; +int GLAD_GL_INGR_color_clamp = 0; +int GLAD_GL_INGR_interlace_read = 0; +int GLAD_GL_INTEL_blackhole_render = 0; +int GLAD_GL_INTEL_conservative_rasterization = 0; +int GLAD_GL_INTEL_fragment_shader_ordering = 0; +int GLAD_GL_INTEL_framebuffer_CMAA = 0; +int GLAD_GL_INTEL_map_texture = 0; +int GLAD_GL_INTEL_parallel_arrays = 0; +int GLAD_GL_INTEL_performance_query = 0; +int GLAD_GL_KHR_blend_equation_advanced = 0; +int GLAD_GL_KHR_blend_equation_advanced_coherent = 0; +int GLAD_GL_KHR_context_flush_control = 0; +int GLAD_GL_KHR_debug = 0; +int GLAD_GL_KHR_no_error = 0; +int GLAD_GL_KHR_parallel_shader_compile = 0; +int GLAD_GL_KHR_robust_buffer_access_behavior = 0; +int GLAD_GL_KHR_robustness = 0; +int GLAD_GL_KHR_shader_subgroup = 0; +int GLAD_GL_KHR_texture_compression_astc_hdr = 0; +int GLAD_GL_KHR_texture_compression_astc_ldr = 0; +int GLAD_GL_KHR_texture_compression_astc_sliced_3d = 0; +int GLAD_GL_MESAX_texture_stack = 0; +int GLAD_GL_MESA_framebuffer_flip_y = 0; +int GLAD_GL_MESA_pack_invert = 0; +int GLAD_GL_MESA_program_binary_formats = 0; +int GLAD_GL_MESA_resize_buffers = 0; +int GLAD_GL_MESA_shader_integer_functions = 0; +int GLAD_GL_MESA_tile_raster_order = 0; +int GLAD_GL_MESA_window_pos = 0; +int GLAD_GL_MESA_ycbcr_texture = 0; +int GLAD_GL_NVX_blend_equation_advanced_multi_draw_buffers = 0; +int GLAD_GL_NVX_conditional_render = 0; +int GLAD_GL_NVX_gpu_memory_info = 0; +int GLAD_GL_NVX_gpu_multicast2 = 0; +int GLAD_GL_NVX_linked_gpu_multicast = 0; +int GLAD_GL_NVX_progress_fence = 0; +int GLAD_GL_NV_alpha_to_coverage_dither_control = 0; +int GLAD_GL_NV_bindless_multi_draw_indirect = 0; +int GLAD_GL_NV_bindless_multi_draw_indirect_count = 0; +int GLAD_GL_NV_bindless_texture = 0; +int GLAD_GL_NV_blend_equation_advanced = 0; +int GLAD_GL_NV_blend_equation_advanced_coherent = 0; +int GLAD_GL_NV_blend_minmax_factor = 0; +int GLAD_GL_NV_blend_square = 0; +int GLAD_GL_NV_clip_space_w_scaling = 0; +int GLAD_GL_NV_command_list = 0; +int GLAD_GL_NV_compute_program5 = 0; +int GLAD_GL_NV_compute_shader_derivatives = 0; +int GLAD_GL_NV_conditional_render = 0; +int GLAD_GL_NV_conservative_raster = 0; +int GLAD_GL_NV_conservative_raster_dilate = 0; +int GLAD_GL_NV_conservative_raster_pre_snap = 0; +int GLAD_GL_NV_conservative_raster_pre_snap_triangles = 0; +int GLAD_GL_NV_conservative_raster_underestimation = 0; +int GLAD_GL_NV_copy_depth_to_color = 0; +int GLAD_GL_NV_copy_image = 0; +int GLAD_GL_NV_deep_texture3D = 0; +int GLAD_GL_NV_depth_buffer_float = 0; +int GLAD_GL_NV_depth_clamp = 0; +int GLAD_GL_NV_draw_texture = 0; +int GLAD_GL_NV_draw_vulkan_image = 0; +int GLAD_GL_NV_evaluators = 0; +int GLAD_GL_NV_explicit_multisample = 0; +int GLAD_GL_NV_fence = 0; +int GLAD_GL_NV_fill_rectangle = 0; +int GLAD_GL_NV_float_buffer = 0; +int GLAD_GL_NV_fog_distance = 0; +int GLAD_GL_NV_fragment_coverage_to_color = 0; +int GLAD_GL_NV_fragment_program = 0; +int GLAD_GL_NV_fragment_program2 = 0; +int GLAD_GL_NV_fragment_program4 = 0; +int GLAD_GL_NV_fragment_program_option = 0; +int GLAD_GL_NV_fragment_shader_barycentric = 0; +int GLAD_GL_NV_fragment_shader_interlock = 0; +int GLAD_GL_NV_framebuffer_mixed_samples = 0; +int GLAD_GL_NV_framebuffer_multisample_coverage = 0; +int GLAD_GL_NV_geometry_program4 = 0; +int GLAD_GL_NV_geometry_shader4 = 0; +int GLAD_GL_NV_geometry_shader_passthrough = 0; +int GLAD_GL_NV_gpu_multicast = 0; +int GLAD_GL_NV_gpu_program4 = 0; +int GLAD_GL_NV_gpu_program5 = 0; +int GLAD_GL_NV_gpu_program5_mem_extended = 0; +int GLAD_GL_NV_gpu_shader5 = 0; +int GLAD_GL_NV_half_float = 0; +int GLAD_GL_NV_internalformat_sample_query = 0; +int GLAD_GL_NV_light_max_exponent = 0; +int GLAD_GL_NV_memory_attachment = 0; +int GLAD_GL_NV_mesh_shader = 0; +int GLAD_GL_NV_multisample_coverage = 0; +int GLAD_GL_NV_multisample_filter_hint = 0; +int GLAD_GL_NV_occlusion_query = 0; +int GLAD_GL_NV_packed_depth_stencil = 0; +int GLAD_GL_NV_parameter_buffer_object = 0; +int GLAD_GL_NV_parameter_buffer_object2 = 0; +int GLAD_GL_NV_path_rendering = 0; +int GLAD_GL_NV_path_rendering_shared_edge = 0; +int GLAD_GL_NV_pixel_data_range = 0; +int GLAD_GL_NV_point_sprite = 0; +int GLAD_GL_NV_present_video = 0; +int GLAD_GL_NV_primitive_restart = 0; +int GLAD_GL_NV_query_resource = 0; +int GLAD_GL_NV_query_resource_tag = 0; +int GLAD_GL_NV_register_combiners = 0; +int GLAD_GL_NV_register_combiners2 = 0; +int GLAD_GL_NV_representative_fragment_test = 0; +int GLAD_GL_NV_robustness_video_memory_purge = 0; +int GLAD_GL_NV_sample_locations = 0; +int GLAD_GL_NV_sample_mask_override_coverage = 0; +int GLAD_GL_NV_scissor_exclusive = 0; +int GLAD_GL_NV_shader_atomic_counters = 0; +int GLAD_GL_NV_shader_atomic_float = 0; +int GLAD_GL_NV_shader_atomic_float64 = 0; +int GLAD_GL_NV_shader_atomic_fp16_vector = 0; +int GLAD_GL_NV_shader_atomic_int64 = 0; +int GLAD_GL_NV_shader_buffer_load = 0; +int GLAD_GL_NV_shader_buffer_store = 0; +int GLAD_GL_NV_shader_storage_buffer_object = 0; +int GLAD_GL_NV_shader_subgroup_partitioned = 0; +int GLAD_GL_NV_shader_texture_footprint = 0; +int GLAD_GL_NV_shader_thread_group = 0; +int GLAD_GL_NV_shader_thread_shuffle = 0; +int GLAD_GL_NV_shading_rate_image = 0; +int GLAD_GL_NV_stereo_view_rendering = 0; +int GLAD_GL_NV_tessellation_program5 = 0; +int GLAD_GL_NV_texgen_emboss = 0; +int GLAD_GL_NV_texgen_reflection = 0; +int GLAD_GL_NV_texture_barrier = 0; +int GLAD_GL_NV_texture_compression_vtc = 0; +int GLAD_GL_NV_texture_env_combine4 = 0; +int GLAD_GL_NV_texture_expand_normal = 0; +int GLAD_GL_NV_texture_multisample = 0; +int GLAD_GL_NV_texture_rectangle = 0; +int GLAD_GL_NV_texture_rectangle_compressed = 0; +int GLAD_GL_NV_texture_shader = 0; +int GLAD_GL_NV_texture_shader2 = 0; +int GLAD_GL_NV_texture_shader3 = 0; +int GLAD_GL_NV_transform_feedback = 0; +int GLAD_GL_NV_transform_feedback2 = 0; +int GLAD_GL_NV_uniform_buffer_unified_memory = 0; +int GLAD_GL_NV_vdpau_interop = 0; +int GLAD_GL_NV_vdpau_interop2 = 0; +int GLAD_GL_NV_vertex_array_range = 0; +int GLAD_GL_NV_vertex_array_range2 = 0; +int GLAD_GL_NV_vertex_attrib_integer_64bit = 0; +int GLAD_GL_NV_vertex_buffer_unified_memory = 0; +int GLAD_GL_NV_vertex_program = 0; +int GLAD_GL_NV_vertex_program1_1 = 0; +int GLAD_GL_NV_vertex_program2 = 0; +int GLAD_GL_NV_vertex_program2_option = 0; +int GLAD_GL_NV_vertex_program3 = 0; +int GLAD_GL_NV_vertex_program4 = 0; +int GLAD_GL_NV_video_capture = 0; +int GLAD_GL_NV_viewport_array2 = 0; +int GLAD_GL_NV_viewport_swizzle = 0; +int GLAD_GL_OES_byte_coordinates = 0; +int GLAD_GL_OES_compressed_paletted_texture = 0; +int GLAD_GL_OES_fixed_point = 0; +int GLAD_GL_OES_query_matrix = 0; +int GLAD_GL_OES_read_format = 0; +int GLAD_GL_OES_single_precision = 0; +int GLAD_GL_OML_interlace = 0; +int GLAD_GL_OML_resample = 0; +int GLAD_GL_OML_subsample = 0; +int GLAD_GL_OVR_multiview = 0; +int GLAD_GL_OVR_multiview2 = 0; +int GLAD_GL_PGI_misc_hints = 0; +int GLAD_GL_PGI_vertex_hints = 0; +int GLAD_GL_REND_screen_coordinates = 0; +int GLAD_GL_S3_s3tc = 0; +int GLAD_GL_SGIS_detail_texture = 0; +int GLAD_GL_SGIS_fog_function = 0; +int GLAD_GL_SGIS_generate_mipmap = 0; +int GLAD_GL_SGIS_multisample = 0; +int GLAD_GL_SGIS_pixel_texture = 0; +int GLAD_GL_SGIS_point_line_texgen = 0; +int GLAD_GL_SGIS_point_parameters = 0; +int GLAD_GL_SGIS_sharpen_texture = 0; +int GLAD_GL_SGIS_texture4D = 0; +int GLAD_GL_SGIS_texture_border_clamp = 0; +int GLAD_GL_SGIS_texture_color_mask = 0; +int GLAD_GL_SGIS_texture_edge_clamp = 0; +int GLAD_GL_SGIS_texture_filter4 = 0; +int GLAD_GL_SGIS_texture_lod = 0; +int GLAD_GL_SGIS_texture_select = 0; +int GLAD_GL_SGIX_async = 0; +int GLAD_GL_SGIX_async_histogram = 0; +int GLAD_GL_SGIX_async_pixel = 0; +int GLAD_GL_SGIX_blend_alpha_minmax = 0; +int GLAD_GL_SGIX_calligraphic_fragment = 0; +int GLAD_GL_SGIX_clipmap = 0; +int GLAD_GL_SGIX_convolution_accuracy = 0; +int GLAD_GL_SGIX_depth_pass_instrument = 0; +int GLAD_GL_SGIX_depth_texture = 0; +int GLAD_GL_SGIX_flush_raster = 0; +int GLAD_GL_SGIX_fog_offset = 0; +int GLAD_GL_SGIX_fragment_lighting = 0; +int GLAD_GL_SGIX_framezoom = 0; +int GLAD_GL_SGIX_igloo_interface = 0; +int GLAD_GL_SGIX_instruments = 0; +int GLAD_GL_SGIX_interlace = 0; +int GLAD_GL_SGIX_ir_instrument1 = 0; +int GLAD_GL_SGIX_list_priority = 0; +int GLAD_GL_SGIX_pixel_texture = 0; +int GLAD_GL_SGIX_pixel_tiles = 0; +int GLAD_GL_SGIX_polynomial_ffd = 0; +int GLAD_GL_SGIX_reference_plane = 0; +int GLAD_GL_SGIX_resample = 0; +int GLAD_GL_SGIX_scalebias_hint = 0; +int GLAD_GL_SGIX_shadow = 0; +int GLAD_GL_SGIX_shadow_ambient = 0; +int GLAD_GL_SGIX_sprite = 0; +int GLAD_GL_SGIX_subsample = 0; +int GLAD_GL_SGIX_tag_sample_buffer = 0; +int GLAD_GL_SGIX_texture_add_env = 0; +int GLAD_GL_SGIX_texture_coordinate_clamp = 0; +int GLAD_GL_SGIX_texture_lod_bias = 0; +int GLAD_GL_SGIX_texture_multi_buffer = 0; +int GLAD_GL_SGIX_texture_scale_bias = 0; +int GLAD_GL_SGIX_vertex_preclip = 0; +int GLAD_GL_SGIX_ycrcb = 0; +int GLAD_GL_SGIX_ycrcb_subsample = 0; +int GLAD_GL_SGIX_ycrcba = 0; +int GLAD_GL_SGI_color_matrix = 0; +int GLAD_GL_SGI_color_table = 0; +int GLAD_GL_SGI_texture_color_table = 0; +int GLAD_GL_SUNX_constant_data = 0; +int GLAD_GL_SUN_convolution_border_modes = 0; +int GLAD_GL_SUN_global_alpha = 0; +int GLAD_GL_SUN_mesh_array = 0; +int GLAD_GL_SUN_slice_accum = 0; +int GLAD_GL_SUN_triangle_list = 0; +int GLAD_GL_SUN_vertex = 0; +int GLAD_GL_WIN_phong_shading = 0; +int GLAD_GL_WIN_specular_fog = 0; +PFNGLTBUFFERMASK3DFXPROC glad_glTbufferMask3DFX = NULL; +PFNGLDEBUGMESSAGEENABLEAMDPROC glad_glDebugMessageEnableAMD = NULL; +PFNGLDEBUGMESSAGEINSERTAMDPROC glad_glDebugMessageInsertAMD = NULL; +PFNGLDEBUGMESSAGECALLBACKAMDPROC glad_glDebugMessageCallbackAMD = NULL; +PFNGLGETDEBUGMESSAGELOGAMDPROC glad_glGetDebugMessageLogAMD = NULL; +PFNGLBLENDFUNCINDEXEDAMDPROC glad_glBlendFuncIndexedAMD = NULL; +PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC glad_glBlendFuncSeparateIndexedAMD = NULL; +PFNGLBLENDEQUATIONINDEXEDAMDPROC glad_glBlendEquationIndexedAMD = NULL; +PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC glad_glBlendEquationSeparateIndexedAMD = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glRenderbufferStorageMultisampleAdvancedAMD = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glNamedRenderbufferStorageMultisampleAdvancedAMD = NULL; +PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC glad_glFramebufferSamplePositionsfvAMD = NULL; +PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC glad_glNamedFramebufferSamplePositionsfvAMD = NULL; +PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC glad_glGetFramebufferParameterfvAMD = NULL; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC glad_glGetNamedFramebufferParameterfvAMD = NULL; +PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV = NULL; +PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV = NULL; +PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV = NULL; +PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV = NULL; +PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV = NULL; +PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV = NULL; +PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV = NULL; +PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV = NULL; +PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV = NULL; +PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV = NULL; +PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV = NULL; +PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV = NULL; +PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV = NULL; +PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV = NULL; +PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV = NULL; +PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV = NULL; +PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV = NULL; +PFNGLGETUNIFORMUI64VNVPROC glad_glGetUniformui64vNV = NULL; +PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV = NULL; +PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV = NULL; +PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV = NULL; +PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV = NULL; +PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV = NULL; +PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV = NULL; +PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV = NULL; +PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV = NULL; +PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV = NULL; +PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV = NULL; +PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV = NULL; +PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV = NULL; +PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV = NULL; +PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV = NULL; +PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV = NULL; +PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV = NULL; +PFNGLVERTEXATTRIBPARAMETERIAMDPROC glad_glVertexAttribParameteriAMD = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC glad_glMultiDrawArraysIndirectAMD = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC glad_glMultiDrawElementsIndirectAMD = NULL; +PFNGLGENNAMESAMDPROC glad_glGenNamesAMD = NULL; +PFNGLDELETENAMESAMDPROC glad_glDeleteNamesAMD = NULL; +PFNGLISNAMEAMDPROC glad_glIsNameAMD = NULL; +PFNGLQUERYOBJECTPARAMETERUIAMDPROC glad_glQueryObjectParameteruiAMD = NULL; +PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD = NULL; +PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD = NULL; +PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD = NULL; +PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD = NULL; +PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD = NULL; +PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD = NULL; +PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD = NULL; +PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD = NULL; +PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD = NULL; +PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD = NULL; +PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD = NULL; +PFNGLSETMULTISAMPLEFVAMDPROC glad_glSetMultisamplefvAMD = NULL; +PFNGLTEXSTORAGESPARSEAMDPROC glad_glTexStorageSparseAMD = NULL; +PFNGLTEXTURESTORAGESPARSEAMDPROC glad_glTextureStorageSparseAMD = NULL; +PFNGLSTENCILOPVALUEAMDPROC glad_glStencilOpValueAMD = NULL; +PFNGLTESSELLATIONFACTORAMDPROC glad_glTessellationFactorAMD = NULL; +PFNGLTESSELLATIONMODEAMDPROC glad_glTessellationModeAMD = NULL; +PFNGLELEMENTPOINTERAPPLEPROC glad_glElementPointerAPPLE = NULL; +PFNGLDRAWELEMENTARRAYAPPLEPROC glad_glDrawElementArrayAPPLE = NULL; +PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC glad_glDrawRangeElementArrayAPPLE = NULL; +PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC glad_glMultiDrawElementArrayAPPLE = NULL; +PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC glad_glMultiDrawRangeElementArrayAPPLE = NULL; +PFNGLGENFENCESAPPLEPROC glad_glGenFencesAPPLE = NULL; +PFNGLDELETEFENCESAPPLEPROC glad_glDeleteFencesAPPLE = NULL; +PFNGLSETFENCEAPPLEPROC glad_glSetFenceAPPLE = NULL; +PFNGLISFENCEAPPLEPROC glad_glIsFenceAPPLE = NULL; +PFNGLTESTFENCEAPPLEPROC glad_glTestFenceAPPLE = NULL; +PFNGLFINISHFENCEAPPLEPROC glad_glFinishFenceAPPLE = NULL; +PFNGLTESTOBJECTAPPLEPROC glad_glTestObjectAPPLE = NULL; +PFNGLFINISHOBJECTAPPLEPROC glad_glFinishObjectAPPLE = NULL; +PFNGLBUFFERPARAMETERIAPPLEPROC glad_glBufferParameteriAPPLE = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glad_glFlushMappedBufferRangeAPPLE = NULL; +PFNGLOBJECTPURGEABLEAPPLEPROC glad_glObjectPurgeableAPPLE = NULL; +PFNGLOBJECTUNPURGEABLEAPPLEPROC glad_glObjectUnpurgeableAPPLE = NULL; +PFNGLGETOBJECTPARAMETERIVAPPLEPROC glad_glGetObjectParameterivAPPLE = NULL; +PFNGLTEXTURERANGEAPPLEPROC glad_glTextureRangeAPPLE = NULL; +PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC glad_glGetTexParameterPointervAPPLE = NULL; +PFNGLBINDVERTEXARRAYAPPLEPROC glad_glBindVertexArrayAPPLE = NULL; +PFNGLDELETEVERTEXARRAYSAPPLEPROC glad_glDeleteVertexArraysAPPLE = NULL; +PFNGLGENVERTEXARRAYSAPPLEPROC glad_glGenVertexArraysAPPLE = NULL; +PFNGLISVERTEXARRAYAPPLEPROC glad_glIsVertexArrayAPPLE = NULL; +PFNGLVERTEXARRAYRANGEAPPLEPROC glad_glVertexArrayRangeAPPLE = NULL; +PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC glad_glFlushVertexArrayRangeAPPLE = NULL; +PFNGLVERTEXARRAYPARAMETERIAPPLEPROC glad_glVertexArrayParameteriAPPLE = NULL; +PFNGLENABLEVERTEXATTRIBAPPLEPROC glad_glEnableVertexAttribAPPLE = NULL; +PFNGLDISABLEVERTEXATTRIBAPPLEPROC glad_glDisableVertexAttribAPPLE = NULL; +PFNGLISVERTEXATTRIBENABLEDAPPLEPROC glad_glIsVertexAttribEnabledAPPLE = NULL; +PFNGLMAPVERTEXATTRIB1DAPPLEPROC glad_glMapVertexAttrib1dAPPLE = NULL; +PFNGLMAPVERTEXATTRIB1FAPPLEPROC glad_glMapVertexAttrib1fAPPLE = NULL; +PFNGLMAPVERTEXATTRIB2DAPPLEPROC glad_glMapVertexAttrib2dAPPLE = NULL; +PFNGLMAPVERTEXATTRIB2FAPPLEPROC glad_glMapVertexAttrib2fAPPLE = NULL; +PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion = NULL; +PFNGLPRIMITIVEBOUNDINGBOXARBPROC glad_glPrimitiveBoundingBoxARB = NULL; +PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance = NULL; +PFNGLGETTEXTUREHANDLEARBPROC glad_glGetTextureHandleARB = NULL; +PFNGLGETTEXTURESAMPLERHANDLEARBPROC glad_glGetTextureSamplerHandleARB = NULL; +PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glad_glMakeTextureHandleResidentARB = NULL; +PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glad_glMakeTextureHandleNonResidentARB = NULL; +PFNGLGETIMAGEHANDLEARBPROC glad_glGetImageHandleARB = NULL; +PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glad_glMakeImageHandleResidentARB = NULL; +PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glad_glMakeImageHandleNonResidentARB = NULL; +PFNGLUNIFORMHANDLEUI64ARBPROC glad_glUniformHandleui64ARB = NULL; +PFNGLUNIFORMHANDLEUI64VARBPROC glad_glUniformHandleui64vARB = NULL; +PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glad_glProgramUniformHandleui64ARB = NULL; +PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glad_glProgramUniformHandleui64vARB = NULL; +PFNGLISTEXTUREHANDLERESIDENTARBPROC glad_glIsTextureHandleResidentARB = NULL; +PFNGLISIMAGEHANDLERESIDENTARBPROC glad_glIsImageHandleResidentARB = NULL; +PFNGLVERTEXATTRIBL1UI64ARBPROC glad_glVertexAttribL1ui64ARB = NULL; +PFNGLVERTEXATTRIBL1UI64VARBPROC glad_glVertexAttribL1ui64vARB = NULL; +PFNGLGETVERTEXATTRIBLUI64VARBPROC glad_glGetVertexAttribLui64vARB = NULL; +PFNGLBUFFERSTORAGEPROC glad_glBufferStorage = NULL; +PFNGLCREATESYNCFROMCLEVENTARBPROC glad_glCreateSyncFromCLeventARB = NULL; +PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData = NULL; +PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData = NULL; +PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage = NULL; +PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage = NULL; +PFNGLCLIPCONTROLPROC glad_glClipControl = NULL; +PFNGLCLAMPCOLORARBPROC glad_glClampColorARB = NULL; +PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute = NULL; +PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect = NULL; +PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glad_glDispatchComputeGroupSizeARB = NULL; +PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData = NULL; +PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB = NULL; +PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB = NULL; +PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB = NULL; +PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB = NULL; +PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks = NULL; +PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase = NULL; +PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange = NULL; +PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv = NULL; +PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v = NULL; +PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v = NULL; +PFNGLCREATEBUFFERSPROC glad_glCreateBuffers = NULL; +PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage = NULL; +PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData = NULL; +PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData = NULL; +PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData = NULL; +PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData = NULL; +PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData = NULL; +PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer = NULL; +PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange = NULL; +PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer = NULL; +PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange = NULL; +PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv = NULL; +PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v = NULL; +PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv = NULL; +PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData = NULL; +PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers = NULL; +PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer = NULL; +PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer = NULL; +PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer = NULL; +PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers = NULL; +PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer = NULL; +PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData = NULL; +PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData = NULL; +PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv = NULL; +PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv = NULL; +PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv = NULL; +PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi = NULL; +PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer = NULL; +PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus = NULL; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv = NULL; +PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv = NULL; +PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample = NULL; +PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv = NULL; +PFNGLCREATETEXTURESPROC glad_glCreateTextures = NULL; +PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer = NULL; +PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange = NULL; +PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D = NULL; +PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D = NULL; +PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D = NULL; +PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample = NULL; +PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample = NULL; +PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D = NULL; +PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D = NULL; +PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D = NULL; +PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D = NULL; +PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D = NULL; +PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D = NULL; +PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf = NULL; +PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv = NULL; +PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri = NULL; +PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv = NULL; +PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv = NULL; +PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv = NULL; +PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap = NULL; +PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit = NULL; +PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage = NULL; +PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage = NULL; +PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv = NULL; +PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv = NULL; +PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv = NULL; +PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv = NULL; +PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv = NULL; +PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv = NULL; +PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays = NULL; +PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib = NULL; +PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib = NULL; +PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer = NULL; +PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer = NULL; +PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers = NULL; +PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding = NULL; +PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat = NULL; +PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat = NULL; +PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat = NULL; +PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor = NULL; +PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv = NULL; +PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv = NULL; +PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv = NULL; +PFNGLCREATESAMPLERSPROC glad_glCreateSamplers = NULL; +PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines = NULL; +PFNGLCREATEQUERIESPROC glad_glCreateQueries = NULL; +PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v = NULL; +PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv = NULL; +PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v = NULL; +PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv = NULL; +PFNGLDRAWBUFFERSARBPROC glad_glDrawBuffersARB = NULL; +PFNGLBLENDEQUATIONIARBPROC glad_glBlendEquationiARB = NULL; +PFNGLBLENDEQUATIONSEPARATEIARBPROC glad_glBlendEquationSeparateiARB = NULL; +PFNGLBLENDFUNCIARBPROC glad_glBlendFunciARB = NULL; +PFNGLBLENDFUNCSEPARATEIARBPROC glad_glBlendFuncSeparateiARB = NULL; +PFNGLDRAWARRAYSINSTANCEDARBPROC glad_glDrawArraysInstancedARB = NULL; +PFNGLDRAWELEMENTSINSTANCEDARBPROC glad_glDrawElementsInstancedARB = NULL; +PFNGLPROGRAMSTRINGARBPROC glad_glProgramStringARB = NULL; +PFNGLBINDPROGRAMARBPROC glad_glBindProgramARB = NULL; +PFNGLDELETEPROGRAMSARBPROC glad_glDeleteProgramsARB = NULL; +PFNGLGENPROGRAMSARBPROC glad_glGenProgramsARB = NULL; +PFNGLPROGRAMENVPARAMETER4DARBPROC glad_glProgramEnvParameter4dARB = NULL; +PFNGLPROGRAMENVPARAMETER4DVARBPROC glad_glProgramEnvParameter4dvARB = NULL; +PFNGLPROGRAMENVPARAMETER4FARBPROC glad_glProgramEnvParameter4fARB = NULL; +PFNGLPROGRAMENVPARAMETER4FVARBPROC glad_glProgramEnvParameter4fvARB = NULL; +PFNGLPROGRAMLOCALPARAMETER4DARBPROC glad_glProgramLocalParameter4dARB = NULL; +PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glad_glProgramLocalParameter4dvARB = NULL; +PFNGLPROGRAMLOCALPARAMETER4FARBPROC glad_glProgramLocalParameter4fARB = NULL; +PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glad_glProgramLocalParameter4fvARB = NULL; +PFNGLGETPROGRAMENVPARAMETERDVARBPROC glad_glGetProgramEnvParameterdvARB = NULL; +PFNGLGETPROGRAMENVPARAMETERFVARBPROC glad_glGetProgramEnvParameterfvARB = NULL; +PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glad_glGetProgramLocalParameterdvARB = NULL; +PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glad_glGetProgramLocalParameterfvARB = NULL; +PFNGLGETPROGRAMIVARBPROC glad_glGetProgramivARB = NULL; +PFNGLGETPROGRAMSTRINGARBPROC glad_glGetProgramStringARB = NULL; +PFNGLISPROGRAMARBPROC glad_glIsProgramARB = NULL; +PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri = NULL; +PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv = NULL; +PFNGLPROGRAMPARAMETERIARBPROC glad_glProgramParameteriARB = NULL; +PFNGLFRAMEBUFFERTEXTUREARBPROC glad_glFramebufferTextureARB = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERARBPROC glad_glFramebufferTextureLayerARB = NULL; +PFNGLFRAMEBUFFERTEXTUREFACEARBPROC glad_glFramebufferTextureFaceARB = NULL; +PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage = NULL; +PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage = NULL; +PFNGLSPECIALIZESHADERARBPROC glad_glSpecializeShaderARB = NULL; +PFNGLUNIFORM1I64ARBPROC glad_glUniform1i64ARB = NULL; +PFNGLUNIFORM2I64ARBPROC glad_glUniform2i64ARB = NULL; +PFNGLUNIFORM3I64ARBPROC glad_glUniform3i64ARB = NULL; +PFNGLUNIFORM4I64ARBPROC glad_glUniform4i64ARB = NULL; +PFNGLUNIFORM1I64VARBPROC glad_glUniform1i64vARB = NULL; +PFNGLUNIFORM2I64VARBPROC glad_glUniform2i64vARB = NULL; +PFNGLUNIFORM3I64VARBPROC glad_glUniform3i64vARB = NULL; +PFNGLUNIFORM4I64VARBPROC glad_glUniform4i64vARB = NULL; +PFNGLUNIFORM1UI64ARBPROC glad_glUniform1ui64ARB = NULL; +PFNGLUNIFORM2UI64ARBPROC glad_glUniform2ui64ARB = NULL; +PFNGLUNIFORM3UI64ARBPROC glad_glUniform3ui64ARB = NULL; +PFNGLUNIFORM4UI64ARBPROC glad_glUniform4ui64ARB = NULL; +PFNGLUNIFORM1UI64VARBPROC glad_glUniform1ui64vARB = NULL; +PFNGLUNIFORM2UI64VARBPROC glad_glUniform2ui64vARB = NULL; +PFNGLUNIFORM3UI64VARBPROC glad_glUniform3ui64vARB = NULL; +PFNGLUNIFORM4UI64VARBPROC glad_glUniform4ui64vARB = NULL; +PFNGLGETUNIFORMI64VARBPROC glad_glGetUniformi64vARB = NULL; +PFNGLGETUNIFORMUI64VARBPROC glad_glGetUniformui64vARB = NULL; +PFNGLGETNUNIFORMI64VARBPROC glad_glGetnUniformi64vARB = NULL; +PFNGLGETNUNIFORMUI64VARBPROC glad_glGetnUniformui64vARB = NULL; +PFNGLPROGRAMUNIFORM1I64ARBPROC glad_glProgramUniform1i64ARB = NULL; +PFNGLPROGRAMUNIFORM2I64ARBPROC glad_glProgramUniform2i64ARB = NULL; +PFNGLPROGRAMUNIFORM3I64ARBPROC glad_glProgramUniform3i64ARB = NULL; +PFNGLPROGRAMUNIFORM4I64ARBPROC glad_glProgramUniform4i64ARB = NULL; +PFNGLPROGRAMUNIFORM1I64VARBPROC glad_glProgramUniform1i64vARB = NULL; +PFNGLPROGRAMUNIFORM2I64VARBPROC glad_glProgramUniform2i64vARB = NULL; +PFNGLPROGRAMUNIFORM3I64VARBPROC glad_glProgramUniform3i64vARB = NULL; +PFNGLPROGRAMUNIFORM4I64VARBPROC glad_glProgramUniform4i64vARB = NULL; +PFNGLPROGRAMUNIFORM1UI64ARBPROC glad_glProgramUniform1ui64ARB = NULL; +PFNGLPROGRAMUNIFORM2UI64ARBPROC glad_glProgramUniform2ui64ARB = NULL; +PFNGLPROGRAMUNIFORM3UI64ARBPROC glad_glProgramUniform3ui64ARB = NULL; +PFNGLPROGRAMUNIFORM4UI64ARBPROC glad_glProgramUniform4ui64ARB = NULL; +PFNGLPROGRAMUNIFORM1UI64VARBPROC glad_glProgramUniform1ui64vARB = NULL; +PFNGLPROGRAMUNIFORM2UI64VARBPROC glad_glProgramUniform2ui64vARB = NULL; +PFNGLPROGRAMUNIFORM3UI64VARBPROC glad_glProgramUniform3ui64vARB = NULL; +PFNGLPROGRAMUNIFORM4UI64VARBPROC glad_glProgramUniform4ui64vARB = NULL; +PFNGLCOLORTABLEPROC glad_glColorTable = NULL; +PFNGLCOLORTABLEPARAMETERFVPROC glad_glColorTableParameterfv = NULL; +PFNGLCOLORTABLEPARAMETERIVPROC glad_glColorTableParameteriv = NULL; +PFNGLCOPYCOLORTABLEPROC glad_glCopyColorTable = NULL; +PFNGLGETCOLORTABLEPROC glad_glGetColorTable = NULL; +PFNGLGETCOLORTABLEPARAMETERFVPROC glad_glGetColorTableParameterfv = NULL; +PFNGLGETCOLORTABLEPARAMETERIVPROC glad_glGetColorTableParameteriv = NULL; +PFNGLCOLORSUBTABLEPROC glad_glColorSubTable = NULL; +PFNGLCOPYCOLORSUBTABLEPROC glad_glCopyColorSubTable = NULL; +PFNGLCONVOLUTIONFILTER1DPROC glad_glConvolutionFilter1D = NULL; +PFNGLCONVOLUTIONFILTER2DPROC glad_glConvolutionFilter2D = NULL; +PFNGLCONVOLUTIONPARAMETERFPROC glad_glConvolutionParameterf = NULL; +PFNGLCONVOLUTIONPARAMETERFVPROC glad_glConvolutionParameterfv = NULL; +PFNGLCONVOLUTIONPARAMETERIPROC glad_glConvolutionParameteri = NULL; +PFNGLCONVOLUTIONPARAMETERIVPROC glad_glConvolutionParameteriv = NULL; +PFNGLCOPYCONVOLUTIONFILTER1DPROC glad_glCopyConvolutionFilter1D = NULL; +PFNGLCOPYCONVOLUTIONFILTER2DPROC glad_glCopyConvolutionFilter2D = NULL; +PFNGLGETCONVOLUTIONFILTERPROC glad_glGetConvolutionFilter = NULL; +PFNGLGETCONVOLUTIONPARAMETERFVPROC glad_glGetConvolutionParameterfv = NULL; +PFNGLGETCONVOLUTIONPARAMETERIVPROC glad_glGetConvolutionParameteriv = NULL; +PFNGLGETSEPARABLEFILTERPROC glad_glGetSeparableFilter = NULL; +PFNGLSEPARABLEFILTER2DPROC glad_glSeparableFilter2D = NULL; +PFNGLGETHISTOGRAMPROC glad_glGetHistogram = NULL; +PFNGLGETHISTOGRAMPARAMETERFVPROC glad_glGetHistogramParameterfv = NULL; +PFNGLGETHISTOGRAMPARAMETERIVPROC glad_glGetHistogramParameteriv = NULL; +PFNGLGETMINMAXPROC glad_glGetMinmax = NULL; +PFNGLGETMINMAXPARAMETERFVPROC glad_glGetMinmaxParameterfv = NULL; +PFNGLGETMINMAXPARAMETERIVPROC glad_glGetMinmaxParameteriv = NULL; +PFNGLHISTOGRAMPROC glad_glHistogram = NULL; +PFNGLMINMAXPROC glad_glMinmax = NULL; +PFNGLRESETHISTOGRAMPROC glad_glResetHistogram = NULL; +PFNGLRESETMINMAXPROC glad_glResetMinmax = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glad_glMultiDrawArraysIndirectCountARB = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glad_glMultiDrawElementsIndirectCountARB = NULL; +PFNGLVERTEXATTRIBDIVISORARBPROC glad_glVertexAttribDivisorARB = NULL; +PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ = NULL; +PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v = NULL; +PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage = NULL; +PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage = NULL; +PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData = NULL; +PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData = NULL; +PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer = NULL; +PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer = NULL; +PFNGLCURRENTPALETTEMATRIXARBPROC glad_glCurrentPaletteMatrixARB = NULL; +PFNGLMATRIXINDEXUBVARBPROC glad_glMatrixIndexubvARB = NULL; +PFNGLMATRIXINDEXUSVARBPROC glad_glMatrixIndexusvARB = NULL; +PFNGLMATRIXINDEXUIVARBPROC glad_glMatrixIndexuivARB = NULL; +PFNGLMATRIXINDEXPOINTERARBPROC glad_glMatrixIndexPointerARB = NULL; +PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase = NULL; +PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange = NULL; +PFNGLBINDTEXTURESPROC glad_glBindTextures = NULL; +PFNGLBINDSAMPLERSPROC glad_glBindSamplers = NULL; +PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures = NULL; +PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect = NULL; +PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB = NULL; +PFNGLACTIVETEXTUREARBPROC glad_glActiveTextureARB = NULL; +PFNGLCLIENTACTIVETEXTUREARBPROC glad_glClientActiveTextureARB = NULL; +PFNGLMULTITEXCOORD1DARBPROC glad_glMultiTexCoord1dARB = NULL; +PFNGLMULTITEXCOORD1DVARBPROC glad_glMultiTexCoord1dvARB = NULL; +PFNGLMULTITEXCOORD1FARBPROC glad_glMultiTexCoord1fARB = NULL; +PFNGLMULTITEXCOORD1FVARBPROC glad_glMultiTexCoord1fvARB = NULL; +PFNGLMULTITEXCOORD1IARBPROC glad_glMultiTexCoord1iARB = NULL; +PFNGLMULTITEXCOORD1IVARBPROC glad_glMultiTexCoord1ivARB = NULL; +PFNGLMULTITEXCOORD1SARBPROC glad_glMultiTexCoord1sARB = NULL; +PFNGLMULTITEXCOORD1SVARBPROC glad_glMultiTexCoord1svARB = NULL; +PFNGLMULTITEXCOORD2DARBPROC glad_glMultiTexCoord2dARB = NULL; +PFNGLMULTITEXCOORD2DVARBPROC glad_glMultiTexCoord2dvARB = NULL; +PFNGLMULTITEXCOORD2FARBPROC glad_glMultiTexCoord2fARB = NULL; +PFNGLMULTITEXCOORD2FVARBPROC glad_glMultiTexCoord2fvARB = NULL; +PFNGLMULTITEXCOORD2IARBPROC glad_glMultiTexCoord2iARB = NULL; +PFNGLMULTITEXCOORD2IVARBPROC glad_glMultiTexCoord2ivARB = NULL; +PFNGLMULTITEXCOORD2SARBPROC glad_glMultiTexCoord2sARB = NULL; +PFNGLMULTITEXCOORD2SVARBPROC glad_glMultiTexCoord2svARB = NULL; +PFNGLMULTITEXCOORD3DARBPROC glad_glMultiTexCoord3dARB = NULL; +PFNGLMULTITEXCOORD3DVARBPROC glad_glMultiTexCoord3dvARB = NULL; +PFNGLMULTITEXCOORD3FARBPROC glad_glMultiTexCoord3fARB = NULL; +PFNGLMULTITEXCOORD3FVARBPROC glad_glMultiTexCoord3fvARB = NULL; +PFNGLMULTITEXCOORD3IARBPROC glad_glMultiTexCoord3iARB = NULL; +PFNGLMULTITEXCOORD3IVARBPROC glad_glMultiTexCoord3ivARB = NULL; +PFNGLMULTITEXCOORD3SARBPROC glad_glMultiTexCoord3sARB = NULL; +PFNGLMULTITEXCOORD3SVARBPROC glad_glMultiTexCoord3svARB = NULL; +PFNGLMULTITEXCOORD4DARBPROC glad_glMultiTexCoord4dARB = NULL; +PFNGLMULTITEXCOORD4DVARBPROC glad_glMultiTexCoord4dvARB = NULL; +PFNGLMULTITEXCOORD4FARBPROC glad_glMultiTexCoord4fARB = NULL; +PFNGLMULTITEXCOORD4FVARBPROC glad_glMultiTexCoord4fvARB = NULL; +PFNGLMULTITEXCOORD4IARBPROC glad_glMultiTexCoord4iARB = NULL; +PFNGLMULTITEXCOORD4IVARBPROC glad_glMultiTexCoord4ivARB = NULL; +PFNGLMULTITEXCOORD4SARBPROC glad_glMultiTexCoord4sARB = NULL; +PFNGLMULTITEXCOORD4SVARBPROC glad_glMultiTexCoord4svARB = NULL; +PFNGLGENQUERIESARBPROC glad_glGenQueriesARB = NULL; +PFNGLDELETEQUERIESARBPROC glad_glDeleteQueriesARB = NULL; +PFNGLISQUERYARBPROC glad_glIsQueryARB = NULL; +PFNGLBEGINQUERYARBPROC glad_glBeginQueryARB = NULL; +PFNGLENDQUERYARBPROC glad_glEndQueryARB = NULL; +PFNGLGETQUERYIVARBPROC glad_glGetQueryivARB = NULL; +PFNGLGETQUERYOBJECTIVARBPROC glad_glGetQueryObjectivARB = NULL; +PFNGLGETQUERYOBJECTUIVARBPROC glad_glGetQueryObjectuivARB = NULL; +PFNGLMAXSHADERCOMPILERTHREADSARBPROC glad_glMaxShaderCompilerThreadsARB = NULL; +PFNGLPOINTPARAMETERFARBPROC glad_glPointParameterfARB = NULL; +PFNGLPOINTPARAMETERFVARBPROC glad_glPointParameterfvARB = NULL; +PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp = NULL; +PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv = NULL; +PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex = NULL; +PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName = NULL; +PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv = NULL; +PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation = NULL; +PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex = NULL; +PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB = NULL; +PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB = NULL; +PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB = NULL; +PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB = NULL; +PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB = NULL; +PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB = NULL; +PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB = NULL; +PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB = NULL; +PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB = NULL; +PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB = NULL; +PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB = NULL; +PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB = NULL; +PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB = NULL; +PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB = NULL; +PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB = NULL; +PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB = NULL; +PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB = NULL; +PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB = NULL; +PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB = NULL; +PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB = NULL; +PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glFramebufferSampleLocationsfvARB = NULL; +PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glNamedFramebufferSampleLocationsfvARB = NULL; +PFNGLEVALUATEDEPTHVALUESARBPROC glad_glEvaluateDepthValuesARB = NULL; +PFNGLMINSAMPLESHADINGARBPROC glad_glMinSampleShadingARB = NULL; +PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv = NULL; +PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture = NULL; +PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier = NULL; +PFNGLDELETEOBJECTARBPROC glad_glDeleteObjectARB = NULL; +PFNGLGETHANDLEARBPROC glad_glGetHandleARB = NULL; +PFNGLDETACHOBJECTARBPROC glad_glDetachObjectARB = NULL; +PFNGLCREATESHADEROBJECTARBPROC glad_glCreateShaderObjectARB = NULL; +PFNGLSHADERSOURCEARBPROC glad_glShaderSourceARB = NULL; +PFNGLCOMPILESHADERARBPROC glad_glCompileShaderARB = NULL; +PFNGLCREATEPROGRAMOBJECTARBPROC glad_glCreateProgramObjectARB = NULL; +PFNGLATTACHOBJECTARBPROC glad_glAttachObjectARB = NULL; +PFNGLLINKPROGRAMARBPROC glad_glLinkProgramARB = NULL; +PFNGLUSEPROGRAMOBJECTARBPROC glad_glUseProgramObjectARB = NULL; +PFNGLVALIDATEPROGRAMARBPROC glad_glValidateProgramARB = NULL; +PFNGLUNIFORM1FARBPROC glad_glUniform1fARB = NULL; +PFNGLUNIFORM2FARBPROC glad_glUniform2fARB = NULL; +PFNGLUNIFORM3FARBPROC glad_glUniform3fARB = NULL; +PFNGLUNIFORM4FARBPROC glad_glUniform4fARB = NULL; +PFNGLUNIFORM1IARBPROC glad_glUniform1iARB = NULL; +PFNGLUNIFORM2IARBPROC glad_glUniform2iARB = NULL; +PFNGLUNIFORM3IARBPROC glad_glUniform3iARB = NULL; +PFNGLUNIFORM4IARBPROC glad_glUniform4iARB = NULL; +PFNGLUNIFORM1FVARBPROC glad_glUniform1fvARB = NULL; +PFNGLUNIFORM2FVARBPROC glad_glUniform2fvARB = NULL; +PFNGLUNIFORM3FVARBPROC glad_glUniform3fvARB = NULL; +PFNGLUNIFORM4FVARBPROC glad_glUniform4fvARB = NULL; +PFNGLUNIFORM1IVARBPROC glad_glUniform1ivARB = NULL; +PFNGLUNIFORM2IVARBPROC glad_glUniform2ivARB = NULL; +PFNGLUNIFORM3IVARBPROC glad_glUniform3ivARB = NULL; +PFNGLUNIFORM4IVARBPROC glad_glUniform4ivARB = NULL; +PFNGLUNIFORMMATRIX2FVARBPROC glad_glUniformMatrix2fvARB = NULL; +PFNGLUNIFORMMATRIX3FVARBPROC glad_glUniformMatrix3fvARB = NULL; +PFNGLUNIFORMMATRIX4FVARBPROC glad_glUniformMatrix4fvARB = NULL; +PFNGLGETOBJECTPARAMETERFVARBPROC glad_glGetObjectParameterfvARB = NULL; +PFNGLGETOBJECTPARAMETERIVARBPROC glad_glGetObjectParameterivARB = NULL; +PFNGLGETINFOLOGARBPROC glad_glGetInfoLogARB = NULL; +PFNGLGETATTACHEDOBJECTSARBPROC glad_glGetAttachedObjectsARB = NULL; +PFNGLGETUNIFORMLOCATIONARBPROC glad_glGetUniformLocationARB = NULL; +PFNGLGETACTIVEUNIFORMARBPROC glad_glGetActiveUniformARB = NULL; +PFNGLGETUNIFORMFVARBPROC glad_glGetUniformfvARB = NULL; +PFNGLGETUNIFORMIVARBPROC glad_glGetUniformivARB = NULL; +PFNGLGETSHADERSOURCEARBPROC glad_glGetShaderSourceARB = NULL; +PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding = NULL; +PFNGLNAMEDSTRINGARBPROC glad_glNamedStringARB = NULL; +PFNGLDELETENAMEDSTRINGARBPROC glad_glDeleteNamedStringARB = NULL; +PFNGLCOMPILESHADERINCLUDEARBPROC glad_glCompileShaderIncludeARB = NULL; +PFNGLISNAMEDSTRINGARBPROC glad_glIsNamedStringARB = NULL; +PFNGLGETNAMEDSTRINGARBPROC glad_glGetNamedStringARB = NULL; +PFNGLGETNAMEDSTRINGIVARBPROC glad_glGetNamedStringivARB = NULL; +PFNGLBUFFERPAGECOMMITMENTARBPROC glad_glBufferPageCommitmentARB = NULL; +PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC glad_glNamedBufferPageCommitmentEXT = NULL; +PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC glad_glNamedBufferPageCommitmentARB = NULL; +PFNGLTEXPAGECOMMITMENTARBPROC glad_glTexPageCommitmentARB = NULL; +PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier = NULL; +PFNGLTEXBUFFERARBPROC glad_glTexBufferARB = NULL; +PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange = NULL; +PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glad_glCompressedTexImage3DARB = NULL; +PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glad_glCompressedTexImage2DARB = NULL; +PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glad_glCompressedTexImage1DARB = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glad_glCompressedTexSubImage3DARB = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glad_glCompressedTexSubImage2DARB = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glad_glCompressedTexSubImage1DARB = NULL; +PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glad_glGetCompressedTexImageARB = NULL; +PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D = NULL; +PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D = NULL; +PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D = NULL; +PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample = NULL; +PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample = NULL; +PFNGLTEXTUREVIEWPROC glad_glTextureView = NULL; +PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced = NULL; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced = NULL; +PFNGLLOADTRANSPOSEMATRIXFARBPROC glad_glLoadTransposeMatrixfARB = NULL; +PFNGLLOADTRANSPOSEMATRIXDARBPROC glad_glLoadTransposeMatrixdARB = NULL; +PFNGLMULTTRANSPOSEMATRIXFARBPROC glad_glMultTransposeMatrixfARB = NULL; +PFNGLMULTTRANSPOSEMATRIXDARBPROC glad_glMultTransposeMatrixdARB = NULL; +PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer = NULL; +PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat = NULL; +PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat = NULL; +PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat = NULL; +PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding = NULL; +PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor = NULL; +PFNGLWEIGHTBVARBPROC glad_glWeightbvARB = NULL; +PFNGLWEIGHTSVARBPROC glad_glWeightsvARB = NULL; +PFNGLWEIGHTIVARBPROC glad_glWeightivARB = NULL; +PFNGLWEIGHTFVARBPROC glad_glWeightfvARB = NULL; +PFNGLWEIGHTDVARBPROC glad_glWeightdvARB = NULL; +PFNGLWEIGHTUBVARBPROC glad_glWeightubvARB = NULL; +PFNGLWEIGHTUSVARBPROC glad_glWeightusvARB = NULL; +PFNGLWEIGHTUIVARBPROC glad_glWeightuivARB = NULL; +PFNGLWEIGHTPOINTERARBPROC glad_glWeightPointerARB = NULL; +PFNGLVERTEXBLENDARBPROC glad_glVertexBlendARB = NULL; +PFNGLBINDBUFFERARBPROC glad_glBindBufferARB = NULL; +PFNGLDELETEBUFFERSARBPROC glad_glDeleteBuffersARB = NULL; +PFNGLGENBUFFERSARBPROC glad_glGenBuffersARB = NULL; +PFNGLISBUFFERARBPROC glad_glIsBufferARB = NULL; +PFNGLBUFFERDATAARBPROC glad_glBufferDataARB = NULL; +PFNGLBUFFERSUBDATAARBPROC glad_glBufferSubDataARB = NULL; +PFNGLGETBUFFERSUBDATAARBPROC glad_glGetBufferSubDataARB = NULL; +PFNGLMAPBUFFERARBPROC glad_glMapBufferARB = NULL; +PFNGLUNMAPBUFFERARBPROC glad_glUnmapBufferARB = NULL; +PFNGLGETBUFFERPARAMETERIVARBPROC glad_glGetBufferParameterivARB = NULL; +PFNGLGETBUFFERPOINTERVARBPROC glad_glGetBufferPointervARB = NULL; +PFNGLVERTEXATTRIB1DARBPROC glad_glVertexAttrib1dARB = NULL; +PFNGLVERTEXATTRIB1DVARBPROC glad_glVertexAttrib1dvARB = NULL; +PFNGLVERTEXATTRIB1FARBPROC glad_glVertexAttrib1fARB = NULL; +PFNGLVERTEXATTRIB1FVARBPROC glad_glVertexAttrib1fvARB = NULL; +PFNGLVERTEXATTRIB1SARBPROC glad_glVertexAttrib1sARB = NULL; +PFNGLVERTEXATTRIB1SVARBPROC glad_glVertexAttrib1svARB = NULL; +PFNGLVERTEXATTRIB2DARBPROC glad_glVertexAttrib2dARB = NULL; +PFNGLVERTEXATTRIB2DVARBPROC glad_glVertexAttrib2dvARB = NULL; +PFNGLVERTEXATTRIB2FARBPROC glad_glVertexAttrib2fARB = NULL; +PFNGLVERTEXATTRIB2FVARBPROC glad_glVertexAttrib2fvARB = NULL; +PFNGLVERTEXATTRIB2SARBPROC glad_glVertexAttrib2sARB = NULL; +PFNGLVERTEXATTRIB2SVARBPROC glad_glVertexAttrib2svARB = NULL; +PFNGLVERTEXATTRIB3DARBPROC glad_glVertexAttrib3dARB = NULL; +PFNGLVERTEXATTRIB3DVARBPROC glad_glVertexAttrib3dvARB = NULL; +PFNGLVERTEXATTRIB3FARBPROC glad_glVertexAttrib3fARB = NULL; +PFNGLVERTEXATTRIB3FVARBPROC glad_glVertexAttrib3fvARB = NULL; +PFNGLVERTEXATTRIB3SARBPROC glad_glVertexAttrib3sARB = NULL; +PFNGLVERTEXATTRIB3SVARBPROC glad_glVertexAttrib3svARB = NULL; +PFNGLVERTEXATTRIB4NBVARBPROC glad_glVertexAttrib4NbvARB = NULL; +PFNGLVERTEXATTRIB4NIVARBPROC glad_glVertexAttrib4NivARB = NULL; +PFNGLVERTEXATTRIB4NSVARBPROC glad_glVertexAttrib4NsvARB = NULL; +PFNGLVERTEXATTRIB4NUBARBPROC glad_glVertexAttrib4NubARB = NULL; +PFNGLVERTEXATTRIB4NUBVARBPROC glad_glVertexAttrib4NubvARB = NULL; +PFNGLVERTEXATTRIB4NUIVARBPROC glad_glVertexAttrib4NuivARB = NULL; +PFNGLVERTEXATTRIB4NUSVARBPROC glad_glVertexAttrib4NusvARB = NULL; +PFNGLVERTEXATTRIB4BVARBPROC glad_glVertexAttrib4bvARB = NULL; +PFNGLVERTEXATTRIB4DARBPROC glad_glVertexAttrib4dARB = NULL; +PFNGLVERTEXATTRIB4DVARBPROC glad_glVertexAttrib4dvARB = NULL; +PFNGLVERTEXATTRIB4FARBPROC glad_glVertexAttrib4fARB = NULL; +PFNGLVERTEXATTRIB4FVARBPROC glad_glVertexAttrib4fvARB = NULL; +PFNGLVERTEXATTRIB4IVARBPROC glad_glVertexAttrib4ivARB = NULL; +PFNGLVERTEXATTRIB4SARBPROC glad_glVertexAttrib4sARB = NULL; +PFNGLVERTEXATTRIB4SVARBPROC glad_glVertexAttrib4svARB = NULL; +PFNGLVERTEXATTRIB4UBVARBPROC glad_glVertexAttrib4ubvARB = NULL; +PFNGLVERTEXATTRIB4UIVARBPROC glad_glVertexAttrib4uivARB = NULL; +PFNGLVERTEXATTRIB4USVARBPROC glad_glVertexAttrib4usvARB = NULL; +PFNGLVERTEXATTRIBPOINTERARBPROC glad_glVertexAttribPointerARB = NULL; +PFNGLENABLEVERTEXATTRIBARRAYARBPROC glad_glEnableVertexAttribArrayARB = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glad_glDisableVertexAttribArrayARB = NULL; +PFNGLGETVERTEXATTRIBDVARBPROC glad_glGetVertexAttribdvARB = NULL; +PFNGLGETVERTEXATTRIBFVARBPROC glad_glGetVertexAttribfvARB = NULL; +PFNGLGETVERTEXATTRIBIVARBPROC glad_glGetVertexAttribivARB = NULL; +PFNGLGETVERTEXATTRIBPOINTERVARBPROC glad_glGetVertexAttribPointervARB = NULL; +PFNGLBINDATTRIBLOCATIONARBPROC glad_glBindAttribLocationARB = NULL; +PFNGLGETACTIVEATTRIBARBPROC glad_glGetActiveAttribARB = NULL; +PFNGLGETATTRIBLOCATIONARBPROC glad_glGetAttribLocationARB = NULL; +PFNGLDEPTHRANGEARRAYDVNVPROC glad_glDepthRangeArraydvNV = NULL; +PFNGLDEPTHRANGEINDEXEDDNVPROC glad_glDepthRangeIndexeddNV = NULL; +PFNGLWINDOWPOS2DARBPROC glad_glWindowPos2dARB = NULL; +PFNGLWINDOWPOS2DVARBPROC glad_glWindowPos2dvARB = NULL; +PFNGLWINDOWPOS2FARBPROC glad_glWindowPos2fARB = NULL; +PFNGLWINDOWPOS2FVARBPROC glad_glWindowPos2fvARB = NULL; +PFNGLWINDOWPOS2IARBPROC glad_glWindowPos2iARB = NULL; +PFNGLWINDOWPOS2IVARBPROC glad_glWindowPos2ivARB = NULL; +PFNGLWINDOWPOS2SARBPROC glad_glWindowPos2sARB = NULL; +PFNGLWINDOWPOS2SVARBPROC glad_glWindowPos2svARB = NULL; +PFNGLWINDOWPOS3DARBPROC glad_glWindowPos3dARB = NULL; +PFNGLWINDOWPOS3DVARBPROC glad_glWindowPos3dvARB = NULL; +PFNGLWINDOWPOS3FARBPROC glad_glWindowPos3fARB = NULL; +PFNGLWINDOWPOS3FVARBPROC glad_glWindowPos3fvARB = NULL; +PFNGLWINDOWPOS3IARBPROC glad_glWindowPos3iARB = NULL; +PFNGLWINDOWPOS3IVARBPROC glad_glWindowPos3ivARB = NULL; +PFNGLWINDOWPOS3SARBPROC glad_glWindowPos3sARB = NULL; +PFNGLWINDOWPOS3SVARBPROC glad_glWindowPos3svARB = NULL; +PFNGLDRAWBUFFERSATIPROC glad_glDrawBuffersATI = NULL; +PFNGLELEMENTPOINTERATIPROC glad_glElementPointerATI = NULL; +PFNGLDRAWELEMENTARRAYATIPROC glad_glDrawElementArrayATI = NULL; +PFNGLDRAWRANGEELEMENTARRAYATIPROC glad_glDrawRangeElementArrayATI = NULL; +PFNGLTEXBUMPPARAMETERIVATIPROC glad_glTexBumpParameterivATI = NULL; +PFNGLTEXBUMPPARAMETERFVATIPROC glad_glTexBumpParameterfvATI = NULL; +PFNGLGETTEXBUMPPARAMETERIVATIPROC glad_glGetTexBumpParameterivATI = NULL; +PFNGLGETTEXBUMPPARAMETERFVATIPROC glad_glGetTexBumpParameterfvATI = NULL; +PFNGLGENFRAGMENTSHADERSATIPROC glad_glGenFragmentShadersATI = NULL; +PFNGLBINDFRAGMENTSHADERATIPROC glad_glBindFragmentShaderATI = NULL; +PFNGLDELETEFRAGMENTSHADERATIPROC glad_glDeleteFragmentShaderATI = NULL; +PFNGLBEGINFRAGMENTSHADERATIPROC glad_glBeginFragmentShaderATI = NULL; +PFNGLENDFRAGMENTSHADERATIPROC glad_glEndFragmentShaderATI = NULL; +PFNGLPASSTEXCOORDATIPROC glad_glPassTexCoordATI = NULL; +PFNGLSAMPLEMAPATIPROC glad_glSampleMapATI = NULL; +PFNGLCOLORFRAGMENTOP1ATIPROC glad_glColorFragmentOp1ATI = NULL; +PFNGLCOLORFRAGMENTOP2ATIPROC glad_glColorFragmentOp2ATI = NULL; +PFNGLCOLORFRAGMENTOP3ATIPROC glad_glColorFragmentOp3ATI = NULL; +PFNGLALPHAFRAGMENTOP1ATIPROC glad_glAlphaFragmentOp1ATI = NULL; +PFNGLALPHAFRAGMENTOP2ATIPROC glad_glAlphaFragmentOp2ATI = NULL; +PFNGLALPHAFRAGMENTOP3ATIPROC glad_glAlphaFragmentOp3ATI = NULL; +PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glad_glSetFragmentShaderConstantATI = NULL; +PFNGLMAPOBJECTBUFFERATIPROC glad_glMapObjectBufferATI = NULL; +PFNGLUNMAPOBJECTBUFFERATIPROC glad_glUnmapObjectBufferATI = NULL; +PFNGLPNTRIANGLESIATIPROC glad_glPNTrianglesiATI = NULL; +PFNGLPNTRIANGLESFATIPROC glad_glPNTrianglesfATI = NULL; +PFNGLSTENCILOPSEPARATEATIPROC glad_glStencilOpSeparateATI = NULL; +PFNGLSTENCILFUNCSEPARATEATIPROC glad_glStencilFuncSeparateATI = NULL; +PFNGLNEWOBJECTBUFFERATIPROC glad_glNewObjectBufferATI = NULL; +PFNGLISOBJECTBUFFERATIPROC glad_glIsObjectBufferATI = NULL; +PFNGLUPDATEOBJECTBUFFERATIPROC glad_glUpdateObjectBufferATI = NULL; +PFNGLGETOBJECTBUFFERFVATIPROC glad_glGetObjectBufferfvATI = NULL; +PFNGLGETOBJECTBUFFERIVATIPROC glad_glGetObjectBufferivATI = NULL; +PFNGLFREEOBJECTBUFFERATIPROC glad_glFreeObjectBufferATI = NULL; +PFNGLARRAYOBJECTATIPROC glad_glArrayObjectATI = NULL; +PFNGLGETARRAYOBJECTFVATIPROC glad_glGetArrayObjectfvATI = NULL; +PFNGLGETARRAYOBJECTIVATIPROC glad_glGetArrayObjectivATI = NULL; +PFNGLVARIANTARRAYOBJECTATIPROC glad_glVariantArrayObjectATI = NULL; +PFNGLGETVARIANTARRAYOBJECTFVATIPROC glad_glGetVariantArrayObjectfvATI = NULL; +PFNGLGETVARIANTARRAYOBJECTIVATIPROC glad_glGetVariantArrayObjectivATI = NULL; +PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glad_glVertexAttribArrayObjectATI = NULL; +PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC glad_glGetVertexAttribArrayObjectfvATI = NULL; +PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC glad_glGetVertexAttribArrayObjectivATI = NULL; +PFNGLVERTEXSTREAM1SATIPROC glad_glVertexStream1sATI = NULL; +PFNGLVERTEXSTREAM1SVATIPROC glad_glVertexStream1svATI = NULL; +PFNGLVERTEXSTREAM1IATIPROC glad_glVertexStream1iATI = NULL; +PFNGLVERTEXSTREAM1IVATIPROC glad_glVertexStream1ivATI = NULL; +PFNGLVERTEXSTREAM1FATIPROC glad_glVertexStream1fATI = NULL; +PFNGLVERTEXSTREAM1FVATIPROC glad_glVertexStream1fvATI = NULL; +PFNGLVERTEXSTREAM1DATIPROC glad_glVertexStream1dATI = NULL; +PFNGLVERTEXSTREAM1DVATIPROC glad_glVertexStream1dvATI = NULL; +PFNGLVERTEXSTREAM2SATIPROC glad_glVertexStream2sATI = NULL; +PFNGLVERTEXSTREAM2SVATIPROC glad_glVertexStream2svATI = NULL; +PFNGLVERTEXSTREAM2IATIPROC glad_glVertexStream2iATI = NULL; +PFNGLVERTEXSTREAM2IVATIPROC glad_glVertexStream2ivATI = NULL; +PFNGLVERTEXSTREAM2FATIPROC glad_glVertexStream2fATI = NULL; +PFNGLVERTEXSTREAM2FVATIPROC glad_glVertexStream2fvATI = NULL; +PFNGLVERTEXSTREAM2DATIPROC glad_glVertexStream2dATI = NULL; +PFNGLVERTEXSTREAM2DVATIPROC glad_glVertexStream2dvATI = NULL; +PFNGLVERTEXSTREAM3SATIPROC glad_glVertexStream3sATI = NULL; +PFNGLVERTEXSTREAM3SVATIPROC glad_glVertexStream3svATI = NULL; +PFNGLVERTEXSTREAM3IATIPROC glad_glVertexStream3iATI = NULL; +PFNGLVERTEXSTREAM3IVATIPROC glad_glVertexStream3ivATI = NULL; +PFNGLVERTEXSTREAM3FATIPROC glad_glVertexStream3fATI = NULL; +PFNGLVERTEXSTREAM3FVATIPROC glad_glVertexStream3fvATI = NULL; +PFNGLVERTEXSTREAM3DATIPROC glad_glVertexStream3dATI = NULL; +PFNGLVERTEXSTREAM3DVATIPROC glad_glVertexStream3dvATI = NULL; +PFNGLVERTEXSTREAM4SATIPROC glad_glVertexStream4sATI = NULL; +PFNGLVERTEXSTREAM4SVATIPROC glad_glVertexStream4svATI = NULL; +PFNGLVERTEXSTREAM4IATIPROC glad_glVertexStream4iATI = NULL; +PFNGLVERTEXSTREAM4IVATIPROC glad_glVertexStream4ivATI = NULL; +PFNGLVERTEXSTREAM4FATIPROC glad_glVertexStream4fATI = NULL; +PFNGLVERTEXSTREAM4FVATIPROC glad_glVertexStream4fvATI = NULL; +PFNGLVERTEXSTREAM4DATIPROC glad_glVertexStream4dATI = NULL; +PFNGLVERTEXSTREAM4DVATIPROC glad_glVertexStream4dvATI = NULL; +PFNGLNORMALSTREAM3BATIPROC glad_glNormalStream3bATI = NULL; +PFNGLNORMALSTREAM3BVATIPROC glad_glNormalStream3bvATI = NULL; +PFNGLNORMALSTREAM3SATIPROC glad_glNormalStream3sATI = NULL; +PFNGLNORMALSTREAM3SVATIPROC glad_glNormalStream3svATI = NULL; +PFNGLNORMALSTREAM3IATIPROC glad_glNormalStream3iATI = NULL; +PFNGLNORMALSTREAM3IVATIPROC glad_glNormalStream3ivATI = NULL; +PFNGLNORMALSTREAM3FATIPROC glad_glNormalStream3fATI = NULL; +PFNGLNORMALSTREAM3FVATIPROC glad_glNormalStream3fvATI = NULL; +PFNGLNORMALSTREAM3DATIPROC glad_glNormalStream3dATI = NULL; +PFNGLNORMALSTREAM3DVATIPROC glad_glNormalStream3dvATI = NULL; +PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC glad_glClientActiveVertexStreamATI = NULL; +PFNGLVERTEXBLENDENVIATIPROC glad_glVertexBlendEnviATI = NULL; +PFNGLVERTEXBLENDENVFATIPROC glad_glVertexBlendEnvfATI = NULL; +PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC glad_glEGLImageTargetTexStorageEXT = NULL; +PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC glad_glEGLImageTargetTextureStorageEXT = NULL; +PFNGLUNIFORMBUFFEREXTPROC glad_glUniformBufferEXT = NULL; +PFNGLGETUNIFORMBUFFERSIZEEXTPROC glad_glGetUniformBufferSizeEXT = NULL; +PFNGLGETUNIFORMOFFSETEXTPROC glad_glGetUniformOffsetEXT = NULL; +PFNGLBLENDCOLOREXTPROC glad_glBlendColorEXT = NULL; +PFNGLBLENDEQUATIONSEPARATEEXTPROC glad_glBlendEquationSeparateEXT = NULL; +PFNGLBLENDFUNCSEPARATEEXTPROC glad_glBlendFuncSeparateEXT = NULL; +PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT = NULL; +PFNGLCOLORSUBTABLEEXTPROC glad_glColorSubTableEXT = NULL; +PFNGLCOPYCOLORSUBTABLEEXTPROC glad_glCopyColorSubTableEXT = NULL; +PFNGLLOCKARRAYSEXTPROC glad_glLockArraysEXT = NULL; +PFNGLUNLOCKARRAYSEXTPROC glad_glUnlockArraysEXT = NULL; +PFNGLCONVOLUTIONFILTER1DEXTPROC glad_glConvolutionFilter1DEXT = NULL; +PFNGLCONVOLUTIONFILTER2DEXTPROC glad_glConvolutionFilter2DEXT = NULL; +PFNGLCONVOLUTIONPARAMETERFEXTPROC glad_glConvolutionParameterfEXT = NULL; +PFNGLCONVOLUTIONPARAMETERFVEXTPROC glad_glConvolutionParameterfvEXT = NULL; +PFNGLCONVOLUTIONPARAMETERIEXTPROC glad_glConvolutionParameteriEXT = NULL; +PFNGLCONVOLUTIONPARAMETERIVEXTPROC glad_glConvolutionParameterivEXT = NULL; +PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC glad_glCopyConvolutionFilter1DEXT = NULL; +PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC glad_glCopyConvolutionFilter2DEXT = NULL; +PFNGLGETCONVOLUTIONFILTEREXTPROC glad_glGetConvolutionFilterEXT = NULL; +PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC glad_glGetConvolutionParameterfvEXT = NULL; +PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glad_glGetConvolutionParameterivEXT = NULL; +PFNGLGETSEPARABLEFILTEREXTPROC glad_glGetSeparableFilterEXT = NULL; +PFNGLSEPARABLEFILTER2DEXTPROC glad_glSeparableFilter2DEXT = NULL; +PFNGLTANGENT3BEXTPROC glad_glTangent3bEXT = NULL; +PFNGLTANGENT3BVEXTPROC glad_glTangent3bvEXT = NULL; +PFNGLTANGENT3DEXTPROC glad_glTangent3dEXT = NULL; +PFNGLTANGENT3DVEXTPROC glad_glTangent3dvEXT = NULL; +PFNGLTANGENT3FEXTPROC glad_glTangent3fEXT = NULL; +PFNGLTANGENT3FVEXTPROC glad_glTangent3fvEXT = NULL; +PFNGLTANGENT3IEXTPROC glad_glTangent3iEXT = NULL; +PFNGLTANGENT3IVEXTPROC glad_glTangent3ivEXT = NULL; +PFNGLTANGENT3SEXTPROC glad_glTangent3sEXT = NULL; +PFNGLTANGENT3SVEXTPROC glad_glTangent3svEXT = NULL; +PFNGLBINORMAL3BEXTPROC glad_glBinormal3bEXT = NULL; +PFNGLBINORMAL3BVEXTPROC glad_glBinormal3bvEXT = NULL; +PFNGLBINORMAL3DEXTPROC glad_glBinormal3dEXT = NULL; +PFNGLBINORMAL3DVEXTPROC glad_glBinormal3dvEXT = NULL; +PFNGLBINORMAL3FEXTPROC glad_glBinormal3fEXT = NULL; +PFNGLBINORMAL3FVEXTPROC glad_glBinormal3fvEXT = NULL; +PFNGLBINORMAL3IEXTPROC glad_glBinormal3iEXT = NULL; +PFNGLBINORMAL3IVEXTPROC glad_glBinormal3ivEXT = NULL; +PFNGLBINORMAL3SEXTPROC glad_glBinormal3sEXT = NULL; +PFNGLBINORMAL3SVEXTPROC glad_glBinormal3svEXT = NULL; +PFNGLTANGENTPOINTEREXTPROC glad_glTangentPointerEXT = NULL; +PFNGLBINORMALPOINTEREXTPROC glad_glBinormalPointerEXT = NULL; +PFNGLCOPYTEXIMAGE1DEXTPROC glad_glCopyTexImage1DEXT = NULL; +PFNGLCOPYTEXIMAGE2DEXTPROC glad_glCopyTexImage2DEXT = NULL; +PFNGLCOPYTEXSUBIMAGE1DEXTPROC glad_glCopyTexSubImage1DEXT = NULL; +PFNGLCOPYTEXSUBIMAGE2DEXTPROC glad_glCopyTexSubImage2DEXT = NULL; +PFNGLCOPYTEXSUBIMAGE3DEXTPROC glad_glCopyTexSubImage3DEXT = NULL; +PFNGLCULLPARAMETERDVEXTPROC glad_glCullParameterdvEXT = NULL; +PFNGLCULLPARAMETERFVEXTPROC glad_glCullParameterfvEXT = NULL; +PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT = NULL; +PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT = NULL; +PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT = NULL; +PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT = NULL; +PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT = NULL; +PFNGLDEPTHBOUNDSEXTPROC glad_glDepthBoundsEXT = NULL; +PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT = NULL; +PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT = NULL; +PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT = NULL; +PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT = NULL; +PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT = NULL; +PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT = NULL; +PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT = NULL; +PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT = NULL; +PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT = NULL; +PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT = NULL; +PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT = NULL; +PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT = NULL; +PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT = NULL; +PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT = NULL; +PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT = NULL; +PFNGLCLIENTATTRIBDEFAULTEXTPROC glad_glClientAttribDefaultEXT = NULL; +PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC glad_glPushClientAttribDefaultEXT = NULL; +PFNGLTEXTUREPARAMETERFEXTPROC glad_glTextureParameterfEXT = NULL; +PFNGLTEXTUREPARAMETERFVEXTPROC glad_glTextureParameterfvEXT = NULL; +PFNGLTEXTUREPARAMETERIEXTPROC glad_glTextureParameteriEXT = NULL; +PFNGLTEXTUREPARAMETERIVEXTPROC glad_glTextureParameterivEXT = NULL; +PFNGLTEXTUREIMAGE1DEXTPROC glad_glTextureImage1DEXT = NULL; +PFNGLTEXTUREIMAGE2DEXTPROC glad_glTextureImage2DEXT = NULL; +PFNGLTEXTURESUBIMAGE1DEXTPROC glad_glTextureSubImage1DEXT = NULL; +PFNGLTEXTURESUBIMAGE2DEXTPROC glad_glTextureSubImage2DEXT = NULL; +PFNGLCOPYTEXTUREIMAGE1DEXTPROC glad_glCopyTextureImage1DEXT = NULL; +PFNGLCOPYTEXTUREIMAGE2DEXTPROC glad_glCopyTextureImage2DEXT = NULL; +PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glad_glCopyTextureSubImage1DEXT = NULL; +PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glad_glCopyTextureSubImage2DEXT = NULL; +PFNGLGETTEXTUREIMAGEEXTPROC glad_glGetTextureImageEXT = NULL; +PFNGLGETTEXTUREPARAMETERFVEXTPROC glad_glGetTextureParameterfvEXT = NULL; +PFNGLGETTEXTUREPARAMETERIVEXTPROC glad_glGetTextureParameterivEXT = NULL; +PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glad_glGetTextureLevelParameterfvEXT = NULL; +PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glad_glGetTextureLevelParameterivEXT = NULL; +PFNGLTEXTUREIMAGE3DEXTPROC glad_glTextureImage3DEXT = NULL; +PFNGLTEXTURESUBIMAGE3DEXTPROC glad_glTextureSubImage3DEXT = NULL; +PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glad_glCopyTextureSubImage3DEXT = NULL; +PFNGLBINDMULTITEXTUREEXTPROC glad_glBindMultiTextureEXT = NULL; +PFNGLMULTITEXCOORDPOINTEREXTPROC glad_glMultiTexCoordPointerEXT = NULL; +PFNGLMULTITEXENVFEXTPROC glad_glMultiTexEnvfEXT = NULL; +PFNGLMULTITEXENVFVEXTPROC glad_glMultiTexEnvfvEXT = NULL; +PFNGLMULTITEXENVIEXTPROC glad_glMultiTexEnviEXT = NULL; +PFNGLMULTITEXENVIVEXTPROC glad_glMultiTexEnvivEXT = NULL; +PFNGLMULTITEXGENDEXTPROC glad_glMultiTexGendEXT = NULL; +PFNGLMULTITEXGENDVEXTPROC glad_glMultiTexGendvEXT = NULL; +PFNGLMULTITEXGENFEXTPROC glad_glMultiTexGenfEXT = NULL; +PFNGLMULTITEXGENFVEXTPROC glad_glMultiTexGenfvEXT = NULL; +PFNGLMULTITEXGENIEXTPROC glad_glMultiTexGeniEXT = NULL; +PFNGLMULTITEXGENIVEXTPROC glad_glMultiTexGenivEXT = NULL; +PFNGLGETMULTITEXENVFVEXTPROC glad_glGetMultiTexEnvfvEXT = NULL; +PFNGLGETMULTITEXENVIVEXTPROC glad_glGetMultiTexEnvivEXT = NULL; +PFNGLGETMULTITEXGENDVEXTPROC glad_glGetMultiTexGendvEXT = NULL; +PFNGLGETMULTITEXGENFVEXTPROC glad_glGetMultiTexGenfvEXT = NULL; +PFNGLGETMULTITEXGENIVEXTPROC glad_glGetMultiTexGenivEXT = NULL; +PFNGLMULTITEXPARAMETERIEXTPROC glad_glMultiTexParameteriEXT = NULL; +PFNGLMULTITEXPARAMETERIVEXTPROC glad_glMultiTexParameterivEXT = NULL; +PFNGLMULTITEXPARAMETERFEXTPROC glad_glMultiTexParameterfEXT = NULL; +PFNGLMULTITEXPARAMETERFVEXTPROC glad_glMultiTexParameterfvEXT = NULL; +PFNGLMULTITEXIMAGE1DEXTPROC glad_glMultiTexImage1DEXT = NULL; +PFNGLMULTITEXIMAGE2DEXTPROC glad_glMultiTexImage2DEXT = NULL; +PFNGLMULTITEXSUBIMAGE1DEXTPROC glad_glMultiTexSubImage1DEXT = NULL; +PFNGLMULTITEXSUBIMAGE2DEXTPROC glad_glMultiTexSubImage2DEXT = NULL; +PFNGLCOPYMULTITEXIMAGE1DEXTPROC glad_glCopyMultiTexImage1DEXT = NULL; +PFNGLCOPYMULTITEXIMAGE2DEXTPROC glad_glCopyMultiTexImage2DEXT = NULL; +PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glad_glCopyMultiTexSubImage1DEXT = NULL; +PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glad_glCopyMultiTexSubImage2DEXT = NULL; +PFNGLGETMULTITEXIMAGEEXTPROC glad_glGetMultiTexImageEXT = NULL; +PFNGLGETMULTITEXPARAMETERFVEXTPROC glad_glGetMultiTexParameterfvEXT = NULL; +PFNGLGETMULTITEXPARAMETERIVEXTPROC glad_glGetMultiTexParameterivEXT = NULL; +PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glad_glGetMultiTexLevelParameterfvEXT = NULL; +PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glad_glGetMultiTexLevelParameterivEXT = NULL; +PFNGLMULTITEXIMAGE3DEXTPROC glad_glMultiTexImage3DEXT = NULL; +PFNGLMULTITEXSUBIMAGE3DEXTPROC glad_glMultiTexSubImage3DEXT = NULL; +PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glad_glCopyMultiTexSubImage3DEXT = NULL; +PFNGLENABLECLIENTSTATEINDEXEDEXTPROC glad_glEnableClientStateIndexedEXT = NULL; +PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC glad_glDisableClientStateIndexedEXT = NULL; +PFNGLGETFLOATINDEXEDVEXTPROC glad_glGetFloatIndexedvEXT = NULL; +PFNGLGETDOUBLEINDEXEDVEXTPROC glad_glGetDoubleIndexedvEXT = NULL; +PFNGLGETPOINTERINDEXEDVEXTPROC glad_glGetPointerIndexedvEXT = NULL; +PFNGLENABLEINDEXEDEXTPROC glad_glEnableIndexedEXT = NULL; +PFNGLDISABLEINDEXEDEXTPROC glad_glDisableIndexedEXT = NULL; +PFNGLISENABLEDINDEXEDEXTPROC glad_glIsEnabledIndexedEXT = NULL; +PFNGLGETINTEGERINDEXEDVEXTPROC glad_glGetIntegerIndexedvEXT = NULL; +PFNGLGETBOOLEANINDEXEDVEXTPROC glad_glGetBooleanIndexedvEXT = NULL; +PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glad_glCompressedTextureImage3DEXT = NULL; +PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glad_glCompressedTextureImage2DEXT = NULL; +PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glad_glCompressedTextureImage1DEXT = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glad_glCompressedTextureSubImage3DEXT = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glad_glCompressedTextureSubImage2DEXT = NULL; +PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glad_glCompressedTextureSubImage1DEXT = NULL; +PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glad_glGetCompressedTextureImageEXT = NULL; +PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glad_glCompressedMultiTexImage3DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glad_glCompressedMultiTexImage2DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glad_glCompressedMultiTexImage1DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glad_glCompressedMultiTexSubImage3DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glad_glCompressedMultiTexSubImage2DEXT = NULL; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glad_glCompressedMultiTexSubImage1DEXT = NULL; +PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glad_glGetCompressedMultiTexImageEXT = NULL; +PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT = NULL; +PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT = NULL; +PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT = NULL; +PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT = NULL; +PFNGLNAMEDBUFFERDATAEXTPROC glad_glNamedBufferDataEXT = NULL; +PFNGLNAMEDBUFFERSUBDATAEXTPROC glad_glNamedBufferSubDataEXT = NULL; +PFNGLMAPNAMEDBUFFEREXTPROC glad_glMapNamedBufferEXT = NULL; +PFNGLUNMAPNAMEDBUFFEREXTPROC glad_glUnmapNamedBufferEXT = NULL; +PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glad_glGetNamedBufferParameterivEXT = NULL; +PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glad_glGetNamedBufferPointervEXT = NULL; +PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glad_glGetNamedBufferSubDataEXT = NULL; +PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT = NULL; +PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT = NULL; +PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT = NULL; +PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT = NULL; +PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT = NULL; +PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT = NULL; +PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT = NULL; +PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT = NULL; +PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT = NULL; +PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT = NULL; +PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT = NULL; +PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT = NULL; +PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT = NULL; +PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT = NULL; +PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT = NULL; +PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT = NULL; +PFNGLTEXTUREBUFFEREXTPROC glad_glTextureBufferEXT = NULL; +PFNGLMULTITEXBUFFEREXTPROC glad_glMultiTexBufferEXT = NULL; +PFNGLTEXTUREPARAMETERIIVEXTPROC glad_glTextureParameterIivEXT = NULL; +PFNGLTEXTUREPARAMETERIUIVEXTPROC glad_glTextureParameterIuivEXT = NULL; +PFNGLGETTEXTUREPARAMETERIIVEXTPROC glad_glGetTextureParameterIivEXT = NULL; +PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glad_glGetTextureParameterIuivEXT = NULL; +PFNGLMULTITEXPARAMETERIIVEXTPROC glad_glMultiTexParameterIivEXT = NULL; +PFNGLMULTITEXPARAMETERIUIVEXTPROC glad_glMultiTexParameterIuivEXT = NULL; +PFNGLGETMULTITEXPARAMETERIIVEXTPROC glad_glGetMultiTexParameterIivEXT = NULL; +PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glad_glGetMultiTexParameterIuivEXT = NULL; +PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT = NULL; +PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT = NULL; +PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT = NULL; +PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT = NULL; +PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT = NULL; +PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT = NULL; +PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT = NULL; +PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glNamedProgramLocalParameters4fvEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC glad_glNamedProgramLocalParameterI4iEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC glad_glNamedProgramLocalParameterI4ivEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC glad_glNamedProgramLocalParametersI4ivEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC glad_glNamedProgramLocalParameterI4uiEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC glad_glNamedProgramLocalParameterI4uivEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC glad_glNamedProgramLocalParametersI4uivEXT = NULL; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC glad_glGetNamedProgramLocalParameterIivEXT = NULL; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC glad_glGetNamedProgramLocalParameterIuivEXT = NULL; +PFNGLENABLECLIENTSTATEIEXTPROC glad_glEnableClientStateiEXT = NULL; +PFNGLDISABLECLIENTSTATEIEXTPROC glad_glDisableClientStateiEXT = NULL; +PFNGLGETFLOATI_VEXTPROC glad_glGetFloati_vEXT = NULL; +PFNGLGETDOUBLEI_VEXTPROC glad_glGetDoublei_vEXT = NULL; +PFNGLGETPOINTERI_VEXTPROC glad_glGetPointeri_vEXT = NULL; +PFNGLNAMEDPROGRAMSTRINGEXTPROC glad_glNamedProgramStringEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC glad_glNamedProgramLocalParameter4dEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC glad_glNamedProgramLocalParameter4dvEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC glad_glNamedProgramLocalParameter4fEXT = NULL; +PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC glad_glNamedProgramLocalParameter4fvEXT = NULL; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC glad_glGetNamedProgramLocalParameterdvEXT = NULL; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC glad_glGetNamedProgramLocalParameterfvEXT = NULL; +PFNGLGETNAMEDPROGRAMIVEXTPROC glad_glGetNamedProgramivEXT = NULL; +PFNGLGETNAMEDPROGRAMSTRINGEXTPROC glad_glGetNamedProgramStringEXT = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glad_glNamedRenderbufferStorageEXT = NULL; +PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glad_glGetNamedRenderbufferParameterivEXT = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glNamedRenderbufferStorageMultisampleEXT = NULL; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC glad_glNamedRenderbufferStorageMultisampleCoverageEXT = NULL; +PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glad_glCheckNamedFramebufferStatusEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glad_glNamedFramebufferTexture1DEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glad_glNamedFramebufferTexture2DEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glad_glNamedFramebufferTexture3DEXT = NULL; +PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glad_glNamedFramebufferRenderbufferEXT = NULL; +PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetNamedFramebufferAttachmentParameterivEXT = NULL; +PFNGLGENERATETEXTUREMIPMAPEXTPROC glad_glGenerateTextureMipmapEXT = NULL; +PFNGLGENERATEMULTITEXMIPMAPEXTPROC glad_glGenerateMultiTexMipmapEXT = NULL; +PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glad_glFramebufferDrawBufferEXT = NULL; +PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glad_glFramebufferDrawBuffersEXT = NULL; +PFNGLFRAMEBUFFERREADBUFFEREXTPROC glad_glFramebufferReadBufferEXT = NULL; +PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetFramebufferParameterivEXT = NULL; +PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glad_glNamedCopyBufferSubDataEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glad_glNamedFramebufferTextureEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glad_glNamedFramebufferTextureLayerEXT = NULL; +PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC glad_glNamedFramebufferTextureFaceEXT = NULL; +PFNGLTEXTURERENDERBUFFEREXTPROC glad_glTextureRenderbufferEXT = NULL; +PFNGLMULTITEXRENDERBUFFEREXTPROC glad_glMultiTexRenderbufferEXT = NULL; +PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC glad_glVertexArrayVertexOffsetEXT = NULL; +PFNGLVERTEXARRAYCOLOROFFSETEXTPROC glad_glVertexArrayColorOffsetEXT = NULL; +PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC glad_glVertexArrayEdgeFlagOffsetEXT = NULL; +PFNGLVERTEXARRAYINDEXOFFSETEXTPROC glad_glVertexArrayIndexOffsetEXT = NULL; +PFNGLVERTEXARRAYNORMALOFFSETEXTPROC glad_glVertexArrayNormalOffsetEXT = NULL; +PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC glad_glVertexArrayTexCoordOffsetEXT = NULL; +PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC glad_glVertexArrayMultiTexCoordOffsetEXT = NULL; +PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC glad_glVertexArrayFogCoordOffsetEXT = NULL; +PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC glad_glVertexArraySecondaryColorOffsetEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glad_glVertexArrayVertexAttribOffsetEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glad_glVertexArrayVertexAttribIOffsetEXT = NULL; +PFNGLENABLEVERTEXARRAYEXTPROC glad_glEnableVertexArrayEXT = NULL; +PFNGLDISABLEVERTEXARRAYEXTPROC glad_glDisableVertexArrayEXT = NULL; +PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glad_glEnableVertexArrayAttribEXT = NULL; +PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glad_glDisableVertexArrayAttribEXT = NULL; +PFNGLGETVERTEXARRAYINTEGERVEXTPROC glad_glGetVertexArrayIntegervEXT = NULL; +PFNGLGETVERTEXARRAYPOINTERVEXTPROC glad_glGetVertexArrayPointervEXT = NULL; +PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glad_glGetVertexArrayIntegeri_vEXT = NULL; +PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glad_glGetVertexArrayPointeri_vEXT = NULL; +PFNGLMAPNAMEDBUFFERRANGEEXTPROC glad_glMapNamedBufferRangeEXT = NULL; +PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glad_glFlushMappedNamedBufferRangeEXT = NULL; +PFNGLNAMEDBUFFERSTORAGEEXTPROC glad_glNamedBufferStorageEXT = NULL; +PFNGLCLEARNAMEDBUFFERDATAEXTPROC glad_glClearNamedBufferDataEXT = NULL; +PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glad_glClearNamedBufferSubDataEXT = NULL; +PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glad_glNamedFramebufferParameteriEXT = NULL; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetNamedFramebufferParameterivEXT = NULL; +PFNGLPROGRAMUNIFORM1DEXTPROC glad_glProgramUniform1dEXT = NULL; +PFNGLPROGRAMUNIFORM2DEXTPROC glad_glProgramUniform2dEXT = NULL; +PFNGLPROGRAMUNIFORM3DEXTPROC glad_glProgramUniform3dEXT = NULL; +PFNGLPROGRAMUNIFORM4DEXTPROC glad_glProgramUniform4dEXT = NULL; +PFNGLPROGRAMUNIFORM1DVEXTPROC glad_glProgramUniform1dvEXT = NULL; +PFNGLPROGRAMUNIFORM2DVEXTPROC glad_glProgramUniform2dvEXT = NULL; +PFNGLPROGRAMUNIFORM3DVEXTPROC glad_glProgramUniform3dvEXT = NULL; +PFNGLPROGRAMUNIFORM4DVEXTPROC glad_glProgramUniform4dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC glad_glProgramUniformMatrix2dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC glad_glProgramUniformMatrix3dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC glad_glProgramUniformMatrix4dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC glad_glProgramUniformMatrix2x3dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC glad_glProgramUniformMatrix2x4dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC glad_glProgramUniformMatrix3x2dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC glad_glProgramUniformMatrix3x4dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC glad_glProgramUniformMatrix4x2dvEXT = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC glad_glProgramUniformMatrix4x3dvEXT = NULL; +PFNGLTEXTUREBUFFERRANGEEXTPROC glad_glTextureBufferRangeEXT = NULL; +PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT = NULL; +PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT = NULL; +PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT = NULL; +PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC glad_glTextureStorage2DMultisampleEXT = NULL; +PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC glad_glTextureStorage3DMultisampleEXT = NULL; +PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glad_glVertexArrayBindVertexBufferEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glad_glVertexArrayVertexAttribFormatEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glad_glVertexArrayVertexAttribIFormatEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glad_glVertexArrayVertexAttribLFormatEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glad_glVertexArrayVertexAttribBindingEXT = NULL; +PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glad_glVertexArrayVertexBindingDivisorEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glad_glVertexArrayVertexAttribLOffsetEXT = NULL; +PFNGLTEXTUREPAGECOMMITMENTEXTPROC glad_glTexturePageCommitmentEXT = NULL; +PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glad_glVertexArrayVertexAttribDivisorEXT = NULL; +PFNGLCOLORMASKINDEXEDEXTPROC glad_glColorMaskIndexedEXT = NULL; +PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT = NULL; +PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT = NULL; +PFNGLDRAWRANGEELEMENTSEXTPROC glad_glDrawRangeElementsEXT = NULL; +PFNGLBUFFERSTORAGEEXTERNALEXTPROC glad_glBufferStorageExternalEXT = NULL; +PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC glad_glNamedBufferStorageExternalEXT = NULL; +PFNGLFOGCOORDFEXTPROC glad_glFogCoordfEXT = NULL; +PFNGLFOGCOORDFVEXTPROC glad_glFogCoordfvEXT = NULL; +PFNGLFOGCOORDDEXTPROC glad_glFogCoorddEXT = NULL; +PFNGLFOGCOORDDVEXTPROC glad_glFogCoorddvEXT = NULL; +PFNGLFOGCOORDPOINTEREXTPROC glad_glFogCoordPointerEXT = NULL; +PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT = NULL; +PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT = NULL; +PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT = NULL; +PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT = NULL; +PFNGLGENRENDERBUFFERSEXTPROC glad_glGenRenderbuffersEXT = NULL; +PFNGLRENDERBUFFERSTORAGEEXTPROC glad_glRenderbufferStorageEXT = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glad_glGetRenderbufferParameterivEXT = NULL; +PFNGLISFRAMEBUFFEREXTPROC glad_glIsFramebufferEXT = NULL; +PFNGLBINDFRAMEBUFFEREXTPROC glad_glBindFramebufferEXT = NULL; +PFNGLDELETEFRAMEBUFFERSEXTPROC glad_glDeleteFramebuffersEXT = NULL; +PFNGLGENFRAMEBUFFERSEXTPROC glad_glGenFramebuffersEXT = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glad_glCheckFramebufferStatusEXT = NULL; +PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glad_glFramebufferTexture1DEXT = NULL; +PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glad_glFramebufferTexture2DEXT = NULL; +PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT = NULL; +PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT = NULL; +PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT = NULL; +PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT = NULL; +PFNGLPROGRAMENVPARAMETERS4FVEXTPROC glad_glProgramEnvParameters4fvEXT = NULL; +PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glProgramLocalParameters4fvEXT = NULL; +PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT = NULL; +PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT = NULL; +PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT = NULL; +PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT = NULL; +PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT = NULL; +PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT = NULL; +PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT = NULL; +PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT = NULL; +PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT = NULL; +PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT = NULL; +PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT = NULL; +PFNGLGETHISTOGRAMEXTPROC glad_glGetHistogramEXT = NULL; +PFNGLGETHISTOGRAMPARAMETERFVEXTPROC glad_glGetHistogramParameterfvEXT = NULL; +PFNGLGETHISTOGRAMPARAMETERIVEXTPROC glad_glGetHistogramParameterivEXT = NULL; +PFNGLGETMINMAXEXTPROC glad_glGetMinmaxEXT = NULL; +PFNGLGETMINMAXPARAMETERFVEXTPROC glad_glGetMinmaxParameterfvEXT = NULL; +PFNGLGETMINMAXPARAMETERIVEXTPROC glad_glGetMinmaxParameterivEXT = NULL; +PFNGLHISTOGRAMEXTPROC glad_glHistogramEXT = NULL; +PFNGLMINMAXEXTPROC glad_glMinmaxEXT = NULL; +PFNGLRESETHISTOGRAMEXTPROC glad_glResetHistogramEXT = NULL; +PFNGLRESETMINMAXEXTPROC glad_glResetMinmaxEXT = NULL; +PFNGLINDEXFUNCEXTPROC glad_glIndexFuncEXT = NULL; +PFNGLINDEXMATERIALEXTPROC glad_glIndexMaterialEXT = NULL; +PFNGLAPPLYTEXTUREEXTPROC glad_glApplyTextureEXT = NULL; +PFNGLTEXTURELIGHTEXTPROC glad_glTextureLightEXT = NULL; +PFNGLTEXTUREMATERIALEXTPROC glad_glTextureMaterialEXT = NULL; +PFNGLGETUNSIGNEDBYTEVEXTPROC glad_glGetUnsignedBytevEXT = NULL; +PFNGLGETUNSIGNEDBYTEI_VEXTPROC glad_glGetUnsignedBytei_vEXT = NULL; +PFNGLDELETEMEMORYOBJECTSEXTPROC glad_glDeleteMemoryObjectsEXT = NULL; +PFNGLISMEMORYOBJECTEXTPROC glad_glIsMemoryObjectEXT = NULL; +PFNGLCREATEMEMORYOBJECTSEXTPROC glad_glCreateMemoryObjectsEXT = NULL; +PFNGLMEMORYOBJECTPARAMETERIVEXTPROC glad_glMemoryObjectParameterivEXT = NULL; +PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC glad_glGetMemoryObjectParameterivEXT = NULL; +PFNGLTEXSTORAGEMEM2DEXTPROC glad_glTexStorageMem2DEXT = NULL; +PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTexStorageMem2DMultisampleEXT = NULL; +PFNGLTEXSTORAGEMEM3DEXTPROC glad_glTexStorageMem3DEXT = NULL; +PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTexStorageMem3DMultisampleEXT = NULL; +PFNGLBUFFERSTORAGEMEMEXTPROC glad_glBufferStorageMemEXT = NULL; +PFNGLTEXTURESTORAGEMEM2DEXTPROC glad_glTextureStorageMem2DEXT = NULL; +PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTextureStorageMem2DMultisampleEXT = NULL; +PFNGLTEXTURESTORAGEMEM3DEXTPROC glad_glTextureStorageMem3DEXT = NULL; +PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTextureStorageMem3DMultisampleEXT = NULL; +PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC glad_glNamedBufferStorageMemEXT = NULL; +PFNGLTEXSTORAGEMEM1DEXTPROC glad_glTexStorageMem1DEXT = NULL; +PFNGLTEXTURESTORAGEMEM1DEXTPROC glad_glTextureStorageMem1DEXT = NULL; +PFNGLIMPORTMEMORYFDEXTPROC glad_glImportMemoryFdEXT = NULL; +PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC glad_glImportMemoryWin32HandleEXT = NULL; +PFNGLIMPORTMEMORYWIN32NAMEEXTPROC glad_glImportMemoryWin32NameEXT = NULL; +PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT = NULL; +PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT = NULL; +PFNGLSAMPLEMASKEXTPROC glad_glSampleMaskEXT = NULL; +PFNGLSAMPLEPATTERNEXTPROC glad_glSamplePatternEXT = NULL; +PFNGLCOLORTABLEEXTPROC glad_glColorTableEXT = NULL; +PFNGLGETCOLORTABLEEXTPROC glad_glGetColorTableEXT = NULL; +PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glad_glGetColorTableParameterivEXT = NULL; +PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glad_glGetColorTableParameterfvEXT = NULL; +PFNGLPIXELTRANSFORMPARAMETERIEXTPROC glad_glPixelTransformParameteriEXT = NULL; +PFNGLPIXELTRANSFORMPARAMETERFEXTPROC glad_glPixelTransformParameterfEXT = NULL; +PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC glad_glPixelTransformParameterivEXT = NULL; +PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC glad_glPixelTransformParameterfvEXT = NULL; +PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC glad_glGetPixelTransformParameterivEXT = NULL; +PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC glad_glGetPixelTransformParameterfvEXT = NULL; +PFNGLPOINTPARAMETERFEXTPROC glad_glPointParameterfEXT = NULL; +PFNGLPOINTPARAMETERFVEXTPROC glad_glPointParameterfvEXT = NULL; +PFNGLPOLYGONOFFSETEXTPROC glad_glPolygonOffsetEXT = NULL; +PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT = NULL; +PFNGLPROVOKINGVERTEXEXTPROC glad_glProvokingVertexEXT = NULL; +PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT = NULL; +PFNGLSECONDARYCOLOR3BEXTPROC glad_glSecondaryColor3bEXT = NULL; +PFNGLSECONDARYCOLOR3BVEXTPROC glad_glSecondaryColor3bvEXT = NULL; +PFNGLSECONDARYCOLOR3DEXTPROC glad_glSecondaryColor3dEXT = NULL; +PFNGLSECONDARYCOLOR3DVEXTPROC glad_glSecondaryColor3dvEXT = NULL; +PFNGLSECONDARYCOLOR3FEXTPROC glad_glSecondaryColor3fEXT = NULL; +PFNGLSECONDARYCOLOR3FVEXTPROC glad_glSecondaryColor3fvEXT = NULL; +PFNGLSECONDARYCOLOR3IEXTPROC glad_glSecondaryColor3iEXT = NULL; +PFNGLSECONDARYCOLOR3IVEXTPROC glad_glSecondaryColor3ivEXT = NULL; +PFNGLSECONDARYCOLOR3SEXTPROC glad_glSecondaryColor3sEXT = NULL; +PFNGLSECONDARYCOLOR3SVEXTPROC glad_glSecondaryColor3svEXT = NULL; +PFNGLSECONDARYCOLOR3UBEXTPROC glad_glSecondaryColor3ubEXT = NULL; +PFNGLSECONDARYCOLOR3UBVEXTPROC glad_glSecondaryColor3ubvEXT = NULL; +PFNGLSECONDARYCOLOR3UIEXTPROC glad_glSecondaryColor3uiEXT = NULL; +PFNGLSECONDARYCOLOR3UIVEXTPROC glad_glSecondaryColor3uivEXT = NULL; +PFNGLSECONDARYCOLOR3USEXTPROC glad_glSecondaryColor3usEXT = NULL; +PFNGLSECONDARYCOLOR3USVEXTPROC glad_glSecondaryColor3usvEXT = NULL; +PFNGLSECONDARYCOLORPOINTEREXTPROC glad_glSecondaryColorPointerEXT = NULL; +PFNGLGENSEMAPHORESEXTPROC glad_glGenSemaphoresEXT = NULL; +PFNGLDELETESEMAPHORESEXTPROC glad_glDeleteSemaphoresEXT = NULL; +PFNGLISSEMAPHOREEXTPROC glad_glIsSemaphoreEXT = NULL; +PFNGLSEMAPHOREPARAMETERUI64VEXTPROC glad_glSemaphoreParameterui64vEXT = NULL; +PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC glad_glGetSemaphoreParameterui64vEXT = NULL; +PFNGLWAITSEMAPHOREEXTPROC glad_glWaitSemaphoreEXT = NULL; +PFNGLSIGNALSEMAPHOREEXTPROC glad_glSignalSemaphoreEXT = NULL; +PFNGLIMPORTSEMAPHOREFDEXTPROC glad_glImportSemaphoreFdEXT = NULL; +PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC glad_glImportSemaphoreWin32HandleEXT = NULL; +PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC glad_glImportSemaphoreWin32NameEXT = NULL; +PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT = NULL; +PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT = NULL; +PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT = NULL; +PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT = NULL; +PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT = NULL; +PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT = NULL; +PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT = NULL; +PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT = NULL; +PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT = NULL; +PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT = NULL; +PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT = NULL; +PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT = NULL; +PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT = NULL; +PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC glad_glFramebufferFetchBarrierEXT = NULL; +PFNGLBINDIMAGETEXTUREEXTPROC glad_glBindImageTextureEXT = NULL; +PFNGLMEMORYBARRIEREXTPROC glad_glMemoryBarrierEXT = NULL; +PFNGLSTENCILCLEARTAGEXTPROC glad_glStencilClearTagEXT = NULL; +PFNGLACTIVESTENCILFACEEXTPROC glad_glActiveStencilFaceEXT = NULL; +PFNGLTEXSUBIMAGE1DEXTPROC glad_glTexSubImage1DEXT = NULL; +PFNGLTEXSUBIMAGE2DEXTPROC glad_glTexSubImage2DEXT = NULL; +PFNGLTEXIMAGE3DEXTPROC glad_glTexImage3DEXT = NULL; +PFNGLTEXSUBIMAGE3DEXTPROC glad_glTexSubImage3DEXT = NULL; +PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC glad_glFramebufferTextureLayerEXT = NULL; +PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT = NULL; +PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT = NULL; +PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT = NULL; +PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT = NULL; +PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT = NULL; +PFNGLCLEARCOLORIIEXTPROC glad_glClearColorIiEXT = NULL; +PFNGLCLEARCOLORIUIEXTPROC glad_glClearColorIuiEXT = NULL; +PFNGLARETEXTURESRESIDENTEXTPROC glad_glAreTexturesResidentEXT = NULL; +PFNGLBINDTEXTUREEXTPROC glad_glBindTextureEXT = NULL; +PFNGLDELETETEXTURESEXTPROC glad_glDeleteTexturesEXT = NULL; +PFNGLGENTEXTURESEXTPROC glad_glGenTexturesEXT = NULL; +PFNGLISTEXTUREEXTPROC glad_glIsTextureEXT = NULL; +PFNGLPRIORITIZETEXTURESEXTPROC glad_glPrioritizeTexturesEXT = NULL; +PFNGLTEXTURENORMALEXTPROC glad_glTextureNormalEXT = NULL; +PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT = NULL; +PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT = NULL; +PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glad_glBeginTransformFeedbackEXT = NULL; +PFNGLENDTRANSFORMFEEDBACKEXTPROC glad_glEndTransformFeedbackEXT = NULL; +PFNGLBINDBUFFERRANGEEXTPROC glad_glBindBufferRangeEXT = NULL; +PFNGLBINDBUFFEROFFSETEXTPROC glad_glBindBufferOffsetEXT = NULL; +PFNGLBINDBUFFERBASEEXTPROC glad_glBindBufferBaseEXT = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glad_glTransformFeedbackVaryingsEXT = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glad_glGetTransformFeedbackVaryingEXT = NULL; +PFNGLARRAYELEMENTEXTPROC glad_glArrayElementEXT = NULL; +PFNGLCOLORPOINTEREXTPROC glad_glColorPointerEXT = NULL; +PFNGLDRAWARRAYSEXTPROC glad_glDrawArraysEXT = NULL; +PFNGLEDGEFLAGPOINTEREXTPROC glad_glEdgeFlagPointerEXT = NULL; +PFNGLGETPOINTERVEXTPROC glad_glGetPointervEXT = NULL; +PFNGLINDEXPOINTEREXTPROC glad_glIndexPointerEXT = NULL; +PFNGLNORMALPOINTEREXTPROC glad_glNormalPointerEXT = NULL; +PFNGLTEXCOORDPOINTEREXTPROC glad_glTexCoordPointerEXT = NULL; +PFNGLVERTEXPOINTEREXTPROC glad_glVertexPointerEXT = NULL; +PFNGLVERTEXATTRIBL1DEXTPROC glad_glVertexAttribL1dEXT = NULL; +PFNGLVERTEXATTRIBL2DEXTPROC glad_glVertexAttribL2dEXT = NULL; +PFNGLVERTEXATTRIBL3DEXTPROC glad_glVertexAttribL3dEXT = NULL; +PFNGLVERTEXATTRIBL4DEXTPROC glad_glVertexAttribL4dEXT = NULL; +PFNGLVERTEXATTRIBL1DVEXTPROC glad_glVertexAttribL1dvEXT = NULL; +PFNGLVERTEXATTRIBL2DVEXTPROC glad_glVertexAttribL2dvEXT = NULL; +PFNGLVERTEXATTRIBL3DVEXTPROC glad_glVertexAttribL3dvEXT = NULL; +PFNGLVERTEXATTRIBL4DVEXTPROC glad_glVertexAttribL4dvEXT = NULL; +PFNGLVERTEXATTRIBLPOINTEREXTPROC glad_glVertexAttribLPointerEXT = NULL; +PFNGLGETVERTEXATTRIBLDVEXTPROC glad_glGetVertexAttribLdvEXT = NULL; +PFNGLBEGINVERTEXSHADEREXTPROC glad_glBeginVertexShaderEXT = NULL; +PFNGLENDVERTEXSHADEREXTPROC glad_glEndVertexShaderEXT = NULL; +PFNGLBINDVERTEXSHADEREXTPROC glad_glBindVertexShaderEXT = NULL; +PFNGLGENVERTEXSHADERSEXTPROC glad_glGenVertexShadersEXT = NULL; +PFNGLDELETEVERTEXSHADEREXTPROC glad_glDeleteVertexShaderEXT = NULL; +PFNGLSHADEROP1EXTPROC glad_glShaderOp1EXT = NULL; +PFNGLSHADEROP2EXTPROC glad_glShaderOp2EXT = NULL; +PFNGLSHADEROP3EXTPROC glad_glShaderOp3EXT = NULL; +PFNGLSWIZZLEEXTPROC glad_glSwizzleEXT = NULL; +PFNGLWRITEMASKEXTPROC glad_glWriteMaskEXT = NULL; +PFNGLINSERTCOMPONENTEXTPROC glad_glInsertComponentEXT = NULL; +PFNGLEXTRACTCOMPONENTEXTPROC glad_glExtractComponentEXT = NULL; +PFNGLGENSYMBOLSEXTPROC glad_glGenSymbolsEXT = NULL; +PFNGLSETINVARIANTEXTPROC glad_glSetInvariantEXT = NULL; +PFNGLSETLOCALCONSTANTEXTPROC glad_glSetLocalConstantEXT = NULL; +PFNGLVARIANTBVEXTPROC glad_glVariantbvEXT = NULL; +PFNGLVARIANTSVEXTPROC glad_glVariantsvEXT = NULL; +PFNGLVARIANTIVEXTPROC glad_glVariantivEXT = NULL; +PFNGLVARIANTFVEXTPROC glad_glVariantfvEXT = NULL; +PFNGLVARIANTDVEXTPROC glad_glVariantdvEXT = NULL; +PFNGLVARIANTUBVEXTPROC glad_glVariantubvEXT = NULL; +PFNGLVARIANTUSVEXTPROC glad_glVariantusvEXT = NULL; +PFNGLVARIANTUIVEXTPROC glad_glVariantuivEXT = NULL; +PFNGLVARIANTPOINTEREXTPROC glad_glVariantPointerEXT = NULL; +PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glad_glEnableVariantClientStateEXT = NULL; +PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glad_glDisableVariantClientStateEXT = NULL; +PFNGLBINDLIGHTPARAMETEREXTPROC glad_glBindLightParameterEXT = NULL; +PFNGLBINDMATERIALPARAMETEREXTPROC glad_glBindMaterialParameterEXT = NULL; +PFNGLBINDTEXGENPARAMETEREXTPROC glad_glBindTexGenParameterEXT = NULL; +PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glad_glBindTextureUnitParameterEXT = NULL; +PFNGLBINDPARAMETEREXTPROC glad_glBindParameterEXT = NULL; +PFNGLISVARIANTENABLEDEXTPROC glad_glIsVariantEnabledEXT = NULL; +PFNGLGETVARIANTBOOLEANVEXTPROC glad_glGetVariantBooleanvEXT = NULL; +PFNGLGETVARIANTINTEGERVEXTPROC glad_glGetVariantIntegervEXT = NULL; +PFNGLGETVARIANTFLOATVEXTPROC glad_glGetVariantFloatvEXT = NULL; +PFNGLGETVARIANTPOINTERVEXTPROC glad_glGetVariantPointervEXT = NULL; +PFNGLGETINVARIANTBOOLEANVEXTPROC glad_glGetInvariantBooleanvEXT = NULL; +PFNGLGETINVARIANTINTEGERVEXTPROC glad_glGetInvariantIntegervEXT = NULL; +PFNGLGETINVARIANTFLOATVEXTPROC glad_glGetInvariantFloatvEXT = NULL; +PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glad_glGetLocalConstantBooleanvEXT = NULL; +PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glad_glGetLocalConstantIntegervEXT = NULL; +PFNGLGETLOCALCONSTANTFLOATVEXTPROC glad_glGetLocalConstantFloatvEXT = NULL; +PFNGLVERTEXWEIGHTFEXTPROC glad_glVertexWeightfEXT = NULL; +PFNGLVERTEXWEIGHTFVEXTPROC glad_glVertexWeightfvEXT = NULL; +PFNGLVERTEXWEIGHTPOINTEREXTPROC glad_glVertexWeightPointerEXT = NULL; +PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC glad_glAcquireKeyedMutexWin32EXT = NULL; +PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC glad_glReleaseKeyedMutexWin32EXT = NULL; +PFNGLWINDOWRECTANGLESEXTPROC glad_glWindowRectanglesEXT = NULL; +PFNGLIMPORTSYNCEXTPROC glad_glImportSyncEXT = NULL; +PFNGLFRAMETERMINATORGREMEDYPROC glad_glFrameTerminatorGREMEDY = NULL; +PFNGLSTRINGMARKERGREMEDYPROC glad_glStringMarkerGREMEDY = NULL; +PFNGLIMAGETRANSFORMPARAMETERIHPPROC glad_glImageTransformParameteriHP = NULL; +PFNGLIMAGETRANSFORMPARAMETERFHPPROC glad_glImageTransformParameterfHP = NULL; +PFNGLIMAGETRANSFORMPARAMETERIVHPPROC glad_glImageTransformParameterivHP = NULL; +PFNGLIMAGETRANSFORMPARAMETERFVHPPROC glad_glImageTransformParameterfvHP = NULL; +PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC glad_glGetImageTransformParameterivHP = NULL; +PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC glad_glGetImageTransformParameterfvHP = NULL; +PFNGLMULTIMODEDRAWARRAYSIBMPROC glad_glMultiModeDrawArraysIBM = NULL; +PFNGLMULTIMODEDRAWELEMENTSIBMPROC glad_glMultiModeDrawElementsIBM = NULL; +PFNGLFLUSHSTATICDATAIBMPROC glad_glFlushStaticDataIBM = NULL; +PFNGLCOLORPOINTERLISTIBMPROC glad_glColorPointerListIBM = NULL; +PFNGLSECONDARYCOLORPOINTERLISTIBMPROC glad_glSecondaryColorPointerListIBM = NULL; +PFNGLEDGEFLAGPOINTERLISTIBMPROC glad_glEdgeFlagPointerListIBM = NULL; +PFNGLFOGCOORDPOINTERLISTIBMPROC glad_glFogCoordPointerListIBM = NULL; +PFNGLINDEXPOINTERLISTIBMPROC glad_glIndexPointerListIBM = NULL; +PFNGLNORMALPOINTERLISTIBMPROC glad_glNormalPointerListIBM = NULL; +PFNGLTEXCOORDPOINTERLISTIBMPROC glad_glTexCoordPointerListIBM = NULL; +PFNGLVERTEXPOINTERLISTIBMPROC glad_glVertexPointerListIBM = NULL; +PFNGLBLENDFUNCSEPARATEINGRPROC glad_glBlendFuncSeparateINGR = NULL; +PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL = NULL; +PFNGLSYNCTEXTUREINTELPROC glad_glSyncTextureINTEL = NULL; +PFNGLUNMAPTEXTURE2DINTELPROC glad_glUnmapTexture2DINTEL = NULL; +PFNGLMAPTEXTURE2DINTELPROC glad_glMapTexture2DINTEL = NULL; +PFNGLVERTEXPOINTERVINTELPROC glad_glVertexPointervINTEL = NULL; +PFNGLNORMALPOINTERVINTELPROC glad_glNormalPointervINTEL = NULL; +PFNGLCOLORPOINTERVINTELPROC glad_glColorPointervINTEL = NULL; +PFNGLTEXCOORDPOINTERVINTELPROC glad_glTexCoordPointervINTEL = NULL; +PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL = NULL; +PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL = NULL; +PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL = NULL; +PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL = NULL; +PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL = NULL; +PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL = NULL; +PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL = NULL; +PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL = NULL; +PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL = NULL; +PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL = NULL; +PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR = NULL; +PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl = NULL; +PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert = NULL; +PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback = NULL; +PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog = NULL; +PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup = NULL; +PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup = NULL; +PFNGLOBJECTLABELPROC glad_glObjectLabel = NULL; +PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel = NULL; +PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel = NULL; +PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel = NULL; +PFNGLGETPOINTERVPROC glad_glGetPointerv = NULL; +PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR = NULL; +PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR = NULL; +PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR = NULL; +PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR = NULL; +PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR = NULL; +PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR = NULL; +PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR = NULL; +PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR = NULL; +PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR = NULL; +PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR = NULL; +PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR = NULL; +PFNGLMAXSHADERCOMPILERTHREADSKHRPROC glad_glMaxShaderCompilerThreadsKHR = NULL; +PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus = NULL; +PFNGLREADNPIXELSPROC glad_glReadnPixels = NULL; +PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv = NULL; +PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv = NULL; +PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv = NULL; +PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR = NULL; +PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR = NULL; +PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR = NULL; +PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR = NULL; +PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR = NULL; +PFNGLFRAMEBUFFERPARAMETERIMESAPROC glad_glFramebufferParameteriMESA = NULL; +PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC glad_glGetFramebufferParameterivMESA = NULL; +PFNGLRESIZEBUFFERSMESAPROC glad_glResizeBuffersMESA = NULL; +PFNGLWINDOWPOS2DMESAPROC glad_glWindowPos2dMESA = NULL; +PFNGLWINDOWPOS2DVMESAPROC glad_glWindowPos2dvMESA = NULL; +PFNGLWINDOWPOS2FMESAPROC glad_glWindowPos2fMESA = NULL; +PFNGLWINDOWPOS2FVMESAPROC glad_glWindowPos2fvMESA = NULL; +PFNGLWINDOWPOS2IMESAPROC glad_glWindowPos2iMESA = NULL; +PFNGLWINDOWPOS2IVMESAPROC glad_glWindowPos2ivMESA = NULL; +PFNGLWINDOWPOS2SMESAPROC glad_glWindowPos2sMESA = NULL; +PFNGLWINDOWPOS2SVMESAPROC glad_glWindowPos2svMESA = NULL; +PFNGLWINDOWPOS3DMESAPROC glad_glWindowPos3dMESA = NULL; +PFNGLWINDOWPOS3DVMESAPROC glad_glWindowPos3dvMESA = NULL; +PFNGLWINDOWPOS3FMESAPROC glad_glWindowPos3fMESA = NULL; +PFNGLWINDOWPOS3FVMESAPROC glad_glWindowPos3fvMESA = NULL; +PFNGLWINDOWPOS3IMESAPROC glad_glWindowPos3iMESA = NULL; +PFNGLWINDOWPOS3IVMESAPROC glad_glWindowPos3ivMESA = NULL; +PFNGLWINDOWPOS3SMESAPROC glad_glWindowPos3sMESA = NULL; +PFNGLWINDOWPOS3SVMESAPROC glad_glWindowPos3svMESA = NULL; +PFNGLWINDOWPOS4DMESAPROC glad_glWindowPos4dMESA = NULL; +PFNGLWINDOWPOS4DVMESAPROC glad_glWindowPos4dvMESA = NULL; +PFNGLWINDOWPOS4FMESAPROC glad_glWindowPos4fMESA = NULL; +PFNGLWINDOWPOS4FVMESAPROC glad_glWindowPos4fvMESA = NULL; +PFNGLWINDOWPOS4IMESAPROC glad_glWindowPos4iMESA = NULL; +PFNGLWINDOWPOS4IVMESAPROC glad_glWindowPos4ivMESA = NULL; +PFNGLWINDOWPOS4SMESAPROC glad_glWindowPos4sMESA = NULL; +PFNGLWINDOWPOS4SVMESAPROC glad_glWindowPos4svMESA = NULL; +PFNGLBEGINCONDITIONALRENDERNVXPROC glad_glBeginConditionalRenderNVX = NULL; +PFNGLENDCONDITIONALRENDERNVXPROC glad_glEndConditionalRenderNVX = NULL; +PFNGLUPLOADGPUMASKNVXPROC glad_glUploadGpuMaskNVX = NULL; +PFNGLMULTICASTVIEWPORTARRAYVNVXPROC glad_glMulticastViewportArrayvNVX = NULL; +PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC glad_glMulticastViewportPositionWScaleNVX = NULL; +PFNGLMULTICASTSCISSORARRAYVNVXPROC glad_glMulticastScissorArrayvNVX = NULL; +PFNGLASYNCCOPYBUFFERSUBDATANVXPROC glad_glAsyncCopyBufferSubDataNVX = NULL; +PFNGLASYNCCOPYIMAGESUBDATANVXPROC glad_glAsyncCopyImageSubDataNVX = NULL; +PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC glad_glLGPUNamedBufferSubDataNVX = NULL; +PFNGLLGPUCOPYIMAGESUBDATANVXPROC glad_glLGPUCopyImageSubDataNVX = NULL; +PFNGLLGPUINTERLOCKNVXPROC glad_glLGPUInterlockNVX = NULL; +PFNGLCREATEPROGRESSFENCENVXPROC glad_glCreateProgressFenceNVX = NULL; +PFNGLSIGNALSEMAPHOREUI64NVXPROC glad_glSignalSemaphoreui64NVX = NULL; +PFNGLWAITSEMAPHOREUI64NVXPROC glad_glWaitSemaphoreui64NVX = NULL; +PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC glad_glClientWaitSemaphoreui64NVX = NULL; +PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC glad_glAlphaToCoverageDitherControlNV = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC glad_glMultiDrawArraysIndirectBindlessNV = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC glad_glMultiDrawElementsIndirectBindlessNV = NULL; +PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawArraysIndirectBindlessCountNV = NULL; +PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawElementsIndirectBindlessCountNV = NULL; +PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV = NULL; +PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV = NULL; +PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV = NULL; +PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV = NULL; +PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV = NULL; +PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV = NULL; +PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV = NULL; +PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV = NULL; +PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV = NULL; +PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV = NULL; +PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV = NULL; +PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV = NULL; +PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV = NULL; +PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV = NULL; +PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV = NULL; +PFNGLVIEWPORTPOSITIONWSCALENVPROC glad_glViewportPositionWScaleNV = NULL; +PFNGLCREATESTATESNVPROC glad_glCreateStatesNV = NULL; +PFNGLDELETESTATESNVPROC glad_glDeleteStatesNV = NULL; +PFNGLISSTATENVPROC glad_glIsStateNV = NULL; +PFNGLSTATECAPTURENVPROC glad_glStateCaptureNV = NULL; +PFNGLGETCOMMANDHEADERNVPROC glad_glGetCommandHeaderNV = NULL; +PFNGLGETSTAGEINDEXNVPROC glad_glGetStageIndexNV = NULL; +PFNGLDRAWCOMMANDSNVPROC glad_glDrawCommandsNV = NULL; +PFNGLDRAWCOMMANDSADDRESSNVPROC glad_glDrawCommandsAddressNV = NULL; +PFNGLDRAWCOMMANDSSTATESNVPROC glad_glDrawCommandsStatesNV = NULL; +PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC glad_glDrawCommandsStatesAddressNV = NULL; +PFNGLCREATECOMMANDLISTSNVPROC glad_glCreateCommandListsNV = NULL; +PFNGLDELETECOMMANDLISTSNVPROC glad_glDeleteCommandListsNV = NULL; +PFNGLISCOMMANDLISTNVPROC glad_glIsCommandListNV = NULL; +PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC glad_glListDrawCommandsStatesClientNV = NULL; +PFNGLCOMMANDLISTSEGMENTSNVPROC glad_glCommandListSegmentsNV = NULL; +PFNGLCOMPILECOMMANDLISTNVPROC glad_glCompileCommandListNV = NULL; +PFNGLCALLCOMMANDLISTNVPROC glad_glCallCommandListNV = NULL; +PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV = NULL; +PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV = NULL; +PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV = NULL; +PFNGLCONSERVATIVERASTERPARAMETERFNVPROC glad_glConservativeRasterParameterfNV = NULL; +PFNGLCONSERVATIVERASTERPARAMETERINVPROC glad_glConservativeRasterParameteriNV = NULL; +PFNGLCOPYIMAGESUBDATANVPROC glad_glCopyImageSubDataNV = NULL; +PFNGLDEPTHRANGEDNVPROC glad_glDepthRangedNV = NULL; +PFNGLCLEARDEPTHDNVPROC glad_glClearDepthdNV = NULL; +PFNGLDEPTHBOUNDSDNVPROC glad_glDepthBoundsdNV = NULL; +PFNGLDRAWTEXTURENVPROC glad_glDrawTextureNV = NULL; +PFNGLDRAWVKIMAGENVPROC glad_glDrawVkImageNV = NULL; +PFNGLGETVKPROCADDRNVPROC glad_glGetVkProcAddrNV = NULL; +PFNGLWAITVKSEMAPHORENVPROC glad_glWaitVkSemaphoreNV = NULL; +PFNGLSIGNALVKSEMAPHORENVPROC glad_glSignalVkSemaphoreNV = NULL; +PFNGLSIGNALVKFENCENVPROC glad_glSignalVkFenceNV = NULL; +PFNGLMAPCONTROLPOINTSNVPROC glad_glMapControlPointsNV = NULL; +PFNGLMAPPARAMETERIVNVPROC glad_glMapParameterivNV = NULL; +PFNGLMAPPARAMETERFVNVPROC glad_glMapParameterfvNV = NULL; +PFNGLGETMAPCONTROLPOINTSNVPROC glad_glGetMapControlPointsNV = NULL; +PFNGLGETMAPPARAMETERIVNVPROC glad_glGetMapParameterivNV = NULL; +PFNGLGETMAPPARAMETERFVNVPROC glad_glGetMapParameterfvNV = NULL; +PFNGLGETMAPATTRIBPARAMETERIVNVPROC glad_glGetMapAttribParameterivNV = NULL; +PFNGLGETMAPATTRIBPARAMETERFVNVPROC glad_glGetMapAttribParameterfvNV = NULL; +PFNGLEVALMAPSNVPROC glad_glEvalMapsNV = NULL; +PFNGLGETMULTISAMPLEFVNVPROC glad_glGetMultisamplefvNV = NULL; +PFNGLSAMPLEMASKINDEXEDNVPROC glad_glSampleMaskIndexedNV = NULL; +PFNGLTEXRENDERBUFFERNVPROC glad_glTexRenderbufferNV = NULL; +PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV = NULL; +PFNGLGENFENCESNVPROC glad_glGenFencesNV = NULL; +PFNGLISFENCENVPROC glad_glIsFenceNV = NULL; +PFNGLTESTFENCENVPROC glad_glTestFenceNV = NULL; +PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV = NULL; +PFNGLFINISHFENCENVPROC glad_glFinishFenceNV = NULL; +PFNGLSETFENCENVPROC glad_glSetFenceNV = NULL; +PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV = NULL; +PFNGLPROGRAMNAMEDPARAMETER4FNVPROC glad_glProgramNamedParameter4fNV = NULL; +PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC glad_glProgramNamedParameter4fvNV = NULL; +PFNGLPROGRAMNAMEDPARAMETER4DNVPROC glad_glProgramNamedParameter4dNV = NULL; +PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC glad_glProgramNamedParameter4dvNV = NULL; +PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glad_glGetProgramNamedParameterfvNV = NULL; +PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glad_glGetProgramNamedParameterdvNV = NULL; +PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV = NULL; +PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV = NULL; +PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC glad_glRenderbufferStorageMultisampleCoverageNV = NULL; +PFNGLPROGRAMVERTEXLIMITNVPROC glad_glProgramVertexLimitNV = NULL; +PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT = NULL; +PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC glad_glFramebufferTextureFaceEXT = NULL; +PFNGLRENDERGPUMASKNVPROC glad_glRenderGpuMaskNV = NULL; +PFNGLMULTICASTBUFFERSUBDATANVPROC glad_glMulticastBufferSubDataNV = NULL; +PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC glad_glMulticastCopyBufferSubDataNV = NULL; +PFNGLMULTICASTCOPYIMAGESUBDATANVPROC glad_glMulticastCopyImageSubDataNV = NULL; +PFNGLMULTICASTBLITFRAMEBUFFERNVPROC glad_glMulticastBlitFramebufferNV = NULL; +PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glMulticastFramebufferSampleLocationsfvNV = NULL; +PFNGLMULTICASTBARRIERNVPROC glad_glMulticastBarrierNV = NULL; +PFNGLMULTICASTWAITSYNCNVPROC glad_glMulticastWaitSyncNV = NULL; +PFNGLMULTICASTGETQUERYOBJECTIVNVPROC glad_glMulticastGetQueryObjectivNV = NULL; +PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC glad_glMulticastGetQueryObjectuivNV = NULL; +PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC glad_glMulticastGetQueryObjecti64vNV = NULL; +PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC glad_glMulticastGetQueryObjectui64vNV = NULL; +PFNGLPROGRAMLOCALPARAMETERI4INVPROC glad_glProgramLocalParameterI4iNV = NULL; +PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC glad_glProgramLocalParameterI4ivNV = NULL; +PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC glad_glProgramLocalParametersI4ivNV = NULL; +PFNGLPROGRAMLOCALPARAMETERI4UINVPROC glad_glProgramLocalParameterI4uiNV = NULL; +PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC glad_glProgramLocalParameterI4uivNV = NULL; +PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC glad_glProgramLocalParametersI4uivNV = NULL; +PFNGLPROGRAMENVPARAMETERI4INVPROC glad_glProgramEnvParameterI4iNV = NULL; +PFNGLPROGRAMENVPARAMETERI4IVNVPROC glad_glProgramEnvParameterI4ivNV = NULL; +PFNGLPROGRAMENVPARAMETERSI4IVNVPROC glad_glProgramEnvParametersI4ivNV = NULL; +PFNGLPROGRAMENVPARAMETERI4UINVPROC glad_glProgramEnvParameterI4uiNV = NULL; +PFNGLPROGRAMENVPARAMETERI4UIVNVPROC glad_glProgramEnvParameterI4uivNV = NULL; +PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC glad_glProgramEnvParametersI4uivNV = NULL; +PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC glad_glGetProgramLocalParameterIivNV = NULL; +PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC glad_glGetProgramLocalParameterIuivNV = NULL; +PFNGLGETPROGRAMENVPARAMETERIIVNVPROC glad_glGetProgramEnvParameterIivNV = NULL; +PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC glad_glGetProgramEnvParameterIuivNV = NULL; +PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC glad_glProgramSubroutineParametersuivNV = NULL; +PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC glad_glGetProgramSubroutineParameteruivNV = NULL; +PFNGLVERTEX2HNVPROC glad_glVertex2hNV = NULL; +PFNGLVERTEX2HVNVPROC glad_glVertex2hvNV = NULL; +PFNGLVERTEX3HNVPROC glad_glVertex3hNV = NULL; +PFNGLVERTEX3HVNVPROC glad_glVertex3hvNV = NULL; +PFNGLVERTEX4HNVPROC glad_glVertex4hNV = NULL; +PFNGLVERTEX4HVNVPROC glad_glVertex4hvNV = NULL; +PFNGLNORMAL3HNVPROC glad_glNormal3hNV = NULL; +PFNGLNORMAL3HVNVPROC glad_glNormal3hvNV = NULL; +PFNGLCOLOR3HNVPROC glad_glColor3hNV = NULL; +PFNGLCOLOR3HVNVPROC glad_glColor3hvNV = NULL; +PFNGLCOLOR4HNVPROC glad_glColor4hNV = NULL; +PFNGLCOLOR4HVNVPROC glad_glColor4hvNV = NULL; +PFNGLTEXCOORD1HNVPROC glad_glTexCoord1hNV = NULL; +PFNGLTEXCOORD1HVNVPROC glad_glTexCoord1hvNV = NULL; +PFNGLTEXCOORD2HNVPROC glad_glTexCoord2hNV = NULL; +PFNGLTEXCOORD2HVNVPROC glad_glTexCoord2hvNV = NULL; +PFNGLTEXCOORD3HNVPROC glad_glTexCoord3hNV = NULL; +PFNGLTEXCOORD3HVNVPROC glad_glTexCoord3hvNV = NULL; +PFNGLTEXCOORD4HNVPROC glad_glTexCoord4hNV = NULL; +PFNGLTEXCOORD4HVNVPROC glad_glTexCoord4hvNV = NULL; +PFNGLMULTITEXCOORD1HNVPROC glad_glMultiTexCoord1hNV = NULL; +PFNGLMULTITEXCOORD1HVNVPROC glad_glMultiTexCoord1hvNV = NULL; +PFNGLMULTITEXCOORD2HNVPROC glad_glMultiTexCoord2hNV = NULL; +PFNGLMULTITEXCOORD2HVNVPROC glad_glMultiTexCoord2hvNV = NULL; +PFNGLMULTITEXCOORD3HNVPROC glad_glMultiTexCoord3hNV = NULL; +PFNGLMULTITEXCOORD3HVNVPROC glad_glMultiTexCoord3hvNV = NULL; +PFNGLMULTITEXCOORD4HNVPROC glad_glMultiTexCoord4hNV = NULL; +PFNGLMULTITEXCOORD4HVNVPROC glad_glMultiTexCoord4hvNV = NULL; +PFNGLFOGCOORDHNVPROC glad_glFogCoordhNV = NULL; +PFNGLFOGCOORDHVNVPROC glad_glFogCoordhvNV = NULL; +PFNGLSECONDARYCOLOR3HNVPROC glad_glSecondaryColor3hNV = NULL; +PFNGLSECONDARYCOLOR3HVNVPROC glad_glSecondaryColor3hvNV = NULL; +PFNGLVERTEXWEIGHTHNVPROC glad_glVertexWeighthNV = NULL; +PFNGLVERTEXWEIGHTHVNVPROC glad_glVertexWeighthvNV = NULL; +PFNGLVERTEXATTRIB1HNVPROC glad_glVertexAttrib1hNV = NULL; +PFNGLVERTEXATTRIB1HVNVPROC glad_glVertexAttrib1hvNV = NULL; +PFNGLVERTEXATTRIB2HNVPROC glad_glVertexAttrib2hNV = NULL; +PFNGLVERTEXATTRIB2HVNVPROC glad_glVertexAttrib2hvNV = NULL; +PFNGLVERTEXATTRIB3HNVPROC glad_glVertexAttrib3hNV = NULL; +PFNGLVERTEXATTRIB3HVNVPROC glad_glVertexAttrib3hvNV = NULL; +PFNGLVERTEXATTRIB4HNVPROC glad_glVertexAttrib4hNV = NULL; +PFNGLVERTEXATTRIB4HVNVPROC glad_glVertexAttrib4hvNV = NULL; +PFNGLVERTEXATTRIBS1HVNVPROC glad_glVertexAttribs1hvNV = NULL; +PFNGLVERTEXATTRIBS2HVNVPROC glad_glVertexAttribs2hvNV = NULL; +PFNGLVERTEXATTRIBS3HVNVPROC glad_glVertexAttribs3hvNV = NULL; +PFNGLVERTEXATTRIBS4HVNVPROC glad_glVertexAttribs4hvNV = NULL; +PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV = NULL; +PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC glad_glGetMemoryObjectDetachedResourcesuivNV = NULL; +PFNGLRESETMEMORYOBJECTPARAMETERNVPROC glad_glResetMemoryObjectParameterNV = NULL; +PFNGLTEXATTACHMEMORYNVPROC glad_glTexAttachMemoryNV = NULL; +PFNGLBUFFERATTACHMEMORYNVPROC glad_glBufferAttachMemoryNV = NULL; +PFNGLTEXTUREATTACHMEMORYNVPROC glad_glTextureAttachMemoryNV = NULL; +PFNGLNAMEDBUFFERATTACHMEMORYNVPROC glad_glNamedBufferAttachMemoryNV = NULL; +PFNGLDRAWMESHTASKSNVPROC glad_glDrawMeshTasksNV = NULL; +PFNGLDRAWMESHTASKSINDIRECTNVPROC glad_glDrawMeshTasksIndirectNV = NULL; +PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC glad_glMultiDrawMeshTasksIndirectNV = NULL; +PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC glad_glMultiDrawMeshTasksIndirectCountNV = NULL; +PFNGLGENOCCLUSIONQUERIESNVPROC glad_glGenOcclusionQueriesNV = NULL; +PFNGLDELETEOCCLUSIONQUERIESNVPROC glad_glDeleteOcclusionQueriesNV = NULL; +PFNGLISOCCLUSIONQUERYNVPROC glad_glIsOcclusionQueryNV = NULL; +PFNGLBEGINOCCLUSIONQUERYNVPROC glad_glBeginOcclusionQueryNV = NULL; +PFNGLENDOCCLUSIONQUERYNVPROC glad_glEndOcclusionQueryNV = NULL; +PFNGLGETOCCLUSIONQUERYIVNVPROC glad_glGetOcclusionQueryivNV = NULL; +PFNGLGETOCCLUSIONQUERYUIVNVPROC glad_glGetOcclusionQueryuivNV = NULL; +PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC glad_glProgramBufferParametersfvNV = NULL; +PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC glad_glProgramBufferParametersIivNV = NULL; +PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC glad_glProgramBufferParametersIuivNV = NULL; +PFNGLGENPATHSNVPROC glad_glGenPathsNV = NULL; +PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV = NULL; +PFNGLISPATHNVPROC glad_glIsPathNV = NULL; +PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV = NULL; +PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV = NULL; +PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV = NULL; +PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV = NULL; +PFNGLPATHSTRINGNVPROC glad_glPathStringNV = NULL; +PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV = NULL; +PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV = NULL; +PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV = NULL; +PFNGLCOPYPATHNVPROC glad_glCopyPathNV = NULL; +PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV = NULL; +PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV = NULL; +PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV = NULL; +PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV = NULL; +PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV = NULL; +PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV = NULL; +PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV = NULL; +PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV = NULL; +PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV = NULL; +PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV = NULL; +PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV = NULL; +PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV = NULL; +PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV = NULL; +PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV = NULL; +PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV = NULL; +PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV = NULL; +PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV = NULL; +PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV = NULL; +PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV = NULL; +PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV = NULL; +PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV = NULL; +PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV = NULL; +PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV = NULL; +PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV = NULL; +PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV = NULL; +PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV = NULL; +PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV = NULL; +PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV = NULL; +PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV = NULL; +PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV = NULL; +PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV = NULL; +PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV = NULL; +PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV = NULL; +PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV = NULL; +PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV = NULL; +PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV = NULL; +PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV = NULL; +PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV = NULL; +PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV = NULL; +PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV = NULL; +PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV = NULL; +PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV = NULL; +PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV = NULL; +PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV = NULL; +PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV = NULL; +PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV = NULL; +PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV = NULL; +PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV = NULL; +PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV = NULL; +PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV = NULL; +PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV = NULL; +PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV = NULL; +PFNGLPIXELDATARANGENVPROC glad_glPixelDataRangeNV = NULL; +PFNGLFLUSHPIXELDATARANGENVPROC glad_glFlushPixelDataRangeNV = NULL; +PFNGLPOINTPARAMETERINVPROC glad_glPointParameteriNV = NULL; +PFNGLPOINTPARAMETERIVNVPROC glad_glPointParameterivNV = NULL; +PFNGLPRESENTFRAMEKEYEDNVPROC glad_glPresentFrameKeyedNV = NULL; +PFNGLPRESENTFRAMEDUALFILLNVPROC glad_glPresentFrameDualFillNV = NULL; +PFNGLGETVIDEOIVNVPROC glad_glGetVideoivNV = NULL; +PFNGLGETVIDEOUIVNVPROC glad_glGetVideouivNV = NULL; +PFNGLGETVIDEOI64VNVPROC glad_glGetVideoi64vNV = NULL; +PFNGLGETVIDEOUI64VNVPROC glad_glGetVideoui64vNV = NULL; +PFNGLPRIMITIVERESTARTNVPROC glad_glPrimitiveRestartNV = NULL; +PFNGLPRIMITIVERESTARTINDEXNVPROC glad_glPrimitiveRestartIndexNV = NULL; +PFNGLQUERYRESOURCENVPROC glad_glQueryResourceNV = NULL; +PFNGLGENQUERYRESOURCETAGNVPROC glad_glGenQueryResourceTagNV = NULL; +PFNGLDELETEQUERYRESOURCETAGNVPROC glad_glDeleteQueryResourceTagNV = NULL; +PFNGLQUERYRESOURCETAGNVPROC glad_glQueryResourceTagNV = NULL; +PFNGLCOMBINERPARAMETERFVNVPROC glad_glCombinerParameterfvNV = NULL; +PFNGLCOMBINERPARAMETERFNVPROC glad_glCombinerParameterfNV = NULL; +PFNGLCOMBINERPARAMETERIVNVPROC glad_glCombinerParameterivNV = NULL; +PFNGLCOMBINERPARAMETERINVPROC glad_glCombinerParameteriNV = NULL; +PFNGLCOMBINERINPUTNVPROC glad_glCombinerInputNV = NULL; +PFNGLCOMBINEROUTPUTNVPROC glad_glCombinerOutputNV = NULL; +PFNGLFINALCOMBINERINPUTNVPROC glad_glFinalCombinerInputNV = NULL; +PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glad_glGetCombinerInputParameterfvNV = NULL; +PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glad_glGetCombinerInputParameterivNV = NULL; +PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glad_glGetCombinerOutputParameterfvNV = NULL; +PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glad_glGetCombinerOutputParameterivNV = NULL; +PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glad_glGetFinalCombinerInputParameterfvNV = NULL; +PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glad_glGetFinalCombinerInputParameterivNV = NULL; +PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glad_glCombinerStageParameterfvNV = NULL; +PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glad_glGetCombinerStageParameterfvNV = NULL; +PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV = NULL; +PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV = NULL; +PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV = NULL; +PFNGLSCISSOREXCLUSIVENVPROC glad_glScissorExclusiveNV = NULL; +PFNGLSCISSOREXCLUSIVEARRAYVNVPROC glad_glScissorExclusiveArrayvNV = NULL; +PFNGLMAKEBUFFERRESIDENTNVPROC glad_glMakeBufferResidentNV = NULL; +PFNGLMAKEBUFFERNONRESIDENTNVPROC glad_glMakeBufferNonResidentNV = NULL; +PFNGLISBUFFERRESIDENTNVPROC glad_glIsBufferResidentNV = NULL; +PFNGLMAKENAMEDBUFFERRESIDENTNVPROC glad_glMakeNamedBufferResidentNV = NULL; +PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC glad_glMakeNamedBufferNonResidentNV = NULL; +PFNGLISNAMEDBUFFERRESIDENTNVPROC glad_glIsNamedBufferResidentNV = NULL; +PFNGLGETBUFFERPARAMETERUI64VNVPROC glad_glGetBufferParameterui64vNV = NULL; +PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC glad_glGetNamedBufferParameterui64vNV = NULL; +PFNGLGETINTEGERUI64VNVPROC glad_glGetIntegerui64vNV = NULL; +PFNGLUNIFORMUI64NVPROC glad_glUniformui64NV = NULL; +PFNGLUNIFORMUI64VNVPROC glad_glUniformui64vNV = NULL; +PFNGLPROGRAMUNIFORMUI64NVPROC glad_glProgramUniformui64NV = NULL; +PFNGLPROGRAMUNIFORMUI64VNVPROC glad_glProgramUniformui64vNV = NULL; +PFNGLBINDSHADINGRATEIMAGENVPROC glad_glBindShadingRateImageNV = NULL; +PFNGLGETSHADINGRATEIMAGEPALETTENVPROC glad_glGetShadingRateImagePaletteNV = NULL; +PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC glad_glGetShadingRateSampleLocationivNV = NULL; +PFNGLSHADINGRATEIMAGEBARRIERNVPROC glad_glShadingRateImageBarrierNV = NULL; +PFNGLSHADINGRATEIMAGEPALETTENVPROC glad_glShadingRateImagePaletteNV = NULL; +PFNGLSHADINGRATESAMPLEORDERNVPROC glad_glShadingRateSampleOrderNV = NULL; +PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC glad_glShadingRateSampleOrderCustomNV = NULL; +PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV = NULL; +PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTexImage2DMultisampleCoverageNV = NULL; +PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTexImage3DMultisampleCoverageNV = NULL; +PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC glad_glTextureImage2DMultisampleNV = NULL; +PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC glad_glTextureImage3DMultisampleNV = NULL; +PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTextureImage2DMultisampleCoverageNV = NULL; +PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTextureImage3DMultisampleCoverageNV = NULL; +PFNGLBEGINTRANSFORMFEEDBACKNVPROC glad_glBeginTransformFeedbackNV = NULL; +PFNGLENDTRANSFORMFEEDBACKNVPROC glad_glEndTransformFeedbackNV = NULL; +PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC glad_glTransformFeedbackAttribsNV = NULL; +PFNGLBINDBUFFERRANGENVPROC glad_glBindBufferRangeNV = NULL; +PFNGLBINDBUFFEROFFSETNVPROC glad_glBindBufferOffsetNV = NULL; +PFNGLBINDBUFFERBASENVPROC glad_glBindBufferBaseNV = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC glad_glTransformFeedbackVaryingsNV = NULL; +PFNGLACTIVEVARYINGNVPROC glad_glActiveVaryingNV = NULL; +PFNGLGETVARYINGLOCATIONNVPROC glad_glGetVaryingLocationNV = NULL; +PFNGLGETACTIVEVARYINGNVPROC glad_glGetActiveVaryingNV = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC glad_glGetTransformFeedbackVaryingNV = NULL; +PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC glad_glTransformFeedbackStreamAttribsNV = NULL; +PFNGLBINDTRANSFORMFEEDBACKNVPROC glad_glBindTransformFeedbackNV = NULL; +PFNGLDELETETRANSFORMFEEDBACKSNVPROC glad_glDeleteTransformFeedbacksNV = NULL; +PFNGLGENTRANSFORMFEEDBACKSNVPROC glad_glGenTransformFeedbacksNV = NULL; +PFNGLISTRANSFORMFEEDBACKNVPROC glad_glIsTransformFeedbackNV = NULL; +PFNGLPAUSETRANSFORMFEEDBACKNVPROC glad_glPauseTransformFeedbackNV = NULL; +PFNGLRESUMETRANSFORMFEEDBACKNVPROC glad_glResumeTransformFeedbackNV = NULL; +PFNGLDRAWTRANSFORMFEEDBACKNVPROC glad_glDrawTransformFeedbackNV = NULL; +PFNGLVDPAUINITNVPROC glad_glVDPAUInitNV = NULL; +PFNGLVDPAUFININVPROC glad_glVDPAUFiniNV = NULL; +PFNGLVDPAUREGISTERVIDEOSURFACENVPROC glad_glVDPAURegisterVideoSurfaceNV = NULL; +PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC glad_glVDPAURegisterOutputSurfaceNV = NULL; +PFNGLVDPAUISSURFACENVPROC glad_glVDPAUIsSurfaceNV = NULL; +PFNGLVDPAUUNREGISTERSURFACENVPROC glad_glVDPAUUnregisterSurfaceNV = NULL; +PFNGLVDPAUGETSURFACEIVNVPROC glad_glVDPAUGetSurfaceivNV = NULL; +PFNGLVDPAUSURFACEACCESSNVPROC glad_glVDPAUSurfaceAccessNV = NULL; +PFNGLVDPAUMAPSURFACESNVPROC glad_glVDPAUMapSurfacesNV = NULL; +PFNGLVDPAUUNMAPSURFACESNVPROC glad_glVDPAUUnmapSurfacesNV = NULL; +PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC glad_glVDPAURegisterVideoSurfaceWithPictureStructureNV = NULL; +PFNGLFLUSHVERTEXARRAYRANGENVPROC glad_glFlushVertexArrayRangeNV = NULL; +PFNGLVERTEXARRAYRANGENVPROC glad_glVertexArrayRangeNV = NULL; +PFNGLVERTEXATTRIBL1I64NVPROC glad_glVertexAttribL1i64NV = NULL; +PFNGLVERTEXATTRIBL2I64NVPROC glad_glVertexAttribL2i64NV = NULL; +PFNGLVERTEXATTRIBL3I64NVPROC glad_glVertexAttribL3i64NV = NULL; +PFNGLVERTEXATTRIBL4I64NVPROC glad_glVertexAttribL4i64NV = NULL; +PFNGLVERTEXATTRIBL1I64VNVPROC glad_glVertexAttribL1i64vNV = NULL; +PFNGLVERTEXATTRIBL2I64VNVPROC glad_glVertexAttribL2i64vNV = NULL; +PFNGLVERTEXATTRIBL3I64VNVPROC glad_glVertexAttribL3i64vNV = NULL; +PFNGLVERTEXATTRIBL4I64VNVPROC glad_glVertexAttribL4i64vNV = NULL; +PFNGLVERTEXATTRIBL1UI64NVPROC glad_glVertexAttribL1ui64NV = NULL; +PFNGLVERTEXATTRIBL2UI64NVPROC glad_glVertexAttribL2ui64NV = NULL; +PFNGLVERTEXATTRIBL3UI64NVPROC glad_glVertexAttribL3ui64NV = NULL; +PFNGLVERTEXATTRIBL4UI64NVPROC glad_glVertexAttribL4ui64NV = NULL; +PFNGLVERTEXATTRIBL1UI64VNVPROC glad_glVertexAttribL1ui64vNV = NULL; +PFNGLVERTEXATTRIBL2UI64VNVPROC glad_glVertexAttribL2ui64vNV = NULL; +PFNGLVERTEXATTRIBL3UI64VNVPROC glad_glVertexAttribL3ui64vNV = NULL; +PFNGLVERTEXATTRIBL4UI64VNVPROC glad_glVertexAttribL4ui64vNV = NULL; +PFNGLGETVERTEXATTRIBLI64VNVPROC glad_glGetVertexAttribLi64vNV = NULL; +PFNGLGETVERTEXATTRIBLUI64VNVPROC glad_glGetVertexAttribLui64vNV = NULL; +PFNGLVERTEXATTRIBLFORMATNVPROC glad_glVertexAttribLFormatNV = NULL; +PFNGLBUFFERADDRESSRANGENVPROC glad_glBufferAddressRangeNV = NULL; +PFNGLVERTEXFORMATNVPROC glad_glVertexFormatNV = NULL; +PFNGLNORMALFORMATNVPROC glad_glNormalFormatNV = NULL; +PFNGLCOLORFORMATNVPROC glad_glColorFormatNV = NULL; +PFNGLINDEXFORMATNVPROC glad_glIndexFormatNV = NULL; +PFNGLTEXCOORDFORMATNVPROC glad_glTexCoordFormatNV = NULL; +PFNGLEDGEFLAGFORMATNVPROC glad_glEdgeFlagFormatNV = NULL; +PFNGLSECONDARYCOLORFORMATNVPROC glad_glSecondaryColorFormatNV = NULL; +PFNGLFOGCOORDFORMATNVPROC glad_glFogCoordFormatNV = NULL; +PFNGLVERTEXATTRIBFORMATNVPROC glad_glVertexAttribFormatNV = NULL; +PFNGLVERTEXATTRIBIFORMATNVPROC glad_glVertexAttribIFormatNV = NULL; +PFNGLGETINTEGERUI64I_VNVPROC glad_glGetIntegerui64i_vNV = NULL; +PFNGLAREPROGRAMSRESIDENTNVPROC glad_glAreProgramsResidentNV = NULL; +PFNGLBINDPROGRAMNVPROC glad_glBindProgramNV = NULL; +PFNGLDELETEPROGRAMSNVPROC glad_glDeleteProgramsNV = NULL; +PFNGLEXECUTEPROGRAMNVPROC glad_glExecuteProgramNV = NULL; +PFNGLGENPROGRAMSNVPROC glad_glGenProgramsNV = NULL; +PFNGLGETPROGRAMPARAMETERDVNVPROC glad_glGetProgramParameterdvNV = NULL; +PFNGLGETPROGRAMPARAMETERFVNVPROC glad_glGetProgramParameterfvNV = NULL; +PFNGLGETPROGRAMIVNVPROC glad_glGetProgramivNV = NULL; +PFNGLGETPROGRAMSTRINGNVPROC glad_glGetProgramStringNV = NULL; +PFNGLGETTRACKMATRIXIVNVPROC glad_glGetTrackMatrixivNV = NULL; +PFNGLGETVERTEXATTRIBDVNVPROC glad_glGetVertexAttribdvNV = NULL; +PFNGLGETVERTEXATTRIBFVNVPROC glad_glGetVertexAttribfvNV = NULL; +PFNGLGETVERTEXATTRIBIVNVPROC glad_glGetVertexAttribivNV = NULL; +PFNGLGETVERTEXATTRIBPOINTERVNVPROC glad_glGetVertexAttribPointervNV = NULL; +PFNGLISPROGRAMNVPROC glad_glIsProgramNV = NULL; +PFNGLLOADPROGRAMNVPROC glad_glLoadProgramNV = NULL; +PFNGLPROGRAMPARAMETER4DNVPROC glad_glProgramParameter4dNV = NULL; +PFNGLPROGRAMPARAMETER4DVNVPROC glad_glProgramParameter4dvNV = NULL; +PFNGLPROGRAMPARAMETER4FNVPROC glad_glProgramParameter4fNV = NULL; +PFNGLPROGRAMPARAMETER4FVNVPROC glad_glProgramParameter4fvNV = NULL; +PFNGLPROGRAMPARAMETERS4DVNVPROC glad_glProgramParameters4dvNV = NULL; +PFNGLPROGRAMPARAMETERS4FVNVPROC glad_glProgramParameters4fvNV = NULL; +PFNGLREQUESTRESIDENTPROGRAMSNVPROC glad_glRequestResidentProgramsNV = NULL; +PFNGLTRACKMATRIXNVPROC glad_glTrackMatrixNV = NULL; +PFNGLVERTEXATTRIBPOINTERNVPROC glad_glVertexAttribPointerNV = NULL; +PFNGLVERTEXATTRIB1DNVPROC glad_glVertexAttrib1dNV = NULL; +PFNGLVERTEXATTRIB1DVNVPROC glad_glVertexAttrib1dvNV = NULL; +PFNGLVERTEXATTRIB1FNVPROC glad_glVertexAttrib1fNV = NULL; +PFNGLVERTEXATTRIB1FVNVPROC glad_glVertexAttrib1fvNV = NULL; +PFNGLVERTEXATTRIB1SNVPROC glad_glVertexAttrib1sNV = NULL; +PFNGLVERTEXATTRIB1SVNVPROC glad_glVertexAttrib1svNV = NULL; +PFNGLVERTEXATTRIB2DNVPROC glad_glVertexAttrib2dNV = NULL; +PFNGLVERTEXATTRIB2DVNVPROC glad_glVertexAttrib2dvNV = NULL; +PFNGLVERTEXATTRIB2FNVPROC glad_glVertexAttrib2fNV = NULL; +PFNGLVERTEXATTRIB2FVNVPROC glad_glVertexAttrib2fvNV = NULL; +PFNGLVERTEXATTRIB2SNVPROC glad_glVertexAttrib2sNV = NULL; +PFNGLVERTEXATTRIB2SVNVPROC glad_glVertexAttrib2svNV = NULL; +PFNGLVERTEXATTRIB3DNVPROC glad_glVertexAttrib3dNV = NULL; +PFNGLVERTEXATTRIB3DVNVPROC glad_glVertexAttrib3dvNV = NULL; +PFNGLVERTEXATTRIB3FNVPROC glad_glVertexAttrib3fNV = NULL; +PFNGLVERTEXATTRIB3FVNVPROC glad_glVertexAttrib3fvNV = NULL; +PFNGLVERTEXATTRIB3SNVPROC glad_glVertexAttrib3sNV = NULL; +PFNGLVERTEXATTRIB3SVNVPROC glad_glVertexAttrib3svNV = NULL; +PFNGLVERTEXATTRIB4DNVPROC glad_glVertexAttrib4dNV = NULL; +PFNGLVERTEXATTRIB4DVNVPROC glad_glVertexAttrib4dvNV = NULL; +PFNGLVERTEXATTRIB4FNVPROC glad_glVertexAttrib4fNV = NULL; +PFNGLVERTEXATTRIB4FVNVPROC glad_glVertexAttrib4fvNV = NULL; +PFNGLVERTEXATTRIB4SNVPROC glad_glVertexAttrib4sNV = NULL; +PFNGLVERTEXATTRIB4SVNVPROC glad_glVertexAttrib4svNV = NULL; +PFNGLVERTEXATTRIB4UBNVPROC glad_glVertexAttrib4ubNV = NULL; +PFNGLVERTEXATTRIB4UBVNVPROC glad_glVertexAttrib4ubvNV = NULL; +PFNGLVERTEXATTRIBS1DVNVPROC glad_glVertexAttribs1dvNV = NULL; +PFNGLVERTEXATTRIBS1FVNVPROC glad_glVertexAttribs1fvNV = NULL; +PFNGLVERTEXATTRIBS1SVNVPROC glad_glVertexAttribs1svNV = NULL; +PFNGLVERTEXATTRIBS2DVNVPROC glad_glVertexAttribs2dvNV = NULL; +PFNGLVERTEXATTRIBS2FVNVPROC glad_glVertexAttribs2fvNV = NULL; +PFNGLVERTEXATTRIBS2SVNVPROC glad_glVertexAttribs2svNV = NULL; +PFNGLVERTEXATTRIBS3DVNVPROC glad_glVertexAttribs3dvNV = NULL; +PFNGLVERTEXATTRIBS3FVNVPROC glad_glVertexAttribs3fvNV = NULL; +PFNGLVERTEXATTRIBS3SVNVPROC glad_glVertexAttribs3svNV = NULL; +PFNGLVERTEXATTRIBS4DVNVPROC glad_glVertexAttribs4dvNV = NULL; +PFNGLVERTEXATTRIBS4FVNVPROC glad_glVertexAttribs4fvNV = NULL; +PFNGLVERTEXATTRIBS4SVNVPROC glad_glVertexAttribs4svNV = NULL; +PFNGLVERTEXATTRIBS4UBVNVPROC glad_glVertexAttribs4ubvNV = NULL; +PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT = NULL; +PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT = NULL; +PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT = NULL; +PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT = NULL; +PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT = NULL; +PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT = NULL; +PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT = NULL; +PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT = NULL; +PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT = NULL; +PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT = NULL; +PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT = NULL; +PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT = NULL; +PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT = NULL; +PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT = NULL; +PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT = NULL; +PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT = NULL; +PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT = NULL; +PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT = NULL; +PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT = NULL; +PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT = NULL; +PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT = NULL; +PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT = NULL; +PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT = NULL; +PFNGLBEGINVIDEOCAPTURENVPROC glad_glBeginVideoCaptureNV = NULL; +PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC glad_glBindVideoCaptureStreamBufferNV = NULL; +PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC glad_glBindVideoCaptureStreamTextureNV = NULL; +PFNGLENDVIDEOCAPTURENVPROC glad_glEndVideoCaptureNV = NULL; +PFNGLGETVIDEOCAPTUREIVNVPROC glad_glGetVideoCaptureivNV = NULL; +PFNGLGETVIDEOCAPTURESTREAMIVNVPROC glad_glGetVideoCaptureStreamivNV = NULL; +PFNGLGETVIDEOCAPTURESTREAMFVNVPROC glad_glGetVideoCaptureStreamfvNV = NULL; +PFNGLGETVIDEOCAPTURESTREAMDVNVPROC glad_glGetVideoCaptureStreamdvNV = NULL; +PFNGLVIDEOCAPTURENVPROC glad_glVideoCaptureNV = NULL; +PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC glad_glVideoCaptureStreamParameterivNV = NULL; +PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC glad_glVideoCaptureStreamParameterfvNV = NULL; +PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC glad_glVideoCaptureStreamParameterdvNV = NULL; +PFNGLVIEWPORTSWIZZLENVPROC glad_glViewportSwizzleNV = NULL; +PFNGLMULTITEXCOORD1BOESPROC glad_glMultiTexCoord1bOES = NULL; +PFNGLMULTITEXCOORD1BVOESPROC glad_glMultiTexCoord1bvOES = NULL; +PFNGLMULTITEXCOORD2BOESPROC glad_glMultiTexCoord2bOES = NULL; +PFNGLMULTITEXCOORD2BVOESPROC glad_glMultiTexCoord2bvOES = NULL; +PFNGLMULTITEXCOORD3BOESPROC glad_glMultiTexCoord3bOES = NULL; +PFNGLMULTITEXCOORD3BVOESPROC glad_glMultiTexCoord3bvOES = NULL; +PFNGLMULTITEXCOORD4BOESPROC glad_glMultiTexCoord4bOES = NULL; +PFNGLMULTITEXCOORD4BVOESPROC glad_glMultiTexCoord4bvOES = NULL; +PFNGLTEXCOORD1BOESPROC glad_glTexCoord1bOES = NULL; +PFNGLTEXCOORD1BVOESPROC glad_glTexCoord1bvOES = NULL; +PFNGLTEXCOORD2BOESPROC glad_glTexCoord2bOES = NULL; +PFNGLTEXCOORD2BVOESPROC glad_glTexCoord2bvOES = NULL; +PFNGLTEXCOORD3BOESPROC glad_glTexCoord3bOES = NULL; +PFNGLTEXCOORD3BVOESPROC glad_glTexCoord3bvOES = NULL; +PFNGLTEXCOORD4BOESPROC glad_glTexCoord4bOES = NULL; +PFNGLTEXCOORD4BVOESPROC glad_glTexCoord4bvOES = NULL; +PFNGLVERTEX2BOESPROC glad_glVertex2bOES = NULL; +PFNGLVERTEX2BVOESPROC glad_glVertex2bvOES = NULL; +PFNGLVERTEX3BOESPROC glad_glVertex3bOES = NULL; +PFNGLVERTEX3BVOESPROC glad_glVertex3bvOES = NULL; +PFNGLVERTEX4BOESPROC glad_glVertex4bOES = NULL; +PFNGLVERTEX4BVOESPROC glad_glVertex4bvOES = NULL; +PFNGLALPHAFUNCXOESPROC glad_glAlphaFuncxOES = NULL; +PFNGLCLEARCOLORXOESPROC glad_glClearColorxOES = NULL; +PFNGLCLEARDEPTHXOESPROC glad_glClearDepthxOES = NULL; +PFNGLCLIPPLANEXOESPROC glad_glClipPlanexOES = NULL; +PFNGLCOLOR4XOESPROC glad_glColor4xOES = NULL; +PFNGLDEPTHRANGEXOESPROC glad_glDepthRangexOES = NULL; +PFNGLFOGXOESPROC glad_glFogxOES = NULL; +PFNGLFOGXVOESPROC glad_glFogxvOES = NULL; +PFNGLFRUSTUMXOESPROC glad_glFrustumxOES = NULL; +PFNGLGETCLIPPLANEXOESPROC glad_glGetClipPlanexOES = NULL; +PFNGLGETFIXEDVOESPROC glad_glGetFixedvOES = NULL; +PFNGLGETTEXENVXVOESPROC glad_glGetTexEnvxvOES = NULL; +PFNGLGETTEXPARAMETERXVOESPROC glad_glGetTexParameterxvOES = NULL; +PFNGLLIGHTMODELXOESPROC glad_glLightModelxOES = NULL; +PFNGLLIGHTMODELXVOESPROC glad_glLightModelxvOES = NULL; +PFNGLLIGHTXOESPROC glad_glLightxOES = NULL; +PFNGLLIGHTXVOESPROC glad_glLightxvOES = NULL; +PFNGLLINEWIDTHXOESPROC glad_glLineWidthxOES = NULL; +PFNGLLOADMATRIXXOESPROC glad_glLoadMatrixxOES = NULL; +PFNGLMATERIALXOESPROC glad_glMaterialxOES = NULL; +PFNGLMATERIALXVOESPROC glad_glMaterialxvOES = NULL; +PFNGLMULTMATRIXXOESPROC glad_glMultMatrixxOES = NULL; +PFNGLMULTITEXCOORD4XOESPROC glad_glMultiTexCoord4xOES = NULL; +PFNGLNORMAL3XOESPROC glad_glNormal3xOES = NULL; +PFNGLORTHOXOESPROC glad_glOrthoxOES = NULL; +PFNGLPOINTPARAMETERXVOESPROC glad_glPointParameterxvOES = NULL; +PFNGLPOINTSIZEXOESPROC glad_glPointSizexOES = NULL; +PFNGLPOLYGONOFFSETXOESPROC glad_glPolygonOffsetxOES = NULL; +PFNGLROTATEXOESPROC glad_glRotatexOES = NULL; +PFNGLSCALEXOESPROC glad_glScalexOES = NULL; +PFNGLTEXENVXOESPROC glad_glTexEnvxOES = NULL; +PFNGLTEXENVXVOESPROC glad_glTexEnvxvOES = NULL; +PFNGLTEXPARAMETERXOESPROC glad_glTexParameterxOES = NULL; +PFNGLTEXPARAMETERXVOESPROC glad_glTexParameterxvOES = NULL; +PFNGLTRANSLATEXOESPROC glad_glTranslatexOES = NULL; +PFNGLGETLIGHTXVOESPROC glad_glGetLightxvOES = NULL; +PFNGLGETMATERIALXVOESPROC glad_glGetMaterialxvOES = NULL; +PFNGLPOINTPARAMETERXOESPROC glad_glPointParameterxOES = NULL; +PFNGLSAMPLECOVERAGEXOESPROC glad_glSampleCoveragexOES = NULL; +PFNGLACCUMXOESPROC glad_glAccumxOES = NULL; +PFNGLBITMAPXOESPROC glad_glBitmapxOES = NULL; +PFNGLBLENDCOLORXOESPROC glad_glBlendColorxOES = NULL; +PFNGLCLEARACCUMXOESPROC glad_glClearAccumxOES = NULL; +PFNGLCOLOR3XOESPROC glad_glColor3xOES = NULL; +PFNGLCOLOR3XVOESPROC glad_glColor3xvOES = NULL; +PFNGLCOLOR4XVOESPROC glad_glColor4xvOES = NULL; +PFNGLCONVOLUTIONPARAMETERXOESPROC glad_glConvolutionParameterxOES = NULL; +PFNGLCONVOLUTIONPARAMETERXVOESPROC glad_glConvolutionParameterxvOES = NULL; +PFNGLEVALCOORD1XOESPROC glad_glEvalCoord1xOES = NULL; +PFNGLEVALCOORD1XVOESPROC glad_glEvalCoord1xvOES = NULL; +PFNGLEVALCOORD2XOESPROC glad_glEvalCoord2xOES = NULL; +PFNGLEVALCOORD2XVOESPROC glad_glEvalCoord2xvOES = NULL; +PFNGLFEEDBACKBUFFERXOESPROC glad_glFeedbackBufferxOES = NULL; +PFNGLGETCONVOLUTIONPARAMETERXVOESPROC glad_glGetConvolutionParameterxvOES = NULL; +PFNGLGETHISTOGRAMPARAMETERXVOESPROC glad_glGetHistogramParameterxvOES = NULL; +PFNGLGETLIGHTXOESPROC glad_glGetLightxOES = NULL; +PFNGLGETMAPXVOESPROC glad_glGetMapxvOES = NULL; +PFNGLGETMATERIALXOESPROC glad_glGetMaterialxOES = NULL; +PFNGLGETPIXELMAPXVPROC glad_glGetPixelMapxv = NULL; +PFNGLGETTEXGENXVOESPROC glad_glGetTexGenxvOES = NULL; +PFNGLGETTEXLEVELPARAMETERXVOESPROC glad_glGetTexLevelParameterxvOES = NULL; +PFNGLINDEXXOESPROC glad_glIndexxOES = NULL; +PFNGLINDEXXVOESPROC glad_glIndexxvOES = NULL; +PFNGLLOADTRANSPOSEMATRIXXOESPROC glad_glLoadTransposeMatrixxOES = NULL; +PFNGLMAP1XOESPROC glad_glMap1xOES = NULL; +PFNGLMAP2XOESPROC glad_glMap2xOES = NULL; +PFNGLMAPGRID1XOESPROC glad_glMapGrid1xOES = NULL; +PFNGLMAPGRID2XOESPROC glad_glMapGrid2xOES = NULL; +PFNGLMULTTRANSPOSEMATRIXXOESPROC glad_glMultTransposeMatrixxOES = NULL; +PFNGLMULTITEXCOORD1XOESPROC glad_glMultiTexCoord1xOES = NULL; +PFNGLMULTITEXCOORD1XVOESPROC glad_glMultiTexCoord1xvOES = NULL; +PFNGLMULTITEXCOORD2XOESPROC glad_glMultiTexCoord2xOES = NULL; +PFNGLMULTITEXCOORD2XVOESPROC glad_glMultiTexCoord2xvOES = NULL; +PFNGLMULTITEXCOORD3XOESPROC glad_glMultiTexCoord3xOES = NULL; +PFNGLMULTITEXCOORD3XVOESPROC glad_glMultiTexCoord3xvOES = NULL; +PFNGLMULTITEXCOORD4XVOESPROC glad_glMultiTexCoord4xvOES = NULL; +PFNGLNORMAL3XVOESPROC glad_glNormal3xvOES = NULL; +PFNGLPASSTHROUGHXOESPROC glad_glPassThroughxOES = NULL; +PFNGLPIXELMAPXPROC glad_glPixelMapx = NULL; +PFNGLPIXELSTOREXPROC glad_glPixelStorex = NULL; +PFNGLPIXELTRANSFERXOESPROC glad_glPixelTransferxOES = NULL; +PFNGLPIXELZOOMXOESPROC glad_glPixelZoomxOES = NULL; +PFNGLPRIORITIZETEXTURESXOESPROC glad_glPrioritizeTexturesxOES = NULL; +PFNGLRASTERPOS2XOESPROC glad_glRasterPos2xOES = NULL; +PFNGLRASTERPOS2XVOESPROC glad_glRasterPos2xvOES = NULL; +PFNGLRASTERPOS3XOESPROC glad_glRasterPos3xOES = NULL; +PFNGLRASTERPOS3XVOESPROC glad_glRasterPos3xvOES = NULL; +PFNGLRASTERPOS4XOESPROC glad_glRasterPos4xOES = NULL; +PFNGLRASTERPOS4XVOESPROC glad_glRasterPos4xvOES = NULL; +PFNGLRECTXOESPROC glad_glRectxOES = NULL; +PFNGLRECTXVOESPROC glad_glRectxvOES = NULL; +PFNGLTEXCOORD1XOESPROC glad_glTexCoord1xOES = NULL; +PFNGLTEXCOORD1XVOESPROC glad_glTexCoord1xvOES = NULL; +PFNGLTEXCOORD2XOESPROC glad_glTexCoord2xOES = NULL; +PFNGLTEXCOORD2XVOESPROC glad_glTexCoord2xvOES = NULL; +PFNGLTEXCOORD3XOESPROC glad_glTexCoord3xOES = NULL; +PFNGLTEXCOORD3XVOESPROC glad_glTexCoord3xvOES = NULL; +PFNGLTEXCOORD4XOESPROC glad_glTexCoord4xOES = NULL; +PFNGLTEXCOORD4XVOESPROC glad_glTexCoord4xvOES = NULL; +PFNGLTEXGENXOESPROC glad_glTexGenxOES = NULL; +PFNGLTEXGENXVOESPROC glad_glTexGenxvOES = NULL; +PFNGLVERTEX2XOESPROC glad_glVertex2xOES = NULL; +PFNGLVERTEX2XVOESPROC glad_glVertex2xvOES = NULL; +PFNGLVERTEX3XOESPROC glad_glVertex3xOES = NULL; +PFNGLVERTEX3XVOESPROC glad_glVertex3xvOES = NULL; +PFNGLVERTEX4XOESPROC glad_glVertex4xOES = NULL; +PFNGLVERTEX4XVOESPROC glad_glVertex4xvOES = NULL; +PFNGLQUERYMATRIXXOESPROC glad_glQueryMatrixxOES = NULL; +PFNGLCLEARDEPTHFOESPROC glad_glClearDepthfOES = NULL; +PFNGLCLIPPLANEFOESPROC glad_glClipPlanefOES = NULL; +PFNGLDEPTHRANGEFOESPROC glad_glDepthRangefOES = NULL; +PFNGLFRUSTUMFOESPROC glad_glFrustumfOES = NULL; +PFNGLGETCLIPPLANEFOESPROC glad_glGetClipPlanefOES = NULL; +PFNGLORTHOFOESPROC glad_glOrthofOES = NULL; +PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR = NULL; +PFNGLHINTPGIPROC glad_glHintPGI = NULL; +PFNGLDETAILTEXFUNCSGISPROC glad_glDetailTexFuncSGIS = NULL; +PFNGLGETDETAILTEXFUNCSGISPROC glad_glGetDetailTexFuncSGIS = NULL; +PFNGLFOGFUNCSGISPROC glad_glFogFuncSGIS = NULL; +PFNGLGETFOGFUNCSGISPROC glad_glGetFogFuncSGIS = NULL; +PFNGLSAMPLEMASKSGISPROC glad_glSampleMaskSGIS = NULL; +PFNGLSAMPLEPATTERNSGISPROC glad_glSamplePatternSGIS = NULL; +PFNGLPIXELTEXGENPARAMETERISGISPROC glad_glPixelTexGenParameteriSGIS = NULL; +PFNGLPIXELTEXGENPARAMETERIVSGISPROC glad_glPixelTexGenParameterivSGIS = NULL; +PFNGLPIXELTEXGENPARAMETERFSGISPROC glad_glPixelTexGenParameterfSGIS = NULL; +PFNGLPIXELTEXGENPARAMETERFVSGISPROC glad_glPixelTexGenParameterfvSGIS = NULL; +PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC glad_glGetPixelTexGenParameterivSGIS = NULL; +PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC glad_glGetPixelTexGenParameterfvSGIS = NULL; +PFNGLPOINTPARAMETERFSGISPROC glad_glPointParameterfSGIS = NULL; +PFNGLPOINTPARAMETERFVSGISPROC glad_glPointParameterfvSGIS = NULL; +PFNGLSHARPENTEXFUNCSGISPROC glad_glSharpenTexFuncSGIS = NULL; +PFNGLGETSHARPENTEXFUNCSGISPROC glad_glGetSharpenTexFuncSGIS = NULL; +PFNGLTEXIMAGE4DSGISPROC glad_glTexImage4DSGIS = NULL; +PFNGLTEXSUBIMAGE4DSGISPROC glad_glTexSubImage4DSGIS = NULL; +PFNGLTEXTURECOLORMASKSGISPROC glad_glTextureColorMaskSGIS = NULL; +PFNGLGETTEXFILTERFUNCSGISPROC glad_glGetTexFilterFuncSGIS = NULL; +PFNGLTEXFILTERFUNCSGISPROC glad_glTexFilterFuncSGIS = NULL; +PFNGLASYNCMARKERSGIXPROC glad_glAsyncMarkerSGIX = NULL; +PFNGLFINISHASYNCSGIXPROC glad_glFinishAsyncSGIX = NULL; +PFNGLPOLLASYNCSGIXPROC glad_glPollAsyncSGIX = NULL; +PFNGLGENASYNCMARKERSSGIXPROC glad_glGenAsyncMarkersSGIX = NULL; +PFNGLDELETEASYNCMARKERSSGIXPROC glad_glDeleteAsyncMarkersSGIX = NULL; +PFNGLISASYNCMARKERSGIXPROC glad_glIsAsyncMarkerSGIX = NULL; +PFNGLFLUSHRASTERSGIXPROC glad_glFlushRasterSGIX = NULL; +PFNGLFRAGMENTCOLORMATERIALSGIXPROC glad_glFragmentColorMaterialSGIX = NULL; +PFNGLFRAGMENTLIGHTFSGIXPROC glad_glFragmentLightfSGIX = NULL; +PFNGLFRAGMENTLIGHTFVSGIXPROC glad_glFragmentLightfvSGIX = NULL; +PFNGLFRAGMENTLIGHTISGIXPROC glad_glFragmentLightiSGIX = NULL; +PFNGLFRAGMENTLIGHTIVSGIXPROC glad_glFragmentLightivSGIX = NULL; +PFNGLFRAGMENTLIGHTMODELFSGIXPROC glad_glFragmentLightModelfSGIX = NULL; +PFNGLFRAGMENTLIGHTMODELFVSGIXPROC glad_glFragmentLightModelfvSGIX = NULL; +PFNGLFRAGMENTLIGHTMODELISGIXPROC glad_glFragmentLightModeliSGIX = NULL; +PFNGLFRAGMENTLIGHTMODELIVSGIXPROC glad_glFragmentLightModelivSGIX = NULL; +PFNGLFRAGMENTMATERIALFSGIXPROC glad_glFragmentMaterialfSGIX = NULL; +PFNGLFRAGMENTMATERIALFVSGIXPROC glad_glFragmentMaterialfvSGIX = NULL; +PFNGLFRAGMENTMATERIALISGIXPROC glad_glFragmentMaterialiSGIX = NULL; +PFNGLFRAGMENTMATERIALIVSGIXPROC glad_glFragmentMaterialivSGIX = NULL; +PFNGLGETFRAGMENTLIGHTFVSGIXPROC glad_glGetFragmentLightfvSGIX = NULL; +PFNGLGETFRAGMENTLIGHTIVSGIXPROC glad_glGetFragmentLightivSGIX = NULL; +PFNGLGETFRAGMENTMATERIALFVSGIXPROC glad_glGetFragmentMaterialfvSGIX = NULL; +PFNGLGETFRAGMENTMATERIALIVSGIXPROC glad_glGetFragmentMaterialivSGIX = NULL; +PFNGLLIGHTENVISGIXPROC glad_glLightEnviSGIX = NULL; +PFNGLFRAMEZOOMSGIXPROC glad_glFrameZoomSGIX = NULL; +PFNGLIGLOOINTERFACESGIXPROC glad_glIglooInterfaceSGIX = NULL; +PFNGLGETINSTRUMENTSSGIXPROC glad_glGetInstrumentsSGIX = NULL; +PFNGLINSTRUMENTSBUFFERSGIXPROC glad_glInstrumentsBufferSGIX = NULL; +PFNGLPOLLINSTRUMENTSSGIXPROC glad_glPollInstrumentsSGIX = NULL; +PFNGLREADINSTRUMENTSSGIXPROC glad_glReadInstrumentsSGIX = NULL; +PFNGLSTARTINSTRUMENTSSGIXPROC glad_glStartInstrumentsSGIX = NULL; +PFNGLSTOPINSTRUMENTSSGIXPROC glad_glStopInstrumentsSGIX = NULL; +PFNGLGETLISTPARAMETERFVSGIXPROC glad_glGetListParameterfvSGIX = NULL; +PFNGLGETLISTPARAMETERIVSGIXPROC glad_glGetListParameterivSGIX = NULL; +PFNGLLISTPARAMETERFSGIXPROC glad_glListParameterfSGIX = NULL; +PFNGLLISTPARAMETERFVSGIXPROC glad_glListParameterfvSGIX = NULL; +PFNGLLISTPARAMETERISGIXPROC glad_glListParameteriSGIX = NULL; +PFNGLLISTPARAMETERIVSGIXPROC glad_glListParameterivSGIX = NULL; +PFNGLPIXELTEXGENSGIXPROC glad_glPixelTexGenSGIX = NULL; +PFNGLDEFORMATIONMAP3DSGIXPROC glad_glDeformationMap3dSGIX = NULL; +PFNGLDEFORMATIONMAP3FSGIXPROC glad_glDeformationMap3fSGIX = NULL; +PFNGLDEFORMSGIXPROC glad_glDeformSGIX = NULL; +PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC glad_glLoadIdentityDeformationMapSGIX = NULL; +PFNGLREFERENCEPLANESGIXPROC glad_glReferencePlaneSGIX = NULL; +PFNGLSPRITEPARAMETERFSGIXPROC glad_glSpriteParameterfSGIX = NULL; +PFNGLSPRITEPARAMETERFVSGIXPROC glad_glSpriteParameterfvSGIX = NULL; +PFNGLSPRITEPARAMETERISGIXPROC glad_glSpriteParameteriSGIX = NULL; +PFNGLSPRITEPARAMETERIVSGIXPROC glad_glSpriteParameterivSGIX = NULL; +PFNGLTAGSAMPLEBUFFERSGIXPROC glad_glTagSampleBufferSGIX = NULL; +PFNGLCOLORTABLESGIPROC glad_glColorTableSGI = NULL; +PFNGLCOLORTABLEPARAMETERFVSGIPROC glad_glColorTableParameterfvSGI = NULL; +PFNGLCOLORTABLEPARAMETERIVSGIPROC glad_glColorTableParameterivSGI = NULL; +PFNGLCOPYCOLORTABLESGIPROC glad_glCopyColorTableSGI = NULL; +PFNGLGETCOLORTABLESGIPROC glad_glGetColorTableSGI = NULL; +PFNGLGETCOLORTABLEPARAMETERFVSGIPROC glad_glGetColorTableParameterfvSGI = NULL; +PFNGLGETCOLORTABLEPARAMETERIVSGIPROC glad_glGetColorTableParameterivSGI = NULL; +PFNGLFINISHTEXTURESUNXPROC glad_glFinishTextureSUNX = NULL; +PFNGLGLOBALALPHAFACTORBSUNPROC glad_glGlobalAlphaFactorbSUN = NULL; +PFNGLGLOBALALPHAFACTORSSUNPROC glad_glGlobalAlphaFactorsSUN = NULL; +PFNGLGLOBALALPHAFACTORISUNPROC glad_glGlobalAlphaFactoriSUN = NULL; +PFNGLGLOBALALPHAFACTORFSUNPROC glad_glGlobalAlphaFactorfSUN = NULL; +PFNGLGLOBALALPHAFACTORDSUNPROC glad_glGlobalAlphaFactordSUN = NULL; +PFNGLGLOBALALPHAFACTORUBSUNPROC glad_glGlobalAlphaFactorubSUN = NULL; +PFNGLGLOBALALPHAFACTORUSSUNPROC glad_glGlobalAlphaFactorusSUN = NULL; +PFNGLGLOBALALPHAFACTORUISUNPROC glad_glGlobalAlphaFactoruiSUN = NULL; +PFNGLDRAWMESHARRAYSSUNPROC glad_glDrawMeshArraysSUN = NULL; +PFNGLREPLACEMENTCODEUISUNPROC glad_glReplacementCodeuiSUN = NULL; +PFNGLREPLACEMENTCODEUSSUNPROC glad_glReplacementCodeusSUN = NULL; +PFNGLREPLACEMENTCODEUBSUNPROC glad_glReplacementCodeubSUN = NULL; +PFNGLREPLACEMENTCODEUIVSUNPROC glad_glReplacementCodeuivSUN = NULL; +PFNGLREPLACEMENTCODEUSVSUNPROC glad_glReplacementCodeusvSUN = NULL; +PFNGLREPLACEMENTCODEUBVSUNPROC glad_glReplacementCodeubvSUN = NULL; +PFNGLREPLACEMENTCODEPOINTERSUNPROC glad_glReplacementCodePointerSUN = NULL; +PFNGLCOLOR4UBVERTEX2FSUNPROC glad_glColor4ubVertex2fSUN = NULL; +PFNGLCOLOR4UBVERTEX2FVSUNPROC glad_glColor4ubVertex2fvSUN = NULL; +PFNGLCOLOR4UBVERTEX3FSUNPROC glad_glColor4ubVertex3fSUN = NULL; +PFNGLCOLOR4UBVERTEX3FVSUNPROC glad_glColor4ubVertex3fvSUN = NULL; +PFNGLCOLOR3FVERTEX3FSUNPROC glad_glColor3fVertex3fSUN = NULL; +PFNGLCOLOR3FVERTEX3FVSUNPROC glad_glColor3fVertex3fvSUN = NULL; +PFNGLNORMAL3FVERTEX3FSUNPROC glad_glNormal3fVertex3fSUN = NULL; +PFNGLNORMAL3FVERTEX3FVSUNPROC glad_glNormal3fVertex3fvSUN = NULL; +PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glColor4fNormal3fVertex3fSUN = NULL; +PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glColor4fNormal3fVertex3fvSUN = NULL; +PFNGLTEXCOORD2FVERTEX3FSUNPROC glad_glTexCoord2fVertex3fSUN = NULL; +PFNGLTEXCOORD2FVERTEX3FVSUNPROC glad_glTexCoord2fVertex3fvSUN = NULL; +PFNGLTEXCOORD4FVERTEX4FSUNPROC glad_glTexCoord4fVertex4fSUN = NULL; +PFNGLTEXCOORD4FVERTEX4FVSUNPROC glad_glTexCoord4fVertex4fvSUN = NULL; +PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC glad_glTexCoord2fColor4ubVertex3fSUN = NULL; +PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC glad_glTexCoord2fColor4ubVertex3fvSUN = NULL; +PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC glad_glTexCoord2fColor3fVertex3fSUN = NULL; +PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC glad_glTexCoord2fColor3fVertex3fvSUN = NULL; +PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fNormal3fVertex3fSUN = NULL; +PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fNormal3fVertex3fvSUN = NULL; +PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fSUN = NULL; +PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fvSUN = NULL; +PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fSUN = NULL; +PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fvSUN = NULL; +PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC glad_glReplacementCodeuiVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC glad_glReplacementCodeuiVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC glad_glReplacementCodeuiColor4ubVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4ubVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor3fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiNormal3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiNormal3fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = NULL; +PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = NULL; +static void load_GL_VERSION_1_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_0) return; + glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); + glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); + glad_glHint = (PFNGLHINTPROC)load("glHint"); + glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); + glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); + glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); + glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); + glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); + glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); + glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); + glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); + glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); + glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); + glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); + glad_glClear = (PFNGLCLEARPROC)load("glClear"); + glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); + glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); + glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); + glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); + glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); + glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); + glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); + glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); + glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); + glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); + glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); + glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); + glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); + glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); + glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); + glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); + glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); + glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); + glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); + glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); + glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); + glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); + glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); + glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); + glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); + glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); + glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); + glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); + glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); + glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); + glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); + glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); +} +static void load_GL_VERSION_1_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_1) return; + glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); + glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); + glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); + glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); + glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); + glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); + glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); + glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); + glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); + glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); + glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); + glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); + glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); +} +static void load_GL_VERSION_1_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_2) return; + glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); + glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); + glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); + glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); +} +static void load_GL_VERSION_1_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_3) return; + glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); + glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); + glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); + glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); + glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); + glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); + glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); + glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); + glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); +} +static void load_GL_VERSION_1_4(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_4) return; + glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); + glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); + glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); + glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); + glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); + glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); + glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); +} +static void load_GL_VERSION_1_5(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_5) return; + glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); + glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); + glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); + glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); + glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); + glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); + glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); + glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); + glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); + glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); + glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); + glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); + glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); + glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); + glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); + glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); + glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); + glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); + glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); +} +static void load_GL_VERSION_2_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_0) return; + glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); + glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); + glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); + glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); + glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); + glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); + glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); + glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); + glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); + glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); + glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); + glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); + glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); + glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); + glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); + glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); + glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); + glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); + glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); + glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); + glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); + glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); + glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); + glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); + glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); + glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); + glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); + glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); + glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); + glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); + glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); + glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); + glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); + glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); + glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); + glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); + glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); + glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); + glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); + glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); + glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); + glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); + glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); + glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); + glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); + glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); + glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); + glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); + glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); + glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); + glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); + glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); + glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); + glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); + glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); + glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); + glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); + glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); + glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); + glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); + glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); + glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); + glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); + glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); + glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); + glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); + glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); + glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); + glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); + glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); + glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); + glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); + glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); + glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); + glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); + glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); + glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); + glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); + glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); + glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); + glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); + glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); + glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); + glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); + glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); + glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); + glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); + glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); + glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); + glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); + glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); + glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); + glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); +} +static void load_GL_VERSION_2_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_1) return; + glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); + glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); + glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); + glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); + glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); + glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); +} +static void load_GL_VERSION_3_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_0) return; + glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); + glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); + glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); + glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); + glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); + glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); + glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); + glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); + glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); + glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); + glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); + glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); + glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); + glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); + glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); + glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); + glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); + glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); + glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); + glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); + glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); + glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); + glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); + glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); + glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); + glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); + glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); + glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); + glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); + glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); + glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); + glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); + glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); + glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); + glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); + glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); + glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); + glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); + glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); + glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); + glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); + glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); + glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); + glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); + glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); + glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); + glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); + glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); + glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); + glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); + glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); + glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); + glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); + glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_VERSION_3_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_1) return; + glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); + glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); + glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); + glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); +} +static void load_GL_VERSION_3_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_2) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); + glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); + glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); + glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_VERSION_3_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_3) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); + glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); + glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); + glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); + glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); + glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); + glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); + glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); + glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); + glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); + glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); + glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); + glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); + glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); + glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); +} +static void load_GL_VERSION_4_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_4_0) return; + glad_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load("glMinSampleShading"); + glad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load("glBlendEquationi"); + glad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load("glBlendEquationSeparatei"); + glad_glBlendFunci = (PFNGLBLENDFUNCIPROC)load("glBlendFunci"); + glad_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)load("glBlendFuncSeparatei"); + glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); + glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); + glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); + glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); + glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); + glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); + glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); + glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); + glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); + glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); + glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); + glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); + glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); + glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); + glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); + glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); + glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); + glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); + glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); + glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); + glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); + glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); + glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); + glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); + glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); + glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); + glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); + glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); + glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); + glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); + glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); + glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); + glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); + glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); + glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); + glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); + glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); + glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); + glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); + glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); + glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); +} +static void load_GL_VERSION_4_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_4_1) return; + glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); + glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); + glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); + glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); + glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); + glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); + glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); + glad_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)load("glUseProgramStages"); + glad_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)load("glActiveShaderProgram"); + glad_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)load("glCreateShaderProgramv"); + glad_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)load("glBindProgramPipeline"); + glad_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)load("glDeleteProgramPipelines"); + glad_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)load("glGenProgramPipelines"); + glad_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)load("glIsProgramPipeline"); + glad_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)load("glGetProgramPipelineiv"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); + glad_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)load("glProgramUniform1i"); + glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); + glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); + glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); + glad_glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)load("glProgramUniform1d"); + glad_glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)load("glProgramUniform1dv"); + glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); + glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); + glad_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); + glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); + glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); + glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); + glad_glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)load("glProgramUniform2d"); + glad_glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)load("glProgramUniform2dv"); + glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); + glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); + glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); + glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); + glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); + glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); + glad_glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)load("glProgramUniform3d"); + glad_glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)load("glProgramUniform3dv"); + glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); + glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); + glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); + glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); + glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); + glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); + glad_glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)load("glProgramUniform4d"); + glad_glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)load("glProgramUniform4dv"); + glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); + glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); + glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); + glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); + glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); + glad_glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)load("glProgramUniformMatrix2dv"); + glad_glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)load("glProgramUniformMatrix3dv"); + glad_glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)load("glProgramUniformMatrix4dv"); + glad_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)load("glProgramUniformMatrix2x3fv"); + glad_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)load("glProgramUniformMatrix3x2fv"); + glad_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)load("glProgramUniformMatrix2x4fv"); + glad_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)load("glProgramUniformMatrix4x2fv"); + glad_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)load("glProgramUniformMatrix3x4fv"); + glad_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)load("glProgramUniformMatrix4x3fv"); + glad_glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)load("glProgramUniformMatrix2x3dv"); + glad_glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)load("glProgramUniformMatrix3x2dv"); + glad_glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)load("glProgramUniformMatrix2x4dv"); + glad_glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)load("glProgramUniformMatrix4x2dv"); + glad_glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)load("glProgramUniformMatrix3x4dv"); + glad_glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)load("glProgramUniformMatrix4x3dv"); + glad_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); + glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); + glad_glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)load("glVertexAttribL1d"); + glad_glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)load("glVertexAttribL2d"); + glad_glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)load("glVertexAttribL3d"); + glad_glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)load("glVertexAttribL4d"); + glad_glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)load("glVertexAttribL1dv"); + glad_glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)load("glVertexAttribL2dv"); + glad_glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)load("glVertexAttribL3dv"); + glad_glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)load("glVertexAttribL4dv"); + glad_glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)load("glVertexAttribLPointer"); + glad_glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)load("glGetVertexAttribLdv"); + glad_glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)load("glViewportArrayv"); + glad_glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)load("glViewportIndexedf"); + glad_glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)load("glViewportIndexedfv"); + glad_glScissorArrayv = (PFNGLSCISSORARRAYVPROC)load("glScissorArrayv"); + glad_glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)load("glScissorIndexed"); + glad_glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)load("glScissorIndexedv"); + glad_glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)load("glDepthRangeArrayv"); + glad_glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)load("glDepthRangeIndexed"); + glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); + glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); +} +static void load_GL_3DFX_tbuffer(GLADloadproc load) { + if(!GLAD_GL_3DFX_tbuffer) return; + glad_glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)load("glTbufferMask3DFX"); +} +static void load_GL_AMD_debug_output(GLADloadproc load) { + if(!GLAD_GL_AMD_debug_output) return; + glad_glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)load("glDebugMessageEnableAMD"); + glad_glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)load("glDebugMessageInsertAMD"); + glad_glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)load("glDebugMessageCallbackAMD"); + glad_glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)load("glGetDebugMessageLogAMD"); +} +static void load_GL_AMD_draw_buffers_blend(GLADloadproc load) { + if(!GLAD_GL_AMD_draw_buffers_blend) return; + glad_glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)load("glBlendFuncIndexedAMD"); + glad_glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)load("glBlendFuncSeparateIndexedAMD"); + glad_glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)load("glBlendEquationIndexedAMD"); + glad_glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)load("glBlendEquationSeparateIndexedAMD"); +} +static void load_GL_AMD_framebuffer_multisample_advanced(GLADloadproc load) { + if(!GLAD_GL_AMD_framebuffer_multisample_advanced) return; + glad_glRenderbufferStorageMultisampleAdvancedAMD = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)load("glRenderbufferStorageMultisampleAdvancedAMD"); + glad_glNamedRenderbufferStorageMultisampleAdvancedAMD = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)load("glNamedRenderbufferStorageMultisampleAdvancedAMD"); +} +static void load_GL_AMD_framebuffer_sample_positions(GLADloadproc load) { + if(!GLAD_GL_AMD_framebuffer_sample_positions) return; + glad_glFramebufferSamplePositionsfvAMD = (PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)load("glFramebufferSamplePositionsfvAMD"); + glad_glNamedFramebufferSamplePositionsfvAMD = (PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)load("glNamedFramebufferSamplePositionsfvAMD"); + glad_glGetFramebufferParameterfvAMD = (PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)load("glGetFramebufferParameterfvAMD"); + glad_glGetNamedFramebufferParameterfvAMD = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)load("glGetNamedFramebufferParameterfvAMD"); +} +static void load_GL_AMD_gpu_shader_int64(GLADloadproc load) { + if(!GLAD_GL_AMD_gpu_shader_int64) return; + glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); + glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); + glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); + glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); + glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); + glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); + glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); + glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); + glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); + glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); + glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); + glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); + glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); + glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); + glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); + glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); + glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); + glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); + glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); + glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); + glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); + glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); + glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); + glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); + glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); + glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); + glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); + glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); + glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); + glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); + glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); + glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); + glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); + glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); +} +static void load_GL_AMD_interleaved_elements(GLADloadproc load) { + if(!GLAD_GL_AMD_interleaved_elements) return; + glad_glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)load("glVertexAttribParameteriAMD"); +} +static void load_GL_AMD_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_AMD_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)load("glMultiDrawArraysIndirectAMD"); + glad_glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)load("glMultiDrawElementsIndirectAMD"); +} +static void load_GL_AMD_name_gen_delete(GLADloadproc load) { + if(!GLAD_GL_AMD_name_gen_delete) return; + glad_glGenNamesAMD = (PFNGLGENNAMESAMDPROC)load("glGenNamesAMD"); + glad_glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)load("glDeleteNamesAMD"); + glad_glIsNameAMD = (PFNGLISNAMEAMDPROC)load("glIsNameAMD"); +} +static void load_GL_AMD_occlusion_query_event(GLADloadproc load) { + if(!GLAD_GL_AMD_occlusion_query_event) return; + glad_glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)load("glQueryObjectParameteruiAMD"); +} +static void load_GL_AMD_performance_monitor(GLADloadproc load) { + if(!GLAD_GL_AMD_performance_monitor) return; + glad_glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)load("glGetPerfMonitorGroupsAMD"); + glad_glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)load("glGetPerfMonitorCountersAMD"); + glad_glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)load("glGetPerfMonitorGroupStringAMD"); + glad_glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)load("glGetPerfMonitorCounterStringAMD"); + glad_glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)load("glGetPerfMonitorCounterInfoAMD"); + glad_glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)load("glGenPerfMonitorsAMD"); + glad_glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)load("glDeletePerfMonitorsAMD"); + glad_glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)load("glSelectPerfMonitorCountersAMD"); + glad_glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)load("glBeginPerfMonitorAMD"); + glad_glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)load("glEndPerfMonitorAMD"); + glad_glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)load("glGetPerfMonitorCounterDataAMD"); +} +static void load_GL_AMD_sample_positions(GLADloadproc load) { + if(!GLAD_GL_AMD_sample_positions) return; + glad_glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)load("glSetMultisamplefvAMD"); +} +static void load_GL_AMD_sparse_texture(GLADloadproc load) { + if(!GLAD_GL_AMD_sparse_texture) return; + glad_glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)load("glTexStorageSparseAMD"); + glad_glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)load("glTextureStorageSparseAMD"); +} +static void load_GL_AMD_stencil_operation_extended(GLADloadproc load) { + if(!GLAD_GL_AMD_stencil_operation_extended) return; + glad_glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)load("glStencilOpValueAMD"); +} +static void load_GL_AMD_vertex_shader_tessellator(GLADloadproc load) { + if(!GLAD_GL_AMD_vertex_shader_tessellator) return; + glad_glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)load("glTessellationFactorAMD"); + glad_glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)load("glTessellationModeAMD"); +} +static void load_GL_APPLE_element_array(GLADloadproc load) { + if(!GLAD_GL_APPLE_element_array) return; + glad_glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)load("glElementPointerAPPLE"); + glad_glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)load("glDrawElementArrayAPPLE"); + glad_glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)load("glDrawRangeElementArrayAPPLE"); + glad_glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)load("glMultiDrawElementArrayAPPLE"); + glad_glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)load("glMultiDrawRangeElementArrayAPPLE"); +} +static void load_GL_APPLE_fence(GLADloadproc load) { + if(!GLAD_GL_APPLE_fence) return; + glad_glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)load("glGenFencesAPPLE"); + glad_glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)load("glDeleteFencesAPPLE"); + glad_glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)load("glSetFenceAPPLE"); + glad_glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)load("glIsFenceAPPLE"); + glad_glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)load("glTestFenceAPPLE"); + glad_glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)load("glFinishFenceAPPLE"); + glad_glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)load("glTestObjectAPPLE"); + glad_glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)load("glFinishObjectAPPLE"); +} +static void load_GL_APPLE_flush_buffer_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_flush_buffer_range) return; + glad_glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)load("glBufferParameteriAPPLE"); + glad_glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)load("glFlushMappedBufferRangeAPPLE"); +} +static void load_GL_APPLE_object_purgeable(GLADloadproc load) { + if(!GLAD_GL_APPLE_object_purgeable) return; + glad_glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)load("glObjectPurgeableAPPLE"); + glad_glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)load("glObjectUnpurgeableAPPLE"); + glad_glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)load("glGetObjectParameterivAPPLE"); +} +static void load_GL_APPLE_texture_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_texture_range) return; + glad_glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)load("glTextureRangeAPPLE"); + glad_glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)load("glGetTexParameterPointervAPPLE"); +} +static void load_GL_APPLE_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_array_object) return; + glad_glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)load("glBindVertexArrayAPPLE"); + glad_glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)load("glDeleteVertexArraysAPPLE"); + glad_glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)load("glGenVertexArraysAPPLE"); + glad_glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)load("glIsVertexArrayAPPLE"); +} +static void load_GL_APPLE_vertex_array_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_array_range) return; + glad_glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)load("glVertexArrayRangeAPPLE"); + glad_glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)load("glFlushVertexArrayRangeAPPLE"); + glad_glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)load("glVertexArrayParameteriAPPLE"); +} +static void load_GL_APPLE_vertex_program_evaluators(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_program_evaluators) return; + glad_glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)load("glEnableVertexAttribAPPLE"); + glad_glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)load("glDisableVertexAttribAPPLE"); + glad_glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)load("glIsVertexAttribEnabledAPPLE"); + glad_glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)load("glMapVertexAttrib1dAPPLE"); + glad_glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)load("glMapVertexAttrib1fAPPLE"); + glad_glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)load("glMapVertexAttrib2dAPPLE"); + glad_glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)load("glMapVertexAttrib2fAPPLE"); +} +static void load_GL_ARB_ES2_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES2_compatibility) return; + glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); + glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); + glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); + glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); + glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); +} +static void load_GL_ARB_ES3_1_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES3_1_compatibility) return; + glad_glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)load("glMemoryBarrierByRegion"); +} +static void load_GL_ARB_ES3_2_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES3_2_compatibility) return; + glad_glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)load("glPrimitiveBoundingBoxARB"); +} +static void load_GL_ARB_base_instance(GLADloadproc load) { + if(!GLAD_GL_ARB_base_instance) return; + glad_glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)load("glDrawArraysInstancedBaseInstance"); + glad_glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)load("glDrawElementsInstancedBaseInstance"); + glad_glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)load("glDrawElementsInstancedBaseVertexBaseInstance"); +} +static void load_GL_ARB_bindless_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_bindless_texture) return; + glad_glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)load("glGetTextureHandleARB"); + glad_glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)load("glGetTextureSamplerHandleARB"); + glad_glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)load("glMakeTextureHandleResidentARB"); + glad_glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)load("glMakeTextureHandleNonResidentARB"); + glad_glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)load("glGetImageHandleARB"); + glad_glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)load("glMakeImageHandleResidentARB"); + glad_glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)load("glMakeImageHandleNonResidentARB"); + glad_glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)load("glUniformHandleui64ARB"); + glad_glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)load("glUniformHandleui64vARB"); + glad_glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)load("glProgramUniformHandleui64ARB"); + glad_glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)load("glProgramUniformHandleui64vARB"); + glad_glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)load("glIsTextureHandleResidentARB"); + glad_glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)load("glIsImageHandleResidentARB"); + glad_glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)load("glVertexAttribL1ui64ARB"); + glad_glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)load("glVertexAttribL1ui64vARB"); + glad_glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)load("glGetVertexAttribLui64vARB"); +} +static void load_GL_ARB_blend_func_extended(GLADloadproc load) { + if(!GLAD_GL_ARB_blend_func_extended) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); +} +static void load_GL_ARB_buffer_storage(GLADloadproc load) { + if(!GLAD_GL_ARB_buffer_storage) return; + glad_glBufferStorage = (PFNGLBUFFERSTORAGEPROC)load("glBufferStorage"); +} +static void load_GL_ARB_cl_event(GLADloadproc load) { + if(!GLAD_GL_ARB_cl_event) return; + glad_glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)load("glCreateSyncFromCLeventARB"); +} +static void load_GL_ARB_clear_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_clear_buffer_object) return; + glad_glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)load("glClearBufferData"); + glad_glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)load("glClearBufferSubData"); +} +static void load_GL_ARB_clear_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_clear_texture) return; + glad_glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)load("glClearTexImage"); + glad_glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)load("glClearTexSubImage"); +} +static void load_GL_ARB_clip_control(GLADloadproc load) { + if(!GLAD_GL_ARB_clip_control) return; + glad_glClipControl = (PFNGLCLIPCONTROLPROC)load("glClipControl"); +} +static void load_GL_ARB_color_buffer_float(GLADloadproc load) { + if(!GLAD_GL_ARB_color_buffer_float) return; + glad_glClampColorARB = (PFNGLCLAMPCOLORARBPROC)load("glClampColorARB"); +} +static void load_GL_ARB_compute_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_compute_shader) return; + glad_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)load("glDispatchCompute"); + glad_glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)load("glDispatchComputeIndirect"); +} +static void load_GL_ARB_compute_variable_group_size(GLADloadproc load) { + if(!GLAD_GL_ARB_compute_variable_group_size) return; + glad_glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)load("glDispatchComputeGroupSizeARB"); +} +static void load_GL_ARB_copy_buffer(GLADloadproc load) { + if(!GLAD_GL_ARB_copy_buffer) return; + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); +} +static void load_GL_ARB_copy_image(GLADloadproc load) { + if(!GLAD_GL_ARB_copy_image) return; + glad_glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)load("glCopyImageSubData"); +} +static void load_GL_ARB_debug_output(GLADloadproc load) { + if(!GLAD_GL_ARB_debug_output) return; + glad_glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)load("glDebugMessageControlARB"); + glad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)load("glDebugMessageInsertARB"); + glad_glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)load("glDebugMessageCallbackARB"); + glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)load("glGetDebugMessageLogARB"); +} +static void load_GL_ARB_direct_state_access(GLADloadproc load) { + if(!GLAD_GL_ARB_direct_state_access) return; + glad_glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)load("glCreateTransformFeedbacks"); + glad_glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)load("glTransformFeedbackBufferBase"); + glad_glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)load("glTransformFeedbackBufferRange"); + glad_glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)load("glGetTransformFeedbackiv"); + glad_glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)load("glGetTransformFeedbacki_v"); + glad_glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)load("glGetTransformFeedbacki64_v"); + glad_glCreateBuffers = (PFNGLCREATEBUFFERSPROC)load("glCreateBuffers"); + glad_glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)load("glNamedBufferStorage"); + glad_glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)load("glNamedBufferData"); + glad_glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)load("glNamedBufferSubData"); + glad_glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)load("glCopyNamedBufferSubData"); + glad_glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)load("glClearNamedBufferData"); + glad_glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)load("glClearNamedBufferSubData"); + glad_glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)load("glMapNamedBuffer"); + glad_glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)load("glMapNamedBufferRange"); + glad_glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)load("glUnmapNamedBuffer"); + glad_glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)load("glFlushMappedNamedBufferRange"); + glad_glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)load("glGetNamedBufferParameteriv"); + glad_glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)load("glGetNamedBufferParameteri64v"); + glad_glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)load("glGetNamedBufferPointerv"); + glad_glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)load("glGetNamedBufferSubData"); + glad_glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)load("glCreateFramebuffers"); + glad_glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)load("glNamedFramebufferRenderbuffer"); + glad_glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)load("glNamedFramebufferParameteri"); + glad_glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)load("glNamedFramebufferTexture"); + glad_glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)load("glNamedFramebufferTextureLayer"); + glad_glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)load("glNamedFramebufferDrawBuffer"); + glad_glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)load("glNamedFramebufferDrawBuffers"); + glad_glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)load("glNamedFramebufferReadBuffer"); + glad_glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)load("glInvalidateNamedFramebufferData"); + glad_glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)load("glInvalidateNamedFramebufferSubData"); + glad_glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)load("glClearNamedFramebufferiv"); + glad_glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)load("glClearNamedFramebufferuiv"); + glad_glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)load("glClearNamedFramebufferfv"); + glad_glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)load("glClearNamedFramebufferfi"); + glad_glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)load("glBlitNamedFramebuffer"); + glad_glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)load("glCheckNamedFramebufferStatus"); + glad_glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)load("glGetNamedFramebufferParameteriv"); + glad_glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetNamedFramebufferAttachmentParameteriv"); + glad_glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)load("glCreateRenderbuffers"); + glad_glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)load("glNamedRenderbufferStorage"); + glad_glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glNamedRenderbufferStorageMultisample"); + glad_glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)load("glGetNamedRenderbufferParameteriv"); + glad_glCreateTextures = (PFNGLCREATETEXTURESPROC)load("glCreateTextures"); + glad_glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)load("glTextureBuffer"); + glad_glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)load("glTextureBufferRange"); + glad_glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)load("glTextureStorage1D"); + glad_glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)load("glTextureStorage2D"); + glad_glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)load("glTextureStorage3D"); + glad_glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)load("glTextureStorage2DMultisample"); + glad_glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)load("glTextureStorage3DMultisample"); + glad_glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)load("glTextureSubImage1D"); + glad_glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)load("glTextureSubImage2D"); + glad_glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)load("glTextureSubImage3D"); + glad_glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)load("glCompressedTextureSubImage1D"); + glad_glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)load("glCompressedTextureSubImage2D"); + glad_glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)load("glCompressedTextureSubImage3D"); + glad_glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)load("glCopyTextureSubImage1D"); + glad_glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)load("glCopyTextureSubImage2D"); + glad_glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)load("glCopyTextureSubImage3D"); + glad_glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)load("glTextureParameterf"); + glad_glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)load("glTextureParameterfv"); + glad_glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)load("glTextureParameteri"); + glad_glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)load("glTextureParameterIiv"); + glad_glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)load("glTextureParameterIuiv"); + glad_glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)load("glTextureParameteriv"); + glad_glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)load("glGenerateTextureMipmap"); + glad_glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)load("glBindTextureUnit"); + glad_glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)load("glGetTextureImage"); + glad_glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)load("glGetCompressedTextureImage"); + glad_glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)load("glGetTextureLevelParameterfv"); + glad_glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)load("glGetTextureLevelParameteriv"); + glad_glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)load("glGetTextureParameterfv"); + glad_glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)load("glGetTextureParameterIiv"); + glad_glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)load("glGetTextureParameterIuiv"); + glad_glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)load("glGetTextureParameteriv"); + glad_glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)load("glCreateVertexArrays"); + glad_glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)load("glDisableVertexArrayAttrib"); + glad_glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)load("glEnableVertexArrayAttrib"); + glad_glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)load("glVertexArrayElementBuffer"); + glad_glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)load("glVertexArrayVertexBuffer"); + glad_glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)load("glVertexArrayVertexBuffers"); + glad_glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)load("glVertexArrayAttribBinding"); + glad_glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)load("glVertexArrayAttribFormat"); + glad_glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)load("glVertexArrayAttribIFormat"); + glad_glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)load("glVertexArrayAttribLFormat"); + glad_glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)load("glVertexArrayBindingDivisor"); + glad_glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)load("glGetVertexArrayiv"); + glad_glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)load("glGetVertexArrayIndexediv"); + glad_glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)load("glGetVertexArrayIndexed64iv"); + glad_glCreateSamplers = (PFNGLCREATESAMPLERSPROC)load("glCreateSamplers"); + glad_glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)load("glCreateProgramPipelines"); + glad_glCreateQueries = (PFNGLCREATEQUERIESPROC)load("glCreateQueries"); + glad_glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)load("glGetQueryBufferObjecti64v"); + glad_glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)load("glGetQueryBufferObjectiv"); + glad_glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)load("glGetQueryBufferObjectui64v"); + glad_glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)load("glGetQueryBufferObjectuiv"); +} +static void load_GL_ARB_draw_buffers(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_buffers) return; + glad_glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)load("glDrawBuffersARB"); +} +static void load_GL_ARB_draw_buffers_blend(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_buffers_blend) return; + glad_glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)load("glBlendEquationiARB"); + glad_glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)load("glBlendEquationSeparateiARB"); + glad_glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)load("glBlendFunciARB"); + glad_glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)load("glBlendFuncSeparateiARB"); +} +static void load_GL_ARB_draw_elements_base_vertex(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_elements_base_vertex) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); +} +static void load_GL_ARB_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_indirect) return; + glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); + glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); +} +static void load_GL_ARB_draw_instanced(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_instanced) return; + glad_glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)load("glDrawArraysInstancedARB"); + glad_glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)load("glDrawElementsInstancedARB"); +} +static void load_GL_ARB_fragment_program(GLADloadproc load) { + if(!GLAD_GL_ARB_fragment_program) return; + glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); + glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); + glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); + glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); + glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); + glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); + glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); + glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); + glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); + glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); + glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); + glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); + glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); + glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); + glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); + glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); + glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); + glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); + glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); +} +static void load_GL_ARB_framebuffer_no_attachments(GLADloadproc load) { + if(!GLAD_GL_ARB_framebuffer_no_attachments) return; + glad_glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)load("glFramebufferParameteri"); + glad_glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)load("glGetFramebufferParameteriv"); +} +static void load_GL_ARB_framebuffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_framebuffer_object) return; + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); +} +static void load_GL_ARB_geometry_shader4(GLADloadproc load) { + if(!GLAD_GL_ARB_geometry_shader4) return; + glad_glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)load("glProgramParameteriARB"); + glad_glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)load("glFramebufferTextureARB"); + glad_glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)load("glFramebufferTextureLayerARB"); + glad_glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)load("glFramebufferTextureFaceARB"); +} +static void load_GL_ARB_get_program_binary(GLADloadproc load) { + if(!GLAD_GL_ARB_get_program_binary) return; + glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); + glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); +} +static void load_GL_ARB_get_texture_sub_image(GLADloadproc load) { + if(!GLAD_GL_ARB_get_texture_sub_image) return; + glad_glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)load("glGetTextureSubImage"); + glad_glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)load("glGetCompressedTextureSubImage"); +} +static void load_GL_ARB_gl_spirv(GLADloadproc load) { + if(!GLAD_GL_ARB_gl_spirv) return; + glad_glSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC)load("glSpecializeShaderARB"); +} +static void load_GL_ARB_gpu_shader_fp64(GLADloadproc load) { + if(!GLAD_GL_ARB_gpu_shader_fp64) return; + glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); + glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); + glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); + glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); + glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); + glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); + glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); + glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); + glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); + glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); + glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); + glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); + glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); + glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); + glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); + glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); + glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); + glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); +} +static void load_GL_ARB_gpu_shader_int64(GLADloadproc load) { + if(!GLAD_GL_ARB_gpu_shader_int64) return; + glad_glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)load("glUniform1i64ARB"); + glad_glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)load("glUniform2i64ARB"); + glad_glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)load("glUniform3i64ARB"); + glad_glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)load("glUniform4i64ARB"); + glad_glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)load("glUniform1i64vARB"); + glad_glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)load("glUniform2i64vARB"); + glad_glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)load("glUniform3i64vARB"); + glad_glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)load("glUniform4i64vARB"); + glad_glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)load("glUniform1ui64ARB"); + glad_glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)load("glUniform2ui64ARB"); + glad_glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)load("glUniform3ui64ARB"); + glad_glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)load("glUniform4ui64ARB"); + glad_glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)load("glUniform1ui64vARB"); + glad_glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)load("glUniform2ui64vARB"); + glad_glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)load("glUniform3ui64vARB"); + glad_glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)load("glUniform4ui64vARB"); + glad_glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)load("glGetUniformi64vARB"); + glad_glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)load("glGetUniformui64vARB"); + glad_glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)load("glGetnUniformi64vARB"); + glad_glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)load("glGetnUniformui64vARB"); + glad_glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)load("glProgramUniform1i64ARB"); + glad_glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)load("glProgramUniform2i64ARB"); + glad_glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)load("glProgramUniform3i64ARB"); + glad_glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)load("glProgramUniform4i64ARB"); + glad_glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)load("glProgramUniform1i64vARB"); + glad_glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)load("glProgramUniform2i64vARB"); + glad_glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)load("glProgramUniform3i64vARB"); + glad_glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)load("glProgramUniform4i64vARB"); + glad_glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)load("glProgramUniform1ui64ARB"); + glad_glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)load("glProgramUniform2ui64ARB"); + glad_glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)load("glProgramUniform3ui64ARB"); + glad_glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)load("glProgramUniform4ui64ARB"); + glad_glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)load("glProgramUniform1ui64vARB"); + glad_glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)load("glProgramUniform2ui64vARB"); + glad_glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)load("glProgramUniform3ui64vARB"); + glad_glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)load("glProgramUniform4ui64vARB"); +} +static void load_GL_ARB_imaging(GLADloadproc load) { + if(!GLAD_GL_ARB_imaging) return; + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); + glad_glColorTable = (PFNGLCOLORTABLEPROC)load("glColorTable"); + glad_glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)load("glColorTableParameterfv"); + glad_glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)load("glColorTableParameteriv"); + glad_glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)load("glCopyColorTable"); + glad_glGetColorTable = (PFNGLGETCOLORTABLEPROC)load("glGetColorTable"); + glad_glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)load("glGetColorTableParameterfv"); + glad_glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)load("glGetColorTableParameteriv"); + glad_glColorSubTable = (PFNGLCOLORSUBTABLEPROC)load("glColorSubTable"); + glad_glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)load("glCopyColorSubTable"); + glad_glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)load("glConvolutionFilter1D"); + glad_glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)load("glConvolutionFilter2D"); + glad_glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)load("glConvolutionParameterf"); + glad_glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)load("glConvolutionParameterfv"); + glad_glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)load("glConvolutionParameteri"); + glad_glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)load("glConvolutionParameteriv"); + glad_glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)load("glCopyConvolutionFilter1D"); + glad_glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)load("glCopyConvolutionFilter2D"); + glad_glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)load("glGetConvolutionFilter"); + glad_glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)load("glGetConvolutionParameterfv"); + glad_glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)load("glGetConvolutionParameteriv"); + glad_glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)load("glGetSeparableFilter"); + glad_glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)load("glSeparableFilter2D"); + glad_glGetHistogram = (PFNGLGETHISTOGRAMPROC)load("glGetHistogram"); + glad_glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)load("glGetHistogramParameterfv"); + glad_glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)load("glGetHistogramParameteriv"); + glad_glGetMinmax = (PFNGLGETMINMAXPROC)load("glGetMinmax"); + glad_glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)load("glGetMinmaxParameterfv"); + glad_glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)load("glGetMinmaxParameteriv"); + glad_glHistogram = (PFNGLHISTOGRAMPROC)load("glHistogram"); + glad_glMinmax = (PFNGLMINMAXPROC)load("glMinmax"); + glad_glResetHistogram = (PFNGLRESETHISTOGRAMPROC)load("glResetHistogram"); + glad_glResetMinmax = (PFNGLRESETMINMAXPROC)load("glResetMinmax"); +} +static void load_GL_ARB_indirect_parameters(GLADloadproc load) { + if(!GLAD_GL_ARB_indirect_parameters) return; + glad_glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)load("glMultiDrawArraysIndirectCountARB"); + glad_glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)load("glMultiDrawElementsIndirectCountARB"); +} +static void load_GL_ARB_instanced_arrays(GLADloadproc load) { + if(!GLAD_GL_ARB_instanced_arrays) return; + glad_glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)load("glVertexAttribDivisorARB"); +} +static void load_GL_ARB_internalformat_query(GLADloadproc load) { + if(!GLAD_GL_ARB_internalformat_query) return; + glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ"); +} +static void load_GL_ARB_internalformat_query2(GLADloadproc load) { + if(!GLAD_GL_ARB_internalformat_query2) return; + glad_glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)load("glGetInternalformati64v"); +} +static void load_GL_ARB_invalidate_subdata(GLADloadproc load) { + if(!GLAD_GL_ARB_invalidate_subdata) return; + glad_glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)load("glInvalidateTexSubImage"); + glad_glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)load("glInvalidateTexImage"); + glad_glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)load("glInvalidateBufferSubData"); + glad_glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)load("glInvalidateBufferData"); + glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer"); + glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer"); +} +static void load_GL_ARB_map_buffer_range(GLADloadproc load) { + if(!GLAD_GL_ARB_map_buffer_range) return; + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); +} +static void load_GL_ARB_matrix_palette(GLADloadproc load) { + if(!GLAD_GL_ARB_matrix_palette) return; + glad_glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)load("glCurrentPaletteMatrixARB"); + glad_glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)load("glMatrixIndexubvARB"); + glad_glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)load("glMatrixIndexusvARB"); + glad_glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)load("glMatrixIndexuivARB"); + glad_glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)load("glMatrixIndexPointerARB"); +} +static void load_GL_ARB_multi_bind(GLADloadproc load) { + if(!GLAD_GL_ARB_multi_bind) return; + glad_glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)load("glBindBuffersBase"); + glad_glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)load("glBindBuffersRange"); + glad_glBindTextures = (PFNGLBINDTEXTURESPROC)load("glBindTextures"); + glad_glBindSamplers = (PFNGLBINDSAMPLERSPROC)load("glBindSamplers"); + glad_glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)load("glBindImageTextures"); + glad_glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)load("glBindVertexBuffers"); +} +static void load_GL_ARB_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_ARB_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)load("glMultiDrawArraysIndirect"); + glad_glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)load("glMultiDrawElementsIndirect"); +} +static void load_GL_ARB_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_multisample) return; + glad_glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)load("glSampleCoverageARB"); +} +static void load_GL_ARB_multitexture(GLADloadproc load) { + if(!GLAD_GL_ARB_multitexture) return; + glad_glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)load("glActiveTextureARB"); + glad_glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)load("glClientActiveTextureARB"); + glad_glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)load("glMultiTexCoord1dARB"); + glad_glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)load("glMultiTexCoord1dvARB"); + glad_glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)load("glMultiTexCoord1fARB"); + glad_glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)load("glMultiTexCoord1fvARB"); + glad_glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)load("glMultiTexCoord1iARB"); + glad_glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)load("glMultiTexCoord1ivARB"); + glad_glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)load("glMultiTexCoord1sARB"); + glad_glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)load("glMultiTexCoord1svARB"); + glad_glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)load("glMultiTexCoord2dARB"); + glad_glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)load("glMultiTexCoord2dvARB"); + glad_glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)load("glMultiTexCoord2fARB"); + glad_glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)load("glMultiTexCoord2fvARB"); + glad_glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)load("glMultiTexCoord2iARB"); + glad_glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)load("glMultiTexCoord2ivARB"); + glad_glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)load("glMultiTexCoord2sARB"); + glad_glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)load("glMultiTexCoord2svARB"); + glad_glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)load("glMultiTexCoord3dARB"); + glad_glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)load("glMultiTexCoord3dvARB"); + glad_glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)load("glMultiTexCoord3fARB"); + glad_glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)load("glMultiTexCoord3fvARB"); + glad_glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)load("glMultiTexCoord3iARB"); + glad_glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)load("glMultiTexCoord3ivARB"); + glad_glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)load("glMultiTexCoord3sARB"); + glad_glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)load("glMultiTexCoord3svARB"); + glad_glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)load("glMultiTexCoord4dARB"); + glad_glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)load("glMultiTexCoord4dvARB"); + glad_glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)load("glMultiTexCoord4fARB"); + glad_glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)load("glMultiTexCoord4fvARB"); + glad_glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)load("glMultiTexCoord4iARB"); + glad_glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)load("glMultiTexCoord4ivARB"); + glad_glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)load("glMultiTexCoord4sARB"); + glad_glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)load("glMultiTexCoord4svARB"); +} +static void load_GL_ARB_occlusion_query(GLADloadproc load) { + if(!GLAD_GL_ARB_occlusion_query) return; + glad_glGenQueriesARB = (PFNGLGENQUERIESARBPROC)load("glGenQueriesARB"); + glad_glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)load("glDeleteQueriesARB"); + glad_glIsQueryARB = (PFNGLISQUERYARBPROC)load("glIsQueryARB"); + glad_glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)load("glBeginQueryARB"); + glad_glEndQueryARB = (PFNGLENDQUERYARBPROC)load("glEndQueryARB"); + glad_glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)load("glGetQueryivARB"); + glad_glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)load("glGetQueryObjectivARB"); + glad_glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)load("glGetQueryObjectuivARB"); +} +static void load_GL_ARB_parallel_shader_compile(GLADloadproc load) { + if(!GLAD_GL_ARB_parallel_shader_compile) return; + glad_glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)load("glMaxShaderCompilerThreadsARB"); +} +static void load_GL_ARB_point_parameters(GLADloadproc load) { + if(!GLAD_GL_ARB_point_parameters) return; + glad_glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)load("glPointParameterfARB"); + glad_glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)load("glPointParameterfvARB"); +} +static void load_GL_ARB_polygon_offset_clamp(GLADloadproc load) { + if(!GLAD_GL_ARB_polygon_offset_clamp) return; + glad_glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)load("glPolygonOffsetClamp"); +} +static void load_GL_ARB_program_interface_query(GLADloadproc load) { + if(!GLAD_GL_ARB_program_interface_query) return; + glad_glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)load("glGetProgramInterfaceiv"); + glad_glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)load("glGetProgramResourceIndex"); + glad_glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)load("glGetProgramResourceName"); + glad_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)load("glGetProgramResourceiv"); + glad_glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)load("glGetProgramResourceLocation"); + glad_glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)load("glGetProgramResourceLocationIndex"); +} +static void load_GL_ARB_provoking_vertex(GLADloadproc load) { + if(!GLAD_GL_ARB_provoking_vertex) return; + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); +} +static void load_GL_ARB_robustness(GLADloadproc load) { + if(!GLAD_GL_ARB_robustness) return; + glad_glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)load("glGetGraphicsResetStatusARB"); + glad_glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)load("glGetnTexImageARB"); + glad_glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)load("glReadnPixelsARB"); + glad_glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)load("glGetnCompressedTexImageARB"); + glad_glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)load("glGetnUniformfvARB"); + glad_glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)load("glGetnUniformivARB"); + glad_glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)load("glGetnUniformuivARB"); + glad_glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)load("glGetnUniformdvARB"); + glad_glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)load("glGetnMapdvARB"); + glad_glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)load("glGetnMapfvARB"); + glad_glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)load("glGetnMapivARB"); + glad_glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)load("glGetnPixelMapfvARB"); + glad_glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)load("glGetnPixelMapuivARB"); + glad_glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)load("glGetnPixelMapusvARB"); + glad_glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)load("glGetnPolygonStippleARB"); + glad_glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)load("glGetnColorTableARB"); + glad_glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)load("glGetnConvolutionFilterARB"); + glad_glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)load("glGetnSeparableFilterARB"); + glad_glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)load("glGetnHistogramARB"); + glad_glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)load("glGetnMinmaxARB"); +} +static void load_GL_ARB_sample_locations(GLADloadproc load) { + if(!GLAD_GL_ARB_sample_locations) return; + glad_glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glFramebufferSampleLocationsfvARB"); + glad_glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glNamedFramebufferSampleLocationsfvARB"); + glad_glEvaluateDepthValuesARB = (PFNGLEVALUATEDEPTHVALUESARBPROC)load("glEvaluateDepthValuesARB"); +} +static void load_GL_ARB_sample_shading(GLADloadproc load) { + if(!GLAD_GL_ARB_sample_shading) return; + glad_glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)load("glMinSampleShadingARB"); +} +static void load_GL_ARB_sampler_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_sampler_objects) return; + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); + glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); + glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); + glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); + glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); + glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); + glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); + glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); + glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); + glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); + glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); +} +static void load_GL_ARB_separate_shader_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_separate_shader_objects) return; + glad_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)load("glUseProgramStages"); + glad_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)load("glActiveShaderProgram"); + glad_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)load("glCreateShaderProgramv"); + glad_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)load("glBindProgramPipeline"); + glad_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)load("glDeleteProgramPipelines"); + glad_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)load("glGenProgramPipelines"); + glad_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)load("glIsProgramPipeline"); + glad_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)load("glGetProgramPipelineiv"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); + glad_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)load("glProgramUniform1i"); + glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); + glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); + glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); + glad_glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)load("glProgramUniform1d"); + glad_glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)load("glProgramUniform1dv"); + glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); + glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); + glad_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); + glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); + glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); + glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); + glad_glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)load("glProgramUniform2d"); + glad_glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)load("glProgramUniform2dv"); + glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); + glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); + glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); + glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); + glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); + glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); + glad_glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)load("glProgramUniform3d"); + glad_glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)load("glProgramUniform3dv"); + glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); + glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); + glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); + glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); + glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); + glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); + glad_glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)load("glProgramUniform4d"); + glad_glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)load("glProgramUniform4dv"); + glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); + glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); + glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); + glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); + glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); + glad_glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)load("glProgramUniformMatrix2dv"); + glad_glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)load("glProgramUniformMatrix3dv"); + glad_glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)load("glProgramUniformMatrix4dv"); + glad_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)load("glProgramUniformMatrix2x3fv"); + glad_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)load("glProgramUniformMatrix3x2fv"); + glad_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)load("glProgramUniformMatrix2x4fv"); + glad_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)load("glProgramUniformMatrix4x2fv"); + glad_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)load("glProgramUniformMatrix3x4fv"); + glad_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)load("glProgramUniformMatrix4x3fv"); + glad_glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)load("glProgramUniformMatrix2x3dv"); + glad_glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)load("glProgramUniformMatrix3x2dv"); + glad_glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)load("glProgramUniformMatrix2x4dv"); + glad_glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)load("glProgramUniformMatrix4x2dv"); + glad_glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)load("glProgramUniformMatrix3x4dv"); + glad_glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)load("glProgramUniformMatrix4x3dv"); + glad_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); + glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); +} +static void load_GL_ARB_shader_atomic_counters(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_atomic_counters) return; + glad_glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)load("glGetActiveAtomicCounterBufferiv"); +} +static void load_GL_ARB_shader_image_load_store(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_image_load_store) return; + glad_glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)load("glBindImageTexture"); + glad_glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)load("glMemoryBarrier"); +} +static void load_GL_ARB_shader_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_objects) return; + glad_glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)load("glDeleteObjectARB"); + glad_glGetHandleARB = (PFNGLGETHANDLEARBPROC)load("glGetHandleARB"); + glad_glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)load("glDetachObjectARB"); + glad_glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)load("glCreateShaderObjectARB"); + glad_glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)load("glShaderSourceARB"); + glad_glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)load("glCompileShaderARB"); + glad_glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)load("glCreateProgramObjectARB"); + glad_glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)load("glAttachObjectARB"); + glad_glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)load("glLinkProgramARB"); + glad_glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)load("glUseProgramObjectARB"); + glad_glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)load("glValidateProgramARB"); + glad_glUniform1fARB = (PFNGLUNIFORM1FARBPROC)load("glUniform1fARB"); + glad_glUniform2fARB = (PFNGLUNIFORM2FARBPROC)load("glUniform2fARB"); + glad_glUniform3fARB = (PFNGLUNIFORM3FARBPROC)load("glUniform3fARB"); + glad_glUniform4fARB = (PFNGLUNIFORM4FARBPROC)load("glUniform4fARB"); + glad_glUniform1iARB = (PFNGLUNIFORM1IARBPROC)load("glUniform1iARB"); + glad_glUniform2iARB = (PFNGLUNIFORM2IARBPROC)load("glUniform2iARB"); + glad_glUniform3iARB = (PFNGLUNIFORM3IARBPROC)load("glUniform3iARB"); + glad_glUniform4iARB = (PFNGLUNIFORM4IARBPROC)load("glUniform4iARB"); + glad_glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)load("glUniform1fvARB"); + glad_glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)load("glUniform2fvARB"); + glad_glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)load("glUniform3fvARB"); + glad_glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)load("glUniform4fvARB"); + glad_glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)load("glUniform1ivARB"); + glad_glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)load("glUniform2ivARB"); + glad_glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)load("glUniform3ivARB"); + glad_glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)load("glUniform4ivARB"); + glad_glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)load("glUniformMatrix2fvARB"); + glad_glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)load("glUniformMatrix3fvARB"); + glad_glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)load("glUniformMatrix4fvARB"); + glad_glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)load("glGetObjectParameterfvARB"); + glad_glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)load("glGetObjectParameterivARB"); + glad_glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)load("glGetInfoLogARB"); + glad_glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)load("glGetAttachedObjectsARB"); + glad_glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)load("glGetUniformLocationARB"); + glad_glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)load("glGetActiveUniformARB"); + glad_glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)load("glGetUniformfvARB"); + glad_glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)load("glGetUniformivARB"); + glad_glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)load("glGetShaderSourceARB"); +} +static void load_GL_ARB_shader_storage_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_storage_buffer_object) return; + glad_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)load("glShaderStorageBlockBinding"); +} +static void load_GL_ARB_shader_subroutine(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_subroutine) return; + glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); + glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); + glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); + glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); + glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); + glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); + glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); + glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); +} +static void load_GL_ARB_shading_language_include(GLADloadproc load) { + if(!GLAD_GL_ARB_shading_language_include) return; + glad_glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)load("glNamedStringARB"); + glad_glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)load("glDeleteNamedStringARB"); + glad_glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)load("glCompileShaderIncludeARB"); + glad_glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)load("glIsNamedStringARB"); + glad_glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)load("glGetNamedStringARB"); + glad_glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)load("glGetNamedStringivARB"); +} +static void load_GL_ARB_sparse_buffer(GLADloadproc load) { + if(!GLAD_GL_ARB_sparse_buffer) return; + glad_glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)load("glBufferPageCommitmentARB"); + glad_glNamedBufferPageCommitmentEXT = (PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)load("glNamedBufferPageCommitmentEXT"); + glad_glNamedBufferPageCommitmentARB = (PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)load("glNamedBufferPageCommitmentARB"); +} +static void load_GL_ARB_sparse_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_sparse_texture) return; + glad_glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)load("glTexPageCommitmentARB"); +} +static void load_GL_ARB_sync(GLADloadproc load) { + if(!GLAD_GL_ARB_sync) return; + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); +} +static void load_GL_ARB_tessellation_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_tessellation_shader) return; + glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); + glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); +} +static void load_GL_ARB_texture_barrier(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_barrier) return; + glad_glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)load("glTextureBarrier"); +} +static void load_GL_ARB_texture_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_buffer_object) return; + glad_glTexBufferARB = (PFNGLTEXBUFFERARBPROC)load("glTexBufferARB"); +} +static void load_GL_ARB_texture_buffer_range(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_buffer_range) return; + glad_glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)load("glTexBufferRange"); +} +static void load_GL_ARB_texture_compression(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_compression) return; + glad_glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)load("glCompressedTexImage3DARB"); + glad_glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)load("glCompressedTexImage2DARB"); + glad_glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)load("glCompressedTexImage1DARB"); + glad_glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)load("glCompressedTexSubImage3DARB"); + glad_glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)load("glCompressedTexSubImage2DARB"); + glad_glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)load("glCompressedTexSubImage1DARB"); + glad_glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)load("glGetCompressedTexImageARB"); +} +static void load_GL_ARB_texture_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_multisample) return; + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_ARB_texture_storage(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_storage) return; + glad_glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)load("glTexStorage1D"); + glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D"); + glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D"); +} +static void load_GL_ARB_texture_storage_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_storage_multisample) return; + glad_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)load("glTexStorage2DMultisample"); + glad_glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)load("glTexStorage3DMultisample"); +} +static void load_GL_ARB_texture_view(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_view) return; + glad_glTextureView = (PFNGLTEXTUREVIEWPROC)load("glTextureView"); +} +static void load_GL_ARB_timer_query(GLADloadproc load) { + if(!GLAD_GL_ARB_timer_query) return; + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); +} +static void load_GL_ARB_transform_feedback2(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback2) return; + glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); + glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); + glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); + glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); + glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); + glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); + glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); +} +static void load_GL_ARB_transform_feedback3(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback3) return; + glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); + glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); + glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); + glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); +} +static void load_GL_ARB_transform_feedback_instanced(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback_instanced) return; + glad_glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)load("glDrawTransformFeedbackInstanced"); + glad_glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)load("glDrawTransformFeedbackStreamInstanced"); +} +static void load_GL_ARB_transpose_matrix(GLADloadproc load) { + if(!GLAD_GL_ARB_transpose_matrix) return; + glad_glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)load("glLoadTransposeMatrixfARB"); + glad_glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)load("glLoadTransposeMatrixdARB"); + glad_glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)load("glMultTransposeMatrixfARB"); + glad_glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)load("glMultTransposeMatrixdARB"); +} +static void load_GL_ARB_uniform_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_uniform_buffer_object) return; + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); +} +static void load_GL_ARB_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_array_object) return; + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_ARB_vertex_attrib_64bit(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_attrib_64bit) return; + glad_glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)load("glVertexAttribL1d"); + glad_glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)load("glVertexAttribL2d"); + glad_glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)load("glVertexAttribL3d"); + glad_glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)load("glVertexAttribL4d"); + glad_glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)load("glVertexAttribL1dv"); + glad_glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)load("glVertexAttribL2dv"); + glad_glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)load("glVertexAttribL3dv"); + glad_glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)load("glVertexAttribL4dv"); + glad_glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)load("glVertexAttribLPointer"); + glad_glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)load("glGetVertexAttribLdv"); +} +static void load_GL_ARB_vertex_attrib_binding(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_attrib_binding) return; + glad_glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)load("glBindVertexBuffer"); + glad_glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)load("glVertexAttribFormat"); + glad_glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)load("glVertexAttribIFormat"); + glad_glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)load("glVertexAttribLFormat"); + glad_glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)load("glVertexAttribBinding"); + glad_glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)load("glVertexBindingDivisor"); +} +static void load_GL_ARB_vertex_blend(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_blend) return; + glad_glWeightbvARB = (PFNGLWEIGHTBVARBPROC)load("glWeightbvARB"); + glad_glWeightsvARB = (PFNGLWEIGHTSVARBPROC)load("glWeightsvARB"); + glad_glWeightivARB = (PFNGLWEIGHTIVARBPROC)load("glWeightivARB"); + glad_glWeightfvARB = (PFNGLWEIGHTFVARBPROC)load("glWeightfvARB"); + glad_glWeightdvARB = (PFNGLWEIGHTDVARBPROC)load("glWeightdvARB"); + glad_glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)load("glWeightubvARB"); + glad_glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)load("glWeightusvARB"); + glad_glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)load("glWeightuivARB"); + glad_glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)load("glWeightPointerARB"); + glad_glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)load("glVertexBlendARB"); +} +static void load_GL_ARB_vertex_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_buffer_object) return; + glad_glBindBufferARB = (PFNGLBINDBUFFERARBPROC)load("glBindBufferARB"); + glad_glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)load("glDeleteBuffersARB"); + glad_glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)load("glGenBuffersARB"); + glad_glIsBufferARB = (PFNGLISBUFFERARBPROC)load("glIsBufferARB"); + glad_glBufferDataARB = (PFNGLBUFFERDATAARBPROC)load("glBufferDataARB"); + glad_glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)load("glBufferSubDataARB"); + glad_glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)load("glGetBufferSubDataARB"); + glad_glMapBufferARB = (PFNGLMAPBUFFERARBPROC)load("glMapBufferARB"); + glad_glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)load("glUnmapBufferARB"); + glad_glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)load("glGetBufferParameterivARB"); + glad_glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)load("glGetBufferPointervARB"); +} +static void load_GL_ARB_vertex_program(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_program) return; + glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); + glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); + glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); + glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); + glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); + glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); + glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); + glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); + glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); + glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); + glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); + glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); + glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); + glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); + glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); + glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); + glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); + glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); + glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); + glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); + glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); + glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); + glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); + glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); + glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); + glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); + glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); + glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); + glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); + glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); + glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); + glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); + glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); + glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); + glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); + glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); + glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); + glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); + glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); + glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); + glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); + glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); + glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); + glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); + glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); + glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); + glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); + glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); + glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); + glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); + glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); + glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); + glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); + glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); + glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); + glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); + glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); + glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); + glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); + glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); + glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); + glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); +} +static void load_GL_ARB_vertex_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_shader) return; + glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); + glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); + glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); + glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); + glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); + glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); + glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); + glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); + glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); + glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); + glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); + glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); + glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); + glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); + glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); + glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); + glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); + glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); + glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); + glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); + glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); + glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); + glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); + glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); + glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); + glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); + glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); + glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); + glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); + glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); + glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); + glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); + glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); + glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); + glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); + glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); + glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); + glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); + glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); + glad_glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)load("glBindAttribLocationARB"); + glad_glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)load("glGetActiveAttribARB"); + glad_glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)load("glGetAttribLocationARB"); + glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); + glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); + glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); + glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); +} +static void load_GL_ARB_vertex_type_2_10_10_10_rev(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_type_2_10_10_10_rev) return; + glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); + glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); + glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); +} +static void load_GL_ARB_viewport_array(GLADloadproc load) { + if(!GLAD_GL_ARB_viewport_array) return; + glad_glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)load("glViewportArrayv"); + glad_glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)load("glViewportIndexedf"); + glad_glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)load("glViewportIndexedfv"); + glad_glScissorArrayv = (PFNGLSCISSORARRAYVPROC)load("glScissorArrayv"); + glad_glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)load("glScissorIndexed"); + glad_glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)load("glScissorIndexedv"); + glad_glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)load("glDepthRangeArrayv"); + glad_glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)load("glDepthRangeIndexed"); + glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); + glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); + glad_glDepthRangeArraydvNV = (PFNGLDEPTHRANGEARRAYDVNVPROC)load("glDepthRangeArraydvNV"); + glad_glDepthRangeIndexeddNV = (PFNGLDEPTHRANGEINDEXEDDNVPROC)load("glDepthRangeIndexeddNV"); +} +static void load_GL_ARB_window_pos(GLADloadproc load) { + if(!GLAD_GL_ARB_window_pos) return; + glad_glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)load("glWindowPos2dARB"); + glad_glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)load("glWindowPos2dvARB"); + glad_glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)load("glWindowPos2fARB"); + glad_glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)load("glWindowPos2fvARB"); + glad_glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)load("glWindowPos2iARB"); + glad_glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)load("glWindowPos2ivARB"); + glad_glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)load("glWindowPos2sARB"); + glad_glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)load("glWindowPos2svARB"); + glad_glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)load("glWindowPos3dARB"); + glad_glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)load("glWindowPos3dvARB"); + glad_glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)load("glWindowPos3fARB"); + glad_glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)load("glWindowPos3fvARB"); + glad_glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)load("glWindowPos3iARB"); + glad_glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)load("glWindowPos3ivARB"); + glad_glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)load("glWindowPos3sARB"); + glad_glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)load("glWindowPos3svARB"); +} +static void load_GL_ATI_draw_buffers(GLADloadproc load) { + if(!GLAD_GL_ATI_draw_buffers) return; + glad_glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)load("glDrawBuffersATI"); +} +static void load_GL_ATI_element_array(GLADloadproc load) { + if(!GLAD_GL_ATI_element_array) return; + glad_glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)load("glElementPointerATI"); + glad_glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)load("glDrawElementArrayATI"); + glad_glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)load("glDrawRangeElementArrayATI"); +} +static void load_GL_ATI_envmap_bumpmap(GLADloadproc load) { + if(!GLAD_GL_ATI_envmap_bumpmap) return; + glad_glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)load("glTexBumpParameterivATI"); + glad_glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)load("glTexBumpParameterfvATI"); + glad_glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)load("glGetTexBumpParameterivATI"); + glad_glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)load("glGetTexBumpParameterfvATI"); +} +static void load_GL_ATI_fragment_shader(GLADloadproc load) { + if(!GLAD_GL_ATI_fragment_shader) return; + glad_glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)load("glGenFragmentShadersATI"); + glad_glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)load("glBindFragmentShaderATI"); + glad_glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)load("glDeleteFragmentShaderATI"); + glad_glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)load("glBeginFragmentShaderATI"); + glad_glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)load("glEndFragmentShaderATI"); + glad_glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)load("glPassTexCoordATI"); + glad_glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)load("glSampleMapATI"); + glad_glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)load("glColorFragmentOp1ATI"); + glad_glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)load("glColorFragmentOp2ATI"); + glad_glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)load("glColorFragmentOp3ATI"); + glad_glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)load("glAlphaFragmentOp1ATI"); + glad_glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)load("glAlphaFragmentOp2ATI"); + glad_glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)load("glAlphaFragmentOp3ATI"); + glad_glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)load("glSetFragmentShaderConstantATI"); +} +static void load_GL_ATI_map_object_buffer(GLADloadproc load) { + if(!GLAD_GL_ATI_map_object_buffer) return; + glad_glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)load("glMapObjectBufferATI"); + glad_glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)load("glUnmapObjectBufferATI"); +} +static void load_GL_ATI_pn_triangles(GLADloadproc load) { + if(!GLAD_GL_ATI_pn_triangles) return; + glad_glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)load("glPNTrianglesiATI"); + glad_glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)load("glPNTrianglesfATI"); +} +static void load_GL_ATI_separate_stencil(GLADloadproc load) { + if(!GLAD_GL_ATI_separate_stencil) return; + glad_glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)load("glStencilOpSeparateATI"); + glad_glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)load("glStencilFuncSeparateATI"); +} +static void load_GL_ATI_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_array_object) return; + glad_glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)load("glNewObjectBufferATI"); + glad_glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)load("glIsObjectBufferATI"); + glad_glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)load("glUpdateObjectBufferATI"); + glad_glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)load("glGetObjectBufferfvATI"); + glad_glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)load("glGetObjectBufferivATI"); + glad_glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)load("glFreeObjectBufferATI"); + glad_glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)load("glArrayObjectATI"); + glad_glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)load("glGetArrayObjectfvATI"); + glad_glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)load("glGetArrayObjectivATI"); + glad_glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)load("glVariantArrayObjectATI"); + glad_glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)load("glGetVariantArrayObjectfvATI"); + glad_glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)load("glGetVariantArrayObjectivATI"); +} +static void load_GL_ATI_vertex_attrib_array_object(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_attrib_array_object) return; + glad_glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)load("glVertexAttribArrayObjectATI"); + glad_glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)load("glGetVertexAttribArrayObjectfvATI"); + glad_glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)load("glGetVertexAttribArrayObjectivATI"); +} +static void load_GL_ATI_vertex_streams(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_streams) return; + glad_glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)load("glVertexStream1sATI"); + glad_glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)load("glVertexStream1svATI"); + glad_glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)load("glVertexStream1iATI"); + glad_glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)load("glVertexStream1ivATI"); + glad_glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)load("glVertexStream1fATI"); + glad_glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)load("glVertexStream1fvATI"); + glad_glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)load("glVertexStream1dATI"); + glad_glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)load("glVertexStream1dvATI"); + glad_glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)load("glVertexStream2sATI"); + glad_glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)load("glVertexStream2svATI"); + glad_glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)load("glVertexStream2iATI"); + glad_glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)load("glVertexStream2ivATI"); + glad_glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)load("glVertexStream2fATI"); + glad_glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)load("glVertexStream2fvATI"); + glad_glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)load("glVertexStream2dATI"); + glad_glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)load("glVertexStream2dvATI"); + glad_glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)load("glVertexStream3sATI"); + glad_glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)load("glVertexStream3svATI"); + glad_glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)load("glVertexStream3iATI"); + glad_glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)load("glVertexStream3ivATI"); + glad_glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)load("glVertexStream3fATI"); + glad_glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)load("glVertexStream3fvATI"); + glad_glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)load("glVertexStream3dATI"); + glad_glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)load("glVertexStream3dvATI"); + glad_glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)load("glVertexStream4sATI"); + glad_glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)load("glVertexStream4svATI"); + glad_glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)load("glVertexStream4iATI"); + glad_glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)load("glVertexStream4ivATI"); + glad_glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)load("glVertexStream4fATI"); + glad_glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)load("glVertexStream4fvATI"); + glad_glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)load("glVertexStream4dATI"); + glad_glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)load("glVertexStream4dvATI"); + glad_glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)load("glNormalStream3bATI"); + glad_glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)load("glNormalStream3bvATI"); + glad_glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)load("glNormalStream3sATI"); + glad_glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)load("glNormalStream3svATI"); + glad_glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)load("glNormalStream3iATI"); + glad_glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)load("glNormalStream3ivATI"); + glad_glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)load("glNormalStream3fATI"); + glad_glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)load("glNormalStream3fvATI"); + glad_glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)load("glNormalStream3dATI"); + glad_glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)load("glNormalStream3dvATI"); + glad_glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)load("glClientActiveVertexStreamATI"); + glad_glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)load("glVertexBlendEnviATI"); + glad_glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)load("glVertexBlendEnvfATI"); +} +static void load_GL_EXT_EGL_image_storage(GLADloadproc load) { + if(!GLAD_GL_EXT_EGL_image_storage) return; + glad_glEGLImageTargetTexStorageEXT = (PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)load("glEGLImageTargetTexStorageEXT"); + glad_glEGLImageTargetTextureStorageEXT = (PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)load("glEGLImageTargetTextureStorageEXT"); +} +static void load_GL_EXT_bindable_uniform(GLADloadproc load) { + if(!GLAD_GL_EXT_bindable_uniform) return; + glad_glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)load("glUniformBufferEXT"); + glad_glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)load("glGetUniformBufferSizeEXT"); + glad_glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)load("glGetUniformOffsetEXT"); +} +static void load_GL_EXT_blend_color(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_color) return; + glad_glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)load("glBlendColorEXT"); +} +static void load_GL_EXT_blend_equation_separate(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_equation_separate) return; + glad_glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)load("glBlendEquationSeparateEXT"); +} +static void load_GL_EXT_blend_func_separate(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_func_separate) return; + glad_glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)load("glBlendFuncSeparateEXT"); +} +static void load_GL_EXT_blend_minmax(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_minmax) return; + glad_glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)load("glBlendEquationEXT"); +} +static void load_GL_EXT_color_subtable(GLADloadproc load) { + if(!GLAD_GL_EXT_color_subtable) return; + glad_glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)load("glColorSubTableEXT"); + glad_glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)load("glCopyColorSubTableEXT"); +} +static void load_GL_EXT_compiled_vertex_array(GLADloadproc load) { + if(!GLAD_GL_EXT_compiled_vertex_array) return; + glad_glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)load("glLockArraysEXT"); + glad_glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)load("glUnlockArraysEXT"); +} +static void load_GL_EXT_convolution(GLADloadproc load) { + if(!GLAD_GL_EXT_convolution) return; + glad_glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)load("glConvolutionFilter1DEXT"); + glad_glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)load("glConvolutionFilter2DEXT"); + glad_glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)load("glConvolutionParameterfEXT"); + glad_glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)load("glConvolutionParameterfvEXT"); + glad_glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)load("glConvolutionParameteriEXT"); + glad_glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)load("glConvolutionParameterivEXT"); + glad_glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)load("glCopyConvolutionFilter1DEXT"); + glad_glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)load("glCopyConvolutionFilter2DEXT"); + glad_glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)load("glGetConvolutionFilterEXT"); + glad_glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)load("glGetConvolutionParameterfvEXT"); + glad_glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)load("glGetConvolutionParameterivEXT"); + glad_glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)load("glGetSeparableFilterEXT"); + glad_glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)load("glSeparableFilter2DEXT"); +} +static void load_GL_EXT_coordinate_frame(GLADloadproc load) { + if(!GLAD_GL_EXT_coordinate_frame) return; + glad_glTangent3bEXT = (PFNGLTANGENT3BEXTPROC)load("glTangent3bEXT"); + glad_glTangent3bvEXT = (PFNGLTANGENT3BVEXTPROC)load("glTangent3bvEXT"); + glad_glTangent3dEXT = (PFNGLTANGENT3DEXTPROC)load("glTangent3dEXT"); + glad_glTangent3dvEXT = (PFNGLTANGENT3DVEXTPROC)load("glTangent3dvEXT"); + glad_glTangent3fEXT = (PFNGLTANGENT3FEXTPROC)load("glTangent3fEXT"); + glad_glTangent3fvEXT = (PFNGLTANGENT3FVEXTPROC)load("glTangent3fvEXT"); + glad_glTangent3iEXT = (PFNGLTANGENT3IEXTPROC)load("glTangent3iEXT"); + glad_glTangent3ivEXT = (PFNGLTANGENT3IVEXTPROC)load("glTangent3ivEXT"); + glad_glTangent3sEXT = (PFNGLTANGENT3SEXTPROC)load("glTangent3sEXT"); + glad_glTangent3svEXT = (PFNGLTANGENT3SVEXTPROC)load("glTangent3svEXT"); + glad_glBinormal3bEXT = (PFNGLBINORMAL3BEXTPROC)load("glBinormal3bEXT"); + glad_glBinormal3bvEXT = (PFNGLBINORMAL3BVEXTPROC)load("glBinormal3bvEXT"); + glad_glBinormal3dEXT = (PFNGLBINORMAL3DEXTPROC)load("glBinormal3dEXT"); + glad_glBinormal3dvEXT = (PFNGLBINORMAL3DVEXTPROC)load("glBinormal3dvEXT"); + glad_glBinormal3fEXT = (PFNGLBINORMAL3FEXTPROC)load("glBinormal3fEXT"); + glad_glBinormal3fvEXT = (PFNGLBINORMAL3FVEXTPROC)load("glBinormal3fvEXT"); + glad_glBinormal3iEXT = (PFNGLBINORMAL3IEXTPROC)load("glBinormal3iEXT"); + glad_glBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC)load("glBinormal3ivEXT"); + glad_glBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC)load("glBinormal3sEXT"); + glad_glBinormal3svEXT = (PFNGLBINORMAL3SVEXTPROC)load("glBinormal3svEXT"); + glad_glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)load("glTangentPointerEXT"); + glad_glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)load("glBinormalPointerEXT"); +} +static void load_GL_EXT_copy_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_copy_texture) return; + glad_glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)load("glCopyTexImage1DEXT"); + glad_glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)load("glCopyTexImage2DEXT"); + glad_glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)load("glCopyTexSubImage1DEXT"); + glad_glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)load("glCopyTexSubImage2DEXT"); + glad_glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)load("glCopyTexSubImage3DEXT"); +} +static void load_GL_EXT_cull_vertex(GLADloadproc load) { + if(!GLAD_GL_EXT_cull_vertex) return; + glad_glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)load("glCullParameterdvEXT"); + glad_glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)load("glCullParameterfvEXT"); +} +static void load_GL_EXT_debug_label(GLADloadproc load) { + if(!GLAD_GL_EXT_debug_label) return; + glad_glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)load("glLabelObjectEXT"); + glad_glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)load("glGetObjectLabelEXT"); +} +static void load_GL_EXT_debug_marker(GLADloadproc load) { + if(!GLAD_GL_EXT_debug_marker) return; + glad_glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)load("glInsertEventMarkerEXT"); + glad_glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)load("glPushGroupMarkerEXT"); + glad_glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)load("glPopGroupMarkerEXT"); +} +static void load_GL_EXT_depth_bounds_test(GLADloadproc load) { + if(!GLAD_GL_EXT_depth_bounds_test) return; + glad_glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)load("glDepthBoundsEXT"); +} +static void load_GL_EXT_direct_state_access(GLADloadproc load) { + if(!GLAD_GL_EXT_direct_state_access) return; + glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); + glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); + glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); + glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); + glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); + glad_glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)load("glMatrixRotatefEXT"); + glad_glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)load("glMatrixRotatedEXT"); + glad_glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)load("glMatrixScalefEXT"); + glad_glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)load("glMatrixScaledEXT"); + glad_glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)load("glMatrixTranslatefEXT"); + glad_glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)load("glMatrixTranslatedEXT"); + glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); + glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); + glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); + glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); + glad_glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)load("glClientAttribDefaultEXT"); + glad_glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)load("glPushClientAttribDefaultEXT"); + glad_glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)load("glTextureParameterfEXT"); + glad_glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)load("glTextureParameterfvEXT"); + glad_glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)load("glTextureParameteriEXT"); + glad_glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)load("glTextureParameterivEXT"); + glad_glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)load("glTextureImage1DEXT"); + glad_glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)load("glTextureImage2DEXT"); + glad_glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)load("glTextureSubImage1DEXT"); + glad_glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)load("glTextureSubImage2DEXT"); + glad_glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)load("glCopyTextureImage1DEXT"); + glad_glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)load("glCopyTextureImage2DEXT"); + glad_glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)load("glCopyTextureSubImage1DEXT"); + glad_glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)load("glCopyTextureSubImage2DEXT"); + glad_glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)load("glGetTextureImageEXT"); + glad_glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)load("glGetTextureParameterfvEXT"); + glad_glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)load("glGetTextureParameterivEXT"); + glad_glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)load("glGetTextureLevelParameterfvEXT"); + glad_glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)load("glGetTextureLevelParameterivEXT"); + glad_glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)load("glTextureImage3DEXT"); + glad_glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)load("glTextureSubImage3DEXT"); + glad_glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)load("glCopyTextureSubImage3DEXT"); + glad_glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)load("glBindMultiTextureEXT"); + glad_glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)load("glMultiTexCoordPointerEXT"); + glad_glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)load("glMultiTexEnvfEXT"); + glad_glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)load("glMultiTexEnvfvEXT"); + glad_glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)load("glMultiTexEnviEXT"); + glad_glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)load("glMultiTexEnvivEXT"); + glad_glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)load("glMultiTexGendEXT"); + glad_glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)load("glMultiTexGendvEXT"); + glad_glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)load("glMultiTexGenfEXT"); + glad_glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)load("glMultiTexGenfvEXT"); + glad_glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)load("glMultiTexGeniEXT"); + glad_glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)load("glMultiTexGenivEXT"); + glad_glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)load("glGetMultiTexEnvfvEXT"); + glad_glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)load("glGetMultiTexEnvivEXT"); + glad_glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)load("glGetMultiTexGendvEXT"); + glad_glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)load("glGetMultiTexGenfvEXT"); + glad_glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)load("glGetMultiTexGenivEXT"); + glad_glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)load("glMultiTexParameteriEXT"); + glad_glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)load("glMultiTexParameterivEXT"); + glad_glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)load("glMultiTexParameterfEXT"); + glad_glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)load("glMultiTexParameterfvEXT"); + glad_glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)load("glMultiTexImage1DEXT"); + glad_glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)load("glMultiTexImage2DEXT"); + glad_glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)load("glMultiTexSubImage1DEXT"); + glad_glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)load("glMultiTexSubImage2DEXT"); + glad_glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)load("glCopyMultiTexImage1DEXT"); + glad_glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)load("glCopyMultiTexImage2DEXT"); + glad_glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)load("glCopyMultiTexSubImage1DEXT"); + glad_glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)load("glCopyMultiTexSubImage2DEXT"); + glad_glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)load("glGetMultiTexImageEXT"); + glad_glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)load("glGetMultiTexParameterfvEXT"); + glad_glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)load("glGetMultiTexParameterivEXT"); + glad_glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)load("glGetMultiTexLevelParameterfvEXT"); + glad_glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)load("glGetMultiTexLevelParameterivEXT"); + glad_glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)load("glMultiTexImage3DEXT"); + glad_glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)load("glMultiTexSubImage3DEXT"); + glad_glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)load("glCopyMultiTexSubImage3DEXT"); + glad_glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)load("glEnableClientStateIndexedEXT"); + glad_glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)load("glDisableClientStateIndexedEXT"); + glad_glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)load("glGetFloatIndexedvEXT"); + glad_glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)load("glGetDoubleIndexedvEXT"); + glad_glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)load("glGetPointerIndexedvEXT"); + glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); + glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); + glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); + glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); + glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); + glad_glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)load("glCompressedTextureImage3DEXT"); + glad_glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)load("glCompressedTextureImage2DEXT"); + glad_glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)load("glCompressedTextureImage1DEXT"); + glad_glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)load("glCompressedTextureSubImage3DEXT"); + glad_glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)load("glCompressedTextureSubImage2DEXT"); + glad_glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)load("glCompressedTextureSubImage1DEXT"); + glad_glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)load("glGetCompressedTextureImageEXT"); + glad_glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)load("glCompressedMultiTexImage3DEXT"); + glad_glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)load("glCompressedMultiTexImage2DEXT"); + glad_glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)load("glCompressedMultiTexImage1DEXT"); + glad_glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)load("glCompressedMultiTexSubImage3DEXT"); + glad_glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)load("glCompressedMultiTexSubImage2DEXT"); + glad_glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)load("glCompressedMultiTexSubImage1DEXT"); + glad_glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)load("glGetCompressedMultiTexImageEXT"); + glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); + glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); + glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); + glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); + glad_glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)load("glNamedBufferDataEXT"); + glad_glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)load("glNamedBufferSubDataEXT"); + glad_glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)load("glMapNamedBufferEXT"); + glad_glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)load("glUnmapNamedBufferEXT"); + glad_glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)load("glGetNamedBufferParameterivEXT"); + glad_glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)load("glGetNamedBufferPointervEXT"); + glad_glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)load("glGetNamedBufferSubDataEXT"); + glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); + glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); + glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); + glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); + glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); + glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); + glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); + glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); + glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); + glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); + glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); + glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); + glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); + glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); + glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); + glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); + glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); + glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); + glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); + glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); + glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); + glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); + glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); + glad_glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)load("glTextureBufferEXT"); + glad_glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)load("glMultiTexBufferEXT"); + glad_glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)load("glTextureParameterIivEXT"); + glad_glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)load("glTextureParameterIuivEXT"); + glad_glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)load("glGetTextureParameterIivEXT"); + glad_glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)load("glGetTextureParameterIuivEXT"); + glad_glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)load("glMultiTexParameterIivEXT"); + glad_glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)load("glMultiTexParameterIuivEXT"); + glad_glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)load("glGetMultiTexParameterIivEXT"); + glad_glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)load("glGetMultiTexParameterIuivEXT"); + glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); + glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); + glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); + glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); + glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); + glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); + glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); + glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); + glad_glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glNamedProgramLocalParameters4fvEXT"); + glad_glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)load("glNamedProgramLocalParameterI4iEXT"); + glad_glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)load("glNamedProgramLocalParameterI4ivEXT"); + glad_glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)load("glNamedProgramLocalParametersI4ivEXT"); + glad_glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)load("glNamedProgramLocalParameterI4uiEXT"); + glad_glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)load("glNamedProgramLocalParameterI4uivEXT"); + glad_glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)load("glNamedProgramLocalParametersI4uivEXT"); + glad_glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)load("glGetNamedProgramLocalParameterIivEXT"); + glad_glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)load("glGetNamedProgramLocalParameterIuivEXT"); + glad_glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)load("glEnableClientStateiEXT"); + glad_glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)load("glDisableClientStateiEXT"); + glad_glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)load("glGetFloati_vEXT"); + glad_glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)load("glGetDoublei_vEXT"); + glad_glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)load("glGetPointeri_vEXT"); + glad_glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)load("glNamedProgramStringEXT"); + glad_glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)load("glNamedProgramLocalParameter4dEXT"); + glad_glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)load("glNamedProgramLocalParameter4dvEXT"); + glad_glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)load("glNamedProgramLocalParameter4fEXT"); + glad_glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)load("glNamedProgramLocalParameter4fvEXT"); + glad_glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)load("glGetNamedProgramLocalParameterdvEXT"); + glad_glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)load("glGetNamedProgramLocalParameterfvEXT"); + glad_glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)load("glGetNamedProgramivEXT"); + glad_glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)load("glGetNamedProgramStringEXT"); + glad_glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)load("glNamedRenderbufferStorageEXT"); + glad_glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)load("glGetNamedRenderbufferParameterivEXT"); + glad_glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glNamedRenderbufferStorageMultisampleEXT"); + glad_glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)load("glNamedRenderbufferStorageMultisampleCoverageEXT"); + glad_glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)load("glCheckNamedFramebufferStatusEXT"); + glad_glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)load("glNamedFramebufferTexture1DEXT"); + glad_glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)load("glNamedFramebufferTexture2DEXT"); + glad_glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)load("glNamedFramebufferTexture3DEXT"); + glad_glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)load("glNamedFramebufferRenderbufferEXT"); + glad_glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetNamedFramebufferAttachmentParameterivEXT"); + glad_glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)load("glGenerateTextureMipmapEXT"); + glad_glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)load("glGenerateMultiTexMipmapEXT"); + glad_glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)load("glFramebufferDrawBufferEXT"); + glad_glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)load("glFramebufferDrawBuffersEXT"); + glad_glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)load("glFramebufferReadBufferEXT"); + glad_glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetFramebufferParameterivEXT"); + glad_glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)load("glNamedCopyBufferSubDataEXT"); + glad_glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)load("glNamedFramebufferTextureEXT"); + glad_glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)load("glNamedFramebufferTextureLayerEXT"); + glad_glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)load("glNamedFramebufferTextureFaceEXT"); + glad_glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)load("glTextureRenderbufferEXT"); + glad_glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)load("glMultiTexRenderbufferEXT"); + glad_glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)load("glVertexArrayVertexOffsetEXT"); + glad_glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)load("glVertexArrayColorOffsetEXT"); + glad_glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)load("glVertexArrayEdgeFlagOffsetEXT"); + glad_glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)load("glVertexArrayIndexOffsetEXT"); + glad_glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)load("glVertexArrayNormalOffsetEXT"); + glad_glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)load("glVertexArrayTexCoordOffsetEXT"); + glad_glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)load("glVertexArrayMultiTexCoordOffsetEXT"); + glad_glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)load("glVertexArrayFogCoordOffsetEXT"); + glad_glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)load("glVertexArraySecondaryColorOffsetEXT"); + glad_glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)load("glVertexArrayVertexAttribOffsetEXT"); + glad_glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)load("glVertexArrayVertexAttribIOffsetEXT"); + glad_glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)load("glEnableVertexArrayEXT"); + glad_glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)load("glDisableVertexArrayEXT"); + glad_glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)load("glEnableVertexArrayAttribEXT"); + glad_glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)load("glDisableVertexArrayAttribEXT"); + glad_glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)load("glGetVertexArrayIntegervEXT"); + glad_glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)load("glGetVertexArrayPointervEXT"); + glad_glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)load("glGetVertexArrayIntegeri_vEXT"); + glad_glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)load("glGetVertexArrayPointeri_vEXT"); + glad_glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)load("glMapNamedBufferRangeEXT"); + glad_glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)load("glFlushMappedNamedBufferRangeEXT"); + glad_glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)load("glNamedBufferStorageEXT"); + glad_glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)load("glClearNamedBufferDataEXT"); + glad_glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)load("glClearNamedBufferSubDataEXT"); + glad_glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)load("glNamedFramebufferParameteriEXT"); + glad_glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetNamedFramebufferParameterivEXT"); + glad_glProgramUniform1dEXT = (PFNGLPROGRAMUNIFORM1DEXTPROC)load("glProgramUniform1dEXT"); + glad_glProgramUniform2dEXT = (PFNGLPROGRAMUNIFORM2DEXTPROC)load("glProgramUniform2dEXT"); + glad_glProgramUniform3dEXT = (PFNGLPROGRAMUNIFORM3DEXTPROC)load("glProgramUniform3dEXT"); + glad_glProgramUniform4dEXT = (PFNGLPROGRAMUNIFORM4DEXTPROC)load("glProgramUniform4dEXT"); + glad_glProgramUniform1dvEXT = (PFNGLPROGRAMUNIFORM1DVEXTPROC)load("glProgramUniform1dvEXT"); + glad_glProgramUniform2dvEXT = (PFNGLPROGRAMUNIFORM2DVEXTPROC)load("glProgramUniform2dvEXT"); + glad_glProgramUniform3dvEXT = (PFNGLPROGRAMUNIFORM3DVEXTPROC)load("glProgramUniform3dvEXT"); + glad_glProgramUniform4dvEXT = (PFNGLPROGRAMUNIFORM4DVEXTPROC)load("glProgramUniform4dvEXT"); + glad_glProgramUniformMatrix2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)load("glProgramUniformMatrix2dvEXT"); + glad_glProgramUniformMatrix3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)load("glProgramUniformMatrix3dvEXT"); + glad_glProgramUniformMatrix4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)load("glProgramUniformMatrix4dvEXT"); + glad_glProgramUniformMatrix2x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)load("glProgramUniformMatrix2x3dvEXT"); + glad_glProgramUniformMatrix2x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)load("glProgramUniformMatrix2x4dvEXT"); + glad_glProgramUniformMatrix3x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)load("glProgramUniformMatrix3x2dvEXT"); + glad_glProgramUniformMatrix3x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)load("glProgramUniformMatrix3x4dvEXT"); + glad_glProgramUniformMatrix4x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)load("glProgramUniformMatrix4x2dvEXT"); + glad_glProgramUniformMatrix4x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)load("glProgramUniformMatrix4x3dvEXT"); + glad_glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)load("glTextureBufferRangeEXT"); + glad_glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)load("glTextureStorage1DEXT"); + glad_glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)load("glTextureStorage2DEXT"); + glad_glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)load("glTextureStorage3DEXT"); + glad_glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)load("glTextureStorage2DMultisampleEXT"); + glad_glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)load("glTextureStorage3DMultisampleEXT"); + glad_glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)load("glVertexArrayBindVertexBufferEXT"); + glad_glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)load("glVertexArrayVertexAttribFormatEXT"); + glad_glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)load("glVertexArrayVertexAttribIFormatEXT"); + glad_glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)load("glVertexArrayVertexAttribLFormatEXT"); + glad_glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)load("glVertexArrayVertexAttribBindingEXT"); + glad_glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)load("glVertexArrayVertexBindingDivisorEXT"); + glad_glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)load("glVertexArrayVertexAttribLOffsetEXT"); + glad_glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)load("glTexturePageCommitmentEXT"); + glad_glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)load("glVertexArrayVertexAttribDivisorEXT"); +} +static void load_GL_EXT_draw_buffers2(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_buffers2) return; + glad_glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)load("glColorMaskIndexedEXT"); + glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); + glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); + glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); + glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); + glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); +} +static void load_GL_EXT_draw_instanced(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_instanced) return; + glad_glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)load("glDrawArraysInstancedEXT"); + glad_glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)load("glDrawElementsInstancedEXT"); +} +static void load_GL_EXT_draw_range_elements(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_range_elements) return; + glad_glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)load("glDrawRangeElementsEXT"); +} +static void load_GL_EXT_external_buffer(GLADloadproc load) { + if(!GLAD_GL_EXT_external_buffer) return; + glad_glBufferStorageExternalEXT = (PFNGLBUFFERSTORAGEEXTERNALEXTPROC)load("glBufferStorageExternalEXT"); + glad_glNamedBufferStorageExternalEXT = (PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)load("glNamedBufferStorageExternalEXT"); +} +static void load_GL_EXT_fog_coord(GLADloadproc load) { + if(!GLAD_GL_EXT_fog_coord) return; + glad_glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)load("glFogCoordfEXT"); + glad_glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)load("glFogCoordfvEXT"); + glad_glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)load("glFogCoorddEXT"); + glad_glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)load("glFogCoorddvEXT"); + glad_glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)load("glFogCoordPointerEXT"); +} +static void load_GL_EXT_framebuffer_blit(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_blit) return; + glad_glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)load("glBlitFramebufferEXT"); +} +static void load_GL_EXT_framebuffer_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_multisample) return; + glad_glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glRenderbufferStorageMultisampleEXT"); +} +static void load_GL_EXT_framebuffer_object(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_object) return; + glad_glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)load("glIsRenderbufferEXT"); + glad_glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)load("glBindRenderbufferEXT"); + glad_glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)load("glDeleteRenderbuffersEXT"); + glad_glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)load("glGenRenderbuffersEXT"); + glad_glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)load("glRenderbufferStorageEXT"); + glad_glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)load("glGetRenderbufferParameterivEXT"); + glad_glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)load("glIsFramebufferEXT"); + glad_glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)load("glBindFramebufferEXT"); + glad_glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)load("glDeleteFramebuffersEXT"); + glad_glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)load("glGenFramebuffersEXT"); + glad_glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)load("glCheckFramebufferStatusEXT"); + glad_glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)load("glFramebufferTexture1DEXT"); + glad_glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)load("glFramebufferTexture2DEXT"); + glad_glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)load("glFramebufferTexture3DEXT"); + glad_glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)load("glFramebufferRenderbufferEXT"); + glad_glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetFramebufferAttachmentParameterivEXT"); + glad_glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)load("glGenerateMipmapEXT"); +} +static void load_GL_EXT_geometry_shader4(GLADloadproc load) { + if(!GLAD_GL_EXT_geometry_shader4) return; + glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); +} +static void load_GL_EXT_gpu_program_parameters(GLADloadproc load) { + if(!GLAD_GL_EXT_gpu_program_parameters) return; + glad_glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)load("glProgramEnvParameters4fvEXT"); + glad_glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glProgramLocalParameters4fvEXT"); +} +static void load_GL_EXT_gpu_shader4(GLADloadproc load) { + if(!GLAD_GL_EXT_gpu_shader4) return; + glad_glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)load("glGetUniformuivEXT"); + glad_glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)load("glBindFragDataLocationEXT"); + glad_glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)load("glGetFragDataLocationEXT"); + glad_glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)load("glUniform1uiEXT"); + glad_glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)load("glUniform2uiEXT"); + glad_glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)load("glUniform3uiEXT"); + glad_glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)load("glUniform4uiEXT"); + glad_glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)load("glUniform1uivEXT"); + glad_glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)load("glUniform2uivEXT"); + glad_glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)load("glUniform3uivEXT"); + glad_glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)load("glUniform4uivEXT"); +} +static void load_GL_EXT_histogram(GLADloadproc load) { + if(!GLAD_GL_EXT_histogram) return; + glad_glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)load("glGetHistogramEXT"); + glad_glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)load("glGetHistogramParameterfvEXT"); + glad_glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)load("glGetHistogramParameterivEXT"); + glad_glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)load("glGetMinmaxEXT"); + glad_glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)load("glGetMinmaxParameterfvEXT"); + glad_glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)load("glGetMinmaxParameterivEXT"); + glad_glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)load("glHistogramEXT"); + glad_glMinmaxEXT = (PFNGLMINMAXEXTPROC)load("glMinmaxEXT"); + glad_glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)load("glResetHistogramEXT"); + glad_glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)load("glResetMinmaxEXT"); +} +static void load_GL_EXT_index_func(GLADloadproc load) { + if(!GLAD_GL_EXT_index_func) return; + glad_glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)load("glIndexFuncEXT"); +} +static void load_GL_EXT_index_material(GLADloadproc load) { + if(!GLAD_GL_EXT_index_material) return; + glad_glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)load("glIndexMaterialEXT"); +} +static void load_GL_EXT_light_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_light_texture) return; + glad_glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)load("glApplyTextureEXT"); + glad_glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)load("glTextureLightEXT"); + glad_glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)load("glTextureMaterialEXT"); +} +static void load_GL_EXT_memory_object(GLADloadproc load) { + if(!GLAD_GL_EXT_memory_object) return; + glad_glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)load("glGetUnsignedBytevEXT"); + glad_glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)load("glGetUnsignedBytei_vEXT"); + glad_glDeleteMemoryObjectsEXT = (PFNGLDELETEMEMORYOBJECTSEXTPROC)load("glDeleteMemoryObjectsEXT"); + glad_glIsMemoryObjectEXT = (PFNGLISMEMORYOBJECTEXTPROC)load("glIsMemoryObjectEXT"); + glad_glCreateMemoryObjectsEXT = (PFNGLCREATEMEMORYOBJECTSEXTPROC)load("glCreateMemoryObjectsEXT"); + glad_glMemoryObjectParameterivEXT = (PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)load("glMemoryObjectParameterivEXT"); + glad_glGetMemoryObjectParameterivEXT = (PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)load("glGetMemoryObjectParameterivEXT"); + glad_glTexStorageMem2DEXT = (PFNGLTEXSTORAGEMEM2DEXTPROC)load("glTexStorageMem2DEXT"); + glad_glTexStorageMem2DMultisampleEXT = (PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)load("glTexStorageMem2DMultisampleEXT"); + glad_glTexStorageMem3DEXT = (PFNGLTEXSTORAGEMEM3DEXTPROC)load("glTexStorageMem3DEXT"); + glad_glTexStorageMem3DMultisampleEXT = (PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)load("glTexStorageMem3DMultisampleEXT"); + glad_glBufferStorageMemEXT = (PFNGLBUFFERSTORAGEMEMEXTPROC)load("glBufferStorageMemEXT"); + glad_glTextureStorageMem2DEXT = (PFNGLTEXTURESTORAGEMEM2DEXTPROC)load("glTextureStorageMem2DEXT"); + glad_glTextureStorageMem2DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)load("glTextureStorageMem2DMultisampleEXT"); + glad_glTextureStorageMem3DEXT = (PFNGLTEXTURESTORAGEMEM3DEXTPROC)load("glTextureStorageMem3DEXT"); + glad_glTextureStorageMem3DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)load("glTextureStorageMem3DMultisampleEXT"); + glad_glNamedBufferStorageMemEXT = (PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)load("glNamedBufferStorageMemEXT"); + glad_glTexStorageMem1DEXT = (PFNGLTEXSTORAGEMEM1DEXTPROC)load("glTexStorageMem1DEXT"); + glad_glTextureStorageMem1DEXT = (PFNGLTEXTURESTORAGEMEM1DEXTPROC)load("glTextureStorageMem1DEXT"); +} +static void load_GL_EXT_memory_object_fd(GLADloadproc load) { + if(!GLAD_GL_EXT_memory_object_fd) return; + glad_glImportMemoryFdEXT = (PFNGLIMPORTMEMORYFDEXTPROC)load("glImportMemoryFdEXT"); +} +static void load_GL_EXT_memory_object_win32(GLADloadproc load) { + if(!GLAD_GL_EXT_memory_object_win32) return; + glad_glImportMemoryWin32HandleEXT = (PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)load("glImportMemoryWin32HandleEXT"); + glad_glImportMemoryWin32NameEXT = (PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)load("glImportMemoryWin32NameEXT"); +} +static void load_GL_EXT_multi_draw_arrays(GLADloadproc load) { + if(!GLAD_GL_EXT_multi_draw_arrays) return; + glad_glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)load("glMultiDrawArraysEXT"); + glad_glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)load("glMultiDrawElementsEXT"); +} +static void load_GL_EXT_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_multisample) return; + glad_glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)load("glSampleMaskEXT"); + glad_glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)load("glSamplePatternEXT"); +} +static void load_GL_EXT_paletted_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_paletted_texture) return; + glad_glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)load("glColorTableEXT"); + glad_glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)load("glGetColorTableEXT"); + glad_glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)load("glGetColorTableParameterivEXT"); + glad_glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)load("glGetColorTableParameterfvEXT"); +} +static void load_GL_EXT_pixel_transform(GLADloadproc load) { + if(!GLAD_GL_EXT_pixel_transform) return; + glad_glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)load("glPixelTransformParameteriEXT"); + glad_glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)load("glPixelTransformParameterfEXT"); + glad_glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)load("glPixelTransformParameterivEXT"); + glad_glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)load("glPixelTransformParameterfvEXT"); + glad_glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)load("glGetPixelTransformParameterivEXT"); + glad_glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)load("glGetPixelTransformParameterfvEXT"); +} +static void load_GL_EXT_point_parameters(GLADloadproc load) { + if(!GLAD_GL_EXT_point_parameters) return; + glad_glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)load("glPointParameterfEXT"); + glad_glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)load("glPointParameterfvEXT"); +} +static void load_GL_EXT_polygon_offset(GLADloadproc load) { + if(!GLAD_GL_EXT_polygon_offset) return; + glad_glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)load("glPolygonOffsetEXT"); +} +static void load_GL_EXT_polygon_offset_clamp(GLADloadproc load) { + if(!GLAD_GL_EXT_polygon_offset_clamp) return; + glad_glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)load("glPolygonOffsetClampEXT"); +} +static void load_GL_EXT_provoking_vertex(GLADloadproc load) { + if(!GLAD_GL_EXT_provoking_vertex) return; + glad_glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)load("glProvokingVertexEXT"); +} +static void load_GL_EXT_raster_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_raster_multisample) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); +} +static void load_GL_EXT_secondary_color(GLADloadproc load) { + if(!GLAD_GL_EXT_secondary_color) return; + glad_glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)load("glSecondaryColor3bEXT"); + glad_glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)load("glSecondaryColor3bvEXT"); + glad_glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)load("glSecondaryColor3dEXT"); + glad_glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)load("glSecondaryColor3dvEXT"); + glad_glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)load("glSecondaryColor3fEXT"); + glad_glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)load("glSecondaryColor3fvEXT"); + glad_glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)load("glSecondaryColor3iEXT"); + glad_glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)load("glSecondaryColor3ivEXT"); + glad_glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)load("glSecondaryColor3sEXT"); + glad_glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)load("glSecondaryColor3svEXT"); + glad_glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)load("glSecondaryColor3ubEXT"); + glad_glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)load("glSecondaryColor3ubvEXT"); + glad_glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)load("glSecondaryColor3uiEXT"); + glad_glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)load("glSecondaryColor3uivEXT"); + glad_glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)load("glSecondaryColor3usEXT"); + glad_glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)load("glSecondaryColor3usvEXT"); + glad_glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)load("glSecondaryColorPointerEXT"); +} +static void load_GL_EXT_semaphore(GLADloadproc load) { + if(!GLAD_GL_EXT_semaphore) return; + glad_glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)load("glGetUnsignedBytevEXT"); + glad_glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)load("glGetUnsignedBytei_vEXT"); + glad_glGenSemaphoresEXT = (PFNGLGENSEMAPHORESEXTPROC)load("glGenSemaphoresEXT"); + glad_glDeleteSemaphoresEXT = (PFNGLDELETESEMAPHORESEXTPROC)load("glDeleteSemaphoresEXT"); + glad_glIsSemaphoreEXT = (PFNGLISSEMAPHOREEXTPROC)load("glIsSemaphoreEXT"); + glad_glSemaphoreParameterui64vEXT = (PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)load("glSemaphoreParameterui64vEXT"); + glad_glGetSemaphoreParameterui64vEXT = (PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)load("glGetSemaphoreParameterui64vEXT"); + glad_glWaitSemaphoreEXT = (PFNGLWAITSEMAPHOREEXTPROC)load("glWaitSemaphoreEXT"); + glad_glSignalSemaphoreEXT = (PFNGLSIGNALSEMAPHOREEXTPROC)load("glSignalSemaphoreEXT"); +} +static void load_GL_EXT_semaphore_fd(GLADloadproc load) { + if(!GLAD_GL_EXT_semaphore_fd) return; + glad_glImportSemaphoreFdEXT = (PFNGLIMPORTSEMAPHOREFDEXTPROC)load("glImportSemaphoreFdEXT"); +} +static void load_GL_EXT_semaphore_win32(GLADloadproc load) { + if(!GLAD_GL_EXT_semaphore_win32) return; + glad_glImportSemaphoreWin32HandleEXT = (PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)load("glImportSemaphoreWin32HandleEXT"); + glad_glImportSemaphoreWin32NameEXT = (PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)load("glImportSemaphoreWin32NameEXT"); +} +static void load_GL_EXT_separate_shader_objects(GLADloadproc load) { + if(!GLAD_GL_EXT_separate_shader_objects) return; + glad_glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)load("glUseShaderProgramEXT"); + glad_glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)load("glActiveProgramEXT"); + glad_glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)load("glCreateShaderProgramEXT"); + glad_glActiveShaderProgramEXT = (PFNGLACTIVESHADERPROGRAMEXTPROC)load("glActiveShaderProgramEXT"); + glad_glBindProgramPipelineEXT = (PFNGLBINDPROGRAMPIPELINEEXTPROC)load("glBindProgramPipelineEXT"); + glad_glCreateShaderProgramvEXT = (PFNGLCREATESHADERPROGRAMVEXTPROC)load("glCreateShaderProgramvEXT"); + glad_glDeleteProgramPipelinesEXT = (PFNGLDELETEPROGRAMPIPELINESEXTPROC)load("glDeleteProgramPipelinesEXT"); + glad_glGenProgramPipelinesEXT = (PFNGLGENPROGRAMPIPELINESEXTPROC)load("glGenProgramPipelinesEXT"); + glad_glGetProgramPipelineInfoLogEXT = (PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)load("glGetProgramPipelineInfoLogEXT"); + glad_glGetProgramPipelineivEXT = (PFNGLGETPROGRAMPIPELINEIVEXTPROC)load("glGetProgramPipelineivEXT"); + glad_glIsProgramPipelineEXT = (PFNGLISPROGRAMPIPELINEEXTPROC)load("glIsProgramPipelineEXT"); + glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); + glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); + glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); + glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); + glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); + glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); + glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); + glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); + glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); + glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); + glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); + glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); + glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); + glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); + glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); + glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); + glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); + glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); + glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glUseProgramStagesEXT = (PFNGLUSEPROGRAMSTAGESEXTPROC)load("glUseProgramStagesEXT"); + glad_glValidateProgramPipelineEXT = (PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)load("glValidateProgramPipelineEXT"); + glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); + glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); + glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); + glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); + glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); + glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); + glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); + glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); + glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); + glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); + glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); + glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); + glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); +} +static void load_GL_EXT_shader_framebuffer_fetch_non_coherent(GLADloadproc load) { + if(!GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent) return; + glad_glFramebufferFetchBarrierEXT = (PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)load("glFramebufferFetchBarrierEXT"); +} +static void load_GL_EXT_shader_image_load_store(GLADloadproc load) { + if(!GLAD_GL_EXT_shader_image_load_store) return; + glad_glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)load("glBindImageTextureEXT"); + glad_glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)load("glMemoryBarrierEXT"); +} +static void load_GL_EXT_stencil_clear_tag(GLADloadproc load) { + if(!GLAD_GL_EXT_stencil_clear_tag) return; + glad_glStencilClearTagEXT = (PFNGLSTENCILCLEARTAGEXTPROC)load("glStencilClearTagEXT"); +} +static void load_GL_EXT_stencil_two_side(GLADloadproc load) { + if(!GLAD_GL_EXT_stencil_two_side) return; + glad_glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)load("glActiveStencilFaceEXT"); +} +static void load_GL_EXT_subtexture(GLADloadproc load) { + if(!GLAD_GL_EXT_subtexture) return; + glad_glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)load("glTexSubImage1DEXT"); + glad_glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)load("glTexSubImage2DEXT"); +} +static void load_GL_EXT_texture3D(GLADloadproc load) { + if(!GLAD_GL_EXT_texture3D) return; + glad_glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)load("glTexImage3DEXT"); + glad_glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)load("glTexSubImage3DEXT"); +} +static void load_GL_EXT_texture_array(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_array) return; + glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); +} +static void load_GL_EXT_texture_buffer_object(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_buffer_object) return; + glad_glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)load("glTexBufferEXT"); +} +static void load_GL_EXT_texture_integer(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_integer) return; + glad_glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)load("glTexParameterIivEXT"); + glad_glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)load("glTexParameterIuivEXT"); + glad_glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)load("glGetTexParameterIivEXT"); + glad_glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)load("glGetTexParameterIuivEXT"); + glad_glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)load("glClearColorIiEXT"); + glad_glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)load("glClearColorIuiEXT"); +} +static void load_GL_EXT_texture_object(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_object) return; + glad_glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)load("glAreTexturesResidentEXT"); + glad_glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)load("glBindTextureEXT"); + glad_glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)load("glDeleteTexturesEXT"); + glad_glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)load("glGenTexturesEXT"); + glad_glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)load("glIsTextureEXT"); + glad_glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)load("glPrioritizeTexturesEXT"); +} +static void load_GL_EXT_texture_perturb_normal(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_perturb_normal) return; + glad_glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)load("glTextureNormalEXT"); +} +static void load_GL_EXT_timer_query(GLADloadproc load) { + if(!GLAD_GL_EXT_timer_query) return; + glad_glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)load("glGetQueryObjecti64vEXT"); + glad_glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)load("glGetQueryObjectui64vEXT"); +} +static void load_GL_EXT_transform_feedback(GLADloadproc load) { + if(!GLAD_GL_EXT_transform_feedback) return; + glad_glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)load("glBeginTransformFeedbackEXT"); + glad_glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)load("glEndTransformFeedbackEXT"); + glad_glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)load("glBindBufferRangeEXT"); + glad_glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)load("glBindBufferOffsetEXT"); + glad_glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)load("glBindBufferBaseEXT"); + glad_glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)load("glTransformFeedbackVaryingsEXT"); + glad_glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)load("glGetTransformFeedbackVaryingEXT"); +} +static void load_GL_EXT_vertex_array(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_array) return; + glad_glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)load("glArrayElementEXT"); + glad_glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)load("glColorPointerEXT"); + glad_glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)load("glDrawArraysEXT"); + glad_glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)load("glEdgeFlagPointerEXT"); + glad_glGetPointervEXT = (PFNGLGETPOINTERVEXTPROC)load("glGetPointervEXT"); + glad_glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)load("glIndexPointerEXT"); + glad_glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)load("glNormalPointerEXT"); + glad_glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)load("glTexCoordPointerEXT"); + glad_glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)load("glVertexPointerEXT"); +} +static void load_GL_EXT_vertex_attrib_64bit(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_attrib_64bit) return; + glad_glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)load("glVertexAttribL1dEXT"); + glad_glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)load("glVertexAttribL2dEXT"); + glad_glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)load("glVertexAttribL3dEXT"); + glad_glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)load("glVertexAttribL4dEXT"); + glad_glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)load("glVertexAttribL1dvEXT"); + glad_glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)load("glVertexAttribL2dvEXT"); + glad_glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)load("glVertexAttribL3dvEXT"); + glad_glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)load("glVertexAttribL4dvEXT"); + glad_glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)load("glVertexAttribLPointerEXT"); + glad_glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)load("glGetVertexAttribLdvEXT"); +} +static void load_GL_EXT_vertex_shader(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_shader) return; + glad_glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)load("glBeginVertexShaderEXT"); + glad_glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)load("glEndVertexShaderEXT"); + glad_glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)load("glBindVertexShaderEXT"); + glad_glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)load("glGenVertexShadersEXT"); + glad_glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)load("glDeleteVertexShaderEXT"); + glad_glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)load("glShaderOp1EXT"); + glad_glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)load("glShaderOp2EXT"); + glad_glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)load("glShaderOp3EXT"); + glad_glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)load("glSwizzleEXT"); + glad_glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)load("glWriteMaskEXT"); + glad_glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)load("glInsertComponentEXT"); + glad_glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)load("glExtractComponentEXT"); + glad_glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)load("glGenSymbolsEXT"); + glad_glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)load("glSetInvariantEXT"); + glad_glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)load("glSetLocalConstantEXT"); + glad_glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)load("glVariantbvEXT"); + glad_glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)load("glVariantsvEXT"); + glad_glVariantivEXT = (PFNGLVARIANTIVEXTPROC)load("glVariantivEXT"); + glad_glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)load("glVariantfvEXT"); + glad_glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)load("glVariantdvEXT"); + glad_glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)load("glVariantubvEXT"); + glad_glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)load("glVariantusvEXT"); + glad_glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)load("glVariantuivEXT"); + glad_glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)load("glVariantPointerEXT"); + glad_glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)load("glEnableVariantClientStateEXT"); + glad_glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)load("glDisableVariantClientStateEXT"); + glad_glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)load("glBindLightParameterEXT"); + glad_glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)load("glBindMaterialParameterEXT"); + glad_glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)load("glBindTexGenParameterEXT"); + glad_glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)load("glBindTextureUnitParameterEXT"); + glad_glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)load("glBindParameterEXT"); + glad_glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)load("glIsVariantEnabledEXT"); + glad_glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)load("glGetVariantBooleanvEXT"); + glad_glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)load("glGetVariantIntegervEXT"); + glad_glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)load("glGetVariantFloatvEXT"); + glad_glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)load("glGetVariantPointervEXT"); + glad_glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)load("glGetInvariantBooleanvEXT"); + glad_glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)load("glGetInvariantIntegervEXT"); + glad_glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)load("glGetInvariantFloatvEXT"); + glad_glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)load("glGetLocalConstantBooleanvEXT"); + glad_glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)load("glGetLocalConstantIntegervEXT"); + glad_glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)load("glGetLocalConstantFloatvEXT"); +} +static void load_GL_EXT_vertex_weighting(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_weighting) return; + glad_glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)load("glVertexWeightfEXT"); + glad_glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)load("glVertexWeightfvEXT"); + glad_glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)load("glVertexWeightPointerEXT"); +} +static void load_GL_EXT_win32_keyed_mutex(GLADloadproc load) { + if(!GLAD_GL_EXT_win32_keyed_mutex) return; + glad_glAcquireKeyedMutexWin32EXT = (PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)load("glAcquireKeyedMutexWin32EXT"); + glad_glReleaseKeyedMutexWin32EXT = (PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)load("glReleaseKeyedMutexWin32EXT"); +} +static void load_GL_EXT_window_rectangles(GLADloadproc load) { + if(!GLAD_GL_EXT_window_rectangles) return; + glad_glWindowRectanglesEXT = (PFNGLWINDOWRECTANGLESEXTPROC)load("glWindowRectanglesEXT"); +} +static void load_GL_EXT_x11_sync_object(GLADloadproc load) { + if(!GLAD_GL_EXT_x11_sync_object) return; + glad_glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)load("glImportSyncEXT"); +} +static void load_GL_GREMEDY_frame_terminator(GLADloadproc load) { + if(!GLAD_GL_GREMEDY_frame_terminator) return; + glad_glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)load("glFrameTerminatorGREMEDY"); +} +static void load_GL_GREMEDY_string_marker(GLADloadproc load) { + if(!GLAD_GL_GREMEDY_string_marker) return; + glad_glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)load("glStringMarkerGREMEDY"); +} +static void load_GL_HP_image_transform(GLADloadproc load) { + if(!GLAD_GL_HP_image_transform) return; + glad_glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)load("glImageTransformParameteriHP"); + glad_glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)load("glImageTransformParameterfHP"); + glad_glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)load("glImageTransformParameterivHP"); + glad_glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)load("glImageTransformParameterfvHP"); + glad_glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)load("glGetImageTransformParameterivHP"); + glad_glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)load("glGetImageTransformParameterfvHP"); +} +static void load_GL_IBM_multimode_draw_arrays(GLADloadproc load) { + if(!GLAD_GL_IBM_multimode_draw_arrays) return; + glad_glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)load("glMultiModeDrawArraysIBM"); + glad_glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)load("glMultiModeDrawElementsIBM"); +} +static void load_GL_IBM_static_data(GLADloadproc load) { + if(!GLAD_GL_IBM_static_data) return; + glad_glFlushStaticDataIBM = (PFNGLFLUSHSTATICDATAIBMPROC)load("glFlushStaticDataIBM"); +} +static void load_GL_IBM_vertex_array_lists(GLADloadproc load) { + if(!GLAD_GL_IBM_vertex_array_lists) return; + glad_glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)load("glColorPointerListIBM"); + glad_glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)load("glSecondaryColorPointerListIBM"); + glad_glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)load("glEdgeFlagPointerListIBM"); + glad_glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)load("glFogCoordPointerListIBM"); + glad_glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)load("glIndexPointerListIBM"); + glad_glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)load("glNormalPointerListIBM"); + glad_glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)load("glTexCoordPointerListIBM"); + glad_glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)load("glVertexPointerListIBM"); +} +static void load_GL_INGR_blend_func_separate(GLADloadproc load) { + if(!GLAD_GL_INGR_blend_func_separate) return; + glad_glBlendFuncSeparateINGR = (PFNGLBLENDFUNCSEPARATEINGRPROC)load("glBlendFuncSeparateINGR"); +} +static void load_GL_INTEL_framebuffer_CMAA(GLADloadproc load) { + if(!GLAD_GL_INTEL_framebuffer_CMAA) return; + glad_glApplyFramebufferAttachmentCMAAINTEL = (PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)load("glApplyFramebufferAttachmentCMAAINTEL"); +} +static void load_GL_INTEL_map_texture(GLADloadproc load) { + if(!GLAD_GL_INTEL_map_texture) return; + glad_glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)load("glSyncTextureINTEL"); + glad_glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)load("glUnmapTexture2DINTEL"); + glad_glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)load("glMapTexture2DINTEL"); +} +static void load_GL_INTEL_parallel_arrays(GLADloadproc load) { + if(!GLAD_GL_INTEL_parallel_arrays) return; + glad_glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)load("glVertexPointervINTEL"); + glad_glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)load("glNormalPointervINTEL"); + glad_glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)load("glColorPointervINTEL"); + glad_glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)load("glTexCoordPointervINTEL"); +} +static void load_GL_INTEL_performance_query(GLADloadproc load) { + if(!GLAD_GL_INTEL_performance_query) return; + glad_glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)load("glBeginPerfQueryINTEL"); + glad_glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)load("glCreatePerfQueryINTEL"); + glad_glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)load("glDeletePerfQueryINTEL"); + glad_glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)load("glEndPerfQueryINTEL"); + glad_glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)load("glGetFirstPerfQueryIdINTEL"); + glad_glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)load("glGetNextPerfQueryIdINTEL"); + glad_glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)load("glGetPerfCounterInfoINTEL"); + glad_glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)load("glGetPerfQueryDataINTEL"); + glad_glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)load("glGetPerfQueryIdByNameINTEL"); + glad_glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)load("glGetPerfQueryInfoINTEL"); +} +static void load_GL_KHR_blend_equation_advanced(GLADloadproc load) { + if(!GLAD_GL_KHR_blend_equation_advanced) return; + glad_glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)load("glBlendBarrierKHR"); +} +static void load_GL_KHR_debug(GLADloadproc load) { + if(!GLAD_GL_KHR_debug) return; + glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)load("glDebugMessageControl"); + glad_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)load("glDebugMessageInsert"); + glad_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)load("glDebugMessageCallback"); + glad_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)load("glGetDebugMessageLog"); + glad_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)load("glPushDebugGroup"); + glad_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)load("glPopDebugGroup"); + glad_glObjectLabel = (PFNGLOBJECTLABELPROC)load("glObjectLabel"); + glad_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)load("glGetObjectLabel"); + glad_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)load("glObjectPtrLabel"); + glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)load("glGetObjectPtrLabel"); + glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); + glad_glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC)load("glDebugMessageControlKHR"); + glad_glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC)load("glDebugMessageInsertKHR"); + glad_glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)load("glDebugMessageCallbackKHR"); + glad_glGetDebugMessageLogKHR = (PFNGLGETDEBUGMESSAGELOGKHRPROC)load("glGetDebugMessageLogKHR"); + glad_glPushDebugGroupKHR = (PFNGLPUSHDEBUGGROUPKHRPROC)load("glPushDebugGroupKHR"); + glad_glPopDebugGroupKHR = (PFNGLPOPDEBUGGROUPKHRPROC)load("glPopDebugGroupKHR"); + glad_glObjectLabelKHR = (PFNGLOBJECTLABELKHRPROC)load("glObjectLabelKHR"); + glad_glGetObjectLabelKHR = (PFNGLGETOBJECTLABELKHRPROC)load("glGetObjectLabelKHR"); + glad_glObjectPtrLabelKHR = (PFNGLOBJECTPTRLABELKHRPROC)load("glObjectPtrLabelKHR"); + glad_glGetObjectPtrLabelKHR = (PFNGLGETOBJECTPTRLABELKHRPROC)load("glGetObjectPtrLabelKHR"); + glad_glGetPointervKHR = (PFNGLGETPOINTERVKHRPROC)load("glGetPointervKHR"); +} +static void load_GL_KHR_parallel_shader_compile(GLADloadproc load) { + if(!GLAD_GL_KHR_parallel_shader_compile) return; + glad_glMaxShaderCompilerThreadsKHR = (PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)load("glMaxShaderCompilerThreadsKHR"); +} +static void load_GL_KHR_robustness(GLADloadproc load) { + if(!GLAD_GL_KHR_robustness) return; + glad_glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)load("glGetGraphicsResetStatus"); + glad_glReadnPixels = (PFNGLREADNPIXELSPROC)load("glReadnPixels"); + glad_glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)load("glGetnUniformfv"); + glad_glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)load("glGetnUniformiv"); + glad_glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)load("glGetnUniformuiv"); + glad_glGetGraphicsResetStatusKHR = (PFNGLGETGRAPHICSRESETSTATUSKHRPROC)load("glGetGraphicsResetStatusKHR"); + glad_glReadnPixelsKHR = (PFNGLREADNPIXELSKHRPROC)load("glReadnPixelsKHR"); + glad_glGetnUniformfvKHR = (PFNGLGETNUNIFORMFVKHRPROC)load("glGetnUniformfvKHR"); + glad_glGetnUniformivKHR = (PFNGLGETNUNIFORMIVKHRPROC)load("glGetnUniformivKHR"); + glad_glGetnUniformuivKHR = (PFNGLGETNUNIFORMUIVKHRPROC)load("glGetnUniformuivKHR"); +} +static void load_GL_MESA_framebuffer_flip_y(GLADloadproc load) { + if(!GLAD_GL_MESA_framebuffer_flip_y) return; + glad_glFramebufferParameteriMESA = (PFNGLFRAMEBUFFERPARAMETERIMESAPROC)load("glFramebufferParameteriMESA"); + glad_glGetFramebufferParameterivMESA = (PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)load("glGetFramebufferParameterivMESA"); +} +static void load_GL_MESA_resize_buffers(GLADloadproc load) { + if(!GLAD_GL_MESA_resize_buffers) return; + glad_glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)load("glResizeBuffersMESA"); +} +static void load_GL_MESA_window_pos(GLADloadproc load) { + if(!GLAD_GL_MESA_window_pos) return; + glad_glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)load("glWindowPos2dMESA"); + glad_glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)load("glWindowPos2dvMESA"); + glad_glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)load("glWindowPos2fMESA"); + glad_glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)load("glWindowPos2fvMESA"); + glad_glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)load("glWindowPos2iMESA"); + glad_glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)load("glWindowPos2ivMESA"); + glad_glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)load("glWindowPos2sMESA"); + glad_glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)load("glWindowPos2svMESA"); + glad_glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)load("glWindowPos3dMESA"); + glad_glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)load("glWindowPos3dvMESA"); + glad_glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)load("glWindowPos3fMESA"); + glad_glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)load("glWindowPos3fvMESA"); + glad_glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)load("glWindowPos3iMESA"); + glad_glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)load("glWindowPos3ivMESA"); + glad_glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)load("glWindowPos3sMESA"); + glad_glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)load("glWindowPos3svMESA"); + glad_glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)load("glWindowPos4dMESA"); + glad_glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)load("glWindowPos4dvMESA"); + glad_glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)load("glWindowPos4fMESA"); + glad_glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)load("glWindowPos4fvMESA"); + glad_glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)load("glWindowPos4iMESA"); + glad_glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)load("glWindowPos4ivMESA"); + glad_glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)load("glWindowPos4sMESA"); + glad_glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)load("glWindowPos4svMESA"); +} +static void load_GL_NVX_conditional_render(GLADloadproc load) { + if(!GLAD_GL_NVX_conditional_render) return; + glad_glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)load("glBeginConditionalRenderNVX"); + glad_glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)load("glEndConditionalRenderNVX"); +} +static void load_GL_NVX_gpu_multicast2(GLADloadproc load) { + if(!GLAD_GL_NVX_gpu_multicast2) return; + glad_glUploadGpuMaskNVX = (PFNGLUPLOADGPUMASKNVXPROC)load("glUploadGpuMaskNVX"); + glad_glMulticastViewportArrayvNVX = (PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)load("glMulticastViewportArrayvNVX"); + glad_glMulticastViewportPositionWScaleNVX = (PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)load("glMulticastViewportPositionWScaleNVX"); + glad_glMulticastScissorArrayvNVX = (PFNGLMULTICASTSCISSORARRAYVNVXPROC)load("glMulticastScissorArrayvNVX"); + glad_glAsyncCopyBufferSubDataNVX = (PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)load("glAsyncCopyBufferSubDataNVX"); + glad_glAsyncCopyImageSubDataNVX = (PFNGLASYNCCOPYIMAGESUBDATANVXPROC)load("glAsyncCopyImageSubDataNVX"); +} +static void load_GL_NVX_linked_gpu_multicast(GLADloadproc load) { + if(!GLAD_GL_NVX_linked_gpu_multicast) return; + glad_glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)load("glLGPUNamedBufferSubDataNVX"); + glad_glLGPUCopyImageSubDataNVX = (PFNGLLGPUCOPYIMAGESUBDATANVXPROC)load("glLGPUCopyImageSubDataNVX"); + glad_glLGPUInterlockNVX = (PFNGLLGPUINTERLOCKNVXPROC)load("glLGPUInterlockNVX"); +} +static void load_GL_NVX_progress_fence(GLADloadproc load) { + if(!GLAD_GL_NVX_progress_fence) return; + glad_glCreateProgressFenceNVX = (PFNGLCREATEPROGRESSFENCENVXPROC)load("glCreateProgressFenceNVX"); + glad_glSignalSemaphoreui64NVX = (PFNGLSIGNALSEMAPHOREUI64NVXPROC)load("glSignalSemaphoreui64NVX"); + glad_glWaitSemaphoreui64NVX = (PFNGLWAITSEMAPHOREUI64NVXPROC)load("glWaitSemaphoreui64NVX"); + glad_glClientWaitSemaphoreui64NVX = (PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)load("glClientWaitSemaphoreui64NVX"); +} +static void load_GL_NV_alpha_to_coverage_dither_control(GLADloadproc load) { + if(!GLAD_GL_NV_alpha_to_coverage_dither_control) return; + glad_glAlphaToCoverageDitherControlNV = (PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)load("glAlphaToCoverageDitherControlNV"); +} +static void load_GL_NV_bindless_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)load("glMultiDrawArraysIndirectBindlessNV"); + glad_glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)load("glMultiDrawElementsIndirectBindlessNV"); +} +static void load_GL_NV_bindless_multi_draw_indirect_count(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_multi_draw_indirect_count) return; + glad_glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawArraysIndirectBindlessCountNV"); + glad_glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawElementsIndirectBindlessCountNV"); +} +static void load_GL_NV_bindless_texture(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_texture) return; + glad_glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)load("glGetTextureHandleNV"); + glad_glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)load("glGetTextureSamplerHandleNV"); + glad_glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)load("glMakeTextureHandleResidentNV"); + glad_glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)load("glMakeTextureHandleNonResidentNV"); + glad_glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)load("glGetImageHandleNV"); + glad_glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)load("glMakeImageHandleResidentNV"); + glad_glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)load("glMakeImageHandleNonResidentNV"); + glad_glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)load("glUniformHandleui64NV"); + glad_glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)load("glUniformHandleui64vNV"); + glad_glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)load("glProgramUniformHandleui64NV"); + glad_glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)load("glProgramUniformHandleui64vNV"); + glad_glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)load("glIsTextureHandleResidentNV"); + glad_glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)load("glIsImageHandleResidentNV"); +} +static void load_GL_NV_blend_equation_advanced(GLADloadproc load) { + if(!GLAD_GL_NV_blend_equation_advanced) return; + glad_glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)load("glBlendParameteriNV"); + glad_glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)load("glBlendBarrierNV"); +} +static void load_GL_NV_clip_space_w_scaling(GLADloadproc load) { + if(!GLAD_GL_NV_clip_space_w_scaling) return; + glad_glViewportPositionWScaleNV = (PFNGLVIEWPORTPOSITIONWSCALENVPROC)load("glViewportPositionWScaleNV"); +} +static void load_GL_NV_command_list(GLADloadproc load) { + if(!GLAD_GL_NV_command_list) return; + glad_glCreateStatesNV = (PFNGLCREATESTATESNVPROC)load("glCreateStatesNV"); + glad_glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)load("glDeleteStatesNV"); + glad_glIsStateNV = (PFNGLISSTATENVPROC)load("glIsStateNV"); + glad_glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)load("glStateCaptureNV"); + glad_glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)load("glGetCommandHeaderNV"); + glad_glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)load("glGetStageIndexNV"); + glad_glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)load("glDrawCommandsNV"); + glad_glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)load("glDrawCommandsAddressNV"); + glad_glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)load("glDrawCommandsStatesNV"); + glad_glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)load("glDrawCommandsStatesAddressNV"); + glad_glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)load("glCreateCommandListsNV"); + glad_glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)load("glDeleteCommandListsNV"); + glad_glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)load("glIsCommandListNV"); + glad_glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)load("glListDrawCommandsStatesClientNV"); + glad_glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)load("glCommandListSegmentsNV"); + glad_glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)load("glCompileCommandListNV"); + glad_glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)load("glCallCommandListNV"); +} +static void load_GL_NV_conditional_render(GLADloadproc load) { + if(!GLAD_GL_NV_conditional_render) return; + glad_glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)load("glBeginConditionalRenderNV"); + glad_glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)load("glEndConditionalRenderNV"); +} +static void load_GL_NV_conservative_raster(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster) return; + glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)load("glSubpixelPrecisionBiasNV"); +} +static void load_GL_NV_conservative_raster_dilate(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster_dilate) return; + glad_glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)load("glConservativeRasterParameterfNV"); +} +static void load_GL_NV_conservative_raster_pre_snap_triangles(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster_pre_snap_triangles) return; + glad_glConservativeRasterParameteriNV = (PFNGLCONSERVATIVERASTERPARAMETERINVPROC)load("glConservativeRasterParameteriNV"); +} +static void load_GL_NV_copy_image(GLADloadproc load) { + if(!GLAD_GL_NV_copy_image) return; + glad_glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)load("glCopyImageSubDataNV"); +} +static void load_GL_NV_depth_buffer_float(GLADloadproc load) { + if(!GLAD_GL_NV_depth_buffer_float) return; + glad_glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)load("glDepthRangedNV"); + glad_glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)load("glClearDepthdNV"); + glad_glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)load("glDepthBoundsdNV"); +} +static void load_GL_NV_draw_texture(GLADloadproc load) { + if(!GLAD_GL_NV_draw_texture) return; + glad_glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)load("glDrawTextureNV"); +} +static void load_GL_NV_draw_vulkan_image(GLADloadproc load) { + if(!GLAD_GL_NV_draw_vulkan_image) return; + glad_glDrawVkImageNV = (PFNGLDRAWVKIMAGENVPROC)load("glDrawVkImageNV"); + glad_glGetVkProcAddrNV = (PFNGLGETVKPROCADDRNVPROC)load("glGetVkProcAddrNV"); + glad_glWaitVkSemaphoreNV = (PFNGLWAITVKSEMAPHORENVPROC)load("glWaitVkSemaphoreNV"); + glad_glSignalVkSemaphoreNV = (PFNGLSIGNALVKSEMAPHORENVPROC)load("glSignalVkSemaphoreNV"); + glad_glSignalVkFenceNV = (PFNGLSIGNALVKFENCENVPROC)load("glSignalVkFenceNV"); +} +static void load_GL_NV_evaluators(GLADloadproc load) { + if(!GLAD_GL_NV_evaluators) return; + glad_glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)load("glMapControlPointsNV"); + glad_glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)load("glMapParameterivNV"); + glad_glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)load("glMapParameterfvNV"); + glad_glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)load("glGetMapControlPointsNV"); + glad_glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)load("glGetMapParameterivNV"); + glad_glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)load("glGetMapParameterfvNV"); + glad_glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)load("glGetMapAttribParameterivNV"); + glad_glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)load("glGetMapAttribParameterfvNV"); + glad_glEvalMapsNV = (PFNGLEVALMAPSNVPROC)load("glEvalMapsNV"); +} +static void load_GL_NV_explicit_multisample(GLADloadproc load) { + if(!GLAD_GL_NV_explicit_multisample) return; + glad_glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)load("glGetMultisamplefvNV"); + glad_glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)load("glSampleMaskIndexedNV"); + glad_glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)load("glTexRenderbufferNV"); +} +static void load_GL_NV_fence(GLADloadproc load) { + if(!GLAD_GL_NV_fence) return; + glad_glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)load("glDeleteFencesNV"); + glad_glGenFencesNV = (PFNGLGENFENCESNVPROC)load("glGenFencesNV"); + glad_glIsFenceNV = (PFNGLISFENCENVPROC)load("glIsFenceNV"); + glad_glTestFenceNV = (PFNGLTESTFENCENVPROC)load("glTestFenceNV"); + glad_glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)load("glGetFenceivNV"); + glad_glFinishFenceNV = (PFNGLFINISHFENCENVPROC)load("glFinishFenceNV"); + glad_glSetFenceNV = (PFNGLSETFENCENVPROC)load("glSetFenceNV"); +} +static void load_GL_NV_fragment_coverage_to_color(GLADloadproc load) { + if(!GLAD_GL_NV_fragment_coverage_to_color) return; + glad_glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)load("glFragmentCoverageColorNV"); +} +static void load_GL_NV_fragment_program(GLADloadproc load) { + if(!GLAD_GL_NV_fragment_program) return; + glad_glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)load("glProgramNamedParameter4fNV"); + glad_glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)load("glProgramNamedParameter4fvNV"); + glad_glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)load("glProgramNamedParameter4dNV"); + glad_glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)load("glProgramNamedParameter4dvNV"); + glad_glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)load("glGetProgramNamedParameterfvNV"); + glad_glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)load("glGetProgramNamedParameterdvNV"); +} +static void load_GL_NV_framebuffer_mixed_samples(GLADloadproc load) { + if(!GLAD_GL_NV_framebuffer_mixed_samples) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); + glad_glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)load("glCoverageModulationTableNV"); + glad_glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)load("glGetCoverageModulationTableNV"); + glad_glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)load("glCoverageModulationNV"); +} +static void load_GL_NV_framebuffer_multisample_coverage(GLADloadproc load) { + if(!GLAD_GL_NV_framebuffer_multisample_coverage) return; + glad_glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)load("glRenderbufferStorageMultisampleCoverageNV"); +} +static void load_GL_NV_geometry_program4(GLADloadproc load) { + if(!GLAD_GL_NV_geometry_program4) return; + glad_glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)load("glProgramVertexLimitNV"); + glad_glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)load("glFramebufferTextureEXT"); + glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); + glad_glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)load("glFramebufferTextureFaceEXT"); +} +static void load_GL_NV_gpu_multicast(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_multicast) return; + glad_glRenderGpuMaskNV = (PFNGLRENDERGPUMASKNVPROC)load("glRenderGpuMaskNV"); + glad_glMulticastBufferSubDataNV = (PFNGLMULTICASTBUFFERSUBDATANVPROC)load("glMulticastBufferSubDataNV"); + glad_glMulticastCopyBufferSubDataNV = (PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)load("glMulticastCopyBufferSubDataNV"); + glad_glMulticastCopyImageSubDataNV = (PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)load("glMulticastCopyImageSubDataNV"); + glad_glMulticastBlitFramebufferNV = (PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)load("glMulticastBlitFramebufferNV"); + glad_glMulticastFramebufferSampleLocationsfvNV = (PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glMulticastFramebufferSampleLocationsfvNV"); + glad_glMulticastBarrierNV = (PFNGLMULTICASTBARRIERNVPROC)load("glMulticastBarrierNV"); + glad_glMulticastWaitSyncNV = (PFNGLMULTICASTWAITSYNCNVPROC)load("glMulticastWaitSyncNV"); + glad_glMulticastGetQueryObjectivNV = (PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)load("glMulticastGetQueryObjectivNV"); + glad_glMulticastGetQueryObjectuivNV = (PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)load("glMulticastGetQueryObjectuivNV"); + glad_glMulticastGetQueryObjecti64vNV = (PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)load("glMulticastGetQueryObjecti64vNV"); + glad_glMulticastGetQueryObjectui64vNV = (PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)load("glMulticastGetQueryObjectui64vNV"); +} +static void load_GL_NV_gpu_program4(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_program4) return; + glad_glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)load("glProgramLocalParameterI4iNV"); + glad_glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)load("glProgramLocalParameterI4ivNV"); + glad_glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)load("glProgramLocalParametersI4ivNV"); + glad_glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)load("glProgramLocalParameterI4uiNV"); + glad_glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)load("glProgramLocalParameterI4uivNV"); + glad_glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)load("glProgramLocalParametersI4uivNV"); + glad_glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)load("glProgramEnvParameterI4iNV"); + glad_glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)load("glProgramEnvParameterI4ivNV"); + glad_glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)load("glProgramEnvParametersI4ivNV"); + glad_glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)load("glProgramEnvParameterI4uiNV"); + glad_glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)load("glProgramEnvParameterI4uivNV"); + glad_glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)load("glProgramEnvParametersI4uivNV"); + glad_glGetProgramLocalParameterIivNV = (PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)load("glGetProgramLocalParameterIivNV"); + glad_glGetProgramLocalParameterIuivNV = (PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)load("glGetProgramLocalParameterIuivNV"); + glad_glGetProgramEnvParameterIivNV = (PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)load("glGetProgramEnvParameterIivNV"); + glad_glGetProgramEnvParameterIuivNV = (PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)load("glGetProgramEnvParameterIuivNV"); +} +static void load_GL_NV_gpu_program5(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_program5) return; + glad_glProgramSubroutineParametersuivNV = (PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)load("glProgramSubroutineParametersuivNV"); + glad_glGetProgramSubroutineParameteruivNV = (PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)load("glGetProgramSubroutineParameteruivNV"); +} +static void load_GL_NV_gpu_shader5(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_shader5) return; + glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); + glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); + glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); + glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); + glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); + glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); + glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); + glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); + glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); + glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); + glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); + glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); + glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); + glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); + glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); + glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); + glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); + glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); + glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); + glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); + glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); + glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); + glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); + glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); + glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); + glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); + glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); + glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); + glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); + glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); + glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); + glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); + glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); +} +static void load_GL_NV_half_float(GLADloadproc load) { + if(!GLAD_GL_NV_half_float) return; + glad_glVertex2hNV = (PFNGLVERTEX2HNVPROC)load("glVertex2hNV"); + glad_glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)load("glVertex2hvNV"); + glad_glVertex3hNV = (PFNGLVERTEX3HNVPROC)load("glVertex3hNV"); + glad_glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)load("glVertex3hvNV"); + glad_glVertex4hNV = (PFNGLVERTEX4HNVPROC)load("glVertex4hNV"); + glad_glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)load("glVertex4hvNV"); + glad_glNormal3hNV = (PFNGLNORMAL3HNVPROC)load("glNormal3hNV"); + glad_glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)load("glNormal3hvNV"); + glad_glColor3hNV = (PFNGLCOLOR3HNVPROC)load("glColor3hNV"); + glad_glColor3hvNV = (PFNGLCOLOR3HVNVPROC)load("glColor3hvNV"); + glad_glColor4hNV = (PFNGLCOLOR4HNVPROC)load("glColor4hNV"); + glad_glColor4hvNV = (PFNGLCOLOR4HVNVPROC)load("glColor4hvNV"); + glad_glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)load("glTexCoord1hNV"); + glad_glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)load("glTexCoord1hvNV"); + glad_glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)load("glTexCoord2hNV"); + glad_glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)load("glTexCoord2hvNV"); + glad_glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)load("glTexCoord3hNV"); + glad_glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)load("glTexCoord3hvNV"); + glad_glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)load("glTexCoord4hNV"); + glad_glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)load("glTexCoord4hvNV"); + glad_glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)load("glMultiTexCoord1hNV"); + glad_glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)load("glMultiTexCoord1hvNV"); + glad_glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)load("glMultiTexCoord2hNV"); + glad_glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)load("glMultiTexCoord2hvNV"); + glad_glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)load("glMultiTexCoord3hNV"); + glad_glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)load("glMultiTexCoord3hvNV"); + glad_glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)load("glMultiTexCoord4hNV"); + glad_glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)load("glMultiTexCoord4hvNV"); + glad_glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)load("glFogCoordhNV"); + glad_glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)load("glFogCoordhvNV"); + glad_glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)load("glSecondaryColor3hNV"); + glad_glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)load("glSecondaryColor3hvNV"); + glad_glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)load("glVertexWeighthNV"); + glad_glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)load("glVertexWeighthvNV"); + glad_glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)load("glVertexAttrib1hNV"); + glad_glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)load("glVertexAttrib1hvNV"); + glad_glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)load("glVertexAttrib2hNV"); + glad_glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)load("glVertexAttrib2hvNV"); + glad_glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)load("glVertexAttrib3hNV"); + glad_glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)load("glVertexAttrib3hvNV"); + glad_glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)load("glVertexAttrib4hNV"); + glad_glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)load("glVertexAttrib4hvNV"); + glad_glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)load("glVertexAttribs1hvNV"); + glad_glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)load("glVertexAttribs2hvNV"); + glad_glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)load("glVertexAttribs3hvNV"); + glad_glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)load("glVertexAttribs4hvNV"); +} +static void load_GL_NV_internalformat_sample_query(GLADloadproc load) { + if(!GLAD_GL_NV_internalformat_sample_query) return; + glad_glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)load("glGetInternalformatSampleivNV"); +} +static void load_GL_NV_memory_attachment(GLADloadproc load) { + if(!GLAD_GL_NV_memory_attachment) return; + glad_glGetMemoryObjectDetachedResourcesuivNV = (PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)load("glGetMemoryObjectDetachedResourcesuivNV"); + glad_glResetMemoryObjectParameterNV = (PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)load("glResetMemoryObjectParameterNV"); + glad_glTexAttachMemoryNV = (PFNGLTEXATTACHMEMORYNVPROC)load("glTexAttachMemoryNV"); + glad_glBufferAttachMemoryNV = (PFNGLBUFFERATTACHMEMORYNVPROC)load("glBufferAttachMemoryNV"); + glad_glTextureAttachMemoryNV = (PFNGLTEXTUREATTACHMEMORYNVPROC)load("glTextureAttachMemoryNV"); + glad_glNamedBufferAttachMemoryNV = (PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)load("glNamedBufferAttachMemoryNV"); +} +static void load_GL_NV_mesh_shader(GLADloadproc load) { + if(!GLAD_GL_NV_mesh_shader) return; + glad_glDrawMeshTasksNV = (PFNGLDRAWMESHTASKSNVPROC)load("glDrawMeshTasksNV"); + glad_glDrawMeshTasksIndirectNV = (PFNGLDRAWMESHTASKSINDIRECTNVPROC)load("glDrawMeshTasksIndirectNV"); + glad_glMultiDrawMeshTasksIndirectNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)load("glMultiDrawMeshTasksIndirectNV"); + glad_glMultiDrawMeshTasksIndirectCountNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)load("glMultiDrawMeshTasksIndirectCountNV"); +} +static void load_GL_NV_occlusion_query(GLADloadproc load) { + if(!GLAD_GL_NV_occlusion_query) return; + glad_glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)load("glGenOcclusionQueriesNV"); + glad_glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)load("glDeleteOcclusionQueriesNV"); + glad_glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)load("glIsOcclusionQueryNV"); + glad_glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)load("glBeginOcclusionQueryNV"); + glad_glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)load("glEndOcclusionQueryNV"); + glad_glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)load("glGetOcclusionQueryivNV"); + glad_glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)load("glGetOcclusionQueryuivNV"); +} +static void load_GL_NV_parameter_buffer_object(GLADloadproc load) { + if(!GLAD_GL_NV_parameter_buffer_object) return; + glad_glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)load("glProgramBufferParametersfvNV"); + glad_glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)load("glProgramBufferParametersIivNV"); + glad_glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)load("glProgramBufferParametersIuivNV"); +} +static void load_GL_NV_path_rendering(GLADloadproc load) { + if(!GLAD_GL_NV_path_rendering) return; + glad_glGenPathsNV = (PFNGLGENPATHSNVPROC)load("glGenPathsNV"); + glad_glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)load("glDeletePathsNV"); + glad_glIsPathNV = (PFNGLISPATHNVPROC)load("glIsPathNV"); + glad_glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)load("glPathCommandsNV"); + glad_glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)load("glPathCoordsNV"); + glad_glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)load("glPathSubCommandsNV"); + glad_glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)load("glPathSubCoordsNV"); + glad_glPathStringNV = (PFNGLPATHSTRINGNVPROC)load("glPathStringNV"); + glad_glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)load("glPathGlyphsNV"); + glad_glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)load("glPathGlyphRangeNV"); + glad_glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)load("glWeightPathsNV"); + glad_glCopyPathNV = (PFNGLCOPYPATHNVPROC)load("glCopyPathNV"); + glad_glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)load("glInterpolatePathsNV"); + glad_glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)load("glTransformPathNV"); + glad_glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)load("glPathParameterivNV"); + glad_glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)load("glPathParameteriNV"); + glad_glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)load("glPathParameterfvNV"); + glad_glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)load("glPathParameterfNV"); + glad_glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)load("glPathDashArrayNV"); + glad_glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)load("glPathStencilFuncNV"); + glad_glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)load("glPathStencilDepthOffsetNV"); + glad_glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)load("glStencilFillPathNV"); + glad_glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)load("glStencilStrokePathNV"); + glad_glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)load("glStencilFillPathInstancedNV"); + glad_glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)load("glStencilStrokePathInstancedNV"); + glad_glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)load("glPathCoverDepthFuncNV"); + glad_glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)load("glCoverFillPathNV"); + glad_glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)load("glCoverStrokePathNV"); + glad_glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)load("glCoverFillPathInstancedNV"); + glad_glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)load("glCoverStrokePathInstancedNV"); + glad_glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)load("glGetPathParameterivNV"); + glad_glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)load("glGetPathParameterfvNV"); + glad_glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)load("glGetPathCommandsNV"); + glad_glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)load("glGetPathCoordsNV"); + glad_glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)load("glGetPathDashArrayNV"); + glad_glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)load("glGetPathMetricsNV"); + glad_glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)load("glGetPathMetricRangeNV"); + glad_glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)load("glGetPathSpacingNV"); + glad_glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)load("glIsPointInFillPathNV"); + glad_glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)load("glIsPointInStrokePathNV"); + glad_glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)load("glGetPathLengthNV"); + glad_glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)load("glPointAlongPathNV"); + glad_glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)load("glMatrixLoad3x2fNV"); + glad_glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)load("glMatrixLoad3x3fNV"); + glad_glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)load("glMatrixLoadTranspose3x3fNV"); + glad_glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)load("glMatrixMult3x2fNV"); + glad_glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)load("glMatrixMult3x3fNV"); + glad_glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)load("glMatrixMultTranspose3x3fNV"); + glad_glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)load("glStencilThenCoverFillPathNV"); + glad_glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)load("glStencilThenCoverStrokePathNV"); + glad_glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)load("glStencilThenCoverFillPathInstancedNV"); + glad_glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)load("glStencilThenCoverStrokePathInstancedNV"); + glad_glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)load("glPathGlyphIndexRangeNV"); + glad_glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)load("glPathGlyphIndexArrayNV"); + glad_glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)load("glPathMemoryGlyphIndexArrayNV"); + glad_glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)load("glProgramPathFragmentInputGenNV"); + glad_glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)load("glGetProgramResourcefvNV"); + glad_glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)load("glPathColorGenNV"); + glad_glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)load("glPathTexGenNV"); + glad_glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)load("glPathFogGenNV"); + glad_glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)load("glGetPathColorGenivNV"); + glad_glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)load("glGetPathColorGenfvNV"); + glad_glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)load("glGetPathTexGenivNV"); + glad_glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)load("glGetPathTexGenfvNV"); + glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); + glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); + glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); + glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); + glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); + glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); + glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); + glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); + glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); + glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); + glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); + glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); + glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); + glad_glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)load("glMatrixRotatefEXT"); + glad_glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)load("glMatrixRotatedEXT"); + glad_glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)load("glMatrixScalefEXT"); + glad_glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)load("glMatrixScaledEXT"); + glad_glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)load("glMatrixTranslatefEXT"); + glad_glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)load("glMatrixTranslatedEXT"); +} +static void load_GL_NV_pixel_data_range(GLADloadproc load) { + if(!GLAD_GL_NV_pixel_data_range) return; + glad_glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)load("glPixelDataRangeNV"); + glad_glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)load("glFlushPixelDataRangeNV"); +} +static void load_GL_NV_point_sprite(GLADloadproc load) { + if(!GLAD_GL_NV_point_sprite) return; + glad_glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)load("glPointParameteriNV"); + glad_glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)load("glPointParameterivNV"); +} +static void load_GL_NV_present_video(GLADloadproc load) { + if(!GLAD_GL_NV_present_video) return; + glad_glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)load("glPresentFrameKeyedNV"); + glad_glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)load("glPresentFrameDualFillNV"); + glad_glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)load("glGetVideoivNV"); + glad_glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)load("glGetVideouivNV"); + glad_glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)load("glGetVideoi64vNV"); + glad_glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)load("glGetVideoui64vNV"); +} +static void load_GL_NV_primitive_restart(GLADloadproc load) { + if(!GLAD_GL_NV_primitive_restart) return; + glad_glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)load("glPrimitiveRestartNV"); + glad_glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)load("glPrimitiveRestartIndexNV"); +} +static void load_GL_NV_query_resource(GLADloadproc load) { + if(!GLAD_GL_NV_query_resource) return; + glad_glQueryResourceNV = (PFNGLQUERYRESOURCENVPROC)load("glQueryResourceNV"); +} +static void load_GL_NV_query_resource_tag(GLADloadproc load) { + if(!GLAD_GL_NV_query_resource_tag) return; + glad_glGenQueryResourceTagNV = (PFNGLGENQUERYRESOURCETAGNVPROC)load("glGenQueryResourceTagNV"); + glad_glDeleteQueryResourceTagNV = (PFNGLDELETEQUERYRESOURCETAGNVPROC)load("glDeleteQueryResourceTagNV"); + glad_glQueryResourceTagNV = (PFNGLQUERYRESOURCETAGNVPROC)load("glQueryResourceTagNV"); +} +static void load_GL_NV_register_combiners(GLADloadproc load) { + if(!GLAD_GL_NV_register_combiners) return; + glad_glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)load("glCombinerParameterfvNV"); + glad_glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)load("glCombinerParameterfNV"); + glad_glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)load("glCombinerParameterivNV"); + glad_glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)load("glCombinerParameteriNV"); + glad_glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)load("glCombinerInputNV"); + glad_glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)load("glCombinerOutputNV"); + glad_glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)load("glFinalCombinerInputNV"); + glad_glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)load("glGetCombinerInputParameterfvNV"); + glad_glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)load("glGetCombinerInputParameterivNV"); + glad_glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)load("glGetCombinerOutputParameterfvNV"); + glad_glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)load("glGetCombinerOutputParameterivNV"); + glad_glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)load("glGetFinalCombinerInputParameterfvNV"); + glad_glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)load("glGetFinalCombinerInputParameterivNV"); +} +static void load_GL_NV_register_combiners2(GLADloadproc load) { + if(!GLAD_GL_NV_register_combiners2) return; + glad_glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)load("glCombinerStageParameterfvNV"); + glad_glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)load("glGetCombinerStageParameterfvNV"); +} +static void load_GL_NV_sample_locations(GLADloadproc load) { + if(!GLAD_GL_NV_sample_locations) return; + glad_glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glFramebufferSampleLocationsfvNV"); + glad_glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glNamedFramebufferSampleLocationsfvNV"); + glad_glResolveDepthValuesNV = (PFNGLRESOLVEDEPTHVALUESNVPROC)load("glResolveDepthValuesNV"); +} +static void load_GL_NV_scissor_exclusive(GLADloadproc load) { + if(!GLAD_GL_NV_scissor_exclusive) return; + glad_glScissorExclusiveNV = (PFNGLSCISSOREXCLUSIVENVPROC)load("glScissorExclusiveNV"); + glad_glScissorExclusiveArrayvNV = (PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)load("glScissorExclusiveArrayvNV"); +} +static void load_GL_NV_shader_buffer_load(GLADloadproc load) { + if(!GLAD_GL_NV_shader_buffer_load) return; + glad_glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)load("glMakeBufferResidentNV"); + glad_glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)load("glMakeBufferNonResidentNV"); + glad_glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)load("glIsBufferResidentNV"); + glad_glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)load("glMakeNamedBufferResidentNV"); + glad_glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)load("glMakeNamedBufferNonResidentNV"); + glad_glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)load("glIsNamedBufferResidentNV"); + glad_glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)load("glGetBufferParameterui64vNV"); + glad_glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)load("glGetNamedBufferParameterui64vNV"); + glad_glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)load("glGetIntegerui64vNV"); + glad_glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)load("glUniformui64NV"); + glad_glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)load("glUniformui64vNV"); + glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); + glad_glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)load("glProgramUniformui64NV"); + glad_glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)load("glProgramUniformui64vNV"); +} +static void load_GL_NV_shading_rate_image(GLADloadproc load) { + if(!GLAD_GL_NV_shading_rate_image) return; + glad_glBindShadingRateImageNV = (PFNGLBINDSHADINGRATEIMAGENVPROC)load("glBindShadingRateImageNV"); + glad_glGetShadingRateImagePaletteNV = (PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)load("glGetShadingRateImagePaletteNV"); + glad_glGetShadingRateSampleLocationivNV = (PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)load("glGetShadingRateSampleLocationivNV"); + glad_glShadingRateImageBarrierNV = (PFNGLSHADINGRATEIMAGEBARRIERNVPROC)load("glShadingRateImageBarrierNV"); + glad_glShadingRateImageBarrierNV = (PFNGLSHADINGRATEIMAGEBARRIERNVPROC)load("glShadingRateImageBarrierNV"); + glad_glShadingRateImagePaletteNV = (PFNGLSHADINGRATEIMAGEPALETTENVPROC)load("glShadingRateImagePaletteNV"); + glad_glShadingRateSampleOrderNV = (PFNGLSHADINGRATESAMPLEORDERNVPROC)load("glShadingRateSampleOrderNV"); + glad_glShadingRateSampleOrderCustomNV = (PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)load("glShadingRateSampleOrderCustomNV"); +} +static void load_GL_NV_texture_barrier(GLADloadproc load) { + if(!GLAD_GL_NV_texture_barrier) return; + glad_glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)load("glTextureBarrierNV"); +} +static void load_GL_NV_texture_multisample(GLADloadproc load) { + if(!GLAD_GL_NV_texture_multisample) return; + glad_glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTexImage2DMultisampleCoverageNV"); + glad_glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTexImage3DMultisampleCoverageNV"); + glad_glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)load("glTextureImage2DMultisampleNV"); + glad_glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)load("glTextureImage3DMultisampleNV"); + glad_glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTextureImage2DMultisampleCoverageNV"); + glad_glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTextureImage3DMultisampleCoverageNV"); +} +static void load_GL_NV_transform_feedback(GLADloadproc load) { + if(!GLAD_GL_NV_transform_feedback) return; + glad_glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)load("glBeginTransformFeedbackNV"); + glad_glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)load("glEndTransformFeedbackNV"); + glad_glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)load("glTransformFeedbackAttribsNV"); + glad_glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)load("glBindBufferRangeNV"); + glad_glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)load("glBindBufferOffsetNV"); + glad_glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)load("glBindBufferBaseNV"); + glad_glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)load("glTransformFeedbackVaryingsNV"); + glad_glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)load("glActiveVaryingNV"); + glad_glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)load("glGetVaryingLocationNV"); + glad_glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)load("glGetActiveVaryingNV"); + glad_glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)load("glGetTransformFeedbackVaryingNV"); + glad_glTransformFeedbackStreamAttribsNV = (PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)load("glTransformFeedbackStreamAttribsNV"); +} +static void load_GL_NV_transform_feedback2(GLADloadproc load) { + if(!GLAD_GL_NV_transform_feedback2) return; + glad_glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)load("glBindTransformFeedbackNV"); + glad_glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)load("glDeleteTransformFeedbacksNV"); + glad_glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)load("glGenTransformFeedbacksNV"); + glad_glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)load("glIsTransformFeedbackNV"); + glad_glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)load("glPauseTransformFeedbackNV"); + glad_glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)load("glResumeTransformFeedbackNV"); + glad_glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)load("glDrawTransformFeedbackNV"); +} +static void load_GL_NV_vdpau_interop(GLADloadproc load) { + if(!GLAD_GL_NV_vdpau_interop) return; + glad_glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)load("glVDPAUInitNV"); + glad_glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)load("glVDPAUFiniNV"); + glad_glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)load("glVDPAURegisterVideoSurfaceNV"); + glad_glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)load("glVDPAURegisterOutputSurfaceNV"); + glad_glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)load("glVDPAUIsSurfaceNV"); + glad_glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)load("glVDPAUUnregisterSurfaceNV"); + glad_glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)load("glVDPAUGetSurfaceivNV"); + glad_glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)load("glVDPAUSurfaceAccessNV"); + glad_glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)load("glVDPAUMapSurfacesNV"); + glad_glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)load("glVDPAUUnmapSurfacesNV"); +} +static void load_GL_NV_vdpau_interop2(GLADloadproc load) { + if(!GLAD_GL_NV_vdpau_interop2) return; + glad_glVDPAURegisterVideoSurfaceWithPictureStructureNV = (PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)load("glVDPAURegisterVideoSurfaceWithPictureStructureNV"); +} +static void load_GL_NV_vertex_array_range(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_array_range) return; + glad_glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)load("glFlushVertexArrayRangeNV"); + glad_glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)load("glVertexArrayRangeNV"); +} +static void load_GL_NV_vertex_attrib_integer_64bit(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_attrib_integer_64bit) return; + glad_glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)load("glVertexAttribL1i64NV"); + glad_glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)load("glVertexAttribL2i64NV"); + glad_glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)load("glVertexAttribL3i64NV"); + glad_glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)load("glVertexAttribL4i64NV"); + glad_glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)load("glVertexAttribL1i64vNV"); + glad_glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)load("glVertexAttribL2i64vNV"); + glad_glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)load("glVertexAttribL3i64vNV"); + glad_glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)load("glVertexAttribL4i64vNV"); + glad_glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)load("glVertexAttribL1ui64NV"); + glad_glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)load("glVertexAttribL2ui64NV"); + glad_glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)load("glVertexAttribL3ui64NV"); + glad_glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)load("glVertexAttribL4ui64NV"); + glad_glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)load("glVertexAttribL1ui64vNV"); + glad_glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)load("glVertexAttribL2ui64vNV"); + glad_glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)load("glVertexAttribL3ui64vNV"); + glad_glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)load("glVertexAttribL4ui64vNV"); + glad_glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)load("glGetVertexAttribLi64vNV"); + glad_glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)load("glGetVertexAttribLui64vNV"); + glad_glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)load("glVertexAttribLFormatNV"); +} +static void load_GL_NV_vertex_buffer_unified_memory(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_buffer_unified_memory) return; + glad_glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)load("glBufferAddressRangeNV"); + glad_glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)load("glVertexFormatNV"); + glad_glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)load("glNormalFormatNV"); + glad_glColorFormatNV = (PFNGLCOLORFORMATNVPROC)load("glColorFormatNV"); + glad_glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)load("glIndexFormatNV"); + glad_glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)load("glTexCoordFormatNV"); + glad_glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)load("glEdgeFlagFormatNV"); + glad_glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)load("glSecondaryColorFormatNV"); + glad_glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)load("glFogCoordFormatNV"); + glad_glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)load("glVertexAttribFormatNV"); + glad_glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)load("glVertexAttribIFormatNV"); + glad_glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)load("glGetIntegerui64i_vNV"); +} +static void load_GL_NV_vertex_program(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_program) return; + glad_glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)load("glAreProgramsResidentNV"); + glad_glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)load("glBindProgramNV"); + glad_glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)load("glDeleteProgramsNV"); + glad_glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)load("glExecuteProgramNV"); + glad_glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)load("glGenProgramsNV"); + glad_glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)load("glGetProgramParameterdvNV"); + glad_glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)load("glGetProgramParameterfvNV"); + glad_glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)load("glGetProgramivNV"); + glad_glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)load("glGetProgramStringNV"); + glad_glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)load("glGetTrackMatrixivNV"); + glad_glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)load("glGetVertexAttribdvNV"); + glad_glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)load("glGetVertexAttribfvNV"); + glad_glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)load("glGetVertexAttribivNV"); + glad_glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)load("glGetVertexAttribPointervNV"); + glad_glIsProgramNV = (PFNGLISPROGRAMNVPROC)load("glIsProgramNV"); + glad_glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)load("glLoadProgramNV"); + glad_glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)load("glProgramParameter4dNV"); + glad_glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)load("glProgramParameter4dvNV"); + glad_glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)load("glProgramParameter4fNV"); + glad_glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)load("glProgramParameter4fvNV"); + glad_glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)load("glProgramParameters4dvNV"); + glad_glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)load("glProgramParameters4fvNV"); + glad_glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)load("glRequestResidentProgramsNV"); + glad_glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)load("glTrackMatrixNV"); + glad_glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)load("glVertexAttribPointerNV"); + glad_glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)load("glVertexAttrib1dNV"); + glad_glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)load("glVertexAttrib1dvNV"); + glad_glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)load("glVertexAttrib1fNV"); + glad_glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)load("glVertexAttrib1fvNV"); + glad_glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)load("glVertexAttrib1sNV"); + glad_glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)load("glVertexAttrib1svNV"); + glad_glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)load("glVertexAttrib2dNV"); + glad_glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)load("glVertexAttrib2dvNV"); + glad_glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)load("glVertexAttrib2fNV"); + glad_glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)load("glVertexAttrib2fvNV"); + glad_glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)load("glVertexAttrib2sNV"); + glad_glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)load("glVertexAttrib2svNV"); + glad_glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)load("glVertexAttrib3dNV"); + glad_glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)load("glVertexAttrib3dvNV"); + glad_glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)load("glVertexAttrib3fNV"); + glad_glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)load("glVertexAttrib3fvNV"); + glad_glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)load("glVertexAttrib3sNV"); + glad_glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)load("glVertexAttrib3svNV"); + glad_glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)load("glVertexAttrib4dNV"); + glad_glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)load("glVertexAttrib4dvNV"); + glad_glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)load("glVertexAttrib4fNV"); + glad_glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)load("glVertexAttrib4fvNV"); + glad_glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)load("glVertexAttrib4sNV"); + glad_glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)load("glVertexAttrib4svNV"); + glad_glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)load("glVertexAttrib4ubNV"); + glad_glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)load("glVertexAttrib4ubvNV"); + glad_glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)load("glVertexAttribs1dvNV"); + glad_glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)load("glVertexAttribs1fvNV"); + glad_glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)load("glVertexAttribs1svNV"); + glad_glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)load("glVertexAttribs2dvNV"); + glad_glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)load("glVertexAttribs2fvNV"); + glad_glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)load("glVertexAttribs2svNV"); + glad_glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)load("glVertexAttribs3dvNV"); + glad_glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)load("glVertexAttribs3fvNV"); + glad_glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)load("glVertexAttribs3svNV"); + glad_glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)load("glVertexAttribs4dvNV"); + glad_glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)load("glVertexAttribs4fvNV"); + glad_glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)load("glVertexAttribs4svNV"); + glad_glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)load("glVertexAttribs4ubvNV"); +} +static void load_GL_NV_vertex_program4(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_program4) return; + glad_glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)load("glVertexAttribI1iEXT"); + glad_glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)load("glVertexAttribI2iEXT"); + glad_glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)load("glVertexAttribI3iEXT"); + glad_glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)load("glVertexAttribI4iEXT"); + glad_glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)load("glVertexAttribI1uiEXT"); + glad_glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)load("glVertexAttribI2uiEXT"); + glad_glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)load("glVertexAttribI3uiEXT"); + glad_glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)load("glVertexAttribI4uiEXT"); + glad_glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)load("glVertexAttribI1ivEXT"); + glad_glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)load("glVertexAttribI2ivEXT"); + glad_glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)load("glVertexAttribI3ivEXT"); + glad_glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)load("glVertexAttribI4ivEXT"); + glad_glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)load("glVertexAttribI1uivEXT"); + glad_glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)load("glVertexAttribI2uivEXT"); + glad_glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)load("glVertexAttribI3uivEXT"); + glad_glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)load("glVertexAttribI4uivEXT"); + glad_glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)load("glVertexAttribI4bvEXT"); + glad_glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)load("glVertexAttribI4svEXT"); + glad_glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)load("glVertexAttribI4ubvEXT"); + glad_glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)load("glVertexAttribI4usvEXT"); + glad_glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)load("glVertexAttribIPointerEXT"); + glad_glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)load("glGetVertexAttribIivEXT"); + glad_glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)load("glGetVertexAttribIuivEXT"); +} +static void load_GL_NV_video_capture(GLADloadproc load) { + if(!GLAD_GL_NV_video_capture) return; + glad_glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)load("glBeginVideoCaptureNV"); + glad_glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)load("glBindVideoCaptureStreamBufferNV"); + glad_glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)load("glBindVideoCaptureStreamTextureNV"); + glad_glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)load("glEndVideoCaptureNV"); + glad_glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)load("glGetVideoCaptureivNV"); + glad_glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)load("glGetVideoCaptureStreamivNV"); + glad_glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)load("glGetVideoCaptureStreamfvNV"); + glad_glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)load("glGetVideoCaptureStreamdvNV"); + glad_glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)load("glVideoCaptureNV"); + glad_glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)load("glVideoCaptureStreamParameterivNV"); + glad_glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)load("glVideoCaptureStreamParameterfvNV"); + glad_glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)load("glVideoCaptureStreamParameterdvNV"); +} +static void load_GL_NV_viewport_swizzle(GLADloadproc load) { + if(!GLAD_GL_NV_viewport_swizzle) return; + glad_glViewportSwizzleNV = (PFNGLVIEWPORTSWIZZLENVPROC)load("glViewportSwizzleNV"); +} +static void load_GL_OES_byte_coordinates(GLADloadproc load) { + if(!GLAD_GL_OES_byte_coordinates) return; + glad_glMultiTexCoord1bOES = (PFNGLMULTITEXCOORD1BOESPROC)load("glMultiTexCoord1bOES"); + glad_glMultiTexCoord1bvOES = (PFNGLMULTITEXCOORD1BVOESPROC)load("glMultiTexCoord1bvOES"); + glad_glMultiTexCoord2bOES = (PFNGLMULTITEXCOORD2BOESPROC)load("glMultiTexCoord2bOES"); + glad_glMultiTexCoord2bvOES = (PFNGLMULTITEXCOORD2BVOESPROC)load("glMultiTexCoord2bvOES"); + glad_glMultiTexCoord3bOES = (PFNGLMULTITEXCOORD3BOESPROC)load("glMultiTexCoord3bOES"); + glad_glMultiTexCoord3bvOES = (PFNGLMULTITEXCOORD3BVOESPROC)load("glMultiTexCoord3bvOES"); + glad_glMultiTexCoord4bOES = (PFNGLMULTITEXCOORD4BOESPROC)load("glMultiTexCoord4bOES"); + glad_glMultiTexCoord4bvOES = (PFNGLMULTITEXCOORD4BVOESPROC)load("glMultiTexCoord4bvOES"); + glad_glTexCoord1bOES = (PFNGLTEXCOORD1BOESPROC)load("glTexCoord1bOES"); + glad_glTexCoord1bvOES = (PFNGLTEXCOORD1BVOESPROC)load("glTexCoord1bvOES"); + glad_glTexCoord2bOES = (PFNGLTEXCOORD2BOESPROC)load("glTexCoord2bOES"); + glad_glTexCoord2bvOES = (PFNGLTEXCOORD2BVOESPROC)load("glTexCoord2bvOES"); + glad_glTexCoord3bOES = (PFNGLTEXCOORD3BOESPROC)load("glTexCoord3bOES"); + glad_glTexCoord3bvOES = (PFNGLTEXCOORD3BVOESPROC)load("glTexCoord3bvOES"); + glad_glTexCoord4bOES = (PFNGLTEXCOORD4BOESPROC)load("glTexCoord4bOES"); + glad_glTexCoord4bvOES = (PFNGLTEXCOORD4BVOESPROC)load("glTexCoord4bvOES"); + glad_glVertex2bOES = (PFNGLVERTEX2BOESPROC)load("glVertex2bOES"); + glad_glVertex2bvOES = (PFNGLVERTEX2BVOESPROC)load("glVertex2bvOES"); + glad_glVertex3bOES = (PFNGLVERTEX3BOESPROC)load("glVertex3bOES"); + glad_glVertex3bvOES = (PFNGLVERTEX3BVOESPROC)load("glVertex3bvOES"); + glad_glVertex4bOES = (PFNGLVERTEX4BOESPROC)load("glVertex4bOES"); + glad_glVertex4bvOES = (PFNGLVERTEX4BVOESPROC)load("glVertex4bvOES"); +} +static void load_GL_OES_fixed_point(GLADloadproc load) { + if(!GLAD_GL_OES_fixed_point) return; + glad_glAlphaFuncxOES = (PFNGLALPHAFUNCXOESPROC)load("glAlphaFuncxOES"); + glad_glClearColorxOES = (PFNGLCLEARCOLORXOESPROC)load("glClearColorxOES"); + glad_glClearDepthxOES = (PFNGLCLEARDEPTHXOESPROC)load("glClearDepthxOES"); + glad_glClipPlanexOES = (PFNGLCLIPPLANEXOESPROC)load("glClipPlanexOES"); + glad_glColor4xOES = (PFNGLCOLOR4XOESPROC)load("glColor4xOES"); + glad_glDepthRangexOES = (PFNGLDEPTHRANGEXOESPROC)load("glDepthRangexOES"); + glad_glFogxOES = (PFNGLFOGXOESPROC)load("glFogxOES"); + glad_glFogxvOES = (PFNGLFOGXVOESPROC)load("glFogxvOES"); + glad_glFrustumxOES = (PFNGLFRUSTUMXOESPROC)load("glFrustumxOES"); + glad_glGetClipPlanexOES = (PFNGLGETCLIPPLANEXOESPROC)load("glGetClipPlanexOES"); + glad_glGetFixedvOES = (PFNGLGETFIXEDVOESPROC)load("glGetFixedvOES"); + glad_glGetTexEnvxvOES = (PFNGLGETTEXENVXVOESPROC)load("glGetTexEnvxvOES"); + glad_glGetTexParameterxvOES = (PFNGLGETTEXPARAMETERXVOESPROC)load("glGetTexParameterxvOES"); + glad_glLightModelxOES = (PFNGLLIGHTMODELXOESPROC)load("glLightModelxOES"); + glad_glLightModelxvOES = (PFNGLLIGHTMODELXVOESPROC)load("glLightModelxvOES"); + glad_glLightxOES = (PFNGLLIGHTXOESPROC)load("glLightxOES"); + glad_glLightxvOES = (PFNGLLIGHTXVOESPROC)load("glLightxvOES"); + glad_glLineWidthxOES = (PFNGLLINEWIDTHXOESPROC)load("glLineWidthxOES"); + glad_glLoadMatrixxOES = (PFNGLLOADMATRIXXOESPROC)load("glLoadMatrixxOES"); + glad_glMaterialxOES = (PFNGLMATERIALXOESPROC)load("glMaterialxOES"); + glad_glMaterialxvOES = (PFNGLMATERIALXVOESPROC)load("glMaterialxvOES"); + glad_glMultMatrixxOES = (PFNGLMULTMATRIXXOESPROC)load("glMultMatrixxOES"); + glad_glMultiTexCoord4xOES = (PFNGLMULTITEXCOORD4XOESPROC)load("glMultiTexCoord4xOES"); + glad_glNormal3xOES = (PFNGLNORMAL3XOESPROC)load("glNormal3xOES"); + glad_glOrthoxOES = (PFNGLORTHOXOESPROC)load("glOrthoxOES"); + glad_glPointParameterxvOES = (PFNGLPOINTPARAMETERXVOESPROC)load("glPointParameterxvOES"); + glad_glPointSizexOES = (PFNGLPOINTSIZEXOESPROC)load("glPointSizexOES"); + glad_glPolygonOffsetxOES = (PFNGLPOLYGONOFFSETXOESPROC)load("glPolygonOffsetxOES"); + glad_glRotatexOES = (PFNGLROTATEXOESPROC)load("glRotatexOES"); + glad_glScalexOES = (PFNGLSCALEXOESPROC)load("glScalexOES"); + glad_glTexEnvxOES = (PFNGLTEXENVXOESPROC)load("glTexEnvxOES"); + glad_glTexEnvxvOES = (PFNGLTEXENVXVOESPROC)load("glTexEnvxvOES"); + glad_glTexParameterxOES = (PFNGLTEXPARAMETERXOESPROC)load("glTexParameterxOES"); + glad_glTexParameterxvOES = (PFNGLTEXPARAMETERXVOESPROC)load("glTexParameterxvOES"); + glad_glTranslatexOES = (PFNGLTRANSLATEXOESPROC)load("glTranslatexOES"); + glad_glGetLightxvOES = (PFNGLGETLIGHTXVOESPROC)load("glGetLightxvOES"); + glad_glGetMaterialxvOES = (PFNGLGETMATERIALXVOESPROC)load("glGetMaterialxvOES"); + glad_glPointParameterxOES = (PFNGLPOINTPARAMETERXOESPROC)load("glPointParameterxOES"); + glad_glSampleCoveragexOES = (PFNGLSAMPLECOVERAGEXOESPROC)load("glSampleCoveragexOES"); + glad_glAccumxOES = (PFNGLACCUMXOESPROC)load("glAccumxOES"); + glad_glBitmapxOES = (PFNGLBITMAPXOESPROC)load("glBitmapxOES"); + glad_glBlendColorxOES = (PFNGLBLENDCOLORXOESPROC)load("glBlendColorxOES"); + glad_glClearAccumxOES = (PFNGLCLEARACCUMXOESPROC)load("glClearAccumxOES"); + glad_glColor3xOES = (PFNGLCOLOR3XOESPROC)load("glColor3xOES"); + glad_glColor3xvOES = (PFNGLCOLOR3XVOESPROC)load("glColor3xvOES"); + glad_glColor4xvOES = (PFNGLCOLOR4XVOESPROC)load("glColor4xvOES"); + glad_glConvolutionParameterxOES = (PFNGLCONVOLUTIONPARAMETERXOESPROC)load("glConvolutionParameterxOES"); + glad_glConvolutionParameterxvOES = (PFNGLCONVOLUTIONPARAMETERXVOESPROC)load("glConvolutionParameterxvOES"); + glad_glEvalCoord1xOES = (PFNGLEVALCOORD1XOESPROC)load("glEvalCoord1xOES"); + glad_glEvalCoord1xvOES = (PFNGLEVALCOORD1XVOESPROC)load("glEvalCoord1xvOES"); + glad_glEvalCoord2xOES = (PFNGLEVALCOORD2XOESPROC)load("glEvalCoord2xOES"); + glad_glEvalCoord2xvOES = (PFNGLEVALCOORD2XVOESPROC)load("glEvalCoord2xvOES"); + glad_glFeedbackBufferxOES = (PFNGLFEEDBACKBUFFERXOESPROC)load("glFeedbackBufferxOES"); + glad_glGetConvolutionParameterxvOES = (PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)load("glGetConvolutionParameterxvOES"); + glad_glGetHistogramParameterxvOES = (PFNGLGETHISTOGRAMPARAMETERXVOESPROC)load("glGetHistogramParameterxvOES"); + glad_glGetLightxOES = (PFNGLGETLIGHTXOESPROC)load("glGetLightxOES"); + glad_glGetMapxvOES = (PFNGLGETMAPXVOESPROC)load("glGetMapxvOES"); + glad_glGetMaterialxOES = (PFNGLGETMATERIALXOESPROC)load("glGetMaterialxOES"); + glad_glGetPixelMapxv = (PFNGLGETPIXELMAPXVPROC)load("glGetPixelMapxv"); + glad_glGetTexGenxvOES = (PFNGLGETTEXGENXVOESPROC)load("glGetTexGenxvOES"); + glad_glGetTexLevelParameterxvOES = (PFNGLGETTEXLEVELPARAMETERXVOESPROC)load("glGetTexLevelParameterxvOES"); + glad_glIndexxOES = (PFNGLINDEXXOESPROC)load("glIndexxOES"); + glad_glIndexxvOES = (PFNGLINDEXXVOESPROC)load("glIndexxvOES"); + glad_glLoadTransposeMatrixxOES = (PFNGLLOADTRANSPOSEMATRIXXOESPROC)load("glLoadTransposeMatrixxOES"); + glad_glMap1xOES = (PFNGLMAP1XOESPROC)load("glMap1xOES"); + glad_glMap2xOES = (PFNGLMAP2XOESPROC)load("glMap2xOES"); + glad_glMapGrid1xOES = (PFNGLMAPGRID1XOESPROC)load("glMapGrid1xOES"); + glad_glMapGrid2xOES = (PFNGLMAPGRID2XOESPROC)load("glMapGrid2xOES"); + glad_glMultTransposeMatrixxOES = (PFNGLMULTTRANSPOSEMATRIXXOESPROC)load("glMultTransposeMatrixxOES"); + glad_glMultiTexCoord1xOES = (PFNGLMULTITEXCOORD1XOESPROC)load("glMultiTexCoord1xOES"); + glad_glMultiTexCoord1xvOES = (PFNGLMULTITEXCOORD1XVOESPROC)load("glMultiTexCoord1xvOES"); + glad_glMultiTexCoord2xOES = (PFNGLMULTITEXCOORD2XOESPROC)load("glMultiTexCoord2xOES"); + glad_glMultiTexCoord2xvOES = (PFNGLMULTITEXCOORD2XVOESPROC)load("glMultiTexCoord2xvOES"); + glad_glMultiTexCoord3xOES = (PFNGLMULTITEXCOORD3XOESPROC)load("glMultiTexCoord3xOES"); + glad_glMultiTexCoord3xvOES = (PFNGLMULTITEXCOORD3XVOESPROC)load("glMultiTexCoord3xvOES"); + glad_glMultiTexCoord4xvOES = (PFNGLMULTITEXCOORD4XVOESPROC)load("glMultiTexCoord4xvOES"); + glad_glNormal3xvOES = (PFNGLNORMAL3XVOESPROC)load("glNormal3xvOES"); + glad_glPassThroughxOES = (PFNGLPASSTHROUGHXOESPROC)load("glPassThroughxOES"); + glad_glPixelMapx = (PFNGLPIXELMAPXPROC)load("glPixelMapx"); + glad_glPixelStorex = (PFNGLPIXELSTOREXPROC)load("glPixelStorex"); + glad_glPixelTransferxOES = (PFNGLPIXELTRANSFERXOESPROC)load("glPixelTransferxOES"); + glad_glPixelZoomxOES = (PFNGLPIXELZOOMXOESPROC)load("glPixelZoomxOES"); + glad_glPrioritizeTexturesxOES = (PFNGLPRIORITIZETEXTURESXOESPROC)load("glPrioritizeTexturesxOES"); + glad_glRasterPos2xOES = (PFNGLRASTERPOS2XOESPROC)load("glRasterPos2xOES"); + glad_glRasterPos2xvOES = (PFNGLRASTERPOS2XVOESPROC)load("glRasterPos2xvOES"); + glad_glRasterPos3xOES = (PFNGLRASTERPOS3XOESPROC)load("glRasterPos3xOES"); + glad_glRasterPos3xvOES = (PFNGLRASTERPOS3XVOESPROC)load("glRasterPos3xvOES"); + glad_glRasterPos4xOES = (PFNGLRASTERPOS4XOESPROC)load("glRasterPos4xOES"); + glad_glRasterPos4xvOES = (PFNGLRASTERPOS4XVOESPROC)load("glRasterPos4xvOES"); + glad_glRectxOES = (PFNGLRECTXOESPROC)load("glRectxOES"); + glad_glRectxvOES = (PFNGLRECTXVOESPROC)load("glRectxvOES"); + glad_glTexCoord1xOES = (PFNGLTEXCOORD1XOESPROC)load("glTexCoord1xOES"); + glad_glTexCoord1xvOES = (PFNGLTEXCOORD1XVOESPROC)load("glTexCoord1xvOES"); + glad_glTexCoord2xOES = (PFNGLTEXCOORD2XOESPROC)load("glTexCoord2xOES"); + glad_glTexCoord2xvOES = (PFNGLTEXCOORD2XVOESPROC)load("glTexCoord2xvOES"); + glad_glTexCoord3xOES = (PFNGLTEXCOORD3XOESPROC)load("glTexCoord3xOES"); + glad_glTexCoord3xvOES = (PFNGLTEXCOORD3XVOESPROC)load("glTexCoord3xvOES"); + glad_glTexCoord4xOES = (PFNGLTEXCOORD4XOESPROC)load("glTexCoord4xOES"); + glad_glTexCoord4xvOES = (PFNGLTEXCOORD4XVOESPROC)load("glTexCoord4xvOES"); + glad_glTexGenxOES = (PFNGLTEXGENXOESPROC)load("glTexGenxOES"); + glad_glTexGenxvOES = (PFNGLTEXGENXVOESPROC)load("glTexGenxvOES"); + glad_glVertex2xOES = (PFNGLVERTEX2XOESPROC)load("glVertex2xOES"); + glad_glVertex2xvOES = (PFNGLVERTEX2XVOESPROC)load("glVertex2xvOES"); + glad_glVertex3xOES = (PFNGLVERTEX3XOESPROC)load("glVertex3xOES"); + glad_glVertex3xvOES = (PFNGLVERTEX3XVOESPROC)load("glVertex3xvOES"); + glad_glVertex4xOES = (PFNGLVERTEX4XOESPROC)load("glVertex4xOES"); + glad_glVertex4xvOES = (PFNGLVERTEX4XVOESPROC)load("glVertex4xvOES"); +} +static void load_GL_OES_query_matrix(GLADloadproc load) { + if(!GLAD_GL_OES_query_matrix) return; + glad_glQueryMatrixxOES = (PFNGLQUERYMATRIXXOESPROC)load("glQueryMatrixxOES"); +} +static void load_GL_OES_single_precision(GLADloadproc load) { + if(!GLAD_GL_OES_single_precision) return; + glad_glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)load("glClearDepthfOES"); + glad_glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)load("glClipPlanefOES"); + glad_glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)load("glDepthRangefOES"); + glad_glFrustumfOES = (PFNGLFRUSTUMFOESPROC)load("glFrustumfOES"); + glad_glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)load("glGetClipPlanefOES"); + glad_glOrthofOES = (PFNGLORTHOFOESPROC)load("glOrthofOES"); +} +static void load_GL_OVR_multiview(GLADloadproc load) { + if(!GLAD_GL_OVR_multiview) return; + glad_glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)load("glFramebufferTextureMultiviewOVR"); +} +static void load_GL_PGI_misc_hints(GLADloadproc load) { + if(!GLAD_GL_PGI_misc_hints) return; + glad_glHintPGI = (PFNGLHINTPGIPROC)load("glHintPGI"); +} +static void load_GL_SGIS_detail_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_detail_texture) return; + glad_glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)load("glDetailTexFuncSGIS"); + glad_glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)load("glGetDetailTexFuncSGIS"); +} +static void load_GL_SGIS_fog_function(GLADloadproc load) { + if(!GLAD_GL_SGIS_fog_function) return; + glad_glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)load("glFogFuncSGIS"); + glad_glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)load("glGetFogFuncSGIS"); +} +static void load_GL_SGIS_multisample(GLADloadproc load) { + if(!GLAD_GL_SGIS_multisample) return; + glad_glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)load("glSampleMaskSGIS"); + glad_glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)load("glSamplePatternSGIS"); +} +static void load_GL_SGIS_pixel_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_pixel_texture) return; + glad_glPixelTexGenParameteriSGIS = (PFNGLPIXELTEXGENPARAMETERISGISPROC)load("glPixelTexGenParameteriSGIS"); + glad_glPixelTexGenParameterivSGIS = (PFNGLPIXELTEXGENPARAMETERIVSGISPROC)load("glPixelTexGenParameterivSGIS"); + glad_glPixelTexGenParameterfSGIS = (PFNGLPIXELTEXGENPARAMETERFSGISPROC)load("glPixelTexGenParameterfSGIS"); + glad_glPixelTexGenParameterfvSGIS = (PFNGLPIXELTEXGENPARAMETERFVSGISPROC)load("glPixelTexGenParameterfvSGIS"); + glad_glGetPixelTexGenParameterivSGIS = (PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)load("glGetPixelTexGenParameterivSGIS"); + glad_glGetPixelTexGenParameterfvSGIS = (PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)load("glGetPixelTexGenParameterfvSGIS"); +} +static void load_GL_SGIS_point_parameters(GLADloadproc load) { + if(!GLAD_GL_SGIS_point_parameters) return; + glad_glPointParameterfSGIS = (PFNGLPOINTPARAMETERFSGISPROC)load("glPointParameterfSGIS"); + glad_glPointParameterfvSGIS = (PFNGLPOINTPARAMETERFVSGISPROC)load("glPointParameterfvSGIS"); +} +static void load_GL_SGIS_sharpen_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_sharpen_texture) return; + glad_glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)load("glSharpenTexFuncSGIS"); + glad_glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)load("glGetSharpenTexFuncSGIS"); +} +static void load_GL_SGIS_texture4D(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture4D) return; + glad_glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)load("glTexImage4DSGIS"); + glad_glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)load("glTexSubImage4DSGIS"); +} +static void load_GL_SGIS_texture_color_mask(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture_color_mask) return; + glad_glTextureColorMaskSGIS = (PFNGLTEXTURECOLORMASKSGISPROC)load("glTextureColorMaskSGIS"); +} +static void load_GL_SGIS_texture_filter4(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture_filter4) return; + glad_glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)load("glGetTexFilterFuncSGIS"); + glad_glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)load("glTexFilterFuncSGIS"); +} +static void load_GL_SGIX_async(GLADloadproc load) { + if(!GLAD_GL_SGIX_async) return; + glad_glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)load("glAsyncMarkerSGIX"); + glad_glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)load("glFinishAsyncSGIX"); + glad_glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)load("glPollAsyncSGIX"); + glad_glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)load("glGenAsyncMarkersSGIX"); + glad_glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)load("glDeleteAsyncMarkersSGIX"); + glad_glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)load("glIsAsyncMarkerSGIX"); +} +static void load_GL_SGIX_flush_raster(GLADloadproc load) { + if(!GLAD_GL_SGIX_flush_raster) return; + glad_glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)load("glFlushRasterSGIX"); +} +static void load_GL_SGIX_fragment_lighting(GLADloadproc load) { + if(!GLAD_GL_SGIX_fragment_lighting) return; + glad_glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)load("glFragmentColorMaterialSGIX"); + glad_glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)load("glFragmentLightfSGIX"); + glad_glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)load("glFragmentLightfvSGIX"); + glad_glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)load("glFragmentLightiSGIX"); + glad_glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)load("glFragmentLightivSGIX"); + glad_glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)load("glFragmentLightModelfSGIX"); + glad_glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)load("glFragmentLightModelfvSGIX"); + glad_glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)load("glFragmentLightModeliSGIX"); + glad_glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)load("glFragmentLightModelivSGIX"); + glad_glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)load("glFragmentMaterialfSGIX"); + glad_glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)load("glFragmentMaterialfvSGIX"); + glad_glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)load("glFragmentMaterialiSGIX"); + glad_glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)load("glFragmentMaterialivSGIX"); + glad_glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)load("glGetFragmentLightfvSGIX"); + glad_glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)load("glGetFragmentLightivSGIX"); + glad_glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)load("glGetFragmentMaterialfvSGIX"); + glad_glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)load("glGetFragmentMaterialivSGIX"); + glad_glLightEnviSGIX = (PFNGLLIGHTENVISGIXPROC)load("glLightEnviSGIX"); +} +static void load_GL_SGIX_framezoom(GLADloadproc load) { + if(!GLAD_GL_SGIX_framezoom) return; + glad_glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)load("glFrameZoomSGIX"); +} +static void load_GL_SGIX_igloo_interface(GLADloadproc load) { + if(!GLAD_GL_SGIX_igloo_interface) return; + glad_glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)load("glIglooInterfaceSGIX"); +} +static void load_GL_SGIX_instruments(GLADloadproc load) { + if(!GLAD_GL_SGIX_instruments) return; + glad_glGetInstrumentsSGIX = (PFNGLGETINSTRUMENTSSGIXPROC)load("glGetInstrumentsSGIX"); + glad_glInstrumentsBufferSGIX = (PFNGLINSTRUMENTSBUFFERSGIXPROC)load("glInstrumentsBufferSGIX"); + glad_glPollInstrumentsSGIX = (PFNGLPOLLINSTRUMENTSSGIXPROC)load("glPollInstrumentsSGIX"); + glad_glReadInstrumentsSGIX = (PFNGLREADINSTRUMENTSSGIXPROC)load("glReadInstrumentsSGIX"); + glad_glStartInstrumentsSGIX = (PFNGLSTARTINSTRUMENTSSGIXPROC)load("glStartInstrumentsSGIX"); + glad_glStopInstrumentsSGIX = (PFNGLSTOPINSTRUMENTSSGIXPROC)load("glStopInstrumentsSGIX"); +} +static void load_GL_SGIX_list_priority(GLADloadproc load) { + if(!GLAD_GL_SGIX_list_priority) return; + glad_glGetListParameterfvSGIX = (PFNGLGETLISTPARAMETERFVSGIXPROC)load("glGetListParameterfvSGIX"); + glad_glGetListParameterivSGIX = (PFNGLGETLISTPARAMETERIVSGIXPROC)load("glGetListParameterivSGIX"); + glad_glListParameterfSGIX = (PFNGLLISTPARAMETERFSGIXPROC)load("glListParameterfSGIX"); + glad_glListParameterfvSGIX = (PFNGLLISTPARAMETERFVSGIXPROC)load("glListParameterfvSGIX"); + glad_glListParameteriSGIX = (PFNGLLISTPARAMETERISGIXPROC)load("glListParameteriSGIX"); + glad_glListParameterivSGIX = (PFNGLLISTPARAMETERIVSGIXPROC)load("glListParameterivSGIX"); +} +static void load_GL_SGIX_pixel_texture(GLADloadproc load) { + if(!GLAD_GL_SGIX_pixel_texture) return; + glad_glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)load("glPixelTexGenSGIX"); +} +static void load_GL_SGIX_polynomial_ffd(GLADloadproc load) { + if(!GLAD_GL_SGIX_polynomial_ffd) return; + glad_glDeformationMap3dSGIX = (PFNGLDEFORMATIONMAP3DSGIXPROC)load("glDeformationMap3dSGIX"); + glad_glDeformationMap3fSGIX = (PFNGLDEFORMATIONMAP3FSGIXPROC)load("glDeformationMap3fSGIX"); + glad_glDeformSGIX = (PFNGLDEFORMSGIXPROC)load("glDeformSGIX"); + glad_glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)load("glLoadIdentityDeformationMapSGIX"); +} +static void load_GL_SGIX_reference_plane(GLADloadproc load) { + if(!GLAD_GL_SGIX_reference_plane) return; + glad_glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)load("glReferencePlaneSGIX"); +} +static void load_GL_SGIX_sprite(GLADloadproc load) { + if(!GLAD_GL_SGIX_sprite) return; + glad_glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)load("glSpriteParameterfSGIX"); + glad_glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)load("glSpriteParameterfvSGIX"); + glad_glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)load("glSpriteParameteriSGIX"); + glad_glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)load("glSpriteParameterivSGIX"); +} +static void load_GL_SGIX_tag_sample_buffer(GLADloadproc load) { + if(!GLAD_GL_SGIX_tag_sample_buffer) return; + glad_glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)load("glTagSampleBufferSGIX"); +} +static void load_GL_SGI_color_table(GLADloadproc load) { + if(!GLAD_GL_SGI_color_table) return; + glad_glColorTableSGI = (PFNGLCOLORTABLESGIPROC)load("glColorTableSGI"); + glad_glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)load("glColorTableParameterfvSGI"); + glad_glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)load("glColorTableParameterivSGI"); + glad_glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)load("glCopyColorTableSGI"); + glad_glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)load("glGetColorTableSGI"); + glad_glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)load("glGetColorTableParameterfvSGI"); + glad_glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)load("glGetColorTableParameterivSGI"); +} +static void load_GL_SUNX_constant_data(GLADloadproc load) { + if(!GLAD_GL_SUNX_constant_data) return; + glad_glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)load("glFinishTextureSUNX"); +} +static void load_GL_SUN_global_alpha(GLADloadproc load) { + if(!GLAD_GL_SUN_global_alpha) return; + glad_glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)load("glGlobalAlphaFactorbSUN"); + glad_glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)load("glGlobalAlphaFactorsSUN"); + glad_glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)load("glGlobalAlphaFactoriSUN"); + glad_glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)load("glGlobalAlphaFactorfSUN"); + glad_glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)load("glGlobalAlphaFactordSUN"); + glad_glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)load("glGlobalAlphaFactorubSUN"); + glad_glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)load("glGlobalAlphaFactorusSUN"); + glad_glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)load("glGlobalAlphaFactoruiSUN"); +} +static void load_GL_SUN_mesh_array(GLADloadproc load) { + if(!GLAD_GL_SUN_mesh_array) return; + glad_glDrawMeshArraysSUN = (PFNGLDRAWMESHARRAYSSUNPROC)load("glDrawMeshArraysSUN"); +} +static void load_GL_SUN_triangle_list(GLADloadproc load) { + if(!GLAD_GL_SUN_triangle_list) return; + glad_glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)load("glReplacementCodeuiSUN"); + glad_glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)load("glReplacementCodeusSUN"); + glad_glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)load("glReplacementCodeubSUN"); + glad_glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)load("glReplacementCodeuivSUN"); + glad_glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)load("glReplacementCodeusvSUN"); + glad_glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)load("glReplacementCodeubvSUN"); + glad_glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)load("glReplacementCodePointerSUN"); +} +static void load_GL_SUN_vertex(GLADloadproc load) { + if(!GLAD_GL_SUN_vertex) return; + glad_glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)load("glColor4ubVertex2fSUN"); + glad_glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)load("glColor4ubVertex2fvSUN"); + glad_glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)load("glColor4ubVertex3fSUN"); + glad_glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)load("glColor4ubVertex3fvSUN"); + glad_glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)load("glColor3fVertex3fSUN"); + glad_glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)load("glColor3fVertex3fvSUN"); + glad_glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)load("glNormal3fVertex3fSUN"); + glad_glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)load("glNormal3fVertex3fvSUN"); + glad_glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glColor4fNormal3fVertex3fSUN"); + glad_glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glColor4fNormal3fVertex3fvSUN"); + glad_glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)load("glTexCoord2fVertex3fSUN"); + glad_glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)load("glTexCoord2fVertex3fvSUN"); + glad_glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)load("glTexCoord4fVertex4fSUN"); + glad_glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)load("glTexCoord4fVertex4fvSUN"); + glad_glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)load("glTexCoord2fColor4ubVertex3fSUN"); + glad_glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)load("glTexCoord2fColor4ubVertex3fvSUN"); + glad_glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)load("glTexCoord2fColor3fVertex3fSUN"); + glad_glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)load("glTexCoord2fColor3fVertex3fvSUN"); + glad_glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fNormal3fVertex3fSUN"); + glad_glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fNormal3fVertex3fvSUN"); + glad_glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fSUN"); + glad_glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fvSUN"); + glad_glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fSUN"); + glad_glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fvSUN"); + glad_glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)load("glReplacementCodeuiVertex3fSUN"); + glad_glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)load("glReplacementCodeuiVertex3fvSUN"); + glad_glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)load("glReplacementCodeuiColor4ubVertex3fSUN"); + glad_glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4ubVertex3fvSUN"); + glad_glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor3fVertex3fSUN"); + glad_glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor3fVertex3fvSUN"); + glad_glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiNormal3fVertex3fSUN"); + glad_glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); +} +static int find_extensionsGL(void) { + if (!get_exts()) return 0; + GLAD_GL_3DFX_multisample = has_ext("GL_3DFX_multisample"); + GLAD_GL_3DFX_tbuffer = has_ext("GL_3DFX_tbuffer"); + GLAD_GL_3DFX_texture_compression_FXT1 = has_ext("GL_3DFX_texture_compression_FXT1"); + GLAD_GL_AMD_blend_minmax_factor = has_ext("GL_AMD_blend_minmax_factor"); + GLAD_GL_AMD_conservative_depth = has_ext("GL_AMD_conservative_depth"); + GLAD_GL_AMD_debug_output = has_ext("GL_AMD_debug_output"); + GLAD_GL_AMD_depth_clamp_separate = has_ext("GL_AMD_depth_clamp_separate"); + GLAD_GL_AMD_draw_buffers_blend = has_ext("GL_AMD_draw_buffers_blend"); + GLAD_GL_AMD_framebuffer_multisample_advanced = has_ext("GL_AMD_framebuffer_multisample_advanced"); + GLAD_GL_AMD_framebuffer_sample_positions = has_ext("GL_AMD_framebuffer_sample_positions"); + GLAD_GL_AMD_gcn_shader = has_ext("GL_AMD_gcn_shader"); + GLAD_GL_AMD_gpu_shader_half_float = has_ext("GL_AMD_gpu_shader_half_float"); + GLAD_GL_AMD_gpu_shader_int16 = has_ext("GL_AMD_gpu_shader_int16"); + GLAD_GL_AMD_gpu_shader_int64 = has_ext("GL_AMD_gpu_shader_int64"); + GLAD_GL_AMD_interleaved_elements = has_ext("GL_AMD_interleaved_elements"); + GLAD_GL_AMD_multi_draw_indirect = has_ext("GL_AMD_multi_draw_indirect"); + GLAD_GL_AMD_name_gen_delete = has_ext("GL_AMD_name_gen_delete"); + GLAD_GL_AMD_occlusion_query_event = has_ext("GL_AMD_occlusion_query_event"); + GLAD_GL_AMD_performance_monitor = has_ext("GL_AMD_performance_monitor"); + GLAD_GL_AMD_pinned_memory = has_ext("GL_AMD_pinned_memory"); + GLAD_GL_AMD_query_buffer_object = has_ext("GL_AMD_query_buffer_object"); + GLAD_GL_AMD_sample_positions = has_ext("GL_AMD_sample_positions"); + GLAD_GL_AMD_seamless_cubemap_per_texture = has_ext("GL_AMD_seamless_cubemap_per_texture"); + GLAD_GL_AMD_shader_atomic_counter_ops = has_ext("GL_AMD_shader_atomic_counter_ops"); + GLAD_GL_AMD_shader_ballot = has_ext("GL_AMD_shader_ballot"); + GLAD_GL_AMD_shader_explicit_vertex_parameter = has_ext("GL_AMD_shader_explicit_vertex_parameter"); + GLAD_GL_AMD_shader_gpu_shader_half_float_fetch = has_ext("GL_AMD_shader_gpu_shader_half_float_fetch"); + GLAD_GL_AMD_shader_image_load_store_lod = has_ext("GL_AMD_shader_image_load_store_lod"); + GLAD_GL_AMD_shader_stencil_export = has_ext("GL_AMD_shader_stencil_export"); + GLAD_GL_AMD_shader_trinary_minmax = has_ext("GL_AMD_shader_trinary_minmax"); + GLAD_GL_AMD_sparse_texture = has_ext("GL_AMD_sparse_texture"); + GLAD_GL_AMD_stencil_operation_extended = has_ext("GL_AMD_stencil_operation_extended"); + GLAD_GL_AMD_texture_gather_bias_lod = has_ext("GL_AMD_texture_gather_bias_lod"); + GLAD_GL_AMD_texture_texture4 = has_ext("GL_AMD_texture_texture4"); + GLAD_GL_AMD_transform_feedback3_lines_triangles = has_ext("GL_AMD_transform_feedback3_lines_triangles"); + GLAD_GL_AMD_transform_feedback4 = has_ext("GL_AMD_transform_feedback4"); + GLAD_GL_AMD_vertex_shader_layer = has_ext("GL_AMD_vertex_shader_layer"); + GLAD_GL_AMD_vertex_shader_tessellator = has_ext("GL_AMD_vertex_shader_tessellator"); + GLAD_GL_AMD_vertex_shader_viewport_index = has_ext("GL_AMD_vertex_shader_viewport_index"); + GLAD_GL_APPLE_aux_depth_stencil = has_ext("GL_APPLE_aux_depth_stencil"); + GLAD_GL_APPLE_client_storage = has_ext("GL_APPLE_client_storage"); + GLAD_GL_APPLE_element_array = has_ext("GL_APPLE_element_array"); + GLAD_GL_APPLE_fence = has_ext("GL_APPLE_fence"); + GLAD_GL_APPLE_float_pixels = has_ext("GL_APPLE_float_pixels"); + GLAD_GL_APPLE_flush_buffer_range = has_ext("GL_APPLE_flush_buffer_range"); + GLAD_GL_APPLE_object_purgeable = has_ext("GL_APPLE_object_purgeable"); + GLAD_GL_APPLE_rgb_422 = has_ext("GL_APPLE_rgb_422"); + GLAD_GL_APPLE_row_bytes = has_ext("GL_APPLE_row_bytes"); + GLAD_GL_APPLE_specular_vector = has_ext("GL_APPLE_specular_vector"); + GLAD_GL_APPLE_texture_range = has_ext("GL_APPLE_texture_range"); + GLAD_GL_APPLE_transform_hint = has_ext("GL_APPLE_transform_hint"); + GLAD_GL_APPLE_vertex_array_object = has_ext("GL_APPLE_vertex_array_object"); + GLAD_GL_APPLE_vertex_array_range = has_ext("GL_APPLE_vertex_array_range"); + GLAD_GL_APPLE_vertex_program_evaluators = has_ext("GL_APPLE_vertex_program_evaluators"); + GLAD_GL_APPLE_ycbcr_422 = has_ext("GL_APPLE_ycbcr_422"); + GLAD_GL_ARB_ES2_compatibility = has_ext("GL_ARB_ES2_compatibility"); + GLAD_GL_ARB_ES3_1_compatibility = has_ext("GL_ARB_ES3_1_compatibility"); + GLAD_GL_ARB_ES3_2_compatibility = has_ext("GL_ARB_ES3_2_compatibility"); + GLAD_GL_ARB_ES3_compatibility = has_ext("GL_ARB_ES3_compatibility"); + GLAD_GL_ARB_arrays_of_arrays = has_ext("GL_ARB_arrays_of_arrays"); + GLAD_GL_ARB_base_instance = has_ext("GL_ARB_base_instance"); + GLAD_GL_ARB_bindless_texture = has_ext("GL_ARB_bindless_texture"); + GLAD_GL_ARB_blend_func_extended = has_ext("GL_ARB_blend_func_extended"); + GLAD_GL_ARB_buffer_storage = has_ext("GL_ARB_buffer_storage"); + GLAD_GL_ARB_cl_event = has_ext("GL_ARB_cl_event"); + GLAD_GL_ARB_clear_buffer_object = has_ext("GL_ARB_clear_buffer_object"); + GLAD_GL_ARB_clear_texture = has_ext("GL_ARB_clear_texture"); + GLAD_GL_ARB_clip_control = has_ext("GL_ARB_clip_control"); + GLAD_GL_ARB_color_buffer_float = has_ext("GL_ARB_color_buffer_float"); + GLAD_GL_ARB_compatibility = has_ext("GL_ARB_compatibility"); + GLAD_GL_ARB_compressed_texture_pixel_storage = has_ext("GL_ARB_compressed_texture_pixel_storage"); + GLAD_GL_ARB_compute_shader = has_ext("GL_ARB_compute_shader"); + GLAD_GL_ARB_compute_variable_group_size = has_ext("GL_ARB_compute_variable_group_size"); + GLAD_GL_ARB_conditional_render_inverted = has_ext("GL_ARB_conditional_render_inverted"); + GLAD_GL_ARB_conservative_depth = has_ext("GL_ARB_conservative_depth"); + GLAD_GL_ARB_copy_buffer = has_ext("GL_ARB_copy_buffer"); + GLAD_GL_ARB_copy_image = has_ext("GL_ARB_copy_image"); + GLAD_GL_ARB_cull_distance = has_ext("GL_ARB_cull_distance"); + GLAD_GL_ARB_debug_output = has_ext("GL_ARB_debug_output"); + GLAD_GL_ARB_depth_buffer_float = has_ext("GL_ARB_depth_buffer_float"); + GLAD_GL_ARB_depth_clamp = has_ext("GL_ARB_depth_clamp"); + GLAD_GL_ARB_depth_texture = has_ext("GL_ARB_depth_texture"); + GLAD_GL_ARB_derivative_control = has_ext("GL_ARB_derivative_control"); + GLAD_GL_ARB_direct_state_access = has_ext("GL_ARB_direct_state_access"); + GLAD_GL_ARB_draw_buffers = has_ext("GL_ARB_draw_buffers"); + GLAD_GL_ARB_draw_buffers_blend = has_ext("GL_ARB_draw_buffers_blend"); + GLAD_GL_ARB_draw_elements_base_vertex = has_ext("GL_ARB_draw_elements_base_vertex"); + GLAD_GL_ARB_draw_indirect = has_ext("GL_ARB_draw_indirect"); + GLAD_GL_ARB_draw_instanced = has_ext("GL_ARB_draw_instanced"); + GLAD_GL_ARB_enhanced_layouts = has_ext("GL_ARB_enhanced_layouts"); + GLAD_GL_ARB_explicit_attrib_location = has_ext("GL_ARB_explicit_attrib_location"); + GLAD_GL_ARB_explicit_uniform_location = has_ext("GL_ARB_explicit_uniform_location"); + GLAD_GL_ARB_fragment_coord_conventions = has_ext("GL_ARB_fragment_coord_conventions"); + GLAD_GL_ARB_fragment_layer_viewport = has_ext("GL_ARB_fragment_layer_viewport"); + GLAD_GL_ARB_fragment_program = has_ext("GL_ARB_fragment_program"); + GLAD_GL_ARB_fragment_program_shadow = has_ext("GL_ARB_fragment_program_shadow"); + GLAD_GL_ARB_fragment_shader = has_ext("GL_ARB_fragment_shader"); + GLAD_GL_ARB_fragment_shader_interlock = has_ext("GL_ARB_fragment_shader_interlock"); + GLAD_GL_ARB_framebuffer_no_attachments = has_ext("GL_ARB_framebuffer_no_attachments"); + GLAD_GL_ARB_framebuffer_object = has_ext("GL_ARB_framebuffer_object"); + GLAD_GL_ARB_framebuffer_sRGB = has_ext("GL_ARB_framebuffer_sRGB"); + GLAD_GL_ARB_geometry_shader4 = has_ext("GL_ARB_geometry_shader4"); + GLAD_GL_ARB_get_program_binary = has_ext("GL_ARB_get_program_binary"); + GLAD_GL_ARB_get_texture_sub_image = has_ext("GL_ARB_get_texture_sub_image"); + GLAD_GL_ARB_gl_spirv = has_ext("GL_ARB_gl_spirv"); + GLAD_GL_ARB_gpu_shader5 = has_ext("GL_ARB_gpu_shader5"); + GLAD_GL_ARB_gpu_shader_fp64 = has_ext("GL_ARB_gpu_shader_fp64"); + GLAD_GL_ARB_gpu_shader_int64 = has_ext("GL_ARB_gpu_shader_int64"); + GLAD_GL_ARB_half_float_pixel = has_ext("GL_ARB_half_float_pixel"); + GLAD_GL_ARB_half_float_vertex = has_ext("GL_ARB_half_float_vertex"); + GLAD_GL_ARB_imaging = has_ext("GL_ARB_imaging"); + GLAD_GL_ARB_indirect_parameters = has_ext("GL_ARB_indirect_parameters"); + GLAD_GL_ARB_instanced_arrays = has_ext("GL_ARB_instanced_arrays"); + GLAD_GL_ARB_internalformat_query = has_ext("GL_ARB_internalformat_query"); + GLAD_GL_ARB_internalformat_query2 = has_ext("GL_ARB_internalformat_query2"); + GLAD_GL_ARB_invalidate_subdata = has_ext("GL_ARB_invalidate_subdata"); + GLAD_GL_ARB_map_buffer_alignment = has_ext("GL_ARB_map_buffer_alignment"); + GLAD_GL_ARB_map_buffer_range = has_ext("GL_ARB_map_buffer_range"); + GLAD_GL_ARB_matrix_palette = has_ext("GL_ARB_matrix_palette"); + GLAD_GL_ARB_multi_bind = has_ext("GL_ARB_multi_bind"); + GLAD_GL_ARB_multi_draw_indirect = has_ext("GL_ARB_multi_draw_indirect"); + GLAD_GL_ARB_multisample = has_ext("GL_ARB_multisample"); + GLAD_GL_ARB_multitexture = has_ext("GL_ARB_multitexture"); + GLAD_GL_ARB_occlusion_query = has_ext("GL_ARB_occlusion_query"); + GLAD_GL_ARB_occlusion_query2 = has_ext("GL_ARB_occlusion_query2"); + GLAD_GL_ARB_parallel_shader_compile = has_ext("GL_ARB_parallel_shader_compile"); + GLAD_GL_ARB_pipeline_statistics_query = has_ext("GL_ARB_pipeline_statistics_query"); + GLAD_GL_ARB_pixel_buffer_object = has_ext("GL_ARB_pixel_buffer_object"); + GLAD_GL_ARB_point_parameters = has_ext("GL_ARB_point_parameters"); + GLAD_GL_ARB_point_sprite = has_ext("GL_ARB_point_sprite"); + GLAD_GL_ARB_polygon_offset_clamp = has_ext("GL_ARB_polygon_offset_clamp"); + GLAD_GL_ARB_post_depth_coverage = has_ext("GL_ARB_post_depth_coverage"); + GLAD_GL_ARB_program_interface_query = has_ext("GL_ARB_program_interface_query"); + GLAD_GL_ARB_provoking_vertex = has_ext("GL_ARB_provoking_vertex"); + GLAD_GL_ARB_query_buffer_object = has_ext("GL_ARB_query_buffer_object"); + GLAD_GL_ARB_robust_buffer_access_behavior = has_ext("GL_ARB_robust_buffer_access_behavior"); + GLAD_GL_ARB_robustness = has_ext("GL_ARB_robustness"); + GLAD_GL_ARB_robustness_isolation = has_ext("GL_ARB_robustness_isolation"); + GLAD_GL_ARB_sample_locations = has_ext("GL_ARB_sample_locations"); + GLAD_GL_ARB_sample_shading = has_ext("GL_ARB_sample_shading"); + GLAD_GL_ARB_sampler_objects = has_ext("GL_ARB_sampler_objects"); + GLAD_GL_ARB_seamless_cube_map = has_ext("GL_ARB_seamless_cube_map"); + GLAD_GL_ARB_seamless_cubemap_per_texture = has_ext("GL_ARB_seamless_cubemap_per_texture"); + GLAD_GL_ARB_separate_shader_objects = has_ext("GL_ARB_separate_shader_objects"); + GLAD_GL_ARB_shader_atomic_counter_ops = has_ext("GL_ARB_shader_atomic_counter_ops"); + GLAD_GL_ARB_shader_atomic_counters = has_ext("GL_ARB_shader_atomic_counters"); + GLAD_GL_ARB_shader_ballot = has_ext("GL_ARB_shader_ballot"); + GLAD_GL_ARB_shader_bit_encoding = has_ext("GL_ARB_shader_bit_encoding"); + GLAD_GL_ARB_shader_clock = has_ext("GL_ARB_shader_clock"); + GLAD_GL_ARB_shader_draw_parameters = has_ext("GL_ARB_shader_draw_parameters"); + GLAD_GL_ARB_shader_group_vote = has_ext("GL_ARB_shader_group_vote"); + GLAD_GL_ARB_shader_image_load_store = has_ext("GL_ARB_shader_image_load_store"); + GLAD_GL_ARB_shader_image_size = has_ext("GL_ARB_shader_image_size"); + GLAD_GL_ARB_shader_objects = has_ext("GL_ARB_shader_objects"); + GLAD_GL_ARB_shader_precision = has_ext("GL_ARB_shader_precision"); + GLAD_GL_ARB_shader_stencil_export = has_ext("GL_ARB_shader_stencil_export"); + GLAD_GL_ARB_shader_storage_buffer_object = has_ext("GL_ARB_shader_storage_buffer_object"); + GLAD_GL_ARB_shader_subroutine = has_ext("GL_ARB_shader_subroutine"); + GLAD_GL_ARB_shader_texture_image_samples = has_ext("GL_ARB_shader_texture_image_samples"); + GLAD_GL_ARB_shader_texture_lod = has_ext("GL_ARB_shader_texture_lod"); + GLAD_GL_ARB_shader_viewport_layer_array = has_ext("GL_ARB_shader_viewport_layer_array"); + GLAD_GL_ARB_shading_language_100 = has_ext("GL_ARB_shading_language_100"); + GLAD_GL_ARB_shading_language_420pack = has_ext("GL_ARB_shading_language_420pack"); + GLAD_GL_ARB_shading_language_include = has_ext("GL_ARB_shading_language_include"); + GLAD_GL_ARB_shading_language_packing = has_ext("GL_ARB_shading_language_packing"); + GLAD_GL_ARB_shadow = has_ext("GL_ARB_shadow"); + GLAD_GL_ARB_shadow_ambient = has_ext("GL_ARB_shadow_ambient"); + GLAD_GL_ARB_sparse_buffer = has_ext("GL_ARB_sparse_buffer"); + GLAD_GL_ARB_sparse_texture = has_ext("GL_ARB_sparse_texture"); + GLAD_GL_ARB_sparse_texture2 = has_ext("GL_ARB_sparse_texture2"); + GLAD_GL_ARB_sparse_texture_clamp = has_ext("GL_ARB_sparse_texture_clamp"); + GLAD_GL_ARB_spirv_extensions = has_ext("GL_ARB_spirv_extensions"); + GLAD_GL_ARB_stencil_texturing = has_ext("GL_ARB_stencil_texturing"); + GLAD_GL_ARB_sync = has_ext("GL_ARB_sync"); + GLAD_GL_ARB_tessellation_shader = has_ext("GL_ARB_tessellation_shader"); + GLAD_GL_ARB_texture_barrier = has_ext("GL_ARB_texture_barrier"); + GLAD_GL_ARB_texture_border_clamp = has_ext("GL_ARB_texture_border_clamp"); + GLAD_GL_ARB_texture_buffer_object = has_ext("GL_ARB_texture_buffer_object"); + GLAD_GL_ARB_texture_buffer_object_rgb32 = has_ext("GL_ARB_texture_buffer_object_rgb32"); + GLAD_GL_ARB_texture_buffer_range = has_ext("GL_ARB_texture_buffer_range"); + GLAD_GL_ARB_texture_compression = has_ext("GL_ARB_texture_compression"); + GLAD_GL_ARB_texture_compression_bptc = has_ext("GL_ARB_texture_compression_bptc"); + GLAD_GL_ARB_texture_compression_rgtc = has_ext("GL_ARB_texture_compression_rgtc"); + GLAD_GL_ARB_texture_cube_map = has_ext("GL_ARB_texture_cube_map"); + GLAD_GL_ARB_texture_cube_map_array = has_ext("GL_ARB_texture_cube_map_array"); + GLAD_GL_ARB_texture_env_add = has_ext("GL_ARB_texture_env_add"); + GLAD_GL_ARB_texture_env_combine = has_ext("GL_ARB_texture_env_combine"); + GLAD_GL_ARB_texture_env_crossbar = has_ext("GL_ARB_texture_env_crossbar"); + GLAD_GL_ARB_texture_env_dot3 = has_ext("GL_ARB_texture_env_dot3"); + GLAD_GL_ARB_texture_filter_anisotropic = has_ext("GL_ARB_texture_filter_anisotropic"); + GLAD_GL_ARB_texture_filter_minmax = has_ext("GL_ARB_texture_filter_minmax"); + GLAD_GL_ARB_texture_float = has_ext("GL_ARB_texture_float"); + GLAD_GL_ARB_texture_gather = has_ext("GL_ARB_texture_gather"); + GLAD_GL_ARB_texture_mirror_clamp_to_edge = has_ext("GL_ARB_texture_mirror_clamp_to_edge"); + GLAD_GL_ARB_texture_mirrored_repeat = has_ext("GL_ARB_texture_mirrored_repeat"); + GLAD_GL_ARB_texture_multisample = has_ext("GL_ARB_texture_multisample"); + GLAD_GL_ARB_texture_non_power_of_two = has_ext("GL_ARB_texture_non_power_of_two"); + GLAD_GL_ARB_texture_query_levels = has_ext("GL_ARB_texture_query_levels"); + GLAD_GL_ARB_texture_query_lod = has_ext("GL_ARB_texture_query_lod"); + GLAD_GL_ARB_texture_rectangle = has_ext("GL_ARB_texture_rectangle"); + GLAD_GL_ARB_texture_rg = has_ext("GL_ARB_texture_rg"); + GLAD_GL_ARB_texture_rgb10_a2ui = has_ext("GL_ARB_texture_rgb10_a2ui"); + GLAD_GL_ARB_texture_stencil8 = has_ext("GL_ARB_texture_stencil8"); + GLAD_GL_ARB_texture_storage = has_ext("GL_ARB_texture_storage"); + GLAD_GL_ARB_texture_storage_multisample = has_ext("GL_ARB_texture_storage_multisample"); + GLAD_GL_ARB_texture_swizzle = has_ext("GL_ARB_texture_swizzle"); + GLAD_GL_ARB_texture_view = has_ext("GL_ARB_texture_view"); + GLAD_GL_ARB_timer_query = has_ext("GL_ARB_timer_query"); + GLAD_GL_ARB_transform_feedback2 = has_ext("GL_ARB_transform_feedback2"); + GLAD_GL_ARB_transform_feedback3 = has_ext("GL_ARB_transform_feedback3"); + GLAD_GL_ARB_transform_feedback_instanced = has_ext("GL_ARB_transform_feedback_instanced"); + GLAD_GL_ARB_transform_feedback_overflow_query = has_ext("GL_ARB_transform_feedback_overflow_query"); + GLAD_GL_ARB_transpose_matrix = has_ext("GL_ARB_transpose_matrix"); + GLAD_GL_ARB_uniform_buffer_object = has_ext("GL_ARB_uniform_buffer_object"); + GLAD_GL_ARB_vertex_array_bgra = has_ext("GL_ARB_vertex_array_bgra"); + GLAD_GL_ARB_vertex_array_object = has_ext("GL_ARB_vertex_array_object"); + GLAD_GL_ARB_vertex_attrib_64bit = has_ext("GL_ARB_vertex_attrib_64bit"); + GLAD_GL_ARB_vertex_attrib_binding = has_ext("GL_ARB_vertex_attrib_binding"); + GLAD_GL_ARB_vertex_blend = has_ext("GL_ARB_vertex_blend"); + GLAD_GL_ARB_vertex_buffer_object = has_ext("GL_ARB_vertex_buffer_object"); + GLAD_GL_ARB_vertex_program = has_ext("GL_ARB_vertex_program"); + GLAD_GL_ARB_vertex_shader = has_ext("GL_ARB_vertex_shader"); + GLAD_GL_ARB_vertex_type_10f_11f_11f_rev = has_ext("GL_ARB_vertex_type_10f_11f_11f_rev"); + GLAD_GL_ARB_vertex_type_2_10_10_10_rev = has_ext("GL_ARB_vertex_type_2_10_10_10_rev"); + GLAD_GL_ARB_viewport_array = has_ext("GL_ARB_viewport_array"); + GLAD_GL_ARB_window_pos = has_ext("GL_ARB_window_pos"); + GLAD_GL_ATI_draw_buffers = has_ext("GL_ATI_draw_buffers"); + GLAD_GL_ATI_element_array = has_ext("GL_ATI_element_array"); + GLAD_GL_ATI_envmap_bumpmap = has_ext("GL_ATI_envmap_bumpmap"); + GLAD_GL_ATI_fragment_shader = has_ext("GL_ATI_fragment_shader"); + GLAD_GL_ATI_map_object_buffer = has_ext("GL_ATI_map_object_buffer"); + GLAD_GL_ATI_meminfo = has_ext("GL_ATI_meminfo"); + GLAD_GL_ATI_pixel_format_float = has_ext("GL_ATI_pixel_format_float"); + GLAD_GL_ATI_pn_triangles = has_ext("GL_ATI_pn_triangles"); + GLAD_GL_ATI_separate_stencil = has_ext("GL_ATI_separate_stencil"); + GLAD_GL_ATI_text_fragment_shader = has_ext("GL_ATI_text_fragment_shader"); + GLAD_GL_ATI_texture_env_combine3 = has_ext("GL_ATI_texture_env_combine3"); + GLAD_GL_ATI_texture_float = has_ext("GL_ATI_texture_float"); + GLAD_GL_ATI_texture_mirror_once = has_ext("GL_ATI_texture_mirror_once"); + GLAD_GL_ATI_vertex_array_object = has_ext("GL_ATI_vertex_array_object"); + GLAD_GL_ATI_vertex_attrib_array_object = has_ext("GL_ATI_vertex_attrib_array_object"); + GLAD_GL_ATI_vertex_streams = has_ext("GL_ATI_vertex_streams"); + GLAD_GL_EXT_422_pixels = has_ext("GL_EXT_422_pixels"); + GLAD_GL_EXT_EGL_image_storage = has_ext("GL_EXT_EGL_image_storage"); + GLAD_GL_EXT_EGL_sync = has_ext("GL_EXT_EGL_sync"); + GLAD_GL_EXT_abgr = has_ext("GL_EXT_abgr"); + GLAD_GL_EXT_bgra = has_ext("GL_EXT_bgra"); + GLAD_GL_EXT_bindable_uniform = has_ext("GL_EXT_bindable_uniform"); + GLAD_GL_EXT_blend_color = has_ext("GL_EXT_blend_color"); + GLAD_GL_EXT_blend_equation_separate = has_ext("GL_EXT_blend_equation_separate"); + GLAD_GL_EXT_blend_func_separate = has_ext("GL_EXT_blend_func_separate"); + GLAD_GL_EXT_blend_logic_op = has_ext("GL_EXT_blend_logic_op"); + GLAD_GL_EXT_blend_minmax = has_ext("GL_EXT_blend_minmax"); + GLAD_GL_EXT_blend_subtract = has_ext("GL_EXT_blend_subtract"); + GLAD_GL_EXT_clip_volume_hint = has_ext("GL_EXT_clip_volume_hint"); + GLAD_GL_EXT_cmyka = has_ext("GL_EXT_cmyka"); + GLAD_GL_EXT_color_subtable = has_ext("GL_EXT_color_subtable"); + GLAD_GL_EXT_compiled_vertex_array = has_ext("GL_EXT_compiled_vertex_array"); + GLAD_GL_EXT_convolution = has_ext("GL_EXT_convolution"); + GLAD_GL_EXT_coordinate_frame = has_ext("GL_EXT_coordinate_frame"); + GLAD_GL_EXT_copy_texture = has_ext("GL_EXT_copy_texture"); + GLAD_GL_EXT_cull_vertex = has_ext("GL_EXT_cull_vertex"); + GLAD_GL_EXT_debug_label = has_ext("GL_EXT_debug_label"); + GLAD_GL_EXT_debug_marker = has_ext("GL_EXT_debug_marker"); + GLAD_GL_EXT_depth_bounds_test = has_ext("GL_EXT_depth_bounds_test"); + GLAD_GL_EXT_direct_state_access = has_ext("GL_EXT_direct_state_access"); + GLAD_GL_EXT_draw_buffers2 = has_ext("GL_EXT_draw_buffers2"); + GLAD_GL_EXT_draw_instanced = has_ext("GL_EXT_draw_instanced"); + GLAD_GL_EXT_draw_range_elements = has_ext("GL_EXT_draw_range_elements"); + GLAD_GL_EXT_external_buffer = has_ext("GL_EXT_external_buffer"); + GLAD_GL_EXT_fog_coord = has_ext("GL_EXT_fog_coord"); + GLAD_GL_EXT_framebuffer_blit = has_ext("GL_EXT_framebuffer_blit"); + GLAD_GL_EXT_framebuffer_multisample = has_ext("GL_EXT_framebuffer_multisample"); + GLAD_GL_EXT_framebuffer_multisample_blit_scaled = has_ext("GL_EXT_framebuffer_multisample_blit_scaled"); + GLAD_GL_EXT_framebuffer_object = has_ext("GL_EXT_framebuffer_object"); + GLAD_GL_EXT_framebuffer_sRGB = has_ext("GL_EXT_framebuffer_sRGB"); + GLAD_GL_EXT_geometry_shader4 = has_ext("GL_EXT_geometry_shader4"); + GLAD_GL_EXT_gpu_program_parameters = has_ext("GL_EXT_gpu_program_parameters"); + GLAD_GL_EXT_gpu_shader4 = has_ext("GL_EXT_gpu_shader4"); + GLAD_GL_EXT_histogram = has_ext("GL_EXT_histogram"); + GLAD_GL_EXT_index_array_formats = has_ext("GL_EXT_index_array_formats"); + GLAD_GL_EXT_index_func = has_ext("GL_EXT_index_func"); + GLAD_GL_EXT_index_material = has_ext("GL_EXT_index_material"); + GLAD_GL_EXT_index_texture = has_ext("GL_EXT_index_texture"); + GLAD_GL_EXT_light_texture = has_ext("GL_EXT_light_texture"); + GLAD_GL_EXT_memory_object = has_ext("GL_EXT_memory_object"); + GLAD_GL_EXT_memory_object_fd = has_ext("GL_EXT_memory_object_fd"); + GLAD_GL_EXT_memory_object_win32 = has_ext("GL_EXT_memory_object_win32"); + GLAD_GL_EXT_misc_attribute = has_ext("GL_EXT_misc_attribute"); + GLAD_GL_EXT_multi_draw_arrays = has_ext("GL_EXT_multi_draw_arrays"); + GLAD_GL_EXT_multisample = has_ext("GL_EXT_multisample"); + GLAD_GL_EXT_multiview_tessellation_geometry_shader = has_ext("GL_EXT_multiview_tessellation_geometry_shader"); + GLAD_GL_EXT_multiview_texture_multisample = has_ext("GL_EXT_multiview_texture_multisample"); + GLAD_GL_EXT_multiview_timer_query = has_ext("GL_EXT_multiview_timer_query"); + GLAD_GL_EXT_packed_depth_stencil = has_ext("GL_EXT_packed_depth_stencil"); + GLAD_GL_EXT_packed_float = has_ext("GL_EXT_packed_float"); + GLAD_GL_EXT_packed_pixels = has_ext("GL_EXT_packed_pixels"); + GLAD_GL_EXT_paletted_texture = has_ext("GL_EXT_paletted_texture"); + GLAD_GL_EXT_pixel_buffer_object = has_ext("GL_EXT_pixel_buffer_object"); + GLAD_GL_EXT_pixel_transform = has_ext("GL_EXT_pixel_transform"); + GLAD_GL_EXT_pixel_transform_color_table = has_ext("GL_EXT_pixel_transform_color_table"); + GLAD_GL_EXT_point_parameters = has_ext("GL_EXT_point_parameters"); + GLAD_GL_EXT_polygon_offset = has_ext("GL_EXT_polygon_offset"); + GLAD_GL_EXT_polygon_offset_clamp = has_ext("GL_EXT_polygon_offset_clamp"); + GLAD_GL_EXT_post_depth_coverage = has_ext("GL_EXT_post_depth_coverage"); + GLAD_GL_EXT_provoking_vertex = has_ext("GL_EXT_provoking_vertex"); + GLAD_GL_EXT_raster_multisample = has_ext("GL_EXT_raster_multisample"); + GLAD_GL_EXT_rescale_normal = has_ext("GL_EXT_rescale_normal"); + GLAD_GL_EXT_secondary_color = has_ext("GL_EXT_secondary_color"); + GLAD_GL_EXT_semaphore = has_ext("GL_EXT_semaphore"); + GLAD_GL_EXT_semaphore_fd = has_ext("GL_EXT_semaphore_fd"); + GLAD_GL_EXT_semaphore_win32 = has_ext("GL_EXT_semaphore_win32"); + GLAD_GL_EXT_separate_shader_objects = has_ext("GL_EXT_separate_shader_objects"); + GLAD_GL_EXT_separate_specular_color = has_ext("GL_EXT_separate_specular_color"); + GLAD_GL_EXT_shader_framebuffer_fetch = has_ext("GL_EXT_shader_framebuffer_fetch"); + GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent = has_ext("GL_EXT_shader_framebuffer_fetch_non_coherent"); + GLAD_GL_EXT_shader_image_load_formatted = has_ext("GL_EXT_shader_image_load_formatted"); + GLAD_GL_EXT_shader_image_load_store = has_ext("GL_EXT_shader_image_load_store"); + GLAD_GL_EXT_shader_integer_mix = has_ext("GL_EXT_shader_integer_mix"); + GLAD_GL_EXT_shadow_funcs = has_ext("GL_EXT_shadow_funcs"); + GLAD_GL_EXT_shared_texture_palette = has_ext("GL_EXT_shared_texture_palette"); + GLAD_GL_EXT_sparse_texture2 = has_ext("GL_EXT_sparse_texture2"); + GLAD_GL_EXT_stencil_clear_tag = has_ext("GL_EXT_stencil_clear_tag"); + GLAD_GL_EXT_stencil_two_side = has_ext("GL_EXT_stencil_two_side"); + GLAD_GL_EXT_stencil_wrap = has_ext("GL_EXT_stencil_wrap"); + GLAD_GL_EXT_subtexture = has_ext("GL_EXT_subtexture"); + GLAD_GL_EXT_texture = has_ext("GL_EXT_texture"); + GLAD_GL_EXT_texture3D = has_ext("GL_EXT_texture3D"); + GLAD_GL_EXT_texture_array = has_ext("GL_EXT_texture_array"); + GLAD_GL_EXT_texture_buffer_object = has_ext("GL_EXT_texture_buffer_object"); + GLAD_GL_EXT_texture_compression_latc = has_ext("GL_EXT_texture_compression_latc"); + GLAD_GL_EXT_texture_compression_rgtc = has_ext("GL_EXT_texture_compression_rgtc"); + GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); + GLAD_GL_EXT_texture_cube_map = has_ext("GL_EXT_texture_cube_map"); + GLAD_GL_EXT_texture_env_add = has_ext("GL_EXT_texture_env_add"); + GLAD_GL_EXT_texture_env_combine = has_ext("GL_EXT_texture_env_combine"); + GLAD_GL_EXT_texture_env_dot3 = has_ext("GL_EXT_texture_env_dot3"); + GLAD_GL_EXT_texture_filter_anisotropic = has_ext("GL_EXT_texture_filter_anisotropic"); + GLAD_GL_EXT_texture_filter_minmax = has_ext("GL_EXT_texture_filter_minmax"); + GLAD_GL_EXT_texture_integer = has_ext("GL_EXT_texture_integer"); + GLAD_GL_EXT_texture_lod_bias = has_ext("GL_EXT_texture_lod_bias"); + GLAD_GL_EXT_texture_mirror_clamp = has_ext("GL_EXT_texture_mirror_clamp"); + GLAD_GL_EXT_texture_object = has_ext("GL_EXT_texture_object"); + GLAD_GL_EXT_texture_perturb_normal = has_ext("GL_EXT_texture_perturb_normal"); + GLAD_GL_EXT_texture_sRGB = has_ext("GL_EXT_texture_sRGB"); + GLAD_GL_EXT_texture_sRGB_R8 = has_ext("GL_EXT_texture_sRGB_R8"); + GLAD_GL_EXT_texture_sRGB_decode = has_ext("GL_EXT_texture_sRGB_decode"); + GLAD_GL_EXT_texture_shadow_lod = has_ext("GL_EXT_texture_shadow_lod"); + GLAD_GL_EXT_texture_shared_exponent = has_ext("GL_EXT_texture_shared_exponent"); + GLAD_GL_EXT_texture_snorm = has_ext("GL_EXT_texture_snorm"); + GLAD_GL_EXT_texture_swizzle = has_ext("GL_EXT_texture_swizzle"); + GLAD_GL_EXT_timer_query = has_ext("GL_EXT_timer_query"); + GLAD_GL_EXT_transform_feedback = has_ext("GL_EXT_transform_feedback"); + GLAD_GL_EXT_vertex_array = has_ext("GL_EXT_vertex_array"); + GLAD_GL_EXT_vertex_array_bgra = has_ext("GL_EXT_vertex_array_bgra"); + GLAD_GL_EXT_vertex_attrib_64bit = has_ext("GL_EXT_vertex_attrib_64bit"); + GLAD_GL_EXT_vertex_shader = has_ext("GL_EXT_vertex_shader"); + GLAD_GL_EXT_vertex_weighting = has_ext("GL_EXT_vertex_weighting"); + GLAD_GL_EXT_win32_keyed_mutex = has_ext("GL_EXT_win32_keyed_mutex"); + GLAD_GL_EXT_window_rectangles = has_ext("GL_EXT_window_rectangles"); + GLAD_GL_EXT_x11_sync_object = has_ext("GL_EXT_x11_sync_object"); + GLAD_GL_GREMEDY_frame_terminator = has_ext("GL_GREMEDY_frame_terminator"); + GLAD_GL_GREMEDY_string_marker = has_ext("GL_GREMEDY_string_marker"); + GLAD_GL_HP_convolution_border_modes = has_ext("GL_HP_convolution_border_modes"); + GLAD_GL_HP_image_transform = has_ext("GL_HP_image_transform"); + GLAD_GL_HP_occlusion_test = has_ext("GL_HP_occlusion_test"); + GLAD_GL_HP_texture_lighting = has_ext("GL_HP_texture_lighting"); + GLAD_GL_IBM_cull_vertex = has_ext("GL_IBM_cull_vertex"); + GLAD_GL_IBM_multimode_draw_arrays = has_ext("GL_IBM_multimode_draw_arrays"); + GLAD_GL_IBM_rasterpos_clip = has_ext("GL_IBM_rasterpos_clip"); + GLAD_GL_IBM_static_data = has_ext("GL_IBM_static_data"); + GLAD_GL_IBM_texture_mirrored_repeat = has_ext("GL_IBM_texture_mirrored_repeat"); + GLAD_GL_IBM_vertex_array_lists = has_ext("GL_IBM_vertex_array_lists"); + GLAD_GL_INGR_blend_func_separate = has_ext("GL_INGR_blend_func_separate"); + GLAD_GL_INGR_color_clamp = has_ext("GL_INGR_color_clamp"); + GLAD_GL_INGR_interlace_read = has_ext("GL_INGR_interlace_read"); + GLAD_GL_INTEL_blackhole_render = has_ext("GL_INTEL_blackhole_render"); + GLAD_GL_INTEL_conservative_rasterization = has_ext("GL_INTEL_conservative_rasterization"); + GLAD_GL_INTEL_fragment_shader_ordering = has_ext("GL_INTEL_fragment_shader_ordering"); + GLAD_GL_INTEL_framebuffer_CMAA = has_ext("GL_INTEL_framebuffer_CMAA"); + GLAD_GL_INTEL_map_texture = has_ext("GL_INTEL_map_texture"); + GLAD_GL_INTEL_parallel_arrays = has_ext("GL_INTEL_parallel_arrays"); + GLAD_GL_INTEL_performance_query = has_ext("GL_INTEL_performance_query"); + GLAD_GL_KHR_blend_equation_advanced = has_ext("GL_KHR_blend_equation_advanced"); + GLAD_GL_KHR_blend_equation_advanced_coherent = has_ext("GL_KHR_blend_equation_advanced_coherent"); + GLAD_GL_KHR_context_flush_control = has_ext("GL_KHR_context_flush_control"); + GLAD_GL_KHR_debug = has_ext("GL_KHR_debug"); + GLAD_GL_KHR_no_error = has_ext("GL_KHR_no_error"); + GLAD_GL_KHR_parallel_shader_compile = has_ext("GL_KHR_parallel_shader_compile"); + GLAD_GL_KHR_robust_buffer_access_behavior = has_ext("GL_KHR_robust_buffer_access_behavior"); + GLAD_GL_KHR_robustness = has_ext("GL_KHR_robustness"); + GLAD_GL_KHR_shader_subgroup = has_ext("GL_KHR_shader_subgroup"); + GLAD_GL_KHR_texture_compression_astc_hdr = has_ext("GL_KHR_texture_compression_astc_hdr"); + GLAD_GL_KHR_texture_compression_astc_ldr = has_ext("GL_KHR_texture_compression_astc_ldr"); + GLAD_GL_KHR_texture_compression_astc_sliced_3d = has_ext("GL_KHR_texture_compression_astc_sliced_3d"); + GLAD_GL_MESAX_texture_stack = has_ext("GL_MESAX_texture_stack"); + GLAD_GL_MESA_framebuffer_flip_y = has_ext("GL_MESA_framebuffer_flip_y"); + GLAD_GL_MESA_pack_invert = has_ext("GL_MESA_pack_invert"); + GLAD_GL_MESA_program_binary_formats = has_ext("GL_MESA_program_binary_formats"); + GLAD_GL_MESA_resize_buffers = has_ext("GL_MESA_resize_buffers"); + GLAD_GL_MESA_shader_integer_functions = has_ext("GL_MESA_shader_integer_functions"); + GLAD_GL_MESA_tile_raster_order = has_ext("GL_MESA_tile_raster_order"); + GLAD_GL_MESA_window_pos = has_ext("GL_MESA_window_pos"); + GLAD_GL_MESA_ycbcr_texture = has_ext("GL_MESA_ycbcr_texture"); + GLAD_GL_NVX_blend_equation_advanced_multi_draw_buffers = has_ext("GL_NVX_blend_equation_advanced_multi_draw_buffers"); + GLAD_GL_NVX_conditional_render = has_ext("GL_NVX_conditional_render"); + GLAD_GL_NVX_gpu_memory_info = has_ext("GL_NVX_gpu_memory_info"); + GLAD_GL_NVX_gpu_multicast2 = has_ext("GL_NVX_gpu_multicast2"); + GLAD_GL_NVX_linked_gpu_multicast = has_ext("GL_NVX_linked_gpu_multicast"); + GLAD_GL_NVX_progress_fence = has_ext("GL_NVX_progress_fence"); + GLAD_GL_NV_alpha_to_coverage_dither_control = has_ext("GL_NV_alpha_to_coverage_dither_control"); + GLAD_GL_NV_bindless_multi_draw_indirect = has_ext("GL_NV_bindless_multi_draw_indirect"); + GLAD_GL_NV_bindless_multi_draw_indirect_count = has_ext("GL_NV_bindless_multi_draw_indirect_count"); + GLAD_GL_NV_bindless_texture = has_ext("GL_NV_bindless_texture"); + GLAD_GL_NV_blend_equation_advanced = has_ext("GL_NV_blend_equation_advanced"); + GLAD_GL_NV_blend_equation_advanced_coherent = has_ext("GL_NV_blend_equation_advanced_coherent"); + GLAD_GL_NV_blend_minmax_factor = has_ext("GL_NV_blend_minmax_factor"); + GLAD_GL_NV_blend_square = has_ext("GL_NV_blend_square"); + GLAD_GL_NV_clip_space_w_scaling = has_ext("GL_NV_clip_space_w_scaling"); + GLAD_GL_NV_command_list = has_ext("GL_NV_command_list"); + GLAD_GL_NV_compute_program5 = has_ext("GL_NV_compute_program5"); + GLAD_GL_NV_compute_shader_derivatives = has_ext("GL_NV_compute_shader_derivatives"); + GLAD_GL_NV_conditional_render = has_ext("GL_NV_conditional_render"); + GLAD_GL_NV_conservative_raster = has_ext("GL_NV_conservative_raster"); + GLAD_GL_NV_conservative_raster_dilate = has_ext("GL_NV_conservative_raster_dilate"); + GLAD_GL_NV_conservative_raster_pre_snap = has_ext("GL_NV_conservative_raster_pre_snap"); + GLAD_GL_NV_conservative_raster_pre_snap_triangles = has_ext("GL_NV_conservative_raster_pre_snap_triangles"); + GLAD_GL_NV_conservative_raster_underestimation = has_ext("GL_NV_conservative_raster_underestimation"); + GLAD_GL_NV_copy_depth_to_color = has_ext("GL_NV_copy_depth_to_color"); + GLAD_GL_NV_copy_image = has_ext("GL_NV_copy_image"); + GLAD_GL_NV_deep_texture3D = has_ext("GL_NV_deep_texture3D"); + GLAD_GL_NV_depth_buffer_float = has_ext("GL_NV_depth_buffer_float"); + GLAD_GL_NV_depth_clamp = has_ext("GL_NV_depth_clamp"); + GLAD_GL_NV_draw_texture = has_ext("GL_NV_draw_texture"); + GLAD_GL_NV_draw_vulkan_image = has_ext("GL_NV_draw_vulkan_image"); + GLAD_GL_NV_evaluators = has_ext("GL_NV_evaluators"); + GLAD_GL_NV_explicit_multisample = has_ext("GL_NV_explicit_multisample"); + GLAD_GL_NV_fence = has_ext("GL_NV_fence"); + GLAD_GL_NV_fill_rectangle = has_ext("GL_NV_fill_rectangle"); + GLAD_GL_NV_float_buffer = has_ext("GL_NV_float_buffer"); + GLAD_GL_NV_fog_distance = has_ext("GL_NV_fog_distance"); + GLAD_GL_NV_fragment_coverage_to_color = has_ext("GL_NV_fragment_coverage_to_color"); + GLAD_GL_NV_fragment_program = has_ext("GL_NV_fragment_program"); + GLAD_GL_NV_fragment_program2 = has_ext("GL_NV_fragment_program2"); + GLAD_GL_NV_fragment_program4 = has_ext("GL_NV_fragment_program4"); + GLAD_GL_NV_fragment_program_option = has_ext("GL_NV_fragment_program_option"); + GLAD_GL_NV_fragment_shader_barycentric = has_ext("GL_NV_fragment_shader_barycentric"); + GLAD_GL_NV_fragment_shader_interlock = has_ext("GL_NV_fragment_shader_interlock"); + GLAD_GL_NV_framebuffer_mixed_samples = has_ext("GL_NV_framebuffer_mixed_samples"); + GLAD_GL_NV_framebuffer_multisample_coverage = has_ext("GL_NV_framebuffer_multisample_coverage"); + GLAD_GL_NV_geometry_program4 = has_ext("GL_NV_geometry_program4"); + GLAD_GL_NV_geometry_shader4 = has_ext("GL_NV_geometry_shader4"); + GLAD_GL_NV_geometry_shader_passthrough = has_ext("GL_NV_geometry_shader_passthrough"); + GLAD_GL_NV_gpu_multicast = has_ext("GL_NV_gpu_multicast"); + GLAD_GL_NV_gpu_program4 = has_ext("GL_NV_gpu_program4"); + GLAD_GL_NV_gpu_program5 = has_ext("GL_NV_gpu_program5"); + GLAD_GL_NV_gpu_program5_mem_extended = has_ext("GL_NV_gpu_program5_mem_extended"); + GLAD_GL_NV_gpu_shader5 = has_ext("GL_NV_gpu_shader5"); + GLAD_GL_NV_half_float = has_ext("GL_NV_half_float"); + GLAD_GL_NV_internalformat_sample_query = has_ext("GL_NV_internalformat_sample_query"); + GLAD_GL_NV_light_max_exponent = has_ext("GL_NV_light_max_exponent"); + GLAD_GL_NV_memory_attachment = has_ext("GL_NV_memory_attachment"); + GLAD_GL_NV_mesh_shader = has_ext("GL_NV_mesh_shader"); + GLAD_GL_NV_multisample_coverage = has_ext("GL_NV_multisample_coverage"); + GLAD_GL_NV_multisample_filter_hint = has_ext("GL_NV_multisample_filter_hint"); + GLAD_GL_NV_occlusion_query = has_ext("GL_NV_occlusion_query"); + GLAD_GL_NV_packed_depth_stencil = has_ext("GL_NV_packed_depth_stencil"); + GLAD_GL_NV_parameter_buffer_object = has_ext("GL_NV_parameter_buffer_object"); + GLAD_GL_NV_parameter_buffer_object2 = has_ext("GL_NV_parameter_buffer_object2"); + GLAD_GL_NV_path_rendering = has_ext("GL_NV_path_rendering"); + GLAD_GL_NV_path_rendering_shared_edge = has_ext("GL_NV_path_rendering_shared_edge"); + GLAD_GL_NV_pixel_data_range = has_ext("GL_NV_pixel_data_range"); + GLAD_GL_NV_point_sprite = has_ext("GL_NV_point_sprite"); + GLAD_GL_NV_present_video = has_ext("GL_NV_present_video"); + GLAD_GL_NV_primitive_restart = has_ext("GL_NV_primitive_restart"); + GLAD_GL_NV_query_resource = has_ext("GL_NV_query_resource"); + GLAD_GL_NV_query_resource_tag = has_ext("GL_NV_query_resource_tag"); + GLAD_GL_NV_register_combiners = has_ext("GL_NV_register_combiners"); + GLAD_GL_NV_register_combiners2 = has_ext("GL_NV_register_combiners2"); + GLAD_GL_NV_representative_fragment_test = has_ext("GL_NV_representative_fragment_test"); + GLAD_GL_NV_robustness_video_memory_purge = has_ext("GL_NV_robustness_video_memory_purge"); + GLAD_GL_NV_sample_locations = has_ext("GL_NV_sample_locations"); + GLAD_GL_NV_sample_mask_override_coverage = has_ext("GL_NV_sample_mask_override_coverage"); + GLAD_GL_NV_scissor_exclusive = has_ext("GL_NV_scissor_exclusive"); + GLAD_GL_NV_shader_atomic_counters = has_ext("GL_NV_shader_atomic_counters"); + GLAD_GL_NV_shader_atomic_float = has_ext("GL_NV_shader_atomic_float"); + GLAD_GL_NV_shader_atomic_float64 = has_ext("GL_NV_shader_atomic_float64"); + GLAD_GL_NV_shader_atomic_fp16_vector = has_ext("GL_NV_shader_atomic_fp16_vector"); + GLAD_GL_NV_shader_atomic_int64 = has_ext("GL_NV_shader_atomic_int64"); + GLAD_GL_NV_shader_buffer_load = has_ext("GL_NV_shader_buffer_load"); + GLAD_GL_NV_shader_buffer_store = has_ext("GL_NV_shader_buffer_store"); + GLAD_GL_NV_shader_storage_buffer_object = has_ext("GL_NV_shader_storage_buffer_object"); + GLAD_GL_NV_shader_subgroup_partitioned = has_ext("GL_NV_shader_subgroup_partitioned"); + GLAD_GL_NV_shader_texture_footprint = has_ext("GL_NV_shader_texture_footprint"); + GLAD_GL_NV_shader_thread_group = has_ext("GL_NV_shader_thread_group"); + GLAD_GL_NV_shader_thread_shuffle = has_ext("GL_NV_shader_thread_shuffle"); + GLAD_GL_NV_shading_rate_image = has_ext("GL_NV_shading_rate_image"); + GLAD_GL_NV_stereo_view_rendering = has_ext("GL_NV_stereo_view_rendering"); + GLAD_GL_NV_tessellation_program5 = has_ext("GL_NV_tessellation_program5"); + GLAD_GL_NV_texgen_emboss = has_ext("GL_NV_texgen_emboss"); + GLAD_GL_NV_texgen_reflection = has_ext("GL_NV_texgen_reflection"); + GLAD_GL_NV_texture_barrier = has_ext("GL_NV_texture_barrier"); + GLAD_GL_NV_texture_compression_vtc = has_ext("GL_NV_texture_compression_vtc"); + GLAD_GL_NV_texture_env_combine4 = has_ext("GL_NV_texture_env_combine4"); + GLAD_GL_NV_texture_expand_normal = has_ext("GL_NV_texture_expand_normal"); + GLAD_GL_NV_texture_multisample = has_ext("GL_NV_texture_multisample"); + GLAD_GL_NV_texture_rectangle = has_ext("GL_NV_texture_rectangle"); + GLAD_GL_NV_texture_rectangle_compressed = has_ext("GL_NV_texture_rectangle_compressed"); + GLAD_GL_NV_texture_shader = has_ext("GL_NV_texture_shader"); + GLAD_GL_NV_texture_shader2 = has_ext("GL_NV_texture_shader2"); + GLAD_GL_NV_texture_shader3 = has_ext("GL_NV_texture_shader3"); + GLAD_GL_NV_transform_feedback = has_ext("GL_NV_transform_feedback"); + GLAD_GL_NV_transform_feedback2 = has_ext("GL_NV_transform_feedback2"); + GLAD_GL_NV_uniform_buffer_unified_memory = has_ext("GL_NV_uniform_buffer_unified_memory"); + GLAD_GL_NV_vdpau_interop = has_ext("GL_NV_vdpau_interop"); + GLAD_GL_NV_vdpau_interop2 = has_ext("GL_NV_vdpau_interop2"); + GLAD_GL_NV_vertex_array_range = has_ext("GL_NV_vertex_array_range"); + GLAD_GL_NV_vertex_array_range2 = has_ext("GL_NV_vertex_array_range2"); + GLAD_GL_NV_vertex_attrib_integer_64bit = has_ext("GL_NV_vertex_attrib_integer_64bit"); + GLAD_GL_NV_vertex_buffer_unified_memory = has_ext("GL_NV_vertex_buffer_unified_memory"); + GLAD_GL_NV_vertex_program = has_ext("GL_NV_vertex_program"); + GLAD_GL_NV_vertex_program1_1 = has_ext("GL_NV_vertex_program1_1"); + GLAD_GL_NV_vertex_program2 = has_ext("GL_NV_vertex_program2"); + GLAD_GL_NV_vertex_program2_option = has_ext("GL_NV_vertex_program2_option"); + GLAD_GL_NV_vertex_program3 = has_ext("GL_NV_vertex_program3"); + GLAD_GL_NV_vertex_program4 = has_ext("GL_NV_vertex_program4"); + GLAD_GL_NV_video_capture = has_ext("GL_NV_video_capture"); + GLAD_GL_NV_viewport_array2 = has_ext("GL_NV_viewport_array2"); + GLAD_GL_NV_viewport_swizzle = has_ext("GL_NV_viewport_swizzle"); + GLAD_GL_OES_byte_coordinates = has_ext("GL_OES_byte_coordinates"); + GLAD_GL_OES_compressed_paletted_texture = has_ext("GL_OES_compressed_paletted_texture"); + GLAD_GL_OES_fixed_point = has_ext("GL_OES_fixed_point"); + GLAD_GL_OES_query_matrix = has_ext("GL_OES_query_matrix"); + GLAD_GL_OES_read_format = has_ext("GL_OES_read_format"); + GLAD_GL_OES_single_precision = has_ext("GL_OES_single_precision"); + GLAD_GL_OML_interlace = has_ext("GL_OML_interlace"); + GLAD_GL_OML_resample = has_ext("GL_OML_resample"); + GLAD_GL_OML_subsample = has_ext("GL_OML_subsample"); + GLAD_GL_OVR_multiview = has_ext("GL_OVR_multiview"); + GLAD_GL_OVR_multiview2 = has_ext("GL_OVR_multiview2"); + GLAD_GL_PGI_misc_hints = has_ext("GL_PGI_misc_hints"); + GLAD_GL_PGI_vertex_hints = has_ext("GL_PGI_vertex_hints"); + GLAD_GL_REND_screen_coordinates = has_ext("GL_REND_screen_coordinates"); + GLAD_GL_S3_s3tc = has_ext("GL_S3_s3tc"); + GLAD_GL_SGIS_detail_texture = has_ext("GL_SGIS_detail_texture"); + GLAD_GL_SGIS_fog_function = has_ext("GL_SGIS_fog_function"); + GLAD_GL_SGIS_generate_mipmap = has_ext("GL_SGIS_generate_mipmap"); + GLAD_GL_SGIS_multisample = has_ext("GL_SGIS_multisample"); + GLAD_GL_SGIS_pixel_texture = has_ext("GL_SGIS_pixel_texture"); + GLAD_GL_SGIS_point_line_texgen = has_ext("GL_SGIS_point_line_texgen"); + GLAD_GL_SGIS_point_parameters = has_ext("GL_SGIS_point_parameters"); + GLAD_GL_SGIS_sharpen_texture = has_ext("GL_SGIS_sharpen_texture"); + GLAD_GL_SGIS_texture4D = has_ext("GL_SGIS_texture4D"); + GLAD_GL_SGIS_texture_border_clamp = has_ext("GL_SGIS_texture_border_clamp"); + GLAD_GL_SGIS_texture_color_mask = has_ext("GL_SGIS_texture_color_mask"); + GLAD_GL_SGIS_texture_edge_clamp = has_ext("GL_SGIS_texture_edge_clamp"); + GLAD_GL_SGIS_texture_filter4 = has_ext("GL_SGIS_texture_filter4"); + GLAD_GL_SGIS_texture_lod = has_ext("GL_SGIS_texture_lod"); + GLAD_GL_SGIS_texture_select = has_ext("GL_SGIS_texture_select"); + GLAD_GL_SGIX_async = has_ext("GL_SGIX_async"); + GLAD_GL_SGIX_async_histogram = has_ext("GL_SGIX_async_histogram"); + GLAD_GL_SGIX_async_pixel = has_ext("GL_SGIX_async_pixel"); + GLAD_GL_SGIX_blend_alpha_minmax = has_ext("GL_SGIX_blend_alpha_minmax"); + GLAD_GL_SGIX_calligraphic_fragment = has_ext("GL_SGIX_calligraphic_fragment"); + GLAD_GL_SGIX_clipmap = has_ext("GL_SGIX_clipmap"); + GLAD_GL_SGIX_convolution_accuracy = has_ext("GL_SGIX_convolution_accuracy"); + GLAD_GL_SGIX_depth_pass_instrument = has_ext("GL_SGIX_depth_pass_instrument"); + GLAD_GL_SGIX_depth_texture = has_ext("GL_SGIX_depth_texture"); + GLAD_GL_SGIX_flush_raster = has_ext("GL_SGIX_flush_raster"); + GLAD_GL_SGIX_fog_offset = has_ext("GL_SGIX_fog_offset"); + GLAD_GL_SGIX_fragment_lighting = has_ext("GL_SGIX_fragment_lighting"); + GLAD_GL_SGIX_framezoom = has_ext("GL_SGIX_framezoom"); + GLAD_GL_SGIX_igloo_interface = has_ext("GL_SGIX_igloo_interface"); + GLAD_GL_SGIX_instruments = has_ext("GL_SGIX_instruments"); + GLAD_GL_SGIX_interlace = has_ext("GL_SGIX_interlace"); + GLAD_GL_SGIX_ir_instrument1 = has_ext("GL_SGIX_ir_instrument1"); + GLAD_GL_SGIX_list_priority = has_ext("GL_SGIX_list_priority"); + GLAD_GL_SGIX_pixel_texture = has_ext("GL_SGIX_pixel_texture"); + GLAD_GL_SGIX_pixel_tiles = has_ext("GL_SGIX_pixel_tiles"); + GLAD_GL_SGIX_polynomial_ffd = has_ext("GL_SGIX_polynomial_ffd"); + GLAD_GL_SGIX_reference_plane = has_ext("GL_SGIX_reference_plane"); + GLAD_GL_SGIX_resample = has_ext("GL_SGIX_resample"); + GLAD_GL_SGIX_scalebias_hint = has_ext("GL_SGIX_scalebias_hint"); + GLAD_GL_SGIX_shadow = has_ext("GL_SGIX_shadow"); + GLAD_GL_SGIX_shadow_ambient = has_ext("GL_SGIX_shadow_ambient"); + GLAD_GL_SGIX_sprite = has_ext("GL_SGIX_sprite"); + GLAD_GL_SGIX_subsample = has_ext("GL_SGIX_subsample"); + GLAD_GL_SGIX_tag_sample_buffer = has_ext("GL_SGIX_tag_sample_buffer"); + GLAD_GL_SGIX_texture_add_env = has_ext("GL_SGIX_texture_add_env"); + GLAD_GL_SGIX_texture_coordinate_clamp = has_ext("GL_SGIX_texture_coordinate_clamp"); + GLAD_GL_SGIX_texture_lod_bias = has_ext("GL_SGIX_texture_lod_bias"); + GLAD_GL_SGIX_texture_multi_buffer = has_ext("GL_SGIX_texture_multi_buffer"); + GLAD_GL_SGIX_texture_scale_bias = has_ext("GL_SGIX_texture_scale_bias"); + GLAD_GL_SGIX_vertex_preclip = has_ext("GL_SGIX_vertex_preclip"); + GLAD_GL_SGIX_ycrcb = has_ext("GL_SGIX_ycrcb"); + GLAD_GL_SGIX_ycrcb_subsample = has_ext("GL_SGIX_ycrcb_subsample"); + GLAD_GL_SGIX_ycrcba = has_ext("GL_SGIX_ycrcba"); + GLAD_GL_SGI_color_matrix = has_ext("GL_SGI_color_matrix"); + GLAD_GL_SGI_color_table = has_ext("GL_SGI_color_table"); + GLAD_GL_SGI_texture_color_table = has_ext("GL_SGI_texture_color_table"); + GLAD_GL_SUNX_constant_data = has_ext("GL_SUNX_constant_data"); + GLAD_GL_SUN_convolution_border_modes = has_ext("GL_SUN_convolution_border_modes"); + GLAD_GL_SUN_global_alpha = has_ext("GL_SUN_global_alpha"); + GLAD_GL_SUN_mesh_array = has_ext("GL_SUN_mesh_array"); + GLAD_GL_SUN_slice_accum = has_ext("GL_SUN_slice_accum"); + GLAD_GL_SUN_triangle_list = has_ext("GL_SUN_triangle_list"); + GLAD_GL_SUN_vertex = has_ext("GL_SUN_vertex"); + GLAD_GL_WIN_phong_shading = has_ext("GL_WIN_phong_shading"); + GLAD_GL_WIN_specular_fog = has_ext("GL_WIN_specular_fog"); + free_exts(); + return 1; +} + +static void find_coreGL(void) { + + /* Thank you @elmindreda + * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 + * https://github.com/glfw/glfw/blob/master/src/context.c#L36 + */ + int i, major, minor; + + const char* version; + const char* prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + NULL + }; + + version = (const char*) glGetString(GL_VERSION); + if (!version) return; + + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + +/* PR #18 */ +#ifdef _MSC_VER + sscanf_s(version, "%d.%d", &major, &minor); +#else + sscanf(version, "%d.%d", &major, &minor); +#endif + + GLVersion.major = major; GLVersion.minor = minor; + max_loaded_major = major; max_loaded_minor = minor; + GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; + GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; + GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; + GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; + GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; + GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; + GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; + GLAD_GL_VERSION_4_0 = (major == 4 && minor >= 0) || major > 4; + GLAD_GL_VERSION_4_1 = (major == 4 && minor >= 1) || major > 4; + if (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 1)) { + max_loaded_major = 4; + max_loaded_minor = 1; + } +} + +int gladLoadGLLoader(GLADloadproc load) { + GLVersion.major = 0; GLVersion.minor = 0; + glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + if(glGetString == NULL) return 0; + if(glGetString(GL_VERSION) == NULL) return 0; + find_coreGL(); + load_GL_VERSION_1_0(load); + load_GL_VERSION_1_1(load); + load_GL_VERSION_1_2(load); + load_GL_VERSION_1_3(load); + load_GL_VERSION_1_4(load); + load_GL_VERSION_1_5(load); + load_GL_VERSION_2_0(load); + load_GL_VERSION_2_1(load); + load_GL_VERSION_3_0(load); + load_GL_VERSION_3_1(load); + load_GL_VERSION_3_2(load); + load_GL_VERSION_3_3(load); + load_GL_VERSION_4_0(load); + load_GL_VERSION_4_1(load); + + if (!find_extensionsGL()) return 0; + load_GL_3DFX_tbuffer(load); + load_GL_AMD_debug_output(load); + load_GL_AMD_draw_buffers_blend(load); + load_GL_AMD_framebuffer_multisample_advanced(load); + load_GL_AMD_framebuffer_sample_positions(load); + load_GL_AMD_gpu_shader_int64(load); + load_GL_AMD_interleaved_elements(load); + load_GL_AMD_multi_draw_indirect(load); + load_GL_AMD_name_gen_delete(load); + load_GL_AMD_occlusion_query_event(load); + load_GL_AMD_performance_monitor(load); + load_GL_AMD_sample_positions(load); + load_GL_AMD_sparse_texture(load); + load_GL_AMD_stencil_operation_extended(load); + load_GL_AMD_vertex_shader_tessellator(load); + load_GL_APPLE_element_array(load); + load_GL_APPLE_fence(load); + load_GL_APPLE_flush_buffer_range(load); + load_GL_APPLE_object_purgeable(load); + load_GL_APPLE_texture_range(load); + load_GL_APPLE_vertex_array_object(load); + load_GL_APPLE_vertex_array_range(load); + load_GL_APPLE_vertex_program_evaluators(load); + load_GL_ARB_ES2_compatibility(load); + load_GL_ARB_ES3_1_compatibility(load); + load_GL_ARB_ES3_2_compatibility(load); + load_GL_ARB_base_instance(load); + load_GL_ARB_bindless_texture(load); + load_GL_ARB_blend_func_extended(load); + load_GL_ARB_buffer_storage(load); + load_GL_ARB_cl_event(load); + load_GL_ARB_clear_buffer_object(load); + load_GL_ARB_clear_texture(load); + load_GL_ARB_clip_control(load); + load_GL_ARB_color_buffer_float(load); + load_GL_ARB_compute_shader(load); + load_GL_ARB_compute_variable_group_size(load); + load_GL_ARB_copy_buffer(load); + load_GL_ARB_copy_image(load); + load_GL_ARB_debug_output(load); + load_GL_ARB_direct_state_access(load); + load_GL_ARB_draw_buffers(load); + load_GL_ARB_draw_buffers_blend(load); + load_GL_ARB_draw_elements_base_vertex(load); + load_GL_ARB_draw_indirect(load); + load_GL_ARB_draw_instanced(load); + load_GL_ARB_fragment_program(load); + load_GL_ARB_framebuffer_no_attachments(load); + load_GL_ARB_framebuffer_object(load); + load_GL_ARB_geometry_shader4(load); + load_GL_ARB_get_program_binary(load); + load_GL_ARB_get_texture_sub_image(load); + load_GL_ARB_gl_spirv(load); + load_GL_ARB_gpu_shader_fp64(load); + load_GL_ARB_gpu_shader_int64(load); + load_GL_ARB_imaging(load); + load_GL_ARB_indirect_parameters(load); + load_GL_ARB_instanced_arrays(load); + load_GL_ARB_internalformat_query(load); + load_GL_ARB_internalformat_query2(load); + load_GL_ARB_invalidate_subdata(load); + load_GL_ARB_map_buffer_range(load); + load_GL_ARB_matrix_palette(load); + load_GL_ARB_multi_bind(load); + load_GL_ARB_multi_draw_indirect(load); + load_GL_ARB_multisample(load); + load_GL_ARB_multitexture(load); + load_GL_ARB_occlusion_query(load); + load_GL_ARB_parallel_shader_compile(load); + load_GL_ARB_point_parameters(load); + load_GL_ARB_polygon_offset_clamp(load); + load_GL_ARB_program_interface_query(load); + load_GL_ARB_provoking_vertex(load); + load_GL_ARB_robustness(load); + load_GL_ARB_sample_locations(load); + load_GL_ARB_sample_shading(load); + load_GL_ARB_sampler_objects(load); + load_GL_ARB_separate_shader_objects(load); + load_GL_ARB_shader_atomic_counters(load); + load_GL_ARB_shader_image_load_store(load); + load_GL_ARB_shader_objects(load); + load_GL_ARB_shader_storage_buffer_object(load); + load_GL_ARB_shader_subroutine(load); + load_GL_ARB_shading_language_include(load); + load_GL_ARB_sparse_buffer(load); + load_GL_ARB_sparse_texture(load); + load_GL_ARB_sync(load); + load_GL_ARB_tessellation_shader(load); + load_GL_ARB_texture_barrier(load); + load_GL_ARB_texture_buffer_object(load); + load_GL_ARB_texture_buffer_range(load); + load_GL_ARB_texture_compression(load); + load_GL_ARB_texture_multisample(load); + load_GL_ARB_texture_storage(load); + load_GL_ARB_texture_storage_multisample(load); + load_GL_ARB_texture_view(load); + load_GL_ARB_timer_query(load); + load_GL_ARB_transform_feedback2(load); + load_GL_ARB_transform_feedback3(load); + load_GL_ARB_transform_feedback_instanced(load); + load_GL_ARB_transpose_matrix(load); + load_GL_ARB_uniform_buffer_object(load); + load_GL_ARB_vertex_array_object(load); + load_GL_ARB_vertex_attrib_64bit(load); + load_GL_ARB_vertex_attrib_binding(load); + load_GL_ARB_vertex_blend(load); + load_GL_ARB_vertex_buffer_object(load); + load_GL_ARB_vertex_program(load); + load_GL_ARB_vertex_shader(load); + load_GL_ARB_vertex_type_2_10_10_10_rev(load); + load_GL_ARB_viewport_array(load); + load_GL_ARB_window_pos(load); + load_GL_ATI_draw_buffers(load); + load_GL_ATI_element_array(load); + load_GL_ATI_envmap_bumpmap(load); + load_GL_ATI_fragment_shader(load); + load_GL_ATI_map_object_buffer(load); + load_GL_ATI_pn_triangles(load); + load_GL_ATI_separate_stencil(load); + load_GL_ATI_vertex_array_object(load); + load_GL_ATI_vertex_attrib_array_object(load); + load_GL_ATI_vertex_streams(load); + load_GL_EXT_EGL_image_storage(load); + load_GL_EXT_bindable_uniform(load); + load_GL_EXT_blend_color(load); + load_GL_EXT_blend_equation_separate(load); + load_GL_EXT_blend_func_separate(load); + load_GL_EXT_blend_minmax(load); + load_GL_EXT_color_subtable(load); + load_GL_EXT_compiled_vertex_array(load); + load_GL_EXT_convolution(load); + load_GL_EXT_coordinate_frame(load); + load_GL_EXT_copy_texture(load); + load_GL_EXT_cull_vertex(load); + load_GL_EXT_debug_label(load); + load_GL_EXT_debug_marker(load); + load_GL_EXT_depth_bounds_test(load); + load_GL_EXT_direct_state_access(load); + load_GL_EXT_draw_buffers2(load); + load_GL_EXT_draw_instanced(load); + load_GL_EXT_draw_range_elements(load); + load_GL_EXT_external_buffer(load); + load_GL_EXT_fog_coord(load); + load_GL_EXT_framebuffer_blit(load); + load_GL_EXT_framebuffer_multisample(load); + load_GL_EXT_framebuffer_object(load); + load_GL_EXT_geometry_shader4(load); + load_GL_EXT_gpu_program_parameters(load); + load_GL_EXT_gpu_shader4(load); + load_GL_EXT_histogram(load); + load_GL_EXT_index_func(load); + load_GL_EXT_index_material(load); + load_GL_EXT_light_texture(load); + load_GL_EXT_memory_object(load); + load_GL_EXT_memory_object_fd(load); + load_GL_EXT_memory_object_win32(load); + load_GL_EXT_multi_draw_arrays(load); + load_GL_EXT_multisample(load); + load_GL_EXT_paletted_texture(load); + load_GL_EXT_pixel_transform(load); + load_GL_EXT_point_parameters(load); + load_GL_EXT_polygon_offset(load); + load_GL_EXT_polygon_offset_clamp(load); + load_GL_EXT_provoking_vertex(load); + load_GL_EXT_raster_multisample(load); + load_GL_EXT_secondary_color(load); + load_GL_EXT_semaphore(load); + load_GL_EXT_semaphore_fd(load); + load_GL_EXT_semaphore_win32(load); + load_GL_EXT_separate_shader_objects(load); + load_GL_EXT_shader_framebuffer_fetch_non_coherent(load); + load_GL_EXT_shader_image_load_store(load); + load_GL_EXT_stencil_clear_tag(load); + load_GL_EXT_stencil_two_side(load); + load_GL_EXT_subtexture(load); + load_GL_EXT_texture3D(load); + load_GL_EXT_texture_array(load); + load_GL_EXT_texture_buffer_object(load); + load_GL_EXT_texture_integer(load); + load_GL_EXT_texture_object(load); + load_GL_EXT_texture_perturb_normal(load); + load_GL_EXT_timer_query(load); + load_GL_EXT_transform_feedback(load); + load_GL_EXT_vertex_array(load); + load_GL_EXT_vertex_attrib_64bit(load); + load_GL_EXT_vertex_shader(load); + load_GL_EXT_vertex_weighting(load); + load_GL_EXT_win32_keyed_mutex(load); + load_GL_EXT_window_rectangles(load); + load_GL_EXT_x11_sync_object(load); + load_GL_GREMEDY_frame_terminator(load); + load_GL_GREMEDY_string_marker(load); + load_GL_HP_image_transform(load); + load_GL_IBM_multimode_draw_arrays(load); + load_GL_IBM_static_data(load); + load_GL_IBM_vertex_array_lists(load); + load_GL_INGR_blend_func_separate(load); + load_GL_INTEL_framebuffer_CMAA(load); + load_GL_INTEL_map_texture(load); + load_GL_INTEL_parallel_arrays(load); + load_GL_INTEL_performance_query(load); + load_GL_KHR_blend_equation_advanced(load); + load_GL_KHR_debug(load); + load_GL_KHR_parallel_shader_compile(load); + load_GL_KHR_robustness(load); + load_GL_MESA_framebuffer_flip_y(load); + load_GL_MESA_resize_buffers(load); + load_GL_MESA_window_pos(load); + load_GL_NVX_conditional_render(load); + load_GL_NVX_gpu_multicast2(load); + load_GL_NVX_linked_gpu_multicast(load); + load_GL_NVX_progress_fence(load); + load_GL_NV_alpha_to_coverage_dither_control(load); + load_GL_NV_bindless_multi_draw_indirect(load); + load_GL_NV_bindless_multi_draw_indirect_count(load); + load_GL_NV_bindless_texture(load); + load_GL_NV_blend_equation_advanced(load); + load_GL_NV_clip_space_w_scaling(load); + load_GL_NV_command_list(load); + load_GL_NV_conditional_render(load); + load_GL_NV_conservative_raster(load); + load_GL_NV_conservative_raster_dilate(load); + load_GL_NV_conservative_raster_pre_snap_triangles(load); + load_GL_NV_copy_image(load); + load_GL_NV_depth_buffer_float(load); + load_GL_NV_draw_texture(load); + load_GL_NV_draw_vulkan_image(load); + load_GL_NV_evaluators(load); + load_GL_NV_explicit_multisample(load); + load_GL_NV_fence(load); + load_GL_NV_fragment_coverage_to_color(load); + load_GL_NV_fragment_program(load); + load_GL_NV_framebuffer_mixed_samples(load); + load_GL_NV_framebuffer_multisample_coverage(load); + load_GL_NV_geometry_program4(load); + load_GL_NV_gpu_multicast(load); + load_GL_NV_gpu_program4(load); + load_GL_NV_gpu_program5(load); + load_GL_NV_gpu_shader5(load); + load_GL_NV_half_float(load); + load_GL_NV_internalformat_sample_query(load); + load_GL_NV_memory_attachment(load); + load_GL_NV_mesh_shader(load); + load_GL_NV_occlusion_query(load); + load_GL_NV_parameter_buffer_object(load); + load_GL_NV_path_rendering(load); + load_GL_NV_pixel_data_range(load); + load_GL_NV_point_sprite(load); + load_GL_NV_present_video(load); + load_GL_NV_primitive_restart(load); + load_GL_NV_query_resource(load); + load_GL_NV_query_resource_tag(load); + load_GL_NV_register_combiners(load); + load_GL_NV_register_combiners2(load); + load_GL_NV_sample_locations(load); + load_GL_NV_scissor_exclusive(load); + load_GL_NV_shader_buffer_load(load); + load_GL_NV_shading_rate_image(load); + load_GL_NV_texture_barrier(load); + load_GL_NV_texture_multisample(load); + load_GL_NV_transform_feedback(load); + load_GL_NV_transform_feedback2(load); + load_GL_NV_vdpau_interop(load); + load_GL_NV_vdpau_interop2(load); + load_GL_NV_vertex_array_range(load); + load_GL_NV_vertex_attrib_integer_64bit(load); + load_GL_NV_vertex_buffer_unified_memory(load); + load_GL_NV_vertex_program(load); + load_GL_NV_vertex_program4(load); + load_GL_NV_video_capture(load); + load_GL_NV_viewport_swizzle(load); + load_GL_OES_byte_coordinates(load); + load_GL_OES_fixed_point(load); + load_GL_OES_query_matrix(load); + load_GL_OES_single_precision(load); + load_GL_OVR_multiview(load); + load_GL_PGI_misc_hints(load); + load_GL_SGIS_detail_texture(load); + load_GL_SGIS_fog_function(load); + load_GL_SGIS_multisample(load); + load_GL_SGIS_pixel_texture(load); + load_GL_SGIS_point_parameters(load); + load_GL_SGIS_sharpen_texture(load); + load_GL_SGIS_texture4D(load); + load_GL_SGIS_texture_color_mask(load); + load_GL_SGIS_texture_filter4(load); + load_GL_SGIX_async(load); + load_GL_SGIX_flush_raster(load); + load_GL_SGIX_fragment_lighting(load); + load_GL_SGIX_framezoom(load); + load_GL_SGIX_igloo_interface(load); + load_GL_SGIX_instruments(load); + load_GL_SGIX_list_priority(load); + load_GL_SGIX_pixel_texture(load); + load_GL_SGIX_polynomial_ffd(load); + load_GL_SGIX_reference_plane(load); + load_GL_SGIX_sprite(load); + load_GL_SGIX_tag_sample_buffer(load); + load_GL_SGI_color_table(load); + load_GL_SUNX_constant_data(load); + load_GL_SUN_global_alpha(load); + load_GL_SUN_mesh_array(load); + load_GL_SUN_triangle_list(load); + load_GL_SUN_vertex(load); + return GLVersion.major != 0 || GLVersion.minor != 0; +} + diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..a8345dc --- /dev/null +++ b/src/main.c @@ -0,0 +1,417 @@ +#include "main.h" +#include "gfx/vao.h" +#include "gfx/vbo.h" +#include "glad/glad.h" + +int main(int argc, char const *argv[]) +{ + if (argc < 2){ + //std::cout << "Usage: " << argv[0] << " videofilename" << std::endl; + return -1; + } + //////////// SOCKET SERVER + //// create socket file descriptor + //int server_fd; + //if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) + //{ + // perror("socket failed"); + // exit(EXIT_FAILURE); + //} + + //// create socket address + //// forcefully attach socket to the port + //struct sockaddr_in address; + //int opt = 1; + //if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) + //{ + // perror("setsockopt failed"); + // exit(EXIT_FAILURE); + //} + //address.sin_family = AF_INET; + //address.sin_addr.s_addr = INADDR_ANY; + //address.sin_port = htons(SERVER_PORT); + + //// bind socket to address + //if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) + //{ + // perror("bind failed"); + // exit(EXIT_FAILURE); + //} + + + //// listen to incoming connections + //if (listen(server_fd, QUEUE_LENGTH) < 0) + //{ + // perror("listen failed"); + // exit(EXIT_FAILURE); + //} + + ////////// GLFW INIT + glfwInit(); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + + ///////// Create window + if ((wwindow = glfwCreateWindow(window_width, window_height, "a-mpv", NULL, NULL)) == NULL){ + printf("ERROR::GLFW::Failed to create window\n"); + return -1; + } + glfwMakeContextCurrent(wwindow); + glfwSetFramebufferSizeCallback(wwindow, framebuffer_size_callback); + + ///////// Load GLAD + if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){ + printf("ERROR::GLAD::Failed to initialize GLAD\n"); + return -1; + } + + //////////// Initializing placeholder for FT text glyphs + //std::map Characters; + //makeBitmaps(Characters); + + ///////// GL parameters + glEnable(GL_DEPTH); + glEnable(GL_MULTISAMPLE); + glfwWindowHint(GLFW_SAMPLES, 4); + + ///////// MPV INIT + mpv = mpv_create(); + if (mpv_initialize(mpv) < MPV_ERROR_SUCCESS){ + printf("ERROR::MPV::Failed to initialize mpv\n"); + return -1; + } + + mpv_opengl_init_params opengl_init_params={get_proc_address, NULL}; + int adv = 1; // we will use the update callback + mpv_render_param render_param[] = { + {MPV_RENDER_PARAM_API_TYPE, (char *)(MPV_RENDER_API_TYPE_OPENGL)}, + {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &opengl_init_params}, + {MPV_RENDER_PARAM_ADVANCED_CONTROL, &adv}, + {MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, NULL}, + {MPV_RENDER_PARAM_INVALID, NULL}, + }; + + if (mpv_render_context_create(&mpv_ctx, mpv, render_param) < MPV_ERROR_SUCCESS){ + printf("ERROR::MPV::Failed to create MPV render context\n"); + return -1; + } + mpv_set_wakeup_callback(mpv, on_mpv_events, NULL); + mpv_render_context_set_update_callback(mpv_ctx, on_mpv_render_update, NULL); + + const char *cmd[] = {"loadfile", argv[1], NULL}; + mpv_command(mpv, cmd); + mpv_set_option_string(mpv, "loop", ""); + mpv_set_option_string(mpv, "gpu-api", "opengl"); + mpv_set_option_string(mpv, "hwdec", "auto"); + mpv_set_option_string(mpv, "vd-lavc-dr", "yes"); + //mpv_set_option_string(mpv, "terminal", "yes"); + // mpv_set_option_string(mpv, "video-timing-offset", "0"); // this need manual fps adjustment mpv_render_frame_info() + check_error(mpv_set_option_string(mpv, "input-default-bindings", "yes")); + mpv_set_option_string(mpv, "input-vo-keyboard", "yes"); + int val = 1; + check_error(mpv_set_option(mpv, "osc", MPV_FORMAT_FLAG, &val)); + + + + + struct Shader screenShader = shader_create( + "res/shaders/screen_vs.glsl", "res/shaders/screen_fs.glsl", + 2, (struct VertexAttr[]){ + { .index = 0, .name = "pos" }, + { .index = 1, .name = "texCoords"} + }); + + + //// TEST VAO REPLACE + + quadVAOTEST = vao_create(); + quadVBOTEST = vbo_create(GL_ARRAY_BUFFER, false); + + vao_bind(quadVAOTEST); + vbo_bind(quadVBOTEST); + + vbo_buffer(quadVBOTEST, &quadVertices, 0, sizeof(quadVertices)); + vao_attr(quadVAOTEST, quadVBOTEST, 0, 3, GL_FLOAT, 5*sizeof(float), 0); + vao_attr(quadVAOTEST, quadVBOTEST, 1, 2, GL_FLOAT, 5*sizeof(float), (3 * sizeof(float))); + + //Framebuffer for Video + glGenFramebuffers(1, &video_framebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, video_framebuffer); + + // create a color attachment texture + glGenTextures(1, &video_textureColorbuffer); + glBindTexture(GL_TEXTURE_2D, video_textureColorbuffer); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, fbo_width, fbo_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, video_textureColorbuffer, 0); + + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + printf("ERROR::FRAMEBUFFER:: VIDEO Framebuffer #%d is not complete!\n", video_framebuffer); + mpv_opengl_fbo mpv_fbo = {(int)(video_framebuffer), fbo_width, fbo_height, 0}; + int flip_y = 1; + mpv_render_param params_fbo[] = { + {MPV_RENDER_PARAM_OPENGL_FBO, &mpv_fbo}, + {MPV_RENDER_PARAM_FLIP_Y, &flip_y}, + {MPV_RENDER_PARAM_INVALID, NULL}}; + + ////////// IMAGE TEST + //// Import image + //int imgWidth, imgHeight, imgChan; + //stbi_set_flip_vertically_on_load(true); + //unsigned char* bytes = stbi_load("./assets/miporin.png", &imgWidth, &imgHeight, &imgChan, 0); + + //GLuint imgTex; + //glGenTextures(1, &imgTex); + //glActiveTexture(GL_TEXTURE1); + //glBindTexture(GL_TEXTURE_2D, imgTex); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + ////Load image in texture + //glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imgWidth, imgHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, bytes); + //glGenerateMipmap(GL_TEXTURE_2D); + + //unsigned int imgVAO, imgVBO; + //glGenVertexArrays(1, &imgVAO); + //glGenBuffers(1, &imgVBO); + //glBindVertexArray(imgVAO); + //glBindBuffer(GL_ARRAY_BUFFER, imgVBO); + //glBufferData(GL_ARRAY_BUFFER, sizeof(imgVertices), &imgVertices, GL_STATIC_DRAW); + //glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void *)0); // coordinates + //glEnableVertexAttribArray(0); + //glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void *)(3 * sizeof(float))); //texture + //glEnableVertexAttribArray(1); + + //Shader *imgShader = new Shader("shaders/img_vs.glsl", "shaders/img_fs.glsl"); + //imgShader->use(); + //GLuint texture1 = glGetUniformLocation(imgShader->ID, "texture1"); + //glUniform1i(texture1, 0); + + //glm::mat4 imgMatrix(1.0f); // = glm::ortho(0.0f, static_cast(window_width), 0.0f, static_cast(window_height)); + //imgMatrix = glm::scale(imgMatrix, glm::vec3(0.25f, 0.25f ,0.25f)); + //imgMatrix = glm::translate(imgMatrix, glm::vec3(-15.0f, 0.0f, 0.0f)); + + + + + ////////// Text-rendering configuration + //unsigned int VAO, VBO; + //glGenVertexArrays(1, &VAO); + //glGenBuffers(1, &VBO); + //glBindVertexArray(VAO); + //glBindBuffer(GL_ARRAY_BUFFER, VBO); + //glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 6 * 4, NULL, GL_DYNAMIC_DRAW); + //glEnableVertexAttribArray(0); + //glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), 0); + //glBindBuffer(GL_ARRAY_BUFFER, 0); + //glBindVertexArray(0); + + //Shader *glyphShader = new Shader("shaders/glyph_vs.glsl", "shaders/glyph_fs.glsl"); + //glm::mat4 transformation = glm::ortho(0.0f, static_cast(window_width), 0.0f, static_cast(window_height)); + + ////////// Vertical spacing for danmakus and bool freespace array + //const uint nb_danmakuRows = (uint)( + // (float)(window_height - + // DANMAKU_MARGIN_TOP - + // DANMAKU_MARGIN_TOP) / + // (float)(GLYPH_SIZE + DANMAKU_PADDING_V)); + + //uint *ph_danmakuRows = new uint[nb_danmakuRows]; + //std::fill_n(ph_danmakuRows, nb_danmakuRows, 1); + + + ////////// Other params + //float deltaPix = 0.0f; + //float danmakuNextYPos = (float)window_height-100.0f; + //int danmakuLine = 1; + //int danmakuMaxLines = 10; + //float danmakuDeltaY = 60.0f; + //float glyphXPos = 0; + + //int isAvailable = 1; + //uint nextDanmakuRow = 0; + //uint danCount = 0; + + ///// WAIT FOR SOCKET + //// accept a connection + //int sock; + //int addrlen = sizeof(address); + //if ((sock = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) + //{ + // perror("accept failed"); + // exit(EXIT_FAILURE); + //} + //else { + // std::cout << "accepted" << std::endl; + //} + + //int rr = SetSocketBlockingEnabled(sock, 0); + //std::cout << "Blocking: " << rr << std::endl; + + //char buffer[RECV_BUFFER_SIZE]; + //int recv_bytes; + + ////Load fake danmakus + //std::vector danmakus; + + + ////////// Packing infos + //Render r = {window_height, window_width, + // screenShader, glyphShader, imgShader + // }; + + + + //////////////////////////////////////////////////////////////////////////////// + while (!glfwWindowShouldClose(wwindow)) + { + fcount++; + float currentFrame = glfwGetTime(); + deltaTime = currentFrame - lastFrame; + lastFrame = currentFrame; + //if (fcount % 100 == 0){ + // std::cout << "FPS: " << 1 / deltaTime << "\n" << std::endl; + // } + processGLFWInput(wwindow, mpv); + // ----- + + if (wakeup) + { + if ((mpv_render_context_update(mpv_ctx) & MPV_RENDER_UPDATE_FRAME)) + { + mpv_render_context_render(mpv_ctx, params_fbo); // this "renders" to the video_framebuffer "linked by ID" in the params_fbo - BLOCKING + glViewport(0, 0, window_width, window_height); // fucky + } + } + //screenShader->use(); + shader_bind(screenShader); + + //glBindVertexArray(quadVBO); // <-- The SCREEN QUAD + vao_bind(quadVAOTEST); + glBindTexture(GL_TEXTURE_2D, video_textureColorbuffer); // <-- SCREEN Colorbuffer IS THE TEXTURE + glDrawArrays(GL_TRIANGLES, 0, 6); + + // ----- + if (wakeup) + { + mpv_render_context_report_swap(mpv_ctx); + wakeup = 0; + } + + //Distance during deltaTime for consistent translation + + //// Draw image + //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + //imgShader->use(); + //glBindVertexArray(imgVBO); // <-- The SCREEN QUAD + //glBindTexture(GL_TEXTURE_2D, imgTex); // <-- SCREEN Colorbuffer IS THE TEXTURE + + //imgMatrix = glm::translate(imgMatrix, glm::vec3(0.5/deltaPix, 0.0f, 0.0f)); + //glUniformMatrix4fv(glGetUniformLocation(imgShader->ID, "transformation"), 1, GL_FALSE, glm::value_ptr(imgMatrix)); + + //glDrawArrays(GL_TRIANGLES, 0, 6); + + + // // Glyphs + //transformation = glm::translate(transformation, glm::vec3(deltaPix , 0.0f, 0.0f)); + + //glyphShader->use(); + + //// TEMPORARY + //glUniformMatrix4fv(glGetUniformLocation(glyphShader->ID, "transformation"), 1, GL_FALSE, glm::value_ptr(transformation)); + + /////////////////////////////////////////// SOCKET + + //recv_bytes = recv(sock, buffer, RECV_BUFFER_SIZE, 0); + //if(recv_bytes >= 1){ + // danmakus.push_back({buffer, 1, (float)window_width, 400.0f, 1, 0, 0}); + //} + //std::cout << danmakus.front().text << std::endl; + + /////////////////////////////////////////// Danmaku update + //updateDanmakus(r); + + //} + + glfwSwapBuffers(wwindow); + glfwPollEvents(); + //usleep(10000); // we LIMIT the main render loop to 100FPS! If VSYSNC is enabled the limit is the VSYNC limit (~60fps) + } + mpv_render_context_free(mpv_ctx); + mpv_terminate_destroy(mpv); + glfwTerminate(); + + + + return 0; +} + +void processGLFWInput(GLFWwindow *window, mpv_handle *ctx) +{ + glfwSetInputMode(window, GLFW_STICKY_KEYS, GLFW_FALSE); + if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) { + glfwSetWindowShouldClose(window, true); + } + + if (glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS) { + const char *c[] = {"show-text", "lol", NULL}; + check_error(mpv_command(ctx, c)); + } + +} + +// Returns the address of the specified function (name) for the given context (ctx) +static void *get_proc_address(void *ctx, const char *name) +{ + glfwGetCurrentContext(); + return (void *)(glfwGetProcAddress(name)); +} + +static void on_mpv_render_update(void *ctx) +{ + // we set the wakeup flag here to enable the mpv_render_context_render path in the main loop. + wakeup = 1; +} + +static void on_mpv_events(void *ctx) +{ + //std::cout << "INFO::" << __func__ << std::endl; +} + +void framebuffer_size_callback(GLFWwindow *window, int width, int height) +{ + // we have to rescale the Texture and renderbuffer storage. + window_height = height; + window_width = width; + glBindTexture(GL_TEXTURE_2D, screen_textureColorbuffer); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, window_width, window_height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); + glBindRenderbuffer(GL_RENDERBUFFER, screen_rbo); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, window_width, window_height); +} + +static inline void check_error(int status) +{ + if (status < 0) { + printf("mpv API error: %s\n", mpv_error_string(status)); + //exit(1); + } +} +// +///** Returns true on success, or false if there was an error */ +//bool SetSocketBlockingEnabled(int fd, bool blocking) +//{ +// if (fd < 0) return false; +// +//#ifdef _WIN32 +// unsigned long mode = blocking ? 0 : 1; +// return (ioctlsocket(fd, FIONBIO, &mode) == 0) ? true : false; +//#else +// int flags = fcntl(fd, F_GETFL, 0); +// if (flags == -1) return false; +// flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); +// return (fcntl(fd, F_SETFL, flags) == 0) ? true : false; +//#endif +//} diff --git a/src/main.h b/src/main.h new file mode 100644 index 0000000..5543252 --- /dev/null +++ b/src/main.h @@ -0,0 +1,107 @@ +#ifndef __MAIN_H +#define __MAIN_H + +//#include +#include "gfx/gfx.h" + +#include +#include + +#include "gfx/vao.h" +#include "gfx/vbo.h" + +//#include "danmaku/danmaku.h" + +//#include +#include +#include "gfx/shader.h" +#include "gfx/bitmap.h" + +//#include "glm/glm.hpp" +//#include +//#include +//#include + +//#include +//#include +//#include +//#include +//#include + +#define QUEUE_LENGTH 10 +#define RECV_BUFFER_SIZE 2048 +#define SERVER_PORT 10000 + + +//#include +//#include FT_FREETYPE_H +// +//#include +// +//#define STB_IMAGE_IMPLEMENTATION +//#include + +int main(int argc, char const *argv[]); + +int window_width = 1366; +int window_height = 768; +int fbo_width = 1366; +int fbo_height = 768; + +GLFWwindow *wwindow = NULL; +mpv_handle *mpv; +mpv_render_context *mpv_ctx; + +unsigned int video_framebuffer; +unsigned int video_textureColorbuffer; + +unsigned int screen_framebuffer; +unsigned int screen_textureColorbuffer; + +unsigned int screen_rbo; +unsigned int video_rbo; +unsigned int quadVAO, quadVBO; +unsigned int cubeVAO, cubeVBO; + +struct VAO quadVAOTEST; +struct VBO quadVBOTEST; + +float deltaTime, lastFrame; +unsigned int fcount = 0; +bool animation=true; + +static void *get_proc_address(void *ctx, const char *name); +void processGLFWInput(GLFWwindow *window, mpv_handle *); +void framebuffer_size_callback(GLFWwindow *window, int width, int height); + +float imgVertices[] = { + // positions // texCoords + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + -1.0f, -1.0f, 0.0f , 0.0f, 0.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 0.0f, 1.0f, 1.0f}; + +float quadVertices[] = { + // positions // texCoords + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + -1.0f, -1.0f, 0.0f , 0.0f, 0.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 0.0f, 1.0f, 1.0f}; + + +static void on_mpv_render_update(void *ctx); +static void on_mpv_events(void *ctx); +unsigned int wakeup = 0; + +static inline void check_error(int); + +bool SetSocketBlockingEnabled(int fd, bool blocking); + + +#endif diff --git a/src/overlay/danmaku.cpp b/src/overlay/danmaku.cpp new file mode 100644 index 0000000..6532848 --- /dev/null +++ b/src/overlay/danmaku.cpp @@ -0,0 +1,208 @@ +#include "danmaku.h" + +/// This is so fucking bad, just store everything and redraw with a translation in the shader holy shit +float RenderText(Shader s, std::string text, float x, float y, float scale, glm::vec3 color, uint &VAO, uint &VBO, std::map& Characters, float window_width) +{ + + // activate corresponding render state + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + s.use(); + + glUniform3f(glGetUniformLocation(s.ID, "textColor"), color.x, color.y, color.z); + glActiveTexture(GL_TEXTURE0); + glBindVertexArray(VAO); + + Character ch; + + float xpos; + float ypos; + float w; + float h; + + // iterate through all characters + std::string::const_iterator c; + for (c = text.begin(); c != text.end(); c++) + { + ch = Characters[*c]; + + xpos = x + ch.Bearing.x * scale; + ypos = y - (ch.Size.y - ch.Bearing.y) * scale; + + w = ch.Size.x * scale; + h = ch.Size.y * scale; + // update VBO for each character + float vertices[6][4] = { + { xpos, ypos + h, 0.0f, 0.0f }, + { xpos, ypos, 0.0f, 1.0f }, + { xpos + w, ypos, 1.0f, 1.0f }, + + { xpos, ypos + h, 0.0f, 0.0f }, + { xpos + w, ypos, 1.0f, 1.0f }, + { xpos + w, ypos + h, 1.0f, 0.0f } + }; + // render glyph texture over quad + glBindTexture(GL_TEXTURE_2D, ch.TextureID); + // update content of VBO memory + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); + glBindBuffer(GL_ARRAY_BUFFER, 0); + // render quad + glDrawArrays(GL_TRIANGLES, 0, 6); + // now advance cursors for next glyph (note that advance is number of 1/64 pixels) + x += (ch.Advance >> 6) * scale; // bitshift by 6 to get value in pixels (2^6 = 64) + } + glBindVertexArray(0); + glBindTexture(GL_TEXTURE_2D, 0); + + return xpos; +} + +//// Create bitmaps for text rendering +void makeBitmaps(std::map& Characters){ + ///////// FREETYPE2 INIT + FT_Library ft; + if (FT_Init_FreeType(&ft)){ + std::cout << "ERROR::FREETYPE: Could not init FreeType Library" << std::endl; + exit(EXIT_FAILURE); + } + FT_Face face; + if (FT_New_Face(ft, "/usr/share/fonts/TTF/DejaVuSans.ttf", 0, &face)){ + std::cout << "ERROR::FREETYPE: Failed to load font" << std::endl; + exit(EXIT_FAILURE); + } + FT_Set_Pixel_Sizes(face, 0, GLYPH_SIZE); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // disable byte-alignment restriction + glEnable(GL_BLEND); + + + for (unsigned char c = 0; c < 128; c++){ + // load character glyph + if (FT_Load_Char(face, c, FT_LOAD_RENDER)){ + std::cout << "ERROR::FREETYTPE: Failed to load Glyph" << std::endl; + continue; + } + // generate texture + unsigned int texture; + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + glTexImage2D( + GL_TEXTURE_2D, + 0, + GL_RED, + face->glyph->bitmap.width, + face->glyph->bitmap.rows, + 0, + GL_RED, + GL_UNSIGNED_BYTE, + face->glyph->bitmap.buffer + ); + // set texture options + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + // now store character for later use + Character character = { + texture, + glm::ivec2(face->glyph->bitmap.width, face->glyph->bitmap.rows), + glm::ivec2(face->glyph->bitmap_left, face->glyph->bitmap_top), + face->glyph->advance.x + }; + Characters.insert(std::pair(c, character)); + } + /// Clear glyphs + FT_Done_Face(face); + FT_Done_FreeType(ft); +} + +//TODO: Status <-> + +/* + Sets nextRow to the index of the next free danmaku row and returns 1 if one is available, returns 0 otherwise. + */ +int getNextDanmakuRow(uint *ph_danmakuRows, int length, uint *nextRow) { + for(int row = 0; row < length; row++) { + if( (ph_danmakuRows)[row] ){ + *nextRow = row; + return 1; + } + } + return 0; +} + +/* + Flips the status of the danmaku row. +*/ +int updateDanmakuRow(uint *ph_danmakuRows, uint row) { + ph_danmakuRows[row] = !ph_danmakuRows[row]; + return 0; +} + +/* + Updates danmaku array according to the delta between last frame and current frame. +*/ +int updateDanmakus(Render *r){ + + // Amount of pixels to translate the danmakus by + float deltaPix = DANMAKU_SPEED*delta; + // Last glyph x-position (last pixel on the string) + float lastPix = 0.0f; + + // Keep track of danmaku index + uint danmakuIndex = 0; + + for(Danmaku &danmaku : danmakus) { + if(danmaku.isNew) { + // Try to assign the new danmaku's row to a free slot + if(getNextDanmakuRow(ph_danmakuRows, nb_danmakuRows, &(danmaku.row))){ + // Compute the height for that row + danmaku.ypos = (r->h - DANMAKU_MARGIN_TOP) - + (danmaku.row + 1) * (DANMAKU_PADDING_V + GLYPH_SIZE); + danmaku.xpos = r->w; + // Set the slot to unavailable + updateDanmakuRow(ph_danmakuRows, danmaku.row); + danmaku.tailCheck = 0; + } + danmaku.isNew = 0; + } + else { + // Translate danmaku + danmaku.xpos -= deltaPix; + } + + // Draw the danmaku and get tail position + lastPix = RenderText(r, danmaku.text, danmaku.xpos, danmaku.ypos, 1.0f, glm::vec3(0.0, 0.26f, 0.0f)); + if(lastPix + DANMAKU_PADDING_H < 0) { + danmakus.erase(danmakus.begin() + danmakuIndex); + } + + // Check if the tail of the danmaku is free (only check once) + if(!danmaku.tailCheck && (r->w > lastPix + (float)DANMAKU_PADDING_H)) { + // Free the row slot + updateDanmakuRow(ph_danmakuRows, danmaku.row); + danmaku.tailCheck = 1; + } + } + danmakuIndex++; + } + return 1; +} + + +OverlayHandler() { + init(); +} + +int OverlayHandler::init() { + glGenVertexArrays(1, &VAO); + glGenBuffers(1, &VBO); + glBindVertexArray(VAO); + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 6 * 4, NULL, GL_DYNAMIC_DRAW); + glEnableVertexAttribArray(0); + glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindVertexArray(0); + +} diff --git a/src/overlay/danmaku.h b/src/overlay/danmaku.h new file mode 100644 index 0000000..ea97eff --- /dev/null +++ b/src/overlay/danmaku.h @@ -0,0 +1,65 @@ +#ifndef _DANMAKU_H_ +#define _DANMAKU_H_ + +#include +#include +#include +#include "stdlib.h" +#include "stdio.h" + +#include +#include FT_FREETYPE_H + +#define GLYPH_SIZE 36 +#define DANMAKU_MARGIN_TOP 50 +#define DANMAKU_MARGIN_BOT 50 +#define DANMAKU_PADDING_H 200 +#define DANMAKU_PADDING_V 20 +#define DANMAKU_SPEED_V 200.0f + +// Glyphs +typedef struct Character { + unsigned int TextureID; // ID handle of the glyph texture + glm::ivec2 Size; // Size of glyph + glm::ivec2 Bearing; // Offset from baseline to left/top of glyph + long int Advance; // Offset to advance to next glyph +} Character; + +// Danmaku +typedef struct Danmaku { + std::string text; + uint isActive; + float xpos; + float ypos; + uint isNew; + uint row; + uint tailCheck; +} Danmaku; + +class OverlayHandler() { + public: + OverlayHandler(); + + float RenderText(Shader, std::string, float, float, float, glm::vec3, uint &, uint &, std::map&); + + int init(); + + private: + unsigned int VAO, VBO; + + void makeBitmaps(std::map &); + + Shader *glyphShader = new Shader("shaders/glyph_vs.glsl", "shaders/glyph_fs.glsl"); + + +} + + + + + +int getNextDanmakuRow(uint *, int, uint* ); +int updateDanmakuRow(uint *, uint); + +int updateDanmakus(Danmaku *, float); +#endif diff --git a/src/overlay/overlay.cpp b/src/overlay/overlay.cpp new file mode 100644 index 0000000..ab8d351 --- /dev/null +++ b/src/overlay/overlay.cpp @@ -0,0 +1,59 @@ +#include "danmaku.h" + +//// Create bitmaps for text rendering +void makeBitmaps(std::map& Characters){ + ///////// FREETYPE2 INIT + FT_Library ft; + if (FT_Init_FreeType(&ft)){ + std::cout << "ERROR::FREETYPE: Could not init FreeType Library" << std::endl; + exit(EXIT_FAILURE); + } + FT_Face face; + if (FT_New_Face(ft, "/usr/share/fonts/TTF/DejaVuSans.ttf", 0, &face)){ + std::cout << "ERROR::FREETYPE: Failed to load font" << std::endl; + exit(EXIT_FAILURE); + } + FT_Set_Pixel_Sizes(face, 0, GLYPH_SIZE); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // disable byte-alignment restriction + glEnable(GL_BLEND); + + + for (unsigned char c = 0; c < 128; c++){ + // load character glyph + if (FT_Load_Char(face, c, FT_LOAD_RENDER)){ + std::cout << "ERROR::FREETYTPE: Failed to load Glyph" << std::endl; + continue; + } + // generate texture + unsigned int texture; + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + glTexImage2D( + GL_TEXTURE_2D, + 0, + GL_RED, + face->glyph->bitmap.width, + face->glyph->bitmap.rows, + 0, + GL_RED, + GL_UNSIGNED_BYTE, + face->glyph->bitmap.buffer + ); + // set texture options + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + // now store character for later use + Character character = { + texture, + glm::ivec2(face->glyph->bitmap.width, face->glyph->bitmap.rows), + glm::ivec2(face->glyph->bitmap_left, face->glyph->bitmap_top), + face->glyph->advance.x + }; + Characters.insert(std::pair(c, character)); + } + /// Clear glyphs + FT_Done_Face(face); + FT_Done_FreeType(ft); +} diff --git a/src/overlay/overlay.h b/src/overlay/overlay.h new file mode 100644 index 0000000..eff5adf --- /dev/null +++ b/src/overlay/overlay.h @@ -0,0 +1,48 @@ +#ifndef _OVERLAY_H_ +#define _OVERLAY_H_ + +#include +#include +#include +#include "stdlib.h" +#include "stdio.h" + +#include +#include FT_FREETYPE_H + +#define GLYPH_SIZE 36 +#define DANMAKU_MARGIN_TOP 50 +#define DANMAKU_MARGIN_BOT 50 +#define DANMAKU_PADDING_H 200 +#define DANMAKU_PADDING_V 20 +#define DANMAKU_SPEED_V 200.0f + +// Glyphs +typedef struct Character { + unsigned int TextureID; // ID handle of the glyph texture + glm::ivec2 Size; // Size of glyph + glm::ivec2 Bearing; // Offset from baseline to left/top of glyph + long int Advance; // Offset to advance to next glyph +} Character; + +// Danmaku +typedef struct Danmaku { + std::string text; + uint isActive; + float xpos; + float ypos; + uint isNew; + uint row; + uint tailCheck; +} Danmaku; + +class Overlay() { + public: + OverlayHandler(); + int init(); + + private: + void makeBitmaps(std::map &); +} + +#endif diff --git a/src/player/mainold.h b/src/player/mainold.h new file mode 100644 index 0000000..aa658b7 --- /dev/null +++ b/src/player/mainold.h @@ -0,0 +1,123 @@ +#ifndef __MAIN_H +#define __MAIN_H + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include "glm/glm.hpp" +#include +#include +#include + +#include +#include +#include +#include +#include + +#define QUEUE_LENGTH 10 +#define RECV_BUFFER_SIZE 2048 +#define SERVER_PORT 10000 + + +#include +#include FT_FREETYPE_H + +#include + +#define STB_IMAGE_IMPLEMENTATION +#include + +#include "danmaku.h" + +class DanmakuHandler { + public: + + private: + +} + +typedef struct Render { + // Window info + float h; + float w; + + // Shaders + Shader *screenShader; + Shader *glyphShader; + Shader *imgShader; + + // Danmakus + std::map Characters; + + +} Render; + +int window_width = 1366; +int window_height = 768; +int fbo_width = 1366; +int fbo_height = 768; + +GLFWwindow *window = NULL; +mpv_handle *mpv; +mpv_render_context *mpv_ctx; + +unsigned int video_framebuffer; +unsigned int video_textureColorbuffer; + +unsigned int screen_framebuffer; +unsigned int screen_textureColorbuffer; + +unsigned int screen_rbo; +unsigned int video_rbo; +unsigned int quadVAO, quadVBO; +unsigned int cubeVAO, cubeVBO; + +float deltaTime, lastFrame; +unsigned int fcount = 0; +bool animation=true; + +static void *get_proc_address(void *ctx, const char *name); +void processGLFWInput(GLFWwindow *window, mpv_handle *); +void framebuffer_size_callback(GLFWwindow *window, int width, int height); + +float imgVertices[] = { + // positions // texCoords + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + -1.0f, -1.0f, 0.0f , 0.0f, 0.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 0.0f, 1.0f, 1.0f}; + +float quadVertices[] = { + // positions // texCoords + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + -1.0f, -1.0f, 0.0f , 0.0f, 0.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 0.0f, 1.0f, 1.0f}; + + +static void on_mpv_render_update(void *ctx); +static void on_mpv_events(void *ctx); +unsigned int wakeup = 0; + + + +static inline void check_error(int); + +bool SetSocketBlockingEnabled(int fd, bool blocking); + +#endif diff --git a/src/player/player.h b/src/player/player.h new file mode 100644 index 0000000..09f0f3c --- /dev/null +++ b/src/player/player.h @@ -0,0 +1,7 @@ +class Player() { + public: + int init + + private: + +} diff --git a/src/util/aabb.h b/src/util/aabb.h new file mode 100644 index 0000000..76e99c4 --- /dev/null +++ b/src/util/aabb.h @@ -0,0 +1,47 @@ +#ifndef AABB_H +#define AABB_H + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-braces" + +#include +#include + +#pragma GCC diagnostic pop + +#include "types.h" +#include "fmath.h" + +typedef vec3s AABB[2]; + +#define AABB_COPY(_aabb) { (_aabb)[0], (_aabb)[1] } + +// returns the depth of collision of aabb a into aabb b +static inline vec3s glms_aabb_aabb_depth(vec3s a[2], vec3s b[2]) { + vec3s result, a_c = glms_aabb_center(a), b_c = glms_aabb_center(b); + + for (size_t i = 0; i < 3; i++) { + if (a_c.raw[i] < b_c.raw[i]) { + result.raw[i] = a[1].raw[i] - b[0].raw[i]; + } else { + result.raw[i] = b[1].raw[i] - a[0].raw[i]; + } + } + + return result; +} + +// scales an AABB the specified amounts along each axis +static inline void glms_aabb_scale(AABB box, vec3s scale, AABB dest) { + vec3s center = glms_aabb_center(box); + vec3s size = glms_vec3_sub(box[1], box[0]); + + vec3s new_size = glms_vec3_mul(size, scale); + vec3s half_new_size = glms_vec3_scale(new_size, 0.5f); + + // scaled AABB centered around same center + dest[0] = glms_vec3_add(glms_vec3_scale(half_new_size, -1.0f), center); + dest[1] = glms_vec3_add(glms_vec3_sub(new_size, half_new_size), center); +} + +#endif \ No newline at end of file diff --git a/src/util/bitmap.h b/src/util/bitmap.h new file mode 100644 index 0000000..a4afe88 --- /dev/null +++ b/src/util/bitmap.h @@ -0,0 +1,18 @@ +#ifndef BITMAP_H +#define BITMAP_H + +#include +#include "types.h" + +typedef u8 *Bitmap; + +#define BITMAP_SIZE_TO_BYTES(_sz) ((((_sz) / 64) + 1) * sizeof(u64)) + +static inline Bitmap bitmap_alloc(u64 sz) { return (Bitmap) malloc(BITMAP_SIZE_TO_BYTES(sz)); } +static inline Bitmap bitmap_calloc(u64 sz) { return (Bitmap) calloc(1, BITMAP_SIZE_TO_BYTES(sz)); } +static inline Bitmap bitmap_realloc(Bitmap self, u64 sz) { return (Bitmap) realloc((void *) self, BITMAP_SIZE_TO_BYTES(sz)); } +static inline void bitmap_set(Bitmap self, u64 n) { ((u8 *) self)[n / 8] |= (1 << (n % 8)); } +static inline bool bitmap_get(Bitmap self, u64 n) { return (((u8 *) self)[n / 8] & (1 << (n % 8))) != 0; } +static inline void bitmap_clr(Bitmap self, u64 n) { ((u8 *) self)[n / 8] &= ~(1 << (n % 8)); } + +#endif \ No newline at end of file diff --git a/src/util/color.c b/src/util/color.c new file mode 100644 index 0000000..479aafa --- /dev/null +++ b/src/util/color.c @@ -0,0 +1,86 @@ +#include "color.h" + +// Conversion code adapted from https://gist.github.com/mattatz/44f081cac87e2f7c8980#file-labcolorspace-cginc-L29 + +vec3s rgb2xyz(vec3s c) { + vec3s tmp; + tmp.x = ( c.x > 0.04045 ) ? pow( ( c.x + 0.055 ) / 1.055, 2.4 ) : c.x / 12.92; + tmp.y = ( c.y > 0.04045 ) ? pow( ( c.y + 0.055 ) / 1.055, 2.4 ) : c.y / 12.92, + tmp.z = ( c.z > 0.04045 ) ? pow( ( c.z + 0.055 ) / 1.055, 2.4 ) : c.z / 12.92; + const mat3s mat = (mat3s) { .col = { + (vec3s) {{ 0.4124, 0.3576, 0.1805 }}, + (vec3s) {{ 0.2126, 0.7152, 0.0722 }}, + (vec3s) {{ 0.0193, 0.1192, 0.9505 }} + }}; + return glms_vec3_scale(glms_mat3_mulv(mat, tmp), 100.0f); +} + +vec3s xyz2lab(vec3s c) { + vec3s n = glms_vec3_div(c, (vec3s){{95.047, 100, 108.883}}); + vec3s v; + v.x = (n.x > 0.008856) ? pow(n.x, 1.0 / 3.0) : (7.787 * n.x) + (16.0 / 116.0); + v.y = (n.y > 0.008856) ? pow(n.y, 1.0 / 3.0) : (7.787 * n.y) + (16.0 / 116.0); + v.z = (n.z > 0.008856) ? pow(n.z, 1.0 / 3.0) : (7.787 * n.z) + (16.0 / 116.0); + return (vec3s){{(116.0 * v.y) - 16.0, 500.0 * (v.x - v.y), 200.0 * (v.y - v.z)}}; +} + +vec3s rgb2lab(vec3s c) { + vec3s lab = xyz2lab(rgb2xyz(c)); + return (vec3s){{lab.x / 100.0, 0.5 + 0.5 * (lab.y / 127.0), 0.5 + 0.5 * (lab.z / 127.0)}}; +} + +vec3s lab2xyz(vec3s c) { + f32 fy = (c.x + 16.0) / 116.0; + f32 fx = c.y / 500.0 + fy; + f32 fz = fy - c.z / 200.0; + return (vec3s){{95.047 * ((fx > 0.206897) ? fx * fx * fx : (fx - 16.0 / 116.0) / 7.787), + 100.000 * ((fy > 0.206897) ? fy * fy * fy : (fy - 16.0 / 116.0) / 7.787), + 108.883 * ((fz > 0.206897) ? fz * fz * fz : (fz - 16.0 / 116.0) / 7.787)}}; +} + +vec3s xyz2rgb(vec3s c) { + const mat3s mat = (mat3s) { .col = { + (vec3s) {{ 3.2406, -1.5372, -0.4986 }}, + (vec3s) {{ -0.9689, 1.8758, 0.0415 }}, + (vec3s) {{ 0.0557, -0.2040, 1.0570 }} + } + }; + vec3s v = glms_mat3_mulv(mat, glms_vec3_scale(c, 1.0f / 100.0f)); + vec3s r; + r.x = (v.x > 0.0031308) ? ((1.055 * pow(v.x, (1.0 / 2.4))) - 0.055) : 12.92 * v.x; + r.y = (v.y > 0.0031308) ? ((1.055 * pow(v.y, (1.0 / 2.4))) - 0.055) : 12.92 * v.y; + r.z = (v.z > 0.0031308) ? ((1.055 * pow(v.z, (1.0 / 2.4))) - 0.055) : 12.92 * v.z; + return r; +} + +vec3s lab2rgb(vec3s c) { + return xyz2rgb(lab2xyz((vec3s){{100.0 * c.x, 2.0 * 127.0 * (c.y - 0.5), 2.0 * 127.0 * (c.z - 0.5)}})); +} + +vec3s rgb_brighten(vec3s rgb, f32 d) { + vec3s lab = rgb2lab(rgb); + return lab2rgb((vec3s){{lab.x + d, lab.y, lab.z}}); +} + +vec4s rgba_brighten(vec4s rgba, f32 d) { + return glms_vec4(rgb_brighten((vec3s){{rgba.x, rgba.y, rgba.z}}, d), rgba.w); +} + +vec4s rgba_lerp(vec4s rgba_a, vec4s rgba_b, f32 t) { + vec3s lab_a = rgb2lab(glms_vec3(rgba_a)); + vec3s lab_b = rgb2lab(glms_vec3(rgba_b)); + + return glms_vec4( + lab2rgb(((vec3s){{(lerpf(lab_a.x, lab_b.x, t)), + (lerpf(lab_a.y, lab_b.y, t)), + (lerpf(lab_a.z, lab_b.z, t))}})), + lerpf(rgba_a.w, rgba_b.w, t)); +} + +vec4s rgba_lerp3(vec4s rgba_a, vec4s rgba_b, vec4s rgba_c, f32 t) { + if (t <= 0.5f) { + return rgba_lerp(rgba_a, rgba_b, t * 2.0f); + } + + return rgba_lerp(rgba_b, rgba_c, (t - 0.5f) * 2.0f); +} \ No newline at end of file diff --git a/src/util/color.h b/src/util/color.h new file mode 100644 index 0000000..4e0e79e --- /dev/null +++ b/src/util/color.h @@ -0,0 +1,23 @@ +#ifndef COLOR_H +#define COLOR_H + +#include "../util/util.h" + +// converts RGBA in hexadecimal u32 in [0, 255] to vec4s in [0, 1] +#define RGBAX2F(c) ((vec4s) {{\ + ((c & 0xFF000000) >> 24) / 255.0f,\ + ((c & 0x00FF0000) >> 16) / 255.0f,\ + ((c & 0x0000FF00) >> 8) / 255.0f,\ + ((c & 0x000000FF) >> 0) / 255.0f\ + }}) + +vec3s rgb2lab(vec3s rgb); +vec3s hsv2lab(vec3s hsv); + +vec3s rgb_brighten(vec3s rgb, f32 d); +vec4s rgba_brighten(vec4s rgba, f32 d); + +vec4s rgba_lerp(vec4s rgba_a, vec4s rgba_b, f32 t); +vec4s rgba_lerp3(vec4s rgba_a, vec4s rgba_b, vec4s rgba_c, f32 t); + +#endif \ No newline at end of file diff --git a/src/util/fmath.c b/src/util/fmath.c new file mode 100644 index 0000000..cb0f53a --- /dev/null +++ b/src/util/fmath.c @@ -0,0 +1,28 @@ +#include "fmath.h" +#include "../util/util.h" + +int ivec3scmp(ivec3s a, ivec3s b) { + return memcmp(&a, &b, sizeof(ivec3s)); +} + +s64 ivec3shash(ivec3s v) { + s64 h = 0; + for(int i = 0; i < 3; i++) { + h ^= v.raw[i] + 0x9e3779b9 + (h << 6) + (h >> 2); + } + return h; +} + +// finds the smallest possible t such that s + t * ds is an integer +static vec3s intbound(vec3s s, vec3s ds) { + vec3s v; + #if defined(__clang__) + #pragma clang loop unroll_count(3) + #elif defined(__GNUC__) + #pragma GCC unroll 3 + #endif + for (size_t i = 0; i < 3; i++) { + v.raw[i] = (ds.raw[i] > 0 ? (ceilf(s.raw[i]) - s.raw[i]) : (s.raw[i] - floorf(s.raw[i]))) / fabsf(ds.raw[i]); + } + return v; +} diff --git a/src/util/fmath.h b/src/util/fmath.h new file mode 100644 index 0000000..4326025 --- /dev/null +++ b/src/util/fmath.h @@ -0,0 +1,59 @@ +#ifndef FMATH_H +#define FMATH_H + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-braces" + +#include +#include + +#pragma GCC diagnostic pop + +#include "types.h" + +#define IVEC2S2V(_v) ({ ivec2s _u = ( _v ); ((vec2s) {{ _u.x, _u.y }}); }) +#define VEC2S2I(_v) ({ vec2s _u = ( _v ); ((ivec2s) {{ _u.x, _u.y }}); }) +#define IVEC3S2V(_v) ({ ivec3s _u = ( _v ); ((vec3s) {{ _u.x, _u.y, _u.z }}); }) +#define VEC3S2I(_v) ({ vec3s _u = ( _v ); ((ivec3s) {{ _u.x, _u.y, _u.z }}); }) + +#define IVEC2S23(_v) ({ ivec2s _u = ( _v ); ((ivec3s) {{ _u.x, _u.y, 0 }}); }) + +#define PI_2 GLM_PI_2 +#define PI GLM_PI +#define TAU (2 * PI) +#define F32_EPSILON FLT_EPSILON +#define F64_EPSILON DBL_EPSILON + +#define cosf(_x) ((f32)cos(_x)) +#define sinf(_x) ((f32)sin(_x)) +#define radians(_x) ((_x) * (__typeof__(_x)) (PI / 180.0f)) +#define degrees(_x) ((_x) * (__typeof__(_x)) (180.0f / PI)) +#define floori(_x) ((int) (floor((double) (_x)))) +#define sign(_x) ({ __typeof__(_x) _xx = (_x);\ + ((__typeof__(_x)) ( (((__typeof__(_x)) 0) < _xx) - (_xx < ((__typeof__(_x)) 0))));}) +#define lerpf(_a, _b, _t) ({ __typeof__(_t) _u = (_t); ((_a) * (1 - _u)) + ((_b) * _u); }) +#define safe_expf(_x, _e) ({ __typeof__(_x) __x = (_x); __typeof__(_e) __e = (_e); sign(__x) * fabsf(powf(fabsf(__x), __e)); }) + +#define max(a, b) ({\ + __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + _a > _b ? _a : _b; }) + +#define min(a, b) ({\ + __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + _a < _b ? _a : _b; }) + +#define clamp(x, mn, mx) ({\ + __typeof__ (x) _x = (x); \ + __typeof__ (mn) _mn = (mn); \ + __typeof__ (mx) _mx = (mx); \ + max(_mn, min(_mx, _x)); }) + +#define SRAND(seed) srand(seed) +#define RAND(min, max) ((rand() % (max - min + 1)) + min) +#define RANDCHANCE(chance) ((RAND(0, 100000) / 100000.0) <= chance) + +int ivec3scmp(ivec3s a, ivec3s b); +s64 ivec3shash(ivec3s v); +#endif diff --git a/src/util/ivec2.h b/src/util/ivec2.h new file mode 100644 index 0000000..65f7013 --- /dev/null +++ b/src/util/ivec2.h @@ -0,0 +1,297 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_IVEC2_ONE_INIT + GLM_IVEC2_ZERO_INIT + GLM_IVEC2_ONE + GLM_IVEC2_ZERO + + Functions: + CGLM_INLINE void glm_ivec2(int * __restrict v, ivec2 dest) + CGLM_INLINE void glm_ivec2_copy(ivec2 a, ivec2 dest) + CGLM_INLINE void glm_ivec2_zero(ivec2 v) + CGLM_INLINE void glm_ivec2_one(ivec2 v) + CGLM_INLINE int glm_ivec2_dot(ivec2 a, ivec2 b) + CGLM_INLINE int glm_ivec2_cross(ivec2 a, ivec2 b) + CGLM_INLINE int glm_ivec2_norm2(ivec2 v) + CGLM_INLINE int glm_ivec2_norm(ivec2 vec) + CGLM_INLINE void glm_ivec2_add(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_adds(ivec2 v, int s, ivec2 dest) + CGLM_INLINE void glm_ivec2_sub(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_subs(ivec2 v, int s, ivec2 dest) + CGLM_INLINE void glm_ivec2_mul(ivec2 a, ivec2 b, ivec2 d) + CGLM_INLINE void glm_ivec2_scale(ivec2 v, int s, ivec2 dest) + CGLM_INLINE void glm_ivec2_scale_as(ivec2 v, int s, ivec2 dest) + CGLM_INLINE void glm_ivec2_div(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_divs(ivec2 v, int s, ivec2 dest) + CGLM_INLINE void glm_ivec2_addadd(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_subadd(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_muladd(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_muladds(ivec2 a, int s, ivec2 dest) + CGLM_INLINE void glm_ivec2_maxadd(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_minadd(ivec2 a, ivec2 b, ivec2 dest) + CGLM_INLINE void glm_ivec2_negate_to(ivec2 v, ivec2 dest) + CGLM_INLINE void glm_ivec2_negate(ivec2 v) + CGLM_INLINE void glm_ivec2_normalize(ivec2 v) + CGLM_INLINE void glm_ivec2_normalize_to(ivec2 vec, ivec2 dest) + CGLM_INLINE void glm_ivec2_rotate(ivec2 v, int angle, ivec2 dest) + CGLM_INLINE int glm_ivec2_distance2(ivec2 a, ivec2 b) + CGLM_INLINE int glm_ivec2_distance(ivec2 a, ivec2 b) + CGLM_INLINE void glm_ivec2_maxv(ivec2 v1, ivec2 v2, ivec2 dest) + CGLM_INLINE void glm_ivec2_minv(ivec2 v1, ivec2 v2, ivec2 dest) + CGLM_INLINE void glm_ivec2_clamp(ivec2 v, int minVal, int maxVal) + CGLM_INLINE void glm_ivec2_lerp(ivec2 from, ivec2 to, int t, ivec2 dest) + + */ + +#ifndef cglm_ivec2_h +#define cglm_ivec2_h + +#include +#include + +typedef int ivec2[2]; + +#define GLM_IVEC2_ONE_INIT {1.0f, 1.0f} +#define GLM_IVEC2_ZERO_INIT {0.0f, 0.0f} + +#define GLM_IVEC2_ONE ((ivec2)GLM_IVEC2_ONE_INIT) +#define GLM_IVEC2_ZERO ((ivec2)GLM_IVEC2_ZERO_INIT) + +/*! + * @brief init ivec2 using another vector + * + * @param[in] v a vector + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2(int * __restrict v, ivec2 dest) { + dest[0] = v[0]; + dest[1] = v[1]; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] a source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec2_copy(ivec2 a, ivec2 dest) { + dest[0] = a[0]; + dest[1] = a[1]; +} + +/*! + * @brief make vector zero + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_ivec2_zero(ivec2 v) { + v[0] = v[1] = 0.0f; +} + +/*! + * @brief make vector one + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_ivec2_one(ivec2 v) { + v[0] = v[1] = 1.0f; +} + +/*! + * @brief ivec2 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +int +glm_ivec2_dot(ivec2 a, ivec2 b) { + return a[0] * b[0] + a[1] * b[1]; +} + +/*! + * @brief ivec2 cross product + * + * REF: http://allenchou.net/2013/07/cross-product-of-2d-vectors/ + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return Z component of cross product + */ +CGLM_INLINE +int +glm_ivec2_cross(ivec2 a, ivec2 b) { + /* just calculate the z-component */ + return a[0] * b[1] - a[1] * b[0]; +} + +/*! + * @brief add a vector to b vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec2_add(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] + b[0]; + dest[1] = a[1] + b[1]; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + s) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec2_adds(ivec2 v, int s, ivec2 dest) { + dest[0] = v[0] + s; + dest[1] = v[1] + s; +} + +/*! + * @brief subtract b vector from a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec2_sub(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] - b[0]; + dest[1] = a[1] - b[1]; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - s) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec2_subs(ivec2 v, int s, ivec2 dest) { + dest[0] = v[0] - s; + dest[1] = v[1] - s; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a v1 + * @param b v2 + * @param dest v3 = (a[0] * b[0], a[1] * b[1]) + */ +CGLM_INLINE +void +glm_ivec2_mul(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; +} + +/*! + * @brief multiply/scale vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec2_scale(ivec2 v, int s, ivec2 dest) { + dest[0] = v[0] * s; + dest[1] = v[1] * s; +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest result = (a[0]/b[0], a[1]/b[1]) + */ +CGLM_INLINE +void +glm_ivec2_div(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] / b[0]; + dest[1] = a[1] / b[1]; +} + + +/*! + * @brief mod vector with another component-wise modulo: d = a % b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns result = (a[0]%b[0], a[1]%b[1]) + */ +CGLM_INLINE +void +glm_ivec2_mod(ivec2 a, ivec2 b, ivec2 dest) { + dest[0] = a[0] % b[0]; + dest[1] = a[1] % b[1]; +} + + +/*! + * @brief div vector with scalar: d = v / s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest result = (a[0]/s, a[1]/s) + */ +CGLM_INLINE +void +glm_ivec2_divs(ivec2 v, int s, ivec2 dest) { + dest[0] = v[0] / s; + dest[1] = v[1] / s; +} + +CGLM_INLINE +void +glm_ivec2_print(ivec2 vec, + FILE * __restrict ostream) { + int i; + +#define m 2 + + fprintf(ostream, "Vector (int%d):\n\t|", m); + + for (i = 0; i < m; i++) { + fprintf(ostream, "%d", vec[i]); + + if (i != m - 1) + fprintf(ostream, "\t"); + } + + fprintf(ostream, "|\n\n"); + +#undef m +} + + +#endif /* cglm_ivec2_h */ diff --git a/src/util/ivec2s.h b/src/util/ivec2s.h new file mode 100644 index 0000000..aead169 --- /dev/null +++ b/src/util/ivec2s.h @@ -0,0 +1,324 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLMS_IVEC2_ONE_INIT + GLMS_IVEC2_ZERO_INIT + GLMS_IVEC2_ONE + GLMS_IVEC2_ZERO + + Functions: + CGLM_INLINE ivec2s glms_ivec2(vec3s v3) + CGLM_INLINE void glms_ivec2_pack(ivec2s dst[], ivec2 src[], size_t len) + CGLM_INLINE void glms_ivec2_unpack(ivec2 dst[], ivec2s src[], size_t len) + CGLM_INLINE ivec2s glms_ivec2_zero(void) + CGLM_INLINE ivec2s glms_ivec2_one(void) + CGLM_INLINE int glms_ivec2_dot(ivec2s a, ivec2s b) + CGLM_INLINE int glms_ivec2_cross(ivec2s a, ivec2s b) + CGLM_INLINE int glms_ivec2_norm2(ivec2s v) + CGLM_INLINE int glms_ivec2_norm(ivec2s v) + CGLM_INLINE ivec2s glms_ivec2_add(ivec2s a, ivec2s b) + CGLM_INLINE ivec2s glms_ivec2_adds(ivec2s a, int s) + CGLM_INLINE ivec2s glms_ivec2_sub(ivec2s a, ivec2s b) + CGLM_INLINE ivec2s glms_ivec2_subs(ivec2s a, int s) + CGLM_INLINE ivec2s glms_ivec2_mul(ivec2s a, ivec2s b) + CGLM_INLINE ivec2s glms_ivec2_scale(ivec2s v, int s) + CGLM_INLINE ivec2s glms_ivec2_scale_as(ivec2s v, int s) + CGLM_INLINE ivec2s glms_ivec2_div(ivec2s a, ivec2s b) + CGLM_INLINE ivec2s glms_ivec2_divs(ivec2s a, int s) + CGLM_INLINE ivec2s glms_ivec2_addadd(ivec2s a, ivec2s b, ivec2s dest) + CGLM_INLINE ivec2s glms_ivec2_subadd(ivec2s a, ivec2s b, ivec2s dest) + CGLM_INLINE ivec2s glms_ivec2_muladd(ivec2s a, ivec2s b, ivec2s dest) + CGLM_INLINE ivec2s glms_ivec2_muladds(ivec2s a, int s, ivec2s dest) + CGLM_INLINE ivec2s glms_ivec2_maxadd(ivec2s a, ivec2s b, ivec2s dest) + CGLM_INLINE ivec2s glms_ivec2_minadd(ivec2s a, ivec2s b, ivec2s dest) + CGLM_INLINE ivec2s glms_ivec2_negate(ivec2s v) + CGLM_INLINE ivec2s glms_ivec2_normalize(ivec2s v) + CGLM_INLINE ivec2s glms_ivec2_rotate(ivec2s v, int angle, ivec2s axis) + CGLM_INLINE int glms_ivec2_distance(ivec2s a, ivec2s b) + CGLM_INLINE int glms_ivec2_distance2(ivec2s a, ivec2s b) + CGLM_INLINE ivec2s glms_ivec2_maxv(ivec2s a, ivec2s b) + CGLM_INLINE ivec2s glms_ivec2_minv(ivec2s a, ivec2s b) + CGLM_INLINE ivec2s glms_ivec2_clamp(ivec2s v, int minVal, int maxVal) + CGLM_INLINE ivec2s glms_ivec2_lerp(ivec2s from, ivec2s to, int t) + */ + +#ifndef cglms_ivec2s_h +#define cglms_ivec2s_h + + +#include +#include +#include + +#include "ivec2.h" + +typedef union ivec2s { + ivec2 raw; +#if CGLM_USE_ANONYMOUS_STRUCT + struct { + int x; + int y; + }; +#endif +} ivec2s; + +#define GLMS_IVEC2_ONE_INIT {GLM_IVEC2_ONE_INIT} +#define GLMS_IVEC2_ZERO_INIT {GLM_IVEC2_ZERO_INIT} + +#define GLMS_IVEC2_ONE ((ivec2s)GLMS_IVEC2_ONE_INIT) +#define GLMS_IVEC2_ZERO ((ivec2s)GLMS_IVEC2_ZERO_INIT) + +// /*! +// * @brief init ivec2 using ivec2 +// * +// * @param[in] v3 vector3 +// * @returns destination +// */ +// CGLM_INLINE +// ivec2s +// glms_ivec2(vec3s v3) { +// ivec2s r; +// glm_ivec2(v3.raw, r.raw); +// return r; +// } + +/*! + * @brief pack an array of ivec2 into an array of ivec2s + * + * @param[out] dst array of ivec2 + * @param[in] src array of ivec2s + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_ivec2_pack(ivec2s dst[], ivec2 src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_ivec2_copy(src[i], dst[i].raw); + } +} + +/*! + * @brief unpack an array of ivec2s into an array of ivec2 + * + * @param[out] dst array of ivec2s + * @param[in] src array of ivec2 + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_ivec2_unpack(ivec2 dst[], ivec2s src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_ivec2_copy(src[i].raw, dst[i]); + } +} + +/*! + * @brief make vector zero + * + * @returns zero vector + */ +CGLM_INLINE +ivec2s +glms_ivec2_zero(void) { + ivec2s r; + glm_ivec2_zero(r.raw); + return r; +} + +/*! + * @brief make vector one + * + * @returns one vector + */ +CGLM_INLINE +ivec2s +glms_ivec2_one(void) { + ivec2s r; + glm_ivec2_one(r.raw); + return r; +} + +/*! + * @brief ivec2 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +int +glms_ivec2_dot(ivec2s a, ivec2s b) { + return glm_ivec2_dot(a.raw, b.raw); +} + +/*! + * @brief ivec2 cross product + * + * REF: http://allenchou.net/2013/07/cross-product-of-2d-vectors/ + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return Z component of cross product + */ +CGLM_INLINE +int +glms_ivec2_cross(ivec2s a, ivec2s b) { + return glm_ivec2_cross(a.raw, b.raw); +} + +/*! + * @brief add a vector to b vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +ivec2s +glms_ivec2_add(ivec2s a, ivec2s b) { + ivec2s r; + glm_ivec2_add(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + s) + * + * @param[in] a vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +ivec2s +glms_ivec2_adds(ivec2s a, int s) { + ivec2s r; + glm_ivec2_adds(a.raw, s, r.raw); + return r; +} + +/*! + * @brief subtract b vector from a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +ivec2s +glms_ivec2_sub(ivec2s a, ivec2s b) { + ivec2s r; + glm_ivec2_sub(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - s) + * + * @param[in] a vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +ivec2s +glms_ivec2_subs(ivec2s a, int s) { + ivec2s r; + glm_ivec2_subs(a.raw, s, r.raw); + return r; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a vector1 + * @param b vector2 + * @returns v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + */ +CGLM_INLINE +ivec2s +glms_ivec2_mul(ivec2s a, ivec2s b) { + ivec2s r; + glm_ivec2_mul(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief multiply/scale ivec2 vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +ivec2s +glms_ivec2_scale(ivec2s v, int s) { + ivec2s r; + glm_ivec2_scale(v.raw, s, r.raw); + return r; +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns result = (a[0]/b[0], a[1]/b[1], a[2]/b[2]) + */ +CGLM_INLINE +ivec2s +glms_ivec2_div(ivec2s a, ivec2s b) { + ivec2s r; + glm_ivec2_div(a.raw, b.raw, r.raw); + return r; +} + + +/*! + * @brief mod vector with another component-wise modulo: d = a % b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns result = (a[0]%b[0], a[1]%b[1]) + */ +CGLM_INLINE +ivec2s +glms_ivec2_mod(ivec2s a, ivec2s b) { + ivec2s r; + glm_ivec2_mod(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief div vector with scalar: d = v / s + * + * @param[in] a vector + * @param[in] s scalar + * @returns result = (a[0]/s, a[1]/s, a[2]/s) + */ +CGLM_INLINE +ivec2s +glms_ivec2_divs(ivec2s a, int s) { + ivec2s r; + glm_ivec2_divs(a.raw, s, r.raw); + return r; +} + +CGLM_INLINE +void +glms_ivec2_print(ivec2s vec, + FILE * __restrict ostream) { + glm_ivec2_print(vec.raw, ostream); +} + +#endif \ No newline at end of file diff --git a/src/util/ivec3.h b/src/util/ivec3.h new file mode 100644 index 0000000..27166d1 --- /dev/null +++ b/src/util/ivec3.h @@ -0,0 +1,347 @@ +// Defines missing iivec3, ivec2 types for cglms +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLM_IVEC3_ONE_INIT + GLM_IVEC3_ZERO_INIT + GLM_IVEC3_ONE + GLM_IVEC3_ZERO + GLM_YUP + GLM_ZUP + GLM_XUP + + Functions: + CGLM_INLINE void glm_ivec3(vec4 v4, ivec3 dest); + CGLM_INLINE void glm_ivec3_copy(ivec3 a, ivec3 dest); + CGLM_INLINE void glm_ivec3_zero(ivec3 v); + CGLM_INLINE void glm_ivec3_one(ivec3 v); + CGLM_INLINE int glm_ivec3_dot(ivec3 a, ivec3 b); + CGLM_INLINE int glm_ivec3_norm2(ivec3 v); + CGLM_INLINE int glm_ivec3_norm(ivec3 v); + CGLM_INLINE int glm_ivec3_norm_one(ivec3 v); + CGLM_INLINE int glm_ivec3_norm_inf(ivec3 v); + CGLM_INLINE void glm_ivec3_add(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_adds(ivec3 a, int s, ivec3 dest); + CGLM_INLINE void glm_ivec3_sub(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_subs(ivec3 a, int s, ivec3 dest); + CGLM_INLINE void glm_ivec3_mul(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_scale(ivec3 v, int s, ivec3 dest); + CGLM_INLINE void glm_ivec3_scale_as(ivec3 v, int s, ivec3 dest); + CGLM_INLINE void glm_ivec3_div(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_divs(ivec3 a, int s, ivec3 dest); + CGLM_INLINE void glm_ivec3_addadd(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_subadd(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_muladd(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_muladds(ivec3 a, int s, ivec3 dest); + CGLM_INLINE void glm_ivec3_maxadd(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_minadd(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_flipsign(ivec3 v); + CGLM_INLINE void glm_ivec3_flipsign_to(ivec3 v, ivec3 dest); + CGLM_INLINE void glm_ivec3_negate_to(ivec3 v, ivec3 dest); + CGLM_INLINE void glm_ivec3_negate(ivec3 v); + CGLM_INLINE void glm_ivec3_inv(ivec3 v); + CGLM_INLINE void glm_ivec3_inv_to(ivec3 v, ivec3 dest); + CGLM_INLINE void glm_ivec3_normalize(ivec3 v); + CGLM_INLINE void glm_ivec3_normalize_to(ivec3 v, ivec3 dest); + CGLM_INLINE void glm_ivec3_cross(ivec3 a, ivec3 b, ivec3 d); + CGLM_INLINE void glm_ivec3_crossn(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE int glm_ivec3_angle(ivec3 a, ivec3 b); + CGLM_INLINE void glm_ivec3_rotate(ivec3 v, int angle, ivec3 axis); + CGLM_INLINE void glm_ivec3_rotate_m4(mat4 m, ivec3 v, ivec3 dest); + CGLM_INLINE void glm_ivec3_rotate_m3(mat3 m, ivec3 v, ivec3 dest); + CGLM_INLINE void glm_ivec3_proj(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_center(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE int glm_ivec3_distance(ivec3 a, ivec3 b); + CGLM_INLINE int glm_ivec3_distance2(ivec3 a, ivec3 b); + CGLM_INLINE void glm_ivec3_maxv(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_minv(ivec3 a, ivec3 b, ivec3 dest); + CGLM_INLINE void glm_ivec3_ortho(ivec3 v, ivec3 dest); + CGLM_INLINE void glm_ivec3_clamp(ivec3 v, int minVal, int maxVal); + CGLM_INLINE void glm_ivec3_lerp(ivec3 from, ivec3 to, int t, ivec3 dest); + CGLM_INLINE void glm_ivec3_lerpc(ivec3 from, ivec3 to, int t, ivec3 dest); + CGLM_INLINE void glm_ivec3_mix(ivec3 from, ivec3 to, int t, ivec3 dest); + CGLM_INLINE void glm_ivec3_mixc(ivec3 from, ivec3 to, int t, ivec3 dest); + CGLM_INLINE void glm_ivec3_step_uni(int edge, ivec3 x, ivec3 dest); + CGLM_INLINE void glm_ivec3_step(ivec3 edge, ivec3 x, ivec3 dest); + CGLM_INLINE void glm_ivec3_smoothstep_uni(int edge0, int edge1, ivec3 x, ivec3 dest); + CGLM_INLINE void glm_ivec3_smoothstep(ivec3 edge0, ivec3 edge1, ivec3 x, ivec3 dest); + CGLM_INLINE void glm_ivec3_smoothinterp(ivec3 from, ivec3 to, int t, ivec3 dest); + CGLM_INLINE void glm_ivec3_smoothinterpc(ivec3 from, ivec3 to, int t, ivec3 dest); + CGLM_INLINE void glm_ivec3_swizzle(ivec3 v, int mask, ivec3 dest); + + Convenient: + CGLM_INLINE void glm_cross(ivec3 a, ivec3 b, ivec3 d); + CGLM_INLINE int glm_dot(ivec3 a, ivec3 b); + CGLM_INLINE void glm_normalize(ivec3 v); + CGLM_INLINE void glm_normalize_to(ivec3 v, ivec3 dest); + + DEPRECATED: + glm_ivec3_dup + glm_ivec3_flipsign + glm_ivec3_flipsign_to + glm_ivec3_inv + glm_ivec3_inv_to + glm_ivec3_mulv + */ + +#ifndef cglm_ivec3_h +#define cglm_ivec3_h + +#include "cglm/common.h" +#include "cglm/util.h" + +/* DEPRECATED! use _copy, _ucopy versions */ +#define glm_ivec3_dup(v, dest) glm_ivec3_copy(v, dest) +#define glm_ivec3_flipsign(v) glm_ivec3_negate(v) +#define glm_ivec3_flipsign_to(v, dest) glm_ivec3_negate_to(v, dest) +#define glm_ivec3_inv(v) glm_ivec3_negate(v) +#define glm_ivec3_inv_to(v, dest) glm_ivec3_negate_to(v, dest) +#define glm_ivec3_mulv(a, b, d) glm_ivec3_mul(a, b, d) + +#define GLM_IVEC3_ONE_INIT {1, 1, 1} +#define GLM_IVEC3_ZERO_INIT {0, 0, 0} + +#define GLM_IVEC3_ONE ((ivec3)GLM_IVEC3_ONE_INIT) +#define GLM_IVEC3_ZERO ((ivec3)GLM_IVEC3_ZERO_INIT) + +#define GLM_IVEC3_YUP ((ivec3){0, 1, 0}) +#define GLM_IVEC3_ZUP ((ivec3){0, 0, 1}) +#define GLM_IVEC3_XUP ((ivec3){1, 0, 0}) +#define GLM_IVEC3_FORWARD ((ivec3){0, 0, -1}) + +#define GLM_IVEC3_XXX GLM_SHUFFLE3(0, 0, 0) +#define GLM_IVEC3_YYY GLM_SHUFFLE3(1, 1, 1) +#define GLM_IVEC3_ZZZ GLM_SHUFFLE3(2, 2, 2) +#define GLM_IVEC3_ZYX GLM_SHUFFLE3(0, 1, 2) + +/*! + * @brief init ivec3 using vec4 + * + * @param[in] v4 vector4 + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3(vec4 v4, ivec3 dest) { + dest[0] = v4[0]; + dest[1] = v4[1]; + dest[2] = v4[2]; +} + +/*! + * @brief copy all members of [a] to [dest] + * + * @param[in] a source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_ivec3_copy(ivec3 a, ivec3 dest) { + dest[0] = a[0]; + dest[1] = a[1]; + dest[2] = a[2]; +} + +/*! + * @brief make vector zero + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_ivec3_zero(ivec3 v) { + v[0] = v[1] = v[2] = 0; +} + +/*! + * @brief make vector one + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_ivec3_one(ivec3 v) { + v[0] = v[1] = v[2] = 1; +} + +/*! + * @brief ivec3 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +int +glm_ivec3_dot(ivec3 a, ivec3 b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} + +/*! + * @brief norm * norm (magnitude) of vec + * + * we can use this func instead of calling norm * norm, because it would call + * sqrtf fuction twice but with this func we can avoid func call, maybe this is + * not good name for this func + * + * @param[in] v vector + * + * @return norm * norm + */ +CGLM_INLINE +int +glm_ivec3_norm2(ivec3 v) { + return glm_ivec3_dot(v, v); +} + +/*! + * @brief euclidean norm (magnitude), also called L2 norm + * this will give magnitude of vector in euclidean space + * + * @param[in] v vector + * + * @return norm + */ +CGLM_INLINE +int +glm_ivec3_norm(ivec3 v) { + return (int) sqrtf(glm_ivec3_norm2(v)); +} + +/*! + * @brief add a vector to b vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec3_add(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] + b[0]; + dest[1] = a[1] + b[1]; + dest[2] = a[2] + b[2]; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + s) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec3_adds(ivec3 v, int s, ivec3 dest) { + dest[0] = v[0] + s; + dest[1] = v[1] + s; + dest[2] = v[2] + s; +} + +/*! + * @brief subtract b vector from a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec3_sub(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] - b[0]; + dest[1] = a[1] - b[1]; + dest[2] = a[2] - b[2]; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - s) + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec3_subs(ivec3 v, int s, ivec3 dest) { + dest[0] = v[0] - s; + dest[1] = v[1] - s; + dest[2] = v[2] - s; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a vector1 + * @param b vector2 + * @param dest v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + */ +CGLM_INLINE +void +glm_ivec3_mul(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; + dest[2] = a[2] * b[2]; +} + +/*! + * @brief multiply/scale ivec3 vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest destination vector + */ +CGLM_INLINE +void +glm_ivec3_scale(ivec3 v, int s, ivec3 dest) { + dest[0] = v[0] * s; + dest[1] = v[1] * s; + dest[2] = v[2] * s; +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest result = (a[0]/b[0], a[1]/b[1], a[2]/b[2]) + */ +CGLM_INLINE +void +glm_ivec3_div(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] / b[0]; + dest[1] = a[1] / b[1]; + dest[2] = a[2] / b[2]; +} + +CGLM_INLINE +void +glm_ivec3_mod(ivec3 a, ivec3 b, ivec3 dest) { + dest[0] = a[0] % b[0]; + dest[1] = a[1] % b[1]; + dest[2] = a[2] % b[2]; +} + + +/*! + * @brief div vector with scalar: d = v / s + * + * @param[in] v vector + * @param[in] s scalar + * @param[out] dest result = (a[0]/s, a[1]/s, a[2]/s) + */ +CGLM_INLINE +void +glm_ivec3_divs(ivec3 v, int s, ivec3 dest) { + dest[0] = v[0] / s; + dest[1] = v[1] / s; + dest[2] = v[2] / s; +} + +#endif \ No newline at end of file diff --git a/src/util/ivec3s.h b/src/util/ivec3s.h new file mode 100644 index 0000000..2e60c9e --- /dev/null +++ b/src/util/ivec3s.h @@ -0,0 +1,345 @@ +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ + +/* + Macros: + GLMS_IVEC3_ONE_INIT + GLMS_IVEC3_ZERO_INIT + GLMS_IVEC3_ONE + GLMS_IVEC3_ZERO + GLMS_YUP + GLMS_ZUP + GLMS_XUP + + Functions: + CGLM_INLINE ivec3s glms_ivec3(vec4s v4); + CGLM_INLINE void glms_ivec3_pack(ivec3s dst[], ivec3 src[], size_t len); + CGLM_INLINE void glms_ivec3_unpack(ivec3 dst[], ivec3s src[], size_t len); + CGLM_INLINE ivec3s glms_ivec3_zero(void); + CGLM_INLINE ivec3s glms_ivec3_one(void); + CGLM_INLINE int glms_ivec3_dot(ivec3s a, ivec3s b); + CGLM_INLINE int glms_ivec3_norm2(ivec3s v); + CGLM_INLINE int glms_ivec3_norm(ivec3s v); + CGLM_INLINE int glms_ivec3_norm_one(ivec3s v); + CGLM_INLINE int glms_ivec3_norm_inf(ivec3s v); + CGLM_INLINE ivec3s glms_ivec3_add(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_adds(ivec3s a, int s); + CGLM_INLINE ivec3s glms_ivec3_sub(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_subs(ivec3s a, int s); + CGLM_INLINE ivec3s glms_ivec3_mul(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_scale(ivec3s v, int s); + CGLM_INLINE ivec3s glms_ivec3_scale_as(ivec3s v, int s); + CGLM_INLINE ivec3s glms_ivec3_div(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_divs(ivec3s a, int s); + CGLM_INLINE ivec3s glms_ivec3_addadd(ivec3s a, ivec3s b, ivec3s dest); + CGLM_INLINE ivec3s glms_ivec3_subadd(ivec3s a, ivec3s b, ivec3s dest); + CGLM_INLINE ivec3s glms_ivec3_muladd(ivec3s a, ivec3s b, ivec3s dest); + CGLM_INLINE ivec3s glms_ivec3_muladds(ivec3s a, int s, ivec3s dest); + CGLM_INLINE ivec3s glms_ivec3_maxadd(ivec3s a, ivec3s b, ivec3s dest); + CGLM_INLINE ivec3s glms_ivec3_minadd(ivec3s a, ivec3s b, ivec3s dest); + CGLM_INLINE ivec3s glms_ivec3_flipsign(ivec3s v); + CGLM_INLINE ivec3s glms_ivec3_negate(ivec3s v); + CGLM_INLINE ivec3s glms_ivec3_inv(ivec3s v); + CGLM_INLINE ivec3s glms_ivec3_normalize(ivec3s v); + CGLM_INLINE ivec3s glms_ivec3_cross(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_crossn(ivec3s a, ivec3s b); + CGLM_INLINE int glms_ivec3_angle(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_rotate(ivec3s v, int angle, ivec3s axis); + CGLM_INLINE ivec3s glms_ivec3_rotate_m4(mat4s m, ivec3s v); + CGLM_INLINE ivec3s glms_ivec3_rotate_m3(mat3s m, ivec3s v); + CGLM_INLINE ivec3s glms_ivec3_proj(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_center(ivec3s a, ivec3s b); + CGLM_INLINE int glms_ivec3_distance(ivec3s a, ivec3s b); + CGLM_INLINE int glms_ivec3_distance2(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_maxv(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_minv(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_ivec3_ortho(ivec3s v); + CGLM_INLINE ivec3s glms_ivec3_clamp(ivec3s v, int minVal, int maxVal); + CGLM_INLINE ivec3s glms_ivec3_lerp(ivec3s from, ivec3s to, int t); + CGLM_INLINE ivec3s glms_ivec3_lerpc(ivec3s from, ivec3s to, int t); + CGLM_INLINE ivec3s glms_ivec3_mix(ivec3s from, ivec3s to, int t); + CGLM_INLINE ivec3s glms_ivec3_mixc(ivec3s from, ivec3s to, int t); + CGLM_INLINE ivec3s glms_ivec3_step_uni(int edge, ivec3s x); + CGLM_INLINE ivec3s glms_ivec3_step(ivec3s edge, ivec3s x); + CGLM_INLINE ivec3s glms_ivec3_smoothstep_uni(int edge0, int edge1, ivec3s x); + CGLM_INLINE ivec3s glms_ivec3_smoothstep(ivec3s edge0, ivec3s edge1, ivec3s x); + CGLM_INLINE ivec3s glms_ivec3_smoothinterp(ivec3s from, ivec3s to, int t); + CGLM_INLINE ivec3s glms_ivec3_smoothinterpc(ivec3s from, ivec3s to, int t); + CGLM_INLINE ivec3s glms_ivec3_swizzle(ivec3s v, int mask); + + Convenient: + CGLM_INLINE ivec3s glms_cross(ivec3s a, ivec3s b); + CGLM_INLINE int glms_dot(ivec3s a, ivec3s b); + CGLM_INLINE ivec3s glms_normalize(ivec3s v); + */ + +#ifndef cglms_ivec3s_h +#define cglms_ivec3s_h + +#include +#include +#include + +#include "ivec3.h" + +#define GLMS_IVEC3_ONE_INIT {GLM_IVEC3_ONE_INIT} +#define GLMS_IVEC3_ZERO_INIT {GLM_IVEC3_ZERO_INIT} + +#define GLMS_IVEC3_ONE ((ivec3s)GLMS_IVEC3_ONE_INIT) +#define GLMS_IVEC3_ZERO ((ivec3s)GLMS_IVEC3_ZERO_INIT) + +#define GLMS_IVEC3S_YUP ((ivec3s){{0.0f, 1.0f, 0.0f}}) +#define GLMS_IVEC3S_ZUP ((ivec3s){{0.0f, 0.0f, 1.0f}}) +#define GLMS_IVEC3S_XUP ((ivec3s){{1.0f, 0.0f, 0.0f}}) + +/*! + * @brief init ivec3 using vec4 + * + * @param[in] v4 vector4 + * @returns destination + */ +CGLM_INLINE +ivec3s +glms_ivec3(vec4s v4) { + ivec3s r; + glm_ivec3(v4.raw, r.raw); + return r; +} + +/*! + * @brief pack an array of ivec3 into an array of ivec3s + * + * @param[out] dst array of ivec3 + * @param[in] src array of ivec3s + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_ivec3_pack(ivec3s dst[], ivec3 src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_ivec3_copy(src[i], dst[i].raw); + } +} + +/*! + * @brief unpack an array of ivec3s into an array of ivec3 + * + * @param[out] dst array of ivec3s + * @param[in] src array of ivec3 + * @param[in] len number of elements + */ +CGLM_INLINE +void +glms_ivec3_unpack(ivec3 dst[], ivec3s src[], size_t len) { + size_t i; + + for (i = 0; i < len; i++) { + glm_ivec3_copy(src[i].raw, dst[i]); + } +} + +/*! + * @brief make vector zero + * + * @returns zero vector + */ +CGLM_INLINE +ivec3s +glms_ivec3_zero(void) { + ivec3s r; + glm_ivec3_zero(r.raw); + return r; +} + +/*! + * @brief make vector one + * + * @returns one vector + */ +CGLM_INLINE +ivec3s +glms_ivec3_one(void) { + ivec3s r; + glm_ivec3_one(r.raw); + return r; +} + +/*! + * @brief ivec3 dot product + * + * @param[in] a vector1 + * @param[in] b vector2 + * + * @return dot product + */ +CGLM_INLINE +int +glms_ivec3_dot(ivec3s a, ivec3s b) { + return glm_ivec3_dot(a.raw, b.raw); +} + +/*! + * @brief norm * norm (magnitude) of vec + * + * we can use this func instead of calling norm * norm, because it would call + * sqrtf fuction twice but with this func we can avoid func call, maybe this is + * not good name for this func + * + * @param[in] v vector + * + * @return norm * norm + */ +CGLM_INLINE +int +glms_ivec3_norm2(ivec3s v) { + return glm_ivec3_norm2(v.raw); +} + +/*! + * @brief norm (magnitude) of vec3 + * + * @param[in] v vector + * + * @return norm + */ +CGLM_INLINE +int +glms_ivec3_norm(ivec3s v) { + return glm_ivec3_norm(v.raw); +} + +/*! + * @brief add a vector to b vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +ivec3s +glms_ivec3_add(ivec3s a, ivec3s b) { + ivec3s r; + glm_ivec3_add(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief add scalar to v vector store result in dest (d = v + s) + * + * @param[in] a vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +ivec3s +glms_ivec3_adds(ivec3s a, int s) { + ivec3s r; + glm_ivec3_adds(a.raw, s, r.raw); + return r; +} + +/*! + * @brief subtract b vector from a vector store result in dest + * + * @param[in] a vector1 + * @param[in] b vector2 + * @returns destination vector + */ +CGLM_INLINE +ivec3s +glms_ivec3_sub(ivec3s a, ivec3s b) { + ivec3s r; + glm_ivec3_sub(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief subtract scalar from v vector store result in dest (d = v - s) + * + * @param[in] a vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +ivec3s +glms_ivec3_subs(ivec3s a, int s) { + ivec3s r; + glm_ivec3_subs(a.raw, s, r.raw); + return r; +} + +/*! + * @brief multiply two vector (component-wise multiplication) + * + * @param a vector1 + * @param b vector2 + * @returns v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + */ +CGLM_INLINE +ivec3s +glms_ivec3_mul(ivec3s a, ivec3s b) { + ivec3s r; + glm_ivec3_mul(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief multiply/scale ivec3 vector with scalar: result = v * s + * + * @param[in] v vector + * @param[in] s scalar + * @returns destination vector + */ +CGLM_INLINE +ivec3s +glms_ivec3_scale(ivec3s v, int s) { + ivec3s r; + glm_ivec3_scale(v.raw, s, r.raw); + return r; +} + +/*! + * @brief div vector with another component-wise division: d = a / b + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @returns result = (a[0]/b[0], a[1]/b[1], a[2]/b[2]) + */ +CGLM_INLINE +ivec3s +glms_ivec3_div(ivec3s a, ivec3s b) { + ivec3s r; + glm_ivec3_div(a.raw, b.raw, r.raw); + return r; +} + +CGLM_INLINE +ivec3s +glms_ivec3_mod(ivec3s a, ivec3s b) { + ivec3s r; + glm_ivec3_mod(a.raw, b.raw, r.raw); + return r; +} + +/*! + * @brief div vector with scalar: d = v / s + * + * @param[in] a vector + * @param[in] s scalar + * @returns result = (a[0]/s, a[1]/s, a[2]/s) + */ +CGLM_INLINE +ivec3s +glms_ivec3_divs(ivec3s a, int s) { + ivec3s r; + glm_ivec3_divs(a.raw, s, r.raw); + return r; +} + +#endif diff --git a/src/util/sort.h b/src/util/sort.h new file mode 100644 index 0000000..724e1f5 --- /dev/null +++ b/src/util/sort.h @@ -0,0 +1,40 @@ +#ifndef SORT_H +#define SORT_H + +#include + +// adapted from https://stackoverflow.com/questions/4300896/how-portable-is-the-re-entrant-qsort-r-function-compared-to-qsort + +struct _sort_data { + void *arg; + int (*cmp)(const void *a, const void *b, void *arg); +}; + +static int _sort_r_arg_swap(void *s, const void *aa, const void *bb) { + struct _sort_data *ss = (struct _sort_data*) s; + return (ss->cmp)(aa, bb, ss->arg); +} + +static inline void sort_r( + void *base, + size_t nel, + size_t width, + int (*cmp)(const void *a, const void *b, void *arg), + void *arg +) { +#if (defined _GNU_SOURCE || defined __GNU__ || defined __linux__) + qsort_r(base, nel, width, cmp, arg); +#elif (defined __APPLE__ || defined __MACH__ || defined __DARWIN__ || \ + defined __FREEBSD__ || defined __BSD__ || \ + defined OpenBSD3_1 || defined OpenBSD3_9) + struct _sort_data tmp = {arg, cmp}; + qsort_r(base, nel, width, &tmp, &_sort_r_arg_swap); +#elif (defined _WIN32 || defined _WIN64 || defined __WINDOWS__) + struct _sort_r_data tmp = {arg, cmp}; + qsort_s(*base, nel, width, &sort_r_arg_swap, &tmp); +#else + #error cannnot detect platform for sort_r +#endif +} + +#endif \ No newline at end of file diff --git a/src/util/time.h b/src/util/time.h new file mode 100644 index 0000000..06c2f9f --- /dev/null +++ b/src/util/time.h @@ -0,0 +1,14 @@ +#ifndef TIME_H +#define TIME_H + +#include + +#define NS_PER_SECOND (1000000000) +#define NS_PER_MS (1000000) + +#define NOW() ({\ + struct timespec ts;\ + timespec_get(&ts, TIME_UTC);\ + ((ts.tv_sec * NS_PER_SECOND) + ts.tv_nsec);}) + +#endif diff --git a/src/util/types.h b/src/util/types.h new file mode 100644 index 0000000..940efc2 --- /dev/null +++ b/src/util/types.h @@ -0,0 +1,21 @@ +#ifndef TYPES_H +#define TYPES_H + +// fixed width numeric types +#include +#include + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; + +typedef int8_t s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; + +typedef float f32; +typedef double f64; + +#endif diff --git a/src/util/util.h b/src/util/util.h new file mode 100644 index 0000000..b730dcf --- /dev/null +++ b/src/util/util.h @@ -0,0 +1,47 @@ +#ifndef UTIL_H +#define UTIL_H + +#define TICKRATE 60 + +#define PACKED __attribute__((__packed__)) + +#include +#include +#include +#include +//#include +#include +#include +#include + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-braces" + +#include +#include + +#pragma GCC diagnostic pop + +#include "ivec2.h" +//#include "ivec2s.h" +//#include "ivec3.h" +//#include "ivec3s.h" +//#include "aabb.h" + +#include "fmath.h" +#include "time.h" +//#include "direction.h" +#include "types.h" +//#include "bitmap.h" +//#include "color.h" + +// TODO: move elsewhere +static inline void memsetl(void *dst, u64 v, size_t sz) { + assert(sz % 8 == 0); + size_t n = sz / 8; + for (size_t i = 0; i < n; i++) { + ((u64*)(dst))[i] = v; + } +} + +#endif